jquery.dgtable 0.6.19 → 2.0.1

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.
@@ -0,0 +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]}