@codbex/harmonia 1.10.1 → 1.10.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../node_modules/nouislider/dist/nouislider.js", "../src/utils/uuid.js", "../src/common/icons.js", "../src/components/accordion.js", "../src/components/alert.js", "../src/common/class-list.js", "../src/components/avatar.js", "../src/components/badge.js", "../src/components/button.js", "../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs", "../node_modules/@floating-ui/core/dist/floating-ui.core.mjs", "../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs", "../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs", "../src/components/calendar.js", "../src/components/card.js", "../src/components/checkbox.js", "../src/components/chip.js", "../src/common/input-size.js", "../src/components/datepicker.js", "../src/components/dialog.js", "../src/components/expansion-panel.js", "../src/components/fieldset.js", "../src/components/icon.js", "../src/components/info-page.js", "../src/components/input.js", "../src/components/label.js", "../src/components/list.js", "../src/components/menu.js", "../src/utils/breakpoint-listener.js", "../src/components/notifications.js", "../src/components/pagination.js", "../src/components/popover.js", "../src/components/progress.js", "../src/components/radio.js", "../src/components/range.js", "../src/components/select.js", "../src/components/separator.js", "../src/components/sheet.js", "../src/components/sidebar.js", "../src/components/skeleton.js", "../src/components/spinner.js", "../src/components/split.js", "../src/components/switch.js", "../src/components/table.js", "../src/components/tabs.js", "../src/components/tag.js", "../src/components/text.js", "../src/components/textarea.js", "../src/components/tile.js", "../src/components/timepicker.js", "../src/components/toolbar.js", "../src/components/tooltip.js", "../src/components/tree.js", "../package.json", "../src/utils/theme.js", "../src/utils/focus.js", "../src/utils/include.js", "../src/utils/template.js", "../src/module.js"],
|
|
4
|
-
"sourcesContent": ["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.noUiSlider = {}));\n})(this, (function (exports) { 'use strict';\n\n exports.PipsMode = void 0;\n (function (PipsMode) {\n PipsMode[\"Range\"] = \"range\";\n PipsMode[\"Steps\"] = \"steps\";\n PipsMode[\"Positions\"] = \"positions\";\n PipsMode[\"Count\"] = \"count\";\n PipsMode[\"Values\"] = \"values\";\n })(exports.PipsMode || (exports.PipsMode = {}));\n exports.PipsType = void 0;\n (function (PipsType) {\n PipsType[PipsType[\"None\"] = -1] = \"None\";\n PipsType[PipsType[\"NoValue\"] = 0] = \"NoValue\";\n PipsType[PipsType[\"LargeValue\"] = 1] = \"LargeValue\";\n PipsType[PipsType[\"SmallValue\"] = 2] = \"SmallValue\";\n })(exports.PipsType || (exports.PipsType = {}));\n //region Helper Methods\n function isValidFormatter(entry) {\n return isValidPartialFormatter(entry) && typeof entry.from === \"function\";\n }\n function isValidPartialFormatter(entry) {\n // partial formatters only need a to function and not a from function\n return typeof entry === \"object\" && typeof entry.to === \"function\";\n }\n function removeElement(el) {\n el.parentElement.removeChild(el);\n }\n function isSet(value) {\n return value !== null && value !== undefined;\n }\n // Bindable version\n function preventDefault(e) {\n e.preventDefault();\n }\n // Removes duplicates from an array.\n function unique(array) {\n return array.filter(function (a) {\n return !this[a] ? (this[a] = true) : false;\n }, {});\n }\n // Round a value to the closest 'to'.\n function closest(value, to) {\n return Math.round(value / to) * to;\n }\n // Current position of an element relative to the document.\n function offset(elem, orientation) {\n var rect = elem.getBoundingClientRect();\n var doc = elem.ownerDocument;\n var docElem = doc.documentElement;\n var pageOffset = getPageOffset(doc);\n // getBoundingClientRect contains left scroll in Chrome on Android.\n // I haven't found a feature detection that proves this. Worst case\n // scenario on mis-match: the 'tap' feature on horizontal sliders breaks.\n if (/webkit.*Chrome.*Mobile/i.test(navigator.userAgent)) {\n pageOffset.x = 0;\n }\n return orientation ? rect.top + pageOffset.y - docElem.clientTop : rect.left + pageOffset.x - docElem.clientLeft;\n }\n // Checks whether a value is numerical.\n function isNumeric(a) {\n return typeof a === \"number\" && !isNaN(a) && isFinite(a);\n }\n // Sets a class and removes it after [duration] ms.\n function addClassFor(element, className, duration) {\n if (duration > 0) {\n addClass(element, className);\n setTimeout(function () {\n removeClass(element, className);\n }, duration);\n }\n }\n // Limits a value to 0 - 100\n function limit(a) {\n return Math.max(Math.min(a, 100), 0);\n }\n // Wraps a variable as an array, if it isn't one yet.\n // Note that an input array is returned by reference!\n function asArray(a) {\n return Array.isArray(a) ? a : [a];\n }\n // Counts decimals\n function countDecimals(numStr) {\n numStr = String(numStr);\n var pieces = numStr.split(\".\");\n return pieces.length > 1 ? pieces[1].length : 0;\n }\n // http://youmightnotneedjquery.com/#add_class\n function addClass(el, className) {\n if (el.classList && !/\\s/.test(className)) {\n el.classList.add(className);\n }\n else {\n el.className += \" \" + className;\n }\n }\n // http://youmightnotneedjquery.com/#remove_class\n function removeClass(el, className) {\n if (el.classList && !/\\s/.test(className)) {\n el.classList.remove(className);\n }\n else {\n el.className = el.className.replace(new RegExp(\"(^|\\\\b)\" + className.split(\" \").join(\"|\") + \"(\\\\b|$)\", \"gi\"), \" \");\n }\n }\n // https://plainjs.com/javascript/attributes/adding-removing-and-testing-for-classes-9/\n function hasClass(el, className) {\n return el.classList ? el.classList.contains(className) : new RegExp(\"\\\\b\" + className + \"\\\\b\").test(el.className);\n }\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/scrollY#Notes\n function getPageOffset(doc) {\n var supportPageOffset = window.pageXOffset !== undefined;\n var isCSS1Compat = (doc.compatMode || \"\") === \"CSS1Compat\";\n var x = supportPageOffset\n ? window.pageXOffset\n : isCSS1Compat\n ? doc.documentElement.scrollLeft\n : doc.body.scrollLeft;\n var y = supportPageOffset\n ? window.pageYOffset\n : isCSS1Compat\n ? doc.documentElement.scrollTop\n : doc.body.scrollTop;\n return {\n x: x,\n y: y,\n };\n }\n // we provide a function to compute constants instead\n // of accessing window.* as soon as the module needs it\n // so that we do not compute anything if not needed\n function getActions() {\n // Determine the events to bind. IE11 implements pointerEvents without\n // a prefix, which breaks compatibility with the IE10 implementation.\n return window.navigator.pointerEnabled\n ? {\n start: \"pointerdown\",\n move: \"pointermove\",\n end: \"pointerup\",\n }\n : window.navigator.msPointerEnabled\n ? {\n start: \"MSPointerDown\",\n move: \"MSPointerMove\",\n end: \"MSPointerUp\",\n }\n : {\n start: \"mousedown touchstart\",\n move: \"mousemove touchmove\",\n end: \"mouseup touchend\",\n };\n }\n // https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n // Issue #785\n function getSupportsPassive() {\n var supportsPassive = false;\n /* eslint-disable */\n try {\n var opts = Object.defineProperty({}, \"passive\", {\n get: function () {\n supportsPassive = true;\n },\n });\n // @ts-ignore\n window.addEventListener(\"test\", null, opts);\n }\n catch (e) { }\n /* eslint-enable */\n return supportsPassive;\n }\n function getSupportsTouchActionNone() {\n return window.CSS && CSS.supports && CSS.supports(\"touch-action\", \"none\");\n }\n //endregion\n //region Range Calculation\n // Determine the size of a sub-range in relation to a full range.\n function subRangeRatio(pa, pb) {\n return 100 / (pb - pa);\n }\n // (percentage) How many percent is this value of this range?\n function fromPercentage(range, value, startRange) {\n return (value * 100) / (range[startRange + 1] - range[startRange]);\n }\n // (percentage) Where is this value on this range?\n function toPercentage(range, value) {\n return fromPercentage(range, range[0] < 0 ? value + Math.abs(range[0]) : value - range[0], 0);\n }\n // (value) How much is this percentage on this range?\n function isPercentage(range, value) {\n return (value * (range[1] - range[0])) / 100 + range[0];\n }\n function getJ(value, arr) {\n var j = 1;\n while (value >= arr[j]) {\n j += 1;\n }\n return j;\n }\n // (percentage) Input a value, find where, on a scale of 0-100, it applies.\n function toStepping(xVal, xPct, value) {\n if (value >= xVal.slice(-1)[0]) {\n return 100;\n }\n var j = getJ(value, xVal);\n var va = xVal[j - 1];\n var vb = xVal[j];\n var pa = xPct[j - 1];\n var pb = xPct[j];\n return pa + toPercentage([va, vb], value) / subRangeRatio(pa, pb);\n }\n // (value) Input a percentage, find where it is on the specified range.\n function fromStepping(xVal, xPct, value) {\n // There is no range group that fits 100\n if (value >= 100) {\n return xVal.slice(-1)[0];\n }\n var j = getJ(value, xPct);\n var va = xVal[j - 1];\n var vb = xVal[j];\n var pa = xPct[j - 1];\n var pb = xPct[j];\n return isPercentage([va, vb], (value - pa) * subRangeRatio(pa, pb));\n }\n // (percentage) Get the step that applies at a certain value.\n function getStep(xPct, xSteps, snap, value) {\n if (value === 100) {\n return value;\n }\n var j = getJ(value, xPct);\n var a = xPct[j - 1];\n var b = xPct[j];\n // If 'snap' is set, steps are used as fixed points on the slider.\n if (snap) {\n // Find the closest position, a or b.\n if (value - a > (b - a) / 2) {\n return b;\n }\n return a;\n }\n if (!xSteps[j - 1]) {\n return value;\n }\n return xPct[j - 1] + closest(value - xPct[j - 1], xSteps[j - 1]);\n }\n //endregion\n //region Spectrum\n var Spectrum = /** @class */ (function () {\n function Spectrum(entry, snap, singleStep) {\n this.xPct = [];\n this.xVal = [];\n this.xSteps = [];\n this.xNumSteps = [];\n this.xHighestCompleteStep = [];\n this.xSteps = [singleStep || false];\n this.xNumSteps = [false];\n this.snap = snap;\n var index;\n var ordered = [];\n // Map the object keys to an array.\n Object.keys(entry).forEach(function (index) {\n ordered.push([asArray(entry[index]), index]);\n });\n // Sort all entries by value (numeric sort).\n ordered.sort(function (a, b) {\n return a[0][0] - b[0][0];\n });\n // Convert all entries to subranges.\n for (index = 0; index < ordered.length; index++) {\n this.handleEntryPoint(ordered[index][1], ordered[index][0]);\n }\n // Store the actual step values.\n // xSteps is sorted in the same order as xPct and xVal.\n this.xNumSteps = this.xSteps.slice(0);\n // Convert all numeric steps to the percentage of the subrange they represent.\n for (index = 0; index < this.xNumSteps.length; index++) {\n this.handleStepPoint(index, this.xNumSteps[index]);\n }\n }\n Spectrum.prototype.getDistance = function (value) {\n var distances = [];\n for (var index = 0; index < this.xNumSteps.length - 1; index++) {\n distances[index] = fromPercentage(this.xVal, value, index);\n }\n return distances;\n };\n // Calculate the percentual distance over the whole scale of ranges.\n // direction: 0 = backwards / 1 = forwards\n Spectrum.prototype.getAbsoluteDistance = function (value, distances, direction) {\n var xPct_index = 0;\n // Calculate range where to start calculation\n if (value < this.xPct[this.xPct.length - 1]) {\n while (value > this.xPct[xPct_index + 1]) {\n xPct_index++;\n }\n }\n else if (value === this.xPct[this.xPct.length - 1]) {\n xPct_index = this.xPct.length - 2;\n }\n // If looking backwards and the value is exactly at a range separator then look one range further\n if (!direction && value === this.xPct[xPct_index + 1]) {\n xPct_index++;\n }\n if (distances === null) {\n distances = [];\n }\n var start_factor;\n var rest_factor = 1;\n var rest_rel_distance = distances[xPct_index];\n var range_pct = 0;\n var rel_range_distance = 0;\n var abs_distance_counter = 0;\n var range_counter = 0;\n // Calculate what part of the start range the value is\n if (direction) {\n start_factor = (value - this.xPct[xPct_index]) / (this.xPct[xPct_index + 1] - this.xPct[xPct_index]);\n }\n else {\n start_factor = (this.xPct[xPct_index + 1] - value) / (this.xPct[xPct_index + 1] - this.xPct[xPct_index]);\n }\n // Do until the complete distance across ranges is calculated\n while (rest_rel_distance > 0) {\n // Calculate the percentage of total range\n range_pct = this.xPct[xPct_index + 1 + range_counter] - this.xPct[xPct_index + range_counter];\n // Detect if the margin, padding or limit is larger then the current range and calculate\n if (distances[xPct_index + range_counter] * rest_factor + 100 - start_factor * 100 > 100) {\n // If larger then take the percentual distance of the whole range\n rel_range_distance = range_pct * start_factor;\n // Rest factor of relative percentual distance still to be calculated\n rest_factor = (rest_rel_distance - 100 * start_factor) / distances[xPct_index + range_counter];\n // Set start factor to 1 as for next range it does not apply.\n start_factor = 1;\n }\n else {\n // If smaller or equal then take the percentual distance of the calculate percentual part of that range\n rel_range_distance = ((distances[xPct_index + range_counter] * range_pct) / 100) * rest_factor;\n // No rest left as the rest fits in current range\n rest_factor = 0;\n }\n if (direction) {\n abs_distance_counter = abs_distance_counter - rel_range_distance;\n // Limit range to first range when distance becomes outside of minimum range\n if (this.xPct.length + range_counter >= 1) {\n range_counter--;\n }\n }\n else {\n abs_distance_counter = abs_distance_counter + rel_range_distance;\n // Limit range to last range when distance becomes outside of maximum range\n if (this.xPct.length - range_counter >= 1) {\n range_counter++;\n }\n }\n // Rest of relative percentual distance still to be calculated\n rest_rel_distance = distances[xPct_index + range_counter] * rest_factor;\n }\n return value + abs_distance_counter;\n };\n Spectrum.prototype.toStepping = function (value) {\n value = toStepping(this.xVal, this.xPct, value);\n return value;\n };\n Spectrum.prototype.fromStepping = function (value) {\n return fromStepping(this.xVal, this.xPct, value);\n };\n Spectrum.prototype.getStep = function (value) {\n value = getStep(this.xPct, this.xSteps, this.snap, value);\n return value;\n };\n Spectrum.prototype.getDefaultStep = function (value, isDown, size) {\n var j = getJ(value, this.xPct);\n // When at the top or stepping down, look at the previous sub-range\n if (value === 100 || (isDown && value === this.xPct[j - 1])) {\n j = Math.max(j - 1, 1);\n }\n return (this.xVal[j] - this.xVal[j - 1]) / size;\n };\n Spectrum.prototype.getNearbySteps = function (value) {\n var j = getJ(value, this.xPct);\n return {\n stepBefore: {\n startValue: this.xVal[j - 2],\n step: this.xNumSteps[j - 2],\n highestStep: this.xHighestCompleteStep[j - 2],\n },\n thisStep: {\n startValue: this.xVal[j - 1],\n step: this.xNumSteps[j - 1],\n highestStep: this.xHighestCompleteStep[j - 1],\n },\n stepAfter: {\n startValue: this.xVal[j],\n step: this.xNumSteps[j],\n highestStep: this.xHighestCompleteStep[j],\n },\n };\n };\n Spectrum.prototype.countStepDecimals = function () {\n var stepDecimals = this.xNumSteps.map(countDecimals);\n return Math.max.apply(null, stepDecimals);\n };\n Spectrum.prototype.hasNoSize = function () {\n return this.xVal[0] === this.xVal[this.xVal.length - 1];\n };\n // Outside testing\n Spectrum.prototype.convert = function (value) {\n return this.getStep(this.toStepping(value));\n };\n Spectrum.prototype.handleEntryPoint = function (index, value) {\n var percentage;\n // Covert min/max syntax to 0 and 100.\n if (index === \"min\") {\n percentage = 0;\n }\n else if (index === \"max\") {\n percentage = 100;\n }\n else {\n percentage = parseFloat(index);\n }\n // Check for correct input.\n if (!isNumeric(percentage) || !isNumeric(value[0])) {\n throw new Error(\"noUiSlider: 'range' value isn't numeric.\");\n }\n // Store values.\n this.xPct.push(percentage);\n this.xVal.push(value[0]);\n var value1 = Number(value[1]);\n // NaN will evaluate to false too, but to keep\n // logging clear, set step explicitly. Make sure\n // not to override the 'step' setting with false.\n if (!percentage) {\n if (!isNaN(value1)) {\n this.xSteps[0] = value1;\n }\n }\n else {\n this.xSteps.push(isNaN(value1) ? false : value1);\n }\n this.xHighestCompleteStep.push(0);\n };\n Spectrum.prototype.handleStepPoint = function (i, n) {\n // Ignore 'false' stepping.\n if (!n) {\n return;\n }\n // Step over zero-length ranges (#948);\n if (this.xVal[i] === this.xVal[i + 1]) {\n this.xSteps[i] = this.xHighestCompleteStep[i] = this.xVal[i];\n return;\n }\n // Factor to range ratio\n this.xSteps[i] =\n fromPercentage([this.xVal[i], this.xVal[i + 1]], n, 0) / subRangeRatio(this.xPct[i], this.xPct[i + 1]);\n var totalSteps = (this.xVal[i + 1] - this.xVal[i]) / this.xNumSteps[i];\n var highestStep = Math.ceil(Number(totalSteps.toFixed(3)) - 1);\n var step = this.xVal[i] + this.xNumSteps[i] * highestStep;\n this.xHighestCompleteStep[i] = step;\n };\n return Spectrum;\n }());\n //endregion\n //region Options\n /*\tEvery input option is tested and parsed. This will prevent\n endless validation in internal methods. These tests are\n structured with an item for every option available. An\n option can be marked as required by setting the 'r' flag.\n The testing function is provided with three arguments:\n - The provided value for the option;\n - A reference to the options object;\n - The name for the option;\n\n The testing function returns false when an error is detected,\n or true when everything is OK. It can also modify the option\n object, to make sure all values can be correctly looped elsewhere. */\n //region Defaults\n var defaultFormatter = {\n to: function (value) {\n return value === undefined ? \"\" : value.toFixed(2);\n },\n from: Number,\n };\n var cssClasses = {\n target: \"target\",\n base: \"base\",\n origin: \"origin\",\n handle: \"handle\",\n handleLower: \"handle-lower\",\n handleUpper: \"handle-upper\",\n touchArea: \"touch-area\",\n horizontal: \"horizontal\",\n vertical: \"vertical\",\n background: \"background\",\n connect: \"connect\",\n connects: \"connects\",\n ltr: \"ltr\",\n rtl: \"rtl\",\n textDirectionLtr: \"txt-dir-ltr\",\n textDirectionRtl: \"txt-dir-rtl\",\n draggable: \"draggable\",\n drag: \"state-drag\",\n tap: \"state-tap\",\n active: \"active\",\n tooltip: \"tooltip\",\n pips: \"pips\",\n pipsHorizontal: \"pips-horizontal\",\n pipsVertical: \"pips-vertical\",\n marker: \"marker\",\n markerHorizontal: \"marker-horizontal\",\n markerVertical: \"marker-vertical\",\n markerNormal: \"marker-normal\",\n markerLarge: \"marker-large\",\n markerSub: \"marker-sub\",\n value: \"value\",\n valueHorizontal: \"value-horizontal\",\n valueVertical: \"value-vertical\",\n valueNormal: \"value-normal\",\n valueLarge: \"value-large\",\n valueSub: \"value-sub\",\n };\n // Namespaces of internal event listeners\n var INTERNAL_EVENT_NS = {\n tooltips: \".__tooltips\",\n aria: \".__aria\",\n };\n //endregion\n function testStep(parsed, entry) {\n if (!isNumeric(entry)) {\n throw new Error(\"noUiSlider: 'step' is not numeric.\");\n }\n // The step option can still be used to set stepping\n // for linear sliders. Overwritten if set in 'range'.\n parsed.singleStep = entry;\n }\n function testKeyboardPageMultiplier(parsed, entry) {\n if (!isNumeric(entry)) {\n throw new Error(\"noUiSlider: 'keyboardPageMultiplier' is not numeric.\");\n }\n parsed.keyboardPageMultiplier = entry;\n }\n function testKeyboardMultiplier(parsed, entry) {\n if (!isNumeric(entry)) {\n throw new Error(\"noUiSlider: 'keyboardMultiplier' is not numeric.\");\n }\n parsed.keyboardMultiplier = entry;\n }\n function testKeyboardDefaultStep(parsed, entry) {\n if (!isNumeric(entry)) {\n throw new Error(\"noUiSlider: 'keyboardDefaultStep' is not numeric.\");\n }\n parsed.keyboardDefaultStep = entry;\n }\n function testRange(parsed, entry) {\n // Filter incorrect input.\n if (typeof entry !== \"object\" || Array.isArray(entry)) {\n throw new Error(\"noUiSlider: 'range' is not an object.\");\n }\n // Catch missing start or end.\n if (entry.min === undefined || entry.max === undefined) {\n throw new Error(\"noUiSlider: Missing 'min' or 'max' in 'range'.\");\n }\n parsed.spectrum = new Spectrum(entry, parsed.snap || false, parsed.singleStep);\n }\n function testStart(parsed, entry) {\n entry = asArray(entry);\n // Validate input. Values aren't tested, as the public .val method\n // will always provide a valid location.\n if (!Array.isArray(entry) || !entry.length) {\n throw new Error(\"noUiSlider: 'start' option is incorrect.\");\n }\n // Store the number of handles.\n parsed.handles = entry.length;\n // When the slider is initialized, the .val method will\n // be called with the start options.\n parsed.start = entry;\n }\n function testSnap(parsed, entry) {\n if (typeof entry !== \"boolean\") {\n throw new Error(\"noUiSlider: 'snap' option must be a boolean.\");\n }\n // Enforce 100% stepping within subranges.\n parsed.snap = entry;\n }\n function testAnimate(parsed, entry) {\n if (typeof entry !== \"boolean\") {\n throw new Error(\"noUiSlider: 'animate' option must be a boolean.\");\n }\n // Enforce 100% stepping within subranges.\n parsed.animate = entry;\n }\n function testAnimationDuration(parsed, entry) {\n if (typeof entry !== \"number\") {\n throw new Error(\"noUiSlider: 'animationDuration' option must be a number.\");\n }\n parsed.animationDuration = entry;\n }\n function testConnect(parsed, entry) {\n var connect = [false];\n var i;\n // Map legacy options\n if (entry === \"lower\") {\n entry = [true, false];\n }\n else if (entry === \"upper\") {\n entry = [false, true];\n }\n // Handle boolean options\n if (entry === true || entry === false) {\n for (i = 1; i < parsed.handles; i++) {\n connect.push(entry);\n }\n connect.push(false);\n }\n // Reject invalid input\n else if (!Array.isArray(entry) || !entry.length || entry.length !== parsed.handles + 1) {\n throw new Error(\"noUiSlider: 'connect' option doesn't match handle count.\");\n }\n else {\n connect = entry;\n }\n parsed.connect = connect;\n }\n function testOrientation(parsed, entry) {\n // Set orientation to an a numerical value for easy\n // array selection.\n switch (entry) {\n case \"horizontal\":\n parsed.ort = 0;\n break;\n case \"vertical\":\n parsed.ort = 1;\n break;\n default:\n throw new Error(\"noUiSlider: 'orientation' option is invalid.\");\n }\n }\n function testMargin(parsed, entry) {\n if (!isNumeric(entry)) {\n throw new Error(\"noUiSlider: 'margin' option must be numeric.\");\n }\n // Issue #582\n if (entry === 0) {\n return;\n }\n parsed.margin = parsed.spectrum.getDistance(entry);\n }\n function testLimit(parsed, entry) {\n if (!isNumeric(entry)) {\n throw new Error(\"noUiSlider: 'limit' option must be numeric.\");\n }\n parsed.limit = parsed.spectrum.getDistance(entry);\n if (!parsed.limit || parsed.handles < 2) {\n throw new Error(\"noUiSlider: 'limit' option is only supported on linear sliders with 2 or more handles.\");\n }\n }\n function testPadding(parsed, entry) {\n var index;\n if (!isNumeric(entry) && !Array.isArray(entry)) {\n throw new Error(\"noUiSlider: 'padding' option must be numeric or array of exactly 2 numbers.\");\n }\n if (Array.isArray(entry) && !(entry.length === 2 || isNumeric(entry[0]) || isNumeric(entry[1]))) {\n throw new Error(\"noUiSlider: 'padding' option must be numeric or array of exactly 2 numbers.\");\n }\n if (entry === 0) {\n return;\n }\n if (!Array.isArray(entry)) {\n entry = [entry, entry];\n }\n // 'getDistance' returns false for invalid values.\n parsed.padding = [parsed.spectrum.getDistance(entry[0]), parsed.spectrum.getDistance(entry[1])];\n for (index = 0; index < parsed.spectrum.xNumSteps.length - 1; index++) {\n // last \"range\" can't contain step size as it is purely an endpoint.\n if (parsed.padding[0][index] < 0 || parsed.padding[1][index] < 0) {\n throw new Error(\"noUiSlider: 'padding' option must be a positive number(s).\");\n }\n }\n var totalPadding = entry[0] + entry[1];\n var firstValue = parsed.spectrum.xVal[0];\n var lastValue = parsed.spectrum.xVal[parsed.spectrum.xVal.length - 1];\n if (totalPadding / (lastValue - firstValue) > 1) {\n throw new Error(\"noUiSlider: 'padding' option must not exceed 100% of the range.\");\n }\n }\n function testDirection(parsed, entry) {\n // Set direction as a numerical value for easy parsing.\n // Invert connection for RTL sliders, so that the proper\n // handles get the connect/background classes.\n switch (entry) {\n case \"ltr\":\n parsed.dir = 0;\n break;\n case \"rtl\":\n parsed.dir = 1;\n break;\n default:\n throw new Error(\"noUiSlider: 'direction' option was not recognized.\");\n }\n }\n function testBehaviour(parsed, entry) {\n // Make sure the input is a string.\n if (typeof entry !== \"string\") {\n throw new Error(\"noUiSlider: 'behaviour' must be a string containing options.\");\n }\n // Check if the string contains any keywords.\n // None are required.\n var tap = entry.indexOf(\"tap\") >= 0;\n var drag = entry.indexOf(\"drag\") >= 0;\n var fixed = entry.indexOf(\"fixed\") >= 0;\n var snap = entry.indexOf(\"snap\") >= 0;\n var hover = entry.indexOf(\"hover\") >= 0;\n var unconstrained = entry.indexOf(\"unconstrained\") >= 0;\n var invertConnects = entry.indexOf(\"invert-connects\") >= 0;\n var dragAll = entry.indexOf(\"drag-all\") >= 0;\n var smoothSteps = entry.indexOf(\"smooth-steps\") >= 0;\n if (fixed) {\n if (parsed.handles !== 2) {\n throw new Error(\"noUiSlider: 'fixed' behaviour must be used with 2 handles\");\n }\n // Use margin to enforce fixed state\n testMargin(parsed, parsed.start[1] - parsed.start[0]);\n }\n if (invertConnects && parsed.handles !== 2) {\n throw new Error(\"noUiSlider: 'invert-connects' behaviour must be used with 2 handles\");\n }\n if (unconstrained && (parsed.margin || parsed.limit)) {\n throw new Error(\"noUiSlider: 'unconstrained' behaviour cannot be used with margin or limit\");\n }\n parsed.events = {\n tap: tap || snap,\n drag: drag,\n dragAll: dragAll,\n smoothSteps: smoothSteps,\n fixed: fixed,\n snap: snap,\n hover: hover,\n unconstrained: unconstrained,\n invertConnects: invertConnects,\n };\n }\n function testTooltips(parsed, entry) {\n if (entry === false) {\n return;\n }\n if (entry === true || isValidPartialFormatter(entry)) {\n parsed.tooltips = [];\n for (var i = 0; i < parsed.handles; i++) {\n parsed.tooltips.push(entry);\n }\n }\n else {\n entry = asArray(entry);\n if (entry.length !== parsed.handles) {\n throw new Error(\"noUiSlider: must pass a formatter for all handles.\");\n }\n entry.forEach(function (formatter) {\n if (typeof formatter !== \"boolean\" && !isValidPartialFormatter(formatter)) {\n throw new Error(\"noUiSlider: 'tooltips' must be passed a formatter or 'false'.\");\n }\n });\n parsed.tooltips = entry;\n }\n }\n function testHandleAttributes(parsed, entry) {\n if (entry.length !== parsed.handles) {\n throw new Error(\"noUiSlider: must pass a attributes for all handles.\");\n }\n parsed.handleAttributes = entry;\n }\n function testAriaFormat(parsed, entry) {\n if (!isValidPartialFormatter(entry)) {\n throw new Error(\"noUiSlider: 'ariaFormat' requires 'to' method.\");\n }\n parsed.ariaFormat = entry;\n }\n function testFormat(parsed, entry) {\n if (!isValidFormatter(entry)) {\n throw new Error(\"noUiSlider: 'format' requires 'to' and 'from' methods.\");\n }\n parsed.format = entry;\n }\n function testKeyboardSupport(parsed, entry) {\n if (typeof entry !== \"boolean\") {\n throw new Error(\"noUiSlider: 'keyboardSupport' option must be a boolean.\");\n }\n parsed.keyboardSupport = entry;\n }\n function testDocumentElement(parsed, entry) {\n // This is an advanced option. Passed values are used without validation.\n parsed.documentElement = entry;\n }\n function testCssPrefix(parsed, entry) {\n if (typeof entry !== \"string\" && entry !== false) {\n throw new Error(\"noUiSlider: 'cssPrefix' must be a string or `false`.\");\n }\n parsed.cssPrefix = entry;\n }\n function testCssClasses(parsed, entry) {\n if (typeof entry !== \"object\") {\n throw new Error(\"noUiSlider: 'cssClasses' must be an object.\");\n }\n if (typeof parsed.cssPrefix === \"string\") {\n parsed.cssClasses = {};\n Object.keys(entry).forEach(function (key) {\n parsed.cssClasses[key] = parsed.cssPrefix + entry[key];\n });\n }\n else {\n parsed.cssClasses = entry;\n }\n }\n // Test all developer settings and parse to assumption-safe values.\n function testOptions(options) {\n // To prove a fix for #537, freeze options here.\n // If the object is modified, an error will be thrown.\n // Object.freeze(options);\n var parsed = {\n margin: null,\n limit: null,\n padding: null,\n animate: true,\n animationDuration: 300,\n ariaFormat: defaultFormatter,\n format: defaultFormatter,\n };\n // Tests are executed in the order they are presented here.\n var tests = {\n step: { r: false, t: testStep },\n keyboardPageMultiplier: { r: false, t: testKeyboardPageMultiplier },\n keyboardMultiplier: { r: false, t: testKeyboardMultiplier },\n keyboardDefaultStep: { r: false, t: testKeyboardDefaultStep },\n start: { r: true, t: testStart },\n connect: { r: true, t: testConnect },\n direction: { r: true, t: testDirection },\n snap: { r: false, t: testSnap },\n animate: { r: false, t: testAnimate },\n animationDuration: { r: false, t: testAnimationDuration },\n range: { r: true, t: testRange },\n orientation: { r: false, t: testOrientation },\n margin: { r: false, t: testMargin },\n limit: { r: false, t: testLimit },\n padding: { r: false, t: testPadding },\n behaviour: { r: true, t: testBehaviour },\n ariaFormat: { r: false, t: testAriaFormat },\n format: { r: false, t: testFormat },\n tooltips: { r: false, t: testTooltips },\n keyboardSupport: { r: true, t: testKeyboardSupport },\n documentElement: { r: false, t: testDocumentElement },\n cssPrefix: { r: true, t: testCssPrefix },\n cssClasses: { r: true, t: testCssClasses },\n handleAttributes: { r: false, t: testHandleAttributes },\n };\n var defaults = {\n connect: false,\n direction: \"ltr\",\n behaviour: \"tap\",\n orientation: \"horizontal\",\n keyboardSupport: true,\n cssPrefix: \"noUi-\",\n cssClasses: cssClasses,\n keyboardPageMultiplier: 5,\n keyboardMultiplier: 1,\n keyboardDefaultStep: 10,\n };\n // AriaFormat defaults to regular format, if any.\n if (options.format && !options.ariaFormat) {\n options.ariaFormat = options.format;\n }\n // Run all options through a testing mechanism to ensure correct\n // input. It should be noted that options might get modified to\n // be handled properly. E.g. wrapping integers in arrays.\n Object.keys(tests).forEach(function (name) {\n // If the option isn't set, but it is required, throw an error.\n if (!isSet(options[name]) && defaults[name] === undefined) {\n if (tests[name].r) {\n throw new Error(\"noUiSlider: '\" + name + \"' is required.\");\n }\n return;\n }\n tests[name].t(parsed, !isSet(options[name]) ? defaults[name] : options[name]);\n });\n // Forward pips options\n parsed.pips = options.pips;\n // All recent browsers accept unprefixed transform.\n // We need -ms- for IE9 and -webkit- for older Android;\n // Assume use of -webkit- if unprefixed and -ms- are not supported.\n // https://caniuse.com/#feat=transforms2d\n var d = document.createElement(\"div\");\n var msPrefix = d.style.msTransform !== undefined;\n var noPrefix = d.style.transform !== undefined;\n parsed.transformRule = noPrefix ? \"transform\" : msPrefix ? \"msTransform\" : \"webkitTransform\";\n // Pips don't move, so we can place them using left/top.\n var styles = [\n [\"left\", \"top\"],\n [\"right\", \"bottom\"],\n ];\n parsed.style = styles[parsed.dir][parsed.ort];\n return parsed;\n }\n //endregion\n function scope(target, options, originalOptions) {\n var actions = getActions();\n var supportsTouchActionNone = getSupportsTouchActionNone();\n var supportsPassive = supportsTouchActionNone && getSupportsPassive();\n // All variables local to 'scope' are prefixed with 'scope_'\n // Slider DOM Nodes\n var scope_Target = target;\n var scope_Base;\n var scope_ConnectBase;\n var scope_Handles;\n var scope_Connects;\n var scope_Pips;\n var scope_Tooltips;\n // Slider state values\n var scope_Spectrum = options.spectrum;\n var scope_Values = [];\n var scope_Locations = [];\n var scope_HandleNumbers = [];\n var scope_ActiveHandlesCount = 0;\n var scope_Events = {};\n var scope_ConnectsInverted = false;\n // Document Nodes\n var scope_Document = target.ownerDocument;\n var scope_DocumentElement = options.documentElement || scope_Document.documentElement;\n var scope_Body = scope_Document.body;\n // For horizontal sliders in standard ltr documents,\n // make .noUi-origin overflow to the left so the document doesn't scroll.\n var scope_DirOffset = scope_Document.dir === \"rtl\" || options.ort === 1 ? 0 : 100;\n // Creates a node, adds it to target, returns the new node.\n function addNodeTo(addTarget, className) {\n var div = scope_Document.createElement(\"div\");\n if (className) {\n addClass(div, className);\n }\n addTarget.appendChild(div);\n return div;\n }\n // Append a origin to the base\n function addOrigin(base, handleNumber) {\n var origin = addNodeTo(base, options.cssClasses.origin);\n var handle = addNodeTo(origin, options.cssClasses.handle);\n addNodeTo(handle, options.cssClasses.touchArea);\n handle.setAttribute(\"data-handle\", String(handleNumber));\n if (options.keyboardSupport) {\n // https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex\n // 0 = focusable and reachable\n handle.setAttribute(\"tabindex\", \"0\");\n handle.addEventListener(\"keydown\", function (event) {\n return eventKeydown(event, handleNumber);\n });\n }\n if (options.handleAttributes !== undefined) {\n var attributes_1 = options.handleAttributes[handleNumber];\n Object.keys(attributes_1).forEach(function (attribute) {\n handle.setAttribute(attribute, attributes_1[attribute]);\n });\n }\n handle.setAttribute(\"role\", \"slider\");\n handle.setAttribute(\"aria-orientation\", options.ort ? \"vertical\" : \"horizontal\");\n if (handleNumber === 0) {\n addClass(handle, options.cssClasses.handleLower);\n }\n else if (handleNumber === options.handles - 1) {\n addClass(handle, options.cssClasses.handleUpper);\n }\n origin.handle = handle;\n return origin;\n }\n // Insert nodes for connect elements\n function addConnect(base, add) {\n if (!add) {\n return false;\n }\n return addNodeTo(base, options.cssClasses.connect);\n }\n // Add handles to the slider base.\n function addElements(connectOptions, base) {\n scope_ConnectBase = addNodeTo(base, options.cssClasses.connects);\n scope_Handles = [];\n scope_Connects = [];\n scope_Connects.push(addConnect(scope_ConnectBase, connectOptions[0]));\n // [::::O====O====O====]\n // connectOptions = [0, 1, 1, 1]\n for (var i = 0; i < options.handles; i++) {\n // Keep a list of all added handles.\n scope_Handles.push(addOrigin(base, i));\n scope_HandleNumbers[i] = i;\n scope_Connects.push(addConnect(scope_ConnectBase, connectOptions[i + 1]));\n }\n }\n // Initialize a single slider.\n function addSlider(addTarget) {\n // Apply classes and data to the target.\n addClass(addTarget, options.cssClasses.target);\n if (options.dir === 0) {\n addClass(addTarget, options.cssClasses.ltr);\n }\n else {\n addClass(addTarget, options.cssClasses.rtl);\n }\n if (options.ort === 0) {\n addClass(addTarget, options.cssClasses.horizontal);\n }\n else {\n addClass(addTarget, options.cssClasses.vertical);\n }\n var textDirection = getComputedStyle(addTarget).direction;\n if (textDirection === \"rtl\") {\n addClass(addTarget, options.cssClasses.textDirectionRtl);\n }\n else {\n addClass(addTarget, options.cssClasses.textDirectionLtr);\n }\n return addNodeTo(addTarget, options.cssClasses.base);\n }\n function addTooltip(handle, handleNumber) {\n if (!options.tooltips || !options.tooltips[handleNumber]) {\n return false;\n }\n return addNodeTo(handle.firstChild, options.cssClasses.tooltip);\n }\n function isSliderDisabled() {\n return scope_Target.hasAttribute(\"disabled\");\n }\n // Disable the slider dragging if any handle is disabled\n function isHandleDisabled(handleNumber) {\n var handleOrigin = scope_Handles[handleNumber];\n return handleOrigin.hasAttribute(\"disabled\");\n }\n function disable(handleNumber) {\n if (handleNumber !== null && handleNumber !== undefined) {\n scope_Handles[handleNumber].setAttribute(\"disabled\", \"\");\n scope_Handles[handleNumber].handle.removeAttribute(\"tabindex\");\n }\n else {\n scope_Target.setAttribute(\"disabled\", \"\");\n scope_Handles.forEach(function (handle) {\n handle.handle.removeAttribute(\"tabindex\");\n });\n }\n }\n function enable(handleNumber) {\n if (handleNumber !== null && handleNumber !== undefined) {\n scope_Handles[handleNumber].removeAttribute(\"disabled\");\n scope_Handles[handleNumber].handle.setAttribute(\"tabindex\", \"0\");\n }\n else {\n scope_Target.removeAttribute(\"disabled\");\n scope_Handles.forEach(function (handle) {\n handle.removeAttribute(\"disabled\");\n handle.handle.setAttribute(\"tabindex\", \"0\");\n });\n }\n }\n function removeTooltips() {\n if (scope_Tooltips) {\n removeEvent(\"update\" + INTERNAL_EVENT_NS.tooltips);\n scope_Tooltips.forEach(function (tooltip) {\n if (tooltip) {\n removeElement(tooltip);\n }\n });\n scope_Tooltips = null;\n }\n }\n // The tooltips option is a shorthand for using the 'update' event.\n function tooltips() {\n removeTooltips();\n // Tooltips are added with options.tooltips in original order.\n scope_Tooltips = scope_Handles.map(addTooltip);\n bindEvent(\"update\" + INTERNAL_EVENT_NS.tooltips, function (values, handleNumber, unencoded) {\n if (!scope_Tooltips || !options.tooltips) {\n return;\n }\n if (scope_Tooltips[handleNumber] === false) {\n return;\n }\n var formattedValue = values[handleNumber];\n if (options.tooltips[handleNumber] !== true) {\n formattedValue = options.tooltips[handleNumber].to(unencoded[handleNumber]);\n }\n scope_Tooltips[handleNumber].innerHTML = formattedValue;\n });\n }\n function aria() {\n removeEvent(\"update\" + INTERNAL_EVENT_NS.aria);\n bindEvent(\"update\" + INTERNAL_EVENT_NS.aria, function (values, handleNumber, unencoded, tap, positions) {\n // Update Aria Values for all handles, as a change in one changes min and max values for the next.\n scope_HandleNumbers.forEach(function (index) {\n var handle = scope_Handles[index];\n var min = checkHandlePosition(scope_Locations, index, 0, true, true, true);\n var max = checkHandlePosition(scope_Locations, index, 100, true, true, true);\n var now = positions[index];\n // Formatted value for display\n var text = String(options.ariaFormat.to(unencoded[index]));\n // Map to slider range values\n min = scope_Spectrum.fromStepping(min).toFixed(1);\n max = scope_Spectrum.fromStepping(max).toFixed(1);\n now = scope_Spectrum.fromStepping(now).toFixed(1);\n handle.children[0].setAttribute(\"aria-valuemin\", min);\n handle.children[0].setAttribute(\"aria-valuemax\", max);\n handle.children[0].setAttribute(\"aria-valuenow\", now);\n handle.children[0].setAttribute(\"aria-valuetext\", text);\n });\n });\n }\n function getGroup(pips) {\n // Use the range.\n if (pips.mode === exports.PipsMode.Range || pips.mode === exports.PipsMode.Steps) {\n return scope_Spectrum.xVal;\n }\n if (pips.mode === exports.PipsMode.Count) {\n if (pips.values < 2) {\n throw new Error(\"noUiSlider: 'values' (>= 2) required for mode 'count'.\");\n }\n // Divide 0 - 100 in 'count' parts.\n var interval = pips.values - 1;\n var spread = 100 / interval;\n var values = [];\n // List these parts and have them handled as 'positions'.\n while (interval--) {\n values[interval] = interval * spread;\n }\n values.push(100);\n return mapToRange(values, pips.stepped);\n }\n if (pips.mode === exports.PipsMode.Positions) {\n // Map all percentages to on-range values.\n return mapToRange(pips.values, pips.stepped);\n }\n if (pips.mode === exports.PipsMode.Values) {\n // If the value must be stepped, it needs to be converted to a percentage first.\n if (pips.stepped) {\n return pips.values.map(function (value) {\n // Convert to percentage, apply step, return to value.\n return scope_Spectrum.fromStepping(scope_Spectrum.getStep(scope_Spectrum.toStepping(value)));\n });\n }\n // Otherwise, we can simply use the values.\n return pips.values;\n }\n return []; // pips.mode = never\n }\n function mapToRange(values, stepped) {\n return values.map(function (value) {\n return scope_Spectrum.fromStepping(stepped ? scope_Spectrum.getStep(value) : value);\n });\n }\n function generateSpread(pips) {\n function safeIncrement(value, increment) {\n // Avoid floating point variance by dropping the smallest decimal places.\n return Number((value + increment).toFixed(7));\n }\n var group = getGroup(pips);\n var indexes = {};\n var firstInRange = scope_Spectrum.xVal[0];\n var lastInRange = scope_Spectrum.xVal[scope_Spectrum.xVal.length - 1];\n var ignoreFirst = false;\n var ignoreLast = false;\n var prevPct = 0;\n // Create a copy of the group, sort it and filter away all duplicates.\n group = unique(group.slice().sort(function (a, b) {\n return a - b;\n }));\n // Make sure the range starts with the first element.\n if (group[0] !== firstInRange) {\n group.unshift(firstInRange);\n ignoreFirst = true;\n }\n // Likewise for the last one.\n if (group[group.length - 1] !== lastInRange) {\n group.push(lastInRange);\n ignoreLast = true;\n }\n group.forEach(function (current, index) {\n // Get the current step and the lower + upper positions.\n var step;\n var i;\n var q;\n var low = current;\n var high = group[index + 1];\n var newPct;\n var pctDifference;\n var pctPos;\n var type;\n var steps;\n var realSteps;\n var stepSize;\n var isSteps = pips.mode === exports.PipsMode.Steps;\n // When using 'steps' mode, use the provided steps.\n // Otherwise, we'll step on to the next subrange.\n if (isSteps) {\n step = scope_Spectrum.xNumSteps[index];\n }\n // Default to a 'full' step.\n if (!step) {\n step = high - low;\n }\n // If high is undefined we are at the last subrange. Make sure it iterates once (#1088)\n if (high === undefined) {\n high = low;\n }\n // Make sure step isn't 0, which would cause an infinite loop (#654)\n step = Math.max(step, 0.0000001);\n // Find all steps in the subrange.\n for (i = low; i <= high; i = safeIncrement(i, step)) {\n // Get the percentage value for the current step,\n // calculate the size for the subrange.\n newPct = scope_Spectrum.toStepping(i);\n pctDifference = newPct - prevPct;\n steps = pctDifference / (pips.density || 1);\n realSteps = Math.round(steps);\n // This ratio represents the amount of percentage-space a point indicates.\n // For a density 1 the points/percentage = 1. For density 2, that percentage needs to be re-divided.\n // Round the percentage offset to an even number, then divide by two\n // to spread the offset on both sides of the range.\n stepSize = pctDifference / realSteps;\n // Divide all points evenly, adding the correct number to this subrange.\n // Run up to <= so that 100% gets a point, event if ignoreLast is set.\n for (q = 1; q <= realSteps; q += 1) {\n // The ratio between the rounded value and the actual size might be ~1% off.\n // Correct the percentage offset by the number of points\n // per subrange. density = 1 will result in 100 points on the\n // full range, 2 for 50, 4 for 25, etc.\n pctPos = prevPct + q * stepSize;\n indexes[pctPos.toFixed(5)] = [scope_Spectrum.fromStepping(pctPos), 0];\n }\n // Determine the point type.\n type = group.indexOf(i) > -1 ? exports.PipsType.LargeValue : isSteps ? exports.PipsType.SmallValue : exports.PipsType.NoValue;\n // Enforce the 'ignoreFirst' option by overwriting the type for 0.\n if (!index && ignoreFirst && i !== high) {\n type = 0;\n }\n if (!(i === high && ignoreLast)) {\n // Mark the 'type' of this point. 0 = plain, 1 = real value, 2 = step value.\n indexes[newPct.toFixed(5)] = [i, type];\n }\n // Update the percentage count.\n prevPct = newPct;\n }\n });\n return indexes;\n }\n function addMarking(spread, filterFunc, formatter) {\n var _a, _b;\n var element = scope_Document.createElement(\"div\");\n var valueSizeClasses = (_a = {},\n _a[exports.PipsType.None] = \"\",\n _a[exports.PipsType.NoValue] = options.cssClasses.valueNormal,\n _a[exports.PipsType.LargeValue] = options.cssClasses.valueLarge,\n _a[exports.PipsType.SmallValue] = options.cssClasses.valueSub,\n _a);\n var markerSizeClasses = (_b = {},\n _b[exports.PipsType.None] = \"\",\n _b[exports.PipsType.NoValue] = options.cssClasses.markerNormal,\n _b[exports.PipsType.LargeValue] = options.cssClasses.markerLarge,\n _b[exports.PipsType.SmallValue] = options.cssClasses.markerSub,\n _b);\n var valueOrientationClasses = [options.cssClasses.valueHorizontal, options.cssClasses.valueVertical];\n var markerOrientationClasses = [options.cssClasses.markerHorizontal, options.cssClasses.markerVertical];\n addClass(element, options.cssClasses.pips);\n addClass(element, options.ort === 0 ? options.cssClasses.pipsHorizontal : options.cssClasses.pipsVertical);\n function getClasses(type, source) {\n var a = source === options.cssClasses.value;\n var orientationClasses = a ? valueOrientationClasses : markerOrientationClasses;\n var sizeClasses = a ? valueSizeClasses : markerSizeClasses;\n return source + \" \" + orientationClasses[options.ort] + \" \" + sizeClasses[type];\n }\n function addSpread(offset, value, type) {\n // Apply the filter function, if it is set.\n type = filterFunc ? filterFunc(value, type) : type;\n if (type === exports.PipsType.None) {\n return;\n }\n // Add a marker for every point\n var node = addNodeTo(element, false);\n node.className = getClasses(type, options.cssClasses.marker);\n node.style[options.style] = offset + \"%\";\n // Values are only appended for points marked '1' or '2'.\n if (type > exports.PipsType.NoValue) {\n node = addNodeTo(element, false);\n node.className = getClasses(type, options.cssClasses.value);\n node.setAttribute(\"data-value\", String(value));\n node.style[options.style] = offset + \"%\";\n node.innerHTML = String(formatter.to(value));\n }\n }\n // Append all points.\n Object.keys(spread).forEach(function (offset) {\n addSpread(offset, spread[offset][0], spread[offset][1]);\n });\n return element;\n }\n function removePips() {\n if (scope_Pips) {\n removeElement(scope_Pips);\n scope_Pips = null;\n }\n }\n function pips(pips) {\n // Fix #669\n removePips();\n var spread = generateSpread(pips);\n var filter = pips.filter;\n var format = pips.format || {\n to: function (value) {\n return String(Math.round(value));\n },\n };\n scope_Pips = scope_Target.appendChild(addMarking(spread, filter, format));\n return scope_Pips;\n }\n // Shorthand for base dimensions.\n function baseSize() {\n var rect = scope_Base.getBoundingClientRect();\n var alt = (\"offset\" + [\"Width\", \"Height\"][options.ort]);\n return options.ort === 0 ? rect.width || scope_Base[alt] : rect.height || scope_Base[alt];\n }\n // Handler for attaching events trough a proxy.\n function attachEvent(events, element, callback, data) {\n // This function can be used to 'filter' events to the slider.\n // element is a node, not a nodeList\n var method = function (event) {\n var e = fixEvent(event, data.pageOffset, data.target || element);\n // fixEvent returns false if this event has a different target\n // when handling (multi-) touch events;\n if (!e) {\n return false;\n }\n // doNotReject is passed by all end events to make sure released touches\n // are not rejected, leaving the slider \"stuck\" to the cursor;\n if (isSliderDisabled() && !data.doNotReject) {\n return false;\n }\n // Stop if an active 'tap' transition is taking place.\n if (hasClass(scope_Target, options.cssClasses.tap) && !data.doNotReject) {\n return false;\n }\n // Ignore right or middle clicks on start #454\n if (events === actions.start && e.buttons !== undefined && e.buttons > 1) {\n return false;\n }\n // Ignore right or middle clicks on start #454\n if (data.hover && e.buttons) {\n return false;\n }\n // 'supportsPassive' is only true if a browser also supports touch-action: none in CSS.\n // iOS safari does not, so it doesn't get to benefit from passive scrolling. iOS does support\n // touch-action: manipulation, but that allows panning, which breaks\n // sliders after zooming/on non-responsive pages.\n // See: https://bugs.webkit.org/show_bug.cgi?id=133112\n if (!supportsPassive) {\n e.preventDefault();\n }\n e.calcPoint = e.points[options.ort];\n // Call the event handler with the event [ and additional data ].\n callback(e, data);\n return;\n };\n var methods = [];\n // Bind a closure on the target for every event type.\n events.split(\" \").forEach(function (eventName) {\n element.addEventListener(eventName, method, supportsPassive ? { passive: true } : false);\n methods.push([eventName, method]);\n });\n return methods;\n }\n // Provide a clean event with standardized offset values.\n function fixEvent(e, pageOffset, eventTarget) {\n // Filter the event to register the type, which can be\n // touch, mouse or pointer. Offset changes need to be\n // made on an event specific basis.\n var touch = e.type.indexOf(\"touch\") === 0;\n var mouse = e.type.indexOf(\"mouse\") === 0;\n var pointer = e.type.indexOf(\"pointer\") === 0;\n var x = 0;\n var y = 0;\n // IE10 implemented pointer events with a prefix;\n if (e.type.indexOf(\"MSPointer\") === 0) {\n pointer = true;\n }\n // Erroneous events seem to be passed in occasionally on iOS/iPadOS after user finishes interacting with\n // the slider. They appear to be of type MouseEvent, yet they don't have usual properties set. Ignore\n // events that have no touches or buttons associated with them. (#1057, #1079, #1095)\n if (e.type === \"mousedown\" && !e.buttons && !e.touches) {\n return false;\n }\n // The only thing one handle should be concerned about is the touches that originated on top of it.\n if (touch) {\n // Returns true if a touch originated on the target.\n var isTouchOnTarget = function (checkTouch) {\n var target = checkTouch.target;\n return (target === eventTarget ||\n eventTarget.contains(target) ||\n (e.composed && e.composedPath().shift() === eventTarget));\n };\n // In the case of touchstart events, we need to make sure there is still no more than one\n // touch on the target so we look amongst all touches.\n if (e.type === \"touchstart\") {\n var targetTouches = Array.prototype.filter.call(e.touches, isTouchOnTarget);\n // Do not support more than one touch per handle.\n if (targetTouches.length > 1) {\n return false;\n }\n x = targetTouches[0].pageX;\n y = targetTouches[0].pageY;\n }\n else {\n // In the other cases, find on changedTouches is enough.\n var targetTouch = Array.prototype.find.call(e.changedTouches, isTouchOnTarget);\n // Cancel if the target touch has not moved.\n if (!targetTouch) {\n return false;\n }\n x = targetTouch.pageX;\n y = targetTouch.pageY;\n }\n }\n pageOffset = pageOffset || getPageOffset(scope_Document);\n if (mouse || pointer) {\n x = e.clientX + pageOffset.x;\n y = e.clientY + pageOffset.y;\n }\n e.pageOffset = pageOffset;\n e.points = [x, y];\n e.cursor = mouse || pointer; // Fix #435\n return e;\n }\n // Translate a coordinate in the document to a percentage on the slider\n function calcPointToPercentage(calcPoint) {\n var location = calcPoint - offset(scope_Base, options.ort);\n var proposal = (location * 100) / baseSize();\n // Clamp proposal between 0% and 100%\n // Out-of-bound coordinates may occur when .noUi-base pseudo-elements\n // are used (e.g. contained handles feature)\n proposal = limit(proposal);\n return options.dir ? 100 - proposal : proposal;\n }\n // Find handle closest to a certain percentage on the slider\n function getClosestHandle(clickedPosition) {\n var smallestDifference = 100;\n var handleNumber = false;\n scope_Handles.forEach(function (handle, index) {\n // Disabled handles are ignored\n if (isHandleDisabled(index)) {\n return;\n }\n var handlePosition = scope_Locations[index];\n var differenceWithThisHandle = Math.abs(handlePosition - clickedPosition);\n // Initial state\n var clickAtEdge = differenceWithThisHandle === 100 && smallestDifference === 100;\n // Difference with this handle is smaller than the previously checked handle\n var isCloser = differenceWithThisHandle < smallestDifference;\n var isCloserAfter = differenceWithThisHandle <= smallestDifference && clickedPosition > handlePosition;\n if (isCloser || isCloserAfter || clickAtEdge) {\n handleNumber = index;\n smallestDifference = differenceWithThisHandle;\n }\n });\n return handleNumber;\n }\n // Fire 'end' when a mouse or pen leaves the document.\n function documentLeave(event, data) {\n if (event.type === \"mouseout\" &&\n event.target.nodeName === \"HTML\" &&\n event.relatedTarget === null) {\n eventEnd(event, data);\n }\n }\n // Handle movement on document for handle and range drag.\n function eventMove(event, data) {\n // Fix #498\n // Check value of .buttons in 'start' to work around a bug in IE10 mobile (data.buttonsProperty).\n // https://connect.microsoft.com/IE/feedback/details/927005/mobile-ie10-windows-phone-buttons-property-of-pointermove-event-always-zero\n // IE9 has .buttons and .which zero on mousemove.\n // Firefox breaks the spec MDN defines.\n if (navigator.appVersion.indexOf(\"MSIE 9\") === -1 && event.buttons === 0 && data.buttonsProperty !== 0) {\n return eventEnd(event, data);\n }\n // Check if we are moving up or down\n var movement = (options.dir ? -1 : 1) * (event.calcPoint - data.startCalcPoint);\n // Convert the movement into a percentage of the slider width/height\n var proposal = (movement * 100) / data.baseSize;\n moveHandles(movement > 0, proposal, data.locations, data.handleNumbers, data.connect);\n }\n // Unbind move events on document, call callbacks.\n function eventEnd(event, data) {\n // The handle is no longer active, so remove the class.\n if (data.handle) {\n removeClass(data.handle, options.cssClasses.active);\n scope_ActiveHandlesCount -= 1;\n }\n // Unbind the move and end events, which are added on 'start'.\n data.listeners.forEach(function (c) {\n scope_DocumentElement.removeEventListener(c[0], c[1]);\n });\n if (scope_ActiveHandlesCount === 0) {\n // Remove dragging class.\n removeClass(scope_Target, options.cssClasses.drag);\n setZindex();\n // Remove cursor styles and text-selection events bound to the body.\n if (event.cursor) {\n scope_Body.style.cursor = \"\";\n scope_Body.removeEventListener(\"selectstart\", preventDefault);\n }\n }\n if (options.events.smoothSteps) {\n data.handleNumbers.forEach(function (handleNumber) {\n setHandle(handleNumber, scope_Locations[handleNumber], true, true, false, false);\n });\n data.handleNumbers.forEach(function (handleNumber) {\n fireEvent(\"update\", handleNumber);\n });\n }\n data.handleNumbers.forEach(function (handleNumber) {\n fireEvent(\"change\", handleNumber);\n fireEvent(\"set\", handleNumber);\n fireEvent(\"end\", handleNumber);\n });\n }\n // Bind move events on document.\n function eventStart(event, data) {\n // Ignore event if any handle is disabled\n if (data.handleNumbers.some(isHandleDisabled)) {\n return;\n }\n var handle;\n if (data.handleNumbers.length === 1) {\n var handleOrigin = scope_Handles[data.handleNumbers[0]];\n handle = handleOrigin.children[0];\n scope_ActiveHandlesCount += 1;\n // Mark the handle as 'active' so it can be styled.\n addClass(handle, options.cssClasses.active);\n }\n // A drag should never propagate up to the 'tap' event.\n event.stopPropagation();\n // Record the event listeners.\n var listeners = [];\n // Attach the move and end events.\n var moveEvent = attachEvent(actions.move, scope_DocumentElement, eventMove, {\n // The event target has changed so we need to propagate the original one so that we keep\n // relying on it to extract target touches.\n target: event.target,\n handle: handle,\n connect: data.connect,\n listeners: listeners,\n startCalcPoint: event.calcPoint,\n baseSize: baseSize(),\n pageOffset: event.pageOffset,\n handleNumbers: data.handleNumbers,\n buttonsProperty: event.buttons,\n locations: scope_Locations.slice(),\n });\n var endEvent = attachEvent(actions.end, scope_DocumentElement, eventEnd, {\n target: event.target,\n handle: handle,\n listeners: listeners,\n doNotReject: true,\n handleNumbers: data.handleNumbers,\n });\n var outEvent = attachEvent(\"mouseout\", scope_DocumentElement, documentLeave, {\n target: event.target,\n handle: handle,\n listeners: listeners,\n doNotReject: true,\n handleNumbers: data.handleNumbers,\n });\n // We want to make sure we pushed the listeners in the listener list rather than creating\n // a new one as it has already been passed to the event handlers.\n listeners.push.apply(listeners, moveEvent.concat(endEvent, outEvent));\n // Text selection isn't an issue on touch devices,\n // so adding cursor styles can be skipped.\n if (event.cursor) {\n // Prevent the 'I' cursor and extend the range-drag cursor.\n scope_Body.style.cursor = getComputedStyle(event.target).cursor;\n // Mark the target with a dragging state.\n if (scope_Handles.length > 1) {\n addClass(scope_Target, options.cssClasses.drag);\n }\n // Prevent text selection when dragging the handles.\n // In noUiSlider <= 9.2.0, this was handled by calling preventDefault on mouse/touch start/move,\n // which is scroll blocking. The selectstart event is supported by FireFox starting from version 52,\n // meaning the only holdout is iOS Safari. This doesn't matter: text selection isn't triggered there.\n // The 'cursor' flag is false.\n // See: http://caniuse.com/#search=selectstart\n scope_Body.addEventListener(\"selectstart\", preventDefault, false);\n }\n data.handleNumbers.forEach(function (handleNumber) {\n fireEvent(\"start\", handleNumber);\n });\n }\n // Move closest handle to tapped location.\n function eventTap(event) {\n // The tap event shouldn't propagate up\n event.stopPropagation();\n var proposal = calcPointToPercentage(event.calcPoint);\n var handleNumber = getClosestHandle(proposal);\n // Tackle the case that all handles are 'disabled'.\n if (handleNumber === false) {\n return;\n }\n // Flag the slider as it is now in a transitional state.\n // Transition takes a configurable amount of ms (default 300). Re-enable the slider after that.\n if (!options.events.snap) {\n addClassFor(scope_Target, options.cssClasses.tap, options.animationDuration);\n }\n setHandle(handleNumber, proposal, true, true);\n setZindex();\n fireEvent(\"slide\", handleNumber, true);\n fireEvent(\"update\", handleNumber, true);\n if (!options.events.snap) {\n fireEvent(\"change\", handleNumber, true);\n fireEvent(\"set\", handleNumber, true);\n }\n else {\n eventStart(event, { handleNumbers: [handleNumber] });\n }\n }\n // Fires a 'hover' event for a hovered mouse/pen position.\n function eventHover(event) {\n var proposal = calcPointToPercentage(event.calcPoint);\n var to = scope_Spectrum.getStep(proposal);\n var value = scope_Spectrum.fromStepping(to);\n Object.keys(scope_Events).forEach(function (targetEvent) {\n if (\"hover\" === targetEvent.split(\".\")[0]) {\n scope_Events[targetEvent].forEach(function (callback) {\n callback.call(scope_Self, value);\n });\n }\n });\n }\n // Handles keydown on focused handles\n // Don't move the document when pressing arrow keys on focused handles\n function eventKeydown(event, handleNumber) {\n if (isSliderDisabled() || isHandleDisabled(handleNumber)) {\n return false;\n }\n var horizontalKeys = [\"Left\", \"Right\"];\n var verticalKeys = [\"Down\", \"Up\"];\n var largeStepKeys = [\"PageDown\", \"PageUp\"];\n var edgeKeys = [\"Home\", \"End\"];\n if (options.dir && !options.ort) {\n // On an right-to-left slider, the left and right keys act inverted\n horizontalKeys.reverse();\n }\n else if (options.ort && !options.dir) {\n // On a top-to-bottom slider, the up and down keys act inverted\n verticalKeys.reverse();\n largeStepKeys.reverse();\n }\n // Strip \"Arrow\" for IE compatibility. https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key\n var key = event.key.replace(\"Arrow\", \"\");\n var isLargeDown = key === largeStepKeys[0];\n var isLargeUp = key === largeStepKeys[1];\n var isDown = key === verticalKeys[0] || key === horizontalKeys[0] || isLargeDown;\n var isUp = key === verticalKeys[1] || key === horizontalKeys[1] || isLargeUp;\n var isMin = key === edgeKeys[0];\n var isMax = key === edgeKeys[1];\n if (!isDown && !isUp && !isMin && !isMax) {\n return true;\n }\n event.preventDefault();\n var to;\n if (isUp || isDown) {\n var direction = isDown ? 0 : 1;\n var steps = getNextStepsForHandle(handleNumber);\n var step = steps[direction];\n // At the edge of a slider, do nothing\n if (step === null) {\n return false;\n }\n // No step set, use the default of 10% of the sub-range\n if (step === false) {\n step = scope_Spectrum.getDefaultStep(scope_Locations[handleNumber], isDown, options.keyboardDefaultStep);\n }\n if (isLargeUp || isLargeDown) {\n step *= options.keyboardPageMultiplier;\n }\n else {\n step *= options.keyboardMultiplier;\n }\n // Step over zero-length ranges (#948);\n step = Math.max(step, 0.0000001);\n // Decrement for down steps\n step = (isDown ? -1 : 1) * step;\n to = scope_Values[handleNumber] + step;\n }\n else if (isMax) {\n // End key\n to = options.spectrum.xVal[options.spectrum.xVal.length - 1];\n }\n else {\n // Home key\n to = options.spectrum.xVal[0];\n }\n setHandle(handleNumber, scope_Spectrum.toStepping(to), true, true);\n fireEvent(\"slide\", handleNumber);\n fireEvent(\"update\", handleNumber);\n fireEvent(\"change\", handleNumber);\n fireEvent(\"set\", handleNumber);\n return false;\n }\n // Attach events to several slider parts.\n function bindSliderEvents(behaviour) {\n // Attach the standard drag event to the handles.\n if (!behaviour.fixed) {\n scope_Handles.forEach(function (handle, index) {\n // These events are only bound to the visual handle\n // element, not the 'real' origin element.\n attachEvent(actions.start, handle.children[0], eventStart, {\n handleNumbers: [index],\n });\n });\n }\n // Attach the tap event to the slider base.\n if (behaviour.tap) {\n attachEvent(actions.start, scope_Base, eventTap, {});\n }\n // Fire hover events\n if (behaviour.hover) {\n attachEvent(actions.move, scope_Base, eventHover, {\n hover: true,\n });\n }\n // Make the range draggable.\n if (behaviour.drag) {\n scope_Connects.forEach(function (connect, index) {\n if (connect === false || index === 0 || index === scope_Connects.length - 1) {\n return;\n }\n var handleBefore = scope_Handles[index - 1];\n var handleAfter = scope_Handles[index];\n var eventHolders = [connect];\n var handlesToDrag = [handleBefore, handleAfter];\n var handleNumbersToDrag = [index - 1, index];\n addClass(connect, options.cssClasses.draggable);\n // When the range is fixed, the entire range can\n // be dragged by the handles. The handle in the first\n // origin will propagate the start event upward,\n // but it needs to be bound manually on the other.\n if (behaviour.fixed) {\n eventHolders.push(handleBefore.children[0]);\n eventHolders.push(handleAfter.children[0]);\n }\n if (behaviour.dragAll) {\n handlesToDrag = scope_Handles;\n handleNumbersToDrag = scope_HandleNumbers;\n }\n eventHolders.forEach(function (eventHolder) {\n attachEvent(actions.start, eventHolder, eventStart, {\n handles: handlesToDrag,\n handleNumbers: handleNumbersToDrag,\n connect: connect,\n });\n });\n });\n }\n }\n // Attach an event to this slider, possibly including a namespace\n function bindEvent(namespacedEvent, callback) {\n scope_Events[namespacedEvent] = scope_Events[namespacedEvent] || [];\n scope_Events[namespacedEvent].push(callback);\n // If the event bound is 'update,' fire it immediately for all handles.\n if (namespacedEvent.split(\".\")[0] === \"update\") {\n scope_Handles.forEach(function (a, index) {\n fireEvent(\"update\", index);\n });\n }\n }\n function isInternalNamespace(namespace) {\n return namespace === INTERNAL_EVENT_NS.aria || namespace === INTERNAL_EVENT_NS.tooltips;\n }\n // Undo attachment of event\n function removeEvent(namespacedEvent) {\n var event = namespacedEvent && namespacedEvent.split(\".\")[0];\n var namespace = event ? namespacedEvent.substring(event.length) : namespacedEvent;\n Object.keys(scope_Events).forEach(function (bind) {\n var tEvent = bind.split(\".\")[0];\n var tNamespace = bind.substring(tEvent.length);\n if ((!event || event === tEvent) && (!namespace || namespace === tNamespace)) {\n // only delete protected internal event if intentional\n if (!isInternalNamespace(tNamespace) || namespace === tNamespace) {\n delete scope_Events[bind];\n }\n }\n });\n }\n // External event handling\n function fireEvent(eventName, handleNumber, tap) {\n Object.keys(scope_Events).forEach(function (targetEvent) {\n var eventType = targetEvent.split(\".\")[0];\n if (eventName === eventType) {\n scope_Events[targetEvent].forEach(function (callback) {\n callback.call(\n // Use the slider public API as the scope ('this')\n scope_Self, \n // Return values as array, so arg_1[arg_2] is always valid.\n scope_Values.map(options.format.to), \n // Handle index, 0 or 1\n handleNumber, \n // Un-formatted slider values\n scope_Values.slice(), \n // Event is fired by tap, true or false\n tap || false, \n // Left offset of the handle, in relation to the slider\n scope_Locations.slice(), \n // add the slider public API to an accessible parameter when this is unavailable\n scope_Self);\n });\n }\n });\n }\n // Split out the handle positioning logic so the Move event can use it, too\n function checkHandlePosition(reference, handleNumber, to, lookBackward, lookForward, getValue, smoothSteps) {\n var distance;\n // For sliders with multiple handles, limit movement to the other handle.\n // Apply the margin option by adding it to the handle positions.\n if (scope_Handles.length > 1 && !options.events.unconstrained) {\n if (lookBackward && handleNumber > 0) {\n distance = scope_Spectrum.getAbsoluteDistance(reference[handleNumber - 1], options.margin, false);\n to = Math.max(to, distance);\n }\n if (lookForward && handleNumber < scope_Handles.length - 1) {\n distance = scope_Spectrum.getAbsoluteDistance(reference[handleNumber + 1], options.margin, true);\n to = Math.min(to, distance);\n }\n }\n // The limit option has the opposite effect, limiting handles to a\n // maximum distance from another. Limit must be > 0, as otherwise\n // handles would be unmovable.\n if (scope_Handles.length > 1 && options.limit) {\n if (lookBackward && handleNumber > 0) {\n distance = scope_Spectrum.getAbsoluteDistance(reference[handleNumber - 1], options.limit, false);\n to = Math.min(to, distance);\n }\n if (lookForward && handleNumber < scope_Handles.length - 1) {\n distance = scope_Spectrum.getAbsoluteDistance(reference[handleNumber + 1], options.limit, true);\n to = Math.max(to, distance);\n }\n }\n // The padding option keeps the handles a certain distance from the\n // edges of the slider. Padding must be > 0.\n if (options.padding) {\n if (handleNumber === 0) {\n distance = scope_Spectrum.getAbsoluteDistance(0, options.padding[0], false);\n to = Math.max(to, distance);\n }\n if (handleNumber === scope_Handles.length - 1) {\n distance = scope_Spectrum.getAbsoluteDistance(100, options.padding[1], true);\n to = Math.min(to, distance);\n }\n }\n if (!smoothSteps) {\n to = scope_Spectrum.getStep(to);\n }\n // Limit percentage to the 0 - 100 range\n to = limit(to);\n // Return false if handle can't move\n if (to === reference[handleNumber] && !getValue) {\n return false;\n }\n return to;\n }\n // Uses slider orientation to create CSS rules. a = base value;\n function inRuleOrder(v, a) {\n var o = options.ort;\n return (o ? a : v) + \", \" + (o ? v : a);\n }\n // Moves handle(s) by a percentage\n // (bool, % to move, [% where handle started, ...], [index in scope_Handles, ...])\n function moveHandles(upward, proposal, locations, handleNumbers, connect) {\n var proposals = locations.slice();\n // Store first handle now, so we still have it in case handleNumbers is reversed\n var firstHandle = handleNumbers[0];\n var smoothSteps = options.events.smoothSteps;\n var b = [!upward, upward];\n var f = [upward, !upward];\n // Copy handleNumbers so we don't change the dataset\n handleNumbers = handleNumbers.slice();\n // Check to see which handle is 'leading'.\n // If that one can't move the second can't either.\n if (upward) {\n handleNumbers.reverse();\n }\n // Step 1: get the maximum percentage that any of the handles can move\n if (handleNumbers.length > 1) {\n handleNumbers.forEach(function (handleNumber, o) {\n var to = checkHandlePosition(proposals, handleNumber, proposals[handleNumber] + proposal, b[o], f[o], false, smoothSteps);\n // Stop if one of the handles can't move.\n if (to === false) {\n proposal = 0;\n }\n else {\n proposal = to - proposals[handleNumber];\n proposals[handleNumber] = to;\n }\n });\n }\n // If using one handle, check backward AND forward\n else {\n b = f = [true];\n }\n var state = false;\n // Step 2: Try to set the handles with the found percentage\n handleNumbers.forEach(function (handleNumber, o) {\n state =\n setHandle(handleNumber, locations[handleNumber] + proposal, b[o], f[o], false, smoothSteps) || state;\n });\n // Step 3: If a handle moved, fire events\n if (state) {\n handleNumbers.forEach(function (handleNumber) {\n fireEvent(\"update\", handleNumber);\n fireEvent(\"slide\", handleNumber);\n });\n // If target is a connect, then fire drag event\n if (connect != undefined) {\n fireEvent(\"drag\", firstHandle);\n }\n }\n }\n // Takes a base value and an offset. This offset is used for the connect bar size.\n // In the initial design for this feature, the origin element was 1% wide.\n // Unfortunately, a rounding bug in Chrome makes it impossible to implement this feature\n // in this manner: https://bugs.chromium.org/p/chromium/issues/detail?id=798223\n function transformDirection(a, b) {\n return options.dir ? 100 - a - b : a;\n }\n // Updates scope_Locations and scope_Values, updates visual state\n function updateHandlePosition(handleNumber, to) {\n // Update locations.\n scope_Locations[handleNumber] = to;\n // Convert the value to the slider stepping/range.\n scope_Values[handleNumber] = scope_Spectrum.fromStepping(to);\n var translation = transformDirection(to, 0) - scope_DirOffset;\n var translateRule = \"translate(\" + inRuleOrder(translation + \"%\", \"0\") + \")\";\n scope_Handles[handleNumber].style[options.transformRule] = translateRule;\n // sanity check for at least 2 handles (e.g. during setup)\n if (options.events.invertConnects && scope_Locations.length > 1) {\n // check if handles passed each other, but don't match the ConnectsInverted state\n var handlesAreInOrder = scope_Locations.every(function (position, index, locations) {\n return index === 0 || position >= locations[index - 1];\n });\n if (scope_ConnectsInverted !== !handlesAreInOrder) {\n // invert connects when handles pass each other\n invertConnects();\n // invertConnects already updates all connect elements\n return;\n }\n }\n updateConnect(handleNumber);\n updateConnect(handleNumber + 1);\n if (scope_ConnectsInverted) {\n // When connects are inverted, we also have to update adjacent connects\n updateConnect(handleNumber - 1);\n updateConnect(handleNumber + 2);\n }\n }\n // Handles before the slider middle are stacked later = higher,\n // Handles after the middle later is lower\n // [[7] [8] .......... | .......... [5] [4]\n function setZindex() {\n scope_HandleNumbers.forEach(function (handleNumber) {\n var dir = scope_Locations[handleNumber] > 50 ? -1 : 1;\n var zIndex = 3 + (scope_Handles.length + dir * handleNumber);\n scope_Handles[handleNumber].style.zIndex = String(zIndex);\n });\n }\n // Test suggested values and apply margin, step.\n // if exactInput is true, don't run checkHandlePosition, then the handle can be placed in between steps (#436)\n function setHandle(handleNumber, to, lookBackward, lookForward, exactInput, smoothSteps) {\n if (!exactInput) {\n to = checkHandlePosition(scope_Locations, handleNumber, to, lookBackward, lookForward, false, smoothSteps);\n }\n if (to === false) {\n return false;\n }\n updateHandlePosition(handleNumber, to);\n return true;\n }\n // Updates style attribute for connect nodes\n function updateConnect(index) {\n // Skip connects set to false\n if (!scope_Connects[index]) {\n return;\n }\n // Create a copy of locations, so we can sort them for the local scope logic\n var locations = scope_Locations.slice();\n if (scope_ConnectsInverted) {\n locations.sort(function (a, b) {\n return a - b;\n });\n }\n var l = 0;\n var h = 100;\n if (index !== 0) {\n l = locations[index - 1];\n }\n if (index !== scope_Connects.length - 1) {\n h = locations[index];\n }\n // We use two rules:\n // 'translate' to change the left/top offset;\n // 'scale' to change the width of the element;\n // As the element has a width of 100%, a translation of 100% is equal to 100% of the parent (.noUi-base)\n var connectWidth = h - l;\n var translateRule = \"translate(\" + inRuleOrder(transformDirection(l, connectWidth) + \"%\", \"0\") + \")\";\n var scaleRule = \"scale(\" + inRuleOrder(connectWidth / 100, \"1\") + \")\";\n scope_Connects[index].style[options.transformRule] =\n translateRule + \" \" + scaleRule;\n }\n // Parses value passed to .set method. Returns current value if not parse-able.\n function resolveToValue(to, handleNumber) {\n // Setting with null indicates an 'ignore'.\n // Inputting 'false' is invalid.\n if (to === null || to === false || to === undefined) {\n return scope_Locations[handleNumber];\n }\n // If a formatted number was passed, attempt to decode it.\n if (typeof to === \"number\") {\n to = String(to);\n }\n to = options.format.from(to);\n if (to !== false) {\n to = scope_Spectrum.toStepping(to);\n }\n // If parsing the number failed, use the current value.\n if (to === false || isNaN(to)) {\n return scope_Locations[handleNumber];\n }\n return to;\n }\n // Set the slider value.\n function valueSet(input, fireSetEvent, exactInput) {\n var values = asArray(input);\n var isInit = scope_Locations[0] === undefined;\n // Event fires by default\n fireSetEvent = fireSetEvent === undefined ? true : fireSetEvent;\n // Animation is optional.\n // Make sure the initial values were set before using animated placement.\n if (options.animate && !isInit) {\n addClassFor(scope_Target, options.cssClasses.tap, options.animationDuration);\n }\n // First pass, without lookAhead but with lookBackward. Values are set from left to right.\n scope_HandleNumbers.forEach(function (handleNumber) {\n setHandle(handleNumber, resolveToValue(values[handleNumber], handleNumber), true, false, exactInput);\n });\n var i = scope_HandleNumbers.length === 1 ? 0 : 1;\n // Spread handles evenly across the slider if the range has no size (min=max)\n if (isInit && scope_Spectrum.hasNoSize()) {\n exactInput = true;\n scope_Locations[0] = 0;\n if (scope_HandleNumbers.length > 1) {\n var space_1 = 100 / (scope_HandleNumbers.length - 1);\n scope_HandleNumbers.forEach(function (handleNumber) {\n scope_Locations[handleNumber] = handleNumber * space_1;\n });\n }\n }\n // Secondary passes. Now that all base values are set, apply constraints.\n // Iterate all handles to ensure constraints are applied for the entire slider (Issue #1009)\n for (; i < scope_HandleNumbers.length; ++i) {\n scope_HandleNumbers.forEach(function (handleNumber) {\n setHandle(handleNumber, scope_Locations[handleNumber], true, true, exactInput);\n });\n }\n setZindex();\n scope_HandleNumbers.forEach(function (handleNumber) {\n fireEvent(\"update\", handleNumber);\n // Fire the event only for handles that received a new value, as per #579\n if (values[handleNumber] !== null && fireSetEvent) {\n fireEvent(\"set\", handleNumber);\n }\n });\n }\n // Reset slider to initial values\n function valueReset(fireSetEvent) {\n valueSet(options.start, fireSetEvent);\n }\n // Set value for a single handle\n function valueSetHandle(handleNumber, value, fireSetEvent, exactInput) {\n // Ensure numeric input\n handleNumber = Number(handleNumber);\n if (!(handleNumber >= 0 && handleNumber < scope_HandleNumbers.length)) {\n throw new Error(\"noUiSlider: invalid handle number, got: \" + handleNumber);\n }\n // Look both backward and forward, since we don't want this handle to \"push\" other handles (#960);\n // The exactInput argument can be used to ignore slider stepping (#436)\n setHandle(handleNumber, resolveToValue(value, handleNumber), true, true, exactInput);\n fireEvent(\"update\", handleNumber);\n if (fireSetEvent) {\n fireEvent(\"set\", handleNumber);\n }\n }\n // Get the slider value.\n function valueGet(unencoded) {\n if (unencoded === void 0) { unencoded = false; }\n if (unencoded) {\n // return a copy of the raw values\n return scope_Values.length === 1 ? scope_Values[0] : scope_Values.slice(0);\n }\n var values = scope_Values.map(options.format.to);\n // If only one handle is used, return a single value.\n if (values.length === 1) {\n return values[0];\n }\n return values;\n }\n // Removes classes from the root and empties it.\n function destroy() {\n // remove protected internal listeners\n removeEvent(INTERNAL_EVENT_NS.aria);\n removeEvent(INTERNAL_EVENT_NS.tooltips);\n Object.keys(options.cssClasses).forEach(function (key) {\n removeClass(scope_Target, options.cssClasses[key]);\n });\n while (scope_Target.firstChild) {\n scope_Target.removeChild(scope_Target.firstChild);\n }\n delete scope_Target.noUiSlider;\n }\n function getNextStepsForHandle(handleNumber) {\n var location = scope_Locations[handleNumber];\n var nearbySteps = scope_Spectrum.getNearbySteps(location);\n var value = scope_Values[handleNumber];\n var increment = nearbySteps.thisStep.step;\n var decrement = null;\n // If snapped, directly use defined step value\n if (options.snap) {\n return [\n value - nearbySteps.stepBefore.startValue || null,\n nearbySteps.stepAfter.startValue - value || null,\n ];\n }\n // If the next value in this step moves into the next step,\n // the increment is the start of the next step - the current value\n if (increment !== false) {\n if (value + increment > nearbySteps.stepAfter.startValue) {\n increment = nearbySteps.stepAfter.startValue - value;\n }\n }\n // If the value is beyond the starting point\n if (value > nearbySteps.thisStep.startValue) {\n decrement = nearbySteps.thisStep.step;\n }\n else if (nearbySteps.stepBefore.step === false) {\n decrement = false;\n }\n // If a handle is at the start of a step, it always steps back into the previous step first\n else {\n decrement = value - nearbySteps.stepBefore.highestStep;\n }\n // Now, if at the slider edges, there is no in/decrement\n if (location === 100) {\n increment = null;\n }\n else if (location === 0) {\n decrement = null;\n }\n // As per #391, the comparison for the decrement step can have some rounding issues.\n var stepDecimals = scope_Spectrum.countStepDecimals();\n // Round per #391\n if (increment !== null && increment !== false) {\n increment = Number(increment.toFixed(stepDecimals));\n }\n if (decrement !== null && decrement !== false) {\n decrement = Number(decrement.toFixed(stepDecimals));\n }\n return [decrement, increment];\n }\n // Get the current step size for the slider.\n function getNextSteps() {\n return scope_HandleNumbers.map(getNextStepsForHandle);\n }\n // Updatable: margin, limit, padding, step, range, animate, snap\n function updateOptions(optionsToUpdate, fireSetEvent) {\n // Spectrum is created using the range, snap, direction and step options.\n // 'snap' and 'step' can be updated.\n // If 'snap' and 'step' are not passed, they should remain unchanged.\n var v = valueGet();\n var updateAble = [\n \"margin\",\n \"limit\",\n \"padding\",\n \"range\",\n \"animate\",\n \"snap\",\n \"step\",\n \"format\",\n \"pips\",\n \"tooltips\",\n \"connect\",\n ];\n // Only change options that we're actually passed to update.\n updateAble.forEach(function (name) {\n // Check for undefined. null removes the value.\n if (optionsToUpdate[name] !== undefined) {\n originalOptions[name] = optionsToUpdate[name];\n }\n });\n var newOptions = testOptions(originalOptions);\n // Load new options into the slider state\n updateAble.forEach(function (name) {\n if (optionsToUpdate[name] !== undefined) {\n options[name] = newOptions[name];\n }\n });\n scope_Spectrum = newOptions.spectrum;\n // Limit, margin and padding depend on the spectrum but are stored outside of it. (#677)\n options.margin = newOptions.margin;\n options.limit = newOptions.limit;\n options.padding = newOptions.padding;\n // Update pips, removes existing.\n if (options.pips) {\n pips(options.pips);\n }\n else {\n removePips();\n }\n // Update tooltips, removes existing.\n if (options.tooltips) {\n tooltips();\n }\n else {\n removeTooltips();\n }\n // Invalidate the current positioning so valueSet forces an update.\n scope_Locations = [];\n valueSet(isSet(optionsToUpdate.start) ? optionsToUpdate.start : v, fireSetEvent);\n // Update connects only if it was set\n if (optionsToUpdate.connect) {\n updateConnectOption();\n }\n }\n function updateConnectOption() {\n // IE supported way of removing children including event handlers\n while (scope_ConnectBase.firstChild) {\n scope_ConnectBase.removeChild(scope_ConnectBase.firstChild);\n }\n // Adding new connects according to the new connect options\n for (var i = 0; i <= options.handles; i++) {\n scope_Connects[i] = addConnect(scope_ConnectBase, options.connect[i]);\n updateConnect(i);\n }\n // re-adding drag events for the new connect elements\n // to ignore the other events we have to negate the 'if (!behaviour.fixed)' check\n bindSliderEvents({ drag: options.events.drag, fixed: true });\n }\n // Invert options for connect handles\n function invertConnects() {\n scope_ConnectsInverted = !scope_ConnectsInverted;\n testConnect(options, \n // inverse the connect boolean array\n options.connect.map(function (b) { return !b; }));\n updateConnectOption();\n }\n // Initialization steps\n function setupSlider() {\n // Create the base element, initialize HTML and set classes.\n // Add handles and connect elements.\n scope_Base = addSlider(scope_Target);\n addElements(options.connect, scope_Base);\n // Attach user events.\n bindSliderEvents(options.events);\n // Use the public value method to set the start values.\n valueSet(options.start);\n if (options.pips) {\n pips(options.pips);\n }\n if (options.tooltips) {\n tooltips();\n }\n aria();\n }\n setupSlider();\n var scope_Self = {\n destroy: destroy,\n steps: getNextSteps,\n on: bindEvent,\n off: removeEvent,\n get: valueGet,\n set: valueSet,\n setHandle: valueSetHandle,\n reset: valueReset,\n disable: disable,\n enable: enable,\n // Exposed for unit testing, don't use this in your application.\n __moveHandles: function (upward, proposal, handleNumbers) {\n moveHandles(upward, proposal, scope_Locations, handleNumbers);\n },\n options: originalOptions,\n updateOptions: updateOptions,\n target: scope_Target,\n removePips: removePips,\n removeTooltips: removeTooltips,\n getPositions: function () {\n return scope_Locations.slice();\n },\n getTooltips: function () {\n return scope_Tooltips;\n },\n getOrigins: function () {\n return scope_Handles;\n },\n pips: pips, // Issue #594\n };\n return scope_Self;\n }\n // Run the standard initializer\n function initialize(target, originalOptions) {\n if (!target || !target.nodeName) {\n throw new Error(\"noUiSlider: create requires a single element, got: \" + target);\n }\n // Throw an error if the slider was already initialized.\n if (target.noUiSlider) {\n throw new Error(\"noUiSlider: Slider was already initialized.\");\n }\n // Test the options and create the slider environment;\n var options = testOptions(originalOptions);\n var api = scope(target, options, originalOptions);\n target.noUiSlider = api;\n return api;\n }\n var nouislider = {\n // Exposed for unit testing, don't use this in your application.\n __spectrum: Spectrum,\n // A reference to the default classes, allows global changes.\n // Use the cssClasses option for changes to one slider.\n cssClasses: cssClasses,\n create: initialize,\n };\n\n exports.create = initialize;\n exports.cssClasses = cssClasses;\n exports[\"default\"] = nouislider;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n", "const uuidv4 = self?.crypto?.randomUUID\n ? function () {\n return self.crypto.randomUUID();\n }\n : function () {\n console.warn('UUIDv4: Running in a non-secure context!');\n function _p8(s) {\n const p = (Math.random().toString(16) + '000000000').substring(2, 10);\n return s ? `-${p.substring(0, 4)}-${p.substring(4, 8)}` : p;\n }\n return _p8() + _p8(true) + _p8(true) + _p8();\n };\n\nexport default uuidv4;\n", "export const Calendar = 0;\nexport const Check = 1;\nexport const ChevronDown = 2;\nexport const ChevronLeft = 3;\nexport const ChevronRight = 4;\nexport const ChevronsLeft = 5;\nexport const ChevronsRight = 6;\nexport const Clock = 7;\nexport const Search = 8;\nexport const Ellipsis = 9;\nexport const Minus = 10;\nexport const Plus = 11;\nexport const Close = 12;\nexport const Bell = 13;\nexport const Trash = 14;\nexport const Mail = 15;\nexport const Send = 16;\nexport const Export = 17;\nexport const Import = 18;\nexport const Edit = 19;\nexport const Menu = 20;\nexport const Reply = 21;\nexport const Refresh = 22;\nexport const CircleInfo = 23;\nexport const CircleWarning = 24;\nexport const CircleError = 25;\nexport const CircleSuccess = 26;\nexport const CircleUnknown = 27;\nexport const CircleUser = 28;\n\nfunction setCalendarContent(svg) {\n const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path.setAttributeNS(\n null,\n 'd',\n 'm5.4512 0.8252c-0.3601 0-0.65039 0.29029-0.65039 0.65039v0.69922h-1.3008c-1.108 0-2 0.892-2 2v9c0 1.108 0.892 2 2 2h9c1.108 0 2-0.892 2-2v-9c0-1.108-0.892-2-2-2h-1.2988v-0.69922c0-0.3601-0.29029-0.65039-0.65039-0.65039s-0.64844 0.29029-0.64844 0.65039v0.69922h-3.8027v-0.69922c0-0.3601-0.28834-0.65039-0.64844-0.65039zm-1.6504 2.6504h1v0.69922c1e-6 0.3601 0.29029 0.65039 0.65039 0.65039s0.64844-0.29029 0.64844-0.65039v-0.69922h3.8027v0.69922c0 0.3601 0.28834 0.65039 0.64844 0.65039s0.65039-0.29029 0.65039-0.65039v-0.69922h1c0.554 0 1 0.446 1 1v1.5h-10.4v-1.5c0-0.554 0.446-1 1-1zm-1 3.8008h10.4v5.5996c0 0.554-0.446 1-1 1h-8.4004c-0.554 0-1-0.446-1-1z'\n );\n svg.appendChild(path);\n}\n\nfunction setCheckContent(svg) {\n const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path.setAttributeNS(\n null,\n 'd',\n 'm12.937 4.049-6.5829 6.5829-3.2935-3.2914c-0.23947-0.23959-0.63055-0.24761-0.87815 0-0.24358 0.2437-0.24358 0.63448 0 0.87815l3.7315 3.7337c0.24646 0.24634 0.64298 0.23729 0.88026 0l7.0228-7.0251c0.24358-0.2437 0.24358-0.63448 0-0.87815-0.2433-0.24342-0.63667-0.24364-0.88026-1.5e-6z'\n );\n svg.appendChild(path);\n}\n\nfunction setChevronDownContent(svg) {\n const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path.setAttributeNS(\n null,\n 'd',\n 'm3.2098 5.353c-0.2797 0.27984-0.2797 0.72853 0 1.0083l4.2848 4.2872c0.283 0.28286 0.73831 0.27246 1.0108 0l4.2848-4.2872c0.2797-0.27984 0.2797-0.72853 0-1.0083-0.2797-0.27984-0.73098-0.27984-1.0108 0l-3.7795 3.7795-3.7818-3.7795c-0.27497-0.27511-0.72404-0.28432-1.0083 0z'\n );\n svg.appendChild(path);\n}\n\nfunction setChevronLeftContent(svg) {\n const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path.setAttributeNS(\n null,\n 'd',\n 'm10.647 12.79c-0.27984 0.2797-0.72853 0.2797-1.0083 0l-4.2872-4.2848c-0.28286-0.283-0.27246-0.73831 0-1.0108l4.2872-4.2848c0.27984-0.2797 0.72853-0.2797 1.0083 0 0.27984 0.2797 0.27984 0.73098 0 1.0108l-3.7795 3.7795 3.7795 3.7818c0.27511 0.27497 0.28432 0.72404 0 1.0083z'\n );\n svg.appendChild(path);\n}\n\nfunction setChevronRightContent(svg) {\n const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path.setAttributeNS(\n null,\n 'd',\n 'm5.353 12.79c0.27984 0.2797 0.72853 0.2797 1.0083 0l4.2872-4.2848c0.28286-0.283 0.27246-0.73831 0-1.0108l-4.2872-4.2848c-0.27984-0.2797-0.72853-0.2797-1.0083 0-0.27984 0.2797-0.27984 0.73098 0 1.0108l3.7795 3.7795-3.7795 3.7818c-0.27511 0.27497-0.28432 0.72404 0 1.0083z'\n );\n svg.appendChild(path);\n}\n\nfunction setChevronsLeftContent(svg) {\n const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path.setAttributeNS(\n null,\n 'd',\n 'm13 3c0.18212 0 0.36302 0.070121 0.50292 0.20996 0.27982 0.27969 0.27982 0.73097 0 1.0108l-3.7794 3.7794 3.7794 3.7819c0.27511 0.27496 0.28432 0.72402 0 1.0083-0.27984 0.27969-0.72852 0.27969-1.0083 0l-4.2872-4.2847c-0.28285-0.283-0.27246-0.7383 0-1.0108l4.2872-4.2847c0.13991-0.13985 0.32325-0.20996 0.50537-0.20996zm-5.7152 0c0.18212 0 0.36547 0.070121 0.50537 0.20996 0.27984 0.27969 0.27984 0.73097 0 1.0108l-3.7794 3.7794 3.7794 3.7819c0.27511 0.27496 0.28432 0.72402 0 1.0083-0.27984 0.27969-0.72852 0.27969-1.0083 0l-4.2872-4.2847c-0.28286-0.283-0.27246-0.7383 0-1.0108l4.2872-4.2847c0.13991-0.13985 0.32081-0.20996 0.50292-0.20996z'\n );\n svg.appendChild(path);\n}\n\nfunction setChevronsRightContent(svg) {\n const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path.setAttributeNS(\n null,\n 'd',\n 'm2.9996 3c-0.18212 0-0.36302 0.070121-0.50292 0.20996-0.27984 0.27969-0.27984 0.73097 0 1.0108l3.7794 3.7794-3.7794 3.7819c-0.27511 0.27496-0.28432 0.72402 0 1.0083 0.27984 0.27969 0.72852 0.27969 1.0083 0l4.2872-4.2847c0.28286-0.283 0.27246-0.7383 0-1.0108l-4.2872-4.2847c-0.13991-0.13985-0.32325-0.20996-0.50537-0.20996zm5.7152 0c-0.18212 0-0.36547 0.070121-0.50537 0.20996-0.27984 0.27969-0.27984 0.73097 0 1.0108l3.7794 3.7794-3.7794 3.7819c-0.27511 0.27496-0.28432 0.72402 0 1.0083 0.27984 0.27969 0.72852 0.27969 1.0083 0l4.2872-4.2847c0.28285-0.283 0.27246-0.7383 0-1.0108l-4.2872-4.2847c-0.13991-0.13985-0.32081-0.20996-0.50292-0.20996z'\n );\n svg.appendChild(path);\n}\n\nfunction setClockContent(svg) {\n const path1 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path1.setAttributeNS(\n null,\n 'd',\n 'm8 0.75a7.25 7.25 0 0 0-7.25 7.25 7.25 7.25 0 0 0 7.25 7.25 7.25 7.25 0 0 0 7.25-7.25 7.25 7.25 0 0 0-7.25-7.25zm0 1.3008a5.95 5.95 0 0 1 5.9492 5.9492 5.95 5.95 0 0 1-5.9492 5.9512 5.95 5.95 0 0 1-5.9492-5.9512 5.95 5.95 0 0 1 5.9492-5.9492z'\n );\n svg.appendChild(path1);\n\n const path2 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path2.setAttributeNS(\n null,\n 'd',\n 'm8 3.25c-0.3601 0-0.65039 0.29029-0.65039 0.65039v4.0996c-4.82e-5 0.2464 0.13303 0.40256 0.20508 0.47461l2.6035 2.6016c0.25463 0.25463 0.66334 0.25463 0.91797 0s0.25463-0.66334 0-0.91797l-2.4258-2.4277v-3.8301c0-0.3601-0.29029-0.65039-0.65039-0.65039z'\n );\n svg.appendChild(path2);\n}\n\nfunction setSearchContent(svg) {\n const path1 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path1.setAttributeNS(\n null,\n 'd',\n 'm7.31 1.31a5.9999 5.9999 0 0 0-5.9999 5.9999 5.9999 5.9999 0 0 0 5.9999 5.9999 5.9999 5.9999 0 0 0 5.9999-5.9999 5.9999 5.9999 0 0 0-5.9999-5.9999zm0 1.1992a4.7999 4.7999 0 0 1 4.8007 4.8007 4.7999 4.7999 0 0 1-4.8007 4.8007 4.7999 4.7999 0 0 1-4.8007-4.8007 4.7999 4.7999 0 0 1 4.8007-4.8007z'\n );\n svg.appendChild(path1);\n\n const path2 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path2.setAttributeNS(\n null,\n 'd',\n 'm10.705 10.705c0.23504-0.23504 0.6286-0.2199 0.88247 0.03394l2.9019 2.9019c0.25384 0.25384 0.26898 0.64742 0.03394 0.88247-0.23504 0.23504-0.6286 0.2199-0.88247-0.03394l-2.9019-2.9019c-0.25384-0.25384-0.26898-0.64742-0.03394-0.88247z'\n );\n svg.appendChild(path2);\n}\n\nfunction setEllipsisContent(svg) {\n const circle1 = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n circle1.setAttributeNS(null, 'cx', '2');\n circle1.setAttributeNS(null, 'cy', '8');\n circle1.setAttributeNS(null, 'r', '1.5');\n svg.appendChild(circle1);\n\n const circle2 = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n circle2.setAttributeNS(null, 'cx', '8');\n circle2.setAttributeNS(null, 'cy', '8');\n circle2.setAttributeNS(null, 'r', '1.5');\n svg.appendChild(circle2);\n\n const circle3 = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n circle3.setAttributeNS(null, 'cx', '14');\n circle3.setAttributeNS(null, 'cy', '8');\n circle3.setAttributeNS(null, 'r', '1.5');\n svg.appendChild(circle3);\n}\n\nfunction setMinusContent(svg) {\n const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path.setAttributeNS(null, 'd', 'm2.75 7.25h10.5c0.4155 0 0.75 0.3345 0.75 0.75s-0.3345 0.75-0.75 0.75h-10.5c-0.4155 0-0.75-0.3345-0.75-0.75s0.3345-0.75 0.75-0.75z');\n svg.appendChild(path);\n}\n\nfunction setPlusContent(svg) {\n const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path.setAttributeNS(\n null,\n 'd',\n 'm8 2c-0.4155 0-0.75 0.3345-0.75 0.75v4.5h-4.5c-0.4155 0-0.75 0.3345-0.75 0.75s0.3345 0.75 0.75 0.75h4.5v4.5c0 0.4155 0.3345 0.75 0.75 0.75s0.75-0.3345 0.75-0.75v-4.5h4.5c0.4155 0 0.75-0.3345 0.75-0.75s-0.3345-0.75-0.75-0.75h-4.5v-4.5c0-0.4155-0.3345-0.75-0.75-0.75z'\n );\n svg.appendChild(path);\n}\n\nfunction setCloseContent(svg) {\n const path1 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path1.setAttributeNS(\n null,\n 'd',\n 'm12.95 3.0503c-0.2938-0.2938-0.76686-0.2938-1.0607 0l-3.8891 3.8891-3.8891-3.8891c-0.2938-0.2938-0.76686-0.2938-1.0607 0-0.2938 0.2938-0.2938 0.76686 0 1.0607l3.8891 3.8891-3.8891 3.8891c-0.2938 0.2938-0.2938 0.76686 0 1.0607 0.2938 0.2938 0.76686 0.2938 1.0607 0l3.8891-3.8891 3.8891 3.8891c0.2938 0.2938 0.76686 0.2938 1.0607 0 0.2938-0.2938 0.2938-0.76686 0-1.0607l-3.8891-3.8891 3.8891-3.8891c0.2938-0.2938 0.2938-0.76686 0-1.0607z'\n );\n svg.appendChild(path1);\n}\n\nfunction setBellContent(svg) {\n const path1 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path1.setAttributeNS(null, 'd', 'm6.7206 13.171c-0.65794 0-0.78791 0.50739-0.53794 0.92414 0.72424 1.2064 2.9155 1.2064 3.6397 0 0.25-0.41678 0.11804-0.92414-0.53794-0.92414z');\n svg.appendChild(path1);\n\n const path2 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path2.setAttributeNS(\n null,\n 'd',\n 'm8.0017 1.0011c-1.4533-0.029274-2.9825 0.51861-3.8425 1.7418-1.0308 1.3944-1.1644 3.1887-1.131 4.8636-0.019737 1.2007-0.5306 2.3761-1.3316 3.2619-0.32199 0.50537 0.16335 1.2079 0.74794 1.108 3.7645-0.0022 7.5293 0.0045 11.294-0.0034 0.60962-0.02615 0.89718-0.87008 0.45127-1.2798-0.84568-0.96782-1.2957-2.2626-1.2151-3.5465 0.026492-1.7605-0.29402-3.6931-1.625-4.9635-0.88559-0.8583-2.141-1.1911-3.3478-1.182zm0 1.2923c1.1918-0.059451 2.4095 0.52351 3.006 1.5756 0.73891 1.2564 0.62867 2.7544 0.66947 4.1572 0.05518 0.93177 0.35347 1.8382 0.78938 2.6591h-8.9282c0.60148-1.0838 0.86112-2.3294 0.80315-3.5635-9.659e-4 -1.4009 0.15123-2.9948 1.2579-3.9921 0.64424-0.60975 1.5307-0.85343 2.4026-0.83627z'\n );\n svg.appendChild(path2);\n}\n\nfunction setTrashContent(svg) {\n const path1 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path1.setAttributeNS(\n null,\n 'd',\n 'm6.5156 6.9909c-0.36016 0-0.65232 0.29024-0.65234 0.65039l2e-3 1.1074v1.4844l-2e-3 1.1074c2.1e-5 0.36015 0.29218 0.65039 0.65234 0.65039 0.18009 0 0.34336-0.07187 0.46094-0.18945 0.11758-0.11758 0.18945-0.28085 0.18945-0.46094v-3.6992c0-0.18009-0.07187-0.34336-0.18945-0.46094-0.11758-0.11758-0.28085-0.18945-0.46094-0.18945z'\n );\n svg.appendChild(path1);\n\n const path2 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path2.setAttributeNS(\n null,\n 'd',\n 'm6.4082 1c-1.0468 0-1.9082 0.86333-1.9082 1.9102v1.0703h-2.2285a0.63636 0.63636 0 0 0-0.63477 0.63672 0.63636 0.63636 0 0 0 0.63477 0.63672h0.63672v7.8379c0 1.0468 0.86333 1.9082 1.9102 1.9082h6.3633c1.0468 0 1.9082-0.86138 1.9082-1.9082v-7.8379h0.63672a0.63636 0.63636 0 0 0 0.63672-0.63672 0.63636 0.63636 0 0 0-0.63672-0.63672h-2.2266v-1.0703c-1e-6 -1.0468-0.86138-1.9102-1.9082-1.9102zm0 1.2734h3.1836c0.35899 0 0.63477 0.27773 0.63477 0.63672v1.0703h-4.4531v-1.0703c0-0.35899 0.27577-0.63672 0.63476-0.63672zm-2.2266 2.9805h7.6367v7.8379c0 0.35899-0.27773 0.63672-0.63672 0.63672h-6.3633c-0.35899 0-0.63672-0.27773-0.63672-0.63672z'\n );\n svg.appendChild(path2);\n\n const path3 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path3.setAttributeNS(\n null,\n 'd',\n 'm9.4853 6.9909c-0.36016 0-0.65232 0.29024-0.65234 0.65039l2e-3 1.1074v1.4844l-2e-3 1.1074c2.1e-5 0.36015 0.29218 0.65039 0.65234 0.65039 0.18009 0 0.34336-0.07187 0.46094-0.18945 0.11758-0.11758 0.18945-0.28085 0.18945-0.46094v-3.6992c0-0.18009-0.07187-0.34336-0.18945-0.46094-0.11758-0.11758-0.28085-0.18945-0.46094-0.18945z'\n );\n svg.appendChild(path3);\n}\n\nfunction setMailContent(svg) {\n const path1 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path1.setAttributeNS(\n null,\n 'd',\n 'm3 2.2725c-1.108 0-2 0.892-2 2v7.4551c0 1.108 0.892 2 2 2h10c1.108 0 2-0.892 2-2v-7.4551c0-1.108-0.892-2-2-2zm0.30078 1.2988h9.3984c0.554 0 1 0.446 1 1l-4.2031 2.7207c-0.46835 0.30545-0.96668 0.57394-1.4961 0.57422-0.52942-2.795e-4 -1.0277-0.26876-1.4961-0.57422l-4.2031-2.7207c0-0.554 0.446-1 1-1zm-1 2.5195 4.2031 2.7227c0.46835 0.30546 0.96668 0.45687 1.4961 0.45703 0.52942-1.57e-4 1.0277-0.15158 1.4961-0.45703l4.2031-2.7227v5.3379c0 0.554-0.446 1-1 1h-9.3984c-0.554 0-1-0.446-1-1z'\n );\n svg.appendChild(path1);\n}\n\nfunction setSendContent(svg) {\n const path1 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path1.setAttributeNS(\n null,\n 'd',\n 'm14.072 1.0638-12.641 4.7555c-0.56634 0.21308-0.56955 1.0125-0.04008 1.2365l5.2444 2.2184 2.2084 5.2144 2e-3 0.0061c0.16229 0.59685 0.99893 0.674 1.2545 0.09819l4.8416-12.619c0.25524-0.64396-0.38635-1.1184-0.86973-0.90981zm-2.4308 2.3427-4.6272 4.5771-3.5491-1.501zm0.96993 0.91983-3.1483 8.2023-1.517-3.5851z'\n );\n svg.appendChild(path1);\n}\n\nfunction setExportContent(svg) {\n const path1 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path1.setAttributeNS(\n null,\n 'd',\n 'm1.6367 8.873a0.6355 0.6355 0 0 0-0.63672 0.63477v3.1816c0 1.0469 0.8614 1.9102 1.9082 1.9102h10.184c1.0468 0 1.9082-0.86329 1.9082-1.9102v-3.1816a0.6355 0.6355 0 0 0-0.63672-0.63477 0.6355 0.6355 0 0 0-0.63476 0.63477v3.1816c0 0.35899-0.27773 0.63672-0.63672 0.63672h-10.184c-0.35899 1e-6 -0.63672-0.27773-0.63672-0.63672v-3.1816a0.6355 0.6355 0 0 0-0.63477-0.63477z'\n );\n svg.appendChild(path1);\n\n const path2 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path2.setAttributeNS(\n null,\n 'd',\n 'm8 1.4004c-0.36016 0-0.65232 0.29024-0.65234 0.65039v6.123l-2.457-2.457c-0.25556-0.25556-0.66436-0.25556-0.91992 0-0.25467 0.25467-0.25658 0.6672-0.00195 0.92188l3.5703 3.5703c0.25408 0.25408 0.66556 0.2542 0.91992 0l3.5703-3.5703c0.25556-0.25556 0.25556-0.66436 0-0.91992-0.25467-0.25467-0.6672-0.25659-0.92188-0.00195l-2.457 2.459v-6.125c0-0.36142-0.28897-0.65039-0.65039-0.65039z'\n );\n svg.appendChild(path2);\n}\n\nfunction setImportContent(svg) {\n const path1 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path1.setAttributeNS(\n null,\n 'd',\n 'm1.6367 8.873a0.6355 0.6355 0 0 0-0.63672 0.63477v3.1816c0 1.0469 0.8614 1.9102 1.9082 1.9102h10.184c1.0468 0 1.9082-0.86329 1.9082-1.9102v-3.1816a0.6355 0.6355 0 0 0-0.63672-0.63477 0.6355 0.6355 0 0 0-0.63476 0.63477v3.1816c0 0.35899-0.27773 0.63672-0.63672 0.63672h-10.184c-0.35899 1e-6 -0.63672-0.27773-0.63672-0.63672v-3.1816a0.6355 0.6355 0 0 0-0.63477-0.63477z'\n );\n svg.appendChild(path1);\n\n const path2 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path2.setAttributeNS(\n null,\n 'd',\n 'm8 10.4c-0.36016 0-0.65232-0.29024-0.65234-0.65039v-6.123l-2.457 2.457c-0.25556 0.25556-0.66436 0.25556-0.91992 0-0.25467-0.25467-0.25658-0.6672-0.00195-0.92187l3.5703-3.5703c0.25408-0.25408 0.66556-0.2542 0.91992 0l3.5703 3.5703c0.25556 0.25556 0.25556 0.66436 0 0.91992-0.25467 0.25467-0.6672 0.25659-0.92188 0.00195l-2.457-2.459v6.125c0 0.36142-0.28897 0.65039-0.65039 0.65039z'\n );\n svg.appendChild(path2);\n}\n\nfunction setEditContent(svg) {\n const path1 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path1.setAttributeNS(\n null,\n 'd',\n 'm13.713 1.5513c-0.73596-0.73596-1.9485-0.73464-2.6845 0.00137l-9.84 9.84c-0.11663 0.11665-0.1879 0.27904-0.18812 0.45726l-1e-7 2.5019c-6.96e-6 0.17354 0.070916 0.33848 0.1895 0.45863 0.12014 0.1186 0.2851 0.1895 0.45863 0.1895h2.5019c0.17854-1e-5 0.34044-0.07132 0.45726-0.18812l9.84-9.84c0.73601-0.73601 0.73733-1.9486 0.0014-2.6845zm-0.8953 0.8953 0.73601 0.73601c0.25239 0.25239 0.25102 0.64153-0.0014 0.89392l-0.75247 0.75249-1.6286-1.6286 0.75249-0.75249c0.25239-0.25239 0.64154-0.25376 0.89393-0.00137zm-2.5417 1.6492 1.6286 1.6286-7.9808 7.9808-1.6286-1.6286z'\n );\n svg.appendChild(path1);\n}\n\nfunction setMenuContent(svg) {\n const path1 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path1.setAttributeNS(null, 'd', 'm2.75 2.6667h10.5c0.4155 0 0.75 0.3345 0.75 0.75s-0.3345 0.75-0.75 0.75h-10.5c-0.4155 0-0.75-0.3345-0.75-0.75s0.3345-0.75 0.75-0.75z');\n svg.appendChild(path1);\n\n const path2 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path2.setAttributeNS(null, 'd', 'm2.75 7.25h10.5c0.4155 0 0.75 0.3345 0.75 0.75s-0.3345 0.75-0.75 0.75h-10.5c-0.4155 0-0.75-0.3345-0.75-0.75s0.3345-0.75 0.75-0.75z');\n svg.appendChild(path2);\n\n const path3 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path3.setAttributeNS(null, 'd', 'm2.75 11.833h10.5c0.4155 0 0.75 0.3345 0.75 0.75s-0.3345 0.75-0.75 0.75h-10.5c-0.4155 0-0.75-0.3345-0.75-0.75s0.3345-0.75 0.75-0.75z');\n svg.appendChild(path3);\n}\n\nfunction setReplyContent(svg) {\n const path1 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path1.setAttributeNS(\n null,\n 'd',\n 'm7.1956 2.0915c-0.17362 0-0.33638 0.0536-0.4883 0.16212l-5.6331 4.3948c-0.21703 0.17363-0.32423 0.38999-0.32423 0.65042-1e-6 0.26044 0.1072 0.47874 0.32423 0.65238l5.6331 4.3948c0.15192 0.10852 0.31468 0.16212 0.4883 0.16212 0.23874 0 0.43882-0.08138 0.60159-0.24415 0.16278-0.16277 0.24415-0.36285 0.24415-0.60159v-1.3575h0.94536c2.2661 0 3.3516 1.6295 4.3674 3.3888 0.11666 0.20206 0.30215 0.21485 0.48245 0.21485 0.21839 0 0.47762-0.15346 0.65628-0.46291 0.33483-0.5924 0.55854-1.215 0.668-1.8653 0.10946-0.65035 0.1175-1.2995 0.02734-1.9435-0.09014-0.64391-0.28195-1.2659-0.57816-1.8712-0.29619-0.60528-0.69702-1.1599-1.1993-1.6622-0.60528-0.60528-1.2885-1.0607-2.0548-1.3634-0.76626-0.30264-1.5493-0.45315-2.3478-0.45315h-0.96684v-1.3497c0-0.23874-0.08138-0.43882-0.24415-0.60159-0.16277-0.16278-0.36285-0.24415-0.60159-0.24415zm-0.4551 1.9825v0.71488h2e-3c-1.91e-4 0.4412 0.35755 0.79894 0.79887 0.79887h1.4669c1.0795 0 2.5837 0.5738 3.4201 1.4102 0.61816 0.61816 1.0403 1.3452 1.2657 2.1759 0.22537 0.83065 0.21539 1.8427-0.0293 2.6798-0.97733-1.6928-2.5629-2.8498-4.678-2.8498h-1.4454c-0.44132-7.2e-5 -0.79906 0.35767-0.79887 0.79887h-2e-3v0.72074l-4.1701-3.2228z'\n );\n svg.appendChild(path1);\n}\n\nfunction setRefreshContent(svg) {\n const path1 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path1.setAttributeNS(\n null,\n 'd',\n 'm7.9707 0.75c-1.0016 0-1.9388 0.18895-2.8164 0.56641-0.87885 0.37799-1.6436 0.8916-2.2949 1.543-0.65124 0.65124-1.1649 1.4202-1.543 2.3086-0.37757 0.88727-0.56641 1.8304-0.56641 2.832s0.18888 1.9448 0.56641 2.832c0.37802 0.88836 0.89173 1.6574 1.543 2.3086 0.65124 0.65124 1.4202 1.1649 2.3086 1.543 0.88727 0.37757 1.8304 0.56641 2.832 0.56641 0.8314 0 1.6239-0.13224 2.3789-0.39648 0.75572-0.26451 1.4452-0.63563 2.0684-1.1172 0.62353-0.48181 1.1617-1.0492 1.6152-1.7012 0.45251-0.65049 0.77222-1.3715 0.96094-2.1641l2e-3 -2e-3 0.04297-0.13281c0.0065-0.0195 0.01172-0.04408 0.01172-0.07617 0-0.1934-0.06474-0.34794-0.19531-0.47852-0.13058-0.13057-0.28317-0.19336-0.47656-0.19336-0.13605 0-0.26917 0.04492-0.40234 0.14258-0.13208 0.09684-0.21022 0.20993-0.24414 0.3457-0.17355 0.65565-0.44381 1.2604-0.81055 1.8105-0.36657 0.54985-0.80651 1.018-1.3184 1.4043-0.51116 0.38578-1.0746 0.69046-1.6914 0.91211-0.61812 0.22216-1.2662 0.33208-1.9415 0.33208-0.8289 0-1.6015-0.15376-2.3164-0.46289-0.71353-0.30856-1.3406-0.73315-1.8809-1.2734-0.54029-0.5403-0.96684-1.1693-1.2754-1.8828-0.30913-0.71489-0.46289-1.4875-0.46289-2.3164-1e-7 -0.8289 0.15389-1.6058 0.46289-2.3301 0.30846-0.72294 0.72874-1.3518 1.2598-1.8828 0.53103-0.53103 1.1599-0.95131 1.8828-1.2598 0.72402-0.30891 1.4907-0.46289 2.3008-0.46289 1.0797 0 2.0859 0.26648 3.0117 0.79688 0.92594 0.53049 1.651 1.2595 2.1719 2.1855l0.06055 0.10742h-3.0117c-0.19448 1e-6 -0.35029 0.06014-0.48047 0.18164-0.12927 0.12065-0.19141 0.26754-0.19141 0.46094 0 0.19339 0.062788 0.34794 0.19336 0.47852 0.13057 0.13057 0.28512 0.19336 0.47852 0.19336h4.375c0.1934 0 0.34794-0.06279 0.47852-0.19336 0.13057-0.13057 0.19336-0.28512 0.19336-0.47852v-4.375c0-0.1934-0.06279-0.34794-0.19336-0.47852-0.13057-0.13057-0.28512-0.19336-0.47852-0.19336-0.19339 0-0.34029 0.06214-0.46094 0.19141-0.12151 0.13018-0.18164 0.28598-0.18164 0.48047v2.3613l-0.12891-0.17383c-0.67984-0.90645-1.533-1.6088-2.5625-2.1094-1.0298-0.50071-2.1207-0.75-3.2734-0.75z'\n );\n svg.appendChild(path1);\n}\n\nconst circlePath =\n 'M 8,0.75000006 A 7.25,7.25 0 0 0 0.75,8 7.25,7.25 0 0 0 8,15.25 7.25,7.25 0 0 0 15.25,8 7.25,7.25 0 0 0 8,0.75000006 Z M 8,2.0508 A 5.95,5.95 0 0 1 13.9492,8 5.95,5.95 0 0 1 8,13.9512 5.95,5.95 0 0 1 2.0508,8 5.95,5.95 0 0 1 8,2.0508 Z';\n\nfunction setCircleInfoContent(svg) {\n const path1 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path1.setAttributeNS(null, 'd', 'm8 7.207c-0.36016 0-0.6505 0.29034-0.6505 0.6505v2.8306c0 0.36016 0.29034 0.6505 0.6505 0.6505 0.36016 0 0.6505-0.29034 0.6505-0.6505v-2.8306c0-0.36016-0.29034-0.6505-0.6505-0.6505z');\n svg.appendChild(path1);\n\n const circle1 = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n circle1.setAttributeNS(null, 'cx', '8.0032');\n circle1.setAttributeNS(null, 'cy', '5.4545');\n circle1.setAttributeNS(null, 'r', '.6505');\n svg.appendChild(circle1);\n\n const path2 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path2.setAttributeNS(null, 'd', circlePath);\n svg.appendChild(path2);\n}\n\nfunction setCircleWarningContent(svg) {\n const path1 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path1.setAttributeNS(null, 'd', 'm8.0016 4.7327c-0.36016 0-0.6505 0.29034-0.6505 0.6505v2.8306c0 0.36016 0.29034 0.6505 0.6505 0.6505s0.6505-0.29034 0.6505-0.6505v-2.8306c0-0.36016-0.29034-0.6505-0.6505-0.6505z');\n svg.appendChild(path1);\n\n const circle1 = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n circle1.setAttributeNS(null, 'cx', '7.9984');\n circle1.setAttributeNS(null, 'cy', '10.617');\n circle1.setAttributeNS(null, 'r', '.6505');\n svg.appendChild(circle1);\n\n const path2 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path2.setAttributeNS(null, 'd', circlePath);\n svg.appendChild(path2);\n}\n\nfunction setCircleErrorContent(svg) {\n const path1 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path1.setAttributeNS(null, 'd', circlePath);\n svg.appendChild(path1);\n\n const path2 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path2.setAttributeNS(\n null,\n 'd',\n 'm6.0166 5.3645c-0.16628 0-0.3336 0.06407-0.46094 0.19141-0.25467 0.25467-0.25465 0.6672 0 0.92188l1.5234 1.5215-1.5234 1.5234c-0.25467 0.25467-0.25469 0.6672 0 0.92187 0.25467 0.25467 0.66525 0.25467 0.91992 0l1.5234-1.5234 1.5234 1.5234c0.25467 0.25467 0.6672 0.25469 0.92187 0 0.25467-0.25467 0.25467-0.66525 0-0.91992l-1.5234-1.5234 1.5234-1.5234c0.25467-0.25467 0.25467-0.66525 0-0.91992-0.25467-0.25467-0.6672-0.2566-0.92187-2e-3l-1.5234 1.5234-1.5234-1.5234c-0.12734-0.12734-0.2927-0.19141-0.45898-0.19141z'\n );\n svg.appendChild(path2);\n}\n\nfunction setCircleSuccessContent(svg) {\n const path1 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path1.setAttributeNS(null, 'd', circlePath);\n svg.appendChild(path1);\n\n const path2 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path2.setAttributeNS(\n null,\n 'd',\n 'm10.524 5.757c-0.16628 1e-6 -0.3336 0.06407-0.46094 0.19141l-2.7207 2.7227-1.1309-1.1328c-0.25467-0.25467-0.66525-0.25467-0.91992 0-0.25467 0.25467-0.25658 0.6672-0.00195 0.92188l1.5918 1.5918c0.25467 0.25467 0.66525 0.25463 0.91992 0l3.1836-3.1836c0.25465-0.25467 0.25274-0.66525-2e-3 -0.91992-0.12734-0.12734-0.2927-0.19141-0.45898-0.19141z'\n );\n svg.appendChild(path2);\n}\n\nfunction setCircleUnknownContent(svg) {\n const path1 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path1.setAttributeNS(null, 'd', circlePath);\n svg.appendChild(path1);\n\n const path2 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path2.setAttributeNS(\n null,\n 'd',\n 'm8.0273 4.6844c-1.0807 0-1.8911 0.80753-1.8911 1.8654 0 0.2914 0.26536 0.55114 0.5572 0.55114 0.29183 0 0.55265-0.26874 0.55265-0.55114 0-0.25055 0.077134-0.43674 0.20289-0.56477 0.12576-0.12802 0.30885-0.21046 0.57839-0.21046 0.47844 0 0.72678 0.28654 0.72678 0.6541 0 0.27054-0.069541 0.42451-0.19381 0.58748-0.12338 0.16181-0.31514 0.32247-0.52843 0.52843-0.38485 0.36029-0.59051 0.86593-0.59051 1.3218 0 0.29183 0.25827 0.56628 0.55871 0.56628 0.30044 0 0.55871-0.27445 0.55871-0.56628 0-0.18611 0.052582-0.44507 0.24226-0.61625l0.00151-0.0015h0.00151c0.25623-0.23652 0.51176-0.45141 0.71618-0.72981 0.20442-0.27839 0.3437-0.62946 0.3437-1.0629 0-1.0019-0.8073-1.7715-1.8366-1.7715z'\n );\n svg.appendChild(path2);\n\n const circle1 = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n circle1.setAttributeNS(null, 'cx', '8');\n circle1.setAttributeNS(null, 'cy', '10.665');\n circle1.setAttributeNS(null, 'r', '.6505');\n svg.appendChild(circle1);\n}\n\nfunction setCircleUserContent(svg) {\n const path1 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path1.setAttributeNS(\n null,\n 'd',\n 'm8 0.75a7.25 7.25 0 0 0-7.25 7.25 7.25 7.25 0 0 0 7.25 7.25 7.25 7.25 0 0 0 7.25-7.25 7.25 7.25 0 0 0-7.25-7.25zm0 1.3008a5.95 5.95 0 0 1 5.9492 5.9492 5.95 5.95 0 0 1-1.3965 3.832c-0.32045-0.54275-0.75894-0.96968-1.3125-1.2793-0.55697-0.31152-1.1549-0.4668-1.7969-0.4668h-2.8867c-0.64193 0-1.2399 0.15527-1.7969 0.4668-0.55356 0.30962-0.99205 0.73654-1.3125 1.2793a5.95 5.95 0 0 1-1.3965-3.832 5.95 5.95 0 0 1 5.9492-5.9492zm-1.4453 9.334h2.8906c0.45252 2.79e-4 0.86077 0.12397 1.2285 0.36914 0.23059 0.15372 0.52694 0.36032 0.82812 1.0566a5.95 5.95 0 0 1-3.502 1.1406 5.95 5.95 0 0 1-3.502-1.1406c0.30119-0.69632 0.59754-0.90292 0.82812-1.0566 0.36775-0.24517 0.776-0.36886 1.2285-0.36914z'\n );\n svg.appendChild(path1);\n\n const path2 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path2.setAttributeNS(\n null,\n 'd',\n 'm8 3.555a2.719 2.719 0 0 0-2.7188 2.7188 2.719 2.719 0 0 0 2.7188 2.7188 2.719 2.719 0 0 0 2.7188-2.7188 2.719 2.719 0 0 0-2.7188-2.7188zm0 1.3008a1.4182 1.4182 0 0 1 1.418 1.418 1.4182 1.4182 0 0 1-1.418 1.418 1.4182 1.4182 0 0 1-1.418-1.418 1.4182 1.4182 0 0 1 1.418-1.418z'\n );\n svg.appendChild(path2);\n}\n\nexport function createSvg({ icon, classes = 'size-4', attrs } = {}) {\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttributeNS(null, 'width', '16');\n svg.setAttributeNS(null, 'height', '16');\n svg.setAttributeNS(null, 'viewBox', '0 0 16 16');\n svg.setAttributeNS(null, 'fill', 'currentColor');\n svg.setAttributeNS(null, 'class', classes);\n\n if (attrs) {\n for (const [key, value] of Object.entries(attrs)) {\n svg.setAttributeNS(null, key, value);\n }\n }\n\n switch (icon) {\n case Calendar:\n setCalendarContent(svg);\n break;\n case Check:\n setCheckContent(svg);\n break;\n case ChevronDown:\n setChevronDownContent(svg);\n break;\n case ChevronLeft:\n setChevronLeftContent(svg);\n break;\n case ChevronRight:\n setChevronRightContent(svg);\n break;\n case ChevronsLeft:\n setChevronsLeftContent(svg);\n break;\n case ChevronsRight:\n setChevronsRightContent(svg);\n break;\n case Clock:\n setClockContent(svg);\n break;\n case Search:\n setSearchContent(svg);\n break;\n case Ellipsis:\n setEllipsisContent(svg);\n break;\n case Minus:\n setMinusContent(svg);\n break;\n case Plus:\n setPlusContent(svg);\n break;\n case Close:\n setCloseContent(svg);\n break;\n case Bell:\n setBellContent(svg);\n break;\n case Trash:\n setTrashContent(svg);\n break;\n case Mail:\n setMailContent(svg);\n break;\n case Send:\n setSendContent(svg);\n break;\n case Export:\n setExportContent(svg);\n break;\n case Import:\n setImportContent(svg);\n break;\n case Edit:\n setEditContent(svg);\n break;\n case Menu:\n setMenuContent(svg);\n break;\n case Reply:\n setReplyContent(svg);\n break;\n case Refresh:\n setRefreshContent(svg);\n break;\n case CircleInfo:\n setCircleInfoContent(svg);\n break;\n case CircleWarning:\n setCircleWarningContent(svg);\n break;\n case CircleError:\n setCircleErrorContent(svg);\n break;\n case CircleSuccess:\n setCircleSuccessContent(svg);\n break;\n case CircleUnknown:\n setCircleUnknownContent(svg);\n break;\n case CircleUser:\n setCircleUserContent(svg);\n break;\n default:\n break;\n }\n\n return svg;\n}\n\nexport function setSvgContent(svg, icon) {\n svg.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n svg.setAttribute('width', '100%');\n svg.setAttribute('height', '100%');\n svg.setAttribute('viewBox', '0 0 16 16');\n svg.setAttribute('fill', 'currentColor');\n\n switch (icon) {\n case 'calendar':\n setCalendarContent(svg);\n break;\n case 'check':\n setCheckContent(svg);\n break;\n case 'chevron-down':\n setChevronDownContent(svg);\n break;\n case 'chevron-left':\n setChevronLeftContent(svg);\n break;\n case 'chevron-right':\n setChevronRightContent(svg);\n break;\n case 'chevrons-left':\n setChevronsLeftContent(svg);\n break;\n case 'chevrons-right':\n setChevronsRightContent(svg);\n break;\n case 'clock':\n setClockContent(svg);\n break;\n case 'search':\n setSearchContent(svg);\n break;\n case 'ellipsis':\n setEllipsisContent(svg);\n break;\n case 'minus':\n setMinusContent(svg);\n break;\n case 'plus':\n setPlusContent(svg);\n break;\n case 'close':\n setCloseContent(svg);\n break;\n case 'bell':\n setBellContent(svg);\n break;\n case 'trash':\n setTrashContent(svg);\n break;\n case 'mail':\n setMailContent(svg);\n break;\n case 'send':\n setSendContent(svg);\n break;\n case 'export':\n setExportContent(svg);\n break;\n case 'import':\n setImportContent(svg);\n break;\n case 'edit':\n setEditContent(svg);\n break;\n case 'menu':\n setMenuContent(svg);\n break;\n case 'reply':\n setReplyContent(svg);\n break;\n case 'refresh':\n setRefreshContent(svg);\n break;\n case 'circle-info':\n setCircleInfoContent(svg);\n break;\n case 'circle-warning':\n setCircleWarningContent(svg);\n break;\n case 'circle-error':\n setCircleErrorContent(svg);\n break;\n case 'circle-success':\n setCircleSuccessContent(svg);\n break;\n case 'circle-unknown':\n setCircleUnknownContent(svg);\n break;\n case 'circle-user':\n setCircleUserContent(svg);\n break;\n default:\n break;\n }\n}\n", "import uuidv4 from '../utils/uuid';\nimport { ChevronDown, createSvg } from './../common/icons';\nexport default function (Alpine) {\n Alpine.directive('h-accordion', (el, { expression, modifiers }, { Alpine }) => {\n el._h_accordion = modifiers.includes('single')\n ? Alpine.reactive({\n single: true,\n expandedId: expression ?? '',\n })\n : { single: false };\n el.setAttribute('data-slot', 'accordion');\n });\n\n Alpine.directive('h-accordion-item', (el, { original, expression, modifiers }, { Alpine }) => {\n const accordion = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_accordion'));\n\n if (!accordion) {\n throw new Error(`${original} must be inside an accordion`);\n }\n\n el.classList.add('border-b', 'last:border-b-0');\n el.setAttribute('data-slot', 'accordion-item');\n\n const itemId = expression ?? `ha${uuidv4()}`;\n\n function getIsExpanded() {\n if (accordion._h_accordion.single) {\n if (accordion._h_accordion.expandedId !== '') {\n return accordion._h_accordion.expandedId === itemId;\n } else if (modifiers.includes('default')) {\n accordion._h_accordion.expandedId = itemId;\n return true;\n }\n return false;\n }\n return modifiers.includes('default');\n }\n\n el._h_accordionItem = Alpine.reactive({\n id: itemId,\n controls: `ha${uuidv4()}`,\n expanded: getIsExpanded(),\n });\n });\n\n Alpine.directive('h-accordion-trigger', (el, { original, expression }, { effect, evaluateLater, Alpine, cleanup }) => {\n if (el.tagName.length !== 2 && !el.tagName.startsWith('H')) {\n throw new Error(`${original} must be a header element`);\n }\n const accordion = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_accordion'));\n\n const accordionItem = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_accordionItem'));\n\n if (!accordionItem || !accordion) {\n throw new Error(`${original} must have an accordion and accordion item parent elements`);\n }\n\n el.classList.add('flex', 'h-12', 'min-h-12', '[[data-size=md]_&]:h-10', '[[data-size=md]_&]:min-h-10', '[[data-size=sm]_&]:h-8', '[[data-size=sm]_&]:min-h-8');\n el.setAttribute('tabIndex', '-1');\n\n const getLabel = evaluateLater(expression);\n\n const chevronDown = createSvg({\n icon: ChevronDown,\n classes: 'text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform motion-reduce:transition-none duration-200',\n attrs: {\n 'aria-hidden': true,\n role: 'presentation',\n },\n });\n\n const button = document.createElement('button');\n button.setAttribute('type', 'button');\n button.setAttribute('tabIndex', '0');\n button.setAttribute('data-slot', 'accordion-trigger');\n button.classList.add(\n 'focus-visible:border-ring',\n 'focus-visible:ring-ring/50',\n 'flex',\n 'flex-1',\n 'items-center',\n 'justify-between',\n 'gap-4',\n 'text-left',\n 'text-sm',\n 'font-medium',\n 'transition-all',\n 'motion-reduce:transition-none',\n 'outline-none',\n 'hover:underline',\n 'focus-visible:ring-[calc(var(--spacing)*0.75)]',\n 'disabled:pointer-events-none',\n 'disabled:opacity-50',\n '[&[aria-expanded=true]>svg]:rotate-180'\n );\n el.appendChild(button);\n\n effect(() => {\n getLabel((label) => {\n button.innerText = label;\n button.appendChild(chevronDown);\n });\n });\n\n button.setAttribute('id', accordionItem._h_accordionItem.id);\n button.setAttribute('aria-controls', accordionItem._h_accordionItem.controls);\n\n const setAttributes = () => {\n button.setAttribute('aria-expanded', accordionItem._h_accordionItem.expanded);\n };\n\n const handler = () => {\n accordionItem._h_accordionItem.expanded = !accordionItem._h_accordionItem.expanded;\n setAttributes();\n if (accordion._h_accordion.single) {\n accordion._h_accordion.expandedId = accordionItem._h_accordionItem.id;\n }\n };\n setAttributes();\n\n el.addEventListener('click', handler);\n\n cleanup(() => {\n el.removeEventListener('click', handler);\n });\n\n if (accordion._h_accordion.single) {\n effect(() => {\n if (accordion._h_accordion.expandedId !== accordionItem._h_accordionItem.id) {\n accordionItem._h_accordionItem.expanded = false;\n setAttributes();\n }\n });\n }\n });\n\n Alpine.directive('h-accordion-content', (el, _, { effect, cleanup, Alpine }) => {\n el.classList.add('pb-0', 'overflow-hidden', 'text-sm', 'hidden', 'transition-[opacity,max-height,padding-bottom]', 'motion-reduce:transition-none', 'duration-200', 'ease-out', 'opacity-0');\n el.setAttribute('data-slot', 'accordion-content');\n const parent = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_accordionItem'));\n if (parent) {\n el.setAttribute('id', parent._h_accordionItem.controls);\n el.setAttribute('aria-labelledby', parent._h_accordionItem.id);\n effect(() => {\n if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) {\n el.style.removeProperty('max-height');\n if (parent._h_accordionItem.expanded) {\n el.classList.add('pb-4', '[[data-size=md]_&]:pb-3', '[[data-size=sm]_&]:pb-2');\n el.classList.remove('hidden', 'pb-0', 'opacity-0');\n } else {\n el.classList.add('hidden', 'pb-0', 'opacity-0');\n el.classList.remove('pb-4', '[[data-size=md]_&]:pb-3', '[[data-size=sm]_&]:pb-2');\n }\n } else if (parent._h_accordionItem.expanded) {\n if (el.classList.contains('hidden')) {\n el.classList.add('pb-4', '[[data-size=md]_&]:pb-3', '[[data-size=sm]_&]:pb-2');\n el.classList.remove('hidden', 'pb-0');\n Alpine.nextTick(() => {\n el.style.maxHeight = `${el.scrollHeight}px`;\n el.classList.remove('opacity-0');\n });\n }\n } else {\n el.style.maxHeight = '0px';\n el.classList.add('opacity-0', 'pb-0');\n el.classList.remove('pb-4', '[[data-size=md]_&]:pb-3', '[[data-size=sm]_&]:pb-2');\n }\n });\n\n function onTransitionEnd(event) {\n if (event.target === el && event.target.classList.contains('opacity-0')) {\n el.classList.add('hidden');\n }\n }\n\n el.addEventListener('transitionend', onTransitionEnd);\n\n cleanup(() => {\n el.removeEventListener('transitionend', onTransitionEnd);\n });\n }\n });\n}\n", "export default function (Alpine) {\n Alpine.directive('h-alert', (el, { modifiers }, { cleanup }) => {\n el.classList.add(\n 'relative',\n 'w-full',\n 'rounded-lg',\n 'bg-card',\n 'border',\n 'px-3',\n 'py-2',\n 'text-sm',\n 'grid',\n 'has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr_auto]',\n 'grid-cols-[0_1fr_auto]',\n 'has-[>svg]:gap-x-3',\n 'gap-y-0.5',\n 'items-center',\n '[&>svg]:size-4',\n '[&>svg]:text-current',\n modifiers.includes('floating') ? 'shadow-lg' : undefined\n );\n el.setAttribute('data-slot', 'alert');\n el.setAttribute('role', 'alert');\n\n const variants = {\n default: ['text-foreground'],\n positive: ['text-positive'],\n negative: ['text-negative'],\n warning: ['text-warning'],\n information: ['text-information'],\n };\n\n function setVariant(variant) {\n for (const [_, value] of Object.entries(variants)) {\n el.classList.remove(...value);\n }\n if (Object.prototype.hasOwnProperty.call(variants, variant)) el.classList.add(...variants[variant]);\n }\n\n setVariant(el.getAttribute('data-variant') ?? 'default');\n\n const observer = new MutationObserver(() => {\n setVariant(el.getAttribute('data-variant') ?? 'default');\n });\n\n observer.observe(el, { attributes: true, attributeFilter: ['data-variant'] });\n\n cleanup(() => {\n observer.disconnect();\n });\n });\n\n Alpine.directive('h-alert-title', (el) => {\n el.classList.add('col-start-2', 'line-clamp-1', 'min-h-4', 'font-medium', 'tracking-tight');\n el.setAttribute('data-slot', 'alert-title');\n });\n\n Alpine.directive('h-alert-description', (el) => {\n el.classList.add('text-muted-foreground', 'col-start-2', 'vbox', 'gap-1', 'text-sm', '[&_p]:leading-relaxed');\n el.setAttribute('data-slot', 'alert-description');\n });\n\n Alpine.directive('h-alert-actions', (el) => {\n el.classList.add('col-start-3', 'row-start-1');\n el.setAttribute('data-slot', 'alert-actions');\n });\n}\n", "export function classListStartsWith(classList, term) {\n for (let i = 0; i < classList.length; i++) {\n if (classList.item(i).startsWith(term)) {\n return true;\n }\n }\n return false;\n}\n", "import { classListStartsWith } from '../common/class-list';\nexport default function (Alpine) {\n Alpine.directive('h-avatar', (el, _, { Alpine }) => {\n if (!classListStartsWith(el.classList, 'rounded')) {\n el.classList.add('rounded-full');\n }\n el.classList.add(\n 'relative',\n 'bg-secondary',\n 'text-secondary-foreground',\n 'fill-secondary-foreground',\n '[[data-slot=toolbar]:not([data-variant=transparent])>&]:border',\n 'data-[variant=\"information\"]:bg-information/10',\n 'data-[variant=\"information\"]:text-information',\n 'data-[variant=\"information\"]:border-information',\n '[&[data-variant=\"information\"]>svg]:fill-information',\n 'data-[variant=\"warning\"]:bg-warning/10',\n 'data-[variant=\"warning\"]:text-warning',\n 'data-[variant=\"warning\"]:border-warning',\n '[&[data-variant=\"warning\"]>svg]:fill-warning',\n 'data-[variant=\"positive\"]:bg-positive/10',\n 'data-[variant=\"positive\"]:text-positive',\n 'data-[variant=\"positive\"]:border-positive',\n '[&[data-variant=\"positive\"]>svg]:fill-positive',\n 'data-[variant=\"negative\"]:bg-negative/10',\n 'data-[variant=\"negative\"]:text-negative',\n 'data-[variant=\"negative\"]:border-negative',\n '[&[data-variant=\"negative\"]>svg]:fill-negative',\n 'has-[img]:border-0',\n 'flex',\n 'size-8',\n 'aspect-square',\n 'shrink-0',\n 'items-center',\n 'justify-center',\n 'text-sm',\n '[&>svg]:size-5'\n );\n el.setAttribute('data-slot', 'avatar');\n el._h_avatar = Alpine.reactive({\n fallback: false,\n });\n if (el.tagName === 'BUTTON') {\n el.classList.add('cursor-pointer', 'hover:bg-secondary-hover', 'active:bg-secondary-active');\n }\n });\n\n Alpine.directive('h-avatar-image', (el, { original }, { cleanup }) => {\n const avatar = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_avatar'));\n if (!avatar) {\n throw new Error(`${original} must be inside an avatar element`);\n }\n\n el.classList.add('aspect-square', 'size-full', 'rounded-[inherit]');\n el.setAttribute('data-slot', 'avatar-image');\n el.setAttribute('role', 'img');\n\n let interval;\n\n function fallback(active = false) {\n if (active) el.classList.add('hidden');\n else el.classList.remove('hidden');\n avatar._h_avatar.fallback = active;\n }\n\n function completeCheck() {\n if (el.complete) {\n clearInterval(interval);\n fallback(el.naturalHeight === 0);\n }\n }\n\n if (el.complete && el.naturalHeight === 0) {\n fallback(true);\n } else {\n interval = setInterval(completeCheck, 10);\n }\n\n const observer = new MutationObserver(() => {\n interval = setInterval(completeCheck, 10);\n });\n\n observer.observe(el, { attributes: true, attributeFilter: ['src'] });\n\n cleanup(() => {\n if (interval) clearInterval(interval);\n observer.disconnect();\n });\n });\n\n Alpine.directive('h-avatar-fallback', (el, { original }, { effect }) => {\n const avatar = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_avatar'));\n if (!avatar) {\n throw new Error(`${original} must be inside an avatar element`);\n }\n\n el.classList.add('hidden', 'bg-muted', 'flex', 'size-full', 'items-center', 'justify-center', 'rounded-[inherit]');\n el.setAttribute('data-slot', 'avatar-fallback');\n\n effect(() => {\n if (avatar._h_avatar.fallback) el.classList.remove('hidden');\n else el.classList.add('hidden');\n });\n });\n}\n", "export default function (Alpine) {\n Alpine.directive('h-badge', (el, _, { cleanup }) => {\n el.classList.add(\n '[a&]:cursor-pointer',\n 'inline-flex',\n 'items-center',\n 'justify-center',\n 'rounded-full',\n 'border',\n 'px-2',\n 'py-0.5',\n 'text-xs',\n 'font-medium',\n 'w-fit',\n 'whitespace-nowrap',\n 'shrink-0',\n '[&>svg]:size-3',\n 'gap-1',\n '[&>svg]:pointer-events-none',\n 'focus-visible:border-ring',\n 'focus-visible:ring-ring/50',\n 'focus-visible:ring-[calc(var(--spacing)*0.75)]',\n 'transition-colors',\n 'transition-shadow',\n 'motion-reduce:transition-none',\n 'overflow-hidden'\n );\n el.setAttribute('data-slot', 'badge');\n const variants = {\n default: ['border-transparent', 'bg-secondary', 'text-secondary-foreground', '[a&]:hover:bg-secondary-hover', '[a&]:active:bg-secondary-active'],\n primary: ['border-transparent', 'bg-primary', 'text-primary-foreground', '[a&]:hover:bg-primary-hover', '[a&]:active:bg-primary-active'],\n positive: ['border-transparent', 'bg-positive', 'text-positive-foreground', '[a&]:hover:bg-positive-hover', '[a&]:active:bg-positive-active'],\n negative: ['border-transparent', 'bg-negative', 'text-negative-foreground', '[a&]:hover:bg-negative-hover', '[a&]:active:bg-negative-active'],\n warning: ['border-transparent', 'bg-warning', 'text-warning-foreground', '[a&]:hover:bg-warning-hover', '[a&]:active:bg-warning-active'],\n information: ['border-transparent', 'bg-information', 'text-information-foreground', '[a&]:hover:bg-information-hover', '[a&]:active:bg-information-active'],\n outline: ['bg-transparent', 'text-foreground', '[a&]:hover:bg-secondary', '[a&]:hover:text-secondary-foreground', '[a&]:active:bg-secondary-active'],\n };\n\n function setVariant(variant) {\n for (const [_, value] of Object.entries(variants)) {\n el.classList.remove(...value);\n }\n if (Object.prototype.hasOwnProperty.call(variants, variant)) el.classList.add(...variants[variant]);\n }\n\n setVariant(el.getAttribute('data-variant') ?? 'default');\n\n const observer = new MutationObserver(() => {\n setVariant(el.getAttribute('data-variant') ?? 'default');\n });\n\n observer.observe(el, { attributes: true, attributeFilter: ['data-variant'] });\n\n cleanup(() => {\n observer.disconnect();\n });\n });\n\n Alpine.directive('h-badge-indicator', (el, _, { cleanup }) => {\n el.classList.add(\n 'absolute',\n '-end-1',\n '-top-1',\n '[.rounded-full>&]:end-0',\n '[.rounded-full>&]:top-0',\n 'inline-flex',\n 'h-4',\n 'min-w-4',\n 'items-center',\n 'justify-center',\n 'rounded-full',\n 'py-0.5',\n 'px-1',\n 'text-xs',\n 'font-bold',\n 'leading-none',\n 'transform-gpu',\n 'data-[dot=true]:p-0',\n 'data-[dot=true]:min-w-3',\n 'data-[dot=true]:h-3',\n 'data-[ping=true]:before:absolute',\n 'data-[ping=true]:before:inline-flex',\n 'data-[ping=true]:before:w-full',\n 'data-[ping=true]:before:h-full',\n 'data-[ping=true]:before:rounded-full',\n 'data-[ping=true]:before:opacity-75',\n 'data-[ping=true]:before:animate-ping'\n );\n el.setAttribute('data-slot', 'badge-indicator');\n const variants = {\n primary: ['bg-primary', 'text-primary-foreground', 'data-[ping=true]:before:bg-primary'],\n positive: ['bg-positive', 'text-positive-foreground', 'data-[ping=true]:before:bg-positive'],\n negative: ['bg-negative', 'text-negative-foreground', 'data-[ping=true]:before:bg-negative'],\n warning: ['bg-warning', 'text-warning-foreground', 'data-[ping=true]:before:bg-warning'],\n information: ['bg-information', 'text-information-foreground', 'data-[ping=true]:before:bg-information'],\n };\n\n function setVariant(variant) {\n for (const [_, value] of Object.entries(variants)) {\n el.classList.remove(...value);\n }\n if (Object.prototype.hasOwnProperty.call(variants, variant)) el.classList.add(...variants[variant]);\n }\n\n setVariant(el.getAttribute('data-variant') ?? 'primary');\n\n const observer = new MutationObserver(() => {\n setVariant(el.getAttribute('data-variant') ?? 'primary');\n });\n\n observer.observe(el, { attributes: true, attributeFilter: ['data-variant'] });\n\n cleanup(() => {\n observer.disconnect();\n });\n });\n}\n", "export const buttonVariants = {\n default: [\n 'bg-secondary',\n 'text-secondary-foreground',\n 'fill-secondary-foreground',\n 'shadow-button',\n 'hover:bg-secondary-hover',\n 'active:bg-secondary-active',\n 'aria-pressed:bg-secondary-active',\n 'active:data-[toggled=true]:bg-secondary-active',\n 'hover:data-[toggled=true]:bg-secondary-hover',\n 'data-[toggled=true]:bg-secondary-active',\n ],\n primary: [\n 'bg-primary',\n 'text-primary-foreground',\n 'fill-primary-foreground',\n 'shadow-button',\n 'focus-visible:outline-primary/50',\n 'hover:bg-primary-hover',\n 'active:bg-primary-active',\n 'aria-pressed:bg-primary-active',\n 'active:data-[toggled=true]:bg-primary-active',\n 'hover:data-[toggled=true]:bg-primary-hover',\n 'data-[toggled=true]:bg-primary-active',\n ],\n positive: [\n 'bg-positive',\n 'text-positive-foreground',\n 'fill-positive-foreground',\n 'shadow-button',\n 'focus-visible:outline-positive/50',\n 'hover:bg-positive-hover',\n 'active:bg-positive-active',\n 'aria-pressed:bg-positive-active',\n 'active:data-[toggled=true]:bg-positive-active',\n 'hover:data-[toggled=true]:bg-positive-hover',\n 'data-[toggled=true]:bg-positive-active',\n ],\n negative: [\n 'bg-negative',\n 'text-negative-foreground',\n 'fill-negative-foreground',\n 'shadow-button',\n 'focus-visible:outline-negative/50',\n 'hover:bg-negative-hover',\n 'active:bg-negative-active',\n 'aria-pressed:bg-negative-active',\n 'active:data-[toggled=true]:bg-negative-active',\n 'hover:data-[toggled=true]:bg-negative-hover',\n 'data-[toggled=true]:bg-negative-active',\n ],\n warning: [\n 'bg-warning',\n 'text-warning-foreground',\n 'fill-warning-foreground',\n 'shadow-button',\n 'focus-visible:outline-warning/50',\n 'hover:bg-warning-hover',\n 'active:bg-warning-active',\n 'aria-pressed:bg-warning-active',\n 'active:data-[toggled=true]:bg-warning-active',\n 'hover:data-[toggled=true]:bg-warning-hover',\n 'data-[toggled=true]:bg-warning-active',\n ],\n information: [\n 'bg-information',\n 'text-information-foreground',\n 'fill-information-foreground',\n 'shadow-button',\n 'focus-visible:outline-information/50',\n 'hover:bg-information-hover',\n 'active:bg-information-active',\n 'aria-pressed:bg-information-active',\n 'active:data-[toggled=true]:bg-information-active',\n 'hover:data-[toggled=true]:bg-information-hover',\n 'data-[toggled=true]:bg-information-active',\n ],\n outline: [\n 'border',\n 'bg-background',\n 'text-foreground',\n 'fill-foreground',\n 'hover:bg-secondary',\n 'hover:text-secondary-foreground',\n 'hover:fill-secondary-foreground',\n 'active:bg-secondary-active',\n 'active:text-secondary-foreground',\n 'active:fill-secondary-foreground',\n 'aria-pressed:bg-secondary-active',\n 'aria-pressed:text-secondary-foreground',\n 'aria-pressed:fill-secondary-foreground',\n 'active:data-[toggled=true]:bg-secondary-active',\n 'active:data-[toggled=true]:text-secondary-foreground',\n 'active:data-[toggled=true]:fill-secondary-foreground',\n 'hover:data-[toggled=true]:bg-secondary-hover',\n 'hover:data-[toggled=true]:text-secondary-foreground',\n 'hover:data-[toggled=true]:fill-secondary-foreground',\n 'data-[toggled=true]:bg-secondary-active',\n 'data-[toggled=true]:text-secondary-foreground',\n 'data-[toggled=true]:fill-secondary-foreground',\n ],\n transparent: [\n 'bg-transparent',\n 'text-foreground',\n 'fill-foreground',\n 'shadow-none',\n 'hover:bg-secondary',\n 'hover:text-secondary-foreground',\n 'hover:fill-secondary-foreground',\n 'active:bg-secondary-active',\n 'active:text-secondary-foreground',\n 'active:fill-secondary-foreground',\n 'aria-pressed:bg-secondary-active',\n 'aria-pressed:text-secondary-foreground',\n 'aria-pressed:fill-secondary-foreground',\n 'active:data-[toggled=true]:bg-secondary-active',\n 'active:data-[toggled=true]:text-secondary-foreground',\n 'active:data-[toggled=true]:fill-secondary-foreground',\n 'hover:data-[toggled=true]:bg-secondary-hover',\n 'hover:data-[toggled=true]:text-secondary-foreground',\n 'hover:data-[toggled=true]:fill-secondary-foreground',\n 'data-[toggled=true]:bg-secondary-active',\n 'data-[toggled=true]:text-secondary-foreground',\n 'data-[toggled=true]:fill-secondary-foreground',\n ],\n link: ['text-primary', 'underline-offset-4', 'hover:underline'],\n};\n\nexport const setButtonClasses = (el) => {\n el.classList.add(\n 'cursor-pointer',\n 'inline-flex',\n 'items-center',\n 'justify-center',\n 'gap-2',\n 'whitespace-nowrap',\n 'rounded-control',\n 'text-sm',\n 'font-medium',\n 'transition-all',\n 'duration-100',\n 'motion-reduce:transition-none',\n 'disabled:pointer-events-none',\n 'disabled:opacity-50',\n '[&_svg]:pointer-events-none',\n \"[&_svg:not([class*='size-'])]:size-4\",\n 'shrink-0',\n '[&_svg]:shrink-0',\n 'outline-ring/50',\n 'focus-visible:outline-[calc(var(--spacing)*0.75)]',\n 'focus-visible:outline',\n 'aria-invalid:ring-negative/20',\n 'dark:aria-invalid:ring-negative/40',\n 'aria-invalid:border-negative',\n 'invalid:!ring-negative/20',\n 'dark:invalid:!ring-negative/40',\n 'invalid:!border-negative'\n );\n};\n\nexport const getButtonSize = (size, isAddon = false) => {\n switch (size) {\n case 'sm':\n return isAddon\n ? ['h-6', '[[data-slot=input-group][data-size=sm]_&]:h-5', 'gap-1', 'px-2', \"[&>svg:not([class*='size-'])]:size-3.5\", 'has-[>svg]:px-2', 'has-[>[data-slot=spinner]]:px-2']\n : ['h-6.5', 'gap-1.5', 'px-2.5', 'has-[>svg]:px-2', 'has-[>[data-slot=spinner]]:px-2'];\n case 'md':\n return isAddon ? ['h-8', 'px-2.5', 'gap-1.5', 'has-[>svg]:px-2.5', 'has-[>[data-slot=spinner]]:px-2.5'] : ['h-8', 'gap-1.5', 'px-3', 'has-[>svg]:px-2.5', 'has-[>[data-slot=spinner]]:px-2.5'];\n case 'icon-sm':\n return isAddon ? ['size-6', '[[data-slot=input-group][data-size=sm]_&]:size-5', 'p-0', 'has-[>svg]:p-0', 'has-[>[data-slot=spinner]]:p-0'] : ['size-6.5'];\n case 'icon-md':\n return isAddon ? ['size-8', 'p-0', 'has-[>svg]:p-0'] : ['size-8'];\n case 'icon':\n return ['size-9'];\n default:\n return ['h-9', 'px-4', 'py-2', 'has-[>svg]:px-3', 'has-[>[data-slot=spinner]]:px-3'];\n }\n};\n\nexport default function (Alpine) {\n Alpine.directive('h-button', (el, { original, modifiers }, { cleanup }) => {\n setButtonClasses(el);\n if (!el.hasAttribute('data-slot')) {\n el.setAttribute('data-slot', 'button');\n }\n\n const isAddon = modifiers.includes('addon');\n\n let lastSize;\n\n function setVariant(variant) {\n for (const [_, value] of Object.entries(buttonVariants)) {\n el.classList.remove(...value);\n }\n if (Object.prototype.hasOwnProperty.call(buttonVariants, variant)) el.classList.add(...buttonVariants[variant]);\n }\n\n function setSize(size = 'default') {\n el.classList.remove(...getButtonSize(lastSize, isAddon));\n el.classList.add(...getButtonSize(size, isAddon));\n if (size.startsWith('icon') && !el.hasAttribute('aria-labelledby') && !el.hasAttribute('aria-label')) {\n console.error(`${original}: Icon-only buttons must have an \"aria-label\" or \"aria-labelledby\" attribute`, el);\n }\n lastSize = size;\n }\n\n setVariant(el.getAttribute('data-variant') ?? 'default');\n if (isAddon) {\n el.classList.remove('shadow-button', 'inline-flex');\n el.classList.add('shadow-none', 'flex');\n setSize(el.getAttribute('data-size') ?? 'sm');\n } else {\n if (el.hasAttribute('data-size')) {\n setSize(el.getAttribute('data-size'));\n } else {\n if (['date-picker-trigger', 'time-picker-trigger'].includes(el.getAttribute('data-slot'))) {\n setSize('icon-sm');\n } else {\n setSize();\n }\n }\n }\n\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (mutation.attributeName === 'data-variant') setVariant(el.getAttribute('data-variant') ?? 'default');\n else setSize(el.getAttribute('data-size') ?? (isAddon ? 'sm' : 'default'));\n });\n });\n\n observer.observe(el, { attributes: true, attributeFilter: ['data-variant', 'data-size'] });\n\n cleanup(() => {\n observer.disconnect();\n });\n });\n\n Alpine.directive('h-button-group', (el) => {\n el.classList.add(\n 'flex',\n 'w-fit',\n 'items-stretch',\n '[&>*]:focus-visible:z-10',\n '[&>*]:focus-visible:relative',\n \"[&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit\",\n '[&>input]:flex-1',\n 'has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-control',\n 'has-[>[data-slot=button-group]]:gap-2'\n );\n el.setAttribute('role', 'group');\n el.setAttribute('data-slot', 'button-group');\n const variants = {\n horizontal: ['[&>*:not(:first-child)]:rounded-l-none', '[&>*:not(:first-child)]:border-l-0', '[&>*:not(:last-child)]:rounded-r-none'],\n vertical: ['flex-col', '[&>*:not(:first-child)]:rounded-t-none', '[&>*:not(:first-child)]:border-t-0', '[&>*:not(:last-child)]:rounded-b-none'],\n };\n\n function setVariant(variant) {\n for (const [_, value] of Object.entries(variants)) {\n el.classList.remove(...value);\n }\n if (Object.prototype.hasOwnProperty.call(variants, variant)) el.classList.add(...variants[variant]);\n }\n\n setVariant(el.getAttribute('data-orientation') ?? 'horizontal');\n });\n\n Alpine.directive('h-button-group-separator', (el) => {\n el.classList.add('bg-foreground/20', 'shrink-0', '[[data-orientation=vertical]_&]:h-px', '[[data-orientation=vertical]_&]:w-full', 'h-auto', 'w-px', 'relative', '!m-0', 'self-stretch');\n el.setAttribute('role', 'none');\n el.setAttribute('data-slot', 'button-group-separator');\n });\n}\n", "/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n const firstChar = placement[0];\n return firstChar === 't' || firstChar === 'b' ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.includes('start') ? placement.replace('start', 'end') : placement.replace('end', 'start');\n}\nconst lrPlacement = ['left', 'right'];\nconst rlPlacement = ['right', 'left'];\nconst tbPlacement = ['top', 'bottom'];\nconst btPlacement = ['bottom', 'top'];\nfunction getSideList(side, isStart, rtl) {\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rlPlacement : lrPlacement;\n return isStart ? lrPlacement : rlPlacement;\n case 'left':\n case 'right':\n return isStart ? tbPlacement : btPlacement;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n const side = getSide(placement);\n return oppositeSideMap[side] + placement.slice(side.length);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n const {\n x,\n y,\n width,\n height\n } = rect;\n return {\n width,\n height,\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n", "import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n x,\n y,\n width: rects.floating.width,\n height: rects.floating.height\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n// Maximum number of resets that can occur before bailing to avoid infinite reset loops.\nconst MAX_RESET_COUNT = 50;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const platformWithDetectOverflow = platform.detectOverflow ? platform : {\n ...platform,\n detectOverflow\n };\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let resetCount = 0;\n const middlewareData = {};\n for (let i = 0; i < middleware.length; i++) {\n const currentMiddleware = middleware[i];\n if (!currentMiddleware) {\n continue;\n }\n const {\n name,\n fn\n } = currentMiddleware;\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform: platformWithDetectOverflow,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData[name] = {\n ...middlewareData[name],\n ...data\n };\n if (reset && resetCount < MAX_RESET_COUNT) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const initialSideAxis = getSideAxis(initialPlacement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n if (!ignoreCrossAxisOverflow ||\n // We leave the current main axis only if every placement on that axis\n // overflows the main axis.\n overflowsData.every(d => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$filter2;\n const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n if (hasFallbackAxisSideDirection) {\n const currentSideAxis = getSideAxis(d.placement);\n return currentSideAxis === initialSideAxis ||\n // Create a bias to the `y` side axis due to horizontal\n // reading directions favoring greater width.\n currentSideAxis === 'y';\n }\n return true;\n }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects,\n platform\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await platform.detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await platform.detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\nconst originSides = /*#__PURE__*/new Set(['left', 'top']);\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = originSides.has(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n\n // eslint-disable-next-line prefer-const\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: rawValue.mainAxis || 0,\n crossAxis: rawValue.crossAxis || 0,\n alignmentAxis: rawValue.alignmentAxis\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n platform\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y,\n enabled: {\n [mainAxis]: checkMainAxis,\n [crossAxis]: checkCrossAxis\n }\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = originSides.has(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element \u2014\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n var _state$middlewareData, _state$middlewareData2;\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n const maximumClippingWidth = width - overflow.left - overflow.right;\n const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n availableWidth = maximumClippingWidth;\n }\n if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n availableHeight = maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n", "function hasWindow() {\n return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && display !== 'inline' && display !== 'contents';\n}\nfunction isTableElement(element) {\n return /^(table|td|th)$/.test(getNodeName(element));\n}\nfunction isTopLayer(element) {\n try {\n if (element.matches(':popover-open')) {\n return true;\n }\n } catch (_e) {\n // no-op\n }\n try {\n return element.matches(':modal');\n } catch (_e) {\n return false;\n }\n}\nconst willChangeRe = /transform|translate|scale|rotate|perspective|filter/;\nconst containRe = /paint|layout|strict|content/;\nconst isNotNone = value => !!value && value !== 'none';\nlet isWebKitValue;\nfunction isContainingBlock(elementOrCss) {\n const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n return isNotNone(css.transform) || isNotNone(css.translate) || isNotNone(css.scale) || isNotNone(css.rotate) || isNotNone(css.perspective) || !isWebKit() && (isNotNone(css.backdropFilter) || isNotNone(css.filter)) || willChangeRe.test(css.willChange || '') || containRe.test(css.contain || '');\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else if (isTopLayer(currentNode)) {\n return null;\n }\n currentNode = getParentNode(currentNode);\n }\n return null;\n}\nfunction isWebKit() {\n if (isWebKitValue == null) {\n isWebKitValue = typeof CSS !== 'undefined' && CSS.supports && CSS.supports('-webkit-backdrop-filter', 'none');\n }\n return isWebKitValue;\n}\nfunction isLastTraversableNode(node) {\n return /^(html|body|#document)$/.test(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.scrollX,\n scrollTop: element.scrollY\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n const frameElement = getFrameElement(win);\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n } else {\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n }\n}\nfunction getFrameElement(win) {\n return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n", "import { rectToClientRect, arrow as arrow$1, autoPlacement as autoPlacement$1, detectOverflow as detectOverflow$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle as getComputedStyle$1, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle$1(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = getFrameElement(currentWin);\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle$1(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = getFrameElement(currentWin);\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n const leftScroll = getNodeScroll(element).scrollLeft;\n if (!rect) {\n return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n }\n return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll) {\n const htmlRect = documentElement.getBoundingClientRect();\n const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);\n const y = htmlRect.top + scroll.scrollTop;\n return {\n x,\n y\n };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle$1(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Safety check: ensure the scrollbar space is reasonable in case this\n// calculation is affected by unusual styles.\n// Most scrollbars leave 15-18px of space.\nconst SCROLLBAR_MAX = 25;\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n const windowScrollbarX = getWindowScrollBarX(html);\n // <html> `overflow: hidden` + `scrollbar-gutter: stable` reduces the\n // visual width of the <html> but this is not considered in the size\n // of `html.clientWidth`.\n if (windowScrollbarX <= 0) {\n const doc = html.ownerDocument;\n const body = doc.body;\n const bodyStyles = getComputedStyle(body);\n const bodyMarginInline = doc.compatMode === 'CSS1Compat' ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;\n const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);\n if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) {\n width -= clippingStableScrollbarWidth;\n }\n } else if (windowScrollbarX <= SCROLLBAR_MAX) {\n // If the <body> scrollbar is on the left, the width needs to be extended\n // by the scrollbar amount so there isn't extra space on the right.\n width += windowScrollbarX;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y,\n width: clippingAncestor.width,\n height: clippingAncestor.height\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle$1(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle$1(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && (currentContainingBlockComputedStyle.position === 'absolute' || currentContainingBlockComputedStyle.position === 'fixed') || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstRect = getClientRectFromClippingAncestor(element, clippingAncestors[0], strategy);\n let top = firstRect.top;\n let right = firstRect.right;\n let bottom = firstRect.bottom;\n let left = firstRect.left;\n for (let i = 1; i < clippingAncestors.length; i++) {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestors[i], strategy);\n top = max(rect.top, top);\n right = min(rect.right, right);\n bottom = min(rect.bottom, bottom);\n left = max(rect.left, left);\n }\n return {\n width: right - left,\n height: bottom - top,\n x: left,\n y: top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n\n // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n function setLeftRTLScrollbarOffset() {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n setLeftRTLScrollbarOffset();\n }\n }\n if (isFixed && !isOffsetParentAnElement && documentElement) {\n setLeftRTLScrollbarOffset();\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction isStaticPositioned(element) {\n return getComputedStyle$1(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n let rawOffsetParent = element.offsetParent;\n\n // Firefox returns the <html> element as the offsetParent if it's non-static,\n // while Chrome and Safari return the <body> element. The <body> element must\n // be used to perform the correct calculations even if the <html> element is\n // non-static.\n if (getDocumentElement(element) === rawOffsetParent) {\n rawOffsetParent = rawOffsetParent.ownerDocument.body;\n }\n return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const win = getWindow(element);\n if (isTopLayer(element)) {\n return win;\n }\n if (!isHTMLElement(element)) {\n let svgOffsetParent = getParentNode(element);\n while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n return svgOffsetParent;\n }\n svgOffsetParent = getParentNode(svgOffsetParent);\n }\n return win;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n return win;\n }\n return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n const floatingDimensions = await getDimensionsFn(data.floating);\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n width: floatingDimensions.width,\n height: floatingDimensions.height\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle$1(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const elementRectForRootMargin = element.getBoundingClientRect();\n const {\n left,\n top,\n width,\n height\n } = elementRectForRootMargin;\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n // If the reference is clipped, the ratio is 0. Throttle the refresh\n // to prevent an infinite loop of updates.\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 1000);\n } else {\n refresh(false, ratio);\n }\n }\n if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n // It's possible that even though the ratio is reported as 1, the\n // element is not actually fully within the IntersectionObserver's root\n // area anymore. This can happen under performance constraints. This may\n // be a bug in the browser's IntersectionObserver implementation. To\n // work around this, we compare the element's bounding rect now with\n // what it was at the time we created the IntersectionObserver. If they\n // are not equal then the element moved, so we refresh.\n refresh();\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle <iframe>s\n root: root.ownerDocument\n });\n } catch (_e) {\n io = new IntersectionObserver(handleObserve, options);\n }\n io.observe(element);\n }\n refresh(true);\n return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n ancestorScroll = true,\n ancestorResize = true,\n elementResize = typeof ResizeObserver === 'function',\n layoutShift = typeof IntersectionObserver === 'function',\n animationFrame = false\n } = options;\n const referenceEl = unwrapElement(reference);\n const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...(floating ? getOverflowAncestors(floating) : [])] : [];\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.addEventListener('scroll', update, {\n passive: true\n });\n ancestorResize && ancestor.addEventListener('resize', update);\n });\n const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n let reobserveFrame = -1;\n let resizeObserver = null;\n if (elementResize) {\n resizeObserver = new ResizeObserver(_ref => {\n let [firstEntry] = _ref;\n if (firstEntry && firstEntry.target === referenceEl && resizeObserver && floating) {\n // Prevent update loops when using the `size` middleware.\n // https://github.com/floating-ui/floating-ui/issues/1740\n resizeObserver.unobserve(floating);\n cancelAnimationFrame(reobserveFrame);\n reobserveFrame = requestAnimationFrame(() => {\n var _resizeObserver;\n (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n });\n }\n update();\n });\n if (referenceEl && !animationFrame) {\n resizeObserver.observe(referenceEl);\n }\n if (floating) {\n resizeObserver.observe(floating);\n }\n }\n let frameId;\n let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n if (animationFrame) {\n frameLoop();\n }\n function frameLoop() {\n const nextRefRect = getBoundingClientRect(reference);\n if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n update();\n }\n prevRefRect = nextRefRect;\n frameId = requestAnimationFrame(frameLoop);\n }\n update();\n return () => {\n var _resizeObserver2;\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.removeEventListener('scroll', update);\n ancestorResize && ancestor.removeEventListener('resize', update);\n });\n cleanupIo == null || cleanupIo();\n (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n resizeObserver = null;\n if (animationFrame) {\n cancelAnimationFrame(frameId);\n }\n };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element \u2014\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n // This caches the expensive `getClippingElementAncestors` function so that\n // multiple lifecycle resets re-use the same result. It only lives for a\n // single call. If other functions become expensive, we can add them as well.\n const cache = new Map();\n const mergedOptions = {\n platform,\n ...options\n };\n const platformWithCache = {\n ...mergedOptions.platform,\n _c: cache\n };\n return computePosition$1(reference, floating, {\n ...mergedOptions,\n platform: platformWithCache\n });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n", "import { autoUpdate, computePosition, flip, offset, shift } from '@floating-ui/dom';\nimport uuidv4 from '../utils/uuid';\nimport { ChevronLeft, ChevronRight, ChevronsLeft, ChevronsRight, createSvg } from './../common/icons';\nexport default function (Alpine) {\n Alpine.directive('h-calendar', (el, { original, expression }, { effect, evaluateLater, cleanup, Alpine }) => {\n const datepicker = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_datepicker'));\n el.classList.add('border', 'rounded-control', 'gap-2', 'p-2');\n el.setAttribute('tabindex', '-1');\n if (datepicker) {\n el.classList.add(\n 'absolute',\n 'bg-popover',\n 'text-popover-foreground',\n 'flex',\n 'flex-col',\n 'hidden',\n 'z-50',\n 'shadow-md',\n 'transition-[opacity,scale]',\n 'motion-reduce:transition-none',\n 'duration-100',\n 'ease-out',\n 'opacity-0',\n 'scale-95'\n );\n el.setAttribute('role', 'dialog');\n el.setAttribute('aria-modal', 'true');\n el.setAttribute('data-slot', 'date-picker-calendar');\n } else {\n el.classList.add('shadow-input', 'data-[invalid=true]:border-negative', 'data-[invalid=true]:ring-negative/20', 'dark:data-[invalid=true]:ring-negative/40');\n }\n\n let date = new Date();\n let selected = undefined;\n let focusedDay = undefined;\n\n let locale = undefined;\n let formatter = undefined;\n let modelAsIso = false;\n let firstDay = 0;\n let minDate = undefined;\n let maxDate = undefined;\n\n function modelChange(triggerInput = false) {\n Alpine.nextTick(() => {\n el.dispatchEvent(new CustomEvent('change', { detail: { date: selected } }));\n });\n if (el._x_model) {\n if (modelAsIso) {\n el._x_model.set(selected.toISOString());\n } else {\n el._x_model.set(formatter.format(selected));\n }\n }\n if (datepicker) {\n datepicker._h_datepicker.input.value = formatter.format(selected);\n datepicker._h_datepicker.input.setCustomValidity('');\n if (triggerInput) datepicker._h_datepicker.input.dispatchEvent(new Event('change', { bubbles: true }));\n } else {\n el.setAttribute('data-invalid', 'false');\n }\n }\n\n const onInputChange = () => {\n const newValue = new Date(datepicker._h_datepicker.input.value);\n if (isNaN(newValue)) {\n console.error(`${original}: input value is not a valid date - ${datepicker._h_datepicker.input.value}`);\n datepicker._h_datepicker.input.setCustomValidity('Input value is not a valid date.');\n return;\n } else if (selected.getTime() !== newValue.getTime()) {\n selected = newValue;\n modelChange();\n render();\n }\n datepicker._h_datepicker.input.setCustomValidity('');\n };\n\n if (datepicker) {\n datepicker._h_datepicker.input.addEventListener('change', onInputChange);\n }\n\n function setFromModel() {\n selected = new Date(el._x_model.get());\n if (isNaN(selected)) {\n console.error(`${original}: input value is not a valid date - ${el._x_model.get()}`);\n if (datepicker) datepicker._h_datepicker.input.setCustomValidity('Input value is not a valid date.');\n else el.setAttribute('data-invalid', 'true');\n } else if (datepicker) {\n datepicker._h_datepicker.input.value = formatter.format(selected);\n }\n }\n\n function checkForModel() {\n if (Object.prototype.hasOwnProperty.call(el, '_x_model') && el._x_model.get()) {\n setFromModel();\n }\n }\n\n function dayClick(event) {\n if (event.target.getAttribute('aria-disabled') === 'true') return;\n focusedDay = new Date(event.target.dataset.year, event.target.dataset.month, event.target.dataset.day);\n selected = new Date(focusedDay);\n modelChange(true);\n render();\n if (datepicker) datepicker._h_datepicker.state.expanded = false;\n }\n\n function isDisabled(d) {\n if (minDate && d < new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate())) return true;\n if (maxDate && d > new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate())) return true;\n return false;\n }\n\n function sameDay(dateA, dateB) {\n return dateA && dateB && dateA.getFullYear() === dateB.getFullYear() && dateA.getMonth() === dateB.getMonth() && dateA.getDate() === dateB.getDate();\n }\n\n const weekdayFormat = new Intl.DateTimeFormat(locale, { weekday: 'short' });\n function getWeekdayNames() {\n return Array.from({ length: 7 }, (_, i) => {\n const weekday = (i + firstDay) % 7;\n return weekdayFormat.format(new Date(2020, 9, weekday + 4));\n });\n }\n\n const fullWeekdayFormat = new Intl.DateTimeFormat(locale, { weekday: 'long' });\n function getFullWeekdayNames() {\n return Array.from({ length: 7 }, (_, i) => {\n const weekday = (i + firstDay) % 7;\n return fullWeekdayFormat.format(new Date(2020, 9, weekday + 4));\n });\n }\n\n let weekdayNames = undefined;\n let fullWeekdayNames = undefined;\n\n const header = document.createElement('div');\n header.classList.add('hbox', 'gap-2', 'items-center', 'justify-between');\n const buttonClasses = [\n 'size-9',\n 'cursor-pointer',\n 'inline-flex',\n 'items-center',\n 'justify-center',\n 'rounded-control',\n 'text-sm',\n 'font-medium',\n 'transition-all',\n 'motion-reduce:transition-none',\n 'outline-none',\n 'focus-visible:border-ring',\n 'focus-visible:ring-ring/50',\n 'focus-visible:ring-[calc(var(--spacing)*0.75)]',\n 'bg-transparent',\n 'text-foreground',\n 'hover:bg-secondary',\n 'hover:text-secondary-foreground',\n 'active:bg-secondary-active',\n 'aria-pressed:bg-secondary-active',\n ];\n const previousYearBtn = document.createElement('button');\n previousYearBtn.classList.add(...buttonClasses);\n previousYearBtn.setAttribute('aria-label', el.hasAttribute('data-aria-prev-year') ? el.getAttribute('data-aria-prev-year') : 'previous year');\n previousYearBtn.setAttribute('type', 'button');\n previousYearBtn.appendChild(\n createSvg({\n icon: ChevronsLeft,\n classes: 'opacity-70 size-4 shrink-0 pointer-events-none',\n attrs: {\n 'aria-hidden': true,\n role: 'presentation',\n },\n })\n );\n previousYearBtn.addEventListener('click', () => {\n date.setFullYear(date.getFullYear() - 1);\n render();\n });\n header.appendChild(previousYearBtn);\n\n const previousMonthBtn = document.createElement('button');\n previousMonthBtn.classList.add(...buttonClasses);\n previousMonthBtn.setAttribute('aria-label', el.hasAttribute('data-aria-prev-month') ? el.getAttribute('data-aria-prev-month') : 'previous month');\n previousMonthBtn.setAttribute('type', 'button');\n previousMonthBtn.appendChild(\n createSvg({\n icon: ChevronLeft,\n classes: 'opacity-70 size-4 shrink-0 pointer-events-none',\n attrs: {\n 'aria-hidden': true,\n role: 'presentation',\n },\n })\n );\n previousMonthBtn.addEventListener('click', () => {\n date.setMonth(date.getMonth() - 1);\n render();\n });\n header.appendChild(previousMonthBtn);\n\n const headerLabel = document.createElement('h2');\n headerLabel.classList.add('min-w-[8rem]', 'text-center');\n headerLabel.setAttribute('id', `hdpl${uuidv4()}`);\n headerLabel.setAttribute('aria-live', 'polite');\n header.appendChild(headerLabel);\n\n const nextMonthBtn = document.createElement('button');\n nextMonthBtn.classList.add(...buttonClasses);\n nextMonthBtn.setAttribute('aria-label', el.hasAttribute('data-aria-next-month') ? el.getAttribute('data-aria-next-month') : 'next month');\n nextMonthBtn.setAttribute('type', 'button');\n nextMonthBtn.appendChild(\n createSvg({\n icon: ChevronRight,\n classes: 'opacity-70 size-4 shrink-0 pointer-events-none',\n attrs: {\n 'aria-hidden': true,\n role: 'presentation',\n },\n })\n );\n nextMonthBtn.addEventListener('click', () => {\n date.setMonth(date.getMonth() + 1);\n render();\n });\n header.appendChild(nextMonthBtn);\n\n const nextYearBtn = document.createElement('button');\n nextYearBtn.classList.add(...buttonClasses);\n nextYearBtn.setAttribute('aria-label', el.hasAttribute('data-aria-next-year') ? el.getAttribute('data-aria-next-year') : 'next year');\n nextYearBtn.setAttribute('type', 'button');\n nextYearBtn.appendChild(\n createSvg({\n icon: ChevronsRight,\n classes: 'opacity-70 size-4 shrink-0 pointer-events-none',\n attrs: {\n 'aria-hidden': true,\n role: 'presentation',\n },\n })\n );\n nextYearBtn.addEventListener('click', () => {\n date.setFullYear(date.getFullYear() + 1);\n render();\n });\n header.appendChild(nextYearBtn);\n el.appendChild(header);\n\n const datesTable = document.createElement('table');\n if (datepicker) datesTable.setAttribute('aria-labelledby', `hdpl${uuidv4()}`);\n datesTable.classList.add('table-fixed', 'border-separate', 'border-spacing-1');\n if (!datepicker) datesTable.classList.add('w-full');\n const thead = document.createElement('thead');\n datesTable.appendChild(thead);\n const theadRow = document.createElement('tr');\n thead.appendChild(theadRow);\n const tbody = document.createElement('tbody');\n datesTable.appendChild(tbody);\n\n // Weekday headers with ARIA columnheader\n function setWeekdayHeaders() {\n theadRow.replaceChildren();\n for (let i = 0; i < 7; i++) {\n const th = document.createElement('th');\n th.setAttribute('scope', 'col');\n th.setAttribute('abbr', weekdayNames[i]);\n th.setAttribute('aria-label', fullWeekdayNames[i]);\n th.classList.add('text-sm', 'font-medium');\n th.innerText = weekdayNames[i];\n theadRow.appendChild(th);\n }\n }\n\n el.appendChild(datesTable);\n\n const dayCells = [];\n\n for (let r = 0; r < 6; r++) {\n const row = document.createElement('tr');\n for (let d = 0; d < 7; d++) {\n const cell = document.createElement('td');\n cell.classList.add(\n 'cursor-pointer',\n 'text-sm',\n 'align-middle',\n 'text-center',\n 'size-8',\n 'rounded-control',\n 'outline-none',\n 'duration-100',\n 'transition-all',\n 'motion-reduce:transition-none',\n 'hover:bg-secondary-hover',\n 'hover:text-secondary-foreground',\n 'focus:bg-secondary-hover',\n 'focus:text-secondary-foreground',\n 'aria-[current=date]:bg-secondary',\n 'hover:aria-[current=date]:bg-secondary-hover',\n 'aria-[current=date]:text-secondary-foreground',\n 'aria-selected:!bg-primary-active',\n 'aria-selected:hover:!bg-primary-hover',\n 'aria-selected:focus:!bg-primary-hover',\n 'aria-selected:!text-primary-foreground',\n 'aria-disabled:pointer-events-none',\n 'aria-disabled:opacity-50'\n );\n cell.setAttribute('tabindex', '-1');\n dayCells.push(row.appendChild(cell));\n }\n tbody.appendChild(row);\n }\n\n function render(fromNav = false) {\n const year = date.getFullYear();\n const month = date.getMonth();\n\n const start = new Date(year, month, 1);\n const end = new Date(year, month + 1, 0);\n const days = end.getDate();\n\n const prevEndDay = new Date(year, month, 1);\n prevEndDay.setDate(prevEndDay.getDate() - 1);\n\n let lastPrevMonthDay = prevEndDay.getDate();\n let startDay = (start.getDay() - firstDay + 7) % 7;\n\n headerLabel.innerText = new Intl.DateTimeFormat(locale, {\n month: 'long',\n year: 'numeric',\n }).format(start);\n\n let cellIndex = 0;\n\n function updateDateCell(cell, dayNum) {\n cell.setAttribute('tabindex', '-1');\n cell.setAttribute('aria-disabled', 'true');\n cell.removeAttribute('data-day');\n cell.removeAttribute('data-month');\n cell.removeAttribute('data-year');\n cell.removeAttribute('aria-selected');\n cell.removeAttribute('aria-current');\n if (dayNum < 10) {\n cell.innerText = `0${dayNum}`;\n } else {\n cell.innerText = dayNum;\n }\n cell.removeEventListener('click', dayClick);\n }\n\n // Previous month days at the beginning\n for (let d = startDay - 1; d >= 0; d--) {\n updateDateCell(dayCells[d], lastPrevMonthDay);\n lastPrevMonthDay--;\n cellIndex++;\n }\n\n // Active month days\n for (let d = 1; d <= days; d++) {\n const curr = new Date(year, month, d);\n const focusable = focusedDay && sameDay(focusedDay, curr);\n dayCells[cellIndex].setAttribute('data-day', d);\n dayCells[cellIndex].setAttribute('data-month', month);\n dayCells[cellIndex].setAttribute('data-year', year);\n dayCells[cellIndex].setAttribute('tabindex', focusable ? '0' : '-1');\n dayCells[cellIndex].setAttribute('aria-selected', selected && sameDay(selected, curr) ? 'true' : 'false');\n dayCells[cellIndex].setAttribute('aria-disabled', isDisabled(curr));\n if (fromNav && focusable) {\n dayCells[cellIndex].focus();\n }\n if (sameDay(new Date(), curr)) {\n dayCells[cellIndex].setAttribute('aria-current', 'date');\n if (focusedDay === undefined) dayCells[cellIndex].setAttribute('tabindex', '0');\n } else dayCells[cellIndex].removeAttribute('aria-current');\n if (d < 10) {\n dayCells[cellIndex].innerText = `0${d}`;\n } else {\n dayCells[cellIndex].innerText = d;\n }\n dayCells[cellIndex].addEventListener('click', dayClick);\n cellIndex++;\n }\n\n // Next month days at the end\n let lastDayNum = 1;\n for (cellIndex; cellIndex < 42; cellIndex++) {\n updateDateCell(dayCells[cellIndex], lastDayNum);\n lastDayNum++;\n }\n }\n\n function focusDay() {\n if (selected) {\n for (let d = 0; d < dayCells.length; d++) {\n if (dayCells[d].getAttribute('aria-selected') === 'true') {\n dayCells[d].focus();\n return;\n }\n }\n }\n for (let d = 0; d < dayCells.length; d++) {\n if (dayCells[d].hasAttribute('aria-current')) {\n dayCells[d].focus();\n return;\n }\n }\n }\n\n function onKeyDown(event) {\n event.stopPropagation();\n if (!focusedDay) focusedDay = selected || new Date(date.getFullYear(), date.getMonth(), 1);\n let newDay = new Date(focusedDay);\n\n switch (event.key) {\n case 'Left':\n case 'ArrowLeft':\n event.preventDefault();\n newDay.setDate(newDay.getDate() - 1);\n break;\n case 'Right':\n case 'ArrowRight':\n event.preventDefault();\n newDay.setDate(newDay.getDate() + 1);\n break;\n case 'Up':\n case 'ArrowUp':\n event.preventDefault();\n newDay.setDate(newDay.getDate() - 7);\n break;\n case 'Down':\n case 'ArrowDown':\n event.preventDefault();\n newDay.setDate(newDay.getDate() + 7);\n break;\n case 'Home':\n event.preventDefault();\n newDay.setDate(1);\n break;\n case 'End':\n event.preventDefault();\n newDay.setDate(new Date(newDay.getFullYear(), newDay.getMonth() + 1, 0).getDate());\n break;\n case 'PageUp':\n event.preventDefault();\n newDay.setMonth(newDay.getMonth() - 1);\n break;\n case 'PageDown':\n event.preventDefault();\n newDay.setMonth(newDay.getMonth() + 1);\n break;\n case 'Escape':\n event.preventDefault();\n if (datepicker) datepicker._h_datepicker.state.expanded = false;\n return;\n\n case 'Enter':\n case ' ':\n event.preventDefault();\n if (!isDisabled(focusedDay)) {\n selected = new Date(focusedDay);\n modelChange();\n render(true);\n }\n return;\n\n default:\n return;\n }\n\n // If the user has navigated to a date from a previous or next month\n if (newDay.getMonth() !== date.getMonth()) {\n date = newDay;\n focusedDay = newDay;\n render(true);\n return;\n }\n\n focusedDay = newDay;\n render(true);\n }\n\n el.addEventListener('keydown', onKeyDown);\n\n if (expression) {\n const getConfig = evaluateLater(expression);\n\n effect(() => {\n getConfig((config) => {\n if (config.locale) locale = config.locale;\n if (config.firstDay) firstDay = config.firstDay;\n if (config.options) formatter = new Intl.DateTimeFormat(locale, config.options);\n else formatter = new Intl.DateTimeFormat(locale);\n modelAsIso = config.modelAsIso === false;\n if (config.min) minDate = new Date(config.min);\n if (config.max) maxDate = new Date(config.max);\n weekdayNames = getWeekdayNames();\n fullWeekdayNames = getFullWeekdayNames();\n setWeekdayHeaders();\n checkForModel();\n render();\n });\n });\n } else {\n formatter = new Intl.DateTimeFormat();\n weekdayNames = getWeekdayNames();\n fullWeekdayNames = getFullWeekdayNames();\n setWeekdayHeaders();\n checkForModel();\n render();\n }\n\n let autoUpdateCleanup;\n\n function updatePosition() {\n computePosition(datepicker, el, {\n placement: el.getAttribute('data-align') || 'bottom-start',\n middleware: [offset(4), flip(), shift({ padding: 4 })],\n }).then(({ x, y }) => {\n Object.assign(el.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n el.classList.remove('scale-95', 'opacity-0');\n });\n }\n\n if (datepicker) {\n effect(() => {\n if (datepicker._h_datepicker.state.expanded) {\n el.classList.remove('hidden');\n autoUpdateCleanup = autoUpdate(datepicker, el, updatePosition);\n Alpine.nextTick(() => {\n focusDay();\n });\n } else {\n if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) {\n el.classList.add('hidden', 'scale-95', 'opacity-0');\n Object.assign(el.style, {\n left: '0px',\n top: '0px',\n });\n } else {\n el.classList.add('scale-95', 'opacity-0');\n }\n if (autoUpdateCleanup) autoUpdateCleanup();\n }\n });\n }\n\n function onTransitionEnd(event) {\n if (event.target === el && event.target.classList.contains('opacity-0')) {\n el.classList.add('hidden');\n Object.assign(el.style, {\n left: '0px',\n top: '0px',\n });\n }\n }\n\n if (datepicker) {\n el.addEventListener('transitionend', onTransitionEnd);\n }\n\n if (Object.prototype.hasOwnProperty.call(el, '_x_model')) {\n const modelExpression = el.getAttribute('x-model');\n\n const evaluateModel = evaluateLater(modelExpression);\n\n effect(() => {\n evaluateModel((value) => {\n if ((!selected && value) || (value && selected.getTime() !== new Date(value).getTime())) {\n setFromModel();\n render();\n } else if (!value) {\n if (datepicker) datepicker._h_datepicker.input.value = '';\n selected = undefined;\n render();\n }\n });\n });\n }\n\n cleanup(() => {\n el.removeEventListener('keydown', onKeyDown);\n for (let d = 0; d < dayCells.length; d++) {\n dayCells[d].removeEventListener('click', dayClick);\n }\n if (datepicker) {\n datepicker._h_datepicker.input.removeEventListener('change', onInputChange);\n el.removeEventListener('transitionend', onTransitionEnd);\n }\n });\n });\n}\n", "export default function (Alpine) {\n Alpine.directive('h-card', (el) => {\n el.classList.add('bg-card', 'text-card-foreground', 'vbox', 'gap-4', 'rounded-xl', 'border', 'py-6', 'shadow-sm');\n el.setAttribute('data-slot', 'card');\n });\n\n Alpine.directive('h-card-header', (el) => {\n el.classList.add('@container/card-header', 'grid', 'auto-rows-min', 'grid-rows-[auto_auto]', 'items-start', 'gap-2', 'px-6', 'has-data-[slot=card-action]:grid-cols-[1fr_auto]', '[.border-b]:pb-6');\n el.setAttribute('data-slot', 'card-header');\n });\n\n Alpine.directive('h-card-title', (el) => {\n el.classList.add('leading-none', 'font-semibold');\n el.setAttribute('data-slot', 'card-title');\n });\n\n Alpine.directive('h-card-description', (el) => {\n el.classList.add('text-muted-foreground', 'text-sm');\n el.setAttribute('data-slot', 'card-description');\n });\n\n Alpine.directive('h-card-action', (el) => {\n el.classList.add('col-start-2', 'row-span-2', 'row-start-1', 'self-start', 'justify-self-end');\n el.setAttribute('data-slot', 'card-action');\n });\n\n Alpine.directive('h-card-content', (el) => {\n el.classList.add('px-6');\n el.setAttribute('data-slot', 'card-content');\n });\n\n Alpine.directive('h-card-footer', (el) => {\n el.classList.add('flex', 'items-center', 'px-6', '[.border-t]:pt-6');\n el.setAttribute('data-slot', 'card-footer');\n });\n}\n", "import { Check, createSvg } from './../common/icons';\n\nexport default function (Alpine) {\n Alpine.directive('h-checkbox', (el) => {\n el.classList.add(\n '[&>input]:absolute',\n '[&>input]:appearance-none',\n '[&>input]:bg-transparent',\n '[&>input]:border-0',\n '[&>input]:cursor-pointer',\n '[&>input]:focus-visible:border-ring',\n '[&>input]:focus-visible:ring-[calc(var(--spacing)*0.75)]',\n '[&>input]:focus-visible:ring-ring/50',\n '[&>input]:left-0',\n '[&>input]:outline-none',\n '[&>input]:rounded-[0.438rem]',\n '[&>input]:size-full',\n '[&>input]:top-0',\n 'aspect-square',\n 'bg-input-inner',\n 'border',\n 'border-input',\n 'dark:has-[input[aria-invalid=true]]:ring-negative/40',\n 'dark:has-[input:invalid]:ring-negative/40',\n 'duration-200',\n 'has-[input[aria-invalid=true]]:border-negative',\n 'has-[input[aria-invalid=true]]:ring-negative/20',\n 'has-[input:checked]:bg-primary',\n 'has-[input:checked]:border-primary',\n 'has-[input:disabled]:cursor-not-allowed',\n 'has-[input:disabled]:opacity-50',\n 'has-[input:invalid]:border-negative',\n 'has-[input:invalid]:ring-negative/20',\n 'relative',\n 'rounded-[0.438rem]',\n 'shadow-input',\n 'shrink-0',\n 'size-5',\n 'transition-colors',\n 'motion-reduce:transition-none'\n );\n el.setAttribute('tabindex', '-1');\n el.setAttribute('data-slot', 'checkbox');\n\n const check = createSvg({ icon: Check, classes: 'size-full [input:checked~&]:visible invisible fill-primary-foreground', attrs: { 'aria-hidden': true, role: 'presentation' } });\n el.appendChild(check);\n });\n}\n", "import { Close, createSvg } from './../common/icons';\nexport default function (Alpine) {\n Alpine.directive('h-chip', (el, { original }, { cleanup }) => {\n if (el.tagName !== 'BUTTON') {\n throw new Error(`${original} must be a button element`);\n }\n el._h_chip = Alpine.reactive({\n variant: 'default',\n });\n el.classList.add(\n 'cursor-pointer',\n 'inline-flex',\n 'items-center',\n 'justify-center',\n 'whitespace-nowrap',\n 'rounded-full',\n 'text-sm',\n 'leading-none',\n 'transform-gpu',\n 'overflow-hidden',\n 'transition-all',\n 'duration-100',\n 'motion-reduce:transition-none',\n 'disabled:pointer-events-none',\n 'disabled:opacity-50',\n '[&_svg]:pointer-events-none',\n \"[&_svg:not([class*='size-'])]:size-4\",\n 'shrink-0',\n '[&_svg]:shrink-0',\n 'aria-expanded:outline-[calc(var(--spacing)*0.75)]',\n 'aria-expanded:outline',\n 'focus:outline-[calc(var(--spacing)*0.75)]',\n 'focus:outline',\n 'focus-visible:outline-[calc(var(--spacing)*0.75)]',\n 'focus-visible:outline',\n 'h-7',\n 'gap-1.5',\n 'px-2.5',\n 'has-[>svg]:pl-1.5',\n 'has-[>[data-slot=chip-close]]:pr-0',\n 'has-[>[data-slot=spinner]]:px-2',\n 'text-secondary-foreground',\n 'border'\n );\n if (!el.hasAttribute('type')) {\n el.setAttribute('type', 'button');\n }\n el.setAttribute('data-slot', 'chip');\n const variants = {\n default: ['bg-secondary', '[&:hover:not(:has([data-slot=chip-close]:hover)):not(:active)]:bg-secondary-hover', '[&:active:not(:has([data-slot=chip-close]:active))]:bg-secondary-active', 'outline-ring/50'],\n primary: [\n 'bg-primary/10',\n 'border-primary/50',\n '[&>svg]:text-primary',\n '[&:hover:not(:has([data-slot=chip-close]:hover)):not(:active)]:bg-primary/15',\n '[&:active:not(:has([data-slot=chip-close]:active))]:bg-primary/20',\n 'outline-primary/50',\n ],\n positive: [\n 'bg-positive/10',\n 'border-positive/50',\n '[&>svg]:text-positive',\n '[&:hover:not(:has([data-slot=chip-close]:hover)):not(:active)]:bg-positive/15',\n '[&:active:not(:has([data-slot=chip-close]:active))]:bg-positive/20',\n 'outline-positive/50',\n ],\n negative: [\n 'bg-negative/10',\n 'border-negative/50',\n '[&>svg]:text-negative',\n '[&:hover:not(:has([data-slot=chip-close]:hover)):not(:active)]:bg-negative/15',\n '[&:active:not(:has([data-slot=chip-close]:active))]:bg-negative/20',\n 'outline-negative/50',\n ],\n warning: [\n 'bg-warning/10',\n 'border-warning/50',\n '[&>svg]:text-warning',\n '[&:hover:not(:has([data-slot=chip-close]:hover)):not(:active)]:bg-warning/15',\n '[&:active:not(:has([data-slot=chip-close]:active))]:bg-warning/20',\n 'outline-warning/50',\n ],\n information: [\n 'bg-information/10',\n 'border-information/50',\n '[&>svg]:text-information',\n '[&:hover:not(:has([data-slot=chip-close]:hover)):not(:active)]:bg-information/15',\n '[&:active:not(:has([data-slot=chip-close]:active))]:bg-information/20',\n 'outline-information/50',\n ],\n outline: [\n 'bg-background',\n '[&>svg]:text-secondary-foreground',\n '[&:hover:not(:has([data-slot=chip-close]:hover)):not(:active)]:bg-secondary-hover',\n '[&:active:not(:has([data-slot=chip-close]:active))]:bg-secondary-active',\n 'outline-ring/50',\n ],\n };\n\n function setVariant(variant) {\n el._h_chip.variant = variant;\n for (const [_, value] of Object.entries(variants)) {\n el.classList.remove(...value);\n }\n if (Object.prototype.hasOwnProperty.call(variants, variant)) el.classList.add(...variants[variant]);\n }\n\n setVariant(el.getAttribute('data-variant') ?? 'default');\n\n const observer = new MutationObserver(() => {\n setVariant(el.getAttribute('data-variant') ?? 'default');\n });\n\n observer.observe(el, { attributes: true, attributeFilter: ['data-variant'] });\n\n cleanup(() => {\n observer.disconnect();\n });\n });\n\n Alpine.directive('h-chip-close', (el, { original }, { effect, cleanup }) => {\n if (el.tagName === 'BUTTON') {\n throw new Error(`${original} must NOT be a button element`);\n }\n const chip = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_chip'));\n el.classList.add(\n 'cursor-pointer',\n 'inline-flex',\n 'items-center',\n 'justify-center',\n 'pl-1',\n 'pr-1.5',\n 'h-full',\n 'text-sm',\n 'transition-all',\n 'duration-100',\n 'motion-reduce:transition-none',\n 'disabled:pointer-events-none',\n 'disabled:opacity-50',\n 'bg-transparent',\n 'text-secondary-foreground',\n 'fill-secondary-foreground',\n 'rounded-r-full',\n 'border-l',\n 'border-transparent',\n 'outline-none',\n 'focus-visible:inset-ring-[calc(var(--spacing)*0.75)]',\n 'focus-visible:inset-ring',\n 'hover:[[data-variant]>&]:border-inherit',\n 'active:border-inherit',\n 'aria-pressed:border-inherit'\n );\n el.setAttribute('data-slot', 'chip-close');\n el.setAttribute('tabindex', '0');\n el.setAttribute('role', 'button');\n el.appendChild(\n createSvg({\n icon: Close,\n classes: 'size-3.5 shrink-0 pointer-events-none',\n attrs: {\n 'aria-hidden': true,\n role: 'presentation',\n },\n })\n );\n\n if (!el.hasAttribute('aria-labelledby') && !el.hasAttribute('aria-label')) {\n console.error(`${original}: Must have an \"aria-label\" or \"aria-labelledby\" attribute`, el);\n }\n\n const variants = {\n default: ['hover:border-foreground/20', 'hover:bg-secondary-hover', 'active:bg-secondary-active', 'focus-visible:inset-ring-ring/50'],\n primary: ['hover:bg-primary/10', 'active:bg-primary/15', 'aria-pressed:bg-primary/15', 'focus-visible:inset-ring-primary/50'],\n positive: ['hover:bg-positive/10', 'active:bg-positive/15', 'aria-pressed:bg-positive/15', 'focus-visible:inset-ring-positive/50'],\n negative: ['hover:bg-negative/10', 'active:bg-negative/15', 'aria-pressed:bg-negative/15', 'focus-visible:inset-ring-negative/50'],\n warning: ['hover:bg-warning/10', 'active:bg-warning/15', 'aria-pressed:bg-warning/15', 'focus-visible:inset-ring-warning/50'],\n information: ['hover:bg-information/10', 'active:bg-information/15', 'aria-pressed:bg-information/15', 'focus-visible:inset-ring-information/50'],\n outline: ['hover:bg-secondary-hover', 'active:bg-secondary-active', 'aria-pressed:bg-secondary-active', 'focus-visible:inset-ring-ring/50'],\n };\n\n effect(() => {\n for (const [_, value] of Object.entries(variants)) {\n el.classList.remove(...value);\n }\n if (Object.prototype.hasOwnProperty.call(variants, chip._h_chip.variant)) {\n el.classList.add(...variants[chip._h_chip.variant]);\n }\n });\n\n const stopPropagation = (event) => {\n // Do not stop propagation when the chip has an expanded popover or a menu attached to it.\n // This allows for confirmation dialogs to show, without the popover/menu staying expanded.\n if (chip.getAttribute('aria-expanded') !== 'true') event.stopPropagation();\n };\n el.addEventListener('click', stopPropagation);\n\n cleanup(() => {\n el.removeEventListener('click', stopPropagation);\n });\n });\n}\n", "function setSize(el, size) {\n if (size === 'sm') {\n el.classList.add('h-6.5');\n el.classList.remove('h-9');\n } else {\n el.classList.add('h-9');\n el.classList.remove('h-6.5');\n }\n}\n\nexport function sizeObserver(el) {\n const observer = new MutationObserver(() => {\n setSize(el, el.getAttribute('data-size'));\n });\n\n setSize(el, el.getAttribute('data-size'));\n\n observer.observe(el, { attributes: true, attributeFilter: ['data-size'] });\n return observer;\n}\n", "import uuidv4 from '../utils/uuid';\nimport { Calendar, createSvg } from './../common/icons';\nimport { sizeObserver } from './../common/input-size';\nexport default function (Alpine) {\n Alpine.directive('h-date-picker', (el, { original, modifiers }, { Alpine, cleanup }) => {\n const state = Alpine.reactive({\n expanded: false,\n });\n el._h_datepicker = {\n id: undefined,\n controls: `hdpc${uuidv4()}`,\n input: undefined,\n state,\n inTable: modifiers.includes('table'),\n };\n el._h_datepicker.input = el.querySelector('input');\n if (!el._h_datepicker.input || el._h_datepicker.input.tagName !== 'INPUT') {\n throw new Error(`${original} must contain an input`);\n } else if (el._h_datepicker.input.hasAttribute('id')) {\n el._h_datepicker.id = el._h_datepicker.input.getAttribute('id');\n } else {\n const id = `hdp${uuidv4()}`;\n el._h_datepicker.input.setAttribute('id', id);\n el._h_datepicker.id = id;\n }\n\n el.classList.add(\n 'overflow-hidden',\n 'border-input',\n 'flex',\n 'items-center',\n 'transition-colors',\n 'transition-shadow',\n 'motion-reduce:transition-none',\n 'duration-200',\n 'outline-none',\n 'pl-3',\n 'min-w-0',\n 'has-[input:disabled]:pointer-events-none',\n 'has-[input:disabled]:cursor-not-allowed',\n 'has-[input:disabled]:opacity-50'\n );\n if (el._h_datepicker.inTable) {\n el.classList.add(\n 'size-full',\n 'h-10',\n 'has-[input:focus-visible]:inset-ring-ring/50',\n 'has-[input:focus-visible]:inset-ring-2',\n 'has-[input[aria-invalid=true]]:inset-ring-negative/20',\n 'dark:has-[input[aria-invalid=true]]:inset-ring-negative/40',\n 'has-[input:invalid]:!inset-ring-negative/20',\n 'dark:has-[input:invalid]:!inset-ring-negative/40'\n );\n el.setAttribute('data-slot', 'cell-input-date');\n } else {\n el.classList.add(\n 'w-full',\n 'rounded-control',\n 'border',\n 'bg-input-inner',\n 'shadow-input',\n 'has-[input:focus-visible]:border-ring',\n 'has-[input:focus-visible]:ring-ring/50',\n 'has-[input:focus-visible]:ring-[calc(var(--spacing)*0.75)]',\n 'has-[input[aria-invalid=true]]:ring-negative/20',\n 'has-[input[aria-invalid=true]]:border-negative',\n 'dark:has-[input[aria-invalid=true]]:ring-negative/40',\n 'has-[input:invalid]:ring-negative/20',\n 'has-[input:invalid]:border-negative',\n 'dark:has-[input:invalid]:ring-negative/40'\n );\n el.setAttribute('data-slot', 'date-picker');\n }\n\n el._h_datepicker.input.classList.add(\n 'bg-transparent',\n 'outline-none',\n 'size-full',\n 'pr-1',\n 'border-r',\n 'border-input',\n 'aria-invalid:border-negative',\n 'invalid:border-negative',\n 'focus-visible:ring-0',\n 'disabled:pointer-events-none',\n 'disabled:cursor-not-allowed',\n 'disabled:opacity-50',\n 'md:text-sm',\n 'text-base',\n 'truncate'\n );\n el._h_datepicker.input.setAttribute('aria-autocomplete', 'none');\n el._h_datepicker.input.setAttribute('type', 'text');\n\n const observer = sizeObserver(el);\n\n cleanup(() => {\n observer.disconnect();\n });\n });\n\n Alpine.directive('h-date-picker-trigger', (el, { original }, { effect, cleanup, Alpine }) => {\n if (el.tagName !== 'BUTTON') {\n throw new Error(`${original} must be a button`);\n }\n if (!el.hasAttribute('aria-labelledby') && !el.hasAttribute('aria-label')) {\n throw new Error(`${original}: must have an \"aria-label\" or \"aria-labelledby\" attribute`);\n }\n const datepicker = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_datepicker'));\n if (!datepicker) {\n throw new Error(`${original} must be inside an date-picker element`);\n }\n el.classList.add(\n 'cursor-pointer',\n 'inline-flex',\n 'items-center',\n 'justify-center',\n 'h-full',\n 'aspect-square',\n 'bg-transparent',\n 'hover:bg-secondary',\n 'hover:text-secondary-foreground',\n 'active:bg-secondary-active',\n 'active:text-secondary-foreground',\n 'outline-none'\n );\n if (datepicker._h_datepicker.inTable) {\n el.classList.add(\n 'focus-visible:inset-ring-ring/50',\n 'focus-visible:inset-ring-2',\n '[input[aria-invalid=true]~&]:inset-ring-negative/20',\n 'dark:[input[aria-invalid=true]~&]:inset-ring-negative/40',\n '[input:invalid~&]:!inset-ring-negative/20',\n 'dark:[input:invalid~&]:!inset-ring-negative/40'\n );\n } else {\n el.classList.add(\n 'focus-visible:border-ring',\n 'focus-visible:ring-ring/50',\n 'focus-visible:ring-[calc(var(--spacing)*0.75)]',\n '[input[aria-invalid=true]~&]:ring-negative/20',\n '[input[aria-invalid=true]~&]:border-negative',\n 'dark:[input[aria-invalid=true]~&]:ring-negative/40',\n '[input:invalid~&]:ring-negative/20',\n '[input:invalid~&]:border-negative',\n 'dark:[input:invalid~&]:ring-negative/40'\n );\n }\n el.setAttribute('aria-controls', datepicker._h_datepicker.controls);\n el.setAttribute('aria-expanded', 'false');\n el.setAttribute('aria-haspopup', 'dialog');\n el.setAttribute('type', 'button');\n el.setAttribute('data-slot', 'date-picker-trigger');\n\n el.appendChild(\n createSvg({\n icon: Calendar,\n classes: 'opacity-70 text-inherit size-4',\n attrs: {\n 'aria-hidden': true,\n role: 'presentation',\n },\n })\n );\n\n effect(() => {\n el.setAttribute('data-state', datepicker._h_datepicker.state.expanded ? 'open' : 'closed');\n el.setAttribute('aria-expanded', datepicker._h_datepicker.state.expanded);\n });\n\n const close = () => {\n datepicker._h_datepicker.state.expanded = false;\n };\n\n const handler = () => {\n datepicker._h_datepicker.state.expanded = !datepicker._h_datepicker.state.expanded;\n Alpine.nextTick(() => {\n if (datepicker._h_datepicker.state.expanded) {\n top.addEventListener('click', close, { once: true });\n } else {\n top.removeEventListener('click', close);\n }\n });\n };\n\n el.addEventListener('click', handler);\n\n cleanup(() => {\n el.removeEventListener('click', handler);\n top.removeEventListener('click', close);\n });\n });\n}\n", "import uuidv4 from '../utils/uuid';\nexport default function (Alpine) {\n Alpine.directive('h-dialog-overlay', (el, _, { cleanup }) => {\n el.classList.add('hidden', 'fixed', 'inset-0', 'z-50', 'bg-black/60', 'transition-[opacity,scale]', 'motion-reduce:transition-none', 'duration-200', 'ease-out', 'opacity-0', '*:scale-95');\n el.setAttribute('tabindex', '-1');\n el.setAttribute('data-slot', 'dialog-overlay');\n\n const observer = new MutationObserver(() => {\n if (el.getAttribute('data-open') === 'true') {\n if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) {\n el.classList.remove('hidden', '*:scale-95', 'opacity-0');\n } else {\n el.classList.remove('hidden');\n Alpine.nextTick(() => {\n // Reading 'offsetHeight' forces the browser to apply pending styles first.\n // This guarantees that the animation will always happen.\n el.offsetHeight;\n el.classList.remove('*:scale-95', 'opacity-0');\n });\n }\n const inputs = el.getElementsByTagName('INPUT');\n if (inputs.length) {\n for (let i = 0; i < inputs.length; i++) {\n if (inputs[i].autofocus) {\n inputs[i].focus();\n return;\n }\n }\n inputs[0].focus();\n return;\n } else {\n const textareas = el.getElementsByTagName('TEXTAREA');\n if (textareas.length) {\n for (let i = 0; i < textareas.length; i++) {\n if (textareas[i].autofocus) {\n textareas[i].focus();\n return;\n }\n }\n textareas[0].focus();\n return;\n }\n }\n const buttons = el.getElementsByTagName('BUTTON');\n if (buttons.length) {\n buttons[0].focus();\n }\n } else {\n if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) {\n el.classList.add('hidden', '*:scale-95', 'opacity-0');\n } else {\n el.classList.add('*:scale-95', 'opacity-0');\n }\n }\n });\n\n function onTransitionEnd(event) {\n if (event.target === el && event.target.classList.contains('opacity-0')) {\n el.classList.add('hidden');\n }\n }\n\n el.addEventListener('transitionend', onTransitionEnd);\n\n observer.observe(el, { attributes: true, attributeFilter: ['data-open'] });\n\n cleanup(() => {\n observer.disconnect();\n el.removeEventListener('transitionend', onTransitionEnd);\n });\n });\n\n Alpine.directive('h-dialog', (el) => {\n el.classList.add(\n 'relative',\n 'bg-background',\n 'fixed',\n 'top-[50%]',\n 'left-[50%]',\n 'z-50',\n 'flex',\n 'flex-col',\n 'w-full',\n 'max-w-[calc(100%-2rem)]',\n '-translate-x-1/2',\n '-translate-y-1/2',\n 'gap-4',\n 'rounded-lg',\n 'border',\n 'p-4',\n 'shadow-xl',\n 'sm:max-w-lg',\n 'outline-none',\n 'transition-[opacity,scale]',\n 'motion-reduce:transition-none',\n 'duration-200',\n 'ease-out'\n );\n el.setAttribute('role', 'dialog');\n el.setAttribute('data-slot', 'dialog');\n });\n\n Alpine.directive('h-dialog-header', (el) => {\n el.classList.add('grid', 'grid-cols-[1fr_auto]', 'place-items-start', 'gap-2', 'text-center', 'sm:text-left');\n el.setAttribute('data-slot', 'dialog-header');\n });\n\n Alpine.directive('h-dialog-title', (el, _, { Alpine }) => {\n el.classList.add('order-1', 'text-lg', 'leading-none', 'font-semibold');\n el.setAttribute('data-slot', 'dialog-title');\n const dialog = Alpine.findClosest(el.parentElement, (parent) => parent.getAttribute('role') === 'dialog');\n if (dialog && !dialog.hasAttribute('aria-labelledby') && !dialog.hasAttribute('aria-label')) {\n if (!el.hasAttribute('id')) {\n const id = `dht${uuidv4()}`;\n el.setAttribute('id', id);\n }\n dialog.setAttribute('aria-labelledby', el.getAttribute('id'));\n }\n });\n\n Alpine.directive('h-dialog-close', (el) => {\n el.classList.add(\n 'order-2',\n 'ring-offset-background',\n 'focus:ring-ring',\n 'rounded-xs',\n 'opacity-70',\n 'transition-opacity',\n 'motion-reduce:transition-none',\n 'hover:opacity-100',\n 'focus:ring-2',\n 'focus:ring-offset-2',\n 'focus:outline-hidden',\n 'disabled:pointer-events-none',\n '[&_svg]:pointer-events-none',\n '[&_svg]:shrink-0',\n \"[&_svg:not([class*='size-'])]:size-4\"\n );\n el.setAttribute('data-slot', 'dialog-close');\n el.setAttribute('type', 'button');\n });\n\n Alpine.directive('h-dialog-description', (el, _, { Alpine }) => {\n el.classList.add('order-3', 'col-span-full', 'text-muted-foreground', 'text-sm');\n el.setAttribute('data-slot', 'dialog-description');\n const dialog = Alpine.findClosest(el.parentElement, (parent) => parent.getAttribute('role') === 'dialog');\n if (dialog && !dialog.hasAttribute('aria-describedby') && !dialog.hasAttribute('aria-description')) {\n if (!el.hasAttribute('id')) {\n const id = `dhd${uuidv4()}`;\n el.setAttribute('id', id);\n }\n dialog.setAttribute('aria-describedby', el.getAttribute('id'));\n }\n });\n\n Alpine.directive('h-dialog-footer', (el) => {\n el.classList.add('flex', 'flex-col-reverse', 'gap-2', 'sm:flex-row', 'sm:justify-end');\n el.setAttribute('data-slot', 'dialog-footer');\n });\n}\n", "import { ChevronDown, createSvg } from '../common/icons';\nimport uuidv4 from '../utils/uuid';\nexport default function (Alpine) {\n Alpine.directive('h-exp-panel', (el) => {\n el.classList.add('vbox', 'h-full', 'group/exp', 'data-[floating=true]:gap-2', 'data-[floating=true]:overflow-visible');\n el.setAttribute('data-slot', 'exp-panel');\n });\n\n Alpine.directive('h-exp-panel-item', (el, { expression }, { evaluate, evaluateLater, effect, Alpine }) => {\n el.classList.add(\n 'flex',\n 'flex-col',\n 'overflow-hidden',\n 'transition-all',\n 'motion-reduce:transition-none',\n 'duration-300',\n 'ease-out',\n 'h-full',\n 'border-b',\n 'last:border-b-0',\n 'min-h-12',\n '[[data-size=md]_&]:min-h-10',\n '[[data-size=sm]_&]:min-h-8',\n '[[data-floating=true]_&]:border-b-0',\n '[[data-floating=true]_&]:overflow-visible'\n );\n el.setAttribute('data-slot', 'exp-panel-item');\n\n let itemId;\n if (el.hasAttribute('id')) {\n itemId = el.getAttribute('id');\n } else {\n itemId = `epi${uuidv4()}`;\n }\n\n function setExpanded(expanded) {\n if (expanded) {\n el.classList.add('flex-[1_1_0]');\n el.classList.remove('flex-[0_1_0]');\n } else {\n el.classList.add('flex-[0_1_0]');\n el.classList.remove('flex-[1_1_0]');\n }\n }\n\n el._h_expPanelItem = Alpine.reactive({\n controls: itemId,\n expanded: evaluate(expression || 'false'),\n });\n\n if (expression !== '' && expression !== undefined && expression !== null && expression !== 'true' && expression !== 'false') {\n const getIsExpanded = evaluateLater(expression);\n\n effect(() => {\n getIsExpanded((expanded) => {\n setExpanded(expanded);\n });\n });\n\n effect(() => {\n if (evaluate(expression) !== el._h_expPanelItem.expanded) {\n evaluate(`${expression} = ${el._h_expPanelItem.expanded}`);\n }\n });\n } else {\n effect(() => {\n setExpanded(el._h_expPanelItem.expanded);\n });\n }\n });\n\n Alpine.directive('h-exp-panel-trigger', (el, { original, expression }, { effect, evaluateLater, Alpine, cleanup }) => {\n if (el.tagName.length !== 2 && !el.tagName.startsWith('H')) {\n throw new Error(`${original} must be a header element`);\n }\n\n const expPanelItem = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_expPanelItem'));\n\n if (!expPanelItem) {\n throw new Error(`${original} must have an exp-panel-item parent element`);\n }\n\n el.classList.add(\n 'bg-object-header',\n 'border-b',\n '[[data-slot=exp-panel-item]:last-child>&]:not-has-[button[aria-expanded=true]]:group-has-[button[aria-expanded=true]]/exp:border-b-0',\n 'flex',\n 'h-12',\n 'min-h-12',\n 'px-4',\n 'text-object-header-foreground',\n '[[data-floating=true]_&]:border',\n '[[data-floating=true]_&]:!border-b',\n '[[data-floating=true]_&]:rounded-lg',\n '[[data-floating=true]_&]:shadow-xs',\n '[[data-size=md]_&]:h-10',\n '[[data-size=md]_&]:min-h-10',\n '[[data-size=md]_&]:px-3',\n '[[data-size=sm]_&]:h-8',\n '[[data-size=sm]_&]:min-h-8',\n '[[data-size=sm]_&]:px-2.5',\n '[[data-variant=transparent]_&]:bg-transparent',\n '[[data-variant=transparent]_&]:text-foreground'\n );\n el.setAttribute('tabIndex', '-1');\n\n const getLabel = evaluateLater(expression);\n\n const chevronDown = createSvg({\n icon: ChevronDown,\n classes: 'text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform motion-reduce:transition-none duration-200',\n attrs: {\n 'aria-hidden': true,\n role: 'presentation',\n },\n });\n\n const button = document.createElement('button');\n button.setAttribute('type', 'button');\n button.setAttribute('tabIndex', '0');\n button.setAttribute('data-slot', 'exp-panel-trigger');\n button.classList.add(\n 'cursor-pointer',\n 'focus-visible:border-ring',\n 'focus-visible:ring-ring/50',\n 'flex',\n 'flex-1',\n 'items-center',\n 'justify-between',\n 'gap-4',\n 'text-left',\n 'text-sm',\n 'font-medium',\n 'transition-all',\n 'motion-reduce:transition-none',\n 'outline-none',\n 'hover:underline',\n 'focus-visible:ring-[calc(var(--spacing)*0.75)]',\n 'disabled:pointer-events-none',\n 'disabled:opacity-50',\n '[&[aria-expanded=true]>svg]:rotate-180'\n );\n el.appendChild(button);\n\n effect(() => {\n getLabel((label) => {\n button.innerText = label;\n button.appendChild(chevronDown);\n });\n });\n\n button.setAttribute('id', expPanelItem._h_expPanelItem.id);\n button.setAttribute('aria-controls', expPanelItem._h_expPanelItem.controls);\n\n const setAttributes = () => {\n button.setAttribute('aria-expanded', expPanelItem._h_expPanelItem.expanded);\n };\n\n const handler = () => {\n expPanelItem._h_expPanelItem.expanded = !expPanelItem._h_expPanelItem.expanded;\n setAttributes();\n };\n setAttributes();\n\n el.addEventListener('click', handler);\n\n cleanup(() => {\n el.removeEventListener('click', handler);\n });\n });\n\n Alpine.directive('h-exp-panel-content', (el) => {\n el.classList.add('flex-1', 'overflow-scroll');\n el.setAttribute('data-slot', 'exp-panel-content');\n });\n}\n", "export default function (Alpine) {\n Alpine.directive('h-fieldset', (el) => {\n el.classList.add('vbox', 'gap-6', 'has-[>[data-slot=checkbox-group]]:gap-3', 'has-[>[data-slot=radio-group]]:gap-3');\n el.setAttribute('data-slot', 'fieldset');\n });\n\n Alpine.directive('h-legend', (el, { modifiers }) => {\n el.classList.add('mb-3', 'font-medium', modifiers.includes('label') ? 'text-sm' : 'text-base');\n el.setAttribute('data-slot', 'legend');\n });\n\n Alpine.directive('h-field-group', (el) => {\n el.classList.add('group/field-group', '@container/field-group', 'vbox', 'w-full', 'gap-7', 'data-[slot=checkbox-group]:gap-3', '[&>[data-slot=field-group]]:gap-4');\n el.setAttribute('data-slot', 'field-group');\n });\n\n Alpine.directive('h-field', (el) => {\n el.classList.add('group/field', 'w-full', 'gap-3', 'has-[input:invalid]:text-negative', 'has-[textarea:invalid]:text-negative', 'has-[[aria-invalid=true]]:text-negative');\n switch (el.getAttribute('data-orientation')) {\n case 'horizontal':\n el.classList.add('hbox', 'items-center', '[&>[data-slot=field-label]]:flex-auto', 'has-[>[data-slot=field-content]]:items-start', 'has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px');\n break;\n case 'responsive':\n el.classList.add(\n 'vbox',\n '[&>*]:w-full',\n '[&>.sr-only]:w-auto',\n '@md/field-group:flex-row',\n '@md/field-group:items-center',\n '@md/field-group:[&>*]:w-auto',\n '@md/field-group:[&>[data-slot=field-label]]:flex-auto',\n '@md/field-group:has-[>[data-slot=field-content]]:items-start',\n '@md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px'\n );\n break;\n default:\n el.classList.add('vbox', '[&>*]:w-full', '[&>.sr-only]:w-auto');\n }\n el.setAttribute('role', 'group');\n el.setAttribute('data-slot', 'field');\n });\n\n Alpine.directive('h-field-content', (el) => {\n el.classList.add('group/field-content', 'vbox', 'flex-1', 'gap-1.5', 'leading-snug');\n el.setAttribute('data-slot', 'field-content');\n });\n\n Alpine.directive('h-field-title', (el) => {\n el.classList.add('flex', 'w-fit', 'items-center', 'gap-2', 'text-sm', 'leading-snug', 'font-medium', 'group-data-[disabled=true]/field:opacity-50');\n el.setAttribute('data-slot', 'field-title');\n });\n\n Alpine.directive('h-field-description', (el) => {\n el.classList.add(\n 'text-muted-foreground',\n 'text-sm',\n 'leading-normal',\n 'font-normal',\n 'group-has-[[data-orientation=horizontal]]/field:text-balance',\n 'last:mt-0',\n 'nth-last-2:-mt-1',\n '[[data-variant=legend]+&]:-mt-1.5',\n '[&>a:hover]:text-primary',\n '[&>a]:underline',\n '[&>a]:underline-offset-4'\n );\n el.setAttribute('data-slot', 'field-description');\n\n if (el.getAttribute('data-hide-on-error') === 'true') {\n el.classList.add(\n '[[data-slot=field]_input:invalid~&]:hidden',\n '[[data-slot=field]_textarea:invalid~&]:hidden',\n '[[data-slot=field]_[aria-invalid=true]~&]:hidden',\n 'group-has-[input:invalid]/field:hidden',\n 'group-has-[textarea:invalid)]/field:hidden',\n 'group-has-[[aria-invalid=true]]/field:hidden'\n );\n }\n });\n\n Alpine.directive('h-field-error', (el) => {\n el.classList.add(\n 'hidden',\n '[[data-slot=field]_input:invalid~&]:block',\n '[[data-slot=field]_textarea:invalid~&]:block',\n '[[data-slot=field]_[aria-invalid=true]~&]:block',\n 'group-has-[input:invalid]/field:block',\n 'group-has-[textarea:invalid)]/field:block',\n 'group-has-[[aria-invalid=true]]/field:block',\n 'text-negative',\n 'text-sm',\n 'leading-normal',\n 'font-normal',\n 'group-has-[[data-orientation=horizontal]]/field:text-balance'\n );\n el.setAttribute('data-slot', 'field-error');\n });\n}\n", "import { setSvgContent } from './../common/icons';\n\nexport default function (Alpine) {\n Alpine.directive('h-icon', (el, { original, modifiers }) => {\n if (el.tagName.toLowerCase() !== 'svg') {\n throw new Error(`${original} works only on svg elements`);\n } else if (!el.hasAttribute('role')) {\n throw new Error(`${original} must have a role`);\n } else if (el.getAttribute('role') === 'img' && !el.hasAttribute('aria-labelledby') && !el.hasAttribute('aria-label')) {\n throw new Error(`${original}: svg images with the role of img must have an \"aria-label\" or \"aria-labelledby\" attribute`);\n }\n el.classList.add('fill-current');\n el.setAttribute('data-slot', 'icon');\n if (el.hasAttribute('data-link')) {\n fetch(el.getAttribute('data-link'))\n .then((response) => {\n if (response.status === 200) return response.text();\n throw response;\n })\n .then((content) => {\n const parser = new DOMParser();\n const svg = parser.parseFromString(content, 'image/svg+xml');\n for (let a = 0; a < svg.firstElementChild.attributes.length; a++) {\n el.setAttribute(svg.firstElementChild.attributes[a].name, svg.firstElementChild.attributes[a].value);\n }\n el.append(...svg.firstElementChild.children);\n })\n .catch((response) => {\n console.error(response);\n });\n } else if (modifiers[0]) {\n setSvgContent(el, modifiers[0]);\n }\n });\n}\n", "export default function (Alpine) {\n Alpine.directive('h-info-page', (el) => {\n el.classList.add('vbox', 'min-w-0', 'flex-1', 'items-center', 'justify-center', 'gap-6', 'rounded-lg', 'border-dashed', 'p-6', 'text-center', 'text-balance', 'md:p-12');\n el.setAttribute('data-slot', 'info-page');\n });\n\n Alpine.directive('h-info-page-header', (el) => {\n el.classList.add('vbox', 'max-w-sm', 'items-center', 'gap-2', 'text-center');\n el.setAttribute('data-slot', 'info-page-header');\n });\n\n Alpine.directive('h-info-page-media', (el, { modifiers }) => {\n el.classList.add('hbox', 'shrink-0', 'items-center', 'justify-center', '[&_svg]:pointer-events-none', '[&_svg]:shrink-0');\n if (modifiers.includes('icon')) el.classList.add('bg-muted', 'text-foreground', 'size-10', 'shrink-0', 'items-center', 'justify-center', 'rounded-lg', \"[&_svg:not([class*='size-'])]:size-6\");\n else el.classList.add('bg-transparent');\n el.setAttribute('data-slot', 'info-page-media');\n });\n\n Alpine.directive('h-info-page-title', (el) => {\n el.classList.add('text-lg', 'font-medium', 'tracking-tight');\n el.setAttribute('data-slot', 'info-page-title');\n });\n\n Alpine.directive('h-info-page-description', (el) => {\n el.classList.add('text-muted-foreground', '[&>a:hover]:text-primary', 'text-sm/relaxed', '[&>a]:underline', '[&>a]:underline-offset-4');\n el.setAttribute('data-slot', 'info-page-description');\n });\n\n Alpine.directive('h-info-page-content', (el) => {\n el.classList.add('vbox', 'w-full', 'max-w-sm', 'min-w-0', 'items-center', 'gap-4', 'text-sm', 'text-balance');\n el.setAttribute('data-slot', 'info-page-content');\n });\n}\n", "import uuidv4 from '../utils/uuid';\nimport { Minus, Plus, createSvg } from './../common/icons';\nimport { sizeObserver } from './../common/input-size';\nexport default function (Alpine) {\n Alpine.directive('h-input', (el, { modifiers }, { cleanup }) => {\n el.classList.add(\n 'file:text-foreground',\n 'placeholder:text-muted-foreground',\n 'selection:bg-primary',\n 'selection:text-primary-foreground',\n 'border-input',\n 'min-w-0',\n \"[&:not([type='color'])]:px-3\",\n \"[&:not([type='color'])]:py-1\",\n \"[&[type='color']]:overflow-hidden\",\n '[&::-moz-color-swatch]:border-0',\n '[&::-webkit-color-swatch]:border-0',\n '[&::-webkit-color-swatch-wrapper]:rounded-0',\n '[&::-webkit-color-swatch-wrapper]:p-0',\n 'text-base',\n 'transition-colors',\n 'transition-shadow',\n 'motion-reduce:transition-none',\n 'outline-none',\n 'file:inline-flex',\n 'file:h-7',\n 'file:border-0',\n 'file:bg-transparent',\n 'file:text-sm',\n 'file:font-medium',\n 'disabled:pointer-events-none',\n 'disabled:cursor-not-allowed',\n 'disabled:opacity-50',\n 'md:text-sm',\n 'focus-visible:border-ring',\n 'focus-visible:ring-ring/50',\n 'aria-invalid:ring-negative/20',\n 'dark:aria-invalid:ring-negative/40',\n 'aria-invalid:border-negative',\n 'invalid:!ring-negative/20',\n 'dark:invalid:!ring-negative/40',\n 'invalid:!border-negative'\n );\n if (modifiers.includes('group')) {\n el.classList.add('h-full', 'flex-1', 'rounded-none', 'border-0', 'bg-transparent', 'shadow-none', 'focus-visible:ring-0');\n el.setAttribute('data-slot', 'input-group-control');\n } else if (modifiers.includes('table')) {\n el.classList.add(\n 'size-full',\n 'h-10',\n 'focus-visible:inset-ring-ring/50',\n 'focus-visible:inset-ring-2',\n 'aria-invalid:inset-ring-negative/20',\n 'dark:aria-invalid:inset-ring-negative/40',\n 'invalid:!inset-ring-negative/20',\n 'dark:invalid:!inset-ring-negative/40'\n );\n el.setAttribute('data-slot', 'cell-input');\n } else {\n el.classList.add('w-full', 'rounded-control', 'border', 'bg-input-inner', 'shadow-input', 'focus-visible:ring-[calc(var(--spacing)*0.75)]');\n el.setAttribute('data-slot', 'input');\n\n const observer = sizeObserver(el);\n\n cleanup(() => {\n observer.disconnect();\n });\n }\n });\n\n Alpine.directive('h-input-group', (el, _, { cleanup }) => {\n el.classList.add(\n 'group/input-group',\n 'border-input',\n 'bg-input-inner',\n 'relative',\n 'flex',\n 'w-full',\n 'items-center',\n 'rounded-control',\n 'border',\n 'shadow-input',\n 'transition-colors',\n 'transition-shadow',\n 'motion-reduce:transition-none',\n 'outline-none',\n 'min-w-0',\n 'has-[>textarea]:h-auto',\n 'has-[>[data-align=inline-start]]:[&>input]:pl-2',\n 'has-[>[data-align=inline-end]]:[&>input]:pr-2',\n 'has-[>[data-align=block-start]]:h-auto',\n 'has-[>[data-align=block-start]]:flex-col',\n 'has-[>[data-align=block-start]]:[&>input]:pb-3',\n 'has-[>[data-align=block-end]]:h-auto',\n 'has-[>[data-align=block-end]]:flex-col',\n 'has-[>[data-align=block-end]]:[&>input]:pt-3',\n 'has-[[data-slot=input-group-control]:focus-visible]:border-ring',\n 'has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50',\n 'has-[[data-slot=input-group-control]:focus-visible]:ring-[calc(var(--spacing)*0.75)]',\n 'has-[[data-slot][aria-invalid=true]]:ring-negative/20',\n 'has-[[data-slot][aria-invalid=true]]:border-negative',\n 'dark:has-[[data-slot][aria-invalid=true]]:ring-negative/40'\n );\n el.setAttribute('role', 'group');\n el.setAttribute('data-slot', 'input-group');\n\n const observer = sizeObserver(el);\n\n cleanup(() => {\n observer.disconnect();\n });\n });\n\n Alpine.directive('h-input-group-addon', (el, _, { cleanup }) => {\n el.classList.add(\n 'text-muted-foreground',\n 'flex',\n 'h-auto',\n 'cursor-text',\n 'items-center',\n 'justify-center',\n 'gap-2',\n 'text-sm',\n 'font-medium',\n 'select-none',\n \"[&>svg:not([class*='size-'])]:size-4\",\n '[&>[data-slot=tag]]:rounded-[calc(var(--radius)-5px)]',\n 'data-[disabled=true]:opacity-50',\n 'data-[disabled=true]:pointer-events-none'\n );\n el.setAttribute('role', 'group');\n el.setAttribute('data-slot', 'input-group-addon');\n\n const variants = {\n 'inline-start': [\n 'order-first',\n 'pl-3',\n '[[data-slot=input-group][data-size=sm]_&]:pl-1.25',\n 'has-[>button]:pl-1.25',\n '[[data-slot=input-group][data-size=sm]_&]:has-[>button]:pl-0.5',\n 'has-[>[data-slot|=tag]]:pl-1.5',\n '[[data-slot=input-group][data-size=sm]_&]:has-[>[data-slot|=tag]]:pl-0.5',\n ],\n 'inline-end': [\n 'order-last',\n 'pr-3',\n '[[data-slot=input-group][data-size=sm]_&]:pr-1.25',\n 'has-[>button]:pr-1.25',\n '[[data-slot=input-group][data-size=sm]_&]:has-[>button]:pr-0.5',\n 'has-[>[data-slot|=tag]]:pr-1.5',\n '[[data-slot=input-group][data-size=sm]_&]:has-[>[data-slot|=tag]]:pr-0.5',\n ],\n 'block-start': ['order-first', 'w-full', 'justify-start', 'px-3', 'pt-3', '[.border-b]:pb-3', 'group-has-[>input]/input-group:pt-2.5'],\n 'block-end': ['order-last', 'w-full', 'justify-start', 'px-3', 'pb-3', '[.border-t]:pt-3', 'group-has-[>input]/input-group:pb-2.5'],\n };\n\n function setVariant(variant) {\n if (Object.prototype.hasOwnProperty.call(variants, variant)) el.classList.add(...variants[variant]);\n }\n\n setVariant(el.getAttribute('data-align') ?? 'inline-start');\n\n const handler = (event) => {\n if (event.target.closest('button')) {\n return;\n }\n let input = event.currentTarget.parentElement?.querySelector('input');\n if (!input) input = event.currentTarget.parentElement?.querySelector('textarea');\n input?.focus();\n };\n\n el.addEventListener('click', handler);\n\n cleanup(() => {\n el.removeEventListener('click', handler);\n });\n });\n\n Alpine.directive('h-input-group-text', (el) => {\n el.classList.add('text-muted-foreground', 'flex', 'items-center', 'gap-2', 'text-sm', '[&_svg]:pointer-events-none', \"[&_svg:not([class*='size-'])]:size-4\");\n el.setAttribute('data-slot', 'label');\n });\n\n Alpine.directive('h-input-number', (el, { original }, { cleanup }) => {\n el.classList.add(\n 'overflow-hidden',\n 'group/input-number',\n 'border-input',\n 'bg-input-inner',\n 'relative',\n 'flex',\n 'w-full',\n 'items-center',\n 'rounded-control',\n 'border',\n 'shadow-input',\n 'transition-colors',\n 'transition-shadow',\n 'motion-reduce:transition-none',\n 'duration-200',\n 'outline-none',\n 'min-w-0',\n 'has-[input:focus-visible]:border-ring',\n 'has-[input:focus-visible]:ring-ring/50',\n 'has-[input:focus-visible]:ring-[calc(var(--spacing)*0.75)]',\n 'has-[input[aria-invalid=true]]:ring-negative/20',\n 'has-[input[aria-invalid=true]]:border-negative',\n 'dark:has-[input[aria-invalid=true]]:ring-negative/40',\n 'has-[input:invalid]:ring-negative/20',\n 'has-[input:invalid]:border-negative',\n 'dark:has-[input:invalid]:ring-negative/40',\n 'has-[input:disabled]:pointer-events-none',\n 'has-[input:disabled]:cursor-not-allowed',\n 'has-[input:disabled]:opacity-50'\n );\n el.setAttribute('role', 'group');\n el.setAttribute('data-slot', 'input-number');\n const input = el.querySelector('input');\n if (!input || input.getAttribute('type') !== 'number') {\n throw new Error(`${original} must contain an input of type 'number'`);\n }\n if (!input.hasAttribute('type')) input.setAttribute('type', 'number');\n if (!input.hasAttribute('inputmode')) input.setAttribute('inputmode', 'numeric');\n if (!input.hasAttribute('aria-roledescription')) {\n input.setAttribute('aria-roledescription', 'Number field');\n }\n\n if (!input.hasAttribute('id')) {\n input.setAttribute('id', `in${uuidv4()}`);\n }\n input.setAttribute('tabindex', '0');\n input.setAttribute('autocomplete', 'off');\n input.setAttribute('autocorrect', 'off');\n input.setAttribute('spellcheck', 'off');\n input.setAttribute('data-slot', 'input-number-control');\n input.classList.add('size-full', 'px-3', 'py-1', 'outline-none');\n\n const stepDown = document.createElement('button');\n stepDown.setAttribute('type', 'button');\n stepDown.setAttribute('tabIndex', '-1');\n stepDown.setAttribute('aria-label', 'Decrease');\n stepDown.setAttribute('aria-controls', input.getAttribute('id'));\n stepDown.setAttribute('data-slot', 'step-up-trigger');\n stepDown.appendChild(\n createSvg({\n icon: Minus,\n classes: 'opacity-70 text-inherit size-4 shrink-0 pointer-events-none',\n attrs: {\n 'aria-hidden': true,\n role: 'presentation',\n },\n })\n );\n stepDown.classList.add(\n 'inline-flex',\n 'items-center',\n 'justify-center',\n 'cursor-pointer',\n 'border-l',\n 'border-input',\n '[input[aria-invalid=true]~&]:border-negative',\n '[input:invalid~&]:border-negative',\n 'h-full',\n 'aspect-square',\n 'transition-colors',\n 'motion-reduce:transition-none',\n 'duration-100',\n 'bg-transparent',\n 'hover:bg-secondary',\n 'hover:text-secondary-foreground',\n 'active:bg-secondary-active',\n 'active:text-secondary-foreground',\n 'outline-none',\n 'relative',\n '[&:hover>svg]:text-secondary-foreground'\n );\n el.appendChild(stepDown);\n\n const onStepDown = () => {\n if (input.step === 'any') {\n input.value = (parseFloat(input.value) || 0) - 1;\n } else input.stepDown();\n input.dispatchEvent(new Event('input', { bubbles: true }));\n input.dispatchEvent(new Event('change', { bubbles: true }));\n };\n\n stepDown.addEventListener('click', onStepDown);\n\n const stepUp = document.createElement('button');\n stepUp.setAttribute('type', 'button');\n stepUp.setAttribute('tabIndex', '-1');\n stepUp.setAttribute('aria-label', 'Increase');\n stepUp.setAttribute('aria-controls', input.getAttribute('id'));\n stepUp.setAttribute('data-slot', 'step-up-trigger');\n stepUp.appendChild(\n createSvg({\n icon: Plus,\n classes: 'opacity-70 text-inherit size-4 shrink-0 pointer-events-none',\n attrs: {\n 'aria-hidden': true,\n role: 'presentation',\n },\n })\n );\n stepUp.classList.add(\n 'inline-flex',\n 'items-center',\n 'justify-center',\n 'cursor-pointer',\n 'border-l',\n 'border-input',\n '[input[aria-invalid=true]~&]:border-negative',\n '[input:invalid~&]:border-negative',\n 'h-full',\n 'aspect-square',\n 'transition-all',\n 'motion-reduce:transition-none',\n 'duration-100',\n 'bg-transparent',\n 'hover:bg-secondary',\n 'hover:text-secondary-foreground',\n 'active:bg-secondary-active',\n 'active:text-secondary-foreground',\n 'outline-none',\n 'relative',\n '[&:hover>svg]:text-secondary-foreground'\n );\n\n el.appendChild(stepUp);\n\n const onStepUp = () => {\n if (input.step === 'any') {\n input.value = (parseFloat(input.value) || 0) + 1;\n } else input.stepUp();\n input.dispatchEvent(new Event('input', { bubbles: true }));\n input.dispatchEvent(new Event('change', { bubbles: true }));\n };\n\n stepUp.addEventListener('click', onStepUp);\n\n const observer = sizeObserver(el);\n\n cleanup(() => {\n observer.disconnect();\n stepDown.removeEventListener('click', onStepDown);\n stepUp.removeEventListener('click', onStepUp);\n });\n });\n}\n", "export default function (Alpine) {\n Alpine.directive('h-label', (el, { modifiers }) => {\n el.classList.add(\n 'flex',\n 'items-center',\n 'gap-2',\n 'text-sm',\n 'leading-none',\n 'font-medium',\n 'select-none',\n 'group-data-[disabled=true]:pointer-events-none',\n 'group-data-[disabled=true]:opacity-50',\n 'peer-disabled:cursor-not-allowed',\n 'peer-disabled:opacity-50'\n );\n if (modifiers[0] === 'field') {\n el.classList.add(\n 'group/field-label',\n 'peer/field-label',\n 'flex',\n 'w-fit',\n 'gap-2',\n 'leading-snug',\n 'group-data-[disabled=true]/field:opacity-50',\n 'has-[>[data-slot=field]]:w-full',\n 'has-[>[data-slot=field]]:flex-col',\n 'has-[>[data-slot=field]]:rounded-md',\n 'has-[>[data-slot=field]]:border',\n '[&>*]:data-[slot=field]:p-4'\n );\n el.setAttribute('data-slot', 'field-label');\n } else el.setAttribute('data-slot', 'label');\n });\n}\n", "import uuidv4 from '../utils/uuid';\nexport default function (Alpine) {\n Alpine.directive('h-listbox', (el, _, { cleanup }) => {\n el.classList.add(\n 'divide-solid',\n 'divide-y',\n 'bg-input-inner',\n 'border-input',\n 'border',\n 'rounded-control',\n 'shadow-input',\n 'outline-none',\n 'disabled:pointer-events-none',\n 'disabled:cursor-not-allowed',\n 'disabled:opacity-50',\n 'focus-visible:border-ring',\n 'focus-visible:ring-ring/50',\n 'focus-visible:ring-[calc(var(--spacing)*0.75)]',\n 'aria-invalid:ring-negative/20',\n 'dark:aria-invalid:ring-negative/40',\n 'aria-invalid:border-negative',\n 'invalid:!ring-negative/20',\n 'dark:invalid:!ring-negative/40',\n 'invalid:!border-negative',\n '[&>ul:first-child>*:first-child]:rounded-t-control',\n '[&>ul:last-child>*:last-child]:rounded-b-control'\n );\n el.setAttribute('data-slot', 'listbox');\n el.setAttribute('role', 'listbox');\n\n function focusFirstOption(elem) {\n const firstOption = elem.querySelector('[role=\"option\"]');\n if (firstOption) firstOption.focus();\n }\n\n function focusLastOption(elem) {\n const itemList = elem.querySelectorAll('[role=\"option\"]');\n if (itemList.length) {\n itemList[itemList.length - 1].focus();\n }\n }\n\n function selectOption(option) {\n const selected = el.querySelector('[aria-selected=\"true\"]');\n if (selected) selected.removeAttribute('aria-selected');\n if (selected !== option) option.setAttribute('aria-selected', 'true');\n }\n\n function onKeyDown(event) {\n switch (event.key) {\n case 'PageUp':\n case 'PageDown':\n event.preventDefault();\n break;\n case 'Home':\n focusFirstOption(el);\n break;\n case 'End':\n focusLastOption(el);\n break;\n case 'Up':\n case 'ArrowUp': {\n event.preventDefault();\n let prevElem = event.target.previousElementSibling;\n if (prevElem && prevElem.getAttribute('data-slot') !== 'list-header') {\n prevElem.focus();\n } else {\n prevElem = event.target.parentElement.previousElementSibling;\n if (prevElem && prevElem.tagName === 'UL') {\n focusLastOption(prevElem);\n }\n }\n break;\n }\n case 'Down':\n case 'ArrowDown': {\n event.preventDefault();\n let nextElem = event.target.nextElementSibling;\n if (nextElem) {\n nextElem.focus();\n } else {\n nextElem = event.target.parentElement.nextElementSibling;\n if (nextElem && nextElem.tagName === 'UL') {\n focusFirstOption(nextElem);\n }\n }\n break;\n }\n case ' ':\n case 'Enter':\n selectOption(event.target);\n break;\n default:\n break;\n }\n }\n\n function onClick(event) {\n if (event.target.getAttribute('data-slot') === 'list-item') selectOption(event.target);\n }\n\n el.addEventListener('click', onClick);\n el.addEventListener('keydown', onKeyDown);\n cleanup(() => {\n el.removeEventListener('keydown', onKeyDown);\n el.removeEventListener('click', onClick);\n });\n });\n\n Alpine.directive('h-list', (el) => {\n el.classList.add('divide-solid', 'divide-y');\n el.setAttribute('data-slot', 'list');\n el.setAttribute('role', 'group');\n });\n\n Alpine.directive('h-list-header', (el, { original }, { Alpine }) => {\n el.classList.add('font-medium', 'flex', 'items-center', 'p-2', 'gap-2', 'align-middle', 'bg-table-header', 'text-table-header-foreground');\n el.setAttribute('role', 'presentation');\n el.setAttribute('data-slot', 'list-header');\n const list = Alpine.findClosest(el.parentElement, (parent) => parent.getAttribute('data-slot') === 'list');\n if (!list) {\n throw new Error(`${original} must be placed inside a list element`);\n }\n if (!el.hasAttribute('id')) {\n const id = `lbh${uuidv4()}`;\n el.setAttribute('id', id);\n }\n list.setAttribute('aria-labelledby', el.getAttribute('id'));\n });\n\n Alpine.directive('h-list-item', (el, { modifiers }) => {\n el.classList.add('min-h-11', 'flex', 'items-center', 'p-2', 'gap-2', 'align-middle', 'outline-none');\n el.setAttribute('data-slot', 'list-item');\n const listbox = Alpine.findClosest(el.parentElement, (parent) => parent.getAttribute('data-slot') === 'listbox');\n function setInteractive() {\n el.classList.add(\n 'focus:bg-table-hover',\n 'focus:text-table-hover-foreground',\n 'hover:bg-table-hover',\n 'hover:text-table-hover-foreground',\n 'active:bg-table-active',\n 'active:text-table-active-foreground',\n 'aria-selected:bg-primary',\n 'aria-selected:text-primary-foreground',\n '[&[aria-selected=true]:hover]:bg-primary-hover',\n '[&[aria-selected=true]:hover]:text-primary-hover-foreground',\n '[&[aria-selected=true]:focus]:bg-primary-hover',\n '[&[aria-selected=true]:focus]:text-primary-hover-foreground'\n );\n el.setAttribute('tabindex', '0');\n }\n if (listbox) {\n setInteractive();\n el.setAttribute('role', 'option');\n el.setAttribute('tabindex', '0');\n } else if (modifiers.includes('interactive')) {\n setInteractive();\n } else {\n el.setAttribute('tabindex', '-1');\n }\n });\n}\n", "import { computePosition, flip, offset, shift, size } from '@floating-ui/dom';\nimport uuidv4 from '../utils/uuid';\nimport { Check, ChevronRight, createSvg } from './../common/icons';\nexport default function (Alpine) {\n Alpine.directive('h-menu-trigger', (el, { modifiers }) => {\n el._menu_trigger = {\n isDropdown: modifiers.includes('dropdown'),\n setOpen(open) {\n el.setAttribute('aria-expanded', open);\n },\n };\n if (el._menu_trigger.isDropdown) {\n el.setAttribute('aria-haspopup', 'true');\n el.setAttribute('aria-expanded', 'false');\n if (!el.hasAttribute('id')) {\n el.setAttribute('id', `mt${uuidv4()}`);\n }\n }\n });\n\n Alpine.directive('h-menu', (el, { original, modifiers }, { cleanup, Alpine }) => {\n if (el.tagName !== 'UL') {\n throw new Error(`${original} must be an ul element`);\n }\n el.classList.add(\n 'hidden',\n 'fixed',\n 'bg-popover',\n 'text-popover-foreground',\n 'font-normal',\n 'z-50',\n 'min-w-[8rem]',\n 'overflow-x-hidden',\n 'overflow-y-auto',\n 'rounded-md',\n 'p-1',\n 'shadow-md',\n 'border',\n 'outline-none',\n 'transition-[opacity,scale]',\n 'motion-reduce:transition-none',\n 'duration-100',\n 'ease-out',\n 'opacity-0',\n 'scale-95'\n );\n el.setAttribute('role', 'menu');\n el.setAttribute('aria-orientation', 'vertical');\n el.setAttribute('tabindex', '-1');\n el.setAttribute('data-slot', 'menu');\n const isSubmenu = modifiers.includes('sub');\n\n const menuTrigger = (() => {\n if (isSubmenu) return;\n let sibling = el.previousElementSibling;\n while (sibling && !Object.prototype.hasOwnProperty.call(sibling, '_menu_trigger')) {\n sibling = sibling.previousElementSibling;\n }\n if (!Object.prototype.hasOwnProperty.call(sibling, '_menu_trigger')) {\n throw new Error(`${original} menu must be placed after a menu trigger element`);\n }\n return sibling;\n })();\n\n function setAriaAttrubutes(parent) {\n if (!el.hasAttribute('aria-labelledby') && !el.hasAttribute('aria-label')) {\n if (parent && parent.hasAttribute('id')) {\n el.setAttribute('aria-labelledby', parent.id);\n } else {\n throw new Error(`${original} must have an \"aria-label\" or \"aria-labelledby\" attribute`);\n }\n }\n }\n\n let menuSubItem;\n if (isSubmenu) {\n menuSubItem = Alpine.findClosest(el.parentElement, (parent) => parent.getAttribute('data-slot') === 'menu-sub');\n if (!menuSubItem) {\n throw new Error(`${original} must be placed inside a ${Alpine.prefixed('h-menu-sub')} element`);\n }\n setAriaAttrubutes(menuSubItem);\n } else if (menuTrigger) {\n setAriaAttrubutes(menuTrigger._menu_trigger.isDropdown ? menuTrigger : undefined);\n } else {\n setAriaAttrubutes();\n }\n\n function listenForTrigger(listen) {\n if (listen) {\n if (menuTrigger._menu_trigger.isDropdown) menuTrigger.addEventListener('click', openDropdown);\n else menuTrigger.addEventListener('contextmenu', onContextmenu);\n } else {\n if (menuTrigger._menu_trigger.isDropdown) menuTrigger.removeEventListener('click', openDropdown);\n else menuTrigger.removeEventListener('contextmenu', onContextmenu);\n }\n }\n\n function close(closeParent = false, focusTrigger = false) {\n el.pauseKeyEvents = false;\n if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) {\n el.classList.add('hidden', 'scale-95', 'opacity-0');\n Object.assign(el.style, {\n left: '0px',\n top: '0px',\n });\n } else {\n el.classList.add('scale-95', 'opacity-0');\n }\n top.removeEventListener('contextmenu', onClick);\n top.removeEventListener('click', onClick);\n el.removeEventListener('keydown', onKeyDown);\n if (isSubmenu) {\n if (closeParent) {\n menuSubItem._menu_sub.closeTree();\n }\n } else {\n listenForTrigger(true);\n if (focusTrigger) menuTrigger.focus();\n if (menuTrigger._menu_trigger.isDropdown) {\n menuTrigger._menu_trigger.setOpen(false);\n }\n }\n }\n\n el._menu = { close };\n\n function isPrintableCharacter(str) {\n return str.length === 1 && /\\S/.test(str);\n }\n\n function getFirstChar(text) {\n const clean = text.replaceAll('\\n', '').trim();\n if (clean) return clean[0].toLowerCase();\n return '';\n }\n\n function findMatching(str, items) {\n for (let i = 0; i < items.length; i++) {\n if (getFirstChar(items[i].textContent).startsWith(str.toLowerCase())) {\n items[i].focus();\n return true;\n }\n }\n return false;\n }\n\n function onClick(event) {\n if (event.type === 'contextmenu') event.preventDefault();\n if (el.getAttribute('data-innerclicks') === 'true' && el.contains(event.composedPath()[0])) {\n return;\n } else close(isSubmenu);\n }\n\n el.pauseKeyEvents = false;\n\n function onKeyDown(event) {\n if (!el.pauseKeyEvents) {\n let menuitem;\n switch (event.key) {\n case 'Left':\n case 'ArrowLeft':\n if (isSubmenu) {\n Alpine.nextTick(() => menuSubItem.focus());\n close();\n }\n break;\n case 'Esc':\n case 'Escape':\n if (isSubmenu) {\n Alpine.nextTick(() => menuSubItem.focus());\n }\n close(undefined, true);\n break;\n case 'Tab':\n case ' ':\n case 'Enter':\n if (event.key !== 'Tab') {\n event.preventDefault();\n event.target.click();\n }\n close();\n if (isSubmenu) {\n menuSubItem._menu_sub.closeTree();\n }\n break;\n case 'Down':\n case 'ArrowDown':\n event.preventDefault();\n menuitem = el.querySelector(':scope > [role^=menuitem][tabIndex=\"0\"] ~ [role^=menuitem][tabIndex=\"-1\"]');\n if (!menuitem) menuitem = el.querySelector('[role^=menuitem][tabIndex=\"-1\"]');\n if (menuitem) {\n menuitem.focus();\n }\n break;\n case 'Up':\n case 'ArrowUp': {\n event.preventDefault();\n let menuitems = el.querySelectorAll(':scope > [role^=menuitem][tabIndex=\"-1\"]:has(~ [role^=menuitem][tabIndex=\"0\"])');\n if (menuitems.length) {\n menuitem = menuitems[menuitems.length - 1];\n } else {\n menuitem = el.querySelector(':scope > [role^=menuitem][tabIndex=\"-1\"]:last-of-type');\n }\n if (menuitem) {\n menuitem.focus();\n }\n break;\n }\n case 'Home':\n case 'PageUp':\n event.preventDefault();\n menuitem = el.querySelector(':scope > [role^=menuitem][tabIndex=\"-1\"]:first-of-type');\n if (menuitem) {\n menuitem.focus();\n }\n break;\n case 'End':\n case 'PageDown':\n event.preventDefault();\n menuitem = el.querySelector(':scope > [role^=menuitem][tabIndex=\"-1\"]:last-of-type');\n if (menuitem) {\n menuitem.focus();\n }\n break;\n default:\n if (isPrintableCharacter(event.key)) {\n let items = el.querySelectorAll(':scope > [role^=menuitem][tabindex=\"0\"] ~ [role^=menuitem]');\n if (!findMatching(event.key, items)) {\n items = el.querySelectorAll(':scope > [role^=menuitem][tabindex=\"-1\"]');\n findMatching(event.key, items);\n }\n }\n }\n }\n }\n\n function open(parent) {\n if (el.classList.contains('hidden')) {\n el.classList.remove('hidden');\n el.pauseKeyEvents = false;\n function getPlacement() {\n if (isSubmenu) {\n return 'right-start';\n } else if (menuTrigger._menu_trigger.isDropdown) {\n return el.getAttribute('data-align') || 'bottom-start';\n }\n return 'right-start';\n }\n computePosition(parent, el, {\n placement: getPlacement(),\n strategy: 'fixed',\n middleware: [\n offset(isSubmenu ? 0 : 4),\n flip(),\n shift({ padding: 4 }),\n size({\n apply({ availableWidth, availableHeight, elements }) {\n Object.assign(elements.floating.style, {\n maxWidth: `${Math.max(0, availableWidth) - 4}px`,\n maxHeight: `${Math.max(0, availableHeight) - 4}px`,\n });\n },\n }),\n ],\n }).then(({ x, y }) => {\n if (!isSubmenu) {\n Alpine.nextTick(() => el.focus());\n listenForTrigger(false);\n }\n Alpine.nextTick(() => {\n top.addEventListener('contextmenu', onClick);\n top.addEventListener('click', onClick);\n el.addEventListener('keydown', onKeyDown);\n });\n Object.assign(el.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n el.classList.remove('scale-95', 'opacity-0');\n });\n }\n }\n\n function openDropdown() {\n if (menuTrigger._menu_trigger.isDropdown) {\n menuTrigger._menu_trigger.setOpen(true);\n }\n open(menuTrigger);\n }\n\n function onContextmenu(event) {\n event.preventDefault();\n open({\n getBoundingClientRect() {\n return {\n width: 0,\n height: 0,\n x: event.clientX,\n y: event.clientY,\n top: event.clientY,\n left: event.clientX,\n right: event.clientX,\n bottom: event.clientY,\n };\n },\n });\n listenForTrigger(false);\n }\n\n if (isSubmenu) {\n menuSubItem._menu_sub.open = open;\n menuSubItem._menu_sub.close = close;\n } else {\n listenForTrigger(true);\n }\n\n function onTransitionEnd(event) {\n if (event.target === el && event.target.classList.contains('opacity-0')) {\n el.classList.add('hidden');\n Object.assign(el.style, {\n left: '0px',\n top: '0px',\n });\n }\n }\n\n el.addEventListener('transitionend', onTransitionEnd);\n\n cleanup(() => {\n if (menuTrigger) listenForTrigger(false);\n top.removeEventListener('click', onClick);\n top.removeEventListener('contextmenu', onClick);\n el.removeEventListener('keydown', onKeyDown);\n el.removeEventListener('transitionend', onTransitionEnd);\n });\n });\n\n Alpine.directive('h-menu-item', (el, { original }, { cleanup, Alpine }) => {\n if (el.tagName !== 'LI') {\n throw new Error(`${original} must be a li element`);\n }\n el.classList.add(\n 'focus:bg-secondary-hover',\n 'focus:text-secondary-foreground',\n 'hover:bg-secondary-hover',\n 'hover:text-secondary-foreground',\n 'data-[variant=negative]:text-negative',\n 'data-[variant=negative]:focus:bg-negative/10',\n 'data-[variant=negative]:hover:bg-negative/10',\n 'data-[variant=negative]:focus:text-negative',\n 'data-[variant=negative]:hover:text-negative',\n 'data-[variant=negative]:*:[svg]:!text-negative',\n \"[&_svg:not([class*='text-'])]:text-muted-foreground\",\n 'relative',\n 'flex',\n 'cursor-default',\n 'items-center',\n 'gap-2',\n 'rounded-sm',\n 'px-2',\n 'py-1.5',\n 'text-sm',\n 'outline-hidden',\n 'select-none',\n 'data-[disabled]:pointer-events-none',\n 'data-[disabled]:opacity-50',\n 'data-[inset=true]:pl-8',\n '[&_svg]:pointer-events-none',\n '[&_svg]:shrink-0',\n \"[&_svg:not([class*='size-'])]:size-4\"\n );\n el.setAttribute('role', 'menuitem');\n el.setAttribute('tabindex', '-1');\n el.setAttribute('data-slot', 'menu-item');\n\n const menu = Alpine.findClosest(el.parentElement, (parent) => parent.getAttribute('role') === 'menu');\n\n function focusOut(event) {\n el.setAttribute('tabindex', '-1');\n if (event.type === 'mouseleave') menu.focus();\n }\n\n function focusIn() {\n el.setAttribute('tabindex', '0');\n el.addEventListener('blur', focusOut);\n el.addEventListener('mouseleave', focusOut);\n }\n\n el.addEventListener('mouseenter', focusIn);\n el.addEventListener('focus', focusIn);\n\n cleanup(() => {\n el.removeEventListener('mouseenter', focusIn);\n el.removeEventListener('focus', focusIn);\n el.removeEventListener('blur', focusOut);\n el.removeEventListener('mouseleave', focusOut);\n });\n });\n\n Alpine.directive('h-menu-sub', (el, { original }, { cleanup, Alpine }) => {\n el.classList.add(\n 'focus:bg-secondary-hover',\n 'hover:bg-secondary-hover',\n 'aria-expanded:bg-secondary-hover',\n \"[&_svg:not([class*='text-'])]:text-muted-foreground\",\n 'relative',\n 'flex',\n 'cursor-default',\n 'items-center',\n 'gap-2',\n 'rounded-sm',\n 'px-2',\n 'py-1.5',\n 'text-sm',\n 'outline-hidden',\n 'select-none',\n 'data-[disabled]:pointer-events-none',\n 'data-[disabled]:opacity-50',\n 'data-[inset=true]:pl-8',\n '[&_svg]:pointer-events-none',\n '[&_svg]:shrink-0',\n \"[&_svg:not([class*='size-'])]:size-4\"\n );\n el.setAttribute('role', 'menuitem');\n el.setAttribute('aria-haspopup', 'true');\n el.setAttribute('aria-expanded', 'false');\n el.setAttribute('tabindex', '-1');\n el.setAttribute('data-slot', 'menu-sub');\n\n const chevronRight = createSvg({ icon: ChevronRight, classes: 'size-4 ml-auto', attrs: { 'aria-hidden': true, role: 'presentation' } });\n el.appendChild(chevronRight);\n\n const parentMenu = Alpine.findClosest(el.parentElement, (parent) => parent.getAttribute('role') === 'menu');\n if (!parentMenu) throw new Error(`${original} must have a parent`);\n\n if (!el.hasAttribute('id')) {\n el.setAttribute('id', `ms${uuidv4()}`);\n }\n\n el._menu_sub = {\n open: undefined,\n close: undefined,\n expanded: false,\n closeTree() {\n el.setAttribute('aria-expanded', 'false');\n this.expanded = false;\n el.removeEventListener('keydown', onKeyDown);\n parentMenu.pauseKeyEvents = false;\n parentMenu._menu.close(true);\n },\n };\n\n const keyEvents = ['Right', 'ArrowRight', 'Enter', ' '];\n\n function onKeyDown(event) {\n if (keyEvents.includes(event.key)) {\n event.stopPropagation();\n event.preventDefault();\n el.removeEventListener('keydown', onKeyDown);\n const submenuitem = el.querySelector('[role^=menuitem][tabIndex=\"-1\"]:first-of-type');\n if (submenuitem) {\n el.setAttribute('aria-expanded', 'true');\n el._menu_sub.open(el);\n parentMenu.pauseKeyEvents = true;\n Alpine.nextTick(() => {\n submenuitem.focus();\n el._menu_sub.expanded = true;\n el.setAttribute('aria-expanded', true);\n });\n }\n }\n }\n\n function focusOut(event) {\n el.setAttribute('tabindex', '-1');\n if (event.type === 'mouseleave') {\n el._menu_sub.close();\n el._menu_sub.expanded = false;\n el.setAttribute('aria-expanded', false);\n parentMenu.pauseKeyEvents = false;\n parentMenu.focus();\n } else if (el._menu_sub.expanded) {\n el._menu_sub.close();\n el._menu_sub.expanded = false;\n el.setAttribute('aria-expanded', false);\n parentMenu.pauseKeyEvents = false;\n el.removeEventListener('keydown', onKeyDown);\n }\n }\n\n function focusIn(event) {\n el.setAttribute('tabindex', '0');\n if (event.type === 'click' && event.pointerType === 'touch' && (event.target === el || event.target.parentElement === el)) {\n el._menu_sub.open(el);\n el._menu_sub.expanded = true;\n el.setAttribute('aria-expanded', true);\n event.stopPropagation();\n } else if (event.type === 'mouseenter') {\n el.addEventListener('mouseleave', focusOut);\n el._menu_sub.open(el);\n el._menu_sub.expanded = true;\n el.setAttribute('aria-expanded', true);\n } else {\n if (el._menu_sub.expanded) {\n el._menu_sub.expanded = false;\n el.setAttribute('aria-expanded', false);\n parentMenu.pauseKeyEvents = false;\n }\n el.addEventListener('keydown', onKeyDown);\n el.addEventListener('blur', focusOut); // ?\n }\n }\n\n el.addEventListener('mouseenter', focusIn);\n el.addEventListener('click', focusIn);\n el.addEventListener('focus', focusIn);\n\n cleanup(() => {\n el.removeEventListener('mouseenter', focusIn);\n el.removeEventListener('click', focusIn);\n el.removeEventListener('focus', focusIn);\n el.removeEventListener('blur', focusOut);\n el.removeEventListener('mouseleave', focusOut);\n });\n });\n\n Alpine.directive('h-menu-item-secondary', (el) => {\n el.classList.add('text-muted-foreground', 'ml-auto', 'text-xs', 'tracking-widest');\n el.setAttribute('data-slot', 'menu-item-secondary');\n });\n\n Alpine.directive('h-menu-separator', (el) => {\n el.classList.add('bg-border', '-mx-1', 'my-1', 'h-px');\n el.setAttribute('role', 'presentation');\n el.setAttribute('data-slot', 'menu-separator');\n });\n\n Alpine.directive('h-menu-label', (el) => {\n el.classList.add('text-foreground', 'px-2', 'py-1.5', 'text-sm', 'font-semibold', 'text-left', 'data-[inset=true]:pl-8');\n el.setAttribute('data-slot', 'menu-label');\n });\n\n Alpine.directive('h-menu-checkbox-item', (el, { original }, { cleanup, Alpine }) => {\n if (el.tagName !== 'LI' && el.tagName !== 'DIV') {\n throw new Error(`${original} must be a li or div element`);\n }\n el.classList.add(\n 'focus:bg-secondary-hover',\n 'hover:bg-secondary-hover',\n 'relative',\n 'flex',\n 'cursor-default',\n 'items-center',\n 'gap-2',\n 'rounded-sm',\n 'px-2',\n 'py-1.5',\n 'text-sm',\n 'outline-hidden',\n 'select-none',\n 'aria-[disabled=true]:pointer-events-none',\n 'aria-[disabled=true]:cursor-not-allowed',\n 'aria-[disabled=true]:opacity-50',\n 'transition-all',\n 'motion-reduce:transition-none',\n 'overflow-hidden',\n 'aria-[checked=true]:[&>svg]:visible'\n );\n el.setAttribute('tabindex', '-1');\n el.setAttribute('role', 'menuitemcheckbox');\n el.setAttribute('data-slot', 'menu-checkbox-item');\n\n const check = createSvg({ icon: Check, classes: 'size-4 invisible', attrs: { 'aria-hidden': true, role: 'presentation' } });\n el.prepend(check);\n\n function setState(checked, dispatch = true) {\n if (dispatch)\n Alpine.nextTick(() => {\n el.dispatchEvent(new Event('change', { bubbles: true }));\n });\n el.setAttribute('aria-checked', checked);\n }\n\n function onActivate() {\n el._x_model.set(!el._x_model.get());\n setState(el._x_model.get());\n }\n\n if (Object.prototype.hasOwnProperty.call(el, '_x_model')) {\n setState(el._x_model.get(), false);\n\n el.addEventListener('click', onActivate);\n }\n\n const menu = Alpine.findClosest(el.parentElement, (parent) => parent.getAttribute('role') === 'menu');\n\n function focusOut(event) {\n el.setAttribute('tabindex', '-1');\n if (event.type === 'mouseleave') menu.focus();\n }\n\n function focusIn() {\n el.setAttribute('tabindex', '0');\n el.addEventListener('blur', focusOut);\n el.addEventListener('mouseleave', focusOut);\n }\n\n el.addEventListener('mouseenter', focusIn);\n el.addEventListener('focus', focusIn);\n\n cleanup(() => {\n if (Object.prototype.hasOwnProperty.call(el, '_x_model')) {\n el.removeEventListener('click', onActivate);\n el.removeEventListener('keydown', onActivate);\n }\n el.removeEventListener('mouseenter', focusIn);\n el.removeEventListener('focus', focusIn);\n el.removeEventListener('blur', focusOut);\n el.removeEventListener('mouseleave', focusOut);\n });\n });\n\n Alpine.directive('h-menu-radio-item', (el, { original, expression }, { effect, evaluateLater, cleanup, Alpine }) => {\n if (el.tagName !== 'LI' && el.tagName !== 'DIV') {\n throw new Error(`${original} must be a li or div element`);\n }\n el.classList.add(\n 'focus:bg-secondary-hover',\n 'hover:bg-secondary-hover',\n 'relative',\n 'flex',\n 'cursor-default',\n 'items-center',\n 'gap-2',\n 'rounded-sm',\n 'pr-2',\n 'pl-3.5',\n 'py-1.5',\n 'text-sm',\n 'outline-hidden',\n 'select-none',\n 'aria-[disabled=true]:pointer-events-none',\n 'aria-[disabled=true]:cursor-not-allowed',\n 'aria-[disabled=true]:opacity-50',\n 'transition-all',\n 'motion-reduce:transition-none',\n 'overflow-hidden',\n 'before:invisible',\n 'before:bg-foreground',\n 'before:pointer-events-none',\n 'before:size-2',\n 'before:rounded-full',\n 'before:-translate-x-0.75',\n 'aria-[checked=true]:before:visible'\n );\n el.setAttribute('tabindex', '-1');\n el.setAttribute('type', 'radio');\n el.setAttribute('role', 'menuitemradio');\n el.setAttribute('data-slot', 'menu-radio-item');\n\n const getValue = evaluateLater(expression);\n let value;\n\n effect(() => {\n getValue((val) => (value = val));\n });\n\n function setState(checked, dispatch = true) {\n el.setAttribute('aria-checked', checked);\n if (dispatch) el.dispatchEvent(new Event('change', { bubbles: true }));\n }\n\n function onActivate(event) {\n if (event.type === 'keydown') {\n if (event.key !== ' ' && event.key !== 'Enter') {\n return;\n } else if (event.key === ' ') {\n event.preventDefault();\n }\n }\n if (el._x_model.get() !== value) {\n el._x_model.set(value);\n }\n }\n\n if (Object.prototype.hasOwnProperty.call(el, '_x_model')) {\n effect(() => {\n setState(el._x_model.get() === value);\n });\n\n el.addEventListener('click', onActivate);\n el.addEventListener('keydown', onActivate);\n }\n\n const menu = Alpine.findClosest(el.parentElement, (parent) => parent.getAttribute('role') === 'menu');\n\n function focusOut(event) {\n el.setAttribute('tabindex', '-1');\n if (event.type === 'mouseleave') menu.focus();\n }\n\n function focusIn() {\n el.setAttribute('tabindex', '0');\n el.addEventListener('blur', focusOut);\n el.addEventListener('mouseleave', focusOut);\n }\n\n el.addEventListener('mouseenter', focusIn);\n el.addEventListener('focus', focusIn);\n\n cleanup(() => {\n if (Object.prototype.hasOwnProperty.call(el, '_x_model')) {\n el.removeEventListener('click', onActivate);\n el.removeEventListener('keydown', onActivate);\n }\n el.removeEventListener('mouseenter', focusIn);\n el.removeEventListener('focus', focusIn);\n el.removeEventListener('blur', focusOut);\n el.removeEventListener('mouseleave', focusOut);\n });\n });\n}\n", "export function getBreakpointListener(handler, breakpoint = 768, frame = false) {\n let bps = Number.isFinite(breakpoint) ? `${breakpoint}px` : breakpoint;\n const mql = frame ? window.matchMedia(`(width <= ${bps})`) : top.matchMedia(`(width <= ${bps})`);\n const onWidthChange = (event) => {\n handler(event.matches);\n };\n mql.addEventListener('change', onWidthChange);\n handler(mql.matches);\n return {\n _mql: mql,\n _onWidthChange: onWidthChange,\n remove() {\n this._mql.removeEventListener('change', this._onWidthChange);\n },\n };\n}\n", "import { classListStartsWith } from '../common/class-list';\nimport { getBreakpointListener } from '../utils/breakpoint-listener';\nimport uuidv4 from '../utils/uuid';\nexport default function (Alpine) {\n Alpine.store('_h_notifications', {\n items: [],\n listeners: [],\n\n push(id = `hn${uuidv4()}`, template, position = 'top-right', timeout = 5000, data = {}) {\n if (!template) {\n throw new Error('Notification must have a template ID');\n }\n const item = {\n id,\n template,\n position,\n timeout,\n data: Alpine.reactive(data),\n };\n this.items.push(item);\n this.listeners.forEach((listener) => {\n if (Object.prototype.hasOwnProperty.call(listener, 'added')) listener.added(item);\n });\n },\n\n update(id, data) {\n if (!id) {\n throw new Error('Cannot update a notification if an ID is not provided');\n }\n const index = this.items.findIndex((item) => item.id === id);\n if (index > -1) {\n for (const [key, value] of Object.entries(data)) {\n this.items[index].data[key] = value;\n }\n this.listeners.forEach((listener) => {\n if (Object.prototype.hasOwnProperty.call(listener, 'updated')) listener.updated(id, data);\n });\n } else {\n console.error(`Notification with id \"${id}\" does not exist`);\n }\n },\n\n remove(id) {\n if (!id) {\n throw new Error('Cannot remove a notification if an ID is not provided');\n }\n this.listeners.forEach((listener) => {\n if (Object.prototype.hasOwnProperty.call(listener, 'removed')) listener.removed(id);\n });\n this.items = this.items.filter((n) => n.id !== id);\n },\n });\n\n Alpine.magic('notifications', () => {\n return {\n add({ id, template, position, timeout, data } = {}) {\n Alpine.store('_h_notifications').push(id, template, position, timeout, data);\n },\n update({ id, data } = {}) {\n Alpine.store('_h_notifications').update(id, data);\n },\n remove(id) {\n Alpine.store('_h_notifications').remove(id);\n },\n addListener(listener) {\n Alpine.store('_h_notifications').listeners.push(listener);\n return Alpine.store('_h_notifications').listeners[Alpine.store('_h_notifications').listeners.length - 1];\n },\n removeListener(listener) {\n Alpine.store('_h_notifications').listeners = Alpine.store('_h_notifications').listeners.filter((item) => item !== listener);\n },\n };\n });\n\n Alpine.directive('h-notification-overlay', (el, { original }, { cleanup, Alpine }) => {\n if (el.tagName !== 'SECTION') {\n throw new Error(`${original} must be a button`);\n }\n const notificationTemplates = {};\n el.querySelectorAll('template').forEach((template) => {\n if (!template.hasAttribute('id')) {\n throw new Error('Notification templates must have an ID');\n }\n notificationTemplates[template.getAttribute('id')] = template;\n });\n el.classList.add('fixed', 'w', 'inset-0', 'z-60', 'pointer-events-none', 'grid', 'grid-rows-2', 'grid-cols-1', 'lg:grid-cols-2', 'xl:grid-cols-3');\n el.setAttribute('tabindex', '-1');\n el.setAttribute('aria-live', 'polite');\n el.setAttribute('aria-atomic', 'false');\n el.setAttribute('data-slot', 'notification-overlay');\n\n const commonListClasses = ['flex', 'flex-col', 'py-4', 'p-10', 'gap-4', 'overflow-visible', 'size-full'];\n const commonTopClasses = ['[mask-image:linear-gradient(to_bottom,black_80%,transparent)]', 'row-1'];\n const commonBottomClasses = ['[mask-image:linear-gradient(to_top,black_80%,transparent)]', 'row-2'];\n\n const olTopLeft = document.createElement('ol');\n olTopLeft.classList.add(...commonListClasses, ...commonTopClasses, 'max-lg:hidden', 'items-start');\n olTopLeft.setAttribute('tabindex', '-1');\n el.appendChild(olTopLeft);\n\n const olTopCenter = document.createElement('ol');\n olTopCenter.classList.add(...commonListClasses, ...commonTopClasses, 'lg:col-2', 'items-center');\n olTopCenter.setAttribute('tabindex', '-1');\n el.appendChild(olTopCenter);\n\n const olTopRight = document.createElement('ol');\n olTopRight.classList.add(...commonListClasses, ...commonTopClasses, 'max-lg:hidden', 'lg:col-2', 'xl:col-3', 'items-end');\n olTopRight.setAttribute('tabindex', '-1');\n el.appendChild(olTopRight);\n\n const olBottomLeft = document.createElement('ol');\n olBottomLeft.classList.add(...commonListClasses, ...commonBottomClasses, 'max-lg:hidden', 'items-start', 'justify-end');\n olBottomLeft.setAttribute('tabindex', '-1');\n el.appendChild(olBottomLeft);\n\n const olBottomCenter = document.createElement('ol');\n olBottomCenter.classList.add(...commonListClasses, ...commonBottomClasses, 'lg:col-2', 'items-center', 'justify-end');\n olBottomCenter.setAttribute('tabindex', '-1');\n el.appendChild(olBottomCenter);\n\n const olBottomRight = document.createElement('ol');\n olBottomRight.classList.add(...commonListClasses, ...commonBottomClasses, 'max-lg:hidden', 'lg:col-2', 'xl:col-3', 'items-end', 'justify-end');\n olBottomRight.setAttribute('tabindex', '-1');\n el.appendChild(olBottomRight);\n\n let isLarge = true;\n let isExtraLarge = true;\n\n const lgBreakpointListener = getBreakpointListener((matches) => {\n isLarge = !matches;\n }, getComputedStyle(el).getPropertyValue('--breakpoint-lg').trim());\n\n const xlBreakpointListener = getBreakpointListener((matches) => {\n isExtraLarge = !matches;\n }, getComputedStyle(el).getPropertyValue('--breakpoint-xl').trim());\n\n const listener = {\n added(item) {\n const clone = notificationTemplates[item.template].content.firstElementChild.cloneNode(true);\n clone.classList.add('transform', 'transition-all', 'motion-reduce:transition-none', 'duration-300', 'ease-out', 'opacity-0');\n clone.setAttribute('id', item.id);\n Alpine.addScopeToNode(clone, item.data);\n if (!isExtraLarge && !isLarge) {\n if (item.position.startsWith('top-')) {\n item.position = 'top-center';\n } else {\n item.position = 'bottom-center';\n }\n } else if (!isExtraLarge) {\n if (item.position === 'top-center') {\n item.position = 'top-right';\n } else if (item.position === 'bottom-center') {\n item.position = 'bottom-right';\n }\n }\n if (item.position === 'top-left') {\n clone._h_animation_class = '-translate-x-full';\n clone.classList.add(clone._h_animation_class);\n olTopLeft.appendChild(clone);\n } else if (item.position === 'top-center') {\n clone._h_animation_class = '-translate-y-full';\n clone.classList.add(clone._h_animation_class);\n olTopCenter.appendChild(clone);\n } else if (item.position === 'top-right') {\n clone._h_animation_class = 'translate-x-full';\n clone.classList.add(clone._h_animation_class);\n olTopRight.appendChild(clone);\n } else if (item.position === 'bottom-left') {\n clone._h_animation_class = '-translate-x-full';\n clone.classList.add(clone._h_animation_class);\n olBottomLeft.appendChild(clone);\n } else if (item.position === 'bottom-center') {\n clone._h_animation_class = 'translate-y-full';\n clone.classList.add(clone._h_animation_class);\n olBottomCenter.appendChild(clone);\n } else {\n clone._h_animation_class = 'translate-x-full';\n clone.classList.add(clone._h_animation_class);\n olBottomRight.appendChild(clone);\n }\n Alpine.initTree(clone);\n Alpine.nextTick(() => {\n // Reading 'offsetHeight' forces the browser to apply pending styles first.\n // This guarantees that the animation will always happen.\n clone.offsetHeight;\n clone.classList.remove(clone._h_animation_class, 'opacity-0');\n });\n if (item.timeout > 0) {\n setTimeout(() => {\n Alpine.store('_h_notifications').remove(item.id);\n }, item.timeout);\n }\n },\n removed(id) {\n const element = el.querySelector(`#${id}`);\n if (element) {\n if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) {\n Alpine.destroyTree(element);\n element.remove();\n } else {\n element.addEventListener(\n 'transitionend',\n () => {\n Alpine.destroyTree(element);\n element.remove();\n },\n { once: true }\n );\n element.classList.add(element._h_animation_class, 'opacity-0');\n }\n }\n },\n };\n Alpine.store('_h_notifications').listeners.push(listener);\n if (Alpine.store('_h_notifications').items.length) {\n Alpine.store('_h_notifications').items.forEach((item) => {\n listener.added(item);\n });\n }\n\n cleanup(() => {\n lgBreakpointListener.remove();\n xlBreakpointListener.remove();\n });\n });\n\n Alpine.directive('h-notification-list', (el, { original }) => {\n if (el.tagName !== 'OL' && el.tagName !== 'UL') {\n throw new Error(`${original} must be a list element`);\n }\n el.classList.add('flex', 'flex-col', 'divide-solid', 'divide-y');\n el.setAttribute('data-slot', 'notification-list');\n el.setAttribute('role', 'group');\n });\n\n Alpine.directive('h-notification', (el, { original, modifiers }) => {\n if (el.tagName !== 'LI') {\n throw new Error(`${original} must be a list item element`);\n }\n el.classList.add('pointer-events-auto', 'p-3', 'flex', 'gap-2');\n if (modifiers.includes('floating')) {\n el.classList.add('rounded-lg', 'data-[variant=toast]:rounded-full', 'data-[variant=toast]:py-2', 'border', 'shadow-lg', 'bg-popover', 'text-popover-foreground');\n } else {\n el.classList.add('data-[unread=true]:border-l-warning', 'data-[unread=true]:border-l-3');\n }\n el.setAttribute('data-slot', 'notification');\n el.setAttribute('role', 'alert');\n });\n\n Alpine.directive('h-notification-media', (el) => {\n if (!classListStartsWith(el.classList, 'items-')) {\n el.classList.add('items-center');\n }\n if (!classListStartsWith(el.classList, 'justify-')) {\n el.classList.add('justify-center');\n }\n el.classList.add('flex', 'flex-col', '[&_svg]:pointer-events-none', \"[&_svg:not([class*='size-'])]:size-4\", '[&>svg]:text-current');\n el.setAttribute('data-slot', 'notification-media');\n });\n\n Alpine.directive('h-notification-title', (el) => {\n el.classList.add('line-clamp-1', 'text-sm', 'font-medium', 'tracking-tight');\n el.setAttribute('data-slot', 'notification-title');\n });\n\n Alpine.directive('h-notification-description', (el) => {\n el.classList.add('text-muted-foreground', 'text-sm', 'font-medium', '[&_p]:leading-relaxed');\n el.setAttribute('data-slot', 'notification-description');\n });\n\n Alpine.directive('h-notification-actions', (el) => {\n if (!classListStartsWith(el.classList, 'justify-')) {\n el.classList.add('[&[data-orientation=vertical]]:justify-center');\n }\n el.classList.add('flex', 'gap-2', 'data-[orientation=vertical]:flex-col');\n el.setAttribute('data-slot', 'notification-actions');\n });\n\n Alpine.directive('h-notification-close', (el, { original }, { cleanup, Alpine }) => {\n if (!el.hasAttribute('data-slot')) el.setAttribute('data-slot', 'notification-close');\n let nId;\n function close() {\n Alpine.store('_h_notifications').remove(nId);\n }\n Alpine.findClosest(el.parentElement, (parent) => {\n if (parent.getAttribute('data-slot') === 'notification') {\n nId = parent.id;\n return true;\n }\n return false;\n });\n if (nId) {\n el.addEventListener('click', close);\n cleanup(() => {\n el.removeEventListener('click', close);\n });\n } else {\n console.error(`${original} must be inside a notification with an id`);\n }\n });\n}\n", "import { Ellipsis, createSvg } from './../common/icons';\n\nexport default function (Alpine) {\n Alpine.directive('h-pagination', (el) => {\n el.classList.add('mx-auto', 'flex', 'w-full', 'justify-center');\n el.setAttribute('role', 'navigation');\n el.setAttribute('aria-label', 'pagination');\n el.setAttribute('data-slot', 'pagination');\n });\n\n Alpine.directive('h-pagination-content', (el) => {\n el.classList.add('hbox', 'items-center', 'gap-1');\n el.setAttribute('data-slot', 'pagination-content');\n });\n\n Alpine.directive('h-pagination-item', (el) => {\n el.setAttribute('data-slot', 'pagination-item');\n });\n\n Alpine.directive('h-pagination-link', (el, { modifiers, expression }, { effect, evaluateLater }) => {\n el.classList.add(\n 'inline-flex',\n 'items-center',\n 'justify-center',\n 'whitespace-nowrap',\n 'rounded-control',\n 'text-sm',\n 'font-medium',\n 'transition-all',\n 'motion-reduce:transition-none',\n 'disabled:pointer-events-none',\n 'disabled:opacity-50',\n '[&_svg]:pointer-events-none',\n \"[&_svg:not([class*='size-'])]:size-4\",\n 'shrink-0',\n '[&_svg]:shrink-0',\n 'outline-none',\n 'focus-visible:border-ring',\n 'focus-visible:ring-ring/50',\n 'focus-visible:ring-[calc(var(--spacing)*0.75)]',\n 'h-9',\n 'min-w-9',\n 'text-foreground',\n 'hover:bg-secondary',\n 'hover:text-secondary-foreground',\n 'active:bg-secondary-active'\n );\n if (modifiers[0]) {\n el.classList.add('gap-1', 'px-2.5', modifiers[0] === 'previous' ? 'sm:pl-2.5' : 'sm:pr-2.5');\n } else {\n const getActive = evaluateLater(expression);\n\n effect(() => {\n getActive((active) => {\n if (active) {\n el.classList.remove('bg-transparent');\n el.classList.add('border', 'bg-background');\n el.setAttribute('aria-current', 'page');\n } else {\n el.classList.add('bg-transparent');\n el.classList.remove('border', 'bg-background');\n el.setAttribute('aria-current', false);\n }\n });\n });\n }\n el.setAttribute('data-slot', 'pagination-link');\n });\n\n Alpine.directive('h-pagination-link-label', (el) => {\n el.classList.add('hidden', 'sm:block');\n });\n\n Alpine.directive('h-pagination-ellipsis', (el) => {\n el.classList.add('flex', 'size-9', 'items-center', 'justify-center');\n\n el.appendChild(\n createSvg({\n icon: Ellipsis,\n attrs: {\n 'aria-hidden': true,\n role: 'presentation',\n },\n })\n );\n\n el.setAttribute('data-slot', 'pagination-ellipsis');\n });\n}\n", "import { autoUpdate, computePosition, flip, offset, shift, size } from '@floating-ui/dom';\nimport uuidv4 from '../utils/uuid';\nexport default function (Alpine) {\n Alpine.directive('h-popover-trigger', (el, { expression, modifiers }, { effect, evaluate, evaluateLater, Alpine, cleanup }) => {\n el._h_popover = Alpine.reactive({\n id: undefined,\n controls: `hpc${uuidv4()}`,\n auto: expression ? false : true,\n expanded: expression ? evaluate(expression) : false,\n });\n if (expression) {\n const getExpanded = evaluateLater(expression);\n effect(() => {\n getExpanded((expanded) => {\n el._h_popover.expanded = expanded;\n });\n });\n }\n el.setAttribute('type', 'button');\n if (modifiers.includes('chevron')) {\n el.classList.add('[&_svg]:transition-transform', 'motion-reduce:[&_svg]:transition-none', '[&[aria-expanded=true]>svg:not(:first-child):last-child]:rotate-180');\n }\n\n if (!el.hasAttribute('data-slot')) el.setAttribute('data-slot', 'popover-trigger');\n\n if (el.hasAttribute('id')) {\n el._h_popover.id = el.getAttribute('id');\n } else {\n el._h_popover.id = `hp${uuidv4()}`;\n el.setAttribute('id', el._h_popover.id);\n }\n el.setAttribute('aria-controls', el._h_popover.controls);\n el.setAttribute('aria-haspopup', 'dialog');\n\n const setAttributes = () => {\n el.setAttribute('aria-expanded', el._h_popover.expanded);\n };\n\n const close = () => {\n el._h_popover.expanded = false;\n el.addEventListener('click', handler);\n setAttributes();\n };\n\n const handler = () => {\n el._h_popover.expanded = !el._h_popover.expanded;\n setAttributes();\n Alpine.nextTick(() => {\n if (el._h_popover.auto && el._h_popover.expanded) {\n top.addEventListener('click', close, { once: true });\n el.removeEventListener('click', handler);\n }\n });\n };\n setAttributes();\n\n if (el._h_popover.auto) {\n el.addEventListener('click', handler);\n\n cleanup(() => {\n el.removeEventListener('click', handler);\n top.removeEventListener('click', close);\n });\n } else {\n effect(() => {\n setAttributes();\n });\n }\n });\n\n Alpine.directive('h-popover', (el, { original, modifiers }, { effect, cleanup }) => {\n const popover = (() => {\n let sibling = el.previousElementSibling;\n while (sibling && !Object.prototype.hasOwnProperty.call(sibling, '_h_popover')) {\n sibling = sibling.previousElementSibling;\n }\n return sibling;\n })();\n\n if (!popover) {\n throw new Error(`${original} must be placed after a popover element`);\n }\n el.classList.add(\n 'absolute',\n 'bg-popover',\n 'text-popover-foreground',\n 'hidden',\n 'top-0',\n 'left-0',\n 'z-50',\n 'min-w-[1rem]',\n 'rounded-md',\n 'border',\n 'shadow-md',\n 'outline-hidden',\n 'overflow-auto',\n 'transition-[opacity,scale]',\n 'motion-reduce:transition-none',\n 'duration-100',\n 'ease-out',\n 'opacity-0',\n 'scale-95'\n );\n el.setAttribute('data-slot', 'popover');\n el.setAttribute('role', 'dialog');\n el.setAttribute('tabindex', '-1');\n el.setAttribute('id', popover._h_popover.controls);\n el.setAttribute('aria-labelledby', popover._h_popover.id);\n\n let noScroll = modifiers.includes('no-scroll');\n if (noScroll) {\n el.classList.remove('overflow-auto');\n el.classList.add('overflow-none');\n }\n\n const stopPropagation = (event) => {\n event.stopPropagation();\n };\n\n if (el.getAttribute('data-innerclicks') === 'true') {\n el.addEventListener('click', stopPropagation);\n }\n\n let autoUpdateCleanup;\n\n function updatePosition() {\n computePosition(popover, el, {\n placement: el.getAttribute('data-align') || 'bottom-start',\n middleware: [\n offset(4),\n flip(),\n shift({ padding: 4 }),\n !noScroll\n ? size({\n apply({ availableWidth, availableHeight, elements }) {\n Object.assign(elements.floating.style, {\n maxWidth: `${Math.max(0, availableWidth) - 4}px`,\n maxHeight: `${Math.max(0, availableHeight) - 4}px`,\n });\n },\n })\n : undefined,\n ],\n }).then(({ x, y }) => {\n Object.assign(el.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n el.classList.remove('scale-95', 'opacity-0');\n });\n }\n\n effect(() => {\n if (popover._h_popover.expanded) {\n el.classList.remove('hidden');\n autoUpdateCleanup = autoUpdate(popover, el, updatePosition);\n } else {\n if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) {\n el.classList.add('hidden', 'scale-95', 'opacity-0');\n Object.assign(el.style, {\n left: '0px',\n top: '0px',\n });\n } else {\n el.classList.add('scale-95', 'opacity-0');\n }\n if (autoUpdateCleanup) autoUpdateCleanup();\n }\n });\n\n function onTransitionEnd(event) {\n if (event.target === el && event.target.classList.contains('opacity-0')) {\n el.classList.add('hidden');\n Object.assign(el.style, {\n left: '0px',\n top: '0px',\n });\n }\n }\n\n el.addEventListener('transitionend', onTransitionEnd);\n\n cleanup(() => {\n el.removeEventListener('click', stopPropagation);\n el.removeEventListener('transitionend', onTransitionEnd);\n });\n });\n}\n", "export default function (Alpine) {\n Alpine.directive('h-progress', (el, { expression }, { effect, evaluateLater }) => {\n el.classList.add('bg-secondary', 'relative', 'h-2', 'w-full', 'overflow-hidden', 'rounded-full');\n el.setAttribute('data-slot', 'progress');\n\n const indicator = document.createElement('div');\n indicator.classList.add('bg-primary', 'h-full', 'w-full', 'flex-1', 'transition-all', 'motion-reduce:transition-none', 'rounded-full');\n indicator.setAttribute('data-slot', 'progress-indicator');\n Object.assign(indicator.style, {\n transform: `translateX(-${100 - 0}%)`,\n });\n el.appendChild(indicator);\n\n const getProgress = evaluateLater(expression);\n\n effect(() => {\n getProgress((progress) => {\n Object.assign(indicator.style, {\n transform: `translateX(-${100 - (progress ?? 0)}%)`,\n });\n });\n });\n });\n}\n", "export default function (Alpine) {\n Alpine.directive('h-radio', (el) => {\n el.classList.add(\n '[&>input]:absolute',\n '[&>input]:appearance-none',\n '[&>input]:bg-transparent',\n '[&>input]:border-0',\n '[&>input]:cursor-pointer',\n '[&>input]:focus-visible:border-ring',\n '[&>input]:focus-visible:ring-[calc(var(--spacing)*0.75)]',\n '[&>input]:focus-visible:ring-ring/50',\n '[&>input]:left-0',\n '[&>input]:outline-none',\n '[&>input]:rounded-full',\n '[&>input]:size-full',\n '[&>input]:top-0',\n 'aspect-square',\n 'before:bg-clip-padding',\n 'before:bg-primary',\n 'before:block',\n 'before:border-3',\n 'before:border-transparent',\n 'before:invisible',\n 'before:pointer-events-none',\n 'before:rounded-full',\n 'before:size-full',\n 'bg-input-inner',\n 'border',\n 'border-input',\n 'dark:has-[input[aria-invalid=true]]:ring-negative/40',\n 'dark:has-[input:invalid]:ring-negative/40',\n 'has-[input[aria-invalid=true]]:border-negative',\n 'has-[input[aria-invalid=true]]:ring-negative/20',\n 'has-[input:checked]:before:visible',\n 'has-[input:disabled]:cursor-not-allowed',\n 'has-[input:disabled]:opacity-50',\n 'has-[input:invalid]:border-negative',\n 'has-[input:invalid]:ring-negative/20',\n 'relative',\n 'rounded-full',\n 'shadow-input',\n 'shrink-0',\n 'size-5'\n );\n el.setAttribute('tabindex', '-1');\n el.setAttribute('data-slot', 'radio');\n });\n}\n", "import { create } from 'nouislider';\n\nexport default function (Alpine) {\n Alpine.directive('h-range', (el, { expression }, { evaluate, cleanup }) => {\n el.classList.add('harmonia-slider');\n el.setAttribute('data-slot', 'range');\n create(el, evaluate(expression));\n if (Object.prototype.hasOwnProperty.call(el, '_x_model')) {\n el.noUiSlider.on('change', (values) => {\n el._x_model.set(values);\n el.dispatchEvent(new Event('change', { bubbles: true }));\n });\n\n cleanup(() => {\n el.noUiSlider.off('change');\n });\n }\n });\n}\n", "import { autoUpdate, computePosition, flip, offset, shift, size } from '@floating-ui/dom';\nimport uuidv4 from '../utils/uuid';\nimport { Check, ChevronDown, Search, createSvg } from './../common/icons';\nimport { sizeObserver } from './../common/input-size';\nconst FilterType = Object.freeze({\n 'starts-with': 0,\n contains: 1,\n 'contains-each': 2,\n none: 3,\n});\n\nexport default function (Alpine) {\n Alpine.directive('h-select', (el, { modifiers }, { Alpine, cleanup }) => {\n el._h_select = Alpine.reactive({\n fieldLabelId: undefined,\n trigger: undefined,\n controls: `hsc${uuidv4()}`,\n expanded: false,\n multiple: false,\n label: [],\n refreshLabel: undefined,\n listeners: [],\n search: '',\n focusSearch: undefined,\n filterType: FilterType['starts-with'],\n });\n el._h_model = {\n set: undefined,\n get: undefined,\n };\n el.classList.add('cursor-pointer', 'outline-none', 'transition-colors', 'transition-shadow', 'motion-reduce:transition-none', 'duration-200', 'w-full', 'has-[input:disabled]:pointer-events-none', 'has-[input:disabled]:opacity-50');\n if (modifiers.includes('table')) {\n el.classList.add(\n 'h-10',\n 'flex',\n 'focus-visible:inset-ring-ring/50',\n 'focus-visible:inset-ring-2',\n '[&>[data-slot=\"select-input\"]]:hover:bg-table-hover',\n '[&>[data-slot=\"select-input\"]]:hover:text-table-hover-foreground',\n '[&>[data-slot=\"select-input\"]]:active:!bg-table-active',\n '[&>[data-slot=\"select-input\"]]:active:!text-table-active-foreground'\n );\n el.setAttribute('data-slot', 'cell-input-select');\n } else {\n el.classList.add(\n 'border-input',\n 'has-focus-visible:border-ring',\n 'has-focus-visible:ring-[calc(var(--spacing)*0.75)]',\n 'has-focus-visible:ring-ring/50',\n 'dark:has-[input[aria-invalid=true]]:ring-negative/40',\n 'dark:has-[input:invalid]:ring-negative/40',\n 'has-[input[aria-invalid=true]]:border-negative',\n 'has-[input[aria-invalid=true]]:ring-negative/20',\n 'has-[input:invalid]:border-negative',\n 'has-[input:invalid]:ring-negative/20',\n '[&>[data-slot=\"select-input\"]]:hover:bg-secondary-hover',\n '[&>[data-slot=\"select-input\"]]:hover:text-secondary-foreground',\n '[&>[data-slot=\"select-input\"]]:active:bg-secondary-active',\n '[&>[data-slot=\"select-input\"]]:active:text-secondary-foreground',\n '[&>[data-slot=\"select-input\"]]:rounded-control',\n 'rounded-control',\n 'border',\n 'bg-input-inner',\n 'text-sm',\n 'whitespace-nowrap',\n 'shadow-input'\n );\n el.setAttribute('data-slot', 'select');\n\n const observer = sizeObserver(el);\n\n cleanup(() => {\n observer.disconnect();\n });\n }\n });\n\n Alpine.directive('h-select-input', (el, { original }, { effect, cleanup, Alpine }) => {\n if (el.tagName !== 'INPUT') {\n throw new Error(`${original} must be an input of type \"text\"`);\n }\n\n const select = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_select'));\n const label = (() => {\n const field = Alpine.findClosest(el.parentElement, (parent) => parent.getAttribute('data-slot') === 'field');\n if (field) {\n return field.querySelector('[data-slot=field-label]');\n }\n return;\n })();\n\n if (!select) {\n throw new Error(`${original} must be inside a select element`);\n } else if (Object.prototype.hasOwnProperty.call(el, '_x_model')) {\n select._h_select.multiple = Array.isArray(el._x_model.get());\n select._h_model.set = (value) => {\n if (select._h_select.multiple) {\n const vIndex = el._x_model.get().indexOf(value);\n if (vIndex > -1) {\n const newArr = el._x_model.get();\n newArr.splice(vIndex, 1);\n el._x_model.set(newArr);\n } else {\n const arr = el._x_model.get();\n arr.push(value);\n el._x_model.set(arr);\n }\n } else if (el._x_model.get() !== value) {\n el._x_model.set(value);\n } else {\n el._x_model.set('');\n }\n el.dispatchEvent(new Event('change', { bubbles: true }));\n };\n select._h_model.get = el._x_model.get;\n } else {\n select._h_model.set = (value) => {\n el.value = value;\n el.dispatchEvent(new Event('change', { bubbles: true }));\n };\n select._h_model.get = () => el.value;\n }\n\n el.classList.add('hidden');\n el.setAttribute('type', 'text');\n\n const fakeTrigger = document.createElement('span');\n const displayValue = document.createElement('span');\n displayValue.classList.add('text-left', 'truncate', 'w-full');\n fakeTrigger.appendChild(displayValue);\n fakeTrigger.setAttribute('data-slot', 'select-value');\n fakeTrigger.setAttribute('tabindex', '0');\n fakeTrigger.classList.add('flex', 'items-center', 'justify-between', 'gap-2', 'outline-none', 'pl-3', 'pr-2', 'size-full', '[&[aria-expanded=true]>svg]:rotate-180');\n select._h_select.trigger = fakeTrigger;\n\n let labelObserver;\n\n if (label) {\n if (!label.hasAttribute('id')) {\n label.setAttribute('id', `hsil${uuidv4()}`);\n }\n select._h_select.fieldLabelId = label.getAttribute('id');\n fakeTrigger.setAttribute('aria-labelledby', label.getAttribute('id'));\n\n labelObserver = new MutationObserver(() => {\n select._h_select.fieldLabelId = label.getAttribute('id');\n });\n\n labelObserver.observe(label, { attributes: true, attributeFilter: ['id'] });\n }\n\n function getPlaceholder() {\n if (!el.value) {\n const value = el.getAttribute('placeholder');\n if (value) {\n displayValue.innerText = value;\n displayValue.classList.add('text-muted-foreground');\n } else {\n displayValue.innerText = '';\n displayValue.classList.remove('text-muted-foreground');\n }\n }\n }\n\n getPlaceholder();\n\n const observer = new MutationObserver(() => {\n getPlaceholder();\n });\n\n observer.observe(el, { attributes: true, attributeFilter: ['placeholder'] });\n\n effect(() => {\n if (select._h_select.label.length === 1) {\n displayValue.innerText = select._h_select.label[0];\n displayValue.classList.remove('text-muted-foreground');\n } else if (select._h_select.label.length > 1) {\n displayValue.innerText = select._h_select.label.join(', ');\n displayValue.classList.remove('text-muted-foreground');\n } else {\n getPlaceholder();\n }\n });\n\n fakeTrigger.setAttribute('data-slot', 'select-input');\n fakeTrigger.setAttribute('aria-controls', select._h_select.controls);\n fakeTrigger.setAttribute('aria-haspopup', 'listbox');\n fakeTrigger.setAttribute('aria-autocomplete', 'none');\n fakeTrigger.setAttribute('role', 'combobox');\n\n effect(() => {\n fakeTrigger.setAttribute('aria-expanded', select._h_select.expanded);\n });\n\n const close = (focusSelect = false) => {\n select._h_select.expanded = false;\n top.removeEventListener('click', close);\n el.parentElement.removeEventListener('keydown', onKeyDown);\n options = null;\n if (focusSelect) fakeTrigger.focus();\n };\n\n let content;\n let options;\n\n const onKeyDown = (event) => {\n switch (event.key) {\n case 'Down':\n case 'ArrowDown': {\n event.preventDefault();\n let nextIndex = 0;\n for (let o = 0; o < options.length; o++) {\n if (options[o].getAttribute('tabindex') === '0') {\n options[o].setAttribute('tabindex', '-1');\n if (o < options.length - 1) nextIndex = o + 1;\n break;\n }\n }\n if (options[nextIndex].getAttribute('data-disabled') === 'true') {\n if (nextIndex === options.length - 1) nextIndex = 0;\n for (let o = nextIndex; o < options.length; o++) {\n if (options[o].getAttribute('data-disabled') !== 'true') {\n nextIndex = o;\n break;\n }\n }\n }\n options[nextIndex].setAttribute('tabindex', '0');\n options[nextIndex].focus();\n break;\n }\n case 'Up':\n case 'ArrowUp': {\n event.preventDefault();\n let prevIndex = options.length - 1;\n for (let o = options.length - 1; o >= 0; o--) {\n if (options[o].getAttribute('tabindex') === '0') {\n options[o].setAttribute('tabindex', '-1');\n if (o !== 0) prevIndex = o - 1;\n break;\n }\n }\n if (options[prevIndex].getAttribute('data-disabled') === 'true') {\n if (prevIndex === 0) prevIndex = options.length - 1;\n for (let o = prevIndex; o >= 0; o--) {\n if (options[o].getAttribute('data-disabled') !== 'true') {\n prevIndex = o;\n break;\n }\n }\n }\n options[prevIndex].setAttribute('tabindex', '0');\n options[prevIndex].focus();\n break;\n }\n case 'Home':\n case 'PageUp':\n event.preventDefault();\n for (let o = 0; o < options.length; o++) {\n if (options[o].getAttribute('tabindex') === '0') {\n options[o].setAttribute('tabindex', '-1');\n break;\n }\n }\n options[0].setAttribute('tabindex', '0');\n options[0].focus();\n break;\n case 'End':\n case 'PageDown':\n event.preventDefault();\n for (let o = 0; o < options.length; o++) {\n if (options[o].getAttribute('tabindex') === '0') {\n options[o].setAttribute('tabindex', '-1');\n break;\n }\n }\n options[options.length - 1].setAttribute('tabindex', '0');\n options[options.length - 1].focus();\n break;\n case ' ':\n case 'Enter':\n event.preventDefault();\n if (!select._h_select.multiple) {\n close(true);\n }\n break;\n case 'Escape':\n event.preventDefault();\n close(true);\n break;\n case 'Tab':\n close();\n break;\n case 'Control':\n case 'Shift':\n case 'Alt':\n break;\n default:\n if (select._h_select.focusSearch) {\n for (let o = 0; o < options.length; o++) {\n if (options[o].getAttribute('tabindex') === '0') {\n options[o].setAttribute('tabindex', '-1');\n break;\n }\n }\n select._h_select.focusSearch();\n }\n }\n };\n\n const onClick = () => {\n select._h_select.expanded = !select._h_select.expanded;\n if (select._h_select.expanded) {\n if (!content) content = select.querySelector(`#${select._h_select.controls}`);\n options = content.querySelectorAll('[role=option]');\n }\n Alpine.nextTick(() => {\n if (select._h_select.expanded) {\n top.addEventListener('click', close, { once: true });\n el.parentElement.addEventListener('keydown', onKeyDown);\n } else {\n top.removeEventListener('click', close);\n el.parentElement.removeEventListener('keydown', onKeyDown);\n options = null;\n }\n });\n };\n\n const onPress = (event) => {\n if (event.key === 'Escape' && select._h_select.expanded) close(true);\n else if (event.key === 'Enter') {\n event.preventDefault();\n onClick();\n } else if (event.key === ' ') {\n event.preventDefault();\n setTimeout(() => onClick(), 0);\n }\n };\n\n fakeTrigger.addEventListener('keydown', onPress);\n fakeTrigger.addEventListener('click', onClick);\n\n const chevronDown = createSvg({\n icon: ChevronDown,\n classes: 'opacity-70 text-inherit size-4 shrink-0 pointer-events-none transition-transform motion-reduce:transition-none duration-200',\n attrs: {\n 'aria-hidden': true,\n role: 'presentation',\n },\n });\n\n el.parentElement.appendChild(fakeTrigger);\n fakeTrigger.appendChild(chevronDown);\n\n const onInputChange = () => {\n select._h_select.label.length = 0;\n for (let i = 0; i < select._h_select.listeners.length; i++) {\n const label = select._h_select.listeners[i](select._h_model.get());\n if (label) {\n select._h_select.label.push(label);\n }\n }\n };\n\n select._h_select.refreshLabel = onInputChange;\n\n el.addEventListener('change', onInputChange);\n\n cleanup(() => {\n fakeTrigger.removeEventListener('click', onClick);\n fakeTrigger.removeEventListener('keydown', onPress);\n el.parentElement.removeEventListener('keydown', onKeyDown);\n top.removeEventListener('click', close);\n el.removeEventListener('change', onInputChange);\n observer.disconnect();\n if (labelObserver) {\n labelObserver.disconnect();\n }\n });\n });\n\n Alpine.directive('h-select-content', (el, { original }, { effect, cleanup, Alpine }) => {\n const select = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_select'));\n if (!select) {\n throw new Error(`${original} must be inside a select element`);\n }\n el.classList.add(\n 'absolute',\n 'bg-popover',\n 'text-popover-foreground',\n 'hidden',\n 'p-1',\n 'top-0',\n 'left-0',\n 'z-50',\n 'min-w-[1rem]',\n 'overflow-x-hidden',\n 'overflow-y-auto',\n 'rounded-md',\n 'border',\n 'shadow-md',\n 'transition-[opacity,scale]',\n 'motion-reduce:transition-none',\n 'duration-100',\n 'ease-out',\n 'opacity-0',\n 'scale-95'\n );\n el.setAttribute('data-slot', 'select-content');\n el.setAttribute('role', 'listbox');\n el.setAttribute('id', select._h_select.controls);\n el.setAttribute('tabindex', '-1');\n\n if (!select._h_select.trigger) {\n throw new Error(`${original}: trigger not found`);\n }\n\n let autoUpdateCleanup;\n\n function updatePosition() {\n computePosition(select._h_select.trigger, el, {\n placement: el.getAttribute('data-align') || 'bottom-start',\n middleware: [\n offset(4),\n flip(),\n shift({ padding: 4 }),\n size({\n apply({ availableWidth, availableHeight, elements }) {\n Object.assign(elements.floating.style, {\n maxWidth: `${Math.max(0, availableWidth) - 4}px`,\n maxHeight: `${Math.max(0, availableHeight) - 4}px`,\n });\n },\n }),\n ],\n }).then(({ x, y }) => {\n Object.assign(el.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n el.classList.remove('scale-95', 'opacity-0');\n });\n }\n\n effect(() => {\n el.setAttribute('aria-labelledby', select._h_select.fieldLabelId);\n });\n\n effect(() => {\n if (select._h_select.expanded) {\n el.classList.remove('hidden');\n autoUpdateCleanup = autoUpdate(select._h_select.trigger, el, updatePosition);\n } else {\n if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) {\n el.classList.add('hidden', 'scale-95', 'opacity-0');\n Object.assign(el.style, {\n left: '0px',\n top: '0px',\n });\n } else {\n el.classList.add('scale-95', 'opacity-0');\n }\n if (autoUpdateCleanup) autoUpdateCleanup();\n }\n });\n\n function onTransitionEnd(event) {\n if (event.target === el && event.target.classList.contains('opacity-0')) {\n el.classList.add('hidden');\n Object.assign(el.style, {\n left: '0px',\n top: '0px',\n });\n }\n }\n\n el.addEventListener('transitionend', onTransitionEnd);\n\n cleanup(() => {\n el.removeEventListener('transitionend', onTransitionEnd);\n });\n });\n\n Alpine.directive('h-select-search', (el, { original }, { effect, cleanup, Alpine }) => {\n const select = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_select'));\n if (!select) {\n throw new Error(`${original} must be inside an h-select element`);\n } else {\n select._h_select.filterType = FilterType[el.getAttribute('data-filter')] ?? FilterType['starts-with'];\n }\n el.classList.add('flex', 'h-8', 'items-center', 'gap-2', 'border-b', 'px-2');\n el.setAttribute('data-slot', 'select-search');\n el.setAttribute('aria-autocomplete', select._h_select.filterType === FilterType.none ? 'both' : 'list');\n el.setAttribute('aria-controls', select._h_select.controls);\n el.setAttribute('aria-haspopup', 'listbox');\n el.setAttribute('role', 'combobox');\n el.setAttribute('autocomplete', 'off');\n el.setAttribute('autocorrect', 'off');\n el.setAttribute('spellcheck', 'false');\n const searchIcon = createSvg({ icon: Search, classes: 'size-4 shrink-0 opacity-50', attrs: { 'aria-hidden': true, role: 'presentation' } });\n const searchInput = document.createElement('input');\n searchInput.setAttribute('type', 'text');\n searchInput.setAttribute('data-slot', 'select-input');\n searchInput.classList.add('placeholder:text-muted-foreground', 'flex', 'h-10', 'w-full', 'rounded-md', 'bg-transparent', 'py-3', 'text-sm', 'outline-hidden', 'disabled:cursor-not-allowed', 'disabled:opacity-50');\n el.appendChild(searchIcon);\n el.appendChild(searchInput);\n\n select._h_select.focusSearch = () => {\n searchInput.focus();\n };\n\n function onActivate(event) {\n if (event.type === 'keydown' && (event.key === 'Escape' || event.key === 'ArrowDown' || event.key === 'Down')) return;\n event.stopPropagation();\n }\n\n el.addEventListener('click', onActivate);\n el.addEventListener('keydown', onActivate);\n\n function onInput() {\n select._h_select.search = searchInput.value.toLowerCase();\n }\n\n if (select._h_select.filterType !== FilterType.none) {\n searchInput.addEventListener('keyup', onInput);\n }\n\n effect(() => {\n if (select._h_select.expanded) searchInput.focus({ preventScroll: true });\n el.setAttribute('aria-expanded', select._h_select.expanded);\n });\n\n const observer = new MutationObserver(() => {\n select._h_select.filterType = FilterType[el.getAttribute('data-filter')] ?? FilterType['starts-with'];\n el.setAttribute('aria-autocomplete', select._h_select.filterType === FilterType.none ? 'both' : 'list');\n });\n\n observer.observe(el, { attributes: true, attributeFilter: ['data-filter'] });\n\n cleanup(() => {\n el.removeEventListener('click', onActivate);\n el.removeEventListener('keydown', onActivate);\n if (select._h_select.filterType !== FilterType.none) searchInput.removeEventListener('keyup', onInput);\n observer.disconnect();\n });\n });\n\n Alpine.directive('h-select-group', (el, _, { effect }) => {\n el.setAttribute('data-slot', 'select-group');\n el._h_selectGroup = Alpine.reactive({\n labelledby: undefined,\n });\n\n effect(() => {\n if (el._h_selectGroup.labelledby) {\n el.setAttribute('aria-labelledby', el._h_selectGroup.labelledby);\n }\n });\n });\n\n Alpine.directive('h-select-label', (el) => {\n el.classList.add('text-muted-foreground', 'px-2', 'py-1.5', 'text-xs');\n el.setAttribute('data-slot', 'select-label');\n\n const selectGroup = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_selectGroup'));\n if (selectGroup) {\n const id = `hsl${uuidv4()}`;\n el.setAttribute('id', id);\n selectGroup._h_selectGroup.labelledby = id;\n }\n });\n\n Alpine.directive('h-select-option', (el, { original, expression }, { effect, evaluateLater, cleanup }) => {\n const select = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_select'));\n if (!select) {\n throw new Error(`${original} must be inside an h-select element`);\n }\n\n el.classList.add(\n 'focus:bg-primary',\n 'focus:text-primary-foreground',\n 'hover:bg-secondary-hover',\n 'hover:text-secondary-foreground',\n \"[&_svg:not([class*='text-'])]:text-muted-foreground\",\n \"focus:[&_svg:not([class*='text-'])]:text-primary-foreground\",\n \"hover:[&_svg:not([class*='text-'])]:text-secondary-foreground\",\n 'relative',\n 'flex',\n 'w-full',\n 'cursor-default',\n 'items-center',\n 'gap-2',\n 'rounded-sm',\n 'py-1.5',\n 'pr-8',\n 'pl-2',\n 'text-sm',\n 'outline-hidden',\n 'select-none',\n 'data-[disabled]:pointer-events-none',\n 'data-[disabled]:opacity-50',\n '[&_svg]:pointer-events-none',\n '[&_svg]:shrink-0',\n \"[&_svg:not([class*='size-'])]:size-4\",\n '*:[span]:last:flex',\n '*:[span]:last:items-center',\n '*:[span]:last:gap-2'\n );\n el.setAttribute('data-slot', 'select-option');\n el.setAttribute('tabindex', '-1');\n\n const id = `hso${uuidv4()}`;\n el.setAttribute('role', 'option');\n el.setAttribute('aria-labelledby', id);\n\n const indicatorEl = document.createElement('span');\n const labelEl = document.createElement('span');\n labelEl.setAttribute('id', id);\n indicatorEl.classList.add('absolute', 'right-2', 'flex', 'size-3.5', 'items-center', 'justify-center', 'invisible');\n indicatorEl.setAttribute('aria-hidden', 'true');\n const check = createSvg({ icon: Check, attrs: { 'aria-hidden': true, role: 'presentation' } });\n indicatorEl.appendChild(check);\n\n el.appendChild(indicatorEl);\n el.appendChild(labelEl);\n\n function getValue() {\n return el.getAttribute('data-value');\n }\n\n const getLabel = evaluateLater(expression);\n\n effect(() => {\n getLabel((label) => {\n labelEl.innerText = label;\n select._h_select.refreshLabel();\n });\n });\n\n effect(() => {\n if (select._h_select.search) {\n if (select._h_select.filterType === FilterType['starts-with']) {\n if (!labelEl.innerText.toLowerCase().startsWith(select._h_select.search)) {\n el.classList.add('hidden');\n } else el.classList.remove('hidden');\n } else if (select._h_select.filterType === FilterType.contains) {\n if (!labelEl.innerText.toLowerCase().includes(select._h_select.search)) {\n el.classList.add('hidden');\n } else el.classList.remove('hidden');\n } else if (select._h_select.filterType === FilterType['contains-each']) {\n const terms = select._h_select.search.split(' ');\n const label = labelEl.innerText.toLowerCase();\n if (!terms.every((term) => label.includes(term))) el.classList.add('hidden');\n else el.classList.remove('hidden');\n } else {\n el.classList.remove('hidden');\n }\n } else el.classList.remove('hidden');\n });\n\n function setSelectedState(selected) {\n if (selected) {\n indicatorEl.classList.remove('invisible');\n el.setAttribute('aria-selected', 'true');\n return labelEl.innerText;\n }\n indicatorEl.classList.add('invisible');\n el.setAttribute('aria-selected', 'false');\n return '';\n }\n\n const onModelChange = (value) => {\n return setSelectedState(select._h_select.multiple ? value.includes(getValue()) : value === getValue());\n };\n\n select._h_select.listeners.push(onModelChange);\n\n const onActivate = (event) => {\n if ((event.type === 'keydown' && (event.key === 'Enter' || event.key === ' ')) || event.type === 'click') {\n if (select._h_select.multiple) {\n event.stopPropagation();\n const vIndex = select._h_model.get().indexOf(getValue());\n if (vIndex > -1) {\n const val = select._h_model.get().splice(vIndex, 1);\n select._h_model.set(val);\n } else {\n select._h_model.get().push(getValue());\n }\n } else if (select._h_model.get() !== getValue()) {\n select._h_model.set(getValue());\n } else if (select.getAttribute('data-clearable') === 'true') {\n select._h_model.set('');\n }\n }\n };\n\n el.addEventListener('click', onActivate);\n el.addEventListener('keydown', onActivate);\n\n cleanup(() => {\n el.removeEventListener('click', onActivate);\n el.removeEventListener('keydown', onActivate);\n const lIndex = select._h_select.listeners.indexOf(onModelChange);\n select._h_select.listeners.splice(lIndex, 1);\n });\n });\n\n Alpine.directive('h-select-separator', (el) => {\n el.classList.add('bg-border', 'pointer-events-none', '-mx-1', 'my-1', 'h-px');\n el.setAttribute('data-slot', 'select-separator');\n el.setAttribute('aria-hidden', 'true');\n el.setAttribute('role', 'none');\n });\n}\n", "export default function (Alpine) {\n Alpine.directive('h-separator', (el) => {\n el.classList.add(\n 'bg-border',\n 'shrink-0',\n 'data-[orientation=horizontal]:h-px',\n 'data-[orientation=horizontal]:w-full',\n 'data-[orientation=vertical]:h-full',\n 'data-[orientation=vertical]:w-px',\n 'data-[orientation=vertical]:[[data-slot=input-group]_&]:h-auto',\n 'data-[orientation=vertical]:[[data-slot=input-group]_&]:self-stretch',\n 'data-[orientation=horizontal]:[[data-slot=input-group]_&]:w-auto',\n 'data-[orientation=horizontal]:[[data-slot=input-group]_&]:grow'\n );\n el.setAttribute('role', 'none');\n el.setAttribute('data-slot', 'separator');\n });\n}\n", "export default function (Alpine) {\n Alpine.directive('h-sheet-overlay', (el, { expression }, { effect, evaluate, evaluateLater, cleanup }) => {\n el._h_sheet_overlay = {\n showSheet: undefined,\n hideSheet: undefined,\n state: Alpine.reactive({\n open: evaluate(expression || 'false'),\n }),\n };\n el.classList.add('hidden', 'fixed', 'inset-0', 'z-50', 'bg-black/50', 'transition-opacity', 'motion-reduce:transition-none', 'duration-200', 'ease-out', 'opacity-0');\n el.setAttribute('tabindex', '-1');\n el.setAttribute('data-slot', 'sheet-overlay');\n\n const getIsOpen = evaluateLater(expression);\n\n effect(() => {\n getIsOpen((isOpen) => {\n el._h_sheet_overlay.state.open = isOpen;\n });\n });\n\n effect(() => {\n if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) {\n if (el._h_sheet_overlay.state.open) {\n el.classList.remove('hidden', 'opacity-0');\n } else {\n el.classList.add('hidden', 'opacity-0');\n }\n } else if (el._h_sheet_overlay.state.open) {\n el.classList.remove('hidden');\n el.offsetHeight;\n el.classList.remove('opacity-0');\n } else {\n el.classList.add('opacity-0');\n }\n });\n\n function onTransitionEnd(event) {\n if (event.target === el && event.target.classList.contains('opacity-0')) {\n el.classList.add('hidden');\n }\n }\n\n el.addEventListener('transitionend', onTransitionEnd);\n\n const onClick = (event) => {\n if (event.target.getAttribute('data-slot') === 'sheet-overlay') {\n evaluate(`${expression} = false`);\n }\n };\n\n el.addEventListener('click', onClick);\n cleanup(() => {\n el.removeEventListener('click', onClick);\n el.removeEventListener('transitionend', onTransitionEnd);\n });\n });\n\n Alpine.directive('h-sheet', (el, { original }, { effect, cleanup }) => {\n const overlay = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_sheet_overlay'));\n if (!overlay) {\n throw new Error(`${original} must be placed inside a sheet overlay`);\n }\n el.classList.add('hidden', 'bg-background', 'fixed', 'shadow-lg', 'transform', 'transition-all', 'motion-reduce:transition-none', 'duration-200', 'ease-out');\n el.setAttribute('data-slot', 'sheet');\n\n let lastSide;\n\n const getTranslateClass = (side) => {\n switch (side) {\n case 'top':\n return '-translate-y-full';\n case 'right':\n return 'translate-x-full';\n case 'left':\n return '-translate-x-full';\n default:\n return 'translate-y-full';\n }\n };\n\n const getSideClasses = (side) => {\n switch (side) {\n case 'top':\n return ['inset-x-0', 'top-0', 'h-auto'];\n case 'right':\n return ['inset-y-0', 'right-0', 'h-full', 'w-auto', 'sm:max-w-sm'];\n case 'left':\n return ['inset-y-0', 'left-0', 'h-full', 'w-auto', 'sm:max-w-sm'];\n default:\n return ['inset-x-0', 'bottom-0', 'h-auto'];\n }\n };\n\n const setSide = (side) => {\n el.classList.remove(...getSideClasses(lastSide));\n el.classList.add(...getSideClasses(side));\n lastSide = side;\n };\n\n const observer = new MutationObserver(() => {\n setSide(el.getAttribute('data-align'));\n });\n\n setSide(el.getAttribute('data-align'));\n el.classList.add(getTranslateClass(lastSide));\n\n function onTransitionEnd(event) {\n if (event.target === el && event.target.classList.contains(getTranslateClass(lastSide))) {\n el.classList.add('hidden');\n }\n }\n\n el.addEventListener('transitionend', onTransitionEnd);\n\n effect(() => {\n if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) {\n if (overlay._h_sheet_overlay.state.open) {\n el.classList.remove('hidden', getTranslateClass(lastSide));\n } else {\n el.classList.add('hidden', getTranslateClass(lastSide));\n }\n } else if (overlay._h_sheet_overlay.state.open) {\n el.classList.remove('hidden');\n el.offsetHeight;\n el.classList.remove(getTranslateClass(lastSide));\n } else {\n el.classList.add(getTranslateClass(lastSide));\n }\n });\n\n observer.observe(el, { attributes: true, attributeFilter: ['data-align'] });\n\n cleanup(() => {\n observer.disconnect();\n el.removeEventListener('transitionend', onTransitionEnd);\n });\n });\n}\n", "import uuidv4 from '../utils/uuid';\nimport { ChevronRight, createSvg } from './../common/icons';\nexport default function (Alpine) {\n Alpine.directive('h-sidebar', (el, { modifiers }, { cleanup }) => {\n el.classList.add('group/sidebar', 'bg-sidebar', 'text-sidebar-foreground', 'border-sidebar-border', 'vbox', 'h-full', 'w-(--sidebar-width,16rem)', 'data-[collapsed=true]:w-min');\n if (modifiers.includes('right')) el.classList.add('border-l');\n else el.classList.add('border-r');\n\n el.setAttribute('data-slot', 'sidebar');\n\n const setFloating = () => {\n if (el.getAttribute('data-floating') === 'true') {\n el.classList.add('border', 'rounded-lg', 'shadow-sm');\n } else {\n el.classList.remove('border', 'rounded-lg', 'shadow-sm');\n }\n };\n\n setFloating();\n\n const observer = new MutationObserver(() => {\n setFloating();\n });\n\n observer.observe(el, { attributes: true, attributeFilter: ['data-floating'] });\n\n cleanup(() => {\n observer.disconnect();\n });\n });\n\n Alpine.directive('h-sidebar-header', (el) => {\n el.classList.add('vbox', 'gap-2', 'px-2', 'h-12', 'justify-center', 'border-b');\n if (el.dataset.borderless && el.dataset.borderless === 'true') el.classList.remove('border-b');\n el.setAttribute('data-slot', 'sidebar-header');\n });\n\n Alpine.directive('h-sidebar-content', (el) => {\n el.classList.add('vbox', 'min-h-0', 'flex-1', 'overflow-auto', 'scrollbar-none');\n el.setAttribute('data-slot', 'sidebar-content');\n });\n\n Alpine.directive('h-sidebar-group', (el, { expression, modifiers }, { effect, evaluate, evaluateLater, Alpine }) => {\n el.classList.add('relative', 'vbox', 'w-full', 'min-w-0', 'p-2');\n el.setAttribute('data-slot', 'sidebar-group');\n el._h_sidebar_group = {\n collapsable: modifiers.includes('collapsed'),\n controlId: undefined,\n controls: undefined,\n state: Alpine.reactive({\n collapsed: evaluate(expression || 'false'),\n }),\n };\n if (expression) {\n el._h_sidebar_group.state = Alpine.reactive({\n collapsed: evaluate(expression || 'false'),\n });\n const getCollapsed = evaluateLater(expression);\n effect(() => {\n getCollapsed((collapsed) => {\n el._h_sidebar_group.state.collapsed = collapsed;\n });\n });\n }\n });\n\n Alpine.directive('h-sidebar-group-label', (el, { original }, { cleanup }) => {\n const group = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_sidebar_group'));\n if (!group) {\n throw new Error(`${original} must be placed inside a sidebar group`);\n }\n el.classList.add(\n 'ring-sidebar-ring',\n 'flex',\n 'h-8',\n 'shrink-0',\n 'items-center',\n 'rounded-md',\n 'px-2',\n 'font-medium',\n 'outline-hidden',\n 'transition-[margin,opacity]',\n 'motion-reduce:transition-none',\n 'duration-200',\n 'ease-linear',\n 'focus-visible:ring-2',\n '[&>svg]:size-4',\n '[&>svg]:shrink-0',\n 'group-data-[collapsed=true]/sidebar:!hidden'\n );\n el.setAttribute('data-slot', 'sidebar-group-label');\n\n if (group._h_sidebar_group.collapsable) {\n el.classList.add('text-sidebar-foreground', 'text-sm', 'hover:bg-sidebar-secondary', 'hover:text-sidebar-secondary-foreground', 'active:bg-sidebar-secondary', 'active:text-sidebar-secondary-foreground');\n\n if (el.hasAttribute('id')) {\n group._h_sidebar_group.controlId = el.getAttribute('id');\n } else {\n group._h_sidebar_group.controlId = `sgl${uuidv4()}`;\n el.setAttribute('id', group._h_sidebar_group.controlId);\n }\n group._h_sidebar_group.controls = `sgc${uuidv4()}`;\n el.setAttribute('aria-controls', group._h_sidebar_group.controls);\n el.setAttribute('aria-expanded', !group._h_sidebar_group.state.collapsed);\n\n const handler = () => {\n group._h_sidebar_group.state.collapsed = !group._h_sidebar_group.state.collapsed;\n el.setAttribute('aria-expanded', !group._h_sidebar_group.state.collapsed);\n };\n\n el.appendChild(\n createSvg({\n icon: ChevronRight,\n classes: 'ml-auto pointer-events-none size-4 shrink-0 transition-transform motion-reduce:transition-none duration-200 [[aria-expanded=true]>&]:rotate-90',\n attrs: {\n 'aria-hidden': true,\n role: 'presentation',\n },\n })\n );\n\n el.addEventListener('click', handler);\n\n cleanup(() => {\n el.removeEventListener('click', handler);\n });\n } else {\n el.classList.add('text-sidebar-foreground/70', 'text-xs');\n }\n });\n\n Alpine.directive('h-sidebar-group-action', (el) => {\n el.classList.add(\n 'text-sidebar-foreground',\n 'ring-sidebar-ring',\n 'hover:bg-sidebar-secondary',\n 'hover:text-sidebar-secondary-foreground',\n 'absolute',\n 'top-3.5',\n 'right-3',\n 'flex',\n 'aspect-square',\n 'w-5',\n 'items-center',\n 'justify-center',\n 'rounded-md',\n 'p-0',\n 'outline-hidden',\n 'transition-transform',\n 'motion-reduce:transition-none',\n 'focus-visible:ring-2',\n '[&>svg]:size-4',\n '[&>svg]:shrink-0',\n 'after:absolute',\n 'after:-inset-2',\n 'md:after:hidden',\n 'group-data-[collapsed=true]/sidebar:hidden'\n );\n if (el.tagName !== 'BUTTON') {\n el.setAttribute('role', 'button');\n } else {\n el.setAttribute('type', 'button');\n }\n el.setAttribute('data-slot', 'sidebar-group-action');\n });\n\n Alpine.directive('h-sidebar-group-content', (el, { original }, { effect }) => {\n const group = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_sidebar_group'));\n if (!group) {\n throw new Error(`${original} must be placed inside a sidebar group`);\n }\n el.classList.add('w-full', 'text-sm', 'data-[collapsed=true]:hidden', 'group-data-[collapsed=true]/sidebar:!block');\n el.setAttribute('data-slot', 'sidebar-group-content');\n\n if (group._h_sidebar_group.collapsable) {\n el.setAttribute('id', group._h_sidebar_group.controls);\n el.setAttribute('aria-labelledby', group._h_sidebar_group.controlId);\n el.setAttribute('data-collapsed', group._h_sidebar_group.state.collapsed);\n effect(() => {\n el.setAttribute('data-collapsed', group._h_sidebar_group.state.collapsed);\n });\n }\n });\n\n Alpine.directive('h-sidebar-menu', (el, { original }) => {\n if (el.tagName !== 'UL') {\n throw new Error(`${original} must be an ul element`);\n }\n el.classList.add('vbox', 'w-full', 'min-w-0', 'gap-1');\n el.setAttribute('data-slot', 'sidebar-menu');\n });\n\n Alpine.directive('h-sidebar-menu-item', (el, { original, expression, modifiers }, { effect, evaluate, evaluateLater, Alpine }) => {\n if (el.tagName !== 'LI') {\n throw new Error(`${original} must be a li element`);\n }\n el._h_sidebar_menu_item = {\n isSub: false,\n collapsable: modifiers.includes('collapsed'),\n controlId: undefined,\n controls: undefined,\n state: Alpine.reactive({\n collapsed: evaluate(expression || 'false'),\n }),\n };\n let parent = el.parentElement;\n while (parent) {\n if (parent.getAttribute('data-slot') === 'sidebar-menu-sub') {\n el._h_sidebar_menu_item.isSub = true;\n break;\n } else if (parent.getAttribute('data-slot') === 'sidebar') {\n break;\n }\n parent = parent.parentElement;\n }\n if (!el._h_sidebar_menu_item.isSub) {\n el.classList.add('group/menu-item', 'relative');\n } else {\n el.classList.add('relative');\n }\n el.setAttribute('data-slot', 'sidebar-menu-item');\n\n if (expression) {\n const getCollapsed = evaluateLater(expression);\n effect(() => {\n getCollapsed((collapsed) => {\n el._h_sidebar_menu_item.state.collapsed = collapsed;\n });\n });\n }\n });\n\n Alpine.directive('h-sidebar-menu-button', (el, { original }, { cleanup, Alpine }) => {\n if (el.tagName !== 'BUTTON' && el.tagName !== 'A') {\n throw new Error(`${original} must be a button or a link`);\n } else if (el.tagName === 'BUTTON') {\n el.setAttribute('type', 'button');\n }\n const menuItem = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_sidebar_menu_item'));\n el.classList.add(\n 'flex',\n 'w-full',\n 'items-center',\n 'gap-2',\n 'overflow-hidden',\n 'rounded-md',\n 'align-middle',\n '[&>span]:align-middle',\n 'outline-hidden',\n 'ring-sidebar-ring',\n 'hover:bg-sidebar-secondary',\n 'hover:text-sidebar-secondary-foreground',\n 'focus-visible:ring-2',\n 'active:bg-sidebar-primary',\n 'active:text-sidebar-primary-foreground',\n 'disabled:pointer-events-none',\n 'disabled:opacity-50',\n 'aria-disabled:pointer-events-none',\n 'aria-disabled:opacity-50',\n 'data-[active=true]:bg-sidebar-primary',\n 'data-[active=true]:text-sidebar-primary-foreground',\n '[&>span]:truncate',\n '[&>svg]:size-4',\n '[&>svg]:shrink-0'\n );\n\n const sizes = {\n default: ['h-8', 'text-sm'],\n sm: ['h-7', 'text-xs'],\n lg: ['h-12', 'text-sm', 'group-data-[collapsed=true]/sidebar:p-0!'],\n };\n\n function setSize(size) {\n if (Object.prototype.hasOwnProperty.call(sizes, size)) {\n el.classList.add(...sizes[size]);\n }\n }\n\n setSize(el.getAttribute('data-size') || 'default');\n\n if (!el.hasAttribute('data-slot')) el.setAttribute('data-slot', 'sidebar-menu-button');\n\n if (menuItem && menuItem._h_sidebar_menu_item.isSub) {\n el.classList.add('text-sidebar-foreground', 'h-7', 'min-w-0', '-translate-x-px', 'px-2', '[&>svg:not(:first-child):last-child]:ml-auto', 'group-data-[collapsed=true]/sidebar:hidden');\n if (!el.hasAttribute('data-slot')) el.setAttribute('data-slot', 'sidebar-menu-sub-button');\n } else {\n el.classList.add(\n 'peer/menu-button',\n 'p-2',\n 'text-left',\n 'text-sm',\n 'duration-200',\n 'transition-[width,height,padding]',\n 'motion-reduce:transition-none',\n 'group-has-data-[sidebar=menu-action]/menu-item:pr-8',\n 'data-[active=true]:font-medium',\n 'aria-[expanded=true]:hover:bg-sidebar-secondary',\n 'aria-[expanded=true]:hover:text-sidebar-secondary-foreground',\n 'group-data-[collapsed=true]/sidebar:!size-8',\n 'group-data-[collapsed=true]/sidebar:!p-2',\n 'group-data-[collapsed=true]/sidebar:[&>*:not(svg:first-child):not([data-slot=menu])]:!hidden'\n );\n }\n\n if (menuItem && menuItem._h_sidebar_menu_item.collapsable) {\n if (el.hasAttribute('id')) {\n menuItem._h_sidebar_menu_item.controlId = el.getAttribute('id');\n } else {\n menuItem._h_sidebar_menu_item.controlId = `sgl${uuidv4()}`;\n el.setAttribute('id', menuItem._h_sidebar_menu_item.controlId);\n }\n menuItem._h_sidebar_menu_item.controls = `sgc${uuidv4()}`;\n el.setAttribute('aria-controls', menuItem._h_sidebar_menu_item.controls);\n el.setAttribute('aria-expanded', !menuItem._h_sidebar_menu_item.state.collapsed);\n\n const handler = () => {\n menuItem._h_sidebar_menu_item.state.collapsed = !menuItem._h_sidebar_menu_item.state.collapsed;\n el.setAttribute('aria-expanded', !menuItem._h_sidebar_menu_item.state.collapsed);\n };\n\n el.appendChild(\n createSvg({\n icon: ChevronRight,\n classes: 'ml-auto pointer-events-none size-4 shrink-0 transition-transform motion-reduce:transition-none duration-200 [[aria-expanded=true]>&]:rotate-90',\n attrs: {\n 'aria-hidden': true,\n role: 'presentation',\n },\n })\n );\n\n el.addEventListener('click', handler);\n\n cleanup(() => {\n el.removeEventListener('click', handler);\n });\n } else {\n el.classList.add('[&>svg:not(:first-child):last-child]:ml-auto');\n }\n });\n\n Alpine.directive('h-sidebar-menu-action', (el, { modifiers }) => {\n el.classList.add(\n 'text-sidebar-foreground',\n 'ring-sidebar-ring',\n 'hover:bg-sidebar-secondary',\n 'active:bg-sidebar-secondary/70',\n 'hover:text-sidebar-secondary-foreground',\n 'peer-hover/menu-button:text-sidebar-secondary-foreground',\n 'peer-active/menu-button:text-sidebar-primary-foreground',\n 'peer-data-[active=true]/menu-button:text-sidebar-primary-foreground',\n 'absolute',\n 'top-0.5',\n 'right-0.5',\n 'bottom-0.5',\n 'flex',\n 'aspect-square',\n 'h-auto',\n 'items-center',\n 'justify-center',\n 'rounded-md',\n 'p-0',\n 'outline-hidden',\n 'transition-transform',\n 'motion-reduce:transition-none',\n 'focus-visible:ring-2',\n '[&>svg]:size-4',\n '[&>svg]:shrink-0',\n 'after:absolute',\n 'after:-inset-2',\n 'md:after:hidden',\n 'group-data-[collapsed=true]/sidebar:hidden'\n );\n if (modifiers.includes('autohide')) {\n el.classList.add('group-focus-within/menu-item:opacity-100', 'group-hover/menu-item:opacity-100', 'aria-[expanded=true]:opacity-100', 'md:opacity-0');\n }\n if (el.tagName !== 'BUTTON') {\n el.setAttribute('role', 'button');\n } else {\n el.setAttribute('type', 'button');\n }\n el.setAttribute('data-slot', 'sidebar-menu-action');\n });\n\n Alpine.directive('h-sidebar-menu-badge', (el, { original }) => {\n if (el.tagName !== 'SPAN') {\n throw new Error(`${original} must be a span element`);\n }\n el.classList.add('flex-1', 'pointer-events-none', 'flex', 'h-full', 'min-w-min', 'items-center', 'justify-end', 'text-xs', 'font-medium', 'tabular-nums', 'select-none', 'group-data-[collapsed=true]/sidebar:hidden');\n el.setAttribute('data-slot', 'sidebar-menu-badge');\n });\n\n Alpine.directive('h-sidebar-menu-skeleton', (el, { modifiers }) => {\n el.classList.add('flex', 'h-8', 'items-center', 'gap-2', 'rounded-md', 'px-2');\n const skeleton = document.createElement('div');\n skeleton.classList.add('h-4', 'flex-1', 'bg-sidebar-secondary', 'animate-pulse', 'rounded-md');\n if (modifiers.includes('icon')) {\n skeleton.classList.add('group-data-[collapsed=true]/sidebar:!hidden');\n const icon = document.createElement('div');\n icon.classList.add('size-4', 'rounded-md', 'bg-sidebar-secondary', 'animate-pulse', 'rounded-md');\n el.appendChild(icon);\n } else {\n skeleton.classList.add('group-data-[collapsed=true]/sidebar:!w-4', 'group-data-[collapsed=true]/sidebar:!max-w-4');\n }\n skeleton.style.maxWidth = `${Math.floor(Math.random() * 40) + 50}%`;\n el.appendChild(skeleton);\n el.setAttribute('data-slot', 'sidebar-menu-skeleton');\n });\n\n Alpine.directive('h-sidebar-separator', (el) => {\n el.classList.add('bg-sidebar-border', 'w-auto', 'bg-border', 'shrink-0', 'h-px', 'w-full');\n el.setAttribute('data-slot', 'sidebar-separator');\n el.setAttribute('role', 'none');\n });\n\n Alpine.directive('h-sidebar-menu-sub', (el, { original }, { effect, Alpine }) => {\n if (el.tagName !== 'UL') {\n throw new Error(`${original} must be an ul element`);\n }\n const menuItem = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_sidebar_menu_item'));\n if (!menuItem) {\n throw new Error(`${original} must be placed inside a sidebar menu item`);\n }\n el.classList.add('vbox', 'min-w-0', 'translate-x-px', 'gap-1', 'pl-2.5', 'py-0.5', 'ml-3.5', 'data-[collapsed=true]:!hidden', 'group-data-[collapsed=true]/sidebar:!hidden');\n if (el.getAttribute('data-line') !== 'false') {\n el.classList.add('border-sidebar-border', 'border-l');\n }\n el.setAttribute('data-slot', 'sidebar-menu-sub');\n\n if (menuItem._h_sidebar_menu_item.collapsable) {\n el.setAttribute('id', menuItem._h_sidebar_menu_item.controls);\n el.setAttribute('aria-labelledby', menuItem._h_sidebar_menu_item.controlId);\n el.setAttribute('data-collapsed', menuItem._h_sidebar_menu_item.state.collapsed);\n effect(() => {\n el.setAttribute('data-collapsed', menuItem._h_sidebar_menu_item.state.collapsed);\n });\n }\n });\n\n Alpine.directive('h-sidebar-footer', (el) => {\n el.classList.add('vbox', 'gap-2', 'px-2', 'h-12', 'justify-center', 'border-t');\n if (el.dataset.borderless && el.dataset.borderless === 'true') el.classList.remove('border-t');\n el.setAttribute('data-slot', 'sidebar-footer');\n });\n}\n", "export default function (Alpine) {\n Alpine.directive('h-skeleton', (el, { modifiers }) => {\n el.classList.add('bg-secondary', 'animate-pulse');\n if (modifiers.includes('control')) {\n el.classList.add('rounded-control');\n switch (el.getAttribute('data-size')) {\n case 'sm':\n el.classList.add('h-6.5');\n break;\n case 'md':\n el.classList.add('h-8');\n break;\n default:\n el.classList.add('h-9');\n break;\n }\n } else if (modifiers.includes('card')) {\n el.classList.add('rounded-lg');\n } else if (modifiers.includes('avatar')) {\n el.classList.add('rounded-full', 'size-8', 'aspect-square');\n } else el.classList.add('rounded-md');\n el.setAttribute('data-slot', 'skeleton');\n });\n}\n", "export default function (Alpine) {\n Alpine.directive('h-spinner', (el) => {\n el.classList.add(\n 'size-4',\n 'border-2',\n 'border-primary',\n '[[data-slot=button]_&]:border-secondary-foreground',\n '[[data-slot=button][data-variant=primary]_&]:border-primary-foreground',\n '[[data-slot=button][data-variant=positive]_&]:border-positive-foreground',\n '[[data-slot=button][data-variant=negative]_&]:border-negative-foreground',\n '[[data-slot=button][data-variant=warning]_&]:border-warning-foreground',\n '[[data-slot=button][data-variant=information]_&]:border-information-foreground',\n '!border-t-transparent',\n 'rounded-full',\n 'animate-spin'\n );\n if (el.tagName === 'SPAN') el.classList.add('inline-block');\n el.setAttribute('role', 'status');\n el.setAttribute('data-slot', 'spinner');\n if (!el.hasAttribute('aria-label')) el.setAttribute('aria-label', 'Loading');\n });\n}\n", "export default function (Alpine) {\n Alpine.directive('h-split', (el, _, { cleanup, Alpine }) => {\n const panels = [];\n\n // Reactive state\n const state = Alpine.reactive({\n isHorizontal: el.getAttribute('data-orientation') === 'horizontal',\n isBorder: el.getAttribute('data-variant') === 'border',\n });\n\n const storageKey = el.getAttribute('data-key');\n\n const loadSizes = () => {\n if (!storageKey) return null;\n\n try {\n const raw = localStorage.getItem(storageKey);\n if (!raw) return null;\n return JSON.parse(raw);\n } catch {\n return null;\n }\n };\n\n let saveTimer = null;\n const SAVE_DELAY = 200;\n\n const saveSizes = () => {\n if (!storageKey) return;\n\n if (saveTimer) clearTimeout(saveTimer);\n\n saveTimer = setTimeout(() => {\n const visible = panels.filter((p) => !p.hidden);\n const sizes = visible.map((p) => p.size / usableSize());\n localStorage.setItem(storageKey, JSON.stringify(sizes));\n saveTimer = null;\n }, SAVE_DELAY);\n };\n\n const sizeProp = () => (state.isHorizontal ? 'width' : 'height');\n\n const containerSize = () => (state.isHorizontal ? el.getBoundingClientRect().width : el.getBoundingClientRect().height);\n\n const gutterSize = () => {\n const panel = panels.find((p) => p.gutter.parentElement);\n if (panel) {\n return panel.gutter.getBoundingClientRect()[sizeProp()] ?? 0;\n }\n return 0;\n };\n\n // Total space available for panels (excluding hidden panels and gutters)\n const usableSize = () => {\n const visiblePanels = panels.filter((p) => !p.hidden);\n const gutters = Math.max(0, visiblePanels.length - 1);\n return containerSize() - gutters * gutterSize();\n };\n\n // Normalize a size value: number, percentage string, or null\n const normalize = (value) => {\n if (value == null) return null;\n if (typeof value === 'number') return value;\n\n if (value.endsWith('%')) {\n return (parseFloat(value) / 100) * usableSize();\n }\n\n return parseFloat(value);\n };\n\n let initialized = false;\n\n const DELTA_ABS = 0.01;\n\n // Layout function: calculate and apply sizes to all visible panels\n const layout = () => {\n const visible = panels.filter((p) => !p.hidden);\n if (!visible.length) return;\n\n const total = usableSize();\n\n if (!initialized) {\n initialized = true;\n\n const visible = panels.filter((p) => !p.hidden);\n\n // Try restoring persisted sizes\n const stored = loadSizes();\n\n if (stored && stored.length === visible.length) {\n visible.forEach((p, i) => {\n p.size = stored[i] * usableSize();\n p.explicit = true;\n });\n } else {\n // Compute the total size of explicitly sized panels\n const explicitTotal = visible.filter((p) => p.explicit).reduce((sum, p) => sum + p.declaredSize, 0);\n\n // Compute & distribute remaining space for auto panels\n const autoPanels = visible.filter((p) => !p.explicit);\n const remaining = total - explicitTotal;\n const share = autoPanels.length ? remaining / autoPanels.length : 0;\n\n // Apply computed sizes to panels\n visible.forEach((p) => {\n if (p.explicit) {\n p.size = p.declaredSize;\n } else {\n p.size = share;\n }\n\n p.size = Math.min(Math.max(p.size ?? share, p.min), p.max);\n });\n }\n }\n\n // Ensure all panels have a starting size\n visible.forEach((p) => {\n if (p.size == null) {\n p.size = p.min ?? 0;\n }\n\n // Clamp to bounds\n p.size = Math.min(Math.max(p.size, p.min), p.max);\n });\n\n let currentTotal = visible.reduce((sum, p) => sum + p.size, 0);\n let delta = total - currentTotal;\n\n if (Math.abs(delta) < DELTA_ABS) {\n visible.forEach((p) => p.apply());\n return;\n }\n\n // Panels allowed to change:\n let flexible = visible.filter((p) => {\n if (p.collapsed) return false;\n\n if (delta > 0) {\n return p.size < p.max;\n } else {\n return p.size > p.min;\n }\n });\n\n while (flexible.length && Math.abs(delta) > DELTA_ABS) {\n const share = delta / flexible.length;\n let consumed = 0;\n\n const nextFlexible = [];\n\n flexible.forEach((p) => {\n const proposed = p.size + share;\n const clamped = Math.min(Math.max(proposed, p.min), p.max);\n\n const actualChange = clamped - p.size;\n\n if (Math.abs(actualChange) > DELTA_ABS) {\n p.size = clamped;\n consumed += actualChange;\n }\n\n // Still can grow/shrink?\n if (delta > 0) {\n if (p.size < p.max) nextFlexible.push(p);\n } else {\n if (p.size > p.min) nextFlexible.push(p);\n }\n });\n\n delta -= consumed;\n flexible = nextFlexible;\n\n // If nothing was consumed, break to avoid infinite loop\n if (Math.abs(consumed) < DELTA_ABS) break;\n }\n\n visible.forEach((p) => p.apply());\n };\n\n let layoutFrame = null;\n\n const queueLayout = () => {\n if (layoutFrame) cancelAnimationFrame(layoutFrame);\n\n layoutFrame = requestAnimationFrame(() => {\n layout();\n saveSizes();\n layoutFrame = null;\n });\n };\n\n // Refresh gutter elements after add/remove or hide/show\n const refreshGutters = () => {\n const lastPanelIndex = panels.length - 1;\n panels.forEach((p, i) => p.setGutter(i === lastPanelIndex));\n };\n\n // Expose API on the element\n el._h_split = {\n state,\n panels,\n addPanel(panel) {\n panels.push(panel);\n if (panel.size == null) {\n panel.size = null; // keep null\n }\n initialized = false;\n refreshGutters();\n queueLayout();\n },\n removePanel(panel) {\n const i = panels.indexOf(panel);\n if (i !== -1) panels.splice(i, 1);\n initialized = false;\n refreshGutters();\n queueLayout();\n },\n panelHidden() {\n initialized = false;\n refreshGutters();\n queueLayout();\n },\n gutterHidden() {\n refreshGutters();\n queueLayout();\n },\n panelChange() {\n queueLayout();\n },\n normalize,\n saveSizes,\n };\n\n el.classList.add('flex', 'flex-1', 'min-w-0', 'min-h-0', 'data-[orientation=horizontal]:flex-row', 'data-[orientation=vertical]:flex-col');\n\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (mutation.attributeName === 'data-orientation') {\n state.isHorizontal = el.getAttribute('data-orientation') === 'horizontal';\n queueLayout();\n } else if (mutation.attributeName === 'data-variant') {\n state.isBorder = el.getAttribute('data-variant') === 'border';\n queueLayout();\n } else {\n panels.forEach((p) => p.setLocked(el.getAttribute('data-locked') === 'true'));\n }\n });\n });\n\n observer.observe(el, { attributes: true, attributeFilter: ['data-orientation', 'data-variant', 'data-locked'] });\n\n const containerObserver = new ResizeObserver(queueLayout);\n\n containerObserver.observe(el);\n\n cleanup(() => {\n if (layoutFrame) cancelAnimationFrame(layoutFrame);\n if (saveTimer) clearTimeout(saveTimer);\n containerObserver.disconnect();\n observer.disconnect();\n });\n });\n\n Alpine.directive('h-split-panel', (el, { original }, { effect, cleanup, Alpine }) => {\n const split = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_split'));\n if (!split) {\n throw new Error(`${original} must be inside an split element`);\n }\n\n el.classList.add(\n 'flex',\n 'shrink',\n 'grow-0',\n 'box-border',\n 'overflow-visible',\n '[[data-orientation=horizontal]_&]:min-w-(--h-split-panel-min)',\n '[[data-orientation=horizontal]_&]:max-w-(--h-split-panel-max)',\n '[[data-orientation=horizontal]_&]:min-h-0',\n '[[data-orientation=vertical]_&]:min-h-(--h-split-panel-min)',\n '[[data-orientation=vertical]_&]:max-h-(--h-split-panel-max)',\n '[[data-orientation=vertical]_&]:min-w-0'\n );\n el.setAttribute('tabindex', '-1');\n el.setAttribute('data-slot', 'split-panel');\n\n let gutterless = el.getAttribute('data-gutterless') === 'true';\n\n const gutter = document.createElement('span');\n gutter.setAttribute('data-slot', 'split-gutter');\n gutter.setAttribute('aria-disabled', el.getAttribute('data-locked') === 'true');\n gutter.setAttribute('tabindex', '-1');\n gutter.setAttribute('role', 'separator');\n gutter.classList.add(\n 'overflow-visible',\n 'relative',\n 'shrink-0',\n 'touch-none',\n 'bg-border',\n 'outline-none',\n 'hover:bg-primary-hover',\n 'active:bg-primary-active',\n 'hover:before:bg-primary-hover',\n 'aria-disabled:pointer-events-none',\n '[[data-orientation=horizontal]>&]:cursor-col-resize',\n '[[data-orientation=vertical]>&]:cursor-row-resize'\n );\n\n const borderClasses = [\n 'bg-border',\n 'outline-none',\n 'hover:bg-primary-hover',\n 'active:bg-primary-active',\n 'before:absolute',\n 'before:block',\n 'before:bg-transparent',\n 'hover:before:bg-primary-hover',\n '[[data-orientation=horizontal]>&]:before:-translate-x-1/2',\n '[[data-orientation=horizontal]>&[data-edge=end]]:before:-translate-x-1',\n '[[data-orientation=horizontal]>&[data-edge=start]]:before:translate-x-0',\n '[[data-orientation=horizontal]>&]:before:left-1/2',\n '[[data-orientation=horizontal]>&]:!w-px',\n '[[data-orientation=horizontal]>&]:before:h-full',\n '[[data-orientation=horizontal]>&]:before:w-[calc(var(--spacing)*1)]',\n '[[data-orientation=vertical]>&]:before:-translate-y-1/2',\n '[[data-orientation=vertical]>&[data-edge=end]]:before:-translate-y-1',\n '[[data-orientation=vertical]>&[data-edge=start]]:before:translate-y-0',\n '[[data-orientation=vertical]>&]:before:top-1/2',\n '[[data-orientation=vertical]>&]:!h-px',\n '[[data-orientation=vertical]>&]:before:w-full',\n '[[data-orientation=vertical]>&]:before:h-[calc(var(--spacing)*1)]',\n ];\n const handleClasses = [\n 'bg-transparent',\n 'outline-none',\n 'after:absolute',\n 'after:block',\n 'after:rounded-sm',\n 'after:bg-background',\n 'after:border-split-handle',\n 'after:border-2',\n 'after:shadow-xs',\n 'after:top-1/2',\n 'after:left-1/2',\n 'after:-translate-x-1/2',\n 'after:-translate-y-1/2',\n 'hover:after:border-primary-hover',\n 'active:after:border-primary-active',\n 'before:absolute',\n 'before:block',\n 'before:top-1/2',\n 'before:left-1/2',\n 'before:-translate-x-1/2',\n 'before:-translate-y-1/2',\n 'before:rounded-sm',\n 'before:from-transparent',\n 'before:from-15%',\n 'before:via-split-handle',\n 'before:to-85%',\n 'before:to-transparent',\n 'hover:before:bg-primary-hover',\n 'hover:before:via-transparent',\n 'active:before:bg-primary-active',\n 'active:before:via-transparent',\n // Orientation classes\n '[[data-orientation=horizontal]>&]:before:h-full',\n '[[data-orientation=horizontal]>&]:before:w-0.5',\n '[[data-orientation=horizontal]>&]:before:bg-gradient-to-b',\n '[[data-orientation=vertical]>&]:before:h-0.5',\n '[[data-orientation=vertical]>&]:before:w-full',\n '[[data-orientation=vertical]>&]:before:bg-gradient-to-r',\n // Size classes\n '[[data-orientation=horizontal]>&]:!w-4',\n '[[data-orientation=horizontal]>&]:after:w-2.5',\n '[[data-orientation=horizontal]>&]:after:h-5',\n '[[data-orientation=vertical]>&]:!h-4',\n '[[data-orientation=vertical]>&]:after:w-5',\n '[[data-orientation=vertical]>&]:after:h-2.5',\n ];\n\n const setVariant = () => {\n if (split._h_split.state.isBorder) {\n gutter.classList.remove(...handleClasses);\n gutter.classList.add(...borderClasses);\n } else {\n gutter.classList.remove(...borderClasses);\n gutter.classList.add(...handleClasses);\n }\n };\n\n setVariant();\n\n effect(setVariant);\n\n const initialSize = split._h_split.normalize(el.getAttribute('data-size'));\n\n let handleSize = 0;\n\n let layoutFrame = null;\n\n const panel = {\n el,\n gutter,\n hidden: el.getAttribute('data-hidden') === 'true',\n declaredSize: initialSize,\n size: initialSize,\n explicit: initialSize != null,\n min: split._h_split.normalize(el.getAttribute('data-min')) ?? 0,\n max: split._h_split.normalize(el.getAttribute('data-max')) ?? Infinity,\n collapsed: false,\n prevSize: null,\n\n apply() {\n el.style.flexBasis = `${this.size.toFixed(2)}px`;\n if (split._h_split.state.isBorder) {\n this.setHandleOffset();\n }\n },\n\n setGutter(last) {\n if (this.hidden || gutterless || last) {\n gutter.remove();\n } else {\n if (layoutFrame) cancelAnimationFrame(layoutFrame);\n layoutFrame = requestAnimationFrame(() => {\n el.after(gutter);\n handleSize = this.getHandleSize();\n layoutFrame = null;\n });\n }\n },\n\n setHandleOffset() {\n const panels = split._h_split.panels.filter((p) => !p.hidden);\n const index = panels.indexOf(panel);\n const next = panels[index + 1];\n if (!next) return;\n if (next.size < handleSize) {\n gutter.setAttribute('data-edge', 'end');\n } else if (this.size < handleSize) {\n gutter.setAttribute('data-edge', 'start');\n } else {\n gutter.removeAttribute('data-edge');\n }\n },\n\n getHandleSize() {\n if (split._h_split.state.isBorder) {\n const beforeStyle = window.getComputedStyle(gutter, '::before');\n return Number(beforeStyle[split._h_split.state.isHorizontal ? 'width' : 'height'].replace('px', '')) / 2;\n } else {\n return 0;\n }\n },\n\n setLocked(locked = false) {\n const panelLocked = el.getAttribute('data-locked') === 'true';\n gutter.setAttribute('aria-disabled', locked || panelLocked);\n if (locked) {\n gutter.classList.add('pointer-events-none');\n } else if (panelLocked) {\n gutter.classList.add('pointer-events-none');\n } else {\n gutter.classList.remove('pointer-events-none');\n }\n },\n };\n\n el.style.setProperty('--h-split-panel-min', `${panel.min}px`);\n if (panel.max < Infinity) {\n el.style.setProperty('--h-split-panel-max', `${panel.max}px`);\n }\n\n split._h_split.addPanel(panel);\n\n // Dragging\n const drag = (e) => {\n e.preventDefault();\n gutter.setPointerCapture(e.pointerId);\n\n const panels = split._h_split.panels.filter((p) => !p.hidden);\n const index = panels.indexOf(panel);\n const next = panels[index + 1];\n if (!next) return;\n\n const startPos = split._h_split.state.isHorizontal ? e.clientX : e.clientY;\n\n const startA = panel.size;\n const startB = next.size;\n\n const minDelta = Math.max(\n panel.min - startA, // how much panel A can shrink\n startB - next.max // how much panel B can grow\n );\n\n const maxDelta = Math.min(\n panel.max - startA, // how much panel A can grow\n startB - next.min // how much panel B can shrink\n );\n\n const move = (e) => {\n const currentPos = split._h_split.state.isHorizontal ? e.clientX : e.clientY;\n const delta = currentPos - startPos;\n\n const clamped = Math.min(maxDelta, Math.max(minDelta, delta));\n\n panel.size = startA + clamped;\n next.size = startB - clamped;\n\n panel.explicit = false;\n\n if (panel.collapsed) {\n panel.collapsed = false;\n }\n if (next.collapsed) {\n next.collapsed = false;\n }\n\n split._h_split.panelChange();\n };\n\n const up = () => {\n gutter.releasePointerCapture(e.pointerId);\n gutter.removeEventListener('pointermove', move);\n gutter.removeEventListener('pointerup', up);\n };\n\n gutter.addEventListener('pointermove', move);\n gutter.addEventListener('pointerup', up);\n };\n\n gutter.addEventListener('pointerdown', drag);\n\n const collapse = () => {\n if (panel.collapsed) return;\n\n panel.prevSize = panel.size;\n panel.size = panel.min ?? 0;\n panel.collapsed = true;\n panel.explicit = true;\n\n split._h_split.panelChange();\n };\n const expand = () => {\n if (!panel.collapsed) return;\n\n const target = panel.prevSize ?? panel.min ?? 0;\n const delta = target - panel.size;\n\n const visible = split._h_split.panels.filter((p) => !p.hidden && p !== panel);\n\n let remaining = delta;\n\n for (const p of visible) {\n const available = p.size - p.min;\n const take = Math.min(available, remaining);\n\n p.size -= take;\n remaining -= take;\n\n if (remaining <= 0) break;\n }\n\n panel.size = target - remaining;\n panel.collapsed = false;\n panel.explicit = true;\n\n split._h_split.panelChange();\n };\n\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (mutation.attributeName === 'data-gutterless') {\n gutterless = el.getAttribute('data-gutterless') === 'true';\n split._h_split.gutterHidden();\n } else if (mutation.attributeName === 'data-hidden') {\n panel.hidden = el.getAttribute('data-hidden') === 'true';\n if (panel.hidden) {\n el.classList.add('hidden');\n } else {\n el.classList.remove('hidden');\n }\n split._h_split.panelHidden();\n } else if (mutation.attributeName === 'data-locked') {\n panel.setLocked();\n } else {\n if (el.getAttribute('data-collapse') === 'true') {\n collapse();\n } else {\n expand();\n }\n }\n });\n });\n\n observer.observe(el, { attributes: true, attributeFilter: ['data-hidden', 'data-locked', 'data-collapse', 'data-gutterless'] });\n\n cleanup(() => {\n gutter.remove();\n gutter.removeEventListener('pointerdown', drag);\n split._h_split.removePanel(panel);\n observer.disconnect();\n });\n });\n}\n", "export default function (Alpine) {\n Alpine.directive('h-switch', (el) => {\n el.classList.add(\n '[&>input]:absolute',\n '[&>input]:appearance-none',\n '[&>input]:bg-transparent',\n '[&>input]:border-0',\n '[&>input]:cursor-pointer',\n '[&>input]:focus-visible:border-ring',\n '[&>input]:focus-visible:ring-[calc(var(--spacing)*0.75)]',\n '[&>input]:focus-visible:ring-ring/50',\n '[&>input]:left-0',\n '[&>input]:outline-none',\n '[&>input]:rounded-full',\n '[&>input]:size-full',\n '[&>input]:top-0',\n 'before:bg-background',\n 'before:duration-200',\n 'before:block',\n 'before:pointer-events-none',\n 'before:ring-0',\n 'before:rounded-full',\n 'before:shadow-input',\n 'before:h-full',\n 'before:aspect-square',\n 'before:transition-transform',\n 'before:motion-reduce:transition-none',\n 'bg-muted',\n 'border',\n 'data-[size=sm]:h-5',\n 'data-[size=sm]:max-w-8',\n 'data-[size=sm]:min-w-8',\n 'duration-200',\n 'h-6',\n 'has-[input:checked]:before:translate-x-[calc(100%-var(--spacing))]',\n 'has-[input:checked]:bg-primary',\n 'has-[input:checked]:border-primary-active',\n 'has-[input:disabled]:cursor-not-allowed',\n 'has-[input:disabled]:opacity-50',\n 'p-0.25',\n 'max-w-10',\n 'min-w-10',\n 'relative',\n 'rounded-full',\n 'shrink-0',\n 'transition-colors',\n 'motion-reduce:transition-none'\n );\n el.setAttribute('tabindex', '-1');\n el.setAttribute('data-slot', 'switch');\n });\n}\n", "export default function (Alpine) {\n Alpine.directive('h-table-container', (el, { modifiers }) => {\n if (modifiers.includes('scroll')) {\n el.classList.add(\n 'overflow-scroll',\n '[&_thead[data-slot|=table]]:sticky',\n '[&_thead[data-slot|=table]]:top-0',\n '[&_thead[data-slot|=table]]:z-2',\n '[&_tfoot[data-slot|=table]]:sticky',\n '[&_tfoot[data-slot|=table]]:bottom-0',\n '[&_tfoot[data-slot|=table]]:z-2',\n '[&_tbody_tr_th[data-slot|=table]]:sticky',\n '[&_tbody_tr_th[data-slot|=table]]:left-0',\n '[&_tbody_tr_th[data-slot|=table]]:z-1'\n );\n } else {\n el.classList.add('relative', 'w-full', 'overflow-x-auto');\n }\n el.setAttribute('data-slot', 'table');\n\n if (el.getAttribute('data-border') === 'true') {\n el.classList.add('border', 'rounded-md');\n }\n });\n\n Alpine.directive('h-table', (el) => {\n el.classList.add('group', 'w-full', 'caption-bottom', 'text-sm', 'border-separate', 'border-spacing-0');\n if (el.getAttribute('data-fixed') === 'true') el.classList.add('table-fixed');\n el.setAttribute('data-slot', 'table');\n\n switch (el.getAttribute('data-borders')) {\n case 'rows':\n el.classList.add('[&_tr_td[data-slot|=table]]:border-b', '[&_tr_th[data-slot|=table]]:border-b', 'first:[&_tfoot_tr_td[data-slot|=table]]:border-t', 'first:[&_tfoot_tr_th[data-slot|=table]]:border-t');\n break;\n case 'columns':\n el.classList.add('[&_tr[data-slot|=table]]:divide-x');\n break;\n case 'both':\n el.classList.add(\n '[&_tr_td[data-slot|=table]]:border-b',\n '[&_tr_th[data-slot|=table]]:border-b',\n 'first:[&_tfoot_tr_td[data-slot|=table]]:border-t',\n 'first:[&_tfoot_tr_th[data-slot|=table]]:border-t',\n '[&_tr[data-slot|=table]]:divide-x'\n );\n break;\n }\n });\n\n Alpine.directive('h-table-header', (el) => {\n el.classList.add('bg-table-header');\n el.setAttribute('data-slot', 'table-header');\n });\n\n Alpine.directive('h-table-head', (el) => {\n el.classList.add(\n 'text-foreground',\n '[&[data-hoverable=true]:hover]:bg-table-hover',\n '[&[data-hoverable=true]:hover]:text-table-hover-foreground',\n '[&[data-activable=true]:active]:!bg-table-active',\n '[&[data-activable=true]:active]:!text-table-active-foreground',\n 'h-10',\n 'px-2',\n 'text-left',\n 'align-middle',\n 'font-medium',\n 'whitespace-nowrap',\n '[&:has([role=checkbox])]:pr-0',\n '[&>[role=checkbox]]:flex',\n '[&>[role=checkbox]]:items-center'\n );\n el.setAttribute('data-slot', 'table-head');\n });\n\n Alpine.directive('h-table-cell', (el) => {\n el.classList.add(\n 'p-2',\n '[&:has([data-slot|=cell-input])]:p-0',\n 'align-middle',\n 'whitespace-nowrap',\n '[&:has([role=checkbox])]:pr-0',\n '[&>[role=checkbox]]:flex',\n '[&>[role=checkbox]]:items-center',\n '[&[data-hoverable=true]:hover]:bg-table-hover',\n '[&[data-hoverable=true]:hover]:text-table-hover-foreground',\n '[&[data-activable=true]:active]:!bg-table-active',\n '[&[data-activable=true]:active]:!text-table-active-foreground'\n );\n el.setAttribute('data-slot', 'table-cell');\n });\n\n Alpine.directive('h-table-cell-button', (el) => {\n el.classList.add(\n 'px-2',\n 'size-full',\n 'h-10',\n 'cursor-pointer',\n 'inline-flex',\n 'items-center',\n 'justify-between',\n 'outline-none',\n 'gap-2',\n 'transition-colors',\n 'transition-shadow',\n 'motion-reduce:transition-none',\n '[&_svg]:pointer-events-none',\n '[&_svg]:opacity-70',\n '[&_svg]:text-foreground',\n '[&_svg]:transition-transform',\n 'motion-reduce:[&_svg]:transition-none',\n '[&_svg]:duration-200',\n \"[&_svg:not([class*='size-'])]:size-4\",\n 'shrink-0',\n '[&_svg]:shrink-0',\n 'focus-visible:inset-ring-ring/50',\n 'focus-visible:inset-ring-2',\n 'hover:bg-table-hover',\n 'hover:text-table-hover-foreground',\n 'active:!bg-table-active',\n 'active:!text-table-active-foreground',\n '[&[data-state=open]>svg:not(:first-child):last-child]:rotate-180',\n '[&[data-state=open]>svg:only-child]:rotate-180'\n );\n el.setAttribute('type', 'button');\n el.setAttribute('data-slot', 'cell-input-button');\n });\n\n Alpine.directive('h-table-body', (el) => {\n el.classList.add(\n '[&_tr:last-child_td[data-slot|=table]]:border-b-0',\n '[&_tr:last-child_th[data-slot|=table]]:border-b-0',\n '[&_tr_th[data-slot|=table]]:bg-table-header',\n '[&_tr[data-hoverable=true]:hover_th[data-slot|=table]]:bg-table-hover',\n '[&_tr[data-hoverable=true]:hover_th[data-slot|=table]]:text-table-hover-foreground',\n '[&_tr[data-activable=true]:active_th[data-slot|=table]]:!bg-table-active',\n '[&_tr[data-activable=true]:active_th[data-slot|=table]]:!text-table-active-foreground'\n );\n el.setAttribute('data-slot', 'table-body');\n });\n\n Alpine.directive('h-table-row', (el) => {\n el.classList.add(\n '[&[data-hoverable=true]:hover]:bg-table-hover',\n '[&[data-hoverable=true]:hover]:text-table-hover-foreground',\n '[&[data-activable=true]:active]:!bg-table-active',\n '[&[data-activable=true]:active]:!text-table-active-foreground',\n 'data-[state=selected]:bg-table-active',\n 'data-[state=selected]:text-table-active-foreground'\n );\n el.setAttribute('data-slot', 'table-row');\n });\n\n Alpine.directive('h-table-caption', (el) => {\n el.classList.add('text-muted-foreground', 'py-2', 'text-sm', 'border-t');\n el.setAttribute('data-slot', 'table-caption');\n });\n\n Alpine.directive('h-table-footer', (el) => {\n el.classList.add('bg-table-header', 'font-medium', 'last:[&>tr_td[data-slot|=table]]:border-b-0', 'last:[&>tr_th[data-slot|=table]]:border-b-0');\n el.setAttribute('data-slot', 'table-footer');\n });\n}\n", "import { buttonVariants, setButtonClasses } from './button';\n\nexport default function (Alpine) {\n Alpine.directive('h-tabs', (el) => {\n el.classList.add('group/tabs', 'flex', 'data-[orientation=horizontal]:flex-col', 'data-[orientation=vertical]:flex-row');\n el.setAttribute('data-slot', 'tabs');\n });\n\n Alpine.directive('h-tab-bar', (el) => {\n el.classList.add(\n 'group/tab-bar',\n 'flex',\n 'gap-1',\n 'bg-object-header',\n 'text-object-header-foreground',\n 'group-data-[orientation=horizontal]/tabs:flex-row',\n 'group-data-[orientation=vertical]/tabs:flex-col',\n '[&:not([data-floating=true])]:group-data-[orientation=horizontal]/tabs:inset-shadow-[0_-.063rem_var(--border)]',\n '[&:not([data-floating=true])]:group-data-[orientation=vertical]/tabs:inset-shadow-[-.063rem_0_var(--border)]',\n '[&:not([data-floating=true])]:group-data-[orientation=horizontal]/tabs:h-10',\n '[&:not([data-floating=true])]:group-data-[orientation=horizontal]/tabs:min-h-10',\n '[&:not([data-floating=true])]:data-[size=sm]:group-data-[orientation=horizontal]/tabs:h-8',\n '[&:not([data-floating=true])]:data-[size=sm]:group-data-[orientation=horizontal]/tabs:min-h-8',\n '[&:not([data-floating=true])]:data-[size=lg]:group-data-[orientation=horizontal]/tabs:h-12',\n '[&:not([data-floating=true])]:data-[size=lg]:group-data-[orientation=horizontal]/tabs:min-h-12',\n 'data-[floating=true]:border',\n 'data-[floating=true]:shadow-xs',\n 'data-[floating=true]:z-1',\n 'data-[floating=true]:rounded-lg',\n 'data-[floating=true]:p-[calc(var(--spacing)*0.75)]'\n );\n el.setAttribute('data-slot', 'tab-bar');\n });\n\n Alpine.directive('h-tab-list', (el) => {\n el.classList.add(\n 'text-muted-foreground',\n 'flex',\n 'items-start',\n 'justify-start',\n 'scrollbar-none',\n 'group-data-[orientation=horizontal]/tabs:overflow-x-scroll',\n 'group-data-[orientation=vertical]/tabs:overflow-y-scroll',\n 'group-data-[orientation=horizontal]/tabs:flex-row',\n 'group-data-[orientation=vertical]/tabs:flex-col',\n 'group-data-[orientation=vertical]/tabs:h-fit',\n 'gap-2',\n 'group-data-[floating=true]/tab-bar:gap-1'\n );\n el.setAttribute('role', 'tablist');\n el.setAttribute('data-slot', 'tab-list');\n });\n\n Alpine.directive('h-tab', (el, { original }) => {\n el.classList.add(\n 'cursor-pointer',\n 'focus-visible:border-ring',\n 'focus-visible:ring-ring/50',\n 'focus-visible:outline-ring',\n 'text-muted-foreground',\n 'hover:text-foreground',\n 'aria-selected:text-foreground',\n 'inline-flex',\n 'group-data-[orientation=vertical]/tabs:w-full',\n 'group-data-[orientation=vertical]/tabs:h-8',\n 'group-data-[orientation=horizontal]/tabs:h-full',\n 'items-center',\n 'justify-start',\n 'gap-1.5',\n 'px-2',\n 'py-1',\n 'text-sm',\n 'font-medium',\n 'whitespace-nowrap',\n 'transition-colors',\n 'transition-shadow',\n 'motion-reduce:transition-none',\n 'group-data-[floating=true]/tab-bar:rounded-md',\n 'group-data-[floating=true]/tab-bar:border',\n 'group-data-[floating=true]/tab-bar:border-transparent',\n 'group-data-[floating=true]/tab-bar:aria-selected:bg-background',\n 'group-data-[floating=true]/tab-bar:aria-selected:border-border',\n 'group-data-[floating=true]/tab-bar:hover:bg-background',\n 'group-data-[floating=true]/tab-bar:hover:border-border',\n 'group-[&:not([data-floating=true])]/tab-bar:border-0',\n 'group-[&:not([data-floating=true])]/tab-bar:group-data-[orientation=horizontal]/tabs:hover:inset-shadow-[0_-.188rem_var(--border)]',\n 'group-[&:not([data-floating=true])]/tab-bar:group-data-[orientation=horizontal]/tabs:aria-selected:inset-shadow-[0_-.125rem_var(--primary)]',\n 'group-[&:not([data-floating=true])]/tab-bar:group-data-[orientation=horizontal]/tabs:hover:aria-selected:inset-shadow-[0_-.188rem_var(--primary)]',\n 'group-[&:not([data-floating=true])]/tab-bar:group-data-[orientation=vertical]/tabs:px-3',\n 'group-[&:not([data-floating=true])]/tab-bar:group-data-[orientation=vertical]/tabs:hover:inset-shadow-[-.188rem_0_var(--border)]',\n 'group-[&:not([data-floating=true])]/tab-bar:group-data-[orientation=vertical]/tabs:aria-selected:inset-shadow-[-.125rem_0_var(--primary)]',\n 'group-[&:not([data-floating=true])]/tab-bar:group-data-[orientation=vertical]/tabs:hover:aria-selected:inset-shadow-[-.188rem_0_var(--primary)]',\n 'focus-visible:ring-[3px]',\n 'focus-visible:outline-1',\n 'disabled:pointer-events-none',\n 'disabled:opacity-50',\n '[&_svg]:pointer-events-none',\n '[&_svg]:shrink-0',\n \"[&_svg:not([class*='size-'])]:size-4\"\n );\n el.setAttribute('role', 'tab');\n el.setAttribute('data-slot', 'tab');\n if (!el.hasAttribute('id')) throw new Error(`${original}: Tabs must have an id`);\n if (!el.hasAttribute('aria-controls')) throw new Error(`${original}: aria-controls must be set to the tab-content id.`);\n });\n\n Alpine.directive('h-tab-action', (el) => {\n el.classList.add('cursor-pointer', 'ml-auto', 'rounded-md', 'text-foreground', 'hover:bg-secondary', 'hover:text-secondary-foreground', 'active:bg-secondary-active');\n el.setAttribute('role', 'button');\n el.setAttribute('data-slot', 'tab-action');\n });\n\n Alpine.directive('h-tab-list-actions', (el, { modifiers }) => {\n el.classList.add('flex', 'gap-1.5', 'items-center', 'justify-center');\n if (modifiers.includes('end'))\n el.classList.add(\n 'group-data-[orientation=horizontal]/tabs:ml-auto',\n 'group-[&:not([data-floating=true])]/tab-bar:group-data-[orientation=horizontal]/tabs:mr-1.5',\n 'group-data-[orientation=vertical]/tabs:mt-auto',\n 'group-[&:not([data-floating=true])]/tab-bar:group-data-[orientation=vertical]/tabs:mb-1.5'\n );\n el.setAttribute('data-slot', 'tab-list-actions');\n });\n\n Alpine.directive('h-tab-list-action', (el) => {\n setButtonClasses(el);\n el.classList.add(\n 'group-data-[floating=true]/tab-bar:rounded-md',\n 'group-data-[orientation=horizontal]/tabs:aspect-square',\n 'group-data-[orientation=horizontal]/tabs:w-auto',\n 'group-data-[floating=true]/tab-bar:group-data-[orientation=horizontal]/tabs:h-full',\n 'group-[&:not([data-floating=true])]/tab-bar:group-data-[orientation=horizontal]/tabs:h-[75%]',\n 'group-data-[orientation=vertical]/tabs:h-9',\n 'group-data-[floating=true]/tab-bar:group-data-[orientation=vertical]/tabs:w-full',\n 'group-[&:not([data-floating=true])]/tab-bar:group-data-[orientation=vertical]/tabs:w-[80%]'\n );\n el.classList.add(...buttonVariants[el.getAttribute('data-variant') ?? 'outline']);\n el.setAttribute('role', 'button');\n el.setAttribute('data-slot', 'tab-list-action');\n });\n\n Alpine.directive('h-tabs-content', (el, { original }) => {\n el.classList.add('flex-1', 'outline-none');\n el.setAttribute('role', 'tabpanel');\n el.setAttribute('tabindex', '0');\n el.setAttribute('data-slot', 'tabs-content');\n if (!el.hasAttribute('id')) throw new Error(`${original}: Tab content must have an id`);\n if (!el.hasAttribute('aria-labelledby')) throw new Error(`${original}: aria-labelledby must be set to the tab id.`);\n });\n}\n", "export default function (Alpine) {\n Alpine.directive('h-tag', (el) => {\n el.classList.add(\n 'bg-muted',\n 'text-muted-foreground',\n 'pointer-events-none',\n 'inline-flex',\n 'h-5',\n 'w-fit',\n 'min-w-5',\n 'items-center',\n 'justify-center',\n 'gap-1',\n 'rounded-sm',\n 'px-1',\n 'font-sans',\n 'text-xs',\n 'font-medium',\n 'select-none',\n \"[&_svg:not([class*='size-'])]:size-3\",\n '[[data-slot=tooltip-content]_&]:bg-background/20',\n '[[data-slot=tooltip-content]_&]:text-background',\n 'dark:[[data-slot=tooltip-content]_&]:bg-background/10'\n );\n el.setAttribute('data-slot', 'tag');\n });\n\n Alpine.directive('h-tag-group', (el) => {\n el.classList.add('inline-flex', 'items-center', 'gap-1');\n el.setAttribute('data-slot', 'tag-group');\n });\n}\n", "export default function (Alpine) {\n Alpine.directive('h-text', (el, { modifiers }) => {\n switch (modifiers[0]) {\n case 'h1':\n el.classList.add('text-4xl', 'font-extrabold', 'tracking-tight');\n break;\n case 'h2':\n el.classList.add('text-3xl', 'font-semibold', 'tracking-tight');\n break;\n case 'h3':\n el.classList.add('text-2xl', 'font-semibold', 'tracking-tight');\n break;\n case 'h4':\n el.classList.add('text-xl', 'font-semibold', 'tracking-tight');\n break;\n case 'h5':\n el.classList.add('text-base', 'font-semibold', 'tracking-tight');\n break;\n case 'h6':\n el.classList.add('text-sm', 'font-semibold', 'tracking-tight');\n break;\n case 'blockquote':\n el.classList.add('mt-6', 'border-l-2', 'pl-6', 'italic');\n break;\n case 'code-inline':\n el.classList.add('bg-muted', 'relative', 'rounded', 'px-[calc(var(--spacing)*1.2)]', 'py-[calc(var(--spacing)*0.8)]', 'font-mono', 'text-sm', 'font-semibold', 'whitespace-pre');\n break;\n case 'code':\n el.classList.add('bg-muted', 'relative', 'rounded', 'p-3', 'font-mono', 'text-sm', 'font-semibold', 'whitespace-pre');\n break;\n case 'lead':\n el.classList.add('text-muted-foreground', 'text-xl');\n break;\n case 'lg':\n el.classList.add('text-lg', 'font-semibold');\n break;\n case 'sm':\n el.classList.add('text-sm', 'leading-none', 'font-medium');\n break;\n case 'xs':\n el.classList.add('text-xs', 'leading-none', 'font-medium');\n break;\n case 'muted':\n el.classList.add('text-muted-foreground', 'text-sm');\n break;\n default:\n el.classList.add('leading-7');\n }\n });\n}\n", "export default function (Alpine) {\n Alpine.directive('h-textarea', (el, { modifiers }) => {\n el.classList.add(\n 'border-input',\n 'placeholder:text-muted-foreground',\n 'focus-visible:border-ring',\n 'focus-visible:ring-ring/50',\n 'aria-invalid:ring-negative/20',\n 'dark:aria-invalid:ring-negative/40',\n 'aria-invalid:border-negative',\n 'invalid:!ring-negative/20',\n 'dark:invalid:!ring-negative/40',\n 'invalid:!border-negative',\n 'bg-input-inner',\n 'flex',\n 'field-sizing-content',\n 'min-h-16',\n 'w-full',\n 'rounded-control',\n 'border',\n 'px-3',\n 'py-2',\n 'text-base',\n 'shadow-input',\n 'transition-colors',\n 'transition-shadow',\n 'motion-reduce:transition-none',\n 'outline-none',\n 'focus-visible:ring-[calc(var(--spacing)*0.75)]',\n 'disabled:cursor-not-allowed',\n 'disabled:opacity-50',\n 'md:text-sm'\n );\n if (modifiers.includes('group')) {\n el.classList.remove('rounded-control', 'border', 'bg-input-inner', 'py-2', 'shadow-input', 'focus-visible:ring-[calc(var(--spacing)*0.75)]');\n el.classList.add('flex-1', 'resize-none', 'rounded-none', 'border-0', 'bg-transparent', 'py-3', 'shadow-none', 'focus-visible:ring-0');\n el.setAttribute('data-slot', 'input-group-control');\n } else el.setAttribute('data-slot', 'textarea');\n });\n}\n", "export default function (Alpine) {\n Alpine.directive('h-tile-group', (el) => {\n el.classList.add('group/tile-group', 'gap-2');\n el.setAttribute('role', 'list');\n el.setAttribute('data-slot', 'tile-group');\n });\n\n Alpine.directive('h-tile', (el) => {\n el.classList.add(\n 'group/tile',\n 'flex',\n 'items-center',\n 'py-3',\n 'px-4',\n 'has-data-[slot=tile-header]:py-4',\n 'gap-2.5',\n 'text-sm',\n 'rounded-lg',\n 'transition-colors',\n 'motion-reduce:transition-none',\n '[a]:hover:bg-secondary-hover',\n '[a]:hover:text-secondary-foreground',\n '[a]:transition-colors',\n '[a]:motion-reduce:transition-none',\n 'duration-100',\n 'flex-wrap',\n 'outline-none',\n 'focus-visible:border-ring',\n 'focus-visible:ring-ring/50',\n 'focus-visible:ring-[calc(var(--spacing)*0.75)]'\n );\n el.setAttribute('data-slot', 'tile');\n\n switch (el.getAttribute('data-variant')) {\n case 'outline':\n el.classList.add('border', 'border-border');\n break;\n case 'shadow':\n el.classList.add('border', 'shadow-sm');\n break;\n case 'muted':\n el.classList.add('bg-muted');\n break;\n default:\n el.classList.add('border', 'bg-transparent', 'border-transparent');\n }\n });\n\n Alpine.directive('h-tile-header', (el) => {\n el.classList.add('flex', 'basis-full', 'items-center', 'justify-between', 'gap-2');\n el.setAttribute('data-slot', 'tile-header');\n });\n\n Alpine.directive('h-tile-media', (el) => {\n el.classList.add('flex', 'shrink-0', 'items-center', 'justify-center', 'gap-2', 'group-has-[[data-slot=tile-description]]/tile:self-start', '[&_svg]:pointer-events-none', 'group-has-[[data-slot=tile-description]]/tile:translate-y-0.5');\n el.setAttribute('role', 'list');\n el.setAttribute('data-slot', 'tile-media');\n\n switch (el.getAttribute('data-variant')) {\n case 'icon':\n el.classList.add('size-8', 'border', 'rounded-lg', 'bg-muted', \"[&_svg:not([class*='size-'])]:size-4\");\n break;\n case 'image':\n el.classList.add('size-10', 'rounded-lg', 'overflow-hidden', '[&_img]:size-full', '[&_img]:object-cover');\n break;\n default:\n el.classList.add('bg-transparent');\n }\n });\n\n Alpine.directive('h-tile-content', (el) => {\n el.classList.add('vbox', 'flex-1', 'gap-1', '[&+[data-slot=tile-content]]:flex-none');\n el.setAttribute('data-slot', 'tile-content');\n });\n\n Alpine.directive('h-tile-title', (el) => {\n el.classList.add('flex', 'w-fit', 'items-center', 'gap-2', 'text-sm', 'leading-snug', 'font-medium');\n el.setAttribute('data-slot', 'tile-title');\n });\n\n Alpine.directive('h-tile-description', (el) => {\n el.classList.add('text-muted-foreground', 'line-clamp-2', 'text-sm', 'leading-normal', 'font-normal', 'text-balance', '[&>a:hover]:text-primary', '[&>a]:underline', '[&>a]:underline-offset-4');\n el.setAttribute('data-slot', 'tile-description');\n });\n\n Alpine.directive('h-tile-actions', (el) => {\n el.classList.add('flex', 'items-center', 'gap-2');\n el.setAttribute('data-slot', 'tile-actions');\n });\n\n Alpine.directive('h-tile-footer', (el) => {\n el.classList.add('flex', 'basis-full', 'items-center', 'justify-between', 'gap-2');\n el.setAttribute('data-slot', 'tile-footer');\n });\n}\n", "import { autoUpdate, computePosition, flip, offset, shift } from '@floating-ui/dom';\nimport uuidv4 from '../utils/uuid';\nimport { Clock, createSvg } from './../common/icons';\nimport { sizeObserver } from './../common/input-size';\nconst dayPeriodLabels = { am: 'AM', pm: 'PM' };\n\nconst getSelectedTime = (rawTime, convertTo12) => {\n let hour = null;\n let minute = null;\n let second = null;\n let period = null;\n if (rawTime.length > 0) {\n let timeParts = rawTime.split(':');\n if (rawTime.toUpperCase().endsWith('AM')) {\n period = dayPeriodLabels.am;\n } else if (rawTime.toUpperCase().endsWith('PM')) {\n period = dayPeriodLabels.pm;\n }\n if (period) {\n timeParts[timeParts.length - 1] = timeParts[timeParts.length - 1].substring(0, timeParts[timeParts.length - 1].length - 3);\n }\n minute = timeParts[1];\n if ((!period && timeParts.length === 3) || (period && timeParts.length === 4)) {\n second = timeParts[2];\n }\n if (convertTo12 && period) {\n hour = timeParts[0];\n } else if (convertTo12 && !period) {\n period = Number(timeParts[0]) >= 12 ? dayPeriodLabels.pm : dayPeriodLabels.am;\n hour = Number(timeParts[0]) % 12 || 12;\n if (hour < 10) hour = `0${hour}`;\n } else if (!convertTo12 && period) {\n if (period === dayPeriodLabels.pm) {\n hour = Number(timeParts[0]) + 12;\n } else {\n hour = timeParts[0];\n }\n } else {\n hour = timeParts[0];\n }\n }\n return { hour, minute, second, period };\n};\n\nfunction scrollIntoCenter(container, element, behavior = 'instant') {\n const containerRect = container.getBoundingClientRect();\n const elementRect = element.getBoundingClientRect();\n\n const offset = elementRect.top - containerRect.top - container.clientHeight / 2 + element.clientHeight / 2;\n\n container.scrollBy({\n top: offset,\n behavior,\n });\n}\n\nexport default function (Alpine) {\n Alpine.directive('h-time-picker', (el, { expression, modifiers }, { evaluateLater, cleanup, effect, Alpine }) => {\n el._h_timepicker = Alpine.reactive({\n id: undefined,\n controls: `htpc${uuidv4()}`,\n model: undefined,\n expanded: false,\n is12Hour: false,\n locale: undefined,\n seconds: undefined,\n focusInput: undefined,\n close(focus = false) {\n el._h_timepicker.expanded = false;\n top.removeEventListener('click', el._h_timepicker.close);\n if (focus && this.focusInput) {\n this.focusInput();\n }\n },\n });\n el._h_time = {\n changed: undefined,\n parts: {\n hour: null,\n minute: null,\n second: null,\n period: null,\n },\n };\n\n el.classList.add(\n 'cursor-pointer',\n 'border-input',\n 'flex',\n 'items-center',\n 'justify-between',\n 'gap-2',\n 'pl-3',\n 'pr-2',\n 'data-[size=sm]:pr-1',\n 'text-sm',\n 'whitespace-nowrap',\n 'transition-colors',\n 'transition-shadow',\n 'motion-reduce:transition-none',\n 'duration-200',\n 'outline-none',\n 'has-[input:disabled]:pointer-events-none',\n 'has-[input:disabled]:cursor-not-allowed',\n 'has-[input:disabled]:opacity-50'\n );\n if (modifiers.includes('table')) {\n el.classList.add(\n 'size-full',\n 'h-10',\n 'has-[input:focus-visible]:inset-ring-ring/50',\n 'has-[input:focus-visible]:inset-ring-2',\n 'has-[input[aria-invalid=true]]:inset-ring-negative/20',\n 'dark:has-[input[aria-invalid=true]]:inset-ring-negative/40',\n 'has-[input:invalid]:!inset-ring-negative/20',\n 'dark:has-[input:invalid]:!inset-ring-negative/40',\n 'hover:bg-table-hover',\n 'hover:text-table-hover-foreground',\n 'active:!bg-table-active',\n 'active:!text-table-active-foreground',\n 'has-[[aria-expanded=true]]:bg-transparent',\n 'has-[[aria-expanded=true]]:text-foreground'\n );\n el.setAttribute('data-slot', 'cell-input-time');\n } else {\n el.classList.add(\n 'w-full',\n 'hover:bg-secondary-hover',\n 'hover:text-secondary-foreground',\n '[&>[data-slot=\"time-picker-input\"]]:hover:text-secondary-foreground',\n 'active:bg-secondary-active',\n 'active:text-secondary-foreground',\n '[&>[data-slot=\"time-picker-input\"]]:active:text-secondary-foreground',\n 'rounded-control',\n 'border',\n 'bg-input-inner',\n 'shadow-input',\n 'has-[[aria-expanded=true]]:bg-input-inner',\n 'has-[[aria-expanded=true]]:text-foreground',\n 'has-[input:focus-visible]:border-ring',\n 'has-[input:focus-visible]:ring-[calc(var(--spacing)*0.75)]',\n 'has-[input:focus-visible]:ring-ring/50',\n 'has-[input[aria-invalid=true]]:ring-negative/20',\n 'has-[input[aria-invalid=true]]:border-negative',\n 'dark:has-[input[aria-invalid=true]]:ring-negative/40',\n 'has-[input:invalid]:ring-negative/20',\n 'has-[input:invalid]:border-negative',\n 'dark:has-[input:invalid]:ring-negative/40'\n );\n el.setAttribute('data-slot', 'time-picker');\n }\n el.setAttribute('tabindex', '-1');\n el.appendChild(\n createSvg({\n icon: Clock,\n classes: 'opacity-70 text-inherit size-4 shrink-0 pointer-events-none',\n attrs: {\n 'aria-hidden': true,\n role: 'presentation',\n },\n })\n );\n\n if (expression) {\n const getConfig = evaluateLater(expression);\n\n effect(() => {\n getConfig((config) => {\n if (config) {\n if (config['locale']) el._h_timepicker.locale = config.locale;\n el._h_timepicker.seconds = config['seconds'];\n if (config['is12Hour'] !== undefined) {\n el._h_timepicker.is12Hour = config.is12Hour;\n } else {\n el._h_timepicker.is12Hour = new Intl.DateTimeFormat(el._h_timepicker.locale, { hour: 'numeric' }).resolvedOptions().hour12;\n }\n }\n });\n });\n } else {\n el._h_timepicker.is12Hour = new Intl.DateTimeFormat(el._h_timepicker.locale, { hour: 'numeric' }).resolvedOptions().hour12;\n }\n\n const handler = (event) => {\n if (event.type === 'keydown' && event.key !== 'Enter') return;\n el._h_timepicker.expanded = !el._h_timepicker.expanded;\n el.setAttribute('aria-expanded', el._h_timepicker.expanded);\n Alpine.nextTick(() => {\n if (el._h_timepicker.expanded) {\n top.addEventListener('click', el._h_timepicker.close);\n } else {\n top.removeEventListener('click', el._h_timepicker.close);\n }\n });\n };\n\n el.addEventListener('click', handler);\n el.addEventListener('keydown', handler);\n\n const observer = sizeObserver(el);\n\n cleanup(() => {\n observer.disconnect();\n el.removeEventListener('click', handler);\n el.removeEventListener('keydown', handler);\n top.removeEventListener('click', el._h_timepicker.close);\n });\n });\n\n Alpine.directive('h-time-picker-input', (el, { original }, { effect, cleanup, Alpine }) => {\n if (el.tagName !== 'INPUT') {\n throw new Error(`${original} must be a readonly input of type \"text\"`);\n }\n const timepicker = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_timepicker'));\n if (!timepicker) {\n throw new Error(`${original} must be inside a time-picker element`);\n }\n timepicker._h_timepicker.focusInput = () => {\n el.focus();\n };\n timepicker._h_time.changed = () => {\n Alpine.nextTick(() => {\n el.dispatchEvent(new Event('change'));\n });\n };\n if (Object.prototype.hasOwnProperty.call(el, '_x_model')) {\n timepicker._h_timepicker.model = el._x_model;\n } else {\n timepicker._h_timepicker.model = {\n get() {\n return el.value;\n },\n set(newValue) {\n el.value = newValue;\n },\n };\n }\n if (el.hasAttribute('id')) {\n timepicker._h_timepicker.id = el.getAttribute('id');\n } else {\n timepicker._h_timepicker.id = `htp${uuidv4()}`;\n el.setAttribute('id', timepicker._h_timepicker.id);\n }\n el.classList.add(\n 'appearance-none',\n 'cursor-pointer',\n 'bg-transparent',\n 'text-transparent',\n 'text-shadow-[0_0_0_var(--foreground)]',\n 'placeholder:text-muted-foreground',\n 'outline-none',\n 'size-full',\n 'border-0',\n 'md:text-sm',\n 'text-base',\n 'truncate'\n );\n el.setAttribute('aria-autocomplete', 'none');\n el.setAttribute('aria-controls', timepicker._h_timepicker.controls);\n el.setAttribute('aria-expanded', 'false');\n el.setAttribute('aria-haspopup', 'dialog');\n el.setAttribute('type', 'text');\n el.setAttribute('data-slot', 'time-picker-input');\n\n const rawTime = timepicker._h_timepicker.model.get();\n\n if (rawTime) {\n const { hour, minute, second, period } = getSelectedTime(rawTime, timepicker._h_timepicker.is12Hour);\n\n if (timepicker._h_timepicker.seconds === undefined && !second) {\n timepicker._h_timepicker.seconds = false;\n } else if (timepicker._h_timepicker.seconds === undefined && second) {\n timepicker._h_timepicker.seconds = true;\n }\n\n if (timepicker._h_timepicker.is12Hour) {\n if (timepicker._h_timepicker.seconds) {\n timepicker._h_timepicker.model.set(`${hour}:${minute}:${second ?? '00'} ${period}`);\n timepicker._h_time.parts.second = second ?? '00';\n } else {\n timepicker._h_timepicker.model.set(`${hour}:${minute} ${period}`);\n }\n timepicker._h_time.parts.hour = hour;\n timepicker._h_time.parts.minute = minute;\n timepicker._h_time.parts.period = period;\n } else {\n if (timepicker._h_timepicker.seconds) {\n timepicker._h_timepicker.model.set(`${hour}:${minute}:${second ?? '00'}`);\n timepicker._h_time.parts.second = second ?? '00';\n } else {\n timepicker._h_timepicker.model.set(`${hour}:${minute}`);\n }\n timepicker._h_time.parts.hour = hour;\n timepicker._h_time.parts.minute = minute;\n }\n }\n\n let placeholder;\n if (timepicker._h_timepicker.seconds) {\n placeholder = timepicker._h_timepicker.is12Hour ? '--:--:-- --' : '--:--:--';\n } else {\n placeholder = timepicker._h_timepicker.is12Hour ? '--:-- --' : '--:--';\n }\n el.setAttribute('placeholder', placeholder);\n\n const preventInput = (event) => {\n event.preventDefault();\n };\n\n el.addEventListener('beforeinput', preventInput);\n el.addEventListener('paste', preventInput);\n\n effect(() => {\n el.setAttribute('aria-expanded', timepicker._h_timepicker.expanded);\n });\n\n cleanup(() => {\n el.removeEventListener('keydown', preventInput);\n el.removeEventListener('paste', preventInput);\n });\n });\n\n Alpine.directive('h-time-picker-popup', (el, _, { effect, cleanup, Alpine }) => {\n const timepicker = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_timepicker'));\n el.classList.add(\n 'overflow-hidden',\n 'outline-none',\n 'border',\n 'rounded-control',\n 'absolute',\n 'bg-popover',\n 'text-popover-foreground',\n 'flex',\n 'flex-col',\n 'hidden',\n 'z-50',\n 'shadow-md',\n 'transition-[opacity,scale]',\n 'motion-reduce:transition-none',\n 'duration-100',\n 'ease-out',\n 'opacity-0',\n 'scale-95'\n );\n el.setAttribute('id', timepicker._h_timepicker.controls);\n el.setAttribute('tabindex', '-1');\n el.setAttribute('role', 'dialog');\n el.setAttribute('aria-modal', 'true');\n el.setAttribute('data-slot', 'time-picker-popup');\n el.setAttribute('aria-labelledby', timepicker._h_timepicker.id);\n\n const optionClasses = [\n 'px-3.5',\n 'py-2',\n 'hover:bg-secondary-hover',\n 'hover:text-secondary-foreground',\n 'aria-selected:bg-primary-active',\n 'aria-selected:text-primary-foreground',\n 'focus:bg-secondary-hover',\n 'focus:text-secondary-foreground',\n 'focus:aria-selected:bg-primary-hover',\n 'focus:aria-selected:text-primary-foreground',\n 'text-sm',\n 'text-center',\n 'outline-hidden',\n 'select-none',\n 'aria-disabled:pointer-events-none',\n 'aria-disabled:opacity-50',\n ];\n\n const updateModel = () => {\n let newValue;\n if (timepicker._h_time.parts.hour !== null && timepicker._h_time.parts.minute !== null) {\n if (timepicker._h_timepicker.seconds) {\n if (timepicker._h_time.parts.seconds !== null) {\n newValue = `${timepicker._h_time.parts.hour}:${timepicker._h_time.parts.minute}:${timepicker._h_time.parts.second}`;\n } else return;\n } else {\n newValue = `${timepicker._h_time.parts.hour}:${timepicker._h_time.parts.minute}`;\n }\n } else return;\n if (timepicker._h_timepicker.is12Hour) {\n if (timepicker._h_time.parts.period !== null) {\n newValue += ` ${timepicker._h_time.parts.period}`;\n } else return;\n }\n if (newValue) {\n timepicker._h_timepicker.model.set(newValue);\n timepicker._h_time.changed();\n }\n };\n\n const getCurrentTime = () => {\n let date = new Date();\n let hour = date.getHours();\n timepicker._h_time.parts.period = hour >= 12 ? dayPeriodLabels.pm : dayPeriodLabels.am;\n if (timepicker._h_timepicker.is12Hour) {\n hour = date.getHours() % 12 || 12;\n }\n let minute = date.getMinutes();\n timepicker._h_time.parts.hour = hour < 10 ? `0${hour}` : hour.toString();\n timepicker._h_time.parts.minute = minute < 10 ? `0${minute}` : minute.toString();\n if (timepicker._h_timepicker.seconds) {\n let second = date.getSeconds();\n timepicker._h_time.parts.second = second < 10 ? `0${second}` : second.toString();\n }\n updateModel();\n timepicker._h_timepicker.close();\n };\n\n function onKeyDown(event) {\n if (event.key === 'Escape') {\n timepicker._h_timepicker.close(true);\n } else if (event.target.tagName === 'LI') {\n let list;\n let inHoursList = event.target.parentElement.dataset.type === 'hours';\n if (inHoursList) {\n list = hoursList;\n } else if (event.target.parentElement.dataset.type === 'minutes') {\n list = minutesList;\n } else if (event.target.parentElement.dataset.type === 'seconds') {\n list = secondsList;\n } else if (event.target.parentElement.dataset.type === 'period') {\n list = periodList;\n }\n switch (event.key) {\n case 'Up':\n case 'ArrowUp': {\n event.target.setAttribute('tabindex', '-1');\n let prevElem = event.target.previousElementSibling;\n if (prevElem === null || prevElem.classList.contains('hidden')) {\n if (inHoursList && timepicker._h_timepicker.is12Hour) {\n prevElem = list.children[12];\n } else {\n prevElem = list.lastChild;\n }\n }\n prevElem.setAttribute('tabindex', '0');\n prevElem.focus();\n break;\n }\n case 'Down':\n case 'ArrowDown': {\n event.target.setAttribute('tabindex', '-1');\n let nextElem = event.target.nextElementSibling;\n if (nextElem === null || nextElem.classList.contains('hidden')) {\n if (inHoursList && timepicker._h_timepicker.is12Hour) {\n nextElem = list.children[1];\n } else {\n nextElem = list.firstChild;\n }\n }\n nextElem.setAttribute('tabindex', '0');\n nextElem.focus();\n break;\n }\n case 'Home':\n case 'PageUp': {\n let firstChild;\n if (list.firstChild === event.target) {\n break;\n } else if (inHoursList && timepicker._h_timepicker.is12Hour) {\n if (list.children[1] === event.target) {\n break;\n } else {\n firstChild = list.children[1];\n }\n } else {\n firstChild = list.firstChild;\n }\n event.target.setAttribute('tabindex', '-1');\n firstChild.setAttribute('tabindex', '0');\n firstChild.focus();\n break;\n }\n case 'End':\n case 'PageDown': {\n let lastElem;\n if (list.lastChild === event.target) {\n break;\n } else if (inHoursList && timepicker._h_timepicker.is12Hour) {\n if (list.children[12] !== event.target) {\n lastElem = list.children[12];\n } else {\n break;\n }\n } else {\n lastElem = list.lastChild;\n }\n event.target.setAttribute('tabindex', '-1');\n lastElem.setAttribute('tabindex', '0');\n lastElem.focus();\n break;\n }\n case 'Right':\n case 'ArrowRight': {\n let nextColumn = event.target.parentElement.nextElementSibling;\n if (nextColumn) {\n const child = nextColumn.querySelector('li[tabindex=\"0\"]');\n child.focus();\n }\n break;\n }\n case 'Left':\n case 'ArrowLeft': {\n let prevColumn = event.target.parentElement.previousElementSibling;\n if (prevColumn) {\n const child = prevColumn.querySelector('li[tabindex=\"0\"]');\n child.focus();\n }\n break;\n }\n case 'Enter':\n case ' ':\n event.target.click();\n break;\n default:\n return;\n }\n event.stopPropagation();\n event.preventDefault();\n } else if (event.key === 'Tab' && event.target.tagName === 'BUTTON') {\n if (event.target.dataset.action === 'close' || (event.target.dataset.action === 'time' && event.target.nextElementSibling.disabled)) {\n if (selectedHour) {\n selectedHour.focus();\n } else {\n hoursList.children[timepicker._h_timepicker.is12Hour ? 1 : 0].focus();\n }\n event.stopPropagation();\n event.preventDefault();\n }\n }\n }\n\n el.addEventListener('keydown', onKeyDown);\n\n function setTime(event) {\n if (event.target.tagName === 'LI') {\n if (event.target.parentElement.dataset.type === 'hours') {\n timepicker._h_time.parts.hour = event.target.innerText;\n } else if (event.target.parentElement.dataset.type === 'minutes') {\n timepicker._h_time.parts.minute = event.target.innerText;\n } else if (event.target.parentElement.dataset.type === 'seconds') {\n timepicker._h_time.parts.second = event.target.innerText;\n } else if (event.target.parentElement.dataset.type === 'period') {\n timepicker._h_time.parts.period = event.target.innerText;\n }\n render();\n updateModel();\n }\n }\n\n const timeContainer = document.createElement('div');\n timeContainer.classList.add('hbox', 'max-h-[14rem]', '[&>ul]:border-r', '[&>ul:last-of-type]:border-r-0');\n if (el.firstChild) el.classList.add('border-b');\n timeContainer.setAttribute('role', 'group');\n timeContainer.addEventListener('click', setTime);\n el.appendChild(timeContainer);\n\n const hoursList = document.createElement('ul');\n hoursList.classList.add('flex-1', 'overflow-y-auto', '[scrollbar-width:thin]');\n hoursList.setAttribute('role', 'listbox');\n hoursList.setAttribute('tabindex', '-1');\n hoursList.setAttribute('aria-label', el.dataset.labelHours ?? 'Select hour');\n hoursList.setAttribute('data-type', 'hours');\n timeContainer.appendChild(hoursList);\n\n for (let h = 0; h < 24; h++) {\n const hour = document.createElement('li');\n hour.classList.add(...optionClasses);\n hour.setAttribute('role', 'option');\n hour.setAttribute('tabindex', '-1');\n hour.setAttribute('aria-label', h);\n hour.setAttribute('aria-selected', false);\n hour.innerText = h < 10 ? `0${h}` : h;\n hoursList.appendChild(hour);\n }\n\n const minutesList = document.createElement('ul');\n minutesList.classList.add('flex-1', 'overflow-y-auto', '[scrollbar-width:thin]');\n minutesList.setAttribute('role', 'listbox');\n minutesList.setAttribute('tabindex', '-1');\n minutesList.setAttribute('aria-label', el.dataset.labelMinutes ?? 'Select minute');\n minutesList.setAttribute('data-type', 'minutes');\n timeContainer.appendChild(minutesList);\n\n for (let m = 0; m < 60; m++) {\n const minute = document.createElement('li');\n minute.classList.add(...optionClasses);\n minute.setAttribute('role', 'option');\n minute.setAttribute('tabindex', '-1');\n minute.setAttribute('aria-label', m);\n minute.setAttribute('aria-selected', false);\n minute.innerText = m < 10 ? `0${m}` : m;\n minutesList.appendChild(minute);\n }\n\n const secondsList = document.createElement('ul');\n secondsList.classList.add('flex-1', 'overflow-y-auto', '[scrollbar-width:thin]');\n if (!timepicker._h_timepicker.seconds) {\n secondsList.classList.add('hidden');\n }\n secondsList.setAttribute('role', 'listbox');\n secondsList.setAttribute('tabindex', '-1');\n secondsList.setAttribute('aria-label', el.dataset.labelSeconds ?? 'Select second');\n secondsList.setAttribute('data-type', 'seconds');\n timeContainer.appendChild(secondsList);\n\n for (let s = 0; s < 60; s++) {\n const second = document.createElement('li');\n second.classList.add(...optionClasses);\n second.setAttribute('role', 'option');\n second.setAttribute('tabindex', '-1');\n second.setAttribute('aria-label', s);\n second.setAttribute('aria-selected', false);\n second.innerText = s < 10 ? `0${s}` : s;\n secondsList.appendChild(second);\n }\n\n const periodList = document.createElement('ul');\n periodList.classList.add('flex-1', 'overflow-y-auto', '[scrollbar-width:thin]');\n if (!timepicker._h_timepicker.is12Hour) {\n periodList.classList.add('hidden');\n }\n periodList.setAttribute('role', 'listbox');\n periodList.setAttribute('tabindex', '-1');\n periodList.setAttribute('aria-label', el.dataset.labelMeridiem ?? 'Select meridiem');\n periodList.setAttribute('data-type', 'period');\n timeContainer.appendChild(periodList);\n\n const am = document.createElement('li');\n am.classList.add(...optionClasses);\n am.setAttribute('role', 'option');\n am.setAttribute('tabindex', '-1');\n am.setAttribute('aria-selected', false);\n am.innerText = dayPeriodLabels.am;\n periodList.appendChild(am);\n\n const pm = document.createElement('li');\n pm.classList.add(...optionClasses);\n pm.setAttribute('role', 'option');\n pm.setAttribute('tabindex', '-1');\n pm.setAttribute('aria-selected', false);\n pm.innerText = dayPeriodLabels.pm;\n periodList.appendChild(pm);\n\n const footer = document.createElement('div');\n footer.classList.add('hbox', 'justify-between', 'gap-1', 'border-t', 'p-2');\n footer.setAttribute('tabindex', '-1');\n\n const nowButton = document.createElement('button');\n nowButton.setAttribute('type', 'button');\n nowButton.setAttribute(Alpine.prefixed('h-button'), '');\n nowButton.setAttribute('data-size', 'sm');\n nowButton.setAttribute('data-action', 'time');\n nowButton.innerText = el.dataset.labelNow ?? 'Now';\n nowButton.addEventListener('click', getCurrentTime);\n footer.appendChild(nowButton);\n\n const okButton = document.createElement('button');\n okButton.setAttribute('type', 'button');\n okButton.setAttribute(Alpine.prefixed('h-button'), '');\n okButton.setAttribute('data-variant', 'primary');\n okButton.setAttribute('data-size', 'sm');\n okButton.setAttribute('data-action', 'close');\n okButton.innerText = el.dataset.labelOk ?? 'OK';\n okButton.disabled = true;\n okButton.addEventListener('click', timepicker._h_timepicker.close);\n footer.appendChild(okButton);\n\n el.appendChild(footer);\n Alpine.initTree(footer);\n\n let selectedHour;\n let selectedMinute;\n let selectedSecond;\n let selectedPeriod;\n\n function render() {\n if (timepicker._h_timepicker.is12Hour) {\n hoursList.firstChild.classList.add('hidden');\n for (let h = 1; h < 13; h++) {\n if (hoursList.children[h].innerText === timepicker._h_time.parts.hour) {\n hoursList.children[h].setAttribute('tabindex', '0');\n hoursList.children[h].setAttribute('aria-selected', true);\n selectedHour = hoursList.children[h];\n } else {\n hoursList.children[h].setAttribute('tabindex', '-1');\n hoursList.children[h].setAttribute('aria-selected', false);\n }\n }\n for (let h = 13; h < hoursList.children.length; h++) {\n hoursList.children[h].classList.add('hidden');\n hoursList.children[h].setAttribute('tabindex', '-1');\n hoursList.children[h].setAttribute('aria-selected', false);\n }\n } else {\n for (let h = 0; h < hoursList.children.length; h++) {\n hoursList.children[h].classList.remove('hidden');\n if (hoursList.children[h].innerText === timepicker._h_time.parts.hour) {\n hoursList.children[h].setAttribute('tabindex', '0');\n hoursList.children[h].setAttribute('aria-selected', true);\n selectedHour = hoursList.children[h];\n } else {\n hoursList.children[h].setAttribute('tabindex', '-1');\n hoursList.children[h].setAttribute('aria-selected', false);\n }\n }\n }\n if (!selectedHour) {\n hoursList.children[timepicker._h_timepicker.is12Hour ? 1 : 0].setAttribute('tabindex', '0');\n }\n\n for (let m = 0; m < minutesList.children.length; m++) {\n if (minutesList.children[m].innerText === timepicker._h_time.parts.minute) {\n minutesList.children[m].setAttribute('tabindex', '0');\n minutesList.children[m].setAttribute('aria-selected', true);\n selectedMinute = minutesList.children[m];\n } else {\n minutesList.children[m].setAttribute('tabindex', '-1');\n minutesList.children[m].setAttribute('aria-selected', false);\n }\n }\n if (!selectedMinute) {\n minutesList.firstChild.setAttribute('tabindex', '0');\n }\n\n if (timepicker._h_timepicker.seconds) {\n secondsList.classList.remove('hidden');\n for (let s = 0; s < secondsList.children.length; s++) {\n if (secondsList.children[s].innerText === timepicker._h_time.parts.second) {\n secondsList.children[s].setAttribute('tabindex', '0');\n secondsList.children[s].setAttribute('aria-selected', true);\n selectedSecond = secondsList.children[s];\n } else {\n secondsList.children[s].setAttribute('tabindex', '-1');\n secondsList.children[s].setAttribute('aria-selected', false);\n }\n }\n if (!selectedSecond) {\n secondsList.firstChild.setAttribute('tabindex', '0');\n }\n if (timepicker._h_timepicker.is12Hour) {\n okButton.disabled = timepicker._h_time.parts.hour && timepicker._h_time.parts.minute && timepicker._h_time.parts.second && timepicker._h_time.parts.period ? false : true;\n } else {\n okButton.disabled = timepicker._h_time.parts.hour && timepicker._h_time.parts.minute && timepicker._h_time.parts.second ? false : true;\n }\n } else {\n secondsList.classList.add('hidden');\n if (timepicker._h_timepicker.is12Hour) {\n okButton.disabled = timepicker._h_time.parts.hour && timepicker._h_time.parts.minute && timepicker._h_time.parts.period ? false : true;\n } else {\n okButton.disabled = timepicker._h_time.parts.hour && timepicker._h_time.parts.minute ? false : true;\n }\n }\n\n if (timepicker._h_timepicker.is12Hour) {\n periodList.classList.remove('hidden');\n for (let p = 0; p < periodList.children.length; p++) {\n if (periodList.children[p].innerText === timepicker._h_time.parts.period) {\n periodList.children[p].setAttribute('tabindex', '0');\n periodList.children[p].setAttribute('aria-selected', true);\n selectedPeriod = periodList.children[p];\n } else {\n periodList.children[p].setAttribute('tabindex', '-1');\n periodList.children[p].setAttribute('aria-selected', false);\n }\n }\n if (!selectedPeriod) {\n periodList.firstChild.setAttribute('tabindex', '0');\n }\n } else {\n periodList.classList.add('hidden');\n }\n }\n\n const onClick = (event) => {\n event.stopPropagation();\n };\n\n el.addEventListener('click', onClick);\n\n let autoUpdateCleanup;\n\n let focusFirstItem = true;\n\n function updatePosition() {\n computePosition(timepicker, el, {\n placement: el.getAttribute('data-align') || 'bottom-start',\n middleware: [offset(4), flip(), shift({ padding: 4 })],\n }).then(({ x, y }) => {\n Object.assign(el.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n el.classList.remove('scale-95', 'opacity-0');\n if (focusFirstItem) {\n focusFirstItem = false;\n Alpine.nextTick(() => {\n if (selectedHour) {\n selectedHour.focus();\n } else {\n hoursList.children[timepicker._h_timepicker.is12Hour ? 1 : 0].focus();\n }\n });\n }\n });\n }\n\n effect(() => {\n if (timepicker._h_timepicker.expanded) {\n render();\n el.classList.remove('hidden');\n autoUpdateCleanup = autoUpdate(timepicker, el, updatePosition);\n if (selectedHour) scrollIntoCenter(selectedHour.parentElement, selectedHour);\n if (selectedMinute) scrollIntoCenter(selectedMinute.parentElement, selectedMinute);\n if (selectedSecond && timepicker._h_timepicker.seconds) scrollIntoCenter(selectedSecond.parentElement, selectedSecond);\n } else {\n if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) {\n el.classList.add('hidden', 'scale-95', 'opacity-0');\n Object.assign(el.style, {\n left: '0px',\n top: '0px',\n });\n } else {\n el.classList.add('scale-95', 'opacity-0');\n }\n if (autoUpdateCleanup) autoUpdateCleanup();\n focusFirstItem = true;\n }\n });\n\n function onTransitionEnd(event) {\n if (event.target === el && event.target.classList.contains('opacity-0')) {\n el.classList.add('hidden');\n Object.assign(el.style, {\n left: '0px',\n top: '0px',\n });\n }\n }\n\n el.addEventListener('transitionend', onTransitionEnd);\n\n cleanup(() => {\n el.removeEventListener('keydown', onKeyDown);\n el.removeEventListener('click', onClick);\n el.removeEventListener('transitionend', onTransitionEnd);\n okButton.removeEventListener('click', timepicker._h_timepicker.close);\n nowButton.removeEventListener('click', getCurrentTime);\n timeContainer.removeEventListener('click', setTime);\n });\n });\n}\n", "export default function (Alpine) {\n Alpine.directive('h-toolbar', (el, { modifiers }) => {\n el.classList.add(\n 'bg-object-header',\n 'text-object-header-foreground',\n 'hbox',\n 'shrink-0',\n 'items-center',\n 'px-1',\n 'has-[>[data-slot=\"avatar\"]:last-of-type]:pr-2',\n 'has-[>[data-slot=\"toolbar-image\"]:first-of-type]:pl-2',\n 'gap-1',\n modifiers.includes('footer') ? 'border-t' : 'border-b',\n 'w-full',\n 'h-12',\n 'data-[size=sm]:h-8',\n 'data-[size=md]:h-10',\n 'data-[variant=transparent]:bg-transparent',\n 'data-[variant=transparent]:text-foreground',\n 'data-[floating=true]:shadow-xs',\n 'data-[floating=true]:rounded-lg',\n 'data-[floating=true]:border'\n );\n el.setAttribute('data-slot', 'toolbar');\n });\n\n Alpine.directive('h-toolbar-image', (el) => {\n el.classList.add('size-8', '[[data-size=md]_&]:size-7', '[[data-size=sm]_&]:size-6');\n el.setAttribute('data-slot', 'toolbar-image');\n });\n\n Alpine.directive('h-toolbar-branding', (el) => {\n el.classList.add(\n 'flex',\n 'flex-col',\n 'pl-2',\n '[[data-slot=toolbar-image]~&]:pl-1',\n '[[data-size=sm]_&,[data-size=md]_&]:flex-row',\n '[[data-size=sm]_&,[data-size=md]_&]:items-baseline',\n '[[data-size=sm]_&,[data-size=md]_&]:gap-1',\n '[[data-size=sm]_&_[data-slot=toolbar-subtitle],[data-size=md]_&_[data-slot=toolbar-subtitle]]:pl-0'\n );\n el.setAttribute('data-slot', 'toolbar-branding');\n });\n\n Alpine.directive('h-toolbar-title', (el) => {\n el.classList.add('pl-2', '[[data-slot=toolbar-branding]_&]:pl-0', 'font-medium', 'whitespace-nowrap', 'text-ellipsis', 'overflow-hidden');\n el.setAttribute('data-slot', 'toolbar-title');\n });\n\n Alpine.directive('h-toolbar-subtitle', (el) => {\n el.classList.add('text-xs', 'font-normal', 'whitespace-nowrap', 'text-ellipsis', 'overflow-hidden');\n el.setAttribute('data-slot', 'toolbar-subtitle');\n });\n\n Alpine.directive('h-toolbar-spacer', (el) => {\n el.classList.add('flex-[1_auto]', 'h-full');\n el.setAttribute('tabindex', '-1');\n el.setAttribute('data-slot', 'toolbar-spacer');\n });\n\n Alpine.directive('h-toolbar-separator', (el) => {\n el.classList.add('w-px', 'h-8', '[[data-size=md]_&,[data-size=sm]_&]:h-6', 'border-l');\n el.setAttribute('data-slot', 'toolbar-separator');\n });\n}\n", "import { arrow, computePosition, flip, offset, shift } from '@floating-ui/dom';\nimport uuidv4 from '../utils/uuid';\nexport default function (Alpine) {\n Alpine.directive('h-tooltip-trigger', (el, _, { Alpine, cleanup }) => {\n el._tooltip = Alpine.reactive({\n id: undefined,\n controls: `htp${uuidv4()}`,\n shown: false,\n });\n\n if (el.hasAttribute('id')) {\n el._tooltip.id = el.getAttribute('id');\n } else {\n el._tooltip.id = `htt${uuidv4()}`;\n el.setAttribute('id', el._tooltip.id);\n }\n el.setAttribute('aria-describedby', el._tooltip.controls);\n\n const handler = (event) => {\n el._tooltip.shown = event.type === 'pointerenter';\n };\n\n el.addEventListener('pointerenter', handler);\n el.addEventListener('pointerleave', handler);\n\n cleanup(() => {\n el.removeEventListener('pointerenter', handler);\n el.removeEventListener('pointerleave', handler);\n });\n });\n\n Alpine.directive('h-tooltip', (el, { original }, { effect, cleanup }) => {\n const tooltip = (() => {\n let sibling = el.previousElementSibling;\n while (sibling && !Object.prototype.hasOwnProperty.call(sibling, '_tooltip')) {\n sibling = sibling.previousElementSibling;\n }\n return sibling;\n })();\n\n if (!tooltip) {\n throw new Error(`${original} must be placed after a tooltip trigger element`);\n }\n el.classList.add(\n 'absolute',\n 'bg-foreground',\n 'text-background',\n 'z-50',\n 'w-fit',\n 'rounded-md',\n 'px-3',\n 'py-1.5',\n 'text-xs',\n 'text-balance',\n 'transition-[opacity,scale]',\n 'motion-reduce:transition-none',\n 'duration-100',\n 'ease-out',\n 'opacity-0',\n 'scale-95'\n );\n el.setAttribute('data-slot', 'tooltip');\n el.setAttribute('id', tooltip._tooltip.controls);\n\n const arrowEl = document.createElement('span');\n arrowEl.classList.add('absolute', 'bg-foreground', 'size-2.5', 'rotate-45');\n el.appendChild(arrowEl);\n\n function updatePosition() {\n computePosition(tooltip, el, {\n placement: 'top',\n middleware: [offset(10), flip(), shift({ padding: 4 }), arrow({ element: arrowEl })],\n }).then(({ x, y, middlewareData, placement }) => {\n Object.assign(el.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n el.classList.remove('scale-95', 'opacity-0');\n if (middlewareData.arrow) {\n Object.assign(arrowEl.style, {\n left: middlewareData.arrow.x != null ? `${middlewareData.arrow.x}px` : '',\n top: placement === 'top' ? `${el.offsetHeight - arrowEl.clientHeight / 2}px` : `-${arrowEl.clientHeight / 2}px`,\n });\n }\n });\n }\n\n effect(() => {\n if (tooltip._tooltip.shown) {\n el.classList.remove('hidden');\n updatePosition();\n } else {\n if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) {\n el.classList.add('hidden', 'scale-95', 'opacity-0');\n Object.assign(el.style, {\n left: '0px',\n top: '0px',\n });\n Object.assign(arrowEl.style, {\n left: '0px',\n top: '0px',\n });\n } else {\n el.classList.add('scale-95', 'opacity-0');\n }\n }\n });\n\n function onTransitionEnd(event) {\n if (event.target === el && event.target.classList.contains('opacity-0')) {\n el.classList.add('hidden');\n Object.assign(el.style, {\n left: '0px',\n top: '0px',\n });\n Object.assign(arrowEl.style, {\n left: '0px',\n top: '0px',\n });\n }\n }\n\n el.addEventListener('transitionend', onTransitionEnd);\n\n cleanup(() => {\n el.removeEventListener('transitionend', onTransitionEnd);\n });\n });\n}\n", "import { ChevronRight, createSvg } from './../common/icons';\n\nexport default function (Alpine) {\n Alpine.directive('h-tree', (el, { modifiers }, { effect, cleanup }) => {\n el.classList.add('vbox', 'w-full', 'min-w-0', 'gap-1');\n el.setAttribute('tabindex', '-1');\n if (modifiers.includes('sub')) {\n el.classList.add(\n 'relative',\n 'translate-x-px',\n 'py-0.5',\n 'pl-4',\n 'data-[border=true]:before:absolute',\n 'data-[border=true]:before:left-[calc(var(--spacing)*3)]',\n 'data-[border=true]:before:block',\n 'data-[border=true]:before:top-0.5',\n 'data-[border=true]:before:bottom-0.5',\n 'data-[border=true]:before:min-w-px',\n 'data-[border=true]:before:w-[calc(var(--spacing)*0.25)]',\n 'data-[border=true]:before:bg-border'\n );\n el.setAttribute('data-slot', 'subtree');\n el.setAttribute('role', 'group');\n\n const treeItem = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_tree_item'));\n effect(() => {\n if (treeItem._h_tree_item.expanded) {\n el.classList.remove('!hidden');\n } else {\n el.classList.add('!hidden');\n }\n });\n } else {\n el.setAttribute('data-slot', 'tree');\n el.setAttribute('role', 'tree');\n\n function getVisibleItems(tree) {\n return [...tree.querySelectorAll('[role=\"treeitem\"]')].filter((item) => {\n let parent = item.parentElement.closest('[role=\"group\"]');\n while (parent) {\n const parentItem = parent.closest('[role=\"treeitem\"]');\n if (parentItem && parentItem.getAttribute('aria-expanded') === 'false') {\n return false;\n }\n parent = parentItem?.parentElement.closest('[role=\"group\"]');\n }\n return true;\n });\n }\n\n function focusItem(item) {\n [...el.querySelectorAll('[role=\"treeitem\"]')].forEach((i) => i.setAttribute('tabindex', '-1'));\n item.setAttribute('tabindex', '0');\n item.focus();\n }\n\n function onKeyDown(event) {\n const items = getVisibleItems(el);\n const current = el.querySelector('li[tabindex=\"0\"]');\n const index = items.indexOf(current);\n\n if (index === -1) return;\n\n switch (event.key) {\n case 'Down':\n case 'ArrowDown':\n event.preventDefault();\n if (items[index + 1]) focusItem(items[index + 1]);\n break;\n case 'Up':\n case 'ArrowUp':\n event.preventDefault();\n if (items[index - 1]) focusItem(items[index - 1]);\n break;\n case 'Right':\n case 'ArrowRight':\n if (current.getAttribute('aria-expanded') === 'false') {\n current.click();\n } else {\n const firstChild = current.querySelector('[role=\"group\"] [role=\"treeitem\"]');\n if (firstChild) focusItem(firstChild);\n }\n break;\n case 'Left':\n case 'ArrowLeft':\n if (current.getAttribute('aria-expanded') === 'true') {\n current.click();\n } else {\n const parentItem = current.parentElement.closest('[role=\"treeitem\"]');\n if (parentItem) focusItem(parentItem);\n }\n break;\n\n case 'Home':\n event.preventDefault();\n focusItem(items[0]);\n break;\n\n case 'End':\n event.preventDefault();\n focusItem(items[items.length - 1]);\n break;\n\n case 'Enter':\n case ' ':\n event.preventDefault();\n current.click();\n break;\n }\n }\n\n el.addEventListener('keydown', onKeyDown);\n cleanup(() => {\n el.removeEventListener('keydown', onKeyDown);\n });\n }\n });\n\n Alpine.directive('h-tree-item', (el, { modifiers, expression }, { evaluate, evaluateLater, effect, cleanup }) => {\n el._h_tree_item = Alpine.reactive({\n hasSubtree: modifiers.includes('expanded'),\n expanded: true,\n });\n el.classList.add(\n 'group/tree-item',\n 'relative',\n 'outline-none',\n 'focus:[&>[data-slot=\"tree-button\"]]:bg-secondary',\n 'focus:[&>[data-slot=\"tree-button\"]]:text-secondary-foreground',\n 'aria-selected:[&>[data-slot=\"tree-button\"]]:bg-primary',\n 'aria-selected:[&>[data-slot=\"tree-button\"]]:font-medium',\n 'aria-selected:[&>[data-slot=\"tree-button\"]]:text-primary-foreground'\n );\n el.setAttribute('data-slot', 'tree-item');\n el.setAttribute('role', 'treeitem');\n const treeRoot = Alpine.findClosest(el.parentElement, (parent) => parent.getAttribute('data-slot') === 'tree');\n if (treeRoot && treeRoot.querySelector('[data-slot=tree-item]') === el) {\n el.setAttribute('tabindex', '0');\n } else {\n el.setAttribute('tabindex', '-1');\n }\n\n effect(() => {\n if (!el.closest('[role=\"tree\"]')) return;\n });\n\n const onClick = (event) => {\n if (event.target === el || event.target.parentElement === el) {\n if (el._h_tree_item.hasSubtree) {\n if (expression === 'false' || expression === 'true') {\n el._h_tree_item.expanded = el.getAttribute('aria-expanded') === 'true' ? false : true;\n el.setAttribute('aria-expanded', el._h_tree_item.expanded);\n } else {\n el._h_tree_item.expanded = !evaluate(expression);\n evaluate(`${expression} = !${expression}`);\n }\n }\n [...treeRoot.querySelectorAll('[role=\"treeitem\"]')].forEach((i) => i.setAttribute('tabindex', '-1'));\n el.setAttribute('tabindex', '0');\n }\n };\n\n el.addEventListener('click', onClick);\n\n cleanup(() => {\n el.removeEventListener('click', onClick);\n });\n\n if (el._h_tree_item.hasSubtree) {\n const setExpanded = (expanded) => {\n el._h_tree_item.expanded = expanded;\n el.setAttribute('aria-expanded', expanded);\n };\n const getExpanded = evaluateLater(expression);\n\n effect(() => {\n getExpanded((expanded) => {\n setExpanded(expanded);\n });\n });\n }\n });\n\n Alpine.directive('h-tree-button', (el, { original }, { effect }) => {\n const treeItem = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_tree_item'));\n if (!treeItem) throw new Error(`${original} must be inside a tree item`);\n el.classList.add(\n 'flex',\n 'w-full',\n 'items-center',\n 'gap-2',\n 'overflow-hidden',\n 'rounded-md',\n 'p-1.5',\n 'text-left',\n 'text-sm',\n 'align-middle',\n 'outline-hidden',\n 'ring-ring',\n 'transition-[width,height,padding]',\n 'motion-reduce:transition-none',\n 'hover:bg-secondary',\n 'hover:text-secondary-foreground',\n 'focus-visible:ring-2',\n 'active:bg-primary',\n 'active:text-primary-foreground',\n 'disabled:pointer-events-none',\n 'disabled:opacity-50',\n 'aria-disabled:pointer-events-none',\n 'aria-disabled:opacity-50',\n '[&>span]:w-full',\n '[&>span]:truncate',\n '[&>span]:align-middle',\n '[&>span]:pointer-events-none',\n '[&>svg]:size-4',\n '[&>svg]:shrink-0',\n '[&>svg]:pointer-events-none',\n 'data-[indicator]:after:block',\n 'data-[indicator]:after:ml-auto',\n 'data-[indicator]:after:rounded-full',\n 'data-[indicator]:after:size-2',\n 'data-[indicator=positive]:after:bg-positive',\n 'data-[indicator=negative]:after:bg-negative',\n 'data-[indicator=warning]:after:bg-warning',\n 'data-[indicator=information]:after:bg-information'\n );\n el.setAttribute('data-slot', 'tree-button');\n el.setAttribute('tabindex', '-1');\n el.setAttribute('role', 'presentation');\n\n if (treeItem._h_tree_item.hasSubtree) {\n const chevronDown = createSvg({\n icon: ChevronRight,\n classes: 'size-4 shrink-0 transition-transform motion-reduce:transition-none duration-200 [[data-expanded=true]>&]:rotate-90',\n attrs: {\n 'aria-hidden': true,\n role: 'presentation',\n },\n });\n el.prepend(chevronDown);\n } else {\n el.classList.add('before:size-4');\n }\n\n effect(() => {\n el.setAttribute('data-expanded', treeItem._h_tree_item.expanded);\n });\n });\n}\n", "{\n \"name\": \"@codbex/harmonia\",\n \"version\": \"1.10.1\",\n \"description\": \"A Modern UI Component Library for Alpine.js\",\n \"repository\": {\n \"url\": \"git+https://github.com/codbex/harmonia.git\",\n \"type\": \"git\"\n },\n \"type\": \"module\",\n \"main\": \"dist/harmonia.min.js\",\n \"module\": \"dist/harmonia.esm.min.js\",\n \"unpkg\": \"dist/harmonia.min.js\",\n \"exports\": \"./dist/harmonia.esm.min.js\",\n \"keywords\": [],\n \"author\": \"StanGenchev\",\n \"license\": \"MIT\",\n \"contributors\": [\n {\n \"name\": \"Stan Genchev\",\n \"email\": \"stan.genchev@codbex.com\",\n \"url\": \"https://github.com/StanZGenchev\"\n }\n ],\n \"files\": [\n \"dist/\"\n ],\n \"scripts\": {\n \"build\": \"node ./scripts/build.cjs && npm run tailwind && node ./scripts/doc-build.cjs\",\n \"build:prod\": \"node ./scripts/build.cjs && npm run tailwind\",\n \"tailwind\": \"npx @tailwindcss/cli -m -i src/styles/globals.css -o dist/harmonia.css\",\n \"tailwind:watch\": \"npx @tailwindcss/cli -m -i src/styles/globals.css -o dist/harmonia.css -w\",\n \"test\": \"vitest run\",\n \"test:watch\": \"vitest\",\n \"test:coverage\": \"vitest run --coverage\",\n \"lint\": \"eslint \\\"src/**/*.js\\\" \\\"scripts/**/*.cjs\\\"\",\n \"lint:fix\": \"eslint --fix \\\"src/**/*.js\\\" \\\"scripts/**/*.cjs\\\"\",\n \"format\": \"prettier --write \\\"**/*.{js,jsx,ts,tsx,json,css,scss,md,html,yaml}\\\" --config ./.prettierrc\",\n \"format:check\": \"prettier --check \\\"**/*.{js,jsx,ts,tsx,json,css,scss,md,html,yaml}\\\" --config ./.prettierrc\",\n \"docs:install\": \"node ./scripts/doc-install.cjs\",\n \"docs:dev\": \"vitepress dev docs\",\n \"docs:build\": \"vitepress build docs\",\n \"docs:preview\": \"vitepress preview docs\"\n },\n \"docDependencies\": {\n \"alpinejs\": \"^3.15.12\",\n \"lucide\": \"^1.16.0\",\n \"culori\": \"^4.0.2\",\n \"@fontsource/open-sans\": \"^5.2.7\"\n },\n \"devDependencies\": {\n \"@eslint/js\": \"^10.0.1\",\n \"@tailwindcss/cli\": \"^4.3.0\",\n \"@vitest/coverage-v8\": \"^4.1.7\",\n \"alpinejs\": \"^3.15.12\",\n \"autoprefixer\": \"^10.5.0\",\n \"esbuild\": \"^0.28.0\",\n \"eslint\": \"^10.4.0\",\n \"eslint-config-prettier\": \"^10.1.8\",\n \"globals\": \"^17.6.0\",\n \"happy-dom\": \"^20.9.0\",\n \"prettier\": \"^3.8.3\",\n \"prettier-plugin-organize-imports\": \"^4.3.0\",\n \"prettier-plugin-tailwindcss\": \"^0.7.2\",\n \"tailwindcss\": \"^4.3.0\",\n \"vitepress\": \"^2.0.0-alpha.17\",\n \"vitest\": \"^4.1.7\"\n },\n \"peerDependencies\": {\n \"alpinejs\": \"^3.15.12\"\n },\n \"dependencies\": {\n \"@floating-ui/dom\": \"^1.7.6\",\n \"nouislider\": \"^15.8.1\"\n }\n}\n", "let colorSchemeKey = 'codbex.harmonia.colorMode';\nlet savedScheme = localStorage.getItem(colorSchemeKey);\n\nconst callbacks = [];\n\nconst onColorSchemeChange = (scheme) => {\n for (let i = 0; i < callbacks.length; i++) {\n callbacks[i](scheme);\n }\n};\n\nconst colorSchemeChange = (event) => {\n if (event.matches) {\n document.documentElement.classList.add('dark');\n onColorSchemeChange('dark');\n } else {\n document.documentElement.classList.remove('dark');\n onColorSchemeChange('light');\n }\n};\n\nconst initColorScheme = () => {\n if (savedScheme === 'dark') {\n document.documentElement.classList.add('dark');\n } else if (savedScheme === 'light') {\n document.documentElement.classList.remove('dark');\n } else {\n if (window.matchMedia('(prefers-color-scheme: dark)').matches) {\n document.documentElement.classList.add('dark');\n }\n window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', colorSchemeChange);\n }\n};\n\nconst setColorScheme = (mode) => {\n if (mode === 'dark') {\n document.documentElement.classList.add('dark');\n localStorage.setItem(colorSchemeKey, 'dark');\n window.matchMedia('(prefers-color-scheme: dark)').removeEventListener('change', colorSchemeChange);\n onColorSchemeChange('dark');\n } else if (mode === 'light') {\n document.documentElement.classList.remove('dark');\n localStorage.setItem(colorSchemeKey, 'light');\n window.matchMedia('(prefers-color-scheme: dark)').removeEventListener('change', colorSchemeChange);\n onColorSchemeChange('light');\n } else {\n if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {\n document.documentElement.classList.add('dark');\n onColorSchemeChange('dark');\n } else {\n document.documentElement.classList.remove('dark');\n onColorSchemeChange('light');\n }\n localStorage.setItem(colorSchemeKey, 'auto');\n window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', colorSchemeChange);\n }\n};\n\nconst getColorScheme = () => {\n const theme = localStorage.getItem(colorSchemeKey);\n if (theme) return theme;\n return 'auto';\n};\n\nconst getSystemColorScheme = () => {\n if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {\n return 'dark';\n }\n return 'light';\n};\n\nconst addColorSchemeListener = (callback) => {\n callbacks.push(callback);\n};\n\nconst removeColorSchemeListener = (callback) => {\n for (let i = 0; i < callbacks.length; i++) {\n if (callbacks[i] === callback) {\n callbacks.splice(i, 1);\n return;\n }\n }\n};\n\ninitColorScheme();\n\nexport { addColorSchemeListener, getColorScheme, getSystemColorScheme, removeColorSchemeListener, setColorScheme };\n", "export default function (Alpine) {\n Alpine.directive('h-focus', (el, { expression }, { effect, evaluateLater }) => {\n const getValue = evaluateLater(expression);\n effect(() => {\n getValue((val) => {\n if (val) el.focus();\n });\n });\n });\n}\n", "export default function (Alpine) {\n Alpine.directive('h-include', (el, { original, modifiers, expression }, { evaluateLater, effect, cleanup, Alpine }) => {\n const getUrl = evaluateLater(expression);\n\n function executeScript(oldScript) {\n return new Promise((resolve, reject) => {\n const newScript = document.createElement('script');\n\n // Copy attributes\n for (const attr of oldScript.attributes) {\n newScript.setAttribute(attr.name, attr.value);\n }\n\n // External script\n if (oldScript.src) {\n newScript.src = oldScript.src;\n\n newScript.onload = resolve;\n newScript.onerror = reject;\n } else {\n // Inline script\n newScript.textContent = oldScript.textContent;\n resolve();\n }\n\n el.appendChild(newScript);\n });\n }\n\n function initTree() {\n for (let i = 0; i < el.children.length; i++) {\n if (el.children[i].tagName !== 'SCRIPT') Alpine.initTree(el.children[i]);\n }\n }\n function destroyTree() {\n if (el.children.length) {\n for (let i = 0; i < el.children.length; i++) {\n if (el.children[i].tagName !== 'SCRIPT') Alpine.initTree(el.children[i]);\n }\n }\n }\n\n function getHtml(url) {\n const parsed = new URL(url, window.location.origin);\n\n if (parsed.origin === window.location.origin) {\n fetch(url)\n .then((response) => {\n if (response.status === 200) return response.text();\n throw response;\n })\n .then(async (content) => {\n if (modifiers.includes('js')) {\n const container = document.createElement('div');\n container.innerHTML = content;\n\n const scripts = [...container.querySelectorAll('script')];\n\n // Remove scripts from the container\n scripts.forEach((script) => script.remove());\n\n // Append HTML first\n while (container.childNodes.length > 0) {\n el.appendChild(container.childNodes[0]);\n }\n\n // Execute scripts sequentially\n for (const oldScript of scripts) {\n await executeScript(oldScript);\n }\n } else {\n el.innerHTML = content;\n }\n // Initialize the new elements with Alpine\n initTree();\n })\n .catch((response) => {\n console.error(response);\n });\n } else {\n throw new Error(`${original}: external requests not allowed`);\n }\n }\n\n effect(() => {\n getUrl((url) => {\n destroyTree();\n el.innerHTML = '';\n if (url) getHtml(url);\n });\n });\n\n cleanup(() => {\n destroyTree();\n });\n }).before('bind');\n}\n", "/**\n * This directive was originally inspired by Ben Nadel\u2019s awesome \u201Ctemplate-outlet\u201D directive and has since evolved independently.\n * See https://www.bennadel.com/\n */\n\nexport default function (Alpine) {\n Alpine.directive('h-template', (el, { original, expression }, { evaluate, Alpine, cleanup }) => {\n if (el.hasAttribute(Alpine.prefixed('data'))) {\n const template = evaluate(expression);\n const clone = template.content.cloneNode(true).firstElementChild;\n Alpine.addScopeToNode(clone, Alpine.closestDataStack(el)[0], el.parentElement);\n Alpine.mutateDom(() => {\n el.before(clone);\n Alpine.initTree(clone);\n });\n cleanup(() => {\n Alpine.destroyTree(clone);\n clone.remove();\n });\n } else {\n console.error(`${original}: ${Alpine.prefixed('data')} directive is missing`);\n }\n });\n}\n", "import accordion from './components/accordion';\nimport alert from './components/alert';\nimport avatar from './components/avatar';\nimport badge from './components/badge';\nimport button from './components/button';\nimport calendar from './components/calendar';\nimport card from './components/card';\nimport checkbox from './components/checkbox';\nimport chip from './components/chip';\nimport datepicker from './components/datepicker';\nimport dialog from './components/dialog';\nimport expansionPanel from './components/expansion-panel';\nimport fieldset from './components/fieldset';\nimport icon from './components/icon';\nimport infoPage from './components/info-page';\nimport input from './components/input';\nimport label from './components/label';\nimport list from './components/list';\nimport menu from './components/menu';\nimport notifications from './components/notifications';\nimport pagination from './components/pagination';\nimport popover from './components/popover';\nimport progress from './components/progress';\nimport radio from './components/radio';\nimport range from './components/range';\nimport select from './components/select';\nimport separator from './components/separator';\nimport sheet from './components/sheet';\nimport sidebar from './components/sidebar';\nimport skeleton from './components/skeleton';\nimport spinner from './components/spinner';\nimport split from './components/split';\nimport _switch from './components/switch';\nimport table from './components/table';\nimport tabs from './components/tabs';\nimport tag from './components/tag';\nimport text from './components/text';\nimport textarea from './components/textarea';\nimport tile from './components/tile';\nimport timepicker from './components/timepicker';\nimport toolbar from './components/toolbar';\nimport tooltip from './components/tooltip';\nimport tree from './components/tree';\n\nexport { version } from '../package.json';\nexport { getBreakpointListener } from './utils/breakpoint-listener';\nexport { addColorSchemeListener, getColorScheme, getSystemColorScheme, removeColorSchemeListener, setColorScheme } from './utils/theme';\n\nimport focus from './utils/focus';\nimport include from './utils/include';\nimport template from './utils/template';\n\nexport {\n accordion as Accordion,\n alert as Alert,\n avatar as Avatar,\n badge as Badge,\n button as Button,\n calendar as Calendar,\n card as Card,\n checkbox as Checkbox,\n chip as Chip,\n datepicker as DatePicker,\n dialog as Dialog,\n expansionPanel as ExpansionPanel,\n fieldset as Fieldset,\n focus as Focus,\n icon as Icon,\n include as Include,\n infoPage as InfoPage,\n input as Input,\n label as Label,\n list as List,\n menu as Menu,\n notifications as Notifications,\n pagination as Pagination,\n popover as Popover,\n progress as Progress,\n radio as Radio,\n range as Range,\n select as Select,\n separator as Separator,\n sheet as Sheet,\n sidebar as Sidebar,\n skeleton as Skeleton,\n spinner as Spinner,\n split as Split,\n _switch as Switch,\n table as Table,\n tabs as Tabs,\n tag as Tag,\n template as Template,\n text as Text,\n textarea as Textarea,\n tile as Tile,\n timepicker as TimePicker,\n toolbar as Toolbar,\n tooltip as Tooltip,\n tree as Tree,\n};\n\nexport const registerComponents = (registerPlugin) => {\n registerPlugin(accordion);\n registerPlugin(alert);\n registerPlugin(avatar);\n registerPlugin(badge);\n registerPlugin(button);\n registerPlugin(calendar);\n registerPlugin(card);\n registerPlugin(checkbox);\n registerPlugin(datepicker);\n registerPlugin(dialog);\n registerPlugin(expansionPanel);\n registerPlugin(fieldset);\n registerPlugin(focus);\n registerPlugin(icon);\n registerPlugin(include);\n registerPlugin(infoPage);\n registerPlugin(input);\n registerPlugin(label);\n registerPlugin(list);\n registerPlugin(menu);\n registerPlugin(notifications);\n registerPlugin(pagination);\n registerPlugin(popover);\n registerPlugin(progress);\n registerPlugin(radio);\n registerPlugin(range);\n registerPlugin(select);\n registerPlugin(separator);\n registerPlugin(sheet);\n registerPlugin(sidebar);\n registerPlugin(skeleton);\n registerPlugin(spinner);\n registerPlugin(split);\n registerPlugin(_switch);\n registerPlugin(table);\n registerPlugin(tabs);\n registerPlugin(tag);\n registerPlugin(template);\n registerPlugin(text);\n registerPlugin(textarea);\n registerPlugin(tile);\n registerPlugin(timepicker);\n registerPlugin(toolbar);\n registerPlugin(tooltip);\n registerPlugin(tree);\n};\n\nexport default registerComponents;\n"],
|
|
5
|
-
"mappings": "0hBAAA,IAAAA,GAAAC,GAAA,CAAAC,GAAAC,KAAA,EAAC,SAAUC,EAAQC,EAAS,CACxB,OAAOH,IAAY,UAAY,OAAOC,GAAW,IAAcE,EAAQH,EAAO,EAC9E,OAAO,QAAW,YAAc,OAAO,IAAM,OAAO,CAAC,SAAS,EAAGG,CAAO,GACvED,EAAS,OAAO,WAAe,IAAc,WAAaA,GAAU,KAAMC,EAAQD,EAAO,WAAa,CAAC,CAAC,EAC7G,GAAGF,IAAO,SAAUA,EAAS,CAAE,aAE3BA,EAAQ,SAAW,QAClB,SAAUI,EAAU,CACjBA,EAAS,MAAW,QACpBA,EAAS,MAAW,QACpBA,EAAS,UAAe,YACxBA,EAAS,MAAW,QACpBA,EAAS,OAAY,QACzB,GAAGJ,EAAQ,WAAaA,EAAQ,SAAW,CAAC,EAAE,EAC9CA,EAAQ,SAAW,QAClB,SAAUK,EAAU,CACjBA,EAASA,EAAS,KAAU,EAAE,EAAI,OAClCA,EAASA,EAAS,QAAa,CAAC,EAAI,UACpCA,EAASA,EAAS,WAAgB,CAAC,EAAI,aACvCA,EAASA,EAAS,WAAgB,CAAC,EAAI,YAC3C,GAAGL,EAAQ,WAAaA,EAAQ,SAAW,CAAC,EAAE,EAE9C,SAASM,EAAiBC,EAAO,CAC7B,OAAOC,EAAwBD,CAAK,GAAK,OAAOA,EAAM,MAAS,UACnE,CACA,SAASC,EAAwBD,EAAO,CAEpC,OAAO,OAAOA,GAAU,UAAY,OAAOA,EAAM,IAAO,UAC5D,CACA,SAASE,EAAcC,EAAI,CACvBA,EAAG,cAAc,YAAYA,CAAE,CACnC,CACA,SAASC,EAAMC,EAAO,CAClB,OAAOA,GAAU,IACrB,CAEA,SAASC,EAAeC,EAAG,CACvBA,EAAE,eAAe,CACrB,CAEA,SAASC,EAAOC,EAAO,CACnB,OAAOA,EAAM,OAAO,SAAUC,EAAG,CAC7B,OAAQ,KAAKA,CAAC,EAAuB,GAAlB,KAAKA,CAAC,EAAI,EACjC,EAAG,CAAC,CAAC,CACT,CAEA,SAASC,EAAQN,EAAOO,EAAI,CACxB,OAAO,KAAK,MAAMP,EAAQO,CAAE,EAAIA,CACpC,CAEA,SAASC,EAAOC,EAAMC,EAAa,CAC/B,IAAIC,EAAOF,EAAK,sBAAsB,EAClCG,EAAMH,EAAK,cACXI,EAAUD,EAAI,gBACdE,EAAaC,EAAcH,CAAG,EAIlC,MAAI,0BAA0B,KAAK,UAAU,SAAS,IAClDE,EAAW,EAAI,GAEZJ,EAAcC,EAAK,IAAMG,EAAW,EAAID,EAAQ,UAAYF,EAAK,KAAOG,EAAW,EAAID,EAAQ,UAC1G,CAEA,SAASG,EAAUX,EAAG,CAClB,OAAO,OAAOA,GAAM,UAAY,CAAC,MAAMA,CAAC,GAAK,SAASA,CAAC,CAC3D,CAEA,SAASY,EAAYC,EAASC,EAAWC,EAAU,CAC3CA,EAAW,IACXC,EAASH,EAASC,CAAS,EAC3B,WAAW,UAAY,CACnBG,EAAYJ,EAASC,CAAS,CAClC,EAAGC,CAAQ,EAEnB,CAEA,SAASG,EAAMlB,EAAG,CACd,OAAO,KAAK,IAAI,KAAK,IAAIA,EAAG,GAAG,EAAG,CAAC,CACvC,CAGA,SAASmB,EAAQnB,EAAG,CAChB,OAAO,MAAM,QAAQA,CAAC,EAAIA,EAAI,CAACA,CAAC,CACpC,CAEA,SAASoB,EAAcC,EAAQ,CAC3BA,EAAS,OAAOA,CAAM,EACtB,IAAIC,EAASD,EAAO,MAAM,GAAG,EAC7B,OAAOC,EAAO,OAAS,EAAIA,EAAO,CAAC,EAAE,OAAS,CAClD,CAEA,SAASN,EAASvB,EAAIqB,EAAW,CACzBrB,EAAG,WAAa,CAAC,KAAK,KAAKqB,CAAS,EACpCrB,EAAG,UAAU,IAAIqB,CAAS,EAG1BrB,EAAG,WAAa,IAAMqB,CAE9B,CAEA,SAASG,EAAYxB,EAAIqB,EAAW,CAC5BrB,EAAG,WAAa,CAAC,KAAK,KAAKqB,CAAS,EACpCrB,EAAG,UAAU,OAAOqB,CAAS,EAG7BrB,EAAG,UAAYA,EAAG,UAAU,QAAQ,IAAI,OAAO,UAAYqB,EAAU,MAAM,GAAG,EAAE,KAAK,GAAG,EAAI,UAAW,IAAI,EAAG,GAAG,CAEzH,CAEA,SAASS,EAAS9B,EAAIqB,EAAW,CAC7B,OAAOrB,EAAG,UAAYA,EAAG,UAAU,SAASqB,CAAS,EAAI,IAAI,OAAO,MAAQA,EAAY,KAAK,EAAE,KAAKrB,EAAG,SAAS,CACpH,CAEA,SAASiB,EAAcH,EAAK,CACxB,IAAIiB,EAAoB,OAAO,cAAgB,OAC3CC,GAAgBlB,EAAI,YAAc,MAAQ,aAC1CmB,EAAIF,EACF,OAAO,YACPC,EACIlB,EAAI,gBAAgB,WACpBA,EAAI,KAAK,WACfoB,EAAIH,EACF,OAAO,YACPC,EACIlB,EAAI,gBAAgB,UACpBA,EAAI,KAAK,UACnB,MAAO,CACH,EAAGmB,EACH,EAAGC,CACP,CACJ,CAIA,SAASC,GAAa,CAGlB,OAAO,OAAO,UAAU,eAClB,CACE,MAAO,cACP,KAAM,cACN,IAAK,WACT,EACE,OAAO,UAAU,iBACb,CACE,MAAO,gBACP,KAAM,gBACN,IAAK,aACT,EACE,CACE,MAAO,uBACP,KAAM,sBACN,IAAK,kBACT,CACZ,CAGA,SAASC,GAAqB,CAC1B,IAAIC,EAAkB,GAEtB,GAAI,CACA,IAAIC,EAAO,OAAO,eAAe,CAAC,EAAG,UAAW,CAC5C,IAAK,UAAY,CACbD,EAAkB,EACtB,CACJ,CAAC,EAED,OAAO,iBAAiB,OAAQ,KAAMC,CAAI,CAC9C,MACU,CAAE,CAEZ,OAAOD,CACX,CACA,SAASE,GAA6B,CAClC,OAAO,OAAO,KAAO,IAAI,UAAY,IAAI,SAAS,eAAgB,MAAM,CAC5E,CAIA,SAASC,EAAcC,EAAIC,EAAI,CAC3B,MAAO,MAAOA,EAAKD,EACvB,CAEA,SAASE,EAAeC,EAAO1C,EAAO2C,EAAY,CAC9C,OAAQ3C,EAAQ,KAAQ0C,EAAMC,EAAa,CAAC,EAAID,EAAMC,CAAU,EACpE,CAEA,SAASC,EAAaF,EAAO1C,EAAO,CAChC,OAAOyC,EAAeC,EAAOA,EAAM,CAAC,EAAI,EAAI1C,EAAQ,KAAK,IAAI0C,EAAM,CAAC,CAAC,EAAI1C,EAAQ0C,EAAM,CAAC,EAAG,CAAC,CAChG,CAEA,SAASG,EAAaH,EAAO1C,EAAO,CAChC,OAAQA,GAAS0C,EAAM,CAAC,EAAIA,EAAM,CAAC,GAAM,IAAMA,EAAM,CAAC,CAC1D,CACA,SAASI,EAAK9C,EAAO+C,EAAK,CAEtB,QADIC,EAAI,EACDhD,GAAS+C,EAAIC,CAAC,GACjBA,GAAK,EAET,OAAOA,CACX,CAEA,SAASC,EAAWC,EAAMC,EAAMnD,EAAO,CACnC,GAAIA,GAASkD,EAAK,MAAM,EAAE,EAAE,CAAC,EACzB,MAAO,KAEX,IAAIF,EAAIF,EAAK9C,EAAOkD,CAAI,EACpBE,EAAKF,EAAKF,EAAI,CAAC,EACfK,EAAKH,EAAKF,CAAC,EACXT,EAAKY,EAAKH,EAAI,CAAC,EACfR,GAAKW,EAAKH,CAAC,EACf,OAAOT,EAAKK,EAAa,CAACQ,EAAIC,CAAE,EAAGrD,CAAK,EAAIsC,EAAcC,EAAIC,EAAE,CACpE,CAEA,SAASc,GAAaJ,EAAMC,EAAMnD,EAAO,CAErC,GAAIA,GAAS,IACT,OAAOkD,EAAK,MAAM,EAAE,EAAE,CAAC,EAE3B,IAAIF,EAAIF,EAAK9C,EAAOmD,CAAI,EACpBC,EAAKF,EAAKF,EAAI,CAAC,EACfK,EAAKH,EAAKF,CAAC,EACXT,EAAKY,EAAKH,EAAI,CAAC,EACfR,GAAKW,EAAKH,CAAC,EACf,OAAOH,EAAa,CAACO,EAAIC,CAAE,GAAIrD,EAAQuC,GAAMD,EAAcC,EAAIC,EAAE,CAAC,CACtE,CAEA,SAASe,GAAQJ,EAAMK,EAAQC,EAAMzD,EAAO,CACxC,GAAIA,IAAU,IACV,OAAOA,EAEX,IAAI,EAAI8C,EAAK9C,EAAOmD,CAAI,EACpB9C,EAAI8C,EAAK,EAAI,CAAC,EACdO,EAAIP,EAAK,CAAC,EAEd,OAAIM,EAEIzD,EAAQK,GAAKqD,EAAIrD,GAAK,EACfqD,EAEJrD,EAENmD,EAAO,EAAI,CAAC,EAGVL,EAAK,EAAI,CAAC,EAAI7C,EAAQN,EAAQmD,EAAK,EAAI,CAAC,EAAGK,EAAO,EAAI,CAAC,CAAC,EAFpDxD,CAGf,CAGA,IAAI2D,IAA0B,UAAY,CACtC,SAASA,EAAShE,EAAO8D,EAAMG,EAAY,CACvC,KAAK,KAAO,CAAC,EACb,KAAK,KAAO,CAAC,EACb,KAAK,OAAS,CAAC,EACf,KAAK,UAAY,CAAC,EAClB,KAAK,qBAAuB,CAAC,EAC7B,KAAK,OAAS,CAACA,GAAc,EAAK,EAClC,KAAK,UAAY,CAAC,EAAK,EACvB,KAAK,KAAOH,EACZ,IAAII,EACAC,EAAU,CAAC,EAUf,IARA,OAAO,KAAKnE,CAAK,EAAE,QAAQ,SAAUkE,EAAO,CACxCC,EAAQ,KAAK,CAACtC,EAAQ7B,EAAMkE,CAAK,CAAC,EAAGA,CAAK,CAAC,CAC/C,CAAC,EAEDC,EAAQ,KAAK,SAAUzD,EAAGqD,GAAG,CACzB,OAAOrD,EAAE,CAAC,EAAE,CAAC,EAAIqD,GAAE,CAAC,EAAE,CAAC,CAC3B,CAAC,EAEIG,EAAQ,EAAGA,EAAQC,EAAQ,OAAQD,IACpC,KAAK,iBAAiBC,EAAQD,CAAK,EAAE,CAAC,EAAGC,EAAQD,CAAK,EAAE,CAAC,CAAC,EAM9D,IAFA,KAAK,UAAY,KAAK,OAAO,MAAM,CAAC,EAE/BA,EAAQ,EAAGA,EAAQ,KAAK,UAAU,OAAQA,IAC3C,KAAK,gBAAgBA,EAAO,KAAK,UAAUA,CAAK,CAAC,CAEzD,CACA,OAAAF,EAAS,UAAU,YAAc,SAAU3D,EAAO,CAE9C,QADI+D,EAAY,CAAC,EACRF,EAAQ,EAAGA,EAAQ,KAAK,UAAU,OAAS,EAAGA,IACnDE,EAAUF,CAAK,EAAIpB,EAAe,KAAK,KAAMzC,EAAO6D,CAAK,EAE7D,OAAOE,CACX,EAGAJ,EAAS,UAAU,oBAAsB,SAAU3D,EAAO+D,EAAWC,EAAW,CAC5E,IAAIC,EAAa,EAEjB,GAAIjE,EAAQ,KAAK,KAAK,KAAK,KAAK,OAAS,CAAC,EACtC,KAAOA,EAAQ,KAAK,KAAKiE,EAAa,CAAC,GACnCA,SAGCjE,IAAU,KAAK,KAAK,KAAK,KAAK,OAAS,CAAC,IAC7CiE,EAAa,KAAK,KAAK,OAAS,GAGhC,CAACD,GAAahE,IAAU,KAAK,KAAKiE,EAAa,CAAC,GAChDA,IAEAF,IAAc,OACdA,EAAY,CAAC,GAEjB,IAAIG,EACAC,EAAc,EACdC,GAAoBL,EAAUE,CAAU,EACxCI,GAAY,EACZC,EAAqB,EACrBC,GAAuB,EACvBC,GAAgB,EASpB,IAPIR,EACAE,GAAgBlE,EAAQ,KAAK,KAAKiE,CAAU,IAAM,KAAK,KAAKA,EAAa,CAAC,EAAI,KAAK,KAAKA,CAAU,GAGlGC,GAAgB,KAAK,KAAKD,EAAa,CAAC,EAAIjE,IAAU,KAAK,KAAKiE,EAAa,CAAC,EAAI,KAAK,KAAKA,CAAU,GAGnGG,GAAoB,GAEvBC,GAAY,KAAK,KAAKJ,EAAa,EAAIO,EAAa,EAAI,KAAK,KAAKP,EAAaO,EAAa,EAExFT,EAAUE,EAAaO,EAAa,EAAIL,EAAc,IAAMD,EAAe,IAAM,KAEjFI,EAAqBD,GAAYH,EAEjCC,GAAeC,GAAoB,IAAMF,GAAgBH,EAAUE,EAAaO,EAAa,EAE7FN,EAAe,IAIfI,EAAuBP,EAAUE,EAAaO,EAAa,EAAIH,GAAa,IAAOF,EAEnFA,EAAc,GAEdH,GACAO,GAAuBA,GAAuBD,EAE1C,KAAK,KAAK,OAASE,IAAiB,GACpCA,OAIJD,GAAuBA,GAAuBD,EAE1C,KAAK,KAAK,OAASE,IAAiB,GACpCA,MAIRJ,GAAoBL,EAAUE,EAAaO,EAAa,EAAIL,EAEhE,OAAOnE,EAAQuE,EACnB,EACAZ,EAAS,UAAU,WAAa,SAAU3D,EAAO,CAC7C,OAAAA,EAAQiD,EAAW,KAAK,KAAM,KAAK,KAAMjD,CAAK,EACvCA,CACX,EACA2D,EAAS,UAAU,aAAe,SAAU3D,EAAO,CAC/C,OAAOsD,GAAa,KAAK,KAAM,KAAK,KAAMtD,CAAK,CACnD,EACA2D,EAAS,UAAU,QAAU,SAAU3D,EAAO,CAC1C,OAAAA,EAAQuD,GAAQ,KAAK,KAAM,KAAK,OAAQ,KAAK,KAAMvD,CAAK,EACjDA,CACX,EACA2D,EAAS,UAAU,eAAiB,SAAU3D,EAAOyE,EAAQC,EAAM,CAC/D,IAAI,EAAI5B,EAAK9C,EAAO,KAAK,IAAI,EAE7B,OAAIA,IAAU,KAAQyE,GAAUzE,IAAU,KAAK,KAAK,EAAI,CAAC,KACrD,EAAI,KAAK,IAAI,EAAI,EAAG,CAAC,IAEjB,KAAK,KAAK,CAAC,EAAI,KAAK,KAAK,EAAI,CAAC,GAAK0E,CAC/C,EACAf,EAAS,UAAU,eAAiB,SAAU3D,EAAO,CACjD,IAAIgD,EAAIF,EAAK9C,EAAO,KAAK,IAAI,EAC7B,MAAO,CACH,WAAY,CACR,WAAY,KAAK,KAAKgD,EAAI,CAAC,EAC3B,KAAM,KAAK,UAAUA,EAAI,CAAC,EAC1B,YAAa,KAAK,qBAAqBA,EAAI,CAAC,CAChD,EACA,SAAU,CACN,WAAY,KAAK,KAAKA,EAAI,CAAC,EAC3B,KAAM,KAAK,UAAUA,EAAI,CAAC,EAC1B,YAAa,KAAK,qBAAqBA,EAAI,CAAC,CAChD,EACA,UAAW,CACP,WAAY,KAAK,KAAKA,CAAC,EACvB,KAAM,KAAK,UAAUA,CAAC,EACtB,YAAa,KAAK,qBAAqBA,CAAC,CAC5C,CACJ,CACJ,EACAW,EAAS,UAAU,kBAAoB,UAAY,CAC/C,IAAIgB,EAAe,KAAK,UAAU,IAAIlD,CAAa,EACnD,OAAO,KAAK,IAAI,MAAM,KAAMkD,CAAY,CAC5C,EACAhB,EAAS,UAAU,UAAY,UAAY,CACvC,OAAO,KAAK,KAAK,CAAC,IAAM,KAAK,KAAK,KAAK,KAAK,OAAS,CAAC,CAC1D,EAEAA,EAAS,UAAU,QAAU,SAAU3D,EAAO,CAC1C,OAAO,KAAK,QAAQ,KAAK,WAAWA,CAAK,CAAC,CAC9C,EACA2D,EAAS,UAAU,iBAAmB,SAAUE,EAAO7D,EAAO,CAC1D,IAAI4E,EAYJ,GAVIf,IAAU,MACVe,EAAa,EAERf,IAAU,MACfe,EAAa,IAGbA,EAAa,WAAWf,CAAK,EAG7B,CAAC7C,EAAU4D,CAAU,GAAK,CAAC5D,EAAUhB,EAAM,CAAC,CAAC,EAC7C,MAAM,IAAI,MAAM,0CAA0C,EAG9D,KAAK,KAAK,KAAK4E,CAAU,EACzB,KAAK,KAAK,KAAK5E,EAAM,CAAC,CAAC,EACvB,IAAI6E,EAAS,OAAO7E,EAAM,CAAC,CAAC,EAIvB4E,EAMD,KAAK,OAAO,KAAK,MAAMC,CAAM,EAAI,GAAQA,CAAM,EAL1C,MAAMA,CAAM,IACb,KAAK,OAAO,CAAC,EAAIA,GAMzB,KAAK,qBAAqB,KAAK,CAAC,CACpC,EACAlB,EAAS,UAAU,gBAAkB,SAAUmB,EAAGC,EAAG,CAEjD,GAAKA,EAIL,IAAI,KAAK,KAAKD,CAAC,IAAM,KAAK,KAAKA,EAAI,CAAC,EAAG,CACnC,KAAK,OAAOA,CAAC,EAAI,KAAK,qBAAqBA,CAAC,EAAI,KAAK,KAAKA,CAAC,EAC3D,MACJ,CAEA,KAAK,OAAOA,CAAC,EACTrC,EAAe,CAAC,KAAK,KAAKqC,CAAC,EAAG,KAAK,KAAKA,EAAI,CAAC,CAAC,EAAGC,EAAG,CAAC,EAAIzC,EAAc,KAAK,KAAKwC,CAAC,EAAG,KAAK,KAAKA,EAAI,CAAC,CAAC,EACzG,IAAIE,GAAc,KAAK,KAAKF,EAAI,CAAC,EAAI,KAAK,KAAKA,CAAC,GAAK,KAAK,UAAUA,CAAC,EACjEG,EAAc,KAAK,KAAK,OAAOD,EAAW,QAAQ,CAAC,CAAC,EAAI,CAAC,EACzDE,EAAO,KAAK,KAAKJ,CAAC,EAAI,KAAK,UAAUA,CAAC,EAAIG,EAC9C,KAAK,qBAAqBH,CAAC,EAAII,EACnC,EACOvB,CACX,GAAE,EAgBEwB,EAAmB,CACnB,GAAI,SAAUnF,EAAO,CACjB,OAAOA,IAAU,OAAY,GAAKA,EAAM,QAAQ,CAAC,CACrD,EACA,KAAM,MACV,EACIoF,EAAa,CACb,OAAQ,SACR,KAAM,OACN,OAAQ,SACR,OAAQ,SACR,YAAa,eACb,YAAa,eACb,UAAW,aACX,WAAY,aACZ,SAAU,WACV,WAAY,aACZ,QAAS,UACT,SAAU,WACV,IAAK,MACL,IAAK,MACL,iBAAkB,cAClB,iBAAkB,cAClB,UAAW,YACX,KAAM,aACN,IAAK,YACL,OAAQ,SACR,QAAS,UACT,KAAM,OACN,eAAgB,kBAChB,aAAc,gBACd,OAAQ,SACR,iBAAkB,oBAClB,eAAgB,kBAChB,aAAc,gBACd,YAAa,eACb,UAAW,aACX,MAAO,QACP,gBAAiB,mBACjB,cAAe,iBACf,YAAa,eACb,WAAY,cACZ,SAAU,WACd,EAEIC,EAAoB,CACpB,SAAU,cACV,KAAM,SACV,EAEA,SAASC,EAASC,EAAQ5F,EAAO,CAC7B,GAAI,CAACqB,EAAUrB,CAAK,EAChB,MAAM,IAAI,MAAM,oCAAoC,EAIxD4F,EAAO,WAAa5F,CACxB,CACA,SAAS6F,EAA2BD,EAAQ5F,EAAO,CAC/C,GAAI,CAACqB,EAAUrB,CAAK,EAChB,MAAM,IAAI,MAAM,sDAAsD,EAE1E4F,EAAO,uBAAyB5F,CACpC,CACA,SAAS8F,EAAuBF,EAAQ5F,EAAO,CAC3C,GAAI,CAACqB,EAAUrB,CAAK,EAChB,MAAM,IAAI,MAAM,kDAAkD,EAEtE4F,EAAO,mBAAqB5F,CAChC,CACA,SAAS+F,GAAwBH,EAAQ5F,EAAO,CAC5C,GAAI,CAACqB,EAAUrB,CAAK,EAChB,MAAM,IAAI,MAAM,mDAAmD,EAEvE4F,EAAO,oBAAsB5F,CACjC,CACA,SAASgG,GAAUJ,EAAQ5F,EAAO,CAE9B,GAAI,OAAOA,GAAU,UAAY,MAAM,QAAQA,CAAK,EAChD,MAAM,IAAI,MAAM,uCAAuC,EAG3D,GAAIA,EAAM,MAAQ,QAAaA,EAAM,MAAQ,OACzC,MAAM,IAAI,MAAM,gDAAgD,EAEpE4F,EAAO,SAAW,IAAI5B,GAAShE,EAAO4F,EAAO,MAAQ,GAAOA,EAAO,UAAU,CACjF,CACA,SAASK,GAAUL,EAAQ5F,EAAO,CAI9B,GAHAA,EAAQ6B,EAAQ7B,CAAK,EAGjB,CAAC,MAAM,QAAQA,CAAK,GAAK,CAACA,EAAM,OAChC,MAAM,IAAI,MAAM,0CAA0C,EAG9D4F,EAAO,QAAU5F,EAAM,OAGvB4F,EAAO,MAAQ5F,CACnB,CACA,SAASkG,GAASN,EAAQ5F,EAAO,CAC7B,GAAI,OAAOA,GAAU,UACjB,MAAM,IAAI,MAAM,8CAA8C,EAGlE4F,EAAO,KAAO5F,CAClB,CACA,SAASmG,GAAYP,EAAQ5F,EAAO,CAChC,GAAI,OAAOA,GAAU,UACjB,MAAM,IAAI,MAAM,iDAAiD,EAGrE4F,EAAO,QAAU5F,CACrB,CACA,SAASoG,GAAsBR,EAAQ5F,EAAO,CAC1C,GAAI,OAAOA,GAAU,SACjB,MAAM,IAAI,MAAM,0DAA0D,EAE9E4F,EAAO,kBAAoB5F,CAC/B,CACA,SAASqG,GAAYT,EAAQ5F,EAAO,CAChC,IAAIsG,EAAU,CAAC,EAAK,EAChBnB,EASJ,GAPInF,IAAU,QACVA,EAAQ,CAAC,GAAM,EAAK,EAEfA,IAAU,UACfA,EAAQ,CAAC,GAAO,EAAI,GAGpBA,IAAU,IAAQA,IAAU,GAAO,CACnC,IAAKmF,EAAI,EAAGA,EAAIS,EAAO,QAAST,IAC5BmB,EAAQ,KAAKtG,CAAK,EAEtBsG,EAAQ,KAAK,EAAK,CACtB,KAEK,IAAI,CAAC,MAAM,QAAQtG,CAAK,GAAK,CAACA,EAAM,QAAUA,EAAM,SAAW4F,EAAO,QAAU,EACjF,MAAM,IAAI,MAAM,0DAA0D,EAG1EU,EAAUtG,EAEd4F,EAAO,QAAUU,CACrB,CACA,SAASC,GAAgBX,EAAQ5F,EAAO,CAGpC,OAAQA,EAAO,CACX,IAAK,aACD4F,EAAO,IAAM,EACb,MACJ,IAAK,WACDA,EAAO,IAAM,EACb,MACJ,QACI,MAAM,IAAI,MAAM,8CAA8C,CACtE,CACJ,CACA,SAASY,GAAWZ,EAAQ5F,EAAO,CAC/B,GAAI,CAACqB,EAAUrB,CAAK,EAChB,MAAM,IAAI,MAAM,8CAA8C,EAG9DA,IAAU,IAGd4F,EAAO,OAASA,EAAO,SAAS,YAAY5F,CAAK,EACrD,CACA,SAASyG,GAAUb,EAAQ5F,EAAO,CAC9B,GAAI,CAACqB,EAAUrB,CAAK,EAChB,MAAM,IAAI,MAAM,6CAA6C,EAGjE,GADA4F,EAAO,MAAQA,EAAO,SAAS,YAAY5F,CAAK,EAC5C,CAAC4F,EAAO,OAASA,EAAO,QAAU,EAClC,MAAM,IAAI,MAAM,wFAAwF,CAEhH,CACA,SAASc,GAAYd,EAAQ5F,EAAO,CAChC,IAAIkE,EACJ,GAAI,CAAC7C,EAAUrB,CAAK,GAAK,CAAC,MAAM,QAAQA,CAAK,EACzC,MAAM,IAAI,MAAM,6EAA6E,EAEjG,GAAI,MAAM,QAAQA,CAAK,GAAK,EAAEA,EAAM,SAAW,GAAKqB,EAAUrB,EAAM,CAAC,CAAC,GAAKqB,EAAUrB,EAAM,CAAC,CAAC,GACzF,MAAM,IAAI,MAAM,6EAA6E,EAEjG,GAAIA,IAAU,EAQd,KALK,MAAM,QAAQA,CAAK,IACpBA,EAAQ,CAACA,EAAOA,CAAK,GAGzB4F,EAAO,QAAU,CAACA,EAAO,SAAS,YAAY5F,EAAM,CAAC,CAAC,EAAG4F,EAAO,SAAS,YAAY5F,EAAM,CAAC,CAAC,CAAC,EACzFkE,EAAQ,EAAGA,EAAQ0B,EAAO,SAAS,UAAU,OAAS,EAAG1B,IAE1D,GAAI0B,EAAO,QAAQ,CAAC,EAAE1B,CAAK,EAAI,GAAK0B,EAAO,QAAQ,CAAC,EAAE1B,CAAK,EAAI,EAC3D,MAAM,IAAI,MAAM,4DAA4D,EAGpF,IAAIyC,EAAe3G,EAAM,CAAC,EAAIA,EAAM,CAAC,EACjC4G,EAAahB,EAAO,SAAS,KAAK,CAAC,EACnCiB,EAAYjB,EAAO,SAAS,KAAKA,EAAO,SAAS,KAAK,OAAS,CAAC,EACpE,GAAIe,GAAgBE,EAAYD,GAAc,EAC1C,MAAM,IAAI,MAAM,iEAAiE,EAEzF,CACA,SAASE,GAAclB,EAAQ5F,EAAO,CAIlC,OAAQA,EAAO,CACX,IAAK,MACD4F,EAAO,IAAM,EACb,MACJ,IAAK,MACDA,EAAO,IAAM,EACb,MACJ,QACI,MAAM,IAAI,MAAM,oDAAoD,CAC5E,CACJ,CACA,SAASmB,GAAcnB,EAAQ5F,EAAO,CAElC,GAAI,OAAOA,GAAU,SACjB,MAAM,IAAI,MAAM,8DAA8D,EAIlF,IAAIgH,EAAMhH,EAAM,QAAQ,KAAK,GAAK,EAC9BiH,EAAOjH,EAAM,QAAQ,MAAM,GAAK,EAChCkH,EAAQlH,EAAM,QAAQ,OAAO,GAAK,EAClC8D,EAAO9D,EAAM,QAAQ,MAAM,GAAK,EAChCmH,EAAQnH,EAAM,QAAQ,OAAO,GAAK,EAClCoH,GAAgBpH,EAAM,QAAQ,eAAe,GAAK,EAClDqH,GAAiBrH,EAAM,QAAQ,iBAAiB,GAAK,EACrDsH,EAAUtH,EAAM,QAAQ,UAAU,GAAK,EACvCuH,GAAcvH,EAAM,QAAQ,cAAc,GAAK,EACnD,GAAIkH,EAAO,CACP,GAAItB,EAAO,UAAY,EACnB,MAAM,IAAI,MAAM,2DAA2D,EAG/EY,GAAWZ,EAAQA,EAAO,MAAM,CAAC,EAAIA,EAAO,MAAM,CAAC,CAAC,CACxD,CACA,GAAIyB,IAAkBzB,EAAO,UAAY,EACrC,MAAM,IAAI,MAAM,qEAAqE,EAEzF,GAAIwB,KAAkBxB,EAAO,QAAUA,EAAO,OAC1C,MAAM,IAAI,MAAM,2EAA2E,EAE/FA,EAAO,OAAS,CACZ,IAAKoB,GAAOlD,EACZ,KAAMmD,EACN,QAASK,EACT,YAAaC,GACb,MAAOL,EACP,KAAMpD,EACN,MAAOqD,EACP,cAAeC,GACf,eAAgBC,EACpB,CACJ,CACA,SAASG,GAAa5B,EAAQ5F,EAAO,CACjC,GAAIA,IAAU,GAGd,GAAIA,IAAU,IAAQC,EAAwBD,CAAK,EAAG,CAClD4F,EAAO,SAAW,CAAC,EACnB,QAAST,EAAI,EAAGA,EAAIS,EAAO,QAAST,IAChCS,EAAO,SAAS,KAAK5F,CAAK,CAElC,KACK,CAED,GADAA,EAAQ6B,EAAQ7B,CAAK,EACjBA,EAAM,SAAW4F,EAAO,QACxB,MAAM,IAAI,MAAM,oDAAoD,EAExE5F,EAAM,QAAQ,SAAUyH,EAAW,CAC/B,GAAI,OAAOA,GAAc,WAAa,CAACxH,EAAwBwH,CAAS,EACpE,MAAM,IAAI,MAAM,+DAA+D,CAEvF,CAAC,EACD7B,EAAO,SAAW5F,CACtB,CACJ,CACA,SAAS0H,EAAqB9B,EAAQ5F,EAAO,CACzC,GAAIA,EAAM,SAAW4F,EAAO,QACxB,MAAM,IAAI,MAAM,qDAAqD,EAEzEA,EAAO,iBAAmB5F,CAC9B,CACA,SAAS2H,EAAe/B,EAAQ5F,EAAO,CACnC,GAAI,CAACC,EAAwBD,CAAK,EAC9B,MAAM,IAAI,MAAM,gDAAgD,EAEpE4F,EAAO,WAAa5F,CACxB,CACA,SAAS4H,GAAWhC,EAAQ5F,EAAO,CAC/B,GAAI,CAACD,EAAiBC,CAAK,EACvB,MAAM,IAAI,MAAM,wDAAwD,EAE5E4F,EAAO,OAAS5F,CACpB,CACA,SAAS6H,GAAoBjC,EAAQ5F,EAAO,CACxC,GAAI,OAAOA,GAAU,UACjB,MAAM,IAAI,MAAM,yDAAyD,EAE7E4F,EAAO,gBAAkB5F,CAC7B,CACA,SAAS8H,GAAoBlC,EAAQ5F,EAAO,CAExC4F,EAAO,gBAAkB5F,CAC7B,CACA,SAAS+H,GAAcnC,EAAQ5F,EAAO,CAClC,GAAI,OAAOA,GAAU,UAAYA,IAAU,GACvC,MAAM,IAAI,MAAM,sDAAsD,EAE1E4F,EAAO,UAAY5F,CACvB,CACA,SAASgI,GAAepC,EAAQ5F,EAAO,CACnC,GAAI,OAAOA,GAAU,SACjB,MAAM,IAAI,MAAM,6CAA6C,EAE7D,OAAO4F,EAAO,WAAc,UAC5BA,EAAO,WAAa,CAAC,EACrB,OAAO,KAAK5F,CAAK,EAAE,QAAQ,SAAUiI,EAAK,CACtCrC,EAAO,WAAWqC,CAAG,EAAIrC,EAAO,UAAY5F,EAAMiI,CAAG,CACzD,CAAC,GAGDrC,EAAO,WAAa5F,CAE5B,CAEA,SAASkI,GAAYC,EAAS,CAI1B,IAAIvC,EAAS,CACT,OAAQ,KACR,MAAO,KACP,QAAS,KACT,QAAS,GACT,kBAAmB,IACnB,WAAYJ,EACZ,OAAQA,CACZ,EAEI4C,EAAQ,CACR,KAAM,CAAE,EAAG,GAAO,EAAGzC,CAAS,EAC9B,uBAAwB,CAAE,EAAG,GAAO,EAAGE,CAA2B,EAClE,mBAAoB,CAAE,EAAG,GAAO,EAAGC,CAAuB,EAC1D,oBAAqB,CAAE,EAAG,GAAO,EAAGC,EAAwB,EAC5D,MAAO,CAAE,EAAG,GAAM,EAAGE,EAAU,EAC/B,QAAS,CAAE,EAAG,GAAM,EAAGI,EAAY,EACnC,UAAW,CAAE,EAAG,GAAM,EAAGS,EAAc,EACvC,KAAM,CAAE,EAAG,GAAO,EAAGZ,EAAS,EAC9B,QAAS,CAAE,EAAG,GAAO,EAAGC,EAAY,EACpC,kBAAmB,CAAE,EAAG,GAAO,EAAGC,EAAsB,EACxD,MAAO,CAAE,EAAG,GAAM,EAAGJ,EAAU,EAC/B,YAAa,CAAE,EAAG,GAAO,EAAGO,EAAgB,EAC5C,OAAQ,CAAE,EAAG,GAAO,EAAGC,EAAW,EAClC,MAAO,CAAE,EAAG,GAAO,EAAGC,EAAU,EAChC,QAAS,CAAE,EAAG,GAAO,EAAGC,EAAY,EACpC,UAAW,CAAE,EAAG,GAAM,EAAGK,EAAc,EACvC,WAAY,CAAE,EAAG,GAAO,EAAGY,CAAe,EAC1C,OAAQ,CAAE,EAAG,GAAO,EAAGC,EAAW,EAClC,SAAU,CAAE,EAAG,GAAO,EAAGJ,EAAa,EACtC,gBAAiB,CAAE,EAAG,GAAM,EAAGK,EAAoB,EACnD,gBAAiB,CAAE,EAAG,GAAO,EAAGC,EAAoB,EACpD,UAAW,CAAE,EAAG,GAAM,EAAGC,EAAc,EACvC,WAAY,CAAE,EAAG,GAAM,EAAGC,EAAe,EACzC,iBAAkB,CAAE,EAAG,GAAO,EAAGN,CAAqB,CAC1D,EACIW,EAAW,CACX,QAAS,GACT,UAAW,MACX,UAAW,MACX,YAAa,aACb,gBAAiB,GACjB,UAAW,QACX,WAAY5C,EACZ,uBAAwB,EACxB,mBAAoB,EACpB,oBAAqB,EACzB,EAEI0C,EAAQ,QAAU,CAACA,EAAQ,aAC3BA,EAAQ,WAAaA,EAAQ,QAKjC,OAAO,KAAKC,CAAK,EAAE,QAAQ,SAAUE,GAAM,CAEvC,GAAI,CAAClI,EAAM+H,EAAQG,EAAI,CAAC,GAAKD,EAASC,EAAI,IAAM,OAAW,CACvD,GAAIF,EAAME,EAAI,EAAE,EACZ,MAAM,IAAI,MAAM,gBAAkBA,GAAO,gBAAgB,EAE7D,MACJ,CACAF,EAAME,EAAI,EAAE,EAAE1C,EAASxF,EAAM+H,EAAQG,EAAI,CAAC,EAAqBH,EAAQG,EAAI,EAA7BD,EAASC,EAAI,CAAiB,CAChF,CAAC,EAED1C,EAAO,KAAOuC,EAAQ,KAKtB,IAAII,EAAI,SAAS,cAAc,KAAK,EAChCC,EAAWD,EAAE,MAAM,cAAgB,OACnCE,EAAWF,EAAE,MAAM,YAAc,OACrC3C,EAAO,cAAgB6C,EAAW,YAAcD,EAAW,cAAgB,kBAE3E,IAAIE,GAAS,CACT,CAAC,OAAQ,KAAK,EACd,CAAC,QAAS,QAAQ,CACtB,EACA,OAAA9C,EAAO,MAAQ8C,GAAO9C,EAAO,GAAG,EAAEA,EAAO,GAAG,EACrCA,CACX,CAEA,SAAS+C,GAAMC,EAAQT,EAASU,EAAiB,CAC7C,IAAIC,EAAUxG,EAAW,EACrByG,EAA0BrG,EAA2B,EACrDF,EAAkBuG,GAA2BxG,EAAmB,EAGhEyG,EAAeJ,EACfK,GACAC,GACAC,EACAC,GACAC,GACAC,GAEAC,EAAiBpB,EAAQ,SACzBqB,GAAe,CAAC,EAChBC,GAAkB,CAAC,EACnBC,GAAsB,CAAC,EACvBC,GAA2B,EAC3BC,GAAe,CAAC,EAChBC,GAAyB,GAEzBC,GAAiBlB,EAAO,cACxBmB,GAAwB5B,EAAQ,iBAAmB2B,GAAe,gBAClEE,GAAaF,GAAe,KAG5BG,GAAkBH,GAAe,MAAQ,OAAS3B,EAAQ,MAAQ,EAAI,EAAI,IAE9E,SAAS+B,GAAUC,EAAW3I,EAAW,CACrC,IAAI4I,EAAMN,GAAe,cAAc,KAAK,EAC5C,OAAItI,GACAE,EAAS0I,EAAK5I,CAAS,EAE3B2I,EAAU,YAAYC,CAAG,EAClBA,CACX,CAEA,SAASC,GAAUC,EAAMC,EAAc,CACnC,IAAIC,EAASN,GAAUI,EAAMnC,EAAQ,WAAW,MAAM,EAClDsC,EAASP,GAAUM,EAAQrC,EAAQ,WAAW,MAAM,EAWxD,GAVA+B,GAAUO,EAAQtC,EAAQ,WAAW,SAAS,EAC9CsC,EAAO,aAAa,cAAe,OAAOF,CAAY,CAAC,EACnDpC,EAAQ,kBAGRsC,EAAO,aAAa,WAAY,GAAG,EACnCA,EAAO,iBAAiB,UAAW,SAAUC,EAAO,CAChD,OAAOC,GAAaD,EAAOH,CAAY,CAC3C,CAAC,GAEDpC,EAAQ,mBAAqB,OAAW,CACxC,IAAIyC,EAAezC,EAAQ,iBAAiBoC,CAAY,EACxD,OAAO,KAAKK,CAAY,EAAE,QAAQ,SAAUC,EAAW,CACnDJ,EAAO,aAAaI,EAAWD,EAAaC,CAAS,CAAC,CAC1D,CAAC,CACL,CACA,OAAAJ,EAAO,aAAa,OAAQ,QAAQ,EACpCA,EAAO,aAAa,mBAAoBtC,EAAQ,IAAM,WAAa,YAAY,EAC3EoC,IAAiB,EACjB7I,EAAS+I,EAAQtC,EAAQ,WAAW,WAAW,EAE1CoC,IAAiBpC,EAAQ,QAAU,GACxCzG,EAAS+I,EAAQtC,EAAQ,WAAW,WAAW,EAEnDqC,EAAO,OAASC,EACTD,CACX,CAEA,SAASM,GAAWR,EAAMS,EAAK,CAC3B,OAAKA,EAGEb,GAAUI,EAAMnC,EAAQ,WAAW,OAAO,EAFtC,EAGf,CAEA,SAAS6C,GAAYC,EAAgBX,EAAM,CACvCpB,GAAoBgB,GAAUI,EAAMnC,EAAQ,WAAW,QAAQ,EAC/DgB,EAAgB,CAAC,EACjBC,GAAiB,CAAC,EAClBA,GAAe,KAAK0B,GAAW5B,GAAmB+B,EAAe,CAAC,CAAC,CAAC,EAGpE,QAAS9F,EAAI,EAAGA,EAAIgD,EAAQ,QAAShD,IAEjCgE,EAAc,KAAKkB,GAAUC,EAAMnF,CAAC,CAAC,EACrCuE,GAAoBvE,CAAC,EAAIA,EACzBiE,GAAe,KAAK0B,GAAW5B,GAAmB+B,EAAe9F,EAAI,CAAC,CAAC,CAAC,CAEhF,CAEA,SAAS+F,GAAUf,EAAW,CAE1BzI,EAASyI,EAAWhC,EAAQ,WAAW,MAAM,EACzCA,EAAQ,MAAQ,EAChBzG,EAASyI,EAAWhC,EAAQ,WAAW,GAAG,EAG1CzG,EAASyI,EAAWhC,EAAQ,WAAW,GAAG,EAE1CA,EAAQ,MAAQ,EAChBzG,EAASyI,EAAWhC,EAAQ,WAAW,UAAU,EAGjDzG,EAASyI,EAAWhC,EAAQ,WAAW,QAAQ,EAEnD,IAAIgD,EAAgB,iBAAiBhB,CAAS,EAAE,UAChD,OAAIgB,IAAkB,MAClBzJ,EAASyI,EAAWhC,EAAQ,WAAW,gBAAgB,EAGvDzG,EAASyI,EAAWhC,EAAQ,WAAW,gBAAgB,EAEpD+B,GAAUC,EAAWhC,EAAQ,WAAW,IAAI,CACvD,CACA,SAASiD,GAAWX,EAAQF,EAAc,CACtC,MAAI,CAACpC,EAAQ,UAAY,CAACA,EAAQ,SAASoC,CAAY,EAC5C,GAEJL,GAAUO,EAAO,WAAYtC,EAAQ,WAAW,OAAO,CAClE,CACA,SAASkD,IAAmB,CACxB,OAAOrC,EAAa,aAAa,UAAU,CAC/C,CAEA,SAASsC,GAAiBf,EAAc,CACpC,IAAIgB,EAAepC,EAAcoB,CAAY,EAC7C,OAAOgB,EAAa,aAAa,UAAU,CAC/C,CACA,SAASC,GAAQjB,EAAc,CACvBA,GAAiB,MACjBpB,EAAcoB,CAAY,EAAE,aAAa,WAAY,EAAE,EACvDpB,EAAcoB,CAAY,EAAE,OAAO,gBAAgB,UAAU,IAG7DvB,EAAa,aAAa,WAAY,EAAE,EACxCG,EAAc,QAAQ,SAAUsB,EAAQ,CACpCA,EAAO,OAAO,gBAAgB,UAAU,CAC5C,CAAC,EAET,CACA,SAASgB,GAAOlB,EAAc,CACtBA,GAAiB,MACjBpB,EAAcoB,CAAY,EAAE,gBAAgB,UAAU,EACtDpB,EAAcoB,CAAY,EAAE,OAAO,aAAa,WAAY,GAAG,IAG/DvB,EAAa,gBAAgB,UAAU,EACvCG,EAAc,QAAQ,SAAUsB,EAAQ,CACpCA,EAAO,gBAAgB,UAAU,EACjCA,EAAO,OAAO,aAAa,WAAY,GAAG,CAC9C,CAAC,EAET,CACA,SAASiB,IAAiB,CAClBpC,KACAqC,GAAY,SAAWjG,EAAkB,QAAQ,EACjD4D,GAAe,QAAQ,SAAUsC,EAAS,CAClCA,GACA1L,EAAc0L,CAAO,CAE7B,CAAC,EACDtC,GAAiB,KAEzB,CAEA,SAASuC,IAAW,CAChBH,GAAe,EAEfpC,GAAiBH,EAAc,IAAIiC,EAAU,EAC7CU,GAAU,SAAWpG,EAAkB,SAAU,SAAUqG,EAAQxB,EAAcyB,EAAW,CACxF,GAAI,GAAC1C,IAAkB,CAACnB,EAAQ,WAG5BmB,GAAeiB,CAAY,IAAM,GAGrC,KAAI0B,EAAiBF,EAAOxB,CAAY,EACpCpC,EAAQ,SAASoC,CAAY,IAAM,KACnC0B,EAAiB9D,EAAQ,SAASoC,CAAY,EAAE,GAAGyB,EAAUzB,CAAY,CAAC,GAE9EjB,GAAeiB,CAAY,EAAE,UAAY0B,EAC7C,CAAC,CACL,CACA,SAASC,IAAO,CACZP,GAAY,SAAWjG,EAAkB,IAAI,EAC7CoG,GAAU,SAAWpG,EAAkB,KAAM,SAAUqG,EAAQxB,EAAcyB,EAAWhF,EAAKmF,EAAW,CAEpGzC,GAAoB,QAAQ,SAAUxF,EAAO,CACzC,IAAIuG,EAAStB,EAAcjF,CAAK,EAC5BkI,EAAMC,GAAoB5C,GAAiBvF,EAAO,EAAG,GAAM,GAAM,EAAI,EACrEoI,GAAMD,GAAoB5C,GAAiBvF,EAAO,IAAK,GAAM,GAAM,EAAI,EACvEqI,GAAMJ,EAAUjI,CAAK,EAErBsI,GAAO,OAAOrE,EAAQ,WAAW,GAAG6D,EAAU9H,CAAK,CAAC,CAAC,EAEzDkI,EAAM7C,EAAe,aAAa6C,CAAG,EAAE,QAAQ,CAAC,EAChDE,GAAM/C,EAAe,aAAa+C,EAAG,EAAE,QAAQ,CAAC,EAChDC,GAAMhD,EAAe,aAAagD,EAAG,EAAE,QAAQ,CAAC,EAChD9B,EAAO,SAAS,CAAC,EAAE,aAAa,gBAAiB2B,CAAG,EACpD3B,EAAO,SAAS,CAAC,EAAE,aAAa,gBAAiB6B,EAAG,EACpD7B,EAAO,SAAS,CAAC,EAAE,aAAa,gBAAiB8B,EAAG,EACpD9B,EAAO,SAAS,CAAC,EAAE,aAAa,iBAAkB+B,EAAI,CAC1D,CAAC,CACL,CAAC,CACL,CACA,SAASC,GAASC,EAAM,CAEpB,GAAIA,EAAK,OAASjN,EAAQ,SAAS,OAASiN,EAAK,OAASjN,EAAQ,SAAS,MACvE,OAAO8J,EAAe,KAE1B,GAAImD,EAAK,OAASjN,EAAQ,SAAS,MAAO,CACtC,GAAIiN,EAAK,OAAS,EACd,MAAM,IAAI,MAAM,wDAAwD,EAO5E,QAJIC,EAAWD,EAAK,OAAS,EACzBE,EAAS,IAAMD,EACfZ,EAAS,CAAC,EAEPY,KACHZ,EAAOY,CAAQ,EAAIA,EAAWC,EAElC,OAAAb,EAAO,KAAK,GAAG,EACRc,GAAWd,EAAQW,EAAK,OAAO,CAC1C,CACA,OAAIA,EAAK,OAASjN,EAAQ,SAAS,UAExBoN,GAAWH,EAAK,OAAQA,EAAK,OAAO,EAE3CA,EAAK,OAASjN,EAAQ,SAAS,OAE3BiN,EAAK,QACEA,EAAK,OAAO,IAAI,SAAUrM,EAAO,CAEpC,OAAOkJ,EAAe,aAAaA,EAAe,QAAQA,EAAe,WAAWlJ,CAAK,CAAC,CAAC,CAC/F,CAAC,EAGEqM,EAAK,OAET,CAAC,CACZ,CACA,SAASG,GAAWd,EAAQe,EAAS,CACjC,OAAOf,EAAO,IAAI,SAAU1L,EAAO,CAC/B,OAAOkJ,EAAe,aAAauD,EAAUvD,EAAe,QAAQlJ,CAAK,EAAIA,CAAK,CACtF,CAAC,CACL,CACA,SAAS0M,GAAeL,EAAM,CAC1B,SAASM,EAAc3M,GAAO4M,GAAW,CAErC,OAAO,QAAQ5M,GAAQ4M,IAAW,QAAQ,CAAC,CAAC,CAChD,CACA,IAAIC,EAAQT,GAASC,CAAI,EACrBS,EAAU,CAAC,EACXC,EAAe7D,EAAe,KAAK,CAAC,EACpC8D,EAAc9D,EAAe,KAAKA,EAAe,KAAK,OAAS,CAAC,EAChE+D,EAAc,GACdC,EAAa,GACbC,GAAU,EAEd,OAAAN,EAAQ1M,EAAO0M,EAAM,MAAM,EAAE,KAAK,SAAUxM,GAAGqD,GAAG,CAC9C,OAAOrD,GAAIqD,EACf,CAAC,CAAC,EAEEmJ,EAAM,CAAC,IAAME,IACbF,EAAM,QAAQE,CAAY,EAC1BE,EAAc,IAGdJ,EAAMA,EAAM,OAAS,CAAC,IAAMG,IAC5BH,EAAM,KAAKG,CAAW,EACtBE,EAAa,IAEjBL,EAAM,QAAQ,SAAUO,GAASvJ,GAAO,CAEpC,IAAIqB,GACAJ,GACAuI,GACAC,GAAMF,GACNG,GAAOV,EAAMhJ,GAAQ,CAAC,EACtB2J,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GAAU1B,EAAK,OAASjN,EAAQ,SAAS,MAiB7C,IAdI2O,KACA7I,GAAOgE,EAAe,UAAUrF,EAAK,GAGpCqB,KACDA,GAAOqI,GAAOD,IAGdC,KAAS,SACTA,GAAOD,IAGXpI,GAAO,KAAK,IAAIA,GAAM,IAAS,EAE1BJ,GAAIwI,GAAKxI,IAAKyI,GAAMzI,GAAI6H,EAAc7H,GAAGI,EAAI,EAAG,CAcjD,IAXAsI,GAAStE,EAAe,WAAWpE,EAAC,EACpC2I,GAAgBD,GAASL,GACzBS,GAAQH,IAAiBpB,EAAK,SAAW,GACzCwB,GAAY,KAAK,MAAMD,EAAK,EAK5BE,GAAWL,GAAgBI,GAGtBR,GAAI,EAAGA,IAAKQ,GAAWR,IAAK,EAK7BK,GAASP,GAAUE,GAAIS,GACvBhB,EAAQY,GAAO,QAAQ,CAAC,CAAC,EAAI,CAACxE,EAAe,aAAawE,EAAM,EAAG,CAAC,EAGxEC,GAAOd,EAAM,QAAQ/H,EAAC,EAAI,GAAK1F,EAAQ,SAAS,WAAa2O,GAAU3O,EAAQ,SAAS,WAAaA,EAAQ,SAAS,QAElH,CAACyE,IAASoJ,GAAenI,KAAMyI,KAC/BI,GAAO,GAEL7I,KAAMyI,IAAQL,IAEhBJ,EAAQU,GAAO,QAAQ,CAAC,CAAC,EAAI,CAAC1I,GAAG6I,EAAI,GAGzCR,GAAUK,EACd,CACJ,CAAC,EACMV,CACX,CACA,SAASkB,GAAWzB,EAAQ0B,EAAY7G,EAAW,CAC/C,IAAI8G,EAAIC,EACJjN,EAAUuI,GAAe,cAAc,KAAK,EAC5C2E,GAAoBF,EAAK,CAAC,EAC1BA,EAAG9O,EAAQ,SAAS,IAAI,EAAI,GAC5B8O,EAAG9O,EAAQ,SAAS,OAAO,EAAI0I,EAAQ,WAAW,YAClDoG,EAAG9O,EAAQ,SAAS,UAAU,EAAI0I,EAAQ,WAAW,WACrDoG,EAAG9O,EAAQ,SAAS,UAAU,EAAI0I,EAAQ,WAAW,SACrDoG,GACAG,GAAqBF,EAAK,CAAC,EAC3BA,EAAG/O,EAAQ,SAAS,IAAI,EAAI,GAC5B+O,EAAG/O,EAAQ,SAAS,OAAO,EAAI0I,EAAQ,WAAW,aAClDqG,EAAG/O,EAAQ,SAAS,UAAU,EAAI0I,EAAQ,WAAW,YACrDqG,EAAG/O,EAAQ,SAAS,UAAU,EAAI0I,EAAQ,WAAW,UACrDqG,GACAG,GAA0B,CAACxG,EAAQ,WAAW,gBAAiBA,EAAQ,WAAW,aAAa,EAC/FyG,GAA2B,CAACzG,EAAQ,WAAW,iBAAkBA,EAAQ,WAAW,cAAc,EACtGzG,EAASH,EAAS4G,EAAQ,WAAW,IAAI,EACzCzG,EAASH,EAAS4G,EAAQ,MAAQ,EAAIA,EAAQ,WAAW,eAAiBA,EAAQ,WAAW,YAAY,EACzG,SAAS0G,GAAWb,GAAMc,GAAQ,CAC9B,IAAIpO,GAAIoO,KAAW3G,EAAQ,WAAW,MAClC4G,GAAqBrO,GAAIiO,GAA0BC,GACnDI,GAActO,GAAI+N,EAAmBC,EACzC,OAAOI,GAAS,IAAMC,GAAmB5G,EAAQ,GAAG,EAAI,IAAM6G,GAAYhB,EAAI,CAClF,CACA,SAASiB,GAAUpO,GAAQR,GAAO2N,GAAM,CAGpC,GADAA,GAAOM,EAAaA,EAAWjO,GAAO2N,EAAI,EAAIA,GAC1CA,KAASvO,EAAQ,SAAS,KAI9B,KAAIyP,GAAOhF,GAAU3I,EAAS,EAAK,EACnC2N,GAAK,UAAYL,GAAWb,GAAM7F,EAAQ,WAAW,MAAM,EAC3D+G,GAAK,MAAM/G,EAAQ,KAAK,EAAItH,GAAS,IAEjCmN,GAAOvO,EAAQ,SAAS,UACxByP,GAAOhF,GAAU3I,EAAS,EAAK,EAC/B2N,GAAK,UAAYL,GAAWb,GAAM7F,EAAQ,WAAW,KAAK,EAC1D+G,GAAK,aAAa,aAAc,OAAO7O,EAAK,CAAC,EAC7C6O,GAAK,MAAM/G,EAAQ,KAAK,EAAItH,GAAS,IACrCqO,GAAK,UAAY,OAAOzH,EAAU,GAAGpH,EAAK,CAAC,GAEnD,CAEA,cAAO,KAAKuM,CAAM,EAAE,QAAQ,SAAU/L,GAAQ,CAC1CoO,GAAUpO,GAAQ+L,EAAO/L,EAAM,EAAE,CAAC,EAAG+L,EAAO/L,EAAM,EAAE,CAAC,CAAC,CAC1D,CAAC,EACMU,CACX,CACA,SAAS4N,IAAa,CACd9F,KACAnJ,EAAcmJ,EAAU,EACxBA,GAAa,KAErB,CACA,SAASqD,GAAKA,EAAM,CAEhByC,GAAW,EACX,IAAIvC,EAASG,GAAeL,CAAI,EAC5B0C,EAAS1C,EAAK,OACd2C,EAAS3C,EAAK,QAAU,CACxB,GAAI,SAAUrM,EAAO,CACjB,OAAO,OAAO,KAAK,MAAMA,CAAK,CAAC,CACnC,CACJ,EACA,OAAAgJ,GAAaL,EAAa,YAAYqF,GAAWzB,EAAQwC,EAAQC,CAAM,CAAC,EACjEhG,EACX,CAEA,SAASiG,IAAW,CAChB,IAAItO,EAAOiI,GAAW,sBAAsB,EACxCsG,EAAO,SAAW,CAAC,QAAS,QAAQ,EAAEpH,EAAQ,GAAG,EACrD,OAAOA,EAAQ,MAAQ,EAAInH,EAAK,OAASiI,GAAWsG,CAAG,EAAIvO,EAAK,QAAUiI,GAAWsG,CAAG,CAC5F,CAEA,SAASC,GAAYC,EAAQlO,EAASmO,EAAUC,EAAM,CAGlD,IAAIC,EAAS,SAAUlF,EAAO,CAC1B,IAAInK,EAAIsP,GAASnF,EAAOiF,EAAK,WAAYA,EAAK,QAAUpO,CAAO,EAoB/D,GAjBI,CAAChB,GAKD8K,GAAiB,GAAK,CAACsE,EAAK,aAI5B1N,EAAS+G,EAAcb,EAAQ,WAAW,GAAG,GAAK,CAACwH,EAAK,aAIxDF,IAAW3G,EAAQ,OAASvI,EAAE,UAAY,QAAaA,EAAE,QAAU,GAInEoP,EAAK,OAASpP,EAAE,QAChB,MAAO,GAONiC,GACDjC,EAAE,eAAe,EAErBA,EAAE,UAAYA,EAAE,OAAO4H,EAAQ,GAAG,EAElCuH,EAASnP,EAAGoP,CAAI,CAEpB,EACIG,EAAU,CAAC,EAEf,OAAAL,EAAO,MAAM,GAAG,EAAE,QAAQ,SAAUM,EAAW,CAC3CxO,EAAQ,iBAAiBwO,EAAWH,EAAQpN,EAAkB,CAAE,QAAS,EAAK,EAAI,EAAK,EACvFsN,EAAQ,KAAK,CAACC,EAAWH,CAAM,CAAC,CACpC,CAAC,EACME,CACX,CAEA,SAASD,GAAStP,EAAGY,EAAY6O,EAAa,CAI1C,IAAIC,EAAQ1P,EAAE,KAAK,QAAQ,OAAO,IAAM,EACpC2P,EAAQ3P,EAAE,KAAK,QAAQ,OAAO,IAAM,EACpC4P,EAAU5P,EAAE,KAAK,QAAQ,SAAS,IAAM,EACxC6B,EAAI,EACJC,EAAI,EAQR,GANI9B,EAAE,KAAK,QAAQ,WAAW,IAAM,IAChC4P,EAAU,IAKV5P,EAAE,OAAS,aAAe,CAACA,EAAE,SAAW,CAACA,EAAE,QAC3C,MAAO,GAGX,GAAI0P,EAAO,CAEP,IAAIG,GAAkB,SAAUC,GAAY,CACxC,IAAIzH,GAASyH,GAAW,OACxB,OAAQzH,KAAWoH,GACfA,EAAY,SAASpH,EAAM,GAC1BrI,EAAE,UAAYA,EAAE,aAAa,EAAE,MAAM,IAAMyP,CACpD,EAGA,GAAIzP,EAAE,OAAS,aAAc,CACzB,IAAI+P,GAAgB,MAAM,UAAU,OAAO,KAAK/P,EAAE,QAAS6P,EAAe,EAE1E,GAAIE,GAAc,OAAS,EACvB,MAAO,GAEXlO,EAAIkO,GAAc,CAAC,EAAE,MACrBjO,EAAIiO,GAAc,CAAC,EAAE,KACzB,KACK,CAED,IAAIC,GAAc,MAAM,UAAU,KAAK,KAAKhQ,EAAE,eAAgB6P,EAAe,EAE7E,GAAI,CAACG,GACD,MAAO,GAEXnO,EAAImO,GAAY,MAChBlO,EAAIkO,GAAY,KACpB,CACJ,CACA,OAAApP,EAAaA,GAAcC,EAAc0I,EAAc,GACnDoG,GAASC,KACT/N,EAAI7B,EAAE,QAAUY,EAAW,EAC3BkB,EAAI9B,EAAE,QAAUY,EAAW,GAE/BZ,EAAE,WAAaY,EACfZ,EAAE,OAAS,CAAC6B,EAAGC,CAAC,EAChB9B,EAAE,OAAS2P,GAASC,EACb5P,CACX,CAEA,SAASiQ,GAAsBC,EAAW,CACtC,IAAIC,EAAWD,EAAY5P,EAAOoI,GAAYd,EAAQ,GAAG,EACrDwI,EAAYD,EAAW,IAAOpB,GAAS,EAI3C,OAAAqB,EAAW/O,EAAM+O,CAAQ,EAClBxI,EAAQ,IAAM,IAAMwI,EAAWA,CAC1C,CAEA,SAASC,GAAiBC,EAAiB,CACvC,IAAIC,EAAqB,IACrBvG,EAAe,GACnB,OAAApB,EAAc,QAAQ,SAAUsB,EAAQvG,EAAO,CAE3C,GAAI,CAAAoH,GAAiBpH,CAAK,EAG1B,KAAI6M,EAAiBtH,GAAgBvF,CAAK,EACtC8M,EAA2B,KAAK,IAAID,EAAiBF,CAAe,EAEpEI,EAAcD,IAA6B,KAAOF,IAAuB,IAEzEI,GAAWF,EAA2BF,EACtCK,GAAgBH,GAA4BF,GAAsBD,EAAkBE,GACpFG,IAAYC,IAAiBF,KAC7B1G,EAAerG,EACf4M,EAAqBE,GAE7B,CAAC,EACMzG,CACX,CAEA,SAAS6G,GAAc1G,EAAOiF,EAAM,CAC5BjF,EAAM,OAAS,YACfA,EAAM,OAAO,WAAa,QAC1BA,EAAM,gBAAkB,MACxB2G,GAAS3G,EAAOiF,CAAI,CAE5B,CAEA,SAAS2B,GAAU5G,EAAOiF,EAAM,CAM5B,GAAI,UAAU,WAAW,QAAQ,QAAQ,IAAM,IAAMjF,EAAM,UAAY,GAAKiF,EAAK,kBAAoB,EACjG,OAAO0B,GAAS3G,EAAOiF,CAAI,EAG/B,IAAI4B,GAAYpJ,EAAQ,IAAM,GAAK,IAAMuC,EAAM,UAAYiF,EAAK,gBAE5DgB,EAAYY,EAAW,IAAO5B,EAAK,SACvC6B,GAAYD,EAAW,EAAGZ,EAAUhB,EAAK,UAAWA,EAAK,cAAeA,EAAK,OAAO,CACxF,CAEA,SAAS0B,GAAS3G,EAAOiF,EAAM,CAEvBA,EAAK,SACLhO,EAAYgO,EAAK,OAAQxH,EAAQ,WAAW,MAAM,EAClDwB,IAA4B,GAGhCgG,EAAK,UAAU,QAAQ,SAAU8B,EAAG,CAChC1H,GAAsB,oBAAoB0H,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,CACxD,CAAC,EACG9H,KAA6B,IAE7BhI,EAAYqH,EAAcb,EAAQ,WAAW,IAAI,EACjDuJ,GAAU,EAENhH,EAAM,SACNV,GAAW,MAAM,OAAS,GAC1BA,GAAW,oBAAoB,cAAe1J,CAAc,IAGhE6H,EAAQ,OAAO,cACfwH,EAAK,cAAc,QAAQ,SAAUpF,EAAc,CAC/CoH,GAAUpH,EAAcd,GAAgBc,CAAY,EAAG,GAAM,GAAM,GAAO,EAAK,CACnF,CAAC,EACDoF,EAAK,cAAc,QAAQ,SAAUpF,EAAc,CAC/CqH,GAAU,SAAUrH,CAAY,CACpC,CAAC,GAELoF,EAAK,cAAc,QAAQ,SAAUpF,EAAc,CAC/CqH,GAAU,SAAUrH,CAAY,EAChCqH,GAAU,MAAOrH,CAAY,EAC7BqH,GAAU,MAAOrH,CAAY,CACjC,CAAC,CACL,CAEA,SAASsH,GAAWnH,EAAOiF,EAAM,CAE7B,GAAI,CAAAA,EAAK,cAAc,KAAKrE,EAAgB,EAG5C,KAAIb,EACJ,GAAIkF,EAAK,cAAc,SAAW,EAAG,CACjC,IAAIpE,EAAepC,EAAcwG,EAAK,cAAc,CAAC,CAAC,EACtDlF,EAASc,EAAa,SAAS,CAAC,EAChC5B,IAA4B,EAE5BjI,EAAS+I,EAAQtC,EAAQ,WAAW,MAAM,CAC9C,CAEAuC,EAAM,gBAAgB,EAEtB,IAAIoH,EAAY,CAAC,EAEbC,EAAYvC,GAAY1G,EAAQ,KAAMiB,GAAuBuH,GAAW,CAGxE,OAAQ5G,EAAM,OACd,OAAQD,EACR,QAASkF,EAAK,QACd,UAAWmC,EACX,eAAgBpH,EAAM,UACtB,SAAU4E,GAAS,EACnB,WAAY5E,EAAM,WAClB,cAAeiF,EAAK,cACpB,gBAAiBjF,EAAM,QACvB,UAAWjB,GAAgB,MAAM,CACrC,CAAC,EACGuI,EAAWxC,GAAY1G,EAAQ,IAAKiB,GAAuBsH,GAAU,CACrE,OAAQ3G,EAAM,OACd,OAAQD,EACR,UAAWqH,EACX,YAAa,GACb,cAAenC,EAAK,aACxB,CAAC,EACGsC,EAAWzC,GAAY,WAAYzF,GAAuBqH,GAAe,CACzE,OAAQ1G,EAAM,OACd,OAAQD,EACR,UAAWqH,EACX,YAAa,GACb,cAAenC,EAAK,aACxB,CAAC,EAGDmC,EAAU,KAAK,MAAMA,EAAWC,EAAU,OAAOC,EAAUC,CAAQ,CAAC,EAGhEvH,EAAM,SAENV,GAAW,MAAM,OAAS,iBAAiBU,EAAM,MAAM,EAAE,OAErDvB,EAAc,OAAS,GACvBzH,EAASsH,EAAcb,EAAQ,WAAW,IAAI,EAQlD6B,GAAW,iBAAiB,cAAe1J,EAAgB,EAAK,GAEpEqP,EAAK,cAAc,QAAQ,SAAUpF,GAAc,CAC/CqH,GAAU,QAASrH,EAAY,CACnC,CAAC,EACL,CAEA,SAAS2H,GAASxH,EAAO,CAErBA,EAAM,gBAAgB,EACtB,IAAIiG,EAAWH,GAAsB9F,EAAM,SAAS,EAChDH,EAAeqG,GAAiBD,CAAQ,EAExCpG,IAAiB,KAKhBpC,EAAQ,OAAO,MAChB7G,EAAY0H,EAAcb,EAAQ,WAAW,IAAKA,EAAQ,iBAAiB,EAE/EwJ,GAAUpH,EAAcoG,EAAU,GAAM,EAAI,EAC5Ce,GAAU,EACVE,GAAU,QAASrH,EAAc,EAAI,EACrCqH,GAAU,SAAUrH,EAAc,EAAI,EACjCpC,EAAQ,OAAO,KAKhB0J,GAAWnH,EAAO,CAAE,cAAe,CAACH,CAAY,CAAE,CAAC,GAJnDqH,GAAU,SAAUrH,EAAc,EAAI,EACtCqH,GAAU,MAAOrH,EAAc,EAAI,GAK3C,CAEA,SAAS4H,GAAWzH,EAAO,CACvB,IAAIiG,EAAWH,GAAsB9F,EAAM,SAAS,EAChD9J,EAAK2I,EAAe,QAAQoH,CAAQ,EACpCtQ,EAAQkJ,EAAe,aAAa3I,CAAE,EAC1C,OAAO,KAAKgJ,EAAY,EAAE,QAAQ,SAAUwI,EAAa,CACrCA,EAAY,MAAM,GAAG,EAAE,CAAC,IAApC,SACAxI,GAAawI,CAAW,EAAE,QAAQ,SAAU1C,EAAU,CAClDA,EAAS,KAAK2C,GAAYhS,CAAK,CACnC,CAAC,CAET,CAAC,CACL,CAGA,SAASsK,GAAaD,EAAOH,EAAc,CACvC,GAAIc,GAAiB,GAAKC,GAAiBf,CAAY,EACnD,MAAO,GAEX,IAAI+H,EAAiB,CAAC,OAAQ,OAAO,EACjCC,EAAe,CAAC,OAAQ,IAAI,EAC5BC,EAAgB,CAAC,WAAY,QAAQ,EACrCC,EAAW,CAAC,OAAQ,KAAK,EACzBtK,EAAQ,KAAO,CAACA,EAAQ,IAExBmK,EAAe,QAAQ,EAElBnK,EAAQ,KAAO,CAACA,EAAQ,MAE7BoK,EAAa,QAAQ,EACrBC,EAAc,QAAQ,GAG1B,IAAIvK,EAAMyC,EAAM,IAAI,QAAQ,QAAS,EAAE,EACnCgI,EAAczK,IAAQuK,EAAc,CAAC,EACrCG,GAAY1K,IAAQuK,EAAc,CAAC,EACnC1N,GAASmD,IAAQsK,EAAa,CAAC,GAAKtK,IAAQqK,EAAe,CAAC,GAAKI,EACjEE,GAAO3K,IAAQsK,EAAa,CAAC,GAAKtK,IAAQqK,EAAe,CAAC,GAAKK,GAC/DE,GAAQ5K,IAAQwK,EAAS,CAAC,EAC1BK,GAAQ7K,IAAQwK,EAAS,CAAC,EAC9B,GAAI,CAAC3N,IAAU,CAAC8N,IAAQ,CAACC,IAAS,CAACC,GAC/B,MAAO,GAEXpI,EAAM,eAAe,EACrB,IAAI9J,GACJ,GAAIgS,IAAQ9N,GAAQ,CAChB,IAAIT,GAAYS,GAAS,EAAI,EACzBmJ,GAAQ8E,GAAsBxI,CAAY,EAC1ChF,GAAO0I,GAAM5J,EAAS,EAE1B,GAAIkB,KAAS,KACT,MAAO,GAGPA,KAAS,KACTA,GAAOgE,EAAe,eAAeE,GAAgBc,CAAY,EAAGzF,GAAQqD,EAAQ,mBAAmB,GAEvGwK,IAAaD,EACbnN,IAAQ4C,EAAQ,uBAGhB5C,IAAQ4C,EAAQ,mBAGpB5C,GAAO,KAAK,IAAIA,GAAM,IAAS,EAE/BA,IAAQT,GAAS,GAAK,GAAKS,GAC3B3E,GAAK4I,GAAae,CAAY,EAAIhF,EACtC,MACSuN,GAELlS,GAAKuH,EAAQ,SAAS,KAAKA,EAAQ,SAAS,KAAK,OAAS,CAAC,EAI3DvH,GAAKuH,EAAQ,SAAS,KAAK,CAAC,EAEhC,OAAAwJ,GAAUpH,EAAchB,EAAe,WAAW3I,EAAE,EAAG,GAAM,EAAI,EACjEgR,GAAU,QAASrH,CAAY,EAC/BqH,GAAU,SAAUrH,CAAY,EAChCqH,GAAU,SAAUrH,CAAY,EAChCqH,GAAU,MAAOrH,CAAY,EACtB,EACX,CAEA,SAASyI,GAAiBC,EAAW,CAE5BA,EAAU,OACX9J,EAAc,QAAQ,SAAUsB,EAAQvG,EAAO,CAG3CsL,GAAY1G,EAAQ,MAAO2B,EAAO,SAAS,CAAC,EAAGoH,GAAY,CACvD,cAAe,CAAC3N,CAAK,CACzB,CAAC,CACL,CAAC,EAGD+O,EAAU,KACVzD,GAAY1G,EAAQ,MAAOG,GAAYiJ,GAAU,CAAC,CAAC,EAGnDe,EAAU,OACVzD,GAAY1G,EAAQ,KAAMG,GAAYkJ,GAAY,CAC9C,MAAO,EACX,CAAC,EAGDc,EAAU,MACV7J,GAAe,QAAQ,SAAU9C,EAASpC,EAAO,CAC7C,GAAI,EAAAoC,IAAY,IAASpC,IAAU,GAAKA,IAAUkF,GAAe,OAAS,GAG1E,KAAI8J,EAAe/J,EAAcjF,EAAQ,CAAC,EACtCiP,EAAchK,EAAcjF,CAAK,EACjCkP,EAAe,CAAC9M,CAAO,EACvB+M,EAAgB,CAACH,EAAcC,CAAW,EAC1CG,EAAsB,CAACpP,EAAQ,EAAGA,CAAK,EAC3CxC,EAAS4E,EAAS6B,EAAQ,WAAW,SAAS,EAK1C8K,EAAU,QACVG,EAAa,KAAKF,EAAa,SAAS,CAAC,CAAC,EAC1CE,EAAa,KAAKD,EAAY,SAAS,CAAC,CAAC,GAEzCF,EAAU,UACVI,EAAgBlK,EAChBmK,EAAsB5J,IAE1B0J,EAAa,QAAQ,SAAUG,GAAa,CACxC/D,GAAY1G,EAAQ,MAAOyK,GAAa1B,GAAY,CAChD,QAASwB,EACT,cAAeC,EACf,QAAShN,CACb,CAAC,CACL,CAAC,EACL,CAAC,CAET,CAEA,SAASwF,GAAU0H,EAAiB9D,EAAU,CAC1C9F,GAAa4J,CAAe,EAAI5J,GAAa4J,CAAe,GAAK,CAAC,EAClE5J,GAAa4J,CAAe,EAAE,KAAK9D,CAAQ,EAEvC8D,EAAgB,MAAM,GAAG,EAAE,CAAC,IAAM,UAClCrK,EAAc,QAAQ,SAAUzI,EAAGwD,EAAO,CACtC0N,GAAU,SAAU1N,CAAK,CAC7B,CAAC,CAET,CACA,SAASuP,GAAoBC,EAAW,CACpC,OAAOA,IAAchO,EAAkB,MAAQgO,IAAchO,EAAkB,QACnF,CAEA,SAASiG,GAAY6H,EAAiB,CAClC,IAAI9I,EAAQ8I,GAAmBA,EAAgB,MAAM,GAAG,EAAE,CAAC,EACvDE,EAAYhJ,EAAQ8I,EAAgB,UAAU9I,EAAM,MAAM,EAAI8I,EAClE,OAAO,KAAK5J,EAAY,EAAE,QAAQ,SAAU+J,EAAM,CAC9C,IAAIC,EAASD,EAAK,MAAM,GAAG,EAAE,CAAC,EAC1BE,EAAaF,EAAK,UAAUC,EAAO,MAAM,GACxC,CAAClJ,GAASA,IAAUkJ,KAAY,CAACF,GAAaA,IAAcG,KAEzD,CAACJ,GAAoBI,CAAU,GAAKH,IAAcG,IAClD,OAAOjK,GAAa+J,CAAI,CAGpC,CAAC,CACL,CAEA,SAAS/B,GAAU7B,EAAWxF,EAAcvD,EAAK,CAC7C,OAAO,KAAK4C,EAAY,EAAE,QAAQ,SAAUwI,EAAa,CACrD,IAAI0B,EAAY1B,EAAY,MAAM,GAAG,EAAE,CAAC,EACpCrC,IAAc+D,GACdlK,GAAawI,CAAW,EAAE,QAAQ,SAAU1C,EAAU,CAClDA,EAAS,KAET2C,GAEA7I,GAAa,IAAIrB,EAAQ,OAAO,EAAE,EAElCoC,EAEAf,GAAa,MAAM,EAEnBxC,GAAO,GAEPyC,GAAgB,MAAM,EAEtB4I,EAAU,CACd,CAAC,CAET,CAAC,CACL,CAEA,SAAShG,GAAoB0H,EAAWxJ,EAAc3J,EAAIoT,EAAcC,EAAaC,EAAU3M,EAAa,CACxG,IAAI4M,EA4CJ,OAzCIhL,EAAc,OAAS,GAAK,CAAChB,EAAQ,OAAO,gBACxC6L,GAAgBzJ,EAAe,IAC/B4J,EAAW5K,EAAe,oBAAoBwK,EAAUxJ,EAAe,CAAC,EAAGpC,EAAQ,OAAQ,EAAK,EAChGvH,EAAK,KAAK,IAAIA,EAAIuT,CAAQ,GAE1BF,GAAe1J,EAAepB,EAAc,OAAS,IACrDgL,EAAW5K,EAAe,oBAAoBwK,EAAUxJ,EAAe,CAAC,EAAGpC,EAAQ,OAAQ,EAAI,EAC/FvH,EAAK,KAAK,IAAIA,EAAIuT,CAAQ,IAM9BhL,EAAc,OAAS,GAAKhB,EAAQ,QAChC6L,GAAgBzJ,EAAe,IAC/B4J,EAAW5K,EAAe,oBAAoBwK,EAAUxJ,EAAe,CAAC,EAAGpC,EAAQ,MAAO,EAAK,EAC/FvH,EAAK,KAAK,IAAIA,EAAIuT,CAAQ,GAE1BF,GAAe1J,EAAepB,EAAc,OAAS,IACrDgL,EAAW5K,EAAe,oBAAoBwK,EAAUxJ,EAAe,CAAC,EAAGpC,EAAQ,MAAO,EAAI,EAC9FvH,EAAK,KAAK,IAAIA,EAAIuT,CAAQ,IAK9BhM,EAAQ,UACJoC,IAAiB,IACjB4J,EAAW5K,EAAe,oBAAoB,EAAGpB,EAAQ,QAAQ,CAAC,EAAG,EAAK,EAC1EvH,EAAK,KAAK,IAAIA,EAAIuT,CAAQ,GAE1B5J,IAAiBpB,EAAc,OAAS,IACxCgL,EAAW5K,EAAe,oBAAoB,IAAKpB,EAAQ,QAAQ,CAAC,EAAG,EAAI,EAC3EvH,EAAK,KAAK,IAAIA,EAAIuT,CAAQ,IAG7B5M,IACD3G,EAAK2I,EAAe,QAAQ3I,CAAE,GAGlCA,EAAKgB,EAAMhB,CAAE,EAETA,IAAOmT,EAAUxJ,CAAY,GAAK,CAAC2J,EAC5B,GAEJtT,CACX,CAEA,SAASwT,GAAYC,EAAG3T,EAAG,CACvB,IAAI4T,EAAInM,EAAQ,IAChB,OAAQmM,EAAI5T,EAAI2T,GAAK,MAAQC,EAAID,EAAI3T,EACzC,CAGA,SAAS8Q,GAAY+C,EAAQ5D,EAAU6D,EAAWC,EAAenO,EAAS,CACtE,IAAIoO,EAAYF,EAAU,MAAM,EAE5BG,EAAcF,EAAc,CAAC,EAC7BlN,EAAcY,EAAQ,OAAO,YAC7BpE,GAAI,CAAC,CAACwQ,EAAQA,CAAM,EACpBK,GAAI,CAACL,EAAQ,CAACA,CAAM,EAExBE,EAAgBA,EAAc,MAAM,EAGhCF,GACAE,EAAc,QAAQ,EAGtBA,EAAc,OAAS,EACvBA,EAAc,QAAQ,SAAUlK,GAAc+J,GAAG,CAC7C,IAAI1T,GAAKyL,GAAoBqI,EAAWnK,GAAcmK,EAAUnK,EAAY,EAAIoG,EAAU5M,GAAEuQ,EAAC,EAAGM,GAAEN,EAAC,EAAG,GAAO/M,CAAW,EAEpH3G,KAAO,GACP+P,EAAW,GAGXA,EAAW/P,GAAK8T,EAAUnK,EAAY,EACtCmK,EAAUnK,EAAY,EAAI3J,GAElC,CAAC,EAIDmD,GAAI6Q,GAAI,CAAC,EAAI,EAEjB,IAAIC,GAAQ,GAEZJ,EAAc,QAAQ,SAAUlK,GAAc+J,GAAG,CAC7CO,GACIlD,GAAUpH,GAAciK,EAAUjK,EAAY,EAAIoG,EAAU5M,GAAEuQ,EAAC,EAAGM,GAAEN,EAAC,EAAG,GAAO/M,CAAW,GAAKsN,EACvG,CAAC,EAEGA,KACAJ,EAAc,QAAQ,SAAUlK,GAAc,CAC1CqH,GAAU,SAAUrH,EAAY,EAChCqH,GAAU,QAASrH,EAAY,CACnC,CAAC,EAEGjE,GAAW,MACXsL,GAAU,OAAQ+C,CAAW,EAGzC,CAKA,SAASG,GAAmBpU,EAAGqD,EAAG,CAC9B,OAAOoE,EAAQ,IAAM,IAAMzH,EAAIqD,EAAIrD,CACvC,CAEA,SAASqU,GAAqBxK,EAAc3J,EAAI,CAE5C6I,GAAgBc,CAAY,EAAI3J,EAEhC4I,GAAae,CAAY,EAAIhB,EAAe,aAAa3I,CAAE,EAC3D,IAAIoU,EAAcF,GAAmBlU,EAAI,CAAC,EAAIqJ,GAC1CgL,EAAgB,aAAeb,GAAYY,EAAc,IAAK,GAAG,EAAI,IAGzE,GAFA7L,EAAcoB,CAAY,EAAE,MAAMpC,EAAQ,aAAa,EAAI8M,EAEvD9M,EAAQ,OAAO,gBAAkBsB,GAAgB,OAAS,EAAG,CAE7D,IAAIyL,EAAoBzL,GAAgB,MAAM,SAAU0L,EAAUjR,EAAOsQ,EAAW,CAChF,OAAOtQ,IAAU,GAAKiR,GAAYX,EAAUtQ,EAAQ,CAAC,CACzD,CAAC,EACD,GAAI2F,KAA2B,CAACqL,EAAmB,CAE/C7N,GAAe,EAEf,MACJ,CACJ,CACA+N,GAAc7K,CAAY,EAC1B6K,GAAc7K,EAAe,CAAC,EAC1BV,KAEAuL,GAAc7K,EAAe,CAAC,EAC9B6K,GAAc7K,EAAe,CAAC,EAEtC,CAIA,SAASmH,IAAY,CACjBhI,GAAoB,QAAQ,SAAUa,EAAc,CAChD,IAAI8K,EAAM5L,GAAgBc,CAAY,EAAI,GAAK,GAAK,EAChD+K,EAAS,GAAKnM,EAAc,OAASkM,EAAM9K,GAC/CpB,EAAcoB,CAAY,EAAE,MAAM,OAAS,OAAO+K,CAAM,CAC5D,CAAC,CACL,CAGA,SAAS3D,GAAUpH,EAAc3J,EAAIoT,EAAcC,EAAasB,EAAYhO,EAAa,CAIrF,OAHKgO,IACD3U,EAAKyL,GAAoB5C,GAAiBc,EAAc3J,EAAIoT,EAAcC,EAAa,GAAO1M,CAAW,GAEzG3G,IAAO,GACA,IAEXmU,GAAqBxK,EAAc3J,CAAE,EAC9B,GACX,CAEA,SAASwU,GAAclR,EAAO,CAE1B,GAAKkF,GAAelF,CAAK,EAIzB,KAAIsQ,EAAY/K,GAAgB,MAAM,EAClCI,IACA2K,EAAU,KAAK,SAAU9T,EAAGqD,GAAG,CAC3B,OAAOrD,EAAIqD,EACf,CAAC,EAEL,IAAIyR,EAAI,EACJC,EAAI,IACJvR,IAAU,IACVsR,EAAIhB,EAAUtQ,EAAQ,CAAC,GAEvBA,IAAUkF,GAAe,OAAS,IAClCqM,EAAIjB,EAAUtQ,CAAK,GAMvB,IAAIwR,EAAeD,EAAID,EACnBP,EAAgB,aAAeb,GAAYU,GAAmBU,EAAGE,CAAY,EAAI,IAAK,GAAG,EAAI,IAC7FC,EAAY,SAAWvB,GAAYsB,EAAe,IAAK,GAAG,EAAI,IAClEtM,GAAelF,CAAK,EAAE,MAAMiE,EAAQ,aAAa,EAC7C8M,EAAgB,IAAMU,EAC9B,CAEA,SAASC,GAAehV,EAAI2J,EAAc,CAetC,OAZI3J,IAAO,MAAQA,IAAO,IAASA,IAAO,SAItC,OAAOA,GAAO,WACdA,EAAK,OAAOA,CAAE,GAElBA,EAAKuH,EAAQ,OAAO,KAAKvH,CAAE,EACvBA,IAAO,KACPA,EAAK2I,EAAe,WAAW3I,CAAE,GAGjCA,IAAO,IAAS,MAAMA,CAAE,GACjB6I,GAAgBc,CAAY,EAEhC3J,CACX,CAEA,SAASiV,GAASC,EAAOC,EAAcR,EAAY,CAC/C,IAAIxJ,EAASlK,EAAQiU,CAAK,EACtBE,EAASvM,GAAgB,CAAC,IAAM,OAEpCsM,EAAeA,IAAiB,OAAY,GAAOA,EAG/C5N,EAAQ,SAAW,CAAC6N,GACpB1U,EAAY0H,EAAcb,EAAQ,WAAW,IAAKA,EAAQ,iBAAiB,EAG/EuB,GAAoB,QAAQ,SAAUa,EAAc,CAChDoH,GAAUpH,EAAcqL,GAAe7J,EAAOxB,CAAY,EAAGA,CAAY,EAAG,GAAM,GAAOgL,CAAU,CACvG,CAAC,EACD,IAAIpQ,EAAIuE,GAAoB,SAAW,EAAI,EAAI,EAE/C,GAAIsM,GAAUzM,EAAe,UAAU,IACnCgM,EAAa,GACb9L,GAAgB,CAAC,EAAI,EACjBC,GAAoB,OAAS,GAAG,CAChC,IAAIuM,EAAU,KAAOvM,GAAoB,OAAS,GAClDA,GAAoB,QAAQ,SAAUa,EAAc,CAChDd,GAAgBc,CAAY,EAAIA,EAAe0L,CACnD,CAAC,CACL,CAIJ,KAAO9Q,EAAIuE,GAAoB,OAAQ,EAAEvE,EACrCuE,GAAoB,QAAQ,SAAUa,EAAc,CAChDoH,GAAUpH,EAAcd,GAAgBc,CAAY,EAAG,GAAM,GAAMgL,CAAU,CACjF,CAAC,EAEL7D,GAAU,EACVhI,GAAoB,QAAQ,SAAUa,EAAc,CAChDqH,GAAU,SAAUrH,CAAY,EAE5BwB,EAAOxB,CAAY,IAAM,MAAQwL,GACjCnE,GAAU,MAAOrH,CAAY,CAErC,CAAC,CACL,CAEA,SAAS2L,GAAWH,EAAc,CAC9BF,GAAS1N,EAAQ,MAAO4N,CAAY,CACxC,CAEA,SAASI,GAAe5L,EAAclK,EAAO0V,EAAcR,EAAY,CAGnE,GADAhL,EAAe,OAAOA,CAAY,EAC9B,EAAEA,GAAgB,GAAKA,EAAeb,GAAoB,QAC1D,MAAM,IAAI,MAAM,2CAA6Ca,CAAY,EAI7EoH,GAAUpH,EAAcqL,GAAevV,EAAOkK,CAAY,EAAG,GAAM,GAAMgL,CAAU,EACnF3D,GAAU,SAAUrH,CAAY,EAC5BwL,GACAnE,GAAU,MAAOrH,CAAY,CAErC,CAEA,SAAS6L,GAASpK,EAAW,CAEzB,GADIA,IAAc,SAAUA,EAAY,IACpCA,EAEA,OAAOxC,GAAa,SAAW,EAAIA,GAAa,CAAC,EAAIA,GAAa,MAAM,CAAC,EAE7E,IAAIuC,EAASvC,GAAa,IAAIrB,EAAQ,OAAO,EAAE,EAE/C,OAAI4D,EAAO,SAAW,EACXA,EAAO,CAAC,EAEZA,CACX,CAEA,SAASsK,IAAU,CAOf,IALA1K,GAAYjG,EAAkB,IAAI,EAClCiG,GAAYjG,EAAkB,QAAQ,EACtC,OAAO,KAAKyC,EAAQ,UAAU,EAAE,QAAQ,SAAUF,EAAK,CACnDtG,EAAYqH,EAAcb,EAAQ,WAAWF,CAAG,CAAC,CACrD,CAAC,EACMe,EAAa,YAChBA,EAAa,YAAYA,EAAa,UAAU,EAEpD,OAAOA,EAAa,UACxB,CACA,SAAS+J,GAAsBxI,EAAc,CACzC,IAAImG,EAAWjH,GAAgBc,CAAY,EACvC+L,EAAc/M,EAAe,eAAemH,CAAQ,EACpDrQ,EAAQmJ,GAAae,CAAY,EACjC0C,EAAYqJ,EAAY,SAAS,KACjCC,EAAY,KAEhB,GAAIpO,EAAQ,KACR,MAAO,CACH9H,EAAQiW,EAAY,WAAW,YAAc,KAC7CA,EAAY,UAAU,WAAajW,GAAS,IAChD,EAIA4M,IAAc,IACV5M,EAAQ4M,EAAYqJ,EAAY,UAAU,aAC1CrJ,EAAYqJ,EAAY,UAAU,WAAajW,GAInDA,EAAQiW,EAAY,SAAS,WAC7BC,EAAYD,EAAY,SAAS,KAE5BA,EAAY,WAAW,OAAS,GACrCC,EAAY,GAIZA,EAAYlW,EAAQiW,EAAY,WAAW,YAG3C5F,IAAa,IACbzD,EAAY,KAEPyD,IAAa,IAClB6F,EAAY,MAGhB,IAAIvR,EAAeuE,EAAe,kBAAkB,EAEpD,OAAI0D,IAAc,MAAQA,IAAc,KACpCA,EAAY,OAAOA,EAAU,QAAQjI,CAAY,CAAC,GAElDuR,IAAc,MAAQA,IAAc,KACpCA,EAAY,OAAOA,EAAU,QAAQvR,CAAY,CAAC,GAE/C,CAACuR,EAAWtJ,CAAS,CAChC,CAEA,SAASuJ,IAAe,CACpB,OAAO9M,GAAoB,IAAIqJ,EAAqB,CACxD,CAEA,SAAS0D,GAAcC,EAAiBX,EAAc,CAIlD,IAAI1B,EAAI+B,GAAS,EACbO,EAAa,CACb,SACA,QACA,UACA,QACA,UACA,OACA,OACA,SACA,OACA,WACA,SACJ,EAEAA,EAAW,QAAQ,SAAUrO,EAAM,CAE3BoO,EAAgBpO,CAAI,IAAM,SAC1BO,EAAgBP,CAAI,EAAIoO,EAAgBpO,CAAI,EAEpD,CAAC,EACD,IAAIsO,EAAa1O,GAAYW,CAAe,EAE5C8N,EAAW,QAAQ,SAAUrO,EAAM,CAC3BoO,EAAgBpO,CAAI,IAAM,SAC1BH,EAAQG,CAAI,EAAIsO,EAAWtO,CAAI,EAEvC,CAAC,EACDiB,EAAiBqN,EAAW,SAE5BzO,EAAQ,OAASyO,EAAW,OAC5BzO,EAAQ,MAAQyO,EAAW,MAC3BzO,EAAQ,QAAUyO,EAAW,QAEzBzO,EAAQ,KACRuE,GAAKvE,EAAQ,IAAI,EAGjBgH,GAAW,EAGXhH,EAAQ,SACR0D,GAAS,EAGTH,GAAe,EAGnBjC,GAAkB,CAAC,EACnBoM,GAASzV,EAAMsW,EAAgB,KAAK,EAAIA,EAAgB,MAAQrC,EAAG0B,CAAY,EAE3EW,EAAgB,SAChBG,GAAoB,CAE5B,CACA,SAASA,IAAsB,CAE3B,KAAO3N,GAAkB,YACrBA,GAAkB,YAAYA,GAAkB,UAAU,EAG9D,QAAS/D,EAAI,EAAGA,GAAKgD,EAAQ,QAAShD,IAClCiE,GAAejE,CAAC,EAAI2F,GAAW5B,GAAmBf,EAAQ,QAAQhD,CAAC,CAAC,EACpEiQ,GAAcjQ,CAAC,EAInB6N,GAAiB,CAAE,KAAM7K,EAAQ,OAAO,KAAM,MAAO,EAAK,CAAC,CAC/D,CAEA,SAASd,IAAiB,CACtBwC,GAAyB,CAACA,GAC1BxD,GAAY8B,EAEZA,EAAQ,QAAQ,IAAI,SAAUpE,EAAG,CAAE,MAAO,CAACA,CAAG,CAAC,CAAC,EAChD8S,GAAoB,CACxB,CAEA,SAASC,IAAc,CAGnB7N,GAAaiC,GAAUlC,CAAY,EACnCgC,GAAY7C,EAAQ,QAASc,EAAU,EAEvC+J,GAAiB7K,EAAQ,MAAM,EAE/B0N,GAAS1N,EAAQ,KAAK,EAClBA,EAAQ,MACRuE,GAAKvE,EAAQ,IAAI,EAEjBA,EAAQ,UACR0D,GAAS,EAEbK,GAAK,CACT,CACA4K,GAAY,EACZ,IAAIzE,GAAa,CACb,QAASgE,GACT,MAAOG,GACP,GAAI1K,GACJ,IAAKH,GACL,IAAKyK,GACL,IAAKP,GACL,UAAWM,GACX,MAAOD,GACP,QAAS1K,GACT,OAAQC,GAER,cAAe,SAAU8I,EAAQ5D,EAAU8D,EAAe,CACtDjD,GAAY+C,EAAQ5D,EAAUlH,GAAiBgL,CAAa,CAChE,EACA,QAAS5L,EACT,cAAe4N,GACf,OAAQzN,EACR,WAAYmG,GACZ,eAAgBzD,GAChB,aAAc,UAAY,CACtB,OAAOjC,GAAgB,MAAM,CACjC,EACA,YAAa,UAAY,CACrB,OAAOH,EACX,EACA,WAAY,UAAY,CACpB,OAAOH,CACX,EACA,KAAMuD,EACV,EACA,OAAO2F,EACX,CAEA,SAAS0E,GAAWnO,EAAQC,EAAiB,CACzC,GAAI,CAACD,GAAU,CAACA,EAAO,SACnB,MAAM,IAAI,MAAM,sDAAwDA,CAAM,EAGlF,GAAIA,EAAO,WACP,MAAM,IAAI,MAAM,6CAA6C,EAGjE,IAAIT,EAAUD,GAAYW,CAAe,EACrCmO,EAAMrO,GAAMC,EAAQT,EAASU,CAAe,EAChD,OAAAD,EAAO,WAAaoO,EACbA,CACX,CACA,IAAIC,GAAa,CAEb,WAAYjT,GAGZ,WAAYyB,EACZ,OAAQsR,EACZ,EAEAtX,EAAQ,OAASsX,GACjBtX,EAAQ,WAAagG,EACrBhG,EAAQ,QAAawX,GAErB,OAAO,eAAexX,EAAS,aAAc,CAAE,MAAO,EAAK,CAAC,CAEhE,EAAE,ICpyEF,IAAMyX,GAAS,MAAM,QAAQ,WACzB,UAAY,CACV,OAAO,KAAK,OAAO,WAAW,CAChC,EACA,UAAY,CACV,QAAQ,KAAK,0CAA0C,EACvD,SAASC,EAAIC,EAAG,CACd,IAAMC,GAAK,KAAK,OAAO,EAAE,SAAS,EAAE,EAAI,aAAa,UAAU,EAAG,EAAE,EACpE,OAAOD,EAAI,IAAIC,EAAE,UAAU,EAAG,CAAC,CAAC,IAAIA,EAAE,UAAU,EAAG,CAAC,CAAC,GAAKA,CAC5D,CACA,OAAOF,EAAI,EAAIA,EAAI,EAAI,EAAIA,EAAI,EAAI,EAAIA,EAAI,CAC7C,EAEGG,EAAQJ,GCiBf,SAASK,GAAmBC,EAAK,CAC/B,IAAMC,EAAO,SAAS,gBAAgB,6BAA8B,MAAM,EAC1EA,EAAK,eACH,KACA,IACA,ipBACF,EACAD,EAAI,YAAYC,CAAI,CACtB,CAEA,SAASC,GAAgBF,EAAK,CAC5B,IAAMC,EAAO,SAAS,gBAAgB,6BAA8B,MAAM,EAC1EA,EAAK,eACH,KACA,IACA,6RACF,EACAD,EAAI,YAAYC,CAAI,CACtB,CAEA,SAASE,GAAsBH,EAAK,CAClC,IAAMC,EAAO,SAAS,gBAAgB,6BAA8B,MAAM,EAC1EA,EAAK,eACH,KACA,IACA,iRACF,EACAD,EAAI,YAAYC,CAAI,CACtB,CAEA,SAASG,GAAsBJ,EAAK,CAClC,IAAMC,EAAO,SAAS,gBAAgB,6BAA8B,MAAM,EAC1EA,EAAK,eACH,KACA,IACA,kRACF,EACAD,EAAI,YAAYC,CAAI,CACtB,CAEA,SAASI,GAAuBL,EAAK,CACnC,IAAMC,EAAO,SAAS,gBAAgB,6BAA8B,MAAM,EAC1EA,EAAK,eACH,KACA,IACA,gRACF,EACAD,EAAI,YAAYC,CAAI,CACtB,CAEA,SAASK,GAAuBN,EAAK,CACnC,IAAMC,EAAO,SAAS,gBAAgB,6BAA8B,MAAM,EAC1EA,EAAK,eACH,KACA,IACA,ioBACF,EACAD,EAAI,YAAYC,CAAI,CACtB,CAEA,SAASM,GAAwBP,EAAK,CACpC,IAAMC,EAAO,SAAS,gBAAgB,6BAA8B,MAAM,EAC1EA,EAAK,eACH,KACA,IACA,soBACF,EACAD,EAAI,YAAYC,CAAI,CACtB,CAEA,SAASO,GAAgBR,EAAK,CAC5B,IAAMS,EAAQ,SAAS,gBAAgB,6BAA8B,MAAM,EAC3EA,EAAM,eACJ,KACA,IACA,oPACF,EACAT,EAAI,YAAYS,CAAK,EAErB,IAAMC,EAAQ,SAAS,gBAAgB,6BAA8B,MAAM,EAC3EA,EAAM,eACJ,KACA,IACA,6PACF,EACAV,EAAI,YAAYU,CAAK,CACvB,CAEA,SAASC,GAAiBX,EAAK,CAC7B,IAAMS,EAAQ,SAAS,gBAAgB,6BAA8B,MAAM,EAC3EA,EAAM,eACJ,KACA,IACA,uSACF,EACAT,EAAI,YAAYS,CAAK,EAErB,IAAMC,EAAQ,SAAS,gBAAgB,6BAA8B,MAAM,EAC3EA,EAAM,eACJ,KACA,IACA,2OACF,EACAV,EAAI,YAAYU,CAAK,CACvB,CAEA,SAASE,GAAmBZ,EAAK,CAC/B,IAAMa,EAAU,SAAS,gBAAgB,6BAA8B,QAAQ,EAC/EA,EAAQ,eAAe,KAAM,KAAM,GAAG,EACtCA,EAAQ,eAAe,KAAM,KAAM,GAAG,EACtCA,EAAQ,eAAe,KAAM,IAAK,KAAK,EACvCb,EAAI,YAAYa,CAAO,EAEvB,IAAMC,EAAU,SAAS,gBAAgB,6BAA8B,QAAQ,EAC/EA,EAAQ,eAAe,KAAM,KAAM,GAAG,EACtCA,EAAQ,eAAe,KAAM,KAAM,GAAG,EACtCA,EAAQ,eAAe,KAAM,IAAK,KAAK,EACvCd,EAAI,YAAYc,CAAO,EAEvB,IAAMC,EAAU,SAAS,gBAAgB,6BAA8B,QAAQ,EAC/EA,EAAQ,eAAe,KAAM,KAAM,IAAI,EACvCA,EAAQ,eAAe,KAAM,KAAM,GAAG,EACtCA,EAAQ,eAAe,KAAM,IAAK,KAAK,EACvCf,EAAI,YAAYe,CAAO,CACzB,CAEA,SAASC,GAAgBhB,EAAK,CAC5B,IAAMC,EAAO,SAAS,gBAAgB,6BAA8B,MAAM,EAC1EA,EAAK,eAAe,KAAM,IAAK,oIAAoI,EACnKD,EAAI,YAAYC,CAAI,CACtB,CAEA,SAASgB,GAAejB,EAAK,CAC3B,IAAMC,EAAO,SAAS,gBAAgB,6BAA8B,MAAM,EAC1EA,EAAK,eACH,KACA,IACA,2QACF,EACAD,EAAI,YAAYC,CAAI,CACtB,CAEA,SAASiB,GAAgBlB,EAAK,CAC5B,IAAMS,EAAQ,SAAS,gBAAgB,6BAA8B,MAAM,EAC3EA,EAAM,eACJ,KACA,IACA,qbACF,EACAT,EAAI,YAAYS,CAAK,CACvB,CAEA,SAASU,GAAenB,EAAK,CAC3B,IAAMS,EAAQ,SAAS,gBAAgB,6BAA8B,MAAM,EAC3EA,EAAM,eAAe,KAAM,IAAK,+IAA+I,EAC/KT,EAAI,YAAYS,CAAK,EAErB,IAAMC,EAAQ,SAAS,gBAAgB,6BAA8B,MAAM,EAC3EA,EAAM,eACJ,KACA,IACA,6rBACF,EACAV,EAAI,YAAYU,CAAK,CACvB,CAEA,SAASU,GAAgBpB,EAAK,CAC5B,IAAMS,EAAQ,SAAS,gBAAgB,6BAA8B,MAAM,EAC3EA,EAAM,eACJ,KACA,IACA,uUACF,EACAT,EAAI,YAAYS,CAAK,EAErB,IAAMC,EAAQ,SAAS,gBAAgB,6BAA8B,MAAM,EAC3EA,EAAM,eACJ,KACA,IACA,8nBACF,EACAV,EAAI,YAAYU,CAAK,EAErB,IAAMW,EAAQ,SAAS,gBAAgB,6BAA8B,MAAM,EAC3EA,EAAM,eACJ,KACA,IACA,uUACF,EACArB,EAAI,YAAYqB,CAAK,CACvB,CAEA,SAASC,GAAetB,EAAK,CAC3B,IAAMS,EAAQ,SAAS,gBAAgB,6BAA8B,MAAM,EAC3EA,EAAM,eACJ,KACA,IACA,weACF,EACAT,EAAI,YAAYS,CAAK,CACvB,CAEA,SAASc,GAAevB,EAAK,CAC3B,IAAMS,EAAQ,SAAS,gBAAgB,6BAA8B,MAAM,EAC3EA,EAAM,eACJ,KACA,IACA,uTACF,EACAT,EAAI,YAAYS,CAAK,CACvB,CAEA,SAASe,GAAiBxB,EAAK,CAC7B,IAAMS,EAAQ,SAAS,gBAAgB,6BAA8B,MAAM,EAC3EA,EAAM,eACJ,KACA,IACA,iXACF,EACAT,EAAI,YAAYS,CAAK,EAErB,IAAMC,EAAQ,SAAS,gBAAgB,6BAA8B,MAAM,EAC3EA,EAAM,eACJ,KACA,IACA,gYACF,EACAV,EAAI,YAAYU,CAAK,CACvB,CAEA,SAASe,GAAiBzB,EAAK,CAC7B,IAAMS,EAAQ,SAAS,gBAAgB,6BAA8B,MAAM,EAC3EA,EAAM,eACJ,KACA,IACA,iXACF,EACAT,EAAI,YAAYS,CAAK,EAErB,IAAMC,EAAQ,SAAS,gBAAgB,6BAA8B,MAAM,EAC3EA,EAAM,eACJ,KACA,IACA,8XACF,EACAV,EAAI,YAAYU,CAAK,CACvB,CAEA,SAASgB,GAAe1B,EAAK,CAC3B,IAAMS,EAAQ,SAAS,gBAAgB,6BAA8B,MAAM,EAC3EA,EAAM,eACJ,KACA,IACA,wjBACF,EACAT,EAAI,YAAYS,CAAK,CACvB,CAEA,SAASkB,GAAe3B,EAAK,CAC3B,IAAMS,EAAQ,SAAS,gBAAgB,6BAA8B,MAAM,EAC3EA,EAAM,eAAe,KAAM,IAAK,sIAAsI,EACtKT,EAAI,YAAYS,CAAK,EAErB,IAAMC,EAAQ,SAAS,gBAAgB,6BAA8B,MAAM,EAC3EA,EAAM,eAAe,KAAM,IAAK,oIAAoI,EACpKV,EAAI,YAAYU,CAAK,EAErB,IAAMW,EAAQ,SAAS,gBAAgB,6BAA8B,MAAM,EAC3EA,EAAM,eAAe,KAAM,IAAK,sIAAsI,EACtKrB,EAAI,YAAYqB,CAAK,CACvB,CAEA,SAASO,GAAgB5B,EAAK,CAC5B,IAAMS,EAAQ,SAAS,gBAAgB,6BAA8B,MAAM,EAC3EA,EAAM,eACJ,KACA,IACA,qpCACF,EACAT,EAAI,YAAYS,CAAK,CACvB,CAEA,SAASoB,GAAkB7B,EAAK,CAC9B,IAAMS,EAAQ,SAAS,gBAAgB,6BAA8B,MAAM,EAC3EA,EAAM,eACJ,KACA,IACA,m8DACF,EACAT,EAAI,YAAYS,CAAK,CACvB,CAEA,IAAMqB,GACJ,8OAEF,SAASC,GAAqB/B,EAAK,CACjC,IAAMS,EAAQ,SAAS,gBAAgB,6BAA8B,MAAM,EAC3EA,EAAM,eAAe,KAAM,IAAK,uLAAuL,EACvNT,EAAI,YAAYS,CAAK,EAErB,IAAMI,EAAU,SAAS,gBAAgB,6BAA8B,QAAQ,EAC/EA,EAAQ,eAAe,KAAM,KAAM,QAAQ,EAC3CA,EAAQ,eAAe,KAAM,KAAM,QAAQ,EAC3CA,EAAQ,eAAe,KAAM,IAAK,OAAO,EACzCb,EAAI,YAAYa,CAAO,EAEvB,IAAMH,EAAQ,SAAS,gBAAgB,6BAA8B,MAAM,EAC3EA,EAAM,eAAe,KAAM,IAAKoB,EAAU,EAC1C9B,EAAI,YAAYU,CAAK,CACvB,CAEA,SAASsB,GAAwBhC,EAAK,CACpC,IAAMS,EAAQ,SAAS,gBAAgB,6BAA8B,MAAM,EAC3EA,EAAM,eAAe,KAAM,IAAK,mLAAmL,EACnNT,EAAI,YAAYS,CAAK,EAErB,IAAMI,EAAU,SAAS,gBAAgB,6BAA8B,QAAQ,EAC/EA,EAAQ,eAAe,KAAM,KAAM,QAAQ,EAC3CA,EAAQ,eAAe,KAAM,KAAM,QAAQ,EAC3CA,EAAQ,eAAe,KAAM,IAAK,OAAO,EACzCb,EAAI,YAAYa,CAAO,EAEvB,IAAMH,EAAQ,SAAS,gBAAgB,6BAA8B,MAAM,EAC3EA,EAAM,eAAe,KAAM,IAAKoB,EAAU,EAC1C9B,EAAI,YAAYU,CAAK,CACvB,CAEA,SAASuB,GAAsBjC,EAAK,CAClC,IAAMS,EAAQ,SAAS,gBAAgB,6BAA8B,MAAM,EAC3EA,EAAM,eAAe,KAAM,IAAKqB,EAAU,EAC1C9B,EAAI,YAAYS,CAAK,EAErB,IAAMC,EAAQ,SAAS,gBAAgB,6BAA8B,MAAM,EAC3EA,EAAM,eACJ,KACA,IACA,kgBACF,EACAV,EAAI,YAAYU,CAAK,CACvB,CAEA,SAASwB,GAAwBlC,EAAK,CACpC,IAAMS,EAAQ,SAAS,gBAAgB,6BAA8B,MAAM,EAC3EA,EAAM,eAAe,KAAM,IAAKqB,EAAU,EAC1C9B,EAAI,YAAYS,CAAK,EAErB,IAAMC,EAAQ,SAAS,gBAAgB,6BAA8B,MAAM,EAC3EA,EAAM,eACJ,KACA,IACA,wVACF,EACAV,EAAI,YAAYU,CAAK,CACvB,CAEA,SAASyB,GAAwBnC,EAAK,CACpC,IAAMS,EAAQ,SAAS,gBAAgB,6BAA8B,MAAM,EAC3EA,EAAM,eAAe,KAAM,IAAKqB,EAAU,EAC1C9B,EAAI,YAAYS,CAAK,EAErB,IAAMC,EAAQ,SAAS,gBAAgB,6BAA8B,MAAM,EAC3EA,EAAM,eACJ,KACA,IACA,grBACF,EACAV,EAAI,YAAYU,CAAK,EAErB,IAAMG,EAAU,SAAS,gBAAgB,6BAA8B,QAAQ,EAC/EA,EAAQ,eAAe,KAAM,KAAM,GAAG,EACtCA,EAAQ,eAAe,KAAM,KAAM,QAAQ,EAC3CA,EAAQ,eAAe,KAAM,IAAK,OAAO,EACzCb,EAAI,YAAYa,CAAO,CACzB,CAEA,SAASuB,GAAqBpC,EAAK,CACjC,IAAMS,EAAQ,SAAS,gBAAgB,6BAA8B,MAAM,EAC3EA,EAAM,eACJ,KACA,IACA,qrBACF,EACAT,EAAI,YAAYS,CAAK,EAErB,IAAMC,EAAQ,SAAS,gBAAgB,6BAA8B,MAAM,EAC3EA,EAAM,eACJ,KACA,IACA,qRACF,EACAV,EAAI,YAAYU,CAAK,CACvB,CAEO,SAAS2B,EAAU,CAAE,KAAAC,EAAM,QAAAC,EAAU,SAAU,MAAAC,CAAM,EAAI,CAAC,EAAG,CAClE,IAAMxC,EAAM,SAAS,gBAAgB,6BAA8B,KAAK,EAOxE,GANAA,EAAI,eAAe,KAAM,QAAS,IAAI,EACtCA,EAAI,eAAe,KAAM,SAAU,IAAI,EACvCA,EAAI,eAAe,KAAM,UAAW,WAAW,EAC/CA,EAAI,eAAe,KAAM,OAAQ,cAAc,EAC/CA,EAAI,eAAe,KAAM,QAASuC,CAAO,EAErCC,EACF,OAAW,CAACC,EAAKC,CAAK,IAAK,OAAO,QAAQF,CAAK,EAC7CxC,EAAI,eAAe,KAAMyC,EAAKC,CAAK,EAIvC,OAAQJ,EAAM,CACZ,IAAK,GACHvC,GAAmBC,CAAG,EACtB,MACF,IAAK,GACHE,GAAgBF,CAAG,EACnB,MACF,IAAK,GACHG,GAAsBH,CAAG,EACzB,MACF,IAAK,GACHI,GAAsBJ,CAAG,EACzB,MACF,IAAK,GACHK,GAAuBL,CAAG,EAC1B,MACF,IAAK,GACHM,GAAuBN,CAAG,EAC1B,MACF,IAAK,GACHO,GAAwBP,CAAG,EAC3B,MACF,IAAK,GACHQ,GAAgBR,CAAG,EACnB,MACF,IAAK,GACHW,GAAiBX,CAAG,EACpB,MACF,IAAK,GACHY,GAAmBZ,CAAG,EACtB,MACF,IAAK,IACHgB,GAAgBhB,CAAG,EACnB,MACF,IAAK,IACHiB,GAAejB,CAAG,EAClB,MACF,IAAK,IACHkB,GAAgBlB,CAAG,EACnB,MACF,IAAK,IACHmB,GAAenB,CAAG,EAClB,MACF,IAAK,IACHoB,GAAgBpB,CAAG,EACnB,MACF,IAAK,IACHsB,GAAetB,CAAG,EAClB,MACF,IAAK,IACHuB,GAAevB,CAAG,EAClB,MACF,IAAK,IACHwB,GAAiBxB,CAAG,EACpB,MACF,IAAK,IACHyB,GAAiBzB,CAAG,EACpB,MACF,IAAK,IACH0B,GAAe1B,CAAG,EAClB,MACF,IAAK,IACH2B,GAAe3B,CAAG,EAClB,MACF,IAAK,IACH4B,GAAgB5B,CAAG,EACnB,MACF,IAAK,IACH6B,GAAkB7B,CAAG,EACrB,MACF,IAAK,IACH+B,GAAqB/B,CAAG,EACxB,MACF,IAAK,IACHgC,GAAwBhC,CAAG,EAC3B,MACF,IAAK,IACHiC,GAAsBjC,CAAG,EACzB,MACF,IAAK,IACHkC,GAAwBlC,CAAG,EAC3B,MACF,IAAK,IACHmC,GAAwBnC,CAAG,EAC3B,MACF,IAAK,IACHoC,GAAqBpC,CAAG,EACxB,MACF,QACE,KACJ,CAEA,OAAOA,CACT,CAEO,SAAS2C,GAAc3C,EAAKsC,EAAM,CAOvC,OANAtC,EAAI,aAAa,QAAS,4BAA4B,EACtDA,EAAI,aAAa,QAAS,MAAM,EAChCA,EAAI,aAAa,SAAU,MAAM,EACjCA,EAAI,aAAa,UAAW,WAAW,EACvCA,EAAI,aAAa,OAAQ,cAAc,EAE/BsC,EAAM,CACZ,IAAK,WACHvC,GAAmBC,CAAG,EACtB,MACF,IAAK,QACHE,GAAgBF,CAAG,EACnB,MACF,IAAK,eACHG,GAAsBH,CAAG,EACzB,MACF,IAAK,eACHI,GAAsBJ,CAAG,EACzB,MACF,IAAK,gBACHK,GAAuBL,CAAG,EAC1B,MACF,IAAK,gBACHM,GAAuBN,CAAG,EAC1B,MACF,IAAK,iBACHO,GAAwBP,CAAG,EAC3B,MACF,IAAK,QACHQ,GAAgBR,CAAG,EACnB,MACF,IAAK,SACHW,GAAiBX,CAAG,EACpB,MACF,IAAK,WACHY,GAAmBZ,CAAG,EACtB,MACF,IAAK,QACHgB,GAAgBhB,CAAG,EACnB,MACF,IAAK,OACHiB,GAAejB,CAAG,EAClB,MACF,IAAK,QACHkB,GAAgBlB,CAAG,EACnB,MACF,IAAK,OACHmB,GAAenB,CAAG,EAClB,MACF,IAAK,QACHoB,GAAgBpB,CAAG,EACnB,MACF,IAAK,OACHsB,GAAetB,CAAG,EAClB,MACF,IAAK,OACHuB,GAAevB,CAAG,EAClB,MACF,IAAK,SACHwB,GAAiBxB,CAAG,EACpB,MACF,IAAK,SACHyB,GAAiBzB,CAAG,EACpB,MACF,IAAK,OACH0B,GAAe1B,CAAG,EAClB,MACF,IAAK,OACH2B,GAAe3B,CAAG,EAClB,MACF,IAAK,QACH4B,GAAgB5B,CAAG,EACnB,MACF,IAAK,UACH6B,GAAkB7B,CAAG,EACrB,MACF,IAAK,cACH+B,GAAqB/B,CAAG,EACxB,MACF,IAAK,iBACHgC,GAAwBhC,CAAG,EAC3B,MACF,IAAK,eACHiC,GAAsBjC,CAAG,EACzB,MACF,IAAK,iBACHkC,GAAwBlC,CAAG,EAC3B,MACF,IAAK,iBACHmC,GAAwBnC,CAAG,EAC3B,MACF,IAAK,cACHoC,GAAqBpC,CAAG,EACxB,MACF,QACE,KACJ,CACF,CCpnBe,SAAR4C,GAAkBC,EAAQ,CAC/BA,EAAO,UAAU,cAAe,CAACC,EAAI,CAAE,WAAAC,EAAY,UAAAC,CAAU,EAAG,CAAE,OAAAH,CAAO,IAAM,CAC7EC,EAAG,aAAeE,EAAU,SAAS,QAAQ,EACzCH,EAAO,SAAS,CACd,OAAQ,GACR,WAAYE,GAAc,EAC5B,CAAC,EACD,CAAE,OAAQ,EAAM,EACpBD,EAAG,aAAa,YAAa,WAAW,CAC1C,CAAC,EAEDD,EAAO,UAAU,mBAAoB,CAACC,EAAI,CAAE,SAAAG,EAAU,WAAAF,EAAY,UAAAC,CAAU,EAAG,CAAE,OAAAH,CAAO,IAAM,CAC5F,IAAMK,EAAYL,EAAO,YAAYC,EAAG,cAAgBK,GAAW,OAAO,UAAU,eAAe,KAAKA,EAAQ,cAAc,CAAC,EAE/H,GAAI,CAACD,EACH,MAAM,IAAI,MAAM,GAAGD,CAAQ,8BAA8B,EAG3DH,EAAG,UAAU,IAAI,WAAY,iBAAiB,EAC9CA,EAAG,aAAa,YAAa,gBAAgB,EAE7C,IAAMM,EAASL,GAAc,KAAKM,EAAO,CAAC,GAE1C,SAASC,GAAgB,CACvB,OAAIJ,EAAU,aAAa,OACrBA,EAAU,aAAa,aAAe,GACjCA,EAAU,aAAa,aAAeE,EACpCJ,EAAU,SAAS,SAAS,GACrCE,EAAU,aAAa,WAAaE,EAC7B,IAEF,GAEFJ,EAAU,SAAS,SAAS,CACrC,CAEAF,EAAG,iBAAmBD,EAAO,SAAS,CACpC,GAAIO,EACJ,SAAU,KAAKC,EAAO,CAAC,GACvB,SAAUC,EAAc,CAC1B,CAAC,CACH,CAAC,EAEDT,EAAO,UAAU,sBAAuB,CAACC,EAAI,CAAE,SAAAG,EAAU,WAAAF,CAAW,EAAG,CAAE,OAAAQ,EAAQ,cAAAC,EAAe,OAAAX,EAAQ,QAAAY,CAAQ,IAAM,CACpH,GAAIX,EAAG,QAAQ,SAAW,GAAK,CAACA,EAAG,QAAQ,WAAW,GAAG,EACvD,MAAM,IAAI,MAAM,GAAGG,CAAQ,2BAA2B,EAExD,IAAMC,EAAYL,EAAO,YAAYC,EAAG,cAAgBK,GAAW,OAAO,UAAU,eAAe,KAAKA,EAAQ,cAAc,CAAC,EAEzHO,EAAgBb,EAAO,YAAYC,EAAG,cAAgBK,GAAW,OAAO,UAAU,eAAe,KAAKA,EAAQ,kBAAkB,CAAC,EAEvI,GAAI,CAACO,GAAiB,CAACR,EACrB,MAAM,IAAI,MAAM,GAAGD,CAAQ,4DAA4D,EAGzFH,EAAG,UAAU,IAAI,OAAQ,OAAQ,WAAY,0BAA2B,8BAA+B,yBAA0B,4BAA4B,EAC7JA,EAAG,aAAa,WAAY,IAAI,EAEhC,IAAMa,EAAWH,EAAcT,CAAU,EAEnCa,EAAcC,EAAU,CAC5B,KAAM,EACN,QAAS,4IACT,MAAO,CACL,cAAe,GACf,KAAM,cACR,CACF,CAAC,EAEKC,EAAS,SAAS,cAAc,QAAQ,EAC9CA,EAAO,aAAa,OAAQ,QAAQ,EACpCA,EAAO,aAAa,WAAY,GAAG,EACnCA,EAAO,aAAa,YAAa,mBAAmB,EACpDA,EAAO,UAAU,IACf,4BACA,6BACA,OACA,SACA,eACA,kBACA,QACA,YACA,UACA,cACA,iBACA,gCACA,eACA,kBACA,iDACA,+BACA,sBACA,wCACF,EACAhB,EAAG,YAAYgB,CAAM,EAErBP,EAAO,IAAM,CACXI,EAAUI,GAAU,CAClBD,EAAO,UAAYC,EACnBD,EAAO,YAAYF,CAAW,CAChC,CAAC,CACH,CAAC,EAEDE,EAAO,aAAa,KAAMJ,EAAc,iBAAiB,EAAE,EAC3DI,EAAO,aAAa,gBAAiBJ,EAAc,iBAAiB,QAAQ,EAE5E,IAAMM,EAAgB,IAAM,CAC1BF,EAAO,aAAa,gBAAiBJ,EAAc,iBAAiB,QAAQ,CAC9E,EAEMO,EAAU,IAAM,CACpBP,EAAc,iBAAiB,SAAW,CAACA,EAAc,iBAAiB,SAC1EM,EAAc,EACVd,EAAU,aAAa,SACzBA,EAAU,aAAa,WAAaQ,EAAc,iBAAiB,GAEvE,EACAM,EAAc,EAEdlB,EAAG,iBAAiB,QAASmB,CAAO,EAEpCR,EAAQ,IAAM,CACZX,EAAG,oBAAoB,QAASmB,CAAO,CACzC,CAAC,EAEGf,EAAU,aAAa,QACzBK,EAAO,IAAM,CACPL,EAAU,aAAa,aAAeQ,EAAc,iBAAiB,KACvEA,EAAc,iBAAiB,SAAW,GAC1CM,EAAc,EAElB,CAAC,CAEL,CAAC,EAEDnB,EAAO,UAAU,sBAAuB,CAACC,EAAIoB,EAAG,CAAE,OAAAX,EAAQ,QAAAE,EAAS,OAAAZ,CAAO,IAAM,CAC9EC,EAAG,UAAU,IAAI,OAAQ,kBAAmB,UAAW,SAAU,iDAAkD,gCAAiC,eAAgB,WAAY,WAAW,EAC3LA,EAAG,aAAa,YAAa,mBAAmB,EAChD,IAAMK,EAASN,EAAO,YAAYC,EAAG,cAAgBK,GAAW,OAAO,UAAU,eAAe,KAAKA,EAAQ,kBAAkB,CAAC,EAChI,GAAIA,EAAQ,CA6BV,IAASgB,EAAT,SAAyBC,EAAO,CAC1BA,EAAM,SAAWtB,GAAMsB,EAAM,OAAO,UAAU,SAAS,WAAW,GACpEtB,EAAG,UAAU,IAAI,QAAQ,CAE7B,EAhCAA,EAAG,aAAa,KAAMK,EAAO,iBAAiB,QAAQ,EACtDL,EAAG,aAAa,kBAAmBK,EAAO,iBAAiB,EAAE,EAC7DI,EAAO,IAAM,CACP,OAAO,WAAW,kCAAkC,EAAE,SACxDT,EAAG,MAAM,eAAe,YAAY,EAChCK,EAAO,iBAAiB,UAC1BL,EAAG,UAAU,IAAI,OAAQ,0BAA2B,yBAAyB,EAC7EA,EAAG,UAAU,OAAO,SAAU,OAAQ,WAAW,IAEjDA,EAAG,UAAU,IAAI,SAAU,OAAQ,WAAW,EAC9CA,EAAG,UAAU,OAAO,OAAQ,0BAA2B,yBAAyB,IAEzEK,EAAO,iBAAiB,SAC7BL,EAAG,UAAU,SAAS,QAAQ,IAChCA,EAAG,UAAU,IAAI,OAAQ,0BAA2B,yBAAyB,EAC7EA,EAAG,UAAU,OAAO,SAAU,MAAM,EACpCD,EAAO,SAAS,IAAM,CACpBC,EAAG,MAAM,UAAY,GAAGA,EAAG,YAAY,KACvCA,EAAG,UAAU,OAAO,WAAW,CACjC,CAAC,IAGHA,EAAG,MAAM,UAAY,MACrBA,EAAG,UAAU,IAAI,YAAa,MAAM,EACpCA,EAAG,UAAU,OAAO,OAAQ,0BAA2B,yBAAyB,EAEpF,CAAC,EAQDA,EAAG,iBAAiB,gBAAiBqB,CAAe,EAEpDV,EAAQ,IAAM,CACZX,EAAG,oBAAoB,gBAAiBqB,CAAe,CACzD,CAAC,CACH,CACF,CAAC,CACH,CCtLe,SAARE,GAAkBC,EAAQ,CAC/BA,EAAO,UAAU,UAAW,CAACC,EAAI,CAAE,UAAAC,CAAU,EAAG,CAAE,QAAAC,CAAQ,IAAM,CAC9DF,EAAG,UAAU,IACX,WACA,SACA,aACA,UACA,SACA,OACA,OACA,UACA,OACA,yDACA,yBACA,qBACA,YACA,eACA,iBACA,uBACAC,EAAU,SAAS,UAAU,EAAI,YAAc,MACjD,EACAD,EAAG,aAAa,YAAa,OAAO,EACpCA,EAAG,aAAa,OAAQ,OAAO,EAE/B,IAAMG,EAAW,CACf,QAAS,CAAC,iBAAiB,EAC3B,SAAU,CAAC,eAAe,EAC1B,SAAU,CAAC,eAAe,EAC1B,QAAS,CAAC,cAAc,EACxB,YAAa,CAAC,kBAAkB,CAClC,EAEA,SAASC,EAAWC,EAAS,CAC3B,OAAW,CAACC,EAAGC,CAAK,IAAK,OAAO,QAAQJ,CAAQ,EAC9CH,EAAG,UAAU,OAAO,GAAGO,CAAK,EAE1B,OAAO,UAAU,eAAe,KAAKJ,EAAUE,CAAO,GAAGL,EAAG,UAAU,IAAI,GAAGG,EAASE,CAAO,CAAC,CACpG,CAEAD,EAAWJ,EAAG,aAAa,cAAc,GAAK,SAAS,EAEvD,IAAMQ,EAAW,IAAI,iBAAiB,IAAM,CAC1CJ,EAAWJ,EAAG,aAAa,cAAc,GAAK,SAAS,CACzD,CAAC,EAEDQ,EAAS,QAAQR,EAAI,CAAE,WAAY,GAAM,gBAAiB,CAAC,cAAc,CAAE,CAAC,EAE5EE,EAAQ,IAAM,CACZM,EAAS,WAAW,CACtB,CAAC,CACH,CAAC,EAEDT,EAAO,UAAU,gBAAkBC,GAAO,CACxCA,EAAG,UAAU,IAAI,cAAe,eAAgB,UAAW,cAAe,gBAAgB,EAC1FA,EAAG,aAAa,YAAa,aAAa,CAC5C,CAAC,EAEDD,EAAO,UAAU,sBAAwBC,GAAO,CAC9CA,EAAG,UAAU,IAAI,wBAAyB,cAAe,OAAQ,QAAS,UAAW,uBAAuB,EAC5GA,EAAG,aAAa,YAAa,mBAAmB,CAClD,CAAC,EAEDD,EAAO,UAAU,kBAAoBC,GAAO,CAC1CA,EAAG,UAAU,IAAI,cAAe,aAAa,EAC7CA,EAAG,aAAa,YAAa,eAAe,CAC9C,CAAC,CACH,CClEO,SAASS,GAAoBC,EAAWC,EAAM,CACnD,QAASC,EAAI,EAAGA,EAAIF,EAAU,OAAQE,IACpC,GAAIF,EAAU,KAAKE,CAAC,EAAE,WAAWD,CAAI,EACnC,MAAO,GAGX,MAAO,EACT,CCNe,SAARE,GAAkBC,EAAQ,CAC/BA,EAAO,UAAU,WAAY,CAACC,EAAIC,EAAG,CAAE,OAAAF,CAAO,IAAM,CAC7CG,GAAoBF,EAAG,UAAW,SAAS,GAC9CA,EAAG,UAAU,IAAI,cAAc,EAEjCA,EAAG,UAAU,IACX,WACA,eACA,4BACA,4BACA,iEACA,iDACA,gDACA,kDACA,uDACA,yCACA,wCACA,0CACA,+CACA,2CACA,0CACA,4CACA,iDACA,2CACA,0CACA,4CACA,iDACA,qBACA,OACA,SACA,gBACA,WACA,eACA,iBACA,UACA,gBACF,EACAA,EAAG,aAAa,YAAa,QAAQ,EACrCA,EAAG,UAAYD,EAAO,SAAS,CAC7B,SAAU,EACZ,CAAC,EACGC,EAAG,UAAY,UACjBA,EAAG,UAAU,IAAI,iBAAkB,2BAA4B,4BAA4B,CAE/F,CAAC,EAEDD,EAAO,UAAU,iBAAkB,CAACC,EAAI,CAAE,SAAAG,CAAS,EAAG,CAAE,QAAAC,CAAQ,IAAM,CACpE,IAAMC,EAASN,EAAO,YAAYC,EAAG,cAAgBM,GAAW,OAAO,UAAU,eAAe,KAAKA,EAAQ,WAAW,CAAC,EACzH,GAAI,CAACD,EACH,MAAM,IAAI,MAAM,GAAGF,CAAQ,mCAAmC,EAGhEH,EAAG,UAAU,IAAI,gBAAiB,YAAa,mBAAmB,EAClEA,EAAG,aAAa,YAAa,cAAc,EAC3CA,EAAG,aAAa,OAAQ,KAAK,EAE7B,IAAIO,EAEJ,SAASC,EAASC,EAAS,GAAO,CAC5BA,EAAQT,EAAG,UAAU,IAAI,QAAQ,EAChCA,EAAG,UAAU,OAAO,QAAQ,EACjCK,EAAO,UAAU,SAAWI,CAC9B,CAEA,SAASC,GAAgB,CACnBV,EAAG,WACL,cAAcO,CAAQ,EACtBC,EAASR,EAAG,gBAAkB,CAAC,EAEnC,CAEIA,EAAG,UAAYA,EAAG,gBAAkB,EACtCQ,EAAS,EAAI,EAEbD,EAAW,YAAYG,EAAe,EAAE,EAG1C,IAAMC,EAAW,IAAI,iBAAiB,IAAM,CAC1CJ,EAAW,YAAYG,EAAe,EAAE,CAC1C,CAAC,EAEDC,EAAS,QAAQX,EAAI,CAAE,WAAY,GAAM,gBAAiB,CAAC,KAAK,CAAE,CAAC,EAEnEI,EAAQ,IAAM,CACRG,GAAU,cAAcA,CAAQ,EACpCI,EAAS,WAAW,CACtB,CAAC,CACH,CAAC,EAEDZ,EAAO,UAAU,oBAAqB,CAACC,EAAI,CAAE,SAAAG,CAAS,EAAG,CAAE,OAAAS,CAAO,IAAM,CACtE,IAAMP,EAASN,EAAO,YAAYC,EAAG,cAAgBM,GAAW,OAAO,UAAU,eAAe,KAAKA,EAAQ,WAAW,CAAC,EACzH,GAAI,CAACD,EACH,MAAM,IAAI,MAAM,GAAGF,CAAQ,mCAAmC,EAGhEH,EAAG,UAAU,IAAI,SAAU,WAAY,OAAQ,YAAa,eAAgB,iBAAkB,mBAAmB,EACjHA,EAAG,aAAa,YAAa,iBAAiB,EAE9CY,EAAO,IAAM,CACPP,EAAO,UAAU,SAAUL,EAAG,UAAU,OAAO,QAAQ,EACtDA,EAAG,UAAU,IAAI,QAAQ,CAChC,CAAC,CACH,CAAC,CACH,CCxGe,SAARa,GAAkBC,EAAQ,CAC/BA,EAAO,UAAU,UAAW,CAACC,EAAIC,EAAG,CAAE,QAAAC,CAAQ,IAAM,CAClDF,EAAG,UAAU,IACX,sBACA,cACA,eACA,iBACA,eACA,SACA,OACA,SACA,UACA,cACA,QACA,oBACA,WACA,iBACA,QACA,8BACA,4BACA,6BACA,iDACA,oBACA,oBACA,gCACA,iBACF,EACAA,EAAG,aAAa,YAAa,OAAO,EACpC,IAAMG,EAAW,CACf,QAAS,CAAC,qBAAsB,eAAgB,4BAA6B,gCAAiC,iCAAiC,EAC/I,QAAS,CAAC,qBAAsB,aAAc,0BAA2B,8BAA+B,+BAA+B,EACvI,SAAU,CAAC,qBAAsB,cAAe,2BAA4B,+BAAgC,gCAAgC,EAC5I,SAAU,CAAC,qBAAsB,cAAe,2BAA4B,+BAAgC,gCAAgC,EAC5I,QAAS,CAAC,qBAAsB,aAAc,0BAA2B,8BAA+B,+BAA+B,EACvI,YAAa,CAAC,qBAAsB,iBAAkB,8BAA+B,kCAAmC,mCAAmC,EAC3J,QAAS,CAAC,iBAAkB,kBAAmB,0BAA2B,uCAAwC,iCAAiC,CACrJ,EAEA,SAASC,EAAWC,EAAS,CAC3B,OAAW,CAACJ,EAAGK,CAAK,IAAK,OAAO,QAAQH,CAAQ,EAC9CH,EAAG,UAAU,OAAO,GAAGM,CAAK,EAE1B,OAAO,UAAU,eAAe,KAAKH,EAAUE,CAAO,GAAGL,EAAG,UAAU,IAAI,GAAGG,EAASE,CAAO,CAAC,CACpG,CAEAD,EAAWJ,EAAG,aAAa,cAAc,GAAK,SAAS,EAEvD,IAAMO,EAAW,IAAI,iBAAiB,IAAM,CAC1CH,EAAWJ,EAAG,aAAa,cAAc,GAAK,SAAS,CACzD,CAAC,EAEDO,EAAS,QAAQP,EAAI,CAAE,WAAY,GAAM,gBAAiB,CAAC,cAAc,CAAE,CAAC,EAE5EE,EAAQ,IAAM,CACZK,EAAS,WAAW,CACtB,CAAC,CACH,CAAC,EAEDR,EAAO,UAAU,oBAAqB,CAACC,EAAIC,EAAG,CAAE,QAAAC,CAAQ,IAAM,CAC5DF,EAAG,UAAU,IACX,WACA,SACA,SACA,0BACA,0BACA,cACA,MACA,UACA,eACA,iBACA,eACA,SACA,OACA,UACA,YACA,eACA,gBACA,sBACA,0BACA,sBACA,mCACA,sCACA,iCACA,iCACA,uCACA,qCACA,sCACF,EACAA,EAAG,aAAa,YAAa,iBAAiB,EAC9C,IAAMG,EAAW,CACf,QAAS,CAAC,aAAc,0BAA2B,oCAAoC,EACvF,SAAU,CAAC,cAAe,2BAA4B,qCAAqC,EAC3F,SAAU,CAAC,cAAe,2BAA4B,qCAAqC,EAC3F,QAAS,CAAC,aAAc,0BAA2B,oCAAoC,EACvF,YAAa,CAAC,iBAAkB,8BAA+B,wCAAwC,CACzG,EAEA,SAASC,EAAWC,EAAS,CAC3B,OAAW,CAACJ,EAAGK,CAAK,IAAK,OAAO,QAAQH,CAAQ,EAC9CH,EAAG,UAAU,OAAO,GAAGM,CAAK,EAE1B,OAAO,UAAU,eAAe,KAAKH,EAAUE,CAAO,GAAGL,EAAG,UAAU,IAAI,GAAGG,EAASE,CAAO,CAAC,CACpG,CAEAD,EAAWJ,EAAG,aAAa,cAAc,GAAK,SAAS,EAEvD,IAAMO,EAAW,IAAI,iBAAiB,IAAM,CAC1CH,EAAWJ,EAAG,aAAa,cAAc,GAAK,SAAS,CACzD,CAAC,EAEDO,EAAS,QAAQP,EAAI,CAAE,WAAY,GAAM,gBAAiB,CAAC,cAAc,CAAE,CAAC,EAE5EE,EAAQ,IAAM,CACZK,EAAS,WAAW,CACtB,CAAC,CACH,CAAC,CACH,CCpHO,IAAMC,GAAiB,CAC5B,QAAS,CACP,eACA,4BACA,4BACA,gBACA,2BACA,6BACA,mCACA,iDACA,+CACA,yCACF,EACA,QAAS,CACP,aACA,0BACA,0BACA,gBACA,mCACA,yBACA,2BACA,iCACA,+CACA,6CACA,uCACF,EACA,SAAU,CACR,cACA,2BACA,2BACA,gBACA,oCACA,0BACA,4BACA,kCACA,gDACA,8CACA,wCACF,EACA,SAAU,CACR,cACA,2BACA,2BACA,gBACA,oCACA,0BACA,4BACA,kCACA,gDACA,8CACA,wCACF,EACA,QAAS,CACP,aACA,0BACA,0BACA,gBACA,mCACA,yBACA,2BACA,iCACA,+CACA,6CACA,uCACF,EACA,YAAa,CACX,iBACA,8BACA,8BACA,gBACA,uCACA,6BACA,+BACA,qCACA,mDACA,iDACA,2CACF,EACA,QAAS,CACP,SACA,gBACA,kBACA,kBACA,qBACA,kCACA,kCACA,6BACA,mCACA,mCACA,mCACA,yCACA,yCACA,iDACA,uDACA,uDACA,+CACA,sDACA,sDACA,0CACA,gDACA,+CACF,EACA,YAAa,CACX,iBACA,kBACA,kBACA,cACA,qBACA,kCACA,kCACA,6BACA,mCACA,mCACA,mCACA,yCACA,yCACA,iDACA,uDACA,uDACA,+CACA,sDACA,sDACA,0CACA,gDACA,+CACF,EACA,KAAM,CAAC,eAAgB,qBAAsB,iBAAiB,CAChE,EAEaC,GAAoBC,GAAO,CACtCA,EAAG,UAAU,IACX,iBACA,cACA,eACA,iBACA,QACA,oBACA,kBACA,UACA,cACA,iBACA,eACA,gCACA,+BACA,sBACA,8BACA,uCACA,WACA,mBACA,kBACA,oDACA,wBACA,gCACA,qCACA,+BACA,4BACA,iCACA,0BACF,CACF,EAEaC,GAAgB,CAACC,EAAMC,EAAU,KAAU,CACtD,OAAQD,EAAM,CACZ,IAAK,KACH,OAAOC,EACH,CAAC,MAAO,gDAAiD,QAAS,OAAQ,yCAA0C,kBAAmB,iCAAiC,EACxK,CAAC,QAAS,UAAW,SAAU,kBAAmB,iCAAiC,EACzF,IAAK,KACH,OAAOA,EAAU,CAAC,MAAO,SAAU,UAAW,oBAAqB,mCAAmC,EAAI,CAAC,MAAO,UAAW,OAAQ,oBAAqB,mCAAmC,EAC/L,IAAK,UACH,OAAOA,EAAU,CAAC,SAAU,mDAAoD,MAAO,iBAAkB,gCAAgC,EAAI,CAAC,UAAU,EAC1J,IAAK,UACH,OAAOA,EAAU,CAAC,SAAU,MAAO,gBAAgB,EAAI,CAAC,QAAQ,EAClE,IAAK,OACH,MAAO,CAAC,QAAQ,EAClB,QACE,MAAO,CAAC,MAAO,OAAQ,OAAQ,kBAAmB,iCAAiC,CACvF,CACF,EAEe,SAARC,GAAkBC,EAAQ,CAC/BA,EAAO,UAAU,WAAY,CAACL,EAAI,CAAE,SAAAM,EAAU,UAAAC,CAAU,EAAG,CAAE,QAAAC,CAAQ,IAAM,CACzET,GAAiBC,CAAE,EACdA,EAAG,aAAa,WAAW,GAC9BA,EAAG,aAAa,YAAa,QAAQ,EAGvC,IAAMG,EAAUI,EAAU,SAAS,OAAO,EAEtCE,EAEJ,SAASC,EAAWC,EAAS,CAC3B,OAAW,CAACC,EAAGC,CAAK,IAAK,OAAO,QAAQf,EAAc,EACpDE,EAAG,UAAU,OAAO,GAAGa,CAAK,EAE1B,OAAO,UAAU,eAAe,KAAKf,GAAgBa,CAAO,GAAGX,EAAG,UAAU,IAAI,GAAGF,GAAea,CAAO,CAAC,CAChH,CAEA,SAASG,EAAQZ,EAAO,UAAW,CACjCF,EAAG,UAAU,OAAO,GAAGC,GAAcQ,EAAUN,CAAO,CAAC,EACvDH,EAAG,UAAU,IAAI,GAAGC,GAAcC,EAAMC,CAAO,CAAC,EAC5CD,EAAK,WAAW,MAAM,GAAK,CAACF,EAAG,aAAa,iBAAiB,GAAK,CAACA,EAAG,aAAa,YAAY,GACjG,QAAQ,MAAM,GAAGM,CAAQ,+EAAgFN,CAAE,EAE7GS,EAAWP,CACb,CAEAQ,EAAWV,EAAG,aAAa,cAAc,GAAK,SAAS,EACnDG,GACFH,EAAG,UAAU,OAAO,gBAAiB,aAAa,EAClDA,EAAG,UAAU,IAAI,cAAe,MAAM,EACtCc,EAAQd,EAAG,aAAa,WAAW,GAAK,IAAI,GAExCA,EAAG,aAAa,WAAW,EAC7Bc,EAAQd,EAAG,aAAa,WAAW,CAAC,EAEhC,CAAC,sBAAuB,qBAAqB,EAAE,SAASA,EAAG,aAAa,WAAW,CAAC,EACtFc,EAAQ,SAAS,EAEjBA,EAAQ,EAKd,IAAMC,EAAW,IAAI,iBAAkBC,GAAc,CACnDA,EAAU,QAASC,GAAa,CAC1BA,EAAS,gBAAkB,eAAgBP,EAAWV,EAAG,aAAa,cAAc,GAAK,SAAS,EACjGc,EAAQd,EAAG,aAAa,WAAW,IAAMG,EAAU,KAAO,UAAU,CAC3E,CAAC,CACH,CAAC,EAEDY,EAAS,QAAQf,EAAI,CAAE,WAAY,GAAM,gBAAiB,CAAC,eAAgB,WAAW,CAAE,CAAC,EAEzFQ,EAAQ,IAAM,CACZO,EAAS,WAAW,CACtB,CAAC,CACH,CAAC,EAEDV,EAAO,UAAU,iBAAmBL,GAAO,CACzCA,EAAG,UAAU,IACX,OACA,QACA,gBACA,2BACA,+BACA,0DACA,mBACA,0GACA,uCACF,EACAA,EAAG,aAAa,OAAQ,OAAO,EAC/BA,EAAG,aAAa,YAAa,cAAc,EAC3C,IAAMkB,EAAW,CACf,WAAY,CAAC,yCAA0C,qCAAsC,uCAAuC,EACpI,SAAU,CAAC,WAAY,yCAA0C,qCAAsC,uCAAuC,CAChJ,EAEA,SAASR,EAAWC,EAAS,CAC3B,OAAW,CAACC,EAAGC,CAAK,IAAK,OAAO,QAAQK,CAAQ,EAC9ClB,EAAG,UAAU,OAAO,GAAGa,CAAK,EAE1B,OAAO,UAAU,eAAe,KAAKK,EAAUP,CAAO,GAAGX,EAAG,UAAU,IAAI,GAAGkB,EAASP,CAAO,CAAC,CACpG,CAEAD,EAAWV,EAAG,aAAa,kBAAkB,GAAK,YAAY,CAChE,CAAC,EAEDK,EAAO,UAAU,2BAA6BL,GAAO,CACnDA,EAAG,UAAU,IAAI,mBAAoB,WAAY,uCAAwC,yCAA0C,SAAU,OAAQ,WAAY,OAAQ,cAAc,EACvLA,EAAG,aAAa,OAAQ,MAAM,EAC9BA,EAAG,aAAa,YAAa,wBAAwB,CACvD,CAAC,CACH,CCxQA,IAAMmB,GAAM,KAAK,IACXC,GAAM,KAAK,IACXC,GAAQ,KAAK,MACbC,GAAQ,KAAK,MACbC,GAAeC,IAAM,CACzB,EAAGA,EACH,EAAGA,CACL,GACMC,GAAkB,CACtB,KAAM,QACN,MAAO,OACP,OAAQ,MACR,IAAK,QACP,EACA,SAASC,GAAMC,EAAOC,EAAOC,EAAK,CAChC,OAAOT,GAAIO,EAAOR,GAAIS,EAAOC,CAAG,CAAC,CACnC,CACA,SAASC,GAASF,EAAOG,EAAO,CAC9B,OAAO,OAAOH,GAAU,WAAaA,EAAMG,CAAK,EAAIH,CACtD,CACA,SAASI,GAAQC,EAAW,CAC1B,OAAOA,EAAU,MAAM,GAAG,EAAE,CAAC,CAC/B,CACA,SAASC,GAAaD,EAAW,CAC/B,OAAOA,EAAU,MAAM,GAAG,EAAE,CAAC,CAC/B,CACA,SAASE,GAAgBC,EAAM,CAC7B,OAAOA,IAAS,IAAM,IAAM,GAC9B,CACA,SAASC,GAAcD,EAAM,CAC3B,OAAOA,IAAS,IAAM,SAAW,OACnC,CACA,SAASE,GAAYL,EAAW,CAC9B,IAAMM,EAAYN,EAAU,CAAC,EAC7B,OAAOM,IAAc,KAAOA,IAAc,IAAM,IAAM,GACxD,CACA,SAASC,GAAiBP,EAAW,CACnC,OAAOE,GAAgBG,GAAYL,CAAS,CAAC,CAC/C,CACA,SAASQ,GAAkBR,EAAWS,EAAOC,EAAK,CAC5CA,IAAQ,SACVA,EAAM,IAER,IAAMC,EAAYV,GAAaD,CAAS,EAClCY,EAAgBL,GAAiBP,CAAS,EAC1Ca,EAAST,GAAcQ,CAAa,EACtCE,EAAoBF,IAAkB,IAAMD,KAAeD,EAAM,MAAQ,SAAW,QAAU,OAASC,IAAc,QAAU,SAAW,MAC9I,OAAIF,EAAM,UAAUI,CAAM,EAAIJ,EAAM,SAASI,CAAM,IACjDC,EAAoBC,GAAqBD,CAAiB,GAErD,CAACA,EAAmBC,GAAqBD,CAAiB,CAAC,CACpE,CACA,SAASE,GAAsBhB,EAAW,CACxC,IAAMiB,EAAoBF,GAAqBf,CAAS,EACxD,MAAO,CAACkB,GAA8BlB,CAAS,EAAGiB,EAAmBC,GAA8BD,CAAiB,CAAC,CACvH,CACA,SAASC,GAA8BlB,EAAW,CAChD,OAAOA,EAAU,SAAS,OAAO,EAAIA,EAAU,QAAQ,QAAS,KAAK,EAAIA,EAAU,QAAQ,MAAO,OAAO,CAC3G,CACA,IAAMmB,GAAc,CAAC,OAAQ,OAAO,EAC9BC,GAAc,CAAC,QAAS,MAAM,EAC9BC,GAAc,CAAC,MAAO,QAAQ,EAC9BC,GAAc,CAAC,SAAU,KAAK,EACpC,SAASC,GAAYC,EAAMC,EAASf,EAAK,CACvC,OAAQc,EAAM,CACZ,IAAK,MACL,IAAK,SACH,OAAId,EAAYe,EAAUL,GAAcD,GACjCM,EAAUN,GAAcC,GACjC,IAAK,OACL,IAAK,QACH,OAAOK,EAAUJ,GAAcC,GACjC,QACE,MAAO,CAAC,CACZ,CACF,CACA,SAASI,GAA0B1B,EAAW2B,EAAeC,EAAWlB,EAAK,CAC3E,IAAMC,EAAYV,GAAaD,CAAS,EACpC6B,EAAON,GAAYxB,GAAQC,CAAS,EAAG4B,IAAc,QAASlB,CAAG,EACrE,OAAIC,IACFkB,EAAOA,EAAK,IAAIL,GAAQA,EAAO,IAAMb,CAAS,EAC1CgB,IACFE,EAAOA,EAAK,OAAOA,EAAK,IAAIX,EAA6B,CAAC,IAGvDW,CACT,CACA,SAASd,GAAqBf,EAAW,CACvC,IAAMwB,EAAOzB,GAAQC,CAAS,EAC9B,OAAOR,GAAgBgC,CAAI,EAAIxB,EAAU,MAAMwB,EAAK,MAAM,CAC5D,CACA,SAASM,GAAoBC,EAAS,CACpC,MAAO,CACL,IAAK,EACL,MAAO,EACP,OAAQ,EACR,KAAM,EACN,GAAGA,CACL,CACF,CACA,SAASC,GAAiBD,EAAS,CACjC,OAAO,OAAOA,GAAY,SAAWD,GAAoBC,CAAO,EAAI,CAClE,IAAKA,EACL,MAAOA,EACP,OAAQA,EACR,KAAMA,CACR,CACF,CACA,SAASE,GAAiBC,EAAM,CAC9B,GAAM,CACJ,EAAAC,EACA,EAAAC,EACA,MAAAC,EACA,OAAAC,CACF,EAAIJ,EACJ,MAAO,CACL,MAAAG,EACA,OAAAC,EACA,IAAKF,EACL,KAAMD,EACN,MAAOA,EAAIE,EACX,OAAQD,EAAIE,EACZ,EAAAH,EACA,EAAAC,CACF,CACF,CClIA,SAASG,GAA2BC,EAAMC,EAAWC,EAAK,CACxD,GAAI,CACF,UAAAC,EACA,SAAAC,CACF,EAAIJ,EACEK,EAAWC,GAAYL,CAAS,EAChCM,EAAgBC,GAAiBP,CAAS,EAC1CQ,EAAcC,GAAcH,CAAa,EACzCI,EAAOC,GAAQX,CAAS,EACxBY,EAAaR,IAAa,IAC1BS,EAAUX,EAAU,EAAIA,EAAU,MAAQ,EAAIC,EAAS,MAAQ,EAC/DW,EAAUZ,EAAU,EAAIA,EAAU,OAAS,EAAIC,EAAS,OAAS,EACjEY,EAAcb,EAAUM,CAAW,EAAI,EAAIL,EAASK,CAAW,EAAI,EACrEQ,EACJ,OAAQN,EAAM,CACZ,IAAK,MACHM,EAAS,CACP,EAAGH,EACH,EAAGX,EAAU,EAAIC,EAAS,MAC5B,EACA,MACF,IAAK,SACHa,EAAS,CACP,EAAGH,EACH,EAAGX,EAAU,EAAIA,EAAU,MAC7B,EACA,MACF,IAAK,QACHc,EAAS,CACP,EAAGd,EAAU,EAAIA,EAAU,MAC3B,EAAGY,CACL,EACA,MACF,IAAK,OACHE,EAAS,CACP,EAAGd,EAAU,EAAIC,EAAS,MAC1B,EAAGW,CACL,EACA,MACF,QACEE,EAAS,CACP,EAAGd,EAAU,EACb,EAAGA,EAAU,CACf,CACJ,CACA,OAAQe,GAAajB,CAAS,EAAG,CAC/B,IAAK,QACHgB,EAAOV,CAAa,GAAKS,GAAed,GAAOW,EAAa,GAAK,GACjE,MACF,IAAK,MACHI,EAAOV,CAAa,GAAKS,GAAed,GAAOW,EAAa,GAAK,GACjE,KACJ,CACA,OAAOI,CACT,CAUA,eAAeE,GAAeC,EAAOC,EAAS,CAC5C,IAAIC,EACAD,IAAY,SACdA,EAAU,CAAC,GAEb,GAAM,CACJ,EAAAE,EACA,EAAAC,EACA,SAAAC,EACA,MAAAC,EACA,SAAAC,EACA,SAAAC,CACF,EAAIR,EACE,CACJ,SAAAS,EAAW,oBACX,aAAAC,EAAe,WACf,eAAAC,EAAiB,WACjB,YAAAC,EAAc,GACd,QAAAC,EAAU,CACZ,EAAIC,GAASb,EAASD,CAAK,EACrBe,EAAgBC,GAAiBH,CAAO,EAExCI,EAAUV,EAASK,EADND,IAAmB,WAAa,YAAc,WACbA,CAAc,EAC5DO,EAAqBC,GAAiB,MAAMd,EAAS,gBAAgB,CACzE,SAAWH,EAAwB,MAAOG,EAAS,WAAa,KAAO,OAASA,EAAS,UAAUY,CAAO,KAAO,MAAOf,EAAgCe,EAAUA,EAAQ,gBAAmB,MAAOZ,EAAS,oBAAsB,KAAO,OAASA,EAAS,mBAAmBE,EAAS,QAAQ,GAChS,SAAAE,EACA,aAAAC,EACA,SAAAF,CACF,CAAC,CAAC,EACIY,EAAOT,IAAmB,WAAa,CAC3C,EAAAR,EACA,EAAAC,EACA,MAAOE,EAAM,SAAS,MACtB,OAAQA,EAAM,SAAS,MACzB,EAAIA,EAAM,UACJe,EAAe,MAAOhB,EAAS,iBAAmB,KAAO,OAASA,EAAS,gBAAgBE,EAAS,QAAQ,GAC5Ge,EAAe,MAAOjB,EAAS,WAAa,KAAO,OAASA,EAAS,UAAUgB,CAAY,GAAO,MAAOhB,EAAS,UAAY,KAAO,OAASA,EAAS,SAASgB,CAAY,IAAO,CACvL,EAAG,EACH,EAAG,CACL,EAAI,CACF,EAAG,EACH,EAAG,CACL,EACME,EAAoBJ,GAAiBd,EAAS,sDAAwD,MAAMA,EAAS,sDAAsD,CAC/K,SAAAE,EACA,KAAAa,EACA,aAAAC,EACA,SAAAb,CACF,CAAC,EAAIY,CAAI,EACT,MAAO,CACL,KAAMF,EAAmB,IAAMK,EAAkB,IAAMR,EAAc,KAAOO,EAAY,EACxF,QAASC,EAAkB,OAASL,EAAmB,OAASH,EAAc,QAAUO,EAAY,EACpG,MAAOJ,EAAmB,KAAOK,EAAkB,KAAOR,EAAc,MAAQO,EAAY,EAC5F,OAAQC,EAAkB,MAAQL,EAAmB,MAAQH,EAAc,OAASO,EAAY,CAClG,CACF,CAGA,IAAME,GAAkB,GASlBC,GAAkB,MAAO1C,EAAWC,EAAU0C,IAAW,CAC7D,GAAM,CACJ,UAAA7C,EAAY,SACZ,SAAA2B,EAAW,WACX,WAAAmB,EAAa,CAAC,EACd,SAAAtB,CACF,EAAIqB,EACEE,EAA6BvB,EAAS,eAAiBA,EAAW,CACtE,GAAGA,EACH,eAAAN,EACF,EACMjB,EAAM,MAAOuB,EAAS,OAAS,KAAO,OAASA,EAAS,MAAMrB,CAAQ,GACxEsB,EAAQ,MAAMD,EAAS,gBAAgB,CACzC,UAAAtB,EACA,SAAAC,EACA,SAAAwB,CACF,CAAC,EACG,CACF,EAAAL,EACA,EAAAC,CACF,EAAIzB,GAA2B2B,EAAOzB,EAAWC,CAAG,EAChD+C,EAAoBhD,EACpBiD,EAAa,EACXC,EAAiB,CAAC,EACxB,QAASC,EAAI,EAAGA,EAAIL,EAAW,OAAQK,IAAK,CAC1C,IAAMC,EAAoBN,EAAWK,CAAC,EACtC,GAAI,CAACC,EACH,SAEF,GAAM,CACJ,KAAAC,EACA,GAAAC,CACF,EAAIF,EACE,CACJ,EAAGG,EACH,EAAGC,EACH,KAAAC,EACA,MAAAC,CACF,EAAI,MAAMJ,EAAG,CACX,EAAAhC,EACA,EAAAC,EACA,iBAAkBvB,EAClB,UAAWgD,EACX,SAAArB,EACA,eAAAuB,EACA,MAAAzB,EACA,SAAUsB,EACV,SAAU,CACR,UAAA7C,EACA,SAAAC,CACF,CACF,CAAC,EACDmB,EAAIiC,GAAwBjC,EAC5BC,EAAIiC,GAAwBjC,EAC5B2B,EAAeG,CAAI,EAAI,CACrB,GAAGH,EAAeG,CAAI,EACtB,GAAGI,CACL,EACIC,GAAST,EAAaN,KACxBM,IACI,OAAOS,GAAU,WACfA,EAAM,YACRV,EAAoBU,EAAM,WAExBA,EAAM,QACRjC,EAAQiC,EAAM,QAAU,GAAO,MAAMlC,EAAS,gBAAgB,CAC5D,UAAAtB,EACA,SAAAC,EACA,SAAAwB,CACF,CAAC,EAAI+B,EAAM,OAEZ,CACC,EAAApC,EACA,EAAAC,CACF,EAAIzB,GAA2B2B,EAAOuB,EAAmB/C,CAAG,GAE9DkD,EAAI,GAER,CACA,MAAO,CACL,EAAA7B,EACA,EAAAC,EACA,UAAWyB,EACX,SAAArB,EACA,eAAAuB,CACF,CACF,EAOMS,GAAQvC,IAAY,CACxB,KAAM,QACN,QAAAA,EACA,MAAM,GAAGD,EAAO,CACd,GAAM,CACJ,EAAAG,EACA,EAAAC,EACA,UAAAvB,EACA,MAAAyB,EACA,SAAAD,EACA,SAAAE,EACA,eAAAwB,CACF,EAAI/B,EAEE,CACJ,QAAAiB,EACA,QAAAJ,EAAU,CACZ,EAAIC,GAASb,EAASD,CAAK,GAAK,CAAC,EACjC,GAAIiB,GAAW,KACb,MAAO,CAAC,EAEV,IAAMF,EAAgBC,GAAiBH,CAAO,EACxChB,EAAS,CACb,EAAAM,EACA,EAAAC,CACF,EACMqC,EAAOrD,GAAiBP,CAAS,EACjC6D,EAASpD,GAAcmD,CAAI,EAC3BE,EAAkB,MAAMtC,EAAS,cAAcY,CAAO,EACtD2B,EAAUH,IAAS,IACnBI,EAAUD,EAAU,MAAQ,OAC5BE,EAAUF,EAAU,SAAW,QAC/BG,EAAaH,EAAU,eAAiB,cACxCI,EAAU1C,EAAM,UAAUoC,CAAM,EAAIpC,EAAM,UAAUmC,CAAI,EAAI5C,EAAO4C,CAAI,EAAInC,EAAM,SAASoC,CAAM,EAChGO,EAAYpD,EAAO4C,CAAI,EAAInC,EAAM,UAAUmC,CAAI,EAC/CS,EAAoB,MAAO7C,EAAS,iBAAmB,KAAO,OAASA,EAAS,gBAAgBY,CAAO,GACzGkC,EAAaD,EAAoBA,EAAkBH,CAAU,EAAI,GAGjE,CAACI,GAAc,CAAE,MAAO9C,EAAS,WAAa,KAAO,OAASA,EAAS,UAAU6C,CAAiB,MACpGC,EAAa5C,EAAS,SAASwC,CAAU,GAAKzC,EAAM,SAASoC,CAAM,GAErE,IAAMU,EAAoBJ,EAAU,EAAIC,EAAY,EAI9CI,EAAyBF,EAAa,EAAIR,EAAgBD,CAAM,EAAI,EAAI,EACxEY,EAAaC,GAAIxC,EAAc8B,CAAO,EAAGQ,CAAsB,EAC/DG,GAAaD,GAAIxC,EAAc+B,CAAO,EAAGO,CAAsB,EAI/DI,GAAQH,EACRI,GAAMP,EAAaR,EAAgBD,CAAM,EAAIc,GAC7CG,EAASR,EAAa,EAAIR,EAAgBD,CAAM,EAAI,EAAIU,EACxDQ,EAASC,GAAMJ,GAAOE,EAAQD,EAAG,EAMjCI,EAAkB,CAAC/B,EAAe,OAASjC,GAAajB,CAAS,GAAK,MAAQ8E,IAAWC,GAAUtD,EAAM,UAAUoC,CAAM,EAAI,GAAKiB,EAASF,GAAQH,EAAaE,IAAcb,EAAgBD,CAAM,EAAI,EAAI,EAC5MqB,EAAkBD,EAAkBH,EAASF,GAAQE,EAASF,GAAQE,EAASD,GAAM,EAC3F,MAAO,CACL,CAACjB,CAAI,EAAG5C,EAAO4C,CAAI,EAAIsB,EACvB,KAAM,CACJ,CAACtB,CAAI,EAAGmB,EACR,aAAcD,EAASC,EAASG,EAChC,GAAID,GAAmB,CACrB,gBAAAC,CACF,CACF,EACA,MAAOD,CACT,CACF,CACF,GA+GA,IAAME,GAAO,SAAUC,EAAS,CAC9B,OAAIA,IAAY,SACdA,EAAU,CAAC,GAEN,CACL,KAAM,OACN,QAAAA,EACA,MAAM,GAAGC,EAAO,CACd,IAAIC,EAAuBC,EAC3B,GAAM,CACJ,UAAAC,EACA,eAAAC,EACA,MAAAC,EACA,iBAAAC,EACA,SAAAC,EACA,SAAAC,CACF,EAAIR,EACE,CACJ,SAAUS,EAAgB,GAC1B,UAAWC,EAAiB,GAC5B,mBAAoBC,EACpB,iBAAAC,EAAmB,UACnB,0BAAAC,EAA4B,OAC5B,cAAAC,EAAgB,GAChB,GAAGC,CACL,EAAIC,GAASjB,EAASC,CAAK,EAM3B,IAAKC,EAAwBG,EAAe,QAAU,MAAQH,EAAsB,gBAClF,MAAO,CAAC,EAEV,IAAMgB,EAAOC,GAAQf,CAAS,EACxBgB,EAAkBC,GAAYd,CAAgB,EAC9Ce,EAAkBH,GAAQZ,CAAgB,IAAMA,EAChDgB,EAAM,MAAOf,EAAS,OAAS,KAAO,OAASA,EAAS,MAAMC,EAAS,QAAQ,GAC/Ee,EAAqBZ,IAAgCU,GAAmB,CAACP,EAAgB,CAACU,GAAqBlB,CAAgB,CAAC,EAAImB,GAAsBnB,CAAgB,GAC1KoB,EAA+Bb,IAA8B,OAC/D,CAACF,GAA+Be,GAClCH,EAAmB,KAAK,GAAGI,GAA0BrB,EAAkBQ,EAAeD,EAA2BS,CAAG,CAAC,EAEvH,IAAMM,EAAa,CAACtB,EAAkB,GAAGiB,CAAkB,EACrDM,EAAW,MAAMtB,EAAS,eAAeP,EAAOe,CAAqB,EACrEe,EAAY,CAAC,EACfC,IAAkB7B,EAAuBE,EAAe,OAAS,KAAO,OAASF,EAAqB,YAAc,CAAC,EAIzH,GAHIO,GACFqB,EAAU,KAAKD,EAASZ,CAAI,CAAC,EAE3BP,EAAgB,CAClB,IAAMsB,EAAQC,GAAkB9B,EAAWE,EAAOiB,CAAG,EACrDQ,EAAU,KAAKD,EAASG,EAAM,CAAC,CAAC,EAAGH,EAASG,EAAM,CAAC,CAAC,CAAC,CACvD,CAOA,GANAD,EAAgB,CAAC,GAAGA,EAAe,CACjC,UAAA5B,EACA,UAAA2B,CACF,CAAC,EAGG,CAACA,EAAU,MAAMb,GAAQA,GAAQ,CAAC,EAAG,CACvC,IAAIiB,GAAuBC,GAC3B,IAAMC,KAAeF,GAAwB9B,EAAe,OAAS,KAAO,OAAS8B,GAAsB,QAAU,GAAK,EACpHG,EAAgBT,EAAWQ,CAAS,EAC1C,GAAIC,IAEE,EAD4B3B,IAAmB,YAAcS,IAAoBC,GAAYiB,CAAa,EAAI,KAIlHN,EAAc,MAAMO,GAAKlB,GAAYkB,EAAE,SAAS,IAAMnB,EAAkBmB,EAAE,UAAU,CAAC,EAAI,EAAI,EAAI,GAE/F,MAAO,CACL,KAAM,CACJ,MAAOF,EACP,UAAWL,CACb,EACA,MAAO,CACL,UAAWM,CACb,CACF,EAMJ,IAAIE,GAAkBJ,GAAwBJ,EAAc,OAAOO,GAAKA,EAAE,UAAU,CAAC,GAAK,CAAC,EAAE,KAAK,CAACE,EAAGC,IAAMD,EAAE,UAAU,CAAC,EAAIC,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,IAAM,KAAO,OAASN,GAAsB,UAG1L,GAAI,CAACI,EACH,OAAQ3B,EAAkB,CACxB,IAAK,UACH,CACE,IAAI8B,GACJ,IAAMvC,GAAauC,GAAyBX,EAAc,OAAOO,GAAK,CACpE,GAAIZ,EAA8B,CAChC,IAAMiB,EAAkBvB,GAAYkB,EAAE,SAAS,EAC/C,OAAOK,IAAoBxB,GAG3BwB,IAAoB,GACtB,CACA,MAAO,EACT,CAAC,EAAE,IAAIL,GAAK,CAACA,EAAE,UAAWA,EAAE,UAAU,OAAOT,GAAYA,EAAW,CAAC,EAAE,OAAO,CAACe,EAAKf,KAAae,EAAMf,GAAU,CAAC,CAAC,CAAC,EAAE,KAAK,CAACW,EAAGC,IAAMD,EAAE,CAAC,EAAIC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAM,KAAO,OAASC,GAAuB,CAAC,EAC7LvC,IACFoC,EAAiBpC,GAEnB,KACF,CACF,IAAK,mBACHoC,EAAiBjC,EACjB,KACJ,CAEF,GAAIH,IAAcoC,EAChB,MAAO,CACL,MAAO,CACL,UAAWA,CACb,CACF,CAEJ,CACA,MAAO,CAAC,CACV,CACF,CACF,EA2MA,IAAMM,GAA2B,IAAI,IAAI,CAAC,OAAQ,KAAK,CAAC,EAKxD,eAAeC,GAAqBC,EAAOC,EAAS,CAClD,GAAM,CACJ,UAAAC,EACA,SAAAC,EACA,SAAAC,CACF,EAAIJ,EACEK,EAAM,MAAOF,EAAS,OAAS,KAAO,OAASA,EAAS,MAAMC,EAAS,QAAQ,GAC/EE,EAAOC,GAAQL,CAAS,EACxBM,EAAYC,GAAaP,CAAS,EAClCQ,EAAaC,GAAYT,CAAS,IAAM,IACxCU,EAAgBd,GAAY,IAAIQ,CAAI,EAAI,GAAK,EAC7CO,EAAiBR,GAAOK,EAAa,GAAK,EAC1CI,EAAWC,GAASd,EAASD,CAAK,EAGpC,CACF,SAAAgB,EACA,UAAAC,EACA,cAAAC,CACF,EAAI,OAAOJ,GAAa,SAAW,CACjC,SAAUA,EACV,UAAW,EACX,cAAe,IACjB,EAAI,CACF,SAAUA,EAAS,UAAY,EAC/B,UAAWA,EAAS,WAAa,EACjC,cAAeA,EAAS,aAC1B,EACA,OAAIN,GAAa,OAAOU,GAAkB,WACxCD,EAAYT,IAAc,MAAQU,EAAgB,GAAKA,GAElDR,EAAa,CAClB,EAAGO,EAAYJ,EACf,EAAGG,EAAWJ,CAChB,EAAI,CACF,EAAGI,EAAWJ,EACd,EAAGK,EAAYJ,CACjB,CACF,CASA,IAAMM,GAAS,SAAUlB,EAAS,CAChC,OAAIA,IAAY,SACdA,EAAU,GAEL,CACL,KAAM,SACN,QAAAA,EACA,MAAM,GAAGD,EAAO,CACd,IAAIoB,EAAuBC,EAC3B,GAAM,CACJ,EAAAC,EACA,EAAAC,EACA,UAAArB,EACA,eAAAsB,CACF,EAAIxB,EACEyB,EAAa,MAAM1B,GAAqBC,EAAOC,CAAO,EAI5D,OAAIC,MAAgBkB,EAAwBI,EAAe,SAAW,KAAO,OAASJ,EAAsB,aAAeC,EAAwBG,EAAe,QAAU,MAAQH,EAAsB,gBACjM,CAAC,EAEH,CACL,EAAGC,EAAIG,EAAW,EAClB,EAAGF,EAAIE,EAAW,EAClB,KAAM,CACJ,GAAGA,EACH,UAAAvB,CACF,CACF,CACF,CACF,CACF,EAOMwB,GAAQ,SAAUzB,EAAS,CAC/B,OAAIA,IAAY,SACdA,EAAU,CAAC,GAEN,CACL,KAAM,QACN,QAAAA,EACA,MAAM,GAAGD,EAAO,CACd,GAAM,CACJ,EAAAsB,EACA,EAAAC,EACA,UAAArB,EACA,SAAAC,CACF,EAAIH,EACE,CACJ,SAAU2B,EAAgB,GAC1B,UAAWC,EAAiB,GAC5B,QAAAC,EAAU,CACR,GAAIC,GAAQ,CACV,GAAI,CACF,EAAAR,EACA,EAAAC,CACF,EAAIO,EACJ,MAAO,CACL,EAAAR,EACA,EAAAC,CACF,CACF,CACF,EACA,GAAGQ,CACL,EAAIhB,GAASd,EAASD,CAAK,EACrBgC,EAAS,CACb,EAAAV,EACA,EAAAC,CACF,EACMU,EAAW,MAAM9B,EAAS,eAAeH,EAAO+B,CAAqB,EACrEd,EAAYN,GAAYJ,GAAQL,CAAS,CAAC,EAC1Cc,EAAWkB,GAAgBjB,CAAS,EACtCkB,EAAgBH,EAAOhB,CAAQ,EAC/BoB,EAAiBJ,EAAOf,CAAS,EACrC,GAAIU,EAAe,CACjB,IAAMU,EAAUrB,IAAa,IAAM,MAAQ,OACrCsB,EAAUtB,IAAa,IAAM,SAAW,QACxCuB,EAAMJ,EAAgBF,EAASI,CAAO,EACtCG,EAAML,EAAgBF,EAASK,CAAO,EAC5CH,EAAgBM,GAAMF,EAAKJ,EAAeK,CAAG,CAC/C,CACA,GAAIZ,EAAgB,CAClB,IAAMS,EAAUpB,IAAc,IAAM,MAAQ,OACtCqB,EAAUrB,IAAc,IAAM,SAAW,QACzCsB,EAAMH,EAAiBH,EAASI,CAAO,EACvCG,EAAMJ,EAAiBH,EAASK,CAAO,EAC7CF,EAAiBK,GAAMF,EAAKH,EAAgBI,CAAG,CACjD,CACA,IAAME,EAAgBb,EAAQ,GAAG,CAC/B,GAAG7B,EACH,CAACgB,CAAQ,EAAGmB,EACZ,CAAClB,CAAS,EAAGmB,CACf,CAAC,EACD,MAAO,CACL,GAAGM,EACH,KAAM,CACJ,EAAGA,EAAc,EAAIpB,EACrB,EAAGoB,EAAc,EAAInB,EACrB,QAAS,CACP,CAACP,CAAQ,EAAGW,EACZ,CAACV,CAAS,EAAGW,CACf,CACF,CACF,CACF,CACF,CACF,EA4EA,IAAMe,GAAO,SAAUC,EAAS,CAC9B,OAAIA,IAAY,SACdA,EAAU,CAAC,GAEN,CACL,KAAM,OACN,QAAAA,EACA,MAAM,GAAGC,EAAO,CACd,IAAIC,EAAuBC,EAC3B,GAAM,CACJ,UAAAC,EACA,MAAAC,EACA,SAAAC,EACA,SAAAC,CACF,EAAIN,EACE,CACJ,MAAAO,EAAQ,IAAM,CAAC,EACf,GAAGC,CACL,EAAIC,GAASV,EAASC,CAAK,EACrBU,EAAW,MAAML,EAAS,eAAeL,EAAOQ,CAAqB,EACrEG,EAAOC,GAAQT,CAAS,EACxBU,EAAYC,GAAaX,CAAS,EAClCY,EAAUC,GAAYb,CAAS,IAAM,IACrC,CACJ,MAAAc,EACA,OAAAC,CACF,EAAId,EAAM,SACNe,EACAC,EACAT,IAAS,OAASA,IAAS,UAC7BQ,EAAaR,EACbS,EAAYP,KAAgB,MAAOR,EAAS,OAAS,KAAO,OAASA,EAAS,MAAMC,EAAS,QAAQ,GAAM,QAAU,OAAS,OAAS,UAEvIc,EAAYT,EACZQ,EAAaN,IAAc,MAAQ,MAAQ,UAE7C,IAAMQ,EAAwBH,EAASR,EAAS,IAAMA,EAAS,OACzDY,EAAuBL,EAAQP,EAAS,KAAOA,EAAS,MACxDa,EAA0BC,GAAIN,EAASR,EAASS,CAAU,EAAGE,CAAqB,EAClFI,EAAyBD,GAAIP,EAAQP,EAASU,CAAS,EAAGE,CAAoB,EAC9EI,EAAU,CAAC1B,EAAM,eAAe,MAClC2B,EAAkBJ,EAClBK,EAAiBH,EAOrB,IANKxB,EAAwBD,EAAM,eAAe,QAAU,MAAQC,EAAsB,QAAQ,IAChG2B,EAAiBN,IAEdpB,EAAyBF,EAAM,eAAe,QAAU,MAAQE,EAAuB,QAAQ,IAClGyB,EAAkBN,GAEhBK,GAAW,CAACb,EAAW,CACzB,IAAMgB,EAAOC,GAAIpB,EAAS,KAAM,CAAC,EAC3BqB,GAAOD,GAAIpB,EAAS,MAAO,CAAC,EAC5BsB,GAAOF,GAAIpB,EAAS,IAAK,CAAC,EAC1BuB,GAAOH,GAAIpB,EAAS,OAAQ,CAAC,EAC/BK,EACFa,EAAiBX,EAAQ,GAAKY,IAAS,GAAKE,KAAS,EAAIF,EAAOE,GAAOD,GAAIpB,EAAS,KAAMA,EAAS,KAAK,GAExGiB,EAAkBT,EAAS,GAAKc,KAAS,GAAKC,KAAS,EAAID,GAAOC,GAAOH,GAAIpB,EAAS,IAAKA,EAAS,MAAM,EAE9G,CACA,MAAMH,EAAM,CACV,GAAGP,EACH,eAAA4B,EACA,gBAAAD,CACF,CAAC,EACD,IAAMO,EAAiB,MAAM7B,EAAS,cAAcC,EAAS,QAAQ,EACrE,OAAIW,IAAUiB,EAAe,OAAShB,IAAWgB,EAAe,OACvD,CACL,MAAO,CACL,MAAO,EACT,CACF,EAEK,CAAC,CACV,CACF,CACF,EC/hCA,SAASC,IAAY,CACnB,OAAO,OAAO,OAAW,GAC3B,CACA,SAASC,GAAYC,EAAM,CACzB,OAAIC,GAAOD,CAAI,GACLA,EAAK,UAAY,IAAI,YAAY,EAKpC,WACT,CACA,SAASE,GAAUF,EAAM,CACvB,IAAIG,EACJ,OAAQH,GAAQ,OAASG,EAAsBH,EAAK,gBAAkB,KAAO,OAASG,EAAoB,cAAgB,MAC5H,CACA,SAASC,GAAmBJ,EAAM,CAChC,IAAIK,EACJ,OAAQA,GAAQJ,GAAOD,CAAI,EAAIA,EAAK,cAAgBA,EAAK,WAAa,OAAO,WAAa,KAAO,OAASK,EAAK,eACjH,CACA,SAASJ,GAAOK,EAAO,CACrB,OAAKR,GAAU,EAGRQ,aAAiB,MAAQA,aAAiBJ,GAAUI,CAAK,EAAE,KAFzD,EAGX,CACA,SAASC,GAAUD,EAAO,CACxB,OAAKR,GAAU,EAGRQ,aAAiB,SAAWA,aAAiBJ,GAAUI,CAAK,EAAE,QAF5D,EAGX,CACA,SAASE,GAAcF,EAAO,CAC5B,OAAKR,GAAU,EAGRQ,aAAiB,aAAeA,aAAiBJ,GAAUI,CAAK,EAAE,YAFhE,EAGX,CACA,SAASG,GAAaH,EAAO,CAC3B,MAAI,CAACR,GAAU,GAAK,OAAO,WAAe,IACjC,GAEFQ,aAAiB,YAAcA,aAAiBJ,GAAUI,CAAK,EAAE,UAC1E,CACA,SAASI,GAAkBC,EAAS,CAClC,GAAM,CACJ,SAAAC,EACA,UAAAC,EACA,UAAAC,EACA,QAAAC,CACF,EAAIC,GAAiBL,CAAO,EAC5B,MAAO,kCAAkC,KAAKC,EAAWE,EAAYD,CAAS,GAAKE,IAAY,UAAYA,IAAY,UACzH,CACA,SAASE,GAAeN,EAAS,CAC/B,MAAO,kBAAkB,KAAKZ,GAAYY,CAAO,CAAC,CACpD,CACA,SAASO,GAAWP,EAAS,CAC3B,GAAI,CACF,GAAIA,EAAQ,QAAQ,eAAe,EACjC,MAAO,EAEX,MAAa,CAEb,CACA,GAAI,CACF,OAAOA,EAAQ,QAAQ,QAAQ,CACjC,MAAa,CACX,MAAO,EACT,CACF,CACA,IAAMQ,GAAe,sDACfC,GAAY,8BACZC,GAAYf,GAAS,CAAC,CAACA,GAASA,IAAU,OAC5CgB,GACJ,SAASC,GAAkBC,EAAc,CACvC,IAAMC,EAAMlB,GAAUiB,CAAY,EAAIR,GAAiBQ,CAAY,EAAIA,EAIvE,OAAOH,GAAUI,EAAI,SAAS,GAAKJ,GAAUI,EAAI,SAAS,GAAKJ,GAAUI,EAAI,KAAK,GAAKJ,GAAUI,EAAI,MAAM,GAAKJ,GAAUI,EAAI,WAAW,GAAK,CAACC,GAAS,IAAML,GAAUI,EAAI,cAAc,GAAKJ,GAAUI,EAAI,MAAM,IAAMN,GAAa,KAAKM,EAAI,YAAc,EAAE,GAAKL,GAAU,KAAKK,EAAI,SAAW,EAAE,CACtS,CACA,SAASE,GAAmBhB,EAAS,CACnC,IAAIiB,EAAcC,GAAclB,CAAO,EACvC,KAAOH,GAAcoB,CAAW,GAAK,CAACE,GAAsBF,CAAW,GAAG,CACxE,GAAIL,GAAkBK,CAAW,EAC/B,OAAOA,EACF,GAAIV,GAAWU,CAAW,EAC/B,OAAO,KAETA,EAAcC,GAAcD,CAAW,CACzC,CACA,OAAO,IACT,CACA,SAASF,IAAW,CAClB,OAAIJ,IAAiB,OACnBA,GAAgB,OAAO,IAAQ,KAAe,IAAI,UAAY,IAAI,SAAS,0BAA2B,MAAM,GAEvGA,EACT,CACA,SAASQ,GAAsB9B,EAAM,CACnC,MAAO,0BAA0B,KAAKD,GAAYC,CAAI,CAAC,CACzD,CACA,SAASgB,GAAiBL,EAAS,CACjC,OAAOT,GAAUS,CAAO,EAAE,iBAAiBA,CAAO,CACpD,CACA,SAASoB,GAAcpB,EAAS,CAC9B,OAAIJ,GAAUI,CAAO,EACZ,CACL,WAAYA,EAAQ,WACpB,UAAWA,EAAQ,SACrB,EAEK,CACL,WAAYA,EAAQ,QACpB,UAAWA,EAAQ,OACrB,CACF,CACA,SAASkB,GAAc7B,EAAM,CAC3B,GAAID,GAAYC,CAAI,IAAM,OACxB,OAAOA,EAET,IAAMgC,EAENhC,EAAK,cAELA,EAAK,YAELS,GAAaT,CAAI,GAAKA,EAAK,MAE3BI,GAAmBJ,CAAI,EACvB,OAAOS,GAAauB,CAAM,EAAIA,EAAO,KAAOA,CAC9C,CACA,SAASC,GAA2BjC,EAAM,CACxC,IAAMkC,EAAaL,GAAc7B,CAAI,EACrC,OAAI8B,GAAsBI,CAAU,EAC3BlC,EAAK,cAAgBA,EAAK,cAAc,KAAOA,EAAK,KAEzDQ,GAAc0B,CAAU,GAAKxB,GAAkBwB,CAAU,EACpDA,EAEFD,GAA2BC,CAAU,CAC9C,CACA,SAASC,GAAqBnC,EAAMoC,EAAMC,EAAiB,CACzD,IAAIC,EACAF,IAAS,SACXA,EAAO,CAAC,GAENC,IAAoB,SACtBA,EAAkB,IAEpB,IAAME,EAAqBN,GAA2BjC,CAAI,EACpDwC,EAASD,MAAyBD,EAAuBtC,EAAK,gBAAkB,KAAO,OAASsC,EAAqB,MACrHG,EAAMvC,GAAUqC,CAAkB,EACxC,GAAIC,EAAQ,CACV,IAAME,EAAeC,GAAgBF,CAAG,EACxC,OAAOL,EAAK,OAAOK,EAAKA,EAAI,gBAAkB,CAAC,EAAG/B,GAAkB6B,CAAkB,EAAIA,EAAqB,CAAC,EAAGG,GAAgBL,EAAkBF,GAAqBO,CAAY,EAAI,CAAC,CAAC,CAC9L,KACE,QAAON,EAAK,OAAOG,EAAoBJ,GAAqBI,EAAoB,CAAC,EAAGF,CAAe,CAAC,CAExG,CACA,SAASM,GAAgBF,EAAK,CAC5B,OAAOA,EAAI,QAAU,OAAO,eAAeA,EAAI,MAAM,EAAIA,EAAI,aAAe,IAC9E,CC7JA,SAASG,GAAiBC,EAAS,CACjC,IAAMC,EAAMC,GAAmBF,CAAO,EAGlCG,EAAQ,WAAWF,EAAI,KAAK,GAAK,EACjCG,EAAS,WAAWH,EAAI,MAAM,GAAK,EACjCI,EAAYC,GAAcN,CAAO,EACjCO,EAAcF,EAAYL,EAAQ,YAAcG,EAChDK,EAAeH,EAAYL,EAAQ,aAAeI,EAClDK,EAAiBC,GAAMP,CAAK,IAAMI,GAAeG,GAAMN,CAAM,IAAMI,EACzE,OAAIC,IACFN,EAAQI,EACRH,EAASI,GAEJ,CACL,MAAAL,EACA,OAAAC,EACA,EAAGK,CACL,CACF,CAEA,SAASE,GAAcX,EAAS,CAC9B,OAAQY,GAAUZ,CAAO,EAA6BA,EAAzBA,EAAQ,cACvC,CAEA,SAASa,GAASb,EAAS,CACzB,IAAMc,EAAaH,GAAcX,CAAO,EACxC,GAAI,CAACM,GAAcQ,CAAU,EAC3B,OAAOC,GAAa,CAAC,EAEvB,IAAMC,EAAOF,EAAW,sBAAsB,EACxC,CACJ,MAAAX,EACA,OAAAC,EACA,EAAAa,CACF,EAAIlB,GAAiBe,CAAU,EAC3BI,GAAKD,EAAIP,GAAMM,EAAK,KAAK,EAAIA,EAAK,OAASb,EAC3CgB,GAAKF,EAAIP,GAAMM,EAAK,MAAM,EAAIA,EAAK,QAAUZ,EAIjD,OAAI,CAACc,GAAK,CAAC,OAAO,SAASA,CAAC,KAC1BA,EAAI,IAEF,CAACC,GAAK,CAAC,OAAO,SAASA,CAAC,KAC1BA,EAAI,GAEC,CACL,EAAAD,EACA,EAAAC,CACF,CACF,CAEA,IAAMC,GAAyBL,GAAa,CAAC,EAC7C,SAASM,GAAiBrB,EAAS,CACjC,IAAMsB,EAAMC,GAAUvB,CAAO,EAC7B,MAAI,CAACwB,GAAS,GAAK,CAACF,EAAI,eACfF,GAEF,CACL,EAAGE,EAAI,eAAe,WACtB,EAAGA,EAAI,eAAe,SACxB,CACF,CACA,SAASG,GAAuBzB,EAAS0B,EAASC,EAAsB,CAItE,OAHID,IAAY,SACdA,EAAU,IAER,CAACC,GAAwBD,GAAWC,IAAyBJ,GAAUvB,CAAO,EACzE,GAEF0B,CACT,CAEA,SAASE,GAAsB5B,EAAS6B,EAAcC,EAAiBC,EAAc,CAC/EF,IAAiB,SACnBA,EAAe,IAEbC,IAAoB,SACtBA,EAAkB,IAEpB,IAAME,EAAahC,EAAQ,sBAAsB,EAC3Cc,EAAaH,GAAcX,CAAO,EACpCiC,EAAQlB,GAAa,CAAC,EACtBc,IACEE,EACEnB,GAAUmB,CAAY,IACxBE,EAAQpB,GAASkB,CAAY,GAG/BE,EAAQpB,GAASb,CAAO,GAG5B,IAAMkC,EAAgBT,GAAuBX,EAAYgB,EAAiBC,CAAY,EAAIV,GAAiBP,CAAU,EAAIC,GAAa,CAAC,EACnIG,GAAKc,EAAW,KAAOE,EAAc,GAAKD,EAAM,EAChDd,GAAKa,EAAW,IAAME,EAAc,GAAKD,EAAM,EAC/C9B,EAAQ6B,EAAW,MAAQC,EAAM,EACjC7B,EAAS4B,EAAW,OAASC,EAAM,EACvC,GAAInB,EAAY,CACd,IAAMQ,EAAMC,GAAUT,CAAU,EAC1BqB,EAAYJ,GAAgBnB,GAAUmB,CAAY,EAAIR,GAAUQ,CAAY,EAAIA,EAClFK,EAAad,EACbe,EAAgBC,GAAgBF,CAAU,EAC9C,KAAOC,GAAiBN,GAAgBI,IAAcC,GAAY,CAChE,IAAMG,EAAc1B,GAASwB,CAAa,EACpCG,EAAaH,EAAc,sBAAsB,EACjDpC,EAAMC,GAAmBmC,CAAa,EACtCI,EAAOD,EAAW,MAAQH,EAAc,WAAa,WAAWpC,EAAI,WAAW,GAAKsC,EAAY,EAChGG,EAAMF,EAAW,KAAOH,EAAc,UAAY,WAAWpC,EAAI,UAAU,GAAKsC,EAAY,EAClGrB,GAAKqB,EAAY,EACjBpB,GAAKoB,EAAY,EACjBpC,GAASoC,EAAY,EACrBnC,GAAUmC,EAAY,EACtBrB,GAAKuB,EACLtB,GAAKuB,EACLN,EAAab,GAAUc,CAAa,EACpCA,EAAgBC,GAAgBF,CAAU,CAC5C,CACF,CACA,OAAOO,GAAiB,CACtB,MAAAxC,EACA,OAAAC,EACA,EAAAc,EACA,EAAAC,CACF,CAAC,CACH,CAIA,SAASyB,GAAoB5C,EAASgB,EAAM,CAC1C,IAAM6B,EAAaC,GAAc9C,CAAO,EAAE,WAC1C,OAAKgB,EAGEA,EAAK,KAAO6B,EAFVjB,GAAsBmB,GAAmB/C,CAAO,CAAC,EAAE,KAAO6C,CAGrE,CAEA,SAASG,GAAcC,EAAiBC,EAAQ,CAC9C,IAAMC,EAAWF,EAAgB,sBAAsB,EACjD/B,EAAIiC,EAAS,KAAOD,EAAO,WAAaN,GAAoBK,EAAiBE,CAAQ,EACrFhC,EAAIgC,EAAS,IAAMD,EAAO,UAChC,MAAO,CACL,EAAAhC,EACA,EAAAC,CACF,CACF,CAEA,SAASiC,GAAsDC,EAAM,CACnE,GAAI,CACF,SAAAC,EACA,KAAAtC,EACA,aAAAe,EACA,SAAAwB,CACF,EAAIF,EACE3B,EAAU6B,IAAa,QACvBN,EAAkBF,GAAmBhB,CAAY,EACjDyB,EAAWF,EAAWG,GAAWH,EAAS,QAAQ,EAAI,GAC5D,GAAIvB,IAAiBkB,GAAmBO,GAAY9B,EAClD,OAAOV,EAET,IAAIkC,EAAS,CACX,WAAY,EACZ,UAAW,CACb,EACIjB,EAAQlB,GAAa,CAAC,EACpB2C,EAAU3C,GAAa,CAAC,EACxB4C,EAA0BrD,GAAcyB,CAAY,EAC1D,IAAI4B,GAA2B,CAACA,GAA2B,CAACjC,MACtDkC,GAAY7B,CAAY,IAAM,QAAU8B,GAAkBZ,CAAe,KAC3EC,EAASJ,GAAcf,CAAY,GAEjC4B,GAAyB,CAC3B,IAAMG,EAAalC,GAAsBG,CAAY,EACrDE,EAAQpB,GAASkB,CAAY,EAC7B2B,EAAQ,EAAII,EAAW,EAAI/B,EAAa,WACxC2B,EAAQ,EAAII,EAAW,EAAI/B,EAAa,SAC1C,CAEF,IAAMgC,EAAad,GAAmB,CAACU,GAA2B,CAACjC,EAAUsB,GAAcC,EAAiBC,CAAM,EAAInC,GAAa,CAAC,EACpI,MAAO,CACL,MAAOC,EAAK,MAAQiB,EAAM,EAC1B,OAAQjB,EAAK,OAASiB,EAAM,EAC5B,EAAGjB,EAAK,EAAIiB,EAAM,EAAIiB,EAAO,WAAajB,EAAM,EAAIyB,EAAQ,EAAIK,EAAW,EAC3E,EAAG/C,EAAK,EAAIiB,EAAM,EAAIiB,EAAO,UAAYjB,EAAM,EAAIyB,EAAQ,EAAIK,EAAW,CAC5E,CACF,CAEA,SAASC,GAAehE,EAAS,CAC/B,OAAO,MAAM,KAAKA,EAAQ,eAAe,CAAC,CAC5C,CAIA,SAASiE,GAAgBjE,EAAS,CAChC,IAAMkE,EAAOnB,GAAmB/C,CAAO,EACjCkD,EAASJ,GAAc9C,CAAO,EAC9BmE,EAAOnE,EAAQ,cAAc,KAC7BG,EAAQiE,GAAIF,EAAK,YAAaA,EAAK,YAAaC,EAAK,YAAaA,EAAK,WAAW,EAClF/D,EAASgE,GAAIF,EAAK,aAAcA,EAAK,aAAcC,EAAK,aAAcA,EAAK,YAAY,EACzFjD,EAAI,CAACgC,EAAO,WAAaN,GAAoB5C,CAAO,EAClDmB,EAAI,CAAC+B,EAAO,UAClB,OAAIhD,GAAmBiE,CAAI,EAAE,YAAc,QACzCjD,GAAKkD,GAAIF,EAAK,YAAaC,EAAK,WAAW,EAAIhE,GAE1C,CACL,MAAAA,EACA,OAAAC,EACA,EAAAc,EACA,EAAAC,CACF,CACF,CAKA,IAAMkD,GAAgB,GACtB,SAASC,GAAgBtE,EAASuD,EAAU,CAC1C,IAAMjC,EAAMC,GAAUvB,CAAO,EACvBkE,EAAOnB,GAAmB/C,CAAO,EACjCuE,EAAiBjD,EAAI,eACvBnB,EAAQ+D,EAAK,YACb9D,EAAS8D,EAAK,aACdhD,EAAI,EACJC,EAAI,EACR,GAAIoD,EAAgB,CAClBpE,EAAQoE,EAAe,MACvBnE,EAASmE,EAAe,OACxB,IAAMC,EAAsBhD,GAAS,GACjC,CAACgD,GAAuBA,GAAuBjB,IAAa,WAC9DrC,EAAIqD,EAAe,WACnBpD,EAAIoD,EAAe,UAEvB,CACA,IAAME,EAAmB7B,GAAoBsB,CAAI,EAIjD,GAAIO,GAAoB,EAAG,CACzB,IAAMC,EAAMR,EAAK,cACXC,EAAOO,EAAI,KACXC,EAAa,iBAAiBR,CAAI,EAClCS,EAAmBF,EAAI,aAAe,cAAe,WAAWC,EAAW,UAAU,EAAI,WAAWA,EAAW,WAAW,GAAK,EAC/HE,EAA+B,KAAK,IAAIX,EAAK,YAAcC,EAAK,YAAcS,CAAgB,EAChGC,GAAgCR,KAClClE,GAAS0E,EAEb,MAAWJ,GAAoBJ,KAG7BlE,GAASsE,GAEX,MAAO,CACL,MAAAtE,EACA,OAAAC,EACA,EAAAc,EACA,EAAAC,CACF,CACF,CAGA,SAAS2D,GAA2B9E,EAASuD,EAAU,CACrD,IAAMvB,EAAaJ,GAAsB5B,EAAS,GAAMuD,IAAa,OAAO,EACtEb,EAAMV,EAAW,IAAMhC,EAAQ,UAC/ByC,EAAOT,EAAW,KAAOhC,EAAQ,WACjCiC,EAAQ3B,GAAcN,CAAO,EAAIa,GAASb,CAAO,EAAIe,GAAa,CAAC,EACnEZ,EAAQH,EAAQ,YAAciC,EAAM,EACpC7B,EAASJ,EAAQ,aAAeiC,EAAM,EACtCf,EAAIuB,EAAOR,EAAM,EACjBd,EAAIuB,EAAMT,EAAM,EACtB,MAAO,CACL,MAAA9B,EACA,OAAAC,EACA,EAAAc,EACA,EAAAC,CACF,CACF,CACA,SAAS4D,GAAkC/E,EAASgF,EAAkBzB,EAAU,CAC9E,IAAIvC,EACJ,GAAIgE,IAAqB,WACvBhE,EAAOsD,GAAgBtE,EAASuD,CAAQ,UAC/ByB,IAAqB,WAC9BhE,EAAOiD,GAAgBlB,GAAmB/C,CAAO,CAAC,UACzCY,GAAUoE,CAAgB,EACnChE,EAAO8D,GAA2BE,EAAkBzB,CAAQ,MACvD,CACL,IAAMrB,EAAgBb,GAAiBrB,CAAO,EAC9CgB,EAAO,CACL,EAAGgE,EAAiB,EAAI9C,EAAc,EACtC,EAAG8C,EAAiB,EAAI9C,EAAc,EACtC,MAAO8C,EAAiB,MACxB,OAAQA,EAAiB,MAC3B,CACF,CACA,OAAOrC,GAAiB3B,CAAI,CAC9B,CACA,SAASiE,GAAyBjF,EAASkF,EAAU,CACnD,IAAMC,EAAaC,GAAcpF,CAAO,EACxC,OAAImF,IAAeD,GAAY,CAACtE,GAAUuE,CAAU,GAAKE,GAAsBF,CAAU,EAChF,GAEFjF,GAAmBiF,CAAU,EAAE,WAAa,SAAWF,GAAyBE,EAAYD,CAAQ,CAC7G,CAKA,SAASI,GAA4BtF,EAASuF,EAAO,CACnD,IAAMC,EAAeD,EAAM,IAAIvF,CAAO,EACtC,GAAIwF,EACF,OAAOA,EAET,IAAIC,EAASC,GAAqB1F,EAAS,CAAC,EAAG,EAAK,EAAE,OAAO2F,GAAM/E,GAAU+E,CAAE,GAAK/B,GAAY+B,CAAE,IAAM,MAAM,EAC1GC,EAAsC,KACpCC,EAAiB3F,GAAmBF,CAAO,EAAE,WAAa,QAC5D8F,EAAcD,EAAiBT,GAAcpF,CAAO,EAAIA,EAG5D,KAAOY,GAAUkF,CAAW,GAAK,CAACT,GAAsBS,CAAW,GAAG,CACpE,IAAMC,EAAgB7F,GAAmB4F,CAAW,EAC9CE,EAA0BC,GAAkBH,CAAW,EACzD,CAACE,GAA2BD,EAAc,WAAa,UACzDH,EAAsC,OAEVC,EAAiB,CAACG,GAA2B,CAACJ,EAAsC,CAACI,GAA2BD,EAAc,WAAa,UAAY,CAAC,CAACH,IAAwCA,EAAoC,WAAa,YAAcA,EAAoC,WAAa,UAAY/B,GAAkBiC,CAAW,GAAK,CAACE,GAA2Bf,GAAyBjF,EAAS8F,CAAW,GAGpcL,EAASA,EAAO,OAAOS,GAAYA,IAAaJ,CAAW,EAG3DF,EAAsCG,EAExCD,EAAcV,GAAcU,CAAW,CACzC,CACA,OAAAP,EAAM,IAAIvF,EAASyF,CAAM,EAClBA,CACT,CAIA,SAASU,GAAgB9C,EAAM,CAC7B,GAAI,CACF,QAAArD,EACA,SAAAoG,EACA,aAAAC,EACA,SAAA9C,CACF,EAAIF,EAEEiD,EAAoB,CAAC,GADMF,IAAa,oBAAsB3C,GAAWzD,CAAO,EAAI,CAAC,EAAIsF,GAA4BtF,EAAS,KAAK,EAAE,EAAI,CAAC,EAAE,OAAOoG,CAAQ,EACzGC,CAAY,EAC9DE,EAAYxB,GAAkC/E,EAASsG,EAAkB,CAAC,EAAG/C,CAAQ,EACvFb,EAAM6D,EAAU,IAChBC,EAAQD,EAAU,MAClBE,EAASF,EAAU,OACnB9D,EAAO8D,EAAU,KACrB,QAASG,EAAI,EAAGA,EAAIJ,EAAkB,OAAQI,IAAK,CACjD,IAAM1F,EAAO+D,GAAkC/E,EAASsG,EAAkBI,CAAC,EAAGnD,CAAQ,EACtFb,EAAM0B,GAAIpD,EAAK,IAAK0B,CAAG,EACvB8D,EAAQG,GAAI3F,EAAK,MAAOwF,CAAK,EAC7BC,EAASE,GAAI3F,EAAK,OAAQyF,CAAM,EAChChE,EAAO2B,GAAIpD,EAAK,KAAMyB,CAAI,CAC5B,CACA,MAAO,CACL,MAAO+D,EAAQ/D,EACf,OAAQgE,EAAS/D,EACjB,EAAGD,EACH,EAAGC,CACL,CACF,CAEA,SAASkE,GAAc5G,EAAS,CAC9B,GAAM,CACJ,MAAAG,EACA,OAAAC,CACF,EAAIL,GAAiBC,CAAO,EAC5B,MAAO,CACL,MAAAG,EACA,OAAAC,CACF,CACF,CAEA,SAASyG,GAA8B7G,EAAS+B,EAAcwB,EAAU,CACtE,IAAMI,EAA0BrD,GAAcyB,CAAY,EACpDkB,EAAkBF,GAAmBhB,CAAY,EACjDL,EAAU6B,IAAa,QACvBvC,EAAOY,GAAsB5B,EAAS,GAAM0B,EAASK,CAAY,EACnEmB,EAAS,CACX,WAAY,EACZ,UAAW,CACb,EACMQ,EAAU3C,GAAa,CAAC,EAI9B,SAAS+F,GAA4B,CACnCpD,EAAQ,EAAId,GAAoBK,CAAe,CACjD,CACA,GAAIU,GAA2B,CAACA,GAA2B,CAACjC,EAI1D,IAHIkC,GAAY7B,CAAY,IAAM,QAAU8B,GAAkBZ,CAAe,KAC3EC,EAASJ,GAAcf,CAAY,GAEjC4B,EAAyB,CAC3B,IAAMG,EAAalC,GAAsBG,EAAc,GAAML,EAASK,CAAY,EAClF2B,EAAQ,EAAII,EAAW,EAAI/B,EAAa,WACxC2B,EAAQ,EAAII,EAAW,EAAI/B,EAAa,SAC1C,MAAWkB,GACT6D,EAA0B,EAG1BpF,GAAW,CAACiC,GAA2BV,GACzC6D,EAA0B,EAE5B,IAAM/C,EAAad,GAAmB,CAACU,GAA2B,CAACjC,EAAUsB,GAAcC,EAAiBC,CAAM,EAAInC,GAAa,CAAC,EAC9HG,EAAIF,EAAK,KAAOkC,EAAO,WAAaQ,EAAQ,EAAIK,EAAW,EAC3D5C,EAAIH,EAAK,IAAMkC,EAAO,UAAYQ,EAAQ,EAAIK,EAAW,EAC/D,MAAO,CACL,EAAA7C,EACA,EAAAC,EACA,MAAOH,EAAK,MACZ,OAAQA,EAAK,MACf,CACF,CAEA,SAAS+F,GAAmB/G,EAAS,CACnC,OAAOE,GAAmBF,CAAO,EAAE,WAAa,QAClD,CAEA,SAASgH,GAAoBhH,EAASiH,EAAU,CAC9C,GAAI,CAAC3G,GAAcN,CAAO,GAAKE,GAAmBF,CAAO,EAAE,WAAa,QACtE,OAAO,KAET,GAAIiH,EACF,OAAOA,EAASjH,CAAO,EAEzB,IAAIkH,EAAkBlH,EAAQ,aAM9B,OAAI+C,GAAmB/C,CAAO,IAAMkH,IAClCA,EAAkBA,EAAgB,cAAc,MAE3CA,CACT,CAIA,SAASC,GAAgBnH,EAASiH,EAAU,CAC1C,IAAM3F,EAAMC,GAAUvB,CAAO,EAC7B,GAAIyD,GAAWzD,CAAO,EACpB,OAAOsB,EAET,GAAI,CAAChB,GAAcN,CAAO,EAAG,CAC3B,IAAIoH,EAAkBhC,GAAcpF,CAAO,EAC3C,KAAOoH,GAAmB,CAAC/B,GAAsB+B,CAAe,GAAG,CACjE,GAAIxG,GAAUwG,CAAe,GAAK,CAACL,GAAmBK,CAAe,EACnE,OAAOA,EAETA,EAAkBhC,GAAcgC,CAAe,CACjD,CACA,OAAO9F,CACT,CACA,IAAIS,EAAeiF,GAAoBhH,EAASiH,CAAQ,EACxD,KAAOlF,GAAgBsF,GAAetF,CAAY,GAAKgF,GAAmBhF,CAAY,GACpFA,EAAeiF,GAAoBjF,EAAckF,CAAQ,EAE3D,OAAIlF,GAAgBsD,GAAsBtD,CAAY,GAAKgF,GAAmBhF,CAAY,GAAK,CAACkE,GAAkBlE,CAAY,EACrHT,EAEFS,GAAgBuF,GAAmBtH,CAAO,GAAKsB,CACxD,CAEA,IAAMiG,GAAkB,eAAgBC,EAAM,CAC5C,IAAMC,EAAoB,KAAK,iBAAmBN,GAC5CO,EAAkB,KAAK,cACvBC,EAAqB,MAAMD,EAAgBF,EAAK,QAAQ,EAC9D,MAAO,CACL,UAAWX,GAA8BW,EAAK,UAAW,MAAMC,EAAkBD,EAAK,QAAQ,EAAGA,EAAK,QAAQ,EAC9G,SAAU,CACR,EAAG,EACH,EAAG,EACH,MAAOG,EAAmB,MAC1B,OAAQA,EAAmB,MAC7B,CACF,CACF,EAEA,SAASC,GAAM5H,EAAS,CACtB,OAAOE,GAAmBF,CAAO,EAAE,YAAc,KACnD,CAEA,IAAM6H,GAAW,CACf,sDAAAzE,GACA,mBAAAL,GACA,gBAAAoD,GACA,gBAAAgB,GACA,gBAAAI,GACA,eAAAvD,GACA,cAAA4C,GACA,SAAA/F,GACA,UAAAD,GACA,MAAAgH,EACF,EAEA,SAASE,GAAcC,EAAGC,EAAG,CAC3B,OAAOD,EAAE,IAAMC,EAAE,GAAKD,EAAE,IAAMC,EAAE,GAAKD,EAAE,QAAUC,EAAE,OAASD,EAAE,SAAWC,EAAE,MAC7E,CAGA,SAASC,GAAYjI,EAASkI,EAAQ,CACpC,IAAIC,EAAK,KACLC,EACEC,EAAOtF,GAAmB/C,CAAO,EACvC,SAASsI,GAAU,CACjB,IAAIC,EACJ,aAAaH,CAAS,GACrBG,EAAMJ,IAAO,MAAQI,EAAI,WAAW,EACrCJ,EAAK,IACP,CACA,SAASK,EAAQC,EAAMC,EAAW,CAC5BD,IAAS,SACXA,EAAO,IAELC,IAAc,SAChBA,EAAY,GAEdJ,EAAQ,EACR,IAAMK,EAA2B3I,EAAQ,sBAAsB,EACzD,CACJ,KAAAyC,EACA,IAAAC,EACA,MAAAvC,EACA,OAAAC,CACF,EAAIuI,EAIJ,GAHKF,GACHP,EAAO,EAEL,CAAC/H,GAAS,CAACC,EACb,OAEF,IAAMwI,EAAWC,GAAMnG,CAAG,EACpBoG,EAAaD,GAAMR,EAAK,aAAe5F,EAAOtC,EAAM,EACpD4I,EAAcF,GAAMR,EAAK,cAAgB3F,EAAMtC,EAAO,EACtD4I,EAAYH,GAAMpG,CAAI,EAEtBwG,EAAU,CACd,WAFiB,CAACL,EAAW,MAAQ,CAACE,EAAa,MAAQ,CAACC,EAAc,MAAQ,CAACC,EAAY,KAG/F,UAAW5E,GAAI,EAAGuC,GAAI,EAAG+B,CAAS,CAAC,GAAK,CAC1C,EACIQ,EAAgB,GACpB,SAASC,EAAcC,EAAS,CAC9B,IAAMC,EAAQD,EAAQ,CAAC,EAAE,kBACzB,GAAIC,IAAUX,EAAW,CACvB,GAAI,CAACQ,EACH,OAAOV,EAAQ,EAEZa,EAOHb,EAAQ,GAAOa,CAAK,EAJpBjB,EAAY,WAAW,IAAM,CAC3BI,EAAQ,GAAO,IAAI,CACrB,EAAG,GAAI,CAIX,CACIa,IAAU,GAAK,CAACvB,GAAca,EAA0B3I,EAAQ,sBAAsB,CAAC,GAQzFwI,EAAQ,EAEVU,EAAgB,EAClB,CAIA,GAAI,CACFf,EAAK,IAAI,qBAAqBgB,EAAe,CAC3C,GAAGF,EAEH,KAAMZ,EAAK,aACb,CAAC,CACH,MAAa,CACXF,EAAK,IAAI,qBAAqBgB,EAAeF,CAAO,CACtD,CACAd,EAAG,QAAQnI,CAAO,CACpB,CACA,OAAAwI,EAAQ,EAAI,EACLF,CACT,CAUA,SAASgB,GAAWC,EAAWC,EAAUC,EAAQR,EAAS,CACpDA,IAAY,SACdA,EAAU,CAAC,GAEb,GAAM,CACJ,eAAAS,EAAiB,GACjB,eAAAC,EAAiB,GACjB,cAAAC,EAAgB,OAAO,gBAAmB,WAC1C,YAAAC,EAAc,OAAO,sBAAyB,WAC9C,eAAAC,EAAiB,EACnB,EAAIb,EACEc,EAAcpJ,GAAc4I,CAAS,EACrCS,EAAYN,GAAkBC,EAAiB,CAAC,GAAII,EAAcrE,GAAqBqE,CAAW,EAAI,CAAC,EAAI,GAAIP,EAAW9D,GAAqB8D,CAAQ,EAAI,CAAC,CAAE,EAAI,CAAC,EACzKQ,EAAU,QAAQ9D,GAAY,CAC5BwD,GAAkBxD,EAAS,iBAAiB,SAAUuD,EAAQ,CAC5D,QAAS,EACX,CAAC,EACDE,GAAkBzD,EAAS,iBAAiB,SAAUuD,CAAM,CAC9D,CAAC,EACD,IAAMQ,EAAYF,GAAeF,EAAc5B,GAAY8B,EAAaN,CAAM,EAAI,KAC9ES,EAAiB,GACjBC,EAAiB,KACjBP,IACFO,EAAiB,IAAI,eAAe9G,GAAQ,CAC1C,GAAI,CAAC+G,CAAU,EAAI/G,EACf+G,GAAcA,EAAW,SAAWL,GAAeI,GAAkBX,IAGvEW,EAAe,UAAUX,CAAQ,EACjC,qBAAqBU,CAAc,EACnCA,EAAiB,sBAAsB,IAAM,CAC3C,IAAIG,GACHA,EAAkBF,IAAmB,MAAQE,EAAgB,QAAQb,CAAQ,CAChF,CAAC,GAEHC,EAAO,CACT,CAAC,EACGM,GAAe,CAACD,GAClBK,EAAe,QAAQJ,CAAW,EAEhCP,GACFW,EAAe,QAAQX,CAAQ,GAGnC,IAAIc,EACAC,EAAcT,EAAiBlI,GAAsB2H,CAAS,EAAI,KAClEO,GACFU,EAAU,EAEZ,SAASA,GAAY,CACnB,IAAMC,EAAc7I,GAAsB2H,CAAS,EAC/CgB,GAAe,CAACzC,GAAcyC,EAAaE,CAAW,GACxDhB,EAAO,EAETc,EAAcE,EACdH,EAAU,sBAAsBE,CAAS,CAC3C,CACA,OAAAf,EAAO,EACA,IAAM,CACX,IAAIiB,EACJV,EAAU,QAAQ9D,GAAY,CAC5BwD,GAAkBxD,EAAS,oBAAoB,SAAUuD,CAAM,EAC/DE,GAAkBzD,EAAS,oBAAoB,SAAUuD,CAAM,CACjE,CAAC,EACoBQ,IAAU,GAC9BS,EAAmBP,IAAmB,MAAQO,EAAiB,WAAW,EAC3EP,EAAiB,KACbL,GACF,qBAAqBQ,CAAO,CAEhC,CACF,CAmBA,IAAMK,GAASA,GAef,IAAMC,GAAQA,GAQRC,GAAOA,GAQPC,GAAOA,GAcb,IAAMC,GAAQA,GAkBd,IAAMC,GAAkB,CAACC,EAAWC,EAAUC,IAAY,CAIxD,IAAMC,EAAQ,IAAI,IACZC,EAAgB,CACpB,SAAAC,GACA,GAAGH,CACL,EACMI,EAAoB,CACxB,GAAGF,EAAc,SACjB,GAAID,CACN,EACA,OAAOJ,GAAkBC,EAAWC,EAAU,CAC5C,GAAGG,EACH,SAAUE,CACZ,CAAC,CACH,ECvwBe,SAARC,GAAkBC,EAAQ,CAC/BA,EAAO,UAAU,aAAc,CAACC,EAAI,CAAE,SAAAC,EAAU,WAAAC,CAAW,EAAG,CAAE,OAAAC,EAAQ,cAAAC,EAAe,QAAAC,EAAS,OAAAN,CAAO,IAAM,CAC3G,IAAMO,EAAaP,EAAO,YAAYC,EAAG,cAAgBO,GAAW,OAAO,UAAU,eAAe,KAAKA,EAAQ,eAAe,CAAC,EACjIP,EAAG,UAAU,IAAI,SAAU,kBAAmB,QAAS,KAAK,EAC5DA,EAAG,aAAa,WAAY,IAAI,EAC5BM,GACFN,EAAG,UAAU,IACX,WACA,aACA,0BACA,OACA,WACA,SACA,OACA,YACA,6BACA,gCACA,eACA,WACA,YACA,UACF,EACAA,EAAG,aAAa,OAAQ,QAAQ,EAChCA,EAAG,aAAa,aAAc,MAAM,EACpCA,EAAG,aAAa,YAAa,sBAAsB,GAEnDA,EAAG,UAAU,IAAI,eAAgB,sCAAuC,uCAAwC,2CAA2C,EAG7J,IAAIQ,EAAO,IAAI,KACXC,EACAC,EAEAC,EACAC,EACAC,EAAa,GACbC,EAAW,EACXC,EACAC,EAEJ,SAASC,EAAYC,EAAe,GAAO,CACzCnB,EAAO,SAAS,IAAM,CACpBC,EAAG,cAAc,IAAI,YAAY,SAAU,CAAE,OAAQ,CAAE,KAAMS,CAAS,CAAE,CAAC,CAAC,CAC5E,CAAC,EACGT,EAAG,WACDa,EACFb,EAAG,SAAS,IAAIS,EAAS,YAAY,CAAC,EAEtCT,EAAG,SAAS,IAAIY,EAAU,OAAOH,CAAQ,CAAC,GAG1CH,GACFA,EAAW,cAAc,MAAM,MAAQM,EAAU,OAAOH,CAAQ,EAChEH,EAAW,cAAc,MAAM,kBAAkB,EAAE,EAC/CY,GAAcZ,EAAW,cAAc,MAAM,cAAc,IAAI,MAAM,SAAU,CAAE,QAAS,EAAK,CAAC,CAAC,GAErGN,EAAG,aAAa,eAAgB,OAAO,CAE3C,CAEA,IAAMmB,EAAgB,IAAM,CAC1B,IAAMC,EAAW,IAAI,KAAKd,EAAW,cAAc,MAAM,KAAK,EAC9D,GAAI,MAAMc,CAAQ,EAAG,CACnB,QAAQ,MAAM,GAAGnB,CAAQ,uCAAuCK,EAAW,cAAc,MAAM,KAAK,EAAE,EACtGA,EAAW,cAAc,MAAM,kBAAkB,kCAAkC,EACnF,MACF,MAAWG,EAAS,QAAQ,IAAMW,EAAS,QAAQ,IACjDX,EAAWW,EACXH,EAAY,EACZI,GAAO,GAETf,EAAW,cAAc,MAAM,kBAAkB,EAAE,CACrD,EAEIA,GACFA,EAAW,cAAc,MAAM,iBAAiB,SAAUa,CAAa,EAGzE,SAASG,GAAe,CACtBb,EAAW,IAAI,KAAKT,EAAG,SAAS,IAAI,CAAC,EACjC,MAAMS,CAAQ,GAChB,QAAQ,MAAM,GAAGR,CAAQ,uCAAuCD,EAAG,SAAS,IAAI,CAAC,EAAE,EAC/EM,EAAYA,EAAW,cAAc,MAAM,kBAAkB,kCAAkC,EAC9FN,EAAG,aAAa,eAAgB,MAAM,GAClCM,IACTA,EAAW,cAAc,MAAM,MAAQM,EAAU,OAAOH,CAAQ,EAEpE,CAEA,SAASc,GAAgB,CACnB,OAAO,UAAU,eAAe,KAAKvB,EAAI,UAAU,GAAKA,EAAG,SAAS,IAAI,GAC1EsB,EAAa,CAEjB,CAEA,SAASE,EAASC,EAAO,CACnBA,EAAM,OAAO,aAAa,eAAe,IAAM,SACnDf,EAAa,IAAI,KAAKe,EAAM,OAAO,QAAQ,KAAMA,EAAM,OAAO,QAAQ,MAAOA,EAAM,OAAO,QAAQ,GAAG,EACrGhB,EAAW,IAAI,KAAKC,CAAU,EAC9BO,EAAY,EAAI,EAChBI,GAAO,EACHf,IAAYA,EAAW,cAAc,MAAM,SAAW,IAC5D,CAEA,SAASoB,EAAWC,EAAG,CAErB,MADI,GAAAZ,GAAWY,EAAI,IAAI,KAAKZ,EAAQ,YAAY,EAAGA,EAAQ,SAAS,EAAGA,EAAQ,QAAQ,CAAC,GACpFC,GAAWW,EAAI,IAAI,KAAKX,EAAQ,YAAY,EAAGA,EAAQ,SAAS,EAAGA,EAAQ,QAAQ,CAAC,EAE1F,CAEA,SAASY,EAAQC,EAAOC,EAAO,CAC7B,OAAOD,GAASC,GAASD,EAAM,YAAY,IAAMC,EAAM,YAAY,GAAKD,EAAM,SAAS,IAAMC,EAAM,SAAS,GAAKD,EAAM,QAAQ,IAAMC,EAAM,QAAQ,CACrJ,CAEA,IAAMC,EAAgB,IAAI,KAAK,eAAepB,EAAQ,CAAE,QAAS,OAAQ,CAAC,EAC1E,SAASqB,GAAkB,CACzB,OAAO,MAAM,KAAK,CAAE,OAAQ,CAAE,EAAG,CAACC,EAAGC,IAAM,CACzC,IAAMC,IAAWD,EAAIpB,GAAY,EACjC,OAAOiB,EAAc,OAAO,IAAI,KAAK,KAAM,EAAGI,GAAU,CAAC,CAAC,CAC5D,CAAC,CACH,CAEA,IAAMC,GAAoB,IAAI,KAAK,eAAezB,EAAQ,CAAE,QAAS,MAAO,CAAC,EAC7E,SAAS0B,IAAsB,CAC7B,OAAO,MAAM,KAAK,CAAE,OAAQ,CAAE,EAAG,CAACJ,EAAGC,IAAM,CACzC,IAAMC,IAAWD,EAAIpB,GAAY,EACjC,OAAOsB,GAAkB,OAAO,IAAI,KAAK,KAAM,EAAGD,GAAU,CAAC,CAAC,CAChE,CAAC,CACH,CAEA,IAAIG,GACAC,EAEEC,EAAS,SAAS,cAAc,KAAK,EAC3CA,EAAO,UAAU,IAAI,OAAQ,QAAS,eAAgB,iBAAiB,EACvE,IAAMC,EAAgB,CACpB,SACA,iBACA,cACA,eACA,iBACA,kBACA,UACA,cACA,iBACA,gCACA,eACA,4BACA,6BACA,iDACA,iBACA,kBACA,qBACA,kCACA,6BACA,kCACF,EACMC,EAAkB,SAAS,cAAc,QAAQ,EACvDA,EAAgB,UAAU,IAAI,GAAGD,CAAa,EAC9CC,EAAgB,aAAa,aAAc1C,EAAG,aAAa,qBAAqB,EAAIA,EAAG,aAAa,qBAAqB,EAAI,eAAe,EAC5I0C,EAAgB,aAAa,OAAQ,QAAQ,EAC7CA,EAAgB,YACdC,EAAU,CACR,KAAM,EACN,QAAS,iDACT,MAAO,CACL,cAAe,GACf,KAAM,cACR,CACF,CAAC,CACH,EACAD,EAAgB,iBAAiB,QAAS,IAAM,CAC9ClC,EAAK,YAAYA,EAAK,YAAY,EAAI,CAAC,EACvCa,GAAO,CACT,CAAC,EACDmB,EAAO,YAAYE,CAAe,EAElC,IAAME,EAAmB,SAAS,cAAc,QAAQ,EACxDA,EAAiB,UAAU,IAAI,GAAGH,CAAa,EAC/CG,EAAiB,aAAa,aAAc5C,EAAG,aAAa,sBAAsB,EAAIA,EAAG,aAAa,sBAAsB,EAAI,gBAAgB,EAChJ4C,EAAiB,aAAa,OAAQ,QAAQ,EAC9CA,EAAiB,YACfD,EAAU,CACR,KAAM,EACN,QAAS,iDACT,MAAO,CACL,cAAe,GACf,KAAM,cACR,CACF,CAAC,CACH,EACAC,EAAiB,iBAAiB,QAAS,IAAM,CAC/CpC,EAAK,SAASA,EAAK,SAAS,EAAI,CAAC,EACjCa,GAAO,CACT,CAAC,EACDmB,EAAO,YAAYI,CAAgB,EAEnC,IAAMC,EAAc,SAAS,cAAc,IAAI,EAC/CA,EAAY,UAAU,IAAI,eAAgB,aAAa,EACvDA,EAAY,aAAa,KAAM,OAAOC,EAAO,CAAC,EAAE,EAChDD,EAAY,aAAa,YAAa,QAAQ,EAC9CL,EAAO,YAAYK,CAAW,EAE9B,IAAME,GAAe,SAAS,cAAc,QAAQ,EACpDA,GAAa,UAAU,IAAI,GAAGN,CAAa,EAC3CM,GAAa,aAAa,aAAc/C,EAAG,aAAa,sBAAsB,EAAIA,EAAG,aAAa,sBAAsB,EAAI,YAAY,EACxI+C,GAAa,aAAa,OAAQ,QAAQ,EAC1CA,GAAa,YACXJ,EAAU,CACR,KAAM,EACN,QAAS,iDACT,MAAO,CACL,cAAe,GACf,KAAM,cACR,CACF,CAAC,CACH,EACAI,GAAa,iBAAiB,QAAS,IAAM,CAC3CvC,EAAK,SAASA,EAAK,SAAS,EAAI,CAAC,EACjCa,GAAO,CACT,CAAC,EACDmB,EAAO,YAAYO,EAAY,EAE/B,IAAMC,GAAc,SAAS,cAAc,QAAQ,EACnDA,GAAY,UAAU,IAAI,GAAGP,CAAa,EAC1CO,GAAY,aAAa,aAAchD,EAAG,aAAa,qBAAqB,EAAIA,EAAG,aAAa,qBAAqB,EAAI,WAAW,EACpIgD,GAAY,aAAa,OAAQ,QAAQ,EACzCA,GAAY,YACVL,EAAU,CACR,KAAM,EACN,QAAS,iDACT,MAAO,CACL,cAAe,GACf,KAAM,cACR,CACF,CAAC,CACH,EACAK,GAAY,iBAAiB,QAAS,IAAM,CAC1CxC,EAAK,YAAYA,EAAK,YAAY,EAAI,CAAC,EACvCa,GAAO,CACT,CAAC,EACDmB,EAAO,YAAYQ,EAAW,EAC9BhD,EAAG,YAAYwC,CAAM,EAErB,IAAMS,GAAa,SAAS,cAAc,OAAO,EAC7C3C,GAAY2C,GAAW,aAAa,kBAAmB,OAAOH,EAAO,CAAC,EAAE,EAC5EG,GAAW,UAAU,IAAI,cAAe,kBAAmB,kBAAkB,EACxE3C,GAAY2C,GAAW,UAAU,IAAI,QAAQ,EAClD,IAAMC,GAAQ,SAAS,cAAc,OAAO,EAC5CD,GAAW,YAAYC,EAAK,EAC5B,IAAMC,GAAW,SAAS,cAAc,IAAI,EAC5CD,GAAM,YAAYC,EAAQ,EAC1B,IAAMC,GAAQ,SAAS,cAAc,OAAO,EAC5CH,GAAW,YAAYG,EAAK,EAG5B,SAASC,IAAoB,CAC3BF,GAAS,gBAAgB,EACzB,QAASjB,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,IAAMoB,EAAK,SAAS,cAAc,IAAI,EACtCA,EAAG,aAAa,QAAS,KAAK,EAC9BA,EAAG,aAAa,OAAQhB,GAAaJ,CAAC,CAAC,EACvCoB,EAAG,aAAa,aAAcf,EAAiBL,CAAC,CAAC,EACjDoB,EAAG,UAAU,IAAI,UAAW,aAAa,EACzCA,EAAG,UAAYhB,GAAaJ,CAAC,EAC7BiB,GAAS,YAAYG,CAAE,CACzB,CACF,CAEAtD,EAAG,YAAYiD,EAAU,EAEzB,IAAMM,GAAW,CAAC,EAElB,QAASC,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,IAAMC,EAAM,SAAS,cAAc,IAAI,EACvC,QAAS9B,GAAI,EAAGA,GAAI,EAAGA,KAAK,CAC1B,IAAM+B,GAAO,SAAS,cAAc,IAAI,EACxCA,GAAK,UAAU,IACb,iBACA,UACA,eACA,cACA,SACA,kBACA,eACA,eACA,iBACA,gCACA,2BACA,kCACA,2BACA,kCACA,mCACA,+CACA,gDACA,mCACA,wCACA,wCACA,yCACA,oCACA,0BACF,EACAA,GAAK,aAAa,WAAY,IAAI,EAClCH,GAAS,KAAKE,EAAI,YAAYC,EAAI,CAAC,CACrC,CACAN,GAAM,YAAYK,CAAG,CACvB,CAEA,SAASpC,GAAOsC,EAAU,GAAO,CAC/B,IAAMC,EAAOpD,EAAK,YAAY,EACxBqD,GAAQrD,EAAK,SAAS,EAEtBsD,GAAQ,IAAI,KAAKF,EAAMC,GAAO,CAAC,EAE/BE,GADM,IAAI,KAAKH,EAAMC,GAAQ,EAAG,CAAC,EACtB,QAAQ,EAEnBG,GAAa,IAAI,KAAKJ,EAAMC,GAAO,CAAC,EAC1CG,GAAW,QAAQA,GAAW,QAAQ,EAAI,CAAC,EAE3C,IAAIC,GAAmBD,GAAW,QAAQ,EACtCE,IAAYJ,GAAM,OAAO,EAAIhD,EAAW,GAAK,EAEjD+B,EAAY,UAAY,IAAI,KAAK,eAAelC,EAAQ,CACtD,MAAO,OACP,KAAM,SACR,CAAC,EAAE,OAAOmD,EAAK,EAEf,IAAIK,GAAY,EAEhB,SAASC,GAAeV,EAAMW,EAAQ,CACpCX,EAAK,aAAa,WAAY,IAAI,EAClCA,EAAK,aAAa,gBAAiB,MAAM,EACzCA,EAAK,gBAAgB,UAAU,EAC/BA,EAAK,gBAAgB,YAAY,EACjCA,EAAK,gBAAgB,WAAW,EAChCA,EAAK,gBAAgB,eAAe,EACpCA,EAAK,gBAAgB,cAAc,EAC/BW,EAAS,GACXX,EAAK,UAAY,IAAIW,CAAM,GAE3BX,EAAK,UAAYW,EAEnBX,EAAK,oBAAoB,QAASlC,CAAQ,CAC5C,CAGA,QAASG,EAAIuC,GAAW,EAAGvC,GAAK,EAAGA,IACjCyC,GAAeb,GAAS5B,CAAC,EAAGsC,EAAgB,EAC5CA,KACAE,KAIF,QAASxC,EAAI,EAAGA,GAAKoC,GAAMpC,IAAK,CAC9B,IAAM2C,EAAO,IAAI,KAAKV,EAAMC,GAAOlC,CAAC,EAC9B4C,EAAY7D,GAAckB,EAAQlB,EAAY4D,CAAI,EACxDf,GAASY,EAAS,EAAE,aAAa,WAAYxC,CAAC,EAC9C4B,GAASY,EAAS,EAAE,aAAa,aAAcN,EAAK,EACpDN,GAASY,EAAS,EAAE,aAAa,YAAaP,CAAI,EAClDL,GAASY,EAAS,EAAE,aAAa,WAAYI,EAAY,IAAM,IAAI,EACnEhB,GAASY,EAAS,EAAE,aAAa,gBAAiB1D,GAAYmB,EAAQnB,EAAU6D,CAAI,EAAI,OAAS,OAAO,EACxGf,GAASY,EAAS,EAAE,aAAa,gBAAiBzC,EAAW4C,CAAI,CAAC,EAC9DX,GAAWY,GACbhB,GAASY,EAAS,EAAE,MAAM,EAExBvC,EAAQ,IAAI,KAAQ0C,CAAI,GAC1Bf,GAASY,EAAS,EAAE,aAAa,eAAgB,MAAM,EACnDzD,IAAe,QAAW6C,GAASY,EAAS,EAAE,aAAa,WAAY,GAAG,GACzEZ,GAASY,EAAS,EAAE,gBAAgB,cAAc,EACrDxC,EAAI,GACN4B,GAASY,EAAS,EAAE,UAAY,IAAIxC,CAAC,GAErC4B,GAASY,EAAS,EAAE,UAAYxC,EAElC4B,GAASY,EAAS,EAAE,iBAAiB,QAAS3C,CAAQ,EACtD2C,IACF,CAGA,IAAIK,EAAa,EACjB,IAAKL,GAAWA,GAAY,GAAIA,KAC9BC,GAAeb,GAASY,EAAS,EAAGK,CAAU,EAC9CA,GAEJ,CAEA,SAASC,IAAW,CAClB,GAAIhE,GACF,QAASkB,EAAI,EAAGA,EAAI4B,GAAS,OAAQ5B,IACnC,GAAI4B,GAAS5B,CAAC,EAAE,aAAa,eAAe,IAAM,OAAQ,CACxD4B,GAAS5B,CAAC,EAAE,MAAM,EAClB,MACF,EAGJ,QAASA,EAAI,EAAGA,EAAI4B,GAAS,OAAQ5B,IACnC,GAAI4B,GAAS5B,CAAC,EAAE,aAAa,cAAc,EAAG,CAC5C4B,GAAS5B,CAAC,EAAE,MAAM,EAClB,MACF,CAEJ,CAEA,SAAS+C,GAAUjD,EAAO,CACxBA,EAAM,gBAAgB,EACjBf,IAAYA,EAAaD,GAAY,IAAI,KAAKD,EAAK,YAAY,EAAGA,EAAK,SAAS,EAAG,CAAC,GACzF,IAAImE,EAAS,IAAI,KAAKjE,CAAU,EAEhC,OAAQe,EAAM,IAAK,CACjB,IAAK,OACL,IAAK,YACHA,EAAM,eAAe,EACrBkD,EAAO,QAAQA,EAAO,QAAQ,EAAI,CAAC,EACnC,MACF,IAAK,QACL,IAAK,aACHlD,EAAM,eAAe,EACrBkD,EAAO,QAAQA,EAAO,QAAQ,EAAI,CAAC,EACnC,MACF,IAAK,KACL,IAAK,UACHlD,EAAM,eAAe,EACrBkD,EAAO,QAAQA,EAAO,QAAQ,EAAI,CAAC,EACnC,MACF,IAAK,OACL,IAAK,YACHlD,EAAM,eAAe,EACrBkD,EAAO,QAAQA,EAAO,QAAQ,EAAI,CAAC,EACnC,MACF,IAAK,OACHlD,EAAM,eAAe,EACrBkD,EAAO,QAAQ,CAAC,EAChB,MACF,IAAK,MACHlD,EAAM,eAAe,EACrBkD,EAAO,QAAQ,IAAI,KAAKA,EAAO,YAAY,EAAGA,EAAO,SAAS,EAAI,EAAG,CAAC,EAAE,QAAQ,CAAC,EACjF,MACF,IAAK,SACHlD,EAAM,eAAe,EACrBkD,EAAO,SAASA,EAAO,SAAS,EAAI,CAAC,EACrC,MACF,IAAK,WACHlD,EAAM,eAAe,EACrBkD,EAAO,SAASA,EAAO,SAAS,EAAI,CAAC,EACrC,MACF,IAAK,SACHlD,EAAM,eAAe,EACjBnB,IAAYA,EAAW,cAAc,MAAM,SAAW,IAC1D,OAEF,IAAK,QACL,IAAK,IACHmB,EAAM,eAAe,EAChBC,EAAWhB,CAAU,IACxBD,EAAW,IAAI,KAAKC,CAAU,EAC9BO,EAAY,EACZI,GAAO,EAAI,GAEb,OAEF,QACE,MACJ,CAGA,GAAIsD,EAAO,SAAS,IAAMnE,EAAK,SAAS,EAAG,CACzCA,EAAOmE,EACPjE,EAAaiE,EACbtD,GAAO,EAAI,EACX,MACF,CAEAX,EAAaiE,EACbtD,GAAO,EAAI,CACb,CAIA,GAFArB,EAAG,iBAAiB,UAAW0E,EAAS,EAEpCxE,EAAY,CACd,IAAM0E,EAAYxE,EAAcF,CAAU,EAE1CC,EAAO,IAAM,CACXyE,EAAWC,GAAW,CAChBA,EAAO,SAAQlE,EAASkE,EAAO,QAC/BA,EAAO,WAAU/D,EAAW+D,EAAO,UACnCA,EAAO,QAASjE,EAAY,IAAI,KAAK,eAAeD,EAAQkE,EAAO,OAAO,EACzEjE,EAAY,IAAI,KAAK,eAAeD,CAAM,EAC/CE,EAAagE,EAAO,aAAe,GAC/BA,EAAO,MAAK9D,EAAU,IAAI,KAAK8D,EAAO,GAAG,GACzCA,EAAO,MAAK7D,EAAU,IAAI,KAAK6D,EAAO,GAAG,GAC7CvC,GAAeN,EAAgB,EAC/BO,EAAmBF,GAAoB,EACvCgB,GAAkB,EAClB9B,EAAc,EACdF,GAAO,CACT,CAAC,CACH,CAAC,CACH,MACET,EAAY,IAAI,KAAK,eACrB0B,GAAeN,EAAgB,EAC/BO,EAAmBF,GAAoB,EACvCgB,GAAkB,EAClB9B,EAAc,EACdF,GAAO,EAGT,IAAIyD,GAEJ,SAASC,IAAiB,CACxBC,GAAgB1E,EAAYN,EAAI,CAC9B,UAAWA,EAAG,aAAa,YAAY,GAAK,eAC5C,WAAY,CAACiF,GAAO,CAAC,EAAGC,GAAK,EAAGC,GAAM,CAAE,QAAS,CAAE,CAAC,CAAC,CACvD,CAAC,EAAE,KAAK,CAAC,CAAE,EAAAC,EAAG,EAAAC,CAAE,IAAM,CACpB,OAAO,OAAOrF,EAAG,MAAO,CACtB,KAAM,GAAGoF,CAAC,KACV,IAAK,GAAGC,CAAC,IACX,CAAC,EACDrF,EAAG,UAAU,OAAO,WAAY,WAAW,CAC7C,CAAC,CACH,CAEIM,GACFH,EAAO,IAAM,CACPG,EAAW,cAAc,MAAM,UACjCN,EAAG,UAAU,OAAO,QAAQ,EAC5B8E,GAAoBQ,GAAWhF,EAAYN,EAAI+E,EAAc,EAC7DhF,EAAO,SAAS,IAAM,CACpB0E,GAAS,CACX,CAAC,IAEG,OAAO,WAAW,kCAAkC,EAAE,SACxDzE,EAAG,UAAU,IAAI,SAAU,WAAY,WAAW,EAClD,OAAO,OAAOA,EAAG,MAAO,CACtB,KAAM,MACN,IAAK,KACP,CAAC,GAEDA,EAAG,UAAU,IAAI,WAAY,WAAW,EAEtC8E,IAAmBA,GAAkB,EAE7C,CAAC,EAGH,SAASS,GAAgB9D,EAAO,CAC1BA,EAAM,SAAWzB,GAAMyB,EAAM,OAAO,UAAU,SAAS,WAAW,IACpEzB,EAAG,UAAU,IAAI,QAAQ,EACzB,OAAO,OAAOA,EAAG,MAAO,CACtB,KAAM,MACN,IAAK,KACP,CAAC,EAEL,CAMA,GAJIM,GACFN,EAAG,iBAAiB,gBAAiBuF,EAAe,EAGlD,OAAO,UAAU,eAAe,KAAKvF,EAAI,UAAU,EAAG,CACxD,IAAMwF,EAAkBxF,EAAG,aAAa,SAAS,EAE3CyF,EAAgBrF,EAAcoF,CAAe,EAEnDrF,EAAO,IAAM,CACXsF,EAAeC,IAAU,CAClB,CAACjF,GAAYiF,IAAWA,IAASjF,EAAS,QAAQ,IAAM,IAAI,KAAKiF,EAAK,EAAE,QAAQ,GACnFpE,EAAa,EACbD,GAAO,GACGqE,KACNpF,IAAYA,EAAW,cAAc,MAAM,MAAQ,IACvDG,EAAW,OACXY,GAAO,EAEX,CAAC,CACH,CAAC,CACH,CAEAhB,EAAQ,IAAM,CACZL,EAAG,oBAAoB,UAAW0E,EAAS,EAC3C,QAAS/C,EAAI,EAAGA,EAAI4B,GAAS,OAAQ5B,IACnC4B,GAAS5B,CAAC,EAAE,oBAAoB,QAASH,CAAQ,EAE/ClB,IACFA,EAAW,cAAc,MAAM,oBAAoB,SAAUa,CAAa,EAC1EnB,EAAG,oBAAoB,gBAAiBuF,EAAe,EAE3D,CAAC,CACH,CAAC,CACH,CC/kBe,SAARI,GAAkBC,EAAQ,CAC/BA,EAAO,UAAU,SAAWC,GAAO,CACjCA,EAAG,UAAU,IAAI,UAAW,uBAAwB,OAAQ,QAAS,aAAc,SAAU,OAAQ,WAAW,EAChHA,EAAG,aAAa,YAAa,MAAM,CACrC,CAAC,EAEDD,EAAO,UAAU,gBAAkBC,GAAO,CACxCA,EAAG,UAAU,IAAI,yBAA0B,OAAQ,gBAAiB,wBAAyB,cAAe,QAAS,OAAQ,mDAAoD,kBAAkB,EACnMA,EAAG,aAAa,YAAa,aAAa,CAC5C,CAAC,EAEDD,EAAO,UAAU,eAAiBC,GAAO,CACvCA,EAAG,UAAU,IAAI,eAAgB,eAAe,EAChDA,EAAG,aAAa,YAAa,YAAY,CAC3C,CAAC,EAEDD,EAAO,UAAU,qBAAuBC,GAAO,CAC7CA,EAAG,UAAU,IAAI,wBAAyB,SAAS,EACnDA,EAAG,aAAa,YAAa,kBAAkB,CACjD,CAAC,EAEDD,EAAO,UAAU,gBAAkBC,GAAO,CACxCA,EAAG,UAAU,IAAI,cAAe,aAAc,cAAe,aAAc,kBAAkB,EAC7FA,EAAG,aAAa,YAAa,aAAa,CAC5C,CAAC,EAEDD,EAAO,UAAU,iBAAmBC,GAAO,CACzCA,EAAG,UAAU,IAAI,MAAM,EACvBA,EAAG,aAAa,YAAa,cAAc,CAC7C,CAAC,EAEDD,EAAO,UAAU,gBAAkBC,GAAO,CACxCA,EAAG,UAAU,IAAI,OAAQ,eAAgB,OAAQ,kBAAkB,EACnEA,EAAG,aAAa,YAAa,aAAa,CAC5C,CAAC,CACH,CCjCe,SAARC,GAAkBC,EAAQ,CAC/BA,EAAO,UAAU,aAAeC,GAAO,CACrCA,EAAG,UAAU,IACX,qBACA,4BACA,2BACA,qBACA,2BACA,sCACA,2DACA,uCACA,mBACA,yBACA,+BACA,sBACA,kBACA,gBACA,iBACA,SACA,eACA,uDACA,4CACA,eACA,iDACA,kDACA,iCACA,qCACA,0CACA,kCACA,sCACA,uCACA,WACA,qBACA,eACA,WACA,SACA,oBACA,+BACF,EACAA,EAAG,aAAa,WAAY,IAAI,EAChCA,EAAG,aAAa,YAAa,UAAU,EAEvC,IAAMC,EAAQC,EAAU,CAAE,KAAM,EAAO,QAAS,wEAAyE,MAAO,CAAE,cAAe,GAAM,KAAM,cAAe,CAAE,CAAC,EAC/KF,EAAG,YAAYC,CAAK,CACtB,CAAC,CACH,CC9Ce,SAARE,GAAkBC,EAAQ,CAC/BA,EAAO,UAAU,SAAU,CAACC,EAAI,CAAE,SAAAC,CAAS,EAAG,CAAE,QAAAC,CAAQ,IAAM,CAC5D,GAAIF,EAAG,UAAY,SACjB,MAAM,IAAI,MAAM,GAAGC,CAAQ,2BAA2B,EAExDD,EAAG,QAAUD,EAAO,SAAS,CAC3B,QAAS,SACX,CAAC,EACDC,EAAG,UAAU,IACX,iBACA,cACA,eACA,iBACA,oBACA,eACA,UACA,eACA,gBACA,kBACA,iBACA,eACA,gCACA,+BACA,sBACA,8BACA,uCACA,WACA,mBACA,oDACA,wBACA,4CACA,gBACA,oDACA,wBACA,MACA,UACA,SACA,oBACA,qCACA,kCACA,4BACA,QACF,EACKA,EAAG,aAAa,MAAM,GACzBA,EAAG,aAAa,OAAQ,QAAQ,EAElCA,EAAG,aAAa,YAAa,MAAM,EACnC,IAAMG,EAAW,CACf,QAAS,CAAC,eAAgB,oFAAqF,0EAA2E,iBAAiB,EAC3M,QAAS,CACP,gBACA,oBACA,uBACA,+EACA,oEACA,oBACF,EACA,SAAU,CACR,iBACA,qBACA,wBACA,gFACA,qEACA,qBACF,EACA,SAAU,CACR,iBACA,qBACA,wBACA,gFACA,qEACA,qBACF,EACA,QAAS,CACP,gBACA,oBACA,uBACA,+EACA,oEACA,oBACF,EACA,YAAa,CACX,oBACA,wBACA,2BACA,mFACA,wEACA,wBACF,EACA,QAAS,CACP,gBACA,oCACA,oFACA,0EACA,iBACF,CACF,EAEA,SAASC,EAAWC,EAAS,CAC3BL,EAAG,QAAQ,QAAUK,EACrB,OAAW,CAACC,EAAGC,CAAK,IAAK,OAAO,QAAQJ,CAAQ,EAC9CH,EAAG,UAAU,OAAO,GAAGO,CAAK,EAE1B,OAAO,UAAU,eAAe,KAAKJ,EAAUE,CAAO,GAAGL,EAAG,UAAU,IAAI,GAAGG,EAASE,CAAO,CAAC,CACpG,CAEAD,EAAWJ,EAAG,aAAa,cAAc,GAAK,SAAS,EAEvD,IAAMQ,EAAW,IAAI,iBAAiB,IAAM,CAC1CJ,EAAWJ,EAAG,aAAa,cAAc,GAAK,SAAS,CACzD,CAAC,EAEDQ,EAAS,QAAQR,EAAI,CAAE,WAAY,GAAM,gBAAiB,CAAC,cAAc,CAAE,CAAC,EAE5EE,EAAQ,IAAM,CACZM,EAAS,WAAW,CACtB,CAAC,CACH,CAAC,EAEDT,EAAO,UAAU,eAAgB,CAACC,EAAI,CAAE,SAAAC,CAAS,EAAG,CAAE,OAAAQ,EAAQ,QAAAP,CAAQ,IAAM,CAC1E,GAAIF,EAAG,UAAY,SACjB,MAAM,IAAI,MAAM,GAAGC,CAAQ,+BAA+B,EAE5D,IAAMS,EAAOX,EAAO,YAAYC,EAAG,cAAgBW,GAAW,OAAO,UAAU,eAAe,KAAKA,EAAQ,SAAS,CAAC,EACrHX,EAAG,UAAU,IACX,iBACA,cACA,eACA,iBACA,OACA,SACA,SACA,UACA,iBACA,eACA,gCACA,+BACA,sBACA,iBACA,4BACA,4BACA,iBACA,WACA,qBACA,eACA,uDACA,2BACA,0CACA,wBACA,6BACF,EACAA,EAAG,aAAa,YAAa,YAAY,EACzCA,EAAG,aAAa,WAAY,GAAG,EAC/BA,EAAG,aAAa,OAAQ,QAAQ,EAChCA,EAAG,YACDY,EAAU,CACR,KAAM,GACN,QAAS,wCACT,MAAO,CACL,cAAe,GACf,KAAM,cACR,CACF,CAAC,CACH,EAEI,CAACZ,EAAG,aAAa,iBAAiB,GAAK,CAACA,EAAG,aAAa,YAAY,GACtE,QAAQ,MAAM,GAAGC,CAAQ,6DAA8DD,CAAE,EAG3F,IAAMG,EAAW,CACf,QAAS,CAAC,6BAA8B,2BAA4B,6BAA8B,kCAAkC,EACpI,QAAS,CAAC,sBAAuB,uBAAwB,6BAA8B,qCAAqC,EAC5H,SAAU,CAAC,uBAAwB,wBAAyB,8BAA+B,sCAAsC,EACjI,SAAU,CAAC,uBAAwB,wBAAyB,8BAA+B,sCAAsC,EACjI,QAAS,CAAC,sBAAuB,uBAAwB,6BAA8B,qCAAqC,EAC5H,YAAa,CAAC,0BAA2B,2BAA4B,iCAAkC,yCAAyC,EAChJ,QAAS,CAAC,2BAA4B,6BAA8B,mCAAoC,kCAAkC,CAC5I,EAEAM,EAAO,IAAM,CACX,OAAW,CAACH,EAAGC,CAAK,IAAK,OAAO,QAAQJ,CAAQ,EAC9CH,EAAG,UAAU,OAAO,GAAGO,CAAK,EAE1B,OAAO,UAAU,eAAe,KAAKJ,EAAUO,EAAK,QAAQ,OAAO,GACrEV,EAAG,UAAU,IAAI,GAAGG,EAASO,EAAK,QAAQ,OAAO,CAAC,CAEtD,CAAC,EAED,IAAMG,EAAmBC,GAAU,CAG7BJ,EAAK,aAAa,eAAe,IAAM,QAAQI,EAAM,gBAAgB,CAC3E,EACAd,EAAG,iBAAiB,QAASa,CAAe,EAE5CX,EAAQ,IAAM,CACZF,EAAG,oBAAoB,QAASa,CAAe,CACjD,CAAC,CACH,CAAC,CACH,CCxMA,SAASE,GAAQC,EAAIC,EAAM,CACrBA,IAAS,MACXD,EAAG,UAAU,IAAI,OAAO,EACxBA,EAAG,UAAU,OAAO,KAAK,IAEzBA,EAAG,UAAU,IAAI,KAAK,EACtBA,EAAG,UAAU,OAAO,OAAO,EAE/B,CAEO,SAASE,GAAaF,EAAI,CAC/B,IAAMG,EAAW,IAAI,iBAAiB,IAAM,CAC1CJ,GAAQC,EAAIA,EAAG,aAAa,WAAW,CAAC,CAC1C,CAAC,EAED,OAAAD,GAAQC,EAAIA,EAAG,aAAa,WAAW,CAAC,EAExCG,EAAS,QAAQH,EAAI,CAAE,WAAY,GAAM,gBAAiB,CAAC,WAAW,CAAE,CAAC,EAClEG,CACT,CChBe,SAARC,GAAkBC,EAAQ,CAC/BA,EAAO,UAAU,gBAAiB,CAACC,EAAI,CAAE,SAAAC,EAAU,UAAAC,CAAU,EAAG,CAAE,OAAAH,EAAQ,QAAAI,CAAQ,IAAM,CACtF,IAAMC,EAAQL,EAAO,SAAS,CAC5B,SAAU,EACZ,CAAC,EASD,GARAC,EAAG,cAAgB,CACjB,GAAI,OACJ,SAAU,OAAOK,EAAO,CAAC,GACzB,MAAO,OACP,MAAAD,EACA,QAASF,EAAU,SAAS,OAAO,CACrC,EACAF,EAAG,cAAc,MAAQA,EAAG,cAAc,OAAO,EAC7C,CAACA,EAAG,cAAc,OAASA,EAAG,cAAc,MAAM,UAAY,QAChE,MAAM,IAAI,MAAM,GAAGC,CAAQ,wBAAwB,EAC9C,GAAID,EAAG,cAAc,MAAM,aAAa,IAAI,EACjDA,EAAG,cAAc,GAAKA,EAAG,cAAc,MAAM,aAAa,IAAI,MACzD,CACL,IAAMM,EAAK,MAAMD,EAAO,CAAC,GACzBL,EAAG,cAAc,MAAM,aAAa,KAAMM,CAAE,EAC5CN,EAAG,cAAc,GAAKM,CACxB,CAEAN,EAAG,UAAU,IACX,kBACA,eACA,OACA,eACA,oBACA,oBACA,gCACA,eACA,eACA,OACA,UACA,2CACA,0CACA,iCACF,EACIA,EAAG,cAAc,SACnBA,EAAG,UAAU,IACX,YACA,OACA,+CACA,yCACA,wDACA,6DACA,8CACA,kDACF,EACAA,EAAG,aAAa,YAAa,iBAAiB,IAE9CA,EAAG,UAAU,IACX,SACA,kBACA,SACA,iBACA,eACA,wCACA,yCACA,6DACA,kDACA,iDACA,uDACA,uCACA,sCACA,2CACF,EACAA,EAAG,aAAa,YAAa,aAAa,GAG5CA,EAAG,cAAc,MAAM,UAAU,IAC/B,iBACA,eACA,YACA,OACA,WACA,eACA,+BACA,0BACA,uBACA,+BACA,8BACA,sBACA,aACA,YACA,UACF,EACAA,EAAG,cAAc,MAAM,aAAa,oBAAqB,MAAM,EAC/DA,EAAG,cAAc,MAAM,aAAa,OAAQ,MAAM,EAElD,IAAMO,EAAWC,GAAaR,CAAE,EAEhCG,EAAQ,IAAM,CACZI,EAAS,WAAW,CACtB,CAAC,CACH,CAAC,EAEDR,EAAO,UAAU,wBAAyB,CAACC,EAAI,CAAE,SAAAC,CAAS,EAAG,CAAE,OAAAQ,EAAQ,QAAAN,EAAS,OAAAJ,CAAO,IAAM,CAC3F,GAAIC,EAAG,UAAY,SACjB,MAAM,IAAI,MAAM,GAAGC,CAAQ,mBAAmB,EAEhD,GAAI,CAACD,EAAG,aAAa,iBAAiB,GAAK,CAACA,EAAG,aAAa,YAAY,EACtE,MAAM,IAAI,MAAM,GAAGC,CAAQ,4DAA4D,EAEzF,IAAMS,EAAaX,EAAO,YAAYC,EAAG,cAAgBW,GAAW,OAAO,UAAU,eAAe,KAAKA,EAAQ,eAAe,CAAC,EACjI,GAAI,CAACD,EACH,MAAM,IAAI,MAAM,GAAGT,CAAQ,wCAAwC,EAErED,EAAG,UAAU,IACX,iBACA,cACA,eACA,iBACA,SACA,gBACA,iBACA,qBACA,kCACA,6BACA,mCACA,cACF,EACIU,EAAW,cAAc,QAC3BV,EAAG,UAAU,IACX,mCACA,6BACA,sDACA,2DACA,4CACA,gDACF,EAEAA,EAAG,UAAU,IACX,4BACA,6BACA,iDACA,gDACA,+CACA,qDACA,qCACA,oCACA,yCACF,EAEFA,EAAG,aAAa,gBAAiBU,EAAW,cAAc,QAAQ,EAClEV,EAAG,aAAa,gBAAiB,OAAO,EACxCA,EAAG,aAAa,gBAAiB,QAAQ,EACzCA,EAAG,aAAa,OAAQ,QAAQ,EAChCA,EAAG,aAAa,YAAa,qBAAqB,EAElDA,EAAG,YACDY,EAAU,CACR,KAAM,EACN,QAAS,iCACT,MAAO,CACL,cAAe,GACf,KAAM,cACR,CACF,CAAC,CACH,EAEAH,EAAO,IAAM,CACXT,EAAG,aAAa,aAAcU,EAAW,cAAc,MAAM,SAAW,OAAS,QAAQ,EACzFV,EAAG,aAAa,gBAAiBU,EAAW,cAAc,MAAM,QAAQ,CAC1E,CAAC,EAED,IAAMG,EAAQ,IAAM,CAClBH,EAAW,cAAc,MAAM,SAAW,EAC5C,EAEMI,EAAU,IAAM,CACpBJ,EAAW,cAAc,MAAM,SAAW,CAACA,EAAW,cAAc,MAAM,SAC1EX,EAAO,SAAS,IAAM,CAChBW,EAAW,cAAc,MAAM,SACjC,IAAI,iBAAiB,QAASG,EAAO,CAAE,KAAM,EAAK,CAAC,EAEnD,IAAI,oBAAoB,QAASA,CAAK,CAE1C,CAAC,CACH,EAEAb,EAAG,iBAAiB,QAASc,CAAO,EAEpCX,EAAQ,IAAM,CACZH,EAAG,oBAAoB,QAASc,CAAO,EACvC,IAAI,oBAAoB,QAASD,CAAK,CACxC,CAAC,CACH,CAAC,CACH,CC/Le,SAARE,GAAkBC,EAAQ,CAC/BA,EAAO,UAAU,mBAAoB,CAACC,EAAIC,EAAG,CAAE,QAAAC,CAAQ,IAAM,CAC3DF,EAAG,UAAU,IAAI,SAAU,QAAS,UAAW,OAAQ,cAAe,6BAA8B,gCAAiC,eAAgB,WAAY,YAAa,YAAY,EAC1LA,EAAG,aAAa,WAAY,IAAI,EAChCA,EAAG,aAAa,YAAa,gBAAgB,EAE7C,IAAMG,EAAW,IAAI,iBAAiB,IAAM,CAC1C,GAAIH,EAAG,aAAa,WAAW,IAAM,OAAQ,CACvC,OAAO,WAAW,kCAAkC,EAAE,QACxDA,EAAG,UAAU,OAAO,SAAU,aAAc,WAAW,GAEvDA,EAAG,UAAU,OAAO,QAAQ,EAC5BD,EAAO,SAAS,IAAM,CAGpBC,EAAG,aACHA,EAAG,UAAU,OAAO,aAAc,WAAW,CAC/C,CAAC,GAEH,IAAMI,EAASJ,EAAG,qBAAqB,OAAO,EAC9C,GAAII,EAAO,OAAQ,CACjB,QAASC,EAAI,EAAGA,EAAID,EAAO,OAAQC,IACjC,GAAID,EAAOC,CAAC,EAAE,UAAW,CACvBD,EAAOC,CAAC,EAAE,MAAM,EAChB,MACF,CAEFD,EAAO,CAAC,EAAE,MAAM,EAChB,MACF,KAAO,CACL,IAAME,EAAYN,EAAG,qBAAqB,UAAU,EACpD,GAAIM,EAAU,OAAQ,CACpB,QAASD,EAAI,EAAGA,EAAIC,EAAU,OAAQD,IACpC,GAAIC,EAAUD,CAAC,EAAE,UAAW,CAC1BC,EAAUD,CAAC,EAAE,MAAM,EACnB,MACF,CAEFC,EAAU,CAAC,EAAE,MAAM,EACnB,MACF,CACF,CACA,IAAMC,EAAUP,EAAG,qBAAqB,QAAQ,EAC5CO,EAAQ,QACVA,EAAQ,CAAC,EAAE,MAAM,CAErB,MACM,OAAO,WAAW,kCAAkC,EAAE,QACxDP,EAAG,UAAU,IAAI,SAAU,aAAc,WAAW,EAEpDA,EAAG,UAAU,IAAI,aAAc,WAAW,CAGhD,CAAC,EAED,SAASQ,EAAgBC,EAAO,CAC1BA,EAAM,SAAWT,GAAMS,EAAM,OAAO,UAAU,SAAS,WAAW,GACpET,EAAG,UAAU,IAAI,QAAQ,CAE7B,CAEAA,EAAG,iBAAiB,gBAAiBQ,CAAe,EAEpDL,EAAS,QAAQH,EAAI,CAAE,WAAY,GAAM,gBAAiB,CAAC,WAAW,CAAE,CAAC,EAEzEE,EAAQ,IAAM,CACZC,EAAS,WAAW,EACpBH,EAAG,oBAAoB,gBAAiBQ,CAAe,CACzD,CAAC,CACH,CAAC,EAEDT,EAAO,UAAU,WAAaC,GAAO,CACnCA,EAAG,UAAU,IACX,WACA,gBACA,QACA,YACA,aACA,OACA,OACA,WACA,SACA,0BACA,mBACA,mBACA,QACA,aACA,SACA,MACA,YACA,cACA,eACA,6BACA,gCACA,eACA,UACF,EACAA,EAAG,aAAa,OAAQ,QAAQ,EAChCA,EAAG,aAAa,YAAa,QAAQ,CACvC,CAAC,EAEDD,EAAO,UAAU,kBAAoBC,GAAO,CAC1CA,EAAG,UAAU,IAAI,OAAQ,uBAAwB,oBAAqB,QAAS,cAAe,cAAc,EAC5GA,EAAG,aAAa,YAAa,eAAe,CAC9C,CAAC,EAEDD,EAAO,UAAU,iBAAkB,CAACC,EAAIC,EAAG,CAAE,OAAAF,CAAO,IAAM,CACxDC,EAAG,UAAU,IAAI,UAAW,UAAW,eAAgB,eAAe,EACtEA,EAAG,aAAa,YAAa,cAAc,EAC3C,IAAMU,EAASX,EAAO,YAAYC,EAAG,cAAgBW,GAAWA,EAAO,aAAa,MAAM,IAAM,QAAQ,EACxG,GAAID,GAAU,CAACA,EAAO,aAAa,iBAAiB,GAAK,CAACA,EAAO,aAAa,YAAY,EAAG,CAC3F,GAAI,CAACV,EAAG,aAAa,IAAI,EAAG,CAC1B,IAAMY,EAAK,MAAMC,EAAO,CAAC,GACzBb,EAAG,aAAa,KAAMY,CAAE,CAC1B,CACAF,EAAO,aAAa,kBAAmBV,EAAG,aAAa,IAAI,CAAC,CAC9D,CACF,CAAC,EAEDD,EAAO,UAAU,iBAAmBC,GAAO,CACzCA,EAAG,UAAU,IACX,UACA,yBACA,kBACA,aACA,aACA,qBACA,gCACA,oBACA,eACA,sBACA,uBACA,+BACA,8BACA,mBACA,sCACF,EACAA,EAAG,aAAa,YAAa,cAAc,EAC3CA,EAAG,aAAa,OAAQ,QAAQ,CAClC,CAAC,EAEDD,EAAO,UAAU,uBAAwB,CAACC,EAAIC,EAAG,CAAE,OAAAF,CAAO,IAAM,CAC9DC,EAAG,UAAU,IAAI,UAAW,gBAAiB,wBAAyB,SAAS,EAC/EA,EAAG,aAAa,YAAa,oBAAoB,EACjD,IAAMU,EAASX,EAAO,YAAYC,EAAG,cAAgBW,GAAWA,EAAO,aAAa,MAAM,IAAM,QAAQ,EACxG,GAAID,GAAU,CAACA,EAAO,aAAa,kBAAkB,GAAK,CAACA,EAAO,aAAa,kBAAkB,EAAG,CAClG,GAAI,CAACV,EAAG,aAAa,IAAI,EAAG,CAC1B,IAAMY,EAAK,MAAMC,EAAO,CAAC,GACzBb,EAAG,aAAa,KAAMY,CAAE,CAC1B,CACAF,EAAO,aAAa,mBAAoBV,EAAG,aAAa,IAAI,CAAC,CAC/D,CACF,CAAC,EAEDD,EAAO,UAAU,kBAAoBC,GAAO,CAC1CA,EAAG,UAAU,IAAI,OAAQ,mBAAoB,QAAS,cAAe,gBAAgB,EACrFA,EAAG,aAAa,YAAa,eAAe,CAC9C,CAAC,CACH,CC7Je,SAARc,GAAkBC,EAAQ,CAC/BA,EAAO,UAAU,cAAgBC,GAAO,CACtCA,EAAG,UAAU,IAAI,OAAQ,SAAU,YAAa,6BAA8B,uCAAuC,EACrHA,EAAG,aAAa,YAAa,WAAW,CAC1C,CAAC,EAEDD,EAAO,UAAU,mBAAoB,CAACC,EAAI,CAAE,WAAAC,CAAW,EAAG,CAAE,SAAAC,EAAU,cAAAC,EAAe,OAAAC,EAAQ,OAAAL,CAAO,IAAM,CACxGC,EAAG,UAAU,IACX,OACA,WACA,kBACA,iBACA,gCACA,eACA,WACA,SACA,WACA,kBACA,WACA,8BACA,6BACA,sCACA,2CACF,EACAA,EAAG,aAAa,YAAa,gBAAgB,EAE7C,IAAIK,EACAL,EAAG,aAAa,IAAI,EACtBK,EAASL,EAAG,aAAa,IAAI,EAE7BK,EAAS,MAAMC,EAAO,CAAC,GAGzB,SAASC,EAAYC,EAAU,CACzBA,GACFR,EAAG,UAAU,IAAI,cAAc,EAC/BA,EAAG,UAAU,OAAO,cAAc,IAElCA,EAAG,UAAU,IAAI,cAAc,EAC/BA,EAAG,UAAU,OAAO,cAAc,EAEtC,CAOA,GALAA,EAAG,gBAAkBD,EAAO,SAAS,CACnC,SAAUM,EACV,SAAUH,EAASD,GAAc,OAAO,CAC1C,CAAC,EAEGA,IAAe,IAAMA,IAAe,QAAaA,IAAe,MAAQA,IAAe,QAAUA,IAAe,QAAS,CAC3H,IAAMQ,EAAgBN,EAAcF,CAAU,EAE9CG,EAAO,IAAM,CACXK,EAAeD,GAAa,CAC1BD,EAAYC,CAAQ,CACtB,CAAC,CACH,CAAC,EAEDJ,EAAO,IAAM,CACPF,EAASD,CAAU,IAAMD,EAAG,gBAAgB,UAC9CE,EAAS,GAAGD,CAAU,MAAMD,EAAG,gBAAgB,QAAQ,EAAE,CAE7D,CAAC,CACH,MACEI,EAAO,IAAM,CACXG,EAAYP,EAAG,gBAAgB,QAAQ,CACzC,CAAC,CAEL,CAAC,EAEDD,EAAO,UAAU,sBAAuB,CAACC,EAAI,CAAE,SAAAU,EAAU,WAAAT,CAAW,EAAG,CAAE,OAAAG,EAAQ,cAAAD,EAAe,OAAAJ,EAAQ,QAAAY,CAAQ,IAAM,CACpH,GAAIX,EAAG,QAAQ,SAAW,GAAK,CAACA,EAAG,QAAQ,WAAW,GAAG,EACvD,MAAM,IAAI,MAAM,GAAGU,CAAQ,2BAA2B,EAGxD,IAAME,EAAeb,EAAO,YAAYC,EAAG,cAAgBa,GAAW,OAAO,UAAU,eAAe,KAAKA,EAAQ,iBAAiB,CAAC,EAErI,GAAI,CAACD,EACH,MAAM,IAAI,MAAM,GAAGF,CAAQ,6CAA6C,EAG1EV,EAAG,UAAU,IACX,mBACA,WACA,uIACA,OACA,OACA,WACA,OACA,gCACA,kCACA,qCACA,sCACA,qCACA,0BACA,8BACA,0BACA,yBACA,6BACA,4BACA,gDACA,gDACF,EACAA,EAAG,aAAa,WAAY,IAAI,EAEhC,IAAMc,EAAWX,EAAcF,CAAU,EAEnCc,EAAcC,EAAU,CAC5B,KAAM,EACN,QAAS,4IACT,MAAO,CACL,cAAe,GACf,KAAM,cACR,CACF,CAAC,EAEKC,EAAS,SAAS,cAAc,QAAQ,EAC9CA,EAAO,aAAa,OAAQ,QAAQ,EACpCA,EAAO,aAAa,WAAY,GAAG,EACnCA,EAAO,aAAa,YAAa,mBAAmB,EACpDA,EAAO,UAAU,IACf,iBACA,4BACA,6BACA,OACA,SACA,eACA,kBACA,QACA,YACA,UACA,cACA,iBACA,gCACA,eACA,kBACA,iDACA,+BACA,sBACA,wCACF,EACAjB,EAAG,YAAYiB,CAAM,EAErBb,EAAO,IAAM,CACXU,EAAUI,GAAU,CAClBD,EAAO,UAAYC,EACnBD,EAAO,YAAYF,CAAW,CAChC,CAAC,CACH,CAAC,EAEDE,EAAO,aAAa,KAAML,EAAa,gBAAgB,EAAE,EACzDK,EAAO,aAAa,gBAAiBL,EAAa,gBAAgB,QAAQ,EAE1E,IAAMO,EAAgB,IAAM,CAC1BF,EAAO,aAAa,gBAAiBL,EAAa,gBAAgB,QAAQ,CAC5E,EAEMQ,EAAU,IAAM,CACpBR,EAAa,gBAAgB,SAAW,CAACA,EAAa,gBAAgB,SACtEO,EAAc,CAChB,EACAA,EAAc,EAEdnB,EAAG,iBAAiB,QAASoB,CAAO,EAEpCT,EAAQ,IAAM,CACZX,EAAG,oBAAoB,QAASoB,CAAO,CACzC,CAAC,CACH,CAAC,EAEDrB,EAAO,UAAU,sBAAwBC,GAAO,CAC9CA,EAAG,UAAU,IAAI,SAAU,iBAAiB,EAC5CA,EAAG,aAAa,YAAa,mBAAmB,CAClD,CAAC,CACH,CC/Ke,SAARqB,GAAkBC,EAAQ,CAC/BA,EAAO,UAAU,aAAeC,GAAO,CACrCA,EAAG,UAAU,IAAI,OAAQ,QAAS,0CAA2C,sCAAsC,EACnHA,EAAG,aAAa,YAAa,UAAU,CACzC,CAAC,EAEDD,EAAO,UAAU,WAAY,CAACC,EAAI,CAAE,UAAAC,CAAU,IAAM,CAClDD,EAAG,UAAU,IAAI,OAAQ,cAAeC,EAAU,SAAS,OAAO,EAAI,UAAY,WAAW,EAC7FD,EAAG,aAAa,YAAa,QAAQ,CACvC,CAAC,EAEDD,EAAO,UAAU,gBAAkBC,GAAO,CACxCA,EAAG,UAAU,IAAI,oBAAqB,yBAA0B,OAAQ,SAAU,QAAS,mCAAoC,mCAAmC,EAClKA,EAAG,aAAa,YAAa,aAAa,CAC5C,CAAC,EAEDD,EAAO,UAAU,UAAYC,GAAO,CAElC,OADAA,EAAG,UAAU,IAAI,cAAe,SAAU,QAAS,oCAAqC,uCAAwC,yCAAyC,EACjKA,EAAG,aAAa,kBAAkB,EAAG,CAC3C,IAAK,aACHA,EAAG,UAAU,IAAI,OAAQ,eAAgB,wCAAyC,+CAAgD,yEAAyE,EAC3M,MACF,IAAK,aACHA,EAAG,UAAU,IACX,OACA,eACA,sBACA,2BACA,+BACA,+BACA,wDACA,+DACA,yFACF,EACA,MACF,QACEA,EAAG,UAAU,IAAI,OAAQ,eAAgB,qBAAqB,CAClE,CACAA,EAAG,aAAa,OAAQ,OAAO,EAC/BA,EAAG,aAAa,YAAa,OAAO,CACtC,CAAC,EAEDD,EAAO,UAAU,kBAAoBC,GAAO,CAC1CA,EAAG,UAAU,IAAI,sBAAuB,OAAQ,SAAU,UAAW,cAAc,EACnFA,EAAG,aAAa,YAAa,eAAe,CAC9C,CAAC,EAEDD,EAAO,UAAU,gBAAkBC,GAAO,CACxCA,EAAG,UAAU,IAAI,OAAQ,QAAS,eAAgB,QAAS,UAAW,eAAgB,cAAe,6CAA6C,EAClJA,EAAG,aAAa,YAAa,aAAa,CAC5C,CAAC,EAEDD,EAAO,UAAU,sBAAwBC,GAAO,CAC9CA,EAAG,UAAU,IACX,wBACA,UACA,iBACA,cACA,+DACA,YACA,mBACA,oCACA,2BACA,kBACA,0BACF,EACAA,EAAG,aAAa,YAAa,mBAAmB,EAE5CA,EAAG,aAAa,oBAAoB,IAAM,QAC5CA,EAAG,UAAU,IACX,6CACA,gDACA,mDACA,yCACA,6CACA,8CACF,CAEJ,CAAC,EAEDD,EAAO,UAAU,gBAAkBC,GAAO,CACxCA,EAAG,UAAU,IACX,SACA,4CACA,+CACA,kDACA,wCACA,4CACA,8CACA,gBACA,UACA,iBACA,cACA,8DACF,EACAA,EAAG,aAAa,YAAa,aAAa,CAC5C,CAAC,CACH,CC/Fe,SAARE,GAAkBC,EAAQ,CAC/BA,EAAO,UAAU,SAAU,CAACC,EAAI,CAAE,SAAAC,EAAU,UAAAC,CAAU,IAAM,CAC1D,GAAIF,EAAG,QAAQ,YAAY,IAAM,MAC/B,MAAM,IAAI,MAAM,GAAGC,CAAQ,6BAA6B,EACnD,GAAKD,EAAG,aAAa,MAAM,GAE3B,GAAIA,EAAG,aAAa,MAAM,IAAM,OAAS,CAACA,EAAG,aAAa,iBAAiB,GAAK,CAACA,EAAG,aAAa,YAAY,EAClH,MAAM,IAAI,MAAM,GAAGC,CAAQ,4FAA4F,MAFvH,OAAM,IAAI,MAAM,GAAGA,CAAQ,mBAAmB,EAIhDD,EAAG,UAAU,IAAI,cAAc,EAC/BA,EAAG,aAAa,YAAa,MAAM,EAC/BA,EAAG,aAAa,WAAW,EAC7B,MAAMA,EAAG,aAAa,WAAW,CAAC,EAC/B,KAAMG,GAAa,CAClB,GAAIA,EAAS,SAAW,IAAK,OAAOA,EAAS,KAAK,EAClD,MAAMA,CACR,CAAC,EACA,KAAMC,GAAY,CAEjB,IAAMC,EADS,IAAI,UAAU,EACV,gBAAgBD,EAAS,eAAe,EAC3D,QAASE,EAAI,EAAGA,EAAID,EAAI,kBAAkB,WAAW,OAAQC,IAC3DN,EAAG,aAAaK,EAAI,kBAAkB,WAAWC,CAAC,EAAE,KAAMD,EAAI,kBAAkB,WAAWC,CAAC,EAAE,KAAK,EAErGN,EAAG,OAAO,GAAGK,EAAI,kBAAkB,QAAQ,CAC7C,CAAC,EACA,MAAOF,GAAa,CACnB,QAAQ,MAAMA,CAAQ,CACxB,CAAC,EACMD,EAAU,CAAC,GACpBK,GAAcP,EAAIE,EAAU,CAAC,CAAC,CAElC,CAAC,CACH,CClCe,SAARM,GAAkBC,EAAQ,CAC/BA,EAAO,UAAU,cAAgBC,GAAO,CACtCA,EAAG,UAAU,IAAI,OAAQ,UAAW,SAAU,eAAgB,iBAAkB,QAAS,aAAc,gBAAiB,MAAO,cAAe,eAAgB,SAAS,EACvKA,EAAG,aAAa,YAAa,WAAW,CAC1C,CAAC,EAEDD,EAAO,UAAU,qBAAuBC,GAAO,CAC7CA,EAAG,UAAU,IAAI,OAAQ,WAAY,eAAgB,QAAS,aAAa,EAC3EA,EAAG,aAAa,YAAa,kBAAkB,CACjD,CAAC,EAEDD,EAAO,UAAU,oBAAqB,CAACC,EAAI,CAAE,UAAAC,CAAU,IAAM,CAC3DD,EAAG,UAAU,IAAI,OAAQ,WAAY,eAAgB,iBAAkB,8BAA+B,kBAAkB,EACpHC,EAAU,SAAS,MAAM,EAAGD,EAAG,UAAU,IAAI,WAAY,kBAAmB,UAAW,WAAY,eAAgB,iBAAkB,aAAc,sCAAsC,EACxLA,EAAG,UAAU,IAAI,gBAAgB,EACtCA,EAAG,aAAa,YAAa,iBAAiB,CAChD,CAAC,EAEDD,EAAO,UAAU,oBAAsBC,GAAO,CAC5CA,EAAG,UAAU,IAAI,UAAW,cAAe,gBAAgB,EAC3DA,EAAG,aAAa,YAAa,iBAAiB,CAChD,CAAC,EAEDD,EAAO,UAAU,0BAA4BC,GAAO,CAClDA,EAAG,UAAU,IAAI,wBAAyB,2BAA4B,kBAAmB,kBAAmB,0BAA0B,EACtIA,EAAG,aAAa,YAAa,uBAAuB,CACtD,CAAC,EAEDD,EAAO,UAAU,sBAAwBC,GAAO,CAC9CA,EAAG,UAAU,IAAI,OAAQ,SAAU,WAAY,UAAW,eAAgB,QAAS,UAAW,cAAc,EAC5GA,EAAG,aAAa,YAAa,mBAAmB,CAClD,CAAC,CACH,CC7Be,SAARE,GAAkBC,EAAQ,CAC/BA,EAAO,UAAU,UAAW,CAACC,EAAI,CAAE,UAAAC,CAAU,EAAG,CAAE,QAAAC,CAAQ,IAAM,CAuC9D,GAtCAF,EAAG,UAAU,IACX,uBACA,oCACA,uBACA,oCACA,eACA,UACA,+BACA,+BACA,oCACA,kCACA,qCACA,8CACA,wCACA,YACA,oBACA,oBACA,gCACA,eACA,mBACA,WACA,gBACA,sBACA,eACA,mBACA,+BACA,8BACA,sBACA,aACA,4BACA,6BACA,gCACA,qCACA,+BACA,4BACA,iCACA,0BACF,EACIC,EAAU,SAAS,OAAO,EAC5BD,EAAG,UAAU,IAAI,SAAU,SAAU,eAAgB,WAAY,iBAAkB,cAAe,sBAAsB,EACxHA,EAAG,aAAa,YAAa,qBAAqB,UACzCC,EAAU,SAAS,OAAO,EACnCD,EAAG,UAAU,IACX,YACA,OACA,mCACA,6BACA,sCACA,2CACA,kCACA,sCACF,EACAA,EAAG,aAAa,YAAa,YAAY,MACpC,CACLA,EAAG,UAAU,IAAI,SAAU,kBAAmB,SAAU,iBAAkB,eAAgB,gDAAgD,EAC1IA,EAAG,aAAa,YAAa,OAAO,EAEpC,IAAMG,EAAWC,GAAaJ,CAAE,EAEhCE,EAAQ,IAAM,CACZC,EAAS,WAAW,CACtB,CAAC,CACH,CACF,CAAC,EAEDJ,EAAO,UAAU,gBAAiB,CAACC,EAAIK,EAAG,CAAE,QAAAH,CAAQ,IAAM,CACxDF,EAAG,UAAU,IACX,oBACA,eACA,iBACA,WACA,OACA,SACA,eACA,kBACA,SACA,eACA,oBACA,oBACA,gCACA,eACA,UACA,yBACA,kDACA,gDACA,yCACA,2CACA,iDACA,uCACA,yCACA,+CACA,kEACA,mEACA,uFACA,wDACA,uDACA,4DACF,EACAA,EAAG,aAAa,OAAQ,OAAO,EAC/BA,EAAG,aAAa,YAAa,aAAa,EAE1C,IAAMG,EAAWC,GAAaJ,CAAE,EAEhCE,EAAQ,IAAM,CACZC,EAAS,WAAW,CACtB,CAAC,CACH,CAAC,EAEDJ,EAAO,UAAU,sBAAuB,CAACC,EAAIK,EAAG,CAAE,QAAAH,CAAQ,IAAM,CAC9DF,EAAG,UAAU,IACX,wBACA,OACA,SACA,cACA,eACA,iBACA,QACA,UACA,cACA,cACA,uCACA,wDACA,kCACA,0CACF,EACAA,EAAG,aAAa,OAAQ,OAAO,EAC/BA,EAAG,aAAa,YAAa,mBAAmB,EAEhD,IAAMM,EAAW,CACf,eAAgB,CACd,cACA,OACA,oDACA,wBACA,iEACA,iCACA,0EACF,EACA,aAAc,CACZ,aACA,OACA,oDACA,wBACA,iEACA,iCACA,0EACF,EACA,cAAe,CAAC,cAAe,SAAU,gBAAiB,OAAQ,OAAQ,mBAAoB,uCAAuC,EACrI,YAAa,CAAC,aAAc,SAAU,gBAAiB,OAAQ,OAAQ,mBAAoB,uCAAuC,CACpI,EAEA,SAASC,EAAWC,EAAS,CACvB,OAAO,UAAU,eAAe,KAAKF,EAAUE,CAAO,GAAGR,EAAG,UAAU,IAAI,GAAGM,EAASE,CAAO,CAAC,CACpG,CAEAD,EAAWP,EAAG,aAAa,YAAY,GAAK,cAAc,EAE1D,IAAMS,EAAWC,GAAU,CACzB,GAAIA,EAAM,OAAO,QAAQ,QAAQ,EAC/B,OAEF,IAAIC,EAAQD,EAAM,cAAc,eAAe,cAAc,OAAO,EAC/DC,IAAOA,EAAQD,EAAM,cAAc,eAAe,cAAc,UAAU,GAC/EC,GAAO,MAAM,CACf,EAEAX,EAAG,iBAAiB,QAASS,CAAO,EAEpCP,EAAQ,IAAM,CACZF,EAAG,oBAAoB,QAASS,CAAO,CACzC,CAAC,CACH,CAAC,EAEDV,EAAO,UAAU,qBAAuBC,GAAO,CAC7CA,EAAG,UAAU,IAAI,wBAAyB,OAAQ,eAAgB,QAAS,UAAW,8BAA+B,sCAAsC,EAC3JA,EAAG,aAAa,YAAa,OAAO,CACtC,CAAC,EAEDD,EAAO,UAAU,iBAAkB,CAACC,EAAI,CAAE,SAAAY,CAAS,EAAG,CAAE,QAAAV,CAAQ,IAAM,CACpEF,EAAG,UAAU,IACX,kBACA,qBACA,eACA,iBACA,WACA,OACA,SACA,eACA,kBACA,SACA,eACA,oBACA,oBACA,gCACA,eACA,eACA,UACA,wCACA,yCACA,6DACA,kDACA,iDACA,uDACA,uCACA,sCACA,4CACA,2CACA,0CACA,iCACF,EACAA,EAAG,aAAa,OAAQ,OAAO,EAC/BA,EAAG,aAAa,YAAa,cAAc,EAC3C,IAAMW,EAAQX,EAAG,cAAc,OAAO,EACtC,GAAI,CAACW,GAASA,EAAM,aAAa,MAAM,IAAM,SAC3C,MAAM,IAAI,MAAM,GAAGC,CAAQ,yCAAyC,EAEjED,EAAM,aAAa,MAAM,GAAGA,EAAM,aAAa,OAAQ,QAAQ,EAC/DA,EAAM,aAAa,WAAW,GAAGA,EAAM,aAAa,YAAa,SAAS,EAC1EA,EAAM,aAAa,sBAAsB,GAC5CA,EAAM,aAAa,uBAAwB,cAAc,EAGtDA,EAAM,aAAa,IAAI,GAC1BA,EAAM,aAAa,KAAM,KAAKE,EAAO,CAAC,EAAE,EAE1CF,EAAM,aAAa,WAAY,GAAG,EAClCA,EAAM,aAAa,eAAgB,KAAK,EACxCA,EAAM,aAAa,cAAe,KAAK,EACvCA,EAAM,aAAa,aAAc,KAAK,EACtCA,EAAM,aAAa,YAAa,sBAAsB,EACtDA,EAAM,UAAU,IAAI,YAAa,OAAQ,OAAQ,cAAc,EAE/D,IAAMG,EAAW,SAAS,cAAc,QAAQ,EAChDA,EAAS,aAAa,OAAQ,QAAQ,EACtCA,EAAS,aAAa,WAAY,IAAI,EACtCA,EAAS,aAAa,aAAc,UAAU,EAC9CA,EAAS,aAAa,gBAAiBH,EAAM,aAAa,IAAI,CAAC,EAC/DG,EAAS,aAAa,YAAa,iBAAiB,EACpDA,EAAS,YACPC,EAAU,CACR,KAAM,GACN,QAAS,8DACT,MAAO,CACL,cAAe,GACf,KAAM,cACR,CACF,CAAC,CACH,EACAD,EAAS,UAAU,IACjB,cACA,eACA,iBACA,iBACA,WACA,eACA,+CACA,oCACA,SACA,gBACA,oBACA,gCACA,eACA,iBACA,qBACA,kCACA,6BACA,mCACA,eACA,WACA,yCACF,EACAd,EAAG,YAAYc,CAAQ,EAEvB,IAAME,EAAa,IAAM,CACnBL,EAAM,OAAS,MACjBA,EAAM,OAAS,WAAWA,EAAM,KAAK,GAAK,GAAK,EAC1CA,EAAM,SAAS,EACtBA,EAAM,cAAc,IAAI,MAAM,QAAS,CAAE,QAAS,EAAK,CAAC,CAAC,EACzDA,EAAM,cAAc,IAAI,MAAM,SAAU,CAAE,QAAS,EAAK,CAAC,CAAC,CAC5D,EAEAG,EAAS,iBAAiB,QAASE,CAAU,EAE7C,IAAMC,EAAS,SAAS,cAAc,QAAQ,EAC9CA,EAAO,aAAa,OAAQ,QAAQ,EACpCA,EAAO,aAAa,WAAY,IAAI,EACpCA,EAAO,aAAa,aAAc,UAAU,EAC5CA,EAAO,aAAa,gBAAiBN,EAAM,aAAa,IAAI,CAAC,EAC7DM,EAAO,aAAa,YAAa,iBAAiB,EAClDA,EAAO,YACLF,EAAU,CACR,KAAM,GACN,QAAS,8DACT,MAAO,CACL,cAAe,GACf,KAAM,cACR,CACF,CAAC,CACH,EACAE,EAAO,UAAU,IACf,cACA,eACA,iBACA,iBACA,WACA,eACA,+CACA,oCACA,SACA,gBACA,iBACA,gCACA,eACA,iBACA,qBACA,kCACA,6BACA,mCACA,eACA,WACA,yCACF,EAEAjB,EAAG,YAAYiB,CAAM,EAErB,IAAMC,EAAW,IAAM,CACjBP,EAAM,OAAS,MACjBA,EAAM,OAAS,WAAWA,EAAM,KAAK,GAAK,GAAK,EAC1CA,EAAM,OAAO,EACpBA,EAAM,cAAc,IAAI,MAAM,QAAS,CAAE,QAAS,EAAK,CAAC,CAAC,EACzDA,EAAM,cAAc,IAAI,MAAM,SAAU,CAAE,QAAS,EAAK,CAAC,CAAC,CAC5D,EAEAM,EAAO,iBAAiB,QAASC,CAAQ,EAEzC,IAAMf,EAAWC,GAAaJ,CAAE,EAEhCE,EAAQ,IAAM,CACZC,EAAS,WAAW,EACpBW,EAAS,oBAAoB,QAASE,CAAU,EAChDC,EAAO,oBAAoB,QAASC,CAAQ,CAC9C,CAAC,CACH,CAAC,CACH,CC5Ve,SAARC,GAAkBC,EAAQ,CAC/BA,EAAO,UAAU,UAAW,CAACC,EAAI,CAAE,UAAAC,CAAU,IAAM,CACjDD,EAAG,UAAU,IACX,OACA,eACA,QACA,UACA,eACA,cACA,cACA,iDACA,wCACA,mCACA,0BACF,EACIC,EAAU,CAAC,IAAM,SACnBD,EAAG,UAAU,IACX,oBACA,mBACA,OACA,QACA,QACA,eACA,8CACA,kCACA,oCACA,sCACA,kCACA,6BACF,EACAA,EAAG,aAAa,YAAa,aAAa,GACrCA,EAAG,aAAa,YAAa,OAAO,CAC7C,CAAC,CACH,CChCe,SAARE,GAAkBC,EAAQ,CAC/BA,EAAO,UAAU,YAAa,CAACC,EAAIC,EAAG,CAAE,QAAAC,CAAQ,IAAM,CACpDF,EAAG,UAAU,IACX,eACA,WACA,iBACA,eACA,SACA,kBACA,eACA,eACA,+BACA,8BACA,sBACA,4BACA,6BACA,iDACA,gCACA,qCACA,+BACA,4BACA,iCACA,2BACA,qDACA,kDACF,EACAA,EAAG,aAAa,YAAa,SAAS,EACtCA,EAAG,aAAa,OAAQ,SAAS,EAEjC,SAASG,EAAiBC,EAAM,CAC9B,IAAMC,EAAcD,EAAK,cAAc,iBAAiB,EACpDC,GAAaA,EAAY,MAAM,CACrC,CAEA,SAASC,EAAgBF,EAAM,CAC7B,IAAMG,EAAWH,EAAK,iBAAiB,iBAAiB,EACpDG,EAAS,QACXA,EAASA,EAAS,OAAS,CAAC,EAAE,MAAM,CAExC,CAEA,SAASC,EAAaC,EAAQ,CAC5B,IAAMC,EAAWV,EAAG,cAAc,wBAAwB,EACtDU,GAAUA,EAAS,gBAAgB,eAAe,EAClDA,IAAaD,GAAQA,EAAO,aAAa,gBAAiB,MAAM,CACtE,CAEA,SAASE,EAAUC,EAAO,CACxB,OAAQA,EAAM,IAAK,CACjB,IAAK,SACL,IAAK,WACHA,EAAM,eAAe,EACrB,MACF,IAAK,OACHT,EAAiBH,CAAE,EACnB,MACF,IAAK,MACHM,EAAgBN,CAAE,EAClB,MACF,IAAK,KACL,IAAK,UAAW,CACdY,EAAM,eAAe,EACrB,IAAIC,EAAWD,EAAM,OAAO,uBACxBC,GAAYA,EAAS,aAAa,WAAW,IAAM,cACrDA,EAAS,MAAM,GAEfA,EAAWD,EAAM,OAAO,cAAc,uBAClCC,GAAYA,EAAS,UAAY,MACnCP,EAAgBO,CAAQ,GAG5B,KACF,CACA,IAAK,OACL,IAAK,YAAa,CAChBD,EAAM,eAAe,EACrB,IAAIE,EAAWF,EAAM,OAAO,mBACxBE,EACFA,EAAS,MAAM,GAEfA,EAAWF,EAAM,OAAO,cAAc,mBAClCE,GAAYA,EAAS,UAAY,MACnCX,EAAiBW,CAAQ,GAG7B,KACF,CACA,IAAK,IACL,IAAK,QACHN,EAAaI,EAAM,MAAM,EACzB,MACF,QACE,KACJ,CACF,CAEA,SAASG,EAAQH,EAAO,CAClBA,EAAM,OAAO,aAAa,WAAW,IAAM,aAAaJ,EAAaI,EAAM,MAAM,CACvF,CAEAZ,EAAG,iBAAiB,QAASe,CAAO,EACpCf,EAAG,iBAAiB,UAAWW,CAAS,EACxCT,EAAQ,IAAM,CACZF,EAAG,oBAAoB,UAAWW,CAAS,EAC3CX,EAAG,oBAAoB,QAASe,CAAO,CACzC,CAAC,CACH,CAAC,EAEDhB,EAAO,UAAU,SAAWC,GAAO,CACjCA,EAAG,UAAU,IAAI,eAAgB,UAAU,EAC3CA,EAAG,aAAa,YAAa,MAAM,EACnCA,EAAG,aAAa,OAAQ,OAAO,CACjC,CAAC,EAEDD,EAAO,UAAU,gBAAiB,CAACC,EAAI,CAAE,SAAAgB,CAAS,EAAG,CAAE,OAAAjB,CAAO,IAAM,CAClEC,EAAG,UAAU,IAAI,cAAe,OAAQ,eAAgB,MAAO,QAAS,eAAgB,kBAAmB,8BAA8B,EACzIA,EAAG,aAAa,OAAQ,cAAc,EACtCA,EAAG,aAAa,YAAa,aAAa,EAC1C,IAAMiB,EAAOlB,EAAO,YAAYC,EAAG,cAAgBkB,GAAWA,EAAO,aAAa,WAAW,IAAM,MAAM,EACzG,GAAI,CAACD,EACH,MAAM,IAAI,MAAM,GAAGD,CAAQ,uCAAuC,EAEpE,GAAI,CAAChB,EAAG,aAAa,IAAI,EAAG,CAC1B,IAAMmB,EAAK,MAAMC,EAAO,CAAC,GACzBpB,EAAG,aAAa,KAAMmB,CAAE,CAC1B,CACAF,EAAK,aAAa,kBAAmBjB,EAAG,aAAa,IAAI,CAAC,CAC5D,CAAC,EAEDD,EAAO,UAAU,cAAe,CAACC,EAAI,CAAE,UAAAqB,CAAU,IAAM,CACrDrB,EAAG,UAAU,IAAI,WAAY,OAAQ,eAAgB,MAAO,QAAS,eAAgB,cAAc,EACnGA,EAAG,aAAa,YAAa,WAAW,EACxC,IAAMsB,EAAUvB,EAAO,YAAYC,EAAG,cAAgBkB,GAAWA,EAAO,aAAa,WAAW,IAAM,SAAS,EAC/G,SAASK,GAAiB,CACxBvB,EAAG,UAAU,IACX,uBACA,oCACA,uBACA,oCACA,yBACA,sCACA,2BACA,wCACA,iDACA,8DACA,iDACA,6DACF,EACAA,EAAG,aAAa,WAAY,GAAG,CACjC,CACIsB,GACFC,EAAe,EACfvB,EAAG,aAAa,OAAQ,QAAQ,EAChCA,EAAG,aAAa,WAAY,GAAG,GACtBqB,EAAU,SAAS,aAAa,EACzCE,EAAe,EAEfvB,EAAG,aAAa,WAAY,IAAI,CAEpC,CAAC,CACH,CC9Je,SAARwB,GAAkBC,EAAQ,CAC/BA,EAAO,UAAU,iBAAkB,CAACC,EAAI,CAAE,UAAAC,CAAU,IAAM,CACxDD,EAAG,cAAgB,CACjB,WAAYC,EAAU,SAAS,UAAU,EACzC,QAAQC,EAAM,CACZF,EAAG,aAAa,gBAAiBE,CAAI,CACvC,CACF,EACIF,EAAG,cAAc,aACnBA,EAAG,aAAa,gBAAiB,MAAM,EACvCA,EAAG,aAAa,gBAAiB,OAAO,EACnCA,EAAG,aAAa,IAAI,GACvBA,EAAG,aAAa,KAAM,KAAKG,EAAO,CAAC,EAAE,EAG3C,CAAC,EAEDJ,EAAO,UAAU,SAAU,CAACC,EAAI,CAAE,SAAAI,EAAU,UAAAH,CAAU,EAAG,CAAE,QAAAI,EAAS,OAAAN,CAAO,IAAM,CAC/E,GAAIC,EAAG,UAAY,KACjB,MAAM,IAAI,MAAM,GAAGI,CAAQ,wBAAwB,EAErDJ,EAAG,UAAU,IACX,SACA,QACA,aACA,0BACA,cACA,OACA,eACA,oBACA,kBACA,aACA,MACA,YACA,SACA,eACA,6BACA,gCACA,eACA,WACA,YACA,UACF,EACAA,EAAG,aAAa,OAAQ,MAAM,EAC9BA,EAAG,aAAa,mBAAoB,UAAU,EAC9CA,EAAG,aAAa,WAAY,IAAI,EAChCA,EAAG,aAAa,YAAa,MAAM,EACnC,IAAMM,EAAYL,EAAU,SAAS,KAAK,EAEpCM,GAAe,IAAM,CACzB,GAAID,EAAW,OACf,IAAIE,EAAUR,EAAG,uBACjB,KAAOQ,GAAW,CAAC,OAAO,UAAU,eAAe,KAAKA,EAAS,eAAe,GAC9EA,EAAUA,EAAQ,uBAEpB,GAAI,CAAC,OAAO,UAAU,eAAe,KAAKA,EAAS,eAAe,EAChE,MAAM,IAAI,MAAM,GAAGJ,CAAQ,mDAAmD,EAEhF,OAAOI,CACT,GAAG,EAEH,SAASC,EAAkBC,EAAQ,CACjC,GAAI,CAACV,EAAG,aAAa,iBAAiB,GAAK,CAACA,EAAG,aAAa,YAAY,EACtE,GAAIU,GAAUA,EAAO,aAAa,IAAI,EACpCV,EAAG,aAAa,kBAAmBU,EAAO,EAAE,MAE5C,OAAM,IAAI,MAAM,GAAGN,CAAQ,2DAA2D,CAG5F,CAEA,IAAIO,EACJ,GAAIL,EAAW,CAEb,GADAK,EAAcZ,EAAO,YAAYC,EAAG,cAAgBU,GAAWA,EAAO,aAAa,WAAW,IAAM,UAAU,EAC1G,CAACC,EACH,MAAM,IAAI,MAAM,GAAGP,CAAQ,4BAA4BL,EAAO,SAAS,YAAY,CAAC,UAAU,EAEhGU,EAAkBE,CAAW,CAC/B,MAAWJ,EACTE,EAAkBF,EAAY,cAAc,WAAaA,EAAc,MAAS,EAEhFE,EAAkB,EAGpB,SAASG,EAAiBC,EAAQ,CAC5BA,EACEN,EAAY,cAAc,WAAYA,EAAY,iBAAiB,QAASO,CAAY,EACvFP,EAAY,iBAAiB,cAAeQ,CAAa,EAE1DR,EAAY,cAAc,WAAYA,EAAY,oBAAoB,QAASO,CAAY,EAC1FP,EAAY,oBAAoB,cAAeQ,CAAa,CAErE,CAEA,SAASC,EAAMC,EAAc,GAAOC,EAAe,GAAO,CACxDlB,EAAG,eAAiB,GAChB,OAAO,WAAW,kCAAkC,EAAE,SACxDA,EAAG,UAAU,IAAI,SAAU,WAAY,WAAW,EAClD,OAAO,OAAOA,EAAG,MAAO,CACtB,KAAM,MACN,IAAK,KACP,CAAC,GAEDA,EAAG,UAAU,IAAI,WAAY,WAAW,EAE1C,IAAI,oBAAoB,cAAemB,CAAO,EAC9C,IAAI,oBAAoB,QAASA,CAAO,EACxCnB,EAAG,oBAAoB,UAAWoB,CAAS,EACvCd,EACEW,GACFN,EAAY,UAAU,UAAU,GAGlCC,EAAiB,EAAI,EACjBM,GAAcX,EAAY,MAAM,EAChCA,EAAY,cAAc,YAC5BA,EAAY,cAAc,QAAQ,EAAK,EAG7C,CAEAP,EAAG,MAAQ,CAAE,MAAAgB,CAAM,EAEnB,SAASK,EAAqBC,EAAK,CACjC,OAAOA,EAAI,SAAW,GAAK,KAAK,KAAKA,CAAG,CAC1C,CAEA,SAASC,EAAaC,EAAM,CAC1B,IAAMC,EAAQD,EAAK,WAAW;AAAA,EAAM,EAAE,EAAE,KAAK,EAC7C,OAAIC,EAAcA,EAAM,CAAC,EAAE,YAAY,EAChC,EACT,CAEA,SAASC,EAAaJ,EAAKK,EAAO,CAChC,QAASC,EAAI,EAAGA,EAAID,EAAM,OAAQC,IAChC,GAAIL,EAAaI,EAAMC,CAAC,EAAE,WAAW,EAAE,WAAWN,EAAI,YAAY,CAAC,EACjE,OAAAK,EAAMC,CAAC,EAAE,MAAM,EACR,GAGX,MAAO,EACT,CAEA,SAAST,EAAQU,EAAO,CAClBA,EAAM,OAAS,eAAeA,EAAM,eAAe,EACnD,EAAA7B,EAAG,aAAa,kBAAkB,IAAM,QAAUA,EAAG,SAAS6B,EAAM,aAAa,EAAE,CAAC,CAAC,IAElFb,EAAMV,CAAS,CACxB,CAEAN,EAAG,eAAiB,GAEpB,SAASoB,EAAUS,EAAO,CACxB,GAAI,CAAC7B,EAAG,eAAgB,CACtB,IAAI8B,EACJ,OAAQD,EAAM,IAAK,CACjB,IAAK,OACL,IAAK,YACCvB,IACFP,EAAO,SAAS,IAAMY,EAAY,MAAM,CAAC,EACzCK,EAAM,GAER,MACF,IAAK,MACL,IAAK,SACCV,GACFP,EAAO,SAAS,IAAMY,EAAY,MAAM,CAAC,EAE3CK,EAAM,OAAW,EAAI,EACrB,MACF,IAAK,MACL,IAAK,IACL,IAAK,QACCa,EAAM,MAAQ,QAChBA,EAAM,eAAe,EACrBA,EAAM,OAAO,MAAM,GAErBb,EAAM,EACFV,GACFK,EAAY,UAAU,UAAU,EAElC,MACF,IAAK,OACL,IAAK,YACHkB,EAAM,eAAe,EACrBC,EAAW9B,EAAG,cAAc,2EAA2E,EAClG8B,IAAUA,EAAW9B,EAAG,cAAc,iCAAiC,GACxE8B,GACFA,EAAS,MAAM,EAEjB,MACF,IAAK,KACL,IAAK,UAAW,CACdD,EAAM,eAAe,EACrB,IAAIE,EAAY/B,EAAG,iBAAiB,gFAAgF,EAChH+B,EAAU,OACZD,EAAWC,EAAUA,EAAU,OAAS,CAAC,EAEzCD,EAAW9B,EAAG,cAAc,uDAAuD,EAEjF8B,GACFA,EAAS,MAAM,EAEjB,KACF,CACA,IAAK,OACL,IAAK,SACHD,EAAM,eAAe,EACrBC,EAAW9B,EAAG,cAAc,wDAAwD,EAChF8B,GACFA,EAAS,MAAM,EAEjB,MACF,IAAK,MACL,IAAK,WACHD,EAAM,eAAe,EACrBC,EAAW9B,EAAG,cAAc,uDAAuD,EAC/E8B,GACFA,EAAS,MAAM,EAEjB,MACF,QACE,GAAIT,EAAqBQ,EAAM,GAAG,EAAG,CACnC,IAAIF,EAAQ3B,EAAG,iBAAiB,4DAA4D,EACvF0B,EAAaG,EAAM,IAAKF,CAAK,IAChCA,EAAQ3B,EAAG,iBAAiB,0CAA0C,EACtE0B,EAAaG,EAAM,IAAKF,CAAK,EAEjC,CACJ,CACF,CACF,CAEA,SAASzB,EAAKQ,EAAQ,CACpB,GAAIV,EAAG,UAAU,SAAS,QAAQ,EAAG,CAGnC,IAASgC,EAAT,UAAwB,CACtB,OAAI1B,EACK,cACEC,EAAY,cAAc,WAC5BP,EAAG,aAAa,YAAY,GAAK,eAEnC,aACT,EATAA,EAAG,UAAU,OAAO,QAAQ,EAC5BA,EAAG,eAAiB,GASpBiC,GAAgBvB,EAAQV,EAAI,CAC1B,UAAWgC,EAAa,EACxB,SAAU,QACV,WAAY,CACVE,GAAO5B,EAAY,EAAI,CAAC,EACxB6B,GAAK,EACLC,GAAM,CAAE,QAAS,CAAE,CAAC,EACpBC,GAAK,CACH,MAAM,CAAE,eAAAC,EAAgB,gBAAAC,EAAiB,SAAAC,CAAS,EAAG,CACnD,OAAO,OAAOA,EAAS,SAAS,MAAO,CACrC,SAAU,GAAG,KAAK,IAAI,EAAGF,CAAc,EAAI,CAAC,KAC5C,UAAW,GAAG,KAAK,IAAI,EAAGC,CAAe,EAAI,CAAC,IAChD,CAAC,CACH,CACF,CAAC,CACH,CACF,CAAC,EAAE,KAAK,CAAC,CAAE,EAAAE,EAAG,EAAAC,CAAE,IAAM,CACfpC,IACHP,EAAO,SAAS,IAAMC,EAAG,MAAM,CAAC,EAChCY,EAAiB,EAAK,GAExBb,EAAO,SAAS,IAAM,CACpB,IAAI,iBAAiB,cAAeoB,CAAO,EAC3C,IAAI,iBAAiB,QAASA,CAAO,EACrCnB,EAAG,iBAAiB,UAAWoB,CAAS,CAC1C,CAAC,EACD,OAAO,OAAOpB,EAAG,MAAO,CACtB,KAAM,GAAGyC,CAAC,KACV,IAAK,GAAGC,CAAC,IACX,CAAC,EACD1C,EAAG,UAAU,OAAO,WAAY,WAAW,CAC7C,CAAC,CACH,CACF,CAEA,SAASc,GAAe,CAClBP,EAAY,cAAc,YAC5BA,EAAY,cAAc,QAAQ,EAAI,EAExCL,EAAKK,CAAW,CAClB,CAEA,SAASQ,EAAcc,EAAO,CAC5BA,EAAM,eAAe,EACrB3B,EAAK,CACH,uBAAwB,CACtB,MAAO,CACL,MAAO,EACP,OAAQ,EACR,EAAG2B,EAAM,QACT,EAAGA,EAAM,QACT,IAAKA,EAAM,QACX,KAAMA,EAAM,QACZ,MAAOA,EAAM,QACb,OAAQA,EAAM,OAChB,CACF,CACF,CAAC,EACDjB,EAAiB,EAAK,CACxB,CAEIN,GACFK,EAAY,UAAU,KAAOT,EAC7BS,EAAY,UAAU,MAAQK,GAE9BJ,EAAiB,EAAI,EAGvB,SAAS+B,EAAgBd,EAAO,CAC1BA,EAAM,SAAW7B,GAAM6B,EAAM,OAAO,UAAU,SAAS,WAAW,IACpE7B,EAAG,UAAU,IAAI,QAAQ,EACzB,OAAO,OAAOA,EAAG,MAAO,CACtB,KAAM,MACN,IAAK,KACP,CAAC,EAEL,CAEAA,EAAG,iBAAiB,gBAAiB2C,CAAe,EAEpDtC,EAAQ,IAAM,CACRE,GAAaK,EAAiB,EAAK,EACvC,IAAI,oBAAoB,QAASO,CAAO,EACxC,IAAI,oBAAoB,cAAeA,CAAO,EAC9CnB,EAAG,oBAAoB,UAAWoB,CAAS,EAC3CpB,EAAG,oBAAoB,gBAAiB2C,CAAe,CACzD,CAAC,CACH,CAAC,EAED5C,EAAO,UAAU,cAAe,CAACC,EAAI,CAAE,SAAAI,CAAS,EAAG,CAAE,QAAAC,EAAS,OAAAN,CAAO,IAAM,CACzE,GAAIC,EAAG,UAAY,KACjB,MAAM,IAAI,MAAM,GAAGI,CAAQ,uBAAuB,EAEpDJ,EAAG,UAAU,IACX,2BACA,kCACA,2BACA,kCACA,wCACA,+CACA,+CACA,8CACA,8CACA,iDACA,sDACA,WACA,OACA,iBACA,eACA,QACA,aACA,OACA,SACA,UACA,iBACA,cACA,sCACA,6BACA,yBACA,8BACA,mBACA,sCACF,EACAA,EAAG,aAAa,OAAQ,UAAU,EAClCA,EAAG,aAAa,WAAY,IAAI,EAChCA,EAAG,aAAa,YAAa,WAAW,EAExC,IAAM4C,EAAO7C,EAAO,YAAYC,EAAG,cAAgBU,GAAWA,EAAO,aAAa,MAAM,IAAM,MAAM,EAEpG,SAASmC,EAAShB,EAAO,CACvB7B,EAAG,aAAa,WAAY,IAAI,EAC5B6B,EAAM,OAAS,cAAce,EAAK,MAAM,CAC9C,CAEA,SAASE,GAAU,CACjB9C,EAAG,aAAa,WAAY,GAAG,EAC/BA,EAAG,iBAAiB,OAAQ6C,CAAQ,EACpC7C,EAAG,iBAAiB,aAAc6C,CAAQ,CAC5C,CAEA7C,EAAG,iBAAiB,aAAc8C,CAAO,EACzC9C,EAAG,iBAAiB,QAAS8C,CAAO,EAEpCzC,EAAQ,IAAM,CACZL,EAAG,oBAAoB,aAAc8C,CAAO,EAC5C9C,EAAG,oBAAoB,QAAS8C,CAAO,EACvC9C,EAAG,oBAAoB,OAAQ6C,CAAQ,EACvC7C,EAAG,oBAAoB,aAAc6C,CAAQ,CAC/C,CAAC,CACH,CAAC,EAED9C,EAAO,UAAU,aAAc,CAACC,EAAI,CAAE,SAAAI,CAAS,EAAG,CAAE,QAAAC,EAAS,OAAAN,CAAO,IAAM,CACxEC,EAAG,UAAU,IACX,2BACA,2BACA,mCACA,sDACA,WACA,OACA,iBACA,eACA,QACA,aACA,OACA,SACA,UACA,iBACA,cACA,sCACA,6BACA,yBACA,8BACA,mBACA,sCACF,EACAA,EAAG,aAAa,OAAQ,UAAU,EAClCA,EAAG,aAAa,gBAAiB,MAAM,EACvCA,EAAG,aAAa,gBAAiB,OAAO,EACxCA,EAAG,aAAa,WAAY,IAAI,EAChCA,EAAG,aAAa,YAAa,UAAU,EAEvC,IAAM+C,EAAeC,EAAU,CAAE,KAAM,EAAc,QAAS,iBAAkB,MAAO,CAAE,cAAe,GAAM,KAAM,cAAe,CAAE,CAAC,EACtIhD,EAAG,YAAY+C,CAAY,EAE3B,IAAME,EAAalD,EAAO,YAAYC,EAAG,cAAgBU,GAAWA,EAAO,aAAa,MAAM,IAAM,MAAM,EAC1G,GAAI,CAACuC,EAAY,MAAM,IAAI,MAAM,GAAG7C,CAAQ,qBAAqB,EAE5DJ,EAAG,aAAa,IAAI,GACvBA,EAAG,aAAa,KAAM,KAAKG,EAAO,CAAC,EAAE,EAGvCH,EAAG,UAAY,CACb,KAAM,OACN,MAAO,OACP,SAAU,GACV,WAAY,CACVA,EAAG,aAAa,gBAAiB,OAAO,EACxC,KAAK,SAAW,GAChBA,EAAG,oBAAoB,UAAWoB,CAAS,EAC3C6B,EAAW,eAAiB,GAC5BA,EAAW,MAAM,MAAM,EAAI,CAC7B,CACF,EAEA,IAAMC,EAAY,CAAC,QAAS,aAAc,QAAS,GAAG,EAEtD,SAAS9B,EAAUS,EAAO,CACxB,GAAIqB,EAAU,SAASrB,EAAM,GAAG,EAAG,CACjCA,EAAM,gBAAgB,EACtBA,EAAM,eAAe,EACrB7B,EAAG,oBAAoB,UAAWoB,CAAS,EAC3C,IAAM+B,EAAcnD,EAAG,cAAc,+CAA+C,EAChFmD,IACFnD,EAAG,aAAa,gBAAiB,MAAM,EACvCA,EAAG,UAAU,KAAKA,CAAE,EACpBiD,EAAW,eAAiB,GAC5BlD,EAAO,SAAS,IAAM,CACpBoD,EAAY,MAAM,EAClBnD,EAAG,UAAU,SAAW,GACxBA,EAAG,aAAa,gBAAiB,EAAI,CACvC,CAAC,EAEL,CACF,CAEA,SAAS6C,EAAShB,EAAO,CACvB7B,EAAG,aAAa,WAAY,IAAI,EAC5B6B,EAAM,OAAS,cACjB7B,EAAG,UAAU,MAAM,EACnBA,EAAG,UAAU,SAAW,GACxBA,EAAG,aAAa,gBAAiB,EAAK,EACtCiD,EAAW,eAAiB,GAC5BA,EAAW,MAAM,GACRjD,EAAG,UAAU,WACtBA,EAAG,UAAU,MAAM,EACnBA,EAAG,UAAU,SAAW,GACxBA,EAAG,aAAa,gBAAiB,EAAK,EACtCiD,EAAW,eAAiB,GAC5BjD,EAAG,oBAAoB,UAAWoB,CAAS,EAE/C,CAEA,SAAS0B,EAAQjB,EAAO,CACtB7B,EAAG,aAAa,WAAY,GAAG,EAC3B6B,EAAM,OAAS,SAAWA,EAAM,cAAgB,UAAYA,EAAM,SAAW7B,GAAM6B,EAAM,OAAO,gBAAkB7B,IACpHA,EAAG,UAAU,KAAKA,CAAE,EACpBA,EAAG,UAAU,SAAW,GACxBA,EAAG,aAAa,gBAAiB,EAAI,EACrC6B,EAAM,gBAAgB,GACbA,EAAM,OAAS,cACxB7B,EAAG,iBAAiB,aAAc6C,CAAQ,EAC1C7C,EAAG,UAAU,KAAKA,CAAE,EACpBA,EAAG,UAAU,SAAW,GACxBA,EAAG,aAAa,gBAAiB,EAAI,IAEjCA,EAAG,UAAU,WACfA,EAAG,UAAU,SAAW,GACxBA,EAAG,aAAa,gBAAiB,EAAK,EACtCiD,EAAW,eAAiB,IAE9BjD,EAAG,iBAAiB,UAAWoB,CAAS,EACxCpB,EAAG,iBAAiB,OAAQ6C,CAAQ,EAExC,CAEA7C,EAAG,iBAAiB,aAAc8C,CAAO,EACzC9C,EAAG,iBAAiB,QAAS8C,CAAO,EACpC9C,EAAG,iBAAiB,QAAS8C,CAAO,EAEpCzC,EAAQ,IAAM,CACZL,EAAG,oBAAoB,aAAc8C,CAAO,EAC5C9C,EAAG,oBAAoB,QAAS8C,CAAO,EACvC9C,EAAG,oBAAoB,QAAS8C,CAAO,EACvC9C,EAAG,oBAAoB,OAAQ6C,CAAQ,EACvC7C,EAAG,oBAAoB,aAAc6C,CAAQ,CAC/C,CAAC,CACH,CAAC,EAED9C,EAAO,UAAU,wBAA0BC,GAAO,CAChDA,EAAG,UAAU,IAAI,wBAAyB,UAAW,UAAW,iBAAiB,EACjFA,EAAG,aAAa,YAAa,qBAAqB,CACpD,CAAC,EAEDD,EAAO,UAAU,mBAAqBC,GAAO,CAC3CA,EAAG,UAAU,IAAI,YAAa,QAAS,OAAQ,MAAM,EACrDA,EAAG,aAAa,OAAQ,cAAc,EACtCA,EAAG,aAAa,YAAa,gBAAgB,CAC/C,CAAC,EAEDD,EAAO,UAAU,eAAiBC,GAAO,CACvCA,EAAG,UAAU,IAAI,kBAAmB,OAAQ,SAAU,UAAW,gBAAiB,YAAa,wBAAwB,EACvHA,EAAG,aAAa,YAAa,YAAY,CAC3C,CAAC,EAEDD,EAAO,UAAU,uBAAwB,CAACC,EAAI,CAAE,SAAAI,CAAS,EAAG,CAAE,QAAAC,EAAS,OAAAN,CAAO,IAAM,CAClF,GAAIC,EAAG,UAAY,MAAQA,EAAG,UAAY,MACxC,MAAM,IAAI,MAAM,GAAGI,CAAQ,8BAA8B,EAE3DJ,EAAG,UAAU,IACX,2BACA,2BACA,WACA,OACA,iBACA,eACA,QACA,aACA,OACA,SACA,UACA,iBACA,cACA,2CACA,0CACA,kCACA,iBACA,gCACA,kBACA,qCACF,EACAA,EAAG,aAAa,WAAY,IAAI,EAChCA,EAAG,aAAa,OAAQ,kBAAkB,EAC1CA,EAAG,aAAa,YAAa,oBAAoB,EAEjD,IAAMoD,EAAQJ,EAAU,CAAE,KAAM,EAAO,QAAS,mBAAoB,MAAO,CAAE,cAAe,GAAM,KAAM,cAAe,CAAE,CAAC,EAC1HhD,EAAG,QAAQoD,CAAK,EAEhB,SAASC,EAASC,EAASC,EAAW,GAAM,CACtCA,GACFxD,EAAO,SAAS,IAAM,CACpBC,EAAG,cAAc,IAAI,MAAM,SAAU,CAAE,QAAS,EAAK,CAAC,CAAC,CACzD,CAAC,EACHA,EAAG,aAAa,eAAgBsD,CAAO,CACzC,CAEA,SAASE,GAAa,CACpBxD,EAAG,SAAS,IAAI,CAACA,EAAG,SAAS,IAAI,CAAC,EAClCqD,EAASrD,EAAG,SAAS,IAAI,CAAC,CAC5B,CAEI,OAAO,UAAU,eAAe,KAAKA,EAAI,UAAU,IACrDqD,EAASrD,EAAG,SAAS,IAAI,EAAG,EAAK,EAEjCA,EAAG,iBAAiB,QAASwD,CAAU,GAGzC,IAAMZ,EAAO7C,EAAO,YAAYC,EAAG,cAAgBU,GAAWA,EAAO,aAAa,MAAM,IAAM,MAAM,EAEpG,SAASmC,EAAShB,EAAO,CACvB7B,EAAG,aAAa,WAAY,IAAI,EAC5B6B,EAAM,OAAS,cAAce,EAAK,MAAM,CAC9C,CAEA,SAASE,GAAU,CACjB9C,EAAG,aAAa,WAAY,GAAG,EAC/BA,EAAG,iBAAiB,OAAQ6C,CAAQ,EACpC7C,EAAG,iBAAiB,aAAc6C,CAAQ,CAC5C,CAEA7C,EAAG,iBAAiB,aAAc8C,CAAO,EACzC9C,EAAG,iBAAiB,QAAS8C,CAAO,EAEpCzC,EAAQ,IAAM,CACR,OAAO,UAAU,eAAe,KAAKL,EAAI,UAAU,IACrDA,EAAG,oBAAoB,QAASwD,CAAU,EAC1CxD,EAAG,oBAAoB,UAAWwD,CAAU,GAE9CxD,EAAG,oBAAoB,aAAc8C,CAAO,EAC5C9C,EAAG,oBAAoB,QAAS8C,CAAO,EACvC9C,EAAG,oBAAoB,OAAQ6C,CAAQ,EACvC7C,EAAG,oBAAoB,aAAc6C,CAAQ,CAC/C,CAAC,CACH,CAAC,EAED9C,EAAO,UAAU,oBAAqB,CAACC,EAAI,CAAE,SAAAI,EAAU,WAAAqD,CAAW,EAAG,CAAE,OAAAC,EAAQ,cAAAC,EAAe,QAAAtD,EAAS,OAAAN,CAAO,IAAM,CAClH,GAAIC,EAAG,UAAY,MAAQA,EAAG,UAAY,MACxC,MAAM,IAAI,MAAM,GAAGI,CAAQ,8BAA8B,EAE3DJ,EAAG,UAAU,IACX,2BACA,2BACA,WACA,OACA,iBACA,eACA,QACA,aACA,OACA,SACA,SACA,UACA,iBACA,cACA,2CACA,0CACA,kCACA,iBACA,gCACA,kBACA,mBACA,uBACA,6BACA,gBACA,sBACA,2BACA,oCACF,EACAA,EAAG,aAAa,WAAY,IAAI,EAChCA,EAAG,aAAa,OAAQ,OAAO,EAC/BA,EAAG,aAAa,OAAQ,eAAe,EACvCA,EAAG,aAAa,YAAa,iBAAiB,EAE9C,IAAM4D,EAAWD,EAAcF,CAAU,EACrCI,EAEJH,EAAO,IAAM,CACXE,EAAUE,GAASD,EAAQC,CAAI,CACjC,CAAC,EAED,SAAST,EAASC,EAASC,EAAW,GAAM,CAC1CvD,EAAG,aAAa,eAAgBsD,CAAO,EACnCC,GAAUvD,EAAG,cAAc,IAAI,MAAM,SAAU,CAAE,QAAS,EAAK,CAAC,CAAC,CACvE,CAEA,SAASwD,EAAW3B,EAAO,CACzB,GAAIA,EAAM,OAAS,UAAW,CAC5B,GAAIA,EAAM,MAAQ,KAAOA,EAAM,MAAQ,QACrC,OACSA,EAAM,MAAQ,KACvBA,EAAM,eAAe,CAEzB,CACI7B,EAAG,SAAS,IAAI,IAAM6D,GACxB7D,EAAG,SAAS,IAAI6D,CAAK,CAEzB,CAEI,OAAO,UAAU,eAAe,KAAK7D,EAAI,UAAU,IACrD0D,EAAO,IAAM,CACXL,EAASrD,EAAG,SAAS,IAAI,IAAM6D,CAAK,CACtC,CAAC,EAED7D,EAAG,iBAAiB,QAASwD,CAAU,EACvCxD,EAAG,iBAAiB,UAAWwD,CAAU,GAG3C,IAAMZ,EAAO7C,EAAO,YAAYC,EAAG,cAAgBU,GAAWA,EAAO,aAAa,MAAM,IAAM,MAAM,EAEpG,SAASmC,EAAShB,EAAO,CACvB7B,EAAG,aAAa,WAAY,IAAI,EAC5B6B,EAAM,OAAS,cAAce,EAAK,MAAM,CAC9C,CAEA,SAASE,GAAU,CACjB9C,EAAG,aAAa,WAAY,GAAG,EAC/BA,EAAG,iBAAiB,OAAQ6C,CAAQ,EACpC7C,EAAG,iBAAiB,aAAc6C,CAAQ,CAC5C,CAEA7C,EAAG,iBAAiB,aAAc8C,CAAO,EACzC9C,EAAG,iBAAiB,QAAS8C,CAAO,EAEpCzC,EAAQ,IAAM,CACR,OAAO,UAAU,eAAe,KAAKL,EAAI,UAAU,IACrDA,EAAG,oBAAoB,QAASwD,CAAU,EAC1CxD,EAAG,oBAAoB,UAAWwD,CAAU,GAE9CxD,EAAG,oBAAoB,aAAc8C,CAAO,EAC5C9C,EAAG,oBAAoB,QAAS8C,CAAO,EACvC9C,EAAG,oBAAoB,OAAQ6C,CAAQ,EACvC7C,EAAG,oBAAoB,aAAc6C,CAAQ,CAC/C,CAAC,CACH,CAAC,CACH,CCjtBO,SAASkB,GAAsBC,EAASC,EAAa,IAAKC,EAAQ,GAAO,CAC9E,IAAIC,EAAM,OAAO,SAASF,CAAU,EAAI,GAAGA,CAAU,KAAOA,EACtDG,EAAMF,EAAQ,OAAO,WAAW,aAAaC,CAAG,GAAG,EAAI,IAAI,WAAW,aAAaA,CAAG,GAAG,EACzFE,EAAiBC,GAAU,CAC/BN,EAAQM,EAAM,OAAO,CACvB,EACA,OAAAF,EAAI,iBAAiB,SAAUC,CAAa,EAC5CL,EAAQI,EAAI,OAAO,EACZ,CACL,KAAMA,EACN,eAAgBC,EAChB,QAAS,CACP,KAAK,KAAK,oBAAoB,SAAU,KAAK,cAAc,CAC7D,CACF,CACF,CCZe,SAARE,GAAkBC,EAAQ,CAC/BA,EAAO,MAAM,mBAAoB,CAC/B,MAAO,CAAC,EACR,UAAW,CAAC,EAEZ,KAAKC,EAAK,KAAKC,EAAO,CAAC,GAAIC,EAAUC,EAAW,YAAaC,EAAU,IAAMC,EAAO,CAAC,EAAG,CACtF,GAAI,CAACH,EACH,MAAM,IAAI,MAAM,sCAAsC,EAExD,IAAMI,EAAO,CACX,GAAAN,EACA,SAAAE,EACA,SAAAC,EACA,QAAAC,EACA,KAAML,EAAO,SAASM,CAAI,CAC5B,EACA,KAAK,MAAM,KAAKC,CAAI,EACpB,KAAK,UAAU,QAASC,GAAa,CAC/B,OAAO,UAAU,eAAe,KAAKA,EAAU,OAAO,GAAGA,EAAS,MAAMD,CAAI,CAClF,CAAC,CACH,EAEA,OAAON,EAAIK,EAAM,CACf,GAAI,CAACL,EACH,MAAM,IAAI,MAAM,uDAAuD,EAEzE,IAAMQ,EAAQ,KAAK,MAAM,UAAWF,GAASA,EAAK,KAAON,CAAE,EAC3D,GAAIQ,EAAQ,GAAI,CACd,OAAW,CAACC,EAAKC,CAAK,IAAK,OAAO,QAAQL,CAAI,EAC5C,KAAK,MAAMG,CAAK,EAAE,KAAKC,CAAG,EAAIC,EAEhC,KAAK,UAAU,QAASH,GAAa,CAC/B,OAAO,UAAU,eAAe,KAAKA,EAAU,SAAS,GAAGA,EAAS,QAAQP,EAAIK,CAAI,CAC1F,CAAC,CACH,MACE,QAAQ,MAAM,yBAAyBL,CAAE,kBAAkB,CAE/D,EAEA,OAAOA,EAAI,CACT,GAAI,CAACA,EACH,MAAM,IAAI,MAAM,uDAAuD,EAEzE,KAAK,UAAU,QAASO,GAAa,CAC/B,OAAO,UAAU,eAAe,KAAKA,EAAU,SAAS,GAAGA,EAAS,QAAQP,CAAE,CACpF,CAAC,EACD,KAAK,MAAQ,KAAK,MAAM,OAAQW,GAAMA,EAAE,KAAOX,CAAE,CACnD,CACF,CAAC,EAEDD,EAAO,MAAM,gBAAiB,KACrB,CACL,IAAI,CAAE,GAAAC,EAAI,SAAAE,EAAU,SAAAC,EAAU,QAAAC,EAAS,KAAAC,CAAK,EAAI,CAAC,EAAG,CAClDN,EAAO,MAAM,kBAAkB,EAAE,KAAKC,EAAIE,EAAUC,EAAUC,EAASC,CAAI,CAC7E,EACA,OAAO,CAAE,GAAAL,EAAI,KAAAK,CAAK,EAAI,CAAC,EAAG,CACxBN,EAAO,MAAM,kBAAkB,EAAE,OAAOC,EAAIK,CAAI,CAClD,EACA,OAAOL,EAAI,CACTD,EAAO,MAAM,kBAAkB,EAAE,OAAOC,CAAE,CAC5C,EACA,YAAYO,EAAU,CACpB,OAAAR,EAAO,MAAM,kBAAkB,EAAE,UAAU,KAAKQ,CAAQ,EACjDR,EAAO,MAAM,kBAAkB,EAAE,UAAUA,EAAO,MAAM,kBAAkB,EAAE,UAAU,OAAS,CAAC,CACzG,EACA,eAAeQ,EAAU,CACvBR,EAAO,MAAM,kBAAkB,EAAE,UAAYA,EAAO,MAAM,kBAAkB,EAAE,UAAU,OAAQO,GAASA,IAASC,CAAQ,CAC5H,CACF,EACD,EAEDR,EAAO,UAAU,yBAA0B,CAACa,EAAI,CAAE,SAAAC,CAAS,EAAG,CAAE,QAAAC,EAAS,OAAAf,CAAO,IAAM,CACpF,GAAIa,EAAG,UAAY,UACjB,MAAM,IAAI,MAAM,GAAGC,CAAQ,mBAAmB,EAEhD,IAAME,EAAwB,CAAC,EAC/BH,EAAG,iBAAiB,UAAU,EAAE,QAASV,GAAa,CACpD,GAAI,CAACA,EAAS,aAAa,IAAI,EAC7B,MAAM,IAAI,MAAM,wCAAwC,EAE1Da,EAAsBb,EAAS,aAAa,IAAI,CAAC,EAAIA,CACvD,CAAC,EACDU,EAAG,UAAU,IAAI,QAAS,IAAK,UAAW,OAAQ,sBAAuB,OAAQ,cAAe,cAAe,iBAAkB,gBAAgB,EACjJA,EAAG,aAAa,WAAY,IAAI,EAChCA,EAAG,aAAa,YAAa,QAAQ,EACrCA,EAAG,aAAa,cAAe,OAAO,EACtCA,EAAG,aAAa,YAAa,sBAAsB,EAEnD,IAAMI,EAAoB,CAAC,OAAQ,WAAY,OAAQ,OAAQ,QAAS,mBAAoB,WAAW,EACjGC,EAAmB,CAAC,gEAAiE,OAAO,EAC5FC,EAAsB,CAAC,6DAA8D,OAAO,EAE5FC,EAAY,SAAS,cAAc,IAAI,EAC7CA,EAAU,UAAU,IAAI,GAAGH,EAAmB,GAAGC,EAAkB,gBAAiB,aAAa,EACjGE,EAAU,aAAa,WAAY,IAAI,EACvCP,EAAG,YAAYO,CAAS,EAExB,IAAMC,EAAc,SAAS,cAAc,IAAI,EAC/CA,EAAY,UAAU,IAAI,GAAGJ,EAAmB,GAAGC,EAAkB,WAAY,cAAc,EAC/FG,EAAY,aAAa,WAAY,IAAI,EACzCR,EAAG,YAAYQ,CAAW,EAE1B,IAAMC,EAAa,SAAS,cAAc,IAAI,EAC9CA,EAAW,UAAU,IAAI,GAAGL,EAAmB,GAAGC,EAAkB,gBAAiB,WAAY,WAAY,WAAW,EACxHI,EAAW,aAAa,WAAY,IAAI,EACxCT,EAAG,YAAYS,CAAU,EAEzB,IAAMC,EAAe,SAAS,cAAc,IAAI,EAChDA,EAAa,UAAU,IAAI,GAAGN,EAAmB,GAAGE,EAAqB,gBAAiB,cAAe,aAAa,EACtHI,EAAa,aAAa,WAAY,IAAI,EAC1CV,EAAG,YAAYU,CAAY,EAE3B,IAAMC,EAAiB,SAAS,cAAc,IAAI,EAClDA,EAAe,UAAU,IAAI,GAAGP,EAAmB,GAAGE,EAAqB,WAAY,eAAgB,aAAa,EACpHK,EAAe,aAAa,WAAY,IAAI,EAC5CX,EAAG,YAAYW,CAAc,EAE7B,IAAMC,EAAgB,SAAS,cAAc,IAAI,EACjDA,EAAc,UAAU,IAAI,GAAGR,EAAmB,GAAGE,EAAqB,gBAAiB,WAAY,WAAY,YAAa,aAAa,EAC7IM,EAAc,aAAa,WAAY,IAAI,EAC3CZ,EAAG,YAAYY,CAAa,EAE5B,IAAIC,EAAU,GACVC,EAAe,GAEbC,EAAuBC,GAAuBC,GAAY,CAC9DJ,EAAU,CAACI,CACb,EAAG,iBAAiBjB,CAAE,EAAE,iBAAiB,iBAAiB,EAAE,KAAK,CAAC,EAE5DkB,EAAuBF,GAAuBC,GAAY,CAC9DH,EAAe,CAACG,CAClB,EAAG,iBAAiBjB,CAAE,EAAE,iBAAiB,iBAAiB,EAAE,KAAK,CAAC,EAE5DL,EAAW,CACf,MAAMD,EAAM,CACV,IAAMyB,EAAQhB,EAAsBT,EAAK,QAAQ,EAAE,QAAQ,kBAAkB,UAAU,EAAI,EAC3FyB,EAAM,UAAU,IAAI,YAAa,iBAAkB,gCAAiC,eAAgB,WAAY,WAAW,EAC3HA,EAAM,aAAa,KAAMzB,EAAK,EAAE,EAChCP,EAAO,eAAegC,EAAOzB,EAAK,IAAI,EAClC,CAACoB,GAAgB,CAACD,EAChBnB,EAAK,SAAS,WAAW,MAAM,EACjCA,EAAK,SAAW,aAEhBA,EAAK,SAAW,gBAERoB,IACNpB,EAAK,WAAa,aACpBA,EAAK,SAAW,YACPA,EAAK,WAAa,kBAC3BA,EAAK,SAAW,iBAGhBA,EAAK,WAAa,YACpByB,EAAM,mBAAqB,oBAC3BA,EAAM,UAAU,IAAIA,EAAM,kBAAkB,EAC5CZ,EAAU,YAAYY,CAAK,GAClBzB,EAAK,WAAa,cAC3ByB,EAAM,mBAAqB,oBAC3BA,EAAM,UAAU,IAAIA,EAAM,kBAAkB,EAC5CX,EAAY,YAAYW,CAAK,GACpBzB,EAAK,WAAa,aAC3ByB,EAAM,mBAAqB,mBAC3BA,EAAM,UAAU,IAAIA,EAAM,kBAAkB,EAC5CV,EAAW,YAAYU,CAAK,GACnBzB,EAAK,WAAa,eAC3ByB,EAAM,mBAAqB,oBAC3BA,EAAM,UAAU,IAAIA,EAAM,kBAAkB,EAC5CT,EAAa,YAAYS,CAAK,GACrBzB,EAAK,WAAa,iBAC3ByB,EAAM,mBAAqB,mBAC3BA,EAAM,UAAU,IAAIA,EAAM,kBAAkB,EAC5CR,EAAe,YAAYQ,CAAK,IAEhCA,EAAM,mBAAqB,mBAC3BA,EAAM,UAAU,IAAIA,EAAM,kBAAkB,EAC5CP,EAAc,YAAYO,CAAK,GAEjChC,EAAO,SAASgC,CAAK,EACrBhC,EAAO,SAAS,IAAM,CAGpBgC,EAAM,aACNA,EAAM,UAAU,OAAOA,EAAM,mBAAoB,WAAW,CAC9D,CAAC,EACGzB,EAAK,QAAU,GACjB,WAAW,IAAM,CACfP,EAAO,MAAM,kBAAkB,EAAE,OAAOO,EAAK,EAAE,CACjD,EAAGA,EAAK,OAAO,CAEnB,EACA,QAAQN,EAAI,CACV,IAAMgC,EAAUpB,EAAG,cAAc,IAAIZ,CAAE,EAAE,EACrCgC,IACE,OAAO,WAAW,kCAAkC,EAAE,SACxDjC,EAAO,YAAYiC,CAAO,EAC1BA,EAAQ,OAAO,IAEfA,EAAQ,iBACN,gBACA,IAAM,CACJjC,EAAO,YAAYiC,CAAO,EAC1BA,EAAQ,OAAO,CACjB,EACA,CAAE,KAAM,EAAK,CACf,EACAA,EAAQ,UAAU,IAAIA,EAAQ,mBAAoB,WAAW,GAGnE,CACF,EACAjC,EAAO,MAAM,kBAAkB,EAAE,UAAU,KAAKQ,CAAQ,EACpDR,EAAO,MAAM,kBAAkB,EAAE,MAAM,QACzCA,EAAO,MAAM,kBAAkB,EAAE,MAAM,QAASO,GAAS,CACvDC,EAAS,MAAMD,CAAI,CACrB,CAAC,EAGHQ,EAAQ,IAAM,CACZa,EAAqB,OAAO,EAC5BG,EAAqB,OAAO,CAC9B,CAAC,CACH,CAAC,EAED/B,EAAO,UAAU,sBAAuB,CAACa,EAAI,CAAE,SAAAC,CAAS,IAAM,CAC5D,GAAID,EAAG,UAAY,MAAQA,EAAG,UAAY,KACxC,MAAM,IAAI,MAAM,GAAGC,CAAQ,yBAAyB,EAEtDD,EAAG,UAAU,IAAI,OAAQ,WAAY,eAAgB,UAAU,EAC/DA,EAAG,aAAa,YAAa,mBAAmB,EAChDA,EAAG,aAAa,OAAQ,OAAO,CACjC,CAAC,EAEDb,EAAO,UAAU,iBAAkB,CAACa,EAAI,CAAE,SAAAC,EAAU,UAAAoB,CAAU,IAAM,CAClE,GAAIrB,EAAG,UAAY,KACjB,MAAM,IAAI,MAAM,GAAGC,CAAQ,8BAA8B,EAE3DD,EAAG,UAAU,IAAI,sBAAuB,MAAO,OAAQ,OAAO,EAC1DqB,EAAU,SAAS,UAAU,EAC/BrB,EAAG,UAAU,IAAI,aAAc,oCAAqC,4BAA6B,SAAU,YAAa,aAAc,yBAAyB,EAE/JA,EAAG,UAAU,IAAI,sCAAuC,+BAA+B,EAEzFA,EAAG,aAAa,YAAa,cAAc,EAC3CA,EAAG,aAAa,OAAQ,OAAO,CACjC,CAAC,EAEDb,EAAO,UAAU,uBAAyBa,GAAO,CAC1CsB,GAAoBtB,EAAG,UAAW,QAAQ,GAC7CA,EAAG,UAAU,IAAI,cAAc,EAE5BsB,GAAoBtB,EAAG,UAAW,UAAU,GAC/CA,EAAG,UAAU,IAAI,gBAAgB,EAEnCA,EAAG,UAAU,IAAI,OAAQ,WAAY,8BAA+B,uCAAwC,sBAAsB,EAClIA,EAAG,aAAa,YAAa,oBAAoB,CACnD,CAAC,EAEDb,EAAO,UAAU,uBAAyBa,GAAO,CAC/CA,EAAG,UAAU,IAAI,eAAgB,UAAW,cAAe,gBAAgB,EAC3EA,EAAG,aAAa,YAAa,oBAAoB,CACnD,CAAC,EAEDb,EAAO,UAAU,6BAA+Ba,GAAO,CACrDA,EAAG,UAAU,IAAI,wBAAyB,UAAW,cAAe,uBAAuB,EAC3FA,EAAG,aAAa,YAAa,0BAA0B,CACzD,CAAC,EAEDb,EAAO,UAAU,yBAA2Ba,GAAO,CAC5CsB,GAAoBtB,EAAG,UAAW,UAAU,GAC/CA,EAAG,UAAU,IAAI,+CAA+C,EAElEA,EAAG,UAAU,IAAI,OAAQ,QAAS,sCAAsC,EACxEA,EAAG,aAAa,YAAa,sBAAsB,CACrD,CAAC,EAEDb,EAAO,UAAU,uBAAwB,CAACa,EAAI,CAAE,SAAAC,CAAS,EAAG,CAAE,QAAAC,EAAS,OAAAf,CAAO,IAAM,CAC7Ea,EAAG,aAAa,WAAW,GAAGA,EAAG,aAAa,YAAa,oBAAoB,EACpF,IAAIuB,EACJ,SAASC,GAAQ,CACfrC,EAAO,MAAM,kBAAkB,EAAE,OAAOoC,CAAG,CAC7C,CACApC,EAAO,YAAYa,EAAG,cAAgByB,GAChCA,EAAO,aAAa,WAAW,IAAM,gBACvCF,EAAME,EAAO,GACN,IAEF,EACR,EACGF,GACFvB,EAAG,iBAAiB,QAASwB,CAAK,EAClCtB,EAAQ,IAAM,CACZF,EAAG,oBAAoB,QAASwB,CAAK,CACvC,CAAC,GAED,QAAQ,MAAM,GAAGvB,CAAQ,2CAA2C,CAExE,CAAC,CACH,CC1Se,SAARyB,GAAkBC,EAAQ,CAC/BA,EAAO,UAAU,eAAiBC,GAAO,CACvCA,EAAG,UAAU,IAAI,UAAW,OAAQ,SAAU,gBAAgB,EAC9DA,EAAG,aAAa,OAAQ,YAAY,EACpCA,EAAG,aAAa,aAAc,YAAY,EAC1CA,EAAG,aAAa,YAAa,YAAY,CAC3C,CAAC,EAEDD,EAAO,UAAU,uBAAyBC,GAAO,CAC/CA,EAAG,UAAU,IAAI,OAAQ,eAAgB,OAAO,EAChDA,EAAG,aAAa,YAAa,oBAAoB,CACnD,CAAC,EAEDD,EAAO,UAAU,oBAAsBC,GAAO,CAC5CA,EAAG,aAAa,YAAa,iBAAiB,CAChD,CAAC,EAEDD,EAAO,UAAU,oBAAqB,CAACC,EAAI,CAAE,UAAAC,EAAW,WAAAC,CAAW,EAAG,CAAE,OAAAC,EAAQ,cAAAC,CAAc,IAAM,CA4BlG,GA3BAJ,EAAG,UAAU,IACX,cACA,eACA,iBACA,oBACA,kBACA,UACA,cACA,iBACA,gCACA,+BACA,sBACA,8BACA,uCACA,WACA,mBACA,eACA,4BACA,6BACA,iDACA,MACA,UACA,kBACA,qBACA,kCACA,4BACF,EACIC,EAAU,CAAC,EACbD,EAAG,UAAU,IAAI,QAAS,SAAUC,EAAU,CAAC,IAAM,WAAa,YAAc,WAAW,MACtF,CACL,IAAMI,EAAYD,EAAcF,CAAU,EAE1CC,EAAO,IAAM,CACXE,EAAWC,GAAW,CAChBA,GACFN,EAAG,UAAU,OAAO,gBAAgB,EACpCA,EAAG,UAAU,IAAI,SAAU,eAAe,EAC1CA,EAAG,aAAa,eAAgB,MAAM,IAEtCA,EAAG,UAAU,IAAI,gBAAgB,EACjCA,EAAG,UAAU,OAAO,SAAU,eAAe,EAC7CA,EAAG,aAAa,eAAgB,EAAK,EAEzC,CAAC,CACH,CAAC,CACH,CACAA,EAAG,aAAa,YAAa,iBAAiB,CAChD,CAAC,EAEDD,EAAO,UAAU,0BAA4BC,GAAO,CAClDA,EAAG,UAAU,IAAI,SAAU,UAAU,CACvC,CAAC,EAEDD,EAAO,UAAU,wBAA0BC,GAAO,CAChDA,EAAG,UAAU,IAAI,OAAQ,SAAU,eAAgB,gBAAgB,EAEnEA,EAAG,YACDO,EAAU,CACR,KAAM,EACN,MAAO,CACL,cAAe,GACf,KAAM,cACR,CACF,CAAC,CACH,EAEAP,EAAG,aAAa,YAAa,qBAAqB,CACpD,CAAC,CACH,CCtFe,SAARQ,GAAkBC,EAAQ,CAC/BA,EAAO,UAAU,oBAAqB,CAACC,EAAI,CAAE,WAAAC,EAAY,UAAAC,CAAU,EAAG,CAAE,OAAAC,EAAQ,SAAAC,EAAU,cAAAC,EAAe,OAAAN,EAAQ,QAAAO,CAAQ,IAAM,CAO7H,GANAN,EAAG,WAAaD,EAAO,SAAS,CAC9B,GAAI,OACJ,SAAU,MAAMQ,EAAO,CAAC,GACxB,KAAM,CAAAN,EACN,SAAUA,EAAaG,EAASH,CAAU,EAAI,EAChD,CAAC,EACGA,EAAY,CACd,IAAMO,EAAcH,EAAcJ,CAAU,EAC5CE,EAAO,IAAM,CACXK,EAAaC,GAAa,CACxBT,EAAG,WAAW,SAAWS,CAC3B,CAAC,CACH,CAAC,CACH,CACAT,EAAG,aAAa,OAAQ,QAAQ,EAC5BE,EAAU,SAAS,SAAS,GAC9BF,EAAG,UAAU,IAAI,+BAAgC,wCAAyC,qEAAqE,EAG5JA,EAAG,aAAa,WAAW,GAAGA,EAAG,aAAa,YAAa,iBAAiB,EAE7EA,EAAG,aAAa,IAAI,EACtBA,EAAG,WAAW,GAAKA,EAAG,aAAa,IAAI,GAEvCA,EAAG,WAAW,GAAK,KAAKO,EAAO,CAAC,GAChCP,EAAG,aAAa,KAAMA,EAAG,WAAW,EAAE,GAExCA,EAAG,aAAa,gBAAiBA,EAAG,WAAW,QAAQ,EACvDA,EAAG,aAAa,gBAAiB,QAAQ,EAEzC,IAAMU,EAAgB,IAAM,CAC1BV,EAAG,aAAa,gBAAiBA,EAAG,WAAW,QAAQ,CACzD,EAEMW,EAAQ,IAAM,CAClBX,EAAG,WAAW,SAAW,GACzBA,EAAG,iBAAiB,QAASY,CAAO,EACpCF,EAAc,CAChB,EAEME,EAAU,IAAM,CACpBZ,EAAG,WAAW,SAAW,CAACA,EAAG,WAAW,SACxCU,EAAc,EACdX,EAAO,SAAS,IAAM,CAChBC,EAAG,WAAW,MAAQA,EAAG,WAAW,WACtC,IAAI,iBAAiB,QAASW,EAAO,CAAE,KAAM,EAAK,CAAC,EACnDX,EAAG,oBAAoB,QAASY,CAAO,EAE3C,CAAC,CACH,EACAF,EAAc,EAEVV,EAAG,WAAW,MAChBA,EAAG,iBAAiB,QAASY,CAAO,EAEpCN,EAAQ,IAAM,CACZN,EAAG,oBAAoB,QAASY,CAAO,EACvC,IAAI,oBAAoB,QAASD,CAAK,CACxC,CAAC,GAEDR,EAAO,IAAM,CACXO,EAAc,CAChB,CAAC,CAEL,CAAC,EAEDX,EAAO,UAAU,YAAa,CAACC,EAAI,CAAE,SAAAa,EAAU,UAAAX,CAAU,EAAG,CAAE,OAAAC,EAAQ,QAAAG,CAAQ,IAAM,CAClF,IAAMQ,GAAW,IAAM,CACrB,IAAIC,EAAUf,EAAG,uBACjB,KAAOe,GAAW,CAAC,OAAO,UAAU,eAAe,KAAKA,EAAS,YAAY,GAC3EA,EAAUA,EAAQ,uBAEpB,OAAOA,CACT,GAAG,EAEH,GAAI,CAACD,EACH,MAAM,IAAI,MAAM,GAAGD,CAAQ,yCAAyC,EAEtEb,EAAG,UAAU,IACX,WACA,aACA,0BACA,SACA,QACA,SACA,OACA,eACA,aACA,SACA,YACA,iBACA,gBACA,6BACA,gCACA,eACA,WACA,YACA,UACF,EACAA,EAAG,aAAa,YAAa,SAAS,EACtCA,EAAG,aAAa,OAAQ,QAAQ,EAChCA,EAAG,aAAa,WAAY,IAAI,EAChCA,EAAG,aAAa,KAAMc,EAAQ,WAAW,QAAQ,EACjDd,EAAG,aAAa,kBAAmBc,EAAQ,WAAW,EAAE,EAExD,IAAIE,EAAWd,EAAU,SAAS,WAAW,EACzCc,IACFhB,EAAG,UAAU,OAAO,eAAe,EACnCA,EAAG,UAAU,IAAI,eAAe,GAGlC,IAAMiB,EAAmBC,GAAU,CACjCA,EAAM,gBAAgB,CACxB,EAEIlB,EAAG,aAAa,kBAAkB,IAAM,QAC1CA,EAAG,iBAAiB,QAASiB,CAAe,EAG9C,IAAIE,EAEJ,SAASC,GAAiB,CACxBC,GAAgBP,EAASd,EAAI,CAC3B,UAAWA,EAAG,aAAa,YAAY,GAAK,eAC5C,WAAY,CACVsB,GAAO,CAAC,EACRC,GAAK,EACLC,GAAM,CAAE,QAAS,CAAE,CAAC,EACnBR,EASG,OARAS,GAAK,CACH,MAAM,CAAE,eAAAC,EAAgB,gBAAAC,EAAiB,SAAAC,CAAS,EAAG,CACnD,OAAO,OAAOA,EAAS,SAAS,MAAO,CACrC,SAAU,GAAG,KAAK,IAAI,EAAGF,CAAc,EAAI,CAAC,KAC5C,UAAW,GAAG,KAAK,IAAI,EAAGC,CAAe,EAAI,CAAC,IAChD,CAAC,CACH,CACF,CAAC,CAEP,CACF,CAAC,EAAE,KAAK,CAAC,CAAE,EAAAE,EAAG,EAAAC,CAAE,IAAM,CACpB,OAAO,OAAO9B,EAAG,MAAO,CACtB,KAAM,GAAG6B,CAAC,KACV,IAAK,GAAGC,CAAC,IACX,CAAC,EACD9B,EAAG,UAAU,OAAO,WAAY,WAAW,CAC7C,CAAC,CACH,CAEAG,EAAO,IAAM,CACPW,EAAQ,WAAW,UACrBd,EAAG,UAAU,OAAO,QAAQ,EAC5BmB,EAAoBY,GAAWjB,EAASd,EAAIoB,CAAc,IAEtD,OAAO,WAAW,kCAAkC,EAAE,SACxDpB,EAAG,UAAU,IAAI,SAAU,WAAY,WAAW,EAClD,OAAO,OAAOA,EAAG,MAAO,CACtB,KAAM,MACN,IAAK,KACP,CAAC,GAEDA,EAAG,UAAU,IAAI,WAAY,WAAW,EAEtCmB,GAAmBA,EAAkB,EAE7C,CAAC,EAED,SAASa,EAAgBd,EAAO,CAC1BA,EAAM,SAAWlB,GAAMkB,EAAM,OAAO,UAAU,SAAS,WAAW,IACpElB,EAAG,UAAU,IAAI,QAAQ,EACzB,OAAO,OAAOA,EAAG,MAAO,CACtB,KAAM,MACN,IAAK,KACP,CAAC,EAEL,CAEAA,EAAG,iBAAiB,gBAAiBgC,CAAe,EAEpD1B,EAAQ,IAAM,CACZN,EAAG,oBAAoB,QAASiB,CAAe,EAC/CjB,EAAG,oBAAoB,gBAAiBgC,CAAe,CACzD,CAAC,CACH,CAAC,CACH,CC3Le,SAARC,GAAkBC,EAAQ,CAC/BA,EAAO,UAAU,aAAc,CAACC,EAAI,CAAE,WAAAC,CAAW,EAAG,CAAE,OAAAC,EAAQ,cAAAC,CAAc,IAAM,CAChFH,EAAG,UAAU,IAAI,eAAgB,WAAY,MAAO,SAAU,kBAAmB,cAAc,EAC/FA,EAAG,aAAa,YAAa,UAAU,EAEvC,IAAMI,EAAY,SAAS,cAAc,KAAK,EAC9CA,EAAU,UAAU,IAAI,aAAc,SAAU,SAAU,SAAU,iBAAkB,gCAAiC,cAAc,EACrIA,EAAU,aAAa,YAAa,oBAAoB,EACxD,OAAO,OAAOA,EAAU,MAAO,CAC7B,UAAW,mBACb,CAAC,EACDJ,EAAG,YAAYI,CAAS,EAExB,IAAMC,EAAcF,EAAcF,CAAU,EAE5CC,EAAO,IAAM,CACXG,EAAaC,GAAa,CACxB,OAAO,OAAOF,EAAU,MAAO,CAC7B,UAAW,eAAe,KAAOE,GAAY,EAAE,IACjD,CAAC,CACH,CAAC,CACH,CAAC,CACH,CAAC,CACH,CCvBe,SAARC,GAAkBC,EAAQ,CAC/BA,EAAO,UAAU,UAAYC,GAAO,CAClCA,EAAG,UAAU,IACX,qBACA,4BACA,2BACA,qBACA,2BACA,sCACA,2DACA,uCACA,mBACA,yBACA,yBACA,sBACA,kBACA,gBACA,yBACA,oBACA,eACA,kBACA,4BACA,mBACA,6BACA,sBACA,mBACA,iBACA,SACA,eACA,uDACA,4CACA,iDACA,kDACA,qCACA,0CACA,kCACA,sCACA,uCACA,WACA,eACA,eACA,WACA,QACF,EACAA,EAAG,aAAa,WAAY,IAAI,EAChCA,EAAG,aAAa,YAAa,OAAO,CACtC,CAAC,CACH,CC/CA,IAAAC,GAAuB,WAER,SAARC,GAAkBC,EAAQ,CAC/BA,EAAO,UAAU,UAAW,CAACC,EAAI,CAAE,WAAAC,CAAW,EAAG,CAAE,SAAAC,EAAU,QAAAC,CAAQ,IAAM,CACzEH,EAAG,UAAU,IAAI,iBAAiB,EAClCA,EAAG,aAAa,YAAa,OAAO,KACpC,WAAOA,EAAIE,EAASD,CAAU,CAAC,EAC3B,OAAO,UAAU,eAAe,KAAKD,EAAI,UAAU,IACrDA,EAAG,WAAW,GAAG,SAAWI,GAAW,CACrCJ,EAAG,SAAS,IAAII,CAAM,EACtBJ,EAAG,cAAc,IAAI,MAAM,SAAU,CAAE,QAAS,EAAK,CAAC,CAAC,CACzD,CAAC,EAEDG,EAAQ,IAAM,CACZH,EAAG,WAAW,IAAI,QAAQ,CAC5B,CAAC,EAEL,CAAC,CACH,CCdA,IAAMK,GAAa,OAAO,OAAO,CAC/B,cAAe,EACf,SAAU,EACV,gBAAiB,EACjB,KAAM,CACR,CAAC,EAEc,SAARC,GAAkBC,EAAQ,CAC/BA,EAAO,UAAU,WAAY,CAACC,EAAI,CAAE,UAAAC,CAAU,EAAG,CAAE,OAAAF,EAAQ,QAAAG,CAAQ,IAAM,CAmBvE,GAlBAF,EAAG,UAAYD,EAAO,SAAS,CAC7B,aAAc,OACd,QAAS,OACT,SAAU,MAAMI,EAAO,CAAC,GACxB,SAAU,GACV,SAAU,GACV,MAAO,CAAC,EACR,aAAc,OACd,UAAW,CAAC,EACZ,OAAQ,GACR,YAAa,OACb,WAAYN,GAAW,aAAa,CACtC,CAAC,EACDG,EAAG,SAAW,CACZ,IAAK,OACL,IAAK,MACP,EACAA,EAAG,UAAU,IAAI,iBAAkB,eAAgB,oBAAqB,oBAAqB,gCAAiC,eAAgB,SAAU,2CAA4C,iCAAiC,EACjOC,EAAU,SAAS,OAAO,EAC5BD,EAAG,UAAU,IACX,OACA,OACA,mCACA,6BACA,sDACA,mEACA,yDACA,qEACF,EACAA,EAAG,aAAa,YAAa,mBAAmB,MAC3C,CACLA,EAAG,UAAU,IACX,eACA,gCACA,qDACA,iCACA,uDACA,4CACA,iDACA,kDACA,sCACA,uCACA,0DACA,iEACA,4DACA,kEACA,iDACA,kBACA,SACA,iBACA,UACA,oBACA,cACF,EACAA,EAAG,aAAa,YAAa,QAAQ,EAErC,IAAMI,EAAWC,GAAaL,CAAE,EAEhCE,EAAQ,IAAM,CACZE,EAAS,WAAW,CACtB,CAAC,CACH,CACF,CAAC,EAEDL,EAAO,UAAU,iBAAkB,CAACC,EAAI,CAAE,SAAAM,CAAS,EAAG,CAAE,OAAAC,EAAQ,QAAAL,EAAS,OAAAH,CAAO,IAAM,CACpF,GAAIC,EAAG,UAAY,QACjB,MAAM,IAAI,MAAM,GAAGM,CAAQ,kCAAkC,EAG/D,IAAME,EAAST,EAAO,YAAYC,EAAG,cAAgBS,GAAW,OAAO,UAAU,eAAe,KAAKA,EAAQ,WAAW,CAAC,EACnHC,GAAS,IAAM,CACnB,IAAMC,EAAQZ,EAAO,YAAYC,EAAG,cAAgBS,GAAWA,EAAO,aAAa,WAAW,IAAM,OAAO,EAC3G,GAAIE,EACF,OAAOA,EAAM,cAAc,yBAAyB,CAGxD,GAAG,EAEH,GAAKH,EAEM,OAAO,UAAU,eAAe,KAAKR,EAAI,UAAU,GAC5DQ,EAAO,UAAU,SAAW,MAAM,QAAQR,EAAG,SAAS,IAAI,CAAC,EAC3DQ,EAAO,SAAS,IAAOI,GAAU,CAC/B,GAAIJ,EAAO,UAAU,SAAU,CAC7B,IAAMK,EAASb,EAAG,SAAS,IAAI,EAAE,QAAQY,CAAK,EAC9C,GAAIC,EAAS,GAAI,CACf,IAAMC,EAASd,EAAG,SAAS,IAAI,EAC/Bc,EAAO,OAAOD,EAAQ,CAAC,EACvBb,EAAG,SAAS,IAAIc,CAAM,CACxB,KAAO,CACL,IAAMC,EAAMf,EAAG,SAAS,IAAI,EAC5Be,EAAI,KAAKH,CAAK,EACdZ,EAAG,SAAS,IAAIe,CAAG,CACrB,CACF,MAAWf,EAAG,SAAS,IAAI,IAAMY,EAC/BZ,EAAG,SAAS,IAAIY,CAAK,EAErBZ,EAAG,SAAS,IAAI,EAAE,EAEpBA,EAAG,cAAc,IAAI,MAAM,SAAU,CAAE,QAAS,EAAK,CAAC,CAAC,CACzD,EACAQ,EAAO,SAAS,IAAMR,EAAG,SAAS,MAElCQ,EAAO,SAAS,IAAOI,GAAU,CAC/BZ,EAAG,MAAQY,EACXZ,EAAG,cAAc,IAAI,MAAM,SAAU,CAAE,QAAS,EAAK,CAAC,CAAC,CACzD,EACAQ,EAAO,SAAS,IAAM,IAAMR,EAAG,WA5B/B,OAAM,IAAI,MAAM,GAAGM,CAAQ,kCAAkC,EA+B/DN,EAAG,UAAU,IAAI,QAAQ,EACzBA,EAAG,aAAa,OAAQ,MAAM,EAE9B,IAAMgB,EAAc,SAAS,cAAc,MAAM,EAC3CC,EAAe,SAAS,cAAc,MAAM,EAClDA,EAAa,UAAU,IAAI,YAAa,WAAY,QAAQ,EAC5DD,EAAY,YAAYC,CAAY,EACpCD,EAAY,aAAa,YAAa,cAAc,EACpDA,EAAY,aAAa,WAAY,GAAG,EACxCA,EAAY,UAAU,IAAI,OAAQ,eAAgB,kBAAmB,QAAS,eAAgB,OAAQ,OAAQ,YAAa,wCAAwC,EACnKR,EAAO,UAAU,QAAUQ,EAE3B,IAAIE,EAEAR,IACGA,EAAM,aAAa,IAAI,GAC1BA,EAAM,aAAa,KAAM,OAAOP,EAAO,CAAC,EAAE,EAE5CK,EAAO,UAAU,aAAeE,EAAM,aAAa,IAAI,EACvDM,EAAY,aAAa,kBAAmBN,EAAM,aAAa,IAAI,CAAC,EAEpEQ,EAAgB,IAAI,iBAAiB,IAAM,CACzCV,EAAO,UAAU,aAAeE,EAAM,aAAa,IAAI,CACzD,CAAC,EAEDQ,EAAc,QAAQR,EAAO,CAAE,WAAY,GAAM,gBAAiB,CAAC,IAAI,CAAE,CAAC,GAG5E,SAASS,GAAiB,CACxB,GAAI,CAACnB,EAAG,MAAO,CACb,IAAMY,EAAQZ,EAAG,aAAa,aAAa,EACvCY,GACFK,EAAa,UAAYL,EACzBK,EAAa,UAAU,IAAI,uBAAuB,IAElDA,EAAa,UAAY,GACzBA,EAAa,UAAU,OAAO,uBAAuB,EAEzD,CACF,CAEAE,EAAe,EAEf,IAAMf,EAAW,IAAI,iBAAiB,IAAM,CAC1Ce,EAAe,CACjB,CAAC,EAEDf,EAAS,QAAQJ,EAAI,CAAE,WAAY,GAAM,gBAAiB,CAAC,aAAa,CAAE,CAAC,EAE3EO,EAAO,IAAM,CACPC,EAAO,UAAU,MAAM,SAAW,GACpCS,EAAa,UAAYT,EAAO,UAAU,MAAM,CAAC,EACjDS,EAAa,UAAU,OAAO,uBAAuB,GAC5CT,EAAO,UAAU,MAAM,OAAS,GACzCS,EAAa,UAAYT,EAAO,UAAU,MAAM,KAAK,IAAI,EACzDS,EAAa,UAAU,OAAO,uBAAuB,GAErDE,EAAe,CAEnB,CAAC,EAEDH,EAAY,aAAa,YAAa,cAAc,EACpDA,EAAY,aAAa,gBAAiBR,EAAO,UAAU,QAAQ,EACnEQ,EAAY,aAAa,gBAAiB,SAAS,EACnDA,EAAY,aAAa,oBAAqB,MAAM,EACpDA,EAAY,aAAa,OAAQ,UAAU,EAE3CT,EAAO,IAAM,CACXS,EAAY,aAAa,gBAAiBR,EAAO,UAAU,QAAQ,CACrE,CAAC,EAED,IAAMY,EAAQ,CAACC,EAAc,KAAU,CACrCb,EAAO,UAAU,SAAW,GAC5B,IAAI,oBAAoB,QAASY,CAAK,EACtCpB,EAAG,cAAc,oBAAoB,UAAWsB,CAAS,EACzDC,EAAU,KACNF,GAAaL,EAAY,MAAM,CACrC,EAEIQ,EACAD,EAEED,EAAaG,GAAU,CAC3B,OAAQA,EAAM,IAAK,CACjB,IAAK,OACL,IAAK,YAAa,CAChBA,EAAM,eAAe,EACrB,IAAIC,EAAY,EAChB,QAASC,EAAI,EAAGA,EAAIJ,EAAQ,OAAQI,IAClC,GAAIJ,EAAQI,CAAC,EAAE,aAAa,UAAU,IAAM,IAAK,CAC/CJ,EAAQI,CAAC,EAAE,aAAa,WAAY,IAAI,EACpCA,EAAIJ,EAAQ,OAAS,IAAGG,EAAYC,EAAI,GAC5C,KACF,CAEF,GAAIJ,EAAQG,CAAS,EAAE,aAAa,eAAe,IAAM,OAAQ,CAC3DA,IAAcH,EAAQ,OAAS,IAAGG,EAAY,GAClD,QAASC,EAAID,EAAWC,EAAIJ,EAAQ,OAAQI,IAC1C,GAAIJ,EAAQI,CAAC,EAAE,aAAa,eAAe,IAAM,OAAQ,CACvDD,EAAYC,EACZ,KACF,CAEJ,CACAJ,EAAQG,CAAS,EAAE,aAAa,WAAY,GAAG,EAC/CH,EAAQG,CAAS,EAAE,MAAM,EACzB,KACF,CACA,IAAK,KACL,IAAK,UAAW,CACdD,EAAM,eAAe,EACrB,IAAIG,EAAYL,EAAQ,OAAS,EACjC,QAASI,EAAIJ,EAAQ,OAAS,EAAGI,GAAK,EAAGA,IACvC,GAAIJ,EAAQI,CAAC,EAAE,aAAa,UAAU,IAAM,IAAK,CAC/CJ,EAAQI,CAAC,EAAE,aAAa,WAAY,IAAI,EACpCA,IAAM,IAAGC,EAAYD,EAAI,GAC7B,KACF,CAEF,GAAIJ,EAAQK,CAAS,EAAE,aAAa,eAAe,IAAM,OAAQ,CAC3DA,IAAc,IAAGA,EAAYL,EAAQ,OAAS,GAClD,QAASI,EAAIC,EAAWD,GAAK,EAAGA,IAC9B,GAAIJ,EAAQI,CAAC,EAAE,aAAa,eAAe,IAAM,OAAQ,CACvDC,EAAYD,EACZ,KACF,CAEJ,CACAJ,EAAQK,CAAS,EAAE,aAAa,WAAY,GAAG,EAC/CL,EAAQK,CAAS,EAAE,MAAM,EACzB,KACF,CACA,IAAK,OACL,IAAK,SACHH,EAAM,eAAe,EACrB,QAASE,EAAI,EAAGA,EAAIJ,EAAQ,OAAQI,IAClC,GAAIJ,EAAQI,CAAC,EAAE,aAAa,UAAU,IAAM,IAAK,CAC/CJ,EAAQI,CAAC,EAAE,aAAa,WAAY,IAAI,EACxC,KACF,CAEFJ,EAAQ,CAAC,EAAE,aAAa,WAAY,GAAG,EACvCA,EAAQ,CAAC,EAAE,MAAM,EACjB,MACF,IAAK,MACL,IAAK,WACHE,EAAM,eAAe,EACrB,QAASE,EAAI,EAAGA,EAAIJ,EAAQ,OAAQI,IAClC,GAAIJ,EAAQI,CAAC,EAAE,aAAa,UAAU,IAAM,IAAK,CAC/CJ,EAAQI,CAAC,EAAE,aAAa,WAAY,IAAI,EACxC,KACF,CAEFJ,EAAQA,EAAQ,OAAS,CAAC,EAAE,aAAa,WAAY,GAAG,EACxDA,EAAQA,EAAQ,OAAS,CAAC,EAAE,MAAM,EAClC,MACF,IAAK,IACL,IAAK,QACHE,EAAM,eAAe,EAChBjB,EAAO,UAAU,UACpBY,EAAM,EAAI,EAEZ,MACF,IAAK,SACHK,EAAM,eAAe,EACrBL,EAAM,EAAI,EACV,MACF,IAAK,MACHA,EAAM,EACN,MACF,IAAK,UACL,IAAK,QACL,IAAK,MACH,MACF,QACE,GAAIZ,EAAO,UAAU,YAAa,CAChC,QAASmB,EAAI,EAAGA,EAAIJ,EAAQ,OAAQI,IAClC,GAAIJ,EAAQI,CAAC,EAAE,aAAa,UAAU,IAAM,IAAK,CAC/CJ,EAAQI,CAAC,EAAE,aAAa,WAAY,IAAI,EACxC,KACF,CAEFnB,EAAO,UAAU,YAAY,CAC/B,CACJ,CACF,EAEMqB,EAAU,IAAM,CACpBrB,EAAO,UAAU,SAAW,CAACA,EAAO,UAAU,SAC1CA,EAAO,UAAU,WACdgB,IAASA,EAAUhB,EAAO,cAAc,IAAIA,EAAO,UAAU,QAAQ,EAAE,GAC5Ee,EAAUC,EAAQ,iBAAiB,eAAe,GAEpDzB,EAAO,SAAS,IAAM,CAChBS,EAAO,UAAU,UACnB,IAAI,iBAAiB,QAASY,EAAO,CAAE,KAAM,EAAK,CAAC,EACnDpB,EAAG,cAAc,iBAAiB,UAAWsB,CAAS,IAEtD,IAAI,oBAAoB,QAASF,CAAK,EACtCpB,EAAG,cAAc,oBAAoB,UAAWsB,CAAS,EACzDC,EAAU,KAEd,CAAC,CACH,EAEMO,EAAWL,GAAU,CACrBA,EAAM,MAAQ,UAAYjB,EAAO,UAAU,SAAUY,EAAM,EAAI,EAC1DK,EAAM,MAAQ,SACrBA,EAAM,eAAe,EACrBI,EAAQ,GACCJ,EAAM,MAAQ,MACvBA,EAAM,eAAe,EACrB,WAAW,IAAMI,EAAQ,EAAG,CAAC,EAEjC,EAEAb,EAAY,iBAAiB,UAAWc,CAAO,EAC/Cd,EAAY,iBAAiB,QAASa,CAAO,EAE7C,IAAME,EAAcC,EAAU,CAC5B,KAAM,EACN,QAAS,8HACT,MAAO,CACL,cAAe,GACf,KAAM,cACR,CACF,CAAC,EAEDhC,EAAG,cAAc,YAAYgB,CAAW,EACxCA,EAAY,YAAYe,CAAW,EAEnC,IAAME,EAAgB,IAAM,CAC1BzB,EAAO,UAAU,MAAM,OAAS,EAChC,QAAS0B,EAAI,EAAGA,EAAI1B,EAAO,UAAU,UAAU,OAAQ0B,IAAK,CAC1D,IAAMxB,EAAQF,EAAO,UAAU,UAAU0B,CAAC,EAAE1B,EAAO,SAAS,IAAI,CAAC,EAC7DE,GACFF,EAAO,UAAU,MAAM,KAAKE,CAAK,CAErC,CACF,EAEAF,EAAO,UAAU,aAAeyB,EAEhCjC,EAAG,iBAAiB,SAAUiC,CAAa,EAE3C/B,EAAQ,IAAM,CACZc,EAAY,oBAAoB,QAASa,CAAO,EAChDb,EAAY,oBAAoB,UAAWc,CAAO,EAClD9B,EAAG,cAAc,oBAAoB,UAAWsB,CAAS,EACzD,IAAI,oBAAoB,QAASF,CAAK,EACtCpB,EAAG,oBAAoB,SAAUiC,CAAa,EAC9C7B,EAAS,WAAW,EAChBc,GACFA,EAAc,WAAW,CAE7B,CAAC,CACH,CAAC,EAEDnB,EAAO,UAAU,mBAAoB,CAACC,EAAI,CAAE,SAAAM,CAAS,EAAG,CAAE,OAAAC,EAAQ,QAAAL,EAAS,OAAAH,CAAO,IAAM,CACtF,IAAMS,EAAST,EAAO,YAAYC,EAAG,cAAgBS,GAAW,OAAO,UAAU,eAAe,KAAKA,EAAQ,WAAW,CAAC,EACzH,GAAI,CAACD,EACH,MAAM,IAAI,MAAM,GAAGF,CAAQ,kCAAkC,EA6B/D,GA3BAN,EAAG,UAAU,IACX,WACA,aACA,0BACA,SACA,MACA,QACA,SACA,OACA,eACA,oBACA,kBACA,aACA,SACA,YACA,6BACA,gCACA,eACA,WACA,YACA,UACF,EACAA,EAAG,aAAa,YAAa,gBAAgB,EAC7CA,EAAG,aAAa,OAAQ,SAAS,EACjCA,EAAG,aAAa,KAAMQ,EAAO,UAAU,QAAQ,EAC/CR,EAAG,aAAa,WAAY,IAAI,EAE5B,CAACQ,EAAO,UAAU,QACpB,MAAM,IAAI,MAAM,GAAGF,CAAQ,qBAAqB,EAGlD,IAAI6B,EAEJ,SAASC,GAAiB,CACxBC,GAAgB7B,EAAO,UAAU,QAASR,EAAI,CAC5C,UAAWA,EAAG,aAAa,YAAY,GAAK,eAC5C,WAAY,CACVsC,GAAO,CAAC,EACRC,GAAK,EACLC,GAAM,CAAE,QAAS,CAAE,CAAC,EACpBC,GAAK,CACH,MAAM,CAAE,eAAAC,EAAgB,gBAAAC,EAAiB,SAAAC,CAAS,EAAG,CACnD,OAAO,OAAOA,EAAS,SAAS,MAAO,CACrC,SAAU,GAAG,KAAK,IAAI,EAAGF,CAAc,EAAI,CAAC,KAC5C,UAAW,GAAG,KAAK,IAAI,EAAGC,CAAe,EAAI,CAAC,IAChD,CAAC,CACH,CACF,CAAC,CACH,CACF,CAAC,EAAE,KAAK,CAAC,CAAE,EAAAE,EAAG,EAAAC,CAAE,IAAM,CACpB,OAAO,OAAO9C,EAAG,MAAO,CACtB,KAAM,GAAG6C,CAAC,KACV,IAAK,GAAGC,CAAC,IACX,CAAC,EACD9C,EAAG,UAAU,OAAO,WAAY,WAAW,CAC7C,CAAC,CACH,CAEAO,EAAO,IAAM,CACXP,EAAG,aAAa,kBAAmBQ,EAAO,UAAU,YAAY,CAClE,CAAC,EAEDD,EAAO,IAAM,CACPC,EAAO,UAAU,UACnBR,EAAG,UAAU,OAAO,QAAQ,EAC5BmC,EAAoBY,GAAWvC,EAAO,UAAU,QAASR,EAAIoC,CAAc,IAEvE,OAAO,WAAW,kCAAkC,EAAE,SACxDpC,EAAG,UAAU,IAAI,SAAU,WAAY,WAAW,EAClD,OAAO,OAAOA,EAAG,MAAO,CACtB,KAAM,MACN,IAAK,KACP,CAAC,GAEDA,EAAG,UAAU,IAAI,WAAY,WAAW,EAEtCmC,GAAmBA,EAAkB,EAE7C,CAAC,EAED,SAASa,EAAgBvB,EAAO,CAC1BA,EAAM,SAAWzB,GAAMyB,EAAM,OAAO,UAAU,SAAS,WAAW,IACpEzB,EAAG,UAAU,IAAI,QAAQ,EACzB,OAAO,OAAOA,EAAG,MAAO,CACtB,KAAM,MACN,IAAK,KACP,CAAC,EAEL,CAEAA,EAAG,iBAAiB,gBAAiBgD,CAAe,EAEpD9C,EAAQ,IAAM,CACZF,EAAG,oBAAoB,gBAAiBgD,CAAe,CACzD,CAAC,CACH,CAAC,EAEDjD,EAAO,UAAU,kBAAmB,CAACC,EAAI,CAAE,SAAAM,CAAS,EAAG,CAAE,OAAAC,EAAQ,QAAAL,EAAS,OAAAH,CAAO,IAAM,CACrF,IAAMS,EAAST,EAAO,YAAYC,EAAG,cAAgBS,GAAW,OAAO,UAAU,eAAe,KAAKA,EAAQ,WAAW,CAAC,EACzH,GAAKD,EAGHA,EAAO,UAAU,WAAaX,GAAWG,EAAG,aAAa,aAAa,CAAC,GAAKH,GAAW,aAAa,MAFpG,OAAM,IAAI,MAAM,GAAGS,CAAQ,qCAAqC,EAIlEN,EAAG,UAAU,IAAI,OAAQ,MAAO,eAAgB,QAAS,WAAY,MAAM,EAC3EA,EAAG,aAAa,YAAa,eAAe,EAC5CA,EAAG,aAAa,oBAAqBQ,EAAO,UAAU,aAAeX,GAAW,KAAO,OAAS,MAAM,EACtGG,EAAG,aAAa,gBAAiBQ,EAAO,UAAU,QAAQ,EAC1DR,EAAG,aAAa,gBAAiB,SAAS,EAC1CA,EAAG,aAAa,OAAQ,UAAU,EAClCA,EAAG,aAAa,eAAgB,KAAK,EACrCA,EAAG,aAAa,cAAe,KAAK,EACpCA,EAAG,aAAa,aAAc,OAAO,EACrC,IAAMiD,EAAajB,EAAU,CAAE,KAAM,EAAQ,QAAS,6BAA8B,MAAO,CAAE,cAAe,GAAM,KAAM,cAAe,CAAE,CAAC,EACpIkB,EAAc,SAAS,cAAc,OAAO,EAClDA,EAAY,aAAa,OAAQ,MAAM,EACvCA,EAAY,aAAa,YAAa,cAAc,EACpDA,EAAY,UAAU,IAAI,oCAAqC,OAAQ,OAAQ,SAAU,aAAc,iBAAkB,OAAQ,UAAW,iBAAkB,8BAA+B,qBAAqB,EAClNlD,EAAG,YAAYiD,CAAU,EACzBjD,EAAG,YAAYkD,CAAW,EAE1B1C,EAAO,UAAU,YAAc,IAAM,CACnC0C,EAAY,MAAM,CACpB,EAEA,SAASC,EAAW1B,EAAO,CACrBA,EAAM,OAAS,YAAcA,EAAM,MAAQ,UAAYA,EAAM,MAAQ,aAAeA,EAAM,MAAQ,SACtGA,EAAM,gBAAgB,CACxB,CAEAzB,EAAG,iBAAiB,QAASmD,CAAU,EACvCnD,EAAG,iBAAiB,UAAWmD,CAAU,EAEzC,SAASC,GAAU,CACjB5C,EAAO,UAAU,OAAS0C,EAAY,MAAM,YAAY,CAC1D,CAEI1C,EAAO,UAAU,aAAeX,GAAW,MAC7CqD,EAAY,iBAAiB,QAASE,CAAO,EAG/C7C,EAAO,IAAM,CACPC,EAAO,UAAU,UAAU0C,EAAY,MAAM,CAAE,cAAe,EAAK,CAAC,EACxElD,EAAG,aAAa,gBAAiBQ,EAAO,UAAU,QAAQ,CAC5D,CAAC,EAED,IAAMJ,EAAW,IAAI,iBAAiB,IAAM,CAC1CI,EAAO,UAAU,WAAaX,GAAWG,EAAG,aAAa,aAAa,CAAC,GAAKH,GAAW,aAAa,EACpGG,EAAG,aAAa,oBAAqBQ,EAAO,UAAU,aAAeX,GAAW,KAAO,OAAS,MAAM,CACxG,CAAC,EAEDO,EAAS,QAAQJ,EAAI,CAAE,WAAY,GAAM,gBAAiB,CAAC,aAAa,CAAE,CAAC,EAE3EE,EAAQ,IAAM,CACZF,EAAG,oBAAoB,QAASmD,CAAU,EAC1CnD,EAAG,oBAAoB,UAAWmD,CAAU,EACxC3C,EAAO,UAAU,aAAeX,GAAW,MAAMqD,EAAY,oBAAoB,QAASE,CAAO,EACrGhD,EAAS,WAAW,CACtB,CAAC,CACH,CAAC,EAEDL,EAAO,UAAU,iBAAkB,CAACC,EAAIqD,EAAG,CAAE,OAAA9C,CAAO,IAAM,CACxDP,EAAG,aAAa,YAAa,cAAc,EAC3CA,EAAG,eAAiBD,EAAO,SAAS,CAClC,WAAY,MACd,CAAC,EAEDQ,EAAO,IAAM,CACPP,EAAG,eAAe,YACpBA,EAAG,aAAa,kBAAmBA,EAAG,eAAe,UAAU,CAEnE,CAAC,CACH,CAAC,EAEDD,EAAO,UAAU,iBAAmBC,GAAO,CACzCA,EAAG,UAAU,IAAI,wBAAyB,OAAQ,SAAU,SAAS,EACrEA,EAAG,aAAa,YAAa,cAAc,EAE3C,IAAMsD,EAAcvD,EAAO,YAAYC,EAAG,cAAgBS,GAAW,OAAO,UAAU,eAAe,KAAKA,EAAQ,gBAAgB,CAAC,EACnI,GAAI6C,EAAa,CACf,IAAMC,EAAK,MAAMpD,EAAO,CAAC,GACzBH,EAAG,aAAa,KAAMuD,CAAE,EACxBD,EAAY,eAAe,WAAaC,CAC1C,CACF,CAAC,EAEDxD,EAAO,UAAU,kBAAmB,CAACC,EAAI,CAAE,SAAAM,EAAU,WAAAkD,CAAW,EAAG,CAAE,OAAAjD,EAAQ,cAAAkD,EAAe,QAAAvD,CAAQ,IAAM,CACxG,IAAMM,EAAST,EAAO,YAAYC,EAAG,cAAgBS,GAAW,OAAO,UAAU,eAAe,KAAKA,EAAQ,WAAW,CAAC,EACzH,GAAI,CAACD,EACH,MAAM,IAAI,MAAM,GAAGF,CAAQ,qCAAqC,EAGlEN,EAAG,UAAU,IACX,mBACA,gCACA,2BACA,kCACA,sDACA,8DACA,gEACA,WACA,OACA,SACA,iBACA,eACA,QACA,aACA,SACA,OACA,OACA,UACA,iBACA,cACA,sCACA,6BACA,8BACA,mBACA,uCACA,qBACA,6BACA,qBACF,EACAA,EAAG,aAAa,YAAa,eAAe,EAC5CA,EAAG,aAAa,WAAY,IAAI,EAEhC,IAAMuD,EAAK,MAAMpD,EAAO,CAAC,GACzBH,EAAG,aAAa,OAAQ,QAAQ,EAChCA,EAAG,aAAa,kBAAmBuD,CAAE,EAErC,IAAMG,EAAc,SAAS,cAAc,MAAM,EAC3CC,EAAU,SAAS,cAAc,MAAM,EAC7CA,EAAQ,aAAa,KAAMJ,CAAE,EAC7BG,EAAY,UAAU,IAAI,WAAY,UAAW,OAAQ,WAAY,eAAgB,iBAAkB,WAAW,EAClHA,EAAY,aAAa,cAAe,MAAM,EAC9C,IAAME,EAAQ5B,EAAU,CAAE,KAAM,EAAO,MAAO,CAAE,cAAe,GAAM,KAAM,cAAe,CAAE,CAAC,EAC7F0B,EAAY,YAAYE,CAAK,EAE7B5D,EAAG,YAAY0D,CAAW,EAC1B1D,EAAG,YAAY2D,CAAO,EAEtB,SAASE,GAAW,CAClB,OAAO7D,EAAG,aAAa,YAAY,CACrC,CAEA,IAAM8D,EAAWL,EAAcD,CAAU,EAEzCjD,EAAO,IAAM,CACXuD,EAAUpD,GAAU,CAClBiD,EAAQ,UAAYjD,EACpBF,EAAO,UAAU,aAAa,CAChC,CAAC,CACH,CAAC,EAEDD,EAAO,IAAM,CACX,GAAIC,EAAO,UAAU,OACnB,GAAIA,EAAO,UAAU,aAAeX,GAAW,aAAa,EACrD8D,EAAQ,UAAU,YAAY,EAAE,WAAWnD,EAAO,UAAU,MAAM,EAEhER,EAAG,UAAU,OAAO,QAAQ,EADjCA,EAAG,UAAU,IAAI,QAAQ,UAElBQ,EAAO,UAAU,aAAeX,GAAW,SAC/C8D,EAAQ,UAAU,YAAY,EAAE,SAASnD,EAAO,UAAU,MAAM,EAE9DR,EAAG,UAAU,OAAO,QAAQ,EADjCA,EAAG,UAAU,IAAI,QAAQ,UAElBQ,EAAO,UAAU,aAAeX,GAAW,eAAe,EAAG,CACtE,IAAMkE,EAAQvD,EAAO,UAAU,OAAO,MAAM,GAAG,EACzCE,EAAQiD,EAAQ,UAAU,YAAY,EACvCI,EAAM,MAAOC,GAAStD,EAAM,SAASsD,CAAI,CAAC,EAC1ChE,EAAG,UAAU,OAAO,QAAQ,EADiBA,EAAG,UAAU,IAAI,QAAQ,CAE7E,MACEA,EAAG,UAAU,OAAO,QAAQ,OAEzBA,EAAG,UAAU,OAAO,QAAQ,CACrC,CAAC,EAED,SAASiE,EAAiBC,EAAU,CAClC,OAAIA,GACFR,EAAY,UAAU,OAAO,WAAW,EACxC1D,EAAG,aAAa,gBAAiB,MAAM,EAChC2D,EAAQ,YAEjBD,EAAY,UAAU,IAAI,WAAW,EACrC1D,EAAG,aAAa,gBAAiB,OAAO,EACjC,GACT,CAEA,IAAMmE,EAAiBvD,GACdqD,EAAiBzD,EAAO,UAAU,SAAWI,EAAM,SAASiD,EAAS,CAAC,EAAIjD,IAAUiD,EAAS,CAAC,EAGvGrD,EAAO,UAAU,UAAU,KAAK2D,CAAa,EAE7C,IAAMhB,EAAc1B,GAAU,CAC5B,GAAKA,EAAM,OAAS,YAAcA,EAAM,MAAQ,SAAWA,EAAM,MAAQ,MAASA,EAAM,OAAS,QAC/F,GAAIjB,EAAO,UAAU,SAAU,CAC7BiB,EAAM,gBAAgB,EACtB,IAAMZ,EAASL,EAAO,SAAS,IAAI,EAAE,QAAQqD,EAAS,CAAC,EACvD,GAAIhD,EAAS,GAAI,CACf,IAAMuD,EAAM5D,EAAO,SAAS,IAAI,EAAE,OAAOK,EAAQ,CAAC,EAClDL,EAAO,SAAS,IAAI4D,CAAG,CACzB,MACE5D,EAAO,SAAS,IAAI,EAAE,KAAKqD,EAAS,CAAC,CAEzC,MAAWrD,EAAO,SAAS,IAAI,IAAMqD,EAAS,EAC5CrD,EAAO,SAAS,IAAIqD,EAAS,CAAC,EACrBrD,EAAO,aAAa,gBAAgB,IAAM,QACnDA,EAAO,SAAS,IAAI,EAAE,CAG5B,EAEAR,EAAG,iBAAiB,QAASmD,CAAU,EACvCnD,EAAG,iBAAiB,UAAWmD,CAAU,EAEzCjD,EAAQ,IAAM,CACZF,EAAG,oBAAoB,QAASmD,CAAU,EAC1CnD,EAAG,oBAAoB,UAAWmD,CAAU,EAC5C,IAAMkB,EAAS7D,EAAO,UAAU,UAAU,QAAQ2D,CAAa,EAC/D3D,EAAO,UAAU,UAAU,OAAO6D,EAAQ,CAAC,CAC7C,CAAC,CACH,CAAC,EAEDtE,EAAO,UAAU,qBAAuBC,GAAO,CAC7CA,EAAG,UAAU,IAAI,YAAa,sBAAuB,QAAS,OAAQ,MAAM,EAC5EA,EAAG,aAAa,YAAa,kBAAkB,EAC/CA,EAAG,aAAa,cAAe,MAAM,EACrCA,EAAG,aAAa,OAAQ,MAAM,CAChC,CAAC,CACH,CCzsBe,SAARsE,GAAkBC,EAAQ,CAC/BA,EAAO,UAAU,cAAgBC,GAAO,CACtCA,EAAG,UAAU,IACX,YACA,WACA,qCACA,uCACA,qCACA,mCACA,iEACA,uEACA,mEACA,gEACF,EACAA,EAAG,aAAa,OAAQ,MAAM,EAC9BA,EAAG,aAAa,YAAa,WAAW,CAC1C,CAAC,CACH,CCjBe,SAARC,GAAkBC,EAAQ,CAC/BA,EAAO,UAAU,kBAAmB,CAACC,EAAI,CAAE,WAAAC,CAAW,EAAG,CAAE,OAAAC,EAAQ,SAAAC,EAAU,cAAAC,EAAe,QAAAC,CAAQ,IAAM,CACxGL,EAAG,iBAAmB,CACpB,UAAW,OACX,UAAW,OACX,MAAOD,EAAO,SAAS,CACrB,KAAMI,EAASF,GAAc,OAAO,CACtC,CAAC,CACH,EACAD,EAAG,UAAU,IAAI,SAAU,QAAS,UAAW,OAAQ,cAAe,qBAAsB,gCAAiC,eAAgB,WAAY,WAAW,EACpKA,EAAG,aAAa,WAAY,IAAI,EAChCA,EAAG,aAAa,YAAa,eAAe,EAE5C,IAAMM,EAAYF,EAAcH,CAAU,EAE1CC,EAAO,IAAM,CACXI,EAAWC,GAAW,CACpBP,EAAG,iBAAiB,MAAM,KAAOO,CACnC,CAAC,CACH,CAAC,EAEDL,EAAO,IAAM,CACP,OAAO,WAAW,kCAAkC,EAAE,QACpDF,EAAG,iBAAiB,MAAM,KAC5BA,EAAG,UAAU,OAAO,SAAU,WAAW,EAEzCA,EAAG,UAAU,IAAI,SAAU,WAAW,EAE/BA,EAAG,iBAAiB,MAAM,MACnCA,EAAG,UAAU,OAAO,QAAQ,EAC5BA,EAAG,aACHA,EAAG,UAAU,OAAO,WAAW,GAE/BA,EAAG,UAAU,IAAI,WAAW,CAEhC,CAAC,EAED,SAASQ,EAAgBC,EAAO,CAC1BA,EAAM,SAAWT,GAAMS,EAAM,OAAO,UAAU,SAAS,WAAW,GACpET,EAAG,UAAU,IAAI,QAAQ,CAE7B,CAEAA,EAAG,iBAAiB,gBAAiBQ,CAAe,EAEpD,IAAME,EAAWD,GAAU,CACrBA,EAAM,OAAO,aAAa,WAAW,IAAM,iBAC7CN,EAAS,GAAGF,CAAU,UAAU,CAEpC,EAEAD,EAAG,iBAAiB,QAASU,CAAO,EACpCL,EAAQ,IAAM,CACZL,EAAG,oBAAoB,QAASU,CAAO,EACvCV,EAAG,oBAAoB,gBAAiBQ,CAAe,CACzD,CAAC,CACH,CAAC,EAEDT,EAAO,UAAU,UAAW,CAACC,EAAI,CAAE,SAAAW,CAAS,EAAG,CAAE,OAAAT,EAAQ,QAAAG,CAAQ,IAAM,CACrE,IAAMO,EAAUb,EAAO,YAAYC,EAAG,cAAgBa,GAAW,OAAO,UAAU,eAAe,KAAKA,EAAQ,kBAAkB,CAAC,EACjI,GAAI,CAACD,EACH,MAAM,IAAI,MAAM,GAAGD,CAAQ,wCAAwC,EAErEX,EAAG,UAAU,IAAI,SAAU,gBAAiB,QAAS,YAAa,YAAa,iBAAkB,gCAAiC,eAAgB,UAAU,EAC5JA,EAAG,aAAa,YAAa,OAAO,EAEpC,IAAIc,EAEEC,EAAqBC,GAAS,CAClC,OAAQA,EAAM,CACZ,IAAK,MACH,MAAO,oBACT,IAAK,QACH,MAAO,mBACT,IAAK,OACH,MAAO,oBACT,QACE,MAAO,kBACX,CACF,EAEMC,EAAkBD,GAAS,CAC/B,OAAQA,EAAM,CACZ,IAAK,MACH,MAAO,CAAC,YAAa,QAAS,QAAQ,EACxC,IAAK,QACH,MAAO,CAAC,YAAa,UAAW,SAAU,SAAU,aAAa,EACnE,IAAK,OACH,MAAO,CAAC,YAAa,SAAU,SAAU,SAAU,aAAa,EAClE,QACE,MAAO,CAAC,YAAa,WAAY,QAAQ,CAC7C,CACF,EAEME,EAAWF,GAAS,CACxBhB,EAAG,UAAU,OAAO,GAAGiB,EAAeH,CAAQ,CAAC,EAC/Cd,EAAG,UAAU,IAAI,GAAGiB,EAAeD,CAAI,CAAC,EACxCF,EAAWE,CACb,EAEMG,EAAW,IAAI,iBAAiB,IAAM,CAC1CD,EAAQlB,EAAG,aAAa,YAAY,CAAC,CACvC,CAAC,EAEDkB,EAAQlB,EAAG,aAAa,YAAY,CAAC,EACrCA,EAAG,UAAU,IAAIe,EAAkBD,CAAQ,CAAC,EAE5C,SAASN,EAAgBC,EAAO,CAC1BA,EAAM,SAAWT,GAAMS,EAAM,OAAO,UAAU,SAASM,EAAkBD,CAAQ,CAAC,GACpFd,EAAG,UAAU,IAAI,QAAQ,CAE7B,CAEAA,EAAG,iBAAiB,gBAAiBQ,CAAe,EAEpDN,EAAO,IAAM,CACP,OAAO,WAAW,kCAAkC,EAAE,QACpDU,EAAQ,iBAAiB,MAAM,KACjCZ,EAAG,UAAU,OAAO,SAAUe,EAAkBD,CAAQ,CAAC,EAEzDd,EAAG,UAAU,IAAI,SAAUe,EAAkBD,CAAQ,CAAC,EAE/CF,EAAQ,iBAAiB,MAAM,MACxCZ,EAAG,UAAU,OAAO,QAAQ,EAC5BA,EAAG,aACHA,EAAG,UAAU,OAAOe,EAAkBD,CAAQ,CAAC,GAE/Cd,EAAG,UAAU,IAAIe,EAAkBD,CAAQ,CAAC,CAEhD,CAAC,EAEDK,EAAS,QAAQnB,EAAI,CAAE,WAAY,GAAM,gBAAiB,CAAC,YAAY,CAAE,CAAC,EAE1EK,EAAQ,IAAM,CACZc,EAAS,WAAW,EACpBnB,EAAG,oBAAoB,gBAAiBQ,CAAe,CACzD,CAAC,CACH,CAAC,CACH,CCxIe,SAARY,GAAkBC,EAAQ,CAC/BA,EAAO,UAAU,YAAa,CAACC,EAAI,CAAE,UAAAC,CAAU,EAAG,CAAE,QAAAC,CAAQ,IAAM,CAChEF,EAAG,UAAU,IAAI,gBAAiB,aAAc,0BAA2B,wBAAyB,OAAQ,SAAU,4BAA6B,6BAA6B,EAC5KC,EAAU,SAAS,OAAO,EAAGD,EAAG,UAAU,IAAI,UAAU,EACvDA,EAAG,UAAU,IAAI,UAAU,EAEhCA,EAAG,aAAa,YAAa,SAAS,EAEtC,IAAMG,EAAc,IAAM,CACpBH,EAAG,aAAa,eAAe,IAAM,OACvCA,EAAG,UAAU,IAAI,SAAU,aAAc,WAAW,EAEpDA,EAAG,UAAU,OAAO,SAAU,aAAc,WAAW,CAE3D,EAEAG,EAAY,EAEZ,IAAMC,EAAW,IAAI,iBAAiB,IAAM,CAC1CD,EAAY,CACd,CAAC,EAEDC,EAAS,QAAQJ,EAAI,CAAE,WAAY,GAAM,gBAAiB,CAAC,eAAe,CAAE,CAAC,EAE7EE,EAAQ,IAAM,CACZE,EAAS,WAAW,CACtB,CAAC,CACH,CAAC,EAEDL,EAAO,UAAU,mBAAqBC,GAAO,CAC3CA,EAAG,UAAU,IAAI,OAAQ,QAAS,OAAQ,OAAQ,iBAAkB,UAAU,EAC1EA,EAAG,QAAQ,YAAcA,EAAG,QAAQ,aAAe,QAAQA,EAAG,UAAU,OAAO,UAAU,EAC7FA,EAAG,aAAa,YAAa,gBAAgB,CAC/C,CAAC,EAEDD,EAAO,UAAU,oBAAsBC,GAAO,CAC5CA,EAAG,UAAU,IAAI,OAAQ,UAAW,SAAU,gBAAiB,gBAAgB,EAC/EA,EAAG,aAAa,YAAa,iBAAiB,CAChD,CAAC,EAEDD,EAAO,UAAU,kBAAmB,CAACC,EAAI,CAAE,WAAAK,EAAY,UAAAJ,CAAU,EAAG,CAAE,OAAAK,EAAQ,SAAAC,EAAU,cAAAC,EAAe,OAAAT,CAAO,IAAM,CAWlH,GAVAC,EAAG,UAAU,IAAI,WAAY,OAAQ,SAAU,UAAW,KAAK,EAC/DA,EAAG,aAAa,YAAa,eAAe,EAC5CA,EAAG,iBAAmB,CACpB,YAAaC,EAAU,SAAS,WAAW,EAC3C,UAAW,OACX,SAAU,OACV,MAAOF,EAAO,SAAS,CACrB,UAAWQ,EAASF,GAAc,OAAO,CAC3C,CAAC,CACH,EACIA,EAAY,CACdL,EAAG,iBAAiB,MAAQD,EAAO,SAAS,CAC1C,UAAWQ,EAASF,GAAc,OAAO,CAC3C,CAAC,EACD,IAAMI,EAAeD,EAAcH,CAAU,EAC7CC,EAAO,IAAM,CACXG,EAAcC,GAAc,CAC1BV,EAAG,iBAAiB,MAAM,UAAYU,CACxC,CAAC,CACH,CAAC,CACH,CACF,CAAC,EAEDX,EAAO,UAAU,wBAAyB,CAACC,EAAI,CAAE,SAAAW,CAAS,EAAG,CAAE,QAAAT,CAAQ,IAAM,CAC3E,IAAMU,EAAQb,EAAO,YAAYC,EAAG,cAAgBa,GAAW,OAAO,UAAU,eAAe,KAAKA,EAAQ,kBAAkB,CAAC,EAC/H,GAAI,CAACD,EACH,MAAM,IAAI,MAAM,GAAGD,CAAQ,wCAAwC,EAuBrE,GArBAX,EAAG,UAAU,IACX,oBACA,OACA,MACA,WACA,eACA,aACA,OACA,cACA,iBACA,8BACA,gCACA,eACA,cACA,uBACA,iBACA,mBACA,6CACF,EACAA,EAAG,aAAa,YAAa,qBAAqB,EAE9CY,EAAM,iBAAiB,YAAa,CACtCZ,EAAG,UAAU,IAAI,0BAA2B,UAAW,6BAA8B,0CAA2C,8BAA+B,0CAA0C,EAErMA,EAAG,aAAa,IAAI,EACtBY,EAAM,iBAAiB,UAAYZ,EAAG,aAAa,IAAI,GAEvDY,EAAM,iBAAiB,UAAY,MAAME,EAAO,CAAC,GACjDd,EAAG,aAAa,KAAMY,EAAM,iBAAiB,SAAS,GAExDA,EAAM,iBAAiB,SAAW,MAAME,EAAO,CAAC,GAChDd,EAAG,aAAa,gBAAiBY,EAAM,iBAAiB,QAAQ,EAChEZ,EAAG,aAAa,gBAAiB,CAACY,EAAM,iBAAiB,MAAM,SAAS,EAExE,IAAMG,EAAU,IAAM,CACpBH,EAAM,iBAAiB,MAAM,UAAY,CAACA,EAAM,iBAAiB,MAAM,UACvEZ,EAAG,aAAa,gBAAiB,CAACY,EAAM,iBAAiB,MAAM,SAAS,CAC1E,EAEAZ,EAAG,YACDgB,EAAU,CACR,KAAM,EACN,QAAS,iJACT,MAAO,CACL,cAAe,GACf,KAAM,cACR,CACF,CAAC,CACH,EAEAhB,EAAG,iBAAiB,QAASe,CAAO,EAEpCb,EAAQ,IAAM,CACZF,EAAG,oBAAoB,QAASe,CAAO,CACzC,CAAC,CACH,MACEf,EAAG,UAAU,IAAI,6BAA8B,SAAS,CAE5D,CAAC,EAEDD,EAAO,UAAU,yBAA2BC,GAAO,CACjDA,EAAG,UAAU,IACX,0BACA,oBACA,6BACA,0CACA,WACA,UACA,UACA,OACA,gBACA,MACA,eACA,iBACA,aACA,MACA,iBACA,uBACA,gCACA,uBACA,iBACA,mBACA,iBACA,iBACA,kBACA,4CACF,EACIA,EAAG,UAAY,SACjBA,EAAG,aAAa,OAAQ,QAAQ,EAEhCA,EAAG,aAAa,OAAQ,QAAQ,EAElCA,EAAG,aAAa,YAAa,sBAAsB,CACrD,CAAC,EAEDD,EAAO,UAAU,0BAA2B,CAACC,EAAI,CAAE,SAAAW,CAAS,EAAG,CAAE,OAAAL,CAAO,IAAM,CAC5E,IAAMM,EAAQb,EAAO,YAAYC,EAAG,cAAgBa,GAAW,OAAO,UAAU,eAAe,KAAKA,EAAQ,kBAAkB,CAAC,EAC/H,GAAI,CAACD,EACH,MAAM,IAAI,MAAM,GAAGD,CAAQ,wCAAwC,EAErEX,EAAG,UAAU,IAAI,SAAU,UAAW,+BAAgC,4CAA4C,EAClHA,EAAG,aAAa,YAAa,uBAAuB,EAEhDY,EAAM,iBAAiB,cACzBZ,EAAG,aAAa,KAAMY,EAAM,iBAAiB,QAAQ,EACrDZ,EAAG,aAAa,kBAAmBY,EAAM,iBAAiB,SAAS,EACnEZ,EAAG,aAAa,iBAAkBY,EAAM,iBAAiB,MAAM,SAAS,EACxEN,EAAO,IAAM,CACXN,EAAG,aAAa,iBAAkBY,EAAM,iBAAiB,MAAM,SAAS,CAC1E,CAAC,EAEL,CAAC,EAEDb,EAAO,UAAU,iBAAkB,CAACC,EAAI,CAAE,SAAAW,CAAS,IAAM,CACvD,GAAIX,EAAG,UAAY,KACjB,MAAM,IAAI,MAAM,GAAGW,CAAQ,wBAAwB,EAErDX,EAAG,UAAU,IAAI,OAAQ,SAAU,UAAW,OAAO,EACrDA,EAAG,aAAa,YAAa,cAAc,CAC7C,CAAC,EAEDD,EAAO,UAAU,sBAAuB,CAACC,EAAI,CAAE,SAAAW,EAAU,WAAAN,EAAY,UAAAJ,CAAU,EAAG,CAAE,OAAAK,EAAQ,SAAAC,EAAU,cAAAC,EAAe,OAAAT,CAAO,IAAM,CAChI,GAAIC,EAAG,UAAY,KACjB,MAAM,IAAI,MAAM,GAAGW,CAAQ,uBAAuB,EAEpDX,EAAG,qBAAuB,CACxB,MAAO,GACP,YAAaC,EAAU,SAAS,WAAW,EAC3C,UAAW,OACX,SAAU,OACV,MAAOF,EAAO,SAAS,CACrB,UAAWQ,EAASF,GAAc,OAAO,CAC3C,CAAC,CACH,EACA,IAAIQ,EAASb,EAAG,cAChB,KAAOa,GAAQ,CACb,GAAIA,EAAO,aAAa,WAAW,IAAM,mBAAoB,CAC3Db,EAAG,qBAAqB,MAAQ,GAChC,KACF,SAAWa,EAAO,aAAa,WAAW,IAAM,UAC9C,MAEFA,EAASA,EAAO,aAClB,CAQA,GAPKb,EAAG,qBAAqB,MAG3BA,EAAG,UAAU,IAAI,UAAU,EAF3BA,EAAG,UAAU,IAAI,kBAAmB,UAAU,EAIhDA,EAAG,aAAa,YAAa,mBAAmB,EAE5CK,EAAY,CACd,IAAMI,EAAeD,EAAcH,CAAU,EAC7CC,EAAO,IAAM,CACXG,EAAcC,GAAc,CAC1BV,EAAG,qBAAqB,MAAM,UAAYU,CAC5C,CAAC,CACH,CAAC,CACH,CACF,CAAC,EAEDX,EAAO,UAAU,wBAAyB,CAACC,EAAI,CAAE,SAAAW,CAAS,EAAG,CAAE,QAAAT,EAAS,OAAAH,CAAO,IAAM,CACnF,GAAIC,EAAG,UAAY,UAAYA,EAAG,UAAY,IAC5C,MAAM,IAAI,MAAM,GAAGW,CAAQ,6BAA6B,EAC/CX,EAAG,UAAY,UACxBA,EAAG,aAAa,OAAQ,QAAQ,EAElC,IAAMiB,EAAWlB,EAAO,YAAYC,EAAG,cAAgBa,GAAW,OAAO,UAAU,eAAe,KAAKA,EAAQ,sBAAsB,CAAC,EACtIb,EAAG,UAAU,IACX,OACA,SACA,eACA,QACA,kBACA,aACA,eACA,wBACA,iBACA,oBACA,6BACA,0CACA,uBACA,4BACA,yCACA,+BACA,sBACA,oCACA,2BACA,wCACA,qDACA,oBACA,iBACA,kBACF,EAEA,IAAMkB,EAAQ,CACZ,QAAS,CAAC,MAAO,SAAS,EAC1B,GAAI,CAAC,MAAO,SAAS,EACrB,GAAI,CAAC,OAAQ,UAAW,0CAA0C,CACpE,EAEA,SAASC,EAAQC,EAAM,CACjB,OAAO,UAAU,eAAe,KAAKF,EAAOE,CAAI,GAClDpB,EAAG,UAAU,IAAI,GAAGkB,EAAME,CAAI,CAAC,CAEnC,CA4BA,GA1BAD,EAAQnB,EAAG,aAAa,WAAW,GAAK,SAAS,EAE5CA,EAAG,aAAa,WAAW,GAAGA,EAAG,aAAa,YAAa,qBAAqB,EAEjFiB,GAAYA,EAAS,qBAAqB,OAC5CjB,EAAG,UAAU,IAAI,0BAA2B,MAAO,UAAW,kBAAmB,OAAQ,+CAAgD,4CAA4C,EAChLA,EAAG,aAAa,WAAW,GAAGA,EAAG,aAAa,YAAa,yBAAyB,GAEzFA,EAAG,UAAU,IACX,mBACA,MACA,YACA,UACA,eACA,oCACA,gCACA,sDACA,iCACA,kDACA,+DACA,8CACA,2CACA,8FACF,EAGEiB,GAAYA,EAAS,qBAAqB,YAAa,CACrDjB,EAAG,aAAa,IAAI,EACtBiB,EAAS,qBAAqB,UAAYjB,EAAG,aAAa,IAAI,GAE9DiB,EAAS,qBAAqB,UAAY,MAAMH,EAAO,CAAC,GACxDd,EAAG,aAAa,KAAMiB,EAAS,qBAAqB,SAAS,GAE/DA,EAAS,qBAAqB,SAAW,MAAMH,EAAO,CAAC,GACvDd,EAAG,aAAa,gBAAiBiB,EAAS,qBAAqB,QAAQ,EACvEjB,EAAG,aAAa,gBAAiB,CAACiB,EAAS,qBAAqB,MAAM,SAAS,EAE/E,IAAMF,EAAU,IAAM,CACpBE,EAAS,qBAAqB,MAAM,UAAY,CAACA,EAAS,qBAAqB,MAAM,UACrFjB,EAAG,aAAa,gBAAiB,CAACiB,EAAS,qBAAqB,MAAM,SAAS,CACjF,EAEAjB,EAAG,YACDgB,EAAU,CACR,KAAM,EACN,QAAS,iJACT,MAAO,CACL,cAAe,GACf,KAAM,cACR,CACF,CAAC,CACH,EAEAhB,EAAG,iBAAiB,QAASe,CAAO,EAEpCb,EAAQ,IAAM,CACZF,EAAG,oBAAoB,QAASe,CAAO,CACzC,CAAC,CACH,MACEf,EAAG,UAAU,IAAI,8CAA8C,CAEnE,CAAC,EAEDD,EAAO,UAAU,wBAAyB,CAACC,EAAI,CAAE,UAAAC,CAAU,IAAM,CAC/DD,EAAG,UAAU,IACX,0BACA,oBACA,6BACA,iCACA,0CACA,2DACA,0DACA,sEACA,WACA,UACA,YACA,aACA,OACA,gBACA,SACA,eACA,iBACA,aACA,MACA,iBACA,uBACA,gCACA,uBACA,iBACA,mBACA,iBACA,iBACA,kBACA,4CACF,EACIC,EAAU,SAAS,UAAU,GAC/BD,EAAG,UAAU,IAAI,2CAA4C,oCAAqC,mCAAoC,cAAc,EAElJA,EAAG,UAAY,SACjBA,EAAG,aAAa,OAAQ,QAAQ,EAEhCA,EAAG,aAAa,OAAQ,QAAQ,EAElCA,EAAG,aAAa,YAAa,qBAAqB,CACpD,CAAC,EAEDD,EAAO,UAAU,uBAAwB,CAACC,EAAI,CAAE,SAAAW,CAAS,IAAM,CAC7D,GAAIX,EAAG,UAAY,OACjB,MAAM,IAAI,MAAM,GAAGW,CAAQ,yBAAyB,EAEtDX,EAAG,UAAU,IAAI,SAAU,sBAAuB,OAAQ,SAAU,YAAa,eAAgB,cAAe,UAAW,cAAe,eAAgB,cAAe,4CAA4C,EACrNA,EAAG,aAAa,YAAa,oBAAoB,CACnD,CAAC,EAEDD,EAAO,UAAU,0BAA2B,CAACC,EAAI,CAAE,UAAAC,CAAU,IAAM,CACjED,EAAG,UAAU,IAAI,OAAQ,MAAO,eAAgB,QAAS,aAAc,MAAM,EAC7E,IAAMqB,EAAW,SAAS,cAAc,KAAK,EAE7C,GADAA,EAAS,UAAU,IAAI,MAAO,SAAU,uBAAwB,gBAAiB,YAAY,EACzFpB,EAAU,SAAS,MAAM,EAAG,CAC9BoB,EAAS,UAAU,IAAI,6CAA6C,EACpE,IAAMC,EAAO,SAAS,cAAc,KAAK,EACzCA,EAAK,UAAU,IAAI,SAAU,aAAc,uBAAwB,gBAAiB,YAAY,EAChGtB,EAAG,YAAYsB,CAAI,CACrB,MACED,EAAS,UAAU,IAAI,2CAA4C,8CAA8C,EAEnHA,EAAS,MAAM,SAAW,GAAG,KAAK,MAAM,KAAK,OAAO,EAAI,EAAE,EAAI,EAAE,IAChErB,EAAG,YAAYqB,CAAQ,EACvBrB,EAAG,aAAa,YAAa,uBAAuB,CACtD,CAAC,EAEDD,EAAO,UAAU,sBAAwBC,GAAO,CAC9CA,EAAG,UAAU,IAAI,oBAAqB,SAAU,YAAa,WAAY,OAAQ,QAAQ,EACzFA,EAAG,aAAa,YAAa,mBAAmB,EAChDA,EAAG,aAAa,OAAQ,MAAM,CAChC,CAAC,EAEDD,EAAO,UAAU,qBAAsB,CAACC,EAAI,CAAE,SAAAW,CAAS,EAAG,CAAE,OAAAL,EAAQ,OAAAP,CAAO,IAAM,CAC/E,GAAIC,EAAG,UAAY,KACjB,MAAM,IAAI,MAAM,GAAGW,CAAQ,wBAAwB,EAErD,IAAMM,EAAWlB,EAAO,YAAYC,EAAG,cAAgBa,GAAW,OAAO,UAAU,eAAe,KAAKA,EAAQ,sBAAsB,CAAC,EACtI,GAAI,CAACI,EACH,MAAM,IAAI,MAAM,GAAGN,CAAQ,4CAA4C,EAEzEX,EAAG,UAAU,IAAI,OAAQ,UAAW,iBAAkB,QAAS,SAAU,SAAU,SAAU,gCAAiC,6CAA6C,EACvKA,EAAG,aAAa,WAAW,IAAM,SACnCA,EAAG,UAAU,IAAI,wBAAyB,UAAU,EAEtDA,EAAG,aAAa,YAAa,kBAAkB,EAE3CiB,EAAS,qBAAqB,cAChCjB,EAAG,aAAa,KAAMiB,EAAS,qBAAqB,QAAQ,EAC5DjB,EAAG,aAAa,kBAAmBiB,EAAS,qBAAqB,SAAS,EAC1EjB,EAAG,aAAa,iBAAkBiB,EAAS,qBAAqB,MAAM,SAAS,EAC/EX,EAAO,IAAM,CACXN,EAAG,aAAa,iBAAkBiB,EAAS,qBAAqB,MAAM,SAAS,CACjF,CAAC,EAEL,CAAC,EAEDlB,EAAO,UAAU,mBAAqBC,GAAO,CAC3CA,EAAG,UAAU,IAAI,OAAQ,QAAS,OAAQ,OAAQ,iBAAkB,UAAU,EAC1EA,EAAG,QAAQ,YAAcA,EAAG,QAAQ,aAAe,QAAQA,EAAG,UAAU,OAAO,UAAU,EAC7FA,EAAG,aAAa,YAAa,gBAAgB,CAC/C,CAAC,CACH,CC5be,SAARuB,GAAkBC,EAAQ,CAC/BA,EAAO,UAAU,aAAc,CAACC,EAAI,CAAE,UAAAC,CAAU,IAAM,CAEpD,GADAD,EAAG,UAAU,IAAI,eAAgB,eAAe,EAC5CC,EAAU,SAAS,SAAS,EAE9B,OADAD,EAAG,UAAU,IAAI,iBAAiB,EAC1BA,EAAG,aAAa,WAAW,EAAG,CACpC,IAAK,KACHA,EAAG,UAAU,IAAI,OAAO,EACxB,MACF,IAAK,KACHA,EAAG,UAAU,IAAI,KAAK,EACtB,MACF,QACEA,EAAG,UAAU,IAAI,KAAK,EACtB,KACJ,MACSC,EAAU,SAAS,MAAM,EAClCD,EAAG,UAAU,IAAI,YAAY,EACpBC,EAAU,SAAS,QAAQ,EACpCD,EAAG,UAAU,IAAI,eAAgB,SAAU,eAAe,EACrDA,EAAG,UAAU,IAAI,YAAY,EACpCA,EAAG,aAAa,YAAa,UAAU,CACzC,CAAC,CACH,CCvBe,SAARE,GAAkBC,EAAQ,CAC/BA,EAAO,UAAU,YAAcC,GAAO,CACpCA,EAAG,UAAU,IACX,SACA,WACA,iBACA,qDACA,yEACA,2EACA,2EACA,yEACA,iFACA,wBACA,eACA,cACF,EACIA,EAAG,UAAY,QAAQA,EAAG,UAAU,IAAI,cAAc,EAC1DA,EAAG,aAAa,OAAQ,QAAQ,EAChCA,EAAG,aAAa,YAAa,SAAS,EACjCA,EAAG,aAAa,YAAY,GAAGA,EAAG,aAAa,aAAc,SAAS,CAC7E,CAAC,CACH,CCrBe,SAARC,GAAkBC,EAAQ,CAC/BA,EAAO,UAAU,UAAW,CAACC,EAAIC,EAAG,CAAE,QAAAC,EAAS,OAAAH,CAAO,IAAM,CAC1D,IAAMI,EAAS,CAAC,EAGVC,EAAQL,EAAO,SAAS,CAC5B,aAAcC,EAAG,aAAa,kBAAkB,IAAM,aACtD,SAAUA,EAAG,aAAa,cAAc,IAAM,QAChD,CAAC,EAEKK,EAAaL,EAAG,aAAa,UAAU,EAEvCM,EAAY,IAAM,CACtB,GAAI,CAACD,EAAY,OAAO,KAExB,GAAI,CACF,IAAME,EAAM,aAAa,QAAQF,CAAU,EAC3C,OAAKE,EACE,KAAK,MAAMA,CAAG,EADJ,IAEnB,MAAQ,CACN,OAAO,IACT,CACF,EAEIC,EAAY,KACVC,EAAa,IAEbC,EAAY,IAAM,CACjBL,IAEDG,GAAW,aAAaA,CAAS,EAErCA,EAAY,WAAW,IAAM,CAE3B,IAAMG,EADUR,EAAO,OAAQS,IAAM,CAACA,GAAE,MAAM,EACxB,IAAKA,IAAMA,GAAE,KAAOC,EAAW,CAAC,EACtD,aAAa,QAAQR,EAAY,KAAK,UAAUM,CAAK,CAAC,EACtDH,EAAY,IACd,EAAGC,CAAU,EACf,EAEMK,EAAW,IAAOV,EAAM,aAAe,QAAU,SAEjDW,EAAgB,IAAOX,EAAM,aAAeJ,EAAG,sBAAsB,EAAE,MAAQA,EAAG,sBAAsB,EAAE,OAE1GgB,EAAa,IAAM,CACvB,IAAMC,EAAQd,EAAO,KAAMS,GAAMA,EAAE,OAAO,aAAa,EACvD,OAAIK,EACKA,EAAM,OAAO,sBAAsB,EAAEH,EAAS,CAAC,GAAK,EAEtD,CACT,EAGMD,EAAa,IAAM,CACvB,IAAMK,EAAgBf,EAAO,OAAQS,IAAM,CAACA,GAAE,MAAM,EAC9CO,EAAU,KAAK,IAAI,EAAGD,EAAc,OAAS,CAAC,EACpD,OAAOH,EAAc,EAAII,EAAUH,EAAW,CAChD,EAGMI,EAAaC,GACbA,GAAS,KAAa,KACtB,OAAOA,GAAU,SAAiBA,EAElCA,EAAM,SAAS,GAAG,EACZ,WAAWA,CAAK,EAAI,IAAOR,EAAW,EAGzC,WAAWQ,CAAK,EAGrBC,EAAc,GAEZC,EAAY,IAGZC,EAAS,IAAM,CACnB,IAAMC,EAAUtB,EAAO,OAAQS,GAAM,CAACA,EAAE,MAAM,EAC9C,GAAI,CAACa,EAAQ,OAAQ,OAErB,IAAMC,EAAQb,EAAW,EAEzB,GAAI,CAACS,EAAa,CAChBA,EAAc,GAEd,IAAMG,EAAUtB,EAAO,OAAQS,GAAM,CAACA,EAAE,MAAM,EAGxCe,EAASrB,EAAU,EAEzB,GAAIqB,GAAUA,EAAO,SAAWF,EAAQ,OACtCA,EAAQ,QAAQ,CAACb,EAAGgB,IAAM,CACxBhB,EAAE,KAAOe,EAAOC,CAAC,EAAIf,EAAW,EAChCD,EAAE,SAAW,EACf,CAAC,MACI,CAEL,IAAMiB,EAAgBJ,EAAQ,OAAQb,IAAMA,GAAE,QAAQ,EAAE,OAAO,CAACkB,GAAKlB,KAAMkB,GAAMlB,GAAE,aAAc,CAAC,EAG5FmB,EAAaN,EAAQ,OAAQb,IAAM,CAACA,GAAE,QAAQ,EAC9CoB,EAAYN,EAAQG,EACpBI,EAAQF,EAAW,OAASC,EAAYD,EAAW,OAAS,EAGlEN,EAAQ,QAASb,IAAM,CACjBA,GAAE,SACJA,GAAE,KAAOA,GAAE,aAEXA,GAAE,KAAOqB,EAGXrB,GAAE,KAAO,KAAK,IAAI,KAAK,IAAIA,GAAE,MAAQqB,EAAOrB,GAAE,GAAG,EAAGA,GAAE,GAAG,CAC3D,CAAC,CACH,CACF,CAGAa,EAAQ,QAASb,GAAM,CACjBA,EAAE,MAAQ,OACZA,EAAE,KAAOA,EAAE,KAAO,GAIpBA,EAAE,KAAO,KAAK,IAAI,KAAK,IAAIA,EAAE,KAAMA,EAAE,GAAG,EAAGA,EAAE,GAAG,CAClD,CAAC,EAED,IAAIsB,GAAeT,EAAQ,OAAO,CAACK,EAAKlB,IAAMkB,EAAMlB,EAAE,KAAM,CAAC,EACzDuB,GAAQT,EAAQQ,GAEpB,GAAI,KAAK,IAAIC,EAAK,EAAIZ,EAAW,CAC/BE,EAAQ,QAASb,GAAMA,EAAE,MAAM,CAAC,EAChC,MACF,CAGA,IAAIwB,GAAWX,EAAQ,OAAQb,GACzBA,EAAE,UAAkB,GAEpBuB,GAAQ,EACHvB,EAAE,KAAOA,EAAE,IAEXA,EAAE,KAAOA,EAAE,GAErB,EAED,KAAOwB,GAAS,QAAU,KAAK,IAAID,EAAK,EAAIZ,GAAW,CACrD,IAAMU,EAAQE,GAAQC,GAAS,OAC3BC,EAAW,EAETC,EAAe,CAAC,EAyBtB,GAvBAF,GAAS,QAASxB,GAAM,CACtB,IAAM2B,EAAW3B,EAAE,KAAOqB,EACpBO,EAAU,KAAK,IAAI,KAAK,IAAID,EAAU3B,EAAE,GAAG,EAAGA,EAAE,GAAG,EAEnD6B,GAAeD,EAAU5B,EAAE,KAE7B,KAAK,IAAI6B,EAAY,EAAIlB,IAC3BX,EAAE,KAAO4B,EACTH,GAAYI,IAIVN,GAAQ,EACNvB,EAAE,KAAOA,EAAE,KAAK0B,EAAa,KAAK1B,CAAC,EAEnCA,EAAE,KAAOA,EAAE,KAAK0B,EAAa,KAAK1B,CAAC,CAE3C,CAAC,EAEDuB,IAASE,EACTD,GAAWE,EAGP,KAAK,IAAID,CAAQ,EAAId,EAAW,KACtC,CAEAE,EAAQ,QAASb,GAAMA,EAAE,MAAM,CAAC,CAClC,EAEI8B,EAAc,KAEZC,EAAc,IAAM,CACpBD,GAAa,qBAAqBA,CAAW,EAEjDA,EAAc,sBAAsB,IAAM,CACxClB,EAAO,EACPd,EAAU,EACVgC,EAAc,IAChB,CAAC,CACH,EAGME,EAAiB,IAAM,CAC3B,IAAMC,EAAiB1C,EAAO,OAAS,EACvCA,EAAO,QAAQ,CAACS,EAAGgB,KAAMhB,EAAE,UAAUgB,KAAMiB,CAAc,CAAC,CAC5D,EAGA7C,EAAG,SAAW,CACZ,MAAAI,EACA,OAAAD,EACA,SAASc,EAAO,CACdd,EAAO,KAAKc,CAAK,EACbA,EAAM,MAAQ,OAChBA,EAAM,KAAO,MAEfK,EAAc,GACdsB,EAAe,EACfD,EAAY,CACd,EACA,YAAY1B,EAAO,CACjB,IAAMW,EAAIzB,EAAO,QAAQc,CAAK,EAC1BW,IAAM,IAAIzB,EAAO,OAAOyB,EAAG,CAAC,EAChCN,EAAc,GACdsB,EAAe,EACfD,EAAY,CACd,EACA,aAAc,CACZrB,EAAc,GACdsB,EAAe,EACfD,EAAY,CACd,EACA,cAAe,CACbC,EAAe,EACfD,EAAY,CACd,EACA,aAAc,CACZA,EAAY,CACd,EACA,UAAAvB,EACA,UAAAV,CACF,EAEAV,EAAG,UAAU,IAAI,OAAQ,SAAU,UAAW,UAAW,yCAA0C,sCAAsC,EAEzI,IAAM8C,EAAW,IAAI,iBAAkBC,GAAc,CACnDA,EAAU,QAASC,GAAa,CAC1BA,EAAS,gBAAkB,oBAC7B5C,EAAM,aAAeJ,EAAG,aAAa,kBAAkB,IAAM,aAC7D2C,EAAY,GACHK,EAAS,gBAAkB,gBACpC5C,EAAM,SAAWJ,EAAG,aAAa,cAAc,IAAM,SACrD2C,EAAY,GAEZxC,EAAO,QAASS,IAAMA,GAAE,UAAUZ,EAAG,aAAa,aAAa,IAAM,MAAM,CAAC,CAEhF,CAAC,CACH,CAAC,EAED8C,EAAS,QAAQ9C,EAAI,CAAE,WAAY,GAAM,gBAAiB,CAAC,mBAAoB,eAAgB,aAAa,CAAE,CAAC,EAE/G,IAAMiD,EAAoB,IAAI,eAAeN,CAAW,EAExDM,EAAkB,QAAQjD,CAAE,EAE5BE,EAAQ,IAAM,CACRwC,GAAa,qBAAqBA,CAAW,EAC7ClC,GAAW,aAAaA,CAAS,EACrCyC,EAAkB,WAAW,EAC7BH,EAAS,WAAW,CACtB,CAAC,CACH,CAAC,EAED/C,EAAO,UAAU,gBAAiB,CAACC,EAAI,CAAE,SAAAkD,CAAS,EAAG,CAAE,OAAAC,EAAQ,QAAAjD,EAAS,OAAAH,CAAO,IAAM,CACnF,IAAMqD,EAAQrD,EAAO,YAAYC,EAAG,cAAgBqD,GAAW,OAAO,UAAU,eAAe,KAAKA,EAAQ,UAAU,CAAC,EACvH,GAAI,CAACD,EACH,MAAM,IAAI,MAAM,GAAGF,CAAQ,kCAAkC,EAG/DlD,EAAG,UAAU,IACX,OACA,SACA,SACA,aACA,mBACA,gEACA,gEACA,4CACA,8DACA,8DACA,yCACF,EACAA,EAAG,aAAa,WAAY,IAAI,EAChCA,EAAG,aAAa,YAAa,aAAa,EAE1C,IAAIsD,EAAatD,EAAG,aAAa,iBAAiB,IAAM,OAElDuD,EAAS,SAAS,cAAc,MAAM,EAC5CA,EAAO,aAAa,YAAa,cAAc,EAC/CA,EAAO,aAAa,gBAAiBvD,EAAG,aAAa,aAAa,IAAM,MAAM,EAC9EuD,EAAO,aAAa,WAAY,IAAI,EACpCA,EAAO,aAAa,OAAQ,WAAW,EACvCA,EAAO,UAAU,IACf,mBACA,WACA,WACA,aACA,YACA,eACA,yBACA,2BACA,gCACA,oCACA,sDACA,mDACF,EAEA,IAAMC,EAAgB,CACpB,YACA,eACA,yBACA,2BACA,kBACA,eACA,wBACA,gCACA,4DACA,yEACA,0EACA,oDACA,0CACA,kDACA,sEACA,0DACA,uEACA,wEACA,iDACA,wCACA,gDACA,mEACF,EACMC,EAAgB,CACpB,iBACA,eACA,iBACA,cACA,mBACA,sBACA,4BACA,iBACA,kBACA,gBACA,iBACA,yBACA,yBACA,mCACA,qCACA,kBACA,eACA,iBACA,kBACA,0BACA,0BACA,oBACA,0BACA,kBACA,0BACA,gBACA,wBACA,gCACA,+BACA,kCACA,gCAEA,kDACA,iDACA,4DACA,+CACA,gDACA,0DAEA,yCACA,gDACA,8CACA,uCACA,4CACA,6CACF,EAEMC,EAAa,IAAM,CACnBN,EAAM,SAAS,MAAM,UACvBG,EAAO,UAAU,OAAO,GAAGE,CAAa,EACxCF,EAAO,UAAU,IAAI,GAAGC,CAAa,IAErCD,EAAO,UAAU,OAAO,GAAGC,CAAa,EACxCD,EAAO,UAAU,IAAI,GAAGE,CAAa,EAEzC,EAEAC,EAAW,EAEXP,EAAOO,CAAU,EAEjB,IAAMC,EAAcP,EAAM,SAAS,UAAUpD,EAAG,aAAa,WAAW,CAAC,EAErE4D,EAAa,EAEblB,EAAc,KAEZzB,EAAQ,CACZ,GAAAjB,EACA,OAAAuD,EACA,OAAQvD,EAAG,aAAa,aAAa,IAAM,OAC3C,aAAc2D,EACd,KAAMA,EACN,SAAUA,GAAe,KACzB,IAAKP,EAAM,SAAS,UAAUpD,EAAG,aAAa,UAAU,CAAC,GAAK,EAC9D,IAAKoD,EAAM,SAAS,UAAUpD,EAAG,aAAa,UAAU,CAAC,GAAK,IAC9D,UAAW,GACX,SAAU,KAEV,OAAQ,CACNA,EAAG,MAAM,UAAY,GAAG,KAAK,KAAK,QAAQ,CAAC,CAAC,KACxCoD,EAAM,SAAS,MAAM,UACvB,KAAK,gBAAgB,CAEzB,EAEA,UAAUS,EAAM,CACV,KAAK,QAAUP,GAAcO,EAC/BN,EAAO,OAAO,GAEVb,GAAa,qBAAqBA,CAAW,EACjDA,EAAc,sBAAsB,IAAM,CACxC1C,EAAG,MAAMuD,CAAM,EACfK,EAAa,KAAK,cAAc,EAChClB,EAAc,IAChB,CAAC,EAEL,EAEA,iBAAkB,CAChB,IAAMvC,EAASiD,EAAM,SAAS,OAAO,OAAQxC,GAAM,CAACA,EAAE,MAAM,EACtDkD,EAAQ3D,EAAO,QAAQc,CAAK,EAC5B8C,EAAO5D,EAAO2D,EAAQ,CAAC,EACxBC,IACDA,EAAK,KAAOH,EACdL,EAAO,aAAa,YAAa,KAAK,EAC7B,KAAK,KAAOK,EACrBL,EAAO,aAAa,YAAa,OAAO,EAExCA,EAAO,gBAAgB,WAAW,EAEtC,EAEA,eAAgB,CACd,GAAIH,EAAM,SAAS,MAAM,SAAU,CACjC,IAAMY,EAAc,OAAO,iBAAiBT,EAAQ,UAAU,EAC9D,OAAO,OAAOS,EAAYZ,EAAM,SAAS,MAAM,aAAe,QAAU,QAAQ,EAAE,QAAQ,KAAM,EAAE,CAAC,EAAI,CACzG,KACE,OAAO,EAEX,EAEA,UAAUa,EAAS,GAAO,CACxB,IAAMC,EAAclE,EAAG,aAAa,aAAa,IAAM,OACvDuD,EAAO,aAAa,gBAAiBU,GAAUC,CAAW,EACtDD,GAEOC,EADTX,EAAO,UAAU,IAAI,qBAAqB,EAI1CA,EAAO,UAAU,OAAO,qBAAqB,CAEjD,CACF,EAEAvD,EAAG,MAAM,YAAY,sBAAuB,GAAGiB,EAAM,GAAG,IAAI,EACxDA,EAAM,IAAM,KACdjB,EAAG,MAAM,YAAY,sBAAuB,GAAGiB,EAAM,GAAG,IAAI,EAG9DmC,EAAM,SAAS,SAASnC,CAAK,EAG7B,IAAMkD,EAAQC,GAAM,CAClBA,EAAE,eAAe,EACjBb,EAAO,kBAAkBa,EAAE,SAAS,EAEpC,IAAMjE,EAASiD,EAAM,SAAS,OAAO,OAAQxC,GAAM,CAACA,EAAE,MAAM,EACtDkD,EAAQ3D,EAAO,QAAQc,CAAK,EAC5B8C,EAAO5D,EAAO2D,EAAQ,CAAC,EAC7B,GAAI,CAACC,EAAM,OAEX,IAAMM,EAAWjB,EAAM,SAAS,MAAM,aAAegB,EAAE,QAAUA,EAAE,QAE7DE,EAASrD,EAAM,KACfsD,EAASR,EAAK,KAEdS,GAAW,KAAK,IACpBvD,EAAM,IAAMqD,EACZC,EAASR,EAAK,GAChB,EAEMU,GAAW,KAAK,IACpBxD,EAAM,IAAMqD,EACZC,EAASR,EAAK,GAChB,EAEMW,GAAQN,GAAM,CAElB,IAAMjC,GADaiB,EAAM,SAAS,MAAM,aAAegB,EAAE,QAAUA,EAAE,SAC1CC,EAErB7B,EAAU,KAAK,IAAIiC,GAAU,KAAK,IAAID,GAAUrC,CAAK,CAAC,EAE5DlB,EAAM,KAAOqD,EAAS9B,EACtBuB,EAAK,KAAOQ,EAAS/B,EAErBvB,EAAM,SAAW,GAEbA,EAAM,YACRA,EAAM,UAAY,IAEhB8C,EAAK,YACPA,EAAK,UAAY,IAGnBX,EAAM,SAAS,YAAY,CAC7B,EAEMuB,EAAK,IAAM,CACfpB,EAAO,sBAAsBa,EAAE,SAAS,EACxCb,EAAO,oBAAoB,cAAemB,EAAI,EAC9CnB,EAAO,oBAAoB,YAAaoB,CAAE,CAC5C,EAEApB,EAAO,iBAAiB,cAAemB,EAAI,EAC3CnB,EAAO,iBAAiB,YAAaoB,CAAE,CACzC,EAEApB,EAAO,iBAAiB,cAAeY,CAAI,EAE3C,IAAMS,EAAW,IAAM,CACjB3D,EAAM,YAEVA,EAAM,SAAWA,EAAM,KACvBA,EAAM,KAAOA,EAAM,KAAO,EAC1BA,EAAM,UAAY,GAClBA,EAAM,SAAW,GAEjBmC,EAAM,SAAS,YAAY,EAC7B,EACMyB,EAAS,IAAM,CACnB,GAAI,CAAC5D,EAAM,UAAW,OAEtB,IAAM6D,EAAS7D,EAAM,UAAYA,EAAM,KAAO,EACxCkB,EAAQ2C,EAAS7D,EAAM,KAEvBQ,EAAU2B,EAAM,SAAS,OAAO,OAAQxC,GAAM,CAACA,EAAE,QAAUA,IAAMK,CAAK,EAExEe,EAAYG,EAEhB,QAAWvB,KAAKa,EAAS,CACvB,IAAMsD,EAAYnE,EAAE,KAAOA,EAAE,IACvBoE,EAAO,KAAK,IAAID,EAAW/C,CAAS,EAK1C,GAHApB,EAAE,MAAQoE,EACVhD,GAAagD,EAEThD,GAAa,EAAG,KACtB,CAEAf,EAAM,KAAO6D,EAAS9C,EACtBf,EAAM,UAAY,GAClBA,EAAM,SAAW,GAEjBmC,EAAM,SAAS,YAAY,CAC7B,EAEMN,EAAW,IAAI,iBAAkBC,GAAc,CACnDA,EAAU,QAASC,GAAa,CAC1BA,EAAS,gBAAkB,mBAC7BM,EAAatD,EAAG,aAAa,iBAAiB,IAAM,OACpDoD,EAAM,SAAS,aAAa,GACnBJ,EAAS,gBAAkB,eACpC/B,EAAM,OAASjB,EAAG,aAAa,aAAa,IAAM,OAC9CiB,EAAM,OACRjB,EAAG,UAAU,IAAI,QAAQ,EAEzBA,EAAG,UAAU,OAAO,QAAQ,EAE9BoD,EAAM,SAAS,YAAY,GAClBJ,EAAS,gBAAkB,cACpC/B,EAAM,UAAU,EAEZjB,EAAG,aAAa,eAAe,IAAM,OACvC4E,EAAS,EAETC,EAAO,CAGb,CAAC,CACH,CAAC,EAED/B,EAAS,QAAQ9C,EAAI,CAAE,WAAY,GAAM,gBAAiB,CAAC,cAAe,cAAe,gBAAiB,iBAAiB,CAAE,CAAC,EAE9HE,EAAQ,IAAM,CACZqD,EAAO,OAAO,EACdA,EAAO,oBAAoB,cAAeY,CAAI,EAC9Cf,EAAM,SAAS,YAAYnC,CAAK,EAChC6B,EAAS,WAAW,CACtB,CAAC,CACH,CAAC,CACH,CC7lBe,SAARmC,GAAkBC,EAAQ,CAC/BA,EAAO,UAAU,WAAaC,GAAO,CACnCA,EAAG,UAAU,IACX,qBACA,4BACA,2BACA,qBACA,2BACA,sCACA,2DACA,uCACA,mBACA,yBACA,yBACA,sBACA,kBACA,uBACA,sBACA,eACA,6BACA,gBACA,sBACA,sBACA,gBACA,uBACA,8BACA,uCACA,WACA,SACA,qBACA,yBACA,yBACA,eACA,MACA,qEACA,iCACA,4CACA,0CACA,kCACA,SACA,WACA,WACA,WACA,eACA,WACA,oBACA,+BACF,EACAA,EAAG,aAAa,WAAY,IAAI,EAChCA,EAAG,aAAa,YAAa,QAAQ,CACvC,CAAC,CACH,CCnDe,SAARC,GAAkBC,EAAQ,CAC/BA,EAAO,UAAU,oBAAqB,CAACC,EAAI,CAAE,UAAAC,CAAU,IAAM,CACvDA,EAAU,SAAS,QAAQ,EAC7BD,EAAG,UAAU,IACX,kBACA,qCACA,oCACA,kCACA,qCACA,uCACA,kCACA,2CACA,2CACA,uCACF,EAEAA,EAAG,UAAU,IAAI,WAAY,SAAU,iBAAiB,EAE1DA,EAAG,aAAa,YAAa,OAAO,EAEhCA,EAAG,aAAa,aAAa,IAAM,QACrCA,EAAG,UAAU,IAAI,SAAU,YAAY,CAE3C,CAAC,EAEDD,EAAO,UAAU,UAAYC,GAAO,CAKlC,OAJAA,EAAG,UAAU,IAAI,QAAS,SAAU,iBAAkB,UAAW,kBAAmB,kBAAkB,EAClGA,EAAG,aAAa,YAAY,IAAM,QAAQA,EAAG,UAAU,IAAI,aAAa,EAC5EA,EAAG,aAAa,YAAa,OAAO,EAE5BA,EAAG,aAAa,cAAc,EAAG,CACvC,IAAK,OACHA,EAAG,UAAU,IAAI,uCAAwC,uCAAwC,mDAAoD,kDAAkD,EACvM,MACF,IAAK,UACHA,EAAG,UAAU,IAAI,mCAAmC,EACpD,MACF,IAAK,OACHA,EAAG,UAAU,IACX,uCACA,uCACA,mDACA,mDACA,mCACF,EACA,KACJ,CACF,CAAC,EAEDD,EAAO,UAAU,iBAAmBC,GAAO,CACzCA,EAAG,UAAU,IAAI,iBAAiB,EAClCA,EAAG,aAAa,YAAa,cAAc,CAC7C,CAAC,EAEDD,EAAO,UAAU,eAAiBC,GAAO,CACvCA,EAAG,UAAU,IACX,kBACA,gDACA,6DACA,mDACA,gEACA,OACA,OACA,YACA,eACA,cACA,oBACA,gCACA,2BACA,kCACF,EACAA,EAAG,aAAa,YAAa,YAAY,CAC3C,CAAC,EAEDD,EAAO,UAAU,eAAiBC,GAAO,CACvCA,EAAG,UAAU,IACX,MACA,uCACA,eACA,oBACA,gCACA,2BACA,mCACA,gDACA,6DACA,mDACA,+DACF,EACAA,EAAG,aAAa,YAAa,YAAY,CAC3C,CAAC,EAEDD,EAAO,UAAU,sBAAwBC,GAAO,CAC9CA,EAAG,UAAU,IACX,OACA,YACA,OACA,iBACA,cACA,eACA,kBACA,eACA,QACA,oBACA,oBACA,gCACA,8BACA,qBACA,0BACA,+BACA,wCACA,uBACA,uCACA,WACA,mBACA,mCACA,6BACA,uBACA,oCACA,0BACA,uCACA,mEACA,gDACF,EACAA,EAAG,aAAa,OAAQ,QAAQ,EAChCA,EAAG,aAAa,YAAa,mBAAmB,CAClD,CAAC,EAEDD,EAAO,UAAU,eAAiBC,GAAO,CACvCA,EAAG,UAAU,IACX,oDACA,oDACA,8CACA,wEACA,qFACA,2EACA,uFACF,EACAA,EAAG,aAAa,YAAa,YAAY,CAC3C,CAAC,EAEDD,EAAO,UAAU,cAAgBC,GAAO,CACtCA,EAAG,UAAU,IACX,gDACA,6DACA,mDACA,gEACA,wCACA,oDACF,EACAA,EAAG,aAAa,YAAa,WAAW,CAC1C,CAAC,EAEDD,EAAO,UAAU,kBAAoBC,GAAO,CAC1CA,EAAG,UAAU,IAAI,wBAAyB,OAAQ,UAAW,UAAU,EACvEA,EAAG,aAAa,YAAa,eAAe,CAC9C,CAAC,EAEDD,EAAO,UAAU,iBAAmBC,GAAO,CACzCA,EAAG,UAAU,IAAI,kBAAmB,cAAe,8CAA+C,6CAA6C,EAC/IA,EAAG,aAAa,YAAa,cAAc,CAC7C,CAAC,CACH,CC/Je,SAARE,GAAkBC,EAAQ,CAC/BA,EAAO,UAAU,SAAWC,GAAO,CACjCA,EAAG,UAAU,IAAI,aAAc,OAAQ,yCAA0C,sCAAsC,EACvHA,EAAG,aAAa,YAAa,MAAM,CACrC,CAAC,EAEDD,EAAO,UAAU,YAAcC,GAAO,CACpCA,EAAG,UAAU,IACX,gBACA,OACA,QACA,mBACA,gCACA,oDACA,kDACA,iHACA,+GACA,8EACA,kFACA,4FACA,gGACA,6FACA,iGACA,8BACA,iCACA,2BACA,kCACA,oDACF,EACAA,EAAG,aAAa,YAAa,SAAS,CACxC,CAAC,EAEDD,EAAO,UAAU,aAAeC,GAAO,CACrCA,EAAG,UAAU,IACX,wBACA,OACA,cACA,gBACA,iBACA,6DACA,2DACA,oDACA,kDACA,+CACA,QACA,0CACF,EACAA,EAAG,aAAa,OAAQ,SAAS,EACjCA,EAAG,aAAa,YAAa,UAAU,CACzC,CAAC,EAEDD,EAAO,UAAU,QAAS,CAACC,EAAI,CAAE,SAAAC,CAAS,IAAM,CAiD9C,GAhDAD,EAAG,UAAU,IACX,iBACA,4BACA,6BACA,6BACA,wBACA,wBACA,gCACA,cACA,gDACA,6CACA,kDACA,eACA,gBACA,UACA,OACA,OACA,UACA,cACA,oBACA,oBACA,oBACA,gCACA,gDACA,4CACA,wDACA,iEACA,iEACA,yDACA,yDACA,uDACA,qIACA,8IACA,oJACA,0FACA,mIACA,4IACA,kJACA,2BACA,0BACA,+BACA,sBACA,8BACA,mBACA,sCACF,EACAA,EAAG,aAAa,OAAQ,KAAK,EAC7BA,EAAG,aAAa,YAAa,KAAK,EAC9B,CAACA,EAAG,aAAa,IAAI,EAAG,MAAM,IAAI,MAAM,GAAGC,CAAQ,wBAAwB,EAC/E,GAAI,CAACD,EAAG,aAAa,eAAe,EAAG,MAAM,IAAI,MAAM,GAAGC,CAAQ,oDAAoD,CACxH,CAAC,EAEDF,EAAO,UAAU,eAAiBC,GAAO,CACvCA,EAAG,UAAU,IAAI,iBAAkB,UAAW,aAAc,kBAAmB,qBAAsB,kCAAmC,4BAA4B,EACpKA,EAAG,aAAa,OAAQ,QAAQ,EAChCA,EAAG,aAAa,YAAa,YAAY,CAC3C,CAAC,EAEDD,EAAO,UAAU,qBAAsB,CAACC,EAAI,CAAE,UAAAE,CAAU,IAAM,CAC5DF,EAAG,UAAU,IAAI,OAAQ,UAAW,eAAgB,gBAAgB,EAChEE,EAAU,SAAS,KAAK,GAC1BF,EAAG,UAAU,IACX,mDACA,8FACA,iDACA,2FACF,EACFA,EAAG,aAAa,YAAa,kBAAkB,CACjD,CAAC,EAEDD,EAAO,UAAU,oBAAsBC,GAAO,CAC5CG,GAAiBH,CAAE,EACnBA,EAAG,UAAU,IACX,gDACA,yDACA,kDACA,qFACA,+FACA,6CACA,mFACA,4FACF,EACAA,EAAG,UAAU,IAAI,GAAGI,GAAeJ,EAAG,aAAa,cAAc,GAAK,SAAS,CAAC,EAChFA,EAAG,aAAa,OAAQ,QAAQ,EAChCA,EAAG,aAAa,YAAa,iBAAiB,CAChD,CAAC,EAEDD,EAAO,UAAU,iBAAkB,CAACC,EAAI,CAAE,SAAAC,CAAS,IAAM,CAKvD,GAJAD,EAAG,UAAU,IAAI,SAAU,cAAc,EACzCA,EAAG,aAAa,OAAQ,UAAU,EAClCA,EAAG,aAAa,WAAY,GAAG,EAC/BA,EAAG,aAAa,YAAa,cAAc,EACvC,CAACA,EAAG,aAAa,IAAI,EAAG,MAAM,IAAI,MAAM,GAAGC,CAAQ,+BAA+B,EACtF,GAAI,CAACD,EAAG,aAAa,iBAAiB,EAAG,MAAM,IAAI,MAAM,GAAGC,CAAQ,8CAA8C,CACpH,CAAC,CACH,CCrJe,SAARI,GAAkBC,EAAQ,CAC/BA,EAAO,UAAU,QAAUC,GAAO,CAChCA,EAAG,UAAU,IACX,WACA,wBACA,sBACA,cACA,MACA,QACA,UACA,eACA,iBACA,QACA,aACA,OACA,YACA,UACA,cACA,cACA,uCACA,mDACA,kDACA,uDACF,EACAA,EAAG,aAAa,YAAa,KAAK,CACpC,CAAC,EAEDD,EAAO,UAAU,cAAgBC,GAAO,CACtCA,EAAG,UAAU,IAAI,cAAe,eAAgB,OAAO,EACvDA,EAAG,aAAa,YAAa,WAAW,CAC1C,CAAC,CACH,CC/Be,SAARC,GAAkBC,EAAQ,CAC/BA,EAAO,UAAU,SAAU,CAACC,EAAI,CAAE,UAAAC,CAAU,IAAM,CAChD,OAAQA,EAAU,CAAC,EAAG,CACpB,IAAK,KACHD,EAAG,UAAU,IAAI,WAAY,iBAAkB,gBAAgB,EAC/D,MACF,IAAK,KACHA,EAAG,UAAU,IAAI,WAAY,gBAAiB,gBAAgB,EAC9D,MACF,IAAK,KACHA,EAAG,UAAU,IAAI,WAAY,gBAAiB,gBAAgB,EAC9D,MACF,IAAK,KACHA,EAAG,UAAU,IAAI,UAAW,gBAAiB,gBAAgB,EAC7D,MACF,IAAK,KACHA,EAAG,UAAU,IAAI,YAAa,gBAAiB,gBAAgB,EAC/D,MACF,IAAK,KACHA,EAAG,UAAU,IAAI,UAAW,gBAAiB,gBAAgB,EAC7D,MACF,IAAK,aACHA,EAAG,UAAU,IAAI,OAAQ,aAAc,OAAQ,QAAQ,EACvD,MACF,IAAK,cACHA,EAAG,UAAU,IAAI,WAAY,WAAY,UAAW,gCAAiC,gCAAiC,YAAa,UAAW,gBAAiB,gBAAgB,EAC/K,MACF,IAAK,OACHA,EAAG,UAAU,IAAI,WAAY,WAAY,UAAW,MAAO,YAAa,UAAW,gBAAiB,gBAAgB,EACpH,MACF,IAAK,OACHA,EAAG,UAAU,IAAI,wBAAyB,SAAS,EACnD,MACF,IAAK,KACHA,EAAG,UAAU,IAAI,UAAW,eAAe,EAC3C,MACF,IAAK,KACHA,EAAG,UAAU,IAAI,UAAW,eAAgB,aAAa,EACzD,MACF,IAAK,KACHA,EAAG,UAAU,IAAI,UAAW,eAAgB,aAAa,EACzD,MACF,IAAK,QACHA,EAAG,UAAU,IAAI,wBAAyB,SAAS,EACnD,MACF,QACEA,EAAG,UAAU,IAAI,WAAW,CAChC,CACF,CAAC,CACH,CCjDe,SAARE,GAAkBC,EAAQ,CAC/BA,EAAO,UAAU,aAAc,CAACC,EAAI,CAAE,UAAAC,CAAU,IAAM,CACpDD,EAAG,UAAU,IACX,eACA,oCACA,4BACA,6BACA,gCACA,qCACA,+BACA,4BACA,iCACA,2BACA,iBACA,OACA,uBACA,WACA,SACA,kBACA,SACA,OACA,OACA,YACA,eACA,oBACA,oBACA,gCACA,eACA,iDACA,8BACA,sBACA,YACF,EACIC,EAAU,SAAS,OAAO,GAC5BD,EAAG,UAAU,OAAO,kBAAmB,SAAU,iBAAkB,OAAQ,eAAgB,gDAAgD,EAC3IA,EAAG,UAAU,IAAI,SAAU,cAAe,eAAgB,WAAY,iBAAkB,OAAQ,cAAe,sBAAsB,EACrIA,EAAG,aAAa,YAAa,qBAAqB,GAC7CA,EAAG,aAAa,YAAa,UAAU,CAChD,CAAC,CACH,CCvCe,SAARE,GAAkBC,EAAQ,CAC/BA,EAAO,UAAU,eAAiBC,GAAO,CACvCA,EAAG,UAAU,IAAI,mBAAoB,OAAO,EAC5CA,EAAG,aAAa,OAAQ,MAAM,EAC9BA,EAAG,aAAa,YAAa,YAAY,CAC3C,CAAC,EAEDD,EAAO,UAAU,SAAWC,GAAO,CA0BjC,OAzBAA,EAAG,UAAU,IACX,aACA,OACA,eACA,OACA,OACA,mCACA,UACA,UACA,aACA,oBACA,gCACA,+BACA,sCACA,wBACA,oCACA,eACA,YACA,eACA,4BACA,6BACA,gDACF,EACAA,EAAG,aAAa,YAAa,MAAM,EAE3BA,EAAG,aAAa,cAAc,EAAG,CACvC,IAAK,UACHA,EAAG,UAAU,IAAI,SAAU,eAAe,EAC1C,MACF,IAAK,SACHA,EAAG,UAAU,IAAI,SAAU,WAAW,EACtC,MACF,IAAK,QACHA,EAAG,UAAU,IAAI,UAAU,EAC3B,MACF,QACEA,EAAG,UAAU,IAAI,SAAU,iBAAkB,oBAAoB,CACrE,CACF,CAAC,EAEDD,EAAO,UAAU,gBAAkBC,GAAO,CACxCA,EAAG,UAAU,IAAI,OAAQ,aAAc,eAAgB,kBAAmB,OAAO,EACjFA,EAAG,aAAa,YAAa,aAAa,CAC5C,CAAC,EAEDD,EAAO,UAAU,eAAiBC,GAAO,CAKvC,OAJAA,EAAG,UAAU,IAAI,OAAQ,WAAY,eAAgB,iBAAkB,QAAS,2DAA4D,8BAA+B,+DAA+D,EAC1OA,EAAG,aAAa,OAAQ,MAAM,EAC9BA,EAAG,aAAa,YAAa,YAAY,EAEjCA,EAAG,aAAa,cAAc,EAAG,CACvC,IAAK,OACHA,EAAG,UAAU,IAAI,SAAU,SAAU,aAAc,WAAY,sCAAsC,EACrG,MACF,IAAK,QACHA,EAAG,UAAU,IAAI,UAAW,aAAc,kBAAmB,oBAAqB,sBAAsB,EACxG,MACF,QACEA,EAAG,UAAU,IAAI,gBAAgB,CACrC,CACF,CAAC,EAEDD,EAAO,UAAU,iBAAmBC,GAAO,CACzCA,EAAG,UAAU,IAAI,OAAQ,SAAU,QAAS,wCAAwC,EACpFA,EAAG,aAAa,YAAa,cAAc,CAC7C,CAAC,EAEDD,EAAO,UAAU,eAAiBC,GAAO,CACvCA,EAAG,UAAU,IAAI,OAAQ,QAAS,eAAgB,QAAS,UAAW,eAAgB,aAAa,EACnGA,EAAG,aAAa,YAAa,YAAY,CAC3C,CAAC,EAEDD,EAAO,UAAU,qBAAuBC,GAAO,CAC7CA,EAAG,UAAU,IAAI,wBAAyB,eAAgB,UAAW,iBAAkB,cAAe,eAAgB,2BAA4B,kBAAmB,0BAA0B,EAC/LA,EAAG,aAAa,YAAa,kBAAkB,CACjD,CAAC,EAEDD,EAAO,UAAU,iBAAmBC,GAAO,CACzCA,EAAG,UAAU,IAAI,OAAQ,eAAgB,OAAO,EAChDA,EAAG,aAAa,YAAa,cAAc,CAC7C,CAAC,EAEDD,EAAO,UAAU,gBAAkBC,GAAO,CACxCA,EAAG,UAAU,IAAI,OAAQ,aAAc,eAAgB,kBAAmB,OAAO,EACjFA,EAAG,aAAa,YAAa,aAAa,CAC5C,CAAC,CACH,CC1FA,IAAMC,GAAkB,CAAE,GAAI,KAAM,GAAI,IAAK,EAEvCC,GAAkB,CAACC,EAASC,IAAgB,CAChD,IAAIC,EAAO,KACPC,EAAS,KACTC,EAAS,KACTC,EAAS,KACb,GAAIL,EAAQ,OAAS,EAAG,CACtB,IAAIM,EAAYN,EAAQ,MAAM,GAAG,EAC7BA,EAAQ,YAAY,EAAE,SAAS,IAAI,EACrCK,EAASP,GAAgB,GAChBE,EAAQ,YAAY,EAAE,SAAS,IAAI,IAC5CK,EAASP,GAAgB,IAEvBO,IACFC,EAAUA,EAAU,OAAS,CAAC,EAAIA,EAAUA,EAAU,OAAS,CAAC,EAAE,UAAU,EAAGA,EAAUA,EAAU,OAAS,CAAC,EAAE,OAAS,CAAC,GAE3HH,EAASG,EAAU,CAAC,GACf,CAACD,GAAUC,EAAU,SAAW,GAAOD,GAAUC,EAAU,SAAW,KACzEF,EAASE,EAAU,CAAC,GAElBL,GAAeI,EACjBH,EAAOI,EAAU,CAAC,EACTL,GAAe,CAACI,GACzBA,EAAS,OAAOC,EAAU,CAAC,CAAC,GAAK,GAAKR,GAAgB,GAAKA,GAAgB,GAC3EI,EAAO,OAAOI,EAAU,CAAC,CAAC,EAAI,IAAM,GAChCJ,EAAO,KAAIA,EAAO,IAAIA,CAAI,KACrB,CAACD,GAAeI,GACrBA,IAAWP,GAAgB,GAC7BI,EAAO,OAAOI,EAAU,CAAC,CAAC,EAAI,GAKhCJ,EAAOI,EAAU,CAAC,CAEtB,CACA,MAAO,CAAE,KAAAJ,EAAM,OAAAC,EAAQ,OAAAC,EAAQ,OAAAC,CAAO,CACxC,EAEA,SAASE,GAAiBC,EAAWC,EAASC,EAAW,UAAW,CAClE,IAAMC,EAAgBH,EAAU,sBAAsB,EAGhDI,EAFcH,EAAQ,sBAAsB,EAEvB,IAAME,EAAc,IAAMH,EAAU,aAAe,EAAIC,EAAQ,aAAe,EAEzGD,EAAU,SAAS,CACjB,IAAKI,EACL,SAAAF,CACF,CAAC,CACH,CAEe,SAARG,GAAkBC,EAAQ,CAC/BA,EAAO,UAAU,gBAAiB,CAACC,EAAI,CAAE,WAAAC,EAAY,UAAAC,CAAU,EAAG,CAAE,cAAAC,EAAe,QAAAC,EAAS,OAAAC,EAAQ,OAAAN,CAAO,IAAM,CA0G/G,GAzGAC,EAAG,cAAgBD,EAAO,SAAS,CACjC,GAAI,OACJ,SAAU,OAAOO,EAAO,CAAC,GACzB,MAAO,OACP,SAAU,GACV,SAAU,GACV,OAAQ,OACR,QAAS,OACT,WAAY,OACZ,MAAMC,EAAQ,GAAO,CACnBP,EAAG,cAAc,SAAW,GAC5B,IAAI,oBAAoB,QAASA,EAAG,cAAc,KAAK,EACnDO,GAAS,KAAK,YAChB,KAAK,WAAW,CAEpB,CACF,CAAC,EACDP,EAAG,QAAU,CACX,QAAS,OACT,MAAO,CACL,KAAM,KACN,OAAQ,KACR,OAAQ,KACR,OAAQ,IACV,CACF,EAEAA,EAAG,UAAU,IACX,iBACA,eACA,OACA,eACA,kBACA,QACA,OACA,OACA,sBACA,UACA,oBACA,oBACA,oBACA,gCACA,eACA,eACA,2CACA,0CACA,iCACF,EACIE,EAAU,SAAS,OAAO,GAC5BF,EAAG,UAAU,IACX,YACA,OACA,+CACA,yCACA,wDACA,6DACA,8CACA,mDACA,uBACA,oCACA,0BACA,uCACA,4CACA,4CACF,EACAA,EAAG,aAAa,YAAa,iBAAiB,IAE9CA,EAAG,UAAU,IACX,SACA,2BACA,kCACA,sEACA,6BACA,mCACA,uEACA,kBACA,SACA,iBACA,eACA,4CACA,6CACA,wCACA,6DACA,yCACA,kDACA,iDACA,uDACA,uCACA,sCACA,2CACF,EACAA,EAAG,aAAa,YAAa,aAAa,GAE5CA,EAAG,aAAa,WAAY,IAAI,EAChCA,EAAG,YACDQ,EAAU,CACR,KAAM,EACN,QAAS,8DACT,MAAO,CACL,cAAe,GACf,KAAM,cACR,CACF,CAAC,CACH,EAEIP,EAAY,CACd,IAAMQ,EAAYN,EAAcF,CAAU,EAE1CI,EAAO,IAAM,CACXI,EAAWC,GAAW,CAChBA,IACEA,EAAO,SAAWV,EAAG,cAAc,OAASU,EAAO,QACvDV,EAAG,cAAc,QAAUU,EAAO,QAC9BA,EAAO,WAAgB,OACzBV,EAAG,cAAc,SAAWU,EAAO,SAEnCV,EAAG,cAAc,SAAW,IAAI,KAAK,eAAeA,EAAG,cAAc,OAAQ,CAAE,KAAM,SAAU,CAAC,EAAE,gBAAgB,EAAE,OAG1H,CAAC,CACH,CAAC,CACH,MACEA,EAAG,cAAc,SAAW,IAAI,KAAK,eAAeA,EAAG,cAAc,OAAQ,CAAE,KAAM,SAAU,CAAC,EAAE,gBAAgB,EAAE,OAGtH,IAAMW,EAAWC,GAAU,CACrBA,EAAM,OAAS,WAAaA,EAAM,MAAQ,UAC9CZ,EAAG,cAAc,SAAW,CAACA,EAAG,cAAc,SAC9CA,EAAG,aAAa,gBAAiBA,EAAG,cAAc,QAAQ,EAC1DD,EAAO,SAAS,IAAM,CAChBC,EAAG,cAAc,SACnB,IAAI,iBAAiB,QAASA,EAAG,cAAc,KAAK,EAEpD,IAAI,oBAAoB,QAASA,EAAG,cAAc,KAAK,CAE3D,CAAC,EACH,EAEAA,EAAG,iBAAiB,QAASW,CAAO,EACpCX,EAAG,iBAAiB,UAAWW,CAAO,EAEtC,IAAME,EAAWC,GAAad,CAAE,EAEhCI,EAAQ,IAAM,CACZS,EAAS,WAAW,EACpBb,EAAG,oBAAoB,QAASW,CAAO,EACvCX,EAAG,oBAAoB,UAAWW,CAAO,EACzC,IAAI,oBAAoB,QAASX,EAAG,cAAc,KAAK,CACzD,CAAC,CACH,CAAC,EAEDD,EAAO,UAAU,sBAAuB,CAACC,EAAI,CAAE,SAAAe,CAAS,EAAG,CAAE,OAAAV,EAAQ,QAAAD,EAAS,OAAAL,CAAO,IAAM,CACzF,GAAIC,EAAG,UAAY,QACjB,MAAM,IAAI,MAAM,GAAGe,CAAQ,0CAA0C,EAEvE,IAAMC,EAAajB,EAAO,YAAYC,EAAG,cAAgBiB,GAAW,OAAO,UAAU,eAAe,KAAKA,EAAQ,eAAe,CAAC,EACjI,GAAI,CAACD,EACH,MAAM,IAAI,MAAM,GAAGD,CAAQ,uCAAuC,EAEpEC,EAAW,cAAc,WAAa,IAAM,CAC1ChB,EAAG,MAAM,CACX,EACAgB,EAAW,QAAQ,QAAU,IAAM,CACjCjB,EAAO,SAAS,IAAM,CACpBC,EAAG,cAAc,IAAI,MAAM,QAAQ,CAAC,CACtC,CAAC,CACH,EACI,OAAO,UAAU,eAAe,KAAKA,EAAI,UAAU,EACrDgB,EAAW,cAAc,MAAQhB,EAAG,SAEpCgB,EAAW,cAAc,MAAQ,CAC/B,KAAM,CACJ,OAAOhB,EAAG,KACZ,EACA,IAAIkB,EAAU,CACZlB,EAAG,MAAQkB,CACb,CACF,EAEElB,EAAG,aAAa,IAAI,EACtBgB,EAAW,cAAc,GAAKhB,EAAG,aAAa,IAAI,GAElDgB,EAAW,cAAc,GAAK,MAAMV,EAAO,CAAC,GAC5CN,EAAG,aAAa,KAAMgB,EAAW,cAAc,EAAE,GAEnDhB,EAAG,UAAU,IACX,kBACA,iBACA,iBACA,mBACA,wCACA,oCACA,eACA,YACA,WACA,aACA,YACA,UACF,EACAA,EAAG,aAAa,oBAAqB,MAAM,EAC3CA,EAAG,aAAa,gBAAiBgB,EAAW,cAAc,QAAQ,EAClEhB,EAAG,aAAa,gBAAiB,OAAO,EACxCA,EAAG,aAAa,gBAAiB,QAAQ,EACzCA,EAAG,aAAa,OAAQ,MAAM,EAC9BA,EAAG,aAAa,YAAa,mBAAmB,EAEhD,IAAMf,EAAU+B,EAAW,cAAc,MAAM,IAAI,EAEnD,GAAI/B,EAAS,CACX,GAAM,CAAE,KAAAE,EAAM,OAAAC,EAAQ,OAAAC,EAAQ,OAAAC,CAAO,EAAIN,GAAgBC,EAAS+B,EAAW,cAAc,QAAQ,EAE/FA,EAAW,cAAc,UAAY,QAAa,CAAC3B,EACrD2B,EAAW,cAAc,QAAU,GAC1BA,EAAW,cAAc,UAAY,QAAa3B,IAC3D2B,EAAW,cAAc,QAAU,IAGjCA,EAAW,cAAc,UACvBA,EAAW,cAAc,SAC3BA,EAAW,cAAc,MAAM,IAAI,GAAG7B,CAAI,IAAIC,CAAM,IAAIC,GAAU,IAAI,IAAIC,CAAM,EAAE,EAClF0B,EAAW,QAAQ,MAAM,OAAS3B,GAAU,MAE5C2B,EAAW,cAAc,MAAM,IAAI,GAAG7B,CAAI,IAAIC,CAAM,IAAIE,CAAM,EAAE,EAElE0B,EAAW,QAAQ,MAAM,KAAO7B,EAChC6B,EAAW,QAAQ,MAAM,OAAS5B,EAClC4B,EAAW,QAAQ,MAAM,OAAS1B,IAE9B0B,EAAW,cAAc,SAC3BA,EAAW,cAAc,MAAM,IAAI,GAAG7B,CAAI,IAAIC,CAAM,IAAIC,GAAU,IAAI,EAAE,EACxE2B,EAAW,QAAQ,MAAM,OAAS3B,GAAU,MAE5C2B,EAAW,cAAc,MAAM,IAAI,GAAG7B,CAAI,IAAIC,CAAM,EAAE,EAExD4B,EAAW,QAAQ,MAAM,KAAO7B,EAChC6B,EAAW,QAAQ,MAAM,OAAS5B,EAEtC,CAEA,IAAI+B,EACAH,EAAW,cAAc,QAC3BG,EAAcH,EAAW,cAAc,SAAW,cAAgB,WAElEG,EAAcH,EAAW,cAAc,SAAW,WAAa,QAEjEhB,EAAG,aAAa,cAAemB,CAAW,EAE1C,IAAMC,EAAgBR,GAAU,CAC9BA,EAAM,eAAe,CACvB,EAEAZ,EAAG,iBAAiB,cAAeoB,CAAY,EAC/CpB,EAAG,iBAAiB,QAASoB,CAAY,EAEzCf,EAAO,IAAM,CACXL,EAAG,aAAa,gBAAiBgB,EAAW,cAAc,QAAQ,CACpE,CAAC,EAEDZ,EAAQ,IAAM,CACZJ,EAAG,oBAAoB,UAAWoB,CAAY,EAC9CpB,EAAG,oBAAoB,QAASoB,CAAY,CAC9C,CAAC,CACH,CAAC,EAEDrB,EAAO,UAAU,sBAAuB,CAACC,EAAIqB,EAAG,CAAE,OAAAhB,EAAQ,QAAAD,EAAS,OAAAL,CAAO,IAAM,CAC9E,IAAMiB,EAAajB,EAAO,YAAYC,EAAG,cAAgBiB,GAAW,OAAO,UAAU,eAAe,KAAKA,EAAQ,eAAe,CAAC,EACjIjB,EAAG,UAAU,IACX,kBACA,eACA,SACA,kBACA,WACA,aACA,0BACA,OACA,WACA,SACA,OACA,YACA,6BACA,gCACA,eACA,WACA,YACA,UACF,EACAA,EAAG,aAAa,KAAMgB,EAAW,cAAc,QAAQ,EACvDhB,EAAG,aAAa,WAAY,IAAI,EAChCA,EAAG,aAAa,OAAQ,QAAQ,EAChCA,EAAG,aAAa,aAAc,MAAM,EACpCA,EAAG,aAAa,YAAa,mBAAmB,EAChDA,EAAG,aAAa,kBAAmBgB,EAAW,cAAc,EAAE,EAE9D,IAAMM,EAAgB,CACpB,SACA,OACA,2BACA,kCACA,kCACA,wCACA,2BACA,kCACA,uCACA,8CACA,UACA,cACA,iBACA,cACA,oCACA,0BACF,EAEMC,EAAc,IAAM,CACxB,IAAIL,EACJ,GAAIF,EAAW,QAAQ,MAAM,OAAS,MAAQA,EAAW,QAAQ,MAAM,SAAW,KAChF,GAAIA,EAAW,cAAc,QAC3B,GAAIA,EAAW,QAAQ,MAAM,UAAY,KACvCE,EAAW,GAAGF,EAAW,QAAQ,MAAM,IAAI,IAAIA,EAAW,QAAQ,MAAM,MAAM,IAAIA,EAAW,QAAQ,MAAM,MAAM,OAC5G,aAEPE,EAAW,GAAGF,EAAW,QAAQ,MAAM,IAAI,IAAIA,EAAW,QAAQ,MAAM,MAAM,OAE3E,QACP,GAAIA,EAAW,cAAc,SAC3B,GAAIA,EAAW,QAAQ,MAAM,SAAW,KACtCE,GAAY,IAAIF,EAAW,QAAQ,MAAM,MAAM,OAC1C,QAELE,IACFF,EAAW,cAAc,MAAM,IAAIE,CAAQ,EAC3CF,EAAW,QAAQ,QAAQ,EAE/B,EAEMQ,EAAiB,IAAM,CAC3B,IAAIC,EAAO,IAAI,KACXtC,EAAOsC,EAAK,SAAS,EACzBT,EAAW,QAAQ,MAAM,OAAS7B,GAAQ,GAAKJ,GAAgB,GAAKA,GAAgB,GAChFiC,EAAW,cAAc,WAC3B7B,EAAOsC,EAAK,SAAS,EAAI,IAAM,IAEjC,IAAIrC,EAASqC,EAAK,WAAW,EAG7B,GAFAT,EAAW,QAAQ,MAAM,KAAO7B,EAAO,GAAK,IAAIA,CAAI,GAAKA,EAAK,SAAS,EACvE6B,EAAW,QAAQ,MAAM,OAAS5B,EAAS,GAAK,IAAIA,CAAM,GAAKA,EAAO,SAAS,EAC3E4B,EAAW,cAAc,QAAS,CACpC,IAAI3B,EAASoC,EAAK,WAAW,EAC7BT,EAAW,QAAQ,MAAM,OAAS3B,EAAS,GAAK,IAAIA,CAAM,GAAKA,EAAO,SAAS,CACjF,CACAkC,EAAY,EACZP,EAAW,cAAc,MAAM,CACjC,EAEA,SAASU,EAAUd,EAAO,CACxB,GAAIA,EAAM,MAAQ,SAChBI,EAAW,cAAc,MAAM,EAAI,UAC1BJ,EAAM,OAAO,UAAY,KAAM,CACxC,IAAIe,EACAC,EAAchB,EAAM,OAAO,cAAc,QAAQ,OAAS,QAU9D,OATIgB,EACFD,EAAOE,EACEjB,EAAM,OAAO,cAAc,QAAQ,OAAS,UACrDe,EAAOG,EACElB,EAAM,OAAO,cAAc,QAAQ,OAAS,UACrDe,EAAOI,EACEnB,EAAM,OAAO,cAAc,QAAQ,OAAS,WACrDe,EAAOK,GAEDpB,EAAM,IAAK,CACjB,IAAK,KACL,IAAK,UAAW,CACdA,EAAM,OAAO,aAAa,WAAY,IAAI,EAC1C,IAAIqB,EAAWrB,EAAM,OAAO,wBACxBqB,IAAa,MAAQA,EAAS,UAAU,SAAS,QAAQ,KACvDL,GAAeZ,EAAW,cAAc,SAC1CiB,EAAWN,EAAK,SAAS,EAAE,EAE3BM,EAAWN,EAAK,WAGpBM,EAAS,aAAa,WAAY,GAAG,EACrCA,EAAS,MAAM,EACf,KACF,CACA,IAAK,OACL,IAAK,YAAa,CAChBrB,EAAM,OAAO,aAAa,WAAY,IAAI,EAC1C,IAAIsB,EAAWtB,EAAM,OAAO,oBACxBsB,IAAa,MAAQA,EAAS,UAAU,SAAS,QAAQ,KACvDN,GAAeZ,EAAW,cAAc,SAC1CkB,EAAWP,EAAK,SAAS,CAAC,EAE1BO,EAAWP,EAAK,YAGpBO,EAAS,aAAa,WAAY,GAAG,EACrCA,EAAS,MAAM,EACf,KACF,CACA,IAAK,OACL,IAAK,SAAU,CACb,IAAIC,EACJ,GAAIR,EAAK,aAAef,EAAM,OAC5B,MACK,GAAIgB,GAAeZ,EAAW,cAAc,SAAU,CAC3D,GAAIW,EAAK,SAAS,CAAC,IAAMf,EAAM,OAC7B,MAEAuB,EAAaR,EAAK,SAAS,CAAC,CAEhC,MACEQ,EAAaR,EAAK,WAEpBf,EAAM,OAAO,aAAa,WAAY,IAAI,EAC1CuB,EAAW,aAAa,WAAY,GAAG,EACvCA,EAAW,MAAM,EACjB,KACF,CACA,IAAK,MACL,IAAK,WAAY,CACf,IAAIC,EACJ,GAAIT,EAAK,YAAcf,EAAM,OAC3B,MACK,GAAIgB,GAAeZ,EAAW,cAAc,SACjD,GAAIW,EAAK,SAAS,EAAE,IAAMf,EAAM,OAC9BwB,EAAWT,EAAK,SAAS,EAAE,MAE3B,YAGFS,EAAWT,EAAK,UAElBf,EAAM,OAAO,aAAa,WAAY,IAAI,EAC1CwB,EAAS,aAAa,WAAY,GAAG,EACrCA,EAAS,MAAM,EACf,KACF,CACA,IAAK,QACL,IAAK,aAAc,CACjB,IAAIC,EAAazB,EAAM,OAAO,cAAc,mBACxCyB,GACYA,EAAW,cAAc,kBAAkB,EACnD,MAAM,EAEd,KACF,CACA,IAAK,OACL,IAAK,YAAa,CAChB,IAAIC,EAAa1B,EAAM,OAAO,cAAc,uBACxC0B,GACYA,EAAW,cAAc,kBAAkB,EACnD,MAAM,EAEd,KACF,CACA,IAAK,QACL,IAAK,IACH1B,EAAM,OAAO,MAAM,EACnB,MACF,QACE,MACJ,CACAA,EAAM,gBAAgB,EACtBA,EAAM,eAAe,CACvB,MAAWA,EAAM,MAAQ,OAASA,EAAM,OAAO,UAAY,WACrDA,EAAM,OAAO,QAAQ,SAAW,SAAYA,EAAM,OAAO,QAAQ,SAAW,QAAUA,EAAM,OAAO,mBAAmB,YACpH2B,EACFA,EAAa,MAAM,EAEnBV,EAAU,SAASb,EAAW,cAAc,SAAW,EAAI,CAAC,EAAE,MAAM,EAEtEJ,EAAM,gBAAgB,EACtBA,EAAM,eAAe,EAG3B,CAEAZ,EAAG,iBAAiB,UAAW0B,CAAS,EAExC,SAASc,EAAQ5B,EAAO,CAClBA,EAAM,OAAO,UAAY,OACvBA,EAAM,OAAO,cAAc,QAAQ,OAAS,QAC9CI,EAAW,QAAQ,MAAM,KAAOJ,EAAM,OAAO,UACpCA,EAAM,OAAO,cAAc,QAAQ,OAAS,UACrDI,EAAW,QAAQ,MAAM,OAASJ,EAAM,OAAO,UACtCA,EAAM,OAAO,cAAc,QAAQ,OAAS,UACrDI,EAAW,QAAQ,MAAM,OAASJ,EAAM,OAAO,UACtCA,EAAM,OAAO,cAAc,QAAQ,OAAS,WACrDI,EAAW,QAAQ,MAAM,OAASJ,EAAM,OAAO,WAEjD6B,EAAO,EACPlB,EAAY,EAEhB,CAEA,IAAMmB,EAAgB,SAAS,cAAc,KAAK,EAClDA,EAAc,UAAU,IAAI,OAAQ,gBAAiB,kBAAmB,gCAAgC,EACpG1C,EAAG,YAAYA,EAAG,UAAU,IAAI,UAAU,EAC9C0C,EAAc,aAAa,OAAQ,OAAO,EAC1CA,EAAc,iBAAiB,QAASF,CAAO,EAC/CxC,EAAG,YAAY0C,CAAa,EAE5B,IAAMb,EAAY,SAAS,cAAc,IAAI,EAC7CA,EAAU,UAAU,IAAI,SAAU,kBAAmB,wBAAwB,EAC7EA,EAAU,aAAa,OAAQ,SAAS,EACxCA,EAAU,aAAa,WAAY,IAAI,EACvCA,EAAU,aAAa,aAAc7B,EAAG,QAAQ,YAAc,aAAa,EAC3E6B,EAAU,aAAa,YAAa,OAAO,EAC3Ca,EAAc,YAAYb,CAAS,EAEnC,QAASc,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAC3B,IAAMxD,EAAO,SAAS,cAAc,IAAI,EACxCA,EAAK,UAAU,IAAI,GAAGmC,CAAa,EACnCnC,EAAK,aAAa,OAAQ,QAAQ,EAClCA,EAAK,aAAa,WAAY,IAAI,EAClCA,EAAK,aAAa,aAAcwD,CAAC,EACjCxD,EAAK,aAAa,gBAAiB,EAAK,EACxCA,EAAK,UAAYwD,EAAI,GAAK,IAAIA,CAAC,GAAKA,EACpCd,EAAU,YAAY1C,CAAI,CAC5B,CAEA,IAAM2C,EAAc,SAAS,cAAc,IAAI,EAC/CA,EAAY,UAAU,IAAI,SAAU,kBAAmB,wBAAwB,EAC/EA,EAAY,aAAa,OAAQ,SAAS,EAC1CA,EAAY,aAAa,WAAY,IAAI,EACzCA,EAAY,aAAa,aAAc9B,EAAG,QAAQ,cAAgB,eAAe,EACjF8B,EAAY,aAAa,YAAa,SAAS,EAC/CY,EAAc,YAAYZ,CAAW,EAErC,QAASc,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAC3B,IAAMxD,EAAS,SAAS,cAAc,IAAI,EAC1CA,EAAO,UAAU,IAAI,GAAGkC,CAAa,EACrClC,EAAO,aAAa,OAAQ,QAAQ,EACpCA,EAAO,aAAa,WAAY,IAAI,EACpCA,EAAO,aAAa,aAAcwD,CAAC,EACnCxD,EAAO,aAAa,gBAAiB,EAAK,EAC1CA,EAAO,UAAYwD,EAAI,GAAK,IAAIA,CAAC,GAAKA,EACtCd,EAAY,YAAY1C,CAAM,CAChC,CAEA,IAAM2C,EAAc,SAAS,cAAc,IAAI,EAC/CA,EAAY,UAAU,IAAI,SAAU,kBAAmB,wBAAwB,EAC1Ef,EAAW,cAAc,SAC5Be,EAAY,UAAU,IAAI,QAAQ,EAEpCA,EAAY,aAAa,OAAQ,SAAS,EAC1CA,EAAY,aAAa,WAAY,IAAI,EACzCA,EAAY,aAAa,aAAc/B,EAAG,QAAQ,cAAgB,eAAe,EACjF+B,EAAY,aAAa,YAAa,SAAS,EAC/CW,EAAc,YAAYX,CAAW,EAErC,QAASc,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAC3B,IAAMxD,EAAS,SAAS,cAAc,IAAI,EAC1CA,EAAO,UAAU,IAAI,GAAGiC,CAAa,EACrCjC,EAAO,aAAa,OAAQ,QAAQ,EACpCA,EAAO,aAAa,WAAY,IAAI,EACpCA,EAAO,aAAa,aAAcwD,CAAC,EACnCxD,EAAO,aAAa,gBAAiB,EAAK,EAC1CA,EAAO,UAAYwD,EAAI,GAAK,IAAIA,CAAC,GAAKA,EACtCd,EAAY,YAAY1C,CAAM,CAChC,CAEA,IAAM2C,EAAa,SAAS,cAAc,IAAI,EAC9CA,EAAW,UAAU,IAAI,SAAU,kBAAmB,wBAAwB,EACzEhB,EAAW,cAAc,UAC5BgB,EAAW,UAAU,IAAI,QAAQ,EAEnCA,EAAW,aAAa,OAAQ,SAAS,EACzCA,EAAW,aAAa,WAAY,IAAI,EACxCA,EAAW,aAAa,aAAchC,EAAG,QAAQ,eAAiB,iBAAiB,EACnFgC,EAAW,aAAa,YAAa,QAAQ,EAC7CU,EAAc,YAAYV,CAAU,EAEpC,IAAMc,EAAK,SAAS,cAAc,IAAI,EACtCA,EAAG,UAAU,IAAI,GAAGxB,CAAa,EACjCwB,EAAG,aAAa,OAAQ,QAAQ,EAChCA,EAAG,aAAa,WAAY,IAAI,EAChCA,EAAG,aAAa,gBAAiB,EAAK,EACtCA,EAAG,UAAY/D,GAAgB,GAC/BiD,EAAW,YAAYc,CAAE,EAEzB,IAAMC,EAAK,SAAS,cAAc,IAAI,EACtCA,EAAG,UAAU,IAAI,GAAGzB,CAAa,EACjCyB,EAAG,aAAa,OAAQ,QAAQ,EAChCA,EAAG,aAAa,WAAY,IAAI,EAChCA,EAAG,aAAa,gBAAiB,EAAK,EACtCA,EAAG,UAAYhE,GAAgB,GAC/BiD,EAAW,YAAYe,CAAE,EAEzB,IAAMC,EAAS,SAAS,cAAc,KAAK,EAC3CA,EAAO,UAAU,IAAI,OAAQ,kBAAmB,QAAS,WAAY,KAAK,EAC1EA,EAAO,aAAa,WAAY,IAAI,EAEpC,IAAMC,EAAY,SAAS,cAAc,QAAQ,EACjDA,EAAU,aAAa,OAAQ,QAAQ,EACvCA,EAAU,aAAalD,EAAO,SAAS,UAAU,EAAG,EAAE,EACtDkD,EAAU,aAAa,YAAa,IAAI,EACxCA,EAAU,aAAa,cAAe,MAAM,EAC5CA,EAAU,UAAYjD,EAAG,QAAQ,UAAY,MAC7CiD,EAAU,iBAAiB,QAASzB,CAAc,EAClDwB,EAAO,YAAYC,CAAS,EAE5B,IAAMC,EAAW,SAAS,cAAc,QAAQ,EAChDA,EAAS,aAAa,OAAQ,QAAQ,EACtCA,EAAS,aAAanD,EAAO,SAAS,UAAU,EAAG,EAAE,EACrDmD,EAAS,aAAa,eAAgB,SAAS,EAC/CA,EAAS,aAAa,YAAa,IAAI,EACvCA,EAAS,aAAa,cAAe,OAAO,EAC5CA,EAAS,UAAYlD,EAAG,QAAQ,SAAW,KAC3CkD,EAAS,SAAW,GACpBA,EAAS,iBAAiB,QAASlC,EAAW,cAAc,KAAK,EACjEgC,EAAO,YAAYE,CAAQ,EAE3BlD,EAAG,YAAYgD,CAAM,EACrBjD,EAAO,SAASiD,CAAM,EAEtB,IAAIT,EACAY,EACAC,EACAC,EAEJ,SAASZ,GAAS,CAChB,GAAIzB,EAAW,cAAc,SAAU,CACrCa,EAAU,WAAW,UAAU,IAAI,QAAQ,EAC3C,QAASc,EAAI,EAAGA,EAAI,GAAIA,IAClBd,EAAU,SAASc,CAAC,EAAE,YAAc3B,EAAW,QAAQ,MAAM,MAC/Da,EAAU,SAASc,CAAC,EAAE,aAAa,WAAY,GAAG,EAClDd,EAAU,SAASc,CAAC,EAAE,aAAa,gBAAiB,EAAI,EACxDJ,EAAeV,EAAU,SAASc,CAAC,IAEnCd,EAAU,SAASc,CAAC,EAAE,aAAa,WAAY,IAAI,EACnDd,EAAU,SAASc,CAAC,EAAE,aAAa,gBAAiB,EAAK,GAG7D,QAASA,EAAI,GAAIA,EAAId,EAAU,SAAS,OAAQc,IAC9Cd,EAAU,SAASc,CAAC,EAAE,UAAU,IAAI,QAAQ,EAC5Cd,EAAU,SAASc,CAAC,EAAE,aAAa,WAAY,IAAI,EACnDd,EAAU,SAASc,CAAC,EAAE,aAAa,gBAAiB,EAAK,CAE7D,KACE,SAASA,EAAI,EAAGA,EAAId,EAAU,SAAS,OAAQc,IAC7Cd,EAAU,SAASc,CAAC,EAAE,UAAU,OAAO,QAAQ,EAC3Cd,EAAU,SAASc,CAAC,EAAE,YAAc3B,EAAW,QAAQ,MAAM,MAC/Da,EAAU,SAASc,CAAC,EAAE,aAAa,WAAY,GAAG,EAClDd,EAAU,SAASc,CAAC,EAAE,aAAa,gBAAiB,EAAI,EACxDJ,EAAeV,EAAU,SAASc,CAAC,IAEnCd,EAAU,SAASc,CAAC,EAAE,aAAa,WAAY,IAAI,EACnDd,EAAU,SAASc,CAAC,EAAE,aAAa,gBAAiB,EAAK,GAI1DJ,GACHV,EAAU,SAASb,EAAW,cAAc,SAAW,EAAI,CAAC,EAAE,aAAa,WAAY,GAAG,EAG5F,QAAS4B,EAAI,EAAGA,EAAId,EAAY,SAAS,OAAQc,IAC3Cd,EAAY,SAASc,CAAC,EAAE,YAAc5B,EAAW,QAAQ,MAAM,QACjEc,EAAY,SAASc,CAAC,EAAE,aAAa,WAAY,GAAG,EACpDd,EAAY,SAASc,CAAC,EAAE,aAAa,gBAAiB,EAAI,EAC1DO,EAAiBrB,EAAY,SAASc,CAAC,IAEvCd,EAAY,SAASc,CAAC,EAAE,aAAa,WAAY,IAAI,EACrDd,EAAY,SAASc,CAAC,EAAE,aAAa,gBAAiB,EAAK,GAO/D,GAJKO,GACHrB,EAAY,WAAW,aAAa,WAAY,GAAG,EAGjDd,EAAW,cAAc,QAAS,CACpCe,EAAY,UAAU,OAAO,QAAQ,EACrC,QAASc,EAAI,EAAGA,EAAId,EAAY,SAAS,OAAQc,IAC3Cd,EAAY,SAASc,CAAC,EAAE,YAAc7B,EAAW,QAAQ,MAAM,QACjEe,EAAY,SAASc,CAAC,EAAE,aAAa,WAAY,GAAG,EACpDd,EAAY,SAASc,CAAC,EAAE,aAAa,gBAAiB,EAAI,EAC1DO,EAAiBrB,EAAY,SAASc,CAAC,IAEvCd,EAAY,SAASc,CAAC,EAAE,aAAa,WAAY,IAAI,EACrDd,EAAY,SAASc,CAAC,EAAE,aAAa,gBAAiB,EAAK,GAG1DO,GACHrB,EAAY,WAAW,aAAa,WAAY,GAAG,EAEjDf,EAAW,cAAc,SAC3BkC,EAAS,SAAW,EAAAlC,EAAW,QAAQ,MAAM,MAAQA,EAAW,QAAQ,MAAM,QAAUA,EAAW,QAAQ,MAAM,QAAUA,EAAW,QAAQ,MAAM,QAEpJkC,EAAS,SAAW,EAAAlC,EAAW,QAAQ,MAAM,MAAQA,EAAW,QAAQ,MAAM,QAAUA,EAAW,QAAQ,MAAM,OAErH,MACEe,EAAY,UAAU,IAAI,QAAQ,EAC9Bf,EAAW,cAAc,SAC3BkC,EAAS,SAAW,EAAAlC,EAAW,QAAQ,MAAM,MAAQA,EAAW,QAAQ,MAAM,QAAUA,EAAW,QAAQ,MAAM,QAEjHkC,EAAS,SAAW,EAAAlC,EAAW,QAAQ,MAAM,MAAQA,EAAW,QAAQ,MAAM,QAIlF,GAAIA,EAAW,cAAc,SAAU,CACrCgB,EAAW,UAAU,OAAO,QAAQ,EACpC,QAASsB,EAAI,EAAGA,EAAItB,EAAW,SAAS,OAAQsB,IAC1CtB,EAAW,SAASsB,CAAC,EAAE,YAActC,EAAW,QAAQ,MAAM,QAChEgB,EAAW,SAASsB,CAAC,EAAE,aAAa,WAAY,GAAG,EACnDtB,EAAW,SAASsB,CAAC,EAAE,aAAa,gBAAiB,EAAI,EACzDD,EAAiBrB,EAAW,SAASsB,CAAC,IAEtCtB,EAAW,SAASsB,CAAC,EAAE,aAAa,WAAY,IAAI,EACpDtB,EAAW,SAASsB,CAAC,EAAE,aAAa,gBAAiB,EAAK,GAGzDD,GACHrB,EAAW,WAAW,aAAa,WAAY,GAAG,CAEtD,MACEA,EAAW,UAAU,IAAI,QAAQ,CAErC,CAEA,IAAMuB,GAAW3C,GAAU,CACzBA,EAAM,gBAAgB,CACxB,EAEAZ,EAAG,iBAAiB,QAASuD,EAAO,EAEpC,IAAIC,GAEAC,GAAiB,GAErB,SAASC,GAAiB,CACxBC,GAAgB3C,EAAYhB,EAAI,CAC9B,UAAWA,EAAG,aAAa,YAAY,GAAK,eAC5C,WAAY,CAACH,GAAO,CAAC,EAAG+D,GAAK,EAAGC,GAAM,CAAE,QAAS,CAAE,CAAC,CAAC,CACvD,CAAC,EAAE,KAAK,CAAC,CAAE,EAAG,EAAAC,CAAE,IAAM,CACpB,OAAO,OAAO9D,EAAG,MAAO,CACtB,KAAM,GAAG,CAAC,KACV,IAAK,GAAG8D,CAAC,IACX,CAAC,EACD9D,EAAG,UAAU,OAAO,WAAY,WAAW,EACvCyD,KACFA,GAAiB,GACjB1D,EAAO,SAAS,IAAM,CAChBwC,EACFA,EAAa,MAAM,EAEnBV,EAAU,SAASb,EAAW,cAAc,SAAW,EAAI,CAAC,EAAE,MAAM,CAExE,CAAC,EAEL,CAAC,CACH,CAEAX,EAAO,IAAM,CACPW,EAAW,cAAc,UAC3ByB,EAAO,EACPzC,EAAG,UAAU,OAAO,QAAQ,EAC5BwD,GAAoBO,GAAW/C,EAAYhB,EAAI0D,CAAc,EACzDnB,GAAc/C,GAAiB+C,EAAa,cAAeA,CAAY,EACvEY,GAAgB3D,GAAiB2D,EAAe,cAAeA,CAAc,EAC7EC,GAAkBpC,EAAW,cAAc,SAASxB,GAAiB4D,EAAe,cAAeA,CAAc,IAEjH,OAAO,WAAW,kCAAkC,EAAE,SACxDpD,EAAG,UAAU,IAAI,SAAU,WAAY,WAAW,EAClD,OAAO,OAAOA,EAAG,MAAO,CACtB,KAAM,MACN,IAAK,KACP,CAAC,GAEDA,EAAG,UAAU,IAAI,WAAY,WAAW,EAEtCwD,IAAmBA,GAAkB,EACzCC,GAAiB,GAErB,CAAC,EAED,SAASO,EAAgBpD,EAAO,CAC1BA,EAAM,SAAWZ,GAAMY,EAAM,OAAO,UAAU,SAAS,WAAW,IACpEZ,EAAG,UAAU,IAAI,QAAQ,EACzB,OAAO,OAAOA,EAAG,MAAO,CACtB,KAAM,MACN,IAAK,KACP,CAAC,EAEL,CAEAA,EAAG,iBAAiB,gBAAiBgE,CAAe,EAEpD5D,EAAQ,IAAM,CACZJ,EAAG,oBAAoB,UAAW0B,CAAS,EAC3C1B,EAAG,oBAAoB,QAASuD,EAAO,EACvCvD,EAAG,oBAAoB,gBAAiBgE,CAAe,EACvDd,EAAS,oBAAoB,QAASlC,EAAW,cAAc,KAAK,EACpEiC,EAAU,oBAAoB,QAASzB,CAAc,EACrDkB,EAAc,oBAAoB,QAASF,CAAO,CACpD,CAAC,CACH,CAAC,CACH,CCr1Be,SAARyB,GAAkBC,EAAQ,CAC/BA,EAAO,UAAU,YAAa,CAACC,EAAI,CAAE,UAAAC,CAAU,IAAM,CACnDD,EAAG,UAAU,IACX,mBACA,gCACA,OACA,WACA,eACA,OACA,gDACA,wDACA,QACAC,EAAU,SAAS,QAAQ,EAAI,WAAa,WAC5C,SACA,OACA,qBACA,sBACA,4CACA,6CACA,iCACA,kCACA,6BACF,EACAD,EAAG,aAAa,YAAa,SAAS,CACxC,CAAC,EAEDD,EAAO,UAAU,kBAAoBC,GAAO,CAC1CA,EAAG,UAAU,IAAI,SAAU,4BAA6B,2BAA2B,EACnFA,EAAG,aAAa,YAAa,eAAe,CAC9C,CAAC,EAEDD,EAAO,UAAU,qBAAuBC,GAAO,CAC7CA,EAAG,UAAU,IACX,OACA,WACA,OACA,qCACA,+CACA,qDACA,4CACA,oGACF,EACAA,EAAG,aAAa,YAAa,kBAAkB,CACjD,CAAC,EAEDD,EAAO,UAAU,kBAAoBC,GAAO,CAC1CA,EAAG,UAAU,IAAI,OAAQ,wCAAyC,cAAe,oBAAqB,gBAAiB,iBAAiB,EACxIA,EAAG,aAAa,YAAa,eAAe,CAC9C,CAAC,EAEDD,EAAO,UAAU,qBAAuBC,GAAO,CAC7CA,EAAG,UAAU,IAAI,UAAW,cAAe,oBAAqB,gBAAiB,iBAAiB,EAClGA,EAAG,aAAa,YAAa,kBAAkB,CACjD,CAAC,EAEDD,EAAO,UAAU,mBAAqBC,GAAO,CAC3CA,EAAG,UAAU,IAAI,gBAAiB,QAAQ,EAC1CA,EAAG,aAAa,WAAY,IAAI,EAChCA,EAAG,aAAa,YAAa,gBAAgB,CAC/C,CAAC,EAEDD,EAAO,UAAU,sBAAwBC,GAAO,CAC9CA,EAAG,UAAU,IAAI,OAAQ,MAAO,0CAA2C,UAAU,EACrFA,EAAG,aAAa,YAAa,mBAAmB,CAClD,CAAC,CACH,CC/De,SAARE,GAAkBC,EAAQ,CAC/BA,EAAO,UAAU,oBAAqB,CAACC,EAAIC,EAAG,CAAE,OAAAF,EAAQ,QAAAG,CAAQ,IAAM,CACpEF,EAAG,SAAWD,EAAO,SAAS,CAC5B,GAAI,OACJ,SAAU,MAAMI,EAAO,CAAC,GACxB,MAAO,EACT,CAAC,EAEGH,EAAG,aAAa,IAAI,EACtBA,EAAG,SAAS,GAAKA,EAAG,aAAa,IAAI,GAErCA,EAAG,SAAS,GAAK,MAAMG,EAAO,CAAC,GAC/BH,EAAG,aAAa,KAAMA,EAAG,SAAS,EAAE,GAEtCA,EAAG,aAAa,mBAAoBA,EAAG,SAAS,QAAQ,EAExD,IAAMI,EAAWC,GAAU,CACzBL,EAAG,SAAS,MAAQK,EAAM,OAAS,cACrC,EAEAL,EAAG,iBAAiB,eAAgBI,CAAO,EAC3CJ,EAAG,iBAAiB,eAAgBI,CAAO,EAE3CF,EAAQ,IAAM,CACZF,EAAG,oBAAoB,eAAgBI,CAAO,EAC9CJ,EAAG,oBAAoB,eAAgBI,CAAO,CAChD,CAAC,CACH,CAAC,EAEDL,EAAO,UAAU,YAAa,CAACC,EAAI,CAAE,SAAAM,CAAS,EAAG,CAAE,OAAAC,EAAQ,QAAAL,CAAQ,IAAM,CACvE,IAAMM,GAAW,IAAM,CACrB,IAAIC,EAAUT,EAAG,uBACjB,KAAOS,GAAW,CAAC,OAAO,UAAU,eAAe,KAAKA,EAAS,UAAU,GACzEA,EAAUA,EAAQ,uBAEpB,OAAOA,CACT,GAAG,EAEH,GAAI,CAACD,EACH,MAAM,IAAI,MAAM,GAAGF,CAAQ,iDAAiD,EAE9EN,EAAG,UAAU,IACX,WACA,gBACA,kBACA,OACA,QACA,aACA,OACA,SACA,UACA,eACA,6BACA,gCACA,eACA,WACA,YACA,UACF,EACAA,EAAG,aAAa,YAAa,SAAS,EACtCA,EAAG,aAAa,KAAMQ,EAAQ,SAAS,QAAQ,EAE/C,IAAME,EAAU,SAAS,cAAc,MAAM,EAC7CA,EAAQ,UAAU,IAAI,WAAY,gBAAiB,WAAY,WAAW,EAC1EV,EAAG,YAAYU,CAAO,EAEtB,SAASC,GAAiB,CACxBC,GAAgBJ,EAASR,EAAI,CAC3B,UAAW,MACX,WAAY,CAACa,GAAO,EAAE,EAAGC,GAAK,EAAGC,GAAM,CAAE,QAAS,CAAE,CAAC,EAAGC,GAAM,CAAE,QAASN,CAAQ,CAAC,CAAC,CACrF,CAAC,EAAE,KAAK,CAAC,CAAE,EAAAO,EAAG,EAAAC,EAAG,eAAAC,EAAgB,UAAAC,CAAU,IAAM,CAC/C,OAAO,OAAOpB,EAAG,MAAO,CACtB,KAAM,GAAGiB,CAAC,KACV,IAAK,GAAGC,CAAC,IACX,CAAC,EACDlB,EAAG,UAAU,OAAO,WAAY,WAAW,EACvCmB,EAAe,OACjB,OAAO,OAAOT,EAAQ,MAAO,CAC3B,KAAMS,EAAe,MAAM,GAAK,KAAO,GAAGA,EAAe,MAAM,CAAC,KAAO,GACvE,IAAKC,IAAc,MAAQ,GAAGpB,EAAG,aAAeU,EAAQ,aAAe,CAAC,KAAO,IAAIA,EAAQ,aAAe,CAAC,IAC7G,CAAC,CAEL,CAAC,CACH,CAEAH,EAAO,IAAM,CACPC,EAAQ,SAAS,OACnBR,EAAG,UAAU,OAAO,QAAQ,EAC5BW,EAAe,GAEX,OAAO,WAAW,kCAAkC,EAAE,SACxDX,EAAG,UAAU,IAAI,SAAU,WAAY,WAAW,EAClD,OAAO,OAAOA,EAAG,MAAO,CACtB,KAAM,MACN,IAAK,KACP,CAAC,EACD,OAAO,OAAOU,EAAQ,MAAO,CAC3B,KAAM,MACN,IAAK,KACP,CAAC,GAEDV,EAAG,UAAU,IAAI,WAAY,WAAW,CAG9C,CAAC,EAED,SAASqB,EAAgBhB,EAAO,CAC1BA,EAAM,SAAWL,GAAMK,EAAM,OAAO,UAAU,SAAS,WAAW,IACpEL,EAAG,UAAU,IAAI,QAAQ,EACzB,OAAO,OAAOA,EAAG,MAAO,CACtB,KAAM,MACN,IAAK,KACP,CAAC,EACD,OAAO,OAAOU,EAAQ,MAAO,CAC3B,KAAM,MACN,IAAK,KACP,CAAC,EAEL,CAEAV,EAAG,iBAAiB,gBAAiBqB,CAAe,EAEpDnB,EAAQ,IAAM,CACZF,EAAG,oBAAoB,gBAAiBqB,CAAe,CACzD,CAAC,CACH,CAAC,CACH,CC9He,SAARC,GAAkBC,EAAQ,CAC/BA,EAAO,UAAU,SAAU,CAACC,EAAI,CAAE,UAAAC,CAAU,EAAG,CAAE,OAAAC,EAAQ,QAAAC,CAAQ,IAAM,CAGrE,GAFAH,EAAG,UAAU,IAAI,OAAQ,SAAU,UAAW,OAAO,EACrDA,EAAG,aAAa,WAAY,IAAI,EAC5BC,EAAU,SAAS,KAAK,EAAG,CAC7BD,EAAG,UAAU,IACX,WACA,iBACA,SACA,OACA,qCACA,0DACA,kCACA,oCACA,uCACA,qCACA,0DACA,qCACF,EACAA,EAAG,aAAa,YAAa,SAAS,EACtCA,EAAG,aAAa,OAAQ,OAAO,EAE/B,IAAMI,EAAWL,EAAO,YAAYC,EAAG,cAAgBK,GAAW,OAAO,UAAU,eAAe,KAAKA,EAAQ,cAAc,CAAC,EAC9HH,EAAO,IAAM,CACPE,EAAS,aAAa,SACxBJ,EAAG,UAAU,OAAO,SAAS,EAE7BA,EAAG,UAAU,IAAI,SAAS,CAE9B,CAAC,CACH,KAAO,CAIL,IAASM,EAAT,SAAyBC,EAAM,CAC7B,MAAO,CAAC,GAAGA,EAAK,iBAAiB,mBAAmB,CAAC,EAAE,OAAQC,GAAS,CACtE,IAAIH,EAASG,EAAK,cAAc,QAAQ,gBAAgB,EACxD,KAAOH,GAAQ,CACb,IAAMI,EAAaJ,EAAO,QAAQ,mBAAmB,EACrD,GAAII,GAAcA,EAAW,aAAa,eAAe,IAAM,QAC7D,MAAO,GAETJ,EAASI,GAAY,cAAc,QAAQ,gBAAgB,CAC7D,CACA,MAAO,EACT,CAAC,CACH,EAESC,EAAT,SAAmBF,EAAM,CACvB,CAAC,GAAGR,EAAG,iBAAiB,mBAAmB,CAAC,EAAE,QAASW,GAAMA,EAAE,aAAa,WAAY,IAAI,CAAC,EAC7FH,EAAK,aAAa,WAAY,GAAG,EACjCA,EAAK,MAAM,CACb,EAESI,EAAT,SAAmBC,EAAO,CACxB,IAAMC,EAAQR,EAAgBN,CAAE,EAC1Be,EAAUf,EAAG,cAAc,kBAAkB,EAC7CgB,EAAQF,EAAM,QAAQC,CAAO,EAEnC,GAAIC,IAAU,GAEd,OAAQH,EAAM,IAAK,CACjB,IAAK,OACL,IAAK,YACHA,EAAM,eAAe,EACjBC,EAAME,EAAQ,CAAC,GAAGN,EAAUI,EAAME,EAAQ,CAAC,CAAC,EAChD,MACF,IAAK,KACL,IAAK,UACHH,EAAM,eAAe,EACjBC,EAAME,EAAQ,CAAC,GAAGN,EAAUI,EAAME,EAAQ,CAAC,CAAC,EAChD,MACF,IAAK,QACL,IAAK,aACH,GAAID,EAAQ,aAAa,eAAe,IAAM,QAC5CA,EAAQ,MAAM,MACT,CACL,IAAME,EAAaF,EAAQ,cAAc,kCAAkC,EACvEE,GAAYP,EAAUO,CAAU,CACtC,CACA,MACF,IAAK,OACL,IAAK,YACH,GAAIF,EAAQ,aAAa,eAAe,IAAM,OAC5CA,EAAQ,MAAM,MACT,CACL,IAAMN,EAAaM,EAAQ,cAAc,QAAQ,mBAAmB,EAChEN,GAAYC,EAAUD,CAAU,CACtC,CACA,MAEF,IAAK,OACHI,EAAM,eAAe,EACrBH,EAAUI,EAAM,CAAC,CAAC,EAClB,MAEF,IAAK,MACHD,EAAM,eAAe,EACrBH,EAAUI,EAAMA,EAAM,OAAS,CAAC,CAAC,EACjC,MAEF,IAAK,QACL,IAAK,IACHD,EAAM,eAAe,EACrBE,EAAQ,MAAM,EACd,KACJ,CACF,EA5EAf,EAAG,aAAa,YAAa,MAAM,EACnCA,EAAG,aAAa,OAAQ,MAAM,EA6E9BA,EAAG,iBAAiB,UAAWY,CAAS,EACxCT,EAAQ,IAAM,CACZH,EAAG,oBAAoB,UAAWY,CAAS,CAC7C,CAAC,CACH,CACF,CAAC,EAEDb,EAAO,UAAU,cAAe,CAACC,EAAI,CAAE,UAAAC,EAAW,WAAAiB,CAAW,EAAG,CAAE,SAAAC,EAAU,cAAAC,EAAe,OAAAlB,EAAQ,QAAAC,CAAQ,IAAM,CAC/GH,EAAG,aAAeD,EAAO,SAAS,CAChC,WAAYE,EAAU,SAAS,UAAU,EACzC,SAAU,EACZ,CAAC,EACDD,EAAG,UAAU,IACX,kBACA,WACA,eACA,mDACA,gEACA,yDACA,0DACA,qEACF,EACAA,EAAG,aAAa,YAAa,WAAW,EACxCA,EAAG,aAAa,OAAQ,UAAU,EAClC,IAAMqB,EAAWtB,EAAO,YAAYC,EAAG,cAAgBK,GAAWA,EAAO,aAAa,WAAW,IAAM,MAAM,EACzGgB,GAAYA,EAAS,cAAc,uBAAuB,IAAMrB,EAClEA,EAAG,aAAa,WAAY,GAAG,EAE/BA,EAAG,aAAa,WAAY,IAAI,EAGlCE,EAAO,IAAM,CACNF,EAAG,QAAQ,eAAe,CACjC,CAAC,EAED,IAAMsB,EAAWT,GAAU,EACrBA,EAAM,SAAWb,GAAMa,EAAM,OAAO,gBAAkBb,KACpDA,EAAG,aAAa,aACdkB,IAAe,SAAWA,IAAe,QAC3ClB,EAAG,aAAa,SAAWA,EAAG,aAAa,eAAe,IAAM,OAChEA,EAAG,aAAa,gBAAiBA,EAAG,aAAa,QAAQ,IAEzDA,EAAG,aAAa,SAAW,CAACmB,EAASD,CAAU,EAC/CC,EAAS,GAAGD,CAAU,OAAOA,CAAU,EAAE,IAG7C,CAAC,GAAGG,EAAS,iBAAiB,mBAAmB,CAAC,EAAE,QAASV,GAAMA,EAAE,aAAa,WAAY,IAAI,CAAC,EACnGX,EAAG,aAAa,WAAY,GAAG,EAEnC,EAQA,GANAA,EAAG,iBAAiB,QAASsB,CAAO,EAEpCnB,EAAQ,IAAM,CACZH,EAAG,oBAAoB,QAASsB,CAAO,CACzC,CAAC,EAEGtB,EAAG,aAAa,WAAY,CAC9B,IAAMuB,EAAeC,GAAa,CAChCxB,EAAG,aAAa,SAAWwB,EAC3BxB,EAAG,aAAa,gBAAiBwB,CAAQ,CAC3C,EACMC,EAAcL,EAAcF,CAAU,EAE5ChB,EAAO,IAAM,CACXuB,EAAaD,GAAa,CACxBD,EAAYC,CAAQ,CACtB,CAAC,CACH,CAAC,CACH,CACF,CAAC,EAEDzB,EAAO,UAAU,gBAAiB,CAACC,EAAI,CAAE,SAAA0B,CAAS,EAAG,CAAE,OAAAxB,CAAO,IAAM,CAClE,IAAME,EAAWL,EAAO,YAAYC,EAAG,cAAgBK,GAAW,OAAO,UAAU,eAAe,KAAKA,EAAQ,cAAc,CAAC,EAC9H,GAAI,CAACD,EAAU,MAAM,IAAI,MAAM,GAAGsB,CAAQ,6BAA6B,EA6CvE,GA5CA1B,EAAG,UAAU,IACX,OACA,SACA,eACA,QACA,kBACA,aACA,QACA,YACA,UACA,eACA,iBACA,YACA,oCACA,gCACA,qBACA,kCACA,uBACA,oBACA,iCACA,+BACA,sBACA,oCACA,2BACA,kBACA,oBACA,wBACA,+BACA,iBACA,mBACA,8BACA,+BACA,iCACA,sCACA,gCACA,8CACA,8CACA,4CACA,mDACF,EACAA,EAAG,aAAa,YAAa,aAAa,EAC1CA,EAAG,aAAa,WAAY,IAAI,EAChCA,EAAG,aAAa,OAAQ,cAAc,EAElCI,EAAS,aAAa,WAAY,CACpC,IAAMuB,EAAcC,EAAU,CAC5B,KAAM,EACN,QAAS,qHACT,MAAO,CACL,cAAe,GACf,KAAM,cACR,CACF,CAAC,EACD5B,EAAG,QAAQ2B,CAAW,CACxB,MACE3B,EAAG,UAAU,IAAI,eAAe,EAGlCE,EAAO,IAAM,CACXF,EAAG,aAAa,gBAAiBI,EAAS,aAAa,QAAQ,CACjE,CAAC,CACH,CAAC,CACH,CCtPE,IAAAyB,GAAW,SCFb,IAAIC,GAAiB,4BACjBC,GAAc,aAAa,QAAQD,EAAc,EAE/CE,GAAY,CAAC,EAEbC,GAAuBC,GAAW,CACtC,QAASC,EAAI,EAAGA,EAAIH,GAAU,OAAQG,IACpCH,GAAUG,CAAC,EAAED,CAAM,CAEvB,EAEME,GAAqBC,GAAU,CAC/BA,EAAM,SACR,SAAS,gBAAgB,UAAU,IAAI,MAAM,EAC7CJ,GAAoB,MAAM,IAE1B,SAAS,gBAAgB,UAAU,OAAO,MAAM,EAChDA,GAAoB,OAAO,EAE/B,EAEMK,GAAkB,IAAM,CACxBP,KAAgB,OAClB,SAAS,gBAAgB,UAAU,IAAI,MAAM,EACpCA,KAAgB,QACzB,SAAS,gBAAgB,UAAU,OAAO,MAAM,GAE5C,OAAO,WAAW,8BAA8B,EAAE,SACpD,SAAS,gBAAgB,UAAU,IAAI,MAAM,EAE/C,OAAO,WAAW,8BAA8B,EAAE,iBAAiB,SAAUK,EAAiB,EAElG,EAEMG,GAAkBC,GAAS,CAC3BA,IAAS,QACX,SAAS,gBAAgB,UAAU,IAAI,MAAM,EAC7C,aAAa,QAAQV,GAAgB,MAAM,EAC3C,OAAO,WAAW,8BAA8B,EAAE,oBAAoB,SAAUM,EAAiB,EACjGH,GAAoB,MAAM,GACjBO,IAAS,SAClB,SAAS,gBAAgB,UAAU,OAAO,MAAM,EAChD,aAAa,QAAQV,GAAgB,OAAO,EAC5C,OAAO,WAAW,8BAA8B,EAAE,oBAAoB,SAAUM,EAAiB,EACjGH,GAAoB,OAAO,IAEvB,OAAO,YAAc,OAAO,WAAW,8BAA8B,EAAE,SACzE,SAAS,gBAAgB,UAAU,IAAI,MAAM,EAC7CA,GAAoB,MAAM,IAE1B,SAAS,gBAAgB,UAAU,OAAO,MAAM,EAChDA,GAAoB,OAAO,GAE7B,aAAa,QAAQH,GAAgB,MAAM,EAC3C,OAAO,WAAW,8BAA8B,EAAE,iBAAiB,SAAUM,EAAiB,EAElG,EAEMK,GAAiB,IAAM,CAC3B,IAAMC,EAAQ,aAAa,QAAQZ,EAAc,EACjD,OAAIY,GACG,MACT,EAEMC,GAAuB,IACvB,OAAO,YAAc,OAAO,WAAW,8BAA8B,EAAE,QAClE,OAEF,QAGHC,GAA0BC,GAAa,CAC3Cb,GAAU,KAAKa,CAAQ,CACzB,EAEMC,GAA6BD,GAAa,CAC9C,QAASV,EAAI,EAAGA,EAAIH,GAAU,OAAQG,IACpC,GAAIH,GAAUG,CAAC,IAAMU,EAAU,CAC7Bb,GAAU,OAAOG,EAAG,CAAC,EACrB,MACF,CAEJ,EAEAG,GAAgB,ECpFD,SAARS,GAAkBC,EAAQ,CAC/BA,EAAO,UAAU,UAAW,CAACC,EAAI,CAAE,WAAAC,CAAW,EAAG,CAAE,OAAAC,EAAQ,cAAAC,CAAc,IAAM,CAC7E,IAAMC,EAAWD,EAAcF,CAAU,EACzCC,EAAO,IAAM,CACXE,EAAUC,GAAQ,CACZA,GAAKL,EAAG,MAAM,CACpB,CAAC,CACH,CAAC,CACH,CAAC,CACH,CCTe,SAARM,GAAkBC,EAAQ,CAC/BA,EAAO,UAAU,YAAa,CAACC,EAAI,CAAE,SAAAC,EAAU,UAAAC,EAAW,WAAAC,CAAW,EAAG,CAAE,cAAAC,EAAe,OAAAC,EAAQ,QAAAC,EAAS,OAAAP,CAAO,IAAM,CACrH,IAAMQ,EAASH,EAAcD,CAAU,EAEvC,SAASK,EAAcC,EAAW,CAChC,OAAO,IAAI,QAAQ,CAACC,EAASC,IAAW,CACtC,IAAMC,EAAY,SAAS,cAAc,QAAQ,EAGjD,QAAWC,KAAQJ,EAAU,WAC3BG,EAAU,aAAaC,EAAK,KAAMA,EAAK,KAAK,EAI1CJ,EAAU,KACZG,EAAU,IAAMH,EAAU,IAE1BG,EAAU,OAASF,EACnBE,EAAU,QAAUD,IAGpBC,EAAU,YAAcH,EAAU,YAClCC,EAAQ,GAGVV,EAAG,YAAYY,CAAS,CAC1B,CAAC,CACH,CAEA,SAASE,GAAW,CAClB,QAASC,EAAI,EAAGA,EAAIf,EAAG,SAAS,OAAQe,IAClCf,EAAG,SAASe,CAAC,EAAE,UAAY,UAAUhB,EAAO,SAASC,EAAG,SAASe,CAAC,CAAC,CAE3E,CACA,SAASC,GAAc,CACrB,GAAIhB,EAAG,SAAS,OACd,QAASe,EAAI,EAAGA,EAAIf,EAAG,SAAS,OAAQe,IAClCf,EAAG,SAASe,CAAC,EAAE,UAAY,UAAUhB,EAAO,SAASC,EAAG,SAASe,CAAC,CAAC,CAG7E,CAEA,SAASE,EAAQC,EAAK,CAGpB,GAFe,IAAI,IAAIA,EAAK,OAAO,SAAS,MAAM,EAEvC,SAAW,OAAO,SAAS,OACpC,MAAMA,CAAG,EACN,KAAMC,GAAa,CAClB,GAAIA,EAAS,SAAW,IAAK,OAAOA,EAAS,KAAK,EAClD,MAAMA,CACR,CAAC,EACA,KAAK,MAAOC,GAAY,CACvB,GAAIlB,EAAU,SAAS,IAAI,EAAG,CAC5B,IAAMmB,EAAY,SAAS,cAAc,KAAK,EAC9CA,EAAU,UAAYD,EAEtB,IAAME,EAAU,CAAC,GAAGD,EAAU,iBAAiB,QAAQ,CAAC,EAMxD,IAHAC,EAAQ,QAASC,GAAWA,EAAO,OAAO,CAAC,EAGpCF,EAAU,WAAW,OAAS,GACnCrB,EAAG,YAAYqB,EAAU,WAAW,CAAC,CAAC,EAIxC,QAAWZ,KAAaa,EACtB,MAAMd,EAAcC,CAAS,CAEjC,MACET,EAAG,UAAYoB,EAGjBN,EAAS,CACX,CAAC,EACA,MAAOK,GAAa,CACnB,QAAQ,MAAMA,CAAQ,CACxB,CAAC,MAEH,OAAM,IAAI,MAAM,GAAGlB,CAAQ,iCAAiC,CAEhE,CAEAI,EAAO,IAAM,CACXE,EAAQW,GAAQ,CACdF,EAAY,EACZhB,EAAG,UAAY,GACXkB,GAAKD,EAAQC,CAAG,CACtB,CAAC,CACH,CAAC,EAEDZ,EAAQ,IAAM,CACZU,EAAY,CACd,CAAC,CACH,CAAC,EAAE,OAAO,MAAM,CAClB,CC3Fe,SAARQ,GAAkBC,EAAQ,CAC/BA,EAAO,UAAU,aAAc,CAACC,EAAI,CAAE,SAAAC,EAAU,WAAAC,CAAW,EAAG,CAAE,SAAAC,EAAU,OAAAJ,EAAQ,QAAAK,CAAQ,IAAM,CAC9F,GAAIJ,EAAG,aAAaD,EAAO,SAAS,MAAM,CAAC,EAAG,CAE5C,IAAMM,EADWF,EAASD,CAAU,EACb,QAAQ,UAAU,EAAI,EAAE,kBAC/CH,EAAO,eAAeM,EAAON,EAAO,iBAAiBC,CAAE,EAAE,CAAC,EAAGA,EAAG,aAAa,EAC7ED,EAAO,UAAU,IAAM,CACrBC,EAAG,OAAOK,CAAK,EACfN,EAAO,SAASM,CAAK,CACvB,CAAC,EACDD,EAAQ,IAAM,CACZL,EAAO,YAAYM,CAAK,EACxBA,EAAM,OAAO,CACf,CAAC,CACH,MACE,QAAQ,MAAM,GAAGJ,CAAQ,KAAKF,EAAO,SAAS,MAAM,CAAC,uBAAuB,CAEhF,CAAC,CACH,CC8EO,IAAMO,GAAsBC,GAAmB,CACpDA,EAAeC,EAAS,EACxBD,EAAeE,EAAK,EACpBF,EAAeG,EAAM,EACrBH,EAAeI,EAAK,EACpBJ,EAAeK,EAAM,EACrBL,EAAeM,EAAQ,EACvBN,EAAeO,EAAI,EACnBP,EAAeQ,EAAQ,EACvBR,EAAeS,EAAU,EACzBT,EAAeU,EAAM,EACrBV,EAAeW,EAAc,EAC7BX,EAAeY,EAAQ,EACvBZ,EAAea,EAAK,EACpBb,EAAec,EAAI,EACnBd,EAAee,EAAO,EACtBf,EAAegB,EAAQ,EACvBhB,EAAeiB,EAAK,EACpBjB,EAAekB,EAAK,EACpBlB,EAAemB,EAAI,EACnBnB,EAAeoB,EAAI,EACnBpB,EAAeqB,EAAa,EAC5BrB,EAAesB,EAAU,EACzBtB,EAAeuB,EAAO,EACtBvB,EAAewB,EAAQ,EACvBxB,EAAeyB,EAAK,EACpBzB,EAAe0B,EAAK,EACpB1B,EAAe2B,EAAM,EACrB3B,EAAe4B,EAAS,EACxB5B,EAAe6B,EAAK,EACpB7B,EAAe8B,EAAO,EACtB9B,EAAe+B,EAAQ,EACvB/B,EAAegC,EAAO,EACtBhC,EAAeiC,EAAK,EACpBjC,EAAekC,EAAO,EACtBlC,EAAemC,EAAK,EACpBnC,EAAeoC,EAAI,EACnBpC,EAAeqC,EAAG,EAClBrC,EAAesC,EAAQ,EACvBtC,EAAeuC,EAAI,EACnBvC,EAAewC,EAAQ,EACvBxC,EAAeyC,EAAI,EACnBzC,EAAe0C,EAAU,EACzB1C,EAAe2C,EAAO,EACtB3C,EAAe4C,EAAO,EACtB5C,EAAe6C,EAAI,CACrB,EAEOC,GAAQ/C",
|
|
4
|
+
"sourcesContent": ["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.noUiSlider = {}));\n})(this, (function (exports) { 'use strict';\n\n exports.PipsMode = void 0;\n (function (PipsMode) {\n PipsMode[\"Range\"] = \"range\";\n PipsMode[\"Steps\"] = \"steps\";\n PipsMode[\"Positions\"] = \"positions\";\n PipsMode[\"Count\"] = \"count\";\n PipsMode[\"Values\"] = \"values\";\n })(exports.PipsMode || (exports.PipsMode = {}));\n exports.PipsType = void 0;\n (function (PipsType) {\n PipsType[PipsType[\"None\"] = -1] = \"None\";\n PipsType[PipsType[\"NoValue\"] = 0] = \"NoValue\";\n PipsType[PipsType[\"LargeValue\"] = 1] = \"LargeValue\";\n PipsType[PipsType[\"SmallValue\"] = 2] = \"SmallValue\";\n })(exports.PipsType || (exports.PipsType = {}));\n //region Helper Methods\n function isValidFormatter(entry) {\n return isValidPartialFormatter(entry) && typeof entry.from === \"function\";\n }\n function isValidPartialFormatter(entry) {\n // partial formatters only need a to function and not a from function\n return typeof entry === \"object\" && typeof entry.to === \"function\";\n }\n function removeElement(el) {\n el.parentElement.removeChild(el);\n }\n function isSet(value) {\n return value !== null && value !== undefined;\n }\n // Bindable version\n function preventDefault(e) {\n e.preventDefault();\n }\n // Removes duplicates from an array.\n function unique(array) {\n return array.filter(function (a) {\n return !this[a] ? (this[a] = true) : false;\n }, {});\n }\n // Round a value to the closest 'to'.\n function closest(value, to) {\n return Math.round(value / to) * to;\n }\n // Current position of an element relative to the document.\n function offset(elem, orientation) {\n var rect = elem.getBoundingClientRect();\n var doc = elem.ownerDocument;\n var docElem = doc.documentElement;\n var pageOffset = getPageOffset(doc);\n // getBoundingClientRect contains left scroll in Chrome on Android.\n // I haven't found a feature detection that proves this. Worst case\n // scenario on mis-match: the 'tap' feature on horizontal sliders breaks.\n if (/webkit.*Chrome.*Mobile/i.test(navigator.userAgent)) {\n pageOffset.x = 0;\n }\n return orientation ? rect.top + pageOffset.y - docElem.clientTop : rect.left + pageOffset.x - docElem.clientLeft;\n }\n // Checks whether a value is numerical.\n function isNumeric(a) {\n return typeof a === \"number\" && !isNaN(a) && isFinite(a);\n }\n // Sets a class and removes it after [duration] ms.\n function addClassFor(element, className, duration) {\n if (duration > 0) {\n addClass(element, className);\n setTimeout(function () {\n removeClass(element, className);\n }, duration);\n }\n }\n // Limits a value to 0 - 100\n function limit(a) {\n return Math.max(Math.min(a, 100), 0);\n }\n // Wraps a variable as an array, if it isn't one yet.\n // Note that an input array is returned by reference!\n function asArray(a) {\n return Array.isArray(a) ? a : [a];\n }\n // Counts decimals\n function countDecimals(numStr) {\n numStr = String(numStr);\n var pieces = numStr.split(\".\");\n return pieces.length > 1 ? pieces[1].length : 0;\n }\n // http://youmightnotneedjquery.com/#add_class\n function addClass(el, className) {\n if (el.classList && !/\\s/.test(className)) {\n el.classList.add(className);\n }\n else {\n el.className += \" \" + className;\n }\n }\n // http://youmightnotneedjquery.com/#remove_class\n function removeClass(el, className) {\n if (el.classList && !/\\s/.test(className)) {\n el.classList.remove(className);\n }\n else {\n el.className = el.className.replace(new RegExp(\"(^|\\\\b)\" + className.split(\" \").join(\"|\") + \"(\\\\b|$)\", \"gi\"), \" \");\n }\n }\n // https://plainjs.com/javascript/attributes/adding-removing-and-testing-for-classes-9/\n function hasClass(el, className) {\n return el.classList ? el.classList.contains(className) : new RegExp(\"\\\\b\" + className + \"\\\\b\").test(el.className);\n }\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/scrollY#Notes\n function getPageOffset(doc) {\n var supportPageOffset = window.pageXOffset !== undefined;\n var isCSS1Compat = (doc.compatMode || \"\") === \"CSS1Compat\";\n var x = supportPageOffset\n ? window.pageXOffset\n : isCSS1Compat\n ? doc.documentElement.scrollLeft\n : doc.body.scrollLeft;\n var y = supportPageOffset\n ? window.pageYOffset\n : isCSS1Compat\n ? doc.documentElement.scrollTop\n : doc.body.scrollTop;\n return {\n x: x,\n y: y,\n };\n }\n // we provide a function to compute constants instead\n // of accessing window.* as soon as the module needs it\n // so that we do not compute anything if not needed\n function getActions() {\n // Determine the events to bind. IE11 implements pointerEvents without\n // a prefix, which breaks compatibility with the IE10 implementation.\n return window.navigator.pointerEnabled\n ? {\n start: \"pointerdown\",\n move: \"pointermove\",\n end: \"pointerup\",\n }\n : window.navigator.msPointerEnabled\n ? {\n start: \"MSPointerDown\",\n move: \"MSPointerMove\",\n end: \"MSPointerUp\",\n }\n : {\n start: \"mousedown touchstart\",\n move: \"mousemove touchmove\",\n end: \"mouseup touchend\",\n };\n }\n // https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n // Issue #785\n function getSupportsPassive() {\n var supportsPassive = false;\n /* eslint-disable */\n try {\n var opts = Object.defineProperty({}, \"passive\", {\n get: function () {\n supportsPassive = true;\n },\n });\n // @ts-ignore\n window.addEventListener(\"test\", null, opts);\n }\n catch (e) { }\n /* eslint-enable */\n return supportsPassive;\n }\n function getSupportsTouchActionNone() {\n return window.CSS && CSS.supports && CSS.supports(\"touch-action\", \"none\");\n }\n //endregion\n //region Range Calculation\n // Determine the size of a sub-range in relation to a full range.\n function subRangeRatio(pa, pb) {\n return 100 / (pb - pa);\n }\n // (percentage) How many percent is this value of this range?\n function fromPercentage(range, value, startRange) {\n return (value * 100) / (range[startRange + 1] - range[startRange]);\n }\n // (percentage) Where is this value on this range?\n function toPercentage(range, value) {\n return fromPercentage(range, range[0] < 0 ? value + Math.abs(range[0]) : value - range[0], 0);\n }\n // (value) How much is this percentage on this range?\n function isPercentage(range, value) {\n return (value * (range[1] - range[0])) / 100 + range[0];\n }\n function getJ(value, arr) {\n var j = 1;\n while (value >= arr[j]) {\n j += 1;\n }\n return j;\n }\n // (percentage) Input a value, find where, on a scale of 0-100, it applies.\n function toStepping(xVal, xPct, value) {\n if (value >= xVal.slice(-1)[0]) {\n return 100;\n }\n var j = getJ(value, xVal);\n var va = xVal[j - 1];\n var vb = xVal[j];\n var pa = xPct[j - 1];\n var pb = xPct[j];\n return pa + toPercentage([va, vb], value) / subRangeRatio(pa, pb);\n }\n // (value) Input a percentage, find where it is on the specified range.\n function fromStepping(xVal, xPct, value) {\n // There is no range group that fits 100\n if (value >= 100) {\n return xVal.slice(-1)[0];\n }\n var j = getJ(value, xPct);\n var va = xVal[j - 1];\n var vb = xVal[j];\n var pa = xPct[j - 1];\n var pb = xPct[j];\n return isPercentage([va, vb], (value - pa) * subRangeRatio(pa, pb));\n }\n // (percentage) Get the step that applies at a certain value.\n function getStep(xPct, xSteps, snap, value) {\n if (value === 100) {\n return value;\n }\n var j = getJ(value, xPct);\n var a = xPct[j - 1];\n var b = xPct[j];\n // If 'snap' is set, steps are used as fixed points on the slider.\n if (snap) {\n // Find the closest position, a or b.\n if (value - a > (b - a) / 2) {\n return b;\n }\n return a;\n }\n if (!xSteps[j - 1]) {\n return value;\n }\n return xPct[j - 1] + closest(value - xPct[j - 1], xSteps[j - 1]);\n }\n //endregion\n //region Spectrum\n var Spectrum = /** @class */ (function () {\n function Spectrum(entry, snap, singleStep) {\n this.xPct = [];\n this.xVal = [];\n this.xSteps = [];\n this.xNumSteps = [];\n this.xHighestCompleteStep = [];\n this.xSteps = [singleStep || false];\n this.xNumSteps = [false];\n this.snap = snap;\n var index;\n var ordered = [];\n // Map the object keys to an array.\n Object.keys(entry).forEach(function (index) {\n ordered.push([asArray(entry[index]), index]);\n });\n // Sort all entries by value (numeric sort).\n ordered.sort(function (a, b) {\n return a[0][0] - b[0][0];\n });\n // Convert all entries to subranges.\n for (index = 0; index < ordered.length; index++) {\n this.handleEntryPoint(ordered[index][1], ordered[index][0]);\n }\n // Store the actual step values.\n // xSteps is sorted in the same order as xPct and xVal.\n this.xNumSteps = this.xSteps.slice(0);\n // Convert all numeric steps to the percentage of the subrange they represent.\n for (index = 0; index < this.xNumSteps.length; index++) {\n this.handleStepPoint(index, this.xNumSteps[index]);\n }\n }\n Spectrum.prototype.getDistance = function (value) {\n var distances = [];\n for (var index = 0; index < this.xNumSteps.length - 1; index++) {\n distances[index] = fromPercentage(this.xVal, value, index);\n }\n return distances;\n };\n // Calculate the percentual distance over the whole scale of ranges.\n // direction: 0 = backwards / 1 = forwards\n Spectrum.prototype.getAbsoluteDistance = function (value, distances, direction) {\n var xPct_index = 0;\n // Calculate range where to start calculation\n if (value < this.xPct[this.xPct.length - 1]) {\n while (value > this.xPct[xPct_index + 1]) {\n xPct_index++;\n }\n }\n else if (value === this.xPct[this.xPct.length - 1]) {\n xPct_index = this.xPct.length - 2;\n }\n // If looking backwards and the value is exactly at a range separator then look one range further\n if (!direction && value === this.xPct[xPct_index + 1]) {\n xPct_index++;\n }\n if (distances === null) {\n distances = [];\n }\n var start_factor;\n var rest_factor = 1;\n var rest_rel_distance = distances[xPct_index];\n var range_pct = 0;\n var rel_range_distance = 0;\n var abs_distance_counter = 0;\n var range_counter = 0;\n // Calculate what part of the start range the value is\n if (direction) {\n start_factor = (value - this.xPct[xPct_index]) / (this.xPct[xPct_index + 1] - this.xPct[xPct_index]);\n }\n else {\n start_factor = (this.xPct[xPct_index + 1] - value) / (this.xPct[xPct_index + 1] - this.xPct[xPct_index]);\n }\n // Do until the complete distance across ranges is calculated\n while (rest_rel_distance > 0) {\n // Calculate the percentage of total range\n range_pct = this.xPct[xPct_index + 1 + range_counter] - this.xPct[xPct_index + range_counter];\n // Detect if the margin, padding or limit is larger then the current range and calculate\n if (distances[xPct_index + range_counter] * rest_factor + 100 - start_factor * 100 > 100) {\n // If larger then take the percentual distance of the whole range\n rel_range_distance = range_pct * start_factor;\n // Rest factor of relative percentual distance still to be calculated\n rest_factor = (rest_rel_distance - 100 * start_factor) / distances[xPct_index + range_counter];\n // Set start factor to 1 as for next range it does not apply.\n start_factor = 1;\n }\n else {\n // If smaller or equal then take the percentual distance of the calculate percentual part of that range\n rel_range_distance = ((distances[xPct_index + range_counter] * range_pct) / 100) * rest_factor;\n // No rest left as the rest fits in current range\n rest_factor = 0;\n }\n if (direction) {\n abs_distance_counter = abs_distance_counter - rel_range_distance;\n // Limit range to first range when distance becomes outside of minimum range\n if (this.xPct.length + range_counter >= 1) {\n range_counter--;\n }\n }\n else {\n abs_distance_counter = abs_distance_counter + rel_range_distance;\n // Limit range to last range when distance becomes outside of maximum range\n if (this.xPct.length - range_counter >= 1) {\n range_counter++;\n }\n }\n // Rest of relative percentual distance still to be calculated\n rest_rel_distance = distances[xPct_index + range_counter] * rest_factor;\n }\n return value + abs_distance_counter;\n };\n Spectrum.prototype.toStepping = function (value) {\n value = toStepping(this.xVal, this.xPct, value);\n return value;\n };\n Spectrum.prototype.fromStepping = function (value) {\n return fromStepping(this.xVal, this.xPct, value);\n };\n Spectrum.prototype.getStep = function (value) {\n value = getStep(this.xPct, this.xSteps, this.snap, value);\n return value;\n };\n Spectrum.prototype.getDefaultStep = function (value, isDown, size) {\n var j = getJ(value, this.xPct);\n // When at the top or stepping down, look at the previous sub-range\n if (value === 100 || (isDown && value === this.xPct[j - 1])) {\n j = Math.max(j - 1, 1);\n }\n return (this.xVal[j] - this.xVal[j - 1]) / size;\n };\n Spectrum.prototype.getNearbySteps = function (value) {\n var j = getJ(value, this.xPct);\n return {\n stepBefore: {\n startValue: this.xVal[j - 2],\n step: this.xNumSteps[j - 2],\n highestStep: this.xHighestCompleteStep[j - 2],\n },\n thisStep: {\n startValue: this.xVal[j - 1],\n step: this.xNumSteps[j - 1],\n highestStep: this.xHighestCompleteStep[j - 1],\n },\n stepAfter: {\n startValue: this.xVal[j],\n step: this.xNumSteps[j],\n highestStep: this.xHighestCompleteStep[j],\n },\n };\n };\n Spectrum.prototype.countStepDecimals = function () {\n var stepDecimals = this.xNumSteps.map(countDecimals);\n return Math.max.apply(null, stepDecimals);\n };\n Spectrum.prototype.hasNoSize = function () {\n return this.xVal[0] === this.xVal[this.xVal.length - 1];\n };\n // Outside testing\n Spectrum.prototype.convert = function (value) {\n return this.getStep(this.toStepping(value));\n };\n Spectrum.prototype.handleEntryPoint = function (index, value) {\n var percentage;\n // Covert min/max syntax to 0 and 100.\n if (index === \"min\") {\n percentage = 0;\n }\n else if (index === \"max\") {\n percentage = 100;\n }\n else {\n percentage = parseFloat(index);\n }\n // Check for correct input.\n if (!isNumeric(percentage) || !isNumeric(value[0])) {\n throw new Error(\"noUiSlider: 'range' value isn't numeric.\");\n }\n // Store values.\n this.xPct.push(percentage);\n this.xVal.push(value[0]);\n var value1 = Number(value[1]);\n // NaN will evaluate to false too, but to keep\n // logging clear, set step explicitly. Make sure\n // not to override the 'step' setting with false.\n if (!percentage) {\n if (!isNaN(value1)) {\n this.xSteps[0] = value1;\n }\n }\n else {\n this.xSteps.push(isNaN(value1) ? false : value1);\n }\n this.xHighestCompleteStep.push(0);\n };\n Spectrum.prototype.handleStepPoint = function (i, n) {\n // Ignore 'false' stepping.\n if (!n) {\n return;\n }\n // Step over zero-length ranges (#948);\n if (this.xVal[i] === this.xVal[i + 1]) {\n this.xSteps[i] = this.xHighestCompleteStep[i] = this.xVal[i];\n return;\n }\n // Factor to range ratio\n this.xSteps[i] =\n fromPercentage([this.xVal[i], this.xVal[i + 1]], n, 0) / subRangeRatio(this.xPct[i], this.xPct[i + 1]);\n var totalSteps = (this.xVal[i + 1] - this.xVal[i]) / this.xNumSteps[i];\n var highestStep = Math.ceil(Number(totalSteps.toFixed(3)) - 1);\n var step = this.xVal[i] + this.xNumSteps[i] * highestStep;\n this.xHighestCompleteStep[i] = step;\n };\n return Spectrum;\n }());\n //endregion\n //region Options\n /*\tEvery input option is tested and parsed. This will prevent\n endless validation in internal methods. These tests are\n structured with an item for every option available. An\n option can be marked as required by setting the 'r' flag.\n The testing function is provided with three arguments:\n - The provided value for the option;\n - A reference to the options object;\n - The name for the option;\n\n The testing function returns false when an error is detected,\n or true when everything is OK. It can also modify the option\n object, to make sure all values can be correctly looped elsewhere. */\n //region Defaults\n var defaultFormatter = {\n to: function (value) {\n return value === undefined ? \"\" : value.toFixed(2);\n },\n from: Number,\n };\n var cssClasses = {\n target: \"target\",\n base: \"base\",\n origin: \"origin\",\n handle: \"handle\",\n handleLower: \"handle-lower\",\n handleUpper: \"handle-upper\",\n touchArea: \"touch-area\",\n horizontal: \"horizontal\",\n vertical: \"vertical\",\n background: \"background\",\n connect: \"connect\",\n connects: \"connects\",\n ltr: \"ltr\",\n rtl: \"rtl\",\n textDirectionLtr: \"txt-dir-ltr\",\n textDirectionRtl: \"txt-dir-rtl\",\n draggable: \"draggable\",\n drag: \"state-drag\",\n tap: \"state-tap\",\n active: \"active\",\n tooltip: \"tooltip\",\n pips: \"pips\",\n pipsHorizontal: \"pips-horizontal\",\n pipsVertical: \"pips-vertical\",\n marker: \"marker\",\n markerHorizontal: \"marker-horizontal\",\n markerVertical: \"marker-vertical\",\n markerNormal: \"marker-normal\",\n markerLarge: \"marker-large\",\n markerSub: \"marker-sub\",\n value: \"value\",\n valueHorizontal: \"value-horizontal\",\n valueVertical: \"value-vertical\",\n valueNormal: \"value-normal\",\n valueLarge: \"value-large\",\n valueSub: \"value-sub\",\n };\n // Namespaces of internal event listeners\n var INTERNAL_EVENT_NS = {\n tooltips: \".__tooltips\",\n aria: \".__aria\",\n };\n //endregion\n function testStep(parsed, entry) {\n if (!isNumeric(entry)) {\n throw new Error(\"noUiSlider: 'step' is not numeric.\");\n }\n // The step option can still be used to set stepping\n // for linear sliders. Overwritten if set in 'range'.\n parsed.singleStep = entry;\n }\n function testKeyboardPageMultiplier(parsed, entry) {\n if (!isNumeric(entry)) {\n throw new Error(\"noUiSlider: 'keyboardPageMultiplier' is not numeric.\");\n }\n parsed.keyboardPageMultiplier = entry;\n }\n function testKeyboardMultiplier(parsed, entry) {\n if (!isNumeric(entry)) {\n throw new Error(\"noUiSlider: 'keyboardMultiplier' is not numeric.\");\n }\n parsed.keyboardMultiplier = entry;\n }\n function testKeyboardDefaultStep(parsed, entry) {\n if (!isNumeric(entry)) {\n throw new Error(\"noUiSlider: 'keyboardDefaultStep' is not numeric.\");\n }\n parsed.keyboardDefaultStep = entry;\n }\n function testRange(parsed, entry) {\n // Filter incorrect input.\n if (typeof entry !== \"object\" || Array.isArray(entry)) {\n throw new Error(\"noUiSlider: 'range' is not an object.\");\n }\n // Catch missing start or end.\n if (entry.min === undefined || entry.max === undefined) {\n throw new Error(\"noUiSlider: Missing 'min' or 'max' in 'range'.\");\n }\n parsed.spectrum = new Spectrum(entry, parsed.snap || false, parsed.singleStep);\n }\n function testStart(parsed, entry) {\n entry = asArray(entry);\n // Validate input. Values aren't tested, as the public .val method\n // will always provide a valid location.\n if (!Array.isArray(entry) || !entry.length) {\n throw new Error(\"noUiSlider: 'start' option is incorrect.\");\n }\n // Store the number of handles.\n parsed.handles = entry.length;\n // When the slider is initialized, the .val method will\n // be called with the start options.\n parsed.start = entry;\n }\n function testSnap(parsed, entry) {\n if (typeof entry !== \"boolean\") {\n throw new Error(\"noUiSlider: 'snap' option must be a boolean.\");\n }\n // Enforce 100% stepping within subranges.\n parsed.snap = entry;\n }\n function testAnimate(parsed, entry) {\n if (typeof entry !== \"boolean\") {\n throw new Error(\"noUiSlider: 'animate' option must be a boolean.\");\n }\n // Enforce 100% stepping within subranges.\n parsed.animate = entry;\n }\n function testAnimationDuration(parsed, entry) {\n if (typeof entry !== \"number\") {\n throw new Error(\"noUiSlider: 'animationDuration' option must be a number.\");\n }\n parsed.animationDuration = entry;\n }\n function testConnect(parsed, entry) {\n var connect = [false];\n var i;\n // Map legacy options\n if (entry === \"lower\") {\n entry = [true, false];\n }\n else if (entry === \"upper\") {\n entry = [false, true];\n }\n // Handle boolean options\n if (entry === true || entry === false) {\n for (i = 1; i < parsed.handles; i++) {\n connect.push(entry);\n }\n connect.push(false);\n }\n // Reject invalid input\n else if (!Array.isArray(entry) || !entry.length || entry.length !== parsed.handles + 1) {\n throw new Error(\"noUiSlider: 'connect' option doesn't match handle count.\");\n }\n else {\n connect = entry;\n }\n parsed.connect = connect;\n }\n function testOrientation(parsed, entry) {\n // Set orientation to an a numerical value for easy\n // array selection.\n switch (entry) {\n case \"horizontal\":\n parsed.ort = 0;\n break;\n case \"vertical\":\n parsed.ort = 1;\n break;\n default:\n throw new Error(\"noUiSlider: 'orientation' option is invalid.\");\n }\n }\n function testMargin(parsed, entry) {\n if (!isNumeric(entry)) {\n throw new Error(\"noUiSlider: 'margin' option must be numeric.\");\n }\n // Issue #582\n if (entry === 0) {\n return;\n }\n parsed.margin = parsed.spectrum.getDistance(entry);\n }\n function testLimit(parsed, entry) {\n if (!isNumeric(entry)) {\n throw new Error(\"noUiSlider: 'limit' option must be numeric.\");\n }\n parsed.limit = parsed.spectrum.getDistance(entry);\n if (!parsed.limit || parsed.handles < 2) {\n throw new Error(\"noUiSlider: 'limit' option is only supported on linear sliders with 2 or more handles.\");\n }\n }\n function testPadding(parsed, entry) {\n var index;\n if (!isNumeric(entry) && !Array.isArray(entry)) {\n throw new Error(\"noUiSlider: 'padding' option must be numeric or array of exactly 2 numbers.\");\n }\n if (Array.isArray(entry) && !(entry.length === 2 || isNumeric(entry[0]) || isNumeric(entry[1]))) {\n throw new Error(\"noUiSlider: 'padding' option must be numeric or array of exactly 2 numbers.\");\n }\n if (entry === 0) {\n return;\n }\n if (!Array.isArray(entry)) {\n entry = [entry, entry];\n }\n // 'getDistance' returns false for invalid values.\n parsed.padding = [parsed.spectrum.getDistance(entry[0]), parsed.spectrum.getDistance(entry[1])];\n for (index = 0; index < parsed.spectrum.xNumSteps.length - 1; index++) {\n // last \"range\" can't contain step size as it is purely an endpoint.\n if (parsed.padding[0][index] < 0 || parsed.padding[1][index] < 0) {\n throw new Error(\"noUiSlider: 'padding' option must be a positive number(s).\");\n }\n }\n var totalPadding = entry[0] + entry[1];\n var firstValue = parsed.spectrum.xVal[0];\n var lastValue = parsed.spectrum.xVal[parsed.spectrum.xVal.length - 1];\n if (totalPadding / (lastValue - firstValue) > 1) {\n throw new Error(\"noUiSlider: 'padding' option must not exceed 100% of the range.\");\n }\n }\n function testDirection(parsed, entry) {\n // Set direction as a numerical value for easy parsing.\n // Invert connection for RTL sliders, so that the proper\n // handles get the connect/background classes.\n switch (entry) {\n case \"ltr\":\n parsed.dir = 0;\n break;\n case \"rtl\":\n parsed.dir = 1;\n break;\n default:\n throw new Error(\"noUiSlider: 'direction' option was not recognized.\");\n }\n }\n function testBehaviour(parsed, entry) {\n // Make sure the input is a string.\n if (typeof entry !== \"string\") {\n throw new Error(\"noUiSlider: 'behaviour' must be a string containing options.\");\n }\n // Check if the string contains any keywords.\n // None are required.\n var tap = entry.indexOf(\"tap\") >= 0;\n var drag = entry.indexOf(\"drag\") >= 0;\n var fixed = entry.indexOf(\"fixed\") >= 0;\n var snap = entry.indexOf(\"snap\") >= 0;\n var hover = entry.indexOf(\"hover\") >= 0;\n var unconstrained = entry.indexOf(\"unconstrained\") >= 0;\n var invertConnects = entry.indexOf(\"invert-connects\") >= 0;\n var dragAll = entry.indexOf(\"drag-all\") >= 0;\n var smoothSteps = entry.indexOf(\"smooth-steps\") >= 0;\n if (fixed) {\n if (parsed.handles !== 2) {\n throw new Error(\"noUiSlider: 'fixed' behaviour must be used with 2 handles\");\n }\n // Use margin to enforce fixed state\n testMargin(parsed, parsed.start[1] - parsed.start[0]);\n }\n if (invertConnects && parsed.handles !== 2) {\n throw new Error(\"noUiSlider: 'invert-connects' behaviour must be used with 2 handles\");\n }\n if (unconstrained && (parsed.margin || parsed.limit)) {\n throw new Error(\"noUiSlider: 'unconstrained' behaviour cannot be used with margin or limit\");\n }\n parsed.events = {\n tap: tap || snap,\n drag: drag,\n dragAll: dragAll,\n smoothSteps: smoothSteps,\n fixed: fixed,\n snap: snap,\n hover: hover,\n unconstrained: unconstrained,\n invertConnects: invertConnects,\n };\n }\n function testTooltips(parsed, entry) {\n if (entry === false) {\n return;\n }\n if (entry === true || isValidPartialFormatter(entry)) {\n parsed.tooltips = [];\n for (var i = 0; i < parsed.handles; i++) {\n parsed.tooltips.push(entry);\n }\n }\n else {\n entry = asArray(entry);\n if (entry.length !== parsed.handles) {\n throw new Error(\"noUiSlider: must pass a formatter for all handles.\");\n }\n entry.forEach(function (formatter) {\n if (typeof formatter !== \"boolean\" && !isValidPartialFormatter(formatter)) {\n throw new Error(\"noUiSlider: 'tooltips' must be passed a formatter or 'false'.\");\n }\n });\n parsed.tooltips = entry;\n }\n }\n function testHandleAttributes(parsed, entry) {\n if (entry.length !== parsed.handles) {\n throw new Error(\"noUiSlider: must pass a attributes for all handles.\");\n }\n parsed.handleAttributes = entry;\n }\n function testAriaFormat(parsed, entry) {\n if (!isValidPartialFormatter(entry)) {\n throw new Error(\"noUiSlider: 'ariaFormat' requires 'to' method.\");\n }\n parsed.ariaFormat = entry;\n }\n function testFormat(parsed, entry) {\n if (!isValidFormatter(entry)) {\n throw new Error(\"noUiSlider: 'format' requires 'to' and 'from' methods.\");\n }\n parsed.format = entry;\n }\n function testKeyboardSupport(parsed, entry) {\n if (typeof entry !== \"boolean\") {\n throw new Error(\"noUiSlider: 'keyboardSupport' option must be a boolean.\");\n }\n parsed.keyboardSupport = entry;\n }\n function testDocumentElement(parsed, entry) {\n // This is an advanced option. Passed values are used without validation.\n parsed.documentElement = entry;\n }\n function testCssPrefix(parsed, entry) {\n if (typeof entry !== \"string\" && entry !== false) {\n throw new Error(\"noUiSlider: 'cssPrefix' must be a string or `false`.\");\n }\n parsed.cssPrefix = entry;\n }\n function testCssClasses(parsed, entry) {\n if (typeof entry !== \"object\") {\n throw new Error(\"noUiSlider: 'cssClasses' must be an object.\");\n }\n if (typeof parsed.cssPrefix === \"string\") {\n parsed.cssClasses = {};\n Object.keys(entry).forEach(function (key) {\n parsed.cssClasses[key] = parsed.cssPrefix + entry[key];\n });\n }\n else {\n parsed.cssClasses = entry;\n }\n }\n // Test all developer settings and parse to assumption-safe values.\n function testOptions(options) {\n // To prove a fix for #537, freeze options here.\n // If the object is modified, an error will be thrown.\n // Object.freeze(options);\n var parsed = {\n margin: null,\n limit: null,\n padding: null,\n animate: true,\n animationDuration: 300,\n ariaFormat: defaultFormatter,\n format: defaultFormatter,\n };\n // Tests are executed in the order they are presented here.\n var tests = {\n step: { r: false, t: testStep },\n keyboardPageMultiplier: { r: false, t: testKeyboardPageMultiplier },\n keyboardMultiplier: { r: false, t: testKeyboardMultiplier },\n keyboardDefaultStep: { r: false, t: testKeyboardDefaultStep },\n start: { r: true, t: testStart },\n connect: { r: true, t: testConnect },\n direction: { r: true, t: testDirection },\n snap: { r: false, t: testSnap },\n animate: { r: false, t: testAnimate },\n animationDuration: { r: false, t: testAnimationDuration },\n range: { r: true, t: testRange },\n orientation: { r: false, t: testOrientation },\n margin: { r: false, t: testMargin },\n limit: { r: false, t: testLimit },\n padding: { r: false, t: testPadding },\n behaviour: { r: true, t: testBehaviour },\n ariaFormat: { r: false, t: testAriaFormat },\n format: { r: false, t: testFormat },\n tooltips: { r: false, t: testTooltips },\n keyboardSupport: { r: true, t: testKeyboardSupport },\n documentElement: { r: false, t: testDocumentElement },\n cssPrefix: { r: true, t: testCssPrefix },\n cssClasses: { r: true, t: testCssClasses },\n handleAttributes: { r: false, t: testHandleAttributes },\n };\n var defaults = {\n connect: false,\n direction: \"ltr\",\n behaviour: \"tap\",\n orientation: \"horizontal\",\n keyboardSupport: true,\n cssPrefix: \"noUi-\",\n cssClasses: cssClasses,\n keyboardPageMultiplier: 5,\n keyboardMultiplier: 1,\n keyboardDefaultStep: 10,\n };\n // AriaFormat defaults to regular format, if any.\n if (options.format && !options.ariaFormat) {\n options.ariaFormat = options.format;\n }\n // Run all options through a testing mechanism to ensure correct\n // input. It should be noted that options might get modified to\n // be handled properly. E.g. wrapping integers in arrays.\n Object.keys(tests).forEach(function (name) {\n // If the option isn't set, but it is required, throw an error.\n if (!isSet(options[name]) && defaults[name] === undefined) {\n if (tests[name].r) {\n throw new Error(\"noUiSlider: '\" + name + \"' is required.\");\n }\n return;\n }\n tests[name].t(parsed, !isSet(options[name]) ? defaults[name] : options[name]);\n });\n // Forward pips options\n parsed.pips = options.pips;\n // All recent browsers accept unprefixed transform.\n // We need -ms- for IE9 and -webkit- for older Android;\n // Assume use of -webkit- if unprefixed and -ms- are not supported.\n // https://caniuse.com/#feat=transforms2d\n var d = document.createElement(\"div\");\n var msPrefix = d.style.msTransform !== undefined;\n var noPrefix = d.style.transform !== undefined;\n parsed.transformRule = noPrefix ? \"transform\" : msPrefix ? \"msTransform\" : \"webkitTransform\";\n // Pips don't move, so we can place them using left/top.\n var styles = [\n [\"left\", \"top\"],\n [\"right\", \"bottom\"],\n ];\n parsed.style = styles[parsed.dir][parsed.ort];\n return parsed;\n }\n //endregion\n function scope(target, options, originalOptions) {\n var actions = getActions();\n var supportsTouchActionNone = getSupportsTouchActionNone();\n var supportsPassive = supportsTouchActionNone && getSupportsPassive();\n // All variables local to 'scope' are prefixed with 'scope_'\n // Slider DOM Nodes\n var scope_Target = target;\n var scope_Base;\n var scope_ConnectBase;\n var scope_Handles;\n var scope_Connects;\n var scope_Pips;\n var scope_Tooltips;\n // Slider state values\n var scope_Spectrum = options.spectrum;\n var scope_Values = [];\n var scope_Locations = [];\n var scope_HandleNumbers = [];\n var scope_ActiveHandlesCount = 0;\n var scope_Events = {};\n var scope_ConnectsInverted = false;\n // Document Nodes\n var scope_Document = target.ownerDocument;\n var scope_DocumentElement = options.documentElement || scope_Document.documentElement;\n var scope_Body = scope_Document.body;\n // For horizontal sliders in standard ltr documents,\n // make .noUi-origin overflow to the left so the document doesn't scroll.\n var scope_DirOffset = scope_Document.dir === \"rtl\" || options.ort === 1 ? 0 : 100;\n // Creates a node, adds it to target, returns the new node.\n function addNodeTo(addTarget, className) {\n var div = scope_Document.createElement(\"div\");\n if (className) {\n addClass(div, className);\n }\n addTarget.appendChild(div);\n return div;\n }\n // Append a origin to the base\n function addOrigin(base, handleNumber) {\n var origin = addNodeTo(base, options.cssClasses.origin);\n var handle = addNodeTo(origin, options.cssClasses.handle);\n addNodeTo(handle, options.cssClasses.touchArea);\n handle.setAttribute(\"data-handle\", String(handleNumber));\n if (options.keyboardSupport) {\n // https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex\n // 0 = focusable and reachable\n handle.setAttribute(\"tabindex\", \"0\");\n handle.addEventListener(\"keydown\", function (event) {\n return eventKeydown(event, handleNumber);\n });\n }\n if (options.handleAttributes !== undefined) {\n var attributes_1 = options.handleAttributes[handleNumber];\n Object.keys(attributes_1).forEach(function (attribute) {\n handle.setAttribute(attribute, attributes_1[attribute]);\n });\n }\n handle.setAttribute(\"role\", \"slider\");\n handle.setAttribute(\"aria-orientation\", options.ort ? \"vertical\" : \"horizontal\");\n if (handleNumber === 0) {\n addClass(handle, options.cssClasses.handleLower);\n }\n else if (handleNumber === options.handles - 1) {\n addClass(handle, options.cssClasses.handleUpper);\n }\n origin.handle = handle;\n return origin;\n }\n // Insert nodes for connect elements\n function addConnect(base, add) {\n if (!add) {\n return false;\n }\n return addNodeTo(base, options.cssClasses.connect);\n }\n // Add handles to the slider base.\n function addElements(connectOptions, base) {\n scope_ConnectBase = addNodeTo(base, options.cssClasses.connects);\n scope_Handles = [];\n scope_Connects = [];\n scope_Connects.push(addConnect(scope_ConnectBase, connectOptions[0]));\n // [::::O====O====O====]\n // connectOptions = [0, 1, 1, 1]\n for (var i = 0; i < options.handles; i++) {\n // Keep a list of all added handles.\n scope_Handles.push(addOrigin(base, i));\n scope_HandleNumbers[i] = i;\n scope_Connects.push(addConnect(scope_ConnectBase, connectOptions[i + 1]));\n }\n }\n // Initialize a single slider.\n function addSlider(addTarget) {\n // Apply classes and data to the target.\n addClass(addTarget, options.cssClasses.target);\n if (options.dir === 0) {\n addClass(addTarget, options.cssClasses.ltr);\n }\n else {\n addClass(addTarget, options.cssClasses.rtl);\n }\n if (options.ort === 0) {\n addClass(addTarget, options.cssClasses.horizontal);\n }\n else {\n addClass(addTarget, options.cssClasses.vertical);\n }\n var textDirection = getComputedStyle(addTarget).direction;\n if (textDirection === \"rtl\") {\n addClass(addTarget, options.cssClasses.textDirectionRtl);\n }\n else {\n addClass(addTarget, options.cssClasses.textDirectionLtr);\n }\n return addNodeTo(addTarget, options.cssClasses.base);\n }\n function addTooltip(handle, handleNumber) {\n if (!options.tooltips || !options.tooltips[handleNumber]) {\n return false;\n }\n return addNodeTo(handle.firstChild, options.cssClasses.tooltip);\n }\n function isSliderDisabled() {\n return scope_Target.hasAttribute(\"disabled\");\n }\n // Disable the slider dragging if any handle is disabled\n function isHandleDisabled(handleNumber) {\n var handleOrigin = scope_Handles[handleNumber];\n return handleOrigin.hasAttribute(\"disabled\");\n }\n function disable(handleNumber) {\n if (handleNumber !== null && handleNumber !== undefined) {\n scope_Handles[handleNumber].setAttribute(\"disabled\", \"\");\n scope_Handles[handleNumber].handle.removeAttribute(\"tabindex\");\n }\n else {\n scope_Target.setAttribute(\"disabled\", \"\");\n scope_Handles.forEach(function (handle) {\n handle.handle.removeAttribute(\"tabindex\");\n });\n }\n }\n function enable(handleNumber) {\n if (handleNumber !== null && handleNumber !== undefined) {\n scope_Handles[handleNumber].removeAttribute(\"disabled\");\n scope_Handles[handleNumber].handle.setAttribute(\"tabindex\", \"0\");\n }\n else {\n scope_Target.removeAttribute(\"disabled\");\n scope_Handles.forEach(function (handle) {\n handle.removeAttribute(\"disabled\");\n handle.handle.setAttribute(\"tabindex\", \"0\");\n });\n }\n }\n function removeTooltips() {\n if (scope_Tooltips) {\n removeEvent(\"update\" + INTERNAL_EVENT_NS.tooltips);\n scope_Tooltips.forEach(function (tooltip) {\n if (tooltip) {\n removeElement(tooltip);\n }\n });\n scope_Tooltips = null;\n }\n }\n // The tooltips option is a shorthand for using the 'update' event.\n function tooltips() {\n removeTooltips();\n // Tooltips are added with options.tooltips in original order.\n scope_Tooltips = scope_Handles.map(addTooltip);\n bindEvent(\"update\" + INTERNAL_EVENT_NS.tooltips, function (values, handleNumber, unencoded) {\n if (!scope_Tooltips || !options.tooltips) {\n return;\n }\n if (scope_Tooltips[handleNumber] === false) {\n return;\n }\n var formattedValue = values[handleNumber];\n if (options.tooltips[handleNumber] !== true) {\n formattedValue = options.tooltips[handleNumber].to(unencoded[handleNumber]);\n }\n scope_Tooltips[handleNumber].innerHTML = formattedValue;\n });\n }\n function aria() {\n removeEvent(\"update\" + INTERNAL_EVENT_NS.aria);\n bindEvent(\"update\" + INTERNAL_EVENT_NS.aria, function (values, handleNumber, unencoded, tap, positions) {\n // Update Aria Values for all handles, as a change in one changes min and max values for the next.\n scope_HandleNumbers.forEach(function (index) {\n var handle = scope_Handles[index];\n var min = checkHandlePosition(scope_Locations, index, 0, true, true, true);\n var max = checkHandlePosition(scope_Locations, index, 100, true, true, true);\n var now = positions[index];\n // Formatted value for display\n var text = String(options.ariaFormat.to(unencoded[index]));\n // Map to slider range values\n min = scope_Spectrum.fromStepping(min).toFixed(1);\n max = scope_Spectrum.fromStepping(max).toFixed(1);\n now = scope_Spectrum.fromStepping(now).toFixed(1);\n handle.children[0].setAttribute(\"aria-valuemin\", min);\n handle.children[0].setAttribute(\"aria-valuemax\", max);\n handle.children[0].setAttribute(\"aria-valuenow\", now);\n handle.children[0].setAttribute(\"aria-valuetext\", text);\n });\n });\n }\n function getGroup(pips) {\n // Use the range.\n if (pips.mode === exports.PipsMode.Range || pips.mode === exports.PipsMode.Steps) {\n return scope_Spectrum.xVal;\n }\n if (pips.mode === exports.PipsMode.Count) {\n if (pips.values < 2) {\n throw new Error(\"noUiSlider: 'values' (>= 2) required for mode 'count'.\");\n }\n // Divide 0 - 100 in 'count' parts.\n var interval = pips.values - 1;\n var spread = 100 / interval;\n var values = [];\n // List these parts and have them handled as 'positions'.\n while (interval--) {\n values[interval] = interval * spread;\n }\n values.push(100);\n return mapToRange(values, pips.stepped);\n }\n if (pips.mode === exports.PipsMode.Positions) {\n // Map all percentages to on-range values.\n return mapToRange(pips.values, pips.stepped);\n }\n if (pips.mode === exports.PipsMode.Values) {\n // If the value must be stepped, it needs to be converted to a percentage first.\n if (pips.stepped) {\n return pips.values.map(function (value) {\n // Convert to percentage, apply step, return to value.\n return scope_Spectrum.fromStepping(scope_Spectrum.getStep(scope_Spectrum.toStepping(value)));\n });\n }\n // Otherwise, we can simply use the values.\n return pips.values;\n }\n return []; // pips.mode = never\n }\n function mapToRange(values, stepped) {\n return values.map(function (value) {\n return scope_Spectrum.fromStepping(stepped ? scope_Spectrum.getStep(value) : value);\n });\n }\n function generateSpread(pips) {\n function safeIncrement(value, increment) {\n // Avoid floating point variance by dropping the smallest decimal places.\n return Number((value + increment).toFixed(7));\n }\n var group = getGroup(pips);\n var indexes = {};\n var firstInRange = scope_Spectrum.xVal[0];\n var lastInRange = scope_Spectrum.xVal[scope_Spectrum.xVal.length - 1];\n var ignoreFirst = false;\n var ignoreLast = false;\n var prevPct = 0;\n // Create a copy of the group, sort it and filter away all duplicates.\n group = unique(group.slice().sort(function (a, b) {\n return a - b;\n }));\n // Make sure the range starts with the first element.\n if (group[0] !== firstInRange) {\n group.unshift(firstInRange);\n ignoreFirst = true;\n }\n // Likewise for the last one.\n if (group[group.length - 1] !== lastInRange) {\n group.push(lastInRange);\n ignoreLast = true;\n }\n group.forEach(function (current, index) {\n // Get the current step and the lower + upper positions.\n var step;\n var i;\n var q;\n var low = current;\n var high = group[index + 1];\n var newPct;\n var pctDifference;\n var pctPos;\n var type;\n var steps;\n var realSteps;\n var stepSize;\n var isSteps = pips.mode === exports.PipsMode.Steps;\n // When using 'steps' mode, use the provided steps.\n // Otherwise, we'll step on to the next subrange.\n if (isSteps) {\n step = scope_Spectrum.xNumSteps[index];\n }\n // Default to a 'full' step.\n if (!step) {\n step = high - low;\n }\n // If high is undefined we are at the last subrange. Make sure it iterates once (#1088)\n if (high === undefined) {\n high = low;\n }\n // Make sure step isn't 0, which would cause an infinite loop (#654)\n step = Math.max(step, 0.0000001);\n // Find all steps in the subrange.\n for (i = low; i <= high; i = safeIncrement(i, step)) {\n // Get the percentage value for the current step,\n // calculate the size for the subrange.\n newPct = scope_Spectrum.toStepping(i);\n pctDifference = newPct - prevPct;\n steps = pctDifference / (pips.density || 1);\n realSteps = Math.round(steps);\n // This ratio represents the amount of percentage-space a point indicates.\n // For a density 1 the points/percentage = 1. For density 2, that percentage needs to be re-divided.\n // Round the percentage offset to an even number, then divide by two\n // to spread the offset on both sides of the range.\n stepSize = pctDifference / realSteps;\n // Divide all points evenly, adding the correct number to this subrange.\n // Run up to <= so that 100% gets a point, event if ignoreLast is set.\n for (q = 1; q <= realSteps; q += 1) {\n // The ratio between the rounded value and the actual size might be ~1% off.\n // Correct the percentage offset by the number of points\n // per subrange. density = 1 will result in 100 points on the\n // full range, 2 for 50, 4 for 25, etc.\n pctPos = prevPct + q * stepSize;\n indexes[pctPos.toFixed(5)] = [scope_Spectrum.fromStepping(pctPos), 0];\n }\n // Determine the point type.\n type = group.indexOf(i) > -1 ? exports.PipsType.LargeValue : isSteps ? exports.PipsType.SmallValue : exports.PipsType.NoValue;\n // Enforce the 'ignoreFirst' option by overwriting the type for 0.\n if (!index && ignoreFirst && i !== high) {\n type = 0;\n }\n if (!(i === high && ignoreLast)) {\n // Mark the 'type' of this point. 0 = plain, 1 = real value, 2 = step value.\n indexes[newPct.toFixed(5)] = [i, type];\n }\n // Update the percentage count.\n prevPct = newPct;\n }\n });\n return indexes;\n }\n function addMarking(spread, filterFunc, formatter) {\n var _a, _b;\n var element = scope_Document.createElement(\"div\");\n var valueSizeClasses = (_a = {},\n _a[exports.PipsType.None] = \"\",\n _a[exports.PipsType.NoValue] = options.cssClasses.valueNormal,\n _a[exports.PipsType.LargeValue] = options.cssClasses.valueLarge,\n _a[exports.PipsType.SmallValue] = options.cssClasses.valueSub,\n _a);\n var markerSizeClasses = (_b = {},\n _b[exports.PipsType.None] = \"\",\n _b[exports.PipsType.NoValue] = options.cssClasses.markerNormal,\n _b[exports.PipsType.LargeValue] = options.cssClasses.markerLarge,\n _b[exports.PipsType.SmallValue] = options.cssClasses.markerSub,\n _b);\n var valueOrientationClasses = [options.cssClasses.valueHorizontal, options.cssClasses.valueVertical];\n var markerOrientationClasses = [options.cssClasses.markerHorizontal, options.cssClasses.markerVertical];\n addClass(element, options.cssClasses.pips);\n addClass(element, options.ort === 0 ? options.cssClasses.pipsHorizontal : options.cssClasses.pipsVertical);\n function getClasses(type, source) {\n var a = source === options.cssClasses.value;\n var orientationClasses = a ? valueOrientationClasses : markerOrientationClasses;\n var sizeClasses = a ? valueSizeClasses : markerSizeClasses;\n return source + \" \" + orientationClasses[options.ort] + \" \" + sizeClasses[type];\n }\n function addSpread(offset, value, type) {\n // Apply the filter function, if it is set.\n type = filterFunc ? filterFunc(value, type) : type;\n if (type === exports.PipsType.None) {\n return;\n }\n // Add a marker for every point\n var node = addNodeTo(element, false);\n node.className = getClasses(type, options.cssClasses.marker);\n node.style[options.style] = offset + \"%\";\n // Values are only appended for points marked '1' or '2'.\n if (type > exports.PipsType.NoValue) {\n node = addNodeTo(element, false);\n node.className = getClasses(type, options.cssClasses.value);\n node.setAttribute(\"data-value\", String(value));\n node.style[options.style] = offset + \"%\";\n node.innerHTML = String(formatter.to(value));\n }\n }\n // Append all points.\n Object.keys(spread).forEach(function (offset) {\n addSpread(offset, spread[offset][0], spread[offset][1]);\n });\n return element;\n }\n function removePips() {\n if (scope_Pips) {\n removeElement(scope_Pips);\n scope_Pips = null;\n }\n }\n function pips(pips) {\n // Fix #669\n removePips();\n var spread = generateSpread(pips);\n var filter = pips.filter;\n var format = pips.format || {\n to: function (value) {\n return String(Math.round(value));\n },\n };\n scope_Pips = scope_Target.appendChild(addMarking(spread, filter, format));\n return scope_Pips;\n }\n // Shorthand for base dimensions.\n function baseSize() {\n var rect = scope_Base.getBoundingClientRect();\n var alt = (\"offset\" + [\"Width\", \"Height\"][options.ort]);\n return options.ort === 0 ? rect.width || scope_Base[alt] : rect.height || scope_Base[alt];\n }\n // Handler for attaching events trough a proxy.\n function attachEvent(events, element, callback, data) {\n // This function can be used to 'filter' events to the slider.\n // element is a node, not a nodeList\n var method = function (event) {\n var e = fixEvent(event, data.pageOffset, data.target || element);\n // fixEvent returns false if this event has a different target\n // when handling (multi-) touch events;\n if (!e) {\n return false;\n }\n // doNotReject is passed by all end events to make sure released touches\n // are not rejected, leaving the slider \"stuck\" to the cursor;\n if (isSliderDisabled() && !data.doNotReject) {\n return false;\n }\n // Stop if an active 'tap' transition is taking place.\n if (hasClass(scope_Target, options.cssClasses.tap) && !data.doNotReject) {\n return false;\n }\n // Ignore right or middle clicks on start #454\n if (events === actions.start && e.buttons !== undefined && e.buttons > 1) {\n return false;\n }\n // Ignore right or middle clicks on start #454\n if (data.hover && e.buttons) {\n return false;\n }\n // 'supportsPassive' is only true if a browser also supports touch-action: none in CSS.\n // iOS safari does not, so it doesn't get to benefit from passive scrolling. iOS does support\n // touch-action: manipulation, but that allows panning, which breaks\n // sliders after zooming/on non-responsive pages.\n // See: https://bugs.webkit.org/show_bug.cgi?id=133112\n if (!supportsPassive) {\n e.preventDefault();\n }\n e.calcPoint = e.points[options.ort];\n // Call the event handler with the event [ and additional data ].\n callback(e, data);\n return;\n };\n var methods = [];\n // Bind a closure on the target for every event type.\n events.split(\" \").forEach(function (eventName) {\n element.addEventListener(eventName, method, supportsPassive ? { passive: true } : false);\n methods.push([eventName, method]);\n });\n return methods;\n }\n // Provide a clean event with standardized offset values.\n function fixEvent(e, pageOffset, eventTarget) {\n // Filter the event to register the type, which can be\n // touch, mouse or pointer. Offset changes need to be\n // made on an event specific basis.\n var touch = e.type.indexOf(\"touch\") === 0;\n var mouse = e.type.indexOf(\"mouse\") === 0;\n var pointer = e.type.indexOf(\"pointer\") === 0;\n var x = 0;\n var y = 0;\n // IE10 implemented pointer events with a prefix;\n if (e.type.indexOf(\"MSPointer\") === 0) {\n pointer = true;\n }\n // Erroneous events seem to be passed in occasionally on iOS/iPadOS after user finishes interacting with\n // the slider. They appear to be of type MouseEvent, yet they don't have usual properties set. Ignore\n // events that have no touches or buttons associated with them. (#1057, #1079, #1095)\n if (e.type === \"mousedown\" && !e.buttons && !e.touches) {\n return false;\n }\n // The only thing one handle should be concerned about is the touches that originated on top of it.\n if (touch) {\n // Returns true if a touch originated on the target.\n var isTouchOnTarget = function (checkTouch) {\n var target = checkTouch.target;\n return (target === eventTarget ||\n eventTarget.contains(target) ||\n (e.composed && e.composedPath().shift() === eventTarget));\n };\n // In the case of touchstart events, we need to make sure there is still no more than one\n // touch on the target so we look amongst all touches.\n if (e.type === \"touchstart\") {\n var targetTouches = Array.prototype.filter.call(e.touches, isTouchOnTarget);\n // Do not support more than one touch per handle.\n if (targetTouches.length > 1) {\n return false;\n }\n x = targetTouches[0].pageX;\n y = targetTouches[0].pageY;\n }\n else {\n // In the other cases, find on changedTouches is enough.\n var targetTouch = Array.prototype.find.call(e.changedTouches, isTouchOnTarget);\n // Cancel if the target touch has not moved.\n if (!targetTouch) {\n return false;\n }\n x = targetTouch.pageX;\n y = targetTouch.pageY;\n }\n }\n pageOffset = pageOffset || getPageOffset(scope_Document);\n if (mouse || pointer) {\n x = e.clientX + pageOffset.x;\n y = e.clientY + pageOffset.y;\n }\n e.pageOffset = pageOffset;\n e.points = [x, y];\n e.cursor = mouse || pointer; // Fix #435\n return e;\n }\n // Translate a coordinate in the document to a percentage on the slider\n function calcPointToPercentage(calcPoint) {\n var location = calcPoint - offset(scope_Base, options.ort);\n var proposal = (location * 100) / baseSize();\n // Clamp proposal between 0% and 100%\n // Out-of-bound coordinates may occur when .noUi-base pseudo-elements\n // are used (e.g. contained handles feature)\n proposal = limit(proposal);\n return options.dir ? 100 - proposal : proposal;\n }\n // Find handle closest to a certain percentage on the slider\n function getClosestHandle(clickedPosition) {\n var smallestDifference = 100;\n var handleNumber = false;\n scope_Handles.forEach(function (handle, index) {\n // Disabled handles are ignored\n if (isHandleDisabled(index)) {\n return;\n }\n var handlePosition = scope_Locations[index];\n var differenceWithThisHandle = Math.abs(handlePosition - clickedPosition);\n // Initial state\n var clickAtEdge = differenceWithThisHandle === 100 && smallestDifference === 100;\n // Difference with this handle is smaller than the previously checked handle\n var isCloser = differenceWithThisHandle < smallestDifference;\n var isCloserAfter = differenceWithThisHandle <= smallestDifference && clickedPosition > handlePosition;\n if (isCloser || isCloserAfter || clickAtEdge) {\n handleNumber = index;\n smallestDifference = differenceWithThisHandle;\n }\n });\n return handleNumber;\n }\n // Fire 'end' when a mouse or pen leaves the document.\n function documentLeave(event, data) {\n if (event.type === \"mouseout\" &&\n event.target.nodeName === \"HTML\" &&\n event.relatedTarget === null) {\n eventEnd(event, data);\n }\n }\n // Handle movement on document for handle and range drag.\n function eventMove(event, data) {\n // Fix #498\n // Check value of .buttons in 'start' to work around a bug in IE10 mobile (data.buttonsProperty).\n // https://connect.microsoft.com/IE/feedback/details/927005/mobile-ie10-windows-phone-buttons-property-of-pointermove-event-always-zero\n // IE9 has .buttons and .which zero on mousemove.\n // Firefox breaks the spec MDN defines.\n if (navigator.appVersion.indexOf(\"MSIE 9\") === -1 && event.buttons === 0 && data.buttonsProperty !== 0) {\n return eventEnd(event, data);\n }\n // Check if we are moving up or down\n var movement = (options.dir ? -1 : 1) * (event.calcPoint - data.startCalcPoint);\n // Convert the movement into a percentage of the slider width/height\n var proposal = (movement * 100) / data.baseSize;\n moveHandles(movement > 0, proposal, data.locations, data.handleNumbers, data.connect);\n }\n // Unbind move events on document, call callbacks.\n function eventEnd(event, data) {\n // The handle is no longer active, so remove the class.\n if (data.handle) {\n removeClass(data.handle, options.cssClasses.active);\n scope_ActiveHandlesCount -= 1;\n }\n // Unbind the move and end events, which are added on 'start'.\n data.listeners.forEach(function (c) {\n scope_DocumentElement.removeEventListener(c[0], c[1]);\n });\n if (scope_ActiveHandlesCount === 0) {\n // Remove dragging class.\n removeClass(scope_Target, options.cssClasses.drag);\n setZindex();\n // Remove cursor styles and text-selection events bound to the body.\n if (event.cursor) {\n scope_Body.style.cursor = \"\";\n scope_Body.removeEventListener(\"selectstart\", preventDefault);\n }\n }\n if (options.events.smoothSteps) {\n data.handleNumbers.forEach(function (handleNumber) {\n setHandle(handleNumber, scope_Locations[handleNumber], true, true, false, false);\n });\n data.handleNumbers.forEach(function (handleNumber) {\n fireEvent(\"update\", handleNumber);\n });\n }\n data.handleNumbers.forEach(function (handleNumber) {\n fireEvent(\"change\", handleNumber);\n fireEvent(\"set\", handleNumber);\n fireEvent(\"end\", handleNumber);\n });\n }\n // Bind move events on document.\n function eventStart(event, data) {\n // Ignore event if any handle is disabled\n if (data.handleNumbers.some(isHandleDisabled)) {\n return;\n }\n var handle;\n if (data.handleNumbers.length === 1) {\n var handleOrigin = scope_Handles[data.handleNumbers[0]];\n handle = handleOrigin.children[0];\n scope_ActiveHandlesCount += 1;\n // Mark the handle as 'active' so it can be styled.\n addClass(handle, options.cssClasses.active);\n }\n // A drag should never propagate up to the 'tap' event.\n event.stopPropagation();\n // Record the event listeners.\n var listeners = [];\n // Attach the move and end events.\n var moveEvent = attachEvent(actions.move, scope_DocumentElement, eventMove, {\n // The event target has changed so we need to propagate the original one so that we keep\n // relying on it to extract target touches.\n target: event.target,\n handle: handle,\n connect: data.connect,\n listeners: listeners,\n startCalcPoint: event.calcPoint,\n baseSize: baseSize(),\n pageOffset: event.pageOffset,\n handleNumbers: data.handleNumbers,\n buttonsProperty: event.buttons,\n locations: scope_Locations.slice(),\n });\n var endEvent = attachEvent(actions.end, scope_DocumentElement, eventEnd, {\n target: event.target,\n handle: handle,\n listeners: listeners,\n doNotReject: true,\n handleNumbers: data.handleNumbers,\n });\n var outEvent = attachEvent(\"mouseout\", scope_DocumentElement, documentLeave, {\n target: event.target,\n handle: handle,\n listeners: listeners,\n doNotReject: true,\n handleNumbers: data.handleNumbers,\n });\n // We want to make sure we pushed the listeners in the listener list rather than creating\n // a new one as it has already been passed to the event handlers.\n listeners.push.apply(listeners, moveEvent.concat(endEvent, outEvent));\n // Text selection isn't an issue on touch devices,\n // so adding cursor styles can be skipped.\n if (event.cursor) {\n // Prevent the 'I' cursor and extend the range-drag cursor.\n scope_Body.style.cursor = getComputedStyle(event.target).cursor;\n // Mark the target with a dragging state.\n if (scope_Handles.length > 1) {\n addClass(scope_Target, options.cssClasses.drag);\n }\n // Prevent text selection when dragging the handles.\n // In noUiSlider <= 9.2.0, this was handled by calling preventDefault on mouse/touch start/move,\n // which is scroll blocking. The selectstart event is supported by FireFox starting from version 52,\n // meaning the only holdout is iOS Safari. This doesn't matter: text selection isn't triggered there.\n // The 'cursor' flag is false.\n // See: http://caniuse.com/#search=selectstart\n scope_Body.addEventListener(\"selectstart\", preventDefault, false);\n }\n data.handleNumbers.forEach(function (handleNumber) {\n fireEvent(\"start\", handleNumber);\n });\n }\n // Move closest handle to tapped location.\n function eventTap(event) {\n // The tap event shouldn't propagate up\n event.stopPropagation();\n var proposal = calcPointToPercentage(event.calcPoint);\n var handleNumber = getClosestHandle(proposal);\n // Tackle the case that all handles are 'disabled'.\n if (handleNumber === false) {\n return;\n }\n // Flag the slider as it is now in a transitional state.\n // Transition takes a configurable amount of ms (default 300). Re-enable the slider after that.\n if (!options.events.snap) {\n addClassFor(scope_Target, options.cssClasses.tap, options.animationDuration);\n }\n setHandle(handleNumber, proposal, true, true);\n setZindex();\n fireEvent(\"slide\", handleNumber, true);\n fireEvent(\"update\", handleNumber, true);\n if (!options.events.snap) {\n fireEvent(\"change\", handleNumber, true);\n fireEvent(\"set\", handleNumber, true);\n }\n else {\n eventStart(event, { handleNumbers: [handleNumber] });\n }\n }\n // Fires a 'hover' event for a hovered mouse/pen position.\n function eventHover(event) {\n var proposal = calcPointToPercentage(event.calcPoint);\n var to = scope_Spectrum.getStep(proposal);\n var value = scope_Spectrum.fromStepping(to);\n Object.keys(scope_Events).forEach(function (targetEvent) {\n if (\"hover\" === targetEvent.split(\".\")[0]) {\n scope_Events[targetEvent].forEach(function (callback) {\n callback.call(scope_Self, value);\n });\n }\n });\n }\n // Handles keydown on focused handles\n // Don't move the document when pressing arrow keys on focused handles\n function eventKeydown(event, handleNumber) {\n if (isSliderDisabled() || isHandleDisabled(handleNumber)) {\n return false;\n }\n var horizontalKeys = [\"Left\", \"Right\"];\n var verticalKeys = [\"Down\", \"Up\"];\n var largeStepKeys = [\"PageDown\", \"PageUp\"];\n var edgeKeys = [\"Home\", \"End\"];\n if (options.dir && !options.ort) {\n // On an right-to-left slider, the left and right keys act inverted\n horizontalKeys.reverse();\n }\n else if (options.ort && !options.dir) {\n // On a top-to-bottom slider, the up and down keys act inverted\n verticalKeys.reverse();\n largeStepKeys.reverse();\n }\n // Strip \"Arrow\" for IE compatibility. https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key\n var key = event.key.replace(\"Arrow\", \"\");\n var isLargeDown = key === largeStepKeys[0];\n var isLargeUp = key === largeStepKeys[1];\n var isDown = key === verticalKeys[0] || key === horizontalKeys[0] || isLargeDown;\n var isUp = key === verticalKeys[1] || key === horizontalKeys[1] || isLargeUp;\n var isMin = key === edgeKeys[0];\n var isMax = key === edgeKeys[1];\n if (!isDown && !isUp && !isMin && !isMax) {\n return true;\n }\n event.preventDefault();\n var to;\n if (isUp || isDown) {\n var direction = isDown ? 0 : 1;\n var steps = getNextStepsForHandle(handleNumber);\n var step = steps[direction];\n // At the edge of a slider, do nothing\n if (step === null) {\n return false;\n }\n // No step set, use the default of 10% of the sub-range\n if (step === false) {\n step = scope_Spectrum.getDefaultStep(scope_Locations[handleNumber], isDown, options.keyboardDefaultStep);\n }\n if (isLargeUp || isLargeDown) {\n step *= options.keyboardPageMultiplier;\n }\n else {\n step *= options.keyboardMultiplier;\n }\n // Step over zero-length ranges (#948);\n step = Math.max(step, 0.0000001);\n // Decrement for down steps\n step = (isDown ? -1 : 1) * step;\n to = scope_Values[handleNumber] + step;\n }\n else if (isMax) {\n // End key\n to = options.spectrum.xVal[options.spectrum.xVal.length - 1];\n }\n else {\n // Home key\n to = options.spectrum.xVal[0];\n }\n setHandle(handleNumber, scope_Spectrum.toStepping(to), true, true);\n fireEvent(\"slide\", handleNumber);\n fireEvent(\"update\", handleNumber);\n fireEvent(\"change\", handleNumber);\n fireEvent(\"set\", handleNumber);\n return false;\n }\n // Attach events to several slider parts.\n function bindSliderEvents(behaviour) {\n // Attach the standard drag event to the handles.\n if (!behaviour.fixed) {\n scope_Handles.forEach(function (handle, index) {\n // These events are only bound to the visual handle\n // element, not the 'real' origin element.\n attachEvent(actions.start, handle.children[0], eventStart, {\n handleNumbers: [index],\n });\n });\n }\n // Attach the tap event to the slider base.\n if (behaviour.tap) {\n attachEvent(actions.start, scope_Base, eventTap, {});\n }\n // Fire hover events\n if (behaviour.hover) {\n attachEvent(actions.move, scope_Base, eventHover, {\n hover: true,\n });\n }\n // Make the range draggable.\n if (behaviour.drag) {\n scope_Connects.forEach(function (connect, index) {\n if (connect === false || index === 0 || index === scope_Connects.length - 1) {\n return;\n }\n var handleBefore = scope_Handles[index - 1];\n var handleAfter = scope_Handles[index];\n var eventHolders = [connect];\n var handlesToDrag = [handleBefore, handleAfter];\n var handleNumbersToDrag = [index - 1, index];\n addClass(connect, options.cssClasses.draggable);\n // When the range is fixed, the entire range can\n // be dragged by the handles. The handle in the first\n // origin will propagate the start event upward,\n // but it needs to be bound manually on the other.\n if (behaviour.fixed) {\n eventHolders.push(handleBefore.children[0]);\n eventHolders.push(handleAfter.children[0]);\n }\n if (behaviour.dragAll) {\n handlesToDrag = scope_Handles;\n handleNumbersToDrag = scope_HandleNumbers;\n }\n eventHolders.forEach(function (eventHolder) {\n attachEvent(actions.start, eventHolder, eventStart, {\n handles: handlesToDrag,\n handleNumbers: handleNumbersToDrag,\n connect: connect,\n });\n });\n });\n }\n }\n // Attach an event to this slider, possibly including a namespace\n function bindEvent(namespacedEvent, callback) {\n scope_Events[namespacedEvent] = scope_Events[namespacedEvent] || [];\n scope_Events[namespacedEvent].push(callback);\n // If the event bound is 'update,' fire it immediately for all handles.\n if (namespacedEvent.split(\".\")[0] === \"update\") {\n scope_Handles.forEach(function (a, index) {\n fireEvent(\"update\", index);\n });\n }\n }\n function isInternalNamespace(namespace) {\n return namespace === INTERNAL_EVENT_NS.aria || namespace === INTERNAL_EVENT_NS.tooltips;\n }\n // Undo attachment of event\n function removeEvent(namespacedEvent) {\n var event = namespacedEvent && namespacedEvent.split(\".\")[0];\n var namespace = event ? namespacedEvent.substring(event.length) : namespacedEvent;\n Object.keys(scope_Events).forEach(function (bind) {\n var tEvent = bind.split(\".\")[0];\n var tNamespace = bind.substring(tEvent.length);\n if ((!event || event === tEvent) && (!namespace || namespace === tNamespace)) {\n // only delete protected internal event if intentional\n if (!isInternalNamespace(tNamespace) || namespace === tNamespace) {\n delete scope_Events[bind];\n }\n }\n });\n }\n // External event handling\n function fireEvent(eventName, handleNumber, tap) {\n Object.keys(scope_Events).forEach(function (targetEvent) {\n var eventType = targetEvent.split(\".\")[0];\n if (eventName === eventType) {\n scope_Events[targetEvent].forEach(function (callback) {\n callback.call(\n // Use the slider public API as the scope ('this')\n scope_Self, \n // Return values as array, so arg_1[arg_2] is always valid.\n scope_Values.map(options.format.to), \n // Handle index, 0 or 1\n handleNumber, \n // Un-formatted slider values\n scope_Values.slice(), \n // Event is fired by tap, true or false\n tap || false, \n // Left offset of the handle, in relation to the slider\n scope_Locations.slice(), \n // add the slider public API to an accessible parameter when this is unavailable\n scope_Self);\n });\n }\n });\n }\n // Split out the handle positioning logic so the Move event can use it, too\n function checkHandlePosition(reference, handleNumber, to, lookBackward, lookForward, getValue, smoothSteps) {\n var distance;\n // For sliders with multiple handles, limit movement to the other handle.\n // Apply the margin option by adding it to the handle positions.\n if (scope_Handles.length > 1 && !options.events.unconstrained) {\n if (lookBackward && handleNumber > 0) {\n distance = scope_Spectrum.getAbsoluteDistance(reference[handleNumber - 1], options.margin, false);\n to = Math.max(to, distance);\n }\n if (lookForward && handleNumber < scope_Handles.length - 1) {\n distance = scope_Spectrum.getAbsoluteDistance(reference[handleNumber + 1], options.margin, true);\n to = Math.min(to, distance);\n }\n }\n // The limit option has the opposite effect, limiting handles to a\n // maximum distance from another. Limit must be > 0, as otherwise\n // handles would be unmovable.\n if (scope_Handles.length > 1 && options.limit) {\n if (lookBackward && handleNumber > 0) {\n distance = scope_Spectrum.getAbsoluteDistance(reference[handleNumber - 1], options.limit, false);\n to = Math.min(to, distance);\n }\n if (lookForward && handleNumber < scope_Handles.length - 1) {\n distance = scope_Spectrum.getAbsoluteDistance(reference[handleNumber + 1], options.limit, true);\n to = Math.max(to, distance);\n }\n }\n // The padding option keeps the handles a certain distance from the\n // edges of the slider. Padding must be > 0.\n if (options.padding) {\n if (handleNumber === 0) {\n distance = scope_Spectrum.getAbsoluteDistance(0, options.padding[0], false);\n to = Math.max(to, distance);\n }\n if (handleNumber === scope_Handles.length - 1) {\n distance = scope_Spectrum.getAbsoluteDistance(100, options.padding[1], true);\n to = Math.min(to, distance);\n }\n }\n if (!smoothSteps) {\n to = scope_Spectrum.getStep(to);\n }\n // Limit percentage to the 0 - 100 range\n to = limit(to);\n // Return false if handle can't move\n if (to === reference[handleNumber] && !getValue) {\n return false;\n }\n return to;\n }\n // Uses slider orientation to create CSS rules. a = base value;\n function inRuleOrder(v, a) {\n var o = options.ort;\n return (o ? a : v) + \", \" + (o ? v : a);\n }\n // Moves handle(s) by a percentage\n // (bool, % to move, [% where handle started, ...], [index in scope_Handles, ...])\n function moveHandles(upward, proposal, locations, handleNumbers, connect) {\n var proposals = locations.slice();\n // Store first handle now, so we still have it in case handleNumbers is reversed\n var firstHandle = handleNumbers[0];\n var smoothSteps = options.events.smoothSteps;\n var b = [!upward, upward];\n var f = [upward, !upward];\n // Copy handleNumbers so we don't change the dataset\n handleNumbers = handleNumbers.slice();\n // Check to see which handle is 'leading'.\n // If that one can't move the second can't either.\n if (upward) {\n handleNumbers.reverse();\n }\n // Step 1: get the maximum percentage that any of the handles can move\n if (handleNumbers.length > 1) {\n handleNumbers.forEach(function (handleNumber, o) {\n var to = checkHandlePosition(proposals, handleNumber, proposals[handleNumber] + proposal, b[o], f[o], false, smoothSteps);\n // Stop if one of the handles can't move.\n if (to === false) {\n proposal = 0;\n }\n else {\n proposal = to - proposals[handleNumber];\n proposals[handleNumber] = to;\n }\n });\n }\n // If using one handle, check backward AND forward\n else {\n b = f = [true];\n }\n var state = false;\n // Step 2: Try to set the handles with the found percentage\n handleNumbers.forEach(function (handleNumber, o) {\n state =\n setHandle(handleNumber, locations[handleNumber] + proposal, b[o], f[o], false, smoothSteps) || state;\n });\n // Step 3: If a handle moved, fire events\n if (state) {\n handleNumbers.forEach(function (handleNumber) {\n fireEvent(\"update\", handleNumber);\n fireEvent(\"slide\", handleNumber);\n });\n // If target is a connect, then fire drag event\n if (connect != undefined) {\n fireEvent(\"drag\", firstHandle);\n }\n }\n }\n // Takes a base value and an offset. This offset is used for the connect bar size.\n // In the initial design for this feature, the origin element was 1% wide.\n // Unfortunately, a rounding bug in Chrome makes it impossible to implement this feature\n // in this manner: https://bugs.chromium.org/p/chromium/issues/detail?id=798223\n function transformDirection(a, b) {\n return options.dir ? 100 - a - b : a;\n }\n // Updates scope_Locations and scope_Values, updates visual state\n function updateHandlePosition(handleNumber, to) {\n // Update locations.\n scope_Locations[handleNumber] = to;\n // Convert the value to the slider stepping/range.\n scope_Values[handleNumber] = scope_Spectrum.fromStepping(to);\n var translation = transformDirection(to, 0) - scope_DirOffset;\n var translateRule = \"translate(\" + inRuleOrder(translation + \"%\", \"0\") + \")\";\n scope_Handles[handleNumber].style[options.transformRule] = translateRule;\n // sanity check for at least 2 handles (e.g. during setup)\n if (options.events.invertConnects && scope_Locations.length > 1) {\n // check if handles passed each other, but don't match the ConnectsInverted state\n var handlesAreInOrder = scope_Locations.every(function (position, index, locations) {\n return index === 0 || position >= locations[index - 1];\n });\n if (scope_ConnectsInverted !== !handlesAreInOrder) {\n // invert connects when handles pass each other\n invertConnects();\n // invertConnects already updates all connect elements\n return;\n }\n }\n updateConnect(handleNumber);\n updateConnect(handleNumber + 1);\n if (scope_ConnectsInverted) {\n // When connects are inverted, we also have to update adjacent connects\n updateConnect(handleNumber - 1);\n updateConnect(handleNumber + 2);\n }\n }\n // Handles before the slider middle are stacked later = higher,\n // Handles after the middle later is lower\n // [[7] [8] .......... | .......... [5] [4]\n function setZindex() {\n scope_HandleNumbers.forEach(function (handleNumber) {\n var dir = scope_Locations[handleNumber] > 50 ? -1 : 1;\n var zIndex = 3 + (scope_Handles.length + dir * handleNumber);\n scope_Handles[handleNumber].style.zIndex = String(zIndex);\n });\n }\n // Test suggested values and apply margin, step.\n // if exactInput is true, don't run checkHandlePosition, then the handle can be placed in between steps (#436)\n function setHandle(handleNumber, to, lookBackward, lookForward, exactInput, smoothSteps) {\n if (!exactInput) {\n to = checkHandlePosition(scope_Locations, handleNumber, to, lookBackward, lookForward, false, smoothSteps);\n }\n if (to === false) {\n return false;\n }\n updateHandlePosition(handleNumber, to);\n return true;\n }\n // Updates style attribute for connect nodes\n function updateConnect(index) {\n // Skip connects set to false\n if (!scope_Connects[index]) {\n return;\n }\n // Create a copy of locations, so we can sort them for the local scope logic\n var locations = scope_Locations.slice();\n if (scope_ConnectsInverted) {\n locations.sort(function (a, b) {\n return a - b;\n });\n }\n var l = 0;\n var h = 100;\n if (index !== 0) {\n l = locations[index - 1];\n }\n if (index !== scope_Connects.length - 1) {\n h = locations[index];\n }\n // We use two rules:\n // 'translate' to change the left/top offset;\n // 'scale' to change the width of the element;\n // As the element has a width of 100%, a translation of 100% is equal to 100% of the parent (.noUi-base)\n var connectWidth = h - l;\n var translateRule = \"translate(\" + inRuleOrder(transformDirection(l, connectWidth) + \"%\", \"0\") + \")\";\n var scaleRule = \"scale(\" + inRuleOrder(connectWidth / 100, \"1\") + \")\";\n scope_Connects[index].style[options.transformRule] =\n translateRule + \" \" + scaleRule;\n }\n // Parses value passed to .set method. Returns current value if not parse-able.\n function resolveToValue(to, handleNumber) {\n // Setting with null indicates an 'ignore'.\n // Inputting 'false' is invalid.\n if (to === null || to === false || to === undefined) {\n return scope_Locations[handleNumber];\n }\n // If a formatted number was passed, attempt to decode it.\n if (typeof to === \"number\") {\n to = String(to);\n }\n to = options.format.from(to);\n if (to !== false) {\n to = scope_Spectrum.toStepping(to);\n }\n // If parsing the number failed, use the current value.\n if (to === false || isNaN(to)) {\n return scope_Locations[handleNumber];\n }\n return to;\n }\n // Set the slider value.\n function valueSet(input, fireSetEvent, exactInput) {\n var values = asArray(input);\n var isInit = scope_Locations[0] === undefined;\n // Event fires by default\n fireSetEvent = fireSetEvent === undefined ? true : fireSetEvent;\n // Animation is optional.\n // Make sure the initial values were set before using animated placement.\n if (options.animate && !isInit) {\n addClassFor(scope_Target, options.cssClasses.tap, options.animationDuration);\n }\n // First pass, without lookAhead but with lookBackward. Values are set from left to right.\n scope_HandleNumbers.forEach(function (handleNumber) {\n setHandle(handleNumber, resolveToValue(values[handleNumber], handleNumber), true, false, exactInput);\n });\n var i = scope_HandleNumbers.length === 1 ? 0 : 1;\n // Spread handles evenly across the slider if the range has no size (min=max)\n if (isInit && scope_Spectrum.hasNoSize()) {\n exactInput = true;\n scope_Locations[0] = 0;\n if (scope_HandleNumbers.length > 1) {\n var space_1 = 100 / (scope_HandleNumbers.length - 1);\n scope_HandleNumbers.forEach(function (handleNumber) {\n scope_Locations[handleNumber] = handleNumber * space_1;\n });\n }\n }\n // Secondary passes. Now that all base values are set, apply constraints.\n // Iterate all handles to ensure constraints are applied for the entire slider (Issue #1009)\n for (; i < scope_HandleNumbers.length; ++i) {\n scope_HandleNumbers.forEach(function (handleNumber) {\n setHandle(handleNumber, scope_Locations[handleNumber], true, true, exactInput);\n });\n }\n setZindex();\n scope_HandleNumbers.forEach(function (handleNumber) {\n fireEvent(\"update\", handleNumber);\n // Fire the event only for handles that received a new value, as per #579\n if (values[handleNumber] !== null && fireSetEvent) {\n fireEvent(\"set\", handleNumber);\n }\n });\n }\n // Reset slider to initial values\n function valueReset(fireSetEvent) {\n valueSet(options.start, fireSetEvent);\n }\n // Set value for a single handle\n function valueSetHandle(handleNumber, value, fireSetEvent, exactInput) {\n // Ensure numeric input\n handleNumber = Number(handleNumber);\n if (!(handleNumber >= 0 && handleNumber < scope_HandleNumbers.length)) {\n throw new Error(\"noUiSlider: invalid handle number, got: \" + handleNumber);\n }\n // Look both backward and forward, since we don't want this handle to \"push\" other handles (#960);\n // The exactInput argument can be used to ignore slider stepping (#436)\n setHandle(handleNumber, resolveToValue(value, handleNumber), true, true, exactInput);\n fireEvent(\"update\", handleNumber);\n if (fireSetEvent) {\n fireEvent(\"set\", handleNumber);\n }\n }\n // Get the slider value.\n function valueGet(unencoded) {\n if (unencoded === void 0) { unencoded = false; }\n if (unencoded) {\n // return a copy of the raw values\n return scope_Values.length === 1 ? scope_Values[0] : scope_Values.slice(0);\n }\n var values = scope_Values.map(options.format.to);\n // If only one handle is used, return a single value.\n if (values.length === 1) {\n return values[0];\n }\n return values;\n }\n // Removes classes from the root and empties it.\n function destroy() {\n // remove protected internal listeners\n removeEvent(INTERNAL_EVENT_NS.aria);\n removeEvent(INTERNAL_EVENT_NS.tooltips);\n Object.keys(options.cssClasses).forEach(function (key) {\n removeClass(scope_Target, options.cssClasses[key]);\n });\n while (scope_Target.firstChild) {\n scope_Target.removeChild(scope_Target.firstChild);\n }\n delete scope_Target.noUiSlider;\n }\n function getNextStepsForHandle(handleNumber) {\n var location = scope_Locations[handleNumber];\n var nearbySteps = scope_Spectrum.getNearbySteps(location);\n var value = scope_Values[handleNumber];\n var increment = nearbySteps.thisStep.step;\n var decrement = null;\n // If snapped, directly use defined step value\n if (options.snap) {\n return [\n value - nearbySteps.stepBefore.startValue || null,\n nearbySteps.stepAfter.startValue - value || null,\n ];\n }\n // If the next value in this step moves into the next step,\n // the increment is the start of the next step - the current value\n if (increment !== false) {\n if (value + increment > nearbySteps.stepAfter.startValue) {\n increment = nearbySteps.stepAfter.startValue - value;\n }\n }\n // If the value is beyond the starting point\n if (value > nearbySteps.thisStep.startValue) {\n decrement = nearbySteps.thisStep.step;\n }\n else if (nearbySteps.stepBefore.step === false) {\n decrement = false;\n }\n // If a handle is at the start of a step, it always steps back into the previous step first\n else {\n decrement = value - nearbySteps.stepBefore.highestStep;\n }\n // Now, if at the slider edges, there is no in/decrement\n if (location === 100) {\n increment = null;\n }\n else if (location === 0) {\n decrement = null;\n }\n // As per #391, the comparison for the decrement step can have some rounding issues.\n var stepDecimals = scope_Spectrum.countStepDecimals();\n // Round per #391\n if (increment !== null && increment !== false) {\n increment = Number(increment.toFixed(stepDecimals));\n }\n if (decrement !== null && decrement !== false) {\n decrement = Number(decrement.toFixed(stepDecimals));\n }\n return [decrement, increment];\n }\n // Get the current step size for the slider.\n function getNextSteps() {\n return scope_HandleNumbers.map(getNextStepsForHandle);\n }\n // Updatable: margin, limit, padding, step, range, animate, snap\n function updateOptions(optionsToUpdate, fireSetEvent) {\n // Spectrum is created using the range, snap, direction and step options.\n // 'snap' and 'step' can be updated.\n // If 'snap' and 'step' are not passed, they should remain unchanged.\n var v = valueGet();\n var updateAble = [\n \"margin\",\n \"limit\",\n \"padding\",\n \"range\",\n \"animate\",\n \"snap\",\n \"step\",\n \"format\",\n \"pips\",\n \"tooltips\",\n \"connect\",\n ];\n // Only change options that we're actually passed to update.\n updateAble.forEach(function (name) {\n // Check for undefined. null removes the value.\n if (optionsToUpdate[name] !== undefined) {\n originalOptions[name] = optionsToUpdate[name];\n }\n });\n var newOptions = testOptions(originalOptions);\n // Load new options into the slider state\n updateAble.forEach(function (name) {\n if (optionsToUpdate[name] !== undefined) {\n options[name] = newOptions[name];\n }\n });\n scope_Spectrum = newOptions.spectrum;\n // Limit, margin and padding depend on the spectrum but are stored outside of it. (#677)\n options.margin = newOptions.margin;\n options.limit = newOptions.limit;\n options.padding = newOptions.padding;\n // Update pips, removes existing.\n if (options.pips) {\n pips(options.pips);\n }\n else {\n removePips();\n }\n // Update tooltips, removes existing.\n if (options.tooltips) {\n tooltips();\n }\n else {\n removeTooltips();\n }\n // Invalidate the current positioning so valueSet forces an update.\n scope_Locations = [];\n valueSet(isSet(optionsToUpdate.start) ? optionsToUpdate.start : v, fireSetEvent);\n // Update connects only if it was set\n if (optionsToUpdate.connect) {\n updateConnectOption();\n }\n }\n function updateConnectOption() {\n // IE supported way of removing children including event handlers\n while (scope_ConnectBase.firstChild) {\n scope_ConnectBase.removeChild(scope_ConnectBase.firstChild);\n }\n // Adding new connects according to the new connect options\n for (var i = 0; i <= options.handles; i++) {\n scope_Connects[i] = addConnect(scope_ConnectBase, options.connect[i]);\n updateConnect(i);\n }\n // re-adding drag events for the new connect elements\n // to ignore the other events we have to negate the 'if (!behaviour.fixed)' check\n bindSliderEvents({ drag: options.events.drag, fixed: true });\n }\n // Invert options for connect handles\n function invertConnects() {\n scope_ConnectsInverted = !scope_ConnectsInverted;\n testConnect(options, \n // inverse the connect boolean array\n options.connect.map(function (b) { return !b; }));\n updateConnectOption();\n }\n // Initialization steps\n function setupSlider() {\n // Create the base element, initialize HTML and set classes.\n // Add handles and connect elements.\n scope_Base = addSlider(scope_Target);\n addElements(options.connect, scope_Base);\n // Attach user events.\n bindSliderEvents(options.events);\n // Use the public value method to set the start values.\n valueSet(options.start);\n if (options.pips) {\n pips(options.pips);\n }\n if (options.tooltips) {\n tooltips();\n }\n aria();\n }\n setupSlider();\n var scope_Self = {\n destroy: destroy,\n steps: getNextSteps,\n on: bindEvent,\n off: removeEvent,\n get: valueGet,\n set: valueSet,\n setHandle: valueSetHandle,\n reset: valueReset,\n disable: disable,\n enable: enable,\n // Exposed for unit testing, don't use this in your application.\n __moveHandles: function (upward, proposal, handleNumbers) {\n moveHandles(upward, proposal, scope_Locations, handleNumbers);\n },\n options: originalOptions,\n updateOptions: updateOptions,\n target: scope_Target,\n removePips: removePips,\n removeTooltips: removeTooltips,\n getPositions: function () {\n return scope_Locations.slice();\n },\n getTooltips: function () {\n return scope_Tooltips;\n },\n getOrigins: function () {\n return scope_Handles;\n },\n pips: pips, // Issue #594\n };\n return scope_Self;\n }\n // Run the standard initializer\n function initialize(target, originalOptions) {\n if (!target || !target.nodeName) {\n throw new Error(\"noUiSlider: create requires a single element, got: \" + target);\n }\n // Throw an error if the slider was already initialized.\n if (target.noUiSlider) {\n throw new Error(\"noUiSlider: Slider was already initialized.\");\n }\n // Test the options and create the slider environment;\n var options = testOptions(originalOptions);\n var api = scope(target, options, originalOptions);\n target.noUiSlider = api;\n return api;\n }\n var nouislider = {\n // Exposed for unit testing, don't use this in your application.\n __spectrum: Spectrum,\n // A reference to the default classes, allows global changes.\n // Use the cssClasses option for changes to one slider.\n cssClasses: cssClasses,\n create: initialize,\n };\n\n exports.create = initialize;\n exports.cssClasses = cssClasses;\n exports[\"default\"] = nouislider;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n", "const uuidv4 = self?.crypto?.randomUUID\n ? function () {\n return self.crypto.randomUUID();\n }\n : function () {\n console.warn('UUIDv4: Running in a non-secure context!');\n function _p8(s) {\n const p = (Math.random().toString(16) + '000000000').substring(2, 10);\n return s ? `-${p.substring(0, 4)}-${p.substring(4, 8)}` : p;\n }\n return _p8() + _p8(true) + _p8(true) + _p8();\n };\n\nexport default uuidv4;\n", "export const Calendar = 0;\nexport const Check = 1;\nexport const ChevronDown = 2;\nexport const ChevronLeft = 3;\nexport const ChevronRight = 4;\nexport const ChevronsLeft = 5;\nexport const ChevronsRight = 6;\nexport const Clock = 7;\nexport const Search = 8;\nexport const Ellipsis = 9;\nexport const Minus = 10;\nexport const Plus = 11;\nexport const Close = 12;\nexport const Bell = 13;\nexport const Trash = 14;\nexport const Mail = 15;\nexport const Send = 16;\nexport const Export = 17;\nexport const Import = 18;\nexport const Edit = 19;\nexport const Menu = 20;\nexport const Reply = 21;\nexport const Refresh = 22;\nexport const CircleInfo = 23;\nexport const CircleWarning = 24;\nexport const CircleError = 25;\nexport const CircleSuccess = 26;\nexport const CircleUnknown = 27;\nexport const CircleUser = 28;\n\nfunction setCalendarContent(svg) {\n const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path.setAttributeNS(\n null,\n 'd',\n 'm5.4512 0.8252c-0.3601 0-0.65039 0.29029-0.65039 0.65039v0.69922h-1.3008c-1.108 0-2 0.892-2 2v9c0 1.108 0.892 2 2 2h9c1.108 0 2-0.892 2-2v-9c0-1.108-0.892-2-2-2h-1.2988v-0.69922c0-0.3601-0.29029-0.65039-0.65039-0.65039s-0.64844 0.29029-0.64844 0.65039v0.69922h-3.8027v-0.69922c0-0.3601-0.28834-0.65039-0.64844-0.65039zm-1.6504 2.6504h1v0.69922c1e-6 0.3601 0.29029 0.65039 0.65039 0.65039s0.64844-0.29029 0.64844-0.65039v-0.69922h3.8027v0.69922c0 0.3601 0.28834 0.65039 0.64844 0.65039s0.65039-0.29029 0.65039-0.65039v-0.69922h1c0.554 0 1 0.446 1 1v1.5h-10.4v-1.5c0-0.554 0.446-1 1-1zm-1 3.8008h10.4v5.5996c0 0.554-0.446 1-1 1h-8.4004c-0.554 0-1-0.446-1-1z'\n );\n svg.appendChild(path);\n}\n\nfunction setCheckContent(svg) {\n const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path.setAttributeNS(\n null,\n 'd',\n 'm12.937 4.049-6.5829 6.5829-3.2935-3.2914c-0.23947-0.23959-0.63055-0.24761-0.87815 0-0.24358 0.2437-0.24358 0.63448 0 0.87815l3.7315 3.7337c0.24646 0.24634 0.64298 0.23729 0.88026 0l7.0228-7.0251c0.24358-0.2437 0.24358-0.63448 0-0.87815-0.2433-0.24342-0.63667-0.24364-0.88026-1.5e-6z'\n );\n svg.appendChild(path);\n}\n\nfunction setChevronDownContent(svg) {\n const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path.setAttributeNS(\n null,\n 'd',\n 'm3.2098 5.353c-0.2797 0.27984-0.2797 0.72853 0 1.0083l4.2848 4.2872c0.283 0.28286 0.73831 0.27246 1.0108 0l4.2848-4.2872c0.2797-0.27984 0.2797-0.72853 0-1.0083-0.2797-0.27984-0.73098-0.27984-1.0108 0l-3.7795 3.7795-3.7818-3.7795c-0.27497-0.27511-0.72404-0.28432-1.0083 0z'\n );\n svg.appendChild(path);\n}\n\nfunction setChevronLeftContent(svg) {\n const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path.setAttributeNS(\n null,\n 'd',\n 'm10.647 12.79c-0.27984 0.2797-0.72853 0.2797-1.0083 0l-4.2872-4.2848c-0.28286-0.283-0.27246-0.73831 0-1.0108l4.2872-4.2848c0.27984-0.2797 0.72853-0.2797 1.0083 0 0.27984 0.2797 0.27984 0.73098 0 1.0108l-3.7795 3.7795 3.7795 3.7818c0.27511 0.27497 0.28432 0.72404 0 1.0083z'\n );\n svg.appendChild(path);\n}\n\nfunction setChevronRightContent(svg) {\n const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path.setAttributeNS(\n null,\n 'd',\n 'm5.353 12.79c0.27984 0.2797 0.72853 0.2797 1.0083 0l4.2872-4.2848c0.28286-0.283 0.27246-0.73831 0-1.0108l-4.2872-4.2848c-0.27984-0.2797-0.72853-0.2797-1.0083 0-0.27984 0.2797-0.27984 0.73098 0 1.0108l3.7795 3.7795-3.7795 3.7818c-0.27511 0.27497-0.28432 0.72404 0 1.0083z'\n );\n svg.appendChild(path);\n}\n\nfunction setChevronsLeftContent(svg) {\n const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path.setAttributeNS(\n null,\n 'd',\n 'm13 3c0.18212 0 0.36302 0.070121 0.50292 0.20996 0.27982 0.27969 0.27982 0.73097 0 1.0108l-3.7794 3.7794 3.7794 3.7819c0.27511 0.27496 0.28432 0.72402 0 1.0083-0.27984 0.27969-0.72852 0.27969-1.0083 0l-4.2872-4.2847c-0.28285-0.283-0.27246-0.7383 0-1.0108l4.2872-4.2847c0.13991-0.13985 0.32325-0.20996 0.50537-0.20996zm-5.7152 0c0.18212 0 0.36547 0.070121 0.50537 0.20996 0.27984 0.27969 0.27984 0.73097 0 1.0108l-3.7794 3.7794 3.7794 3.7819c0.27511 0.27496 0.28432 0.72402 0 1.0083-0.27984 0.27969-0.72852 0.27969-1.0083 0l-4.2872-4.2847c-0.28286-0.283-0.27246-0.7383 0-1.0108l4.2872-4.2847c0.13991-0.13985 0.32081-0.20996 0.50292-0.20996z'\n );\n svg.appendChild(path);\n}\n\nfunction setChevronsRightContent(svg) {\n const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path.setAttributeNS(\n null,\n 'd',\n 'm2.9996 3c-0.18212 0-0.36302 0.070121-0.50292 0.20996-0.27984 0.27969-0.27984 0.73097 0 1.0108l3.7794 3.7794-3.7794 3.7819c-0.27511 0.27496-0.28432 0.72402 0 1.0083 0.27984 0.27969 0.72852 0.27969 1.0083 0l4.2872-4.2847c0.28286-0.283 0.27246-0.7383 0-1.0108l-4.2872-4.2847c-0.13991-0.13985-0.32325-0.20996-0.50537-0.20996zm5.7152 0c-0.18212 0-0.36547 0.070121-0.50537 0.20996-0.27984 0.27969-0.27984 0.73097 0 1.0108l3.7794 3.7794-3.7794 3.7819c-0.27511 0.27496-0.28432 0.72402 0 1.0083 0.27984 0.27969 0.72852 0.27969 1.0083 0l4.2872-4.2847c0.28285-0.283 0.27246-0.7383 0-1.0108l-4.2872-4.2847c-0.13991-0.13985-0.32081-0.20996-0.50292-0.20996z'\n );\n svg.appendChild(path);\n}\n\nfunction setClockContent(svg) {\n const path1 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path1.setAttributeNS(\n null,\n 'd',\n 'm8 0.75a7.25 7.25 0 0 0-7.25 7.25 7.25 7.25 0 0 0 7.25 7.25 7.25 7.25 0 0 0 7.25-7.25 7.25 7.25 0 0 0-7.25-7.25zm0 1.3008a5.95 5.95 0 0 1 5.9492 5.9492 5.95 5.95 0 0 1-5.9492 5.9512 5.95 5.95 0 0 1-5.9492-5.9512 5.95 5.95 0 0 1 5.9492-5.9492z'\n );\n svg.appendChild(path1);\n\n const path2 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path2.setAttributeNS(\n null,\n 'd',\n 'm8 3.25c-0.3601 0-0.65039 0.29029-0.65039 0.65039v4.0996c-4.82e-5 0.2464 0.13303 0.40256 0.20508 0.47461l2.6035 2.6016c0.25463 0.25463 0.66334 0.25463 0.91797 0s0.25463-0.66334 0-0.91797l-2.4258-2.4277v-3.8301c0-0.3601-0.29029-0.65039-0.65039-0.65039z'\n );\n svg.appendChild(path2);\n}\n\nfunction setSearchContent(svg) {\n const path1 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path1.setAttributeNS(\n null,\n 'd',\n 'm7.31 1.31a5.9999 5.9999 0 0 0-5.9999 5.9999 5.9999 5.9999 0 0 0 5.9999 5.9999 5.9999 5.9999 0 0 0 5.9999-5.9999 5.9999 5.9999 0 0 0-5.9999-5.9999zm0 1.1992a4.7999 4.7999 0 0 1 4.8007 4.8007 4.7999 4.7999 0 0 1-4.8007 4.8007 4.7999 4.7999 0 0 1-4.8007-4.8007 4.7999 4.7999 0 0 1 4.8007-4.8007z'\n );\n svg.appendChild(path1);\n\n const path2 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path2.setAttributeNS(\n null,\n 'd',\n 'm10.705 10.705c0.23504-0.23504 0.6286-0.2199 0.88247 0.03394l2.9019 2.9019c0.25384 0.25384 0.26898 0.64742 0.03394 0.88247-0.23504 0.23504-0.6286 0.2199-0.88247-0.03394l-2.9019-2.9019c-0.25384-0.25384-0.26898-0.64742-0.03394-0.88247z'\n );\n svg.appendChild(path2);\n}\n\nfunction setEllipsisContent(svg) {\n const circle1 = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n circle1.setAttributeNS(null, 'cx', '2');\n circle1.setAttributeNS(null, 'cy', '8');\n circle1.setAttributeNS(null, 'r', '1.5');\n svg.appendChild(circle1);\n\n const circle2 = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n circle2.setAttributeNS(null, 'cx', '8');\n circle2.setAttributeNS(null, 'cy', '8');\n circle2.setAttributeNS(null, 'r', '1.5');\n svg.appendChild(circle2);\n\n const circle3 = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n circle3.setAttributeNS(null, 'cx', '14');\n circle3.setAttributeNS(null, 'cy', '8');\n circle3.setAttributeNS(null, 'r', '1.5');\n svg.appendChild(circle3);\n}\n\nfunction setMinusContent(svg) {\n const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path.setAttributeNS(null, 'd', 'm2.75 7.25h10.5c0.4155 0 0.75 0.3345 0.75 0.75s-0.3345 0.75-0.75 0.75h-10.5c-0.4155 0-0.75-0.3345-0.75-0.75s0.3345-0.75 0.75-0.75z');\n svg.appendChild(path);\n}\n\nfunction setPlusContent(svg) {\n const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path.setAttributeNS(\n null,\n 'd',\n 'm8 2c-0.4155 0-0.75 0.3345-0.75 0.75v4.5h-4.5c-0.4155 0-0.75 0.3345-0.75 0.75s0.3345 0.75 0.75 0.75h4.5v4.5c0 0.4155 0.3345 0.75 0.75 0.75s0.75-0.3345 0.75-0.75v-4.5h4.5c0.4155 0 0.75-0.3345 0.75-0.75s-0.3345-0.75-0.75-0.75h-4.5v-4.5c0-0.4155-0.3345-0.75-0.75-0.75z'\n );\n svg.appendChild(path);\n}\n\nfunction setCloseContent(svg) {\n const path1 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path1.setAttributeNS(\n null,\n 'd',\n 'm12.95 3.0503c-0.2938-0.2938-0.76686-0.2938-1.0607 0l-3.8891 3.8891-3.8891-3.8891c-0.2938-0.2938-0.76686-0.2938-1.0607 0-0.2938 0.2938-0.2938 0.76686 0 1.0607l3.8891 3.8891-3.8891 3.8891c-0.2938 0.2938-0.2938 0.76686 0 1.0607 0.2938 0.2938 0.76686 0.2938 1.0607 0l3.8891-3.8891 3.8891 3.8891c0.2938 0.2938 0.76686 0.2938 1.0607 0 0.2938-0.2938 0.2938-0.76686 0-1.0607l-3.8891-3.8891 3.8891-3.8891c0.2938-0.2938 0.2938-0.76686 0-1.0607z'\n );\n svg.appendChild(path1);\n}\n\nfunction setBellContent(svg) {\n const path1 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path1.setAttributeNS(null, 'd', 'm6.7206 13.171c-0.65794 0-0.78791 0.50739-0.53794 0.92414 0.72424 1.2064 2.9155 1.2064 3.6397 0 0.25-0.41678 0.11804-0.92414-0.53794-0.92414z');\n svg.appendChild(path1);\n\n const path2 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path2.setAttributeNS(\n null,\n 'd',\n 'm8.0017 1.0011c-1.4533-0.029274-2.9825 0.51861-3.8425 1.7418-1.0308 1.3944-1.1644 3.1887-1.131 4.8636-0.019737 1.2007-0.5306 2.3761-1.3316 3.2619-0.32199 0.50537 0.16335 1.2079 0.74794 1.108 3.7645-0.0022 7.5293 0.0045 11.294-0.0034 0.60962-0.02615 0.89718-0.87008 0.45127-1.2798-0.84568-0.96782-1.2957-2.2626-1.2151-3.5465 0.026492-1.7605-0.29402-3.6931-1.625-4.9635-0.88559-0.8583-2.141-1.1911-3.3478-1.182zm0 1.2923c1.1918-0.059451 2.4095 0.52351 3.006 1.5756 0.73891 1.2564 0.62867 2.7544 0.66947 4.1572 0.05518 0.93177 0.35347 1.8382 0.78938 2.6591h-8.9282c0.60148-1.0838 0.86112-2.3294 0.80315-3.5635-9.659e-4 -1.4009 0.15123-2.9948 1.2579-3.9921 0.64424-0.60975 1.5307-0.85343 2.4026-0.83627z'\n );\n svg.appendChild(path2);\n}\n\nfunction setTrashContent(svg) {\n const path1 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path1.setAttributeNS(\n null,\n 'd',\n 'm6.5156 6.9909c-0.36016 0-0.65232 0.29024-0.65234 0.65039l2e-3 1.1074v1.4844l-2e-3 1.1074c2.1e-5 0.36015 0.29218 0.65039 0.65234 0.65039 0.18009 0 0.34336-0.07187 0.46094-0.18945 0.11758-0.11758 0.18945-0.28085 0.18945-0.46094v-3.6992c0-0.18009-0.07187-0.34336-0.18945-0.46094-0.11758-0.11758-0.28085-0.18945-0.46094-0.18945z'\n );\n svg.appendChild(path1);\n\n const path2 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path2.setAttributeNS(\n null,\n 'd',\n 'm6.4082 1c-1.0468 0-1.9082 0.86333-1.9082 1.9102v1.0703h-2.2285a0.63636 0.63636 0 0 0-0.63477 0.63672 0.63636 0.63636 0 0 0 0.63477 0.63672h0.63672v7.8379c0 1.0468 0.86333 1.9082 1.9102 1.9082h6.3633c1.0468 0 1.9082-0.86138 1.9082-1.9082v-7.8379h0.63672a0.63636 0.63636 0 0 0 0.63672-0.63672 0.63636 0.63636 0 0 0-0.63672-0.63672h-2.2266v-1.0703c-1e-6 -1.0468-0.86138-1.9102-1.9082-1.9102zm0 1.2734h3.1836c0.35899 0 0.63477 0.27773 0.63477 0.63672v1.0703h-4.4531v-1.0703c0-0.35899 0.27577-0.63672 0.63476-0.63672zm-2.2266 2.9805h7.6367v7.8379c0 0.35899-0.27773 0.63672-0.63672 0.63672h-6.3633c-0.35899 0-0.63672-0.27773-0.63672-0.63672z'\n );\n svg.appendChild(path2);\n\n const path3 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path3.setAttributeNS(\n null,\n 'd',\n 'm9.4853 6.9909c-0.36016 0-0.65232 0.29024-0.65234 0.65039l2e-3 1.1074v1.4844l-2e-3 1.1074c2.1e-5 0.36015 0.29218 0.65039 0.65234 0.65039 0.18009 0 0.34336-0.07187 0.46094-0.18945 0.11758-0.11758 0.18945-0.28085 0.18945-0.46094v-3.6992c0-0.18009-0.07187-0.34336-0.18945-0.46094-0.11758-0.11758-0.28085-0.18945-0.46094-0.18945z'\n );\n svg.appendChild(path3);\n}\n\nfunction setMailContent(svg) {\n const path1 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path1.setAttributeNS(\n null,\n 'd',\n 'm3 2.2725c-1.108 0-2 0.892-2 2v7.4551c0 1.108 0.892 2 2 2h10c1.108 0 2-0.892 2-2v-7.4551c0-1.108-0.892-2-2-2zm0.30078 1.2988h9.3984c0.554 0 1 0.446 1 1l-4.2031 2.7207c-0.46835 0.30545-0.96668 0.57394-1.4961 0.57422-0.52942-2.795e-4 -1.0277-0.26876-1.4961-0.57422l-4.2031-2.7207c0-0.554 0.446-1 1-1zm-1 2.5195 4.2031 2.7227c0.46835 0.30546 0.96668 0.45687 1.4961 0.45703 0.52942-1.57e-4 1.0277-0.15158 1.4961-0.45703l4.2031-2.7227v5.3379c0 0.554-0.446 1-1 1h-9.3984c-0.554 0-1-0.446-1-1z'\n );\n svg.appendChild(path1);\n}\n\nfunction setSendContent(svg) {\n const path1 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path1.setAttributeNS(\n null,\n 'd',\n 'm14.072 1.0638-12.641 4.7555c-0.56634 0.21308-0.56955 1.0125-0.04008 1.2365l5.2444 2.2184 2.2084 5.2144 2e-3 0.0061c0.16229 0.59685 0.99893 0.674 1.2545 0.09819l4.8416-12.619c0.25524-0.64396-0.38635-1.1184-0.86973-0.90981zm-2.4308 2.3427-4.6272 4.5771-3.5491-1.501zm0.96993 0.91983-3.1483 8.2023-1.517-3.5851z'\n );\n svg.appendChild(path1);\n}\n\nfunction setExportContent(svg) {\n const path1 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path1.setAttributeNS(\n null,\n 'd',\n 'm1.6367 8.873a0.6355 0.6355 0 0 0-0.63672 0.63477v3.1816c0 1.0469 0.8614 1.9102 1.9082 1.9102h10.184c1.0468 0 1.9082-0.86329 1.9082-1.9102v-3.1816a0.6355 0.6355 0 0 0-0.63672-0.63477 0.6355 0.6355 0 0 0-0.63476 0.63477v3.1816c0 0.35899-0.27773 0.63672-0.63672 0.63672h-10.184c-0.35899 1e-6 -0.63672-0.27773-0.63672-0.63672v-3.1816a0.6355 0.6355 0 0 0-0.63477-0.63477z'\n );\n svg.appendChild(path1);\n\n const path2 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path2.setAttributeNS(\n null,\n 'd',\n 'm8 1.4004c-0.36016 0-0.65232 0.29024-0.65234 0.65039v6.123l-2.457-2.457c-0.25556-0.25556-0.66436-0.25556-0.91992 0-0.25467 0.25467-0.25658 0.6672-0.00195 0.92188l3.5703 3.5703c0.25408 0.25408 0.66556 0.2542 0.91992 0l3.5703-3.5703c0.25556-0.25556 0.25556-0.66436 0-0.91992-0.25467-0.25467-0.6672-0.25659-0.92188-0.00195l-2.457 2.459v-6.125c0-0.36142-0.28897-0.65039-0.65039-0.65039z'\n );\n svg.appendChild(path2);\n}\n\nfunction setImportContent(svg) {\n const path1 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path1.setAttributeNS(\n null,\n 'd',\n 'm1.6367 8.873a0.6355 0.6355 0 0 0-0.63672 0.63477v3.1816c0 1.0469 0.8614 1.9102 1.9082 1.9102h10.184c1.0468 0 1.9082-0.86329 1.9082-1.9102v-3.1816a0.6355 0.6355 0 0 0-0.63672-0.63477 0.6355 0.6355 0 0 0-0.63476 0.63477v3.1816c0 0.35899-0.27773 0.63672-0.63672 0.63672h-10.184c-0.35899 1e-6 -0.63672-0.27773-0.63672-0.63672v-3.1816a0.6355 0.6355 0 0 0-0.63477-0.63477z'\n );\n svg.appendChild(path1);\n\n const path2 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path2.setAttributeNS(\n null,\n 'd',\n 'm8 10.4c-0.36016 0-0.65232-0.29024-0.65234-0.65039v-6.123l-2.457 2.457c-0.25556 0.25556-0.66436 0.25556-0.91992 0-0.25467-0.25467-0.25658-0.6672-0.00195-0.92187l3.5703-3.5703c0.25408-0.25408 0.66556-0.2542 0.91992 0l3.5703 3.5703c0.25556 0.25556 0.25556 0.66436 0 0.91992-0.25467 0.25467-0.6672 0.25659-0.92188 0.00195l-2.457-2.459v6.125c0 0.36142-0.28897 0.65039-0.65039 0.65039z'\n );\n svg.appendChild(path2);\n}\n\nfunction setEditContent(svg) {\n const path1 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path1.setAttributeNS(\n null,\n 'd',\n 'm13.713 1.5513c-0.73596-0.73596-1.9485-0.73464-2.6845 0.00137l-9.84 9.84c-0.11663 0.11665-0.1879 0.27904-0.18812 0.45726l-1e-7 2.5019c-6.96e-6 0.17354 0.070916 0.33848 0.1895 0.45863 0.12014 0.1186 0.2851 0.1895 0.45863 0.1895h2.5019c0.17854-1e-5 0.34044-0.07132 0.45726-0.18812l9.84-9.84c0.73601-0.73601 0.73733-1.9486 0.0014-2.6845zm-0.8953 0.8953 0.73601 0.73601c0.25239 0.25239 0.25102 0.64153-0.0014 0.89392l-0.75247 0.75249-1.6286-1.6286 0.75249-0.75249c0.25239-0.25239 0.64154-0.25376 0.89393-0.00137zm-2.5417 1.6492 1.6286 1.6286-7.9808 7.9808-1.6286-1.6286z'\n );\n svg.appendChild(path1);\n}\n\nfunction setMenuContent(svg) {\n const path1 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path1.setAttributeNS(null, 'd', 'm2.75 2.6667h10.5c0.4155 0 0.75 0.3345 0.75 0.75s-0.3345 0.75-0.75 0.75h-10.5c-0.4155 0-0.75-0.3345-0.75-0.75s0.3345-0.75 0.75-0.75z');\n svg.appendChild(path1);\n\n const path2 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path2.setAttributeNS(null, 'd', 'm2.75 7.25h10.5c0.4155 0 0.75 0.3345 0.75 0.75s-0.3345 0.75-0.75 0.75h-10.5c-0.4155 0-0.75-0.3345-0.75-0.75s0.3345-0.75 0.75-0.75z');\n svg.appendChild(path2);\n\n const path3 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path3.setAttributeNS(null, 'd', 'm2.75 11.833h10.5c0.4155 0 0.75 0.3345 0.75 0.75s-0.3345 0.75-0.75 0.75h-10.5c-0.4155 0-0.75-0.3345-0.75-0.75s0.3345-0.75 0.75-0.75z');\n svg.appendChild(path3);\n}\n\nfunction setReplyContent(svg) {\n const path1 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path1.setAttributeNS(\n null,\n 'd',\n 'm7.1956 2.0915c-0.17362 0-0.33638 0.0536-0.4883 0.16212l-5.6331 4.3948c-0.21703 0.17363-0.32423 0.38999-0.32423 0.65042-1e-6 0.26044 0.1072 0.47874 0.32423 0.65238l5.6331 4.3948c0.15192 0.10852 0.31468 0.16212 0.4883 0.16212 0.23874 0 0.43882-0.08138 0.60159-0.24415 0.16278-0.16277 0.24415-0.36285 0.24415-0.60159v-1.3575h0.94536c2.2661 0 3.3516 1.6295 4.3674 3.3888 0.11666 0.20206 0.30215 0.21485 0.48245 0.21485 0.21839 0 0.47762-0.15346 0.65628-0.46291 0.33483-0.5924 0.55854-1.215 0.668-1.8653 0.10946-0.65035 0.1175-1.2995 0.02734-1.9435-0.09014-0.64391-0.28195-1.2659-0.57816-1.8712-0.29619-0.60528-0.69702-1.1599-1.1993-1.6622-0.60528-0.60528-1.2885-1.0607-2.0548-1.3634-0.76626-0.30264-1.5493-0.45315-2.3478-0.45315h-0.96684v-1.3497c0-0.23874-0.08138-0.43882-0.24415-0.60159-0.16277-0.16278-0.36285-0.24415-0.60159-0.24415zm-0.4551 1.9825v0.71488h2e-3c-1.91e-4 0.4412 0.35755 0.79894 0.79887 0.79887h1.4669c1.0795 0 2.5837 0.5738 3.4201 1.4102 0.61816 0.61816 1.0403 1.3452 1.2657 2.1759 0.22537 0.83065 0.21539 1.8427-0.0293 2.6798-0.97733-1.6928-2.5629-2.8498-4.678-2.8498h-1.4454c-0.44132-7.2e-5 -0.79906 0.35767-0.79887 0.79887h-2e-3v0.72074l-4.1701-3.2228z'\n );\n svg.appendChild(path1);\n}\n\nfunction setRefreshContent(svg) {\n const path1 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path1.setAttributeNS(\n null,\n 'd',\n 'm7.9707 0.75c-1.0016 0-1.9388 0.18895-2.8164 0.56641-0.87885 0.37799-1.6436 0.8916-2.2949 1.543-0.65124 0.65124-1.1649 1.4202-1.543 2.3086-0.37757 0.88727-0.56641 1.8304-0.56641 2.832s0.18888 1.9448 0.56641 2.832c0.37802 0.88836 0.89173 1.6574 1.543 2.3086 0.65124 0.65124 1.4202 1.1649 2.3086 1.543 0.88727 0.37757 1.8304 0.56641 2.832 0.56641 0.8314 0 1.6239-0.13224 2.3789-0.39648 0.75572-0.26451 1.4452-0.63563 2.0684-1.1172 0.62353-0.48181 1.1617-1.0492 1.6152-1.7012 0.45251-0.65049 0.77222-1.3715 0.96094-2.1641l2e-3 -2e-3 0.04297-0.13281c0.0065-0.0195 0.01172-0.04408 0.01172-0.07617 0-0.1934-0.06474-0.34794-0.19531-0.47852-0.13058-0.13057-0.28317-0.19336-0.47656-0.19336-0.13605 0-0.26917 0.04492-0.40234 0.14258-0.13208 0.09684-0.21022 0.20993-0.24414 0.3457-0.17355 0.65565-0.44381 1.2604-0.81055 1.8105-0.36657 0.54985-0.80651 1.018-1.3184 1.4043-0.51116 0.38578-1.0746 0.69046-1.6914 0.91211-0.61812 0.22216-1.2662 0.33208-1.9415 0.33208-0.8289 0-1.6015-0.15376-2.3164-0.46289-0.71353-0.30856-1.3406-0.73315-1.8809-1.2734-0.54029-0.5403-0.96684-1.1693-1.2754-1.8828-0.30913-0.71489-0.46289-1.4875-0.46289-2.3164-1e-7 -0.8289 0.15389-1.6058 0.46289-2.3301 0.30846-0.72294 0.72874-1.3518 1.2598-1.8828 0.53103-0.53103 1.1599-0.95131 1.8828-1.2598 0.72402-0.30891 1.4907-0.46289 2.3008-0.46289 1.0797 0 2.0859 0.26648 3.0117 0.79688 0.92594 0.53049 1.651 1.2595 2.1719 2.1855l0.06055 0.10742h-3.0117c-0.19448 1e-6 -0.35029 0.06014-0.48047 0.18164-0.12927 0.12065-0.19141 0.26754-0.19141 0.46094 0 0.19339 0.062788 0.34794 0.19336 0.47852 0.13057 0.13057 0.28512 0.19336 0.47852 0.19336h4.375c0.1934 0 0.34794-0.06279 0.47852-0.19336 0.13057-0.13057 0.19336-0.28512 0.19336-0.47852v-4.375c0-0.1934-0.06279-0.34794-0.19336-0.47852-0.13057-0.13057-0.28512-0.19336-0.47852-0.19336-0.19339 0-0.34029 0.06214-0.46094 0.19141-0.12151 0.13018-0.18164 0.28598-0.18164 0.48047v2.3613l-0.12891-0.17383c-0.67984-0.90645-1.533-1.6088-2.5625-2.1094-1.0298-0.50071-2.1207-0.75-3.2734-0.75z'\n );\n svg.appendChild(path1);\n}\n\nconst circlePath =\n 'M 8,0.75000006 A 7.25,7.25 0 0 0 0.75,8 7.25,7.25 0 0 0 8,15.25 7.25,7.25 0 0 0 15.25,8 7.25,7.25 0 0 0 8,0.75000006 Z M 8,2.0508 A 5.95,5.95 0 0 1 13.9492,8 5.95,5.95 0 0 1 8,13.9512 5.95,5.95 0 0 1 2.0508,8 5.95,5.95 0 0 1 8,2.0508 Z';\n\nfunction setCircleInfoContent(svg) {\n const path1 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path1.setAttributeNS(null, 'd', 'm8 7.207c-0.36016 0-0.6505 0.29034-0.6505 0.6505v2.8306c0 0.36016 0.29034 0.6505 0.6505 0.6505 0.36016 0 0.6505-0.29034 0.6505-0.6505v-2.8306c0-0.36016-0.29034-0.6505-0.6505-0.6505z');\n svg.appendChild(path1);\n\n const circle1 = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n circle1.setAttributeNS(null, 'cx', '8.0032');\n circle1.setAttributeNS(null, 'cy', '5.4545');\n circle1.setAttributeNS(null, 'r', '.6505');\n svg.appendChild(circle1);\n\n const path2 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path2.setAttributeNS(null, 'd', circlePath);\n svg.appendChild(path2);\n}\n\nfunction setCircleWarningContent(svg) {\n const path1 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path1.setAttributeNS(null, 'd', 'm8.0016 4.7327c-0.36016 0-0.6505 0.29034-0.6505 0.6505v2.8306c0 0.36016 0.29034 0.6505 0.6505 0.6505s0.6505-0.29034 0.6505-0.6505v-2.8306c0-0.36016-0.29034-0.6505-0.6505-0.6505z');\n svg.appendChild(path1);\n\n const circle1 = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n circle1.setAttributeNS(null, 'cx', '7.9984');\n circle1.setAttributeNS(null, 'cy', '10.617');\n circle1.setAttributeNS(null, 'r', '.6505');\n svg.appendChild(circle1);\n\n const path2 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path2.setAttributeNS(null, 'd', circlePath);\n svg.appendChild(path2);\n}\n\nfunction setCircleErrorContent(svg) {\n const path1 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path1.setAttributeNS(null, 'd', circlePath);\n svg.appendChild(path1);\n\n const path2 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path2.setAttributeNS(\n null,\n 'd',\n 'm6.0166 5.3645c-0.16628 0-0.3336 0.06407-0.46094 0.19141-0.25467 0.25467-0.25465 0.6672 0 0.92188l1.5234 1.5215-1.5234 1.5234c-0.25467 0.25467-0.25469 0.6672 0 0.92187 0.25467 0.25467 0.66525 0.25467 0.91992 0l1.5234-1.5234 1.5234 1.5234c0.25467 0.25467 0.6672 0.25469 0.92187 0 0.25467-0.25467 0.25467-0.66525 0-0.91992l-1.5234-1.5234 1.5234-1.5234c0.25467-0.25467 0.25467-0.66525 0-0.91992-0.25467-0.25467-0.6672-0.2566-0.92187-2e-3l-1.5234 1.5234-1.5234-1.5234c-0.12734-0.12734-0.2927-0.19141-0.45898-0.19141z'\n );\n svg.appendChild(path2);\n}\n\nfunction setCircleSuccessContent(svg) {\n const path1 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path1.setAttributeNS(null, 'd', circlePath);\n svg.appendChild(path1);\n\n const path2 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path2.setAttributeNS(\n null,\n 'd',\n 'm10.524 5.757c-0.16628 1e-6 -0.3336 0.06407-0.46094 0.19141l-2.7207 2.7227-1.1309-1.1328c-0.25467-0.25467-0.66525-0.25467-0.91992 0-0.25467 0.25467-0.25658 0.6672-0.00195 0.92188l1.5918 1.5918c0.25467 0.25467 0.66525 0.25463 0.91992 0l3.1836-3.1836c0.25465-0.25467 0.25274-0.66525-2e-3 -0.91992-0.12734-0.12734-0.2927-0.19141-0.45898-0.19141z'\n );\n svg.appendChild(path2);\n}\n\nfunction setCircleUnknownContent(svg) {\n const path1 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path1.setAttributeNS(null, 'd', circlePath);\n svg.appendChild(path1);\n\n const path2 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path2.setAttributeNS(\n null,\n 'd',\n 'm8.0273 4.6844c-1.0807 0-1.8911 0.80753-1.8911 1.8654 0 0.2914 0.26536 0.55114 0.5572 0.55114 0.29183 0 0.55265-0.26874 0.55265-0.55114 0-0.25055 0.077134-0.43674 0.20289-0.56477 0.12576-0.12802 0.30885-0.21046 0.57839-0.21046 0.47844 0 0.72678 0.28654 0.72678 0.6541 0 0.27054-0.069541 0.42451-0.19381 0.58748-0.12338 0.16181-0.31514 0.32247-0.52843 0.52843-0.38485 0.36029-0.59051 0.86593-0.59051 1.3218 0 0.29183 0.25827 0.56628 0.55871 0.56628 0.30044 0 0.55871-0.27445 0.55871-0.56628 0-0.18611 0.052582-0.44507 0.24226-0.61625l0.00151-0.0015h0.00151c0.25623-0.23652 0.51176-0.45141 0.71618-0.72981 0.20442-0.27839 0.3437-0.62946 0.3437-1.0629 0-1.0019-0.8073-1.7715-1.8366-1.7715z'\n );\n svg.appendChild(path2);\n\n const circle1 = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n circle1.setAttributeNS(null, 'cx', '8');\n circle1.setAttributeNS(null, 'cy', '10.665');\n circle1.setAttributeNS(null, 'r', '.6505');\n svg.appendChild(circle1);\n}\n\nfunction setCircleUserContent(svg) {\n const path1 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path1.setAttributeNS(\n null,\n 'd',\n 'm8 0.75a7.25 7.25 0 0 0-7.25 7.25 7.25 7.25 0 0 0 7.25 7.25 7.25 7.25 0 0 0 7.25-7.25 7.25 7.25 0 0 0-7.25-7.25zm0 1.3008a5.95 5.95 0 0 1 5.9492 5.9492 5.95 5.95 0 0 1-1.3965 3.832c-0.32045-0.54275-0.75894-0.96968-1.3125-1.2793-0.55697-0.31152-1.1549-0.4668-1.7969-0.4668h-2.8867c-0.64193 0-1.2399 0.15527-1.7969 0.4668-0.55356 0.30962-0.99205 0.73654-1.3125 1.2793a5.95 5.95 0 0 1-1.3965-3.832 5.95 5.95 0 0 1 5.9492-5.9492zm-1.4453 9.334h2.8906c0.45252 2.79e-4 0.86077 0.12397 1.2285 0.36914 0.23059 0.15372 0.52694 0.36032 0.82812 1.0566a5.95 5.95 0 0 1-3.502 1.1406 5.95 5.95 0 0 1-3.502-1.1406c0.30119-0.69632 0.59754-0.90292 0.82812-1.0566 0.36775-0.24517 0.776-0.36886 1.2285-0.36914z'\n );\n svg.appendChild(path1);\n\n const path2 = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path2.setAttributeNS(\n null,\n 'd',\n 'm8 3.555a2.719 2.719 0 0 0-2.7188 2.7188 2.719 2.719 0 0 0 2.7188 2.7188 2.719 2.719 0 0 0 2.7188-2.7188 2.719 2.719 0 0 0-2.7188-2.7188zm0 1.3008a1.4182 1.4182 0 0 1 1.418 1.418 1.4182 1.4182 0 0 1-1.418 1.418 1.4182 1.4182 0 0 1-1.418-1.418 1.4182 1.4182 0 0 1 1.418-1.418z'\n );\n svg.appendChild(path2);\n}\n\nexport function createSvg({ icon, classes = 'size-4', attrs } = {}) {\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttributeNS(null, 'width', '16');\n svg.setAttributeNS(null, 'height', '16');\n svg.setAttributeNS(null, 'viewBox', '0 0 16 16');\n svg.setAttributeNS(null, 'fill', 'currentColor');\n svg.setAttributeNS(null, 'class', classes);\n\n if (attrs) {\n for (const [key, value] of Object.entries(attrs)) {\n svg.setAttributeNS(null, key, value);\n }\n }\n\n switch (icon) {\n case Calendar:\n setCalendarContent(svg);\n break;\n case Check:\n setCheckContent(svg);\n break;\n case ChevronDown:\n setChevronDownContent(svg);\n break;\n case ChevronLeft:\n setChevronLeftContent(svg);\n break;\n case ChevronRight:\n setChevronRightContent(svg);\n break;\n case ChevronsLeft:\n setChevronsLeftContent(svg);\n break;\n case ChevronsRight:\n setChevronsRightContent(svg);\n break;\n case Clock:\n setClockContent(svg);\n break;\n case Search:\n setSearchContent(svg);\n break;\n case Ellipsis:\n setEllipsisContent(svg);\n break;\n case Minus:\n setMinusContent(svg);\n break;\n case Plus:\n setPlusContent(svg);\n break;\n case Close:\n setCloseContent(svg);\n break;\n case Bell:\n setBellContent(svg);\n break;\n case Trash:\n setTrashContent(svg);\n break;\n case Mail:\n setMailContent(svg);\n break;\n case Send:\n setSendContent(svg);\n break;\n case Export:\n setExportContent(svg);\n break;\n case Import:\n setImportContent(svg);\n break;\n case Edit:\n setEditContent(svg);\n break;\n case Menu:\n setMenuContent(svg);\n break;\n case Reply:\n setReplyContent(svg);\n break;\n case Refresh:\n setRefreshContent(svg);\n break;\n case CircleInfo:\n setCircleInfoContent(svg);\n break;\n case CircleWarning:\n setCircleWarningContent(svg);\n break;\n case CircleError:\n setCircleErrorContent(svg);\n break;\n case CircleSuccess:\n setCircleSuccessContent(svg);\n break;\n case CircleUnknown:\n setCircleUnknownContent(svg);\n break;\n case CircleUser:\n setCircleUserContent(svg);\n break;\n default:\n break;\n }\n\n return svg;\n}\n\nexport function setSvgContent(svg, icon) {\n svg.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n svg.setAttribute('width', '100%');\n svg.setAttribute('height', '100%');\n svg.setAttribute('viewBox', '0 0 16 16');\n svg.setAttribute('fill', 'currentColor');\n\n switch (icon) {\n case 'calendar':\n setCalendarContent(svg);\n break;\n case 'check':\n setCheckContent(svg);\n break;\n case 'chevron-down':\n setChevronDownContent(svg);\n break;\n case 'chevron-left':\n setChevronLeftContent(svg);\n break;\n case 'chevron-right':\n setChevronRightContent(svg);\n break;\n case 'chevrons-left':\n setChevronsLeftContent(svg);\n break;\n case 'chevrons-right':\n setChevronsRightContent(svg);\n break;\n case 'clock':\n setClockContent(svg);\n break;\n case 'search':\n setSearchContent(svg);\n break;\n case 'ellipsis':\n setEllipsisContent(svg);\n break;\n case 'minus':\n setMinusContent(svg);\n break;\n case 'plus':\n setPlusContent(svg);\n break;\n case 'close':\n setCloseContent(svg);\n break;\n case 'bell':\n setBellContent(svg);\n break;\n case 'trash':\n setTrashContent(svg);\n break;\n case 'mail':\n setMailContent(svg);\n break;\n case 'send':\n setSendContent(svg);\n break;\n case 'export':\n setExportContent(svg);\n break;\n case 'import':\n setImportContent(svg);\n break;\n case 'edit':\n setEditContent(svg);\n break;\n case 'menu':\n setMenuContent(svg);\n break;\n case 'reply':\n setReplyContent(svg);\n break;\n case 'refresh':\n setRefreshContent(svg);\n break;\n case 'circle-info':\n setCircleInfoContent(svg);\n break;\n case 'circle-warning':\n setCircleWarningContent(svg);\n break;\n case 'circle-error':\n setCircleErrorContent(svg);\n break;\n case 'circle-success':\n setCircleSuccessContent(svg);\n break;\n case 'circle-unknown':\n setCircleUnknownContent(svg);\n break;\n case 'circle-user':\n setCircleUserContent(svg);\n break;\n default:\n break;\n }\n}\n", "import uuidv4 from '../utils/uuid';\nimport { ChevronDown, createSvg } from './../common/icons';\nexport default function (Alpine) {\n Alpine.directive('h-accordion', (el, { expression, modifiers }, { Alpine }) => {\n el._h_accordion = modifiers.includes('single')\n ? Alpine.reactive({\n single: true,\n expandedId: expression ?? '',\n })\n : { single: false };\n el.setAttribute('data-slot', 'accordion');\n });\n\n Alpine.directive('h-accordion-item', (el, { original, expression, modifiers }, { Alpine }) => {\n const accordion = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_accordion'));\n\n if (!accordion) {\n throw new Error(`${original} must be inside an accordion`);\n }\n\n el.classList.add('border-b', 'last:border-b-0');\n el.setAttribute('data-slot', 'accordion-item');\n\n const itemId = expression ?? `ha${uuidv4()}`;\n\n function getIsExpanded() {\n if (accordion._h_accordion.single) {\n if (accordion._h_accordion.expandedId !== '') {\n return accordion._h_accordion.expandedId === itemId;\n } else if (modifiers.includes('default')) {\n accordion._h_accordion.expandedId = itemId;\n return true;\n }\n return false;\n }\n return modifiers.includes('default');\n }\n\n el._h_accordionItem = Alpine.reactive({\n id: itemId,\n controls: `ha${uuidv4()}`,\n expanded: getIsExpanded(),\n });\n });\n\n Alpine.directive('h-accordion-trigger', (el, { original, expression }, { effect, evaluateLater, Alpine, cleanup }) => {\n if (el.tagName.length !== 2 && !el.tagName.startsWith('H')) {\n throw new Error(`${original} must be a header element`);\n }\n const accordion = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_accordion'));\n\n const accordionItem = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_accordionItem'));\n\n if (!accordionItem || !accordion) {\n throw new Error(`${original} must have an accordion and accordion item parent elements`);\n }\n\n el.classList.add('flex', 'h-12', 'min-h-12', '[[data-size=md]_&]:h-10', '[[data-size=md]_&]:min-h-10', '[[data-size=sm]_&]:h-8', '[[data-size=sm]_&]:min-h-8');\n el.setAttribute('tabIndex', '-1');\n\n const getLabel = evaluateLater(expression);\n\n const chevronDown = createSvg({\n icon: ChevronDown,\n classes: 'text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform motion-reduce:transition-none duration-200',\n attrs: {\n 'aria-hidden': true,\n role: 'presentation',\n },\n });\n\n const button = document.createElement('button');\n button.setAttribute('type', 'button');\n button.setAttribute('tabIndex', '0');\n button.setAttribute('data-slot', 'accordion-trigger');\n button.classList.add(\n 'focus-visible:border-ring',\n 'focus-visible:ring-ring/50',\n 'flex',\n 'flex-1',\n 'items-center',\n 'justify-between',\n 'gap-4',\n 'text-left',\n 'text-sm',\n 'font-medium',\n 'transition-all',\n 'motion-reduce:transition-none',\n 'outline-none',\n 'hover:underline',\n 'focus-visible:ring-[calc(var(--spacing)*0.75)]',\n 'disabled:pointer-events-none',\n 'disabled:opacity-50',\n '[&[aria-expanded=true]>svg]:rotate-180'\n );\n el.appendChild(button);\n\n effect(() => {\n getLabel((label) => {\n button.innerText = label;\n button.appendChild(chevronDown);\n });\n });\n\n button.setAttribute('id', accordionItem._h_accordionItem.id);\n button.setAttribute('aria-controls', accordionItem._h_accordionItem.controls);\n\n const setAttributes = () => {\n button.setAttribute('aria-expanded', accordionItem._h_accordionItem.expanded);\n };\n\n const handler = () => {\n accordionItem._h_accordionItem.expanded = !accordionItem._h_accordionItem.expanded;\n setAttributes();\n if (accordion._h_accordion.single) {\n accordion._h_accordion.expandedId = accordionItem._h_accordionItem.id;\n }\n };\n setAttributes();\n\n el.addEventListener('click', handler);\n\n cleanup(() => {\n el.removeEventListener('click', handler);\n });\n\n if (accordion._h_accordion.single) {\n effect(() => {\n if (accordion._h_accordion.expandedId !== accordionItem._h_accordionItem.id) {\n accordionItem._h_accordionItem.expanded = false;\n setAttributes();\n }\n });\n }\n });\n\n Alpine.directive('h-accordion-content', (el, _, { effect, cleanup, Alpine }) => {\n el.classList.add('pb-0', 'overflow-hidden', 'text-sm', 'hidden', 'transition-[opacity,max-height,padding-bottom]', 'motion-reduce:transition-none', 'duration-200', 'ease-out', 'opacity-0');\n el.setAttribute('data-slot', 'accordion-content');\n const parent = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_accordionItem'));\n if (parent) {\n el.setAttribute('id', parent._h_accordionItem.controls);\n el.setAttribute('aria-labelledby', parent._h_accordionItem.id);\n effect(() => {\n if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) {\n el.style.removeProperty('max-height');\n if (parent._h_accordionItem.expanded) {\n el.classList.add('pb-4', '[[data-size=md]_&]:pb-3', '[[data-size=sm]_&]:pb-2');\n el.classList.remove('hidden', 'pb-0', 'opacity-0');\n } else {\n el.classList.add('hidden', 'pb-0', 'opacity-0');\n el.classList.remove('pb-4', '[[data-size=md]_&]:pb-3', '[[data-size=sm]_&]:pb-2');\n }\n } else if (parent._h_accordionItem.expanded) {\n if (el.classList.contains('hidden')) {\n el.classList.add('pb-4', '[[data-size=md]_&]:pb-3', '[[data-size=sm]_&]:pb-2');\n el.classList.remove('hidden', 'pb-0');\n Alpine.nextTick(() => {\n el.style.maxHeight = `${el.scrollHeight}px`;\n el.classList.remove('opacity-0');\n });\n }\n } else {\n el.style.maxHeight = '0px';\n el.classList.add('opacity-0', 'pb-0');\n el.classList.remove('pb-4', '[[data-size=md]_&]:pb-3', '[[data-size=sm]_&]:pb-2');\n }\n });\n\n function onTransitionEnd(event) {\n if (event.target === el && event.target.classList.contains('opacity-0')) {\n el.classList.add('hidden');\n }\n }\n\n el.addEventListener('transitionend', onTransitionEnd);\n\n cleanup(() => {\n el.removeEventListener('transitionend', onTransitionEnd);\n });\n }\n });\n}\n", "export default function (Alpine) {\n Alpine.directive('h-alert', (el, { modifiers }, { cleanup }) => {\n el.classList.add(\n 'relative',\n 'w-full',\n 'rounded-lg',\n 'bg-card',\n 'border',\n 'px-3',\n 'py-2',\n 'text-sm',\n 'grid',\n 'has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr_auto]',\n 'grid-cols-[0_1fr_auto]',\n 'has-[>svg]:gap-x-3',\n 'gap-y-0.5',\n 'items-center',\n '[&>svg]:size-4',\n '[&>svg]:text-current',\n modifiers.includes('floating') ? 'shadow-lg' : undefined\n );\n el.setAttribute('data-slot', 'alert');\n el.setAttribute('role', 'alert');\n\n const variants = {\n default: ['text-foreground'],\n positive: ['text-positive'],\n negative: ['text-negative'],\n warning: ['text-warning'],\n information: ['text-information'],\n };\n\n function setVariant(variant) {\n for (const [_, value] of Object.entries(variants)) {\n el.classList.remove(...value);\n }\n if (Object.prototype.hasOwnProperty.call(variants, variant)) el.classList.add(...variants[variant]);\n }\n\n setVariant(el.getAttribute('data-variant') ?? 'default');\n\n const observer = new MutationObserver(() => {\n setVariant(el.getAttribute('data-variant') ?? 'default');\n });\n\n observer.observe(el, { attributes: true, attributeFilter: ['data-variant'] });\n\n cleanup(() => {\n observer.disconnect();\n });\n });\n\n Alpine.directive('h-alert-title', (el) => {\n el.classList.add('col-start-2', 'line-clamp-1', 'min-h-4', 'font-medium', 'tracking-tight');\n el.setAttribute('data-slot', 'alert-title');\n });\n\n Alpine.directive('h-alert-description', (el) => {\n el.classList.add('text-muted-foreground', 'col-start-2', 'vbox', 'gap-1', 'text-sm', '[&_p]:leading-relaxed');\n el.setAttribute('data-slot', 'alert-description');\n });\n\n Alpine.directive('h-alert-actions', (el) => {\n el.classList.add('col-start-3', 'row-start-1');\n el.setAttribute('data-slot', 'alert-actions');\n });\n}\n", "export function classListStartsWith(classList, term) {\n for (let i = 0; i < classList.length; i++) {\n if (classList.item(i).startsWith(term)) {\n return true;\n }\n }\n return false;\n}\n", "import { classListStartsWith } from '../common/class-list';\nexport default function (Alpine) {\n Alpine.directive('h-avatar', (el, _, { Alpine }) => {\n if (!classListStartsWith(el.classList, 'rounded')) {\n el.classList.add('rounded-full');\n }\n el.classList.add(\n 'relative',\n 'bg-secondary',\n 'text-secondary-foreground',\n 'fill-secondary-foreground',\n '[[data-slot=toolbar]:not([data-variant=transparent])>&]:border',\n 'data-[variant=\"information\"]:bg-information/10',\n 'data-[variant=\"information\"]:text-information',\n 'data-[variant=\"information\"]:border-information',\n '[&[data-variant=\"information\"]>svg]:fill-information',\n 'data-[variant=\"warning\"]:bg-warning/10',\n 'data-[variant=\"warning\"]:text-warning',\n 'data-[variant=\"warning\"]:border-warning',\n '[&[data-variant=\"warning\"]>svg]:fill-warning',\n 'data-[variant=\"positive\"]:bg-positive/10',\n 'data-[variant=\"positive\"]:text-positive',\n 'data-[variant=\"positive\"]:border-positive',\n '[&[data-variant=\"positive\"]>svg]:fill-positive',\n 'data-[variant=\"negative\"]:bg-negative/10',\n 'data-[variant=\"negative\"]:text-negative',\n 'data-[variant=\"negative\"]:border-negative',\n '[&[data-variant=\"negative\"]>svg]:fill-negative',\n 'has-[img]:border-0',\n 'flex',\n 'size-8',\n 'aspect-square',\n 'shrink-0',\n 'items-center',\n 'justify-center',\n 'text-sm',\n '[&>svg]:size-5'\n );\n el.setAttribute('data-slot', 'avatar');\n el._h_avatar = Alpine.reactive({\n fallback: false,\n });\n if (el.tagName === 'BUTTON') {\n el.classList.add('cursor-pointer', 'hover:bg-secondary-hover', 'active:bg-secondary-active');\n }\n });\n\n Alpine.directive('h-avatar-image', (el, { original }, { cleanup }) => {\n const avatar = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_avatar'));\n if (!avatar) {\n throw new Error(`${original} must be inside an avatar element`);\n }\n\n el.classList.add('aspect-square', 'size-full', 'rounded-[inherit]');\n el.setAttribute('data-slot', 'avatar-image');\n el.setAttribute('role', 'img');\n\n let interval;\n\n function fallback(active = false) {\n if (active) el.classList.add('hidden');\n else el.classList.remove('hidden');\n avatar._h_avatar.fallback = active;\n }\n\n function completeCheck() {\n if (el.complete) {\n clearInterval(interval);\n fallback(el.naturalHeight === 0);\n }\n }\n\n if (el.complete && el.naturalHeight === 0) {\n fallback(true);\n } else {\n interval = setInterval(completeCheck, 10);\n }\n\n const observer = new MutationObserver(() => {\n interval = setInterval(completeCheck, 10);\n });\n\n observer.observe(el, { attributes: true, attributeFilter: ['src'] });\n\n cleanup(() => {\n if (interval) clearInterval(interval);\n observer.disconnect();\n });\n });\n\n Alpine.directive('h-avatar-fallback', (el, { original }, { effect }) => {\n const avatar = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_avatar'));\n if (!avatar) {\n throw new Error(`${original} must be inside an avatar element`);\n }\n\n el.classList.add('hidden', 'bg-muted', 'flex', 'size-full', 'items-center', 'justify-center', 'rounded-[inherit]');\n el.setAttribute('data-slot', 'avatar-fallback');\n\n effect(() => {\n if (avatar._h_avatar.fallback) el.classList.remove('hidden');\n else el.classList.add('hidden');\n });\n });\n}\n", "export default function (Alpine) {\n Alpine.directive('h-badge', (el, _, { cleanup }) => {\n el.classList.add(\n '[a&]:cursor-pointer',\n 'inline-flex',\n 'items-center',\n 'justify-center',\n 'rounded-full',\n 'border',\n 'px-2',\n 'py-0.5',\n 'text-xs',\n 'font-medium',\n 'w-fit',\n 'whitespace-nowrap',\n 'shrink-0',\n '[&>svg]:size-3',\n 'gap-1',\n '[&>svg]:pointer-events-none',\n 'focus-visible:border-ring',\n 'focus-visible:ring-ring/50',\n 'focus-visible:ring-[calc(var(--spacing)*0.75)]',\n 'transition-colors',\n 'transition-shadow',\n 'motion-reduce:transition-none',\n 'overflow-hidden'\n );\n el.setAttribute('data-slot', 'badge');\n const variants = {\n default: ['border-transparent', 'bg-secondary', 'text-secondary-foreground', '[a&]:hover:bg-secondary-hover', '[a&]:active:bg-secondary-active'],\n primary: ['border-transparent', 'bg-primary', 'text-primary-foreground', '[a&]:hover:bg-primary-hover', '[a&]:active:bg-primary-active'],\n positive: ['border-transparent', 'bg-positive', 'text-positive-foreground', '[a&]:hover:bg-positive-hover', '[a&]:active:bg-positive-active'],\n negative: ['border-transparent', 'bg-negative', 'text-negative-foreground', '[a&]:hover:bg-negative-hover', '[a&]:active:bg-negative-active'],\n warning: ['border-transparent', 'bg-warning', 'text-warning-foreground', '[a&]:hover:bg-warning-hover', '[a&]:active:bg-warning-active'],\n information: ['border-transparent', 'bg-information', 'text-information-foreground', '[a&]:hover:bg-information-hover', '[a&]:active:bg-information-active'],\n outline: ['bg-transparent', 'text-foreground', '[a&]:hover:bg-secondary', '[a&]:hover:text-secondary-foreground', '[a&]:active:bg-secondary-active'],\n };\n\n function setVariant(variant) {\n for (const [_, value] of Object.entries(variants)) {\n el.classList.remove(...value);\n }\n if (Object.prototype.hasOwnProperty.call(variants, variant)) el.classList.add(...variants[variant]);\n }\n\n setVariant(el.getAttribute('data-variant') ?? 'default');\n\n const observer = new MutationObserver(() => {\n setVariant(el.getAttribute('data-variant') ?? 'default');\n });\n\n observer.observe(el, { attributes: true, attributeFilter: ['data-variant'] });\n\n cleanup(() => {\n observer.disconnect();\n });\n });\n\n Alpine.directive('h-badge-indicator', (el, _, { cleanup }) => {\n el.classList.add(\n 'absolute',\n '-end-1',\n '-top-1',\n '[.rounded-full>&]:end-0',\n '[.rounded-full>&]:top-0',\n 'inline-flex',\n 'h-4',\n 'min-w-4',\n 'items-center',\n 'justify-center',\n 'rounded-full',\n 'py-0.5',\n 'px-1',\n 'text-xs',\n 'font-bold',\n 'leading-none',\n 'transform-gpu',\n 'data-[dot=true]:p-0',\n 'data-[dot=true]:min-w-3',\n 'data-[dot=true]:h-3',\n 'data-[ping=true]:before:absolute',\n 'data-[ping=true]:before:inline-flex',\n 'data-[ping=true]:before:w-full',\n 'data-[ping=true]:before:h-full',\n 'data-[ping=true]:before:rounded-full',\n 'data-[ping=true]:before:opacity-75',\n 'data-[ping=true]:before:animate-ping'\n );\n el.setAttribute('data-slot', 'badge-indicator');\n const variants = {\n primary: ['bg-primary', 'text-primary-foreground', 'data-[ping=true]:before:bg-primary'],\n positive: ['bg-positive', 'text-positive-foreground', 'data-[ping=true]:before:bg-positive'],\n negative: ['bg-negative', 'text-negative-foreground', 'data-[ping=true]:before:bg-negative'],\n warning: ['bg-warning', 'text-warning-foreground', 'data-[ping=true]:before:bg-warning'],\n information: ['bg-information', 'text-information-foreground', 'data-[ping=true]:before:bg-information'],\n };\n\n function setVariant(variant) {\n for (const [_, value] of Object.entries(variants)) {\n el.classList.remove(...value);\n }\n if (Object.prototype.hasOwnProperty.call(variants, variant)) el.classList.add(...variants[variant]);\n }\n\n setVariant(el.getAttribute('data-variant') ?? 'primary');\n\n const observer = new MutationObserver(() => {\n setVariant(el.getAttribute('data-variant') ?? 'primary');\n });\n\n observer.observe(el, { attributes: true, attributeFilter: ['data-variant'] });\n\n cleanup(() => {\n observer.disconnect();\n });\n });\n}\n", "export const buttonVariants = {\n default: [\n 'bg-secondary',\n 'text-secondary-foreground',\n 'fill-secondary-foreground',\n 'shadow-button',\n 'hover:bg-secondary-hover',\n 'active:bg-secondary-active',\n 'aria-pressed:bg-secondary-active',\n 'active:data-[toggled=true]:bg-secondary-active',\n 'hover:data-[toggled=true]:bg-secondary-hover',\n 'data-[toggled=true]:bg-secondary-active',\n ],\n primary: [\n 'bg-primary',\n 'text-primary-foreground',\n 'fill-primary-foreground',\n 'shadow-button',\n 'focus-visible:outline-primary/50',\n 'hover:bg-primary-hover',\n 'active:bg-primary-active',\n 'aria-pressed:bg-primary-active',\n 'active:data-[toggled=true]:bg-primary-active',\n 'hover:data-[toggled=true]:bg-primary-hover',\n 'data-[toggled=true]:bg-primary-active',\n ],\n positive: [\n 'bg-positive',\n 'text-positive-foreground',\n 'fill-positive-foreground',\n 'shadow-button',\n 'focus-visible:outline-positive/50',\n 'hover:bg-positive-hover',\n 'active:bg-positive-active',\n 'aria-pressed:bg-positive-active',\n 'active:data-[toggled=true]:bg-positive-active',\n 'hover:data-[toggled=true]:bg-positive-hover',\n 'data-[toggled=true]:bg-positive-active',\n ],\n negative: [\n 'bg-negative',\n 'text-negative-foreground',\n 'fill-negative-foreground',\n 'shadow-button',\n 'focus-visible:outline-negative/50',\n 'hover:bg-negative-hover',\n 'active:bg-negative-active',\n 'aria-pressed:bg-negative-active',\n 'active:data-[toggled=true]:bg-negative-active',\n 'hover:data-[toggled=true]:bg-negative-hover',\n 'data-[toggled=true]:bg-negative-active',\n ],\n warning: [\n 'bg-warning',\n 'text-warning-foreground',\n 'fill-warning-foreground',\n 'shadow-button',\n 'focus-visible:outline-warning/50',\n 'hover:bg-warning-hover',\n 'active:bg-warning-active',\n 'aria-pressed:bg-warning-active',\n 'active:data-[toggled=true]:bg-warning-active',\n 'hover:data-[toggled=true]:bg-warning-hover',\n 'data-[toggled=true]:bg-warning-active',\n ],\n information: [\n 'bg-information',\n 'text-information-foreground',\n 'fill-information-foreground',\n 'shadow-button',\n 'focus-visible:outline-information/50',\n 'hover:bg-information-hover',\n 'active:bg-information-active',\n 'aria-pressed:bg-information-active',\n 'active:data-[toggled=true]:bg-information-active',\n 'hover:data-[toggled=true]:bg-information-hover',\n 'data-[toggled=true]:bg-information-active',\n ],\n outline: [\n 'border',\n 'bg-background',\n 'text-foreground',\n 'fill-foreground',\n 'hover:bg-secondary',\n 'hover:text-secondary-foreground',\n 'hover:fill-secondary-foreground',\n 'active:bg-secondary-active',\n 'active:text-secondary-foreground',\n 'active:fill-secondary-foreground',\n 'aria-pressed:bg-secondary-active',\n 'aria-pressed:text-secondary-foreground',\n 'aria-pressed:fill-secondary-foreground',\n 'active:data-[toggled=true]:bg-secondary-active',\n 'active:data-[toggled=true]:text-secondary-foreground',\n 'active:data-[toggled=true]:fill-secondary-foreground',\n 'hover:data-[toggled=true]:bg-secondary-hover',\n 'hover:data-[toggled=true]:text-secondary-foreground',\n 'hover:data-[toggled=true]:fill-secondary-foreground',\n 'data-[toggled=true]:bg-secondary-active',\n 'data-[toggled=true]:text-secondary-foreground',\n 'data-[toggled=true]:fill-secondary-foreground',\n ],\n transparent: [\n 'bg-transparent',\n 'text-foreground',\n 'fill-foreground',\n 'shadow-none',\n 'hover:bg-secondary',\n 'hover:text-secondary-foreground',\n 'hover:fill-secondary-foreground',\n 'active:bg-secondary-active',\n 'active:text-secondary-foreground',\n 'active:fill-secondary-foreground',\n 'aria-pressed:bg-secondary-active',\n 'aria-pressed:text-secondary-foreground',\n 'aria-pressed:fill-secondary-foreground',\n 'active:data-[toggled=true]:bg-secondary-active',\n 'active:data-[toggled=true]:text-secondary-foreground',\n 'active:data-[toggled=true]:fill-secondary-foreground',\n 'hover:data-[toggled=true]:bg-secondary-hover',\n 'hover:data-[toggled=true]:text-secondary-foreground',\n 'hover:data-[toggled=true]:fill-secondary-foreground',\n 'data-[toggled=true]:bg-secondary-active',\n 'data-[toggled=true]:text-secondary-foreground',\n 'data-[toggled=true]:fill-secondary-foreground',\n ],\n link: ['text-primary', 'underline-offset-4', 'hover:underline'],\n};\n\nexport const setButtonClasses = (el) => {\n el.classList.add(\n 'cursor-pointer',\n 'inline-flex',\n 'items-center',\n 'justify-center',\n 'gap-2',\n 'whitespace-nowrap',\n 'rounded-control',\n 'text-sm',\n 'font-medium',\n 'transition-all',\n 'duration-100',\n 'motion-reduce:transition-none',\n 'disabled:pointer-events-none',\n 'disabled:opacity-50',\n '[&_svg]:pointer-events-none',\n \"[&_svg:not([class*='size-'])]:size-4\",\n 'shrink-0',\n '[&_svg]:shrink-0',\n 'outline-ring/50',\n 'focus-visible:outline-[calc(var(--spacing)*0.75)]',\n 'focus-visible:outline',\n 'aria-invalid:ring-negative/20',\n 'dark:aria-invalid:ring-negative/40',\n 'aria-invalid:border-negative',\n 'invalid:!ring-negative/20',\n 'dark:invalid:!ring-negative/40',\n 'invalid:!border-negative'\n );\n};\n\nexport const getButtonSize = (size, isAddon = false) => {\n switch (size) {\n case 'sm':\n return isAddon\n ? ['h-6', '[[data-slot=input-group][data-size=sm]_&]:h-5', 'gap-1', 'px-2', \"[&>svg:not([class*='size-'])]:size-3.5\", 'has-[>svg]:px-2', 'has-[>[data-slot=spinner]]:px-2']\n : ['h-6.5', 'gap-1.5', 'px-2.5', 'has-[>svg]:px-2', 'has-[>[data-slot=spinner]]:px-2'];\n case 'md':\n return isAddon ? ['h-8', 'px-2.5', 'gap-1.5', 'has-[>svg]:px-2.5', 'has-[>[data-slot=spinner]]:px-2.5'] : ['h-8', 'gap-1.5', 'px-3', 'has-[>svg]:px-2.5', 'has-[>[data-slot=spinner]]:px-2.5'];\n case 'icon-sm':\n return isAddon ? ['size-6', '[[data-slot=input-group][data-size=sm]_&]:size-5', 'p-0', 'has-[>svg]:p-0', 'has-[>[data-slot=spinner]]:p-0'] : ['size-6.5'];\n case 'icon-md':\n return isAddon ? ['size-8', 'p-0', 'has-[>svg]:p-0'] : ['size-8'];\n case 'icon':\n return ['size-9'];\n default:\n return ['h-9', 'px-4', 'py-2', 'has-[>svg]:px-3', 'has-[>[data-slot=spinner]]:px-3'];\n }\n};\n\nexport default function (Alpine) {\n Alpine.directive('h-button', (el, { original, modifiers }, { cleanup }) => {\n setButtonClasses(el);\n if (!el.hasAttribute('data-slot')) {\n el.setAttribute('data-slot', 'button');\n }\n\n const isAddon = modifiers.includes('addon');\n\n let lastSize;\n\n function setVariant(variant) {\n for (const [_, value] of Object.entries(buttonVariants)) {\n el.classList.remove(...value);\n }\n if (Object.prototype.hasOwnProperty.call(buttonVariants, variant)) el.classList.add(...buttonVariants[variant]);\n }\n\n function setSize(size = 'default') {\n el.classList.remove(...getButtonSize(lastSize, isAddon));\n el.classList.add(...getButtonSize(size, isAddon));\n if (size.startsWith('icon') && !el.hasAttribute('aria-labelledby') && !el.hasAttribute('aria-label')) {\n console.error(`${original}: Icon-only buttons must have an \"aria-label\" or \"aria-labelledby\" attribute`, el);\n }\n lastSize = size;\n }\n\n setVariant(el.getAttribute('data-variant') ?? 'default');\n if (isAddon) {\n el.classList.remove('shadow-button', 'inline-flex');\n el.classList.add('shadow-none', 'flex');\n setSize(el.getAttribute('data-size') ?? 'sm');\n } else {\n if (el.hasAttribute('data-size')) {\n setSize(el.getAttribute('data-size'));\n } else {\n if (['date-picker-trigger', 'time-picker-trigger'].includes(el.getAttribute('data-slot'))) {\n setSize('icon-sm');\n } else {\n setSize();\n }\n }\n }\n\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (mutation.attributeName === 'data-variant') setVariant(el.getAttribute('data-variant') ?? 'default');\n else setSize(el.getAttribute('data-size') ?? (isAddon ? 'sm' : 'default'));\n });\n });\n\n observer.observe(el, { attributes: true, attributeFilter: ['data-variant', 'data-size'] });\n\n cleanup(() => {\n observer.disconnect();\n });\n });\n\n Alpine.directive('h-button-group', (el) => {\n el.classList.add(\n 'flex',\n 'w-fit',\n 'items-stretch',\n '[&>*]:focus-visible:z-10',\n '[&>*]:focus-visible:relative',\n \"[&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit\",\n '[&>input]:flex-1',\n 'has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-control',\n 'has-[>[data-slot=button-group]]:gap-2'\n );\n el.setAttribute('role', 'group');\n el.setAttribute('data-slot', 'button-group');\n const variants = {\n horizontal: ['[&>*:not(:first-child)]:rounded-l-none', '[&>*:not(:first-child)]:border-l-0', '[&>*:not(:last-child)]:rounded-r-none'],\n vertical: ['flex-col', '[&>*:not(:first-child)]:rounded-t-none', '[&>*:not(:first-child)]:border-t-0', '[&>*:not(:last-child)]:rounded-b-none'],\n };\n\n function setVariant(variant) {\n for (const [_, value] of Object.entries(variants)) {\n el.classList.remove(...value);\n }\n if (Object.prototype.hasOwnProperty.call(variants, variant)) el.classList.add(...variants[variant]);\n }\n\n setVariant(el.getAttribute('data-orientation') ?? 'horizontal');\n });\n\n Alpine.directive('h-button-group-separator', (el) => {\n el.classList.add('bg-foreground/20', 'shrink-0', '[[data-orientation=vertical]_&]:h-px', '[[data-orientation=vertical]_&]:w-full', 'h-auto', 'w-px', 'relative', '!m-0', 'self-stretch');\n el.setAttribute('role', 'none');\n el.setAttribute('data-slot', 'button-group-separator');\n });\n}\n", "/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n const firstChar = placement[0];\n return firstChar === 't' || firstChar === 'b' ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.includes('start') ? placement.replace('start', 'end') : placement.replace('end', 'start');\n}\nconst lrPlacement = ['left', 'right'];\nconst rlPlacement = ['right', 'left'];\nconst tbPlacement = ['top', 'bottom'];\nconst btPlacement = ['bottom', 'top'];\nfunction getSideList(side, isStart, rtl) {\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rlPlacement : lrPlacement;\n return isStart ? lrPlacement : rlPlacement;\n case 'left':\n case 'right':\n return isStart ? tbPlacement : btPlacement;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n const side = getSide(placement);\n return oppositeSideMap[side] + placement.slice(side.length);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n const {\n x,\n y,\n width,\n height\n } = rect;\n return {\n width,\n height,\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n", "import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n x,\n y,\n width: rects.floating.width,\n height: rects.floating.height\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n// Maximum number of resets that can occur before bailing to avoid infinite reset loops.\nconst MAX_RESET_COUNT = 50;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const platformWithDetectOverflow = platform.detectOverflow ? platform : {\n ...platform,\n detectOverflow\n };\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let resetCount = 0;\n const middlewareData = {};\n for (let i = 0; i < middleware.length; i++) {\n const currentMiddleware = middleware[i];\n if (!currentMiddleware) {\n continue;\n }\n const {\n name,\n fn\n } = currentMiddleware;\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform: platformWithDetectOverflow,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData[name] = {\n ...middlewareData[name],\n ...data\n };\n if (reset && resetCount < MAX_RESET_COUNT) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const initialSideAxis = getSideAxis(initialPlacement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n if (!ignoreCrossAxisOverflow ||\n // We leave the current main axis only if every placement on that axis\n // overflows the main axis.\n overflowsData.every(d => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$filter2;\n const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n if (hasFallbackAxisSideDirection) {\n const currentSideAxis = getSideAxis(d.placement);\n return currentSideAxis === initialSideAxis ||\n // Create a bias to the `y` side axis due to horizontal\n // reading directions favoring greater width.\n currentSideAxis === 'y';\n }\n return true;\n }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects,\n platform\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await platform.detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await platform.detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\nconst originSides = /*#__PURE__*/new Set(['left', 'top']);\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = originSides.has(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n\n // eslint-disable-next-line prefer-const\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: rawValue.mainAxis || 0,\n crossAxis: rawValue.crossAxis || 0,\n alignmentAxis: rawValue.alignmentAxis\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n platform\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y,\n enabled: {\n [mainAxis]: checkMainAxis,\n [crossAxis]: checkCrossAxis\n }\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = originSides.has(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element \u2014\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n var _state$middlewareData, _state$middlewareData2;\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n const maximumClippingWidth = width - overflow.left - overflow.right;\n const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n availableWidth = maximumClippingWidth;\n }\n if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n availableHeight = maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n", "function hasWindow() {\n return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && display !== 'inline' && display !== 'contents';\n}\nfunction isTableElement(element) {\n return /^(table|td|th)$/.test(getNodeName(element));\n}\nfunction isTopLayer(element) {\n try {\n if (element.matches(':popover-open')) {\n return true;\n }\n } catch (_e) {\n // no-op\n }\n try {\n return element.matches(':modal');\n } catch (_e) {\n return false;\n }\n}\nconst willChangeRe = /transform|translate|scale|rotate|perspective|filter/;\nconst containRe = /paint|layout|strict|content/;\nconst isNotNone = value => !!value && value !== 'none';\nlet isWebKitValue;\nfunction isContainingBlock(elementOrCss) {\n const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n return isNotNone(css.transform) || isNotNone(css.translate) || isNotNone(css.scale) || isNotNone(css.rotate) || isNotNone(css.perspective) || !isWebKit() && (isNotNone(css.backdropFilter) || isNotNone(css.filter)) || willChangeRe.test(css.willChange || '') || containRe.test(css.contain || '');\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else if (isTopLayer(currentNode)) {\n return null;\n }\n currentNode = getParentNode(currentNode);\n }\n return null;\n}\nfunction isWebKit() {\n if (isWebKitValue == null) {\n isWebKitValue = typeof CSS !== 'undefined' && CSS.supports && CSS.supports('-webkit-backdrop-filter', 'none');\n }\n return isWebKitValue;\n}\nfunction isLastTraversableNode(node) {\n return /^(html|body|#document)$/.test(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.scrollX,\n scrollTop: element.scrollY\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n const frameElement = getFrameElement(win);\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n } else {\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n }\n}\nfunction getFrameElement(win) {\n return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n", "import { rectToClientRect, arrow as arrow$1, autoPlacement as autoPlacement$1, detectOverflow as detectOverflow$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle as getComputedStyle$1, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle$1(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = getFrameElement(currentWin);\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle$1(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = getFrameElement(currentWin);\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n const leftScroll = getNodeScroll(element).scrollLeft;\n if (!rect) {\n return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n }\n return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll) {\n const htmlRect = documentElement.getBoundingClientRect();\n const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);\n const y = htmlRect.top + scroll.scrollTop;\n return {\n x,\n y\n };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle$1(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Safety check: ensure the scrollbar space is reasonable in case this\n// calculation is affected by unusual styles.\n// Most scrollbars leave 15-18px of space.\nconst SCROLLBAR_MAX = 25;\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n const windowScrollbarX = getWindowScrollBarX(html);\n // <html> `overflow: hidden` + `scrollbar-gutter: stable` reduces the\n // visual width of the <html> but this is not considered in the size\n // of `html.clientWidth`.\n if (windowScrollbarX <= 0) {\n const doc = html.ownerDocument;\n const body = doc.body;\n const bodyStyles = getComputedStyle(body);\n const bodyMarginInline = doc.compatMode === 'CSS1Compat' ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;\n const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);\n if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) {\n width -= clippingStableScrollbarWidth;\n }\n } else if (windowScrollbarX <= SCROLLBAR_MAX) {\n // If the <body> scrollbar is on the left, the width needs to be extended\n // by the scrollbar amount so there isn't extra space on the right.\n width += windowScrollbarX;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y,\n width: clippingAncestor.width,\n height: clippingAncestor.height\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle$1(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle$1(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && (currentContainingBlockComputedStyle.position === 'absolute' || currentContainingBlockComputedStyle.position === 'fixed') || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstRect = getClientRectFromClippingAncestor(element, clippingAncestors[0], strategy);\n let top = firstRect.top;\n let right = firstRect.right;\n let bottom = firstRect.bottom;\n let left = firstRect.left;\n for (let i = 1; i < clippingAncestors.length; i++) {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestors[i], strategy);\n top = max(rect.top, top);\n right = min(rect.right, right);\n bottom = min(rect.bottom, bottom);\n left = max(rect.left, left);\n }\n return {\n width: right - left,\n height: bottom - top,\n x: left,\n y: top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n\n // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n function setLeftRTLScrollbarOffset() {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n setLeftRTLScrollbarOffset();\n }\n }\n if (isFixed && !isOffsetParentAnElement && documentElement) {\n setLeftRTLScrollbarOffset();\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction isStaticPositioned(element) {\n return getComputedStyle$1(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n let rawOffsetParent = element.offsetParent;\n\n // Firefox returns the <html> element as the offsetParent if it's non-static,\n // while Chrome and Safari return the <body> element. The <body> element must\n // be used to perform the correct calculations even if the <html> element is\n // non-static.\n if (getDocumentElement(element) === rawOffsetParent) {\n rawOffsetParent = rawOffsetParent.ownerDocument.body;\n }\n return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const win = getWindow(element);\n if (isTopLayer(element)) {\n return win;\n }\n if (!isHTMLElement(element)) {\n let svgOffsetParent = getParentNode(element);\n while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n return svgOffsetParent;\n }\n svgOffsetParent = getParentNode(svgOffsetParent);\n }\n return win;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n return win;\n }\n return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n const floatingDimensions = await getDimensionsFn(data.floating);\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n width: floatingDimensions.width,\n height: floatingDimensions.height\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle$1(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const elementRectForRootMargin = element.getBoundingClientRect();\n const {\n left,\n top,\n width,\n height\n } = elementRectForRootMargin;\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n // If the reference is clipped, the ratio is 0. Throttle the refresh\n // to prevent an infinite loop of updates.\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 1000);\n } else {\n refresh(false, ratio);\n }\n }\n if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n // It's possible that even though the ratio is reported as 1, the\n // element is not actually fully within the IntersectionObserver's root\n // area anymore. This can happen under performance constraints. This may\n // be a bug in the browser's IntersectionObserver implementation. To\n // work around this, we compare the element's bounding rect now with\n // what it was at the time we created the IntersectionObserver. If they\n // are not equal then the element moved, so we refresh.\n refresh();\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle <iframe>s\n root: root.ownerDocument\n });\n } catch (_e) {\n io = new IntersectionObserver(handleObserve, options);\n }\n io.observe(element);\n }\n refresh(true);\n return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n ancestorScroll = true,\n ancestorResize = true,\n elementResize = typeof ResizeObserver === 'function',\n layoutShift = typeof IntersectionObserver === 'function',\n animationFrame = false\n } = options;\n const referenceEl = unwrapElement(reference);\n const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...(floating ? getOverflowAncestors(floating) : [])] : [];\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.addEventListener('scroll', update, {\n passive: true\n });\n ancestorResize && ancestor.addEventListener('resize', update);\n });\n const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n let reobserveFrame = -1;\n let resizeObserver = null;\n if (elementResize) {\n resizeObserver = new ResizeObserver(_ref => {\n let [firstEntry] = _ref;\n if (firstEntry && firstEntry.target === referenceEl && resizeObserver && floating) {\n // Prevent update loops when using the `size` middleware.\n // https://github.com/floating-ui/floating-ui/issues/1740\n resizeObserver.unobserve(floating);\n cancelAnimationFrame(reobserveFrame);\n reobserveFrame = requestAnimationFrame(() => {\n var _resizeObserver;\n (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n });\n }\n update();\n });\n if (referenceEl && !animationFrame) {\n resizeObserver.observe(referenceEl);\n }\n if (floating) {\n resizeObserver.observe(floating);\n }\n }\n let frameId;\n let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n if (animationFrame) {\n frameLoop();\n }\n function frameLoop() {\n const nextRefRect = getBoundingClientRect(reference);\n if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n update();\n }\n prevRefRect = nextRefRect;\n frameId = requestAnimationFrame(frameLoop);\n }\n update();\n return () => {\n var _resizeObserver2;\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.removeEventListener('scroll', update);\n ancestorResize && ancestor.removeEventListener('resize', update);\n });\n cleanupIo == null || cleanupIo();\n (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n resizeObserver = null;\n if (animationFrame) {\n cancelAnimationFrame(frameId);\n }\n };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element \u2014\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n // This caches the expensive `getClippingElementAncestors` function so that\n // multiple lifecycle resets re-use the same result. It only lives for a\n // single call. If other functions become expensive, we can add them as well.\n const cache = new Map();\n const mergedOptions = {\n platform,\n ...options\n };\n const platformWithCache = {\n ...mergedOptions.platform,\n _c: cache\n };\n return computePosition$1(reference, floating, {\n ...mergedOptions,\n platform: platformWithCache\n });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n", "import { autoUpdate, computePosition, flip, offset, shift } from '@floating-ui/dom';\nimport uuidv4 from '../utils/uuid';\nimport { ChevronLeft, ChevronRight, ChevronsLeft, ChevronsRight, createSvg } from './../common/icons';\nexport default function (Alpine) {\n Alpine.directive('h-calendar', (el, { original, expression }, { effect, evaluateLater, cleanup, Alpine }) => {\n const datepicker = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_datepicker'));\n el.classList.add('border', 'rounded-control', 'gap-2', 'p-2');\n el.setAttribute('tabindex', '-1');\n if (datepicker) {\n el.classList.add(\n 'absolute',\n 'bg-popover',\n 'text-popover-foreground',\n 'flex',\n 'flex-col',\n 'hidden',\n 'z-50',\n 'shadow-md',\n 'transition-[opacity,scale]',\n 'motion-reduce:transition-none',\n 'duration-100',\n 'ease-out',\n 'opacity-0',\n 'scale-95'\n );\n el.setAttribute('role', 'dialog');\n el.setAttribute('aria-modal', 'true');\n el.setAttribute('data-slot', 'date-picker-calendar');\n } else {\n el.classList.add('shadow-input', 'data-[invalid=true]:border-negative', 'data-[invalid=true]:ring-negative/20', 'dark:data-[invalid=true]:ring-negative/40');\n }\n\n let date = new Date();\n let selected = undefined;\n let focusedDay = undefined;\n\n let locale = undefined;\n let formatter = undefined;\n let modelAsIso = false;\n let firstDay = 0;\n let minDate = undefined;\n let maxDate = undefined;\n\n function modelChange(triggerInput = false) {\n Alpine.nextTick(() => {\n el.dispatchEvent(new CustomEvent('change', { detail: { date: selected } }));\n });\n if (el._x_model) {\n if (modelAsIso) {\n el._x_model.set(selected.toISOString());\n } else {\n el._x_model.set(formatter.format(selected));\n }\n }\n if (datepicker) {\n datepicker._h_datepicker.input.value = formatter.format(selected);\n datepicker._h_datepicker.input.setCustomValidity('');\n if (triggerInput) datepicker._h_datepicker.input.dispatchEvent(new Event('change', { bubbles: true }));\n } else {\n el.setAttribute('data-invalid', 'false');\n }\n }\n\n const onInputChange = () => {\n const newValue = new Date(datepicker._h_datepicker.input.value);\n if (isNaN(newValue)) {\n console.error(`${original}: input value is not a valid date - ${datepicker._h_datepicker.input.value}`);\n datepicker._h_datepicker.input.setCustomValidity('Input value is not a valid date.');\n return;\n } else if (selected.getTime() !== newValue.getTime()) {\n selected = newValue;\n modelChange();\n render();\n }\n datepicker._h_datepicker.input.setCustomValidity('');\n };\n\n if (datepicker) {\n datepicker._h_datepicker.input.addEventListener('change', onInputChange);\n }\n\n function setFromModel() {\n selected = new Date(el._x_model.get());\n if (isNaN(selected)) {\n console.error(`${original}: input value is not a valid date - ${el._x_model.get()}`);\n if (datepicker) datepicker._h_datepicker.input.setCustomValidity('Input value is not a valid date.');\n else el.setAttribute('data-invalid', 'true');\n } else if (datepicker) {\n datepicker._h_datepicker.input.value = formatter.format(selected);\n }\n }\n\n function checkForModel() {\n if (Object.prototype.hasOwnProperty.call(el, '_x_model') && el._x_model.get()) {\n setFromModel();\n }\n }\n\n function dayClick(event) {\n if (event.target.getAttribute('aria-disabled') === 'true') return;\n focusedDay = new Date(event.target.dataset.year, event.target.dataset.month, event.target.dataset.day);\n selected = new Date(focusedDay);\n modelChange(true);\n render();\n if (datepicker) datepicker._h_datepicker.state.expanded = false;\n }\n\n function isDisabled(d) {\n if (minDate && d < new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate())) return true;\n if (maxDate && d > new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate())) return true;\n return false;\n }\n\n function sameDay(dateA, dateB) {\n return dateA && dateB && dateA.getFullYear() === dateB.getFullYear() && dateA.getMonth() === dateB.getMonth() && dateA.getDate() === dateB.getDate();\n }\n\n const weekdayFormat = new Intl.DateTimeFormat(locale, { weekday: 'short' });\n function getWeekdayNames() {\n return Array.from({ length: 7 }, (_, i) => {\n const weekday = (i + firstDay) % 7;\n return weekdayFormat.format(new Date(2020, 9, weekday + 4));\n });\n }\n\n const fullWeekdayFormat = new Intl.DateTimeFormat(locale, { weekday: 'long' });\n function getFullWeekdayNames() {\n return Array.from({ length: 7 }, (_, i) => {\n const weekday = (i + firstDay) % 7;\n return fullWeekdayFormat.format(new Date(2020, 9, weekday + 4));\n });\n }\n\n let weekdayNames = undefined;\n let fullWeekdayNames = undefined;\n\n const header = document.createElement('div');\n header.classList.add('hbox', 'gap-2', 'items-center', 'justify-between');\n const buttonClasses = [\n 'size-9',\n 'cursor-pointer',\n 'inline-flex',\n 'items-center',\n 'justify-center',\n 'rounded-control',\n 'text-sm',\n 'font-medium',\n 'transition-all',\n 'motion-reduce:transition-none',\n 'outline-none',\n 'focus-visible:border-ring',\n 'focus-visible:ring-ring/50',\n 'focus-visible:ring-[calc(var(--spacing)*0.75)]',\n 'bg-transparent',\n 'text-foreground',\n 'hover:bg-secondary',\n 'hover:text-secondary-foreground',\n 'active:bg-secondary-active',\n 'aria-pressed:bg-secondary-active',\n ];\n const previousYearBtn = document.createElement('button');\n previousYearBtn.classList.add(...buttonClasses);\n previousYearBtn.setAttribute('aria-label', el.hasAttribute('data-aria-prev-year') ? el.getAttribute('data-aria-prev-year') : 'previous year');\n previousYearBtn.setAttribute('type', 'button');\n previousYearBtn.appendChild(\n createSvg({\n icon: ChevronsLeft,\n classes: 'opacity-70 size-4 shrink-0 pointer-events-none',\n attrs: {\n 'aria-hidden': true,\n role: 'presentation',\n },\n })\n );\n previousYearBtn.addEventListener('click', () => {\n date.setFullYear(date.getFullYear() - 1);\n render();\n });\n header.appendChild(previousYearBtn);\n\n const previousMonthBtn = document.createElement('button');\n previousMonthBtn.classList.add(...buttonClasses);\n previousMonthBtn.setAttribute('aria-label', el.hasAttribute('data-aria-prev-month') ? el.getAttribute('data-aria-prev-month') : 'previous month');\n previousMonthBtn.setAttribute('type', 'button');\n previousMonthBtn.appendChild(\n createSvg({\n icon: ChevronLeft,\n classes: 'opacity-70 size-4 shrink-0 pointer-events-none',\n attrs: {\n 'aria-hidden': true,\n role: 'presentation',\n },\n })\n );\n previousMonthBtn.addEventListener('click', () => {\n date.setMonth(date.getMonth() - 1);\n render();\n });\n header.appendChild(previousMonthBtn);\n\n const headerLabel = document.createElement('h2');\n headerLabel.classList.add('min-w-[8rem]', 'text-center');\n headerLabel.setAttribute('id', `hdpl${uuidv4()}`);\n headerLabel.setAttribute('aria-live', 'polite');\n header.appendChild(headerLabel);\n\n const nextMonthBtn = document.createElement('button');\n nextMonthBtn.classList.add(...buttonClasses);\n nextMonthBtn.setAttribute('aria-label', el.hasAttribute('data-aria-next-month') ? el.getAttribute('data-aria-next-month') : 'next month');\n nextMonthBtn.setAttribute('type', 'button');\n nextMonthBtn.appendChild(\n createSvg({\n icon: ChevronRight,\n classes: 'opacity-70 size-4 shrink-0 pointer-events-none',\n attrs: {\n 'aria-hidden': true,\n role: 'presentation',\n },\n })\n );\n nextMonthBtn.addEventListener('click', () => {\n date.setMonth(date.getMonth() + 1);\n render();\n });\n header.appendChild(nextMonthBtn);\n\n const nextYearBtn = document.createElement('button');\n nextYearBtn.classList.add(...buttonClasses);\n nextYearBtn.setAttribute('aria-label', el.hasAttribute('data-aria-next-year') ? el.getAttribute('data-aria-next-year') : 'next year');\n nextYearBtn.setAttribute('type', 'button');\n nextYearBtn.appendChild(\n createSvg({\n icon: ChevronsRight,\n classes: 'opacity-70 size-4 shrink-0 pointer-events-none',\n attrs: {\n 'aria-hidden': true,\n role: 'presentation',\n },\n })\n );\n nextYearBtn.addEventListener('click', () => {\n date.setFullYear(date.getFullYear() + 1);\n render();\n });\n header.appendChild(nextYearBtn);\n el.appendChild(header);\n\n const datesTable = document.createElement('table');\n if (datepicker) datesTable.setAttribute('aria-labelledby', `hdpl${uuidv4()}`);\n datesTable.classList.add('table-fixed', 'border-separate', 'border-spacing-1');\n if (!datepicker) datesTable.classList.add('w-full');\n const thead = document.createElement('thead');\n datesTable.appendChild(thead);\n const theadRow = document.createElement('tr');\n thead.appendChild(theadRow);\n const tbody = document.createElement('tbody');\n datesTable.appendChild(tbody);\n\n // Weekday headers with ARIA columnheader\n function setWeekdayHeaders() {\n theadRow.replaceChildren();\n for (let i = 0; i < 7; i++) {\n const th = document.createElement('th');\n th.setAttribute('scope', 'col');\n th.setAttribute('abbr', weekdayNames[i]);\n th.setAttribute('aria-label', fullWeekdayNames[i]);\n th.classList.add('text-sm', 'font-medium');\n th.innerText = weekdayNames[i];\n theadRow.appendChild(th);\n }\n }\n\n el.appendChild(datesTable);\n\n const dayCells = [];\n\n for (let r = 0; r < 6; r++) {\n const row = document.createElement('tr');\n for (let d = 0; d < 7; d++) {\n const cell = document.createElement('td');\n cell.classList.add(\n 'cursor-pointer',\n 'text-sm',\n 'align-middle',\n 'text-center',\n 'size-8',\n 'rounded-control',\n 'outline-none',\n 'duration-100',\n 'transition-all',\n 'motion-reduce:transition-none',\n 'hover:bg-secondary-hover',\n 'hover:text-secondary-foreground',\n 'focus:bg-secondary-hover',\n 'focus:text-secondary-foreground',\n 'aria-[current=date]:bg-secondary',\n 'hover:aria-[current=date]:bg-secondary-hover',\n 'aria-[current=date]:text-secondary-foreground',\n 'aria-selected:!bg-primary-active',\n 'aria-selected:hover:!bg-primary-hover',\n 'aria-selected:focus:!bg-primary-hover',\n 'aria-selected:!text-primary-foreground',\n 'aria-disabled:pointer-events-none',\n 'aria-disabled:opacity-50'\n );\n cell.setAttribute('tabindex', '-1');\n dayCells.push(row.appendChild(cell));\n }\n tbody.appendChild(row);\n }\n\n function render(fromNav = false) {\n const year = date.getFullYear();\n const month = date.getMonth();\n\n const start = new Date(year, month, 1);\n const end = new Date(year, month + 1, 0);\n const days = end.getDate();\n\n const prevEndDay = new Date(year, month, 1);\n prevEndDay.setDate(prevEndDay.getDate() - 1);\n\n let lastPrevMonthDay = prevEndDay.getDate();\n let startDay = (start.getDay() - firstDay + 7) % 7;\n\n headerLabel.innerText = new Intl.DateTimeFormat(locale, {\n month: 'long',\n year: 'numeric',\n }).format(start);\n\n let cellIndex = 0;\n\n function updateDateCell(cell, dayNum) {\n cell.setAttribute('tabindex', '-1');\n cell.setAttribute('aria-disabled', 'true');\n cell.removeAttribute('data-day');\n cell.removeAttribute('data-month');\n cell.removeAttribute('data-year');\n cell.removeAttribute('aria-selected');\n cell.removeAttribute('aria-current');\n if (dayNum < 10) {\n cell.innerText = `0${dayNum}`;\n } else {\n cell.innerText = dayNum;\n }\n cell.removeEventListener('click', dayClick);\n }\n\n // Previous month days at the beginning\n for (let d = startDay - 1; d >= 0; d--) {\n updateDateCell(dayCells[d], lastPrevMonthDay);\n lastPrevMonthDay--;\n cellIndex++;\n }\n\n // Active month days\n for (let d = 1; d <= days; d++) {\n const curr = new Date(year, month, d);\n const focusable = focusedDay && sameDay(focusedDay, curr);\n dayCells[cellIndex].setAttribute('data-day', d);\n dayCells[cellIndex].setAttribute('data-month', month);\n dayCells[cellIndex].setAttribute('data-year', year);\n dayCells[cellIndex].setAttribute('tabindex', focusable ? '0' : '-1');\n dayCells[cellIndex].setAttribute('aria-selected', selected && sameDay(selected, curr) ? 'true' : 'false');\n dayCells[cellIndex].setAttribute('aria-disabled', isDisabled(curr));\n if (fromNav && focusable) {\n dayCells[cellIndex].focus();\n }\n if (sameDay(new Date(), curr)) {\n dayCells[cellIndex].setAttribute('aria-current', 'date');\n if (focusedDay === undefined) dayCells[cellIndex].setAttribute('tabindex', '0');\n } else dayCells[cellIndex].removeAttribute('aria-current');\n if (d < 10) {\n dayCells[cellIndex].innerText = `0${d}`;\n } else {\n dayCells[cellIndex].innerText = d;\n }\n dayCells[cellIndex].addEventListener('click', dayClick);\n cellIndex++;\n }\n\n // Next month days at the end\n let lastDayNum = 1;\n for (cellIndex; cellIndex < 42; cellIndex++) {\n updateDateCell(dayCells[cellIndex], lastDayNum);\n lastDayNum++;\n }\n }\n\n function focusDay() {\n if (selected) {\n for (let d = 0; d < dayCells.length; d++) {\n if (dayCells[d].getAttribute('aria-selected') === 'true') {\n dayCells[d].focus();\n return;\n }\n }\n }\n for (let d = 0; d < dayCells.length; d++) {\n if (dayCells[d].hasAttribute('aria-current')) {\n dayCells[d].focus();\n return;\n }\n }\n }\n\n function onKeyDown(event) {\n event.stopPropagation();\n if (!focusedDay) focusedDay = selected || new Date(date.getFullYear(), date.getMonth(), 1);\n let newDay = new Date(focusedDay);\n\n switch (event.key) {\n case 'Left':\n case 'ArrowLeft':\n event.preventDefault();\n newDay.setDate(newDay.getDate() - 1);\n break;\n case 'Right':\n case 'ArrowRight':\n event.preventDefault();\n newDay.setDate(newDay.getDate() + 1);\n break;\n case 'Up':\n case 'ArrowUp':\n event.preventDefault();\n newDay.setDate(newDay.getDate() - 7);\n break;\n case 'Down':\n case 'ArrowDown':\n event.preventDefault();\n newDay.setDate(newDay.getDate() + 7);\n break;\n case 'Home':\n event.preventDefault();\n newDay.setDate(1);\n break;\n case 'End':\n event.preventDefault();\n newDay.setDate(new Date(newDay.getFullYear(), newDay.getMonth() + 1, 0).getDate());\n break;\n case 'PageUp':\n event.preventDefault();\n newDay.setMonth(newDay.getMonth() - 1);\n break;\n case 'PageDown':\n event.preventDefault();\n newDay.setMonth(newDay.getMonth() + 1);\n break;\n case 'Escape':\n event.preventDefault();\n if (datepicker) datepicker._h_datepicker.state.expanded = false;\n return;\n\n case 'Enter':\n case ' ':\n event.preventDefault();\n if (!isDisabled(focusedDay)) {\n selected = new Date(focusedDay);\n modelChange();\n render(true);\n }\n return;\n\n default:\n return;\n }\n\n // If the user has navigated to a date from a previous or next month\n if (newDay.getMonth() !== date.getMonth()) {\n date = newDay;\n focusedDay = newDay;\n render(true);\n return;\n }\n\n focusedDay = newDay;\n render(true);\n }\n\n el.addEventListener('keydown', onKeyDown);\n\n if (expression) {\n const getConfig = evaluateLater(expression);\n\n effect(() => {\n getConfig((config) => {\n if (config.locale) locale = config.locale;\n if (config.firstDay) firstDay = config.firstDay;\n if (config.options) formatter = new Intl.DateTimeFormat(locale, config.options);\n else formatter = new Intl.DateTimeFormat(locale);\n modelAsIso = config.modelAsIso === false;\n if (config.min) minDate = new Date(config.min);\n if (config.max) maxDate = new Date(config.max);\n weekdayNames = getWeekdayNames();\n fullWeekdayNames = getFullWeekdayNames();\n setWeekdayHeaders();\n checkForModel();\n render();\n });\n });\n } else {\n formatter = new Intl.DateTimeFormat();\n weekdayNames = getWeekdayNames();\n fullWeekdayNames = getFullWeekdayNames();\n setWeekdayHeaders();\n checkForModel();\n render();\n }\n\n let autoUpdateCleanup;\n\n function updatePosition() {\n computePosition(datepicker, el, {\n placement: el.getAttribute('data-align') || 'bottom-start',\n middleware: [offset(4), flip(), shift({ padding: 4 })],\n }).then(({ x, y }) => {\n Object.assign(el.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n el.classList.remove('scale-95', 'opacity-0');\n });\n }\n\n if (datepicker) {\n effect(() => {\n if (datepicker._h_datepicker.state.expanded) {\n el.classList.remove('hidden');\n autoUpdateCleanup = autoUpdate(datepicker, el, updatePosition);\n Alpine.nextTick(() => {\n focusDay();\n });\n } else {\n if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) {\n el.classList.add('hidden', 'scale-95', 'opacity-0');\n Object.assign(el.style, {\n left: '0px',\n top: '0px',\n });\n } else {\n el.classList.add('scale-95', 'opacity-0');\n }\n if (autoUpdateCleanup) autoUpdateCleanup();\n }\n });\n }\n\n function onTransitionEnd(event) {\n if (event.target === el && event.target.classList.contains('opacity-0')) {\n el.classList.add('hidden');\n Object.assign(el.style, {\n left: '0px',\n top: '0px',\n });\n }\n }\n\n if (datepicker) {\n el.addEventListener('transitionend', onTransitionEnd);\n }\n\n if (Object.prototype.hasOwnProperty.call(el, '_x_model')) {\n const modelExpression = el.getAttribute('x-model');\n\n const evaluateModel = evaluateLater(modelExpression);\n\n effect(() => {\n evaluateModel((value) => {\n if ((!selected && value) || (value && selected.getTime() !== new Date(value).getTime())) {\n setFromModel();\n render();\n } else if (!value) {\n if (datepicker) datepicker._h_datepicker.input.value = '';\n selected = undefined;\n render();\n }\n });\n });\n }\n\n cleanup(() => {\n el.removeEventListener('keydown', onKeyDown);\n for (let d = 0; d < dayCells.length; d++) {\n dayCells[d].removeEventListener('click', dayClick);\n }\n if (datepicker) {\n datepicker._h_datepicker.input.removeEventListener('change', onInputChange);\n el.removeEventListener('transitionend', onTransitionEnd);\n }\n });\n });\n}\n", "export default function (Alpine) {\n Alpine.directive('h-card', (el) => {\n el.classList.add('bg-card', 'text-card-foreground', 'vbox', 'gap-4', 'rounded-xl', 'border', 'py-6', 'shadow-sm');\n el.setAttribute('data-slot', 'card');\n });\n\n Alpine.directive('h-card-header', (el) => {\n el.classList.add('@container/card-header', 'grid', 'auto-rows-min', 'grid-rows-[auto_auto]', 'items-start', 'gap-2', 'px-6', 'has-data-[slot=card-action]:grid-cols-[1fr_auto]', '[.border-b]:pb-6');\n el.setAttribute('data-slot', 'card-header');\n });\n\n Alpine.directive('h-card-title', (el) => {\n el.classList.add('leading-none', 'font-semibold');\n el.setAttribute('data-slot', 'card-title');\n });\n\n Alpine.directive('h-card-description', (el) => {\n el.classList.add('text-muted-foreground', 'text-sm');\n el.setAttribute('data-slot', 'card-description');\n });\n\n Alpine.directive('h-card-action', (el) => {\n el.classList.add('col-start-2', 'row-span-2', 'row-start-1', 'self-start', 'justify-self-end');\n el.setAttribute('data-slot', 'card-action');\n });\n\n Alpine.directive('h-card-content', (el) => {\n el.classList.add('px-6');\n el.setAttribute('data-slot', 'card-content');\n });\n\n Alpine.directive('h-card-footer', (el) => {\n el.classList.add('flex', 'items-center', 'px-6', '[.border-t]:pt-6');\n el.setAttribute('data-slot', 'card-footer');\n });\n}\n", "import { Check, createSvg } from './../common/icons';\n\nexport default function (Alpine) {\n Alpine.directive('h-checkbox', (el) => {\n el.classList.add(\n '[&>input]:absolute',\n '[&>input]:appearance-none',\n '[&>input]:bg-transparent',\n '[&>input]:border-0',\n '[&>input]:cursor-pointer',\n '[&>input]:focus-visible:border-ring',\n '[&>input]:focus-visible:ring-[calc(var(--spacing)*0.75)]',\n '[&>input]:focus-visible:ring-ring/50',\n '[&>input]:left-0',\n '[&>input]:outline-none',\n '[&>input]:rounded-[0.438rem]',\n '[&>input]:size-full',\n '[&>input]:top-0',\n 'aspect-square',\n 'bg-input-inner',\n 'border',\n 'border-input',\n 'dark:has-[input[aria-invalid=true]]:ring-negative/40',\n 'dark:has-[input:invalid]:ring-negative/40',\n 'duration-200',\n 'has-[input[aria-invalid=true]]:border-negative',\n 'has-[input[aria-invalid=true]]:ring-negative/20',\n 'has-[input:checked]:bg-primary',\n 'has-[input:checked]:border-primary',\n 'has-[input:disabled]:cursor-not-allowed',\n 'has-[input:disabled]:opacity-50',\n 'has-[input:invalid]:border-negative',\n 'has-[input:invalid]:ring-negative/20',\n 'relative',\n 'rounded-[0.438rem]',\n 'shadow-input',\n 'shrink-0',\n 'size-5',\n 'transition-colors',\n 'motion-reduce:transition-none'\n );\n el.setAttribute('tabindex', '-1');\n el.setAttribute('data-slot', 'checkbox');\n\n const check = createSvg({ icon: Check, classes: 'size-full [input:checked~&]:visible invisible fill-primary-foreground', attrs: { 'aria-hidden': true, role: 'presentation' } });\n el.appendChild(check);\n });\n}\n", "import { Close, createSvg } from './../common/icons';\nexport default function (Alpine) {\n Alpine.directive('h-chip', (el, { original }, { cleanup }) => {\n if (el.tagName !== 'BUTTON') {\n throw new Error(`${original} must be a button element`);\n }\n el._h_chip = Alpine.reactive({\n variant: 'default',\n });\n el.classList.add(\n 'cursor-pointer',\n 'inline-flex',\n 'items-center',\n 'justify-center',\n 'whitespace-nowrap',\n 'rounded-full',\n 'text-sm',\n 'leading-none',\n 'transform-gpu',\n 'overflow-hidden',\n 'transition-all',\n 'duration-100',\n 'motion-reduce:transition-none',\n 'disabled:pointer-events-none',\n 'disabled:opacity-50',\n '[&_svg]:pointer-events-none',\n \"[&_svg:not([class*='size-'])]:size-4\",\n 'shrink-0',\n '[&_svg]:shrink-0',\n 'aria-expanded:outline-[calc(var(--spacing)*0.75)]',\n 'aria-expanded:outline',\n 'focus:outline-[calc(var(--spacing)*0.75)]',\n 'focus:outline',\n 'focus-visible:outline-[calc(var(--spacing)*0.75)]',\n 'focus-visible:outline',\n 'h-7',\n 'gap-1.5',\n 'px-2.5',\n 'has-[>svg]:pl-1.5',\n 'has-[>[data-slot=chip-close]]:pr-0',\n 'has-[>[data-slot=spinner]]:px-2',\n 'text-secondary-foreground',\n 'border',\n '[&>:is(div,span:not([data-slot=chip-close]),p)]:py-1',\n '[&>:is(div,span:not([data-slot=chip-close]),p)]:truncate'\n );\n if (!el.hasAttribute('type')) {\n el.setAttribute('type', 'button');\n }\n el.setAttribute('data-slot', 'chip');\n const variants = {\n default: ['bg-secondary', '[&:hover:not(:has([data-slot=chip-close]:hover)):not(:active)]:bg-secondary-hover', '[&:active:not(:has([data-slot=chip-close]:active))]:bg-secondary-active', 'outline-ring/50'],\n primary: [\n 'bg-primary/10',\n 'border-primary/50',\n '[&>svg]:text-primary',\n '[&:hover:not(:has([data-slot=chip-close]:hover)):not(:active)]:bg-primary/15',\n '[&:active:not(:has([data-slot=chip-close]:active))]:bg-primary/20',\n 'outline-primary/50',\n ],\n positive: [\n 'bg-positive/10',\n 'border-positive/50',\n '[&>svg]:text-positive',\n '[&:hover:not(:has([data-slot=chip-close]:hover)):not(:active)]:bg-positive/15',\n '[&:active:not(:has([data-slot=chip-close]:active))]:bg-positive/20',\n 'outline-positive/50',\n ],\n negative: [\n 'bg-negative/10',\n 'border-negative/50',\n '[&>svg]:text-negative',\n '[&:hover:not(:has([data-slot=chip-close]:hover)):not(:active)]:bg-negative/15',\n '[&:active:not(:has([data-slot=chip-close]:active))]:bg-negative/20',\n 'outline-negative/50',\n ],\n warning: [\n 'bg-warning/10',\n 'border-warning/50',\n '[&>svg]:text-warning',\n '[&:hover:not(:has([data-slot=chip-close]:hover)):not(:active)]:bg-warning/15',\n '[&:active:not(:has([data-slot=chip-close]:active))]:bg-warning/20',\n 'outline-warning/50',\n ],\n information: [\n 'bg-information/10',\n 'border-information/50',\n '[&>svg]:text-information',\n '[&:hover:not(:has([data-slot=chip-close]:hover)):not(:active)]:bg-information/15',\n '[&:active:not(:has([data-slot=chip-close]:active))]:bg-information/20',\n 'outline-information/50',\n ],\n outline: [\n 'bg-background',\n '[&>svg]:text-secondary-foreground',\n '[&:hover:not(:has([data-slot=chip-close]:hover)):not(:active)]:bg-secondary-hover',\n '[&:active:not(:has([data-slot=chip-close]:active))]:bg-secondary-active',\n 'outline-ring/50',\n ],\n };\n\n function setVariant(variant) {\n el._h_chip.variant = variant;\n for (const [_, value] of Object.entries(variants)) {\n el.classList.remove(...value);\n }\n if (Object.prototype.hasOwnProperty.call(variants, variant)) el.classList.add(...variants[variant]);\n }\n\n setVariant(el.getAttribute('data-variant') ?? 'default');\n\n const observer = new MutationObserver(() => {\n setVariant(el.getAttribute('data-variant') ?? 'default');\n });\n\n observer.observe(el, { attributes: true, attributeFilter: ['data-variant'] });\n\n cleanup(() => {\n observer.disconnect();\n });\n });\n\n Alpine.directive('h-chip-close', (el, { original }, { effect, cleanup }) => {\n if (el.tagName !== 'SPAN') {\n throw new Error(`${original} must be a span element`);\n }\n const chip = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_chip'));\n el.classList.add(\n 'cursor-pointer',\n 'inline-flex',\n 'items-center',\n 'justify-center',\n 'pl-1',\n 'pr-1.5',\n 'h-full',\n 'text-sm',\n 'transition-all',\n 'duration-100',\n 'motion-reduce:transition-none',\n 'disabled:pointer-events-none',\n 'disabled:opacity-50',\n 'bg-transparent',\n 'text-secondary-foreground',\n 'fill-secondary-foreground',\n 'rounded-r-full',\n 'border-l',\n 'border-transparent',\n 'outline-none',\n 'focus-visible:inset-ring-[calc(var(--spacing)*0.75)]',\n 'focus-visible:inset-ring',\n 'hover:[[data-variant]>&]:border-inherit',\n 'active:border-inherit',\n 'aria-pressed:border-inherit'\n );\n el.setAttribute('data-slot', 'chip-close');\n el.setAttribute('tabindex', '0');\n el.setAttribute('role', 'button');\n el.appendChild(\n createSvg({\n icon: Close,\n classes: 'size-3.5 shrink-0 pointer-events-none',\n attrs: {\n 'aria-hidden': true,\n role: 'presentation',\n },\n })\n );\n\n if (!el.hasAttribute('aria-labelledby') && !el.hasAttribute('aria-label')) {\n console.error(`${original}: Must have an \"aria-label\" or \"aria-labelledby\" attribute`, el);\n }\n\n const variants = {\n default: ['hover:border-foreground/20', 'hover:bg-secondary-hover', 'active:bg-secondary-active', 'focus-visible:inset-ring-ring/50'],\n primary: ['hover:bg-primary/10', 'active:bg-primary/15', 'aria-pressed:bg-primary/15', 'focus-visible:inset-ring-primary/50'],\n positive: ['hover:bg-positive/10', 'active:bg-positive/15', 'aria-pressed:bg-positive/15', 'focus-visible:inset-ring-positive/50'],\n negative: ['hover:bg-negative/10', 'active:bg-negative/15', 'aria-pressed:bg-negative/15', 'focus-visible:inset-ring-negative/50'],\n warning: ['hover:bg-warning/10', 'active:bg-warning/15', 'aria-pressed:bg-warning/15', 'focus-visible:inset-ring-warning/50'],\n information: ['hover:bg-information/10', 'active:bg-information/15', 'aria-pressed:bg-information/15', 'focus-visible:inset-ring-information/50'],\n outline: ['hover:bg-secondary-hover', 'active:bg-secondary-active', 'aria-pressed:bg-secondary-active', 'focus-visible:inset-ring-ring/50'],\n };\n\n effect(() => {\n for (const [_, value] of Object.entries(variants)) {\n el.classList.remove(...value);\n }\n if (Object.prototype.hasOwnProperty.call(variants, chip._h_chip.variant)) {\n el.classList.add(...variants[chip._h_chip.variant]);\n }\n });\n\n const stopPropagation = (event) => {\n // Do not stop propagation when the chip has an expanded popover or a menu attached to it.\n // This allows for confirmation dialogs to show, without the popover/menu staying expanded.\n if (chip.getAttribute('aria-expanded') !== 'true') event.stopPropagation();\n };\n el.addEventListener('click', stopPropagation);\n\n cleanup(() => {\n el.removeEventListener('click', stopPropagation);\n });\n });\n}\n", "function setSize(el, size) {\n if (size === 'sm') {\n el.classList.add('h-6.5');\n el.classList.remove('h-9');\n } else {\n el.classList.add('h-9');\n el.classList.remove('h-6.5');\n }\n}\n\nexport function sizeObserver(el) {\n const observer = new MutationObserver(() => {\n setSize(el, el.getAttribute('data-size'));\n });\n\n setSize(el, el.getAttribute('data-size'));\n\n observer.observe(el, { attributes: true, attributeFilter: ['data-size'] });\n return observer;\n}\n", "import uuidv4 from '../utils/uuid';\nimport { Calendar, createSvg } from './../common/icons';\nimport { sizeObserver } from './../common/input-size';\nexport default function (Alpine) {\n Alpine.directive('h-date-picker', (el, { original, modifiers }, { Alpine, cleanup }) => {\n const state = Alpine.reactive({\n expanded: false,\n });\n el._h_datepicker = {\n id: undefined,\n controls: `hdpc${uuidv4()}`,\n input: undefined,\n state,\n inTable: modifiers.includes('table'),\n };\n el._h_datepicker.input = el.querySelector('input');\n if (!el._h_datepicker.input || el._h_datepicker.input.tagName !== 'INPUT') {\n throw new Error(`${original} must contain an input`);\n } else if (el._h_datepicker.input.hasAttribute('id')) {\n el._h_datepicker.id = el._h_datepicker.input.getAttribute('id');\n } else {\n const id = `hdp${uuidv4()}`;\n el._h_datepicker.input.setAttribute('id', id);\n el._h_datepicker.id = id;\n }\n\n el.classList.add(\n 'overflow-hidden',\n 'border-input',\n 'flex',\n 'items-center',\n 'transition-colors',\n 'transition-shadow',\n 'motion-reduce:transition-none',\n 'duration-200',\n 'outline-none',\n 'pl-3',\n 'min-w-0',\n 'has-[input:disabled]:pointer-events-none',\n 'has-[input:disabled]:cursor-not-allowed',\n 'has-[input:disabled]:opacity-50'\n );\n if (el._h_datepicker.inTable) {\n el.classList.add(\n 'size-full',\n 'h-10',\n 'has-[input:focus-visible]:inset-ring-ring/50',\n 'has-[input:focus-visible]:inset-ring-2',\n 'has-[input[aria-invalid=true]]:inset-ring-negative/20',\n 'dark:has-[input[aria-invalid=true]]:inset-ring-negative/40',\n 'has-[input:invalid]:!inset-ring-negative/20',\n 'dark:has-[input:invalid]:!inset-ring-negative/40'\n );\n el.setAttribute('data-slot', 'cell-input-date');\n } else {\n el.classList.add(\n 'w-full',\n 'rounded-control',\n 'border',\n 'bg-input-inner',\n 'shadow-input',\n 'has-[input:focus-visible]:border-ring',\n 'has-[input:focus-visible]:ring-ring/50',\n 'has-[input:focus-visible]:ring-[calc(var(--spacing)*0.75)]',\n 'has-[input[aria-invalid=true]]:ring-negative/20',\n 'has-[input[aria-invalid=true]]:border-negative',\n 'dark:has-[input[aria-invalid=true]]:ring-negative/40',\n 'has-[input:invalid]:ring-negative/20',\n 'has-[input:invalid]:border-negative',\n 'dark:has-[input:invalid]:ring-negative/40'\n );\n el.setAttribute('data-slot', 'date-picker');\n }\n\n el._h_datepicker.input.classList.add(\n 'bg-transparent',\n 'outline-none',\n 'size-full',\n 'pr-1',\n 'border-r',\n 'border-input',\n 'aria-invalid:border-negative',\n 'invalid:border-negative',\n 'focus-visible:ring-0',\n 'disabled:pointer-events-none',\n 'disabled:cursor-not-allowed',\n 'disabled:opacity-50',\n 'md:text-sm',\n 'text-base',\n 'truncate'\n );\n el._h_datepicker.input.setAttribute('aria-autocomplete', 'none');\n el._h_datepicker.input.setAttribute('type', 'text');\n\n const observer = sizeObserver(el);\n\n cleanup(() => {\n observer.disconnect();\n });\n });\n\n Alpine.directive('h-date-picker-trigger', (el, { original }, { effect, cleanup, Alpine }) => {\n if (el.tagName !== 'BUTTON') {\n throw new Error(`${original} must be a button`);\n }\n if (!el.hasAttribute('aria-labelledby') && !el.hasAttribute('aria-label')) {\n throw new Error(`${original}: must have an \"aria-label\" or \"aria-labelledby\" attribute`);\n }\n const datepicker = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_datepicker'));\n if (!datepicker) {\n throw new Error(`${original} must be inside an date-picker element`);\n }\n el.classList.add(\n 'cursor-pointer',\n 'inline-flex',\n 'items-center',\n 'justify-center',\n 'h-full',\n 'aspect-square',\n 'bg-transparent',\n 'hover:bg-secondary',\n 'hover:text-secondary-foreground',\n 'active:bg-secondary-active',\n 'active:text-secondary-foreground',\n 'outline-none'\n );\n if (datepicker._h_datepicker.inTable) {\n el.classList.add(\n 'focus-visible:inset-ring-ring/50',\n 'focus-visible:inset-ring-2',\n '[input[aria-invalid=true]~&]:inset-ring-negative/20',\n 'dark:[input[aria-invalid=true]~&]:inset-ring-negative/40',\n '[input:invalid~&]:!inset-ring-negative/20',\n 'dark:[input:invalid~&]:!inset-ring-negative/40'\n );\n } else {\n el.classList.add(\n 'focus-visible:border-ring',\n 'focus-visible:ring-ring/50',\n 'focus-visible:ring-[calc(var(--spacing)*0.75)]',\n '[input[aria-invalid=true]~&]:ring-negative/20',\n '[input[aria-invalid=true]~&]:border-negative',\n 'dark:[input[aria-invalid=true]~&]:ring-negative/40',\n '[input:invalid~&]:ring-negative/20',\n '[input:invalid~&]:border-negative',\n 'dark:[input:invalid~&]:ring-negative/40'\n );\n }\n el.setAttribute('aria-controls', datepicker._h_datepicker.controls);\n el.setAttribute('aria-expanded', 'false');\n el.setAttribute('aria-haspopup', 'dialog');\n el.setAttribute('type', 'button');\n el.setAttribute('data-slot', 'date-picker-trigger');\n\n el.appendChild(\n createSvg({\n icon: Calendar,\n classes: 'opacity-70 text-inherit size-4',\n attrs: {\n 'aria-hidden': true,\n role: 'presentation',\n },\n })\n );\n\n effect(() => {\n el.setAttribute('data-state', datepicker._h_datepicker.state.expanded ? 'open' : 'closed');\n el.setAttribute('aria-expanded', datepicker._h_datepicker.state.expanded);\n });\n\n const close = () => {\n datepicker._h_datepicker.state.expanded = false;\n };\n\n const handler = () => {\n datepicker._h_datepicker.state.expanded = !datepicker._h_datepicker.state.expanded;\n Alpine.nextTick(() => {\n if (datepicker._h_datepicker.state.expanded) {\n top.addEventListener('click', close, { once: true });\n } else {\n top.removeEventListener('click', close);\n }\n });\n };\n\n el.addEventListener('click', handler);\n\n cleanup(() => {\n el.removeEventListener('click', handler);\n top.removeEventListener('click', close);\n });\n });\n}\n", "import uuidv4 from '../utils/uuid';\nexport default function (Alpine) {\n Alpine.directive('h-dialog-overlay', (el, _, { cleanup }) => {\n el.classList.add('hidden', 'fixed', 'inset-0', 'z-50', 'bg-black/60', 'transition-[opacity,scale]', 'motion-reduce:transition-none', 'duration-200', 'ease-out', 'opacity-0', '*:scale-95');\n el.setAttribute('tabindex', '-1');\n el.setAttribute('data-slot', 'dialog-overlay');\n\n const observer = new MutationObserver(() => {\n if (el.getAttribute('data-open') === 'true') {\n if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) {\n el.classList.remove('hidden', '*:scale-95', 'opacity-0');\n } else {\n el.classList.remove('hidden');\n Alpine.nextTick(() => {\n // Reading 'offsetHeight' forces the browser to apply pending styles first.\n // This guarantees that the animation will always happen.\n el.offsetHeight;\n el.classList.remove('*:scale-95', 'opacity-0');\n });\n }\n const inputs = el.getElementsByTagName('INPUT');\n if (inputs.length) {\n for (let i = 0; i < inputs.length; i++) {\n if (inputs[i].autofocus) {\n inputs[i].focus();\n return;\n }\n }\n inputs[0].focus();\n return;\n } else {\n const textareas = el.getElementsByTagName('TEXTAREA');\n if (textareas.length) {\n for (let i = 0; i < textareas.length; i++) {\n if (textareas[i].autofocus) {\n textareas[i].focus();\n return;\n }\n }\n textareas[0].focus();\n return;\n }\n }\n const buttons = el.getElementsByTagName('BUTTON');\n if (buttons.length) {\n buttons[0].focus();\n }\n } else {\n if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) {\n el.classList.add('hidden', '*:scale-95', 'opacity-0');\n } else {\n el.classList.add('*:scale-95', 'opacity-0');\n }\n }\n });\n\n function onTransitionEnd(event) {\n if (event.target === el && event.target.classList.contains('opacity-0')) {\n el.classList.add('hidden');\n }\n }\n\n el.addEventListener('transitionend', onTransitionEnd);\n\n observer.observe(el, { attributes: true, attributeFilter: ['data-open'] });\n\n cleanup(() => {\n observer.disconnect();\n el.removeEventListener('transitionend', onTransitionEnd);\n });\n });\n\n Alpine.directive('h-dialog', (el) => {\n el.classList.add(\n 'relative',\n 'bg-background',\n 'fixed',\n 'top-[50%]',\n 'left-[50%]',\n 'z-50',\n 'flex',\n 'flex-col',\n 'w-full',\n 'max-w-[calc(100%-2rem)]',\n '-translate-x-1/2',\n '-translate-y-1/2',\n 'gap-4',\n 'rounded-lg',\n 'border',\n 'p-4',\n 'shadow-xl',\n 'sm:max-w-lg',\n 'outline-none',\n 'transition-[opacity,scale]',\n 'motion-reduce:transition-none',\n 'duration-200',\n 'ease-out'\n );\n el.setAttribute('role', 'dialog');\n el.setAttribute('data-slot', 'dialog');\n });\n\n Alpine.directive('h-dialog-header', (el) => {\n el.classList.add('grid', 'grid-cols-[1fr_auto]', 'place-items-start', 'gap-2', 'text-center', 'sm:text-left');\n el.setAttribute('data-slot', 'dialog-header');\n });\n\n Alpine.directive('h-dialog-title', (el, _, { Alpine }) => {\n el.classList.add('order-1', 'text-lg', 'leading-none', 'font-semibold');\n el.setAttribute('data-slot', 'dialog-title');\n const dialog = Alpine.findClosest(el.parentElement, (parent) => parent.getAttribute('role') === 'dialog');\n if (dialog && !dialog.hasAttribute('aria-labelledby') && !dialog.hasAttribute('aria-label')) {\n if (!el.hasAttribute('id')) {\n const id = `dht${uuidv4()}`;\n el.setAttribute('id', id);\n }\n dialog.setAttribute('aria-labelledby', el.getAttribute('id'));\n }\n });\n\n Alpine.directive('h-dialog-close', (el) => {\n el.classList.add(\n 'order-2',\n 'ring-offset-background',\n 'focus:ring-ring',\n 'rounded-xs',\n 'opacity-70',\n 'transition-opacity',\n 'motion-reduce:transition-none',\n 'hover:opacity-100',\n 'focus:ring-2',\n 'focus:ring-offset-2',\n 'focus:outline-hidden',\n 'disabled:pointer-events-none',\n '[&_svg]:pointer-events-none',\n '[&_svg]:shrink-0',\n \"[&_svg:not([class*='size-'])]:size-4\"\n );\n el.setAttribute('data-slot', 'dialog-close');\n el.setAttribute('type', 'button');\n });\n\n Alpine.directive('h-dialog-description', (el, _, { Alpine }) => {\n el.classList.add('order-3', 'col-span-full', 'text-muted-foreground', 'text-sm');\n el.setAttribute('data-slot', 'dialog-description');\n const dialog = Alpine.findClosest(el.parentElement, (parent) => parent.getAttribute('role') === 'dialog');\n if (dialog && !dialog.hasAttribute('aria-describedby') && !dialog.hasAttribute('aria-description')) {\n if (!el.hasAttribute('id')) {\n const id = `dhd${uuidv4()}`;\n el.setAttribute('id', id);\n }\n dialog.setAttribute('aria-describedby', el.getAttribute('id'));\n }\n });\n\n Alpine.directive('h-dialog-footer', (el) => {\n el.classList.add('flex', 'flex-col-reverse', 'gap-2', 'sm:flex-row', 'sm:justify-end');\n el.setAttribute('data-slot', 'dialog-footer');\n });\n}\n", "import { ChevronDown, createSvg } from '../common/icons';\nimport uuidv4 from '../utils/uuid';\nexport default function (Alpine) {\n Alpine.directive('h-exp-panel', (el) => {\n el.classList.add('vbox', 'h-full', 'group/exp', 'data-[floating=true]:gap-2', 'data-[floating=true]:overflow-visible');\n el.setAttribute('data-slot', 'exp-panel');\n });\n\n Alpine.directive('h-exp-panel-item', (el, { expression }, { evaluate, evaluateLater, effect, Alpine }) => {\n el.classList.add(\n 'flex',\n 'flex-col',\n 'overflow-hidden',\n 'transition-all',\n 'motion-reduce:transition-none',\n 'duration-300',\n 'ease-out',\n 'h-full',\n 'border-b',\n 'last:border-b-0',\n 'min-h-12',\n '[[data-size=md]_&]:min-h-10',\n '[[data-size=sm]_&]:min-h-8',\n '[[data-floating=true]_&]:border-b-0',\n '[[data-floating=true]_&]:overflow-visible'\n );\n el.setAttribute('data-slot', 'exp-panel-item');\n\n let itemId;\n if (el.hasAttribute('id')) {\n itemId = el.getAttribute('id');\n } else {\n itemId = `epi${uuidv4()}`;\n }\n\n function setExpanded(expanded) {\n if (expanded) {\n el.classList.add('flex-[1_1_0]');\n el.classList.remove('flex-[0_1_0]');\n } else {\n el.classList.add('flex-[0_1_0]');\n el.classList.remove('flex-[1_1_0]');\n }\n }\n\n el._h_expPanelItem = Alpine.reactive({\n controls: itemId,\n expanded: evaluate(expression || 'false'),\n });\n\n if (expression !== '' && expression !== undefined && expression !== null && expression !== 'true' && expression !== 'false') {\n const getIsExpanded = evaluateLater(expression);\n\n effect(() => {\n getIsExpanded((expanded) => {\n setExpanded(expanded);\n });\n });\n\n effect(() => {\n if (evaluate(expression) !== el._h_expPanelItem.expanded) {\n evaluate(`${expression} = ${el._h_expPanelItem.expanded}`);\n }\n });\n } else {\n effect(() => {\n setExpanded(el._h_expPanelItem.expanded);\n });\n }\n });\n\n Alpine.directive('h-exp-panel-trigger', (el, { original, expression }, { effect, evaluateLater, Alpine, cleanup }) => {\n if (el.tagName.length !== 2 && !el.tagName.startsWith('H')) {\n throw new Error(`${original} must be a header element`);\n }\n\n const expPanelItem = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_expPanelItem'));\n\n if (!expPanelItem) {\n throw new Error(`${original} must have an exp-panel-item parent element`);\n }\n\n el.classList.add(\n 'bg-object-header',\n 'border-b',\n '[[data-slot=exp-panel-item]:last-child>&]:not-has-[button[aria-expanded=true]]:group-has-[button[aria-expanded=true]]/exp:border-b-0',\n 'flex',\n 'h-12',\n 'min-h-12',\n 'px-4',\n 'text-object-header-foreground',\n '[[data-floating=true]_&]:border',\n '[[data-floating=true]_&]:!border-b',\n '[[data-floating=true]_&]:rounded-lg',\n '[[data-floating=true]_&]:shadow-xs',\n '[[data-size=md]_&]:h-10',\n '[[data-size=md]_&]:min-h-10',\n '[[data-size=md]_&]:px-3',\n '[[data-size=sm]_&]:h-8',\n '[[data-size=sm]_&]:min-h-8',\n '[[data-size=sm]_&]:px-2.5',\n '[[data-variant=transparent]_&]:bg-transparent',\n '[[data-variant=transparent]_&]:text-foreground'\n );\n el.setAttribute('tabIndex', '-1');\n\n const getLabel = evaluateLater(expression);\n\n const chevronDown = createSvg({\n icon: ChevronDown,\n classes: 'text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform motion-reduce:transition-none duration-200',\n attrs: {\n 'aria-hidden': true,\n role: 'presentation',\n },\n });\n\n const button = document.createElement('button');\n button.setAttribute('type', 'button');\n button.setAttribute('tabIndex', '0');\n button.setAttribute('data-slot', 'exp-panel-trigger');\n button.classList.add(\n 'cursor-pointer',\n 'focus-visible:border-ring',\n 'focus-visible:ring-ring/50',\n 'flex',\n 'flex-1',\n 'items-center',\n 'justify-between',\n 'gap-4',\n 'text-left',\n 'text-sm',\n 'font-medium',\n 'transition-all',\n 'motion-reduce:transition-none',\n 'outline-none',\n 'hover:underline',\n 'focus-visible:ring-[calc(var(--spacing)*0.75)]',\n 'disabled:pointer-events-none',\n 'disabled:opacity-50',\n '[&[aria-expanded=true]>svg]:rotate-180'\n );\n el.appendChild(button);\n\n effect(() => {\n getLabel((label) => {\n button.innerText = label;\n button.appendChild(chevronDown);\n });\n });\n\n button.setAttribute('id', expPanelItem._h_expPanelItem.id);\n button.setAttribute('aria-controls', expPanelItem._h_expPanelItem.controls);\n\n const setAttributes = () => {\n button.setAttribute('aria-expanded', expPanelItem._h_expPanelItem.expanded);\n };\n\n const handler = () => {\n expPanelItem._h_expPanelItem.expanded = !expPanelItem._h_expPanelItem.expanded;\n setAttributes();\n };\n setAttributes();\n\n el.addEventListener('click', handler);\n\n cleanup(() => {\n el.removeEventListener('click', handler);\n });\n });\n\n Alpine.directive('h-exp-panel-content', (el) => {\n el.classList.add('flex-1', 'overflow-scroll');\n el.setAttribute('data-slot', 'exp-panel-content');\n });\n}\n", "export default function (Alpine) {\n Alpine.directive('h-fieldset', (el) => {\n el.classList.add('vbox', 'gap-6', 'has-[>[data-slot=checkbox-group]]:gap-3', 'has-[>[data-slot=radio-group]]:gap-3');\n el.setAttribute('data-slot', 'fieldset');\n });\n\n Alpine.directive('h-legend', (el, { modifiers }) => {\n el.classList.add('mb-3', 'font-medium', modifiers.includes('label') ? 'text-sm' : 'text-base');\n el.setAttribute('data-slot', 'legend');\n });\n\n Alpine.directive('h-field-group', (el) => {\n el.classList.add('group/field-group', '@container/field-group', 'vbox', 'w-full', 'gap-7', 'data-[slot=checkbox-group]:gap-3', '[&>[data-slot=field-group]]:gap-4');\n el.setAttribute('data-slot', 'field-group');\n });\n\n Alpine.directive('h-field', (el) => {\n el.classList.add('group/field', 'w-full', 'gap-3', 'has-[input:invalid]:text-negative', 'has-[textarea:invalid]:text-negative', 'has-[[aria-invalid=true]]:text-negative');\n switch (el.getAttribute('data-orientation')) {\n case 'horizontal':\n el.classList.add('hbox', 'items-center', '[&>[data-slot=field-label]]:flex-auto', 'has-[>[data-slot=field-content]]:items-start', 'has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px');\n break;\n case 'responsive':\n el.classList.add(\n 'vbox',\n '[&>*]:w-full',\n '[&>.sr-only]:w-auto',\n '@md/field-group:flex-row',\n '@md/field-group:items-center',\n '@md/field-group:[&>*]:w-auto',\n '@md/field-group:[&>[data-slot=field-label]]:flex-auto',\n '@md/field-group:has-[>[data-slot=field-content]]:items-start',\n '@md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px'\n );\n break;\n default:\n el.classList.add('vbox', '[&>*]:w-full', '[&>.sr-only]:w-auto');\n }\n el.setAttribute('role', 'group');\n el.setAttribute('data-slot', 'field');\n });\n\n Alpine.directive('h-field-content', (el) => {\n el.classList.add('group/field-content', 'vbox', 'flex-1', 'gap-1.5', 'leading-snug');\n el.setAttribute('data-slot', 'field-content');\n });\n\n Alpine.directive('h-field-title', (el) => {\n el.classList.add('flex', 'w-fit', 'items-center', 'gap-2', 'text-sm', 'leading-snug', 'font-medium', 'group-data-[disabled=true]/field:opacity-50');\n el.setAttribute('data-slot', 'field-title');\n });\n\n Alpine.directive('h-field-description', (el) => {\n el.classList.add(\n 'text-muted-foreground',\n 'text-sm',\n 'leading-normal',\n 'font-normal',\n 'group-has-[[data-orientation=horizontal]]/field:text-balance',\n 'last:mt-0',\n 'nth-last-2:-mt-1',\n '[[data-variant=legend]+&]:-mt-1.5',\n '[&>a:hover]:text-primary',\n '[&>a]:underline',\n '[&>a]:underline-offset-4'\n );\n el.setAttribute('data-slot', 'field-description');\n\n if (el.getAttribute('data-hide-on-error') === 'true') {\n el.classList.add(\n '[[data-slot=field]_input:invalid~&]:hidden',\n '[[data-slot=field]_textarea:invalid~&]:hidden',\n '[[data-slot=field]_[aria-invalid=true]~&]:hidden',\n 'group-has-[input:invalid]/field:hidden',\n 'group-has-[textarea:invalid)]/field:hidden',\n 'group-has-[[aria-invalid=true]]/field:hidden'\n );\n }\n });\n\n Alpine.directive('h-field-error', (el) => {\n el.classList.add(\n 'hidden',\n '[[data-slot=field]_input:invalid~&]:block',\n '[[data-slot=field]_textarea:invalid~&]:block',\n '[[data-slot=field]_[aria-invalid=true]~&]:block',\n 'group-has-[input:invalid]/field:block',\n 'group-has-[textarea:invalid)]/field:block',\n 'group-has-[[aria-invalid=true]]/field:block',\n 'text-negative',\n 'text-sm',\n 'leading-normal',\n 'font-normal',\n 'group-has-[[data-orientation=horizontal]]/field:text-balance'\n );\n el.setAttribute('data-slot', 'field-error');\n });\n}\n", "import { setSvgContent } from './../common/icons';\n\nexport default function (Alpine) {\n Alpine.directive('h-icon', (el, { original, modifiers }) => {\n if (el.tagName.toLowerCase() !== 'svg') {\n throw new Error(`${original} works only on svg elements`);\n } else if (!el.hasAttribute('role')) {\n throw new Error(`${original} must have a role`);\n } else if (el.getAttribute('role') === 'img' && !el.hasAttribute('aria-labelledby') && !el.hasAttribute('aria-label')) {\n throw new Error(`${original}: svg images with the role of img must have an \"aria-label\" or \"aria-labelledby\" attribute`);\n }\n el.classList.add('fill-current');\n el.setAttribute('data-slot', 'icon');\n if (el.hasAttribute('data-link')) {\n fetch(el.getAttribute('data-link'))\n .then((response) => {\n if (response.status === 200) return response.text();\n throw response;\n })\n .then((content) => {\n const parser = new DOMParser();\n const svg = parser.parseFromString(content, 'image/svg+xml');\n for (let a = 0; a < svg.firstElementChild.attributes.length; a++) {\n el.setAttribute(svg.firstElementChild.attributes[a].name, svg.firstElementChild.attributes[a].value);\n }\n el.append(...svg.firstElementChild.children);\n })\n .catch((response) => {\n console.error(response);\n });\n } else if (modifiers[0]) {\n setSvgContent(el, modifiers[0]);\n }\n });\n}\n", "export default function (Alpine) {\n Alpine.directive('h-info-page', (el) => {\n el.classList.add('vbox', 'min-w-0', 'flex-1', 'items-center', 'justify-center', 'gap-6', 'rounded-lg', 'border-dashed', 'p-6', 'text-center', 'text-balance', 'md:p-12');\n el.setAttribute('data-slot', 'info-page');\n });\n\n Alpine.directive('h-info-page-header', (el) => {\n el.classList.add('vbox', 'max-w-sm', 'items-center', 'gap-2', 'text-center');\n el.setAttribute('data-slot', 'info-page-header');\n });\n\n Alpine.directive('h-info-page-media', (el, { modifiers }) => {\n el.classList.add('hbox', 'shrink-0', 'items-center', 'justify-center', '[&_svg]:pointer-events-none', '[&_svg]:shrink-0');\n if (modifiers.includes('icon')) el.classList.add('bg-muted', 'text-foreground', 'size-10', 'shrink-0', 'items-center', 'justify-center', 'rounded-lg', \"[&_svg:not([class*='size-'])]:size-6\");\n else el.classList.add('bg-transparent');\n el.setAttribute('data-slot', 'info-page-media');\n });\n\n Alpine.directive('h-info-page-title', (el) => {\n el.classList.add('text-lg', 'font-medium', 'tracking-tight');\n el.setAttribute('data-slot', 'info-page-title');\n });\n\n Alpine.directive('h-info-page-description', (el) => {\n el.classList.add('text-muted-foreground', '[&>a:hover]:text-primary', 'text-sm/relaxed', '[&>a]:underline', '[&>a]:underline-offset-4');\n el.setAttribute('data-slot', 'info-page-description');\n });\n\n Alpine.directive('h-info-page-content', (el) => {\n el.classList.add('vbox', 'w-full', 'max-w-sm', 'min-w-0', 'items-center', 'gap-4', 'text-sm', 'text-balance');\n el.setAttribute('data-slot', 'info-page-content');\n });\n}\n", "import uuidv4 from '../utils/uuid';\nimport { Minus, Plus, createSvg } from './../common/icons';\nimport { sizeObserver } from './../common/input-size';\nexport default function (Alpine) {\n Alpine.directive('h-input', (el, { modifiers }, { cleanup }) => {\n el.classList.add(\n 'file:text-foreground',\n 'placeholder:text-muted-foreground',\n 'selection:bg-primary',\n 'selection:text-primary-foreground',\n 'border-input',\n 'min-w-0',\n \"[&:not([type='color'])]:px-3\",\n \"[&:not([type='color'])]:py-1\",\n \"[&[type='color']]:overflow-hidden\",\n '[&::-moz-color-swatch]:border-0',\n '[&::-webkit-color-swatch]:border-0',\n '[&::-webkit-color-swatch-wrapper]:rounded-0',\n '[&::-webkit-color-swatch-wrapper]:p-0',\n 'text-base',\n 'transition-colors',\n 'transition-shadow',\n 'motion-reduce:transition-none',\n 'outline-none',\n 'file:inline-flex',\n 'file:h-7',\n 'file:border-0',\n 'file:bg-transparent',\n 'file:text-sm',\n 'file:font-medium',\n 'disabled:pointer-events-none',\n 'disabled:cursor-not-allowed',\n 'disabled:opacity-50',\n 'md:text-sm',\n 'focus-visible:border-ring',\n 'focus-visible:ring-ring/50',\n 'aria-invalid:ring-negative/20',\n 'dark:aria-invalid:ring-negative/40',\n 'aria-invalid:border-negative',\n 'invalid:!ring-negative/20',\n 'dark:invalid:!ring-negative/40',\n 'invalid:!border-negative'\n );\n if (modifiers.includes('group')) {\n el.classList.add('h-full', 'flex-1', 'rounded-none', 'border-0', 'bg-transparent', 'shadow-none', 'focus-visible:ring-0');\n el.setAttribute('data-slot', 'input-group-control');\n } else if (modifiers.includes('table')) {\n el.classList.add(\n 'size-full',\n 'h-10',\n 'focus-visible:inset-ring-ring/50',\n 'focus-visible:inset-ring-2',\n 'aria-invalid:inset-ring-negative/20',\n 'dark:aria-invalid:inset-ring-negative/40',\n 'invalid:!inset-ring-negative/20',\n 'dark:invalid:!inset-ring-negative/40'\n );\n el.setAttribute('data-slot', 'cell-input');\n } else {\n el.classList.add('w-full', 'rounded-control', 'border', 'bg-input-inner', 'shadow-input', 'focus-visible:ring-[calc(var(--spacing)*0.75)]');\n el.setAttribute('data-slot', 'input');\n\n const observer = sizeObserver(el);\n\n cleanup(() => {\n observer.disconnect();\n });\n }\n });\n\n Alpine.directive('h-input-group', (el, _, { cleanup }) => {\n el.classList.add(\n 'group/input-group',\n 'border-input',\n 'bg-input-inner',\n 'relative',\n 'flex',\n 'w-full',\n 'items-center',\n 'rounded-control',\n 'border',\n 'shadow-input',\n 'transition-colors',\n 'transition-shadow',\n 'motion-reduce:transition-none',\n 'outline-none',\n 'min-w-0',\n 'has-[>textarea]:h-auto',\n 'has-[>[data-align=inline-start]]:[&>input]:pl-2',\n 'has-[>[data-align=inline-end]]:[&>input]:pr-2',\n 'has-[>[data-align=block-start]]:h-auto',\n 'has-[>[data-align=block-start]]:flex-col',\n 'has-[>[data-align=block-start]]:[&>input]:pb-3',\n 'has-[>[data-align=block-end]]:h-auto',\n 'has-[>[data-align=block-end]]:flex-col',\n 'has-[>[data-align=block-end]]:[&>input]:pt-3',\n 'has-[[data-slot=input-group-control]:focus-visible]:border-ring',\n 'has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50',\n 'has-[[data-slot=input-group-control]:focus-visible]:ring-[calc(var(--spacing)*0.75)]',\n 'has-[[data-slot][aria-invalid=true]]:ring-negative/20',\n 'has-[[data-slot][aria-invalid=true]]:border-negative',\n 'dark:has-[[data-slot][aria-invalid=true]]:ring-negative/40'\n );\n el.setAttribute('role', 'group');\n el.setAttribute('data-slot', 'input-group');\n\n const observer = sizeObserver(el);\n\n cleanup(() => {\n observer.disconnect();\n });\n });\n\n Alpine.directive('h-input-group-addon', (el, _, { cleanup }) => {\n el.classList.add(\n 'text-muted-foreground',\n 'flex',\n 'h-auto',\n 'cursor-text',\n 'items-center',\n 'justify-center',\n 'gap-2',\n 'text-sm',\n 'font-medium',\n 'select-none',\n \"[&>svg:not([class*='size-'])]:size-4\",\n '[&>[data-slot=tag]]:rounded-[calc(var(--radius)-5px)]',\n 'data-[disabled=true]:opacity-50',\n 'data-[disabled=true]:pointer-events-none'\n );\n el.setAttribute('role', 'group');\n el.setAttribute('data-slot', 'input-group-addon');\n\n const variants = {\n 'inline-start': [\n 'order-first',\n 'pl-3',\n '[[data-slot=input-group][data-size=sm]_&]:pl-1.25',\n 'has-[>button]:pl-1.25',\n '[[data-slot=input-group][data-size=sm]_&]:has-[>button]:pl-0.5',\n 'has-[>[data-slot|=tag]]:pl-1.5',\n '[[data-slot=input-group][data-size=sm]_&]:has-[>[data-slot|=tag]]:pl-0.5',\n ],\n 'inline-end': [\n 'order-last',\n 'pr-3',\n '[[data-slot=input-group][data-size=sm]_&]:pr-1.25',\n 'has-[>button]:pr-1.25',\n '[[data-slot=input-group][data-size=sm]_&]:has-[>button]:pr-0.5',\n 'has-[>[data-slot|=tag]]:pr-1.5',\n '[[data-slot=input-group][data-size=sm]_&]:has-[>[data-slot|=tag]]:pr-0.5',\n ],\n 'block-start': ['order-first', 'w-full', 'justify-start', 'px-3', 'pt-3', '[.border-b]:pb-3', 'group-has-[>input]/input-group:pt-2.5'],\n 'block-end': ['order-last', 'w-full', 'justify-start', 'px-3', 'pb-3', '[.border-t]:pt-3', 'group-has-[>input]/input-group:pb-2.5'],\n };\n\n function setVariant(variant) {\n if (Object.prototype.hasOwnProperty.call(variants, variant)) el.classList.add(...variants[variant]);\n }\n\n setVariant(el.getAttribute('data-align') ?? 'inline-start');\n\n const handler = (event) => {\n if (event.target.closest('button')) {\n return;\n }\n let input = event.currentTarget.parentElement?.querySelector('input');\n if (!input) input = event.currentTarget.parentElement?.querySelector('textarea');\n input?.focus();\n };\n\n el.addEventListener('click', handler);\n\n cleanup(() => {\n el.removeEventListener('click', handler);\n });\n });\n\n Alpine.directive('h-input-group-text', (el) => {\n el.classList.add('text-muted-foreground', 'flex', 'items-center', 'gap-2', 'text-sm', '[&_svg]:pointer-events-none', \"[&_svg:not([class*='size-'])]:size-4\");\n el.setAttribute('data-slot', 'label');\n });\n\n Alpine.directive('h-input-number', (el, { original }, { cleanup }) => {\n el.classList.add(\n 'overflow-hidden',\n 'group/input-number',\n 'border-input',\n 'bg-input-inner',\n 'relative',\n 'flex',\n 'w-full',\n 'items-center',\n 'rounded-control',\n 'border',\n 'shadow-input',\n 'transition-colors',\n 'transition-shadow',\n 'motion-reduce:transition-none',\n 'duration-200',\n 'outline-none',\n 'min-w-0',\n 'has-[input:focus-visible]:border-ring',\n 'has-[input:focus-visible]:ring-ring/50',\n 'has-[input:focus-visible]:ring-[calc(var(--spacing)*0.75)]',\n 'has-[input[aria-invalid=true]]:ring-negative/20',\n 'has-[input[aria-invalid=true]]:border-negative',\n 'dark:has-[input[aria-invalid=true]]:ring-negative/40',\n 'has-[input:invalid]:ring-negative/20',\n 'has-[input:invalid]:border-negative',\n 'dark:has-[input:invalid]:ring-negative/40',\n 'has-[input:disabled]:pointer-events-none',\n 'has-[input:disabled]:cursor-not-allowed',\n 'has-[input:disabled]:opacity-50'\n );\n el.setAttribute('role', 'group');\n el.setAttribute('data-slot', 'input-number');\n const input = el.querySelector('input');\n if (!input || input.getAttribute('type') !== 'number') {\n throw new Error(`${original} must contain an input of type 'number'`);\n }\n if (!input.hasAttribute('type')) input.setAttribute('type', 'number');\n if (!input.hasAttribute('inputmode')) input.setAttribute('inputmode', 'numeric');\n if (!input.hasAttribute('aria-roledescription')) {\n input.setAttribute('aria-roledescription', 'Number field');\n }\n\n if (!input.hasAttribute('id')) {\n input.setAttribute('id', `in${uuidv4()}`);\n }\n input.setAttribute('tabindex', '0');\n input.setAttribute('autocomplete', 'off');\n input.setAttribute('autocorrect', 'off');\n input.setAttribute('spellcheck', 'off');\n input.setAttribute('data-slot', 'input-number-control');\n input.classList.add('size-full', 'px-3', 'py-1', 'outline-none');\n\n const stepDown = document.createElement('button');\n stepDown.setAttribute('type', 'button');\n stepDown.setAttribute('tabIndex', '-1');\n stepDown.setAttribute('aria-label', 'Decrease');\n stepDown.setAttribute('aria-controls', input.getAttribute('id'));\n stepDown.setAttribute('data-slot', 'step-up-trigger');\n stepDown.appendChild(\n createSvg({\n icon: Minus,\n classes: 'opacity-70 text-inherit size-4 shrink-0 pointer-events-none',\n attrs: {\n 'aria-hidden': true,\n role: 'presentation',\n },\n })\n );\n stepDown.classList.add(\n 'inline-flex',\n 'items-center',\n 'justify-center',\n 'cursor-pointer',\n 'border-l',\n 'border-input',\n '[input[aria-invalid=true]~&]:border-negative',\n '[input:invalid~&]:border-negative',\n 'h-full',\n 'aspect-square',\n 'transition-colors',\n 'motion-reduce:transition-none',\n 'duration-100',\n 'bg-transparent',\n 'hover:bg-secondary',\n 'hover:text-secondary-foreground',\n 'active:bg-secondary-active',\n 'active:text-secondary-foreground',\n 'outline-none',\n 'relative',\n '[&:hover>svg]:text-secondary-foreground'\n );\n el.appendChild(stepDown);\n\n const onStepDown = () => {\n if (input.step === 'any') {\n input.value = (parseFloat(input.value) || 0) - 1;\n } else input.stepDown();\n input.dispatchEvent(new Event('input', { bubbles: true }));\n input.dispatchEvent(new Event('change', { bubbles: true }));\n };\n\n stepDown.addEventListener('click', onStepDown);\n\n const stepUp = document.createElement('button');\n stepUp.setAttribute('type', 'button');\n stepUp.setAttribute('tabIndex', '-1');\n stepUp.setAttribute('aria-label', 'Increase');\n stepUp.setAttribute('aria-controls', input.getAttribute('id'));\n stepUp.setAttribute('data-slot', 'step-up-trigger');\n stepUp.appendChild(\n createSvg({\n icon: Plus,\n classes: 'opacity-70 text-inherit size-4 shrink-0 pointer-events-none',\n attrs: {\n 'aria-hidden': true,\n role: 'presentation',\n },\n })\n );\n stepUp.classList.add(\n 'inline-flex',\n 'items-center',\n 'justify-center',\n 'cursor-pointer',\n 'border-l',\n 'border-input',\n '[input[aria-invalid=true]~&]:border-negative',\n '[input:invalid~&]:border-negative',\n 'h-full',\n 'aspect-square',\n 'transition-all',\n 'motion-reduce:transition-none',\n 'duration-100',\n 'bg-transparent',\n 'hover:bg-secondary',\n 'hover:text-secondary-foreground',\n 'active:bg-secondary-active',\n 'active:text-secondary-foreground',\n 'outline-none',\n 'relative',\n '[&:hover>svg]:text-secondary-foreground'\n );\n\n el.appendChild(stepUp);\n\n const onStepUp = () => {\n if (input.step === 'any') {\n input.value = (parseFloat(input.value) || 0) + 1;\n } else input.stepUp();\n input.dispatchEvent(new Event('input', { bubbles: true }));\n input.dispatchEvent(new Event('change', { bubbles: true }));\n };\n\n stepUp.addEventListener('click', onStepUp);\n\n const observer = sizeObserver(el);\n\n cleanup(() => {\n observer.disconnect();\n stepDown.removeEventListener('click', onStepDown);\n stepUp.removeEventListener('click', onStepUp);\n });\n });\n}\n", "export default function (Alpine) {\n Alpine.directive('h-label', (el, { modifiers }) => {\n el.classList.add(\n 'flex',\n 'items-center',\n 'gap-2',\n 'text-sm',\n 'leading-none',\n 'font-medium',\n 'select-none',\n 'group-data-[disabled=true]:pointer-events-none',\n 'group-data-[disabled=true]:opacity-50',\n 'peer-disabled:cursor-not-allowed',\n 'peer-disabled:opacity-50'\n );\n if (modifiers[0] === 'field') {\n el.classList.add(\n 'group/field-label',\n 'peer/field-label',\n 'flex',\n 'w-fit',\n 'gap-2',\n 'leading-snug',\n 'group-data-[disabled=true]/field:opacity-50',\n 'has-[>[data-slot=field]]:w-full',\n 'has-[>[data-slot=field]]:flex-col',\n 'has-[>[data-slot=field]]:rounded-md',\n 'has-[>[data-slot=field]]:border',\n '[&>*]:data-[slot=field]:p-4'\n );\n el.setAttribute('data-slot', 'field-label');\n } else el.setAttribute('data-slot', 'label');\n });\n}\n", "import uuidv4 from '../utils/uuid';\nexport default function (Alpine) {\n Alpine.directive('h-listbox', (el, _, { cleanup }) => {\n el.classList.add(\n 'divide-solid',\n 'divide-y',\n 'bg-input-inner',\n 'border-input',\n 'border',\n 'rounded-control',\n 'shadow-input',\n 'outline-none',\n 'disabled:pointer-events-none',\n 'disabled:cursor-not-allowed',\n 'disabled:opacity-50',\n 'focus-visible:border-ring',\n 'focus-visible:ring-ring/50',\n 'focus-visible:ring-[calc(var(--spacing)*0.75)]',\n 'aria-invalid:ring-negative/20',\n 'dark:aria-invalid:ring-negative/40',\n 'aria-invalid:border-negative',\n 'invalid:!ring-negative/20',\n 'dark:invalid:!ring-negative/40',\n 'invalid:!border-negative',\n '[&>ul:first-child>*:first-child]:rounded-t-control',\n '[&>ul:last-child>*:last-child]:rounded-b-control'\n );\n el.setAttribute('data-slot', 'listbox');\n el.setAttribute('role', 'listbox');\n\n function focusFirstOption(elem) {\n const firstOption = elem.querySelector('[role=\"option\"]');\n if (firstOption) firstOption.focus();\n }\n\n function focusLastOption(elem) {\n const itemList = elem.querySelectorAll('[role=\"option\"]');\n if (itemList.length) {\n itemList[itemList.length - 1].focus();\n }\n }\n\n function selectOption(option) {\n const selected = el.querySelector('[aria-selected=\"true\"]');\n if (selected) selected.removeAttribute('aria-selected');\n if (selected !== option) option.setAttribute('aria-selected', 'true');\n }\n\n function onKeyDown(event) {\n switch (event.key) {\n case 'PageUp':\n case 'PageDown':\n event.preventDefault();\n break;\n case 'Home':\n focusFirstOption(el);\n break;\n case 'End':\n focusLastOption(el);\n break;\n case 'Up':\n case 'ArrowUp': {\n event.preventDefault();\n let prevElem = event.target.previousElementSibling;\n if (prevElem && prevElem.getAttribute('data-slot') !== 'list-header') {\n prevElem.focus();\n } else {\n prevElem = event.target.parentElement.previousElementSibling;\n if (prevElem && prevElem.tagName === 'UL') {\n focusLastOption(prevElem);\n }\n }\n break;\n }\n case 'Down':\n case 'ArrowDown': {\n event.preventDefault();\n let nextElem = event.target.nextElementSibling;\n if (nextElem) {\n nextElem.focus();\n } else {\n nextElem = event.target.parentElement.nextElementSibling;\n if (nextElem && nextElem.tagName === 'UL') {\n focusFirstOption(nextElem);\n }\n }\n break;\n }\n case ' ':\n case 'Enter':\n selectOption(event.target);\n break;\n default:\n break;\n }\n }\n\n function onClick(event) {\n if (event.target.getAttribute('data-slot') === 'list-item') selectOption(event.target);\n }\n\n el.addEventListener('click', onClick);\n el.addEventListener('keydown', onKeyDown);\n cleanup(() => {\n el.removeEventListener('keydown', onKeyDown);\n el.removeEventListener('click', onClick);\n });\n });\n\n Alpine.directive('h-list', (el) => {\n el.classList.add('divide-solid', 'divide-y');\n el.setAttribute('data-slot', 'list');\n el.setAttribute('role', 'group');\n });\n\n Alpine.directive('h-list-header', (el, { original }, { Alpine }) => {\n el.classList.add('font-medium', 'flex', 'items-center', 'p-2', 'gap-2', 'align-middle', 'bg-table-header', 'text-table-header-foreground');\n el.setAttribute('role', 'presentation');\n el.setAttribute('data-slot', 'list-header');\n const list = Alpine.findClosest(el.parentElement, (parent) => parent.getAttribute('data-slot') === 'list');\n if (!list) {\n throw new Error(`${original} must be placed inside a list element`);\n }\n if (!el.hasAttribute('id')) {\n const id = `lbh${uuidv4()}`;\n el.setAttribute('id', id);\n }\n list.setAttribute('aria-labelledby', el.getAttribute('id'));\n });\n\n Alpine.directive('h-list-item', (el, { modifiers }) => {\n el.classList.add('min-h-11', 'flex', 'items-center', 'p-2', 'gap-2', 'align-middle', 'outline-none');\n el.setAttribute('data-slot', 'list-item');\n const listbox = Alpine.findClosest(el.parentElement, (parent) => parent.getAttribute('data-slot') === 'listbox');\n function setInteractive() {\n el.classList.add(\n 'focus:bg-table-hover',\n 'focus:text-table-hover-foreground',\n 'hover:bg-table-hover',\n 'hover:text-table-hover-foreground',\n 'active:bg-table-active',\n 'active:text-table-active-foreground',\n 'aria-selected:bg-primary',\n 'aria-selected:text-primary-foreground',\n '[&[aria-selected=true]:hover]:bg-primary-hover',\n '[&[aria-selected=true]:hover]:text-primary-hover-foreground',\n '[&[aria-selected=true]:focus]:bg-primary-hover',\n '[&[aria-selected=true]:focus]:text-primary-hover-foreground'\n );\n el.setAttribute('tabindex', '0');\n }\n if (listbox) {\n setInteractive();\n el.setAttribute('role', 'option');\n el.setAttribute('tabindex', '0');\n } else if (modifiers.includes('interactive')) {\n setInteractive();\n } else {\n el.setAttribute('tabindex', '-1');\n }\n });\n}\n", "import { computePosition, flip, offset, shift, size } from '@floating-ui/dom';\nimport uuidv4 from '../utils/uuid';\nimport { Check, ChevronRight, createSvg } from './../common/icons';\nexport default function (Alpine) {\n Alpine.directive('h-menu-trigger', (el, { modifiers }) => {\n el._menu_trigger = {\n isDropdown: modifiers.includes('dropdown'),\n setOpen(open) {\n el.setAttribute('aria-expanded', open);\n },\n };\n if (el._menu_trigger.isDropdown) {\n el.setAttribute('aria-haspopup', 'true');\n el.setAttribute('aria-expanded', 'false');\n if (!el.hasAttribute('id')) {\n el.setAttribute('id', `mt${uuidv4()}`);\n }\n }\n });\n\n Alpine.directive('h-menu', (el, { original, modifiers }, { cleanup, Alpine }) => {\n if (el.tagName !== 'UL') {\n throw new Error(`${original} must be an ul element`);\n }\n el.classList.add(\n 'hidden',\n 'fixed',\n 'bg-popover',\n 'text-popover-foreground',\n 'font-normal',\n 'z-50',\n 'min-w-[8rem]',\n 'overflow-x-hidden',\n 'overflow-y-auto',\n 'rounded-md',\n 'p-1',\n 'shadow-md',\n 'border',\n 'outline-none',\n 'transition-[opacity,scale]',\n 'motion-reduce:transition-none',\n 'duration-100',\n 'ease-out',\n 'opacity-0',\n 'scale-95'\n );\n el.setAttribute('role', 'menu');\n el.setAttribute('aria-orientation', 'vertical');\n el.setAttribute('tabindex', '-1');\n el.setAttribute('data-slot', 'menu');\n const isSubmenu = modifiers.includes('sub');\n\n const menuTrigger = (() => {\n if (isSubmenu) return;\n let sibling = el.previousElementSibling;\n while (sibling && !Object.prototype.hasOwnProperty.call(sibling, '_menu_trigger')) {\n sibling = sibling.previousElementSibling;\n }\n if (!Object.prototype.hasOwnProperty.call(sibling, '_menu_trigger')) {\n throw new Error(`${original} menu must be placed after a menu trigger element`);\n }\n return sibling;\n })();\n\n function setAriaAttrubutes(parent) {\n if (!el.hasAttribute('aria-labelledby') && !el.hasAttribute('aria-label')) {\n if (parent && parent.hasAttribute('id')) {\n el.setAttribute('aria-labelledby', parent.id);\n } else {\n throw new Error(`${original} must have an \"aria-label\" or \"aria-labelledby\" attribute`);\n }\n }\n }\n\n let menuSubItem;\n if (isSubmenu) {\n menuSubItem = Alpine.findClosest(el.parentElement, (parent) => parent.getAttribute('data-slot') === 'menu-sub');\n if (!menuSubItem) {\n throw new Error(`${original} must be placed inside a ${Alpine.prefixed('h-menu-sub')} element`);\n }\n setAriaAttrubutes(menuSubItem);\n } else if (menuTrigger) {\n setAriaAttrubutes(menuTrigger._menu_trigger.isDropdown ? menuTrigger : undefined);\n } else {\n setAriaAttrubutes();\n }\n\n function listenForTrigger(listen) {\n if (listen) {\n if (menuTrigger._menu_trigger.isDropdown) menuTrigger.addEventListener('click', openDropdown);\n else menuTrigger.addEventListener('contextmenu', onContextmenu);\n } else {\n if (menuTrigger._menu_trigger.isDropdown) menuTrigger.removeEventListener('click', openDropdown);\n else menuTrigger.removeEventListener('contextmenu', onContextmenu);\n }\n }\n\n function close(closeParent = false, focusTrigger = false) {\n el.pauseKeyEvents = false;\n if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) {\n el.classList.add('hidden', 'scale-95', 'opacity-0');\n Object.assign(el.style, {\n left: '0px',\n top: '0px',\n });\n } else {\n el.classList.add('scale-95', 'opacity-0');\n }\n top.removeEventListener('contextmenu', onClick);\n top.removeEventListener('click', onClick);\n el.removeEventListener('keydown', onKeyDown);\n if (isSubmenu) {\n if (closeParent) {\n menuSubItem._menu_sub.closeTree();\n }\n } else {\n listenForTrigger(true);\n if (focusTrigger) menuTrigger.focus();\n if (menuTrigger._menu_trigger.isDropdown) {\n menuTrigger._menu_trigger.setOpen(false);\n }\n }\n }\n\n el._menu = { close };\n\n function isPrintableCharacter(str) {\n return str.length === 1 && /\\S/.test(str);\n }\n\n function getFirstChar(text) {\n const clean = text.replaceAll('\\n', '').trim();\n if (clean) return clean[0].toLowerCase();\n return '';\n }\n\n function findMatching(str, items) {\n for (let i = 0; i < items.length; i++) {\n if (getFirstChar(items[i].textContent).startsWith(str.toLowerCase())) {\n items[i].focus();\n return true;\n }\n }\n return false;\n }\n\n function onClick(event) {\n if (event.type === 'contextmenu') event.preventDefault();\n if (el.getAttribute('data-innerclicks') === 'true' && el.contains(event.composedPath()[0])) {\n return;\n } else close(isSubmenu);\n }\n\n el.pauseKeyEvents = false;\n\n function onKeyDown(event) {\n if (!el.pauseKeyEvents) {\n let menuitem;\n switch (event.key) {\n case 'Left':\n case 'ArrowLeft':\n if (isSubmenu) {\n Alpine.nextTick(() => menuSubItem.focus());\n close();\n }\n break;\n case 'Esc':\n case 'Escape':\n if (isSubmenu) {\n Alpine.nextTick(() => menuSubItem.focus());\n }\n close(undefined, true);\n break;\n case 'Tab':\n case ' ':\n case 'Enter':\n if (event.key !== 'Tab') {\n event.preventDefault();\n event.target.click();\n }\n close();\n if (isSubmenu) {\n menuSubItem._menu_sub.closeTree();\n }\n break;\n case 'Down':\n case 'ArrowDown':\n event.preventDefault();\n menuitem = el.querySelector(':scope > [role^=menuitem][tabIndex=\"0\"] ~ [role^=menuitem][tabIndex=\"-1\"]');\n if (!menuitem) menuitem = el.querySelector('[role^=menuitem][tabIndex=\"-1\"]');\n if (menuitem) {\n menuitem.focus();\n }\n break;\n case 'Up':\n case 'ArrowUp': {\n event.preventDefault();\n let menuitems = el.querySelectorAll(':scope > [role^=menuitem][tabIndex=\"-1\"]:has(~ [role^=menuitem][tabIndex=\"0\"])');\n if (menuitems.length) {\n menuitem = menuitems[menuitems.length - 1];\n } else {\n menuitem = el.querySelector(':scope > [role^=menuitem][tabIndex=\"-1\"]:last-of-type');\n }\n if (menuitem) {\n menuitem.focus();\n }\n break;\n }\n case 'Home':\n case 'PageUp':\n event.preventDefault();\n menuitem = el.querySelector(':scope > [role^=menuitem][tabIndex=\"-1\"]:first-of-type');\n if (menuitem) {\n menuitem.focus();\n }\n break;\n case 'End':\n case 'PageDown':\n event.preventDefault();\n menuitem = el.querySelector(':scope > [role^=menuitem][tabIndex=\"-1\"]:last-of-type');\n if (menuitem) {\n menuitem.focus();\n }\n break;\n default:\n if (isPrintableCharacter(event.key)) {\n let items = el.querySelectorAll(':scope > [role^=menuitem][tabindex=\"0\"] ~ [role^=menuitem]');\n if (!findMatching(event.key, items)) {\n items = el.querySelectorAll(':scope > [role^=menuitem][tabindex=\"-1\"]');\n findMatching(event.key, items);\n }\n }\n }\n }\n }\n\n function open(parent) {\n if (el.classList.contains('hidden')) {\n el.classList.remove('hidden');\n el.pauseKeyEvents = false;\n function getPlacement() {\n if (isSubmenu) {\n return 'right-start';\n } else if (menuTrigger._menu_trigger.isDropdown) {\n return el.getAttribute('data-align') || 'bottom-start';\n }\n return 'right-start';\n }\n computePosition(parent, el, {\n placement: getPlacement(),\n strategy: 'fixed',\n middleware: [\n offset(isSubmenu ? 0 : 4),\n flip(),\n shift({ padding: 4 }),\n size({\n apply({ availableWidth, availableHeight, elements }) {\n Object.assign(elements.floating.style, {\n maxWidth: `${Math.max(0, availableWidth) - 4}px`,\n maxHeight: `${Math.max(0, availableHeight) - 4}px`,\n });\n },\n }),\n ],\n }).then(({ x, y }) => {\n if (!isSubmenu) {\n Alpine.nextTick(() => el.focus());\n listenForTrigger(false);\n }\n Alpine.nextTick(() => {\n top.addEventListener('contextmenu', onClick);\n top.addEventListener('click', onClick);\n el.addEventListener('keydown', onKeyDown);\n });\n Object.assign(el.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n el.classList.remove('scale-95', 'opacity-0');\n });\n }\n }\n\n function openDropdown() {\n if (menuTrigger._menu_trigger.isDropdown) {\n menuTrigger._menu_trigger.setOpen(true);\n }\n open(menuTrigger);\n }\n\n function onContextmenu(event) {\n event.preventDefault();\n open({\n getBoundingClientRect() {\n return {\n width: 0,\n height: 0,\n x: event.clientX,\n y: event.clientY,\n top: event.clientY,\n left: event.clientX,\n right: event.clientX,\n bottom: event.clientY,\n };\n },\n });\n listenForTrigger(false);\n }\n\n if (isSubmenu) {\n menuSubItem._menu_sub.open = open;\n menuSubItem._menu_sub.close = close;\n } else {\n listenForTrigger(true);\n }\n\n function onTransitionEnd(event) {\n if (event.target === el && event.target.classList.contains('opacity-0')) {\n el.classList.add('hidden');\n Object.assign(el.style, {\n left: '0px',\n top: '0px',\n });\n }\n }\n\n el.addEventListener('transitionend', onTransitionEnd);\n\n cleanup(() => {\n if (menuTrigger) listenForTrigger(false);\n top.removeEventListener('click', onClick);\n top.removeEventListener('contextmenu', onClick);\n el.removeEventListener('keydown', onKeyDown);\n el.removeEventListener('transitionend', onTransitionEnd);\n });\n });\n\n Alpine.directive('h-menu-item', (el, { original }, { cleanup, Alpine }) => {\n if (el.tagName !== 'LI') {\n throw new Error(`${original} must be a li element`);\n }\n el.classList.add(\n 'focus:bg-secondary-hover',\n 'focus:text-secondary-foreground',\n 'hover:bg-secondary-hover',\n 'hover:text-secondary-foreground',\n 'data-[variant=negative]:text-negative',\n 'data-[variant=negative]:focus:bg-negative/10',\n 'data-[variant=negative]:hover:bg-negative/10',\n 'data-[variant=negative]:focus:text-negative',\n 'data-[variant=negative]:hover:text-negative',\n 'data-[variant=negative]:*:[svg]:!text-negative',\n \"[&_svg:not([class*='text-'])]:text-muted-foreground\",\n 'relative',\n 'flex',\n 'cursor-default',\n 'items-center',\n 'gap-2',\n 'rounded-sm',\n 'px-2',\n 'py-1.5',\n 'text-sm',\n 'outline-hidden',\n 'select-none',\n 'data-[disabled]:pointer-events-none',\n 'data-[disabled]:opacity-50',\n 'data-[inset=true]:pl-8',\n '[&_svg]:pointer-events-none',\n '[&_svg]:shrink-0',\n \"[&_svg:not([class*='size-'])]:size-4\"\n );\n el.setAttribute('role', 'menuitem');\n el.setAttribute('tabindex', '-1');\n el.setAttribute('data-slot', 'menu-item');\n\n const menu = Alpine.findClosest(el.parentElement, (parent) => parent.getAttribute('role') === 'menu');\n\n function focusOut(event) {\n el.setAttribute('tabindex', '-1');\n if (event.type === 'mouseleave') menu.focus();\n }\n\n function focusIn() {\n el.setAttribute('tabindex', '0');\n el.addEventListener('blur', focusOut);\n el.addEventListener('mouseleave', focusOut);\n }\n\n el.addEventListener('mouseenter', focusIn);\n el.addEventListener('focus', focusIn);\n\n cleanup(() => {\n el.removeEventListener('mouseenter', focusIn);\n el.removeEventListener('focus', focusIn);\n el.removeEventListener('blur', focusOut);\n el.removeEventListener('mouseleave', focusOut);\n });\n });\n\n Alpine.directive('h-menu-sub', (el, { original }, { cleanup, Alpine }) => {\n el.classList.add(\n 'focus:bg-secondary-hover',\n 'hover:bg-secondary-hover',\n 'aria-expanded:bg-secondary-hover',\n \"[&_svg:not([class*='text-'])]:text-muted-foreground\",\n 'relative',\n 'flex',\n 'cursor-default',\n 'items-center',\n 'gap-2',\n 'rounded-sm',\n 'px-2',\n 'py-1.5',\n 'text-sm',\n 'outline-hidden',\n 'select-none',\n 'data-[disabled]:pointer-events-none',\n 'data-[disabled]:opacity-50',\n 'data-[inset=true]:pl-8',\n '[&_svg]:pointer-events-none',\n '[&_svg]:shrink-0',\n \"[&_svg:not([class*='size-'])]:size-4\"\n );\n el.setAttribute('role', 'menuitem');\n el.setAttribute('aria-haspopup', 'true');\n el.setAttribute('aria-expanded', 'false');\n el.setAttribute('tabindex', '-1');\n el.setAttribute('data-slot', 'menu-sub');\n\n const chevronRight = createSvg({ icon: ChevronRight, classes: 'size-4 ml-auto', attrs: { 'aria-hidden': true, role: 'presentation' } });\n el.appendChild(chevronRight);\n\n const parentMenu = Alpine.findClosest(el.parentElement, (parent) => parent.getAttribute('role') === 'menu');\n if (!parentMenu) throw new Error(`${original} must have a parent`);\n\n if (!el.hasAttribute('id')) {\n el.setAttribute('id', `ms${uuidv4()}`);\n }\n\n el._menu_sub = {\n open: undefined,\n close: undefined,\n expanded: false,\n closeTree() {\n el.setAttribute('aria-expanded', 'false');\n this.expanded = false;\n el.removeEventListener('keydown', onKeyDown);\n parentMenu.pauseKeyEvents = false;\n parentMenu._menu.close(true);\n },\n };\n\n const keyEvents = ['Right', 'ArrowRight', 'Enter', ' '];\n\n function onKeyDown(event) {\n if (keyEvents.includes(event.key)) {\n event.stopPropagation();\n event.preventDefault();\n el.removeEventListener('keydown', onKeyDown);\n const submenuitem = el.querySelector('[role^=menuitem][tabIndex=\"-1\"]:first-of-type');\n if (submenuitem) {\n el.setAttribute('aria-expanded', 'true');\n el._menu_sub.open(el);\n parentMenu.pauseKeyEvents = true;\n Alpine.nextTick(() => {\n submenuitem.focus();\n el._menu_sub.expanded = true;\n el.setAttribute('aria-expanded', true);\n });\n }\n }\n }\n\n function focusOut(event) {\n el.setAttribute('tabindex', '-1');\n if (event.type === 'mouseleave') {\n el._menu_sub.close();\n el._menu_sub.expanded = false;\n el.setAttribute('aria-expanded', false);\n parentMenu.pauseKeyEvents = false;\n parentMenu.focus();\n } else if (el._menu_sub.expanded) {\n el._menu_sub.close();\n el._menu_sub.expanded = false;\n el.setAttribute('aria-expanded', false);\n parentMenu.pauseKeyEvents = false;\n el.removeEventListener('keydown', onKeyDown);\n }\n }\n\n function focusIn(event) {\n el.setAttribute('tabindex', '0');\n if (event.type === 'click' && event.pointerType === 'touch' && (event.target === el || event.target.parentElement === el)) {\n el._menu_sub.open(el);\n el._menu_sub.expanded = true;\n el.setAttribute('aria-expanded', true);\n event.stopPropagation();\n } else if (event.type === 'mouseenter') {\n el.addEventListener('mouseleave', focusOut);\n el._menu_sub.open(el);\n el._menu_sub.expanded = true;\n el.setAttribute('aria-expanded', true);\n } else {\n if (el._menu_sub.expanded) {\n el._menu_sub.expanded = false;\n el.setAttribute('aria-expanded', false);\n parentMenu.pauseKeyEvents = false;\n }\n el.addEventListener('keydown', onKeyDown);\n el.addEventListener('blur', focusOut); // ?\n }\n }\n\n el.addEventListener('mouseenter', focusIn);\n el.addEventListener('click', focusIn);\n el.addEventListener('focus', focusIn);\n\n cleanup(() => {\n el.removeEventListener('mouseenter', focusIn);\n el.removeEventListener('click', focusIn);\n el.removeEventListener('focus', focusIn);\n el.removeEventListener('blur', focusOut);\n el.removeEventListener('mouseleave', focusOut);\n });\n });\n\n Alpine.directive('h-menu-item-secondary', (el) => {\n el.classList.add('text-muted-foreground', 'ml-auto', 'text-xs', 'tracking-widest');\n el.setAttribute('data-slot', 'menu-item-secondary');\n });\n\n Alpine.directive('h-menu-separator', (el) => {\n el.classList.add('bg-border', '-mx-1', 'my-1', 'h-px');\n el.setAttribute('role', 'presentation');\n el.setAttribute('data-slot', 'menu-separator');\n });\n\n Alpine.directive('h-menu-label', (el) => {\n el.classList.add('text-foreground', 'px-2', 'py-1.5', 'text-sm', 'font-semibold', 'text-left', 'data-[inset=true]:pl-8');\n el.setAttribute('data-slot', 'menu-label');\n });\n\n Alpine.directive('h-menu-checkbox-item', (el, { original }, { cleanup, Alpine }) => {\n if (el.tagName !== 'LI' && el.tagName !== 'DIV') {\n throw new Error(`${original} must be a li or div element`);\n }\n el.classList.add(\n 'focus:bg-secondary-hover',\n 'hover:bg-secondary-hover',\n 'relative',\n 'flex',\n 'cursor-default',\n 'items-center',\n 'gap-2',\n 'rounded-sm',\n 'px-2',\n 'py-1.5',\n 'text-sm',\n 'outline-hidden',\n 'select-none',\n 'aria-[disabled=true]:pointer-events-none',\n 'aria-[disabled=true]:cursor-not-allowed',\n 'aria-[disabled=true]:opacity-50',\n 'transition-all',\n 'motion-reduce:transition-none',\n 'overflow-hidden',\n 'aria-[checked=true]:[&>svg]:visible'\n );\n el.setAttribute('tabindex', '-1');\n el.setAttribute('role', 'menuitemcheckbox');\n el.setAttribute('data-slot', 'menu-checkbox-item');\n\n const check = createSvg({ icon: Check, classes: 'size-4 invisible', attrs: { 'aria-hidden': true, role: 'presentation' } });\n el.prepend(check);\n\n function setState(checked, dispatch = true) {\n if (dispatch)\n Alpine.nextTick(() => {\n el.dispatchEvent(new Event('change', { bubbles: true }));\n });\n el.setAttribute('aria-checked', checked);\n }\n\n function onActivate() {\n el._x_model.set(!el._x_model.get());\n setState(el._x_model.get());\n }\n\n if (Object.prototype.hasOwnProperty.call(el, '_x_model')) {\n setState(el._x_model.get(), false);\n\n el.addEventListener('click', onActivate);\n }\n\n const menu = Alpine.findClosest(el.parentElement, (parent) => parent.getAttribute('role') === 'menu');\n\n function focusOut(event) {\n el.setAttribute('tabindex', '-1');\n if (event.type === 'mouseleave') menu.focus();\n }\n\n function focusIn() {\n el.setAttribute('tabindex', '0');\n el.addEventListener('blur', focusOut);\n el.addEventListener('mouseleave', focusOut);\n }\n\n el.addEventListener('mouseenter', focusIn);\n el.addEventListener('focus', focusIn);\n\n cleanup(() => {\n if (Object.prototype.hasOwnProperty.call(el, '_x_model')) {\n el.removeEventListener('click', onActivate);\n el.removeEventListener('keydown', onActivate);\n }\n el.removeEventListener('mouseenter', focusIn);\n el.removeEventListener('focus', focusIn);\n el.removeEventListener('blur', focusOut);\n el.removeEventListener('mouseleave', focusOut);\n });\n });\n\n Alpine.directive('h-menu-radio-item', (el, { original, expression }, { effect, evaluateLater, cleanup, Alpine }) => {\n if (el.tagName !== 'LI' && el.tagName !== 'DIV') {\n throw new Error(`${original} must be a li or div element`);\n }\n el.classList.add(\n 'focus:bg-secondary-hover',\n 'hover:bg-secondary-hover',\n 'relative',\n 'flex',\n 'cursor-default',\n 'items-center',\n 'gap-2',\n 'rounded-sm',\n 'pr-2',\n 'pl-3.5',\n 'py-1.5',\n 'text-sm',\n 'outline-hidden',\n 'select-none',\n 'aria-[disabled=true]:pointer-events-none',\n 'aria-[disabled=true]:cursor-not-allowed',\n 'aria-[disabled=true]:opacity-50',\n 'transition-all',\n 'motion-reduce:transition-none',\n 'overflow-hidden',\n 'before:invisible',\n 'before:bg-foreground',\n 'before:pointer-events-none',\n 'before:size-2',\n 'before:rounded-full',\n 'before:-translate-x-0.75',\n 'aria-[checked=true]:before:visible'\n );\n el.setAttribute('tabindex', '-1');\n el.setAttribute('type', 'radio');\n el.setAttribute('role', 'menuitemradio');\n el.setAttribute('data-slot', 'menu-radio-item');\n\n const getValue = evaluateLater(expression);\n let value;\n\n effect(() => {\n getValue((val) => (value = val));\n });\n\n function setState(checked, dispatch = true) {\n el.setAttribute('aria-checked', checked);\n if (dispatch) el.dispatchEvent(new Event('change', { bubbles: true }));\n }\n\n function onActivate(event) {\n if (event.type === 'keydown') {\n if (event.key !== ' ' && event.key !== 'Enter') {\n return;\n } else if (event.key === ' ') {\n event.preventDefault();\n }\n }\n if (el._x_model.get() !== value) {\n el._x_model.set(value);\n }\n }\n\n if (Object.prototype.hasOwnProperty.call(el, '_x_model')) {\n effect(() => {\n setState(el._x_model.get() === value);\n });\n\n el.addEventListener('click', onActivate);\n el.addEventListener('keydown', onActivate);\n }\n\n const menu = Alpine.findClosest(el.parentElement, (parent) => parent.getAttribute('role') === 'menu');\n\n function focusOut(event) {\n el.setAttribute('tabindex', '-1');\n if (event.type === 'mouseleave') menu.focus();\n }\n\n function focusIn() {\n el.setAttribute('tabindex', '0');\n el.addEventListener('blur', focusOut);\n el.addEventListener('mouseleave', focusOut);\n }\n\n el.addEventListener('mouseenter', focusIn);\n el.addEventListener('focus', focusIn);\n\n cleanup(() => {\n if (Object.prototype.hasOwnProperty.call(el, '_x_model')) {\n el.removeEventListener('click', onActivate);\n el.removeEventListener('keydown', onActivate);\n }\n el.removeEventListener('mouseenter', focusIn);\n el.removeEventListener('focus', focusIn);\n el.removeEventListener('blur', focusOut);\n el.removeEventListener('mouseleave', focusOut);\n });\n });\n}\n", "export function getBreakpointListener(handler, breakpoint = 768, frame = false) {\n let bps = Number.isFinite(breakpoint) ? `${breakpoint}px` : breakpoint;\n const mql = frame ? window.matchMedia(`(width <= ${bps})`) : top.matchMedia(`(width <= ${bps})`);\n const onWidthChange = (event) => {\n handler(event.matches);\n };\n mql.addEventListener('change', onWidthChange);\n handler(mql.matches);\n return {\n _mql: mql,\n _onWidthChange: onWidthChange,\n remove() {\n this._mql.removeEventListener('change', this._onWidthChange);\n },\n };\n}\n", "import { classListStartsWith } from '../common/class-list';\nimport { getBreakpointListener } from '../utils/breakpoint-listener';\nimport uuidv4 from '../utils/uuid';\nexport default function (Alpine) {\n Alpine.store('_h_notifications', {\n items: [],\n listeners: [],\n\n push(id = `hn${uuidv4()}`, template, position = 'top-right', timeout = 5000, data = {}) {\n if (!template) {\n throw new Error('Notification must have a template ID');\n }\n const item = {\n id,\n template,\n position,\n timeout,\n data: Alpine.reactive(data),\n };\n this.items.push(item);\n this.listeners.forEach((listener) => {\n if (Object.prototype.hasOwnProperty.call(listener, 'added')) listener.added(item);\n });\n },\n\n update(id, data) {\n if (!id) {\n throw new Error('Cannot update a notification if an ID is not provided');\n }\n const index = this.items.findIndex((item) => item.id === id);\n if (index > -1) {\n for (const [key, value] of Object.entries(data)) {\n this.items[index].data[key] = value;\n }\n this.listeners.forEach((listener) => {\n if (Object.prototype.hasOwnProperty.call(listener, 'updated')) listener.updated(id, data);\n });\n } else {\n console.error(`Notification with id \"${id}\" does not exist`);\n }\n },\n\n remove(id) {\n if (!id) {\n throw new Error('Cannot remove a notification if an ID is not provided');\n }\n this.listeners.forEach((listener) => {\n if (Object.prototype.hasOwnProperty.call(listener, 'removed')) listener.removed(id);\n });\n this.items = this.items.filter((n) => n.id !== id);\n },\n });\n\n Alpine.magic('notifications', () => {\n return {\n add({ id, template, position, timeout, data } = {}) {\n Alpine.store('_h_notifications').push(id, template, position, timeout, data);\n },\n update({ id, data } = {}) {\n Alpine.store('_h_notifications').update(id, data);\n },\n remove(id) {\n Alpine.store('_h_notifications').remove(id);\n },\n addListener(listener) {\n Alpine.store('_h_notifications').listeners.push(listener);\n return Alpine.store('_h_notifications').listeners[Alpine.store('_h_notifications').listeners.length - 1];\n },\n removeListener(listener) {\n Alpine.store('_h_notifications').listeners = Alpine.store('_h_notifications').listeners.filter((item) => item !== listener);\n },\n };\n });\n\n Alpine.directive('h-notification-overlay', (el, { original }, { cleanup, Alpine }) => {\n if (el.tagName !== 'SECTION') {\n throw new Error(`${original} must be a button`);\n }\n const notificationTemplates = {};\n el.querySelectorAll('template').forEach((template) => {\n if (!template.hasAttribute('id')) {\n throw new Error('Notification templates must have an ID');\n }\n notificationTemplates[template.getAttribute('id')] = template;\n });\n el.classList.add('fixed', 'w', 'inset-0', 'z-60', 'pointer-events-none', 'grid', 'grid-rows-2', 'grid-cols-1', 'lg:grid-cols-2', 'xl:grid-cols-3');\n el.setAttribute('tabindex', '-1');\n el.setAttribute('aria-live', 'polite');\n el.setAttribute('aria-atomic', 'false');\n el.setAttribute('data-slot', 'notification-overlay');\n\n const commonListClasses = ['flex', 'flex-col', 'py-4', 'p-10', 'gap-4', 'overflow-visible', 'size-full'];\n const commonTopClasses = ['[mask-image:linear-gradient(to_bottom,black_80%,transparent)]', 'row-1'];\n const commonBottomClasses = ['[mask-image:linear-gradient(to_top,black_80%,transparent)]', 'row-2'];\n\n const olTopLeft = document.createElement('ol');\n olTopLeft.classList.add(...commonListClasses, ...commonTopClasses, 'max-lg:hidden', 'items-start');\n olTopLeft.setAttribute('tabindex', '-1');\n el.appendChild(olTopLeft);\n\n const olTopCenter = document.createElement('ol');\n olTopCenter.classList.add(...commonListClasses, ...commonTopClasses, 'lg:col-2', 'items-center');\n olTopCenter.setAttribute('tabindex', '-1');\n el.appendChild(olTopCenter);\n\n const olTopRight = document.createElement('ol');\n olTopRight.classList.add(...commonListClasses, ...commonTopClasses, 'max-lg:hidden', 'lg:col-2', 'xl:col-3', 'items-end');\n olTopRight.setAttribute('tabindex', '-1');\n el.appendChild(olTopRight);\n\n const olBottomLeft = document.createElement('ol');\n olBottomLeft.classList.add(...commonListClasses, ...commonBottomClasses, 'max-lg:hidden', 'items-start', 'justify-end');\n olBottomLeft.setAttribute('tabindex', '-1');\n el.appendChild(olBottomLeft);\n\n const olBottomCenter = document.createElement('ol');\n olBottomCenter.classList.add(...commonListClasses, ...commonBottomClasses, 'lg:col-2', 'items-center', 'justify-end');\n olBottomCenter.setAttribute('tabindex', '-1');\n el.appendChild(olBottomCenter);\n\n const olBottomRight = document.createElement('ol');\n olBottomRight.classList.add(...commonListClasses, ...commonBottomClasses, 'max-lg:hidden', 'lg:col-2', 'xl:col-3', 'items-end', 'justify-end');\n olBottomRight.setAttribute('tabindex', '-1');\n el.appendChild(olBottomRight);\n\n let isLarge = true;\n let isExtraLarge = true;\n\n const lgBreakpointListener = getBreakpointListener((matches) => {\n isLarge = !matches;\n }, getComputedStyle(el).getPropertyValue('--breakpoint-lg').trim());\n\n const xlBreakpointListener = getBreakpointListener((matches) => {\n isExtraLarge = !matches;\n }, getComputedStyle(el).getPropertyValue('--breakpoint-xl').trim());\n\n const listener = {\n added(item) {\n const clone = notificationTemplates[item.template].content.firstElementChild.cloneNode(true);\n clone.classList.add('transform', 'transition-all', 'motion-reduce:transition-none', 'duration-300', 'ease-out', 'opacity-0');\n clone.setAttribute('id', item.id);\n Alpine.addScopeToNode(clone, item.data);\n if (!isExtraLarge && !isLarge) {\n if (item.position.startsWith('top-')) {\n item.position = 'top-center';\n } else {\n item.position = 'bottom-center';\n }\n } else if (!isExtraLarge) {\n if (item.position === 'top-center') {\n item.position = 'top-right';\n } else if (item.position === 'bottom-center') {\n item.position = 'bottom-right';\n }\n }\n if (item.position === 'top-left') {\n clone._h_animation_class = '-translate-x-full';\n clone.classList.add(clone._h_animation_class);\n olTopLeft.appendChild(clone);\n } else if (item.position === 'top-center') {\n clone._h_animation_class = '-translate-y-full';\n clone.classList.add(clone._h_animation_class);\n olTopCenter.appendChild(clone);\n } else if (item.position === 'top-right') {\n clone._h_animation_class = 'translate-x-full';\n clone.classList.add(clone._h_animation_class);\n olTopRight.appendChild(clone);\n } else if (item.position === 'bottom-left') {\n clone._h_animation_class = '-translate-x-full';\n clone.classList.add(clone._h_animation_class);\n olBottomLeft.appendChild(clone);\n } else if (item.position === 'bottom-center') {\n clone._h_animation_class = 'translate-y-full';\n clone.classList.add(clone._h_animation_class);\n olBottomCenter.appendChild(clone);\n } else {\n clone._h_animation_class = 'translate-x-full';\n clone.classList.add(clone._h_animation_class);\n olBottomRight.appendChild(clone);\n }\n Alpine.initTree(clone);\n Alpine.nextTick(() => {\n // Reading 'offsetHeight' forces the browser to apply pending styles first.\n // This guarantees that the animation will always happen.\n clone.offsetHeight;\n clone.classList.remove(clone._h_animation_class, 'opacity-0');\n });\n if (item.timeout > 0) {\n setTimeout(() => {\n Alpine.store('_h_notifications').remove(item.id);\n }, item.timeout);\n }\n },\n removed(id) {\n const element = el.querySelector(`#${id}`);\n if (element) {\n if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) {\n Alpine.destroyTree(element);\n element.remove();\n } else {\n element.addEventListener(\n 'transitionend',\n () => {\n Alpine.destroyTree(element);\n element.remove();\n },\n { once: true }\n );\n element.classList.add(element._h_animation_class, 'opacity-0');\n }\n }\n },\n };\n Alpine.store('_h_notifications').listeners.push(listener);\n if (Alpine.store('_h_notifications').items.length) {\n Alpine.store('_h_notifications').items.forEach((item) => {\n listener.added(item);\n });\n }\n\n cleanup(() => {\n lgBreakpointListener.remove();\n xlBreakpointListener.remove();\n });\n });\n\n Alpine.directive('h-notification-list', (el, { original }) => {\n if (el.tagName !== 'OL' && el.tagName !== 'UL') {\n throw new Error(`${original} must be a list element`);\n }\n el.classList.add('flex', 'flex-col', 'divide-solid', 'divide-y');\n el.setAttribute('data-slot', 'notification-list');\n el.setAttribute('role', 'group');\n });\n\n Alpine.directive('h-notification', (el, { original, modifiers }) => {\n if (el.tagName !== 'LI') {\n throw new Error(`${original} must be a list item element`);\n }\n el.classList.add('pointer-events-auto', 'p-3', 'flex', 'gap-2');\n if (modifiers.includes('floating')) {\n el.classList.add('rounded-lg', 'data-[variant=toast]:rounded-full', 'data-[variant=toast]:py-2', 'border', 'shadow-lg', 'bg-popover', 'text-popover-foreground');\n } else {\n el.classList.add('data-[unread=true]:border-l-warning', 'data-[unread=true]:border-l-3');\n }\n el.setAttribute('data-slot', 'notification');\n el.setAttribute('role', 'alert');\n });\n\n Alpine.directive('h-notification-media', (el) => {\n if (!classListStartsWith(el.classList, 'items-')) {\n el.classList.add('items-center');\n }\n if (!classListStartsWith(el.classList, 'justify-')) {\n el.classList.add('justify-center');\n }\n el.classList.add('flex', 'flex-col', '[&_svg]:pointer-events-none', \"[&_svg:not([class*='size-'])]:size-4\", '[&>svg]:text-current');\n el.setAttribute('data-slot', 'notification-media');\n });\n\n Alpine.directive('h-notification-title', (el) => {\n el.classList.add('line-clamp-1', 'text-sm', 'font-medium', 'tracking-tight');\n el.setAttribute('data-slot', 'notification-title');\n });\n\n Alpine.directive('h-notification-description', (el) => {\n el.classList.add('text-muted-foreground', 'text-sm', 'font-medium', '[&_p]:leading-relaxed');\n el.setAttribute('data-slot', 'notification-description');\n });\n\n Alpine.directive('h-notification-actions', (el) => {\n if (!classListStartsWith(el.classList, 'justify-')) {\n el.classList.add('[&[data-orientation=vertical]]:justify-center');\n }\n el.classList.add('flex', 'gap-2', 'data-[orientation=vertical]:flex-col');\n el.setAttribute('data-slot', 'notification-actions');\n });\n\n Alpine.directive('h-notification-close', (el, { original }, { cleanup, Alpine }) => {\n if (!el.hasAttribute('data-slot')) el.setAttribute('data-slot', 'notification-close');\n let nId;\n function close() {\n Alpine.store('_h_notifications').remove(nId);\n }\n Alpine.findClosest(el.parentElement, (parent) => {\n if (parent.getAttribute('data-slot') === 'notification') {\n nId = parent.id;\n return true;\n }\n return false;\n });\n if (nId) {\n el.addEventListener('click', close);\n cleanup(() => {\n el.removeEventListener('click', close);\n });\n } else {\n console.error(`${original} must be inside a notification with an id`);\n }\n });\n}\n", "import { Ellipsis, createSvg } from './../common/icons';\n\nexport default function (Alpine) {\n Alpine.directive('h-pagination', (el) => {\n el.classList.add('mx-auto', 'flex', 'w-full', 'justify-center');\n el.setAttribute('role', 'navigation');\n el.setAttribute('aria-label', 'pagination');\n el.setAttribute('data-slot', 'pagination');\n });\n\n Alpine.directive('h-pagination-content', (el) => {\n el.classList.add('hbox', 'items-center', 'gap-1');\n el.setAttribute('data-slot', 'pagination-content');\n });\n\n Alpine.directive('h-pagination-item', (el) => {\n el.setAttribute('data-slot', 'pagination-item');\n });\n\n Alpine.directive('h-pagination-link', (el, { modifiers, expression }, { effect, evaluateLater }) => {\n el.classList.add(\n 'inline-flex',\n 'items-center',\n 'justify-center',\n 'whitespace-nowrap',\n 'rounded-control',\n 'text-sm',\n 'font-medium',\n 'transition-all',\n 'motion-reduce:transition-none',\n 'disabled:pointer-events-none',\n 'disabled:opacity-50',\n '[&_svg]:pointer-events-none',\n \"[&_svg:not([class*='size-'])]:size-4\",\n 'shrink-0',\n '[&_svg]:shrink-0',\n 'outline-none',\n 'focus-visible:border-ring',\n 'focus-visible:ring-ring/50',\n 'focus-visible:ring-[calc(var(--spacing)*0.75)]',\n 'h-9',\n 'min-w-9',\n 'text-foreground',\n 'hover:bg-secondary',\n 'hover:text-secondary-foreground',\n 'active:bg-secondary-active'\n );\n if (modifiers[0]) {\n el.classList.add('gap-1', 'px-2.5', modifiers[0] === 'previous' ? 'sm:pl-2.5' : 'sm:pr-2.5');\n } else {\n const getActive = evaluateLater(expression);\n\n effect(() => {\n getActive((active) => {\n if (active) {\n el.classList.remove('bg-transparent');\n el.classList.add('border', 'bg-background');\n el.setAttribute('aria-current', 'page');\n } else {\n el.classList.add('bg-transparent');\n el.classList.remove('border', 'bg-background');\n el.setAttribute('aria-current', false);\n }\n });\n });\n }\n el.setAttribute('data-slot', 'pagination-link');\n });\n\n Alpine.directive('h-pagination-link-label', (el) => {\n el.classList.add('hidden', 'sm:block');\n });\n\n Alpine.directive('h-pagination-ellipsis', (el) => {\n el.classList.add('flex', 'size-9', 'items-center', 'justify-center');\n\n el.appendChild(\n createSvg({\n icon: Ellipsis,\n attrs: {\n 'aria-hidden': true,\n role: 'presentation',\n },\n })\n );\n\n el.setAttribute('data-slot', 'pagination-ellipsis');\n });\n}\n", "import { autoUpdate, computePosition, flip, offset, shift, size } from '@floating-ui/dom';\nimport uuidv4 from '../utils/uuid';\nexport default function (Alpine) {\n Alpine.directive('h-popover-trigger', (el, { expression, modifiers }, { effect, evaluate, evaluateLater, Alpine, cleanup }) => {\n el._h_popover = Alpine.reactive({\n id: undefined,\n controls: `hpc${uuidv4()}`,\n auto: expression ? false : true,\n expanded: expression ? evaluate(expression) : false,\n });\n if (expression) {\n const getExpanded = evaluateLater(expression);\n effect(() => {\n getExpanded((expanded) => {\n el._h_popover.expanded = expanded;\n });\n });\n }\n el.setAttribute('type', 'button');\n if (modifiers.includes('chevron')) {\n el.classList.add('[&_svg]:transition-transform', 'motion-reduce:[&_svg]:transition-none', '[&[aria-expanded=true]>svg:not(:first-child):last-child]:rotate-180');\n }\n\n if (!el.hasAttribute('data-slot')) el.setAttribute('data-slot', 'popover-trigger');\n\n if (el.hasAttribute('id')) {\n el._h_popover.id = el.getAttribute('id');\n } else {\n el._h_popover.id = `hp${uuidv4()}`;\n el.setAttribute('id', el._h_popover.id);\n }\n el.setAttribute('aria-controls', el._h_popover.controls);\n el.setAttribute('aria-haspopup', 'dialog');\n\n const setAttributes = () => {\n el.setAttribute('aria-expanded', el._h_popover.expanded);\n };\n\n const close = () => {\n el._h_popover.expanded = false;\n el.addEventListener('click', handler);\n setAttributes();\n };\n\n const handler = () => {\n el._h_popover.expanded = !el._h_popover.expanded;\n setAttributes();\n Alpine.nextTick(() => {\n if (el._h_popover.auto && el._h_popover.expanded) {\n top.addEventListener('click', close, { once: true });\n el.removeEventListener('click', handler);\n }\n });\n };\n setAttributes();\n\n if (el._h_popover.auto) {\n el.addEventListener('click', handler);\n\n cleanup(() => {\n el.removeEventListener('click', handler);\n top.removeEventListener('click', close);\n });\n } else {\n effect(() => {\n setAttributes();\n });\n }\n });\n\n Alpine.directive('h-popover', (el, { original, modifiers }, { effect, cleanup }) => {\n const popover = (() => {\n let sibling = el.previousElementSibling;\n while (sibling && !Object.prototype.hasOwnProperty.call(sibling, '_h_popover')) {\n sibling = sibling.previousElementSibling;\n }\n return sibling;\n })();\n\n if (!popover) {\n throw new Error(`${original} must be placed after a popover element`);\n }\n el.classList.add(\n 'absolute',\n 'bg-popover',\n 'text-popover-foreground',\n 'hidden',\n 'top-0',\n 'left-0',\n 'z-50',\n 'min-w-[1rem]',\n 'rounded-md',\n 'border',\n 'shadow-md',\n 'outline-hidden',\n 'overflow-auto',\n 'transition-[opacity,scale]',\n 'motion-reduce:transition-none',\n 'duration-100',\n 'ease-out',\n 'opacity-0',\n 'scale-95'\n );\n el.setAttribute('data-slot', 'popover');\n el.setAttribute('role', 'dialog');\n el.setAttribute('tabindex', '-1');\n el.setAttribute('id', popover._h_popover.controls);\n el.setAttribute('aria-labelledby', popover._h_popover.id);\n\n let noScroll = modifiers.includes('no-scroll');\n if (noScroll) {\n el.classList.remove('overflow-auto');\n el.classList.add('overflow-none');\n }\n\n const stopPropagation = (event) => {\n event.stopPropagation();\n };\n\n if (el.getAttribute('data-innerclicks') === 'true') {\n el.addEventListener('click', stopPropagation);\n }\n\n let autoUpdateCleanup;\n\n function updatePosition() {\n computePosition(popover, el, {\n placement: el.getAttribute('data-align') || 'bottom-start',\n middleware: [\n offset(4),\n flip(),\n shift({ padding: 4 }),\n !noScroll\n ? size({\n apply({ availableWidth, availableHeight, elements }) {\n Object.assign(elements.floating.style, {\n maxWidth: `${Math.max(0, availableWidth) - 4}px`,\n maxHeight: `${Math.max(0, availableHeight) - 4}px`,\n });\n },\n })\n : undefined,\n ],\n }).then(({ x, y }) => {\n Object.assign(el.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n el.classList.remove('scale-95', 'opacity-0');\n });\n }\n\n effect(() => {\n if (popover._h_popover.expanded) {\n el.classList.remove('hidden');\n autoUpdateCleanup = autoUpdate(popover, el, updatePosition);\n } else {\n if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) {\n el.classList.add('hidden', 'scale-95', 'opacity-0');\n Object.assign(el.style, {\n left: '0px',\n top: '0px',\n });\n } else {\n el.classList.add('scale-95', 'opacity-0');\n }\n if (autoUpdateCleanup) autoUpdateCleanup();\n }\n });\n\n function onTransitionEnd(event) {\n if (event.target === el && event.target.classList.contains('opacity-0')) {\n el.classList.add('hidden');\n Object.assign(el.style, {\n left: '0px',\n top: '0px',\n });\n }\n }\n\n el.addEventListener('transitionend', onTransitionEnd);\n\n cleanup(() => {\n el.removeEventListener('click', stopPropagation);\n el.removeEventListener('transitionend', onTransitionEnd);\n });\n });\n}\n", "export default function (Alpine) {\n Alpine.directive('h-progress', (el, { expression }, { effect, evaluateLater }) => {\n el.classList.add('bg-secondary', 'relative', 'h-2', 'w-full', 'overflow-hidden', 'rounded-full');\n el.setAttribute('data-slot', 'progress');\n\n const indicator = document.createElement('div');\n indicator.classList.add('bg-primary', 'h-full', 'w-full', 'flex-1', 'transition-all', 'motion-reduce:transition-none', 'rounded-full');\n indicator.setAttribute('data-slot', 'progress-indicator');\n Object.assign(indicator.style, {\n transform: `translateX(-${100 - 0}%)`,\n });\n el.appendChild(indicator);\n\n const getProgress = evaluateLater(expression);\n\n effect(() => {\n getProgress((progress) => {\n Object.assign(indicator.style, {\n transform: `translateX(-${100 - (progress ?? 0)}%)`,\n });\n });\n });\n });\n}\n", "export default function (Alpine) {\n Alpine.directive('h-radio', (el) => {\n el.classList.add(\n '[&>input]:absolute',\n '[&>input]:appearance-none',\n '[&>input]:bg-transparent',\n '[&>input]:border-0',\n '[&>input]:cursor-pointer',\n '[&>input]:focus-visible:border-ring',\n '[&>input]:focus-visible:ring-[calc(var(--spacing)*0.75)]',\n '[&>input]:focus-visible:ring-ring/50',\n '[&>input]:left-0',\n '[&>input]:outline-none',\n '[&>input]:rounded-full',\n '[&>input]:size-full',\n '[&>input]:top-0',\n 'aspect-square',\n 'before:bg-clip-padding',\n 'before:bg-primary',\n 'before:block',\n 'before:border-3',\n 'before:border-transparent',\n 'before:invisible',\n 'before:pointer-events-none',\n 'before:rounded-full',\n 'before:size-full',\n 'bg-input-inner',\n 'border',\n 'border-input',\n 'dark:has-[input[aria-invalid=true]]:ring-negative/40',\n 'dark:has-[input:invalid]:ring-negative/40',\n 'has-[input[aria-invalid=true]]:border-negative',\n 'has-[input[aria-invalid=true]]:ring-negative/20',\n 'has-[input:checked]:before:visible',\n 'has-[input:disabled]:cursor-not-allowed',\n 'has-[input:disabled]:opacity-50',\n 'has-[input:invalid]:border-negative',\n 'has-[input:invalid]:ring-negative/20',\n 'relative',\n 'rounded-full',\n 'shadow-input',\n 'shrink-0',\n 'size-5'\n );\n el.setAttribute('tabindex', '-1');\n el.setAttribute('data-slot', 'radio');\n });\n}\n", "import { create } from 'nouislider';\n\nexport default function (Alpine) {\n Alpine.directive('h-range', (el, { expression }, { evaluate, cleanup }) => {\n el.classList.add('harmonia-slider');\n el.setAttribute('data-slot', 'range');\n create(el, evaluate(expression));\n if (Object.prototype.hasOwnProperty.call(el, '_x_model')) {\n el.noUiSlider.on('change', (values) => {\n el._x_model.set(values);\n el.dispatchEvent(new Event('change', { bubbles: true }));\n });\n\n cleanup(() => {\n el.noUiSlider.off('change');\n });\n }\n });\n}\n", "import { autoUpdate, computePosition, flip, offset, shift, size } from '@floating-ui/dom';\nimport uuidv4 from '../utils/uuid';\nimport { Check, ChevronDown, Search, createSvg } from './../common/icons';\nimport { sizeObserver } from './../common/input-size';\nconst FilterType = Object.freeze({\n 'starts-with': 0,\n contains: 1,\n 'contains-each': 2,\n none: 3,\n});\n\nexport default function (Alpine) {\n Alpine.directive('h-select', (el, { modifiers }, { Alpine, cleanup }) => {\n el._h_select = Alpine.reactive({\n fieldLabelId: undefined,\n trigger: undefined,\n controls: `hsc${uuidv4()}`,\n expanded: false,\n multiple: false,\n label: [],\n refreshLabel: undefined,\n listeners: [],\n search: '',\n focusSearch: undefined,\n filterType: FilterType['starts-with'],\n });\n el._h_model = {\n set: undefined,\n get: undefined,\n };\n el.classList.add('cursor-pointer', 'outline-none', 'transition-colors', 'transition-shadow', 'motion-reduce:transition-none', 'duration-200', 'w-full', 'has-[input:disabled]:pointer-events-none', 'has-[input:disabled]:opacity-50');\n if (modifiers.includes('table')) {\n el.classList.add(\n 'h-10',\n 'flex',\n 'focus-visible:inset-ring-ring/50',\n 'focus-visible:inset-ring-2',\n '[&>[data-slot=\"select-input\"]]:hover:bg-table-hover',\n '[&>[data-slot=\"select-input\"]]:hover:text-table-hover-foreground',\n '[&>[data-slot=\"select-input\"]]:active:!bg-table-active',\n '[&>[data-slot=\"select-input\"]]:active:!text-table-active-foreground'\n );\n el.setAttribute('data-slot', 'cell-input-select');\n } else {\n el.classList.add(\n 'border-input',\n 'has-focus-visible:border-ring',\n 'has-focus-visible:ring-[calc(var(--spacing)*0.75)]',\n 'has-focus-visible:ring-ring/50',\n 'dark:has-[input[aria-invalid=true]]:ring-negative/40',\n 'dark:has-[input:invalid]:ring-negative/40',\n 'has-[input[aria-invalid=true]]:border-negative',\n 'has-[input[aria-invalid=true]]:ring-negative/20',\n 'has-[input:invalid]:border-negative',\n 'has-[input:invalid]:ring-negative/20',\n '[&>[data-slot=\"select-input\"]]:hover:bg-secondary-hover',\n '[&>[data-slot=\"select-input\"]]:hover:text-secondary-foreground',\n '[&>[data-slot=\"select-input\"]]:active:bg-secondary-active',\n '[&>[data-slot=\"select-input\"]]:active:text-secondary-foreground',\n '[&>[data-slot=\"select-input\"]]:rounded-control',\n 'rounded-control',\n 'border',\n 'bg-input-inner',\n 'text-sm',\n 'whitespace-nowrap',\n 'shadow-input'\n );\n el.setAttribute('data-slot', 'select');\n\n const observer = sizeObserver(el);\n\n cleanup(() => {\n observer.disconnect();\n });\n }\n });\n\n Alpine.directive('h-select-input', (el, { original }, { effect, cleanup, Alpine }) => {\n if (el.tagName !== 'INPUT') {\n throw new Error(`${original} must be an input of type \"text\"`);\n }\n\n const select = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_select'));\n const label = (() => {\n const field = Alpine.findClosest(el.parentElement, (parent) => parent.getAttribute('data-slot') === 'field');\n if (field) {\n return field.querySelector('[data-slot=field-label]');\n }\n return;\n })();\n\n if (!select) {\n throw new Error(`${original} must be inside a select element`);\n } else if (Object.prototype.hasOwnProperty.call(el, '_x_model')) {\n select._h_select.multiple = Array.isArray(el._x_model.get());\n select._h_model.set = (value) => {\n if (select._h_select.multiple) {\n const vIndex = el._x_model.get().indexOf(value);\n if (vIndex > -1) {\n const newArr = el._x_model.get();\n newArr.splice(vIndex, 1);\n el._x_model.set(newArr);\n } else {\n const arr = el._x_model.get();\n arr.push(value);\n el._x_model.set(arr);\n }\n } else if (el._x_model.get() !== value) {\n el._x_model.set(value);\n } else {\n el._x_model.set('');\n }\n el.dispatchEvent(new Event('change', { bubbles: true }));\n };\n select._h_model.get = el._x_model.get;\n } else {\n select._h_model.set = (value) => {\n el.value = value;\n el.dispatchEvent(new Event('change', { bubbles: true }));\n };\n select._h_model.get = () => el.value;\n }\n\n el.classList.add('hidden');\n el.setAttribute('type', 'text');\n\n const fakeTrigger = document.createElement('span');\n const displayValue = document.createElement('span');\n displayValue.classList.add('text-left', 'truncate', 'w-full');\n fakeTrigger.appendChild(displayValue);\n fakeTrigger.setAttribute('data-slot', 'select-value');\n fakeTrigger.setAttribute('tabindex', '0');\n fakeTrigger.classList.add('flex', 'items-center', 'justify-between', 'gap-2', 'outline-none', 'pl-3', 'pr-2', 'size-full', '[&[aria-expanded=true]>svg]:rotate-180');\n select._h_select.trigger = fakeTrigger;\n\n let labelObserver;\n\n if (label) {\n if (!label.hasAttribute('id')) {\n label.setAttribute('id', `hsil${uuidv4()}`);\n }\n select._h_select.fieldLabelId = label.getAttribute('id');\n fakeTrigger.setAttribute('aria-labelledby', label.getAttribute('id'));\n\n labelObserver = new MutationObserver(() => {\n select._h_select.fieldLabelId = label.getAttribute('id');\n });\n\n labelObserver.observe(label, { attributes: true, attributeFilter: ['id'] });\n }\n\n function getPlaceholder() {\n if (!el.value) {\n const value = el.getAttribute('placeholder');\n if (value) {\n displayValue.innerText = value;\n displayValue.classList.add('text-muted-foreground');\n } else {\n displayValue.innerText = '';\n displayValue.classList.remove('text-muted-foreground');\n }\n }\n }\n\n getPlaceholder();\n\n const observer = new MutationObserver(() => {\n getPlaceholder();\n });\n\n observer.observe(el, { attributes: true, attributeFilter: ['placeholder'] });\n\n effect(() => {\n if (select._h_select.label.length === 1) {\n displayValue.innerText = select._h_select.label[0];\n displayValue.classList.remove('text-muted-foreground');\n } else if (select._h_select.label.length > 1) {\n displayValue.innerText = select._h_select.label.join(', ');\n displayValue.classList.remove('text-muted-foreground');\n } else {\n getPlaceholder();\n }\n });\n\n fakeTrigger.setAttribute('data-slot', 'select-input');\n fakeTrigger.setAttribute('aria-controls', select._h_select.controls);\n fakeTrigger.setAttribute('aria-haspopup', 'listbox');\n fakeTrigger.setAttribute('aria-autocomplete', 'none');\n fakeTrigger.setAttribute('role', 'combobox');\n\n effect(() => {\n fakeTrigger.setAttribute('aria-expanded', select._h_select.expanded);\n });\n\n const close = (focusSelect = false) => {\n select._h_select.expanded = false;\n top.removeEventListener('click', close);\n el.parentElement.removeEventListener('keydown', onKeyDown);\n options = null;\n if (focusSelect) fakeTrigger.focus();\n };\n\n let content;\n let options;\n\n const onKeyDown = (event) => {\n switch (event.key) {\n case 'Down':\n case 'ArrowDown': {\n event.preventDefault();\n let nextIndex = 0;\n for (let o = 0; o < options.length; o++) {\n if (options[o].getAttribute('tabindex') === '0') {\n options[o].setAttribute('tabindex', '-1');\n if (o < options.length - 1) nextIndex = o + 1;\n break;\n }\n }\n if (options[nextIndex].getAttribute('data-disabled') === 'true') {\n if (nextIndex === options.length - 1) nextIndex = 0;\n for (let o = nextIndex; o < options.length; o++) {\n if (options[o].getAttribute('data-disabled') !== 'true') {\n nextIndex = o;\n break;\n }\n }\n }\n options[nextIndex].setAttribute('tabindex', '0');\n options[nextIndex].focus();\n break;\n }\n case 'Up':\n case 'ArrowUp': {\n event.preventDefault();\n let prevIndex = options.length - 1;\n for (let o = options.length - 1; o >= 0; o--) {\n if (options[o].getAttribute('tabindex') === '0') {\n options[o].setAttribute('tabindex', '-1');\n if (o !== 0) prevIndex = o - 1;\n break;\n }\n }\n if (options[prevIndex].getAttribute('data-disabled') === 'true') {\n if (prevIndex === 0) prevIndex = options.length - 1;\n for (let o = prevIndex; o >= 0; o--) {\n if (options[o].getAttribute('data-disabled') !== 'true') {\n prevIndex = o;\n break;\n }\n }\n }\n options[prevIndex].setAttribute('tabindex', '0');\n options[prevIndex].focus();\n break;\n }\n case 'Home':\n case 'PageUp':\n event.preventDefault();\n for (let o = 0; o < options.length; o++) {\n if (options[o].getAttribute('tabindex') === '0') {\n options[o].setAttribute('tabindex', '-1');\n break;\n }\n }\n options[0].setAttribute('tabindex', '0');\n options[0].focus();\n break;\n case 'End':\n case 'PageDown':\n event.preventDefault();\n for (let o = 0; o < options.length; o++) {\n if (options[o].getAttribute('tabindex') === '0') {\n options[o].setAttribute('tabindex', '-1');\n break;\n }\n }\n options[options.length - 1].setAttribute('tabindex', '0');\n options[options.length - 1].focus();\n break;\n case ' ':\n case 'Enter':\n event.preventDefault();\n if (!select._h_select.multiple) {\n close(true);\n }\n break;\n case 'Escape':\n event.preventDefault();\n close(true);\n break;\n case 'Tab':\n close();\n break;\n case 'Control':\n case 'Shift':\n case 'Alt':\n break;\n default:\n if (select._h_select.focusSearch) {\n for (let o = 0; o < options.length; o++) {\n if (options[o].getAttribute('tabindex') === '0') {\n options[o].setAttribute('tabindex', '-1');\n break;\n }\n }\n select._h_select.focusSearch();\n }\n }\n };\n\n const onClick = () => {\n select._h_select.expanded = !select._h_select.expanded;\n if (select._h_select.expanded) {\n if (!content) content = select.querySelector(`#${select._h_select.controls}`);\n options = content.querySelectorAll('[role=option]');\n }\n Alpine.nextTick(() => {\n if (select._h_select.expanded) {\n top.addEventListener('click', close, { once: true });\n el.parentElement.addEventListener('keydown', onKeyDown);\n } else {\n top.removeEventListener('click', close);\n el.parentElement.removeEventListener('keydown', onKeyDown);\n options = null;\n }\n });\n };\n\n const onPress = (event) => {\n if (event.key === 'Escape' && select._h_select.expanded) close(true);\n else if (event.key === 'Enter') {\n event.preventDefault();\n onClick();\n } else if (event.key === ' ') {\n event.preventDefault();\n setTimeout(() => onClick(), 0);\n }\n };\n\n fakeTrigger.addEventListener('keydown', onPress);\n fakeTrigger.addEventListener('click', onClick);\n\n const chevronDown = createSvg({\n icon: ChevronDown,\n classes: 'opacity-70 text-inherit size-4 shrink-0 pointer-events-none transition-transform motion-reduce:transition-none duration-200',\n attrs: {\n 'aria-hidden': true,\n role: 'presentation',\n },\n });\n\n el.parentElement.appendChild(fakeTrigger);\n fakeTrigger.appendChild(chevronDown);\n\n const onInputChange = () => {\n select._h_select.label.length = 0;\n for (let i = 0; i < select._h_select.listeners.length; i++) {\n const label = select._h_select.listeners[i](select._h_model.get());\n if (label) {\n select._h_select.label.push(label);\n }\n }\n };\n\n select._h_select.refreshLabel = onInputChange;\n\n el.addEventListener('change', onInputChange);\n\n cleanup(() => {\n fakeTrigger.removeEventListener('click', onClick);\n fakeTrigger.removeEventListener('keydown', onPress);\n el.parentElement.removeEventListener('keydown', onKeyDown);\n top.removeEventListener('click', close);\n el.removeEventListener('change', onInputChange);\n observer.disconnect();\n if (labelObserver) {\n labelObserver.disconnect();\n }\n });\n });\n\n Alpine.directive('h-select-content', (el, { original }, { effect, cleanup, Alpine }) => {\n const select = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_select'));\n if (!select) {\n throw new Error(`${original} must be inside a select element`);\n }\n el.classList.add(\n 'absolute',\n 'bg-popover',\n 'text-popover-foreground',\n 'hidden',\n 'p-1',\n 'top-0',\n 'left-0',\n 'z-50',\n 'min-w-[1rem]',\n 'overflow-x-hidden',\n 'overflow-y-auto',\n 'rounded-md',\n 'border',\n 'shadow-md',\n 'transition-[opacity,scale]',\n 'motion-reduce:transition-none',\n 'duration-100',\n 'ease-out',\n 'opacity-0',\n 'scale-95'\n );\n el.setAttribute('data-slot', 'select-content');\n el.setAttribute('role', 'listbox');\n el.setAttribute('id', select._h_select.controls);\n el.setAttribute('tabindex', '-1');\n\n if (!select._h_select.trigger) {\n throw new Error(`${original}: trigger not found`);\n }\n\n let autoUpdateCleanup;\n\n function updatePosition() {\n computePosition(select._h_select.trigger, el, {\n placement: el.getAttribute('data-align') || 'bottom-start',\n middleware: [\n offset(4),\n flip(),\n shift({ padding: 4 }),\n size({\n apply({ availableWidth, availableHeight, elements }) {\n Object.assign(elements.floating.style, {\n maxWidth: `${Math.max(0, availableWidth) - 4}px`,\n maxHeight: `${Math.max(0, availableHeight) - 4}px`,\n });\n },\n }),\n ],\n }).then(({ x, y }) => {\n Object.assign(el.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n el.classList.remove('scale-95', 'opacity-0');\n });\n }\n\n effect(() => {\n el.setAttribute('aria-labelledby', select._h_select.fieldLabelId);\n });\n\n effect(() => {\n if (select._h_select.expanded) {\n el.classList.remove('hidden');\n autoUpdateCleanup = autoUpdate(select._h_select.trigger, el, updatePosition);\n } else {\n if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) {\n el.classList.add('hidden', 'scale-95', 'opacity-0');\n Object.assign(el.style, {\n left: '0px',\n top: '0px',\n });\n } else {\n el.classList.add('scale-95', 'opacity-0');\n }\n if (autoUpdateCleanup) autoUpdateCleanup();\n }\n });\n\n function onTransitionEnd(event) {\n if (event.target === el && event.target.classList.contains('opacity-0')) {\n el.classList.add('hidden');\n Object.assign(el.style, {\n left: '0px',\n top: '0px',\n });\n }\n }\n\n el.addEventListener('transitionend', onTransitionEnd);\n\n cleanup(() => {\n el.removeEventListener('transitionend', onTransitionEnd);\n });\n });\n\n Alpine.directive('h-select-search', (el, { original }, { effect, cleanup, Alpine }) => {\n const select = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_select'));\n if (!select) {\n throw new Error(`${original} must be inside an h-select element`);\n } else {\n select._h_select.filterType = FilterType[el.getAttribute('data-filter')] ?? FilterType['starts-with'];\n }\n el.classList.add('flex', 'h-8', 'items-center', 'gap-2', 'border-b', 'px-2');\n el.setAttribute('data-slot', 'select-search');\n el.setAttribute('aria-autocomplete', select._h_select.filterType === FilterType.none ? 'both' : 'list');\n el.setAttribute('aria-controls', select._h_select.controls);\n el.setAttribute('aria-haspopup', 'listbox');\n el.setAttribute('role', 'combobox');\n el.setAttribute('autocomplete', 'off');\n el.setAttribute('autocorrect', 'off');\n el.setAttribute('spellcheck', 'false');\n const searchIcon = createSvg({ icon: Search, classes: 'size-4 shrink-0 opacity-50', attrs: { 'aria-hidden': true, role: 'presentation' } });\n const searchInput = document.createElement('input');\n searchInput.setAttribute('type', 'text');\n searchInput.setAttribute('data-slot', 'select-input');\n searchInput.classList.add('placeholder:text-muted-foreground', 'flex', 'h-10', 'w-full', 'rounded-md', 'bg-transparent', 'py-3', 'text-sm', 'outline-hidden', 'disabled:cursor-not-allowed', 'disabled:opacity-50');\n el.appendChild(searchIcon);\n el.appendChild(searchInput);\n\n select._h_select.focusSearch = () => {\n searchInput.focus();\n };\n\n function onActivate(event) {\n if (event.type === 'keydown' && (event.key === 'Escape' || event.key === 'ArrowDown' || event.key === 'Down')) return;\n event.stopPropagation();\n }\n\n el.addEventListener('click', onActivate);\n el.addEventListener('keydown', onActivate);\n\n function onInput() {\n select._h_select.search = searchInput.value.toLowerCase();\n }\n\n if (select._h_select.filterType !== FilterType.none) {\n searchInput.addEventListener('keyup', onInput);\n }\n\n effect(() => {\n if (select._h_select.expanded) searchInput.focus({ preventScroll: true });\n el.setAttribute('aria-expanded', select._h_select.expanded);\n });\n\n const observer = new MutationObserver(() => {\n select._h_select.filterType = FilterType[el.getAttribute('data-filter')] ?? FilterType['starts-with'];\n el.setAttribute('aria-autocomplete', select._h_select.filterType === FilterType.none ? 'both' : 'list');\n });\n\n observer.observe(el, { attributes: true, attributeFilter: ['data-filter'] });\n\n cleanup(() => {\n el.removeEventListener('click', onActivate);\n el.removeEventListener('keydown', onActivate);\n if (select._h_select.filterType !== FilterType.none) searchInput.removeEventListener('keyup', onInput);\n observer.disconnect();\n });\n });\n\n Alpine.directive('h-select-group', (el, _, { effect }) => {\n el.setAttribute('data-slot', 'select-group');\n el._h_selectGroup = Alpine.reactive({\n labelledby: undefined,\n });\n\n effect(() => {\n if (el._h_selectGroup.labelledby) {\n el.setAttribute('aria-labelledby', el._h_selectGroup.labelledby);\n }\n });\n });\n\n Alpine.directive('h-select-label', (el) => {\n el.classList.add('text-muted-foreground', 'px-2', 'py-1.5', 'text-xs');\n el.setAttribute('data-slot', 'select-label');\n\n const selectGroup = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_selectGroup'));\n if (selectGroup) {\n const id = `hsl${uuidv4()}`;\n el.setAttribute('id', id);\n selectGroup._h_selectGroup.labelledby = id;\n }\n });\n\n Alpine.directive('h-select-option', (el, { original, expression }, { effect, evaluateLater, cleanup }) => {\n const select = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_select'));\n if (!select) {\n throw new Error(`${original} must be inside an h-select element`);\n }\n\n el.classList.add(\n 'focus:bg-primary',\n 'focus:text-primary-foreground',\n 'hover:bg-secondary-hover',\n 'hover:text-secondary-foreground',\n \"[&_svg:not([class*='text-'])]:text-muted-foreground\",\n \"focus:[&_svg:not([class*='text-'])]:text-primary-foreground\",\n \"hover:[&_svg:not([class*='text-'])]:text-secondary-foreground\",\n 'relative',\n 'flex',\n 'w-full',\n 'cursor-default',\n 'items-center',\n 'gap-2',\n 'rounded-sm',\n 'py-1.5',\n 'pr-8',\n 'pl-2',\n 'text-sm',\n 'outline-hidden',\n 'select-none',\n 'data-[disabled]:pointer-events-none',\n 'data-[disabled]:opacity-50',\n '[&_svg]:pointer-events-none',\n '[&_svg]:shrink-0',\n \"[&_svg:not([class*='size-'])]:size-4\",\n '*:[span]:last:flex',\n '*:[span]:last:items-center',\n '*:[span]:last:gap-2'\n );\n el.setAttribute('data-slot', 'select-option');\n el.setAttribute('tabindex', '-1');\n\n const id = `hso${uuidv4()}`;\n el.setAttribute('role', 'option');\n el.setAttribute('aria-labelledby', id);\n\n const indicatorEl = document.createElement('span');\n const labelEl = document.createElement('span');\n labelEl.setAttribute('id', id);\n indicatorEl.classList.add('absolute', 'right-2', 'flex', 'size-3.5', 'items-center', 'justify-center', 'invisible');\n indicatorEl.setAttribute('aria-hidden', 'true');\n const check = createSvg({ icon: Check, attrs: { 'aria-hidden': true, role: 'presentation' } });\n indicatorEl.appendChild(check);\n\n el.appendChild(indicatorEl);\n el.appendChild(labelEl);\n\n function getValue() {\n return el.getAttribute('data-value');\n }\n\n const getLabel = evaluateLater(expression);\n\n effect(() => {\n getLabel((label) => {\n labelEl.innerText = label;\n select._h_select.refreshLabel();\n });\n });\n\n effect(() => {\n if (select._h_select.search) {\n if (select._h_select.filterType === FilterType['starts-with']) {\n if (!labelEl.innerText.toLowerCase().startsWith(select._h_select.search)) {\n el.classList.add('hidden');\n } else el.classList.remove('hidden');\n } else if (select._h_select.filterType === FilterType.contains) {\n if (!labelEl.innerText.toLowerCase().includes(select._h_select.search)) {\n el.classList.add('hidden');\n } else el.classList.remove('hidden');\n } else if (select._h_select.filterType === FilterType['contains-each']) {\n const terms = select._h_select.search.split(' ');\n const label = labelEl.innerText.toLowerCase();\n if (!terms.every((term) => label.includes(term))) el.classList.add('hidden');\n else el.classList.remove('hidden');\n } else {\n el.classList.remove('hidden');\n }\n } else el.classList.remove('hidden');\n });\n\n function setSelectedState(selected) {\n if (selected) {\n indicatorEl.classList.remove('invisible');\n el.setAttribute('aria-selected', 'true');\n return labelEl.innerText;\n }\n indicatorEl.classList.add('invisible');\n el.setAttribute('aria-selected', 'false');\n return '';\n }\n\n const onModelChange = (value) => {\n return setSelectedState(select._h_select.multiple ? value.includes(getValue()) : value === getValue());\n };\n\n select._h_select.listeners.push(onModelChange);\n\n const onActivate = (event) => {\n if ((event.type === 'keydown' && (event.key === 'Enter' || event.key === ' ')) || event.type === 'click') {\n if (select._h_select.multiple) {\n event.stopPropagation();\n const vIndex = select._h_model.get().indexOf(getValue());\n if (vIndex > -1) {\n const val = select._h_model.get().splice(vIndex, 1);\n select._h_model.set(val);\n } else {\n select._h_model.get().push(getValue());\n }\n } else if (select._h_model.get() !== getValue()) {\n select._h_model.set(getValue());\n } else if (select.getAttribute('data-clearable') === 'true') {\n select._h_model.set('');\n }\n }\n };\n\n el.addEventListener('click', onActivate);\n el.addEventListener('keydown', onActivate);\n\n cleanup(() => {\n el.removeEventListener('click', onActivate);\n el.removeEventListener('keydown', onActivate);\n const lIndex = select._h_select.listeners.indexOf(onModelChange);\n select._h_select.listeners.splice(lIndex, 1);\n });\n });\n\n Alpine.directive('h-select-separator', (el) => {\n el.classList.add('bg-border', 'pointer-events-none', '-mx-1', 'my-1', 'h-px');\n el.setAttribute('data-slot', 'select-separator');\n el.setAttribute('aria-hidden', 'true');\n el.setAttribute('role', 'none');\n });\n}\n", "export default function (Alpine) {\n Alpine.directive('h-separator', (el) => {\n el.classList.add(\n 'bg-border',\n 'shrink-0',\n 'data-[orientation=horizontal]:h-px',\n 'data-[orientation=horizontal]:w-full',\n 'data-[orientation=vertical]:h-full',\n 'data-[orientation=vertical]:w-px',\n 'data-[orientation=vertical]:[[data-slot=input-group]_&]:h-auto',\n 'data-[orientation=vertical]:[[data-slot=input-group]_&]:self-stretch',\n 'data-[orientation=horizontal]:[[data-slot=input-group]_&]:w-auto',\n 'data-[orientation=horizontal]:[[data-slot=input-group]_&]:grow'\n );\n el.setAttribute('role', 'none');\n el.setAttribute('data-slot', 'separator');\n });\n}\n", "export default function (Alpine) {\n Alpine.directive('h-sheet-overlay', (el, { expression }, { effect, evaluate, evaluateLater, cleanup }) => {\n el._h_sheet_overlay = {\n showSheet: undefined,\n hideSheet: undefined,\n state: Alpine.reactive({\n open: evaluate(expression || 'false'),\n }),\n };\n el.classList.add('hidden', 'fixed', 'inset-0', 'z-50', 'bg-black/50', 'transition-opacity', 'motion-reduce:transition-none', 'duration-200', 'ease-out', 'opacity-0');\n el.setAttribute('tabindex', '-1');\n el.setAttribute('data-slot', 'sheet-overlay');\n\n const getIsOpen = evaluateLater(expression);\n\n effect(() => {\n getIsOpen((isOpen) => {\n el._h_sheet_overlay.state.open = isOpen;\n });\n });\n\n effect(() => {\n if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) {\n if (el._h_sheet_overlay.state.open) {\n el.classList.remove('hidden', 'opacity-0');\n } else {\n el.classList.add('hidden', 'opacity-0');\n }\n } else if (el._h_sheet_overlay.state.open) {\n el.classList.remove('hidden');\n el.offsetHeight;\n el.classList.remove('opacity-0');\n } else {\n el.classList.add('opacity-0');\n }\n });\n\n function onTransitionEnd(event) {\n if (event.target === el && event.target.classList.contains('opacity-0')) {\n el.classList.add('hidden');\n }\n }\n\n el.addEventListener('transitionend', onTransitionEnd);\n\n const onClick = (event) => {\n if (event.target.getAttribute('data-slot') === 'sheet-overlay') {\n evaluate(`${expression} = false`);\n }\n };\n\n el.addEventListener('click', onClick);\n cleanup(() => {\n el.removeEventListener('click', onClick);\n el.removeEventListener('transitionend', onTransitionEnd);\n });\n });\n\n Alpine.directive('h-sheet', (el, { original }, { effect, cleanup }) => {\n const overlay = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_sheet_overlay'));\n if (!overlay) {\n throw new Error(`${original} must be placed inside a sheet overlay`);\n }\n el.classList.add('hidden', 'bg-background', 'fixed', 'shadow-lg', 'transform', 'transition-all', 'motion-reduce:transition-none', 'duration-200', 'ease-out');\n el.setAttribute('data-slot', 'sheet');\n\n let lastSide;\n\n const getTranslateClass = (side) => {\n switch (side) {\n case 'top':\n return '-translate-y-full';\n case 'right':\n return 'translate-x-full';\n case 'left':\n return '-translate-x-full';\n default:\n return 'translate-y-full';\n }\n };\n\n const getSideClasses = (side) => {\n switch (side) {\n case 'top':\n return ['inset-x-0', 'top-0', 'h-auto'];\n case 'right':\n return ['inset-y-0', 'right-0', 'h-full', 'w-auto', 'sm:max-w-sm'];\n case 'left':\n return ['inset-y-0', 'left-0', 'h-full', 'w-auto', 'sm:max-w-sm'];\n default:\n return ['inset-x-0', 'bottom-0', 'h-auto'];\n }\n };\n\n const setSide = (side) => {\n el.classList.remove(...getSideClasses(lastSide));\n el.classList.add(...getSideClasses(side));\n lastSide = side;\n };\n\n const observer = new MutationObserver(() => {\n setSide(el.getAttribute('data-align'));\n });\n\n setSide(el.getAttribute('data-align'));\n el.classList.add(getTranslateClass(lastSide));\n\n function onTransitionEnd(event) {\n if (event.target === el && event.target.classList.contains(getTranslateClass(lastSide))) {\n el.classList.add('hidden');\n }\n }\n\n el.addEventListener('transitionend', onTransitionEnd);\n\n effect(() => {\n if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) {\n if (overlay._h_sheet_overlay.state.open) {\n el.classList.remove('hidden', getTranslateClass(lastSide));\n } else {\n el.classList.add('hidden', getTranslateClass(lastSide));\n }\n } else if (overlay._h_sheet_overlay.state.open) {\n el.classList.remove('hidden');\n el.offsetHeight;\n el.classList.remove(getTranslateClass(lastSide));\n } else {\n el.classList.add(getTranslateClass(lastSide));\n }\n });\n\n observer.observe(el, { attributes: true, attributeFilter: ['data-align'] });\n\n cleanup(() => {\n observer.disconnect();\n el.removeEventListener('transitionend', onTransitionEnd);\n });\n });\n}\n", "import uuidv4 from '../utils/uuid';\nimport { ChevronRight, createSvg } from './../common/icons';\nexport default function (Alpine) {\n Alpine.directive('h-sidebar', (el, { modifiers }, { cleanup }) => {\n el.classList.add('group/sidebar', 'bg-sidebar', 'text-sidebar-foreground', 'border-sidebar-border', 'vbox', 'h-full', 'w-(--sidebar-width,16rem)', 'data-[collapsed=true]:w-min');\n if (modifiers.includes('right')) el.classList.add('border-l');\n else el.classList.add('border-r');\n\n el.setAttribute('data-slot', 'sidebar');\n\n const setFloating = () => {\n if (el.getAttribute('data-floating') === 'true') {\n el.classList.add('border', 'rounded-lg', 'shadow-sm');\n } else {\n el.classList.remove('border', 'rounded-lg', 'shadow-sm');\n }\n };\n\n setFloating();\n\n const observer = new MutationObserver(() => {\n setFloating();\n });\n\n observer.observe(el, { attributes: true, attributeFilter: ['data-floating'] });\n\n cleanup(() => {\n observer.disconnect();\n });\n });\n\n Alpine.directive('h-sidebar-header', (el) => {\n el.classList.add('vbox', 'gap-2', 'px-2', 'h-12', 'justify-center', 'border-b');\n if (el.dataset.borderless && el.dataset.borderless === 'true') el.classList.remove('border-b');\n el.setAttribute('data-slot', 'sidebar-header');\n });\n\n Alpine.directive('h-sidebar-content', (el) => {\n el.classList.add('vbox', 'min-h-0', 'flex-1', 'overflow-auto', 'scrollbar-none');\n el.setAttribute('data-slot', 'sidebar-content');\n });\n\n Alpine.directive('h-sidebar-group', (el, { expression, modifiers }, { effect, evaluate, evaluateLater, Alpine }) => {\n el.classList.add('relative', 'vbox', 'w-full', 'min-w-0', 'p-2');\n el.setAttribute('data-slot', 'sidebar-group');\n el._h_sidebar_group = {\n collapsable: modifiers.includes('collapsed'),\n controlId: undefined,\n controls: undefined,\n state: Alpine.reactive({\n collapsed: evaluate(expression || 'false'),\n }),\n };\n if (expression) {\n el._h_sidebar_group.state = Alpine.reactive({\n collapsed: evaluate(expression || 'false'),\n });\n const getCollapsed = evaluateLater(expression);\n effect(() => {\n getCollapsed((collapsed) => {\n el._h_sidebar_group.state.collapsed = collapsed;\n });\n });\n }\n });\n\n Alpine.directive('h-sidebar-group-label', (el, { original }, { cleanup }) => {\n const group = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_sidebar_group'));\n if (!group) {\n throw new Error(`${original} must be placed inside a sidebar group`);\n }\n el.classList.add(\n 'ring-sidebar-ring',\n 'flex',\n 'h-8',\n 'shrink-0',\n 'items-center',\n 'rounded-md',\n 'px-2',\n 'font-medium',\n 'outline-hidden',\n 'transition-[margin,opacity]',\n 'motion-reduce:transition-none',\n 'duration-200',\n 'ease-linear',\n 'focus-visible:ring-2',\n '[&>svg]:size-4',\n '[&>svg]:shrink-0',\n 'group-data-[collapsed=true]/sidebar:!hidden'\n );\n el.setAttribute('data-slot', 'sidebar-group-label');\n\n if (group._h_sidebar_group.collapsable) {\n el.classList.add('text-sidebar-foreground', 'text-sm', 'hover:bg-sidebar-secondary', 'hover:text-sidebar-secondary-foreground', 'active:bg-sidebar-secondary', 'active:text-sidebar-secondary-foreground');\n\n if (el.hasAttribute('id')) {\n group._h_sidebar_group.controlId = el.getAttribute('id');\n } else {\n group._h_sidebar_group.controlId = `sgl${uuidv4()}`;\n el.setAttribute('id', group._h_sidebar_group.controlId);\n }\n group._h_sidebar_group.controls = `sgc${uuidv4()}`;\n el.setAttribute('aria-controls', group._h_sidebar_group.controls);\n el.setAttribute('aria-expanded', !group._h_sidebar_group.state.collapsed);\n\n const handler = () => {\n group._h_sidebar_group.state.collapsed = !group._h_sidebar_group.state.collapsed;\n el.setAttribute('aria-expanded', !group._h_sidebar_group.state.collapsed);\n };\n\n el.appendChild(\n createSvg({\n icon: ChevronRight,\n classes: 'ml-auto pointer-events-none size-4 shrink-0 transition-transform motion-reduce:transition-none duration-200 [[aria-expanded=true]>&]:rotate-90',\n attrs: {\n 'aria-hidden': true,\n role: 'presentation',\n },\n })\n );\n\n el.addEventListener('click', handler);\n\n cleanup(() => {\n el.removeEventListener('click', handler);\n });\n } else {\n el.classList.add('text-sidebar-foreground/70', 'text-xs');\n }\n });\n\n Alpine.directive('h-sidebar-group-action', (el) => {\n el.classList.add(\n 'text-sidebar-foreground',\n 'ring-sidebar-ring',\n 'hover:bg-sidebar-secondary',\n 'hover:text-sidebar-secondary-foreground',\n 'absolute',\n 'top-3.5',\n 'right-3',\n 'flex',\n 'aspect-square',\n 'w-5',\n 'items-center',\n 'justify-center',\n 'rounded-md',\n 'p-0',\n 'outline-hidden',\n 'transition-transform',\n 'motion-reduce:transition-none',\n 'focus-visible:ring-2',\n '[&>svg]:size-4',\n '[&>svg]:shrink-0',\n 'after:absolute',\n 'after:-inset-2',\n 'md:after:hidden',\n 'group-data-[collapsed=true]/sidebar:hidden'\n );\n if (el.tagName !== 'BUTTON') {\n el.setAttribute('role', 'button');\n } else {\n el.setAttribute('type', 'button');\n }\n el.setAttribute('data-slot', 'sidebar-group-action');\n });\n\n Alpine.directive('h-sidebar-group-content', (el, { original }, { effect }) => {\n const group = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_sidebar_group'));\n if (!group) {\n throw new Error(`${original} must be placed inside a sidebar group`);\n }\n el.classList.add('w-full', 'text-sm', 'data-[collapsed=true]:hidden', 'group-data-[collapsed=true]/sidebar:!block');\n el.setAttribute('data-slot', 'sidebar-group-content');\n\n if (group._h_sidebar_group.collapsable) {\n el.setAttribute('id', group._h_sidebar_group.controls);\n el.setAttribute('aria-labelledby', group._h_sidebar_group.controlId);\n el.setAttribute('data-collapsed', group._h_sidebar_group.state.collapsed);\n effect(() => {\n el.setAttribute('data-collapsed', group._h_sidebar_group.state.collapsed);\n });\n }\n });\n\n Alpine.directive('h-sidebar-menu', (el, { original }) => {\n if (el.tagName !== 'UL') {\n throw new Error(`${original} must be an ul element`);\n }\n el.classList.add('vbox', 'w-full', 'min-w-0', 'gap-1');\n el.setAttribute('data-slot', 'sidebar-menu');\n });\n\n Alpine.directive('h-sidebar-menu-item', (el, { original, expression, modifiers }, { effect, evaluate, evaluateLater, Alpine }) => {\n if (el.tagName !== 'LI') {\n throw new Error(`${original} must be a li element`);\n }\n el._h_sidebar_menu_item = {\n isSub: false,\n collapsable: modifiers.includes('collapsed'),\n controlId: undefined,\n controls: undefined,\n state: Alpine.reactive({\n collapsed: evaluate(expression || 'false'),\n }),\n };\n let parent = el.parentElement;\n while (parent) {\n if (parent.getAttribute('data-slot') === 'sidebar-menu-sub') {\n el._h_sidebar_menu_item.isSub = true;\n break;\n } else if (parent.getAttribute('data-slot') === 'sidebar') {\n break;\n }\n parent = parent.parentElement;\n }\n if (!el._h_sidebar_menu_item.isSub) {\n el.classList.add('group/menu-item', 'relative');\n } else {\n el.classList.add('relative');\n }\n el.setAttribute('data-slot', 'sidebar-menu-item');\n\n if (expression) {\n const getCollapsed = evaluateLater(expression);\n effect(() => {\n getCollapsed((collapsed) => {\n el._h_sidebar_menu_item.state.collapsed = collapsed;\n });\n });\n }\n });\n\n Alpine.directive('h-sidebar-menu-button', (el, { original }, { cleanup, Alpine }) => {\n if (el.tagName !== 'BUTTON' && el.tagName !== 'A') {\n throw new Error(`${original} must be a button or a link`);\n } else if (el.tagName === 'BUTTON') {\n el.setAttribute('type', 'button');\n }\n const menuItem = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_sidebar_menu_item'));\n el.classList.add(\n 'flex',\n 'w-full',\n 'items-center',\n 'gap-2',\n 'overflow-hidden',\n 'rounded-md',\n 'align-middle',\n '[&>span]:align-middle',\n 'outline-hidden',\n 'ring-sidebar-ring',\n 'hover:bg-sidebar-secondary',\n 'hover:text-sidebar-secondary-foreground',\n 'focus-visible:ring-2',\n 'active:bg-sidebar-primary',\n 'active:text-sidebar-primary-foreground',\n 'disabled:pointer-events-none',\n 'disabled:opacity-50',\n 'aria-disabled:pointer-events-none',\n 'aria-disabled:opacity-50',\n 'data-[active=true]:bg-sidebar-primary',\n 'data-[active=true]:text-sidebar-primary-foreground',\n '[&>span]:truncate',\n '[&>svg]:size-4',\n '[&>svg]:shrink-0'\n );\n\n const sizes = {\n default: ['h-8', 'text-sm'],\n sm: ['h-7', 'text-xs'],\n lg: ['h-12', 'text-sm', 'group-data-[collapsed=true]/sidebar:p-0!'],\n };\n\n function setSize(size) {\n if (Object.prototype.hasOwnProperty.call(sizes, size)) {\n el.classList.add(...sizes[size]);\n }\n }\n\n setSize(el.getAttribute('data-size') || 'default');\n\n if (!el.hasAttribute('data-slot')) el.setAttribute('data-slot', 'sidebar-menu-button');\n\n if (menuItem && menuItem._h_sidebar_menu_item.isSub) {\n el.classList.add('text-sidebar-foreground', 'h-7', 'min-w-0', '-translate-x-px', 'px-2', '[&>svg:not(:first-child):last-child]:ml-auto', 'group-data-[collapsed=true]/sidebar:hidden');\n if (!el.hasAttribute('data-slot')) el.setAttribute('data-slot', 'sidebar-menu-sub-button');\n } else {\n el.classList.add(\n 'peer/menu-button',\n 'p-2',\n 'text-left',\n 'text-sm',\n 'duration-200',\n 'transition-[width,height,padding]',\n 'motion-reduce:transition-none',\n 'group-has-data-[sidebar=menu-action]/menu-item:pr-8',\n 'data-[active=true]:font-medium',\n 'aria-[expanded=true]:hover:bg-sidebar-secondary',\n 'aria-[expanded=true]:hover:text-sidebar-secondary-foreground',\n 'group-data-[collapsed=true]/sidebar:!size-8',\n 'group-data-[collapsed=true]/sidebar:!p-2',\n 'group-data-[collapsed=true]/sidebar:[&>*:not(svg:first-child):not([data-slot=menu])]:!hidden'\n );\n }\n\n if (menuItem && menuItem._h_sidebar_menu_item.collapsable) {\n if (el.hasAttribute('id')) {\n menuItem._h_sidebar_menu_item.controlId = el.getAttribute('id');\n } else {\n menuItem._h_sidebar_menu_item.controlId = `sgl${uuidv4()}`;\n el.setAttribute('id', menuItem._h_sidebar_menu_item.controlId);\n }\n menuItem._h_sidebar_menu_item.controls = `sgc${uuidv4()}`;\n el.setAttribute('aria-controls', menuItem._h_sidebar_menu_item.controls);\n el.setAttribute('aria-expanded', !menuItem._h_sidebar_menu_item.state.collapsed);\n\n const handler = () => {\n menuItem._h_sidebar_menu_item.state.collapsed = !menuItem._h_sidebar_menu_item.state.collapsed;\n el.setAttribute('aria-expanded', !menuItem._h_sidebar_menu_item.state.collapsed);\n };\n\n el.appendChild(\n createSvg({\n icon: ChevronRight,\n classes: 'ml-auto pointer-events-none size-4 shrink-0 transition-transform motion-reduce:transition-none duration-200 [[aria-expanded=true]>&]:rotate-90',\n attrs: {\n 'aria-hidden': true,\n role: 'presentation',\n },\n })\n );\n\n el.addEventListener('click', handler);\n\n cleanup(() => {\n el.removeEventListener('click', handler);\n });\n } else {\n el.classList.add('[&>svg:not(:first-child):last-child]:ml-auto');\n }\n });\n\n Alpine.directive('h-sidebar-menu-action', (el, { modifiers }) => {\n el.classList.add(\n 'text-sidebar-foreground',\n 'ring-sidebar-ring',\n 'hover:bg-sidebar-secondary',\n 'active:bg-sidebar-secondary/70',\n 'hover:text-sidebar-secondary-foreground',\n 'peer-hover/menu-button:text-sidebar-secondary-foreground',\n 'peer-active/menu-button:text-sidebar-primary-foreground',\n 'peer-data-[active=true]/menu-button:text-sidebar-primary-foreground',\n 'absolute',\n 'top-0.5',\n 'right-0.5',\n 'bottom-0.5',\n 'flex',\n 'aspect-square',\n 'h-auto',\n 'items-center',\n 'justify-center',\n 'rounded-md',\n 'p-0',\n 'outline-hidden',\n 'transition-transform',\n 'motion-reduce:transition-none',\n 'focus-visible:ring-2',\n '[&>svg]:size-4',\n '[&>svg]:shrink-0',\n 'after:absolute',\n 'after:-inset-2',\n 'md:after:hidden',\n 'group-data-[collapsed=true]/sidebar:hidden'\n );\n if (modifiers.includes('autohide')) {\n el.classList.add('group-focus-within/menu-item:opacity-100', 'group-hover/menu-item:opacity-100', 'aria-[expanded=true]:opacity-100', 'md:opacity-0');\n }\n if (el.tagName !== 'BUTTON') {\n el.setAttribute('role', 'button');\n } else {\n el.setAttribute('type', 'button');\n }\n el.setAttribute('data-slot', 'sidebar-menu-action');\n });\n\n Alpine.directive('h-sidebar-menu-badge', (el, { original }) => {\n if (el.tagName !== 'SPAN') {\n throw new Error(`${original} must be a span element`);\n }\n el.classList.add('flex-1', 'pointer-events-none', 'flex', 'h-full', 'min-w-min', 'items-center', 'justify-end', 'text-xs', 'font-medium', 'tabular-nums', 'select-none', 'group-data-[collapsed=true]/sidebar:hidden');\n el.setAttribute('data-slot', 'sidebar-menu-badge');\n });\n\n Alpine.directive('h-sidebar-menu-skeleton', (el, { modifiers }) => {\n el.classList.add('flex', 'h-8', 'items-center', 'gap-2', 'rounded-md', 'px-2');\n const skeleton = document.createElement('div');\n skeleton.classList.add('h-4', 'flex-1', 'bg-sidebar-secondary', 'animate-pulse', 'rounded-md');\n if (modifiers.includes('icon')) {\n skeleton.classList.add('group-data-[collapsed=true]/sidebar:!hidden');\n const icon = document.createElement('div');\n icon.classList.add('size-4', 'rounded-md', 'bg-sidebar-secondary', 'animate-pulse', 'rounded-md');\n el.appendChild(icon);\n } else {\n skeleton.classList.add('group-data-[collapsed=true]/sidebar:!w-4', 'group-data-[collapsed=true]/sidebar:!max-w-4');\n }\n skeleton.style.maxWidth = `${Math.floor(Math.random() * 40) + 50}%`;\n el.appendChild(skeleton);\n el.setAttribute('data-slot', 'sidebar-menu-skeleton');\n });\n\n Alpine.directive('h-sidebar-separator', (el) => {\n el.classList.add('bg-sidebar-border', 'w-auto', 'bg-border', 'shrink-0', 'h-px', 'w-full');\n el.setAttribute('data-slot', 'sidebar-separator');\n el.setAttribute('role', 'none');\n });\n\n Alpine.directive('h-sidebar-menu-sub', (el, { original }, { effect, Alpine }) => {\n if (el.tagName !== 'UL') {\n throw new Error(`${original} must be an ul element`);\n }\n const menuItem = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_sidebar_menu_item'));\n if (!menuItem) {\n throw new Error(`${original} must be placed inside a sidebar menu item`);\n }\n el.classList.add('vbox', 'min-w-0', 'translate-x-px', 'gap-1', 'pl-2.5', 'py-0.5', 'ml-3.5', 'data-[collapsed=true]:!hidden', 'group-data-[collapsed=true]/sidebar:!hidden');\n if (el.getAttribute('data-line') !== 'false') {\n el.classList.add('border-sidebar-border', 'border-l');\n }\n el.setAttribute('data-slot', 'sidebar-menu-sub');\n\n if (menuItem._h_sidebar_menu_item.collapsable) {\n el.setAttribute('id', menuItem._h_sidebar_menu_item.controls);\n el.setAttribute('aria-labelledby', menuItem._h_sidebar_menu_item.controlId);\n el.setAttribute('data-collapsed', menuItem._h_sidebar_menu_item.state.collapsed);\n effect(() => {\n el.setAttribute('data-collapsed', menuItem._h_sidebar_menu_item.state.collapsed);\n });\n }\n });\n\n Alpine.directive('h-sidebar-footer', (el) => {\n el.classList.add('vbox', 'gap-2', 'px-2', 'h-12', 'justify-center', 'border-t');\n if (el.dataset.borderless && el.dataset.borderless === 'true') el.classList.remove('border-t');\n el.setAttribute('data-slot', 'sidebar-footer');\n });\n}\n", "export default function (Alpine) {\n Alpine.directive('h-skeleton', (el, { modifiers }) => {\n el.classList.add('bg-secondary', 'animate-pulse');\n if (modifiers.includes('control')) {\n el.classList.add('rounded-control');\n switch (el.getAttribute('data-size')) {\n case 'sm':\n el.classList.add('h-6.5');\n break;\n case 'md':\n el.classList.add('h-8');\n break;\n default:\n el.classList.add('h-9');\n break;\n }\n } else if (modifiers.includes('card')) {\n el.classList.add('rounded-lg');\n } else if (modifiers.includes('avatar')) {\n el.classList.add('rounded-full', 'size-8', 'aspect-square');\n } else el.classList.add('rounded-md');\n el.setAttribute('data-slot', 'skeleton');\n });\n}\n", "export default function (Alpine) {\n Alpine.directive('h-spinner', (el) => {\n el.classList.add(\n 'size-4',\n 'border-2',\n 'border-primary',\n '[[data-slot=button]_&]:border-secondary-foreground',\n '[[data-slot=button][data-variant=primary]_&]:border-primary-foreground',\n '[[data-slot=button][data-variant=positive]_&]:border-positive-foreground',\n '[[data-slot=button][data-variant=negative]_&]:border-negative-foreground',\n '[[data-slot=button][data-variant=warning]_&]:border-warning-foreground',\n '[[data-slot=button][data-variant=information]_&]:border-information-foreground',\n '!border-t-transparent',\n 'rounded-full',\n 'animate-spin'\n );\n if (el.tagName === 'SPAN') el.classList.add('inline-block');\n el.setAttribute('role', 'status');\n el.setAttribute('data-slot', 'spinner');\n if (!el.hasAttribute('aria-label')) el.setAttribute('aria-label', 'Loading');\n });\n}\n", "export default function (Alpine) {\n Alpine.directive('h-split', (el, _, { cleanup, Alpine }) => {\n const panels = [];\n\n // Reactive state\n const state = Alpine.reactive({\n isHorizontal: el.getAttribute('data-orientation') === 'horizontal',\n isBorder: el.getAttribute('data-variant') === 'border',\n });\n\n const storageKey = el.getAttribute('data-key');\n\n const loadSizes = () => {\n if (!storageKey) return null;\n\n try {\n const raw = localStorage.getItem(storageKey);\n if (!raw) return null;\n return JSON.parse(raw);\n } catch {\n return null;\n }\n };\n\n let saveTimer = null;\n const SAVE_DELAY = 200;\n\n const saveSizes = () => {\n if (!storageKey) return;\n\n if (saveTimer) clearTimeout(saveTimer);\n\n saveTimer = setTimeout(() => {\n const visible = panels.filter((p) => !p.hidden);\n const sizes = visible.map((p) => p.size / usableSize());\n localStorage.setItem(storageKey, JSON.stringify(sizes));\n saveTimer = null;\n }, SAVE_DELAY);\n };\n\n const sizeProp = () => (state.isHorizontal ? 'width' : 'height');\n\n const containerSize = () => (state.isHorizontal ? el.getBoundingClientRect().width : el.getBoundingClientRect().height);\n\n const gutterSize = () => {\n const panel = panels.find((p) => p.gutter.parentElement);\n if (panel) {\n return panel.gutter.getBoundingClientRect()[sizeProp()] ?? 0;\n }\n return 0;\n };\n\n // Total space available for panels (excluding hidden panels and gutters)\n const usableSize = () => {\n const visiblePanels = panels.filter((p) => !p.hidden);\n const gutters = Math.max(0, visiblePanels.length - 1);\n return containerSize() - gutters * gutterSize();\n };\n\n // Normalize a size value: number, percentage string, or null\n const normalize = (value) => {\n if (value == null) return null;\n if (typeof value === 'number') return value;\n\n if (value.endsWith('%')) {\n return (parseFloat(value) / 100) * usableSize();\n }\n\n return parseFloat(value);\n };\n\n let initialized = false;\n\n const DELTA_ABS = 0.01;\n\n // Layout function: calculate and apply sizes to all visible panels\n const layout = () => {\n const visible = panels.filter((p) => !p.hidden);\n if (!visible.length) return;\n\n const total = usableSize();\n\n if (!initialized) {\n initialized = true;\n\n const visible = panels.filter((p) => !p.hidden);\n\n // Try restoring persisted sizes\n const stored = loadSizes();\n\n if (stored && stored.length === visible.length) {\n visible.forEach((p, i) => {\n p.size = stored[i] * usableSize();\n p.explicit = true;\n });\n } else {\n // Compute the total size of explicitly sized panels\n const explicitTotal = visible.filter((p) => p.explicit).reduce((sum, p) => sum + p.declaredSize, 0);\n\n // Compute & distribute remaining space for auto panels\n const autoPanels = visible.filter((p) => !p.explicit);\n const remaining = total - explicitTotal;\n const share = autoPanels.length ? remaining / autoPanels.length : 0;\n\n // Apply computed sizes to panels\n visible.forEach((p) => {\n if (p.explicit) {\n p.size = p.declaredSize;\n } else {\n p.size = share;\n }\n\n p.size = Math.min(Math.max(p.size ?? share, p.min), p.max);\n });\n }\n }\n\n // Ensure all panels have a starting size\n visible.forEach((p) => {\n if (p.size == null) {\n p.size = p.min ?? 0;\n }\n\n // Clamp to bounds\n p.size = Math.min(Math.max(p.size, p.min), p.max);\n });\n\n let currentTotal = visible.reduce((sum, p) => sum + p.size, 0);\n let delta = total - currentTotal;\n\n if (Math.abs(delta) < DELTA_ABS) {\n visible.forEach((p) => p.apply());\n return;\n }\n\n // Panels allowed to change:\n let flexible = visible.filter((p) => {\n if (p.collapsed) return false;\n\n if (delta > 0) {\n return p.size < p.max;\n } else {\n return p.size > p.min;\n }\n });\n\n while (flexible.length && Math.abs(delta) > DELTA_ABS) {\n const share = delta / flexible.length;\n let consumed = 0;\n\n const nextFlexible = [];\n\n flexible.forEach((p) => {\n const proposed = p.size + share;\n const clamped = Math.min(Math.max(proposed, p.min), p.max);\n\n const actualChange = clamped - p.size;\n\n if (Math.abs(actualChange) > DELTA_ABS) {\n p.size = clamped;\n consumed += actualChange;\n }\n\n // Still can grow/shrink?\n if (delta > 0) {\n if (p.size < p.max) nextFlexible.push(p);\n } else {\n if (p.size > p.min) nextFlexible.push(p);\n }\n });\n\n delta -= consumed;\n flexible = nextFlexible;\n\n // If nothing was consumed, break to avoid infinite loop\n if (Math.abs(consumed) < DELTA_ABS) break;\n }\n\n visible.forEach((p) => p.apply());\n };\n\n let layoutFrame = null;\n\n const queueLayout = () => {\n if (layoutFrame) cancelAnimationFrame(layoutFrame);\n\n layoutFrame = requestAnimationFrame(() => {\n layout();\n saveSizes();\n layoutFrame = null;\n });\n };\n\n // Refresh gutter elements after add/remove or hide/show\n const refreshGutters = () => {\n const lastPanelIndex = panels.length - 1;\n panels.forEach((p, i) => p.setGutter(i === lastPanelIndex));\n };\n\n // Expose API on the element\n el._h_split = {\n state,\n panels,\n addPanel(panel) {\n panels.push(panel);\n if (panel.size == null) {\n panel.size = null; // keep null\n }\n initialized = false;\n refreshGutters();\n queueLayout();\n },\n removePanel(panel) {\n const i = panels.indexOf(panel);\n if (i !== -1) panels.splice(i, 1);\n initialized = false;\n refreshGutters();\n queueLayout();\n },\n panelHidden() {\n initialized = false;\n refreshGutters();\n queueLayout();\n },\n gutterHidden() {\n refreshGutters();\n queueLayout();\n },\n panelChange() {\n queueLayout();\n },\n normalize,\n saveSizes,\n };\n\n el.classList.add('flex', 'flex-1', 'min-w-0', 'min-h-0', 'data-[orientation=horizontal]:flex-row', 'data-[orientation=vertical]:flex-col');\n\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (mutation.attributeName === 'data-orientation') {\n state.isHorizontal = el.getAttribute('data-orientation') === 'horizontal';\n queueLayout();\n } else if (mutation.attributeName === 'data-variant') {\n state.isBorder = el.getAttribute('data-variant') === 'border';\n queueLayout();\n } else {\n panels.forEach((p) => p.setLocked(el.getAttribute('data-locked') === 'true'));\n }\n });\n });\n\n observer.observe(el, { attributes: true, attributeFilter: ['data-orientation', 'data-variant', 'data-locked'] });\n\n const containerObserver = new ResizeObserver(queueLayout);\n\n containerObserver.observe(el);\n\n cleanup(() => {\n if (layoutFrame) cancelAnimationFrame(layoutFrame);\n if (saveTimer) clearTimeout(saveTimer);\n containerObserver.disconnect();\n observer.disconnect();\n });\n });\n\n Alpine.directive('h-split-panel', (el, { original }, { effect, cleanup, Alpine }) => {\n const split = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_split'));\n if (!split) {\n throw new Error(`${original} must be inside an split element`);\n }\n\n el.classList.add(\n 'flex',\n 'shrink',\n 'grow-0',\n 'box-border',\n 'overflow-visible',\n '[[data-orientation=horizontal]_&]:min-w-(--h-split-panel-min)',\n '[[data-orientation=horizontal]_&]:max-w-(--h-split-panel-max)',\n '[[data-orientation=horizontal]_&]:min-h-0',\n '[[data-orientation=vertical]_&]:min-h-(--h-split-panel-min)',\n '[[data-orientation=vertical]_&]:max-h-(--h-split-panel-max)',\n '[[data-orientation=vertical]_&]:min-w-0'\n );\n el.setAttribute('tabindex', '-1');\n el.setAttribute('data-slot', 'split-panel');\n\n let gutterless = el.getAttribute('data-gutterless') === 'true';\n\n const gutter = document.createElement('span');\n gutter.setAttribute('data-slot', 'split-gutter');\n gutter.setAttribute('aria-disabled', el.getAttribute('data-locked') === 'true');\n gutter.setAttribute('tabindex', '-1');\n gutter.setAttribute('role', 'separator');\n gutter.classList.add(\n 'overflow-visible',\n 'relative',\n 'shrink-0',\n 'touch-none',\n 'bg-border',\n 'outline-none',\n 'hover:bg-primary-hover',\n 'active:bg-primary-active',\n 'hover:before:bg-primary-hover',\n 'aria-disabled:pointer-events-none',\n '[[data-orientation=horizontal]>&]:cursor-col-resize',\n '[[data-orientation=vertical]>&]:cursor-row-resize'\n );\n\n const borderClasses = [\n 'bg-border',\n 'outline-none',\n 'hover:bg-primary-hover',\n 'active:bg-primary-active',\n 'before:absolute',\n 'before:block',\n 'before:bg-transparent',\n 'hover:before:bg-primary-hover',\n '[[data-orientation=horizontal]>&]:before:-translate-x-1/2',\n '[[data-orientation=horizontal]>&[data-edge=end]]:before:-translate-x-1',\n '[[data-orientation=horizontal]>&[data-edge=start]]:before:translate-x-0',\n '[[data-orientation=horizontal]>&]:before:left-1/2',\n '[[data-orientation=horizontal]>&]:!w-px',\n '[[data-orientation=horizontal]>&]:before:h-full',\n '[[data-orientation=horizontal]>&]:before:w-[calc(var(--spacing)*1)]',\n '[[data-orientation=vertical]>&]:before:-translate-y-1/2',\n '[[data-orientation=vertical]>&[data-edge=end]]:before:-translate-y-1',\n '[[data-orientation=vertical]>&[data-edge=start]]:before:translate-y-0',\n '[[data-orientation=vertical]>&]:before:top-1/2',\n '[[data-orientation=vertical]>&]:!h-px',\n '[[data-orientation=vertical]>&]:before:w-full',\n '[[data-orientation=vertical]>&]:before:h-[calc(var(--spacing)*1)]',\n ];\n const handleClasses = [\n 'bg-transparent',\n 'outline-none',\n 'after:absolute',\n 'after:block',\n 'after:rounded-sm',\n 'after:bg-background',\n 'after:border-split-handle',\n 'after:border-2',\n 'after:shadow-xs',\n 'after:top-1/2',\n 'after:left-1/2',\n 'after:-translate-x-1/2',\n 'after:-translate-y-1/2',\n 'hover:after:border-primary-hover',\n 'active:after:border-primary-active',\n 'before:absolute',\n 'before:block',\n 'before:top-1/2',\n 'before:left-1/2',\n 'before:-translate-x-1/2',\n 'before:-translate-y-1/2',\n 'before:rounded-sm',\n 'before:from-transparent',\n 'before:from-15%',\n 'before:via-split-handle',\n 'before:to-85%',\n 'before:to-transparent',\n 'hover:before:bg-primary-hover',\n 'hover:before:via-transparent',\n 'active:before:bg-primary-active',\n 'active:before:via-transparent',\n // Orientation classes\n '[[data-orientation=horizontal]>&]:before:h-full',\n '[[data-orientation=horizontal]>&]:before:w-0.5',\n '[[data-orientation=horizontal]>&]:before:bg-gradient-to-b',\n '[[data-orientation=vertical]>&]:before:h-0.5',\n '[[data-orientation=vertical]>&]:before:w-full',\n '[[data-orientation=vertical]>&]:before:bg-gradient-to-r',\n // Size classes\n '[[data-orientation=horizontal]>&]:!w-4',\n '[[data-orientation=horizontal]>&]:after:w-2.5',\n '[[data-orientation=horizontal]>&]:after:h-5',\n '[[data-orientation=vertical]>&]:!h-4',\n '[[data-orientation=vertical]>&]:after:w-5',\n '[[data-orientation=vertical]>&]:after:h-2.5',\n ];\n\n const setVariant = () => {\n if (split._h_split.state.isBorder) {\n gutter.classList.remove(...handleClasses);\n gutter.classList.add(...borderClasses);\n } else {\n gutter.classList.remove(...borderClasses);\n gutter.classList.add(...handleClasses);\n }\n };\n\n setVariant();\n\n effect(setVariant);\n\n const initialSize = split._h_split.normalize(el.getAttribute('data-size'));\n\n let handleSize = 0;\n\n let layoutFrame = null;\n\n const panel = {\n el,\n gutter,\n hidden: el.getAttribute('data-hidden') === 'true',\n declaredSize: initialSize,\n size: initialSize,\n explicit: initialSize != null,\n min: split._h_split.normalize(el.getAttribute('data-min')) ?? 0,\n max: split._h_split.normalize(el.getAttribute('data-max')) ?? Infinity,\n collapsed: false,\n prevSize: null,\n\n apply() {\n el.style.flexBasis = `${this.size.toFixed(2)}px`;\n if (split._h_split.state.isBorder) {\n this.setHandleOffset();\n }\n },\n\n setGutter(last) {\n if (this.hidden || gutterless || last) {\n gutter.remove();\n } else {\n if (layoutFrame) cancelAnimationFrame(layoutFrame);\n layoutFrame = requestAnimationFrame(() => {\n el.after(gutter);\n handleSize = this.getHandleSize();\n layoutFrame = null;\n });\n }\n },\n\n setHandleOffset() {\n const panels = split._h_split.panels.filter((p) => !p.hidden);\n const index = panels.indexOf(panel);\n const next = panels[index + 1];\n if (!next) return;\n if (next.size < handleSize) {\n gutter.setAttribute('data-edge', 'end');\n } else if (this.size < handleSize) {\n gutter.setAttribute('data-edge', 'start');\n } else {\n gutter.removeAttribute('data-edge');\n }\n },\n\n getHandleSize() {\n if (split._h_split.state.isBorder) {\n const beforeStyle = window.getComputedStyle(gutter, '::before');\n return Number(beforeStyle[split._h_split.state.isHorizontal ? 'width' : 'height'].replace('px', '')) / 2;\n } else {\n return 0;\n }\n },\n\n setLocked(locked = false) {\n const panelLocked = el.getAttribute('data-locked') === 'true';\n gutter.setAttribute('aria-disabled', locked || panelLocked);\n if (locked) {\n gutter.classList.add('pointer-events-none');\n } else if (panelLocked) {\n gutter.classList.add('pointer-events-none');\n } else {\n gutter.classList.remove('pointer-events-none');\n }\n },\n };\n\n el.style.setProperty('--h-split-panel-min', `${panel.min}px`);\n if (panel.max < Infinity) {\n el.style.setProperty('--h-split-panel-max', `${panel.max}px`);\n }\n\n split._h_split.addPanel(panel);\n\n // Dragging\n const drag = (e) => {\n e.preventDefault();\n gutter.setPointerCapture(e.pointerId);\n\n const panels = split._h_split.panels.filter((p) => !p.hidden);\n const index = panels.indexOf(panel);\n const next = panels[index + 1];\n if (!next) return;\n\n const startPos = split._h_split.state.isHorizontal ? e.clientX : e.clientY;\n\n const startA = panel.size;\n const startB = next.size;\n\n const minDelta = Math.max(\n panel.min - startA, // how much panel A can shrink\n startB - next.max // how much panel B can grow\n );\n\n const maxDelta = Math.min(\n panel.max - startA, // how much panel A can grow\n startB - next.min // how much panel B can shrink\n );\n\n const move = (e) => {\n const currentPos = split._h_split.state.isHorizontal ? e.clientX : e.clientY;\n const delta = currentPos - startPos;\n\n const clamped = Math.min(maxDelta, Math.max(minDelta, delta));\n\n panel.size = startA + clamped;\n next.size = startB - clamped;\n\n panel.explicit = false;\n\n if (panel.collapsed) {\n panel.collapsed = false;\n }\n if (next.collapsed) {\n next.collapsed = false;\n }\n\n split._h_split.panelChange();\n };\n\n const up = () => {\n gutter.releasePointerCapture(e.pointerId);\n gutter.removeEventListener('pointermove', move);\n gutter.removeEventListener('pointerup', up);\n };\n\n gutter.addEventListener('pointermove', move);\n gutter.addEventListener('pointerup', up);\n };\n\n gutter.addEventListener('pointerdown', drag);\n\n const collapse = () => {\n if (panel.collapsed) return;\n\n panel.prevSize = panel.size;\n panel.size = panel.min ?? 0;\n panel.collapsed = true;\n panel.explicit = true;\n\n split._h_split.panelChange();\n };\n const expand = () => {\n if (!panel.collapsed) return;\n\n const target = panel.prevSize ?? panel.min ?? 0;\n const delta = target - panel.size;\n\n const visible = split._h_split.panels.filter((p) => !p.hidden && p !== panel);\n\n let remaining = delta;\n\n for (const p of visible) {\n const available = p.size - p.min;\n const take = Math.min(available, remaining);\n\n p.size -= take;\n remaining -= take;\n\n if (remaining <= 0) break;\n }\n\n panel.size = target - remaining;\n panel.collapsed = false;\n panel.explicit = true;\n\n split._h_split.panelChange();\n };\n\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (mutation.attributeName === 'data-gutterless') {\n gutterless = el.getAttribute('data-gutterless') === 'true';\n split._h_split.gutterHidden();\n } else if (mutation.attributeName === 'data-hidden') {\n panel.hidden = el.getAttribute('data-hidden') === 'true';\n if (panel.hidden) {\n el.classList.add('hidden');\n } else {\n el.classList.remove('hidden');\n }\n split._h_split.panelHidden();\n } else if (mutation.attributeName === 'data-locked') {\n panel.setLocked();\n } else {\n if (el.getAttribute('data-collapse') === 'true') {\n collapse();\n } else {\n expand();\n }\n }\n });\n });\n\n observer.observe(el, { attributes: true, attributeFilter: ['data-hidden', 'data-locked', 'data-collapse', 'data-gutterless'] });\n\n cleanup(() => {\n gutter.remove();\n gutter.removeEventListener('pointerdown', drag);\n split._h_split.removePanel(panel);\n observer.disconnect();\n });\n });\n}\n", "export default function (Alpine) {\n Alpine.directive('h-switch', (el) => {\n el.classList.add(\n '[&>input]:absolute',\n '[&>input]:appearance-none',\n '[&>input]:bg-transparent',\n '[&>input]:border-0',\n '[&>input]:cursor-pointer',\n '[&>input]:focus-visible:border-ring',\n '[&>input]:focus-visible:ring-[calc(var(--spacing)*0.75)]',\n '[&>input]:focus-visible:ring-ring/50',\n '[&>input]:left-0',\n '[&>input]:outline-none',\n '[&>input]:rounded-full',\n '[&>input]:size-full',\n '[&>input]:top-0',\n 'before:bg-background',\n 'before:duration-200',\n 'before:block',\n 'before:pointer-events-none',\n 'before:ring-0',\n 'before:rounded-full',\n 'before:shadow-input',\n 'before:h-full',\n 'before:aspect-square',\n 'before:transition-transform',\n 'before:motion-reduce:transition-none',\n 'bg-muted',\n 'border',\n 'data-[size=sm]:h-5',\n 'data-[size=sm]:max-w-8',\n 'data-[size=sm]:min-w-8',\n 'duration-200',\n 'h-6',\n 'has-[input:checked]:before:translate-x-[calc(100%-var(--spacing))]',\n 'has-[input:checked]:bg-primary',\n 'has-[input:checked]:border-primary-active',\n 'has-[input:disabled]:cursor-not-allowed',\n 'has-[input:disabled]:opacity-50',\n 'p-0.25',\n 'max-w-10',\n 'min-w-10',\n 'relative',\n 'rounded-full',\n 'shrink-0',\n 'transition-colors',\n 'motion-reduce:transition-none'\n );\n el.setAttribute('tabindex', '-1');\n el.setAttribute('data-slot', 'switch');\n });\n}\n", "export default function (Alpine) {\n Alpine.directive('h-table-container', (el, { modifiers }) => {\n if (modifiers.includes('scroll')) {\n el.classList.add(\n 'overflow-scroll',\n '[&_thead[data-slot|=table]]:sticky',\n '[&_thead[data-slot|=table]]:top-0',\n '[&_thead[data-slot|=table]]:z-2',\n '[&_tfoot[data-slot|=table]]:sticky',\n '[&_tfoot[data-slot|=table]]:bottom-0',\n '[&_tfoot[data-slot|=table]]:z-2',\n '[&_tbody_tr_th[data-slot|=table]]:sticky',\n '[&_tbody_tr_th[data-slot|=table]]:left-0',\n '[&_tbody_tr_th[data-slot|=table]]:z-1'\n );\n } else {\n el.classList.add('relative', 'w-full', 'overflow-x-auto');\n }\n el.setAttribute('data-slot', 'table');\n\n if (el.getAttribute('data-border') === 'true') {\n el.classList.add('border', 'rounded-md');\n }\n });\n\n Alpine.directive('h-table', (el) => {\n el.classList.add('group', 'w-full', 'caption-bottom', 'text-sm', 'border-separate', 'border-spacing-0');\n if (el.getAttribute('data-fixed') === 'true') el.classList.add('table-fixed');\n el.setAttribute('data-slot', 'table');\n\n switch (el.getAttribute('data-borders')) {\n case 'rows':\n el.classList.add('[&_tr_td[data-slot|=table]]:border-b', '[&_tr_th[data-slot|=table]]:border-b', 'first:[&_tfoot_tr_td[data-slot|=table]]:border-t', 'first:[&_tfoot_tr_th[data-slot|=table]]:border-t');\n break;\n case 'columns':\n el.classList.add('[&_tr[data-slot|=table]]:divide-x');\n break;\n case 'both':\n el.classList.add(\n '[&_tr_td[data-slot|=table]]:border-b',\n '[&_tr_th[data-slot|=table]]:border-b',\n 'first:[&_tfoot_tr_td[data-slot|=table]]:border-t',\n 'first:[&_tfoot_tr_th[data-slot|=table]]:border-t',\n '[&_tr[data-slot|=table]]:divide-x'\n );\n break;\n }\n });\n\n Alpine.directive('h-table-header', (el) => {\n el.classList.add('bg-table-header');\n el.setAttribute('data-slot', 'table-header');\n });\n\n Alpine.directive('h-table-head', (el) => {\n el.classList.add(\n 'text-foreground',\n '[&[data-hoverable=true]:hover]:bg-table-hover',\n '[&[data-hoverable=true]:hover]:text-table-hover-foreground',\n '[&[data-activable=true]:active]:!bg-table-active',\n '[&[data-activable=true]:active]:!text-table-active-foreground',\n 'h-10',\n 'px-2',\n 'text-left',\n 'align-middle',\n 'font-medium',\n 'whitespace-nowrap',\n '[&:has([role=checkbox])]:pr-0',\n '[&>[role=checkbox]]:flex',\n '[&>[role=checkbox]]:items-center'\n );\n el.setAttribute('data-slot', 'table-head');\n });\n\n Alpine.directive('h-table-cell', (el) => {\n el.classList.add(\n 'p-2',\n '[&:has([data-slot|=cell-input])]:p-0',\n 'align-middle',\n 'whitespace-nowrap',\n '[&:has([role=checkbox])]:pr-0',\n '[&>[role=checkbox]]:flex',\n '[&>[role=checkbox]]:items-center',\n '[&[data-hoverable=true]:hover]:bg-table-hover',\n '[&[data-hoverable=true]:hover]:text-table-hover-foreground',\n '[&[data-activable=true]:active]:!bg-table-active',\n '[&[data-activable=true]:active]:!text-table-active-foreground'\n );\n el.setAttribute('data-slot', 'table-cell');\n });\n\n Alpine.directive('h-table-cell-button', (el) => {\n el.classList.add(\n 'px-2',\n 'size-full',\n 'h-10',\n 'cursor-pointer',\n 'inline-flex',\n 'items-center',\n 'justify-between',\n 'outline-none',\n 'gap-2',\n 'transition-colors',\n 'transition-shadow',\n 'motion-reduce:transition-none',\n '[&_svg]:pointer-events-none',\n '[&_svg]:opacity-70',\n '[&_svg]:text-foreground',\n '[&_svg]:transition-transform',\n 'motion-reduce:[&_svg]:transition-none',\n '[&_svg]:duration-200',\n \"[&_svg:not([class*='size-'])]:size-4\",\n 'shrink-0',\n '[&_svg]:shrink-0',\n 'focus-visible:inset-ring-ring/50',\n 'focus-visible:inset-ring-2',\n 'hover:bg-table-hover',\n 'hover:text-table-hover-foreground',\n 'active:!bg-table-active',\n 'active:!text-table-active-foreground',\n '[&[data-state=open]>svg:not(:first-child):last-child]:rotate-180',\n '[&[data-state=open]>svg:only-child]:rotate-180'\n );\n el.setAttribute('type', 'button');\n el.setAttribute('data-slot', 'cell-input-button');\n });\n\n Alpine.directive('h-table-body', (el) => {\n el.classList.add(\n '[&_tr:last-child_td[data-slot|=table]]:border-b-0',\n '[&_tr:last-child_th[data-slot|=table]]:border-b-0',\n '[&_tr_th[data-slot|=table]]:bg-table-header',\n '[&_tr[data-hoverable=true]:hover_th[data-slot|=table]]:bg-table-hover',\n '[&_tr[data-hoverable=true]:hover_th[data-slot|=table]]:text-table-hover-foreground',\n '[&_tr[data-activable=true]:active_th[data-slot|=table]]:!bg-table-active',\n '[&_tr[data-activable=true]:active_th[data-slot|=table]]:!text-table-active-foreground'\n );\n el.setAttribute('data-slot', 'table-body');\n });\n\n Alpine.directive('h-table-row', (el) => {\n el.classList.add(\n '[&[data-hoverable=true]:hover]:bg-table-hover',\n '[&[data-hoverable=true]:hover]:text-table-hover-foreground',\n '[&[data-activable=true]:active]:!bg-table-active',\n '[&[data-activable=true]:active]:!text-table-active-foreground',\n 'data-[state=selected]:bg-table-active',\n 'data-[state=selected]:text-table-active-foreground'\n );\n el.setAttribute('data-slot', 'table-row');\n });\n\n Alpine.directive('h-table-caption', (el) => {\n el.classList.add('text-muted-foreground', 'py-2', 'text-sm', 'border-t');\n el.setAttribute('data-slot', 'table-caption');\n });\n\n Alpine.directive('h-table-footer', (el) => {\n el.classList.add('bg-table-header', 'font-medium', 'last:[&>tr_td[data-slot|=table]]:border-b-0', 'last:[&>tr_th[data-slot|=table]]:border-b-0');\n el.setAttribute('data-slot', 'table-footer');\n });\n}\n", "import { buttonVariants, setButtonClasses } from './button';\n\nexport default function (Alpine) {\n Alpine.directive('h-tabs', (el) => {\n el.classList.add('group/tabs', 'flex', 'data-[orientation=horizontal]:flex-col', 'data-[orientation=vertical]:flex-row');\n el.setAttribute('data-slot', 'tabs');\n });\n\n Alpine.directive('h-tab-bar', (el) => {\n el.classList.add(\n 'group/tab-bar',\n 'flex',\n 'gap-1',\n 'bg-object-header',\n 'text-object-header-foreground',\n 'group-data-[orientation=horizontal]/tabs:flex-row',\n 'group-data-[orientation=vertical]/tabs:flex-col',\n '[&:not([data-floating=true])]:group-data-[orientation=horizontal]/tabs:inset-shadow-[0_-.063rem_var(--border)]',\n '[&:not([data-floating=true])]:group-data-[orientation=vertical]/tabs:inset-shadow-[-.063rem_0_var(--border)]',\n '[&:not([data-floating=true])]:group-data-[orientation=horizontal]/tabs:h-10',\n '[&:not([data-floating=true])]:group-data-[orientation=horizontal]/tabs:min-h-10',\n '[&:not([data-floating=true])]:data-[size=sm]:group-data-[orientation=horizontal]/tabs:h-8',\n '[&:not([data-floating=true])]:data-[size=sm]:group-data-[orientation=horizontal]/tabs:min-h-8',\n '[&:not([data-floating=true])]:data-[size=lg]:group-data-[orientation=horizontal]/tabs:h-12',\n '[&:not([data-floating=true])]:data-[size=lg]:group-data-[orientation=horizontal]/tabs:min-h-12',\n 'data-[floating=true]:border',\n 'data-[floating=true]:shadow-xs',\n 'data-[floating=true]:z-1',\n 'data-[floating=true]:rounded-lg',\n 'data-[floating=true]:p-[calc(var(--spacing)*0.75)]'\n );\n el.setAttribute('data-slot', 'tab-bar');\n });\n\n Alpine.directive('h-tab-list', (el) => {\n el.classList.add(\n 'text-muted-foreground',\n 'flex',\n 'items-start',\n 'justify-start',\n 'scrollbar-none',\n 'group-data-[orientation=horizontal]/tabs:overflow-x-scroll',\n 'group-data-[orientation=vertical]/tabs:overflow-y-scroll',\n 'group-data-[orientation=horizontal]/tabs:flex-row',\n 'group-data-[orientation=vertical]/tabs:flex-col',\n 'group-data-[orientation=vertical]/tabs:h-fit',\n 'gap-2',\n 'group-data-[floating=true]/tab-bar:gap-1'\n );\n el.setAttribute('role', 'tablist');\n el.setAttribute('data-slot', 'tab-list');\n });\n\n Alpine.directive('h-tab', (el, { original }) => {\n el.classList.add(\n 'cursor-pointer',\n 'focus-visible:border-ring',\n 'focus-visible:ring-ring/50',\n 'focus-visible:outline-ring',\n 'text-muted-foreground',\n 'hover:text-foreground',\n 'aria-selected:text-foreground',\n 'inline-flex',\n 'group-data-[orientation=vertical]/tabs:w-full',\n 'group-data-[orientation=vertical]/tabs:h-8',\n 'group-data-[orientation=horizontal]/tabs:h-full',\n 'items-center',\n 'justify-start',\n 'gap-1.5',\n 'px-2',\n 'py-1',\n 'text-sm',\n 'font-medium',\n 'whitespace-nowrap',\n 'transition-colors',\n 'transition-shadow',\n 'motion-reduce:transition-none',\n 'group-data-[floating=true]/tab-bar:rounded-md',\n 'group-data-[floating=true]/tab-bar:border',\n 'group-data-[floating=true]/tab-bar:border-transparent',\n 'group-data-[floating=true]/tab-bar:aria-selected:bg-background',\n 'group-data-[floating=true]/tab-bar:aria-selected:border-border',\n 'group-data-[floating=true]/tab-bar:hover:bg-background',\n 'group-data-[floating=true]/tab-bar:hover:border-border',\n 'group-[&:not([data-floating=true])]/tab-bar:border-0',\n 'group-[&:not([data-floating=true])]/tab-bar:group-data-[orientation=horizontal]/tabs:hover:inset-shadow-[0_-.188rem_var(--border)]',\n 'group-[&:not([data-floating=true])]/tab-bar:group-data-[orientation=horizontal]/tabs:aria-selected:inset-shadow-[0_-.125rem_var(--primary)]',\n 'group-[&:not([data-floating=true])]/tab-bar:group-data-[orientation=horizontal]/tabs:hover:aria-selected:inset-shadow-[0_-.188rem_var(--primary)]',\n 'group-[&:not([data-floating=true])]/tab-bar:group-data-[orientation=vertical]/tabs:px-3',\n 'group-[&:not([data-floating=true])]/tab-bar:group-data-[orientation=vertical]/tabs:hover:inset-shadow-[-.188rem_0_var(--border)]',\n 'group-[&:not([data-floating=true])]/tab-bar:group-data-[orientation=vertical]/tabs:aria-selected:inset-shadow-[-.125rem_0_var(--primary)]',\n 'group-[&:not([data-floating=true])]/tab-bar:group-data-[orientation=vertical]/tabs:hover:aria-selected:inset-shadow-[-.188rem_0_var(--primary)]',\n 'focus-visible:ring-[3px]',\n 'focus-visible:outline-1',\n 'disabled:pointer-events-none',\n 'disabled:opacity-50',\n '[&_svg]:pointer-events-none',\n '[&_svg]:shrink-0',\n \"[&_svg:not([class*='size-'])]:size-4\"\n );\n el.setAttribute('role', 'tab');\n el.setAttribute('data-slot', 'tab');\n if (!el.hasAttribute('id')) throw new Error(`${original}: Tabs must have an id`);\n if (!el.hasAttribute('aria-controls')) throw new Error(`${original}: aria-controls must be set to the tab-content id.`);\n });\n\n Alpine.directive('h-tab-action', (el) => {\n el.classList.add('cursor-pointer', 'ml-auto', 'rounded-md', 'text-foreground', 'hover:bg-secondary', 'hover:text-secondary-foreground', 'active:bg-secondary-active');\n el.setAttribute('role', 'button');\n el.setAttribute('data-slot', 'tab-action');\n });\n\n Alpine.directive('h-tab-list-actions', (el, { modifiers }) => {\n el.classList.add('flex', 'gap-1.5', 'items-center', 'justify-center');\n if (modifiers.includes('end'))\n el.classList.add(\n 'group-data-[orientation=horizontal]/tabs:ml-auto',\n 'group-[&:not([data-floating=true])]/tab-bar:group-data-[orientation=horizontal]/tabs:mr-1.5',\n 'group-data-[orientation=vertical]/tabs:mt-auto',\n 'group-[&:not([data-floating=true])]/tab-bar:group-data-[orientation=vertical]/tabs:mb-1.5'\n );\n el.setAttribute('data-slot', 'tab-list-actions');\n });\n\n Alpine.directive('h-tab-list-action', (el) => {\n setButtonClasses(el);\n el.classList.add(\n 'group-data-[floating=true]/tab-bar:rounded-md',\n 'group-data-[orientation=horizontal]/tabs:aspect-square',\n 'group-data-[orientation=horizontal]/tabs:w-auto',\n 'group-data-[floating=true]/tab-bar:group-data-[orientation=horizontal]/tabs:h-full',\n 'group-[&:not([data-floating=true])]/tab-bar:group-data-[orientation=horizontal]/tabs:h-[75%]',\n 'group-data-[orientation=vertical]/tabs:h-9',\n 'group-data-[floating=true]/tab-bar:group-data-[orientation=vertical]/tabs:w-full',\n 'group-[&:not([data-floating=true])]/tab-bar:group-data-[orientation=vertical]/tabs:w-[80%]'\n );\n el.classList.add(...buttonVariants[el.getAttribute('data-variant') ?? 'outline']);\n el.setAttribute('role', 'button');\n el.setAttribute('data-slot', 'tab-list-action');\n });\n\n Alpine.directive('h-tabs-content', (el, { original }) => {\n el.classList.add('flex-1', 'outline-none');\n el.setAttribute('role', 'tabpanel');\n el.setAttribute('tabindex', '0');\n el.setAttribute('data-slot', 'tabs-content');\n if (!el.hasAttribute('id')) throw new Error(`${original}: Tab content must have an id`);\n if (!el.hasAttribute('aria-labelledby')) throw new Error(`${original}: aria-labelledby must be set to the tab id.`);\n });\n}\n", "export default function (Alpine) {\n Alpine.directive('h-tag', (el) => {\n el.classList.add(\n 'bg-muted',\n 'text-muted-foreground',\n 'pointer-events-none',\n 'inline-flex',\n 'h-5',\n 'w-fit',\n 'min-w-5',\n 'items-center',\n 'justify-center',\n 'gap-1',\n 'rounded-sm',\n 'px-1',\n 'font-sans',\n 'text-xs',\n 'font-medium',\n 'select-none',\n \"[&_svg:not([class*='size-'])]:size-3\",\n '[[data-slot=tooltip-content]_&]:bg-background/20',\n '[[data-slot=tooltip-content]_&]:text-background',\n 'dark:[[data-slot=tooltip-content]_&]:bg-background/10'\n );\n el.setAttribute('data-slot', 'tag');\n });\n\n Alpine.directive('h-tag-group', (el) => {\n el.classList.add('inline-flex', 'items-center', 'gap-1');\n el.setAttribute('data-slot', 'tag-group');\n });\n}\n", "export default function (Alpine) {\n Alpine.directive('h-text', (el, { modifiers }) => {\n switch (modifiers[0]) {\n case 'h1':\n el.classList.add('text-4xl', 'font-extrabold', 'tracking-tight');\n break;\n case 'h2':\n el.classList.add('text-3xl', 'font-semibold', 'tracking-tight');\n break;\n case 'h3':\n el.classList.add('text-2xl', 'font-semibold', 'tracking-tight');\n break;\n case 'h4':\n el.classList.add('text-xl', 'font-semibold', 'tracking-tight');\n break;\n case 'h5':\n el.classList.add('text-base', 'font-semibold', 'tracking-tight');\n break;\n case 'h6':\n el.classList.add('text-sm', 'font-semibold', 'tracking-tight');\n break;\n case 'blockquote':\n el.classList.add('mt-6', 'border-l-2', 'pl-6', 'italic');\n break;\n case 'code-inline':\n el.classList.add('bg-muted', 'relative', 'rounded', 'px-[calc(var(--spacing)*1.2)]', 'py-[calc(var(--spacing)*0.8)]', 'font-mono', 'text-sm', 'font-semibold', 'whitespace-pre');\n break;\n case 'code':\n el.classList.add('bg-muted', 'relative', 'rounded', 'p-3', 'font-mono', 'text-sm', 'font-semibold', 'whitespace-pre');\n break;\n case 'lead':\n el.classList.add('text-muted-foreground', 'text-xl');\n break;\n case 'lg':\n el.classList.add('text-lg', 'font-semibold');\n break;\n case 'sm':\n el.classList.add('text-sm', 'leading-none', 'font-medium');\n break;\n case 'xs':\n el.classList.add('text-xs', 'leading-none', 'font-medium');\n break;\n case 'muted':\n el.classList.add('text-muted-foreground', 'text-sm');\n break;\n default:\n el.classList.add('leading-7');\n }\n });\n}\n", "export default function (Alpine) {\n Alpine.directive('h-textarea', (el, { modifiers }) => {\n el.classList.add(\n 'border-input',\n 'placeholder:text-muted-foreground',\n 'focus-visible:border-ring',\n 'focus-visible:ring-ring/50',\n 'aria-invalid:ring-negative/20',\n 'dark:aria-invalid:ring-negative/40',\n 'aria-invalid:border-negative',\n 'invalid:!ring-negative/20',\n 'dark:invalid:!ring-negative/40',\n 'invalid:!border-negative',\n 'bg-input-inner',\n 'flex',\n 'field-sizing-content',\n 'min-h-16',\n 'w-full',\n 'rounded-control',\n 'border',\n 'px-3',\n 'py-2',\n 'text-base',\n 'shadow-input',\n 'transition-colors',\n 'transition-shadow',\n 'motion-reduce:transition-none',\n 'outline-none',\n 'focus-visible:ring-[calc(var(--spacing)*0.75)]',\n 'disabled:cursor-not-allowed',\n 'disabled:opacity-50',\n 'md:text-sm'\n );\n if (modifiers.includes('group')) {\n el.classList.remove('rounded-control', 'border', 'bg-input-inner', 'py-2', 'shadow-input', 'focus-visible:ring-[calc(var(--spacing)*0.75)]');\n el.classList.add('flex-1', 'resize-none', 'rounded-none', 'border-0', 'bg-transparent', 'py-3', 'shadow-none', 'focus-visible:ring-0');\n el.setAttribute('data-slot', 'input-group-control');\n } else el.setAttribute('data-slot', 'textarea');\n });\n}\n", "export default function (Alpine) {\n Alpine.directive('h-tile-group', (el) => {\n el.classList.add('group/tile-group', 'gap-2');\n el.setAttribute('role', 'list');\n el.setAttribute('data-slot', 'tile-group');\n });\n\n Alpine.directive('h-tile', (el) => {\n el.classList.add(\n 'group/tile',\n 'flex',\n 'items-center',\n 'py-3',\n 'px-4',\n 'has-data-[slot=tile-header]:py-4',\n 'gap-2.5',\n 'text-sm',\n 'rounded-lg',\n 'transition-colors',\n 'motion-reduce:transition-none',\n '[a]:hover:bg-secondary-hover',\n '[a]:hover:text-secondary-foreground',\n '[a]:transition-colors',\n '[a]:motion-reduce:transition-none',\n 'duration-100',\n 'flex-wrap',\n 'outline-none',\n 'focus-visible:border-ring',\n 'focus-visible:ring-ring/50',\n 'focus-visible:ring-[calc(var(--spacing)*0.75)]'\n );\n el.setAttribute('data-slot', 'tile');\n\n switch (el.getAttribute('data-variant')) {\n case 'outline':\n el.classList.add('border', 'border-border');\n break;\n case 'shadow':\n el.classList.add('border', 'shadow-sm');\n break;\n case 'muted':\n el.classList.add('bg-muted');\n break;\n default:\n el.classList.add('border', 'bg-transparent', 'border-transparent');\n }\n });\n\n Alpine.directive('h-tile-header', (el) => {\n el.classList.add('flex', 'basis-full', 'items-center', 'justify-between', 'gap-2');\n el.setAttribute('data-slot', 'tile-header');\n });\n\n Alpine.directive('h-tile-media', (el) => {\n el.classList.add('flex', 'shrink-0', 'items-center', 'justify-center', 'gap-2', 'group-has-[[data-slot=tile-description]]/tile:self-start', '[&_svg]:pointer-events-none', 'group-has-[[data-slot=tile-description]]/tile:translate-y-0.5');\n el.setAttribute('role', 'list');\n el.setAttribute('data-slot', 'tile-media');\n\n switch (el.getAttribute('data-variant')) {\n case 'icon':\n el.classList.add('size-8', 'border', 'rounded-lg', 'bg-muted', \"[&_svg:not([class*='size-'])]:size-4\");\n break;\n case 'image':\n el.classList.add('size-10', 'rounded-lg', 'overflow-hidden', '[&_img]:size-full', '[&_img]:object-cover');\n break;\n default:\n el.classList.add('bg-transparent');\n }\n });\n\n Alpine.directive('h-tile-content', (el) => {\n el.classList.add('vbox', 'flex-1', 'gap-1', '[&+[data-slot=tile-content]]:flex-none');\n el.setAttribute('data-slot', 'tile-content');\n });\n\n Alpine.directive('h-tile-title', (el) => {\n el.classList.add('flex', 'w-fit', 'items-center', 'gap-2', 'text-sm', 'leading-snug', 'font-medium');\n el.setAttribute('data-slot', 'tile-title');\n });\n\n Alpine.directive('h-tile-description', (el) => {\n el.classList.add('text-muted-foreground', 'line-clamp-2', 'text-sm', 'leading-normal', 'font-normal', 'text-balance', '[&>a:hover]:text-primary', '[&>a]:underline', '[&>a]:underline-offset-4');\n el.setAttribute('data-slot', 'tile-description');\n });\n\n Alpine.directive('h-tile-actions', (el) => {\n el.classList.add('flex', 'items-center', 'gap-2');\n el.setAttribute('data-slot', 'tile-actions');\n });\n\n Alpine.directive('h-tile-footer', (el) => {\n el.classList.add('flex', 'basis-full', 'items-center', 'justify-between', 'gap-2');\n el.setAttribute('data-slot', 'tile-footer');\n });\n}\n", "import { autoUpdate, computePosition, flip, offset, shift } from '@floating-ui/dom';\nimport uuidv4 from '../utils/uuid';\nimport { Clock, createSvg } from './../common/icons';\nimport { sizeObserver } from './../common/input-size';\nconst dayPeriodLabels = { am: 'AM', pm: 'PM' };\n\nconst getSelectedTime = (rawTime, convertTo12) => {\n let hour = null;\n let minute = null;\n let second = null;\n let period = null;\n if (rawTime.length > 0) {\n let timeParts = rawTime.split(':');\n if (rawTime.toUpperCase().endsWith('AM')) {\n period = dayPeriodLabels.am;\n } else if (rawTime.toUpperCase().endsWith('PM')) {\n period = dayPeriodLabels.pm;\n }\n if (period) {\n timeParts[timeParts.length - 1] = timeParts[timeParts.length - 1].substring(0, timeParts[timeParts.length - 1].length - 3);\n }\n minute = timeParts[1];\n if ((!period && timeParts.length === 3) || (period && timeParts.length === 4)) {\n second = timeParts[2];\n }\n if (convertTo12 && period) {\n hour = timeParts[0];\n } else if (convertTo12 && !period) {\n period = Number(timeParts[0]) >= 12 ? dayPeriodLabels.pm : dayPeriodLabels.am;\n hour = Number(timeParts[0]) % 12 || 12;\n if (hour < 10) hour = `0${hour}`;\n } else if (!convertTo12 && period) {\n if (period === dayPeriodLabels.pm) {\n hour = Number(timeParts[0]) + 12;\n } else {\n hour = timeParts[0];\n }\n } else {\n hour = timeParts[0];\n }\n }\n return { hour, minute, second, period };\n};\n\nfunction scrollIntoCenter(container, element, behavior = 'instant') {\n const containerRect = container.getBoundingClientRect();\n const elementRect = element.getBoundingClientRect();\n\n const offset = elementRect.top - containerRect.top - container.clientHeight / 2 + element.clientHeight / 2;\n\n container.scrollBy({\n top: offset,\n behavior,\n });\n}\n\nexport default function (Alpine) {\n Alpine.directive('h-time-picker', (el, { expression, modifiers }, { evaluateLater, cleanup, effect, Alpine }) => {\n el._h_timepicker = Alpine.reactive({\n id: undefined,\n controls: `htpc${uuidv4()}`,\n model: undefined,\n expanded: false,\n is12Hour: false,\n locale: undefined,\n seconds: undefined,\n focusInput: undefined,\n close(focus = false) {\n el._h_timepicker.expanded = false;\n top.removeEventListener('click', el._h_timepicker.close);\n if (focus && this.focusInput) {\n this.focusInput();\n }\n },\n });\n el._h_time = {\n changed: undefined,\n parts: {\n hour: null,\n minute: null,\n second: null,\n period: null,\n },\n };\n\n el.classList.add(\n 'cursor-pointer',\n 'border-input',\n 'flex',\n 'items-center',\n 'justify-between',\n 'gap-2',\n 'pl-3',\n 'pr-2',\n 'data-[size=sm]:pr-1',\n 'text-sm',\n 'whitespace-nowrap',\n 'transition-colors',\n 'transition-shadow',\n 'motion-reduce:transition-none',\n 'duration-200',\n 'outline-none',\n 'has-[input:disabled]:pointer-events-none',\n 'has-[input:disabled]:cursor-not-allowed',\n 'has-[input:disabled]:opacity-50'\n );\n if (modifiers.includes('table')) {\n el.classList.add(\n 'size-full',\n 'h-10',\n 'has-[input:focus-visible]:inset-ring-ring/50',\n 'has-[input:focus-visible]:inset-ring-2',\n 'has-[input[aria-invalid=true]]:inset-ring-negative/20',\n 'dark:has-[input[aria-invalid=true]]:inset-ring-negative/40',\n 'has-[input:invalid]:!inset-ring-negative/20',\n 'dark:has-[input:invalid]:!inset-ring-negative/40',\n 'hover:bg-table-hover',\n 'hover:text-table-hover-foreground',\n 'active:!bg-table-active',\n 'active:!text-table-active-foreground',\n 'has-[[aria-expanded=true]]:bg-transparent',\n 'has-[[aria-expanded=true]]:text-foreground'\n );\n el.setAttribute('data-slot', 'cell-input-time');\n } else {\n el.classList.add(\n 'w-full',\n 'hover:bg-secondary-hover',\n 'hover:text-secondary-foreground',\n '[&>[data-slot=\"time-picker-input\"]]:hover:text-secondary-foreground',\n 'active:bg-secondary-active',\n 'active:text-secondary-foreground',\n '[&>[data-slot=\"time-picker-input\"]]:active:text-secondary-foreground',\n 'rounded-control',\n 'border',\n 'bg-input-inner',\n 'shadow-input',\n 'has-[[aria-expanded=true]]:bg-input-inner',\n 'has-[[aria-expanded=true]]:text-foreground',\n 'has-[input:focus-visible]:border-ring',\n 'has-[input:focus-visible]:ring-[calc(var(--spacing)*0.75)]',\n 'has-[input:focus-visible]:ring-ring/50',\n 'has-[input[aria-invalid=true]]:ring-negative/20',\n 'has-[input[aria-invalid=true]]:border-negative',\n 'dark:has-[input[aria-invalid=true]]:ring-negative/40',\n 'has-[input:invalid]:ring-negative/20',\n 'has-[input:invalid]:border-negative',\n 'dark:has-[input:invalid]:ring-negative/40'\n );\n el.setAttribute('data-slot', 'time-picker');\n }\n el.setAttribute('tabindex', '-1');\n el.appendChild(\n createSvg({\n icon: Clock,\n classes: 'opacity-70 text-inherit size-4 shrink-0 pointer-events-none',\n attrs: {\n 'aria-hidden': true,\n role: 'presentation',\n },\n })\n );\n\n if (expression) {\n const getConfig = evaluateLater(expression);\n\n effect(() => {\n getConfig((config) => {\n if (config) {\n if (config['locale']) el._h_timepicker.locale = config.locale;\n el._h_timepicker.seconds = config['seconds'];\n if (config['is12Hour'] !== undefined) {\n el._h_timepicker.is12Hour = config.is12Hour;\n } else {\n el._h_timepicker.is12Hour = new Intl.DateTimeFormat(el._h_timepicker.locale, { hour: 'numeric' }).resolvedOptions().hour12;\n }\n }\n });\n });\n } else {\n el._h_timepicker.is12Hour = new Intl.DateTimeFormat(el._h_timepicker.locale, { hour: 'numeric' }).resolvedOptions().hour12;\n }\n\n const handler = (event) => {\n if (event.type === 'keydown' && event.key !== 'Enter') return;\n el._h_timepicker.expanded = !el._h_timepicker.expanded;\n el.setAttribute('aria-expanded', el._h_timepicker.expanded);\n Alpine.nextTick(() => {\n if (el._h_timepicker.expanded) {\n top.addEventListener('click', el._h_timepicker.close);\n } else {\n top.removeEventListener('click', el._h_timepicker.close);\n }\n });\n };\n\n el.addEventListener('click', handler);\n el.addEventListener('keydown', handler);\n\n const observer = sizeObserver(el);\n\n cleanup(() => {\n observer.disconnect();\n el.removeEventListener('click', handler);\n el.removeEventListener('keydown', handler);\n top.removeEventListener('click', el._h_timepicker.close);\n });\n });\n\n Alpine.directive('h-time-picker-input', (el, { original }, { effect, cleanup, Alpine }) => {\n if (el.tagName !== 'INPUT') {\n throw new Error(`${original} must be a readonly input of type \"text\"`);\n }\n const timepicker = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_timepicker'));\n if (!timepicker) {\n throw new Error(`${original} must be inside a time-picker element`);\n }\n timepicker._h_timepicker.focusInput = () => {\n el.focus();\n };\n timepicker._h_time.changed = () => {\n Alpine.nextTick(() => {\n el.dispatchEvent(new Event('change'));\n });\n };\n if (Object.prototype.hasOwnProperty.call(el, '_x_model')) {\n timepicker._h_timepicker.model = el._x_model;\n } else {\n timepicker._h_timepicker.model = {\n get() {\n return el.value;\n },\n set(newValue) {\n el.value = newValue;\n },\n };\n }\n if (el.hasAttribute('id')) {\n timepicker._h_timepicker.id = el.getAttribute('id');\n } else {\n timepicker._h_timepicker.id = `htp${uuidv4()}`;\n el.setAttribute('id', timepicker._h_timepicker.id);\n }\n el.classList.add(\n 'appearance-none',\n 'cursor-pointer',\n 'bg-transparent',\n 'text-transparent',\n 'text-shadow-[0_0_0_var(--foreground)]',\n 'placeholder:text-muted-foreground',\n 'outline-none',\n 'size-full',\n 'border-0',\n 'md:text-sm',\n 'text-base',\n 'truncate'\n );\n el.setAttribute('aria-autocomplete', 'none');\n el.setAttribute('aria-controls', timepicker._h_timepicker.controls);\n el.setAttribute('aria-expanded', 'false');\n el.setAttribute('aria-haspopup', 'dialog');\n el.setAttribute('type', 'text');\n el.setAttribute('data-slot', 'time-picker-input');\n\n const rawTime = timepicker._h_timepicker.model.get();\n\n if (rawTime) {\n const { hour, minute, second, period } = getSelectedTime(rawTime, timepicker._h_timepicker.is12Hour);\n\n if (timepicker._h_timepicker.seconds === undefined && !second) {\n timepicker._h_timepicker.seconds = false;\n } else if (timepicker._h_timepicker.seconds === undefined && second) {\n timepicker._h_timepicker.seconds = true;\n }\n\n if (timepicker._h_timepicker.is12Hour) {\n if (timepicker._h_timepicker.seconds) {\n timepicker._h_timepicker.model.set(`${hour}:${minute}:${second ?? '00'} ${period}`);\n timepicker._h_time.parts.second = second ?? '00';\n } else {\n timepicker._h_timepicker.model.set(`${hour}:${minute} ${period}`);\n }\n timepicker._h_time.parts.hour = hour;\n timepicker._h_time.parts.minute = minute;\n timepicker._h_time.parts.period = period;\n } else {\n if (timepicker._h_timepicker.seconds) {\n timepicker._h_timepicker.model.set(`${hour}:${minute}:${second ?? '00'}`);\n timepicker._h_time.parts.second = second ?? '00';\n } else {\n timepicker._h_timepicker.model.set(`${hour}:${minute}`);\n }\n timepicker._h_time.parts.hour = hour;\n timepicker._h_time.parts.minute = minute;\n }\n }\n\n let placeholder;\n if (timepicker._h_timepicker.seconds) {\n placeholder = timepicker._h_timepicker.is12Hour ? '--:--:-- --' : '--:--:--';\n } else {\n placeholder = timepicker._h_timepicker.is12Hour ? '--:-- --' : '--:--';\n }\n el.setAttribute('placeholder', placeholder);\n\n const preventInput = (event) => {\n event.preventDefault();\n };\n\n el.addEventListener('beforeinput', preventInput);\n el.addEventListener('paste', preventInput);\n\n effect(() => {\n el.setAttribute('aria-expanded', timepicker._h_timepicker.expanded);\n });\n\n cleanup(() => {\n el.removeEventListener('keydown', preventInput);\n el.removeEventListener('paste', preventInput);\n });\n });\n\n Alpine.directive('h-time-picker-popup', (el, _, { effect, cleanup, Alpine }) => {\n const timepicker = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_timepicker'));\n el.classList.add(\n 'overflow-hidden',\n 'outline-none',\n 'border',\n 'rounded-control',\n 'absolute',\n 'bg-popover',\n 'text-popover-foreground',\n 'flex',\n 'flex-col',\n 'hidden',\n 'z-50',\n 'shadow-md',\n 'transition-[opacity,scale]',\n 'motion-reduce:transition-none',\n 'duration-100',\n 'ease-out',\n 'opacity-0',\n 'scale-95'\n );\n el.setAttribute('id', timepicker._h_timepicker.controls);\n el.setAttribute('tabindex', '-1');\n el.setAttribute('role', 'dialog');\n el.setAttribute('aria-modal', 'true');\n el.setAttribute('data-slot', 'time-picker-popup');\n el.setAttribute('aria-labelledby', timepicker._h_timepicker.id);\n\n const optionClasses = [\n 'px-3.5',\n 'py-2',\n 'hover:bg-secondary-hover',\n 'hover:text-secondary-foreground',\n 'aria-selected:bg-primary-active',\n 'aria-selected:text-primary-foreground',\n 'focus:bg-secondary-hover',\n 'focus:text-secondary-foreground',\n 'focus:aria-selected:bg-primary-hover',\n 'focus:aria-selected:text-primary-foreground',\n 'text-sm',\n 'text-center',\n 'outline-hidden',\n 'select-none',\n 'aria-disabled:pointer-events-none',\n 'aria-disabled:opacity-50',\n ];\n\n const updateModel = () => {\n let newValue;\n if (timepicker._h_time.parts.hour !== null && timepicker._h_time.parts.minute !== null) {\n if (timepicker._h_timepicker.seconds) {\n if (timepicker._h_time.parts.seconds !== null) {\n newValue = `${timepicker._h_time.parts.hour}:${timepicker._h_time.parts.minute}:${timepicker._h_time.parts.second}`;\n } else return;\n } else {\n newValue = `${timepicker._h_time.parts.hour}:${timepicker._h_time.parts.minute}`;\n }\n } else return;\n if (timepicker._h_timepicker.is12Hour) {\n if (timepicker._h_time.parts.period !== null) {\n newValue += ` ${timepicker._h_time.parts.period}`;\n } else return;\n }\n if (newValue) {\n timepicker._h_timepicker.model.set(newValue);\n timepicker._h_time.changed();\n }\n };\n\n const getCurrentTime = () => {\n let date = new Date();\n let hour = date.getHours();\n timepicker._h_time.parts.period = hour >= 12 ? dayPeriodLabels.pm : dayPeriodLabels.am;\n if (timepicker._h_timepicker.is12Hour) {\n hour = date.getHours() % 12 || 12;\n }\n let minute = date.getMinutes();\n timepicker._h_time.parts.hour = hour < 10 ? `0${hour}` : hour.toString();\n timepicker._h_time.parts.minute = minute < 10 ? `0${minute}` : minute.toString();\n if (timepicker._h_timepicker.seconds) {\n let second = date.getSeconds();\n timepicker._h_time.parts.second = second < 10 ? `0${second}` : second.toString();\n }\n updateModel();\n timepicker._h_timepicker.close();\n };\n\n function onKeyDown(event) {\n if (event.key === 'Escape') {\n timepicker._h_timepicker.close(true);\n } else if (event.target.tagName === 'LI') {\n let list;\n let inHoursList = event.target.parentElement.dataset.type === 'hours';\n if (inHoursList) {\n list = hoursList;\n } else if (event.target.parentElement.dataset.type === 'minutes') {\n list = minutesList;\n } else if (event.target.parentElement.dataset.type === 'seconds') {\n list = secondsList;\n } else if (event.target.parentElement.dataset.type === 'period') {\n list = periodList;\n }\n switch (event.key) {\n case 'Up':\n case 'ArrowUp': {\n event.target.setAttribute('tabindex', '-1');\n let prevElem = event.target.previousElementSibling;\n if (prevElem === null || prevElem.classList.contains('hidden')) {\n if (inHoursList && timepicker._h_timepicker.is12Hour) {\n prevElem = list.children[12];\n } else {\n prevElem = list.lastChild;\n }\n }\n prevElem.setAttribute('tabindex', '0');\n prevElem.focus();\n break;\n }\n case 'Down':\n case 'ArrowDown': {\n event.target.setAttribute('tabindex', '-1');\n let nextElem = event.target.nextElementSibling;\n if (nextElem === null || nextElem.classList.contains('hidden')) {\n if (inHoursList && timepicker._h_timepicker.is12Hour) {\n nextElem = list.children[1];\n } else {\n nextElem = list.firstChild;\n }\n }\n nextElem.setAttribute('tabindex', '0');\n nextElem.focus();\n break;\n }\n case 'Home':\n case 'PageUp': {\n let firstChild;\n if (list.firstChild === event.target) {\n break;\n } else if (inHoursList && timepicker._h_timepicker.is12Hour) {\n if (list.children[1] === event.target) {\n break;\n } else {\n firstChild = list.children[1];\n }\n } else {\n firstChild = list.firstChild;\n }\n event.target.setAttribute('tabindex', '-1');\n firstChild.setAttribute('tabindex', '0');\n firstChild.focus();\n break;\n }\n case 'End':\n case 'PageDown': {\n let lastElem;\n if (list.lastChild === event.target) {\n break;\n } else if (inHoursList && timepicker._h_timepicker.is12Hour) {\n if (list.children[12] !== event.target) {\n lastElem = list.children[12];\n } else {\n break;\n }\n } else {\n lastElem = list.lastChild;\n }\n event.target.setAttribute('tabindex', '-1');\n lastElem.setAttribute('tabindex', '0');\n lastElem.focus();\n break;\n }\n case 'Right':\n case 'ArrowRight': {\n let nextColumn = event.target.parentElement.nextElementSibling;\n if (nextColumn) {\n const child = nextColumn.querySelector('li[tabindex=\"0\"]');\n child.focus();\n }\n break;\n }\n case 'Left':\n case 'ArrowLeft': {\n let prevColumn = event.target.parentElement.previousElementSibling;\n if (prevColumn) {\n const child = prevColumn.querySelector('li[tabindex=\"0\"]');\n child.focus();\n }\n break;\n }\n case 'Enter':\n case ' ':\n event.target.click();\n break;\n default:\n return;\n }\n event.stopPropagation();\n event.preventDefault();\n } else if (event.key === 'Tab' && event.target.tagName === 'BUTTON') {\n if (event.target.dataset.action === 'close' || (event.target.dataset.action === 'time' && event.target.nextElementSibling.disabled)) {\n if (selectedHour) {\n selectedHour.focus();\n } else {\n hoursList.children[timepicker._h_timepicker.is12Hour ? 1 : 0].focus();\n }\n event.stopPropagation();\n event.preventDefault();\n }\n }\n }\n\n el.addEventListener('keydown', onKeyDown);\n\n function setTime(event) {\n if (event.target.tagName === 'LI') {\n if (event.target.parentElement.dataset.type === 'hours') {\n timepicker._h_time.parts.hour = event.target.innerText;\n } else if (event.target.parentElement.dataset.type === 'minutes') {\n timepicker._h_time.parts.minute = event.target.innerText;\n } else if (event.target.parentElement.dataset.type === 'seconds') {\n timepicker._h_time.parts.second = event.target.innerText;\n } else if (event.target.parentElement.dataset.type === 'period') {\n timepicker._h_time.parts.period = event.target.innerText;\n }\n render();\n updateModel();\n }\n }\n\n const timeContainer = document.createElement('div');\n timeContainer.classList.add('hbox', 'max-h-[14rem]', '[&>ul]:border-r', '[&>ul:last-of-type]:border-r-0');\n if (el.firstChild) el.classList.add('border-b');\n timeContainer.setAttribute('role', 'group');\n timeContainer.addEventListener('click', setTime);\n el.appendChild(timeContainer);\n\n const hoursList = document.createElement('ul');\n hoursList.classList.add('flex-1', 'overflow-y-auto', '[scrollbar-width:thin]');\n hoursList.setAttribute('role', 'listbox');\n hoursList.setAttribute('tabindex', '-1');\n hoursList.setAttribute('aria-label', el.dataset.labelHours ?? 'Select hour');\n hoursList.setAttribute('data-type', 'hours');\n timeContainer.appendChild(hoursList);\n\n for (let h = 0; h < 24; h++) {\n const hour = document.createElement('li');\n hour.classList.add(...optionClasses);\n hour.setAttribute('role', 'option');\n hour.setAttribute('tabindex', '-1');\n hour.setAttribute('aria-label', h);\n hour.setAttribute('aria-selected', false);\n hour.innerText = h < 10 ? `0${h}` : h;\n hoursList.appendChild(hour);\n }\n\n const minutesList = document.createElement('ul');\n minutesList.classList.add('flex-1', 'overflow-y-auto', '[scrollbar-width:thin]');\n minutesList.setAttribute('role', 'listbox');\n minutesList.setAttribute('tabindex', '-1');\n minutesList.setAttribute('aria-label', el.dataset.labelMinutes ?? 'Select minute');\n minutesList.setAttribute('data-type', 'minutes');\n timeContainer.appendChild(minutesList);\n\n for (let m = 0; m < 60; m++) {\n const minute = document.createElement('li');\n minute.classList.add(...optionClasses);\n minute.setAttribute('role', 'option');\n minute.setAttribute('tabindex', '-1');\n minute.setAttribute('aria-label', m);\n minute.setAttribute('aria-selected', false);\n minute.innerText = m < 10 ? `0${m}` : m;\n minutesList.appendChild(minute);\n }\n\n const secondsList = document.createElement('ul');\n secondsList.classList.add('flex-1', 'overflow-y-auto', '[scrollbar-width:thin]');\n if (!timepicker._h_timepicker.seconds) {\n secondsList.classList.add('hidden');\n }\n secondsList.setAttribute('role', 'listbox');\n secondsList.setAttribute('tabindex', '-1');\n secondsList.setAttribute('aria-label', el.dataset.labelSeconds ?? 'Select second');\n secondsList.setAttribute('data-type', 'seconds');\n timeContainer.appendChild(secondsList);\n\n for (let s = 0; s < 60; s++) {\n const second = document.createElement('li');\n second.classList.add(...optionClasses);\n second.setAttribute('role', 'option');\n second.setAttribute('tabindex', '-1');\n second.setAttribute('aria-label', s);\n second.setAttribute('aria-selected', false);\n second.innerText = s < 10 ? `0${s}` : s;\n secondsList.appendChild(second);\n }\n\n const periodList = document.createElement('ul');\n periodList.classList.add('flex-1', 'overflow-y-auto', '[scrollbar-width:thin]');\n if (!timepicker._h_timepicker.is12Hour) {\n periodList.classList.add('hidden');\n }\n periodList.setAttribute('role', 'listbox');\n periodList.setAttribute('tabindex', '-1');\n periodList.setAttribute('aria-label', el.dataset.labelMeridiem ?? 'Select meridiem');\n periodList.setAttribute('data-type', 'period');\n timeContainer.appendChild(periodList);\n\n const am = document.createElement('li');\n am.classList.add(...optionClasses);\n am.setAttribute('role', 'option');\n am.setAttribute('tabindex', '-1');\n am.setAttribute('aria-selected', false);\n am.innerText = dayPeriodLabels.am;\n periodList.appendChild(am);\n\n const pm = document.createElement('li');\n pm.classList.add(...optionClasses);\n pm.setAttribute('role', 'option');\n pm.setAttribute('tabindex', '-1');\n pm.setAttribute('aria-selected', false);\n pm.innerText = dayPeriodLabels.pm;\n periodList.appendChild(pm);\n\n const footer = document.createElement('div');\n footer.classList.add('hbox', 'justify-between', 'gap-1', 'border-t', 'p-2');\n footer.setAttribute('tabindex', '-1');\n\n const nowButton = document.createElement('button');\n nowButton.setAttribute('type', 'button');\n nowButton.setAttribute(Alpine.prefixed('h-button'), '');\n nowButton.setAttribute('data-size', 'sm');\n nowButton.setAttribute('data-action', 'time');\n nowButton.innerText = el.dataset.labelNow ?? 'Now';\n nowButton.addEventListener('click', getCurrentTime);\n footer.appendChild(nowButton);\n\n const okButton = document.createElement('button');\n okButton.setAttribute('type', 'button');\n okButton.setAttribute(Alpine.prefixed('h-button'), '');\n okButton.setAttribute('data-variant', 'primary');\n okButton.setAttribute('data-size', 'sm');\n okButton.setAttribute('data-action', 'close');\n okButton.innerText = el.dataset.labelOk ?? 'OK';\n okButton.disabled = true;\n okButton.addEventListener('click', timepicker._h_timepicker.close);\n footer.appendChild(okButton);\n\n el.appendChild(footer);\n Alpine.initTree(footer);\n\n let selectedHour;\n let selectedMinute;\n let selectedSecond;\n let selectedPeriod;\n\n function render() {\n if (timepicker._h_timepicker.is12Hour) {\n hoursList.firstChild.classList.add('hidden');\n for (let h = 1; h < 13; h++) {\n if (hoursList.children[h].innerText === timepicker._h_time.parts.hour) {\n hoursList.children[h].setAttribute('tabindex', '0');\n hoursList.children[h].setAttribute('aria-selected', true);\n selectedHour = hoursList.children[h];\n } else {\n hoursList.children[h].setAttribute('tabindex', '-1');\n hoursList.children[h].setAttribute('aria-selected', false);\n }\n }\n for (let h = 13; h < hoursList.children.length; h++) {\n hoursList.children[h].classList.add('hidden');\n hoursList.children[h].setAttribute('tabindex', '-1');\n hoursList.children[h].setAttribute('aria-selected', false);\n }\n } else {\n for (let h = 0; h < hoursList.children.length; h++) {\n hoursList.children[h].classList.remove('hidden');\n if (hoursList.children[h].innerText === timepicker._h_time.parts.hour) {\n hoursList.children[h].setAttribute('tabindex', '0');\n hoursList.children[h].setAttribute('aria-selected', true);\n selectedHour = hoursList.children[h];\n } else {\n hoursList.children[h].setAttribute('tabindex', '-1');\n hoursList.children[h].setAttribute('aria-selected', false);\n }\n }\n }\n if (!selectedHour) {\n hoursList.children[timepicker._h_timepicker.is12Hour ? 1 : 0].setAttribute('tabindex', '0');\n }\n\n for (let m = 0; m < minutesList.children.length; m++) {\n if (minutesList.children[m].innerText === timepicker._h_time.parts.minute) {\n minutesList.children[m].setAttribute('tabindex', '0');\n minutesList.children[m].setAttribute('aria-selected', true);\n selectedMinute = minutesList.children[m];\n } else {\n minutesList.children[m].setAttribute('tabindex', '-1');\n minutesList.children[m].setAttribute('aria-selected', false);\n }\n }\n if (!selectedMinute) {\n minutesList.firstChild.setAttribute('tabindex', '0');\n }\n\n if (timepicker._h_timepicker.seconds) {\n secondsList.classList.remove('hidden');\n for (let s = 0; s < secondsList.children.length; s++) {\n if (secondsList.children[s].innerText === timepicker._h_time.parts.second) {\n secondsList.children[s].setAttribute('tabindex', '0');\n secondsList.children[s].setAttribute('aria-selected', true);\n selectedSecond = secondsList.children[s];\n } else {\n secondsList.children[s].setAttribute('tabindex', '-1');\n secondsList.children[s].setAttribute('aria-selected', false);\n }\n }\n if (!selectedSecond) {\n secondsList.firstChild.setAttribute('tabindex', '0');\n }\n if (timepicker._h_timepicker.is12Hour) {\n okButton.disabled = timepicker._h_time.parts.hour && timepicker._h_time.parts.minute && timepicker._h_time.parts.second && timepicker._h_time.parts.period ? false : true;\n } else {\n okButton.disabled = timepicker._h_time.parts.hour && timepicker._h_time.parts.minute && timepicker._h_time.parts.second ? false : true;\n }\n } else {\n secondsList.classList.add('hidden');\n if (timepicker._h_timepicker.is12Hour) {\n okButton.disabled = timepicker._h_time.parts.hour && timepicker._h_time.parts.minute && timepicker._h_time.parts.period ? false : true;\n } else {\n okButton.disabled = timepicker._h_time.parts.hour && timepicker._h_time.parts.minute ? false : true;\n }\n }\n\n if (timepicker._h_timepicker.is12Hour) {\n periodList.classList.remove('hidden');\n for (let p = 0; p < periodList.children.length; p++) {\n if (periodList.children[p].innerText === timepicker._h_time.parts.period) {\n periodList.children[p].setAttribute('tabindex', '0');\n periodList.children[p].setAttribute('aria-selected', true);\n selectedPeriod = periodList.children[p];\n } else {\n periodList.children[p].setAttribute('tabindex', '-1');\n periodList.children[p].setAttribute('aria-selected', false);\n }\n }\n if (!selectedPeriod) {\n periodList.firstChild.setAttribute('tabindex', '0');\n }\n } else {\n periodList.classList.add('hidden');\n }\n }\n\n const onClick = (event) => {\n event.stopPropagation();\n };\n\n el.addEventListener('click', onClick);\n\n let autoUpdateCleanup;\n\n let focusFirstItem = true;\n\n function updatePosition() {\n computePosition(timepicker, el, {\n placement: el.getAttribute('data-align') || 'bottom-start',\n middleware: [offset(4), flip(), shift({ padding: 4 })],\n }).then(({ x, y }) => {\n Object.assign(el.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n el.classList.remove('scale-95', 'opacity-0');\n if (focusFirstItem) {\n focusFirstItem = false;\n Alpine.nextTick(() => {\n if (selectedHour) {\n selectedHour.focus();\n } else {\n hoursList.children[timepicker._h_timepicker.is12Hour ? 1 : 0].focus();\n }\n });\n }\n });\n }\n\n effect(() => {\n if (timepicker._h_timepicker.expanded) {\n render();\n el.classList.remove('hidden');\n autoUpdateCleanup = autoUpdate(timepicker, el, updatePosition);\n if (selectedHour) scrollIntoCenter(selectedHour.parentElement, selectedHour);\n if (selectedMinute) scrollIntoCenter(selectedMinute.parentElement, selectedMinute);\n if (selectedSecond && timepicker._h_timepicker.seconds) scrollIntoCenter(selectedSecond.parentElement, selectedSecond);\n } else {\n if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) {\n el.classList.add('hidden', 'scale-95', 'opacity-0');\n Object.assign(el.style, {\n left: '0px',\n top: '0px',\n });\n } else {\n el.classList.add('scale-95', 'opacity-0');\n }\n if (autoUpdateCleanup) autoUpdateCleanup();\n focusFirstItem = true;\n }\n });\n\n function onTransitionEnd(event) {\n if (event.target === el && event.target.classList.contains('opacity-0')) {\n el.classList.add('hidden');\n Object.assign(el.style, {\n left: '0px',\n top: '0px',\n });\n }\n }\n\n el.addEventListener('transitionend', onTransitionEnd);\n\n cleanup(() => {\n el.removeEventListener('keydown', onKeyDown);\n el.removeEventListener('click', onClick);\n el.removeEventListener('transitionend', onTransitionEnd);\n okButton.removeEventListener('click', timepicker._h_timepicker.close);\n nowButton.removeEventListener('click', getCurrentTime);\n timeContainer.removeEventListener('click', setTime);\n });\n });\n}\n", "export default function (Alpine) {\n Alpine.directive('h-toolbar', (el, { modifiers }) => {\n el.classList.add(\n 'bg-object-header',\n 'text-object-header-foreground',\n 'hbox',\n 'shrink-0',\n 'items-center',\n 'px-1',\n 'has-[>[data-slot=\"avatar\"]:last-of-type]:pr-2',\n 'has-[>[data-slot=\"toolbar-image\"]:first-of-type]:pl-2',\n 'gap-1',\n modifiers.includes('footer') ? 'border-t' : 'border-b',\n 'w-full',\n 'h-12',\n 'data-[size=sm]:h-8',\n 'data-[size=md]:h-10',\n 'data-[variant=transparent]:bg-transparent',\n 'data-[variant=transparent]:text-foreground',\n 'data-[floating=true]:shadow-xs',\n 'data-[floating=true]:rounded-lg',\n 'data-[floating=true]:border'\n );\n el.setAttribute('data-slot', 'toolbar');\n });\n\n Alpine.directive('h-toolbar-image', (el) => {\n el.classList.add('size-8', '[[data-size=md]_&]:size-7', '[[data-size=sm]_&]:size-6');\n el.setAttribute('data-slot', 'toolbar-image');\n });\n\n Alpine.directive('h-toolbar-branding', (el) => {\n el.classList.add(\n 'flex',\n 'flex-col',\n 'pl-2',\n '[[data-slot=toolbar-image]~&]:pl-1',\n '[[data-size=sm]_&,[data-size=md]_&]:flex-row',\n '[[data-size=sm]_&,[data-size=md]_&]:items-baseline',\n '[[data-size=sm]_&,[data-size=md]_&]:gap-1',\n '[[data-size=sm]_&_[data-slot=toolbar-subtitle],[data-size=md]_&_[data-slot=toolbar-subtitle]]:pl-0'\n );\n el.setAttribute('data-slot', 'toolbar-branding');\n });\n\n Alpine.directive('h-toolbar-title', (el) => {\n el.classList.add('pl-2', '[[data-slot=toolbar-branding]_&]:pl-0', 'font-medium', 'whitespace-nowrap', 'text-ellipsis', 'overflow-hidden');\n el.setAttribute('data-slot', 'toolbar-title');\n });\n\n Alpine.directive('h-toolbar-subtitle', (el) => {\n el.classList.add('text-xs', 'font-normal', 'whitespace-nowrap', 'text-ellipsis', 'overflow-hidden');\n el.setAttribute('data-slot', 'toolbar-subtitle');\n });\n\n Alpine.directive('h-toolbar-spacer', (el) => {\n el.classList.add('flex-[1_auto]', 'h-full');\n el.setAttribute('tabindex', '-1');\n el.setAttribute('data-slot', 'toolbar-spacer');\n });\n\n Alpine.directive('h-toolbar-separator', (el) => {\n el.classList.add('w-px', 'h-8', '[[data-size=md]_&,[data-size=sm]_&]:h-6', 'border-l');\n el.setAttribute('data-slot', 'toolbar-separator');\n });\n}\n", "import { arrow, computePosition, flip, offset, shift } from '@floating-ui/dom';\nimport uuidv4 from '../utils/uuid';\nexport default function (Alpine) {\n Alpine.directive('h-tooltip-trigger', (el, _, { Alpine, cleanup }) => {\n el._tooltip = Alpine.reactive({\n id: undefined,\n controls: `htp${uuidv4()}`,\n shown: false,\n });\n\n if (el.hasAttribute('id')) {\n el._tooltip.id = el.getAttribute('id');\n } else {\n el._tooltip.id = `htt${uuidv4()}`;\n el.setAttribute('id', el._tooltip.id);\n }\n el.setAttribute('aria-describedby', el._tooltip.controls);\n\n const handler = (event) => {\n el._tooltip.shown = event.type === 'pointerenter';\n };\n\n el.addEventListener('pointerenter', handler);\n el.addEventListener('pointerleave', handler);\n\n cleanup(() => {\n el.removeEventListener('pointerenter', handler);\n el.removeEventListener('pointerleave', handler);\n });\n });\n\n Alpine.directive('h-tooltip', (el, { original }, { effect, cleanup }) => {\n const tooltip = (() => {\n let sibling = el.previousElementSibling;\n while (sibling && !Object.prototype.hasOwnProperty.call(sibling, '_tooltip')) {\n sibling = sibling.previousElementSibling;\n }\n return sibling;\n })();\n\n if (!tooltip) {\n throw new Error(`${original} must be placed after a tooltip trigger element`);\n }\n el.classList.add(\n 'absolute',\n 'bg-foreground',\n 'text-background',\n 'z-50',\n 'w-fit',\n 'rounded-md',\n 'px-3',\n 'py-1.5',\n 'text-xs',\n 'text-balance',\n 'transition-[opacity,scale]',\n 'motion-reduce:transition-none',\n 'duration-100',\n 'ease-out',\n 'opacity-0',\n 'scale-95'\n );\n el.setAttribute('data-slot', 'tooltip');\n el.setAttribute('id', tooltip._tooltip.controls);\n\n const arrowEl = document.createElement('span');\n arrowEl.classList.add('absolute', 'bg-foreground', 'size-2.5', 'rotate-45');\n el.appendChild(arrowEl);\n\n function updatePosition() {\n computePosition(tooltip, el, {\n placement: 'top',\n middleware: [offset(10), flip(), shift({ padding: 4 }), arrow({ element: arrowEl })],\n }).then(({ x, y, middlewareData, placement }) => {\n Object.assign(el.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n el.classList.remove('scale-95', 'opacity-0');\n if (middlewareData.arrow) {\n Object.assign(arrowEl.style, {\n left: middlewareData.arrow.x != null ? `${middlewareData.arrow.x}px` : '',\n top: placement === 'top' ? `${el.offsetHeight - arrowEl.clientHeight / 2}px` : `-${arrowEl.clientHeight / 2}px`,\n });\n }\n });\n }\n\n effect(() => {\n if (tooltip._tooltip.shown) {\n el.classList.remove('hidden');\n updatePosition();\n } else {\n if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) {\n el.classList.add('hidden', 'scale-95', 'opacity-0');\n Object.assign(el.style, {\n left: '0px',\n top: '0px',\n });\n Object.assign(arrowEl.style, {\n left: '0px',\n top: '0px',\n });\n } else {\n el.classList.add('scale-95', 'opacity-0');\n }\n }\n });\n\n function onTransitionEnd(event) {\n if (event.target === el && event.target.classList.contains('opacity-0')) {\n el.classList.add('hidden');\n Object.assign(el.style, {\n left: '0px',\n top: '0px',\n });\n Object.assign(arrowEl.style, {\n left: '0px',\n top: '0px',\n });\n }\n }\n\n el.addEventListener('transitionend', onTransitionEnd);\n\n cleanup(() => {\n el.removeEventListener('transitionend', onTransitionEnd);\n });\n });\n}\n", "import { ChevronRight, createSvg } from './../common/icons';\n\nexport default function (Alpine) {\n Alpine.directive('h-tree', (el, { modifiers }, { effect, cleanup }) => {\n el.classList.add('vbox', 'w-full', 'min-w-0', 'gap-1');\n el.setAttribute('tabindex', '-1');\n if (modifiers.includes('sub')) {\n el.classList.add(\n 'relative',\n 'translate-x-px',\n 'py-0.5',\n 'pl-4',\n 'data-[border=true]:before:absolute',\n 'data-[border=true]:before:left-[calc(var(--spacing)*3)]',\n 'data-[border=true]:before:block',\n 'data-[border=true]:before:top-0.5',\n 'data-[border=true]:before:bottom-0.5',\n 'data-[border=true]:before:min-w-px',\n 'data-[border=true]:before:w-[calc(var(--spacing)*0.25)]',\n 'data-[border=true]:before:bg-border'\n );\n el.setAttribute('data-slot', 'subtree');\n el.setAttribute('role', 'group');\n\n const treeItem = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_tree_item'));\n effect(() => {\n if (treeItem._h_tree_item.expanded) {\n el.classList.remove('!hidden');\n } else {\n el.classList.add('!hidden');\n }\n });\n } else {\n el.setAttribute('data-slot', 'tree');\n el.setAttribute('role', 'tree');\n\n function getVisibleItems(tree) {\n return [...tree.querySelectorAll('[role=\"treeitem\"]')].filter((item) => {\n let parent = item.parentElement.closest('[role=\"group\"]');\n while (parent) {\n const parentItem = parent.closest('[role=\"treeitem\"]');\n if (parentItem && parentItem.getAttribute('aria-expanded') === 'false') {\n return false;\n }\n parent = parentItem?.parentElement.closest('[role=\"group\"]');\n }\n return true;\n });\n }\n\n function focusItem(item) {\n [...el.querySelectorAll('[role=\"treeitem\"]')].forEach((i) => i.setAttribute('tabindex', '-1'));\n item.setAttribute('tabindex', '0');\n item.focus();\n }\n\n function onKeyDown(event) {\n const items = getVisibleItems(el);\n const current = el.querySelector('li[tabindex=\"0\"]');\n const index = items.indexOf(current);\n\n if (index === -1) return;\n\n switch (event.key) {\n case 'Down':\n case 'ArrowDown':\n event.preventDefault();\n if (items[index + 1]) focusItem(items[index + 1]);\n break;\n case 'Up':\n case 'ArrowUp':\n event.preventDefault();\n if (items[index - 1]) focusItem(items[index - 1]);\n break;\n case 'Right':\n case 'ArrowRight':\n if (current.getAttribute('aria-expanded') === 'false') {\n current.click();\n } else {\n const firstChild = current.querySelector('[role=\"group\"] [role=\"treeitem\"]');\n if (firstChild) focusItem(firstChild);\n }\n break;\n case 'Left':\n case 'ArrowLeft':\n if (current.getAttribute('aria-expanded') === 'true') {\n current.click();\n } else {\n const parentItem = current.parentElement.closest('[role=\"treeitem\"]');\n if (parentItem) focusItem(parentItem);\n }\n break;\n\n case 'Home':\n event.preventDefault();\n focusItem(items[0]);\n break;\n\n case 'End':\n event.preventDefault();\n focusItem(items[items.length - 1]);\n break;\n\n case 'Enter':\n case ' ':\n event.preventDefault();\n current.click();\n break;\n }\n }\n\n el.addEventListener('keydown', onKeyDown);\n cleanup(() => {\n el.removeEventListener('keydown', onKeyDown);\n });\n }\n });\n\n Alpine.directive('h-tree-item', (el, { modifiers, expression }, { evaluate, evaluateLater, effect, cleanup }) => {\n el._h_tree_item = Alpine.reactive({\n hasSubtree: modifiers.includes('expanded'),\n expanded: true,\n });\n el.classList.add(\n 'group/tree-item',\n 'relative',\n 'outline-none',\n 'focus:[&>[data-slot=\"tree-button\"]]:bg-secondary',\n 'focus:[&>[data-slot=\"tree-button\"]]:text-secondary-foreground',\n 'aria-selected:[&>[data-slot=\"tree-button\"]]:bg-primary',\n 'aria-selected:[&>[data-slot=\"tree-button\"]]:font-medium',\n 'aria-selected:[&>[data-slot=\"tree-button\"]]:text-primary-foreground'\n );\n el.setAttribute('data-slot', 'tree-item');\n el.setAttribute('role', 'treeitem');\n const treeRoot = Alpine.findClosest(el.parentElement, (parent) => parent.getAttribute('data-slot') === 'tree');\n if (treeRoot && treeRoot.querySelector('[data-slot=tree-item]') === el) {\n el.setAttribute('tabindex', '0');\n } else {\n el.setAttribute('tabindex', '-1');\n }\n\n effect(() => {\n if (!el.closest('[role=\"tree\"]')) return;\n });\n\n const onClick = (event) => {\n if (event.target === el || event.target.parentElement === el) {\n if (el._h_tree_item.hasSubtree) {\n if (expression === 'false' || expression === 'true') {\n el._h_tree_item.expanded = el.getAttribute('aria-expanded') === 'true' ? false : true;\n el.setAttribute('aria-expanded', el._h_tree_item.expanded);\n } else {\n el._h_tree_item.expanded = !evaluate(expression);\n evaluate(`${expression} = !${expression}`);\n }\n }\n [...treeRoot.querySelectorAll('[role=\"treeitem\"]')].forEach((i) => i.setAttribute('tabindex', '-1'));\n el.setAttribute('tabindex', '0');\n }\n };\n\n el.addEventListener('click', onClick);\n\n cleanup(() => {\n el.removeEventListener('click', onClick);\n });\n\n if (el._h_tree_item.hasSubtree) {\n const setExpanded = (expanded) => {\n el._h_tree_item.expanded = expanded;\n el.setAttribute('aria-expanded', expanded);\n };\n const getExpanded = evaluateLater(expression);\n\n effect(() => {\n getExpanded((expanded) => {\n setExpanded(expanded);\n });\n });\n }\n });\n\n Alpine.directive('h-tree-button', (el, { original }, { effect }) => {\n const treeItem = Alpine.findClosest(el.parentElement, (parent) => Object.prototype.hasOwnProperty.call(parent, '_h_tree_item'));\n if (!treeItem) throw new Error(`${original} must be inside a tree item`);\n el.classList.add(\n 'flex',\n 'w-full',\n 'items-center',\n 'gap-2',\n 'overflow-hidden',\n 'rounded-md',\n 'p-1.5',\n 'text-left',\n 'text-sm',\n 'align-middle',\n 'outline-hidden',\n 'ring-ring',\n 'transition-[width,height,padding]',\n 'motion-reduce:transition-none',\n 'hover:bg-secondary',\n 'hover:text-secondary-foreground',\n 'focus-visible:ring-2',\n 'active:bg-primary',\n 'active:text-primary-foreground',\n 'disabled:pointer-events-none',\n 'disabled:opacity-50',\n 'aria-disabled:pointer-events-none',\n 'aria-disabled:opacity-50',\n '[&>span]:w-full',\n '[&>span]:truncate',\n '[&>span]:align-middle',\n '[&>span]:pointer-events-none',\n '[&>svg]:size-4',\n '[&>svg]:shrink-0',\n '[&>svg]:pointer-events-none',\n 'data-[indicator]:after:block',\n 'data-[indicator]:after:ml-auto',\n 'data-[indicator]:after:rounded-full',\n 'data-[indicator]:after:size-2',\n 'data-[indicator=positive]:after:bg-positive',\n 'data-[indicator=negative]:after:bg-negative',\n 'data-[indicator=warning]:after:bg-warning',\n 'data-[indicator=information]:after:bg-information'\n );\n el.setAttribute('data-slot', 'tree-button');\n el.setAttribute('tabindex', '-1');\n el.setAttribute('role', 'presentation');\n\n if (treeItem._h_tree_item.hasSubtree) {\n const chevronDown = createSvg({\n icon: ChevronRight,\n classes: 'size-4 shrink-0 transition-transform motion-reduce:transition-none duration-200 [[data-expanded=true]>&]:rotate-90',\n attrs: {\n 'aria-hidden': true,\n role: 'presentation',\n },\n });\n el.prepend(chevronDown);\n } else {\n el.classList.add('before:size-4');\n }\n\n effect(() => {\n el.setAttribute('data-expanded', treeItem._h_tree_item.expanded);\n });\n });\n}\n", "{\n \"name\": \"@codbex/harmonia\",\n \"version\": \"1.10.2\",\n \"description\": \"A Modern UI Component Library for Alpine.js\",\n \"repository\": {\n \"url\": \"git+https://github.com/codbex/harmonia.git\",\n \"type\": \"git\"\n },\n \"type\": \"module\",\n \"main\": \"dist/harmonia.min.js\",\n \"module\": \"dist/harmonia.esm.min.js\",\n \"unpkg\": \"dist/harmonia.min.js\",\n \"exports\": \"./dist/harmonia.esm.min.js\",\n \"keywords\": [],\n \"author\": \"StanGenchev\",\n \"license\": \"MIT\",\n \"contributors\": [\n {\n \"name\": \"Stan Genchev\",\n \"email\": \"stan.genchev@codbex.com\",\n \"url\": \"https://github.com/StanZGenchev\"\n }\n ],\n \"files\": [\n \"dist/\"\n ],\n \"scripts\": {\n \"build\": \"node ./scripts/build.cjs && npm run tailwind && node ./scripts/doc-build.cjs\",\n \"build:prod\": \"node ./scripts/build.cjs && npm run tailwind\",\n \"tailwind\": \"npx @tailwindcss/cli -m -i src/styles/globals.css -o dist/harmonia.css\",\n \"tailwind:watch\": \"npx @tailwindcss/cli -m -i src/styles/globals.css -o dist/harmonia.css -w\",\n \"test\": \"vitest run\",\n \"test:watch\": \"vitest\",\n \"test:coverage\": \"vitest run --coverage\",\n \"lint\": \"eslint \\\"src/**/*.js\\\" \\\"scripts/**/*.cjs\\\"\",\n \"lint:fix\": \"eslint --fix \\\"src/**/*.js\\\" \\\"scripts/**/*.cjs\\\"\",\n \"format\": \"prettier --write \\\"**/*.{js,jsx,ts,tsx,json,css,scss,md,html,yaml}\\\" --config ./.prettierrc\",\n \"format:check\": \"prettier --check \\\"**/*.{js,jsx,ts,tsx,json,css,scss,md,html,yaml}\\\" --config ./.prettierrc\",\n \"docs:install\": \"node ./scripts/doc-install.cjs\",\n \"docs:dev\": \"vitepress dev docs\",\n \"docs:build\": \"vitepress build docs\",\n \"docs:preview\": \"vitepress preview docs\"\n },\n \"docDependencies\": {\n \"alpinejs\": \"^3.15.12\",\n \"lucide\": \"^1.16.0\",\n \"culori\": \"^4.0.2\",\n \"@fontsource/open-sans\": \"^5.2.7\"\n },\n \"devDependencies\": {\n \"@eslint/js\": \"^10.0.1\",\n \"@tailwindcss/cli\": \"^4.3.0\",\n \"@vitest/coverage-v8\": \"^4.1.7\",\n \"alpinejs\": \"^3.15.12\",\n \"autoprefixer\": \"^10.5.0\",\n \"esbuild\": \"^0.28.0\",\n \"eslint\": \"^10.4.0\",\n \"eslint-config-prettier\": \"^10.1.8\",\n \"globals\": \"^17.6.0\",\n \"happy-dom\": \"^20.9.0\",\n \"prettier\": \"^3.8.3\",\n \"prettier-plugin-organize-imports\": \"^4.3.0\",\n \"prettier-plugin-tailwindcss\": \"^0.7.2\",\n \"tailwindcss\": \"^4.3.0\",\n \"vitepress\": \"^2.0.0-alpha.17\",\n \"vitest\": \"^4.1.7\"\n },\n \"peerDependencies\": {\n \"alpinejs\": \"^3.15.12\"\n },\n \"dependencies\": {\n \"@floating-ui/dom\": \"^1.7.6\",\n \"nouislider\": \"^15.8.1\"\n }\n}\n", "let colorSchemeKey = 'codbex.harmonia.colorMode';\nlet savedScheme = localStorage.getItem(colorSchemeKey);\n\nconst callbacks = [];\n\nconst onColorSchemeChange = (scheme) => {\n for (let i = 0; i < callbacks.length; i++) {\n callbacks[i](scheme);\n }\n};\n\nconst colorSchemeChange = (event) => {\n if (event.matches) {\n document.documentElement.classList.add('dark');\n onColorSchemeChange('dark');\n } else {\n document.documentElement.classList.remove('dark');\n onColorSchemeChange('light');\n }\n};\n\nconst initColorScheme = () => {\n if (savedScheme === 'dark') {\n document.documentElement.classList.add('dark');\n } else if (savedScheme === 'light') {\n document.documentElement.classList.remove('dark');\n } else {\n if (window.matchMedia('(prefers-color-scheme: dark)').matches) {\n document.documentElement.classList.add('dark');\n }\n window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', colorSchemeChange);\n }\n};\n\nconst setColorScheme = (mode) => {\n if (mode === 'dark') {\n document.documentElement.classList.add('dark');\n localStorage.setItem(colorSchemeKey, 'dark');\n window.matchMedia('(prefers-color-scheme: dark)').removeEventListener('change', colorSchemeChange);\n onColorSchemeChange('dark');\n } else if (mode === 'light') {\n document.documentElement.classList.remove('dark');\n localStorage.setItem(colorSchemeKey, 'light');\n window.matchMedia('(prefers-color-scheme: dark)').removeEventListener('change', colorSchemeChange);\n onColorSchemeChange('light');\n } else {\n if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {\n document.documentElement.classList.add('dark');\n onColorSchemeChange('dark');\n } else {\n document.documentElement.classList.remove('dark');\n onColorSchemeChange('light');\n }\n localStorage.setItem(colorSchemeKey, 'auto');\n window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', colorSchemeChange);\n }\n};\n\nconst getColorScheme = () => {\n const theme = localStorage.getItem(colorSchemeKey);\n if (theme) return theme;\n return 'auto';\n};\n\nconst getSystemColorScheme = () => {\n if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {\n return 'dark';\n }\n return 'light';\n};\n\nconst addColorSchemeListener = (callback) => {\n callbacks.push(callback);\n};\n\nconst removeColorSchemeListener = (callback) => {\n for (let i = 0; i < callbacks.length; i++) {\n if (callbacks[i] === callback) {\n callbacks.splice(i, 1);\n return;\n }\n }\n};\n\ninitColorScheme();\n\nexport { addColorSchemeListener, getColorScheme, getSystemColorScheme, removeColorSchemeListener, setColorScheme };\n", "export default function (Alpine) {\n Alpine.directive('h-focus', (el, { expression }, { effect, evaluateLater }) => {\n const getValue = evaluateLater(expression);\n effect(() => {\n getValue((val) => {\n if (val) el.focus();\n });\n });\n });\n}\n", "export default function (Alpine) {\n Alpine.directive('h-include', (el, { original, modifiers, expression }, { evaluateLater, effect, cleanup, Alpine }) => {\n const getUrl = evaluateLater(expression);\n\n function executeScript(oldScript) {\n return new Promise((resolve, reject) => {\n const newScript = document.createElement('script');\n\n // Copy attributes\n for (const attr of oldScript.attributes) {\n newScript.setAttribute(attr.name, attr.value);\n }\n\n // External script\n if (oldScript.src) {\n newScript.src = oldScript.src;\n\n newScript.onload = resolve;\n newScript.onerror = reject;\n } else {\n // Inline script\n newScript.textContent = oldScript.textContent;\n resolve();\n }\n\n el.appendChild(newScript);\n });\n }\n\n function initTree() {\n for (let i = 0; i < el.children.length; i++) {\n if (el.children[i].tagName !== 'SCRIPT') Alpine.initTree(el.children[i]);\n }\n }\n function destroyTree() {\n if (el.children.length) {\n for (let i = 0; i < el.children.length; i++) {\n if (el.children[i].tagName !== 'SCRIPT') Alpine.initTree(el.children[i]);\n }\n }\n }\n\n function getHtml(url) {\n const parsed = new URL(url, window.location.origin);\n\n if (parsed.origin === window.location.origin) {\n fetch(url)\n .then((response) => {\n if (response.status === 200) return response.text();\n throw response;\n })\n .then(async (content) => {\n if (modifiers.includes('js')) {\n const container = document.createElement('div');\n container.innerHTML = content;\n\n const scripts = [...container.querySelectorAll('script')];\n\n // Remove scripts from the container\n scripts.forEach((script) => script.remove());\n\n // Append HTML first\n while (container.childNodes.length > 0) {\n el.appendChild(container.childNodes[0]);\n }\n\n // Execute scripts sequentially\n for (const oldScript of scripts) {\n await executeScript(oldScript);\n }\n } else {\n el.innerHTML = content;\n }\n // Initialize the new elements with Alpine\n initTree();\n })\n .catch((response) => {\n console.error(response);\n });\n } else {\n throw new Error(`${original}: external requests not allowed`);\n }\n }\n\n effect(() => {\n getUrl((url) => {\n destroyTree();\n el.innerHTML = '';\n if (url) getHtml(url);\n });\n });\n\n cleanup(() => {\n destroyTree();\n });\n }).before('bind');\n}\n", "/**\n * This directive was originally inspired by Ben Nadel\u2019s awesome \u201Ctemplate-outlet\u201D directive and has since evolved independently.\n * See https://www.bennadel.com/\n */\n\nexport default function (Alpine) {\n Alpine.directive('h-template', (el, { original, expression }, { evaluate, Alpine, cleanup }) => {\n if (el.hasAttribute(Alpine.prefixed('data'))) {\n const template = evaluate(expression);\n const clone = template.content.cloneNode(true).firstElementChild;\n Alpine.addScopeToNode(clone, Alpine.closestDataStack(el)[0], el.parentElement);\n Alpine.mutateDom(() => {\n el.before(clone);\n Alpine.initTree(clone);\n });\n cleanup(() => {\n Alpine.destroyTree(clone);\n clone.remove();\n });\n } else {\n console.error(`${original}: ${Alpine.prefixed('data')} directive is missing`);\n }\n });\n}\n", "import accordion from './components/accordion';\nimport alert from './components/alert';\nimport avatar from './components/avatar';\nimport badge from './components/badge';\nimport button from './components/button';\nimport calendar from './components/calendar';\nimport card from './components/card';\nimport checkbox from './components/checkbox';\nimport chip from './components/chip';\nimport datepicker from './components/datepicker';\nimport dialog from './components/dialog';\nimport expansionPanel from './components/expansion-panel';\nimport fieldset from './components/fieldset';\nimport icon from './components/icon';\nimport infoPage from './components/info-page';\nimport input from './components/input';\nimport label from './components/label';\nimport list from './components/list';\nimport menu from './components/menu';\nimport notifications from './components/notifications';\nimport pagination from './components/pagination';\nimport popover from './components/popover';\nimport progress from './components/progress';\nimport radio from './components/radio';\nimport range from './components/range';\nimport select from './components/select';\nimport separator from './components/separator';\nimport sheet from './components/sheet';\nimport sidebar from './components/sidebar';\nimport skeleton from './components/skeleton';\nimport spinner from './components/spinner';\nimport split from './components/split';\nimport _switch from './components/switch';\nimport table from './components/table';\nimport tabs from './components/tabs';\nimport tag from './components/tag';\nimport text from './components/text';\nimport textarea from './components/textarea';\nimport tile from './components/tile';\nimport timepicker from './components/timepicker';\nimport toolbar from './components/toolbar';\nimport tooltip from './components/tooltip';\nimport tree from './components/tree';\n\nexport { version } from '../package.json';\nexport { getBreakpointListener } from './utils/breakpoint-listener';\nexport { addColorSchemeListener, getColorScheme, getSystemColorScheme, removeColorSchemeListener, setColorScheme } from './utils/theme';\n\nimport focus from './utils/focus';\nimport include from './utils/include';\nimport template from './utils/template';\n\nexport {\n accordion as Accordion,\n alert as Alert,\n avatar as Avatar,\n badge as Badge,\n button as Button,\n calendar as Calendar,\n card as Card,\n checkbox as Checkbox,\n chip as Chip,\n datepicker as DatePicker,\n dialog as Dialog,\n expansionPanel as ExpansionPanel,\n fieldset as Fieldset,\n focus as Focus,\n icon as Icon,\n include as Include,\n infoPage as InfoPage,\n input as Input,\n label as Label,\n list as List,\n menu as Menu,\n notifications as Notifications,\n pagination as Pagination,\n popover as Popover,\n progress as Progress,\n radio as Radio,\n range as Range,\n select as Select,\n separator as Separator,\n sheet as Sheet,\n sidebar as Sidebar,\n skeleton as Skeleton,\n spinner as Spinner,\n split as Split,\n _switch as Switch,\n table as Table,\n tabs as Tabs,\n tag as Tag,\n template as Template,\n text as Text,\n textarea as Textarea,\n tile as Tile,\n timepicker as TimePicker,\n toolbar as Toolbar,\n tooltip as Tooltip,\n tree as Tree,\n};\n\nexport const registerComponents = (registerPlugin) => {\n registerPlugin(accordion);\n registerPlugin(alert);\n registerPlugin(avatar);\n registerPlugin(badge);\n registerPlugin(button);\n registerPlugin(calendar);\n registerPlugin(card);\n registerPlugin(checkbox);\n registerPlugin(datepicker);\n registerPlugin(dialog);\n registerPlugin(expansionPanel);\n registerPlugin(fieldset);\n registerPlugin(focus);\n registerPlugin(icon);\n registerPlugin(include);\n registerPlugin(infoPage);\n registerPlugin(input);\n registerPlugin(label);\n registerPlugin(list);\n registerPlugin(menu);\n registerPlugin(notifications);\n registerPlugin(pagination);\n registerPlugin(popover);\n registerPlugin(progress);\n registerPlugin(radio);\n registerPlugin(range);\n registerPlugin(select);\n registerPlugin(separator);\n registerPlugin(sheet);\n registerPlugin(sidebar);\n registerPlugin(skeleton);\n registerPlugin(spinner);\n registerPlugin(split);\n registerPlugin(_switch);\n registerPlugin(table);\n registerPlugin(tabs);\n registerPlugin(tag);\n registerPlugin(template);\n registerPlugin(text);\n registerPlugin(textarea);\n registerPlugin(tile);\n registerPlugin(timepicker);\n registerPlugin(toolbar);\n registerPlugin(tooltip);\n registerPlugin(tree);\n};\n\nexport default registerComponents;\n"],
|
|
5
|
+
"mappings": "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A,gBACA,mCACA,yBACA,2BACA,iCACA,+CACA,6CACA,uCACF,EACA,YAAa,CACX,iBACA,8BACA,8BACA,gBACA,uCACA,6BACA,+BACA,qCACA,mDACA,iDACA,2CACF,EACA,QAAS,CACP,SACA,gBACA,kBACA,kBACA,qBACA,kCACA,kCACA,6BACA,mCACA,mCACA,mCACA,yCACA,yCACA,iDACA,uDACA,uDACA,+CACA,sDACA,sDACA,0CACA,gDACA,+CACF,EACA,YAAa,CACX,iBACA,kBACA,kBACA,cACA,qBACA,kCACA,kCACA,6BACA,mCACA,mCACA,mCACA,yCACA,yCACA,iDACA,uDACA,uDACA,+CACA,sDACA,sDACA,0CACA,gDACA,+CACF,EACA,KAAM,CAAC,eAAgB,qBAAsB,iBAAiB,CAChE,EAEaC,GAAoBC,GAAO,CACtCA,EAAG,UAAU,IACX,iBACA,cACA,eACA,iBACA,QACA,oBACA,kBACA,UACA,cACA,iBACA,eACA,gCACA,+BACA,sBACA,8BACA,uCACA,WACA,mBACA,kBACA,oDACA,wBACA,gCACA,qCACA,+BACA,4BACA,iCACA,0BACF,CACF,EAEaC,GAAgB,CAACC,EAAMC,EAAU,KAAU,CACtD,OAAQD,EAAM,CACZ,IAAK,KACH,OAAOC,EACH,CAAC,MAAO,gDAAiD,QAAS,OAAQ,yCAA0C,kBAAmB,iCAAiC,EACxK,CAAC,QAAS,UAAW,SAAU,kBAAmB,iCAAiC,EACzF,IAAK,KACH,OAAOA,EAAU,CAAC,MAAO,SAAU,UAAW,oBAAqB,mCAAmC,EAAI,CAAC,MAAO,UAAW,OAAQ,oBAAqB,mCAAmC,EAC/L,IAAK,UACH,OAAOA,EAAU,CAAC,SAAU,mDAAoD,MAAO,iBAAkB,gCAAgC,EAAI,CAAC,UAAU,EAC1J,IAAK,UACH,OAAOA,EAAU,CAAC,SAAU,MAAO,gBAAgB,EAAI,CAAC,QAAQ,EAClE,IAAK,OACH,MAAO,CAAC,QAAQ,EAClB,QACE,MAAO,CAAC,MAAO,OAAQ,OAAQ,kBAAmB,iCAAiC,CACvF,CACF,EAEe,SAARC,GAAkBC,EAAQ,CAC/BA,EAAO,UA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",
|
|
6
6
|
"names": ["require_nouislider", "__commonJSMin", "exports", "module", "global", "factory", "PipsMode", "PipsType", "isValidFormatter", "entry", "isValidPartialFormatter", "removeElement", "el", "isSet", "value", "preventDefault", "e", "unique", "array", "a", "closest", "to", "offset", "elem", "orientation", "rect", "doc", "docElem", "pageOffset", "getPageOffset", "isNumeric", "addClassFor", "element", "className", "duration", "addClass", "removeClass", "limit", "asArray", "countDecimals", "numStr", "pieces", "hasClass", "supportPageOffset", "isCSS1Compat", "x", "y", "getActions", "getSupportsPassive", "supportsPassive", "opts", "getSupportsTouchActionNone", "subRangeRatio", "pa", "pb", "fromPercentage", "range", "startRange", "toPercentage", "isPercentage", "getJ", "arr", "j", "toStepping", "xVal", "xPct", "va", "vb", "fromStepping", "getStep", "xSteps", "snap", "b", "Spectrum", "singleStep", "index", "ordered", "distances", "direction", "xPct_index", "start_factor", "rest_factor", "rest_rel_distance", "range_pct", "rel_range_distance", "abs_distance_counter", "range_counter", "isDown", "size", "stepDecimals", "percentage", "value1", "i", "n", "totalSteps", "highestStep", "step", "defaultFormatter", "cssClasses", "INTERNAL_EVENT_NS", "testStep", "parsed", "testKeyboardPageMultiplier", "testKeyboardMultiplier", "testKeyboardDefaultStep", "testRange", "testStart", "testSnap", "testAnimate", "testAnimationDuration", "testConnect", "connect", "testOrientation", "testMargin", "testLimit", "testPadding", "totalPadding", "firstValue", "lastValue", "testDirection", "testBehaviour", "tap", "drag", "fixed", "hover", "unconstrained", "invertConnects", "dragAll", "smoothSteps", "testTooltips", "formatter", "testHandleAttributes", "testAriaFormat", "testFormat", "testKeyboardSupport", "testDocumentElement", "testCssPrefix", "testCssClasses", "key", "testOptions", "options", "tests", "defaults", "name", "d", "msPrefix", "noPrefix", "styles", "scope", "target", "originalOptions", "actions", "supportsTouchActionNone", "scope_Target", "scope_Base", "scope_ConnectBase", "scope_Handles", "scope_Connects", "scope_Pips", "scope_Tooltips", "scope_Spectrum", "scope_Values", "scope_Locations", "scope_HandleNumbers", "scope_ActiveHandlesCount", "scope_Events", "scope_ConnectsInverted", "scope_Document", "scope_DocumentElement", "scope_Body", "scope_DirOffset", "addNodeTo", "addTarget", "div", "addOrigin", "base", "handleNumber", "origin", "handle", "event", "eventKeydown", "attributes_1", "attribute", "addConnect", "add", "addElements", "connectOptions", "addSlider", "textDirection", "addTooltip", "isSliderDisabled", "isHandleDisabled", "handleOrigin", "disable", "enable", "removeTooltips", "removeEvent", "tooltip", "tooltips", "bindEvent", "values", "unencoded", "formattedValue", "aria", "positions", "min", "checkHandlePosition", "max", "now", "text", "getGroup", "pips", "interval", "spread", "mapToRange", "stepped", "generateSpread", "safeIncrement", "increment", "group", "indexes", "firstInRange", "lastInRange", "ignoreFirst", "ignoreLast", "prevPct", "current", "q", "low", "high", "newPct", "pctDifference", "pctPos", "type", "steps", "realSteps", "stepSize", "isSteps", "addMarking", "filterFunc", "_a", "_b", "valueSizeClasses", "markerSizeClasses", "valueOrientationClasses", "markerOrientationClasses", "getClasses", "source", "orientationClasses", "sizeClasses", "addSpread", "node", "removePips", "filter", "format", "baseSize", "alt", "attachEvent", "events", "callback", "data", "method", "fixEvent", "methods", "eventName", "eventTarget", "touch", "mouse", "pointer", "isTouchOnTarget", "checkTouch", "targetTouches", "targetTouch", "calcPointToPercentage", "calcPoint", "location", "proposal", "getClosestHandle", "clickedPosition", "smallestDifference", "handlePosition", "differenceWithThisHandle", "clickAtEdge", "isCloser", "isCloserAfter", "documentLeave", "eventEnd", "eventMove", "movement", "moveHandles", "c", "setZindex", "setHandle", "fireEvent", "eventStart", "listeners", "moveEvent", "endEvent", "outEvent", "eventTap", "eventHover", "targetEvent", "scope_Self", "horizontalKeys", "verticalKeys", "largeStepKeys", "edgeKeys", "isLargeDown", "isLargeUp", "isUp", "isMin", "isMax", "getNextStepsForHandle", "bindSliderEvents", "behaviour", "handleBefore", "handleAfter", "eventHolders", "handlesToDrag", "handleNumbersToDrag", "eventHolder", "namespacedEvent", "isInternalNamespace", "namespace", "bind", "tEvent", "tNamespace", "eventType", "reference", "lookBackward", "lookForward", "getValue", "distance", "inRuleOrder", "v", "o", "upward", "locations", "handleNumbers", "proposals", "firstHandle", "f", "state", "transformDirection", "updateHandlePosition", "translation", "translateRule", "handlesAreInOrder", "position", "updateConnect", "dir", "zIndex", "exactInput", "l", "h", "connectWidth", "scaleRule", "resolveToValue", "valueSet", "input", "fireSetEvent", "isInit", "space_1", "valueReset", "valueSetHandle", "valueGet", "destroy", "nearbySteps", "decrement", "getNextSteps", "updateOptions", "optionsToUpdate", "updateAble", "newOptions", "updateConnectOption", "setupSlider", "initialize", "api", "nouislider", "uuidv4", "_p8", "s", "p", "uuid_default", "setCalendarContent", "svg", "path", "setCheckContent", "setChevronDownContent", "setChevronLeftContent", "setChevronRightContent", "setChevronsLeftContent", "setChevronsRightContent", "setClockContent", "path1", "path2", "setSearchContent", "setEllipsisContent", "circle1", "circle2", "circle3", "setMinusContent", "setPlusContent", "setCloseContent", "setBellContent", "setTrashContent", "path3", "setMailContent", "setSendContent", "setExportContent", "setImportContent", "setEditContent", "setMenuContent", "setReplyContent", "setRefreshContent", "circlePath", "setCircleInfoContent", "setCircleWarningContent", "setCircleErrorContent", "setCircleSuccessContent", "setCircleUnknownContent", "setCircleUserContent", "createSvg", "icon", "classes", "attrs", "key", "value", "setSvgContent", "accordion_default", "Alpine", "el", "expression", "modifiers", "original", "accordion", "parent", "itemId", "uuid_default", "getIsExpanded", "effect", "evaluateLater", "cleanup", "accordionItem", "getLabel", "chevronDown", "createSvg", "button", "label", "setAttributes", "handler", "_", "onTransitionEnd", "event", "alert_default", "Alpine", "el", "modifiers", "cleanup", "variants", "setVariant", "variant", "_", "value", "observer", "classListStartsWith", "classList", "term", "i", "avatar_default", "Alpine", "el", "_", "classListStartsWith", "original", "cleanup", "avatar", "parent", "interval", "fallback", "active", "completeCheck", "observer", "effect", "badge_default", "Alpine", "el", "_", "cleanup", "variants", "setVariant", "variant", "value", "observer", "buttonVariants", "setButtonClasses", "el", "getButtonSize", "size", "isAddon", "button_default", "Alpine", "original", "modifiers", "cleanup", "lastSize", "setVariant", "variant", "_", "value", "setSize", "observer", "mutations", "mutation", "variants", "min", "max", "round", "floor", "createCoords", "v", "oppositeSideMap", "clamp", "start", "value", "end", "evaluate", "param", "getSide", "placement", "getAlignment", "getOppositeAxis", "axis", "getAxisLength", "getSideAxis", "firstChar", "getAlignmentAxis", "getAlignmentSides", "rects", "rtl", "alignment", "alignmentAxis", "length", "mainAlignmentSide", "getOppositePlacement", "getExpandedPlacements", "oppositePlacement", "getOppositeAlignmentPlacement", "lrPlacement", "rlPlacement", "tbPlacement", "btPlacement", "getSideList", "side", "isStart", "getOppositeAxisPlacements", "flipAlignment", "direction", "list", "expandPaddingObject", "padding", "getPaddingObject", "rectToClientRect", "rect", "x", "y", "width", "height", "computeCoordsFromPlacement", "_ref", "placement", "rtl", "reference", "floating", "sideAxis", "getSideAxis", "alignmentAxis", "getAlignmentAxis", "alignLength", "getAxisLength", "side", "getSide", "isVertical", "commonX", "commonY", "commonAlign", "coords", "getAlignment", "detectOverflow", "state", "options", "_await$platform$isEle", "x", "y", "platform", "rects", "elements", "strategy", "boundary", "rootBoundary", "elementContext", "altBoundary", "padding", "evaluate", "paddingObject", "getPaddingObject", "element", "clippingClientRect", "rectToClientRect", "rect", "offsetParent", "offsetScale", "elementClientRect", "MAX_RESET_COUNT", "computePosition", "config", "middleware", "platformWithDetectOverflow", "statefulPlacement", "resetCount", "middlewareData", "i", "currentMiddleware", "name", "fn", "nextX", "nextY", "data", "reset", "arrow", "axis", "length", "arrowDimensions", "isYAxis", "minProp", "maxProp", "clientProp", "endDiff", "startDiff", "arrowOffsetParent", "clientSize", "centerToReference", "largestPossiblePadding", "minPadding", "min", "maxPadding", "min$1", "max", "center", "offset", "clamp", "shouldAddOffset", "alignmentOffset", "flip", "options", "state", "_middlewareData$arrow", "_middlewareData$flip", "placement", "middlewareData", "rects", "initialPlacement", "platform", "elements", "checkMainAxis", "checkCrossAxis", "specifiedFallbackPlacements", "fallbackStrategy", "fallbackAxisSideDirection", "flipAlignment", "detectOverflowOptions", "evaluate", "side", "getSide", "initialSideAxis", "getSideAxis", "isBasePlacement", "rtl", "fallbackPlacements", "getOppositePlacement", "getExpandedPlacements", "hasFallbackAxisSideDirection", "getOppositeAxisPlacements", "placements", "overflow", "overflows", "overflowsData", "sides", "getAlignmentSides", "_middlewareData$flip2", "_overflowsData$filter", "nextIndex", "nextPlacement", "d", "resetPlacement", "a", "b", "_overflowsData$filter2", "currentSideAxis", "acc", "originSides", "convertValueToCoords", "state", "options", "placement", "platform", "elements", "rtl", "side", "getSide", "alignment", "getAlignment", "isVertical", "getSideAxis", "mainAxisMulti", "crossAxisMulti", "rawValue", "evaluate", "mainAxis", "crossAxis", "alignmentAxis", "offset", "_middlewareData$offse", "_middlewareData$arrow", "x", "y", "middlewareData", "diffCoords", "shift", "checkMainAxis", "checkCrossAxis", "limiter", "_ref", "detectOverflowOptions", "coords", "overflow", "getOppositeAxis", "mainAxisCoord", "crossAxisCoord", "minSide", "maxSide", "min", "max", "clamp", "limitedCoords", "size", "options", "state", "_state$middlewareData", "_state$middlewareData2", "placement", "rects", "platform", "elements", "apply", "detectOverflowOptions", "evaluate", "overflow", "side", "getSide", "alignment", "getAlignment", "isYAxis", "getSideAxis", "width", "height", "heightSide", "widthSide", "maximumClippingHeight", "maximumClippingWidth", "overflowAvailableHeight", "min", "overflowAvailableWidth", "noShift", "availableHeight", "availableWidth", "xMin", "max", "xMax", "yMin", "yMax", "nextDimensions", "hasWindow", "getNodeName", "node", "isNode", "getWindow", "_node$ownerDocument", "getDocumentElement", "_ref", "value", "isElement", "isHTMLElement", "isShadowRoot", "isOverflowElement", "element", "overflow", "overflowX", "overflowY", "display", "getComputedStyle", "isTableElement", "isTopLayer", "willChangeRe", "containRe", "isNotNone", "isWebKitValue", "isContainingBlock", "elementOrCss", "css", "isWebKit", "getContainingBlock", "currentNode", "getParentNode", "isLastTraversableNode", "getNodeScroll", "result", "getNearestOverflowAncestor", "parentNode", "getOverflowAncestors", "list", "traverseIframes", "_node$ownerDocument2", "scrollableAncestor", "isBody", "win", "frameElement", "getFrameElement", "getCssDimensions", "element", "css", "getComputedStyle", "width", "height", "hasOffset", "isHTMLElement", "offsetWidth", "offsetHeight", "shouldFallback", "round", "unwrapElement", "isElement", "getScale", "domElement", "createCoords", "rect", "$", "x", "y", "noOffsets", "getVisualOffsets", "win", "getWindow", "isWebKit", "shouldAddVisualOffsets", "isFixed", "floatingOffsetParent", "getBoundingClientRect", "includeScale", "isFixedStrategy", "offsetParent", "clientRect", "scale", "visualOffsets", "offsetWin", "currentWin", "currentIFrame", "getFrameElement", "iframeScale", "iframeRect", "left", "top", "rectToClientRect", "getWindowScrollBarX", "leftScroll", "getNodeScroll", "getDocumentElement", "getHTMLOffset", "documentElement", "scroll", "htmlRect", "convertOffsetParentRelativeRectToViewportRelativeRect", "_ref", "elements", "strategy", "topLayer", "isTopLayer", "offsets", "isOffsetParentAnElement", "getNodeName", "isOverflowElement", "offsetRect", "htmlOffset", "getClientRects", "getDocumentRect", "html", "body", "max", "SCROLLBAR_MAX", "getViewportRect", "visualViewport", "visualViewportBased", "windowScrollbarX", "doc", "bodyStyles", "bodyMarginInline", "clippingStableScrollbarWidth", "getInnerBoundingClientRect", "getClientRectFromClippingAncestor", "clippingAncestor", "hasFixedPositionAncestor", "stopNode", "parentNode", "getParentNode", "isLastTraversableNode", "getClippingElementAncestors", "cache", "cachedResult", "result", "getOverflowAncestors", "el", "currentContainingBlockComputedStyle", "elementIsFixed", "currentNode", "computedStyle", "currentNodeIsContaining", "isContainingBlock", "ancestor", "getClippingRect", "boundary", "rootBoundary", "clippingAncestors", "firstRect", "right", "bottom", "i", "min", "getDimensions", "getRectRelativeToOffsetParent", "setLeftRTLScrollbarOffset", "isStaticPositioned", "getTrueOffsetParent", "polyfill", "rawOffsetParent", "getOffsetParent", "svgOffsetParent", "isTableElement", "getContainingBlock", "getElementRects", "data", "getOffsetParentFn", "getDimensionsFn", "floatingDimensions", "isRTL", "platform", "rectsAreEqual", "a", "b", "observeMove", "onMove", "io", "timeoutId", "root", "cleanup", "_io", "refresh", "skip", "threshold", "elementRectForRootMargin", "insetTop", "floor", "insetRight", "insetBottom", "insetLeft", "options", "isFirstUpdate", "handleObserve", "entries", "ratio", "autoUpdate", "reference", "floating", "update", "ancestorScroll", "ancestorResize", "elementResize", "layoutShift", "animationFrame", "referenceEl", "ancestors", "cleanupIo", "reobserveFrame", "resizeObserver", "firstEntry", "_resizeObserver", "frameId", "prevRefRect", "frameLoop", "nextRefRect", "_resizeObserver2", "offset", "shift", "flip", "size", "arrow", "computePosition", "reference", "floating", "options", "cache", "mergedOptions", "platform", "platformWithCache", "calendar_default", "Alpine", "el", "original", "expression", "effect", "evaluateLater", "cleanup", "datepicker", "parent", "date", "selected", "focusedDay", "locale", "formatter", "modelAsIso", "firstDay", "minDate", "maxDate", "modelChange", "triggerInput", "onInputChange", "newValue", "render", "setFromModel", "checkForModel", "dayClick", "event", "isDisabled", "d", "sameDay", "dateA", "dateB", "weekdayFormat", "getWeekdayNames", "_", "i", "weekday", "fullWeekdayFormat", "getFullWeekdayNames", "weekdayNames", "fullWeekdayNames", "header", "buttonClasses", "previousYearBtn", "createSvg", "previousMonthBtn", "headerLabel", "uuid_default", "nextMonthBtn", "nextYearBtn", "datesTable", "thead", "theadRow", "tbody", "setWeekdayHeaders", "th", "dayCells", "r", "row", "cell", "fromNav", "year", "month", "start", "days", "prevEndDay", "lastPrevMonthDay", "startDay", "cellIndex", "updateDateCell", "dayNum", "curr", "focusable", "lastDayNum", "focusDay", "onKeyDown", "newDay", "getConfig", "config", "autoUpdateCleanup", "updatePosition", "computePosition", "offset", "flip", "shift", "x", "y", "autoUpdate", "onTransitionEnd", "modelExpression", "evaluateModel", "value", "card_default", "Alpine", "el", "checkbox_default", "Alpine", "el", "check", "createSvg", "chip_default", "Alpine", "el", "original", "cleanup", "variants", "setVariant", "variant", "_", "value", "observer", "effect", "chip", "parent", "createSvg", "stopPropagation", "event", "setSize", "el", "size", "sizeObserver", "observer", "datepicker_default", "Alpine", "el", "original", "modifiers", "cleanup", "state", "uuid_default", "id", "observer", "sizeObserver", "effect", "datepicker", "parent", "createSvg", "close", "handler", "dialog_default", "Alpine", "el", "_", "cleanup", "observer", "inputs", "i", "textareas", "buttons", "onTransitionEnd", "event", "dialog", "parent", "id", "uuid_default", "expansion_panel_default", "Alpine", "el", "expression", "evaluate", "evaluateLater", "effect", "itemId", "uuid_default", "setExpanded", "expanded", "getIsExpanded", "original", "cleanup", "expPanelItem", "parent", "getLabel", "chevronDown", "createSvg", "button", "label", "setAttributes", "handler", "fieldset_default", "Alpine", "el", "modifiers", "icon_default", "Alpine", "el", "original", "modifiers", "response", "content", "svg", "a", "setSvgContent", "info_page_default", "Alpine", "el", "modifiers", "input_default", "Alpine", "el", "modifiers", "cleanup", "observer", "sizeObserver", "_", "variants", "setVariant", "variant", "handler", "event", "input", "original", "uuid_default", "stepDown", "createSvg", "onStepDown", "stepUp", "onStepUp", "label_default", "Alpine", "el", "modifiers", "list_default", "Alpine", "el", "_", "cleanup", "focusFirstOption", "elem", "firstOption", "focusLastOption", "itemList", "selectOption", "option", "selected", "onKeyDown", "event", "prevElem", "nextElem", "onClick", "original", "list", "parent", "id", "uuid_default", "modifiers", "listbox", "setInteractive", "menu_default", "Alpine", "el", "modifiers", "open", "uuid_default", "original", "cleanup", "isSubmenu", "menuTrigger", "sibling", "setAriaAttrubutes", "parent", "menuSubItem", "listenForTrigger", "listen", "openDropdown", "onContextmenu", "close", "closeParent", "focusTrigger", "onClick", "onKeyDown", "isPrintableCharacter", "str", "getFirstChar", "text", "clean", "findMatching", "items", "i", "event", "menuitem", "menuitems", "getPlacement", "computePosition", "offset", "flip", "shift", "size", "availableWidth", "availableHeight", "elements", "x", "y", "onTransitionEnd", "menu", "focusOut", "focusIn", "chevronRight", "createSvg", "parentMenu", "keyEvents", "submenuitem", "check", "setState", "checked", "dispatch", "onActivate", "expression", "effect", "evaluateLater", "getValue", "value", "val", "getBreakpointListener", "handler", "breakpoint", "frame", "bps", "mql", "onWidthChange", "event", "notifications_default", "Alpine", "id", "uuid_default", "template", "position", "timeout", "data", "item", "listener", "index", "key", "value", "n", "el", "original", "cleanup", "notificationTemplates", "commonListClasses", "commonTopClasses", "commonBottomClasses", "olTopLeft", "olTopCenter", "olTopRight", "olBottomLeft", "olBottomCenter", "olBottomRight", "isLarge", "isExtraLarge", "lgBreakpointListener", "getBreakpointListener", "matches", "xlBreakpointListener", "clone", "element", "modifiers", "classListStartsWith", "nId", "close", "parent", "pagination_default", "Alpine", "el", "modifiers", "expression", "effect", "evaluateLater", "getActive", "active", "createSvg", "popover_default", "Alpine", "el", "expression", "modifiers", "effect", "evaluate", "evaluateLater", "cleanup", "uuid_default", "getExpanded", "expanded", "setAttributes", "close", "handler", "original", "popover", "sibling", "noScroll", "stopPropagation", "event", "autoUpdateCleanup", "updatePosition", "computePosition", "offset", "flip", "shift", "size", "availableWidth", "availableHeight", "elements", "x", "y", "autoUpdate", "onTransitionEnd", "progress_default", "Alpine", "el", "expression", "effect", "evaluateLater", "indicator", "getProgress", "progress", "radio_default", "Alpine", "el", "import_nouislider", "range_default", "Alpine", "el", "expression", "evaluate", "cleanup", "values", "FilterType", "select_default", "Alpine", "el", "modifiers", "cleanup", "uuid_default", "observer", "sizeObserver", "original", "effect", "select", "parent", "label", "field", "value", "vIndex", "newArr", "arr", "fakeTrigger", "displayValue", "labelObserver", "getPlaceholder", "close", "focusSelect", "onKeyDown", "options", "content", "event", "nextIndex", "o", "prevIndex", "onClick", "onPress", "chevronDown", "createSvg", "onInputChange", "i", "autoUpdateCleanup", "updatePosition", "computePosition", "offset", "flip", "shift", "size", "availableWidth", "availableHeight", "elements", "x", "y", "autoUpdate", "onTransitionEnd", "searchIcon", "searchInput", "onActivate", "onInput", "_", "selectGroup", "id", "expression", "evaluateLater", "indicatorEl", "labelEl", "check", "getValue", "getLabel", "terms", "term", "setSelectedState", "selected", "onModelChange", "val", "lIndex", "separator_default", "Alpine", "el", "sheet_default", "Alpine", "el", "expression", "effect", "evaluate", "evaluateLater", "cleanup", "getIsOpen", "isOpen", "onTransitionEnd", "event", "onClick", "original", "overlay", "parent", "lastSide", "getTranslateClass", "side", "getSideClasses", "setSide", "observer", "sidebar_default", "Alpine", "el", "modifiers", "cleanup", "setFloating", "observer", "expression", "effect", "evaluate", "evaluateLater", "getCollapsed", "collapsed", "original", "group", "parent", "uuid_default", "handler", "createSvg", "menuItem", "sizes", "setSize", "size", "skeleton", "icon", "skeleton_default", "Alpine", "el", "modifiers", "spinner_default", "Alpine", "el", "split_default", "Alpine", "el", "_", "cleanup", "panels", "state", "storageKey", "loadSizes", "raw", "saveTimer", "SAVE_DELAY", "saveSizes", "sizes", "p", "usableSize", "sizeProp", "containerSize", "gutterSize", "panel", "visiblePanels", "gutters", "normalize", "value", "initialized", "DELTA_ABS", "layout", "visible", "total", "stored", "i", "explicitTotal", "sum", "autoPanels", "remaining", "share", "currentTotal", "delta", "flexible", "consumed", "nextFlexible", "proposed", "clamped", "actualChange", "layoutFrame", "queueLayout", "refreshGutters", "lastPanelIndex", "observer", "mutations", "mutation", "containerObserver", "original", "effect", "split", "parent", "gutterless", "gutter", "borderClasses", "handleClasses", "setVariant", "initialSize", "handleSize", "last", "index", "next", "beforeStyle", "locked", "panelLocked", "drag", "e", "startPos", "startA", "startB", "minDelta", "maxDelta", "move", "up", "collapse", "expand", "target", "available", "take", "switch_default", "Alpine", "el", "table_default", "Alpine", "el", "modifiers", "tabs_default", "Alpine", "el", "original", "modifiers", "setButtonClasses", "buttonVariants", "tag_default", "Alpine", "el", "text_default", "Alpine", "el", "modifiers", "textarea_default", "Alpine", "el", "modifiers", "tile_default", "Alpine", "el", "dayPeriodLabels", "getSelectedTime", "rawTime", "convertTo12", "hour", "minute", "second", "period", "timeParts", "scrollIntoCenter", "container", "element", "behavior", "containerRect", "offset", "timepicker_default", "Alpine", "el", "expression", "modifiers", "evaluateLater", "cleanup", "effect", "uuid_default", "focus", "createSvg", "getConfig", "config", "handler", "event", "observer", "sizeObserver", "original", "timepicker", "parent", "newValue", "placeholder", "preventInput", "_", "optionClasses", "updateModel", "getCurrentTime", "date", "onKeyDown", "list", "inHoursList", "hoursList", "minutesList", "secondsList", "periodList", "prevElem", "nextElem", "firstChild", "lastElem", "nextColumn", "prevColumn", "selectedHour", "setTime", "render", "timeContainer", "h", "m", "s", "am", "pm", "footer", "nowButton", "okButton", "selectedMinute", "selectedSecond", "selectedPeriod", "p", "onClick", "autoUpdateCleanup", "focusFirstItem", "updatePosition", "computePosition", "flip", "shift", "y", "autoUpdate", "onTransitionEnd", "toolbar_default", "Alpine", "el", "modifiers", "tooltip_default", "Alpine", "el", "_", "cleanup", "uuid_default", "handler", "event", "original", "effect", "tooltip", "sibling", "arrowEl", "updatePosition", "computePosition", "offset", "flip", "shift", "arrow", "x", "y", "middlewareData", "placement", "onTransitionEnd", "tree_default", "Alpine", "el", "modifiers", "effect", "cleanup", "treeItem", "parent", "getVisibleItems", "tree", "item", "parentItem", "focusItem", "i", "onKeyDown", "event", "items", "current", "index", "firstChild", "expression", "evaluate", "evaluateLater", "treeRoot", "onClick", "setExpanded", "expanded", "getExpanded", "original", "chevronDown", "createSvg", "version", "colorSchemeKey", "savedScheme", "callbacks", "onColorSchemeChange", "scheme", "i", "colorSchemeChange", "event", "initColorScheme", "setColorScheme", "mode", "getColorScheme", "theme", "getSystemColorScheme", "addColorSchemeListener", "callback", "removeColorSchemeListener", "focus_default", "Alpine", "el", "expression", "effect", "evaluateLater", "getValue", "val", "include_default", "Alpine", "el", "original", "modifiers", "expression", "evaluateLater", "effect", "cleanup", "getUrl", "executeScript", "oldScript", "resolve", "reject", "newScript", "attr", "initTree", "i", "destroyTree", "getHtml", "url", "response", "content", "container", "scripts", "script", "template_default", "Alpine", "el", "original", "expression", "evaluate", "cleanup", "clone", "registerComponents", "registerPlugin", "accordion_default", "alert_default", "avatar_default", "badge_default", "button_default", "calendar_default", "card_default", "checkbox_default", "datepicker_default", "dialog_default", "expansion_panel_default", "fieldset_default", "focus_default", "icon_default", "include_default", "info_page_default", "input_default", "label_default", "list_default", "menu_default", "notifications_default", "pagination_default", "popover_default", "progress_default", "radio_default", "range_default", "select_default", "separator_default", "sheet_default", "sidebar_default", "skeleton_default", "spinner_default", "split_default", "switch_default", "table_default", "tabs_default", "tag_default", "template_default", "text_default", "textarea_default", "tile_default", "timepicker_default", "toolbar_default", "tooltip_default", "tree_default", "module_default"]
|
|
7
7
|
}
|