{"version":3,"file":"infinitegrid.pkgd.js","sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap ab576bc2a5fba8b67f32","webpack:///./src/utils.js","webpack:///./src/consts.js","webpack:///./src/browser.js","webpack:///./src/AutoSizer.js","webpack:///./src/ItemManager.js","webpack:///./src/DOMRenderer.js","webpack:///./src/ImageLoaded.js","webpack:///./src/Watcher.js","webpack:///./src/Infinite.js","webpack:///./src/layouts/FrameLayout.js","webpack:///./src/index.umd.js","webpack:///./src/InfiniteGrid.js","webpack:///./node_modules/@egjs/component/dist/component.js","webpack:///(webpack)/buildin/global.js","webpack:///./src/layouts/GridLayout.js","webpack:///./src/layouts/SquareLayout.js","webpack:///./src/layouts/PackingLayout.js","webpack:///./src/layouts/lib/BoxModel.js","webpack:///./src/layouts/JustifiedLayout.js","webpack:///./src/layouts/lib/dijkstra.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"InfiniteGrid\"] = factory();\n\telse\n\t\troot[\"eg\"] = root[\"eg\"] || {}, root[\"eg\"][\"InfiniteGrid\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 10);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap ab576bc2a5fba8b67f32","\"use strict\";\n\nexports.__esModule = true;\nexports.STYLE = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexports.toArray = toArray;\nexports.matchHTML = matchHTML;\nexports.$ = $;\nexports.addEvent = addEvent;\nexports.removeEvent = removeEvent;\nexports.scroll = scroll;\nexports.scrollTo = scrollTo;\nexports.scrollBy = scrollBy;\nexports.getStyles = getStyles;\nexports.innerWidth = innerWidth;\nexports.innerHeight = innerHeight;\nexports.outerWidth = outerWidth;\nexports.outerHeight = outerHeight;\nexports.getStyleNames = getStyleNames;\nexports.assignOptions = assignOptions;\nexports.toZeroArray = toZeroArray;\nexports.cloneItems = cloneItems;\nexports.isWindow = isWindow;\nexports.fill = fill;\nexports.isUndefined = isUndefined;\n\nvar _browser = require(\"./browser\");\n\nvar _consts = require(\"./consts\");\n\nfunction toArray(nodes) {\n\t// SCRIPT5014 in IE8\n\tvar array = [];\n\n\tif (nodes) {\n\t\tfor (var i = 0, len = nodes.length; i < len; i++) {\n\t\t\tarray.push(nodes[i]);\n\t\t}\n\t}\n\treturn array;\n}\nfunction matchHTML(html) {\n\treturn html.match(/^<([A-z]+)\\s*([^>]*)>/);\n}\n/**\n * Select or create element\n * @param {String|HTMLElement|jQuery} param\n * when string given is as HTML tag, then create element\n * otherwise it returns selected elements\n * @param {Boolean} multi\n * @returns {HTMLElement}\n */\nfunction $(param) {\n\tvar multi = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n\tvar el = void 0;\n\n\tif (typeof param === \"string\") {\n\t\t// String (HTML, Selector)\n\t\t// check if string is HTML tag format\n\t\tvar match = matchHTML(param);\n\n\t\t// creating element\n\t\tif (match) {\n\t\t\t// HTML\n\t\t\tvar dummy = _browser.document.createElement(\"div\");\n\n\t\t\tdummy.innerHTML = param;\n\t\t\tel = dummy.childNodes;\n\t\t} else {\n\t\t\t// Selector\n\t\t\tel = _browser.document.querySelectorAll(param);\n\t\t}\n\t\tif (multi) {\n\t\t\tel = toArray(el);\n\t\t} else {\n\t\t\tel = el && el.length > 0 && el[0] || undefined;\n\t\t}\n\t} else if (param === _browser.window) {\n\t\t// window\n\t\tel = param;\n\t} else if (param.nodeName && (param.nodeType === 1 || param.nodeType === 9)) {\n\t\t// HTMLElement, Document\n\t\tel = param;\n\t} else if (\"jQuery\" in _browser.window && param instanceof _browser.window.jQuery || param.constructor.prototype.jquery) {\n\t\t// jQuery\n\t\tel = $(multi ? param.toArray() : param.get(0), multi);\n\t} else if (Array.isArray(param)) {\n\t\tel = param.map(function (v) {\n\t\t\treturn $(v);\n\t\t});\n\t\tif (!multi) {\n\t\t\tel = el.length >= 1 ? el[0] : undefined;\n\t\t}\n\t}\n\treturn el;\n}\nfunction addEvent(element, type, handler, eventListenerOptions) {\n\tif (_consts.SUPPORT_ADDEVENTLISTENER) {\n\t\tvar options = eventListenerOptions || false;\n\n\t\tif ((typeof eventListenerOptions === \"undefined\" ? \"undefined\" : _typeof(eventListenerOptions)) === \"object\") {\n\t\t\toptions = _consts.SUPPORT_PASSIVE ? eventListenerOptions : false;\n\t\t}\n\t\telement.addEventListener(type, handler, options);\n\t} else if (element.attachEvent) {\n\t\telement.attachEvent(\"on\" + type, handler);\n\t} else {\n\t\telement[\"on\" + type] = handler;\n\t}\n}\nfunction removeEvent(element, type, handler) {\n\tif (element.removeEventListener) {\n\t\telement.removeEventListener(type, handler, false);\n\t} else if (element.detachEvent) {\n\t\telement.detachEvent(\"on\" + type, handler);\n\t} else {\n\t\telement[\"on\" + type] = null;\n\t}\n}\nfunction scroll(el) {\n\tvar horizontal = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n\tvar prop = \"scroll\" + (horizontal ? \"Left\" : \"Top\");\n\n\tif (el === _browser.window) {\n\t\treturn _browser.window[horizontal ? \"pageXOffset\" : \"pageYOffset\"] || _browser.document.body[prop] || _browser.document.documentElement[prop];\n\t} else {\n\t\treturn el[prop];\n\t}\n}\nfunction scrollTo(el, x, y) {\n\tif (el === _browser.window) {\n\t\tel.scroll(x, y);\n\t} else {\n\t\tel.scrollLeft = x;\n\t\tel.scrollTop = y;\n\t}\n}\nfunction scrollBy(el, x, y) {\n\tif (el === _browser.window) {\n\t\tel.scrollBy(x, y);\n\t} else {\n\t\tel.scrollLeft += x;\n\t\tel.scrollTop += y;\n\t}\n}\nfunction getStyles(el) {\n\treturn (_consts.SUPPORT_COMPUTEDSTYLE ? _browser.window.getComputedStyle(el) : el.currentStyle) || {};\n}\nfunction _getSize(el, name, isOffset) {\n\tif (el === _browser.window) {\n\t\t// WINDOW\n\t\treturn _browser.window[\"inner\" + name] || _browser.document.body[\"client\" + name];\n\t} else if (el.nodeType === 9) {\n\t\t// DOCUMENT_NODE\n\t\tvar doc = el.documentElement;\n\n\t\treturn Math.max(el.body[\"scroll\" + name], doc[\"scroll\" + name], el.body[\"offset\" + name], doc[\"offset\" + name], doc[\"client\" + name]);\n\t} else {\n\t\t// NODE\n\t\tvar size = el[\"\" + (isOffset ? \"offset\" : \"client\") + name] || el[\"\" + (isOffset ? \"client\" : \"offset\") + name];\n\n\t\treturn parseFloat(size || getStyles(el)[name.toLowerCase()]) || 0;\n\t}\n}\nfunction innerWidth(el) {\n\treturn _getSize(el, \"Width\", false);\n}\nfunction innerHeight(el) {\n\treturn _getSize(el, \"Height\", false);\n}\nfunction outerWidth(el) {\n\treturn _getSize(el, \"Width\", true);\n}\nfunction outerHeight(el) {\n\treturn _getSize(el, \"Height\", true);\n}\nvar STYLE = exports.STYLE = {\n\tvertical: {\n\t\tpos1: \"top\",\n\t\tendPos1: \"bottom\",\n\t\tsize1: \"height\",\n\t\tpos2: \"left\",\n\t\tendPos2: \"right\",\n\t\tsize2: \"width\"\n\t},\n\thorizontal: {\n\t\tpos1: \"left\",\n\t\tendPos1: \"right\",\n\t\tsize1: \"width\",\n\t\tpos2: \"top\",\n\t\tendPos2: \"bottom\",\n\t\tsize2: \"height\"\n\t}\n};\n\nfunction getStyleNames(isHorizontal) {\n\treturn STYLE[isHorizontal ? _consts.HORIZONTAL : _consts.VERTICAL];\n}\n\nfunction assignOptions(defaultOptions, options) {\n\treturn _extends({}, _consts.DEFAULT_OPTIONS, defaultOptions, options);\n}\n\nfunction toZeroArray(outline) {\n\tif (!outline || !outline.length) {\n\t\treturn [0];\n\t}\n\treturn outline;\n}\nfunction cloneItems(items) {\n\treturn items.map(function (item) {\n\t\treturn _extends({}, item);\n\t});\n}\nfunction isWindow(el) {\n\treturn el === _browser.window;\n}\n\nfunction fill(arr, value) {\n\tvar length = arr.length;\n\n\tfor (var i = length - 1; i >= 0; --i) {\n\t\tarr[i] = value;\n\t}\n\n\treturn arr;\n}\n\nfunction isUndefined(target) {\n\treturn typeof target === \"undefined\";\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/utils.js\n// module id = 0\n// module chunks = 0 1","\"use strict\";\n\nexports.__esModule = true;\nexports.DEFENSE_BROWSER = exports.WEBKIT_VERSION = exports.PROCESSING = exports.LOADING_PREPEND = exports.LOADING_APPEND = exports.IDLE = exports.ALIGN = exports.isMobile = exports.agent = exports.DEFAULT_OPTIONS = exports.GROUPKEY_ATT = exports.DUMMY_POSITION = exports.SINGLE = exports.MULTI = exports.NO_TRUSTED = exports.TRUSTED = exports.NO_CACHE = exports.CACHE = exports.HORIZONTAL = exports.VERTICAL = exports.PREPEND = exports.APPEND = exports.IGNORE_CLASSNAME = exports.CONTAINER_CLASSNAME = exports.RETRY = exports.IS_ANDROID2 = exports.IS_IOS = exports.IS_IE = exports.SUPPORT_PASSIVE = exports.SUPPORT_ADDEVENTLISTENER = exports.SUPPORT_COMPUTEDSTYLE = undefined;\n\nvar _browser = require(\"./browser\");\n\nvar ua = _browser.window.navigator.userAgent;\n\nvar SUPPORT_COMPUTEDSTYLE = exports.SUPPORT_COMPUTEDSTYLE = !!(\"getComputedStyle\" in _browser.window);\nvar SUPPORT_ADDEVENTLISTENER = exports.SUPPORT_ADDEVENTLISTENER = !!(\"addEventListener\" in _browser.document);\nvar SUPPORT_PASSIVE = exports.SUPPORT_PASSIVE = function () {\n\tvar supportsPassiveOption = false;\n\n\ttry {\n\t\tif (SUPPORT_ADDEVENTLISTENER && Object.defineProperty) {\n\t\t\t_browser.document.addEventListener(\"test\", null, Object.defineProperty({}, \"passive\", {\n\t\t\t\tget: function get() {\n\t\t\t\t\tsupportsPassiveOption = true;\n\t\t\t\t}\n\t\t\t}));\n\t\t}\n\t} catch (e) {}\n\treturn supportsPassiveOption;\n}();\n\nvar IS_IE = exports.IS_IE = /MSIE|Trident|Windows Phone|Edge/.test(ua);\nvar IS_IOS = exports.IS_IOS = /iPhone|iPad/.test(ua);\nvar IS_ANDROID2 = exports.IS_ANDROID2 = /Android 2\\./.test(ua);\nvar RETRY = exports.RETRY = 3;\nvar CONTAINER_CLASSNAME = exports.CONTAINER_CLASSNAME = \"_eg-infinitegrid-container_\";\nvar IGNORE_CLASSNAME = exports.IGNORE_CLASSNAME = \"_eg-infinitegrid-ignore_\";\n\nvar APPEND = exports.APPEND = true;\nvar PREPEND = exports.PREPEND = false;\nvar VERTICAL = exports.VERTICAL = \"vertical\";\nvar HORIZONTAL = exports.HORIZONTAL = \"horizontal\";\nvar CACHE = exports.CACHE = true;\nvar NO_CACHE = exports.NO_CACHE = false;\nvar TRUSTED = exports.TRUSTED = true;\nvar NO_TRUSTED = exports.NO_TRUSTED = false;\nvar MULTI = exports.MULTI = true;\nvar SINGLE = exports.SINGLE = false;\nvar DUMMY_POSITION = exports.DUMMY_POSITION = -100000;\nvar GROUPKEY_ATT = exports.GROUPKEY_ATT = \"data-groupkey\";\n\nvar DEFAULT_OPTIONS = exports.DEFAULT_OPTIONS = {\n\thorizontal: false,\n\tmargin: 0\n};\n\nvar agent = exports.agent = ua.toLowerCase();\nvar isMobile = exports.isMobile = /mobi|ios|android/.test(agent);\n\nvar ALIGN = exports.ALIGN = {\n\tSTART: \"start\",\n\tCENTER: \"center\",\n\tEND: \"end\",\n\tJUSTIFY: \"justify\"\n};\n\nvar IDLE = exports.IDLE = 0;\nvar LOADING_APPEND = exports.LOADING_APPEND = 1;\nvar LOADING_PREPEND = exports.LOADING_PREPEND = 2;\nvar PROCESSING = exports.PROCESSING = 4;\n\nvar webkit = /applewebkit\\/([\\d|.]*)/g.exec(agent);\n\nvar WEBKIT_VERSION = exports.WEBKIT_VERSION = webkit && parseInt(webkit[1], 10) || 0;\nvar DEFENSE_BROWSER = exports.DEFENSE_BROWSER = WEBKIT_VERSION && WEBKIT_VERSION < 537;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/consts.js\n// module id = 1\n// module chunks = 0 1","\"use strict\";\n\nexports.__esModule = true;\n/* eslint-disable no-new-func, no-nested-ternary */\n\nif (typeof window === \"undefined\") {\n\tglobal.window = {\n\t\tdocument: {},\n\t\tnavigator: {\n\t\t\tuserAgent: \"\"\n\t\t}\n\t};\n}\nvar win = window;\n/* eslint-enable no-new-func, no-nested-ternary */\n\nexports.window = win;\nvar document = exports.document = win.document;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/browser.js\n// module id = 2\n// module chunks = 0 1","\"use strict\";\n\nexports.__esModule = true;\n\nvar _browser = require(\"./browser\");\n\nvar _utils = require(\"./utils\");\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar elements = [];\n/* eslint-disable */\nfunction onResize(e) {\n\tAutoSizer.resizeAll();\n}\n/* eslint-enable */\n\nvar AutoSizer = function () {\n\tfunction AutoSizer() {\n\t\t_classCallCheck(this, AutoSizer);\n\t}\n\n\tAutoSizer.add = function add(element) {\n\t\tvar prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"data-\";\n\n\t\tif (!element.length) {\n\t\t\t(0, _utils.addEvent)(_browser.window, \"resize\", onResize);\n\t\t}\n\t\telement.__PREFIX__ = prefix;\n\t\telements.push(element);\n\t\tAutoSizer.resize(element);\n\t};\n\n\tAutoSizer.remove = function remove(element) {\n\t\tvar isFixed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n\t\tvar fixed = element.getAttribute(element.__PREFIX__ + \"fixed\") || \"width\";\n\n\t\tif (!isFixed) {\n\t\t\telement.style[fixed === \"width\" ? \"height\" : \"width\"] = \"\";\n\t\t}\n\t\tvar index = elements.indexOf(element);\n\n\t\tif (!~index) {\n\t\t\treturn;\n\t\t}\n\t\telements.splice(index, 1);\n\t\tif (!elements.length) {\n\t\t\t(0, _utils.removeEvent)(_browser.window, \"reisze\", onResize);\n\t\t}\n\t};\n\n\tAutoSizer.resize = function resize(element) {\n\t\tvar prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"data-\";\n\n\t\tvar elementPrefix = typeof element.__PREFIX__ === \"string\" ? element.__PREFIX__ : prefix;\n\t\tvar dataWidth = element.getAttribute(elementPrefix + \"width\");\n\t\tvar dataHeight = element.getAttribute(elementPrefix + \"height\");\n\t\tvar fixed = element.getAttribute(elementPrefix + \"fixed\");\n\n\t\tif (fixed === \"height\") {\n\t\t\tvar size = (0, _utils.innerHeight)(element) || dataHeight;\n\n\t\t\telement.style.width = dataWidth / dataHeight * size + \"px\";\n\t\t} else {\n\t\t\tvar _size = (0, _utils.innerWidth)(element) || dataWidth;\n\n\t\t\telement.style.height = dataHeight / dataWidth * _size + \"px\";\n\t\t}\n\t};\n\n\tAutoSizer.resizeAll = function resizeAll() {\n\t\telements.forEach(function (element) {\n\t\t\treturn AutoSizer.resize(element);\n\t\t});\n\t};\n\n\treturn AutoSizer;\n}();\n\nexports[\"default\"] = AutoSizer;\nmodule.exports = exports[\"default\"];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/AutoSizer.js\n// module id = 3\n// module chunks = 0 1","\"use strict\";\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _consts = require(\"./consts\");\n\nvar _utils = require(\"./utils\");\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ItemManager = function () {\n\tItemManager.from = function from(elements, selector, _ref) {\n\t\tvar groupKey = _ref.groupKey,\n\t\t isAppend = _ref.isAppend;\n\n\t\tvar filted = ItemManager.selectItems((0, _utils.$)(elements, _consts.MULTI), selector);\n\n\t\t// Item Structure\n\t\treturn (0, _utils.toArray)(filted).map(function (el) {\n\t\t\treturn {\n\t\t\t\tel: el,\n\t\t\t\tgroupKey: groupKey,\n\t\t\t\tcontent: el.outerHTML\n\t\t\t};\n\t\t});\n\t};\n\n\tItemManager.selectItems = function selectItems(elements) {\n\t\tvar selector = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"*\";\n\n\t\treturn elements.filter(function (v) {\n\t\t\tvar classNames = v.className.split(\" \");\n\n\t\t\tif (classNames.some(function (c) {\n\t\t\t\treturn c === _consts.IGNORE_CLASSNAME;\n\t\t\t})) {\n\t\t\t\treturn false;\n\t\t\t} else if (!selector || selector === \"*\") {\n\t\t\t\treturn v;\n\t\t\t} else {\n\t\t\t\treturn classNames.some(function (c) {\n\t\t\t\t\treturn c === selector;\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t};\n\n\tItemManager.pluck = function pluck(data, property) {\n\t\treturn data.reduce(function (acc, v) {\n\t\t\treturn acc.concat(v[property]);\n\t\t}, []);\n\t};\n\n\tfunction ItemManager() {\n\t\t_classCallCheck(this, ItemManager);\n\n\t\tthis.clear();\n\t}\n\n\tItemManager.prototype.getStatus = function getStatus() {\n\t\treturn {\n\t\t\t_data: this._data.map(function (data) {\n\t\t\t\tvar items = data.items.map(function (item) {\n\t\t\t\t\tvar item2 = _extends({}, item);\n\n\t\t\t\t\tdelete item2.el;\n\t\t\t\t\treturn item2;\n\t\t\t\t});\n\t\t\t\tvar data2 = _extends({}, data);\n\n\t\t\t\tdata2.items = items;\n\t\t\t\treturn data2;\n\t\t\t})\n\t\t};\n\t};\n\n\tItemManager.prototype.setStatus = function setStatus(status) {\n\t\tvar data = status._data;\n\n\t\tthis.set(data);\n\t};\n\n\tItemManager.prototype.size = function size() {\n\t\treturn this._data.length;\n\t};\n\n\tItemManager.prototype.fit = function fit(base, horizontal) {\n\t\tif (!this._data.length) {\n\t\t\treturn;\n\t\t}\n\t\tvar property = horizontal ? \"left\" : \"top\";\n\n\t\tif (base !== 0) {\n\t\t\tthis._data = this._data.map(function (v) {\n\t\t\t\tv.items = v.items.map(function (item) {\n\t\t\t\t\titem.rect[property] -= base;\n\t\t\t\t\treturn item;\n\t\t\t\t});\n\t\t\t\tv.outlines.start = v.outlines.start.map(function (start) {\n\t\t\t\t\treturn start - base;\n\t\t\t\t});\n\t\t\t\tv.outlines.end = v.outlines.end.map(function (end) {\n\t\t\t\t\treturn end - base;\n\t\t\t\t});\n\t\t\t\treturn v;\n\t\t\t});\n\t\t}\n\t};\n\n\tItemManager.prototype.pluck = function pluck(property, start, end) {\n\t\tvar data = (0, _utils.isUndefined)(start) ? this._data : this._data.slice(start, ((0, _utils.isUndefined)(end) ? start : end) + 1);\n\n\t\treturn ItemManager.pluck(data, property);\n\t};\n\n\tItemManager.prototype.getOutline = function getOutline(index, property) {\n\t\tif (this._data.length) {\n\t\t\treturn this._data[index].outlines[property];\n\t\t} else {\n\t\t\treturn [];\n\t\t}\n\t};\n\n\tItemManager.prototype.getEdgeIndex = function getEdgeIndex(cursor, start, end) {\n\t\tvar prop = cursor === \"start\" ? \"min\" : \"max\";\n\t\tvar index = -1;\n\t\tvar targetValue = cursor === \"start\" ? Infinity : -Infinity;\n\n\t\tfor (var i = start; i <= end; i++) {\n\t\t\tvar value = Math[prop].apply(Math, this.getOutline(i, cursor));\n\n\t\t\tif (cursor === \"start\" && targetValue > value || cursor === \"end\" && targetValue < value) {\n\t\t\t\ttargetValue = value;\n\t\t\t\tindex = i;\n\t\t\t}\n\t\t}\n\t\treturn index;\n\t};\n\n\tItemManager.prototype.getEdge = function getEdge(cursor, start, end) {\n\t\tvar dataIdx = this.getEdgeIndex(cursor, start, end);\n\t\tvar items = this.pluck(\"items\", dataIdx);\n\n\t\tif (items.length) {\n\t\t\tvar itemIdx = this.getOutline(dataIdx, cursor + \"Index\");\n\n\t\t\treturn items.length > itemIdx ? items[itemIdx] : null;\n\t\t}\n\t\treturn null;\n\t};\n\n\tItemManager.prototype.getEdgeValue = function getEdgeValue(cursor, start, end) {\n\t\tvar outlines = this.pluck(\"outlines\", this.getEdgeIndex(cursor, start, end)).reduce(function (acc, v) {\n\t\t\treturn acc.concat(v[cursor]);\n\t\t}, []);\n\n\t\treturn outlines.length ? Math[cursor === \"start\" ? \"min\" : \"max\"].apply(Math, outlines) : 0;\n\t};\n\n\tItemManager.prototype.append = function append(layouted) {\n\t\tthis._data.push(layouted);\n\t\treturn layouted.items;\n\t};\n\n\tItemManager.prototype.prepend = function prepend(layouted) {\n\t\tthis._data.unshift(layouted);\n\t\treturn layouted.items;\n\t};\n\n\tItemManager.prototype.clear = function clear() {\n\t\tthis._data = [];\n\t};\n\n\tItemManager.prototype.remove = function remove(element, start, end) {\n\t\tvar items = [];\n\t\tvar key = element.getAttribute(_consts.GROUPKEY_ATT);\n\t\tvar data = this.get(start, end).filter(function (v) {\n\t\t\treturn String(v.groupKey) === key;\n\t\t});\n\n\t\tif (!data.length) {\n\t\t\treturn items;\n\t\t}\n\t\tdata = data[0];\n\n\t\tvar len = data.items.length;\n\t\tvar idx = -1;\n\n\t\tfor (var i = 0; i < len; i++) {\n\t\t\tif (data.items[i].el === element) {\n\t\t\t\tidx = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (~idx) {\n\t\t\t// remove item information\n\t\t\tdata.items.splice(idx, 1);\n\t\t\tthis.set(data, key);\n\t\t\titems = data.items;\n\t\t}\n\t\treturn items;\n\t};\n\n\tItemManager.prototype.indexOf = function indexOf(data) {\n\t\tvar groupKey = (typeof data === \"undefined\" ? \"undefined\" : _typeof(data)) === \"object\" ? data.groupKey : data;\n\t\tvar datas = this._data;\n\t\tvar length = datas.length;\n\n\t\tfor (var i = 0; i < length; ++i) {\n\t\t\tif (groupKey === datas[i].groupKey) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t};\n\n\tItemManager.prototype.get = function get(start, end) {\n\t\tif ((0, _utils.isUndefined)(start)) {\n\t\t\treturn this._data.concat();\n\t\t}\n\t\treturn this._data.slice(start, ((0, _utils.isUndefined)(end) ? start : end) + 1);\n\t};\n\n\tItemManager.prototype.set = function set(data, key) {\n\t\tif (!(0, _utils.isUndefined)(key) && !Array.isArray(data)) {\n\t\t\tvar len = this._data.length;\n\t\t\tvar idx = -1;\n\n\t\t\tfor (var i = 0; i < len; i++) {\n\t\t\t\tif (this._data[i].groupKey === key) {\n\t\t\t\t\tidx = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t~idx && (this._data[idx] = data);\n\t\t} else {\n\t\t\tthis._data = data.concat();\n\t\t}\n\t};\n\n\tItemManager.prototype.getData = function getData(index) {\n\t\treturn this._data[index];\n\t};\n\n\treturn ItemManager;\n}();\n\nexports[\"default\"] = ItemManager;\nmodule.exports = exports[\"default\"];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/ItemManager.js\n// module id = 4\n// module chunks = 0 1","\"use strict\";\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _consts = require(\"./consts\");\n\nvar _browser = require(\"./browser\");\n\nvar _utils = require(\"./utils\");\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defense(element) {\n\tvar container = _browser.document.createElement(\"div\");\n\n\tcontainer.className = _consts.CONTAINER_CLASSNAME;\n\tcontainer.style.position = \"relative\";\n\tcontainer.style.height = \"100%\";\n\n\tvar children = element.children;\n\tvar length = children.length; // for IE8\n\n\tfor (var i = 0; i < length; i++) {\n\t\tcontainer.appendChild(children[0]);\n\t}\n\n\telement.appendChild(container);\n\treturn container;\n}\n\nvar DOMRenderer = function () {\n\tDOMRenderer.renderItem = function renderItem(item, styles) {\n\t\tvar el = item.el;\n\n\t\tif (el) {\n\t\t\tvar elStyle = el.style;\n\n\t\t\t// for debugging\n\t\t\tel.setAttribute(_consts.GROUPKEY_ATT, item.groupKey);\n\t\t\telStyle.position = \"absolute\";\n\t\t\t[\"left\", \"top\", \"width\", \"height\"].forEach(function (p) {\n\t\t\t\tp in styles && (elStyle[p] = styles[p] + \"px\");\n\t\t\t});\n\t\t}\n\t};\n\n\tDOMRenderer.renderItems = function renderItems(items) {\n\t\titems.forEach(function (item) {\n\t\t\tDOMRenderer.renderItem(item, item.rect);\n\t\t});\n\t};\n\n\tDOMRenderer.removeItems = function removeItems(items) {\n\t\titems.forEach(function (item) {\n\t\t\tif (item.el) {\n\t\t\t\tDOMRenderer.removeElement(item.el);\n\t\t\t\titem.el = null;\n\t\t\t}\n\t\t});\n\t};\n\n\tDOMRenderer.removeElement = function removeElement(element) {\n\t\tvar parentNode = element && element.parentNode;\n\n\t\tif (!parentNode) {\n\t\t\treturn;\n\t\t}\n\t\tparentNode.removeChild(element);\n\t};\n\n\tDOMRenderer.createElements = function createElements(items) {\n\t\tif (!items.length || items[0].el) {\n\t\t\treturn items;\n\t\t}\n\t\tvar elements = (0, _utils.$)(items.map(function (_ref) {\n\t\t\tvar content = _ref.content;\n\t\t\treturn content.replace(/^[\\s\\uFEFF]+|[\\s\\uFEFF]+$/g, \"\");\n\t\t}).join(\"\"), _consts.MULTI);\n\n\t\treturn items.map(function (item, index) {\n\t\t\titem.el = elements[index];\n\t\t\treturn item;\n\t\t});\n\t};\n\n\tfunction DOMRenderer(element, options) {\n\t\t_classCallCheck(this, DOMRenderer);\n\n\t\t_extends(this.options = {\n\t\t\tisOverflowScroll: false,\n\t\t\tisEqualSize: false,\n\t\t\thorizontal: false\n\t\t}, options);\n\t\tthis._size = {\n\t\t\tcontainer: -1,\n\t\t\tview: -1,\n\t\t\tviewport: -1,\n\t\t\titem: null\n\t\t};\n\t\tthis._init(element);\n\t\tthis.resize();\n\t}\n\n\tDOMRenderer.prototype.getStatus = function getStatus() {\n\t\treturn {\n\t\t\tcssText: this.container.style.cssText,\n\t\t\toptions: _extends({}, this.options),\n\t\t\t_size: _extends({}, this._size)\n\t\t};\n\t};\n\n\tDOMRenderer.prototype.setStatus = function setStatus(status) {\n\t\tthis.container.style.cssText = status.cssText;\n\t\t_extends(this.options, status.options);\n\t\t_extends(this._size, status._size);\n\t};\n\n\tDOMRenderer.prototype.updateSize = function updateSize(items) {\n\t\tvar _this = this;\n\n\t\treturn items.map(function (item) {\n\t\t\tif (item.el) {\n\t\t\t\tif (_this.options.isEqualSize) {\n\t\t\t\t\t_this._size.item = _this._size.item || {\n\t\t\t\t\t\twidth: (0, _utils.outerWidth)(item.el),\n\t\t\t\t\t\theight: (0, _utils.outerHeight)(item.el)\n\t\t\t\t\t};\n\t\t\t\t\titem.size = _extends({}, _this._size.item);\n\t\t\t\t} else {\n\t\t\t\t\titem.size = {\n\t\t\t\t\t\twidth: (0, _utils.outerWidth)(item.el),\n\t\t\t\t\t\theight: (0, _utils.outerHeight)(item.el)\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (!item.orgSize) {\n\t\t\t\t\titem.orgSize = _extends({}, item.size);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn item;\n\t\t});\n\t};\n\n\tDOMRenderer.prototype._init = function _init(el) {\n\t\tvar element = (0, _utils.$)(el);\n\t\tvar style = (0, _utils.getStyles)(element);\n\t\tvar _options = this.options,\n\t\t isOverflowScroll = _options.isOverflowScroll,\n\t\t horizontal = _options.horizontal;\n\n\n\t\tthis._orgStyle = {};\n\n\t\tif (style.position === \"static\") {\n\t\t\tthis._orgStyle.position = element.style.position;\n\t\t\telement.style.position = \"relative\";\n\t\t}\n\t\tif (isOverflowScroll) {\n\t\t\tvar target = horizontal ? [\"X\", \"Y\"] : [\"Y\", \"X\"];\n\n\t\t\tthis._orgStyle.overflowX = element.style.overflowX;\n\t\t\tthis._orgStyle.overflowY = element.style.overflowY;\n\t\t\telement.style[\"overflow\" + target[0]] = \"scroll\";\n\t\t\telement.style[\"overflow\" + target[1]] = \"hidden\";\n\t\t\tthis.view = element;\n\t\t\t// defense code for android < 4.4 or webkit < 537\n\t\t\tthis.container = horizontal && _consts.DEFENSE_BROWSER ? _defense(element) : element;\n\t\t} else {\n\t\t\tthis.view = _browser.window;\n\t\t\tthis.container = element;\n\t\t}\n\t};\n\n\tDOMRenderer.prototype.append = function append(items) {\n\t\tthis._insert(items, _consts.APPEND, {\n\t\t\ttop: _consts.DUMMY_POSITION,\n\t\t\tleft: _consts.DUMMY_POSITION\n\t\t});\n\t};\n\n\tDOMRenderer.prototype.prepend = function prepend(items) {\n\t\tthis._insert(items, _consts.PREPEND, {\n\t\t\ttop: _consts.DUMMY_POSITION,\n\t\t\tleft: _consts.DUMMY_POSITION\n\t\t});\n\t};\n\n\tDOMRenderer.prototype.clear = function clear() {\n\t\tthis.container.innerHTML = \"\";\n\t\tif (!this.options.isOverflowScroll) {\n\t\t\tthis.container.style[this.options.horizontal ? \"width\" : \"height\"] = \"\";\n\t\t}\n\t\tthis._size = {\n\t\t\titem: null,\n\t\t\tviewport: -1,\n\t\t\tcontainer: -1,\n\t\t\tview: -1\n\t\t};\n\t};\n\n\tDOMRenderer.prototype.createAndInsert = function createAndInsert(items, isAppend) {\n\t\tvar itemsWithElement = DOMRenderer.createElements(items);\n\n\t\tDOMRenderer.renderItems(itemsWithElement);\n\t\tthis._insert(itemsWithElement, isAppend);\n\t};\n\n\tDOMRenderer.prototype._insert = function _insert(items, isAppend, styles) {\n\t\tvar container = this.container;\n\t\tvar df = _browser.document.createDocumentFragment();\n\n\t\titems.forEach(function (item) {\n\t\t\tstyles && DOMRenderer.renderItem(item, styles);\n\t\t\tisAppend ? df.appendChild(item.el) : df.insertBefore(item.el, df.firstChild);\n\t\t});\n\t\tisAppend ? container.appendChild(df) : container.insertBefore(df, container.firstChild);\n\t};\n\n\tDOMRenderer.prototype._calcSize = function _calcSize() {\n\t\treturn this.options.horizontal ? (0, _utils.innerHeight)(this.container) : (0, _utils.innerWidth)(this.container);\n\t};\n\n\tDOMRenderer.prototype.getViewSize = function getViewSize() {\n\t\treturn this._size.view;\n\t};\n\n\tDOMRenderer.prototype.getViewportSize = function getViewportSize() {\n\t\treturn this._size.viewport;\n\t};\n\n\tDOMRenderer.prototype.setContainerSize = function setContainerSize(size) {\n\t\tvar _options2 = this.options,\n\t\t isOverflowScroll = _options2.isOverflowScroll,\n\t\t horizontal = _options2.horizontal;\n\n\n\t\tif (!isOverflowScroll || horizontal && _consts.DEFENSE_BROWSER) {\n\t\t\tthis.container.style[horizontal ? \"width\" : \"height\"] = size + \"px\";\n\t\t}\n\t};\n\n\tDOMRenderer.prototype.resize = function resize() {\n\t\tvar horizontal = this.options.horizontal;\n\t\tvar view = this.view;\n\t\tvar isResize = this.isNeededResize();\n\n\t\tif (isResize) {\n\t\t\tthis._size = {\n\t\t\t\tviewport: this._calcSize(),\n\t\t\t\titem: null\n\t\t\t};\n\t\t}\n\t\tthis._size.view = horizontal ? (0, _utils.innerWidth)(view) : (0, _utils.innerHeight)(view);\n\t\treturn isResize;\n\t};\n\n\tDOMRenderer.prototype.isNeededResize = function isNeededResize() {\n\t\treturn this._calcSize() !== this._size.viewport;\n\t};\n\n\tDOMRenderer.prototype.destroy = function destroy() {\n\t\tthis._size = {\n\t\t\tviewport: -1,\n\t\t\tview: -1,\n\t\t\titem: null\n\t\t};\n\t\tthis.container.style[this.options.horizontal ? \"width\" : \"height\"] = \"\";\n\t\tfor (var p in this._orgStyle) {\n\t\t\tthis[this.options.isOverflowScroll ? \"view\" : \"container\"].style[p] = this._orgStyle[p];\n\t\t}\n\t};\n\n\treturn DOMRenderer;\n}();\n\nexports[\"default\"] = DOMRenderer;\nmodule.exports = exports[\"default\"];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/DOMRenderer.js\n// module id = 5\n// module chunks = 0 1","\"use strict\";\n\nexports.__esModule = true;\nexports.CHECK_ONLY_ERROR = exports.CHECK_ALL = undefined;\n\nvar _consts = require(\"./consts\");\n\nvar _utils = require(\"./utils\");\n\nvar _AutoSizer = require(\"./AutoSizer\");\n\nvar _AutoSizer2 = _interopRequireDefault(_AutoSizer);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar CHECK_ALL = exports.CHECK_ALL = 1;\nvar CHECK_ONLY_ERROR = exports.CHECK_ONLY_ERROR = 2;\n\nfunction isDataAttribute(target, prefix) {\n\treturn !!target.getAttribute(prefix + \"width\");\n}\n\nvar ImageLoaded = function () {\n\tfunction ImageLoaded() {\n\t\t_classCallCheck(this, ImageLoaded);\n\t}\n\n\tImageLoaded.waitImageLoaded = function waitImageLoaded(needCheck, _ref) {\n\t\tvar _ref$prefix = _ref.prefix,\n\t\t prefix = _ref$prefix === undefined ? \"\" : _ref$prefix,\n\t\t length = _ref.length,\n\t\t type = _ref.type,\n\t\t complete = _ref.complete,\n\t\t error = _ref.error,\n\t\t end = _ref.end;\n\n\t\tvar checkCount = 0;\n\t\tvar endCount = length;\n\n\t\tif (type !== CHECK_ONLY_ERROR) {\n\t\t\tcheckCount = endCount;\n\t\t}\n\t\tvar checkEnd = function checkEnd() {\n\t\t\tif (--endCount !== 0) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tend && end();\n\t\t};\n\t\tvar checkImage = function checkImage() {\n\t\t\tcheckCount--;\n\t\t\tif (checkCount !== 0) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcomplete && complete();\n\t\t};\n\t\tvar onError = function onError(target) {\n\t\t\tvar itemIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : target.__ITEM_INDEX__;\n\n\t\t\terror && error({\n\t\t\t\ttarget: target,\n\t\t\t\titemIndex: itemIndex\n\t\t\t});\n\t\t};\n\t\tvar onCheck = function onCheck(e) {\n\t\t\tvar target = e.target || e.srcElement;\n\n\t\t\t(0, _utils.removeEvent)(target, \"error\", onCheck);\n\t\t\t(0, _utils.removeEvent)(target, \"load\", onCheck);\n\n\t\t\tif (type === CHECK_ALL && isDataAttribute(target, prefix)) {\n\t\t\t\t_AutoSizer2[\"default\"].remove(target, e.type === \"error\");\n\t\t\t} else {\n\t\t\t\tcheckImage();\n\t\t\t}\n\t\t\tif (e.type === \"error\") {\n\t\t\t\tonError(target);\n\t\t\t}\n\t\t\tdelete target.__ITEM_INDEX__;\n\t\t\tcheckEnd();\n\t\t};\n\n\t\tneedCheck.forEach(function (images, i) {\n\t\t\timages.forEach(function (v) {\n\t\t\t\t// workaround for IE\n\t\t\t\tif (v.complete && (!_consts.IS_IE || _consts.IS_IE && v.naturalWidth)) {\n\t\t\t\t\tif (!v.naturalWidth) {\n\t\t\t\t\t\tonError(v, i);\n\t\t\t\t\t}\n\t\t\t\t\tcheckImage();\n\t\t\t\t\tcheckEnd();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tv.__ITEM_INDEX__ = i;\n\t\t\t\tif (type === CHECK_ALL && isDataAttribute(v, prefix)) {\n\t\t\t\t\t_AutoSizer2[\"default\"].add(v, prefix);\n\t\t\t\t\tcheckImage();\n\t\t\t\t}\n\t\t\t\t(0, _utils.addEvent)(v, \"load\", onCheck);\n\t\t\t\t(0, _utils.addEvent)(v, \"error\", onCheck);\n\n\t\t\t\t_consts.IS_IE && v.setAttribute(\"src\", v.getAttribute(\"src\"));\n\t\t\t});\n\t\t});\n\t};\n\n\tImageLoaded.checkImageLoaded = function checkImageLoaded(el) {\n\t\tif (el.tagName === \"IMG\") {\n\t\t\treturn el.complete ? [] : [el];\n\t\t} else {\n\t\t\treturn (0, _utils.toArray)(el.querySelectorAll(\"img\"));\n\t\t}\n\t};\n\n\tImageLoaded.check = function check(elements, _ref2) {\n\t\tvar _this = this;\n\n\t\tvar prefix = _ref2.prefix,\n\t\t _ref2$type = _ref2.type,\n\t\t type = _ref2$type === undefined ? CHECK_ALL : _ref2$type,\n\t\t complete = _ref2.complete,\n\t\t error = _ref2.error,\n\t\t end = _ref2.end;\n\n\t\tvar images = elements.map(function (element) {\n\t\t\treturn _this.checkImageLoaded(element);\n\t\t});\n\t\tvar length = images.reduce(function (sum, element) {\n\t\t\treturn sum + element.length;\n\t\t}, 0);\n\n\t\tif (type === CHECK_ONLY_ERROR || length === 0) {\n\t\t\t// convert to async\n\t\t\tsetTimeout(function () {\n\t\t\t\tcomplete && complete();\n\t\t\t\tif (length === 0) {\n\t\t\t\t\tend && end();\n\t\t\t\t}\n\t\t\t}, 0);\n\t\t}\n\t\tif (length > 0) {\n\t\t\tsetTimeout(function () {\n\t\t\t\t_this.waitImageLoaded(images, { prefix: prefix, length: length, type: type, complete: complete, error: error, end: end });\n\t\t\t}, 0);\n\t\t}\n\t};\n\n\treturn ImageLoaded;\n}();\n\nexports[\"default\"] = ImageLoaded;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/ImageLoaded.js\n// module id = 6\n// module chunks = 0 1","\"use strict\";\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _consts = require(\"./consts\");\n\nvar _utils = require(\"./utils\");\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Watcher = function () {\n\tfunction Watcher(view, options) {\n\t\t_classCallCheck(this, Watcher);\n\n\t\t_extends(this.options = {\n\t\t\tcontainer: view,\n\t\t\tresize: function resize() {},\n\t\t\tcheck: function check() {},\n\t\t\tisOverflowScroll: false,\n\t\t\thorizontal: false\n\t\t}, options);\n\t\tthis._timer = {\n\t\t\tresize: null\n\t\t\t// doubleCheck: null,\n\t\t\t// doubleCheckCount: RETRY,\n\t\t};\n\t\tthis.reset();\n\t\tthis._containerOffset = 0;\n\t\tthis._view = view;\n\t\tthis._onCheck = this._onCheck.bind(this);\n\t\tthis._onResize = this._onResize.bind(this);\n\t\tthis.attachEvent();\n\t\tthis.setScrollPos();\n\t\tthis._setContainerOffset();\n\t}\n\n\tWatcher.prototype.getStatus = function getStatus() {\n\t\treturn {\n\t\t\t_prevPos: this._prevPos,\n\t\t\tscrollPos: this.getOrgScrollPos()\n\t\t};\n\t};\n\n\tWatcher.prototype.setStatus = function setStatus(status) {\n\t\tvar applyScrollPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n\t\tthis._prevPos = status._prevPos;\n\t\tapplyScrollPos && this.scrollTo(status.scrollPos);\n\t};\n\n\tWatcher.prototype.scrollBy = function scrollBy(pos) {\n\t\tvar arrPos = this.options.horizontal ? [pos, 0] : [0, pos];\n\n\t\t_utils.scrollBy.apply(undefined, [this._view].concat(arrPos));\n\t\tthis.setScrollPos();\n\t};\n\n\tWatcher.prototype.scrollTo = function scrollTo(pos) {\n\t\tvar arrPos = this.options.horizontal ? [pos, 0] : [0, pos];\n\n\t\t_utils.scrollTo.apply(undefined, [this._view].concat(arrPos));\n\t};\n\n\tWatcher.prototype.getScrollPos = function getScrollPos() {\n\t\treturn this._prevPos;\n\t};\n\n\tWatcher.prototype.setScrollPos = function setScrollPos(pos) {\n\t\tvar rawPos = pos;\n\n\t\tif (typeof pos === \"undefined\") {\n\t\t\trawPos = this.getOrgScrollPos();\n\t\t}\n\t\tthis._prevPos = rawPos - this.getContainerOffset();\n\t};\n\n\tWatcher.prototype.attachEvent = function attachEvent() {\n\t\t(0, _utils.addEvent)(this._view, \"scroll\", this._onCheck);\n\t\t(0, _utils.addEvent)(window, \"resize\", this._onResize);\n\t};\n\n\tWatcher.prototype.getOrgScrollPos = function getOrgScrollPos() {\n\t\treturn (0, _utils.scroll)(this._view, this.options.horizontal);\n\t};\n\n\tWatcher.prototype.reset = function reset() {\n\t\tthis._prevPos = null;\n\t};\n\n\tWatcher.prototype._onCheck = function _onCheck() {\n\t\tvar prevPos = this.getScrollPos();\n\t\tvar orgScrollPos = this.getOrgScrollPos();\n\n\t\tthis.setScrollPos(orgScrollPos);\n\t\tvar scrollPos = this.getScrollPos();\n\n\t\tif (prevPos === null || _consts.IS_IOS && orgScrollPos === 0 || prevPos === scrollPos) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.options.check({\n\t\t\tisForward: prevPos < scrollPos,\n\t\t\tscrollPos: scrollPos,\n\t\t\torgScrollPos: orgScrollPos,\n\t\t\thorizontal: this.options.horizontal\n\t\t});\n\t};\n\n\tWatcher.prototype.getContainerOffset = function getContainerOffset() {\n\t\treturn this._containerOffset;\n\t};\n\n\tWatcher.prototype._setContainerOffset = function _setContainerOffset() {\n\t\tthis._containerOffset = this.options.isOverflowScroll ? 0 : this.options.container[\"offset\" + (this.options.horizontal ? \"Left\" : \"Top\")];\n\t};\n\n\tWatcher.prototype._onResize = function _onResize() {\n\t\tvar _this = this;\n\n\t\tif (this._timer.resize) {\n\t\t\tclearTimeout(this._timer.resize);\n\t\t}\n\t\tthis._timer.resize = setTimeout(function () {\n\t\t\t_this._setContainerOffset();\n\t\t\t_this.options.resize();\n\t\t\t_this._timer.resize = null;\n\t\t\t_this.reset();\n\t\t}, 100);\n\t};\n\n\tWatcher.prototype.detachEvent = function detachEvent() {\n\t\t(0, _utils.removeEvent)(window, \"resize\", this._onResize);\n\t};\n\n\tWatcher.prototype.destroy = function destroy() {\n\t\tthis.detachEvent();\n\t\tthis.reset();\n\t};\n\n\treturn Watcher;\n}();\n\nexports[\"default\"] = Watcher;\nmodule.exports = exports[\"default\"];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/Watcher.js\n// module id = 7\n// module chunks = 0 1","\"use strict\";\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction isVisible(group, threshold, scrollPos, endScrollPos) {\n\tvar items = group.items,\n\t outlines = group.outlines;\n\n\tvar start = outlines.start;\n\tvar end = outlines.end;\n\n\tif (start.legnth === 0 || end.length === 0 || !items.length || !items[0].el) {\n\t\treturn 2;\n\t}\n\tvar min = Math.min.apply(Math, start);\n\tvar max = Math.max.apply(Math, end);\n\n\tif (endScrollPos + threshold < min) {\n\t\treturn +1;\n\t} else if (scrollPos - threshold > max) {\n\t\treturn -1;\n\t}\n\treturn 0;\n}\n\nvar Infinite = function () {\n\tfunction Infinite(itemManger, options) {\n\t\t_classCallCheck(this, Infinite);\n\n\t\tthis.options = _extends({\n\t\t\tuseRecycle: true,\n\t\t\tthreshold: 100,\n\t\t\tappend: function append() {},\n\t\t\tprepend: function prepend() {},\n\t\t\trecycle: function recycle() {}\n\t\t}, options);\n\t\tthis._items = itemManger;\n\t\tthis.clear();\n\t}\n\n\tInfinite.prototype.setSize = function setSize(size) {\n\t\tthis._status.size = size;\n\t};\n\n\tInfinite.prototype.recycle = function recycle(scrollPos, isForward) {\n\t\tif (!this.options.useRecycle) {\n\t\t\treturn;\n\t\t}\n\t\tvar _status = this._status,\n\t\t startCursor = _status.startCursor,\n\t\t endCursor = _status.endCursor,\n\t\t size = _status.size;\n\n\n\t\tif (startCursor === -1 || endCursor === -1) {\n\t\t\treturn;\n\t\t}\n\t\tvar endScrollPos = scrollPos + size;\n\t\tvar _options = this.options,\n\t\t threshold = _options.threshold,\n\t\t recycle = _options.recycle;\n\n\t\tvar visibles = this._items.get(startCursor, endCursor).map(function (group) {\n\t\t\treturn isVisible(group, threshold, scrollPos, endScrollPos);\n\t\t});\n\t\tvar length = visibles.length;\n\t\tvar start = isForward ? 0 : visibles.lastIndexOf(0);\n\t\tvar end = isForward ? visibles.indexOf(0) - 1 : visibles.length - 1;\n\n\t\tif (!isForward && start !== -1) {\n\t\t\tstart += 1;\n\t\t}\n\t\tif (start < 0 || end < 0 || start > end || end - start + 1 >= length) {\n\t\t\treturn;\n\t\t}\n\t\tstart = startCursor + start;\n\t\tend = startCursor + end;\n\n\t\trecycle({ start: start, end: end });\n\t\tif (isForward) {\n\t\t\tthis.setCursor(\"start\", end + 1);\n\t\t} else {\n\t\t\tthis.setCursor(\"end\", start - 1);\n\t\t}\n\t};\n\n\tInfinite.prototype.scroll = function scroll(scrollPos, isForward) {\n\t\tvar _status2 = this._status,\n\t\t startCursor = _status2.startCursor,\n\t\t endCursor = _status2.endCursor,\n\t\t size = _status2.size;\n\n\n\t\tif (startCursor === -1 || endCursor === -1) {\n\t\t\treturn;\n\t\t}\n\t\tvar _options2 = this.options,\n\t\t append = _options2.append,\n\t\t prepend = _options2.prepend,\n\t\t threshold = _options2.threshold;\n\n\t\tvar items = this._items;\n\t\tvar length = items.size();\n\t\tvar endScrollPos = scrollPos + size;\n\t\tvar targetItem = items.getData(isForward ? endCursor : startCursor);\n\t\tvar outlines = targetItem.outlines[isForward ? \"end\" : \"start\"];\n\t\tvar edgePos = Math[isForward ? \"min\" : \"max\"].apply(Math, outlines);\n\n\t\tif (isForward) {\n\t\t\tif (endScrollPos >= edgePos - threshold) {\n\t\t\t\tappend({ cache: length > endCursor + 1 && items.getData(endCursor + 1) });\n\t\t\t}\n\t\t} else if (scrollPos <= edgePos + threshold) {\n\t\t\tprepend({ cache: startCursor > 0 && items.getData(startCursor - 1) });\n\t\t}\n\t};\n\n\tInfinite.prototype.setCursor = function setCursor(cursor, index) {\n\t\tvar status = this._status;\n\n\t\tif (!this.options.useRecycle) {\n\t\t\tstatus.startCursor = 0;\n\t\t\tstatus.endCursor = this._items.size() - 1;\n\t\t\treturn;\n\t\t}\n\t\tif (cursor === \"start\") {\n\t\t\tstatus.startCursor = index;\n\t\t} else {\n\t\t\tstatus.endCursor = Math.min(this._items.size() - 1, index);\n\t\t}\n\t\tstatus.startCursor = Math.max(0, status.startCursor);\n\t};\n\n\tInfinite.prototype.updateCursor = function updateCursor(cursor) {\n\t\tvar _status3 = this._status,\n\t\t startCursor = _status3.startCursor,\n\t\t endCursor = _status3.endCursor;\n\n\n\t\tif (cursor === \"start\") {\n\t\t\tif (startCursor <= 0) {\n\t\t\t\tthis.setCursor(\"start\", 0);\n\t\t\t\tthis.setCursor(\"end\", endCursor + 1);\n\t\t\t} else {\n\t\t\t\tthis.setCursor(cursor, startCursor - 1);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.setCursor(cursor, endCursor + 1);\n\t\t}\n\t};\n\n\tInfinite.prototype.setData = function setData(item) {\n\t\tvar isAppend = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n\t\tthis._items.set(item, item.groupKey);\n\t\tthis.setCursor(isAppend ? \"end\" : \"start\", this._items.indexOf(item));\n\t};\n\n\tInfinite.prototype.append = function append(item) {\n\t\tthis._items.append(item);\n\t\tthis.updateCursor(\"end\");\n\t};\n\n\tInfinite.prototype.prepend = function prepend(item) {\n\t\tthis._items.prepend(item);\n\t\tthis.updateCursor(\"start\");\n\t};\n\n\tInfinite.prototype.setStatus = function setStatus(status) {\n\t\tthis._status = _extends(this._status, status);\n\t};\n\n\tInfinite.prototype.getStatus = function getStatus() {\n\t\tvar _status4 = this._status,\n\t\t startCursor = _status4.startCursor,\n\t\t endCursor = _status4.endCursor,\n\t\t size = _status4.size;\n\n\n\t\treturn {\n\t\t\tstartCursor: startCursor,\n\t\t\tendCursor: endCursor,\n\t\t\tsize: size\n\t\t};\n\t};\n\n\tInfinite.prototype.getEdgeOutline = function getEdgeOutline(cursor) {\n\t\tvar _status5 = this._status,\n\t\t startCursor = _status5.startCursor,\n\t\t endCursor = _status5.endCursor;\n\n\n\t\tif (startCursor === -1 || endCursor === -1) {\n\t\t\treturn [];\n\t\t}\n\t\treturn this._items.getOutline(cursor === \"start\" ? startCursor : endCursor, cursor);\n\t};\n\n\tInfinite.prototype.getEdgeValue = function getEdgeValue(cursor) {\n\t\tvar outlines = this.getEdgeOutline(cursor);\n\n\t\treturn outlines.length ? Math[cursor === \"start\" ? \"min\" : \"max\"].apply(Math, outlines) : 0;\n\t};\n\n\tInfinite.prototype.getVisibleItems = function getVisibleItems() {\n\t\treturn this._items.pluck(\"items\", this._status.startCursor, this._status.endCursor);\n\t};\n\n\tInfinite.prototype.getCursor = function getCursor(cursor) {\n\t\treturn this._status[cursor === \"start\" ? \"startCursor\" : \"endCursor\"];\n\t};\n\n\tInfinite.prototype.getVisibleData = function getVisibleData() {\n\t\treturn this._items.get(this._status.startCursor, this._status.endCursor);\n\t};\n\n\tInfinite.prototype.remove = function remove(element) {\n\t\treturn this._items.remove(element, this._status.startCursor, this._status.endCursor);\n\t};\n\n\tInfinite.prototype.clear = function clear() {\n\t\tthis._status = {\n\t\t\tstartCursor: -1,\n\t\t\tendCursor: -1,\n\t\t\tsize: -1\n\t\t};\n\t};\n\n\treturn Infinite;\n}();\n\nexports[\"default\"] = Infinite;\nmodule.exports = exports[\"default\"];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/Infinite.js\n// module id = 8\n// module chunks = 0 1","\"use strict\";\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _consts = require(\"../consts\");\n\nvar _utils = require(\"../utils\");\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/*\nFrame\n[\n[1, 1, 1, 1, 1],\n[0, 0, 2, 2, 2],\n[0, 0, 2, 2, 2],\n[3, 4, 5, 5, 5],\n]\n*/\nfunction disableFrame(frame, type, x, y, width, height) {\n\tfor (var i = y; i < y + height; ++i) {\n\t\tfor (var j = x; j < x + width; ++j) {\n\t\t\tif (type !== frame[i][j]) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tframe[i][j] = 0;\n\t\t}\n\t}\n}\nfunction searchShapeInFrame(frame, type, top, left, width, height) {\n\tvar size = {\n\t\tleft: left,\n\t\ttop: top,\n\t\ttype: type,\n\t\twidth: 1,\n\t\theight: 1\n\t};\n\n\tfor (var i = left; i < width; ++i) {\n\t\tif (frame[top][i] === type) {\n\t\t\tsize.width = i - left + 1;\n\t\t\tcontinue;\n\t\t}\n\t\tbreak;\n\t}\n\tfor (var _i = top; _i < height; ++_i) {\n\t\tif (frame[_i][left] === type) {\n\t\t\tsize.height = _i - top + 1;\n\t\t\tcontinue;\n\t\t}\n\t\tbreak;\n\t}\n\t// After finding the shape, it will not find again.\n\tdisableFrame(frame, type, left, top, size.width, size.height);\n\treturn size;\n}\nfunction getShapes(frame) {\n\tvar height = frame.length;\n\tvar width = height ? frame[0].length : 0;\n\tvar shapes = [];\n\n\tfor (var i = 0; i < height; ++i) {\n\t\tfor (var j = 0; j < width; ++j) {\n\t\t\tvar type = frame[i][j];\n\n\t\t\tif (!type) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// Separate shapes with other numbers.\n\t\t\tshapes.push(searchShapeInFrame(frame, type, i, j, width, height));\n\t\t}\n\t}\n\tshapes.sort(function (a, b) {\n\t\treturn a.type < b.type ? -1 : 1;\n\t});\n\treturn {\n\t\tshapes: shapes,\n\t\twidth: width,\n\t\theight: height\n\t};\n}\n/**\n * @classdesc FrameLayout is a layout that allows you to place cards in a given frame. It is a layout that corresponds to a level intermediate between the placement of the image directly by the designer and the layout using the algorithm.\n * @ko FrameLayout은 주어진 프레임에 맞춰 카드를 배치하는 레이아웃입니다. 디자이너가 직접 이미지를 배치하는 것과 알고리즘을 사용한 배치의 중간 정도 수준에 해당하는 레이아웃이다.\n * @class eg.InfiniteGrid.FrameLayout\n * @param {Object} [options] The option object of eg.InfiniteGrid.FrameLayout module