{"version":3,"file":"js/decidim_gallery-ad6c193fb863cb7b997b.js","mappings":"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","sources":["webpack://app/../usr/local/bundle/bundler/gems/decidim-module-gallery-726fab33984c/app/packs/images/ sync ^\\.\\/.*$","webpack://app/webpack/bootstrap","webpack://app/webpack/runtime/hasOwnProperty shorthand","webpack://app/webpack/runtime/publicPath","webpack://app/../usr/local/bundle/bundler/gems/decidim-module-gallery-726fab33984c/app/packs/src/decidim/gallery/masonry/getSize.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-module-gallery-726fab33984c/app/packs/src/decidim/gallery/masonry/jQueryBridget.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-module-gallery-726fab33984c/app/packs/src/decidim/gallery/masonry/EvEmitter.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-module-gallery-726fab33984c/app/packs/src/decidim/gallery/masonry/outlayerItem.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-module-gallery-726fab33984c/app/packs/src/decidim/gallery/masonry/matchesSelector.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-module-gallery-726fab33984c/app/packs/src/decidim/gallery/masonry/utils.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-module-gallery-726fab33984c/app/packs/src/decidim/gallery/masonry/outlayer.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-module-gallery-726fab33984c/app/packs/src/decidim/gallery/masonry/masonry.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-module-gallery-726fab33984c/app/packs/src/decidim/gallery/gallery.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-module-gallery-726fab33984c/app/packs/entrypoints/decidim_gallery.js"],"sourcesContent":["var map = {\n\t\"./decidim/gallery/icon.svg\": 2013\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 66277;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","__webpack_require__.p = \"/decidim-packs/\";","\n// -------------------------- helpers -------------------------- //\n\n// get a number from a string, not a percentage\nfunction getStyleSize( value ) {\n var num = parseFloat( value );\n // not a percent like '100%', and a number\n var isValid = value.indexOf('%') == -1 && !isNaN( num );\n return isValid && num;\n}\n\nfunction noop() {}\n\nvar logError = typeof console == 'undefined' ? noop :\n function( message ) {\n console.error( message );\n };\n\n// -------------------------- measurements -------------------------- //\n\nvar measurements = [\n 'paddingLeft',\n 'paddingRight',\n 'paddingTop',\n 'paddingBottom',\n 'marginLeft',\n 'marginRight',\n 'marginTop',\n 'marginBottom',\n 'borderLeftWidth',\n 'borderRightWidth',\n 'borderTopWidth',\n 'borderBottomWidth'\n];\n\nvar measurementsLength = measurements.length;\n\nfunction getZeroSize() {\n var size = {\n width: 0,\n height: 0,\n innerWidth: 0,\n innerHeight: 0,\n outerWidth: 0,\n outerHeight: 0\n };\n for ( var i=0; i < measurementsLength; i++ ) {\n var measurement = measurements[i];\n size[ measurement ] = 0;\n }\n return size;\n}\n\n// -------------------------- getStyle -------------------------- //\n\n/**\n * getStyle, get style of element, check for Firefox bug\n * https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n */\nfunction getStyle( elem ) {\n var style = getComputedStyle( elem );\n if ( !style ) {\n logError( 'Style returned ' + style +\n '. Are you running this code in a hidden iframe on Firefox? ' +\n 'See https://bit.ly/getsizebug1' );\n }\n return style;\n}\n\n// -------------------------- setup -------------------------- //\n\nvar isSetup = false;\n\nvar isBoxSizeOuter;\n\n/**\n * setup\n * check isBoxSizerOuter\n * do on first getSize() rather than on page load for Firefox bug\n */\nfunction setup() {\n // setup once\n if ( isSetup ) {\n return;\n }\n isSetup = true;\n\n // -------------------------- box sizing -------------------------- //\n\n /**\n * Chrome & Safari measure the outer-width on style.width on border-box elems\n * IE11 & Firefox<29 measures the inner-width\n */\n var div = document.createElement('div');\n div.style.width = '200px';\n div.style.padding = '1px 2px 3px 4px';\n div.style.borderStyle = 'solid';\n div.style.borderWidth = '1px 2px 3px 4px';\n div.style.boxSizing = 'border-box';\n\n var body = document.body || document.documentElement;\n body.appendChild( div );\n var style = getStyle( div );\n // round value for browser zoom. desandro/masonry#928\n isBoxSizeOuter = Math.round( getStyleSize( style.width ) ) == 200;\n getSize.isBoxSizeOuter = isBoxSizeOuter;\n\n body.removeChild( div );\n}\n\n// -------------------------- getSize -------------------------- //\n\nfunction getSize( elem ) {\n setup();\n\n // use querySeletor if elem is string\n if ( typeof elem == 'string' ) {\n elem = document.querySelector( elem );\n }\n\n // do not proceed on non-objects\n if ( !elem || typeof elem != 'object' || !elem.nodeType ) {\n return;\n }\n\n var style = getStyle( elem );\n\n // if hidden, everything is 0\n if ( style.display == 'none' ) {\n return getZeroSize();\n }\n\n var size = {};\n size.width = elem.offsetWidth;\n size.height = elem.offsetHeight;\n\n var isBorderBox = size.isBorderBox = style.boxSizing == 'border-box';\n\n // get all measurements\n for ( var i=0; i < measurementsLength; i++ ) {\n var measurement = measurements[i];\n var value = style[ measurement ];\n var num = parseFloat( value );\n // any 'auto', 'medium' value will be 0\n size[ measurement ] = !isNaN( num ) ? num : 0;\n }\n\n var paddingWidth = size.paddingLeft + size.paddingRight;\n var paddingHeight = size.paddingTop + size.paddingBottom;\n var marginWidth = size.marginLeft + size.marginRight;\n var marginHeight = size.marginTop + size.marginBottom;\n var borderWidth = size.borderLeftWidth + size.borderRightWidth;\n var borderHeight = size.borderTopWidth + size.borderBottomWidth;\n\n var isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter;\n\n // overwrite width and height if we can get it from style\n var styleWidth = getStyleSize( style.width );\n if ( styleWidth !== false ) {\n size.width = styleWidth +\n // add padding and border unless it's already including it\n ( isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth );\n }\n\n var styleHeight = getStyleSize( style.height );\n if ( styleHeight !== false ) {\n size.height = styleHeight +\n // add padding and border unless it's already including it\n ( isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight );\n }\n\n size.innerWidth = size.width - ( paddingWidth + borderWidth );\n size.innerHeight = size.height - ( paddingHeight + borderHeight );\n\n size.outerWidth = size.width + marginWidth;\n size.outerHeight = size.height + marginHeight;\n\n return size;\n}\n\nexport default getSize;\n","\n// ----- utils ----- //\n\nvar arraySlice = Array.prototype.slice;\n\n// helper function for logging errors\n// $.error breaks jQuery chaining\nvar console = window.console;\nvar logError = typeof console == 'undefined' ? function() {} :\n function( message ) {\n console.error( message );\n };\n\n// ----- jQueryBridget ----- //\n\nfunction jQueryBridget( namespace, PluginClass, $ ) {\n $ = $ || jQuery || window.jQuery;\n if ( !$ ) {\n return;\n }\n\n // add option method -> $().plugin('option', {...})\n if ( !PluginClass.prototype.option ) {\n // option setter\n PluginClass.prototype.option = function( opts ) {\n // bail out if not an object\n if ( !$.isPlainObject( opts ) ){\n return;\n }\n this.options = $.extend( true, this.options, opts );\n };\n }\n\n // make jQuery plugin\n $.fn[ namespace ] = function( arg0 /*, arg1 */ ) {\n if ( typeof arg0 == 'string' ) {\n // method call $().plugin( 'methodName', { options } )\n // shift arguments by 1\n var args = arraySlice.call( arguments, 1 );\n return methodCall( this, arg0, args );\n }\n // just $().plugin({ options })\n plainCall( this, arg0 );\n return this;\n };\n\n // $().plugin('methodName')\n function methodCall( $elems, methodName, args ) {\n var returnValue;\n var pluginMethodStr = '$().' + namespace + '(\"' + methodName + '\")';\n\n $elems.each( function( i, elem ) {\n // get instance\n var instance = $.data( elem, namespace );\n if ( !instance ) {\n logError( namespace + ' not initialized. Cannot call methods, i.e. ' +\n pluginMethodStr );\n return;\n }\n\n var method = instance[ methodName ];\n if ( !method || methodName.charAt(0) == '_' ) {\n logError( pluginMethodStr + ' is not a valid method' );\n return;\n }\n\n // apply method, get return value\n var value = method.apply( instance, args );\n // set return value if value is returned, use only first value\n returnValue = returnValue === undefined ? value : returnValue;\n });\n\n return returnValue !== undefined ? returnValue : $elems;\n }\n\n function plainCall( $elems, options ) {\n $elems.each( function( i, elem ) {\n var instance = $.data( elem, namespace );\n if ( instance ) {\n // set options & init\n instance.option( options );\n instance._init();\n } else {\n // initialize new instance\n instance = new PluginClass( elem, options );\n $.data( elem, namespace, instance );\n }\n });\n }\n\n updateJQuery( $ );\n\n}\n\n// ----- updateJQuery ----- //\n\n// set $.bridget for v1 backwards compatibility\nfunction updateJQuery( $ ) {\n if ( !$ || ( $ && $.bridget ) ) {\n return;\n }\n $.bridget = jQueryBridget;\n}\n\nupdateJQuery( jQuery || window.jQuery );\n\n// ----- ----- //\n\nexport default jQueryBridget;\n","\nfunction EvEmitter() {}\n\nvar proto = EvEmitter.prototype;\n\nproto.on = function( eventName, listener ) {\n if ( !eventName || !listener ) {\n return;\n }\n // set events hash\n var events = this._events = this._events || {};\n // set listeners array\n var listeners = events[ eventName ] = events[ eventName ] || [];\n // only add once\n if ( listeners.indexOf( listener ) == -1 ) {\n listeners.push( listener );\n }\n\n return this;\n};\n\nproto.once = function( eventName, listener ) {\n if ( !eventName || !listener ) {\n return;\n }\n // add event\n this.on( eventName, listener );\n // set once flag\n // set onceEvents hash\n var onceEvents = this._onceEvents = this._onceEvents || {};\n // set onceListeners object\n var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {};\n // set flag\n onceListeners[ listener ] = true;\n\n return this;\n};\n\nproto.off = function( eventName, listener ) {\n var listeners = this._events && this._events[ eventName ];\n if ( !listeners || !listeners.length ) {\n return;\n }\n var index = listeners.indexOf( listener );\n if ( index != -1 ) {\n listeners.splice( index, 1 );\n }\n\n return this;\n};\n\nproto.emitEvent = function( eventName, args ) {\n var listeners = this._events && this._events[ eventName ];\n if ( !listeners || !listeners.length ) {\n return;\n }\n // copy over to avoid interference if .off() in listener\n listeners = listeners.slice(0);\n args = args || [];\n // once stuff\n var onceListeners = this._onceEvents && this._onceEvents[ eventName ];\n\n for ( var i=0; i < listeners.length; i++ ) {\n var listener = listeners[i]\n var isOnce = onceListeners && onceListeners[ listener ];\n if ( isOnce ) {\n // remove listener\n // remove before trigger to prevent recursion\n this.off( eventName, listener );\n // unset once flag\n delete onceListeners[ listener ];\n }\n // trigger listener\n listener.apply( this, args );\n }\n\n return this;\n};\n\nproto.allOff = function() {\n delete this._events;\n delete this._onceEvents;\n};\n\nexport default EvEmitter;\n","import EvEmitter from \"./EvEmitter\"\nimport getSize from \"./getSize\";\n\n// ----- helpers ----- //\n\nfunction isEmptyObj( obj ) {\n for ( var prop in obj ) {\n return false;\n }\n prop = null;\n return true;\n}\n\n// -------------------------- CSS3 support -------------------------- //\n\n\nvar docElemStyle = document.documentElement.style;\n\nvar transitionProperty = typeof docElemStyle.transition == 'string' ?\n 'transition' : 'WebkitTransition';\nvar transformProperty = typeof docElemStyle.transform == 'string' ?\n 'transform' : 'WebkitTransform';\n\nvar transitionEndEvent = {\n WebkitTransition: 'webkitTransitionEnd',\n transition: 'transitionend'\n}[ transitionProperty ];\n\n// cache all vendor properties that could have vendor prefix\nvar vendorProperties = {\n transform: transformProperty,\n transition: transitionProperty,\n transitionDuration: transitionProperty + 'Duration',\n transitionProperty: transitionProperty + 'Property',\n transitionDelay: transitionProperty + 'Delay'\n};\n\n// -------------------------- Item -------------------------- //\n\nfunction Item( element, layout ) {\n if ( !element ) {\n return;\n }\n\n this.element = element;\n // parent layout class, i.e. Masonry, Isotope, or Packery\n this.layout = layout;\n this.position = {\n x: 0,\n y: 0\n };\n\n this._create();\n}\n\n// inherit EvEmitter\nvar proto = Item.prototype = Object.create( EvEmitter.prototype );\nproto.constructor = Item;\n\nproto._create = function() {\n // transition objects\n this._transn = {\n ingProperties: {},\n clean: {},\n onEnd: {}\n };\n\n this.css({\n position: 'absolute'\n });\n};\n\n// trigger specified handler for event type\nproto.handleEvent = function( event ) {\n var method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\nproto.getSize = function() {\n this.size = getSize( this.element );\n};\n\n/**\n * apply CSS styles to element\n * @param {Object} style\n */\nproto.css = function( style ) {\n var elemStyle = this.element.style;\n\n for ( var prop in style ) {\n // use vendor property if available\n var supportedProp = vendorProperties[ prop ] || prop;\n elemStyle[ supportedProp ] = style[ prop ];\n }\n};\n\n// measure position, and sets it\nproto.getPosition = function() {\n var style = getComputedStyle( this.element );\n var isOriginLeft = this.layout._getOption('originLeft');\n var isOriginTop = this.layout._getOption('originTop');\n var xValue = style[ isOriginLeft ? 'left' : 'right' ];\n var yValue = style[ isOriginTop ? 'top' : 'bottom' ];\n var x = parseFloat( xValue );\n var y = parseFloat( yValue );\n // convert percent to pixels\n var layoutSize = this.layout.size;\n if ( xValue.indexOf('%') != -1 ) {\n x = ( x / 100 ) * layoutSize.width;\n }\n if ( yValue.indexOf('%') != -1 ) {\n y = ( y / 100 ) * layoutSize.height;\n }\n // clean up 'auto' or other non-integer values\n x = isNaN( x ) ? 0 : x;\n y = isNaN( y ) ? 0 : y;\n // remove padding from measurement\n x -= isOriginLeft ? layoutSize.paddingLeft : layoutSize.paddingRight;\n y -= isOriginTop ? layoutSize.paddingTop : layoutSize.paddingBottom;\n\n this.position.x = x;\n this.position.y = y;\n};\n\n// set settled position, apply padding\nproto.layoutPosition = function() {\n var layoutSize = this.layout.size;\n var style = {};\n var isOriginLeft = this.layout._getOption('originLeft');\n var isOriginTop = this.layout._getOption('originTop');\n\n // x\n var xPadding = isOriginLeft ? 'paddingLeft' : 'paddingRight';\n var xProperty = isOriginLeft ? 'left' : 'right';\n var xResetProperty = isOriginLeft ? 'right' : 'left';\n\n var x = this.position.x + layoutSize[ xPadding ];\n // set in percentage or pixels\n style[ xProperty ] = this.getXValue( x );\n // reset other property\n style[ xResetProperty ] = '';\n\n // y\n var yPadding = isOriginTop ? 'paddingTop' : 'paddingBottom';\n var yProperty = isOriginTop ? 'top' : 'bottom';\n var yResetProperty = isOriginTop ? 'bottom' : 'top';\n\n var y = this.position.y + layoutSize[ yPadding ];\n // set in percentage or pixels\n style[ yProperty ] = this.getYValue( y );\n // reset other property\n style[ yResetProperty ] = '';\n\n this.css( style );\n this.emitEvent( 'layout', [ this ] );\n};\n\nproto.getXValue = function( x ) {\n var isHorizontal = this.layout._getOption('horizontal');\n return this.layout.options.percentPosition && !isHorizontal ?\n ( ( x / this.layout.size.width ) * 100 ) + '%' : x + 'px';\n};\n\nproto.getYValue = function( y ) {\n var isHorizontal = this.layout._getOption('horizontal');\n return this.layout.options.percentPosition && isHorizontal ?\n ( ( y / this.layout.size.height ) * 100 ) + '%' : y + 'px';\n};\n\nproto._transitionTo = function( x, y ) {\n this.getPosition();\n // get current x & y from top/left\n var curX = this.position.x;\n var curY = this.position.y;\n\n var didNotMove = x == this.position.x && y == this.position.y;\n\n // save end position\n this.setPosition( x, y );\n\n // if did not move and not transitioning, just go to layout\n if ( didNotMove && !this.isTransitioning ) {\n this.layoutPosition();\n return;\n }\n\n var transX = x - curX;\n var transY = y - curY;\n var transitionStyle = {};\n transitionStyle.transform = this.getTranslate( transX, transY );\n\n this.transition({\n to: transitionStyle,\n onTransitionEnd: {\n transform: this.layoutPosition\n },\n isCleaning: true\n });\n};\n\nproto.getTranslate = function( x, y ) {\n // flip cooridinates if origin on right or bottom\n var isOriginLeft = this.layout._getOption('originLeft');\n var isOriginTop = this.layout._getOption('originTop');\n x = isOriginLeft ? x : -x;\n y = isOriginTop ? y : -y;\n return 'translate3d(' + x + 'px, ' + y + 'px, 0)';\n};\n\n// non transition + transform support\nproto.goTo = function( x, y ) {\n this.setPosition( x, y );\n this.layoutPosition();\n};\n\nproto.moveTo = proto._transitionTo;\n\nproto.setPosition = function( x, y ) {\n this.position.x = parseFloat( x );\n this.position.y = parseFloat( y );\n};\n\n// ----- transition ----- //\n\n/**\n * @param {Object} style - CSS\n * @param {Function} onTransitionEnd\n */\n\n// non transition, just trigger callback\nproto._nonTransition = function( args ) {\n this.css( args.to );\n if ( args.isCleaning ) {\n this._removeStyles( args.to );\n }\n for ( var prop in args.onTransitionEnd ) {\n args.onTransitionEnd[ prop ].call( this );\n }\n};\n\n/**\n * proper transition\n * @param {Object} args - arguments\n * @param {Object} to - style to transition to\n * @param {Object} from - style to start transition from\n * @param {Boolean} isCleaning - removes transition styles after transition\n * @param {Function} onTransitionEnd - callback\n */\nproto.transition = function( args ) {\n // redirect to nonTransition if no transition duration\n if ( !parseFloat( this.layout.options.transitionDuration ) ) {\n this._nonTransition( args );\n return;\n }\n\n var _transition = this._transn;\n // keep track of onTransitionEnd callback by css property\n for ( var prop in args.onTransitionEnd ) {\n _transition.onEnd[ prop ] = args.onTransitionEnd[ prop ];\n }\n // keep track of properties that are transitioning\n for ( prop in args.to ) {\n _transition.ingProperties[ prop ] = true;\n // keep track of properties to clean up when transition is done\n if ( args.isCleaning ) {\n _transition.clean[ prop ] = true;\n }\n }\n\n // set from styles\n if ( args.from ) {\n this.css( args.from );\n // force redraw. http://blog.alexmaccaw.com/css-transitions\n var h = this.element.offsetHeight;\n // hack for JSHint to hush about unused var\n h = null;\n }\n // enable transition\n this.enableTransition( args.to );\n // set styles that are transitioning\n this.css( args.to );\n\n this.isTransitioning = true;\n\n};\n\n// dash before all cap letters, including first for\n// WebkitTransform => -webkit-transform\nfunction toDashedAll( str ) {\n return str.replace( /([A-Z])/g, function( $1 ) {\n return '-' + $1.toLowerCase();\n });\n}\n\nvar transitionProps = 'opacity,' + toDashedAll( transformProperty );\n\nproto.enableTransition = function(/* style */) {\n // HACK changing transitionProperty during a transition\n // will cause transition to jump\n if ( this.isTransitioning ) {\n return;\n }\n\n // make `transition: foo, bar, baz` from style object\n // HACK un-comment this when enableTransition can work\n // while a transition is happening\n // var transitionValues = [];\n // for ( var prop in style ) {\n // // dash-ify camelCased properties like WebkitTransition\n // prop = vendorProperties[ prop ] || prop;\n // transitionValues.push( toDashedAll( prop ) );\n // }\n // munge number to millisecond, to match stagger\n var duration = this.layout.options.transitionDuration;\n duration = typeof duration == 'number' ? duration + 'ms' : duration;\n // enable transition styles\n this.css({\n transitionProperty: transitionProps,\n transitionDuration: duration,\n transitionDelay: this.staggerDelay || 0\n });\n // listen for transition end event\n this.element.addEventListener( transitionEndEvent, this, false );\n};\n\n// ----- events ----- //\n\nproto.onwebkitTransitionEnd = function( event ) {\n this.ontransitionend( event );\n};\n\nproto.onotransitionend = function( event ) {\n this.ontransitionend( event );\n};\n\n// properties that I munge to make my life easier\nvar dashedVendorProperties = {\n '-webkit-transform': 'transform'\n};\n\nproto.ontransitionend = function( event ) {\n // disregard bubbled events from children\n if ( event.target !== this.element ) {\n return;\n }\n var _transition = this._transn;\n // get property name of transitioned property, convert to prefix-free\n var propertyName = dashedVendorProperties[ event.propertyName ] || event.propertyName;\n\n // remove property that has completed transitioning\n delete _transition.ingProperties[ propertyName ];\n // check if any properties are still transitioning\n if ( isEmptyObj( _transition.ingProperties ) ) {\n // all properties have completed transitioning\n this.disableTransition();\n }\n // clean style\n if ( propertyName in _transition.clean ) {\n // clean up style\n this.element.style[ event.propertyName ] = '';\n delete _transition.clean[ propertyName ];\n }\n // trigger onTransitionEnd callback\n if ( propertyName in _transition.onEnd ) {\n var onTransitionEnd = _transition.onEnd[ propertyName ];\n onTransitionEnd.call( this );\n delete _transition.onEnd[ propertyName ];\n }\n\n this.emitEvent( 'transitionEnd', [ this ] );\n};\n\nproto.disableTransition = function() {\n this.removeTransitionStyles();\n this.element.removeEventListener( transitionEndEvent, this, false );\n this.isTransitioning = false;\n};\n\n/**\n * removes style property from element\n * @param {Object} style\n **/\nproto._removeStyles = function( style ) {\n // clean up transition styles\n var cleanStyle = {};\n for ( var prop in style ) {\n cleanStyle[ prop ] = '';\n }\n this.css( cleanStyle );\n};\n\nvar cleanTransitionStyle = {\n transitionProperty: '',\n transitionDuration: '',\n transitionDelay: ''\n};\n\nproto.removeTransitionStyles = function() {\n // remove transition\n this.css( cleanTransitionStyle );\n};\n\n// ----- stagger ----- //\n\nproto.stagger = function( delay ) {\n delay = isNaN( delay ) ? 0 : delay;\n this.staggerDelay = delay + 'ms';\n};\n\n// ----- show/hide/remove ----- //\n\n// remove element from DOM\nproto.removeElem = function() {\n this.element.parentNode.removeChild( this.element );\n // remove display: none\n this.css({ display: '' });\n this.emitEvent( 'remove', [ this ] );\n};\n\nproto.remove = function() {\n // just remove element if no transition support or no transition\n if ( !transitionProperty || !parseFloat( this.layout.options.transitionDuration ) ) {\n this.removeElem();\n return;\n }\n\n // start transition\n this.once( 'transitionEnd', function() {\n this.removeElem();\n });\n this.hide();\n};\n\nproto.reveal = function() {\n delete this.isHidden;\n // remove display: none\n this.css({ display: '' });\n\n var options = this.layout.options;\n\n var onTransitionEnd = {};\n var transitionEndProperty = this.getHideRevealTransitionEndProperty('visibleStyle');\n onTransitionEnd[ transitionEndProperty ] = this.onRevealTransitionEnd;\n\n this.transition({\n from: options.hiddenStyle,\n to: options.visibleStyle,\n isCleaning: true,\n onTransitionEnd: onTransitionEnd\n });\n};\n\nproto.onRevealTransitionEnd = function() {\n // check if still visible\n // during transition, item may have been hidden\n if ( !this.isHidden ) {\n this.emitEvent('reveal');\n }\n};\n\n/**\n * get style property use for hide/reveal transition end\n * @param {String} styleProperty - hiddenStyle/visibleStyle\n * @returns {String}\n */\nproto.getHideRevealTransitionEndProperty = function( styleProperty ) {\n var optionStyle = this.layout.options[ styleProperty ];\n // use opacity\n if ( optionStyle.opacity ) {\n return 'opacity';\n }\n // get first property\n for ( var prop in optionStyle ) {\n return prop;\n }\n};\n\nproto.hide = function() {\n // set flag\n this.isHidden = true;\n // remove display: none\n this.css({ display: '' });\n\n var options = this.layout.options;\n\n var onTransitionEnd = {};\n var transitionEndProperty = this.getHideRevealTransitionEndProperty('hiddenStyle');\n onTransitionEnd[ transitionEndProperty ] = this.onHideTransitionEnd;\n\n this.transition({\n from: options.visibleStyle,\n to: options.hiddenStyle,\n // keep hidden stuff hidden\n isCleaning: true,\n onTransitionEnd: onTransitionEnd\n });\n};\n\nproto.onHideTransitionEnd = function() {\n // check if still hidden\n // during transition, item may have been un-hidden\n if ( this.isHidden ) {\n this.css({ display: 'none' });\n this.emitEvent('hide');\n }\n};\n\nproto.destroy = function() {\n this.css({\n position: '',\n left: '',\n right: '',\n top: '',\n bottom: '',\n transition: '',\n transform: ''\n });\n};\n\nexport default Item;\n","var matchesMethod = ( function() {\n var ElemProto = window.Element.prototype;\n // check for the standard method name first\n if ( ElemProto.matches ) {\n return 'matches';\n }\n // check un-prefixed\n if ( ElemProto.matchesSelector ) {\n return 'matchesSelector';\n }\n // check vendor prefixes\n var prefixes = [ 'webkit', 'moz', 'ms', 'o' ];\n\n for ( var i=0; i < prefixes.length; i++ ) {\n var prefix = prefixes[i];\n var method = prefix + 'MatchesSelector';\n if ( ElemProto[ method ] ) {\n return method;\n }\n }\n})();\n\nexport default function matchesSelector( elem, selector ) {\n return elem[ matchesMethod ]( selector );\n}\n","import matchesSelector from \"./matchesSelector\";\n\nvar utils = {};\n\n// ----- extend ----- //\n\n// extends objects\nutils.extend = function( a, b ) {\n for ( var prop in b ) {\n a[ prop ] = b[ prop ];\n }\n return a;\n};\n\n// ----- modulo ----- //\n\nutils.modulo = function( num, div ) {\n return ( ( num % div ) + div ) % div;\n};\n\n// ----- makeArray ----- //\n\nvar arraySlice = Array.prototype.slice;\n\n// turn element or nodeList into an array\nutils.makeArray = function( obj ) {\n if ( Array.isArray( obj ) ) {\n // use object if already an array\n return obj;\n }\n // return empty array if undefined or null. #6\n if ( obj === null || obj === undefined ) {\n return [];\n }\n\n var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';\n if ( isArrayLike ) {\n // convert nodeList to array\n return arraySlice.call( obj );\n }\n\n // array of single index\n return [ obj ];\n};\n\n// ----- removeFrom ----- //\n\nutils.removeFrom = function( ary, obj ) {\n var index = ary.indexOf( obj );\n if ( index != -1 ) {\n ary.splice( index, 1 );\n }\n};\n\n// ----- getParent ----- //\n\nutils.getParent = function( elem, selector ) {\n while ( elem.parentNode && elem != document.body ) {\n elem = elem.parentNode;\n if ( matchesSelector( elem, selector ) ) {\n return elem;\n }\n }\n};\n\n// ----- getQueryElement ----- //\n\n// use element as selector string\nutils.getQueryElement = function( elem ) {\n if ( typeof elem == 'string' ) {\n return document.querySelector( elem );\n }\n return elem;\n};\n\n// ----- handleEvent ----- //\n\n// enable .ontype to trigger from .addEventListener( elem, 'type' )\nutils.handleEvent = function( event ) {\n var method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\n// ----- filterFindElements ----- //\n\nutils.filterFindElements = function( elems, selector ) {\n // make array of elems\n elems = utils.makeArray( elems );\n var ffElems = [];\n\n elems.forEach( function( elem ) {\n // check that elem is an actual element\n if ( !( elem instanceof HTMLElement ) ) {\n return;\n }\n // add elem if no selector\n if ( !selector ) {\n ffElems.push( elem );\n return;\n }\n // filter & find items if we have a selector\n // filter\n if ( matchesSelector( elem, selector ) ) {\n ffElems.push( elem );\n }\n // find children\n var childElems = elem.querySelectorAll( selector );\n // concat childElems to filterFound array\n for ( var i=0; i < childElems.length; i++ ) {\n ffElems.push( childElems[i] );\n }\n });\n\n return ffElems;\n};\n\n// ----- debounceMethod ----- //\n\nutils.debounceMethod = function( _class, methodName, threshold ) {\n threshold = threshold || 100;\n // original method\n var method = _class.prototype[ methodName ];\n var timeoutName = methodName + 'Timeout';\n\n _class.prototype[ methodName ] = function() {\n var timeout = this[ timeoutName ];\n clearTimeout( timeout );\n\n var args = arguments;\n var _this = this;\n this[ timeoutName ] = setTimeout( function() {\n method.apply( _this, args );\n delete _this[ timeoutName ];\n }, threshold );\n };\n};\n\n// ----- docReady ----- //\n\nutils.docReady = function( callback ) {\n var readyState = document.readyState;\n if ( readyState == 'complete' || readyState == 'interactive' ) {\n // do async to allow for other scripts to run. metafizzy/flickity#441\n setTimeout( callback );\n } else {\n document.addEventListener( 'DOMContentLoaded', callback );\n }\n};\n\n// ----- htmlInit ----- //\n\n// http://jamesroberts.name/blog/2010/02/22/string-functions-for-javascript-trim-to-camel-case-to-dashed-and-to-underscore/\nutils.toDashed = function( str ) {\n return str.replace( /(.)([A-Z])/g, function( match, $1, $2 ) {\n return $1 + '-' + $2;\n }).toLowerCase();\n};\n\nvar console = window.console;\n/**\n * allow user to initialize classes via [data-namespace] or .js-namespace class\n * htmlInit( Widget, 'widgetName' )\n * options are parsed from data-namespace-options\n */\nutils.htmlInit = function( WidgetClass, namespace ) {\n utils.docReady( function() {\n var dashedNamespace = utils.toDashed( namespace );\n var dataAttr = 'data-' + dashedNamespace;\n var dataAttrElems = document.querySelectorAll( '[' + dataAttr + ']' );\n var jsDashElems = document.querySelectorAll( '.js-' + dashedNamespace );\n var elems = utils.makeArray( dataAttrElems )\n .concat( utils.makeArray( jsDashElems ) );\n var dataOptionsAttr = dataAttr + '-options';\n var jQuery = window.jQuery;\n\n elems.forEach( function( elem ) {\n var attr = elem.getAttribute( dataAttr ) ||\n elem.getAttribute( dataOptionsAttr );\n var options;\n try {\n options = attr && JSON.parse( attr );\n } catch ( error ) {\n // log error, do not initialize\n if ( console ) {\n console.error( 'Error parsing ' + dataAttr + ' on ' + elem.className +\n ': ' + error );\n }\n return;\n }\n // initialize\n var instance = new WidgetClass( elem, options );\n // make available via $().data('namespace')\n if ( jQuery ) {\n jQuery.data( elem, namespace, instance );\n }\n });\n\n });\n};\n\nexport default utils;\n","import getSize from \"./getSize\";\nimport jQueryBridget from \"./jQueryBridget\";\nimport Item from \"./outlayerItem\";\nimport EvEmitter from \"./EvEmitter\";\nimport utils from \"./utils\";\n\n// globally unique identifiers\nlet GUID = 0;\n// internal store of all Outlayer intances\nlet instances = {};\nlet noop = function () {};\n\nfunction Outlayer( element, options ) {\n var queryElement = utils.getQueryElement( element );\n if ( !queryElement ) {\n if ( console ) {\n console.error( 'Bad element for ' + this.constructor.namespace +\n ': ' + ( queryElement || element ) );\n }\n return;\n }\n this.element = queryElement;\n // add jQuery\n if ( jQuery ) {\n this.$element = jQuery( this.element );\n }\n\n // options\n this.options = utils.extend( {}, this.constructor.defaults );\n this.option( options );\n\n // add id for Outlayer.getFromElement\n var id = ++GUID;\n this.element.outlayerGUID = id; // expando\n instances[ id ] = this; // associate via id\n\n // kick it off\n this._create();\n\n var isInitLayout = this._getOption('initLayout');\n if ( isInitLayout ) {\n this.layout();\n }\n}\n\n// settings are for internal use only\nOutlayer.namespace = 'outlayer';\nOutlayer.Item = Item;\n\n// default options\nOutlayer.defaults = {\n containerStyle: {\n position: 'relative'\n },\n initLayout: true,\n originLeft: true,\n originTop: true,\n resize: true,\n resizeContainer: true,\n // item options\n transitionDuration: '0.4s',\n hiddenStyle: {\n opacity: 0,\n transform: 'scale(0.001)'\n },\n visibleStyle: {\n opacity: 1,\n transform: 'scale(1)'\n }\n};\n\nvar proto = Outlayer.prototype;\n// inherit EvEmitter\nutils.extend( proto, EvEmitter.prototype );\n\n/**\n * set options\n * @param {Object} opts\n */\nproto.option = function( opts ) {\n utils.extend( this.options, opts );\n};\n\n/**\n * get backwards compatible option value, check old name\n */\nproto._getOption = function( option ) {\n var oldOption = this.constructor.compatOptions[ option ];\n return oldOption && this.options[ oldOption ] !== undefined ?\n this.options[ oldOption ] : this.options[ option ];\n};\n\nOutlayer.compatOptions = {\n // currentName: oldName\n initLayout: 'isInitLayout',\n horizontal: 'isHorizontal',\n layoutInstant: 'isLayoutInstant',\n originLeft: 'isOriginLeft',\n originTop: 'isOriginTop',\n resize: 'isResizeBound',\n resizeContainer: 'isResizingContainer'\n};\n\nproto._create = function() {\n // get items from children\n this.reloadItems();\n // elements that affect layout, but are not laid out\n this.stamps = [];\n this.stamp( this.options.stamp );\n // set container style\n utils.extend( this.element.style, this.options.containerStyle );\n\n // bind resize method\n var canBindResize = this._getOption('resize');\n if ( canBindResize ) {\n this.bindResize();\n }\n};\n\n// goes through all children again and gets bricks in proper order\nproto.reloadItems = function() {\n // collection of item elements\n this.items = this._itemize( this.element.children );\n};\n\n\n/**\n * turn elements into Outlayer.Items to be used in layout\n * @param {Array or NodeList or HTMLElement} elems\n * @returns {Array} items - collection of new Outlayer Items\n */\nproto._itemize = function( elems ) {\n\n var itemElems = this._filterFindItemElements( elems );\n var Item = this.constructor.Item;\n\n // create new Outlayer Items for collection\n var items = [];\n for ( var i=0; i < itemElems.length; i++ ) {\n var elem = itemElems[i];\n var item = new Item( elem, this );\n items.push( item );\n }\n\n return items;\n};\n\n/**\n * get item elements to be used in layout\n * @param {Array or NodeList or HTMLElement} elems\n * @returns {Array} items - item elements\n */\nproto._filterFindItemElements = function( elems ) {\n return utils.filterFindElements( elems, this.options.itemSelector );\n};\n\n/**\n * getter method for getting item elements\n * @returns {Array} elems - collection of item elements\n */\nproto.getItemElements = function() {\n return this.items.map( function( item ) {\n return item.element;\n });\n};\n\n// ----- init & layout ----- //\n\n/**\n * lays out all items\n */\nproto.layout = function() {\n this._resetLayout();\n this._manageStamps();\n\n // don't animate first layout\n var layoutInstant = this._getOption('layoutInstant');\n var isInstant = layoutInstant !== undefined ?\n layoutInstant : !this._isLayoutInited;\n this.layoutItems( this.items, isInstant );\n\n // flag for initalized\n this._isLayoutInited = true;\n};\n\n// _init is alias for layout\nproto._init = proto.layout;\n\n/**\n * logic before any new layout\n */\nproto._resetLayout = function() {\n this.getSize();\n};\n\n\nproto.getSize = function() {\n this.size = getSize( this.element );\n};\n\n/**\n * get measurement from option, for columnWidth, rowHeight, gutter\n * if option is String -> get element from selector string, & get size of element\n * if option is Element -> get size of element\n * else use option as a number\n *\n * @param {String} measurement\n * @param {String} size - width or height\n * @private\n */\nproto._getMeasurement = function( measurement, size ) {\n var option = this.options[ measurement ];\n var elem;\n if ( !option ) {\n // default to 0\n this[ measurement ] = 0;\n } else {\n // use option as an element\n if ( typeof option == 'string' ) {\n elem = this.element.querySelector( option );\n } else if ( option instanceof HTMLElement ) {\n elem = option;\n }\n // use size of element, if element\n this[ measurement ] = elem ? getSize( elem )[ size ] : option;\n }\n};\n\n/**\n * layout a collection of item elements\n * @api public\n */\nproto.layoutItems = function( items, isInstant ) {\n items = this._getItemsForLayout( items );\n\n this._layoutItems( items, isInstant );\n\n this._postLayout();\n};\n\n/**\n * get the items to be laid out\n * you may want to skip over some items\n * @param {Array} items\n * @returns {Array} items\n */\nproto._getItemsForLayout = function( items ) {\n return items.filter( function( item ) {\n return !item.isIgnored;\n });\n};\n\n/**\n * layout items\n * @param {Array} items\n * @param {Boolean} isInstant\n */\nproto._layoutItems = function( items, isInstant ) {\n this._emitCompleteOnItems( 'layout', items );\n\n if ( !items || !items.length ) {\n // no items, emit event with empty array\n return;\n }\n\n var queue = [];\n\n items.forEach( function( item ) {\n // get x/y object from method\n var position = this._getItemLayoutPosition( item );\n // enqueue\n position.item = item;\n position.isInstant = isInstant || item.isLayoutInstant;\n queue.push( position );\n }, this );\n\n this._processLayoutQueue( queue );\n};\n\n/**\n * get item layout position\n * @param {Outlayer.Item} item\n * @returns {Object} x and y position\n */\nproto._getItemLayoutPosition = function( /* item */ ) {\n return {\n x: 0,\n y: 0\n };\n};\n\n/**\n * iterate over array and position each item\n * Reason being - separating this logic prevents 'layout invalidation'\n * thx @paul_irish\n * @param {Array} queue\n */\nproto._processLayoutQueue = function( queue ) {\n this.updateStagger();\n queue.forEach( function( obj, i ) {\n this._positionItem( obj.item, obj.x, obj.y, obj.isInstant, i );\n }, this );\n};\n\n// set stagger from option in milliseconds number\nproto.updateStagger = function() {\n var stagger = this.options.stagger;\n if ( stagger === null || stagger === undefined ) {\n this.stagger = 0;\n return;\n }\n this.stagger = getMilliseconds( stagger );\n return this.stagger;\n};\n\n/**\n * Sets position of item in DOM\n * @param {Outlayer.Item} item\n * @param {Number} x - horizontal position\n * @param {Number} y - vertical position\n * @param {Boolean} isInstant - disables transitions\n */\nproto._positionItem = function( item, x, y, isInstant, i ) {\n if ( isInstant ) {\n // if not transition, just set CSS\n item.goTo( x, y );\n } else {\n item.stagger( i * this.stagger );\n item.moveTo( x, y );\n }\n};\n\n/**\n * Any logic you want to do after each layout,\n * i.e. size the container\n */\nproto._postLayout = function() {\n this.resizeContainer();\n};\n\nproto.resizeContainer = function() {\n var isResizingContainer = this._getOption('resizeContainer');\n if ( !isResizingContainer ) {\n return;\n }\n var size = this._getContainerSize();\n if ( size ) {\n this._setContainerMeasure( size.width, true );\n this._setContainerMeasure( size.height, false );\n }\n};\n\n/**\n * Sets width or height of container if returned\n * @returns {Object} size\n * @param {Number} width\n * @param {Number} height\n */\nproto._getContainerSize = noop;\n\n/**\n * @param {Number} measure - size of width or height\n * @param {Boolean} isWidth\n */\nproto._setContainerMeasure = function( measure, isWidth ) {\n if ( measure === undefined ) {\n return;\n }\n\n var elemSize = this.size;\n // add padding and border width if border box\n if ( elemSize.isBorderBox ) {\n measure += isWidth ? elemSize.paddingLeft + elemSize.paddingRight +\n elemSize.borderLeftWidth + elemSize.borderRightWidth :\n elemSize.paddingBottom + elemSize.paddingTop +\n elemSize.borderTopWidth + elemSize.borderBottomWidth;\n }\n\n measure = Math.max( measure, 0 );\n this.element.style[ isWidth ? 'width' : 'height' ] = measure + 'px';\n};\n\n/**\n * emit eventComplete on a collection of items events\n * @param {String} eventName\n * @param {Array} items - Outlayer.Items\n */\nproto._emitCompleteOnItems = function( eventName, items ) {\n var _this = this;\n function onComplete() {\n _this.dispatchEvent( eventName + 'Complete', null, [ items ] );\n }\n\n var count = items.length;\n if ( !items || !count ) {\n onComplete();\n return;\n }\n\n var doneCount = 0;\n function tick() {\n doneCount++;\n if ( doneCount == count ) {\n onComplete();\n }\n }\n\n // bind callback\n items.forEach( function( item ) {\n item.once( eventName, tick );\n });\n};\n\n/**\n * emits events via EvEmitter and jQuery events\n * @param {String} type - name of event\n * @param {Event} event - original event\n * @param {Array} args - extra arguments\n */\nproto.dispatchEvent = function( type, event, args ) {\n // add original event to arguments\n var emitArgs = event ? [ event ].concat( args ) : args;\n this.emitEvent( type, emitArgs );\n\n if ( jQuery ) {\n // set this.$element\n this.$element = this.$element || jQuery( this.element );\n if ( event ) {\n // create jQuery event\n var $event = jQuery.Event( event );\n $event.type = type;\n this.$element.trigger( $event, args );\n } else {\n // just trigger with type if no event available\n this.$element.trigger( type, args );\n }\n }\n};\n\n// -------------------------- ignore & stamps -------------------------- //\n\n\n/**\n * keep item in collection, but do not lay it out\n * ignored items do not get skipped in layout\n * @param {Element} elem\n */\nproto.ignore = function( elem ) {\n var item = this.getItem( elem );\n if ( item ) {\n item.isIgnored = true;\n }\n};\n\n/**\n * return item to layout collection\n * @param {Element} elem\n */\nproto.unignore = function( elem ) {\n var item = this.getItem( elem );\n if ( item ) {\n delete item.isIgnored;\n }\n};\n\n/**\n * adds elements to stamps\n * @param {NodeList, Array, Element, or String} elems\n */\nproto.stamp = function( elems ) {\n elems = this._find( elems );\n if ( !elems ) {\n return;\n }\n\n this.stamps = this.stamps.concat( elems );\n // ignore\n elems.forEach( this.ignore, this );\n};\n\n/**\n * removes elements to stamps\n * @param {NodeList, Array, or Element} elems\n */\nproto.unstamp = function( elems ) {\n elems = this._find( elems );\n if ( !elems ){\n return;\n }\n\n elems.forEach( function( elem ) {\n // filter out removed stamp elements\n utils.removeFrom( this.stamps, elem );\n this.unignore( elem );\n }, this );\n};\n\n/**\n * finds child elements\n * @param {NodeList, Array, Element, or String} elems\n * @returns {Array} elems\n */\nproto._find = function( elems ) {\n if ( !elems ) {\n return;\n }\n // if string, use argument as selector string\n if ( typeof elems == 'string' ) {\n elems = this.element.querySelectorAll( elems );\n }\n elems = utils.makeArray( elems );\n return elems;\n};\n\nproto._manageStamps = function() {\n if ( !this.stamps || !this.stamps.length ) {\n return;\n }\n\n this._getBoundingRect();\n\n this.stamps.forEach( this._manageStamp, this );\n};\n\n// update boundingLeft / Top\nproto._getBoundingRect = function() {\n // get bounding rect for container element\n var boundingRect = this.element.getBoundingClientRect();\n var size = this.size;\n this._boundingRect = {\n left: boundingRect.left + size.paddingLeft + size.borderLeftWidth,\n top: boundingRect.top + size.paddingTop + size.borderTopWidth,\n right: boundingRect.right - ( size.paddingRight + size.borderRightWidth ),\n bottom: boundingRect.bottom - ( size.paddingBottom + size.borderBottomWidth )\n };\n};\n\n/**\n * @param {Element} stamp\n **/\nproto._manageStamp = noop;\n\n/**\n * get x/y position of element relative to container element\n * @param {Element} elem\n * @returns {Object} offset - has left, top, right, bottom\n */\nproto._getElementOffset = function( elem ) {\n var boundingRect = elem.getBoundingClientRect();\n var thisRect = this._boundingRect;\n var size = getSize( elem );\n var offset = {\n left: boundingRect.left - thisRect.left - size.marginLeft,\n top: boundingRect.top - thisRect.top - size.marginTop,\n right: thisRect.right - boundingRect.right - size.marginRight,\n bottom: thisRect.bottom - boundingRect.bottom - size.marginBottom\n };\n return offset;\n};\n\n// -------------------------- resize -------------------------- //\n\n// enable event handlers for listeners\n// i.e. resize -> onresize\nproto.handleEvent = utils.handleEvent;\n\n/**\n * Bind layout to window resizing\n */\nproto.bindResize = function() {\n window.addEventListener( 'resize', this );\n this.isResizeBound = true;\n};\n\n/**\n * Unbind layout to window resizing\n */\nproto.unbindResize = function() {\n window.removeEventListener( 'resize', this );\n this.isResizeBound = false;\n};\n\nproto.onresize = function() {\n this.resize();\n};\n\nutils.debounceMethod( Outlayer, 'onresize', 100 );\n\nproto.resize = function() {\n // don't trigger if size did not change\n // or if resize was unbound. See #9\n if ( !this.isResizeBound || !this.needsResizeLayout() ) {\n return;\n }\n\n this.layout();\n};\n\n/**\n * check if layout is needed post layout\n * @returns Boolean\n */\nproto.needsResizeLayout = function() {\n var size = getSize( this.element );\n // check that this.size and size are there\n // IE8 triggers resize on body size change, so they might not be\n var hasSizes = this.size && size;\n return hasSizes && size.innerWidth !== this.size.innerWidth;\n};\n\n// -------------------------- methods -------------------------- //\n\n/**\n * add items to Outlayer instance\n * @param {Array or NodeList or Element} elems\n * @returns {Array} items - Outlayer.Items\n **/\nproto.addItems = function( elems ) {\n var items = this._itemize( elems );\n // add items to collection\n if ( items.length ) {\n this.items = this.items.concat( items );\n }\n return items;\n};\n\n/**\n * Layout newly-appended item elements\n * @param {Array or NodeList or Element} elems\n */\nproto.appended = function( elems ) {\n var items = this.addItems( elems );\n if ( !items.length ) {\n return;\n }\n // layout and reveal just the new items\n this.layoutItems( items, true );\n this.reveal( items );\n};\n\n/**\n * Layout prepended elements\n * @param {Array or NodeList or Element} elems\n */\nproto.prepended = function( elems ) {\n var items = this._itemize( elems );\n if ( !items.length ) {\n return;\n }\n // add items to beginning of collection\n var previousItems = this.items.slice(0);\n this.items = items.concat( previousItems );\n // start new layout\n this._resetLayout();\n this._manageStamps();\n // layout new stuff without transition\n this.layoutItems( items, true );\n this.reveal( items );\n // layout previous items\n this.layoutItems( previousItems );\n};\n\n/**\n * reveal a collection of items\n * @param {Array of Outlayer.Items} items\n */\nproto.reveal = function( items ) {\n this._emitCompleteOnItems( 'reveal', items );\n if ( !items || !items.length ) {\n return;\n }\n var stagger = this.updateStagger();\n items.forEach( function( item, i ) {\n item.stagger( i * stagger );\n item.reveal();\n });\n};\n\n/**\n * hide a collection of items\n * @param {Array of Outlayer.Items} items\n */\nproto.hide = function( items ) {\n this._emitCompleteOnItems( 'hide', items );\n if ( !items || !items.length ) {\n return;\n }\n var stagger = this.updateStagger();\n items.forEach( function( item, i ) {\n item.stagger( i * stagger );\n item.hide();\n });\n};\n\n/**\n * reveal item elements\n * @param {Array}, {Element}, {NodeList} items\n */\nproto.revealItemElements = function( elems ) {\n var items = this.getItems( elems );\n this.reveal( items );\n};\n\n/**\n * hide item elements\n * @param {Array}, {Element}, {NodeList} items\n */\nproto.hideItemElements = function( elems ) {\n var items = this.getItems( elems );\n this.hide( items );\n};\n\n/**\n * get Outlayer.Item, given an Element\n * @param {Element} elem\n * @param {Function} callback\n * @returns {Outlayer.Item} item\n */\nproto.getItem = function( elem ) {\n // loop through items to get the one that matches\n for ( var i=0; i < this.items.length; i++ ) {\n var item = this.items[i];\n if ( item.element == elem ) {\n // return item\n return item;\n }\n }\n};\n\n/**\n * get collection of Outlayer.Items, given Elements\n * @param {Array} elems\n * @returns {Array} items - Outlayer.Items\n */\nproto.getItems = function( elems ) {\n elems = utils.makeArray( elems );\n var items = [];\n elems.forEach( function( elem ) {\n var item = this.getItem( elem );\n if ( item ) {\n items.push( item );\n }\n }, this );\n\n return items;\n};\n\n/**\n * remove element(s) from instance and DOM\n * @param {Array or NodeList or Element} elems\n */\nproto.remove = function( elems ) {\n var removeItems = this.getItems( elems );\n\n this._emitCompleteOnItems( 'remove', removeItems );\n\n // bail if no items to remove\n if ( !removeItems || !removeItems.length ) {\n return;\n }\n\n removeItems.forEach( function( item ) {\n item.remove();\n // remove item from collection\n utils.removeFrom( this.items, item );\n }, this );\n};\n\n// ----- destroy ----- //\n\n// remove and disable Outlayer instance\nproto.destroy = function() {\n // clean up dynamic styles\n var style = this.element.style;\n style.height = '';\n style.position = '';\n style.width = '';\n // destroy items\n this.items.forEach( function( item ) {\n item.destroy();\n });\n\n this.unbindResize();\n\n var id = this.element.outlayerGUID;\n delete instances[ id ]; // remove reference to instance by id\n delete this.element.outlayerGUID;\n // remove data for jQuery\n if ( jQuery ) {\n jQuery.removeData( this.element, this.constructor.namespace );\n }\n\n};\n\n// -------------------------- data -------------------------- //\n\n/**\n * get Outlayer instance from element\n * @param {Element} elem\n * @returns {Outlayer}\n */\nOutlayer.data = function( elem ) {\n elem = utils.getQueryElement( elem );\n var id = elem && elem.outlayerGUID;\n return id && instances[ id ];\n};\n\n\n// -------------------------- create Outlayer class -------------------------- //\n\n/**\n * create a layout class\n * @param {String} namespace\n */\nOutlayer.create = function( namespace, options ) {\n // sub-class Outlayer\n var Layout = subclass( Outlayer );\n // apply new options and compatOptions\n Layout.defaults = utils.extend( {}, Outlayer.defaults );\n utils.extend( Layout.defaults, options );\n Layout.compatOptions = utils.extend( {}, Outlayer.compatOptions );\n\n Layout.namespace = namespace;\n\n Layout.data = Outlayer.data;\n\n // sub-class Item\n Layout.Item = subclass( Item );\n\n // -------------------------- declarative -------------------------- //\n\n utils.htmlInit( Layout, namespace );\n\n // -------------------------- jQuery bridge -------------------------- //\n\n // make into jQuery plugin\n if ( jQuery && jQuery.bridget ) {\n jQuery.bridget( namespace, Layout );\n }\n\n return Layout;\n};\n\nfunction subclass( Parent ) {\n function SubClass() {\n Parent.apply( this, arguments );\n }\n\n SubClass.prototype = Object.create( Parent.prototype );\n SubClass.prototype.constructor = SubClass;\n\n return SubClass;\n}\n\n// ----- helpers ----- //\n\n// how many milliseconds are in each unit\nvar msUnits = {\n ms: 1,\n s: 1000\n};\n\n// munge time-like parameter into millisecond number\n// '0.4s' -> 40\nfunction getMilliseconds( time ) {\n if ( typeof time == 'number' ) {\n return time;\n }\n var matches = time.match( /(^\\d*\\.?\\d*)(\\w*)/ );\n var num = matches && matches[1];\n var unit = matches && matches[2];\n if ( !num.length ) {\n return 0;\n }\n num = parseFloat( num );\n var mult = msUnits[ unit ] || 1;\n return num * mult;\n}\n\n// ----- fin ----- //\n\n// back in global\nOutlayer.Item = Item;\n\nexport default Outlayer;\n","import getSize from \"./getSize\";\nimport Outlayer from \"./outlayer\";\n\n// create an Outlayer layout class\nvar Masonry = Outlayer.create('masonry');\n// isFitWidth -> fitWidth\nMasonry.compatOptions.fitWidth = 'isFitWidth';\n\nvar proto = Masonry.prototype;\n\nproto._resetLayout = function() {\n this.getSize();\n this._getMeasurement( 'columnWidth', 'outerWidth' );\n this._getMeasurement( 'gutter', 'outerWidth' );\n this.measureColumns();\n\n // reset column Y\n this.colYs = [];\n for ( var i=0; i < this.cols; i++ ) {\n this.colYs.push( 0 );\n }\n\n this.maxY = 0;\n this.horizontalColIndex = 0;\n};\n\nproto.measureColumns = function() {\n this.getContainerWidth();\n // if columnWidth is 0, default to outerWidth of first item\n if ( !this.columnWidth ) {\n var firstItem = this.items[0];\n var firstItemElem = firstItem && firstItem.element;\n // columnWidth fall back to item of first element\n this.columnWidth = firstItemElem && getSize( firstItemElem ).outerWidth ||\n // if first elem has no width, default to size of container\n this.containerWidth;\n }\n\n var columnWidth = this.columnWidth += this.gutter;\n\n // calculate columns\n var containerWidth = this.containerWidth + this.gutter;\n var cols = containerWidth / columnWidth;\n // fix rounding errors, typically with gutters\n var excess = columnWidth - containerWidth % columnWidth;\n // if overshoot is less than a pixel, round up, otherwise floor it\n var mathMethod = excess && excess < 1 ? 'round' : 'floor';\n cols = Math[ mathMethod ]( cols );\n this.cols = Math.max( cols, 1 );\n};\n\nproto.getContainerWidth = function() {\n // container is parent if fit width\n var isFitWidth = this._getOption('fitWidth');\n var container = isFitWidth ? this.element.parentNode : this.element;\n // check that this.size and size are there\n // IE8 triggers resize on body size change, so they might not be\n var size = getSize( container );\n this.containerWidth = size && size.innerWidth;\n};\n\nproto._getItemLayoutPosition = function( item ) {\n item.getSize();\n // how many columns does this brick span\n var remainder = item.size.outerWidth % this.columnWidth;\n var mathMethod = remainder && remainder < 1 ? 'round' : 'ceil';\n // round if off by 1 pixel, otherwise use ceil\n var colSpan = Math[ mathMethod ]( item.size.outerWidth / this.columnWidth );\n colSpan = Math.min( colSpan, this.cols );\n // use horizontal or top column position\n var colPosMethod = this.options.horizontalOrder ?\n '_getHorizontalColPosition' : '_getTopColPosition';\n var colPosition = this[ colPosMethod ]( colSpan, item );\n // position the brick\n var position = {\n x: this.columnWidth * colPosition.col,\n y: colPosition.y\n };\n // apply setHeight to necessary columns\n var setHeight = colPosition.y + item.size.outerHeight;\n var setMax = colSpan + colPosition.col;\n for ( var i = colPosition.col; i < setMax; i++ ) {\n this.colYs[i] = setHeight;\n }\n\n return position;\n};\n\nproto._getTopColPosition = function( colSpan ) {\n var colGroup = this._getTopColGroup( colSpan );\n // get the minimum Y value from the columns\n var minimumY = Math.min.apply( Math, colGroup );\n\n return {\n col: colGroup.indexOf( minimumY ),\n y: minimumY,\n };\n};\n\n/**\n * @param {Number} colSpan - number of columns the element spans\n * @returns {Array} colGroup\n */\nproto._getTopColGroup = function( colSpan ) {\n if ( colSpan < 2 ) {\n // if brick spans only one column, use all the column Ys\n return this.colYs;\n }\n\n var colGroup = [];\n // how many different places could this brick fit horizontally\n var groupCount = this.cols + 1 - colSpan;\n // for each group potential horizontal position\n for ( var i = 0; i < groupCount; i++ ) {\n colGroup[i] = this._getColGroupY( i, colSpan );\n }\n return colGroup;\n};\n\nproto._getColGroupY = function( col, colSpan ) {\n if ( colSpan < 2 ) {\n return this.colYs[ col ];\n }\n // make an array of colY values for that one group\n var groupColYs = this.colYs.slice( col, col + colSpan );\n // and get the max value of the array\n return Math.max.apply( Math, groupColYs );\n};\n\n// get column position based on horizontal index. #873\nproto._getHorizontalColPosition = function( colSpan, item ) {\n var col = this.horizontalColIndex % this.cols;\n var isOver = colSpan > 1 && col + colSpan > this.cols;\n // shift to next row if item can't fit on current row\n col = isOver ? 0 : col;\n // don't let zero-size items take up space\n var hasSize = item.size.outerWidth && item.size.outerHeight;\n this.horizontalColIndex = hasSize ? col + colSpan : this.horizontalColIndex;\n\n return {\n col: col,\n y: this._getColGroupY( col, colSpan ),\n };\n};\n\nproto._manageStamp = function( stamp ) {\n var stampSize = getSize( stamp );\n var offset = this._getElementOffset( stamp );\n // get the columns that this stamp affects\n var isOriginLeft = this._getOption('originLeft');\n var firstX = isOriginLeft ? offset.left : offset.right;\n var lastX = firstX + stampSize.outerWidth;\n var firstCol = Math.floor( firstX / this.columnWidth );\n firstCol = Math.max( 0, firstCol );\n var lastCol = Math.floor( lastX / this.columnWidth );\n // lastCol should not go over if multiple of columnWidth #425\n lastCol -= lastX % this.columnWidth ? 0 : 1;\n lastCol = Math.min( this.cols - 1, lastCol );\n // set colYs to bottom of the stamp\n\n var isOriginTop = this._getOption('originTop');\n var stampMaxY = ( isOriginTop ? offset.top : offset.bottom ) +\n stampSize.outerHeight;\n for ( var i = firstCol; i <= lastCol; i++ ) {\n this.colYs[i] = Math.max( stampMaxY, this.colYs[i] );\n }\n};\n\nproto._getContainerSize = function() {\n this.maxY = Math.max.apply( Math, this.colYs );\n var size = {\n height: this.maxY\n };\n\n if ( this._getOption('fitWidth') ) {\n size.width = this._getContainerFitWidth();\n }\n\n return size;\n};\n\nproto._getContainerFitWidth = function() {\n var unusedCols = 0;\n // count unused columns\n var i = this.cols;\n while ( --i ) {\n if ( this.colYs[i] !== 0 ) {\n break;\n }\n unusedCols++;\n }\n // fit container to columns that have been used\n return ( this.cols - unusedCols ) * this.columnWidth - this.gutter;\n};\n\nproto.needsResizeLayout = function() {\n var previousWidth = this.containerWidth;\n this.getContainerWidth();\n return previousWidth != this.containerWidth;\n};\n\nexport default Masonry;\n","import Masonry from \"./masonry/masonry\";\n\nwindow.addGalleryHandlers = function () {\n $(\".gallery-item > a\").on(\"click\", function(event){\n event.preventDefault();\n $(\".gallery-item > a.gallery-item-active\").removeClass(\"gallery-item-active\");\n $(event.target).parent(\"a\").addClass(\"gallery-item-active\");\n\n $(\".reveal\").on(\"open.zf.reveal\", function(){\n $(window).trigger('resize');\n });\n $(\".reveal\").on(\"closeme.zf.reveal\", function(){\n let link = $(\".gallery-item > a.gallery-item-active\");\n let id = link.data(\"id\");\n let chosenSlide = $(\"[data-target=\"+id+\"]\");\n let index = chosenSlide.index(\".orbit-container > li\");\n $('.orbit').foundation('changeSlide', true, chosenSlide, index);\n $(document).on(\"slidechange.zf.orbit\", function (){\n $(window).trigger('resize');\n });\n });\n });\n}\n\n$(() => {\n $(\".gallery img\").one(\"load\", function() {\n $('.gallery.image').masonry({\n itemSelector: '.gallery-item',\n });\n addGalleryHandlers();\n }).each(function() {\n if(this.complete) {\n $(this).trigger('load'); // For jQuery >= 3.0\n }\n });\n\n $(document).on('open.zf.reveal', '[data-reveal]', function () {\n $(window).trigger('resize');\n });\n\n});","import \"src/decidim/gallery/gallery\"\n\nrequire.context(\"../images\", true)\n"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","__webpack_module_cache__","moduleId","cachedModule","undefined","__webpack_modules__","obj","prop","prototype","hasOwnProperty","call","p","getStyleSize","value","num","parseFloat","indexOf","isNaN","logError","console","message","error","measurements","measurementsLength","length","getStyle","elem","style","getComputedStyle","isBoxSizeOuter","isSetup","getSize","div","document","createElement","width","padding","borderStyle","borderWidth","boxSizing","body","documentElement","appendChild","Math","round","removeChild","setup","querySelector","_typeof","nodeType","display","size","height","innerWidth","innerHeight","outerWidth","outerHeight","i","getZeroSize","offsetWidth","offsetHeight","isBorderBox","measurement","paddingWidth","paddingLeft","paddingRight","paddingHeight","paddingTop","paddingBottom","marginWidth","marginLeft","marginRight","marginHeight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderHeight","borderTopWidth","borderBottomWidth","isBorderBoxSizeOuter","styleWidth","styleHeight","arraySlice","Array","slice","window","jQueryBridget","namespace","PluginClass","$","jQuery","option","opts","isPlainObject","this","options","extend","fn","arg0","$elems","methodName","args","returnValue","pluginMethodStr","each","instance","data","method","charAt","apply","methodCall","arguments","_init","updateJQuery","bridget","EvEmitter","proto","on","eventName","listener","events","_events","listeners","push","once","onceEvents","_onceEvents","off","index","splice","emitEvent","onceListeners","allOff","docElemStyle","transitionProperty","transition","transformProperty","transform","transitionEndEvent","WebkitTransition","vendorProperties","transitionDuration","transitionDelay","Item","element","layout","position","x","y","_create","create","constructor","_transn","ingProperties","clean","onEnd","css","handleEvent","event","type","elemStyle","getPosition","isOriginLeft","_getOption","isOriginTop","xValue","yValue","layoutSize","layoutPosition","xPadding","xProperty","xResetProperty","getXValue","yPadding","yProperty","yResetProperty","getYValue","isHorizontal","percentPosition","_transitionTo","curX","curY","didNotMove","setPosition","isTransitioning","transX","transY","transitionStyle","getTranslate","to","onTransitionEnd","isCleaning","goTo","moveTo","_nonTransition","_removeStyles","_transition","from","enableTransition","transitionProps","replace","$1","toLowerCase","duration","staggerDelay","addEventListener","onwebkitTransitionEnd","ontransitionend","onotransitionend","dashedVendorProperties","target","propertyName","isEmptyObj","disableTransition","removeTransitionStyles","removeEventListener","cleanStyle","cleanTransitionStyle","stagger","delay","removeElem","parentNode","remove","hide","reveal","isHidden","getHideRevealTransitionEndProperty","onRevealTransitionEnd","hiddenStyle","visibleStyle","styleProperty","optionStyle","opacity","onHideTransitionEnd","destroy","left","right","top","bottom","matchesMethod","ElemProto","Element","matches","matchesSelector","prefixes","selector","utils","a","b","makeArray","isArray","removeFrom","ary","getParent","getQueryElement","filterFindElements","elems","ffElems","forEach","HTMLElement","childElems","querySelectorAll","debounceMethod","_class","threshold","timeoutName","timeout","clearTimeout","_this","setTimeout","docReady","callback","readyState","toDashed","str","match","$2","htmlInit","WidgetClass","dashedNamespace","dataAttr","dataAttrElems","jsDashElems","concat","dataOptionsAttr","attr","getAttribute","JSON","parse","className","GUID","instances","noop","Outlayer","queryElement","$element","defaults","outlayerGUID","containerStyle","initLayout","originLeft","originTop","resize","resizeContainer","subclass","Parent","SubClass","oldOption","compatOptions","horizontal","layoutInstant","reloadItems","stamps","stamp","bindResize","items","_itemize","children","itemElems","_filterFindItemElements","item","itemSelector","getItemElements","_resetLayout","_manageStamps","isInstant","_isLayoutInited","layoutItems","_getMeasurement","_getItemsForLayout","_layoutItems","_postLayout","filter","isIgnored","_emitCompleteOnItems","queue","_getItemLayoutPosition","isLayoutInstant","_processLayoutQueue","updateStagger","_positionItem","time","unit","mult","msUnits","getMilliseconds","_getContainerSize","_setContainerMeasure","measure","isWidth","elemSize","max","onComplete","dispatchEvent","count","doneCount","tick","emitArgs","$event","Event","trigger","ignore","getItem","unignore","_find","unstamp","_getBoundingRect","_manageStamp","boundingRect","getBoundingClientRect","_boundingRect","_getElementOffset","thisRect","isResizeBound","unbindResize","onresize","needsResizeLayout","addItems","appended","prepended","previousItems","revealItemElements","getItems","hideItemElements","removeItems","removeData","Layout","ms","s","Masonry","fitWidth","measureColumns","colYs","cols","maxY","horizontalColIndex","getContainerWidth","columnWidth","firstItem","firstItemElem","containerWidth","gutter","excess","container","remainder","colSpan","min","colPosition","horizontalOrder","col","setHeight","setMax","_getTopColPosition","colGroup","_getTopColGroup","minimumY","groupCount","_getColGroupY","groupColYs","_getHorizontalColPosition","hasSize","stampSize","offset","firstX","lastX","firstCol","floor","lastCol","stampMaxY","_getContainerFitWidth","unusedCols","previousWidth","addGalleryHandlers","preventDefault","removeClass","parent","addClass","chosenSlide","foundation","one","masonry","complete","require"],"sourceRoot":""}