{"version":3,"file":"9007-0a2361ebe61e990abe96.js","mappings":"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","sources":["webpack://nikon-client/./node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/utils/resizeObservers.js","webpack://nikon-client/./node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/ResizeObserverBoxOptions.js","webpack://nikon-client/./node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/algorithms/deliverResizeLoopError.js","webpack://nikon-client/./node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/utils/freeze.js","webpack://nikon-client/./node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/utils/queueMicroTask.js","webpack://nikon-client/./node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/ResizeObserverSize.js","webpack://nikon-client/./node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/DOMRectReadOnly.js","webpack://nikon-client/./node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/utils/element.js","webpack://nikon-client/./node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/utils/global.js","webpack://nikon-client/./node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/algorithms/calculateBoxSize.js","webpack://nikon-client/./node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/ResizeObserverEntry.js","webpack://nikon-client/./node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/algorithms/calculateDepthForNode.js","webpack://nikon-client/./node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/algorithms/broadcastActiveObservations.js","webpack://nikon-client/./node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/algorithms/gatherActiveObservationsAtDepth.js","webpack://nikon-client/./node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/utils/process.js","webpack://nikon-client/./node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/algorithms/hasActiveObservations.js","webpack://nikon-client/./node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/algorithms/hasSkippedObservations.js","webpack://nikon-client/./node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/utils/scheduler.js","webpack://nikon-client/./node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/utils/queueResizeObserver.js","webpack://nikon-client/./node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/ResizeObservation.js","webpack://nikon-client/./node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/ResizeObserverDetail.js","webpack://nikon-client/./node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/ResizeObserverController.js","webpack://nikon-client/./node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/ResizeObserver.js","webpack://nikon-client/./node_modules/.pnpm/desandro-matches-selector@2.0.2/node_modules/desandro-matches-selector/matches-selector.js","webpack://nikon-client/./node_modules/.pnpm/ev-emitter@1.1.1/node_modules/ev-emitter/ev-emitter.js","webpack://nikon-client/./node_modules/.pnpm/fizzy-ui-utils@2.0.7/node_modules/fizzy-ui-utils/utils.js","webpack://nikon-client/./node_modules/.pnpm/get-size@2.0.3/node_modules/get-size/get-size.js","webpack://nikon-client/./node_modules/.pnpm/masonry-layout@4.2.2/node_modules/masonry-layout/masonry.js","webpack://nikon-client/./node_modules/.pnpm/outlayer@2.1.1/node_modules/outlayer/item.js","webpack://nikon-client/./node_modules/.pnpm/outlayer@2.1.1/node_modules/outlayer/outlayer.js","webpack://nikon-client/./node_modules/.pnpm/react-use-measure@2.1.7_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-use-measure/dist/index.js"],"sourcesContent":["var resizeObservers = [];\nexport { resizeObservers };\n","var ResizeObserverBoxOptions;\n(function (ResizeObserverBoxOptions) {\n ResizeObserverBoxOptions[\"BORDER_BOX\"] = \"border-box\";\n ResizeObserverBoxOptions[\"CONTENT_BOX\"] = \"content-box\";\n ResizeObserverBoxOptions[\"DEVICE_PIXEL_CONTENT_BOX\"] = \"device-pixel-content-box\";\n})(ResizeObserverBoxOptions || (ResizeObserverBoxOptions = {}));\nexport { ResizeObserverBoxOptions };\n","var msg = 'ResizeObserver loop completed with undelivered notifications.';\nvar deliverResizeLoopError = function () {\n var event;\n if (typeof ErrorEvent === 'function') {\n event = new ErrorEvent('error', {\n message: msg\n });\n }\n else {\n event = document.createEvent('Event');\n event.initEvent('error', false, false);\n event.message = msg;\n }\n window.dispatchEvent(event);\n};\nexport { deliverResizeLoopError };\n","export var freeze = function (obj) { return Object.freeze(obj); };\n","var trigger;\nvar callbacks = [];\nvar notify = function () { return callbacks.splice(0).forEach(function (cb) { return cb(); }); };\nvar queueMicroTask = function (callback) {\n if (!trigger) {\n var toggle_1 = 0;\n var el_1 = document.createTextNode('');\n var config = { characterData: true };\n new MutationObserver(function () { return notify(); }).observe(el_1, config);\n trigger = function () { el_1.textContent = \"\".concat(toggle_1 ? toggle_1-- : toggle_1++); };\n }\n callbacks.push(callback);\n trigger();\n};\nexport { queueMicroTask };\n","import { freeze } from './utils/freeze';\nvar ResizeObserverSize = (function () {\n function ResizeObserverSize(inlineSize, blockSize) {\n this.inlineSize = inlineSize;\n this.blockSize = blockSize;\n freeze(this);\n }\n return ResizeObserverSize;\n}());\nexport { ResizeObserverSize };\n","import { freeze } from './utils/freeze';\nvar DOMRectReadOnly = (function () {\n function DOMRectReadOnly(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n this.top = this.y;\n this.left = this.x;\n this.bottom = this.top + this.height;\n this.right = this.left + this.width;\n return freeze(this);\n }\n DOMRectReadOnly.prototype.toJSON = function () {\n var _a = this, x = _a.x, y = _a.y, top = _a.top, right = _a.right, bottom = _a.bottom, left = _a.left, width = _a.width, height = _a.height;\n return { x: x, y: y, top: top, right: right, bottom: bottom, left: left, width: width, height: height };\n };\n DOMRectReadOnly.fromRect = function (rectangle) {\n return new DOMRectReadOnly(rectangle.x, rectangle.y, rectangle.width, rectangle.height);\n };\n return DOMRectReadOnly;\n}());\nexport { DOMRectReadOnly };\n","var isSVG = function (target) { return target instanceof SVGElement && 'getBBox' in target; };\nvar isHidden = function (target) {\n if (isSVG(target)) {\n var _a = target.getBBox(), width = _a.width, height = _a.height;\n return !width && !height;\n }\n var _b = target, offsetWidth = _b.offsetWidth, offsetHeight = _b.offsetHeight;\n return !(offsetWidth || offsetHeight || target.getClientRects().length);\n};\nvar isElement = function (obj) {\n var _a;\n if (obj instanceof Element) {\n return true;\n }\n var scope = (_a = obj === null || obj === void 0 ? void 0 : obj.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView;\n return !!(scope && obj instanceof scope.Element);\n};\nvar isReplacedElement = function (target) {\n switch (target.tagName) {\n case 'INPUT':\n if (target.type !== 'image') {\n break;\n }\n case 'VIDEO':\n case 'AUDIO':\n case 'EMBED':\n case 'OBJECT':\n case 'CANVAS':\n case 'IFRAME':\n case 'IMG':\n return true;\n }\n return false;\n};\nexport { isSVG, isHidden, isElement, isReplacedElement };\n","export var global = typeof window !== 'undefined' ? window : {};\n","import { ResizeObserverBoxOptions } from '../ResizeObserverBoxOptions';\nimport { ResizeObserverSize } from '../ResizeObserverSize';\nimport { DOMRectReadOnly } from '../DOMRectReadOnly';\nimport { isSVG, isHidden } from '../utils/element';\nimport { freeze } from '../utils/freeze';\nimport { global } from '../utils/global';\nvar cache = new WeakMap();\nvar scrollRegexp = /auto|scroll/;\nvar verticalRegexp = /^tb|vertical/;\nvar IE = (/msie|trident/i).test(global.navigator && global.navigator.userAgent);\nvar parseDimension = function (pixel) { return parseFloat(pixel || '0'); };\nvar size = function (inlineSize, blockSize, switchSizes) {\n if (inlineSize === void 0) { inlineSize = 0; }\n if (blockSize === void 0) { blockSize = 0; }\n if (switchSizes === void 0) { switchSizes = false; }\n return new ResizeObserverSize((switchSizes ? blockSize : inlineSize) || 0, (switchSizes ? inlineSize : blockSize) || 0);\n};\nvar zeroBoxes = freeze({\n devicePixelContentBoxSize: size(),\n borderBoxSize: size(),\n contentBoxSize: size(),\n contentRect: new DOMRectReadOnly(0, 0, 0, 0)\n});\nvar calculateBoxSizes = function (target, forceRecalculation) {\n if (forceRecalculation === void 0) { forceRecalculation = false; }\n if (cache.has(target) && !forceRecalculation) {\n return cache.get(target);\n }\n if (isHidden(target)) {\n cache.set(target, zeroBoxes);\n return zeroBoxes;\n }\n var cs = getComputedStyle(target);\n var svg = isSVG(target) && target.ownerSVGElement && target.getBBox();\n var removePadding = !IE && cs.boxSizing === 'border-box';\n var switchSizes = verticalRegexp.test(cs.writingMode || '');\n var canScrollVertically = !svg && scrollRegexp.test(cs.overflowY || '');\n var canScrollHorizontally = !svg && scrollRegexp.test(cs.overflowX || '');\n var paddingTop = svg ? 0 : parseDimension(cs.paddingTop);\n var paddingRight = svg ? 0 : parseDimension(cs.paddingRight);\n var paddingBottom = svg ? 0 : parseDimension(cs.paddingBottom);\n var paddingLeft = svg ? 0 : parseDimension(cs.paddingLeft);\n var borderTop = svg ? 0 : parseDimension(cs.borderTopWidth);\n var borderRight = svg ? 0 : parseDimension(cs.borderRightWidth);\n var borderBottom = svg ? 0 : parseDimension(cs.borderBottomWidth);\n var borderLeft = svg ? 0 : parseDimension(cs.borderLeftWidth);\n var horizontalPadding = paddingLeft + paddingRight;\n var verticalPadding = paddingTop + paddingBottom;\n var horizontalBorderArea = borderLeft + borderRight;\n var verticalBorderArea = borderTop + borderBottom;\n var horizontalScrollbarThickness = !canScrollHorizontally ? 0 : target.offsetHeight - verticalBorderArea - target.clientHeight;\n var verticalScrollbarThickness = !canScrollVertically ? 0 : target.offsetWidth - horizontalBorderArea - target.clientWidth;\n var widthReduction = removePadding ? horizontalPadding + horizontalBorderArea : 0;\n var heightReduction = removePadding ? verticalPadding + verticalBorderArea : 0;\n var contentWidth = svg ? svg.width : parseDimension(cs.width) - widthReduction - verticalScrollbarThickness;\n var contentHeight = svg ? svg.height : parseDimension(cs.height) - heightReduction - horizontalScrollbarThickness;\n var borderBoxWidth = contentWidth + horizontalPadding + verticalScrollbarThickness + horizontalBorderArea;\n var borderBoxHeight = contentHeight + verticalPadding + horizontalScrollbarThickness + verticalBorderArea;\n var boxes = freeze({\n devicePixelContentBoxSize: size(Math.round(contentWidth * devicePixelRatio), Math.round(contentHeight * devicePixelRatio), switchSizes),\n borderBoxSize: size(borderBoxWidth, borderBoxHeight, switchSizes),\n contentBoxSize: size(contentWidth, contentHeight, switchSizes),\n contentRect: new DOMRectReadOnly(paddingLeft, paddingTop, contentWidth, contentHeight)\n });\n cache.set(target, boxes);\n return boxes;\n};\nvar calculateBoxSize = function (target, observedBox, forceRecalculation) {\n var _a = calculateBoxSizes(target, forceRecalculation), borderBoxSize = _a.borderBoxSize, contentBoxSize = _a.contentBoxSize, devicePixelContentBoxSize = _a.devicePixelContentBoxSize;\n switch (observedBox) {\n case ResizeObserverBoxOptions.DEVICE_PIXEL_CONTENT_BOX:\n return devicePixelContentBoxSize;\n case ResizeObserverBoxOptions.BORDER_BOX:\n return borderBoxSize;\n default:\n return contentBoxSize;\n }\n};\nexport { calculateBoxSize, calculateBoxSizes };\n","import { calculateBoxSizes } from './algorithms/calculateBoxSize';\nimport { freeze } from './utils/freeze';\nvar ResizeObserverEntry = (function () {\n function ResizeObserverEntry(target) {\n var boxes = calculateBoxSizes(target);\n this.target = target;\n this.contentRect = boxes.contentRect;\n this.borderBoxSize = freeze([boxes.borderBoxSize]);\n this.contentBoxSize = freeze([boxes.contentBoxSize]);\n this.devicePixelContentBoxSize = freeze([boxes.devicePixelContentBoxSize]);\n }\n return ResizeObserverEntry;\n}());\nexport { ResizeObserverEntry };\n","import { isHidden } from '../utils/element';\nvar calculateDepthForNode = function (node) {\n if (isHidden(node)) {\n return Infinity;\n }\n var depth = 0;\n var parent = node.parentNode;\n while (parent) {\n depth += 1;\n parent = parent.parentNode;\n }\n return depth;\n};\nexport { calculateDepthForNode };\n","import { resizeObservers } from '../utils/resizeObservers';\nimport { ResizeObserverEntry } from '../ResizeObserverEntry';\nimport { calculateDepthForNode } from './calculateDepthForNode';\nimport { calculateBoxSize } from './calculateBoxSize';\nvar broadcastActiveObservations = function () {\n var shallowestDepth = Infinity;\n var callbacks = [];\n resizeObservers.forEach(function processObserver(ro) {\n if (ro.activeTargets.length === 0) {\n return;\n }\n var entries = [];\n ro.activeTargets.forEach(function processTarget(ot) {\n var entry = new ResizeObserverEntry(ot.target);\n var targetDepth = calculateDepthForNode(ot.target);\n entries.push(entry);\n ot.lastReportedSize = calculateBoxSize(ot.target, ot.observedBox);\n if (targetDepth < shallowestDepth) {\n shallowestDepth = targetDepth;\n }\n });\n callbacks.push(function resizeObserverCallback() {\n ro.callback.call(ro.observer, entries, ro.observer);\n });\n ro.activeTargets.splice(0, ro.activeTargets.length);\n });\n for (var _i = 0, callbacks_1 = callbacks; _i < callbacks_1.length; _i++) {\n var callback = callbacks_1[_i];\n callback();\n }\n return shallowestDepth;\n};\nexport { broadcastActiveObservations };\n","import { resizeObservers } from '../utils/resizeObservers';\nimport { calculateDepthForNode } from './calculateDepthForNode';\nvar gatherActiveObservationsAtDepth = function (depth) {\n resizeObservers.forEach(function processObserver(ro) {\n ro.activeTargets.splice(0, ro.activeTargets.length);\n ro.skippedTargets.splice(0, ro.skippedTargets.length);\n ro.observationTargets.forEach(function processTarget(ot) {\n if (ot.isActive()) {\n if (calculateDepthForNode(ot.target) > depth) {\n ro.activeTargets.push(ot);\n }\n else {\n ro.skippedTargets.push(ot);\n }\n }\n });\n });\n};\nexport { gatherActiveObservationsAtDepth };\n","import { hasActiveObservations } from '../algorithms/hasActiveObservations';\nimport { hasSkippedObservations } from '../algorithms/hasSkippedObservations';\nimport { deliverResizeLoopError } from '../algorithms/deliverResizeLoopError';\nimport { broadcastActiveObservations } from '../algorithms/broadcastActiveObservations';\nimport { gatherActiveObservationsAtDepth } from '../algorithms/gatherActiveObservationsAtDepth';\nvar process = function () {\n var depth = 0;\n gatherActiveObservationsAtDepth(depth);\n while (hasActiveObservations()) {\n depth = broadcastActiveObservations();\n gatherActiveObservationsAtDepth(depth);\n }\n if (hasSkippedObservations()) {\n deliverResizeLoopError();\n }\n return depth > 0;\n};\nexport { process };\n","import { resizeObservers } from '../utils/resizeObservers';\nvar hasActiveObservations = function () {\n return resizeObservers.some(function (ro) { return ro.activeTargets.length > 0; });\n};\nexport { hasActiveObservations };\n","import { resizeObservers } from '../utils/resizeObservers';\nvar hasSkippedObservations = function () {\n return resizeObservers.some(function (ro) { return ro.skippedTargets.length > 0; });\n};\nexport { hasSkippedObservations };\n","import { process } from './process';\nimport { global } from './global';\nimport { queueResizeObserver } from './queueResizeObserver';\nvar watching = 0;\nvar isWatching = function () { return !!watching; };\nvar CATCH_PERIOD = 250;\nvar observerConfig = { attributes: true, characterData: true, childList: true, subtree: true };\nvar events = [\n 'resize',\n 'load',\n 'transitionend',\n 'animationend',\n 'animationstart',\n 'animationiteration',\n 'keyup',\n 'keydown',\n 'mouseup',\n 'mousedown',\n 'mouseover',\n 'mouseout',\n 'blur',\n 'focus'\n];\nvar time = function (timeout) {\n if (timeout === void 0) { timeout = 0; }\n return Date.now() + timeout;\n};\nvar scheduled = false;\nvar Scheduler = (function () {\n function Scheduler() {\n var _this = this;\n this.stopped = true;\n this.listener = function () { return _this.schedule(); };\n }\n Scheduler.prototype.run = function (timeout) {\n var _this = this;\n if (timeout === void 0) { timeout = CATCH_PERIOD; }\n if (scheduled) {\n return;\n }\n scheduled = true;\n var until = time(timeout);\n queueResizeObserver(function () {\n var elementsHaveResized = false;\n try {\n elementsHaveResized = process();\n }\n finally {\n scheduled = false;\n timeout = until - time();\n if (!isWatching()) {\n return;\n }\n if (elementsHaveResized) {\n _this.run(1000);\n }\n else if (timeout > 0) {\n _this.run(timeout);\n }\n else {\n _this.start();\n }\n }\n });\n };\n Scheduler.prototype.schedule = function () {\n this.stop();\n this.run();\n };\n Scheduler.prototype.observe = function () {\n var _this = this;\n var cb = function () { return _this.observer && _this.observer.observe(document.body, observerConfig); };\n document.body ? cb() : global.addEventListener('DOMContentLoaded', cb);\n };\n Scheduler.prototype.start = function () {\n var _this = this;\n if (this.stopped) {\n this.stopped = false;\n this.observer = new MutationObserver(this.listener);\n this.observe();\n events.forEach(function (name) { return global.addEventListener(name, _this.listener, true); });\n }\n };\n Scheduler.prototype.stop = function () {\n var _this = this;\n if (!this.stopped) {\n this.observer && this.observer.disconnect();\n events.forEach(function (name) { return global.removeEventListener(name, _this.listener, true); });\n this.stopped = true;\n }\n };\n return Scheduler;\n}());\nvar scheduler = new Scheduler();\nvar updateCount = function (n) {\n !watching && n > 0 && scheduler.start();\n watching += n;\n !watching && scheduler.stop();\n};\nexport { scheduler, updateCount };\n","import { queueMicroTask } from './queueMicroTask';\nvar queueResizeObserver = function (cb) {\n queueMicroTask(function ResizeObserver() {\n requestAnimationFrame(cb);\n });\n};\nexport { queueResizeObserver };\n","import { ResizeObserverBoxOptions } from './ResizeObserverBoxOptions';\nimport { calculateBoxSize } from './algorithms/calculateBoxSize';\nimport { isSVG, isReplacedElement } from './utils/element';\nvar skipNotifyOnElement = function (target) {\n return !isSVG(target)\n && !isReplacedElement(target)\n && getComputedStyle(target).display === 'inline';\n};\nvar ResizeObservation = (function () {\n function ResizeObservation(target, observedBox) {\n this.target = target;\n this.observedBox = observedBox || ResizeObserverBoxOptions.CONTENT_BOX;\n this.lastReportedSize = {\n inlineSize: 0,\n blockSize: 0\n };\n }\n ResizeObservation.prototype.isActive = function () {\n var size = calculateBoxSize(this.target, this.observedBox, true);\n if (skipNotifyOnElement(this.target)) {\n this.lastReportedSize = size;\n }\n if (this.lastReportedSize.inlineSize !== size.inlineSize\n || this.lastReportedSize.blockSize !== size.blockSize) {\n return true;\n }\n return false;\n };\n return ResizeObservation;\n}());\nexport { ResizeObservation };\n","var ResizeObserverDetail = (function () {\n function ResizeObserverDetail(resizeObserver, callback) {\n this.activeTargets = [];\n this.skippedTargets = [];\n this.observationTargets = [];\n this.observer = resizeObserver;\n this.callback = callback;\n }\n return ResizeObserverDetail;\n}());\nexport { ResizeObserverDetail };\n","import { scheduler, updateCount } from './utils/scheduler';\nimport { ResizeObservation } from './ResizeObservation';\nimport { ResizeObserverDetail } from './ResizeObserverDetail';\nimport { resizeObservers } from './utils/resizeObservers';\nvar observerMap = new WeakMap();\nvar getObservationIndex = function (observationTargets, target) {\n for (var i = 0; i < observationTargets.length; i += 1) {\n if (observationTargets[i].target === target) {\n return i;\n }\n }\n return -1;\n};\nvar ResizeObserverController = (function () {\n function ResizeObserverController() {\n }\n ResizeObserverController.connect = function (resizeObserver, callback) {\n var detail = new ResizeObserverDetail(resizeObserver, callback);\n observerMap.set(resizeObserver, detail);\n };\n ResizeObserverController.observe = function (resizeObserver, target, options) {\n var detail = observerMap.get(resizeObserver);\n var firstObservation = detail.observationTargets.length === 0;\n if (getObservationIndex(detail.observationTargets, target) < 0) {\n firstObservation && resizeObservers.push(detail);\n detail.observationTargets.push(new ResizeObservation(target, options && options.box));\n updateCount(1);\n scheduler.schedule();\n }\n };\n ResizeObserverController.unobserve = function (resizeObserver, target) {\n var detail = observerMap.get(resizeObserver);\n var index = getObservationIndex(detail.observationTargets, target);\n var lastObservation = detail.observationTargets.length === 1;\n if (index >= 0) {\n lastObservation && resizeObservers.splice(resizeObservers.indexOf(detail), 1);\n detail.observationTargets.splice(index, 1);\n updateCount(-1);\n }\n };\n ResizeObserverController.disconnect = function (resizeObserver) {\n var _this = this;\n var detail = observerMap.get(resizeObserver);\n detail.observationTargets.slice().forEach(function (ot) { return _this.unobserve(resizeObserver, ot.target); });\n detail.activeTargets.splice(0, detail.activeTargets.length);\n };\n return ResizeObserverController;\n}());\nexport { ResizeObserverController };\n","import { ResizeObserverController } from './ResizeObserverController';\nimport { isElement } from './utils/element';\nvar ResizeObserver = (function () {\n function ResizeObserver(callback) {\n if (arguments.length === 0) {\n throw new TypeError(\"Failed to construct 'ResizeObserver': 1 argument required, but only 0 present.\");\n }\n if (typeof callback !== 'function') {\n throw new TypeError(\"Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function.\");\n }\n ResizeObserverController.connect(this, callback);\n }\n ResizeObserver.prototype.observe = function (target, options) {\n if (arguments.length === 0) {\n throw new TypeError(\"Failed to execute 'observe' on 'ResizeObserver': 1 argument required, but only 0 present.\");\n }\n if (!isElement(target)) {\n throw new TypeError(\"Failed to execute 'observe' on 'ResizeObserver': parameter 1 is not of type 'Element\");\n }\n ResizeObserverController.observe(this, target, options);\n };\n ResizeObserver.prototype.unobserve = function (target) {\n if (arguments.length === 0) {\n throw new TypeError(\"Failed to execute 'unobserve' on 'ResizeObserver': 1 argument required, but only 0 present.\");\n }\n if (!isElement(target)) {\n throw new TypeError(\"Failed to execute 'unobserve' on 'ResizeObserver': parameter 1 is not of type 'Element\");\n }\n ResizeObserverController.unobserve(this, target);\n };\n ResizeObserver.prototype.disconnect = function () {\n ResizeObserverController.disconnect(this);\n };\n ResizeObserver.toString = function () {\n return 'function ResizeObserver () { [polyfill code] }';\n };\n return ResizeObserver;\n}());\nexport { ResizeObserver };\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 * 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 * 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","/*!\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 * 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 * 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 * 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","import{useState as T,useRef as p,useEffect as u,useMemo as M}from\"react\";function g(n,t){let o;return(...i)=>{window.clearTimeout(o),o=window.setTimeout(()=>n(...i),t)}}function j({debounce:n,scroll:t,polyfill:o,offsetSize:i}={debounce:0,scroll:!1,offsetSize:!1}){const a=o||(typeof window==\"undefined\"?class{}:window.ResizeObserver);if(!a)throw new Error(\"This browser does not support ResizeObserver out of the box. See: https://github.com/react-spring/react-use-measure/#resize-observer-polyfills\");const[c,h]=T({left:0,top:0,width:0,height:0,bottom:0,right:0,x:0,y:0}),e=p({element:null,scrollContainers:null,resizeObserver:null,lastBounds:c,orientationHandler:null}),d=n?typeof n==\"number\"?n:n.scroll:null,f=n?typeof n==\"number\"?n:n.resize:null,w=p(!1);u(()=>(w.current=!0,()=>void(w.current=!1)));const[z,m,s]=M(()=>{const r=()=>{if(!e.current.element)return;const{left:y,top:C,width:H,height:O,bottom:S,right:x,x:B,y:R}=e.current.element.getBoundingClientRect(),l={left:y,top:C,width:H,height:O,bottom:S,right:x,x:B,y:R};e.current.element instanceof HTMLElement&&i&&(l.height=e.current.element.offsetHeight,l.width=e.current.element.offsetWidth),Object.freeze(l),w.current&&!D(e.current.lastBounds,l)&&h(e.current.lastBounds=l)};return[r,f?g(r,f):r,d?g(r,d):r]},[h,i,d,f]);function v(){e.current.scrollContainers&&(e.current.scrollContainers.forEach(r=>r.removeEventListener(\"scroll\",s,!0)),e.current.scrollContainers=null),e.current.resizeObserver&&(e.current.resizeObserver.disconnect(),e.current.resizeObserver=null),e.current.orientationHandler&&(\"orientation\"in screen&&\"removeEventListener\"in screen.orientation?screen.orientation.removeEventListener(\"change\",e.current.orientationHandler):\"onorientationchange\"in window&&window.removeEventListener(\"orientationchange\",e.current.orientationHandler))}function b(){e.current.element&&(e.current.resizeObserver=new a(s),e.current.resizeObserver.observe(e.current.element),t&&e.current.scrollContainers&&e.current.scrollContainers.forEach(r=>r.addEventListener(\"scroll\",s,{capture:!0,passive:!0})),e.current.orientationHandler=()=>{s()},\"orientation\"in screen&&\"addEventListener\"in screen.orientation?screen.orientation.addEventListener(\"change\",e.current.orientationHandler):\"onorientationchange\"in window&&window.addEventListener(\"orientationchange\",e.current.orientationHandler))}const L=r=>{!r||r===e.current.element||(v(),e.current.element=r,e.current.scrollContainers=E(r),b())};return X(s,!!t),W(m),u(()=>{v(),b()},[t,s,m]),u(()=>v,[]),[L,c,z]}function W(n){u(()=>{const t=n;return window.addEventListener(\"resize\",t),()=>void window.removeEventListener(\"resize\",t)},[n])}function X(n,t){u(()=>{if(t){const o=n;return window.addEventListener(\"scroll\",o,{capture:!0,passive:!0}),()=>void window.removeEventListener(\"scroll\",o,!0)}},[n,t])}function E(n){const t=[];if(!n||n===document.body)return t;const{overflow:o,overflowX:i,overflowY:a}=window.getComputedStyle(n);return[o,i,a].some(c=>c===\"auto\"||c===\"scroll\")&&t.push(n),[...t,...E(n.parentElement)]}const k=[\"x\",\"y\",\"top\",\"bottom\",\"left\",\"right\",\"width\",\"height\"],D=(n,t)=>k.every(o=>n[o]===t[o]);export{j as default};\n//# sourceMappingURL=index.js.map\n"],"names":["ResizeObserverBoxOptions","resizeObservers","msg","trigger","freeze","obj","Object","ResizeObserverSize","inlineSize","blockSize","this","DOMRectReadOnly","x","y","width","height","top","left","bottom","right","prototype","toJSON","_a","fromRect","rectangle","isSVG","target","SVGElement","isHidden","getBBox","_b","offsetWidth","offsetHeight","getClientRects","length","isElement","Element","scope","ownerDocument","defaultView","global","window","cache","WeakMap","scrollRegexp","verticalRegexp","IE","test","navigator","userAgent","parseDimension","pixel","parseFloat","size","switchSizes","zeroBoxes","devicePixelContentBoxSize","borderBoxSize","contentBoxSize","contentRect","calculateBoxSizes","forceRecalculation","has","get","set","cs","getComputedStyle","svg","ownerSVGElement","removePadding","boxSizing","writingMode","canScrollVertically","overflowY","canScrollHorizontally","overflowX","paddingTop","paddingRight","paddingBottom","paddingLeft","borderTop","borderTopWidth","borderRight","borderRightWidth","borderBottom","borderBottomWidth","horizontalPadding","verticalPadding","horizontalBorderArea","borderLeftWidth","verticalBorderArea","horizontalScrollbarThickness","clientHeight","verticalScrollbarThickness","clientWidth","widthReduction","heightReduction","contentWidth","contentHeight","borderBoxWidth","borderBoxHeight","boxes","Math","round","devicePixelRatio","calculateBoxSize","observedBox","DEVICE_PIXEL_CONTENT_BOX","BORDER_BOX","ResizeObserverEntry","calculateDepthForNode","node","Infinity","depth","parent","parentNode","broadcastActiveObservations","shallowestDepth","callbacks","forEach","ro","activeTargets","entries","ot","entry","targetDepth","push","lastReportedSize","callback","call","observer","splice","_i","callbacks_1","gatherActiveObservationsAtDepth","skippedTargets","observationTargets","isActive","process","event","some","ErrorEvent","message","document","createEvent","initEvent","dispatchEvent","queueMicroTask","toggle_1","el_1","createTextNode","MutationObserver","cb","observe","characterData","textContent","concat","watching","observerConfig","attributes","childList","subtree","events","time","timeout","Date","now","scheduled","scheduler","Scheduler","_this","stopped","listener","schedule","run","until","elementsHaveResized","start","requestAnimationFrame","stop","body","addEventListener","name","disconnect","removeEventListener","updateCount","n","ResizeObservation","CONTENT_BOX","tagName","type","isReplacedElement","display","ResizeObserverDetail","resizeObserver","observerMap","getObservationIndex","i","ResizeObserverController","connect","detail","options","firstObservation","box","unobserve","index","lastObservation","indexOf","slice","ResizeObserver","arguments","TypeError","toString","factory","matchesMethod","ElemProto","matches","matchesSelector","prefixes","method","elem","selector","EvEmitter","proto","on","eventName","_events","listeners","once","onceEvents","_onceEvents","off","emitEvent","args","onceListeners","apply","allOff","utils","a","b","prop","num","div","arraySlice","Array","makeArray","isArray","removeFrom","ary","getParent","getQueryElement","querySelector","handleEvent","filterFindElements","elems","ffElems","HTMLElement","childElems","querySelectorAll","debounceMethod","_class","methodName","threshold","timeoutName","clearTimeout","setTimeout","docReady","readyState","toDashed","str","replace","match","$1","$2","toLowerCase","console","htmlInit","WidgetClass","namespace","dashedNamespace","dataAttr","dataAttrElems","jsDashElems","dataOptionsAttr","jQuery","attr","getAttribute","JSON","parse","error","className","instance","data","getStyleSize","value","isNaN","noop","logError","measurements","measurementsLength","getZeroSize","innerWidth","innerHeight","outerWidth","outerHeight","getStyle","style","isBoxSizeOuter","isSetup","setup","createElement","padding","borderStyle","borderWidth","documentElement","appendChild","getSize","removeChild","nodeType","isBorderBox","measurement","paddingWidth","paddingHeight","marginWidth","marginLeft","marginRight","marginHeight","marginTop","marginBottom","borderHeight","isBorderBoxSizeOuter","styleWidth","styleHeight","Outlayer","Masonry","create","compatOptions","fitWidth","_resetLayout","_getMeasurement","measureColumns","colYs","cols","maxY","horizontalColIndex","getContainerWidth","columnWidth","firstItem","items","firstItemElem","element","containerWidth","gutter","excess","max","container","_getOption","_getItemLayoutPosition","item","remainder","colSpan","min","colPosition","horizontalOrder","position","col","setHeight","setMax","_getTopColPosition","colGroup","_getTopColGroup","minimumY","groupCount","_getColGroupY","groupColYs","_getHorizontalColPosition","hasSize","_manageStamp","stamp","stampSize","offset","_getElementOffset","firstX","lastX","firstCol","floor","lastCol","stampMaxY","_getContainerSize","_getContainerFitWidth","unusedCols","needsResizeLayout","previousWidth","isEmptyObj","docElemStyle","transitionProperty","transition","transformProperty","transform","transitionEndEvent","WebkitTransition","vendorProperties","transitionDuration","transitionDelay","Item","layout","_create","toDashedAll","constructor","_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","goTo","moveTo","_nonTransition","_removeStyles","_transition","from","enableTransition","transitionProps","duration","staggerDelay","onwebkitTransitionEnd","ontransitionend","onotransitionend","dashedVendorProperties","propertyName","disableTransition","removeTransitionStyles","cleanStyle","cleanTransitionStyle","stagger","delay","removeElem","remove","hide","reveal","getHideRevealTransitionEndProperty","onRevealTransitionEnd","hiddenStyle","visibleStyle","styleProperty","optionStyle","opacity","onHideTransitionEnd","destroy","GUID","instances","queryElement","$element","extend","defaults","option","id","outlayerGUID","containerStyle","initLayout","originLeft","originTop","resize","resizeContainer","subclass","Parent","SubClass","opts","oldOption","undefined","horizontal","layoutInstant","reloadItems","stamps","bindResize","_itemize","children","itemElems","_filterFindItemElements","itemSelector","getItemElements","map","_manageStamps","isInstant","_isLayoutInited","layoutItems","_init","_getItemsForLayout","_layoutItems","_postLayout","filter","isIgnored","_emitCompleteOnItems","queue","isLayoutInstant","_processLayoutQueue","updateStagger","_positionItem","getMilliseconds","_setContainerMeasure","measure","isWidth","elemSize","onComplete","count","doneCount","tick","emitArgs","$event","Event","ignore","getItem","unignore","_find","unstamp","_getBoundingRect","boundingRect","getBoundingClientRect","_boundingRect","thisRect","isResizeBound","unbindResize","onresize","addItems","appended","prepended","previousItems","revealItemElements","getItems","hideItemElements","removeItems","removeData","Layout","bridget","msUnits","ms","s","unit","g","t","o","j","debounce","scroll","polyfill","offsetSize","Error","c","h","e","scrollContainers","lastBounds","orientationHandler","d","f","w","current","z","m","r","C","H","O","S","B","R","l","D","v","screen","orientation","capture","passive","X","W","E","overflow","parentElement","k","every"],"sourceRoot":""}