jquery.dgtable 2.0.1 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["node_modules/@danielgindi/dom-utils/lib/ScrollHelper.js","node_modules/@danielgindi/dom-utils/lib/Css.js","node_modules/@danielgindi/dom-utils/lib/DomCompat.js","node_modules/@danielgindi/virtual-list-helper/lib/index.js","node_modules/@danielgindi/dom-utils/lib/DomEventsSink.js","node_modules/@danielgindi/dgtable.js/dist/lib.es6.min.js","index.js"],"sourcesContent":["let rtlScrollType;\r\n\r\nconst detectRtlScrollType = () => {\r\n const definer = document.createElement('div');\r\n definer.dir = 'rtl';\r\n Object.assign(definer.style, {\r\n direction: 'rtl',\r\n fontSize: '14px',\r\n width: '1px',\r\n height: '1px',\r\n position: 'absolute',\r\n top: '-1000px',\r\n overflow: 'scroll',\r\n });\r\n definer.textContent = 'A';\r\n document.body.appendChild(definer);\r\n\r\n let type = 'reverse';\r\n\r\n if (definer.scrollLeft > 0) {\r\n type = 'default';\r\n } else {\r\n definer.scrollLeft = 1;\r\n\r\n // bug: on some machines, chrome will have a positive delta of less than 1.\r\n // a full scroll will still be in the negative direction.\r\n // let's use Math.floor() to account for that bug.\r\n if (Math.floor(definer.scrollLeft) === 0) {\r\n type = 'negative';\r\n }\r\n }\r\n\r\n definer.parentNode.removeChild(definer);\r\n\r\n return type;\r\n};\r\n\r\n/**\r\n * @param {Element} el\r\n * @param {number} left\r\n * @param {boolean|undefined} [rtl] if unspecified, then it's automatically detected.\r\n * @returns {number}\r\n */\r\nfunction calculateNativeScrollLeftForLeft(el, left, rtl) {\r\n if (rtl === undefined) {\r\n rtl = getComputedStyle(el).direction === 'rtl';\r\n }\r\n\r\n if (rtl === true && rtlScrollType === undefined) {\r\n rtlScrollType = detectRtlScrollType();\r\n }\r\n\r\n if (rtl) {\r\n switch (rtlScrollType) {\r\n case 'negative':\r\n return left - el.scrollWidth + el.clientWidth;\r\n\r\n case 'reverse':\r\n return el.scrollWidth - left - el.clientWidth;\r\n\r\n default:\r\n return left;\r\n }\r\n } else {\r\n return left;\r\n }\r\n}\r\n\r\n/**\r\n * @param {Element} el\r\n * @param {boolean|undefined} [rtl] if unspecified, then it's automatically detected.\r\n * @returns {number}\r\n */\r\nfunction getScrollLeft(el, rtl) {\r\n if (rtl === undefined) {\r\n rtl = getComputedStyle(el).direction === 'rtl';\r\n }\r\n\r\n if (rtl === true && rtlScrollType === undefined) {\r\n rtlScrollType = detectRtlScrollType();\r\n }\r\n\r\n if (rtl) {\r\n switch (rtlScrollType) {\r\n case 'negative':\r\n return el.scrollLeft + el.scrollWidth - el.clientWidth;\r\n\r\n case 'reverse':\r\n return el.scrollWidth - el.scrollLeft - el.clientWidth;\r\n\r\n default:\r\n return el.scrollLeft;\r\n }\r\n } else {\r\n return el.scrollLeft;\r\n }\r\n}\r\n\r\n/**\r\n * @param {Element} el\r\n * @param {number} left\r\n * @param {boolean|undefined} [rtl] if unspecified, then it's automatically detected.\r\n */\r\nfunction setScrollLeft(el, left, rtl) {\r\n el.scrollLeft = calculateNativeScrollLeftForLeft(el, left, rtl);\r\n}\r\n\r\n/**\r\n * @param {Element} el\r\n * @param {number} value\r\n * @param {boolean|undefined} [rtl] if unspecified, then it's automatically detected.\r\n * @returns {number}\r\n */\r\nfunction calculateNativeScrollLeftForHorz(el, value, rtl) {\r\n if (rtl === undefined) {\r\n rtl = getComputedStyle(el).direction === 'rtl';\r\n }\r\n\r\n if (rtl) {\r\n return calculateNativeScrollLeftForLeft(el, el.scrollWidth - el.clientWidth - value, rtl);\r\n } else {\r\n return calculateNativeScrollLeftForLeft(el, value, rtl);\r\n }\r\n}\r\n\r\n/**\r\n * @param {Element} el\r\n * @param {boolean|undefined} [rtl] if unspecified, then it's automatically detected.\r\n * @returns {number}\r\n */\r\nfunction getScrollHorz(el, rtl) {\r\n if (rtl === undefined) {\r\n rtl = getComputedStyle(el).direction === 'rtl';\r\n }\r\n if (rtl) {\r\n return el.scrollWidth - el.clientWidth - getScrollLeft(el, rtl);\r\n } else {\r\n return getScrollLeft(el, rtl);\r\n }\r\n}\r\n\r\n/**\r\n * @param {Element} el\r\n * @param {number} horz\r\n * @param {boolean|undefined} [rtl] if unspecified, then it's automatically detected.\r\n */\r\nfunction setScrollHorz(el, horz, rtl) {\r\n el.scrollLeft = calculateNativeScrollLeftForHorz(el, horz, rtl);\r\n}\r\n\r\nexport {\r\n calculateNativeScrollLeftForLeft,\r\n getScrollLeft,\r\n setScrollLeft,\r\n calculateNativeScrollLeftForHorz,\r\n getScrollHorz,\r\n setScrollHorz,\r\n};\r\n","/**\r\n * @param {Element} el\r\n * @param {string[]} props\r\n * @returns {Object<string, string>}\r\n */\r\nconst getCssProps = function (el, props) {\r\n const style = getComputedStyle(el);\r\n let res = {};\r\n for (let prop of props) {\r\n let val = style[prop];\r\n\r\n if ((prop === 'width' || prop === 'height') && val === 'auto' && el instanceof HTMLElement) {\r\n val = el['offset' + prop.substr(0, 1).toUpperCase() + prop.substr(1)];\r\n\r\n if (style.boxSizing !== 'border-box') {\r\n if (prop === 'width') {\r\n val -= parseFloat(style.paddingLeft || 0);\r\n val -= parseFloat(style.paddingRight || 0);\r\n val -= parseFloat(style.borderLeftWidth || 0);\r\n val -= parseFloat(style.borderRightWidth || 0);\r\n } else {\r\n val -= parseFloat(style.paddingTop || 0);\r\n val -= parseFloat(style.paddingBottom || 0);\r\n val -= parseFloat(style.borderTopWidth || 0);\r\n val -= parseFloat(style.borderBottomWidth || 0);\r\n }\r\n if (val < 0)\r\n val = 0;\r\n }\r\n\r\n val += 'px';\r\n }\r\n\r\n res[prop] = val;\r\n }\r\n return res;\r\n};\r\n\r\n/**\r\n * @param {ElementCSSInlineStyle} el\r\n * @param {Object<string, string>} props\r\n */\r\nconst setCssProps = function (el, props) {\r\n for (let [key, value] of Object.entries(props))\r\n el.style[key] = (value === undefined || value === null) ? '' : String(value);\r\n};\r\n\r\nconst generateGetElementSizeFn = function (pseudo, dim, dimCased, startDim, endDim) {\r\n return (...args) => {\r\n let /**Element|ElementCSSInlineStyle*/el = args[0],\r\n /**string*/pseudoSelector,\r\n /**boolean*/paddings,\r\n /**boolean*/borders,\r\n /**boolean*/margins;\r\n\r\n if (pseudo) {\r\n pseudoSelector = args[1];\r\n paddings = !!args[2];\r\n borders = !!args[3];\r\n margins = !!args[4];\r\n } else {\r\n paddings = !!args[1];\r\n borders = !!args[2];\r\n margins = !!args[3];\r\n }\r\n\r\n if ((/**@type Window*/el) === window) {\r\n return (/**@type Window*/el).document.documentElement[`client${dimCased}`];\r\n }\r\n else if (el.nodeType === 9) { // document\r\n const doc = (/**@type Document*/el).documentElement;\r\n const body = (/**@type Document*/el).body;\r\n\r\n return Math.max(\r\n body[`scroll${dimCased}`],\r\n doc[`scroll${dimCased}`],\r\n body[`offset${dimCased}`],\r\n doc[`offset${dimCased}`],\r\n doc[`client${dimCased}`],\r\n );\r\n }\r\n else {\r\n let value;\r\n let style;\r\n let includesPadding = false, includesBorders = false;\r\n\r\n if (!pseudo && ('getBoundingClientRect' in el)) {\r\n value = el.getBoundingClientRect()[dim];\r\n includesPadding = true;\r\n includesBorders = true;\r\n }\r\n\r\n if (value === undefined || margins || includesPadding !== paddings || includesBorders !== borders) {\r\n style = pseudo ? getComputedStyle(el, pseudoSelector) : getComputedStyle(el);\r\n }\r\n\r\n if (value === undefined) {\r\n let raw = style[dim];\r\n if (raw === 'auto') { // computedStyle is no good here, probably an 'inline' element\r\n value = el[`client${dimCased}`]; // take clientWidth/clientHeight (damn it, it's rounded)\r\n includesPadding = true;\r\n } else {\r\n value = parseFloat(raw);\r\n }\r\n\r\n if (style.boxSizing === 'border-box') {\r\n includesPadding = true;\r\n includesBorders = true;\r\n }\r\n }\r\n\r\n if (paddings !== includesPadding) {\r\n let totalPadding = parseFloat(style[`padding-${startDim}`] || 0) +\r\n parseFloat(style[`padding-${endDim}`] || 0);\r\n if (paddings) value += totalPadding;\r\n else value -= totalPadding;\r\n }\r\n\r\n if (borders !== includesBorders) {\r\n let totalBorders = parseFloat(style[`border-${startDim}-width`] || 0) +\r\n parseFloat(style[`border-${endDim}-width`] || 0);\r\n if (borders) value += totalBorders;\r\n else value -= totalBorders;\r\n }\r\n\r\n if (value < 0)\r\n value = 0;\r\n\r\n if (margins) {\r\n let totalMargins = parseFloat(style[`margin-${startDim}`] || 0) +\r\n parseFloat(style[`margin-${endDim}`] || 0);\r\n value += totalMargins;\r\n }\r\n\r\n return value;\r\n }\r\n };\r\n};\r\n\r\nconst generateSetElementSizeFn = (dim, dimCased, startDim, endDim) => {\r\n return (/**Element|ElementCSSInlineStyle*/el,\r\n /**number*/value,\r\n paddings = false, borders = false, margins = false) => {\r\n\r\n if ((/**@type Window*/el) === window) {\r\n return;\r\n }\r\n\r\n if (el.nodeType === 9) { // document\r\n return;\r\n }\r\n\r\n const style = getComputedStyle(el);\r\n\r\n let includesPaddingAndBorders = false;\r\n\r\n if (style.boxSizing === 'border-box') {\r\n includesPaddingAndBorders = true;\r\n }\r\n\r\n paddings = !!paddings;\r\n borders = !!borders;\r\n margins = !!margins;\r\n\r\n if (margins)\r\n value -= (parseFloat(style[`margin-${startDim}`]) || 0) + (parseFloat(style[`margin-${endDim}`]) || 0);\r\n\r\n if (paddings !== includesPaddingAndBorders) {\r\n let totalPadding = parseFloat(style[`padding-${startDim}`] || 0) +\r\n parseFloat(style[`padding-${endDim}`] || 0);\r\n if (paddings) value -= totalPadding;\r\n else value += totalPadding;\r\n }\r\n\r\n if (borders !== includesPaddingAndBorders) {\r\n let totalBorders = (parseFloat(style[`border-${startDim}-width`]) || 0) +\r\n (parseFloat(style[`border-${endDim}-width`]) || 0);\r\n if (borders) value -= totalBorders;\r\n else value += totalBorders;\r\n }\r\n\r\n if (value < 0)\r\n value = 0;\r\n\r\n el.style[dim] = value + 'px';\r\n };\r\n};\r\n\r\n/**\r\n * Gets the width of an element, with fractions\r\n * @function getElementWidth\r\n * @param {Element} el\r\n * @param {boolean} [paddings=false] - include paddings\r\n * @param {boolean} [borders=false] - include borders\r\n * @param {boolean} [margins=false] - include margins\r\n * @returns {number}\r\n */\r\nconst getElementWidth = generateGetElementSizeFn(false, 'width', 'Width', 'left', 'right');\r\n\r\n/**\r\n * Gets the width of an element, with fractions\r\n * @function getElementHeight\r\n * @param {Element} el\r\n * @param {boolean} [paddings=false] - include paddings\r\n * @param {boolean} [borders=false] - include borders\r\n * @param {boolean} [margins=false] - include margins\r\n * @returns {number}\r\n */\r\nconst getElementHeight = generateGetElementSizeFn(false, 'height', 'Height', 'top', 'bottom');\r\n\r\n/**\r\n * Gets the width of an element, with fractions\r\n * @function getPseudoElementWidth\r\n * @param {Element} el\r\n * @param {string} pseudo\r\n * @param {boolean} [paddings=false] - include paddings\r\n * @param {boolean} [borders=false] - include borders\r\n * @param {boolean} [margins=false] - include margins\r\n * @returns {number}\r\n */\r\nconst getPseudoElementWidth = generateGetElementSizeFn(true, 'width', 'Width', 'left', 'right');\r\n\r\n/**\r\n * Gets the width of an element, with fractions\r\n * @function getPseudoElementHeight\r\n * @param {Element} el\r\n * @param {string} pseudo\r\n * @param {boolean} [paddings=false] - include paddings\r\n * @param {boolean} [borders=false] - include borders\r\n * @param {boolean} [margins=false] - include margins\r\n * @returns {number}\r\n */\r\nconst getPseudoElementHeight = generateGetElementSizeFn(true, 'height', 'Height', 'top', 'bottom');\r\n\r\n/**\r\n * Sets the width of an element\r\n * @function setElementWidth\r\n * @param {Element} el\r\n * @param {number} value\r\n * @param {boolean} [paddings=false] - include paddings\r\n * @param {boolean} [borders=false] - include borders\r\n * @param {boolean} [margins=false] - include margins\r\n */\r\nconst setElementWidth = generateSetElementSizeFn('width', 'Width', 'left', 'right');\r\n\r\n/**\r\n * Sets the width of an element, with fractions\r\n * @function setElementHeight\r\n * @param {Element} el\r\n * @param {number} value\r\n * @param {boolean} [paddings=false] - include paddings\r\n * @param {boolean} [borders=false] - include borders\r\n * @param {boolean} [margins=false] - include margins\r\n */\r\nconst setElementHeight = generateSetElementSizeFn('height', 'Height', 'top', 'bottom');\r\n\r\n/**\r\n * Find offset of an element relative to the document, considering scroll offsets\r\n * @param {Element} el\r\n * @returns {{top: number, left: number}}\r\n */\r\nconst getElementOffset = el => {\r\n if (!el.getClientRects().length) {\r\n return { top: 0, left: 0 };\r\n }\r\n\r\n let rect = el.getBoundingClientRect();\r\n let view = el.ownerDocument.defaultView;\r\n\r\n return {\r\n top: rect.top + view.pageYOffset,\r\n left: rect.left + view.pageXOffset,\r\n };\r\n};\r\n\r\n/**\r\n * Calculates the anchored position relative to this element. <br />\r\n * The return value will include an `left`/`top` position on left/top axis, <br />\r\n * an `right`/`bottom` position which is the exact opposite, <br />\r\n * and the `xSpec`/`ySpec` after normalizing rtl based values (`'start'`/`'end'`).\r\n * @param {Element} el? - the target element to base the calculations on. If `size` and `rtl` are specified - then this argument is optional.\r\n * @param {'left'|'center'|'right'|'start'|'end'|string|number} xSpec - horizontal anchor specification (could be either `'left'|'center'|'right'|'start'|'end'` or a percentage `'50%'` or a fixed decimal `Number`)\r\n * @param {'top'|'center'|'bottom'|string|number} ySpec - vertical anchor specification (could be either `'top'|'center'|'bottom'` or a percentage `'50%'` or a fixed decimal `Number`)\r\n * @param {{width: number, height: number}?} size - can be specified if already known, to avoid extra dom calculations. This is the outer size of the element, including padding and borders.\r\n * @param {boolean?} [rtl] - if not specified and values like `'start'`/`'end'` are use, then `rtl` is auto detected\r\n * @returns {{left: number, top: number, right: number, bottom: number, xSpec: string|number, ySpec: string|number}}\r\n */\r\nconst anchoredPosition = function (el, xSpec, ySpec, size, rtl) {\r\n if (!size) {\r\n size = {\r\n width: getElementWidth(el, true, true),\r\n height: getElementWidth(el, true, true),\r\n };\r\n }\r\n\r\n if (xSpec === 'start' || xSpec === 'end') {\r\n if ((/**@type boolean|null*/rtl) === null || rtl === undefined) {\r\n rtl = getComputedStyle(el).direction === 'rtl';\r\n }\r\n xSpec = xSpec === 'start' ? (rtl ? 'right' : 'left') : (rtl ? 'left' : 'right');\r\n }\r\n\r\n let x, y;\r\n let xInverted, yInverted;\r\n\r\n if (xSpec === 'right') {\r\n x = size.width;\r\n xInverted = 0;\r\n }\r\n else if (xSpec === 'center') {\r\n x = size.width / 2;\r\n xInverted = x;\r\n }\r\n else if (xSpec === 'left') {\r\n x = 0;\r\n xInverted = size.width;\r\n }\r\n else if (xSpec && (typeof xSpec === 'string') && xSpec.charAt(xSpec.length - 1) === '%') {\r\n let percent = ((parseFloat(xSpec) || 0) / 100);\r\n x = size.width * percent;\r\n xInverted = size.width * -percent;\r\n\r\n if ((/**@type boolean|null*/rtl) === null || rtl === undefined)\r\n rtl = getComputedStyle(el).direction === 'rtl';\r\n\r\n if (rtl) {\r\n x = size.width - x;\r\n xInverted = size.width - x;\r\n }\r\n }\r\n else {\r\n x = parseFloat(xSpec) || 0;\r\n xInverted = -x;\r\n }\r\n\r\n if (ySpec === 'bottom') {\r\n y = size.height;\r\n yInverted = 0;\r\n }\r\n else if (ySpec === 'center') {\r\n y = size.height / 2;\r\n yInverted = y;\r\n }\r\n else if (ySpec === 'top') {\r\n y = 0;\r\n yInverted = size.height;\r\n }\r\n else if (ySpec && (typeof ySpec === 'string') && ySpec.charAt(ySpec.length - 1) === '%') {\r\n let percent = ((parseFloat(ySpec) || 0) / 100);\r\n y = size.height * percent;\r\n yInverted = size.height * -percent;\r\n }\r\n else {\r\n y = parseFloat(ySpec) || 0;\r\n yInverted = -y;\r\n }\r\n\r\n return {\r\n left: x,\r\n top: y,\r\n right: xInverted,\r\n bottom: yInverted,\r\n xSpec: xSpec,\r\n ySpec: ySpec,\r\n };\r\n};\r\n\r\nconst timeToMs = (value) => {\r\n if (!value) {\r\n return;\r\n }\r\n\r\n let isMs = value.endsWith('ms');\r\n return parseFloat(value) * (isMs ? 1 : 1000);\r\n};\r\n\r\nconst isTimeString = (value) => {\r\n return /^-?(0?\\.)?\\d+m?s$/.test(value);\r\n};\r\n\r\n/**\r\n *\r\n * @param {string} transition\r\n * @return {{duration: number, delay: number, name: string, timingFunction: string?}}\r\n */\r\nconst parseSingleTransition = (transition) => {\r\n let parts = transition.split(/\\s+/),\r\n name = parts[0],\r\n duration = parts[1],\r\n timingFunctionOrDelay = parts[2],\r\n delay = parts[3];\r\n\r\n if (isTimeString(timingFunctionOrDelay)) {\r\n return {\r\n delay: timeToMs(timingFunctionOrDelay),\r\n duration: timeToMs(duration),\r\n name: name,\r\n };\r\n }\r\n\r\n return {\r\n delay: timeToMs(delay),\r\n duration: timeToMs(duration),\r\n name: name,\r\n timingFunction: timingFunctionOrDelay,\r\n };\r\n};\r\n\r\n/**\r\n *\r\n * @param {string} transition\r\n * @return {{duration: number, delay: number, name: string, timingFunction: string?}[]}\r\n */\r\nconst parseTransition = (transition) => {\r\n if (!transition) return [];\r\n return (transition.match(/([^,()]|\\([^)]*\\))+/g) ?? []).map(value => value.trim()).filter(value => value.length > 0).map(parseSingleTransition);\r\n};\r\n\r\nexport {\r\n getCssProps,\r\n setCssProps,\r\n getElementWidth,\r\n getElementHeight,\r\n setElementWidth,\r\n setElementHeight,\r\n getPseudoElementWidth,\r\n getPseudoElementHeight,\r\n getElementOffset,\r\n anchoredPosition,\r\n parseTransition,\r\n parseSingleTransition,\r\n isTimeString,\r\n timeToMs,\r\n};\r\n","/**\r\n * @param {Node} el\r\n * @returns {Node|null}\r\n */\r\nconst getRootNode = function (el) {\r\n if (!el) return null;\r\n if ('getRootNode' in el)\r\n return el.getRootNode();\r\n\r\n while (el.parentNode)\r\n el = el.parentNode;\r\n\r\n return el;\r\n};\r\n\r\n/**\r\n * @param {Node} el\r\n * @param {string} selector\r\n * @returns {Node|null}\r\n */\r\nconst closest = function (el, selector) {\r\n if ('closest' in el)\r\n return el.closest(selector);\r\n\r\n const matches = Element.prototype.matches ||\r\n Element.prototype.msMatchesSelector ||\r\n Element.prototype.webkitMatchesSelector;\r\n\r\n do {\r\n if (matches.call(el, selector))\r\n return el;\r\n\r\n el = el.parentElement || el.parentNode;\r\n } while (el !== null && el.nodeType === 1);\r\n\r\n return null;\r\n};\r\n\r\n/**\r\n * @param {Element} el\r\n */\r\nconst remove = function (el) {\r\n if (!el) return;\r\n\r\n if ('remove' in el)\r\n el.remove();\r\n else if (el.parentNode)\r\n el.parentNode.removeChild(el);\r\n};\r\n\r\n/**\r\n * @param {ChildNode} before\r\n * @param {(Node|string)[]} nodes\r\n */\r\nconst before = function (before, ...nodes) {\r\n if (nodes.length === 0) return;\r\n\r\n if ('before' in before) {\r\n before.before(...nodes);\r\n } else {\r\n if (nodes.length === 1) {\r\n let node = nodes[0];\r\n const isNode = node instanceof Node;\r\n node = isNode ? node : document.createTextNode(String(node));\r\n before.parentNode.insertBefore(node, before);\r\n } else {\r\n let docFrag = document.createDocumentFragment();\r\n\r\n for (const node of nodes) {\r\n const isNode = node instanceof Node;\r\n docFrag.appendChild(isNode ? node : document.createTextNode(String(node)));\r\n }\r\n\r\n before.parentNode.insertBefore(docFrag, before);\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * @param {ChildNode} after\r\n * @param {(Node|string)[]} nodes\r\n */\r\nconst after = function (after, ...nodes) {\r\n if (nodes.length === 0) return;\r\n\r\n if ('after' in after) {\r\n after.after(...nodes);\r\n } else {\r\n if (nodes.length === 1) {\r\n let node = nodes[0];\r\n const isNode = node instanceof Node;\r\n node = isNode ? node : document.createTextNode(String(node));\r\n\r\n if (after.nextSibling)\r\n after.parentNode.insertBefore(node, after.nextSibling);\r\n else after.parentNode.appendChild(node);\r\n } else {\r\n let docFrag = document.createDocumentFragment();\r\n\r\n for (const node of nodes) {\r\n const isNode = node instanceof Node;\r\n docFrag.appendChild(isNode ? node : document.createTextNode(String(node)));\r\n }\r\n\r\n if (after.nextSibling)\r\n after.parentNode.insertBefore(docFrag, after.nextSibling);\r\n else after.parentNode.appendChild(docFrag);\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * @param {ParentNode|Element} parent\r\n * @param {(Node|string)[]} nodes\r\n */\r\nconst prepend = function (parent, ...nodes) {\r\n if (nodes.length === 0) return;\r\n\r\n if ('prepend' in parent) {\r\n parent.prepend(...nodes);\r\n } else {\r\n if (nodes.length === 1) {\r\n let node = nodes[0];\r\n const isNode = node instanceof Node;\r\n node = isNode ? node : document.createTextNode(String(node));\r\n\r\n if (parent.firstChild)\r\n parent.insertBefore(node, parent.firstChild);\r\n else parent.appendChild(node);\r\n } else {\r\n let docFrag = document.createDocumentFragment();\r\n\r\n for (const node of nodes) {\r\n const isNode = node instanceof Node;\r\n docFrag.appendChild(isNode ? node : document.createTextNode(String(node)));\r\n }\r\n\r\n if (parent.firstChild)\r\n parent.insertBefore(docFrag, parent.firstChild);\r\n else parent.appendChild(docFrag);\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * @param {ParentNode|Element} parent\r\n * @param {(Node|string)[]} nodes\r\n */\r\nconst append = function (parent, ...nodes) {\r\n if (nodes.length === 0) return;\r\n\r\n if ('append' in parent) {\r\n parent.append(...nodes);\r\n } else {\r\n if (nodes.length === 1) {\r\n let node = nodes[0];\r\n const isNode = node instanceof Node;\r\n node = isNode ? node : document.createTextNode(String(node));\r\n\r\n parent.appendChild(node);\r\n } else {\r\n let docFrag = document.createDocumentFragment();\r\n\r\n for (const child of nodes) {\r\n const isNode = child instanceof Node;\r\n docFrag.appendChild(isNode ? child : document.createTextNode(String(child)));\r\n }\r\n\r\n parent.appendChild(docFrag);\r\n }\r\n }\r\n};\r\n\r\nlet hasScopedQuerySelector = null;\r\n\r\nconst detectScopedSelectorFeature = () => {\r\n try {\r\n document.createElement('div').querySelector(':scope > div');\r\n hasScopedQuerySelector = true;\r\n } catch (ignored) {\r\n hasScopedQuerySelector = false;\r\n }\r\n};\r\n\r\n/**\r\n * @param {Element} el\r\n * @param {string} selector\r\n * @returns {Element|null}\r\n */\r\nconst scopedSelector = function (el, selector) {\r\n if (hasScopedQuerySelector === null) {\r\n detectScopedSelectorFeature();\r\n }\r\n\r\n if (hasScopedQuerySelector === true) {\r\n return el.querySelector(selector.replace(/((?:^|,)\\s*)/g, '$1:scope '));\r\n } else {\r\n let id = el.id;\r\n const uniqueId = 'ID_' + Date.now();\r\n el.id = uniqueId;\r\n selector = selector.replace(/((?:^|,)\\s*)/g, '$1#' + uniqueId);\r\n try {\r\n return el.querySelector(selector);\r\n } finally {\r\n this.id = id;\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * @param {Element} el\r\n * @param {string} selector\r\n * @returns {NodeListOf<Element>}\r\n */\r\nconst scopedSelectorAll = function (el, selector) {\r\n if (hasScopedQuerySelector === null) {\r\n detectScopedSelectorFeature();\r\n }\r\n\r\n if (hasScopedQuerySelector === true) {\r\n return el.querySelectorAll(selector.replace(/((?:^|,)\\s*)/g, '$1:scope '));\r\n } else {\r\n let id = el.id;\r\n const uniqueId = 'ID_' + Date.now();\r\n el.id = uniqueId;\r\n selector = selector.replace(/((?:^|,)\\s*)/g, '$1#' + uniqueId);\r\n try {\r\n return el.querySelectorAll(selector);\r\n } finally {\r\n this.id = id;\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * @param {Element} el\r\n * @param {string} className\r\n * @param {boolean?} [toggle]\r\n * @returns {boolean} `true` if the class name is now present\r\n */\r\nconst toggleClass = function (el, className, toggle) {\r\n let classes = el.classList;\r\n\r\n if (toggle === undefined) {\r\n if (classes.contains(className)) {\r\n classes.remove(className);\r\n return false;\r\n }\r\n else {\r\n classes.add(className);\r\n return true;\r\n }\r\n } else {\r\n if (toggle) {\r\n classes.add(className);\r\n return true;\r\n }\r\n else {\r\n classes.remove(className);\r\n return false;\r\n }\r\n }\r\n};\r\n\r\nexport {\r\n getRootNode,\r\n closest,\r\n remove,\r\n before,\r\n after,\r\n prepend,\r\n append,\r\n scopedSelector,\r\n scopedSelectorAll,\r\n toggleClass,\r\n};\r\n","import { getElementOffset } from '@danielgindi/dom-utils/lib/Css.js';\r\n\r\n/**\r\n * @typedef {function(index: number):(number|undefined)} VirtualListHelper~ItemHeightEstimatorFunction\r\n */\r\n\r\n/**\r\n * @typedef {function():Element} VirtualListHelper~ItemElementCreatorFunction\r\n */\r\n\r\n/**\r\n * @typedef {function(itemEl: Element, index: number)} VirtualListHelper~ItemRenderFunction\r\n */\r\n\r\n/**\r\n * @typedef {function(itemEl: Element)} VirtualListHelper~ItemUnrenderFunction\r\n */\r\n\r\n/**\r\n * @typedef {Object} VirtualListHelper~Options\r\n * @property {Element} list - the main element to operate inside of\r\n * @property {Element?} [itemsParent] - the element to use as parent for the items (automatically created in virtual mode, uses parent by default in non-virtual mode)\r\n * @property {boolean} [autoVirtualWrapperWidth=true] automatically set the width of the virtual wrapper\r\n * @property {boolean} [hookScrollEvent=true] automatically hook scroll event as needed\r\n * @property {number} [count=0] the item count\r\n * @property {boolean} [virtual=true] is virtual mode on?\r\n * @property {number} [estimatedItemHeight=20] estimated item height\r\n * @property {number} [buffer=5] the amount of buffer items to keep on each end of the list\r\n * @property {VirtualListHelper~ItemHeightEstimatorFunction} [itemHeightEstimatorFn] an optional function for providing item height estimations\r\n * @property {VirtualListHelper~ItemElementCreatorFunction} [itemElementCreatorFn] an optional function for providing fresh item elements (default creates `<li />`s)\r\n * @property {VirtualListHelper~ItemRenderFunction} [onItemRender] a function for rendering element content based on item index\r\n * @property {VirtualListHelper~ItemUnrenderFunction} [onItemUnrender] a function for freeing resources in an item element\r\n * @property {function(height: number)} [onScrollHeightChange] a function to be notified when scroll height changes\r\n *\r\n */\r\n\r\n/** */\r\n\r\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\r\n\r\nconst hasInsertAdjacentElement = Element.prototype.insertAdjacentElement !== undefined;\r\n\r\nfunction insertBefore(el, before, parent) {\r\n if (!before)\r\n parent.appendChild(el);\r\n else if (hasInsertAdjacentElement === false || el instanceof DocumentFragment)\r\n parent.insertBefore(el, before);\r\n else before.insertAdjacentElement('beforebegin', el);\r\n}\r\n\r\n/**\r\n *\r\n * @param {Element} itemEl\r\n * @param {DocumentFragment|null} fragment\r\n * @param {Node|undefined} before\r\n * @param {Element} itemParent\r\n * @returns {DocumentFragment|null}\r\n */\r\nfunction insertBeforeWithFragment(itemEl, fragment, before, itemParent) {\r\n if (itemEl.parentNode !== itemParent) {\r\n if (!fragment)\r\n fragment = document.createDocumentFragment();\r\n fragment.appendChild(itemEl);\r\n } else {\r\n // insert fragment\r\n if (fragment && fragment.childNodes.length > 0) {\r\n insertBefore(fragment, before, itemParent);\r\n fragment = null;\r\n }\r\n\r\n // insert element\r\n if (itemEl.nextSibling !== before) {\r\n insertBefore(itemEl, before, itemParent);\r\n }\r\n }\r\n\r\n return fragment;\r\n}\r\n\r\nclass VirtualListHelper {\r\n /**\r\n * @param {VirtualListHelper~Options} opts\r\n */\r\n constructor(opts) {\r\n /** @private */\r\n const p = this._p = {\r\n // these come from options:\r\n\r\n list: opts.list || null,\r\n hookScrollEvent: opts.hookScrollEvent === undefined ? true : !!opts.hookScrollEvent,\r\n count: opts.count || 0,\r\n virtual: opts.virtual === undefined ? true : !!opts.virtual,\r\n userItemsParent: opts.itemsParent || null,\r\n setVirtualWrapperWidth: opts.autoVirtualWrapperWidth ?? true,\r\n estimatedItemHeight: 20,\r\n buffer: 5,\r\n\r\n /** @type VirtualListHelper~ItemHeightEstimatorFunction|null */\r\n itemHeightEstimatorFn: null,\r\n\r\n /** @type VirtualListHelper~ItemElementCreatorFunction|null */\r\n itemElementCreatorFn: defaultElementCreator,\r\n\r\n /** @type VirtualListHelper~ItemRenderFunction|null */\r\n onItemRender: null,\r\n\r\n /** @type VirtualListHelper~ItemUnrenderFunction|null */\r\n onItemUnrender: null,\r\n\r\n /** @type {function(height: number)|null} */\r\n onScrollHeightChange: null,\r\n\r\n // internal:\r\n\r\n /** @type Element|null */\r\n virtualWrapper: null,\r\n\r\n /** @type Element|null */\r\n currentItemsParent: null,\r\n\r\n /** @type {(number|undefined)[]} */\r\n cachedItemHeights: [],\r\n\r\n /** @type {(number|undefined)[]} */\r\n cachedItemEstimatedHeights: [],\r\n\r\n /** @type {(number|undefined)[]} */\r\n cachedItemPositions: [],\r\n\r\n /** @type number */\r\n itemPositionsNeedsUpdate: 0,\r\n\r\n /** @type function */\r\n boundRender: this.render.bind(this),\r\n\r\n /** @type Element[] */\r\n existingEls: [],\r\n };\r\n\r\n p.currentItemsParent = p.userItemsParent || p.list;\r\n\r\n this._hookEvents();\r\n\r\n if (typeof opts.count === 'number')\r\n this.setCount(opts.count);\r\n\r\n if (typeof opts.virtual === 'boolean')\r\n this.setVirtual(opts.virtual);\r\n\r\n if (typeof opts.estimatedItemHeight === 'number')\r\n this.setEstimatedItemHeight(opts.estimatedItemHeight);\r\n\r\n if (typeof opts.buffer === 'number')\r\n this.setBuffer(opts.buffer);\r\n\r\n if (typeof opts.itemHeightEstimatorFn === 'function')\r\n this.setItemHeightEstimatorFn(opts.itemHeightEstimatorFn);\r\n\r\n if (typeof opts.itemElementCreatorFn === 'function')\r\n this.setItemElementCreatorFn(opts.itemElementCreatorFn);\r\n\r\n if (typeof opts.onItemRender === 'function')\r\n this.setOnItemRender(opts.onItemRender);\r\n\r\n if (typeof opts.onItemUnrender === 'function')\r\n this.setOnItemUnrender(opts.onItemUnrender);\r\n\r\n if (typeof opts.onScrollHeightChange === 'function')\r\n this.setOnScrollHeightChange(opts.onScrollHeightChange);\r\n }\r\n\r\n /**\r\n * Clean up and free up all resources.\r\n */\r\n destroy() {\r\n this._unhookEvents().invalidate()._destroyElements();\r\n }\r\n\r\n /**\r\n * Sets whether 'scroll' event on the list should be hooked automatically.\r\n * @param {boolean} enabled\r\n * @returns {VirtualListHelper}\r\n */\r\n setHookScrollEvent(enabled) {\r\n const p = this._p;\r\n enabled = enabled === undefined ? true : !!enabled;\r\n\r\n if (p.hookScrollEvent === enabled)\r\n return this;\r\n\r\n p.hookScrollEvent = enabled;\r\n\r\n this._unhookEvents()._hookEvents();\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * @returns {boolean} whether 'scroll' event on the list should be hooked automatically\r\n */\r\n isHookScrollEventEnabled() {\r\n const p = this._p;\r\n return p.hookScrollEvent;\r\n }\r\n\r\n /**\r\n * Sets the list item count. <br />\r\n * You should probably call `render()` after this.\r\n * @param {number} count\r\n * @returns {VirtualListHelper}\r\n */\r\n setCount(count) {\r\n const p = this._p;\r\n p.count = count;\r\n\r\n return this.invalidate();\r\n }\r\n\r\n /**\r\n * @returns {number} current item count\r\n */\r\n getCount() {\r\n const p = this._p;\r\n return p.count;\r\n }\r\n\r\n /**\r\n * Switches between virtual and non-virtual mode. <br />\r\n * The list is invalidated automatically. <br />\r\n * You should call `render()` to update the view.\r\n * @param {boolean} enabled\r\n * @returns {VirtualListHelper}\r\n */\r\n setVirtual(enabled) {\r\n const p = this._p;\r\n enabled = enabled === undefined ? true : !!enabled;\r\n\r\n if (p.virtual === enabled)\r\n return this;\r\n\r\n p.virtual = enabled;\r\n\r\n this._hookEvents().invalidate()._destroyElements();\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * @returns {boolean} virtual mode\r\n */\r\n isVirtual() {\r\n const p = this._p;\r\n return p.virtual;\r\n }\r\n\r\n /**\r\n * Sets estimated item height. <br />\r\n * No need to be accurate. <br />\r\n * The better the estimation - the better the scrollbar behavior will be. <br />\r\n * Applicable for virtual-mode only. <br />\r\n * You should `invalidate` if you want this to take effect on the existing rendering.\r\n * @param {number} height - a positive number representing estimated item height.\r\n * @returns {VirtualListHelper}\r\n */\r\n setEstimatedItemHeight(height) {\r\n const p = this._p;\r\n p.estimatedItemHeight = Math.abs((typeof height === 'number' ? height : Number(height)) || 20);\r\n return this;\r\n }\r\n\r\n /**\r\n * @returns {number} current item height estimation\r\n */\r\n getEstimatedItemHeight() {\r\n const p = this._p;\r\n return p.estimatedItemHeight;\r\n }\r\n\r\n /**\r\n * Sets whether the virtual wrapper width should be set automatically. <br />\r\n * @param {boolean} enabled\r\n * @returns {VirtualListHelper}\r\n */\r\n setAutoVirtualWrapperWidth(enabled) {\r\n const p = this._p;\r\n p.autoVirtualWrapperWidth = enabled === undefined ? true : !!enabled;\r\n\r\n if (p.virtualWrapper) {\r\n if (p.autoVirtualWrapperWidth !== p.virtualWrapperWidthWasSet) {\r\n p.virtualWrapper.style.width = p.autoVirtualWrapperWidth ? '100%' : '';\r\n p.virtualWrapperWidthWasSet = p.autoVirtualWrapperWidth;\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * @returns {boolean} whether the virtual wrapper width should be set automatically\r\n */\r\n isAutoVirtualWrapperWidth() {\r\n const p = this._p;\r\n return p.autoVirtualWrapperWidth;\r\n }\r\n\r\n /**\r\n * Sets the amount of buffer items to keep on each end of the list. <br />\r\n * Applicable for virtual-mode only.\r\n * @param {number} buffer - a positive value representing the count of buffer items for each end.\r\n * @returns {VirtualListHelper}\r\n */\r\n setBuffer(buffer) {\r\n const p = this._p;\r\n p.buffer = Math.abs(typeof buffer === 'number' ? buffer : (Number(buffer) || 5));\r\n return this;\r\n }\r\n\r\n /**\r\n * @returns {number} current buffer value\r\n */\r\n getBuffer() {\r\n const p = this._p;\r\n return p.buffer;\r\n }\r\n\r\n /**\r\n * The `itemHeightEstimatorFn` is an alternative to `estimatedItemHeight` to give better estimations for specific item. <br/>\r\n * It's optional, and if it's present - it should return either a numeric height estimation,\r\n * or `undefined` to fall back to the default estimation. <br />\r\n * You should `invalidate` if you want this to take effect on the existing rendering.\r\n * @param {VirtualListHelper~ItemHeightEstimatorFunction} fn\r\n * @returns {VirtualListHelper}\r\n */\r\n setItemHeightEstimatorFn(fn) {\r\n const p = this._p;\r\n p.itemHeightEstimatorFn = fn;\r\n return this;\r\n }\r\n\r\n /**\r\n * The `itemElementCreatorFn` is a function creating a basic item element, that will be possibly reused later. <br />\r\n * It has no association with a specific item index. <br />\r\n * You should `invalidate` if you want this to take effect on the existing rendering.\r\n * @param {VirtualListHelper~ItemElementCreatorFunction} fn\r\n * @returns {VirtualListHelper}\r\n */\r\n setItemElementCreatorFn(fn) {\r\n const p = this._p;\r\n p.itemElementCreatorFn = fn || defaultElementCreator;\r\n return this;\r\n }\r\n\r\n /**\r\n * The `onItemRender` is a function called for rendering the contents of an item. <br />\r\n * It's passed an `Element` and an item index. <br />\r\n * You should `invalidate` if you want this to take effect on the existing rendering.\r\n * @param {VirtualListHelper~ItemRenderFunction} fn\r\n * @returns {VirtualListHelper}\r\n */\r\n setOnItemRender(fn) {\r\n const p = this._p;\r\n p.onItemRender = fn;\r\n return this;\r\n }\r\n\r\n /**\r\n * The `onItemUnrender` is a function called for freeing resources in an item element,\r\n * if you've attached something that needs to be explicitly freed. <br />\r\n * It's passed an `Element` only, and has no association with a specific index,\r\n * as by the time it's called - the indexes are probably not valid anymore.\r\n * @param {VirtualListHelper~ItemUnrenderFunction} fn\r\n * @returns {VirtualListHelper}\r\n */\r\n setOnItemUnrender(fn) {\r\n const p = this._p;\r\n p.onItemUnrender = fn;\r\n return this;\r\n }\r\n\r\n /**\r\n * The `onScrollHeightChange` is a function called when the scroll height changes.\r\n * @param {function(height: number)} fn\r\n * @returns {VirtualListHelper}\r\n */\r\n setOnScrollHeightChange(fn) {\r\n const p = this._p;\r\n p.onScrollHeightChange = fn;\r\n return this;\r\n }\r\n\r\n /**\r\n * Estimates the full scroll height. This gets better as more renderings occur.\r\n * @returns {number}\r\n */\r\n estimateFullHeight() {\r\n const p = this._p;\r\n\r\n if (p.count === 0)\r\n return 0;\r\n\r\n if (p.virtual) {\r\n return this._calculateItemPosition(p.count) || 0;\r\n } else {\r\n const existingEls = p.existingEls;\r\n if (p.count === existingEls.length) {\r\n let rect1 = existingEls[0].getBoundingClientRect();\r\n let rect2 = existingEls[existingEls.length - 1].getBoundingClientRect();\r\n return rect2.top - rect1.top + rect2.height;\r\n }\r\n\r\n return this._calculateItemPosition(p.count) || 0;\r\n }\r\n }\r\n\r\n /**\r\n * States that the cached positions/heights are invalid,\r\n * and needs to be completely re-calculated.<br />\r\n * You should probably call `render()` after this.\r\n * @returns {VirtualListHelper}\r\n */\r\n invalidatePositions() {\r\n const p = this._p;\r\n\r\n p.itemPositionsNeedsUpdate = 0;\r\n p.cachedItemHeights = [];\r\n p.cachedItemEstimatedHeights = [];\r\n p.cachedItemPositions = [];\r\n p.cachedItemHeights.length = p.count;\r\n p.cachedItemEstimatedHeights.length = p.count;\r\n p.cachedItemPositions.length = p.count;\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * States that the indexes/item count/rendered content are invalid,\r\n * and needs to be completely re-calculated and re-rendered. <br />\r\n * You should probably call `render()` after this.\r\n * @returns {VirtualListHelper}\r\n */\r\n invalidate() {\r\n const p = this._p;\r\n\r\n this.invalidatePositions();\r\n\r\n if (!p.virtual) {\r\n this._destroyElements();\r\n }\r\n\r\n for (let el of p.existingEls)\r\n delete el[ItemIndexSymbol];\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Renders the current viewport. <br />\r\n * Call this after making changes to the list. <br />\r\n * In virtual mode, this is called automatically for every scroll event.\r\n */\r\n render() {\r\n const p = this._p;\r\n const list = p.list;\r\n const virtual = p.virtual;\r\n let virtualWrapper = p.virtualWrapper;\r\n let itemParent = p.currentItemsParent;\r\n let scrollTop = list.scrollTop;\r\n let visibleHeight = list.clientHeight;\r\n let visibleBottom = scrollTop + visibleHeight;\r\n let count = p.count;\r\n let buffer = p.buffer;\r\n let onItemUnrender = p.onItemUnrender;\r\n let existingEls = p.existingEls;\r\n let existingCount = existingEls.length;\r\n\r\n if (virtual) {\r\n const originalWidth = list.clientWidth;\r\n\r\n if (!virtualWrapper) {\r\n virtualWrapper = p.virtualWrapper = p.userItemsParent;\r\n if (!virtualWrapper) {\r\n virtualWrapper = p.virtualWrapper = document.createElement('div');\r\n list.appendChild(virtualWrapper);\r\n }\r\n\r\n this._resetCurrentItemsParent();\r\n itemParent = p.currentItemsParent;\r\n\r\n if (p.autoVirtualWrapperWidth) {\r\n virtualWrapper.style.width = '100%';\r\n p.virtualWrapperWidthWasSet = true;\r\n } else {\r\n p.virtualWrapperWidthWasSet = false;\r\n }\r\n }\r\n\r\n // Mark all of them for potential reuse\r\n for (let i = 0; i < existingCount; i++) {\r\n existingEls[i][ReuseElSymbol] = true;\r\n }\r\n\r\n // Make sure we have at least estimated positions for all items so we can translate scroll position\r\n this._calculateItemPosition(p.count - 1);\r\n\r\n // Find existing elements index range\r\n let existingRange = this._getExistingElsRange();\r\n\r\n // Find first visible element\r\n let firstVisibleIndex = binarySearchPosition(p.cachedItemPositions, scrollTop);\r\n let firstRenderIndex = Math.max(0, firstVisibleIndex - buffer);\r\n\r\n // Iterate over viewport\r\n let index = firstRenderIndex;\r\n let renderPos = this._calculateItemPosition(index);\r\n let bufferEnd = buffer;\r\n\r\n // we want to render until viewport's bottom + buffer items\r\n let maxIndexToRender = Math.max(index, binarySearchPosition(p.cachedItemPositions, visibleBottom - 1) + 1 + buffer);\r\n\r\n let insertedItems = [];\r\n\r\n /** @type DocumentFragment|null */\r\n let fragment = null;\r\n\r\n // Find the element to insert before\r\n let before = virtualWrapper.childNodes[0];\r\n\r\n const findElementToReuse = function (index) {\r\n // Find existing element to reuse\r\n /** @type Element|undefined */\r\n let existingEl = undefined;\r\n\r\n if (existingRange.firstIndex !== -1 && index >= existingRange.firstIndex && index <= existingRange.lastIndex) {\r\n existingEl = existingEls.find(x => x[ItemIndexSymbol] === index && x[ReuseElSymbol] === true);\r\n }\r\n\r\n if (existingEl === undefined) {\r\n existingEl = ((existingRange.firstIndex < firstRenderIndex || existingRange.firstValidArrayIndex > 0)\r\n ? existingEls.find((x) =>\r\n (x[ItemIndexSymbol] < firstRenderIndex || false === hasOwnProperty.call(x, ItemIndexSymbol))\r\n && x[ReuseElSymbol] === true)\r\n : undefined\r\n ) || findLast(existingEls, (x) => x[ReuseElSymbol] === true);\r\n }\r\n\r\n if (existingEl !== undefined) {\r\n delete existingEl[ReuseElSymbol];\r\n }\r\n\r\n return existingEl;\r\n };\r\n\r\n // First we iterate and try to add all at once in a fragment, as much as we can.\r\n // And then reflow the at once.\r\n for (; index < count && index < maxIndexToRender; index++) {\r\n let existingEl = findElementToReuse(index);\r\n\r\n if (before && before === existingEl)\r\n before = before.nextSibling;\r\n\r\n // Dequeue the element by reusing or creating a new one\r\n const itemEl = this._dequeueElementForIndex(existingEl, index, before, true);\r\n insertedItems.push([itemEl, index]);\r\n\r\n fragment = insertBeforeWithFragment(itemEl, fragment, before, itemParent);\r\n }\r\n\r\n // Insert any remaining fragment\r\n if (fragment && fragment.childNodes.length > 0) {\r\n insertBefore(fragment, before, itemParent);\r\n }\r\n\r\n // Iterate on inserted items and reflow them\r\n for (let item of insertedItems) {\r\n const index = item[1];\r\n this._insertItemAndFlow(item[0], index, false /* inserted already */);\r\n renderPos = p.cachedItemPositions[index] + p.cachedItemHeights[index];\r\n }\r\n\r\n // See if we still need to insert more items\r\n if (renderPos < visibleBottom) {\r\n for (; (renderPos < visibleBottom || bufferEnd-- > 0) && index < count; index++) {\r\n let existingEl = findElementToReuse(index);\r\n\r\n if (before && before === existingEl)\r\n before = before.nextSibling;\r\n\r\n // Dequeue the element by reusing or creating a new one\r\n this._dequeueElementForIndex(existingEl, index, before, false);\r\n\r\n // Increment pointers\r\n renderPos = p.cachedItemPositions[index] + p.cachedItemHeights[index];\r\n }\r\n }\r\n\r\n // Calculate up-to-date scroll height\r\n let scrollHeight = this.estimateFullHeight();\r\n let scrollHeightPx = scrollHeight + 'px';\r\n\r\n if (virtualWrapper.style.height !== scrollHeightPx) {\r\n p.virtualWrapper.style.height = scrollHeightPx;\r\n p.onScrollHeightChange?.(scrollHeight);\r\n }\r\n\r\n if (originalWidth !== list.clientWidth)\r\n this.render();\r\n } else { // non-virtual\r\n if (count !== existingEls.length) {\r\n for (let i = 0; i < existingCount; i++) {\r\n existingEls[i][ReuseElSymbol] = true;\r\n }\r\n\r\n // Find the element to insert before\r\n let before = itemParent.childNodes[0];\r\n\r\n /** @type DocumentFragment|null */\r\n let fragment = null;\r\n\r\n for (let index = 0; index < count; index++) {\r\n // Find existing element to reuse\r\n let existingEl = existingEls.find(x => x[ItemIndexSymbol] === index && x[ReuseElSymbol] === true);\r\n\r\n if (existingEl !== undefined) {\r\n delete existingEl[ReuseElSymbol];\r\n }\r\n\r\n if (before && before === existingEl)\r\n before = before.nextSibling;\r\n\r\n // Dequeue the element by reusing or creating a new one\r\n const itemEl = this._dequeueElementForIndex(existingEl, index, before, true);\r\n\r\n fragment = insertBeforeWithFragment(itemEl, fragment, before, itemParent);\r\n }\r\n\r\n // Insert any remaining fragment\r\n if (fragment && fragment.childNodes.length > 0) {\r\n insertBefore(fragment, before, itemParent);\r\n }\r\n }\r\n }\r\n\r\n // Cleanup extra unused elements\r\n existingCount = existingEls.length; // May have changed\r\n for (let i = 0; i < existingCount; i++) {\r\n const el = existingEls[i];\r\n if (el[ReuseElSymbol] !== true) continue;\r\n\r\n let parent = el.parentNode;\r\n if (parent)\r\n parent.removeChild(el);\r\n if (onItemUnrender && el[ItemIndexSymbol] !== undefined)\r\n onItemUnrender(el);\r\n existingEls.splice(i, 1);\r\n\r\n i--;\r\n existingCount--;\r\n }\r\n }\r\n\r\n /**\r\n * States that items were added at a certain position in the list. <br />\r\n * Virtual mode: Call `render()` to update the view after making changes.\r\n * @param {number} count\r\n * @param {number} [atIndex=-1]\r\n * @returns {VirtualListHelper}\r\n */\r\n addItemsAt(count, atIndex = -1) {\r\n if (typeof count !== 'number' || count <= 0)\r\n return this;\r\n\r\n const p = this._p;\r\n\r\n if (atIndex < 0 || atIndex >= p.count)\r\n atIndex = p.count;\r\n\r\n p.count += count;\r\n\r\n if (p.virtual) {\r\n if (atIndex >= 0 && atIndex < p.count) {\r\n this._invalidateItemIndexesAt(atIndex, -1);\r\n }\r\n }\r\n else { // non-virtual\r\n let existingEls = p.existingEls;\r\n let existingCount = existingEls.length;\r\n if (existingCount !== p.count - count)\r\n return this;\r\n\r\n let existingRange = this._getExistingElsRange();\r\n if (existingRange.firstValidArrayIndex === -1)\r\n return this;\r\n\r\n const itemParent = p.currentItemsParent;\r\n\r\n let startIndex = existingRange.firstValidArrayIndex + atIndex - existingRange.firstIndex;\r\n\r\n this._pushItemIndexesAt(atIndex, count);\r\n\r\n /** @type Node|undefined */\r\n let before = existingEls[startIndex - 1]\r\n ? existingEls[startIndex - 1].nextSibling\r\n : existingEls[0];\r\n\r\n /** @type DocumentFragment|null */\r\n let fragment = null;\r\n\r\n for (let index = atIndex, end = atIndex + count; index < end; index++) {\r\n const itemEl = this._dequeueElementForIndex(undefined, index, before, true);\r\n fragment = insertBeforeWithFragment(itemEl, fragment, before, itemParent);\r\n }\r\n\r\n // Insert any remaining fragment\r\n if (fragment && fragment.childNodes.length > 0) {\r\n insertBefore(fragment, before, itemParent);\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * States that items were removed at a certain position in the list. <br />\r\n * Virtual mode: Call `render()` to update the view after making changes.\r\n * @param {number} count\r\n * @param {number} atIndex\r\n * @returns {VirtualListHelper}\r\n */\r\n removeItemsAt(count, atIndex) {\r\n const p = this._p;\r\n\r\n if (typeof count !== 'number' || typeof atIndex !== 'number' || count <= 0 || atIndex < 0 || atIndex >= p.count)\r\n return this;\r\n\r\n p.count -= Math.min(count, p.count - atIndex);\r\n\r\n if (p.virtual) {\r\n this._invalidateItemIndexesAt(atIndex, -1);\r\n }\r\n else { // non-virtual\r\n let existingEls = p.existingEls;\r\n let existingCount = existingEls.length;\r\n if (existingCount !== p.count + count)\r\n return this;\r\n\r\n let existingRange = this._getExistingElsRange();\r\n if (existingRange.firstValidArrayIndex === -1)\r\n return this;\r\n\r\n this._pushItemIndexesAt(atIndex + count, -count);\r\n\r\n const onItemUnrender = p.onItemUnrender;\r\n let index = existingRange.firstValidArrayIndex + atIndex - existingRange.firstIndex;\r\n if (index < existingEls.length) {\r\n for (let i = 0; i < count; i++) {\r\n let itemEl = existingEls[index + i];\r\n\r\n let parent = itemEl.parentNode;\r\n if (parent)\r\n parent.removeChild(itemEl);\r\n if (onItemUnrender && itemEl[ItemIndexSymbol] !== undefined)\r\n onItemUnrender(itemEl);\r\n }\r\n existingEls.splice(index, count);\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Mark an element for a re-render. <br />\r\n * Virtual mode: Call `render()` to update the view after making changes. <br />\r\n * Non-virtual mode - the element is re-rendered immediately.\r\n * @param {number} index - the index of the element to re-render\r\n * @returns {VirtualListHelper}\r\n */\r\n refreshItemAt(index) {\r\n const p = this._p;\r\n\r\n if (typeof index !== 'number' || index < 0 || index >= p.count)\r\n return this;\r\n\r\n if (p.virtual) {\r\n this._invalidateItemIndexesAt(index, 1);\r\n }\r\n else { // non-virtual\r\n let existingEls = p.existingEls;\r\n let existingCount = existingEls.length;\r\n if (existingCount !== p.count)\r\n return this;\r\n\r\n let existingRange = this._getExistingElsRange();\r\n\r\n if (index >= existingRange.firstIndex && index <= existingRange.lastIndex) {\r\n let itemEl = existingEls[existingRange.firstValidArrayIndex + index - existingRange.firstIndex];\r\n delete itemEl[ItemIndexSymbol];\r\n this._dequeueElementForIndex(itemEl, index, itemEl.nextSibling, false);\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Tests whether an item at the specified index is rendered.\r\n * @param {number} index - the index to test\r\n * @returns {boolean}\r\n */\r\n isItemRendered(index) {\r\n const p = this._p;\r\n\r\n if (typeof index !== 'number' || index < 0 || index >= p.count)\r\n return false;\r\n\r\n let existingRange = this._getExistingElsRange();\r\n\r\n return index >= existingRange.firstIndex && index <= existingRange.lastIndex;\r\n }\r\n\r\n /**\r\n * Retrieves DOM element for the item at the specified index - if it's currently rendered.\r\n * @param {number} index - the index to retrieve\r\n * @returns {Element|undefined}\r\n */\r\n getItemElementAt(index) {\r\n const p = this._p;\r\n\r\n if (typeof index !== 'number' || index < 0 || index >= p.count)\r\n return undefined;\r\n\r\n let existingEls = p.existingEls;\r\n let existingRange = this._getExistingElsRange();\r\n\r\n if (index >= existingRange.firstIndex && index <= existingRange.lastIndex) {\r\n return existingEls[existingRange.firstValidArrayIndex + index - existingRange.firstIndex];\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Retrieves the position for the specified index. <br />\r\n * Can be used to scroll to a specific item.\r\n * @param {number} index\r\n * @returns {number|undefined}\r\n */\r\n getItemPosition(index) {\r\n const p = this._p;\r\n\r\n if (typeof index !== 'number' || index < 0 || index >= p.count)\r\n return undefined;\r\n\r\n if (p.virtual) {\r\n return this._calculateItemPosition(index);\r\n } else {\r\n let itemEl = this.getItemElementAt(index);\r\n if (itemEl === undefined)\r\n return undefined;\r\n\r\n const list = p.list;\r\n return getElementOffset(itemEl).top - getElementOffset(list).top + list.scrollTop;\r\n }\r\n }\r\n\r\n /**\r\n * Retrieves the item index for the specified element\r\n * @param {Element} el\r\n * @returns {number|undefined}\r\n */\r\n getItemIndexFromElement(el) {\r\n return el ? el[ItemIndexSymbol] : undefined;\r\n }\r\n\r\n /**\r\n * Retrieves the size (or estimated size, if unknown) for the specified index. <br />\r\n * @param {number} index\r\n * @returns {number|undefined}\r\n */\r\n getItemSize(index) {\r\n const p = this._p;\r\n\r\n if (typeof index !== 'number' || index < 0 || index >= p.count)\r\n return undefined;\r\n\r\n let height = p.cachedItemHeights[index - 1]; // already calculated\r\n\r\n if (height === undefined) {\r\n height = p.itemHeightEstimatorFn ? p.itemHeightEstimatorFn(index - 1) : null; // estimated per item\r\n\r\n if (typeof height !== 'number')\r\n height = p.estimatedItemHeight; // estimated\r\n\r\n p.cachedItemEstimatedHeights[index - 1] = height;\r\n }\r\n\r\n return height;\r\n }\r\n\r\n /**\r\n * Retrieves the number of items that fit into the current viewport.\r\n * @returns {number}\r\n */\r\n getVisibleItemCount() {\r\n const p = this._p, list = p.list;\r\n\r\n let scrollTop = list.scrollTop;\r\n let visibleHeight = list.clientHeight;\r\n let firstVisibleIndex, lastVisibleIndex;\r\n\r\n if (p.virtual) {\r\n firstVisibleIndex = binarySearchPosition(p.cachedItemPositions, scrollTop);\r\n lastVisibleIndex = binarySearchPosition(p.cachedItemPositions, scrollTop + visibleHeight, firstVisibleIndex);\r\n }\r\n else {\r\n const retriever = i => {\r\n let pos = this.getItemPosition(i);\r\n if (pos === undefined)\r\n pos = Infinity;\r\n return pos;\r\n };\r\n\r\n firstVisibleIndex = binarySearchPositionByFn(p.count, retriever, scrollTop);\r\n lastVisibleIndex = binarySearchPositionByFn(p.count, retriever, scrollTop + visibleHeight, firstVisibleIndex);\r\n }\r\n\r\n if (this.getItemPosition(lastVisibleIndex) === scrollTop + visibleHeight)\r\n lastVisibleIndex--;\r\n return (lastVisibleIndex - firstVisibleIndex) + 1;\r\n }\r\n\r\n /**\r\n * Renders a temporary ghost item. Can be used for testings several aspects of a proposed element, i.e measurements.\r\n * @param {*} ghostIndex - the value to pass as the index for the renderer function\r\n * @param {boolean} append - whether to append the item element to the DOM\r\n * @param {function(itemEl: Element)} ghostTester - the function that will receive the element, called synchronously.\r\n */\r\n createGhostItemElement(ghostIndex, append, ghostTester) {\r\n const p = this._p;\r\n\r\n let itemEl = this._dequeueElementForIndex(null, ghostIndex, false, true);\r\n try {\r\n if (append) {\r\n p.currentItemsParent.appendChild(itemEl);\r\n }\r\n ghostTester(itemEl);\r\n } finally {\r\n if (append) {\r\n let parent = itemEl.parentNode;\r\n if (parent)\r\n parent.removeChild(itemEl);\r\n }\r\n if (p.onItemUnrender)\r\n p.onItemUnrender(itemEl);\r\n }\r\n }\r\n\r\n /**\r\n * Reset the pointer to the current items wrapper\r\n * @private\r\n */\r\n _resetCurrentItemsParent() {\r\n const p = this._p;\r\n p.currentItemsParent = p.virtualWrapper ?? p.userItemsParent ?? p.list;\r\n }\r\n\r\n /**\r\n * Destroy all created elements, for cleanup\r\n * @returns {VirtualListHelper}\r\n * @private\r\n */\r\n _destroyElements() {\r\n const p = this._p;\r\n const onItemUnrender = p.onItemUnrender;\r\n const existingEls = p.existingEls;\r\n\r\n for (let i = 0; i < existingEls.length; i++) {\r\n const el = existingEls[i];\r\n\r\n let parent = el.parentNode;\r\n if (parent)\r\n parent.removeChild(el);\r\n if (onItemUnrender && el[ItemIndexSymbol] !== undefined)\r\n onItemUnrender(el);\r\n }\r\n\r\n existingEls.length = 0;\r\n\r\n if (p.virtualWrapper) {\r\n if (p.virtualWrapper !== p.userItemsParent) {\r\n if (p.virtualWrapper.parentNode) {\r\n p.virtualWrapper.parentNode.removeChild(p.virtualWrapper);\r\n }\r\n }\r\n p.virtualWrapper = null;\r\n this._resetCurrentItemsParent();\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Marks (an) item(s) at specific index(es) as to be re-rendered. <br />\r\n * Applicable for virtual mode only.\r\n * @param {number} index\r\n * @param {number} count\r\n * @private\r\n */\r\n _invalidateItemIndexesAt(index, count) {\r\n const p = this._p;\r\n\r\n this._setItemPositionsNeedsUpdate(index);\r\n\r\n let existingEls = p.existingEls;\r\n let existingCount = existingEls.length;\r\n let existingRange = this._getExistingElsRange();\r\n\r\n if (existingRange.firstValidArrayIndex === -1)\r\n return;\r\n\r\n if (count === -1)\r\n count = existingEls.length;\r\n\r\n // Clean\r\n if (index >= existingRange.firstIndex && index <= existingRange.lastIndex) {\r\n for (let i = existingRange.firstValidArrayIndex + index - existingRange.firstIndex,\r\n c = 0;\r\n i < existingCount && c < count;\r\n i++, c++)\r\n delete existingEls[i][ItemIndexSymbol];\r\n }\r\n }\r\n\r\n /**\r\n * In/decrement the item-index marker for specific item(s). <br />\r\n * Used for inserting/removing items in the middle of the list, without re-rendering everything. <br />\r\n * Applicable for non-virtual mode only.\r\n * @param {number} index\r\n * @param {number} count\r\n * @private\r\n */\r\n _pushItemIndexesAt(index, count) {\r\n const p = this._p;\r\n\r\n let existingEls = p.existingEls;\r\n let existingCount = existingEls.length;\r\n let existingRange = this._getExistingElsRange();\r\n\r\n if (existingRange.firstValidArrayIndex === -1)\r\n return;\r\n\r\n // Clean\r\n if (index >= existingRange.firstIndex && index <= existingRange.lastIndex) {\r\n for (let i = existingRange.firstValidArrayIndex + index - existingRange.firstIndex;\r\n i < existingCount;\r\n i++)\r\n existingEls[i][ItemIndexSymbol] += count;\r\n }\r\n }\r\n\r\n /**\r\n * Hook relevant events\r\n * @returns {VirtualListHelper}\r\n * @private\r\n */\r\n _hookEvents() {\r\n const p = this._p;\r\n\r\n this._unhookEvents();\r\n\r\n if (p.virtual && p.hookScrollEvent) {\r\n p.list && p.list.addEventListener('scroll', /**@type Function*/p.boundRender);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Unhook previously hooked events\r\n * @returns {VirtualListHelper}\r\n * @private\r\n */\r\n _unhookEvents() {\r\n const p = this._p;\r\n\r\n p.list && p.list.removeEventListener('scroll', /**@type Function*/p.boundRender);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Mark item index from which the positions are not considered valid anymore. <br />\r\n * Applicable for virtual mode only.\r\n * @param {number} value\r\n * @private\r\n */\r\n _setItemPositionsNeedsUpdate(value) {\r\n const p = this._p;\r\n\r\n if (value < p.itemPositionsNeedsUpdate) {\r\n p.itemPositionsNeedsUpdate = value;\r\n }\r\n }\r\n\r\n /**\r\n * Calculates an item's top position (and stores in the private `cachedItemPositions` array). <br />\r\n * Allows calculating last+1 index too, to get the bottom-most position. <br />\r\n * Applicable for non-virtual mode only.\r\n * @param {number} index\r\n * @returns {number|undefined}\r\n * @private\r\n */\r\n _calculateItemPosition(index) {\r\n const p = this._p;\r\n\r\n const cachedItemPositions = p.cachedItemPositions;\r\n\r\n if (index >= p.itemPositionsNeedsUpdate) {\r\n const count = p.count;\r\n const cachedItemHeights = p.cachedItemHeights;\r\n const cachedItemEstimatedHeights = p.cachedItemEstimatedHeights;\r\n const estimatedItemHeight = p.estimatedItemHeight;\r\n const itemHeightEstimatorFn = p.itemHeightEstimatorFn;\r\n\r\n if (cachedItemHeights.length !== count) {\r\n cachedItemHeights.length = count;\r\n cachedItemEstimatedHeights.length = count;\r\n cachedItemPositions.length = count;\r\n }\r\n\r\n let fromIndex = p.itemPositionsNeedsUpdate;\r\n let toIndex = Math.min(index, count);\r\n\r\n let pos = 0;\r\n\r\n if (fromIndex > 0) {\r\n pos = cachedItemPositions[fromIndex - 1];\r\n }\r\n\r\n for (let i = fromIndex; i <= toIndex; i++) {\r\n if (i === 0) {\r\n cachedItemPositions[i] = pos;\r\n continue;\r\n }\r\n\r\n const prevIndex = i - 1;\r\n\r\n let height = cachedItemHeights[prevIndex]; // already calculated\r\n\r\n if (height === undefined) {\r\n height = itemHeightEstimatorFn ? itemHeightEstimatorFn(prevIndex) : null; // estimated per item\r\n\r\n if (typeof height !== 'number')\r\n height = estimatedItemHeight; // estimated\r\n\r\n cachedItemEstimatedHeights[prevIndex] = height;\r\n }\r\n\r\n pos += height;\r\n cachedItemPositions[i] = pos;\r\n }\r\n\r\n p.itemPositionsNeedsUpdate = toIndex + 1;\r\n }\r\n\r\n // item after the last (calculate full height)\r\n if (index > 0 && index === p.count) {\r\n let height = p.cachedItemHeights[index - 1]; // already calculated\r\n\r\n if (height === undefined) {\r\n height = p.itemHeightEstimatorFn ? p.itemHeightEstimatorFn(index - 1) : null; // estimated per item\r\n\r\n if (typeof height !== 'number')\r\n height = p.estimatedItemHeight; // estimated\r\n\r\n p.cachedItemEstimatedHeights[index - 1] = height;\r\n }\r\n\r\n return cachedItemPositions[index - 1] + height;\r\n }\r\n\r\n return cachedItemPositions[index];\r\n }\r\n\r\n /**\r\n * Create (or reuse an existing) element for an item at the specified index,\r\n * and insert physically at specified position. <br />\r\n * This will also update the element's position in the `existingEls` array.\r\n * @param {Element|undefined} itemEl\r\n * @param {number} index\r\n * @param {Node|boolean|undefined} insertBefore\r\n * @param {boolean|undefined} avoidDomReflow\r\n * @returns {Element}\r\n * @private\r\n */\r\n _dequeueElementForIndex(itemEl, index, insertBefore, avoidDomReflow) {\r\n const p = this._p;\r\n const virtualWrapper = p.virtualWrapper;\r\n const itemParent = p.currentItemsParent;\r\n const existingEls = p.existingEls;\r\n const onItemRender = p.onItemRender;\r\n const onItemUnrender = p.onItemUnrender;\r\n const isNew = !itemEl;\r\n const shouldReRender = isNew || index !== itemEl[ItemIndexSymbol];\r\n\r\n if (itemEl) {\r\n if (onItemUnrender && shouldReRender) {\r\n onItemUnrender(itemEl);\r\n }\r\n } else {\r\n itemEl = p.itemElementCreatorFn();\r\n\r\n if (virtualWrapper && insertBefore !== false) {\r\n (/**@type ElementCSSInlineStyle*/itemEl).style.position = 'absolute';\r\n (/**@type ElementCSSInlineStyle*/itemEl).style.top = '0';\r\n (/**@type ElementCSSInlineStyle*/itemEl).style.left = '0';\r\n (/**@type ElementCSSInlineStyle*/itemEl).style.right = '0';\r\n }\r\n }\r\n\r\n // Render only if it's a new item element\r\n // OR the index of the existing element is not the same of the index to render\r\n if (shouldReRender) {\r\n itemEl.innerHTML = ''; // Basic cleanup\r\n\r\n if (onItemRender)\r\n onItemRender(itemEl, index);\r\n }\r\n\r\n if (insertBefore !== false) {\r\n if (!(insertBefore instanceof Node))\r\n insertBefore = null;\r\n\r\n // Remove from existing list\r\n if (!isNew) {\r\n let i = existingEls.indexOf(itemEl);\r\n if (i !== -1)\r\n existingEls.splice(i, 1);\r\n }\r\n\r\n // Insert into existing list\r\n let beforeIndex = insertBefore ? existingEls.indexOf(/**@type Element*/insertBefore) : -1;\r\n if (beforeIndex === -1) {\r\n existingEls.push(itemEl);\r\n } else {\r\n existingEls.splice(beforeIndex, 0, itemEl);\r\n }\r\n\r\n if (!avoidDomReflow) {\r\n this._insertItemAndFlow(itemEl, index, insertBefore);\r\n }\r\n }\r\n\r\n // Add index metadata to item\r\n itemEl[ItemIndexSymbol] = index;\r\n\r\n return itemEl;\r\n }\r\n\r\n /**\r\n * Insert item element into the DOM, set it's flow in the DOM, and update the item's position. <br />\r\n * @param {Element|undefined} itemEl\r\n * @param {number} index\r\n * @param {Node|boolean|undefined} before\r\n * @private\r\n */\r\n _insertItemAndFlow(itemEl, index, before) {\r\n const p = this._p;\r\n const virtualWrapper = p.virtualWrapper;\r\n const itemParent = p.currentItemsParent;\r\n\r\n if (before !== false) {\r\n if (!(before instanceof Node))\r\n before = null;\r\n\r\n // Insert into DOM\r\n if (itemEl.parentNode !== itemParent ||\r\n (itemEl.nextSibling !== before)) {\r\n insertBefore(itemEl, before, itemParent);\r\n }\r\n }\r\n\r\n if (virtualWrapper) {\r\n // Calculate height\r\n let itemHeight = itemEl.getBoundingClientRect().height;\r\n\r\n // Put calculated height into cache, and invalidate positions if it's different\r\n let cachedItemHeight = p.cachedItemHeights[index];\r\n if (cachedItemHeight !== itemHeight) {\r\n p.cachedItemHeights[index] = itemHeight;\r\n }\r\n\r\n if ((cachedItemHeight !== undefined && itemHeight !== cachedItemHeight) ||\r\n (cachedItemHeight === undefined && itemHeight !== p.cachedItemEstimatedHeights[index])) {\r\n this._setItemPositionsNeedsUpdate(index + 1);\r\n }\r\n\r\n // Set item top position\r\n let pos = this._calculateItemPosition(index);\r\n const supportedTransform = getSupportedTransform();\r\n\r\n if (supportedTransform === false) {\r\n (/**@type ElementCSSInlineStyle*/itemEl).style.top = `${pos}px`;\r\n } else {\r\n (/**@type ElementCSSInlineStyle*/itemEl).style[supportedTransform] = `translateY(${pos}px)`;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Fetches valid range of existingEls\r\n * @returns {{firstIndex: (*|number), firstValidArrayIndex: number, lastValidArrayIndex: number, lastIndex: (*|number)}}\r\n * @private\r\n */\r\n _getExistingElsRange() {\r\n const p = this._p, existingEls = p.existingEls;\r\n\r\n let firstValidArrayIndex = -1, lastValidArrayIndex = -1;\r\n\r\n for (let i = 0, len = existingEls.length; i < len; i++) {\r\n if (false === hasOwnProperty.call(existingEls[i], ItemIndexSymbol))\r\n continue;\r\n firstValidArrayIndex = i;\r\n break;\r\n }\r\n\r\n for (let i = existingEls.length - 1; i >= 0; i--) {\r\n if (false === hasOwnProperty.call(existingEls[i], ItemIndexSymbol))\r\n continue;\r\n lastValidArrayIndex = i;\r\n break;\r\n }\r\n\r\n let firstIndex = firstValidArrayIndex !== -1 ? existingEls[firstValidArrayIndex][ItemIndexSymbol] : -1;\r\n let lastIndex = lastValidArrayIndex !== -1 ? existingEls[lastValidArrayIndex][ItemIndexSymbol] : -1;\r\n\r\n return {\r\n firstValidArrayIndex: firstValidArrayIndex,\r\n lastValidArrayIndex: lastValidArrayIndex,\r\n firstIndex: firstIndex,\r\n lastIndex: lastIndex,\r\n };\r\n }\r\n}\r\n\r\n/** Marks the item index associated with an item element */\r\nconst ItemIndexSymbol = Symbol('index');\r\n\r\n/** Marks an element for reuse */\r\nconst ReuseElSymbol = Symbol('reuse');\r\n\r\n/**\r\n * The default element creator\r\n * @returns {HTMLLIElement}\r\n */\r\nconst defaultElementCreator = () => {\r\n return document.createElement('li');\r\n};\r\n\r\n/**\r\n * Will look for the index in the `positions` array closest to the specified `pos` value (<= pos).\r\n * @param {number[]} positions\r\n * @param {number} pos\r\n * @param {number} [start=0]\r\n * @param {number} [end=-1]\r\n * @returns {number}\r\n */\r\nconst binarySearchPosition = (positions, pos, start = 0, end = -1) => {\r\n let total = positions.length;\r\n if (end < 0)\r\n end += total;\r\n if (end <= start) return end; // 0 or 1 length array\r\n\r\n while (start <= end) {\r\n let mid = Math.floor(start + (end - start) / 2);\r\n let midPos = positions[mid];\r\n\r\n if (midPos === pos || (midPos <= pos && mid < total && positions[mid + 1] > pos)) {\r\n while (mid > 0 && positions[mid - 1] === midPos) // avoid bugs on 0-height items\r\n mid--;\r\n\r\n return mid;\r\n }\r\n\r\n if (midPos < pos)\r\n start = mid + 1;\r\n else\r\n end = mid - 1;\r\n }\r\n\r\n return end === -1 ? 0 : (total - 1);\r\n};\r\n\r\n/**\r\n * Will look for the index in a virtual list of positions supplied by `total` and `fn`,\r\n * closest to the specified `pos` value (<= pos).\r\n * @param {number} total\r\n * @param {function(index: number):number} fn\r\n * @param {number} pos\r\n * @param {number} [start=0]\r\n * @param {number} [end=-1]\r\n * @returns {number}\r\n */\r\nconst binarySearchPositionByFn = (total, fn, pos, start = 0, end = -1) => {\r\n if (end < 0)\r\n end += total;\r\n if (end <= start) return end; // 0 or 1 length array\r\n\r\n while (start <= end) {\r\n let mid = Math.floor(start + (end - start) / 2);\r\n let midPos = fn(mid);\r\n\r\n if (midPos === pos || (midPos <= pos && mid < total && fn(mid + 1) > pos)) {\r\n while (mid > 0 && fn(mid - 1) === midPos) // avoid bugs on 0-height items\r\n mid--;\r\n\r\n return mid;\r\n }\r\n\r\n if (midPos < pos)\r\n start = mid + 1;\r\n else\r\n end = mid - 1;\r\n }\r\n\r\n return end === -1 ? 0 : fn(total - 1);\r\n};\r\n\r\n/**\r\n * Finds the last item in the array for which `fn` returns a truthy value\r\n * @param {Array} array\r\n * @param {Function} fn\r\n * @returns {undefined|*}\r\n */\r\nconst findLast = (array, fn) => {\r\n for (let i = array.length - 1; i >= 0; i--) {\r\n if (fn(array[i])) {\r\n return array[i];\r\n }\r\n }\r\n return undefined;\r\n};\r\n\r\nlet _isTransformSupported = null;\r\n\r\nconst getSupportedTransform = () => {\r\n if (_isTransformSupported === null) {\r\n let prefixes = ['transform', 'WebkitTransform', 'MozTransform', 'OTransform', 'msTransform'];\r\n let div = document.createElement('div');\r\n _isTransformSupported = false;\r\n for (let item of prefixes) {\r\n if (div && div.style[item] !== undefined) {\r\n _isTransformSupported = item;\r\n break;\r\n }\r\n }\r\n }\r\n return _isTransformSupported;\r\n};\r\n\r\nexport default VirtualListHelper;\r\n","export default class DomEventsSink {\r\n constructor() {\r\n /**\r\n * @type {{el: EventTarget, name: string, handler: EventListenerOrEventListenerObject, useCapture: boolean}[]}\r\n * @private\r\n */\r\n this._events = [];\r\n }\r\n\r\n /**\r\n * @param {EventTarget} el\r\n * @param {string} eventName\r\n * @param {EventListenerOrEventListenerObject} handler\r\n * @param {boolean|AddEventListenerOptions} [optionsOrCapture=undefined]\r\n * @returns {DomEventsSink}\r\n */\r\n add(el, eventName, handler, optionsOrCapture) {\r\n let parts = eventName.split('.');\r\n let name = parts[0];\r\n let namespace = parts[1];\r\n\r\n el.addEventListener(name, handler, optionsOrCapture ? optionsOrCapture : false);\r\n let useCapture = optionsOrCapture === true || typeof optionsOrCapture === 'object' && optionsOrCapture.capture === true;\r\n this._events.push({ el: el, name: name, namespace: namespace, handler: handler, useCapture: useCapture });\r\n return this;\r\n }\r\n\r\n /**\r\n * @param {EventTarget} [el=undefined]\r\n * @param {string} [eventName=undefined]\r\n * @param {EventListenerOrEventListenerObject} [handler=undefined]\r\n * @param {boolean|EventListenerOptions} [optionsOrCapture=undefined]\r\n * @returns {DomEventsSink}\r\n */\r\n remove(el, eventName, handler, optionsOrCapture) {\r\n let parts = eventName ? eventName.split('.') : '';\r\n let name = parts[0];\r\n let namespace = parts[1];\r\n\r\n let useCapture = optionsOrCapture === true || typeof optionsOrCapture === 'object' && optionsOrCapture.capture === true;\r\n\r\n let keep = [];\r\n let remove = [];\r\n\r\n if (el || name || namespace || handler || optionsOrCapture !== undefined) {\r\n for (let item of this._events) {\r\n if ((el && item.el !== el) ||\r\n (name && item.name !== name) ||\r\n (namespace && item.namespace !== namespace) ||\r\n (handler && item.handler !== handler) ||\r\n (optionsOrCapture !== undefined && item.useCapture !== useCapture)) {\r\n keep.push(item);\r\n } else {\r\n remove.push(item);\r\n }\r\n }\r\n } else {\r\n remove = this._events;\r\n }\r\n\r\n this._events = keep;\r\n\r\n for (let item of remove) {\r\n item.el.removeEventListener(item.name, item.handler, item.useCapture);\r\n }\r\n return this;\r\n }\r\n}\r\n","/*!\n * @danielgindi/dgtable.js 2.0.1\n * git://github.com/danielgindi/dgtable.js.git\n */\nimport{getScrollHorz as e,setScrollHorz as t}from\"@danielgindi/dom-utils/lib/ScrollHelper.js\";import{setCssProps as r,getElementWidth as i,getElementHeight as l,getElementOffset as o,setElementWidth as n}from\"@danielgindi/dom-utils/lib/Css.js\";import{scopedSelectorAll as s,scopedSelector as a}from\"@danielgindi/dom-utils/lib/DomCompat.js\";import d from\"@danielgindi/virtual-list-helper\";import u from\"@danielgindi/dom-utils/lib/DomEventsSink.js\";var h,c,m=\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:{},f={};function p(){if(c)return h;c=1;var e=function(e){return e&&e.Math===Math&&e};return h=e(\"object\"==typeof globalThis&&globalThis)||e(\"object\"==typeof window&&window)||e(\"object\"==typeof self&&self)||e(\"object\"==typeof m&&m)||e(\"object\"==typeof h&&h)||function(){return this}()||Function(\"return this\")()}var v,g,b,C,w,y,_,S,W={};function R(){return g?v:(g=1,v=function(e){try{return!!e()}catch(e){return!0}})}function N(){if(C)return b;C=1;var e=R();return b=!e(function(){return 7!==Object.defineProperty({},1,{get:function(){return 7}})[1]})}function T(){if(y)return w;y=1;var e=R();return w=!e(function(){var e=function(){}.bind();return\"function\"!=typeof e||e.hasOwnProperty(\"prototype\")})}function L(){if(S)return _;S=1;var e=T(),t=Function.prototype.call;return _=e?t.bind(t):function(){return t.apply(t,arguments)},_}var E,x,z,P,F,O,H,M,A,k,I,B,j,D,V,$,U,q,X,Y,G,J,K,Q,Z,ee,te,re,ie,le,oe,ne,se,ae,de,ue,he,ce,me,fe,pe,ve={};function ge(){return z?x:(z=1,x=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}})}function be(){if(F)return P;F=1;var e=T(),t=Function.prototype,r=t.call,i=e&&t.bind.bind(r,r);return P=e?i:function(e){return function(){return r.apply(e,arguments)}},P}function Ce(){if(H)return O;H=1;var e=be(),t=e({}.toString),r=e(\"\".slice);return O=function(e){return r(t(e),8,-1)}}function we(){return I?k:(I=1,k=function(e){return null==e})}function ye(){if(j)return B;j=1;var e=we(),t=TypeError;return B=function(r){if(e(r))throw new t(\"Can't call method on \"+r);return r}}function _e(){if(V)return D;V=1;var e=function(){if(A)return M;A=1;var e=be(),t=R(),r=Ce(),i=Object,l=e(\"\".split);return M=t(function(){return!i(\"z\").propertyIsEnumerable(0)})?function(e){return\"String\"===r(e)?l(e,\"\"):i(e)}:i}(),t=ye();return D=function(r){return e(t(r))}}function Se(){if(U)return $;U=1;var e=\"object\"==typeof document&&document.all;return $=void 0===e&&void 0!==e?function(t){return\"function\"==typeof t||t===e}:function(e){return\"function\"==typeof e}}function We(){if(X)return q;X=1;var e=Se();return q=function(t){return\"object\"==typeof t?null!==t:e(t)}}function Re(){if(G)return Y;G=1;var e=p(),t=Se();return Y=function(r,i){return arguments.length<2?(l=e[r],t(l)?l:void 0):e[r]&&e[r][i];var l},Y}function Ne(){if(K)return J;K=1;var e=be();return J=e({}.isPrototypeOf)}function Te(){if(Z)return Q;Z=1;var e=p().navigator,t=e&&e.userAgent;return Q=t?String(t):\"\"}function Le(){if(te)return ee;te=1;var e,t,r=p(),i=Te(),l=r.process,o=r.Deno,n=l&&l.versions||o&&o.version,s=n&&n.v8;return s&&(t=(e=s.split(\".\"))[0]>0&&e[0]<4?1:+(e[0]+e[1])),!t&&i&&(!(e=i.match(/Edge\\/(\\d+)/))||e[1]>=74)&&(e=i.match(/Chrome\\/(\\d+)/))&&(t=+e[1]),ee=t}function Ee(){if(ie)return re;ie=1;var e=Le(),t=R(),r=p().String;return re=!!Object.getOwnPropertySymbols&&!t(function(){var t=Symbol(\"symbol detection\");return!r(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&e&&e<41})}function xe(){if(oe)return le;oe=1;var e=Ee();return le=e&&!Symbol.sham&&\"symbol\"==typeof Symbol.iterator}function ze(){if(se)return ne;se=1;var e=Re(),t=Se(),r=Ne(),i=xe(),l=Object;return ne=i?function(e){return\"symbol\"==typeof e}:function(i){var o=e(\"Symbol\");return t(o)&&r(o.prototype,l(i))}}function Pe(){if(de)return ae;de=1;var e=String;return ae=function(t){try{return e(t)}catch(e){return\"Object\"}}}function Fe(){if(he)return ue;he=1;var e=Se(),t=Pe(),r=TypeError;return ue=function(i){if(e(i))return i;throw new r(t(i)+\" is not a function\")}}function Oe(){if(me)return ce;me=1;var e=Fe(),t=we();return ce=function(r,i){var l=r[i];return t(l)?void 0:e(l)}}function He(){if(pe)return fe;pe=1;var e=L(),t=Se(),r=We(),i=TypeError;return fe=function(l,o){var n,s;if(\"string\"===o&&t(n=l.toString)&&!r(s=e(n,l)))return s;if(t(n=l.valueOf)&&!r(s=e(n,l)))return s;if(\"string\"!==o&&t(n=l.toString)&&!r(s=e(n,l)))return s;throw new i(\"Can't convert object to primitive value\")}}var Me,Ae,ke,Ie,Be,je,De,Ve,$e,Ue,qe,Xe,Ye,Ge,Je,Ke,Qe,Ze,et,tt,rt,it,lt,ot,nt={exports:{}};function st(){if(Ie)return ke;Ie=1;var e=p(),t=Object.defineProperty;return ke=function(r,i){try{t(e,r,{value:i,configurable:!0,writable:!0})}catch(t){e[r]=i}return i}}function at(){if(Be)return nt.exports;Be=1;var e=Ae?Me:(Ae=1,Me=!1),t=p(),r=st(),i=\"__core-js_shared__\",l=nt.exports=t[i]||r(i,{});return(l.versions||(l.versions=[])).push({version:\"3.47.0\",mode:e?\"pure\":\"global\",copyright:\"© 2014-2025 Denis Pushkarev (zloirock.ru), 2025 CoreJS Company (core-js.io)\",license:\"https://github.com/zloirock/core-js/blob/v3.47.0/LICENSE\",source:\"https://github.com/zloirock/core-js\"}),nt.exports}function dt(){if(De)return je;De=1;var e=at();return je=function(t,r){return e[t]||(e[t]=r||{})}}function ut(){if($e)return Ve;$e=1;var e=ye(),t=Object;return Ve=function(r){return t(e(r))}}function ht(){if(qe)return Ue;qe=1;var e=be(),t=ut(),r=e({}.hasOwnProperty);return Ue=Object.hasOwn||function(e,i){return r(t(e),i)}}function ct(){if(Ye)return Xe;Ye=1;var e=be(),t=0,r=Math.random(),i=e(1.1.toString);return Xe=function(e){return\"Symbol(\"+(void 0===e?\"\":e)+\")_\"+i(++t+r,36)}}function mt(){if(Je)return Ge;Je=1;var e=p(),t=dt(),r=ht(),i=ct(),l=Ee(),o=xe(),n=e.Symbol,s=t(\"wks\"),a=o?n.for||n:n&&n.withoutSetter||i;return Ge=function(e){return r(s,e)||(s[e]=l&&r(n,e)?n[e]:a(\"Symbol.\"+e)),s[e]}}function ft(){if(Qe)return Ke;Qe=1;var e=L(),t=We(),r=ze(),i=Oe(),l=He(),o=mt(),n=TypeError,s=o(\"toPrimitive\");return Ke=function(o,a){if(!t(o)||r(o))return o;var d,u=i(o,s);if(u){if(void 0===a&&(a=\"default\"),d=e(u,o,a),!t(d)||r(d))return d;throw new n(\"Can't convert object to primitive value\")}return void 0===a&&(a=\"number\"),l(o,a)}}function pt(){if(et)return Ze;et=1;var e=ft(),t=ze();return Ze=function(r){var i=e(r,\"string\");return t(i)?i:i+\"\"}}function vt(){if(lt)return it;lt=1;var e=N(),t=R(),r=function(){if(rt)return tt;rt=1;var e=p(),t=We(),r=e.document,i=t(r)&&t(r.createElement);return tt=function(e){return i?r.createElement(e):{}}}();return it=!e&&!t(function(){return 7!==Object.defineProperty(r(\"div\"),\"a\",{get:function(){return 7}}).a})}function gt(){if(ot)return W;ot=1;var e=N(),t=L(),r=function(){if(E)return ve;E=1;var e={}.propertyIsEnumerable,t=Object.getOwnPropertyDescriptor,r=t&&!e.call({1:2},1);return ve.f=r?function(e){var r=t(this,e);return!!r&&r.enumerable}:e,ve}(),i=ge(),l=_e(),o=pt(),n=ht(),s=vt(),a=Object.getOwnPropertyDescriptor;return W.f=e?a:function(e,d){if(e=l(e),d=o(d),s)try{return a(e,d)}catch(e){}if(n(e,d))return i(!t(r.f,e,d),e[d])},W}var bt,Ct,wt,yt,_t,St,Wt,Rt={};function Nt(){if(yt)return wt;yt=1;var e=We(),t=String,r=TypeError;return wt=function(i){if(e(i))return i;throw new r(t(i)+\" is not an object\")}}function Tt(){if(_t)return Rt;_t=1;var e=N(),t=vt(),r=function(){if(Ct)return bt;Ct=1;var e=N(),t=R();return bt=e&&t(function(){return 42!==Object.defineProperty(function(){},\"prototype\",{value:42,writable:!1}).prototype})}(),i=Nt(),l=pt(),o=TypeError,n=Object.defineProperty,s=Object.getOwnPropertyDescriptor,a=\"enumerable\",d=\"configurable\",u=\"writable\";return Rt.f=e?r?function(e,t,r){if(i(e),t=l(t),i(r),\"function\"==typeof e&&\"prototype\"===t&&\"value\"in r&&u in r&&!r[u]){var o=s(e,t);o&&o[u]&&(e[t]=r.value,r={configurable:d in r?r[d]:o[d],enumerable:a in r?r[a]:o[a],writable:!1})}return n(e,t,r)}:n:function(e,r,s){if(i(e),r=l(r),i(s),t)try{return n(e,r,s)}catch(e){}if(\"get\"in s||\"set\"in s)throw new o(\"Accessors not supported\");return\"value\"in s&&(e[r]=s.value),e},Rt}function Lt(){if(Wt)return St;Wt=1;var e=N(),t=Tt(),r=ge();return St=e?function(e,i,l){return t.f(e,i,r(1,l))}:function(e,t,r){return e[t]=r,e}}var Et,xt,zt,Pt,Ft,Ot,Ht,Mt,At,kt,It,Bt,jt,Dt,Vt,$t={exports:{}};function Ut(){if(Pt)return zt;Pt=1;var e=be(),t=Se(),r=at(),i=e(Function.toString);return t(r.inspectSource)||(r.inspectSource=function(e){return i(e)}),zt=r.inspectSource}function qt(){if(Mt)return Ht;Mt=1;var e=dt(),t=ct(),r=e(\"keys\");return Ht=function(e){return r[e]||(r[e]=t(e))}}function Xt(){return kt?At:(kt=1,At={})}function Yt(){if(jt)return $t.exports;jt=1;var e=be(),t=R(),r=Se(),i=ht(),l=N(),o=function(){if(xt)return Et;xt=1;var e=N(),t=ht(),r=Function.prototype,i=e&&Object.getOwnPropertyDescriptor,l=t(r,\"name\"),o=l&&\"something\"===function(){}.name,n=l&&(!e||e&&i(r,\"name\").configurable);return Et={EXISTS:l,PROPER:o,CONFIGURABLE:n}}().CONFIGURABLE,n=Ut(),s=function(){if(Bt)return It;Bt=1;var e,t,r,i=function(){if(Ot)return Ft;Ot=1;var e=p(),t=Se(),r=e.WeakMap;return Ft=t(r)&&/native code/.test(String(r))}(),l=p(),o=We(),n=Lt(),s=ht(),a=at(),d=qt(),u=Xt(),h=\"Object already initialized\",c=l.TypeError,m=l.WeakMap;if(i||a.state){var f=a.state||(a.state=new m);f.get=f.get,f.has=f.has,f.set=f.set,e=function(e,t){if(f.has(e))throw new c(h);return t.facade=e,f.set(e,t),t},t=function(e){return f.get(e)||{}},r=function(e){return f.has(e)}}else{var v=d(\"state\");u[v]=!0,e=function(e,t){if(s(e,v))throw new c(h);return t.facade=e,n(e,v,t),t},t=function(e){return s(e,v)?e[v]:{}},r=function(e){return s(e,v)}}return It={set:e,get:t,has:r,enforce:function(i){return r(i)?t(i):e(i,{})},getterFor:function(e){return function(r){var i;if(!o(r)||(i=t(r)).type!==e)throw new c(\"Incompatible receiver, \"+e+\" required\");return i}}}}(),a=s.enforce,d=s.get,u=String,h=Object.defineProperty,c=e(\"\".slice),m=e(\"\".replace),f=e([].join),v=l&&!t(function(){return 8!==h(function(){},\"length\",{value:8}).length}),g=String(String).split(\"String\"),b=$t.exports=function(e,t,r){\"Symbol(\"===c(u(t),0,7)&&(t=\"[\"+m(u(t),/^Symbol\\(([^)]*)\\).*$/,\"$1\")+\"]\"),r&&r.getter&&(t=\"get \"+t),r&&r.setter&&(t=\"set \"+t),(!i(e,\"name\")||o&&e.name!==t)&&(l?h(e,\"name\",{value:t,configurable:!0}):e.name=t),v&&r&&i(r,\"arity\")&&e.length!==r.arity&&h(e,\"length\",{value:r.arity});try{r&&i(r,\"constructor\")&&r.constructor?l&&h(e,\"prototype\",{writable:!1}):e.prototype&&(e.prototype=void 0)}catch(e){}var n=a(e);return i(n,\"source\")||(n.source=f(g,\"string\"==typeof t?t:\"\")),e};return Function.prototype.toString=b(function(){return r(this)&&d(this).source||n(this)},\"toString\"),$t.exports}function Gt(){if(Vt)return Dt;Vt=1;var e=Se(),t=Tt(),r=Yt(),i=st();return Dt=function(l,o,n,s){s||(s={});var a=s.enumerable,d=void 0!==s.name?s.name:o;if(e(n)&&r(n,d,s),s.global)a?l[o]=n:i(o,n);else{try{s.unsafe?l[o]&&(a=!0):delete l[o]}catch(e){}a?l[o]=n:t.f(l,o,{value:n,enumerable:!1,configurable:!s.nonConfigurable,writable:!s.nonWritable})}return l}}var Jt,Kt,Qt,Zt,er,tr,rr,ir,lr,or,nr,sr,ar,dr,ur,hr,cr,mr={};function fr(){if(Zt)return Qt;Zt=1;var e=function(){if(Kt)return Jt;Kt=1;var e=Math.ceil,t=Math.floor;return Jt=Math.trunc||function(r){var i=+r;return(i>0?t:e)(i)}}();return Qt=function(t){var r=+t;return r!=r||0===r?0:e(r)}}function pr(){if(tr)return er;tr=1;var e=fr(),t=Math.max,r=Math.min;return er=function(i,l){var o=e(i);return o<0?t(o+l,0):r(o,l)}}function vr(){if(ir)return rr;ir=1;var e=fr(),t=Math.min;return rr=function(r){var i=e(r);return i>0?t(i,9007199254740991):0}}function gr(){if(or)return lr;or=1;var e=vr();return lr=function(t){return e(t.length)}}var br,Cr,wr,yr,_r,Sr,Wr,Rr,Nr,Tr,Lr,Er,xr,zr,Pr,Fr,Or,Hr,Mr={};function Ar(){if(wr)return Cr;wr=1;var e=Re(),t=be(),r=function(){if(cr)return mr;cr=1;var e=function(){if(dr)return ar;dr=1;var e=be(),t=ht(),r=_e(),i=function(){if(sr)return nr;sr=1;var e=_e(),t=pr(),r=gr(),i=function(i){return function(l,o,n){var s=e(l),a=r(s);if(0===a)return!i&&-1;var d,u=t(n,a);if(i&&o!=o){for(;a>u;)if((d=s[u++])!=d)return!0}else for(;a>u;u++)if((i||u in s)&&s[u]===o)return i||u||0;return!i&&-1}};return nr={includes:i(!0),indexOf:i(!1)}}().indexOf,l=Xt(),o=e([].push);return ar=function(e,n){var s,a=r(e),d=0,u=[];for(s in a)!t(l,s)&&t(a,s)&&o(u,s);for(;n.length>d;)t(a,s=n[d++])&&(~i(u,s)||o(u,s));return u}}(),t=(hr?ur:(hr=1,ur=[\"constructor\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"toLocaleString\",\"toString\",\"valueOf\"])).concat(\"length\",\"prototype\");return mr.f=Object.getOwnPropertyNames||function(r){return e(r,t)},mr}(),i=(br||(br=1,Mr.f=Object.getOwnPropertySymbols),Mr),l=Nt(),o=t([].concat);return Cr=e(\"Reflect\",\"ownKeys\")||function(e){var t=r.f(l(e)),n=i.f;return n?o(t,n(e)):t}}function kr(){if(_r)return yr;_r=1;var e=ht(),t=Ar(),r=gt(),i=Tt();return yr=function(l,o,n){for(var s=t(o),a=i.f,d=r.f,u=0;u<s.length;u++){var h=s[u];e(l,h)||n&&e(n,h)||a(l,h,d(o,h))}}}function Ir(){if(Nr)return Rr;Nr=1;var e=p(),t=gt().f,r=Lt(),i=Gt(),l=st(),o=kr(),n=function(){if(Wr)return Sr;Wr=1;var e=R(),t=Se(),r=/#|\\.prototype\\./,i=function(r,i){var a=o[l(r)];return a===s||a!==n&&(t(i)?e(i):!!i)},l=i.normalize=function(e){return String(e).replace(r,\".\").toLowerCase()},o=i.data={},n=i.NATIVE=\"N\",s=i.POLYFILL=\"P\";return Sr=i}();return Rr=function(s,a){var d,u,h,c,m,f=s.target,p=s.global,v=s.stat;if(d=p?e:v?e[f]||l(f,{}):e[f]&&e[f].prototype)for(u in a){if(c=a[u],h=s.dontCallGetSet?(m=t(d,u))&&m.value:d[u],!n(p?u:f+(v?\".\":\"#\")+u,s.forced)&&void 0!==h){if(typeof c==typeof h)continue;o(c,h)}(s.sham||h&&h.sham)&&r(c,\"sham\",!0),i(d,u,c,s)}}}function Br(){if(xr)return Er;xr=1;var e=function(){if(Lr)return Tr;Lr=1;var e={};return e[mt()(\"toStringTag\")]=\"z\",Tr=\"[object z]\"===String(e)}(),t=Se(),r=Ce(),i=mt()(\"toStringTag\"),l=Object,o=\"Arguments\"===r(function(){return arguments}());return Er=e?r:function(e){var n,s,a;return void 0===e?\"Undefined\":null===e?\"Null\":\"string\"==typeof(s=function(e,t){try{return e[t]}catch(e){}}(n=l(e),i))?s:o?r(n):\"Object\"===(a=r(n))&&t(n.callee)?\"Arguments\":a}}function jr(){if(Pr)return zr;Pr=1;var e=Br(),t=String;return zr=function(r){if(\"Symbol\"===e(r))throw new TypeError(\"Cannot convert a Symbol value to a string\");return t(r)}}function Dr(){if(Or)return Fr;Or=1;var e=Yt(),t=Tt();return Fr=function(r,i,l){return l.get&&e(l.get,i,{getter:!0}),l.set&&e(l.set,i,{setter:!0}),t.f(r,i,l)}}!function(){if(Hr)return f;Hr=1;var e=Ir(),t=N(),r=p(),i=be(),l=ht(),o=Se(),n=Ne(),s=jr(),a=Dr(),d=kr(),u=r.Symbol,h=u&&u.prototype;if(t&&o(u)&&(!(\"description\"in h)||void 0!==u().description)){var c={},m=function(){var e=arguments.length<1||void 0===arguments[0]?void 0:s(arguments[0]),t=n(h,this)?new u(e):void 0===e?u():u(e);return\"\"===e&&(c[t]=!0),t};d(m,u),m.prototype=h,h.constructor=m;var v=\"Symbol(description detection)\"===String(u(\"description detection\")),g=i(h.valueOf),b=i(h.toString),C=/^Symbol\\((.*)\\)[^)]+$/,w=i(\"\".replace),y=i(\"\".slice);a(h,\"description\",{configurable:!0,get:function(){var e=g(this);if(l(c,e))return\"\";var t=b(e),r=v?y(t,7,-1):w(t,C,\"$1\");return\"\"===r?void 0:r}}),e({global:!0,constructor:!0,forced:!0},{Symbol:m})}}();var Vr,$r,Ur,qr,Xr,Yr,Gr,Jr,Kr,Qr,Zr,ei,ti,ri,ii,li={};function oi(){if($r)return Vr;$r=1;var e=Pe(),t=TypeError;return Vr=function(r,i){if(!delete r[i])throw new t(\"Cannot delete property \"+e(i)+\" of \"+e(r))}}function ni(){if(qr)return Ur;qr=1;var e=be();return Ur=e([].slice)}function si(){if(Jr)return Gr;Jr=1;var e=R();return Gr=function(t,r){var i=[][t];return!!i&&e(function(){i.call(null,r||function(){return 1},1)})}}!function(){if(ii)return li;ii=1;var e=Ir(),t=be(),r=Fe(),i=ut(),l=gr(),o=oi(),n=jr(),s=R(),a=function(){if(Yr)return Xr;Yr=1;var e=ni(),t=Math.floor,r=function(i,l){var o=i.length;if(o<8)for(var n,s,a=1;a<o;){for(s=a,n=i[a];s&&l(i[s-1],n)>0;)i[s]=i[--s];s!==a++&&(i[s]=n)}else for(var d=t(o/2),u=r(e(i,0,d),l),h=r(e(i,d),l),c=u.length,m=h.length,f=0,p=0;f<c||p<m;)i[f+p]=f<c&&p<m?l(u[f],h[p])<=0?u[f++]:h[p++]:f<c?u[f++]:h[p++];return i};return Xr=r}(),d=si(),u=function(){if(Qr)return Kr;Qr=1;var e=Te().match(/firefox\\/(\\d+)/i);return Kr=!!e&&+e[1]}(),h=function(){if(ei)return Zr;ei=1;var e=Te();return Zr=/MSIE|Trident/.test(e)}(),c=Le(),m=function(){if(ri)return ti;ri=1;var e=Te().match(/AppleWebKit\\/(\\d+)\\./);return ti=!!e&&+e[1]}(),f=[],p=t(f.sort),v=t(f.push),g=s(function(){f.sort(void 0)}),b=s(function(){f.sort(null)}),C=d(\"sort\"),w=!s(function(){if(c)return c<70;if(!(u&&u>3)){if(h)return!0;if(m)return m<603;var e,t,r,i,l=\"\";for(e=65;e<76;e++){switch(t=String.fromCharCode(e),e){case 66:case 69:case 70:case 72:r=3;break;case 68:case 71:r=4;break;default:r=2}for(i=0;i<47;i++)f.push({k:t+i,v:r})}for(f.sort(function(e,t){return t.v-e.v}),i=0;i<f.length;i++)t=f[i].k.charAt(0),l.charAt(l.length-1)!==t&&(l+=t);return\"DGBEFHACIJK\"!==l}});e({target:\"Array\",proto:!0,forced:g||!b||!C||!w},{sort:function(e){void 0!==e&&r(e);var t=i(this);if(w)return void 0===e?p(t):p(t,e);var s,d,u=[],h=l(t);for(d=0;d<h;d++)d in t&&v(u,t[d]);for(a(u,function(e){return function(t,r){return void 0===r?-1:void 0===t?1:void 0!==e?+e(t,r)||0:n(t)>n(r)?1:-1}}(e)),s=l(u),d=0;d<s;)t[d]=u[d++];for(;d<h;)o(t,d++);return t}})}();const ai=function(e,t){for(let r=0,i=e.length;r>=0&&r<i;r+=1)if(t(e[r],r,e))return e[r]},di=function(e){return e.replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\").replace(/'/g,\"&#39;\").replace(/\"/g,\"&quot;\").replace(/\\n/g,\"<br />\")};function ui(){let e=[];return Object.assign(e,ui.prototype),e.initialize.apply(e,arguments),e}ui.prototype=[],ui.prototype.initialize=function(e){e=e||{},this.sortColumn=null==e.sortColumn?[]:e.sortColumn},ui.prototype.add=function(e,t){let r,i;if(\"splice\"in e&&\"length\"in e)if(\"number\"==typeof t)for(r=0,i=e.length;r<i;r++)this.splice(t++,0,e[r]);else for(r=0,i=e.length;r<i;r++)this.push(e[r]);else\"number\"==typeof t?this.splice(t,0,e):this.push(e)},ui.prototype.reset=function(e){this.length=0,e&&this.add(e)},ui.prototype.filteredCollection=function(e,t){if(e&&t){let r=new ui({sortColumn:this.sortColumn,onComparatorRequired:this.onComparatorRequired,customSortingProvider:this.customSortingProvider});for(let i,l=0,o=this.length;l<o;l++)i=this[l],e(i,t)&&(i.__i=l,r.push(i));return r}return null},ui.prototype.onComparatorRequired=null,ui.prototype.customSortingProvider=null;let hi=ui.prototype.sort;function ci(e,t){let r=e.column,i=e.comparePath||r;\"string\"==typeof i&&(i=i.split(\".\"));let l,o=i.length,n=o>1,s=t?1:-1,a=t?-1:1;return function(e,t){let r=e[i[0]],d=t[i[0]];if(n)for(l=1;l<o;l++)r=r&&r[i[l]],d=d&&d[i[l]];return r===d?0:null==r?s:null==d?a:r<d?s:a}}function mi(){let e=[];return Object.assign(e,mi.prototype),e.initialize.apply(e,arguments),e}ui.prototype.sort=function(){let e;if(this.sortColumn.length){let t=[];for(let r=0;r<this.sortColumn.length;r++){e=null;const i=ci(this.sortColumn[r],this.sortColumn[r].descending);this.onComparatorRequired&&(e=this.onComparatorRequired(this.sortColumn[r].column,this.sortColumn[r].descending,i)),e||(e=i),t.push(e.bind(this))}if(1===t.length)e=t[0];else{let r,i=t.length;e=function(e,l){for(let o=0;o<i;o++)if(r=t[o](e,l),0!==r)return r;return r}}const r=t=>hi.call(t,e);if(this.customSortingProvider){let e=this.customSortingProvider(this,r);e!==this&&this.splice(0,this.length,...e)}else r(this)}return e},mi.prototype=[],mi.prototype.initialize=function(){},mi.prototype.get=function(e){for(let t=0,r=this.length;t<r;t++)if(this[t].name===e)return this[t];return null},mi.prototype.indexOf=function(e){for(let t=0,r=this.length;t<r;t++)if(this[t].name===e)return t;return-1},mi.prototype.getByOrder=function(e){for(let t=0,r=this.length;t<r;t++)if(this[t].order===e)return this[t];return null},mi.prototype.normalizeOrder=function(){let e,t=[];for(e=0;e<this.length;e++)t.push(this[e]);for(t.sort(function(e,t){return e.order<t.order?-1:e.order>t.order?1:0}),e=0;e<t.length;e++)t[e].order=e;return this},mi.prototype.getColumns=function(){let e=[];for(let t,r=0;r<this.length;r++)t=this[r],e.push(t);return e.sort((e,t)=>e.order<t.order?-1:e.order>t.order?1:0),e},mi.prototype.getVisibleColumns=function(){let e=[];for(let t,r=0;r<this.length;r++)t=this[r],t.visible&&e.push(t);return e.sort((e,t)=>e.order<t.order?-1:e.order>t.order?1:0),e},mi.prototype.getMaxOrder=function(){let e=0;for(let t,r=0;r<this.length;r++)t=this[r],t.order>e&&(e=t.order);return e},mi.prototype.moveColumn=function(e,t){if(e&&t){let r,i,l=e.order,o=t.order;if(l<o)for(r=l+1;r<=o;r++)i=this.getByOrder(r),i.order--;else for(r=l-1;r>=o;r--)i=this.getByOrder(r),i.order++;e.order=o}return this};class fi{static saveSelection(e){let t=window.getSelection().getRangeAt(0);if(e!==t.commonAncestorContainer&&!function(e,t){for(;(e=e.parentNode)&&e!==t;);return!!e}(t.commonAncestorContainer,e))return null;let r=t.cloneRange();r.selectNodeContents(e),r.setEnd(t.startContainer,t.startOffset);let i=r.toString().length;return{start:i,end:i+t.toString().length}}static restoreSelection(e,t){let r,i=0,l=[e],o=!1,n=!1,s=document.createRange();for(s.setStart(e,0),s.collapse(!0);!n&&(r=l.pop());)if(3===r.nodeType){let e=i+r.length;!o&&t.start>=i&&t.start<=e&&(s.setStart(r,t.start-i),o=!0),o&&t.end>=i&&t.end<=e&&(s.setEnd(r,t.end-i),n=!0),i=e}else{let e=r.childNodes.length;for(;e--;)l.push(r.childNodes[e])}let a=window.getSelection();a.removeAllRanges(),a.addRange(s)}}function pi(e,t){let r=t.column,i=null==t.keyword?\"\":t.keyword.toString();if(!i||!r)return!0;let l=e[r];return null!=l&&(l=l.toString(),t.caseSensitive||(l=l.toLowerCase(),i=i.toLowerCase()),-1!==l.indexOf(i))}const vi=Array.prototype.indexOf;let gi=document.createElement.bind(document);const bi=Object.prototype.hasOwnProperty,Ci=Symbol(\"safe\"),wi=Symbol(\"hover_in\"),yi=Symbol(\"hover_out\"),_i=Symbol(\"row_click\"),Si=Symbol(\"preview_cell\"),Wi=Symbol(\"cell\");function Ri(e){[\"relative\",\"absolute\",\"fixed\"].includes(getComputedStyle(e).position)||(e.style.position=\"relative\")}const Ni=e=>/^(?:INPUT|TEXTAREA|BUTTON|SELECT)$/.test(e.target.tagName);class Ti{constructor(e){this._init(e),this.VERSION=Ti.VERSION}_init(e){e=e||{};let t=this._o={},r=this._p={eventsSink:new u,mitt:{all:i=i||new Map,on:function(e,t){var r=i.get(e);r?r.push(t):i.set(e,[t])},off:function(e,t){var r=i.get(e);r&&(t?r.splice(r.indexOf(t)>>>0,1):i.set(e,[]))},emit:function(e,t){var r=i.get(e);r&&r.slice().map(function(e){e(t)}),(r=i.get(\"*\"))&&r.slice().map(function(r){r(e,t)})}},tableSkeletonNeedsRendering:!0};var i;this.el=e.el&&e.el instanceof Element?e.el:document.createElement(\"div\"),this.el!==e.el&&this.el.classList.add(e.className||\"dgtable-wrapper\"),r.eventsSink.add(this.el,\"dragend.colresize\",this._onEndDragColumnHeader.bind(this)),t.virtualTable=void 0===e.virtualTable||!!e.virtualTable,t.estimatedRowHeight=e.estimatedRowHeight||void 0,t.rowsBufferSize=e.rowsBufferSize||3,t.minColumnWidth=Math.max(e.minColumnWidth||35,0),t.resizeAreaWidth=e.resizeAreaWidth||8,t.resizableColumns=void 0===e.resizableColumns||!!e.resizableColumns,t.movableColumns=void 0===e.movableColumns||!!e.movableColumns,t.sortableColumns=void 0===e.sortableColumns?1:parseInt(e.sortableColumns,10)||1,t.adjustColumnWidthForSortArrow=void 0===e.adjustColumnWidthForSortArrow||!!e.adjustColumnWidthForSortArrow,t.convertColumnWidthsToRelative=void 0!==e.convertColumnWidthsToRelative&&!!e.convertColumnWidthsToRelative,t.autoFillTableWidth=void 0!==e.autoFillTableWidth&&!!e.autoFillTableWidth,t.allowCancelSort=void 0===e.allowCancelSort||!!e.allowCancelSort,t.cellClasses=void 0===e.cellClasses?\"\":e.cellClasses,t.resizerClassName=void 0===e.resizerClassName?\"dgtable-resize\":e.resizerClassName,t.tableClassName=void 0===e.tableClassName?\"dgtable\":e.tableClassName,t.allowCellPreview=void 0===e.allowCellPreview||e.allowCellPreview,t.allowHeaderCellPreview=void 0===e.allowHeaderCellPreview||e.allowHeaderCellPreview,t.cellPreviewClassName=void 0===e.cellPreviewClassName?\"dgtable-cell-preview\":e.cellPreviewClassName,t.cellPreviewAutoBackground=void 0===e.cellPreviewAutoBackground||e.cellPreviewAutoBackground,t.onComparatorRequired=void 0===e.onComparatorRequired?null:e.onComparatorRequired,t.onComparatorRequired||\"function\"!=typeof e.comparatorCallback||(t.onComparatorRequired=e.comparatorCallback),t.customSortingProvider=void 0===e.customSortingProvider?null:e.customSortingProvider,t.width=void 0===e.width?Ti.Width.NONE:e.width,t.relativeWidthGrowsToFillWidth=void 0===e.relativeWidthGrowsToFillWidth||!!e.relativeWidthGrowsToFillWidth,t.relativeWidthShrinksToFillWidth=void 0!==e.relativeWidthShrinksToFillWidth&&!!e.relativeWidthShrinksToFillWidth,this.setCellFormatter(e.cellFormatter),this.setHeaderCellFormatter(e.headerCellFormatter),this.setFilter(e.filter),t.height=e.height,this.setColumns(e.columns||[],!1);let l=[];if(e.sortColumn){let t=e.sortColumn;if(t&&!Array.isArray(t)&&(t=[t]),t)for(let e=0,i=t.length;e<i;e++){let i=t[e];\"string\"==typeof i&&(i={column:i,descending:!1});let o=r.columns.get(i.column);o&&l.push({column:i.column,comparePath:o.comparePath||o.dataPath,descending:i.descending})}}r.rows=new ui({sortColumn:l}),r.rows.onComparatorRequired=(e,r,i)=>{if(t.onComparatorRequired)return t.onComparatorRequired(e,r,i)},r.rows.customSortingProvider=(e,r)=>t.customSortingProvider?t.customSortingProvider(e,r):r(e),r.filteredRows=null,r.scrollbarWidth=0,r.lastVirtualScrollHeight=0,this._setupHovers()}_setupHovers(){const e=this._p;let t=e=>{let t=e.currentTarget,r=e.relatedTarget;r===t||t.contains(r)||t[Si]&&(r===t[Si]||t[Si].contains(r))||this._cellMouseOverEvent(t)},r=e=>{let t=e.currentTarget[Wi]||e.currentTarget,r=e.relatedTarget;r===this||t.contains(r)||t[Si]&&(r===t[Si]||t[Si].contains(r))||this._cellMouseOutEvent(t)};e._bindCellHoverIn=e=>{e[wi]||e.addEventListener(\"mouseover\",e[wi]=t)},e._unbindCellHoverIn=e=>{e[wi]&&(e.removeEventListener(\"mouseover\",e[wi]),e[wi]=null)},e._bindCellHoverOut=e=>{e[yi]||e.addEventListener(\"mouseout\",e[yi]=r)},e._unbindCellHoverOut=e=>{e[yi]&&(e.removeEventListener(\"mouseout\",e[yi]),e[yi]=null)}}_setupVirtualTable(){var e;const t=this._p,r=this._o,i=r.tableClassName,l=i+\"-row\",o=i+\"-row-alt\",n=i+\"-cell\";let s=t.visibleColumns,a=s.length;t.notifyRendererOfColumnsConfig=()=>{s=t.visibleColumns,a=s.length;for(let e,t=0;t<a;t++)e=s[t],e._finalWidth=e.actualWidthConsideringScrollbarWidth||e.actualWidth},t.virtualListHelper=new d({list:t.table,itemsParent:t.tbody,autoVirtualWrapperWidth:!1,virtual:r.virtualTable,buffer:r.rowsBufferSize,estimatedItemHeight:r.estimatedRowHeight?r.estimatedRowHeight:t.virtualRowHeight||40,itemElementCreatorFn:()=>gi(\"div\"),onItemRender:(e,i)=>{const d=t.filteredRows||t.rows,u=!!t.filteredRows,h=r.allowCellPreview;e.className=l,i%2==1&&(e.className+=\" \"+o);let c=d[i],m=u?c.__i:i;e.vIndex=i,e.index=m;for(let r=0;r<a;r++){let i=s[r],l=gi(\"div\");l.columnName=i.name,l.setAttribute(\"data-column\",i.name),l.className=n,l.style.width=i._finalWidth+\"px\",i.cellClasses&&(l.className+=\" \"+i.cellClasses),h&&t._bindCellHoverIn(l),l.appendChild(gi(\"div\")).innerHTML=this._getHtmlForCell(c,i),e.appendChild(l)}e.addEventListener(\"click\",e[_i]=t=>{this.emit(\"rowclick\",{event:t,filteredRowIndex:i,rowIndex:m,rowEl:e,rowData:c})}),this.emit(\"rowcreate\",{filteredRowIndex:i,rowIndex:m,rowEl:e,rowData:c})},onItemUnrender:e=>{e[_i]&&e.removeEventListener(\"click\",e[_i]),this._unbindCellEventsForRow(e),this.emit(\"rowdestroy\",e)},onScrollHeightChange:e=>{e>t._lastVirtualScrollHeight&&!t.scrollbarWidth&&this._updateLastCellWidthFromScrollbar(),t._lastVirtualScrollHeight=e}}),t.virtualListHelper.setCount((null!==(e=t.filteredRows)&&void 0!==e?e:t.rows).length),t.notifyRendererOfColumnsConfig()}trigger(e){const t=this._p;if(!t)return;let r=t.events;if(bi.call(r,e)){let t=r[e];for(let e=0;e<t.length;e++){let r=t[e];r.once&&t.splice(e--,1),r.cb.apply(this,Array.prototype.slice.call(arguments,1))}}return this}on(e,t){return this._p.mitt.on(e,t),this}once(e,t){let r=i=>{this._p.mitt.off(e,r),t(i)};return this._p.mitt.on(e,r),this}off(e,t){return e||e?this._p.mitt.off(e,t):this._p.mitt.all.clear(),this}emit(e,t){return this._p.mitt.emit(e,t),this}_parseColumnWidth(e,t){let r=Math.max(0,parseFloat(e)),i=Li.AUTO;return r>0&&(e===r+\"%\"?(i=Li.RELATIVE,r/=100):r>0&&r<1?i=Li.RELATIVE:(r<t&&(r=t),i=Li.ABSOLUTE)),{width:r,mode:i}}_initColumnFromData(e){let t=this._parseColumnWidth(e.width,e.ignoreMin?0:this._o.minColumnWidth),r={name:e.name,label:void 0===e.label?e.name:e.label,width:t.width,widthMode:t.mode,resizable:void 0===e.resizable||e.resizable,sortable:void 0===e.sortable||e.sortable,movable:void 0===e.movable||e.movable,visible:void 0===e.visible||e.visible,cellClasses:void 0===e.cellClasses?this._o.cellClasses:e.cellClasses,ignoreMin:void 0!==e.ignoreMin&&!!e.ignoreMin};return r.dataPath=void 0===e.dataPath?r.name:e.dataPath,r.comparePath=void 0===e.comparePath?r.dataPath:e.comparePath,\"string\"==typeof r.dataPath&&(r.dataPath=r.dataPath.split(\".\")),\"string\"==typeof r.comparePath&&(r.comparePath=r.comparePath.split(\".\")),r}destroy(){var e,t,r;let i=this._p||{},l=this.el;if(this.__removed)return this;if(i.resizer&&(i.resizer.remove(),i.resizer=null),null===(e=i.virtualListHelper)||void 0===e||e.destroy(),i.virtualListHelper=null,this._destroyHeaderCells(),null===(t=i.table)||void 0===t||t.remove(),null===(r=i.tbody)||void 0===r||r.remove(),i.workerListeners){for(let e=0;e<i.workerListeners.length;e++){let t=i.workerListeners[e];t.worker.removeEventListener(\"message\",t.listener,!1)}i.workerListeners.length=0}i.rows.length=i.columns.length=0,i._deferredRender&&clearTimeout(i._deferredRender);for(let e in this)bi.call(this,e)&&(this[e]=null);return this.__removed=!0,l&&l.remove(),this}close(){this.destroy()}remove(){this.destroy()}_unbindCellEventsForTable(){const e=this._p;if(e.headerRow)for(let t=0,r=e.headerRow.childNodes,i=r.length;t<i;t++)for(let i=0,l=r[t].childNodes,o=l.length;i<o;i++)e._unbindCellHoverIn(l[i]);return this}_unbindCellEventsForRow(e){const t=this._p;for(let r=0,i=e.childNodes,l=i.length;r<l;r++)t._unbindCellHoverIn(i[r]);return this}render(){const r=this._o,i=this._p;if(!this.el.offsetParent)return i._deferredRender||(i._deferredRender=setTimeout(()=>{i._deferredRender=null,!this.__removed&&this.el.offsetParent&&this.render()})),this;if(!0===i.tableSkeletonNeedsRendering){var l;i.tableSkeletonNeedsRendering=!1,r.width===Ti.Width.AUTO&&this._clearSortArrows();let o=i.table&&i.table.parentNode?i.table.scrollTop:NaN,n=i.table&&i.table.parentNode?e(i.table):NaN;this._renderSkeletonBase()._renderSkeletonBody().tableWidthChanged(!0,!1)._renderSkeletonHeaderCells(),i.virtualListHelper.setCount((null!==(l=i.filteredRows)&&void 0!==l?l:i.rows).length),this._updateVirtualHeight(),this._updateLastCellWidthFromScrollbar(!0),this._updateTableWidth(!0);for(let e=0;e<i.rows.sortColumn.length;e++)this._showSortArrow(i.rows.sortColumn[e].column,i.rows.sortColumn[e].descending);r.adjustColumnWidthForSortArrow&&i.rows.sortColumn.length?this.tableWidthChanged(!0):r.virtualTable||this.tableWidthChanged(),isNaN(o)||(i.table.scrollTop=o),isNaN(n)||(t(i.table,n),t(i.header,n)),this.emit(\"renderskeleton\")}return i.virtualListHelper.render(),this.emit(\"render\"),this}clearAndRender(e){var t;let r=this._p;return r.tableSkeletonNeedsRendering=!0,null===(t=r.notifyRendererOfColumnsConfig)||void 0===t||t.call(r),(void 0===e||e)&&this.render(),this}_calculateTbodyWidth(){const e=this._p;let t=this._o.tableClassName,l=t+\"-row\",o=t+\"-cell\",n=e.visibleColumns,s=n.length;const a=gi(\"div\");a.className=l,a.style.float=\"left\";let d=0;for(let e=0;e<s;e++){const t=n[e],r=gi(\"div\");r.className=o,r.style.width=t.actualWidth+\"px\",t.cellClasses&&(r.className+=\" \"+t.cellClasses),r.appendChild(gi(\"div\")),a.appendChild(r),d+=t.actualWidth}const u=gi(\"div\");u.className=this.el.className,r(u,{\"z-index\":-1,position:\"absolute\",left:\"0\",top:\"-9999px\",float:\"left\",width:\"1px\",overflow:\"hidden\"});const h=gi(\"div\");h.className=t,u.appendChild(h);const c=gi(\"div\");c.className=t+\"-body\",c.style.width=d+1e4+\"px\",h.appendChild(c),c.appendChild(a),document.body.appendChild(u);const m=gi(\"div\");r(m,{border:\"1.5px solid #000\",width:\"0\",height:\"0\",position:\"absolute\",left:\"0\",top:\"-9999px\"}),document.body.appendChild(m);let f=parseFloat(getComputedStyle(m).borderWidth),p=Math.round(f)!==f;m.remove();let v=i(a,!0,!0,!0);return v-=e.scrollbarWidth||0,p&&v++,u.remove(),v}setColumns(e,t){const r=this._p;e=e||[];let i=new mi;for(let t=0,r=0;t<e.length;t++){let l=e[t],o=this._initColumnFromData(l);void 0!==l.order?(l.order>r&&(r=l.order+1),o.order=l.order):o.order=r++,i.push(o)}return i.normalizeOrder(),r.columns=i,r.visibleColumns=i.getVisibleColumns(),this._ensureVisibleColumns().clearAndRender(t),this}addColumn(e,t,r){const i=this._p;let l=i.columns;if(e&&!l.get(e.name)){let o=null;void 0!==t&&(o=l.get(t)||l.getByOrder(t));let n=this._initColumnFromData(e);n.order=o?o.order:l.getMaxOrder()+1;for(let e=l.getMaxOrder(),t=n.order;e>=t;e--){let t=l.getByOrder(e);t&&t.order++}l.push(n),l.normalizeOrder(),i.visibleColumns=l.getVisibleColumns(),this._ensureVisibleColumns().clearAndRender(r),this.emit(\"addcolumn\",n.name)}return this}removeColumn(e,t){const r=this._p;let i=r.columns,l=i.indexOf(e);return l>-1&&(i.splice(l,1),i.normalizeOrder(),r.visibleColumns=i.getVisibleColumns(),this._ensureVisibleColumns().clearAndRender(t),this.emit(\"removecolumn\",e)),this}setCellFormatter(e){return e||((e=e=>\"string\"==typeof e?di(e):e)[Ci]=!0),this._o.cellFormatter=e,this}setHeaderCellFormatter(e){return this._o.headerCellFormatter=e||function(e){return\"string\"==typeof e?di(e):e},this}setFilter(e){return this._o.filter=e,this}filter(e){const t=this._p;let r=this._o.filter||pi;\"string\"==typeof arguments[0]&&\"string\"==typeof arguments[1]&&(e={column:arguments[0],keyword:arguments[1],caseSensitive:arguments[2]});let i=!!t.filteredRows;return t.filteredRows&&(t.filteredRows=null),t.filterArgs=null==e?null:\"object\"!=typeof e||Array.isArray(e)?e:Object.assign({},e),null!==t.filterArgs?(t.filteredRows=t.rows.filteredCollection(r,t.filterArgs),(i||t.filteredRows)&&(this.clearAndRender(),this.emit(\"filter\",e))):(t.filterArgs=null,t.filteredRows=null,this.clearAndRender(),this.emit(\"filterclear\",{})),this}clearFilter(){const e=this._p;return e.filteredRows&&(e.filterArgs=null,e.filteredRows=null,this.clearAndRender(),this.emit(\"filterclear\",{})),this}_refilter(){const e=this._p;if(e.filteredRows&&e.filterArgs){let t=this._o.filter||pi;e.filteredRows=e.rows.filteredCollection(t,e.filterArgs)}return this}setColumnLabel(e,t){let r=this._p.columns.get(e);if(r&&(r.label=void 0===t?r.name:t,r.element))for(let e=0;e<r.element.firstChild.childNodes.length;e++){let t=r.element.firstChild.childNodes[e];if(3===t.nodeType){t.textContent=r.label;break}}return this}moveColumn(e,t,r=!0){const i=this._o,l=this._p;let o,n,a=l.columns,d=r?l.visibleColumns:a.getColumns();if(\"string\"==typeof e?o=a.get(e):\"number\"==typeof e&&(o=d[e]),\"string\"==typeof t?n=a.get(t):\"number\"==typeof t&&(n=d[t]),o&&n&&e!==t){let e=o.order,t=n.order,r=a.moveColumn(o,n).getVisibleColumns();if(l.visibleColumns.length!==r.length||l.visibleColumns.some((e,t)=>e!==r[t]))if(l.visibleColumns=r,this._ensureVisibleColumns(),i.virtualTable)this.clearAndRender();else{const r=s(l.headerRow,`>div.${i.tableClassName}-header-cell`);let o=e<t?t+1:t,n=e;r[0].parentNode.insertBefore(r[n],r[o]);let a=l.visibleColumns[e];a=(a.actualWidthConsideringScrollbarWidth||a.actualWidth)+\"px\";let d=l.visibleColumns[t];d=(d.actualWidthConsideringScrollbarWidth||d.actualWidth)+\"px\";let u=l.tbody.childNodes;for(let r=0,i=u.length;r<i;r++){let i=u[r];1===i.nodeType&&(i.insertBefore(i.childNodes[n],i.childNodes[o]),i.childNodes[t].firstChild.style.width=d,i.childNodes[e].firstChild.style.width=a)}}this.emit(\"movecolumn\",{name:o.name,src:e,dest:t})}return this}sort(e,t,r){const i=this._o,l=this._p;let o,n=l.columns.get(e),s=l.rows.sortColumn;if(n){if(r){for(let e=0;e<s.length;e++)if(s[e].column===n.name){e<s.length-1?s.length=0:(t=s[s.length-1].descending,s.splice(s.length-1,1));break}(i.sortableColumns>0&&s.length>=i.sortableColumns||s.length>=l.visibleColumns.length)&&(s.length=0)}else s.length=0;t=void 0!==t&&t,s.push({column:n.name,comparePath:n.comparePath||n.dataPath,descending:!!t})}else s.length=0;this._clearSortArrows();for(let e=0;e<s.length;e++)this._showSortArrow(s[e].column,s[e].descending);i.adjustColumnWidthForSortArrow&&!l.tableSkeletonNeedsRendering&&this.tableWidthChanged(!0),l.rows.sortColumn=s,s.length&&(o=l.rows.sort(!!l.filteredRows),l.filteredRows&&l.filteredRows.sort(!!l.filteredRows)),l.virtualListHelper&&l.virtualListHelper.invalidate().render();let a=[];for(let e=0;e<s.length;e++)a.push({column:s[e].column,descending:s[e].descending});return this.emit(\"sort\",{sorts:a,comparator:o}),this}resort(){const e=this._p;let t=e.columns,r=e.rows.sortColumn;if(r.length){for(let e=0;e<r.length;e++)t.get(r[e].column)||r.splice(e--,1);let i;e.rows.sortColumn=r,r.length&&(i=e.rows.sort(!!e.filteredRows),e.filteredRows&&e.filteredRows.sort(!!e.filteredRows));let l=[];for(let e=0;e<r.length;e++)l.push({column:r[e].column,descending:r[e].descending});this.emit(\"sort\",{sorts:l,resort:!0,comparator:i})}return this}_ensureVisibleColumns(){const e=this._p;return 0===e.visibleColumns.length&&e.columns.length&&(e.columns[0].visible=!0,e.visibleColumns.push(e.columns[0]),this.emit(\"showcolumn\",e.columns[0].name)),this}setColumnVisible(e,t){const r=this._p;let i=r.columns.get(e);return t=!!t,i&&!!i.visible!==t&&(i.visible=t,r.visibleColumns=r.columns.getVisibleColumns(),this.emit(t?\"showcolumn\":\"hidecolumn\",e),this._ensureVisibleColumns(),this.clearAndRender()),this}isColumnVisible(e){let t=this._p.columns.get(e);return!!t&&t.visible}setMinColumnWidth(e){let t=this._o;return e=Math.max(e,0),t.minColumnWidth!==e&&(t.minColumnWidth=e,this.tableWidthChanged(!0)),this}getMinColumnWidth(){return this._o.minColumnWidth}setSortableColumns(e){const t=this._p,r=this._o;if(r.sortableColumns!==e&&(r.sortableColumns=e,t.table)){const e=s(t.headerRow,`>div.${r.tableClassName}-header-cell`);for(let i=0,l=e.length;i<l;i++)e[i].classList[r.sortableColumns>0&&t.visibleColumns[i].sortable?\"add\":\"remove\"](\"sortable\")}return this}getSortableColumns(){return this._o.sortableColumns}setMovableColumns(e){let t=this._o;return e=void 0===e||!!e,t.movableColumns!==e&&(t.movableColumns=e),this}getMovableColumns(){return this._o.movableColumns}setResizableColumns(e){let t=this._o;return e=void 0===e||!!e,t.resizableColumns!==e&&(t.resizableColumns=e),this}getResizableColumns(){return this._o.resizableColumns}setOnComparatorRequired(e){let t=this._o;return t.onComparatorRequired!==e&&(t.onComparatorRequired=e),this}setComparatorCallback(e){return this.setOnComparatorRequired(e)}setCustomSortingProvider(e){let t=this._o;return t.customSortingProvider!==e&&(t.customSortingProvider=e),this}setColumnWidth(e,t){let r=this._p.columns.get(e),i=this._parseColumnWidth(t,r.ignoreMin?0:this._o.minColumnWidth);if(r){let e=this._serializeColumnWidth(r);r.width=i.width,r.widthMode=i.mode;let t=this._serializeColumnWidth(r);e!==t&&this.tableWidthChanged(!0),this.emit(\"columnwidth\",{name:r.name,width:t,oldWidth:e})}return this}getColumnWidth(e){let t=this._p.columns.get(e);return t?this._serializeColumnWidth(t):null}getColumnConfig(e){let t=this._p.columns.get(e);return t?{order:t.order,width:this._serializeColumnWidth(t),visible:t.visible,label:t.label}:null}getColumnsConfig(){const e=this._p;let t={};for(let r=0;r<e.columns.length;r++)t[e.columns[r].name]=this.getColumnConfig(e.columns[r].name);return t}getSortedColumns(){const e=this._p;let t=[];for(let r=0;r<e.rows.sortColumn.length;r++){let i=e.rows.sortColumn[r];t.push({column:i.column,descending:i.descending})}return t}getHtmlForRowCell(e,t){const r=this._p;if(e<0||e>r.rows.length-1)return null;let i=r.columns.get(t);if(!i)return null;let l=r.rows[e];return this._getHtmlForCell(l,i)}getHtmlForRowDataCell(e,t){let r=this._p.columns.get(t);return r?this._getHtmlForCell(e,r):null}_getHtmlForCell(e,t){let r=t.dataPath,i=e[r[0]];for(let e=1;e<r.length&&null!=i;e++)i=i&&i[r[e]];const l=this._o.cellFormatter;let o;if(l[Ci])o=l(i,t.name,e);else try{o=l(i,t.name,e)}catch(e){o=\"[ERROR]\",console.error(\"Failed to generate content for cell \"+t.name,e)}return null==o&&(o=\"\"),o}getRowYPos(e){return this._p.virtualListHelper.getItemPosition(e)||null}getDataForRow(e){const t=this._p;return e<0||e>t.rows.length-1?null:t.rows[e]}getRowCount(){const e=this._p;return e.rows?e.rows.length:0}getIndexForRow(e){return this._p.rows.indexOf(e)}getFilteredRowCount(){const e=this._p;return(e.filteredRows||e.rows).length}getIndexForFilteredRow(e){const t=this._p;return(t.filteredRows||t.rows).indexOf(e)}getDataForFilteredRow(e){const t=this._p;return e<0||e>(t.filteredRows||t.rows).length-1?null:(t.filteredRows||t.rows)[e]}getHeaderRowElement(){return this._p.headerRow}_horizontalPadding(e){const t=getComputedStyle(e);return(parseFloat(t.paddingLeft)||0)+(parseFloat(t.paddingRight)||0)}_horizontalBorderWidth(e){const t=getComputedStyle(e);return(parseFloat(t.borderLeftWidth)||0)+(parseFloat(t.borderRightWidth)||0)}_calculateWidthAvailableForColumns(){const e=this._o,t=this._p;let l,o,n;t.table&&(o=t.table?t.table.scrollTop:0,n=t.table?t.table.scrollLeft:0,e.virtualTable&&(l=t.table.style.display,t.table.style.display=\"none\"));let a=i(this.el);t.table&&(e.virtualTable&&(t.table.style.display=l),t.table.scrollTop=o,t.table.scrollLeft=n,t.header.scrollLeft=n);let d=e.tableClassName;const u=gi(\"div\");u.className=this.el.className,r(u,{\"z-index\":-1,position:\"absolute\",left:\"0\",top:\"-9999px\"});let h=gi(\"div\");h.className=`${d}-header`,u.appendChild(h);let c=gi(\"div\");c.index=null,c.vIndex=null,c.className=`${d}-header-row`,h.appendChild(c);for(let e=0;e<t.visibleColumns.length;e++){const r=t.visibleColumns[e],i=gi(\"div\");i.className=`${d}-header-cell ${r.cellClasses||\"\"}`,i.columnName=r.name,i.appendChild(gi(\"div\")),c.appendChild(i)}document.body.appendChild(u),a-=this._horizontalBorderWidth(c);let m=s(c,`>div.${d}-header-cell`);for(const e of m){const r=getComputedStyle(e);if(\"border-box\"!==r.boxSizing){a-=(parseFloat(r.borderRightWidth)||0)+(parseFloat(r.borderLeftWidth)||0)+this._horizontalPadding(e);const i=e.columnName,l=t.columns.get(i);l&&(a-=l.arrowProposedWidth||0)}}return u.remove(),Math.max(0,a)}_getTextWidth(e){let t=this._o.tableClassName;const l=gi(\"div\");l.className=this.el.className;const o=gi(\"div\");o.className=t+\"-header\";const n=gi(\"div\");n.className=t+\"-header-row\";const s=gi(\"div\");s.className=t+\"-header-cell\";const a=gi(\"div\");a.textContent=e,s.appendChild(a),n.appendChild(s),o.appendChild(n),l.appendChild(o),r(l,{position:\"absolute\",top:\"-9999px\",visibility:\"hidden\"}),document.body.appendChild(l);let d=i(s);return l.remove(),d}tableWidthChanged(e,t){let r=this._o,i=this._p,l=this._calculateWidthAvailableForColumns(),o=l,n=0;if(!i.table)return this;t=void 0===t||t;let s=0;if(i.tbody||(t=!1),t&&(s=parseFloat(i.tbody.style.minWidth)||0),o!==i.lastDetectedWidth||e){var a;i.lastDetectedWidth=l;let e=0,d=[],u=0;for(let e=0;e<i.columns.length;e++)i.columns[e].actualWidthConsideringScrollbarWidth=null;for(let t=0;t<i.visibleColumns.length;t++){let l=i.visibleColumns[t];if(l.widthMode===Li.ABSOLUTE){let i=l.width;i+=l.arrowProposedWidth||0,!l.ignoreMin&&i<r.minColumnWidth&&(i=r.minColumnWidth),o-=i,e+=i,i!==l.actualWidth&&(l.actualWidth=i,d.push(t))}else if(l.widthMode===Li.AUTO){let i=this._getTextWidth(l.label)+20;i+=l.arrowProposedWidth||0,!l.ignoreMin&&i<r.minColumnWidth&&(i=r.minColumnWidth),o-=i,e+=i,i!==l.actualWidth&&(l.actualWidth=i,r.convertColumnWidthsToRelative||d.push(t))}else l.widthMode===Li.RELATIVE&&(u+=l.width,n++)}if(r.convertColumnWidthsToRelative)for(let t=0;t<i.visibleColumns.length;t++){let r=i.visibleColumns[t];r.widthMode===Li.AUTO&&(r.widthMode=Li.RELATIVE,o+=r.actualWidth,r.width=r.actualWidth/e,u+=r.width,n++)}if(n&&(u<1&&r.relativeWidthGrowsToFillWidth||u>1&&r.relativeWidthShrinksToFillWidth))for(let e=0;e<i.visibleColumns.length;e++){let t=i.visibleColumns[e];t.widthMode===Li.RELATIVE&&(t.width/=u)}let h=Math.max(0,o);0===h&&(h=i.table.clientWidth);let c=r.minColumnWidth/h;if(isNaN(c)&&(c=0),c>0){let e,t=0;for(let e=0;e<i.visibleColumns.length;e++){let r=i.visibleColumns[e];r.widthMode===Li.RELATIVE&&!r.ignoreMin&&r.width<c&&(t+=c-r.width,r.width=c)}for(let r=0;r<i.visibleColumns.length;r++){let l=i.visibleColumns[r];l.widthMode===Li.RELATIVE&&!l.ignoreMin&&l.width>c&&t>0&&(e=Math.min(t,l.width-c),l.width-=e,t-=e)}}if(r.autoFillTableWidth&&o>0){let e=0,t=o;for(let r=0;r<i.visibleColumns.length;r++){let l=i.visibleColumns[r];l.resizable||l.widthMode!==Li.ABSOLUTE||(e+=l.width),l.widthMode===Li.RELATIVE&&(t-=Math.round(h*l.width))}let r=(l-e)/(l-t-e)||NaN;for(let e=0;e<i.visibleColumns.length&&t>0;e++){let t=i.visibleColumns[e];if(t.resizable||t.widthMode!==Li.ABSOLUTE)if(t.widthMode===Li.RELATIVE)t.width*=r;else{let i=t.actualWidth*r;t.actualWidth!==i&&(t.actualWidth=i,-1===d.indexOf(e)&&d.push(e))}}}for(let e=0;e<i.visibleColumns.length;e++){let t=i.visibleColumns[e];if(t.widthMode===Li.RELATIVE){let r=Math.round(h*t.width);o-=r,n--,0===n&&1===o&&(r++,o--),-1===o&&(r--,o++),r!==t.actualWidth&&(t.actualWidth=r,d.push(e))}}if(i.visibleColumns.length&&(i.visibleColumns[i.visibleColumns.length-1].actualWidthConsideringScrollbarWidth=i.visibleColumns[i.visibleColumns.length-1].actualWidth-(i.scrollbarWidth||0)),null===(a=i.notifyRendererOfColumnsConfig)||void 0===a||a.call(i),t){let e=this._calculateTbodyWidth();s<e&&this._updateTableWidth(!1);for(let e=0;e<d.length;e++)this._resizeColumnElements(d[e]);s>e&&this._updateTableWidth(!1)}}return this}tableHeightChanged(){let e=this._o,t=this._p;if(!t.table)return this;const r=getComputedStyle(t.table);let i=l(this.el,!0)-(parseFloat(r.borderTopWidth)||0)-(parseFloat(r.borderBottomWidth)||0);return i!==e.height&&(e.height=i,t.tbody&&(t.tbody.style.height=Math.max(e.height-l(t.header,!0,!0,!0),1)+\"px\"),e.virtualTable&&this.clearAndRender()),this}addRows(e,t,r,i){let l=this._p;return\"boolean\"==typeof t&&(i=r,r=t,t=-1),\"number\"!=typeof t&&(t=-1),(t<0||t>l.rows.length)&&(t=l.rows.length),i=void 0===i||!!i,e&&(l.rows.add(e,t),l.filteredRows||r&&l.rows.sortColumn.length?(r&&l.rows.sortColumn.length?this.resort():this._refilter(),l.tableSkeletonNeedsRendering=!0,i&&this.render()):i&&(l.virtualListHelper.addItemsAt(e.length,t),this._o.virtualTable?this._updateVirtualHeight()._updateLastCellWidthFromScrollbar().render()._updateTableWidth(!1):l.tbody&&this.render()._updateLastCellWidthFromScrollbar()._updateTableWidth(!0)),this.emit(\"addrows\",{count:e.length,clear:!1})),this}removeRows(e,t,r){let i=this._p;return\"number\"!=typeof t||t<=0||e<0||e>i.rows.length-1||(i.rows.splice(e,t),r=void 0===r||!!r,i.filteredRows?(this._refilter(),i.tableSkeletonNeedsRendering=!0,r&&this.render()):r&&(i.virtualListHelper.removeItemsAt(t,e),this._o.virtualTable?this._updateVirtualHeight()._updateLastCellWidthFromScrollbar().render()._updateTableWidth(!1):this.render()._updateLastCellWidthFromScrollbar()._updateTableWidth(!0))),this}removeRow(e,t){return this.removeRows(e,1,t)}refreshRow(e,t=!0){let r=this._p;if(e<0||e>r.rows.length-1)return this;let i=-1;return r.filteredRows&&-1===(i=r.filteredRows.indexOf(r.rows[e]))||(-1===i&&(i=e),r.virtualListHelper.refreshItemAt(i),t&&r.virtualListHelper.render()),this}getRowElement(e){let t=this._p;if(e<0||e>t.rows.length-1)return null;let r=-1;return t.filteredRows&&-1===(r=t.filteredRows.indexOf(t.rows[e]))?null:(-1===r&&(r=e),t.virtualListHelper.getItemElementAt(r)||null)}refreshAllVirtualRows(){return this._p.virtualListHelper.invalidate().render(),this}setRows(e,t){let r=this._p;return r.rows.reset(e),t&&r.rows.sortColumn.length?this.resort():this._refilter(),this.clearAndRender().trigger(\"addrows\",{count:e.length,clear:!0}),this}getUrlForElementContent(e){let t,r=document.getElementById(e);if(r){let e=r.textContent;if(\"function\"==typeof Blob)t=new Blob([e]);else{let r=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder;if(!r)return null;let i=new r;i.append(e),t=i.getBlob()}return(window.URL||window.webkitURL).createObjectURL(t)}return null}isWorkerSupported(){return window.Worker instanceof Function}createWebWorker(e,t,r){if(this.isWorkerSupported()){let i=this._p,l=new Worker(e),o=e=>{e.data.append?this.addRows(e.data.rows,r):this.setRows(e.data.rows,r)};return l.addEventListener(\"message\",o,!1),i.workerListeners||(i.workerListeners=[]),i.workerListeners.push({worker:l,listener:o}),(t||void 0===t)&&l.postMessage(null),l}return null}unbindWebWorker(e){let t=this._p;if(t.workerListeners)for(let r=0;r<t.workerListeners.length;r++)t.workerListeners[r].worker===e&&(e.removeEventListener(\"message\",t.workerListeners[r].listener,!1),t.workerListeners.splice(r,1),r--);return this}abortCellPreview(){return this.hideCellPreview(),this}cancelColumnResize(){const e=this._p;return e.resizer&&(e.resizer.remove(),e.resizer=null,e.eventsSink.remove(document,\".colresize\")),this}_onTableScrolledHorizontally(){const e=this._p;e.header.scrollLeft=e.table.scrollLeft}_getColumnByResizePosition(e){let t=this._o,r=this._isTableRtl(),l=e.target.closest(`div.${t.tableClassName}-header-cell,div.${t.cellPreviewClassName}`);l[Wi]&&(l=l[Wi]);let n=l.previousSibling;for(;n&&1!==n.nodeType;)n=n.previousSibling;let s=!n,a=(e.pageX||e.clientX)-o(l).left;if(r){if(!s&&i(l,!0,!0,!0)-a<=t.resizeAreaWidth/2)return n.columnName;if(a<=t.resizeAreaWidth/2)return l.columnName}else{if(!s&&a<=t.resizeAreaWidth/2)return n.columnName;if(i(l,!0,!0,!0)-a<=t.resizeAreaWidth/2)return l.columnName}return null}_onTouchStartColumnHeader(e){const t=this._p;if(t.currentTouchId)return;let r=e.changedTouches[0];t.currentTouchId=r.identifier;let i,l=e.currentTarget,o={x:r.pageX,y:r.pageY},n=o,s=function(){t.currentTouchId=null,t.eventsSink.remove(l,\".colheader\"),clearTimeout(i)},a=(t,...r)=>{for(const t of e)e[t];for(const e of r)for(const t of[\"target\",\"clientX\",\"clientY\",\"offsetX\",\"offsetY\",\"screenX\",\"screenY\",\"pageX\",\"pageY\",\"which\"])null!=e[t]&&e[t];return new MouseEvent(t,e)};l.dispatchEvent(a(\"mousedown\",e.changedTouches[0],{button:0,target:e.target})),i=setTimeout(()=>{s(),t.eventsSink.add(l,\"touchend.colheader\",e=>{Ni(e)||e.preventDefault(),t.eventsSink.remove(l,\".colheader\")},{once:!0}).add(l,\"touchcancel.colheader\",e=>{t.eventsSink.remove(l,\".colheader\")},{once:!0}),Math.sqrt(Math.pow(Math.abs(n.x-o.x),2)+Math.pow(Math.abs(n.y-o.y),2))<9&&(this.cancelColumnResize(),l.dispatchEvent(a(\"mouseup\",e.changedTouches[0],{button:2,target:e.target})))},500),t.eventsSink.add(l,\"touchend.colheader\",e=>{let r=ai(e.changedTouches,e=>e.identifier===t.currentTouchId);r&&(s(),Ni(e)||e.preventDefault(),n={x:r.pageX,y:r.pageY},(Math.sqrt(Math.pow(Math.abs(n.x-o.x),2)+Math.pow(Math.abs(n.y-o.y),2))<9||t.resizer)&&(l.dispatchEvent(a(\"mouseup\",r,{0:2,target:e.target})),l.dispatchEvent(a(\"click\",r,{button:0,target:e.target}))))}).add(l,\"touchcancel.colheader\",s).add(l,\"touchmove.colheader\",e=>{let r=ai(e.changedTouches,e=>e.identifier===t.currentTouchId);r&&(n={x:r.pageX,y:r.pageY},t.resizer&&(e.preventDefault(),l.dispatchEvent(a(\"mousemove\",r,{target:e.target}))))})}_onMouseDownColumnHeader(e){if(0!==e.button)return this;let t=this._o,n=this._p,s=this._getColumnByResizePosition(e);if(s){let a=n.columns.get(s);if(!t.resizableColumns||!a||!a.resizable)return!1;let d=this._isTableRtl();n.resizer&&n.resizer.remove(),n.resizer=gi(\"div\"),n.resizer.className=t.resizerClassName,r(n.resizer,{position:\"absolute\",display:\"block\",zIndex:-1,visibility:\"hidden\",width:\"2px\",background:\"#000\",opacity:.7}),this.el.appendChild(n.resizer);let u=a.element,h=n.resizer.parentNode;const c=getComputedStyle(h),m=getComputedStyle(u);let f=o(u),p=o(h);p.left+=parseFloat(c.borderLeftWidth)||0,p.top+=parseFloat(c.borderTopWidth)||0,f.left-=p.left,f.top-=p.top,f.top-=parseFloat(m.borderTopWidth)||0;let v=i(n.resizer,!0,!0,!0);d?(f.left-=Math.ceil((parseFloat(m.borderLeftWidth)||0)/2),f.left-=Math.ceil(v/2)):(f.left+=i(u,!0,!0,!0),f.left+=Math.ceil((parseFloat(m.borderRightWidth)||0)/2),f.left-=Math.ceil(v/2)),r(n.resizer,{\"z-index\":\"10\",visibility:\"visible\",left:f.left+\"px\",top:f.top+\"px\",height:l(this.el,!1,!1,!1)+\"px\"}),n.resizer.columnName=u.columnName;try{n.resizer.style.zIndex=\"\"}catch(e){}n.eventsSink.add(document,\"mousemove.colresize\",this._onMouseMoveResizeArea.bind(this)).add(document,\"mouseup.colresize\",this._onEndDragColumnHeader.bind(this)),e.preventDefault()}}_onMouseMoveColumnHeader(e){let t=this._o,r=this._p;if(t.resizableColumns){let i=this._getColumnByResizePosition(e),l=e.target.closest(`div.${t.tableClassName}-header-cell,div.${t.cellPreviewClassName}`);i&&r.columns.get(i).resizable?l.style.cursor=\"e-resize\":l.style.cursor=\"\"}}_onMouseUpColumnHeader(e){if(2===e.button){let t=this._o,r=e.target.closest(`div.${t.tableClassName}-header-cell,div.${t.cellPreviewClassName}`),n=o(r);n.width=i(r,!0,!0,!0),n.height=l(r,!0,!0,!0),this.emit(\"headercontextmenu\",{name:r.columnName,pageX:e.pageX,pageY:e.pageY,bounds:n})}return this}_onMouseLeaveColumnHeader(e){let t=this._o;e.target.closest(`div.${t.tableClassName}-header-cell,div.${t.cellPreviewClassName}`).style.cursor=\"\"}_onClickColumnHeader(e){if(!Ni(e)&&!this._getColumnByResizePosition(e)){let t=this._o,r=this._p,i=e.target.closest(`div.${t.tableClassName}-header-cell,div.${t.cellPreviewClassName}`);if(t.sortableColumns){let e=r.columns.get(i.columnName),l=r.rows.sortColumn;if(e&&e.sortable){let r=!0,i=l.length?l[l.length-1]:null;i&&i.column===e.name&&(i.descending&&t.allowCancelSort?(r=!1,l.splice(l.length-1,1)):i.descending=!i.descending),r?this.sort(e.name,void 0,!0).render():this.sort()}}}}_onStartDragColumnHeader(e){let t=this._o,r=this._p;if(t.movableColumns){let i=e.target.closest(`div.${t.tableClassName}-header-cell,div.${t.cellPreviewClassName}`),l=r.columns.get(i.columnName);l&&l.movable?(i.style.opacity=.35,r.dragId=161061273*Math.random(),e.dataTransfer.setData(\"text\",JSON.stringify({dragId:r.dragId,column:l.name}))):e.preventDefault()}else e.preventDefault()}_onMouseMoveResizeArea(e){let t=this._p,r=t.columns.get(t.resizer.columnName),l=this._isTableRtl(),n=r.element,s=t.resizer.parentNode;const a=getComputedStyle(s),d=getComputedStyle(n);let u=o(n),h=o(s);h.left+=parseFloat(a.borderLeftWidth)||0,u.left-=h.left;let c=i(t.resizer,!0,!0,!0),m=\"border-box\"===d.boxSizing,f=e.pageX-h.left,p=u.left;p-=Math.ceil(c/2),l?(p+=i(n,!0,!0,!0),p-=r.ignoreMin?0:this._o.minColumnWidth,m||(p-=Math.ceil((parseFloat(d.borderLeftWidth)||0)/2),p-=this._horizontalPadding(n)),f>p&&(f=p)):(p+=r.ignoreMin?0:this._o.minColumnWidth,m||(p+=Math.ceil((parseFloat(d.borderRightWidth)||0)/2),p+=this._horizontalPadding(n)),f<p&&(f=p)),t.resizer.style.left=f+\"px\"}_onEndDragColumnHeader(e){let t=this._o,r=this._p;if(r.resizer){r.eventsSink.remove(document,\".colresize\");let l=r.columns.get(r.resizer.columnName),n=this._isTableRtl(),s=l.element,a=s.firstChild,d=r.resizer.parentNode;const u=getComputedStyle(d),h=getComputedStyle(s);let c=o(s),m=o(d);m.left+=parseFloat(u.borderLeftWidth)||0,c.left-=m.left;let f=i(r.resizer,!0,!0,!0),p=\"border-box\"===h.boxSizing,v=e.pageX-m.left,g=c.left,b=c.left,C=0;if(g-=Math.ceil(f/2),n){if(!p){v+=this._horizontalPadding(s);const e=getComputedStyle(a||s);v+=parseFloat(e.borderLeftWidth)||0,v+=parseFloat(e.borderRightWidth)||0,v+=l.arrowProposedWidth||0}g+=i(s,!0,!0,!0),b=g-(l.ignoreMin?0:this._o.minColumnWidth),v>b&&(v=b),C=g-v}else{if(!p){v-=this._horizontalPadding(s);const e=getComputedStyle(a||s);v-=parseFloat(e.borderLeftWidth)||0,v-=parseFloat(e.borderRightWidth)||0,v-=l.arrowProposedWidth||0}b=g+(l.ignoreMin?0:this._o.minColumnWidth),v<b&&(v=b),C=v-g}r.resizer.remove(),r.resizer=null;let w=C;if(l.widthMode===Li.RELATIVE){let e=this._calculateWidthAvailableForColumns(),i=0,o=0;for(let t=0;t<r.visibleColumns.length;t++){let n=r.visibleColumns[t];n.name!==l.name&&(n.widthMode===Li.RELATIVE?(i+=n.width,o++):e-=n.actualWidth)}if(e=Math.max(1,e),1===e&&(e=r.table.clientWidth),w=C/e,o>0){let e=w/((1-w)/i);i+=w,(i<1&&t.relativeWidthGrowsToFillWidth||i>1&&t.relativeWidthShrinksToFillWidth)&&(w=e)}w*=100,w+=\"%\"}this.setColumnWidth(l.name,w)}else e.target.style.opacity=null}_onDragEnterColumnHeader(e){let t=this._o,r=this._p;if(t.movableColumns){let i=e.dataTransfer.getData(\"text\");i=i?JSON.parse(i):null;let l=e.target.closest(`div.${t.tableClassName}-header-cell,div.${t.cellPreviewClassName}`);if(!i||r.dragId===i.dragId&&l.columnName!==i.column){let e=r.columns.get(l.columnName);e&&(e.movable||e!==r.visibleColumns[0])&&l.classList.add(\"drag-over\")}}}_onDragOverColumnHeader(e){e.preventDefault()}_onDragLeaveColumnHeader(e){let t=this._o,r=e.target.closest(`div.${t.tableClassName}-header-cell,div.${t.cellPreviewClassName}`);e.relatedTarget.contains(r.firstChild)||r.classList.remove(\"drag-over\")}_onDropColumnHeader(e){e.preventDefault();let t=this._o,r=this._p,i=JSON.parse(e.dataTransfer.getData(\"text\")),l=e.target.closest(`div.${t.tableClassName}-header-cell,div.${t.cellPreviewClassName}`);if(t.movableColumns&&i.dragId===r.dragId){let e=i.column,t=l.columnName,o=r.columns.get(e),n=r.columns.get(t);o&&n&&o.movable&&(n.movable||n!==r.visibleColumns[0])&&this.moveColumn(e,t)}l.classList.remove(\"drag-over\")}_clearSortArrows(){let e=this._p;if(e.table){let t=this._o.tableClassName,r=s(e.headerRow,`>div.${t}-header-cell.sorted`),i=Array.prototype.slice.call(r,0).map(e=>a(e,\">div>.sort-arrow\")).filter(e=>!!e);for(const t of i){let r=e.columns.get(t.parentNode.parentNode.columnName);r&&(r.arrowProposedWidth=0),t.remove()}for(const e of r)e.classList.remove(\"sorted\",\"desc\")}return this}_showSortArrow(e,t){let r=this._p.columns.get(e);if(!r)return!1;let i=gi(\"span\");return i.className=\"sort-arrow\",r.element&&(r.element.className+=t?\" sorted desc\":\" sorted\",r.element.firstChild.insertBefore(i,r.element.firstChild.firstChild)),r.widthMode!==Li.RELATIVE&&this._o.adjustColumnWidthForSortArrow&&(r.arrowProposedWidth=i.scrollWidth+(parseFloat(getComputedStyle(i).marginRight)||0)+(parseFloat(getComputedStyle(i).marginLeft)||0)),!0}_resizeColumnElements(e){let t=this._p;const r=t.headerRow.querySelectorAll(`div.${this._o.tableClassName}-header-cell`)[e];let i=t.columns.get(r.columnName);if(i){r.style.width=(i.actualWidthConsideringScrollbarWidth||i.actualWidth)+\"px\";let l=(i.actualWidthConsideringScrollbarWidth||i.actualWidth)+\"px\",o=t.tbody.childNodes;for(let t=0,r=o.length;t<r;t++){let r=o[t];1===r.nodeType&&(r.childNodes[e].style.width=l)}}return this}_destroyHeaderCells(){let e=this._p;return e.headerRow&&(e.headerRow=null),this}_renderSkeletonBase(){var e;let t=this._p,r=this._o;null===(e=t.virtualListHelper)||void 0===e||e.destroy(),t.virtualListHelper=null,t.table&&r.virtualTable&&(t.table.remove(),t.table=t.tbody=null),this._destroyHeaderCells(),t.currentTouchId=null,t.header&&t.header.remove();let i=r.tableClassName,o=gi(\"div\"),n=gi(\"div\");return o.className=`${i}-header`,n.className=`${i}-header-row`,t.header=o,t.headerRow=n,o.appendChild(n),this.el.prepend(o),Ri(this.el),r.width===Ti.Width.SCROLL?this.el.style.overflow=\"hidden\":this.el.style.overflow=\"\",!r.height&&r.virtualTable&&(r.height=l(this.el,!0)),this}_bindHeaderColumnEvents(e){const t=e.firstChild;e.addEventListener(\"mousedown\",this._onMouseDownColumnHeader.bind(this)),e.addEventListener(\"mousemove\",this._onMouseMoveColumnHeader.bind(this)),e.addEventListener(\"mouseup\",this._onMouseUpColumnHeader.bind(this)),e.addEventListener(\"mouseleave\",this._onMouseLeaveColumnHeader.bind(this)),e.addEventListener(\"touchstart\",this._onTouchStartColumnHeader.bind(this)),e.addEventListener(\"dragstart\",this._onStartDragColumnHeader.bind(this)),e.addEventListener(\"click\",this._onClickColumnHeader.bind(this)),e.addEventListener(\"contextmenu\",e=>{e.preventDefault()}),t.addEventListener(\"dragenter\",this._onDragEnterColumnHeader.bind(this)),t.addEventListener(\"dragover\",this._onDragOverColumnHeader.bind(this)),t.addEventListener(\"dragleave\",this._onDragLeaveColumnHeader.bind(this)),t.addEventListener(\"drop\",this._onDropColumnHeader.bind(this))}_renderSkeletonHeaderCells(){let e=this._p,t=this._o,r=t.allowCellPreview,i=t.allowHeaderCellPreview,l=t.tableClassName+\"-header-cell\",o=e.headerRow;for(let n=0;n<e.visibleColumns.length;n++){let s=e.visibleColumns[n];if(s.visible){let a=gi(\"div\");a.draggable=!0,a.className=l,a.style.width=s.actualWidth+\"px\",t.sortableColumns&&s.sortable&&(a.className+=\" sortable\"),a.columnName=s.name,a.setAttribute(\"data-column\",s.name);let d=gi(\"div\");d.innerHTML=t.headerCellFormatter(s.label,s.name),a.appendChild(d),r&&i&&e._bindCellHoverIn(a),o.appendChild(a),e.visibleColumns[n].element=a,this._bindHeaderColumnEvents(a),this._disableCssSelect(a)}}return this.emit(\"headerrowcreate\",o),this}_renderSkeletonBody(){let e=this._p,t=this._o,i=t.tableClassName;if(t.virtualTable&&!e.virtualRowHeight){let t=()=>{let e=gi(\"div\"),t=e.appendChild(gi(\"div\")),r=t.appendChild(gi(\"div\"));return e.className=`${i}-row`,t.className=`${i}-cell`,r.innerHTML=\"0\",e.style.visibility=\"hidden\",e.style.position=\"absolute\",e};const o=gi(\"div\");o.className=this.el.className,r(o,{\"z-index\":-1,position:\"absolute\",left:\"0\",top:\"-9999px\",width:\"1px\",overflow:\"hidden\"});const n=gi(\"div\");n.className=i,o.appendChild(n);const s=gi(\"div\");s.className=`${i}-body`,s.style.width=\"99999px\",n.appendChild(s),document.body.appendChild(o);let a=t(),d=t(),u=t();s.appendChild(a),s.appendChild(d),s.appendChild(u),e.virtualRowHeightFirst=l(a,!0,!0,!0),e.virtualRowHeight=l(d,!0,!0,!0),e.virtualRowHeightLast=l(u,!0,!0,!0),o.remove()}if(!e.table){let o=document.createDocumentFragment(),n=gi(\"div\");n.className=i,t.virtualTable&&(n.className+=\" virtual\");const s=getComputedStyle(n);let a=t.height-l(e.header,!0,!0,!0);\"border-box\"!==s.boxSizing&&(a-=parseFloat(s.borderTopWidth)||0,a-=parseFloat(s.borderBottomWidth)||0,a-=parseFloat(s.paddingTop)||0,a-=parseFloat(s.paddingBottom)||0),e.visibleHeight=a,r(n,{height:t.height?a+\"px\":\"auto\",display:\"block\",overflowY:\"auto\",overflowX:t.width===Ti.Width.SCROLL?\"auto\":\"hidden\"}),o.appendChild(n);let d=gi(\"div\");d.className=t.tableClassName+\"-body\",d.style.minHeight=\"1px\",e.table=n,e.tbody=d,Ri(d),Ri(n),n.appendChild(d),this.el.appendChild(o),this._setupVirtualTable()}return this}_renderSkeleton(){return this}_updateVirtualHeight(){const e=this._o,t=this._p;if(!t.tbody)return this;if(e.virtualTable){const e=t.virtualListHelper.estimateFullHeight();t.lastVirtualScrollHeight=e,t.tbody.style.height=e+\"px\"}else t.tbody.style.height=\"\";return this}_updateLastCellWidthFromScrollbar(e){const t=this._p;let r=t.table.offsetWidth-t.table.clientWidth;if(r!==t.scrollbarWidth||e){var i;t.scrollbarWidth=r;for(let e=0;e<t.columns.length;e++)t.columns[e].actualWidthConsideringScrollbarWidth=null;if(t.scrollbarWidth>0&&t.visibleColumns.length>0){let e=t.visibleColumns.length-1;t.visibleColumns[e].actualWidthConsideringScrollbarWidth=t.visibleColumns[e].actualWidth-t.scrollbarWidth;let r=t.visibleColumns[e].actualWidthConsideringScrollbarWidth+\"px\",i=t.tbody.childNodes;for(let t=0,l=i.length;t<l;t++){let l=i[t];1===l.nodeType&&(l.childNodes[e].style.width=r)}t.headerRow.childNodes[e].style.width=r}null===(i=t.notifyRendererOfColumnsConfig)||void 0===i||i.call(t)}return this}_updateTableWidth(e){const t=this._o,r=this._p;let l=this._calculateTbodyWidth();if(r.tbody.style.minWidth=l+\"px\",r.headerRow.style.minWidth=l+(r.scrollbarWidth||0)+\"px\",r.eventsSink.remove(r.table,\"scroll\"),t.width===Ti.Width.AUTO)n(r.table,i(r.tbody,!0,!0,!0)),n(this.el,i(r.table,!0,!0,!0));else if(t.width===Ti.Width.SCROLL){if(e){let e=r.table?r.table.scrollTop:0,t=r.table?r.table.scrollLeft:0;!function(e){let t=e.style.display;e.style.display=\"none\",e.offsetHeight,e.style.display=t}(this.el),r.table.crollTop=e,r.table.scrollLeft=t,r.header.scrollLeft=t}r.eventsSink.add(r.table,\"scroll\",this._onTableScrolledHorizontally.bind(this))}return this}_isTableRtl(){return\"rtl\"===getComputedStyle(this._p.table).direction}_serializeColumnWidth(e){return e.widthMode===Li.AUTO?\"auto\":e.widthMode===Li.RELATIVE?100*e.width+\"%\":e.width}_disableCssSelect(e){const t=e.style;t[\"-webkit-touch-callout\"]=\"none\",t[\"-webkit-user-select\"]=\"none\",t[\"-moz-user-select\"]=\"none\",t[\"-ms-user-select\"]=\"none\",t[\"-o-user-select\"]=\"none\",t[\"user-select\"]=\"none\"}_cellMouseOverEvent(e){const t=this._o,n=this._p;let s=e.firstElementChild;if(!(s.scrollWidth-s.clientWidth>1||s.scrollHeight-s.clientHeight>1))return;this.hideCellPreview(),n.abortCellPreview=!1;const a=e.parentElement,d=gi(\"div\");d.innerHTML=e.innerHTML,d.className=t.cellPreviewClassName;let u=e.classList.contains(`${t.tableClassName}-header-cell`);u&&(d.classList.add(\"header\"),e.classList.contains(\"sortable\")&&d.classList.add(\"sortable\"),d.draggable=!0,this._bindHeaderColumnEvents(d));const h=getComputedStyle(e),c=getComputedStyle(s);let m=parseFloat(h.paddingLeft)||0,f=parseFloat(h.paddingRight)||0,p=parseFloat(h.paddingTop)||0,v=parseFloat(h.paddingBottom)||0,g=s.scrollWidth+(e.clientWidth-s.offsetWidth),b=\"border-box\"===h.boxSizing;if(b?d.style.boxSizing=\"border-box\":(g-=m+f,d.style.marginTop=(parseFloat(h.borderTopWidth)||0)+\"px\"),!n.transparentBgColor1){let e=document.createElement(\"div\");document.body.appendChild(e),e.style.backgroundColor=\"transparent\",n.transparentBgColor1=getComputedStyle(e).backgroundColor,e.style.backgroundColor=\"rgba(0,0,0,0)\",n.transparentBgColor2=getComputedStyle(e).backgroundColor,e.remove()}let C={\"box-sizing\":b?\"border-box\":\"content-box\",width:g,\"min-height\":Math.max(l(e),parseFloat(h.minHeight)||0)+\"px\",\"padding-left\":m,\"padding-right\":f,\"padding-top\":p,\"padding-bottom\":v,overflow:\"hidden\",position:\"absolute\",\"z-index\":\"-1\",left:\"0\",top:\"0\",cursor:h.cursor},w=h.backgroundColor;w!==n.transparentBgColor1&&w!==n.transparentBgColor2||(w=getComputedStyle(a).backgroundColor),w!==n.transparentBgColor1&&w!==n.transparentBgColor2||(w=\"#fff\"),C[\"background-color\"]=w,r(d,C),r(d.firstChild,{direction:c.direction,\"white-space\":c.whiteSpace,\"min-height\":c.minHeight,\"line-height\":c.lineHeight,font:c.font}),this.el.appendChild(d),u&&this._disableCssSelect(d),d.rowVIndex=a.vIndex;let y=d.rowIndex=a.index;d.columnName=n.visibleColumns[vi.call(a.childNodes,e)].name;try{let t=fi.saveSelection(e);t&&fi.restoreSelection(d,t)}catch(e){}if(this.emit(\"cellpreview\",{el:d.firstElementChild,name:d.columnName,rowIndex:null!=y?y:null,rowData:null==y?null:n.rows[y],cell:e,cellEl:s}),n.abortCellPreview)return void d.remove();null!=y&&d.addEventListener(\"click\",e=>{this.emit(\"rowclick\",{event:e,filteredRowIndex:a.vIndex,rowIndex:y,rowEl:a,rowData:n.rows[y]})});let _=this.el,S=_===window?document:_;const W=getComputedStyle(_);let R=o(e),N=o(_),T=\"right\"===h.float,L=T?\"right\":\"left\";if(T){let t=window.innerWidth;R.right=t-(R.left+i(e,!0,!0,!0)),N.right=t-(N.left+i(_,!0,!0,!0))}R.left-=parseFloat(W.borderLeftWidth)||0,\"right\"===L&&(R.right-=parseFloat(W.borderRightWidth)||0),R.top-=parseFloat(W.borderTopWidth)||0,R[L]+=parseFloat(h[`border-${L}-width`])||0,R.top+=parseFloat(h.borderTopWidth)||parseFloat(h.borderBottomWidth)||0,R.left-=N.left,\"right\"===L&&(R.right-=N.right),R.top-=N.top;let E=i(_,!1,!1,!1)-i(d,!0,!0,!0);R[L]=R[L]<0?0:R[L]>E?E:R[L];let x=l(e,!0,!0,!0),z=S.scrollTop+l(_,!0)-x;R.top>z&&(R.top=Math.max(0,z));let P={top:R.top+\"px\",\"z-index\":9999};P[L]=R[L]+\"px\",r(d,P),d[Wi]=e,n.cellPreviewCell=d,e[Si]=d,n._bindCellHoverOut(e),n._bindCellHoverOut(d),d.addEventListener(\"wheel\",()=>{this.hideCellPreview()})}_cellMouseOutEvent(e){this.hideCellPreview()}hideCellPreview(){const e=this._p;if(e.cellPreviewCell){var t;let r,i=e.cellPreviewCell,l=i[Wi];try{r=fi.saveSelection(i)}catch(e){}e.cellPreviewCell.remove(),e._unbindCellHoverOut(l),e._unbindCellHoverOut(i);try{r&&fi.restoreSelection(l,r)}catch(e){}this.emit(\"cellpreviewdestroy\",{el:i.firstChild,name:i.columnName,rowIndex:null!==(t=i.rowIndex)&&void 0!==t?t:null,rowData:null==i.rowIndex?null:e.rows[i.rowIndex],cell:l,cellEl:l.firstChild}),delete l[Si],delete i[Wi],e.cellPreviewCell=null,e.abortCellPreview=!1}else e.abortCellPreview=!0;return this}}Ti.VERSION=\"@@VERSION\";const Li={AUTO:0,ABSOLUTE:1,RELATIVE:2};Ti.Width={NONE:\"none\",AUTO:\"auto\",SCROLL:\"scroll\"};export{Ti as default};\n\n//# sourceMappingURL=lib.es6.min.js.map","import jQuery from 'jquery';\r\nimport DGTable from '@danielgindi/dgtable.js';\r\n\r\nexport default class DGTableJQuery extends DGTable {\r\n constructor(options) {\r\n super(options);\r\n\r\n this.$el = jQuery(this.el)\r\n .data('dgtable', this)\r\n .on('remove', () => this.destroy());\r\n\r\n this.on('headerrowdestroy', () => {\r\n const headerRow = this._p?.headerRow;\r\n if (!headerRow) return;\r\n\r\n jQuery(headerRow).find(`div.${this._o.tableClassName}-header-cell`).remove();\r\n });\r\n }\r\n\r\n destroy() {\r\n if (this._p?.table)\r\n jQuery(this._p.table).empty();\r\n if (this._p?.tbody)\r\n jQuery(this._p.tbody).empty();\r\n return super.destroy();\r\n }\r\n}\r\n"],"names":["rtlScrollType","detectRtlScrollType","definer","document","createElement","dir","Object","assign","style","direction","fontSize","width","height","position","top","overflow","textContent","body","appendChild","type","scrollLeft","Math","floor","parentNode","removeChild","calculateNativeScrollLeftForLeft","el","left","rtl","undefined","getComputedStyle","scrollWidth","clientWidth","getScrollLeft","calculateNativeScrollLeftForHorz","value","getScrollHorz","setScrollHorz","horz","setCssProps","props","key","entries","String","generateGetElementSizeFn","pseudo","dim","dimCased","startDim","endDim","arguments","length","pseudoSelector","paddings","borders","margins","window","documentElement","nodeType","doc","max","includesPadding","includesBorders","getBoundingClientRect","raw","parseFloat","boxSizing","totalPadding","totalBorders","totalMargins","generateSetElementSizeFn","includesPaddingAndBorders","getElementWidth","getElementHeight","setElementWidth","getElementOffset","getClientRects","rect","view","ownerDocument","defaultView","pageYOffset","pageXOffset","hasScopedQuerySelector","detectScopedSelectorFeature","querySelector","ignored","scopedSelector","selector","replace","id","uniqueId","Date","now","scopedSelectorAll","querySelectorAll","hasOwnProperty","prototype","hasInsertAdjacentElement","Element","insertAdjacentElement","insertBefore","before","parent","DocumentFragment","insertBeforeWithFragment","itemEl","fragment","itemParent","createDocumentFragment","childNodes","nextSibling","VirtualListHelper","constructor","opts","p","_p","list","hookScrollEvent","count","virtual","userItemsParent","itemsParent","setVirtualWrapperWidth","autoVirtualWrapperWidth","estimatedItemHeight","buffer","itemHeightEstimatorFn","itemElementCreatorFn","defaultElementCreator","onItemRender","onItemUnrender","onScrollHeightChange","virtualWrapper","currentItemsParent","cachedItemHeights","cachedItemEstimatedHeights","cachedItemPositions","itemPositionsNeedsUpdate","boundRender","render","bind","existingEls","_hookEvents","setCount","setVirtual","setEstimatedItemHeight","setBuffer","setItemHeightEstimatorFn","setItemElementCreatorFn","setOnItemRender","setOnItemUnrender","setOnScrollHeightChange","destroy","_unhookEvents","invalidate","_destroyElements","setHookScrollEvent","enabled","isHookScrollEventEnabled","getCount","isVirtual","abs","Number","getEstimatedItemHeight","setAutoVirtualWrapperWidth","virtualWrapperWidthWasSet","isAutoVirtualWrapperWidth","getBuffer","fn","estimateFullHeight","_calculateItemPosition","rect1","rect2","invalidatePositions","ItemIndexSymbol","scrollTop","visibleHeight","clientHeight","visibleBottom","existingCount","originalWidth","_resetCurrentItemsParent","i","ReuseElSymbol","existingRange","_getExistingElsRange","firstVisibleIndex","binarySearchPosition","firstRenderIndex","index","renderPos","bufferEnd","maxIndexToRender","insertedItems","findElementToReuse","existingEl","firstIndex","lastIndex","find","x","firstValidArrayIndex","call","findLast","_dequeueElementForIndex","push","item","_insertItemAndFlow","scrollHeight","scrollHeightPx","splice","addItemsAt","atIndex","_invalidateItemIndexesAt","startIndex","_pushItemIndexesAt","end","removeItemsAt","min","refreshItemAt","isItemRendered","getItemElementAt","getItemPosition","getItemIndexFromElement","getItemSize","getVisibleItemCount","lastVisibleIndex","retriever","pos","Infinity","binarySearchPositionByFn","createGhostItemElement","ghostIndex","append","ghostTester","_setItemPositionsNeedsUpdate","c","addEventListener","removeEventListener","fromIndex","toIndex","prevIndex","avoidDomReflow","isNew","shouldReRender","right","innerHTML","Node","indexOf","beforeIndex","itemHeight","cachedItemHeight","supportedTransform","getSupportedTransform","lastValidArrayIndex","len","Symbol","positions","start","total","mid","midPos","array","_isTransformSupported","prefixes","div","DomEventsSink","_events","add","eventName","handler","optionsOrCapture","parts","split","name","namespace","useCapture","capture","remove","keep","e","h","globalThis","self","m","Function","v","g","b","C","w","y","_","S","W","R","DGTableJQuery","DGTable","options","$el","jQuery","data","on","headerRow","_o","tableClassName","table","empty","tbody"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5]}
1
+ {"version":3,"file":"index.js","sources":["node_modules/@danielgindi/dom-utils/lib/ScrollHelper.js","node_modules/@danielgindi/dom-utils/lib/Css.js","node_modules/@danielgindi/dom-utils/lib/DomCompat.js","node_modules/@danielgindi/virtual-list-helper/lib/index.js","node_modules/@danielgindi/dom-utils/lib/DomEventsSink.js","node_modules/@danielgindi/dgtable.js/dist/lib.es6.min.js","index.js"],"sourcesContent":["let rtlScrollType;\r\n\r\nconst detectRtlScrollType = () => {\r\n const definer = document.createElement('div');\r\n definer.dir = 'rtl';\r\n Object.assign(definer.style, {\r\n direction: 'rtl',\r\n fontSize: '14px',\r\n width: '1px',\r\n height: '1px',\r\n position: 'absolute',\r\n top: '-1000px',\r\n overflow: 'scroll',\r\n });\r\n definer.textContent = 'A';\r\n document.body.appendChild(definer);\r\n\r\n let type = 'reverse';\r\n\r\n if (definer.scrollLeft > 0) {\r\n type = 'default';\r\n } else {\r\n definer.scrollLeft = 1;\r\n\r\n // bug: on some machines, chrome will have a positive delta of less than 1.\r\n // a full scroll will still be in the negative direction.\r\n // let's use Math.floor() to account for that bug.\r\n if (Math.floor(definer.scrollLeft) === 0) {\r\n type = 'negative';\r\n }\r\n }\r\n\r\n definer.parentNode.removeChild(definer);\r\n\r\n return type;\r\n};\r\n\r\n/**\r\n * @param {Element} el\r\n * @param {number} left\r\n * @param {boolean|undefined} [rtl] if unspecified, then it's automatically detected.\r\n * @returns {number}\r\n */\r\nfunction calculateNativeScrollLeftForLeft(el, left, rtl) {\r\n if (rtl === undefined) {\r\n rtl = getComputedStyle(el).direction === 'rtl';\r\n }\r\n\r\n if (rtl === true && rtlScrollType === undefined) {\r\n rtlScrollType = detectRtlScrollType();\r\n }\r\n\r\n if (rtl) {\r\n switch (rtlScrollType) {\r\n case 'negative':\r\n return left - el.scrollWidth + el.clientWidth;\r\n\r\n case 'reverse':\r\n return el.scrollWidth - left - el.clientWidth;\r\n\r\n default:\r\n return left;\r\n }\r\n } else {\r\n return left;\r\n }\r\n}\r\n\r\n/**\r\n * @param {Element} el\r\n * @param {boolean|undefined} [rtl] if unspecified, then it's automatically detected.\r\n * @returns {number}\r\n */\r\nfunction getScrollLeft(el, rtl) {\r\n if (rtl === undefined) {\r\n rtl = getComputedStyle(el).direction === 'rtl';\r\n }\r\n\r\n if (rtl === true && rtlScrollType === undefined) {\r\n rtlScrollType = detectRtlScrollType();\r\n }\r\n\r\n if (rtl) {\r\n switch (rtlScrollType) {\r\n case 'negative':\r\n return el.scrollLeft + el.scrollWidth - el.clientWidth;\r\n\r\n case 'reverse':\r\n return el.scrollWidth - el.scrollLeft - el.clientWidth;\r\n\r\n default:\r\n return el.scrollLeft;\r\n }\r\n } else {\r\n return el.scrollLeft;\r\n }\r\n}\r\n\r\n/**\r\n * @param {Element} el\r\n * @param {number} left\r\n * @param {boolean|undefined} [rtl] if unspecified, then it's automatically detected.\r\n */\r\nfunction setScrollLeft(el, left, rtl) {\r\n el.scrollLeft = calculateNativeScrollLeftForLeft(el, left, rtl);\r\n}\r\n\r\n/**\r\n * @param {Element} el\r\n * @param {number} value\r\n * @param {boolean|undefined} [rtl] if unspecified, then it's automatically detected.\r\n * @returns {number}\r\n */\r\nfunction calculateNativeScrollLeftForHorz(el, value, rtl) {\r\n if (rtl === undefined) {\r\n rtl = getComputedStyle(el).direction === 'rtl';\r\n }\r\n\r\n if (rtl) {\r\n return calculateNativeScrollLeftForLeft(el, el.scrollWidth - el.clientWidth - value, rtl);\r\n } else {\r\n return calculateNativeScrollLeftForLeft(el, value, rtl);\r\n }\r\n}\r\n\r\n/**\r\n * @param {Element} el\r\n * @param {boolean|undefined} [rtl] if unspecified, then it's automatically detected.\r\n * @returns {number}\r\n */\r\nfunction getScrollHorz(el, rtl) {\r\n if (rtl === undefined) {\r\n rtl = getComputedStyle(el).direction === 'rtl';\r\n }\r\n if (rtl) {\r\n return el.scrollWidth - el.clientWidth - getScrollLeft(el, rtl);\r\n } else {\r\n return getScrollLeft(el, rtl);\r\n }\r\n}\r\n\r\n/**\r\n * @param {Element} el\r\n * @param {number} horz\r\n * @param {boolean|undefined} [rtl] if unspecified, then it's automatically detected.\r\n */\r\nfunction setScrollHorz(el, horz, rtl) {\r\n el.scrollLeft = calculateNativeScrollLeftForHorz(el, horz, rtl);\r\n}\r\n\r\nexport {\r\n calculateNativeScrollLeftForLeft,\r\n getScrollLeft,\r\n setScrollLeft,\r\n calculateNativeScrollLeftForHorz,\r\n getScrollHorz,\r\n setScrollHorz,\r\n};\r\n","/**\r\n * @param {Element} el\r\n * @param {string[]} props\r\n * @returns {Object<string, string>}\r\n */\r\nconst getCssProps = function (el, props) {\r\n const style = getComputedStyle(el);\r\n let res = {};\r\n for (let prop of props) {\r\n let val = style[prop];\r\n\r\n if ((prop === 'width' || prop === 'height') && val === 'auto' && el instanceof HTMLElement) {\r\n val = el['offset' + prop.substr(0, 1).toUpperCase() + prop.substr(1)];\r\n\r\n if (style.boxSizing !== 'border-box') {\r\n if (prop === 'width') {\r\n val -= parseFloat(style.paddingLeft || 0);\r\n val -= parseFloat(style.paddingRight || 0);\r\n val -= parseFloat(style.borderLeftWidth || 0);\r\n val -= parseFloat(style.borderRightWidth || 0);\r\n } else {\r\n val -= parseFloat(style.paddingTop || 0);\r\n val -= parseFloat(style.paddingBottom || 0);\r\n val -= parseFloat(style.borderTopWidth || 0);\r\n val -= parseFloat(style.borderBottomWidth || 0);\r\n }\r\n if (val < 0)\r\n val = 0;\r\n }\r\n\r\n val += 'px';\r\n }\r\n\r\n res[prop] = val;\r\n }\r\n return res;\r\n};\r\n\r\n/**\r\n * @param {ElementCSSInlineStyle} el\r\n * @param {Object<string, string>} props\r\n */\r\nconst setCssProps = function (el, props) {\r\n for (let [key, value] of Object.entries(props))\r\n el.style[key] = (value === undefined || value === null) ? '' : String(value);\r\n};\r\n\r\nconst generateGetElementSizeFn = function (pseudo, dim, dimCased, startDim, endDim) {\r\n return (...args) => {\r\n let /**Element|ElementCSSInlineStyle*/el = args[0],\r\n /**string*/pseudoSelector,\r\n /**boolean*/paddings,\r\n /**boolean*/borders,\r\n /**boolean*/margins;\r\n\r\n if (pseudo) {\r\n pseudoSelector = args[1];\r\n paddings = !!args[2];\r\n borders = !!args[3];\r\n margins = !!args[4];\r\n } else {\r\n paddings = !!args[1];\r\n borders = !!args[2];\r\n margins = !!args[3];\r\n }\r\n\r\n if ((/**@type Window*/el) === window) {\r\n return (/**@type Window*/el).document.documentElement[`client${dimCased}`];\r\n }\r\n else if (el.nodeType === 9) { // document\r\n const doc = (/**@type Document*/el).documentElement;\r\n const body = (/**@type Document*/el).body;\r\n\r\n return Math.max(\r\n body[`scroll${dimCased}`],\r\n doc[`scroll${dimCased}`],\r\n body[`offset${dimCased}`],\r\n doc[`offset${dimCased}`],\r\n doc[`client${dimCased}`],\r\n );\r\n }\r\n else {\r\n let value;\r\n let style;\r\n let includesPadding = false, includesBorders = false;\r\n\r\n if (!pseudo && ('getBoundingClientRect' in el)) {\r\n value = el.getBoundingClientRect()[dim];\r\n includesPadding = true;\r\n includesBorders = true;\r\n }\r\n\r\n if (value === undefined || margins || includesPadding !== paddings || includesBorders !== borders) {\r\n style = pseudo ? getComputedStyle(el, pseudoSelector) : getComputedStyle(el);\r\n }\r\n\r\n if (value === undefined) {\r\n let raw = style[dim];\r\n if (raw === 'auto') { // computedStyle is no good here, probably an 'inline' element\r\n value = el[`client${dimCased}`]; // take clientWidth/clientHeight (damn it, it's rounded)\r\n includesPadding = true;\r\n } else {\r\n value = parseFloat(raw);\r\n }\r\n\r\n if (style.boxSizing === 'border-box') {\r\n includesPadding = true;\r\n includesBorders = true;\r\n }\r\n }\r\n\r\n if (paddings !== includesPadding) {\r\n let totalPadding = parseFloat(style[`padding-${startDim}`] || 0) +\r\n parseFloat(style[`padding-${endDim}`] || 0);\r\n if (paddings) value += totalPadding;\r\n else value -= totalPadding;\r\n }\r\n\r\n if (borders !== includesBorders) {\r\n let totalBorders = parseFloat(style[`border-${startDim}-width`] || 0) +\r\n parseFloat(style[`border-${endDim}-width`] || 0);\r\n if (borders) value += totalBorders;\r\n else value -= totalBorders;\r\n }\r\n\r\n if (value < 0)\r\n value = 0;\r\n\r\n if (margins) {\r\n let totalMargins = parseFloat(style[`margin-${startDim}`] || 0) +\r\n parseFloat(style[`margin-${endDim}`] || 0);\r\n value += totalMargins;\r\n }\r\n\r\n return value;\r\n }\r\n };\r\n};\r\n\r\nconst generateSetElementSizeFn = (dim, dimCased, startDim, endDim) => {\r\n return (/**Element|ElementCSSInlineStyle*/el,\r\n /**number*/value,\r\n paddings = false, borders = false, margins = false) => {\r\n\r\n if ((/**@type Window*/el) === window) {\r\n return;\r\n }\r\n\r\n if (el.nodeType === 9) { // document\r\n return;\r\n }\r\n\r\n const style = getComputedStyle(el);\r\n\r\n let includesPaddingAndBorders = false;\r\n\r\n if (style.boxSizing === 'border-box') {\r\n includesPaddingAndBorders = true;\r\n }\r\n\r\n paddings = !!paddings;\r\n borders = !!borders;\r\n margins = !!margins;\r\n\r\n if (margins)\r\n value -= (parseFloat(style[`margin-${startDim}`]) || 0) + (parseFloat(style[`margin-${endDim}`]) || 0);\r\n\r\n if (paddings !== includesPaddingAndBorders) {\r\n let totalPadding = parseFloat(style[`padding-${startDim}`] || 0) +\r\n parseFloat(style[`padding-${endDim}`] || 0);\r\n if (paddings) value -= totalPadding;\r\n else value += totalPadding;\r\n }\r\n\r\n if (borders !== includesPaddingAndBorders) {\r\n let totalBorders = (parseFloat(style[`border-${startDim}-width`]) || 0) +\r\n (parseFloat(style[`border-${endDim}-width`]) || 0);\r\n if (borders) value -= totalBorders;\r\n else value += totalBorders;\r\n }\r\n\r\n if (value < 0)\r\n value = 0;\r\n\r\n el.style[dim] = value + 'px';\r\n };\r\n};\r\n\r\n/**\r\n * Gets the width of an element, with fractions\r\n * @function getElementWidth\r\n * @param {Element} el\r\n * @param {boolean} [paddings=false] - include paddings\r\n * @param {boolean} [borders=false] - include borders\r\n * @param {boolean} [margins=false] - include margins\r\n * @returns {number}\r\n */\r\nconst getElementWidth = generateGetElementSizeFn(false, 'width', 'Width', 'left', 'right');\r\n\r\n/**\r\n * Gets the width of an element, with fractions\r\n * @function getElementHeight\r\n * @param {Element} el\r\n * @param {boolean} [paddings=false] - include paddings\r\n * @param {boolean} [borders=false] - include borders\r\n * @param {boolean} [margins=false] - include margins\r\n * @returns {number}\r\n */\r\nconst getElementHeight = generateGetElementSizeFn(false, 'height', 'Height', 'top', 'bottom');\r\n\r\n/**\r\n * Gets the width of an element, with fractions\r\n * @function getPseudoElementWidth\r\n * @param {Element} el\r\n * @param {string} pseudo\r\n * @param {boolean} [paddings=false] - include paddings\r\n * @param {boolean} [borders=false] - include borders\r\n * @param {boolean} [margins=false] - include margins\r\n * @returns {number}\r\n */\r\nconst getPseudoElementWidth = generateGetElementSizeFn(true, 'width', 'Width', 'left', 'right');\r\n\r\n/**\r\n * Gets the width of an element, with fractions\r\n * @function getPseudoElementHeight\r\n * @param {Element} el\r\n * @param {string} pseudo\r\n * @param {boolean} [paddings=false] - include paddings\r\n * @param {boolean} [borders=false] - include borders\r\n * @param {boolean} [margins=false] - include margins\r\n * @returns {number}\r\n */\r\nconst getPseudoElementHeight = generateGetElementSizeFn(true, 'height', 'Height', 'top', 'bottom');\r\n\r\n/**\r\n * Sets the width of an element\r\n * @function setElementWidth\r\n * @param {Element} el\r\n * @param {number} value\r\n * @param {boolean} [paddings=false] - include paddings\r\n * @param {boolean} [borders=false] - include borders\r\n * @param {boolean} [margins=false] - include margins\r\n */\r\nconst setElementWidth = generateSetElementSizeFn('width', 'Width', 'left', 'right');\r\n\r\n/**\r\n * Sets the width of an element, with fractions\r\n * @function setElementHeight\r\n * @param {Element} el\r\n * @param {number} value\r\n * @param {boolean} [paddings=false] - include paddings\r\n * @param {boolean} [borders=false] - include borders\r\n * @param {boolean} [margins=false] - include margins\r\n */\r\nconst setElementHeight = generateSetElementSizeFn('height', 'Height', 'top', 'bottom');\r\n\r\n/**\r\n * Find offset of an element relative to the document, considering scroll offsets\r\n * @param {Element} el\r\n * @returns {{top: number, left: number}}\r\n */\r\nconst getElementOffset = el => {\r\n if (!el.getClientRects().length) {\r\n return { top: 0, left: 0 };\r\n }\r\n\r\n let rect = el.getBoundingClientRect();\r\n let view = el.ownerDocument.defaultView;\r\n\r\n return {\r\n top: rect.top + view.pageYOffset,\r\n left: rect.left + view.pageXOffset,\r\n };\r\n};\r\n\r\n/**\r\n * Calculates the anchored position relative to this element. <br />\r\n * The return value will include an `left`/`top` position on left/top axis, <br />\r\n * an `right`/`bottom` position which is the exact opposite, <br />\r\n * and the `xSpec`/`ySpec` after normalizing rtl based values (`'start'`/`'end'`).\r\n * @param {Element} el? - the target element to base the calculations on. If `size` and `rtl` are specified - then this argument is optional.\r\n * @param {'left'|'center'|'right'|'start'|'end'|string|number} xSpec - horizontal anchor specification (could be either `'left'|'center'|'right'|'start'|'end'` or a percentage `'50%'` or a fixed decimal `Number`)\r\n * @param {'top'|'center'|'bottom'|string|number} ySpec - vertical anchor specification (could be either `'top'|'center'|'bottom'` or a percentage `'50%'` or a fixed decimal `Number`)\r\n * @param {{width: number, height: number}?} size - can be specified if already known, to avoid extra dom calculations. This is the outer size of the element, including padding and borders.\r\n * @param {boolean?} [rtl] - if not specified and values like `'start'`/`'end'` are use, then `rtl` is auto detected\r\n * @returns {{left: number, top: number, right: number, bottom: number, xSpec: string|number, ySpec: string|number}}\r\n */\r\nconst anchoredPosition = function (el, xSpec, ySpec, size, rtl) {\r\n if (!size) {\r\n size = {\r\n width: getElementWidth(el, true, true),\r\n height: getElementWidth(el, true, true),\r\n };\r\n }\r\n\r\n if (xSpec === 'start' || xSpec === 'end') {\r\n if ((/**@type boolean|null*/rtl) === null || rtl === undefined) {\r\n rtl = getComputedStyle(el).direction === 'rtl';\r\n }\r\n xSpec = xSpec === 'start' ? (rtl ? 'right' : 'left') : (rtl ? 'left' : 'right');\r\n }\r\n\r\n let x, y;\r\n let xInverted, yInverted;\r\n\r\n if (xSpec === 'right') {\r\n x = size.width;\r\n xInverted = 0;\r\n }\r\n else if (xSpec === 'center') {\r\n x = size.width / 2;\r\n xInverted = x;\r\n }\r\n else if (xSpec === 'left') {\r\n x = 0;\r\n xInverted = size.width;\r\n }\r\n else if (xSpec && (typeof xSpec === 'string') && xSpec.charAt(xSpec.length - 1) === '%') {\r\n let percent = ((parseFloat(xSpec) || 0) / 100);\r\n x = size.width * percent;\r\n xInverted = size.width * -percent;\r\n\r\n if ((/**@type boolean|null*/rtl) === null || rtl === undefined)\r\n rtl = getComputedStyle(el).direction === 'rtl';\r\n\r\n if (rtl) {\r\n x = size.width - x;\r\n xInverted = size.width - x;\r\n }\r\n }\r\n else {\r\n x = parseFloat(xSpec) || 0;\r\n xInverted = -x;\r\n }\r\n\r\n if (ySpec === 'bottom') {\r\n y = size.height;\r\n yInverted = 0;\r\n }\r\n else if (ySpec === 'center') {\r\n y = size.height / 2;\r\n yInverted = y;\r\n }\r\n else if (ySpec === 'top') {\r\n y = 0;\r\n yInverted = size.height;\r\n }\r\n else if (ySpec && (typeof ySpec === 'string') && ySpec.charAt(ySpec.length - 1) === '%') {\r\n let percent = ((parseFloat(ySpec) || 0) / 100);\r\n y = size.height * percent;\r\n yInverted = size.height * -percent;\r\n }\r\n else {\r\n y = parseFloat(ySpec) || 0;\r\n yInverted = -y;\r\n }\r\n\r\n return {\r\n left: x,\r\n top: y,\r\n right: xInverted,\r\n bottom: yInverted,\r\n xSpec: xSpec,\r\n ySpec: ySpec,\r\n };\r\n};\r\n\r\nconst timeToMs = (value) => {\r\n if (!value) {\r\n return;\r\n }\r\n\r\n let isMs = value.endsWith('ms');\r\n return parseFloat(value) * (isMs ? 1 : 1000);\r\n};\r\n\r\nconst isTimeString = (value) => {\r\n return /^-?(0?\\.)?\\d+m?s$/.test(value);\r\n};\r\n\r\n/**\r\n *\r\n * @param {string} transition\r\n * @return {{duration: number, delay: number, name: string, timingFunction: string?}}\r\n */\r\nconst parseSingleTransition = (transition) => {\r\n let parts = transition.split(/\\s+/),\r\n name = parts[0],\r\n duration = parts[1],\r\n timingFunctionOrDelay = parts[2],\r\n delay = parts[3];\r\n\r\n if (isTimeString(timingFunctionOrDelay)) {\r\n return {\r\n delay: timeToMs(timingFunctionOrDelay),\r\n duration: timeToMs(duration),\r\n name: name,\r\n };\r\n }\r\n\r\n return {\r\n delay: timeToMs(delay),\r\n duration: timeToMs(duration),\r\n name: name,\r\n timingFunction: timingFunctionOrDelay,\r\n };\r\n};\r\n\r\n/**\r\n *\r\n * @param {string} transition\r\n * @return {{duration: number, delay: number, name: string, timingFunction: string?}[]}\r\n */\r\nconst parseTransition = (transition) => {\r\n if (!transition) return [];\r\n return (transition.match(/([^,()]|\\([^)]*\\))+/g) ?? []).map(value => value.trim()).filter(value => value.length > 0).map(parseSingleTransition);\r\n};\r\n\r\nexport {\r\n getCssProps,\r\n setCssProps,\r\n getElementWidth,\r\n getElementHeight,\r\n setElementWidth,\r\n setElementHeight,\r\n getPseudoElementWidth,\r\n getPseudoElementHeight,\r\n getElementOffset,\r\n anchoredPosition,\r\n parseTransition,\r\n parseSingleTransition,\r\n isTimeString,\r\n timeToMs,\r\n};\r\n","/**\r\n * @param {Node} el\r\n * @returns {Node|null}\r\n */\r\nconst getRootNode = function (el) {\r\n if (!el) return null;\r\n if ('getRootNode' in el)\r\n return el.getRootNode();\r\n\r\n while (el.parentNode)\r\n el = el.parentNode;\r\n\r\n return el;\r\n};\r\n\r\n/**\r\n * @param {Node} el\r\n * @param {string} selector\r\n * @returns {Node|null}\r\n */\r\nconst closest = function (el, selector) {\r\n if ('closest' in el)\r\n return el.closest(selector);\r\n\r\n const matches = Element.prototype.matches ||\r\n Element.prototype.msMatchesSelector ||\r\n Element.prototype.webkitMatchesSelector;\r\n\r\n do {\r\n if (matches.call(el, selector))\r\n return el;\r\n\r\n el = el.parentElement || el.parentNode;\r\n } while (el !== null && el.nodeType === 1);\r\n\r\n return null;\r\n};\r\n\r\n/**\r\n * @param {Element} el\r\n */\r\nconst remove = function (el) {\r\n if (!el) return;\r\n\r\n if ('remove' in el)\r\n el.remove();\r\n else if (el.parentNode)\r\n el.parentNode.removeChild(el);\r\n};\r\n\r\n/**\r\n * @param {ChildNode} before\r\n * @param {(Node|string)[]} nodes\r\n */\r\nconst before = function (before, ...nodes) {\r\n if (nodes.length === 0) return;\r\n\r\n if ('before' in before) {\r\n before.before(...nodes);\r\n } else {\r\n if (nodes.length === 1) {\r\n let node = nodes[0];\r\n const isNode = node instanceof Node;\r\n node = isNode ? node : document.createTextNode(String(node));\r\n before.parentNode.insertBefore(node, before);\r\n } else {\r\n let docFrag = document.createDocumentFragment();\r\n\r\n for (const node of nodes) {\r\n const isNode = node instanceof Node;\r\n docFrag.appendChild(isNode ? node : document.createTextNode(String(node)));\r\n }\r\n\r\n before.parentNode.insertBefore(docFrag, before);\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * @param {ChildNode} after\r\n * @param {(Node|string)[]} nodes\r\n */\r\nconst after = function (after, ...nodes) {\r\n if (nodes.length === 0) return;\r\n\r\n if ('after' in after) {\r\n after.after(...nodes);\r\n } else {\r\n if (nodes.length === 1) {\r\n let node = nodes[0];\r\n const isNode = node instanceof Node;\r\n node = isNode ? node : document.createTextNode(String(node));\r\n\r\n if (after.nextSibling)\r\n after.parentNode.insertBefore(node, after.nextSibling);\r\n else after.parentNode.appendChild(node);\r\n } else {\r\n let docFrag = document.createDocumentFragment();\r\n\r\n for (const node of nodes) {\r\n const isNode = node instanceof Node;\r\n docFrag.appendChild(isNode ? node : document.createTextNode(String(node)));\r\n }\r\n\r\n if (after.nextSibling)\r\n after.parentNode.insertBefore(docFrag, after.nextSibling);\r\n else after.parentNode.appendChild(docFrag);\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * @param {ParentNode|Element} parent\r\n * @param {(Node|string)[]} nodes\r\n */\r\nconst prepend = function (parent, ...nodes) {\r\n if (nodes.length === 0) return;\r\n\r\n if ('prepend' in parent) {\r\n parent.prepend(...nodes);\r\n } else {\r\n if (nodes.length === 1) {\r\n let node = nodes[0];\r\n const isNode = node instanceof Node;\r\n node = isNode ? node : document.createTextNode(String(node));\r\n\r\n if (parent.firstChild)\r\n parent.insertBefore(node, parent.firstChild);\r\n else parent.appendChild(node);\r\n } else {\r\n let docFrag = document.createDocumentFragment();\r\n\r\n for (const node of nodes) {\r\n const isNode = node instanceof Node;\r\n docFrag.appendChild(isNode ? node : document.createTextNode(String(node)));\r\n }\r\n\r\n if (parent.firstChild)\r\n parent.insertBefore(docFrag, parent.firstChild);\r\n else parent.appendChild(docFrag);\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * @param {ParentNode|Element} parent\r\n * @param {(Node|string)[]} nodes\r\n */\r\nconst append = function (parent, ...nodes) {\r\n if (nodes.length === 0) return;\r\n\r\n if ('append' in parent) {\r\n parent.append(...nodes);\r\n } else {\r\n if (nodes.length === 1) {\r\n let node = nodes[0];\r\n const isNode = node instanceof Node;\r\n node = isNode ? node : document.createTextNode(String(node));\r\n\r\n parent.appendChild(node);\r\n } else {\r\n let docFrag = document.createDocumentFragment();\r\n\r\n for (const child of nodes) {\r\n const isNode = child instanceof Node;\r\n docFrag.appendChild(isNode ? child : document.createTextNode(String(child)));\r\n }\r\n\r\n parent.appendChild(docFrag);\r\n }\r\n }\r\n};\r\n\r\nlet hasScopedQuerySelector = null;\r\n\r\nconst detectScopedSelectorFeature = () => {\r\n try {\r\n document.createElement('div').querySelector(':scope > div');\r\n hasScopedQuerySelector = true;\r\n } catch (ignored) {\r\n hasScopedQuerySelector = false;\r\n }\r\n};\r\n\r\n/**\r\n * @param {Element} el\r\n * @param {string} selector\r\n * @returns {Element|null}\r\n */\r\nconst scopedSelector = function (el, selector) {\r\n if (hasScopedQuerySelector === null) {\r\n detectScopedSelectorFeature();\r\n }\r\n\r\n if (hasScopedQuerySelector === true) {\r\n return el.querySelector(selector.replace(/((?:^|,)\\s*)/g, '$1:scope '));\r\n } else {\r\n let id = el.id;\r\n const uniqueId = 'ID_' + Date.now();\r\n el.id = uniqueId;\r\n selector = selector.replace(/((?:^|,)\\s*)/g, '$1#' + uniqueId);\r\n try {\r\n return el.querySelector(selector);\r\n } finally {\r\n this.id = id;\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * @param {Element} el\r\n * @param {string} selector\r\n * @returns {NodeListOf<Element>}\r\n */\r\nconst scopedSelectorAll = function (el, selector) {\r\n if (hasScopedQuerySelector === null) {\r\n detectScopedSelectorFeature();\r\n }\r\n\r\n if (hasScopedQuerySelector === true) {\r\n return el.querySelectorAll(selector.replace(/((?:^|,)\\s*)/g, '$1:scope '));\r\n } else {\r\n let id = el.id;\r\n const uniqueId = 'ID_' + Date.now();\r\n el.id = uniqueId;\r\n selector = selector.replace(/((?:^|,)\\s*)/g, '$1#' + uniqueId);\r\n try {\r\n return el.querySelectorAll(selector);\r\n } finally {\r\n this.id = id;\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * @param {Element} el\r\n * @param {string} className\r\n * @param {boolean?} [toggle]\r\n * @returns {boolean} `true` if the class name is now present\r\n */\r\nconst toggleClass = function (el, className, toggle) {\r\n let classes = el.classList;\r\n\r\n if (toggle === undefined) {\r\n if (classes.contains(className)) {\r\n classes.remove(className);\r\n return false;\r\n }\r\n else {\r\n classes.add(className);\r\n return true;\r\n }\r\n } else {\r\n if (toggle) {\r\n classes.add(className);\r\n return true;\r\n }\r\n else {\r\n classes.remove(className);\r\n return false;\r\n }\r\n }\r\n};\r\n\r\nexport {\r\n getRootNode,\r\n closest,\r\n remove,\r\n before,\r\n after,\r\n prepend,\r\n append,\r\n scopedSelector,\r\n scopedSelectorAll,\r\n toggleClass,\r\n};\r\n","import { getElementOffset } from '@danielgindi/dom-utils/lib/Css.js';\r\n\r\n/**\r\n * @typedef {function(index: number):(number|undefined)} VirtualListHelper~ItemHeightEstimatorFunction\r\n */\r\n\r\n/**\r\n * @typedef {function():Element} VirtualListHelper~ItemElementCreatorFunction\r\n */\r\n\r\n/**\r\n * @typedef {function(itemEl: Element, index: number)} VirtualListHelper~ItemRenderFunction\r\n */\r\n\r\n/**\r\n * @typedef {function(itemEl: Element)} VirtualListHelper~ItemUnrenderFunction\r\n */\r\n\r\n/**\r\n * @typedef {Object} VirtualListHelper~Options\r\n * @property {Element} list - the main element to operate inside of\r\n * @property {Element?} [itemsParent] - the element to use as parent for the items (automatically created in virtual mode, uses parent by default in non-virtual mode)\r\n * @property {boolean} [autoVirtualWrapperWidth=true] automatically set the width of the virtual wrapper\r\n * @property {boolean} [hookScrollEvent=true] automatically hook scroll event as needed\r\n * @property {number} [count=0] the item count\r\n * @property {boolean} [virtual=true] is virtual mode on?\r\n * @property {number} [estimatedItemHeight=20] estimated item height\r\n * @property {number} [buffer=5] the amount of buffer items to keep on each end of the list\r\n * @property {VirtualListHelper~ItemHeightEstimatorFunction} [itemHeightEstimatorFn] an optional function for providing item height estimations\r\n * @property {VirtualListHelper~ItemElementCreatorFunction} [itemElementCreatorFn] an optional function for providing fresh item elements (default creates `<li />`s)\r\n * @property {VirtualListHelper~ItemRenderFunction} [onItemRender] a function for rendering element content based on item index\r\n * @property {VirtualListHelper~ItemUnrenderFunction} [onItemUnrender] a function for freeing resources in an item element\r\n * @property {function(height: number)} [onScrollHeightChange] a function to be notified when scroll height changes\r\n *\r\n */\r\n\r\n/** */\r\n\r\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\r\n\r\nconst hasInsertAdjacentElement = Element.prototype.insertAdjacentElement !== undefined;\r\n\r\nfunction insertBefore(el, before, parent) {\r\n if (!before)\r\n parent.appendChild(el);\r\n else if (hasInsertAdjacentElement === false || el instanceof DocumentFragment)\r\n parent.insertBefore(el, before);\r\n else before.insertAdjacentElement('beforebegin', el);\r\n}\r\n\r\n/**\r\n *\r\n * @param {Element} itemEl\r\n * @param {DocumentFragment|null} fragment\r\n * @param {Node|undefined} before\r\n * @param {Element} itemParent\r\n * @returns {DocumentFragment|null}\r\n */\r\nfunction insertBeforeWithFragment(itemEl, fragment, before, itemParent) {\r\n if (itemEl.parentNode !== itemParent) {\r\n if (!fragment)\r\n fragment = document.createDocumentFragment();\r\n fragment.appendChild(itemEl);\r\n } else {\r\n // insert fragment\r\n if (fragment && fragment.childNodes.length > 0) {\r\n insertBefore(fragment, before, itemParent);\r\n fragment = null;\r\n }\r\n\r\n // insert element\r\n if (itemEl.nextSibling !== before) {\r\n insertBefore(itemEl, before, itemParent);\r\n }\r\n }\r\n\r\n return fragment;\r\n}\r\n\r\nclass VirtualListHelper {\r\n /**\r\n * @param {VirtualListHelper~Options} opts\r\n */\r\n constructor(opts) {\r\n /** @private */\r\n const p = this._p = {\r\n // these come from options:\r\n\r\n list: opts.list || null,\r\n hookScrollEvent: opts.hookScrollEvent === undefined ? true : !!opts.hookScrollEvent,\r\n count: opts.count || 0,\r\n virtual: opts.virtual === undefined ? true : !!opts.virtual,\r\n userItemsParent: opts.itemsParent || null,\r\n setVirtualWrapperWidth: opts.autoVirtualWrapperWidth ?? true,\r\n estimatedItemHeight: 20,\r\n buffer: 5,\r\n\r\n /** @type VirtualListHelper~ItemHeightEstimatorFunction|null */\r\n itemHeightEstimatorFn: null,\r\n\r\n /** @type VirtualListHelper~ItemElementCreatorFunction|null */\r\n itemElementCreatorFn: defaultElementCreator,\r\n\r\n /** @type VirtualListHelper~ItemRenderFunction|null */\r\n onItemRender: null,\r\n\r\n /** @type VirtualListHelper~ItemUnrenderFunction|null */\r\n onItemUnrender: null,\r\n\r\n /** @type {function(height: number)|null} */\r\n onScrollHeightChange: null,\r\n\r\n // internal:\r\n\r\n /** @type Element|null */\r\n virtualWrapper: null,\r\n\r\n /** @type Element|null */\r\n currentItemsParent: null,\r\n\r\n /** @type {(number|undefined)[]} */\r\n cachedItemHeights: [],\r\n\r\n /** @type {(number|undefined)[]} */\r\n cachedItemEstimatedHeights: [],\r\n\r\n /** @type {(number|undefined)[]} */\r\n cachedItemPositions: [],\r\n\r\n /** @type number */\r\n itemPositionsNeedsUpdate: 0,\r\n\r\n /** @type function */\r\n boundRender: this.render.bind(this),\r\n\r\n /** @type Element[] */\r\n existingEls: [],\r\n };\r\n\r\n p.currentItemsParent = p.userItemsParent || p.list;\r\n\r\n this._hookEvents();\r\n\r\n if (typeof opts.count === 'number')\r\n this.setCount(opts.count);\r\n\r\n if (typeof opts.virtual === 'boolean')\r\n this.setVirtual(opts.virtual);\r\n\r\n if (typeof opts.estimatedItemHeight === 'number')\r\n this.setEstimatedItemHeight(opts.estimatedItemHeight);\r\n\r\n if (typeof opts.buffer === 'number')\r\n this.setBuffer(opts.buffer);\r\n\r\n if (typeof opts.itemHeightEstimatorFn === 'function')\r\n this.setItemHeightEstimatorFn(opts.itemHeightEstimatorFn);\r\n\r\n if (typeof opts.itemElementCreatorFn === 'function')\r\n this.setItemElementCreatorFn(opts.itemElementCreatorFn);\r\n\r\n if (typeof opts.onItemRender === 'function')\r\n this.setOnItemRender(opts.onItemRender);\r\n\r\n if (typeof opts.onItemUnrender === 'function')\r\n this.setOnItemUnrender(opts.onItemUnrender);\r\n\r\n if (typeof opts.onScrollHeightChange === 'function')\r\n this.setOnScrollHeightChange(opts.onScrollHeightChange);\r\n }\r\n\r\n /**\r\n * Clean up and free up all resources.\r\n */\r\n destroy() {\r\n this._unhookEvents().invalidate()._destroyElements();\r\n }\r\n\r\n /**\r\n * Sets whether 'scroll' event on the list should be hooked automatically.\r\n * @param {boolean} enabled\r\n * @returns {VirtualListHelper}\r\n */\r\n setHookScrollEvent(enabled) {\r\n const p = this._p;\r\n enabled = enabled === undefined ? true : !!enabled;\r\n\r\n if (p.hookScrollEvent === enabled)\r\n return this;\r\n\r\n p.hookScrollEvent = enabled;\r\n\r\n this._unhookEvents()._hookEvents();\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * @returns {boolean} whether 'scroll' event on the list should be hooked automatically\r\n */\r\n isHookScrollEventEnabled() {\r\n const p = this._p;\r\n return p.hookScrollEvent;\r\n }\r\n\r\n /**\r\n * Sets the list item count. <br />\r\n * You should probably call `render()` after this.\r\n * @param {number} count\r\n * @returns {VirtualListHelper}\r\n */\r\n setCount(count) {\r\n const p = this._p;\r\n p.count = count;\r\n\r\n return this.invalidate();\r\n }\r\n\r\n /**\r\n * @returns {number} current item count\r\n */\r\n getCount() {\r\n const p = this._p;\r\n return p.count;\r\n }\r\n\r\n /**\r\n * Switches between virtual and non-virtual mode. <br />\r\n * The list is invalidated automatically. <br />\r\n * You should call `render()` to update the view.\r\n * @param {boolean} enabled\r\n * @returns {VirtualListHelper}\r\n */\r\n setVirtual(enabled) {\r\n const p = this._p;\r\n enabled = enabled === undefined ? true : !!enabled;\r\n\r\n if (p.virtual === enabled)\r\n return this;\r\n\r\n p.virtual = enabled;\r\n\r\n this._hookEvents().invalidate()._destroyElements();\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * @returns {boolean} virtual mode\r\n */\r\n isVirtual() {\r\n const p = this._p;\r\n return p.virtual;\r\n }\r\n\r\n /**\r\n * Sets estimated item height. <br />\r\n * No need to be accurate. <br />\r\n * The better the estimation - the better the scrollbar behavior will be. <br />\r\n * Applicable for virtual-mode only. <br />\r\n * You should `invalidate` if you want this to take effect on the existing rendering.\r\n * @param {number} height - a positive number representing estimated item height.\r\n * @returns {VirtualListHelper}\r\n */\r\n setEstimatedItemHeight(height) {\r\n const p = this._p;\r\n p.estimatedItemHeight = Math.abs((typeof height === 'number' ? height : Number(height)) || 20);\r\n return this;\r\n }\r\n\r\n /**\r\n * @returns {number} current item height estimation\r\n */\r\n getEstimatedItemHeight() {\r\n const p = this._p;\r\n return p.estimatedItemHeight;\r\n }\r\n\r\n /**\r\n * Sets whether the virtual wrapper width should be set automatically. <br />\r\n * @param {boolean} enabled\r\n * @returns {VirtualListHelper}\r\n */\r\n setAutoVirtualWrapperWidth(enabled) {\r\n const p = this._p;\r\n p.autoVirtualWrapperWidth = enabled === undefined ? true : !!enabled;\r\n\r\n if (p.virtualWrapper) {\r\n if (p.autoVirtualWrapperWidth !== p.virtualWrapperWidthWasSet) {\r\n p.virtualWrapper.style.width = p.autoVirtualWrapperWidth ? '100%' : '';\r\n p.virtualWrapperWidthWasSet = p.autoVirtualWrapperWidth;\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * @returns {boolean} whether the virtual wrapper width should be set automatically\r\n */\r\n isAutoVirtualWrapperWidth() {\r\n const p = this._p;\r\n return p.autoVirtualWrapperWidth;\r\n }\r\n\r\n /**\r\n * Sets the amount of buffer items to keep on each end of the list. <br />\r\n * Applicable for virtual-mode only.\r\n * @param {number} buffer - a positive value representing the count of buffer items for each end.\r\n * @returns {VirtualListHelper}\r\n */\r\n setBuffer(buffer) {\r\n const p = this._p;\r\n p.buffer = Math.abs(typeof buffer === 'number' ? buffer : (Number(buffer) || 5));\r\n return this;\r\n }\r\n\r\n /**\r\n * @returns {number} current buffer value\r\n */\r\n getBuffer() {\r\n const p = this._p;\r\n return p.buffer;\r\n }\r\n\r\n /**\r\n * The `itemHeightEstimatorFn` is an alternative to `estimatedItemHeight` to give better estimations for specific item. <br/>\r\n * It's optional, and if it's present - it should return either a numeric height estimation,\r\n * or `undefined` to fall back to the default estimation. <br />\r\n * You should `invalidate` if you want this to take effect on the existing rendering.\r\n * @param {VirtualListHelper~ItemHeightEstimatorFunction} fn\r\n * @returns {VirtualListHelper}\r\n */\r\n setItemHeightEstimatorFn(fn) {\r\n const p = this._p;\r\n p.itemHeightEstimatorFn = fn;\r\n return this;\r\n }\r\n\r\n /**\r\n * The `itemElementCreatorFn` is a function creating a basic item element, that will be possibly reused later. <br />\r\n * It has no association with a specific item index. <br />\r\n * You should `invalidate` if you want this to take effect on the existing rendering.\r\n * @param {VirtualListHelper~ItemElementCreatorFunction} fn\r\n * @returns {VirtualListHelper}\r\n */\r\n setItemElementCreatorFn(fn) {\r\n const p = this._p;\r\n p.itemElementCreatorFn = fn || defaultElementCreator;\r\n return this;\r\n }\r\n\r\n /**\r\n * The `onItemRender` is a function called for rendering the contents of an item. <br />\r\n * It's passed an `Element` and an item index. <br />\r\n * You should `invalidate` if you want this to take effect on the existing rendering.\r\n * @param {VirtualListHelper~ItemRenderFunction} fn\r\n * @returns {VirtualListHelper}\r\n */\r\n setOnItemRender(fn) {\r\n const p = this._p;\r\n p.onItemRender = fn;\r\n return this;\r\n }\r\n\r\n /**\r\n * The `onItemUnrender` is a function called for freeing resources in an item element,\r\n * if you've attached something that needs to be explicitly freed. <br />\r\n * It's passed an `Element` only, and has no association with a specific index,\r\n * as by the time it's called - the indexes are probably not valid anymore.\r\n * @param {VirtualListHelper~ItemUnrenderFunction} fn\r\n * @returns {VirtualListHelper}\r\n */\r\n setOnItemUnrender(fn) {\r\n const p = this._p;\r\n p.onItemUnrender = fn;\r\n return this;\r\n }\r\n\r\n /**\r\n * The `onScrollHeightChange` is a function called when the scroll height changes.\r\n * @param {function(height: number)} fn\r\n * @returns {VirtualListHelper}\r\n */\r\n setOnScrollHeightChange(fn) {\r\n const p = this._p;\r\n p.onScrollHeightChange = fn;\r\n return this;\r\n }\r\n\r\n /**\r\n * Estimates the full scroll height. This gets better as more renderings occur.\r\n * @returns {number}\r\n */\r\n estimateFullHeight() {\r\n const p = this._p;\r\n\r\n if (p.count === 0)\r\n return 0;\r\n\r\n if (p.virtual) {\r\n return this._calculateItemPosition(p.count) || 0;\r\n } else {\r\n const existingEls = p.existingEls;\r\n if (p.count === existingEls.length) {\r\n let rect1 = existingEls[0].getBoundingClientRect();\r\n let rect2 = existingEls[existingEls.length - 1].getBoundingClientRect();\r\n return rect2.top - rect1.top + rect2.height;\r\n }\r\n\r\n return this._calculateItemPosition(p.count) || 0;\r\n }\r\n }\r\n\r\n /**\r\n * States that the cached positions/heights are invalid,\r\n * and needs to be completely re-calculated.<br />\r\n * You should probably call `render()` after this.\r\n * @returns {VirtualListHelper}\r\n */\r\n invalidatePositions() {\r\n const p = this._p;\r\n\r\n p.itemPositionsNeedsUpdate = 0;\r\n p.cachedItemHeights = [];\r\n p.cachedItemEstimatedHeights = [];\r\n p.cachedItemPositions = [];\r\n p.cachedItemHeights.length = p.count;\r\n p.cachedItemEstimatedHeights.length = p.count;\r\n p.cachedItemPositions.length = p.count;\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * States that the indexes/item count/rendered content are invalid,\r\n * and needs to be completely re-calculated and re-rendered. <br />\r\n * You should probably call `render()` after this.\r\n * @returns {VirtualListHelper}\r\n */\r\n invalidate() {\r\n const p = this._p;\r\n\r\n this.invalidatePositions();\r\n\r\n if (!p.virtual) {\r\n this._destroyElements();\r\n }\r\n\r\n for (let el of p.existingEls)\r\n delete el[ItemIndexSymbol];\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Renders the current viewport. <br />\r\n * Call this after making changes to the list. <br />\r\n * In virtual mode, this is called automatically for every scroll event.\r\n */\r\n render() {\r\n const p = this._p;\r\n const list = p.list;\r\n const virtual = p.virtual;\r\n let virtualWrapper = p.virtualWrapper;\r\n let itemParent = p.currentItemsParent;\r\n let scrollTop = list.scrollTop;\r\n let visibleHeight = list.clientHeight;\r\n let visibleBottom = scrollTop + visibleHeight;\r\n let count = p.count;\r\n let buffer = p.buffer;\r\n let onItemUnrender = p.onItemUnrender;\r\n let existingEls = p.existingEls;\r\n let existingCount = existingEls.length;\r\n\r\n if (virtual) {\r\n const originalWidth = list.clientWidth;\r\n\r\n if (!virtualWrapper) {\r\n virtualWrapper = p.virtualWrapper = p.userItemsParent;\r\n if (!virtualWrapper) {\r\n virtualWrapper = p.virtualWrapper = document.createElement('div');\r\n list.appendChild(virtualWrapper);\r\n }\r\n\r\n this._resetCurrentItemsParent();\r\n itemParent = p.currentItemsParent;\r\n\r\n if (p.autoVirtualWrapperWidth) {\r\n virtualWrapper.style.width = '100%';\r\n p.virtualWrapperWidthWasSet = true;\r\n } else {\r\n p.virtualWrapperWidthWasSet = false;\r\n }\r\n }\r\n\r\n // Mark all of them for potential reuse\r\n for (let i = 0; i < existingCount; i++) {\r\n existingEls[i][ReuseElSymbol] = true;\r\n }\r\n\r\n // Make sure we have at least estimated positions for all items so we can translate scroll position\r\n this._calculateItemPosition(p.count - 1);\r\n\r\n // Find existing elements index range\r\n let existingRange = this._getExistingElsRange();\r\n\r\n // Find first visible element\r\n let firstVisibleIndex = binarySearchPosition(p.cachedItemPositions, scrollTop);\r\n let firstRenderIndex = Math.max(0, firstVisibleIndex - buffer);\r\n\r\n // Iterate over viewport\r\n let index = firstRenderIndex;\r\n let renderPos = this._calculateItemPosition(index);\r\n let bufferEnd = buffer;\r\n\r\n // we want to render until viewport's bottom + buffer items\r\n let maxIndexToRender = Math.max(index, binarySearchPosition(p.cachedItemPositions, visibleBottom - 1) + 1 + buffer);\r\n\r\n let insertedItems = [];\r\n\r\n /** @type DocumentFragment|null */\r\n let fragment = null;\r\n\r\n // Find the element to insert before\r\n let before = virtualWrapper.childNodes[0];\r\n\r\n const findElementToReuse = function (index) {\r\n // Find existing element to reuse\r\n /** @type Element|undefined */\r\n let existingEl = undefined;\r\n\r\n if (existingRange.firstIndex !== -1 && index >= existingRange.firstIndex && index <= existingRange.lastIndex) {\r\n existingEl = existingEls.find(x => x[ItemIndexSymbol] === index && x[ReuseElSymbol] === true);\r\n }\r\n\r\n if (existingEl === undefined) {\r\n existingEl = ((existingRange.firstIndex < firstRenderIndex || existingRange.firstValidArrayIndex > 0)\r\n ? existingEls.find((x) =>\r\n (x[ItemIndexSymbol] < firstRenderIndex || false === hasOwnProperty.call(x, ItemIndexSymbol))\r\n && x[ReuseElSymbol] === true)\r\n : undefined\r\n ) || findLast(existingEls, (x) => x[ReuseElSymbol] === true);\r\n }\r\n\r\n if (existingEl !== undefined) {\r\n delete existingEl[ReuseElSymbol];\r\n }\r\n\r\n return existingEl;\r\n };\r\n\r\n // First we iterate and try to add all at once in a fragment, as much as we can.\r\n // And then reflow the at once.\r\n for (; index < count && index < maxIndexToRender; index++) {\r\n let existingEl = findElementToReuse(index);\r\n\r\n if (before && before === existingEl)\r\n before = before.nextSibling;\r\n\r\n // Dequeue the element by reusing or creating a new one\r\n const itemEl = this._dequeueElementForIndex(existingEl, index, before, true);\r\n insertedItems.push([itemEl, index]);\r\n\r\n fragment = insertBeforeWithFragment(itemEl, fragment, before, itemParent);\r\n }\r\n\r\n // Insert any remaining fragment\r\n if (fragment && fragment.childNodes.length > 0) {\r\n insertBefore(fragment, before, itemParent);\r\n }\r\n\r\n // Iterate on inserted items and reflow them\r\n for (let item of insertedItems) {\r\n const index = item[1];\r\n this._insertItemAndFlow(item[0], index, false /* inserted already */);\r\n renderPos = p.cachedItemPositions[index] + p.cachedItemHeights[index];\r\n }\r\n\r\n // See if we still need to insert more items\r\n if (renderPos < visibleBottom) {\r\n for (; (renderPos < visibleBottom || bufferEnd-- > 0) && index < count; index++) {\r\n let existingEl = findElementToReuse(index);\r\n\r\n if (before && before === existingEl)\r\n before = before.nextSibling;\r\n\r\n // Dequeue the element by reusing or creating a new one\r\n this._dequeueElementForIndex(existingEl, index, before, false);\r\n\r\n // Increment pointers\r\n renderPos = p.cachedItemPositions[index] + p.cachedItemHeights[index];\r\n }\r\n }\r\n\r\n // Calculate up-to-date scroll height\r\n let scrollHeight = this.estimateFullHeight();\r\n let scrollHeightPx = scrollHeight + 'px';\r\n\r\n if (virtualWrapper.style.height !== scrollHeightPx) {\r\n p.virtualWrapper.style.height = scrollHeightPx;\r\n p.onScrollHeightChange?.(scrollHeight);\r\n }\r\n\r\n if (originalWidth !== list.clientWidth)\r\n this.render();\r\n } else { // non-virtual\r\n if (count !== existingEls.length) {\r\n for (let i = 0; i < existingCount; i++) {\r\n existingEls[i][ReuseElSymbol] = true;\r\n }\r\n\r\n // Find the element to insert before\r\n let before = itemParent.childNodes[0];\r\n\r\n /** @type DocumentFragment|null */\r\n let fragment = null;\r\n\r\n for (let index = 0; index < count; index++) {\r\n // Find existing element to reuse\r\n let existingEl = existingEls.find(x => x[ItemIndexSymbol] === index && x[ReuseElSymbol] === true);\r\n\r\n if (existingEl !== undefined) {\r\n delete existingEl[ReuseElSymbol];\r\n }\r\n\r\n if (before && before === existingEl)\r\n before = before.nextSibling;\r\n\r\n // Dequeue the element by reusing or creating a new one\r\n const itemEl = this._dequeueElementForIndex(existingEl, index, before, true);\r\n\r\n fragment = insertBeforeWithFragment(itemEl, fragment, before, itemParent);\r\n }\r\n\r\n // Insert any remaining fragment\r\n if (fragment && fragment.childNodes.length > 0) {\r\n insertBefore(fragment, before, itemParent);\r\n }\r\n }\r\n }\r\n\r\n // Cleanup extra unused elements\r\n existingCount = existingEls.length; // May have changed\r\n for (let i = 0; i < existingCount; i++) {\r\n const el = existingEls[i];\r\n if (el[ReuseElSymbol] !== true) continue;\r\n\r\n let parent = el.parentNode;\r\n if (parent)\r\n parent.removeChild(el);\r\n if (onItemUnrender && el[ItemIndexSymbol] !== undefined)\r\n onItemUnrender(el);\r\n existingEls.splice(i, 1);\r\n\r\n i--;\r\n existingCount--;\r\n }\r\n }\r\n\r\n /**\r\n * States that items were added at a certain position in the list. <br />\r\n * Virtual mode: Call `render()` to update the view after making changes.\r\n * @param {number} count\r\n * @param {number} [atIndex=-1]\r\n * @returns {VirtualListHelper}\r\n */\r\n addItemsAt(count, atIndex = -1) {\r\n if (typeof count !== 'number' || count <= 0)\r\n return this;\r\n\r\n const p = this._p;\r\n\r\n if (atIndex < 0 || atIndex >= p.count)\r\n atIndex = p.count;\r\n\r\n p.count += count;\r\n\r\n if (p.virtual) {\r\n if (atIndex >= 0 && atIndex < p.count) {\r\n this._invalidateItemIndexesAt(atIndex, -1);\r\n }\r\n }\r\n else { // non-virtual\r\n let existingEls = p.existingEls;\r\n let existingCount = existingEls.length;\r\n if (existingCount !== p.count - count)\r\n return this;\r\n\r\n let existingRange = this._getExistingElsRange();\r\n if (existingRange.firstValidArrayIndex === -1)\r\n return this;\r\n\r\n const itemParent = p.currentItemsParent;\r\n\r\n let startIndex = existingRange.firstValidArrayIndex + atIndex - existingRange.firstIndex;\r\n\r\n this._pushItemIndexesAt(atIndex, count);\r\n\r\n /** @type Node|undefined */\r\n let before = existingEls[startIndex - 1]\r\n ? existingEls[startIndex - 1].nextSibling\r\n : existingEls[0];\r\n\r\n /** @type DocumentFragment|null */\r\n let fragment = null;\r\n\r\n for (let index = atIndex, end = atIndex + count; index < end; index++) {\r\n const itemEl = this._dequeueElementForIndex(undefined, index, before, true);\r\n fragment = insertBeforeWithFragment(itemEl, fragment, before, itemParent);\r\n }\r\n\r\n // Insert any remaining fragment\r\n if (fragment && fragment.childNodes.length > 0) {\r\n insertBefore(fragment, before, itemParent);\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * States that items were removed at a certain position in the list. <br />\r\n * Virtual mode: Call `render()` to update the view after making changes.\r\n * @param {number} count\r\n * @param {number} atIndex\r\n * @returns {VirtualListHelper}\r\n */\r\n removeItemsAt(count, atIndex) {\r\n const p = this._p;\r\n\r\n if (typeof count !== 'number' || typeof atIndex !== 'number' || count <= 0 || atIndex < 0 || atIndex >= p.count)\r\n return this;\r\n\r\n p.count -= Math.min(count, p.count - atIndex);\r\n\r\n if (p.virtual) {\r\n this._invalidateItemIndexesAt(atIndex, -1);\r\n }\r\n else { // non-virtual\r\n let existingEls = p.existingEls;\r\n let existingCount = existingEls.length;\r\n if (existingCount !== p.count + count)\r\n return this;\r\n\r\n let existingRange = this._getExistingElsRange();\r\n if (existingRange.firstValidArrayIndex === -1)\r\n return this;\r\n\r\n this._pushItemIndexesAt(atIndex + count, -count);\r\n\r\n const onItemUnrender = p.onItemUnrender;\r\n let index = existingRange.firstValidArrayIndex + atIndex - existingRange.firstIndex;\r\n if (index < existingEls.length) {\r\n for (let i = 0; i < count; i++) {\r\n let itemEl = existingEls[index + i];\r\n\r\n let parent = itemEl.parentNode;\r\n if (parent)\r\n parent.removeChild(itemEl);\r\n if (onItemUnrender && itemEl[ItemIndexSymbol] !== undefined)\r\n onItemUnrender(itemEl);\r\n }\r\n existingEls.splice(index, count);\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Mark an element for a re-render. <br />\r\n * Virtual mode: Call `render()` to update the view after making changes. <br />\r\n * Non-virtual mode - the element is re-rendered immediately.\r\n * @param {number} index - the index of the element to re-render\r\n * @returns {VirtualListHelper}\r\n */\r\n refreshItemAt(index) {\r\n const p = this._p;\r\n\r\n if (typeof index !== 'number' || index < 0 || index >= p.count)\r\n return this;\r\n\r\n if (p.virtual) {\r\n this._invalidateItemIndexesAt(index, 1);\r\n }\r\n else { // non-virtual\r\n let existingEls = p.existingEls;\r\n let existingCount = existingEls.length;\r\n if (existingCount !== p.count)\r\n return this;\r\n\r\n let existingRange = this._getExistingElsRange();\r\n\r\n if (index >= existingRange.firstIndex && index <= existingRange.lastIndex) {\r\n let itemEl = existingEls[existingRange.firstValidArrayIndex + index - existingRange.firstIndex];\r\n delete itemEl[ItemIndexSymbol];\r\n this._dequeueElementForIndex(itemEl, index, itemEl.nextSibling, false);\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Tests whether an item at the specified index is rendered.\r\n * @param {number} index - the index to test\r\n * @returns {boolean}\r\n */\r\n isItemRendered(index) {\r\n const p = this._p;\r\n\r\n if (typeof index !== 'number' || index < 0 || index >= p.count)\r\n return false;\r\n\r\n let existingRange = this._getExistingElsRange();\r\n\r\n return index >= existingRange.firstIndex && index <= existingRange.lastIndex;\r\n }\r\n\r\n /**\r\n * Retrieves DOM element for the item at the specified index - if it's currently rendered.\r\n * @param {number} index - the index to retrieve\r\n * @returns {Element|undefined}\r\n */\r\n getItemElementAt(index) {\r\n const p = this._p;\r\n\r\n if (typeof index !== 'number' || index < 0 || index >= p.count)\r\n return undefined;\r\n\r\n let existingEls = p.existingEls;\r\n let existingRange = this._getExistingElsRange();\r\n\r\n if (index >= existingRange.firstIndex && index <= existingRange.lastIndex) {\r\n return existingEls[existingRange.firstValidArrayIndex + index - existingRange.firstIndex];\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Retrieves the position for the specified index. <br />\r\n * Can be used to scroll to a specific item.\r\n * @param {number} index\r\n * @returns {number|undefined}\r\n */\r\n getItemPosition(index) {\r\n const p = this._p;\r\n\r\n if (typeof index !== 'number' || index < 0 || index >= p.count)\r\n return undefined;\r\n\r\n if (p.virtual) {\r\n return this._calculateItemPosition(index);\r\n } else {\r\n let itemEl = this.getItemElementAt(index);\r\n if (itemEl === undefined)\r\n return undefined;\r\n\r\n const list = p.list;\r\n return getElementOffset(itemEl).top - getElementOffset(list).top + list.scrollTop;\r\n }\r\n }\r\n\r\n /**\r\n * Retrieves the item index for the specified element\r\n * @param {Element} el\r\n * @returns {number|undefined}\r\n */\r\n getItemIndexFromElement(el) {\r\n return el ? el[ItemIndexSymbol] : undefined;\r\n }\r\n\r\n /**\r\n * Retrieves the size (or estimated size, if unknown) for the specified index. <br />\r\n * @param {number} index\r\n * @returns {number|undefined}\r\n */\r\n getItemSize(index) {\r\n const p = this._p;\r\n\r\n if (typeof index !== 'number' || index < 0 || index >= p.count)\r\n return undefined;\r\n\r\n let height = p.cachedItemHeights[index - 1]; // already calculated\r\n\r\n if (height === undefined) {\r\n height = p.itemHeightEstimatorFn ? p.itemHeightEstimatorFn(index - 1) : null; // estimated per item\r\n\r\n if (typeof height !== 'number')\r\n height = p.estimatedItemHeight; // estimated\r\n\r\n p.cachedItemEstimatedHeights[index - 1] = height;\r\n }\r\n\r\n return height;\r\n }\r\n\r\n /**\r\n * Retrieves the number of items that fit into the current viewport.\r\n * @returns {number}\r\n */\r\n getVisibleItemCount() {\r\n const p = this._p, list = p.list;\r\n\r\n let scrollTop = list.scrollTop;\r\n let visibleHeight = list.clientHeight;\r\n let firstVisibleIndex, lastVisibleIndex;\r\n\r\n if (p.virtual) {\r\n firstVisibleIndex = binarySearchPosition(p.cachedItemPositions, scrollTop);\r\n lastVisibleIndex = binarySearchPosition(p.cachedItemPositions, scrollTop + visibleHeight, firstVisibleIndex);\r\n }\r\n else {\r\n const retriever = i => {\r\n let pos = this.getItemPosition(i);\r\n if (pos === undefined)\r\n pos = Infinity;\r\n return pos;\r\n };\r\n\r\n firstVisibleIndex = binarySearchPositionByFn(p.count, retriever, scrollTop);\r\n lastVisibleIndex = binarySearchPositionByFn(p.count, retriever, scrollTop + visibleHeight, firstVisibleIndex);\r\n }\r\n\r\n if (this.getItemPosition(lastVisibleIndex) === scrollTop + visibleHeight)\r\n lastVisibleIndex--;\r\n return (lastVisibleIndex - firstVisibleIndex) + 1;\r\n }\r\n\r\n /**\r\n * Renders a temporary ghost item. Can be used for testings several aspects of a proposed element, i.e measurements.\r\n * @param {*} ghostIndex - the value to pass as the index for the renderer function\r\n * @param {boolean} append - whether to append the item element to the DOM\r\n * @param {function(itemEl: Element)} ghostTester - the function that will receive the element, called synchronously.\r\n */\r\n createGhostItemElement(ghostIndex, append, ghostTester) {\r\n const p = this._p;\r\n\r\n let itemEl = this._dequeueElementForIndex(null, ghostIndex, false, true);\r\n try {\r\n if (append) {\r\n p.currentItemsParent.appendChild(itemEl);\r\n }\r\n ghostTester(itemEl);\r\n } finally {\r\n if (append) {\r\n let parent = itemEl.parentNode;\r\n if (parent)\r\n parent.removeChild(itemEl);\r\n }\r\n if (p.onItemUnrender)\r\n p.onItemUnrender(itemEl);\r\n }\r\n }\r\n\r\n /**\r\n * Reset the pointer to the current items wrapper\r\n * @private\r\n */\r\n _resetCurrentItemsParent() {\r\n const p = this._p;\r\n p.currentItemsParent = p.virtualWrapper ?? p.userItemsParent ?? p.list;\r\n }\r\n\r\n /**\r\n * Destroy all created elements, for cleanup\r\n * @returns {VirtualListHelper}\r\n * @private\r\n */\r\n _destroyElements() {\r\n const p = this._p;\r\n const onItemUnrender = p.onItemUnrender;\r\n const existingEls = p.existingEls;\r\n\r\n for (let i = 0; i < existingEls.length; i++) {\r\n const el = existingEls[i];\r\n\r\n let parent = el.parentNode;\r\n if (parent)\r\n parent.removeChild(el);\r\n if (onItemUnrender && el[ItemIndexSymbol] !== undefined)\r\n onItemUnrender(el);\r\n }\r\n\r\n existingEls.length = 0;\r\n\r\n if (p.virtualWrapper) {\r\n if (p.virtualWrapper !== p.userItemsParent) {\r\n if (p.virtualWrapper.parentNode) {\r\n p.virtualWrapper.parentNode.removeChild(p.virtualWrapper);\r\n }\r\n }\r\n p.virtualWrapper = null;\r\n this._resetCurrentItemsParent();\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Marks (an) item(s) at specific index(es) as to be re-rendered. <br />\r\n * Applicable for virtual mode only.\r\n * @param {number} index\r\n * @param {number} count\r\n * @private\r\n */\r\n _invalidateItemIndexesAt(index, count) {\r\n const p = this._p;\r\n\r\n this._setItemPositionsNeedsUpdate(index);\r\n\r\n let existingEls = p.existingEls;\r\n let existingCount = existingEls.length;\r\n let existingRange = this._getExistingElsRange();\r\n\r\n if (existingRange.firstValidArrayIndex === -1)\r\n return;\r\n\r\n if (count === -1)\r\n count = existingEls.length;\r\n\r\n // Clean\r\n if (index >= existingRange.firstIndex && index <= existingRange.lastIndex) {\r\n for (let i = existingRange.firstValidArrayIndex + index - existingRange.firstIndex,\r\n c = 0;\r\n i < existingCount && c < count;\r\n i++, c++)\r\n delete existingEls[i][ItemIndexSymbol];\r\n }\r\n }\r\n\r\n /**\r\n * In/decrement the item-index marker for specific item(s). <br />\r\n * Used for inserting/removing items in the middle of the list, without re-rendering everything. <br />\r\n * Applicable for non-virtual mode only.\r\n * @param {number} index\r\n * @param {number} count\r\n * @private\r\n */\r\n _pushItemIndexesAt(index, count) {\r\n const p = this._p;\r\n\r\n let existingEls = p.existingEls;\r\n let existingCount = existingEls.length;\r\n let existingRange = this._getExistingElsRange();\r\n\r\n if (existingRange.firstValidArrayIndex === -1)\r\n return;\r\n\r\n // Clean\r\n if (index >= existingRange.firstIndex && index <= existingRange.lastIndex) {\r\n for (let i = existingRange.firstValidArrayIndex + index - existingRange.firstIndex;\r\n i < existingCount;\r\n i++)\r\n existingEls[i][ItemIndexSymbol] += count;\r\n }\r\n }\r\n\r\n /**\r\n * Hook relevant events\r\n * @returns {VirtualListHelper}\r\n * @private\r\n */\r\n _hookEvents() {\r\n const p = this._p;\r\n\r\n this._unhookEvents();\r\n\r\n if (p.virtual && p.hookScrollEvent) {\r\n p.list && p.list.addEventListener('scroll', /**@type Function*/p.boundRender);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Unhook previously hooked events\r\n * @returns {VirtualListHelper}\r\n * @private\r\n */\r\n _unhookEvents() {\r\n const p = this._p;\r\n\r\n p.list && p.list.removeEventListener('scroll', /**@type Function*/p.boundRender);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Mark item index from which the positions are not considered valid anymore. <br />\r\n * Applicable for virtual mode only.\r\n * @param {number} value\r\n * @private\r\n */\r\n _setItemPositionsNeedsUpdate(value) {\r\n const p = this._p;\r\n\r\n if (value < p.itemPositionsNeedsUpdate) {\r\n p.itemPositionsNeedsUpdate = value;\r\n }\r\n }\r\n\r\n /**\r\n * Calculates an item's top position (and stores in the private `cachedItemPositions` array). <br />\r\n * Allows calculating last+1 index too, to get the bottom-most position. <br />\r\n * Applicable for non-virtual mode only.\r\n * @param {number} index\r\n * @returns {number|undefined}\r\n * @private\r\n */\r\n _calculateItemPosition(index) {\r\n const p = this._p;\r\n\r\n const cachedItemPositions = p.cachedItemPositions;\r\n\r\n if (index >= p.itemPositionsNeedsUpdate) {\r\n const count = p.count;\r\n const cachedItemHeights = p.cachedItemHeights;\r\n const cachedItemEstimatedHeights = p.cachedItemEstimatedHeights;\r\n const estimatedItemHeight = p.estimatedItemHeight;\r\n const itemHeightEstimatorFn = p.itemHeightEstimatorFn;\r\n\r\n if (cachedItemHeights.length !== count) {\r\n cachedItemHeights.length = count;\r\n cachedItemEstimatedHeights.length = count;\r\n cachedItemPositions.length = count;\r\n }\r\n\r\n let fromIndex = p.itemPositionsNeedsUpdate;\r\n let toIndex = Math.min(index, count);\r\n\r\n let pos = 0;\r\n\r\n if (fromIndex > 0) {\r\n pos = cachedItemPositions[fromIndex - 1];\r\n }\r\n\r\n for (let i = fromIndex; i <= toIndex; i++) {\r\n if (i === 0) {\r\n cachedItemPositions[i] = pos;\r\n continue;\r\n }\r\n\r\n const prevIndex = i - 1;\r\n\r\n let height = cachedItemHeights[prevIndex]; // already calculated\r\n\r\n if (height === undefined) {\r\n height = itemHeightEstimatorFn ? itemHeightEstimatorFn(prevIndex) : null; // estimated per item\r\n\r\n if (typeof height !== 'number')\r\n height = estimatedItemHeight; // estimated\r\n\r\n cachedItemEstimatedHeights[prevIndex] = height;\r\n }\r\n\r\n pos += height;\r\n cachedItemPositions[i] = pos;\r\n }\r\n\r\n p.itemPositionsNeedsUpdate = toIndex + 1;\r\n }\r\n\r\n // item after the last (calculate full height)\r\n if (index > 0 && index === p.count) {\r\n let height = p.cachedItemHeights[index - 1]; // already calculated\r\n\r\n if (height === undefined) {\r\n height = p.itemHeightEstimatorFn ? p.itemHeightEstimatorFn(index - 1) : null; // estimated per item\r\n\r\n if (typeof height !== 'number')\r\n height = p.estimatedItemHeight; // estimated\r\n\r\n p.cachedItemEstimatedHeights[index - 1] = height;\r\n }\r\n\r\n return cachedItemPositions[index - 1] + height;\r\n }\r\n\r\n return cachedItemPositions[index];\r\n }\r\n\r\n /**\r\n * Create (or reuse an existing) element for an item at the specified index,\r\n * and insert physically at specified position. <br />\r\n * This will also update the element's position in the `existingEls` array.\r\n * @param {Element|undefined} itemEl\r\n * @param {number} index\r\n * @param {Node|boolean|undefined} insertBefore\r\n * @param {boolean|undefined} avoidDomReflow\r\n * @returns {Element}\r\n * @private\r\n */\r\n _dequeueElementForIndex(itemEl, index, insertBefore, avoidDomReflow) {\r\n const p = this._p;\r\n const virtualWrapper = p.virtualWrapper;\r\n const itemParent = p.currentItemsParent;\r\n const existingEls = p.existingEls;\r\n const onItemRender = p.onItemRender;\r\n const onItemUnrender = p.onItemUnrender;\r\n const isNew = !itemEl;\r\n const shouldReRender = isNew || index !== itemEl[ItemIndexSymbol];\r\n\r\n if (itemEl) {\r\n if (onItemUnrender && shouldReRender) {\r\n onItemUnrender(itemEl);\r\n }\r\n } else {\r\n itemEl = p.itemElementCreatorFn();\r\n\r\n if (virtualWrapper && insertBefore !== false) {\r\n (/**@type ElementCSSInlineStyle*/itemEl).style.position = 'absolute';\r\n (/**@type ElementCSSInlineStyle*/itemEl).style.top = '0';\r\n (/**@type ElementCSSInlineStyle*/itemEl).style.left = '0';\r\n (/**@type ElementCSSInlineStyle*/itemEl).style.right = '0';\r\n }\r\n }\r\n\r\n // Render only if it's a new item element\r\n // OR the index of the existing element is not the same of the index to render\r\n if (shouldReRender) {\r\n itemEl.innerHTML = ''; // Basic cleanup\r\n\r\n if (onItemRender)\r\n onItemRender(itemEl, index);\r\n }\r\n\r\n if (insertBefore !== false) {\r\n if (!(insertBefore instanceof Node))\r\n insertBefore = null;\r\n\r\n // Remove from existing list\r\n if (!isNew) {\r\n let i = existingEls.indexOf(itemEl);\r\n if (i !== -1)\r\n existingEls.splice(i, 1);\r\n }\r\n\r\n // Insert into existing list\r\n let beforeIndex = insertBefore ? existingEls.indexOf(/**@type Element*/insertBefore) : -1;\r\n if (beforeIndex === -1) {\r\n existingEls.push(itemEl);\r\n } else {\r\n existingEls.splice(beforeIndex, 0, itemEl);\r\n }\r\n\r\n if (!avoidDomReflow) {\r\n this._insertItemAndFlow(itemEl, index, insertBefore);\r\n }\r\n }\r\n\r\n // Add index metadata to item\r\n itemEl[ItemIndexSymbol] = index;\r\n\r\n return itemEl;\r\n }\r\n\r\n /**\r\n * Insert item element into the DOM, set it's flow in the DOM, and update the item's position. <br />\r\n * @param {Element|undefined} itemEl\r\n * @param {number} index\r\n * @param {Node|boolean|undefined} before\r\n * @private\r\n */\r\n _insertItemAndFlow(itemEl, index, before) {\r\n const p = this._p;\r\n const virtualWrapper = p.virtualWrapper;\r\n const itemParent = p.currentItemsParent;\r\n\r\n if (before !== false) {\r\n if (!(before instanceof Node))\r\n before = null;\r\n\r\n // Insert into DOM\r\n if (itemEl.parentNode !== itemParent ||\r\n (itemEl.nextSibling !== before)) {\r\n insertBefore(itemEl, before, itemParent);\r\n }\r\n }\r\n\r\n if (virtualWrapper) {\r\n // Calculate height\r\n let itemHeight = itemEl.getBoundingClientRect().height;\r\n\r\n // Put calculated height into cache, and invalidate positions if it's different\r\n let cachedItemHeight = p.cachedItemHeights[index];\r\n if (cachedItemHeight !== itemHeight) {\r\n p.cachedItemHeights[index] = itemHeight;\r\n }\r\n\r\n if ((cachedItemHeight !== undefined && itemHeight !== cachedItemHeight) ||\r\n (cachedItemHeight === undefined && itemHeight !== p.cachedItemEstimatedHeights[index])) {\r\n this._setItemPositionsNeedsUpdate(index + 1);\r\n }\r\n\r\n // Set item top position\r\n let pos = this._calculateItemPosition(index);\r\n const supportedTransform = getSupportedTransform();\r\n\r\n if (supportedTransform === false) {\r\n (/**@type ElementCSSInlineStyle*/itemEl).style.top = `${pos}px`;\r\n } else {\r\n (/**@type ElementCSSInlineStyle*/itemEl).style[supportedTransform] = `translateY(${pos}px)`;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Fetches valid range of existingEls\r\n * @returns {{firstIndex: (*|number), firstValidArrayIndex: number, lastValidArrayIndex: number, lastIndex: (*|number)}}\r\n * @private\r\n */\r\n _getExistingElsRange() {\r\n const p = this._p, existingEls = p.existingEls;\r\n\r\n let firstValidArrayIndex = -1, lastValidArrayIndex = -1;\r\n\r\n for (let i = 0, len = existingEls.length; i < len; i++) {\r\n if (false === hasOwnProperty.call(existingEls[i], ItemIndexSymbol))\r\n continue;\r\n firstValidArrayIndex = i;\r\n break;\r\n }\r\n\r\n for (let i = existingEls.length - 1; i >= 0; i--) {\r\n if (false === hasOwnProperty.call(existingEls[i], ItemIndexSymbol))\r\n continue;\r\n lastValidArrayIndex = i;\r\n break;\r\n }\r\n\r\n let firstIndex = firstValidArrayIndex !== -1 ? existingEls[firstValidArrayIndex][ItemIndexSymbol] : -1;\r\n let lastIndex = lastValidArrayIndex !== -1 ? existingEls[lastValidArrayIndex][ItemIndexSymbol] : -1;\r\n\r\n return {\r\n firstValidArrayIndex: firstValidArrayIndex,\r\n lastValidArrayIndex: lastValidArrayIndex,\r\n firstIndex: firstIndex,\r\n lastIndex: lastIndex,\r\n };\r\n }\r\n}\r\n\r\n/** Marks the item index associated with an item element */\r\nconst ItemIndexSymbol = Symbol('index');\r\n\r\n/** Marks an element for reuse */\r\nconst ReuseElSymbol = Symbol('reuse');\r\n\r\n/**\r\n * The default element creator\r\n * @returns {HTMLLIElement}\r\n */\r\nconst defaultElementCreator = () => {\r\n return document.createElement('li');\r\n};\r\n\r\n/**\r\n * Will look for the index in the `positions` array closest to the specified `pos` value (<= pos).\r\n * @param {number[]} positions\r\n * @param {number} pos\r\n * @param {number} [start=0]\r\n * @param {number} [end=-1]\r\n * @returns {number}\r\n */\r\nconst binarySearchPosition = (positions, pos, start = 0, end = -1) => {\r\n let total = positions.length;\r\n if (end < 0)\r\n end += total;\r\n if (end <= start) return end; // 0 or 1 length array\r\n\r\n while (start <= end) {\r\n let mid = Math.floor(start + (end - start) / 2);\r\n let midPos = positions[mid];\r\n\r\n if (midPos === pos || (midPos <= pos && mid < total && positions[mid + 1] > pos)) {\r\n while (mid > 0 && positions[mid - 1] === midPos) // avoid bugs on 0-height items\r\n mid--;\r\n\r\n return mid;\r\n }\r\n\r\n if (midPos < pos)\r\n start = mid + 1;\r\n else\r\n end = mid - 1;\r\n }\r\n\r\n return end === -1 ? 0 : (total - 1);\r\n};\r\n\r\n/**\r\n * Will look for the index in a virtual list of positions supplied by `total` and `fn`,\r\n * closest to the specified `pos` value (<= pos).\r\n * @param {number} total\r\n * @param {function(index: number):number} fn\r\n * @param {number} pos\r\n * @param {number} [start=0]\r\n * @param {number} [end=-1]\r\n * @returns {number}\r\n */\r\nconst binarySearchPositionByFn = (total, fn, pos, start = 0, end = -1) => {\r\n if (end < 0)\r\n end += total;\r\n if (end <= start) return end; // 0 or 1 length array\r\n\r\n while (start <= end) {\r\n let mid = Math.floor(start + (end - start) / 2);\r\n let midPos = fn(mid);\r\n\r\n if (midPos === pos || (midPos <= pos && mid < total && fn(mid + 1) > pos)) {\r\n while (mid > 0 && fn(mid - 1) === midPos) // avoid bugs on 0-height items\r\n mid--;\r\n\r\n return mid;\r\n }\r\n\r\n if (midPos < pos)\r\n start = mid + 1;\r\n else\r\n end = mid - 1;\r\n }\r\n\r\n return end === -1 ? 0 : fn(total - 1);\r\n};\r\n\r\n/**\r\n * Finds the last item in the array for which `fn` returns a truthy value\r\n * @param {Array} array\r\n * @param {Function} fn\r\n * @returns {undefined|*}\r\n */\r\nconst findLast = (array, fn) => {\r\n for (let i = array.length - 1; i >= 0; i--) {\r\n if (fn(array[i])) {\r\n return array[i];\r\n }\r\n }\r\n return undefined;\r\n};\r\n\r\nlet _isTransformSupported = null;\r\n\r\nconst getSupportedTransform = () => {\r\n if (_isTransformSupported === null) {\r\n let prefixes = ['transform', 'WebkitTransform', 'MozTransform', 'OTransform', 'msTransform'];\r\n let div = document.createElement('div');\r\n _isTransformSupported = false;\r\n for (let item of prefixes) {\r\n if (div && div.style[item] !== undefined) {\r\n _isTransformSupported = item;\r\n break;\r\n }\r\n }\r\n }\r\n return _isTransformSupported;\r\n};\r\n\r\nexport default VirtualListHelper;\r\n","export default class DomEventsSink {\r\n constructor() {\r\n /**\r\n * @type {{el: EventTarget, name: string, handler: EventListenerOrEventListenerObject, useCapture: boolean}[]}\r\n * @private\r\n */\r\n this._events = [];\r\n }\r\n\r\n /**\r\n * @param {EventTarget} el\r\n * @param {string} eventName\r\n * @param {EventListenerOrEventListenerObject} handler\r\n * @param {boolean|AddEventListenerOptions} [optionsOrCapture=undefined]\r\n * @returns {DomEventsSink}\r\n */\r\n add(el, eventName, handler, optionsOrCapture) {\r\n let parts = eventName.split('.');\r\n let name = parts[0];\r\n let namespace = parts[1];\r\n\r\n el.addEventListener(name, handler, optionsOrCapture ? optionsOrCapture : false);\r\n let useCapture = optionsOrCapture === true || typeof optionsOrCapture === 'object' && optionsOrCapture.capture === true;\r\n this._events.push({ el: el, name: name, namespace: namespace, handler: handler, useCapture: useCapture });\r\n return this;\r\n }\r\n\r\n /**\r\n * @param {EventTarget} [el=undefined]\r\n * @param {string} [eventName=undefined]\r\n * @param {EventListenerOrEventListenerObject} [handler=undefined]\r\n * @param {boolean|EventListenerOptions} [optionsOrCapture=undefined]\r\n * @returns {DomEventsSink}\r\n */\r\n remove(el, eventName, handler, optionsOrCapture) {\r\n let parts = eventName ? eventName.split('.') : '';\r\n let name = parts[0];\r\n let namespace = parts[1];\r\n\r\n let useCapture = optionsOrCapture === true || typeof optionsOrCapture === 'object' && optionsOrCapture.capture === true;\r\n\r\n let keep = [];\r\n let remove = [];\r\n\r\n if (el || name || namespace || handler || optionsOrCapture !== undefined) {\r\n for (let item of this._events) {\r\n if ((el && item.el !== el) ||\r\n (name && item.name !== name) ||\r\n (namespace && item.namespace !== namespace) ||\r\n (handler && item.handler !== handler) ||\r\n (optionsOrCapture !== undefined && item.useCapture !== useCapture)) {\r\n keep.push(item);\r\n } else {\r\n remove.push(item);\r\n }\r\n }\r\n } else {\r\n remove = this._events;\r\n }\r\n\r\n this._events = keep;\r\n\r\n for (let item of remove) {\r\n item.el.removeEventListener(item.name, item.handler, item.useCapture);\r\n }\r\n return this;\r\n }\r\n}\r\n","/*!\n * @danielgindi/dgtable.js 2.0.2\n * git://github.com/danielgindi/dgtable.js.git\n */\nimport{getScrollHorz as e,setScrollHorz as t}from\"@danielgindi/dom-utils/lib/ScrollHelper.js\";import{setCssProps as r,getElementWidth as i,getElementHeight as l,getElementOffset as o,setElementWidth as n}from\"@danielgindi/dom-utils/lib/Css.js\";import{scopedSelectorAll as s,scopedSelector as a}from\"@danielgindi/dom-utils/lib/DomCompat.js\";import d from\"@danielgindi/virtual-list-helper\";import u from\"@danielgindi/dom-utils/lib/DomEventsSink.js\";var h,c,m=\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:{},f={};function p(){if(c)return h;c=1;var e=function(e){return e&&e.Math===Math&&e};return h=e(\"object\"==typeof globalThis&&globalThis)||e(\"object\"==typeof window&&window)||e(\"object\"==typeof self&&self)||e(\"object\"==typeof m&&m)||e(\"object\"==typeof h&&h)||function(){return this}()||Function(\"return this\")()}var v,g,b,C,w,y,_,S,W={};function R(){return g?v:(g=1,v=function(e){try{return!!e()}catch(e){return!0}})}function N(){if(C)return b;C=1;var e=R();return b=!e(function(){return 7!==Object.defineProperty({},1,{get:function(){return 7}})[1]})}function T(){if(y)return w;y=1;var e=R();return w=!e(function(){var e=function(){}.bind();return\"function\"!=typeof e||e.hasOwnProperty(\"prototype\")})}function L(){if(S)return _;S=1;var e=T(),t=Function.prototype.call;return _=e?t.bind(t):function(){return t.apply(t,arguments)},_}var E,x,z,P,F,O,H,M,A,k,I,B,j,D,V,$,U,q,X,Y,G,J,K,Q,Z,ee,te,re,ie,le,oe,ne,se,ae,de,ue,he,ce,me,fe,pe,ve={};function ge(){return z?x:(z=1,x=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}})}function be(){if(F)return P;F=1;var e=T(),t=Function.prototype,r=t.call,i=e&&t.bind.bind(r,r);return P=e?i:function(e){return function(){return r.apply(e,arguments)}},P}function Ce(){if(H)return O;H=1;var e=be(),t=e({}.toString),r=e(\"\".slice);return O=function(e){return r(t(e),8,-1)}}function we(){return I?k:(I=1,k=function(e){return null==e})}function ye(){if(j)return B;j=1;var e=we(),t=TypeError;return B=function(r){if(e(r))throw new t(\"Can't call method on \"+r);return r}}function _e(){if(V)return D;V=1;var e=function(){if(A)return M;A=1;var e=be(),t=R(),r=Ce(),i=Object,l=e(\"\".split);return M=t(function(){return!i(\"z\").propertyIsEnumerable(0)})?function(e){return\"String\"===r(e)?l(e,\"\"):i(e)}:i}(),t=ye();return D=function(r){return e(t(r))}}function Se(){if(U)return $;U=1;var e=\"object\"==typeof document&&document.all;return $=void 0===e&&void 0!==e?function(t){return\"function\"==typeof t||t===e}:function(e){return\"function\"==typeof e}}function We(){if(X)return q;X=1;var e=Se();return q=function(t){return\"object\"==typeof t?null!==t:e(t)}}function Re(){if(G)return Y;G=1;var e=p(),t=Se();return Y=function(r,i){return arguments.length<2?(l=e[r],t(l)?l:void 0):e[r]&&e[r][i];var l},Y}function Ne(){if(K)return J;K=1;var e=be();return J=e({}.isPrototypeOf)}function Te(){if(Z)return Q;Z=1;var e=p().navigator,t=e&&e.userAgent;return Q=t?String(t):\"\"}function Le(){if(te)return ee;te=1;var e,t,r=p(),i=Te(),l=r.process,o=r.Deno,n=l&&l.versions||o&&o.version,s=n&&n.v8;return s&&(t=(e=s.split(\".\"))[0]>0&&e[0]<4?1:+(e[0]+e[1])),!t&&i&&(!(e=i.match(/Edge\\/(\\d+)/))||e[1]>=74)&&(e=i.match(/Chrome\\/(\\d+)/))&&(t=+e[1]),ee=t}function Ee(){if(ie)return re;ie=1;var e=Le(),t=R(),r=p().String;return re=!!Object.getOwnPropertySymbols&&!t(function(){var t=Symbol(\"symbol detection\");return!r(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&e&&e<41})}function xe(){if(oe)return le;oe=1;var e=Ee();return le=e&&!Symbol.sham&&\"symbol\"==typeof Symbol.iterator}function ze(){if(se)return ne;se=1;var e=Re(),t=Se(),r=Ne(),i=xe(),l=Object;return ne=i?function(e){return\"symbol\"==typeof e}:function(i){var o=e(\"Symbol\");return t(o)&&r(o.prototype,l(i))}}function Pe(){if(de)return ae;de=1;var e=String;return ae=function(t){try{return e(t)}catch(e){return\"Object\"}}}function Fe(){if(he)return ue;he=1;var e=Se(),t=Pe(),r=TypeError;return ue=function(i){if(e(i))return i;throw new r(t(i)+\" is not a function\")}}function Oe(){if(me)return ce;me=1;var e=Fe(),t=we();return ce=function(r,i){var l=r[i];return t(l)?void 0:e(l)}}function He(){if(pe)return fe;pe=1;var e=L(),t=Se(),r=We(),i=TypeError;return fe=function(l,o){var n,s;if(\"string\"===o&&t(n=l.toString)&&!r(s=e(n,l)))return s;if(t(n=l.valueOf)&&!r(s=e(n,l)))return s;if(\"string\"!==o&&t(n=l.toString)&&!r(s=e(n,l)))return s;throw new i(\"Can't convert object to primitive value\")}}var Me,Ae,ke,Ie,Be,je,De,Ve,$e,Ue,qe,Xe,Ye,Ge,Je,Ke,Qe,Ze,et,tt,rt,it,lt,ot,nt={exports:{}};function st(){if(Ie)return ke;Ie=1;var e=p(),t=Object.defineProperty;return ke=function(r,i){try{t(e,r,{value:i,configurable:!0,writable:!0})}catch(t){e[r]=i}return i}}function at(){if(Be)return nt.exports;Be=1;var e=Ae?Me:(Ae=1,Me=!1),t=p(),r=st(),i=\"__core-js_shared__\",l=nt.exports=t[i]||r(i,{});return(l.versions||(l.versions=[])).push({version:\"3.47.0\",mode:e?\"pure\":\"global\",copyright:\"© 2014-2025 Denis Pushkarev (zloirock.ru), 2025 CoreJS Company (core-js.io)\",license:\"https://github.com/zloirock/core-js/blob/v3.47.0/LICENSE\",source:\"https://github.com/zloirock/core-js\"}),nt.exports}function dt(){if(De)return je;De=1;var e=at();return je=function(t,r){return e[t]||(e[t]=r||{})}}function ut(){if($e)return Ve;$e=1;var e=ye(),t=Object;return Ve=function(r){return t(e(r))}}function ht(){if(qe)return Ue;qe=1;var e=be(),t=ut(),r=e({}.hasOwnProperty);return Ue=Object.hasOwn||function(e,i){return r(t(e),i)}}function ct(){if(Ye)return Xe;Ye=1;var e=be(),t=0,r=Math.random(),i=e(1.1.toString);return Xe=function(e){return\"Symbol(\"+(void 0===e?\"\":e)+\")_\"+i(++t+r,36)}}function mt(){if(Je)return Ge;Je=1;var e=p(),t=dt(),r=ht(),i=ct(),l=Ee(),o=xe(),n=e.Symbol,s=t(\"wks\"),a=o?n.for||n:n&&n.withoutSetter||i;return Ge=function(e){return r(s,e)||(s[e]=l&&r(n,e)?n[e]:a(\"Symbol.\"+e)),s[e]}}function ft(){if(Qe)return Ke;Qe=1;var e=L(),t=We(),r=ze(),i=Oe(),l=He(),o=mt(),n=TypeError,s=o(\"toPrimitive\");return Ke=function(o,a){if(!t(o)||r(o))return o;var d,u=i(o,s);if(u){if(void 0===a&&(a=\"default\"),d=e(u,o,a),!t(d)||r(d))return d;throw new n(\"Can't convert object to primitive value\")}return void 0===a&&(a=\"number\"),l(o,a)}}function pt(){if(et)return Ze;et=1;var e=ft(),t=ze();return Ze=function(r){var i=e(r,\"string\");return t(i)?i:i+\"\"}}function vt(){if(lt)return it;lt=1;var e=N(),t=R(),r=function(){if(rt)return tt;rt=1;var e=p(),t=We(),r=e.document,i=t(r)&&t(r.createElement);return tt=function(e){return i?r.createElement(e):{}}}();return it=!e&&!t(function(){return 7!==Object.defineProperty(r(\"div\"),\"a\",{get:function(){return 7}}).a})}function gt(){if(ot)return W;ot=1;var e=N(),t=L(),r=function(){if(E)return ve;E=1;var e={}.propertyIsEnumerable,t=Object.getOwnPropertyDescriptor,r=t&&!e.call({1:2},1);return ve.f=r?function(e){var r=t(this,e);return!!r&&r.enumerable}:e,ve}(),i=ge(),l=_e(),o=pt(),n=ht(),s=vt(),a=Object.getOwnPropertyDescriptor;return W.f=e?a:function(e,d){if(e=l(e),d=o(d),s)try{return a(e,d)}catch(e){}if(n(e,d))return i(!t(r.f,e,d),e[d])},W}var bt,Ct,wt,yt,_t,St,Wt,Rt={};function Nt(){if(yt)return wt;yt=1;var e=We(),t=String,r=TypeError;return wt=function(i){if(e(i))return i;throw new r(t(i)+\" is not an object\")}}function Tt(){if(_t)return Rt;_t=1;var e=N(),t=vt(),r=function(){if(Ct)return bt;Ct=1;var e=N(),t=R();return bt=e&&t(function(){return 42!==Object.defineProperty(function(){},\"prototype\",{value:42,writable:!1}).prototype})}(),i=Nt(),l=pt(),o=TypeError,n=Object.defineProperty,s=Object.getOwnPropertyDescriptor,a=\"enumerable\",d=\"configurable\",u=\"writable\";return Rt.f=e?r?function(e,t,r){if(i(e),t=l(t),i(r),\"function\"==typeof e&&\"prototype\"===t&&\"value\"in r&&u in r&&!r[u]){var o=s(e,t);o&&o[u]&&(e[t]=r.value,r={configurable:d in r?r[d]:o[d],enumerable:a in r?r[a]:o[a],writable:!1})}return n(e,t,r)}:n:function(e,r,s){if(i(e),r=l(r),i(s),t)try{return n(e,r,s)}catch(e){}if(\"get\"in s||\"set\"in s)throw new o(\"Accessors not supported\");return\"value\"in s&&(e[r]=s.value),e},Rt}function Lt(){if(Wt)return St;Wt=1;var e=N(),t=Tt(),r=ge();return St=e?function(e,i,l){return t.f(e,i,r(1,l))}:function(e,t,r){return e[t]=r,e}}var Et,xt,zt,Pt,Ft,Ot,Ht,Mt,At,kt,It,Bt,jt,Dt,Vt,$t={exports:{}};function Ut(){if(Pt)return zt;Pt=1;var e=be(),t=Se(),r=at(),i=e(Function.toString);return t(r.inspectSource)||(r.inspectSource=function(e){return i(e)}),zt=r.inspectSource}function qt(){if(Mt)return Ht;Mt=1;var e=dt(),t=ct(),r=e(\"keys\");return Ht=function(e){return r[e]||(r[e]=t(e))}}function Xt(){return kt?At:(kt=1,At={})}function Yt(){if(jt)return $t.exports;jt=1;var e=be(),t=R(),r=Se(),i=ht(),l=N(),o=function(){if(xt)return Et;xt=1;var e=N(),t=ht(),r=Function.prototype,i=e&&Object.getOwnPropertyDescriptor,l=t(r,\"name\"),o=l&&\"something\"===function(){}.name,n=l&&(!e||e&&i(r,\"name\").configurable);return Et={EXISTS:l,PROPER:o,CONFIGURABLE:n}}().CONFIGURABLE,n=Ut(),s=function(){if(Bt)return It;Bt=1;var e,t,r,i=function(){if(Ot)return Ft;Ot=1;var e=p(),t=Se(),r=e.WeakMap;return Ft=t(r)&&/native code/.test(String(r))}(),l=p(),o=We(),n=Lt(),s=ht(),a=at(),d=qt(),u=Xt(),h=\"Object already initialized\",c=l.TypeError,m=l.WeakMap;if(i||a.state){var f=a.state||(a.state=new m);f.get=f.get,f.has=f.has,f.set=f.set,e=function(e,t){if(f.has(e))throw new c(h);return t.facade=e,f.set(e,t),t},t=function(e){return f.get(e)||{}},r=function(e){return f.has(e)}}else{var v=d(\"state\");u[v]=!0,e=function(e,t){if(s(e,v))throw new c(h);return t.facade=e,n(e,v,t),t},t=function(e){return s(e,v)?e[v]:{}},r=function(e){return s(e,v)}}return It={set:e,get:t,has:r,enforce:function(i){return r(i)?t(i):e(i,{})},getterFor:function(e){return function(r){var i;if(!o(r)||(i=t(r)).type!==e)throw new c(\"Incompatible receiver, \"+e+\" required\");return i}}}}(),a=s.enforce,d=s.get,u=String,h=Object.defineProperty,c=e(\"\".slice),m=e(\"\".replace),f=e([].join),v=l&&!t(function(){return 8!==h(function(){},\"length\",{value:8}).length}),g=String(String).split(\"String\"),b=$t.exports=function(e,t,r){\"Symbol(\"===c(u(t),0,7)&&(t=\"[\"+m(u(t),/^Symbol\\(([^)]*)\\).*$/,\"$1\")+\"]\"),r&&r.getter&&(t=\"get \"+t),r&&r.setter&&(t=\"set \"+t),(!i(e,\"name\")||o&&e.name!==t)&&(l?h(e,\"name\",{value:t,configurable:!0}):e.name=t),v&&r&&i(r,\"arity\")&&e.length!==r.arity&&h(e,\"length\",{value:r.arity});try{r&&i(r,\"constructor\")&&r.constructor?l&&h(e,\"prototype\",{writable:!1}):e.prototype&&(e.prototype=void 0)}catch(e){}var n=a(e);return i(n,\"source\")||(n.source=f(g,\"string\"==typeof t?t:\"\")),e};return Function.prototype.toString=b(function(){return r(this)&&d(this).source||n(this)},\"toString\"),$t.exports}function Gt(){if(Vt)return Dt;Vt=1;var e=Se(),t=Tt(),r=Yt(),i=st();return Dt=function(l,o,n,s){s||(s={});var a=s.enumerable,d=void 0!==s.name?s.name:o;if(e(n)&&r(n,d,s),s.global)a?l[o]=n:i(o,n);else{try{s.unsafe?l[o]&&(a=!0):delete l[o]}catch(e){}a?l[o]=n:t.f(l,o,{value:n,enumerable:!1,configurable:!s.nonConfigurable,writable:!s.nonWritable})}return l}}var Jt,Kt,Qt,Zt,er,tr,rr,ir,lr,or,nr,sr,ar,dr,ur,hr,cr,mr={};function fr(){if(Zt)return Qt;Zt=1;var e=function(){if(Kt)return Jt;Kt=1;var e=Math.ceil,t=Math.floor;return Jt=Math.trunc||function(r){var i=+r;return(i>0?t:e)(i)}}();return Qt=function(t){var r=+t;return r!=r||0===r?0:e(r)}}function pr(){if(tr)return er;tr=1;var e=fr(),t=Math.max,r=Math.min;return er=function(i,l){var o=e(i);return o<0?t(o+l,0):r(o,l)}}function vr(){if(ir)return rr;ir=1;var e=fr(),t=Math.min;return rr=function(r){var i=e(r);return i>0?t(i,9007199254740991):0}}function gr(){if(or)return lr;or=1;var e=vr();return lr=function(t){return e(t.length)}}var br,Cr,wr,yr,_r,Sr,Wr,Rr,Nr,Tr,Lr,Er,xr,zr,Pr,Fr,Or,Hr,Mr={};function Ar(){if(wr)return Cr;wr=1;var e=Re(),t=be(),r=function(){if(cr)return mr;cr=1;var e=function(){if(dr)return ar;dr=1;var e=be(),t=ht(),r=_e(),i=function(){if(sr)return nr;sr=1;var e=_e(),t=pr(),r=gr(),i=function(i){return function(l,o,n){var s=e(l),a=r(s);if(0===a)return!i&&-1;var d,u=t(n,a);if(i&&o!=o){for(;a>u;)if((d=s[u++])!=d)return!0}else for(;a>u;u++)if((i||u in s)&&s[u]===o)return i||u||0;return!i&&-1}};return nr={includes:i(!0),indexOf:i(!1)}}().indexOf,l=Xt(),o=e([].push);return ar=function(e,n){var s,a=r(e),d=0,u=[];for(s in a)!t(l,s)&&t(a,s)&&o(u,s);for(;n.length>d;)t(a,s=n[d++])&&(~i(u,s)||o(u,s));return u}}(),t=(hr?ur:(hr=1,ur=[\"constructor\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"toLocaleString\",\"toString\",\"valueOf\"])).concat(\"length\",\"prototype\");return mr.f=Object.getOwnPropertyNames||function(r){return e(r,t)},mr}(),i=(br||(br=1,Mr.f=Object.getOwnPropertySymbols),Mr),l=Nt(),o=t([].concat);return Cr=e(\"Reflect\",\"ownKeys\")||function(e){var t=r.f(l(e)),n=i.f;return n?o(t,n(e)):t}}function kr(){if(_r)return yr;_r=1;var e=ht(),t=Ar(),r=gt(),i=Tt();return yr=function(l,o,n){for(var s=t(o),a=i.f,d=r.f,u=0;u<s.length;u++){var h=s[u];e(l,h)||n&&e(n,h)||a(l,h,d(o,h))}}}function Ir(){if(Nr)return Rr;Nr=1;var e=p(),t=gt().f,r=Lt(),i=Gt(),l=st(),o=kr(),n=function(){if(Wr)return Sr;Wr=1;var e=R(),t=Se(),r=/#|\\.prototype\\./,i=function(r,i){var a=o[l(r)];return a===s||a!==n&&(t(i)?e(i):!!i)},l=i.normalize=function(e){return String(e).replace(r,\".\").toLowerCase()},o=i.data={},n=i.NATIVE=\"N\",s=i.POLYFILL=\"P\";return Sr=i}();return Rr=function(s,a){var d,u,h,c,m,f=s.target,p=s.global,v=s.stat;if(d=p?e:v?e[f]||l(f,{}):e[f]&&e[f].prototype)for(u in a){if(c=a[u],h=s.dontCallGetSet?(m=t(d,u))&&m.value:d[u],!n(p?u:f+(v?\".\":\"#\")+u,s.forced)&&void 0!==h){if(typeof c==typeof h)continue;o(c,h)}(s.sham||h&&h.sham)&&r(c,\"sham\",!0),i(d,u,c,s)}}}function Br(){if(xr)return Er;xr=1;var e=function(){if(Lr)return Tr;Lr=1;var e={};return e[mt()(\"toStringTag\")]=\"z\",Tr=\"[object z]\"===String(e)}(),t=Se(),r=Ce(),i=mt()(\"toStringTag\"),l=Object,o=\"Arguments\"===r(function(){return arguments}());return Er=e?r:function(e){var n,s,a;return void 0===e?\"Undefined\":null===e?\"Null\":\"string\"==typeof(s=function(e,t){try{return e[t]}catch(e){}}(n=l(e),i))?s:o?r(n):\"Object\"===(a=r(n))&&t(n.callee)?\"Arguments\":a}}function jr(){if(Pr)return zr;Pr=1;var e=Br(),t=String;return zr=function(r){if(\"Symbol\"===e(r))throw new TypeError(\"Cannot convert a Symbol value to a string\");return t(r)}}function Dr(){if(Or)return Fr;Or=1;var e=Yt(),t=Tt();return Fr=function(r,i,l){return l.get&&e(l.get,i,{getter:!0}),l.set&&e(l.set,i,{setter:!0}),t.f(r,i,l)}}!function(){if(Hr)return f;Hr=1;var e=Ir(),t=N(),r=p(),i=be(),l=ht(),o=Se(),n=Ne(),s=jr(),a=Dr(),d=kr(),u=r.Symbol,h=u&&u.prototype;if(t&&o(u)&&(!(\"description\"in h)||void 0!==u().description)){var c={},m=function(){var e=arguments.length<1||void 0===arguments[0]?void 0:s(arguments[0]),t=n(h,this)?new u(e):void 0===e?u():u(e);return\"\"===e&&(c[t]=!0),t};d(m,u),m.prototype=h,h.constructor=m;var v=\"Symbol(description detection)\"===String(u(\"description detection\")),g=i(h.valueOf),b=i(h.toString),C=/^Symbol\\((.*)\\)[^)]+$/,w=i(\"\".replace),y=i(\"\".slice);a(h,\"description\",{configurable:!0,get:function(){var e=g(this);if(l(c,e))return\"\";var t=b(e),r=v?y(t,7,-1):w(t,C,\"$1\");return\"\"===r?void 0:r}}),e({global:!0,constructor:!0,forced:!0},{Symbol:m})}}();var Vr,$r,Ur,qr,Xr,Yr,Gr,Jr,Kr,Qr,Zr,ei,ti,ri,ii,li={};function oi(){if($r)return Vr;$r=1;var e=Pe(),t=TypeError;return Vr=function(r,i){if(!delete r[i])throw new t(\"Cannot delete property \"+e(i)+\" of \"+e(r))}}function ni(){if(qr)return Ur;qr=1;var e=be();return Ur=e([].slice)}function si(){if(Jr)return Gr;Jr=1;var e=R();return Gr=function(t,r){var i=[][t];return!!i&&e(function(){i.call(null,r||function(){return 1},1)})}}!function(){if(ii)return li;ii=1;var e=Ir(),t=be(),r=Fe(),i=ut(),l=gr(),o=oi(),n=jr(),s=R(),a=function(){if(Yr)return Xr;Yr=1;var e=ni(),t=Math.floor,r=function(i,l){var o=i.length;if(o<8)for(var n,s,a=1;a<o;){for(s=a,n=i[a];s&&l(i[s-1],n)>0;)i[s]=i[--s];s!==a++&&(i[s]=n)}else for(var d=t(o/2),u=r(e(i,0,d),l),h=r(e(i,d),l),c=u.length,m=h.length,f=0,p=0;f<c||p<m;)i[f+p]=f<c&&p<m?l(u[f],h[p])<=0?u[f++]:h[p++]:f<c?u[f++]:h[p++];return i};return Xr=r}(),d=si(),u=function(){if(Qr)return Kr;Qr=1;var e=Te().match(/firefox\\/(\\d+)/i);return Kr=!!e&&+e[1]}(),h=function(){if(ei)return Zr;ei=1;var e=Te();return Zr=/MSIE|Trident/.test(e)}(),c=Le(),m=function(){if(ri)return ti;ri=1;var e=Te().match(/AppleWebKit\\/(\\d+)\\./);return ti=!!e&&+e[1]}(),f=[],p=t(f.sort),v=t(f.push),g=s(function(){f.sort(void 0)}),b=s(function(){f.sort(null)}),C=d(\"sort\"),w=!s(function(){if(c)return c<70;if(!(u&&u>3)){if(h)return!0;if(m)return m<603;var e,t,r,i,l=\"\";for(e=65;e<76;e++){switch(t=String.fromCharCode(e),e){case 66:case 69:case 70:case 72:r=3;break;case 68:case 71:r=4;break;default:r=2}for(i=0;i<47;i++)f.push({k:t+i,v:r})}for(f.sort(function(e,t){return t.v-e.v}),i=0;i<f.length;i++)t=f[i].k.charAt(0),l.charAt(l.length-1)!==t&&(l+=t);return\"DGBEFHACIJK\"!==l}});e({target:\"Array\",proto:!0,forced:g||!b||!C||!w},{sort:function(e){void 0!==e&&r(e);var t=i(this);if(w)return void 0===e?p(t):p(t,e);var s,d,u=[],h=l(t);for(d=0;d<h;d++)d in t&&v(u,t[d]);for(a(u,function(e){return function(t,r){return void 0===r?-1:void 0===t?1:void 0!==e?+e(t,r)||0:n(t)>n(r)?1:-1}}(e)),s=l(u),d=0;d<s;)t[d]=u[d++];for(;d<h;)o(t,d++);return t}})}();const ai=function(e,t){for(let r=0,i=e.length;r>=0&&r<i;r+=1)if(t(e[r],r,e))return e[r]},di=function(e){return e.replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\").replace(/'/g,\"&#39;\").replace(/\"/g,\"&quot;\").replace(/\\n/g,\"<br />\")};function ui(){let e=[];return Object.assign(e,ui.prototype),e.initialize.apply(e,arguments),e}ui.prototype=[],ui.prototype.initialize=function(e){e=e||{},this.sortColumn=null==e.sortColumn?[]:e.sortColumn},ui.prototype.add=function(e,t){let r,i;if(\"splice\"in e&&\"length\"in e)if(\"number\"==typeof t)for(r=0,i=e.length;r<i;r++)this.splice(t++,0,e[r]);else for(r=0,i=e.length;r<i;r++)this.push(e[r]);else\"number\"==typeof t?this.splice(t,0,e):this.push(e)},ui.prototype.reset=function(e){this.length=0,e&&this.add(e)},ui.prototype.filteredCollection=function(e,t){if(e&&t){let r=new ui({sortColumn:this.sortColumn,onComparatorRequired:this.onComparatorRequired,customSortingProvider:this.customSortingProvider});for(let i,l=0,o=this.length;l<o;l++)i=this[l],e(i,t)&&(i.__i=l,r.push(i));return r}return null},ui.prototype.onComparatorRequired=null,ui.prototype.customSortingProvider=null;let hi=ui.prototype.sort;function ci(e,t){let r=e.column,i=e.comparePath||r;\"string\"==typeof i&&(i=i.split(\".\"));let l,o=i.length,n=o>1,s=t?1:-1,a=t?-1:1;return function(e,t){let r=e[i[0]],d=t[i[0]];if(n)for(l=1;l<o;l++)r=r&&r[i[l]],d=d&&d[i[l]];return r===d?0:null==r?s:null==d?a:r<d?s:a}}function mi(){let e=[];return Object.assign(e,mi.prototype),e.initialize.apply(e,arguments),e}ui.prototype.sort=function(){let e;if(this.sortColumn.length){let t=[];for(let r=0;r<this.sortColumn.length;r++){e=null;const i=ci(this.sortColumn[r],this.sortColumn[r].descending);this.onComparatorRequired&&(e=this.onComparatorRequired(this.sortColumn[r].column,this.sortColumn[r].descending,i)),e||(e=i),t.push(e.bind(this))}if(1===t.length)e=t[0];else{let r,i=t.length;e=function(e,l){for(let o=0;o<i;o++)if(r=t[o](e,l),0!==r)return r;return r}}const r=t=>hi.call(t,e);if(this.customSortingProvider){let e=this.customSortingProvider(this,r);e!==this&&this.splice(0,this.length,...e)}else r(this)}return e},mi.prototype=[],mi.prototype.initialize=function(){},mi.prototype.get=function(e){for(let t=0,r=this.length;t<r;t++)if(this[t].name===e)return this[t];return null},mi.prototype.indexOf=function(e){for(let t=0,r=this.length;t<r;t++)if(this[t].name===e)return t;return-1},mi.prototype.getByOrder=function(e){for(let t=0,r=this.length;t<r;t++)if(this[t].order===e)return this[t];return null},mi.prototype.normalizeOrder=function(){let e,t=[];for(e=0;e<this.length;e++)t.push(this[e]);for(t.sort(function(e,t){return e.order<t.order?-1:e.order>t.order?1:0}),e=0;e<t.length;e++)t[e].order=e;return this},mi.prototype.getColumns=function(){let e=[];for(let t,r=0;r<this.length;r++)t=this[r],e.push(t);return e.sort((e,t)=>e.order<t.order?-1:e.order>t.order?1:0),e},mi.prototype.getVisibleColumns=function(){let e=[];for(let t,r=0;r<this.length;r++)t=this[r],t.visible&&e.push(t);return e.sort((e,t)=>e.order<t.order?-1:e.order>t.order?1:0),e},mi.prototype.getMaxOrder=function(){let e=0;for(let t,r=0;r<this.length;r++)t=this[r],t.order>e&&(e=t.order);return e},mi.prototype.moveColumn=function(e,t){if(e&&t){let r,i,l=e.order,o=t.order;if(l<o)for(r=l+1;r<=o;r++)i=this.getByOrder(r),i.order--;else for(r=l-1;r>=o;r--)i=this.getByOrder(r),i.order++;e.order=o}return this};class fi{static saveSelection(e){let t=window.getSelection().getRangeAt(0);if(e!==t.commonAncestorContainer&&!function(e,t){for(;(e=e.parentNode)&&e!==t;);return!!e}(t.commonAncestorContainer,e))return null;let r=t.cloneRange();r.selectNodeContents(e),r.setEnd(t.startContainer,t.startOffset);let i=r.toString().length;return{start:i,end:i+t.toString().length}}static restoreSelection(e,t){let r,i=0,l=[e],o=!1,n=!1,s=document.createRange();for(s.setStart(e,0),s.collapse(!0);!n&&(r=l.pop());)if(3===r.nodeType){let e=i+r.length;!o&&t.start>=i&&t.start<=e&&(s.setStart(r,t.start-i),o=!0),o&&t.end>=i&&t.end<=e&&(s.setEnd(r,t.end-i),n=!0),i=e}else{let e=r.childNodes.length;for(;e--;)l.push(r.childNodes[e])}let a=window.getSelection();a.removeAllRanges(),a.addRange(s)}}function pi(e,t){let r=t.column,i=null==t.keyword?\"\":t.keyword.toString();if(!i||!r)return!0;let l=e[r];return null!=l&&(l=l.toString(),t.caseSensitive||(l=l.toLowerCase(),i=i.toLowerCase()),-1!==l.indexOf(i))}const vi=Array.prototype.indexOf;let gi=document.createElement.bind(document);const bi=Object.prototype.hasOwnProperty,Ci=Symbol(\"safe\"),wi=Symbol(\"hover_in\"),yi=Symbol(\"hover_out\"),_i=Symbol(\"row_click\"),Si=Symbol(\"preview_cell\"),Wi=Symbol(\"cell\");function Ri(e){[\"relative\",\"absolute\",\"fixed\"].includes(getComputedStyle(e).position)||(e.style.position=\"relative\")}const Ni=e=>/^(?:INPUT|TEXTAREA|BUTTON|SELECT)$/.test(e.target.tagName);class Ti{constructor(e){this._init(e),this.VERSION=Ti.VERSION}_init(e){e=e||{};let t=this._o={},r=this._p={eventsSink:new u,mitt:{all:i=i||new Map,on:function(e,t){var r=i.get(e);r?r.push(t):i.set(e,[t])},off:function(e,t){var r=i.get(e);r&&(t?r.splice(r.indexOf(t)>>>0,1):i.set(e,[]))},emit:function(e,t){var r=i.get(e);r&&r.slice().map(function(e){e(t)}),(r=i.get(\"*\"))&&r.slice().map(function(r){r(e,t)})}},tableSkeletonNeedsRendering:!0};var i;this.el=e.el&&e.el instanceof Element?e.el:document.createElement(\"div\"),this.el!==e.el&&this.el.classList.add(e.className||\"dgtable-wrapper\"),r.eventsSink.add(this.el,\"dragend.colresize\",this._onEndDragColumnHeader.bind(this)),t.virtualTable=void 0===e.virtualTable||!!e.virtualTable,t.estimatedRowHeight=e.estimatedRowHeight||void 0,t.rowsBufferSize=e.rowsBufferSize||3,t.minColumnWidth=Math.max(e.minColumnWidth||35,0),t.resizeAreaWidth=e.resizeAreaWidth||8,t.resizableColumns=void 0===e.resizableColumns||!!e.resizableColumns,t.movableColumns=void 0===e.movableColumns||!!e.movableColumns,t.sortableColumns=void 0===e.sortableColumns?1:parseInt(e.sortableColumns,10)||1,t.adjustColumnWidthForSortArrow=void 0===e.adjustColumnWidthForSortArrow||!!e.adjustColumnWidthForSortArrow,t.convertColumnWidthsToRelative=void 0!==e.convertColumnWidthsToRelative&&!!e.convertColumnWidthsToRelative,t.autoFillTableWidth=void 0!==e.autoFillTableWidth&&!!e.autoFillTableWidth,t.allowCancelSort=void 0===e.allowCancelSort||!!e.allowCancelSort,t.cellClasses=void 0===e.cellClasses?\"\":e.cellClasses,t.resizerClassName=void 0===e.resizerClassName?\"dgtable-resize\":e.resizerClassName,t.tableClassName=void 0===e.tableClassName?\"dgtable\":e.tableClassName,t.allowCellPreview=void 0===e.allowCellPreview||e.allowCellPreview,t.allowHeaderCellPreview=void 0===e.allowHeaderCellPreview||e.allowHeaderCellPreview,t.cellPreviewClassName=void 0===e.cellPreviewClassName?\"dgtable-cell-preview\":e.cellPreviewClassName,t.cellPreviewAutoBackground=void 0===e.cellPreviewAutoBackground||e.cellPreviewAutoBackground,t.onComparatorRequired=void 0===e.onComparatorRequired?null:e.onComparatorRequired,t.onComparatorRequired||\"function\"!=typeof e.comparatorCallback||(t.onComparatorRequired=e.comparatorCallback),t.customSortingProvider=void 0===e.customSortingProvider?null:e.customSortingProvider,t.width=void 0===e.width?Ti.Width.NONE:e.width,t.relativeWidthGrowsToFillWidth=void 0===e.relativeWidthGrowsToFillWidth||!!e.relativeWidthGrowsToFillWidth,t.relativeWidthShrinksToFillWidth=void 0!==e.relativeWidthShrinksToFillWidth&&!!e.relativeWidthShrinksToFillWidth,this.setCellFormatter(e.cellFormatter),this.setHeaderCellFormatter(e.headerCellFormatter),this.setFilter(e.filter),t.height=e.height,this.setColumns(e.columns||[],!1);let l=[];if(e.sortColumn){let t=e.sortColumn;if(t&&!Array.isArray(t)&&(t=[t]),t)for(let e=0,i=t.length;e<i;e++){let i=t[e];\"string\"==typeof i&&(i={column:i,descending:!1});let o=r.columns.get(i.column);o&&l.push({column:i.column,comparePath:o.comparePath||o.dataPath,descending:i.descending})}}r.rows=new ui({sortColumn:l}),r.rows.onComparatorRequired=(e,r,i)=>{if(t.onComparatorRequired)return t.onComparatorRequired(e,r,i)},r.rows.customSortingProvider=(e,r)=>t.customSortingProvider?t.customSortingProvider(e,r):r(e),r.filteredRows=null,r.scrollbarWidth=0,r.lastVirtualScrollHeight=0,this._setupHovers()}_setupHovers(){const e=this._p;let t=e=>{let t=e.currentTarget,r=e.relatedTarget;r===t||t.contains(r)||t[Si]&&(r===t[Si]||t[Si].contains(r))||this._cellMouseOverEvent(t)},r=e=>{let t=e.currentTarget[Wi]||e.currentTarget,r=e.relatedTarget;r===this||t.contains(r)||t[Si]&&(r===t[Si]||t[Si].contains(r))||this._cellMouseOutEvent(t)};e._bindCellHoverIn=e=>{e[wi]||e.addEventListener(\"mouseover\",e[wi]=t)},e._unbindCellHoverIn=e=>{e[wi]&&(e.removeEventListener(\"mouseover\",e[wi]),e[wi]=null)},e._bindCellHoverOut=e=>{e[yi]||e.addEventListener(\"mouseout\",e[yi]=r)},e._unbindCellHoverOut=e=>{e[yi]&&(e.removeEventListener(\"mouseout\",e[yi]),e[yi]=null)}}_setupVirtualTable(){var e;const t=this._p,r=this._o,i=r.tableClassName,l=i+\"-row\",o=i+\"-row-alt\",n=i+\"-cell\";let s=t.visibleColumns,a=s.length;t.notifyRendererOfColumnsConfig=()=>{s=t.visibleColumns,a=s.length;for(let e,t=0;t<a;t++)e=s[t],e._finalWidth=e.actualWidthConsideringScrollbarWidth||e.actualWidth},t.virtualListHelper=new d({list:t.table,itemsParent:t.tbody,autoVirtualWrapperWidth:!1,virtual:r.virtualTable,buffer:r.rowsBufferSize,estimatedItemHeight:r.estimatedRowHeight?r.estimatedRowHeight:t.virtualRowHeight||40,itemElementCreatorFn:()=>gi(\"div\"),onItemRender:(e,i)=>{const d=t.filteredRows||t.rows,u=!!t.filteredRows,h=r.allowCellPreview;e.className=l,i%2==1&&(e.className+=\" \"+o);let c=d[i],m=u?c.__i:i;e.vIndex=i,e.index=m;for(let r=0;r<a;r++){let i=s[r],l=gi(\"div\");l.columnName=i.name,l.setAttribute(\"data-column\",i.name),l.className=n,l.style.width=i._finalWidth+\"px\",i.cellClasses&&(l.className+=\" \"+i.cellClasses),h&&t._bindCellHoverIn(l),l.appendChild(gi(\"div\")).innerHTML=this._getHtmlForCell(c,i),e.appendChild(l)}e.addEventListener(\"click\",e[_i]=t=>{this.emit(\"rowclick\",{event:t,filteredRowIndex:i,rowIndex:m,rowEl:e,rowData:c})}),this.emit(\"rowcreate\",{filteredRowIndex:i,rowIndex:m,rowEl:e,rowData:c})},onItemUnrender:e=>{e[_i]&&e.removeEventListener(\"click\",e[_i]),this._unbindCellEventsForRow(e),this.emit(\"rowdestroy\",e)},onScrollHeightChange:e=>{e>t._lastVirtualScrollHeight&&!t.scrollbarWidth&&this._updateLastCellWidthFromScrollbar(),t._lastVirtualScrollHeight=e}}),t.virtualListHelper.setCount((null!==(e=t.filteredRows)&&void 0!==e?e:t.rows).length),t.notifyRendererOfColumnsConfig()}trigger(e){const t=this._p;if(!t)return;let r=t.events;if(bi.call(r,e)){let t=r[e];for(let e=0;e<t.length;e++){let r=t[e];r.once&&t.splice(e--,1),r.cb.apply(this,Array.prototype.slice.call(arguments,1))}}return this}on(e,t){return this._p.mitt.on(e,t),this}once(e,t){let r=i=>{this._p.mitt.off(e,r),t(i)};return this._p.mitt.on(e,r),this}off(e,t){return e||e?this._p.mitt.off(e,t):this._p.mitt.all.clear(),this}emit(e,t){return this._p.mitt.emit(e,t),this}_parseColumnWidth(e,t){let r=Math.max(0,parseFloat(e)),i=Li.AUTO;return r>0&&(e===r+\"%\"?(i=Li.RELATIVE,r/=100):r>0&&r<1?i=Li.RELATIVE:(r<t&&(r=t),i=Li.ABSOLUTE)),{width:r,mode:i}}_initColumnFromData(e){let t=this._parseColumnWidth(e.width,e.ignoreMin?0:this._o.minColumnWidth),r={name:e.name,label:void 0===e.label?e.name:e.label,width:t.width,widthMode:t.mode,resizable:void 0===e.resizable||e.resizable,sortable:void 0===e.sortable||e.sortable,movable:void 0===e.movable||e.movable,visible:void 0===e.visible||e.visible,cellClasses:void 0===e.cellClasses?this._o.cellClasses:e.cellClasses,ignoreMin:void 0!==e.ignoreMin&&!!e.ignoreMin};return r.dataPath=void 0===e.dataPath?r.name:e.dataPath,r.comparePath=void 0===e.comparePath?r.dataPath:e.comparePath,\"string\"==typeof r.dataPath&&(r.dataPath=r.dataPath.split(\".\")),\"string\"==typeof r.comparePath&&(r.comparePath=r.comparePath.split(\".\")),r}destroy(){var e,t,r;let i=this._p||{},l=this.el;if(this.__removed)return this;if(i.resizer&&(i.resizer.remove(),i.resizer=null),null===(e=i.virtualListHelper)||void 0===e||e.destroy(),i.virtualListHelper=null,this._destroyHeaderCells(),null===(t=i.table)||void 0===t||t.remove(),null===(r=i.tbody)||void 0===r||r.remove(),i.workerListeners){for(let e=0;e<i.workerListeners.length;e++){let t=i.workerListeners[e];t.worker.removeEventListener(\"message\",t.listener,!1)}i.workerListeners.length=0}i.rows.length=i.columns.length=0,i._deferredRender&&clearTimeout(i._deferredRender);for(let e in this)bi.call(this,e)&&(this[e]=null);return this.__removed=!0,l&&l.remove(),this}close(){this.destroy()}remove(){this.destroy()}_unbindCellEventsForTable(){const e=this._p;if(e.headerRow)for(let t=0,r=e.headerRow.childNodes,i=r.length;t<i;t++)for(let i=0,l=r[t].childNodes,o=l.length;i<o;i++)e._unbindCellHoverIn(l[i]);return this}_unbindCellEventsForRow(e){const t=this._p;for(let r=0,i=e.childNodes,l=i.length;r<l;r++)t._unbindCellHoverIn(i[r]);return this}render(){const r=this._o,i=this._p;if(!this.el.offsetParent)return i._deferredRender||(i._deferredRender=setTimeout(()=>{i._deferredRender=null,!this.__removed&&this.el.offsetParent&&this.render()})),this;if(!0===i.tableSkeletonNeedsRendering){var l;i.tableSkeletonNeedsRendering=!1,r.width===Ti.Width.AUTO&&this._clearSortArrows();let o=i.table&&i.table.parentNode?i.table.scrollTop:NaN,n=i.table&&i.table.parentNode?e(i.table):NaN;this._renderSkeletonBase()._renderSkeletonBody().tableWidthChanged(!0,!1)._renderSkeletonHeaderCells(),i.virtualListHelper.setCount((null!==(l=i.filteredRows)&&void 0!==l?l:i.rows).length),this._updateVirtualHeight(),this._updateLastCellWidthFromScrollbar(!0),this._updateTableWidth(!0);for(let e=0;e<i.rows.sortColumn.length;e++)this._showSortArrow(i.rows.sortColumn[e].column,i.rows.sortColumn[e].descending);r.adjustColumnWidthForSortArrow&&i.rows.sortColumn.length?this.tableWidthChanged(!0):r.virtualTable||this.tableWidthChanged(),isNaN(o)||(i.table.scrollTop=o),isNaN(n)||(t(i.table,n),t(i.header,n)),this.emit(\"renderskeleton\")}return i.virtualListHelper.render(),this.emit(\"render\"),this}clearAndRender(e){var t;let r=this._p;return r.tableSkeletonNeedsRendering=!0,null===(t=r.notifyRendererOfColumnsConfig)||void 0===t||t.call(r),(void 0===e||e)&&this.render(),this}_calculateTbodyWidth(){const e=this._p;let t=this._o.tableClassName,l=t+\"-row\",o=t+\"-cell\",n=e.visibleColumns,s=n.length;const a=gi(\"div\");a.className=l,a.style.float=\"left\";let d=0;for(let e=0;e<s;e++){const t=n[e],r=gi(\"div\");r.className=o,r.style.width=t.actualWidth+\"px\",t.cellClasses&&(r.className+=\" \"+t.cellClasses),r.appendChild(gi(\"div\")),a.appendChild(r),d+=t.actualWidth}const u=gi(\"div\");u.className=this.el.className,r(u,{\"z-index\":-1,position:\"absolute\",left:\"0\",top:\"-9999px\",float:\"left\",width:\"1px\",overflow:\"hidden\"});const h=gi(\"div\");h.className=t,u.appendChild(h);const c=gi(\"div\");c.className=t+\"-body\",c.style.width=d+1e4+\"px\",h.appendChild(c),c.appendChild(a),document.body.appendChild(u);const m=gi(\"div\");r(m,{border:\"1.5px solid #000\",width:\"0\",height:\"0\",position:\"absolute\",left:\"0\",top:\"-9999px\"}),document.body.appendChild(m);let f=parseFloat(getComputedStyle(m).borderWidth),p=Math.round(f)!==f;m.remove();let v=i(a,!0,!0,!0);return v-=e.scrollbarWidth||0,p&&v++,u.remove(),v}setColumns(e,t){const r=this._p;e=e||[];let i=new mi;for(let t=0,r=0;t<e.length;t++){let l=e[t],o=this._initColumnFromData(l);void 0!==l.order?(l.order>r&&(r=l.order+1),o.order=l.order):o.order=r++,i.push(o)}return i.normalizeOrder(),r.columns=i,r.visibleColumns=i.getVisibleColumns(),this._ensureVisibleColumns().clearAndRender(t),this}addColumn(e,t,r){const i=this._p;let l=i.columns;if(e&&!l.get(e.name)){let o=null;void 0!==t&&(o=l.get(t)||l.getByOrder(t));let n=this._initColumnFromData(e);n.order=o?o.order:l.getMaxOrder()+1;for(let e=l.getMaxOrder(),t=n.order;e>=t;e--){let t=l.getByOrder(e);t&&t.order++}l.push(n),l.normalizeOrder(),i.visibleColumns=l.getVisibleColumns(),this._ensureVisibleColumns().clearAndRender(r),this.emit(\"addcolumn\",n.name)}return this}removeColumn(e,t){const r=this._p;let i=r.columns,l=i.indexOf(e);return l>-1&&(i.splice(l,1),i.normalizeOrder(),r.visibleColumns=i.getVisibleColumns(),this._ensureVisibleColumns().clearAndRender(t),this.emit(\"removecolumn\",e)),this}setCellFormatter(e){return e||((e=e=>\"string\"==typeof e?di(e):e)[Ci]=!0),this._o.cellFormatter=e,this}setHeaderCellFormatter(e){return this._o.headerCellFormatter=e||function(e){return\"string\"==typeof e?di(e):e},this}setFilter(e){return this._o.filter=e,this}filter(e){const t=this._p;let r=this._o.filter||pi;\"string\"==typeof arguments[0]&&\"string\"==typeof arguments[1]&&(e={column:arguments[0],keyword:arguments[1],caseSensitive:arguments[2]});let i=!!t.filteredRows;return t.filteredRows&&(t.filteredRows=null),t.filterArgs=null==e?null:\"object\"!=typeof e||Array.isArray(e)?e:Object.assign({},e),null!==t.filterArgs?(t.filteredRows=t.rows.filteredCollection(r,t.filterArgs),(i||t.filteredRows)&&(this.clearAndRender(),this.emit(\"filter\",e))):(t.filterArgs=null,t.filteredRows=null,this.clearAndRender(),this.emit(\"filterclear\",{})),this}clearFilter(){const e=this._p;return e.filteredRows&&(e.filterArgs=null,e.filteredRows=null,this.clearAndRender(),this.emit(\"filterclear\",{})),this}_refilter(){const e=this._p;if(e.filteredRows&&e.filterArgs){let t=this._o.filter||pi;e.filteredRows=e.rows.filteredCollection(t,e.filterArgs)}return this}setColumnLabel(e,t){let r=this._p.columns.get(e);if(r&&(r.label=void 0===t?r.name:t,r.element))for(let e=0;e<r.element.firstChild.childNodes.length;e++){let t=r.element.firstChild.childNodes[e];if(3===t.nodeType){t.textContent=r.label;break}}return this}moveColumn(e,t,r=!0){const i=this._o,l=this._p;let o,n,a=l.columns,d=r?l.visibleColumns:a.getColumns();if(\"string\"==typeof e?o=a.get(e):\"number\"==typeof e&&(o=d[e]),\"string\"==typeof t?n=a.get(t):\"number\"==typeof t&&(n=d[t]),o&&n&&e!==t){let e=o.order,t=n.order,r=a.moveColumn(o,n).getVisibleColumns();if(l.visibleColumns.length!==r.length||l.visibleColumns.some((e,t)=>e!==r[t]))if(l.visibleColumns=r,this._ensureVisibleColumns(),i.virtualTable)this.clearAndRender();else{const r=s(l.headerRow,`>div.${i.tableClassName}-header-cell`);let o=e<t?t+1:t,n=e;r[0].parentNode.insertBefore(r[n],r[o]);let a=l.visibleColumns[e];a=(a.actualWidthConsideringScrollbarWidth||a.actualWidth)+\"px\";let d=l.visibleColumns[t];d=(d.actualWidthConsideringScrollbarWidth||d.actualWidth)+\"px\";let u=l.tbody.childNodes;for(let r=0,i=u.length;r<i;r++){let i=u[r];1===i.nodeType&&(i.insertBefore(i.childNodes[n],i.childNodes[o]),i.childNodes[t].firstChild.style.width=d,i.childNodes[e].firstChild.style.width=a)}}this.emit(\"movecolumn\",{name:o.name,src:e,dest:t})}return this}sort(e,t,r){const i=this._o,l=this._p;let o,n=l.columns.get(e),s=l.rows.sortColumn;if(n){if(r){for(let e=0;e<s.length;e++)if(s[e].column===n.name){e<s.length-1?s.length=0:(t=s[s.length-1].descending,s.splice(s.length-1,1));break}(i.sortableColumns>0&&s.length>=i.sortableColumns||s.length>=l.visibleColumns.length)&&(s.length=0)}else s.length=0;t=void 0!==t&&t,s.push({column:n.name,comparePath:n.comparePath||n.dataPath,descending:!!t})}else s.length=0;this._clearSortArrows();for(let e=0;e<s.length;e++)this._showSortArrow(s[e].column,s[e].descending);i.adjustColumnWidthForSortArrow&&!l.tableSkeletonNeedsRendering&&this.tableWidthChanged(!0),l.rows.sortColumn=s,s.length&&(o=l.rows.sort(!!l.filteredRows),l.filteredRows&&l.filteredRows.sort(!!l.filteredRows)),l.virtualListHelper&&l.virtualListHelper.invalidate().render();let a=[];for(let e=0;e<s.length;e++)a.push({column:s[e].column,descending:s[e].descending});return this.emit(\"sort\",{sorts:a,comparator:o}),this}resort(){const e=this._p;let t=e.columns,r=e.rows.sortColumn;if(r.length){for(let e=0;e<r.length;e++)t.get(r[e].column)||r.splice(e--,1);let i;e.rows.sortColumn=r,r.length&&(i=e.rows.sort(!!e.filteredRows),e.filteredRows&&e.filteredRows.sort(!!e.filteredRows));let l=[];for(let e=0;e<r.length;e++)l.push({column:r[e].column,descending:r[e].descending});this.emit(\"sort\",{sorts:l,resort:!0,comparator:i})}return this}_ensureVisibleColumns(){const e=this._p;return 0===e.visibleColumns.length&&e.columns.length&&(e.columns[0].visible=!0,e.visibleColumns.push(e.columns[0]),this.emit(\"showcolumn\",e.columns[0].name)),this}setColumnVisible(e,t){const r=this._p;let i=r.columns.get(e);return t=!!t,i&&!!i.visible!==t&&(i.visible=t,r.visibleColumns=r.columns.getVisibleColumns(),this.emit(t?\"showcolumn\":\"hidecolumn\",e),this._ensureVisibleColumns(),this.clearAndRender()),this}isColumnVisible(e){let t=this._p.columns.get(e);return!!t&&t.visible}setMinColumnWidth(e){let t=this._o;return e=Math.max(e,0),t.minColumnWidth!==e&&(t.minColumnWidth=e,this.tableWidthChanged(!0)),this}getMinColumnWidth(){return this._o.minColumnWidth}setSortableColumns(e){const t=this._p,r=this._o;if(r.sortableColumns!==e&&(r.sortableColumns=e,t.table)){const e=s(t.headerRow,`>div.${r.tableClassName}-header-cell`);for(let i=0,l=e.length;i<l;i++)e[i].classList[r.sortableColumns>0&&t.visibleColumns[i].sortable?\"add\":\"remove\"](\"sortable\")}return this}getSortableColumns(){return this._o.sortableColumns}setMovableColumns(e){let t=this._o;return e=void 0===e||!!e,t.movableColumns!==e&&(t.movableColumns=e),this}getMovableColumns(){return this._o.movableColumns}setResizableColumns(e){let t=this._o;return e=void 0===e||!!e,t.resizableColumns!==e&&(t.resizableColumns=e),this}getResizableColumns(){return this._o.resizableColumns}setOnComparatorRequired(e){let t=this._o;return t.onComparatorRequired!==e&&(t.onComparatorRequired=e),this}setComparatorCallback(e){return this.setOnComparatorRequired(e)}setCustomSortingProvider(e){let t=this._o;return t.customSortingProvider!==e&&(t.customSortingProvider=e),this}setColumnWidth(e,t){let r=this._p.columns.get(e),i=this._parseColumnWidth(t,r.ignoreMin?0:this._o.minColumnWidth);if(r){let e=this._serializeColumnWidth(r);r.width=i.width,r.widthMode=i.mode;let t=this._serializeColumnWidth(r);e!==t&&this.tableWidthChanged(!0),this.emit(\"columnwidth\",{name:r.name,width:t,oldWidth:e})}return this}getColumnWidth(e){let t=this._p.columns.get(e);return t?this._serializeColumnWidth(t):null}getColumnConfig(e){let t=this._p.columns.get(e);return t?{order:t.order,width:this._serializeColumnWidth(t),visible:t.visible,label:t.label}:null}getColumnsConfig(){const e=this._p;let t={};for(let r=0;r<e.columns.length;r++)t[e.columns[r].name]=this.getColumnConfig(e.columns[r].name);return t}getSortedColumns(){const e=this._p;let t=[];for(let r=0;r<e.rows.sortColumn.length;r++){let i=e.rows.sortColumn[r];t.push({column:i.column,descending:i.descending})}return t}getHtmlForRowCell(e,t){const r=this._p;if(e<0||e>r.rows.length-1)return null;let i=r.columns.get(t);if(!i)return null;let l=r.rows[e];return this._getHtmlForCell(l,i)}getHtmlForRowDataCell(e,t){let r=this._p.columns.get(t);return r?this._getHtmlForCell(e,r):null}_getHtmlForCell(e,t){let r=t.dataPath,i=e[r[0]];for(let e=1;e<r.length&&null!=i;e++)i=i&&i[r[e]];const l=this._o.cellFormatter;let o;if(l[Ci])o=l(i,t.name,e);else try{o=l(i,t.name,e)}catch(e){o=\"[ERROR]\",console.error(\"Failed to generate content for cell \"+t.name,e)}return null==o&&(o=\"\"),o}getRowYPos(e){return this._p.virtualListHelper.getItemPosition(e)||null}getDataForRow(e){const t=this._p;return e<0||e>t.rows.length-1?null:t.rows[e]}getRowCount(){const e=this._p;return e.rows?e.rows.length:0}getIndexForRow(e){return this._p.rows.indexOf(e)}getFilteredRowCount(){const e=this._p;return(e.filteredRows||e.rows).length}getIndexForFilteredRow(e){const t=this._p;return(t.filteredRows||t.rows).indexOf(e)}getDataForFilteredRow(e){const t=this._p;return e<0||e>(t.filteredRows||t.rows).length-1?null:(t.filteredRows||t.rows)[e]}getHeaderRowElement(){return this._p.headerRow}_horizontalPadding(e){const t=getComputedStyle(e);return(parseFloat(t.paddingLeft)||0)+(parseFloat(t.paddingRight)||0)}_horizontalBorderWidth(e){const t=getComputedStyle(e);return(parseFloat(t.borderLeftWidth)||0)+(parseFloat(t.borderRightWidth)||0)}_calculateWidthAvailableForColumns(){const e=this._o,t=this._p;let l,o,n;t.table&&(o=t.table?t.table.scrollTop:0,n=t.table?t.table.scrollLeft:0,e.virtualTable&&(l=t.table.style.display,t.table.style.display=\"none\"));let a=i(this.el);t.table&&(e.virtualTable&&(t.table.style.display=l),t.table.scrollTop=o,t.table.scrollLeft=n,t.header.scrollLeft=n);let d=e.tableClassName;const u=gi(\"div\");u.className=this.el.className,r(u,{\"z-index\":-1,position:\"absolute\",left:\"0\",top:\"-9999px\"});let h=gi(\"div\");h.className=`${d}-header`,u.appendChild(h);let c=gi(\"div\");c.index=null,c.vIndex=null,c.className=`${d}-header-row`,h.appendChild(c);for(let e=0;e<t.visibleColumns.length;e++){const r=t.visibleColumns[e],i=gi(\"div\");i.className=`${d}-header-cell ${r.cellClasses||\"\"}`,i.columnName=r.name,i.appendChild(gi(\"div\")),c.appendChild(i)}document.body.appendChild(u),a-=this._horizontalBorderWidth(c);let m=s(c,`>div.${d}-header-cell`);for(const e of m){const r=getComputedStyle(e);if(\"border-box\"!==r.boxSizing){a-=(parseFloat(r.borderRightWidth)||0)+(parseFloat(r.borderLeftWidth)||0)+this._horizontalPadding(e);const i=e.columnName,l=t.columns.get(i);l&&(a-=l.arrowProposedWidth||0)}}return u.remove(),Math.max(0,a)}_getTextWidth(e){let t=this._o.tableClassName;const l=gi(\"div\");l.className=this.el.className;const o=gi(\"div\");o.className=t+\"-header\";const n=gi(\"div\");n.className=t+\"-header-row\";const s=gi(\"div\");s.className=t+\"-header-cell\";const a=gi(\"div\");a.textContent=e,s.appendChild(a),n.appendChild(s),o.appendChild(n),l.appendChild(o),r(l,{position:\"absolute\",top:\"-9999px\",visibility:\"hidden\"}),document.body.appendChild(l);let d=i(s);return l.remove(),d}tableWidthChanged(e,t){let r=this._o,i=this._p,l=this._calculateWidthAvailableForColumns(),o=l,n=0;if(!i.table)return this;t=void 0===t||t;let s=0;if(i.tbody||(t=!1),t&&(s=parseFloat(i.tbody.style.minWidth)||0),o!==i.lastDetectedWidth||e){var a;i.lastDetectedWidth=l;let e=0,d=[],u=0;for(let e=0;e<i.columns.length;e++)i.columns[e].actualWidthConsideringScrollbarWidth=null;for(let t=0;t<i.visibleColumns.length;t++){let l=i.visibleColumns[t];if(l.widthMode===Li.ABSOLUTE){let i=l.width;i+=l.arrowProposedWidth||0,!l.ignoreMin&&i<r.minColumnWidth&&(i=r.minColumnWidth),o-=i,e+=i,i!==l.actualWidth&&(l.actualWidth=i,d.push(t))}else if(l.widthMode===Li.AUTO){let i=this._getTextWidth(l.label)+20;i+=l.arrowProposedWidth||0,!l.ignoreMin&&i<r.minColumnWidth&&(i=r.minColumnWidth),o-=i,e+=i,i!==l.actualWidth&&(l.actualWidth=i,r.convertColumnWidthsToRelative||d.push(t))}else l.widthMode===Li.RELATIVE&&(u+=l.width,n++)}if(r.convertColumnWidthsToRelative)for(let t=0;t<i.visibleColumns.length;t++){let r=i.visibleColumns[t];r.widthMode===Li.AUTO&&(r.widthMode=Li.RELATIVE,o+=r.actualWidth,r.width=r.actualWidth/e,u+=r.width,n++)}if(n&&(u<1&&r.relativeWidthGrowsToFillWidth||u>1&&r.relativeWidthShrinksToFillWidth))for(let e=0;e<i.visibleColumns.length;e++){let t=i.visibleColumns[e];t.widthMode===Li.RELATIVE&&(t.width/=u)}let h=Math.max(0,o);0===h&&(h=i.table.clientWidth);let c=r.minColumnWidth/h;if(isNaN(c)&&(c=0),c>0){let e,t=0;for(let e=0;e<i.visibleColumns.length;e++){let r=i.visibleColumns[e];r.widthMode===Li.RELATIVE&&!r.ignoreMin&&r.width<c&&(t+=c-r.width,r.width=c)}for(let r=0;r<i.visibleColumns.length;r++){let l=i.visibleColumns[r];l.widthMode===Li.RELATIVE&&!l.ignoreMin&&l.width>c&&t>0&&(e=Math.min(t,l.width-c),l.width-=e,t-=e)}}if(r.autoFillTableWidth&&o>0){let e=0,t=o;for(let r=0;r<i.visibleColumns.length;r++){let l=i.visibleColumns[r];l.resizable||l.widthMode!==Li.ABSOLUTE||(e+=l.width),l.widthMode===Li.RELATIVE&&(t-=Math.round(h*l.width))}let r=(l-e)/(l-t-e)||NaN;for(let e=0;e<i.visibleColumns.length&&t>0;e++){let t=i.visibleColumns[e];if(t.resizable||t.widthMode!==Li.ABSOLUTE)if(t.widthMode===Li.RELATIVE)t.width*=r;else{let i=t.actualWidth*r;t.actualWidth!==i&&(t.actualWidth=i,-1===d.indexOf(e)&&d.push(e))}}}for(let e=0;e<i.visibleColumns.length;e++){let t=i.visibleColumns[e];if(t.widthMode===Li.RELATIVE){let r=Math.round(h*t.width);o-=r,n--,0===n&&1===o&&(r++,o--),-1===o&&(r--,o++),r!==t.actualWidth&&(t.actualWidth=r,d.push(e))}}if(i.visibleColumns.length&&(i.visibleColumns[i.visibleColumns.length-1].actualWidthConsideringScrollbarWidth=i.visibleColumns[i.visibleColumns.length-1].actualWidth-(i.scrollbarWidth||0)),null===(a=i.notifyRendererOfColumnsConfig)||void 0===a||a.call(i),t){let e=this._calculateTbodyWidth();s<e&&this._updateTableWidth(!1);for(let e=0;e<d.length;e++)this._resizeColumnElements(d[e]);s>e&&this._updateTableWidth(!1)}}return this}tableHeightChanged(){let e=this._o,t=this._p;if(!t.table)return this;const r=getComputedStyle(t.table);let i=l(this.el,!0)-(parseFloat(r.borderTopWidth)||0)-(parseFloat(r.borderBottomWidth)||0);return i!==e.height&&(e.height=i,t.tbody&&(t.tbody.style.height=Math.max(e.height-l(t.header,!0,!0,!0),1)+\"px\"),e.virtualTable&&this.clearAndRender()),this}addRows(e,t,r,i){let l=this._p;return\"boolean\"==typeof t&&(i=r,r=t,t=-1),\"number\"!=typeof t&&(t=-1),(t<0||t>l.rows.length)&&(t=l.rows.length),i=void 0===i||!!i,e&&(l.rows.add(e,t),l.filteredRows||r&&l.rows.sortColumn.length?(r&&l.rows.sortColumn.length?this.resort():this._refilter(),l.tableSkeletonNeedsRendering=!0,i&&this.render()):i&&(l.virtualListHelper.addItemsAt(e.length,t),this._o.virtualTable?this._updateVirtualHeight()._updateLastCellWidthFromScrollbar().render()._updateTableWidth(!1):l.tbody&&this.render()._updateLastCellWidthFromScrollbar()._updateTableWidth(!0)),this.emit(\"addrows\",{count:e.length,clear:!1})),this}removeRows(e,t,r){let i=this._p;return\"number\"!=typeof t||t<=0||e<0||e>i.rows.length-1||(i.rows.splice(e,t),r=void 0===r||!!r,i.filteredRows?(this._refilter(),i.tableSkeletonNeedsRendering=!0,r&&this.render()):r&&(i.virtualListHelper.removeItemsAt(t,e),this._o.virtualTable?this._updateVirtualHeight()._updateLastCellWidthFromScrollbar().render()._updateTableWidth(!1):this.render()._updateLastCellWidthFromScrollbar()._updateTableWidth(!0))),this}removeRow(e,t){return this.removeRows(e,1,t)}refreshRow(e,t=!0){let r=this._p;if(e<0||e>r.rows.length-1)return this;let i=-1;return r.filteredRows&&-1===(i=r.filteredRows.indexOf(r.rows[e]))||(-1===i&&(i=e),r.virtualListHelper.refreshItemAt(i),t&&r.virtualListHelper.render()),this}getRowElement(e){let t=this._p;if(e<0||e>t.rows.length-1)return null;let r=-1;return t.filteredRows&&-1===(r=t.filteredRows.indexOf(t.rows[e]))?null:(-1===r&&(r=e),t.virtualListHelper.getItemElementAt(r)||null)}refreshAllVirtualRows(){return this._p.virtualListHelper.invalidate().render(),this}setRows(e,t){let r=this._p;return r.rows.reset(e),t&&r.rows.sortColumn.length?this.resort():this._refilter(),this.clearAndRender().trigger(\"addrows\",{count:e.length,clear:!0}),this}getUrlForElementContent(e){let t,r=document.getElementById(e);if(r){let e=r.textContent;if(\"function\"==typeof Blob)t=new Blob([e]);else{let r=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder;if(!r)return null;let i=new r;i.append(e),t=i.getBlob()}return(window.URL||window.webkitURL).createObjectURL(t)}return null}isWorkerSupported(){return window.Worker instanceof Function}createWebWorker(e,t,r){if(this.isWorkerSupported()){let i=this._p,l=new Worker(e),o=e=>{e.data.append?this.addRows(e.data.rows,r):this.setRows(e.data.rows,r)};return l.addEventListener(\"message\",o,!1),i.workerListeners||(i.workerListeners=[]),i.workerListeners.push({worker:l,listener:o}),(t||void 0===t)&&l.postMessage(null),l}return null}unbindWebWorker(e){let t=this._p;if(t.workerListeners)for(let r=0;r<t.workerListeners.length;r++)t.workerListeners[r].worker===e&&(e.removeEventListener(\"message\",t.workerListeners[r].listener,!1),t.workerListeners.splice(r,1),r--);return this}abortCellPreview(){return this.hideCellPreview(),this}cancelColumnResize(){const e=this._p;return e.resizer&&(e.resizer.remove(),e.resizer=null,e.eventsSink.remove(document,\".colresize\")),this}_onTableScrolledHorizontally(){const e=this._p;e.header.scrollLeft=e.table.scrollLeft}_getColumnByResizePosition(e){let t=this._o,r=this._isTableRtl(),l=e.target.closest(`div.${t.tableClassName}-header-cell,div.${t.cellPreviewClassName}`);l[Wi]&&(l=l[Wi]);let n=l.previousSibling;for(;n&&1!==n.nodeType;)n=n.previousSibling;let s=!n,a=(e.pageX||e.clientX)-o(l).left;if(r){if(!s&&i(l,!0,!0,!0)-a<=t.resizeAreaWidth/2)return n.columnName;if(a<=t.resizeAreaWidth/2)return l.columnName}else{if(!s&&a<=t.resizeAreaWidth/2)return n.columnName;if(i(l,!0,!0,!0)-a<=t.resizeAreaWidth/2)return l.columnName}return null}_onTouchStartColumnHeader(e){const t=this._p;if(t.currentTouchId)return;let r=e.changedTouches[0];t.currentTouchId=r.identifier;let i,l=e.currentTarget,o={x:r.pageX,y:r.pageY},n=o,s=function(){t.currentTouchId=null,t.eventsSink.remove(l,\".colheader\"),clearTimeout(i)},a=(t,...r)=>{for(const t of e)e[t];for(const e of r)for(const t of[\"target\",\"clientX\",\"clientY\",\"offsetX\",\"offsetY\",\"screenX\",\"screenY\",\"pageX\",\"pageY\",\"which\"])null!=e[t]&&e[t];return new MouseEvent(t,e)};l.dispatchEvent(a(\"mousedown\",e.changedTouches[0],{button:0,target:e.target})),i=setTimeout(()=>{s(),t.eventsSink.add(l,\"touchend.colheader\",e=>{Ni(e)||e.preventDefault(),t.eventsSink.remove(l,\".colheader\")},{once:!0}).add(l,\"touchcancel.colheader\",e=>{t.eventsSink.remove(l,\".colheader\")},{once:!0}),Math.sqrt(Math.pow(Math.abs(n.x-o.x),2)+Math.pow(Math.abs(n.y-o.y),2))<9&&(this.cancelColumnResize(),l.dispatchEvent(a(\"mouseup\",e.changedTouches[0],{button:2,target:e.target})))},500),t.eventsSink.add(l,\"touchend.colheader\",e=>{let r=ai(e.changedTouches,e=>e.identifier===t.currentTouchId);r&&(s(),Ni(e)||e.preventDefault(),n={x:r.pageX,y:r.pageY},(Math.sqrt(Math.pow(Math.abs(n.x-o.x),2)+Math.pow(Math.abs(n.y-o.y),2))<9||t.resizer)&&(l.dispatchEvent(a(\"mouseup\",r,{0:2,target:e.target})),l.dispatchEvent(a(\"click\",r,{button:0,target:e.target}))))}).add(l,\"touchcancel.colheader\",s).add(l,\"touchmove.colheader\",e=>{let r=ai(e.changedTouches,e=>e.identifier===t.currentTouchId);r&&(n={x:r.pageX,y:r.pageY},t.resizer&&(e.preventDefault(),l.dispatchEvent(a(\"mousemove\",r,{target:e.target}))))})}_onMouseDownColumnHeader(e){if(0!==e.button)return this;let t=this._o,n=this._p,s=this._getColumnByResizePosition(e);if(s){let a=n.columns.get(s);if(!t.resizableColumns||!a||!a.resizable)return!1;let d=this._isTableRtl();n.resizer&&n.resizer.remove(),n.resizer=gi(\"div\"),n.resizer.className=t.resizerClassName,r(n.resizer,{position:\"absolute\",display:\"block\",zIndex:-1,visibility:\"hidden\",width:\"2px\",background:\"#000\",opacity:.7}),this.el.appendChild(n.resizer);let u=a.element,h=n.resizer.parentNode;const c=getComputedStyle(h),m=getComputedStyle(u);let f=o(u),p=o(h);p.left+=parseFloat(c.borderLeftWidth)||0,p.top+=parseFloat(c.borderTopWidth)||0,f.left-=p.left,f.top-=p.top,f.top-=parseFloat(m.borderTopWidth)||0;let v=i(n.resizer,!0,!0,!0);d?(f.left-=Math.ceil((parseFloat(m.borderLeftWidth)||0)/2),f.left-=Math.ceil(v/2)):(f.left+=i(u,!0,!0,!0),f.left+=Math.ceil((parseFloat(m.borderRightWidth)||0)/2),f.left-=Math.ceil(v/2)),r(n.resizer,{\"z-index\":\"10\",visibility:\"visible\",left:f.left+\"px\",top:f.top+\"px\",height:l(this.el,!1,!1,!1)+\"px\"}),n.resizer.columnName=u.columnName;try{n.resizer.style.zIndex=\"\"}catch(e){}n.eventsSink.add(document,\"mousemove.colresize\",this._onMouseMoveResizeArea.bind(this)).add(document,\"mouseup.colresize\",this._onEndDragColumnHeader.bind(this)),e.preventDefault()}}_onMouseMoveColumnHeader(e){let t=this._o,r=this._p;if(t.resizableColumns){let i=this._getColumnByResizePosition(e),l=e.target.closest(`div.${t.tableClassName}-header-cell,div.${t.cellPreviewClassName}`);i&&r.columns.get(i).resizable?l.style.cursor=\"e-resize\":l.style.cursor=\"\"}}_onMouseUpColumnHeader(e){if(2===e.button){let t=this._o,r=e.target.closest(`div.${t.tableClassName}-header-cell,div.${t.cellPreviewClassName}`),n=o(r);n.width=i(r,!0,!0,!0),n.height=l(r,!0,!0,!0),this.emit(\"headercontextmenu\",{columnName:r.columnName,pageX:e.pageX,pageY:e.pageY,bounds:n})}return this}_onMouseLeaveColumnHeader(e){let t=this._o;e.target.closest(`div.${t.tableClassName}-header-cell,div.${t.cellPreviewClassName}`).style.cursor=\"\"}_onClickColumnHeader(e){if(!Ni(e)&&!this._getColumnByResizePosition(e)){let t=this._o,r=this._p,i=e.target.closest(`div.${t.tableClassName}-header-cell,div.${t.cellPreviewClassName}`);if(t.sortableColumns){let e=r.columns.get(i.columnName),l=r.rows.sortColumn;if(e&&e.sortable){let r=!0,i=l.length?l[l.length-1]:null;i&&i.column===e.name&&(i.descending&&t.allowCancelSort?(r=!1,l.splice(l.length-1,1)):i.descending=!i.descending),r?this.sort(e.name,void 0,!0).render():this.sort()}}}}_onStartDragColumnHeader(e){let t=this._o,r=this._p;if(t.movableColumns){let i=e.target.closest(`div.${t.tableClassName}-header-cell,div.${t.cellPreviewClassName}`),l=r.columns.get(i.columnName);l&&l.movable?(i.style.opacity=.35,r.dragId=161061273*Math.random(),e.dataTransfer.setData(\"text\",JSON.stringify({dragId:r.dragId,column:l.name}))):e.preventDefault()}else e.preventDefault()}_onMouseMoveResizeArea(e){let t=this._p,r=t.columns.get(t.resizer.columnName),l=this._isTableRtl(),n=r.element,s=t.resizer.parentNode;const a=getComputedStyle(s),d=getComputedStyle(n);let u=o(n),h=o(s);h.left+=parseFloat(a.borderLeftWidth)||0,u.left-=h.left;let c=i(t.resizer,!0,!0,!0),m=\"border-box\"===d.boxSizing,f=e.pageX-h.left,p=u.left;p-=Math.ceil(c/2),l?(p+=i(n,!0,!0,!0),p-=r.ignoreMin?0:this._o.minColumnWidth,m||(p-=Math.ceil((parseFloat(d.borderLeftWidth)||0)/2),p-=this._horizontalPadding(n)),f>p&&(f=p)):(p+=r.ignoreMin?0:this._o.minColumnWidth,m||(p+=Math.ceil((parseFloat(d.borderRightWidth)||0)/2),p+=this._horizontalPadding(n)),f<p&&(f=p)),t.resizer.style.left=f+\"px\"}_onEndDragColumnHeader(e){let t=this._o,r=this._p;if(r.resizer){r.eventsSink.remove(document,\".colresize\");let l=r.columns.get(r.resizer.columnName),n=this._isTableRtl(),s=l.element,a=s.firstChild,d=r.resizer.parentNode;const u=getComputedStyle(d),h=getComputedStyle(s);let c=o(s),m=o(d);m.left+=parseFloat(u.borderLeftWidth)||0,c.left-=m.left;let f=i(r.resizer,!0,!0,!0),p=\"border-box\"===h.boxSizing,v=e.pageX-m.left,g=c.left,b=c.left,C=0;if(g-=Math.ceil(f/2),n){if(!p){v+=this._horizontalPadding(s);const e=getComputedStyle(a||s);v+=parseFloat(e.borderLeftWidth)||0,v+=parseFloat(e.borderRightWidth)||0,v+=l.arrowProposedWidth||0}g+=i(s,!0,!0,!0),b=g-(l.ignoreMin?0:this._o.minColumnWidth),v>b&&(v=b),C=g-v}else{if(!p){v-=this._horizontalPadding(s);const e=getComputedStyle(a||s);v-=parseFloat(e.borderLeftWidth)||0,v-=parseFloat(e.borderRightWidth)||0,v-=l.arrowProposedWidth||0}b=g+(l.ignoreMin?0:this._o.minColumnWidth),v<b&&(v=b),C=v-g}r.resizer.remove(),r.resizer=null;let w=C;if(l.widthMode===Li.RELATIVE){let e=this._calculateWidthAvailableForColumns(),i=0,o=0;for(let t=0;t<r.visibleColumns.length;t++){let n=r.visibleColumns[t];n.name!==l.name&&(n.widthMode===Li.RELATIVE?(i+=n.width,o++):e-=n.actualWidth)}if(e=Math.max(1,e),1===e&&(e=r.table.clientWidth),w=C/e,o>0){let e=w/((1-w)/i);i+=w,(i<1&&t.relativeWidthGrowsToFillWidth||i>1&&t.relativeWidthShrinksToFillWidth)&&(w=e)}w*=100,w+=\"%\"}this.setColumnWidth(l.name,w)}else e.target.style.opacity=null}_onDragEnterColumnHeader(e){let t=this._o,r=this._p;if(t.movableColumns){let i=e.dataTransfer.getData(\"text\");i=i?JSON.parse(i):null;let l=e.target.closest(`div.${t.tableClassName}-header-cell,div.${t.cellPreviewClassName}`);if(!i||r.dragId===i.dragId&&l.columnName!==i.column){let e=r.columns.get(l.columnName);e&&(e.movable||e!==r.visibleColumns[0])&&l.classList.add(\"drag-over\")}}}_onDragOverColumnHeader(e){e.preventDefault()}_onDragLeaveColumnHeader(e){let t=this._o,r=e.target.closest(`div.${t.tableClassName}-header-cell,div.${t.cellPreviewClassName}`);e.relatedTarget.contains(r.firstChild)||r.classList.remove(\"drag-over\")}_onDropColumnHeader(e){e.preventDefault();let t=this._o,r=this._p,i=JSON.parse(e.dataTransfer.getData(\"text\")),l=e.target.closest(`div.${t.tableClassName}-header-cell,div.${t.cellPreviewClassName}`);if(t.movableColumns&&i.dragId===r.dragId){let e=i.column,t=l.columnName,o=r.columns.get(e),n=r.columns.get(t);o&&n&&o.movable&&(n.movable||n!==r.visibleColumns[0])&&this.moveColumn(e,t)}l.classList.remove(\"drag-over\")}_clearSortArrows(){let e=this._p;if(e.table){let t=this._o.tableClassName,r=s(e.headerRow,`>div.${t}-header-cell.sorted`),i=Array.prototype.slice.call(r,0).map(e=>a(e,\">div>.sort-arrow\")).filter(e=>!!e);for(const t of i){let r=e.columns.get(t.parentNode.parentNode.columnName);r&&(r.arrowProposedWidth=0),t.remove()}for(const e of r)e.classList.remove(\"sorted\",\"desc\")}return this}_showSortArrow(e,t){let r=this._p.columns.get(e);if(!r)return!1;let i=gi(\"span\");return i.className=\"sort-arrow\",r.element&&(r.element.className+=t?\" sorted desc\":\" sorted\",r.element.firstChild.insertBefore(i,r.element.firstChild.firstChild)),r.widthMode!==Li.RELATIVE&&this._o.adjustColumnWidthForSortArrow&&(r.arrowProposedWidth=i.scrollWidth+(parseFloat(getComputedStyle(i).marginRight)||0)+(parseFloat(getComputedStyle(i).marginLeft)||0)),!0}_resizeColumnElements(e){let t=this._p;const r=t.headerRow.querySelectorAll(`div.${this._o.tableClassName}-header-cell`)[e];let i=t.columns.get(r.columnName);if(i){r.style.width=(i.actualWidthConsideringScrollbarWidth||i.actualWidth)+\"px\";let l=(i.actualWidthConsideringScrollbarWidth||i.actualWidth)+\"px\",o=t.tbody.childNodes;for(let t=0,r=o.length;t<r;t++){let r=o[t];1===r.nodeType&&(r.childNodes[e].style.width=l)}}return this}_destroyHeaderCells(){let e=this._p;return e.headerRow&&(e.headerRow=null),this}_renderSkeletonBase(){var e;let t=this._p,r=this._o;null===(e=t.virtualListHelper)||void 0===e||e.destroy(),t.virtualListHelper=null,t.table&&r.virtualTable&&(t.table.remove(),t.table=t.tbody=null),this._destroyHeaderCells(),t.currentTouchId=null,t.header&&t.header.remove();let i=r.tableClassName,o=gi(\"div\"),n=gi(\"div\");return o.className=`${i}-header`,n.className=`${i}-header-row`,t.header=o,t.headerRow=n,o.appendChild(n),this.el.prepend(o),Ri(this.el),r.width===Ti.Width.SCROLL?this.el.style.overflow=\"hidden\":this.el.style.overflow=\"\",!r.height&&r.virtualTable&&(r.height=l(this.el,!0)),this}_bindHeaderColumnEvents(e){const t=e.firstChild;e.addEventListener(\"mousedown\",this._onMouseDownColumnHeader.bind(this)),e.addEventListener(\"mousemove\",this._onMouseMoveColumnHeader.bind(this)),e.addEventListener(\"mouseup\",this._onMouseUpColumnHeader.bind(this)),e.addEventListener(\"mouseleave\",this._onMouseLeaveColumnHeader.bind(this)),e.addEventListener(\"touchstart\",this._onTouchStartColumnHeader.bind(this)),e.addEventListener(\"dragstart\",this._onStartDragColumnHeader.bind(this)),e.addEventListener(\"click\",this._onClickColumnHeader.bind(this)),e.addEventListener(\"contextmenu\",e=>{e.preventDefault()}),t.addEventListener(\"dragenter\",this._onDragEnterColumnHeader.bind(this)),t.addEventListener(\"dragover\",this._onDragOverColumnHeader.bind(this)),t.addEventListener(\"dragleave\",this._onDragLeaveColumnHeader.bind(this)),t.addEventListener(\"drop\",this._onDropColumnHeader.bind(this))}_renderSkeletonHeaderCells(){let e=this._p,t=this._o,r=t.allowCellPreview,i=t.allowHeaderCellPreview,l=t.tableClassName+\"-header-cell\",o=e.headerRow;for(let n=0;n<e.visibleColumns.length;n++){let s=e.visibleColumns[n];if(s.visible){let a=gi(\"div\");a.draggable=!0,a.className=l,a.style.width=s.actualWidth+\"px\",t.sortableColumns&&s.sortable&&(a.className+=\" sortable\"),a.columnName=s.name,a.setAttribute(\"data-column\",s.name);let d=gi(\"div\");d.innerHTML=t.headerCellFormatter(s.label,s.name),a.appendChild(d),r&&i&&e._bindCellHoverIn(a),o.appendChild(a),e.visibleColumns[n].element=a,this._bindHeaderColumnEvents(a),this._disableCssSelect(a)}}return this.emit(\"headerrowcreate\",o),this}_renderSkeletonBody(){let e=this._p,t=this._o,i=t.tableClassName;if(t.virtualTable&&!e.virtualRowHeight){let t=()=>{let e=gi(\"div\"),t=e.appendChild(gi(\"div\")),r=t.appendChild(gi(\"div\"));return e.className=`${i}-row`,t.className=`${i}-cell`,r.innerHTML=\"0\",e.style.visibility=\"hidden\",e.style.position=\"absolute\",e};const o=gi(\"div\");o.className=this.el.className,r(o,{\"z-index\":-1,position:\"absolute\",left:\"0\",top:\"-9999px\",width:\"1px\",overflow:\"hidden\"});const n=gi(\"div\");n.className=i,o.appendChild(n);const s=gi(\"div\");s.className=`${i}-body`,s.style.width=\"99999px\",n.appendChild(s),document.body.appendChild(o);let a=t(),d=t(),u=t();s.appendChild(a),s.appendChild(d),s.appendChild(u),e.virtualRowHeightFirst=l(a,!0,!0,!0),e.virtualRowHeight=l(d,!0,!0,!0),e.virtualRowHeightLast=l(u,!0,!0,!0),o.remove()}if(!e.table){let o=document.createDocumentFragment(),n=gi(\"div\");n.className=i,t.virtualTable&&(n.className+=\" virtual\");const s=getComputedStyle(n);let a=t.height-l(e.header,!0,!0,!0);\"border-box\"!==s.boxSizing&&(a-=parseFloat(s.borderTopWidth)||0,a-=parseFloat(s.borderBottomWidth)||0,a-=parseFloat(s.paddingTop)||0,a-=parseFloat(s.paddingBottom)||0),e.visibleHeight=a,r(n,{height:t.height?a+\"px\":\"auto\",display:\"block\",overflowY:\"auto\",overflowX:t.width===Ti.Width.SCROLL?\"auto\":\"hidden\"}),o.appendChild(n);let d=gi(\"div\");d.className=t.tableClassName+\"-body\",d.style.minHeight=\"1px\",e.table=n,e.tbody=d,Ri(d),Ri(n),n.appendChild(d),this.el.appendChild(o),this._setupVirtualTable()}return this}_renderSkeleton(){return this}_updateVirtualHeight(){const e=this._o,t=this._p;if(!t.tbody)return this;if(e.virtualTable){const e=t.virtualListHelper.estimateFullHeight();t.lastVirtualScrollHeight=e,t.tbody.style.height=e+\"px\"}else t.tbody.style.height=\"\";return this}_updateLastCellWidthFromScrollbar(e){const t=this._p;let r=t.table.offsetWidth-t.table.clientWidth;if(r!==t.scrollbarWidth||e){var i;t.scrollbarWidth=r;for(let e=0;e<t.columns.length;e++)t.columns[e].actualWidthConsideringScrollbarWidth=null;if(t.scrollbarWidth>0&&t.visibleColumns.length>0){let e=t.visibleColumns.length-1;t.visibleColumns[e].actualWidthConsideringScrollbarWidth=t.visibleColumns[e].actualWidth-t.scrollbarWidth;let r=t.visibleColumns[e].actualWidthConsideringScrollbarWidth+\"px\",i=t.tbody.childNodes;for(let t=0,l=i.length;t<l;t++){let l=i[t];1===l.nodeType&&(l.childNodes[e].style.width=r)}t.headerRow.childNodes[e].style.width=r}null===(i=t.notifyRendererOfColumnsConfig)||void 0===i||i.call(t)}return this}_updateTableWidth(e){const t=this._o,r=this._p;let l=this._calculateTbodyWidth();if(r.tbody.style.minWidth=l+\"px\",r.headerRow.style.minWidth=l+(r.scrollbarWidth||0)+\"px\",r.eventsSink.remove(r.table,\"scroll\"),t.width===Ti.Width.AUTO)n(r.table,i(r.tbody,!0,!0,!0)),n(this.el,i(r.table,!0,!0,!0));else if(t.width===Ti.Width.SCROLL){if(e){let e=r.table?r.table.scrollTop:0,t=r.table?r.table.scrollLeft:0;!function(e){let t=e.style.display;e.style.display=\"none\",e.offsetHeight,e.style.display=t}(this.el),r.table.crollTop=e,r.table.scrollLeft=t,r.header.scrollLeft=t}r.eventsSink.add(r.table,\"scroll\",this._onTableScrolledHorizontally.bind(this))}return this}_isTableRtl(){return\"rtl\"===getComputedStyle(this._p.table).direction}_serializeColumnWidth(e){return e.widthMode===Li.AUTO?\"auto\":e.widthMode===Li.RELATIVE?100*e.width+\"%\":e.width}_disableCssSelect(e){const t=e.style;t[\"-webkit-touch-callout\"]=\"none\",t[\"-webkit-user-select\"]=\"none\",t[\"-moz-user-select\"]=\"none\",t[\"-ms-user-select\"]=\"none\",t[\"-o-user-select\"]=\"none\",t[\"user-select\"]=\"none\"}_cellMouseOverEvent(e){const t=this._o,n=this._p;let s=e.firstElementChild;if(!(s.scrollWidth-s.clientWidth>1||s.scrollHeight-s.clientHeight>1))return;this.hideCellPreview(),n.abortCellPreview=!1;const a=e.parentElement,d=gi(\"div\");d.innerHTML=e.innerHTML,d.className=t.cellPreviewClassName;let u=e.classList.contains(`${t.tableClassName}-header-cell`);u&&(d.classList.add(\"header\"),e.classList.contains(\"sortable\")&&d.classList.add(\"sortable\"),d.draggable=!0,this._bindHeaderColumnEvents(d));const h=getComputedStyle(e),c=getComputedStyle(s);let m=parseFloat(h.paddingLeft)||0,f=parseFloat(h.paddingRight)||0,p=parseFloat(h.paddingTop)||0,v=parseFloat(h.paddingBottom)||0,g=s.scrollWidth+(e.clientWidth-s.offsetWidth),b=\"border-box\"===h.boxSizing;if(b?d.style.boxSizing=\"border-box\":(g-=m+f,d.style.marginTop=(parseFloat(h.borderTopWidth)||0)+\"px\"),!n.transparentBgColor1){let e=document.createElement(\"div\");document.body.appendChild(e),e.style.backgroundColor=\"transparent\",n.transparentBgColor1=getComputedStyle(e).backgroundColor,e.style.backgroundColor=\"rgba(0,0,0,0)\",n.transparentBgColor2=getComputedStyle(e).backgroundColor,e.remove()}let C={\"box-sizing\":b?\"border-box\":\"content-box\",width:g,\"min-height\":Math.max(l(e),parseFloat(h.minHeight)||0)+\"px\",\"padding-left\":m,\"padding-right\":f,\"padding-top\":p,\"padding-bottom\":v,overflow:\"hidden\",position:\"absolute\",\"z-index\":\"-1\",left:\"0\",top:\"0\",cursor:h.cursor},w=h.backgroundColor;w!==n.transparentBgColor1&&w!==n.transparentBgColor2||(w=getComputedStyle(a).backgroundColor),w!==n.transparentBgColor1&&w!==n.transparentBgColor2||(w=\"#fff\"),C[\"background-color\"]=w,r(d,C),r(d.firstChild,{direction:c.direction,\"white-space\":c.whiteSpace,\"min-height\":c.minHeight,\"line-height\":c.lineHeight,font:c.font}),this.el.appendChild(d),u&&this._disableCssSelect(d),d.rowVIndex=a.vIndex;let y=d.rowIndex=a.index;d.columnName=n.visibleColumns[vi.call(a.childNodes,e)].name;try{let t=fi.saveSelection(e);t&&fi.restoreSelection(d,t)}catch(e){}if(this.emit(\"cellpreview\",{el:d.firstElementChild,name:d.columnName,rowIndex:null!=y?y:null,rowData:null==y?null:n.rows[y],cell:e,cellEl:s}),n.abortCellPreview)return void d.remove();null!=y&&d.addEventListener(\"click\",e=>{this.emit(\"rowclick\",{event:e,filteredRowIndex:a.vIndex,rowIndex:y,rowEl:a,rowData:n.rows[y]})});let _=this.el,S=_===window?document:_;const W=getComputedStyle(_);let R=o(e),N=o(_),T=\"right\"===h.float,L=T?\"right\":\"left\";if(T){let t=window.innerWidth;R.right=t-(R.left+i(e,!0,!0,!0)),N.right=t-(N.left+i(_,!0,!0,!0))}R.left-=parseFloat(W.borderLeftWidth)||0,\"right\"===L&&(R.right-=parseFloat(W.borderRightWidth)||0),R.top-=parseFloat(W.borderTopWidth)||0,R[L]+=parseFloat(h[`border-${L}-width`])||0,R.top+=parseFloat(h.borderTopWidth)||parseFloat(h.borderBottomWidth)||0,R.left-=N.left,\"right\"===L&&(R.right-=N.right),R.top-=N.top;let E=i(_,!1,!1,!1)-i(d,!0,!0,!0);R[L]=R[L]<0?0:R[L]>E?E:R[L];let x=l(e,!0,!0,!0),z=S.scrollTop+l(_,!0)-x;R.top>z&&(R.top=Math.max(0,z));let P={top:R.top+\"px\",\"z-index\":9999};P[L]=R[L]+\"px\",r(d,P),d[Wi]=e,n.cellPreviewCell=d,e[Si]=d,n._bindCellHoverOut(e),n._bindCellHoverOut(d),d.addEventListener(\"wheel\",()=>{this.hideCellPreview()})}_cellMouseOutEvent(e){this.hideCellPreview()}hideCellPreview(){const e=this._p;if(e.cellPreviewCell){var t;let r,i=e.cellPreviewCell,l=i[Wi];try{r=fi.saveSelection(i)}catch(e){}e.cellPreviewCell.remove(),e._unbindCellHoverOut(l),e._unbindCellHoverOut(i);try{r&&fi.restoreSelection(l,r)}catch(e){}this.emit(\"cellpreviewdestroy\",{el:i.firstChild,name:i.columnName,rowIndex:null!==(t=i.rowIndex)&&void 0!==t?t:null,rowData:null==i.rowIndex?null:e.rows[i.rowIndex],cell:l,cellEl:l.firstChild}),delete l[Si],delete i[Wi],e.cellPreviewCell=null,e.abortCellPreview=!1}else e.abortCellPreview=!0;return this}}Ti.VERSION=\"@@VERSION\";const Li={AUTO:0,ABSOLUTE:1,RELATIVE:2};Ti.Width={NONE:\"none\",AUTO:\"auto\",SCROLL:\"scroll\"};export{Ti as default};\n\n//# sourceMappingURL=lib.es6.min.js.map","import jQuery from 'jquery';\r\nimport DGTable from '@danielgindi/dgtable.js';\r\n\r\nexport default class DGTableJQuery extends DGTable {\r\n constructor(options) {\r\n super(options);\r\n\r\n this.$el = jQuery(this.el)\r\n .data('dgtable', this)\r\n .on('remove', () => this.destroy());\r\n\r\n this.on('headerrowdestroy', () => {\r\n const headerRow = this._p?.headerRow;\r\n if (!headerRow) return;\r\n\r\n jQuery(headerRow).find(`div.${this._o.tableClassName}-header-cell`).remove();\r\n });\r\n }\r\n\r\n destroy() {\r\n if (this._p?.table)\r\n jQuery(this._p.table).empty();\r\n if (this._p?.tbody)\r\n jQuery(this._p.tbody).empty();\r\n return super.destroy();\r\n }\r\n}\r\n"],"names":["rtlScrollType","detectRtlScrollType","definer","document","createElement","dir","Object","assign","style","direction","fontSize","width","height","position","top","overflow","textContent","body","appendChild","type","scrollLeft","Math","floor","parentNode","removeChild","calculateNativeScrollLeftForLeft","el","left","rtl","undefined","getComputedStyle","scrollWidth","clientWidth","getScrollLeft","calculateNativeScrollLeftForHorz","value","getScrollHorz","setScrollHorz","horz","setCssProps","props","key","entries","String","generateGetElementSizeFn","pseudo","dim","dimCased","startDim","endDim","arguments","length","pseudoSelector","paddings","borders","margins","window","documentElement","nodeType","doc","max","includesPadding","includesBorders","getBoundingClientRect","raw","parseFloat","boxSizing","totalPadding","totalBorders","totalMargins","generateSetElementSizeFn","includesPaddingAndBorders","getElementWidth","getElementHeight","setElementWidth","getElementOffset","getClientRects","rect","view","ownerDocument","defaultView","pageYOffset","pageXOffset","hasScopedQuerySelector","detectScopedSelectorFeature","querySelector","ignored","scopedSelector","selector","replace","id","uniqueId","Date","now","scopedSelectorAll","querySelectorAll","hasOwnProperty","prototype","hasInsertAdjacentElement","Element","insertAdjacentElement","insertBefore","before","parent","DocumentFragment","insertBeforeWithFragment","itemEl","fragment","itemParent","createDocumentFragment","childNodes","nextSibling","VirtualListHelper","constructor","opts","p","_p","list","hookScrollEvent","count","virtual","userItemsParent","itemsParent","setVirtualWrapperWidth","autoVirtualWrapperWidth","estimatedItemHeight","buffer","itemHeightEstimatorFn","itemElementCreatorFn","defaultElementCreator","onItemRender","onItemUnrender","onScrollHeightChange","virtualWrapper","currentItemsParent","cachedItemHeights","cachedItemEstimatedHeights","cachedItemPositions","itemPositionsNeedsUpdate","boundRender","render","bind","existingEls","_hookEvents","setCount","setVirtual","setEstimatedItemHeight","setBuffer","setItemHeightEstimatorFn","setItemElementCreatorFn","setOnItemRender","setOnItemUnrender","setOnScrollHeightChange","destroy","_unhookEvents","invalidate","_destroyElements","setHookScrollEvent","enabled","isHookScrollEventEnabled","getCount","isVirtual","abs","Number","getEstimatedItemHeight","setAutoVirtualWrapperWidth","virtualWrapperWidthWasSet","isAutoVirtualWrapperWidth","getBuffer","fn","estimateFullHeight","_calculateItemPosition","rect1","rect2","invalidatePositions","ItemIndexSymbol","scrollTop","visibleHeight","clientHeight","visibleBottom","existingCount","originalWidth","_resetCurrentItemsParent","i","ReuseElSymbol","existingRange","_getExistingElsRange","firstVisibleIndex","binarySearchPosition","firstRenderIndex","index","renderPos","bufferEnd","maxIndexToRender","insertedItems","findElementToReuse","existingEl","firstIndex","lastIndex","find","x","firstValidArrayIndex","call","findLast","_dequeueElementForIndex","push","item","_insertItemAndFlow","scrollHeight","scrollHeightPx","splice","addItemsAt","atIndex","_invalidateItemIndexesAt","startIndex","_pushItemIndexesAt","end","removeItemsAt","min","refreshItemAt","isItemRendered","getItemElementAt","getItemPosition","getItemIndexFromElement","getItemSize","getVisibleItemCount","lastVisibleIndex","retriever","pos","Infinity","binarySearchPositionByFn","createGhostItemElement","ghostIndex","append","ghostTester","_setItemPositionsNeedsUpdate","c","addEventListener","removeEventListener","fromIndex","toIndex","prevIndex","avoidDomReflow","isNew","shouldReRender","right","innerHTML","Node","indexOf","beforeIndex","itemHeight","cachedItemHeight","supportedTransform","getSupportedTransform","lastValidArrayIndex","len","Symbol","positions","start","total","mid","midPos","array","_isTransformSupported","prefixes","div","DomEventsSink","_events","add","eventName","handler","optionsOrCapture","parts","split","name","namespace","useCapture","capture","remove","keep","e","h","globalThis","self","m","Function","v","g","b","C","w","y","_","S","W","R","DGTableJQuery","DGTable","options","$el","jQuery","data","on","headerRow","_o","tableClassName","table","empty","tbody"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5]}