{"version":3,"sources":["breakpoint.js","deferrer.js","inviewport.js","ismobile.js","lazy-defer.js","multirange.js","pseudo-property.js","toggles.js"],"names":["breakpoint","window","$","document","body","pseudoProperty","jQuery","module","exports","Deferrer","attributeKey","valueKey","this","_attributeKey","_valueKey","prototype","load","map","_performDefer","bind","index","element","$el","attr","val","resize","inviewport","undefined","getBoundingClientRect","bounds","vpWidth","width","vpHeight","height","top","bottom","left","right","isMobile","Android","navigator","userAgent","match","BlackBerry","iOS","Opera","Windows","all","LazyDefer","_","$target","options","config","extend","defaultConfig","_initListeners","_handleEvent","init_timeout","debounce_timeout","after_defer_class","on","debounce","parents","_inViewport","value","_defer","tag","addClass","initLazyDefer","each","data","setTimeout","supportsMultiple","self","HTMLInputElement","descriptor","Object","getOwnPropertyDescriptor","multirange","input","update","ghost","style","setProperty","valueLow","min","max","valueHigh","classList","contains","values","getAttribute","split","cloneNode","add","parentNode","insertBefore","nextSibling","defineProperty","get","set","v","defineProperties","Math","originalValue","enumerable","addEventListener","init","Array","from","querySelectorAll","forEach","readyState","func","pseudo","prop","afterEl","getComputedStyle","getPropertyValue","replace","fn","Toggles","$element","targets","event","auto","_$el","_targets","_event","_breakpoint","toggle","indexOf","selector","className","e","_toggleElement","_fireEvent","toggleClass","trigger","_attach","hasAttribute","AtToggles"],"mappings":"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","file":"../mvrdv.modules.min.js","sourcesContent":["/**\n * Breakpoint module\n * - Returns the current media breakpoint\n */\n;var breakpoint = (function (window, $) {\n /**\n * Breakpoint, returns the current breakpoint\n * @returns {string|*}\n */\n var breakpoint = function () {\n return $(document.body).pseudoProperty('after', 'content');\n };\n\n return breakpoint;\n})(window, jQuery);\n\n/**\n * Export for unit tests\n */\nif (\"object\" == typeof module && \"object\" == typeof module.exports) {\n module.exports = breakpoint;\n}\n",";var Deferrer = (function ($) {\n\n /**\n * Construct the deferrer\n *\n * @param attributeKey\n * @param valueKey\n * @returns {Deferrer}\n * @constructor\n */\n var Deferrer = function (attributeKey, valueKey) {\n this._attributeKey = attributeKey || 'defer-attr';\n this._valueKey = valueKey || 'defer-value';\n return this;\n };\n\n /**\n * Map deferrer on the matching DOM elements\n * @returns {Deferrer}\n */\n Deferrer.prototype.load = function () {\n var $target = $('[' + this._attributeKey + ']');\n $target.map(this._performDefer.bind(this));\n return this;\n };\n\n /**\n * Perform defer on mapped element attributes\n * @param index\n * @param element\n * @private\n */\n Deferrer.prototype._performDefer = function (index, element) {\n var $el = $(element),\n attr = $el.attr(this._attributeKey),\n val = $el.attr(this._valueKey);\n $el.attr(attr, val);\n\n /**\n * Trigger a resize, so listeners are notified of size changes on elements\n */\n $(window).resize()\n };\n\n /**\n * Expose outside scope\n */\n return Deferrer;\n\n})(jQuery);\n","/**\n * InViewPort module\n * - Returns whether an element is in viewport\n */\n;var inviewport = (function($, window) { // eslint-disable-line no-extra-semi\n /**\n * Return whether an element is in viewport\n * @param element\n * @returns {string|*}\n */\n return function (element) {\n /**\n * If client doesn't support `getBoundingClientRect` always return true\n */\n if (element === undefined || element.getBoundingClientRect === undefined) {\n return true;\n }\n\n /**\n * Get element and window bounds\n * @type {ClientRect}\n */\n var bounds = element.getBoundingClientRect(),\n vpWidth = $(window).width(),\n vpHeight = $(window).height();\n\n /**\n * Return whether the bounds are within the viewport\n */\n return (\n (bounds.top > 0 || bounds.bottom > 0) && (bounds.left > 0 || bounds.right > 0) &&\n (bounds.top < vpHeight || bounds.bottom < vpHeight) && (bounds.left < vpWidth || bounds.right < vpWidth)\n );\n };\n})(jQuery, window);\n\n/**\n * Export for unit tests\n */\nif (\"object\" == typeof module && \"object\" == typeof module.exports) {\n module.exports = inviewport;\n}\n","// ------------------------------------------------------------------------------------------------------------------ //\n//\n// ECHT Mobile browser check\n//\n//\n// ------------------------------------------------------------------------------------------------------------------ //\n\nvar isMobile = {\n Android: function() {\n return navigator.userAgent.match(/Android/i);\n },\n BlackBerry: function() {\n return navigator.userAgent.match(/BlackBerry/i);\n },\n iOS: function() {\n return navigator.userAgent.match(/iPhone|iPad|iPod/i);\n },\n Opera: function() {\n return navigator.userAgent.match(/Opera Mini/i);\n },\n Windows: function() {\n return navigator.userAgent.match(/IEMobile/i);\n },\n all: function() {\n return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows());\n }\n};\n\n","/**\n * LazyDefer\n * This module lazily adds any html attribute as soon as an element is in viewport.\n * Supports breakpoints.\n *\n * EXAMPLE\n * This example will set the `src` tag to `mobile.jpg` when `breakpoint-mobile` is true, otherwise it falls back on\n * the value of `default` which is `default.jpg`:\n *\n *
\n *\n * Additional configuration can be added with the `data-lazy-defer-config`, for example:\n *\n *
\n *\n */\n;var LazyDefer = (function ($, _, window) {\n\n /**\n * LazyDefer constructor\n *\n * @param $target\n * @param options\n * @param config\n * @constructor\n */\n var LazyDefer = function ($target, options, config) {\n /**\n * Check for lodash\n */\n if (_ === undefined) {\n throw '[lazy-defer] lodash is required';\n }\n \n \n /**\n * Check for jquery\n */\n if ($ === undefined) {\n throw '[lazy-defer] jquery is required';\n }\n\n /**\n * Check for window.breakpoint\n */\n if (window.breakpoint === undefined) {\n throw '[lazy-defer] window.breakpoint is required';\n }\n\n /**\n * Set local variables\n */\n this.$target = $target;\n this.options = options;\n this.config = $.extend(true, LazyDefer.defaultConfig, config);\n\n /**\n * Attach listeners\n */\n this._initListeners();\n\n /**\n * Always call the event handler on load, so the image can be deferred when already in viewport\n */\n this._handleEvent();\n };\n\n /**\n * Default configuration\n *\n * @type {object}\n */\n LazyDefer.defaultConfig = {\n init_timeout: 0,\n debounce_timeout: 25,\n after_defer_class: 'is--deferred'\n };\n\n /**\n * Attach debounced listeners\n *\n * @private\n */\n LazyDefer.prototype._initListeners = function () {\n //$(window).on('scroll resize', _.debounce(this._handleEvent.bind(this), this.config.debounce_timeout));\n $('.portfolio-modal').on('scroll resize', _.debounce(this._handleEvent.bind(this), this.config.debounce_timeout));\n $(window).on('scroll resize', _.debounce(this._handleEvent.bind(this), this.config.debounce_timeout));\n \n this.$target.parents('.mobile-scrollable').on('scroll', _.debounce(this._handleEvent.bind(this), this.config.debounce_timeout));\n };\n\n /**\n * Handle a defer event\n *\n * @returns {boolean}\n * @private\n */\n LazyDefer.prototype._handleEvent = function () {\n /**inView\n * Stop when element is not in viewport\n */\n if (!this._inViewport()) {\n return false;\n }\n\n /**\n * Grab the current breakpoint\n */\n var breakpoint = window.breakpoint ? window.breakpoint() : 'default';\n\n /**\n * Loop through all args and defer the breakpoint calls\n */\n for (var attr in this.options) {\n /**\n * Grab the value for the current breakpoint (falls back to default when breakpoint not in map)\n *\n * @type string\n */\n var value = this.options[attr][breakpoint] || this.options[attr]['default'] || '';\n\n /**\n * Defer setting the value\n */\n this._defer(attr, value);\n }\n };\n\n /**\n * Check whether the element is in viewport\n *\n * @returns {boolean}\n * @private\n */\n LazyDefer.prototype._inViewport = function () {\n /**\n * If module `InViewPort` is not available, return true\n */\n if (window.inviewport === undefined) {\n return true;\n }\n\t\t\n return window.inviewport(this.$target[0]);\n };\n\n /**\n * Execute the defer\n *\n * @param tag\n * @param value\n * @returns {boolean}\n * @private\n */\n LazyDefer.prototype._defer = function (tag, value) {\n /**\n * Stop when the value has not changed\n */\n if (this.$target.attr(tag) === value) {\n return false;\n }\n\n /**\n * Set the value and set the class\n */\n this.$target\n .attr(tag, value)\n .addClass(this.config.after_defer_class);\n };\n\n /**\n * On DOM ready\n */\n $(function () {\n\n /**\n * Initialize lazy deferrers for all elements tagged with `[data-lazy-defer]`\n */\n var initLazyDefer = function () {\n $('[data-lazy-defer]').each(function () {\n var $target = $(this),\n options = $target.data('lazy-defer'),\n config = $target.data('lazy-defer-config');\n new LazyDefer($target, options);\n })\n };\n\n /**\n * Timeout if the init_timeout is set\n */\n if (LazyDefer.defaultConfig.init_timeout > 0) {\n setTimeout(initLazyDefer, LazyDefer.defaultConfig.init_timeout);\n } else {\n initLazyDefer();\n }\n });\n\n /**\n * Expose to outer context\n */\n return LazyDefer;\n\n\n})(jQuery, _, window);\n","(function() {\n\"use strict\";\n\nvar supportsMultiple = self.HTMLInputElement && \"valueLow\" in HTMLInputElement.prototype;\n\nvar descriptor = Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, \"value\");\n\nself.multirange = function(input) {\n\tif (supportsMultiple || input.classList.contains(\"multirange\")) {\n\t\treturn;\n\t}\n\n\tvar values = input.getAttribute(\"value\").split(\",\");\n\tvar min = +input.min || 0;\n\tvar max = +input.max || 100;\n\tvar ghost = input.cloneNode();\n\n\tinput.classList.add(\"multirange\", \"original\");\n\tghost.classList.add(\"multirange\", \"ghost\");\n\n\tinput.value = values[0] || min + (max - min) / 2;\n\tghost.value = values[1] || min + (max - min) / 2;\n\n\tinput.parentNode.insertBefore(ghost, input.nextSibling);\n\n\tObject.defineProperty(input, \"originalValue\", descriptor.get ? descriptor : {\n\t\t// Fuck you Safari >:(\n\t\tget: function() { return this.value; },\n\t\tset: function(v) { this.value = v; }\n\t});\n\n\tObject.defineProperties(input, {\n\t\tvalueLow: {\n\t\t\tget: function() { return Math.min(this.originalValue, ghost.value); },\n\t\t\tset: function(v) { this.originalValue = v; },\n\t\t\tenumerable: true\n\t\t},\n\t\tvalueHigh: {\n\t\t\tget: function() { return Math.max(this.originalValue, ghost.value); },\n\t\t\tset: function(v) { ghost.value = v; },\n\t\t\tenumerable: true\n\t\t}\n\t});\n\n\tif (descriptor.get) {\n\t\t// Again, fuck you Safari\n\t\tObject.defineProperty(input, \"value\", {\n\t\t\tget: function() { return this.valueLow + \",\" + this.valueHigh; },\n\t\t\tset: function(v) {\n\t\t\t\tvar values = v.split(\",\");\n\t\t\t\tthis.valueLow = values[0];\n\t\t\t\tthis.valueHigh = values[1];\n\t\t\t},\n\t\t\tenumerable: true\n\t\t});\n\t}\n\n\tfunction update() {\n\t\tghost.style.setProperty(\"--low\", 100 * ((input.valueLow - min) / (max - min)) + 1 + \"%\");\n\t\tghost.style.setProperty(\"--high\", 100 * ((input.valueHigh - min) / (max - min)) - 1 + \"%\");\n\t}\n\n\tinput.addEventListener(\"input\", update);\n\tghost.addEventListener(\"input\", update);\n\n\tupdate();\n}\n\nmultirange.init = function() {\n\tArray.from(document.querySelectorAll(\"input[type=range][multiple]:not(.multirange)\")).forEach(multirange);\n}\n\nif (document.readyState == \"loading\") {\n\tdocument.addEventListener(\"DOMContentLoaded\", multirange.init);\n}\nelse {\n\tmultirange.init();\n}\n\n})();\n","/**\n * Return the requested pseudo element property of a jquery object\n * @param pseudo 'before' or 'after'\n * @param prop 'content' or any other css property\n * @returns {*}\n */\n\n;var pseudoProperty = (function($) { // eslint-disable-line no-extra-semi\n /**\n * Return pseudo property value\n *\n * @param pseudo\n * @param prop\n * @returns {*}\n */\n var func = function (pseudo, prop) {\n var afterEl = window.getComputedStyle ? window.getComputedStyle(this[0], ':' + pseudo) : false;\n if (!afterEl || !prop) return false;\n return afterEl.getPropertyValue(prop).replace(/^[\"']|[\"']$/g, '');\n };\n\n /**\n * Set pseudoProperty as jQuery plugin\n *\n * @type {func}\n */\n $.fn = $.fn || {};\n $.fn.pseudoProperty = func;\n\n /**\n * Expose to global\n */\n return func;\n})(jQuery);\n\n/**\n * Export for unit tests\n */\nif (\"object\" == typeof module && \"object\" == typeof module.exports) {\n module.exports = pseudoProperty;\n}\n","/**\n * TOGGLES: A class that toggles toggleable elements with a toggleclass\n *\n * Put two arguments on the element that triggers the toggle:\n * - data-toggles = Target that will be toggled\n * - data-toggles-class = Class that will be appended, defaults to 'is--visible'\n *\n */\n\n;(function ($, window) { // eslint-disable-line no-extra-semi\n 'use strict';\n\n /**\n * Sticky component constructor\n * @param $element\n * @param targets\n * @param event\n * @param auto\n * @param breakpoint\n * @constructor\n */\n var Toggles = function ($element, targets, event, auto, breakpoint) {\n this._$el = $element;\n this._targets = targets;\n this._event = event;\n this._breakpoint = breakpoint;\n\n /**\n * Auto-toggle as soon as we hit an `auto` = true\n */\n if (auto === true) {\n return this.toggle();\n }\n\n this._$el.on('click', this.toggle.bind(this));\n };\n\n /**\n * Toggle the toggleClass on the target\n */\n Toggles.prototype.toggle = function () {\n if (\n this._breakpoint !== undefined &&\n this._$el.data('toggles-breakpoint') !== undefined &&\n this._$el.data('toggles-breakpoint').split(',').indexOf(this._breakpoint()) === -1\n ) {\n return true;\n }\n\n for (var selector in this._targets) {\n var $target = selector === 'this' ? this._$el : $(selector),\n className = this._targets[selector];\n\n if (className instanceof Array === true) {\n className.map(function(e) {\n this._toggleElement($target, e);\n }.bind(this));\n } else {\n this._toggleElement($target, className);\n }\n }\n\n if (this._event !== undefined) {\n this._fireEvent(this._event);\n }\n };\n\n /**\n * Toggle a specific class on a target element\n * @param $target\n * @param className\n * @private\n */\n Toggles.prototype._toggleElement = function ($target, className) {\n $target.toggleClass(className);\n };\n\n /**\n * Fire the event on the window object\n * @param event\n * @private\n */\n Toggles.prototype._fireEvent = function (event) {\n $(window).trigger(event);\n };\n\n /**\n * Attach new toggle\n * @private\n */\n Toggles.prototype._attach = function () {\n var $el = $(this),\n targets = $el.data('toggles'),\n event = $el.data('toggles-event'),\n auto = $el[0].hasAttribute('data-toggles-auto') || false;\n\n new Toggles($el, targets, event, auto, window.breakpoint);\n };\n\n /**\n * Attach listeners to document\n */\n $(function () {\n /**\n * Travel through the DOM for data-at-modal attributes\n * For each of the founded data attr create a new modal\n */\n $('[data-toggles]').each(Toggles.prototype._attach);\n\n /**\n * Setup a jQuery chainable plugin for attaching to injected elements after page load\n * @type {*}\n */\n $.fn.AtToggles = function () {\n $(this).each(Toggles.prototype._attach);\n };\n });\n\n})(jQuery, window);\n"]}