{"version":3,"file":"infinitegrid.js","sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap bf22860e3ceb1f09eb1f","webpack:///./src/utils.js","webpack:///./src/consts.js","webpack:///./src/browser.js","webpack:///./src/ItemManager.js","webpack:///./src/DOMRenderer.js","webpack:///./src/AutoSizer.js","webpack:///./src/Watcher.js","webpack:///./src/Infinite.js","webpack:///./src/LayoutManager.js","webpack:///./src/ImageLoaded.js","webpack:///./src/layouts/FrameLayout.js","webpack:///./src/index.umd.js","webpack:///./src/index.js","webpack:///./src/InfiniteGrid.js","webpack:///external {\"commonjs\":\"@egjs/component\",\"commonjs2\":\"@egjs/component\",\"amd\":\"@egjs/component\",\"root\":[\"eg\",\"Component\"]}","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","webpack:///./src/version.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"@egjs/component\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"@egjs/component\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"InfiniteGrid\"] = factory(require(\"@egjs/component\"));\n\telse\n\t\troot[\"eg\"] = root[\"eg\"] || {}, root[\"eg\"][\"InfiniteGrid\"] = factory(root[\"eg\"][\"Component\"]);\n})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE_14__) {\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 = 11);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap bf22860e3ceb1f09eb1f","\"use strict\";\n\nexports.__esModule = true;\nexports.toArray = toArray;\nexports.matchHTML = matchHTML;\nexports.$ = $;\nexports.addEvent = addEvent;\nexports.removeEvent = removeEvent;\nexports.addOnceEvent = addOnceEvent;\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.getSize = getSize;\nexports.getStyleNames = getStyleNames;\nexports.assignOptions = assignOptions;\nexports.toZeroArray = toZeroArray;\nexports.cloneItems = cloneItems;\nexports.isWindow = isWindow;\nexports.fill = fill;\nexports.isUndefined = isUndefined;\nexports.STYLE = void 0;\n\nvar _browser = require(\"./browser\");\n\nvar _consts = require(\"./consts\");\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nfunction toArray(nodes) {\n // SCRIPT5014 in IE8\n var array = [];\n\n if (nodes) {\n for (var i = 0, len = nodes.length; i < len; i++) {\n array.push(nodes[i]);\n }\n }\n\n return array;\n}\n\nfunction matchHTML(html) {\n return 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 */\n\n\nfunction $(param, multi) {\n if (multi === void 0) {\n multi = false;\n }\n\n var el;\n\n if (typeof param === \"string\") {\n // String (HTML, Selector)\n // check if string is HTML tag format\n var match = matchHTML(param); // creating element\n\n if (match) {\n // HTML\n var dummy = _browser.document.createElement(\"div\");\n\n dummy.innerHTML = param;\n el = dummy.childNodes;\n } else {\n // Selector\n el = _browser.document.querySelectorAll(param);\n }\n\n if (multi) {\n el = toArray(el);\n } else {\n el = el && el.length > 0 && el[0] || undefined;\n }\n } else if (param === _browser.window) {\n // window\n el = param;\n } else if (param.nodeName && (param.nodeType === 1 || param.nodeType === 9)) {\n // HTMLElement, Document\n el = param;\n } else if (typeof _browser.window.jQuery === \"function\" && param instanceof _browser.window.jQuery || param.constructor.prototype.jquery) {\n // jQuery\n el = $(multi ? param.toArray() : param.get(0), multi);\n } else if (Array.isArray(param)) {\n el = param.map(function (v) {\n return $(v);\n });\n\n if (!multi) {\n el = el.length >= 1 ? el[0] : undefined;\n }\n }\n\n return el;\n}\n\nfunction addEvent(element, type, handler, eventListenerOptions) {\n if (_consts.SUPPORT_ADDEVENTLISTENER) {\n var options = eventListenerOptions || false;\n\n if (typeof eventListenerOptions === \"object\") {\n options = _consts.SUPPORT_PASSIVE ? eventListenerOptions : false;\n }\n\n element.addEventListener(type, handler, options);\n } else if (element.attachEvent) {\n element.attachEvent(\"on\" + type, handler);\n } else {\n element[\"on\" + type] = handler;\n }\n}\n\nfunction removeEvent(element, type, handler) {\n if (element.removeEventListener) {\n element.removeEventListener(type, handler, false);\n } else if (element.detachEvent) {\n element.detachEvent(\"on\" + type, handler);\n } else {\n element[\"on\" + type] = null;\n }\n}\n\nfunction addOnceEvent(element, type, handler, eventListenerOptions) {\n var callback = function callback(e) {\n removeEvent(element, type, callback);\n handler(e);\n };\n\n addEvent(element, type, callback, eventListenerOptions);\n}\n\nfunction scroll(el, horizontal) {\n if (horizontal === void 0) {\n horizontal = false;\n }\n\n var prop = \"scroll\" + (horizontal ? \"Left\" : \"Top\");\n\n if (el === _browser.window) {\n return _browser.window[horizontal ? \"pageXOffset\" : \"pageYOffset\"] || _browser.document.body[prop] || _browser.document.documentElement[prop];\n } else {\n return el[prop];\n }\n}\n\nfunction scrollTo(el, x, y) {\n if (el === _browser.window) {\n el.scroll(x, y);\n } else {\n el.scrollLeft = x;\n el.scrollTop = y;\n }\n}\n\nfunction scrollBy(el, x, y) {\n if (el === _browser.window) {\n el.scrollBy(x, y);\n } else {\n el.scrollLeft += x;\n el.scrollTop += y;\n }\n}\n\nfunction getStyles(el) {\n return (_consts.SUPPORT_COMPUTEDSTYLE ? _browser.window.getComputedStyle(el) : el.currentStyle) || {};\n}\n\nfunction _getSize(el, name, isOffset) {\n if (el === _browser.window) {\n // WINDOW\n return _browser.window[\"inner\" + name] || _browser.document.body[\"client\" + name];\n } else if (el.nodeType === 9) {\n // DOCUMENT_NODE\n var doc = el.documentElement;\n return Math.max(el.body[\"scroll\" + name], doc[\"scroll\" + name], el.body[\"offset\" + name], doc[\"offset\" + name], doc[\"client\" + name]);\n } else {\n // NODE\n var size = 0;\n\n if (isOffset) {\n var clientRect = el.getBoundingClientRect();\n size = name === \"Width\" ? clientRect.right - clientRect.left : clientRect.bottom - clientRect.top;\n } else {\n size = el[\"client\" + name] || el[\"offset\" + name];\n }\n\n return parseFloat(size || getStyles(el)[name.toLowerCase()]) || 0;\n }\n}\n\nfunction innerWidth(el) {\n return _getSize(el, \"Width\", false);\n}\n\nfunction innerHeight(el) {\n return _getSize(el, \"Height\", false);\n}\n\nfunction outerWidth(el) {\n return _getSize(el, \"Width\", true);\n}\n\nfunction outerHeight(el) {\n return _getSize(el, \"Height\", true);\n}\n\nfunction getSize(el) {\n return {\n width: outerWidth(el),\n height: outerHeight(el)\n };\n}\n\nvar STYLE = {\n vertical: {\n pos1: \"top\",\n endPos1: \"bottom\",\n size1: \"height\",\n pos2: \"left\",\n endPos2: \"right\",\n size2: \"width\"\n },\n horizontal: {\n pos1: \"left\",\n endPos1: \"right\",\n size1: \"width\",\n pos2: \"top\",\n endPos2: \"bottom\",\n size2: \"height\"\n }\n};\nexports.STYLE = STYLE;\n\nfunction getStyleNames(isHorizontal) {\n return STYLE[isHorizontal ? _consts.HORIZONTAL : _consts.VERTICAL];\n}\n\nfunction assignOptions(defaultOptions, options) {\n return _extends({}, _consts.DEFAULT_OPTIONS, defaultOptions, options);\n}\n\nfunction toZeroArray(outline) {\n if (!outline || !outline.length) {\n return [0];\n }\n\n return outline;\n}\n\nfunction cloneItems(items) {\n return items.map(function (item) {\n return _extends({}, item);\n });\n}\n\nfunction isWindow(el) {\n return el === _browser.window;\n}\n\nfunction fill(arr, value) {\n var length = arr.length;\n\n for (var i = length - 1; i >= 0; --i) {\n arr[i] = value;\n }\n\n return arr;\n}\n\nfunction isUndefined(target) {\n return 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.TRANSITION_END = exports.TRANSITION = exports.TRANSFORM = exports.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.TRANSITION_NAME = exports.IGNORE_CLASSNAME = exports.CONTAINER_CLASSNAME = exports.IS_ANDROID2 = exports.IS_IOS = exports.IS_IE = exports.SUPPORT_PASSIVE = exports.SUPPORT_ADDEVENTLISTENER = exports.SUPPORT_COMPUTEDSTYLE = void 0;\n\nvar _browser = require(\"./browser\");\n\nvar ua = _browser.window.navigator.userAgent;\nvar SUPPORT_COMPUTEDSTYLE = !!(\"getComputedStyle\" in _browser.window);\nexports.SUPPORT_COMPUTEDSTYLE = SUPPORT_COMPUTEDSTYLE;\nvar SUPPORT_ADDEVENTLISTENER = !!(\"addEventListener\" in _browser.document);\nexports.SUPPORT_ADDEVENTLISTENER = SUPPORT_ADDEVENTLISTENER;\n\nvar SUPPORT_PASSIVE = function () {\n var supportsPassiveOption = false;\n\n try {\n if (SUPPORT_ADDEVENTLISTENER && Object.defineProperty) {\n _browser.document.addEventListener(\"test\", null, Object.defineProperty({}, \"passive\", {\n get: function get() {\n supportsPassiveOption = true;\n }\n }));\n }\n } catch (e) {}\n\n return supportsPassiveOption;\n}();\n\nexports.SUPPORT_PASSIVE = SUPPORT_PASSIVE;\nvar IS_IE = /MSIE|Trident|Windows Phone|Edge/.test(ua);\nexports.IS_IE = IS_IE;\nvar IS_IOS = /iPhone|iPad/.test(ua);\nexports.IS_IOS = IS_IOS;\nvar IS_ANDROID2 = /Android 2\\./.test(ua);\nexports.IS_ANDROID2 = IS_ANDROID2;\nvar CONTAINER_CLASSNAME = \"_eg-infinitegrid-container_\";\nexports.CONTAINER_CLASSNAME = CONTAINER_CLASSNAME;\nvar IGNORE_CLASSNAME = \"_eg-infinitegrid-ignore_\";\nexports.IGNORE_CLASSNAME = IGNORE_CLASSNAME;\nvar TRANSITION_NAME = \"_INFINITEGRID_TRANSITION\";\nexports.TRANSITION_NAME = TRANSITION_NAME;\nvar APPEND = true;\nexports.APPEND = APPEND;\nvar PREPEND = false;\nexports.PREPEND = PREPEND;\nvar VERTICAL = \"vertical\";\nexports.VERTICAL = VERTICAL;\nvar HORIZONTAL = \"horizontal\";\nexports.HORIZONTAL = HORIZONTAL;\nvar CACHE = true;\nexports.CACHE = CACHE;\nvar NO_CACHE = false;\nexports.NO_CACHE = NO_CACHE;\nvar TRUSTED = true;\nexports.TRUSTED = TRUSTED;\nvar NO_TRUSTED = false;\nexports.NO_TRUSTED = NO_TRUSTED;\nvar MULTI = true;\nexports.MULTI = MULTI;\nvar SINGLE = false;\nexports.SINGLE = SINGLE;\nvar DUMMY_POSITION = -100000;\nexports.DUMMY_POSITION = DUMMY_POSITION;\nvar GROUPKEY_ATT = \"data-groupkey\";\nexports.GROUPKEY_ATT = GROUPKEY_ATT;\nvar DEFAULT_OPTIONS = {\n horizontal: false,\n margin: 0\n};\nexports.DEFAULT_OPTIONS = DEFAULT_OPTIONS;\nvar agent = ua.toLowerCase();\nexports.agent = agent;\nvar isMobile = /mobi|ios|android/.test(agent);\nexports.isMobile = isMobile;\nvar ALIGN = {\n START: \"start\",\n CENTER: \"center\",\n END: \"end\",\n JUSTIFY: \"justify\"\n};\nexports.ALIGN = ALIGN;\nvar IDLE = 0;\nexports.IDLE = IDLE;\nvar LOADING_APPEND = 1;\nexports.LOADING_APPEND = LOADING_APPEND;\nvar LOADING_PREPEND = 2;\nexports.LOADING_PREPEND = LOADING_PREPEND;\nvar PROCESSING = 4;\nexports.PROCESSING = PROCESSING;\nvar webkit = /applewebkit\\/([\\d|.]*)/g.exec(agent);\nvar WEBKIT_VERSION = webkit && parseInt(webkit[1], 10) || 0;\nexports.WEBKIT_VERSION = WEBKIT_VERSION;\nvar DEFENSE_BROWSER = WEBKIT_VERSION && WEBKIT_VERSION < 537;\nexports.DEFENSE_BROWSER = DEFENSE_BROWSER;\n\nvar _ref = function () {\n var properties = {\n transitionend: \"\",\n webkitTransitionEnd: \"-webkit-\",\n oTransitionEnd: \"-o-\",\n mozTransitionEnd: \"-moz-\"\n };\n\n for (var property in properties) {\n var prefix = properties[property];\n\n if (\"on\" + property.toLowerCase() in _browser.window) {\n return [prefix + \"transform\", prefix + \"transition\", property];\n }\n }\n\n return [];\n}(),\n TRANSFORM = _ref[0],\n TRANSITION = _ref[1],\n TRANSITION_END = _ref[2];\n\nexports.TRANSITION_END = TRANSITION_END;\nexports.TRANSITION = TRANSITION;\nexports.TRANSFORM = TRANSFORM;\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;\nexports.document = exports.window = void 0;\n\n/* eslint-disable no-new-func, no-nested-ternary */\nif (typeof window === \"undefined\") {\n global.window = {\n document: {},\n navigator: {\n userAgent: \"\"\n }\n };\n}\n\nvar win = window;\n/* eslint-enable no-new-func, no-nested-ternary */\n\nexports.window = win;\nvar document = win.document;\nexports.document = 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;\nexports[\"default\"] = void 0;\n\nvar _consts = require(\"./consts\");\n\nvar _utils = require(\"./utils\");\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nvar ItemManager =\n/*#__PURE__*/\nfunction () {\n ItemManager.from = function from(elements, selector, _ref) {\n var groupKey = _ref.groupKey,\n isAppend = _ref.isAppend;\n var filted = ItemManager.selectItems((0, _utils.$)(elements, _consts.MULTI), selector); // Item Structure\n\n return (0, _utils.toArray)(filted).map(function (el) {\n return {\n el: el,\n groupKey: groupKey,\n content: el.outerHTML,\n rect: {\n top: _consts.DUMMY_POSITION,\n left: _consts.DUMMY_POSITION\n }\n };\n });\n };\n\n ItemManager.selectItems = function selectItems(elements, selector) {\n return elements.filter(function (v) {\n var classNames = v.className.split(\" \");\n\n if (classNames.some(function (c) {\n return c === _consts.IGNORE_CLASSNAME;\n })) {\n return false;\n } else if (!selector || selector === \"*\") {\n return v;\n } else {\n return classNames.some(function (c) {\n return c === selector;\n });\n }\n });\n };\n\n ItemManager.pluck = function pluck(data, property) {\n return data.reduce(function (acc, v) {\n return acc.concat(v[property]);\n }, []);\n };\n\n function ItemManager() {\n this.clear();\n }\n\n var _proto = ItemManager.prototype;\n\n _proto.getStatus = function getStatus(startKey, endKey) {\n var datas = this._data;\n var startIndex = Math.max(this.indexOf(startKey), 0);\n var endIndex = this.indexOf(endKey) + 1 || datas.length;\n return {\n _data: datas.slice(startIndex, endIndex).map(function (data) {\n var items = data.items.map(function (item) {\n var item2 = _extends({}, item);\n\n delete item2.el;\n return item2;\n });\n\n var data2 = _extends({}, data);\n\n data2.items = items;\n return data2;\n })\n };\n };\n\n _proto.setStatus = function setStatus(status) {\n var data = status._data;\n this.set(data);\n };\n\n _proto.size = function size() {\n return this._data.length;\n };\n\n _proto.fit = function fit(base, horizontal) {\n if (!this._data.length) {\n return;\n }\n\n var property = horizontal ? \"left\" : \"top\";\n\n if (base !== 0) {\n this._data = this._data.map(function (v) {\n v.items = v.items.map(function (item) {\n item.rect[property] -= base;\n return item;\n });\n v.outlines.start = v.outlines.start.map(function (start) {\n return start - base;\n });\n v.outlines.end = v.outlines.end.map(function (end) {\n return end - base;\n });\n return v;\n });\n }\n };\n\n _proto.pluck = function pluck(property, start, end) {\n var data = (0, _utils.isUndefined)(start) ? this._data : this._data.slice(start, ((0, _utils.isUndefined)(end) ? start : end) + 1);\n return ItemManager.pluck(data, property);\n };\n\n _proto.getOutline = function getOutline(index, property) {\n var data = this._data[index];\n return data ? data.outlines[property] : [];\n };\n\n _proto.getEdgeIndex = function getEdgeIndex(cursor, start, end) {\n var prop = cursor === \"start\" ? \"min\" : \"max\";\n var index = -1;\n var targetValue = cursor === \"start\" ? Infinity : -Infinity;\n\n for (var i = start; i <= end; i++) {\n var value = Math[prop].apply(Math, this.getOutline(i, cursor));\n\n if (cursor === \"start\" && targetValue > value || cursor === \"end\" && targetValue < value) {\n targetValue = value;\n index = i;\n }\n }\n\n return index;\n };\n\n _proto.getEdgeValue = function getEdgeValue(cursor, start, end) {\n var outlines = this.pluck(\"outlines\", this.getEdgeIndex(cursor, start, end)).reduce(function (acc, v) {\n return acc.concat(v[cursor]);\n }, []);\n return outlines.length ? Math[cursor === \"start\" ? \"min\" : \"max\"].apply(Math, outlines) : 0;\n };\n\n _proto.clearOutlines = function clearOutlines(startCursor, endCursor) {\n if (startCursor === void 0) {\n startCursor = -1;\n }\n\n if (endCursor === void 0) {\n endCursor = -1;\n }\n\n var datas = this.get();\n datas.forEach(function (group, cursor) {\n if (startCursor <= cursor && cursor <= endCursor) {\n return;\n }\n\n group.items.forEach(function (item) {\n item.rect.top = _consts.DUMMY_POSITION;\n item.rect.left = _consts.DUMMY_POSITION;\n });\n group.outlines.start = [];\n group.outlines.end = [];\n });\n };\n\n _proto.getMaxEdgeValue = function getMaxEdgeValue() {\n var groups = this.get();\n var length = groups.length;\n\n for (var i = length - 1; i >= 0; --i) {\n var end = groups[i].outlines.end;\n\n if (end.length) {\n var pos = Math.max.apply(Math, end);\n return pos;\n }\n }\n\n return 0;\n };\n\n _proto.append = function append(layouted) {\n this._data.push(layouted);\n\n return layouted.items;\n };\n\n _proto.prepend = function prepend(layouted) {\n this._data.unshift(layouted);\n\n return layouted.items;\n };\n\n _proto.clear = function clear() {\n this._data = [];\n };\n\n _proto.remove = function remove(element, start, end) {\n var items = [];\n var key = element.getAttribute(_consts.GROUPKEY_ATT);\n var data = this.get(start, end).filter(function (v) {\n return String(v.groupKey) === key;\n });\n\n if (!data.length) {\n return items;\n }\n\n data = data[0];\n var len = data.items.length;\n var idx = -1;\n\n for (var i = 0; i < len; i++) {\n if (data.items[i].el === element) {\n idx = i;\n break;\n }\n }\n\n if (~idx) {\n // remove item information\n data.items.splice(idx, 1);\n this.set(data, key);\n items = data.items;\n }\n\n return items;\n };\n\n _proto.indexOf = function indexOf(data) {\n var groupKey = typeof data === \"object\" ? data.groupKey : data;\n var datas = this._data;\n var length = datas.length;\n\n for (var i = 0; i < length; ++i) {\n if (groupKey === datas[i].groupKey) {\n return i;\n }\n }\n\n return -1;\n };\n\n _proto.get = function get(start, end) {\n return (0, _utils.isUndefined)(start) ? this._data : this._data.slice(start, ((0, _utils.isUndefined)(end) ? start : end) + 1);\n };\n\n _proto.set = function set(data, key) {\n if (!(0, _utils.isUndefined)(key) && !Array.isArray(data)) {\n var len = this._data.length;\n var idx = -1;\n\n for (var i = 0; i < len; i++) {\n if (this._data[i].groupKey === key) {\n idx = i;\n break;\n }\n }\n\n ~idx && (this._data[idx] = data);\n } else {\n this._data = data.concat();\n }\n };\n\n _proto.getData = function getData(index) {\n return this._data[index];\n };\n\n return ItemManager;\n}();\n\nexports[\"default\"] = ItemManager;\nmodule.exports = exports[\"default\"];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/ItemManager.js\n// module id = 3\n// module chunks = 0 1","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _consts = require(\"./consts\");\n\nvar _browser = require(\"./browser\");\n\nvar _utils = require(\"./utils\");\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nfunction createContainer(element) {\n var container = _browser.document.createElement(\"div\");\n\n container.className = _consts.CONTAINER_CLASSNAME;\n container.style.position = \"relative\";\n container.style.height = \"100%\";\n var children = element.children;\n var length = children.length; // for IE8\n\n for (var i = 0; i < length; i++) {\n container.appendChild(children[0]);\n }\n\n element.appendChild(container);\n return container;\n}\n\nfunction render(properties, rect, styles) {\n properties.forEach(function (p) {\n p in rect && (styles[p] = rect[p] + \"px\");\n });\n}\n\nfunction setTransition(styles, transitionDuration, pos1, pos2) {\n styles[_consts.TRANSITION + \"-property\"] = transitionDuration ? _consts.TRANSFORM + \",width,height\" : \"\";\n styles[_consts.TRANSITION + \"-duration\"] = transitionDuration ? transitionDuration + \"s\" : \"\";\n styles[_consts.TRANSITION + \"-delay\"] = transitionDuration ? \"0s\" : \"\";\n styles[_consts.TRANSFORM] = transitionDuration ? \"translate(\" + (pos1.left - pos2.left) + \"px,\" + (pos1.top - pos2.top) + \"px)\" : \"\";\n}\n\nvar DOMRenderer =\n/*#__PURE__*/\nfunction () {\n DOMRenderer.renderItem = function renderItem(item, rect, transitionDuration) {\n if (!item.el) {\n return;\n }\n\n var el = item.el,\n prevRect = item.prevRect;\n var styles = el.style; // for debugging\n\n el.setAttribute(_consts.GROUPKEY_ATT, item.groupKey);\n styles.position = \"absolute\";\n render([\"width\", \"height\"], rect, styles);\n\n if (transitionDuration && _consts.TRANSITION && prevRect) {\n setTransition(styles, transitionDuration, rect, prevRect);\n\n if (el[_consts.TRANSITION_NAME]) {\n return;\n }\n\n el[_consts.TRANSITION_NAME] = true;\n (0, _utils.addOnceEvent)(el, _consts.TRANSITION_END, function () {\n var itemRect = item.rect;\n setTransition(styles);\n render([\"left\", \"top\"], itemRect, styles);\n item.prevRect = itemRect;\n el[_consts.TRANSITION_NAME] = false;\n });\n } else {\n render([\"left\", \"top\"], rect, styles);\n item.prevRect = rect;\n }\n };\n\n DOMRenderer.renderItems = function renderItems(items, transitionDuration) {\n items.forEach(function (item) {\n DOMRenderer.renderItem(item, item.rect, transitionDuration);\n });\n };\n\n DOMRenderer.removeItems = function removeItems(items) {\n items.forEach(function (item) {\n if (item.el) {\n DOMRenderer.removeElement(item.el);\n item.el = null;\n }\n });\n };\n\n DOMRenderer.removeElement = function removeElement(element) {\n var parentNode = element && element.parentNode;\n\n if (!parentNode) {\n return;\n }\n\n parentNode.removeChild(element);\n };\n\n DOMRenderer.createElements = function createElements(items) {\n if (!items.length) {\n return;\n }\n\n var noElementItems = items.filter(function (item) {\n return !item.el;\n });\n\n if (!noElementItems.length) {\n return;\n }\n\n var elements = (0, _utils.$)(noElementItems.map(function (_ref) {\n var content = _ref.content;\n return content.replace(/^[\\s\\uFEFF]+|[\\s\\uFEFF]+$/g, \"\");\n }).join(\"\"), _consts.MULTI);\n noElementItems.forEach(function (item, index) {\n item.el = elements[index];\n });\n };\n\n function DOMRenderer(element, options) {\n _extends(this.options = {\n isEqualSize: false,\n isConstantSize: false,\n horizontal: false,\n container: false\n }, options);\n\n this._size = {\n container: -1,\n view: -1,\n viewport: -1,\n item: null\n };\n\n this._init(element);\n\n this.resize();\n }\n\n var _proto = DOMRenderer.prototype;\n\n _proto.getStatus = function getStatus() {\n return {\n cssText: this.container.style.cssText,\n _size: _extends({}, this._size)\n };\n };\n\n _proto.setStatus = function setStatus(status) {\n this.container.style.cssText = status.cssText;\n\n _extends(this._size, status._size);\n };\n\n _proto.updateSize = function updateSize(items) {\n var _this$options = this.options,\n isEqualSize = _this$options.isEqualSize,\n isConstantSize = _this$options.isConstantSize;\n var size = this._size;\n return items.map(function (item) {\n if (!item.el) {\n return item;\n }\n\n if (isEqualSize && !size.item) {\n size.item = (0, _utils.getSize)(item.el);\n }\n\n item.size = isEqualSize && _extends(size.item) || isConstantSize && item.orgSize && _extends(item.orgSize) || (0, _utils.getSize)(item.el);\n\n if (!item.orgSize) {\n item.orgSize = _extends({}, item.size);\n }\n\n return item;\n });\n };\n\n _proto._init = function _init(el) {\n var element = (0, _utils.$)(el);\n var style = (0, _utils.getStyles)(element);\n var _this$options2 = this.options,\n container = _this$options2.container,\n horizontal = _this$options2.horizontal;\n this._orgStyle = {};\n\n if (style.position === \"static\") {\n this._orgStyle.position = element.style.position;\n element.style.position = \"relative\";\n }\n\n if (container) {\n var target = horizontal ? [\"X\", \"Y\"] : [\"Y\", \"X\"];\n this._orgStyle.overflowX = element.style.overflowX;\n this._orgStyle.overflowY = element.style.overflowY;\n element.style[\"overflow\" + target[0]] = \"scroll\";\n element.style[\"overflow\" + target[1]] = \"hidden\";\n this.view = element;\n this.container = container === true ? createContainer(this.view) : container;\n } else {\n this.view = _browser.window;\n this.container = element;\n }\n };\n\n _proto.append = function append(items) {\n this._insert(items, _consts.APPEND, {\n top: _consts.DUMMY_POSITION,\n left: _consts.DUMMY_POSITION\n });\n };\n\n _proto.prepend = function prepend(items) {\n this._insert(items, _consts.PREPEND, {\n top: _consts.DUMMY_POSITION,\n left: _consts.DUMMY_POSITION\n });\n };\n\n _proto.createAndInsert = function createAndInsert(items, isAppend) {\n DOMRenderer.createElements(items);\n DOMRenderer.renderItems(items);\n\n this._insert(items, isAppend);\n };\n\n _proto._insert = function _insert(items, isAppend, styles) {\n var container = this.container;\n\n var df = _browser.document.createDocumentFragment();\n\n items.forEach(function (item) {\n styles && DOMRenderer.renderItem(item, styles);\n isAppend ? df.appendChild(item.el) : df.insertBefore(item.el, df.firstChild);\n });\n isAppend ? container.appendChild(df) : container.insertBefore(df, container.firstChild);\n };\n\n _proto._calcSize = function _calcSize() {\n return this.options.horizontal ? (0, _utils.innerHeight)(this.container) : (0, _utils.innerWidth)(this.container);\n };\n\n _proto.getViewSize = function getViewSize() {\n return this._size.view;\n };\n\n _proto.getViewportSize = function getViewportSize() {\n return this._size.viewport;\n };\n\n _proto.setContainerSize = function setContainerSize(size) {\n this.container.style[this.options.horizontal ? \"width\" : \"height\"] = size + \"px\";\n };\n\n _proto.resize = function resize() {\n var horizontal = this.options.horizontal;\n var view = this.view;\n var isResize = this.isNeededResize();\n\n if (isResize) {\n this._size = {\n viewport: this._calcSize(),\n item: null\n };\n }\n\n this._size.view = horizontal ? (0, _utils.innerWidth)(view) : (0, _utils.innerHeight)(view);\n return isResize;\n };\n\n _proto.isNeededResize = function isNeededResize() {\n return this._calcSize() !== this._size.viewport;\n };\n\n _proto.clear = function clear() {\n this.container.innerHTML = \"\";\n this.container.style[this.options.horizontal ? \"width\" : \"height\"] = \"\";\n this._size = {\n item: null,\n viewport: -1,\n container: -1,\n view: -1\n };\n };\n\n _proto.destroy = function destroy() {\n this.clear();\n var container = this.options.container;\n\n for (var p in this._orgStyle) {\n this[container ? \"view\" : \"container\"].style[p] = this._orgStyle[p];\n }\n\n container && this.container.parentNode.removeChild(this.container);\n };\n\n return DOMRenderer;\n}();\n\nexports[\"default\"] = DOMRenderer;\nmodule.exports = exports[\"default\"];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/DOMRenderer.js\n// module id = 4\n// module chunks = 0 1","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _browser = require(\"./browser\");\n\nvar _utils = require(\"./utils\");\n\nvar elements = [];\n/* eslint-disable */\n\nfunction onResize(e) {\n AutoSizer.resizeAll();\n}\n/* eslint-enable */\n\n\nvar AutoSizer =\n/*#__PURE__*/\nfunction () {\n function AutoSizer() {}\n\n AutoSizer.add = function add(element, prefix) {\n if (prefix === void 0) {\n prefix = \"data-\";\n }\n\n if (!element.length) {\n (0, _utils.addEvent)(_browser.window, \"resize\", onResize);\n }\n\n element.__PREFIX__ = prefix;\n elements.push(element);\n AutoSizer.resize(element);\n };\n\n AutoSizer.remove = function remove(element, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var fixed = element.getAttribute(element.__PREFIX__ + \"fixed\") || \"width\";\n\n if (!isFixed) {\n element.style[fixed === \"width\" ? \"height\" : \"width\"] = \"\";\n }\n\n var index = elements.indexOf(element);\n\n if (!~index) {\n return;\n }\n\n elements.splice(index, 1);\n\n if (!elements.length) {\n (0, _utils.removeEvent)(_browser.window, \"reisze\", onResize);\n }\n };\n\n AutoSizer.resize = function resize(element, prefix) {\n if (prefix === void 0) {\n prefix = \"data-\";\n }\n\n var elementPrefix = typeof element.__PREFIX__ === \"string\" ? element.__PREFIX__ : prefix;\n var dataWidth = element.getAttribute(elementPrefix + \"width\");\n var dataHeight = element.getAttribute(elementPrefix + \"height\");\n var fixed = element.getAttribute(elementPrefix + \"fixed\");\n\n if (fixed === \"height\") {\n var size = (0, _utils.innerHeight)(element) || dataHeight;\n element.style.width = dataWidth / dataHeight * size + \"px\";\n } else {\n var _size = (0, _utils.innerWidth)(element) || dataWidth;\n\n element.style.height = dataHeight / dataWidth * _size + \"px\";\n }\n };\n\n AutoSizer.resizeAll = function resizeAll() {\n elements.forEach(function (element) {\n return AutoSizer.resize(element);\n });\n };\n\n return AutoSizer;\n}();\n\nexports[\"default\"] = AutoSizer;\nmodule.exports = exports[\"default\"];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/AutoSizer.js\n// module id = 5\n// module chunks = 0 1","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _consts = require(\"./consts\");\n\nvar _utils = require(\"./utils\");\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nvar Watcher =\n/*#__PURE__*/\nfunction () {\n function Watcher(view, options) {\n _extends(this.options = {\n container: view,\n resize: function resize() {},\n check: function check() {},\n isOverflowScroll: false,\n horizontal: false\n }, options);\n\n this._timer = {\n resize: null // doubleCheck: null,\n // doubleCheckCount: RETRY,\n\n };\n this.reset();\n this._containerOffset = 0;\n this._view = view;\n this._scrollIssue = _consts.IS_IOS;\n this._onCheck = this._onCheck.bind(this);\n this._onResize = this._onResize.bind(this);\n this.attachEvent();\n this.setScrollPos();\n this.resize();\n }\n\n var _proto = Watcher.prototype;\n\n _proto.getStatus = function getStatus() {\n return {\n _prevPos: this._prevPos,\n scrollPos: this.getOrgScrollPos()\n };\n };\n\n _proto.setStatus = function setStatus(status, applyScrollPos) {\n if (applyScrollPos === void 0) {\n applyScrollPos = true;\n }\n\n this._prevPos = status._prevPos;\n applyScrollPos && this.scrollTo(status.scrollPos);\n };\n\n _proto.scrollBy = function scrollBy(pos) {\n var arrPos = this.options.horizontal ? [pos, 0] : [0, pos];\n\n _utils.scrollBy.apply(void 0, [this._view].concat(arrPos));\n\n this.setScrollPos();\n };\n\n _proto.scrollTo = function scrollTo(pos) {\n var arrPos = this.options.horizontal ? [pos, 0] : [0, pos];\n\n _utils.scrollTo.apply(void 0, [this._view].concat(arrPos));\n };\n\n _proto.getScrollPos = function getScrollPos() {\n return this._prevPos;\n };\n\n _proto.setScrollPos = function setScrollPos(pos) {\n var rawPos = pos;\n\n if (typeof pos === \"undefined\") {\n rawPos = this.getOrgScrollPos();\n }\n\n this._prevPos = rawPos - this.getContainerOffset();\n };\n\n _proto.attachEvent = function attachEvent() {\n (0, _utils.addEvent)(this._view, \"scroll\", this._onCheck);\n (0, _utils.addEvent)(window, \"resize\", this._onResize);\n };\n\n _proto.getOrgScrollPos = function getOrgScrollPos() {\n return (0, _utils.scroll)(this._view, this.options.horizontal);\n };\n\n _proto.reset = function reset() {\n this._prevPos = null;\n };\n\n _proto._onCheck = function _onCheck() {\n var prevPos = this.getScrollPos();\n var orgScrollPos = this.getOrgScrollPos();\n this.setScrollPos(orgScrollPos);\n var scrollPos = this.getScrollPos();\n\n if (prevPos === null || this._scrollIssue && orgScrollPos === 0 || prevPos === scrollPos) {\n orgScrollPos && (this._scrollIssue = false);\n return;\n }\n\n this._scrollIssue = false;\n this.options.check({\n isForward: prevPos < scrollPos,\n scrollPos: scrollPos,\n orgScrollPos: orgScrollPos,\n horizontal: this.options.horizontal\n });\n };\n\n _proto.getContainerOffset = function getContainerOffset() {\n return this._containerOffset;\n };\n\n _proto._getOffset = function _getOffset() {\n var _this$options = this.options,\n container = _this$options.container,\n horizontal = _this$options.horizontal;\n var rect = container.getBoundingClientRect();\n return rect[horizontal ? \"left\" : \"top\"] + this.getOrgScrollPos();\n };\n\n _proto.resize = function resize() {\n this._containerOffset = this.options.isOverflowScroll ? 0 : this._getOffset();\n };\n\n _proto._onResize = function _onResize() {\n var _this = this;\n\n if (this._timer.resize) {\n clearTimeout(this._timer.resize);\n }\n\n this._timer.resize = setTimeout(function () {\n _this.resize();\n\n _this.options.resize();\n\n _this._timer.resize = null;\n\n _this.reset();\n }, 100);\n };\n\n _proto.detachEvent = function detachEvent() {\n (0, _utils.removeEvent)(this._view, \"scroll\", this._onCheck);\n (0, _utils.removeEvent)(window, \"resize\", this._onResize);\n };\n\n _proto.destroy = function destroy() {\n this.detachEvent();\n this.reset();\n };\n\n return Watcher;\n}();\n\nexports[\"default\"] = Watcher;\nmodule.exports = exports[\"default\"];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/Watcher.js\n// module id = 6\n// module chunks = 0 1","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nfunction isVisible(group, threshold, scrollPos, endScrollPos) {\n var items = group.items,\n outlines = group.outlines;\n var start = outlines.start;\n var end = outlines.end;\n\n if (start.legnth === 0 || end.length === 0 || !items.length || !items[0].el) {\n return 2;\n }\n\n var min = Math.min.apply(Math, start);\n var max = Math.max.apply(Math, end);\n\n if (endScrollPos + threshold < min) {\n return +1;\n } else if (scrollPos - threshold > max) {\n return -1;\n }\n\n return 0;\n}\n\nvar Infinite =\n/*#__PURE__*/\nfunction () {\n function Infinite(itemManger, options) {\n this.options = _extends({\n useRecycle: true,\n threshold: 100,\n append: function append() {},\n prepend: function prepend() {},\n recycle: function recycle() {}\n }, options);\n this._items = itemManger;\n this.clear();\n }\n\n var _proto = Infinite.prototype;\n\n _proto.setSize = function setSize(size) {\n this._status.size = size;\n };\n\n _proto.recycle = function recycle(scrollPos, isForward) {\n if (!this.options.useRecycle) {\n return;\n }\n\n var _this$_status = this._status,\n startCursor = _this$_status.startCursor,\n endCursor = _this$_status.endCursor,\n size = _this$_status.size;\n\n if (startCursor === -1 || endCursor === -1) {\n return;\n }\n\n var endScrollPos = scrollPos + size;\n var _this$options = this.options,\n threshold = _this$options.threshold,\n recycle = _this$options.recycle;\n\n var visibles = this._items.get(startCursor, endCursor).map(function (group) {\n return isVisible(group, threshold, scrollPos, endScrollPos);\n });\n\n var length = visibles.length;\n var start = isForward ? 0 : visibles.lastIndexOf(0);\n var end = isForward ? visibles.indexOf(0) - 1 : visibles.length - 1;\n\n if (!isForward && start !== -1) {\n start += 1;\n }\n\n if (start < 0 || end < 0 || start > end || end - start + 1 >= length) {\n return;\n }\n\n start = startCursor + start;\n end = startCursor + end;\n recycle({\n start: start,\n end: end\n });\n\n if (isForward) {\n this.setCursor(\"start\", end + 1);\n } else {\n this.setCursor(\"end\", start - 1);\n }\n };\n\n _proto.scroll = function scroll(scrollPos) {\n var startCursor = this.getCursor(\"start\");\n var endCursor = this.getCursor(\"end\");\n var items = this._items;\n\n if (typeof scrollPos !== \"number\" || startCursor === -1 || endCursor === -1 || !items.size()) {\n return;\n }\n\n var size = this._status.size;\n var _this$options2 = this.options,\n threshold = _this$options2.threshold,\n append = _this$options2.append,\n prepend = _this$options2.prepend;\n var datas = items.get();\n var endScrollPos = scrollPos + size;\n var startEdgePos = Math.max.apply(Math, datas[startCursor].outlines.start);\n var endEdgePos = Math.min.apply(Math, datas[endCursor].outlines.end);\n var visibles = datas.map(function (group, i) {\n var _group$outlines = group.outlines,\n start = _group$outlines.start,\n end = _group$outlines.end;\n\n if (!start.length || !end.length) {\n return false;\n }\n\n var startPos = Math.min.apply(Math, start);\n var endPos = Math.max.apply(Math, end);\n\n if (startPos - threshold <= endScrollPos && scrollPos <= endPos + threshold) {\n return true;\n }\n\n return false;\n });\n var start = visibles.indexOf(true);\n var end = visibles.lastIndexOf(true);\n\n if (~start && start < startCursor) {\n prepend({\n cache: datas.slice(start, Math.min(startCursor, end + 1))\n });\n } else if (endCursor < end) {\n append({\n cache: datas.slice(Math.max(start, endCursor + 1), end + 1)\n });\n } else if (endScrollPos >= endEdgePos - threshold) {\n append({\n cache: datas.slice(endCursor + 1, endCursor + 2)\n });\n } else if (scrollPos <= startEdgePos + threshold) {\n prepend({\n cache: datas.slice(startCursor - 1, startCursor)\n });\n }\n };\n\n _proto.setCursor = function setCursor(cursor, index) {\n var status = this._status;\n var items = this._items;\n var size = items.size();\n\n if (!this.options.useRecycle) {\n status.startCursor = 0;\n\n if (items.getOutline(size - 1, \"end\").length) {\n status.endCursor = size - 1;\n return;\n }\n\n if (cursor !== \"end\") {\n return;\n }\n }\n\n if (cursor === \"start\") {\n status.startCursor = index;\n } else {\n status.endCursor = Math.min(size - 1, index);\n }\n\n status.startCursor = Math.max(0, status.startCursor);\n };\n\n _proto.setStatus = function setStatus(status) {\n this._status = _extends(this._status, status);\n };\n\n _proto.getStatus = function getStatus(startKey, endKey) {\n var _this$_status2 = this._status,\n startCursor = _this$_status2.startCursor,\n endCursor = _this$_status2.endCursor,\n size = _this$_status2.size;\n var startIndex = Math.max(this._items.indexOf(startKey), 0);\n var endIndex = (this._items.indexOf(endKey) + 1 || this._items.size()) - 1;\n var start = Math.max(startCursor - startIndex, ~startCursor ? 0 : -1);\n var end = Math.max(Math.min(endCursor - startIndex, endIndex - startIndex), start);\n return {\n startCursor: start,\n endCursor: end,\n size: size\n };\n };\n\n _proto.getEdgeOutline = function getEdgeOutline(cursor) {\n var _this$_status3 = this._status,\n startCursor = _this$_status3.startCursor,\n endCursor = _this$_status3.endCursor;\n\n if (startCursor === -1 || endCursor === -1) {\n return [];\n }\n\n return this._items.getOutline(cursor === \"start\" ? startCursor : endCursor, cursor);\n };\n\n _proto.getEdgeValue = function getEdgeValue(cursor) {\n var outlines = this.getEdgeOutline(cursor);\n return outlines.length ? Math[cursor === \"start\" ? \"min\" : \"max\"].apply(Math, outlines) : 0;\n };\n\n _proto.getVisibleItems = function getVisibleItems() {\n return this._items.pluck(\"items\", this._status.startCursor, this._status.endCursor);\n };\n\n _proto.getCursor = function getCursor(cursor) {\n return this._status[cursor === \"start\" ? \"startCursor\" : \"endCursor\"];\n };\n\n _proto.getVisibleData = function getVisibleData() {\n return this._items.get(this._status.startCursor, this._status.endCursor);\n };\n\n _proto.remove = function remove(element) {\n return this._items.remove(element, this._status.startCursor, this._status.endCursor);\n };\n\n _proto.clear = function clear() {\n this._status = {\n startCursor: -1,\n endCursor: -1,\n size: -1\n };\n };\n\n return Infinite;\n}();\n\nvar _default = Infinite;\nexports[\"default\"] = _default;\nmodule.exports = exports[\"default\"];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/Infinite.js\n// module id = 7\n// module chunks = 0 1","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _AutoSizer = _interopRequireDefault(require(\"./AutoSizer\"));\n\nvar _ImageLoaded = _interopRequireWildcard(require(\"./ImageLoaded\"));\n\nvar _ItemManager = _interopRequireDefault(require(\"./ItemManager\"));\n\nvar _utils = require(\"./utils\");\n\nvar _consts = require(\"./consts\");\n\nvar _DOMRenderer = _interopRequireDefault(require(\"./DOMRenderer\"));\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj[\"default\"] = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nfunction hasTarget(target, value) {\n return ~target.indexOf(value);\n}\n\nvar LayoutMananger =\n/*#__PURE__*/\nfunction () {\n function LayoutMananger(items, renderer, options) {\n if (options === void 0) {\n options = {};\n }\n\n _extends(this.options = {\n attributePrefix: \"data-\",\n isEqualSize: false,\n isConstantSize: false,\n horizontal: false\n }, options);\n\n this._items = items;\n this._renderer = renderer;\n this._layout = null;\n }\n\n var _proto = LayoutMananger.prototype;\n\n _proto.setLayout = function setLayout(layout) {\n this._layout = layout;\n };\n\n _proto.setSize = function setSize(size) {\n this._layout.setSize(size);\n };\n\n _proto._complete = function _complete(groups, items, isAppend, isUpdate, callback) {\n var _this = this;\n\n var itemManager = this._items;\n var cursor = isAppend ? \"end\" : \"start\";\n var groupIndex = itemManager.indexOf(groups[0]);\n var prevGroup = itemManager.getData(groupIndex + (isAppend ? -1 : 1));\n var outline = prevGroup ? prevGroup.outlines[cursor] : [0];\n\n this._renderer.updateSize(items);\n\n var groupInfos = groups.map(function (group) {\n var groupOutline = group.outlines[isAppend ? \"start\" : \"end\"];\n var isRelayout = isUpdate || !outline.length || (outline.length === groupOutline.length ? !outline.every(function (v, index) {\n return v === groupOutline[index];\n }) : true);\n\n if (!isRelayout) {\n outline = group.outlines[isAppend ? \"end\" : \"start\"];\n\n _DOMRenderer[\"default\"].renderItems(group.items);\n\n return group;\n }\n\n var groupItems = group.items;\n\n var groupInfo = _this._layout[isAppend ? \"append\" : \"prepend\"](groupItems, outline, true);\n\n _extends(group, groupInfo);\n\n _DOMRenderer[\"default\"].renderItems(groupInfo.items);\n\n outline = groupInfo.outlines[isAppend ? \"end\" : \"start\"];\n return groupInfo;\n });\n callback({\n groups: groupInfos,\n items: items,\n isAppend: isAppend\n });\n };\n\n _proto._error = function _error(removeTarget, replaceTarget, target, items, errorIndex, callback) {\n var item = items[errorIndex];\n var element = item.el;\n var prefix = this.options.attributePrefix; // remove item\n\n var removeItem = function removeItem() {\n if (hasTarget(removeTarget, element)) {\n return;\n }\n\n removeTarget.push(element);\n var index = replaceTarget.indexOf(errorIndex);\n index !== -1 && replaceTarget.splice(index, 1);\n }; // remove image\n\n\n var remove = function remove() {\n if (target === element) {\n removeItem();\n return;\n }\n\n if (hasTarget(removeTarget, element)) {\n return;\n }\n\n target.parentNode.removeChild(target);\n item.content = element.outerHTML;\n\n if (hasTarget(replaceTarget, errorIndex)) {\n return;\n }\n\n replaceTarget.push(errorIndex);\n }; // replace image\n\n\n var replace = function replace(src) {\n if (hasTarget(removeTarget, element)) {\n return;\n }\n\n if (src) {\n if ((0, _utils.matchHTML)(src) || typeof src === \"object\") {\n var parentNode = target.parentNode;\n parentNode.insertBefore((0, _utils.$)(src), target);\n parentNode.removeChild(target);\n item.content = element.outerHTML;\n } else {\n target.src = src;\n\n if (target.getAttribute(prefix + \"width\")) {\n _AutoSizer[\"default\"].remove(target);\n\n target.removeAttribute(prefix + \"width\");\n target.removeAttribute(prefix + \"height\");\n }\n }\n }\n\n item.content = element.outerHTML;\n\n if (hasTarget(replaceTarget, errorIndex)) {\n return;\n }\n\n replaceTarget.push(errorIndex);\n }; // replace item\n\n\n var replaceItem = function replaceItem(content) {\n if (hasTarget(removeTarget, element)) {\n return;\n }\n\n element.innerHTML = content;\n item.content = element.outerHTML;\n\n if (hasTarget(replaceTarget, errorIndex)) {\n return;\n }\n\n replaceTarget.push(errorIndex);\n };\n\n callback({\n target: target,\n element: element,\n items: items,\n item: item,\n itemIndex: errorIndex,\n replace: replace,\n replaceItem: replaceItem,\n remove: remove,\n removeItem: removeItem\n });\n };\n\n _proto._end = function _end(removeTarget, replaceTarget, items, callback) {\n var _this2 = this;\n\n var attributePrefix = this.options.attributePrefix;\n var removeTargetLength = removeTarget.length;\n var replaceTargetLength = replaceTarget.length;\n\n if (!removeTargetLength && !replaceTargetLength) {\n callback({\n remove: []\n });\n return;\n }\n\n var layoutedItems = replaceTarget.map(function (itemIndex) {\n return items[itemIndex];\n });\n\n if (!replaceTargetLength) {\n callback({\n remove: removeTarget,\n layout: true\n });\n return;\n } // wait layoutComplete beacause of error event.\n\n\n _ImageLoaded[\"default\"].check(layoutedItems.map(function (v) {\n return v.el;\n }), {\n prefix: attributePrefix,\n complete: function complete() {\n _this2._renderer.updateSize(layoutedItems);\n\n callback({\n remove: removeTarget,\n layout: true\n });\n }\n });\n };\n\n _proto._insert = function _insert(_ref, _ref2) {\n var _this3 = this;\n\n var groups = _ref.groups,\n _ref$items = _ref.items,\n items = _ref$items === void 0 ? _ItemManager[\"default\"].pluck(groups, \"items\") : _ref$items,\n isAppend = _ref.isAppend,\n isUpdate = _ref.isUpdate;\n\n var _ref2$error = _ref2.error,\n _error2 = _ref2$error === void 0 ? function () {} : _ref2$error,\n _ref2$complete = _ref2.complete,\n _complete2 = _ref2$complete === void 0 ? function () {} : _ref2$complete,\n _ref2$end = _ref2.end,\n _end2 = _ref2$end === void 0 ? function () {} : _ref2$end;\n\n if (!groups.length) {\n return;\n }\n\n var checkGroups = isAppend ? groups : groups.reverse();\n var replaceTarget = [];\n var removeTarget = [];\n var elements = items.map(function (item) {\n return item.el;\n });\n var type = this.options.isEqualSize && this._renderer._size.item ? _ImageLoaded.CHECK_ONLY_ERROR : _ImageLoaded.CHECK_ALL;\n var prefix = this.options.attributePrefix;\n\n _ImageLoaded[\"default\"].check(elements, {\n prefix: prefix,\n type: type,\n complete: function complete() {\n if (!_this3._items) {\n return;\n }\n\n _this3._complete(checkGroups, items, isAppend, isUpdate, _complete2);\n },\n error: function error(_ref3) {\n var target = _ref3.target,\n itemIndex = _ref3.itemIndex;\n\n if (!_this3._items) {\n return;\n }\n\n _this3._error(removeTarget, replaceTarget, target, items, itemIndex, _error2);\n },\n end: function end() {\n if (!_this3._items) {\n return;\n }\n\n _this3._end(removeTarget, replaceTarget, items, _end2);\n }\n });\n };\n\n _proto.append = function append(_ref4, callbacks) {\n var groups = _ref4.groups,\n items = _ref4.items,\n isUpdate = _ref4.isUpdate;\n\n if (callbacks === void 0) {\n callbacks = {};\n }\n\n this._insert({\n groups: groups,\n items: items,\n isUpdate: isUpdate,\n isAppend: true\n }, callbacks);\n };\n\n _proto.prepend = function prepend(_ref5, callbacks) {\n var groups = _ref5.groups,\n items = _ref5.items,\n isUpdate = _ref5.isUpdate;\n\n if (callbacks === void 0) {\n callbacks = {};\n }\n\n this._insert({\n groups: groups,\n items: items,\n isUpdate: isUpdate,\n isAppend: false\n }, callbacks);\n };\n\n _proto.layout = function layout(isRelayout, groups, items) {\n var renderer = this._renderer;\n var _renderer$options = renderer.options,\n isEqualSize = _renderer$options.isEqualSize,\n isConstantSize = _renderer$options.isConstantSize;\n var layoutGroups = groups.filter(function (group) {\n var item = group.items[0];\n return item.orgSize && item.rect.top > _consts.DUMMY_POSITION / 10;\n });\n\n if (!layoutGroups.length) {\n return [];\n }\n\n var outline = layoutGroups[0].outlines.start;\n\n if (isRelayout) {\n outline = [outline.length ? Math.min.apply(Math, outline) : 0];\n\n if (!isConstantSize && items.length) {\n renderer.updateSize(items); // update invisible items' size\n\n if (isEqualSize && items[0].size) {\n _ItemManager[\"default\"].pluck(layoutGroups, \"items\").forEach(function (item) {\n item.size = _extends({}, items[0].size);\n });\n }\n }\n }\n\n this._layout.layout(layoutGroups, outline);\n\n return layoutGroups;\n };\n\n _proto.destroy = function destroy() {\n this._items = null;\n this._renderer = null;\n };\n\n return LayoutMananger;\n}();\n\nexports[\"default\"] = LayoutMananger;\nmodule.exports = exports[\"default\"];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/LayoutManager.js\n// module id = 8\n// module chunks = 0 1","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = exports.CHECK_ONLY_ERROR = exports.CHECK_ALL = void 0;\n\nvar _consts = require(\"./consts\");\n\nvar _utils = require(\"./utils\");\n\nvar _AutoSizer = _interopRequireDefault(require(\"./AutoSizer\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar CHECK_ALL = 1;\nexports.CHECK_ALL = CHECK_ALL;\nvar CHECK_ONLY_ERROR = 2;\nexports.CHECK_ONLY_ERROR = CHECK_ONLY_ERROR;\n\nfunction isDataAttribute(target, prefix) {\n return !!target.getAttribute(prefix + \"width\");\n}\n\nvar ImageLoaded =\n/*#__PURE__*/\nfunction () {\n function ImageLoaded() {}\n\n ImageLoaded.waitImageLoaded = function waitImageLoaded(needCheck, _ref) {\n var _ref$prefix = _ref.prefix,\n prefix = _ref$prefix === void 0 ? \"\" : _ref$prefix,\n length = _ref.length,\n type = _ref.type,\n complete = _ref.complete,\n error = _ref.error,\n end = _ref.end;\n var checkCount = 0;\n var endCount = length;\n\n if (type !== CHECK_ONLY_ERROR) {\n checkCount = endCount;\n }\n\n var checkEnd = function checkEnd() {\n if (--endCount !== 0) {\n return;\n }\n\n end && end();\n };\n\n var checkImage = function checkImage() {\n checkCount--;\n\n if (checkCount !== 0) {\n return;\n }\n\n complete && complete();\n };\n\n var onError = function onError(target, itemIndex) {\n if (itemIndex === void 0) {\n itemIndex = target.__ITEM_INDEX__;\n }\n\n error && error({\n target: target,\n itemIndex: itemIndex\n });\n };\n\n var onCheck = function onCheck(e) {\n var target = e.target || e.srcElement;\n (0, _utils.removeEvent)(target, \"error\", onCheck);\n (0, _utils.removeEvent)(target, \"load\", onCheck);\n\n if (type === CHECK_ALL && isDataAttribute(target, prefix)) {\n _AutoSizer[\"default\"].remove(target, e.type === \"error\");\n } else {\n checkImage();\n }\n\n if (e.type === \"error\") {\n onError(target);\n }\n\n delete target.__ITEM_INDEX__;\n checkEnd();\n };\n\n needCheck.forEach(function (images, i) {\n images.forEach(function (v) {\n // workaround for IE\n if (v.complete && (!_consts.IS_IE || _consts.IS_IE && v.naturalWidth)) {\n if (!v.naturalWidth) {\n onError(v, i);\n }\n\n checkImage();\n checkEnd();\n return;\n }\n\n v.__ITEM_INDEX__ = i;\n\n if (type === CHECK_ALL && isDataAttribute(v, prefix)) {\n _AutoSizer[\"default\"].add(v, prefix);\n\n checkImage();\n }\n\n (0, _utils.addEvent)(v, \"load\", onCheck);\n (0, _utils.addEvent)(v, \"error\", onCheck);\n _consts.IS_IE && v.setAttribute(\"src\", v.getAttribute(\"src\"));\n });\n });\n };\n\n ImageLoaded.checkImageLoaded = function checkImageLoaded(el) {\n if (el.tagName === \"IMG\") {\n return el.complete ? [] : [el];\n } else {\n return (0, _utils.toArray)(el.querySelectorAll(\"img\"));\n }\n };\n\n ImageLoaded.check = function check(elements, _ref2) {\n var _this = this;\n\n var prefix = _ref2.prefix,\n _ref2$type = _ref2.type,\n type = _ref2$type === void 0 ? CHECK_ALL : _ref2$type,\n complete = _ref2.complete,\n error = _ref2.error,\n end = _ref2.end;\n var images = elements.map(function (element) {\n return _this.checkImageLoaded(element);\n });\n var length = images.reduce(function (sum, element) {\n return sum + element.length;\n }, 0);\n\n if (type === CHECK_ONLY_ERROR || length === 0) {\n // convert to async\n setTimeout(function () {\n complete && complete();\n\n if (length === 0) {\n end && end();\n }\n }, 0);\n }\n\n if (length > 0) {\n setTimeout(function () {\n _this.waitImageLoaded(images, {\n prefix: prefix,\n length: length,\n type: type,\n complete: complete,\n error: error,\n end: end\n });\n }, 0);\n }\n };\n\n return ImageLoaded;\n}();\n\nvar _default = ImageLoaded;\nexports[\"default\"] = _default;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/ImageLoaded.js\n// module id = 9\n// module chunks = 0 1","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _consts = require(\"../consts\");\n\nvar _utils = require(\"../utils\");\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 for (var i = y; i < y + height; ++i) {\n for (var j = x; j < x + width; ++j) {\n if (type !== frame[i][j]) {\n continue;\n }\n\n frame[i][j] = 0;\n }\n }\n}\n\nfunction searchShapeInFrame(frame, type, top, left, width, height) {\n var size = {\n left: left,\n top: top,\n type: type,\n width: 1,\n height: 1\n };\n\n for (var i = left; i < width; ++i) {\n if (frame[top][i] === type) {\n size.width = i - left + 1;\n continue;\n }\n\n break;\n }\n\n for (var _i = top; _i < height; ++_i) {\n if (frame[_i][left] === type) {\n size.height = _i - top + 1;\n continue;\n }\n\n break;\n } // After finding the shape, it will not find again.\n\n\n disableFrame(frame, type, left, top, size.width, size.height);\n return size;\n}\n\nfunction getShapes(frame) {\n var height = frame.length;\n var width = height ? frame[0].length : 0;\n var shapes = [];\n\n for (var i = 0; i < height; ++i) {\n for (var j = 0; j < width; ++j) {\n var type = frame[i][j];\n\n if (!type) {\n continue;\n } // Separate shapes with other numbers.\n\n\n shapes.push(searchShapeInFrame(frame, type, i, j, width, height));\n }\n }\n\n shapes.sort(function (a, b) {\n return a.type < b.type ? -1 : 1;\n });\n return {\n shapes: shapes,\n width: width,\n height: height\n };\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