{"version":3,"sources":["webpack:///./node_modules/@ionic/core/dist/esm-es5/ion-virtual-scroll.entry.js"],"names":["updateVDom","dom","heightIndex","cells","range","_i","dom_1","length","node","change","d","toMutate","end","offset","i","cell","find","n","top","push","pool","filter","_a","toMutate_1","type","index","visible","forEach","doRender","el","nodeRender","updateCellHeight","children","Array","from","tagName","childrenNu","child","newChild","template","getTemplate","ownerDocument","importNode","content","classList","add","appendChild","style","transform","remove","reads","calcCells","items","itemHeight","headerHeight","footerHeight","headerFn","footerFn","approxHeaderHeight","approxFooterHeight","approxItemHeight","j","len","value","item","CELL_TYPE_HEADER","height","CELL_TYPE_ITEM","CELL_TYPE_FOOTER","querySelector","VirtualScroll","class_1","prototype","itemsChanged","this","updateVirtualScroll","connectedCallback","contentEl","_b","label","closest","getScrollElement","console","error","scrollEl","sent","updateState","componentDidUpdate","disconnectedCallback","undefined","onResize","positionForItem","Promise","resolve","c","getHeightIndex","checkRange","cellIndex","max","findIndex","dst","src","lastItemLen","indexDirty","Math","scheduleUpdate","checkEnd","isEnabled","timerUpdate","clearTimeout","readVS","bind","writeVS","topOffset","offsetTop","parentElement","viewportOffset","viewportHeight","offsetHeight","currentScrollTop","scrollTop","dirtyIndex","viewport","vierportHeight","margin","bottom","buffer","topPos","bottomPos","min","currentRange","virtualDom","domRender","renderItem","forceUpdate","update","window","getComputedStyle","parseFloat","getPropertyValue","_this","setCellHeight","componentOnReady","then","setTimeout","shouldEnable","enableScrollEvents","Infinity","calcHeightIndex","buf","newBuf","Uint32Array","set","subarray","totalHeight","acum","shouldListen","rmEvent","addEventListener","onScroll","removeEventListener","renderVirtualNode","renderHeader","renderFooter","render","VirtualProxy","map","Object","defineProperty","get","enumerable","configurable","hostRef","utils","vattrs","classes","class","assign"],"mappings":"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","file":"js/chunk-2d0d43da.78362dac.js","sourcesContent":["import { __awaiter, __generator } from \"tslib\";\nimport { r as registerInstance, f as readTask, w as writeTask, h, H as Host, e as getElement } from './core-feeeff0d.js';\nimport './config-3c7f3790.js';\nvar CELL_TYPE_ITEM = 'item';\nvar CELL_TYPE_HEADER = 'header';\nvar CELL_TYPE_FOOTER = 'footer';\nvar NODE_CHANGE_NONE = 0;\nvar NODE_CHANGE_POSITION = 1;\nvar NODE_CHANGE_CELL = 2;\nvar MIN_READS = 2;\nvar updateVDom = function (dom, heightIndex, cells, range) {\n // reset dom\n for (var _i = 0, dom_1 = dom; _i < dom_1.length; _i++) {\n var node = dom_1[_i];\n node.change = NODE_CHANGE_NONE;\n node.d = true;\n }\n // try to match into exisiting dom\n var toMutate = [];\n var end = range.offset + range.length;\n var _loop_1 = function (i) {\n var cell = cells[i];\n var node = dom.find(function (n) { return n.d && n.cell === cell; });\n if (node) {\n var top = heightIndex[i];\n if (top !== node.top) {\n node.top = top;\n node.change = NODE_CHANGE_POSITION;\n }\n node.d = false;\n }\n else {\n toMutate.push(cell);\n }\n };\n for (var i = range.offset; i < end; i++) {\n _loop_1(i);\n }\n // needs to append\n var pool = dom.filter(function (n) { return n.d; });\n var _loop_2 = function (cell) {\n var node = pool.find(function (n) { return n.d && n.cell.type === cell.type; });\n var index = cell.i;\n if (node) {\n node.d = false;\n node.change = NODE_CHANGE_CELL;\n node.cell = cell;\n node.top = heightIndex[index];\n }\n else {\n dom.push({\n d: false,\n cell: cell,\n visible: true,\n change: NODE_CHANGE_CELL,\n top: heightIndex[index],\n });\n }\n };\n for (var _a = 0, toMutate_1 = toMutate; _a < toMutate_1.length; _a++) {\n var cell = toMutate_1[_a];\n _loop_2(cell);\n }\n dom\n .filter(function (n) { return n.d && n.top !== -9999; })\n .forEach(function (n) {\n n.change = NODE_CHANGE_POSITION;\n n.top = -9999;\n });\n};\nvar doRender = function (el, nodeRender, dom, updateCellHeight) {\n var children = Array.from(el.children).filter(function (n) { return n.tagName !== 'TEMPLATE'; });\n var childrenNu = children.length;\n var child;\n for (var i = 0; i < dom.length; i++) {\n var node = dom[i];\n var cell = node.cell;\n // the cell change, the content must be updated\n if (node.change === NODE_CHANGE_CELL) {\n if (i < childrenNu) {\n child = children[i];\n nodeRender(child, cell, i);\n }\n else {\n var newChild = createNode(el, cell.type);\n child = nodeRender(newChild, cell, i) || newChild;\n child.classList.add('virtual-item');\n el.appendChild(child);\n }\n child['$ionCell'] = cell;\n }\n else {\n child = children[i];\n }\n // only update position when it changes\n if (node.change !== NODE_CHANGE_NONE) {\n child.style.transform = \"translate3d(0,\" + node.top + \"px,0)\";\n }\n // update visibility\n var visible = cell.visible;\n if (node.visible !== visible) {\n if (visible) {\n child.classList.remove('virtual-loading');\n }\n else {\n child.classList.add('virtual-loading');\n }\n node.visible = visible;\n }\n // dynamic height\n if (cell.reads > 0) {\n updateCellHeight(cell, child);\n cell.reads--;\n }\n }\n};\nvar createNode = function (el, type) {\n var template = getTemplate(el, type);\n if (template && el.ownerDocument) {\n return el.ownerDocument.importNode(template.content, true).children[0];\n }\n return null;\n};\nvar getTemplate = function (el, type) {\n switch (type) {\n case CELL_TYPE_ITEM: return el.querySelector('template:not([name])');\n case CELL_TYPE_HEADER: return el.querySelector('template[name=header]');\n case CELL_TYPE_FOOTER: return el.querySelector('template[name=footer]');\n }\n};\nvar getViewport = function (scrollTop, vierportHeight, margin) {\n return {\n top: Math.max(scrollTop - margin, 0),\n bottom: scrollTop + vierportHeight + margin\n };\n};\nvar getRange = function (heightIndex, viewport, buffer) {\n var topPos = viewport.top;\n var bottomPos = viewport.bottom;\n // find top index\n var i = 0;\n for (; i < heightIndex.length; i++) {\n if (heightIndex[i] > topPos) {\n break;\n }\n }\n var offset = Math.max(i - buffer - 1, 0);\n // find bottom index\n for (; i < heightIndex.length; i++) {\n if (heightIndex[i] >= bottomPos) {\n break;\n }\n }\n var end = Math.min(i + buffer, heightIndex.length);\n var length = end - offset;\n return { offset: offset, length: length };\n};\nvar getShouldUpdate = function (dirtyIndex, currentRange, range) {\n var end = range.offset + range.length;\n return (dirtyIndex <= end ||\n currentRange.offset !== range.offset ||\n currentRange.length !== range.length);\n};\nvar findCellIndex = function (cells, index) {\n var max = cells.length > 0 ? cells[cells.length - 1].index : 0;\n if (index === 0) {\n return 0;\n }\n else if (index === max + 1) {\n return cells.length;\n }\n else {\n return cells.findIndex(function (c) { return c.index === index; });\n }\n};\nvar inplaceUpdate = function (dst, src, offset) {\n if (offset === 0 && src.length >= dst.length) {\n return src;\n }\n for (var i = 0; i < src.length; i++) {\n dst[i + offset] = src[i];\n }\n return dst;\n};\nvar calcCells = function (items, itemHeight, headerHeight, footerHeight, headerFn, footerFn, approxHeaderHeight, approxFooterHeight, approxItemHeight, j, offset, len) {\n var cells = [];\n var end = len + offset;\n for (var i = offset; i < end; i++) {\n var item = items[i];\n if (headerFn) {\n var value = headerFn(item, i, items);\n if (value != null) {\n cells.push({\n i: j++,\n type: CELL_TYPE_HEADER,\n value: value,\n index: i,\n height: headerHeight ? headerHeight(value, i) : approxHeaderHeight,\n reads: headerHeight ? 0 : MIN_READS,\n visible: !!headerHeight,\n });\n }\n }\n cells.push({\n i: j++,\n type: CELL_TYPE_ITEM,\n value: item,\n index: i,\n height: itemHeight ? itemHeight(item, i) : approxItemHeight,\n reads: itemHeight ? 0 : MIN_READS,\n visible: !!itemHeight,\n });\n if (footerFn) {\n var value = footerFn(item, i, items);\n if (value != null) {\n cells.push({\n i: j++,\n type: CELL_TYPE_FOOTER,\n value: value,\n index: i,\n height: footerHeight ? footerHeight(value, i) : approxFooterHeight,\n reads: footerHeight ? 0 : MIN_READS,\n visible: !!footerHeight,\n });\n }\n }\n }\n return cells;\n};\nvar calcHeightIndex = function (buf, cells, index) {\n var acum = buf[index];\n for (var i = index; i < buf.length; i++) {\n buf[i] = acum;\n acum += cells[i].height;\n }\n return acum;\n};\nvar resizeBuffer = function (buf, len) {\n if (!buf) {\n return new Uint32Array(len);\n }\n if (buf.length === len) {\n return buf;\n }\n else if (len > buf.length) {\n var newBuf = new Uint32Array(len);\n newBuf.set(buf);\n return newBuf;\n }\n else {\n return buf.subarray(0, len);\n }\n};\nvar positionForIndex = function (index, cells, heightIndex) {\n var cell = cells.find(function (c) { return c.type === CELL_TYPE_ITEM && c.index === index; });\n if (cell) {\n return heightIndex[cell.i];\n }\n return -1;\n};\nvar VirtualScroll = /** @class */ (function () {\n function class_1(hostRef) {\n var _this = this;\n registerInstance(this, hostRef);\n this.range = { offset: 0, length: 0 };\n this.viewportHeight = 0;\n this.cells = [];\n this.virtualDom = [];\n this.isEnabled = false;\n this.viewportOffset = 0;\n this.currentScrollTop = 0;\n this.indexDirty = 0;\n this.lastItemLen = 0;\n this.totalHeight = 0;\n /**\n * It is important to provide this\n * if virtual item height will be significantly larger than the default\n * The approximate height of each virtual item template's cell.\n * This dimension is used to help determine how many cells should\n * be created when initialized, and to help calculate the height of\n * the scrollable area. This height value can only use `px` units.\n * Note that the actual rendered size of each cell comes from the\n * app's CSS, whereas this approximation is used to help calculate\n * initial dimensions before the item has been rendered.\n */\n this.approxItemHeight = 45;\n /**\n * The approximate height of each header template's cell.\n * This dimension is used to help determine how many cells should\n * be created when initialized, and to help calculate the height of\n * the scrollable area. This height value can only use `px` units.\n * Note that the actual rendered size of each cell comes from the\n * app's CSS, whereas this approximation is used to help calculate\n * initial dimensions before the item has been rendered.\n */\n this.approxHeaderHeight = 30;\n /**\n * The approximate width of each footer template's cell.\n * This dimension is used to help determine how many cells should\n * be created when initialized, and to help calculate the height of\n * the scrollable area. This height value can only use `px` units.\n * Note that the actual rendered size of each cell comes from the\n * app's CSS, whereas this approximation is used to help calculate\n * initial dimensions before the item has been rendered.\n */\n this.approxFooterHeight = 30;\n this.onScroll = function () {\n _this.updateVirtualScroll();\n };\n }\n class_1.prototype.itemsChanged = function () {\n this.calcCells();\n this.updateVirtualScroll();\n };\n class_1.prototype.connectedCallback = function () {\n return __awaiter(this, void 0, void 0, function () {\n var contentEl, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n contentEl = this.el.closest('ion-content');\n if (!contentEl) {\n console.error(' must be used inside an ');\n return [2 /*return*/];\n }\n _a = this;\n return [4 /*yield*/, contentEl.getScrollElement()];\n case 1:\n _a.scrollEl = _b.sent();\n this.contentEl = contentEl;\n this.calcCells();\n this.updateState();\n return [2 /*return*/];\n }\n });\n });\n };\n class_1.prototype.componentDidUpdate = function () {\n this.updateState();\n };\n class_1.prototype.disconnectedCallback = function () {\n this.scrollEl = undefined;\n };\n class_1.prototype.onResize = function () {\n this.calcCells();\n this.updateVirtualScroll();\n };\n /**\n * Returns the position of the virtual item at the given index.\n */\n class_1.prototype.positionForItem = function (index) {\n return Promise.resolve(positionForIndex(index, this.cells, this.getHeightIndex()));\n };\n /**\n * This method marks a subset of items as dirty, so they can be re-rendered. Items should be marked as\n * dirty any time the content or their style changes.\n *\n * The subset of items to be updated can are specifing by an offset and a length.\n */\n class_1.prototype.checkRange = function (offset, len) {\n if (len === void 0) { len = -1; }\n return __awaiter(this, void 0, void 0, function () {\n var length, cellIndex, cells;\n return __generator(this, function (_a) {\n // TODO: kind of hacky how we do in-place updated of the cells\n // array. this part needs a complete refactor\n if (!this.items) {\n return [2 /*return*/];\n }\n length = (len === -1)\n ? this.items.length - offset\n : len;\n cellIndex = findCellIndex(this.cells, offset);\n cells = calcCells(this.items, this.itemHeight, this.headerHeight, this.footerHeight, this.headerFn, this.footerFn, this.approxHeaderHeight, this.approxFooterHeight, this.approxItemHeight, cellIndex, offset, length);\n this.cells = inplaceUpdate(this.cells, cells, cellIndex);\n this.lastItemLen = this.items.length;\n this.indexDirty = Math.max(offset - 1, 0);\n this.scheduleUpdate();\n return [2 /*return*/];\n });\n });\n };\n /**\n * This method marks the tail the items array as dirty, so they can be re-rendered.\n *\n * It's equivalent to calling:\n *\n * ```js\n * virtualScroll.checkRange(lastItemLen);\n * ```\n */\n class_1.prototype.checkEnd = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (this.items) {\n this.checkRange(this.lastItemLen);\n }\n return [2 /*return*/];\n });\n });\n };\n class_1.prototype.updateVirtualScroll = function () {\n // do nothing if virtual-scroll is disabled\n if (!this.isEnabled || !this.scrollEl) {\n return;\n }\n // unschedule future updates\n if (this.timerUpdate) {\n clearTimeout(this.timerUpdate);\n this.timerUpdate = undefined;\n }\n // schedule DOM operations into the stencil queue\n readTask(this.readVS.bind(this));\n writeTask(this.writeVS.bind(this));\n };\n class_1.prototype.readVS = function () {\n var _a = this, contentEl = _a.contentEl, scrollEl = _a.scrollEl, el = _a.el;\n var topOffset = 0;\n var node = el;\n while (node && node !== contentEl) {\n topOffset += node.offsetTop;\n node = node.parentElement;\n }\n this.viewportOffset = topOffset;\n if (scrollEl) {\n this.viewportHeight = scrollEl.offsetHeight;\n this.currentScrollTop = scrollEl.scrollTop;\n }\n };\n class_1.prototype.writeVS = function () {\n var dirtyIndex = this.indexDirty;\n // get visible viewport\n var scrollTop = this.currentScrollTop - this.viewportOffset;\n var viewport = getViewport(scrollTop, this.viewportHeight, 100);\n // compute lazily the height index\n var heightIndex = this.getHeightIndex();\n // get array bounds of visible cells base in the viewport\n var range = getRange(heightIndex, viewport, 2);\n // fast path, do nothing\n var shouldUpdate = getShouldUpdate(dirtyIndex, this.range, range);\n if (!shouldUpdate) {\n return;\n }\n this.range = range;\n // in place mutation of the virtual DOM\n updateVDom(this.virtualDom, heightIndex, this.cells, range);\n // Write DOM\n // Different code paths taken depending of the render API used\n if (this.nodeRender) {\n doRender(this.el, this.nodeRender, this.virtualDom, this.updateCellHeight.bind(this));\n }\n else if (this.domRender) {\n this.domRender(this.virtualDom);\n }\n else if (this.renderItem) {\n this.el.forceUpdate();\n }\n };\n class_1.prototype.updateCellHeight = function (cell, node) {\n var _this = this;\n var update = function () {\n if (node['$ionCell'] === cell) {\n var style = window.getComputedStyle(node);\n var height = node.offsetHeight + parseFloat(style.getPropertyValue('margin-bottom'));\n _this.setCellHeight(cell, height);\n }\n };\n if (node && node.componentOnReady) {\n node.componentOnReady().then(update);\n }\n else {\n update();\n }\n };\n class_1.prototype.setCellHeight = function (cell, height) {\n var index = cell.i;\n // the cell might changed since the height update was scheduled\n if (cell !== this.cells[index]) {\n return;\n }\n if (cell.height !== height || cell.visible !== true) {\n cell.visible = true;\n cell.height = height;\n this.indexDirty = Math.min(this.indexDirty, index);\n this.scheduleUpdate();\n }\n };\n class_1.prototype.scheduleUpdate = function () {\n var _this = this;\n clearTimeout(this.timerUpdate);\n this.timerUpdate = setTimeout(function () { return _this.updateVirtualScroll(); }, 100);\n };\n class_1.prototype.updateState = function () {\n var shouldEnable = !!(this.scrollEl &&\n this.cells);\n if (shouldEnable !== this.isEnabled) {\n this.enableScrollEvents(shouldEnable);\n if (shouldEnable) {\n this.updateVirtualScroll();\n }\n }\n };\n class_1.prototype.calcCells = function () {\n if (!this.items) {\n return;\n }\n this.lastItemLen = this.items.length;\n this.cells = calcCells(this.items, this.itemHeight, this.headerHeight, this.footerHeight, this.headerFn, this.footerFn, this.approxHeaderHeight, this.approxFooterHeight, this.approxItemHeight, 0, 0, this.lastItemLen);\n this.indexDirty = 0;\n };\n class_1.prototype.getHeightIndex = function () {\n if (this.indexDirty !== Infinity) {\n this.calcHeightIndex(this.indexDirty);\n }\n return this.heightIndex;\n };\n class_1.prototype.calcHeightIndex = function (index) {\n if (index === void 0) { index = 0; }\n // TODO: optimize, we don't need to calculate all the cells\n this.heightIndex = resizeBuffer(this.heightIndex, this.cells.length);\n this.totalHeight = calcHeightIndex(this.heightIndex, this.cells, index);\n this.indexDirty = Infinity;\n };\n class_1.prototype.enableScrollEvents = function (shouldListen) {\n var _this = this;\n if (this.rmEvent) {\n this.rmEvent();\n this.rmEvent = undefined;\n }\n var scrollEl = this.scrollEl;\n if (scrollEl) {\n this.isEnabled = shouldListen;\n scrollEl.addEventListener('scroll', this.onScroll);\n this.rmEvent = function () {\n scrollEl.removeEventListener('scroll', _this.onScroll);\n };\n }\n };\n class_1.prototype.renderVirtualNode = function (node) {\n var _a = node.cell, type = _a.type, value = _a.value, index = _a.index;\n switch (type) {\n case CELL_TYPE_ITEM: return this.renderItem(value, index);\n case CELL_TYPE_HEADER: return this.renderHeader(value, index);\n case CELL_TYPE_FOOTER: return this.renderFooter(value, index);\n }\n };\n class_1.prototype.render = function () {\n var _this = this;\n return (h(Host, { style: {\n height: this.totalHeight + \"px\"\n } }, this.renderItem && (h(VirtualProxy, { dom: this.virtualDom }, this.virtualDom.map(function (node) { return _this.renderVirtualNode(node); })))));\n };\n Object.defineProperty(class_1.prototype, \"el\", {\n get: function () { return getElement(this); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(class_1, \"watchers\", {\n get: function () {\n return {\n \"itemHeight\": [\"itemsChanged\"],\n \"headerHeight\": [\"itemsChanged\"],\n \"footerHeight\": [\"itemsChanged\"],\n \"items\": [\"itemsChanged\"]\n };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(class_1, \"style\", {\n get: function () { return \"ion-virtual-scroll{display:block;position:relative;width:100%;contain:strict;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}ion-virtual-scroll>.virtual-loading{opacity:0}ion-virtual-scroll>.virtual-item{position:absolute!important;top:0!important;right:0!important;left:0!important;-webkit-transition-duration:0ms;transition-duration:0ms;will-change:transform}\"; },\n enumerable: true,\n configurable: true\n });\n return class_1;\n}());\nvar VirtualProxy = function (_a, children, utils) {\n var dom = _a.dom;\n return utils.map(children, function (child, i) {\n var node = dom[i];\n var vattrs = child.vattrs || {};\n var classes = vattrs.class || '';\n classes += 'virtual-item ';\n if (!node.visible) {\n classes += 'virtual-loading';\n }\n return Object.assign(Object.assign({}, child), { vattrs: Object.assign(Object.assign({}, vattrs), { class: classes, style: Object.assign(Object.assign({}, vattrs.style), { transform: \"translate3d(0,\" + node.top + \"px,0)\" }) }) });\n });\n};\nexport { VirtualScroll as ion_virtual_scroll };\n"],"sourceRoot":""}