{"version":3,"file":"js/997-dd74f7e6d31367b997a0.js","mappings":"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","sources":["webpack://bare-core/./node_modules/@hotwired/stimulus-webpack-helpers/dist/stimulus-webpack-helpers.js","webpack://bare-core/./node_modules/@popperjs/core/lib/modifiers/applyStyles.js","webpack://bare-core/./node_modules/@popperjs/core/lib/popper.js","webpack://bare-core/./node_modules/@popperjs/core/lib/popper-lite.js","webpack://bare-core/./node_modules/lodash/_Symbol.js","webpack://bare-core/./node_modules/lodash/_baseGetTag.js","webpack://bare-core/./node_modules/lodash/_baseTrim.js","webpack://bare-core/./node_modules/lodash/_freeGlobal.js","webpack://bare-core/./node_modules/lodash/_getRawTag.js","webpack://bare-core/./node_modules/lodash/_objectToString.js","webpack://bare-core/./node_modules/lodash/_root.js","webpack://bare-core/./node_modules/lodash/_trimmedEndIndex.js","webpack://bare-core/./node_modules/lodash/debounce.js","webpack://bare-core/./node_modules/lodash/isObject.js","webpack://bare-core/./node_modules/lodash/isObjectLike.js","webpack://bare-core/./node_modules/lodash/isSymbol.js","webpack://bare-core/./node_modules/lodash/now.js","webpack://bare-core/./node_modules/lodash/toNumber.js","webpack://bare-core/./node_modules/preline/src/constants.ts?f5e6","webpack://bare-core/./node_modules/preline/src/constants.ts","webpack://bare-core/./node_modules/preline/src/index.ts?0e71","webpack://bare-core/./node_modules/preline/src/index.ts","webpack://bare-core/./node_modules/preline/src/plugins/accordion/index.ts?c15d","webpack://bare-core/./node_modules/preline/src/plugins/accordion/index.ts","webpack://bare-core/./node_modules/preline/src/plugins/base-plugin/index.ts?9d71","webpack://bare-core/./node_modules/preline/src/plugins/base-plugin/index.ts","webpack://bare-core/./node_modules/preline/src/plugins/carousel/index.ts?e91f","webpack://bare-core/./node_modules/preline/src/plugins/carousel/index.ts","webpack://bare-core/./node_modules/preline/src/plugins/collapse/index.ts?65c8","webpack://bare-core/./node_modules/preline/src/plugins/collapse/index.ts","webpack://bare-core/./node_modules/preline/src/plugins/combobox/index.ts?79c2","webpack://bare-core/./node_modules/preline/src/plugins/combobox/index.ts","webpack://bare-core/./node_modules/preline/src/plugins/copy-markup/index.ts?b49b","webpack://bare-core/./node_modules/preline/src/plugins/copy-markup/index.ts","webpack://bare-core/./node_modules/preline/src/plugins/datatable/index.ts?dced","webpack://bare-core/./node_modules/preline/src/plugins/datatable/index.ts","webpack://bare-core/./node_modules/preline/src/plugins/dropdown/index.ts?fa9f","webpack://bare-core/./node_modules/preline/src/plugins/dropdown/index.ts","webpack://bare-core/./node_modules/preline/src/plugins/file-upload/index.ts?5373","webpack://bare-core/./node_modules/preline/src/plugins/file-upload/index.ts","webpack://bare-core/./node_modules/preline/src/plugins/input-number/index.ts?b9ac","webpack://bare-core/./node_modules/preline/src/plugins/input-number/index.ts","webpack://bare-core/./node_modules/preline/src/plugins/overlay/index.ts?e8a8","webpack://bare-core/./node_modules/preline/src/plugins/overlay/index.ts","webpack://bare-core/./node_modules/preline/src/plugins/pin-input/index.ts?1d19","webpack://bare-core/./node_modules/preline/src/plugins/pin-input/index.ts","webpack://bare-core/./node_modules/preline/src/plugins/range-slider/index.ts?275e","webpack://bare-core/./node_modules/preline/src/plugins/range-slider/index.ts","webpack://bare-core/./node_modules/preline/src/plugins/remove-element/index.ts?e895","webpack://bare-core/./node_modules/preline/src/plugins/remove-element/index.ts","webpack://bare-core/./node_modules/preline/src/plugins/scrollspy/index.ts?55f7","webpack://bare-core/./node_modules/preline/src/plugins/scrollspy/index.ts","webpack://bare-core/./node_modules/preline/src/plugins/select/index.ts?4fb3","webpack://bare-core/./node_modules/preline/src/plugins/select/index.ts","webpack://bare-core/./node_modules/preline/src/plugins/stepper/index.ts?3300","webpack://bare-core/./node_modules/preline/src/plugins/stepper/index.ts","webpack://bare-core/./node_modules/preline/src/plugins/strong-password/index.ts?5d3b","webpack://bare-core/./node_modules/preline/src/plugins/strong-password/index.ts","webpack://bare-core/./node_modules/preline/src/plugins/tabs/index.ts?e4d5","webpack://bare-core/./node_modules/preline/src/plugins/tabs/index.ts","webpack://bare-core/./node_modules/preline/src/plugins/textarea-auto-height/index.ts?47a5","webpack://bare-core/./node_modules/preline/src/plugins/textarea-auto-height/index.ts","webpack://bare-core/./node_modules/preline/src/plugins/theme-switch/index.ts?0095","webpack://bare-core/./node_modules/preline/src/plugins/theme-switch/index.ts","webpack://bare-core/./node_modules/preline/src/plugins/toggle-count/index.ts?76a5","webpack://bare-core/./node_modules/preline/src/plugins/toggle-count/index.ts","webpack://bare-core/./node_modules/preline/src/plugins/toggle-password/index.ts?5a6e","webpack://bare-core/./node_modules/preline/src/plugins/toggle-password/index.ts","webpack://bare-core/./node_modules/preline/src/plugins/tooltip/index.ts?fe51","webpack://bare-core/./node_modules/preline/src/plugins/tooltip/index.ts","webpack://bare-core/./node_modules/preline/src/plugins/tree-view/index.ts?9e11","webpack://bare-core/./node_modules/preline/src/plugins/tree-view/index.ts","webpack://bare-core/./node_modules/preline/src/spa/index.ts?66c6","webpack://bare-core/./node_modules/preline/src/spa/index.ts","webpack://bare-core/./node_modules/preline/src/static/index.ts?9751","webpack://bare-core/./node_modules/preline/src/static/index.ts","webpack://bare-core/./node_modules/preline/src/utils/index.ts","webpack://bare-core/./node_modules/preline/src/utils/index.ts?e265"],"sourcesContent":["/*\nStimulus Webpack Helpers 1.0.0\nCopyright © 2021 Basecamp, LLC\n */\nfunction definitionsFromContext(context) {\n return context.keys()\n .map((key) => definitionForModuleWithContextAndKey(context, key))\n .filter((value) => value);\n}\nfunction definitionForModuleWithContextAndKey(context, key) {\n const identifier = identifierForContextKey(key);\n if (identifier) {\n return definitionForModuleAndIdentifier(context(key), identifier);\n }\n}\nfunction definitionForModuleAndIdentifier(module, identifier) {\n const controllerConstructor = module.default;\n if (typeof controllerConstructor == \"function\") {\n return { identifier, controllerConstructor };\n }\n}\nfunction identifierForContextKey(key) {\n const logicalName = (key.match(/^(?:\\.\\/)?(.+)(?:[_-]controller\\..+?)$/) || [])[1];\n if (logicalName) {\n return logicalName.replace(/_/g, \"-\").replace(/\\//g, \"--\");\n }\n}\n\nexport { definitionForModuleAndIdentifier, definitionForModuleWithContextAndKey, definitionsFromContext, identifierForContextKey };\n","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BREAKPOINTS = exports.COMBO_BOX_ACCESSIBILITY_KEY_SET = exports.SELECT_ACCESSIBILITY_KEY_SET = exports.TABS_ACCESSIBILITY_KEY_SET = exports.OVERLAY_ACCESSIBILITY_KEY_SET = exports.DROPDOWN_ACCESSIBILITY_KEY_SET = exports.POSITIONS = void 0;\nexports.POSITIONS = {\n auto: 'auto',\n 'auto-start': 'auto-start',\n 'auto-end': 'auto-end',\n top: 'top',\n 'top-left': 'top-start',\n 'top-right': 'top-end',\n bottom: 'bottom',\n 'bottom-left': 'bottom-start',\n 'bottom-right': 'bottom-end',\n right: 'right',\n 'right-start': 'right-start',\n 'right-end': 'right-end',\n left: 'left',\n 'left-start': 'left-start',\n 'left-end': 'left-end',\n};\nexports.DROPDOWN_ACCESSIBILITY_KEY_SET = [\n 'Escape',\n 'ArrowUp',\n 'ArrowDown',\n 'Home',\n 'End',\n 'Enter',\n];\nexports.OVERLAY_ACCESSIBILITY_KEY_SET = ['Escape', 'Tab'];\nexports.TABS_ACCESSIBILITY_KEY_SET = [\n 'ArrowUp',\n 'ArrowLeft',\n 'ArrowDown',\n 'ArrowRight',\n 'Home',\n 'End',\n];\nexports.SELECT_ACCESSIBILITY_KEY_SET = [\n 'ArrowUp',\n 'ArrowLeft',\n 'ArrowDown',\n 'ArrowRight',\n 'Home',\n 'End',\n 'Escape',\n 'Enter',\n 'Tab',\n];\nexports.COMBO_BOX_ACCESSIBILITY_KEY_SET = [\n 'ArrowUp',\n 'ArrowLeft',\n 'ArrowDown',\n 'ArrowRight',\n 'Home',\n 'End',\n 'Escape',\n 'Enter',\n];\nexports.BREAKPOINTS = {\n xs: 0,\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n '2xl': 1536,\n};\n","export const POSITIONS: any = {\n\tauto: 'auto',\n\t'auto-start': 'auto-start',\n\t'auto-end': 'auto-end',\n\ttop: 'top',\n\t'top-left': 'top-start',\n\t'top-right': 'top-end',\n\tbottom: 'bottom',\n\t'bottom-left': 'bottom-start',\n\t'bottom-right': 'bottom-end',\n\tright: 'right',\n\t'right-start': 'right-start',\n\t'right-end': 'right-end',\n\tleft: 'left',\n\t'left-start': 'left-start',\n\t'left-end': 'left-end',\n};\n\nexport const DROPDOWN_ACCESSIBILITY_KEY_SET = [\n\t'Escape',\n\t'ArrowUp',\n\t'ArrowDown',\n\t'Home',\n\t'End',\n\t'Enter',\n];\n\nexport const OVERLAY_ACCESSIBILITY_KEY_SET = ['Escape', 'Tab'];\n\nexport const TABS_ACCESSIBILITY_KEY_SET = [\n\t'ArrowUp',\n\t'ArrowLeft',\n\t'ArrowDown',\n\t'ArrowRight',\n\t'Home',\n\t'End',\n];\n\nexport const SELECT_ACCESSIBILITY_KEY_SET = [\n\t'ArrowUp',\n\t'ArrowLeft',\n\t'ArrowDown',\n\t'ArrowRight',\n\t'Home',\n\t'End',\n\t'Escape',\n\t'Enter',\n\t'Tab',\n];\n\nexport const COMBO_BOX_ACCESSIBILITY_KEY_SET = [\n\t'ArrowUp',\n\t'ArrowLeft',\n\t'ArrowDown',\n\t'ArrowRight',\n\t'Home',\n\t'End',\n\t'Escape',\n\t'Enter',\n];\n\nexport const BREAKPOINTS: any = {\n\txs: 0,\n\tsm: 640,\n\tmd: 768,\n\tlg: 1024,\n\txl: 1280,\n\t'2xl': 1536,\n};\n","\"use strict\";\n/*\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HSRangeSlider = exports.HSFileUpload = exports.HSDataTable = exports.HSStaticMethods = exports.HSTreeView = exports.HSTooltip = exports.HSTogglePassword = exports.HSToggleCount = exports.HSThemeSwitch = exports.HSTextareaAutoHeight = exports.HSTabs = exports.HSStrongPassword = exports.HSStepper = exports.HSSelect = exports.HSScrollspy = exports.HSRemoveElement = exports.HSPinInput = exports.HSOverlay = exports.HSInputNumber = exports.HSDropdown = exports.HSComboBox = exports.HSCollapse = exports.HSCarousel = exports.HSAccordion = exports.HSCopyMarkup = void 0;\nvar HSDataTableModule;\nvar HSFileUploadModule;\nvar HSRangeSliderModule;\nvar copy_markup_1 = require(\"./plugins/copy-markup\");\nObject.defineProperty(exports, \"HSCopyMarkup\", { enumerable: true, get: function () { return __importDefault(copy_markup_1).default; } });\nvar accordion_1 = require(\"./plugins/accordion\");\nObject.defineProperty(exports, \"HSAccordion\", { enumerable: true, get: function () { return __importDefault(accordion_1).default; } });\nvar carousel_1 = require(\"./plugins/carousel\");\nObject.defineProperty(exports, \"HSCarousel\", { enumerable: true, get: function () { return __importDefault(carousel_1).default; } });\nvar collapse_1 = require(\"./plugins/collapse\");\nObject.defineProperty(exports, \"HSCollapse\", { enumerable: true, get: function () { return __importDefault(collapse_1).default; } });\nvar combobox_1 = require(\"./plugins/combobox\");\nObject.defineProperty(exports, \"HSComboBox\", { enumerable: true, get: function () { return __importDefault(combobox_1).default; } });\nvar dropdown_1 = require(\"./plugins/dropdown\");\nObject.defineProperty(exports, \"HSDropdown\", { enumerable: true, get: function () { return __importDefault(dropdown_1).default; } });\nvar input_number_1 = require(\"./plugins/input-number\");\nObject.defineProperty(exports, \"HSInputNumber\", { enumerable: true, get: function () { return __importDefault(input_number_1).default; } });\nvar overlay_1 = require(\"./plugins/overlay\");\nObject.defineProperty(exports, \"HSOverlay\", { enumerable: true, get: function () { return __importDefault(overlay_1).default; } });\nvar pin_input_1 = require(\"./plugins/pin-input\");\nObject.defineProperty(exports, \"HSPinInput\", { enumerable: true, get: function () { return __importDefault(pin_input_1).default; } });\nvar remove_element_1 = require(\"./plugins/remove-element\");\nObject.defineProperty(exports, \"HSRemoveElement\", { enumerable: true, get: function () { return __importDefault(remove_element_1).default; } });\nvar scrollspy_1 = require(\"./plugins/scrollspy\");\nObject.defineProperty(exports, \"HSScrollspy\", { enumerable: true, get: function () { return __importDefault(scrollspy_1).default; } });\nvar select_1 = require(\"./plugins/select\");\nObject.defineProperty(exports, \"HSSelect\", { enumerable: true, get: function () { return __importDefault(select_1).default; } });\nvar stepper_1 = require(\"./plugins/stepper\");\nObject.defineProperty(exports, \"HSStepper\", { enumerable: true, get: function () { return __importDefault(stepper_1).default; } });\nvar strong_password_1 = require(\"./plugins/strong-password\");\nObject.defineProperty(exports, \"HSStrongPassword\", { enumerable: true, get: function () { return __importDefault(strong_password_1).default; } });\nvar tabs_1 = require(\"./plugins/tabs\");\nObject.defineProperty(exports, \"HSTabs\", { enumerable: true, get: function () { return __importDefault(tabs_1).default; } });\nvar textarea_auto_height_1 = require(\"./plugins/textarea-auto-height\");\nObject.defineProperty(exports, \"HSTextareaAutoHeight\", { enumerable: true, get: function () { return __importDefault(textarea_auto_height_1).default; } });\nvar theme_switch_1 = require(\"./plugins/theme-switch\");\nObject.defineProperty(exports, \"HSThemeSwitch\", { enumerable: true, get: function () { return __importDefault(theme_switch_1).default; } });\nvar toggle_count_1 = require(\"./plugins/toggle-count\");\nObject.defineProperty(exports, \"HSToggleCount\", { enumerable: true, get: function () { return __importDefault(toggle_count_1).default; } });\nvar toggle_password_1 = require(\"./plugins/toggle-password\");\nObject.defineProperty(exports, \"HSTogglePassword\", { enumerable: true, get: function () { return __importDefault(toggle_password_1).default; } });\nvar tooltip_1 = require(\"./plugins/tooltip\");\nObject.defineProperty(exports, \"HSTooltip\", { enumerable: true, get: function () { return __importDefault(tooltip_1).default; } });\nvar tree_view_1 = require(\"./plugins/tree-view\");\nObject.defineProperty(exports, \"HSTreeView\", { enumerable: true, get: function () { return __importDefault(tree_view_1).default; } });\nvar static_1 = require(\"./static\");\nObject.defineProperty(exports, \"HSStaticMethods\", { enumerable: true, get: function () { return __importDefault(static_1).default; } });\nif (typeof DataTable !== 'undefined' && typeof jQuery !== 'undefined')\n exports.HSDataTable = HSDataTableModule = require('./plugins/datatable').default;\nelse\n exports.HSDataTable = HSDataTableModule = null;\nif (typeof _ !== 'undefined' && typeof Dropzone !== 'undefined')\n exports.HSFileUpload = HSFileUploadModule = require('./plugins/file-upload').default;\nelse\n exports.HSFileUpload = HSFileUploadModule = null;\nif (typeof noUiSlider !== 'undefined')\n exports.HSRangeSlider = HSRangeSliderModule = require('./plugins/range-slider').default;\nelse\n exports.HSRangeSlider = HSRangeSliderModule = null;\n","/*\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\n\ndeclare var _: any;\ndeclare var DataTable: any;\ndeclare var Dropzone: any;\ndeclare var noUiSlider: any;\n\nlet HSDataTableModule;\nlet HSFileUploadModule;\nlet HSRangeSliderModule;\n\nexport { default as HSCopyMarkup } from './plugins/copy-markup';\nexport { default as HSAccordion } from './plugins/accordion';\nexport { default as HSCarousel } from './plugins/carousel';\nexport { default as HSCollapse } from './plugins/collapse';\nexport { default as HSComboBox } from './plugins/combobox';\nexport { default as HSDropdown } from './plugins/dropdown';\nexport { default as HSInputNumber } from './plugins/input-number';\nexport { default as HSOverlay } from './plugins/overlay';\nexport { default as HSPinInput } from './plugins/pin-input';\nexport { default as HSRemoveElement } from './plugins/remove-element';\nexport { default as HSScrollspy } from './plugins/scrollspy';\nexport { default as HSSelect } from './plugins/select';\nexport { default as HSStepper } from './plugins/stepper';\nexport { default as HSStrongPassword } from './plugins/strong-password';\nexport { default as HSTabs } from './plugins/tabs';\nexport { default as HSTextareaAutoHeight } from './plugins/textarea-auto-height';\nexport { default as HSThemeSwitch } from './plugins/theme-switch';\nexport { default as HSToggleCount } from './plugins/toggle-count';\nexport { default as HSTogglePassword } from './plugins/toggle-password';\nexport { default as HSTooltip } from './plugins/tooltip';\nexport { default as HSTreeView } from './plugins/tree-view';\nexport { default as HSStaticMethods } from './static';\n\nif (typeof DataTable !== 'undefined' && typeof jQuery !== 'undefined')\n\tHSDataTableModule = require('./plugins/datatable').default;\nelse HSDataTableModule = null;\nexport { HSDataTableModule as HSDataTable };\n\nif (typeof _ !== 'undefined' && typeof Dropzone !== 'undefined')\n\tHSFileUploadModule = require('./plugins/file-upload').default;\nelse HSFileUploadModule = null;\nexport { HSFileUploadModule as HSFileUpload };\n\nif (typeof noUiSlider !== 'undefined')\n\tHSRangeSliderModule = require('./plugins/range-slider').default;\nelse HSRangeSliderModule = null;\nexport { HSRangeSliderModule as HSRangeSlider };\n","\"use strict\";\n/*\n * HSAccordion\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../../utils\");\nvar base_plugin_1 = __importDefault(require(\"../base-plugin\"));\nvar HSAccordion = /** @class */ (function (_super) {\n __extends(HSAccordion, _super);\n function HSAccordion(el, options, events) {\n var _this = _super.call(this, el, options, events) || this;\n _this.toggle = _this.el.querySelector('.hs-accordion-toggle') || null;\n _this.content = _this.el.querySelector('.hs-accordion-content') || null;\n _this.update();\n if (_this.toggle && _this.content)\n _this.init();\n return _this;\n }\n HSAccordion.prototype.init = function () {\n var _this = this;\n this.createCollection(window.$hsAccordionCollection, this);\n this.toggle.addEventListener('click', function (evt) {\n evt.stopPropagation();\n if (_this.el.classList.contains('active')) {\n _this.hide();\n }\n else {\n _this.show();\n }\n });\n };\n // Public methods\n HSAccordion.prototype.show = function () {\n var _this = this;\n var _a;\n if (this.group &&\n !this.isAlwaysOpened &&\n this.group.querySelector(':scope > .hs-accordion.active') &&\n this.group.querySelector(':scope > .hs-accordion.active') !== this.el) {\n var currentlyOpened = window.$hsAccordionCollection.find(function (el) {\n return el.element.el ===\n _this.group.querySelector(':scope > .hs-accordion.active');\n });\n currentlyOpened.element.hide();\n }\n if (this.el.classList.contains('active'))\n return false;\n this.el.classList.add('active');\n if ((_a = this === null || this === void 0 ? void 0 : this.toggle) === null || _a === void 0 ? void 0 : _a.ariaExpanded)\n this.toggle.ariaExpanded = 'true';\n this.content.style.display = 'block';\n this.content.style.height = '0';\n setTimeout(function () {\n _this.content.style.height = \"\".concat(_this.content.scrollHeight, \"px\");\n });\n (0, utils_1.afterTransition)(this.content, function () {\n _this.content.style.display = 'block';\n _this.content.style.height = '';\n _this.fireEvent('open', _this.el);\n (0, utils_1.dispatch)('open.hs.accordion', _this.el, _this.el);\n });\n };\n HSAccordion.prototype.hide = function () {\n var _this = this;\n var _a;\n if (!this.el.classList.contains('active'))\n return false;\n this.el.classList.remove('active');\n if ((_a = this === null || this === void 0 ? void 0 : this.toggle) === null || _a === void 0 ? void 0 : _a.ariaExpanded)\n this.toggle.ariaExpanded = 'false';\n this.content.style.height = \"\".concat(this.content.scrollHeight, \"px\");\n setTimeout(function () {\n _this.content.style.height = '0';\n });\n (0, utils_1.afterTransition)(this.content, function () {\n _this.content.style.display = '';\n _this.content.style.height = '0';\n _this.fireEvent('close', _this.el);\n (0, utils_1.dispatch)('close.hs.accordion', _this.el, _this.el);\n });\n };\n HSAccordion.prototype.update = function () {\n var _this = this;\n this.group = this.el.closest('.hs-accordion-group') || null;\n if (!this.group)\n return false;\n this.isAlwaysOpened =\n this.group.hasAttribute('data-hs-accordion-always-open') || false;\n window.$hsAccordionCollection.map(function (el) {\n if (el.id === _this.el.id) {\n el.element.group = _this.group;\n el.element.isAlwaysOpened = _this.isAlwaysOpened;\n }\n return el;\n });\n };\n // Static methods\n HSAccordion.getInstance = function (target, isInstance) {\n var elInCollection = window.$hsAccordionCollection.find(function (el) {\n return el.element.el ===\n (typeof target === 'string' ? document.querySelector(target) : target);\n });\n return elInCollection\n ? isInstance\n ? elInCollection\n : elInCollection.element.el\n : null;\n };\n HSAccordion.show = function (target) {\n var elInCollection = window.$hsAccordionCollection.find(function (el) {\n return el.element.el ===\n (typeof target === 'string' ? document.querySelector(target) : target);\n });\n if (elInCollection &&\n elInCollection.element.content.style.display !== 'block')\n elInCollection.element.show();\n };\n HSAccordion.hide = function (target) {\n var elInCollection = window.$hsAccordionCollection.find(function (el) {\n return el.element.el ===\n (typeof target === 'string' ? document.querySelector(target) : target);\n });\n if (elInCollection &&\n elInCollection.element.content.style.display === 'block')\n elInCollection.element.hide();\n };\n HSAccordion.autoInit = function () {\n if (!window.$hsAccordionCollection)\n window.$hsAccordionCollection = [];\n document\n .querySelectorAll('.hs-accordion:not(.--prevent-on-load-init)')\n .forEach(function (el) {\n if (!window.$hsAccordionCollection.find(function (elC) { var _a; return ((_a = elC === null || elC === void 0 ? void 0 : elC.element) === null || _a === void 0 ? void 0 : _a.el) === el; }))\n new HSAccordion(el);\n });\n };\n HSAccordion.treeView = function () {\n var _this = this;\n if (!document.querySelectorAll('.hs-accordion-treeview-root').length)\n return false;\n this.selectable = [];\n document\n .querySelectorAll('.hs-accordion-treeview-root')\n .forEach(function (el) {\n var data = el === null || el === void 0 ? void 0 : el.getAttribute('data-hs-accordion-options');\n var options = data\n ? JSON.parse(data)\n : {};\n _this.selectable.push({\n el: el,\n options: __assign({}, options),\n });\n });\n if (this.selectable.length)\n this.selectable.forEach(function (item) {\n var el = item.el;\n el.querySelectorAll('.hs-accordion-selectable').forEach(function (_el) {\n _el.addEventListener('click', function (evt) {\n evt.stopPropagation();\n _this.toggleSelected(item, _el);\n });\n });\n });\n };\n HSAccordion.toggleSelected = function (root, item) {\n if (item.classList.contains('selected'))\n item.classList.remove('selected');\n else {\n root.el\n .querySelectorAll('.hs-accordion-selectable')\n .forEach(function (el) { return el.classList.remove('selected'); });\n item.classList.add('selected');\n }\n };\n // Backward compatibility\n HSAccordion.on = function (evt, target, cb) {\n var elInCollection = window.$hsAccordionCollection.find(function (el) {\n return el.element.el ===\n (typeof target === 'string' ? document.querySelector(target) : target);\n });\n if (elInCollection)\n elInCollection.element.events[evt] = cb;\n };\n return HSAccordion;\n}(base_plugin_1.default));\nwindow.addEventListener('load', function () {\n HSAccordion.autoInit();\n if (document.querySelectorAll('.hs-accordion-treeview-root').length)\n HSAccordion.treeView();\n // Uncomment for debug\n // console.log('Accordion collection:', window.$hsAccordionCollection);\n});\nif (typeof window !== 'undefined') {\n window.HSAccordion = HSAccordion;\n}\nexports.default = HSAccordion;\n","/*\n * HSAccordion\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\n\nimport { dispatch, afterTransition } from '../../utils';\n\nimport {\n\tIAccordionOptions,\n\tIAccordion,\n\tIAccordionTreeView,\n\tIAccordionTreeViewStaticOptions,\n} from '../accordion/interfaces';\n\nimport HSBasePlugin from '../base-plugin';\nimport { ICollectionItem } from '../../interfaces';\n\nclass HSAccordion\n\textends HSBasePlugin\n\timplements IAccordion\n{\n\tprivate readonly toggle: HTMLElement | null;\n\tpublic content: HTMLElement | null;\n\tprivate group: HTMLElement | null;\n\tprivate isAlwaysOpened: boolean;\n\n\tstatic selectable: IAccordionTreeView[];\n\n\tconstructor(el: HTMLElement, options?: IAccordionOptions, events?: {}) {\n\t\tsuper(el, options, events);\n\n\t\tthis.toggle = this.el.querySelector('.hs-accordion-toggle') || null;\n\t\tthis.content = this.el.querySelector('.hs-accordion-content') || null;\n\t\tthis.update();\n\n\t\tif (this.toggle && this.content) this.init();\n\t}\n\n\tprivate init() {\n\t\tthis.createCollection(window.$hsAccordionCollection, this);\n\n\t\tthis.toggle.addEventListener('click', (evt: Event) => {\n\t\t\tevt.stopPropagation();\n\n\t\t\tif (this.el.classList.contains('active')) {\n\t\t\t\tthis.hide();\n\t\t\t} else {\n\t\t\t\tthis.show();\n\t\t\t}\n\t\t});\n\t}\n\n\t// Public methods\n\tpublic show() {\n\t\tif (\n\t\t\tthis.group &&\n\t\t\t!this.isAlwaysOpened &&\n\t\t\tthis.group.querySelector(':scope > .hs-accordion.active') &&\n\t\t\tthis.group.querySelector(':scope > .hs-accordion.active') !== this.el\n\t\t) {\n\t\t\tconst currentlyOpened = window.$hsAccordionCollection.find(\n\t\t\t\t(el) =>\n\t\t\t\t\tel.element.el ===\n\t\t\t\t\tthis.group.querySelector(':scope > .hs-accordion.active'),\n\t\t\t);\n\n\t\t\tcurrentlyOpened.element.hide();\n\t\t}\n\n\t\tif (this.el.classList.contains('active')) return false;\n\n\t\tthis.el.classList.add('active');\n\t\tif (this?.toggle?.ariaExpanded) this.toggle.ariaExpanded = 'true';\n\n\t\tthis.content.style.display = 'block';\n\t\tthis.content.style.height = '0';\n\t\tsetTimeout(() => {\n\t\t\tthis.content.style.height = `${this.content.scrollHeight}px`;\n\t\t});\n\n\t\tafterTransition(this.content, () => {\n\t\t\tthis.content.style.display = 'block';\n\t\t\tthis.content.style.height = '';\n\n\t\t\tthis.fireEvent('open', this.el);\n\t\t\tdispatch('open.hs.accordion', this.el, this.el);\n\t\t});\n\t}\n\n\tpublic hide() {\n\t\tif (!this.el.classList.contains('active')) return false;\n\n\t\tthis.el.classList.remove('active');\n\t\tif (this?.toggle?.ariaExpanded) this.toggle.ariaExpanded = 'false';\n\n\t\tthis.content.style.height = `${this.content.scrollHeight}px`;\n\t\tsetTimeout(() => {\n\t\t\tthis.content.style.height = '0';\n\t\t});\n\n\t\tafterTransition(this.content, () => {\n\t\t\tthis.content.style.display = '';\n\t\t\tthis.content.style.height = '0';\n\n\t\t\tthis.fireEvent('close', this.el);\n\t\t\tdispatch('close.hs.accordion', this.el, this.el);\n\t\t});\n\t}\n\n\tpublic update() {\n\t\tthis.group = this.el.closest('.hs-accordion-group') || null;\n\n\t\tif (!this.group) return false;\n\n\t\tthis.isAlwaysOpened =\n\t\t\tthis.group.hasAttribute('data-hs-accordion-always-open') || false;\n\n\t\twindow.$hsAccordionCollection.map((el) => {\n\t\t\tif (el.id === this.el.id) {\n\t\t\t\tel.element.group = this.group;\n\t\t\t\tel.element.isAlwaysOpened = this.isAlwaysOpened;\n\t\t\t}\n\n\t\t\treturn el;\n\t\t});\n\t}\n\n\t// Static methods\n\tstatic getInstance(target: HTMLElement | string, isInstance?: boolean) {\n\t\tconst elInCollection = window.$hsAccordionCollection.find(\n\t\t\t(el) =>\n\t\t\t\tel.element.el ===\n\t\t\t\t(typeof target === 'string' ? document.querySelector(target) : target),\n\t\t);\n\n\t\treturn elInCollection\n\t\t\t? isInstance\n\t\t\t\t? elInCollection\n\t\t\t\t: elInCollection.element.el\n\t\t\t: null;\n\t}\n\n\tstatic show(target: HTMLElement) {\n\t\tconst elInCollection = window.$hsAccordionCollection.find(\n\t\t\t(el) =>\n\t\t\t\tel.element.el ===\n\t\t\t\t(typeof target === 'string' ? document.querySelector(target) : target),\n\t\t);\n\n\t\tif (\n\t\t\telInCollection &&\n\t\t\telInCollection.element.content.style.display !== 'block'\n\t\t)\n\t\t\telInCollection.element.show();\n\t}\n\n\tstatic hide(target: HTMLElement) {\n\t\tconst elInCollection = window.$hsAccordionCollection.find(\n\t\t\t(el) =>\n\t\t\t\tel.element.el ===\n\t\t\t\t(typeof target === 'string' ? document.querySelector(target) : target),\n\t\t);\n\n\t\tif (\n\t\t\telInCollection &&\n\t\t\telInCollection.element.content.style.display === 'block'\n\t\t)\n\t\t\telInCollection.element.hide();\n\t}\n\n\tstatic autoInit() {\n\t\tif (!window.$hsAccordionCollection) window.$hsAccordionCollection = [];\n\n\t\tdocument\n\t\t\t.querySelectorAll('.hs-accordion:not(.--prevent-on-load-init)')\n\t\t\t.forEach((el: HTMLElement) => {\n\t\t\t\tif (\n\t\t\t\t\t!window.$hsAccordionCollection.find(\n\t\t\t\t\t\t(elC) => (elC?.element?.el as HTMLElement) === el,\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t\tnew HSAccordion(el);\n\t\t\t});\n\t}\n\n\tstatic treeView() {\n\t\tif (!document.querySelectorAll('.hs-accordion-treeview-root').length)\n\t\t\treturn false;\n\n\t\tthis.selectable = [];\n\n\t\tdocument\n\t\t\t.querySelectorAll('.hs-accordion-treeview-root')\n\t\t\t.forEach((el: HTMLElement) => {\n\t\t\t\tconst data = el?.getAttribute('data-hs-accordion-options');\n\t\t\t\tconst options: IAccordionTreeViewStaticOptions = data\n\t\t\t\t\t? JSON.parse(data)\n\t\t\t\t\t: {};\n\n\t\t\t\tthis.selectable.push({\n\t\t\t\t\tel,\n\t\t\t\t\toptions: { ...options },\n\t\t\t\t});\n\t\t\t});\n\n\t\tif (this.selectable.length)\n\t\t\tthis.selectable.forEach((item) => {\n\t\t\t\tconst { el } = item;\n\n\t\t\t\tel.querySelectorAll('.hs-accordion-selectable').forEach(\n\t\t\t\t\t(_el: HTMLElement) => {\n\t\t\t\t\t\t_el.addEventListener('click', (evt: Event) => {\n\t\t\t\t\t\t\tevt.stopPropagation();\n\n\t\t\t\t\t\t\tthis.toggleSelected(item, _el);\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t});\n\t}\n\n\tstatic toggleSelected(root: IAccordionTreeView, item: HTMLElement) {\n\t\tif (item.classList.contains('selected')) item.classList.remove('selected');\n\t\telse {\n\t\t\troot.el\n\t\t\t\t.querySelectorAll('.hs-accordion-selectable')\n\t\t\t\t.forEach((el: HTMLElement) => el.classList.remove('selected'));\n\t\t\titem.classList.add('selected');\n\t\t}\n\t}\n\n\t// Backward compatibility\n\tstatic on(evt: string, target: HTMLElement, cb: Function) {\n\t\tconst elInCollection = window.$hsAccordionCollection.find(\n\t\t\t(el) =>\n\t\t\t\tel.element.el ===\n\t\t\t\t(typeof target === 'string' ? document.querySelector(target) : target),\n\t\t);\n\n\t\tif (elInCollection) elInCollection.element.events[evt] = cb;\n\t}\n}\n\ndeclare global {\n\tinterface Window {\n\t\tHSAccordion: Function;\n\t\t$hsAccordionCollection: ICollectionItem[];\n\t}\n}\n\nwindow.addEventListener('load', () => {\n\tHSAccordion.autoInit();\n\n\tif (document.querySelectorAll('.hs-accordion-treeview-root').length)\n\t\tHSAccordion.treeView();\n\n\t// Uncomment for debug\n\t// console.log('Accordion collection:', window.$hsAccordionCollection);\n});\n\nif (typeof window !== 'undefined') {\n\twindow.HSAccordion = HSAccordion;\n}\n\nexport default HSAccordion;\n","\"use strict\";\n/// \nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar HSBasePlugin = /** @class */ (function () {\n function HSBasePlugin(el, options, events) {\n this.el = el;\n this.options = options;\n this.events = events;\n this.el = el;\n this.options = options;\n this.events = {};\n }\n HSBasePlugin.prototype.createCollection = function (collection, element) {\n var _a;\n collection.push({\n id: ((_a = element === null || element === void 0 ? void 0 : element.el) === null || _a === void 0 ? void 0 : _a.id) || collection.length + 1,\n element: element,\n });\n };\n HSBasePlugin.prototype.fireEvent = function (evt, payload) {\n if (payload === void 0) { payload = null; }\n if (this.events.hasOwnProperty(evt))\n return this.events[evt](payload);\n };\n HSBasePlugin.prototype.on = function (evt, cb) {\n this.events[evt] = cb;\n };\n return HSBasePlugin;\n}());\nexports.default = HSBasePlugin;\n","/// \n\n/*\n * HSBasePlugin\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\n\nimport { IBasePlugin } from '../base-plugin/interfaces';\n\nexport default class HSBasePlugin\n\timplements IBasePlugin\n{\n\tconstructor(\n\t\tpublic el: E,\n\t\tpublic options: O,\n\t\tpublic events?: any,\n\t) {\n\t\tthis.el = el;\n\t\tthis.options = options;\n\t\tthis.events = {};\n\t}\n\n\tpublic createCollection(collection: any[], element: any) {\n\t\tcollection.push({\n\t\t\tid: element?.el?.id || collection.length + 1,\n\t\t\telement,\n\t\t});\n\t}\n\n\tpublic fireEvent(evt: string, payload: any = null) {\n\t\tif (this.events.hasOwnProperty(evt)) return this.events[evt](payload);\n\t}\n\n\tpublic on(evt: string, cb: Function) {\n\t\tthis.events[evt] = cb;\n\t}\n}\n","\"use strict\";\n/*\n * HSCarousel\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../../utils\");\nvar base_plugin_1 = __importDefault(require(\"../base-plugin\"));\nvar constants_1 = require(\"../../constants\");\nvar HSCarousel = /** @class */ (function (_super) {\n __extends(HSCarousel, _super);\n function HSCarousel(el, options) {\n var _a, _b, _c, _d, _e;\n var _this = _super.call(this, el, options) || this;\n var data = el.getAttribute('data-hs-carousel');\n var dataOptions = data ? JSON.parse(data) : {};\n var concatOptions = __assign(__assign({}, dataOptions), options);\n _this.currentIndex = concatOptions.currentIndex || 0;\n _this.loadingClasses = concatOptions.loadingClasses\n ? \"\".concat(concatOptions.loadingClasses).split(',')\n : null;\n _this.dotsItemClasses = concatOptions.dotsItemClasses\n ? concatOptions.dotsItemClasses\n : null;\n _this.isAutoHeight =\n typeof concatOptions.isAutoHeight !== 'undefined'\n ? concatOptions.isAutoHeight\n : false;\n _this.isAutoPlay =\n typeof concatOptions.isAutoPlay !== 'undefined'\n ? concatOptions.isAutoPlay\n : false;\n _this.isCentered =\n typeof concatOptions.isCentered !== 'undefined'\n ? concatOptions.isCentered\n : false;\n _this.isDraggable =\n typeof concatOptions.isDraggable !== 'undefined'\n ? concatOptions.isDraggable\n : false;\n _this.isInfiniteLoop =\n typeof concatOptions.isInfiniteLoop !== 'undefined'\n ? concatOptions.isInfiniteLoop\n : false;\n _this.isRTL =\n typeof concatOptions.isRTL !== 'undefined' ? concatOptions.isRTL : false;\n _this.isSnap =\n typeof concatOptions.isSnap !== 'undefined'\n ? concatOptions.isSnap\n : false;\n _this.hasSnapSpacers =\n typeof concatOptions.hasSnapSpacers !== 'undefined'\n ? concatOptions.hasSnapSpacers\n : true;\n _this.speed = concatOptions.speed || 4000;\n _this.updateDelay = concatOptions.updateDelay || 0;\n _this.slidesQty = concatOptions.slidesQty || 1;\n _this.loadingClassesRemove = ((_a = _this.loadingClasses) === null || _a === void 0 ? void 0 : _a[0])\n ? _this.loadingClasses[0].split(' ')\n : 'opacity-0';\n _this.loadingClassesAdd = ((_b = _this.loadingClasses) === null || _b === void 0 ? void 0 : _b[1])\n ? _this.loadingClasses[1].split(' ')\n : '';\n _this.afterLoadingClassesAdd = ((_c = _this.loadingClasses) === null || _c === void 0 ? void 0 : _c[2])\n ? _this.loadingClasses[2].split(' ')\n : '';\n _this.container = _this.el.querySelector('.hs-carousel') || null;\n _this.inner = _this.el.querySelector('.hs-carousel-body') || null;\n _this.slides = _this.el.querySelectorAll('.hs-carousel-slide') || [];\n _this.prev = _this.el.querySelector('.hs-carousel-prev') || null;\n _this.next = _this.el.querySelector('.hs-carousel-next') || null;\n _this.dots = _this.el.querySelector('.hs-carousel-pagination') || null;\n _this.info = _this.el.querySelector('.hs-carousel-info') || null;\n _this.infoTotal =\n ((_d = _this === null || _this === void 0 ? void 0 : _this.info) === null || _d === void 0 ? void 0 : _d.querySelector('.hs-carousel-info-total')) || null;\n _this.infoCurrent =\n ((_e = _this === null || _this === void 0 ? void 0 : _this.info) === null || _e === void 0 ? void 0 : _e.querySelector('.hs-carousel-info-current')) || null;\n _this.sliderWidth = _this.el.getBoundingClientRect().width;\n // Drag events' help variables\n _this.isDragging = false;\n _this.dragStartX = null;\n _this.initialTranslateX = null;\n // Touch events' help variables\n _this.touchX = {\n start: 0,\n end: 0,\n };\n // Resize events' help variables\n _this.resizeContainer = document.querySelector('body');\n _this.resizeContainerWidth = 0;\n _this.init();\n return _this;\n }\n HSCarousel.prototype.setIsSnap = function () {\n var _this = this;\n var containerRect = this.container.getBoundingClientRect();\n var containerCenter = containerRect.left + containerRect.width / 2;\n var closestElement = null;\n var closestElementIndex = null;\n var closestDistance = Infinity;\n Array.from(this.inner.children).forEach(function (child) {\n var childRect = child.getBoundingClientRect();\n var innerContainerRect = _this.inner.getBoundingClientRect();\n var childCenter = childRect.left + childRect.width / 2 - innerContainerRect.left;\n var distance = Math.abs(containerCenter - (innerContainerRect.left + childCenter));\n if (distance < closestDistance) {\n closestDistance = distance;\n closestElement = child;\n }\n });\n if (closestElement) {\n closestElementIndex = Array.from(this.slides).findIndex(function (el) { return el === closestElement; });\n }\n this.setIndex(closestElementIndex);\n if (this.dots)\n this.setCurrentDot();\n };\n HSCarousel.prototype.init = function () {\n var _this = this;\n this.createCollection(window.$hsCarouselCollection, this);\n if (this.inner) {\n this.calculateWidth();\n if (this.isDraggable && !this.isSnap)\n this.initDragHandling();\n }\n if (this.prev)\n this.prev.addEventListener('click', function () {\n _this.goToPrev();\n if (_this.isAutoPlay) {\n _this.resetTimer();\n _this.setTimer();\n }\n });\n if (this.next)\n this.next.addEventListener('click', function () {\n _this.goToNext();\n if (_this.isAutoPlay) {\n _this.resetTimer();\n _this.setTimer();\n }\n });\n if (this.dots)\n this.initDots();\n if (this.info)\n this.buildInfo();\n if (this.slides.length) {\n this.addCurrentClass();\n if (!this.isInfiniteLoop)\n this.addDisabledClass();\n if (this.isAutoPlay)\n this.autoPlay();\n }\n setTimeout(function () {\n var _a, _b;\n if (_this.isSnap)\n _this.setIsSnap();\n if (_this.loadingClassesRemove) {\n if (typeof _this.loadingClassesRemove === 'string')\n _this.inner.classList.remove(_this.loadingClassesRemove);\n else\n (_a = _this.inner.classList).remove.apply(_a, _this.loadingClassesRemove);\n }\n if (_this.loadingClassesAdd) {\n if (typeof _this.loadingClassesAdd === 'string')\n _this.inner.classList.add(_this.loadingClassesAdd);\n else\n (_b = _this.inner.classList).add.apply(_b, _this.loadingClassesAdd);\n }\n if (_this.inner && _this.afterLoadingClassesAdd) {\n setTimeout(function () {\n var _a;\n if (typeof _this.afterLoadingClassesAdd === 'string')\n _this.inner.classList.add(_this.afterLoadingClassesAdd);\n else\n (_a = _this.inner.classList).add.apply(_a, _this.afterLoadingClassesAdd);\n });\n }\n }, 400);\n if (this.isSnap) {\n this.container.addEventListener('scroll', function () {\n clearTimeout(_this.isScrolling);\n _this.isScrolling = setTimeout(function () {\n _this.setIsSnap();\n }, 100);\n });\n }\n this.el.classList.add('init');\n if (!this.isSnap) {\n this.el.addEventListener('touchstart', function (evt) {\n _this.touchX.start = evt.changedTouches[0].screenX;\n });\n this.el.addEventListener('touchend', function (evt) {\n _this.touchX.end = evt.changedTouches[0].screenX;\n _this.detectDirection();\n });\n }\n this.observeResize();\n };\n HSCarousel.prototype.initDragHandling = function () {\n var scrollableElement = this.inner;\n if (scrollableElement) {\n scrollableElement.addEventListener('mousedown', this.handleDragStart.bind(this));\n scrollableElement.addEventListener('touchstart', this.handleDragStart.bind(this), { passive: true });\n document.addEventListener('mousemove', this.handleDragMove.bind(this));\n document.addEventListener('touchmove', this.handleDragMove.bind(this), {\n passive: false,\n });\n document.addEventListener('mouseup', this.handleDragEnd.bind(this));\n document.addEventListener('touchend', this.handleDragEnd.bind(this));\n }\n };\n HSCarousel.prototype.getTranslateXValue = function () {\n var _a;\n var transformMatrix = window.getComputedStyle(this.inner).transform;\n if (transformMatrix !== 'none') {\n var matrixValues = (_a = transformMatrix\n .match(/matrix.*\\((.+)\\)/)) === null || _a === void 0 ? void 0 : _a[1].split(', ');\n if (matrixValues) {\n var translateX = parseFloat(matrixValues.length === 6 ? matrixValues[4] : matrixValues[12]);\n if (this.isRTL)\n translateX = -translateX;\n return isNaN(translateX) || translateX === 0 ? 0 : -translateX;\n }\n }\n return 0;\n };\n HSCarousel.prototype.removeClickEventWhileDragging = function (evt) {\n evt.preventDefault();\n };\n HSCarousel.prototype.handleDragStart = function (evt) {\n evt.preventDefault();\n this.isDragging = true;\n this.dragStartX = this.getEventX(evt);\n this.initialTranslateX = this.isRTL\n ? this.getTranslateXValue()\n : -this.getTranslateXValue();\n this.inner.classList.add('dragging');\n };\n HSCarousel.prototype.handleDragMove = function (evt) {\n var _this = this;\n if (!this.isDragging)\n return;\n this.inner.querySelectorAll('a:not(.prevented-click)').forEach(function (el) {\n el.classList.add('prevented-click');\n el.addEventListener('click', _this.removeClickEventWhileDragging);\n });\n var currentX = this.getEventX(evt);\n var deltaX = currentX - this.dragStartX;\n if (this.isRTL)\n deltaX = -deltaX;\n var newTranslateX = this.initialTranslateX + deltaX;\n var newTranslateXFunc = function () {\n var calcWidth = (_this.sliderWidth * _this.slides.length) / _this.getCurrentSlidesQty() -\n _this.sliderWidth;\n var containerWidth = _this.sliderWidth;\n var itemWidth = containerWidth / _this.getCurrentSlidesQty();\n var centeredOffset = (containerWidth - itemWidth) / 2;\n var limitStart = _this.isCentered ? centeredOffset : 0;\n if (_this.isCentered)\n calcWidth = calcWidth + centeredOffset;\n var limitEnd = -calcWidth;\n if (_this.isRTL) {\n if (newTranslateX < limitStart)\n return limitStart;\n if (newTranslateX > calcWidth)\n return limitEnd;\n else\n return -newTranslateX;\n }\n else {\n if (newTranslateX > limitStart)\n return limitStart;\n else if (newTranslateX < -calcWidth)\n return limitEnd;\n else\n return newTranslateX;\n }\n };\n this.setTranslate(newTranslateXFunc());\n };\n HSCarousel.prototype.handleDragEnd = function () {\n var _this = this;\n if (!this.isDragging)\n return;\n this.isDragging = false;\n var containerWidth = this.sliderWidth;\n var itemWidth = containerWidth / this.getCurrentSlidesQty();\n var currentTranslateX = this.getTranslateXValue();\n var closestIndex = Math.round(currentTranslateX / itemWidth);\n if (this.isRTL)\n closestIndex = Math.round(currentTranslateX / itemWidth);\n this.inner.classList.remove('dragging');\n setTimeout(function () {\n _this.calculateTransform(closestIndex);\n if (_this.dots)\n _this.setCurrentDot();\n _this.dragStartX = null;\n _this.initialTranslateX = null;\n _this.inner.querySelectorAll('a.prevented-click').forEach(function (el) {\n el.classList.remove('prevented-click');\n el.removeEventListener('click', _this.removeClickEventWhileDragging);\n });\n });\n };\n HSCarousel.prototype.getEventX = function (event) {\n return event instanceof MouseEvent\n ? event.clientX\n : event.touches[0].clientX;\n };\n HSCarousel.prototype.getCurrentSlidesQty = function () {\n var _this = this;\n if (typeof this.slidesQty === 'object') {\n var windowWidth_1 = document.body.clientWidth;\n var currentRes_1 = 0;\n Object.keys(this.slidesQty).forEach(function (key) {\n if (windowWidth_1 >=\n (typeof key + 1 === 'number'\n ? _this.slidesQty[key]\n : constants_1.BREAKPOINTS[key]))\n currentRes_1 = _this.slidesQty[key];\n });\n return currentRes_1;\n }\n else {\n return this.slidesQty;\n }\n };\n HSCarousel.prototype.buildSnapSpacers = function () {\n var existingBefore = this.inner.querySelector('.hs-snap-before');\n var existingAfter = this.inner.querySelector('.hs-snap-after');\n if (existingBefore)\n existingBefore.remove();\n if (existingAfter)\n existingAfter.remove();\n var containerWidth = this.sliderWidth;\n var itemWidth = containerWidth / this.getCurrentSlidesQty();\n var spacerWidth = containerWidth / 2 - itemWidth / 2;\n var before = (0, utils_1.htmlToElement)(\"
\"));\n var after = (0, utils_1.htmlToElement)(\"
\"));\n this.inner.prepend(before);\n this.inner.appendChild(after);\n };\n HSCarousel.prototype.initDots = function () {\n if (this.el.querySelectorAll('.hs-carousel-pagination-item').length)\n this.setDots();\n else\n this.buildDots();\n if (this.dots)\n this.setCurrentDot();\n };\n HSCarousel.prototype.buildDots = function () {\n this.dots.innerHTML = '';\n var slidesQty = !this.isCentered && this.slidesQty\n ? this.slides.length - (this.getCurrentSlidesQty() - 1)\n : this.slides.length;\n for (var i = 0; i < slidesQty; i++) {\n var singleDot = this.buildSingleDot(i);\n this.dots.append(singleDot);\n }\n };\n HSCarousel.prototype.setDots = function () {\n var _this = this;\n this.dotsItems = this.dots.querySelectorAll('.hs-carousel-pagination-item');\n this.dotsItems.forEach(function (dot, ind) {\n var targetIndex = dot.getAttribute('data-carousel-pagination-item-target');\n _this.singleDotEvents(dot, targetIndex ? +targetIndex : ind);\n });\n };\n HSCarousel.prototype.goToCurrentDot = function () {\n var container = this.dots;\n var containerRect = container.getBoundingClientRect();\n var containerScrollLeft = container.scrollLeft;\n var containerScrollTop = container.scrollTop;\n var containerWidth = container.clientWidth;\n var containerHeight = container.clientHeight;\n var item = this.dotsItems[this.currentIndex];\n var itemRect = item.getBoundingClientRect();\n var itemLeft = itemRect.left - containerRect.left + containerScrollLeft;\n var itemRight = itemLeft + item.clientWidth;\n var itemTop = itemRect.top - containerRect.top + containerScrollTop;\n var itemBottom = itemTop + item.clientHeight;\n var scrollLeft = containerScrollLeft;\n var scrollTop = containerScrollTop;\n if (itemLeft < containerScrollLeft ||\n itemRight > containerScrollLeft + containerWidth) {\n scrollLeft = itemRight - containerWidth;\n }\n if (itemTop < containerScrollTop ||\n itemBottom > containerScrollTop + containerHeight) {\n scrollTop = itemBottom - containerHeight;\n }\n container.scrollTo({\n left: scrollLeft,\n top: scrollTop,\n behavior: 'smooth',\n });\n };\n HSCarousel.prototype.buildInfo = function () {\n if (this.infoTotal)\n this.setInfoTotal();\n if (this.infoCurrent)\n this.setInfoCurrent();\n };\n HSCarousel.prototype.setInfoTotal = function () {\n this.infoTotal.innerText = \"\".concat(this.slides.length);\n };\n HSCarousel.prototype.setInfoCurrent = function () {\n this.infoCurrent.innerText = \"\".concat(this.currentIndex + 1);\n };\n HSCarousel.prototype.buildSingleDot = function (ind) {\n var singleDot = (0, utils_1.htmlToElement)('');\n if (this.dotsItemClasses)\n (0, utils_1.classToClassList)(this.dotsItemClasses, singleDot);\n this.singleDotEvents(singleDot, ind);\n return singleDot;\n };\n HSCarousel.prototype.singleDotEvents = function (dot, ind) {\n var _this = this;\n dot.addEventListener('click', function () {\n _this.goTo(ind);\n if (_this.isAutoPlay) {\n _this.resetTimer();\n _this.setTimer();\n }\n });\n };\n HSCarousel.prototype.observeResize = function () {\n var _this = this;\n var resizeObserver = new ResizeObserver((0, utils_1.debounce)(function (entries) {\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var entry = entries_1[_i];\n var newWidth = entry.contentRect.width;\n if (newWidth !== _this.resizeContainerWidth) {\n _this.recalculateWidth();\n if (_this.dots)\n _this.initDots();\n _this.addCurrentClass();\n _this.resizeContainerWidth = newWidth;\n }\n }\n }, this.updateDelay));\n resizeObserver.observe(this.resizeContainer);\n };\n HSCarousel.prototype.calculateWidth = function () {\n var _this = this;\n if (!this.isSnap)\n this.inner.style.width = \"\".concat((this.sliderWidth * this.slides.length) / this.getCurrentSlidesQty(), \"px\");\n this.slides.forEach(function (el) {\n el.style.width = \"\".concat(_this.sliderWidth / _this.getCurrentSlidesQty(), \"px\");\n });\n this.calculateTransform();\n };\n HSCarousel.prototype.addCurrentClass = function () {\n var _this = this;\n if (this.isSnap) {\n var itemsQty = Math.floor(this.getCurrentSlidesQty() / 2);\n for (var i = 0; i < this.slides.length; i++) {\n var slide = this.slides[i];\n if (i <= this.currentIndex + itemsQty &&\n i >= this.currentIndex - itemsQty)\n slide.classList.add('active');\n else\n slide.classList.remove('active');\n }\n }\n else {\n var maxIndex_1 = this.isCentered\n ? this.currentIndex +\n this.getCurrentSlidesQty() +\n (this.getCurrentSlidesQty() - 1)\n : this.currentIndex + this.getCurrentSlidesQty();\n this.slides.forEach(function (el, i) {\n if (i >= _this.currentIndex && i < maxIndex_1) {\n el.classList.add('active');\n }\n else {\n el.classList.remove('active');\n }\n });\n }\n };\n HSCarousel.prototype.setCurrentDot = function () {\n var _this = this;\n var toggleDotActive = function (el, i) {\n var statement = false;\n var itemsQty = Math.floor(_this.getCurrentSlidesQty() / 2);\n if (_this.isSnap && !_this.hasSnapSpacers) {\n statement =\n i ===\n (_this.getCurrentSlidesQty() % 2 === 0\n ? _this.currentIndex - itemsQty + 1\n : _this.currentIndex - itemsQty);\n }\n else\n statement = i === _this.currentIndex;\n if (statement)\n el.classList.add('active');\n else\n el.classList.remove('active');\n };\n if (this.dotsItems)\n this.dotsItems.forEach(function (el, i) { return toggleDotActive(el, i); });\n else\n this.dots\n .querySelectorAll(':scope > *')\n .forEach(function (el, i) { return toggleDotActive(el, i); });\n };\n HSCarousel.prototype.setElementToDisabled = function (el) {\n el.classList.add('disabled');\n if (el.tagName === 'BUTTON' || el.tagName === 'INPUT')\n el.setAttribute('disabled', 'disabled');\n };\n HSCarousel.prototype.unsetElementToDisabled = function (el) {\n el.classList.remove('disabled');\n if (el.tagName === 'BUTTON' || el.tagName === 'INPUT')\n el.removeAttribute('disabled');\n };\n HSCarousel.prototype.addDisabledClass = function () {\n if (!this.prev || !this.next)\n return false;\n var gapValue = getComputedStyle(this.inner).getPropertyValue('gap');\n var itemsQty = Math.floor(this.getCurrentSlidesQty() / 2);\n var currentIndex = 0;\n var maxIndex = 0;\n var statementPrev = false;\n var statementNext = false;\n if (this.isSnap) {\n currentIndex = this.currentIndex;\n maxIndex = this.hasSnapSpacers\n ? this.slides.length - 1\n : this.slides.length - itemsQty - 1;\n statementPrev = this.hasSnapSpacers\n ? currentIndex === 0\n : this.getCurrentSlidesQty() % 2 === 0\n ? currentIndex - itemsQty < 0\n : currentIndex - itemsQty === 0;\n statementNext =\n currentIndex >= maxIndex &&\n this.container.scrollLeft +\n this.container.clientWidth +\n (parseFloat(gapValue) || 0) >=\n this.container.scrollWidth;\n }\n else {\n currentIndex = this.currentIndex;\n maxIndex = this.isCentered\n ? this.slides.length -\n this.getCurrentSlidesQty() +\n (this.getCurrentSlidesQty() - 1)\n : this.slides.length - this.getCurrentSlidesQty();\n statementPrev = currentIndex === 0;\n statementNext = currentIndex >= maxIndex;\n }\n if (statementPrev) {\n this.unsetElementToDisabled(this.next);\n this.setElementToDisabled(this.prev);\n }\n else if (statementNext) {\n this.unsetElementToDisabled(this.prev);\n this.setElementToDisabled(this.next);\n }\n else {\n this.unsetElementToDisabled(this.prev);\n this.unsetElementToDisabled(this.next);\n }\n };\n HSCarousel.prototype.autoPlay = function () {\n this.setTimer();\n };\n HSCarousel.prototype.setTimer = function () {\n var _this = this;\n this.timer = setInterval(function () {\n if (_this.currentIndex === _this.slides.length - 1)\n _this.goTo(0);\n else\n _this.goToNext();\n }, this.speed);\n };\n HSCarousel.prototype.resetTimer = function () {\n clearInterval(this.timer);\n };\n HSCarousel.prototype.detectDirection = function () {\n var _a = this.touchX, start = _a.start, end = _a.end;\n if (end < start)\n this.goToNext();\n if (end > start)\n this.goToPrev();\n };\n // Public methods\n HSCarousel.prototype.recalculateWidth = function () {\n this.sliderWidth = this.inner.parentElement.getBoundingClientRect().width;\n this.calculateWidth();\n if (this.sliderWidth !==\n this.inner.parentElement.getBoundingClientRect().width)\n this.recalculateWidth();\n };\n HSCarousel.prototype.calculateTransform = function (currentIdx) {\n if (currentIdx !== undefined)\n this.currentIndex = currentIdx;\n if (this.currentIndex > this.slides.length - this.getCurrentSlidesQty() &&\n !this.isCentered)\n this.currentIndex = this.slides.length - this.getCurrentSlidesQty();\n var containerWidth = this.sliderWidth;\n var itemWidth = containerWidth / this.getCurrentSlidesQty();\n var translateX = this.currentIndex * itemWidth;\n // TODO:: need to test auto scrolling to the end if last on resize\n if (this.isSnap && !this.isCentered) {\n if (this.container.scrollLeft < containerWidth &&\n this.container.scrollLeft + itemWidth / 2 > containerWidth)\n this.container.scrollLeft = this.container.scrollWidth;\n }\n if (this.isCentered && !this.isSnap) {\n var centeredOffset = (containerWidth - itemWidth) / 2;\n if (this.currentIndex === 0)\n translateX = -centeredOffset;\n else if (this.currentIndex >=\n this.slides.length -\n this.getCurrentSlidesQty() +\n (this.getCurrentSlidesQty() - 1)) {\n var totalSlideWidth = this.slides.length * itemWidth;\n translateX = totalSlideWidth - containerWidth + centeredOffset;\n }\n else\n translateX = this.currentIndex * itemWidth - centeredOffset;\n }\n if (!this.isSnap)\n this.inner.style.transform = this.isRTL\n ? \"translate(\".concat(translateX, \"px, 0px)\")\n : \"translate(\".concat(-translateX, \"px, 0px)\");\n if (this.isAutoHeight)\n this.inner.style.height = \"\".concat(this.slides[this.currentIndex].clientHeight, \"px\");\n if (this.dotsItems)\n this.goToCurrentDot();\n this.addCurrentClass();\n if (!this.isInfiniteLoop)\n this.addDisabledClass();\n if (this.isSnap && this.hasSnapSpacers)\n this.buildSnapSpacers();\n if (this.infoCurrent)\n this.setInfoCurrent();\n };\n HSCarousel.prototype.setTranslate = function (val) {\n this.inner.style.transform = this.isRTL\n ? \"translate(\".concat(-val, \"px, 0px)\")\n : \"translate(\".concat(val, \"px, 0px)\");\n };\n HSCarousel.prototype.goToPrev = function () {\n if (this.currentIndex > 0) {\n this.currentIndex--;\n }\n else {\n this.currentIndex = this.slides.length - this.getCurrentSlidesQty();\n }\n if (this.isSnap) {\n var itemWidth = this.sliderWidth / this.getCurrentSlidesQty();\n this.container.scrollBy({\n left: Math.max(-this.container.scrollLeft, -itemWidth),\n behavior: 'smooth',\n });\n this.addCurrentClass();\n if (!this.isInfiniteLoop)\n this.addDisabledClass();\n }\n else\n this.calculateTransform();\n if (this.dots)\n this.setCurrentDot();\n };\n HSCarousel.prototype.goToNext = function () {\n var statement = this.isCentered\n ? this.slides.length -\n this.getCurrentSlidesQty() +\n (this.getCurrentSlidesQty() - 1)\n : this.slides.length - this.getCurrentSlidesQty();\n if (this.currentIndex < statement) {\n this.currentIndex++;\n }\n else {\n this.currentIndex = 0;\n }\n if (this.isSnap) {\n var itemWidth = this.sliderWidth / this.getCurrentSlidesQty();\n var maxScrollLeft = this.container.scrollWidth - this.container.clientWidth;\n this.container.scrollBy({\n left: Math.min(itemWidth, maxScrollLeft - this.container.scrollLeft),\n behavior: 'smooth',\n });\n this.addCurrentClass();\n if (!this.isInfiniteLoop)\n this.addDisabledClass();\n }\n else\n this.calculateTransform();\n if (this.dots)\n this.setCurrentDot();\n };\n HSCarousel.prototype.goTo = function (i) {\n var currentIndex = this.currentIndex;\n this.currentIndex = i;\n if (this.isSnap) {\n var itemWidth = this.sliderWidth / this.getCurrentSlidesQty();\n var index = currentIndex > this.currentIndex\n ? currentIndex - this.currentIndex\n : this.currentIndex - currentIndex;\n var width = currentIndex > this.currentIndex\n ? -(itemWidth * index)\n : itemWidth * index;\n this.container.scrollBy({\n left: width,\n behavior: 'smooth',\n });\n this.addCurrentClass();\n if (!this.isInfiniteLoop)\n this.addDisabledClass();\n }\n else\n this.calculateTransform();\n if (this.dots)\n this.setCurrentDot();\n };\n HSCarousel.prototype.setIndex = function (i) {\n this.currentIndex = i;\n this.addCurrentClass();\n if (!this.isInfiniteLoop)\n this.addDisabledClass();\n };\n // Static methods\n HSCarousel.getInstance = function (target, isInstance) {\n var elInCollection = window.$hsCarouselCollection.find(function (el) {\n return el.element.el ===\n (typeof target === 'string' ? document.querySelector(target) : target);\n });\n return elInCollection\n ? isInstance\n ? elInCollection\n : elInCollection.element\n : null;\n };\n HSCarousel.autoInit = function () {\n if (!window.$hsCarouselCollection)\n window.$hsCarouselCollection = [];\n document\n .querySelectorAll('[data-hs-carousel]:not(.--prevent-on-load-init)')\n .forEach(function (el) {\n if (!window.$hsCarouselCollection.find(function (elC) { var _a; return ((_a = elC === null || elC === void 0 ? void 0 : elC.element) === null || _a === void 0 ? void 0 : _a.el) === el; }))\n new HSCarousel(el);\n });\n };\n return HSCarousel;\n}(base_plugin_1.default));\nwindow.addEventListener('load', function () {\n HSCarousel.autoInit();\n // Uncomment for debug\n // console.log('Carousel collection:', window.$hsCarouselCollection);\n});\nif (typeof window !== 'undefined') {\n window.HSCarousel = HSCarousel;\n}\nexports.default = HSCarousel;\n","/*\n * HSCarousel\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\n\nimport { classToClassList, debounce, htmlToElement } from '../../utils';\n\nimport { ICarousel, ICarouselOptions } from './interfaces';\nimport { TCarouselOptionsSlidesQty } from './types';\n\nimport HSBasePlugin from '../base-plugin';\nimport { ICollectionItem } from '../../interfaces';\nimport { BREAKPOINTS } from '../../constants';\n\nclass HSCarousel extends HSBasePlugin implements ICarousel {\n\tprivate currentIndex: number;\n\tprivate readonly loadingClasses: string | string[];\n\tprivate readonly dotsItemClasses: string;\n\tprivate readonly isAutoHeight: boolean;\n\tprivate readonly isAutoPlay: boolean;\n\tprivate readonly isCentered: boolean;\n\tprivate readonly isDraggable: boolean;\n\tprivate readonly isInfiniteLoop: boolean;\n\tprivate readonly isRTL: boolean;\n\tprivate readonly isSnap: boolean;\n\tprivate readonly hasSnapSpacers: boolean;\n\tprivate readonly slidesQty: TCarouselOptionsSlidesQty | number;\n\tprivate readonly speed: number;\n\tprivate readonly updateDelay: number;\n\n\tprivate readonly loadingClassesRemove: string | string[];\n\tprivate readonly loadingClassesAdd: string | string[];\n\tprivate readonly afterLoadingClassesAdd: string | string[];\n\n\tprivate readonly container: HTMLElement | null;\n\tprivate readonly inner: HTMLElement | null;\n\tprivate readonly slides: NodeListOf | undefined[];\n\tprivate readonly prev: HTMLElement | null;\n\tprivate readonly next: HTMLElement | null;\n\tprivate readonly dots: HTMLElement | null;\n\tprivate dotsItems: NodeListOf | undefined[] | null;\n\tprivate readonly info: HTMLElement | null;\n\tprivate readonly infoTotal: HTMLElement | null;\n\tprivate readonly infoCurrent: HTMLElement | null;\n\n\tprivate sliderWidth: number;\n\tprivate timer: any;\n\n\t// Drag events' help variables\n\tprivate isScrolling: ReturnType;\n\tprivate isDragging: boolean;\n\tprivate dragStartX: number | null;\n\tprivate initialTranslateX: number | null;\n\n\t// Touch events' help variables\n\tprivate readonly touchX: {\n\t\tstart: number;\n\t\tend: number;\n\t};\n\n\t// Resize events' help variables\n\tprivate resizeContainer: HTMLElement;\n\tpublic resizeContainerWidth: number;\n\n\tconstructor(el: HTMLElement, options?: ICarouselOptions) {\n\t\tsuper(el, options);\n\n\t\tconst data = el.getAttribute('data-hs-carousel');\n\t\tconst dataOptions: ICarouselOptions = data ? JSON.parse(data) : {};\n\t\tconst concatOptions = {\n\t\t\t...dataOptions,\n\t\t\t...options,\n\t\t};\n\n\t\tthis.currentIndex = concatOptions.currentIndex || 0;\n\t\tthis.loadingClasses = concatOptions.loadingClasses\n\t\t\t? `${concatOptions.loadingClasses}`.split(',')\n\t\t\t: null;\n\t\tthis.dotsItemClasses = concatOptions.dotsItemClasses\n\t\t\t? concatOptions.dotsItemClasses\n\t\t\t: null;\n\t\tthis.isAutoHeight =\n\t\t\ttypeof concatOptions.isAutoHeight !== 'undefined'\n\t\t\t\t? concatOptions.isAutoHeight\n\t\t\t\t: false;\n\t\tthis.isAutoPlay =\n\t\t\ttypeof concatOptions.isAutoPlay !== 'undefined'\n\t\t\t\t? concatOptions.isAutoPlay\n\t\t\t\t: false;\n\t\tthis.isCentered =\n\t\t\ttypeof concatOptions.isCentered !== 'undefined'\n\t\t\t\t? concatOptions.isCentered\n\t\t\t\t: false;\n\t\tthis.isDraggable =\n\t\t\ttypeof concatOptions.isDraggable !== 'undefined'\n\t\t\t\t? concatOptions.isDraggable\n\t\t\t\t: false;\n\t\tthis.isInfiniteLoop =\n\t\t\ttypeof concatOptions.isInfiniteLoop !== 'undefined'\n\t\t\t\t? concatOptions.isInfiniteLoop\n\t\t\t\t: false;\n\t\tthis.isRTL =\n\t\t\ttypeof concatOptions.isRTL !== 'undefined' ? concatOptions.isRTL : false;\n\t\tthis.isSnap =\n\t\t\ttypeof concatOptions.isSnap !== 'undefined'\n\t\t\t\t? concatOptions.isSnap\n\t\t\t\t: false;\n\t\tthis.hasSnapSpacers =\n\t\t\ttypeof concatOptions.hasSnapSpacers !== 'undefined'\n\t\t\t\t? concatOptions.hasSnapSpacers\n\t\t\t\t: true;\n\t\tthis.speed = concatOptions.speed || 4000;\n\t\tthis.updateDelay = concatOptions.updateDelay || 0;\n\t\tthis.slidesQty = concatOptions.slidesQty || 1;\n\n\t\tthis.loadingClassesRemove = this.loadingClasses?.[0]\n\t\t\t? this.loadingClasses[0].split(' ')\n\t\t\t: 'opacity-0';\n\t\tthis.loadingClassesAdd = this.loadingClasses?.[1]\n\t\t\t? this.loadingClasses[1].split(' ')\n\t\t\t: '';\n\t\tthis.afterLoadingClassesAdd = this.loadingClasses?.[2]\n\t\t\t? this.loadingClasses[2].split(' ')\n\t\t\t: '';\n\n\t\tthis.container = this.el.querySelector('.hs-carousel') || null;\n\t\tthis.inner = this.el.querySelector('.hs-carousel-body') || null;\n\t\tthis.slides = this.el.querySelectorAll('.hs-carousel-slide') || [];\n\t\tthis.prev = this.el.querySelector('.hs-carousel-prev') || null;\n\t\tthis.next = this.el.querySelector('.hs-carousel-next') || null;\n\t\tthis.dots = this.el.querySelector('.hs-carousel-pagination') || null;\n\t\tthis.info = this.el.querySelector('.hs-carousel-info') || null;\n\t\tthis.infoTotal =\n\t\t\tthis?.info?.querySelector('.hs-carousel-info-total') || null;\n\t\tthis.infoCurrent =\n\t\t\tthis?.info?.querySelector('.hs-carousel-info-current') || null;\n\n\t\tthis.sliderWidth = this.el.getBoundingClientRect().width;\n\n\t\t// Drag events' help variables\n\t\tthis.isDragging = false;\n\t\tthis.dragStartX = null;\n\t\tthis.initialTranslateX = null;\n\n\t\t// Touch events' help variables\n\t\tthis.touchX = {\n\t\t\tstart: 0,\n\t\t\tend: 0,\n\t\t};\n\n\t\t// Resize events' help variables\n\t\tthis.resizeContainer = document.querySelector('body');\n\t\tthis.resizeContainerWidth = 0;\n\n\t\tthis.init();\n\t}\n\n\tprivate setIsSnap() {\n\t\tconst containerRect = this.container.getBoundingClientRect();\n\t\tconst containerCenter = containerRect.left + containerRect.width / 2;\n\n\t\tlet closestElement: HTMLElement | null = null;\n\t\tlet closestElementIndex: number | null = null;\n\t\tlet closestDistance = Infinity;\n\n\t\tArray.from(this.inner.children).forEach((child: HTMLElement) => {\n\t\t\tconst childRect = child.getBoundingClientRect();\n\t\t\tconst innerContainerRect = this.inner.getBoundingClientRect();\n\t\t\tconst childCenter =\n\t\t\t\tchildRect.left + childRect.width / 2 - innerContainerRect.left;\n\t\t\tconst distance = Math.abs(\n\t\t\t\tcontainerCenter - (innerContainerRect.left + childCenter),\n\t\t\t);\n\n\t\t\tif (distance < closestDistance) {\n\t\t\t\tclosestDistance = distance;\n\t\t\t\tclosestElement = child;\n\t\t\t}\n\t\t});\n\n\t\tif (closestElement) {\n\t\t\tclosestElementIndex = Array.from(this.slides).findIndex(\n\t\t\t\t(el) => el === closestElement,\n\t\t\t);\n\t\t}\n\n\t\tthis.setIndex(closestElementIndex);\n\n\t\tif (this.dots) this.setCurrentDot();\n\t}\n\n\tprivate init() {\n\t\tthis.createCollection(window.$hsCarouselCollection, this);\n\n\t\tif (this.inner) {\n\t\t\tthis.calculateWidth();\n\n\t\t\tif (this.isDraggable && !this.isSnap) this.initDragHandling();\n\t\t}\n\t\tif (this.prev)\n\t\t\tthis.prev.addEventListener('click', () => {\n\t\t\t\tthis.goToPrev();\n\t\t\t\tif (this.isAutoPlay) {\n\t\t\t\t\tthis.resetTimer();\n\t\t\t\t\tthis.setTimer();\n\t\t\t\t}\n\t\t\t});\n\t\tif (this.next)\n\t\t\tthis.next.addEventListener('click', () => {\n\t\t\t\tthis.goToNext();\n\t\t\t\tif (this.isAutoPlay) {\n\t\t\t\t\tthis.resetTimer();\n\t\t\t\t\tthis.setTimer();\n\t\t\t\t}\n\t\t\t});\n\t\tif (this.dots) this.initDots();\n\t\tif (this.info) this.buildInfo();\n\t\tif (this.slides.length) {\n\t\t\tthis.addCurrentClass();\n\t\t\tif (!this.isInfiniteLoop) this.addDisabledClass();\n\t\t\tif (this.isAutoPlay) this.autoPlay();\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tif (this.isSnap) this.setIsSnap();\n\n\t\t\tif (this.loadingClassesRemove) {\n\t\t\t\tif (typeof this.loadingClassesRemove === 'string')\n\t\t\t\t\tthis.inner.classList.remove(this.loadingClassesRemove);\n\t\t\t\telse this.inner.classList.remove(...this.loadingClassesRemove);\n\t\t\t}\n\t\t\tif (this.loadingClassesAdd) {\n\t\t\t\tif (typeof this.loadingClassesAdd === 'string')\n\t\t\t\t\tthis.inner.classList.add(this.loadingClassesAdd);\n\t\t\t\telse this.inner.classList.add(...this.loadingClassesAdd);\n\t\t\t}\n\n\t\t\tif (this.inner && this.afterLoadingClassesAdd) {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tif (typeof this.afterLoadingClassesAdd === 'string')\n\t\t\t\t\t\tthis.inner.classList.add(this.afterLoadingClassesAdd);\n\t\t\t\t\telse this.inner.classList.add(...this.afterLoadingClassesAdd);\n\t\t\t\t});\n\t\t\t}\n\t\t}, 400);\n\n\t\tif (this.isSnap) {\n\t\t\tthis.container.addEventListener('scroll', () => {\n\t\t\t\tclearTimeout(this.isScrolling);\n\n\t\t\t\tthis.isScrolling = setTimeout(() => {\n\t\t\t\t\tthis.setIsSnap();\n\t\t\t\t}, 100);\n\t\t\t});\n\t\t}\n\n\t\tthis.el.classList.add('init');\n\n\t\tif (!this.isSnap) {\n\t\t\tthis.el.addEventListener('touchstart', (evt) => {\n\t\t\t\tthis.touchX.start = evt.changedTouches[0].screenX;\n\t\t\t});\n\n\t\t\tthis.el.addEventListener('touchend', (evt) => {\n\t\t\t\tthis.touchX.end = evt.changedTouches[0].screenX;\n\n\t\t\t\tthis.detectDirection();\n\t\t\t});\n\t\t}\n\n\t\tthis.observeResize();\n\t}\n\n\tprivate initDragHandling(): void {\n\t\tconst scrollableElement = this.inner;\n\n\t\tif (scrollableElement) {\n\t\t\tscrollableElement.addEventListener(\n\t\t\t\t'mousedown',\n\t\t\t\tthis.handleDragStart.bind(this),\n\t\t\t);\n\t\t\tscrollableElement.addEventListener(\n\t\t\t\t'touchstart',\n\t\t\t\tthis.handleDragStart.bind(this),\n\t\t\t\t{ passive: true },\n\t\t\t);\n\n\t\t\tdocument.addEventListener('mousemove', this.handleDragMove.bind(this));\n\t\t\tdocument.addEventListener('touchmove', this.handleDragMove.bind(this), {\n\t\t\t\tpassive: false,\n\t\t\t});\n\n\t\t\tdocument.addEventListener('mouseup', this.handleDragEnd.bind(this));\n\t\t\tdocument.addEventListener('touchend', this.handleDragEnd.bind(this));\n\t\t}\n\t}\n\n\tprivate getTranslateXValue(): number {\n\t\tconst transformMatrix = window.getComputedStyle(this.inner).transform;\n\n\t\tif (transformMatrix !== 'none') {\n\t\t\tconst matrixValues = transformMatrix\n\t\t\t\t.match(/matrix.*\\((.+)\\)/)?.[1]\n\t\t\t\t.split(', ');\n\n\t\t\tif (matrixValues) {\n\t\t\t\tlet translateX = parseFloat(\n\t\t\t\t\tmatrixValues.length === 6 ? matrixValues[4] : matrixValues[12],\n\t\t\t\t);\n\t\t\t\tif (this.isRTL) translateX = -translateX;\n\n\t\t\t\treturn isNaN(translateX) || translateX === 0 ? 0 : -translateX;\n\t\t\t}\n\t\t}\n\t\treturn 0;\n\t}\n\n\tprivate removeClickEventWhileDragging(evt: MouseEvent) {\n\t\tevt.preventDefault();\n\t}\n\n\tprivate handleDragStart(evt: MouseEvent | TouchEvent): void {\n\t\tevt.preventDefault();\n\n\t\tthis.isDragging = true;\n\t\tthis.dragStartX = this.getEventX(evt);\n\t\tthis.initialTranslateX = this.isRTL\n\t\t\t? this.getTranslateXValue()\n\t\t\t: -this.getTranslateXValue();\n\n\t\tthis.inner.classList.add('dragging');\n\t}\n\n\tprivate handleDragMove(evt: MouseEvent | TouchEvent): void {\n\t\tif (!this.isDragging) return;\n\n\t\tthis.inner.querySelectorAll('a:not(.prevented-click)').forEach((el) => {\n\t\t\tel.classList.add('prevented-click');\n\t\t\tel.addEventListener('click', this.removeClickEventWhileDragging);\n\t\t});\n\n\t\tconst currentX = this.getEventX(evt);\n\t\tlet deltaX = currentX - this.dragStartX;\n\t\tif (this.isRTL) deltaX = -deltaX;\n\t\tconst newTranslateX = this.initialTranslateX + deltaX;\n\t\tconst newTranslateXFunc = () => {\n\t\t\tlet calcWidth =\n\t\t\t\t(this.sliderWidth * this.slides.length) / this.getCurrentSlidesQty() -\n\t\t\t\tthis.sliderWidth;\n\t\t\tconst containerWidth = this.sliderWidth;\n\t\t\tconst itemWidth = containerWidth / this.getCurrentSlidesQty();\n\t\t\tconst centeredOffset = (containerWidth - itemWidth) / 2;\n\t\t\tconst limitStart = this.isCentered ? centeredOffset : 0;\n\t\t\tif (this.isCentered) calcWidth = calcWidth + centeredOffset;\n\t\t\tconst limitEnd = -calcWidth;\n\n\t\t\tif (this.isRTL) {\n\t\t\t\tif (newTranslateX < limitStart) return limitStart;\n\t\t\t\tif (newTranslateX > calcWidth) return limitEnd;\n\t\t\t\telse return -newTranslateX;\n\t\t\t} else {\n\t\t\t\tif (newTranslateX > limitStart) return limitStart;\n\t\t\t\telse if (newTranslateX < -calcWidth) return limitEnd;\n\t\t\t\telse return newTranslateX;\n\t\t\t}\n\t\t};\n\n\t\tthis.setTranslate(newTranslateXFunc());\n\t}\n\n\tprivate handleDragEnd(): void {\n\t\tif (!this.isDragging) return;\n\t\tthis.isDragging = false;\n\n\t\tconst containerWidth = this.sliderWidth;\n\t\tconst itemWidth = containerWidth / this.getCurrentSlidesQty();\n\t\tconst currentTranslateX = this.getTranslateXValue();\n\t\tlet closestIndex = Math.round(currentTranslateX / itemWidth);\n\t\tif (this.isRTL) closestIndex = Math.round(currentTranslateX / itemWidth);\n\n\t\tthis.inner.classList.remove('dragging');\n\n\t\tsetTimeout(() => {\n\t\t\tthis.calculateTransform(closestIndex);\n\t\t\tif (this.dots) this.setCurrentDot();\n\n\t\t\tthis.dragStartX = null;\n\t\t\tthis.initialTranslateX = null;\n\n\t\t\tthis.inner.querySelectorAll('a.prevented-click').forEach((el) => {\n\t\t\t\tel.classList.remove('prevented-click');\n\t\t\t\tel.removeEventListener('click', this.removeClickEventWhileDragging);\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate getEventX(event: MouseEvent | TouchEvent): number {\n\t\treturn event instanceof MouseEvent\n\t\t\t? event.clientX\n\t\t\t: event.touches[0].clientX;\n\t}\n\n\tprivate getCurrentSlidesQty(): number {\n\t\tif (typeof this.slidesQty === 'object') {\n\t\t\tconst windowWidth = document.body.clientWidth;\n\t\t\tlet currentRes = 0;\n\n\t\t\tObject.keys(this.slidesQty).forEach((key: string) => {\n\t\t\t\tif (\n\t\t\t\t\twindowWidth >=\n\t\t\t\t\t(typeof key + 1 === 'number'\n\t\t\t\t\t\t? (this.slidesQty as TCarouselOptionsSlidesQty)[key]\n\t\t\t\t\t\t: BREAKPOINTS[key])\n\t\t\t\t)\n\t\t\t\t\tcurrentRes = (this.slidesQty as TCarouselOptionsSlidesQty)[key];\n\t\t\t});\n\n\t\t\treturn currentRes;\n\t\t} else {\n\t\t\treturn this.slidesQty as number;\n\t\t}\n\t}\n\n\tprivate buildSnapSpacers() {\n\t\tconst existingBefore = this.inner.querySelector('.hs-snap-before');\n\t\tconst existingAfter = this.inner.querySelector('.hs-snap-after');\n\t\tif (existingBefore) existingBefore.remove();\n\t\tif (existingAfter) existingAfter.remove();\n\n\t\tconst containerWidth = this.sliderWidth;\n\t\tconst itemWidth = containerWidth / this.getCurrentSlidesQty();\n\t\tconst spacerWidth = containerWidth / 2 - itemWidth / 2;\n\n\t\tconst before = htmlToElement(\n\t\t\t`
`,\n\t\t);\n\t\tconst after = htmlToElement(\n\t\t\t`
`,\n\t\t);\n\n\t\tthis.inner.prepend(before);\n\t\tthis.inner.appendChild(after);\n\t}\n\n\tprivate initDots() {\n\t\tif (this.el.querySelectorAll('.hs-carousel-pagination-item').length)\n\t\t\tthis.setDots();\n\t\telse this.buildDots();\n\n\t\tif (this.dots) this.setCurrentDot();\n\t}\n\n\tprivate buildDots() {\n\t\tthis.dots.innerHTML = '';\n\n\t\tconst slidesQty =\n\t\t\t!this.isCentered && this.slidesQty\n\t\t\t\t? this.slides.length - (this.getCurrentSlidesQty() - 1)\n\t\t\t\t: this.slides.length;\n\n\t\tfor (let i = 0; i < slidesQty; i++) {\n\t\t\tconst singleDot = this.buildSingleDot(i);\n\n\t\t\tthis.dots.append(singleDot);\n\t\t}\n\t}\n\n\tprivate setDots() {\n\t\tthis.dotsItems = this.dots.querySelectorAll('.hs-carousel-pagination-item');\n\n\t\tthis.dotsItems.forEach((dot, ind) => {\n\t\t\tconst targetIndex = dot.getAttribute(\n\t\t\t\t'data-carousel-pagination-item-target',\n\t\t\t);\n\n\t\t\tthis.singleDotEvents(dot, targetIndex ? +targetIndex : ind);\n\t\t});\n\t}\n\n\tprivate goToCurrentDot() {\n\t\tconst container = this.dots;\n\t\tconst containerRect = container.getBoundingClientRect();\n\t\tconst containerScrollLeft = container.scrollLeft;\n\t\tconst containerScrollTop = container.scrollTop;\n\t\tconst containerWidth = container.clientWidth;\n\t\tconst containerHeight = container.clientHeight;\n\n\t\tconst item = this.dotsItems[this.currentIndex];\n\t\tconst itemRect = item.getBoundingClientRect();\n\t\tconst itemLeft = itemRect.left - containerRect.left + containerScrollLeft;\n\t\tconst itemRight = itemLeft + item.clientWidth;\n\t\tconst itemTop = itemRect.top - containerRect.top + containerScrollTop;\n\t\tconst itemBottom = itemTop + item.clientHeight;\n\n\t\tlet scrollLeft = containerScrollLeft;\n\t\tlet scrollTop = containerScrollTop;\n\n\t\tif (\n\t\t\titemLeft < containerScrollLeft ||\n\t\t\titemRight > containerScrollLeft + containerWidth\n\t\t) {\n\t\t\tscrollLeft = itemRight - containerWidth;\n\t\t}\n\n\t\tif (\n\t\t\titemTop < containerScrollTop ||\n\t\t\titemBottom > containerScrollTop + containerHeight\n\t\t) {\n\t\t\tscrollTop = itemBottom - containerHeight;\n\t\t}\n\n\t\tcontainer.scrollTo({\n\t\t\tleft: scrollLeft,\n\t\t\ttop: scrollTop,\n\t\t\tbehavior: 'smooth',\n\t\t});\n\t}\n\n\tprivate buildInfo() {\n\t\tif (this.infoTotal) this.setInfoTotal();\n\t\tif (this.infoCurrent) this.setInfoCurrent();\n\t}\n\n\tprivate setInfoTotal() {\n\t\tthis.infoTotal.innerText = `${this.slides.length}`;\n\t}\n\n\tprivate setInfoCurrent() {\n\t\tthis.infoCurrent.innerText = `${this.currentIndex + 1}`;\n\t}\n\n\tprivate buildSingleDot(ind: number) {\n\t\tconst singleDot = htmlToElement('');\n\t\tif (this.dotsItemClasses) classToClassList(this.dotsItemClasses, singleDot);\n\n\t\tthis.singleDotEvents(singleDot, ind);\n\n\t\treturn singleDot;\n\t}\n\n\tprivate singleDotEvents(dot: HTMLElement, ind: number) {\n\t\tdot.addEventListener('click', () => {\n\t\t\tthis.goTo(ind);\n\n\t\t\tif (this.isAutoPlay) {\n\t\t\t\tthis.resetTimer();\n\t\t\t\tthis.setTimer();\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate observeResize() {\n\t\tconst resizeObserver = new ResizeObserver(\n\t\t\tdebounce((entries: ResizeObserverEntry[]) => {\n\t\t\t\tfor (let entry of entries) {\n\t\t\t\t\tconst newWidth = entry.contentRect.width;\n\n\t\t\t\t\tif (newWidth !== this.resizeContainerWidth) {\n\t\t\t\t\t\tthis.recalculateWidth();\n\t\t\t\t\t\tif (this.dots) this.initDots();\n\t\t\t\t\t\tthis.addCurrentClass();\n\n\t\t\t\t\t\tthis.resizeContainerWidth = newWidth;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, this.updateDelay),\n\t\t);\n\n\t\tresizeObserver.observe(this.resizeContainer);\n\t}\n\n\tprivate calculateWidth() {\n\t\tif (!this.isSnap)\n\t\t\tthis.inner.style.width = `${(this.sliderWidth * this.slides.length) / this.getCurrentSlidesQty()}px`;\n\n\t\tthis.slides.forEach((el) => {\n\t\t\tel.style.width = `${this.sliderWidth / this.getCurrentSlidesQty()}px`;\n\t\t});\n\n\t\tthis.calculateTransform();\n\t}\n\n\tprivate addCurrentClass() {\n\t\tif (this.isSnap) {\n\t\t\tconst itemsQty = Math.floor(this.getCurrentSlidesQty() / 2);\n\n\t\t\tfor (let i = 0; i < this.slides.length; i++) {\n\t\t\t\tconst slide = this.slides[i];\n\n\t\t\t\tif (\n\t\t\t\t\ti <= this.currentIndex + itemsQty &&\n\t\t\t\t\ti >= this.currentIndex - itemsQty\n\t\t\t\t)\n\t\t\t\t\tslide.classList.add('active');\n\t\t\t\telse slide.classList.remove('active');\n\t\t\t}\n\t\t} else {\n\t\t\tconst maxIndex = this.isCentered\n\t\t\t\t? this.currentIndex +\n\t\t\t\t\tthis.getCurrentSlidesQty() +\n\t\t\t\t\t(this.getCurrentSlidesQty() - 1)\n\t\t\t\t: this.currentIndex + this.getCurrentSlidesQty();\n\n\t\t\tthis.slides.forEach((el, i) => {\n\t\t\t\tif (i >= this.currentIndex && i < maxIndex) {\n\t\t\t\t\tel.classList.add('active');\n\t\t\t\t} else {\n\t\t\t\t\tel.classList.remove('active');\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate setCurrentDot() {\n\t\tconst toggleDotActive = (el: HTMLElement | Element, i: number) => {\n\t\t\tlet statement = false;\n\t\t\tconst itemsQty = Math.floor(this.getCurrentSlidesQty() / 2);\n\n\t\t\tif (this.isSnap && !this.hasSnapSpacers) {\n\t\t\t\tstatement =\n\t\t\t\t\ti ===\n\t\t\t\t\t(this.getCurrentSlidesQty() % 2 === 0\n\t\t\t\t\t\t? this.currentIndex - itemsQty + 1\n\t\t\t\t\t\t: this.currentIndex - itemsQty);\n\t\t\t} else statement = i === this.currentIndex;\n\n\t\t\tif (statement) el.classList.add('active');\n\t\t\telse el.classList.remove('active');\n\t\t};\n\n\t\tif (this.dotsItems)\n\t\t\tthis.dotsItems.forEach((el, i) => toggleDotActive(el, i));\n\t\telse\n\t\t\tthis.dots\n\t\t\t\t.querySelectorAll(':scope > *')\n\t\t\t\t.forEach((el, i) => toggleDotActive(el, i));\n\t}\n\n\tprivate setElementToDisabled(el: HTMLElement) {\n\t\tel.classList.add('disabled');\n\t\tif (el.tagName === 'BUTTON' || el.tagName === 'INPUT')\n\t\t\tel.setAttribute('disabled', 'disabled');\n\t}\n\n\tprivate unsetElementToDisabled(el: HTMLElement) {\n\t\tel.classList.remove('disabled');\n\t\tif (el.tagName === 'BUTTON' || el.tagName === 'INPUT')\n\t\t\tel.removeAttribute('disabled');\n\t}\n\n\tprivate addDisabledClass() {\n\t\tif (!this.prev || !this.next) return false;\n\n\t\tconst gapValue = getComputedStyle(this.inner).getPropertyValue('gap');\n\t\tconst itemsQty = Math.floor(this.getCurrentSlidesQty() / 2);\n\t\tlet currentIndex = 0;\n\t\tlet maxIndex = 0;\n\t\tlet statementPrev = false;\n\t\tlet statementNext = false;\n\n\t\tif (this.isSnap) {\n\t\t\tcurrentIndex = this.currentIndex;\n\t\t\tmaxIndex = this.hasSnapSpacers\n\t\t\t\t? this.slides.length - 1\n\t\t\t\t: this.slides.length - itemsQty - 1;\n\t\t\tstatementPrev = this.hasSnapSpacers\n\t\t\t\t? currentIndex === 0\n\t\t\t\t: this.getCurrentSlidesQty() % 2 === 0\n\t\t\t\t\t? currentIndex - itemsQty < 0\n\t\t\t\t\t: currentIndex - itemsQty === 0;\n\t\t\tstatementNext =\n\t\t\t\tcurrentIndex >= maxIndex &&\n\t\t\t\tthis.container.scrollLeft +\n\t\t\t\t\tthis.container.clientWidth +\n\t\t\t\t\t(parseFloat(gapValue) || 0) >=\n\t\t\t\t\tthis.container.scrollWidth;\n\t\t} else {\n\t\t\tcurrentIndex = this.currentIndex;\n\t\t\tmaxIndex = this.isCentered\n\t\t\t\t? this.slides.length -\n\t\t\t\t\tthis.getCurrentSlidesQty() +\n\t\t\t\t\t(this.getCurrentSlidesQty() - 1)\n\t\t\t\t: this.slides.length - this.getCurrentSlidesQty();\n\t\t\tstatementPrev = currentIndex === 0;\n\t\t\tstatementNext = currentIndex >= maxIndex;\n\t\t}\n\n\t\tif (statementPrev) {\n\t\t\tthis.unsetElementToDisabled(this.next);\n\t\t\tthis.setElementToDisabled(this.prev);\n\t\t} else if (statementNext) {\n\t\t\tthis.unsetElementToDisabled(this.prev);\n\t\t\tthis.setElementToDisabled(this.next);\n\t\t} else {\n\t\t\tthis.unsetElementToDisabled(this.prev);\n\t\t\tthis.unsetElementToDisabled(this.next);\n\t\t}\n\t}\n\n\tprivate autoPlay() {\n\t\tthis.setTimer();\n\t}\n\n\tprivate setTimer() {\n\t\tthis.timer = setInterval(() => {\n\t\t\tif (this.currentIndex === this.slides.length - 1) this.goTo(0);\n\t\t\telse this.goToNext();\n\t\t}, this.speed);\n\t}\n\n\tprivate resetTimer() {\n\t\tclearInterval(this.timer);\n\t}\n\n\tprivate detectDirection() {\n\t\tconst { start, end } = this.touchX;\n\n\t\tif (end < start) this.goToNext();\n\t\tif (end > start) this.goToPrev();\n\t}\n\n\t// Public methods\n\tpublic recalculateWidth() {\n\t\tthis.sliderWidth = this.inner.parentElement.getBoundingClientRect().width;\n\n\t\tthis.calculateWidth();\n\n\t\tif (\n\t\t\tthis.sliderWidth !==\n\t\t\tthis.inner.parentElement.getBoundingClientRect().width\n\t\t)\n\t\t\tthis.recalculateWidth();\n\t}\n\n\tprivate calculateTransform(currentIdx?: number | undefined): void {\n\t\tif (currentIdx !== undefined) this.currentIndex = currentIdx;\n\t\tif (\n\t\t\tthis.currentIndex > this.slides.length - this.getCurrentSlidesQty() &&\n\t\t\t!this.isCentered\n\t\t)\n\t\t\tthis.currentIndex = this.slides.length - this.getCurrentSlidesQty();\n\n\t\tconst containerWidth = this.sliderWidth;\n\t\tconst itemWidth = containerWidth / this.getCurrentSlidesQty();\n\t\tlet translateX = this.currentIndex * itemWidth;\n\n\t\t// TODO:: need to test auto scrolling to the end if last on resize\n\t\tif (this.isSnap && !this.isCentered) {\n\t\t\tif (\n\t\t\t\tthis.container.scrollLeft < containerWidth &&\n\t\t\t\tthis.container.scrollLeft + itemWidth / 2 > containerWidth\n\t\t\t)\n\t\t\t\tthis.container.scrollLeft = this.container.scrollWidth;\n\t\t}\n\n\t\tif (this.isCentered && !this.isSnap) {\n\t\t\tconst centeredOffset = (containerWidth - itemWidth) / 2;\n\n\t\t\tif (this.currentIndex === 0) translateX = -centeredOffset;\n\t\t\telse if (\n\t\t\t\tthis.currentIndex >=\n\t\t\t\tthis.slides.length -\n\t\t\t\t\tthis.getCurrentSlidesQty() +\n\t\t\t\t\t(this.getCurrentSlidesQty() - 1)\n\t\t\t) {\n\t\t\t\tconst totalSlideWidth = this.slides.length * itemWidth;\n\n\t\t\t\ttranslateX = totalSlideWidth - containerWidth + centeredOffset;\n\t\t\t} else translateX = this.currentIndex * itemWidth - centeredOffset;\n\t\t}\n\n\t\tif (!this.isSnap)\n\t\t\tthis.inner.style.transform = this.isRTL\n\t\t\t\t? `translate(${translateX}px, 0px)`\n\t\t\t\t: `translate(${-translateX}px, 0px)`;\n\n\t\tif (this.isAutoHeight)\n\t\t\tthis.inner.style.height = `${this.slides[this.currentIndex].clientHeight}px`;\n\n\t\tif (this.dotsItems) this.goToCurrentDot();\n\n\t\tthis.addCurrentClass();\n\t\tif (!this.isInfiniteLoop) this.addDisabledClass();\n\t\tif (this.isSnap && this.hasSnapSpacers) this.buildSnapSpacers();\n\t\tif (this.infoCurrent) this.setInfoCurrent();\n\t}\n\n\tprivate setTranslate(val: number) {\n\t\tthis.inner.style.transform = this.isRTL\n\t\t\t? `translate(${-val}px, 0px)`\n\t\t\t: `translate(${val}px, 0px)`;\n\t}\n\n\tpublic goToPrev() {\n\t\tif (this.currentIndex > 0) {\n\t\t\tthis.currentIndex--;\n\t\t} else {\n\t\t\tthis.currentIndex = this.slides.length - this.getCurrentSlidesQty();\n\t\t}\n\n\t\tif (this.isSnap) {\n\t\t\tconst itemWidth = this.sliderWidth / this.getCurrentSlidesQty();\n\n\t\t\tthis.container.scrollBy({\n\t\t\t\tleft: Math.max(-this.container.scrollLeft, -itemWidth),\n\t\t\t\tbehavior: 'smooth',\n\t\t\t});\n\n\t\t\tthis.addCurrentClass();\n\t\t\tif (!this.isInfiniteLoop) this.addDisabledClass();\n\t\t} else this.calculateTransform();\n\n\t\tif (this.dots) this.setCurrentDot();\n\t}\n\n\tpublic goToNext() {\n\t\tconst statement = this.isCentered\n\t\t\t? this.slides.length -\n\t\t\t\tthis.getCurrentSlidesQty() +\n\t\t\t\t(this.getCurrentSlidesQty() - 1)\n\t\t\t: this.slides.length - this.getCurrentSlidesQty();\n\n\t\tif (this.currentIndex < statement) {\n\t\t\tthis.currentIndex++;\n\t\t} else {\n\t\t\tthis.currentIndex = 0;\n\t\t}\n\n\t\tif (this.isSnap) {\n\t\t\tconst itemWidth = this.sliderWidth / this.getCurrentSlidesQty();\n\t\t\tconst maxScrollLeft =\n\t\t\t\tthis.container.scrollWidth - this.container.clientWidth;\n\n\t\t\tthis.container.scrollBy({\n\t\t\t\tleft: Math.min(itemWidth, maxScrollLeft - this.container.scrollLeft),\n\t\t\t\tbehavior: 'smooth',\n\t\t\t});\n\n\t\t\tthis.addCurrentClass();\n\t\t\tif (!this.isInfiniteLoop) this.addDisabledClass();\n\t\t} else this.calculateTransform();\n\n\t\tif (this.dots) this.setCurrentDot();\n\t}\n\n\tpublic goTo(i: number) {\n\t\tconst currentIndex = this.currentIndex;\n\t\tthis.currentIndex = i;\n\n\t\tif (this.isSnap) {\n\t\t\tconst itemWidth = this.sliderWidth / this.getCurrentSlidesQty();\n\t\t\tconst index =\n\t\t\t\tcurrentIndex > this.currentIndex\n\t\t\t\t\t? currentIndex - this.currentIndex\n\t\t\t\t\t: this.currentIndex - currentIndex;\n\t\t\tconst width =\n\t\t\t\tcurrentIndex > this.currentIndex\n\t\t\t\t\t? -(itemWidth * index)\n\t\t\t\t\t: itemWidth * index;\n\n\t\t\tthis.container.scrollBy({\n\t\t\t\tleft: width,\n\t\t\t\tbehavior: 'smooth',\n\t\t\t});\n\n\t\t\tthis.addCurrentClass();\n\t\t\tif (!this.isInfiniteLoop) this.addDisabledClass();\n\t\t} else this.calculateTransform();\n\n\t\tif (this.dots) this.setCurrentDot();\n\t}\n\n\tprivate setIndex(i: number) {\n\t\tthis.currentIndex = i;\n\n\t\tthis.addCurrentClass();\n\t\tif (!this.isInfiniteLoop) this.addDisabledClass();\n\t}\n\n\t// Static methods\n\tstatic getInstance(target: HTMLElement | string, isInstance?: boolean) {\n\t\tconst elInCollection = window.$hsCarouselCollection.find(\n\t\t\t(el) =>\n\t\t\t\tel.element.el ===\n\t\t\t\t(typeof target === 'string' ? document.querySelector(target) : target),\n\t\t);\n\n\t\treturn elInCollection\n\t\t\t? isInstance\n\t\t\t\t? elInCollection\n\t\t\t\t: elInCollection.element\n\t\t\t: null;\n\t}\n\n\tstatic autoInit() {\n\t\tif (!window.$hsCarouselCollection) window.$hsCarouselCollection = [];\n\n\t\tdocument\n\t\t\t.querySelectorAll('[data-hs-carousel]:not(.--prevent-on-load-init)')\n\t\t\t.forEach((el: HTMLElement) => {\n\t\t\t\tif (\n\t\t\t\t\t!window.$hsCarouselCollection.find(\n\t\t\t\t\t\t(elC) => (elC?.element?.el as HTMLElement) === el,\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t\tnew HSCarousel(el);\n\t\t\t});\n\t}\n}\n\ndeclare global {\n\tinterface Window {\n\t\tHSCarousel: Function;\n\t\t$hsCarouselCollection: ICollectionItem[];\n\t}\n}\n\nwindow.addEventListener('load', () => {\n\tHSCarousel.autoInit();\n\n\t// Uncomment for debug\n\t// console.log('Carousel collection:', window.$hsCarouselCollection);\n});\n\nif (typeof window !== 'undefined') {\n\twindow.HSCarousel = HSCarousel;\n}\n\nexport default HSCarousel;\n","\"use strict\";\n/*\n * HSCollapse\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../../utils\");\nvar base_plugin_1 = __importDefault(require(\"../base-plugin\"));\nvar HSCollapse = /** @class */ (function (_super) {\n __extends(HSCollapse, _super);\n function HSCollapse(el, options, events) {\n var _this = _super.call(this, el, options, events) || this;\n _this.contentId = _this.el.dataset.hsCollapse;\n _this.content = document.querySelector(_this.contentId);\n _this.animationInProcess = false;\n if (_this.content)\n _this.init();\n return _this;\n }\n HSCollapse.prototype.init = function () {\n var _this = this;\n var _a;\n this.createCollection(window.$hsCollapseCollection, this);\n if ((_a = this === null || this === void 0 ? void 0 : this.el) === null || _a === void 0 ? void 0 : _a.ariaExpanded) {\n if (this.el.classList.contains('open'))\n this.el.ariaExpanded = 'true';\n else\n this.el.ariaExpanded = 'false';\n }\n this.el.addEventListener('click', function () {\n if (_this.content.classList.contains('open')) {\n _this.hide();\n }\n else {\n _this.show();\n }\n });\n };\n HSCollapse.prototype.hideAllMegaMenuItems = function () {\n this.content\n .querySelectorAll('.hs-mega-menu-content.block')\n .forEach(function (el) {\n el.classList.remove('block');\n el.classList.add('hidden');\n });\n };\n // Public methods\n HSCollapse.prototype.show = function () {\n var _this = this;\n var _a;\n if (this.animationInProcess || this.el.classList.contains('open'))\n return false;\n this.animationInProcess = true;\n this.el.classList.add('open');\n if ((_a = this === null || this === void 0 ? void 0 : this.el) === null || _a === void 0 ? void 0 : _a.ariaExpanded)\n this.el.ariaExpanded = 'true';\n this.content.classList.add('open');\n this.content.classList.remove('hidden');\n this.content.style.height = '0';\n setTimeout(function () {\n _this.content.style.height = \"\".concat(_this.content.scrollHeight, \"px\");\n _this.fireEvent('beforeOpen', _this.el);\n (0, utils_1.dispatch)('beforeOpen.hs.collapse', _this.el, _this.el);\n });\n (0, utils_1.afterTransition)(this.content, function () {\n _this.content.style.height = '';\n _this.fireEvent('open', _this.el);\n (0, utils_1.dispatch)('open.hs.collapse', _this.el, _this.el);\n _this.animationInProcess = false;\n });\n };\n HSCollapse.prototype.hide = function () {\n var _this = this;\n var _a;\n if (this.animationInProcess || !this.el.classList.contains('open'))\n return false;\n this.animationInProcess = true;\n this.el.classList.remove('open');\n if ((_a = this === null || this === void 0 ? void 0 : this.el) === null || _a === void 0 ? void 0 : _a.ariaExpanded)\n this.el.ariaExpanded = 'false';\n this.content.style.height = \"\".concat(this.content.scrollHeight, \"px\");\n setTimeout(function () {\n _this.content.style.height = '0';\n });\n this.content.classList.remove('open');\n (0, utils_1.afterTransition)(this.content, function () {\n _this.content.classList.add('hidden');\n _this.content.style.height = '';\n _this.fireEvent('hide', _this.el);\n (0, utils_1.dispatch)('hide.hs.collapse', _this.el, _this.el);\n _this.animationInProcess = false;\n });\n if (this.content.querySelectorAll('.hs-mega-menu-content.block').length) {\n this.hideAllMegaMenuItems();\n }\n };\n // Static methods\n HSCollapse.getInstance = function (target, isInstance) {\n if (isInstance === void 0) { isInstance = false; }\n var elInCollection = window.$hsCollapseCollection.find(function (el) {\n return el.element.el ===\n (typeof target === 'string' ? document.querySelector(target) : target);\n });\n return elInCollection\n ? isInstance\n ? elInCollection\n : elInCollection.element.el\n : null;\n };\n HSCollapse.autoInit = function () {\n if (!window.$hsCollapseCollection)\n window.$hsCollapseCollection = [];\n document\n .querySelectorAll('.hs-collapse-toggle:not(.--prevent-on-load-init)')\n .forEach(function (el) {\n if (!window.$hsCollapseCollection.find(function (elC) { var _a; return ((_a = elC === null || elC === void 0 ? void 0 : elC.element) === null || _a === void 0 ? void 0 : _a.el) === el; }))\n new HSCollapse(el);\n });\n };\n HSCollapse.show = function (target) {\n var elInCollection = window.$hsCollapseCollection.find(function (el) {\n return el.element.el ===\n (typeof target === 'string' ? document.querySelector(target) : target);\n });\n if (elInCollection &&\n elInCollection.element.content.classList.contains('hidden'))\n elInCollection.element.show();\n };\n HSCollapse.hide = function (target) {\n var elInCollection = window.$hsCollapseCollection.find(function (el) {\n return el.element.el ===\n (typeof target === 'string' ? document.querySelector(target) : target);\n });\n if (elInCollection &&\n !elInCollection.element.content.classList.contains('hidden'))\n elInCollection.element.hide();\n };\n // Backward compatibility\n HSCollapse.on = function (evt, target, cb) {\n var elInCollection = window.$hsCollapseCollection.find(function (el) {\n return el.element.el ===\n (typeof target === 'string' ? document.querySelector(target) : target);\n });\n if (elInCollection)\n elInCollection.element.events[evt] = cb;\n };\n return HSCollapse;\n}(base_plugin_1.default));\nwindow.addEventListener('load', function () {\n HSCollapse.autoInit();\n // Uncomment for debug\n // console.log('Collapse collection:', window.$hsCollapseCollection);\n});\nif (typeof window !== 'undefined') {\n window.HSCollapse = HSCollapse;\n}\nexports.default = HSCollapse;\n","/*\n * HSCollapse\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\n\nimport { dispatch, afterTransition } from '../../utils';\n\nimport { ICollapse } from '../collapse/interfaces';\n\nimport HSBasePlugin from '../base-plugin';\nimport { ICollectionItem } from '../../interfaces';\n\nclass HSCollapse extends HSBasePlugin<{}> implements ICollapse {\n\tprivate readonly contentId: string | null;\n\tpublic content: HTMLElement | null;\n\tprivate animationInProcess: boolean;\n\n\tconstructor(el: HTMLElement, options?: {}, events?: {}) {\n\t\tsuper(el, options, events);\n\n\t\tthis.contentId = this.el.dataset.hsCollapse;\n\t\tthis.content = document.querySelector(this.contentId);\n\t\tthis.animationInProcess = false;\n\n\t\tif (this.content) this.init();\n\t}\n\n\tprivate init() {\n\t\tthis.createCollection(window.$hsCollapseCollection, this);\n\n\t\tif (this?.el?.ariaExpanded) {\n\t\t\tif (this.el.classList.contains('open')) this.el.ariaExpanded = 'true';\n\t\t\telse this.el.ariaExpanded = 'false';\n\t\t}\n\n\t\tthis.el.addEventListener('click', () => {\n\t\t\tif (this.content.classList.contains('open')) {\n\t\t\t\tthis.hide();\n\t\t\t} else {\n\t\t\t\tthis.show();\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate hideAllMegaMenuItems() {\n\t\tthis.content\n\t\t\t.querySelectorAll('.hs-mega-menu-content.block')\n\t\t\t.forEach((el) => {\n\t\t\t\tel.classList.remove('block');\n\t\t\t\tel.classList.add('hidden');\n\t\t\t});\n\t}\n\n\t// Public methods\n\tpublic show() {\n\t\tif (this.animationInProcess || this.el.classList.contains('open'))\n\t\t\treturn false;\n\n\t\tthis.animationInProcess = true;\n\n\t\tthis.el.classList.add('open');\n\t\tif (this?.el?.ariaExpanded) this.el.ariaExpanded = 'true';\n\t\tthis.content.classList.add('open');\n\t\tthis.content.classList.remove('hidden');\n\n\t\tthis.content.style.height = '0';\n\t\tsetTimeout(() => {\n\t\t\tthis.content.style.height = `${this.content.scrollHeight}px`;\n\n\t\t\tthis.fireEvent('beforeOpen', this.el);\n\t\t\tdispatch('beforeOpen.hs.collapse', this.el, this.el);\n\t\t});\n\n\t\tafterTransition(this.content, () => {\n\t\t\tthis.content.style.height = '';\n\n\t\t\tthis.fireEvent('open', this.el);\n\t\t\tdispatch('open.hs.collapse', this.el, this.el);\n\n\t\t\tthis.animationInProcess = false;\n\t\t});\n\t}\n\n\tpublic hide() {\n\t\tif (this.animationInProcess || !this.el.classList.contains('open'))\n\t\t\treturn false;\n\n\t\tthis.animationInProcess = true;\n\n\t\tthis.el.classList.remove('open');\n\t\tif (this?.el?.ariaExpanded) this.el.ariaExpanded = 'false';\n\n\t\tthis.content.style.height = `${this.content.scrollHeight}px`;\n\t\tsetTimeout(() => {\n\t\t\tthis.content.style.height = '0';\n\t\t});\n\n\t\tthis.content.classList.remove('open');\n\n\t\tafterTransition(this.content, () => {\n\t\t\tthis.content.classList.add('hidden');\n\t\t\tthis.content.style.height = '';\n\n\t\t\tthis.fireEvent('hide', this.el);\n\t\t\tdispatch('hide.hs.collapse', this.el, this.el);\n\n\t\t\tthis.animationInProcess = false;\n\t\t});\n\n\t\tif (this.content.querySelectorAll('.hs-mega-menu-content.block').length) {\n\t\t\tthis.hideAllMegaMenuItems();\n\t\t}\n\t}\n\n\t// Static methods\n\tstatic getInstance(target: HTMLElement, isInstance = false) {\n\t\tconst elInCollection = window.$hsCollapseCollection.find(\n\t\t\t(el) =>\n\t\t\t\tel.element.el ===\n\t\t\t\t(typeof target === 'string' ? document.querySelector(target) : target),\n\t\t);\n\n\t\treturn elInCollection\n\t\t\t? isInstance\n\t\t\t\t? elInCollection\n\t\t\t\t: elInCollection.element.el\n\t\t\t: null;\n\t}\n\n\tstatic autoInit() {\n\t\tif (!window.$hsCollapseCollection) window.$hsCollapseCollection = [];\n\n\t\tdocument\n\t\t\t.querySelectorAll('.hs-collapse-toggle:not(.--prevent-on-load-init)')\n\t\t\t.forEach((el: HTMLElement) => {\n\t\t\t\tif (\n\t\t\t\t\t!window.$hsCollapseCollection.find(\n\t\t\t\t\t\t(elC) => (elC?.element?.el as HTMLElement) === el,\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t\tnew HSCollapse(el);\n\t\t\t});\n\t}\n\n\tstatic show(target: HTMLElement) {\n\t\tconst elInCollection = window.$hsCollapseCollection.find(\n\t\t\t(el) =>\n\t\t\t\tel.element.el ===\n\t\t\t\t(typeof target === 'string' ? document.querySelector(target) : target),\n\t\t);\n\n\t\tif (\n\t\t\telInCollection &&\n\t\t\telInCollection.element.content.classList.contains('hidden')\n\t\t)\n\t\t\telInCollection.element.show();\n\t}\n\n\tstatic hide(target: HTMLElement) {\n\t\tconst elInCollection = window.$hsCollapseCollection.find(\n\t\t\t(el) =>\n\t\t\t\tel.element.el ===\n\t\t\t\t(typeof target === 'string' ? document.querySelector(target) : target),\n\t\t);\n\n\t\tif (\n\t\t\telInCollection &&\n\t\t\t!elInCollection.element.content.classList.contains('hidden')\n\t\t)\n\t\t\telInCollection.element.hide();\n\t}\n\n\t// Backward compatibility\n\tstatic on(evt: string, target: HTMLElement, cb: Function) {\n\t\tconst elInCollection = window.$hsCollapseCollection.find(\n\t\t\t(el) =>\n\t\t\t\tel.element.el ===\n\t\t\t\t(typeof target === 'string' ? document.querySelector(target) : target),\n\t\t);\n\n\t\tif (elInCollection) elInCollection.element.events[evt] = cb;\n\t}\n}\n\ndeclare global {\n\tinterface Window {\n\t\tHSCollapse: Function;\n\t\t$hsCollapseCollection: ICollectionItem[];\n\t}\n}\n\nwindow.addEventListener('load', () => {\n\tHSCollapse.autoInit();\n\n\t// Uncomment for debug\n\t// console.log('Collapse collection:', window.$hsCollapseCollection);\n});\n\nif (typeof window !== 'undefined') {\n\twindow.HSCollapse = HSCollapse;\n}\n\nexport default HSCollapse;\n","\"use strict\";\n/*\n * HSComboBox\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../../utils\");\nvar base_plugin_1 = __importDefault(require(\"../base-plugin\"));\nvar constants_1 = require(\"../../constants\");\nvar HSComboBox = /** @class */ (function (_super) {\n __extends(HSComboBox, _super);\n function HSComboBox(el, options, events) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0;\n var _this = _super.call(this, el, options, events) || this;\n // Data parameters\n var data = el.getAttribute('data-hs-combo-box');\n var dataOptions = data ? JSON.parse(data) : {};\n var concatOptions = __assign(__assign({}, dataOptions), options);\n _this.gap = 5;\n _this.viewport =\n (_a = (typeof (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.viewport) === 'string'\n ? document.querySelector(concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.viewport)\n : concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.viewport)) !== null && _a !== void 0 ? _a : null;\n _this.preventVisibility = (_b = concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.preventVisibility) !== null && _b !== void 0 ? _b : false;\n _this.apiUrl = (_c = concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.apiUrl) !== null && _c !== void 0 ? _c : null;\n _this.apiDataPart = (_d = concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.apiDataPart) !== null && _d !== void 0 ? _d : null;\n _this.apiQuery = (_e = concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.apiQuery) !== null && _e !== void 0 ? _e : null;\n _this.apiSearchQuery = (_f = concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.apiSearchQuery) !== null && _f !== void 0 ? _f : null;\n _this.apiHeaders = (_g = concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.apiHeaders) !== null && _g !== void 0 ? _g : {};\n _this.apiGroupField = (_h = concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.apiGroupField) !== null && _h !== void 0 ? _h : null;\n _this.outputItemTemplate =\n (_j = concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.outputItemTemplate) !== null && _j !== void 0 ? _j : \"
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\";\n _this.outputEmptyTemplate =\n (_k = concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.outputEmptyTemplate) !== null && _k !== void 0 ? _k : \"
Nothing found...
\";\n _this.outputLoaderTemplate =\n (_l = concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.outputLoaderTemplate) !== null && _l !== void 0 ? _l : \"
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\tLoading...\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\";\n _this.groupingType = (_m = concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.groupingType) !== null && _m !== void 0 ? _m : null;\n _this.groupingTitleTemplate =\n (_o = concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.groupingTitleTemplate) !== null && _o !== void 0 ? _o : (_this.groupingType === 'default'\n ? \"
\"\n : \"\");\n _this.tabsWrapperTemplate =\n (_p = concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.tabsWrapperTemplate) !== null && _p !== void 0 ? _p : \"
\";\n _this.preventSelection = (_q = concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.preventSelection) !== null && _q !== void 0 ? _q : false;\n _this.preventAutoPosition = (_r = concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.preventAutoPosition) !== null && _r !== void 0 ? _r : false;\n _this.isOpenOnFocus = (_s = concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.isOpenOnFocus) !== null && _s !== void 0 ? _s : false;\n // Internal parameters\n _this.input = (_t = _this.el.querySelector('[data-hs-combo-box-input]')) !== null && _t !== void 0 ? _t : null;\n _this.output = (_u = _this.el.querySelector('[data-hs-combo-box-output]')) !== null && _u !== void 0 ? _u : null;\n _this.itemsWrapper =\n (_v = _this.el.querySelector('[data-hs-combo-box-output-items-wrapper]')) !== null && _v !== void 0 ? _v : null;\n _this.items =\n (_w = Array.from(_this.el.querySelectorAll('[data-hs-combo-box-output-item]'))) !== null && _w !== void 0 ? _w : [];\n _this.tabs = [];\n _this.toggle = (_x = _this.el.querySelector('[data-hs-combo-box-toggle]')) !== null && _x !== void 0 ? _x : null;\n _this.toggleClose =\n (_y = _this.el.querySelector('[data-hs-combo-box-close]')) !== null && _y !== void 0 ? _y : null;\n _this.toggleOpen = (_z = _this.el.querySelector('[data-hs-combo-box-open]')) !== null && _z !== void 0 ? _z : null;\n _this.outputPlaceholder = null;\n _this.selected = _this.value =\n (_0 = _this.el.querySelector('[data-hs-combo-box-input]')\n .value) !== null && _0 !== void 0 ? _0 : '';\n _this.isOpened = false;\n _this.isCurrent = false;\n _this.animationInProcess = false;\n _this.selectedGroup = 'all';\n _this.init();\n return _this;\n }\n HSComboBox.prototype.init = function () {\n this.createCollection(window.$hsComboBoxCollection, this);\n this.build();\n };\n HSComboBox.prototype.build = function () {\n this.buildInput();\n if (this.groupingType)\n this.setGroups();\n this.buildItems();\n if (this.preventVisibility) {\n // TODO:: test the plugin while the line below is commented.\n // this.isOpened = true;\n if (!this.preventAutoPosition)\n this.recalculateDirection();\n }\n if (this.toggle)\n this.buildToggle();\n if (this.toggleClose)\n this.buildToggleClose();\n if (this.toggleOpen)\n this.buildToggleOpen();\n };\n HSComboBox.prototype.setResultAndRender = function (value) {\n if (value === void 0) { value = ''; }\n // TODO:: test the plugin with below code added.\n var _value = this.preventVisibility ? this.input.value : value;\n this.setResults(_value);\n if (this.apiSearchQuery)\n this.itemsFromJson();\n };\n HSComboBox.prototype.buildInput = function () {\n var _this = this;\n if (this.isOpenOnFocus) {\n this.input.addEventListener('focus', function () {\n if (!_this.isOpened) {\n _this.setResultAndRender();\n _this.open();\n }\n });\n }\n this.input.addEventListener('input', (0, utils_1.debounce)(function (evt) {\n _this.setResultAndRender(evt.target.value);\n if (_this.input.value !== '')\n _this.el.classList.add('has-value');\n else\n _this.el.classList.remove('has-value');\n if (!_this.isOpened)\n _this.open();\n }));\n };\n HSComboBox.prototype.buildItems = function () {\n this.output.role = 'listbox';\n this.output.tabIndex = -1;\n this.output.ariaOrientation = 'vertical';\n if (this.apiUrl)\n this.itemsFromJson();\n else {\n if (this.itemsWrapper)\n this.itemsWrapper.innerHTML = '';\n else\n this.output.innerHTML = '';\n this.itemsFromHtml();\n }\n };\n HSComboBox.prototype.setResults = function (val) {\n this.value = val;\n this.resultItems();\n if (this.hasVisibleItems())\n this.destroyOutputPlaceholder();\n else\n this.buildOutputPlaceholder();\n };\n HSComboBox.prototype.isItemExists = function (obj) {\n return this.items.some(function (el) {\n var _a, _b, _c;\n var groupField = (_a = el.getAttribute('data-hs-combo-box-output-item-group-field')) !== null && _a !== void 0 ? _a : null;\n var params = (_b = JSON.parse(el.getAttribute('data-hs-combo-box-output-item'))) !== null && _b !== void 0 ? _b : null;\n var group = null;\n if (groupField && ((_c = params === null || params === void 0 ? void 0 : params.group) === null || _c === void 0 ? void 0 : _c.name))\n group = obj[groupField];\n return Array.from(el.querySelectorAll('[data-hs-combo-box-search-text]')).some(function (elI) {\n var _a;\n var equality = ((_a = params === null || params === void 0 ? void 0 : params.group) === null || _a === void 0 ? void 0 : _a.name) && group\n ? group === params.group.name &&\n elI.getAttribute('data-hs-combo-box-search-text') ===\n obj[elI.getAttribute('data-hs-combo-box-output-item-field')]\n : elI.getAttribute('data-hs-combo-box-search-text') ===\n obj[elI.getAttribute('data-hs-combo-box-output-item-field')];\n return equality;\n });\n });\n };\n HSComboBox.prototype.isTextExists = function (el, val) {\n var lowerCased = val.map(function (v) { return v.toLowerCase(); });\n return Array.from(el.querySelectorAll('[data-hs-combo-box-search-text]')).some(function (elI) {\n return lowerCased.includes(elI.getAttribute('data-hs-combo-box-search-text').toLowerCase());\n });\n };\n HSComboBox.prototype.isTextExistsAny = function (el, val) {\n return Array.from(el.querySelectorAll('[data-hs-combo-box-search-text]')).some(function (elI) {\n return elI\n .getAttribute('data-hs-combo-box-search-text')\n .toLowerCase()\n .includes(val.toLowerCase());\n });\n };\n HSComboBox.prototype.valuesBySelector = function (el) {\n return Array.from(el.querySelectorAll('[data-hs-combo-box-search-text]')).reduce(function (acc, cur) { return __spreadArray(__spreadArray([], acc, true), [\n cur.getAttribute('data-hs-combo-box-search-text'),\n ], false); }, []);\n };\n HSComboBox.prototype.buildOutputLoader = function () {\n if (this.outputLoader)\n return false;\n this.outputLoader = (0, utils_1.htmlToElement)(this.outputLoaderTemplate);\n if (this.items.length || this.outputPlaceholder) {\n this.outputLoader.style.position = 'absolute';\n this.outputLoader.style.top = '0';\n this.outputLoader.style.bottom = '0';\n this.outputLoader.style.left = '0';\n this.outputLoader.style.right = '0';\n this.outputLoader.style.zIndex = '2';\n }\n else {\n this.outputLoader.style.position = '';\n this.outputLoader.style.top = '';\n this.outputLoader.style.bottom = '';\n this.outputLoader.style.left = '';\n this.outputLoader.style.right = '';\n this.outputLoader.style.zIndex = '';\n this.outputLoader.style.height = '30px';\n }\n this.output.append(this.outputLoader);\n };\n HSComboBox.prototype.destroyOutputLoader = function () {\n if (this.outputLoader)\n this.outputLoader.remove();\n this.outputLoader = null;\n };\n HSComboBox.prototype.itemsFromJson = function () {\n return __awaiter(this, void 0, void 0, function () {\n var query, searchQuery, url, res, items_1, err_1;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.buildOutputLoader();\n _a.label = 1;\n case 1:\n _a.trys.push([1, 4, , 5]);\n query = \"\".concat(this.apiQuery);\n searchQuery = \"\".concat(this.apiSearchQuery, \"=\").concat(this.value.toLowerCase());\n url = this.apiUrl;\n if (this.apiQuery && this.apiSearchQuery) {\n url += \"?\".concat(searchQuery, \"&\").concat(query);\n }\n else if (this.apiQuery) {\n url += \"?\".concat(query);\n }\n else if (this.apiSearchQuery) {\n url += \"?\".concat(searchQuery);\n }\n return [4 /*yield*/, fetch(url, this.apiHeaders)];\n case 2:\n res = _a.sent();\n return [4 /*yield*/, res.json()];\n case 3:\n items_1 = _a.sent();\n if (this.apiDataPart) {\n items_1 = items_1[this.apiDataPart];\n }\n if (this.apiSearchQuery) {\n this.items = [];\n }\n if (this.itemsWrapper) {\n this.itemsWrapper.innerHTML = '';\n }\n else {\n this.output.innerHTML = '';\n }\n if (this.groupingType === 'tabs') {\n this.setApiGroups(items_1);\n this.groupTabsRender();\n this.jsonItemsRender(items_1);\n }\n else if (this.groupingType === 'default') {\n this.setApiGroups(items_1);\n this.groups.forEach(function (el) {\n var title = (0, utils_1.htmlToElement)(_this.groupingTitleTemplate);\n title.setAttribute('data-hs-combo-box-group-title', el.name);\n title.classList.add('--exclude-accessibility');\n title.innerText = el.title;\n var newItems = items_1.filter(function (i) { return i[_this.apiGroupField] === el.name; });\n if (_this.itemsWrapper)\n _this.itemsWrapper.append(title);\n else\n _this.output.append(title);\n _this.jsonItemsRender(newItems);\n });\n }\n else {\n this.jsonItemsRender(items_1);\n }\n this.setResults(this.input.value);\n return [3 /*break*/, 5];\n case 4:\n err_1 = _a.sent();\n console.error(err_1);\n return [3 /*break*/, 5];\n case 5:\n this.destroyOutputLoader();\n return [2 /*return*/];\n }\n });\n });\n };\n HSComboBox.prototype.jsonItemsRender = function (items) {\n var _this = this;\n items.forEach(function (item, index) {\n // TODO:: test without checking below\n // if (this.isItemExists(item)) return false;\n var newItem = (0, utils_1.htmlToElement)(_this.outputItemTemplate);\n newItem\n .querySelectorAll('[data-hs-combo-box-output-item-field]')\n .forEach(function (el) {\n var value = item[el.getAttribute('data-hs-combo-box-output-item-field')];\n var hideIfEmpty = el.hasAttribute('data-hs-combo-box-output-item-hide-if-empty');\n el.textContent = value !== null && value !== void 0 ? value : '';\n if (!value && hideIfEmpty)\n el.style.display = 'none';\n });\n newItem\n .querySelectorAll('[data-hs-combo-box-search-text]')\n .forEach(function (el) {\n var _a;\n el.setAttribute('data-hs-combo-box-search-text', (_a = item[el.getAttribute('data-hs-combo-box-output-item-field')]) !== null && _a !== void 0 ? _a : '');\n });\n newItem\n .querySelectorAll('[data-hs-combo-box-output-item-attr]')\n .forEach(function (el) {\n var attributes = JSON.parse(el.getAttribute('data-hs-combo-box-output-item-attr'));\n attributes.forEach(function (attr) {\n el.setAttribute(attr.attr, item[attr.valueFrom]);\n });\n });\n newItem.setAttribute('tabIndex', \"\".concat(index));\n if (_this.groupingType === 'tabs' || _this.groupingType === 'default') {\n newItem.setAttribute('data-hs-combo-box-output-item', \"{\\\"group\\\": {\\\"name\\\": \\\"\".concat(item[_this.apiGroupField], \"\\\", \\\"title\\\": \\\"\").concat(item[_this.apiGroupField], \"\\\"}}\"));\n }\n _this.items = __spreadArray(__spreadArray([], _this.items, true), [newItem], false);\n if (!_this.preventSelection) {\n newItem.addEventListener('click', function () {\n _this.close(newItem\n .querySelector('[data-hs-combo-box-value]')\n .getAttribute('data-hs-combo-box-search-text'));\n _this.setSelectedByValue(_this.valuesBySelector(newItem));\n });\n }\n _this.appendItemsToWrapper(newItem);\n });\n };\n HSComboBox.prototype.setGroups = function () {\n var groups = [];\n this.items.forEach(function (item) {\n var group = JSON.parse(item.getAttribute('data-hs-combo-box-output-item')).group;\n if (!groups.some(function (el) { return (el === null || el === void 0 ? void 0 : el.name) === group.name; })) {\n groups.push(group);\n }\n });\n this.groups = groups;\n };\n HSComboBox.prototype.setCurrent = function () {\n if (window.$hsComboBoxCollection.length) {\n window.$hsComboBoxCollection.map(function (el) { return (el.element.isCurrent = false); });\n this.isCurrent = true;\n }\n };\n HSComboBox.prototype.setApiGroups = function (items) {\n var _this = this;\n var groups = [];\n items.forEach(function (item) {\n var group = item[_this.apiGroupField];\n if (!groups.some(function (el) { return el.name === group; })) {\n groups.push({\n name: group,\n title: group,\n });\n }\n });\n this.groups = groups;\n };\n HSComboBox.prototype.sortItems = function () {\n var compareFn = function (i1, i2) {\n var a = i1\n .querySelector('[data-hs-combo-box-value]')\n .getAttribute('data-hs-combo-box-search-text');\n var b = i2\n .querySelector('[data-hs-combo-box-value]')\n .getAttribute('data-hs-combo-box-search-text');\n if (a < b) {\n return -1;\n }\n else if (a > b) {\n return 1;\n }\n return 0;\n };\n return this.items.sort(compareFn);\n };\n HSComboBox.prototype.itemRender = function (item) {\n var _this = this;\n var val = item\n .querySelector('[data-hs-combo-box-value]')\n .getAttribute('data-hs-combo-box-search-text');\n if (this.itemsWrapper)\n this.itemsWrapper.append(item);\n else\n this.output.append(item);\n if (!this.preventSelection) {\n item.addEventListener('click', function () {\n _this.close(val);\n _this.setSelectedByValue(_this.valuesBySelector(item));\n });\n }\n };\n HSComboBox.prototype.plainRender = function (items) {\n var _this = this;\n items.forEach(function (item) {\n _this.itemRender(item);\n });\n };\n HSComboBox.prototype.groupTabsRender = function () {\n var _this = this;\n var tabsScroll = (0, utils_1.htmlToElement)(this.tabsWrapperTemplate);\n var tabsWrapper = (0, utils_1.htmlToElement)(\"
\");\n tabsScroll.append(tabsWrapper);\n this.output.insertBefore(tabsScroll, this.output.firstChild);\n var tabDef = (0, utils_1.htmlToElement)(this.groupingTitleTemplate);\n tabDef.setAttribute('data-hs-combo-box-group-title', 'all');\n tabDef.classList.add('--exclude-accessibility', 'active');\n tabDef.innerText = 'All';\n this.tabs = __spreadArray(__spreadArray([], this.tabs, true), [tabDef], false);\n tabsWrapper.append(tabDef);\n tabDef.addEventListener('click', function () {\n _this.selectedGroup = 'all';\n var selectedTab = _this.tabs.find(function (elI) {\n return elI.getAttribute('data-hs-combo-box-group-title') ===\n _this.selectedGroup;\n });\n _this.tabs.forEach(function (el) { return el.classList.remove('active'); });\n selectedTab.classList.add('active');\n _this.setItemsVisibility();\n });\n this.groups.forEach(function (el) {\n var tab = (0, utils_1.htmlToElement)(_this.groupingTitleTemplate);\n tab.setAttribute('data-hs-combo-box-group-title', el.name);\n tab.classList.add('--exclude-accessibility');\n tab.innerText = el.title;\n _this.tabs = __spreadArray(__spreadArray([], _this.tabs, true), [tab], false);\n tabsWrapper.append(tab);\n tab.addEventListener('click', function () {\n _this.selectedGroup = el.name;\n var selectedTab = _this.tabs.find(function (elI) {\n return elI.getAttribute('data-hs-combo-box-group-title') ===\n _this.selectedGroup;\n });\n _this.tabs.forEach(function (el) { return el.classList.remove('active'); });\n selectedTab.classList.add('active');\n _this.setItemsVisibility();\n });\n });\n };\n HSComboBox.prototype.groupDefaultRender = function () {\n var _this = this;\n this.groups.forEach(function (el) {\n var title = (0, utils_1.htmlToElement)(_this.groupingTitleTemplate);\n title.setAttribute('data-hs-combo-box-group-title', el.name);\n title.classList.add('--exclude-accessibility');\n title.innerText = el.title;\n if (_this.itemsWrapper)\n _this.itemsWrapper.append(title);\n else\n _this.output.append(title);\n var items = _this.sortItems().filter(function (f) {\n var group = JSON.parse(f.getAttribute('data-hs-combo-box-output-item')).group;\n return group.name === el.name;\n });\n _this.plainRender(items);\n });\n };\n HSComboBox.prototype.itemsFromHtml = function () {\n if (this.groupingType === 'default') {\n this.groupDefaultRender();\n }\n else if (this.groupingType === 'tabs') {\n var items = this.sortItems();\n this.groupTabsRender();\n this.plainRender(items);\n }\n else {\n var items = this.sortItems();\n this.plainRender(items);\n }\n this.setResults(this.input.value);\n };\n HSComboBox.prototype.buildToggle = function () {\n var _this = this;\n var _a, _b, _c, _d;\n if (this.isOpened) {\n if ((_a = this === null || this === void 0 ? void 0 : this.toggle) === null || _a === void 0 ? void 0 : _a.ariaExpanded)\n this.toggle.ariaExpanded = 'true';\n if ((_b = this === null || this === void 0 ? void 0 : this.input) === null || _b === void 0 ? void 0 : _b.ariaExpanded)\n this.input.ariaExpanded = 'true';\n }\n else {\n if ((_c = this === null || this === void 0 ? void 0 : this.toggle) === null || _c === void 0 ? void 0 : _c.ariaExpanded)\n this.toggle.ariaExpanded = 'false';\n if ((_d = this === null || this === void 0 ? void 0 : this.input) === null || _d === void 0 ? void 0 : _d.ariaExpanded)\n this.input.ariaExpanded = 'false';\n }\n this.toggle.addEventListener('click', function () {\n if (_this.isOpened)\n _this.close();\n else\n _this.open(_this.toggle.getAttribute('data-hs-combo-box-toggle'));\n });\n };\n HSComboBox.prototype.buildToggleClose = function () {\n var _this = this;\n this.toggleClose.addEventListener('click', function () { return _this.close(); });\n };\n HSComboBox.prototype.buildToggleOpen = function () {\n var _this = this;\n this.toggleOpen.addEventListener('click', function () { return _this.open(); });\n };\n HSComboBox.prototype.setSelectedByValue = function (val) {\n var _this = this;\n this.items.forEach(function (el) {\n if (_this.isTextExists(el, val))\n el.classList.add('selected');\n else\n el.classList.remove('selected');\n });\n };\n HSComboBox.prototype.setValue = function (val) {\n this.selected = val;\n this.value = val;\n this.input.value = val;\n this.fireEvent('select', this.el);\n (0, utils_1.dispatch)('select.hs.combobox', this.el, this.value);\n };\n HSComboBox.prototype.setItemsVisibility = function () {\n var _this = this;\n if (this.groupingType === 'tabs' && this.selectedGroup !== 'all') {\n this.items.forEach(function (item) {\n item.style.display = 'none';\n });\n }\n var items = this.groupingType === 'tabs'\n ? this.selectedGroup === 'all'\n ? this.items\n : this.items.filter(function (f) {\n var group = JSON.parse(f.getAttribute('data-hs-combo-box-output-item')).group;\n return group.name === _this.selectedGroup;\n })\n : this.items;\n if (this.groupingType === 'tabs' && this.selectedGroup !== 'all') {\n items.forEach(function (item) {\n item.style.display = 'block';\n });\n }\n items.forEach(function (item) {\n if (!_this.isTextExistsAny(item, _this.value))\n item.style.display = 'none';\n else\n item.style.display = 'block';\n });\n if (this.groupingType === 'default') {\n this.output\n .querySelectorAll('[data-hs-combo-box-group-title]')\n .forEach(function (el) {\n var g = el.getAttribute('data-hs-combo-box-group-title');\n var items = _this.items.filter(function (f) {\n var group = JSON.parse(f.getAttribute('data-hs-combo-box-output-item')).group;\n return group.name === g && f.style.display === 'block';\n });\n if (items.length)\n el.style.display = 'block';\n else\n el.style.display = 'none';\n });\n }\n };\n HSComboBox.prototype.hasVisibleItems = function () {\n return this.items.length\n ? this.items.some(function (el) { return el.style.display === 'block'; })\n : false;\n };\n HSComboBox.prototype.appendItemsToWrapper = function (item) {\n if (this.itemsWrapper) {\n this.itemsWrapper.append(item);\n }\n else {\n this.output.append(item);\n }\n };\n HSComboBox.prototype.buildOutputPlaceholder = function () {\n if (!this.outputPlaceholder)\n this.outputPlaceholder = (0, utils_1.htmlToElement)(this.outputEmptyTemplate);\n this.appendItemsToWrapper(this.outputPlaceholder);\n };\n HSComboBox.prototype.destroyOutputPlaceholder = function () {\n if (this.outputPlaceholder)\n this.outputPlaceholder.remove();\n this.outputPlaceholder = null;\n };\n HSComboBox.prototype.resultItems = function () {\n if (!this.items.length)\n return false;\n this.setItemsVisibility();\n this.setSelectedByValue([this.selected]);\n };\n // Public methods\n HSComboBox.prototype.setValueAndOpen = function (val) {\n this.value = val;\n if (this.items.length) {\n this.setItemsVisibility();\n }\n };\n HSComboBox.prototype.open = function (val) {\n var _this = this;\n if (this.animationInProcess)\n return false;\n if (typeof val !== 'undefined')\n this.setValueAndOpen(val);\n if (this.preventVisibility)\n return false;\n this.animationInProcess = true;\n this.output.style.display = 'block';\n if (!this.preventAutoPosition)\n this.recalculateDirection();\n setTimeout(function () {\n var _a, _b;\n if ((_a = _this === null || _this === void 0 ? void 0 : _this.input) === null || _a === void 0 ? void 0 : _a.ariaExpanded)\n _this.input.ariaExpanded = 'true';\n if ((_b = _this === null || _this === void 0 ? void 0 : _this.toggle) === null || _b === void 0 ? void 0 : _b.ariaExpanded)\n _this.toggle.ariaExpanded = 'true';\n _this.el.classList.add('active');\n _this.animationInProcess = false;\n });\n this.isOpened = true;\n };\n HSComboBox.prototype.setValueAndClear = function (val) {\n if (val)\n this.setValue(val);\n else\n this.setValue(this.selected);\n if (this.outputPlaceholder)\n this.destroyOutputPlaceholder();\n };\n HSComboBox.prototype.close = function (val) {\n var _this = this;\n var _a, _b;\n if (this.animationInProcess)\n return false;\n if (this.preventVisibility) {\n this.setValueAndClear(val);\n if (this.input.value !== '')\n this.el.classList.add('has-value');\n else\n this.el.classList.remove('has-value');\n return false;\n }\n this.animationInProcess = true;\n if ((_a = this === null || this === void 0 ? void 0 : this.input) === null || _a === void 0 ? void 0 : _a.ariaExpanded)\n this.input.ariaExpanded = 'false';\n if ((_b = this === null || this === void 0 ? void 0 : this.toggle) === null || _b === void 0 ? void 0 : _b.ariaExpanded)\n this.toggle.ariaExpanded = 'false';\n this.el.classList.remove('active');\n if (!this.preventAutoPosition) {\n this.output.classList.remove('bottom-full', 'top-full');\n this.output.style.marginTop = '';\n this.output.style.marginBottom = '';\n }\n (0, utils_1.afterTransition)(this.output, function () {\n _this.output.style.display = 'none';\n _this.setValueAndClear(val);\n _this.animationInProcess = false;\n });\n if (this.input.value !== '')\n this.el.classList.add('has-value');\n else\n this.el.classList.remove('has-value');\n this.isOpened = false;\n };\n HSComboBox.prototype.recalculateDirection = function () {\n if ((0, utils_1.isEnoughSpace)(this.output, this.input, 'bottom', this.gap, this.viewport)) {\n this.output.classList.remove('bottom-full');\n this.output.style.marginBottom = '';\n this.output.classList.add('top-full');\n this.output.style.marginTop = \"\".concat(this.gap, \"px\");\n }\n else {\n this.output.classList.remove('top-full');\n this.output.style.marginTop = '';\n this.output.classList.add('bottom-full');\n this.output.style.marginBottom = \"\".concat(this.gap, \"px\");\n }\n };\n // Static methods\n HSComboBox.getInstance = function (target, isInstance) {\n var elInCollection = window.$hsComboBoxCollection.find(function (el) {\n return el.element.el ===\n (typeof target === 'string' ? document.querySelector(target) : target);\n });\n return elInCollection\n ? isInstance\n ? elInCollection\n : elInCollection.element\n : null;\n };\n HSComboBox.autoInit = function () {\n if (!window.$hsComboBoxCollection)\n window.$hsComboBoxCollection = [];\n document\n .querySelectorAll('[data-hs-combo-box]:not(.--prevent-on-load-init)')\n .forEach(function (el) {\n if (!window.$hsComboBoxCollection.find(function (elC) { var _a; return ((_a = elC === null || elC === void 0 ? void 0 : elC.element) === null || _a === void 0 ? void 0 : _a.el) === el; })) {\n var data = el.getAttribute('data-hs-combo-box');\n var options = data ? JSON.parse(data) : {};\n new HSComboBox(el, options);\n }\n });\n if (window.$hsComboBoxCollection) {\n window.addEventListener('click', function (evt) {\n var evtTarget = evt.target;\n HSComboBox.closeCurrentlyOpened(evtTarget);\n });\n document.addEventListener('keydown', function (evt) {\n return HSComboBox.accessibility(evt);\n });\n }\n };\n HSComboBox.close = function (target) {\n var elInCollection = window.$hsComboBoxCollection.find(function (el) {\n return el.element.el ===\n (typeof target === 'string' ? document.querySelector(target) : target);\n });\n if (elInCollection && elInCollection.element.isOpened) {\n elInCollection.element.close();\n }\n };\n HSComboBox.closeCurrentlyOpened = function (evtTarget) {\n if (evtTarget === void 0) { evtTarget = null; }\n if (!evtTarget.closest('[data-hs-combo-box].active')) {\n var currentlyOpened = window.$hsComboBoxCollection.filter(function (el) { return el.element.isOpened; }) ||\n null;\n if (currentlyOpened) {\n currentlyOpened.forEach(function (el) {\n el.element.close();\n });\n }\n }\n };\n // Accessibility methods\n HSComboBox.getPreparedItems = function (isReversed, output) {\n if (isReversed === void 0) { isReversed = false; }\n if (!output)\n return null;\n var preparedItems = isReversed\n ? Array.from(output.querySelectorAll(':scope > *:not(.--exclude-accessibility)'))\n .filter(function (el) { return el.style.display !== 'none'; })\n .reverse()\n : Array.from(output.querySelectorAll(':scope > *:not(.--exclude-accessibility)')).filter(function (el) { return el.style.display !== 'none'; });\n var items = preparedItems.filter(function (el) { return !el.classList.contains('disabled'); });\n return items;\n };\n HSComboBox.setHighlighted = function (prev, current, input) {\n current.focus();\n input.value = current\n .querySelector('[data-hs-combo-box-value]')\n .getAttribute('data-hs-combo-box-search-text');\n if (prev)\n prev.classList.remove('hs-combo-box-output-item-highlighted');\n current.classList.add('hs-combo-box-output-item-highlighted');\n };\n HSComboBox.accessibility = function (evt) {\n var target = window.$hsComboBoxCollection.find(function (el) {\n return el.element.preventVisibility ? el.element.isCurrent : el.element.isOpened;\n });\n if (target &&\n constants_1.COMBO_BOX_ACCESSIBILITY_KEY_SET.includes(evt.code) &&\n !evt.metaKey) {\n switch (evt.code) {\n case 'Escape':\n evt.preventDefault();\n this.onEscape();\n break;\n case 'ArrowUp':\n evt.preventDefault();\n evt.stopImmediatePropagation();\n this.onArrow();\n break;\n case 'ArrowDown':\n evt.preventDefault();\n evt.stopImmediatePropagation();\n this.onArrow(false);\n break;\n case 'Home':\n evt.preventDefault();\n evt.stopImmediatePropagation();\n this.onStartEnd();\n break;\n case 'End':\n evt.preventDefault();\n evt.stopImmediatePropagation();\n this.onStartEnd(false);\n break;\n case 'Enter':\n evt.preventDefault();\n this.onEnter(evt);\n break;\n default:\n break;\n }\n }\n };\n HSComboBox.onEscape = function () {\n var target = window.$hsComboBoxCollection.find(function (el) { return !el.element.preventVisibility && el.element.isOpened; });\n if (target) {\n target.element.close();\n target.element.input.blur();\n }\n };\n HSComboBox.onArrow = function (isArrowUp) {\n var _a;\n if (isArrowUp === void 0) { isArrowUp = true; }\n var target = window.$hsComboBoxCollection.find(function (el) {\n return el.element.preventVisibility ? el.element.isCurrent : el.element.isOpened;\n });\n if (target) {\n var output = (_a = target.element.itemsWrapper) !== null && _a !== void 0 ? _a : target.element.output;\n if (!output)\n return false;\n var items = HSComboBox.getPreparedItems(isArrowUp, output);\n var current_1 = output.querySelector('.hs-combo-box-output-item-highlighted');\n var currentItem = null;\n if (!current_1)\n items[0].classList.add('hs-combo-box-output-item-highlighted');\n var currentInd = items.findIndex(function (el) { return el === current_1; });\n if (currentInd + 1 < items.length)\n currentInd++;\n currentItem = items[currentInd];\n HSComboBox.setHighlighted(current_1, currentItem, target.element.input);\n }\n };\n HSComboBox.onStartEnd = function (isStart) {\n var _a;\n if (isStart === void 0) { isStart = true; }\n var target = window.$hsComboBoxCollection.find(function (el) {\n return el.element.preventVisibility ? el.element.isCurrent : el.element.isOpened;\n });\n if (target) {\n var output = (_a = target.element.itemsWrapper) !== null && _a !== void 0 ? _a : target.element.output;\n if (!output)\n return false;\n var items = HSComboBox.getPreparedItems(isStart, output);\n var current = output.querySelector('.hs-combo-box-output-item-highlighted');\n if (items.length)\n HSComboBox.setHighlighted(current, items[0], target.element.input);\n }\n };\n HSComboBox.onEnter = function (evt) {\n var target = evt.target;\n var opened = window.$hsComboBoxCollection.find(function (el) {\n return !(0, utils_1.isParentOrElementHidden)(el.element.el) &&\n evt.target.closest('[data-hs-combo-box]') ===\n el.element.el;\n });\n var link = opened.element.el.querySelector('.hs-combo-box-output-item-highlighted a');\n if (target.hasAttribute('data-hs-combo-box-input')) {\n opened.element.close();\n target.blur();\n }\n else {\n if (!opened.element.preventSelection) {\n opened.element.setSelectedByValue(opened.element.valuesBySelector(evt.target));\n }\n if (opened.element.preventSelection && link) {\n window.location.assign(link.getAttribute('href'));\n }\n opened.element.close(!opened.element.preventSelection\n ? evt.target\n .querySelector('[data-hs-combo-box-value]')\n .getAttribute('data-hs-combo-box-search-text')\n : null);\n }\n };\n return HSComboBox;\n}(base_plugin_1.default));\nwindow.addEventListener('load', function () {\n HSComboBox.autoInit();\n // Uncomment for debug\n // console.log('ComboBox collection:', window.$hsComboBoxCollection);\n});\ndocument.addEventListener('scroll', function () {\n if (!window.$hsComboBoxCollection)\n return false;\n var target = window.$hsComboBoxCollection.find(function (el) { return el.element.isOpened; });\n if (target && !target.element.preventAutoPosition)\n target.element.recalculateDirection();\n});\nif (typeof window !== 'undefined') {\n window.HSComboBox = HSComboBox;\n}\nexports.default = HSComboBox;\n","/*\n * HSComboBox\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\n\nimport {\n\tisEnoughSpace,\n\tdebounce,\n\tdispatch,\n\tafterTransition,\n\thtmlToElement,\n\tisParentOrElementHidden,\n} from '../../utils';\n\nimport {\n\tIComboBox,\n\tIComboBoxOptions,\n\tIComboBoxItemAttr,\n} from '../combobox/interfaces';\n\nimport HSBasePlugin from '../base-plugin';\nimport { ICollectionItem } from '../../interfaces';\n\nimport { COMBO_BOX_ACCESSIBILITY_KEY_SET } from '../../constants';\n\nclass HSComboBox extends HSBasePlugin implements IComboBox {\n\tgap: number;\n\tviewport: string | HTMLElement | null;\n\tpreventVisibility: boolean;\n\tapiUrl: string | null;\n\tapiDataPart: string | null;\n\tapiQuery: string | null;\n\tapiSearchQuery: string | null;\n\tapiHeaders: {};\n\tapiGroupField: string | null;\n\toutputItemTemplate: string | null;\n\toutputEmptyTemplate: string | null;\n\toutputLoaderTemplate: string | null;\n\tgroupingType: 'default' | 'tabs' | null;\n\tgroupingTitleTemplate: string | null;\n\ttabsWrapperTemplate: string | null;\n\tpreventSelection: boolean;\n\tpreventAutoPosition: boolean;\n\tisOpenOnFocus: boolean;\n\n\tprivate readonly input: HTMLInputElement | null;\n\tprivate readonly output: HTMLElement | null;\n\tprivate readonly itemsWrapper: HTMLElement | null;\n\tprivate items: HTMLElement[] | [];\n\tprivate tabs: HTMLElement[] | [];\n\tprivate readonly toggle: HTMLElement | null;\n\tprivate readonly toggleClose: HTMLElement | null;\n\tprivate readonly toggleOpen: HTMLElement | null;\n\tprivate outputPlaceholder: HTMLElement | null;\n\tprivate outputLoader: HTMLElement | null;\n\n\tprivate value: string | null;\n\tprivate selected: string | null;\n\tprivate groups: any[] | null;\n\tprivate selectedGroup: string | null;\n\n\tisOpened: boolean;\n\tisCurrent: boolean;\n\tprivate animationInProcess: boolean;\n\n\tconstructor(el: HTMLElement, options?: IComboBoxOptions, events?: {}) {\n\t\tsuper(el, options, events);\n\n\t\t// Data parameters\n\t\tconst data = el.getAttribute('data-hs-combo-box');\n\t\tconst dataOptions: IComboBoxOptions = data ? JSON.parse(data) : {};\n\t\tconst concatOptions = {\n\t\t\t...dataOptions,\n\t\t\t...options,\n\t\t};\n\n\t\tthis.gap = 5;\n\t\tthis.viewport =\n\t\t\t(typeof concatOptions?.viewport === 'string'\n\t\t\t\t? (document.querySelector(concatOptions?.viewport) as HTMLElement)\n\t\t\t\t: concatOptions?.viewport) ?? null;\n\t\tthis.preventVisibility = concatOptions?.preventVisibility ?? false;\n\t\tthis.apiUrl = concatOptions?.apiUrl ?? null;\n\t\tthis.apiDataPart = concatOptions?.apiDataPart ?? null;\n\t\tthis.apiQuery = concatOptions?.apiQuery ?? null;\n\t\tthis.apiSearchQuery = concatOptions?.apiSearchQuery ?? null;\n\t\tthis.apiHeaders = concatOptions?.apiHeaders ?? {};\n\t\tthis.apiGroupField = concatOptions?.apiGroupField ?? null;\n\t\tthis.outputItemTemplate =\n\t\t\tconcatOptions?.outputItemTemplate ??\n\t\t\t`
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
`;\n\t\tthis.outputEmptyTemplate =\n\t\t\tconcatOptions?.outputEmptyTemplate ??\n\t\t\t`
Nothing found...
`;\n\t\tthis.outputLoaderTemplate =\n\t\t\tconcatOptions?.outputLoaderTemplate ??\n\t\t\t`
\n\t\t\t\t
\n\t\t\t\t\tLoading...\n\t\t\t\t
\n\t\t\t
`;\n\t\tthis.groupingType = concatOptions?.groupingType ?? null;\n\t\tthis.groupingTitleTemplate =\n\t\t\tconcatOptions?.groupingTitleTemplate ??\n\t\t\t(this.groupingType === 'default'\n\t\t\t\t? `
`\n\t\t\t\t: ``);\n\t\tthis.tabsWrapperTemplate =\n\t\t\tconcatOptions?.tabsWrapperTemplate ??\n\t\t\t`
`;\n\t\tthis.preventSelection = concatOptions?.preventSelection ?? false;\n\t\tthis.preventAutoPosition = concatOptions?.preventAutoPosition ?? false;\n\t\tthis.isOpenOnFocus = concatOptions?.isOpenOnFocus ?? false;\n\n\t\t// Internal parameters\n\t\tthis.input = this.el.querySelector('[data-hs-combo-box-input]') ?? null;\n\t\tthis.output = this.el.querySelector('[data-hs-combo-box-output]') ?? null;\n\t\tthis.itemsWrapper =\n\t\t\tthis.el.querySelector('[data-hs-combo-box-output-items-wrapper]') ?? null;\n\t\tthis.items =\n\t\t\tArray.from(this.el.querySelectorAll('[data-hs-combo-box-output-item]')) ??\n\t\t\t[];\n\t\tthis.tabs = [];\n\t\tthis.toggle = this.el.querySelector('[data-hs-combo-box-toggle]') ?? null;\n\t\tthis.toggleClose =\n\t\t\tthis.el.querySelector('[data-hs-combo-box-close]') ?? null;\n\t\tthis.toggleOpen = this.el.querySelector('[data-hs-combo-box-open]') ?? null;\n\t\tthis.outputPlaceholder = null;\n\n\t\tthis.selected = this.value =\n\t\t\t(this.el.querySelector('[data-hs-combo-box-input]') as HTMLInputElement)\n\t\t\t\t.value ?? '';\n\t\tthis.isOpened = false;\n\t\tthis.isCurrent = false;\n\t\tthis.animationInProcess = false;\n\t\tthis.selectedGroup = 'all';\n\n\t\tthis.init();\n\t}\n\n\tprivate init() {\n\t\tthis.createCollection(window.$hsComboBoxCollection, this);\n\n\t\tthis.build();\n\t}\n\n\tprivate build() {\n\t\tthis.buildInput();\n\t\tif (this.groupingType) this.setGroups();\n\t\tthis.buildItems();\n\t\tif (this.preventVisibility) {\n\t\t\t// TODO:: test the plugin while the line below is commented.\n\t\t\t// this.isOpened = true;\n\n\t\t\tif (!this.preventAutoPosition) this.recalculateDirection();\n\t\t}\n\t\tif (this.toggle) this.buildToggle();\n\t\tif (this.toggleClose) this.buildToggleClose();\n\t\tif (this.toggleOpen) this.buildToggleOpen();\n\t}\n\n\tprivate setResultAndRender(value = '') {\n\t\t// TODO:: test the plugin with below code added.\n\t\tlet _value = this.preventVisibility ? this.input.value : value;\n\n\t\tthis.setResults(_value);\n\n\t\tif (this.apiSearchQuery) this.itemsFromJson();\n\t}\n\n\tprivate buildInput() {\n\t\tif (this.isOpenOnFocus) {\n\t\t\tthis.input.addEventListener('focus', () => {\n\t\t\t\tif (!this.isOpened) {\n\t\t\t\t\tthis.setResultAndRender();\n\t\t\t\t\tthis.open();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tthis.input.addEventListener(\n\t\t\t'input',\n\t\t\tdebounce((evt: InputEvent) => {\n\t\t\t\tthis.setResultAndRender((evt.target as HTMLInputElement).value);\n\t\t\t\tif (this.input.value !== '') this.el.classList.add('has-value');\n\t\t\t\telse this.el.classList.remove('has-value');\n\t\t\t\tif (!this.isOpened) this.open();\n\t\t\t}),\n\t\t);\n\t}\n\n\tprivate buildItems() {\n\t\tthis.output.role = 'listbox';\n\t\tthis.output.tabIndex = -1;\n\t\tthis.output.ariaOrientation = 'vertical';\n\n\t\tif (this.apiUrl) this.itemsFromJson();\n\t\telse {\n\t\t\tif (this.itemsWrapper) this.itemsWrapper.innerHTML = '';\n\t\t\telse this.output.innerHTML = '';\n\t\t\tthis.itemsFromHtml();\n\t\t}\n\t}\n\n\tprivate setResults(val: string) {\n\t\tthis.value = val;\n\n\t\tthis.resultItems();\n\n\t\tif (this.hasVisibleItems()) this.destroyOutputPlaceholder();\n\t\telse this.buildOutputPlaceholder();\n\t}\n\n\tprivate isItemExists(obj: never): boolean {\n\t\treturn this.items.some((el: HTMLElement) => {\n\t\t\tconst groupField =\n\t\t\t\tel.getAttribute('data-hs-combo-box-output-item-group-field') ?? null;\n\t\t\tconst params =\n\t\t\t\tJSON.parse(el.getAttribute('data-hs-combo-box-output-item')) ?? null;\n\t\t\tlet group = null;\n\n\t\t\tif (groupField && params?.group?.name) group = obj[groupField];\n\n\t\t\treturn Array.from(\n\t\t\t\tel.querySelectorAll('[data-hs-combo-box-search-text]'),\n\t\t\t).some((elI: HTMLElement) => {\n\t\t\t\tconst equality =\n\t\t\t\t\tparams?.group?.name && group\n\t\t\t\t\t\t? group === params.group.name &&\n\t\t\t\t\t\t\telI.getAttribute('data-hs-combo-box-search-text') ===\n\t\t\t\t\t\t\t\tobj[elI.getAttribute('data-hs-combo-box-output-item-field')]\n\t\t\t\t\t\t: elI.getAttribute('data-hs-combo-box-search-text') ===\n\t\t\t\t\t\t\tobj[elI.getAttribute('data-hs-combo-box-output-item-field')];\n\n\t\t\t\treturn equality;\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate isTextExists(el: HTMLElement, val: string[]): boolean {\n\t\tconst lowerCased = val.map((v) => v.toLowerCase());\n\n\t\treturn Array.from(\n\t\t\tel.querySelectorAll('[data-hs-combo-box-search-text]'),\n\t\t).some((elI: HTMLElement) =>\n\t\t\tlowerCased.includes(\n\t\t\t\telI.getAttribute('data-hs-combo-box-search-text').toLowerCase(),\n\t\t\t),\n\t\t);\n\t}\n\n\tprivate isTextExistsAny(el: HTMLElement, val: string): boolean {\n\t\treturn Array.from(\n\t\t\tel.querySelectorAll('[data-hs-combo-box-search-text]'),\n\t\t).some((elI: HTMLElement) =>\n\t\t\telI\n\t\t\t\t.getAttribute('data-hs-combo-box-search-text')\n\t\t\t\t.toLowerCase()\n\t\t\t\t.includes(val.toLowerCase()),\n\t\t);\n\t}\n\n\tprivate valuesBySelector(el: HTMLElement) {\n\t\treturn Array.from(\n\t\t\tel.querySelectorAll('[data-hs-combo-box-search-text]'),\n\t\t).reduce(\n\t\t\t(acc: any, cur: HTMLElement) => [\n\t\t\t\t...acc,\n\t\t\t\tcur.getAttribute('data-hs-combo-box-search-text'),\n\t\t\t],\n\t\t\t[],\n\t\t);\n\t}\n\n\tprivate buildOutputLoader() {\n\t\tif (this.outputLoader) return false;\n\n\t\tthis.outputLoader = htmlToElement(this.outputLoaderTemplate);\n\t\tif (this.items.length || this.outputPlaceholder) {\n\t\t\tthis.outputLoader.style.position = 'absolute';\n\t\t\tthis.outputLoader.style.top = '0';\n\t\t\tthis.outputLoader.style.bottom = '0';\n\t\t\tthis.outputLoader.style.left = '0';\n\t\t\tthis.outputLoader.style.right = '0';\n\t\t\tthis.outputLoader.style.zIndex = '2';\n\t\t} else {\n\t\t\tthis.outputLoader.style.position = '';\n\t\t\tthis.outputLoader.style.top = '';\n\t\t\tthis.outputLoader.style.bottom = '';\n\t\t\tthis.outputLoader.style.left = '';\n\t\t\tthis.outputLoader.style.right = '';\n\t\t\tthis.outputLoader.style.zIndex = '';\n\t\t\tthis.outputLoader.style.height = '30px';\n\t\t}\n\n\t\tthis.output.append(this.outputLoader);\n\t}\n\n\tprivate destroyOutputLoader() {\n\t\tif (this.outputLoader) this.outputLoader.remove();\n\n\t\tthis.outputLoader = null;\n\t}\n\n\tprivate async itemsFromJson() {\n\t\tthis.buildOutputLoader();\n\n\t\ttry {\n\t\t\tconst query = `${this.apiQuery}`;\n\t\t\tconst searchQuery = `${this.apiSearchQuery}=${this.value.toLowerCase()}`;\n\t\t\tlet url = this.apiUrl;\n\t\t\tif (this.apiQuery && this.apiSearchQuery) {\n\t\t\t\turl += `?${searchQuery}&${query}`;\n\t\t\t} else if (this.apiQuery) {\n\t\t\t\turl += `?${query}`;\n\t\t\t} else if (this.apiSearchQuery) {\n\t\t\t\turl += `?${searchQuery}`;\n\t\t\t}\n\t\t\tconst res = await fetch(url, this.apiHeaders);\n\t\t\tlet items = await res.json();\n\t\t\tif (this.apiDataPart) {\n\t\t\t\titems = items[this.apiDataPart];\n\t\t\t}\n\t\t\tif (this.apiSearchQuery) {\n\t\t\t\tthis.items = [];\n\t\t\t}\n\t\t\tif (this.itemsWrapper) {\n\t\t\t\tthis.itemsWrapper.innerHTML = '';\n\t\t\t} else {\n\t\t\t\tthis.output.innerHTML = '';\n\t\t\t}\n\n\t\t\tif (this.groupingType === 'tabs') {\n\t\t\t\tthis.setApiGroups(items);\n\t\t\t\tthis.groupTabsRender();\n\t\t\t\tthis.jsonItemsRender(items);\n\t\t\t} else if (this.groupingType === 'default') {\n\t\t\t\tthis.setApiGroups(items);\n\n\t\t\t\tthis.groups.forEach((el) => {\n\t\t\t\t\tconst title = htmlToElement(this.groupingTitleTemplate);\n\t\t\t\t\ttitle.setAttribute('data-hs-combo-box-group-title', el.name);\n\t\t\t\t\ttitle.classList.add('--exclude-accessibility');\n\t\t\t\t\ttitle.innerText = el.title;\n\t\t\t\t\tconst newItems = items.filter(\n\t\t\t\t\t\t(i: any) => i[this.apiGroupField] === el.name,\n\t\t\t\t\t);\n\n\t\t\t\t\tif (this.itemsWrapper) this.itemsWrapper.append(title);\n\t\t\t\t\telse this.output.append(title);\n\n\t\t\t\t\tthis.jsonItemsRender(newItems);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.jsonItemsRender(items);\n\t\t\t}\n\n\t\t\tthis.setResults(this.input.value);\n\t\t} catch (err) {\n\t\t\tconsole.error(err);\n\t\t}\n\n\t\tthis.destroyOutputLoader();\n\t}\n\n\tprivate jsonItemsRender(items: any) {\n\t\titems.forEach((item: never, index: number) => {\n\t\t\t// TODO:: test without checking below\n\t\t\t// if (this.isItemExists(item)) return false;\n\n\t\t\tconst newItem = htmlToElement(this.outputItemTemplate);\n\t\t\tnewItem\n\t\t\t\t.querySelectorAll('[data-hs-combo-box-output-item-field]')\n\t\t\t\t.forEach((el) => {\n\t\t\t\t\tconst value =\n\t\t\t\t\t\titem[el.getAttribute('data-hs-combo-box-output-item-field')];\n\t\t\t\t\tconst hideIfEmpty = el.hasAttribute(\n\t\t\t\t\t\t'data-hs-combo-box-output-item-hide-if-empty',\n\t\t\t\t\t);\n\n\t\t\t\t\tel.textContent = value ?? '';\n\t\t\t\t\tif (!value && hideIfEmpty) (el as HTMLElement).style.display = 'none';\n\t\t\t\t});\n\t\t\tnewItem\n\t\t\t\t.querySelectorAll('[data-hs-combo-box-search-text]')\n\t\t\t\t.forEach((el) => {\n\t\t\t\t\tel.setAttribute(\n\t\t\t\t\t\t'data-hs-combo-box-search-text',\n\t\t\t\t\t\titem[el.getAttribute('data-hs-combo-box-output-item-field')] ?? '',\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\tnewItem\n\t\t\t\t.querySelectorAll('[data-hs-combo-box-output-item-attr]')\n\t\t\t\t.forEach((el) => {\n\t\t\t\t\tconst attributes = JSON.parse(\n\t\t\t\t\t\tel.getAttribute('data-hs-combo-box-output-item-attr'),\n\t\t\t\t\t);\n\n\t\t\t\t\tattributes.forEach((attr: IComboBoxItemAttr) => {\n\t\t\t\t\t\tel.setAttribute(attr.attr, item[attr.valueFrom]);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\tnewItem.setAttribute('tabIndex', `${index}`);\n\t\t\tif (this.groupingType === 'tabs' || this.groupingType === 'default') {\n\t\t\t\tnewItem.setAttribute(\n\t\t\t\t\t'data-hs-combo-box-output-item',\n\t\t\t\t\t`{\"group\": {\"name\": \"${item[this.apiGroupField]}\", \"title\": \"${\n\t\t\t\t\t\titem[this.apiGroupField]\n\t\t\t\t\t}\"}}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.items = [...this.items, newItem];\n\n\t\t\tif (!this.preventSelection) {\n\t\t\t\t(newItem as HTMLElement).addEventListener('click', () => {\n\t\t\t\t\tthis.close(\n\t\t\t\t\t\t(newItem as HTMLElement)\n\t\t\t\t\t\t\t.querySelector('[data-hs-combo-box-value]')\n\t\t\t\t\t\t\t.getAttribute('data-hs-combo-box-search-text'),\n\t\t\t\t\t);\n\n\t\t\t\t\tthis.setSelectedByValue(this.valuesBySelector(newItem));\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.appendItemsToWrapper(newItem);\n\t\t});\n\t}\n\n\tprivate setGroups() {\n\t\tconst groups: any[] = [];\n\n\t\tthis.items.forEach((item: HTMLElement) => {\n\t\t\tconst { group } = JSON.parse(\n\t\t\t\titem.getAttribute('data-hs-combo-box-output-item'),\n\t\t\t);\n\n\t\t\tif (!groups.some((el) => el?.name === group.name)) {\n\t\t\t\tgroups.push(group);\n\t\t\t}\n\t\t});\n\n\t\tthis.groups = groups;\n\t}\n\n\tpublic setCurrent() {\n\t\tif (window.$hsComboBoxCollection.length) {\n\t\t\twindow.$hsComboBoxCollection.map((el) => (el.element.isCurrent = false));\n\n\t\t\tthis.isCurrent = true;\n\t\t}\n\t}\n\n\tprivate setApiGroups(items: any) {\n\t\tconst groups: any[] = [];\n\n\t\titems.forEach((item: any) => {\n\t\t\tconst group = item[this.apiGroupField];\n\n\t\t\tif (!groups.some((el) => el.name === group)) {\n\t\t\t\tgroups.push({\n\t\t\t\t\tname: group,\n\t\t\t\t\ttitle: group,\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tthis.groups = groups;\n\t}\n\n\tprivate sortItems() {\n\t\tconst compareFn = (i1: HTMLElement, i2: HTMLElement) => {\n\t\t\tconst a = i1\n\t\t\t\t.querySelector('[data-hs-combo-box-value]')\n\t\t\t\t.getAttribute('data-hs-combo-box-search-text');\n\t\t\tconst b = i2\n\t\t\t\t.querySelector('[data-hs-combo-box-value]')\n\t\t\t\t.getAttribute('data-hs-combo-box-search-text');\n\n\t\t\tif (a < b) {\n\t\t\t\treturn -1;\n\t\t\t} else if (a > b) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t};\n\n\t\treturn this.items.sort(compareFn);\n\t}\n\n\tprivate itemRender(item: HTMLElement) {\n\t\tconst val = item\n\t\t\t.querySelector('[data-hs-combo-box-value]')\n\t\t\t.getAttribute('data-hs-combo-box-search-text');\n\n\t\tif (this.itemsWrapper) this.itemsWrapper.append(item);\n\t\telse this.output.append(item);\n\n\t\tif (!this.preventSelection) {\n\t\t\titem.addEventListener('click', () => {\n\t\t\t\tthis.close(val);\n\t\t\t\tthis.setSelectedByValue(this.valuesBySelector(item));\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate plainRender(items: HTMLElement[]) {\n\t\titems.forEach((item: HTMLElement) => {\n\t\t\tthis.itemRender(item);\n\t\t});\n\t}\n\n\tprivate groupTabsRender() {\n\t\tconst tabsScroll = htmlToElement(this.tabsWrapperTemplate);\n\t\tconst tabsWrapper = htmlToElement(\n\t\t\t`
`,\n\t\t);\n\n\t\ttabsScroll.append(tabsWrapper);\n\t\tthis.output.insertBefore(tabsScroll, this.output.firstChild);\n\n\t\tconst tabDef = htmlToElement(this.groupingTitleTemplate);\n\t\ttabDef.setAttribute('data-hs-combo-box-group-title', 'all');\n\t\ttabDef.classList.add('--exclude-accessibility', 'active');\n\t\ttabDef.innerText = 'All';\n\t\tthis.tabs = [...this.tabs, tabDef];\n\t\ttabsWrapper.append(tabDef);\n\t\ttabDef.addEventListener('click', () => {\n\t\t\tthis.selectedGroup = 'all';\n\t\t\tconst selectedTab = this.tabs.find(\n\t\t\t\t(elI: HTMLElement) =>\n\t\t\t\t\telI.getAttribute('data-hs-combo-box-group-title') ===\n\t\t\t\t\tthis.selectedGroup,\n\t\t\t);\n\n\t\t\tthis.tabs.forEach((el: HTMLElement) => el.classList.remove('active'));\n\t\t\tselectedTab.classList.add('active');\n\t\t\tthis.setItemsVisibility();\n\t\t});\n\n\t\tthis.groups.forEach((el) => {\n\t\t\tconst tab = htmlToElement(this.groupingTitleTemplate);\n\t\t\ttab.setAttribute('data-hs-combo-box-group-title', el.name);\n\t\t\ttab.classList.add('--exclude-accessibility');\n\t\t\ttab.innerText = el.title;\n\n\t\t\tthis.tabs = [...this.tabs, tab];\n\t\t\ttabsWrapper.append(tab);\n\n\t\t\ttab.addEventListener('click', () => {\n\t\t\t\tthis.selectedGroup = el.name;\n\t\t\t\tconst selectedTab = this.tabs.find(\n\t\t\t\t\t(elI: HTMLElement) =>\n\t\t\t\t\t\telI.getAttribute('data-hs-combo-box-group-title') ===\n\t\t\t\t\t\tthis.selectedGroup,\n\t\t\t\t);\n\n\t\t\t\tthis.tabs.forEach((el: HTMLElement) => el.classList.remove('active'));\n\t\t\t\tselectedTab.classList.add('active');\n\t\t\t\tthis.setItemsVisibility();\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate groupDefaultRender() {\n\t\tthis.groups.forEach((el) => {\n\t\t\tconst title = htmlToElement(this.groupingTitleTemplate);\n\t\t\ttitle.setAttribute('data-hs-combo-box-group-title', el.name);\n\t\t\ttitle.classList.add('--exclude-accessibility');\n\t\t\ttitle.innerText = el.title;\n\n\t\t\tif (this.itemsWrapper) this.itemsWrapper.append(title);\n\t\t\telse this.output.append(title);\n\n\t\t\tconst items = this.sortItems().filter((f) => {\n\t\t\t\tconst { group } = JSON.parse(\n\t\t\t\t\tf.getAttribute('data-hs-combo-box-output-item'),\n\t\t\t\t);\n\n\t\t\t\treturn group.name === el.name;\n\t\t\t});\n\n\t\t\tthis.plainRender(items);\n\t\t});\n\t}\n\n\tprivate itemsFromHtml() {\n\t\tif (this.groupingType === 'default') {\n\t\t\tthis.groupDefaultRender();\n\t\t} else if (this.groupingType === 'tabs') {\n\t\t\tconst items = this.sortItems();\n\n\t\t\tthis.groupTabsRender();\n\t\t\tthis.plainRender(items);\n\t\t} else {\n\t\t\tconst items = this.sortItems();\n\n\t\t\tthis.plainRender(items);\n\t\t}\n\t\tthis.setResults(this.input.value);\n\t}\n\n\tprivate buildToggle() {\n\t\tif (this.isOpened) {\n\t\t\tif (this?.toggle?.ariaExpanded) this.toggle.ariaExpanded = 'true';\n\t\t\tif (this?.input?.ariaExpanded) this.input.ariaExpanded = 'true';\n\t\t} else {\n\t\t\tif (this?.toggle?.ariaExpanded) this.toggle.ariaExpanded = 'false';\n\t\t\tif (this?.input?.ariaExpanded) this.input.ariaExpanded = 'false';\n\t\t}\n\n\t\tthis.toggle.addEventListener('click', () => {\n\t\t\tif (this.isOpened) this.close();\n\t\t\telse this.open(this.toggle.getAttribute('data-hs-combo-box-toggle'));\n\t\t});\n\t}\n\n\tprivate buildToggleClose() {\n\t\tthis.toggleClose.addEventListener('click', () => this.close());\n\t}\n\n\tprivate buildToggleOpen() {\n\t\tthis.toggleOpen.addEventListener('click', () => this.open());\n\t}\n\n\tprivate setSelectedByValue(val: string[]) {\n\t\tthis.items.forEach((el) => {\n\t\t\tif (this.isTextExists(el, val))\n\t\t\t\t(el as HTMLElement).classList.add('selected');\n\t\t\telse (el as HTMLElement).classList.remove('selected');\n\t\t});\n\t}\n\n\tprivate setValue(val: string) {\n\t\tthis.selected = val;\n\t\tthis.value = val;\n\t\tthis.input.value = val;\n\n\t\tthis.fireEvent('select', this.el);\n\t\tdispatch('select.hs.combobox', this.el, this.value);\n\t}\n\n\tprivate setItemsVisibility() {\n\t\tif (this.groupingType === 'tabs' && this.selectedGroup !== 'all') {\n\t\t\tthis.items.forEach((item) => {\n\t\t\t\t(item as HTMLElement).style.display = 'none';\n\t\t\t});\n\t\t}\n\n\t\tconst items =\n\t\t\tthis.groupingType === 'tabs'\n\t\t\t\t? this.selectedGroup === 'all'\n\t\t\t\t\t? this.items\n\t\t\t\t\t: this.items.filter((f: HTMLElement) => {\n\t\t\t\t\t\t\tconst { group } = JSON.parse(\n\t\t\t\t\t\t\t\tf.getAttribute('data-hs-combo-box-output-item'),\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\treturn group.name === this.selectedGroup;\n\t\t\t\t\t\t})\n\t\t\t\t: this.items;\n\n\t\tif (this.groupingType === 'tabs' && this.selectedGroup !== 'all') {\n\t\t\titems.forEach((item) => {\n\t\t\t\t(item as HTMLElement).style.display = 'block';\n\t\t\t});\n\t\t}\n\n\t\titems.forEach((item) => {\n\t\t\tif (!this.isTextExistsAny(item, this.value))\n\t\t\t\t(item as HTMLElement).style.display = 'none';\n\t\t\telse (item as HTMLElement).style.display = 'block';\n\t\t});\n\n\t\tif (this.groupingType === 'default') {\n\t\t\tthis.output\n\t\t\t\t.querySelectorAll('[data-hs-combo-box-group-title]')\n\t\t\t\t.forEach((el: HTMLElement) => {\n\t\t\t\t\tconst g = el.getAttribute('data-hs-combo-box-group-title');\n\t\t\t\t\tconst items = this.items.filter((f: HTMLElement) => {\n\t\t\t\t\t\tconst { group } = JSON.parse(\n\t\t\t\t\t\t\tf.getAttribute('data-hs-combo-box-output-item'),\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\treturn group.name === g && f.style.display === 'block';\n\t\t\t\t\t});\n\n\t\t\t\t\tif (items.length) el.style.display = 'block';\n\t\t\t\t\telse el.style.display = 'none';\n\t\t\t\t});\n\t\t}\n\t}\n\n\tprivate hasVisibleItems() {\n\t\treturn this.items.length\n\t\t\t? this.items.some((el: HTMLElement) => el.style.display === 'block')\n\t\t\t: false;\n\t}\n\n\tprivate appendItemsToWrapper(item: HTMLElement) {\n\t\tif (this.itemsWrapper) {\n\t\t\tthis.itemsWrapper.append(item);\n\t\t} else {\n\t\t\tthis.output.append(item);\n\t\t}\n\t}\n\n\tprivate buildOutputPlaceholder() {\n\t\tif (!this.outputPlaceholder)\n\t\t\tthis.outputPlaceholder = htmlToElement(this.outputEmptyTemplate);\n\n\t\tthis.appendItemsToWrapper(this.outputPlaceholder);\n\t}\n\n\tprivate destroyOutputPlaceholder() {\n\t\tif (this.outputPlaceholder) this.outputPlaceholder.remove();\n\n\t\tthis.outputPlaceholder = null;\n\t}\n\n\tprivate resultItems() {\n\t\tif (!this.items.length) return false;\n\n\t\tthis.setItemsVisibility();\n\t\tthis.setSelectedByValue([this.selected]);\n\t}\n\n\t// Public methods\n\tprivate setValueAndOpen(val: string) {\n\t\tthis.value = val;\n\n\t\tif (this.items.length) {\n\t\t\tthis.setItemsVisibility();\n\t\t}\n\t}\n\n\tpublic open(val?: string) {\n\t\tif (this.animationInProcess) return false;\n\n\t\tif (typeof val !== 'undefined') this.setValueAndOpen(val);\n\n\t\tif (this.preventVisibility) return false;\n\n\t\tthis.animationInProcess = true;\n\n\t\tthis.output.style.display = 'block';\n\t\tif (!this.preventAutoPosition) this.recalculateDirection();\n\n\t\tsetTimeout(() => {\n\t\t\tif (this?.input?.ariaExpanded) this.input.ariaExpanded = 'true';\n\t\t\tif (this?.toggle?.ariaExpanded) this.toggle.ariaExpanded = 'true';\n\t\t\tthis.el.classList.add('active');\n\n\t\t\tthis.animationInProcess = false;\n\t\t});\n\n\t\tthis.isOpened = true;\n\t}\n\n\tprivate setValueAndClear(val: string | null) {\n\t\tif (val) this.setValue(val);\n\t\telse this.setValue(this.selected);\n\n\t\tif (this.outputPlaceholder) this.destroyOutputPlaceholder();\n\t}\n\n\tpublic close(val?: string | null) {\n\t\tif (this.animationInProcess) return false;\n\n\t\tif (this.preventVisibility) {\n\t\t\tthis.setValueAndClear(val);\n\n\t\t\tif (this.input.value !== '') this.el.classList.add('has-value');\n\t\t\telse this.el.classList.remove('has-value');\n\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.animationInProcess = true;\n\n\t\tif (this?.input?.ariaExpanded) this.input.ariaExpanded = 'false';\n\t\tif (this?.toggle?.ariaExpanded) this.toggle.ariaExpanded = 'false';\n\t\tthis.el.classList.remove('active');\n\t\tif (!this.preventAutoPosition) {\n\t\t\tthis.output.classList.remove('bottom-full', 'top-full');\n\t\t\tthis.output.style.marginTop = '';\n\t\t\tthis.output.style.marginBottom = '';\n\t\t}\n\n\t\tafterTransition(this.output, () => {\n\t\t\tthis.output.style.display = 'none';\n\n\t\t\tthis.setValueAndClear(val);\n\n\t\t\tthis.animationInProcess = false;\n\t\t});\n\n\t\tif (this.input.value !== '') this.el.classList.add('has-value');\n\t\telse this.el.classList.remove('has-value');\n\n\t\tthis.isOpened = false;\n\t}\n\n\tpublic recalculateDirection() {\n\t\tif (\n\t\t\tisEnoughSpace(\n\t\t\t\tthis.output,\n\t\t\t\tthis.input,\n\t\t\t\t'bottom',\n\t\t\t\tthis.gap,\n\t\t\t\tthis.viewport as HTMLElement,\n\t\t\t)\n\t\t) {\n\t\t\tthis.output.classList.remove('bottom-full');\n\t\t\tthis.output.style.marginBottom = '';\n\t\t\tthis.output.classList.add('top-full');\n\t\t\tthis.output.style.marginTop = `${this.gap}px`;\n\t\t} else {\n\t\t\tthis.output.classList.remove('top-full');\n\t\t\tthis.output.style.marginTop = '';\n\t\t\tthis.output.classList.add('bottom-full');\n\t\t\tthis.output.style.marginBottom = `${this.gap}px`;\n\t\t}\n\t}\n\n\t// Static methods\n\tstatic getInstance(target: HTMLElement | string, isInstance?: boolean) {\n\t\tconst elInCollection = window.$hsComboBoxCollection.find(\n\t\t\t(el) =>\n\t\t\t\tel.element.el ===\n\t\t\t\t(typeof target === 'string' ? document.querySelector(target) : target),\n\t\t);\n\n\t\treturn elInCollection\n\t\t\t? isInstance\n\t\t\t\t? elInCollection\n\t\t\t\t: elInCollection.element\n\t\t\t: null;\n\t}\n\n\tstatic autoInit() {\n\t\tif (!window.$hsComboBoxCollection) window.$hsComboBoxCollection = [];\n\n\t\tdocument\n\t\t\t.querySelectorAll('[data-hs-combo-box]:not(.--prevent-on-load-init)')\n\t\t\t.forEach((el: HTMLElement) => {\n\t\t\t\tif (\n\t\t\t\t\t!window.$hsComboBoxCollection.find(\n\t\t\t\t\t\t(elC) => (elC?.element?.el as HTMLElement) === el,\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tconst data = el.getAttribute('data-hs-combo-box');\n\t\t\t\t\tconst options: IComboBoxOptions = data ? JSON.parse(data) : {};\n\n\t\t\t\t\tnew HSComboBox(el, options);\n\t\t\t\t}\n\t\t\t});\n\n\t\tif (window.$hsComboBoxCollection) {\n\t\t\twindow.addEventListener('click', (evt) => {\n\t\t\t\tconst evtTarget = evt.target;\n\n\t\t\t\tHSComboBox.closeCurrentlyOpened(evtTarget as HTMLElement);\n\t\t\t});\n\n\t\t\tdocument.addEventListener('keydown', (evt) =>\n\t\t\t\tHSComboBox.accessibility(evt),\n\t\t\t);\n\t\t}\n\t}\n\n\tstatic close(target: HTMLElement | string) {\n\t\tconst elInCollection = window.$hsComboBoxCollection.find(\n\t\t\t(el) =>\n\t\t\t\tel.element.el ===\n\t\t\t\t(typeof target === 'string' ? document.querySelector(target) : target),\n\t\t);\n\n\t\tif (elInCollection && elInCollection.element.isOpened) {\n\t\t\telInCollection.element.close();\n\t\t}\n\t}\n\n\tstatic closeCurrentlyOpened(evtTarget: HTMLElement | null = null) {\n\t\tif (!evtTarget.closest('[data-hs-combo-box].active')) {\n\t\t\tconst currentlyOpened =\n\t\t\t\twindow.$hsComboBoxCollection.filter((el) => el.element.isOpened) ||\n\t\t\t\tnull;\n\n\t\t\tif (currentlyOpened) {\n\t\t\t\tcurrentlyOpened.forEach((el) => {\n\t\t\t\t\tel.element.close();\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\t// Accessibility methods\n\tprivate static getPreparedItems(\n\t\tisReversed = false,\n\t\toutput: HTMLElement | null,\n\t): Element[] | null {\n\t\tif (!output) return null;\n\n\t\tconst preparedItems = isReversed\n\t\t\t? Array.from(\n\t\t\t\t\toutput.querySelectorAll(':scope > *:not(.--exclude-accessibility)'),\n\t\t\t\t)\n\t\t\t\t\t.filter((el) => (el as HTMLElement).style.display !== 'none')\n\t\t\t\t\t.reverse()\n\t\t\t: Array.from(\n\t\t\t\t\toutput.querySelectorAll(':scope > *:not(.--exclude-accessibility)'),\n\t\t\t\t).filter((el) => (el as HTMLElement).style.display !== 'none');\n\t\tconst items = preparedItems.filter(\n\t\t\t(el: any) => !el.classList.contains('disabled'),\n\t\t);\n\n\t\treturn items;\n\t}\n\n\tprivate static setHighlighted(\n\t\tprev: Element,\n\t\tcurrent: HTMLElement,\n\t\tinput: HTMLInputElement,\n\t): void {\n\t\tcurrent.focus();\n\n\t\tinput.value = current\n\t\t\t.querySelector('[data-hs-combo-box-value]')\n\t\t\t.getAttribute('data-hs-combo-box-search-text');\n\n\t\tif (prev) prev.classList.remove('hs-combo-box-output-item-highlighted');\n\t\tcurrent.classList.add('hs-combo-box-output-item-highlighted');\n\t}\n\n\tstatic accessibility(evt: KeyboardEvent) {\n\t\tconst target = window.$hsComboBoxCollection.find((el) =>\n\t\t\tel.element.preventVisibility ? el.element.isCurrent : el.element.isOpened,\n\t\t);\n\n\t\tif (\n\t\t\ttarget &&\n\t\t\tCOMBO_BOX_ACCESSIBILITY_KEY_SET.includes(evt.code) &&\n\t\t\t!evt.metaKey\n\t\t) {\n\t\t\tswitch (evt.code) {\n\t\t\t\tcase 'Escape':\n\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\tthis.onEscape();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ArrowUp':\n\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\tevt.stopImmediatePropagation();\n\t\t\t\t\tthis.onArrow();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ArrowDown':\n\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\tevt.stopImmediatePropagation();\n\t\t\t\t\tthis.onArrow(false);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'Home':\n\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\tevt.stopImmediatePropagation();\n\t\t\t\t\tthis.onStartEnd();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'End':\n\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\tevt.stopImmediatePropagation();\n\t\t\t\t\tthis.onStartEnd(false);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'Enter':\n\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\tthis.onEnter(evt);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tstatic onEscape() {\n\t\tconst target = window.$hsComboBoxCollection.find(\n\t\t\t(el) => !el.element.preventVisibility && el.element.isOpened,\n\t\t);\n\n\t\tif (target) {\n\t\t\ttarget.element.close();\n\t\t\ttarget.element.input.blur();\n\t\t}\n\t}\n\n\tstatic onArrow(isArrowUp = true) {\n\t\tconst target = window.$hsComboBoxCollection.find((el) =>\n\t\t\tel.element.preventVisibility ? el.element.isCurrent : el.element.isOpened,\n\t\t);\n\n\t\tif (target) {\n\t\t\tconst output = target.element.itemsWrapper ?? target.element.output;\n\n\t\t\tif (!output) return false;\n\n\t\t\tconst items = HSComboBox.getPreparedItems(isArrowUp, output) as Element[];\n\t\t\tconst current = output.querySelector(\n\t\t\t\t'.hs-combo-box-output-item-highlighted',\n\t\t\t);\n\t\t\tlet currentItem = null;\n\t\t\tif (!current)\n\t\t\t\titems[0].classList.add('hs-combo-box-output-item-highlighted');\n\t\t\tlet currentInd = items.findIndex((el: any) => el === current);\n\t\t\tif (currentInd + 1 < items.length) currentInd++;\n\t\t\tcurrentItem = items[currentInd] as HTMLButtonElement;\n\n\t\t\tHSComboBox.setHighlighted(current, currentItem, target.element.input);\n\t\t}\n\t}\n\n\tstatic onStartEnd(isStart = true) {\n\t\tconst target = window.$hsComboBoxCollection.find((el) =>\n\t\t\tel.element.preventVisibility ? el.element.isCurrent : el.element.isOpened,\n\t\t);\n\n\t\tif (target) {\n\t\t\tconst output = target.element.itemsWrapper ?? target.element.output;\n\n\t\t\tif (!output) return false;\n\n\t\t\tconst items = HSComboBox.getPreparedItems(isStart, output) as Element[];\n\t\t\tconst current = output.querySelector(\n\t\t\t\t'.hs-combo-box-output-item-highlighted',\n\t\t\t);\n\n\t\t\tif (items.length)\n\t\t\t\tHSComboBox.setHighlighted(\n\t\t\t\t\tcurrent,\n\t\t\t\t\titems[0] as HTMLButtonElement,\n\t\t\t\t\ttarget.element.input,\n\t\t\t\t);\n\t\t}\n\t}\n\n\tstatic onEnter(evt: Event) {\n\t\tconst target = evt.target;\n\t\tconst opened = window.$hsComboBoxCollection.find(\n\t\t\t(el) =>\n\t\t\t\t!isParentOrElementHidden(el.element.el) &&\n\t\t\t\t(evt.target as HTMLElement).closest('[data-hs-combo-box]') ===\n\t\t\t\t\tel.element.el,\n\t\t);\n\n\t\tconst link: HTMLAnchorElement = opened.element.el.querySelector(\n\t\t\t'.hs-combo-box-output-item-highlighted a',\n\t\t);\n\n\t\tif ((target as HTMLElement).hasAttribute('data-hs-combo-box-input')) {\n\t\t\topened.element.close();\n\t\t\t(target as HTMLInputElement).blur();\n\t\t} else {\n\t\t\tif (!opened.element.preventSelection) {\n\t\t\t\topened.element.setSelectedByValue(\n\t\t\t\t\topened.element.valuesBySelector(evt.target as HTMLElement),\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (opened.element.preventSelection && link) {\n\t\t\t\twindow.location.assign(link.getAttribute('href'));\n\t\t\t}\n\t\t\topened.element.close(\n\t\t\t\t!opened.element.preventSelection\n\t\t\t\t\t? (evt.target as HTMLElement)\n\t\t\t\t\t\t\t.querySelector('[data-hs-combo-box-value]')\n\t\t\t\t\t\t\t.getAttribute('data-hs-combo-box-search-text')\n\t\t\t\t\t: null,\n\t\t\t);\n\t\t}\n\t}\n}\n\ndeclare global {\n\tinterface Window {\n\t\tHSComboBox: Function;\n\t\t$hsComboBoxCollection: ICollectionItem[];\n\t}\n}\n\nwindow.addEventListener('load', () => {\n\tHSComboBox.autoInit();\n\n\t// Uncomment for debug\n\t// console.log('ComboBox collection:', window.$hsComboBoxCollection);\n});\n\ndocument.addEventListener('scroll', () => {\n\tif (!window.$hsComboBoxCollection) return false;\n\n\tconst target = window.$hsComboBoxCollection.find((el) => el.element.isOpened);\n\n\tif (target && !target.element.preventAutoPosition)\n\t\ttarget.element.recalculateDirection();\n});\n\nif (typeof window !== 'undefined') {\n\twindow.HSComboBox = HSComboBox;\n}\n\nexport default HSComboBox;\n","\"use strict\";\n/*\n * HSCopyMarkup\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../../utils\");\nvar base_plugin_1 = __importDefault(require(\"../base-plugin\"));\nvar HSCopyMarkup = /** @class */ (function (_super) {\n __extends(HSCopyMarkup, _super);\n function HSCopyMarkup(el, options) {\n var _this = _super.call(this, el, options) || this;\n var data = el.getAttribute('data-hs-copy-markup');\n var dataOptions = data ? JSON.parse(data) : {};\n var concatOptions = __assign(__assign({}, dataOptions), options);\n _this.targetSelector = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.targetSelector) || null;\n _this.wrapperSelector = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.wrapperSelector) || null;\n _this.limit = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.limit) || null;\n _this.items = [];\n if (_this.targetSelector)\n _this.init();\n return _this;\n }\n HSCopyMarkup.prototype.init = function () {\n var _this = this;\n this.createCollection(window.$hsCopyMarkupCollection, this);\n this.setTarget();\n this.setWrapper();\n this.addPredefinedItems();\n this.el.addEventListener('click', function () { return _this.copy(); });\n };\n HSCopyMarkup.prototype.copy = function () {\n if (this.limit && this.items.length >= this.limit)\n return false;\n if (this.el.hasAttribute('disabled'))\n this.el.setAttribute('disabled', '');\n var copiedElement = this.target.cloneNode(true);\n this.addToItems(copiedElement);\n if (this.limit && this.items.length >= this.limit)\n this.el.setAttribute('disabled', 'disabled');\n this.fireEvent('copy', copiedElement);\n (0, utils_1.dispatch)('copy.hs.copyMarkup', copiedElement, copiedElement);\n };\n HSCopyMarkup.prototype.addPredefinedItems = function () {\n var _this = this;\n Array.from(this.wrapper.children)\n .filter(function (el) { return !el.classList.contains('[--ignore-for-count]'); })\n .forEach(function (el) {\n _this.addToItems(el);\n });\n };\n HSCopyMarkup.prototype.setTarget = function () {\n var target = typeof this.targetSelector === 'string'\n ? document\n .querySelector(this.targetSelector)\n .cloneNode(true)\n : this.targetSelector.cloneNode(true);\n target.removeAttribute('id');\n this.target = target;\n };\n HSCopyMarkup.prototype.setWrapper = function () {\n this.wrapper =\n typeof this.wrapperSelector === 'string'\n ? document.querySelector(this.wrapperSelector)\n : this.wrapperSelector;\n };\n HSCopyMarkup.prototype.addToItems = function (item) {\n var _this = this;\n var deleteItemButton = item.querySelector('[data-hs-copy-markup-delete-item]');\n if (this.wrapper)\n this.wrapper.append(item);\n else\n this.el.before(item);\n if (deleteItemButton)\n deleteItemButton.addEventListener('click', function () { return _this.delete(item); });\n this.items.push(item);\n };\n // Public methods\n HSCopyMarkup.prototype.delete = function (target) {\n var index = this.items.indexOf(target);\n if (index !== -1)\n this.items.splice(index, 1);\n target.remove();\n this.fireEvent('delete', target);\n (0, utils_1.dispatch)('delete.hs.copyMarkup', target, target);\n };\n // Static method\n HSCopyMarkup.getInstance = function (target, isInstance) {\n var elInCollection = window.$hsCopyMarkupCollection.find(function (el) {\n return el.element.el ===\n (typeof target === 'string' ? document.querySelector(target) : target);\n });\n return elInCollection\n ? isInstance\n ? elInCollection\n : elInCollection.element\n : null;\n };\n HSCopyMarkup.autoInit = function () {\n if (!window.$hsCopyMarkupCollection)\n window.$hsCopyMarkupCollection = [];\n document\n .querySelectorAll('[data-hs-copy-markup]:not(.--prevent-on-load-init)')\n .forEach(function (el) {\n if (!window.$hsCopyMarkupCollection.find(function (elC) { var _a; return ((_a = elC === null || elC === void 0 ? void 0 : elC.element) === null || _a === void 0 ? void 0 : _a.el) === el; })) {\n var data = el.getAttribute('data-hs-copy-markup');\n var options = data ? JSON.parse(data) : {};\n new HSCopyMarkup(el, options);\n }\n });\n };\n return HSCopyMarkup;\n}(base_plugin_1.default));\nwindow.addEventListener('load', function () {\n HSCopyMarkup.autoInit();\n // Uncomment for debug\n // console.log('Copy markup collection:', window.$hsCopyMarkupCollection);\n});\nif (typeof window !== 'undefined') {\n window.HSCopyMarkup = HSCopyMarkup;\n}\nexports.default = HSCopyMarkup;\n","/*\n * HSCopyMarkup\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\n\nimport { dispatch } from '../../utils';\n\nimport {\n\tICopyMarkupOptions,\n\tICopyMarkup,\n} from '../copy-markup/interfaces';\n\nimport HSBasePlugin from '../base-plugin';\nimport { ICollectionItem } from '../../interfaces';\n\nclass HSCopyMarkup\n\textends HSBasePlugin\n\timplements ICopyMarkup\n{\n\tprivate readonly targetSelector: string | null;\n\tprivate readonly wrapperSelector: string | null;\n\tprivate readonly limit: number | null;\n\n\tprivate target: HTMLElement | null;\n\tprivate wrapper: HTMLElement | null;\n\tprivate items: HTMLElement[] | null;\n\n\tconstructor(el: HTMLElement, options?: ICopyMarkupOptions) {\n\t\tsuper(el, options);\n\n\t\tconst data = el.getAttribute('data-hs-copy-markup');\n\t\tconst dataOptions: ICopyMarkupOptions = data ? JSON.parse(data) : {};\n\t\tconst concatOptions = {\n\t\t\t...dataOptions,\n\t\t\t...options,\n\t\t};\n\n\t\tthis.targetSelector = concatOptions?.targetSelector || null;\n\t\tthis.wrapperSelector = concatOptions?.wrapperSelector || null;\n\t\tthis.limit = concatOptions?.limit || null;\n\t\tthis.items = [];\n\n\t\tif (this.targetSelector) this.init();\n\t}\n\n\tprivate init() {\n\t\tthis.createCollection(window.$hsCopyMarkupCollection, this);\n\n\t\tthis.setTarget();\n\t\tthis.setWrapper();\n\t\tthis.addPredefinedItems();\n\t\tthis.el.addEventListener('click', () => this.copy());\n\t}\n\n\tprivate copy() {\n\t\tif (this.limit && this.items.length >= this.limit) return false;\n\n\t\tif (this.el.hasAttribute('disabled')) this.el.setAttribute('disabled', '');\n\n\t\tconst copiedElement = this.target.cloneNode(true) as HTMLElement;\n\n\t\tthis.addToItems(copiedElement);\n\n\t\tif (this.limit && this.items.length >= this.limit)\n\t\t\tthis.el.setAttribute('disabled', 'disabled');\n\n\t\tthis.fireEvent('copy', copiedElement);\n\t\tdispatch('copy.hs.copyMarkup', copiedElement, copiedElement);\n\t}\n\n\tprivate addPredefinedItems() {\n\t\tArray.from(this.wrapper.children)\n\t\t\t.filter(\n\t\t\t\t(el: HTMLElement) => !el.classList.contains('[--ignore-for-count]'),\n\t\t\t)\n\t\t\t.forEach((el: HTMLElement) => {\n\t\t\t\tthis.addToItems(el);\n\t\t\t});\n\t}\n\n\tprivate setTarget() {\n\t\tconst target: HTMLElement =\n\t\t\ttypeof this.targetSelector === 'string'\n\t\t\t\t? (document\n\t\t\t\t\t\t.querySelector(this.targetSelector)\n\t\t\t\t\t\t.cloneNode(true) as HTMLElement)\n\t\t\t\t: ((this.targetSelector as HTMLElement).cloneNode(true) as HTMLElement);\n\n\t\ttarget.removeAttribute('id');\n\n\t\tthis.target = target;\n\t}\n\n\tprivate setWrapper() {\n\t\tthis.wrapper =\n\t\t\ttypeof this.wrapperSelector === 'string'\n\t\t\t\t? document.querySelector(this.wrapperSelector)\n\t\t\t\t: this.wrapperSelector;\n\t}\n\n\tprivate addToItems(item: HTMLElement) {\n\t\tconst deleteItemButton = item.querySelector(\n\t\t\t'[data-hs-copy-markup-delete-item]',\n\t\t);\n\n\t\tif (this.wrapper) this.wrapper.append(item);\n\t\telse this.el.before(item);\n\n\t\tif (deleteItemButton)\n\t\t\tdeleteItemButton.addEventListener('click', () => this.delete(item));\n\n\t\tthis.items.push(item);\n\t}\n\n\t// Public methods\n\tpublic delete(target: HTMLElement) {\n\t\tconst index = this.items.indexOf(target);\n\n\t\tif (index !== -1) this.items.splice(index, 1);\n\n\t\ttarget.remove();\n\n\t\tthis.fireEvent('delete', target);\n\t\tdispatch('delete.hs.copyMarkup', target, target);\n\t}\n\n\t// Static method\n\tstatic getInstance(target: HTMLElement | string, isInstance?: boolean) {\n\t\tconst elInCollection = window.$hsCopyMarkupCollection.find(\n\t\t\t(el) =>\n\t\t\t\tel.element.el ===\n\t\t\t\t(typeof target === 'string' ? document.querySelector(target) : target),\n\t\t);\n\n\t\treturn elInCollection\n\t\t\t? isInstance\n\t\t\t\t? elInCollection\n\t\t\t\t: elInCollection.element\n\t\t\t: null;\n\t}\n\n\tstatic autoInit() {\n\t\tif (!window.$hsCopyMarkupCollection) window.$hsCopyMarkupCollection = [];\n\n\t\tdocument\n\t\t\t.querySelectorAll('[data-hs-copy-markup]:not(.--prevent-on-load-init)')\n\t\t\t.forEach((el: HTMLElement) => {\n\t\t\t\tif (\n\t\t\t\t\t!window.$hsCopyMarkupCollection.find(\n\t\t\t\t\t\t(elC) => (elC?.element?.el as HTMLElement) === el,\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tconst data = el.getAttribute('data-hs-copy-markup');\n\t\t\t\t\tconst options: ICopyMarkupOptions = data ? JSON.parse(data) : {};\n\n\t\t\t\t\tnew HSCopyMarkup(el, options);\n\t\t\t\t}\n\t\t\t});\n\t}\n}\n\ndeclare global {\n\tinterface Window {\n\t\tHSCopyMarkup: Function;\n\t\t$hsCopyMarkupCollection: ICollectionItem[];\n\t}\n}\n\nwindow.addEventListener('load', () => {\n\tHSCopyMarkup.autoInit();\n\n\t// Uncomment for debug\n\t// console.log('Copy markup collection:', window.$hsCopyMarkupCollection);\n});\n\nif (typeof window !== 'undefined') {\n\twindow.HSCopyMarkup = HSCopyMarkup;\n}\n\nexport default HSCopyMarkup;\n","\"use strict\";\n/*\n * HSDataTable\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../../utils\");\nvar base_plugin_1 = __importDefault(require(\"../base-plugin\"));\nvar HSDataTable = /** @class */ (function (_super) {\n __extends(HSDataTable, _super);\n function HSDataTable(el, options, events) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0;\n var _this = _super.call(this, el, options, events) || this;\n _this.el = typeof el === 'string' ? document.querySelector(el) : el;\n // Exclude columns from ordering\n var columnDefs = [];\n Array.from(_this.el.querySelectorAll('thead th, thead td')).forEach(function (th, ind) {\n if (th.classList.contains('--exclude-from-ordering'))\n columnDefs.push({\n targets: ind,\n orderable: false,\n });\n });\n var data = _this.el.getAttribute('data-hs-datatable');\n var dataOptions = data ? JSON.parse(data) : {};\n _this.concatOptions = __assign(__assign({ searching: true, lengthChange: false, order: [], columnDefs: __spreadArray([], columnDefs, true) }, dataOptions), options);\n _this.table = _this.el.querySelector('table');\n _this.search = (_a = _this.el.querySelector('[data-hs-datatable-search]')) !== null && _a !== void 0 ? _a : null;\n _this.pageEntities =\n (_b = _this.el.querySelector('[data-hs-datatable-page-entities]')) !== null && _b !== void 0 ? _b : null;\n _this.paging = (_c = _this.el.querySelector('[data-hs-datatable-paging]')) !== null && _c !== void 0 ? _c : null;\n _this.pagingPrev =\n (_d = _this.el.querySelector('[data-hs-datatable-paging-prev]')) !== null && _d !== void 0 ? _d : null;\n _this.pagingNext =\n (_e = _this.el.querySelector('[data-hs-datatable-paging-next]')) !== null && _e !== void 0 ? _e : null;\n _this.pagingPages =\n (_f = _this.el.querySelector('[data-hs-datatable-paging-pages]')) !== null && _f !== void 0 ? _f : null;\n _this.info = (_g = _this.el.querySelector('[data-hs-datatable-info]')) !== null && _g !== void 0 ? _g : null;\n _this.infoFrom =\n (_h = _this.el.querySelector('[data-hs-datatable-info-from]')) !== null && _h !== void 0 ? _h : null;\n _this.infoTo = (_j = _this.el.querySelector('[data-hs-datatable-info-to]')) !== null && _j !== void 0 ? _j : null;\n _this.infoLength =\n (_k = _this.el.querySelector('[data-hs-datatable-info-length]')) !== null && _k !== void 0 ? _k : null;\n if ((_l = _this.concatOptions) === null || _l === void 0 ? void 0 : _l.rowSelectingOptions)\n _this.rowSelectingAll =\n (_r = (((_o = (_m = _this.concatOptions) === null || _m === void 0 ? void 0 : _m.rowSelectingOptions) === null || _o === void 0 ? void 0 : _o.selectAllSelector)\n ? document.querySelector((_q = (_p = _this.concatOptions) === null || _p === void 0 ? void 0 : _p.rowSelectingOptions) === null || _q === void 0 ? void 0 : _q.selectAllSelector)\n : document.querySelector('[data-hs-datatable-row-selecting-all]'))) !== null && _r !== void 0 ? _r : null;\n if ((_s = _this.concatOptions) === null || _s === void 0 ? void 0 : _s.rowSelectingOptions)\n _this.rowSelectingIndividual =\n (_w = (_v = (_u = (_t = _this.concatOptions) === null || _t === void 0 ? void 0 : _t.rowSelectingOptions) === null || _u === void 0 ? void 0 : _u.individualSelector) !== null && _v !== void 0 ? _v : '[data-hs-datatable-row-selecting-individual]') !== null && _w !== void 0 ? _w : null;\n if (_this.pageEntities)\n _this.concatOptions.pageLength = parseInt(_this.pageEntities.value);\n _this.maxPagesToShow = 3;\n _this.isRowSelecting = !!((_x = _this.concatOptions) === null || _x === void 0 ? void 0 : _x.rowSelectingOptions);\n _this.pageBtnClasses =\n (_0 = (_z = (_y = _this.concatOptions) === null || _y === void 0 ? void 0 : _y.pagingOptions) === null || _z === void 0 ? void 0 : _z.pageBtnClasses) !== null && _0 !== void 0 ? _0 : null;\n _this.init();\n return _this;\n }\n HSDataTable.prototype.init = function () {\n this.createCollection(window.$hsDataTableCollection, this);\n this.initTable();\n if (this.search)\n this.initSearch();\n if (this.pageEntities)\n this.initPageEntities();\n if (this.paging)\n this.initPaging();\n if (this.pagingPrev)\n this.initPagingPrev();\n if (this.pagingNext)\n this.initPagingNext();\n if (this.pagingPages)\n this.buildPagingPages();\n if (this.info)\n this.initInfo();\n if (this.isRowSelecting)\n this.initRowSelecting();\n };\n HSDataTable.prototype.initTable = function () {\n var _this = this;\n this.dataTable = new DataTable(this.table, this.concatOptions);\n if (this.isRowSelecting)\n this.triggerChangeEventToRow();\n this.dataTable.on('draw', function () {\n if (_this.isRowSelecting)\n _this.updateSelectAllCheckbox();\n if (_this.isRowSelecting)\n _this.triggerChangeEventToRow();\n _this.updateInfo();\n _this.updatePaging();\n });\n };\n // Search\n HSDataTable.prototype.initSearch = function () {\n var _this = this;\n this.search.addEventListener('input', (0, utils_1.debounce)(function (evt) {\n return _this.onSearchInput(evt.target.value);\n }));\n };\n HSDataTable.prototype.onSearchInput = function (val) {\n this.dataTable.search(val).draw();\n };\n // Page entities\n HSDataTable.prototype.initPageEntities = function () {\n var _this = this;\n this.pageEntities.addEventListener('change', function (evt) {\n return _this.onEntitiesChange(parseInt(evt.target.value));\n });\n };\n HSDataTable.prototype.onEntitiesChange = function (entities) {\n this.dataTable.page.len(entities).draw();\n };\n // Info\n HSDataTable.prototype.initInfo = function () {\n if (this.infoFrom)\n this.initInfoFrom();\n if (this.infoTo)\n this.initInfoTo();\n if (this.infoLength)\n this.initInfoLength();\n };\n HSDataTable.prototype.initInfoFrom = function () {\n var start = this.dataTable.page.info().start;\n this.infoFrom.innerText = \"\".concat(start + 1);\n };\n HSDataTable.prototype.initInfoTo = function () {\n var end = this.dataTable.page.info().end;\n this.infoTo.innerText = \"\".concat(end);\n };\n HSDataTable.prototype.initInfoLength = function () {\n var recordsTotal = this.dataTable.page.info().recordsTotal;\n this.infoLength.innerText = \"\".concat(recordsTotal);\n };\n HSDataTable.prototype.updateInfo = function () {\n this.initInfo();\n };\n // Paging\n HSDataTable.prototype.initPaging = function () {\n this.hidePagingIfSinglePage();\n };\n HSDataTable.prototype.hidePagingIfSinglePage = function () {\n var pages = this.dataTable.page.info().pages;\n if (pages < 2) {\n this.paging.classList.add('hidden');\n this.paging.style.display = 'none';\n }\n else {\n this.paging.classList.remove('hidden');\n this.paging.style.display = '';\n }\n };\n HSDataTable.prototype.initPagingPrev = function () {\n var _this = this;\n this.pagingPrev.addEventListener('click', function () {\n _this.onPrevClick();\n });\n };\n HSDataTable.prototype.onPrevClick = function () {\n this.dataTable.page('previous').draw('page');\n };\n HSDataTable.prototype.disablePagingArrow = function (el, statement) {\n if (statement) {\n el.classList.add('disabled');\n el.setAttribute('disabled', 'disabled');\n }\n else {\n el.classList.remove('disabled');\n el.removeAttribute('disabled');\n }\n };\n HSDataTable.prototype.initPagingNext = function () {\n var _this = this;\n this.pagingNext.addEventListener('click', function () {\n _this.onNextClick();\n });\n };\n HSDataTable.prototype.onNextClick = function () {\n this.dataTable.page('next').draw('page');\n };\n HSDataTable.prototype.buildPagingPages = function () {\n this.updatePaging();\n };\n HSDataTable.prototype.updatePaging = function () {\n var _a = this.dataTable.page.info(), page = _a.page, pages = _a.pages, length = _a.length;\n var totalRecords = this.dataTable.rows({ search: 'applied' }).count();\n var totalPages = Math.ceil(totalRecords / length);\n var currentPage = page + 1;\n var startPage = Math.max(1, currentPage - Math.floor(this.maxPagesToShow / 2));\n var endPage = Math.min(totalPages, startPage + (this.maxPagesToShow - 1));\n if (endPage - startPage + 1 < this.maxPagesToShow) {\n startPage = Math.max(1, endPage - this.maxPagesToShow + 1);\n }\n this.pagingPages.innerHTML = '';\n if (startPage > 1) {\n this.buildPagingPage(1);\n if (startPage > 2) {\n this.pagingPages.appendChild((0, utils_1.htmlToElement)(\"...\"));\n }\n }\n for (var i = startPage; i <= endPage; i++) {\n this.buildPagingPage(i);\n }\n if (endPage < totalPages) {\n if (endPage < totalPages - 1) {\n this.pagingPages.appendChild((0, utils_1.htmlToElement)(\"...\"));\n }\n this.buildPagingPage(totalPages);\n }\n this.disablePagingArrow(this.pagingPrev, page === 0);\n this.disablePagingArrow(this.pagingNext, page === pages - 1);\n this.hidePagingIfSinglePage();\n };\n HSDataTable.prototype.buildPagingPage = function (counter) {\n var _this = this;\n var page = this.dataTable.page.info().page;\n var pageEl = (0, utils_1.htmlToElement)(\"\");\n pageEl.innerText = \"\".concat(counter);\n pageEl.setAttribute('data-page', \"\".concat(counter));\n if (this.pageBtnClasses)\n (0, utils_1.classToClassList)(this.pageBtnClasses, pageEl);\n if (page === counter - 1)\n pageEl.classList.add('active');\n pageEl.addEventListener('click', function () { return _this.onPageClick(counter); });\n this.pagingPages.append(pageEl);\n };\n HSDataTable.prototype.onPageClick = function (counter) {\n this.dataTable.page(counter - 1).draw('page');\n };\n // Select row\n HSDataTable.prototype.initRowSelecting = function () {\n var _this = this;\n this.rowSelectingAll.addEventListener('change', function () {\n return _this.onSelectAllChange();\n });\n };\n HSDataTable.prototype.triggerChangeEventToRow = function () {\n var _this = this;\n this.table\n .querySelectorAll(\"tbody \".concat(this.rowSelectingIndividual))\n .forEach(function (el) {\n el.addEventListener('change', function () {\n _this.updateSelectAllCheckbox();\n });\n });\n };\n HSDataTable.prototype.onSelectAllChange = function () {\n var _this = this;\n var isChecked = this.rowSelectingAll.checked;\n var visibleRows = Array.from(this.dataTable.rows({ page: 'current', search: 'applied' }).nodes());\n visibleRows.forEach(function (el) {\n var checkbox = el.querySelector(_this.rowSelectingIndividual);\n if (checkbox)\n checkbox.checked = isChecked;\n });\n this.updateSelectAllCheckbox();\n };\n HSDataTable.prototype.updateSelectAllCheckbox = function () {\n var _this = this;\n var searchRelatedItems = this.dataTable\n .rows({ search: 'applied' })\n .count();\n if (!searchRelatedItems) {\n this.rowSelectingAll.checked = false;\n return false;\n }\n var isChecked = true;\n var visibleRows = Array.from(this.dataTable\n .rows({\n page: 'current',\n search: 'applied',\n })\n .nodes());\n visibleRows.forEach(function (el) {\n var checkbox = el.querySelector(_this.rowSelectingIndividual);\n if (checkbox && !checkbox.checked) {\n isChecked = false;\n return false;\n }\n });\n this.rowSelectingAll.checked = isChecked;\n };\n // Static methods\n HSDataTable.getInstance = function (target, isInstance) {\n var elInCollection = window.$hsDataTableCollection.find(function (el) {\n return el.element.el ===\n (typeof target === 'string' ? document.querySelector(target) : target);\n });\n return elInCollection\n ? isInstance\n ? elInCollection\n : elInCollection.element.el\n : null;\n };\n HSDataTable.autoInit = function () {\n if (!window.$hsDataTableCollection)\n window.$hsDataTableCollection = [];\n document\n .querySelectorAll('[data-hs-datatable]:not(.--prevent-on-load-init)')\n .forEach(function (el) {\n if (!window.$hsDataTableCollection.find(function (elC) { var _a; return ((_a = elC === null || elC === void 0 ? void 0 : elC.element) === null || _a === void 0 ? void 0 : _a.el) === el; }))\n new HSDataTable(el);\n });\n };\n return HSDataTable;\n}(base_plugin_1.default));\nwindow.addEventListener('load', function () {\n if (document.querySelectorAll('[data-hs-datatable]:not(.--prevent-on-load-init)').length) {\n if (typeof jQuery === 'undefined')\n console.error('HSDataTable: jQuery is not available, please add it to the page.');\n if (typeof DataTable === 'undefined')\n console.error('HSDataTable: DataTable is not available, please add it to the page.');\n }\n if (typeof DataTable !== 'undefined' && typeof jQuery !== 'undefined')\n HSDataTable.autoInit();\n // Uncomment for debug\n // console.log('Datatable collection:', window.$hsDataTableCollection);\n});\nif (typeof window !== 'undefined') {\n window.HSDataTable = HSDataTable;\n}\nexports.default = HSDataTable;\n","/*\n * HSDataTable\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\n\nimport { Api } from 'datatables.net';\n\nimport { debounce, htmlToElement, classToClassList } from '../../utils';\n\nimport { IDataTableOptions, IDataTable } from '../datatable/interfaces';\n\nimport HSBasePlugin from '../base-plugin';\nimport { ICollectionItem } from '../../interfaces';\n\ndeclare var DataTable: any;\n\ninterface IColumnDef {\n\ttargets: number;\n\torderable: boolean;\n}\n\nclass HSDataTable\n\textends HSBasePlugin\n\timplements IDataTable\n{\n\tprivate concatOptions: IDataTableOptions;\n\n\tprivate dataTable: Api;\n\n\tprivate readonly table: HTMLTableElement;\n\n\tprivate readonly search: HTMLElement | null;\n\n\tprivate readonly pageEntities: HTMLSelectElement | HTMLInputElement | null;\n\n\tprivate readonly paging: HTMLElement | null;\n\tprivate readonly pagingPrev: HTMLElement | null;\n\tprivate readonly pagingNext: HTMLElement | null;\n\tprivate readonly pagingPages: HTMLElement | null;\n\n\tprivate readonly info: HTMLElement | null;\n\tprivate readonly infoFrom: HTMLElement | null;\n\tprivate readonly infoTo: HTMLElement | null;\n\tprivate readonly infoLength: HTMLElement | null;\n\n\tprivate rowSelectingAll: HTMLElement | null;\n\tprivate rowSelectingIndividual: string | null;\n\n\tprivate maxPagesToShow: number;\n\tprivate isRowSelecting: boolean;\n\tprivate readonly pageBtnClasses: string | null;\n\n\tconstructor(el: HTMLElement, options?: IDataTableOptions, events?: {}) {\n\t\tsuper(el, options, events);\n\n\t\tthis.el = typeof el === 'string' ? document.querySelector(el) : el;\n\n\t\t// Exclude columns from ordering\n\t\tconst columnDefs: IColumnDef[] = [];\n\t\tArray.from(this.el.querySelectorAll('thead th, thead td')).forEach(\n\t\t\t(th: HTMLElement, ind: number) => {\n\t\t\t\tif (th.classList.contains('--exclude-from-ordering'))\n\t\t\t\t\tcolumnDefs.push({\n\t\t\t\t\t\ttargets: ind,\n\t\t\t\t\t\torderable: false,\n\t\t\t\t\t});\n\t\t\t},\n\t\t);\n\n\t\tconst data = this.el.getAttribute('data-hs-datatable');\n\t\tconst dataOptions: IDataTableOptions = data ? JSON.parse(data) : {};\n\n\t\tthis.concatOptions = {\n\t\t\tsearching: true,\n\t\t\tlengthChange: false,\n\t\t\torder: [],\n\t\t\tcolumnDefs: [...columnDefs],\n\t\t\t...dataOptions,\n\t\t\t...options,\n\t\t};\n\n\t\tthis.table = this.el.querySelector('table');\n\n\t\tthis.search = this.el.querySelector('[data-hs-datatable-search]') ?? null;\n\n\t\tthis.pageEntities =\n\t\t\tthis.el.querySelector('[data-hs-datatable-page-entities]') ?? null;\n\n\t\tthis.paging = this.el.querySelector('[data-hs-datatable-paging]') ?? null;\n\t\tthis.pagingPrev =\n\t\t\tthis.el.querySelector('[data-hs-datatable-paging-prev]') ?? null;\n\t\tthis.pagingNext =\n\t\t\tthis.el.querySelector('[data-hs-datatable-paging-next]') ?? null;\n\t\tthis.pagingPages =\n\t\t\tthis.el.querySelector('[data-hs-datatable-paging-pages]') ?? null;\n\n\t\tthis.info = this.el.querySelector('[data-hs-datatable-info]') ?? null;\n\t\tthis.infoFrom =\n\t\t\tthis.el.querySelector('[data-hs-datatable-info-from]') ?? null;\n\t\tthis.infoTo = this.el.querySelector('[data-hs-datatable-info-to]') ?? null;\n\t\tthis.infoLength =\n\t\t\tthis.el.querySelector('[data-hs-datatable-info-length]') ?? null;\n\n\t\tif (this.concatOptions?.rowSelectingOptions)\n\t\t\tthis.rowSelectingAll =\n\t\t\t\t(this.concatOptions?.rowSelectingOptions?.selectAllSelector\n\t\t\t\t\t? document.querySelector(\n\t\t\t\t\t\t\tthis.concatOptions?.rowSelectingOptions?.selectAllSelector,\n\t\t\t\t\t\t)\n\t\t\t\t\t: document.querySelector('[data-hs-datatable-row-selecting-all]')) ??\n\t\t\t\tnull;\n\t\tif (this.concatOptions?.rowSelectingOptions)\n\t\t\tthis.rowSelectingIndividual =\n\t\t\t\tthis.concatOptions?.rowSelectingOptions?.individualSelector ??\n\t\t\t\t'[data-hs-datatable-row-selecting-individual]' ??\n\t\t\t\tnull;\n\n\t\tif (this.pageEntities)\n\t\t\tthis.concatOptions.pageLength = parseInt(this.pageEntities.value);\n\n\t\tthis.maxPagesToShow = 3;\n\t\tthis.isRowSelecting = !!this.concatOptions?.rowSelectingOptions;\n\t\tthis.pageBtnClasses =\n\t\t\tthis.concatOptions?.pagingOptions?.pageBtnClasses ?? null;\n\n\t\tthis.init();\n\t}\n\n\tprivate init() {\n\t\tthis.createCollection(window.$hsDataTableCollection, this);\n\n\t\tthis.initTable();\n\n\t\tif (this.search) this.initSearch();\n\n\t\tif (this.pageEntities) this.initPageEntities();\n\n\t\tif (this.paging) this.initPaging();\n\t\tif (this.pagingPrev) this.initPagingPrev();\n\t\tif (this.pagingNext) this.initPagingNext();\n\t\tif (this.pagingPages) this.buildPagingPages();\n\n\t\tif (this.info) this.initInfo();\n\n\t\tif (this.isRowSelecting) this.initRowSelecting();\n\t}\n\n\tprivate initTable() {\n\t\tthis.dataTable = new DataTable(this.table, this.concatOptions);\n\n\t\tif (this.isRowSelecting) this.triggerChangeEventToRow();\n\n\t\tthis.dataTable.on('draw', () => {\n\t\t\tif (this.isRowSelecting) this.updateSelectAllCheckbox();\n\t\t\tif (this.isRowSelecting) this.triggerChangeEventToRow();\n\t\t\tthis.updateInfo();\n\t\t\tthis.updatePaging();\n\t\t});\n\t}\n\n\t// Search\n\tprivate initSearch() {\n\t\tthis.search.addEventListener(\n\t\t\t'input',\n\t\t\tdebounce((evt: InputEvent) =>\n\t\t\t\tthis.onSearchInput((evt.target as HTMLInputElement).value),\n\t\t\t),\n\t\t);\n\t}\n\n\tprivate onSearchInput(val: string) {\n\t\tthis.dataTable.search(val).draw();\n\t}\n\n\t// Page entities\n\tprivate initPageEntities() {\n\t\tthis.pageEntities.addEventListener('change', (evt: Event) =>\n\t\t\tthis.onEntitiesChange(parseInt((evt.target as HTMLSelectElement).value)),\n\t\t);\n\t}\n\n\tprivate onEntitiesChange(entities: number) {\n\t\tthis.dataTable.page.len(entities).draw();\n\t}\n\n\t// Info\n\tprivate initInfo() {\n\t\tif (this.infoFrom) this.initInfoFrom();\n\t\tif (this.infoTo) this.initInfoTo();\n\t\tif (this.infoLength) this.initInfoLength();\n\t}\n\n\tprivate initInfoFrom() {\n\t\tconst { start } = this.dataTable.page.info();\n\n\t\tthis.infoFrom.innerText = `${start + 1}`;\n\t}\n\n\tprivate initInfoTo() {\n\t\tconst { end } = this.dataTable.page.info();\n\n\t\tthis.infoTo.innerText = `${end}`;\n\t}\n\n\tprivate initInfoLength() {\n\t\tconst { recordsTotal } = this.dataTable.page.info();\n\n\t\tthis.infoLength.innerText = `${recordsTotal}`;\n\t}\n\n\tprivate updateInfo() {\n\t\tthis.initInfo();\n\t}\n\n\t// Paging\n\tprivate initPaging() {\n\t\tthis.hidePagingIfSinglePage();\n\t}\n\n\tprivate hidePagingIfSinglePage() {\n\t\tconst { pages } = this.dataTable.page.info();\n\n\t\tif (pages < 2) {\n\t\t\tthis.paging.classList.add('hidden');\n\t\t\tthis.paging.style.display = 'none';\n\t\t} else {\n\t\t\tthis.paging.classList.remove('hidden');\n\t\t\tthis.paging.style.display = '';\n\t\t}\n\t}\n\n\tprivate initPagingPrev() {\n\t\tthis.pagingPrev.addEventListener('click', () => {\n\t\t\tthis.onPrevClick();\n\t\t});\n\t}\n\n\tprivate onPrevClick() {\n\t\tthis.dataTable.page('previous').draw('page');\n\t}\n\n\tprivate disablePagingArrow(el: HTMLElement, statement: boolean) {\n\t\tif (statement) {\n\t\t\tel.classList.add('disabled');\n\t\t\tel.setAttribute('disabled', 'disabled');\n\t\t} else {\n\t\t\tel.classList.remove('disabled');\n\t\t\tel.removeAttribute('disabled');\n\t\t}\n\t}\n\n\tprivate initPagingNext() {\n\t\tthis.pagingNext.addEventListener('click', () => {\n\t\t\tthis.onNextClick();\n\t\t});\n\t}\n\n\tprivate onNextClick() {\n\t\tthis.dataTable.page('next').draw('page');\n\t}\n\n\tprivate buildPagingPages() {\n\t\tthis.updatePaging();\n\t}\n\n\tprivate updatePaging() {\n\t\tconst { page, pages, length } = this.dataTable.page.info();\n\t\tconst totalRecords = this.dataTable.rows({ search: 'applied' }).count();\n\t\tconst totalPages = Math.ceil(totalRecords / length);\n\t\tconst currentPage = page + 1;\n\n\t\tlet startPage = Math.max(\n\t\t\t1,\n\t\t\tcurrentPage - Math.floor(this.maxPagesToShow / 2),\n\t\t);\n\t\tlet endPage = Math.min(totalPages, startPage + (this.maxPagesToShow - 1));\n\n\t\tif (endPage - startPage + 1 < this.maxPagesToShow) {\n\t\t\tstartPage = Math.max(1, endPage - this.maxPagesToShow + 1);\n\t\t}\n\n\t\tthis.pagingPages.innerHTML = '';\n\n\t\tif (startPage > 1) {\n\t\t\tthis.buildPagingPage(1);\n\n\t\t\tif (startPage > 2) {\n\t\t\t\tthis.pagingPages.appendChild(\n\t\t\t\t\thtmlToElement(`...`),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tfor (let i = startPage; i <= endPage; i++) {\n\t\t\tthis.buildPagingPage(i);\n\t\t}\n\n\t\tif (endPage < totalPages) {\n\t\t\tif (endPage < totalPages - 1) {\n\t\t\t\tthis.pagingPages.appendChild(\n\t\t\t\t\thtmlToElement(`...`),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.buildPagingPage(totalPages);\n\t\t}\n\n\t\tthis.disablePagingArrow(this.pagingPrev, page === 0);\n\t\tthis.disablePagingArrow(this.pagingNext, page === pages - 1);\n\t\tthis.hidePagingIfSinglePage();\n\t}\n\n\tprivate buildPagingPage(counter: number) {\n\t\tconst { page } = this.dataTable.page.info();\n\t\tconst pageEl = htmlToElement(``);\n\t\tpageEl.innerText = `${counter}`;\n\t\tpageEl.setAttribute('data-page', `${counter}`);\n\t\tif (this.pageBtnClasses) classToClassList(this.pageBtnClasses, pageEl);\n\t\tif (page === counter - 1) pageEl.classList.add('active');\n\n\t\tpageEl.addEventListener('click', () => this.onPageClick(counter));\n\n\t\tthis.pagingPages.append(pageEl);\n\t}\n\n\tprivate onPageClick(counter: number) {\n\t\tthis.dataTable.page(counter - 1).draw('page');\n\t}\n\n\t// Select row\n\tprivate initRowSelecting() {\n\t\tthis.rowSelectingAll.addEventListener('change', () =>\n\t\t\tthis.onSelectAllChange(),\n\t\t);\n\t}\n\n\tprivate triggerChangeEventToRow() {\n\t\tthis.table\n\t\t\t.querySelectorAll(`tbody ${this.rowSelectingIndividual}`)\n\t\t\t.forEach((el) => {\n\t\t\t\tel.addEventListener('change', () => {\n\t\t\t\t\tthis.updateSelectAllCheckbox();\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\tprivate onSelectAllChange() {\n\t\tlet isChecked = (this.rowSelectingAll as HTMLInputElement).checked;\n\t\tconst visibleRows = Array.from(\n\t\t\tthis.dataTable.rows({ page: 'current', search: 'applied' }).nodes(),\n\t\t);\n\n\t\tvisibleRows.forEach((el) => {\n\t\t\tconst checkbox = el.querySelector(this.rowSelectingIndividual);\n\n\t\t\tif (checkbox) checkbox.checked = isChecked;\n\t\t});\n\n\t\tthis.updateSelectAllCheckbox();\n\t}\n\n\tprivate updateSelectAllCheckbox() {\n\t\tconst searchRelatedItems = this.dataTable\n\t\t\t.rows({ search: 'applied' })\n\t\t\t.count();\n\n\t\tif (!searchRelatedItems) {\n\t\t\t(this.rowSelectingAll as HTMLInputElement).checked = false;\n\n\t\t\treturn false;\n\t\t}\n\n\t\tlet isChecked = true;\n\t\tconst visibleRows = Array.from(\n\t\t\tthis.dataTable\n\t\t\t\t.rows({\n\t\t\t\t\tpage: 'current',\n\t\t\t\t\tsearch: 'applied',\n\t\t\t\t})\n\t\t\t\t.nodes(),\n\t\t);\n\n\t\tvisibleRows.forEach((el) => {\n\t\t\tconst checkbox = el.querySelector(this.rowSelectingIndividual);\n\n\t\t\tif (checkbox && !checkbox.checked) {\n\t\t\t\tisChecked = false;\n\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\n\t\t(this.rowSelectingAll as HTMLInputElement).checked = isChecked;\n\t}\n\n\t// Static methods\n\tstatic getInstance(target: HTMLElement | string, isInstance?: boolean) {\n\t\tconst elInCollection = window.$hsDataTableCollection.find(\n\t\t\t(el) =>\n\t\t\t\tel.element.el ===\n\t\t\t\t(typeof target === 'string' ? document.querySelector(target) : target),\n\t\t);\n\n\t\treturn elInCollection\n\t\t\t? isInstance\n\t\t\t\t? elInCollection\n\t\t\t\t: elInCollection.element.el\n\t\t\t: null;\n\t}\n\n\tstatic autoInit() {\n\t\tif (!window.$hsDataTableCollection) window.$hsDataTableCollection = [];\n\n\t\tdocument\n\t\t\t.querySelectorAll('[data-hs-datatable]:not(.--prevent-on-load-init)')\n\t\t\t.forEach((el: HTMLElement) => {\n\t\t\t\tif (\n\t\t\t\t\t!window.$hsDataTableCollection.find(\n\t\t\t\t\t\t(elC) => (elC?.element?.el as HTMLElement) === el,\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t\tnew HSDataTable(el);\n\t\t\t});\n\t}\n}\n\ndeclare global {\n\tinterface Window {\n\t\tHSDataTable: Function;\n\t\t$hsDataTableCollection: ICollectionItem[];\n\t}\n}\n\nwindow.addEventListener('load', () => {\n\tif (\n\t\tdocument.querySelectorAll(\n\t\t\t'[data-hs-datatable]:not(.--prevent-on-load-init)',\n\t\t).length\n\t) {\n\t\tif (typeof jQuery === 'undefined')\n\t\t\tconsole.error(\n\t\t\t\t'HSDataTable: jQuery is not available, please add it to the page.',\n\t\t\t);\n\t\tif (typeof DataTable === 'undefined')\n\t\t\tconsole.error(\n\t\t\t\t'HSDataTable: DataTable is not available, please add it to the page.',\n\t\t\t);\n\t}\n\n\tif (typeof DataTable !== 'undefined' && typeof jQuery !== 'undefined')\n\t\tHSDataTable.autoInit();\n\n\t// Uncomment for debug\n\t// console.log('Datatable collection:', window.$hsDataTableCollection);\n});\n\nif (typeof window !== 'undefined') {\n\twindow.HSDataTable = HSDataTable;\n}\n\nexport default HSDataTable;\n","\"use strict\";\n/*\n * HSDropdown\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../../utils\");\nvar core_1 = require(\"@popperjs/core\");\nvar base_plugin_1 = __importDefault(require(\"../base-plugin\"));\nvar constants_1 = require(\"../../constants\");\nvar HSDropdown = /** @class */ (function (_super) {\n __extends(HSDropdown, _super);\n function HSDropdown(el, options, events) {\n var _this = _super.call(this, el, options, events) || this;\n _this.toggle =\n _this.el.querySelector(':scope > .hs-dropdown-toggle') ||\n _this.el.querySelector(':scope > .hs-dropdown-toggle-wrapper > .hs-dropdown-toggle') ||\n _this.el.children[0];\n _this.closers =\n Array.from(_this.el.querySelectorAll(':scope .hs-dropdown-close')) || null;\n _this.menu = _this.el.querySelector(':scope > .hs-dropdown-menu');\n _this.eventMode = (0, utils_1.getClassProperty)(_this.el, '--trigger', 'click');\n _this.closeMode = (0, utils_1.getClassProperty)(_this.el, '--auto-close', 'true');\n _this.animationInProcess = false;\n if (_this.toggle && _this.menu)\n _this.init();\n return _this;\n }\n HSDropdown.prototype.init = function () {\n var _this = this;\n this.createCollection(window.$hsDropdownCollection, this);\n if (this.toggle.disabled)\n return false;\n if (this.toggle)\n this.buildToggle();\n if (this.menu)\n this.buildMenu();\n if (this.closers)\n this.buildClosers();\n if (!(0, utils_1.isIOS)() && !(0, utils_1.isIpadOS)()) {\n this.el.addEventListener('mouseenter', function () { return _this.onMouseEnterHandler(); });\n this.el.addEventListener('mouseleave', function () { return _this.onMouseLeaveHandler(); });\n }\n };\n HSDropdown.prototype.resizeHandler = function () {\n this.eventMode = (0, utils_1.getClassProperty)(this.el, '--trigger', 'click');\n this.closeMode = (0, utils_1.getClassProperty)(this.el, '--auto-close', 'true');\n };\n HSDropdown.prototype.buildToggle = function () {\n var _this = this;\n var _a;\n if ((_a = this === null || this === void 0 ? void 0 : this.toggle) === null || _a === void 0 ? void 0 : _a.ariaExpanded) {\n if (this.el.classList.contains('open'))\n this.toggle.ariaExpanded = 'true';\n else\n this.toggle.ariaExpanded = 'false';\n }\n this.toggle.addEventListener('click', function (evt) { return _this.onClickHandler(evt); });\n };\n HSDropdown.prototype.buildMenu = function () {\n this.menu.role = 'menu';\n };\n HSDropdown.prototype.buildClosers = function () {\n var _this = this;\n this.closers.forEach(function (el) {\n el.addEventListener('click', function () { return _this.close(); });\n });\n };\n HSDropdown.prototype.onClickHandler = function (evt) {\n if (this.el.classList.contains('open') &&\n !this.menu.classList.contains('hidden')) {\n this.close();\n }\n else {\n this.open();\n }\n };\n HSDropdown.prototype.onMouseEnterHandler = function () {\n if (this.eventMode !== 'hover')\n return false;\n if (this.el._popper)\n this.forceClearState();\n if (!this.el.classList.contains('open') &&\n this.menu.classList.contains('hidden')) {\n this.open();\n }\n };\n HSDropdown.prototype.onMouseLeaveHandler = function () {\n if (this.eventMode !== 'hover')\n return false;\n if (this.el.classList.contains('open') &&\n !this.menu.classList.contains('hidden')) {\n this.close();\n }\n };\n HSDropdown.prototype.destroyPopper = function () {\n this.menu.classList.remove('block');\n this.menu.classList.add('hidden');\n this.menu.style.inset = null;\n this.menu.style.position = null;\n if (this.el && this.el._popper)\n this.el._popper.destroy();\n this.animationInProcess = false;\n };\n HSDropdown.prototype.absoluteStrategyModifiers = function () {\n var _this = this;\n return [\n {\n name: 'applyStyles',\n fn: function (data) {\n var strategy = (window.getComputedStyle(_this.el).getPropertyValue('--strategy') ||\n 'absolute').replace(' ', '');\n var adaptive = (window.getComputedStyle(_this.el).getPropertyValue('--adaptive') ||\n 'adaptive').replace(' ', '');\n data.state.elements.popper.style.position = strategy;\n data.state.elements.popper.style.transform =\n adaptive === 'adaptive' ? data.state.styles.popper.transform : null;\n data.state.elements.popper.style.top = null;\n data.state.elements.popper.style.bottom = null;\n data.state.elements.popper.style.left = null;\n data.state.elements.popper.style.right = null;\n data.state.elements.popper.style.margin = 0;\n },\n },\n ];\n };\n // Public methods\n HSDropdown.prototype.open = function () {\n var _this = this;\n if (this.el.classList.contains('open'))\n return false;\n if (this.animationInProcess)\n return false;\n this.animationInProcess = true;\n var placement = (window.getComputedStyle(this.el).getPropertyValue('--placement') || '').replace(' ', '');\n var flip = (window.getComputedStyle(this.el).getPropertyValue('--flip') || 'true').replace(' ', '');\n var strategy = (window.getComputedStyle(this.el).getPropertyValue('--strategy') || 'fixed').replace(' ', '');\n var offset = parseInt((window.getComputedStyle(this.el).getPropertyValue('--offset') || '10').replace(' ', ''));\n var gpuAcceleration = (window.getComputedStyle(this.el).getPropertyValue('--gpu-acceleration') ||\n 'true').replace(' ', '');\n if (strategy !== 'static') {\n this.el._popper = (0, core_1.createPopper)(this.el, this.menu, {\n placement: constants_1.POSITIONS[placement] || 'bottom-start',\n strategy: strategy,\n modifiers: __spreadArray(__spreadArray([], (strategy !== 'fixed' ? this.absoluteStrategyModifiers() : []), true), [\n {\n name: 'flip',\n enabled: flip === 'true',\n },\n {\n name: 'offset',\n options: {\n offset: [0, offset],\n },\n },\n {\n name: 'computeStyles',\n options: {\n adaptive: strategy !== 'fixed' ? false : true,\n gpuAcceleration: gpuAcceleration === 'true' ? true : false,\n },\n },\n ], false),\n });\n }\n this.menu.style.margin = null;\n this.menu.classList.remove('hidden');\n this.menu.classList.add('block');\n setTimeout(function () {\n var _a;\n if ((_a = _this === null || _this === void 0 ? void 0 : _this.toggle) === null || _a === void 0 ? void 0 : _a.ariaExpanded)\n _this.toggle.ariaExpanded = 'true';\n _this.el.classList.add('open');\n _this.animationInProcess = false;\n });\n this.fireEvent('open', this.el);\n (0, utils_1.dispatch)('open.hs.dropdown', this.el, this.el);\n };\n HSDropdown.prototype.close = function (isAnimated) {\n var _this = this;\n if (isAnimated === void 0) { isAnimated = true; }\n if (this.animationInProcess || !this.el.classList.contains('open'))\n return false;\n var clearAfterClose = function () {\n var _a;\n _this.menu.style.margin = null;\n if ((_a = _this === null || _this === void 0 ? void 0 : _this.toggle) === null || _a === void 0 ? void 0 : _a.ariaExpanded)\n _this.toggle.ariaExpanded = 'false';\n _this.el.classList.remove('open');\n _this.fireEvent('close', _this.el);\n (0, utils_1.dispatch)('close.hs.dropdown', _this.el, _this.el);\n };\n this.animationInProcess = true;\n if (isAnimated) {\n var el = this.el.querySelector('[data-hs-dropdown-transition]') || this.menu;\n (0, utils_1.afterTransition)(el, function () { return _this.destroyPopper(); });\n }\n else\n this.destroyPopper();\n clearAfterClose();\n };\n HSDropdown.prototype.forceClearState = function () {\n this.destroyPopper();\n this.menu.style.margin = null;\n this.el.classList.remove('open');\n };\n // Static methods\n HSDropdown.getInstance = function (target, isInstance) {\n var elInCollection = window.$hsDropdownCollection.find(function (el) {\n return el.element.el ===\n (typeof target === 'string' ? document.querySelector(target) : target);\n });\n return elInCollection\n ? isInstance\n ? elInCollection\n : elInCollection.element.el\n : null;\n };\n HSDropdown.autoInit = function () {\n if (!window.$hsDropdownCollection)\n window.$hsDropdownCollection = [];\n document\n .querySelectorAll('.hs-dropdown:not(.--prevent-on-load-init)')\n .forEach(function (el) {\n if (!window.$hsDropdownCollection.find(function (elC) { var _a; return ((_a = elC === null || elC === void 0 ? void 0 : elC.element) === null || _a === void 0 ? void 0 : _a.el) === el; }))\n new HSDropdown(el);\n });\n if (window.$hsDropdownCollection) {\n document.addEventListener('keydown', function (evt) {\n return HSDropdown.accessibility(evt);\n });\n window.addEventListener('click', function (evt) {\n var evtTarget = evt.target;\n HSDropdown.closeCurrentlyOpened(evtTarget);\n });\n var prevWidth_1 = window.innerWidth;\n window.addEventListener('resize', function () {\n if (window.innerWidth !== prevWidth_1) {\n prevWidth_1 = innerWidth;\n HSDropdown.closeCurrentlyOpened(null, false);\n }\n });\n }\n };\n HSDropdown.open = function (target) {\n var elInCollection = window.$hsDropdownCollection.find(function (el) {\n return el.element.el ===\n (typeof target === 'string' ? document.querySelector(target) : target);\n });\n if (elInCollection &&\n elInCollection.element.menu.classList.contains('hidden'))\n elInCollection.element.open();\n };\n HSDropdown.close = function (target) {\n var elInCollection = window.$hsDropdownCollection.find(function (el) {\n return el.element.el ===\n (typeof target === 'string' ? document.querySelector(target) : target);\n });\n if (elInCollection &&\n !elInCollection.element.menu.classList.contains('hidden')) {\n elInCollection.element.close();\n }\n };\n // Accessibility methods\n HSDropdown.accessibility = function (evt) {\n this.history = utils_1.menuSearchHistory;\n var target = window.$hsDropdownCollection.find(function (el) {\n return el.element.el.classList.contains('open');\n });\n if (target &&\n (constants_1.DROPDOWN_ACCESSIBILITY_KEY_SET.includes(evt.code) ||\n (evt.code.length === 4 &&\n evt.code[evt.code.length - 1].match(/^[A-Z]*$/))) &&\n !evt.metaKey &&\n !target.element.menu.querySelector('input:focus') &&\n !target.element.menu.querySelector('textarea:focus')) {\n switch (evt.code) {\n case 'Escape':\n if (!target.element.menu.querySelector('.hs-select.active')) {\n evt.preventDefault();\n this.onEscape(evt);\n }\n break;\n case 'Enter':\n if (!target.element.menu.querySelector('.hs-select button:focus') &&\n !target.element.menu.querySelector('.hs-collapse-toggle:focus')) {\n this.onEnter(evt);\n }\n break;\n case 'ArrowUp':\n evt.preventDefault();\n evt.stopImmediatePropagation();\n this.onArrow();\n break;\n case 'ArrowDown':\n evt.preventDefault();\n evt.stopImmediatePropagation();\n this.onArrow(false);\n break;\n case 'Home':\n evt.preventDefault();\n evt.stopImmediatePropagation();\n this.onStartEnd();\n break;\n case 'End':\n evt.preventDefault();\n evt.stopImmediatePropagation();\n this.onStartEnd(false);\n break;\n default:\n evt.preventDefault();\n this.onFirstLetter(evt.key);\n break;\n }\n }\n };\n HSDropdown.onEscape = function (evt) {\n var dropdown = evt.target.closest('.hs-dropdown.open');\n if (window.$hsDropdownCollection.find(function (el) { return el.element.el === dropdown; })) {\n var target = window.$hsDropdownCollection.find(function (el) { return el.element.el === dropdown; });\n if (target) {\n target.element.close();\n target.element.toggle.focus();\n }\n }\n else {\n this.closeCurrentlyOpened();\n }\n };\n HSDropdown.onEnter = function (evt) {\n var dropdown = evt.target.parentElement;\n if (window.$hsDropdownCollection.find(function (el) { return el.element.el === dropdown; })) {\n evt.preventDefault();\n var target = window.$hsDropdownCollection.find(function (el) { return el.element.el === dropdown; });\n if (target)\n target.element.open();\n }\n };\n HSDropdown.onArrow = function (isArrowUp) {\n if (isArrowUp === void 0) { isArrowUp = true; }\n var target = window.$hsDropdownCollection.find(function (el) {\n return el.element.el.classList.contains('open');\n });\n if (target) {\n var menu = target.element.menu;\n if (!menu)\n return false;\n var preparedLinks = isArrowUp\n ? Array.from(menu.querySelectorAll('a:not([hidden]), .hs-dropdown > button:not([hidden])')).reverse()\n : Array.from(menu.querySelectorAll('a:not([hidden]), .hs-dropdown > button:not([hidden])'));\n var links = preparedLinks.filter(function (el) { return !el.classList.contains('disabled'); });\n var current_1 = menu.querySelector('a:focus, button:focus');\n var currentInd = links.findIndex(function (el) { return el === current_1; });\n if (currentInd + 1 < links.length) {\n currentInd++;\n }\n links[currentInd].focus();\n }\n };\n HSDropdown.onStartEnd = function (isStart) {\n if (isStart === void 0) { isStart = true; }\n var target = window.$hsDropdownCollection.find(function (el) {\n return el.element.el.classList.contains('open');\n });\n if (target) {\n var menu = target.element.menu;\n if (!menu)\n return false;\n var preparedLinks = isStart\n ? Array.from(menu.querySelectorAll('a'))\n : Array.from(menu.querySelectorAll('a')).reverse();\n var links = preparedLinks.filter(function (el) { return !el.classList.contains('disabled'); });\n if (links.length) {\n links[0].focus();\n }\n }\n };\n HSDropdown.onFirstLetter = function (code) {\n var _this = this;\n var target = window.$hsDropdownCollection.find(function (el) {\n return el.element.el.classList.contains('open');\n });\n if (target) {\n var menu = target.element.menu;\n if (!menu)\n return false;\n var links_1 = Array.from(menu.querySelectorAll('a'));\n var getCurrentInd = function () {\n return links_1.findIndex(function (el, i) {\n return el.innerText.toLowerCase().charAt(0) === code.toLowerCase() &&\n _this.history.existsInHistory(i);\n });\n };\n var currentInd = getCurrentInd();\n if (currentInd === -1) {\n this.history.clearHistory();\n currentInd = getCurrentInd();\n }\n if (currentInd !== -1) {\n links_1[currentInd].focus();\n this.history.addHistory(currentInd);\n }\n }\n };\n HSDropdown.closeCurrentlyOpened = function (evtTarget, isAnimated) {\n if (evtTarget === void 0) { evtTarget = null; }\n if (isAnimated === void 0) { isAnimated = true; }\n var parent = evtTarget &&\n evtTarget.closest('.hs-dropdown') &&\n evtTarget.closest('.hs-dropdown').parentElement.closest('.hs-dropdown')\n ? evtTarget\n .closest('.hs-dropdown')\n .parentElement.closest('.hs-dropdown')\n : null;\n var currentlyOpened = parent\n ? window.$hsDropdownCollection.filter(function (el) {\n return el.element.el.classList.contains('open') &&\n el.element.menu\n .closest('.hs-dropdown')\n .parentElement.closest('.hs-dropdown') === parent;\n })\n : window.$hsDropdownCollection.filter(function (el) {\n return el.element.el.classList.contains('open');\n });\n if (evtTarget &&\n evtTarget.closest('.hs-dropdown') &&\n (0, utils_1.getClassPropertyAlt)(evtTarget.closest('.hs-dropdown'), '--auto-close') ===\n 'inside') {\n currentlyOpened = currentlyOpened.filter(function (el) { return el.element.el !== evtTarget.closest('.hs-dropdown'); });\n }\n if (currentlyOpened) {\n currentlyOpened.forEach(function (el) {\n if (el.element.closeMode === 'false' ||\n el.element.closeMode === 'outside')\n return false;\n el.element.close(isAnimated);\n });\n }\n };\n // Backward compatibility\n HSDropdown.on = function (evt, target, cb) {\n var elInCollection = window.$hsDropdownCollection.find(function (el) {\n return el.element.el ===\n (typeof target === 'string' ? document.querySelector(target) : target);\n });\n if (elInCollection)\n elInCollection.element.events[evt] = cb;\n };\n return HSDropdown;\n}(base_plugin_1.default));\nwindow.addEventListener('load', function () {\n HSDropdown.autoInit();\n // Uncomment for debug\n // console.log('Dropdown collection:', window.$hsDropdownCollection);\n});\nwindow.addEventListener('resize', function () {\n if (!window.$hsDropdownCollection)\n window.$hsDropdownCollection = [];\n window.$hsDropdownCollection.forEach(function (el) { return el.element.resizeHandler(); });\n});\nif (typeof window !== 'undefined') {\n window.HSDropdown = HSDropdown;\n}\nexports.default = HSDropdown;\n","/*\n * HSDropdown\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\n\nimport {\n\tgetClassProperty,\n\tgetClassPropertyAlt,\n\tisIOS,\n\tisIpadOS,\n\tdispatch,\n\tafterTransition,\n\tmenuSearchHistory,\n} from '../../utils';\nimport { IMenuSearchHistory } from '../../utils/interfaces';\n\nimport { createPopper, PositioningStrategy } from '@popperjs/core';\n\nimport { IDropdown, IHTMLElementPopper } from '../dropdown/interfaces';\nimport HSBasePlugin from '../base-plugin';\nimport { ICollectionItem } from '../../interfaces';\n\nimport { POSITIONS, DROPDOWN_ACCESSIBILITY_KEY_SET } from '../../constants';\n\nclass HSDropdown\n\textends HSBasePlugin<{}, IHTMLElementPopper>\n\timplements IDropdown\n{\n\tprivate static history: IMenuSearchHistory;\n\tprivate readonly toggle: HTMLElement | null;\n\tprivate readonly closers: HTMLElement[] | null;\n\tpublic menu: HTMLElement | null;\n\tprivate eventMode: string;\n\tprivate closeMode: string;\n\tprivate animationInProcess: boolean;\n\n\tconstructor(el: IHTMLElementPopper, options?: {}, events?: {}) {\n\t\tsuper(el, options, events);\n\n\t\tthis.toggle =\n\t\t\tthis.el.querySelector(':scope > .hs-dropdown-toggle') ||\n\t\t\tthis.el.querySelector(\n\t\t\t\t':scope > .hs-dropdown-toggle-wrapper > .hs-dropdown-toggle',\n\t\t\t) ||\n\t\t\t(this.el.children[0] as HTMLElement);\n\t\tthis.closers =\n\t\t\tArray.from(this.el.querySelectorAll(':scope .hs-dropdown-close')) || null;\n\t\tthis.menu = this.el.querySelector(':scope > .hs-dropdown-menu');\n\t\tthis.eventMode = getClassProperty(this.el, '--trigger', 'click');\n\t\tthis.closeMode = getClassProperty(this.el, '--auto-close', 'true');\n\t\tthis.animationInProcess = false;\n\n\t\tif (this.toggle && this.menu) this.init();\n\t}\n\n\tprivate init() {\n\t\tthis.createCollection(window.$hsDropdownCollection, this);\n\n\t\tif ((this.toggle as HTMLButtonElement).disabled) return false;\n\n\t\tif (this.toggle) this.buildToggle();\n\t\tif (this.menu) this.buildMenu();\n\t\tif (this.closers) this.buildClosers();\n\n\t\tif (!isIOS() && !isIpadOS()) {\n\t\t\tthis.el.addEventListener('mouseenter', () => this.onMouseEnterHandler());\n\t\t\tthis.el.addEventListener('mouseleave', () => this.onMouseLeaveHandler());\n\t\t}\n\t}\n\n\tresizeHandler() {\n\t\tthis.eventMode = getClassProperty(this.el, '--trigger', 'click');\n\t\tthis.closeMode = getClassProperty(this.el, '--auto-close', 'true');\n\t}\n\n\tprivate buildToggle() {\n\t\tif (this?.toggle?.ariaExpanded) {\n\t\t\tif (this.el.classList.contains('open')) this.toggle.ariaExpanded = 'true';\n\t\t\telse this.toggle.ariaExpanded = 'false';\n\t\t}\n\n\t\tthis.toggle.addEventListener('click', (evt) => this.onClickHandler(evt));\n\t}\n\n\tprivate buildMenu() {\n\t\tthis.menu.role = 'menu';\n\t}\n\n\tprivate buildClosers() {\n\t\tthis.closers.forEach((el: HTMLButtonElement) => {\n\t\t\tel.addEventListener('click', () => this.close());\n\t\t});\n\t}\n\n\tprivate onClickHandler(evt: Event) {\n\t\tif (\n\t\t\tthis.el.classList.contains('open') &&\n\t\t\t!this.menu.classList.contains('hidden')\n\t\t) {\n\t\t\tthis.close();\n\t\t} else {\n\t\t\tthis.open();\n\t\t}\n\t}\n\n\tprivate onMouseEnterHandler() {\n\t\tif (this.eventMode !== 'hover') return false;\n\n\t\tif (this.el._popper) this.forceClearState();\n\n\t\tif (\n\t\t\t!this.el.classList.contains('open') &&\n\t\t\tthis.menu.classList.contains('hidden')\n\t\t) {\n\t\t\tthis.open();\n\t\t}\n\t}\n\n\tprivate onMouseLeaveHandler() {\n\t\tif (this.eventMode !== 'hover') return false;\n\n\t\tif (\n\t\t\tthis.el.classList.contains('open') &&\n\t\t\t!this.menu.classList.contains('hidden')\n\t\t) {\n\t\t\tthis.close();\n\t\t}\n\t}\n\n\tprivate destroyPopper() {\n\t\tthis.menu.classList.remove('block');\n\t\tthis.menu.classList.add('hidden');\n\n\t\tthis.menu.style.inset = null;\n\t\tthis.menu.style.position = null;\n\n\t\tif (this.el && this.el._popper) this.el._popper.destroy();\n\n\t\tthis.animationInProcess = false;\n\t}\n\n\tprivate absoluteStrategyModifiers() {\n\t\treturn [\n\t\t\t{\n\t\t\t\tname: 'applyStyles',\n\t\t\t\tfn: (data: any) => {\n\t\t\t\t\tconst strategy = (\n\t\t\t\t\t\twindow.getComputedStyle(this.el).getPropertyValue('--strategy') ||\n\t\t\t\t\t\t'absolute'\n\t\t\t\t\t).replace(' ', '');\n\t\t\t\t\tconst adaptive = (\n\t\t\t\t\t\twindow.getComputedStyle(this.el).getPropertyValue('--adaptive') ||\n\t\t\t\t\t\t'adaptive'\n\t\t\t\t\t).replace(' ', '');\n\n\t\t\t\t\tdata.state.elements.popper.style.position = strategy;\n\t\t\t\t\tdata.state.elements.popper.style.transform =\n\t\t\t\t\t\tadaptive === 'adaptive' ? data.state.styles.popper.transform : null;\n\t\t\t\t\tdata.state.elements.popper.style.top = null;\n\t\t\t\t\tdata.state.elements.popper.style.bottom = null;\n\t\t\t\t\tdata.state.elements.popper.style.left = null;\n\t\t\t\t\tdata.state.elements.popper.style.right = null;\n\t\t\t\t\tdata.state.elements.popper.style.margin = 0;\n\t\t\t\t},\n\t\t\t},\n\t\t];\n\t}\n\n\t// Public methods\n\tpublic open() {\n\t\tif (this.el.classList.contains('open')) return false;\n\n\t\tif (this.animationInProcess) return false;\n\n\t\tthis.animationInProcess = true;\n\n\t\tconst placement = (\n\t\t\twindow.getComputedStyle(this.el).getPropertyValue('--placement') || ''\n\t\t).replace(' ', '');\n\t\tconst flip = (\n\t\t\twindow.getComputedStyle(this.el).getPropertyValue('--flip') || 'true'\n\t\t).replace(' ', '');\n\t\tconst strategy = (\n\t\t\twindow.getComputedStyle(this.el).getPropertyValue('--strategy') || 'fixed'\n\t\t).replace(' ', '') as PositioningStrategy;\n\t\tconst offset = parseInt(\n\t\t\t(\n\t\t\t\twindow.getComputedStyle(this.el).getPropertyValue('--offset') || '10'\n\t\t\t).replace(' ', ''),\n\t\t);\n\t\tconst gpuAcceleration = (\n\t\t\twindow.getComputedStyle(this.el).getPropertyValue('--gpu-acceleration') ||\n\t\t\t'true'\n\t\t).replace(' ', '');\n\n\t\tif (strategy !== ('static' as PositioningStrategy)) {\n\t\t\tthis.el._popper = createPopper(this.el, this.menu, {\n\t\t\t\tplacement: POSITIONS[placement] || 'bottom-start',\n\t\t\t\tstrategy: strategy,\n\t\t\t\tmodifiers: [\n\t\t\t\t\t...(strategy !== 'fixed' ? this.absoluteStrategyModifiers() : []),\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'flip',\n\t\t\t\t\t\tenabled: flip === 'true',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'offset',\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\toffset: [0, offset],\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'computeStyles',\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tadaptive: strategy !== 'fixed' ? false : true,\n\t\t\t\t\t\t\tgpuAcceleration: gpuAcceleration === 'true' ? true : false,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t}\n\n\t\tthis.menu.style.margin = null;\n\n\t\tthis.menu.classList.remove('hidden');\n\t\tthis.menu.classList.add('block');\n\n\t\tsetTimeout(() => {\n\t\t\tif (this?.toggle?.ariaExpanded) this.toggle.ariaExpanded = 'true';\n\t\t\tthis.el.classList.add('open');\n\n\t\t\tthis.animationInProcess = false;\n\t\t});\n\n\t\tthis.fireEvent('open', this.el);\n\t\tdispatch('open.hs.dropdown', this.el, this.el);\n\t}\n\n\tpublic close(isAnimated = true) {\n\t\tif (this.animationInProcess || !this.el.classList.contains('open'))\n\t\t\treturn false;\n\n\t\tconst clearAfterClose = () => {\n\t\t\tthis.menu.style.margin = null;\n\n\t\t\tif (this?.toggle?.ariaExpanded) this.toggle.ariaExpanded = 'false';\n\t\t\tthis.el.classList.remove('open');\n\n\t\t\tthis.fireEvent('close', this.el);\n\t\t\tdispatch('close.hs.dropdown', this.el, this.el);\n\t\t};\n\n\t\tthis.animationInProcess = true;\n\n\t\tif (isAnimated) {\n\t\t\tconst el: HTMLElement =\n\t\t\t\tthis.el.querySelector('[data-hs-dropdown-transition]') || this.menu;\n\n\t\t\tafterTransition(el, () => this.destroyPopper());\n\t\t} else this.destroyPopper();\n\n\t\tclearAfterClose();\n\t}\n\n\tpublic forceClearState() {\n\t\tthis.destroyPopper();\n\t\tthis.menu.style.margin = null;\n\t\tthis.el.classList.remove('open');\n\t}\n\n\t// Static methods\n\tstatic getInstance(target: HTMLElement | string, isInstance?: boolean) {\n\t\tconst elInCollection = window.$hsDropdownCollection.find(\n\t\t\t(el) =>\n\t\t\t\tel.element.el ===\n\t\t\t\t(typeof target === 'string' ? document.querySelector(target) : target),\n\t\t);\n\n\t\treturn elInCollection\n\t\t\t? isInstance\n\t\t\t\t? elInCollection\n\t\t\t\t: elInCollection.element.el\n\t\t\t: null;\n\t}\n\n\tstatic autoInit() {\n\t\tif (!window.$hsDropdownCollection) window.$hsDropdownCollection = [];\n\n\t\tdocument\n\t\t\t.querySelectorAll('.hs-dropdown:not(.--prevent-on-load-init)')\n\t\t\t.forEach((el: IHTMLElementPopper) => {\n\t\t\t\tif (\n\t\t\t\t\t!window.$hsDropdownCollection.find(\n\t\t\t\t\t\t(elC) => (elC?.element?.el as HTMLElement) === el,\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t\tnew HSDropdown(el);\n\t\t\t});\n\n\t\tif (window.$hsDropdownCollection) {\n\t\t\tdocument.addEventListener('keydown', (evt) =>\n\t\t\t\tHSDropdown.accessibility(evt),\n\t\t\t);\n\n\t\t\twindow.addEventListener('click', (evt) => {\n\t\t\t\tconst evtTarget = evt.target;\n\n\t\t\t\tHSDropdown.closeCurrentlyOpened(evtTarget as HTMLElement);\n\t\t\t});\n\n\t\t\tlet prevWidth = window.innerWidth;\n\t\t\twindow.addEventListener('resize', () => {\n\t\t\t\tif (window.innerWidth !== prevWidth) {\n\t\t\t\t\tprevWidth = innerWidth;\n\t\t\t\t\tHSDropdown.closeCurrentlyOpened(null, false);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tstatic open(target: HTMLElement) {\n\t\tconst elInCollection = window.$hsDropdownCollection.find(\n\t\t\t(el) =>\n\t\t\t\tel.element.el ===\n\t\t\t\t(typeof target === 'string' ? document.querySelector(target) : target),\n\t\t);\n\n\t\tif (\n\t\t\telInCollection &&\n\t\t\telInCollection.element.menu.classList.contains('hidden')\n\t\t)\n\t\t\telInCollection.element.open();\n\t}\n\n\tstatic close(target: HTMLElement) {\n\t\tconst elInCollection = window.$hsDropdownCollection.find(\n\t\t\t(el) =>\n\t\t\t\tel.element.el ===\n\t\t\t\t(typeof target === 'string' ? document.querySelector(target) : target),\n\t\t);\n\n\t\tif (\n\t\t\telInCollection &&\n\t\t\t!elInCollection.element.menu.classList.contains('hidden')\n\t\t) {\n\t\t\telInCollection.element.close();\n\t\t}\n\t}\n\n\t// Accessibility methods\n\tstatic accessibility(evt: KeyboardEvent) {\n\t\tthis.history = menuSearchHistory;\n\n\t\tconst target: ICollectionItem | null =\n\t\t\twindow.$hsDropdownCollection.find((el) =>\n\t\t\t\tel.element.el.classList.contains('open'),\n\t\t\t);\n\n\t\tif (\n\t\t\ttarget &&\n\t\t\t(DROPDOWN_ACCESSIBILITY_KEY_SET.includes(evt.code) ||\n\t\t\t\t(evt.code.length === 4 &&\n\t\t\t\t\tevt.code[evt.code.length - 1].match(/^[A-Z]*$/))) &&\n\t\t\t!evt.metaKey &&\n\t\t\t!target.element.menu.querySelector('input:focus') &&\n\t\t\t!target.element.menu.querySelector('textarea:focus')\n\t\t) {\n\t\t\tswitch (evt.code) {\n\t\t\t\tcase 'Escape':\n\t\t\t\t\tif (!target.element.menu.querySelector('.hs-select.active')) {\n\t\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\t\tthis.onEscape(evt);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'Enter':\n\t\t\t\t\tif (\n\t\t\t\t\t\t!target.element.menu.querySelector('.hs-select button:focus') &&\n\t\t\t\t\t\t!target.element.menu.querySelector('.hs-collapse-toggle:focus')\n\t\t\t\t\t) {\n\t\t\t\t\t\tthis.onEnter(evt);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ArrowUp':\n\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\tevt.stopImmediatePropagation();\n\t\t\t\t\tthis.onArrow();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ArrowDown':\n\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\tevt.stopImmediatePropagation();\n\t\t\t\t\tthis.onArrow(false);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'Home':\n\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\tevt.stopImmediatePropagation();\n\t\t\t\t\tthis.onStartEnd();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'End':\n\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\tevt.stopImmediatePropagation();\n\t\t\t\t\tthis.onStartEnd(false);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\tthis.onFirstLetter(evt.key);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tstatic onEscape(evt: KeyboardEvent) {\n\t\tconst dropdown = (evt.target as HTMLElement).closest('.hs-dropdown.open');\n\n\t\tif (window.$hsDropdownCollection.find((el) => el.element.el === dropdown)) {\n\t\t\tconst target = window.$hsDropdownCollection.find(\n\t\t\t\t(el) => el.element.el === dropdown,\n\t\t\t);\n\n\t\t\tif (target) {\n\t\t\t\ttarget.element.close();\n\t\t\t\ttarget.element.toggle.focus();\n\t\t\t}\n\t\t} else {\n\t\t\tthis.closeCurrentlyOpened();\n\t\t}\n\t}\n\n\tstatic onEnter(evt: KeyboardEvent) {\n\t\tconst dropdown = (evt.target as HTMLElement).parentElement;\n\n\t\tif (window.$hsDropdownCollection.find((el) => el.element.el === dropdown)) {\n\t\t\tevt.preventDefault();\n\n\t\t\tconst target = window.$hsDropdownCollection.find(\n\t\t\t\t(el) => el.element.el === dropdown,\n\t\t\t);\n\n\t\t\tif (target) target.element.open();\n\t\t}\n\t}\n\n\tstatic onArrow(isArrowUp = true) {\n\t\tconst target = window.$hsDropdownCollection.find((el) =>\n\t\t\tel.element.el.classList.contains('open'),\n\t\t);\n\n\t\tif (target) {\n\t\t\tconst menu = target.element.menu;\n\n\t\t\tif (!menu) return false;\n\n\t\t\tconst preparedLinks = isArrowUp\n\t\t\t\t? Array.from(\n\t\t\t\t\t\tmenu.querySelectorAll(\n\t\t\t\t\t\t\t'a:not([hidden]), .hs-dropdown > button:not([hidden])',\n\t\t\t\t\t\t),\n\t\t\t\t\t).reverse()\n\t\t\t\t: Array.from(\n\t\t\t\t\t\tmenu.querySelectorAll(\n\t\t\t\t\t\t\t'a:not([hidden]), .hs-dropdown > button:not([hidden])',\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\n\t\t\tconst links = preparedLinks.filter(\n\t\t\t\t(el: any) => !el.classList.contains('disabled'),\n\t\t\t);\n\t\t\tconst current = menu.querySelector('a:focus, button:focus');\n\t\t\tlet currentInd = links.findIndex((el: any) => el === current);\n\n\t\t\tif (currentInd + 1 < links.length) {\n\t\t\t\tcurrentInd++;\n\t\t\t}\n\n\t\t\t(links[currentInd] as HTMLButtonElement | HTMLAnchorElement).focus();\n\t\t}\n\t}\n\n\tstatic onStartEnd(isStart = true) {\n\t\tconst target = window.$hsDropdownCollection.find((el) =>\n\t\t\tel.element.el.classList.contains('open'),\n\t\t);\n\n\t\tif (target) {\n\t\t\tconst menu = target.element.menu;\n\n\t\t\tif (!menu) return false;\n\n\t\t\tconst preparedLinks = isStart\n\t\t\t\t? Array.from(menu.querySelectorAll('a'))\n\t\t\t\t: Array.from(menu.querySelectorAll('a')).reverse();\n\t\t\tconst links = preparedLinks.filter(\n\t\t\t\t(el: any) => !el.classList.contains('disabled'),\n\t\t\t);\n\n\t\t\tif (links.length) {\n\t\t\t\tlinks[0].focus();\n\t\t\t}\n\t\t}\n\t}\n\n\tstatic onFirstLetter(code: string) {\n\t\tconst target = window.$hsDropdownCollection.find((el) =>\n\t\t\tel.element.el.classList.contains('open'),\n\t\t);\n\n\t\tif (target) {\n\t\t\tconst menu = target.element.menu;\n\n\t\t\tif (!menu) return false;\n\n\t\t\tconst links = Array.from(menu.querySelectorAll('a'));\n\t\t\tconst getCurrentInd = () =>\n\t\t\t\tlinks.findIndex(\n\t\t\t\t\t(el, i) =>\n\t\t\t\t\t\tel.innerText.toLowerCase().charAt(0) === code.toLowerCase() &&\n\t\t\t\t\t\tthis.history.existsInHistory(i),\n\t\t\t\t);\n\t\t\tlet currentInd = getCurrentInd();\n\n\t\t\tif (currentInd === -1) {\n\t\t\t\tthis.history.clearHistory();\n\t\t\t\tcurrentInd = getCurrentInd();\n\t\t\t}\n\n\t\t\tif (currentInd !== -1) {\n\t\t\t\tlinks[currentInd].focus();\n\t\t\t\tthis.history.addHistory(currentInd);\n\t\t\t}\n\t\t}\n\t}\n\n\tstatic closeCurrentlyOpened(\n\t\tevtTarget: HTMLElement | null = null,\n\t\tisAnimated = true,\n\t) {\n\t\tconst parent =\n\t\t\tevtTarget &&\n\t\t\tevtTarget.closest('.hs-dropdown') &&\n\t\t\tevtTarget.closest('.hs-dropdown').parentElement.closest('.hs-dropdown')\n\t\t\t\t? evtTarget\n\t\t\t\t\t\t.closest('.hs-dropdown')\n\t\t\t\t\t\t.parentElement.closest('.hs-dropdown')\n\t\t\t\t: null;\n\t\tlet currentlyOpened = parent\n\t\t\t? window.$hsDropdownCollection.filter(\n\t\t\t\t\t(el) =>\n\t\t\t\t\t\tel.element.el.classList.contains('open') &&\n\t\t\t\t\t\tel.element.menu\n\t\t\t\t\t\t\t.closest('.hs-dropdown')\n\t\t\t\t\t\t\t.parentElement.closest('.hs-dropdown') === parent,\n\t\t\t\t)\n\t\t\t: window.$hsDropdownCollection.filter((el) =>\n\t\t\t\t\tel.element.el.classList.contains('open'),\n\t\t\t\t);\n\n\t\tif (\n\t\t\tevtTarget &&\n\t\t\tevtTarget.closest('.hs-dropdown') &&\n\t\t\tgetClassPropertyAlt(evtTarget.closest('.hs-dropdown'), '--auto-close') ===\n\t\t\t\t'inside'\n\t\t) {\n\t\t\tcurrentlyOpened = currentlyOpened.filter(\n\t\t\t\t(el) => el.element.el !== evtTarget.closest('.hs-dropdown'),\n\t\t\t);\n\t\t}\n\n\t\tif (currentlyOpened) {\n\t\t\tcurrentlyOpened.forEach((el) => {\n\t\t\t\tif (\n\t\t\t\t\tel.element.closeMode === 'false' ||\n\t\t\t\t\tel.element.closeMode === 'outside'\n\t\t\t\t)\n\t\t\t\t\treturn false;\n\n\t\t\t\tel.element.close(isAnimated);\n\t\t\t});\n\t\t}\n\t}\n\n\t// Backward compatibility\n\tstatic on(evt: string, target: HTMLElement, cb: Function) {\n\t\tconst elInCollection = window.$hsDropdownCollection.find(\n\t\t\t(el) =>\n\t\t\t\tel.element.el ===\n\t\t\t\t(typeof target === 'string' ? document.querySelector(target) : target),\n\t\t);\n\n\t\tif (elInCollection) elInCollection.element.events[evt] = cb;\n\t}\n}\n\ndeclare global {\n\tinterface Window {\n\t\tHSDropdown: Function;\n\t\t$hsDropdownCollection: ICollectionItem[];\n\t}\n}\n\nwindow.addEventListener('load', () => {\n\tHSDropdown.autoInit();\n\n\t// Uncomment for debug\n\t// console.log('Dropdown collection:', window.$hsDropdownCollection);\n});\n\nwindow.addEventListener('resize', () => {\n\tif (!window.$hsDropdownCollection) window.$hsDropdownCollection = [];\n\n\twindow.$hsDropdownCollection.forEach((el) => el.element.resizeHandler());\n});\n\nif (typeof window !== 'undefined') {\n\twindow.HSDropdown = HSDropdown;\n}\n\nexport default HSDropdown;\n","\"use strict\";\n/*\n * HSFileUpload\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../../utils\");\nvar base_plugin_1 = __importDefault(require(\"../base-plugin\"));\nif (typeof Dropzone !== 'undefined')\n Dropzone.autoDiscover = false;\nvar HSFileUpload = /** @class */ (function (_super) {\n __extends(HSFileUpload, _super);\n function HSFileUpload(el, options, events) {\n var _a;\n var _this = _super.call(this, el, options, events) || this;\n _this.extensions = {};\n _this.el = typeof el === 'string' ? document.querySelector(el) : el;\n var data = _this.el.getAttribute('data-hs-file-upload');\n var dataOptions = data ? JSON.parse(data) : {};\n _this.previewTemplate =\n ((_a = _this.el.querySelector('[data-hs-file-upload-preview]')) === null || _a === void 0 ? void 0 : _a.innerHTML) ||\n \"
\\n\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t

\\n\\t\\t\\t\\t\\t\\t\\t.\\n\\t\\t\\t\\t\\t\\t

\\n\\t\\t\\t\\t\\t\\t

\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t0%\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\";\n _this.extensions = _.merge({\n default: {\n icon: '',\n class: 'size-5',\n },\n xls: {\n icon: '',\n class: 'size-5',\n },\n doc: {\n icon: '',\n class: 'size-5',\n },\n zip: {\n icon: '',\n class: 'size-5',\n },\n }, dataOptions.extensions);\n _this.singleton = dataOptions.singleton;\n _this.concatOptions = __assign(__assign({ clickable: _this.el.querySelector('[data-hs-file-upload-trigger]'), previewsContainer: _this.el.querySelector('[data-hs-file-upload-previews]'), addRemoveLinks: false, previewTemplate: _this.previewTemplate, autoHideTrigger: false }, dataOptions), options);\n _this.init();\n return _this;\n }\n HSFileUpload.prototype.init = function () {\n this.createCollection(window.$hsFileUploadCollection, this);\n this.initDropzone();\n };\n HSFileUpload.prototype.initDropzone = function () {\n var _this = this;\n var clear = this.el.querySelector('[data-hs-file-upload-clear]');\n var pseudoTriggers = Array.from(this.el.querySelectorAll('[data-hs-file-upload-pseudo-trigger]'));\n this.dropzone = new Dropzone(this.el, this.concatOptions);\n this.dropzone.on('addedfile', function (file) { return _this.onAddFile(file); });\n this.dropzone.on('removedfile', function () { return _this.onRemoveFile(); });\n this.dropzone.on('uploadprogress', function (file, progress) {\n return _this.onUploadProgress(file, progress);\n });\n this.dropzone.on('complete', function (file) { return _this.onComplete(file); });\n if (clear)\n clear.onclick = function () {\n if (_this.dropzone.files.length)\n _this.dropzone.removeAllFiles(true);\n };\n if (pseudoTriggers.length)\n pseudoTriggers.forEach(function (el) {\n el.onclick = function () {\n var _a, _b;\n if ((_a = _this.concatOptions) === null || _a === void 0 ? void 0 : _a.clickable)\n ((_b = _this.concatOptions) === null || _b === void 0 ? void 0 : _b.clickable).click();\n };\n });\n };\n HSFileUpload.prototype.onAddFile = function (file) {\n var _this = this;\n var previewElement = file.previewElement;\n var reloadButton = file.previewElement.querySelector('[data-hs-file-upload-reload]');\n if (!previewElement)\n return false;\n if (this.singleton && this.dropzone.files.length > 1)\n this.dropzone.removeFile(this.dropzone.files[0]);\n if (reloadButton) {\n reloadButton.addEventListener('click', function (evt) {\n evt.preventDefault();\n evt.stopPropagation();\n var tempFileInput = document.createElement('input');\n tempFileInput.type = 'file';\n tempFileInput.click();\n tempFileInput.addEventListener('change', function (event) {\n var _a;\n var input = event.target;\n var newFile = (_a = input.files) === null || _a === void 0 ? void 0 : _a[0];\n if (newFile) {\n var dzNewFile = newFile;\n dzNewFile.status = Dropzone.ADDED;\n dzNewFile.accepted = true;\n dzNewFile.previewElement = file.previewElement;\n dzNewFile.previewTemplate = file.previewTemplate;\n dzNewFile.previewsContainer = file.previewsContainer;\n _this.dropzone.removeFile(file);\n _this.dropzone.addFile(dzNewFile);\n }\n });\n });\n }\n this.previewAccepted(file);\n };\n HSFileUpload.prototype.previewAccepted = function (file) {\n var _this = this;\n var previewElement = file.previewElement;\n var fileInfo = this.splitFileName(file.name);\n var fileName = previewElement.querySelector('[data-hs-file-upload-file-name]');\n var fileExt = previewElement.querySelector('[data-hs-file-upload-file-ext]');\n var fileSize = previewElement.querySelector('[data-hs-file-upload-file-size]');\n var fileIcon = previewElement.querySelector('[data-hs-file-upload-file-icon]');\n var trigger = this.el.querySelector('[data-hs-file-upload-trigger]');\n var preview = previewElement.querySelector('[data-dz-thumbnail]');\n var remove = previewElement.querySelector('[data-hs-file-upload-remove]');\n if (fileName)\n fileName.textContent = fileInfo.name;\n if (fileExt)\n fileExt.textContent = fileInfo.extension;\n if (fileSize)\n fileSize.textContent = this.formatFileSize(file.size);\n if (preview) {\n if (file.type.includes('image/'))\n preview.classList.remove('hidden');\n else\n this.setIcon(fileInfo.extension, fileIcon);\n }\n if (this.dropzone.files.length > 0 && this.concatOptions.autoHideTrigger)\n trigger.style.display = 'none';\n if (remove)\n remove.onclick = function () { return _this.dropzone.removeFile(file); };\n };\n HSFileUpload.prototype.onRemoveFile = function () {\n var trigger = this.el.querySelector('[data-hs-file-upload-trigger]');\n if (this.dropzone.files.length === 0 && this.concatOptions.autoHideTrigger)\n trigger.style.display = '';\n };\n HSFileUpload.prototype.onUploadProgress = function (file, progress) {\n var previewElement = file.previewElement;\n if (!previewElement)\n return false;\n var progressBar = previewElement.querySelector('[data-hs-file-upload-progress-bar]');\n var progressBarPane = previewElement.querySelector('[data-hs-file-upload-progress-bar-pane]');\n var progressBarValue = previewElement.querySelector('[data-hs-file-upload-progress-bar-value]');\n var currentProgress = Math.floor(progress);\n if (progressBar)\n progressBar.setAttribute('aria-valuenow', \"\".concat(currentProgress));\n if (progressBarPane)\n progressBarPane.style.width = \"\".concat(currentProgress, \"%\");\n if (progressBarValue)\n progressBarValue.innerText = \"\".concat(currentProgress);\n };\n HSFileUpload.prototype.onComplete = function (file) {\n var previewElement = file.previewElement;\n if (!previewElement)\n return false;\n previewElement.classList.add('complete');\n };\n HSFileUpload.prototype.setIcon = function (ext, file) {\n var icon = this.createIcon(ext);\n file.append(icon);\n };\n HSFileUpload.prototype.createIcon = function (ext) {\n var _a, _b;\n var icon = ((_a = this.extensions[ext]) === null || _a === void 0 ? void 0 : _a.icon)\n ? (0, utils_1.htmlToElement)(this.extensions[ext].icon)\n : (0, utils_1.htmlToElement)(this.extensions.default.icon);\n (0, utils_1.classToClassList)(((_b = this.extensions[ext]) === null || _b === void 0 ? void 0 : _b.class)\n ? this.extensions[ext].class\n : this.extensions.default.class, icon);\n return icon;\n };\n HSFileUpload.prototype.formatFileSize = function (size) {\n if (size < 1024) {\n return size.toFixed(2) + ' B';\n }\n else if (size < 1024 * 1024) {\n return (size / 1024).toFixed(2) + ' KB';\n }\n else if (size < 1024 * 1024 * 1024) {\n return (size / (1024 * 1024)).toFixed(2) + ' MB';\n }\n else if (size < 1024 * 1024 * 1024 * 1024) {\n return (size / (1024 * 1024 * 1024)).toFixed(2) + ' GB';\n }\n else {\n return (size / (1024 * 1024 * 1024 * 1024)).toFixed(2) + ' TB';\n }\n };\n HSFileUpload.prototype.splitFileName = function (file) {\n var dotIndex = file.lastIndexOf('.');\n if (dotIndex == -1)\n return { name: file, extension: '' };\n return {\n name: file.substring(0, dotIndex),\n extension: file.substring(dotIndex + 1),\n };\n };\n // Static methods\n HSFileUpload.getInstance = function (target, isInstance) {\n var elInCollection = window.$hsFileUploadCollection.find(function (el) {\n return el.element.el ===\n (typeof target === 'string' ? document.querySelector(target) : target);\n });\n return elInCollection\n ? isInstance\n ? elInCollection\n : elInCollection.element.el\n : null;\n };\n HSFileUpload.autoInit = function () {\n if (!window.$hsFileUploadCollection)\n window.$hsFileUploadCollection = [];\n document\n .querySelectorAll('[data-hs-file-upload]:not(.--prevent-on-load-init)')\n .forEach(function (el) {\n if (!window.$hsFileUploadCollection.find(function (elC) { var _a; return ((_a = elC === null || elC === void 0 ? void 0 : elC.element) === null || _a === void 0 ? void 0 : _a.el) === el; }))\n new HSFileUpload(el);\n });\n };\n return HSFileUpload;\n}(base_plugin_1.default));\nwindow.addEventListener('load', function () {\n if (document.querySelectorAll('[data-hs-file-upload]:not(.--prevent-on-load-init)').length) {\n if (typeof _ === 'undefined')\n console.error('HSFileUpload: Lodash is not available, please add it to the page.');\n if (typeof Dropzone === 'undefined')\n console.error('HSFileUpload: Dropzone is not available, please add it to the page.');\n }\n if (typeof _ !== 'undefined' && typeof Dropzone !== 'undefined') {\n HSFileUpload.autoInit();\n }\n // Uncomment for debug\n // console.log('File upload collection:', window.$hsFileUploadCollection);\n});\nif (typeof window !== 'undefined') {\n window.HSFileUpload = HSFileUpload;\n}\nexports.default = HSFileUpload;\n","/*\n * HSFileUpload\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\n\nimport { DropzoneFile } from 'dropzone';\n\nimport { htmlToElement, classToClassList } from '../../utils';\n\nimport { IFileUploadOptions, IFileUpload } from '../file-upload/interfaces';\n\nimport HSBasePlugin from '../base-plugin';\nimport { ICollectionItem } from '../../interfaces';\n\ndeclare var _: any;\ndeclare var Dropzone: any;\n\nif (typeof Dropzone !== 'undefined') Dropzone.autoDiscover = false;\n\nclass HSFileUpload\n\textends HSBasePlugin\n\timplements IFileUpload\n{\n\tprivate concatOptions: IFileUploadOptions;\n\tprivate previewTemplate: string;\n\tprivate extensions: any = {};\n\tprivate singleton: boolean;\n\n\tpublic dropzone: Dropzone | null;\n\n\tconstructor(el: HTMLElement, options?: IFileUploadOptions, events?: {}) {\n\t\tsuper(el, options, events);\n\n\t\tthis.el = typeof el === 'string' ? document.querySelector(el) : el;\n\n\t\tconst data = this.el.getAttribute('data-hs-file-upload');\n\t\tconst dataOptions: IFileUploadOptions = data ? JSON.parse(data) : {};\n\n\t\tthis.previewTemplate =\n\t\t\tthis.el.querySelector('[data-hs-file-upload-preview]')?.innerHTML ||\n\t\t\t`
\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t

\n\t\t\t\t\t\t\t.\n\t\t\t\t\t\t

\n\t\t\t\t\t\t

\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t0%\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t
`;\n\t\tthis.extensions = _.merge(\n\t\t\t{\n\t\t\t\tdefault: {\n\t\t\t\t\ticon: '',\n\t\t\t\t\tclass: 'size-5',\n\t\t\t\t},\n\t\t\t\txls: {\n\t\t\t\t\ticon: '',\n\t\t\t\t\tclass: 'size-5',\n\t\t\t\t},\n\t\t\t\tdoc: {\n\t\t\t\t\ticon: '',\n\t\t\t\t\tclass: 'size-5',\n\t\t\t\t},\n\t\t\t\tzip: {\n\t\t\t\t\ticon: '',\n\t\t\t\t\tclass: 'size-5',\n\t\t\t\t},\n\t\t\t},\n\t\t\tdataOptions.extensions,\n\t\t);\n\t\tthis.singleton = dataOptions.singleton;\n\n\t\tthis.concatOptions = {\n\t\t\tclickable: this.el.querySelector(\n\t\t\t\t'[data-hs-file-upload-trigger]',\n\t\t\t) as HTMLElement,\n\t\t\tpreviewsContainer: this.el.querySelector(\n\t\t\t\t'[data-hs-file-upload-previews]',\n\t\t\t) as HTMLElement,\n\t\t\taddRemoveLinks: false,\n\t\t\tpreviewTemplate: this.previewTemplate,\n\t\t\tautoHideTrigger: false,\n\t\t\t...dataOptions,\n\t\t\t...options,\n\t\t};\n\n\t\tthis.init();\n\t}\n\n\tprivate init() {\n\t\tthis.createCollection(window.$hsFileUploadCollection, this);\n\n\t\tthis.initDropzone();\n\t}\n\n\tprivate initDropzone() {\n\t\tconst clear = this.el.querySelector(\n\t\t\t'[data-hs-file-upload-clear]',\n\t\t) as HTMLButtonElement;\n\t\tconst pseudoTriggers = Array.from(\n\t\t\tthis.el.querySelectorAll('[data-hs-file-upload-pseudo-trigger]'),\n\t\t) as HTMLButtonElement[];\n\t\tthis.dropzone = new Dropzone(this.el, this.concatOptions);\n\n\t\tthis.dropzone.on('addedfile', (file: DropzoneFile) => this.onAddFile(file));\n\t\tthis.dropzone.on('removedfile', () => this.onRemoveFile());\n\t\tthis.dropzone.on('uploadprogress', (file: DropzoneFile, progress: number) =>\n\t\t\tthis.onUploadProgress(file, progress),\n\t\t);\n\t\tthis.dropzone.on('complete', (file: DropzoneFile) => this.onComplete(file));\n\n\t\tif (clear)\n\t\t\tclear.onclick = () => {\n\t\t\t\tif (this.dropzone.files.length) this.dropzone.removeAllFiles(true);\n\t\t\t};\n\n\t\tif (pseudoTriggers.length)\n\t\t\tpseudoTriggers.forEach((el) => {\n\t\t\t\tel.onclick = () => {\n\t\t\t\t\tif (this.concatOptions?.clickable)\n\t\t\t\t\t\t(this.concatOptions?.clickable as HTMLButtonElement).click();\n\t\t\t\t};\n\t\t\t});\n\t}\n\n\tprivate onAddFile(file: DropzoneFile) {\n\t\tconst { previewElement } = file;\n\t\tconst reloadButton = file.previewElement.querySelector(\n\t\t\t'[data-hs-file-upload-reload]',\n\t\t);\n\n\t\tif (!previewElement) return false;\n\n\t\tif (this.singleton && this.dropzone.files.length > 1)\n\t\t\tthis.dropzone.removeFile(this.dropzone.files[0]);\n\n\t\tif (reloadButton) {\n\t\t\treloadButton.addEventListener('click', (evt: MouseEvent) => {\n\t\t\t\tevt.preventDefault();\n\t\t\t\tevt.stopPropagation();\n\n\t\t\t\tconst tempFileInput = document.createElement('input');\n\t\t\t\ttempFileInput.type = 'file';\n\n\t\t\t\ttempFileInput.click();\n\n\t\t\t\ttempFileInput.addEventListener('change', (event: Event) => {\n\t\t\t\t\tconst input = event.target as HTMLInputElement;\n\t\t\t\t\tconst newFile = input.files?.[0];\n\n\t\t\t\t\tif (newFile) {\n\t\t\t\t\t\tconst dzNewFile = newFile as Dropzone.DropzoneFile;\n\t\t\t\t\t\tdzNewFile.status = Dropzone.ADDED;\n\t\t\t\t\t\tdzNewFile.accepted = true;\n\t\t\t\t\t\tdzNewFile.previewElement = file.previewElement;\n\t\t\t\t\t\tdzNewFile.previewTemplate = file.previewTemplate;\n\t\t\t\t\t\tdzNewFile.previewsContainer = file.previewsContainer;\n\n\t\t\t\t\t\tthis.dropzone.removeFile(file);\n\t\t\t\t\t\tthis.dropzone.addFile(dzNewFile);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\tthis.previewAccepted(file);\n\t}\n\n\tprivate previewAccepted(file: DropzoneFile) {\n\t\tconst { previewElement } = file;\n\t\tconst fileInfo = this.splitFileName(file.name);\n\n\t\tconst fileName = previewElement.querySelector(\n\t\t\t'[data-hs-file-upload-file-name]',\n\t\t);\n\t\tconst fileExt = previewElement.querySelector(\n\t\t\t'[data-hs-file-upload-file-ext]',\n\t\t);\n\t\tconst fileSize = previewElement.querySelector(\n\t\t\t'[data-hs-file-upload-file-size]',\n\t\t);\n\t\tconst fileIcon = previewElement.querySelector(\n\t\t\t'[data-hs-file-upload-file-icon]',\n\t\t) as HTMLElement;\n\t\tconst trigger = this.el.querySelector(\n\t\t\t'[data-hs-file-upload-trigger]',\n\t\t) as HTMLElement;\n\t\tconst preview = previewElement.querySelector(\n\t\t\t'[data-dz-thumbnail]',\n\t\t) as HTMLElement;\n\t\tconst remove = previewElement.querySelector(\n\t\t\t'[data-hs-file-upload-remove]',\n\t\t) as HTMLButtonElement;\n\n\t\tif (fileName) fileName.textContent = fileInfo.name;\n\t\tif (fileExt) fileExt.textContent = fileInfo.extension;\n\t\tif (fileSize) fileSize.textContent = this.formatFileSize(file.size);\n\n\t\tif (preview) {\n\t\t\tif (file.type.includes('image/')) preview.classList.remove('hidden');\n\t\t\telse this.setIcon(fileInfo.extension, fileIcon);\n\t\t}\n\n\t\tif (this.dropzone.files.length > 0 && this.concatOptions.autoHideTrigger)\n\t\t\ttrigger.style.display = 'none';\n\n\t\tif (remove) remove.onclick = () => this.dropzone.removeFile(file);\n\t}\n\n\tprivate onRemoveFile() {\n\t\tconst trigger = this.el.querySelector(\n\t\t\t'[data-hs-file-upload-trigger]',\n\t\t) as HTMLElement;\n\n\t\tif (this.dropzone.files.length === 0 && this.concatOptions.autoHideTrigger)\n\t\t\ttrigger.style.display = '';\n\t}\n\n\tprivate onUploadProgress(file: DropzoneFile, progress: number) {\n\t\tconst { previewElement } = file;\n\n\t\tif (!previewElement) return false;\n\n\t\tconst progressBar = previewElement.querySelector(\n\t\t\t'[data-hs-file-upload-progress-bar]',\n\t\t);\n\t\tconst progressBarPane = previewElement.querySelector(\n\t\t\t'[data-hs-file-upload-progress-bar-pane]',\n\t\t) as HTMLElement;\n\t\tconst progressBarValue = previewElement.querySelector(\n\t\t\t'[data-hs-file-upload-progress-bar-value]',\n\t\t) as HTMLElement;\n\n\t\tconst currentProgress = Math.floor(progress);\n\n\t\tif (progressBar)\n\t\t\tprogressBar.setAttribute('aria-valuenow', `${currentProgress}`);\n\t\tif (progressBarPane) progressBarPane.style.width = `${currentProgress}%`;\n\t\tif (progressBarValue) progressBarValue.innerText = `${currentProgress}`;\n\t}\n\n\tprivate onComplete(file: DropzoneFile) {\n\t\tconst { previewElement } = file;\n\n\t\tif (!previewElement) return false;\n\n\t\tpreviewElement.classList.add('complete');\n\t}\n\n\tprivate setIcon(ext: string, file: HTMLElement) {\n\t\tconst icon = this.createIcon(ext);\n\n\t\tfile.append(icon);\n\t}\n\n\tprivate createIcon(ext: string) {\n\t\tconst icon = this.extensions[ext]?.icon\n\t\t\t? htmlToElement(this.extensions[ext].icon)\n\t\t\t: htmlToElement(this.extensions.default.icon);\n\n\t\tclassToClassList(\n\t\t\tthis.extensions[ext]?.class\n\t\t\t\t? this.extensions[ext].class\n\t\t\t\t: this.extensions.default.class,\n\t\t\ticon,\n\t\t);\n\n\t\treturn icon;\n\t}\n\n\tprivate formatFileSize(size: number) {\n\t\tif (size < 1024) {\n\t\t\treturn size.toFixed(2) + ' B';\n\t\t} else if (size < 1024 * 1024) {\n\t\t\treturn (size / 1024).toFixed(2) + ' KB';\n\t\t} else if (size < 1024 * 1024 * 1024) {\n\t\t\treturn (size / (1024 * 1024)).toFixed(2) + ' MB';\n\t\t} else if (size < 1024 * 1024 * 1024 * 1024) {\n\t\t\treturn (size / (1024 * 1024 * 1024)).toFixed(2) + ' GB';\n\t\t} else {\n\t\t\treturn (size / (1024 * 1024 * 1024 * 1024)).toFixed(2) + ' TB';\n\t\t}\n\t}\n\n\tprivate splitFileName(file: string): {\n\t\tname: string;\n\t\textension: string;\n\t} {\n\t\tlet dotIndex = file.lastIndexOf('.');\n\n\t\tif (dotIndex == -1) return { name: file, extension: '' };\n\n\t\treturn {\n\t\t\tname: file.substring(0, dotIndex),\n\t\t\textension: file.substring(dotIndex + 1),\n\t\t};\n\t}\n\n\t// Static methods\n\tstatic getInstance(target: HTMLElement | string, isInstance?: boolean) {\n\t\tconst elInCollection = window.$hsFileUploadCollection.find(\n\t\t\t(el) =>\n\t\t\t\tel.element.el ===\n\t\t\t\t(typeof target === 'string' ? document.querySelector(target) : target),\n\t\t);\n\n\t\treturn elInCollection\n\t\t\t? isInstance\n\t\t\t\t? elInCollection\n\t\t\t\t: elInCollection.element.el\n\t\t\t: null;\n\t}\n\n\tstatic autoInit() {\n\t\tif (!window.$hsFileUploadCollection) window.$hsFileUploadCollection = [];\n\n\t\tdocument\n\t\t\t.querySelectorAll('[data-hs-file-upload]:not(.--prevent-on-load-init)')\n\t\t\t.forEach((el: HTMLElement) => {\n\t\t\t\tif (\n\t\t\t\t\t!window.$hsFileUploadCollection.find(\n\t\t\t\t\t\t(elC) => (elC?.element?.el as HTMLElement) === el,\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t\tnew HSFileUpload(el);\n\t\t\t});\n\t}\n}\n\ndeclare global {\n\tinterface Window {\n\t\tHSFileUpload: Function;\n\t\t$hsFileUploadCollection: ICollectionItem[];\n\t}\n}\n\nwindow.addEventListener('load', () => {\n\tif (\n\t\tdocument.querySelectorAll(\n\t\t\t'[data-hs-file-upload]:not(.--prevent-on-load-init)',\n\t\t).length\n\t) {\n\t\tif (typeof _ === 'undefined')\n\t\t\tconsole.error(\n\t\t\t\t'HSFileUpload: Lodash is not available, please add it to the page.',\n\t\t\t);\n\t\tif (typeof Dropzone === 'undefined')\n\t\t\tconsole.error(\n\t\t\t\t'HSFileUpload: Dropzone is not available, please add it to the page.',\n\t\t\t);\n\t}\n\n\tif (typeof _ !== 'undefined' && typeof Dropzone !== 'undefined') {\n\t\tHSFileUpload.autoInit();\n\t}\n\n\t// Uncomment for debug\n\t// console.log('File upload collection:', window.$hsFileUploadCollection);\n});\n\nif (typeof window !== 'undefined') {\n\twindow.HSFileUpload = HSFileUpload;\n}\n\nexport default HSFileUpload;\n","\"use strict\";\n/*\n * HSInputNumber\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../../utils\");\nvar base_plugin_1 = __importDefault(require(\"../base-plugin\"));\nvar HSInputNumber = /** @class */ (function (_super) {\n __extends(HSInputNumber, _super);\n function HSInputNumber(el, options) {\n var _this = _super.call(this, el, options) || this;\n _this.input = _this.el.querySelector('[data-hs-input-number-input]') || null;\n _this.increment =\n _this.el.querySelector('[data-hs-input-number-increment]') || null;\n _this.decrement =\n _this.el.querySelector('[data-hs-input-number-decrement]') || null;\n if (_this.input)\n _this.checkIsNumberAndConvert();\n var data = _this.el.dataset.hsInputNumber;\n var dataOptions = data\n ? JSON.parse(data)\n : { step: 1 };\n var concatOptions = __assign(__assign({}, dataOptions), options);\n _this.minInputValue = 'min' in concatOptions ? concatOptions.min : 0;\n _this.maxInputValue = 'max' in concatOptions ? concatOptions.max : null;\n _this.step =\n 'step' in concatOptions && concatOptions.step > 0\n ? concatOptions.step\n : 1;\n _this.init();\n return _this;\n }\n HSInputNumber.prototype.init = function () {\n this.createCollection(window.$hsInputNumberCollection, this);\n if (this.input && this.increment)\n this.build();\n };\n HSInputNumber.prototype.checkIsNumberAndConvert = function () {\n var value = this.input.value.trim();\n var cleanedValue = this.cleanAndExtractNumber(value);\n if (cleanedValue !== null) {\n this.inputValue = cleanedValue;\n this.input.value = cleanedValue.toString();\n }\n else {\n this.inputValue = 0;\n this.input.value = '0';\n }\n };\n HSInputNumber.prototype.cleanAndExtractNumber = function (value) {\n var cleanedArray = [];\n var decimalFound = false;\n value.split('').forEach(function (char) {\n if (char >= '0' && char <= '9')\n cleanedArray.push(char);\n else if (char === '.' && !decimalFound) {\n cleanedArray.push(char);\n decimalFound = true;\n }\n });\n var cleanedValue = cleanedArray.join('');\n var number = parseFloat(cleanedValue);\n return isNaN(number) ? null : number;\n };\n HSInputNumber.prototype.build = function () {\n if (this.input)\n this.buildInput();\n if (this.increment)\n this.buildIncrement();\n if (this.decrement)\n this.buildDecrement();\n if (this.inputValue <= 0 && this.minInputValue === 0) {\n this.inputValue = 0;\n this.input.value = '0';\n }\n if (this.inputValue <= 0 || this.minInputValue < 0)\n this.changeValue();\n if (this.input.hasAttribute('disabled'))\n this.disableButtons();\n };\n HSInputNumber.prototype.buildInput = function () {\n var _this = this;\n this.input.addEventListener('input', function () { return _this.changeValue(); });\n };\n HSInputNumber.prototype.buildIncrement = function () {\n var _this = this;\n this.increment.addEventListener('click', function () {\n _this.changeValue('increment');\n });\n };\n HSInputNumber.prototype.buildDecrement = function () {\n var _this = this;\n this.decrement.addEventListener('click', function () {\n _this.changeValue('decrement');\n });\n };\n HSInputNumber.prototype.changeValue = function (event) {\n var _a, _b;\n if (event === void 0) { event = 'none'; }\n var payload = { inputValue: this.inputValue };\n var minInputValue = (_a = this.minInputValue) !== null && _a !== void 0 ? _a : Number.MIN_SAFE_INTEGER;\n var maxInputValue = (_b = this.maxInputValue) !== null && _b !== void 0 ? _b : Number.MAX_SAFE_INTEGER;\n this.inputValue = isNaN(this.inputValue) ? 0 : this.inputValue;\n switch (event) {\n case 'increment':\n var incrementedResult = this.inputValue + this.step;\n this.inputValue =\n incrementedResult >= minInputValue &&\n incrementedResult <= maxInputValue\n ? incrementedResult\n : maxInputValue;\n this.input.value = this.inputValue.toString();\n break;\n case 'decrement':\n var decrementedResult = this.inputValue - this.step;\n this.inputValue =\n decrementedResult >= minInputValue &&\n decrementedResult <= maxInputValue\n ? decrementedResult\n : minInputValue;\n this.input.value = this.inputValue.toString();\n break;\n default:\n var defaultResult = isNaN(parseInt(this.input.value))\n ? 0\n : parseInt(this.input.value);\n this.inputValue =\n defaultResult >= maxInputValue\n ? maxInputValue\n : defaultResult <= minInputValue\n ? minInputValue\n : defaultResult;\n if (this.inputValue <= minInputValue)\n this.input.value = this.inputValue.toString();\n break;\n }\n payload.inputValue = this.inputValue;\n if (this.inputValue === minInputValue) {\n this.el.classList.add('disabled');\n if (this.decrement)\n this.disableButtons('decrement');\n }\n else {\n this.el.classList.remove('disabled');\n if (this.decrement)\n this.enableButtons('decrement');\n }\n if (this.inputValue === maxInputValue) {\n this.el.classList.add('disabled');\n if (this.increment)\n this.disableButtons('increment');\n }\n else {\n this.el.classList.remove('disabled');\n if (this.increment)\n this.enableButtons('increment');\n }\n this.fireEvent('change', payload);\n (0, utils_1.dispatch)('change.hs.inputNumber', this.el, payload);\n };\n HSInputNumber.prototype.disableButtons = function (mode) {\n if (mode === void 0) { mode = 'all'; }\n if (mode === 'all') {\n if (this.increment.tagName === 'BUTTON' ||\n this.increment.tagName === 'INPUT')\n this.increment.setAttribute('disabled', 'disabled');\n if (this.decrement.tagName === 'BUTTON' ||\n this.decrement.tagName === 'INPUT')\n this.decrement.setAttribute('disabled', 'disabled');\n }\n else if (mode === 'increment') {\n if (this.increment.tagName === 'BUTTON' ||\n this.increment.tagName === 'INPUT')\n this.increment.setAttribute('disabled', 'disabled');\n }\n else if (mode === 'decrement') {\n if (this.decrement.tagName === 'BUTTON' ||\n this.decrement.tagName === 'INPUT')\n this.decrement.setAttribute('disabled', 'disabled');\n }\n };\n HSInputNumber.prototype.enableButtons = function (mode) {\n if (mode === void 0) { mode = 'all'; }\n if (mode === 'all') {\n if (this.increment.tagName === 'BUTTON' ||\n this.increment.tagName === 'INPUT')\n this.increment.removeAttribute('disabled');\n if (this.decrement.tagName === 'BUTTON' ||\n this.decrement.tagName === 'INPUT')\n this.decrement.removeAttribute('disabled');\n }\n else if (mode === 'increment') {\n if (this.increment.tagName === 'BUTTON' ||\n this.increment.tagName === 'INPUT')\n this.increment.removeAttribute('disabled');\n }\n else if (mode === 'decrement') {\n if (this.decrement.tagName === 'BUTTON' ||\n this.decrement.tagName === 'INPUT')\n this.decrement.removeAttribute('disabled');\n }\n };\n // Global method\n HSInputNumber.getInstance = function (target, isInstance) {\n var elInCollection = window.$hsInputNumberCollection.find(function (el) {\n return el.element.el ===\n (typeof target === 'string' ? document.querySelector(target) : target);\n });\n return elInCollection\n ? isInstance\n ? elInCollection\n : elInCollection.element\n : null;\n };\n HSInputNumber.autoInit = function () {\n if (!window.$hsInputNumberCollection)\n window.$hsInputNumberCollection = [];\n document\n .querySelectorAll('[data-hs-input-number]:not(.--prevent-on-load-init)')\n .forEach(function (el) {\n if (!window.$hsInputNumberCollection.find(function (elC) { var _a; return ((_a = elC === null || elC === void 0 ? void 0 : elC.element) === null || _a === void 0 ? void 0 : _a.el) === el; }))\n new HSInputNumber(el);\n });\n };\n return HSInputNumber;\n}(base_plugin_1.default));\nwindow.addEventListener('load', function () {\n HSInputNumber.autoInit();\n // Uncomment for debug\n // console.log('Input number collection:', window.$hsInputNumberCollection);\n});\nif (typeof window !== 'undefined') {\n window.HSInputNumber = HSInputNumber;\n}\nexports.default = HSInputNumber;\n","/*\n * HSInputNumber\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\n\nimport { dispatch } from '../../utils';\n\nimport {\n\tIInputNumberOptions,\n\tIInputNumber,\n} from '../input-number/interfaces';\n\nimport HSBasePlugin from '../base-plugin';\n\nclass HSInputNumber\n\textends HSBasePlugin\n\timplements IInputNumber\n{\n\tprivate readonly input: HTMLInputElement | null;\n\tprivate readonly increment: HTMLElement | null;\n\tprivate readonly decrement: HTMLElement | null;\n\tprivate inputValue: number | null;\n\tprivate readonly minInputValue: number | null;\n\tprivate readonly maxInputValue: number | null;\n\tprivate readonly step: number;\n\n\tconstructor(el: HTMLElement, options?: IInputNumberOptions) {\n\t\tsuper(el, options);\n\n\t\tthis.input = this.el.querySelector('[data-hs-input-number-input]') || null;\n\t\tthis.increment =\n\t\t\tthis.el.querySelector('[data-hs-input-number-increment]') || null;\n\t\tthis.decrement =\n\t\t\tthis.el.querySelector('[data-hs-input-number-decrement]') || null;\n\n\t\tif (this.input) this.checkIsNumberAndConvert();\n\n\t\tconst data = this.el.dataset.hsInputNumber;\n\t\tconst dataOptions: IInputNumberOptions = data\n\t\t\t? JSON.parse(data)\n\t\t\t: { step: 1 };\n\t\tconst concatOptions = {\n\t\t\t...dataOptions,\n\t\t\t...options,\n\t\t};\n\n\t\tthis.minInputValue = 'min' in concatOptions ? concatOptions.min : 0;\n\t\tthis.maxInputValue = 'max' in concatOptions ? concatOptions.max : null;\n\t\tthis.step =\n\t\t\t'step' in concatOptions && concatOptions.step > 0\n\t\t\t\t? concatOptions.step\n\t\t\t\t: 1;\n\n\t\tthis.init();\n\t}\n\n\tprivate init() {\n\t\tthis.createCollection(window.$hsInputNumberCollection, this);\n\n\t\tif (this.input && this.increment) this.build();\n\t}\n\n\tprivate checkIsNumberAndConvert() {\n\t\tconst value = this.input.value.trim();\n\t\tconst cleanedValue = this.cleanAndExtractNumber(value);\n\n\t\tif (cleanedValue !== null) {\n\t\t\tthis.inputValue = cleanedValue;\n\t\t\tthis.input.value = cleanedValue.toString();\n\t\t} else {\n\t\t\tthis.inputValue = 0;\n\t\t\tthis.input.value = '0';\n\t\t}\n\t}\n\n\tprivate cleanAndExtractNumber(value: string): number | null {\n\t\tconst cleanedArray: string[] = [];\n\t\tlet decimalFound = false;\n\n\t\tvalue.split('').forEach((char) => {\n\t\t\tif (char >= '0' && char <= '9') cleanedArray.push(char);\n\t\t\telse if (char === '.' && !decimalFound) {\n\t\t\t\tcleanedArray.push(char);\n\t\t\t\tdecimalFound = true;\n\t\t\t}\n\t\t});\n\n\t\tconst cleanedValue = cleanedArray.join('');\n\t\tconst number = parseFloat(cleanedValue);\n\n\t\treturn isNaN(number) ? null : number;\n\t}\n\n\tprivate build() {\n\t\tif (this.input) this.buildInput();\n\t\tif (this.increment) this.buildIncrement();\n\t\tif (this.decrement) this.buildDecrement();\n\n\t\tif (this.inputValue <= 0 && this.minInputValue === 0) {\n\t\t\tthis.inputValue = 0;\n\t\t\tthis.input.value = '0';\n\t\t}\n\n\t\tif (this.inputValue <= 0 || this.minInputValue < 0) this.changeValue();\n\n\t\tif (this.input.hasAttribute('disabled')) this.disableButtons();\n\t}\n\n\tprivate buildInput() {\n\t\tthis.input.addEventListener('input', () => this.changeValue());\n\t}\n\n\tprivate buildIncrement() {\n\t\tthis.increment.addEventListener('click', () => {\n\t\t\tthis.changeValue('increment');\n\t\t});\n\t}\n\n\tprivate buildDecrement() {\n\t\tthis.decrement.addEventListener('click', () => {\n\t\t\tthis.changeValue('decrement');\n\t\t});\n\t}\n\n\tprivate changeValue(event = 'none') {\n\t\tconst payload = { inputValue: this.inputValue };\n\t\tconst minInputValue = this.minInputValue ?? Number.MIN_SAFE_INTEGER;\n\t\tconst maxInputValue = this.maxInputValue ?? Number.MAX_SAFE_INTEGER;\n\n\t\tthis.inputValue = isNaN(this.inputValue) ? 0 : this.inputValue;\n\n\t\tswitch (event) {\n\t\t\tcase 'increment':\n\t\t\t\tconst incrementedResult = this.inputValue + this.step;\n\t\t\t\tthis.inputValue =\n\t\t\t\t\tincrementedResult >= minInputValue &&\n\t\t\t\t\tincrementedResult <= maxInputValue\n\t\t\t\t\t\t? incrementedResult\n\t\t\t\t\t\t: maxInputValue;\n\t\t\t\tthis.input.value = this.inputValue.toString();\n\t\t\t\tbreak;\n\t\t\tcase 'decrement':\n\t\t\t\tconst decrementedResult = this.inputValue - this.step;\n\t\t\t\tthis.inputValue =\n\t\t\t\t\tdecrementedResult >= minInputValue &&\n\t\t\t\t\tdecrementedResult <= maxInputValue\n\t\t\t\t\t\t? decrementedResult\n\t\t\t\t\t\t: minInputValue;\n\t\t\t\tthis.input.value = this.inputValue.toString();\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tconst defaultResult = isNaN(parseInt(this.input.value))\n\t\t\t\t\t? 0\n\t\t\t\t\t: parseInt(this.input.value);\n\t\t\t\tthis.inputValue =\n\t\t\t\t\tdefaultResult >= maxInputValue\n\t\t\t\t\t\t? maxInputValue\n\t\t\t\t\t\t: defaultResult <= minInputValue\n\t\t\t\t\t\t\t? minInputValue\n\t\t\t\t\t\t\t: defaultResult;\n\t\t\t\tif (this.inputValue <= minInputValue)\n\t\t\t\t\tthis.input.value = this.inputValue.toString();\n\t\t\t\tbreak;\n\t\t}\n\n\t\tpayload.inputValue = this.inputValue;\n\n\t\tif (this.inputValue === minInputValue) {\n\t\t\tthis.el.classList.add('disabled');\n\t\t\tif (this.decrement) this.disableButtons('decrement');\n\t\t} else {\n\t\t\tthis.el.classList.remove('disabled');\n\t\t\tif (this.decrement) this.enableButtons('decrement');\n\t\t}\n\t\tif (this.inputValue === maxInputValue) {\n\t\t\tthis.el.classList.add('disabled');\n\t\t\tif (this.increment) this.disableButtons('increment');\n\t\t} else {\n\t\t\tthis.el.classList.remove('disabled');\n\t\t\tif (this.increment) this.enableButtons('increment');\n\t\t}\n\n\t\tthis.fireEvent('change', payload);\n\t\tdispatch('change.hs.inputNumber', this.el, payload);\n\t}\n\n\tprivate disableButtons(mode = 'all') {\n\t\tif (mode === 'all') {\n\t\t\tif (\n\t\t\t\tthis.increment.tagName === 'BUTTON' ||\n\t\t\t\tthis.increment.tagName === 'INPUT'\n\t\t\t)\n\t\t\t\tthis.increment.setAttribute('disabled', 'disabled');\n\t\t\tif (\n\t\t\t\tthis.decrement.tagName === 'BUTTON' ||\n\t\t\t\tthis.decrement.tagName === 'INPUT'\n\t\t\t)\n\t\t\t\tthis.decrement.setAttribute('disabled', 'disabled');\n\t\t} else if (mode === 'increment') {\n\t\t\tif (\n\t\t\t\tthis.increment.tagName === 'BUTTON' ||\n\t\t\t\tthis.increment.tagName === 'INPUT'\n\t\t\t)\n\t\t\t\tthis.increment.setAttribute('disabled', 'disabled');\n\t\t} else if (mode === 'decrement') {\n\t\t\tif (\n\t\t\t\tthis.decrement.tagName === 'BUTTON' ||\n\t\t\t\tthis.decrement.tagName === 'INPUT'\n\t\t\t)\n\t\t\t\tthis.decrement.setAttribute('disabled', 'disabled');\n\t\t}\n\t}\n\n\tprivate enableButtons(mode = 'all') {\n\t\tif (mode === 'all') {\n\t\t\tif (\n\t\t\t\tthis.increment.tagName === 'BUTTON' ||\n\t\t\t\tthis.increment.tagName === 'INPUT'\n\t\t\t)\n\t\t\t\tthis.increment.removeAttribute('disabled');\n\t\t\tif (\n\t\t\t\tthis.decrement.tagName === 'BUTTON' ||\n\t\t\t\tthis.decrement.tagName === 'INPUT'\n\t\t\t)\n\t\t\t\tthis.decrement.removeAttribute('disabled');\n\t\t} else if (mode === 'increment') {\n\t\t\tif (\n\t\t\t\tthis.increment.tagName === 'BUTTON' ||\n\t\t\t\tthis.increment.tagName === 'INPUT'\n\t\t\t)\n\t\t\t\tthis.increment.removeAttribute('disabled');\n\t\t} else if (mode === 'decrement') {\n\t\t\tif (\n\t\t\t\tthis.decrement.tagName === 'BUTTON' ||\n\t\t\t\tthis.decrement.tagName === 'INPUT'\n\t\t\t)\n\t\t\t\tthis.decrement.removeAttribute('disabled');\n\t\t}\n\t}\n\n\t// Global method\n\tstatic getInstance(target: HTMLElement | string, isInstance?: boolean) {\n\t\tconst elInCollection = window.$hsInputNumberCollection.find(\n\t\t\t(el) =>\n\t\t\t\tel.element.el ===\n\t\t\t\t(typeof target === 'string' ? document.querySelector(target) : target),\n\t\t);\n\n\t\treturn elInCollection\n\t\t\t? isInstance\n\t\t\t\t? elInCollection\n\t\t\t\t: elInCollection.element\n\t\t\t: null;\n\t}\n\n\tstatic autoInit() {\n\t\tif (!window.$hsInputNumberCollection) window.$hsInputNumberCollection = [];\n\n\t\tdocument\n\t\t\t.querySelectorAll('[data-hs-input-number]:not(.--prevent-on-load-init)')\n\t\t\t.forEach((el: HTMLElement) => {\n\t\t\t\tif (\n\t\t\t\t\t!window.$hsInputNumberCollection.find(\n\t\t\t\t\t\t(elC) => (elC?.element?.el as HTMLElement) === el,\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t\tnew HSInputNumber(el);\n\t\t\t});\n\t}\n}\n\ndeclare global {\n\tinterface Window {\n\t\tHSInputNumber: Function;\n\t\t$hsInputNumberCollection: {\n\t\t\tid: number;\n\t\t\telement: HSInputNumber;\n\t\t}[];\n\t}\n}\n\nwindow.addEventListener('load', () => {\n\tHSInputNumber.autoInit();\n\n\t// Uncomment for debug\n\t// console.log('Input number collection:', window.$hsInputNumberCollection);\n});\n\nif (typeof window !== 'undefined') {\n\twindow.HSInputNumber = HSInputNumber;\n}\n\nexport default HSInputNumber;\n","\"use strict\";\n/*\n * HSOverlay\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../../utils\");\nvar constants_1 = require(\"../../constants\");\nvar base_plugin_1 = __importDefault(require(\"../base-plugin\"));\nvar HSOverlay = /** @class */ (function (_super) {\n __extends(HSOverlay, _super);\n function HSOverlay(el, options, events) {\n var _a, _b, _c, _d, _e;\n var _this = _super.call(this, el, options, events) || this;\n var data = el.getAttribute('data-hs-overlay-options');\n var dataOptions = data ? JSON.parse(data) : {};\n var concatOptions = __assign(__assign({}, dataOptions), options);\n _this.hiddenClass = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.hiddenClass) || 'hidden';\n _this.emulateScrollbarSpace = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.emulateScrollbarSpace) || false;\n _this.isClosePrev = (_a = concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.isClosePrev) !== null && _a !== void 0 ? _a : true;\n _this.backdropClasses =\n (_b = concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.backdropClasses) !== null && _b !== void 0 ? _b : 'hs-overlay-backdrop transition duration fixed inset-0 bg-gray-900 bg-opacity-50 dark:bg-opacity-80 dark:bg-neutral-900';\n _this.backdropExtraClasses = (_c = concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.backdropExtraClasses) !== null && _c !== void 0 ? _c : '';\n _this.moveOverlayToBody = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.moveOverlayToBody) || null;\n _this.openNextOverlay = false;\n _this.autoHide = null;\n _this.overlayId = _this.el.getAttribute('data-hs-overlay');\n _this.overlay = document.querySelector(_this.overlayId);\n _this.initContainer = ((_d = _this.overlay) === null || _d === void 0 ? void 0 : _d.parentElement) || null;\n if (_this.overlay) {\n _this.isCloseWhenClickInside = (0, utils_1.stringToBoolean)((0, utils_1.getClassProperty)(_this.overlay, '--close-when-click-inside', 'false') ||\n 'false');\n _this.isTabAccessibilityLimited = (0, utils_1.stringToBoolean)((0, utils_1.getClassProperty)(_this.overlay, '--tab-accessibility-limited', 'true') ||\n 'true');\n _this.isLayoutAffect = (0, utils_1.stringToBoolean)((0, utils_1.getClassProperty)(_this.overlay, '--is-layout-affect', 'false') ||\n 'false');\n _this.hasAutofocus = (0, utils_1.stringToBoolean)((0, utils_1.getClassProperty)(_this.overlay, '--has-autofocus', 'true') || 'true');\n _this.hasAbilityToCloseOnBackdropClick = (0, utils_1.stringToBoolean)(_this.overlay.getAttribute('data-hs-overlay-keyboard') || 'true');\n var autoCloseBreakpoint = (0, utils_1.getClassProperty)(_this.overlay, '--auto-close');\n _this.autoClose =\n !isNaN(+autoCloseBreakpoint) && isFinite(+autoCloseBreakpoint)\n ? +autoCloseBreakpoint\n : constants_1.BREAKPOINTS[autoCloseBreakpoint] || null;\n var openedBreakpoint = (0, utils_1.getClassProperty)(_this.overlay, '--opened');\n _this.openedBreakpoint =\n (!isNaN(+openedBreakpoint) && isFinite(+openedBreakpoint)\n ? +openedBreakpoint\n : constants_1.BREAKPOINTS[openedBreakpoint]) || null;\n }\n _this.animationTarget =\n ((_e = _this === null || _this === void 0 ? void 0 : _this.overlay) === null || _e === void 0 ? void 0 : _e.querySelector('.hs-overlay-animation-target')) ||\n _this.overlay;\n if (_this.overlay)\n _this.init();\n return _this;\n }\n HSOverlay.prototype.init = function () {\n var _this = this;\n var _a;\n this.createCollection(window.$hsOverlayCollection, this);\n if (this.isLayoutAffect && this.openedBreakpoint) {\n var instance = HSOverlay.getInstance(this.el, true);\n HSOverlay.setOpened(this.openedBreakpoint, instance);\n }\n if ((_a = this === null || this === void 0 ? void 0 : this.el) === null || _a === void 0 ? void 0 : _a.ariaExpanded) {\n if (this.overlay.classList.contains('opened'))\n this.el.ariaExpanded = 'true';\n else\n this.el.ariaExpanded = 'false';\n }\n this.el.addEventListener('click', function () {\n if (_this.overlay.classList.contains('opened'))\n _this.close();\n else\n _this.open();\n });\n this.overlay.addEventListener('click', function (evt) {\n if (evt.target.id &&\n \"#\".concat(evt.target.id) === _this.overlayId &&\n _this.isCloseWhenClickInside &&\n _this.hasAbilityToCloseOnBackdropClick) {\n _this.close();\n }\n });\n };\n HSOverlay.prototype.hideAuto = function () {\n var _this = this;\n var time = parseInt((0, utils_1.getClassProperty)(this.overlay, '--auto-hide', '0'));\n if (time) {\n this.autoHide = setTimeout(function () {\n _this.close();\n }, time);\n }\n };\n HSOverlay.prototype.checkTimer = function () {\n if (this.autoHide) {\n clearTimeout(this.autoHide);\n this.autoHide = null;\n }\n };\n HSOverlay.prototype.buildBackdrop = function () {\n var _this = this;\n var overlayClasses = this.overlay.classList.value.split(' ');\n var overlayZIndex = parseInt(window.getComputedStyle(this.overlay).getPropertyValue('z-index'));\n var backdropId = this.overlay.getAttribute('data-hs-overlay-backdrop-container') || false;\n var backdrop = document.createElement('div');\n var backdropClasses = \"\".concat(this.backdropClasses, \" \").concat(this.backdropExtraClasses);\n var closeOnBackdrop = (0, utils_1.getClassProperty)(this.overlay, '--overlay-backdrop', 'true') !== 'static';\n var disableBackdrop = (0, utils_1.getClassProperty)(this.overlay, '--overlay-backdrop', 'true') === 'false';\n backdrop.id = \"\".concat(this.overlay.id, \"-backdrop\");\n if ('style' in backdrop)\n backdrop.style.zIndex = \"\".concat(overlayZIndex - 1);\n for (var _i = 0, overlayClasses_1 = overlayClasses; _i < overlayClasses_1.length; _i++) {\n var value = overlayClasses_1[_i];\n if (value.startsWith('hs-overlay-backdrop-open:') ||\n value.includes(':hs-overlay-backdrop-open:')) {\n backdropClasses += \" \".concat(value);\n }\n }\n if (disableBackdrop)\n return;\n if (backdropId) {\n backdrop = document.querySelector(backdropId).cloneNode(true);\n backdrop.classList.remove('hidden');\n backdropClasses = \"\".concat(backdrop.classList.toString());\n backdrop.classList.value = '';\n }\n if (closeOnBackdrop) {\n backdrop.addEventListener('click', function () { return _this.close(); }, true);\n }\n backdrop.setAttribute('data-hs-overlay-backdrop-template', '');\n document.body.appendChild(backdrop);\n setTimeout(function () {\n backdrop.classList.value = backdropClasses;\n });\n };\n HSOverlay.prototype.destroyBackdrop = function () {\n var backdrop = document.querySelector(\"#\".concat(this.overlay.id, \"-backdrop\"));\n if (!backdrop)\n return;\n if (this.openNextOverlay) {\n backdrop.style.transitionDuration = \"\".concat(parseFloat(window\n .getComputedStyle(backdrop)\n .transitionDuration.replace(/[^\\d.-]/g, '')) * 1.8, \"s\");\n }\n backdrop.classList.add('opacity-0');\n (0, utils_1.afterTransition)(backdrop, function () {\n backdrop.remove();\n });\n };\n HSOverlay.prototype.focusElement = function () {\n var input = this.overlay.querySelector('[autofocus]');\n if (!input)\n return false;\n else\n input.focus();\n };\n HSOverlay.prototype.getScrollbarSize = function () {\n var div = document.createElement('div');\n div.style.overflow = 'scroll';\n div.style.width = '100px';\n div.style.height = '100px';\n document.body.appendChild(div);\n var scrollbarSize = div.offsetWidth - div.clientWidth;\n document.body.removeChild(div);\n return scrollbarSize;\n };\n // Public methods\n HSOverlay.prototype.open = function () {\n var _this = this;\n if (!this.overlay)\n return false;\n var openedOverlays = document.querySelectorAll('.hs-overlay.open');\n var currentlyOpened = window.$hsOverlayCollection.find(function (el) {\n return Array.from(openedOverlays).includes(el.element.overlay) &&\n !el.element.isLayoutAffect;\n });\n var toggles = document.querySelectorAll(\"[data-hs-overlay=\\\"#\".concat(this.overlay.id, \"\\\"]\"));\n var disabledScroll = (0, utils_1.getClassProperty)(this.overlay, '--body-scroll', 'false') !== 'true';\n if (this.isClosePrev && currentlyOpened) {\n this.openNextOverlay = true;\n return currentlyOpened.element.close().then(function () {\n _this.open();\n _this.openNextOverlay = false;\n });\n }\n if (disabledScroll) {\n document.body.style.overflow = 'hidden';\n if (this.emulateScrollbarSpace)\n document.body.style.paddingRight = \"\".concat(this.getScrollbarSize(), \"px\");\n }\n this.buildBackdrop();\n this.checkTimer();\n this.hideAuto();\n toggles.forEach(function (toggle) {\n if (toggle.ariaExpanded)\n toggle.ariaExpanded = 'true';\n });\n this.overlay.classList.remove(this.hiddenClass);\n this.overlay.setAttribute('aria-overlay', 'true');\n this.overlay.setAttribute('tabindex', '-1');\n setTimeout(function () {\n if (_this.overlay.classList.contains('opened'))\n return false;\n _this.overlay.classList.add('open', 'opened');\n if (_this.isLayoutAffect)\n document.body.classList.add('hs-overlay-body-open');\n _this.fireEvent('open', _this.el);\n (0, utils_1.dispatch)('open.hs.overlay', _this.el, _this.el);\n if (_this.hasAutofocus)\n _this.focusElement();\n }, 50);\n };\n HSOverlay.prototype.close = function (forceClose) {\n var _this = this;\n if (forceClose === void 0) { forceClose = false; }\n if (this.isLayoutAffect)\n document.body.classList.remove('hs-overlay-body-open');\n var closeFn = function (cb) {\n if (_this.overlay.classList.contains('open'))\n return false;\n var toggles = document.querySelectorAll(\"[data-hs-overlay=\\\"#\".concat(_this.overlay.id, \"\\\"]\"));\n toggles.forEach(function (toggle) {\n if (toggle.ariaExpanded)\n toggle.ariaExpanded = 'false';\n });\n _this.overlay.classList.add(_this.hiddenClass);\n _this.destroyBackdrop();\n _this.fireEvent('close', _this.el);\n (0, utils_1.dispatch)('close.hs.overlay', _this.el, _this.el);\n if (!document.querySelector('.hs-overlay.opened')) {\n document.body.style.overflow = '';\n if (_this.emulateScrollbarSpace)\n document.body.style.paddingRight = '';\n }\n cb(_this.overlay);\n };\n return new Promise(function (resolve) {\n if (!_this.overlay)\n return false;\n _this.overlay.classList.remove('open', 'opened');\n _this.overlay.removeAttribute('aria-overlay');\n _this.overlay.removeAttribute('tabindex');\n if (forceClose)\n closeFn(resolve);\n else\n (0, utils_1.afterTransition)(_this.animationTarget, function () { return closeFn(resolve); });\n });\n };\n // Static methods\n HSOverlay.getInstance = function (target, isInstance) {\n var elInCollection = window.$hsOverlayCollection.find(function (el) {\n return el.element.el ===\n (typeof target === 'string'\n ? document.querySelector(target)\n : target) ||\n el.element.overlay ===\n (typeof target === 'string'\n ? document.querySelector(target)\n : target);\n });\n return elInCollection\n ? isInstance\n ? elInCollection\n : elInCollection.element.el\n : null;\n };\n HSOverlay.autoInit = function () {\n if (!window.$hsOverlayCollection)\n window.$hsOverlayCollection = [];\n document\n .querySelectorAll('[data-hs-overlay]:not(.--prevent-on-load-init)')\n .forEach(function (el) {\n if (!window.$hsOverlayCollection.find(function (elC) { var _a; return ((_a = elC === null || elC === void 0 ? void 0 : elC.element) === null || _a === void 0 ? void 0 : _a.el) === el; }))\n new HSOverlay(el);\n });\n if (window.$hsOverlayCollection) {\n document.addEventListener('keydown', function (evt) {\n return HSOverlay.accessibility(evt);\n });\n }\n };\n HSOverlay.open = function (target) {\n var elInCollection = window.$hsOverlayCollection.find(function (el) {\n return el.element.el ===\n (typeof target === 'string'\n ? document.querySelector(target)\n : target) ||\n el.element.overlay ===\n (typeof target === 'string'\n ? document.querySelector(target)\n : target);\n });\n if (elInCollection &&\n elInCollection.element.overlay.classList.contains(elInCollection.element.hiddenClass))\n elInCollection.element.open();\n };\n HSOverlay.close = function (target) {\n var elInCollection = window.$hsOverlayCollection.find(function (el) {\n return el.element.el ===\n (typeof target === 'string'\n ? document.querySelector(target)\n : target) ||\n el.element.overlay ===\n (typeof target === 'string'\n ? document.querySelector(target)\n : target);\n });\n if (elInCollection &&\n !elInCollection.element.overlay.classList.contains(elInCollection.element.hiddenClass))\n elInCollection.element.close();\n };\n HSOverlay.setOpened = function (breakpoint, el) {\n if (document.body.clientWidth >= breakpoint) {\n document.body.classList.add('hs-overlay-body-open');\n el.element.overlay.classList.add('opened');\n }\n else\n el.element.close(true);\n };\n // Accessibility methods\n HSOverlay.accessibility = function (evt) {\n var _a, _b;\n var targets = window.$hsOverlayCollection.filter(function (el) {\n return el.element.overlay.classList.contains('open');\n });\n var target = targets[targets.length - 1];\n var focusableElements = (_b = (_a = target === null || target === void 0 ? void 0 : target.element) === null || _a === void 0 ? void 0 : _a.overlay) === null || _b === void 0 ? void 0 : _b.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])');\n var notHiddenFocusableElements = [];\n if (focusableElements === null || focusableElements === void 0 ? void 0 : focusableElements.length)\n focusableElements.forEach(function (el) {\n if (!(0, utils_1.isParentOrElementHidden)(el))\n notHiddenFocusableElements.push(el);\n });\n var basicCheck = target && !evt.metaKey;\n if (basicCheck &&\n !target.element.isTabAccessibilityLimited &&\n evt.code === 'Tab')\n return false;\n if (basicCheck && notHiddenFocusableElements.length && evt.code === 'Tab') {\n evt.preventDefault();\n this.onTab(target, notHiddenFocusableElements);\n }\n if (basicCheck && evt.code === 'Escape') {\n evt.preventDefault();\n this.onEscape(target);\n }\n };\n HSOverlay.onEscape = function (target) {\n if (target && target.element.hasAbilityToCloseOnBackdropClick)\n target.element.close();\n };\n HSOverlay.onTab = function (target, focusableElements) {\n if (!focusableElements.length)\n return false;\n var focused = target.element.overlay.querySelector(':focus');\n var focusedIndex = Array.from(focusableElements).indexOf(focused);\n if (focusedIndex > -1) {\n var nextIndex = (focusedIndex + 1) % focusableElements.length;\n focusableElements[nextIndex].focus();\n }\n else {\n focusableElements[0].focus();\n }\n };\n // Backward compatibility\n HSOverlay.on = function (evt, target, cb) {\n var elInCollection = window.$hsOverlayCollection.find(function (el) {\n return el.element.el ===\n (typeof target === 'string'\n ? document.querySelector(target)\n : target) ||\n el.element.overlay ===\n (typeof target === 'string'\n ? document.querySelector(target)\n : target);\n });\n if (elInCollection)\n elInCollection.element.events[evt] = cb;\n };\n return HSOverlay;\n}(base_plugin_1.default));\nvar autoCloseResizeFn = function () {\n if (!window.$hsOverlayCollection.length ||\n !window.$hsOverlayCollection.find(function (el) { return el.element.autoClose; }))\n return false;\n var overlays = window.$hsOverlayCollection.filter(function (el) { return el.element.autoClose; });\n overlays.forEach(function (overlay) {\n if (document.body.clientWidth >= overlay.element.autoClose)\n overlay.element.close(true);\n });\n};\nvar moveOverlayToBodyResizeFn = function () {\n if (!window.$hsOverlayCollection.length ||\n !window.$hsOverlayCollection.find(function (el) { return el.element.moveOverlayToBody; }))\n return false;\n var overlays = window.$hsOverlayCollection.filter(function (el) { return el.element.moveOverlayToBody; });\n overlays.forEach(function (overlay) {\n var resolution = overlay.element.moveOverlayToBody;\n var initPlace = overlay.element.initContainer;\n var newPlace = document.querySelector('body');\n var target = overlay.element.overlay;\n if (!initPlace && target)\n return false;\n if (document.body.clientWidth <= resolution &&\n !(0, utils_1.isDirectChild)(newPlace, target))\n newPlace.appendChild(target);\n else if (document.body.clientWidth > resolution &&\n !initPlace.contains(target))\n initPlace.appendChild(target);\n });\n};\nvar setOpenedResizeFn = function () {\n if (!window.$hsOverlayCollection.length ||\n !window.$hsOverlayCollection.find(function (el) { return el.element.autoClose; }))\n return false;\n var overlays = window.$hsOverlayCollection.filter(function (el) { return el.element.autoClose; });\n overlays.forEach(function (overlay) {\n if (document.body.clientWidth >= overlay.element.autoClose)\n overlay.element.close(true);\n });\n};\nvar setBackdropZIndexResizeFn = function () {\n if (!window.$hsOverlayCollection.length ||\n !window.$hsOverlayCollection.find(function (el) {\n return el.element.overlay.classList.contains('opened');\n }))\n return false;\n var overlays = window.$hsOverlayCollection.filter(function (el) {\n return el.element.overlay.classList.contains('opened');\n });\n overlays.forEach(function (overlay) {\n var overlayZIndex = parseInt(window\n .getComputedStyle(overlay.element.overlay)\n .getPropertyValue('z-index'));\n var backdrop = document.querySelector(\"#\".concat(overlay.element.overlay.id, \"-backdrop\"));\n var backdropZIndex = parseInt(window.getComputedStyle(backdrop).getPropertyValue('z-index'));\n if (overlayZIndex === backdropZIndex + 1)\n return false;\n if ('style' in backdrop)\n backdrop.style.zIndex = \"\".concat(overlayZIndex - 1);\n document.body.classList.add('hs-overlay-body-open');\n });\n};\nwindow.addEventListener('load', function () {\n HSOverlay.autoInit();\n moveOverlayToBodyResizeFn();\n // Uncomment for debug\n // console.log('Overlay collection:', window.$hsOverlayCollection);\n});\nwindow.addEventListener('resize', function () {\n autoCloseResizeFn();\n moveOverlayToBodyResizeFn();\n setOpenedResizeFn();\n setBackdropZIndexResizeFn();\n});\nif (typeof window !== 'undefined') {\n window.HSOverlay = HSOverlay;\n}\nexports.default = HSOverlay;\n","/*\n * HSOverlay\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\n\nimport {\n\tstringToBoolean,\n\tgetClassProperty,\n\tisParentOrElementHidden,\n\tisDirectChild,\n\tdispatch,\n\tafterTransition,\n} from '../../utils';\n\nimport { IOverlayOptions, IOverlay } from '../overlay/interfaces';\nimport { ICollectionItem } from '../../interfaces';\nimport { BREAKPOINTS } from '../../constants';\n\nimport HSBasePlugin from '../base-plugin';\n\nclass HSOverlay extends HSBasePlugin<{}> implements IOverlay {\n\tprivate readonly hiddenClass: string | null;\n\tprivate readonly emulateScrollbarSpace: boolean;\n\tprivate readonly isClosePrev: boolean;\n\tprivate readonly backdropClasses: string | null;\n\tprivate readonly backdropExtraClasses: string | null;\n\tprivate readonly animationTarget: HTMLElement | null;\n\n\tprivate openNextOverlay: boolean;\n\tprivate autoHide: ReturnType | null;\n\tprivate readonly overlayId: string | null;\n\n\tpublic overlay: HTMLElement | null;\n\tpublic initContainer: HTMLElement | null;\n\tpublic isCloseWhenClickInside: boolean;\n\tpublic isTabAccessibilityLimited: boolean;\n\tpublic isLayoutAffect: boolean;\n\tpublic hasAutofocus: boolean;\n\tpublic hasAbilityToCloseOnBackdropClick: boolean;\n\tpublic openedBreakpoint: number | null;\n\tpublic autoClose: number | null;\n\tpublic moveOverlayToBody: number | null;\n\n\tconstructor(el: HTMLElement, options?: IOverlayOptions, events?: {}) {\n\t\tsuper(el, options, events);\n\n\t\tconst data = el.getAttribute('data-hs-overlay-options');\n\t\tconst dataOptions: IOverlayOptions = data ? JSON.parse(data) : {};\n\t\tconst concatOptions = {\n\t\t\t...dataOptions,\n\t\t\t...options,\n\t\t};\n\n\t\tthis.hiddenClass = concatOptions?.hiddenClass || 'hidden';\n\t\tthis.emulateScrollbarSpace = concatOptions?.emulateScrollbarSpace || false;\n\t\tthis.isClosePrev = concatOptions?.isClosePrev ?? true;\n\t\tthis.backdropClasses =\n\t\t\tconcatOptions?.backdropClasses ??\n\t\t\t'hs-overlay-backdrop transition duration fixed inset-0 bg-gray-900 bg-opacity-50 dark:bg-opacity-80 dark:bg-neutral-900';\n\t\tthis.backdropExtraClasses = concatOptions?.backdropExtraClasses ?? '';\n\t\tthis.moveOverlayToBody = concatOptions?.moveOverlayToBody || null;\n\n\t\tthis.openNextOverlay = false;\n\t\tthis.autoHide = null;\n\t\tthis.overlayId = this.el.getAttribute('data-hs-overlay');\n\t\tthis.overlay = document.querySelector(this.overlayId);\n\t\tthis.initContainer = this.overlay?.parentElement || null;\n\t\tif (this.overlay) {\n\t\t\tthis.isCloseWhenClickInside = stringToBoolean(\n\t\t\t\tgetClassProperty(this.overlay, '--close-when-click-inside', 'false') ||\n\t\t\t\t\t'false',\n\t\t\t);\n\t\t\tthis.isTabAccessibilityLimited = stringToBoolean(\n\t\t\t\tgetClassProperty(this.overlay, '--tab-accessibility-limited', 'true') ||\n\t\t\t\t\t'true',\n\t\t\t);\n\t\t\tthis.isLayoutAffect = stringToBoolean(\n\t\t\t\tgetClassProperty(this.overlay, '--is-layout-affect', 'false') ||\n\t\t\t\t\t'false',\n\t\t\t);\n\t\t\tthis.hasAutofocus = stringToBoolean(\n\t\t\t\tgetClassProperty(this.overlay, '--has-autofocus', 'true') || 'true',\n\t\t\t);\n\t\t\tthis.hasAbilityToCloseOnBackdropClick = stringToBoolean(\n\t\t\t\tthis.overlay.getAttribute('data-hs-overlay-keyboard') || 'true',\n\t\t\t);\n\n\t\t\tconst autoCloseBreakpoint = getClassProperty(\n\t\t\t\tthis.overlay,\n\t\t\t\t'--auto-close',\n\t\t\t);\n\t\t\tthis.autoClose =\n\t\t\t\t!isNaN(+autoCloseBreakpoint) && isFinite(+autoCloseBreakpoint)\n\t\t\t\t\t? +autoCloseBreakpoint\n\t\t\t\t\t: BREAKPOINTS[autoCloseBreakpoint] || null;\n\n\t\t\tconst openedBreakpoint = getClassProperty(this.overlay, '--opened');\n\t\t\tthis.openedBreakpoint =\n\t\t\t\t(!isNaN(+openedBreakpoint) && isFinite(+openedBreakpoint)\n\t\t\t\t\t? +openedBreakpoint\n\t\t\t\t\t: BREAKPOINTS[openedBreakpoint]) || null;\n\t\t}\n\n\t\tthis.animationTarget =\n\t\t\tthis?.overlay?.querySelector('.hs-overlay-animation-target') ||\n\t\t\tthis.overlay;\n\n\t\tif (this.overlay) this.init();\n\t}\n\n\tprivate init() {\n\t\tthis.createCollection(window.$hsOverlayCollection, this);\n\n\t\tif (this.isLayoutAffect && this.openedBreakpoint) {\n\t\t\tconst instance = HSOverlay.getInstance(this.el, true);\n\n\t\t\tHSOverlay.setOpened(\n\t\t\t\tthis.openedBreakpoint,\n\t\t\t\tinstance as ICollectionItem,\n\t\t\t);\n\t\t}\n\n\t\tif (this?.el?.ariaExpanded) {\n\t\t\tif (this.overlay.classList.contains('opened'))\n\t\t\t\tthis.el.ariaExpanded = 'true';\n\t\t\telse this.el.ariaExpanded = 'false';\n\t\t}\n\n\t\tthis.el.addEventListener('click', () => {\n\t\t\tif (this.overlay.classList.contains('opened')) this.close();\n\t\t\telse this.open();\n\t\t});\n\n\t\tthis.overlay.addEventListener('click', (evt) => {\n\t\t\tif (\n\t\t\t\t(evt.target as HTMLElement).id &&\n\t\t\t\t`#${(evt.target as HTMLElement).id}` === this.overlayId &&\n\t\t\t\tthis.isCloseWhenClickInside &&\n\t\t\t\tthis.hasAbilityToCloseOnBackdropClick\n\t\t\t) {\n\t\t\t\tthis.close();\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate hideAuto() {\n\t\tconst time = parseInt(getClassProperty(this.overlay, '--auto-hide', '0'));\n\n\t\tif (time) {\n\t\t\tthis.autoHide = setTimeout(() => {\n\t\t\t\tthis.close();\n\t\t\t}, time);\n\t\t}\n\t}\n\n\tprivate checkTimer() {\n\t\tif (this.autoHide) {\n\t\t\tclearTimeout(this.autoHide);\n\n\t\t\tthis.autoHide = null;\n\t\t}\n\t}\n\n\tprivate buildBackdrop() {\n\t\tconst overlayClasses = this.overlay.classList.value.split(' ');\n\t\tconst overlayZIndex = parseInt(\n\t\t\twindow.getComputedStyle(this.overlay).getPropertyValue('z-index'),\n\t\t);\n\t\tconst backdropId =\n\t\t\tthis.overlay.getAttribute('data-hs-overlay-backdrop-container') || false;\n\t\tlet backdrop: HTMLElement | Node = document.createElement('div');\n\t\tlet backdropClasses = `${this.backdropClasses} ${this.backdropExtraClasses}`;\n\t\tconst closeOnBackdrop =\n\t\t\tgetClassProperty(this.overlay, '--overlay-backdrop', 'true') !== 'static';\n\t\tconst disableBackdrop =\n\t\t\tgetClassProperty(this.overlay, '--overlay-backdrop', 'true') === 'false';\n\n\t\t(backdrop as HTMLElement).id = `${this.overlay.id}-backdrop`;\n\t\tif ('style' in backdrop) backdrop.style.zIndex = `${overlayZIndex - 1}`;\n\n\t\tfor (const value of overlayClasses) {\n\t\t\tif (\n\t\t\t\tvalue.startsWith('hs-overlay-backdrop-open:') ||\n\t\t\t\tvalue.includes(':hs-overlay-backdrop-open:')\n\t\t\t) {\n\t\t\t\tbackdropClasses += ` ${value}`;\n\t\t\t}\n\t\t}\n\n\t\tif (disableBackdrop) return;\n\n\t\tif (backdropId) {\n\t\t\tbackdrop = document.querySelector(backdropId).cloneNode(true);\n\t\t\t(backdrop as HTMLElement).classList.remove('hidden');\n\n\t\t\tbackdropClasses = `${(backdrop as HTMLElement).classList.toString()}`;\n\t\t\t(backdrop as HTMLElement).classList.value = '';\n\t\t}\n\n\t\tif (closeOnBackdrop) {\n\t\t\t(backdrop as HTMLElement).addEventListener(\n\t\t\t\t'click',\n\t\t\t\t() => this.close(),\n\t\t\t\ttrue,\n\t\t\t);\n\t\t}\n\n\t\t(backdrop as HTMLElement).setAttribute(\n\t\t\t'data-hs-overlay-backdrop-template',\n\t\t\t'',\n\t\t);\n\n\t\tdocument.body.appendChild(backdrop);\n\n\t\tsetTimeout(() => {\n\t\t\t(backdrop as HTMLElement).classList.value = backdropClasses;\n\t\t});\n\t}\n\n\tprivate destroyBackdrop() {\n\t\tconst backdrop: HTMLElement = document.querySelector(\n\t\t\t`#${this.overlay.id}-backdrop`,\n\t\t);\n\n\t\tif (!backdrop) return;\n\n\t\tif (this.openNextOverlay) {\n\t\t\tbackdrop.style.transitionDuration = `${\n\t\t\t\tparseFloat(\n\t\t\t\t\twindow\n\t\t\t\t\t\t.getComputedStyle(backdrop)\n\t\t\t\t\t\t.transitionDuration.replace(/[^\\d.-]/g, ''),\n\t\t\t\t) * 1.8\n\t\t\t}s`;\n\t\t}\n\n\t\tbackdrop.classList.add('opacity-0');\n\n\t\tafterTransition(backdrop, () => {\n\t\t\tbackdrop.remove();\n\t\t});\n\t}\n\n\tprivate focusElement() {\n\t\tconst input: HTMLInputElement = this.overlay.querySelector('[autofocus]');\n\n\t\tif (!input) return false;\n\t\telse input.focus();\n\t}\n\n\tprivate getScrollbarSize() {\n\t\tlet div = document.createElement('div');\n\t\tdiv.style.overflow = 'scroll';\n\t\tdiv.style.width = '100px';\n\t\tdiv.style.height = '100px';\n\t\tdocument.body.appendChild(div);\n\n\t\tlet scrollbarSize = div.offsetWidth - div.clientWidth;\n\n\t\tdocument.body.removeChild(div);\n\n\t\treturn scrollbarSize;\n\t}\n\n\t// Public methods\n\tpublic open() {\n\t\tif (!this.overlay) return false;\n\n\t\tconst openedOverlays = document.querySelectorAll('.hs-overlay.open');\n\t\tconst currentlyOpened = window.$hsOverlayCollection.find(\n\t\t\t(el) =>\n\t\t\t\tArray.from(openedOverlays).includes(el.element.overlay) &&\n\t\t\t\t!el.element.isLayoutAffect,\n\t\t);\n\t\tconst toggles = document.querySelectorAll(\n\t\t\t`[data-hs-overlay=\"#${this.overlay.id}\"]`,\n\t\t);\n\t\tconst disabledScroll =\n\t\t\tgetClassProperty(this.overlay, '--body-scroll', 'false') !== 'true';\n\n\t\tif (this.isClosePrev && currentlyOpened) {\n\t\t\tthis.openNextOverlay = true;\n\n\t\t\treturn currentlyOpened.element.close().then(() => {\n\t\t\t\tthis.open();\n\n\t\t\t\tthis.openNextOverlay = false;\n\t\t\t});\n\t\t}\n\n\t\tif (disabledScroll) {\n\t\t\tdocument.body.style.overflow = 'hidden';\n\t\t\tif (this.emulateScrollbarSpace)\n\t\t\t\tdocument.body.style.paddingRight = `${this.getScrollbarSize()}px`;\n\t\t}\n\n\t\tthis.buildBackdrop();\n\t\tthis.checkTimer();\n\t\tthis.hideAuto();\n\n\t\ttoggles.forEach((toggle) => {\n\t\t\tif (toggle.ariaExpanded) toggle.ariaExpanded = 'true';\n\t\t});\n\t\tthis.overlay.classList.remove(this.hiddenClass);\n\t\tthis.overlay.setAttribute('aria-overlay', 'true');\n\t\tthis.overlay.setAttribute('tabindex', '-1');\n\n\t\tsetTimeout(() => {\n\t\t\tif (this.overlay.classList.contains('opened')) return false;\n\n\t\t\tthis.overlay.classList.add('open', 'opened');\n\t\t\tif (this.isLayoutAffect)\n\t\t\t\tdocument.body.classList.add('hs-overlay-body-open');\n\n\t\t\tthis.fireEvent('open', this.el);\n\t\t\tdispatch('open.hs.overlay', this.el, this.el);\n\n\t\t\tif (this.hasAutofocus) this.focusElement();\n\t\t}, 50);\n\t}\n\n\tpublic close(forceClose = false) {\n\t\tif (this.isLayoutAffect)\n\t\t\tdocument.body.classList.remove('hs-overlay-body-open');\n\n\t\tconst closeFn = (cb: Function) => {\n\t\t\tif (this.overlay.classList.contains('open')) return false;\n\t\t\tconst toggles = document.querySelectorAll(\n\t\t\t\t`[data-hs-overlay=\"#${this.overlay.id}\"]`,\n\t\t\t);\n\n\t\t\ttoggles.forEach((toggle) => {\n\t\t\t\tif (toggle.ariaExpanded) toggle.ariaExpanded = 'false';\n\t\t\t});\n\t\t\tthis.overlay.classList.add(this.hiddenClass);\n\n\t\t\tthis.destroyBackdrop();\n\n\t\t\tthis.fireEvent('close', this.el);\n\t\t\tdispatch('close.hs.overlay', this.el, this.el);\n\n\t\t\tif (!document.querySelector('.hs-overlay.opened')) {\n\t\t\t\tdocument.body.style.overflow = '';\n\t\t\t\tif (this.emulateScrollbarSpace) document.body.style.paddingRight = '';\n\t\t\t}\n\n\t\t\tcb(this.overlay);\n\t\t};\n\n\t\treturn new Promise((resolve) => {\n\t\t\tif (!this.overlay) return false;\n\n\t\t\tthis.overlay.classList.remove('open', 'opened');\n\t\t\tthis.overlay.removeAttribute('aria-overlay');\n\t\t\tthis.overlay.removeAttribute('tabindex');\n\n\t\t\tif (forceClose) closeFn(resolve);\n\t\t\telse afterTransition(this.animationTarget, () => closeFn(resolve));\n\t\t});\n\t}\n\n\t// Static methods\n\tstatic getInstance(target: HTMLElement, isInstance?: boolean) {\n\t\tconst elInCollection = window.$hsOverlayCollection.find(\n\t\t\t(el) =>\n\t\t\t\tel.element.el ===\n\t\t\t\t\t(typeof target === 'string'\n\t\t\t\t\t\t? document.querySelector(target)\n\t\t\t\t\t\t: target) ||\n\t\t\t\tel.element.overlay ===\n\t\t\t\t\t(typeof target === 'string'\n\t\t\t\t\t\t? document.querySelector(target)\n\t\t\t\t\t\t: target),\n\t\t);\n\n\t\treturn elInCollection\n\t\t\t? isInstance\n\t\t\t\t? elInCollection\n\t\t\t\t: elInCollection.element.el\n\t\t\t: null;\n\t}\n\n\tstatic autoInit() {\n\t\tif (!window.$hsOverlayCollection) window.$hsOverlayCollection = [];\n\n\t\tdocument\n\t\t\t.querySelectorAll('[data-hs-overlay]:not(.--prevent-on-load-init)')\n\t\t\t.forEach((el: HTMLElement) => {\n\t\t\t\tif (\n\t\t\t\t\t!window.$hsOverlayCollection.find(\n\t\t\t\t\t\t(elC) => (elC?.element?.el as HTMLElement) === el,\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t\tnew HSOverlay(el);\n\t\t\t});\n\n\t\tif (window.$hsOverlayCollection) {\n\t\t\tdocument.addEventListener('keydown', (evt) =>\n\t\t\t\tHSOverlay.accessibility(evt),\n\t\t\t);\n\t\t}\n\t}\n\n\tstatic open(target: HTMLElement) {\n\t\tconst elInCollection = window.$hsOverlayCollection.find(\n\t\t\t(el) =>\n\t\t\t\tel.element.el ===\n\t\t\t\t\t(typeof target === 'string'\n\t\t\t\t\t\t? document.querySelector(target)\n\t\t\t\t\t\t: target) ||\n\t\t\t\tel.element.overlay ===\n\t\t\t\t\t(typeof target === 'string'\n\t\t\t\t\t\t? document.querySelector(target)\n\t\t\t\t\t\t: target),\n\t\t);\n\n\t\tif (\n\t\t\telInCollection &&\n\t\t\telInCollection.element.overlay.classList.contains(\n\t\t\t\telInCollection.element.hiddenClass,\n\t\t\t)\n\t\t)\n\t\t\telInCollection.element.open();\n\t}\n\n\tstatic close(target: HTMLElement) {\n\t\tconst elInCollection = window.$hsOverlayCollection.find(\n\t\t\t(el) =>\n\t\t\t\tel.element.el ===\n\t\t\t\t\t(typeof target === 'string'\n\t\t\t\t\t\t? document.querySelector(target)\n\t\t\t\t\t\t: target) ||\n\t\t\t\tel.element.overlay ===\n\t\t\t\t\t(typeof target === 'string'\n\t\t\t\t\t\t? document.querySelector(target)\n\t\t\t\t\t\t: target),\n\t\t);\n\n\t\tif (\n\t\t\telInCollection &&\n\t\t\t!elInCollection.element.overlay.classList.contains(\n\t\t\t\telInCollection.element.hiddenClass,\n\t\t\t)\n\t\t)\n\t\t\telInCollection.element.close();\n\t}\n\n\tstatic setOpened(breakpoint: number, el: ICollectionItem) {\n\t\tif (document.body.clientWidth >= breakpoint) {\n\t\t\tdocument.body.classList.add('hs-overlay-body-open');\n\t\t\tel.element.overlay.classList.add('opened');\n\t\t} else el.element.close(true);\n\t}\n\n\t// Accessibility methods\n\tstatic accessibility(evt: KeyboardEvent) {\n\t\tconst targets = window.$hsOverlayCollection.filter((el) =>\n\t\t\tel.element.overlay.classList.contains('open'),\n\t\t);\n\t\tconst target = targets[targets.length - 1];\n\t\tconst focusableElements = target?.element?.overlay?.querySelectorAll(\n\t\t\t'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])',\n\t\t);\n\t\tconst notHiddenFocusableElements: HTMLElement[] = [];\n\t\tif (focusableElements?.length)\n\t\t\tfocusableElements.forEach((el: HTMLElement) => {\n\t\t\t\tif (!isParentOrElementHidden(el)) notHiddenFocusableElements.push(el);\n\t\t\t});\n\t\tconst basicCheck = target && !evt.metaKey;\n\n\t\tif (\n\t\t\tbasicCheck &&\n\t\t\t!target.element.isTabAccessibilityLimited &&\n\t\t\tevt.code === 'Tab'\n\t\t)\n\t\t\treturn false;\n\n\t\tif (basicCheck && notHiddenFocusableElements.length && evt.code === 'Tab') {\n\t\t\tevt.preventDefault();\n\t\t\tthis.onTab(target, notHiddenFocusableElements);\n\t\t}\n\t\tif (basicCheck && evt.code === 'Escape') {\n\t\t\tevt.preventDefault();\n\t\t\tthis.onEscape(target);\n\t\t}\n\t}\n\n\tstatic onEscape(target: ICollectionItem) {\n\t\tif (target && target.element.hasAbilityToCloseOnBackdropClick)\n\t\t\ttarget.element.close();\n\t}\n\n\tstatic onTab(\n\t\ttarget: ICollectionItem,\n\t\tfocusableElements: HTMLElement[],\n\t) {\n\t\tif (!focusableElements.length) return false;\n\n\t\tconst focused = target.element.overlay.querySelector(':focus');\n\t\tconst focusedIndex = Array.from(focusableElements).indexOf(\n\t\t\tfocused as HTMLElement,\n\t\t);\n\n\t\tif (focusedIndex > -1) {\n\t\t\tconst nextIndex = (focusedIndex + 1) % focusableElements.length;\n\t\t\t(focusableElements[nextIndex] as HTMLElement).focus();\n\t\t} else {\n\t\t\t(focusableElements[0] as HTMLElement).focus();\n\t\t}\n\t}\n\n\t// Backward compatibility\n\tstatic on(evt: string, target: HTMLElement, cb: Function) {\n\t\tconst elInCollection = window.$hsOverlayCollection.find(\n\t\t\t(el) =>\n\t\t\t\tel.element.el ===\n\t\t\t\t\t(typeof target === 'string'\n\t\t\t\t\t\t? document.querySelector(target)\n\t\t\t\t\t\t: target) ||\n\t\t\t\tel.element.overlay ===\n\t\t\t\t\t(typeof target === 'string'\n\t\t\t\t\t\t? document.querySelector(target)\n\t\t\t\t\t\t: target),\n\t\t);\n\n\t\tif (elInCollection) elInCollection.element.events[evt] = cb;\n\t}\n}\n\ndeclare global {\n\tinterface Window {\n\t\tHSOverlay: Function;\n\t\t$hsOverlayCollection: ICollectionItem[];\n\t}\n}\n\nconst autoCloseResizeFn = () => {\n\tif (\n\t\t!window.$hsOverlayCollection.length ||\n\t\t!window.$hsOverlayCollection.find((el) => el.element.autoClose)\n\t)\n\t\treturn false;\n\n\tconst overlays = window.$hsOverlayCollection.filter(\n\t\t(el) => el.element.autoClose,\n\t);\n\n\toverlays.forEach((overlay) => {\n\t\tif (document.body.clientWidth >= overlay.element.autoClose)\n\t\t\toverlay.element.close(true);\n\t});\n};\n\nconst moveOverlayToBodyResizeFn = () => {\n\tif (\n\t\t!window.$hsOverlayCollection.length ||\n\t\t!window.$hsOverlayCollection.find((el) => el.element.moveOverlayToBody)\n\t)\n\t\treturn false;\n\n\tconst overlays = window.$hsOverlayCollection.filter(\n\t\t(el) => el.element.moveOverlayToBody,\n\t);\n\n\toverlays.forEach((overlay) => {\n\t\tconst resolution = overlay.element.moveOverlayToBody;\n\t\tconst initPlace = overlay.element.initContainer;\n\t\tconst newPlace = document.querySelector('body');\n\t\tconst target = overlay.element.overlay;\n\n\t\tif (!initPlace && target) return false;\n\n\t\tif (\n\t\t\tdocument.body.clientWidth <= resolution &&\n\t\t\t!isDirectChild(newPlace, target)\n\t\t)\n\t\t\tnewPlace.appendChild(target);\n\t\telse if (\n\t\t\tdocument.body.clientWidth > resolution &&\n\t\t\t!initPlace.contains(target)\n\t\t)\n\t\t\tinitPlace.appendChild(target);\n\t});\n};\n\nconst setOpenedResizeFn = () => {\n\tif (\n\t\t!window.$hsOverlayCollection.length ||\n\t\t!window.$hsOverlayCollection.find((el) => el.element.autoClose)\n\t)\n\t\treturn false;\n\n\tconst overlays = window.$hsOverlayCollection.filter(\n\t\t(el) => el.element.autoClose,\n\t);\n\n\toverlays.forEach((overlay) => {\n\t\tif (document.body.clientWidth >= overlay.element.autoClose)\n\t\t\toverlay.element.close(true);\n\t});\n};\n\nconst setBackdropZIndexResizeFn = () => {\n\tif (\n\t\t!window.$hsOverlayCollection.length ||\n\t\t!window.$hsOverlayCollection.find((el) =>\n\t\t\tel.element.overlay.classList.contains('opened'),\n\t\t)\n\t)\n\t\treturn false;\n\n\tconst overlays = window.$hsOverlayCollection.filter((el) =>\n\t\tel.element.overlay.classList.contains('opened'),\n\t);\n\n\toverlays.forEach((overlay) => {\n\t\tconst overlayZIndex = parseInt(\n\t\t\twindow\n\t\t\t\t.getComputedStyle(overlay.element.overlay)\n\t\t\t\t.getPropertyValue('z-index'),\n\t\t);\n\t\tconst backdrop: HTMLElement = document.querySelector(\n\t\t\t`#${overlay.element.overlay.id}-backdrop`,\n\t\t);\n\t\tconst backdropZIndex = parseInt(\n\t\t\twindow.getComputedStyle(backdrop).getPropertyValue('z-index'),\n\t\t);\n\t\tif (overlayZIndex === backdropZIndex + 1) return false;\n\n\t\tif ('style' in backdrop) backdrop.style.zIndex = `${overlayZIndex - 1}`;\n\t\tdocument.body.classList.add('hs-overlay-body-open');\n\t});\n};\n\nwindow.addEventListener('load', () => {\n\tHSOverlay.autoInit();\n\n\tmoveOverlayToBodyResizeFn();\n\t// Uncomment for debug\n\t// console.log('Overlay collection:', window.$hsOverlayCollection);\n});\n\nwindow.addEventListener('resize', () => {\n\tautoCloseResizeFn();\n\tmoveOverlayToBodyResizeFn();\n\tsetOpenedResizeFn();\n\tsetBackdropZIndexResizeFn();\n});\n\nif (typeof window !== 'undefined') {\n\twindow.HSOverlay = HSOverlay;\n}\n\nexport default HSOverlay;\n","\"use strict\";\n/*\n * HSPinInput\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../../utils\");\nvar base_plugin_1 = __importDefault(require(\"../base-plugin\"));\nvar HSPinInput = /** @class */ (function (_super) {\n __extends(HSPinInput, _super);\n function HSPinInput(el, options) {\n var _this = _super.call(this, el, options) || this;\n var data = el.getAttribute('data-hs-pin-input');\n var dataOptions = data ? JSON.parse(data) : {};\n var concatOptions = __assign(__assign({}, dataOptions), options);\n _this.items = _this.el.querySelectorAll('[data-hs-pin-input-item]');\n _this.currentItem = null;\n _this.currentValue = new Array(_this.items.length).fill('');\n _this.placeholders = [];\n _this.availableCharsRE = new RegExp((concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.availableCharsRE) || '^[a-zA-Z0-9]+$'); // '^[0-9]+$'\n _this.init();\n return _this;\n }\n HSPinInput.prototype.init = function () {\n this.createCollection(window.$hsPinInputCollection, this);\n if (this.items.length)\n this.build();\n };\n HSPinInput.prototype.build = function () {\n this.buildInputItems();\n };\n HSPinInput.prototype.buildInputItems = function () {\n var _this = this;\n this.items.forEach(function (el, index) {\n _this.placeholders.push(el.getAttribute('placeholder') || '');\n if (el.hasAttribute('autofocus'))\n _this.onFocusIn(index);\n el.addEventListener('input', function (evt) { return _this.onInput(evt, index); });\n el.addEventListener('paste', function (evt) { return _this.onPaste(evt); });\n el.addEventListener('keydown', function (evt) { return _this.onKeydown(evt, index); });\n el.addEventListener('focusin', function () { return _this.onFocusIn(index); });\n el.addEventListener('focusout', function () { return _this.onFocusOut(index); });\n });\n };\n HSPinInput.prototype.checkIfNumber = function (value) {\n return value.match(this.availableCharsRE);\n };\n HSPinInput.prototype.autoFillAll = function (text) {\n var _this = this;\n Array.from(text).forEach(function (n, i) {\n if (!(_this === null || _this === void 0 ? void 0 : _this.items[i]))\n return false;\n _this.items[i].value = n;\n _this.items[i].dispatchEvent(new Event('input', { bubbles: true }));\n });\n };\n HSPinInput.prototype.setCurrentValue = function () {\n this.currentValue = Array.from(this.items).map(function (el) { return el.value; });\n };\n HSPinInput.prototype.toggleCompleted = function () {\n if (!this.currentValue.includes(''))\n this.el.classList.add('active');\n else\n this.el.classList.remove('active');\n };\n HSPinInput.prototype.onInput = function (evt, index) {\n var originalValue = evt.target.value;\n this.currentItem = evt.target;\n this.currentItem.value = '';\n this.currentItem.value = originalValue[originalValue.length - 1];\n if (!this.checkIfNumber(this.currentItem.value)) {\n this.currentItem.value = this.currentValue[index] || '';\n return false;\n }\n this.setCurrentValue();\n if (this.currentItem.value) {\n if (index < this.items.length - 1)\n this.items[index + 1].focus();\n if (!this.currentValue.includes('')) {\n var payload = { currentValue: this.currentValue };\n this.fireEvent('completed', payload);\n (0, utils_1.dispatch)('completed.hs.pinInput', this.el, payload);\n }\n this.toggleCompleted();\n }\n else {\n if (index > 0)\n this.items[index - 1].focus();\n }\n };\n HSPinInput.prototype.onKeydown = function (evt, index) {\n if (evt.key === 'Backspace' && index > 0) {\n if (this.items[index].value === '') {\n this.items[index - 1].value = '';\n this.items[index - 1].focus();\n }\n else {\n this.items[index].value = '';\n }\n }\n this.setCurrentValue();\n this.toggleCompleted();\n };\n HSPinInput.prototype.onFocusIn = function (index) {\n this.items[index].setAttribute('placeholder', '');\n };\n HSPinInput.prototype.onFocusOut = function (index) {\n this.items[index].setAttribute('placeholder', this.placeholders[index]);\n };\n HSPinInput.prototype.onPaste = function (evt) {\n var _this = this;\n evt.preventDefault();\n this.items.forEach(function (el) {\n if (document.activeElement === el)\n _this.autoFillAll(evt.clipboardData.getData('text'));\n });\n };\n // Static method\n HSPinInput.getInstance = function (target, isInstance) {\n var elInCollection = window.$hsPinInputCollection.find(function (el) {\n return el.element.el ===\n (typeof target === 'string' ? document.querySelector(target) : target);\n });\n return elInCollection\n ? isInstance\n ? elInCollection\n : elInCollection.element\n : null;\n };\n HSPinInput.autoInit = function () {\n if (!window.$hsPinInputCollection)\n window.$hsPinInputCollection = [];\n document\n .querySelectorAll('[data-hs-pin-input]:not(.--prevent-on-load-init)')\n .forEach(function (el) {\n if (!window.$hsPinInputCollection.find(function (elC) { var _a; return ((_a = elC === null || elC === void 0 ? void 0 : elC.element) === null || _a === void 0 ? void 0 : _a.el) === el; }))\n new HSPinInput(el);\n });\n };\n return HSPinInput;\n}(base_plugin_1.default));\nwindow.addEventListener('load', function () {\n HSPinInput.autoInit();\n // Uncomment for debug\n // console.log('PIN input collection:', window.$hsPinInputCollection);\n});\nif (typeof window !== 'undefined') {\n window.HSPinInput = HSPinInput;\n}\nexports.default = HSPinInput;\n","/*\n * HSPinInput\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\n\nimport { dispatch } from '../../utils';\n\nimport { IPinInputOptions, IPinInput } from '../pin-input/interfaces';\n\nimport HSBasePlugin from '../base-plugin';\nimport { ICollectionItem } from '../../interfaces';\n\nclass HSPinInput extends HSBasePlugin implements IPinInput {\n\tprivate items: NodeListOf | null;\n\tprivate currentItem: HTMLInputElement | null;\n\tprivate currentValue: string[] | null;\n\tprivate readonly placeholders: string[] | null;\n\tprivate readonly availableCharsRE: RegExp | null;\n\n\tconstructor(el: HTMLElement, options?: IPinInputOptions) {\n\t\tsuper(el, options);\n\n\t\tconst data = el.getAttribute('data-hs-pin-input');\n\t\tconst dataOptions: IPinInputOptions = data ? JSON.parse(data) : {};\n\t\tconst concatOptions = {\n\t\t\t...dataOptions,\n\t\t\t...options,\n\t\t};\n\n\t\tthis.items = this.el.querySelectorAll('[data-hs-pin-input-item]');\n\t\tthis.currentItem = null;\n\t\tthis.currentValue = new Array(this.items.length).fill('');\n\t\tthis.placeholders = [];\n\t\tthis.availableCharsRE = new RegExp(\n\t\t\tconcatOptions?.availableCharsRE || '^[a-zA-Z0-9]+$',\n\t\t); // '^[0-9]+$'\n\n\t\tthis.init();\n\t}\n\n\tprivate init() {\n\t\tthis.createCollection(window.$hsPinInputCollection, this);\n\n\t\tif (this.items.length) this.build();\n\t}\n\n\tprivate build() {\n\t\tthis.buildInputItems();\n\t}\n\n\tprivate buildInputItems() {\n\t\tthis.items.forEach((el, index) => {\n\t\t\tthis.placeholders.push(el.getAttribute('placeholder') || '');\n\n\t\t\tif (el.hasAttribute('autofocus')) this.onFocusIn(index);\n\n\t\t\tel.addEventListener('input', (evt) => this.onInput(evt, index));\n\t\t\tel.addEventListener('paste', (evt) => this.onPaste(evt));\n\t\t\tel.addEventListener('keydown', (evt) => this.onKeydown(evt, index));\n\t\t\tel.addEventListener('focusin', () => this.onFocusIn(index));\n\t\t\tel.addEventListener('focusout', () => this.onFocusOut(index));\n\t\t});\n\t}\n\n\tprivate checkIfNumber(value: string) {\n\t\treturn value.match(this.availableCharsRE);\n\t}\n\n\tprivate autoFillAll(text: string) {\n\t\tArray.from(text).forEach((n, i) => {\n\t\t\tif (!this?.items[i]) return false;\n\n\t\t\t(this.items[i] as HTMLInputElement).value = n;\n\n\t\t\tthis.items[i].dispatchEvent(new Event('input', { bubbles: true }));\n\t\t});\n\t}\n\n\tprivate setCurrentValue() {\n\t\tthis.currentValue = Array.from(this.items).map(\n\t\t\t(el) => (el as HTMLInputElement).value,\n\t\t);\n\t}\n\n\tprivate toggleCompleted() {\n\t\tif (!this.currentValue.includes('')) this.el.classList.add('active');\n\t\telse this.el.classList.remove('active');\n\t}\n\n\tprivate onInput(evt: Event, index: number) {\n\t\tconst originalValue = (evt.target as HTMLInputElement).value;\n\t\tthis.currentItem = evt.target as HTMLInputElement;\n\t\tthis.currentItem.value = '';\n\t\tthis.currentItem.value = originalValue[originalValue.length - 1];\n\n\t\tif (!this.checkIfNumber(this.currentItem.value)) {\n\t\t\tthis.currentItem.value = this.currentValue[index] || '';\n\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.setCurrentValue();\n\n\t\tif (this.currentItem.value) {\n\t\t\tif (index < this.items.length - 1) this.items[index + 1].focus();\n\t\t\tif (!this.currentValue.includes('')) {\n\t\t\t\tconst payload = { currentValue: this.currentValue };\n\n\t\t\t\tthis.fireEvent('completed', payload);\n\t\t\t\tdispatch('completed.hs.pinInput', this.el, payload);\n\t\t\t}\n\n\t\t\tthis.toggleCompleted();\n\t\t} else {\n\t\t\tif (index > 0) this.items[index - 1].focus();\n\t\t}\n\t}\n\n\tprivate onKeydown(evt: KeyboardEvent, index: number) {\n\t\tif (evt.key === 'Backspace' && index > 0) {\n\t\t\tif ((this.items[index] as HTMLInputElement).value === '') {\n\t\t\t\t(this.items[index - 1] as HTMLInputElement).value = '';\n\t\t\t\t(this.items[index - 1] as HTMLInputElement).focus();\n\t\t\t} else {\n\t\t\t\t(this.items[index] as HTMLInputElement).value = '';\n\t\t\t}\n\t\t}\n\n\t\tthis.setCurrentValue();\n\t\tthis.toggleCompleted();\n\t}\n\n\tprivate onFocusIn(index: number) {\n\t\tthis.items[index].setAttribute('placeholder', '');\n\t}\n\n\tprivate onFocusOut(index: number) {\n\t\tthis.items[index].setAttribute('placeholder', this.placeholders[index]);\n\t}\n\n\tprivate onPaste(evt: ClipboardEvent) {\n\t\tevt.preventDefault();\n\n\t\tthis.items.forEach((el) => {\n\t\t\tif (document.activeElement === el)\n\t\t\t\tthis.autoFillAll(evt.clipboardData.getData('text'));\n\t\t});\n\t}\n\n\t// Static method\n\tstatic getInstance(target: HTMLElement | string, isInstance?: boolean) {\n\t\tconst elInCollection = window.$hsPinInputCollection.find(\n\t\t\t(el) =>\n\t\t\t\tel.element.el ===\n\t\t\t\t(typeof target === 'string' ? document.querySelector(target) : target),\n\t\t);\n\n\t\treturn elInCollection\n\t\t\t? isInstance\n\t\t\t\t? elInCollection\n\t\t\t\t: elInCollection.element\n\t\t\t: null;\n\t}\n\n\tstatic autoInit() {\n\t\tif (!window.$hsPinInputCollection) window.$hsPinInputCollection = [];\n\n\t\tdocument\n\t\t\t.querySelectorAll('[data-hs-pin-input]:not(.--prevent-on-load-init)')\n\t\t\t.forEach((el: HTMLElement) => {\n\t\t\t\tif (\n\t\t\t\t\t!window.$hsPinInputCollection.find(\n\t\t\t\t\t\t(elC) => (elC?.element?.el as HTMLElement) === el,\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t\tnew HSPinInput(el);\n\t\t\t});\n\t}\n}\n\ndeclare global {\n\tinterface Window {\n\t\tHSPinInput: Function;\n\t\t$hsPinInputCollection: ICollectionItem[];\n\t}\n}\n\nwindow.addEventListener('load', () => {\n\tHSPinInput.autoInit();\n\n\t// Uncomment for debug\n\t// console.log('PIN input collection:', window.$hsPinInputCollection);\n});\n\nif (typeof window !== 'undefined') {\n\twindow.HSPinInput = HSPinInput;\n}\n\nexport default HSPinInput;\n","\"use strict\";\n/*\n * HSRangeSlider\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar base_plugin_1 = __importDefault(require(\"../base-plugin\"));\nvar HSRangeSlider = /** @class */ (function (_super) {\n __extends(HSRangeSlider, _super);\n function HSRangeSlider(el, options, events) {\n var _this = _super.call(this, el, options, events) || this;\n var data = el.getAttribute('data-hs-range-slider');\n var dataOptions = data ? JSON.parse(data) : {};\n _this.concatOptions = __assign(__assign(__assign({}, dataOptions), options), { cssClasses: __assign(__assign({}, noUiSlider.cssClasses), _this.processClasses(dataOptions.cssClasses)) });\n _this.init();\n return _this;\n }\n Object.defineProperty(HSRangeSlider.prototype, \"formattedValue\", {\n get: function () {\n var _this = this;\n var values = this.el.noUiSlider.get();\n if (Array.isArray(values) && this.format) {\n var updateValues_1 = [];\n values.forEach(function (val) {\n updateValues_1.push(_this.format.to(val));\n });\n return updateValues_1;\n }\n else if (this.format) {\n return this.format.to(values);\n }\n else {\n return values;\n }\n },\n enumerable: false,\n configurable: true\n });\n HSRangeSlider.prototype.processClasses = function (cl) {\n var mergedClasses = {};\n Object.keys(cl).forEach(function (key) {\n if (key)\n mergedClasses[key] = \"\".concat(noUiSlider.cssClasses[key], \" \").concat(cl[key]);\n });\n return mergedClasses;\n };\n HSRangeSlider.prototype.init = function () {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;\n this.createCollection(window.$hsRangeSliderCollection, this);\n if (typeof ((_a = this.concatOptions) === null || _a === void 0 ? void 0 : _a.formatter) === 'object'\n ? ((_c = (_b = this.concatOptions) === null || _b === void 0 ? void 0 : _b.formatter) === null || _c === void 0 ? void 0 : _c.type) ===\n 'thousandsSeparatorAndDecimalPoints'\n : ((_d = this.concatOptions) === null || _d === void 0 ? void 0 : _d.formatter) === 'thousandsSeparatorAndDecimalPoints')\n this.thousandsSeparatorAndDecimalPointsFormatter();\n else if (typeof ((_e = this.concatOptions) === null || _e === void 0 ? void 0 : _e.formatter) === 'object'\n ? ((_g = (_f = this.concatOptions) === null || _f === void 0 ? void 0 : _f.formatter) === null || _g === void 0 ? void 0 : _g.type) === 'integer'\n : ((_h = this.concatOptions) === null || _h === void 0 ? void 0 : _h.formatter) === 'integer')\n this.integerFormatter();\n else if (typeof ((_j = this.concatOptions) === null || _j === void 0 ? void 0 : _j.formatter) === 'object' &&\n (((_l = (_k = this.concatOptions) === null || _k === void 0 ? void 0 : _k.formatter) === null || _l === void 0 ? void 0 : _l.prefix) ||\n ((_o = (_m = this.concatOptions) === null || _m === void 0 ? void 0 : _m.formatter) === null || _o === void 0 ? void 0 : _o.postfix)))\n this.prefixOrPostfixFormatter();\n noUiSlider.create(this.el, this.concatOptions);\n if (this.concatOptions.disabled)\n this.setDisabled();\n };\n HSRangeSlider.prototype.formatValue = function (val) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n var result = '';\n if (typeof ((_a = this.concatOptions) === null || _a === void 0 ? void 0 : _a.formatter) === 'object') {\n if ((_c = (_b = this.concatOptions) === null || _b === void 0 ? void 0 : _b.formatter) === null || _c === void 0 ? void 0 : _c.prefix)\n result += (_e = (_d = this.concatOptions) === null || _d === void 0 ? void 0 : _d.formatter) === null || _e === void 0 ? void 0 : _e.prefix;\n result += val;\n if ((_g = (_f = this.concatOptions) === null || _f === void 0 ? void 0 : _f.formatter) === null || _g === void 0 ? void 0 : _g.postfix)\n result += (_j = (_h = this.concatOptions) === null || _h === void 0 ? void 0 : _h.formatter) === null || _j === void 0 ? void 0 : _j.postfix;\n }\n else\n result += val;\n return result;\n };\n HSRangeSlider.prototype.integerFormatter = function () {\n var _this = this;\n var _a;\n this.format = {\n to: function (val) { return _this.formatValue(Math.round(val)); },\n from: function (val) { return Math.round(+val); },\n };\n if ((_a = this.concatOptions) === null || _a === void 0 ? void 0 : _a.tooltips)\n this.concatOptions.tooltips = this.format;\n };\n HSRangeSlider.prototype.prefixOrPostfixFormatter = function () {\n var _this = this;\n var _a;\n this.format = {\n to: function (val) { return _this.formatValue(val); },\n from: function (val) { return +val; },\n };\n if ((_a = this.concatOptions) === null || _a === void 0 ? void 0 : _a.tooltips)\n this.concatOptions.tooltips = this.format;\n };\n HSRangeSlider.prototype.thousandsSeparatorAndDecimalPointsFormatter = function () {\n var _this = this;\n var _a;\n this.format = {\n to: function (val) {\n return _this.formatValue(new Intl.NumberFormat('en-US', {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n }).format(val));\n },\n from: function (val) { return parseFloat(val.replace(/,/g, '')); },\n };\n if ((_a = this.concatOptions) === null || _a === void 0 ? void 0 : _a.tooltips)\n this.concatOptions.tooltips = this.format;\n };\n HSRangeSlider.prototype.setDisabled = function () {\n this.el.setAttribute('disabled', 'disabled');\n this.el.classList.add('disabled');\n };\n // Static methods\n HSRangeSlider.getInstance = function (target, isInstance) {\n if (isInstance === void 0) { isInstance = false; }\n var elInCollection = window.$hsRangeSliderCollection.find(function (el) {\n return el.element.el ===\n (typeof target === 'string' ? document.querySelector(target) : target);\n });\n return elInCollection\n ? isInstance\n ? elInCollection\n : elInCollection.element.el\n : null;\n };\n HSRangeSlider.autoInit = function () {\n if (!window.$hsRangeSliderCollection)\n window.$hsRangeSliderCollection = [];\n document\n .querySelectorAll('[data-hs-range-slider]:not(.--prevent-on-load-init)')\n .forEach(function (el) {\n if (!window.$hsRangeSliderCollection.find(function (elC) { var _a; return ((_a = elC === null || elC === void 0 ? void 0 : elC.element) === null || _a === void 0 ? void 0 : _a.el) === el; }))\n new HSRangeSlider(el);\n });\n };\n // Backward compatibility\n HSRangeSlider.on = function (evt, target, cb) {\n var elInCollection = window.$hsRangeSliderCollection.find(function (el) {\n return el.element.el ===\n (typeof target === 'string' ? document.querySelector(target) : target);\n });\n if (elInCollection)\n elInCollection.element.events[evt] = cb;\n };\n return HSRangeSlider;\n}(base_plugin_1.default));\nwindow.addEventListener('load', function () {\n HSRangeSlider.autoInit();\n // Uncomment for debug\n // console.log('Range slider collection:', window.$hsRangeSliderCollection);\n});\nif (typeof window !== 'undefined') {\n window.HSRangeSlider = HSRangeSlider;\n}\nexports.default = HSRangeSlider;\n","/*\n * HSRangeSlider\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\n\nimport type { cssClasses, target } from 'nouislider';\n\nimport {\n\tIRangeSliderCssClassesObject,\n\tIRangeSlider,\n\tIRangeSliderOptions,\n} from './interfaces';\n\nimport HSBasePlugin from '../base-plugin';\nimport { ICollectionItem } from '../../interfaces';\n\nclass HSRangeSlider\n\textends HSBasePlugin\n\timplements IRangeSlider\n{\n\tprivate readonly concatOptions: IRangeSliderOptions;\n\tprivate format: any | null;\n\n\tconstructor(el: HTMLElement, options?: IRangeSliderOptions, events?: {}) {\n\t\tsuper(el, options, events);\n\n\t\tconst data = el.getAttribute('data-hs-range-slider');\n\t\tconst dataOptions: IRangeSliderOptions = data ? JSON.parse(data) : {};\n\n\t\tthis.concatOptions = {\n\t\t\t...dataOptions,\n\t\t\t...options,\n\t\t\tcssClasses: {\n\t\t\t\t...noUiSlider.cssClasses,\n\t\t\t\t...this.processClasses(dataOptions.cssClasses),\n\t\t\t},\n\t\t};\n\n\t\tthis.init();\n\t}\n\n\tget formattedValue() {\n\t\tconst values: number | string | (string | number)[] = (\n\t\t\tthis.el as target\n\t\t).noUiSlider.get();\n\n\t\tif (Array.isArray(values) && this.format) {\n\t\t\tconst updateValues: (string | number)[] = [];\n\n\t\t\tvalues.forEach((val) => {\n\t\t\t\tupdateValues.push(this.format.to(val));\n\t\t\t});\n\n\t\t\treturn updateValues;\n\t\t} else if (this.format) {\n\t\t\treturn this.format.to(values);\n\t\t} else {\n\t\t\treturn values;\n\t\t}\n\t}\n\n\tprivate processClasses(cl: typeof cssClasses) {\n\t\tconst mergedClasses: IRangeSliderCssClassesObject = {};\n\n\t\tObject.keys(cl).forEach((key: keyof typeof noUiSlider.cssClasses) => {\n\t\t\tif (key) mergedClasses[key] = `${noUiSlider.cssClasses[key]} ${cl[key]}`;\n\t\t});\n\n\t\treturn mergedClasses as typeof cssClasses;\n\t}\n\n\tprivate init() {\n\t\tthis.createCollection(window.$hsRangeSliderCollection, this);\n\n\t\tif (\n\t\t\ttypeof this.concatOptions?.formatter === 'object'\n\t\t\t\t? this.concatOptions?.formatter?.type ===\n\t\t\t\t\t'thousandsSeparatorAndDecimalPoints'\n\t\t\t\t: this.concatOptions?.formatter === 'thousandsSeparatorAndDecimalPoints'\n\t\t)\n\t\t\tthis.thousandsSeparatorAndDecimalPointsFormatter();\n\t\telse if (\n\t\t\ttypeof this.concatOptions?.formatter === 'object'\n\t\t\t\t? this.concatOptions?.formatter?.type === 'integer'\n\t\t\t\t: this.concatOptions?.formatter === 'integer'\n\t\t)\n\t\t\tthis.integerFormatter();\n\t\telse if (\n\t\t\ttypeof this.concatOptions?.formatter === 'object' &&\n\t\t\t(this.concatOptions?.formatter?.prefix ||\n\t\t\t\tthis.concatOptions?.formatter?.postfix)\n\t\t)\n\t\t\tthis.prefixOrPostfixFormatter();\n\n\t\tnoUiSlider.create(this.el, this.concatOptions);\n\n\t\tif (this.concatOptions.disabled) this.setDisabled();\n\t}\n\n\tprivate formatValue(val: number | string) {\n\t\tlet result = '';\n\n\t\tif (typeof this.concatOptions?.formatter === 'object') {\n\t\t\tif (this.concatOptions?.formatter?.prefix)\n\t\t\t\tresult += this.concatOptions?.formatter?.prefix;\n\t\t\tresult += val;\n\t\t\tif (this.concatOptions?.formatter?.postfix)\n\t\t\t\tresult += this.concatOptions?.formatter?.postfix;\n\t\t} else result += val;\n\n\t\treturn result;\n\t}\n\n\tprivate integerFormatter() {\n\t\tthis.format = {\n\t\t\tto: (val: number) => this.formatValue(Math.round(val)),\n\t\t\tfrom: (val: string) => Math.round(+val),\n\t\t};\n\n\t\tif (this.concatOptions?.tooltips) this.concatOptions.tooltips = this.format;\n\t}\n\n\tprivate prefixOrPostfixFormatter() {\n\t\tthis.format = {\n\t\t\tto: (val: number) => this.formatValue(val),\n\t\t\tfrom: (val: string) => +val,\n\t\t};\n\n\t\tif (this.concatOptions?.tooltips) this.concatOptions.tooltips = this.format;\n\t}\n\n\tprivate thousandsSeparatorAndDecimalPointsFormatter() {\n\t\tthis.format = {\n\t\t\tto: (val: number) =>\n\t\t\t\tthis.formatValue(\n\t\t\t\t\tnew Intl.NumberFormat('en-US', {\n\t\t\t\t\t\tminimumFractionDigits: 2,\n\t\t\t\t\t\tmaximumFractionDigits: 2,\n\t\t\t\t\t}).format(val),\n\t\t\t\t),\n\t\t\tfrom: (val: string) => parseFloat(val.replace(/,/g, '')),\n\t\t};\n\n\t\tif (this.concatOptions?.tooltips) this.concatOptions.tooltips = this.format;\n\t}\n\n\tprivate setDisabled() {\n\t\tthis.el.setAttribute('disabled', 'disabled');\n\t\tthis.el.classList.add('disabled');\n\t}\n\n\t// Static methods\n\tstatic getInstance(target: HTMLElement | string, isInstance = false) {\n\t\tconst elInCollection = window.$hsRangeSliderCollection.find(\n\t\t\t(el) =>\n\t\t\t\tel.element.el ===\n\t\t\t\t(typeof target === 'string' ? document.querySelector(target) : target),\n\t\t);\n\n\t\treturn elInCollection\n\t\t\t? isInstance\n\t\t\t\t? elInCollection\n\t\t\t\t: elInCollection.element.el\n\t\t\t: null;\n\t}\n\n\tstatic autoInit() {\n\t\tif (!window.$hsRangeSliderCollection) window.$hsRangeSliderCollection = [];\n\n\t\tdocument\n\t\t\t.querySelectorAll('[data-hs-range-slider]:not(.--prevent-on-load-init)')\n\t\t\t.forEach((el: HTMLElement) => {\n\t\t\t\tif (\n\t\t\t\t\t!window.$hsRangeSliderCollection.find(\n\t\t\t\t\t\t(elC) => (elC?.element?.el as HTMLElement) === el,\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t\tnew HSRangeSlider(el);\n\t\t\t});\n\t}\n\n\t// Backward compatibility\n\tstatic on(evt: string, target: HTMLElement, cb: Function) {\n\t\tconst elInCollection = window.$hsRangeSliderCollection.find(\n\t\t\t(el) =>\n\t\t\t\tel.element.el ===\n\t\t\t\t(typeof target === 'string' ? document.querySelector(target) : target),\n\t\t);\n\n\t\tif (elInCollection) elInCollection.element.events[evt] = cb;\n\t}\n}\n\ndeclare global {\n\tinterface Window {\n\t\tHSRangeSlider: Function;\n\t\t$hsRangeSliderCollection: ICollectionItem[];\n\t}\n}\n\nwindow.addEventListener('load', () => {\n\tHSRangeSlider.autoInit();\n\n\t// Uncomment for debug\n\t// console.log('Range slider collection:', window.$hsRangeSliderCollection);\n});\n\nif (typeof window !== 'undefined') {\n\twindow.HSRangeSlider = HSRangeSlider;\n}\n\nexport default HSRangeSlider;\n","\"use strict\";\n/*\n * HSRemoveElement\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../../utils\");\nvar base_plugin_1 = __importDefault(require(\"../base-plugin\"));\nvar HSRemoveElement = /** @class */ (function (_super) {\n __extends(HSRemoveElement, _super);\n function HSRemoveElement(el, options) {\n var _this = _super.call(this, el, options) || this;\n var data = el.getAttribute('data-hs-remove-element-options');\n var dataOptions = data ? JSON.parse(data) : {};\n var concatOptions = __assign(__assign({}, dataOptions), options);\n _this.removeTargetId = _this.el.getAttribute('data-hs-remove-element');\n _this.removeTarget = document.querySelector(_this.removeTargetId);\n _this.removeTargetAnimationClass =\n (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.removeTargetAnimationClass) || 'hs-removing';\n if (_this.removeTarget)\n _this.init();\n return _this;\n }\n HSRemoveElement.prototype.init = function () {\n var _this = this;\n this.createCollection(window.$hsRemoveElementCollection, this);\n this.el.addEventListener('click', function () { return _this.remove(); });\n };\n HSRemoveElement.prototype.remove = function () {\n var _this = this;\n if (!this.removeTarget)\n return false;\n this.removeTarget.classList.add(this.removeTargetAnimationClass);\n (0, utils_1.afterTransition)(this.removeTarget, function () {\n return setTimeout(function () { return _this.removeTarget.remove(); });\n });\n };\n // Static method\n HSRemoveElement.autoInit = function () {\n if (!window.$hsRemoveElementCollection)\n window.$hsRemoveElementCollection = [];\n document\n .querySelectorAll('[data-hs-remove-element]:not(.--prevent-on-load-init)')\n .forEach(function (el) {\n if (!window.$hsRemoveElementCollection.find(function (elC) { var _a; return ((_a = elC === null || elC === void 0 ? void 0 : elC.element) === null || _a === void 0 ? void 0 : _a.el) === el; }))\n new HSRemoveElement(el);\n });\n };\n return HSRemoveElement;\n}(base_plugin_1.default));\nwindow.addEventListener('load', function () {\n HSRemoveElement.autoInit();\n // Uncomment for debug\n // console.log('Remove element collection:', window.$hsRemoveElementCollection);\n});\nif (typeof window !== 'undefined') {\n window.HSRemoveElement = HSRemoveElement;\n}\nexports.default = HSRemoveElement;\n","/*\n * HSRemoveElement\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\n\nimport { afterTransition } from '../../utils';\n\nimport {\n\tIRemoveElementOptions,\n\tIRemoveElement,\n} from '../remove-element/interfaces';\n\nimport HSBasePlugin from '../base-plugin';\nimport { ICollectionItem } from '../../interfaces';\n\nclass HSRemoveElement\n\textends HSBasePlugin\n\timplements IRemoveElement\n{\n\tprivate readonly removeTargetId: string | null;\n\tprivate readonly removeTarget: HTMLElement | null;\n\tprivate readonly removeTargetAnimationClass: string;\n\n\tconstructor(el: HTMLElement, options?: IRemoveElementOptions) {\n\t\tsuper(el, options);\n\n\t\tconst data = el.getAttribute('data-hs-remove-element-options');\n\t\tconst dataOptions: IRemoveElementOptions = data ? JSON.parse(data) : {};\n\t\tconst concatOptions = {\n\t\t\t...dataOptions,\n\t\t\t...options,\n\t\t};\n\n\t\tthis.removeTargetId = this.el.getAttribute('data-hs-remove-element');\n\t\tthis.removeTarget = document.querySelector(this.removeTargetId);\n\t\tthis.removeTargetAnimationClass =\n\t\t\tconcatOptions?.removeTargetAnimationClass || 'hs-removing';\n\n\t\tif (this.removeTarget) this.init();\n\t}\n\n\tprivate init() {\n\t\tthis.createCollection(window.$hsRemoveElementCollection, this);\n\n\t\tthis.el.addEventListener('click', () => this.remove());\n\t}\n\n\tprivate remove() {\n\t\tif (!this.removeTarget) return false;\n\n\t\tthis.removeTarget.classList.add(this.removeTargetAnimationClass);\n\n\t\tafterTransition(this.removeTarget, () =>\n\t\t\tsetTimeout(() => this.removeTarget.remove()),\n\t\t);\n\t}\n\n\t// Static method\n\tstatic autoInit() {\n\t\tif (!window.$hsRemoveElementCollection)\n\t\t\twindow.$hsRemoveElementCollection = [];\n\n\t\tdocument\n\t\t\t.querySelectorAll('[data-hs-remove-element]:not(.--prevent-on-load-init)')\n\t\t\t.forEach((el: HTMLElement) => {\n\t\t\t\tif (\n\t\t\t\t\t!window.$hsRemoveElementCollection.find(\n\t\t\t\t\t\t(elC) => (elC?.element?.el as HTMLElement) === el,\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t\tnew HSRemoveElement(el);\n\t\t\t});\n\t}\n}\n\ndeclare global {\n\tinterface Window {\n\t\tHSRemoveElement: Function;\n\t\t$hsRemoveElementCollection: ICollectionItem[];\n\t}\n}\n\nwindow.addEventListener('load', () => {\n\tHSRemoveElement.autoInit();\n\n\t// Uncomment for debug\n\t// console.log('Remove element collection:', window.$hsRemoveElementCollection);\n});\n\nif (typeof window !== 'undefined') {\n\twindow.HSRemoveElement = HSRemoveElement;\n}\n\nexport default HSRemoveElement;\n","\"use strict\";\n/*\n * HSScrollspy\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../../utils\");\nvar base_plugin_1 = __importDefault(require(\"../base-plugin\"));\nvar HSScrollspy = /** @class */ (function (_super) {\n __extends(HSScrollspy, _super);\n function HSScrollspy(el, options) {\n if (options === void 0) { options = {}; }\n var _this = _super.call(this, el, options) || this;\n _this.activeSection = null;\n _this.contentId = _this.el.getAttribute('data-hs-scrollspy');\n _this.content = document.querySelector(_this.contentId);\n _this.links = _this.el.querySelectorAll('[href]');\n _this.sections = [];\n _this.scrollableId = _this.el.getAttribute('data-hs-scrollspy-scrollable-parent');\n _this.scrollable = _this.scrollableId\n ? document.querySelector(_this.scrollableId)\n : document;\n _this.init();\n return _this;\n }\n HSScrollspy.prototype.init = function () {\n var _this = this;\n this.createCollection(window.$hsScrollspyCollection, this);\n this.links.forEach(function (el) {\n _this.sections.push(_this.scrollable.querySelector(el.getAttribute('href')));\n });\n Array.from(this.sections).forEach(function (section) {\n if (!section.getAttribute('id'))\n return false;\n _this.scrollable.addEventListener('scroll', function (evt) {\n return _this.update(evt, section);\n });\n });\n this.links.forEach(function (el) {\n el.addEventListener('click', function (evt) {\n evt.preventDefault();\n if (el.getAttribute('href') === 'javascript:;')\n return false;\n _this.scrollTo(el);\n });\n });\n };\n HSScrollspy.prototype.update = function (evt, section) {\n var globalOffset = parseInt((0, utils_1.getClassProperty)(this.el, '--scrollspy-offset', '0'));\n var userOffset = parseInt((0, utils_1.getClassProperty)(section, '--scrollspy-offset')) || globalOffset;\n var scrollableParentOffset = evt.target === document\n ? 0\n : parseInt(String(evt.target.getBoundingClientRect().top));\n var topOffset = parseInt(String(section.getBoundingClientRect().top)) -\n userOffset -\n scrollableParentOffset;\n var height = section.offsetHeight;\n if (topOffset <= 0 && topOffset + height > 0) {\n if (this.activeSection === section)\n return false;\n this.links.forEach(function (el) {\n el.classList.remove('active');\n });\n var current = this.el.querySelector(\"[href=\\\"#\".concat(section.getAttribute('id'), \"\\\"]\"));\n if (current) {\n current.classList.add('active');\n var group = current.closest('[data-hs-scrollspy-group]');\n if (group) {\n var parentLink = group.querySelector('[href]');\n if (parentLink)\n parentLink.classList.add('active');\n }\n }\n this.activeSection = section;\n }\n };\n HSScrollspy.prototype.scrollTo = function (link) {\n var targetId = link.getAttribute('href');\n var target = document.querySelector(targetId);\n var globalOffset = parseInt((0, utils_1.getClassProperty)(this.el, '--scrollspy-offset', '0'));\n var userOffset = parseInt((0, utils_1.getClassProperty)(target, '--scrollspy-offset')) || globalOffset;\n var scrollableParentOffset = this.scrollable === document\n ? 0\n : this.scrollable.offsetTop;\n var topOffset = target.offsetTop - userOffset - scrollableParentOffset;\n var view = this.scrollable === document ? window : this.scrollable;\n var scrollFn = function () {\n window.history.replaceState(null, null, link.getAttribute('href'));\n if ('scrollTo' in view) {\n view.scrollTo({\n top: topOffset,\n left: 0,\n behavior: 'smooth',\n });\n }\n };\n var beforeScroll = this.fireEvent('beforeScroll', this.el);\n (0, utils_1.dispatch)('beforeScroll.hs.scrollspy', this.el, this.el);\n if (beforeScroll instanceof Promise)\n beforeScroll.then(function () { return scrollFn(); });\n else\n scrollFn();\n };\n // Static methods\n HSScrollspy.getInstance = function (target, isInstance) {\n if (isInstance === void 0) { isInstance = false; }\n var elInCollection = window.$hsScrollspyCollection.find(function (el) {\n return el.element.el ===\n (typeof target === 'string' ? document.querySelector(target) : target);\n });\n return elInCollection\n ? isInstance\n ? elInCollection\n : elInCollection.element.el\n : null;\n };\n HSScrollspy.autoInit = function () {\n if (!window.$hsScrollspyCollection)\n window.$hsScrollspyCollection = [];\n document\n .querySelectorAll('[data-hs-scrollspy]:not(.--prevent-on-load-init)')\n .forEach(function (el) {\n if (!window.$hsScrollspyCollection.find(function (elC) { var _a; return ((_a = elC === null || elC === void 0 ? void 0 : elC.element) === null || _a === void 0 ? void 0 : _a.el) === el; }))\n new HSScrollspy(el);\n });\n };\n return HSScrollspy;\n}(base_plugin_1.default));\nwindow.addEventListener('load', function () {\n HSScrollspy.autoInit();\n // Uncomment for debug\n // console.log('Scrollspy collection:', window.$hsScrollspyCollection);\n});\nif (typeof window !== 'undefined') {\n window.HSScrollspy = HSScrollspy;\n}\nexports.default = HSScrollspy;\n","/*\n * HSScrollspy\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\n\nimport { getClassProperty, dispatch } from '../../utils';\n\nimport { IScrollspy } from '../scrollspy/interfaces';\n\nimport HSBasePlugin from '../base-plugin';\nimport { ICollectionItem } from '../../interfaces';\n\nclass HSScrollspy extends HSBasePlugin<{}> implements IScrollspy {\n\tprivate activeSection: HTMLElement | null;\n\tprivate readonly contentId: string | null;\n\tprivate readonly content: HTMLElement | null;\n\tprivate readonly links: NodeListOf | null;\n\tprivate readonly sections: HTMLElement[] | null;\n\tprivate readonly scrollableId: string | null;\n\tprivate readonly scrollable: HTMLElement | Document;\n\n\tconstructor(el: HTMLElement, options = {}) {\n\t\tsuper(el, options);\n\n\t\tthis.activeSection = null;\n\t\tthis.contentId = this.el.getAttribute('data-hs-scrollspy');\n\t\tthis.content = document.querySelector(this.contentId);\n\t\tthis.links = this.el.querySelectorAll('[href]');\n\t\tthis.sections = [];\n\t\tthis.scrollableId = this.el.getAttribute(\n\t\t\t'data-hs-scrollspy-scrollable-parent',\n\t\t);\n\t\tthis.scrollable = this.scrollableId\n\t\t\t? (document.querySelector(this.scrollableId) as HTMLElement)\n\t\t\t: (document as Document);\n\n\t\tthis.init();\n\t}\n\n\tprivate init() {\n\t\tthis.createCollection(window.$hsScrollspyCollection, this);\n\n\t\tthis.links.forEach((el) => {\n\t\t\tthis.sections.push(\n\t\t\t\tthis.scrollable.querySelector(el.getAttribute('href')),\n\t\t\t);\n\t\t});\n\n\t\tArray.from(this.sections).forEach((section: HTMLElement) => {\n\t\t\tif (!section.getAttribute('id')) return false;\n\n\t\t\tthis.scrollable.addEventListener('scroll', (evt) =>\n\t\t\t\tthis.update(evt, section),\n\t\t\t);\n\t\t});\n\n\t\tthis.links.forEach((el) => {\n\t\t\tel.addEventListener('click', (evt) => {\n\t\t\t\tevt.preventDefault();\n\n\t\t\t\tif (el.getAttribute('href') === 'javascript:;') return false;\n\n\t\t\t\tthis.scrollTo(el);\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate update(evt: Event, section: HTMLElement) {\n\t\tconst globalOffset = parseInt(\n\t\t\tgetClassProperty(this.el, '--scrollspy-offset', '0'),\n\t\t);\n\t\tconst userOffset =\n\t\t\tparseInt(getClassProperty(section, '--scrollspy-offset')) || globalOffset;\n\t\tconst scrollableParentOffset =\n\t\t\tevt.target === document\n\t\t\t\t? 0\n\t\t\t\t: parseInt(\n\t\t\t\t\t\tString((evt.target as HTMLElement).getBoundingClientRect().top),\n\t\t\t\t\t);\n\t\tconst topOffset =\n\t\t\tparseInt(String(section.getBoundingClientRect().top)) -\n\t\t\tuserOffset -\n\t\t\tscrollableParentOffset;\n\t\tconst height = section.offsetHeight;\n\n\t\tif (topOffset <= 0 && topOffset + height > 0) {\n\t\t\tif (this.activeSection === section) return false;\n\n\t\t\tthis.links.forEach((el) => {\n\t\t\t\tel.classList.remove('active');\n\t\t\t});\n\n\t\t\tconst current = this.el.querySelector(\n\t\t\t\t`[href=\"#${section.getAttribute('id')}\"]`,\n\t\t\t);\n\n\t\t\tif (current) {\n\t\t\t\tcurrent.classList.add('active');\n\n\t\t\t\tconst group = current.closest('[data-hs-scrollspy-group]');\n\n\t\t\t\tif (group) {\n\t\t\t\t\tconst parentLink = group.querySelector('[href]');\n\n\t\t\t\t\tif (parentLink) parentLink.classList.add('active');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.activeSection = section;\n\t\t}\n\t}\n\n\tprivate scrollTo(link: HTMLAnchorElement) {\n\t\tconst targetId = link.getAttribute('href');\n\t\tconst target: HTMLElement = document.querySelector(targetId);\n\t\tconst globalOffset = parseInt(\n\t\t\tgetClassProperty(this.el, '--scrollspy-offset', '0'),\n\t\t);\n\t\tconst userOffset =\n\t\t\tparseInt(getClassProperty(target, '--scrollspy-offset')) || globalOffset;\n\t\tconst scrollableParentOffset =\n\t\t\tthis.scrollable === document\n\t\t\t\t? 0\n\t\t\t\t: (this.scrollable as HTMLElement).offsetTop;\n\t\tconst topOffset = target.offsetTop - userOffset - scrollableParentOffset;\n\t\tconst view = this.scrollable === document ? window : this.scrollable;\n\t\tconst scrollFn = () => {\n\t\t\twindow.history.replaceState(null, null, link.getAttribute('href'));\n\n\t\t\tif ('scrollTo' in view) {\n\t\t\t\tview.scrollTo({\n\t\t\t\t\ttop: topOffset,\n\t\t\t\t\tleft: 0,\n\t\t\t\t\tbehavior: 'smooth',\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\n\t\tconst beforeScroll = this.fireEvent('beforeScroll', this.el);\n\t\tdispatch('beforeScroll.hs.scrollspy', this.el, this.el);\n\n\t\tif (beforeScroll instanceof Promise) beforeScroll.then(() => scrollFn());\n\t\telse scrollFn();\n\t}\n\n\t// Static methods\n\tstatic getInstance(target: HTMLElement, isInstance = false) {\n\t\tconst elInCollection = window.$hsScrollspyCollection.find(\n\t\t\t(el) =>\n\t\t\t\tel.element.el ===\n\t\t\t\t(typeof target === 'string' ? document.querySelector(target) : target),\n\t\t);\n\n\t\treturn elInCollection\n\t\t\t? isInstance\n\t\t\t\t? elInCollection\n\t\t\t\t: elInCollection.element.el\n\t\t\t: null;\n\t}\n\n\tstatic autoInit() {\n\t\tif (!window.$hsScrollspyCollection) window.$hsScrollspyCollection = [];\n\n\t\tdocument\n\t\t\t.querySelectorAll('[data-hs-scrollspy]:not(.--prevent-on-load-init)')\n\t\t\t.forEach((el: HTMLElement) => {\n\t\t\t\tif (\n\t\t\t\t\t!window.$hsScrollspyCollection.find(\n\t\t\t\t\t\t(elC) => (elC?.element?.el as HTMLElement) === el,\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t\tnew HSScrollspy(el);\n\t\t\t});\n\t}\n}\n\ndeclare global {\n\tinterface Window {\n\t\tHSScrollspy: Function;\n\t\t$hsScrollspyCollection: ICollectionItem[];\n\t}\n}\n\nwindow.addEventListener('load', () => {\n\tHSScrollspy.autoInit();\n\n\t// Uncomment for debug\n\t// console.log('Scrollspy collection:', window.$hsScrollspyCollection);\n});\n\nif (typeof window !== 'undefined') {\n\twindow.HSScrollspy = HSScrollspy;\n}\n\nexport default HSScrollspy;\n","\"use strict\";\n/*\n * HSSelect\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../../utils\");\nvar base_plugin_1 = __importDefault(require(\"../base-plugin\"));\nvar constants_1 = require(\"../../constants\");\nvar HSSelect = /** @class */ (function (_super) {\n __extends(HSSelect, _super);\n function HSSelect(el, options) {\n var _a;\n var _this = _super.call(this, el, options) || this;\n _this.optionId = 0;\n var data = el.getAttribute('data-hs-select');\n var dataOptions = data ? JSON.parse(data) : {};\n var concatOptions = __assign(__assign({}, dataOptions), options);\n var defaultToggleSeparators = {\n items: ', ',\n betweenItemsAndCounter: 'and',\n };\n _this.value =\n (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.value) || _this.el.value || null;\n _this.placeholder = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.placeholder) || 'Select...';\n _this.hasSearch = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.hasSearch) || false;\n _this.preventSearchFocus = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.preventSearchFocus) || false;\n _this.mode = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.mode) || 'default';\n _this.viewport =\n typeof (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.viewport) !== 'undefined'\n ? document.querySelector(concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.viewport)\n : null;\n _this.isOpened = Boolean(concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.isOpened) || false;\n _this.isMultiple = _this.el.hasAttribute('multiple') || false;\n _this.isDisabled = _this.el.hasAttribute('disabled') || false;\n _this.selectedItems = [];\n _this.apiUrl = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.apiUrl) || null;\n _this.apiQuery = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.apiQuery) || null;\n _this.apiOptions = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.apiOptions) || null;\n _this.apiSearchQueryKey = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.apiSearchQueryKey) || null;\n _this.apiDataPart = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.apiDataPart) || null;\n _this.apiFieldsMap = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.apiFieldsMap) || null;\n _this.apiIconTag = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.apiIconTag) || null;\n _this.wrapperClasses = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.wrapperClasses) || null;\n _this.toggleTag = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.toggleTag) || null;\n _this.toggleClasses = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.toggleClasses) || null;\n _this.toggleSeparators = defaultToggleSeparators;\n _this.toggleCountText = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.toggleCountText) || null;\n _this.toggleCountTextMinItems = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.toggleCountTextMinItems) || 1;\n _this.toggleCountTextMode =\n (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.toggleCountTextMode) || 'countAfterLimit';\n _this.tagsItemTemplate = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.tagsItemTemplate) || null;\n _this.tagsItemClasses = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.tagsItemClasses) || null;\n _this.tagsInputId = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.tagsInputId) || null;\n _this.tagsInputClasses = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.tagsInputClasses) || null;\n _this.dropdownTag = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.dropdownTag) || null;\n _this.dropdownClasses = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.dropdownClasses) || null;\n _this.dropdownDirectionClasses =\n (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.dropdownDirectionClasses) || null;\n _this.dropdownSpace = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.dropdownSpace) || 10;\n _this.dropdownPlacement = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.dropdownPlacement) || null;\n _this.dropdownScope = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.dropdownScope) || 'parent';\n _this.searchTemplate = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.searchTemplate) || null;\n _this.searchWrapperTemplate = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.searchWrapperTemplate) || null;\n _this.searchWrapperClasses =\n (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.searchWrapperClasses) || 'bg-white p-2 sticky top-0';\n _this.searchId = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.searchId) || null;\n _this.searchLimit = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.searchLimit) || Infinity;\n _this.isSearchDirectMatch =\n typeof (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.isSearchDirectMatch) !== 'undefined'\n ? concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.isSearchDirectMatch\n : true;\n _this.searchClasses =\n (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.searchClasses) ||\n 'block w-[calc(100%-2rem)] text-sm border-gray-200 rounded-md focus:border-blue-500 focus:ring-blue-500 dark:bg-neutral-900 dark:border-neutral-700 dark:text-neutral-400 py-2 px-3 my-2 mx-4';\n _this.searchPlaceholder = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.searchPlaceholder) || 'Search...';\n _this.searchNoResultTemplate =\n (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.searchNoResultTemplate) || '';\n _this.searchNoResultText =\n (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.searchNoResultText) || 'No results found';\n _this.searchNoResultClasses =\n (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.searchNoResultClasses) ||\n 'px-4 text-sm text-gray-800 dark:text-neutral-200';\n _this.optionTemplate = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.optionTemplate) || null;\n _this.optionTag = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.optionTag) || null;\n _this.optionClasses = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.optionClasses) || null;\n _this.extraMarkup = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.extraMarkup) || null;\n _this.descriptionClasses = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.descriptionClasses) || null;\n _this.iconClasses = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.iconClasses) || null;\n _this.isAddTagOnEnter = (_a = concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.isAddTagOnEnter) !== null && _a !== void 0 ? _a : true;\n _this.animationInProcess = false;\n _this.selectOptions = [];\n _this.remoteOptions = [];\n _this.tagsInputHelper = null;\n _this.init();\n return _this;\n }\n HSSelect.prototype.setValue = function (val) {\n this.value = val;\n this.clearSelections();\n if (Array.isArray(val)) {\n this.toggleTextWrapper.innerHTML = this.value.length\n ? this.stringFromValue()\n : this.placeholder;\n this.unselectMultipleItems();\n this.selectMultipleItems();\n }\n else {\n this.setToggleTitle();\n if (this.toggle.querySelector('[data-icon]'))\n this.setToggleIcon();\n if (this.toggle.querySelector('[data-title]'))\n this.setToggleTitle();\n this.selectSingleItem();\n }\n };\n HSSelect.prototype.init = function () {\n this.createCollection(window.$hsSelectCollection, this);\n this.build();\n };\n HSSelect.prototype.build = function () {\n var _this = this;\n this.el.style.display = 'none';\n if (this.el.children) {\n Array.from(this.el.children)\n .filter(function (el) { return el.value && el.value !== ''; })\n .forEach(function (el) {\n var data = el.getAttribute('data-hs-select-option');\n _this.selectOptions = __spreadArray(__spreadArray([], _this.selectOptions, true), [\n {\n title: el.textContent,\n val: el.value,\n disabled: el.disabled,\n options: data !== 'undefined' ? JSON.parse(data) : null,\n },\n ], false);\n });\n }\n if (this.isMultiple) {\n var selectedOptions = Array.from(this.el.children).filter(function (el) { return el.selected; });\n if (selectedOptions) {\n var values_1 = [];\n selectedOptions.forEach(function (el) {\n values_1.push(el.value);\n });\n this.value = values_1;\n }\n }\n this.buildWrapper();\n if (this.mode === 'tags')\n this.buildTags();\n else\n this.buildToggle();\n this.buildDropdown();\n if (this.extraMarkup)\n this.buildExtraMarkup();\n };\n HSSelect.prototype.buildWrapper = function () {\n var _this = this;\n this.wrapper = document.createElement('div');\n this.wrapper.classList.add('hs-select', 'relative');\n if (this.mode === 'tags') {\n this.wrapper.addEventListener('click', function (evt) {\n if (!evt.target.closest('[data-hs-select-dropdown]') &&\n !evt.target.closest('[data-tag-value]')) {\n _this.tagsInput.focus();\n }\n });\n }\n if (this.wrapperClasses)\n (0, utils_1.classToClassList)(this.wrapperClasses, this.wrapper);\n this.el.before(this.wrapper);\n this.wrapper.append(this.el);\n };\n HSSelect.prototype.buildExtraMarkup = function () {\n var _this = this;\n var appendMarkup = function (markup) {\n var el = (0, utils_1.htmlToElement)(markup);\n _this.wrapper.append(el);\n return el;\n };\n var clickHandle = function (el) {\n if (!el.classList.contains('--prevent-click'))\n el.addEventListener('click', function (evt) {\n evt.stopPropagation();\n _this.toggleFn();\n });\n };\n if (Array.isArray(this.extraMarkup)) {\n this.extraMarkup.forEach(function (el) {\n var newEl = appendMarkup(el);\n clickHandle(newEl);\n });\n }\n else {\n var newEl = appendMarkup(this.extraMarkup);\n clickHandle(newEl);\n }\n };\n HSSelect.prototype.buildToggle = function () {\n var _this = this;\n var _a, _b;\n var icon, title;\n this.toggleTextWrapper = document.createElement('span');\n this.toggleTextWrapper.classList.add('truncate');\n this.toggle = (0, utils_1.htmlToElement)(this.toggleTag || '
');\n icon = this.toggle.querySelector('[data-icon]');\n title = this.toggle.querySelector('[data-title]');\n if (!this.isMultiple && icon)\n this.setToggleIcon();\n if (!this.isMultiple && title)\n this.setToggleTitle();\n if (this.isMultiple) {\n this.toggleTextWrapper.innerHTML = this.value.length\n ? this.stringFromValue()\n : this.placeholder;\n }\n else {\n this.toggleTextWrapper.innerHTML =\n ((_a = this.getItemByValue(this.value)) === null || _a === void 0 ? void 0 : _a.title) || this.placeholder;\n }\n if (!title)\n this.toggle.append(this.toggleTextWrapper);\n if (this.toggleClasses)\n (0, utils_1.classToClassList)(this.toggleClasses, this.toggle);\n if (this.isDisabled)\n this.toggle.classList.add('disabled');\n if (this.wrapper)\n this.wrapper.append(this.toggle);\n if ((_b = this.toggle) === null || _b === void 0 ? void 0 : _b.ariaExpanded) {\n if (this.isOpened)\n this.toggle.ariaExpanded = 'true';\n else\n this.toggle.ariaExpanded = 'false';\n }\n this.toggle.addEventListener('click', function () {\n if (_this.isDisabled)\n return false;\n _this.toggleFn();\n });\n };\n HSSelect.prototype.setToggleIcon = function () {\n var _a;\n var item = this.getItemByValue(this.value);\n var icon = this.toggle.querySelector('[data-icon]');\n icon.innerHTML = '';\n if (icon) {\n var img = (0, utils_1.htmlToElement)(this.apiUrl && this.apiIconTag\n ? this.apiIconTag || ''\n : ((_a = item === null || item === void 0 ? void 0 : item.options) === null || _a === void 0 ? void 0 : _a.icon) || '');\n if (this.value && this.apiUrl && this.apiIconTag && item[this.apiFieldsMap.icon])\n img.src = item[this.apiFieldsMap.icon] || '';\n icon.append(img);\n if (!img || !(img === null || img === void 0 ? void 0 : img.src))\n icon.classList.add('hidden');\n else\n icon.classList.remove('hidden');\n }\n };\n HSSelect.prototype.setToggleTitle = function () {\n var _a;\n var title = this.toggle.querySelector('[data-title]');\n title.classList.add('truncate');\n title.innerHTML = '';\n if (title) {\n var titleText = ((_a = this.getItemByValue(this.value)) === null || _a === void 0 ? void 0 : _a.title) || this.placeholder;\n title.innerHTML = titleText;\n this.toggle.append(title);\n }\n };\n HSSelect.prototype.buildTags = function () {\n if (this.isDisabled)\n this.wrapper.classList.add('disabled');\n this.buildTagsInput();\n this.setTagsItems();\n };\n HSSelect.prototype.reassignTagsInputPlaceholder = function (placeholder) {\n this.tagsInput.placeholder = placeholder;\n this.tagsInputHelper.innerHTML = placeholder;\n this.calculateInputWidth();\n };\n HSSelect.prototype.buildTagsItem = function (val) {\n var _this = this;\n var _a, _b, _c, _d;\n var item = this.getItemByValue(val);\n var template, title, remove, icon;\n var newItem = document.createElement('div');\n newItem.setAttribute('data-tag-value', val);\n if (this.tagsItemClasses)\n (0, utils_1.classToClassList)(this.tagsItemClasses, newItem);\n if (this.tagsItemTemplate) {\n template = (0, utils_1.htmlToElement)(this.tagsItemTemplate);\n newItem.append(template);\n }\n // Icon\n if (((_a = item === null || item === void 0 ? void 0 : item.options) === null || _a === void 0 ? void 0 : _a.icon) || this.apiIconTag) {\n var img = (0, utils_1.htmlToElement)(this.apiUrl && this.apiIconTag\n ? this.apiIconTag\n : (_b = item === null || item === void 0 ? void 0 : item.options) === null || _b === void 0 ? void 0 : _b.icon);\n if (this.apiUrl && this.apiIconTag && item[this.apiFieldsMap.icon])\n img.src = item[this.apiFieldsMap.icon] || '';\n icon = template\n ? template.querySelector('[data-icon]')\n : document.createElement('span');\n icon.append(img);\n if (!template)\n newItem.append(icon);\n }\n if (template &&\n template.querySelector('[data-icon]') &&\n !((_c = item === null || item === void 0 ? void 0 : item.options) === null || _c === void 0 ? void 0 : _c.icon) &&\n !this.apiUrl &&\n !this.apiIconTag &&\n !item[(_d = this.apiFieldsMap) === null || _d === void 0 ? void 0 : _d.icon]) {\n template.querySelector('[data-icon]').classList.add('hidden');\n }\n // Title\n title = template\n ? template.querySelector('[data-title]')\n : document.createElement('span');\n title.textContent = item.title || '';\n if (!template)\n newItem.append(title);\n // Remove\n if (template) {\n remove = template.querySelector('[data-remove]');\n }\n else {\n remove = document.createElement('span');\n remove.textContent = 'X';\n newItem.append(remove);\n }\n remove.addEventListener('click', function () {\n _this.value = _this.value.filter(function (el) { return el !== val; });\n _this.selectedItems = _this.selectedItems.filter(function (el) { return el !== val; });\n if (!_this.value.length)\n _this.reassignTagsInputPlaceholder(_this.placeholder);\n _this.unselectMultipleItems();\n _this.selectMultipleItems();\n newItem.remove();\n _this.fireEvent('change', _this.value);\n (0, utils_1.dispatch)('change.hs.select', _this.el, _this.value);\n });\n this.wrapper.append(newItem);\n };\n HSSelect.prototype.getItemByValue = function (val) {\n var _this = this;\n var value = this.apiUrl\n ? this.remoteOptions.find(function (el) { return el[_this.apiFieldsMap.title] === val; })\n : this.selectOptions.find(function (el) { return el.val === val; });\n return value;\n };\n HSSelect.prototype.setTagsItems = function () {\n var _this = this;\n if (this.value) {\n this.value.forEach(function (val) {\n if (!_this.selectedItems.includes(val))\n _this.buildTagsItem(val);\n _this.selectedItems = !_this.selectedItems.includes(val)\n ? __spreadArray(__spreadArray([], _this.selectedItems, true), [val], false) : _this.selectedItems;\n });\n }\n };\n HSSelect.prototype.buildTagsInput = function () {\n var _this = this;\n this.tagsInput = document.createElement('input');\n if (this.tagsInputId)\n this.tagsInput.id = this.tagsInputId;\n if (this.tagsInputClasses)\n (0, utils_1.classToClassList)(this.tagsInputClasses, this.tagsInput);\n this.tagsInput.addEventListener('focus', function () {\n if (!_this.isOpened)\n _this.open();\n });\n this.tagsInput.addEventListener('input', function () { return _this.calculateInputWidth(); });\n this.tagsInput.addEventListener('input', (0, utils_1.debounce)(function (evt) {\n return _this.searchOptions(evt.target.value);\n }));\n this.tagsInput.addEventListener('keydown', function (evt) {\n if (evt.key === 'Enter' && _this.isAddTagOnEnter) {\n var val_1 = evt.target.value;\n if (_this.selectOptions.find(function (el) { return el.val === val_1; }))\n return false;\n _this.addSelectOption(val_1, val_1);\n _this.buildOption(val_1, val_1);\n _this.dropdown.querySelector(\"[data-value=\\\"\".concat(val_1, \"\\\"]\")).click();\n _this.resetTagsInputField();\n // this.close();\n }\n });\n this.wrapper.append(this.tagsInput);\n setTimeout(function () {\n _this.adjustInputWidth();\n _this.reassignTagsInputPlaceholder(_this.value.length ? '' : _this.placeholder);\n });\n };\n HSSelect.prototype.buildDropdown = function () {\n var _this = this;\n this.dropdown = (0, utils_1.htmlToElement)(this.dropdownTag || '
');\n this.dropdown.setAttribute('data-hs-select-dropdown', '');\n if (this.dropdownScope === 'parent')\n this.dropdown.classList.add('absolute', 'top-full');\n this.dropdown.role = 'listbox';\n this.dropdown.tabIndex = -1;\n this.dropdown.ariaOrientation = 'vertical';\n if (!this.isOpened)\n this.dropdown.classList.add('hidden');\n if (this.dropdownClasses)\n (0, utils_1.classToClassList)(this.dropdownClasses, this.dropdown);\n if (this.wrapper)\n this.wrapper.append(this.dropdown);\n if (this.dropdown && this.hasSearch)\n this.buildSearch();\n if (this.selectOptions)\n this.selectOptions.forEach(function (props, i) {\n return _this.buildOption(props.title, props.val, props.disabled, props.selected, props.options, \"\".concat(i));\n });\n if (this.apiUrl)\n this.optionsFromRemoteData();\n if (this.dropdownScope === 'window')\n this.buildPopper();\n };\n HSSelect.prototype.buildPopper = function () {\n if (typeof Popper !== 'undefined' && Popper.createPopper) {\n document.body.appendChild(this.dropdown);\n this.popperInstance = Popper.createPopper(this.mode === 'tags' ? this.wrapper : this.toggle, this.dropdown, {\n placement: constants_1.POSITIONS[this.dropdownPlacement] || 'bottom',\n strategy: 'fixed',\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [0, 5],\n },\n },\n ],\n });\n }\n };\n HSSelect.prototype.updateDropdownWidth = function () {\n var toggle = this.mode === 'tags' ? this.wrapper : this.toggle;\n this.dropdown.style.width = \"\".concat(toggle.clientWidth, \"px\");\n };\n HSSelect.prototype.buildSearch = function () {\n var _this = this;\n var input;\n this.searchWrapper = (0, utils_1.htmlToElement)(this.searchWrapperTemplate || '
');\n if (this.searchWrapperClasses)\n (0, utils_1.classToClassList)(this.searchWrapperClasses, this.searchWrapper);\n input = this.searchWrapper.querySelector('[data-input]');\n var search = (0, utils_1.htmlToElement)(this.searchTemplate || '');\n this.search = (search.tagName === 'INPUT' ? search : search.querySelector(':scope input'));\n this.search.placeholder = this.searchPlaceholder;\n if (this.searchClasses)\n (0, utils_1.classToClassList)(this.searchClasses, this.search);\n if (this.searchId)\n this.search.id = this.searchId;\n this.search.addEventListener('input', (0, utils_1.debounce)(function (evt) {\n if (_this.apiUrl)\n _this.remoteSearch(evt.target.value);\n else\n _this.searchOptions(evt.target.value);\n }));\n if (input)\n input.append(search);\n else\n this.searchWrapper.append(search);\n this.dropdown.append(this.searchWrapper);\n };\n HSSelect.prototype.buildOption = function (title, val, disabled, selected, options, index, id) {\n var _this = this;\n var _a;\n if (disabled === void 0) { disabled = false; }\n if (selected === void 0) { selected = false; }\n if (index === void 0) { index = '1'; }\n var template = null;\n var titleWrapper = null;\n var iconWrapper = null;\n var descriptionWrapper = null;\n var option = (0, utils_1.htmlToElement)(this.optionTag || '
');\n option.setAttribute('data-value', val);\n option.setAttribute('data-title-value', title);\n option.setAttribute('tabIndex', index);\n option.classList.add('cursor-pointer');\n option.setAttribute('data-id', id || \"\".concat(this.optionId));\n if (!id)\n this.optionId++;\n if (disabled)\n option.classList.add('disabled');\n if (selected) {\n if (this.isMultiple)\n this.value = __spreadArray(__spreadArray([], this.value, true), [val], false);\n else\n this.value = val;\n }\n if (this.optionTemplate) {\n template = (0, utils_1.htmlToElement)(this.optionTemplate);\n option.append(template);\n }\n if (template) {\n titleWrapper = template.querySelector('[data-title]');\n titleWrapper.textContent = title || '';\n }\n else {\n option.textContent = title || '';\n }\n if (options) {\n if (options.icon) {\n var img = (0, utils_1.htmlToElement)((_a = this.apiIconTag) !== null && _a !== void 0 ? _a : options.icon);\n img.classList.add('max-w-full');\n if (this.apiUrl) {\n img.setAttribute('alt', title);\n img.setAttribute('src', options.icon);\n }\n if (template) {\n iconWrapper = template.querySelector('[data-icon]');\n iconWrapper.append(img);\n }\n else {\n var icon = (0, utils_1.htmlToElement)('
');\n if (this.iconClasses)\n (0, utils_1.classToClassList)(this.iconClasses, icon);\n icon.append(img);\n option.append(icon);\n }\n }\n if (options.description) {\n if (template) {\n descriptionWrapper = template.querySelector('[data-description]');\n if (descriptionWrapper)\n descriptionWrapper.append(options.description);\n }\n else {\n var description = (0, utils_1.htmlToElement)('
');\n description.textContent = options.description;\n if (this.descriptionClasses)\n (0, utils_1.classToClassList)(this.descriptionClasses, description);\n option.append(description);\n }\n }\n }\n if (template &&\n template.querySelector('[data-icon]') &&\n !options &&\n !(options === null || options === void 0 ? void 0 : options.icon)) {\n template.querySelector('[data-icon]').classList.add('hidden');\n }\n if (this.value &&\n (this.isMultiple ? this.value.includes(val) : this.value === val))\n option.classList.add('selected');\n if (!disabled)\n option.addEventListener('click', function () { return _this.onSelectOption(val); });\n if (this.optionClasses)\n (0, utils_1.classToClassList)(this.optionClasses, option);\n if (this.dropdown)\n this.dropdown.append(option);\n if (selected)\n this.setNewValue();\n };\n HSSelect.prototype.buildOptionFromRemoteData = function (title, val, disabled, selected, index, id, options) {\n if (disabled === void 0) { disabled = false; }\n if (selected === void 0) { selected = false; }\n if (index === void 0) { index = '1'; }\n if (index) {\n this.buildOption(title, val, disabled, selected, options, index, id);\n }\n else {\n alert('ID parameter is required for generating remote options! Please check your API endpoint have it.');\n }\n };\n HSSelect.prototype.buildOptionsFromRemoteData = function (data) {\n var _this = this;\n data.forEach(function (el, i) {\n var id = null;\n var title = '';\n var options = {\n id: '',\n title: '',\n icon: null,\n description: null,\n rest: {},\n };\n Object.keys(el).forEach(function (key) {\n var _a;\n if (el[_this.apiFieldsMap.id])\n id = el[_this.apiFieldsMap.id];\n if (el[_this.apiFieldsMap.title])\n title = el[_this.apiFieldsMap.title];\n if (el[_this.apiFieldsMap.icon])\n options.icon = el[_this.apiFieldsMap.icon];\n if (el[(_a = _this.apiFieldsMap) === null || _a === void 0 ? void 0 : _a.description])\n options.description = el[_this.apiFieldsMap.description];\n options.rest[key] = el[key];\n });\n _this.buildOriginalOption(title, title, id, false, false, options);\n _this.buildOptionFromRemoteData(title, title, false, false, \"\".concat(i), id, options);\n });\n this.sortElements(this.el, 'option');\n this.sortElements(this.dropdown, '[data-value]');\n };\n HSSelect.prototype.optionsFromRemoteData = function () {\n return __awaiter(this, arguments, void 0, function (val) {\n var res;\n if (val === void 0) { val = ''; }\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.apiRequest(val)];\n case 1:\n res = _a.sent();\n this.remoteOptions = res;\n if (res.length)\n this.buildOptionsFromRemoteData(this.remoteOptions);\n else\n console.log('There is no data were responded!');\n return [2 /*return*/];\n }\n });\n });\n };\n HSSelect.prototype.apiRequest = function () {\n return __awaiter(this, arguments, void 0, function (val) {\n var url, search, query, options, req, res, err_1;\n if (val === void 0) { val = ''; }\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 3, , 4]);\n url = this.apiUrl;\n search = this.apiSearchQueryKey\n ? \"\".concat(this.apiSearchQueryKey, \"=\").concat(val.toLowerCase())\n : null;\n query = \"\".concat(this.apiQuery);\n options = this.apiOptions || {};\n if (search)\n url += \"?\".concat(search);\n if (this.apiQuery)\n url += \"\".concat(search ? '&' : '?').concat(query);\n return [4 /*yield*/, fetch(url, options)];\n case 1:\n req = _a.sent();\n return [4 /*yield*/, req.json()];\n case 2:\n res = _a.sent();\n return [2 /*return*/, this.apiDataPart ? res[this.apiDataPart] : res];\n case 3:\n err_1 = _a.sent();\n console.error(err_1);\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n HSSelect.prototype.sortElements = function (container, selector) {\n var items = Array.from(container.querySelectorAll(selector));\n items.sort(function (a, b) {\n var isASelected = a.classList.contains('selected') || a.hasAttribute('selected');\n var isBSelected = b.classList.contains('selected') || b.hasAttribute('selected');\n if (isASelected && !isBSelected)\n return -1;\n if (!isASelected && isBSelected)\n return 1;\n return 0;\n });\n items.forEach(function (item) { return container.appendChild(item); });\n };\n HSSelect.prototype.remoteSearch = function (val) {\n return __awaiter(this, void 0, void 0, function () {\n var res, newIds, restOptions, pseudoOptions, options;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.apiRequest(val)];\n case 1:\n res = _a.sent();\n this.remoteOptions = res;\n newIds = res.map(function (item) { return \"\".concat(item.id); });\n restOptions = null;\n pseudoOptions = this.dropdown.querySelectorAll('[data-value]');\n options = this.el.querySelectorAll('[data-hs-select-option]');\n options.forEach(function (el) {\n var _a;\n var dataId = el.getAttribute('data-id');\n if (!newIds.includes(dataId) && !((_a = _this.value) === null || _a === void 0 ? void 0 : _a.includes(el.value)))\n _this.destroyOriginalOption(el.value);\n });\n pseudoOptions.forEach(function (el) {\n var _a;\n var dataId = el.getAttribute('data-id');\n if (!newIds.includes(dataId) &&\n !((_a = _this.value) === null || _a === void 0 ? void 0 : _a.includes(el.getAttribute('data-value'))))\n _this.destroyOption(el.getAttribute('data-value'));\n else\n newIds = newIds.filter(function (item) { return item !== dataId; });\n });\n restOptions = res.filter(function (item) {\n return newIds.includes(\"\".concat(item.id));\n });\n if (restOptions.length)\n this.buildOptionsFromRemoteData(restOptions);\n else\n console.log('There is no data were responded!');\n return [2 /*return*/];\n }\n });\n });\n };\n HSSelect.prototype.destroyOption = function (val) {\n var option = this.dropdown.querySelector(\"[data-value=\\\"\".concat(val, \"\\\"]\"));\n if (!option)\n return false;\n option.remove();\n };\n HSSelect.prototype.buildOriginalOption = function (title, val, id, disabled, selected, options) {\n var option = (0, utils_1.htmlToElement)('');\n option.setAttribute('value', val);\n if (disabled)\n option.setAttribute('disabled', 'disabled');\n if (selected)\n option.setAttribute('selected', 'selected');\n if (id)\n option.setAttribute('data-id', id);\n option.setAttribute('data-hs-select-option', JSON.stringify(options));\n option.innerText = title;\n this.el.append(option);\n };\n HSSelect.prototype.destroyOriginalOption = function (val) {\n var option = this.el.querySelector(\"[value=\\\"\".concat(val, \"\\\"]\"));\n if (!option)\n return false;\n option.remove();\n };\n HSSelect.prototype.buildTagsInputHelper = function () {\n this.tagsInputHelper = document.createElement('span');\n this.tagsInputHelper.style.fontSize = window.getComputedStyle(this.tagsInput).fontSize;\n this.tagsInputHelper.style.fontFamily = window.getComputedStyle(this.tagsInput).fontFamily;\n this.tagsInputHelper.style.fontWeight = window.getComputedStyle(this.tagsInput).fontWeight;\n this.tagsInputHelper.style.letterSpacing = window.getComputedStyle(this.tagsInput).letterSpacing;\n this.tagsInputHelper.style.visibility = 'hidden';\n this.tagsInputHelper.style.whiteSpace = 'pre';\n this.tagsInputHelper.style.position = 'absolute';\n this.wrapper.appendChild(this.tagsInputHelper);\n };\n HSSelect.prototype.calculateInputWidth = function () {\n this.tagsInputHelper.textContent =\n this.tagsInput.value ||\n this.tagsInput.placeholder;\n var inputPadding = parseInt(window.getComputedStyle(this.tagsInput).paddingLeft) +\n parseInt(window.getComputedStyle(this.tagsInput).paddingRight);\n var inputBorder = parseInt(window.getComputedStyle(this.tagsInput).borderLeftWidth) +\n parseInt(window.getComputedStyle(this.tagsInput).borderRightWidth);\n var newWidth = this.tagsInputHelper.offsetWidth + inputPadding + inputBorder;\n var maxWidth = this.wrapper.offsetWidth -\n (parseInt(window.getComputedStyle(this.wrapper).paddingLeft) +\n parseInt(window.getComputedStyle(this.wrapper).paddingRight));\n this.tagsInput.style.width = \"\".concat(Math.min(newWidth, maxWidth) + 2, \"px\");\n };\n HSSelect.prototype.adjustInputWidth = function () {\n this.buildTagsInputHelper();\n this.calculateInputWidth();\n };\n HSSelect.prototype.onSelectOption = function (val) {\n var _this = this;\n this.clearSelections();\n if (this.isMultiple) {\n this.value = this.value.includes(val)\n ? Array.from(this.value).filter(function (el) { return el !== val; })\n : __spreadArray(__spreadArray([], Array.from(this.value), true), [val], false);\n this.selectMultipleItems();\n this.setNewValue();\n }\n else {\n this.value = val;\n this.selectSingleItem();\n this.setNewValue();\n }\n this.fireEvent('change', this.value);\n (0, utils_1.dispatch)('change.hs.select', this.el, this.value);\n if (this.mode === 'tags') {\n var intersection = this.selectedItems.filter(function (x) { return !_this.value.includes(x); });\n if (intersection.length) {\n intersection.forEach(function (el) {\n _this.selectedItems = _this.selectedItems.filter(function (elI) { return elI !== el; });\n _this.wrapper.querySelector(\"[data-tag-value=\\\"\".concat(el, \"\\\"]\")).remove();\n });\n }\n this.resetTagsInputField();\n }\n if (!this.isMultiple) {\n if (this.toggle.querySelector('[data-icon]'))\n this.setToggleIcon();\n if (this.toggle.querySelector('[data-title]'))\n this.setToggleTitle();\n this.close();\n }\n if (!this.value.length && this.mode === 'tags')\n this.reassignTagsInputPlaceholder(this.placeholder);\n if (this.isOpened && this.mode === 'tags' && this.tagsInput)\n this.tagsInput.focus();\n this.triggerChangeEventForNativeSelect();\n };\n HSSelect.prototype.triggerChangeEventForNativeSelect = function () {\n // TODO:: test for bugs after comment the line below\n // (this.el as HTMLSelectElement).value = `${this.value}`;\n var selectChangeEvent = new Event('change', { bubbles: true });\n this.el.dispatchEvent(selectChangeEvent);\n };\n HSSelect.prototype.addSelectOption = function (title, val, disabled, selected, options) {\n this.selectOptions = __spreadArray(__spreadArray([], this.selectOptions, true), [\n {\n title: title,\n val: val,\n disabled: disabled,\n selected: selected,\n options: options,\n },\n ], false);\n };\n HSSelect.prototype.removeSelectOption = function (val, isArray) {\n if (isArray === void 0) { isArray = false; }\n var hasOption = !!this.selectOptions.some(function (el) { return el.val === val; });\n if (!hasOption)\n return false;\n this.selectOptions = this.selectOptions.filter(function (el) { return el.val !== val; });\n this.value = isArray\n ? this.value.filter(function (item) { return item !== val; })\n : val;\n };\n HSSelect.prototype.resetTagsInputField = function () {\n this.tagsInput.value = '';\n this.reassignTagsInputPlaceholder('');\n this.searchOptions('');\n };\n HSSelect.prototype.clearSelections = function () {\n Array.from(this.dropdown.children).forEach(function (el) {\n if (el.classList.contains('selected'))\n el.classList.remove('selected');\n });\n Array.from(this.el.children).forEach(function (el) {\n if (el.selected)\n el.selected = false;\n });\n };\n HSSelect.prototype.setNewValue = function () {\n var _a;\n if (this.mode === 'tags') {\n this.setTagsItems();\n }\n else {\n if ((_a = this.value) === null || _a === void 0 ? void 0 : _a.length) {\n this.toggleTextWrapper.innerHTML = this.stringFromValue();\n }\n else\n this.toggleTextWrapper.innerHTML = this.placeholder;\n }\n };\n HSSelect.prototype.stringFromValueBasic = function (options) {\n var _this = this;\n var value = [];\n var title = '';\n options.forEach(function (el) {\n if (_this.isMultiple) {\n if (_this.value.includes(el.val))\n value.push(el.title);\n }\n else {\n if (_this.value === el.val)\n value.push(el.title);\n }\n });\n if (this.toggleCountText &&\n this.toggleCountText !== '' &&\n value.length >= this.toggleCountTextMinItems) {\n if (this.toggleCountTextMode === 'nItemsAndCount') {\n var nItems = value.slice(0, this.toggleCountTextMinItems - 1);\n title = \"\".concat(nItems.join(this.toggleSeparators.items), \" \").concat(this.toggleSeparators.betweenItemsAndCounter, \" \").concat(value.length - nItems.length, \" \").concat(this.toggleCountText);\n }\n else {\n title = \"\".concat(value.length, \" \").concat(this.toggleCountText);\n }\n }\n else {\n title = value.join(this.toggleSeparators.items);\n }\n return title;\n };\n HSSelect.prototype.stringFromValueRemoteData = function () {\n var _this = this;\n var options = this.dropdown.querySelectorAll('[data-title-value]');\n var value = [];\n var title = '';\n options.forEach(function (el) {\n var dataValue = el.getAttribute('data-value');\n if (_this.isMultiple) {\n if (_this.value.includes(dataValue))\n value.push(dataValue);\n }\n else {\n if (_this.value === dataValue)\n value.push(dataValue);\n }\n });\n if (this.toggleCountText &&\n this.toggleCountText !== '' &&\n value.length >= this.toggleCountTextMinItems) {\n if (this.toggleCountTextMode === 'nItemsAndCount') {\n var nItems = value.slice(0, this.toggleCountTextMinItems - 1);\n title = \"\".concat(nItems.join(this.toggleSeparators.items), \" \").concat(this.toggleSeparators.betweenItemsAndCounter, \" \").concat(value.length - nItems.length, \" \").concat(this.toggleCountText);\n }\n else {\n title = \"\".concat(value.length, \" \").concat(this.toggleCountText);\n }\n }\n else {\n title = value.join(this.toggleSeparators.items);\n }\n return title;\n };\n HSSelect.prototype.stringFromValue = function () {\n var result = this.apiUrl\n ? this.stringFromValueRemoteData()\n : this.stringFromValueBasic(this.selectOptions);\n return result;\n };\n HSSelect.prototype.selectSingleItem = function () {\n var _this = this;\n var selectedOption = Array.from(this.el.children).find(function (el) { return _this.value === el.value; });\n selectedOption.selected = true;\n var selectedItem = Array.from(this.dropdown.children).find(function (el) {\n return _this.value === el.getAttribute('data-value');\n });\n if (selectedItem)\n selectedItem.classList.add('selected');\n };\n HSSelect.prototype.selectMultipleItems = function () {\n var _this = this;\n Array.from(this.dropdown.children)\n .filter(function (el) { return _this.value.includes(el.getAttribute('data-value')); })\n .forEach(function (el) { return el.classList.add('selected'); });\n Array.from(this.el.children)\n .filter(function (el) { return _this.value.includes(el.value); })\n .forEach(function (el) { return (el.selected = true); });\n };\n HSSelect.prototype.unselectMultipleItems = function () {\n Array.from(this.dropdown.children).forEach(function (el) {\n return el.classList.remove('selected');\n });\n Array.from(this.el.children).forEach(function (el) { return (el.selected = false); });\n };\n HSSelect.prototype.searchOptions = function (val) {\n var _this = this;\n if (this.searchNoResult) {\n this.searchNoResult.remove();\n this.searchNoResult = null;\n }\n this.searchNoResult = (0, utils_1.htmlToElement)(this.searchNoResultTemplate);\n this.searchNoResult.innerText = this.searchNoResultText;\n (0, utils_1.classToClassList)(this.searchNoResultClasses, this.searchNoResult);\n var options = this.dropdown.querySelectorAll('[data-value]');\n var hasItems = false;\n var countLimit;\n if (this.searchLimit)\n countLimit = 0;\n options.forEach(function (el) {\n var optionVal = el.getAttribute('data-title-value').toLocaleLowerCase();\n var regexSafeVal = val\n ? val\n .split('')\n .map(function (char) {\n return char.match(/\\w/) ? \"\".concat(char, \"[\\\\W_]*\") : '\\\\W*';\n })\n .join('')\n : '';\n var regex = new RegExp(regexSafeVal, 'i');\n var directMatch = _this.isSearchDirectMatch;\n var cleanedOptionVal = optionVal.trim();\n var condition = val\n ? directMatch\n ? !cleanedOptionVal.toLowerCase().includes(val.toLowerCase()) ||\n countLimit >= _this.searchLimit\n : !regex.test(cleanedOptionVal) || countLimit >= _this.searchLimit\n : !regex.test(cleanedOptionVal);\n if (condition) {\n el.classList.add('hidden');\n }\n else {\n el.classList.remove('hidden');\n hasItems = true;\n if (_this.searchLimit)\n countLimit++;\n }\n });\n if (!hasItems)\n this.dropdown.append(this.searchNoResult);\n };\n HSSelect.prototype.eraseToggleIcon = function () {\n var icon = this.toggle.querySelector('[data-icon]');\n if (icon) {\n icon.innerHTML = null;\n icon.classList.add('hidden');\n }\n };\n HSSelect.prototype.eraseToggleTitle = function () {\n var title = this.toggle.querySelector('[data-title]');\n if (title) {\n title.innerHTML = this.placeholder;\n }\n else {\n this.toggleTextWrapper.innerHTML = this.placeholder;\n }\n };\n HSSelect.prototype.toggleFn = function () {\n if (this.isOpened)\n this.close();\n else\n this.open();\n };\n // Public methods\n HSSelect.prototype.destroy = function () {\n var parent = this.el.parentElement.parentElement;\n this.el.classList.remove('hidden');\n this.el.style.display = '';\n parent.prepend(this.el);\n parent.querySelector('.hs-select').remove();\n this.wrapper = null;\n };\n HSSelect.prototype.open = function () {\n var _this = this;\n var _a;\n var currentlyOpened = ((_a = window === null || window === void 0 ? void 0 : window.$hsSelectCollection) === null || _a === void 0 ? void 0 : _a.find(function (el) { return el.element.isOpened; })) || null;\n if (currentlyOpened)\n currentlyOpened.element.close();\n if (this.animationInProcess)\n return false;\n this.animationInProcess = true;\n if (this.dropdownScope === 'window')\n this.dropdown.classList.add('invisible');\n this.dropdown.classList.remove('hidden');\n this.recalculateDirection();\n setTimeout(function () {\n var _a;\n if ((_a = _this === null || _this === void 0 ? void 0 : _this.toggle) === null || _a === void 0 ? void 0 : _a.ariaExpanded)\n _this.toggle.ariaExpanded = 'true';\n _this.wrapper.classList.add('active');\n _this.dropdown.classList.add('opened');\n if (_this.dropdown.classList.contains('w-full') &&\n _this.dropdownScope === 'window')\n _this.updateDropdownWidth();\n if (_this.popperInstance && _this.dropdownScope === 'window') {\n _this.popperInstance.update();\n _this.dropdown.classList.remove('invisible');\n }\n if (_this.hasSearch && !_this.preventSearchFocus)\n _this.search.focus();\n _this.animationInProcess = false;\n });\n this.isOpened = true;\n };\n HSSelect.prototype.close = function () {\n var _this = this;\n var _a, _b, _c, _d;\n if (this.animationInProcess)\n return false;\n this.animationInProcess = true;\n if ((_a = this === null || this === void 0 ? void 0 : this.toggle) === null || _a === void 0 ? void 0 : _a.ariaExpanded)\n this.toggle.ariaExpanded = 'false';\n this.wrapper.classList.remove('active');\n this.dropdown.classList.remove('opened', 'bottom-full', 'top-full');\n if ((_b = this.dropdownDirectionClasses) === null || _b === void 0 ? void 0 : _b.bottom)\n this.dropdown.classList.remove(this.dropdownDirectionClasses.bottom);\n if ((_c = this.dropdownDirectionClasses) === null || _c === void 0 ? void 0 : _c.top)\n this.dropdown.classList.remove(this.dropdownDirectionClasses.top);\n this.dropdown.style.marginTop = '';\n this.dropdown.style.marginBottom = '';\n (0, utils_1.afterTransition)(this.dropdown, function () {\n _this.dropdown.classList.add('hidden');\n if (_this.hasSearch) {\n _this.search.value = '';\n _this.search.dispatchEvent(new Event('input', { bubbles: true }));\n _this.search.blur();\n }\n _this.animationInProcess = false;\n });\n (_d = this.dropdown\n .querySelector('.hs-select-option-highlighted')) === null || _d === void 0 ? void 0 : _d.classList.remove('hs-select-option-highlighted');\n this.isOpened = false;\n };\n HSSelect.prototype.addOption = function (items) {\n var _this = this;\n var i = \"\".concat(this.selectOptions.length);\n var addOption = function (option) {\n var title = option.title, val = option.val, disabled = option.disabled, selected = option.selected, options = option.options;\n var hasOption = !!_this.selectOptions.some(function (el) { return el.val === val; });\n if (!hasOption) {\n _this.addSelectOption(title, val, disabled, selected, options);\n _this.buildOption(title, val, disabled, selected, options, i);\n _this.buildOriginalOption(title, val, null, disabled, selected, options);\n if (selected && !_this.isMultiple)\n _this.onSelectOption(val);\n }\n };\n if (Array.isArray(items)) {\n items.forEach(function (option) {\n addOption(option);\n });\n }\n else {\n addOption(items);\n }\n };\n HSSelect.prototype.removeOption = function (values) {\n var _this = this;\n var removeOption = function (val, isArray) {\n if (isArray === void 0) { isArray = false; }\n var hasOption = !!_this.selectOptions.some(function (el) { return el.val === val; });\n if (hasOption) {\n _this.removeSelectOption(val, isArray);\n _this.destroyOption(val);\n _this.destroyOriginalOption(val);\n if (_this.value === val) {\n _this.value = null;\n _this.eraseToggleTitle();\n _this.eraseToggleIcon();\n }\n }\n };\n if (Array.isArray(values)) {\n values.forEach(function (val) {\n removeOption(val, _this.isMultiple);\n });\n }\n else {\n removeOption(values, this.isMultiple);\n }\n this.setNewValue();\n };\n HSSelect.prototype.recalculateDirection = function () {\n var _a, _b, _c, _d;\n if ((0, utils_1.isEnoughSpace)(this.dropdown, this.toggle || this.tagsInput, 'bottom', this.dropdownSpace, this.viewport)) {\n this.dropdown.classList.remove('bottom-full');\n if ((_a = this.dropdownDirectionClasses) === null || _a === void 0 ? void 0 : _a.bottom)\n this.dropdown.classList.remove(this.dropdownDirectionClasses.bottom);\n this.dropdown.style.marginBottom = '';\n this.dropdown.classList.add('top-full');\n if ((_b = this.dropdownDirectionClasses) === null || _b === void 0 ? void 0 : _b.top)\n this.dropdown.classList.add(this.dropdownDirectionClasses.top);\n this.dropdown.style.marginTop = \"\".concat(this.dropdownSpace, \"px\");\n }\n else {\n this.dropdown.classList.remove('top-full');\n if ((_c = this.dropdownDirectionClasses) === null || _c === void 0 ? void 0 : _c.top)\n this.dropdown.classList.remove(this.dropdownDirectionClasses.top);\n this.dropdown.style.marginTop = '';\n this.dropdown.classList.add('bottom-full');\n if ((_d = this.dropdownDirectionClasses) === null || _d === void 0 ? void 0 : _d.bottom)\n this.dropdown.classList.add(this.dropdownDirectionClasses.bottom);\n this.dropdown.style.marginBottom = \"\".concat(this.dropdownSpace, \"px\");\n }\n };\n // Static methods\n HSSelect.getInstance = function (target, isInstance) {\n var elInCollection = window.$hsSelectCollection.find(function (el) {\n return el.element.el ===\n (typeof target === 'string' ? document.querySelector(target) : target);\n });\n return elInCollection\n ? isInstance\n ? elInCollection\n : elInCollection.element\n : null;\n };\n HSSelect.autoInit = function () {\n if (!window.$hsSelectCollection)\n window.$hsSelectCollection = [];\n document\n .querySelectorAll('[data-hs-select]:not(.--prevent-on-load-init)')\n .forEach(function (el) {\n if (!window.$hsSelectCollection.find(function (elC) { var _a; return ((_a = elC === null || elC === void 0 ? void 0 : elC.element) === null || _a === void 0 ? void 0 : _a.el) === el; })) {\n var data = el.getAttribute('data-hs-select');\n var options = data ? JSON.parse(data) : {};\n new HSSelect(el, options);\n }\n });\n if (window.$hsSelectCollection) {\n window.addEventListener('click', function (evt) {\n var evtTarget = evt.target;\n HSSelect.closeCurrentlyOpened(evtTarget);\n });\n document.addEventListener('keydown', function (evt) {\n return HSSelect.accessibility(evt);\n });\n }\n };\n HSSelect.open = function (target) {\n var elInCollection = window.$hsSelectCollection.find(function (el) {\n return el.element.el ===\n (typeof target === 'string' ? document.querySelector(target) : target);\n });\n if (elInCollection && !elInCollection.element.isOpened)\n elInCollection.element.open();\n };\n HSSelect.close = function (target) {\n var elInCollection = window.$hsSelectCollection.find(function (el) {\n return el.element.el ===\n (typeof target === 'string' ? document.querySelector(target) : target);\n });\n if (elInCollection && elInCollection.element.isOpened) {\n elInCollection.element.close();\n }\n };\n HSSelect.closeCurrentlyOpened = function (evtTarget) {\n if (evtTarget === void 0) { evtTarget = null; }\n if (!evtTarget.closest('.hs-select.active') &&\n !evtTarget.closest('[data-hs-select-dropdown].opened')) {\n var currentlyOpened = window.$hsSelectCollection.filter(function (el) { return el.element.isOpened; }) || null;\n if (currentlyOpened) {\n currentlyOpened.forEach(function (el) {\n el.element.close();\n });\n }\n }\n };\n // Accessibility methods\n HSSelect.accessibility = function (evt) {\n var target = window.$hsSelectCollection.find(function (el) { return el.element.isOpened; });\n if (target &&\n constants_1.SELECT_ACCESSIBILITY_KEY_SET.includes(evt.code) &&\n !evt.metaKey) {\n switch (evt.code) {\n case 'Escape':\n evt.preventDefault();\n this.onEscape();\n break;\n case 'ArrowUp':\n evt.preventDefault();\n evt.stopImmediatePropagation();\n this.onArrow();\n break;\n case 'ArrowDown':\n evt.preventDefault();\n evt.stopImmediatePropagation();\n this.onArrow(false);\n break;\n case 'Tab':\n evt.preventDefault();\n evt.stopImmediatePropagation();\n this.onTab(evt.shiftKey);\n break;\n case 'Home':\n evt.preventDefault();\n evt.stopImmediatePropagation();\n this.onStartEnd();\n break;\n case 'End':\n evt.preventDefault();\n evt.stopImmediatePropagation();\n this.onStartEnd(false);\n break;\n case 'Enter':\n evt.preventDefault();\n this.onEnter(evt);\n break;\n default:\n break;\n }\n }\n };\n HSSelect.onEscape = function () {\n var target = window.$hsSelectCollection.find(function (el) { return el.element.isOpened; });\n if (target)\n target.element.close();\n };\n HSSelect.onArrow = function (isArrowUp) {\n if (isArrowUp === void 0) { isArrowUp = true; }\n var target = window.$hsSelectCollection.find(function (el) { return el.element.isOpened; });\n if (target) {\n var dropdown = target.element.dropdown;\n if (!dropdown)\n return false;\n var preparedOptions = isArrowUp\n ? Array.from(dropdown.querySelectorAll(':scope > *:not(.hidden)')).reverse()\n : Array.from(dropdown.querySelectorAll(':scope > *:not(.hidden)'));\n var options = preparedOptions.filter(function (el) { return !el.classList.contains('disabled'); });\n var current_1 = dropdown.querySelector('.hs-select-option-highlighted') ||\n dropdown.querySelector('.selected');\n if (!current_1)\n options[0].classList.add('hs-select-option-highlighted');\n var currentInd = options.findIndex(function (el) { return el === current_1; });\n if (currentInd + 1 < options.length) {\n currentInd++;\n }\n options[currentInd].focus();\n if (current_1)\n current_1.classList.remove('hs-select-option-highlighted');\n options[currentInd].classList.add('hs-select-option-highlighted');\n }\n };\n HSSelect.onTab = function (isArrowUp) {\n if (isArrowUp === void 0) { isArrowUp = true; }\n var target = window.$hsSelectCollection.find(function (el) { return el.element.isOpened; });\n if (target) {\n var dropdown = target.element.dropdown;\n if (!dropdown)\n return false;\n var preparedOptions = isArrowUp\n ? Array.from(dropdown.querySelectorAll(':scope > *:not(.hidden)')).reverse()\n : Array.from(dropdown.querySelectorAll(':scope > *:not(.hidden)'));\n var options = preparedOptions.filter(function (el) { return !el.classList.contains('disabled'); });\n var current_2 = dropdown.querySelector('.hs-select-option-highlighted') ||\n dropdown.querySelector('.selected');\n if (!current_2)\n options[0].classList.add('hs-select-option-highlighted');\n var currentInd = options.findIndex(function (el) { return el === current_2; });\n if (currentInd + 1 < options.length) {\n currentInd++;\n }\n else {\n if (current_2)\n current_2.classList.remove('hs-select-option-highlighted');\n target.element.close();\n target.element.toggle.focus();\n return false;\n }\n options[currentInd].focus();\n if (current_2)\n current_2.classList.remove('hs-select-option-highlighted');\n options[currentInd].classList.add('hs-select-option-highlighted');\n }\n };\n HSSelect.onStartEnd = function (isStart) {\n if (isStart === void 0) { isStart = true; }\n var target = window.$hsSelectCollection.find(function (el) { return el.element.isOpened; });\n if (target) {\n var dropdown = target.element.dropdown;\n if (!dropdown)\n return false;\n var preparedOptions = isStart\n ? Array.from(dropdown.querySelectorAll(':scope > *:not(.hidden)'))\n : Array.from(dropdown.querySelectorAll(':scope > *:not(.hidden)')).reverse();\n var options = preparedOptions.filter(function (el) { return !el.classList.contains('disabled'); });\n var current = dropdown.querySelector('.hs-select-option-highlighted');\n if (options.length) {\n options[0].focus();\n if (current)\n current.classList.remove('hs-select-option-highlighted');\n options[0].classList.add('hs-select-option-highlighted');\n }\n }\n };\n HSSelect.onEnter = function (evt) {\n var select = evt.target.previousSibling;\n if (window.$hsSelectCollection.find(function (el) { return el.element.el === select; })) {\n var opened = window.$hsSelectCollection.find(function (el) { return el.element.isOpened; });\n var target = window.$hsSelectCollection.find(function (el) { return el.element.el === select; });\n opened.element.close();\n target.element.open();\n }\n else {\n var target = window.$hsSelectCollection.find(function (el) { return el.element.isOpened; });\n if (target)\n target.element.onSelectOption(evt.target.dataset.value || '');\n }\n };\n return HSSelect;\n}(base_plugin_1.default));\nwindow.addEventListener('load', function () {\n HSSelect.autoInit();\n // Uncomment for debug\n // console.log('Select collection:', window.$hsSelectCollection);\n});\ndocument.addEventListener('scroll', function () {\n if (!window.$hsSelectCollection)\n return false;\n var target = window.$hsSelectCollection.find(function (el) { return el.element.isOpened; });\n if (target)\n target.element.recalculateDirection();\n});\nif (typeof window !== 'undefined') {\n window.HSSelect = HSSelect;\n}\nexports.default = HSSelect;\n","/*\n * HSSelect\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\n\nimport {\n\tisEnoughSpace,\n\tdebounce,\n\tdispatch,\n\tafterTransition,\n\thtmlToElement,\n\tclassToClassList,\n} from '../../utils';\n\nimport {\n\tISelect,\n\tISelectOptions,\n\tISingleOption,\n\tISingleOptionOptions,\n\tIApiFieldMap,\n} from '../select/interfaces';\n\nimport HSBasePlugin from '../base-plugin';\nimport { ICollectionItem } from '../../interfaces';\n\nimport { SELECT_ACCESSIBILITY_KEY_SET, POSITIONS } from '../../constants';\n\nclass HSSelect extends HSBasePlugin implements ISelect {\n\tvalue: string | string[] | null;\n\tprivate readonly placeholder: string | null;\n\tprivate readonly hasSearch: boolean;\n\tprivate readonly preventSearchFocus: boolean;\n\tprivate readonly mode: string | null;\n\tprivate readonly viewport: HTMLElement | null;\n\n\tisOpened: boolean | null;\n\tisMultiple: boolean | null;\n\tisDisabled: boolean | null;\n\tselectedItems: string[];\n\n\tprivate readonly apiUrl: string | null;\n\tprivate readonly apiQuery: string | null;\n\tprivate readonly apiOptions: RequestInit | null;\n\tprivate readonly apiDataPart: string | null;\n\tprivate readonly apiSearchQueryKey: string | null;\n\tprivate readonly apiFieldsMap: IApiFieldMap | null;\n\tprivate readonly apiIconTag: string | null;\n\n\tprivate readonly toggleTag: string | null;\n\tprivate readonly toggleClasses: string | null;\n\tprivate readonly toggleSeparators: {\n\t\titems?: string;\n\t\tbetweenItemsAndCounter?: string;\n\t} | null;\n\tprivate readonly toggleCountText: string | null;\n\tprivate readonly toggleCountTextMinItems: number | null;\n\tprivate readonly toggleCountTextMode: string | null;\n\tprivate readonly wrapperClasses: string | null;\n\tprivate readonly tagsItemTemplate: string | null;\n\tprivate readonly tagsItemClasses: string | null;\n\tprivate readonly tagsInputId: string | null;\n\tprivate readonly tagsInputClasses: string | null;\n\tprivate readonly dropdownTag: string | null;\n\tprivate readonly dropdownClasses: string | null;\n\tprivate readonly dropdownDirectionClasses: {\n\t\ttop?: string;\n\t\tbottom?: string;\n\t} | null;\n\tpublic dropdownSpace: number | null;\n\tpublic readonly dropdownPlacement: string | null;\n\tpublic readonly dropdownScope: 'window' | 'parent';\n\tprivate readonly searchTemplate: string | null;\n\tprivate readonly searchWrapperTemplate: string | null;\n\tprivate readonly searchPlaceholder: string | null;\n\tprivate readonly searchId: string | null;\n\tprivate readonly searchLimit: number | typeof Infinity;\n\tprivate readonly isSearchDirectMatch: boolean;\n\tprivate readonly searchClasses: string | null;\n\tprivate readonly searchWrapperClasses: string | null;\n\tprivate readonly searchNoResultTemplate: string | null;\n\tprivate readonly searchNoResultText: string | null;\n\tprivate readonly searchNoResultClasses: string | null;\n\tprivate readonly optionTag: string | null;\n\tprivate readonly optionTemplate: string | null;\n\tprivate readonly optionClasses: string | null;\n\tprivate readonly descriptionClasses: string | null;\n\tprivate readonly iconClasses: string | null;\n\n\tprivate animationInProcess: boolean;\n\n\tprivate wrapper: HTMLElement | null;\n\tprivate toggle: HTMLElement | null;\n\tprivate toggleTextWrapper: HTMLElement | null;\n\tprivate tagsInput: HTMLElement | null;\n\tprivate dropdown: HTMLElement | null;\n\tprivate popperInstance: any;\n\tprivate searchWrapper: HTMLElement | null;\n\tprivate search: HTMLInputElement | null;\n\tprivate searchNoResult: HTMLElement | null;\n\tprivate selectOptions: ISingleOption[] | [];\n\tprivate extraMarkup: string | string[] | Element | null;\n\n\tprivate readonly isAddTagOnEnter: boolean;\n\n\tprivate tagsInputHelper: HTMLElement | null;\n\n\tprivate remoteOptions: unknown[];\n\n\tprivate optionId = 0;\n\n\tconstructor(el: HTMLElement, options?: ISelectOptions) {\n\t\tsuper(el, options);\n\n\t\tconst data = el.getAttribute('data-hs-select');\n\t\tconst dataOptions: ISelectOptions = data ? JSON.parse(data) : {};\n\t\tconst concatOptions = {\n\t\t\t...dataOptions,\n\t\t\t...options,\n\t\t};\n\t\tconst defaultToggleSeparators = {\n\t\t\titems: ', ',\n\t\t\tbetweenItemsAndCounter: 'and',\n\t\t};\n\n\t\tthis.value =\n\t\t\tconcatOptions?.value || (this.el as HTMLSelectElement).value || null;\n\t\tthis.placeholder = concatOptions?.placeholder || 'Select...';\n\t\tthis.hasSearch = concatOptions?.hasSearch || false;\n\t\tthis.preventSearchFocus = concatOptions?.preventSearchFocus || false;\n\t\tthis.mode = concatOptions?.mode || 'default';\n\t\tthis.viewport =\n\t\t\ttypeof concatOptions?.viewport !== 'undefined'\n\t\t\t\t? document.querySelector(concatOptions?.viewport)\n\t\t\t\t: null;\n\t\tthis.isOpened = Boolean(concatOptions?.isOpened) || false;\n\t\tthis.isMultiple = this.el.hasAttribute('multiple') || false;\n\t\tthis.isDisabled = this.el.hasAttribute('disabled') || false;\n\t\tthis.selectedItems = [];\n\n\t\tthis.apiUrl = concatOptions?.apiUrl || null;\n\t\tthis.apiQuery = concatOptions?.apiQuery || null;\n\t\tthis.apiOptions = concatOptions?.apiOptions || null;\n\t\tthis.apiSearchQueryKey = concatOptions?.apiSearchQueryKey || null;\n\t\tthis.apiDataPart = concatOptions?.apiDataPart || null;\n\t\tthis.apiFieldsMap = concatOptions?.apiFieldsMap || null;\n\t\tthis.apiIconTag = concatOptions?.apiIconTag || null;\n\n\t\tthis.wrapperClasses = concatOptions?.wrapperClasses || null;\n\t\tthis.toggleTag = concatOptions?.toggleTag || null;\n\t\tthis.toggleClasses = concatOptions?.toggleClasses || null;\n\t\tthis.toggleSeparators = defaultToggleSeparators;\n\t\tthis.toggleCountText = concatOptions?.toggleCountText || null;\n\t\tthis.toggleCountTextMinItems = concatOptions?.toggleCountTextMinItems || 1;\n\t\tthis.toggleCountTextMode =\n\t\t\tconcatOptions?.toggleCountTextMode || 'countAfterLimit';\n\t\tthis.tagsItemTemplate = concatOptions?.tagsItemTemplate || null;\n\t\tthis.tagsItemClasses = concatOptions?.tagsItemClasses || null;\n\t\tthis.tagsInputId = concatOptions?.tagsInputId || null;\n\t\tthis.tagsInputClasses = concatOptions?.tagsInputClasses || null;\n\t\tthis.dropdownTag = concatOptions?.dropdownTag || null;\n\t\tthis.dropdownClasses = concatOptions?.dropdownClasses || null;\n\t\tthis.dropdownDirectionClasses =\n\t\t\tconcatOptions?.dropdownDirectionClasses || null;\n\t\tthis.dropdownSpace = concatOptions?.dropdownSpace || 10;\n\t\tthis.dropdownPlacement = concatOptions?.dropdownPlacement || null;\n\t\tthis.dropdownScope = concatOptions?.dropdownScope || 'parent';\n\t\tthis.searchTemplate = concatOptions?.searchTemplate || null;\n\t\tthis.searchWrapperTemplate = concatOptions?.searchWrapperTemplate || null;\n\t\tthis.searchWrapperClasses =\n\t\t\tconcatOptions?.searchWrapperClasses || 'bg-white p-2 sticky top-0';\n\t\tthis.searchId = concatOptions?.searchId || null;\n\t\tthis.searchLimit = concatOptions?.searchLimit || Infinity;\n\t\tthis.isSearchDirectMatch =\n\t\t\ttypeof concatOptions?.isSearchDirectMatch !== 'undefined'\n\t\t\t\t? concatOptions?.isSearchDirectMatch\n\t\t\t\t: true;\n\t\tthis.searchClasses =\n\t\t\tconcatOptions?.searchClasses ||\n\t\t\t'block w-[calc(100%-2rem)] text-sm border-gray-200 rounded-md focus:border-blue-500 focus:ring-blue-500 dark:bg-neutral-900 dark:border-neutral-700 dark:text-neutral-400 py-2 px-3 my-2 mx-4';\n\t\tthis.searchPlaceholder = concatOptions?.searchPlaceholder || 'Search...';\n\t\tthis.searchNoResultTemplate =\n\t\t\tconcatOptions?.searchNoResultTemplate || '';\n\t\tthis.searchNoResultText =\n\t\t\tconcatOptions?.searchNoResultText || 'No results found';\n\t\tthis.searchNoResultClasses =\n\t\t\tconcatOptions?.searchNoResultClasses ||\n\t\t\t'px-4 text-sm text-gray-800 dark:text-neutral-200';\n\t\tthis.optionTemplate = concatOptions?.optionTemplate || null;\n\t\tthis.optionTag = concatOptions?.optionTag || null;\n\t\tthis.optionClasses = concatOptions?.optionClasses || null;\n\t\tthis.extraMarkup = concatOptions?.extraMarkup || null;\n\t\tthis.descriptionClasses = concatOptions?.descriptionClasses || null;\n\t\tthis.iconClasses = concatOptions?.iconClasses || null;\n\t\tthis.isAddTagOnEnter = concatOptions?.isAddTagOnEnter ?? true;\n\n\t\tthis.animationInProcess = false;\n\t\tthis.selectOptions = [];\n\t\tthis.remoteOptions = [];\n\n\t\tthis.tagsInputHelper = null;\n\n\t\tthis.init();\n\t}\n\n\tpublic setValue(val: string | string[]) {\n\t\tthis.value = val;\n\n\t\tthis.clearSelections();\n\n\t\tif (Array.isArray(val)) {\n\t\t\tthis.toggleTextWrapper.innerHTML = this.value.length\n\t\t\t\t? this.stringFromValue()\n\t\t\t\t: this.placeholder;\n\t\t\tthis.unselectMultipleItems();\n\t\t\tthis.selectMultipleItems();\n\t\t} else {\n\t\t\tthis.setToggleTitle();\n\n\t\t\tif (this.toggle.querySelector('[data-icon]')) this.setToggleIcon();\n\t\t\tif (this.toggle.querySelector('[data-title]')) this.setToggleTitle();\n\n\t\t\tthis.selectSingleItem();\n\t\t}\n\t}\n\n\tprivate init() {\n\t\tthis.createCollection(window.$hsSelectCollection, this);\n\n\t\tthis.build();\n\t}\n\n\tprivate build() {\n\t\tthis.el.style.display = 'none';\n\n\t\tif (this.el.children) {\n\t\t\tArray.from(this.el.children)\n\t\t\t\t.filter((el: HTMLOptionElement) => el.value && el.value !== '')\n\t\t\t\t.forEach((el: HTMLOptionElement) => {\n\t\t\t\t\tconst data = el.getAttribute('data-hs-select-option');\n\n\t\t\t\t\tthis.selectOptions = [\n\t\t\t\t\t\t...this.selectOptions,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttitle: el.textContent,\n\t\t\t\t\t\t\tval: el.value,\n\t\t\t\t\t\t\tdisabled: el.disabled,\n\t\t\t\t\t\t\toptions: data !== 'undefined' ? JSON.parse(data) : null,\n\t\t\t\t\t\t},\n\t\t\t\t\t];\n\t\t\t\t});\n\t\t}\n\n\t\tif (this.isMultiple) {\n\t\t\tconst selectedOptions = Array.from(this.el.children).filter(\n\t\t\t\t(el: HTMLOptionElement) => el.selected,\n\t\t\t);\n\n\t\t\tif (selectedOptions) {\n\t\t\t\tconst values: string[] = [];\n\n\t\t\t\tselectedOptions.forEach((el: HTMLOptionElement) => {\n\t\t\t\t\tvalues.push(el.value);\n\t\t\t\t});\n\n\t\t\t\tthis.value = values;\n\t\t\t}\n\t\t}\n\n\t\tthis.buildWrapper();\n\t\tif (this.mode === 'tags') this.buildTags();\n\t\telse this.buildToggle();\n\t\tthis.buildDropdown();\n\t\tif (this.extraMarkup) this.buildExtraMarkup();\n\t}\n\n\tprivate buildWrapper() {\n\t\tthis.wrapper = document.createElement('div');\n\t\tthis.wrapper.classList.add('hs-select', 'relative');\n\n\t\tif (this.mode === 'tags') {\n\t\t\tthis.wrapper.addEventListener('click', (evt) => {\n\t\t\t\tif (\n\t\t\t\t\t!(evt.target as HTMLElement).closest('[data-hs-select-dropdown]') &&\n\t\t\t\t\t!(evt.target as HTMLElement).closest('[data-tag-value]')\n\t\t\t\t) {\n\t\t\t\t\tthis.tagsInput.focus();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (this.wrapperClasses)\n\t\t\tclassToClassList(this.wrapperClasses, this.wrapper);\n\n\t\tthis.el.before(this.wrapper);\n\n\t\tthis.wrapper.append(this.el);\n\t}\n\n\tprivate buildExtraMarkup() {\n\t\tconst appendMarkup = (markup: string): HTMLElement => {\n\t\t\tconst el = htmlToElement(markup);\n\n\t\t\tthis.wrapper.append(el);\n\n\t\t\treturn el;\n\t\t};\n\t\tconst clickHandle = (el: HTMLElement) => {\n\t\t\tif (!el.classList.contains('--prevent-click'))\n\t\t\t\tel.addEventListener('click', (evt: Event) => {\n\t\t\t\t\tevt.stopPropagation();\n\t\t\t\t\tthis.toggleFn();\n\t\t\t\t});\n\t\t};\n\n\t\tif (Array.isArray(this.extraMarkup)) {\n\t\t\tthis.extraMarkup.forEach((el) => {\n\t\t\t\tconst newEl = appendMarkup(el);\n\n\t\t\t\tclickHandle(newEl);\n\t\t\t});\n\t\t} else {\n\t\t\tconst newEl = appendMarkup(this.extraMarkup as string);\n\n\t\t\tclickHandle(newEl);\n\t\t}\n\t}\n\n\tprivate buildToggle() {\n\t\tlet icon, title;\n\t\tthis.toggleTextWrapper = document.createElement('span');\n\t\tthis.toggleTextWrapper.classList.add('truncate');\n\t\tthis.toggle = htmlToElement(this.toggleTag || '
');\n\t\ticon = this.toggle.querySelector('[data-icon]');\n\t\ttitle = this.toggle.querySelector('[data-title]');\n\n\t\tif (!this.isMultiple && icon) this.setToggleIcon();\n\t\tif (!this.isMultiple && title) this.setToggleTitle();\n\t\tif (this.isMultiple) {\n\t\t\tthis.toggleTextWrapper.innerHTML = this.value.length\n\t\t\t\t? this.stringFromValue()\n\t\t\t\t: this.placeholder;\n\t\t} else {\n\t\t\tthis.toggleTextWrapper.innerHTML =\n\t\t\t\tthis.getItemByValue(this.value as string)?.title || this.placeholder;\n\t\t}\n\t\tif (!title) this.toggle.append(this.toggleTextWrapper);\n\t\tif (this.toggleClasses) classToClassList(this.toggleClasses, this.toggle);\n\t\tif (this.isDisabled) this.toggle.classList.add('disabled');\n\t\tif (this.wrapper) this.wrapper.append(this.toggle);\n\n\t\tif (this.toggle?.ariaExpanded) {\n\t\t\tif (this.isOpened) this.toggle.ariaExpanded = 'true';\n\t\t\telse this.toggle.ariaExpanded = 'false';\n\t\t}\n\n\t\tthis.toggle.addEventListener('click', () => {\n\t\t\tif (this.isDisabled) return false;\n\n\t\t\tthis.toggleFn();\n\t\t});\n\t}\n\n\tprivate setToggleIcon() {\n\t\tconst item = this.getItemByValue(this.value as string) as ISingleOption &\n\t\t\tIApiFieldMap;\n\t\tconst icon = this.toggle.querySelector('[data-icon]');\n\t\ticon.innerHTML = '';\n\n\t\tif (icon) {\n\t\t\tconst img = htmlToElement(\n\t\t\t\tthis.apiUrl && this.apiIconTag\n\t\t\t\t\t? this.apiIconTag || ''\n\t\t\t\t\t: item?.options?.icon || '',\n\t\t\t) as HTMLImageElement;\n\t\t\tif (this.value && this.apiUrl && this.apiIconTag && item[this.apiFieldsMap.icon])\n\t\t\t\timg.src = (item[this.apiFieldsMap.icon] as string) || '';\n\n\t\t\ticon.append(img);\n\n\t\t\tif (!img || !img?.src) icon.classList.add('hidden');\n\t\t\telse icon.classList.remove('hidden');\n\t\t}\n\t}\n\n\tprivate setToggleTitle() {\n\t\tconst title = this.toggle.querySelector('[data-title]');\n\t\ttitle.classList.add('truncate');\n\t\ttitle.innerHTML = '';\n\n\t\tif (title) {\n\t\t\tconst titleText =\n\t\t\t\tthis.getItemByValue(this.value as string)?.title || this.placeholder;\n\t\t\ttitle.innerHTML = titleText;\n\n\t\t\tthis.toggle.append(title);\n\t\t}\n\t}\n\n\tprivate buildTags() {\n\t\tif (this.isDisabled) this.wrapper.classList.add('disabled');\n\t\tthis.buildTagsInput();\n\t\tthis.setTagsItems();\n\t}\n\n\tprivate reassignTagsInputPlaceholder(placeholder: string) {\n\t\t(this.tagsInput as HTMLInputElement).placeholder = placeholder;\n\t\tthis.tagsInputHelper.innerHTML = placeholder;\n\t\tthis.calculateInputWidth();\n\t}\n\n\tprivate buildTagsItem(val: string) {\n\t\tconst item = this.getItemByValue(val) as ISingleOption & IApiFieldMap;\n\n\t\tlet template, title, remove, icon: null | HTMLElement;\n\n\t\tconst newItem = document.createElement('div');\n\t\tnewItem.setAttribute('data-tag-value', val);\n\t\tif (this.tagsItemClasses) classToClassList(this.tagsItemClasses, newItem);\n\n\t\tif (this.tagsItemTemplate) {\n\t\t\ttemplate = htmlToElement(this.tagsItemTemplate);\n\n\t\t\tnewItem.append(template);\n\t\t}\n\n\t\t// Icon\n\t\tif (item?.options?.icon || this.apiIconTag) {\n\t\t\tconst img = htmlToElement(\n\t\t\t\tthis.apiUrl && this.apiIconTag\n\t\t\t\t\t? this.apiIconTag\n\t\t\t\t\t: item?.options?.icon,\n\t\t\t) as HTMLImageElement;\n\n\t\t\tif (this.apiUrl && this.apiIconTag && item[this.apiFieldsMap.icon])\n\t\t\t\timg.src = (item[this.apiFieldsMap.icon] as string) || '';\n\n\t\t\ticon = template\n\t\t\t\t? template.querySelector('[data-icon]')\n\t\t\t\t: document.createElement('span');\n\n\t\t\ticon.append(img);\n\n\t\t\tif (!template) newItem.append(icon);\n\t\t}\n\n\t\tif (\n\t\t\ttemplate &&\n\t\t\ttemplate.querySelector('[data-icon]') &&\n\t\t\t!item?.options?.icon &&\n\t\t\t!this.apiUrl &&\n\t\t\t!this.apiIconTag &&\n\t\t\t!item[this.apiFieldsMap?.icon]\n\t\t) {\n\t\t\ttemplate.querySelector('[data-icon]').classList.add('hidden');\n\t\t}\n\n\t\t// Title\n\t\ttitle = template\n\t\t\t? template.querySelector('[data-title]')\n\t\t\t: document.createElement('span');\n\t\ttitle.textContent = item.title || '';\n\n\t\tif (!template) newItem.append(title);\n\n\t\t// Remove\n\t\tif (template) {\n\t\t\tremove = template.querySelector('[data-remove]');\n\t\t} else {\n\t\t\tremove = document.createElement('span');\n\t\t\tremove.textContent = 'X';\n\n\t\t\tnewItem.append(remove);\n\t\t}\n\n\t\tremove.addEventListener('click', () => {\n\t\t\tthis.value = (this.value as string[]).filter((el) => el !== val);\n\t\t\tthis.selectedItems = this.selectedItems.filter((el) => el !== val);\n\n\t\t\tif (!this.value.length)\n\t\t\t\tthis.reassignTagsInputPlaceholder(this.placeholder);\n\n\t\t\tthis.unselectMultipleItems();\n\t\t\tthis.selectMultipleItems();\n\n\t\t\tnewItem.remove();\n\t\t\tthis.fireEvent('change', this.value);\n\t\t\tdispatch('change.hs.select', this.el, this.value);\n\t\t});\n\n\t\tthis.wrapper.append(newItem);\n\t}\n\n\tprivate getItemByValue(val: string) {\n\t\tconst value = this.apiUrl\n\t\t\t? (this.remoteOptions as (ISingleOption & IApiFieldMap)[]).find(\n\t\t\t\t\t(el) => el[this.apiFieldsMap.title] === val,\n\t\t\t\t)\n\t\t\t: this.selectOptions.find((el: ISingleOption) => el.val === val);\n\n\t\treturn value;\n\t}\n\n\tprivate setTagsItems() {\n\t\tif (this.value) {\n\t\t\t(this.value as string[]).forEach((val) => {\n\t\t\t\tif (!this.selectedItems.includes(val)) this.buildTagsItem(val);\n\n\t\t\t\tthis.selectedItems = !this.selectedItems.includes(val)\n\t\t\t\t\t? [...this.selectedItems, val]\n\t\t\t\t\t: this.selectedItems;\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate buildTagsInput() {\n\t\tthis.tagsInput = document.createElement('input');\n\n\t\tif (this.tagsInputId) this.tagsInput.id = this.tagsInputId;\n\t\tif (this.tagsInputClasses)\n\t\t\tclassToClassList(this.tagsInputClasses, this.tagsInput);\n\n\t\tthis.tagsInput.addEventListener('focus', () => {\n\t\t\tif (!this.isOpened) this.open();\n\t\t});\n\t\tthis.tagsInput.addEventListener('input', () => this.calculateInputWidth());\n\t\tthis.tagsInput.addEventListener(\n\t\t\t'input',\n\t\t\tdebounce((evt: InputEvent) =>\n\t\t\t\tthis.searchOptions((evt.target as HTMLInputElement).value),\n\t\t\t),\n\t\t);\n\t\tthis.tagsInput.addEventListener('keydown', (evt) => {\n\t\t\tif (evt.key === 'Enter' && this.isAddTagOnEnter) {\n\t\t\t\tconst val = (evt.target as HTMLInputElement).value;\n\n\t\t\t\tif (this.selectOptions.find((el: ISingleOption) => el.val === val))\n\t\t\t\t\treturn false;\n\n\t\t\t\tthis.addSelectOption(val, val);\n\t\t\t\tthis.buildOption(val, val);\n\t\t\t\t(\n\t\t\t\t\tthis.dropdown.querySelector(`[data-value=\"${val}\"]`) as HTMLElement\n\t\t\t\t).click();\n\n\t\t\t\tthis.resetTagsInputField();\n\t\t\t\t// this.close();\n\t\t\t}\n\t\t});\n\n\t\tthis.wrapper.append(this.tagsInput);\n\n\t\tsetTimeout(() => {\n\t\t\tthis.adjustInputWidth();\n\t\t\tthis.reassignTagsInputPlaceholder(\n\t\t\t\tthis.value.length ? '' : this.placeholder,\n\t\t\t);\n\t\t});\n\t}\n\n\tprivate buildDropdown() {\n\t\tthis.dropdown = htmlToElement(this.dropdownTag || '
');\n\t\tthis.dropdown.setAttribute('data-hs-select-dropdown', '');\n\n\t\tif (this.dropdownScope === 'parent')\n\t\t\tthis.dropdown.classList.add('absolute', 'top-full');\n\t\tthis.dropdown.role = 'listbox';\n\t\tthis.dropdown.tabIndex = -1;\n\t\tthis.dropdown.ariaOrientation = 'vertical';\n\n\t\tif (!this.isOpened) this.dropdown.classList.add('hidden');\n\n\t\tif (this.dropdownClasses)\n\t\t\tclassToClassList(this.dropdownClasses, this.dropdown);\n\t\tif (this.wrapper) this.wrapper.append(this.dropdown);\n\t\tif (this.dropdown && this.hasSearch) this.buildSearch();\n\t\tif (this.selectOptions)\n\t\t\tthis.selectOptions.forEach((props: ISingleOption, i) =>\n\t\t\t\tthis.buildOption(\n\t\t\t\t\tprops.title,\n\t\t\t\t\tprops.val,\n\t\t\t\t\tprops.disabled,\n\t\t\t\t\tprops.selected,\n\t\t\t\t\tprops.options,\n\t\t\t\t\t`${i}`,\n\t\t\t\t),\n\t\t\t);\n\n\t\tif (this.apiUrl) this.optionsFromRemoteData();\n\n\t\tif (this.dropdownScope === 'window') this.buildPopper();\n\t}\n\n\tprivate buildPopper() {\n\t\tif (typeof Popper !== 'undefined' && Popper.createPopper) {\n\t\t\tdocument.body.appendChild(this.dropdown);\n\n\t\t\tthis.popperInstance = Popper.createPopper(\n\t\t\t\tthis.mode === 'tags' ? this.wrapper : this.toggle,\n\t\t\t\tthis.dropdown,\n\t\t\t\t{\n\t\t\t\t\tplacement: POSITIONS[this.dropdownPlacement] || 'bottom',\n\t\t\t\t\tstrategy: 'fixed',\n\t\t\t\t\tmodifiers: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: 'offset',\n\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\toffset: [0, 5],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate updateDropdownWidth() {\n\t\tconst toggle = this.mode === 'tags' ? this.wrapper : this.toggle;\n\n\t\tthis.dropdown.style.width = `${toggle.clientWidth}px`;\n\t}\n\n\tprivate buildSearch() {\n\t\tlet input;\n\t\tthis.searchWrapper = htmlToElement(\n\t\t\tthis.searchWrapperTemplate || '
',\n\t\t);\n\t\tif (this.searchWrapperClasses)\n\t\t\tclassToClassList(this.searchWrapperClasses, this.searchWrapper);\n\t\tinput = this.searchWrapper.querySelector('[data-input]');\n\n\t\tconst search = htmlToElement(\n\t\t\tthis.searchTemplate || '',\n\t\t);\n\t\tthis.search = (\n\t\t\tsearch.tagName === 'INPUT' ? search : search.querySelector(':scope input')\n\t\t) as HTMLInputElement;\n\n\t\tthis.search.placeholder = this.searchPlaceholder;\n\t\tif (this.searchClasses) classToClassList(this.searchClasses, this.search);\n\t\tif (this.searchId) this.search.id = this.searchId;\n\n\t\tthis.search.addEventListener(\n\t\t\t'input',\n\t\t\tdebounce((evt: InputEvent) => {\n\t\t\t\tif (this.apiUrl)\n\t\t\t\t\tthis.remoteSearch((evt.target as HTMLInputElement).value);\n\t\t\t\telse this.searchOptions((evt.target as HTMLInputElement).value);\n\t\t\t}),\n\t\t);\n\n\t\tif (input) input.append(search);\n\t\telse this.searchWrapper.append(search);\n\n\t\tthis.dropdown.append(this.searchWrapper);\n\t}\n\n\tprivate buildOption(\n\t\ttitle: string,\n\t\tval: string,\n\t\tdisabled: boolean = false,\n\t\tselected: boolean = false,\n\t\toptions?: ISingleOptionOptions,\n\t\tindex: string = '1',\n\t\tid?: string,\n\t) {\n\t\tlet template: HTMLElement | null = null;\n\t\tlet titleWrapper: HTMLElement | null = null;\n\t\tlet iconWrapper: HTMLElement | null = null;\n\t\tlet descriptionWrapper: HTMLElement | null = null;\n\n\t\tconst option = htmlToElement(this.optionTag || '
');\n\t\toption.setAttribute('data-value', val);\n\t\toption.setAttribute('data-title-value', title);\n\t\toption.setAttribute('tabIndex', index);\n\t\toption.classList.add('cursor-pointer');\n\t\toption.setAttribute('data-id', id || `${this.optionId}`);\n\t\tif (!id) this.optionId++;\n\t\tif (disabled) option.classList.add('disabled');\n\t\tif (selected) {\n\t\t\tif (this.isMultiple) this.value = [...(this.value as []), val];\n\t\t\telse this.value = val;\n\t\t}\n\t\tif (this.optionTemplate) {\n\t\t\ttemplate = htmlToElement(this.optionTemplate);\n\n\t\t\toption.append(template);\n\t\t}\n\t\tif (template) {\n\t\t\ttitleWrapper = template.querySelector('[data-title]');\n\t\t\ttitleWrapper.textContent = title || '';\n\t\t} else {\n\t\t\toption.textContent = title || '';\n\t\t}\n\t\tif (options) {\n\t\t\tif (options.icon) {\n\t\t\t\tconst img = htmlToElement(this.apiIconTag ?? options.icon);\n\t\t\t\timg.classList.add('max-w-full');\n\n\t\t\t\tif (this.apiUrl) {\n\t\t\t\t\timg.setAttribute('alt', title);\n\t\t\t\t\timg.setAttribute('src', options.icon);\n\t\t\t\t}\n\n\t\t\t\tif (template) {\n\t\t\t\t\ticonWrapper = template.querySelector('[data-icon]');\n\t\t\t\t\ticonWrapper.append(img);\n\t\t\t\t} else {\n\t\t\t\t\tconst icon = htmlToElement('
');\n\t\t\t\t\tif (this.iconClasses) classToClassList(this.iconClasses, icon);\n\n\t\t\t\t\ticon.append(img);\n\t\t\t\t\toption.append(icon);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (options.description) {\n\t\t\t\tif (template) {\n\t\t\t\t\tdescriptionWrapper = template.querySelector('[data-description]');\n\t\t\t\t\tif (descriptionWrapper)\n\t\t\t\t\t\tdescriptionWrapper.append(options.description);\n\t\t\t\t} else {\n\t\t\t\t\tconst description = htmlToElement('
');\n\t\t\t\t\tdescription.textContent = options.description;\n\t\t\t\t\tif (this.descriptionClasses)\n\t\t\t\t\t\tclassToClassList(this.descriptionClasses, description);\n\n\t\t\t\t\toption.append(description);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (\n\t\t\ttemplate &&\n\t\t\ttemplate.querySelector('[data-icon]') &&\n\t\t\t!options &&\n\t\t\t!options?.icon\n\t\t) {\n\t\t\ttemplate.querySelector('[data-icon]').classList.add('hidden');\n\t\t}\n\n\t\tif (\n\t\t\tthis.value &&\n\t\t\t(this.isMultiple ? this.value.includes(val) : this.value === val)\n\t\t)\n\t\t\toption.classList.add('selected');\n\n\t\tif (!disabled)\n\t\t\toption.addEventListener('click', () => this.onSelectOption(val));\n\n\t\tif (this.optionClasses) classToClassList(this.optionClasses, option);\n\t\tif (this.dropdown) this.dropdown.append(option);\n\t\tif (selected) this.setNewValue();\n\t}\n\n\tprivate buildOptionFromRemoteData(\n\t\ttitle: string,\n\t\tval: string,\n\t\tdisabled: boolean = false,\n\t\tselected: boolean = false,\n\t\tindex: string = '1',\n\t\tid: string | null,\n\t\toptions?: ISingleOptionOptions,\n\t) {\n\t\tif (index) {\n\t\t\tthis.buildOption(title, val, disabled, selected, options, index, id);\n\t\t} else {\n\t\t\talert(\n\t\t\t\t'ID parameter is required for generating remote options! Please check your API endpoint have it.',\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate buildOptionsFromRemoteData(data: []) {\n\t\tdata.forEach((el: IApiFieldMap, i) => {\n\t\t\tlet id = null;\n\t\t\tlet title = '';\n\t\t\tconst options: IApiFieldMap & { rest: { [key: string]: unknown } } = {\n\t\t\t\tid: '',\n\t\t\t\ttitle: '',\n\t\t\t\ticon: null,\n\t\t\t\tdescription: null,\n\t\t\t\trest: {},\n\t\t\t};\n\n\t\t\tObject.keys(el).forEach((key: string) => {\n\t\t\t\tif (el[this.apiFieldsMap.id]) id = el[this.apiFieldsMap.id];\n\t\t\t\tif (el[this.apiFieldsMap.title])\n\t\t\t\t\ttitle = el[this.apiFieldsMap.title] as string;\n\t\t\t\tif (el[this.apiFieldsMap.icon])\n\t\t\t\t\toptions.icon = el[this.apiFieldsMap.icon] as string;\n\t\t\t\tif (el[this.apiFieldsMap?.description])\n\t\t\t\t\toptions.description = el[this.apiFieldsMap.description] as string;\n\t\t\t\toptions.rest[key] = el[key];\n\t\t\t});\n\n\t\t\tthis.buildOriginalOption(\n\t\t\t\ttitle,\n\t\t\t\ttitle,\n\t\t\t\tid,\n\t\t\t\tfalse,\n\t\t\t\tfalse,\n\t\t\t\toptions as ISingleOptionOptions & IApiFieldMap,\n\t\t\t);\n\n\t\t\tthis.buildOptionFromRemoteData(\n\t\t\t\ttitle,\n\t\t\t\ttitle,\n\t\t\t\tfalse,\n\t\t\t\tfalse,\n\t\t\t\t`${i}`,\n\t\t\t\tid,\n\t\t\t\toptions as ISingleOptionOptions & IApiFieldMap,\n\t\t\t);\n\t\t});\n\n\t\tthis.sortElements(this.el, 'option');\n\t\tthis.sortElements(this.dropdown, '[data-value]');\n\t}\n\n\tprivate async optionsFromRemoteData(val = '') {\n\t\tconst res = await this.apiRequest(val);\n\t\tthis.remoteOptions = res;\n\n\t\tif (res.length) this.buildOptionsFromRemoteData(this.remoteOptions as []);\n\t\telse console.log('There is no data were responded!');\n\t}\n\n\tprivate async apiRequest(val = '') {\n\t\ttry {\n\t\t\tlet url = this.apiUrl;\n\t\t\tconst search = this.apiSearchQueryKey\n\t\t\t\t? `${this.apiSearchQueryKey}=${val.toLowerCase()}`\n\t\t\t\t: null;\n\t\t\tconst query = `${this.apiQuery}`;\n\t\t\tconst options = this.apiOptions || {};\n\n\t\t\tif (search) url += `?${search}`;\n\t\t\tif (this.apiQuery) url += `${search ? '&' : '?'}${query}`;\n\n\t\t\tconst req = await fetch(url, options);\n\t\t\tconst res = await req.json();\n\n\t\t\treturn this.apiDataPart ? res[this.apiDataPart] : res;\n\t\t} catch (err) {\n\t\t\tconsole.error(err);\n\t\t}\n\t}\n\n\tprivate sortElements(container: HTMLElement, selector: string): void {\n\t\tconst items = Array.from(container.querySelectorAll(selector));\n\n\t\titems.sort((a, b) => {\n\t\t\tconst isASelected =\n\t\t\t\ta.classList.contains('selected') || a.hasAttribute('selected');\n\t\t\tconst isBSelected =\n\t\t\t\tb.classList.contains('selected') || b.hasAttribute('selected');\n\n\t\t\tif (isASelected && !isBSelected) return -1;\n\t\t\tif (!isASelected && isBSelected) return 1;\n\n\t\t\treturn 0;\n\t\t});\n\n\t\titems.forEach((item) => container.appendChild(item));\n\t}\n\n\tprivate async remoteSearch(val: string) {\n\t\tconst res = await this.apiRequest(val);\n\t\tthis.remoteOptions = res;\n\t\tlet newIds = res.map((item: { id: string }) => `${item.id}`);\n\t\tlet restOptions = null;\n\t\tconst pseudoOptions = this.dropdown.querySelectorAll('[data-value]');\n\t\tconst options = this.el.querySelectorAll('[data-hs-select-option]');\n\n\t\toptions.forEach((el: HTMLOptionElement) => {\n\t\t\tconst dataId = el.getAttribute('data-id');\n\n\t\t\tif (!newIds.includes(dataId) && !this.value?.includes(el.value))\n\t\t\t\tthis.destroyOriginalOption(el.value);\n\t\t});\n\n\t\tpseudoOptions.forEach((el: HTMLElement) => {\n\t\t\tconst dataId = el.getAttribute('data-id');\n\n\t\t\tif (\n\t\t\t\t!newIds.includes(dataId) &&\n\t\t\t\t!this.value?.includes(el.getAttribute('data-value'))\n\t\t\t)\n\t\t\t\tthis.destroyOption(el.getAttribute('data-value'));\n\t\t\telse newIds = newIds.filter((item: string) => item !== dataId);\n\t\t});\n\n\t\trestOptions = res.filter((item: { id: string }) =>\n\t\t\tnewIds.includes(`${item.id}`),\n\t\t);\n\n\t\tif (restOptions.length) this.buildOptionsFromRemoteData(restOptions as []);\n\t\telse console.log('There is no data were responded!');\n\t}\n\n\tprivate destroyOption(val: string) {\n\t\tconst option = this.dropdown.querySelector(`[data-value=\"${val}\"]`);\n\n\t\tif (!option) return false;\n\n\t\toption.remove();\n\t}\n\n\tprivate buildOriginalOption(\n\t\ttitle: string,\n\t\tval: string,\n\t\tid?: string | null,\n\t\tdisabled?: boolean,\n\t\tselected?: boolean,\n\t\toptions?: ISingleOptionOptions,\n\t) {\n\t\tconst option = htmlToElement('');\n\t\toption.setAttribute('value', val);\n\t\tif (disabled) option.setAttribute('disabled', 'disabled');\n\t\tif (selected) option.setAttribute('selected', 'selected');\n\t\tif (id) option.setAttribute('data-id', id);\n\t\toption.setAttribute('data-hs-select-option', JSON.stringify(options));\n\t\toption.innerText = title;\n\n\t\tthis.el.append(option);\n\t}\n\n\tprivate destroyOriginalOption(val: string) {\n\t\tconst option = this.el.querySelector(`[value=\"${val}\"]`);\n\n\t\tif (!option) return false;\n\n\t\toption.remove();\n\t}\n\n\tprivate buildTagsInputHelper() {\n\t\tthis.tagsInputHelper = document.createElement('span');\n\t\tthis.tagsInputHelper.style.fontSize = window.getComputedStyle(\n\t\t\tthis.tagsInput,\n\t\t).fontSize;\n\t\tthis.tagsInputHelper.style.fontFamily = window.getComputedStyle(\n\t\t\tthis.tagsInput,\n\t\t).fontFamily;\n\t\tthis.tagsInputHelper.style.fontWeight = window.getComputedStyle(\n\t\t\tthis.tagsInput,\n\t\t).fontWeight;\n\t\tthis.tagsInputHelper.style.letterSpacing = window.getComputedStyle(\n\t\t\tthis.tagsInput,\n\t\t).letterSpacing;\n\t\tthis.tagsInputHelper.style.visibility = 'hidden';\n\t\tthis.tagsInputHelper.style.whiteSpace = 'pre';\n\t\tthis.tagsInputHelper.style.position = 'absolute';\n\n\t\tthis.wrapper.appendChild(this.tagsInputHelper);\n\t}\n\n\tprivate calculateInputWidth() {\n\t\tthis.tagsInputHelper.textContent =\n\t\t\t(this.tagsInput as HTMLInputElement).value ||\n\t\t\t(this.tagsInput as HTMLInputElement).placeholder;\n\n\t\tconst inputPadding =\n\t\t\tparseInt(window.getComputedStyle(this.tagsInput).paddingLeft) +\n\t\t\tparseInt(window.getComputedStyle(this.tagsInput).paddingRight);\n\t\tconst inputBorder =\n\t\t\tparseInt(window.getComputedStyle(this.tagsInput).borderLeftWidth) +\n\t\t\tparseInt(window.getComputedStyle(this.tagsInput).borderRightWidth);\n\t\tconst newWidth =\n\t\t\tthis.tagsInputHelper.offsetWidth + inputPadding + inputBorder;\n\t\tconst maxWidth =\n\t\t\tthis.wrapper.offsetWidth -\n\t\t\t(parseInt(window.getComputedStyle(this.wrapper).paddingLeft) +\n\t\t\t\tparseInt(window.getComputedStyle(this.wrapper).paddingRight));\n\n\t\t(this.tagsInput as HTMLInputElement).style.width = `${\n\t\t\tMath.min(newWidth, maxWidth) + 2\n\t\t}px`;\n\t}\n\n\tprivate adjustInputWidth() {\n\t\tthis.buildTagsInputHelper();\n\t\tthis.calculateInputWidth();\n\t}\n\n\tprivate onSelectOption(val: string) {\n\t\tthis.clearSelections();\n\n\t\tif (this.isMultiple) {\n\t\t\tthis.value = this.value.includes(val)\n\t\t\t\t? Array.from(this.value).filter((el) => el !== val)\n\t\t\t\t: [...Array.from(this.value), val];\n\n\t\t\tthis.selectMultipleItems();\n\t\t\tthis.setNewValue();\n\t\t} else {\n\t\t\tthis.value = val;\n\n\t\t\tthis.selectSingleItem();\n\t\t\tthis.setNewValue();\n\t\t}\n\n\t\tthis.fireEvent('change', this.value);\n\t\tdispatch('change.hs.select', this.el, this.value);\n\n\t\tif (this.mode === 'tags') {\n\t\t\tconst intersection = this.selectedItems.filter(\n\t\t\t\t(x) => !(this.value as string[]).includes(x),\n\t\t\t);\n\t\t\tif (intersection.length) {\n\t\t\t\tintersection.forEach((el) => {\n\t\t\t\t\tthis.selectedItems = this.selectedItems.filter((elI) => elI !== el);\n\t\t\t\t\tthis.wrapper.querySelector(`[data-tag-value=\"${el}\"]`).remove();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.resetTagsInputField();\n\t\t}\n\n\t\tif (!this.isMultiple) {\n\t\t\tif (this.toggle.querySelector('[data-icon]')) this.setToggleIcon();\n\t\t\tif (this.toggle.querySelector('[data-title]')) this.setToggleTitle();\n\t\t\tthis.close();\n\t\t}\n\n\t\tif (!this.value.length && this.mode === 'tags')\n\t\t\tthis.reassignTagsInputPlaceholder(this.placeholder);\n\n\t\tif (this.isOpened && this.mode === 'tags' && this.tagsInput)\n\t\t\tthis.tagsInput.focus();\n\n\t\tthis.triggerChangeEventForNativeSelect();\n\t}\n\n\tprivate triggerChangeEventForNativeSelect() {\n\t\t// TODO:: test for bugs after comment the line below\n\t\t// (this.el as HTMLSelectElement).value = `${this.value}`;\n\t\tconst selectChangeEvent = new Event('change', { bubbles: true });\n\t\t(this.el as HTMLSelectElement).dispatchEvent(selectChangeEvent);\n\t}\n\n\tprivate addSelectOption(\n\t\ttitle: string,\n\t\tval: string,\n\t\tdisabled?: boolean,\n\t\tselected?: boolean,\n\t\toptions?: ISingleOptionOptions,\n\t) {\n\t\tthis.selectOptions = [\n\t\t\t...this.selectOptions,\n\t\t\t{\n\t\t\t\ttitle,\n\t\t\t\tval,\n\t\t\t\tdisabled,\n\t\t\t\tselected,\n\t\t\t\toptions,\n\t\t\t},\n\t\t];\n\t}\n\n\tprivate removeSelectOption(val: string, isArray = false) {\n\t\tconst hasOption = !!this.selectOptions.some(\n\t\t\t(el: ISingleOption) => el.val === val,\n\t\t);\n\n\t\tif (!hasOption) return false;\n\n\t\tthis.selectOptions = this.selectOptions.filter(\n\t\t\t(el: ISingleOption) => el.val !== val,\n\t\t);\n\n\t\tthis.value = isArray\n\t\t\t? (this.value as string[]).filter((item: string) => item !== val)\n\t\t\t: val;\n\t}\n\n\tprivate resetTagsInputField() {\n\t\t(this.tagsInput as HTMLInputElement).value = '';\n\n\t\tthis.reassignTagsInputPlaceholder('');\n\t\tthis.searchOptions('');\n\t}\n\n\tprivate clearSelections() {\n\t\tArray.from(this.dropdown.children).forEach((el) => {\n\t\t\tif (el.classList.contains('selected')) el.classList.remove('selected');\n\t\t});\n\t\tArray.from(this.el.children).forEach((el) => {\n\t\t\tif ((el as HTMLOptionElement).selected)\n\t\t\t\t(el as HTMLOptionElement).selected = false;\n\t\t});\n\t}\n\n\tprivate setNewValue() {\n\t\tif (this.mode === 'tags') {\n\t\t\tthis.setTagsItems();\n\t\t} else {\n\t\t\tif (this.value?.length) {\n\t\t\t\tthis.toggleTextWrapper.innerHTML = this.stringFromValue();\n\t\t\t} else this.toggleTextWrapper.innerHTML = this.placeholder;\n\t\t}\n\t}\n\n\tprivate stringFromValueBasic(options: ISingleOption[]) {\n\t\tconst value: string[] = [];\n\t\tlet title = '';\n\n\t\toptions.forEach((el: ISingleOption) => {\n\t\t\tif (this.isMultiple) {\n\t\t\t\tif (this.value.includes(el.val)) value.push(el.title);\n\t\t\t} else {\n\t\t\t\tif (this.value === el.val) value.push(el.title);\n\t\t\t}\n\t\t});\n\n\t\tif (\n\t\t\tthis.toggleCountText &&\n\t\t\tthis.toggleCountText !== '' &&\n\t\t\tvalue.length >= this.toggleCountTextMinItems\n\t\t) {\n\t\t\tif (this.toggleCountTextMode === 'nItemsAndCount') {\n\t\t\t\tconst nItems = value.slice(0, this.toggleCountTextMinItems - 1);\n\n\t\t\t\ttitle = `${nItems.join(this.toggleSeparators.items)} ${this.toggleSeparators.betweenItemsAndCounter} ${value.length - nItems.length} ${this.toggleCountText}`;\n\t\t\t} else {\n\t\t\t\ttitle = `${value.length} ${this.toggleCountText}`;\n\t\t\t}\n\t\t} else {\n\t\t\ttitle = value.join(this.toggleSeparators.items);\n\t\t}\n\n\t\treturn title;\n\t}\n\n\tprivate stringFromValueRemoteData() {\n\t\tconst options = this.dropdown.querySelectorAll('[data-title-value]');\n\t\tconst value: string[] = [];\n\t\tlet title = '';\n\n\t\toptions.forEach((el: HTMLElement) => {\n\t\t\tconst dataValue = el.getAttribute('data-value');\n\n\t\t\tif (this.isMultiple) {\n\t\t\t\tif (this.value.includes(dataValue)) value.push(dataValue);\n\t\t\t} else {\n\t\t\t\tif (this.value === dataValue) value.push(dataValue);\n\t\t\t}\n\t\t});\n\n\t\tif (\n\t\t\tthis.toggleCountText &&\n\t\t\tthis.toggleCountText !== '' &&\n\t\t\tvalue.length >= this.toggleCountTextMinItems\n\t\t) {\n\t\t\tif (this.toggleCountTextMode === 'nItemsAndCount') {\n\t\t\t\tconst nItems = value.slice(0, this.toggleCountTextMinItems - 1);\n\n\t\t\t\ttitle = `${nItems.join(this.toggleSeparators.items)} ${this.toggleSeparators.betweenItemsAndCounter} ${value.length - nItems.length} ${this.toggleCountText}`;\n\t\t\t} else {\n\t\t\t\ttitle = `${value.length} ${this.toggleCountText}`;\n\t\t\t}\n\t\t} else {\n\t\t\ttitle = value.join(this.toggleSeparators.items);\n\t\t}\n\n\t\treturn title;\n\t}\n\n\tprivate stringFromValue() {\n\t\tconst result = this.apiUrl\n\t\t\t? this.stringFromValueRemoteData()\n\t\t\t: this.stringFromValueBasic(this.selectOptions);\n\n\t\treturn result;\n\t}\n\n\tprivate selectSingleItem() {\n\t\tconst selectedOption = Array.from(this.el.children).find(\n\t\t\t(el) => this.value === (el as HTMLOptionElement).value,\n\t\t);\n\t\t(selectedOption as HTMLOptionElement).selected = true;\n\n\t\tconst selectedItem = Array.from(this.dropdown.children).find(\n\t\t\t(el) =>\n\t\t\t\tthis.value === (el as HTMLOptionElement).getAttribute('data-value'),\n\t\t);\n\n\t\tif (selectedItem) selectedItem.classList.add('selected');\n\t}\n\n\tprivate selectMultipleItems() {\n\t\tArray.from(this.dropdown.children)\n\t\t\t.filter((el) => this.value.includes(el.getAttribute('data-value')))\n\t\t\t.forEach((el) => el.classList.add('selected'));\n\n\t\tArray.from(this.el.children)\n\t\t\t.filter((el) => this.value.includes((el as HTMLOptionElement).value))\n\t\t\t.forEach((el) => ((el as HTMLOptionElement).selected = true));\n\t}\n\n\tprivate unselectMultipleItems() {\n\t\tArray.from(this.dropdown.children).forEach((el) =>\n\t\t\tel.classList.remove('selected'),\n\t\t);\n\t\tArray.from(this.el.children).forEach(\n\t\t\t(el) => ((el as HTMLOptionElement).selected = false),\n\t\t);\n\t}\n\n\tprivate searchOptions(val: string) {\n\t\tif (this.searchNoResult) {\n\t\t\tthis.searchNoResult.remove();\n\t\t\tthis.searchNoResult = null;\n\t\t}\n\t\tthis.searchNoResult = htmlToElement(this.searchNoResultTemplate);\n\t\tthis.searchNoResult.innerText = this.searchNoResultText;\n\t\tclassToClassList(this.searchNoResultClasses, this.searchNoResult);\n\n\t\tconst options = this.dropdown.querySelectorAll('[data-value]');\n\t\tlet hasItems = false;\n\t\tlet countLimit: number;\n\t\tif (this.searchLimit) countLimit = 0;\n\n\t\toptions.forEach((el) => {\n\t\t\tconst optionVal = el.getAttribute('data-title-value').toLocaleLowerCase();\n\t\t\tconst regexSafeVal = val\n\t\t\t\t? val\n\t\t\t\t\t\t.split('')\n\t\t\t\t\t\t.map((char) => {\n\t\t\t\t\t\t\treturn char.match(/\\w/) ? `${char}[\\\\W_]*` : '\\\\W*';\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.join('')\n\t\t\t\t: '';\n\t\t\tconst regex = new RegExp(regexSafeVal, 'i');\n\t\t\tconst directMatch = this.isSearchDirectMatch;\n\t\t\tconst cleanedOptionVal = optionVal.trim();\n\t\t\tconst condition = val\n\t\t\t\t? directMatch\n\t\t\t\t\t? !cleanedOptionVal.toLowerCase().includes(val.toLowerCase()) ||\n\t\t\t\t\t\tcountLimit >= this.searchLimit\n\t\t\t\t\t: !regex.test(cleanedOptionVal) || countLimit >= this.searchLimit\n\t\t\t\t: !regex.test(cleanedOptionVal);\n\n\t\t\tif (condition) {\n\t\t\t\tel.classList.add('hidden');\n\t\t\t} else {\n\t\t\t\tel.classList.remove('hidden');\n\t\t\t\thasItems = true;\n\n\t\t\t\tif (this.searchLimit) countLimit++;\n\t\t\t}\n\t\t});\n\n\t\tif (!hasItems) this.dropdown.append(this.searchNoResult);\n\t}\n\n\tprivate eraseToggleIcon() {\n\t\tconst icon = this.toggle.querySelector('[data-icon]');\n\n\t\tif (icon) {\n\t\t\ticon.innerHTML = null;\n\t\t\ticon.classList.add('hidden');\n\t\t}\n\t}\n\n\tprivate eraseToggleTitle() {\n\t\tconst title = this.toggle.querySelector('[data-title]');\n\n\t\tif (title) {\n\t\t\ttitle.innerHTML = this.placeholder;\n\t\t} else {\n\t\t\tthis.toggleTextWrapper.innerHTML = this.placeholder;\n\t\t}\n\t}\n\n\tprivate toggleFn() {\n\t\tif (this.isOpened) this.close();\n\t\telse this.open();\n\t}\n\n\t// Public methods\n\tpublic destroy() {\n\t\tconst parent = this.el.parentElement.parentElement;\n\n\t\tthis.el.classList.remove('hidden');\n\t\tthis.el.style.display = '';\n\t\tparent.prepend(this.el);\n\t\tparent.querySelector('.hs-select').remove();\n\t\tthis.wrapper = null;\n\t}\n\n\tpublic open() {\n\t\tconst currentlyOpened =\n\t\t\twindow?.$hsSelectCollection?.find((el) => el.element.isOpened) || null;\n\n\t\tif (currentlyOpened) currentlyOpened.element.close();\n\t\tif (this.animationInProcess) return false;\n\n\t\tthis.animationInProcess = true;\n\n\t\tif (this.dropdownScope === 'window')\n\t\t\tthis.dropdown.classList.add('invisible');\n\t\tthis.dropdown.classList.remove('hidden');\n\n\t\tthis.recalculateDirection();\n\n\t\tsetTimeout(() => {\n\t\t\tif (this?.toggle?.ariaExpanded) this.toggle.ariaExpanded = 'true';\n\t\t\tthis.wrapper.classList.add('active');\n\t\t\tthis.dropdown.classList.add('opened');\n\t\t\tif (\n\t\t\t\tthis.dropdown.classList.contains('w-full') &&\n\t\t\t\tthis.dropdownScope === 'window'\n\t\t\t)\n\t\t\t\tthis.updateDropdownWidth();\n\t\t\tif (this.popperInstance && this.dropdownScope === 'window') {\n\t\t\t\tthis.popperInstance.update();\n\t\t\t\tthis.dropdown.classList.remove('invisible');\n\t\t\t}\n\t\t\tif (this.hasSearch && !this.preventSearchFocus) this.search.focus();\n\n\t\t\tthis.animationInProcess = false;\n\t\t});\n\n\t\tthis.isOpened = true;\n\t}\n\n\tpublic close() {\n\t\tif (this.animationInProcess) return false;\n\n\t\tthis.animationInProcess = true;\n\n\t\tif (this?.toggle?.ariaExpanded) this.toggle.ariaExpanded = 'false';\n\t\tthis.wrapper.classList.remove('active');\n\t\tthis.dropdown.classList.remove('opened', 'bottom-full', 'top-full');\n\t\tif (this.dropdownDirectionClasses?.bottom)\n\t\t\tthis.dropdown.classList.remove(this.dropdownDirectionClasses.bottom);\n\t\tif (this.dropdownDirectionClasses?.top)\n\t\t\tthis.dropdown.classList.remove(this.dropdownDirectionClasses.top);\n\t\tthis.dropdown.style.marginTop = '';\n\t\tthis.dropdown.style.marginBottom = '';\n\n\t\tafterTransition(this.dropdown, () => {\n\t\t\tthis.dropdown.classList.add('hidden');\n\t\t\tif (this.hasSearch) {\n\t\t\t\tthis.search.value = '';\n\t\t\t\tthis.search.dispatchEvent(new Event('input', { bubbles: true }));\n\t\t\t\tthis.search.blur();\n\t\t\t}\n\n\t\t\tthis.animationInProcess = false;\n\t\t});\n\n\t\tthis.dropdown\n\t\t\t.querySelector('.hs-select-option-highlighted')\n\t\t\t?.classList.remove('hs-select-option-highlighted');\n\t\tthis.isOpened = false;\n\t}\n\n\tpublic addOption(items: ISingleOption | ISingleOption[]) {\n\t\tlet i = `${this.selectOptions.length}`;\n\t\tconst addOption = (option: ISingleOption) => {\n\t\t\tconst { title, val, disabled, selected, options } = option;\n\t\t\tconst hasOption = !!this.selectOptions.some(\n\t\t\t\t(el: ISingleOption) => el.val === val,\n\t\t\t);\n\n\t\t\tif (!hasOption) {\n\t\t\t\tthis.addSelectOption(title, val, disabled, selected, options);\n\t\t\t\tthis.buildOption(title, val, disabled, selected, options, i);\n\t\t\t\tthis.buildOriginalOption(title, val, null, disabled, selected, options);\n\n\t\t\t\tif (selected && !this.isMultiple) this.onSelectOption(val);\n\t\t\t}\n\t\t};\n\n\t\tif (Array.isArray(items)) {\n\t\t\titems.forEach((option) => {\n\t\t\t\taddOption(option);\n\t\t\t});\n\t\t} else {\n\t\t\taddOption(items);\n\t\t}\n\t}\n\n\tpublic removeOption(values: string | string[]) {\n\t\tconst removeOption = (val: string, isArray = false) => {\n\t\t\tconst hasOption = !!this.selectOptions.some(\n\t\t\t\t(el: ISingleOption) => el.val === val,\n\t\t\t);\n\n\t\t\tif (hasOption) {\n\t\t\t\tthis.removeSelectOption(val, isArray);\n\t\t\t\tthis.destroyOption(val);\n\t\t\t\tthis.destroyOriginalOption(val);\n\n\t\t\t\tif (this.value === val) {\n\t\t\t\t\tthis.value = null;\n\n\t\t\t\t\tthis.eraseToggleTitle();\n\t\t\t\t\tthis.eraseToggleIcon();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tif (Array.isArray(values)) {\n\t\t\tvalues.forEach((val) => {\n\t\t\t\tremoveOption(val, this.isMultiple);\n\t\t\t});\n\t\t} else {\n\t\t\tremoveOption(values, this.isMultiple);\n\t\t}\n\n\t\tthis.setNewValue();\n\t}\n\n\tpublic recalculateDirection() {\n\t\tif (\n\t\t\tisEnoughSpace(\n\t\t\t\tthis.dropdown,\n\t\t\t\tthis.toggle || this.tagsInput,\n\t\t\t\t'bottom',\n\t\t\t\tthis.dropdownSpace,\n\t\t\t\tthis.viewport,\n\t\t\t)\n\t\t) {\n\t\t\tthis.dropdown.classList.remove('bottom-full');\n\t\t\tif (this.dropdownDirectionClasses?.bottom)\n\t\t\t\tthis.dropdown.classList.remove(this.dropdownDirectionClasses.bottom);\n\t\t\tthis.dropdown.style.marginBottom = '';\n\t\t\tthis.dropdown.classList.add('top-full');\n\t\t\tif (this.dropdownDirectionClasses?.top)\n\t\t\t\tthis.dropdown.classList.add(this.dropdownDirectionClasses.top);\n\t\t\tthis.dropdown.style.marginTop = `${this.dropdownSpace}px`;\n\t\t} else {\n\t\t\tthis.dropdown.classList.remove('top-full');\n\t\t\tif (this.dropdownDirectionClasses?.top)\n\t\t\t\tthis.dropdown.classList.remove(this.dropdownDirectionClasses.top);\n\t\t\tthis.dropdown.style.marginTop = '';\n\t\t\tthis.dropdown.classList.add('bottom-full');\n\t\t\tif (this.dropdownDirectionClasses?.bottom)\n\t\t\t\tthis.dropdown.classList.add(this.dropdownDirectionClasses.bottom);\n\t\t\tthis.dropdown.style.marginBottom = `${this.dropdownSpace}px`;\n\t\t}\n\t}\n\n\t// Static methods\n\tstatic getInstance(target: HTMLElement | string, isInstance?: boolean) {\n\t\tconst elInCollection = window.$hsSelectCollection.find(\n\t\t\t(el) =>\n\t\t\t\tel.element.el ===\n\t\t\t\t(typeof target === 'string' ? document.querySelector(target) : target),\n\t\t);\n\n\t\treturn elInCollection\n\t\t\t? isInstance\n\t\t\t\t? elInCollection\n\t\t\t\t: elInCollection.element\n\t\t\t: null;\n\t}\n\n\tstatic autoInit() {\n\t\tif (!window.$hsSelectCollection) window.$hsSelectCollection = [];\n\n\t\tdocument\n\t\t\t.querySelectorAll('[data-hs-select]:not(.--prevent-on-load-init)')\n\t\t\t.forEach((el: HTMLElement) => {\n\t\t\t\tif (\n\t\t\t\t\t!window.$hsSelectCollection.find(\n\t\t\t\t\t\t(elC) => (elC?.element?.el as HTMLElement) === el,\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tconst data = el.getAttribute('data-hs-select');\n\t\t\t\t\tconst options: ISelectOptions = data ? JSON.parse(data) : {};\n\n\t\t\t\t\tnew HSSelect(el, options);\n\t\t\t\t}\n\t\t\t});\n\n\t\tif (window.$hsSelectCollection) {\n\t\t\twindow.addEventListener('click', (evt) => {\n\t\t\t\tconst evtTarget = evt.target;\n\n\t\t\t\tHSSelect.closeCurrentlyOpened(evtTarget as HTMLElement);\n\t\t\t});\n\n\t\t\tdocument.addEventListener('keydown', (evt) =>\n\t\t\t\tHSSelect.accessibility(evt),\n\t\t\t);\n\t\t}\n\t}\n\n\tstatic open(target: HTMLElement | string) {\n\t\tconst elInCollection = window.$hsSelectCollection.find(\n\t\t\t(el) =>\n\t\t\t\tel.element.el ===\n\t\t\t\t(typeof target === 'string' ? document.querySelector(target) : target),\n\t\t);\n\n\t\tif (elInCollection && !elInCollection.element.isOpened)\n\t\t\telInCollection.element.open();\n\t}\n\n\tstatic close(target: HTMLElement | string) {\n\t\tconst elInCollection = window.$hsSelectCollection.find(\n\t\t\t(el) =>\n\t\t\t\tel.element.el ===\n\t\t\t\t(typeof target === 'string' ? document.querySelector(target) : target),\n\t\t);\n\n\t\tif (elInCollection && elInCollection.element.isOpened) {\n\t\t\telInCollection.element.close();\n\t\t}\n\t}\n\n\tstatic closeCurrentlyOpened(evtTarget: HTMLElement | null = null) {\n\t\tif (\n\t\t\t!evtTarget.closest('.hs-select.active') &&\n\t\t\t!evtTarget.closest('[data-hs-select-dropdown].opened')\n\t\t) {\n\t\t\tconst currentlyOpened =\n\t\t\t\twindow.$hsSelectCollection.filter((el) => el.element.isOpened) || null;\n\n\t\t\tif (currentlyOpened) {\n\t\t\t\tcurrentlyOpened.forEach((el) => {\n\t\t\t\t\tel.element.close();\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\t// Accessibility methods\n\tstatic accessibility(evt: KeyboardEvent) {\n\t\tconst target = window.$hsSelectCollection.find((el) => el.element.isOpened);\n\n\t\tif (\n\t\t\ttarget &&\n\t\t\tSELECT_ACCESSIBILITY_KEY_SET.includes(evt.code) &&\n\t\t\t!evt.metaKey\n\t\t) {\n\t\t\tswitch (evt.code) {\n\t\t\t\tcase 'Escape':\n\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\tthis.onEscape();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ArrowUp':\n\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\tevt.stopImmediatePropagation();\n\t\t\t\t\tthis.onArrow();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ArrowDown':\n\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\tevt.stopImmediatePropagation();\n\t\t\t\t\tthis.onArrow(false);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'Tab':\n\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\tevt.stopImmediatePropagation();\n\t\t\t\t\tthis.onTab(evt.shiftKey);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'Home':\n\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\tevt.stopImmediatePropagation();\n\t\t\t\t\tthis.onStartEnd();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'End':\n\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\tevt.stopImmediatePropagation();\n\t\t\t\t\tthis.onStartEnd(false);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'Enter':\n\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\tthis.onEnter(evt);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tstatic onEscape() {\n\t\tconst target = window.$hsSelectCollection.find((el) => el.element.isOpened);\n\n\t\tif (target) target.element.close();\n\t}\n\n\tstatic onArrow(isArrowUp = true) {\n\t\tconst target = window.$hsSelectCollection.find((el) => el.element.isOpened);\n\n\t\tif (target) {\n\t\t\tconst dropdown = target.element.dropdown;\n\n\t\t\tif (!dropdown) return false;\n\n\t\t\tconst preparedOptions = isArrowUp\n\t\t\t\t? Array.from(\n\t\t\t\t\t\tdropdown.querySelectorAll(':scope > *:not(.hidden)'),\n\t\t\t\t\t).reverse()\n\t\t\t\t: Array.from(dropdown.querySelectorAll(':scope > *:not(.hidden)'));\n\t\t\tconst options = preparedOptions.filter(\n\t\t\t\t(el: any) => !el.classList.contains('disabled'),\n\t\t\t);\n\t\t\tconst current =\n\t\t\t\tdropdown.querySelector('.hs-select-option-highlighted') ||\n\t\t\t\tdropdown.querySelector('.selected');\n\t\t\tif (!current) options[0].classList.add('hs-select-option-highlighted');\n\t\t\tlet currentInd = options.findIndex((el: any) => el === current);\n\n\t\t\tif (currentInd + 1 < options.length) {\n\t\t\t\tcurrentInd++;\n\t\t\t}\n\n\t\t\t(options[currentInd] as HTMLButtonElement).focus();\n\t\t\tif (current) current.classList.remove('hs-select-option-highlighted');\n\t\t\toptions[currentInd].classList.add('hs-select-option-highlighted');\n\t\t}\n\t}\n\n\tstatic onTab(isArrowUp = true) {\n\t\tconst target = window.$hsSelectCollection.find((el) => el.element.isOpened);\n\n\t\tif (target) {\n\t\t\tconst dropdown = target.element.dropdown;\n\n\t\t\tif (!dropdown) return false;\n\n\t\t\tconst preparedOptions = isArrowUp\n\t\t\t\t? Array.from(\n\t\t\t\t\t\tdropdown.querySelectorAll(':scope > *:not(.hidden)'),\n\t\t\t\t\t).reverse()\n\t\t\t\t: Array.from(dropdown.querySelectorAll(':scope > *:not(.hidden)'));\n\t\t\tconst options = preparedOptions.filter(\n\t\t\t\t(el: any) => !el.classList.contains('disabled'),\n\t\t\t);\n\t\t\tconst current =\n\t\t\t\tdropdown.querySelector('.hs-select-option-highlighted') ||\n\t\t\t\tdropdown.querySelector('.selected');\n\t\t\tif (!current) options[0].classList.add('hs-select-option-highlighted');\n\t\t\tlet currentInd = options.findIndex((el: any) => el === current);\n\n\t\t\tif (currentInd + 1 < options.length) {\n\t\t\t\tcurrentInd++;\n\t\t\t} else {\n\t\t\t\tif (current) current.classList.remove('hs-select-option-highlighted');\n\t\t\t\ttarget.element.close();\n\t\t\t\ttarget.element.toggle.focus();\n\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t(options[currentInd] as HTMLButtonElement).focus();\n\t\t\tif (current) current.classList.remove('hs-select-option-highlighted');\n\t\t\toptions[currentInd].classList.add('hs-select-option-highlighted');\n\t\t}\n\t}\n\n\tstatic onStartEnd(isStart = true) {\n\t\tconst target = window.$hsSelectCollection.find((el) => el.element.isOpened);\n\n\t\tif (target) {\n\t\t\tconst dropdown = target.element.dropdown;\n\n\t\t\tif (!dropdown) return false;\n\n\t\t\tconst preparedOptions = isStart\n\t\t\t\t? Array.from(dropdown.querySelectorAll(':scope > *:not(.hidden)'))\n\t\t\t\t: Array.from(\n\t\t\t\t\t\tdropdown.querySelectorAll(':scope > *:not(.hidden)'),\n\t\t\t\t\t).reverse();\n\t\t\tconst options = preparedOptions.filter(\n\t\t\t\t(el: any) => !el.classList.contains('disabled'),\n\t\t\t);\n\t\t\tconst current = dropdown.querySelector('.hs-select-option-highlighted');\n\n\t\t\tif (options.length) {\n\t\t\t\t(options[0] as HTMLButtonElement).focus();\n\t\t\t\tif (current) current.classList.remove('hs-select-option-highlighted');\n\t\t\t\toptions[0].classList.add('hs-select-option-highlighted');\n\t\t\t}\n\t\t}\n\t}\n\n\tstatic onEnter(evt: Event) {\n\t\tconst select = (evt.target as HTMLElement).previousSibling;\n\n\t\tif (window.$hsSelectCollection.find((el) => el.element.el === select)) {\n\t\t\tconst opened = window.$hsSelectCollection.find(\n\t\t\t\t(el) => el.element.isOpened,\n\t\t\t);\n\t\t\tconst target = window.$hsSelectCollection.find(\n\t\t\t\t(el) => el.element.el === select,\n\t\t\t);\n\n\t\t\topened.element.close();\n\t\t\ttarget.element.open();\n\t\t} else {\n\t\t\tconst target = window.$hsSelectCollection.find(\n\t\t\t\t(el) => el.element.isOpened,\n\t\t\t);\n\n\t\t\tif (target)\n\t\t\t\ttarget.element.onSelectOption(\n\t\t\t\t\t(evt.target as HTMLElement).dataset.value || '',\n\t\t\t\t);\n\t\t}\n\t}\n}\n\ndeclare global {\n\tinterface Window {\n\t\tHSSelect: Function;\n\t\t$hsSelectCollection: ICollectionItem[];\n\t}\n}\n\nwindow.addEventListener('load', () => {\n\tHSSelect.autoInit();\n\n\t// Uncomment for debug\n\t// console.log('Select collection:', window.$hsSelectCollection);\n});\n\ndocument.addEventListener('scroll', () => {\n\tif (!window.$hsSelectCollection) return false;\n\n\tconst target = window.$hsSelectCollection.find((el) => el.element.isOpened);\n\n\tif (target) target.element.recalculateDirection();\n});\n\nif (typeof window !== 'undefined') {\n\twindow.HSSelect = HSSelect;\n}\n\nexport default HSSelect;\n","\"use strict\";\n/*\n * HSStepper\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../../utils\");\nvar base_plugin_1 = __importDefault(require(\"../base-plugin\"));\nvar HSStepper = /** @class */ (function (_super) {\n __extends(HSStepper, _super);\n function HSStepper(el, options) {\n var _this = _super.call(this, el, options) || this;\n var data = el.getAttribute('data-hs-stepper');\n var dataOptions = data ? JSON.parse(data) : {};\n var concatOptions = __assign(__assign({}, dataOptions), options);\n _this.currentIndex = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.currentIndex) || 1;\n _this.mode = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.mode) || 'linear';\n _this.isCompleted =\n typeof (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.isCompleted) !== 'undefined'\n ? concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.isCompleted\n : false;\n _this.totalSteps = 1;\n _this.navItems = [];\n _this.contentItems = [];\n _this.init();\n return _this;\n }\n HSStepper.prototype.init = function () {\n this.createCollection(window.$hsStepperCollection, this);\n this.buildNav();\n this.buildContent();\n this.buildButtons();\n this.setTotalSteps();\n };\n HSStepper.prototype.getUncompletedSteps = function (inIncludedSkipped) {\n if (inIncludedSkipped === void 0) { inIncludedSkipped = false; }\n return this.navItems.filter(function (_a) {\n var isCompleted = _a.isCompleted, isSkip = _a.isSkip;\n return inIncludedSkipped ? !isCompleted || isSkip : !isCompleted && !isSkip;\n });\n };\n HSStepper.prototype.setTotalSteps = function () {\n var _this = this;\n this.navItems.forEach(function (item) {\n var index = item.index;\n if (index > _this.totalSteps)\n _this.totalSteps = index;\n });\n };\n // Nav\n HSStepper.prototype.buildNav = function () {\n var _this = this;\n this.el\n .querySelectorAll('[data-hs-stepper-nav-item]')\n .forEach(function (el) { return _this.addNavItem(el); });\n this.navItems.forEach(function (item) { return _this.buildNavItem(item); });\n };\n HSStepper.prototype.buildNavItem = function (item) {\n var _this = this;\n var index = item.index, isDisabled = item.isDisabled, el = item.el;\n if (index === this.currentIndex)\n this.setCurrentNavItem();\n if (this.mode !== 'linear' || isDisabled) {\n el.addEventListener('click', function () { return _this.handleNavItemClick(item); });\n }\n };\n HSStepper.prototype.addNavItem = function (el) {\n var _a = JSON.parse(el.getAttribute('data-hs-stepper-nav-item')), index = _a.index, _b = _a.isFinal, isFinal = _b === void 0 ? false : _b, _c = _a.isCompleted, isCompleted = _c === void 0 ? false : _c, _d = _a.isSkip, isSkip = _d === void 0 ? false : _d, _e = _a.isOptional, isOptional = _e === void 0 ? false : _e, _f = _a.isDisabled, isDisabled = _f === void 0 ? false : _f, _g = _a.isProcessed, isProcessed = _g === void 0 ? false : _g, _h = _a.hasError, hasError = _h === void 0 ? false : _h;\n if (isCompleted)\n el.classList.add('success');\n if (isSkip)\n el.classList.add('skipped');\n if (isDisabled) {\n if (el.tagName === 'BUTTON' || el.tagName === 'INPUT')\n el.setAttribute('disabled', 'disabled');\n el.classList.add('disabled');\n }\n if (hasError)\n el.classList.add('error');\n this.navItems.push({\n index: index,\n isFinal: isFinal,\n isCompleted: isCompleted,\n isSkip: isSkip,\n isOptional: isOptional,\n isDisabled: isDisabled,\n isProcessed: isProcessed,\n hasError: hasError,\n el: el,\n });\n };\n HSStepper.prototype.setCurrentNavItem = function () {\n var _this = this;\n this.navItems.forEach(function (item) {\n var index = item.index, el = item.el;\n if (index === _this.currentIndex)\n _this.setCurrentNavItemActions(el);\n else\n _this.unsetCurrentNavItemActions(el);\n });\n };\n HSStepper.prototype.setCurrentNavItemActions = function (el) {\n el.classList.add('active');\n this.fireEvent('active', this.currentIndex);\n (0, utils_1.dispatch)('active.hs.stepper', this.el, this.currentIndex);\n };\n HSStepper.prototype.getNavItem = function (n) {\n if (n === void 0) { n = this.currentIndex; }\n return this.navItems.find(function (_a) {\n var index = _a.index;\n return index === n;\n });\n };\n HSStepper.prototype.setProcessedNavItemActions = function (item) {\n item.isProcessed = true;\n item.el.classList.add('processed');\n };\n HSStepper.prototype.setErrorNavItemActions = function (item) {\n item.hasError = true;\n item.el.classList.add('error');\n };\n HSStepper.prototype.unsetCurrentNavItemActions = function (el) {\n el.classList.remove('active');\n };\n HSStepper.prototype.handleNavItemClick = function (item) {\n var index = item.index;\n this.currentIndex = index;\n this.setCurrentNavItem();\n this.setCurrentContentItem();\n this.checkForTheFirstStep();\n };\n // Content\n HSStepper.prototype.buildContent = function () {\n var _this = this;\n this.el\n .querySelectorAll('[data-hs-stepper-content-item]')\n .forEach(function (el) { return _this.addContentItem(el); });\n this.navItems.forEach(function (item) { return _this.buildContentItem(item); });\n };\n HSStepper.prototype.buildContentItem = function (item) {\n var index = item.index;\n if (index === this.currentIndex)\n this.setCurrentContentItem();\n };\n HSStepper.prototype.addContentItem = function (el) {\n var _a = JSON.parse(el.getAttribute('data-hs-stepper-content-item')), index = _a.index, _b = _a.isFinal, isFinal = _b === void 0 ? false : _b, _c = _a.isCompleted, isCompleted = _c === void 0 ? false : _c, _d = _a.isSkip, isSkip = _d === void 0 ? false : _d;\n if (isCompleted)\n el.classList.add('success');\n if (isSkip)\n el.classList.add('skipped');\n this.contentItems.push({\n index: index,\n isFinal: isFinal,\n isCompleted: isCompleted,\n isSkip: isSkip,\n el: el,\n });\n };\n HSStepper.prototype.setCurrentContentItem = function () {\n var _this = this;\n if (this.isCompleted) {\n var finalContentItem = this.contentItems.find(function (_a) {\n var isFinal = _a.isFinal;\n return isFinal;\n });\n var otherContentItems = this.contentItems.filter(function (_a) {\n var isFinal = _a.isFinal;\n return !isFinal;\n });\n finalContentItem.el.style.display = '';\n otherContentItems.forEach(function (_a) {\n var el = _a.el;\n return (el.style.display = 'none');\n });\n return false;\n }\n this.contentItems.forEach(function (item) {\n var index = item.index, el = item.el;\n if (index === _this.currentIndex)\n _this.setCurrentContentItemActions(el);\n else\n _this.unsetCurrentContentItemActions(el);\n });\n };\n HSStepper.prototype.hideAllContentItems = function () {\n this.contentItems.forEach(function (_a) {\n var el = _a.el;\n return (el.style.display = 'none');\n });\n };\n HSStepper.prototype.setCurrentContentItemActions = function (el) {\n el.style.display = '';\n };\n HSStepper.prototype.unsetCurrentContentItemActions = function (el) {\n el.style.display = 'none';\n };\n HSStepper.prototype.disableAll = function () {\n var currentNavItem = this.getNavItem(this.currentIndex);\n currentNavItem.hasError = false;\n currentNavItem.isCompleted = false;\n currentNavItem.isDisabled = false;\n currentNavItem.el.classList.remove('error', 'success');\n this.disableButtons();\n };\n HSStepper.prototype.disableNavItemActions = function (item) {\n item.isDisabled = true;\n item.el.classList.add('disabled');\n };\n HSStepper.prototype.enableNavItemActions = function (item) {\n item.isDisabled = false;\n item.el.classList.remove('disabled');\n };\n // Buttons\n HSStepper.prototype.buildButtons = function () {\n this.backBtn = this.el.querySelector('[data-hs-stepper-back-btn]');\n this.nextBtn = this.el.querySelector('[data-hs-stepper-next-btn]');\n this.skipBtn = this.el.querySelector('[data-hs-stepper-skip-btn]');\n this.completeStepBtn = this.el.querySelector('[data-hs-stepper-complete-step-btn]');\n this.finishBtn = this.el.querySelector('[data-hs-stepper-finish-btn]');\n this.resetBtn = this.el.querySelector('[data-hs-stepper-reset-btn]');\n this.buildBackButton();\n this.buildNextButton();\n this.buildSkipButton();\n this.buildCompleteStepButton();\n this.buildFinishButton();\n this.buildResetButton();\n };\n // back\n HSStepper.prototype.buildBackButton = function () {\n var _this = this;\n if (!this.backBtn)\n return;\n this.checkForTheFirstStep();\n this.backBtn.addEventListener('click', function () {\n _this.handleBackButtonClick();\n if (_this.mode === 'linear') {\n var currentNavItem = _this.navItems.find(function (_a) {\n var index = _a.index;\n return index === _this.currentIndex;\n });\n var currentContentItem = _this.contentItems.find(function (_a) {\n var index = _a.index;\n return index === _this.currentIndex;\n });\n if (!currentNavItem || !currentContentItem)\n return;\n if (currentNavItem.isCompleted) {\n currentNavItem.isCompleted = false;\n currentNavItem.isSkip = false;\n currentNavItem.el.classList.remove('success', 'skipped');\n }\n if (currentContentItem.isCompleted) {\n currentContentItem.isCompleted = false;\n currentContentItem.isSkip = false;\n currentContentItem.el.classList.remove('success', 'skipped');\n }\n if (_this.mode === 'linear' && _this.currentIndex !== _this.totalSteps) {\n if (_this.nextBtn)\n _this.nextBtn.style.display = '';\n if (_this.completeStepBtn)\n _this.completeStepBtn.style.display = '';\n }\n _this.showSkipButton();\n _this.showFinishButton();\n _this.showCompleteStepButton();\n }\n });\n };\n HSStepper.prototype.handleBackButtonClick = function () {\n if (this.currentIndex === 1)\n return;\n if (this.mode === 'linear') {\n this.removeOptionalClasses();\n }\n this.currentIndex--;\n if (this.mode === 'linear') {\n this.removeOptionalClasses();\n }\n this.setCurrentNavItem();\n this.setCurrentContentItem();\n this.checkForTheFirstStep();\n if (this.completeStepBtn)\n this.changeTextAndDisableCompleteButtonIfStepCompleted();\n this.fireEvent('back', this.currentIndex);\n (0, utils_1.dispatch)('back.hs.stepper', this.el, this.currentIndex);\n };\n HSStepper.prototype.checkForTheFirstStep = function () {\n if (this.currentIndex === 1) {\n this.setToDisabled(this.backBtn);\n }\n else {\n this.setToNonDisabled(this.backBtn);\n }\n };\n HSStepper.prototype.setToDisabled = function (el) {\n if (el.tagName === 'BUTTON' || el.tagName === 'INPUT')\n el.setAttribute('disabled', 'disabled');\n el.classList.add('disabled');\n };\n HSStepper.prototype.setToNonDisabled = function (el) {\n if (el.tagName === 'BUTTON' || el.tagName === 'INPUT')\n el.removeAttribute('disabled');\n el.classList.remove('disabled');\n };\n // next\n HSStepper.prototype.buildNextButton = function () {\n var _this = this;\n if (!this.nextBtn)\n return;\n this.nextBtn.addEventListener('click', function () {\n var _a;\n _this.fireEvent('beforeNext', _this.currentIndex);\n (0, utils_1.dispatch)('beforeNext.hs.stepper', _this.el, _this.currentIndex);\n if ((_a = _this.getNavItem(_this.currentIndex)) === null || _a === void 0 ? void 0 : _a.isProcessed) {\n _this.disableAll();\n return false;\n }\n _this.goToNext();\n });\n };\n HSStepper.prototype.unsetProcessedNavItemActions = function (item) {\n item.isProcessed = false;\n item.el.classList.remove('processed');\n };\n HSStepper.prototype.handleNextButtonClick = function (infinite) {\n if (infinite === void 0) { infinite = true; }\n if (infinite) {\n if (this.currentIndex === this.totalSteps)\n this.currentIndex = 1;\n else\n this.currentIndex++;\n }\n else {\n var nonCompletedSteps = this.getUncompletedSteps();\n if (nonCompletedSteps.length === 1) {\n var index = nonCompletedSteps[0].index;\n this.currentIndex = index;\n }\n else {\n if (this.currentIndex === this.totalSteps)\n return;\n this.currentIndex++;\n }\n }\n if (this.mode === 'linear') {\n this.removeOptionalClasses();\n }\n this.setCurrentNavItem();\n this.setCurrentContentItem();\n this.checkForTheFirstStep();\n if (this.completeStepBtn)\n this.changeTextAndDisableCompleteButtonIfStepCompleted();\n this.showSkipButton();\n this.showFinishButton();\n this.showCompleteStepButton();\n this.fireEvent('next', this.currentIndex);\n (0, utils_1.dispatch)('next.hs.stepper', this.el, this.currentIndex);\n };\n HSStepper.prototype.removeOptionalClasses = function () {\n var _this = this;\n var currentNavItem = this.navItems.find(function (_a) {\n var index = _a.index;\n return index === _this.currentIndex;\n });\n var currentContentItem = this.contentItems.find(function (_a) {\n var index = _a.index;\n return index === _this.currentIndex;\n });\n currentNavItem.isSkip = false;\n currentNavItem.hasError = false;\n currentNavItem.isDisabled = false;\n currentContentItem.isSkip = false;\n currentNavItem.el.classList.remove('skipped', 'success', 'error');\n currentContentItem.el.classList.remove('skipped', 'success', 'error');\n };\n // skip\n HSStepper.prototype.buildSkipButton = function () {\n var _this = this;\n if (!this.skipBtn)\n return;\n this.showSkipButton();\n this.skipBtn.addEventListener('click', function () {\n _this.handleSkipButtonClick();\n if (_this.mode === 'linear' && _this.currentIndex === _this.totalSteps) {\n if (_this.nextBtn)\n _this.nextBtn.style.display = 'none';\n if (_this.completeStepBtn)\n _this.completeStepBtn.style.display = 'none';\n if (_this.finishBtn)\n _this.finishBtn.style.display = '';\n }\n });\n };\n HSStepper.prototype.setSkipItem = function (n) {\n var _this = this;\n var targetNavItem = this.navItems.find(function (_a) {\n var index = _a.index;\n return index === (n || _this.currentIndex);\n });\n var targetContentItem = this.contentItems.find(function (_a) {\n var index = _a.index;\n return index === (n || _this.currentIndex);\n });\n if (!targetNavItem || !targetContentItem)\n return;\n this.setSkipItemActions(targetNavItem);\n this.setSkipItemActions(targetContentItem);\n };\n HSStepper.prototype.setSkipItemActions = function (item) {\n item.isSkip = true;\n item.el.classList.add('skipped');\n };\n HSStepper.prototype.showSkipButton = function () {\n var _this = this;\n if (!this.skipBtn)\n return;\n var isOptional = this.navItems.find(function (_a) {\n var index = _a.index;\n return index === _this.currentIndex;\n }).isOptional;\n if (isOptional)\n this.skipBtn.style.display = '';\n else\n this.skipBtn.style.display = 'none';\n };\n HSStepper.prototype.handleSkipButtonClick = function () {\n this.setSkipItem();\n this.handleNextButtonClick();\n this.fireEvent('skip', this.currentIndex);\n (0, utils_1.dispatch)('skip.hs.stepper', this.el, this.currentIndex);\n };\n // complete\n HSStepper.prototype.buildCompleteStepButton = function () {\n var _this = this;\n if (!this.completeStepBtn)\n return;\n this.completeStepBtnDefaultText = this.completeStepBtn.innerText;\n this.completeStepBtn.addEventListener('click', function () {\n return _this.handleCompleteStepButtonClick();\n });\n };\n HSStepper.prototype.changeTextAndDisableCompleteButtonIfStepCompleted = function () {\n var _this = this;\n var currentNavItem = this.navItems.find(function (_a) {\n var index = _a.index;\n return index === _this.currentIndex;\n });\n var completedText = JSON.parse(this.completeStepBtn.getAttribute('data-hs-stepper-complete-step-btn')).completedText;\n if (!currentNavItem)\n return;\n if (currentNavItem.isCompleted) {\n this.completeStepBtn.innerText =\n completedText || this.completeStepBtnDefaultText;\n this.completeStepBtn.setAttribute('disabled', 'disabled');\n this.completeStepBtn.classList.add('disabled');\n }\n else {\n this.completeStepBtn.innerText = this.completeStepBtnDefaultText;\n this.completeStepBtn.removeAttribute('disabled');\n this.completeStepBtn.classList.remove('disabled');\n }\n };\n HSStepper.prototype.setCompleteItem = function (n) {\n var _this = this;\n var targetNavItem = this.navItems.find(function (_a) {\n var index = _a.index;\n return index === (n || _this.currentIndex);\n });\n var targetContentItem = this.contentItems.find(function (_a) {\n var index = _a.index;\n return index === (n || _this.currentIndex);\n });\n if (!targetNavItem || !targetContentItem)\n return;\n this.setCompleteItemActions(targetNavItem);\n this.setCompleteItemActions(targetContentItem);\n };\n HSStepper.prototype.setCompleteItemActions = function (item) {\n item.isCompleted = true;\n item.el.classList.add('success');\n };\n HSStepper.prototype.showCompleteStepButton = function () {\n if (!this.completeStepBtn)\n return;\n var nonCompletedSteps = this.getUncompletedSteps();\n if (nonCompletedSteps.length === 1)\n this.completeStepBtn.style.display = 'none';\n else\n this.completeStepBtn.style.display = '';\n };\n HSStepper.prototype.handleCompleteStepButtonClick = function () {\n this.setCompleteItem();\n this.fireEvent('complete', this.currentIndex);\n (0, utils_1.dispatch)('complete.hs.stepper', this.el, this.currentIndex);\n this.handleNextButtonClick(false);\n this.showFinishButton();\n this.showCompleteStepButton();\n this.checkForTheFirstStep();\n if (this.completeStepBtn)\n this.changeTextAndDisableCompleteButtonIfStepCompleted();\n this.showSkipButton();\n };\n // finish\n HSStepper.prototype.buildFinishButton = function () {\n var _this = this;\n if (!this.finishBtn)\n return;\n if (this.isCompleted) {\n this.setCompleted();\n }\n this.finishBtn.addEventListener('click', function () {\n return _this.handleFinishButtonClick();\n });\n };\n HSStepper.prototype.setCompleted = function () {\n this.el.classList.add('completed');\n };\n HSStepper.prototype.unsetCompleted = function () {\n this.el.classList.remove('completed');\n };\n HSStepper.prototype.showFinishButton = function () {\n if (!this.finishBtn)\n return;\n var nonCompletedSteps = this.getUncompletedSteps();\n if (nonCompletedSteps.length === 1)\n this.finishBtn.style.display = '';\n else\n this.finishBtn.style.display = 'none';\n };\n HSStepper.prototype.handleFinishButtonClick = function () {\n var _this = this;\n var uncompletedSteps = this.getUncompletedSteps();\n var uncompletedOrSkipSteps = this.getUncompletedSteps(true);\n var el = this.contentItems.find(function (_a) {\n var isFinal = _a.isFinal;\n return isFinal;\n }).el;\n if (uncompletedSteps.length)\n uncompletedSteps.forEach(function (_a) {\n var index = _a.index;\n return _this.setCompleteItem(index);\n });\n this.currentIndex = this.totalSteps;\n this.setCurrentNavItem();\n this.hideAllContentItems();\n var currentNavItem = this.navItems.find(function (_a) {\n var index = _a.index;\n return index === _this.currentIndex;\n });\n var currentNavItemEl = currentNavItem ? currentNavItem.el : null;\n currentNavItemEl.classList.remove('active');\n el.style.display = 'block';\n if (this.backBtn)\n this.backBtn.style.display = 'none';\n if (this.nextBtn)\n this.nextBtn.style.display = 'none';\n if (this.skipBtn)\n this.skipBtn.style.display = 'none';\n if (this.completeStepBtn)\n this.completeStepBtn.style.display = 'none';\n if (this.finishBtn)\n this.finishBtn.style.display = 'none';\n if (this.resetBtn)\n this.resetBtn.style.display = '';\n if (uncompletedOrSkipSteps.length <= 1) {\n this.isCompleted = true;\n this.setCompleted();\n }\n this.fireEvent('finish', this.currentIndex);\n (0, utils_1.dispatch)('finish.hs.stepper', this.el, this.currentIndex);\n };\n // reset\n HSStepper.prototype.buildResetButton = function () {\n var _this = this;\n if (!this.resetBtn)\n return;\n this.resetBtn.addEventListener('click', function () {\n return _this.handleResetButtonClick();\n });\n };\n HSStepper.prototype.handleResetButtonClick = function () {\n var _this = this;\n if (this.backBtn)\n this.backBtn.style.display = '';\n if (this.nextBtn)\n this.nextBtn.style.display = '';\n if (this.completeStepBtn) {\n this.completeStepBtn.style.display = '';\n this.completeStepBtn.innerText = this.completeStepBtnDefaultText;\n this.completeStepBtn.removeAttribute('disabled');\n this.completeStepBtn.classList.remove('disabled');\n }\n if (this.resetBtn)\n this.resetBtn.style.display = 'none';\n this.navItems.forEach(function (item) {\n var el = item.el;\n item.isSkip = false;\n item.isCompleted = false;\n _this.unsetCurrentNavItemActions(el);\n el.classList.remove('success', 'skipped');\n });\n this.contentItems.forEach(function (item) {\n var el = item.el;\n item.isSkip = false;\n item.isCompleted = false;\n _this.unsetCurrentContentItemActions(el);\n el.classList.remove('success', 'skipped');\n });\n this.currentIndex = 1;\n this.unsetCompleted();\n this.isCompleted = false;\n this.setCurrentNavItem();\n this.setCurrentContentItem();\n this.showFinishButton();\n this.showCompleteStepButton();\n this.checkForTheFirstStep();\n this.fireEvent('reset', this.currentIndex);\n (0, utils_1.dispatch)('reset.hs.stepper', this.el, this.currentIndex);\n };\n // Public methods\n HSStepper.prototype.setProcessedNavItem = function (n) {\n var targetNavItem = this.getNavItem(n);\n if (!targetNavItem)\n return;\n this.setProcessedNavItemActions(targetNavItem);\n };\n HSStepper.prototype.unsetProcessedNavItem = function (n) {\n var targetNavItem = this.getNavItem(n);\n if (!targetNavItem)\n return;\n this.unsetProcessedNavItemActions(targetNavItem);\n };\n HSStepper.prototype.goToNext = function () {\n if (this.mode === 'linear')\n this.setCompleteItem();\n this.handleNextButtonClick(this.mode !== 'linear');\n if (this.mode === 'linear' && this.currentIndex === this.totalSteps) {\n if (this.nextBtn)\n this.nextBtn.style.display = 'none';\n if (this.completeStepBtn)\n this.completeStepBtn.style.display = 'none';\n }\n };\n HSStepper.prototype.disableButtons = function () {\n if (this.backBtn)\n this.setToDisabled(this.backBtn);\n if (this.nextBtn)\n this.setToDisabled(this.nextBtn);\n };\n HSStepper.prototype.enableButtons = function () {\n if (this.backBtn)\n this.setToNonDisabled(this.backBtn);\n if (this.nextBtn)\n this.setToNonDisabled(this.nextBtn);\n };\n HSStepper.prototype.setErrorNavItem = function (n) {\n var targetNavItem = this.getNavItem(n);\n if (!targetNavItem)\n return;\n this.setErrorNavItemActions(targetNavItem);\n };\n // Static methods\n HSStepper.getInstance = function (target, isInstance) {\n var elInCollection = window.$hsStepperCollection.find(function (el) {\n return el.element.el ===\n (typeof target === 'string' ? document.querySelector(target) : target);\n });\n return elInCollection\n ? isInstance\n ? elInCollection\n : elInCollection.element\n : null;\n };\n HSStepper.autoInit = function () {\n if (!window.$hsStepperCollection)\n window.$hsStepperCollection = [];\n document\n .querySelectorAll('[data-hs-stepper]:not(.--prevent-on-load-init)')\n .forEach(function (el) {\n if (!window.$hsStepperCollection.find(function (elC) { var _a; return ((_a = elC === null || elC === void 0 ? void 0 : elC.element) === null || _a === void 0 ? void 0 : _a.el) === el; }))\n new HSStepper(el);\n });\n };\n return HSStepper;\n}(base_plugin_1.default));\nwindow.addEventListener('load', function () {\n HSStepper.autoInit();\n // Uncomment for debug\n // console.log('Stepper collection:', window.$hsStepperCollection);\n});\nif (typeof window !== 'undefined') {\n window.HSStepper = HSStepper;\n}\nexports.default = HSStepper;\n","/*\n * HSStepper\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\n\nimport { dispatch } from '../../utils';\n\nimport {\n\tIStepperOptions,\n\tIStepper,\n\tIStepperItem,\n} from '../stepper/interfaces';\n\nimport HSBasePlugin from '../base-plugin';\nimport { ICollectionItem } from '../../interfaces';\n\nclass HSStepper extends HSBasePlugin<{}> implements IStepper {\n\tprivate currentIndex: number | null;\n\tprivate readonly mode: string | null;\n\tprivate isCompleted: boolean | null;\n\n\tprivate totalSteps: number | null;\n\n\tprivate navItems: IStepperItem[] | null;\n\tprivate contentItems: IStepperItem[] | null;\n\tprivate backBtn: HTMLElement | null;\n\tprivate nextBtn: HTMLElement | null;\n\tprivate skipBtn: HTMLElement | null;\n\tprivate completeStepBtn: HTMLElement | null;\n\tprivate completeStepBtnDefaultText: string | null;\n\tprivate finishBtn: HTMLElement | null;\n\tprivate resetBtn: HTMLElement | null;\n\n\tconstructor(el: HTMLElement, options?: IStepperOptions) {\n\t\tsuper(el, options);\n\n\t\tconst data = el.getAttribute('data-hs-stepper');\n\t\tconst dataOptions: IStepperOptions = data ? JSON.parse(data) : {};\n\t\tconst concatOptions = {\n\t\t\t...dataOptions,\n\t\t\t...options,\n\t\t};\n\n\t\tthis.currentIndex = concatOptions?.currentIndex || 1;\n\t\tthis.mode = concatOptions?.mode || 'linear';\n\t\tthis.isCompleted =\n\t\t\ttypeof concatOptions?.isCompleted !== 'undefined'\n\t\t\t\t? concatOptions?.isCompleted\n\t\t\t\t: false;\n\n\t\tthis.totalSteps = 1;\n\n\t\tthis.navItems = [];\n\t\tthis.contentItems = [];\n\n\t\tthis.init();\n\t}\n\n\tprivate init() {\n\t\tthis.createCollection(window.$hsStepperCollection, this);\n\n\t\tthis.buildNav();\n\t\tthis.buildContent();\n\t\tthis.buildButtons();\n\t\tthis.setTotalSteps();\n\t}\n\n\tprivate getUncompletedSteps(inIncludedSkipped: boolean = false) {\n\t\treturn this.navItems.filter(({ isCompleted, isSkip }) =>\n\t\t\tinIncludedSkipped ? !isCompleted || isSkip : !isCompleted && !isSkip,\n\t\t);\n\t}\n\n\tprivate setTotalSteps() {\n\t\tthis.navItems.forEach((item) => {\n\t\t\tconst { index } = item;\n\n\t\t\tif (index > this.totalSteps) this.totalSteps = index;\n\t\t});\n\t}\n\n\t// Nav\n\tprivate buildNav() {\n\t\tthis.el\n\t\t\t.querySelectorAll('[data-hs-stepper-nav-item]')\n\t\t\t.forEach((el) => this.addNavItem(el as HTMLElement));\n\n\t\tthis.navItems.forEach((item) => this.buildNavItem(item));\n\t}\n\n\tprivate buildNavItem(item: IStepperItem) {\n\t\tconst { index, isDisabled, el } = item;\n\n\t\tif (index === this.currentIndex) this.setCurrentNavItem();\n\n\t\tif (this.mode !== 'linear' || isDisabled) {\n\t\t\tel.addEventListener('click', () => this.handleNavItemClick(item));\n\t\t}\n\t}\n\n\tprivate addNavItem(el: HTMLElement) {\n\t\tconst {\n\t\t\tindex,\n\t\t\tisFinal = false,\n\t\t\tisCompleted = false,\n\t\t\tisSkip = false,\n\t\t\tisOptional = false,\n\t\t\tisDisabled = false,\n\t\t\tisProcessed = false,\n\t\t\thasError = false,\n\t\t} = JSON.parse(el.getAttribute('data-hs-stepper-nav-item'));\n\n\t\tif (isCompleted) el.classList.add('success');\n\t\tif (isSkip) el.classList.add('skipped');\n\t\tif (isDisabled) {\n\t\t\tif (el.tagName === 'BUTTON' || el.tagName === 'INPUT')\n\t\t\t\tel.setAttribute('disabled', 'disabled');\n\n\t\t\tel.classList.add('disabled');\n\t\t}\n\t\tif (hasError) el.classList.add('error');\n\n\t\tthis.navItems.push({\n\t\t\tindex,\n\t\t\tisFinal,\n\t\t\tisCompleted,\n\t\t\tisSkip,\n\t\t\tisOptional,\n\t\t\tisDisabled,\n\t\t\tisProcessed,\n\t\t\thasError,\n\t\t\tel: el as HTMLElement,\n\t\t});\n\t}\n\n\tprivate setCurrentNavItem() {\n\t\tthis.navItems.forEach((item) => {\n\t\t\tconst { index, el } = item;\n\n\t\t\tif (index === this.currentIndex) this.setCurrentNavItemActions(el);\n\t\t\telse this.unsetCurrentNavItemActions(el);\n\t\t});\n\t}\n\n\tprivate setCurrentNavItemActions(el: HTMLElement) {\n\t\tel.classList.add('active');\n\n\t\tthis.fireEvent('active', this.currentIndex);\n\t\tdispatch('active.hs.stepper', this.el, this.currentIndex);\n\t}\n\n\tprivate getNavItem(n = this.currentIndex) {\n\t\treturn this.navItems.find(({ index }) => index === n);\n\t}\n\n\tprivate setProcessedNavItemActions(item: IStepperItem) {\n\t\titem.isProcessed = true;\n\n\t\titem.el.classList.add('processed');\n\t}\n\n\tprivate setErrorNavItemActions(item: IStepperItem) {\n\t\titem.hasError = true;\n\n\t\titem.el.classList.add('error');\n\t}\n\n\tprivate unsetCurrentNavItemActions(el: HTMLElement) {\n\t\tel.classList.remove('active');\n\t}\n\n\tprivate handleNavItemClick(item: IStepperItem) {\n\t\tconst { index } = item;\n\n\t\tthis.currentIndex = index;\n\n\t\tthis.setCurrentNavItem();\n\t\tthis.setCurrentContentItem();\n\n\t\tthis.checkForTheFirstStep();\n\t}\n\n\t// Content\n\tprivate buildContent() {\n\t\tthis.el\n\t\t\t.querySelectorAll('[data-hs-stepper-content-item]')\n\t\t\t.forEach((el) => this.addContentItem(el as HTMLElement));\n\n\t\tthis.navItems.forEach((item) => this.buildContentItem(item));\n\t}\n\n\tprivate buildContentItem(item: IStepperItem) {\n\t\tconst { index } = item;\n\n\t\tif (index === this.currentIndex) this.setCurrentContentItem();\n\t}\n\n\tprivate addContentItem(el: HTMLElement) {\n\t\tconst {\n\t\t\tindex,\n\t\t\tisFinal = false,\n\t\t\tisCompleted = false,\n\t\t\tisSkip = false,\n\t\t} = JSON.parse(el.getAttribute('data-hs-stepper-content-item'));\n\n\t\tif (isCompleted) el.classList.add('success');\n\t\tif (isSkip) el.classList.add('skipped');\n\n\t\tthis.contentItems.push({\n\t\t\tindex,\n\t\t\tisFinal,\n\t\t\tisCompleted,\n\t\t\tisSkip,\n\t\t\tel: el as HTMLElement,\n\t\t});\n\t}\n\n\tprivate setCurrentContentItem() {\n\t\tif (this.isCompleted) {\n\t\t\tconst finalContentItem = this.contentItems.find(({ isFinal }) => isFinal);\n\t\t\tconst otherContentItems = this.contentItems.filter(\n\t\t\t\t({ isFinal }) => !isFinal,\n\t\t\t);\n\t\t\tfinalContentItem.el.style.display = '';\n\t\t\totherContentItems.forEach(({ el }) => (el.style.display = 'none'));\n\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.contentItems.forEach((item) => {\n\t\t\tconst { index, el } = item;\n\n\t\t\tif (index === this.currentIndex) this.setCurrentContentItemActions(el);\n\t\t\telse this.unsetCurrentContentItemActions(el);\n\t\t});\n\t}\n\n\tprivate hideAllContentItems() {\n\t\tthis.contentItems.forEach(({ el }) => (el.style.display = 'none'));\n\t}\n\n\tprivate setCurrentContentItemActions(el: HTMLElement) {\n\t\tel.style.display = '';\n\t}\n\n\tprivate unsetCurrentContentItemActions(el: HTMLElement) {\n\t\tel.style.display = 'none';\n\t}\n\n\tprivate disableAll() {\n\t\tconst currentNavItem = this.getNavItem(this.currentIndex);\n\t\tcurrentNavItem.hasError = false;\n\t\tcurrentNavItem.isCompleted = false;\n\t\tcurrentNavItem.isDisabled = false;\n\t\tcurrentNavItem.el.classList.remove('error', 'success');\n\n\t\tthis.disableButtons();\n\t}\n\n\tprivate disableNavItemActions(item: IStepperItem) {\n\t\titem.isDisabled = true;\n\t\titem.el.classList.add('disabled');\n\t}\n\n\tprivate enableNavItemActions(item: IStepperItem) {\n\t\titem.isDisabled = false;\n\t\titem.el.classList.remove('disabled');\n\t}\n\n\t// Buttons\n\tprivate buildButtons() {\n\t\tthis.backBtn = this.el.querySelector('[data-hs-stepper-back-btn]');\n\t\tthis.nextBtn = this.el.querySelector('[data-hs-stepper-next-btn]');\n\t\tthis.skipBtn = this.el.querySelector('[data-hs-stepper-skip-btn]');\n\t\tthis.completeStepBtn = this.el.querySelector(\n\t\t\t'[data-hs-stepper-complete-step-btn]',\n\t\t);\n\t\tthis.finishBtn = this.el.querySelector('[data-hs-stepper-finish-btn]');\n\t\tthis.resetBtn = this.el.querySelector('[data-hs-stepper-reset-btn]');\n\n\t\tthis.buildBackButton();\n\t\tthis.buildNextButton();\n\t\tthis.buildSkipButton();\n\t\tthis.buildCompleteStepButton();\n\t\tthis.buildFinishButton();\n\t\tthis.buildResetButton();\n\t}\n\n\t// back\n\tprivate buildBackButton() {\n\t\tif (!this.backBtn) return;\n\n\t\tthis.checkForTheFirstStep();\n\n\t\tthis.backBtn.addEventListener('click', () => {\n\t\t\tthis.handleBackButtonClick();\n\n\t\t\tif (this.mode === 'linear') {\n\t\t\t\tconst currentNavItem = this.navItems.find(\n\t\t\t\t\t({ index }) => index === this.currentIndex,\n\t\t\t\t);\n\t\t\t\tconst currentContentItem = this.contentItems.find(\n\t\t\t\t\t({ index }) => index === this.currentIndex,\n\t\t\t\t);\n\n\t\t\t\tif (!currentNavItem || !currentContentItem) return;\n\n\t\t\t\tif (currentNavItem.isCompleted) {\n\t\t\t\t\tcurrentNavItem.isCompleted = false;\n\t\t\t\t\tcurrentNavItem.isSkip = false;\n\n\t\t\t\t\tcurrentNavItem.el.classList.remove('success', 'skipped');\n\t\t\t\t}\n\n\t\t\t\tif (currentContentItem.isCompleted) {\n\t\t\t\t\tcurrentContentItem.isCompleted = false;\n\t\t\t\t\tcurrentContentItem.isSkip = false;\n\n\t\t\t\t\tcurrentContentItem.el.classList.remove('success', 'skipped');\n\t\t\t\t}\n\n\t\t\t\tif (this.mode === 'linear' && this.currentIndex !== this.totalSteps) {\n\t\t\t\t\tif (this.nextBtn) this.nextBtn.style.display = '';\n\t\t\t\t\tif (this.completeStepBtn) this.completeStepBtn.style.display = '';\n\t\t\t\t}\n\n\t\t\t\tthis.showSkipButton();\n\t\t\t\tthis.showFinishButton();\n\t\t\t\tthis.showCompleteStepButton();\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate handleBackButtonClick() {\n\t\tif (this.currentIndex === 1) return;\n\n\t\tif (this.mode === 'linear') {\n\t\t\tthis.removeOptionalClasses();\n\t\t}\n\n\t\tthis.currentIndex--;\n\n\t\tif (this.mode === 'linear') {\n\t\t\tthis.removeOptionalClasses();\n\t\t}\n\n\t\tthis.setCurrentNavItem();\n\t\tthis.setCurrentContentItem();\n\n\t\tthis.checkForTheFirstStep();\n\t\tif (this.completeStepBtn)\n\t\t\tthis.changeTextAndDisableCompleteButtonIfStepCompleted();\n\n\t\tthis.fireEvent('back', this.currentIndex);\n\t\tdispatch('back.hs.stepper', this.el, this.currentIndex);\n\t}\n\n\tprivate checkForTheFirstStep() {\n\t\tif (this.currentIndex === 1) {\n\t\t\tthis.setToDisabled(this.backBtn);\n\t\t} else {\n\t\t\tthis.setToNonDisabled(this.backBtn);\n\t\t}\n\t}\n\n\tprivate setToDisabled(el: HTMLElement) {\n\t\tif (el.tagName === 'BUTTON' || el.tagName === 'INPUT')\n\t\t\tel.setAttribute('disabled', 'disabled');\n\n\t\tel.classList.add('disabled');\n\t}\n\n\tprivate setToNonDisabled(el: HTMLElement) {\n\t\tif (el.tagName === 'BUTTON' || el.tagName === 'INPUT')\n\t\t\tel.removeAttribute('disabled');\n\n\t\tel.classList.remove('disabled');\n\t}\n\n\t// next\n\tprivate buildNextButton() {\n\t\tif (!this.nextBtn) return;\n\n\t\tthis.nextBtn.addEventListener('click', () => {\n\t\t\tthis.fireEvent('beforeNext', this.currentIndex);\n\t\t\tdispatch('beforeNext.hs.stepper', this.el, this.currentIndex);\n\n\t\t\tif (this.getNavItem(this.currentIndex)?.isProcessed) {\n\t\t\t\tthis.disableAll();\n\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis.goToNext();\n\t\t});\n\t}\n\n\tprivate unsetProcessedNavItemActions(item: IStepperItem) {\n\t\titem.isProcessed = false;\n\n\t\titem.el.classList.remove('processed');\n\t}\n\n\tprivate handleNextButtonClick(infinite = true) {\n\t\tif (infinite) {\n\t\t\tif (this.currentIndex === this.totalSteps) this.currentIndex = 1;\n\t\t\telse this.currentIndex++;\n\t\t} else {\n\t\t\tconst nonCompletedSteps = this.getUncompletedSteps();\n\n\t\t\tif (nonCompletedSteps.length === 1) {\n\t\t\t\tconst { index } = nonCompletedSteps[0];\n\n\t\t\t\tthis.currentIndex = index;\n\t\t\t} else {\n\t\t\t\tif (this.currentIndex === this.totalSteps) return;\n\n\t\t\t\tthis.currentIndex++;\n\t\t\t}\n\t\t}\n\n\t\tif (this.mode === 'linear') {\n\t\t\tthis.removeOptionalClasses();\n\t\t}\n\n\t\tthis.setCurrentNavItem();\n\t\tthis.setCurrentContentItem();\n\n\t\tthis.checkForTheFirstStep();\n\t\tif (this.completeStepBtn)\n\t\t\tthis.changeTextAndDisableCompleteButtonIfStepCompleted();\n\n\t\tthis.showSkipButton();\n\t\tthis.showFinishButton();\n\t\tthis.showCompleteStepButton();\n\n\t\tthis.fireEvent('next', this.currentIndex);\n\t\tdispatch('next.hs.stepper', this.el, this.currentIndex);\n\t}\n\n\tprivate removeOptionalClasses() {\n\t\tconst currentNavItem = this.navItems.find(\n\t\t\t({ index }) => index === this.currentIndex,\n\t\t);\n\t\tconst currentContentItem = this.contentItems.find(\n\t\t\t({ index }) => index === this.currentIndex,\n\t\t);\n\n\t\tcurrentNavItem.isSkip = false;\n\t\tcurrentNavItem.hasError = false;\n\t\tcurrentNavItem.isDisabled = false;\n\t\tcurrentContentItem.isSkip = false;\n\n\t\tcurrentNavItem.el.classList.remove('skipped', 'success', 'error');\n\t\tcurrentContentItem.el.classList.remove('skipped', 'success', 'error');\n\t}\n\n\t// skip\n\tprivate buildSkipButton() {\n\t\tif (!this.skipBtn) return;\n\n\t\tthis.showSkipButton();\n\n\t\tthis.skipBtn.addEventListener('click', () => {\n\t\t\tthis.handleSkipButtonClick();\n\n\t\t\tif (this.mode === 'linear' && this.currentIndex === this.totalSteps) {\n\t\t\t\tif (this.nextBtn) this.nextBtn.style.display = 'none';\n\t\t\t\tif (this.completeStepBtn) this.completeStepBtn.style.display = 'none';\n\t\t\t\tif (this.finishBtn) this.finishBtn.style.display = '';\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate setSkipItem(n?: number) {\n\t\tconst targetNavItem = this.navItems.find(\n\t\t\t({ index }) => index === (n || this.currentIndex),\n\t\t);\n\t\tconst targetContentItem = this.contentItems.find(\n\t\t\t({ index }) => index === (n || this.currentIndex),\n\t\t);\n\n\t\tif (!targetNavItem || !targetContentItem) return;\n\n\t\tthis.setSkipItemActions(targetNavItem);\n\t\tthis.setSkipItemActions(targetContentItem);\n\t}\n\n\tprivate setSkipItemActions(item: IStepperItem) {\n\t\titem.isSkip = true;\n\n\t\titem.el.classList.add('skipped');\n\t}\n\n\tprivate showSkipButton() {\n\t\tif (!this.skipBtn) return;\n\n\t\tconst { isOptional } = this.navItems.find(\n\t\t\t({ index }) => index === this.currentIndex,\n\t\t);\n\n\t\tif (isOptional) this.skipBtn.style.display = '';\n\t\telse this.skipBtn.style.display = 'none';\n\t}\n\n\tprivate handleSkipButtonClick() {\n\t\tthis.setSkipItem();\n\t\tthis.handleNextButtonClick();\n\n\t\tthis.fireEvent('skip', this.currentIndex);\n\t\tdispatch('skip.hs.stepper', this.el, this.currentIndex);\n\t}\n\n\t// complete\n\tprivate buildCompleteStepButton() {\n\t\tif (!this.completeStepBtn) return;\n\n\t\tthis.completeStepBtnDefaultText = this.completeStepBtn.innerText;\n\n\t\tthis.completeStepBtn.addEventListener('click', () =>\n\t\t\tthis.handleCompleteStepButtonClick(),\n\t\t);\n\t}\n\n\tprivate changeTextAndDisableCompleteButtonIfStepCompleted() {\n\t\tconst currentNavItem = this.navItems.find(\n\t\t\t({ index }) => index === this.currentIndex,\n\t\t);\n\t\tconst { completedText } = JSON.parse(\n\t\t\tthis.completeStepBtn.getAttribute('data-hs-stepper-complete-step-btn'),\n\t\t);\n\n\t\tif (!currentNavItem) return;\n\n\t\tif (currentNavItem.isCompleted) {\n\t\t\tthis.completeStepBtn.innerText =\n\t\t\t\tcompletedText || this.completeStepBtnDefaultText;\n\t\t\tthis.completeStepBtn.setAttribute('disabled', 'disabled');\n\t\t\tthis.completeStepBtn.classList.add('disabled');\n\t\t} else {\n\t\t\tthis.completeStepBtn.innerText = this.completeStepBtnDefaultText;\n\t\t\tthis.completeStepBtn.removeAttribute('disabled');\n\t\t\tthis.completeStepBtn.classList.remove('disabled');\n\t\t}\n\t}\n\n\tprivate setCompleteItem(n?: number) {\n\t\tconst targetNavItem = this.navItems.find(\n\t\t\t({ index }) => index === (n || this.currentIndex),\n\t\t);\n\t\tconst targetContentItem = this.contentItems.find(\n\t\t\t({ index }) => index === (n || this.currentIndex),\n\t\t);\n\n\t\tif (!targetNavItem || !targetContentItem) return;\n\n\t\tthis.setCompleteItemActions(targetNavItem);\n\t\tthis.setCompleteItemActions(targetContentItem);\n\t}\n\n\tprivate setCompleteItemActions(item: IStepperItem) {\n\t\titem.isCompleted = true;\n\n\t\titem.el.classList.add('success');\n\t}\n\n\tprivate showCompleteStepButton() {\n\t\tif (!this.completeStepBtn) return;\n\n\t\tconst nonCompletedSteps = this.getUncompletedSteps();\n\n\t\tif (nonCompletedSteps.length === 1)\n\t\t\tthis.completeStepBtn.style.display = 'none';\n\t\telse this.completeStepBtn.style.display = '';\n\t}\n\n\tprivate handleCompleteStepButtonClick() {\n\t\tthis.setCompleteItem();\n\n\t\tthis.fireEvent('complete', this.currentIndex);\n\t\tdispatch('complete.hs.stepper', this.el, this.currentIndex);\n\n\t\tthis.handleNextButtonClick(false);\n\t\tthis.showFinishButton();\n\t\tthis.showCompleteStepButton();\n\t\tthis.checkForTheFirstStep();\n\t\tif (this.completeStepBtn)\n\t\t\tthis.changeTextAndDisableCompleteButtonIfStepCompleted();\n\t\tthis.showSkipButton();\n\t}\n\n\t// finish\n\tprivate buildFinishButton() {\n\t\tif (!this.finishBtn) return;\n\n\t\tif (this.isCompleted) {\n\t\t\tthis.setCompleted();\n\t\t}\n\n\t\tthis.finishBtn.addEventListener('click', () =>\n\t\t\tthis.handleFinishButtonClick(),\n\t\t);\n\t}\n\n\tprivate setCompleted() {\n\t\tthis.el.classList.add('completed');\n\t}\n\n\tprivate unsetCompleted() {\n\t\tthis.el.classList.remove('completed');\n\t}\n\n\tprivate showFinishButton() {\n\t\tif (!this.finishBtn) return;\n\n\t\tconst nonCompletedSteps = this.getUncompletedSteps();\n\n\t\tif (nonCompletedSteps.length === 1) this.finishBtn.style.display = '';\n\t\telse this.finishBtn.style.display = 'none';\n\t}\n\n\tprivate handleFinishButtonClick() {\n\t\tconst uncompletedSteps = this.getUncompletedSteps();\n\t\tconst uncompletedOrSkipSteps = this.getUncompletedSteps(true);\n\t\tconst { el } = this.contentItems.find(({ isFinal }) => isFinal);\n\n\t\tif (uncompletedSteps.length)\n\t\t\tuncompletedSteps.forEach(({ index }) => this.setCompleteItem(index));\n\n\t\tthis.currentIndex = this.totalSteps;\n\n\t\tthis.setCurrentNavItem();\n\t\tthis.hideAllContentItems();\n\n\t\tconst currentNavItem = this.navItems.find(\n\t\t\t({ index }) => index === this.currentIndex,\n\t\t);\n\t\tconst currentNavItemEl = currentNavItem ? currentNavItem.el : null;\n\n\t\tcurrentNavItemEl.classList.remove('active');\n\n\t\tel.style.display = 'block';\n\t\tif (this.backBtn) this.backBtn.style.display = 'none';\n\t\tif (this.nextBtn) this.nextBtn.style.display = 'none';\n\t\tif (this.skipBtn) this.skipBtn.style.display = 'none';\n\t\tif (this.completeStepBtn) this.completeStepBtn.style.display = 'none';\n\t\tif (this.finishBtn) this.finishBtn.style.display = 'none';\n\t\tif (this.resetBtn) this.resetBtn.style.display = '';\n\n\t\tif (uncompletedOrSkipSteps.length <= 1) {\n\t\t\tthis.isCompleted = true;\n\t\t\tthis.setCompleted();\n\t\t}\n\n\t\tthis.fireEvent('finish', this.currentIndex);\n\t\tdispatch('finish.hs.stepper', this.el, this.currentIndex);\n\t}\n\n\t// reset\n\tprivate buildResetButton() {\n\t\tif (!this.resetBtn) return;\n\n\t\tthis.resetBtn.addEventListener('click', () =>\n\t\t\tthis.handleResetButtonClick(),\n\t\t);\n\t}\n\n\tprivate handleResetButtonClick() {\n\t\tif (this.backBtn) this.backBtn.style.display = '';\n\t\tif (this.nextBtn) this.nextBtn.style.display = '';\n\t\tif (this.completeStepBtn) {\n\t\t\tthis.completeStepBtn.style.display = '';\n\t\t\tthis.completeStepBtn.innerText = this.completeStepBtnDefaultText;\n\t\t\tthis.completeStepBtn.removeAttribute('disabled');\n\t\t\tthis.completeStepBtn.classList.remove('disabled');\n\t\t}\n\t\tif (this.resetBtn) this.resetBtn.style.display = 'none';\n\n\t\tthis.navItems.forEach((item) => {\n\t\t\tconst { el } = item;\n\t\t\titem.isSkip = false;\n\t\t\titem.isCompleted = false;\n\n\t\t\tthis.unsetCurrentNavItemActions(el);\n\t\t\tel.classList.remove('success', 'skipped');\n\t\t});\n\n\t\tthis.contentItems.forEach((item) => {\n\t\t\tconst { el } = item;\n\t\t\titem.isSkip = false;\n\t\t\titem.isCompleted = false;\n\n\t\t\tthis.unsetCurrentContentItemActions(el);\n\t\t\tel.classList.remove('success', 'skipped');\n\t\t});\n\n\t\tthis.currentIndex = 1;\n\t\tthis.unsetCompleted();\n\t\tthis.isCompleted = false;\n\n\t\tthis.setCurrentNavItem();\n\t\tthis.setCurrentContentItem();\n\t\tthis.showFinishButton();\n\t\tthis.showCompleteStepButton();\n\t\tthis.checkForTheFirstStep();\n\n\t\tthis.fireEvent('reset', this.currentIndex);\n\t\tdispatch('reset.hs.stepper', this.el, this.currentIndex);\n\t}\n\n\t// Public methods\n\tpublic setProcessedNavItem(n?: number) {\n\t\tconst targetNavItem = this.getNavItem(n);\n\n\t\tif (!targetNavItem) return;\n\n\t\tthis.setProcessedNavItemActions(targetNavItem);\n\t}\n\n\tpublic unsetProcessedNavItem(n?: number) {\n\t\tconst targetNavItem = this.getNavItem(n);\n\n\t\tif (!targetNavItem) return;\n\n\t\tthis.unsetProcessedNavItemActions(targetNavItem);\n\t}\n\n\tpublic goToNext() {\n\t\tif (this.mode === 'linear') this.setCompleteItem();\n\n\t\tthis.handleNextButtonClick(this.mode !== 'linear');\n\n\t\tif (this.mode === 'linear' && this.currentIndex === this.totalSteps) {\n\t\t\tif (this.nextBtn) this.nextBtn.style.display = 'none';\n\t\t\tif (this.completeStepBtn) this.completeStepBtn.style.display = 'none';\n\t\t}\n\t}\n\n\tpublic disableButtons() {\n\t\tif (this.backBtn) this.setToDisabled(this.backBtn);\n\t\tif (this.nextBtn) this.setToDisabled(this.nextBtn);\n\t}\n\n\tpublic enableButtons() {\n\t\tif (this.backBtn) this.setToNonDisabled(this.backBtn);\n\t\tif (this.nextBtn) this.setToNonDisabled(this.nextBtn);\n\t}\n\n\tpublic setErrorNavItem(n?: number) {\n\t\tconst targetNavItem = this.getNavItem(n);\n\n\t\tif (!targetNavItem) return;\n\n\t\tthis.setErrorNavItemActions(targetNavItem);\n\t}\n\n\t// Static methods\n\tstatic getInstance(target: HTMLElement | string, isInstance?: boolean) {\n\t\tconst elInCollection = window.$hsStepperCollection.find(\n\t\t\t(el) =>\n\t\t\t\tel.element.el ===\n\t\t\t\t(typeof target === 'string' ? document.querySelector(target) : target),\n\t\t);\n\n\t\treturn elInCollection\n\t\t\t? isInstance\n\t\t\t\t? elInCollection\n\t\t\t\t: elInCollection.element\n\t\t\t: null;\n\t}\n\n\tstatic autoInit() {\n\t\tif (!window.$hsStepperCollection) window.$hsStepperCollection = [];\n\n\t\tdocument\n\t\t\t.querySelectorAll('[data-hs-stepper]:not(.--prevent-on-load-init)')\n\t\t\t.forEach((el: HTMLElement) => {\n\t\t\t\tif (\n\t\t\t\t\t!window.$hsStepperCollection.find(\n\t\t\t\t\t\t(elC) => (elC?.element?.el as HTMLElement) === el,\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t\tnew HSStepper(el);\n\t\t\t});\n\t}\n}\n\ndeclare global {\n\tinterface Window {\n\t\tHSStepper: Function;\n\t\t$hsStepperCollection: ICollectionItem[];\n\t}\n}\n\nwindow.addEventListener('load', () => {\n\tHSStepper.autoInit();\n\n\t// Uncomment for debug\n\t// console.log('Stepper collection:', window.$hsStepperCollection);\n});\n\nif (typeof window !== 'undefined') {\n\twindow.HSStepper = HSStepper;\n}\n\nexport default HSStepper;\n","\"use strict\";\n/*\n * HSStrongPassword\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../../utils\");\nvar base_plugin_1 = __importDefault(require(\"../base-plugin\"));\nvar HSStrongPassword = /** @class */ (function (_super) {\n __extends(HSStrongPassword, _super);\n function HSStrongPassword(el, options) {\n var _this = _super.call(this, el, options) || this;\n _this.isOpened = false;\n _this.strength = 0;\n _this.passedRules = new Set();\n var data = el.getAttribute('data-hs-strong-password');\n var dataOptions = data ? JSON.parse(data) : {};\n var concatOptions = __assign(__assign({}, dataOptions), options);\n _this.target = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.target)\n ? typeof (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.target) === 'string'\n ? document.querySelector(concatOptions.target)\n : concatOptions.target\n : null;\n _this.hints = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.hints)\n ? typeof (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.hints) === 'string'\n ? document.querySelector(concatOptions.hints)\n : concatOptions.hints\n : null;\n _this.stripClasses = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.stripClasses) || null;\n _this.minLength = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.minLength) || 6;\n _this.mode = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.mode) || 'default';\n _this.popoverSpace = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.popoverSpace) || 10;\n _this.checksExclude = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.checksExclude) || [];\n _this.availableChecks = [\n 'lowercase',\n 'uppercase',\n 'numbers',\n 'special-characters',\n 'min-length',\n ].filter(function (el) { return !_this.checksExclude.includes(el); });\n _this.specialCharactersSet =\n (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.specialCharactersSet) ||\n '!\"#$%&\\'()*+,-./:;<=>?@[\\\\\\\\\\\\]^_`{|}~';\n if (_this.target)\n _this.init();\n return _this;\n }\n HSStrongPassword.prototype.init = function () {\n this.createCollection(window.$hsStrongPasswordCollection, this);\n if (this.availableChecks.length)\n this.build();\n };\n HSStrongPassword.prototype.build = function () {\n var _this = this;\n this.buildStrips();\n if (this.hints)\n this.buildHints();\n this.setStrength(this.target.value);\n this.target.addEventListener('input', function (evt) {\n _this.setStrength(evt.target.value);\n });\n };\n HSStrongPassword.prototype.buildStrips = function () {\n this.el.innerHTML = '';\n if (this.stripClasses) {\n for (var i = 0; i < this.availableChecks.length; i++) {\n var newStrip = (0, utils_1.htmlToElement)('
');\n (0, utils_1.classToClassList)(this.stripClasses, newStrip);\n this.el.append(newStrip);\n }\n }\n };\n HSStrongPassword.prototype.buildHints = function () {\n var _this = this;\n this.weakness =\n this.hints.querySelector('[data-hs-strong-password-hints-weakness-text]') || null;\n this.rules =\n Array.from(this.hints.querySelectorAll('[data-hs-strong-password-hints-rule-text]')) || null;\n this.rules.forEach(function (rule) {\n var _a;\n var ruleValue = rule.getAttribute('data-hs-strong-password-hints-rule-text');\n if ((_a = _this.checksExclude) === null || _a === void 0 ? void 0 : _a.includes(ruleValue))\n rule.remove();\n });\n if (this.weakness)\n this.buildWeakness();\n if (this.rules)\n this.buildRules();\n if (this.mode === 'popover') {\n this.target.addEventListener('focus', function () {\n _this.isOpened = true;\n _this.hints.classList.remove('hidden');\n _this.hints.classList.add('block');\n _this.recalculateDirection();\n });\n this.target.addEventListener('blur', function () {\n _this.isOpened = false;\n _this.hints.classList.remove('block', 'bottom-full', 'top-full');\n _this.hints.classList.add('hidden');\n _this.hints.style.marginTop = '';\n _this.hints.style.marginBottom = '';\n });\n }\n };\n HSStrongPassword.prototype.buildWeakness = function () {\n var _this = this;\n this.checkStrength(this.target.value);\n this.setWeaknessText();\n this.target.addEventListener('input', function () {\n return setTimeout(function () { return _this.setWeaknessText(); });\n });\n };\n HSStrongPassword.prototype.buildRules = function () {\n var _this = this;\n this.setRulesText();\n this.target.addEventListener('input', function () {\n return setTimeout(function () { return _this.setRulesText(); });\n });\n };\n HSStrongPassword.prototype.setWeaknessText = function () {\n var weaknessText = this.weakness.getAttribute('data-hs-strong-password-hints-weakness-text');\n var weaknessTextToJson = JSON.parse(weaknessText);\n this.weakness.textContent = weaknessTextToJson[this.strength];\n };\n HSStrongPassword.prototype.setRulesText = function () {\n var _this = this;\n this.rules.forEach(function (rule) {\n var ruleValue = rule.getAttribute('data-hs-strong-password-hints-rule-text');\n _this.checkIfPassed(rule, _this.passedRules.has(ruleValue));\n });\n };\n HSStrongPassword.prototype.togglePopover = function () {\n var popover = this.el.querySelector('.popover');\n if (popover)\n popover.classList.toggle('show');\n };\n HSStrongPassword.prototype.checkStrength = function (val) {\n var passedRules = new Set();\n var regexps = {\n lowercase: /[a-z]+/,\n uppercase: /[A-Z]+/,\n numbers: /[0-9]+/,\n 'special-characters': new RegExp(\"[\".concat(this.specialCharactersSet, \"]\")),\n };\n var strength = 0;\n if (this.availableChecks.includes('lowercase') &&\n val.match(regexps['lowercase'])) {\n strength += 1;\n passedRules.add('lowercase');\n }\n if (this.availableChecks.includes('uppercase') &&\n val.match(regexps['uppercase'])) {\n strength += 1;\n passedRules.add('uppercase');\n }\n if (this.availableChecks.includes('numbers') &&\n val.match(regexps['numbers'])) {\n strength += 1;\n passedRules.add('numbers');\n }\n if (this.availableChecks.includes('special-characters') &&\n val.match(regexps['special-characters'])) {\n strength += 1;\n passedRules.add('special-characters');\n }\n if (this.availableChecks.includes('min-length') &&\n val.length >= this.minLength) {\n strength += 1;\n passedRules.add('min-length');\n }\n if (!val.length) {\n strength = 0;\n }\n if (strength === this.availableChecks.length)\n this.el.classList.add('accepted');\n else\n this.el.classList.remove('accepted');\n this.strength = strength;\n this.passedRules = passedRules;\n return {\n strength: this.strength,\n rules: this.passedRules,\n };\n };\n HSStrongPassword.prototype.checkIfPassed = function (el, isRulePassed) {\n if (isRulePassed === void 0) { isRulePassed = false; }\n var check = el.querySelector('[data-check]');\n var uncheck = el.querySelector('[data-uncheck]');\n if (isRulePassed) {\n el.classList.add('active');\n check.classList.remove('hidden');\n uncheck.classList.add('hidden');\n }\n else {\n el.classList.remove('active');\n check.classList.add('hidden');\n uncheck.classList.remove('hidden');\n }\n };\n HSStrongPassword.prototype.setStrength = function (val) {\n var _a = this.checkStrength(val), strength = _a.strength, rules = _a.rules;\n var payload = {\n strength: strength,\n rules: rules,\n };\n this.hideStrips(strength);\n this.fireEvent('change', payload);\n (0, utils_1.dispatch)('change.hs.strongPassword', this.el, payload);\n };\n HSStrongPassword.prototype.hideStrips = function (qty) {\n Array.from(this.el.children).forEach(function (el, i) {\n if (i < qty)\n el.classList.add('passed');\n else\n el.classList.remove('passed');\n });\n };\n // Public methods\n HSStrongPassword.prototype.recalculateDirection = function () {\n if ((0, utils_1.isEnoughSpace)(this.hints, this.target, 'bottom', this.popoverSpace)) {\n this.hints.classList.remove('bottom-full');\n this.hints.classList.add('top-full');\n this.hints.style.marginBottom = '';\n this.hints.style.marginTop = \"\".concat(this.popoverSpace, \"px\");\n }\n else {\n this.hints.classList.remove('top-full');\n this.hints.classList.add('bottom-full');\n this.hints.style.marginTop = '';\n this.hints.style.marginBottom = \"\".concat(this.popoverSpace, \"px\");\n }\n };\n // Static methods\n HSStrongPassword.getInstance = function (target) {\n var elInCollection = window.$hsStrongPasswordCollection.find(function (el) {\n return el.element.el ===\n (typeof target === 'string' ? document.querySelector(target) : target);\n });\n return elInCollection ? elInCollection.element : null;\n };\n HSStrongPassword.autoInit = function () {\n if (!window.$hsStrongPasswordCollection)\n window.$hsStrongPasswordCollection = [];\n document\n .querySelectorAll('[data-hs-strong-password]:not(.--prevent-on-load-init)')\n .forEach(function (el) {\n if (!window.$hsStrongPasswordCollection.find(function (elC) { var _a; return ((_a = elC === null || elC === void 0 ? void 0 : elC.element) === null || _a === void 0 ? void 0 : _a.el) === el; })) {\n var data = el.getAttribute('data-hs-strong-password');\n var options = data ? JSON.parse(data) : {};\n new HSStrongPassword(el, options);\n }\n });\n };\n return HSStrongPassword;\n}(base_plugin_1.default));\nwindow.addEventListener('load', function () {\n HSStrongPassword.autoInit();\n // Uncomment for debug\n // console.log('Strong password collection:', window.$hsStrongPasswordCollection);\n});\ndocument.addEventListener('scroll', function () {\n if (!window.$hsStrongPasswordCollection)\n return false;\n var target = window.$hsStrongPasswordCollection.find(function (el) { return el.element.isOpened; });\n if (target)\n target.element.recalculateDirection();\n});\nif (typeof window !== 'undefined') {\n window.HSStrongPassword = HSStrongPassword;\n}\nexports.default = HSStrongPassword;\n","/*\n * HSStrongPassword\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\n\nimport {\n\tisEnoughSpace,\n\tdispatch,\n\thtmlToElement,\n\tclassToClassList,\n} from '../../utils';\n\nimport {\n\tIStrongPasswordOptions,\n\tIStrongPassword,\n} from '../strong-password/interfaces';\n\nimport HSBasePlugin from '../base-plugin';\nimport { ICollectionItem } from '../../interfaces';\n\nclass HSStrongPassword\n\textends HSBasePlugin\n\timplements IStrongPassword\n{\n\tprivate readonly target: string | HTMLInputElement | null;\n\tprivate readonly hints: string | HTMLElement | null;\n\tprivate readonly stripClasses: string | null;\n\tprivate readonly minLength: number;\n\tprivate readonly mode: string;\n\tprivate readonly popoverSpace: number;\n\tprivate readonly checksExclude: string[] | null;\n\tprivate readonly specialCharactersSet: string | null;\n\n\tpublic isOpened: boolean = false;\n\tprivate strength: number = 0;\n\tprivate passedRules: Set = new Set();\n\tprivate weakness: HTMLElement | null;\n\tprivate rules: HTMLElement[] | null;\n\tprivate availableChecks: string[] | null;\n\n\tconstructor(el: HTMLElement, options?: IStrongPasswordOptions) {\n\t\tsuper(el, options);\n\n\t\tconst data = el.getAttribute('data-hs-strong-password');\n\t\tconst dataOptions: IStrongPasswordOptions = data ? JSON.parse(data) : {};\n\t\tconst concatOptions = {\n\t\t\t...dataOptions,\n\t\t\t...options,\n\t\t};\n\n\t\tthis.target = concatOptions?.target\n\t\t\t? typeof concatOptions?.target === 'string'\n\t\t\t\t? (document.querySelector(concatOptions.target) as HTMLInputElement)\n\t\t\t\t: concatOptions.target\n\t\t\t: null;\n\t\tthis.hints = concatOptions?.hints\n\t\t\t? typeof concatOptions?.hints === 'string'\n\t\t\t\t? (document.querySelector(concatOptions.hints) as HTMLElement)\n\t\t\t\t: concatOptions.hints\n\t\t\t: null;\n\t\tthis.stripClasses = concatOptions?.stripClasses || null;\n\t\tthis.minLength = concatOptions?.minLength || 6;\n\t\tthis.mode = concatOptions?.mode || 'default';\n\t\tthis.popoverSpace = concatOptions?.popoverSpace || 10;\n\t\tthis.checksExclude = concatOptions?.checksExclude || [];\n\t\tthis.availableChecks = [\n\t\t\t'lowercase',\n\t\t\t'uppercase',\n\t\t\t'numbers',\n\t\t\t'special-characters',\n\t\t\t'min-length',\n\t\t].filter((el) => !this.checksExclude.includes(el));\n\t\tthis.specialCharactersSet =\n\t\t\tconcatOptions?.specialCharactersSet ||\n\t\t\t'!\"#$%&\\'()*+,-./:;<=>?@[\\\\\\\\\\\\]^_`{|}~';\n\n\t\tif (this.target) this.init();\n\t}\n\n\tprivate init() {\n\t\tthis.createCollection(window.$hsStrongPasswordCollection, this);\n\n\t\tif (this.availableChecks.length) this.build();\n\t}\n\n\tprivate build() {\n\t\tthis.buildStrips();\n\t\tif (this.hints) this.buildHints();\n\n\t\tthis.setStrength((this.target as HTMLInputElement).value);\n\n\t\t(this.target as HTMLInputElement).addEventListener(\n\t\t\t'input',\n\t\t\t(evt: InputEvent) => {\n\t\t\t\tthis.setStrength((evt.target as HTMLInputElement).value);\n\t\t\t},\n\t\t);\n\t}\n\n\tprivate buildStrips() {\n\t\tthis.el.innerHTML = '';\n\n\t\tif (this.stripClasses) {\n\t\t\tfor (let i = 0; i < this.availableChecks.length; i++) {\n\t\t\t\tconst newStrip = htmlToElement('
');\n\t\t\t\tclassToClassList(this.stripClasses, newStrip);\n\n\t\t\t\tthis.el.append(newStrip);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate buildHints() {\n\t\tthis.weakness =\n\t\t\t(this.hints as HTMLElement).querySelector(\n\t\t\t\t'[data-hs-strong-password-hints-weakness-text]',\n\t\t\t) || null;\n\t\tthis.rules =\n\t\t\tArray.from(\n\t\t\t\t(this.hints as HTMLElement).querySelectorAll(\n\t\t\t\t\t'[data-hs-strong-password-hints-rule-text]',\n\t\t\t\t),\n\t\t\t) || null;\n\n\t\tthis.rules.forEach((rule) => {\n\t\t\tconst ruleValue = rule.getAttribute(\n\t\t\t\t'data-hs-strong-password-hints-rule-text',\n\t\t\t);\n\n\t\t\tif (this.checksExclude?.includes(ruleValue)) rule.remove();\n\t\t});\n\n\t\tif (this.weakness) this.buildWeakness();\n\t\tif (this.rules) this.buildRules();\n\t\tif (this.mode === 'popover') {\n\t\t\t(this.target as HTMLInputElement).addEventListener('focus', () => {\n\t\t\t\tthis.isOpened = true;\n\t\t\t\t(this.hints as HTMLElement).classList.remove('hidden');\n\t\t\t\t(this.hints as HTMLElement).classList.add('block');\n\n\t\t\t\tthis.recalculateDirection();\n\t\t\t});\n\n\t\t\t(this.target as HTMLInputElement).addEventListener('blur', () => {\n\t\t\t\tthis.isOpened = false;\n\t\t\t\t(this.hints as HTMLElement).classList.remove(\n\t\t\t\t\t'block',\n\t\t\t\t\t'bottom-full',\n\t\t\t\t\t'top-full',\n\t\t\t\t);\n\t\t\t\t(this.hints as HTMLElement).classList.add('hidden');\n\t\t\t\t(this.hints as HTMLElement).style.marginTop = '';\n\t\t\t\t(this.hints as HTMLElement).style.marginBottom = '';\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate buildWeakness() {\n\t\tthis.checkStrength((this.target as HTMLInputElement).value);\n\t\tthis.setWeaknessText();\n\n\t\t(this.target as HTMLInputElement).addEventListener('input', () =>\n\t\t\tsetTimeout(() => this.setWeaknessText()),\n\t\t);\n\t}\n\n\tprivate buildRules() {\n\t\tthis.setRulesText();\n\n\t\t(this.target as HTMLInputElement).addEventListener('input', () =>\n\t\t\tsetTimeout(() => this.setRulesText()),\n\t\t);\n\t}\n\n\tprivate setWeaknessText() {\n\t\tconst weaknessText = this.weakness.getAttribute(\n\t\t\t'data-hs-strong-password-hints-weakness-text',\n\t\t);\n\t\tconst weaknessTextToJson = JSON.parse(weaknessText as string);\n\n\t\tthis.weakness.textContent = weaknessTextToJson[this.strength];\n\t}\n\n\tprivate setRulesText() {\n\t\tthis.rules.forEach((rule) => {\n\t\t\tconst ruleValue = rule.getAttribute(\n\t\t\t\t'data-hs-strong-password-hints-rule-text',\n\t\t\t);\n\n\t\t\tthis.checkIfPassed(rule, this.passedRules.has(ruleValue));\n\t\t});\n\t}\n\n\tprivate togglePopover() {\n\t\tconst popover = this.el.querySelector('.popover');\n\n\t\tif (popover) popover.classList.toggle('show');\n\t}\n\n\tprivate checkStrength(val: string): { strength: number; rules: Set } {\n\t\tconst passedRules = new Set();\n\t\tconst regexps = {\n\t\t\tlowercase: /[a-z]+/,\n\t\t\tuppercase: /[A-Z]+/,\n\t\t\tnumbers: /[0-9]+/,\n\t\t\t'special-characters': new RegExp(`[${this.specialCharactersSet}]`),\n\t\t};\n\t\tlet strength = 0;\n\n\t\tif (\n\t\t\tthis.availableChecks.includes('lowercase') &&\n\t\t\tval.match(regexps['lowercase'])\n\t\t) {\n\t\t\tstrength += 1;\n\t\t\tpassedRules.add('lowercase');\n\t\t}\n\t\tif (\n\t\t\tthis.availableChecks.includes('uppercase') &&\n\t\t\tval.match(regexps['uppercase'])\n\t\t) {\n\t\t\tstrength += 1;\n\t\t\tpassedRules.add('uppercase');\n\t\t}\n\t\tif (\n\t\t\tthis.availableChecks.includes('numbers') &&\n\t\t\tval.match(regexps['numbers'])\n\t\t) {\n\t\t\tstrength += 1;\n\t\t\tpassedRules.add('numbers');\n\t\t}\n\t\tif (\n\t\t\tthis.availableChecks.includes('special-characters') &&\n\t\t\tval.match(regexps['special-characters'])\n\t\t) {\n\t\t\tstrength += 1;\n\t\t\tpassedRules.add('special-characters');\n\t\t}\n\t\tif (\n\t\t\tthis.availableChecks.includes('min-length') &&\n\t\t\tval.length >= this.minLength\n\t\t) {\n\t\t\tstrength += 1;\n\t\t\tpassedRules.add('min-length');\n\t\t}\n\t\tif (!val.length) {\n\t\t\tstrength = 0;\n\t\t}\n\n\t\tif (strength === this.availableChecks.length)\n\t\t\tthis.el.classList.add('accepted');\n\t\telse this.el.classList.remove('accepted');\n\n\t\tthis.strength = strength;\n\t\tthis.passedRules = passedRules;\n\n\t\treturn {\n\t\t\tstrength: this.strength,\n\t\t\trules: this.passedRules,\n\t\t};\n\t}\n\n\tprivate checkIfPassed(el: HTMLElement, isRulePassed = false) {\n\t\tconst check = el.querySelector('[data-check]');\n\t\tconst uncheck = el.querySelector('[data-uncheck]');\n\n\t\tif (isRulePassed) {\n\t\t\tel.classList.add('active');\n\t\t\tcheck.classList.remove('hidden');\n\t\t\tuncheck.classList.add('hidden');\n\t\t} else {\n\t\t\tel.classList.remove('active');\n\t\t\tcheck.classList.add('hidden');\n\t\t\tuncheck.classList.remove('hidden');\n\t\t}\n\t}\n\n\tprivate setStrength(val: string) {\n\t\tconst { strength, rules } = this.checkStrength(val);\n\t\tconst payload = {\n\t\t\tstrength,\n\t\t\trules,\n\t\t};\n\n\t\tthis.hideStrips(strength);\n\n\t\tthis.fireEvent('change', payload);\n\t\tdispatch('change.hs.strongPassword', this.el, payload);\n\t}\n\n\tprivate hideStrips(qty: number) {\n\t\tArray.from(this.el.children).forEach((el: HTMLElement, i: number) => {\n\t\t\tif (i < qty) el.classList.add('passed');\n\t\t\telse el.classList.remove('passed');\n\t\t});\n\t}\n\n\t// Public methods\n\tpublic recalculateDirection() {\n\t\tif (\n\t\t\tisEnoughSpace(\n\t\t\t\tthis.hints as HTMLElement,\n\t\t\t\tthis.target as HTMLInputElement,\n\t\t\t\t'bottom',\n\t\t\t\tthis.popoverSpace,\n\t\t\t)\n\t\t) {\n\t\t\t(this.hints as HTMLElement).classList.remove('bottom-full');\n\t\t\t(this.hints as HTMLElement).classList.add('top-full');\n\t\t\t(this.hints as HTMLElement).style.marginBottom = '';\n\t\t\t(this.hints as HTMLElement).style.marginTop = `${this.popoverSpace}px`;\n\t\t} else {\n\t\t\t(this.hints as HTMLElement).classList.remove('top-full');\n\t\t\t(this.hints as HTMLElement).classList.add('bottom-full');\n\t\t\t(this.hints as HTMLElement).style.marginTop = '';\n\t\t\t(this.hints as HTMLElement).style.marginBottom = `${this.popoverSpace}px`;\n\t\t}\n\t}\n\n\t// Static methods\n\tstatic getInstance(target: HTMLElement | string) {\n\t\tconst elInCollection = window.$hsStrongPasswordCollection.find(\n\t\t\t(el) =>\n\t\t\t\tel.element.el ===\n\t\t\t\t(typeof target === 'string' ? document.querySelector(target) : target),\n\t\t);\n\n\t\treturn elInCollection ? elInCollection.element : null;\n\t}\n\n\tstatic autoInit() {\n\t\tif (!window.$hsStrongPasswordCollection)\n\t\t\twindow.$hsStrongPasswordCollection = [];\n\n\t\tdocument\n\t\t\t.querySelectorAll(\n\t\t\t\t'[data-hs-strong-password]:not(.--prevent-on-load-init)',\n\t\t\t)\n\t\t\t.forEach((el: HTMLElement) => {\n\t\t\t\tif (\n\t\t\t\t\t!window.$hsStrongPasswordCollection.find(\n\t\t\t\t\t\t(elC) => (elC?.element?.el as HTMLElement) === el,\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tconst data = el.getAttribute('data-hs-strong-password');\n\t\t\t\t\tconst options: IStrongPasswordOptions = data ? JSON.parse(data) : {};\n\n\t\t\t\t\tnew HSStrongPassword(el, options);\n\t\t\t\t}\n\t\t\t});\n\t}\n}\n\ndeclare global {\n\tinterface Window {\n\t\tHSStrongPassword: Function;\n\t\t$hsStrongPasswordCollection: ICollectionItem[];\n\t}\n}\n\nwindow.addEventListener('load', () => {\n\tHSStrongPassword.autoInit();\n\n\t// Uncomment for debug\n\t// console.log('Strong password collection:', window.$hsStrongPasswordCollection);\n});\n\ndocument.addEventListener('scroll', () => {\n\tif (!window.$hsStrongPasswordCollection) return false;\n\n\tconst target = window.$hsStrongPasswordCollection.find(\n\t\t(el) => el.element.isOpened,\n\t);\n\n\tif (target) target.element.recalculateDirection();\n});\n\nif (typeof window !== 'undefined') {\n\twindow.HSStrongPassword = HSStrongPassword;\n}\n\nexport default HSStrongPassword;\n","\"use strict\";\n/*\n * HSTabs\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../../utils\");\nvar base_plugin_1 = __importDefault(require(\"../base-plugin\"));\nvar constants_1 = require(\"../../constants\");\nvar HSTabs = /** @class */ (function (_super) {\n __extends(HSTabs, _super);\n function HSTabs(el, options, events) {\n var _this = _super.call(this, el, options, events) || this;\n _this.toggles = _this.el.querySelectorAll('[data-hs-tab]');\n _this.extraToggleId = _this.el.getAttribute('data-hs-tab-select');\n _this.extraToggle = document.querySelector(_this.extraToggleId);\n _this.current = Array.from(_this.toggles).find(function (el) {\n return el.classList.contains('active');\n });\n _this.currentContentId = _this.current.getAttribute('data-hs-tab');\n _this.currentContent = document.querySelector(_this.currentContentId);\n _this.prev = null;\n _this.prevContentId = null;\n _this.prevContent = null;\n _this.init();\n return _this;\n }\n HSTabs.prototype.init = function () {\n var _this = this;\n this.createCollection(window.$hsTabsCollection, this);\n this.toggles.forEach(function (el) {\n el.addEventListener('click', function () { return _this.open(el); });\n });\n if (this.extraToggle) {\n this.extraToggle.addEventListener('change', function (evt) { return _this.change(evt); });\n }\n };\n HSTabs.prototype.open = function (el) {\n var _a, _b;\n this.prev = this.current;\n this.prevContentId = this.currentContentId;\n this.prevContent = this.currentContent;\n this.current = el;\n this.currentContentId = this.current.getAttribute('data-hs-tab');\n this.currentContent = document.querySelector(this.currentContentId);\n if ((_a = this === null || this === void 0 ? void 0 : this.prev) === null || _a === void 0 ? void 0 : _a.ariaSelected)\n this.prev.ariaSelected = 'false';\n this.prev.classList.remove('active');\n this.prevContent.classList.add('hidden');\n if ((_b = this === null || this === void 0 ? void 0 : this.current) === null || _b === void 0 ? void 0 : _b.ariaSelected)\n this.current.ariaSelected = 'true';\n this.current.classList.add('active');\n this.currentContent.classList.remove('hidden');\n this.fireEvent('change', {\n el: el,\n prev: this.prevContentId,\n current: this.currentContentId,\n });\n (0, utils_1.dispatch)('change.hs.tab', el, {\n el: el,\n prev: this.prevContentId,\n current: this.currentContentId,\n });\n };\n HSTabs.prototype.change = function (evt) {\n var toggle = document.querySelector(\"[data-hs-tab=\\\"\".concat(evt.target.value, \"\\\"]\"));\n if (toggle)\n toggle.click();\n };\n // Static methods\n HSTabs.getInstance = function (target, isInstance) {\n var elInCollection = window.$hsTabsCollection.find(function (el) {\n return el.element.el ===\n (typeof target === 'string' ? document.querySelector(target) : target);\n });\n return elInCollection\n ? isInstance\n ? elInCollection\n : elInCollection.element\n : null;\n };\n HSTabs.autoInit = function () {\n if (!window.$hsTabsCollection)\n window.$hsTabsCollection = [];\n document\n .querySelectorAll('[role=\"tablist\"]:not(select):not(.--prevent-on-load-init)')\n .forEach(function (el) {\n if (!window.$hsTabsCollection.find(function (elC) { var _a; return ((_a = elC === null || elC === void 0 ? void 0 : elC.element) === null || _a === void 0 ? void 0 : _a.el) === el; }))\n new HSTabs(el);\n });\n if (window.$hsTabsCollection)\n document.addEventListener('keydown', function (evt) { return HSTabs.accessibility(evt); });\n };\n HSTabs.open = function (target) {\n var elInCollection = window.$hsTabsCollection.find(function (el) {\n return Array.from(el.element.toggles).includes(typeof target === 'string' ? document.querySelector(target) : target);\n });\n var targetInCollection = Array.from(elInCollection.element.toggles).find(function (el) {\n return el ===\n (typeof target === 'string' ? document.querySelector(target) : target);\n });\n if (targetInCollection && !targetInCollection.classList.contains('active'))\n elInCollection.element.open(targetInCollection);\n };\n // Accessibility methods\n HSTabs.accessibility = function (evt) {\n var target = document.querySelector('[data-hs-tab]:focus');\n if (target &&\n constants_1.TABS_ACCESSIBILITY_KEY_SET.includes(evt.code) &&\n !evt.metaKey) {\n var isVertical = target\n .closest('[role=\"tablist\"]')\n .getAttribute('data-hs-tabs-vertical');\n evt.preventDefault();\n switch (evt.code) {\n case isVertical === 'true' ? 'ArrowUp' : 'ArrowLeft':\n this.onArrow();\n break;\n case isVertical === 'true' ? 'ArrowDown' : 'ArrowRight':\n this.onArrow(false);\n break;\n case 'Home':\n this.onStartEnd();\n break;\n case 'End':\n this.onStartEnd(false);\n break;\n default:\n break;\n }\n }\n };\n HSTabs.onArrow = function (isOpposite) {\n if (isOpposite === void 0) { isOpposite = true; }\n var target = document\n .querySelector('[data-hs-tab]:focus')\n .closest('[role=\"tablist\"]');\n var targetInCollection = window.$hsTabsCollection.find(function (el) { return el.element.el === target; });\n if (targetInCollection) {\n var toggles = isOpposite\n ? Array.from(targetInCollection.element.toggles).reverse()\n : Array.from(targetInCollection.element.toggles);\n var focused_1 = toggles.find(function (el) { return document.activeElement === el; });\n var focusedInd = toggles.findIndex(function (el) { return el === focused_1; });\n focusedInd = focusedInd + 1 < toggles.length ? focusedInd + 1 : 0;\n toggles[focusedInd].focus();\n toggles[focusedInd].click();\n }\n };\n HSTabs.onStartEnd = function (isOpposite) {\n if (isOpposite === void 0) { isOpposite = true; }\n var target = document\n .querySelector('[data-hs-tab]:focus')\n .closest('[role=\"tablist\"]');\n var targetInCollection = window.$hsTabsCollection.find(function (el) { return el.element.el === target; });\n if (targetInCollection) {\n var toggles = isOpposite\n ? Array.from(targetInCollection.element.toggles)\n : Array.from(targetInCollection.element.toggles).reverse();\n if (toggles.length) {\n toggles[0].focus();\n toggles[0].click();\n }\n }\n };\n // Backward compatibility\n HSTabs.on = function (evt, target, cb) {\n var elInCollection = window.$hsTabsCollection.find(function (el) {\n return Array.from(el.element.toggles).includes(typeof target === 'string' ? document.querySelector(target) : target);\n });\n if (elInCollection)\n elInCollection.element.events[evt] = cb;\n };\n return HSTabs;\n}(base_plugin_1.default));\nwindow.addEventListener('load', function () {\n HSTabs.autoInit();\n // Uncomment for debug\n // console.log('Tabs collection:', window.$hsTabsCollection);\n});\nif (typeof window !== 'undefined') {\n window.HSTabs = HSTabs;\n}\nexports.default = HSTabs;\n","/*\n * HSTabs\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\n\nimport { dispatch } from '../../utils';\n\nimport { ITabs } from '../tabs/interfaces';\n\nimport HSBasePlugin from '../base-plugin';\nimport { ICollectionItem } from '../../interfaces';\n\nimport { TABS_ACCESSIBILITY_KEY_SET } from '../../constants';\n\nclass HSTabs extends HSBasePlugin<{}> implements ITabs {\n\tpublic toggles: NodeListOf | null;\n\tprivate readonly extraToggleId: string | null;\n\tprivate readonly extraToggle: HTMLSelectElement | null;\n\tprivate current: HTMLElement | null;\n\tprivate currentContentId: string | null;\n\tpublic currentContent: HTMLElement | null;\n\tprivate prev: HTMLElement | null;\n\tprivate prevContentId: string | null;\n\tprivate prevContent: HTMLElement | null;\n\n\tconstructor(el: HTMLElement, options?: {}, events?: {}) {\n\t\tsuper(el, options, events);\n\n\t\tthis.toggles = this.el.querySelectorAll('[data-hs-tab]');\n\t\tthis.extraToggleId = this.el.getAttribute('data-hs-tab-select');\n\t\tthis.extraToggle = document.querySelector(this.extraToggleId);\n\t\tthis.current = Array.from(this.toggles).find((el) =>\n\t\t\tel.classList.contains('active'),\n\t\t);\n\t\tthis.currentContentId = this.current.getAttribute('data-hs-tab');\n\t\tthis.currentContent = document.querySelector(this.currentContentId);\n\t\tthis.prev = null;\n\t\tthis.prevContentId = null;\n\t\tthis.prevContent = null;\n\n\t\tthis.init();\n\t}\n\n\tprivate init() {\n\t\tthis.createCollection(window.$hsTabsCollection, this);\n\n\t\tthis.toggles.forEach((el) => {\n\t\t\tel.addEventListener('click', () => this.open(el));\n\t\t});\n\n\t\tif (this.extraToggle) {\n\t\t\tthis.extraToggle.addEventListener('change', (evt) => this.change(evt));\n\t\t}\n\t}\n\n\tprivate open(el: HTMLElement) {\n\t\tthis.prev = this.current;\n\t\tthis.prevContentId = this.currentContentId;\n\t\tthis.prevContent = this.currentContent;\n\n\t\tthis.current = el;\n\t\tthis.currentContentId = this.current.getAttribute('data-hs-tab');\n\t\tthis.currentContent = document.querySelector(this.currentContentId);\n\n\t\tif (this?.prev?.ariaSelected) this.prev.ariaSelected = 'false';\n\t\tthis.prev.classList.remove('active');\n\t\tthis.prevContent.classList.add('hidden');\n\n\t\tif (this?.current?.ariaSelected) this.current.ariaSelected = 'true';\n\t\tthis.current.classList.add('active');\n\t\tthis.currentContent.classList.remove('hidden');\n\n\t\tthis.fireEvent('change', {\n\t\t\tel,\n\t\t\tprev: this.prevContentId,\n\t\t\tcurrent: this.currentContentId,\n\t\t});\n\t\tdispatch('change.hs.tab', el, {\n\t\t\tel,\n\t\t\tprev: this.prevContentId,\n\t\t\tcurrent: this.currentContentId,\n\t\t});\n\t}\n\n\tprivate change(evt: Event) {\n\t\tconst toggle: HTMLElement = document.querySelector(\n\t\t\t`[data-hs-tab=\"${(evt.target as HTMLSelectElement).value}\"]`,\n\t\t);\n\n\t\tif (toggle) toggle.click();\n\t}\n\n\t// Static methods\n\tstatic getInstance(target: HTMLElement | string, isInstance?: boolean) {\n\t\tconst elInCollection = window.$hsTabsCollection.find(\n\t\t\t(el) =>\n\t\t\t\tel.element.el ===\n\t\t\t\t(typeof target === 'string' ? document.querySelector(target) : target),\n\t\t);\n\n\t\treturn elInCollection\n\t\t\t? isInstance\n\t\t\t\t? elInCollection\n\t\t\t\t: elInCollection.element\n\t\t\t: null;\n\t}\n\n\tstatic autoInit() {\n\t\tif (!window.$hsTabsCollection) window.$hsTabsCollection = [];\n\n\t\tdocument\n\t\t\t.querySelectorAll(\n\t\t\t\t'[role=\"tablist\"]:not(select):not(.--prevent-on-load-init)',\n\t\t\t)\n\t\t\t.forEach((el: HTMLElement) => {\n\t\t\t\tif (\n\t\t\t\t\t!window.$hsTabsCollection.find(\n\t\t\t\t\t\t(elC) => (elC?.element?.el as HTMLElement) === el,\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t\tnew HSTabs(el);\n\t\t\t});\n\n\t\tif (window.$hsTabsCollection)\n\t\t\tdocument.addEventListener('keydown', (evt) => HSTabs.accessibility(evt));\n\t}\n\n\tstatic open(target: HTMLElement) {\n\t\tconst elInCollection = window.$hsTabsCollection.find((el) =>\n\t\t\tArray.from(el.element.toggles).includes(\n\t\t\t\ttypeof target === 'string' ? document.querySelector(target) : target,\n\t\t\t),\n\t\t);\n\t\tconst targetInCollection = Array.from(elInCollection.element.toggles).find(\n\t\t\t(el) =>\n\t\t\t\tel ===\n\t\t\t\t(typeof target === 'string' ? document.querySelector(target) : target),\n\t\t);\n\n\t\tif (targetInCollection && !targetInCollection.classList.contains('active'))\n\t\t\telInCollection.element.open(targetInCollection);\n\t}\n\n\t// Accessibility methods\n\tstatic accessibility(evt: KeyboardEvent) {\n\t\tconst target = document.querySelector('[data-hs-tab]:focus');\n\n\t\tif (\n\t\t\ttarget &&\n\t\t\tTABS_ACCESSIBILITY_KEY_SET.includes(evt.code) &&\n\t\t\t!evt.metaKey\n\t\t) {\n\t\t\tconst isVertical = target\n\t\t\t\t.closest('[role=\"tablist\"]')\n\t\t\t\t.getAttribute('data-hs-tabs-vertical');\n\n\t\t\tevt.preventDefault();\n\n\t\t\tswitch (evt.code) {\n\t\t\t\tcase isVertical === 'true' ? 'ArrowUp' : 'ArrowLeft':\n\t\t\t\t\tthis.onArrow();\n\t\t\t\t\tbreak;\n\t\t\t\tcase isVertical === 'true' ? 'ArrowDown' : 'ArrowRight':\n\t\t\t\t\tthis.onArrow(false);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'Home':\n\t\t\t\t\tthis.onStartEnd();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'End':\n\t\t\t\t\tthis.onStartEnd(false);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tstatic onArrow(isOpposite = true) {\n\t\tconst target = document\n\t\t\t.querySelector('[data-hs-tab]:focus')\n\t\t\t.closest('[role=\"tablist\"]');\n\t\tconst targetInCollection = window.$hsTabsCollection.find(\n\t\t\t(el) => el.element.el === target,\n\t\t);\n\n\t\tif (targetInCollection) {\n\t\t\tconst toggles = isOpposite\n\t\t\t\t? Array.from(targetInCollection.element.toggles).reverse()\n\t\t\t\t: Array.from(targetInCollection.element.toggles);\n\t\t\tconst focused = toggles.find((el) => document.activeElement === el);\n\t\t\tlet focusedInd = toggles.findIndex((el: any) => el === focused);\n\t\t\tfocusedInd = focusedInd + 1 < toggles.length ? focusedInd + 1 : 0;\n\n\t\t\ttoggles[focusedInd].focus();\n\t\t\ttoggles[focusedInd].click();\n\t\t}\n\t}\n\n\tstatic onStartEnd(isOpposite = true) {\n\t\tconst target = document\n\t\t\t.querySelector('[data-hs-tab]:focus')\n\t\t\t.closest('[role=\"tablist\"]');\n\t\tconst targetInCollection = window.$hsTabsCollection.find(\n\t\t\t(el) => el.element.el === target,\n\t\t);\n\n\t\tif (targetInCollection) {\n\t\t\tconst toggles = isOpposite\n\t\t\t\t? Array.from(targetInCollection.element.toggles)\n\t\t\t\t: Array.from(targetInCollection.element.toggles).reverse();\n\n\t\t\tif (toggles.length) {\n\t\t\t\ttoggles[0].focus();\n\t\t\t\ttoggles[0].click();\n\t\t\t}\n\t\t}\n\t}\n\n\t// Backward compatibility\n\tstatic on(evt: string, target: HTMLElement, cb: Function) {\n\t\tconst elInCollection = window.$hsTabsCollection.find((el) =>\n\t\t\tArray.from(el.element.toggles).includes(\n\t\t\t\ttypeof target === 'string' ? document.querySelector(target) : target,\n\t\t\t),\n\t\t);\n\n\t\tif (elInCollection) elInCollection.element.events[evt] = cb;\n\t}\n}\n\ndeclare global {\n\tinterface Window {\n\t\tHSTabs: Function;\n\t\t$hsTabsCollection: ICollectionItem[];\n\t}\n}\n\nwindow.addEventListener('load', () => {\n\tHSTabs.autoInit();\n\n\t// Uncomment for debug\n\t// console.log('Tabs collection:', window.$hsTabsCollection);\n});\n\nif (typeof window !== 'undefined') {\n\twindow.HSTabs = HSTabs;\n}\n\nexport default HSTabs;\n","\"use strict\";\n/*\n * HSTextareaAutoHeight\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar base_plugin_1 = __importDefault(require(\"../base-plugin\"));\nvar HSTextareaAutoHeight = /** @class */ (function (_super) {\n __extends(HSTextareaAutoHeight, _super);\n function HSTextareaAutoHeight(el, options) {\n var _this = _super.call(this, el, options) || this;\n var data = el.getAttribute('data-hs-copy-markup');\n var dataOptions = data\n ? JSON.parse(data)\n : {};\n var concatOptions = __assign(__assign({}, dataOptions), options);\n _this.defaultHeight = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.defaultHeight) || 0;\n _this.init();\n return _this;\n }\n HSTextareaAutoHeight.prototype.init = function () {\n this.createCollection(window.$hsTextareaAutoHeightCollection, this);\n this.setAutoHeight();\n };\n HSTextareaAutoHeight.prototype.setAutoHeight = function () {\n var _this = this;\n if (this.isParentHidden())\n this.callbackAccordingToType();\n else\n this.textareaSetHeight(3);\n this.el.addEventListener('input', function () { return _this.textareaSetHeight(3); });\n };\n HSTextareaAutoHeight.prototype.textareaSetHeight = function (offsetTop) {\n if (offsetTop === void 0) { offsetTop = 0; }\n this.el.style.height = 'auto';\n this.el.style.height =\n this.checkIfOneLine() && this.defaultHeight\n ? \"\".concat(this.defaultHeight, \"px\")\n : \"\".concat(this.el.scrollHeight + offsetTop, \"px\");\n };\n HSTextareaAutoHeight.prototype.checkIfOneLine = function () {\n var clientHeight = this.el.clientHeight;\n var scrollHeight = this.el.scrollHeight;\n if (scrollHeight > clientHeight)\n return false;\n else\n return true;\n };\n HSTextareaAutoHeight.prototype.isParentHidden = function () {\n return this.el.closest('.hs-collapse') || this.el.closest('.hs-overlay');\n };\n HSTextareaAutoHeight.prototype.parentType = function () {\n if (this.el.closest('.hs-collapse'))\n return 'collapse';\n else if (this.el.closest('.hs-overlay'))\n return 'overlay';\n else\n return false;\n };\n HSTextareaAutoHeight.prototype.callbackAccordingToType = function () {\n var _this = this;\n if (this.parentType() === 'collapse') {\n var collapseId = this.el.closest('.hs-collapse').id;\n var element = window.HSCollapse.getInstance(\"[data-hs-collapse=\\\"#\".concat(collapseId, \"\\\"]\"), true).element;\n element.on('beforeOpen', function () {\n if (!_this.el)\n return false;\n _this.textareaSetHeight(3);\n });\n }\n else if (this.parentType() === 'overlay') {\n var element = window.HSOverlay.getInstance(this.el.closest('.hs-overlay'), true).element;\n element.on('open', function () {\n if (!_this.el)\n return false;\n _this.textareaSetHeight(3);\n });\n }\n else\n return false;\n };\n // Static method\n HSTextareaAutoHeight.getInstance = function (target, isInstance) {\n var elInCollection = window.$hsTextareaAutoHeightCollection.find(function (el) {\n return el.element.el ===\n (typeof target === 'string' ? document.querySelector(target) : target);\n });\n return elInCollection\n ? isInstance\n ? elInCollection\n : elInCollection.element\n : null;\n };\n HSTextareaAutoHeight.autoInit = function () {\n if (!window.$hsTextareaAutoHeightCollection)\n window.$hsTextareaAutoHeightCollection = [];\n document\n .querySelectorAll('[data-hs-textarea-auto-height]:not(.--prevent-on-load-init)')\n .forEach(function (el) {\n if (!window.$hsTextareaAutoHeightCollection.find(function (elC) { var _a; return ((_a = elC === null || elC === void 0 ? void 0 : elC.element) === null || _a === void 0 ? void 0 : _a.el) === el; })) {\n var data = el.getAttribute('data-hs-textarea-auto-height');\n var options = data\n ? JSON.parse(data)\n : {};\n new HSTextareaAutoHeight(el, options);\n }\n });\n };\n return HSTextareaAutoHeight;\n}(base_plugin_1.default));\nwindow.addEventListener('load', function () {\n HSTextareaAutoHeight.autoInit();\n // Uncomment for debug\n // console.log('Textarea Autoheight collection:', window.$hsTextareaAutoHeightCollection);\n});\nif (typeof window !== 'undefined') {\n window.HSTextareaAutoHeight = HSTextareaAutoHeight;\n}\nexports.default = HSTextareaAutoHeight;\n","/*\n * HSTextareaAutoHeight\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\n\nimport {\n\tITextareaAutoHeightOptions,\n\tITextareaAutoHeight,\n} from '../textarea-auto-height/interfaces';\n\nimport HSBasePlugin from '../base-plugin';\nimport { ICollectionItem } from '../../interfaces';\n\nclass HSTextareaAutoHeight\n\textends HSBasePlugin\n\timplements ITextareaAutoHeight\n{\n\tprivate readonly defaultHeight: number;\n\n\tconstructor(el: HTMLTextAreaElement, options?: ITextareaAutoHeightOptions) {\n\t\tsuper(el, options);\n\n\t\tconst data = el.getAttribute('data-hs-copy-markup');\n\t\tconst dataOptions: ITextareaAutoHeightOptions = data\n\t\t\t? JSON.parse(data)\n\t\t\t: {};\n\t\tconst concatOptions = {\n\t\t\t...dataOptions,\n\t\t\t...options,\n\t\t};\n\n\t\tthis.defaultHeight = concatOptions?.defaultHeight || 0;\n\n\t\tthis.init();\n\t}\n\n\tprivate init() {\n\t\tthis.createCollection(window.$hsTextareaAutoHeightCollection, this);\n\n\t\tthis.setAutoHeight();\n\t}\n\n\tprivate setAutoHeight() {\n\t\tif (this.isParentHidden()) this.callbackAccordingToType();\n\t\telse this.textareaSetHeight(3);\n\n\t\tthis.el.addEventListener('input', () => this.textareaSetHeight(3));\n\t}\n\n\tprivate textareaSetHeight(offsetTop = 0) {\n\t\tthis.el.style.height = 'auto';\n\t\tthis.el.style.height =\n\t\t\tthis.checkIfOneLine() && this.defaultHeight\n\t\t\t\t? `${this.defaultHeight}px`\n\t\t\t\t: `${this.el.scrollHeight + offsetTop}px`;\n\t}\n\n\tprivate checkIfOneLine(): boolean {\n\t\tconst clientHeight = this.el.clientHeight;\n\t\tconst scrollHeight = this.el.scrollHeight;\n\n\t\tif (scrollHeight > clientHeight) return false;\n\t\telse return true;\n\t}\n\n\tprivate isParentHidden() {\n\t\treturn this.el.closest('.hs-collapse') || this.el.closest('.hs-overlay');\n\t}\n\n\tprivate parentType(): string | boolean {\n\t\tif (this.el.closest('.hs-collapse')) return 'collapse';\n\t\telse if (this.el.closest('.hs-overlay')) return 'overlay';\n\t\telse return false;\n\t}\n\n\tprivate callbackAccordingToType() {\n\t\tif (this.parentType() === 'collapse') {\n\t\t\tconst collapseId = this.el.closest('.hs-collapse').id;\n\t\t\tconst { element } = (window.HSCollapse as any).getInstance(\n\t\t\t\t`[data-hs-collapse=\"#${collapseId}\"]`,\n\t\t\t\ttrue,\n\t\t\t);\n\n\t\t\telement.on('beforeOpen', () => {\n\t\t\t\tif (!this.el) return false;\n\n\t\t\t\tthis.textareaSetHeight(3);\n\t\t\t});\n\t\t} else if (this.parentType() === 'overlay') {\n\t\t\tconst { element } = (window.HSOverlay as any).getInstance(\n\t\t\t\tthis.el.closest('.hs-overlay'),\n\t\t\t\ttrue,\n\t\t\t);\n\n\t\t\telement.on('open', () => {\n\t\t\t\tif (!this.el) return false;\n\n\t\t\t\tthis.textareaSetHeight(3);\n\t\t\t});\n\t\t} else return false;\n\t}\n\n\t// Static method\n\tstatic getInstance(\n\t\ttarget: HTMLTextAreaElement | string,\n\t\tisInstance?: boolean,\n\t) {\n\t\tconst elInCollection = window.$hsTextareaAutoHeightCollection.find(\n\t\t\t(el) =>\n\t\t\t\tel.element.el ===\n\t\t\t\t(typeof target === 'string' ? document.querySelector(target) : target),\n\t\t);\n\n\t\treturn elInCollection\n\t\t\t? isInstance\n\t\t\t\t? elInCollection\n\t\t\t\t: elInCollection.element\n\t\t\t: null;\n\t}\n\n\tstatic autoInit() {\n\t\tif (!window.$hsTextareaAutoHeightCollection)\n\t\t\twindow.$hsTextareaAutoHeightCollection = [];\n\n\t\tdocument\n\t\t\t.querySelectorAll(\n\t\t\t\t'[data-hs-textarea-auto-height]:not(.--prevent-on-load-init)',\n\t\t\t)\n\t\t\t.forEach((el: HTMLTextAreaElement) => {\n\t\t\t\tif (\n\t\t\t\t\t!window.$hsTextareaAutoHeightCollection.find(\n\t\t\t\t\t\t(elC) => (elC?.element?.el as HTMLTextAreaElement) === el,\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tconst data = el.getAttribute('data-hs-textarea-auto-height');\n\t\t\t\t\tconst options: ITextareaAutoHeightOptions = data\n\t\t\t\t\t\t? JSON.parse(data)\n\t\t\t\t\t\t: {};\n\n\t\t\t\t\tnew HSTextareaAutoHeight(el, options);\n\t\t\t\t}\n\t\t\t});\n\t}\n}\n\ndeclare global {\n\tinterface Window {\n\t\tHSTextareaAutoHeight: Function;\n\t\t$hsTextareaAutoHeightCollection: ICollectionItem[];\n\t}\n}\n\nwindow.addEventListener('load', () => {\n\tHSTextareaAutoHeight.autoInit();\n\n\t// Uncomment for debug\n\t// console.log('Textarea Autoheight collection:', window.$hsTextareaAutoHeightCollection);\n});\n\nif (typeof window !== 'undefined') {\n\twindow.HSTextareaAutoHeight = HSTextareaAutoHeight;\n}\n\nexport default HSTextareaAutoHeight;\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar base_plugin_1 = __importDefault(require(\"../base-plugin\"));\nvar HSThemeSwitch = /** @class */ (function (_super) {\n __extends(HSThemeSwitch, _super);\n function HSThemeSwitch(el, options) {\n var _this = _super.call(this, el, options) || this;\n var data = el.getAttribute('data-hs-theme-switch');\n var dataOptions = data ? JSON.parse(data) : {};\n var concatOptions = __assign(__assign({}, dataOptions), options);\n _this.theme =\n (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.theme) || localStorage.getItem('hs_theme') || 'default';\n _this.themeSet = ['light', 'dark', 'default'];\n _this.init();\n return _this;\n }\n HSThemeSwitch.prototype.init = function () {\n this.createCollection(window.$hsThemeSwitchCollection, this);\n if (this.theme !== 'default')\n this.setAppearance();\n };\n HSThemeSwitch.prototype.setResetStyles = function () {\n var style = document.createElement('style');\n style.innerText = \"*{transition: unset !important;}\";\n style.setAttribute('data-hs-appearance-onload-styles', '');\n document.head.appendChild(style);\n return style;\n };\n HSThemeSwitch.prototype.addSystemThemeObserver = function () {\n var _this = this;\n window\n .matchMedia('(prefers-color-scheme: dark)')\n .addEventListener('change', function (_a) {\n var matches = _a.matches;\n if (matches)\n _this.setAppearance('dark', false);\n else\n _this.setAppearance('default', false);\n });\n };\n HSThemeSwitch.prototype.removeSystemThemeObserver = function () {\n window.matchMedia('(prefers-color-scheme: dark)').removeEventListener;\n };\n // Public methods\n HSThemeSwitch.prototype.setAppearance = function (theme, isSaveToLocalStorage, isSetDispatchEvent) {\n if (theme === void 0) { theme = this.theme; }\n if (isSaveToLocalStorage === void 0) { isSaveToLocalStorage = true; }\n if (isSetDispatchEvent === void 0) { isSetDispatchEvent = true; }\n var html = document.querySelector('html');\n var resetStyles = this.setResetStyles();\n if (isSaveToLocalStorage)\n localStorage.setItem('hs_theme', theme);\n if (theme === 'auto')\n theme = window.matchMedia('(prefers-color-scheme: dark)').matches\n ? 'dark'\n : 'default';\n html.classList.remove('light', 'dark', 'default', 'auto');\n html.classList.add(theme);\n setTimeout(function () { return resetStyles.remove(); });\n if (isSetDispatchEvent)\n window.dispatchEvent(new CustomEvent('on-hs-appearance-change', { detail: theme }));\n };\n // Static methods\n HSThemeSwitch.getInstance = function (target) {\n var elInCollection = window.$hsThemeSwitchCollection.find(function (el) {\n return el.element.el ===\n (typeof target === 'string' ? document.querySelector(target) : target);\n });\n return elInCollection ? elInCollection.element : null;\n };\n HSThemeSwitch.autoInit = function () {\n if (!window.$hsThemeSwitchCollection)\n window.$hsThemeSwitchCollection = [];\n var toggleObserveSystemTheme = function (el) {\n if (localStorage.getItem('hs_theme') === 'auto')\n el.addSystemThemeObserver();\n else\n el.removeSystemThemeObserver();\n };\n document\n .querySelectorAll('[data-hs-theme-switch]:not(.--prevent-on-load-init)')\n .forEach(function (el) {\n if (!window.$hsThemeSwitchCollection.find(function (elC) { var _a; return ((_a = elC === null || elC === void 0 ? void 0 : elC.element) === null || _a === void 0 ? void 0 : _a.el) === el; })) {\n var switchTheme_1 = new HSThemeSwitch(el);\n switchTheme_1.el.checked =\n switchTheme_1.theme === 'dark';\n toggleObserveSystemTheme(switchTheme_1);\n switchTheme_1.el.addEventListener('change', function (evt) {\n var theme = evt.target.checked\n ? 'dark'\n : 'default';\n switchTheme_1.setAppearance(theme);\n toggleObserveSystemTheme(switchTheme_1);\n });\n }\n });\n document\n .querySelectorAll('[data-hs-theme-click-value]:not(.--prevent-on-load-init)')\n .forEach(function (el) {\n var theme = el.getAttribute('data-hs-theme-click-value');\n var switchTheme = new HSThemeSwitch(el);\n toggleObserveSystemTheme(switchTheme);\n switchTheme.el.addEventListener('click', function () {\n switchTheme.setAppearance(theme);\n toggleObserveSystemTheme(switchTheme);\n });\n });\n };\n return HSThemeSwitch;\n}(base_plugin_1.default));\nwindow.addEventListener('load', function () {\n HSThemeSwitch.autoInit();\n // Uncomment for debug\n // console.log('Theme switch collection:', window.$hsThemeSwitchCollection);\n});\nif (window.$hsThemeSwitchCollection) {\n window.addEventListener('on-hs-appearance-change', function (evt) {\n window.$hsThemeSwitchCollection.forEach(function (el) {\n el.element.el.checked = evt.detail === 'dark';\n });\n });\n}\nif (typeof window !== 'undefined') {\n window.HSThemeSwitch = HSThemeSwitch;\n}\nexports.default = HSThemeSwitch;\n","/*\n * HSThemeSwitch\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\nimport {\n\tIThemeSwitchOptions,\n\tIThemeSwitch,\n} from '../theme-switch/interfaces';\n\nimport HSBasePlugin from '../base-plugin';\nimport { ICollectionItem } from '../../interfaces';\n\nclass HSThemeSwitch\n\textends HSBasePlugin\n\timplements IThemeSwitch\n{\n\tpublic theme: string;\n\tprivate readonly themeSet: string[];\n\n\tconstructor(el: HTMLElement, options?: IThemeSwitchOptions) {\n\t\tsuper(el, options);\n\n\t\tconst data = el.getAttribute('data-hs-theme-switch');\n\t\tconst dataOptions: IThemeSwitchOptions = data ? JSON.parse(data) : {};\n\t\tconst concatOptions = {\n\t\t\t...dataOptions,\n\t\t\t...options,\n\t\t};\n\n\t\tthis.theme =\n\t\t\tconcatOptions?.theme || localStorage.getItem('hs_theme') || 'default';\n\t\tthis.themeSet = ['light', 'dark', 'default'];\n\n\t\tthis.init();\n\t}\n\n\tprivate init() {\n\t\tthis.createCollection(window.$hsThemeSwitchCollection, this);\n\n\t\tif (this.theme !== 'default') this.setAppearance();\n\t}\n\n\tprivate setResetStyles() {\n\t\tconst style = document.createElement('style');\n\n\t\tstyle.innerText = `*{transition: unset !important;}`;\n\t\tstyle.setAttribute('data-hs-appearance-onload-styles', '');\n\n\t\tdocument.head.appendChild(style);\n\n\t\treturn style;\n\t}\n\n\tprivate addSystemThemeObserver() {\n\t\twindow\n\t\t\t.matchMedia('(prefers-color-scheme: dark)')\n\t\t\t.addEventListener('change', ({ matches }) => {\n\t\t\t\tif (matches) this.setAppearance('dark', false);\n\t\t\t\telse this.setAppearance('default', false);\n\t\t\t});\n\t}\n\n\tprivate removeSystemThemeObserver() {\n\t\twindow.matchMedia('(prefers-color-scheme: dark)').removeEventListener;\n\t}\n\n\t// Public methods\n\tpublic setAppearance(\n\t\ttheme = this.theme,\n\t\tisSaveToLocalStorage = true,\n\t\tisSetDispatchEvent = true,\n\t) {\n\t\tconst html = document.querySelector('html');\n\t\tconst resetStyles = this.setResetStyles();\n\n\t\tif (isSaveToLocalStorage) localStorage.setItem('hs_theme', theme);\n\t\tif (theme === 'auto')\n\t\t\ttheme = window.matchMedia('(prefers-color-scheme: dark)').matches\n\t\t\t\t? 'dark'\n\t\t\t\t: 'default';\n\n\t\thtml.classList.remove('light', 'dark', 'default', 'auto');\n\t\thtml.classList.add(theme);\n\n\t\tsetTimeout(() => resetStyles.remove());\n\n\t\tif (isSetDispatchEvent)\n\t\t\twindow.dispatchEvent(\n\t\t\t\tnew CustomEvent('on-hs-appearance-change', { detail: theme }),\n\t\t\t);\n\t}\n\n\t// Static methods\n\tstatic getInstance(target: HTMLElement | string) {\n\t\tconst elInCollection = window.$hsThemeSwitchCollection.find(\n\t\t\t(el) =>\n\t\t\t\tel.element.el ===\n\t\t\t\t(typeof target === 'string' ? document.querySelector(target) : target),\n\t\t);\n\n\t\treturn elInCollection ? elInCollection.element : null;\n\t}\n\n\tstatic autoInit() {\n\t\tif (!window.$hsThemeSwitchCollection) window.$hsThemeSwitchCollection = [];\n\n\t\tconst toggleObserveSystemTheme = (el: HSThemeSwitch) => {\n\t\t\tif (localStorage.getItem('hs_theme') === 'auto')\n\t\t\t\tel.addSystemThemeObserver();\n\t\t\telse el.removeSystemThemeObserver();\n\t\t};\n\n\t\tdocument\n\t\t\t.querySelectorAll('[data-hs-theme-switch]:not(.--prevent-on-load-init)')\n\t\t\t.forEach((el: HTMLElement) => {\n\t\t\t\tif (\n\t\t\t\t\t!window.$hsThemeSwitchCollection.find(\n\t\t\t\t\t\t(elC) => (elC?.element?.el as HTMLElement) === el,\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tconst switchTheme = new HSThemeSwitch(el);\n\t\t\t\t\t(switchTheme.el as HTMLInputElement).checked =\n\t\t\t\t\t\tswitchTheme.theme === 'dark';\n\n\t\t\t\t\ttoggleObserveSystemTheme(switchTheme);\n\n\t\t\t\t\tswitchTheme.el.addEventListener('change', (evt) => {\n\t\t\t\t\t\tconst theme = (evt.target as HTMLInputElement).checked\n\t\t\t\t\t\t\t? 'dark'\n\t\t\t\t\t\t\t: 'default';\n\t\t\t\t\t\tswitchTheme.setAppearance(theme);\n\n\t\t\t\t\t\ttoggleObserveSystemTheme(switchTheme);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\tdocument\n\t\t\t.querySelectorAll(\n\t\t\t\t'[data-hs-theme-click-value]:not(.--prevent-on-load-init)',\n\t\t\t)\n\t\t\t.forEach((el: HTMLElement) => {\n\t\t\t\tconst theme = el.getAttribute('data-hs-theme-click-value');\n\t\t\t\tconst switchTheme = new HSThemeSwitch(el);\n\n\t\t\t\ttoggleObserveSystemTheme(switchTheme);\n\n\t\t\t\tswitchTheme.el.addEventListener('click', () => {\n\t\t\t\t\tswitchTheme.setAppearance(theme);\n\n\t\t\t\t\ttoggleObserveSystemTheme(switchTheme);\n\t\t\t\t});\n\t\t\t});\n\t}\n}\n\ndeclare global {\n\tinterface Window {\n\t\tHSThemeSwitch: Function;\n\t\t$hsThemeSwitchCollection: ICollectionItem[];\n\t}\n}\n\nwindow.addEventListener('load', () => {\n\tHSThemeSwitch.autoInit();\n\n\t// Uncomment for debug\n\t// console.log('Theme switch collection:', window.$hsThemeSwitchCollection);\n});\n\nif (window.$hsThemeSwitchCollection) {\n\twindow.addEventListener(\n\t\t'on-hs-appearance-change',\n\t\t(evt: Event & { detail: string }) => {\n\t\t\twindow.$hsThemeSwitchCollection.forEach((el) => {\n\t\t\t\t(el.element.el as HTMLInputElement).checked = evt.detail === 'dark';\n\t\t\t});\n\t\t},\n\t);\n}\n\nif (typeof window !== 'undefined') {\n\twindow.HSThemeSwitch = HSThemeSwitch;\n}\n\nexport default HSThemeSwitch;\n","\"use strict\";\n/*\n * HSToggleCount\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar base_plugin_1 = __importDefault(require(\"../base-plugin\"));\nvar HSToggleCount = /** @class */ (function (_super) {\n __extends(HSToggleCount, _super);\n function HSToggleCount(el, options) {\n var _this = _super.call(this, el, options) || this;\n var data = el.getAttribute('data-hs-toggle-count');\n var dataOptions = data ? JSON.parse(data) : {};\n var concatOptions = __assign(__assign({}, dataOptions), options);\n _this.target = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.target)\n ? typeof (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.target) === 'string'\n ? document.querySelector(concatOptions.target)\n : concatOptions.target\n : null;\n _this.min = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.min) || 0;\n _this.max = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.max) || 0;\n _this.duration = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.duration) || 700;\n _this.isChecked = _this.target.checked || false;\n if (_this.target)\n _this.init();\n return _this;\n }\n HSToggleCount.prototype.init = function () {\n var _this = this;\n this.createCollection(window.$hsToggleCountCollection, this);\n if (this.isChecked)\n this.el.innerText = String(this.max);\n this.target.addEventListener('change', function () {\n _this.isChecked = !_this.isChecked;\n _this.toggle();\n });\n };\n HSToggleCount.prototype.toggle = function () {\n if (this.isChecked)\n this.countUp();\n else\n this.countDown();\n };\n HSToggleCount.prototype.animate = function (from, to) {\n var _this = this;\n var startTimestamp = 0;\n var step = function (timestamp) {\n if (!startTimestamp)\n startTimestamp = timestamp;\n var progress = Math.min((timestamp - startTimestamp) / _this.duration, 1);\n _this.el.innerText = String(Math.floor(progress * (to - from) + from));\n if (progress < 1)\n window.requestAnimationFrame(step);\n };\n window.requestAnimationFrame(step);\n };\n // Public methods\n HSToggleCount.prototype.countUp = function () {\n this.animate(this.min, this.max);\n };\n HSToggleCount.prototype.countDown = function () {\n this.animate(this.max, this.min);\n };\n // Static methods\n HSToggleCount.getInstance = function (target, isInstance) {\n var elInCollection = window.$hsToggleCountCollection.find(function (el) {\n return el.element.el ===\n (typeof target === 'string' ? document.querySelector(target) : target);\n });\n return elInCollection\n ? isInstance\n ? elInCollection\n : elInCollection.element\n : null;\n };\n HSToggleCount.autoInit = function () {\n if (!window.$hsToggleCountCollection)\n window.$hsToggleCountCollection = [];\n document\n .querySelectorAll('[data-hs-toggle-count]:not(.--prevent-on-load-init)')\n .forEach(function (el) {\n if (!window.$hsToggleCountCollection.find(function (elC) { var _a; return ((_a = elC === null || elC === void 0 ? void 0 : elC.element) === null || _a === void 0 ? void 0 : _a.el) === el; }))\n new HSToggleCount(el);\n });\n };\n return HSToggleCount;\n}(base_plugin_1.default));\nwindow.addEventListener('load', function () {\n HSToggleCount.autoInit();\n // Uncomment for debug\n // console.log('Toggle count collection:', window.$hsToggleCountCollection);\n});\nif (typeof window !== 'undefined') {\n window.HSToggleCount = HSToggleCount;\n}\nexports.default = HSToggleCount;\n","/*\n * HSToggleCount\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\n\nimport {\n\tIToggleCountOptions,\n\tIToggleCount,\n} from '../toggle-count/interfaces';\n\nimport HSBasePlugin from '../base-plugin';\nimport { ICollectionItem } from '../../interfaces';\n\nclass HSToggleCount\n\textends HSBasePlugin\n\timplements IToggleCount\n{\n\tprivate readonly target: HTMLInputElement | null;\n\tprivate readonly min: number | null;\n\tprivate readonly max: number | null;\n\tprivate readonly duration: number | null;\n\tprivate isChecked: boolean;\n\n\tconstructor(el: HTMLElement, options?: IToggleCountOptions) {\n\t\tsuper(el, options);\n\n\t\tconst data = el.getAttribute('data-hs-toggle-count');\n\t\tconst dataOptions: IToggleCountOptions = data ? JSON.parse(data) : {};\n\t\tconst concatOptions = {\n\t\t\t...dataOptions,\n\t\t\t...options,\n\t\t};\n\n\t\tthis.target = concatOptions?.target\n\t\t\t? typeof concatOptions?.target === 'string'\n\t\t\t\t? (document.querySelector(concatOptions.target) as HTMLInputElement)\n\t\t\t\t: concatOptions.target\n\t\t\t: null;\n\t\tthis.min = concatOptions?.min || 0;\n\t\tthis.max = concatOptions?.max || 0;\n\t\tthis.duration = concatOptions?.duration || 700;\n\n\t\tthis.isChecked = (this.target as HTMLInputElement).checked || false;\n\n\t\tif (this.target) this.init();\n\t}\n\n\tprivate init() {\n\t\tthis.createCollection(window.$hsToggleCountCollection, this);\n\n\t\tif (this.isChecked) this.el.innerText = String(this.max);\n\n\t\tthis.target.addEventListener('change', () => {\n\t\t\tthis.isChecked = !this.isChecked;\n\n\t\t\tthis.toggle();\n\t\t});\n\t}\n\n\tprivate toggle() {\n\t\tif (this.isChecked) this.countUp();\n\t\telse this.countDown();\n\t}\n\n\tprivate animate(from: number, to: number) {\n\t\tlet startTimestamp = 0;\n\n\t\tconst step = (timestamp: number) => {\n\t\t\tif (!startTimestamp) startTimestamp = timestamp;\n\t\t\tconst progress = Math.min(\n\t\t\t\t(timestamp - startTimestamp) / this.duration,\n\t\t\t\t1,\n\t\t\t);\n\n\t\t\tthis.el.innerText = String(Math.floor(progress * (to - from) + from));\n\n\t\t\tif (progress < 1) window.requestAnimationFrame(step);\n\t\t};\n\n\t\twindow.requestAnimationFrame(step);\n\t}\n\n\t// Public methods\n\tpublic countUp() {\n\t\tthis.animate(this.min, this.max);\n\t}\n\n\tpublic countDown() {\n\t\tthis.animate(this.max, this.min);\n\t}\n\n\t// Static methods\n\tstatic getInstance(target: HTMLElement | string, isInstance?: boolean) {\n\t\tconst elInCollection = window.$hsToggleCountCollection.find(\n\t\t\t(el) =>\n\t\t\t\tel.element.el ===\n\t\t\t\t(typeof target === 'string' ? document.querySelector(target) : target),\n\t\t);\n\n\t\treturn elInCollection\n\t\t\t? isInstance\n\t\t\t\t? elInCollection\n\t\t\t\t: elInCollection.element\n\t\t\t: null;\n\t}\n\n\tstatic autoInit() {\n\t\tif (!window.$hsToggleCountCollection) window.$hsToggleCountCollection = [];\n\n\t\tdocument\n\t\t\t.querySelectorAll('[data-hs-toggle-count]:not(.--prevent-on-load-init)')\n\t\t\t.forEach((el: HTMLElement) => {\n\t\t\t\tif (\n\t\t\t\t\t!window.$hsToggleCountCollection.find(\n\t\t\t\t\t\t(elC) => (elC?.element?.el as HTMLElement) === el,\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t\tnew HSToggleCount(el);\n\t\t\t});\n\t}\n}\n\ndeclare global {\n\tinterface Window {\n\t\tHSToggleCount: Function;\n\t\t$hsToggleCountCollection: ICollectionItem[];\n\t}\n}\n\nwindow.addEventListener('load', () => {\n\tHSToggleCount.autoInit();\n\n\t// Uncomment for debug\n\t// console.log('Toggle count collection:', window.$hsToggleCountCollection);\n});\n\nif (typeof window !== 'undefined') {\n\twindow.HSToggleCount = HSToggleCount;\n}\n\nexport default HSToggleCount;\n","\"use strict\";\n/*\n * HSTogglePassword\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../../utils\");\nvar base_plugin_1 = __importDefault(require(\"../base-plugin\"));\nvar HSTogglePassword = /** @class */ (function (_super) {\n __extends(HSTogglePassword, _super);\n function HSTogglePassword(el, options) {\n var _this = _super.call(this, el, options) || this;\n var data = el.getAttribute('data-hs-toggle-password');\n var dataOptions = data ? JSON.parse(data) : {};\n var concatOptions = __assign(__assign({}, dataOptions), options);\n var targets = [];\n if ((concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.target) && typeof (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.target) === 'string') {\n var ids = concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.target.split(',');\n ids.forEach(function (id) {\n targets.push(document.querySelector(id));\n });\n }\n else if ((concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.target) &&\n typeof (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.target) === 'object') {\n concatOptions.target.forEach(function (el) {\n return targets.push(document.querySelector(el));\n });\n }\n else {\n concatOptions.target.forEach(function (el) {\n return targets.push(el);\n });\n }\n _this.target = targets;\n _this.isShown = _this.el.hasAttribute('type')\n ? _this.el.checked\n : false;\n _this.eventType = (0, utils_1.isFormElement)(_this.el) ? 'change' : 'click';\n _this.isMultiple =\n _this.target.length > 1 &&\n !!_this.el.closest('[data-hs-toggle-password-group]');\n if (_this.target)\n _this.init();\n return _this;\n }\n HSTogglePassword.prototype.init = function () {\n var _this = this;\n this.createCollection(window.$hsTogglePasswordCollection, this);\n if (!this.isShown) {\n this.hide();\n }\n else {\n this.show();\n }\n this.el.addEventListener(this.eventType, function () {\n if (_this.isShown) {\n _this.hide();\n }\n else {\n _this.show();\n }\n _this.fireEvent('toggle', _this.target);\n (0, utils_1.dispatch)('toggle.hs.toggle-select', _this.el, _this.target);\n });\n };\n HSTogglePassword.prototype.getMultipleToggles = function () {\n var group = this.el.closest('[data-hs-toggle-password-group]');\n var toggles = group.querySelectorAll('[data-hs-toggle-password]');\n var togglesInCollection = [];\n toggles.forEach(function (el) {\n togglesInCollection.push(HSTogglePassword.getInstance(el));\n });\n return togglesInCollection;\n };\n // Public methods\n HSTogglePassword.prototype.show = function () {\n if (this.isMultiple) {\n var toggles = this.getMultipleToggles();\n toggles.forEach(function (el) {\n return el ? (el.isShown = true) : false;\n });\n this.el\n .closest('[data-hs-toggle-password-group]')\n .classList.add('active');\n }\n else {\n this.isShown = true;\n this.el.classList.add('active');\n }\n this.target.forEach(function (el) {\n el.type = 'text';\n });\n };\n HSTogglePassword.prototype.hide = function () {\n if (this.isMultiple) {\n var toggles = this.getMultipleToggles();\n toggles.forEach(function (el) {\n return el ? (el.isShown = false) : false;\n });\n this.el\n .closest('[data-hs-toggle-password-group]')\n .classList.remove('active');\n }\n else {\n this.isShown = false;\n this.el.classList.remove('active');\n }\n this.target.forEach(function (el) {\n el.type = 'password';\n });\n };\n // Static methods\n HSTogglePassword.getInstance = function (target, isInstance) {\n var elInCollection = window.$hsTogglePasswordCollection.find(function (el) {\n return el.element.el ===\n (typeof target === 'string' ? document.querySelector(target) : target);\n });\n return elInCollection\n ? isInstance\n ? elInCollection\n : elInCollection.element\n : null;\n };\n HSTogglePassword.autoInit = function () {\n if (!window.$hsTogglePasswordCollection)\n window.$hsTogglePasswordCollection = [];\n document\n .querySelectorAll('[data-hs-toggle-password]:not(.--prevent-on-load-init)')\n .forEach(function (el) {\n if (!window.$hsTogglePasswordCollection.find(function (elC) { var _a; return ((_a = elC === null || elC === void 0 ? void 0 : elC.element) === null || _a === void 0 ? void 0 : _a.el) === el; }))\n new HSTogglePassword(el);\n });\n };\n return HSTogglePassword;\n}(base_plugin_1.default));\nwindow.addEventListener('load', function () {\n HSTogglePassword.autoInit();\n // Uncomment for debug\n // console.log('Toggle password collection:', window.$hsTogglePasswordCollection);\n});\nif (typeof window !== 'undefined') {\n window.HSTogglePassword = HSTogglePassword;\n}\nexports.default = HSTogglePassword;\n","/*\n * HSTogglePassword\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\n\nimport { isFormElement, dispatch } from '../../utils';\n\nimport {\n\tITogglePasswordOptions,\n\tITogglePassword,\n} from '../toggle-password/interfaces';\n\nimport HSBasePlugin from '../base-plugin';\nimport { ICollectionItem } from '../../interfaces';\n\nclass HSTogglePassword\n\textends HSBasePlugin\n\timplements ITogglePassword\n{\n\tprivate readonly target:\n\t\t| string\n\t\t| string[]\n\t\t| HTMLInputElement\n\t\t| HTMLInputElement[]\n\t\t| null;\n\tprivate isShown: boolean;\n\tprivate isMultiple: boolean;\n\tprivate eventType: string;\n\n\tconstructor(el: HTMLElement, options?: ITogglePasswordOptions) {\n\t\tsuper(el, options);\n\n\t\tconst data = el.getAttribute('data-hs-toggle-password');\n\t\tconst dataOptions: ITogglePasswordOptions = data ? JSON.parse(data) : {};\n\t\tconst concatOptions = {\n\t\t\t...dataOptions,\n\t\t\t...options,\n\t\t};\n\t\tconst targets: HTMLInputElement[] = [];\n\t\tif (concatOptions?.target && typeof concatOptions?.target === 'string') {\n\t\t\tconst ids = concatOptions?.target.split(',');\n\t\t\tids.forEach((id) => {\n\t\t\t\ttargets.push(document.querySelector(id) as HTMLInputElement);\n\t\t\t});\n\t\t} else if (\n\t\t\tconcatOptions?.target &&\n\t\t\ttypeof concatOptions?.target === 'object'\n\t\t) {\n\t\t\t(concatOptions.target as string[]).forEach((el) =>\n\t\t\t\ttargets.push(document.querySelector(el)),\n\t\t\t);\n\t\t} else {\n\t\t\t(concatOptions.target as HTMLInputElement[]).forEach((el) =>\n\t\t\t\ttargets.push(el),\n\t\t\t);\n\t\t}\n\n\t\tthis.target = targets;\n\t\tthis.isShown = this.el.hasAttribute('type')\n\t\t\t? (this.el as HTMLInputElement).checked\n\t\t\t: false;\n\t\tthis.eventType = isFormElement(this.el) ? 'change' : 'click';\n\t\tthis.isMultiple =\n\t\t\tthis.target.length > 1 &&\n\t\t\t!!this.el.closest('[data-hs-toggle-password-group]');\n\n\t\tif (this.target) this.init();\n\t}\n\n\tprivate init() {\n\t\tthis.createCollection(window.$hsTogglePasswordCollection, this);\n\n\t\tif (!this.isShown) {\n\t\t\tthis.hide();\n\t\t} else {\n\t\t\tthis.show();\n\t\t}\n\n\t\tthis.el.addEventListener(this.eventType, () => {\n\t\t\tif (this.isShown) {\n\t\t\t\tthis.hide();\n\t\t\t} else {\n\t\t\t\tthis.show();\n\t\t\t}\n\n\t\t\tthis.fireEvent('toggle', this.target);\n\t\t\tdispatch('toggle.hs.toggle-select', this.el, this.target);\n\t\t});\n\t}\n\n\tprivate getMultipleToggles(): HSTogglePassword[] {\n\t\tconst group = this.el.closest('[data-hs-toggle-password-group]');\n\t\tconst toggles = group.querySelectorAll('[data-hs-toggle-password]');\n\t\tconst togglesInCollection: HSTogglePassword[] = [];\n\n\t\ttoggles.forEach((el: HTMLElement) => {\n\t\t\ttogglesInCollection.push(\n\t\t\t\tHSTogglePassword.getInstance(el) as HSTogglePassword,\n\t\t\t);\n\t\t});\n\n\t\treturn togglesInCollection;\n\t}\n\n\t// Public methods\n\tpublic show() {\n\t\tif (this.isMultiple) {\n\t\t\tconst toggles = this.getMultipleToggles();\n\n\t\t\ttoggles.forEach((el: HSTogglePassword) =>\n\t\t\t\tel ? (el.isShown = true) : false,\n\t\t\t);\n\n\t\t\tthis.el\n\t\t\t\t.closest('[data-hs-toggle-password-group]')\n\t\t\t\t.classList.add('active');\n\t\t} else {\n\t\t\tthis.isShown = true;\n\n\t\t\tthis.el.classList.add('active');\n\t\t}\n\t\t(this.target as HTMLInputElement[]).forEach((el) => {\n\t\t\t(el as HTMLInputElement).type = 'text';\n\t\t});\n\t}\n\n\tpublic hide() {\n\t\tif (this.isMultiple) {\n\t\t\tconst toggles = this.getMultipleToggles();\n\n\t\t\ttoggles.forEach((el: HSTogglePassword) =>\n\t\t\t\tel ? (el.isShown = false) : false,\n\t\t\t);\n\n\t\t\tthis.el\n\t\t\t\t.closest('[data-hs-toggle-password-group]')\n\t\t\t\t.classList.remove('active');\n\t\t} else {\n\t\t\tthis.isShown = false;\n\n\t\t\tthis.el.classList.remove('active');\n\t\t}\n\t\t(this.target as HTMLInputElement[]).forEach((el) => {\n\t\t\t(el as HTMLInputElement).type = 'password';\n\t\t});\n\t}\n\n\t// Static methods\n\tstatic getInstance(target: HTMLElement | string, isInstance?: boolean) {\n\t\tconst elInCollection = window.$hsTogglePasswordCollection.find(\n\t\t\t(el) =>\n\t\t\t\tel.element.el ===\n\t\t\t\t(typeof target === 'string' ? document.querySelector(target) : target),\n\t\t);\n\n\t\treturn elInCollection\n\t\t\t? isInstance\n\t\t\t\t? elInCollection\n\t\t\t\t: elInCollection.element\n\t\t\t: null;\n\t}\n\n\tstatic autoInit() {\n\t\tif (!window.$hsTogglePasswordCollection)\n\t\t\twindow.$hsTogglePasswordCollection = [];\n\n\t\tdocument\n\t\t\t.querySelectorAll(\n\t\t\t\t'[data-hs-toggle-password]:not(.--prevent-on-load-init)',\n\t\t\t)\n\t\t\t.forEach((el: HTMLInputElement) => {\n\t\t\t\tif (\n\t\t\t\t\t!window.$hsTogglePasswordCollection.find(\n\t\t\t\t\t\t(elC) => (elC?.element?.el as HTMLElement) === el,\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t\tnew HSTogglePassword(el);\n\t\t\t});\n\t}\n}\n\ndeclare global {\n\tinterface Window {\n\t\tHSTogglePassword: Function;\n\t\t$hsTogglePasswordCollection: ICollectionItem[];\n\t}\n}\n\nwindow.addEventListener('load', () => {\n\tHSTogglePassword.autoInit();\n\n\t// Uncomment for debug\n\t// console.log('Toggle password collection:', window.$hsTogglePasswordCollection);\n});\n\nif (typeof window !== 'undefined') {\n\twindow.HSTogglePassword = HSTogglePassword;\n}\n\nexport default HSTogglePassword;\n","\"use strict\";\n/*\n * HSTooltip\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@popperjs/core\");\nvar utils_1 = require(\"../../utils\");\nvar base_plugin_1 = __importDefault(require(\"../base-plugin\"));\nvar constants_1 = require(\"../../constants\");\nvar HSTooltip = /** @class */ (function (_super) {\n __extends(HSTooltip, _super);\n function HSTooltip(el, options, events) {\n var _this = _super.call(this, el, options, events) || this;\n if (_this.el) {\n _this.toggle = _this.el.querySelector('.hs-tooltip-toggle') || _this.el;\n _this.content = _this.el.querySelector('.hs-tooltip-content');\n _this.eventMode = (0, utils_1.getClassProperty)(_this.el, '--trigger') || 'hover';\n _this.preventPopper = (0, utils_1.getClassProperty)(_this.el, '--prevent-popper', 'false');\n _this.placement = (0, utils_1.getClassProperty)(_this.el, '--placement');\n _this.strategy = (0, utils_1.getClassProperty)(_this.el, '--strategy');\n }\n if (_this.el && _this.toggle && _this.content)\n _this.init();\n return _this;\n }\n HSTooltip.prototype.init = function () {\n var _this = this;\n this.createCollection(window.$hsTooltipCollection, this);\n if (this.eventMode === 'click') {\n this.toggle.addEventListener('click', function () { return _this.click(); });\n }\n else if (this.eventMode === 'focus') {\n this.toggle.addEventListener('click', function () { return _this.focus(); });\n }\n else if (this.eventMode === 'hover') {\n this.toggle.addEventListener('mouseenter', function () { return _this.enter(); });\n this.toggle.addEventListener('mouseleave', function () { return _this.leave(); });\n }\n if (this.preventPopper === 'false')\n this.buildPopper();\n };\n HSTooltip.prototype.enter = function () {\n this.show();\n };\n HSTooltip.prototype.leave = function () {\n this.hide();\n };\n HSTooltip.prototype.click = function () {\n var _this = this;\n if (this.el.classList.contains('show'))\n return false;\n this.show();\n var handle = function () {\n setTimeout(function () {\n _this.hide();\n _this.toggle.removeEventListener('click', handle, true);\n _this.toggle.removeEventListener('blur', handle, true);\n });\n };\n this.toggle.addEventListener('click', handle, true);\n this.toggle.addEventListener('blur', handle, true);\n };\n HSTooltip.prototype.focus = function () {\n var _this = this;\n this.show();\n var handle = function () {\n _this.hide();\n _this.toggle.removeEventListener('blur', handle, true);\n };\n this.toggle.addEventListener('blur', handle, true);\n };\n HSTooltip.prototype.buildPopper = function () {\n this.popperInstance = (0, core_1.createPopper)(this.toggle, this.content, {\n placement: constants_1.POSITIONS[this.placement] || 'top',\n strategy: this.strategy || 'fixed',\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [0, 5],\n },\n },\n ],\n });\n };\n // Public methods\n HSTooltip.prototype.show = function () {\n var _this = this;\n this.content.classList.remove('hidden');\n if (this.preventPopper === 'false') {\n this.popperInstance.setOptions(function (options) { return (__assign(__assign({}, options), { modifiers: __spreadArray(__spreadArray([], options.modifiers, true), [\n {\n name: 'eventListeners',\n enabled: true,\n },\n ], false) })); });\n this.popperInstance.update();\n }\n setTimeout(function () {\n _this.el.classList.add('show');\n _this.fireEvent('show', _this.el);\n (0, utils_1.dispatch)('show.hs.tooltip', _this.el, _this.el);\n });\n };\n HSTooltip.prototype.hide = function () {\n var _this = this;\n this.el.classList.remove('show');\n if (this.preventPopper === 'false') {\n this.popperInstance.setOptions(function (options) { return (__assign(__assign({}, options), { modifiers: __spreadArray(__spreadArray([], options.modifiers, true), [\n {\n name: 'eventListeners',\n enabled: false,\n },\n ], false) })); });\n }\n this.fireEvent('hide', this.el);\n (0, utils_1.dispatch)('hide.hs.tooltip', this.el, this.el);\n (0, utils_1.afterTransition)(this.content, function () {\n if (_this.el.classList.contains('show'))\n return false;\n _this.content.classList.add('hidden');\n });\n };\n // Static methods\n HSTooltip.getInstance = function (target, isInstance) {\n if (isInstance === void 0) { isInstance = false; }\n var elInCollection = window.$hsTooltipCollection.find(function (el) {\n return el.element.el ===\n (typeof target === 'string' ? document.querySelector(target) : target);\n });\n return elInCollection\n ? isInstance\n ? elInCollection\n : elInCollection.element.el\n : null;\n };\n HSTooltip.autoInit = function () {\n if (!window.$hsTooltipCollection)\n window.$hsTooltipCollection = [];\n document.querySelectorAll('.hs-tooltip').forEach(function (el) {\n if (!window.$hsTooltipCollection.find(function (elC) { var _a; return ((_a = elC === null || elC === void 0 ? void 0 : elC.element) === null || _a === void 0 ? void 0 : _a.el) === el; }))\n new HSTooltip(el);\n });\n };\n HSTooltip.show = function (target) {\n var elInCollection = window.$hsTooltipCollection.find(function (el) {\n return el.element.el ===\n (typeof target === 'string' ? document.querySelector(target) : target);\n });\n if (elInCollection) {\n switch (elInCollection.element.eventMode) {\n case 'click':\n elInCollection.element.click();\n break;\n case 'focus':\n elInCollection.element.focus();\n break;\n default:\n elInCollection.element.enter();\n break;\n }\n }\n };\n HSTooltip.hide = function (target) {\n var elInCollection = window.$hsTooltipCollection.find(function (el) {\n return el.element.el ===\n (typeof target === 'string' ? document.querySelector(target) : target);\n });\n if (elInCollection)\n elInCollection.element.hide();\n };\n // Backward compatibility\n HSTooltip.on = function (evt, target, cb) {\n var elInCollection = window.$hsTooltipCollection.find(function (el) {\n return el.element.el ===\n (typeof target === 'string' ? document.querySelector(target) : target);\n });\n if (elInCollection)\n elInCollection.element.events[evt] = cb;\n };\n return HSTooltip;\n}(base_plugin_1.default));\nwindow.addEventListener('load', function () {\n HSTooltip.autoInit();\n // Uncomment for debug\n // console.log('Tooltip collection:', window.$hsTooltipCollection);\n});\nif (typeof window !== 'undefined') {\n window.HSTooltip = HSTooltip;\n}\nexports.default = HSTooltip;\n","/*\n * HSTooltip\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\n\nimport { createPopper, PositioningStrategy, Instance } from '@popperjs/core';\nimport { getClassProperty, dispatch, afterTransition } from '../../utils';\n\nimport { ITooltip } from '../tooltip/interfaces';\n\nimport HSBasePlugin from '../base-plugin';\nimport { ICollectionItem } from '../../interfaces';\n\nimport { POSITIONS } from '../../constants';\n\nclass HSTooltip extends HSBasePlugin<{}> implements ITooltip {\n\tprivate readonly toggle: HTMLElement | null;\n\tpublic content: HTMLElement | null;\n\treadonly eventMode: string;\n\tprivate readonly preventPopper: string;\n\tprivate popperInstance: Instance;\n\tprivate readonly placement: string;\n\tprivate readonly strategy: PositioningStrategy;\n\n\tconstructor(el: HTMLElement, options?: {}, events?: {}) {\n\t\tsuper(el, options, events);\n\n\t\tif (this.el) {\n\t\t\tthis.toggle = this.el.querySelector('.hs-tooltip-toggle') || this.el;\n\t\t\tthis.content = this.el.querySelector('.hs-tooltip-content');\n\t\t\tthis.eventMode = getClassProperty(this.el, '--trigger') || 'hover';\n\t\t\tthis.preventPopper = getClassProperty(\n\t\t\t\tthis.el,\n\t\t\t\t'--prevent-popper',\n\t\t\t\t'false',\n\t\t\t);\n\t\t\tthis.placement = getClassProperty(this.el, '--placement');\n\t\t\tthis.strategy = getClassProperty(\n\t\t\t\tthis.el,\n\t\t\t\t'--strategy',\n\t\t\t) as PositioningStrategy;\n\t\t}\n\n\t\tif (this.el && this.toggle && this.content) this.init();\n\t}\n\n\tprivate init() {\n\t\tthis.createCollection(window.$hsTooltipCollection, this);\n\n\t\tif (this.eventMode === 'click') {\n\t\t\tthis.toggle.addEventListener('click', () => this.click());\n\t\t} else if (this.eventMode === 'focus') {\n\t\t\tthis.toggle.addEventListener('click', () => this.focus());\n\t\t} else if (this.eventMode === 'hover') {\n\t\t\tthis.toggle.addEventListener('mouseenter', () => this.enter());\n\t\t\tthis.toggle.addEventListener('mouseleave', () => this.leave());\n\t\t}\n\n\t\tif (this.preventPopper === 'false') this.buildPopper();\n\t}\n\n\tprivate enter() {\n\t\tthis.show();\n\t}\n\n\tprivate leave() {\n\t\tthis.hide();\n\t}\n\n\tprivate click() {\n\t\tif (this.el.classList.contains('show')) return false;\n\n\t\tthis.show();\n\n\t\tconst handle = () => {\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.hide();\n\n\t\t\t\tthis.toggle.removeEventListener('click', handle, true);\n\t\t\t\tthis.toggle.removeEventListener('blur', handle, true);\n\t\t\t});\n\t\t};\n\n\t\tthis.toggle.addEventListener('click', handle, true);\n\t\tthis.toggle.addEventListener('blur', handle, true);\n\t}\n\n\tprivate focus() {\n\t\tthis.show();\n\n\t\tconst handle = () => {\n\t\t\tthis.hide();\n\n\t\t\tthis.toggle.removeEventListener('blur', handle, true);\n\t\t};\n\n\t\tthis.toggle.addEventListener('blur', handle, true);\n\t}\n\n\tprivate buildPopper() {\n\t\tthis.popperInstance = createPopper(this.toggle, this.content, {\n\t\t\tplacement: POSITIONS[this.placement] || 'top',\n\t\t\tstrategy: this.strategy || 'fixed',\n\t\t\tmodifiers: [\n\t\t\t\t{\n\t\t\t\t\tname: 'offset',\n\t\t\t\t\toptions: {\n\t\t\t\t\t\toffset: [0, 5],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t});\n\t}\n\n\t// Public methods\n\tpublic show() {\n\t\tthis.content.classList.remove('hidden');\n\n\t\tif (this.preventPopper === 'false') {\n\t\t\tthis.popperInstance.setOptions((options) => ({\n\t\t\t\t...options,\n\t\t\t\tmodifiers: [\n\t\t\t\t\t...options.modifiers,\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'eventListeners',\n\t\t\t\t\t\tenabled: true,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t}));\n\n\t\t\tthis.popperInstance.update();\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tthis.el.classList.add('show');\n\n\t\t\tthis.fireEvent('show', this.el);\n\t\t\tdispatch('show.hs.tooltip', this.el, this.el);\n\t\t});\n\t}\n\n\tpublic hide() {\n\t\tthis.el.classList.remove('show');\n\n\t\tif (this.preventPopper === 'false') {\n\t\t\tthis.popperInstance.setOptions((options) => ({\n\t\t\t\t...options,\n\t\t\t\tmodifiers: [\n\t\t\t\t\t...options.modifiers,\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'eventListeners',\n\t\t\t\t\t\tenabled: false,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t}));\n\t\t}\n\n\t\tthis.fireEvent('hide', this.el);\n\t\tdispatch('hide.hs.tooltip', this.el, this.el);\n\n\t\tafterTransition(this.content, () => {\n\t\t\tif (this.el.classList.contains('show')) return false;\n\n\t\t\tthis.content.classList.add('hidden');\n\t\t});\n\t}\n\n\t// Static methods\n\tstatic getInstance(target: HTMLElement | string, isInstance = false) {\n\t\tconst elInCollection = window.$hsTooltipCollection.find(\n\t\t\t(el) =>\n\t\t\t\tel.element.el ===\n\t\t\t\t(typeof target === 'string' ? document.querySelector(target) : target),\n\t\t);\n\n\t\treturn elInCollection\n\t\t\t? isInstance\n\t\t\t\t? elInCollection\n\t\t\t\t: elInCollection.element.el\n\t\t\t: null;\n\t}\n\n\tstatic autoInit() {\n\t\tif (!window.$hsTooltipCollection) window.$hsTooltipCollection = [];\n\n\t\tdocument.querySelectorAll('.hs-tooltip').forEach((el: HTMLElement) => {\n\t\t\tif (\n\t\t\t\t!window.$hsTooltipCollection.find(\n\t\t\t\t\t(elC) => (elC?.element?.el as HTMLElement) === el,\n\t\t\t\t)\n\t\t\t)\n\t\t\t\tnew HSTooltip(el);\n\t\t});\n\t}\n\n\tstatic show(target: HTMLElement) {\n\t\tconst elInCollection = window.$hsTooltipCollection.find(\n\t\t\t(el) =>\n\t\t\t\tel.element.el ===\n\t\t\t\t(typeof target === 'string' ? document.querySelector(target) : target),\n\t\t);\n\n\t\tif (elInCollection) {\n\t\t\tswitch (elInCollection.element.eventMode) {\n\t\t\t\tcase 'click':\n\t\t\t\t\telInCollection.element.click();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'focus':\n\t\t\t\t\telInCollection.element.focus();\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\telInCollection.element.enter();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tstatic hide(target: HTMLElement) {\n\t\tconst elInCollection = window.$hsTooltipCollection.find(\n\t\t\t(el) =>\n\t\t\t\tel.element.el ===\n\t\t\t\t(typeof target === 'string' ? document.querySelector(target) : target),\n\t\t);\n\n\t\tif (elInCollection) elInCollection.element.hide();\n\t}\n\n\t// Backward compatibility\n\tstatic on(evt: string, target: HTMLElement, cb: Function) {\n\t\tconst elInCollection = window.$hsTooltipCollection.find(\n\t\t\t(el) =>\n\t\t\t\tel.element.el ===\n\t\t\t\t(typeof target === 'string' ? document.querySelector(target) : target),\n\t\t);\n\n\t\tif (elInCollection) elInCollection.element.events[evt] = cb;\n\t}\n}\n\ndeclare global {\n\tinterface Window {\n\t\tHSTooltip: Function;\n\t\t$hsTooltipCollection: ICollectionItem[];\n\t}\n}\n\nwindow.addEventListener('load', () => {\n\tHSTooltip.autoInit();\n\n\t// Uncomment for debug\n\t// console.log('Tooltip collection:', window.$hsTooltipCollection);\n});\n\nif (typeof window !== 'undefined') {\n\twindow.HSTooltip = HSTooltip;\n}\n\nexport default HSTooltip;\n","\"use strict\";\n/*\n * HSTreeView\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../../utils\");\nvar base_plugin_1 = __importDefault(require(\"../base-plugin\"));\nvar HSTreeView = /** @class */ (function (_super) {\n __extends(HSTreeView, _super);\n function HSTreeView(el, options, events) {\n var _this = _super.call(this, el, options, events) || this;\n _this.items = [];\n var data = el.getAttribute('data-hs-tree-view');\n var dataOptions = data ? JSON.parse(data) : {};\n var concatOptions = __assign(__assign({}, dataOptions), options);\n _this.controlBy = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.controlBy) || 'button';\n _this.autoSelectChildren = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.autoSelectChildren) || false;\n _this.isIndeterminate = (concatOptions === null || concatOptions === void 0 ? void 0 : concatOptions.isIndeterminate) || true;\n _this.init();\n return _this;\n }\n HSTreeView.prototype.init = function () {\n this.createCollection(window.$hsTreeViewCollection, this);\n HSTreeView.group += 1;\n this.initItems();\n };\n HSTreeView.prototype.initItems = function () {\n var _this = this;\n this.el.querySelectorAll('[data-hs-tree-view-item]').forEach(function (el, ind) {\n var _a, _b;\n var data = JSON.parse(el.getAttribute('data-hs-tree-view-item'));\n if (!el.id)\n el.id = \"tree-view-item-\".concat(HSTreeView.group, \"-\").concat(ind);\n var concatData = __assign(__assign({}, data), { id: (_a = data.id) !== null && _a !== void 0 ? _a : el.id, path: _this.getPath(el), isSelected: (_b = data.isSelected) !== null && _b !== void 0 ? _b : false });\n _this.items.push(concatData);\n if (_this.controlBy === 'checkbox')\n _this.controlByCheckbox(el, concatData);\n else\n _this.controlByButton(el, concatData);\n });\n };\n HSTreeView.prototype.controlByButton = function (el, data) {\n var _this = this;\n el.addEventListener('click', function (evt) {\n evt.stopPropagation();\n if (el.classList.contains('disabled'))\n return false;\n if (!evt.metaKey && !evt.shiftKey)\n _this.unselectItem(data);\n _this.selectItem(el, data);\n _this.fireEvent('click', {\n el: el,\n data: data,\n });\n (0, utils_1.dispatch)('click.hs.treeView', _this.el, {\n el: el,\n data: data,\n });\n });\n };\n HSTreeView.prototype.controlByCheckbox = function (el, data) {\n var _this = this;\n var control = el.querySelector(\"input[value=\\\"\".concat(data.value, \"\\\"]\"));\n if (!!control)\n control.addEventListener('change', function () {\n if (_this.autoSelectChildren) {\n _this.selectItem(el, data);\n if (data.isDir)\n _this.selectChildren(el, data);\n _this.toggleParent(el);\n }\n else\n _this.selectItem(el, data);\n });\n };\n HSTreeView.prototype.getItem = function (id) {\n return this.items.find(function (el) { return el.id === id; });\n };\n HSTreeView.prototype.getPath = function (el) {\n var _a;\n var path = [];\n var parent = el.closest('[data-hs-tree-view-item]');\n while (!!parent) {\n var data = JSON.parse(parent.getAttribute('data-hs-tree-view-item'));\n path.push(data.value);\n parent = (_a = parent.parentElement) === null || _a === void 0 ? void 0 : _a.closest('[data-hs-tree-view-item]');\n }\n return path.reverse().join('/');\n };\n HSTreeView.prototype.unselectItem = function (exception) {\n var _this = this;\n if (exception === void 0) { exception = null; }\n var selectedItems = this.getSelectedItems();\n if (exception)\n selectedItems = selectedItems.filter(function (el) { return el.id !== exception.id; });\n if (selectedItems.length) {\n selectedItems.forEach(function (el) {\n var selectedElement = document.querySelector(\"#\".concat(el.id));\n selectedElement.classList.remove('selected');\n _this.changeItemProp(el.id, 'isSelected', false);\n });\n }\n };\n HSTreeView.prototype.selectItem = function (el, data) {\n if (data.isSelected) {\n el.classList.remove('selected');\n this.changeItemProp(data.id, 'isSelected', false);\n }\n else {\n el.classList.add('selected');\n this.changeItemProp(data.id, 'isSelected', true);\n }\n };\n HSTreeView.prototype.selectChildren = function (el, data) {\n var _this = this;\n var items = el.querySelectorAll('[data-hs-tree-view-item]');\n Array.from(items)\n .filter(function (elI) { return !elI.classList.contains('disabled'); })\n .forEach(function (elI) {\n var initialItemData = elI.id ? _this.getItem(elI.id) : null;\n if (!initialItemData)\n return false;\n if (data.isSelected) {\n elI.classList.add('selected');\n _this.changeItemProp(initialItemData.id, 'isSelected', true);\n }\n else {\n elI.classList.remove('selected');\n _this.changeItemProp(initialItemData.id, 'isSelected', false);\n }\n var currentItemData = _this.getItem(elI.id);\n var control = elI.querySelector(\"input[value=\\\"\".concat(currentItemData.value, \"\\\"]\"));\n if (_this.isIndeterminate)\n control.indeterminate = false;\n if (currentItemData.isSelected)\n control.checked = true;\n else\n control.checked = false;\n });\n };\n HSTreeView.prototype.toggleParent = function (el) {\n var _this = this;\n var _a, _b;\n var parent = (_a = el.parentElement) === null || _a === void 0 ? void 0 : _a.closest('[data-hs-tree-view-item]');\n var _loop_1 = function () {\n var items = parent.querySelectorAll('[data-hs-tree-view-item]:not(.disabled)');\n var data = JSON.parse(parent.getAttribute('data-hs-tree-view-item'));\n var control = parent.querySelector(\"input[value=\\\"\".concat(data.value, \"\\\"]\"));\n var hasUnchecked = false;\n var checkedItems = 0;\n items.forEach(function (elI) {\n var dataI = _this.getItem(elI.id);\n if (dataI.isSelected)\n checkedItems += 1;\n if (!dataI.isSelected)\n hasUnchecked = true;\n });\n if (hasUnchecked) {\n parent.classList.remove('selected');\n this_1.changeItemProp(parent.id, 'isSelected', false);\n control.checked = false;\n }\n else {\n parent.classList.add('selected');\n this_1.changeItemProp(parent.id, 'isSelected', true);\n control.checked = true;\n }\n if (this_1.isIndeterminate) {\n if (checkedItems > 0 && checkedItems < items.length)\n control.indeterminate = true;\n else\n control.indeterminate = false;\n }\n parent = (_b = parent.parentElement) === null || _b === void 0 ? void 0 : _b.closest('[data-hs-tree-view-item]');\n };\n var this_1 = this;\n while (!!parent) {\n _loop_1();\n }\n };\n // Public methods\n HSTreeView.prototype.update = function () {\n var _this = this;\n this.items.map(function (el) {\n var selector = document.querySelector(\"#\".concat(el.id));\n if (el.path !== _this.getPath(selector))\n el.path = _this.getPath(selector);\n return el;\n });\n };\n HSTreeView.prototype.getSelectedItems = function () {\n return this.items.filter(function (el) { return el.isSelected; });\n };\n HSTreeView.prototype.changeItemProp = function (id, prop, val) {\n this.items.map(function (el) {\n // @ts-ignore\n if (el.id === id)\n el[prop] = val;\n return el;\n });\n };\n // Static methods\n HSTreeView.getInstance = function (target, isInstance) {\n var elInCollection = window.$hsTreeViewCollection.find(function (el) {\n return el.element.el ===\n (typeof target === 'string' ? document.querySelector(target) : target);\n });\n return elInCollection\n ? isInstance\n ? elInCollection\n : elInCollection.element.el\n : null;\n };\n HSTreeView.autoInit = function () {\n if (!window.$hsTreeViewCollection)\n window.$hsTreeViewCollection = [];\n document\n .querySelectorAll('[data-hs-tree-view]:not(.--prevent-on-load-init)')\n .forEach(function (el) {\n if (!window.$hsTreeViewCollection.find(function (elC) { var _a; return ((_a = elC === null || elC === void 0 ? void 0 : elC.element) === null || _a === void 0 ? void 0 : _a.el) === el; }))\n new HSTreeView(el);\n });\n };\n // Backward compatibility\n HSTreeView.on = function (evt, target, cb) {\n var elInCollection = window.$hsTreeViewCollection.find(function (el) {\n return el.element.el ===\n (typeof target === 'string' ? document.querySelector(target) : target);\n });\n if (elInCollection)\n elInCollection.element.events[evt] = cb;\n };\n HSTreeView.group = 0;\n return HSTreeView;\n}(base_plugin_1.default));\nwindow.addEventListener('load', function () {\n HSTreeView.autoInit();\n // Uncomment for debug\n // console.log('Tree view collection:', window.$hsTreeViewCollection);\n});\nif (typeof window !== 'undefined') {\n window.HSTreeView = HSTreeView;\n}\nexports.default = HSTreeView;\n","/*\n * HSTreeView\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\n\nimport { dispatch } from '../../utils';\n\nimport {\n\tITreeViewOptions,\n\tITreeView,\n\tITreeViewItem,\n\tITreeViewOptionsControlBy,\n} from './interfaces';\n\nimport HSBasePlugin from '../base-plugin';\nimport { ICollectionItem } from '../../interfaces';\n\nclass HSTreeView extends HSBasePlugin implements ITreeView {\n\tprivate items: ITreeViewItem[] = [];\n\tprivate readonly controlBy: ITreeViewOptionsControlBy;\n\tprivate readonly autoSelectChildren: boolean;\n\tprivate readonly isIndeterminate: boolean;\n\tstatic group: number = 0;\n\n\tconstructor(el: HTMLElement, options?: ITreeViewOptions, events?: {}) {\n\t\tsuper(el, options, events);\n\n\t\tconst data = el.getAttribute('data-hs-tree-view');\n\t\tconst dataOptions: ITreeView = data ? JSON.parse(data) : {};\n\t\tconst concatOptions = {\n\t\t\t...dataOptions,\n\t\t\t...options,\n\t\t};\n\n\t\tthis.controlBy = concatOptions?.controlBy || 'button';\n\t\tthis.autoSelectChildren = concatOptions?.autoSelectChildren || false;\n\t\tthis.isIndeterminate = concatOptions?.isIndeterminate || true;\n\n\t\tthis.init();\n\t}\n\n\tprivate init() {\n\t\tthis.createCollection(window.$hsTreeViewCollection, this);\n\n\t\tHSTreeView.group += 1;\n\n\t\tthis.initItems();\n\t}\n\n\tprivate initItems() {\n\t\tthis.el.querySelectorAll('[data-hs-tree-view-item]').forEach((el, ind) => {\n\t\t\tconst data = JSON.parse(el.getAttribute('data-hs-tree-view-item'));\n\t\t\tif (!el.id) el.id = `tree-view-item-${HSTreeView.group}-${ind}`;\n\t\t\tconst concatData = {\n\t\t\t\t...data,\n\t\t\t\tid: data.id ?? el.id,\n\t\t\t\tpath: this.getPath(el),\n\t\t\t\tisSelected: data.isSelected ?? false,\n\t\t\t};\n\n\t\t\tthis.items.push(concatData);\n\n\t\t\tif (this.controlBy === 'checkbox') this.controlByCheckbox(el, concatData);\n\t\t\telse this.controlByButton(el, concatData);\n\t\t});\n\t}\n\n\tprivate controlByButton(el: Element, data: ITreeViewItem) {\n\t\tel.addEventListener('click', (evt: PointerEvent) => {\n\t\t\tevt.stopPropagation();\n\n\t\t\tif (el.classList.contains('disabled')) return false;\n\n\t\t\tif (!evt.metaKey && !evt.shiftKey) this.unselectItem(data);\n\t\t\tthis.selectItem(el, data);\n\n\t\t\tthis.fireEvent('click', {\n\t\t\t\tel,\n\t\t\t\tdata: data,\n\t\t\t});\n\t\t\tdispatch('click.hs.treeView', this.el, {\n\t\t\t\tel,\n\t\t\t\tdata: data,\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate controlByCheckbox(el: Element, data: ITreeViewItem) {\n\t\tconst control = el.querySelector(`input[value=\"${data.value}\"]`);\n\n\t\tif (!!control)\n\t\t\tcontrol.addEventListener('change', () => {\n\t\t\t\tif (this.autoSelectChildren) {\n\t\t\t\t\tthis.selectItem(el, data);\n\t\t\t\t\tif (data.isDir) this.selectChildren(el, data);\n\t\t\t\t\tthis.toggleParent(el);\n\t\t\t\t} else this.selectItem(el, data);\n\t\t\t});\n\t}\n\n\tprivate getItem(id: string) {\n\t\treturn this.items.find((el) => el.id === id);\n\t}\n\n\tprivate getPath(el: Element) {\n\t\tconst path: any = [];\n\t\tlet parent = el.closest('[data-hs-tree-view-item]');\n\n\t\twhile (!!parent) {\n\t\t\tconst data = JSON.parse(parent.getAttribute('data-hs-tree-view-item'));\n\n\t\t\tpath.push(data.value);\n\n\t\t\tparent = parent.parentElement?.closest('[data-hs-tree-view-item]');\n\t\t}\n\n\t\treturn path.reverse().join('/');\n\t}\n\n\tprivate unselectItem(exception: ITreeViewItem | null = null) {\n\t\tlet selectedItems = this.getSelectedItems();\n\t\tif (exception)\n\t\t\tselectedItems = selectedItems.filter((el) => el.id !== exception.id);\n\n\t\tif (selectedItems.length) {\n\t\t\tselectedItems.forEach((el) => {\n\t\t\t\tconst selectedElement = document.querySelector(`#${el.id}`);\n\n\t\t\t\tselectedElement.classList.remove('selected');\n\t\t\t\tthis.changeItemProp(el.id, 'isSelected', false);\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate selectItem(el: Element, data: ITreeViewItem) {\n\t\tif (data.isSelected) {\n\t\t\tel.classList.remove('selected');\n\t\t\tthis.changeItemProp(data.id, 'isSelected', false);\n\t\t} else {\n\t\t\tel.classList.add('selected');\n\t\t\tthis.changeItemProp(data.id, 'isSelected', true);\n\t\t}\n\t}\n\n\tprivate selectChildren(el: Element, data: ITreeViewItem) {\n\t\tconst items = el.querySelectorAll('[data-hs-tree-view-item]');\n\n\t\tArray.from(items)\n\t\t\t.filter((elI) => !elI.classList.contains('disabled'))\n\t\t\t.forEach((elI) => {\n\t\t\t\tconst initialItemData = elI.id ? this.getItem(elI.id) : null;\n\n\t\t\t\tif (!initialItemData) return false;\n\n\t\t\t\tif (data.isSelected) {\n\t\t\t\t\telI.classList.add('selected');\n\t\t\t\t\tthis.changeItemProp(initialItemData.id, 'isSelected', true);\n\t\t\t\t} else {\n\t\t\t\t\telI.classList.remove('selected');\n\t\t\t\t\tthis.changeItemProp(initialItemData.id, 'isSelected', false);\n\t\t\t\t}\n\n\t\t\t\tconst currentItemData = this.getItem(elI.id);\n\t\t\t\tconst control: HTMLFormElement = elI.querySelector(\n\t\t\t\t\t`input[value=\"${currentItemData.value}\"]`,\n\t\t\t\t);\n\n\t\t\t\tif (this.isIndeterminate) control.indeterminate = false;\n\n\t\t\t\tif (currentItemData.isSelected) control.checked = true;\n\t\t\t\telse control.checked = false;\n\t\t\t});\n\t}\n\n\tprivate toggleParent(el: Element) {\n\t\tlet parent = el.parentElement?.closest('[data-hs-tree-view-item]');\n\n\t\twhile (!!parent) {\n\t\t\tconst items = parent.querySelectorAll(\n\t\t\t\t'[data-hs-tree-view-item]:not(.disabled)',\n\t\t\t);\n\t\t\tconst data = JSON.parse(parent.getAttribute('data-hs-tree-view-item'));\n\t\t\tconst control: HTMLFormElement = parent.querySelector(\n\t\t\t\t`input[value=\"${data.value}\"]`,\n\t\t\t);\n\t\t\tlet hasUnchecked = false;\n\t\t\tlet checkedItems = 0;\n\n\t\t\titems.forEach((elI) => {\n\t\t\t\tconst dataI = this.getItem(elI.id);\n\n\t\t\t\tif (dataI.isSelected) checkedItems += 1;\n\t\t\t\tif (!dataI.isSelected) hasUnchecked = true;\n\t\t\t});\n\n\t\t\tif (hasUnchecked) {\n\t\t\t\tparent.classList.remove('selected');\n\t\t\t\tthis.changeItemProp(parent.id, 'isSelected', false);\n\t\t\t\tcontrol.checked = false;\n\t\t\t} else {\n\t\t\t\tparent.classList.add('selected');\n\t\t\t\tthis.changeItemProp(parent.id, 'isSelected', true);\n\t\t\t\tcontrol.checked = true;\n\t\t\t}\n\n\t\t\tif (this.isIndeterminate) {\n\t\t\t\tif (checkedItems > 0 && checkedItems < items.length)\n\t\t\t\t\tcontrol.indeterminate = true;\n\t\t\t\telse control.indeterminate = false;\n\t\t\t}\n\n\t\t\tparent = parent.parentElement?.closest('[data-hs-tree-view-item]');\n\t\t}\n\t}\n\n\t// Public methods\n\tpublic update() {\n\t\tthis.items.map((el: ITreeViewItem) => {\n\t\t\tconst selector = document.querySelector(`#${el.id}`);\n\n\t\t\tif (el.path !== this.getPath(selector)) el.path = this.getPath(selector);\n\n\t\t\treturn el;\n\t\t});\n\t}\n\n\tpublic getSelectedItems() {\n\t\treturn this.items.filter((el) => el.isSelected);\n\t}\n\n\tpublic changeItemProp(id: string, prop: string, val: any) {\n\t\tthis.items.map((el) => {\n\t\t\t// @ts-ignore\n\t\t\tif (el.id === id) el[prop] = val;\n\n\t\t\treturn el;\n\t\t});\n\t}\n\n\t// Static methods\n\tstatic getInstance(target: HTMLElement | string, isInstance?: boolean) {\n\t\tconst elInCollection = window.$hsTreeViewCollection.find(\n\t\t\t(el) =>\n\t\t\t\tel.element.el ===\n\t\t\t\t(typeof target === 'string' ? document.querySelector(target) : target),\n\t\t);\n\n\t\treturn elInCollection\n\t\t\t? isInstance\n\t\t\t\t? elInCollection\n\t\t\t\t: elInCollection.element.el\n\t\t\t: null;\n\t}\n\n\tstatic autoInit() {\n\t\tif (!window.$hsTreeViewCollection) window.$hsTreeViewCollection = [];\n\n\t\tdocument\n\t\t\t.querySelectorAll('[data-hs-tree-view]:not(.--prevent-on-load-init)')\n\t\t\t.forEach((el: HTMLElement) => {\n\t\t\t\tif (\n\t\t\t\t\t!window.$hsTreeViewCollection.find(\n\t\t\t\t\t\t(elC) => (elC?.element?.el as HTMLElement) === el,\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t\tnew HSTreeView(el);\n\t\t\t});\n\t}\n\n\t// Backward compatibility\n\tstatic on(evt: string, target: HTMLElement, cb: Function) {\n\t\tconst elInCollection = window.$hsTreeViewCollection.find(\n\t\t\t(el) =>\n\t\t\t\tel.element.el ===\n\t\t\t\t(typeof target === 'string' ? document.querySelector(target) : target),\n\t\t);\n\n\t\tif (elInCollection) elInCollection.element.events[evt] = cb;\n\t}\n}\n\ndeclare global {\n\tinterface Window {\n\t\tHSTreeView: Function;\n\t\t$hsTreeViewCollection: ICollectionItem[];\n\t}\n}\n\nwindow.addEventListener('load', () => {\n\tHSTreeView.autoInit();\n\n\t// Uncomment for debug\n\t// console.log('Tree view collection:', window.$hsTreeViewCollection);\n});\n\nif (typeof window !== 'undefined') {\n\twindow.HSTreeView = HSTreeView;\n}\n\nexport default HSTreeView;\n","\"use strict\";\n/*\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.COLLECTIONS = void 0;\nvar copy_markup_1 = __importDefault(require(\"../plugins/copy-markup\"));\nvar accordion_1 = __importDefault(require(\"../plugins/accordion\"));\nvar carousel_1 = __importDefault(require(\"../plugins/carousel\"));\nvar collapse_1 = __importDefault(require(\"../plugins/collapse\"));\nvar combobox_1 = __importDefault(require(\"../plugins/combobox\"));\nvar datatable_1 = __importDefault(require(\"../plugins/datatable\"));\nvar dropdown_1 = __importDefault(require(\"../plugins/dropdown\"));\nvar file_upload_1 = __importDefault(require(\"../plugins/file-upload\"));\nvar input_number_1 = __importDefault(require(\"../plugins/input-number\"));\nvar overlay_1 = __importDefault(require(\"../plugins/overlay\"));\nvar pin_input_1 = __importDefault(require(\"../plugins/pin-input\"));\nvar range_slider_1 = __importDefault(require(\"../plugins/range-slider\"));\nvar remove_element_1 = __importDefault(require(\"../plugins/remove-element\"));\nvar scrollspy_1 = __importDefault(require(\"../plugins/scrollspy\"));\nvar select_1 = __importDefault(require(\"../plugins/select\"));\nvar stepper_1 = __importDefault(require(\"../plugins/stepper\"));\nvar strong_password_1 = __importDefault(require(\"../plugins/strong-password\"));\nvar tabs_1 = __importDefault(require(\"../plugins/tabs\"));\nvar textarea_auto_height_1 = __importDefault(require(\"../plugins/textarea-auto-height\"));\nvar theme_switch_1 = __importDefault(require(\"../plugins/theme-switch\"));\nvar toggle_count_1 = __importDefault(require(\"../plugins/toggle-count\"));\nvar toggle_password_1 = __importDefault(require(\"../plugins/toggle-password\"));\nvar tooltip_1 = __importDefault(require(\"../plugins/tooltip\"));\nvar tree_view_1 = __importDefault(require(\"../plugins/tree-view\"));\nexports.COLLECTIONS = [\n {\n key: 'copy-markup',\n fn: copy_markup_1.default,\n collection: '$hsCopyMarkupCollection',\n },\n { key: 'accordion', fn: accordion_1.default, collection: '$hsAccordionCollection' },\n { key: 'carousel', fn: carousel_1.default, collection: '$hsCarouselCollection' },\n { key: 'collapse', fn: collapse_1.default, collection: '$hsCollapseCollection' },\n { key: 'combobox', fn: combobox_1.default, collection: '$hsComboBoxCollection' },\n { key: 'datatable', fn: datatable_1.default, collection: '$hsDataTableCollection' },\n { key: 'dropdown', fn: dropdown_1.default, collection: '$hsDropdownCollection' },\n {\n key: 'file-upload',\n fn: file_upload_1.default,\n collection: '$hsFileUploadCollection',\n },\n {\n key: 'input-number',\n fn: input_number_1.default,\n collection: '$hsInputNumberCollection',\n },\n { key: 'overlay', fn: overlay_1.default, collection: '$hsOverlayCollection' },\n { key: 'pin-input', fn: pin_input_1.default, collection: '$hsPinInputCollection' },\n {\n key: 'range-slider',\n fn: range_slider_1.default,\n collection: '$hsRangeSliderCollection',\n },\n {\n key: 'remove-element',\n fn: remove_element_1.default,\n collection: '$hsRemoveElementCollection',\n },\n { key: 'scrollspy', fn: scrollspy_1.default, collection: '$hsScrollspyCollection' },\n { key: 'select', fn: select_1.default, collection: '$hsSelectCollection' },\n { key: 'stepper', fn: stepper_1.default, collection: '$hsStepperCollection' },\n {\n key: 'strong-password',\n fn: strong_password_1.default,\n collection: '$hsStrongPasswordCollection',\n },\n { key: 'tabs', fn: tabs_1.default, collection: '$hsTabsCollection' },\n {\n key: 'textarea-auto-height',\n fn: textarea_auto_height_1.default,\n collection: '$hsTextareaAutoHeightCollection',\n },\n {\n key: 'theme-switch',\n fn: theme_switch_1.default,\n collection: '$hsThemeSwitchCollection',\n },\n {\n key: 'toggle-count',\n fn: toggle_count_1.default,\n collection: '$hsToggleCountCollection',\n },\n {\n key: 'toggle-password',\n fn: toggle_password_1.default,\n collection: '$hsTogglePasswordCollection',\n },\n { key: 'tooltip', fn: tooltip_1.default, collection: '$hsTooltipCollection' },\n { key: 'tree-view', fn: tree_view_1.default, collection: '$hsTreeViewCollection' },\n];\n","/*\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\n\nimport { ISpaCollectionItem } from '../spa/interfaces';\n\nimport HSCopyMarkup from '../plugins/copy-markup';\nimport HSAccordion from '../plugins/accordion';\nimport HSCarousel from '../plugins/carousel';\nimport HSCollapse from '../plugins/collapse';\nimport HSComboBox from '../plugins/combobox';\nimport HSDataTable from '../plugins/datatable';\nimport HSDropdown from '../plugins/dropdown';\nimport HSFileUpload from '../plugins/file-upload';\nimport HSInputNumber from '../plugins/input-number';\nimport HSOverlay from '../plugins/overlay';\nimport HSPinInput from '../plugins/pin-input';\nimport HSRangeSlider from '../plugins/range-slider';\nimport HSRemoveElement from '../plugins/remove-element';\nimport HSScrollspy from '../plugins/scrollspy';\nimport HSSelect from '../plugins/select';\nimport HSStepper from '../plugins/stepper';\nimport HSStrongPassword from '../plugins/strong-password';\nimport HSTabs from '../plugins/tabs';\nimport HSTextareaAutoHeight from '../plugins/textarea-auto-height';\nimport HSThemeSwitch from '../plugins/theme-switch';\nimport HSToggleCount from '../plugins/toggle-count';\nimport HSTogglePassword from '../plugins/toggle-password';\nimport HSTooltip from '../plugins/tooltip';\nimport HSTreeView from '../plugins/tree-view';\n\nexport const COLLECTIONS: ISpaCollectionItem[] = [\n\t{\n\t\tkey: 'copy-markup',\n\t\tfn: HSCopyMarkup,\n\t\tcollection: '$hsCopyMarkupCollection',\n\t},\n\t{ key: 'accordion', fn: HSAccordion, collection: '$hsAccordionCollection' },\n\t{ key: 'carousel', fn: HSCarousel, collection: '$hsCarouselCollection' },\n\t{ key: 'collapse', fn: HSCollapse, collection: '$hsCollapseCollection' },\n\t{ key: 'combobox', fn: HSComboBox, collection: '$hsComboBoxCollection' },\n\t{ key: 'datatable', fn: HSDataTable, collection: '$hsDataTableCollection' },\n\t{ key: 'dropdown', fn: HSDropdown, collection: '$hsDropdownCollection' },\n\t{\n\t\tkey: 'file-upload',\n\t\tfn: HSFileUpload,\n\t\tcollection: '$hsFileUploadCollection',\n\t},\n\t{\n\t\tkey: 'input-number',\n\t\tfn: HSInputNumber,\n\t\tcollection: '$hsInputNumberCollection',\n\t},\n\t{ key: 'overlay', fn: HSOverlay, collection: '$hsOverlayCollection' },\n\t{ key: 'pin-input', fn: HSPinInput, collection: '$hsPinInputCollection' },\n\t{\n\t\tkey: 'range-slider',\n\t\tfn: HSRangeSlider,\n\t\tcollection: '$hsRangeSliderCollection',\n\t},\n\t{\n\t\tkey: 'remove-element',\n\t\tfn: HSRemoveElement,\n\t\tcollection: '$hsRemoveElementCollection',\n\t},\n\t{ key: 'scrollspy', fn: HSScrollspy, collection: '$hsScrollspyCollection' },\n\t{ key: 'select', fn: HSSelect, collection: '$hsSelectCollection' },\n\t{ key: 'stepper', fn: HSStepper, collection: '$hsStepperCollection' },\n\t{\n\t\tkey: 'strong-password',\n\t\tfn: HSStrongPassword,\n\t\tcollection: '$hsStrongPasswordCollection',\n\t},\n\t{ key: 'tabs', fn: HSTabs, collection: '$hsTabsCollection' },\n\t{\n\t\tkey: 'textarea-auto-height',\n\t\tfn: HSTextareaAutoHeight,\n\t\tcollection: '$hsTextareaAutoHeightCollection',\n\t},\n\t{\n\t\tkey: 'theme-switch',\n\t\tfn: HSThemeSwitch,\n\t\tcollection: '$hsThemeSwitchCollection',\n\t},\n\t{\n\t\tkey: 'toggle-count',\n\t\tfn: HSToggleCount,\n\t\tcollection: '$hsToggleCountCollection',\n\t},\n\t{\n\t\tkey: 'toggle-password',\n\t\tfn: HSTogglePassword,\n\t\tcollection: '$hsTogglePasswordCollection',\n\t},\n\t{ key: 'tooltip', fn: HSTooltip, collection: '$hsTooltipCollection' },\n\t{ key: 'tree-view', fn: HSTreeView, collection: '$hsTreeViewCollection' },\n];\n","\"use strict\";\n/*\n * HSStaticMethods\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../utils\");\nvar index_1 = require(\"../spa/index\");\nvar HSStaticMethods = {\n getClassProperty: utils_1.getClassProperty,\n afterTransition: utils_1.afterTransition,\n autoInit: function (collection) {\n if (collection === void 0) { collection = 'all'; }\n if (collection === 'all') {\n index_1.COLLECTIONS.forEach(function (_a) {\n var fn = _a.fn;\n fn === null || fn === void 0 ? void 0 : fn.autoInit();\n });\n }\n else {\n index_1.COLLECTIONS.forEach(function (_a) {\n var key = _a.key, fn = _a.fn;\n if (collection.includes(key))\n fn === null || fn === void 0 ? void 0 : fn.autoInit();\n });\n }\n },\n cleanCollection: function (name) {\n if (name === void 0) { name = 'all'; }\n if (name === 'all') {\n index_1.COLLECTIONS.forEach(function (_a) {\n var collection = _a.collection;\n if (window[collection] instanceof Array) {\n window[collection] = [];\n }\n });\n }\n else {\n index_1.COLLECTIONS.forEach(function (_a) {\n var key = _a.key, collection = _a.collection;\n if (name.includes(key) &&\n window[collection] instanceof Array) {\n window[collection] = [];\n }\n });\n }\n },\n};\nif (typeof window !== 'undefined') {\n window.HSStaticMethods = HSStaticMethods;\n}\nexports.default = HSStaticMethods;\n","/*\n * HSStaticMethods\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\n\nimport { getClassProperty, afterTransition } from '../utils';\nimport { COLLECTIONS } from '../spa/index';\nimport { IStaticMethods } from '../static/interfaces';\nimport { ICollectionItem } from '../interfaces';\nimport type HSCopyMarkup from '../plugins/copy-markup';\nimport type HSAccordion from '../plugins/accordion';\nimport type HSCarousel from '../plugins/carousel';\nimport type HSCollapse from '../plugins/collapse';\nimport type HSComboBox from '../plugins/combobox';\nimport type HSDataTable from '../plugins/datatable';\nimport type HSDropdown from '../plugins/dropdown';\nimport type HSFileUpload from '../plugins/file-upload';\nimport type HSInputNumber from '../plugins/input-number';\nimport type HSOverlay from '../plugins/overlay';\nimport type HSPinInput from '../plugins/pin-input';\nimport type HSRangeSlider from '../plugins/range-slider';\nimport type HSRemoveElement from '../plugins/remove-element';\nimport type HSScrollspy from '../plugins/scrollspy';\nimport type HSSelect from '../plugins/select';\nimport type HSStepper from '../plugins/stepper';\nimport type HSStrongPassword from '../plugins/strong-password';\nimport type HSTabs from '../plugins/tabs';\nimport type HSTextareaAutoHeight from '../plugins/textarea-auto-height';\nimport type HSThemeSwitch from '../plugins/theme-switch';\nimport type HSToggleCount from '../plugins/toggle-count';\nimport type HSTogglePassword from '../plugins/toggle-password';\nimport type HSTooltip from '../plugins/tooltip';\nimport type HSTreeView from '../plugins/tree-view';\n\ndeclare global {\n\tinterface Window {\n\t\tHSStaticMethods: IStaticMethods;\n\t\t$hsCopyMarkupCollection: ICollectionItem[];\n\t\t$hsAccordionCollection: ICollectionItem[];\n\t\t$hsCarouselCollection: ICollectionItem[];\n\t\t$hsCollapseCollection: ICollectionItem[];\n\t\t$hsComboBoxCollection: ICollectionItem[];\n\t\t$hsDataTableCollection: ICollectionItem[];\n\t\t$hsDropdownCollection: ICollectionItem[];\n\t\t$hsFileUploadCollection: ICollectionItem[];\n\t\t$hsInputNumberCollection: { id: number; element: HSInputNumber }[];\n\t\t$hsOverlayCollection: ICollectionItem[];\n\t\t$hsPinInputCollection: ICollectionItem[];\n\t\t$hsRangeSliderCollection: ICollectionItem[];\n\t\t$hsRemoveElementCollection: ICollectionItem[];\n\t\t$hsScrollspyCollection: ICollectionItem[];\n\t\t$hsSelectCollection: ICollectionItem[];\n\t\t$hsStepperCollection: ICollectionItem[];\n\t\t$hsStrongPasswordCollection: ICollectionItem[];\n\t\t$hsTabsCollection: ICollectionItem[];\n\t\t$hsTextareaAutoHeightCollection: ICollectionItem[];\n\t\t$hsThemeSwitchCollection: ICollectionItem[];\n\t\t$hsToggleCountCollection: ICollectionItem[];\n\t\t$hsTogglePasswordCollection: ICollectionItem[];\n\t\t$hsTooltipCollection: ICollectionItem[];\n\t\t$hsTreeViewCollection: ICollectionItem[];\n\t}\n}\n\nconst HSStaticMethods: IStaticMethods = {\n\tgetClassProperty,\n\tafterTransition,\n\tautoInit(collection: string | string[] = 'all') {\n\t\tif (collection === 'all') {\n\t\t\tCOLLECTIONS.forEach(({ fn }) => {\n\t\t\t\tfn?.autoInit();\n\t\t\t});\n\t\t} else {\n\t\t\tCOLLECTIONS.forEach(({ key, fn }) => {\n\t\t\t\tif (collection.includes(key)) fn?.autoInit();\n\t\t\t});\n\t\t}\n\t},\n\tcleanCollection(name: string | string[] = 'all') {\n\t\tif (name === 'all') {\n\t\t\tCOLLECTIONS.forEach(({ collection }) => {\n\t\t\t\tif ((window as any)[collection] instanceof Array) {\n\t\t\t\t\t(window as any)[collection] = [];\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tCOLLECTIONS.forEach(({ key, collection }) => {\n\t\t\t\tif (\n\t\t\t\t\tname.includes(key) &&\n\t\t\t\t\t(window as any)[collection] instanceof Array\n\t\t\t\t) {\n\t\t\t\t\t(window as any)[collection] = [];\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t},\n};\n\nif (typeof window !== 'undefined') {\n\twindow.HSStaticMethods = HSStaticMethods;\n}\n\nexport default HSStaticMethods;\n","/*\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\n\nconst stringToBoolean = (string: string): boolean => {\n\treturn string === 'true' ? true : false;\n};\n\nconst getClassProperty = (el: HTMLElement, prop: string, val = '') => {\n\treturn (window.getComputedStyle(el).getPropertyValue(prop) || val).replace(\n\t\t' ',\n\t\t'',\n\t);\n};\n\nconst getClassPropertyAlt = (\n\tel: HTMLElement,\n\tprop?: string,\n\tval: string = '',\n) => {\n\tlet targetClass = '';\n\n\tel.classList.forEach((c) => {\n\t\tif (c.includes(prop)) {\n\t\t\ttargetClass = c;\n\t\t}\n\t});\n\n\treturn targetClass.match(/:(.*)]/) ? targetClass.match(/:(.*)]/)[1] : val;\n};\n\nconst getZIndex = (el: HTMLElement) => {\n\tconst computedStyle = window.getComputedStyle(el);\n\tconst zIndex = computedStyle.getPropertyValue('z-index');\n\n\treturn zIndex;\n};\n\nfunction getHighestZIndex(arr: HTMLElement[]) {\n\tlet highestZIndex = Number.NEGATIVE_INFINITY;\n\n\tarr.forEach((el) => {\n\t\tlet zIndex: string | number = getZIndex(el);\n\n\t\tif (zIndex !== 'auto') {\n\t\t\tzIndex = parseInt(zIndex, 10);\n\n\t\t\tif (zIndex > highestZIndex) highestZIndex = zIndex;\n\t\t}\n\t});\n\n\treturn highestZIndex;\n}\n\nconst isIOS = () => {\n\tif (/iPad|iPhone|iPod/.test(navigator.platform)) {\n\t\treturn true;\n\t} else {\n\t\treturn (\n\t\t\tnavigator.maxTouchPoints &&\n\t\t\tnavigator.maxTouchPoints > 2 &&\n\t\t\t/MacIntel/.test(navigator.platform)\n\t\t);\n\t}\n};\n\nconst isIpadOS = () => {\n\treturn (\n\t\tnavigator.maxTouchPoints &&\n\t\tnavigator.maxTouchPoints > 2 &&\n\t\t/MacIntel/.test(navigator.platform)\n\t);\n};\n\nconst isDirectChild = (parent: Element, child: HTMLElement) => {\n\tconst children = parent.children;\n\n\tfor (let i = 0; i < children.length; i++) {\n\t\tif (children[i] === child) return true;\n\t}\n\n\treturn false;\n};\n\nconst isEnoughSpace = (\n\tel: HTMLElement,\n\ttoggle: HTMLElement,\n\tpreferredPosition: 'top' | 'bottom' | 'auto' = 'auto',\n\tspace = 10,\n\twrapper: HTMLElement | null = null,\n) => {\n\tconst referenceRect = toggle.getBoundingClientRect();\n\tconst wrapperRect = wrapper ? wrapper.getBoundingClientRect() : null;\n\tconst viewportHeight = window.innerHeight;\n\tconst spaceAbove = wrapperRect\n\t\t? referenceRect.top - wrapperRect.top\n\t\t: referenceRect.top;\n\tconst spaceBelow =\n\t\t(wrapper ? wrapperRect.bottom : viewportHeight) - referenceRect.bottom;\n\tconst minimumSpaceRequired = el.clientHeight + space;\n\n\tif (preferredPosition === 'bottom') {\n\t\treturn spaceBelow >= minimumSpaceRequired;\n\t} else if (preferredPosition === 'top') {\n\t\treturn spaceAbove >= minimumSpaceRequired;\n\t} else {\n\t\treturn (\n\t\t\tspaceAbove >= minimumSpaceRequired || spaceBelow >= minimumSpaceRequired\n\t\t);\n\t}\n};\n\nconst isFormElement = (target: HTMLElement) => {\n\treturn (\n\t\ttarget instanceof HTMLInputElement ||\n\t\ttarget instanceof HTMLTextAreaElement ||\n\t\ttarget instanceof HTMLSelectElement\n\t);\n};\n\nconst isParentOrElementHidden = (element: any): any => {\n\tif (!element) return false;\n\n\tconst computedStyle = window.getComputedStyle(element);\n\n\tif (computedStyle.display === 'none') return true;\n\n\treturn isParentOrElementHidden(element.parentElement);\n};\n\nconst debounce = (func: Function, timeout = 200) => {\n\tlet timer: any;\n\n\treturn (...args: any[]) => {\n\t\tclearTimeout(timer);\n\n\t\ttimer = setTimeout(() => {\n\t\t\tfunc.apply(this, args);\n\t\t}, timeout);\n\t};\n};\n\nconst dispatch = (evt: string, element: any, payload: any = null) => {\n\tconst event = new CustomEvent(evt, {\n\t\tdetail: { payload },\n\t\tbubbles: true,\n\t\tcancelable: true,\n\t\tcomposed: false,\n\t});\n\n\telement.dispatchEvent(event);\n};\n\nconst afterTransition = (el: HTMLElement, callback: Function) => {\n\tconst handleEvent = () => {\n\t\tcallback();\n\n\t\tel.removeEventListener('transitionend', handleEvent, true);\n\t};\n\n\tconst computedStyle = window.getComputedStyle(el);\n\tconst transitionDuration = computedStyle.getPropertyValue(\n\t\t'transition-duration',\n\t);\n\tconst transitionProperty = computedStyle.getPropertyValue(\n\t\t'transition-property',\n\t);\n\tconst hasTransition =\n\t\ttransitionProperty !== 'none' && parseFloat(transitionDuration) > 0;\n\n\tif (hasTransition) el.addEventListener('transitionend', handleEvent, true);\n\telse callback();\n};\n\nconst htmlToElement = (html: string): HTMLElement => {\n\tconst template = document.createElement('template');\n\thtml = html.trim();\n\ttemplate.innerHTML = html;\n\n\treturn template.content.firstChild as HTMLElement;\n};\n\nconst classToClassList = (\n\tclasses: string,\n\ttarget: HTMLElement,\n\tsplitter = ' ',\n\taction: 'add' | 'remove' = 'add',\n) => {\n\tconst classesToArray = classes.split(splitter);\n\tclassesToArray.forEach((cl) =>\n\t\taction === 'add' ? target.classList.add(cl) : target.classList.remove(cl),\n\t);\n};\n\nconst menuSearchHistory = {\n\thistoryIndex: -1,\n\n\taddHistory(index: number) {\n\t\tthis.historyIndex = index;\n\t},\n\n\texistsInHistory(index: number) {\n\t\treturn index > this.historyIndex;\n\t},\n\n\tclearHistory() {\n\t\tthis.historyIndex = -1;\n\t},\n};\n\nexport {\n\tstringToBoolean,\n\tgetClassProperty,\n\tgetClassPropertyAlt,\n\tgetZIndex,\n\tgetHighestZIndex,\n\tisIOS,\n\tisIpadOS,\n\tisEnoughSpace,\n\tisParentOrElementHidden,\n\tisFormElement,\n\tisDirectChild,\n\tdebounce,\n\tdispatch,\n\tafterTransition,\n\thtmlToElement,\n\tclassToClassList,\n\tmenuSearchHistory,\n};\n","\"use strict\";\n/*\n * @version: 2.5.1\n * @author: Preline Labs Ltd.\n * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html)\n * Copyright 2024 Preline Labs Ltd.\n */\nvar _this = this;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.menuSearchHistory = exports.classToClassList = exports.htmlToElement = exports.afterTransition = exports.dispatch = exports.debounce = exports.isDirectChild = exports.isFormElement = exports.isParentOrElementHidden = exports.isEnoughSpace = exports.isIpadOS = exports.isIOS = exports.getZIndex = exports.getClassPropertyAlt = exports.getClassProperty = exports.stringToBoolean = void 0;\nexports.getHighestZIndex = getHighestZIndex;\nvar stringToBoolean = function (string) {\n return string === 'true' ? true : false;\n};\nexports.stringToBoolean = stringToBoolean;\nvar getClassProperty = function (el, prop, val) {\n if (val === void 0) { val = ''; }\n return (window.getComputedStyle(el).getPropertyValue(prop) || val).replace(' ', '');\n};\nexports.getClassProperty = getClassProperty;\nvar getClassPropertyAlt = function (el, prop, val) {\n if (val === void 0) { val = ''; }\n var targetClass = '';\n el.classList.forEach(function (c) {\n if (c.includes(prop)) {\n targetClass = c;\n }\n });\n return targetClass.match(/:(.*)]/) ? targetClass.match(/:(.*)]/)[1] : val;\n};\nexports.getClassPropertyAlt = getClassPropertyAlt;\nvar getZIndex = function (el) {\n var computedStyle = window.getComputedStyle(el);\n var zIndex = computedStyle.getPropertyValue('z-index');\n return zIndex;\n};\nexports.getZIndex = getZIndex;\nfunction getHighestZIndex(arr) {\n var highestZIndex = Number.NEGATIVE_INFINITY;\n arr.forEach(function (el) {\n var zIndex = getZIndex(el);\n if (zIndex !== 'auto') {\n zIndex = parseInt(zIndex, 10);\n if (zIndex > highestZIndex)\n highestZIndex = zIndex;\n }\n });\n return highestZIndex;\n}\nvar isIOS = function () {\n if (/iPad|iPhone|iPod/.test(navigator.platform)) {\n return true;\n }\n else {\n return (navigator.maxTouchPoints &&\n navigator.maxTouchPoints > 2 &&\n /MacIntel/.test(navigator.platform));\n }\n};\nexports.isIOS = isIOS;\nvar isIpadOS = function () {\n return (navigator.maxTouchPoints &&\n navigator.maxTouchPoints > 2 &&\n /MacIntel/.test(navigator.platform));\n};\nexports.isIpadOS = isIpadOS;\nvar isDirectChild = function (parent, child) {\n var children = parent.children;\n for (var i = 0; i < children.length; i++) {\n if (children[i] === child)\n return true;\n }\n return false;\n};\nexports.isDirectChild = isDirectChild;\nvar isEnoughSpace = function (el, toggle, preferredPosition, space, wrapper) {\n if (preferredPosition === void 0) { preferredPosition = 'auto'; }\n if (space === void 0) { space = 10; }\n if (wrapper === void 0) { wrapper = null; }\n var referenceRect = toggle.getBoundingClientRect();\n var wrapperRect = wrapper ? wrapper.getBoundingClientRect() : null;\n var viewportHeight = window.innerHeight;\n var spaceAbove = wrapperRect\n ? referenceRect.top - wrapperRect.top\n : referenceRect.top;\n var spaceBelow = (wrapper ? wrapperRect.bottom : viewportHeight) - referenceRect.bottom;\n var minimumSpaceRequired = el.clientHeight + space;\n if (preferredPosition === 'bottom') {\n return spaceBelow >= minimumSpaceRequired;\n }\n else if (preferredPosition === 'top') {\n return spaceAbove >= minimumSpaceRequired;\n }\n else {\n return (spaceAbove >= minimumSpaceRequired || spaceBelow >= minimumSpaceRequired);\n }\n};\nexports.isEnoughSpace = isEnoughSpace;\nvar isFormElement = function (target) {\n return (target instanceof HTMLInputElement ||\n target instanceof HTMLTextAreaElement ||\n target instanceof HTMLSelectElement);\n};\nexports.isFormElement = isFormElement;\nvar isParentOrElementHidden = function (element) {\n if (!element)\n return false;\n var computedStyle = window.getComputedStyle(element);\n if (computedStyle.display === 'none')\n return true;\n return isParentOrElementHidden(element.parentElement);\n};\nexports.isParentOrElementHidden = isParentOrElementHidden;\nvar debounce = function (func, timeout) {\n if (timeout === void 0) { timeout = 200; }\n var timer;\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n clearTimeout(timer);\n timer = setTimeout(function () {\n func.apply(_this, args);\n }, timeout);\n };\n};\nexports.debounce = debounce;\nvar dispatch = function (evt, element, payload) {\n if (payload === void 0) { payload = null; }\n var event = new CustomEvent(evt, {\n detail: { payload: payload },\n bubbles: true,\n cancelable: true,\n composed: false,\n });\n element.dispatchEvent(event);\n};\nexports.dispatch = dispatch;\nvar afterTransition = function (el, callback) {\n var handleEvent = function () {\n callback();\n el.removeEventListener('transitionend', handleEvent, true);\n };\n var computedStyle = window.getComputedStyle(el);\n var transitionDuration = computedStyle.getPropertyValue('transition-duration');\n var transitionProperty = computedStyle.getPropertyValue('transition-property');\n var hasTransition = transitionProperty !== 'none' && parseFloat(transitionDuration) > 0;\n if (hasTransition)\n el.addEventListener('transitionend', handleEvent, true);\n else\n callback();\n};\nexports.afterTransition = afterTransition;\nvar htmlToElement = function (html) {\n var template = document.createElement('template');\n html = html.trim();\n template.innerHTML = html;\n return template.content.firstChild;\n};\nexports.htmlToElement = htmlToElement;\nvar classToClassList = function (classes, target, splitter, action) {\n if (splitter === void 0) { splitter = ' '; }\n if (action === void 0) { action = 'add'; }\n var classesToArray = classes.split(splitter);\n classesToArray.forEach(function (cl) {\n return action === 'add' ? target.classList.add(cl) : target.classList.remove(cl);\n });\n};\nexports.classToClassList = classToClassList;\nvar menuSearchHistory = {\n historyIndex: -1,\n addHistory: function (index) {\n this.historyIndex = index;\n },\n existsInHistory: function (index) {\n return index > this.historyIndex;\n },\n clearHistory: function () {\n this.historyIndex = -1;\n },\n};\nexports.menuSearchHistory = menuSearchHistory;\n"],"names":["definitionsFromContext","context","keys","map","key","identifier","logicalName","match","replace","identifierForContextKey","module","controllerConstructor","default","definitionForModuleAndIdentifier","definitionForModuleWithContextAndKey","filter","value","name","enabled","phase","fn","_ref","state","Object","elements","forEach","style","styles","attributes","element","getNodeName","assign","removeAttribute","setAttribute","effect","_ref2","initialStyles","popper","position","options","strategy","left","top","margin","arrow","reference","hasOwnProperty","reduce","property","attribute","requires","defaultModifiers","eventListeners","popperOffsets","computeStyles","offset","flip","preventOverflow","hide","Symbol","exports","getRawTag","objectToString","symToStringTag","toStringTag","undefined","trimmedEndIndex","reTrimStart","string","slice","freeGlobal","g","objectProto","prototype","nativeObjectToString","toString","isOwn","call","tag","unmasked","e","result","freeSelf","self","root","Function","reWhitespace","index","length","test","charAt","isObject","now","toNumber","nativeMax","Math","max","nativeMin","min","func","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","TypeError","invokeFunc","time","args","thisArg","apply","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","setTimeout","timeWaiting","remainingWait","debounced","isInvoking","arguments","this","leadingEdge","clearTimeout","cancel","flush","type","baseGetTag","isObjectLike","Date","baseTrim","isSymbol","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","other","valueOf","isBinary","defineProperty","BREAKPOINTS","COMBO_BOX_ACCESSIBILITY_KEY_SET","SELECT_ACCESSIBILITY_KEY_SET","TABS_ACCESSIBILITY_KEY_SET","OVERLAY_ACCESSIBILITY_KEY_SET","DROPDOWN_ACCESSIBILITY_KEY_SET","POSITIONS","auto","bottom","right","xs","sm","md","lg","xl","__importDefault","mod","__esModule","HSRangeSlider","HSFileUpload","HSDataTable","HSStaticMethods","HSTreeView","HSTooltip","HSTogglePassword","HSToggleCount","HSThemeSwitch","HSTextareaAutoHeight","HSTabs","HSStrongPassword","HSStepper","HSSelect","HSScrollspy","HSRemoveElement","HSPinInput","HSOverlay","HSInputNumber","HSDropdown","HSComboBox","HSCollapse","HSCarousel","HSAccordion","HSCopyMarkup","DataTable","jQuery","_","Dropzone","noUiSlider","extendStatics","__extends","d","b","setPrototypeOf","__proto__","Array","p","String","__","constructor","create","__assign","t","s","i","n","el","events","toggle","querySelector","content","update","init","_this","createCollection","window","$hsAccordionCollection","addEventListener","evt","stopPropagation","classList","contains","show","_a","group","isAlwaysOpened","find","add","ariaExpanded","display","height","scrollHeight","afterTransition","fireEvent","dispatch","remove","closest","hasAttribute","id","getInstance","target","isInstance","elInCollection","document","autoInit","querySelectorAll","elC","treeView","selectable","data","getAttribute","JSON","parse","push","item","_el","toggleSelected","on","cb","collection","payload","HSBasePlugin","_b","_c","_d","_e","dataOptions","concatOptions","currentIndex","loadingClasses","split","dotsItemClasses","isAutoHeight","isAutoPlay","isCentered","isDraggable","isInfiniteLoop","isRTL","isSnap","hasSnapSpacers","speed","updateDelay","slidesQty","loadingClassesRemove","loadingClassesAdd","afterLoadingClassesAdd","container","inner","slides","prev","next","dots","info","infoTotal","infoCurrent","sliderWidth","getBoundingClientRect","width","isDragging","dragStartX","initialTranslateX","touchX","start","end","resizeContainer","resizeContainerWidth","setIsSnap","containerRect","containerCenter","closestElement","closestElementIndex","closestDistance","Infinity","from","children","child","childRect","innerContainerRect","childCenter","distance","abs","findIndex","setIndex","setCurrentDot","$hsCarouselCollection","calculateWidth","initDragHandling","goToPrev","resetTimer","setTimer","goToNext","initDots","buildInfo","addCurrentClass","addDisabledClass","autoPlay","isScrolling","changedTouches","screenX","detectDirection","observeResize","scrollableElement","handleDragStart","bind","passive","handleDragMove","handleDragEnd","getTranslateXValue","transformMatrix","getComputedStyle","transform","matrixValues","translateX","parseFloat","isNaN","removeClickEventWhileDragging","preventDefault","getEventX","deltaX","newTranslateX","setTranslate","calcWidth","getCurrentSlidesQty","containerWidth","centeredOffset","limitStart","limitEnd","newTranslateXFunc","itemWidth","currentTranslateX","closestIndex","round","calculateTransform","removeEventListener","event","MouseEvent","clientX","touches","body","clientWidth","buildSnapSpacers","existingBefore","existingAfter","spacerWidth","before","htmlToElement","after","prepend","appendChild","setDots","buildDots","innerHTML","singleDot","buildSingleDot","append","dotsItems","dot","ind","targetIndex","singleDotEvents","goToCurrentDot","containerScrollLeft","scrollLeft","containerScrollTop","scrollTop","containerHeight","clientHeight","itemRect","itemLeft","itemRight","itemTop","itemBottom","scrollTo","behavior","setInfoTotal","setInfoCurrent","innerText","classToClassList","goTo","ResizeObserver","debounce","entries","newWidth","contentRect","recalculateWidth","observe","itemsQty","floor","slide","toggleDotActive","setElementToDisabled","tagName","unsetElementToDisabled","gapValue","getPropertyValue","maxIndex","statementPrev","statementNext","scrollWidth","timer","setInterval","clearInterval","parentElement","currentIdx","val","scrollBy","statement","maxScrollLeft","contentId","dataset","hsCollapse","animationInProcess","$hsCollapseCollection","hideAllMegaMenuItems","__awaiter","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","rejected","done","then","__generator","f","y","label","sent","trys","ops","Iterator","verb","iterator","v","op","pop","__spreadArray","to","pack","ar","l","concat","_f","_g","_h","_j","_k","_l","_m","_o","_p","_q","_r","_s","_t","_u","_v","_w","_x","_y","_z","_0","gap","viewport","preventVisibility","apiUrl","apiDataPart","apiQuery","apiSearchQuery","apiHeaders","apiGroupField","outputItemTemplate","outputEmptyTemplate","outputLoaderTemplate","groupingType","groupingTitleTemplate","tabsWrapperTemplate","preventSelection","preventAutoPosition","isOpenOnFocus","input","output","itemsWrapper","items","tabs","toggleClose","toggleOpen","outputPlaceholder","selected","isOpened","isCurrent","selectedGroup","$hsComboBoxCollection","build","buildInput","setGroups","buildItems","recalculateDirection","buildToggle","buildToggleClose","buildToggleOpen","setResultAndRender","_value","setResults","itemsFromJson","open","role","tabIndex","ariaOrientation","itemsFromHtml","resultItems","hasVisibleItems","destroyOutputPlaceholder","buildOutputPlaceholder","isItemExists","obj","some","groupField","params","elI","isTextExists","lowerCased","toLowerCase","includes","isTextExistsAny","valuesBySelector","acc","cur","buildOutputLoader","outputLoader","zIndex","destroyOutputLoader","query","searchQuery","url","items_1","err_1","fetch","json","setApiGroups","groupTabsRender","jsonItemsRender","groups","title","newItems","console","error","newItem","hideIfEmpty","textContent","attr","valueFrom","close","setSelectedByValue","appendItemsToWrapper","setCurrent","sortItems","sort","i1","i2","a","itemRender","plainRender","tabsScroll","tabsWrapper","insertBefore","firstChild","tabDef","selectedTab","setItemsVisibility","tab","groupDefaultRender","setValue","setValueAndOpen","setValueAndClear","marginTop","marginBottom","isEnoughSpace","evtTarget","closeCurrentlyOpened","accessibility","currentlyOpened","getPreparedItems","isReversed","reverse","setHighlighted","current","focus","code","metaKey","onEscape","stopImmediatePropagation","onArrow","onStartEnd","onEnter","blur","isArrowUp","currentItem","currentInd","isStart","opened","isParentOrElementHidden","link","location","targetSelector","wrapperSelector","limit","$hsCopyMarkupCollection","setTarget","setWrapper","addPredefinedItems","copy","copiedElement","cloneNode","addToItems","wrapper","deleteItemButton","delete","indexOf","splice","columnDefs","th","targets","orderable","searching","lengthChange","order","table","search","pageEntities","paging","pagingPrev","pagingNext","pagingPages","infoFrom","infoTo","infoLength","rowSelectingOptions","rowSelectingAll","selectAllSelector","rowSelectingIndividual","individualSelector","pageLength","maxPagesToShow","isRowSelecting","pageBtnClasses","pagingOptions","$hsDataTableCollection","initTable","initSearch","initPageEntities","initPaging","initPagingPrev","initPagingNext","buildPagingPages","initInfo","initRowSelecting","dataTable","triggerChangeEventToRow","updateSelectAllCheckbox","updateInfo","updatePaging","onSearchInput","draw","onEntitiesChange","entities","page","len","initInfoFrom","initInfoTo","initInfoLength","recordsTotal","hidePagingIfSinglePage","onPrevClick","disablePagingArrow","onNextClick","pages","totalRecords","rows","count","totalPages","ceil","currentPage","startPage","endPage","buildPagingPage","counter","pageEl","onPageClick","onSelectAllChange","isChecked","checked","nodes","checkbox","closers","menu","eventMode","getClassProperty","closeMode","$hsDropdownCollection","disabled","buildMenu","buildClosers","isIOS","isIpadOS","onMouseEnterHandler","onMouseLeaveHandler","resizeHandler","onClickHandler","_popper","forceClearState","destroyPopper","inset","destroy","absoluteStrategyModifiers","adaptive","placement","gpuAcceleration","createPopper","modifiers","isAnimated","innerWidth","history","menuSearchHistory","onFirstLetter","dropdown","links","getCurrentInd","existsInHistory","clearHistory","addHistory","parent","getClassPropertyAlt","autoDiscover","extensions","previewTemplate","merge","icon","class","xls","doc","zip","singleton","clickable","previewsContainer","addRemoveLinks","autoHideTrigger","$hsFileUploadCollection","initDropzone","clear","pseudoTriggers","dropzone","file","onAddFile","onRemoveFile","progress","onUploadProgress","onComplete","onclick","files","removeAllFiles","click","previewElement","reloadButton","removeFile","tempFileInput","createElement","newFile","dzNewFile","status","ADDED","accepted","addFile","previewAccepted","fileInfo","splitFileName","fileName","fileExt","fileSize","fileIcon","trigger","preview","extension","formatFileSize","size","setIcon","progressBar","progressBarPane","progressBarValue","currentProgress","ext","createIcon","toFixed","dotIndex","lastIndexOf","substring","increment","decrement","checkIsNumberAndConvert","hsInputNumber","minInputValue","maxInputValue","$hsInputNumberCollection","trim","cleanedValue","cleanAndExtractNumber","inputValue","cleanedArray","decimalFound","char","join","number","buildIncrement","buildDecrement","changeValue","disableButtons","Number","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","incrementedResult","decrementedResult","defaultResult","enableButtons","mode","hiddenClass","emulateScrollbarSpace","isClosePrev","backdropClasses","backdropExtraClasses","moveOverlayToBody","openNextOverlay","autoHide","overlayId","overlay","initContainer","isCloseWhenClickInside","stringToBoolean","isTabAccessibilityLimited","isLayoutAffect","hasAutofocus","hasAbilityToCloseOnBackdropClick","autoCloseBreakpoint","autoClose","isFinite","openedBreakpoint","animationTarget","$hsOverlayCollection","instance","setOpened","hideAuto","checkTimer","buildBackdrop","overlayClasses","overlayZIndex","backdropId","backdrop","closeOnBackdrop","disableBackdrop","startsWith","destroyBackdrop","transitionDuration","focusElement","getScrollbarSize","div","overflow","scrollbarSize","offsetWidth","removeChild","openedOverlays","toggles","disabledScroll","paddingRight","forceClose","closeFn","breakpoint","focusableElements","notHiddenFocusableElements","basicCheck","onTab","focused","focusedIndex","moveOverlayToBodyResizeFn","resolution","initPlace","newPlace","isDirectChild","autoCloseResizeFn","setOpenedResizeFn","setBackdropZIndexResizeFn","currentValue","fill","placeholders","availableCharsRE","RegExp","$hsPinInputCollection","buildInputItems","onFocusIn","onInput","onPaste","onKeydown","onFocusOut","checkIfNumber","autoFillAll","text","dispatchEvent","Event","bubbles","setCurrentValue","toggleCompleted","originalValue","activeElement","clipboardData","getData","cssClasses","processClasses","get","values","isArray","format","enumerable","configurable","cl","mergedClasses","$hsRangeSliderCollection","formatter","thousandsSeparatorAndDecimalPointsFormatter","integerFormatter","prefix","postfix","prefixOrPostfixFormatter","setDisabled","formatValue","tooltips","Intl","NumberFormat","minimumFractionDigits","maximumFractionDigits","removeTargetId","removeTarget","removeTargetAnimationClass","$hsRemoveElementCollection","activeSection","sections","scrollableId","scrollable","$hsScrollspyCollection","section","globalOffset","userOffset","scrollableParentOffset","topOffset","offsetHeight","parentLink","targetId","offsetTop","view","scrollFn","replaceState","beforeScroll","optionId","placeholder","hasSearch","preventSearchFocus","Boolean","isMultiple","isDisabled","selectedItems","apiOptions","apiSearchQueryKey","apiFieldsMap","apiIconTag","wrapperClasses","toggleTag","toggleClasses","toggleSeparators","betweenItemsAndCounter","toggleCountText","toggleCountTextMinItems","toggleCountTextMode","tagsItemTemplate","tagsItemClasses","tagsInputId","tagsInputClasses","dropdownTag","dropdownClasses","dropdownDirectionClasses","dropdownSpace","dropdownPlacement","dropdownScope","searchTemplate","searchWrapperTemplate","searchWrapperClasses","searchId","searchLimit","isSearchDirectMatch","searchClasses","searchPlaceholder","searchNoResultTemplate","searchNoResultText","searchNoResultClasses","optionTemplate","optionTag","optionClasses","extraMarkup","descriptionClasses","iconClasses","isAddTagOnEnter","selectOptions","remoteOptions","tagsInputHelper","clearSelections","toggleTextWrapper","stringFromValue","unselectMultipleItems","selectMultipleItems","setToggleTitle","setToggleIcon","selectSingleItem","$hsSelectCollection","selectedOptions","buildWrapper","buildTags","buildDropdown","buildExtraMarkup","tagsInput","appendMarkup","markup","clickHandle","toggleFn","newEl","getItemByValue","img","src","titleText","buildTagsInput","setTagsItems","reassignTagsInputPlaceholder","calculateInputWidth","buildTagsItem","template","searchOptions","addSelectOption","buildOption","resetTagsInputField","adjustInputWidth","buildSearch","props","optionsFromRemoteData","buildPopper","Popper","popperInstance","updateDropdownWidth","searchWrapper","remoteSearch","descriptionWrapper","option","description","onSelectOption","setNewValue","buildOptionFromRemoteData","alert","buildOptionsFromRemoteData","rest","buildOriginalOption","sortElements","res","apiRequest","log","selector","isASelected","isBSelected","newIds","restOptions","pseudoOptions","dataId","destroyOriginalOption","destroyOption","stringify","buildTagsInputHelper","fontSize","fontFamily","fontWeight","letterSpacing","visibility","whiteSpace","inputPadding","paddingLeft","inputBorder","borderLeftWidth","borderRightWidth","maxWidth","intersection","x","triggerChangeEventForNativeSelect","selectChangeEvent","removeSelectOption","stringFromValueBasic","nItems","stringFromValueRemoteData","dataValue","selectedItem","searchNoResult","countLimit","hasItems","optionVal","toLocaleLowerCase","regexSafeVal","regex","directMatch","cleanedOptionVal","eraseToggleIcon","eraseToggleTitle","addOption","removeOption","shiftKey","select","previousSibling","isCompleted","totalSteps","navItems","contentItems","$hsStepperCollection","buildNav","buildContent","buildButtons","setTotalSteps","getUncompletedSteps","inIncludedSkipped","isSkip","addNavItem","buildNavItem","setCurrentNavItem","handleNavItemClick","isFinal","isOptional","isProcessed","hasError","setCurrentNavItemActions","unsetCurrentNavItemActions","getNavItem","setProcessedNavItemActions","setErrorNavItemActions","setCurrentContentItem","checkForTheFirstStep","addContentItem","buildContentItem","finalContentItem","otherContentItems","setCurrentContentItemActions","unsetCurrentContentItemActions","hideAllContentItems","disableAll","currentNavItem","disableNavItemActions","enableNavItemActions","backBtn","nextBtn","skipBtn","completeStepBtn","finishBtn","resetBtn","buildBackButton","buildNextButton","buildSkipButton","buildCompleteStepButton","buildFinishButton","buildResetButton","handleBackButtonClick","currentContentItem","showSkipButton","showFinishButton","showCompleteStepButton","removeOptionalClasses","changeTextAndDisableCompleteButtonIfStepCompleted","setToDisabled","setToNonDisabled","unsetProcessedNavItemActions","handleNextButtonClick","infinite","nonCompletedSteps","handleSkipButtonClick","setSkipItem","targetNavItem","targetContentItem","setSkipItemActions","completeStepBtnDefaultText","handleCompleteStepButtonClick","completedText","setCompleteItem","setCompleteItemActions","setCompleted","handleFinishButtonClick","unsetCompleted","uncompletedSteps","uncompletedOrSkipSteps","handleResetButtonClick","setProcessedNavItem","unsetProcessedNavItem","setErrorNavItem","strength","passedRules","Set","hints","stripClasses","minLength","popoverSpace","checksExclude","availableChecks","specialCharactersSet","$hsStrongPasswordCollection","buildStrips","buildHints","setStrength","newStrip","weakness","rules","rule","ruleValue","buildWeakness","buildRules","checkStrength","setWeaknessText","setRulesText","weaknessText","weaknessTextToJson","checkIfPassed","has","togglePopover","popover","regexps","lowercase","uppercase","numbers","isRulePassed","check","uncheck","hideStrips","qty","extraToggleId","extraToggle","currentContentId","currentContent","prevContentId","prevContent","$hsTabsCollection","change","ariaSelected","targetInCollection","isVertical","isOpposite","focusedInd","defaultHeight","$hsTextareaAutoHeightCollection","setAutoHeight","isParentHidden","callbackAccordingToType","textareaSetHeight","checkIfOneLine","parentType","collapseId","theme","localStorage","getItem","themeSet","$hsThemeSwitchCollection","setAppearance","setResetStyles","head","addSystemThemeObserver","matchMedia","removeSystemThemeObserver","isSaveToLocalStorage","isSetDispatchEvent","html","resetStyles","setItem","matches","CustomEvent","detail","toggleObserveSystemTheme","switchTheme","duration","$hsToggleCountCollection","countUp","countDown","animate","startTimestamp","timestamp","requestAnimationFrame","isShown","eventType","isFormElement","$hsTogglePasswordCollection","getMultipleToggles","togglesInCollection","preventPopper","$hsTooltipCollection","enter","leave","handle","setOptions","controlBy","autoSelectChildren","isIndeterminate","$hsTreeViewCollection","initItems","concatData","path","getPath","isSelected","controlByCheckbox","controlByButton","unselectItem","selectItem","control","isDir","selectChildren","toggleParent","exception","getSelectedItems","changeItemProp","initialItemData","currentItemData","indeterminate","_loop_1","hasUnchecked","checkedItems","dataI","this_1","prop","COLLECTIONS","cleanCollection","getZIndex","getHighestZIndex","arr","highestZIndex","NEGATIVE_INFINITY","targetClass","c","navigator","platform","maxTouchPoints","preferredPosition","space","referenceRect","wrapperRect","viewportHeight","innerHeight","spaceAbove","spaceBelow","minimumSpaceRequired","HTMLInputElement","HTMLTextAreaElement","HTMLSelectElement","timeout","cancelable","composed","callback","handleEvent","computedStyle","classes","splitter","action","historyIndex"],"sourceRoot":""}