{"version":3,"file":"components/chunks/8208.74c43b11f3591c6f2f7c.js","mappings":"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","sources":["webpack://oticon/./node_modules/jquery-bridget/jquery-bridget.js","webpack://oticon/./node_modules/ev-emitter/ev-emitter.js","webpack://oticon/./node_modules/outlayer/outlayer.js","webpack://oticon/./node_modules/desandro-matches-selector/matches-selector.js","webpack://oticon/./node_modules/masonry-layout/masonry.js","webpack://oticon/./node_modules/get-size/get-size.js","webpack://oticon/./node_modules/outlayer/item.js","webpack://oticon/./node_modules/fizzy-ui-utils/utils.js"],"sourcesContent":["/**\n * Bridget makes jQuery widgets\n * v2.0.1\n * MIT license\n */\n\n/* jshint browser: true, strict: true, undef: true, unused: true */\n\n( function( window, factory ) {\n // universal module definition\n /*jshint strict: false */ /* globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [ 'jquery' ], function( jQuery ) {\n return factory( window, jQuery );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('jquery')\n );\n } else {\n // browser global\n window.jQueryBridget = factory(\n window,\n window.jQuery\n );\n }\n\n}( window, function factory( window, jQuery ) {\n'use strict';\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\nreturn jQueryBridget;\n\n}));\n","/**\n * EvEmitter v1.1.0\n * Lil' event emitter\n * MIT License\n */\n\n/* jshint unused: true, undef: true, strict: true */\n\n( function( global, factory ) {\n // universal module definition\n /* jshint strict: false */ /* globals define, module, window */\n if ( typeof define == 'function' && define.amd ) {\n // AMD - RequireJS\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS - Browserify, Webpack\n module.exports = factory();\n } else {\n // Browser globals\n global.EvEmitter = factory();\n }\n\n}( typeof window != 'undefined' ? window : this, function() {\n\n\"use strict\";\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\nreturn EvEmitter;\n\n}));\n","/*!\n * Outlayer v2.1.1\n * the brains and guts of a layout library\n * MIT license\n */\n\n( function( window, factory ) {\n 'use strict';\n // universal module definition\n /* jshint strict: false */ /* globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD - RequireJS\n define( [\n 'ev-emitter/ev-emitter',\n 'get-size/get-size',\n 'fizzy-ui-utils/utils',\n './item'\n ],\n function( EvEmitter, getSize, utils, Item ) {\n return factory( window, EvEmitter, getSize, utils, Item);\n }\n );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS - Browserify, Webpack\n module.exports = factory(\n window,\n require('ev-emitter'),\n require('get-size'),\n require('fizzy-ui-utils'),\n require('./item')\n );\n } else {\n // browser global\n window.Outlayer = factory(\n window,\n window.EvEmitter,\n window.getSize,\n window.fizzyUIUtils,\n window.Outlayer.Item\n );\n }\n\n}( window, function factory( window, EvEmitter, getSize, utils, Item ) {\n'use strict';\n\n// ----- vars ----- //\n\nvar console = window.console;\nvar jQuery = window.jQuery;\nvar noop = function() {};\n\n// -------------------------- Outlayer -------------------------- //\n\n// globally unique identifiers\nvar GUID = 0;\n// internal store of all Outlayer intances\nvar instances = {};\n\n\n/**\n * @param {Element, String} element\n * @param {Object} options\n * @constructor\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\nreturn Outlayer;\n\n}));\n","/**\n * matchesSelector v2.0.2\n * matchesSelector( element, '.selector' )\n * MIT license\n */\n\n/*jshint browser: true, strict: true, undef: true, unused: true */\n\n( function( window, factory ) {\n /*global define: false, module: false */\n 'use strict';\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.matchesSelector = factory();\n }\n\n}( window, function factory() {\n 'use strict';\n\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\n return function matchesSelector( elem, selector ) {\n return elem[ matchesMethod ]( selector );\n };\n\n}));\n","/*!\n * Masonry v4.2.2\n * Cascading grid layout library\n * https://masonry.desandro.com\n * MIT License\n * by David DeSandro\n */\n\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */ /*globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'outlayer/outlayer',\n 'get-size/get-size'\n ],\n factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('outlayer'),\n require('get-size')\n );\n } else {\n // browser global\n window.Masonry = factory(\n window.Outlayer,\n window.getSize\n );\n }\n\n}( window, function factory( Outlayer, getSize ) {\n\n'use strict';\n\n// -------------------------- masonryDefinition -------------------------- //\n\n // create an Outlayer layout class\n var Masonry = Outlayer.create('masonry');\n // isFitWidth -> fitWidth\n Masonry.compatOptions.fitWidth = 'isFitWidth';\n\n var proto = Masonry.prototype;\n\n proto._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\n proto.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\n proto.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\n proto._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\n proto._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 */\n proto._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\n proto._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\n proto._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\n proto._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\n proto._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\n proto._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\n proto.needsResizeLayout = function() {\n var previousWidth = this.containerWidth;\n this.getContainerWidth();\n return previousWidth != this.containerWidth;\n };\n\n return Masonry;\n\n}));\n","/*!\n * getSize v2.0.3\n * measure size of elements\n * MIT license\n */\n\n/* jshint browser: true, strict: true, undef: true, unused: true */\n/* globals console: false */\n\n( function( window, factory ) {\n /* jshint strict: false */ /* globals define, module */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.getSize = factory();\n }\n\n})( window, function factory() {\n'use strict';\n\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\nreturn getSize;\n\n});\n","/**\n * Outlayer Item\n */\n\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */ /* globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD - RequireJS\n define( [\n 'ev-emitter/ev-emitter',\n 'get-size/get-size'\n ],\n factory\n );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS - Browserify, Webpack\n module.exports = factory(\n require('ev-emitter'),\n require('get-size')\n );\n } else {\n // browser global\n window.Outlayer = {};\n window.Outlayer.Item = factory(\n window.EvEmitter,\n window.getSize\n );\n }\n\n}( window, function factory( EvEmitter, getSize ) {\n'use strict';\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\nreturn Item;\n\n}));\n","/**\n * Fizzy UI utils v2.0.7\n * MIT license\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true */\n\n( function( window, factory ) {\n // universal module definition\n /*jshint strict: false */ /*globals define, module, require */\n\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'desandro-matches-selector/matches-selector'\n ], function( matchesSelector ) {\n return factory( window, matchesSelector );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('desandro-matches-selector')\n );\n } else {\n // browser global\n window.fizzyUIUtils = factory(\n window,\n window.matchesSelector\n );\n }\n\n}( window, function factory( window, matchesSelector ) {\n\n'use strict';\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\n// ----- ----- //\n\nreturn utils;\n\n}));\n"],"names":["window","jQuery","arraySlice","Array","prototype","slice","console","logError","message","error","jQueryBridget","namespace","PluginClass","$","methodCall","$elems","methodName","args","returnValue","pluginMethodStr","each","i","elem","instance","data","method","charAt","value","apply","undefined","plainCall","options","option","_init","opts","isPlainObject","this","extend","fn","arg0","call","arguments","updateJQuery","bridget","factory","EvEmitter","proto","on","eventName","listener","events","_events","listeners","indexOf","push","once","onceEvents","_onceEvents","off","length","index","splice","emitEvent","onceListeners","allOff","getSize","utils","Item","noop","GUID","instances","Outlayer","element","queryElement","getQueryElement","$element","constructor","defaults","id","outlayerGUID","_create","_getOption","layout","containerStyle","position","initLayout","originLeft","originTop","resize","resizeContainer","transitionDuration","hiddenStyle","opacity","transform","visibleStyle","subclass","Parent","SubClass","Object","create","oldOption","compatOptions","horizontal","layoutInstant","reloadItems","stamps","stamp","style","bindResize","items","_itemize","children","elems","itemElems","_filterFindItemElements","item","filterFindElements","itemSelector","getItemElements","map","_resetLayout","_manageStamps","isInstant","_isLayoutInited","layoutItems","size","_getMeasurement","measurement","querySelector","HTMLElement","_getItemsForLayout","_layoutItems","_postLayout","filter","isIgnored","_emitCompleteOnItems","queue","forEach","_getItemLayoutPosition","isLayoutInstant","_processLayoutQueue","x","y","updateStagger","obj","_positionItem","stagger","getMilliseconds","goTo","moveTo","_getContainerSize","_setContainerMeasure","width","height","measure","isWidth","elemSize","isBorderBox","paddingLeft","paddingRight","borderLeftWidth","borderRightWidth","paddingBottom","paddingTop","borderTopWidth","borderBottomWidth","Math","max","_this","onComplete","dispatchEvent","count","doneCount","tick","type","event","emitArgs","concat","$event","Event","trigger","ignore","getItem","unignore","_find","unstamp","removeFrom","querySelectorAll","makeArray","_getBoundingRect","_manageStamp","boundingRect","getBoundingClientRect","_boundingRect","left","top","right","bottom","_getElementOffset","thisRect","marginLeft","marginTop","marginRight","marginBottom","handleEvent","addEventListener","isResizeBound","unbindResize","removeEventListener","onresize","debounceMethod","needsResizeLayout","innerWidth","addItems","appended","reveal","prepended","previousItems","hide","revealItemElements","getItems","hideItemElements","remove","removeItems","destroy","removeData","Layout","htmlInit","msUnits","ms","s","time","matches","match","num","unit","parseFloat","matchesMethod","ElemProto","Element","matchesSelector","prefixes","selector","Masonry","fitWidth","measureColumns","colYs","cols","maxY","horizontalColIndex","getContainerWidth","columnWidth","firstItem","firstItemElem","outerWidth","containerWidth","gutter","excess","container","parentNode","remainder","colSpan","min","colPosition","horizontalOrder","col","setHeight","outerHeight","setMax","_getTopColPosition","colGroup","_getTopColGroup","minimumY","groupCount","_getColGroupY","groupColYs","_getHorizontalColPosition","hasSize","stampSize","offset","firstX","lastX","firstCol","floor","lastCol","stampMaxY","_getContainerFitWidth","unusedCols","previousWidth","getStyleSize","isNaN","measurements","measurementsLength","getZeroSize","innerHeight","getStyle","getComputedStyle","isBoxSizeOuter","isSetup","setup","div","document","createElement","padding","borderStyle","borderWidth","boxSizing","body","documentElement","appendChild","round","removeChild","nodeType","display","offsetWidth","offsetHeight","paddingWidth","paddingHeight","marginWidth","marginHeight","borderHeight","isBorderBoxSizeOuter","styleWidth","styleHeight","isEmptyObj","prop","docElemStyle","transitionProperty","transition","transformProperty","transitionEndEvent","WebkitTransition","vendorProperties","transitionDelay","toDashedAll","str","replace","$1","toLowerCase","_transn","ingProperties","clean","onEnd","css","elemStyle","getPosition","isOriginLeft","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","_nonTransition","_removeStyles","_transition","from","enableTransition","transitionProps","duration","staggerDelay","onwebkitTransitionEnd","ontransitionend","onotransitionend","dashedVendorProperties","target","propertyName","disableTransition","removeTransitionStyles","cleanStyle","cleanTransitionStyle","delay","removeElem","isHidden","getHideRevealTransitionEndProperty","onRevealTransitionEnd","styleProperty","optionStyle","onHideTransitionEnd","a","b","isArray","ary","getParent","ffElems","childElems","_class","threshold","timeoutName","timeout","clearTimeout","setTimeout","docReady","callback","readyState","toDashed","$2","WidgetClass","dashedNamespace","dataAttr","dataAttrElems","jsDashElems","dataOptionsAttr","attr","getAttribute","JSON","parse","className"],"sourceRoot":""}