{"version":3,"sources":["jsdelivr-header.js","/npm/vue-masonry-component@1.1.31/dist/index.js"],"names":[],"mappings":"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","file":"/npm/vue-masonry-component@1.1.31/dist/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/vue-masonry-component@1.1.31/dist/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/*!\n * vue-masonry-component v1.1.3\n * (c) Guillaume Marchand\n * Released under the ISC License.\n */\n'use strict';\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar evEmitter = createCommonjsModule(function (module) {\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 (  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 : commonjsGlobal, function() {\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\nvar getSize = createCommonjsModule(function (module) {\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 (  module.exports ) {\n    // CommonJS\n    module.exports = factory();\n  } else {\n    // browser global\n    window.getSize = factory();\n  }\n\n})( window, function factory() {\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\nvar matchesSelector = createCommonjsModule(function (module) {\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  // universal module definition\n  if (  module.exports ) {\n    // CommonJS\n    module.exports = factory();\n  } else {\n    // browser global\n    window.matchesSelector = factory();\n  }\n\n}( window, function factory() {\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\nvar utils = createCommonjsModule(function (module) {\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 (  module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      window,\n      matchesSelector\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\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});\n\nvar item = createCommonjsModule(function (module) {\n/**\n * Outlayer Item\n */\n\n( function( window, factory ) {\n  // universal module definition\n  /* jshint strict: false */ /* globals define, module, require */\n  if (  module.exports ) {\n    // CommonJS - Browserify, Webpack\n    module.exports = factory(\n      evEmitter,\n      getSize\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\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\nvar outlayer = createCommonjsModule(function (module) {\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  // universal module definition\n  /* jshint strict: false */ /* globals define, module, require */\n  if (  module.exports ) {\n    // CommonJS - Browserify, Webpack\n    module.exports = factory(\n      window,\n      evEmitter,\n      getSize,\n      utils,\n      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\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\nvar masonry = createCommonjsModule(function (module) {\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 (  module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      outlayer,\n      getSize\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// -------------------------- 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\nvar imagesloaded = createCommonjsModule(function (module) {\n/*!\n * imagesLoaded v4.1.4\n * JavaScript is all like \"You images are done yet or what?\"\n * MIT License\n */\n\n( function( window, factory ) {  // universal module definition\n\n  /*global define: false, module: false, require: false */\n\n  if (  module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      window,\n      evEmitter\n    );\n  } else {\n    // browser global\n    window.imagesLoaded = factory(\n      window,\n      window.EvEmitter\n    );\n  }\n\n})( typeof window !== 'undefined' ? window : commonjsGlobal,\n\n// --------------------------  factory -------------------------- //\n\nfunction factory( window, EvEmitter ) {\n\nvar $ = window.jQuery;\nvar console = window.console;\n\n// -------------------------- helpers -------------------------- //\n\n// extend objects\nfunction extend( a, b ) {\n  for ( var prop in b ) {\n    a[ prop ] = b[ prop ];\n  }\n  return a;\n}\n\nvar arraySlice = Array.prototype.slice;\n\n// turn element or nodeList into an array\nfunction makeArray( obj ) {\n  if ( Array.isArray( obj ) ) {\n    // use object if already an array\n    return obj;\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// -------------------------- imagesLoaded -------------------------- //\n\n/**\n * @param {Array, Element, NodeList, String} elem\n * @param {Object or Function} options - if function, use as callback\n * @param {Function} onAlways - callback function\n */\nfunction ImagesLoaded( elem, options, onAlways ) {\n  // coerce ImagesLoaded() without new, to be new ImagesLoaded()\n  if ( !( this instanceof ImagesLoaded ) ) {\n    return new ImagesLoaded( elem, options, onAlways );\n  }\n  // use elem as selector string\n  var queryElem = elem;\n  if ( typeof elem == 'string' ) {\n    queryElem = document.querySelectorAll( elem );\n  }\n  // bail if bad element\n  if ( !queryElem ) {\n    console.error( 'Bad element for imagesLoaded ' + ( queryElem || elem ) );\n    return;\n  }\n\n  this.elements = makeArray( queryElem );\n  this.options = extend( {}, this.options );\n  // shift arguments if no options set\n  if ( typeof options == 'function' ) {\n    onAlways = options;\n  } else {\n    extend( this.options, options );\n  }\n\n  if ( onAlways ) {\n    this.on( 'always', onAlways );\n  }\n\n  this.getImages();\n\n  if ( $ ) {\n    // add jQuery Deferred object\n    this.jqDeferred = new $.Deferred();\n  }\n\n  // HACK check async to allow time to bind listeners\n  setTimeout( this.check.bind( this ) );\n}\n\nImagesLoaded.prototype = Object.create( EvEmitter.prototype );\n\nImagesLoaded.prototype.options = {};\n\nImagesLoaded.prototype.getImages = function() {\n  this.images = [];\n\n  // filter & find items if we have an item selector\n  this.elements.forEach( this.addElementImages, this );\n};\n\n/**\n * @param {Node} element\n */\nImagesLoaded.prototype.addElementImages = function( elem ) {\n  // filter siblings\n  if ( elem.nodeName == 'IMG' ) {\n    this.addImage( elem );\n  }\n  // get background image on element\n  if ( this.options.background === true ) {\n    this.addElementBackgroundImages( elem );\n  }\n\n  // find children\n  // no non-element nodes, #143\n  var nodeType = elem.nodeType;\n  if ( !nodeType || !elementNodeTypes[ nodeType ] ) {\n    return;\n  }\n  var childImgs = elem.querySelectorAll('img');\n  // concat childElems to filterFound array\n  for ( var i=0; i < childImgs.length; i++ ) {\n    var img = childImgs[i];\n    this.addImage( img );\n  }\n\n  // get child background images\n  if ( typeof this.options.background == 'string' ) {\n    var children = elem.querySelectorAll( this.options.background );\n    for ( i=0; i < children.length; i++ ) {\n      var child = children[i];\n      this.addElementBackgroundImages( child );\n    }\n  }\n};\n\nvar elementNodeTypes = {\n  1: true,\n  9: true,\n  11: true\n};\n\nImagesLoaded.prototype.addElementBackgroundImages = function( elem ) {\n  var style = getComputedStyle( elem );\n  if ( !style ) {\n    // Firefox returns null if in a hidden iframe https://bugzil.la/548397\n    return;\n  }\n  // get url inside url(\"...\")\n  var reURL = /url\\((['\"])?(.*?)\\1\\)/gi;\n  var matches = reURL.exec( style.backgroundImage );\n  while ( matches !== null ) {\n    var url = matches && matches[2];\n    if ( url ) {\n      this.addBackground( url, elem );\n    }\n    matches = reURL.exec( style.backgroundImage );\n  }\n};\n\n/**\n * @param {Image} img\n */\nImagesLoaded.prototype.addImage = function( img ) {\n  var loadingImage = new LoadingImage( img );\n  this.images.push( loadingImage );\n};\n\nImagesLoaded.prototype.addBackground = function( url, elem ) {\n  var background = new Background( url, elem );\n  this.images.push( background );\n};\n\nImagesLoaded.prototype.check = function() {\n  var _this = this;\n  this.progressedCount = 0;\n  this.hasAnyBroken = false;\n  // complete if no images\n  if ( !this.images.length ) {\n    this.complete();\n    return;\n  }\n\n  function onProgress( image, elem, message ) {\n    // HACK - Chrome triggers event before object properties have changed. #83\n    setTimeout( function() {\n      _this.progress( image, elem, message );\n    });\n  }\n\n  this.images.forEach( function( loadingImage ) {\n    loadingImage.once( 'progress', onProgress );\n    loadingImage.check();\n  });\n};\n\nImagesLoaded.prototype.progress = function( image, elem, message ) {\n  this.progressedCount++;\n  this.hasAnyBroken = this.hasAnyBroken || !image.isLoaded;\n  // progress event\n  this.emitEvent( 'progress', [ this, image, elem ] );\n  if ( this.jqDeferred && this.jqDeferred.notify ) {\n    this.jqDeferred.notify( this, image );\n  }\n  // check if completed\n  if ( this.progressedCount == this.images.length ) {\n    this.complete();\n  }\n\n  if ( this.options.debug && console ) {\n    console.log( 'progress: ' + message, image, elem );\n  }\n};\n\nImagesLoaded.prototype.complete = function() {\n  var eventName = this.hasAnyBroken ? 'fail' : 'done';\n  this.isComplete = true;\n  this.emitEvent( eventName, [ this ] );\n  this.emitEvent( 'always', [ this ] );\n  if ( this.jqDeferred ) {\n    var jqMethod = this.hasAnyBroken ? 'reject' : 'resolve';\n    this.jqDeferred[ jqMethod ]( this );\n  }\n};\n\n// --------------------------  -------------------------- //\n\nfunction LoadingImage( img ) {\n  this.img = img;\n}\n\nLoadingImage.prototype = Object.create( EvEmitter.prototype );\n\nLoadingImage.prototype.check = function() {\n  // If complete is true and browser supports natural sizes,\n  // try to check for image status manually.\n  var isComplete = this.getIsImageComplete();\n  if ( isComplete ) {\n    // report based on naturalWidth\n    this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );\n    return;\n  }\n\n  // If none of the checks above matched, simulate loading on detached element.\n  this.proxyImage = new Image();\n  this.proxyImage.addEventListener( 'load', this );\n  this.proxyImage.addEventListener( 'error', this );\n  // bind to image as well for Firefox. #191\n  this.img.addEventListener( 'load', this );\n  this.img.addEventListener( 'error', this );\n  this.proxyImage.src = this.img.src;\n};\n\nLoadingImage.prototype.getIsImageComplete = function() {\n  // check for non-zero, non-undefined naturalWidth\n  // fixes Safari+InfiniteScroll+Masonry bug infinite-scroll#671\n  return this.img.complete && this.img.naturalWidth;\n};\n\nLoadingImage.prototype.confirm = function( isLoaded, message ) {\n  this.isLoaded = isLoaded;\n  this.emitEvent( 'progress', [ this, this.img, message ] );\n};\n\n// ----- events ----- //\n\n// trigger specified handler for event type\nLoadingImage.prototype.handleEvent = function( event ) {\n  var method = 'on' + event.type;\n  if ( this[ method ] ) {\n    this[ method ]( event );\n  }\n};\n\nLoadingImage.prototype.onload = function() {\n  this.confirm( true, 'onload' );\n  this.unbindEvents();\n};\n\nLoadingImage.prototype.onerror = function() {\n  this.confirm( false, 'onerror' );\n  this.unbindEvents();\n};\n\nLoadingImage.prototype.unbindEvents = function() {\n  this.proxyImage.removeEventListener( 'load', this );\n  this.proxyImage.removeEventListener( 'error', this );\n  this.img.removeEventListener( 'load', this );\n  this.img.removeEventListener( 'error', this );\n};\n\n// -------------------------- Background -------------------------- //\n\nfunction Background( url, element ) {\n  this.url = url;\n  this.element = element;\n  this.img = new Image();\n}\n\n// inherit LoadingImage prototype\nBackground.prototype = Object.create( LoadingImage.prototype );\n\nBackground.prototype.check = function() {\n  this.img.addEventListener( 'load', this );\n  this.img.addEventListener( 'error', this );\n  this.img.src = this.url;\n  // check if image is already complete\n  var isComplete = this.getIsImageComplete();\n  if ( isComplete ) {\n    this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );\n    this.unbindEvents();\n  }\n};\n\nBackground.prototype.unbindEvents = function() {\n  this.img.removeEventListener( 'load', this );\n  this.img.removeEventListener( 'error', this );\n};\n\nBackground.prototype.confirm = function( isLoaded, message ) {\n  this.isLoaded = isLoaded;\n  this.emitEvent( 'progress', [ this, this.element, message ] );\n};\n\n// -------------------------- jQuery -------------------------- //\n\nImagesLoaded.makeJQueryPlugin = function( jQuery ) {\n  jQuery = jQuery || window.jQuery;\n  if ( !jQuery ) {\n    return;\n  }\n  // set local variable\n  $ = jQuery;\n  // $().imagesLoaded()\n  $.fn.imagesLoaded = function( options, callback ) {\n    var instance = new ImagesLoaded( this, options, callback );\n    return instance.jqDeferred.promise( $(this) );\n  };\n};\n// try making plugin\nImagesLoaded.makeJQueryPlugin();\n\n// --------------------------  -------------------------- //\n\nreturn ImagesLoaded;\n\n});\n});\n\n//\nvar script = {\n  name: 'VueMasonryComponent',\n  props: {\n    containerId: {\n      type: String,\n      \"default\": 'masonry-container'\n    },\n    itemSelector: {\n      type: String,\n      \"default\": '.grid-item'\n    },\n    columnWidth: {\n      type: Number,\n      \"default\": undefined\n    },\n    gutter: {\n      type: Number,\n      \"default\": undefined\n    },\n    horizontalOrder: {\n      type: Boolean,\n      \"default\": false\n    },\n    percentPosition: {\n      type: Boolean,\n      \"default\": true\n    },\n    stamp: {\n      type: String,\n      \"default\": undefined\n    },\n    fitWidth: {\n      type: Boolean,\n      \"default\": false\n    },\n    originLeft: {\n      type: Boolean,\n      \"default\": true\n    },\n    originTop: {\n      type: Boolean,\n      \"default\": true\n    },\n    containerStyle: {\n      type: Object,\n      \"default\": function _default() {\n        return {\n          position: 'relative'\n        };\n      }\n    },\n    transitionDuration: {\n      type: [String, Number],\n      \"default\": '0.4s'\n    },\n    stagger: {\n      type: Number,\n      \"default\": undefined\n    },\n    resize: {\n      type: Boolean,\n      \"default\": true\n    },\n    initLayout: {\n      type: Boolean,\n      \"default\": true\n    }\n  },\n  mounted: function mounted() {\n    this.instantiate();\n  },\n  data: function data() {\n    return {\n      masonry: null,\n      options: {\n        itemSelector: this.itemSelector,\n        columnWidth: this.columnWidth,\n        gutter: this.gutter,\n        horizontalOrder: this.horizontalOrder,\n        percentPosition: this.percentPosition,\n        stamp: this.stamp,\n        fitWidth: this.fitWidth,\n        originLeft: this.originLeft,\n        originTop: this.originTop,\n        containerStyle: this.containerStyle,\n        stagger: this.stagger,\n        resize: this.resize,\n        initLayout: this.initLayout\n      }\n    };\n  },\n  methods: {\n    instantiate: function instantiate() {\n      var _this = this;\n\n      imagesloaded('#' + this.containerId, function (instance) {\n        _this.masonry = new masonry('#' + _this.containerId, _this.options);\n\n        _this.masonry.on('layoutComplete', function (laidOutItems) {\n          _this.$emit('layoutComplete', laidOutItems);\n        });\n\n        _this.$emit('loaded');\n      });\n    },\n    getInstance: function getInstance() {\n      return this.masonry;\n    },\n    reInstantiate: function reInstantiate() {\n      this.masonry.layout(this.options);\n    }\n  }\n};\n\nfunction normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier\n/* server only */\n, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {\n  if (typeof shadowMode !== 'boolean') {\n    createInjectorSSR = createInjector;\n    createInjector = shadowMode;\n    shadowMode = false;\n  } // Vue.extend constructor export interop.\n\n\n  var options = typeof script === 'function' ? script.options : script; // render functions\n\n  if (template && template.render) {\n    options.render = template.render;\n    options.staticRenderFns = template.staticRenderFns;\n    options._compiled = true; // functional template\n\n    if (isFunctionalTemplate) {\n      options.functional = true;\n    }\n  } // scopedId\n\n\n  if (scopeId) {\n    options._scopeId = scopeId;\n  }\n\n  var hook;\n\n  if (moduleIdentifier) {\n    // server build\n    hook = function hook(context) {\n      // 2.3 injection\n      context = context || // cached call\n      this.$vnode && this.$vnode.ssrContext || // stateful\n      this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext; // functional\n      // 2.2 with runInNewContext: true\n\n      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n        context = __VUE_SSR_CONTEXT__;\n      } // inject component styles\n\n\n      if (style) {\n        style.call(this, createInjectorSSR(context));\n      } // register component module identifier for async chunk inference\n\n\n      if (context && context._registeredComponents) {\n        context._registeredComponents.add(moduleIdentifier);\n      }\n    }; // used by ssr in case component is cached and beforeCreate\n    // never gets called\n\n\n    options._ssrRegister = hook;\n  } else if (style) {\n    hook = shadowMode ? function () {\n      style.call(this, createInjectorShadow(this.$root.$options.shadowRoot));\n    } : function (context) {\n      style.call(this, createInjector(context));\n    };\n  }\n\n  if (hook) {\n    if (options.functional) {\n      // register for functional component in vue file\n      var originalRender = options.render;\n\n      options.render = function renderWithStyleInjection(h, context) {\n        hook.call(context);\n        return originalRender(h, context);\n      };\n    } else {\n      // inject component registration as beforeCreate hook\n      var existing = options.beforeCreate;\n      options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\n    }\n  }\n\n  return script;\n}\n\nvar normalizeComponent_1 = normalizeComponent;\n\n/* script */\nvar __vue_script__ = script;\n/* template */\n\nvar __vue_render__ = function __vue_render__() {\n  var _vm = this;\n\n  var _h = _vm.$createElement;\n\n  var _c = _vm._self._c || _h;\n\n  return _c('div', {\n    staticClass: \"grid\",\n    attrs: {\n      \"id\": _vm.containerId\n    }\n  }, [_vm._t(\"default\")], 2);\n};\n\nvar __vue_staticRenderFns__ = [];\n/* style */\n\nvar __vue_inject_styles__ = undefined;\n/* scoped */\n\nvar __vue_scope_id__ = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__ = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__ = false;\n/* style inject */\n\n/* style inject SSR */\n\nvar VueMasonryComponent = normalizeComponent_1({\n  render: __vue_render__,\n  staticRenderFns: __vue_staticRenderFns__\n}, __vue_inject_styles__, __vue_script__, __vue_scope_id__, __vue_is_functional_template__, __vue_module_identifier__, undefined, undefined);\n\nvar MasonryComponent = {\n  install: function install(Vue, options) {\n    Vue.component('masonry', VueMasonryComponent);\n  }\n};\n\nmodule.exports = MasonryComponent;\n"]}