{"version":3,"sources":["jsdelivr-header.js","/npm/advanced-ellipsis@0.2.3/dist/advanced-ellipsis.esm.js"],"names":[],"mappings":"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","file":"/npm/advanced-ellipsis@0.2.3/dist/advanced-ellipsis.esm.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/advanced-ellipsis@0.2.3/dist/advanced-ellipsis.esm.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","var AdvancedEllipsis = /** @class */ (function () {\n    function AdvancedEllipsis(options, selector) {\n        var _this = this;\n        var _observer = new MutationObserver(function (mutations) {\n            mutations.forEach(function (mutation) {\n                if (mutation.attributeName === 'style')\n                    return;\n                if (mutation.target.childNodes.length === 1 && mutation.target.childNodes[0].nodeType === 3) {\n                    addSetting(mutation.target);\n                }\n            });\n        }.bind(this));\n        var _options = {\n            mutationObserver: true,\n            defaultStyles: true,\n            useCloneNode: false,\n            showOption: 'static',\n            correctionValue: 0,\n            flowDelay: 1000,\n            flowAfterDelay: 1000,\n            flowSpeed: 50,\n            flowPadding: 20,\n            flowCount: 1,\n            flowAutoCount: Infinity,\n            flowCountPre: 0,\n            tooltipShowAlways: false,\n            tooltipClass: 'ellipsis_tooltip_box',\n            tooltipDuration: 2000,\n            customTooltipStyles: {},\n        };\n        var _elements = [];\n        var _isStart = false;\n        var objectOverwrite = function (obj1, obj2, propertyOverwrite) {\n            if (typeof obj1 !== 'object' || typeof obj2 !== 'object')\n                return;\n            Object.keys(obj2).forEach(function (key) {\n                if (propertyOverwrite || Object.prototype.hasOwnProperty.call(obj1, key)) {\n                    obj1[key] = obj2[key];\n                }\n            });\n            return obj1;\n        };\n        var defaultTooltipStyles = function (event) {\n            var X = event.type === \"touchstart\" ? event.changedTouches[0].pageX : event.pageX;\n            var Y = event.type === \"touchstart\" ? event.changedTouches[0].pageY : event.pageY;\n            var isLeft = X < window.innerWidth / 2;\n            var isTop = Y < window.innerHeight / 2;\n            var boxGap = 10;\n            return {\n                width: 'auto',\n                height: 'auto',\n                maxWidth: (isLeft ? window.innerWidth - X : X) + 'px',\n                padding: '5px',\n                backgroundColor: '#fff',\n                border: '1px solid #000',\n                position: 'absolute',\n                fontSize: '12px',\n                left: isLeft ? Math.floor(X + boxGap) + 'px' : 'unset',\n                right: !isLeft ? Math.floor(window.innerWidth - X - boxGap) + 'px' : 'unset',\n                top: isTop ? Math.floor(Y + boxGap) + 'px' : 'unset',\n                bottom: !isTop ? Math.floor(window.innerHeight - Y + boxGap) + 'px' : 'unset',\n            };\n        };\n        var checkEllipsis = function (element, useCloneNode) {\n            var inner = element.scrollWidth;\n            var outer = element.offsetWidth;\n            if (useCloneNode) {\n                var contrast = element.cloneNode(true);\n                contrast.style.display = 'inline';\n                contrast.style.width = 'auto';\n                contrast.style.visibility = 'hidden';\n                element.parentNode.appendChild(contrast);\n                inner = contrast.offsetWidth;\n                element.parentNode.removeChild(contrast);\n            }\n            inner += _options.correctionValue;\n            return inner > outer ? inner - outer : 0;\n        };\n        var flowAnitate = function (element, length, repeatCount) {\n            var e_option = element['ellipsisOption'];\n            var this_options = _this.getOptions();\n            length = length + this_options.flowPadding;\n            var start = null;\n            var duration = length / this_options.flowSpeed * 1000;\n            var delay = this_options.flowDelay;\n            var afterDelay = this_options.flowAfterDelay;\n            element.style.textOverflow = 'clip';\n            e_option.eventOn = true;\n            var flowAnitate = function (timestamp) {\n                if (!e_option.eventOn) {\n                    element.style.transition = 'none';\n                    element.style.textIndent = '0';\n                    return;\n                }\n                if (!start)\n                    start = timestamp;\n                var timediff = timestamp - start;\n                if (repeatCount > 0) {\n                    var newTransition = 'text-indent ' + duration + 'ms ' + delay + 'ms linear';\n                    if (newTransition !== element.style.transition) {\n                        element.style.transition = 'text-indent ' + duration + 'ms ' + delay + 'ms linear';\n                        element.style.textIndent = '-' + length + 'px';\n                    }\n                    if (timediff >= delay + duration + afterDelay) {\n                        repeatCount--;\n                        element.style.transition = 'none';\n                        element.style.textIndent = '0';\n                        start = timestamp;\n                        window.requestAnimationFrame(flowAnitate);\n                    }\n                    else {\n                        window.requestAnimationFrame(flowAnitate);\n                    }\n                }\n                else {\n                    element.style.textOverflow = 'ellipsis';\n                    e_option.eventOn = false;\n                }\n            };\n            window.requestAnimationFrame(flowAnitate);\n        };\n        var flowListener = function (element, length) {\n            var e_option = element['ellipsisOption'];\n            var count = element.dataset.flowCount ? parseFloat(element.dataset.flowCount) : _this.getOption('flowCount');\n            return function () {\n                if (!e_option.eventOn) {\n                    flowAnitate(element, length, count);\n                }\n            };\n        };\n        var tooltipListener = function (element) {\n            var _a;\n            var e_option = element['ellipsisOption'];\n            var this_options = _this.getOptions();\n            var floatElement = document.createElement(\"div\");\n            if (element.dataset.tooltipId) {\n                floatElement.id = element.dataset.tooltipId;\n            }\n            var tooltipClass = element.dataset.tooltipClass || this_options.tooltipClass;\n            if (tooltipClass) {\n                (_a = floatElement.classList).add.apply(_a, tooltipClass.split(' '));\n            }\n            return function (event) {\n                if (!e_option.eventOn) {\n                    floatElement.innerText = element.innerText;\n                    objectOverwrite(floatElement.style, defaultTooltipStyles(event));\n                    objectOverwrite(floatElement.style, this_options.customTooltipStyles);\n                    document.body.appendChild(floatElement);\n                    e_option.eventOn = true;\n                    e_option.timer = setTimeout(function () {\n                        document.body.removeChild(floatElement);\n                        clearTimeout(e_option.timer);\n                        e_option.eventOn = false;\n                    }.bind(_this), this_options.tooltipDuration);\n                }\n                else {\n                    objectOverwrite(floatElement.style, defaultTooltipStyles(event));\n                    objectOverwrite(floatElement.style, this_options.customTooltipStyles);\n                    clearTimeout(e_option.timer);\n                    e_option.timer = setTimeout(function () {\n                        document.body.removeChild(floatElement);\n                        clearTimeout(e_option.timer);\n                        e_option.eventOn = false;\n                    }.bind(_this), this_options.tooltipDuration);\n                }\n            };\n        };\n        var addSetting = function (element) {\n            var e_option = element['ellipsisOption'];\n            var this_options = _this.getOptions();\n            if (e_option.showOption)\n                removeSetting(element);\n            if (this_options.defaultStyles) {\n                objectOverwrite(element.style, {\n                    textOverflow: 'ellipsis',\n                    overflow: 'hidden',\n                    whiteSpace: 'nowrap',\n                }, true);\n            }\n            if (this_options.mutationObserver)\n                _observer.observe(element, { childList: true, attributes: true });\n            e_option.showOption = Object.prototype.hasOwnProperty.call(element.dataset, 'showOption') ? element.dataset.showOption : (this_options.showOption || 'static');\n            var lengthDiff = checkEllipsis(element, this_options.useCloneNode);\n            if (lengthDiff) {\n                var count = 0;\n                switch (e_option.showOption) {\n                    case 'flow':\n                        e_option.listener = flowListener(element, lengthDiff);\n                        element.addEventListener('mouseover', e_option.listener);\n                        element.addEventListener('touchstart', e_option.listener, { passive: true });\n                        if ((count = this_options.flowCountPre || parseFloat(element.dataset.flowCountPre))) {\n                            flowAnitate(element, lengthDiff, count);\n                        }\n                        break;\n                    case 'flow-auto':\n                        count = parseFloat(element.dataset.flowCount) || this_options.flowAutoCount || Infinity;\n                        flowAnitate(element, lengthDiff, count);\n                        break;\n                    case 'tooltip':\n                        e_option.listener = tooltipListener(element);\n                        element.addEventListener('mouseover', e_option.listener);\n                        element.addEventListener('touchstart', e_option.listener, { passive: true });\n                        break;\n                    default:\n                        break;\n                }\n            }\n            else if ((element.dataset.tooltipShowAlways || this_options.tooltipShowAlways) && e_option.showOption === 'tooltip') {\n                e_option.listener = tooltipListener(element);\n                element.addEventListener('mouseover', e_option.listener);\n                element.addEventListener('touchstart', e_option.listener, { passive: true });\n            }\n        };\n        var removeSetting = function (element) {\n            var e_option = element['ellipsisOption'];\n            switch (e_option.showOption) {\n                case 'flow':\n                    element.removeEventListener('mouseover', e_option.listener);\n                    element.removeEventListener('touchstart', e_option.listener);\n                    break;\n                case 'flow-auto':\n                    break;\n                case 'tooltip':\n                    element.removeEventListener('mouseover', e_option.listener);\n                    element.removeEventListener('touchstart', e_option.listener);\n                    break;\n                default:\n                    break;\n            }\n            objectOverwrite(e_option, {\n                showOption: '',\n                eventOn: false,\n                timer: null,\n                listener: null,\n            });\n            objectOverwrite(element.style, e_option.originalElement.style);\n        };\n        this.setElements = function (selector) {\n            if (!selector)\n                return;\n            _this.destroy();\n            var elements = document.querySelectorAll(selector);\n            _elements.length = 0;\n            elements.forEach(function (element) {\n                if (element.childNodes.length === 1 && element.childNodes[0].nodeType === 3) {\n                    var ellipsisOption = {\n                        originalElement: element.cloneNode(true),\n                        showOption: '',\n                        eventOn: false,\n                        timer: null,\n                        listener: null,\n                    };\n                    element['ellipsisOption'] = ellipsisOption;\n                    _elements.push(element);\n                }\n            });\n            return _this;\n        };\n        this.getElements = function () { return objectOverwrite([], _elements, true); };\n        this.setOptions = function (options) {\n            var before = JSON.stringify(_options);\n            objectOverwrite(_options, options);\n            if (before !== JSON.stringify(_options)) {\n                _this.restart();\n            }\n            return _this;\n        };\n        this.getOptions = function () { return objectOverwrite({}, _options, true); };\n        this.getOption = function (key) { return _options[key]; };\n        this.getStatus = function () { return _isStart; };\n        this.start = function () {\n            var elements = _this.getElements();\n            if (elements.length) {\n                elements.forEach(addSetting.bind(_this));\n                _isStart = true;\n            }\n            return _this;\n        };\n        this.destroy = function () {\n            var elements = _this.getElements();\n            if (elements.length) {\n                _observer.disconnect();\n                elements.forEach(removeSetting.bind(_this));\n                _isStart = false;\n            }\n            return _this;\n        };\n        this.restart = function () {\n            var elements = _this.getElements();\n            if (_isStart && elements.length) {\n                _observer.disconnect();\n                elements.forEach(removeSetting.bind(_this));\n                elements.forEach(addSetting.bind(_this));\n            }\n            return _this;\n        };\n        this.setElements('[data-ellipsis]');\n        if (typeof options === 'string') {\n            this.setElements(options);\n        }\n        else if (typeof options === 'object') {\n            this.setOptions(options);\n            if (typeof selector === 'string') {\n                this.setElements(selector);\n            }\n        }\n        Object.freeze(this);\n    }\n    return AdvancedEllipsis;\n}());\nexport default AdvancedEllipsis;\n"]}