{
  "version": 3,
  "sources": ["../../../node_modules/.pnpm/prismjs@1.30.0/node_modules/prismjs/prism.js", "../../../node_modules/.pnpm/@zag-js+anatomy@1.32.0/node_modules/@zag-js/anatomy/dist/index.mjs", "../../../node_modules/.pnpm/@zag-js+dom-query@1.32.0/node_modules/@zag-js/dom-query/dist/index.mjs", "../../../node_modules/.pnpm/@zag-js+utils@1.32.0/node_modules/@zag-js/utils/dist/index.mjs", "../../../node_modules/.pnpm/@zag-js+core@1.32.0/node_modules/@zag-js/core/dist/index.mjs", "../../../node_modules/.pnpm/@zag-js+types@1.32.0/node_modules/@zag-js/types/dist/index.mjs", "../../../node_modules/.pnpm/@zag-js+accordion@1.32.0/node_modules/@zag-js/accordion/dist/index.mjs", "../../../node_modules/.pnpm/proxy-compare@3.0.1/node_modules/proxy-compare/dist/index.js", "../../../node_modules/.pnpm/@zag-js+store@1.32.0/node_modules/@zag-js/store/dist/index.mjs", "../../../node_modules/.pnpm/@zag-js+vanilla@1.32.0/node_modules/@zag-js/vanilla/dist/index.mjs", "../src/lib/component.ts", "../src/lib/util.ts", "../src/components/accordion.ts", "../../../node_modules/.pnpm/@zag-js+rect-utils@1.32.0/node_modules/@zag-js/rect-utils/dist/index.mjs", "../../../node_modules/.pnpm/@zag-js+angle-slider@1.32.0/node_modules/@zag-js/angle-slider/dist/index.mjs", "../src/components/angle-slider.ts", "../../../node_modules/.pnpm/@zag-js+avatar@1.32.0/node_modules/@zag-js/avatar/dist/index.mjs", "../src/components/avatar.ts", "../../../node_modules/.pnpm/@zag-js+scroll-snap@1.32.0/node_modules/@zag-js/scroll-snap/dist/index.mjs", "../../../node_modules/.pnpm/@zag-js+carousel@1.32.0/node_modules/@zag-js/carousel/dist/index.mjs", "../src/components/carousel.ts", "../../../node_modules/.pnpm/@zag-js+focus-visible@1.32.0/node_modules/@zag-js/focus-visible/dist/index.mjs", "../../../node_modules/.pnpm/@zag-js+checkbox@1.32.0/node_modules/@zag-js/checkbox/dist/index.mjs", "../src/components/checkbox.ts", "../../../node_modules/.pnpm/@zag-js+clipboard@1.32.0/node_modules/@zag-js/clipboard/dist/index.mjs", "../src/components/clipboard.ts", "../src/components/code.ts", "../../../node_modules/.pnpm/prismjs@1.30.0/node_modules/prismjs/components/prism-typescript.js", "../../../node_modules/.pnpm/prismjs@1.30.0/node_modules/prismjs/components/prism-bash.js", "../../../node_modules/.pnpm/prismjs@1.30.0/node_modules/prismjs/components/prism-javascript.js", "../../../node_modules/.pnpm/prismjs@1.30.0/node_modules/prismjs/components/prism-shell-session.js", "../../../node_modules/.pnpm/prismjs@1.30.0/node_modules/prismjs/components/prism-markup.js", "../../../node_modules/.pnpm/@zag-js+collapsible@1.32.0/node_modules/@zag-js/collapsible/dist/index.mjs", "../src/components/collapsible.ts", "../../../node_modules/.pnpm/@zag-js+color-utils@1.32.0/node_modules/@zag-js/color-utils/dist/index.mjs", "../../../node_modules/.pnpm/@floating-ui+utils@0.2.10/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs", "../../../node_modules/.pnpm/@floating-ui+core@1.7.3/node_modules/@floating-ui/core/dist/floating-ui.core.mjs", "../../../node_modules/.pnpm/@floating-ui+utils@0.2.10/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs", "../../../node_modules/.pnpm/@floating-ui+dom@1.7.4/node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs", "../../../node_modules/.pnpm/@zag-js+popper@1.32.0/node_modules/@zag-js/popper/dist/index.mjs", "../../../node_modules/.pnpm/@zag-js+interact-outside@1.32.0/node_modules/@zag-js/interact-outside/dist/index.mjs", "../../../node_modules/.pnpm/@zag-js+dismissable@1.32.0/node_modules/@zag-js/dismissable/dist/index.mjs", "../../../node_modules/.pnpm/@zag-js+color-picker@1.32.0/node_modules/@zag-js/color-picker/dist/index.mjs", "../src/components/color-picker.ts", "../../../node_modules/.pnpm/@zag-js+collection@1.32.0/node_modules/@zag-js/collection/dist/index.mjs", "../../../node_modules/.pnpm/@zag-js+combobox@1.32.0/node_modules/@zag-js/combobox/dist/index.mjs", "../../../node_modules/.pnpm/@zag-js+i18n-utils@1.32.0/node_modules/@zag-js/i18n-utils/dist/index.mjs", "../src/components/combobox.ts", "../../../node_modules/.pnpm/@internationalized+date@3.10.0/node_modules/@internationalized/date/dist/packages/@internationalized/date/src/utils.ts", "../../../node_modules/.pnpm/@internationalized+date@3.10.0/node_modules/@internationalized/date/dist/packages/@internationalized/date/src/calendars/GregorianCalendar.ts", "../../../node_modules/.pnpm/@internationalized+date@3.10.0/node_modules/@internationalized/date/dist/packages/@internationalized/date/src/weekStartData.ts", "../../../node_modules/.pnpm/@internationalized+date@3.10.0/node_modules/@internationalized/date/dist/packages/@internationalized/date/src/queries.ts", "../../../node_modules/.pnpm/@internationalized+date@3.10.0/node_modules/@internationalized/date/dist/packages/@internationalized/date/src/conversion.ts", "../../../node_modules/.pnpm/@internationalized+date@3.10.0/node_modules/@internationalized/date/dist/packages/@internationalized/date/src/manipulation.ts", "../../../node_modules/.pnpm/@internationalized+date@3.10.0/node_modules/@internationalized/date/dist/packages/@internationalized/date/src/string.ts", "../../../node_modules/.pnpm/@swc+helpers@0.5.17/node_modules/@swc/helpers/esm/_check_private_redeclaration.js", "../../../node_modules/.pnpm/@swc+helpers@0.5.17/node_modules/@swc/helpers/esm/_class_private_field_init.js", "../../../node_modules/.pnpm/@internationalized+date@3.10.0/node_modules/@internationalized/date/dist/packages/@internationalized/date/src/CalendarDate.ts", "../../../node_modules/.pnpm/@internationalized+date@3.10.0/node_modules/@internationalized/date/dist/packages/@internationalized/date/src/DateFormatter.ts", "../../../node_modules/.pnpm/@zag-js+date-utils@1.32.0_@internationalized+date@3.10.0/node_modules/@zag-js/date-utils/dist/index.mjs", "../../../node_modules/.pnpm/@zag-js+live-region@1.32.0/node_modules/@zag-js/live-region/dist/index.mjs", "../../../node_modules/.pnpm/@zag-js+date-picker@1.32.0_@internationalized+date@3.10.0/node_modules/@zag-js/date-picker/dist/index.mjs", "../src/components/date-picker.ts", "../../../node_modules/.pnpm/@zag-js+aria-hidden@1.32.0/node_modules/@zag-js/aria-hidden/dist/index.mjs", "../../../node_modules/.pnpm/@zag-js+focus-trap@1.32.0/node_modules/@zag-js/focus-trap/dist/index.mjs", "../../../node_modules/.pnpm/@zag-js+remove-scroll@1.32.0/node_modules/@zag-js/remove-scroll/dist/index.mjs", "../../../node_modules/.pnpm/@zag-js+dialog@1.32.0/node_modules/@zag-js/dialog/dist/index.mjs", "../src/components/dialog.ts", "../../../node_modules/.pnpm/@zag-js+editable@1.32.0/node_modules/@zag-js/editable/dist/index.mjs", "../src/components/editable.ts", "../../../node_modules/.pnpm/@zag-js+file-utils@1.32.0/node_modules/@zag-js/file-utils/dist/index.mjs", "../../../node_modules/.pnpm/@zag-js+file-upload@1.32.0/node_modules/@zag-js/file-upload/dist/index.mjs", "../src/components/file-upload.ts", "../../../node_modules/.pnpm/@zag-js+floating-panel@1.32.0/node_modules/@zag-js/floating-panel/dist/index.mjs", "../src/components/floating-panel.ts", "../../../node_modules/.pnpm/@zag-js+listbox@1.32.0/node_modules/@zag-js/listbox/dist/index.mjs", "../src/components/listbox.ts", "../../../node_modules/.pnpm/@zag-js+menu@1.32.0/node_modules/@zag-js/menu/dist/index.mjs", "../src/components/menu.ts", "../../../node_modules/.pnpm/@internationalized+number@3.6.5/node_modules/@internationalized/number/dist/packages/@internationalized/number/src/NumberFormatter.ts", "../../../node_modules/.pnpm/@internationalized+number@3.6.5/node_modules/@internationalized/number/dist/packages/@internationalized/number/src/NumberParser.ts", "../../../node_modules/.pnpm/@zag-js+number-input@1.32.0/node_modules/@zag-js/number-input/dist/index.mjs", "../src/components/number-input.ts", "../../../node_modules/.pnpm/@zag-js+password-input@1.32.0/node_modules/@zag-js/password-input/dist/index.mjs", "../src/components/password-input.ts", "../../../node_modules/.pnpm/@zag-js+pin-input@1.32.0/node_modules/@zag-js/pin-input/dist/index.mjs", "../src/components/pin-input.ts", "../../../node_modules/.pnpm/uqr@0.1.2/node_modules/uqr/dist/index.mjs", "../../../node_modules/.pnpm/@zag-js+qr-code@1.32.0/node_modules/@zag-js/qr-code/dist/index.mjs", "../src/components/qr-code.ts", "../../../node_modules/.pnpm/@zag-js+radio-group@1.32.0/node_modules/@zag-js/radio-group/dist/index.mjs", "../src/components/radio-group.ts", "../../../node_modules/.pnpm/@zag-js+select@1.32.0/node_modules/@zag-js/select/dist/index.mjs", "../src/components/select.ts", "../../../node_modules/.pnpm/perfect-freehand@1.2.2/node_modules/perfect-freehand/dist/esm/index.mjs", "../../../node_modules/.pnpm/@zag-js+signature-pad@1.32.0/node_modules/@zag-js/signature-pad/dist/index.mjs", "../src/components/signature-pad.ts", "../src/components/site-search.ts", "../../../node_modules/.pnpm/@zag-js+switch@1.32.0/node_modules/@zag-js/switch/dist/index.mjs", "../src/components/switch.ts", "../../../node_modules/.pnpm/@zag-js+tabs@1.32.0/node_modules/@zag-js/tabs/dist/index.mjs", "../src/components/tabs.ts", "../../../node_modules/.pnpm/@zag-js+timer@1.32.0/node_modules/@zag-js/timer/dist/index.mjs", "../src/components/timer.ts", "../../../node_modules/.pnpm/@zag-js+toast@1.32.0/node_modules/@zag-js/toast/dist/index.mjs", "../src/components/toast.ts", "../../../node_modules/.pnpm/@zag-js+toggle-group@1.32.0/node_modules/@zag-js/toggle-group/dist/index.mjs", "../src/components/toggle-group.ts", "../../../node_modules/.pnpm/@zag-js+tree-view@1.32.0/node_modules/@zag-js/tree-view/dist/index.mjs", "../src/components/tree-view.ts", "../src/index.ts"],
  "sourcesContent": ["\n/* **********************************************\n     Begin prism-core.js\n********************************************** */\n\n/// <reference lib=\"WebWorker\"/>\n\nvar _self = (typeof window !== 'undefined')\n\t? window   // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t\t? self // if in worker\n\t\t\t: {}   // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n *\n * @license MIT <https://opensource.org/licenses/MIT>\n * @author Lea Verou <https://lea.verou.me>\n * @namespace\n * @public\n */\nvar Prism = (function (_self) {\n\n\t// Private helper vars\n\tvar lang = /(?:^|\\s)lang(?:uage)?-([\\w-]+)(?=\\s|$)/i;\n\tvar uniqueId = 0;\n\n\t// The grammar object for plaintext\n\tvar plainTextGrammar = {};\n\n\n\tvar _ = {\n\t\t/**\n\t\t * By default, Prism will attempt to highlight all code elements (by calling {@link Prism.highlightAll}) on the\n\t\t * current page after the page finished loading. This might be a problem if e.g. you wanted to asynchronously load\n\t\t * additional languages or plugins yourself.\n\t\t *\n\t\t * By setting this value to `true`, Prism will not automatically highlight all code elements on the page.\n\t\t *\n\t\t * You obviously have to change this value before the automatic highlighting started. To do this, you can add an\n\t\t * empty Prism object into the global scope before loading the Prism script like this:\n\t\t *\n\t\t * ```js\n\t\t * window.Prism = window.Prism || {};\n\t\t * Prism.manual = true;\n\t\t * // add a new <script> to load Prism's script\n\t\t * ```\n\t\t *\n\t\t * @default false\n\t\t * @type {boolean}\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tmanual: _self.Prism && _self.Prism.manual,\n\t\t/**\n\t\t * By default, if Prism is in a web worker, it assumes that it is in a worker it created itself, so it uses\n\t\t * `addEventListener` to communicate with its parent instance. However, if you're using Prism manually in your\n\t\t * own worker, you don't want it to do this.\n\t\t *\n\t\t * By setting this value to `true`, Prism will not add its own listeners to the worker.\n\t\t *\n\t\t * You obviously have to change this value before Prism executes. To do this, you can add an\n\t\t * empty Prism object into the global scope before loading the Prism script like this:\n\t\t *\n\t\t * ```js\n\t\t * window.Prism = window.Prism || {};\n\t\t * Prism.disableWorkerMessageHandler = true;\n\t\t * // Load Prism's script\n\t\t * ```\n\t\t *\n\t\t * @default false\n\t\t * @type {boolean}\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tdisableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler,\n\n\t\t/**\n\t\t * A namespace for utility methods.\n\t\t *\n\t\t * All function in this namespace that are not explicitly marked as _public_ are for __internal use only__ and may\n\t\t * change or disappear at any time.\n\t\t *\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t */\n\t\tutil: {\n\t\t\tencode: function encode(tokens) {\n\t\t\t\tif (tokens instanceof Token) {\n\t\t\t\t\treturn new Token(tokens.type, encode(tokens.content), tokens.alias);\n\t\t\t\t} else if (Array.isArray(tokens)) {\n\t\t\t\t\treturn tokens.map(encode);\n\t\t\t\t} else {\n\t\t\t\t\treturn tokens.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/\\u00a0/g, ' ');\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the name of the type of the given value.\n\t\t\t *\n\t\t\t * @param {any} o\n\t\t\t * @returns {string}\n\t\t\t * @example\n\t\t\t * type(null)      === 'Null'\n\t\t\t * type(undefined) === 'Undefined'\n\t\t\t * type(123)       === 'Number'\n\t\t\t * type('foo')     === 'String'\n\t\t\t * type(true)      === 'Boolean'\n\t\t\t * type([1, 2])    === 'Array'\n\t\t\t * type({})        === 'Object'\n\t\t\t * type(String)    === 'Function'\n\t\t\t * type(/abc+/)    === 'RegExp'\n\t\t\t */\n\t\t\ttype: function (o) {\n\t\t\t\treturn Object.prototype.toString.call(o).slice(8, -1);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns a unique number for the given object. Later calls will still return the same number.\n\t\t\t *\n\t\t\t * @param {Object} obj\n\t\t\t * @returns {number}\n\t\t\t */\n\t\t\tobjId: function (obj) {\n\t\t\t\tif (!obj['__id']) {\n\t\t\t\t\tObject.defineProperty(obj, '__id', { value: ++uniqueId });\n\t\t\t\t}\n\t\t\t\treturn obj['__id'];\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Creates a deep clone of the given object.\n\t\t\t *\n\t\t\t * The main intended use of this function is to clone language definitions.\n\t\t\t *\n\t\t\t * @param {T} o\n\t\t\t * @param {Record<number, any>} [visited]\n\t\t\t * @returns {T}\n\t\t\t * @template T\n\t\t\t */\n\t\t\tclone: function deepClone(o, visited) {\n\t\t\t\tvisited = visited || {};\n\n\t\t\t\tvar clone; var id;\n\t\t\t\tswitch (_.util.type(o)) {\n\t\t\t\t\tcase 'Object':\n\t\t\t\t\t\tid = _.util.objId(o);\n\t\t\t\t\t\tif (visited[id]) {\n\t\t\t\t\t\t\treturn visited[id];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclone = /** @type {Record<string, any>} */ ({});\n\t\t\t\t\t\tvisited[id] = clone;\n\n\t\t\t\t\t\tfor (var key in o) {\n\t\t\t\t\t\t\tif (o.hasOwnProperty(key)) {\n\t\t\t\t\t\t\t\tclone[key] = deepClone(o[key], visited);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn /** @type {any} */ (clone);\n\n\t\t\t\t\tcase 'Array':\n\t\t\t\t\t\tid = _.util.objId(o);\n\t\t\t\t\t\tif (visited[id]) {\n\t\t\t\t\t\t\treturn visited[id];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t\tvisited[id] = clone;\n\n\t\t\t\t\t\t(/** @type {Array} */(/** @type {any} */(o))).forEach(function (v, i) {\n\t\t\t\t\t\t\tclone[i] = deepClone(v, visited);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn /** @type {any} */ (clone);\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn o;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the Prism language of the given element set by a `language-xxxx` or `lang-xxxx` class.\n\t\t\t *\n\t\t\t * If no language is set for the element or the element is `null` or `undefined`, `none` will be returned.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @returns {string}\n\t\t\t */\n\t\t\tgetLanguage: function (element) {\n\t\t\t\twhile (element) {\n\t\t\t\t\tvar m = lang.exec(element.className);\n\t\t\t\t\tif (m) {\n\t\t\t\t\t\treturn m[1].toLowerCase();\n\t\t\t\t\t}\n\t\t\t\t\telement = element.parentElement;\n\t\t\t\t}\n\t\t\t\treturn 'none';\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Sets the Prism `language-xxxx` class of the given element.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @param {string} language\n\t\t\t * @returns {void}\n\t\t\t */\n\t\t\tsetLanguage: function (element, language) {\n\t\t\t\t// remove all `language-xxxx` classes\n\t\t\t\t// (this might leave behind a leading space)\n\t\t\t\telement.className = element.className.replace(RegExp(lang, 'gi'), '');\n\n\t\t\t\t// add the new `language-xxxx` class\n\t\t\t\t// (using `classList` will automatically clean up spaces for us)\n\t\t\t\telement.classList.add('language-' + language);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the script element that is currently executing.\n\t\t\t *\n\t\t\t * This does __not__ work for line script element.\n\t\t\t *\n\t\t\t * @returns {HTMLScriptElement | null}\n\t\t\t */\n\t\t\tcurrentScript: function () {\n\t\t\t\tif (typeof document === 'undefined') {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tif (document.currentScript && document.currentScript.tagName === 'SCRIPT' && 1 < 2 /* hack to trip TS' flow analysis */) {\n\t\t\t\t\treturn /** @type {any} */ (document.currentScript);\n\t\t\t\t}\n\n\t\t\t\t// IE11 workaround\n\t\t\t\t// we'll get the src of the current script by parsing IE11's error stack trace\n\t\t\t\t// this will not work for inline scripts\n\n\t\t\t\ttry {\n\t\t\t\t\tthrow new Error();\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// Get file src url from stack. Specifically works with the format of stack traces in IE.\n\t\t\t\t\t// A stack will look like this:\n\t\t\t\t\t//\n\t\t\t\t\t// Error\n\t\t\t\t\t//    at _.util.currentScript (http://localhost/components/prism-core.js:119:5)\n\t\t\t\t\t//    at Global code (http://localhost/components/prism-core.js:606:1)\n\n\t\t\t\t\tvar src = (/at [^(\\r\\n]*\\((.*):[^:]+:[^:]+\\)$/i.exec(err.stack) || [])[1];\n\t\t\t\t\tif (src) {\n\t\t\t\t\t\tvar scripts = document.getElementsByTagName('script');\n\t\t\t\t\t\tfor (var i in scripts) {\n\t\t\t\t\t\t\tif (scripts[i].src == src) {\n\t\t\t\t\t\t\t\treturn scripts[i];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns whether a given class is active for `element`.\n\t\t\t *\n\t\t\t * The class can be activated if `element` or one of its ancestors has the given class and it can be deactivated\n\t\t\t * if `element` or one of its ancestors has the negated version of the given class. The _negated version_ of the\n\t\t\t * given class is just the given class with a `no-` prefix.\n\t\t\t *\n\t\t\t * Whether the class is active is determined by the closest ancestor of `element` (where `element` itself is\n\t\t\t * closest ancestor) that has the given class or the negated version of it. If neither `element` nor any of its\n\t\t\t * ancestors have the given class or the negated version of it, then the default activation will be returned.\n\t\t\t *\n\t\t\t * In the paradoxical situation where the closest ancestor contains __both__ the given class and the negated\n\t\t\t * version of it, the class is considered active.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @param {string} className\n\t\t\t * @param {boolean} [defaultActivation=false]\n\t\t\t * @returns {boolean}\n\t\t\t */\n\t\t\tisActive: function (element, className, defaultActivation) {\n\t\t\t\tvar no = 'no-' + className;\n\n\t\t\t\twhile (element) {\n\t\t\t\t\tvar classList = element.classList;\n\t\t\t\t\tif (classList.contains(className)) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tif (classList.contains(no)) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\telement = element.parentElement;\n\t\t\t\t}\n\t\t\t\treturn !!defaultActivation;\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * This namespace contains all currently loaded languages and the some helper functions to create and modify languages.\n\t\t *\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tlanguages: {\n\t\t\t/**\n\t\t\t * The grammar for plain, unformatted text.\n\t\t\t */\n\t\t\tplain: plainTextGrammar,\n\t\t\tplaintext: plainTextGrammar,\n\t\t\ttext: plainTextGrammar,\n\t\t\ttxt: plainTextGrammar,\n\n\t\t\t/**\n\t\t\t * Creates a deep copy of the language with the given id and appends the given tokens.\n\t\t\t *\n\t\t\t * If a token in `redef` also appears in the copied language, then the existing token in the copied language\n\t\t\t * will be overwritten at its original position.\n\t\t\t *\n\t\t\t * ## Best practices\n\t\t\t *\n\t\t\t * Since the position of overwriting tokens (token in `redef` that overwrite tokens in the copied language)\n\t\t\t * doesn't matter, they can technically be in any order. However, this can be confusing to others that trying to\n\t\t\t * understand the language definition because, normally, the order of tokens matters in Prism grammars.\n\t\t\t *\n\t\t\t * Therefore, it is encouraged to order overwriting tokens according to the positions of the overwritten tokens.\n\t\t\t * Furthermore, all non-overwriting tokens should be placed after the overwriting ones.\n\t\t\t *\n\t\t\t * @param {string} id The id of the language to extend. This has to be a key in `Prism.languages`.\n\t\t\t * @param {Grammar} redef The new tokens to append.\n\t\t\t * @returns {Grammar} The new language created.\n\t\t\t * @public\n\t\t\t * @example\n\t\t\t * Prism.languages['css-with-colors'] = Prism.languages.extend('css', {\n\t\t\t *     // Prism.languages.css already has a 'comment' token, so this token will overwrite CSS' 'comment' token\n\t\t\t *     // at its original position\n\t\t\t *     'comment': { ... },\n\t\t\t *     // CSS doesn't have a 'color' token, so this token will be appended\n\t\t\t *     'color': /\\b(?:red|green|blue)\\b/\n\t\t\t * });\n\t\t\t */\n\t\t\textend: function (id, redef) {\n\t\t\t\tvar lang = _.util.clone(_.languages[id]);\n\n\t\t\t\tfor (var key in redef) {\n\t\t\t\t\tlang[key] = redef[key];\n\t\t\t\t}\n\n\t\t\t\treturn lang;\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Inserts tokens _before_ another token in a language definition or any other grammar.\n\t\t\t *\n\t\t\t * ## Usage\n\t\t\t *\n\t\t\t * This helper method makes it easy to modify existing languages. For example, the CSS language definition\n\t\t\t * not only defines CSS highlighting for CSS documents, but also needs to define highlighting for CSS embedded\n\t\t\t * in HTML through `<style>` elements. To do this, it needs to modify `Prism.languages.markup` and add the\n\t\t\t * appropriate tokens. However, `Prism.languages.markup` is a regular JavaScript object literal, so if you do\n\t\t\t * this:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.markup.style = {\n\t\t\t *     // token\n\t\t\t * };\n\t\t\t * ```\n\t\t\t *\n\t\t\t * then the `style` token will be added (and processed) at the end. `insertBefore` allows you to insert tokens\n\t\t\t * before existing tokens. For the CSS example above, you would use it like this:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.insertBefore('markup', 'cdata', {\n\t\t\t *     'style': {\n\t\t\t *         // token\n\t\t\t *     }\n\t\t\t * });\n\t\t\t * ```\n\t\t\t *\n\t\t\t * ## Special cases\n\t\t\t *\n\t\t\t * If the grammars of `inside` and `insert` have tokens with the same name, the tokens in `inside`'s grammar\n\t\t\t * will be ignored.\n\t\t\t *\n\t\t\t * This behavior can be used to insert tokens after `before`:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.insertBefore('markup', 'comment', {\n\t\t\t *     'comment': Prism.languages.markup.comment,\n\t\t\t *     // tokens after 'comment'\n\t\t\t * });\n\t\t\t * ```\n\t\t\t *\n\t\t\t * ## Limitations\n\t\t\t *\n\t\t\t * The main problem `insertBefore` has to solve is iteration order. Since ES2015, the iteration order for object\n\t\t\t * properties is guaranteed to be the insertion order (except for integer keys) but some browsers behave\n\t\t\t * differently when keys are deleted and re-inserted. So `insertBefore` can't be implemented by temporarily\n\t\t\t * deleting properties which is necessary to insert at arbitrary positions.\n\t\t\t *\n\t\t\t * To solve this problem, `insertBefore` doesn't actually insert the given tokens into the target object.\n\t\t\t * Instead, it will create a new object and replace all references to the target object with the new one. This\n\t\t\t * can be done without temporarily deleting properties, so the iteration order is well-defined.\n\t\t\t *\n\t\t\t * However, only references that can be reached from `Prism.languages` or `insert` will be replaced. I.e. if\n\t\t\t * you hold the target object in a variable, then the value of the variable will not change.\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * var oldMarkup = Prism.languages.markup;\n\t\t\t * var newMarkup = Prism.languages.insertBefore('markup', 'comment', { ... });\n\t\t\t *\n\t\t\t * assert(oldMarkup !== Prism.languages.markup);\n\t\t\t * assert(newMarkup === Prism.languages.markup);\n\t\t\t * ```\n\t\t\t *\n\t\t\t * @param {string} inside The property of `root` (e.g. a language id in `Prism.languages`) that contains the\n\t\t\t * object to be modified.\n\t\t\t * @param {string} before The key to insert before.\n\t\t\t * @param {Grammar} insert An object containing the key-value pairs to be inserted.\n\t\t\t * @param {Object<string, any>} [root] The object containing `inside`, i.e. the object that contains the\n\t\t\t * object to be modified.\n\t\t\t *\n\t\t\t * Defaults to `Prism.languages`.\n\t\t\t * @returns {Grammar} The new grammar object.\n\t\t\t * @public\n\t\t\t */\n\t\t\tinsertBefore: function (inside, before, insert, root) {\n\t\t\t\troot = root || /** @type {any} */ (_.languages);\n\t\t\t\tvar grammar = root[inside];\n\t\t\t\t/** @type {Grammar} */\n\t\t\t\tvar ret = {};\n\n\t\t\t\tfor (var token in grammar) {\n\t\t\t\t\tif (grammar.hasOwnProperty(token)) {\n\n\t\t\t\t\t\tif (token == before) {\n\t\t\t\t\t\t\tfor (var newToken in insert) {\n\t\t\t\t\t\t\t\tif (insert.hasOwnProperty(newToken)) {\n\t\t\t\t\t\t\t\t\tret[newToken] = insert[newToken];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Do not insert token which also occur in insert. See #1525\n\t\t\t\t\t\tif (!insert.hasOwnProperty(token)) {\n\t\t\t\t\t\t\tret[token] = grammar[token];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar old = root[inside];\n\t\t\t\troot[inside] = ret;\n\n\t\t\t\t// Update references in other language definitions\n\t\t\t\t_.languages.DFS(_.languages, function (key, value) {\n\t\t\t\t\tif (value === old && key != inside) {\n\t\t\t\t\t\tthis[key] = ret;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn ret;\n\t\t\t},\n\n\t\t\t// Traverse a language definition with Depth First Search\n\t\t\tDFS: function DFS(o, callback, type, visited) {\n\t\t\t\tvisited = visited || {};\n\n\t\t\t\tvar objId = _.util.objId;\n\n\t\t\t\tfor (var i in o) {\n\t\t\t\t\tif (o.hasOwnProperty(i)) {\n\t\t\t\t\t\tcallback.call(o, i, o[i], type || i);\n\n\t\t\t\t\t\tvar property = o[i];\n\t\t\t\t\t\tvar propertyType = _.util.type(property);\n\n\t\t\t\t\t\tif (propertyType === 'Object' && !visited[objId(property)]) {\n\t\t\t\t\t\t\tvisited[objId(property)] = true;\n\t\t\t\t\t\t\tDFS(property, callback, null, visited);\n\t\t\t\t\t\t} else if (propertyType === 'Array' && !visited[objId(property)]) {\n\t\t\t\t\t\t\tvisited[objId(property)] = true;\n\t\t\t\t\t\t\tDFS(property, callback, i, visited);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tplugins: {},\n\n\t\t/**\n\t\t * This is the most high-level function in Prism\u2019s API.\n\t\t * It fetches all the elements that have a `.language-xxxx` class and then calls {@link Prism.highlightElement} on\n\t\t * each one of them.\n\t\t *\n\t\t * This is equivalent to `Prism.highlightAllUnder(document, async, callback)`.\n\t\t *\n\t\t * @param {boolean} [async=false] Same as in {@link Prism.highlightAllUnder}.\n\t\t * @param {HighlightCallback} [callback] Same as in {@link Prism.highlightAllUnder}.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thighlightAll: function (async, callback) {\n\t\t\t_.highlightAllUnder(document, async, callback);\n\t\t},\n\n\t\t/**\n\t\t * Fetches all the descendants of `container` that have a `.language-xxxx` class and then calls\n\t\t * {@link Prism.highlightElement} on each one of them.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-highlightall`\n\t\t * 2. `before-all-elements-highlight`\n\t\t * 3. All hooks of {@link Prism.highlightElement} for each element.\n\t\t *\n\t\t * @param {ParentNode} container The root element, whose descendants that have a `.language-xxxx` class will be highlighted.\n\t\t * @param {boolean} [async=false] Whether each element is to be highlighted asynchronously using Web Workers.\n\t\t * @param {HighlightCallback} [callback] An optional callback to be invoked on each element after its highlighting is done.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thighlightAllUnder: function (container, async, callback) {\n\t\t\tvar env = {\n\t\t\t\tcallback: callback,\n\t\t\t\tcontainer: container,\n\t\t\t\tselector: 'code[class*=\"language-\"], [class*=\"language-\"] code, code[class*=\"lang-\"], [class*=\"lang-\"] code'\n\t\t\t};\n\n\t\t\t_.hooks.run('before-highlightall', env);\n\n\t\t\tenv.elements = Array.prototype.slice.apply(env.container.querySelectorAll(env.selector));\n\n\t\t\t_.hooks.run('before-all-elements-highlight', env);\n\n\t\t\tfor (var i = 0, element; (element = env.elements[i++]);) {\n\t\t\t\t_.highlightElement(element, async === true, env.callback);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Highlights the code inside a single element.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-sanity-check`\n\t\t * 2. `before-highlight`\n\t\t * 3. All hooks of {@link Prism.highlight}. These hooks will be run by an asynchronous worker if `async` is `true`.\n\t\t * 4. `before-insert`\n\t\t * 5. `after-highlight`\n\t\t * 6. `complete`\n\t\t *\n\t\t * Some the above hooks will be skipped if the element doesn't contain any text or there is no grammar loaded for\n\t\t * the element's language.\n\t\t *\n\t\t * @param {Element} element The element containing the code.\n\t\t * It must have a class of `language-xxxx` to be processed, where `xxxx` is a valid language identifier.\n\t\t * @param {boolean} [async=false] Whether the element is to be highlighted asynchronously using Web Workers\n\t\t * to improve performance and avoid blocking the UI when highlighting very large chunks of code. This option is\n\t\t * [disabled by default](https://prismjs.com/faq.html#why-is-asynchronous-highlighting-disabled-by-default).\n\t\t *\n\t\t * Note: All language definitions required to highlight the code must be included in the main `prism.js` file for\n\t\t * asynchronous highlighting to work. You can build your own bundle on the\n\t\t * [Download page](https://prismjs.com/download.html).\n\t\t * @param {HighlightCallback} [callback] An optional callback to be invoked after the highlighting is done.\n\t\t * Mostly useful when `async` is `true`, since in that case, the highlighting is done asynchronously.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thighlightElement: function (element, async, callback) {\n\t\t\t// Find language\n\t\t\tvar language = _.util.getLanguage(element);\n\t\t\tvar grammar = _.languages[language];\n\n\t\t\t// Set language on the element, if not present\n\t\t\t_.util.setLanguage(element, language);\n\n\t\t\t// Set language on the parent, for styling\n\t\t\tvar parent = element.parentElement;\n\t\t\tif (parent && parent.nodeName.toLowerCase() === 'pre') {\n\t\t\t\t_.util.setLanguage(parent, language);\n\t\t\t}\n\n\t\t\tvar code = element.textContent;\n\n\t\t\tvar env = {\n\t\t\t\telement: element,\n\t\t\t\tlanguage: language,\n\t\t\t\tgrammar: grammar,\n\t\t\t\tcode: code\n\t\t\t};\n\n\t\t\tfunction insertHighlightedCode(highlightedCode) {\n\t\t\t\tenv.highlightedCode = highlightedCode;\n\n\t\t\t\t_.hooks.run('before-insert', env);\n\n\t\t\t\tenv.element.innerHTML = env.highlightedCode;\n\n\t\t\t\t_.hooks.run('after-highlight', env);\n\t\t\t\t_.hooks.run('complete', env);\n\t\t\t\tcallback && callback.call(env.element);\n\t\t\t}\n\n\t\t\t_.hooks.run('before-sanity-check', env);\n\n\t\t\t// plugins may change/add the parent/element\n\t\t\tparent = env.element.parentElement;\n\t\t\tif (parent && parent.nodeName.toLowerCase() === 'pre' && !parent.hasAttribute('tabindex')) {\n\t\t\t\tparent.setAttribute('tabindex', '0');\n\t\t\t}\n\n\t\t\tif (!env.code) {\n\t\t\t\t_.hooks.run('complete', env);\n\t\t\t\tcallback && callback.call(env.element);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_.hooks.run('before-highlight', env);\n\n\t\t\tif (!env.grammar) {\n\t\t\t\tinsertHighlightedCode(_.util.encode(env.code));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (async && _self.Worker) {\n\t\t\t\tvar worker = new Worker(_.filename);\n\n\t\t\t\tworker.onmessage = function (evt) {\n\t\t\t\t\tinsertHighlightedCode(evt.data);\n\t\t\t\t};\n\n\t\t\t\tworker.postMessage(JSON.stringify({\n\t\t\t\t\tlanguage: env.language,\n\t\t\t\t\tcode: env.code,\n\t\t\t\t\timmediateClose: true\n\t\t\t\t}));\n\t\t\t} else {\n\t\t\t\tinsertHighlightedCode(_.highlight(env.code, env.grammar, env.language));\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Low-level function, only use if you know what you\u2019re doing. It accepts a string of text as input\n\t\t * and the language definitions to use, and returns a string with the HTML produced.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-tokenize`\n\t\t * 2. `after-tokenize`\n\t\t * 3. `wrap`: On each {@link Token}.\n\t\t *\n\t\t * @param {string} text A string with the code to be highlighted.\n\t\t * @param {Grammar} grammar An object containing the tokens to use.\n\t\t *\n\t\t * Usually a language definition like `Prism.languages.markup`.\n\t\t * @param {string} language The name of the language definition passed to `grammar`.\n\t\t * @returns {string} The highlighted HTML.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t * @example\n\t\t * Prism.highlight('var foo = true;', Prism.languages.javascript, 'javascript');\n\t\t */\n\t\thighlight: function (text, grammar, language) {\n\t\t\tvar env = {\n\t\t\t\tcode: text,\n\t\t\t\tgrammar: grammar,\n\t\t\t\tlanguage: language\n\t\t\t};\n\t\t\t_.hooks.run('before-tokenize', env);\n\t\t\tif (!env.grammar) {\n\t\t\t\tthrow new Error('The language \"' + env.language + '\" has no grammar.');\n\t\t\t}\n\t\t\tenv.tokens = _.tokenize(env.code, env.grammar);\n\t\t\t_.hooks.run('after-tokenize', env);\n\t\t\treturn Token.stringify(_.util.encode(env.tokens), env.language);\n\t\t},\n\n\t\t/**\n\t\t * This is the heart of Prism, and the most low-level function you can use. It accepts a string of text as input\n\t\t * and the language definitions to use, and returns an array with the tokenized code.\n\t\t *\n\t\t * When the language definition includes nested tokens, the function is called recursively on each of these tokens.\n\t\t *\n\t\t * This method could be useful in other contexts as well, as a very crude parser.\n\t\t *\n\t\t * @param {string} text A string with the code to be highlighted.\n\t\t * @param {Grammar} grammar An object containing the tokens to use.\n\t\t *\n\t\t * Usually a language definition like `Prism.languages.markup`.\n\t\t * @returns {TokenStream} An array of strings and tokens, a token stream.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t * @example\n\t\t * let code = `var foo = 0;`;\n\t\t * let tokens = Prism.tokenize(code, Prism.languages.javascript);\n\t\t * tokens.forEach(token => {\n\t\t *     if (token instanceof Prism.Token && token.type === 'number') {\n\t\t *         console.log(`Found numeric literal: ${token.content}`);\n\t\t *     }\n\t\t * });\n\t\t */\n\t\ttokenize: function (text, grammar) {\n\t\t\tvar rest = grammar.rest;\n\t\t\tif (rest) {\n\t\t\t\tfor (var token in rest) {\n\t\t\t\t\tgrammar[token] = rest[token];\n\t\t\t\t}\n\n\t\t\t\tdelete grammar.rest;\n\t\t\t}\n\n\t\t\tvar tokenList = new LinkedList();\n\t\t\taddAfter(tokenList, tokenList.head, text);\n\n\t\t\tmatchGrammar(text, tokenList, grammar, tokenList.head, 0);\n\n\t\t\treturn toArray(tokenList);\n\t\t},\n\n\t\t/**\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thooks: {\n\t\t\tall: {},\n\n\t\t\t/**\n\t\t\t * Adds the given callback to the list of callbacks for the given hook.\n\t\t\t *\n\t\t\t * The callback will be invoked when the hook it is registered for is run.\n\t\t\t * Hooks are usually directly run by a highlight function but you can also run hooks yourself.\n\t\t\t *\n\t\t\t * One callback function can be registered to multiple hooks and the same hook multiple times.\n\t\t\t *\n\t\t\t * @param {string} name The name of the hook.\n\t\t\t * @param {HookCallback} callback The callback function which is given environment variables.\n\t\t\t * @public\n\t\t\t */\n\t\t\tadd: function (name, callback) {\n\t\t\t\tvar hooks = _.hooks.all;\n\n\t\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\t\thooks[name].push(callback);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Runs a hook invoking all registered callbacks with the given environment variables.\n\t\t\t *\n\t\t\t * Callbacks will be invoked synchronously and in the order in which they were registered.\n\t\t\t *\n\t\t\t * @param {string} name The name of the hook.\n\t\t\t * @param {Object<string, any>} env The environment variables of the hook passed to all callbacks registered.\n\t\t\t * @public\n\t\t\t */\n\t\t\trun: function (name, env) {\n\t\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tfor (var i = 0, callback; (callback = callbacks[i++]);) {\n\t\t\t\t\tcallback(env);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tToken: Token\n\t};\n\t_self.Prism = _;\n\n\n\t// Typescript note:\n\t// The following can be used to import the Token type in JSDoc:\n\t//\n\t//   @typedef {InstanceType<import(\"./prism-core\")[\"Token\"]>} Token\n\n\t/**\n\t * Creates a new token.\n\t *\n\t * @param {string} type See {@link Token#type type}\n\t * @param {string | TokenStream} content See {@link Token#content content}\n\t * @param {string|string[]} [alias] The alias(es) of the token.\n\t * @param {string} [matchedStr=\"\"] A copy of the full string this token was created from.\n\t * @class\n\t * @global\n\t * @public\n\t */\n\tfunction Token(type, content, alias, matchedStr) {\n\t\t/**\n\t\t * The type of the token.\n\t\t *\n\t\t * This is usually the key of a pattern in a {@link Grammar}.\n\t\t *\n\t\t * @type {string}\n\t\t * @see GrammarToken\n\t\t * @public\n\t\t */\n\t\tthis.type = type;\n\t\t/**\n\t\t * The strings or tokens contained by this token.\n\t\t *\n\t\t * This will be a token stream if the pattern matched also defined an `inside` grammar.\n\t\t *\n\t\t * @type {string | TokenStream}\n\t\t * @public\n\t\t */\n\t\tthis.content = content;\n\t\t/**\n\t\t * The alias(es) of the token.\n\t\t *\n\t\t * @type {string|string[]}\n\t\t * @see GrammarToken\n\t\t * @public\n\t\t */\n\t\tthis.alias = alias;\n\t\t// Copy of the full string this token was created from\n\t\tthis.length = (matchedStr || '').length | 0;\n\t}\n\n\t/**\n\t * A token stream is an array of strings and {@link Token Token} objects.\n\t *\n\t * Token streams have to fulfill a few properties that are assumed by most functions (mostly internal ones) that process\n\t * them.\n\t *\n\t * 1. No adjacent strings.\n\t * 2. No empty strings.\n\t *\n\t *    The only exception here is the token stream that only contains the empty string and nothing else.\n\t *\n\t * @typedef {Array<string | Token>} TokenStream\n\t * @global\n\t * @public\n\t */\n\n\t/**\n\t * Converts the given token or token stream to an HTML representation.\n\t *\n\t * The following hooks will be run:\n\t * 1. `wrap`: On each {@link Token}.\n\t *\n\t * @param {string | Token | TokenStream} o The token or token stream to be converted.\n\t * @param {string} language The name of current language.\n\t * @returns {string} The HTML representation of the token or token stream.\n\t * @memberof Token\n\t * @static\n\t */\n\tToken.stringify = function stringify(o, language) {\n\t\tif (typeof o == 'string') {\n\t\t\treturn o;\n\t\t}\n\t\tif (Array.isArray(o)) {\n\t\t\tvar s = '';\n\t\t\to.forEach(function (e) {\n\t\t\t\ts += stringify(e, language);\n\t\t\t});\n\t\t\treturn s;\n\t\t}\n\n\t\tvar env = {\n\t\t\ttype: o.type,\n\t\t\tcontent: stringify(o.content, language),\n\t\t\ttag: 'span',\n\t\t\tclasses: ['token', o.type],\n\t\t\tattributes: {},\n\t\t\tlanguage: language\n\t\t};\n\n\t\tvar aliases = o.alias;\n\t\tif (aliases) {\n\t\t\tif (Array.isArray(aliases)) {\n\t\t\t\tArray.prototype.push.apply(env.classes, aliases);\n\t\t\t} else {\n\t\t\t\tenv.classes.push(aliases);\n\t\t\t}\n\t\t}\n\n\t\t_.hooks.run('wrap', env);\n\n\t\tvar attributes = '';\n\t\tfor (var name in env.attributes) {\n\t\t\tattributes += ' ' + name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '&quot;') + '\"';\n\t\t}\n\n\t\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + attributes + '>' + env.content + '</' + env.tag + '>';\n\t};\n\n\t/**\n\t * @param {RegExp} pattern\n\t * @param {number} pos\n\t * @param {string} text\n\t * @param {boolean} lookbehind\n\t * @returns {RegExpExecArray | null}\n\t */\n\tfunction matchPattern(pattern, pos, text, lookbehind) {\n\t\tpattern.lastIndex = pos;\n\t\tvar match = pattern.exec(text);\n\t\tif (match && lookbehind && match[1]) {\n\t\t\t// change the match to remove the text matched by the Prism lookbehind group\n\t\t\tvar lookbehindLength = match[1].length;\n\t\t\tmatch.index += lookbehindLength;\n\t\t\tmatch[0] = match[0].slice(lookbehindLength);\n\t\t}\n\t\treturn match;\n\t}\n\n\t/**\n\t * @param {string} text\n\t * @param {LinkedList<string | Token>} tokenList\n\t * @param {any} grammar\n\t * @param {LinkedListNode<string | Token>} startNode\n\t * @param {number} startPos\n\t * @param {RematchOptions} [rematch]\n\t * @returns {void}\n\t * @private\n\t *\n\t * @typedef RematchOptions\n\t * @property {string} cause\n\t * @property {number} reach\n\t */\n\tfunction matchGrammar(text, tokenList, grammar, startNode, startPos, rematch) {\n\t\tfor (var token in grammar) {\n\t\t\tif (!grammar.hasOwnProperty(token) || !grammar[token]) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tvar patterns = grammar[token];\n\t\t\tpatterns = Array.isArray(patterns) ? patterns : [patterns];\n\n\t\t\tfor (var j = 0; j < patterns.length; ++j) {\n\t\t\t\tif (rematch && rematch.cause == token + ',' + j) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar patternObj = patterns[j];\n\t\t\t\tvar inside = patternObj.inside;\n\t\t\t\tvar lookbehind = !!patternObj.lookbehind;\n\t\t\t\tvar greedy = !!patternObj.greedy;\n\t\t\t\tvar alias = patternObj.alias;\n\n\t\t\t\tif (greedy && !patternObj.pattern.global) {\n\t\t\t\t\t// Without the global flag, lastIndex won't work\n\t\t\t\t\tvar flags = patternObj.pattern.toString().match(/[imsuy]*$/)[0];\n\t\t\t\t\tpatternObj.pattern = RegExp(patternObj.pattern.source, flags + 'g');\n\t\t\t\t}\n\n\t\t\t\t/** @type {RegExp} */\n\t\t\t\tvar pattern = patternObj.pattern || patternObj;\n\n\t\t\t\tfor ( // iterate the token list and keep track of the current token/string position\n\t\t\t\t\tvar currentNode = startNode.next, pos = startPos;\n\t\t\t\t\tcurrentNode !== tokenList.tail;\n\t\t\t\t\tpos += currentNode.value.length, currentNode = currentNode.next\n\t\t\t\t) {\n\n\t\t\t\t\tif (rematch && pos >= rematch.reach) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar str = currentNode.value;\n\n\t\t\t\t\tif (tokenList.length > text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar removeCount = 1; // this is the to parameter of removeBetween\n\t\t\t\t\tvar match;\n\n\t\t\t\t\tif (greedy) {\n\t\t\t\t\t\tmatch = matchPattern(pattern, pos, text, lookbehind);\n\t\t\t\t\t\tif (!match || match.index >= text.length) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index;\n\t\t\t\t\t\tvar to = match.index + match[0].length;\n\t\t\t\t\t\tvar p = pos;\n\n\t\t\t\t\t\t// find the node that contains the match\n\t\t\t\t\t\tp += currentNode.value.length;\n\t\t\t\t\t\twhile (from >= p) {\n\t\t\t\t\t\t\tcurrentNode = currentNode.next;\n\t\t\t\t\t\t\tp += currentNode.value.length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// adjust pos (and p)\n\t\t\t\t\t\tp -= currentNode.value.length;\n\t\t\t\t\t\tpos = p;\n\n\t\t\t\t\t\t// the current node is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\tif (currentNode.value instanceof Token) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// find the last node which is affected by this match\n\t\t\t\t\t\tfor (\n\t\t\t\t\t\t\tvar k = currentNode;\n\t\t\t\t\t\t\tk !== tokenList.tail && (p < to || typeof k.value === 'string');\n\t\t\t\t\t\t\tk = k.next\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tremoveCount++;\n\t\t\t\t\t\t\tp += k.value.length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tremoveCount--;\n\n\t\t\t\t\t\t// replace with the new match\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmatch = matchPattern(pattern, 0, str, lookbehind);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// eslint-disable-next-line no-redeclare\n\t\t\t\t\tvar from = match.index;\n\t\t\t\t\tvar matchStr = match[0];\n\t\t\t\t\tvar before = str.slice(0, from);\n\t\t\t\t\tvar after = str.slice(from + matchStr.length);\n\n\t\t\t\t\tvar reach = pos + str.length;\n\t\t\t\t\tif (rematch && reach > rematch.reach) {\n\t\t\t\t\t\trematch.reach = reach;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar removeFrom = currentNode.prev;\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\tremoveFrom = addAfter(tokenList, removeFrom, before);\n\t\t\t\t\t\tpos += before.length;\n\t\t\t\t\t}\n\n\t\t\t\t\tremoveRange(tokenList, removeFrom, removeCount);\n\n\t\t\t\t\tvar wrapped = new Token(token, inside ? _.tokenize(matchStr, inside) : matchStr, alias, matchStr);\n\t\t\t\t\tcurrentNode = addAfter(tokenList, removeFrom, wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\taddAfter(tokenList, currentNode, after);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (removeCount > 1) {\n\t\t\t\t\t\t// at least one Token object was removed, so we have to do some rematching\n\t\t\t\t\t\t// this can only happen if the current pattern is greedy\n\n\t\t\t\t\t\t/** @type {RematchOptions} */\n\t\t\t\t\t\tvar nestedRematch = {\n\t\t\t\t\t\t\tcause: token + ',' + j,\n\t\t\t\t\t\t\treach: reach\n\t\t\t\t\t\t};\n\t\t\t\t\t\tmatchGrammar(text, tokenList, grammar, currentNode.prev, pos, nestedRematch);\n\n\t\t\t\t\t\t// the reach might have been extended because of the rematching\n\t\t\t\t\t\tif (rematch && nestedRematch.reach > rematch.reach) {\n\t\t\t\t\t\t\trematch.reach = nestedRematch.reach;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @typedef LinkedListNode\n\t * @property {T} value\n\t * @property {LinkedListNode<T> | null} prev The previous node.\n\t * @property {LinkedListNode<T> | null} next The next node.\n\t * @template T\n\t * @private\n\t */\n\n\t/**\n\t * @template T\n\t * @private\n\t */\n\tfunction LinkedList() {\n\t\t/** @type {LinkedListNode<T>} */\n\t\tvar head = { value: null, prev: null, next: null };\n\t\t/** @type {LinkedListNode<T>} */\n\t\tvar tail = { value: null, prev: head, next: null };\n\t\thead.next = tail;\n\n\t\t/** @type {LinkedListNode<T>} */\n\t\tthis.head = head;\n\t\t/** @type {LinkedListNode<T>} */\n\t\tthis.tail = tail;\n\t\tthis.length = 0;\n\t}\n\n\t/**\n\t * Adds a new node with the given value to the list.\n\t *\n\t * @param {LinkedList<T>} list\n\t * @param {LinkedListNode<T>} node\n\t * @param {T} value\n\t * @returns {LinkedListNode<T>} The added node.\n\t * @template T\n\t */\n\tfunction addAfter(list, node, value) {\n\t\t// assumes that node != list.tail && values.length >= 0\n\t\tvar next = node.next;\n\n\t\tvar newNode = { value: value, prev: node, next: next };\n\t\tnode.next = newNode;\n\t\tnext.prev = newNode;\n\t\tlist.length++;\n\n\t\treturn newNode;\n\t}\n\t/**\n\t * Removes `count` nodes after the given node. The given node will not be removed.\n\t *\n\t * @param {LinkedList<T>} list\n\t * @param {LinkedListNode<T>} node\n\t * @param {number} count\n\t * @template T\n\t */\n\tfunction removeRange(list, node, count) {\n\t\tvar next = node.next;\n\t\tfor (var i = 0; i < count && next !== list.tail; i++) {\n\t\t\tnext = next.next;\n\t\t}\n\t\tnode.next = next;\n\t\tnext.prev = node;\n\t\tlist.length -= i;\n\t}\n\t/**\n\t * @param {LinkedList<T>} list\n\t * @returns {T[]}\n\t * @template T\n\t */\n\tfunction toArray(list) {\n\t\tvar array = [];\n\t\tvar node = list.head.next;\n\t\twhile (node !== list.tail) {\n\t\t\tarray.push(node.value);\n\t\t\tnode = node.next;\n\t\t}\n\t\treturn array;\n\t}\n\n\n\tif (!_self.document) {\n\t\tif (!_self.addEventListener) {\n\t\t\t// in Node.js\n\t\t\treturn _;\n\t\t}\n\n\t\tif (!_.disableWorkerMessageHandler) {\n\t\t\t// In worker\n\t\t\t_self.addEventListener('message', function (evt) {\n\t\t\t\tvar message = JSON.parse(evt.data);\n\t\t\t\tvar lang = message.language;\n\t\t\t\tvar code = message.code;\n\t\t\t\tvar immediateClose = message.immediateClose;\n\n\t\t\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\t\t\tif (immediateClose) {\n\t\t\t\t\t_self.close();\n\t\t\t\t}\n\t\t\t}, false);\n\t\t}\n\n\t\treturn _;\n\t}\n\n\t// Get current script and highlight\n\tvar script = _.util.currentScript();\n\n\tif (script) {\n\t\t_.filename = script.src;\n\n\t\tif (script.hasAttribute('data-manual')) {\n\t\t\t_.manual = true;\n\t\t}\n\t}\n\n\tfunction highlightAutomaticallyCallback() {\n\t\tif (!_.manual) {\n\t\t\t_.highlightAll();\n\t\t}\n\t}\n\n\tif (!_.manual) {\n\t\t// If the document state is \"loading\", then we'll use DOMContentLoaded.\n\t\t// If the document state is \"interactive\" and the prism.js script is deferred, then we'll also use the\n\t\t// DOMContentLoaded event because there might be some plugins or languages which have also been deferred and they\n\t\t// might take longer one animation frame to execute which can create a race condition where only some plugins have\n\t\t// been loaded when Prism.highlightAll() is executed, depending on how fast resources are loaded.\n\t\t// See https://github.com/PrismJS/prism/issues/2102\n\t\tvar readyState = document.readyState;\n\t\tif (readyState === 'loading' || readyState === 'interactive' && script && script.defer) {\n\t\t\tdocument.addEventListener('DOMContentLoaded', highlightAutomaticallyCallback);\n\t\t} else {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(highlightAutomaticallyCallback);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(highlightAutomaticallyCallback, 16);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn _;\n\n}(_self));\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n// some additional documentation/types\n\n/**\n * The expansion of a simple `RegExp` literal to support additional properties.\n *\n * @typedef GrammarToken\n * @property {RegExp} pattern The regular expression of the token.\n * @property {boolean} [lookbehind=false] If `true`, then the first capturing group of `pattern` will (effectively)\n * behave as a lookbehind group meaning that the captured text will not be part of the matched text of the new token.\n * @property {boolean} [greedy=false] Whether the token is greedy.\n * @property {string|string[]} [alias] An optional alias or list of aliases.\n * @property {Grammar} [inside] The nested grammar of this token.\n *\n * The `inside` grammar will be used to tokenize the text value of each token of this kind.\n *\n * This can be used to make nested and even recursive language definitions.\n *\n * Note: This can cause infinite recursion. Be careful when you embed different languages or even the same language into\n * each another.\n * @global\n * @public\n */\n\n/**\n * @typedef Grammar\n * @type {Object<string, RegExp | GrammarToken | Array<RegExp | GrammarToken>>}\n * @property {Grammar} [rest] An optional grammar object that will be appended to this grammar.\n * @global\n * @public\n */\n\n/**\n * A function which will invoked after an element was successfully highlighted.\n *\n * @callback HighlightCallback\n * @param {Element} element The element successfully highlighted.\n * @returns {void}\n * @global\n * @public\n */\n\n/**\n * @callback HookCallback\n * @param {Object<string, any>} env The environment variables of the hook.\n * @returns {void}\n * @global\n * @public\n */\n\n\n/* **********************************************\n     Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': {\n\t\tpattern: /<!--(?:(?!<!--)[\\s\\S])*?-->/,\n\t\tgreedy: true\n\t},\n\t'prolog': {\n\t\tpattern: /<\\?[\\s\\S]+?\\?>/,\n\t\tgreedy: true\n\t},\n\t'doctype': {\n\t\t// https://www.w3.org/TR/xml/#NT-doctypedecl\n\t\tpattern: /<!DOCTYPE(?:[^>\"'[\\]]|\"[^\"]*\"|'[^']*')+(?:\\[(?:[^<\"'\\]]|\"[^\"]*\"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\\]\\s*)?>/i,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'internal-subset': {\n\t\t\t\tpattern: /(^[^\\[]*\\[)[\\s\\S]+(?=\\]>$)/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: null // see below\n\t\t\t},\n\t\t\t'string': {\n\t\t\t\tpattern: /\"[^\"]*\"|'[^']*'/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\t'punctuation': /^<!|>$|[[\\]]/,\n\t\t\t'doctype-tag': /^DOCTYPE/i,\n\t\t\t'name': /[^\\s<>'\"]+/\n\t\t}\n\t},\n\t'cdata': {\n\t\tpattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n\t\tgreedy: true\n\t},\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<%]+(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))|(?=[\\s/>])))+)?\\s*\\/?>/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'special-attr': [],\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+)/,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /^=/,\n\t\t\t\t\t\t\talias: 'attr-equals'\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /^(\\s*)[\"']|[\"']$/,\n\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': [\n\t\t{\n\t\t\tpattern: /&[\\da-z]{1,8};/i,\n\t\t\talias: 'named-entity'\n\t\t},\n\t\t/&#x?[\\da-f]{1,8};/i\n\t]\n};\n\nPrism.languages.markup['tag'].inside['attr-value'].inside['entity'] =\n\tPrism.languages.markup['entity'];\nPrism.languages.markup['doctype'].inside['internal-subset'].inside = Prism.languages.markup;\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function (env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&amp;/, '&');\n\t}\n});\n\nObject.defineProperty(Prism.languages.markup.tag, 'addInlined', {\n\t/**\n\t * Adds an inlined language to markup.\n\t *\n\t * An example of an inlined language is CSS with `<style>` tags.\n\t *\n\t * @param {string} tagName The name of the tag that contains the inlined language. This name will be treated as\n\t * case insensitive.\n\t * @param {string} lang The language key.\n\t * @example\n\t * addInlined('style', 'css');\n\t */\n\tvalue: function addInlined(tagName, lang) {\n\t\tvar includedCdataInside = {};\n\t\tincludedCdataInside['language-' + lang] = {\n\t\t\tpattern: /(^<!\\[CDATA\\[)[\\s\\S]+?(?=\\]\\]>$)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages[lang]\n\t\t};\n\t\tincludedCdataInside['cdata'] = /^<!\\[CDATA\\[|\\]\\]>$/i;\n\n\t\tvar inside = {\n\t\t\t'included-cdata': {\n\t\t\t\tpattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n\t\t\t\tinside: includedCdataInside\n\t\t\t}\n\t\t};\n\t\tinside['language-' + lang] = {\n\t\t\tpattern: /[\\s\\S]+/,\n\t\t\tinside: Prism.languages[lang]\n\t\t};\n\n\t\tvar def = {};\n\t\tdef[tagName] = {\n\t\t\tpattern: RegExp(/(<__[^>]*>)(?:<!\\[CDATA\\[(?:[^\\]]|\\](?!\\]>))*\\]\\]>|(?!<!\\[CDATA\\[)[\\s\\S])*?(?=<\\/__>)/.source.replace(/__/g, function () { return tagName; }), 'i'),\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true,\n\t\t\tinside: inside\n\t\t};\n\n\t\tPrism.languages.insertBefore('markup', 'cdata', def);\n\t}\n});\nObject.defineProperty(Prism.languages.markup.tag, 'addAttribute', {\n\t/**\n\t * Adds an pattern to highlight languages embedded in HTML attributes.\n\t *\n\t * An example of an inlined language is CSS with `style` attributes.\n\t *\n\t * @param {string} attrName The name of the tag that contains the inlined language. This name will be treated as\n\t * case insensitive.\n\t * @param {string} lang The language key.\n\t * @example\n\t * addAttribute('style', 'css');\n\t */\n\tvalue: function (attrName, lang) {\n\t\tPrism.languages.markup.tag.inside['special-attr'].push({\n\t\t\tpattern: RegExp(\n\t\t\t\t/(^|[\"'\\s])/.source + '(?:' + attrName + ')' + /\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))/.source,\n\t\t\t\t'i'\n\t\t\t),\n\t\t\tlookbehind: true,\n\t\t\tinside: {\n\t\t\t\t'attr-name': /^[^\\s=]+/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /=[\\s\\S]+/,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'value': {\n\t\t\t\t\t\t\tpattern: /(^=\\s*([\"']|(?![\"'])))\\S[\\s\\S]*(?=\\2$)/,\n\t\t\t\t\t\t\tlookbehind: true,\n\t\t\t\t\t\t\talias: [lang, 'language-' + lang],\n\t\t\t\t\t\t\tinside: Prism.languages[lang]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'punctuation': [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tpattern: /^=/,\n\t\t\t\t\t\t\t\talias: 'attr-equals'\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t/\"|'/\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n});\n\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\nPrism.languages.xml = Prism.languages.extend('markup', {});\nPrism.languages.ssml = Prism.languages.xml;\nPrism.languages.atom = Prism.languages.xml;\nPrism.languages.rss = Prism.languages.xml;\n\n\n/* **********************************************\n     Begin prism-css.js\n********************************************** */\n\n(function (Prism) {\n\n\tvar string = /(?:\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"|'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n])*')/;\n\n\tPrism.languages.css = {\n\t\t'comment': /\\/\\*[\\s\\S]*?\\*\\//,\n\t\t'atrule': {\n\t\t\tpattern: RegExp('@[\\\\w-](?:' + /[^;{\\s\"']|\\s+(?!\\s)/.source + '|' + string.source + ')*?' + /(?:;|(?=\\s*\\{))/.source),\n\t\t\tinside: {\n\t\t\t\t'rule': /^@[\\w-]+/,\n\t\t\t\t'selector-function-argument': {\n\t\t\t\t\tpattern: /(\\bselector\\s*\\(\\s*(?![\\s)]))(?:[^()\\s]|\\s+(?![\\s)])|\\((?:[^()]|\\([^()]*\\))*\\))+(?=\\s*\\))/,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\talias: 'selector'\n\t\t\t\t},\n\t\t\t\t'keyword': {\n\t\t\t\t\tpattern: /(^|[^\\w-])(?:and|not|only|or)(?![\\w-])/,\n\t\t\t\t\tlookbehind: true\n\t\t\t\t}\n\t\t\t\t// See rest below\n\t\t\t}\n\t\t},\n\t\t'url': {\n\t\t\t// https://drafts.csswg.org/css-values-3/#urls\n\t\t\tpattern: RegExp('\\\\burl\\\\((?:' + string.source + '|' + /(?:[^\\\\\\r\\n()\"']|\\\\[\\s\\S])*/.source + ')\\\\)', 'i'),\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'function': /^url/i,\n\t\t\t\t'punctuation': /^\\(|\\)$/,\n\t\t\t\t'string': {\n\t\t\t\t\tpattern: RegExp('^' + string.source + '$'),\n\t\t\t\t\talias: 'url'\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t'selector': {\n\t\t\tpattern: RegExp('(^|[{}\\\\s])[^{}\\\\s](?:[^{};\"\\'\\\\s]|\\\\s+(?![\\\\s{])|' + string.source + ')*(?=\\\\s*\\\\{)'),\n\t\t\tlookbehind: true\n\t\t},\n\t\t'string': {\n\t\t\tpattern: string,\n\t\t\tgreedy: true\n\t\t},\n\t\t'property': {\n\t\t\tpattern: /(^|[^-\\w\\xA0-\\uFFFF])(?!\\s)[-_a-z\\xA0-\\uFFFF](?:(?!\\s)[-\\w\\xA0-\\uFFFF])*(?=\\s*:)/i,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'important': /!important\\b/i,\n\t\t'function': {\n\t\t\tpattern: /(^|[^-a-z0-9])[-a-z0-9]+(?=\\()/i,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'punctuation': /[(){};:,]/\n\t};\n\n\tPrism.languages.css['atrule'].inside.rest = Prism.languages.css;\n\n\tvar markup = Prism.languages.markup;\n\tif (markup) {\n\t\tmarkup.tag.addInlined('style', 'css');\n\t\tmarkup.tag.addAttribute('style', 'css');\n\t}\n\n}(Prism));\n\n\n/* **********************************************\n     Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /(\\b(?:class|extends|implements|instanceof|interface|new|trait)\\s+|\\bcatch\\s+\\()[\\w.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\t'punctuation': /[.\\\\]/\n\t\t}\n\t},\n\t'keyword': /\\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\\b/,\n\t'boolean': /\\b(?:false|true)\\b/,\n\t'function': /\\b\\w+(?=\\()/,\n\t'number': /\\b0x[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,\n\t'operator': /[<>]=?|[!=]=?=?|--?|\\+\\+?|&&?|\\|\\|?|[?*/~^%]/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n     Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'class-name': [\n\t\tPrism.languages.clike['class-name'],\n\t\t{\n\t\t\tpattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$A-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\.(?:constructor|prototype))/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'keyword': [\n\t\t{\n\t\t\tpattern: /((?:^|\\})\\s*)catch\\b/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^.]|\\.\\.\\.\\s*)\\b(?:as|assert(?=\\s*\\{)|async(?=\\s*(?:function\\b|\\(|[$\\w\\xA0-\\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\\s*(?:\\{|$))|for|from(?=\\s*(?:['\"]|$))|function|(?:get|set)(?=\\s*(?:[#\\[$\\w\\xA0-\\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\\b/,\n\t\t\tlookbehind: true\n\t\t},\n\t],\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,\n\t'number': {\n\t\tpattern: RegExp(\n\t\t\t/(^|[^\\w$])/.source +\n\t\t\t'(?:' +\n\t\t\t(\n\t\t\t\t// constant\n\t\t\t\t/NaN|Infinity/.source +\n\t\t\t\t'|' +\n\t\t\t\t// binary integer\n\t\t\t\t/0[bB][01]+(?:_[01]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// octal integer\n\t\t\t\t/0[oO][0-7]+(?:_[0-7]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// hexadecimal integer\n\t\t\t\t/0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// decimal bigint\n\t\t\t\t/\\d+(?:_\\d+)*n/.source +\n\t\t\t\t'|' +\n\t\t\t\t// decimal number (integer or float) but no bigint\n\t\t\t\t/(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?/.source\n\t\t\t) +\n\t\t\t')' +\n\t\t\t/(?![\\w$])/.source\n\t\t),\n\t\tlookbehind: true\n\t},\n\t'operator': /--|\\+\\+|\\*\\*=?|=>|&&=?|\\|\\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\\.{3}|\\?\\?=?|\\?\\.?|[~:]/\n});\n\nPrism.languages.javascript['class-name'][0].pattern = /(\\b(?:class|extends|implements|instanceof|interface|new)\\s+)[\\w.\\\\]+/;\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: RegExp(\n\t\t\t// lookbehind\n\t\t\t// eslint-disable-next-line regexp/no-dupe-characters-character-class\n\t\t\t/((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s]|\\b(?:return|yield))\\s*)/.source +\n\t\t\t// Regex pattern:\n\t\t\t// There are 2 regex patterns here. The RegExp set notation proposal added support for nested character\n\t\t\t// classes if the `v` flag is present. Unfortunately, nested CCs are both context-free and incompatible\n\t\t\t// with the only syntax, so we have to define 2 different regex patterns.\n\t\t\t/\\//.source +\n\t\t\t'(?:' +\n\t\t\t/(?:\\[(?:[^\\]\\\\\\r\\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}/.source +\n\t\t\t'|' +\n\t\t\t// `v` flag syntax. This supports 3 levels of nested character classes.\n\t\t\t/(?:\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.)*\\])*\\])*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source +\n\t\t\t')' +\n\t\t\t// lookahead\n\t\t\t/(?=(?:\\s|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*(?:$|[\\r\\n,.;:})\\]]|\\/\\/))/.source\n\t\t),\n\t\tlookbehind: true,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'regex-source': {\n\t\t\t\tpattern: /^(\\/)[\\s\\S]+(?=\\/[a-z]*$)/,\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'language-regex',\n\t\t\t\tinside: Prism.languages.regex\n\t\t\t},\n\t\t\t'regex-delimiter': /^\\/|\\/$/,\n\t\t\t'regex-flags': /^[a-z]+$/,\n\t\t}\n\t},\n\t// This must be declared before keyword because we use \"function\" inside the look-forward\n\t'function-variable': {\n\t\tpattern: /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*[=:]\\s*(?:async\\s*)?(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^()]*\\))*\\)|(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)\\s*=>))/,\n\t\talias: 'function'\n\t},\n\t'parameter': [\n\t\t{\n\t\t\tpattern: /(function(?:\\s+(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)?\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\))/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$a-z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*=>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /(\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*=>)/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /((?:\\b|\\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\\w\\xA0-\\uFFFF]))(?:(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*)\\(\\s*|\\]\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*\\{)/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t}\n\t],\n\t'constant': /\\b[A-Z](?:[A-Z_]|\\dx?)*\\b/\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'hashbang': {\n\t\tpattern: /^#!.*/,\n\t\tgreedy: true,\n\t\talias: 'comment'\n\t},\n\t'template-string': {\n\t\tpattern: /`(?:\\\\[\\s\\S]|\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}|(?!\\$\\{)[^\\\\`])*`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'template-punctuation': {\n\t\t\t\tpattern: /^`|`$/,\n\t\t\t\talias: 'string'\n\t\t\t},\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /((?:^|[^\\\\])(?:\\\\{2})*)\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t},\n\t'string-property': {\n\t\tpattern: /((?:^|[,{])[ \\t]*)([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\2)[^\\\\\\r\\n])*\\2(?=\\s*:)/m,\n\t\tlookbehind: true,\n\t\tgreedy: true,\n\t\talias: 'property'\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'operator', {\n\t'literal-property': {\n\t\tpattern: /((?:^|[,{])[ \\t]*)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*:)/m,\n\t\tlookbehind: true,\n\t\talias: 'property'\n\t},\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.markup.tag.addInlined('script', 'javascript');\n\n\t// add attribute support for all DOM events.\n\t// https://developer.mozilla.org/en-US/docs/Web/Events#Standard_events\n\tPrism.languages.markup.tag.addAttribute(\n\t\t/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,\n\t\t'javascript'\n\t);\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n\n/* **********************************************\n     Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\n\tif (typeof Prism === 'undefined' || typeof document === 'undefined') {\n\t\treturn;\n\t}\n\n\t// https://developer.mozilla.org/en-US/docs/Web/API/Element/matches#Polyfill\n\tif (!Element.prototype.matches) {\n\t\tElement.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n\t}\n\n\tvar LOADING_MESSAGE = 'Loading\u2026';\n\tvar FAILURE_MESSAGE = function (status, message) {\n\t\treturn '\u2716 Error ' + status + ' while fetching file: ' + message;\n\t};\n\tvar FAILURE_EMPTY_MESSAGE = '\u2716 Error: File does not exist or is empty';\n\n\tvar EXTENSIONS = {\n\t\t'js': 'javascript',\n\t\t'py': 'python',\n\t\t'rb': 'ruby',\n\t\t'ps1': 'powershell',\n\t\t'psm1': 'powershell',\n\t\t'sh': 'bash',\n\t\t'bat': 'batch',\n\t\t'h': 'c',\n\t\t'tex': 'latex'\n\t};\n\n\tvar STATUS_ATTR = 'data-src-status';\n\tvar STATUS_LOADING = 'loading';\n\tvar STATUS_LOADED = 'loaded';\n\tvar STATUS_FAILED = 'failed';\n\n\tvar SELECTOR = 'pre[data-src]:not([' + STATUS_ATTR + '=\"' + STATUS_LOADED + '\"])'\n\t\t+ ':not([' + STATUS_ATTR + '=\"' + STATUS_LOADING + '\"])';\n\n\t/**\n\t * Loads the given file.\n\t *\n\t * @param {string} src The URL or path of the source file to load.\n\t * @param {(result: string) => void} success\n\t * @param {(reason: string) => void} error\n\t */\n\tfunction loadFile(src, success, error) {\n\t\tvar xhr = new XMLHttpRequest();\n\t\txhr.open('GET', src, true);\n\t\txhr.onreadystatechange = function () {\n\t\t\tif (xhr.readyState == 4) {\n\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\tsuccess(xhr.responseText);\n\t\t\t\t} else {\n\t\t\t\t\tif (xhr.status >= 400) {\n\t\t\t\t\t\terror(FAILURE_MESSAGE(xhr.status, xhr.statusText));\n\t\t\t\t\t} else {\n\t\t\t\t\t\terror(FAILURE_EMPTY_MESSAGE);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\txhr.send(null);\n\t}\n\n\t/**\n\t * Parses the given range.\n\t *\n\t * This returns a range with inclusive ends.\n\t *\n\t * @param {string | null | undefined} range\n\t * @returns {[number, number | undefined] | undefined}\n\t */\n\tfunction parseRange(range) {\n\t\tvar m = /^\\s*(\\d+)\\s*(?:(,)\\s*(?:(\\d+)\\s*)?)?$/.exec(range || '');\n\t\tif (m) {\n\t\t\tvar start = Number(m[1]);\n\t\t\tvar comma = m[2];\n\t\t\tvar end = m[3];\n\n\t\t\tif (!comma) {\n\t\t\t\treturn [start, start];\n\t\t\t}\n\t\t\tif (!end) {\n\t\t\t\treturn [start, undefined];\n\t\t\t}\n\t\t\treturn [start, Number(end)];\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tPrism.hooks.add('before-highlightall', function (env) {\n\t\tenv.selector += ', ' + SELECTOR;\n\t});\n\n\tPrism.hooks.add('before-sanity-check', function (env) {\n\t\tvar pre = /** @type {HTMLPreElement} */ (env.element);\n\t\tif (pre.matches(SELECTOR)) {\n\t\t\tenv.code = ''; // fast-path the whole thing and go to complete\n\n\t\t\tpre.setAttribute(STATUS_ATTR, STATUS_LOADING); // mark as loading\n\n\t\t\t// add code element with loading message\n\t\t\tvar code = pre.appendChild(document.createElement('CODE'));\n\t\t\tcode.textContent = LOADING_MESSAGE;\n\n\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\tvar language = env.language;\n\t\t\tif (language === 'none') {\n\t\t\t\t// the language might be 'none' because there is no language set;\n\t\t\t\t// in this case, we want to use the extension as the language\n\t\t\t\tvar extension = (/\\.(\\w+)$/.exec(src) || [, 'none'])[1];\n\t\t\t\tlanguage = EXTENSIONS[extension] || extension;\n\t\t\t}\n\n\t\t\t// set language classes\n\t\t\tPrism.util.setLanguage(code, language);\n\t\t\tPrism.util.setLanguage(pre, language);\n\n\t\t\t// preload the language\n\t\t\tvar autoloader = Prism.plugins.autoloader;\n\t\t\tif (autoloader) {\n\t\t\t\tautoloader.loadLanguages(language);\n\t\t\t}\n\n\t\t\t// load file\n\t\t\tloadFile(\n\t\t\t\tsrc,\n\t\t\t\tfunction (text) {\n\t\t\t\t\t// mark as loaded\n\t\t\t\t\tpre.setAttribute(STATUS_ATTR, STATUS_LOADED);\n\n\t\t\t\t\t// handle data-range\n\t\t\t\t\tvar range = parseRange(pre.getAttribute('data-range'));\n\t\t\t\t\tif (range) {\n\t\t\t\t\t\tvar lines = text.split(/\\r\\n?|\\n/g);\n\n\t\t\t\t\t\t// the range is one-based and inclusive on both ends\n\t\t\t\t\t\tvar start = range[0];\n\t\t\t\t\t\tvar end = range[1] == null ? lines.length : range[1];\n\n\t\t\t\t\t\tif (start < 0) { start += lines.length; }\n\t\t\t\t\t\tstart = Math.max(0, Math.min(start - 1, lines.length));\n\t\t\t\t\t\tif (end < 0) { end += lines.length; }\n\t\t\t\t\t\tend = Math.max(0, Math.min(end, lines.length));\n\n\t\t\t\t\t\ttext = lines.slice(start, end).join('\\n');\n\n\t\t\t\t\t\t// add data-start for line numbers\n\t\t\t\t\t\tif (!pre.hasAttribute('data-start')) {\n\t\t\t\t\t\t\tpre.setAttribute('data-start', String(start + 1));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// highlight code\n\t\t\t\t\tcode.textContent = text;\n\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t},\n\t\t\t\tfunction (error) {\n\t\t\t\t\t// mark as failed\n\t\t\t\t\tpre.setAttribute(STATUS_ATTR, STATUS_FAILED);\n\n\t\t\t\t\tcode.textContent = error;\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t});\n\n\tPrism.plugins.fileHighlight = {\n\t\t/**\n\t\t * Executes the File Highlight plugin for all matching `pre` elements under the given container.\n\t\t *\n\t\t * Note: Elements which are already loaded or currently loading will not be touched by this method.\n\t\t *\n\t\t * @param {ParentNode} [container=document]\n\t\t */\n\t\thighlight: function highlight(container) {\n\t\t\tvar elements = (container || document).querySelectorAll(SELECTOR);\n\n\t\t\tfor (var i = 0, element; (element = elements[i++]);) {\n\t\t\t\tPrism.highlightElement(element);\n\t\t\t}\n\t\t}\n\t};\n\n\tvar logged = false;\n\t/** @deprecated Use `Prism.plugins.fileHighlight.highlight` instead. */\n\tPrism.fileHighlight = function () {\n\t\tif (!logged) {\n\t\t\tconsole.warn('Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead.');\n\t\t\tlogged = true;\n\t\t}\n\t\tPrism.plugins.fileHighlight.highlight.apply(this, arguments);\n\t};\n\n}());\n", "// src/create-anatomy.ts\nvar createAnatomy = (name, parts = []) => ({\n  parts: (...values) => {\n    if (isEmpty(parts)) {\n      return createAnatomy(name, values);\n    }\n    throw new Error(\"createAnatomy().parts(...) should only be called once. Did you mean to use .extendWith(...) ?\");\n  },\n  extendWith: (...values) => createAnatomy(name, [...parts, ...values]),\n  omit: (...values) => createAnatomy(name, parts.filter((part) => !values.includes(part))),\n  rename: (newName) => createAnatomy(newName, parts),\n  keys: () => parts,\n  build: () => [...new Set(parts)].reduce(\n    (prev, part) => Object.assign(prev, {\n      [part]: {\n        selector: [\n          `&[data-scope=\"${toKebabCase(name)}\"][data-part=\"${toKebabCase(part)}\"]`,\n          `& [data-scope=\"${toKebabCase(name)}\"][data-part=\"${toKebabCase(part)}\"]`\n        ].join(\", \"),\n        attrs: { \"data-scope\": toKebabCase(name), \"data-part\": toKebabCase(part) }\n      }\n    }),\n    {}\n  )\n});\nvar toKebabCase = (value) => value.replace(/([A-Z])([A-Z])/g, \"$1-$2\").replace(/([a-z])([A-Z])/g, \"$1-$2\").replace(/[\\s_]+/g, \"-\").toLowerCase();\nvar isEmpty = (v) => v.length === 0;\n\nexport { createAnatomy };\n", "var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n\n// src/caret.ts\nfunction isCaretAtStart(input) {\n  if (!input) return false;\n  try {\n    return input.selectionStart === 0 && input.selectionEnd === 0;\n  } catch {\n    return input.value === \"\";\n  }\n}\nfunction setCaretToEnd(input) {\n  if (!input) return;\n  const start = input.selectionStart ?? 0;\n  const end = input.selectionEnd ?? 0;\n  if (Math.abs(end - start) !== 0) return;\n  if (start !== 0) return;\n  input.setSelectionRange(input.value.length, input.value.length);\n}\n\n// src/shared.ts\nvar clamp = (value) => Math.max(0, Math.min(1, value));\nvar wrap = (v, idx) => {\n  return v.map((_, index) => v[(Math.max(idx, 0) + index) % v.length]);\n};\nvar pipe = (...fns) => (arg) => fns.reduce((acc, fn) => fn(acc), arg);\nvar noop = () => void 0;\nvar isObject = (v) => typeof v === \"object\" && v !== null;\nvar MAX_Z_INDEX = 2147483647;\nvar dataAttr = (guard) => guard ? \"\" : void 0;\nvar ariaAttr = (guard) => guard ? \"true\" : void 0;\n\n// src/node.ts\nvar ELEMENT_NODE = 1;\nvar DOCUMENT_NODE = 9;\nvar DOCUMENT_FRAGMENT_NODE = 11;\nvar isHTMLElement = (el) => isObject(el) && el.nodeType === ELEMENT_NODE && typeof el.nodeName === \"string\";\nvar isDocument = (el) => isObject(el) && el.nodeType === DOCUMENT_NODE;\nvar isWindow = (el) => isObject(el) && el === el.window;\nvar isVisualViewport = (el) => isObject(el) && el.constructor.name === \"VisualViewport\";\nvar getNodeName = (node) => {\n  if (isHTMLElement(node)) return node.localName || \"\";\n  return \"#document\";\n};\nfunction isRootElement(node) {\n  return [\"html\", \"body\", \"#document\"].includes(getNodeName(node));\n}\nvar isNode = (el) => isObject(el) && el.nodeType !== void 0;\nvar isShadowRoot = (el) => isNode(el) && el.nodeType === DOCUMENT_FRAGMENT_NODE && \"host\" in el;\nvar isInputElement = (el) => isHTMLElement(el) && el.localName === \"input\";\nvar isAnchorElement = (el) => !!el?.matches(\"a[href]\");\nvar isElementVisible = (el) => {\n  if (!isHTMLElement(el)) return false;\n  return el.offsetWidth > 0 || el.offsetHeight > 0 || el.getClientRects().length > 0;\n};\nfunction isActiveElement(element) {\n  if (!element) return false;\n  const rootNode = element.getRootNode();\n  return getActiveElement(rootNode) === element;\n}\nvar TEXTAREA_SELECT_REGEX = /(textarea|select)/;\nfunction isEditableElement(el) {\n  if (el == null || !isHTMLElement(el)) return false;\n  try {\n    return isInputElement(el) && el.selectionStart != null || TEXTAREA_SELECT_REGEX.test(el.localName) || el.isContentEditable || el.getAttribute(\"contenteditable\") === \"true\" || el.getAttribute(\"contenteditable\") === \"\";\n  } catch {\n    return false;\n  }\n}\nfunction contains(parent, child) {\n  if (!parent || !child) return false;\n  if (!isHTMLElement(parent) || !isHTMLElement(child)) return false;\n  const rootNode = child.getRootNode?.();\n  if (parent === child) return true;\n  if (parent.contains(child)) return true;\n  if (rootNode && isShadowRoot(rootNode)) {\n    let next = child;\n    while (next) {\n      if (parent === next) return true;\n      next = next.parentNode || next.host;\n    }\n  }\n  return false;\n}\nfunction getDocument(el) {\n  if (isDocument(el)) return el;\n  if (isWindow(el)) return el.document;\n  return el?.ownerDocument ?? document;\n}\nfunction getDocumentElement(el) {\n  return getDocument(el).documentElement;\n}\nfunction getWindow(el) {\n  if (isShadowRoot(el)) return getWindow(el.host);\n  if (isDocument(el)) return el.defaultView ?? window;\n  if (isHTMLElement(el)) return el.ownerDocument?.defaultView ?? window;\n  return window;\n}\nfunction getActiveElement(rootNode) {\n  let activeElement = rootNode.activeElement;\n  while (activeElement?.shadowRoot) {\n    const el = activeElement.shadowRoot.activeElement;\n    if (!el || el === activeElement) break;\n    else activeElement = el;\n  }\n  return activeElement;\n}\nfunction getParentNode(node) {\n  if (getNodeName(node) === \"html\") return node;\n  const result = node.assignedSlot || node.parentNode || isShadowRoot(node) && node.host || getDocumentElement(node);\n  return isShadowRoot(result) ? result.host : result;\n}\nfunction getRootNode(node) {\n  let result;\n  try {\n    result = node.getRootNode({ composed: true });\n    if (isDocument(result) || isShadowRoot(result)) return result;\n  } catch {\n  }\n  return node.ownerDocument ?? document;\n}\n\n// src/computed-style.ts\nvar styleCache = /* @__PURE__ */ new WeakMap();\nfunction getComputedStyle(el) {\n  if (!styleCache.has(el)) {\n    styleCache.set(el, getWindow(el).getComputedStyle(el));\n  }\n  return styleCache.get(el);\n}\n\n// src/controller.ts\nvar INTERACTIVE_CONTAINER_ROLE = /* @__PURE__ */ new Set([\"menu\", \"listbox\", \"dialog\", \"grid\", \"tree\", \"region\"]);\nvar isInteractiveContainerRole = (role) => INTERACTIVE_CONTAINER_ROLE.has(role);\nvar getAriaControls = (element) => element.getAttribute(\"aria-controls\")?.split(\" \") || [];\nfunction isControlledElement(container, element) {\n  const visitedIds = /* @__PURE__ */ new Set();\n  const rootNode = getRootNode(container);\n  const checkElement = (searchRoot) => {\n    const controllingElements = searchRoot.querySelectorAll(\"[aria-controls]\");\n    for (const controller of controllingElements) {\n      if (controller.getAttribute(\"aria-expanded\") !== \"true\") continue;\n      const controlledIds = getAriaControls(controller);\n      for (const id of controlledIds) {\n        if (!id || visitedIds.has(id)) continue;\n        visitedIds.add(id);\n        const controlledElement = rootNode.getElementById(id);\n        if (controlledElement) {\n          const role = controlledElement.getAttribute(\"role\");\n          const modal = controlledElement.getAttribute(\"aria-modal\") === \"true\";\n          if (role && isInteractiveContainerRole(role) && !modal) {\n            if (controlledElement === element || controlledElement.contains(element)) {\n              return true;\n            }\n            if (checkElement(controlledElement)) {\n              return true;\n            }\n          }\n        }\n      }\n    }\n    return false;\n  };\n  return checkElement(container);\n}\nfunction findControlledElements(searchRoot, callback) {\n  const rootNode = getRootNode(searchRoot);\n  const visitedIds = /* @__PURE__ */ new Set();\n  const findRecursive = (root) => {\n    const controllingElements = root.querySelectorAll(\"[aria-controls]\");\n    for (const controller of controllingElements) {\n      if (controller.getAttribute(\"aria-expanded\") !== \"true\") continue;\n      const controlledIds = getAriaControls(controller);\n      for (const id of controlledIds) {\n        if (!id || visitedIds.has(id)) continue;\n        visitedIds.add(id);\n        const controlledElement = rootNode.getElementById(id);\n        if (controlledElement) {\n          const role = controlledElement.getAttribute(\"role\");\n          const modal = controlledElement.getAttribute(\"aria-modal\") === \"true\";\n          if (role && INTERACTIVE_CONTAINER_ROLE.has(role) && !modal) {\n            callback(controlledElement);\n            findRecursive(controlledElement);\n          }\n        }\n      }\n    }\n  };\n  findRecursive(searchRoot);\n}\nfunction getControlledElements(container) {\n  const controlledElements = /* @__PURE__ */ new Set();\n  findControlledElements(container, (controlledElement) => {\n    if (!container.contains(controlledElement)) {\n      controlledElements.add(controlledElement);\n    }\n  });\n  return Array.from(controlledElements);\n}\nfunction isInteractiveContainerElement(element) {\n  const role = element.getAttribute(\"role\");\n  return Boolean(role && INTERACTIVE_CONTAINER_ROLE.has(role));\n}\nfunction isControllerElement(element) {\n  return element.hasAttribute(\"aria-controls\") && element.getAttribute(\"aria-expanded\") === \"true\";\n}\nfunction hasControllerElements(element) {\n  if (isControllerElement(element)) return true;\n  return Boolean(element.querySelector?.('[aria-controls][aria-expanded=\"true\"]'));\n}\nfunction isControlledByExpandedController(element) {\n  if (!element.id) return false;\n  const rootNode = getRootNode(element);\n  const escapedId = CSS.escape(element.id);\n  const selector = `[aria-controls~=\"${escapedId}\"][aria-expanded=\"true\"], [aria-controls=\"${escapedId}\"][aria-expanded=\"true\"]`;\n  const controller = rootNode.querySelector(selector);\n  return Boolean(controller && isInteractiveContainerElement(element));\n}\n\n// src/data-url.ts\nfunction getDataUrl(svg, opts) {\n  const { type, quality = 0.92, background } = opts;\n  if (!svg) throw new Error(\"[zag-js > getDataUrl]: Could not find the svg element\");\n  const win = getWindow(svg);\n  const doc = win.document;\n  const svgBounds = svg.getBoundingClientRect();\n  const svgClone = svg.cloneNode(true);\n  if (!svgClone.hasAttribute(\"viewBox\")) {\n    svgClone.setAttribute(\"viewBox\", `0 0 ${svgBounds.width} ${svgBounds.height}`);\n  }\n  const serializer = new win.XMLSerializer();\n  const source = '<?xml version=\"1.0\" standalone=\"no\"?>\\r\\n' + serializer.serializeToString(svgClone);\n  const svgString = \"data:image/svg+xml;charset=utf-8,\" + encodeURIComponent(source);\n  if (type === \"image/svg+xml\") {\n    return Promise.resolve(svgString).then((str) => {\n      svgClone.remove();\n      return str;\n    });\n  }\n  const dpr = win.devicePixelRatio || 1;\n  const canvas = doc.createElement(\"canvas\");\n  const image = new win.Image();\n  image.src = svgString;\n  canvas.width = svgBounds.width * dpr;\n  canvas.height = svgBounds.height * dpr;\n  const context = canvas.getContext(\"2d\");\n  if (type === \"image/jpeg\" || background) {\n    context.fillStyle = background || \"white\";\n    context.fillRect(0, 0, canvas.width, canvas.height);\n  }\n  return new Promise((resolve) => {\n    image.onload = () => {\n      context?.drawImage(image, 0, 0, canvas.width, canvas.height);\n      resolve(canvas.toDataURL(type, quality));\n      svgClone.remove();\n    };\n  });\n}\n\n// src/platform.ts\nvar isDom = () => typeof document !== \"undefined\";\nfunction getPlatform() {\n  const agent = navigator.userAgentData;\n  return agent?.platform ?? navigator.platform;\n}\nfunction getUserAgent() {\n  const ua2 = navigator.userAgentData;\n  if (ua2 && Array.isArray(ua2.brands)) {\n    return ua2.brands.map(({ brand, version }) => `${brand}/${version}`).join(\" \");\n  }\n  return navigator.userAgent;\n}\nvar pt = (v) => isDom() && v.test(getPlatform());\nvar ua = (v) => isDom() && v.test(getUserAgent());\nvar vn = (v) => isDom() && v.test(navigator.vendor);\nvar isTouchDevice = () => isDom() && !!navigator.maxTouchPoints;\nvar isIPhone = () => pt(/^iPhone/i);\nvar isIPad = () => pt(/^iPad/i) || isMac() && navigator.maxTouchPoints > 1;\nvar isIos = () => isIPhone() || isIPad();\nvar isApple = () => isMac() || isIos();\nvar isMac = () => pt(/^Mac/i);\nvar isSafari = () => isApple() && vn(/apple/i);\nvar isFirefox = () => ua(/Firefox/i);\nvar isChrome = () => ua(/Chrome/i);\nvar isWebKit = () => ua(/AppleWebKit/i) && !isChrome();\nvar isAndroid = () => ua(/Android/i);\n\n// src/event.ts\nfunction getBeforeInputValue(event) {\n  const { selectionStart, selectionEnd, value } = event.currentTarget;\n  const data = event.data;\n  return value.slice(0, selectionStart) + (data ?? \"\") + value.slice(selectionEnd);\n}\nfunction getComposedPath(event) {\n  return event.composedPath?.() ?? event.nativeEvent?.composedPath?.();\n}\nfunction getEventTarget(event) {\n  const composedPath = getComposedPath(event);\n  return composedPath?.[0] ?? event.target;\n}\nfunction isOpeningInNewTab(event) {\n  const element = event.currentTarget;\n  if (!element) return false;\n  const validElement = element.matches(\"a[href], button[type='submit'], input[type='submit']\");\n  if (!validElement) return false;\n  const isMiddleClick = event.button === 1;\n  const isModKeyClick = isCtrlOrMetaKey(event);\n  return isMiddleClick || isModKeyClick;\n}\nfunction isDownloadingEvent(event) {\n  const element = event.currentTarget;\n  if (!element) return false;\n  const localName = element.localName;\n  if (!event.altKey) return false;\n  if (localName === \"a\") return true;\n  if (localName === \"button\" && element.type === \"submit\") return true;\n  if (localName === \"input\" && element.type === \"submit\") return true;\n  return false;\n}\nfunction isComposingEvent(event) {\n  return getNativeEvent(event).isComposing || event.keyCode === 229;\n}\nfunction isKeyboardClick(e) {\n  return e.detail === 0 || e.clientX === 0 && e.clientY === 0;\n}\nfunction isCtrlOrMetaKey(e) {\n  if (isMac()) return e.metaKey;\n  return e.ctrlKey;\n}\nfunction isPrintableKey(e) {\n  return e.key.length === 1 && !e.ctrlKey && !e.metaKey;\n}\nfunction isVirtualPointerEvent(e) {\n  return e.width === 0 && e.height === 0 || e.width === 1 && e.height === 1 && e.pressure === 0 && e.detail === 0 && e.pointerType === \"mouse\";\n}\nfunction isVirtualClick(e) {\n  if (e.pointerType === \"\" && e.isTrusted) return true;\n  if (isAndroid() && e.pointerType) {\n    return e.type === \"click\" && e.buttons === 1;\n  }\n  return e.detail === 0 && !e.pointerType;\n}\nvar isLeftClick = (e) => e.button === 0;\nvar isContextMenuEvent = (e) => {\n  return e.button === 2 || isMac() && e.ctrlKey && e.button === 0;\n};\nvar isModifierKey = (e) => e.ctrlKey || e.altKey || e.metaKey;\nvar isTouchEvent = (event) => \"touches\" in event && event.touches.length > 0;\nvar keyMap = {\n  Up: \"ArrowUp\",\n  Down: \"ArrowDown\",\n  Esc: \"Escape\",\n  \" \": \"Space\",\n  \",\": \"Comma\",\n  Left: \"ArrowLeft\",\n  Right: \"ArrowRight\"\n};\nvar rtlKeyMap = {\n  ArrowLeft: \"ArrowRight\",\n  ArrowRight: \"ArrowLeft\"\n};\nfunction getEventKey(event, options = {}) {\n  const { dir = \"ltr\", orientation = \"horizontal\" } = options;\n  let key = event.key;\n  key = keyMap[key] ?? key;\n  const isRtl = dir === \"rtl\" && orientation === \"horizontal\";\n  if (isRtl && key in rtlKeyMap) key = rtlKeyMap[key];\n  return key;\n}\nfunction getNativeEvent(event) {\n  return event.nativeEvent ?? event;\n}\nvar pageKeys = /* @__PURE__ */ new Set([\"PageUp\", \"PageDown\"]);\nvar arrowKeys = /* @__PURE__ */ new Set([\"ArrowUp\", \"ArrowDown\", \"ArrowLeft\", \"ArrowRight\"]);\nfunction getEventStep(event) {\n  if (event.ctrlKey || event.metaKey) {\n    return 0.1;\n  } else {\n    const isPageKey = pageKeys.has(event.key);\n    const isSkipKey = isPageKey || event.shiftKey && arrowKeys.has(event.key);\n    return isSkipKey ? 10 : 1;\n  }\n}\nfunction getEventPoint(event, type = \"client\") {\n  const point = isTouchEvent(event) ? event.touches[0] || event.changedTouches[0] : event;\n  return { x: point[`${type}X`], y: point[`${type}Y`] };\n}\nvar addDomEvent = (target, eventName, handler, options) => {\n  const node = typeof target === \"function\" ? target() : target;\n  node?.addEventListener(eventName, handler, options);\n  return () => {\n    node?.removeEventListener(eventName, handler, options);\n  };\n};\nvar isSelfTarget = (event) => {\n  const composedPath = getComposedPath(event);\n  const target = composedPath?.[0] ?? event.target;\n  return event.currentTarget === target;\n};\n\n// src/form.ts\nfunction getDescriptor(el, options) {\n  const { type = \"HTMLInputElement\", property = \"value\" } = options;\n  const proto = getWindow(el)[type].prototype;\n  return Object.getOwnPropertyDescriptor(proto, property) ?? {};\n}\nfunction getElementType(el) {\n  if (el.localName === \"input\") return \"HTMLInputElement\";\n  if (el.localName === \"textarea\") return \"HTMLTextAreaElement\";\n  if (el.localName === \"select\") return \"HTMLSelectElement\";\n}\nfunction setElementValue(el, value, property = \"value\") {\n  if (!el) return;\n  const type = getElementType(el);\n  if (type) {\n    const descriptor = getDescriptor(el, { type, property });\n    descriptor.set?.call(el, value);\n  }\n  el.setAttribute(property, value);\n}\nfunction setElementChecked(el, checked) {\n  if (!el) return;\n  const descriptor = getDescriptor(el, { type: \"HTMLInputElement\", property: \"checked\" });\n  descriptor.set?.call(el, checked);\n  if (checked) el.setAttribute(\"checked\", \"\");\n  else el.removeAttribute(\"checked\");\n}\nfunction dispatchInputValueEvent(el, options) {\n  const { value, bubbles = true } = options;\n  if (!el) return;\n  const win = getWindow(el);\n  if (!(el instanceof win.HTMLInputElement)) return;\n  setElementValue(el, `${value}`);\n  el.dispatchEvent(new win.Event(\"input\", { bubbles }));\n}\nfunction dispatchInputCheckedEvent(el, options) {\n  const { checked, bubbles = true } = options;\n  if (!el) return;\n  const win = getWindow(el);\n  if (!(el instanceof win.HTMLInputElement)) return;\n  setElementChecked(el, checked);\n  el.dispatchEvent(new win.Event(\"click\", { bubbles }));\n}\nfunction getClosestForm(el) {\n  return isFormElement(el) ? el.form : el.closest(\"form\");\n}\nfunction isFormElement(el) {\n  return el.matches(\"textarea, input, select, button\");\n}\nfunction trackFormReset(el, callback) {\n  if (!el) return;\n  const form = getClosestForm(el);\n  const onReset = (e) => {\n    if (e.defaultPrevented) return;\n    callback();\n  };\n  form?.addEventListener(\"reset\", onReset, { passive: true });\n  return () => form?.removeEventListener(\"reset\", onReset);\n}\nfunction trackFieldsetDisabled(el, callback) {\n  const fieldset = el?.closest(\"fieldset\");\n  if (!fieldset) return;\n  callback(fieldset.disabled);\n  const win = getWindow(fieldset);\n  const obs = new win.MutationObserver(() => callback(fieldset.disabled));\n  obs.observe(fieldset, {\n    attributes: true,\n    attributeFilter: [\"disabled\"]\n  });\n  return () => obs.disconnect();\n}\nfunction trackFormControl(el, options) {\n  if (!el) return;\n  const { onFieldsetDisabledChange, onFormReset } = options;\n  const cleanups = [trackFormReset(el, onFormReset), trackFieldsetDisabled(el, onFieldsetDisabledChange)];\n  return () => cleanups.forEach((cleanup) => cleanup?.());\n}\n\n// src/tabbable.ts\nvar isFrame = (el) => isHTMLElement(el) && el.tagName === \"IFRAME\";\nvar NATURALLY_TABBABLE_REGEX = /^(audio|video|details)$/;\nfunction parseTabIndex(el) {\n  const attr = el.getAttribute(\"tabindex\");\n  if (!attr) return NaN;\n  return parseInt(attr, 10);\n}\nvar hasTabIndex = (el) => !Number.isNaN(parseTabIndex(el));\nvar hasNegativeTabIndex = (el) => parseTabIndex(el) < 0;\nfunction getShadowRootForNode(element, getShadowRoot) {\n  if (!getShadowRoot) return null;\n  if (getShadowRoot === true) {\n    return element.shadowRoot || null;\n  }\n  const result = getShadowRoot(element);\n  return (result === true ? element.shadowRoot : result) || null;\n}\nfunction collectElementsWithShadowDOM(elements, getShadowRoot, filterFn) {\n  const allElements = [...elements];\n  const toProcess = [...elements];\n  const processed = /* @__PURE__ */ new Set();\n  const positionMap = /* @__PURE__ */ new Map();\n  elements.forEach((el, i) => positionMap.set(el, i));\n  let processIndex = 0;\n  while (processIndex < toProcess.length) {\n    const element = toProcess[processIndex++];\n    if (!element || processed.has(element)) continue;\n    processed.add(element);\n    const shadowRoot = getShadowRootForNode(element, getShadowRoot);\n    if (shadowRoot) {\n      const shadowElements = Array.from(shadowRoot.querySelectorAll(focusableSelector)).filter(filterFn);\n      const hostIndex = positionMap.get(element);\n      if (hostIndex !== void 0) {\n        const insertPosition = hostIndex + 1;\n        allElements.splice(insertPosition, 0, ...shadowElements);\n        shadowElements.forEach((el, i) => {\n          positionMap.set(el, insertPosition + i);\n        });\n        for (let i = insertPosition + shadowElements.length; i < allElements.length; i++) {\n          positionMap.set(allElements[i], i);\n        }\n      } else {\n        const insertPosition = allElements.length;\n        allElements.push(...shadowElements);\n        shadowElements.forEach((el, i) => {\n          positionMap.set(el, insertPosition + i);\n        });\n      }\n      toProcess.push(...shadowElements);\n    }\n  }\n  return allElements;\n}\nvar focusableSelector = \"input:not([type='hidden']):not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], button:not([disabled]), [tabindex], iframe, object, embed, area[href], audio[controls], video[controls], [contenteditable]:not([contenteditable='false']), details > summary:first-of-type\";\nvar getFocusables = (container, options = {}) => {\n  if (!container) return [];\n  const { includeContainer = false, getShadowRoot } = options;\n  const elements = Array.from(container.querySelectorAll(focusableSelector));\n  const include = includeContainer == true || includeContainer == \"if-empty\" && elements.length === 0;\n  if (include && isHTMLElement(container) && isFocusable(container)) {\n    elements.unshift(container);\n  }\n  const focusableElements = [];\n  for (const element of elements) {\n    if (!isFocusable(element)) continue;\n    if (isFrame(element) && element.contentDocument) {\n      const frameBody = element.contentDocument.body;\n      focusableElements.push(...getFocusables(frameBody, { getShadowRoot }));\n      continue;\n    }\n    focusableElements.push(element);\n  }\n  if (getShadowRoot) {\n    return collectElementsWithShadowDOM(focusableElements, getShadowRoot, isFocusable);\n  }\n  return focusableElements;\n};\nfunction isFocusable(element) {\n  if (!isHTMLElement(element) || element.closest(\"[inert]\")) return false;\n  return element.matches(focusableSelector) && isElementVisible(element);\n}\nfunction getFirstFocusable(container, options = {}) {\n  const [first] = getFocusables(container, options);\n  return first || null;\n}\nfunction getTabbables(container, options = {}) {\n  if (!container) return [];\n  const { includeContainer, getShadowRoot } = options;\n  const elements = Array.from(container.querySelectorAll(focusableSelector));\n  if (includeContainer && isTabbable(container)) {\n    elements.unshift(container);\n  }\n  const tabbableElements = [];\n  for (const element of elements) {\n    if (!isTabbable(element)) continue;\n    if (isFrame(element) && element.contentDocument) {\n      const frameBody = element.contentDocument.body;\n      tabbableElements.push(...getTabbables(frameBody, { getShadowRoot }));\n      continue;\n    }\n    tabbableElements.push(element);\n  }\n  if (getShadowRoot) {\n    const allElements = collectElementsWithShadowDOM(tabbableElements, getShadowRoot, isTabbable);\n    if (!allElements.length && includeContainer) {\n      return elements;\n    }\n    return allElements;\n  }\n  if (!tabbableElements.length && includeContainer) {\n    return elements;\n  }\n  return tabbableElements;\n}\nfunction isTabbable(el) {\n  if (isHTMLElement(el) && el.tabIndex > 0) return true;\n  return isFocusable(el) && !hasNegativeTabIndex(el);\n}\nfunction getFirstTabbable(container, options = {}) {\n  const [first] = getTabbables(container, options);\n  return first || null;\n}\nfunction getLastTabbable(container, options = {}) {\n  const elements = getTabbables(container, options);\n  return elements[elements.length - 1] || null;\n}\nfunction getTabbableEdges(container, options = {}) {\n  const elements = getTabbables(container, options);\n  const first = elements[0] || null;\n  const last = elements[elements.length - 1] || null;\n  return [first, last];\n}\nfunction getNextTabbable(container, options = {}) {\n  const { current, getShadowRoot } = options;\n  const tabbables = getTabbables(container, { getShadowRoot });\n  const doc = container?.ownerDocument || document;\n  const currentElement = current ?? getActiveElement(doc);\n  if (!currentElement) return null;\n  const index = tabbables.indexOf(currentElement);\n  return tabbables[index + 1] || null;\n}\nfunction getTabIndex(node) {\n  if (node.tabIndex < 0) {\n    if ((NATURALLY_TABBABLE_REGEX.test(node.localName) || isEditableElement(node)) && !hasTabIndex(node)) {\n      return 0;\n    }\n  }\n  return node.tabIndex;\n}\n\n// src/initial-focus.ts\nfunction getInitialFocus(options) {\n  const { root, getInitialEl, filter, enabled = true } = options;\n  if (!enabled) return;\n  let node = null;\n  node || (node = typeof getInitialEl === \"function\" ? getInitialEl() : getInitialEl);\n  node || (node = root?.querySelector(\"[data-autofocus],[autofocus]\"));\n  if (!node) {\n    const tabbables = getTabbables(root);\n    node = filter ? tabbables.filter(filter)[0] : tabbables[0];\n  }\n  return node || root || void 0;\n}\nfunction isValidTabEvent(event) {\n  const container = event.currentTarget;\n  if (!container) return false;\n  const [firstTabbable, lastTabbable] = getTabbableEdges(container);\n  if (isActiveElement(firstTabbable) && event.shiftKey) return false;\n  if (isActiveElement(lastTabbable) && !event.shiftKey) return false;\n  if (!firstTabbable && !lastTabbable) return false;\n  return true;\n}\n\n// src/raf.ts\nvar AnimationFrame = class _AnimationFrame {\n  constructor() {\n    __publicField(this, \"id\", null);\n    __publicField(this, \"fn_cleanup\");\n    __publicField(this, \"cleanup\", () => {\n      this.cancel();\n    });\n  }\n  static create() {\n    return new _AnimationFrame();\n  }\n  request(fn) {\n    this.cancel();\n    this.id = globalThis.requestAnimationFrame(() => {\n      this.id = null;\n      this.fn_cleanup = fn?.();\n    });\n  }\n  cancel() {\n    if (this.id !== null) {\n      globalThis.cancelAnimationFrame(this.id);\n      this.id = null;\n    }\n    this.fn_cleanup?.();\n    this.fn_cleanup = void 0;\n  }\n  isActive() {\n    return this.id !== null;\n  }\n};\nfunction raf(fn) {\n  const frame = AnimationFrame.create();\n  frame.request(fn);\n  return frame.cleanup;\n}\nfunction nextTick(fn) {\n  const set = /* @__PURE__ */ new Set();\n  function raf2(fn2) {\n    const id = globalThis.requestAnimationFrame(fn2);\n    set.add(() => globalThis.cancelAnimationFrame(id));\n  }\n  raf2(() => raf2(fn));\n  return function cleanup() {\n    set.forEach((fn2) => fn2());\n  };\n}\nfunction queueBeforeEvent(el, type, cb) {\n  const cancelTimer = raf(() => {\n    el.removeEventListener(type, exec, true);\n    cb();\n  });\n  const exec = () => {\n    cancelTimer();\n    cb();\n  };\n  el.addEventListener(type, exec, { once: true, capture: true });\n  return cancelTimer;\n}\n\n// src/mutation-observer.ts\nfunction observeAttributesImpl(node, options) {\n  if (!node) return;\n  const { attributes, callback: fn } = options;\n  const win = node.ownerDocument.defaultView || window;\n  const obs = new win.MutationObserver((changes) => {\n    for (const change of changes) {\n      if (change.type === \"attributes\" && change.attributeName && attributes.includes(change.attributeName)) {\n        fn(change);\n      }\n    }\n  });\n  obs.observe(node, { attributes: true, attributeFilter: attributes });\n  return () => obs.disconnect();\n}\nfunction observeAttributes(nodeOrFn, options) {\n  const { defer } = options;\n  const func = defer ? raf : (v) => v();\n  const cleanups = [];\n  cleanups.push(\n    func(() => {\n      const node = typeof nodeOrFn === \"function\" ? nodeOrFn() : nodeOrFn;\n      cleanups.push(observeAttributesImpl(node, options));\n    })\n  );\n  return () => {\n    cleanups.forEach((fn) => fn?.());\n  };\n}\nfunction observeChildrenImpl(node, options) {\n  const { callback: fn } = options;\n  if (!node) return;\n  const win = node.ownerDocument.defaultView || window;\n  const obs = new win.MutationObserver(fn);\n  obs.observe(node, { childList: true, subtree: true });\n  return () => obs.disconnect();\n}\nfunction observeChildren(nodeOrFn, options) {\n  const { defer } = options;\n  const func = defer ? raf : (v) => v();\n  const cleanups = [];\n  cleanups.push(\n    func(() => {\n      const node = typeof nodeOrFn === \"function\" ? nodeOrFn() : nodeOrFn;\n      cleanups.push(observeChildrenImpl(node, options));\n    })\n  );\n  return () => {\n    cleanups.forEach((fn) => fn?.());\n  };\n}\n\n// src/navigate.ts\nfunction navigate(items, current, options = {}) {\n  if (!current) return null;\n  const { orientation = \"both\", loop = true, dir = \"ltr\", key } = options;\n  if (!items.length || !key) return null;\n  const isVertical = key === \"ArrowUp\" || key === \"ArrowDown\";\n  const isHorizontal = key === \"ArrowLeft\" || key === \"ArrowRight\";\n  if (!isVertical && !isHorizontal && key !== \"Home\" && key !== \"End\") return null;\n  if (orientation === \"vertical\" && isHorizontal || orientation === \"horizontal\" && isVertical) return null;\n  if (key === \"Home\") return items[0] || null;\n  if (key === \"End\") return items[items.length - 1] || null;\n  const idx = items.indexOf(current);\n  if (idx === -1) return null;\n  let isForward;\n  if (orientation === \"both\") {\n    isForward = key === \"ArrowDown\" || (dir === \"ltr\" ? key === \"ArrowRight\" : key === \"ArrowLeft\");\n  } else {\n    isForward = isVertical ? key === \"ArrowDown\" : dir === \"ltr\" ? key === \"ArrowRight\" : key === \"ArrowLeft\";\n  }\n  const nextIdx = isForward ? loop ? (idx + 1) % items.length : Math.min(idx + 1, items.length - 1) : loop ? (idx - 1 + items.length) % items.length : Math.max(0, idx - 1);\n  return items[nextIdx] || null;\n}\nfunction clickIfLink(el) {\n  const click = () => {\n    const win = getWindow(el);\n    el.dispatchEvent(new win.MouseEvent(\"click\"));\n  };\n  if (isFirefox()) {\n    queueBeforeEvent(el, \"keyup\", click);\n  } else {\n    queueMicrotask(click);\n  }\n}\n\n// src/overflow.ts\nfunction getNearestOverflowAncestor(el) {\n  const parentNode = getParentNode(el);\n  if (isRootElement(parentNode)) return getDocument(parentNode).body;\n  if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) return parentNode;\n  return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(el, list = []) {\n  const scrollableAncestor = getNearestOverflowAncestor(el);\n  const isBody = scrollableAncestor === el.ownerDocument.body;\n  const win = getWindow(scrollableAncestor);\n  if (isBody) {\n    return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : []);\n  }\n  return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, []));\n}\nvar getElementRect = (el) => {\n  if (isHTMLElement(el)) return el.getBoundingClientRect();\n  if (isVisualViewport(el)) return { top: 0, left: 0, bottom: el.height, right: el.width };\n  return { top: 0, left: 0, bottom: el.innerHeight, right: el.innerWidth };\n};\nfunction isInView(el, ancestor) {\n  if (!isHTMLElement(el)) return true;\n  const ancestorRect = getElementRect(ancestor);\n  const elRect = el.getBoundingClientRect();\n  return elRect.top >= ancestorRect.top && elRect.left >= ancestorRect.left && elRect.bottom <= ancestorRect.bottom && elRect.right <= ancestorRect.right;\n}\nvar OVERFLOW_RE = /auto|scroll|overlay|hidden|clip/;\nvar nonOverflowValues = /* @__PURE__ */ new Set([\"inline\", \"contents\"]);\nfunction isOverflowElement(el) {\n  const win = getWindow(el);\n  const { overflow, overflowX, overflowY, display } = win.getComputedStyle(el);\n  return OVERFLOW_RE.test(overflow + overflowY + overflowX) && !nonOverflowValues.has(display);\n}\nfunction isScrollable(el) {\n  return el.scrollHeight > el.clientHeight || el.scrollWidth > el.clientWidth;\n}\nfunction scrollIntoView(el, options) {\n  const { rootEl, ...scrollOptions } = options || {};\n  if (!el || !rootEl) return;\n  if (!isOverflowElement(rootEl) || !isScrollable(rootEl)) return;\n  el.scrollIntoView(scrollOptions);\n}\nfunction getScrollPosition(element) {\n  if (isHTMLElement(element)) {\n    return { scrollLeft: element.scrollLeft, scrollTop: element.scrollTop };\n  }\n  return { scrollLeft: element.scrollX, scrollTop: element.scrollY };\n}\n\n// src/point.ts\nfunction getRelativePoint(point, element) {\n  const { left, top, width, height } = element.getBoundingClientRect();\n  const offset = { x: point.x - left, y: point.y - top };\n  const percent = { x: clamp(offset.x / width), y: clamp(offset.y / height) };\n  function getPercentValue(options = {}) {\n    const { dir = \"ltr\", orientation = \"horizontal\", inverted } = options;\n    const invertX = typeof inverted === \"object\" ? inverted.x : inverted;\n    const invertY = typeof inverted === \"object\" ? inverted.y : inverted;\n    if (orientation === \"horizontal\") {\n      return dir === \"rtl\" || invertX ? 1 - percent.x : percent.x;\n    }\n    return invertY ? 1 - percent.y : percent.y;\n  }\n  return { offset, percent, getPercentValue };\n}\n\n// src/pointer-lock.ts\nfunction requestPointerLock(doc, fn) {\n  const body = doc.body;\n  const supported = \"pointerLockElement\" in doc || \"mozPointerLockElement\" in doc;\n  const isLocked = () => !!doc.pointerLockElement;\n  function onPointerChange() {\n    fn?.(isLocked());\n  }\n  function onPointerError(event) {\n    if (isLocked()) fn?.(false);\n    console.error(\"PointerLock error occurred:\", event);\n    doc.exitPointerLock();\n  }\n  if (!supported) return;\n  try {\n    body.requestPointerLock();\n  } catch {\n  }\n  const cleanup = [\n    addDomEvent(doc, \"pointerlockchange\", onPointerChange, false),\n    addDomEvent(doc, \"pointerlockerror\", onPointerError, false)\n  ];\n  return () => {\n    cleanup.forEach((cleanup2) => cleanup2());\n    doc.exitPointerLock();\n  };\n}\n\n// src/text-selection.ts\nvar state = \"default\";\nvar userSelect = \"\";\nvar elementMap = /* @__PURE__ */ new WeakMap();\nfunction disableTextSelectionImpl(options = {}) {\n  const { target, doc } = options;\n  const docNode = doc ?? document;\n  const rootEl = docNode.documentElement;\n  if (isIos()) {\n    if (state === \"default\") {\n      userSelect = rootEl.style.webkitUserSelect;\n      rootEl.style.webkitUserSelect = \"none\";\n    }\n    state = \"disabled\";\n  } else if (target) {\n    elementMap.set(target, target.style.userSelect);\n    target.style.userSelect = \"none\";\n  }\n  return () => restoreTextSelection({ target, doc: docNode });\n}\nfunction restoreTextSelection(options = {}) {\n  const { target, doc } = options;\n  const docNode = doc ?? document;\n  const rootEl = docNode.documentElement;\n  if (isIos()) {\n    if (state !== \"disabled\") return;\n    state = \"restoring\";\n    setTimeout(() => {\n      nextTick(() => {\n        if (state === \"restoring\") {\n          if (rootEl.style.webkitUserSelect === \"none\") {\n            rootEl.style.webkitUserSelect = userSelect || \"\";\n          }\n          userSelect = \"\";\n          state = \"default\";\n        }\n      });\n    }, 300);\n  } else {\n    if (target && elementMap.has(target)) {\n      const prevUserSelect = elementMap.get(target);\n      if (target.style.userSelect === \"none\") {\n        target.style.userSelect = prevUserSelect ?? \"\";\n      }\n      if (target.getAttribute(\"style\") === \"\") {\n        target.removeAttribute(\"style\");\n      }\n      elementMap.delete(target);\n    }\n  }\n}\nfunction disableTextSelection(options = {}) {\n  const { defer, target, ...restOptions } = options;\n  const func = defer ? raf : (v) => v();\n  const cleanups = [];\n  cleanups.push(\n    func(() => {\n      const node = typeof target === \"function\" ? target() : target;\n      cleanups.push(disableTextSelectionImpl({ ...restOptions, target: node }));\n    })\n  );\n  return () => {\n    cleanups.forEach((fn) => fn?.());\n  };\n}\n\n// src/pointer-move.ts\nfunction trackPointerMove(doc, handlers) {\n  const { onPointerMove, onPointerUp } = handlers;\n  const handleMove = (event) => {\n    const point = getEventPoint(event);\n    const distance = Math.sqrt(point.x ** 2 + point.y ** 2);\n    const moveBuffer = event.pointerType === \"touch\" ? 10 : 5;\n    if (distance < moveBuffer) return;\n    if (event.pointerType === \"mouse\" && event.buttons === 0) {\n      handleUp(event);\n      return;\n    }\n    onPointerMove({ point, event });\n  };\n  const handleUp = (event) => {\n    const point = getEventPoint(event);\n    onPointerUp({ point, event });\n  };\n  const cleanups = [\n    addDomEvent(doc, \"pointermove\", handleMove, false),\n    addDomEvent(doc, \"pointerup\", handleUp, false),\n    addDomEvent(doc, \"pointercancel\", handleUp, false),\n    addDomEvent(doc, \"contextmenu\", handleUp, false),\n    disableTextSelection({ doc })\n  ];\n  return () => {\n    cleanups.forEach((cleanup) => cleanup());\n  };\n}\n\n// src/press.ts\nfunction trackPress(options) {\n  const {\n    pointerNode,\n    keyboardNode = pointerNode,\n    onPress,\n    onPressStart,\n    onPressEnd,\n    isValidKey = (e) => e.key === \"Enter\"\n  } = options;\n  if (!pointerNode) return noop;\n  const win = getWindow(pointerNode);\n  let removeStartListeners = noop;\n  let removeEndListeners = noop;\n  let removeAccessibleListeners = noop;\n  const getInfo = (event) => ({\n    point: getEventPoint(event),\n    event\n  });\n  function startPress(event) {\n    onPressStart?.(getInfo(event));\n  }\n  function cancelPress(event) {\n    onPressEnd?.(getInfo(event));\n  }\n  const startPointerPress = (startEvent) => {\n    removeEndListeners();\n    const endPointerPress = (endEvent) => {\n      const target = getEventTarget(endEvent);\n      if (contains(pointerNode, target)) {\n        onPress?.(getInfo(endEvent));\n      } else {\n        onPressEnd?.(getInfo(endEvent));\n      }\n    };\n    const removePointerUpListener = addDomEvent(win, \"pointerup\", endPointerPress, { passive: !onPress, once: true });\n    const removePointerCancelListener = addDomEvent(win, \"pointercancel\", cancelPress, {\n      passive: !onPressEnd,\n      once: true\n    });\n    removeEndListeners = pipe(removePointerUpListener, removePointerCancelListener);\n    if (isActiveElement(keyboardNode) && startEvent.pointerType === \"mouse\") {\n      startEvent.preventDefault();\n    }\n    startPress(startEvent);\n  };\n  const removePointerListener = addDomEvent(pointerNode, \"pointerdown\", startPointerPress, { passive: !onPressStart });\n  const removeFocusListener = addDomEvent(keyboardNode, \"focus\", startAccessiblePress);\n  removeStartListeners = pipe(removePointerListener, removeFocusListener);\n  function startAccessiblePress() {\n    const handleKeydown = (keydownEvent) => {\n      if (!isValidKey(keydownEvent)) return;\n      const handleKeyup = (keyupEvent) => {\n        if (!isValidKey(keyupEvent)) return;\n        const evt2 = new win.PointerEvent(\"pointerup\");\n        const info = getInfo(evt2);\n        onPress?.(info);\n        onPressEnd?.(info);\n      };\n      removeEndListeners();\n      removeEndListeners = addDomEvent(keyboardNode, \"keyup\", handleKeyup);\n      const evt = new win.PointerEvent(\"pointerdown\");\n      startPress(evt);\n    };\n    const handleBlur = () => {\n      const evt = new win.PointerEvent(\"pointercancel\");\n      cancelPress(evt);\n    };\n    const removeKeydownListener = addDomEvent(keyboardNode, \"keydown\", handleKeydown);\n    const removeBlurListener = addDomEvent(keyboardNode, \"blur\", handleBlur);\n    removeAccessibleListeners = pipe(removeKeydownListener, removeBlurListener);\n  }\n  return () => {\n    removeStartListeners();\n    removeEndListeners();\n    removeAccessibleListeners();\n  };\n}\n\n// src/proxy-tab-focus.ts\nfunction proxyTabFocusImpl(container, options = {}) {\n  const { triggerElement, onFocus, onFocusEnter, getShadowRoot } = options;\n  const doc = container?.ownerDocument || document;\n  const body = doc.body;\n  function onKeyDown(event) {\n    if (event.key !== \"Tab\") return;\n    let elementToFocus = null;\n    const [firstTabbable, lastTabbable] = getTabbableEdges(container, { includeContainer: true, getShadowRoot });\n    const nextTabbableAfterTrigger = getNextTabbable(body, { current: triggerElement, getShadowRoot });\n    const noTabbableElements = !firstTabbable && !lastTabbable;\n    if (event.shiftKey && isActiveElement(nextTabbableAfterTrigger)) {\n      onFocusEnter?.();\n      elementToFocus = lastTabbable;\n    } else if (event.shiftKey && (isActiveElement(firstTabbable) || noTabbableElements)) {\n      elementToFocus = triggerElement;\n    } else if (!event.shiftKey && isActiveElement(triggerElement)) {\n      onFocusEnter?.();\n      elementToFocus = firstTabbable;\n    } else if (!event.shiftKey && (isActiveElement(lastTabbable) || noTabbableElements)) {\n      elementToFocus = nextTabbableAfterTrigger;\n    }\n    if (!elementToFocus) return;\n    event.preventDefault();\n    if (typeof onFocus === \"function\") {\n      onFocus(elementToFocus);\n    } else {\n      elementToFocus.focus();\n    }\n  }\n  return addDomEvent(doc, \"keydown\", onKeyDown, true);\n}\nfunction proxyTabFocus(container, options) {\n  const { defer, triggerElement, ...restOptions } = options;\n  const func = defer ? raf : (v) => v();\n  const cleanups = [];\n  cleanups.push(\n    func(() => {\n      const node = typeof container === \"function\" ? container() : container;\n      const trigger = typeof triggerElement === \"function\" ? triggerElement() : triggerElement;\n      cleanups.push(proxyTabFocusImpl(node, { triggerElement: trigger, ...restOptions }));\n    })\n  );\n  return () => {\n    cleanups.forEach((fn) => fn?.());\n  };\n}\n\n// src/query.ts\nfunction queryAll(root, selector) {\n  return Array.from(root?.querySelectorAll(selector) ?? []);\n}\nfunction query(root, selector) {\n  return root?.querySelector(selector) ?? null;\n}\nvar defaultItemToId = (v) => v.id;\nfunction itemById(v, id, itemToId = defaultItemToId) {\n  return v.find((item) => itemToId(item) === id);\n}\nfunction indexOfId(v, id, itemToId = defaultItemToId) {\n  const item = itemById(v, id, itemToId);\n  return item ? v.indexOf(item) : -1;\n}\nfunction nextById(v, id, loop = true) {\n  let idx = indexOfId(v, id);\n  idx = loop ? (idx + 1) % v.length : Math.min(idx + 1, v.length - 1);\n  return v[idx];\n}\nfunction prevById(v, id, loop = true) {\n  let idx = indexOfId(v, id);\n  if (idx === -1) return loop ? v[v.length - 1] : null;\n  idx = loop ? (idx - 1 + v.length) % v.length : Math.max(0, idx - 1);\n  return v[idx];\n}\n\n// src/resize-observer.ts\nfunction createSharedResizeObserver(options) {\n  const listeners = /* @__PURE__ */ new WeakMap();\n  let observer;\n  const entries = /* @__PURE__ */ new WeakMap();\n  const getObserver = (win) => {\n    if (observer) return observer;\n    observer = new win.ResizeObserver((observedEntries) => {\n      for (const entry of observedEntries) {\n        entries.set(entry.target, entry);\n        const elementListeners = listeners.get(entry.target);\n        if (elementListeners) {\n          for (const listener of elementListeners) {\n            listener(entry);\n          }\n        }\n      }\n    });\n    return observer;\n  };\n  const observe = (element, listener) => {\n    let elementListeners = listeners.get(element) || /* @__PURE__ */ new Set();\n    elementListeners.add(listener);\n    listeners.set(element, elementListeners);\n    const win = getWindow(element);\n    getObserver(win).observe(element, options);\n    return () => {\n      const elementListeners2 = listeners.get(element);\n      if (!elementListeners2) return;\n      elementListeners2.delete(listener);\n      if (elementListeners2.size === 0) {\n        listeners.delete(element);\n        getObserver(win).unobserve(element);\n      }\n    };\n  };\n  const unobserve = (element) => {\n    listeners.delete(element);\n    observer?.unobserve(element);\n  };\n  return {\n    observe,\n    unobserve\n  };\n}\nvar resizeObserverContentBox = /* @__PURE__ */ createSharedResizeObserver({\n  box: \"content-box\"\n});\nvar resizeObserverBorderBox = /* @__PURE__ */ createSharedResizeObserver({\n  box: \"border-box\"\n});\nvar resizeObserverDevicePixelContentBox = /* @__PURE__ */ createSharedResizeObserver({\n  box: \"device-pixel-content-box\"\n});\n\n// src/scope.ts\nfunction createScope(methods) {\n  const dom = {\n    getRootNode: (ctx) => ctx.getRootNode?.() ?? document,\n    getDoc: (ctx) => getDocument(dom.getRootNode(ctx)),\n    getWin: (ctx) => dom.getDoc(ctx).defaultView ?? window,\n    getActiveElement: (ctx) => getActiveElement(dom.getRootNode(ctx)),\n    isActiveElement,\n    getById: (ctx, id) => dom.getRootNode(ctx).getElementById(id),\n    setValue: (elem, value) => {\n      if (elem == null || value == null) return;\n      setElementValue(elem, value.toString());\n    }\n  };\n  return { ...dom, ...methods };\n}\n\n// src/searchable.ts\nvar sanitize = (str) => str.split(\"\").map((char) => {\n  const code = char.charCodeAt(0);\n  if (code > 0 && code < 128) return char;\n  if (code >= 128 && code <= 255) return `/x${code.toString(16)}`.replace(\"/\", \"\\\\\");\n  return \"\";\n}).join(\"\").trim();\nvar getValueText = (el) => {\n  return sanitize(el.dataset?.valuetext ?? el.textContent ?? \"\");\n};\nvar match = (valueText, query2) => {\n  return valueText.trim().toLowerCase().startsWith(query2.toLowerCase());\n};\nfunction getByText(v, text, currentId, itemToId = defaultItemToId) {\n  const index = currentId ? indexOfId(v, currentId, itemToId) : -1;\n  let items = currentId ? wrap(v, index) : v;\n  const isSingleKey = text.length === 1;\n  if (isSingleKey) {\n    items = items.filter((item) => itemToId(item) !== currentId);\n  }\n  return items.find((item) => match(getValueText(item), text));\n}\n\n// src/set.ts\nfunction setAttribute(el, attr, v) {\n  const prev = el.getAttribute(attr);\n  const exists = prev != null;\n  el.setAttribute(attr, v);\n  return () => {\n    if (!exists) {\n      el.removeAttribute(attr);\n    } else {\n      el.setAttribute(attr, prev);\n    }\n  };\n}\nfunction setProperty(el, prop, v) {\n  const exists = prop in el;\n  const prev = el[prop];\n  el[prop] = v;\n  return () => {\n    if (!exists) {\n      delete el[prop];\n    } else {\n      el[prop] = prev;\n    }\n  };\n}\nfunction setStyle(el, style) {\n  if (!el) return noop;\n  const prev = Object.keys(style).reduce((acc, key) => {\n    acc[key] = el.style.getPropertyValue(key);\n    return acc;\n  }, {});\n  Object.assign(el.style, style);\n  return () => {\n    Object.assign(el.style, prev);\n    if (el.style.length === 0) {\n      el.removeAttribute(\"style\");\n    }\n  };\n}\nfunction setStyleProperty(el, prop, value) {\n  if (!el) return noop;\n  const prev = el.style.getPropertyValue(prop);\n  el.style.setProperty(prop, value);\n  return () => {\n    el.style.setProperty(prop, prev);\n    if (el.style.length === 0) {\n      el.removeAttribute(\"style\");\n    }\n  };\n}\n\n// src/typeahead.ts\nfunction getByTypeaheadImpl(baseItems, options) {\n  const { state: state2, activeId, key, timeout = 350, itemToId } = options;\n  const search = state2.keysSoFar + key;\n  const isRepeated = search.length > 1 && Array.from(search).every((char) => char === search[0]);\n  const query2 = isRepeated ? search[0] : search;\n  let items = baseItems.slice();\n  const next = getByText(items, query2, activeId, itemToId);\n  function cleanup() {\n    clearTimeout(state2.timer);\n    state2.timer = -1;\n  }\n  function update(value) {\n    state2.keysSoFar = value;\n    cleanup();\n    if (value !== \"\") {\n      state2.timer = +setTimeout(() => {\n        update(\"\");\n        cleanup();\n      }, timeout);\n    }\n  }\n  update(search);\n  return next;\n}\nvar getByTypeahead = /* @__PURE__ */ Object.assign(getByTypeaheadImpl, {\n  defaultOptions: { keysSoFar: \"\", timer: -1 },\n  isValidEvent: isValidTypeaheadEvent\n});\nfunction isValidTypeaheadEvent(event) {\n  return event.key.length === 1 && !event.ctrlKey && !event.metaKey;\n}\n\n// src/visual-viewport.ts\nfunction trackVisualViewport(doc, fn) {\n  const win = doc?.defaultView || window;\n  const onResize = () => {\n    fn?.(getViewportSize(win));\n  };\n  onResize();\n  return addDomEvent(win.visualViewport ?? win, \"resize\", onResize);\n}\nfunction getViewportSize(win) {\n  return {\n    width: win.visualViewport?.width || win.innerWidth,\n    height: win.visualViewport?.height || win.innerHeight\n  };\n}\n\n// src/visually-hidden.ts\nvar visuallyHiddenStyle = {\n  border: \"0\",\n  clip: \"rect(0 0 0 0)\",\n  height: \"1px\",\n  margin: \"-1px\",\n  overflow: \"hidden\",\n  padding: \"0\",\n  position: \"absolute\",\n  width: \"1px\",\n  whiteSpace: \"nowrap\",\n  wordWrap: \"normal\"\n};\nfunction setVisuallyHidden(el) {\n  Object.assign(el.style, visuallyHiddenStyle);\n}\n\n// src/wait-for.ts\nfunction waitForPromise(promise, controller, timeout) {\n  const { signal } = controller;\n  const wrappedPromise = new Promise((resolve, reject) => {\n    const timeoutId = setTimeout(() => {\n      reject(new Error(`Timeout of ${timeout}ms exceeded`));\n    }, timeout);\n    signal.addEventListener(\"abort\", () => {\n      clearTimeout(timeoutId);\n      reject(new Error(\"Promise aborted\"));\n    });\n    promise.then((result) => {\n      if (!signal.aborted) {\n        clearTimeout(timeoutId);\n        resolve(result);\n      }\n    }).catch((error) => {\n      if (!signal.aborted) {\n        clearTimeout(timeoutId);\n        reject(error);\n      }\n    });\n  });\n  const abort = () => controller.abort();\n  return [wrappedPromise, abort];\n}\nfunction waitForElement(target, options) {\n  const { timeout, rootNode } = options;\n  const win = getWindow(rootNode);\n  const doc = getDocument(rootNode);\n  const controller = new win.AbortController();\n  return waitForPromise(\n    new Promise((resolve) => {\n      const el = target();\n      if (el) {\n        resolve(el);\n        return;\n      }\n      const observer = new win.MutationObserver(() => {\n        const el2 = target();\n        if (el2 && el2.isConnected) {\n          observer.disconnect();\n          resolve(el2);\n        }\n      });\n      observer.observe(doc.body, {\n        childList: true,\n        subtree: true\n      });\n    }),\n    controller,\n    timeout\n  );\n}\n\nexport { AnimationFrame, MAX_Z_INDEX, addDomEvent, ariaAttr, clickIfLink, contains, createScope, dataAttr, defaultItemToId, disableTextSelection, dispatchInputCheckedEvent, dispatchInputValueEvent, findControlledElements, getActiveElement, getBeforeInputValue, getByText, getByTypeahead, getComputedStyle, getControlledElements, getDataUrl, getDocument, getDocumentElement, getEventKey, getEventPoint, getEventStep, getEventTarget, getFirstFocusable, getFirstTabbable, getFocusables, getInitialFocus, getLastTabbable, getNativeEvent, getNearestOverflowAncestor, getNextTabbable, getNodeName, getOverflowAncestors, getParentNode, getPlatform, getRelativePoint, getRootNode, getScrollPosition, getTabIndex, getTabbableEdges, getTabbables, getUserAgent, getWindow, hasControllerElements, indexOfId, isActiveElement, isAnchorElement, isAndroid, isApple, isCaretAtStart, isChrome, isComposingEvent, isContextMenuEvent, isControlledByExpandedController, isControlledElement, isControllerElement, isCtrlOrMetaKey, isDocument, isDom, isDownloadingEvent, isEditableElement, isElementVisible, isFirefox, isFocusable, isHTMLElement, isIPad, isIPhone, isInView, isInputElement, isInteractiveContainerElement, isIos, isKeyboardClick, isLeftClick, isMac, isModifierKey, isNode, isOpeningInNewTab, isOverflowElement, isPrintableKey, isRootElement, isSafari, isSelfTarget, isShadowRoot, isTabbable, isTouchDevice, isTouchEvent, isValidTabEvent, isVirtualClick, isVirtualPointerEvent, isVisualViewport, isWebKit, isWindow, itemById, navigate, nextById, nextTick, observeAttributes, observeChildren, prevById, proxyTabFocus, query, queryAll, queueBeforeEvent, raf, requestPointerLock, resizeObserverBorderBox, resizeObserverContentBox, resizeObserverDevicePixelContentBox, restoreTextSelection, scrollIntoView, setAttribute, setCaretToEnd, setElementChecked, setElementValue, setProperty, setStyle, setStyleProperty, setVisuallyHidden, trackFormControl, trackPointerMove, trackPress, trackVisualViewport, visuallyHiddenStyle, waitForElement, waitForPromise };\n", "var __defProp = Object.defineProperty;\nvar __typeError = (msg) => {\n  throw TypeError(msg);\n};\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar __accessCheck = (obj, member, msg) => member.has(obj) || __typeError(\"Cannot \" + msg);\nvar __privateGet = (obj, member, getter) => (__accessCheck(obj, member, \"read from private field\"), member.get(obj));\nvar __privateAdd = (obj, member, value) => member.has(obj) ? __typeError(\"Cannot add the same private member more than once\") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n\n// src/array.ts\nfunction toArray(v) {\n  if (v == null) return [];\n  return Array.isArray(v) ? v : [v];\n}\nvar fromLength = (length) => Array.from(Array(length).keys());\nvar first = (v) => v[0];\nvar last = (v) => v[v.length - 1];\nvar isEmpty = (v) => v.length === 0;\nvar has = (v, t) => v.indexOf(t) !== -1;\nvar add = (v, ...items) => v.concat(items);\nvar remove = (v, ...items) => v.filter((t) => !items.includes(t));\nvar removeAt = (v, i) => v.filter((_, idx) => idx !== i);\nvar insertAt = (v, i, ...items) => [...v.slice(0, i), ...items, ...v.slice(i)];\nvar uniq = (v) => Array.from(new Set(v));\nvar diff = (a, b) => {\n  const set = new Set(b);\n  return a.filter((t) => !set.has(t));\n};\nvar addOrRemove = (v, item) => has(v, item) ? remove(v, item) : add(v, item);\nfunction clear(v) {\n  while (v.length > 0) v.pop();\n  return v;\n}\nfunction nextIndex(v, idx, opts = {}) {\n  const { step = 1, loop = true } = opts;\n  const next2 = idx + step;\n  const len = v.length;\n  const last2 = len - 1;\n  if (idx === -1) return step > 0 ? 0 : last2;\n  if (next2 < 0) return loop ? last2 : 0;\n  if (next2 >= len) return loop ? 0 : idx > len ? len : idx;\n  return next2;\n}\nfunction next(v, idx, opts = {}) {\n  return v[nextIndex(v, idx, opts)];\n}\nfunction prevIndex(v, idx, opts = {}) {\n  const { step = 1, loop = true } = opts;\n  return nextIndex(v, idx, { step: -step, loop });\n}\nfunction prev(v, index, opts = {}) {\n  return v[prevIndex(v, index, opts)];\n}\nfunction chunk(v, size) {\n  return v.reduce((rows, value, index) => {\n    if (index % size === 0) rows.push([value]);\n    else last(rows)?.push(value);\n    return rows;\n  }, []);\n}\nfunction flatArray(arr) {\n  return arr.reduce((flat, item) => {\n    if (Array.isArray(item)) {\n      return flat.concat(flatArray(item));\n    }\n    return flat.concat(item);\n  }, []);\n}\nfunction partition(arr, fn) {\n  return arr.reduce(\n    ([pass, fail], value) => {\n      if (fn(value)) pass.push(value);\n      else fail.push(value);\n      return [pass, fail];\n    },\n    [[], []]\n  );\n}\n\n// src/equal.ts\nvar isArrayLike = (value) => value?.constructor.name === \"Array\";\nvar isArrayEqual = (a, b) => {\n  if (a.length !== b.length) return false;\n  for (let i = 0; i < a.length; i++) {\n    if (!isEqual(a[i], b[i])) return false;\n  }\n  return true;\n};\nvar isEqual = (a, b) => {\n  if (Object.is(a, b)) return true;\n  if (a == null && b != null || a != null && b == null) return false;\n  if (typeof a?.isEqual === \"function\" && typeof b?.isEqual === \"function\") {\n    return a.isEqual(b);\n  }\n  if (typeof a === \"function\" && typeof b === \"function\") {\n    return a.toString() === b.toString();\n  }\n  if (isArrayLike(a) && isArrayLike(b)) {\n    return isArrayEqual(Array.from(a), Array.from(b));\n  }\n  if (!(typeof a === \"object\") || !(typeof b === \"object\")) return false;\n  const keys = Object.keys(b ?? /* @__PURE__ */ Object.create(null));\n  const length = keys.length;\n  for (let i = 0; i < length; i++) {\n    const hasKey = Reflect.has(a, keys[i]);\n    if (!hasKey) return false;\n  }\n  for (let i = 0; i < length; i++) {\n    const key = keys[i];\n    if (!isEqual(a[key], b[key])) return false;\n  }\n  return true;\n};\n\n// src/guard.ts\nvar isDev = () => process.env.NODE_ENV !== \"production\";\nvar isArray = (v) => Array.isArray(v);\nvar isBoolean = (v) => v === true || v === false;\nvar isObjectLike = (v) => v != null && typeof v === \"object\";\nvar isObject = (v) => isObjectLike(v) && !isArray(v);\nvar isNumber = (v) => typeof v === \"number\" && !Number.isNaN(v);\nvar isString = (v) => typeof v === \"string\";\nvar isFunction = (v) => typeof v === \"function\";\nvar isNull = (v) => v == null;\nvar hasProp = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);\nvar baseGetTag = (v) => Object.prototype.toString.call(v);\nvar fnToString = Function.prototype.toString;\nvar objectCtorString = fnToString.call(Object);\nvar isPlainObject = (v) => {\n  if (!isObjectLike(v) || baseGetTag(v) != \"[object Object]\" || isFrameworkElement(v)) return false;\n  const proto = Object.getPrototypeOf(v);\n  if (proto === null) return true;\n  const Ctor = hasProp(proto, \"constructor\") && proto.constructor;\n  return typeof Ctor == \"function\" && Ctor instanceof Ctor && fnToString.call(Ctor) == objectCtorString;\n};\nvar isReactElement = (x) => typeof x === \"object\" && x !== null && \"$$typeof\" in x && \"props\" in x;\nvar isVueElement = (x) => typeof x === \"object\" && x !== null && \"__v_isVNode\" in x;\nvar isFrameworkElement = (x) => isReactElement(x) || isVueElement(x);\n\n// src/functions.ts\nvar runIfFn = (v, ...a) => {\n  const res = typeof v === \"function\" ? v(...a) : v;\n  return res ?? void 0;\n};\nvar cast = (v) => v;\nvar identity = (v) => v();\nvar noop = () => {\n};\nvar callAll = (...fns) => (...a) => {\n  fns.forEach(function(fn) {\n    fn?.(...a);\n  });\n};\nvar uuid = /* @__PURE__ */ (() => {\n  let id = 0;\n  return () => {\n    id++;\n    return id.toString(36);\n  };\n})();\nfunction match(key, record, ...args) {\n  if (key in record) {\n    const fn = record[key];\n    return isFunction(fn) ? fn(...args) : fn;\n  }\n  const error = new Error(`No matching key: ${JSON.stringify(key)} in ${JSON.stringify(Object.keys(record))}`);\n  Error.captureStackTrace?.(error, match);\n  throw error;\n}\nvar tryCatch = (fn, fallback) => {\n  try {\n    return fn();\n  } catch (error) {\n    if (error instanceof Error) {\n      Error.captureStackTrace?.(error, tryCatch);\n    }\n    return fallback?.();\n  }\n};\nfunction throttle(fn, wait = 0) {\n  let lastCall = 0;\n  let timeout = null;\n  return ((...args) => {\n    const now = Date.now();\n    const timeSinceLastCall = now - lastCall;\n    if (timeSinceLastCall >= wait) {\n      if (timeout) {\n        clearTimeout(timeout);\n        timeout = null;\n      }\n      fn(...args);\n      lastCall = now;\n    } else if (!timeout) {\n      timeout = setTimeout(() => {\n        fn(...args);\n        lastCall = Date.now();\n        timeout = null;\n      }, wait - timeSinceLastCall);\n    }\n  });\n}\nfunction debounce(fn, wait = 0) {\n  let timeout = null;\n  return ((...args) => {\n    if (timeout) {\n      clearTimeout(timeout);\n      timeout = null;\n    }\n    timeout = setTimeout(() => {\n      fn(...args);\n    }, wait);\n  });\n}\nvar toChar = (code) => String.fromCharCode(code + (code > 25 ? 39 : 97));\nfunction toName(code) {\n  let name = \"\";\n  let x;\n  for (x = Math.abs(code); x > 52; x = x / 52 | 0) name = toChar(x % 52) + name;\n  return toChar(x % 52) + name;\n}\nfunction toPhash(h, x) {\n  let i = x.length;\n  while (i) h = h * 33 ^ x.charCodeAt(--i);\n  return h;\n}\nvar hash = (value) => toName(toPhash(5381, value) >>> 0);\n\n// src/number.ts\nvar { floor, abs, round, min, max, pow, sign } = Math;\nvar isNaN = (v) => Number.isNaN(v);\nvar nan = (v) => isNaN(v) ? 0 : v;\nvar mod = (v, m) => (v % m + m) % m;\nvar wrap = (v, vmax) => (v % vmax + vmax) % vmax;\nvar getMinValueAtIndex = (i, v, vmin) => i === 0 ? vmin : v[i - 1];\nvar getMaxValueAtIndex = (i, v, vmax) => i === v.length - 1 ? vmax : v[i + 1];\nvar isValueAtMax = (v, vmax) => nan(v) >= vmax;\nvar isValueAtMin = (v, vmin) => nan(v) <= vmin;\nvar isValueWithinRange = (v, vmin, vmax) => {\n  const value = nan(v);\n  const minCheck = vmin == null || value >= vmin;\n  const maxCheck = vmax == null || value <= vmax;\n  return minCheck && maxCheck;\n};\nvar roundValue = (v, vmin, step) => round((nan(v) - vmin) / step) * step + vmin;\nvar clampValue = (v, vmin, vmax) => min(max(nan(v), vmin), vmax);\nvar clampPercent = (v) => clampValue(v, 0, 1);\nvar getValuePercent = (v, vmin, vmax) => (nan(v) - vmin) / (vmax - vmin);\nvar getPercentValue = (p, vmin, vmax, step) => clampValue(roundValue(p * (vmax - vmin) + vmin, vmin, step), vmin, vmax);\nvar roundToStepPrecision = (v, step) => {\n  let rv = v;\n  let ss = step.toString();\n  let pi = ss.indexOf(\".\");\n  let p = pi >= 0 ? ss.length - pi : 0;\n  if (p > 0) {\n    let pw = pow(10, p);\n    rv = round(rv * pw) / pw;\n  }\n  return rv;\n};\nvar roundToDpr = (v, dpr) => typeof dpr === \"number\" ? floor(v * dpr + 0.5) / dpr : round(v);\nvar snapValueToStep = (v, vmin, vmax, step) => {\n  const min2 = vmin != null ? Number(vmin) : 0;\n  const max2 = Number(vmax);\n  const remainder = (v - min2) % step;\n  let snapped = abs(remainder) * 2 >= step ? v + sign(remainder) * (step - abs(remainder)) : v - remainder;\n  snapped = roundToStepPrecision(snapped, step);\n  if (!isNaN(min2) && snapped < min2) {\n    snapped = min2;\n  } else if (!isNaN(max2) && snapped > max2) {\n    const stepsInRange = floor((max2 - min2) / step);\n    const largestValidStep = min2 + stepsInRange * step;\n    snapped = stepsInRange <= 0 || largestValidStep < min2 ? max2 : largestValidStep;\n  }\n  return roundToStepPrecision(snapped, step);\n};\nvar setValueAtIndex = (vs, i, v) => {\n  if (vs[i] === v) return vs;\n  return [...vs.slice(0, i), v, ...vs.slice(i + 1)];\n};\nfunction getValueSetterAtIndex(index, ctx) {\n  const minValueAtIndex = getMinValueAtIndex(index, ctx.values, ctx.min);\n  const maxValueAtIndex = getMaxValueAtIndex(index, ctx.values, ctx.max);\n  let nextValues = ctx.values.slice();\n  return function setValue(value) {\n    let nextValue = snapValueToStep(value, minValueAtIndex, maxValueAtIndex, ctx.step);\n    nextValues = setValueAtIndex(nextValues, index, value);\n    nextValues[index] = nextValue;\n    return nextValues;\n  };\n}\nfunction getNextStepValue(index, ctx) {\n  const nextValue = ctx.values[index] + ctx.step;\n  return getValueSetterAtIndex(index, ctx)(nextValue);\n}\nfunction getPreviousStepValue(index, ctx) {\n  const nextValue = ctx.values[index] - ctx.step;\n  return getValueSetterAtIndex(index, ctx)(nextValue);\n}\nvar getClosestValueIndex = (vs, t) => {\n  let i = vs.findIndex((v) => t - v < 0);\n  if (i === 0) return i;\n  if (i === -1) return vs.length - 1;\n  let vLeft = vs[i - 1];\n  let vRight = vs[i];\n  if (abs(vLeft - t) < abs(vRight - t)) return i - 1;\n  return i;\n};\nvar getClosestValue = (vs, t) => vs[getClosestValueIndex(vs, t)];\nvar getValueRanges = (vs, vmin, vmax, gap) => vs.map((v, i) => ({\n  min: i === 0 ? vmin : vs[i - 1] + gap,\n  max: i === vs.length - 1 ? vmax : vs[i + 1] - gap,\n  value: v\n}));\nvar getValueTransformer = (va, vb) => {\n  const [a, b] = va;\n  const [c, d] = vb;\n  return (v) => a === b || c === d ? c : c + (d - c) / (b - a) * (v - a);\n};\nvar toFixedNumber = (v, d = 0, b = 10) => {\n  const pow2 = Math.pow(b, d);\n  return round(v * pow2) / pow2;\n};\nvar countDecimals = (value) => {\n  if (!Number.isFinite(value)) return 0;\n  let e = 1, p = 0;\n  while (Math.round(value * e) / e !== value) {\n    e *= 10;\n    p += 1;\n  }\n  return p;\n};\nvar decimalOp = (a, op, b) => {\n  let result = op === \"+\" ? a + b : a - b;\n  if (a % 1 !== 0 || b % 1 !== 0) {\n    const multiplier = 10 ** Math.max(countDecimals(a), countDecimals(b));\n    a = Math.round(a * multiplier);\n    b = Math.round(b * multiplier);\n    result = op === \"+\" ? a + b : a - b;\n    result /= multiplier;\n  }\n  return result;\n};\nvar incrementValue = (v, s) => decimalOp(nan(v), \"+\", s);\nvar decrementValue = (v, s) => decimalOp(nan(v), \"-\", s);\nvar toPx = (v) => typeof v === \"number\" ? `${v}px` : v;\n\n// src/object.ts\nfunction compact(obj) {\n  if (!isPlainObject(obj) || obj === void 0) return obj;\n  const keys = Reflect.ownKeys(obj).filter((key) => typeof key === \"string\");\n  const filtered = {};\n  for (const key of keys) {\n    const value = obj[key];\n    if (value !== void 0) {\n      filtered[key] = compact(value);\n    }\n  }\n  return filtered;\n}\nvar json = (v) => JSON.parse(JSON.stringify(v));\nfunction pick(obj, keys) {\n  const filtered = {};\n  for (const key of keys) {\n    const value = obj[key];\n    if (value !== void 0) {\n      filtered[key] = value;\n    }\n  }\n  return filtered;\n}\nfunction splitProps(props, keys) {\n  const rest = {};\n  const result = {};\n  const keySet = new Set(keys);\n  const ownKeys = Reflect.ownKeys(props);\n  for (const key of ownKeys) {\n    if (keySet.has(key)) {\n      result[key] = props[key];\n    } else {\n      rest[key] = props[key];\n    }\n  }\n  return [result, rest];\n}\nvar createSplitProps = (keys) => {\n  return function split(props) {\n    return splitProps(props, keys);\n  };\n};\nfunction omit(obj, keys) {\n  return createSplitProps(keys)(obj)[1];\n}\n\n// src/store.ts\nfunction createStore(initialState, compare = Object.is) {\n  let state = { ...initialState };\n  const listeners = /* @__PURE__ */ new Set();\n  const subscribe = (listener) => {\n    listeners.add(listener);\n    return () => listeners.delete(listener);\n  };\n  const publish = () => {\n    listeners.forEach((listener) => listener());\n  };\n  const get = (key) => {\n    return state[key];\n  };\n  const set = (key, value) => {\n    if (!compare(state[key], value)) {\n      state[key] = value;\n      publish();\n    }\n  };\n  const update = (updates) => {\n    let hasChanges = false;\n    for (const key in updates) {\n      const value = updates[key];\n      if (value !== void 0 && !compare(state[key], value)) {\n        state[key] = value;\n        hasChanges = true;\n      }\n    }\n    if (hasChanges) {\n      publish();\n    }\n  };\n  const snapshot = () => ({ ...state });\n  return {\n    subscribe,\n    get,\n    set,\n    update,\n    snapshot\n  };\n}\n\n// src/timers.ts\nvar currentTime = () => performance.now();\nvar _tick;\nvar Timer = class {\n  constructor(onTick) {\n    this.onTick = onTick;\n    __publicField(this, \"frameId\", null);\n    __publicField(this, \"pausedAtMs\", null);\n    __publicField(this, \"context\");\n    __publicField(this, \"cancelFrame\", () => {\n      if (this.frameId === null) return;\n      cancelAnimationFrame(this.frameId);\n      this.frameId = null;\n    });\n    __publicField(this, \"setStartMs\", (startMs) => {\n      this.context.startMs = startMs;\n    });\n    __publicField(this, \"start\", () => {\n      if (this.frameId !== null) return;\n      const now = currentTime();\n      if (this.pausedAtMs !== null) {\n        this.context.startMs += now - this.pausedAtMs;\n        this.pausedAtMs = null;\n      } else {\n        this.context.startMs = now;\n      }\n      this.frameId = requestAnimationFrame(__privateGet(this, _tick));\n    });\n    __publicField(this, \"pause\", () => {\n      if (this.frameId === null) return;\n      this.cancelFrame();\n      this.pausedAtMs = currentTime();\n    });\n    __publicField(this, \"stop\", () => {\n      if (this.frameId === null) return;\n      this.cancelFrame();\n      this.pausedAtMs = null;\n    });\n    __privateAdd(this, _tick, (now) => {\n      this.context.now = now;\n      this.context.deltaMs = now - this.context.startMs;\n      const shouldContinue = this.onTick(this.context);\n      if (shouldContinue === false) {\n        this.stop();\n        return;\n      }\n      this.frameId = requestAnimationFrame(__privateGet(this, _tick));\n    });\n    this.context = { now: 0, startMs: currentTime(), deltaMs: 0 };\n  }\n  get elapsedMs() {\n    if (this.pausedAtMs !== null) {\n      return this.pausedAtMs - this.context.startMs;\n    }\n    return currentTime() - this.context.startMs;\n  }\n};\n_tick = new WeakMap();\nfunction setRafInterval(fn, intervalMs) {\n  const timer = new Timer(({ now, deltaMs }) => {\n    if (deltaMs >= intervalMs) {\n      const startMs = intervalMs > 0 ? now - deltaMs % intervalMs : now;\n      timer.setStartMs(startMs);\n      fn({ startMs, deltaMs });\n    }\n  });\n  timer.start();\n  return () => timer.stop();\n}\nfunction setRafTimeout(fn, delayMs) {\n  const timer = new Timer(({ deltaMs }) => {\n    if (deltaMs >= delayMs) {\n      fn();\n      return false;\n    }\n  });\n  timer.start();\n  return () => timer.stop();\n}\n\n// src/warning.ts\nfunction warn(...a) {\n  const m = a.length === 1 ? a[0] : a[1];\n  const c = a.length === 2 ? a[0] : true;\n  if (c && process.env.NODE_ENV !== \"production\") {\n    console.warn(m);\n  }\n}\nfunction invariant(...a) {\n  const m = a.length === 1 ? a[0] : a[1];\n  const c = a.length === 2 ? a[0] : true;\n  if (c && process.env.NODE_ENV !== \"production\") {\n    throw new Error(m);\n  }\n}\nfunction ensure(c, m) {\n  if (c == null) throw new Error(m());\n}\nfunction ensureProps(props, keys, scope) {\n  let missingKeys = [];\n  for (const key of keys) {\n    if (props[key] == null) missingKeys.push(key);\n  }\n  if (missingKeys.length > 0)\n    throw new Error(`[zag-js${scope ? ` > ${scope}` : \"\"}] missing required props: ${missingKeys.join(\", \")}`);\n}\n\nexport { Timer, add, addOrRemove, callAll, cast, chunk, clampPercent, clampValue, clear, compact, createSplitProps, createStore, debounce, decrementValue, diff, ensure, ensureProps, first, flatArray, fromLength, getClosestValue, getClosestValueIndex, getMaxValueAtIndex, getMinValueAtIndex, getNextStepValue, getPercentValue, getPreviousStepValue, getValuePercent, getValueRanges, getValueSetterAtIndex, getValueTransformer, has, hasProp, hash, identity, incrementValue, insertAt, invariant, isArray, isBoolean, isDev, isEmpty, isEqual, isFunction, isNaN, isNull, isNumber, isObject, isObjectLike, isPlainObject, isString, isValueAtMax, isValueAtMin, isValueWithinRange, json, last, match, mod, nan, next, nextIndex, noop, omit, partition, pick, prev, prevIndex, remove, removeAt, roundToDpr, roundToStepPrecision, roundValue, runIfFn, setRafInterval, setRafTimeout, setValueAtIndex, snapValueToStep, splitProps, throttle, toArray, toFixedNumber, toPx, tryCatch, uniq, uuid, warn, wrap };\n", "import { callAll, isEqual, isString } from '@zag-js/utils';\nimport { isActiveElement, getActiveElement, getDocument } from '@zag-js/dom-query';\n\n// src/merge-props.ts\nvar clsx = (...args) => args.map((str) => str?.trim?.()).filter(Boolean).join(\" \");\nvar CSS_REGEX = /((?:--)?(?:\\w+-?)+)\\s*:\\s*([^;]*)/g;\nvar serialize = (style) => {\n  const res = {};\n  let match;\n  while (match = CSS_REGEX.exec(style)) {\n    res[match[1]] = match[2];\n  }\n  return res;\n};\nvar css = (a, b) => {\n  if (isString(a)) {\n    if (isString(b)) return `${a};${b}`;\n    a = serialize(a);\n  } else if (isString(b)) {\n    b = serialize(b);\n  }\n  return Object.assign({}, a ?? {}, b ?? {});\n};\nfunction mergeProps(...args) {\n  let result = {};\n  for (let props of args) {\n    if (!props) continue;\n    for (let key in result) {\n      if (key.startsWith(\"on\") && typeof result[key] === \"function\" && typeof props[key] === \"function\") {\n        result[key] = callAll(props[key], result[key]);\n        continue;\n      }\n      if (key === \"className\" || key === \"class\") {\n        result[key] = clsx(result[key], props[key]);\n        continue;\n      }\n      if (key === \"style\") {\n        result[key] = css(result[key], props[key]);\n        continue;\n      }\n      result[key] = props[key] !== void 0 ? props[key] : result[key];\n    }\n    for (let key in props) {\n      if (result[key] === void 0) {\n        result[key] = props[key];\n      }\n    }\n    const symbols = Object.getOwnPropertySymbols(props);\n    for (let symbol of symbols) {\n      result[symbol] = props[symbol];\n    }\n  }\n  return result;\n}\nfunction memo(getDeps, fn, opts) {\n  let deps = [];\n  let result;\n  return (depArgs) => {\n    const newDeps = getDeps(depArgs);\n    const depsChanged = newDeps.length !== deps.length || newDeps.some((dep, index) => !isEqual(deps[index], dep));\n    if (!depsChanged) return result;\n    deps = newDeps;\n    result = fn(newDeps, depArgs);\n    opts?.onChange?.(result);\n    return result;\n  };\n}\n\n// src/create-machine.ts\nfunction createGuards() {\n  return {\n    and: (...guards) => {\n      return function andGuard(params) {\n        return guards.every((str) => params.guard(str));\n      };\n    },\n    or: (...guards) => {\n      return function orGuard(params) {\n        return guards.some((str) => params.guard(str));\n      };\n    },\n    not: (guard) => {\n      return function notGuard(params) {\n        return !params.guard(guard);\n      };\n    }\n  };\n}\nfunction createMachine(config) {\n  return config;\n}\nfunction setup() {\n  return {\n    guards: createGuards(),\n    createMachine: (config) => {\n      return createMachine(config);\n    },\n    choose: (transitions) => {\n      return function chooseFn({ choose }) {\n        return choose(transitions)?.actions;\n      };\n    }\n  };\n}\n\n// src/types.ts\nvar MachineStatus = /* @__PURE__ */ ((MachineStatus2) => {\n  MachineStatus2[\"NotStarted\"] = \"Not Started\";\n  MachineStatus2[\"Started\"] = \"Started\";\n  MachineStatus2[\"Stopped\"] = \"Stopped\";\n  return MachineStatus2;\n})(MachineStatus || {});\nvar INIT_STATE = \"__init__\";\nfunction createScope(props) {\n  const getRootNode = () => props.getRootNode?.() ?? document;\n  const getDoc = () => getDocument(getRootNode());\n  const getWin = () => getDoc().defaultView ?? window;\n  const getActiveElementFn = () => getActiveElement(getRootNode());\n  const getById = (id) => getRootNode().getElementById(id);\n  return {\n    ...props,\n    getRootNode,\n    getDoc,\n    getWin,\n    getActiveElement: getActiveElementFn,\n    isActiveElement,\n    getById\n  };\n}\n\nexport { INIT_STATE, MachineStatus, createGuards, createMachine, createScope, memo, mergeProps, setup };\n", "// src/prop-types.ts\nfunction createNormalizer(fn) {\n  return new Proxy({}, {\n    get(_target, key) {\n      if (key === \"style\")\n        return (props) => {\n          return fn({ style: props }).style;\n        };\n      return fn;\n    }\n  });\n}\n\n// src/create-props.ts\nvar createProps = () => (props) => Array.from(new Set(props));\n\nexport { createNormalizer, createProps };\n", "import { createAnatomy } from '@zag-js/anatomy';\nimport { prevById, nextById, queryAll, getEventKey, isSafari, dataAttr } from '@zag-js/dom-query';\nimport { warn, last, first, add, remove, createSplitProps } from '@zag-js/utils';\nimport { createGuards, createMachine } from '@zag-js/core';\nimport { createProps } from '@zag-js/types';\n\n// src/accordion.anatomy.ts\nvar anatomy = createAnatomy(\"accordion\").parts(\"root\", \"item\", \"itemTrigger\", \"itemContent\", \"itemIndicator\");\nvar parts = anatomy.build();\nvar getRootId = (ctx) => ctx.ids?.root ?? `accordion:${ctx.id}`;\nvar getItemId = (ctx, value) => ctx.ids?.item?.(value) ?? `accordion:${ctx.id}:item:${value}`;\nvar getItemContentId = (ctx, value) => ctx.ids?.itemContent?.(value) ?? `accordion:${ctx.id}:content:${value}`;\nvar getItemTriggerId = (ctx, value) => ctx.ids?.itemTrigger?.(value) ?? `accordion:${ctx.id}:trigger:${value}`;\nvar getRootEl = (ctx) => ctx.getById(getRootId(ctx));\nvar getTriggerEls = (ctx) => {\n  const ownerId = CSS.escape(getRootId(ctx));\n  const selector = `[data-controls][data-ownedby='${ownerId}']:not([disabled])`;\n  return queryAll(getRootEl(ctx), selector);\n};\nvar getFirstTriggerEl = (ctx) => first(getTriggerEls(ctx));\nvar getLastTriggerEl = (ctx) => last(getTriggerEls(ctx));\nvar getNextTriggerEl = (ctx, id) => nextById(getTriggerEls(ctx), getItemTriggerId(ctx, id));\nvar getPrevTriggerEl = (ctx, id) => prevById(getTriggerEls(ctx), getItemTriggerId(ctx, id));\n\n// src/accordion.connect.ts\nfunction connect(service, normalize) {\n  const { send, context, prop, scope, computed } = service;\n  const focusedValue = context.get(\"focusedValue\");\n  const value = context.get(\"value\");\n  const multiple = prop(\"multiple\");\n  function setValue(value2) {\n    let nextValue = value2;\n    if (!multiple && nextValue.length > 1) {\n      nextValue = [nextValue[0]];\n    }\n    send({ type: \"VALUE.SET\", value: nextValue });\n  }\n  function getItemState(props2) {\n    return {\n      expanded: value.includes(props2.value),\n      focused: focusedValue === props2.value,\n      disabled: Boolean(props2.disabled ?? prop(\"disabled\"))\n    };\n  }\n  return {\n    focusedValue,\n    value,\n    setValue,\n    getItemState,\n    getRootProps() {\n      return normalize.element({\n        ...parts.root.attrs,\n        dir: prop(\"dir\"),\n        id: getRootId(scope),\n        \"data-orientation\": prop(\"orientation\")\n      });\n    },\n    getItemProps(props2) {\n      const itemState = getItemState(props2);\n      return normalize.element({\n        ...parts.item.attrs,\n        dir: prop(\"dir\"),\n        id: getItemId(scope, props2.value),\n        \"data-state\": itemState.expanded ? \"open\" : \"closed\",\n        \"data-focus\": dataAttr(itemState.focused),\n        \"data-disabled\": dataAttr(itemState.disabled),\n        \"data-orientation\": prop(\"orientation\")\n      });\n    },\n    getItemContentProps(props2) {\n      const itemState = getItemState(props2);\n      return normalize.element({\n        ...parts.itemContent.attrs,\n        dir: prop(\"dir\"),\n        role: \"region\",\n        id: getItemContentId(scope, props2.value),\n        \"aria-labelledby\": getItemTriggerId(scope, props2.value),\n        hidden: !itemState.expanded,\n        \"data-state\": itemState.expanded ? \"open\" : \"closed\",\n        \"data-disabled\": dataAttr(itemState.disabled),\n        \"data-focus\": dataAttr(itemState.focused),\n        \"data-orientation\": prop(\"orientation\")\n      });\n    },\n    getItemIndicatorProps(props2) {\n      const itemState = getItemState(props2);\n      return normalize.element({\n        ...parts.itemIndicator.attrs,\n        dir: prop(\"dir\"),\n        \"aria-hidden\": true,\n        \"data-state\": itemState.expanded ? \"open\" : \"closed\",\n        \"data-disabled\": dataAttr(itemState.disabled),\n        \"data-focus\": dataAttr(itemState.focused),\n        \"data-orientation\": prop(\"orientation\")\n      });\n    },\n    getItemTriggerProps(props2) {\n      const { value: value2 } = props2;\n      const itemState = getItemState(props2);\n      return normalize.button({\n        ...parts.itemTrigger.attrs,\n        type: \"button\",\n        dir: prop(\"dir\"),\n        id: getItemTriggerId(scope, value2),\n        \"aria-controls\": getItemContentId(scope, value2),\n        \"data-controls\": getItemContentId(scope, value2),\n        \"aria-expanded\": itemState.expanded,\n        disabled: itemState.disabled,\n        \"data-orientation\": prop(\"orientation\"),\n        \"aria-disabled\": itemState.disabled,\n        \"data-state\": itemState.expanded ? \"open\" : \"closed\",\n        \"data-ownedby\": getRootId(scope),\n        onFocus() {\n          if (itemState.disabled) return;\n          send({ type: \"TRIGGER.FOCUS\", value: value2 });\n        },\n        onBlur() {\n          if (itemState.disabled) return;\n          send({ type: \"TRIGGER.BLUR\" });\n        },\n        onClick(event) {\n          if (itemState.disabled) return;\n          if (isSafari()) {\n            event.currentTarget.focus();\n          }\n          send({ type: \"TRIGGER.CLICK\", value: value2 });\n        },\n        onKeyDown(event) {\n          if (event.defaultPrevented) return;\n          if (itemState.disabled) return;\n          const keyMap = {\n            ArrowDown() {\n              if (computed(\"isHorizontal\")) return;\n              send({ type: \"GOTO.NEXT\", value: value2 });\n            },\n            ArrowUp() {\n              if (computed(\"isHorizontal\")) return;\n              send({ type: \"GOTO.PREV\", value: value2 });\n            },\n            ArrowRight() {\n              if (!computed(\"isHorizontal\")) return;\n              send({ type: \"GOTO.NEXT\", value: value2 });\n            },\n            ArrowLeft() {\n              if (!computed(\"isHorizontal\")) return;\n              send({ type: \"GOTO.PREV\", value: value2 });\n            },\n            Home() {\n              send({ type: \"GOTO.FIRST\", value: value2 });\n            },\n            End() {\n              send({ type: \"GOTO.LAST\", value: value2 });\n            }\n          };\n          const key = getEventKey(event, {\n            dir: prop(\"dir\"),\n            orientation: prop(\"orientation\")\n          });\n          const exec = keyMap[key];\n          if (exec) {\n            exec(event);\n            event.preventDefault();\n          }\n        }\n      });\n    }\n  };\n}\nvar { and, not } = createGuards();\nvar machine = createMachine({\n  props({ props: props2 }) {\n    return {\n      collapsible: false,\n      multiple: false,\n      orientation: \"vertical\",\n      defaultValue: [],\n      ...props2\n    };\n  },\n  initialState() {\n    return \"idle\";\n  },\n  context({ prop, bindable }) {\n    return {\n      focusedValue: bindable(() => ({\n        defaultValue: null,\n        sync: true,\n        onChange(value) {\n          prop(\"onFocusChange\")?.({ value });\n        }\n      })),\n      value: bindable(() => ({\n        defaultValue: prop(\"defaultValue\"),\n        value: prop(\"value\"),\n        onChange(value) {\n          prop(\"onValueChange\")?.({ value });\n        }\n      }))\n    };\n  },\n  computed: {\n    isHorizontal: ({ prop }) => prop(\"orientation\") === \"horizontal\"\n  },\n  on: {\n    \"VALUE.SET\": {\n      actions: [\"setValue\"]\n    }\n  },\n  states: {\n    idle: {\n      on: {\n        \"TRIGGER.FOCUS\": {\n          target: \"focused\",\n          actions: [\"setFocusedValue\"]\n        }\n      }\n    },\n    focused: {\n      on: {\n        \"GOTO.NEXT\": {\n          actions: [\"focusNextTrigger\"]\n        },\n        \"GOTO.PREV\": {\n          actions: [\"focusPrevTrigger\"]\n        },\n        \"TRIGGER.CLICK\": [\n          {\n            guard: and(\"isExpanded\", \"canToggle\"),\n            actions: [\"collapse\"]\n          },\n          {\n            guard: not(\"isExpanded\"),\n            actions: [\"expand\"]\n          }\n        ],\n        \"GOTO.FIRST\": {\n          actions: [\"focusFirstTrigger\"]\n        },\n        \"GOTO.LAST\": {\n          actions: [\"focusLastTrigger\"]\n        },\n        \"TRIGGER.BLUR\": {\n          target: \"idle\",\n          actions: [\"clearFocusedValue\"]\n        }\n      }\n    }\n  },\n  implementations: {\n    guards: {\n      canToggle: ({ prop }) => !!prop(\"collapsible\") || !!prop(\"multiple\"),\n      isExpanded: ({ context, event }) => context.get(\"value\").includes(event.value)\n    },\n    actions: {\n      collapse({ context, prop, event }) {\n        const next = prop(\"multiple\") ? remove(context.get(\"value\"), event.value) : [];\n        context.set(\"value\", next);\n      },\n      expand({ context, prop, event }) {\n        const next = prop(\"multiple\") ? add(context.get(\"value\"), event.value) : [event.value];\n        context.set(\"value\", next);\n      },\n      focusFirstTrigger({ scope }) {\n        getFirstTriggerEl(scope)?.focus();\n      },\n      focusLastTrigger({ scope }) {\n        getLastTriggerEl(scope)?.focus();\n      },\n      focusNextTrigger({ context, scope }) {\n        const focusedValue = context.get(\"focusedValue\");\n        if (!focusedValue) return;\n        const triggerEl = getNextTriggerEl(scope, focusedValue);\n        triggerEl?.focus();\n      },\n      focusPrevTrigger({ context, scope }) {\n        const focusedValue = context.get(\"focusedValue\");\n        if (!focusedValue) return;\n        const triggerEl = getPrevTriggerEl(scope, focusedValue);\n        triggerEl?.focus();\n      },\n      setFocusedValue({ context, event }) {\n        context.set(\"focusedValue\", event.value);\n      },\n      clearFocusedValue({ context }) {\n        context.set(\"focusedValue\", null);\n      },\n      setValue({ context, event }) {\n        context.set(\"value\", event.value);\n      },\n      coarseValue({ context, prop }) {\n        if (!prop(\"multiple\") && context.get(\"value\").length > 1) {\n          warn(`The value of accordion should be a single value when multiple is false.`);\n          context.set(\"value\", [context.get(\"value\")[0]]);\n        }\n      }\n    }\n  }\n});\nvar props = createProps()([\n  \"collapsible\",\n  \"dir\",\n  \"disabled\",\n  \"getRootNode\",\n  \"id\",\n  \"ids\",\n  \"multiple\",\n  \"onFocusChange\",\n  \"onValueChange\",\n  \"orientation\",\n  \"value\",\n  \"defaultValue\"\n]);\nvar splitProps = createSplitProps(props);\nvar itemProps = createProps()([\"value\", \"disabled\"]);\nvar splitItemProps = createSplitProps(itemProps);\n\nexport { anatomy, connect, itemProps, machine, props, splitItemProps, splitProps };\n", "/* eslint @typescript-eslint/no-explicit-any: off */\n// symbols\nconst TRACK_MEMO_SYMBOL = Symbol();\nconst GET_ORIGINAL_SYMBOL = Symbol();\n// properties\nconst AFFECTED_PROPERTY = 'a';\nconst IS_TARGET_COPIED_PROPERTY = 'f';\nconst PROXY_PROPERTY = 'p';\nconst PROXY_CACHE_PROPERTY = 'c';\nconst TARGET_CACHE_PROPERTY = 't';\nconst HAS_KEY_PROPERTY = 'h';\nconst ALL_OWN_KEYS_PROPERTY = 'w';\nconst HAS_OWN_KEY_PROPERTY = 'o';\nconst KEYS_PROPERTY = 'k';\n// function to create a new bare proxy\nlet newProxy = (target, handler) => new Proxy(target, handler);\n// get object prototype\nconst getProto = Object.getPrototypeOf;\nconst objectsToTrack = new WeakMap();\n// check if obj is a plain object or an array\nconst isObjectToTrack = (obj) => obj &&\n    (objectsToTrack.has(obj)\n        ? objectsToTrack.get(obj)\n        : getProto(obj) === Object.prototype || getProto(obj) === Array.prototype);\n// check if it is object\nconst isObject = (x) => typeof x === 'object' && x !== null;\n// Properties that are both non-configurable and non-writable will break\n// the proxy get trap when we try to return a recursive/child compare proxy\n// from them. We can avoid this by making a copy of the target object with\n// all descriptors marked as configurable, see `copyTargetObject`.\n// See: https://github.com/dai-shi/proxy-compare/pull/8\nconst needsToCopyTargetObject = (obj) => Object.values(Object.getOwnPropertyDescriptors(obj)).some((descriptor) => !descriptor.configurable && !descriptor.writable);\n// Make a copy with all descriptors marked as configurable.\nconst copyTargetObject = (obj) => {\n    if (Array.isArray(obj)) {\n        // Arrays need a special way to copy\n        return Array.from(obj);\n    }\n    // For non-array objects, we create a new object keeping the prototype\n    // with changing all configurable options (otherwise, proxies will complain)\n    const descriptors = Object.getOwnPropertyDescriptors(obj);\n    Object.values(descriptors).forEach((desc) => {\n        desc.configurable = true;\n    });\n    return Object.create(getProto(obj), descriptors);\n};\nconst createProxyHandler = (origObj, isTargetCopied) => {\n    const state = {\n        [IS_TARGET_COPIED_PROPERTY]: isTargetCopied,\n    };\n    let trackObject = false; // for trackMemo\n    const recordUsage = (type, key) => {\n        if (!trackObject) {\n            let used = state[AFFECTED_PROPERTY].get(origObj);\n            if (!used) {\n                used = {};\n                state[AFFECTED_PROPERTY].set(origObj, used);\n            }\n            if (type === ALL_OWN_KEYS_PROPERTY) {\n                used[ALL_OWN_KEYS_PROPERTY] = true;\n            }\n            else {\n                let set = used[type];\n                if (!set) {\n                    set = new Set();\n                    used[type] = set;\n                }\n                set.add(key);\n            }\n        }\n    };\n    const recordObjectAsUsed = () => {\n        trackObject = true;\n        state[AFFECTED_PROPERTY].delete(origObj);\n    };\n    const handler = {\n        get(target, key) {\n            if (key === GET_ORIGINAL_SYMBOL) {\n                return origObj;\n            }\n            recordUsage(KEYS_PROPERTY, key);\n            return createProxy(Reflect.get(target, key), state[AFFECTED_PROPERTY], state[PROXY_CACHE_PROPERTY], state[TARGET_CACHE_PROPERTY]);\n        },\n        has(target, key) {\n            if (key === TRACK_MEMO_SYMBOL) {\n                recordObjectAsUsed();\n                return true;\n            }\n            recordUsage(HAS_KEY_PROPERTY, key);\n            return Reflect.has(target, key);\n        },\n        getOwnPropertyDescriptor(target, key) {\n            recordUsage(HAS_OWN_KEY_PROPERTY, key);\n            return Reflect.getOwnPropertyDescriptor(target, key);\n        },\n        ownKeys(target) {\n            recordUsage(ALL_OWN_KEYS_PROPERTY);\n            return Reflect.ownKeys(target);\n        },\n    };\n    if (isTargetCopied) {\n        handler.set = handler.deleteProperty = () => false;\n    }\n    return [handler, state];\n};\nconst getOriginalObject = (obj) => \n// unwrap proxy\nobj[GET_ORIGINAL_SYMBOL] ||\n    // otherwise\n    obj;\n/**\n * Create a proxy.\n *\n * This function will create a proxy at top level and proxy nested objects as you access them,\n * in order to keep track of which properties were accessed via get/has proxy handlers:\n *\n * NOTE: Printing of WeakMap is hard to inspect and not very readable\n * for this purpose you can use the `affectedToPathList` helper.\n *\n * @param {object} obj - Object that will be wrapped on the proxy.\n * @param {WeakMap<object, unknown>} affected -\n * WeakMap that will hold the tracking of which properties in the proxied object were accessed.\n * @param {WeakMap<object, unknown>} [proxyCache] -\n * WeakMap that will help keep referential identity for proxies.\n * @returns {Proxy<object>} - Object wrapped in a proxy.\n *\n * @example\n * import { createProxy } from 'proxy-compare';\n *\n * const original = { a: \"1\", c: \"2\", d: { e: \"3\" } };\n * const affected = new WeakMap();\n * const proxy = createProxy(original, affected);\n *\n * proxy.a // Will mark as used and track its value.\n * // This will update the affected WeakMap with original as key\n * // and a Set with \"a\"\n *\n * proxy.d // Will mark \"d\" as accessed to track and proxy itself ({ e: \"3\" }).\n * // This will update the affected WeakMap with original as key\n * // and a Set with \"d\"\n */\nexport const createProxy = (obj, affected, proxyCache, targetCache) => {\n    if (!isObjectToTrack(obj))\n        return obj;\n    let targetAndCopied = targetCache && targetCache.get(obj);\n    if (!targetAndCopied) {\n        const target = getOriginalObject(obj);\n        if (needsToCopyTargetObject(target)) {\n            targetAndCopied = [target, copyTargetObject(target)];\n        }\n        else {\n            targetAndCopied = [target];\n        }\n        targetCache === null || targetCache === void 0 ? void 0 : targetCache.set(obj, targetAndCopied);\n    }\n    const [target, copiedTarget] = targetAndCopied;\n    let handlerAndState = proxyCache && proxyCache.get(target);\n    if (!handlerAndState ||\n        handlerAndState[1][IS_TARGET_COPIED_PROPERTY] !== !!copiedTarget) {\n        handlerAndState = createProxyHandler(target, !!copiedTarget);\n        handlerAndState[1][PROXY_PROPERTY] = newProxy(copiedTarget || target, handlerAndState[0]);\n        if (proxyCache) {\n            proxyCache.set(target, handlerAndState);\n        }\n    }\n    handlerAndState[1][AFFECTED_PROPERTY] = affected;\n    handlerAndState[1][PROXY_CACHE_PROPERTY] = proxyCache;\n    handlerAndState[1][TARGET_CACHE_PROPERTY] = targetCache;\n    return handlerAndState[1][PROXY_PROPERTY];\n};\nconst isAllOwnKeysChanged = (prevObj, nextObj) => {\n    const prevKeys = Reflect.ownKeys(prevObj);\n    const nextKeys = Reflect.ownKeys(nextObj);\n    return (prevKeys.length !== nextKeys.length ||\n        prevKeys.some((k, i) => k !== nextKeys[i]));\n};\n/**\n * Compare changes on objects.\n *\n * This will compare the affected properties on tracked objects inside the proxy\n * to check if there were any changes made to it,\n * by default if no property was accessed on the proxy it will attempt to do a\n * reference equality check for the objects provided (Object.is(a, b)). If you access a property\n * on the proxy, then isChanged will only compare the affected properties.\n *\n * @param {object} prevObj - The previous object to compare.\n * @param {object} nextObj - Object to compare with the previous one.\n * @param {WeakMap<object, unknown>} affected -\n * WeakMap that holds the tracking of which properties in the proxied object were accessed.\n * @param {WeakMap<object, unknown>} [cache] -\n * WeakMap that holds a cache of the comparisons for better performance with repetitive comparisons,\n * and to avoid infinite loop with circular structures.\n * @returns {boolean} - Boolean indicating if the affected property on the object has changed.\n *\n * @example\n * import { createProxy, isChanged } from 'proxy-compare';\n *\n * const obj = { a: \"1\", c: \"2\", d: { e: \"3\" } };\n * const affected = new WeakMap();\n *\n * const proxy = createProxy(obj, affected);\n *\n * proxy.a\n *\n * isChanged(obj, { a: \"1\" }, affected) // false\n *\n * proxy.a = \"2\"\n *\n * isChanged(obj, { a: \"1\" }, affected) // true\n */\nexport const isChanged = (prevObj, nextObj, affected, cache, // for object with cycles\nisEqual = Object.is) => {\n    if (isEqual(prevObj, nextObj)) {\n        return false;\n    }\n    if (!isObject(prevObj) || !isObject(nextObj))\n        return true;\n    const used = affected.get(getOriginalObject(prevObj));\n    if (!used)\n        return true;\n    if (cache) {\n        const hit = cache.get(prevObj);\n        if (hit === nextObj) {\n            return false;\n        }\n        // for object with cycles\n        cache.set(prevObj, nextObj);\n    }\n    let changed = null;\n    for (const key of used[HAS_KEY_PROPERTY] || []) {\n        changed = Reflect.has(prevObj, key) !== Reflect.has(nextObj, key);\n        if (changed)\n            return changed;\n    }\n    if (used[ALL_OWN_KEYS_PROPERTY] === true) {\n        changed = isAllOwnKeysChanged(prevObj, nextObj);\n        if (changed)\n            return changed;\n    }\n    else {\n        for (const key of used[HAS_OWN_KEY_PROPERTY] || []) {\n            const hasPrev = !!Reflect.getOwnPropertyDescriptor(prevObj, key);\n            const hasNext = !!Reflect.getOwnPropertyDescriptor(nextObj, key);\n            changed = hasPrev !== hasNext;\n            if (changed)\n                return changed;\n        }\n    }\n    for (const key of used[KEYS_PROPERTY] || []) {\n        changed = isChanged(prevObj[key], nextObj[key], affected, cache, isEqual);\n        if (changed)\n            return changed;\n    }\n    if (changed === null)\n        throw new Error('invalid used');\n    return changed;\n};\n// explicitly track object with memo\nexport const trackMemo = (obj) => {\n    if (isObjectToTrack(obj)) {\n        return TRACK_MEMO_SYMBOL in obj;\n    }\n    return false;\n};\n/**\n * Unwrap proxy to get the original object.\n *\n * Used to retrieve the original object used to create the proxy instance with `createProxy`.\n *\n * @param {Proxy<object>} obj -  The proxy wrapper of the originial object.\n * @returns {object | null} - Return either the unwrapped object if exists.\n *\n * @example\n * import { createProxy, getUntracked } from 'proxy-compare';\n *\n * const original = { a: \"1\", c: \"2\", d: { e: \"3\" } };\n * const affected = new WeakMap();\n *\n * const proxy = createProxy(original, affected);\n * const originalFromProxy = getUntracked(proxy)\n *\n * Object.is(original, originalFromProxy) // true\n * isChanged(original, originalFromProxy, affected) // false\n */\nexport const getUntracked = (obj) => {\n    if (isObjectToTrack(obj)) {\n        return obj[GET_ORIGINAL_SYMBOL] || null;\n    }\n    return null;\n};\n/**\n * Mark object to be tracked.\n *\n * This function marks an object that will be passed into `createProxy`\n * as marked to track or not. By default only Array and Object are marked to track,\n * so this is useful for example to mark a class instance to track or to mark a object\n * to be untracked when creating your proxy.\n *\n * @param obj - Object to mark as tracked or not.\n * @param mark - Boolean indicating whether you want to track this object or not.\n * @returns - No return.\n *\n * @example\n * import { createProxy, markToTrack, isChanged } from 'proxy-compare';\n *\n * const nested = { e: \"3\" }\n *\n * markToTrack(nested, false)\n *\n * const original = { a: \"1\", c: \"2\", d: nested };\n * const affected = new WeakMap();\n *\n * const proxy = createProxy(original, affected);\n *\n * proxy.d.e\n *\n * isChanged(original, { d: { e: \"3\" } }, affected) // true\n */\nexport const markToTrack = (obj, mark = true) => {\n    objectsToTrack.set(obj, mark);\n};\n/**\n * Convert `affected` to path list\n *\n * `affected` is a weak map which is not printable.\n * This function is can convert it to printable path list.\n * It's for debugging purpose.\n *\n * @param obj - An object that is used with `createProxy`.\n * @param affected - A weak map that is used with `createProxy`.\n * @param onlyWithValues - An optional boolean to exclude object getters.\n * @returns - An array of paths.\n */\nexport const affectedToPathList = (obj, affected, onlyWithValues) => {\n    const list = [];\n    const seen = new WeakSet();\n    const walk = (x, path) => {\n        var _a, _b, _c;\n        if (seen.has(x)) {\n            // for object with cycles\n            return;\n        }\n        if (isObject(x)) {\n            seen.add(x);\n        }\n        const used = isObject(x) && affected.get(getOriginalObject(x));\n        if (used) {\n            (_a = used[HAS_KEY_PROPERTY]) === null || _a === void 0 ? void 0 : _a.forEach((key) => {\n                const segment = `:has(${String(key)})`;\n                list.push(path ? [...path, segment] : [segment]);\n            });\n            if (used[ALL_OWN_KEYS_PROPERTY] === true) {\n                const segment = ':ownKeys';\n                list.push(path ? [...path, segment] : [segment]);\n            }\n            else {\n                (_b = used[HAS_OWN_KEY_PROPERTY]) === null || _b === void 0 ? void 0 : _b.forEach((key) => {\n                    const segment = `:hasOwn(${String(key)})`;\n                    list.push(path ? [...path, segment] : [segment]);\n                });\n            }\n            (_c = used[KEYS_PROPERTY]) === null || _c === void 0 ? void 0 : _c.forEach((key) => {\n                if (!onlyWithValues ||\n                    'value' in (Object.getOwnPropertyDescriptor(x, key) || {})) {\n                    walk(x[key], path ? [...path, key] : [key]);\n                }\n            });\n        }\n        else if (path) {\n            list.push(path);\n        }\n    };\n    walk(obj);\n    return list;\n};\n/**\n * replace newProxy function.\n *\n * This can be used if you want to use proxy-polyfill.\n * Note that proxy-polyfill can't polyfill everything.\n * Use it at your own risk.\n */\nexport const replaceNewProxy = (fn) => {\n    newProxy = fn;\n};\n", "import { markToTrack, getUntracked } from 'proxy-compare';\n\n// src/global.ts\nfunction glob() {\n  if (typeof globalThis !== \"undefined\") return globalThis;\n  if (typeof self !== \"undefined\") return self;\n  if (typeof window !== \"undefined\") return window;\n  if (typeof global !== \"undefined\") return global;\n}\nfunction globalRef(key, value) {\n  const g = glob();\n  if (!g) return value();\n  g[key] || (g[key] = value());\n  return g[key];\n}\nvar refSet = globalRef(\"__zag__refSet\", () => /* @__PURE__ */ new WeakSet());\n\n// src/utils.ts\nvar isReactElement = (x) => typeof x === \"object\" && x !== null && \"$$typeof\" in x && \"props\" in x;\nvar isVueElement = (x) => typeof x === \"object\" && x !== null && \"__v_isVNode\" in x;\nvar isDOMElement = (x) => typeof x === \"object\" && x !== null && \"nodeType\" in x && typeof x.nodeName === \"string\";\nvar isElement = (x) => isReactElement(x) || isVueElement(x) || isDOMElement(x);\nvar isObject = (x) => x !== null && typeof x === \"object\";\nvar canProxy = (x) => isObject(x) && !refSet.has(x) && (Array.isArray(x) || !(Symbol.iterator in x)) && !isElement(x) && !(x instanceof WeakMap) && !(x instanceof WeakSet) && !(x instanceof Error) && !(x instanceof Number) && !(x instanceof Date) && !(x instanceof String) && !(x instanceof RegExp) && !(x instanceof ArrayBuffer) && !(x instanceof Promise) && !(x instanceof File) && !(x instanceof Blob) && !(x instanceof AbortController);\nvar isDev = () => process.env.NODE_ENV !== \"production\";\n\n// src/clone.ts\nfunction set(obj, key, val) {\n  if (typeof val.value === \"object\" && !canProxy(val.value)) val.value = clone(val.value);\n  if (!val.enumerable || val.get || val.set || !val.configurable || !val.writable || key === \"__proto__\") {\n    Object.defineProperty(obj, key, val);\n  } else obj[key] = val.value;\n}\nfunction clone(x) {\n  if (typeof x !== \"object\") return x;\n  var i = 0, k, list, tmp, str = Object.prototype.toString.call(x);\n  if (str === \"[object Object]\") {\n    tmp = Object.create(Object.getPrototypeOf(x) || null);\n  } else if (str === \"[object Array]\") {\n    tmp = Array(x.length);\n  } else if (str === \"[object Set]\") {\n    tmp = /* @__PURE__ */ new Set();\n    x.forEach(function(val) {\n      tmp.add(clone(val));\n    });\n  } else if (str === \"[object Map]\") {\n    tmp = /* @__PURE__ */ new Map();\n    x.forEach(function(val, key) {\n      tmp.set(clone(key), clone(val));\n    });\n  } else if (str === \"[object Date]\") {\n    tmp = /* @__PURE__ */ new Date(+x);\n  } else if (str === \"[object RegExp]\") {\n    tmp = new RegExp(x.source, x.flags);\n  } else if (str === \"[object DataView]\") {\n    tmp = new x.constructor(clone(x.buffer));\n  } else if (str === \"[object ArrayBuffer]\") {\n    tmp = x.slice(0);\n  } else if (str === \"[object Blob]\") {\n    tmp = x.slice();\n  } else if (str.slice(-6) === \"Array]\") {\n    tmp = new x.constructor(x);\n  }\n  if (tmp) {\n    for (list = Object.getOwnPropertySymbols(x); i < list.length; i++) {\n      set(tmp, list[i], Object.getOwnPropertyDescriptor(x, list[i]));\n    }\n    for (i = 0, list = Object.getOwnPropertyNames(x); i < list.length; i++) {\n      if (Object.hasOwnProperty.call(tmp, k = list[i]) && tmp[k] === x[k]) continue;\n      set(tmp, k, Object.getOwnPropertyDescriptor(x, k));\n    }\n  }\n  return tmp || x;\n}\nvar proxyStateMap = globalRef(\"__zag__proxyStateMap\", () => /* @__PURE__ */ new WeakMap());\nvar buildProxyFunction = (objectIs = Object.is, newProxy = (target, handler) => new Proxy(target, handler), snapCache = /* @__PURE__ */ new WeakMap(), createSnapshot = (target, version) => {\n  const cache = snapCache.get(target);\n  if (cache?.[0] === version) {\n    return cache[1];\n  }\n  const snap = Array.isArray(target) ? [] : Object.create(Object.getPrototypeOf(target));\n  markToTrack(snap, true);\n  snapCache.set(target, [version, snap]);\n  Reflect.ownKeys(target).forEach((key) => {\n    const value = Reflect.get(target, key);\n    if (refSet.has(value)) {\n      markToTrack(value, false);\n      snap[key] = value;\n    } else if (proxyStateMap.has(value)) {\n      snap[key] = snapshot(value);\n    } else {\n      snap[key] = value;\n    }\n  });\n  return Object.freeze(snap);\n}, proxyCache = /* @__PURE__ */ new WeakMap(), versionHolder = [1, 1], proxyFunction2 = (initialObject) => {\n  if (!isObject(initialObject)) {\n    throw new Error(\"object required\");\n  }\n  const found = proxyCache.get(initialObject);\n  if (found) {\n    return found;\n  }\n  let version = versionHolder[0];\n  const listeners = /* @__PURE__ */ new Set();\n  const notifyUpdate = (op, nextVersion = ++versionHolder[0]) => {\n    if (version !== nextVersion) {\n      version = nextVersion;\n      listeners.forEach((listener) => listener(op, nextVersion));\n    }\n  };\n  let checkVersion = versionHolder[1];\n  const ensureVersion = (nextCheckVersion = ++versionHolder[1]) => {\n    if (checkVersion !== nextCheckVersion && !listeners.size) {\n      checkVersion = nextCheckVersion;\n      propProxyStates.forEach(([propProxyState]) => {\n        const propVersion = propProxyState[1](nextCheckVersion);\n        if (propVersion > version) {\n          version = propVersion;\n        }\n      });\n    }\n    return version;\n  };\n  const createPropListener = (prop) => (op, nextVersion) => {\n    const newOp = [...op];\n    newOp[1] = [prop, ...newOp[1]];\n    notifyUpdate(newOp, nextVersion);\n  };\n  const propProxyStates = /* @__PURE__ */ new Map();\n  const addPropListener = (prop, propProxyState) => {\n    if (isDev() && propProxyStates.has(prop)) {\n      throw new Error(\"prop listener already exists\");\n    }\n    if (listeners.size) {\n      const remove = propProxyState[3](createPropListener(prop));\n      propProxyStates.set(prop, [propProxyState, remove]);\n    } else {\n      propProxyStates.set(prop, [propProxyState]);\n    }\n  };\n  const removePropListener = (prop) => {\n    const entry = propProxyStates.get(prop);\n    if (entry) {\n      propProxyStates.delete(prop);\n      entry[1]?.();\n    }\n  };\n  const addListener = (listener) => {\n    listeners.add(listener);\n    if (listeners.size === 1) {\n      propProxyStates.forEach(([propProxyState, prevRemove], prop) => {\n        if (isDev() && prevRemove) {\n          throw new Error(\"remove already exists\");\n        }\n        const remove = propProxyState[3](createPropListener(prop));\n        propProxyStates.set(prop, [propProxyState, remove]);\n      });\n    }\n    const removeListener = () => {\n      listeners.delete(listener);\n      if (listeners.size === 0) {\n        propProxyStates.forEach(([propProxyState, remove], prop) => {\n          if (remove) {\n            remove();\n            propProxyStates.set(prop, [propProxyState]);\n          }\n        });\n      }\n    };\n    return removeListener;\n  };\n  const baseObject = Array.isArray(initialObject) ? [] : Object.create(Object.getPrototypeOf(initialObject));\n  const handler = {\n    deleteProperty(target, prop) {\n      const prevValue = Reflect.get(target, prop);\n      removePropListener(prop);\n      const deleted = Reflect.deleteProperty(target, prop);\n      if (deleted) {\n        notifyUpdate([\"delete\", [prop], prevValue]);\n      }\n      return deleted;\n    },\n    set(target, prop, value, receiver) {\n      const hasPrevValue = Reflect.has(target, prop);\n      const prevValue = Reflect.get(target, prop, receiver);\n      if (hasPrevValue && (objectIs(prevValue, value) || proxyCache.has(value) && objectIs(prevValue, proxyCache.get(value)))) {\n        return true;\n      }\n      removePropListener(prop);\n      if (isObject(value)) {\n        value = getUntracked(value) || value;\n      }\n      let nextValue = value;\n      if (Object.getOwnPropertyDescriptor(target, prop)?.set) ; else {\n        if (!proxyStateMap.has(value) && canProxy(value)) {\n          nextValue = proxy(value);\n        }\n        const childProxyState = !refSet.has(nextValue) && proxyStateMap.get(nextValue);\n        if (childProxyState) {\n          addPropListener(prop, childProxyState);\n        }\n      }\n      Reflect.set(target, prop, nextValue, receiver);\n      notifyUpdate([\"set\", [prop], value, prevValue]);\n      return true;\n    }\n  };\n  const proxyObject = newProxy(baseObject, handler);\n  proxyCache.set(initialObject, proxyObject);\n  const proxyState = [baseObject, ensureVersion, createSnapshot, addListener];\n  proxyStateMap.set(proxyObject, proxyState);\n  Reflect.ownKeys(initialObject).forEach((key) => {\n    const desc = Object.getOwnPropertyDescriptor(initialObject, key);\n    if (desc.get || desc.set) {\n      Object.defineProperty(baseObject, key, desc);\n    } else {\n      proxyObject[key] = initialObject[key];\n    }\n  });\n  return proxyObject;\n}) => [\n  // public functions\n  proxyFunction2,\n  // shared state\n  proxyStateMap,\n  refSet,\n  // internal things\n  objectIs,\n  newProxy,\n  canProxy,\n  snapCache,\n  createSnapshot,\n  proxyCache,\n  versionHolder\n];\nvar [proxyFunction] = buildProxyFunction();\nfunction proxy(initialObject = {}) {\n  return proxyFunction(initialObject);\n}\nfunction subscribe(proxyObject, callback, notifyInSync) {\n  const proxyState = proxyStateMap.get(proxyObject);\n  if (isDev() && !proxyState) {\n    console.warn(\"Please use proxy object\");\n  }\n  let promise;\n  const ops = [];\n  const addListener = proxyState[3];\n  let isListenerActive = false;\n  const listener = (op) => {\n    ops.push(op);\n    if (notifyInSync) {\n      callback(ops.splice(0));\n      return;\n    }\n    if (!promise) {\n      promise = Promise.resolve().then(() => {\n        promise = void 0;\n        if (isListenerActive) {\n          callback(ops.splice(0));\n        }\n      });\n    }\n  };\n  const removeListener = addListener(listener);\n  isListenerActive = true;\n  return () => {\n    isListenerActive = false;\n    removeListener();\n  };\n}\nfunction snapshot(proxyObject) {\n  const proxyState = proxyStateMap.get(proxyObject);\n  if (isDev() && !proxyState) {\n    console.warn(\"Please use proxy object\");\n  }\n  const [target, ensureVersion, createSnapshot] = proxyState;\n  return createSnapshot(target, ensureVersion());\n}\nfunction ref(obj) {\n  refSet.add(obj);\n  return obj;\n}\n\n// src/proxy-computed.ts\nfunction proxyWithComputed(initialObject, computedFns) {\n  const keys = Object.keys(computedFns);\n  keys.forEach((key) => {\n    if (Object.getOwnPropertyDescriptor(initialObject, key)) {\n      throw new Error(\"object property already defined\");\n    }\n    const computedFn = computedFns[key];\n    const { get, set: set2 } = typeof computedFn === \"function\" ? { get: computedFn } : computedFn;\n    const desc = {};\n    desc.get = () => get(snapshot(proxyObject));\n    if (set2) {\n      desc.set = (newValue) => set2(proxyObject, newValue);\n    }\n    Object.defineProperty(initialObject, key, desc);\n  });\n  const proxyObject = proxy(initialObject);\n  return proxyObject;\n}\n\nexport { clone, globalRef, proxy, proxyWithComputed, ref, snapshot, subscribe };\n", "import { createScope, MachineStatus, INIT_STATE } from '@zag-js/core';\nexport { mergeProps } from '@zag-js/core';\nimport { createNormalizer } from '@zag-js/types';\nimport { subscribe, proxy } from '@zag-js/store';\nimport { runIfFn, compact, isFunction, warn, toArray, isString, isEqual, identity } from '@zag-js/utils';\n\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar propMap = {\n  onFocus: \"onFocusin\",\n  onBlur: \"onFocusout\",\n  onChange: \"onInput\",\n  onDoubleClick: \"onDblclick\",\n  htmlFor: \"for\",\n  className: \"class\",\n  defaultValue: \"value\",\n  defaultChecked: \"checked\"\n};\nvar caseSensitiveSvgAttrs = /* @__PURE__ */ new Set([\"viewBox\", \"preserveAspectRatio\"]);\nvar toStyleString = (style) => {\n  let string = \"\";\n  for (let key in style) {\n    const value = style[key];\n    if (value === null || value === void 0) continue;\n    if (!key.startsWith(\"--\")) key = key.replace(/[A-Z]/g, (match) => `-${match.toLowerCase()}`);\n    string += `${key}:${value};`;\n  }\n  return string;\n};\nvar normalizeProps = createNormalizer((props) => {\n  return Object.entries(props).reduce((acc, [key, value]) => {\n    if (value === void 0) return acc;\n    if (key in propMap) {\n      key = propMap[key];\n    }\n    if (key === \"style\" && typeof value === \"object\") {\n      acc.style = toStyleString(value);\n      return acc;\n    }\n    const normalizedKey = caseSensitiveSvgAttrs.has(key) ? key : key.toLowerCase();\n    acc[normalizedKey] = value;\n    return acc;\n  }, {});\n});\n\n// src/spread-props.ts\nvar prevAttrsMap = /* @__PURE__ */ new WeakMap();\nvar assignableProps = /* @__PURE__ */ new Set([\"value\", \"checked\", \"selected\"]);\nvar caseSensitiveSvgAttrs2 = /* @__PURE__ */ new Set([\n  \"viewBox\",\n  \"preserveAspectRatio\",\n  \"clipPath\",\n  \"clipRule\",\n  \"fillRule\",\n  \"strokeWidth\",\n  \"strokeLinecap\",\n  \"strokeLinejoin\",\n  \"strokeDasharray\",\n  \"strokeDashoffset\",\n  \"strokeMiterlimit\"\n]);\nvar isSvgElement = (node) => {\n  return node.tagName === \"svg\" || node.namespaceURI === \"http://www.w3.org/2000/svg\";\n};\nvar getAttributeName = (node, attrName) => {\n  const shouldPreserveCase = isSvgElement(node) && caseSensitiveSvgAttrs2.has(attrName);\n  return shouldPreserveCase ? attrName : attrName.toLowerCase();\n};\nfunction spreadProps(node, attrs) {\n  const oldAttrs = prevAttrsMap.get(node) || {};\n  const attrKeys = Object.keys(attrs);\n  const addEvt = (e, f) => {\n    node.addEventListener(e.toLowerCase(), f);\n  };\n  const remEvt = (e, f) => {\n    node.removeEventListener(e.toLowerCase(), f);\n  };\n  const onEvents = (attr) => attr.startsWith(\"on\");\n  const others = (attr) => !attr.startsWith(\"on\");\n  const setup = (attr) => addEvt(attr.substring(2), attrs[attr]);\n  const teardown = (attr) => remEvt(attr.substring(2), attrs[attr]);\n  const apply = (attrName) => {\n    const value = attrs[attrName];\n    const oldValue = oldAttrs[attrName];\n    if (value === oldValue) return;\n    if (attrName === \"class\") {\n      node.className = value ?? \"\";\n      return;\n    }\n    if (assignableProps.has(attrName)) {\n      node[attrName] = value ?? \"\";\n      return;\n    }\n    if (typeof value === \"boolean\") {\n      node.toggleAttribute(getAttributeName(node, attrName), value);\n      return;\n    }\n    if (value != null) {\n      node.setAttribute(getAttributeName(node, attrName), value);\n      return;\n    }\n    node.removeAttribute(getAttributeName(node, attrName));\n  };\n  for (const key in oldAttrs) {\n    if (attrs[key] == null) {\n      if (key === \"class\") {\n        node.className = \"\";\n      } else if (assignableProps.has(key)) {\n        node[key] = \"\";\n      } else {\n        node.removeAttribute(getAttributeName(node, key));\n      }\n    }\n  }\n  const oldEvents = Object.keys(oldAttrs).filter(onEvents);\n  oldEvents.forEach((evt) => {\n    remEvt(evt.substring(2), oldAttrs[evt]);\n  });\n  attrKeys.filter(onEvents).forEach(setup);\n  attrKeys.filter(others).forEach(apply);\n  prevAttrsMap.set(node, attrs);\n  return function cleanup() {\n    attrKeys.filter(onEvents).forEach(teardown);\n  };\n}\nfunction bindable(props) {\n  const initial = props().value ?? props().defaultValue;\n  if (props().debug) {\n    console.log(`[bindable > ${props().debug}] initial`, initial);\n  }\n  const eq = props().isEqual ?? Object.is;\n  const store = proxy({ value: initial });\n  const controlled = () => props().value !== void 0;\n  return {\n    initial,\n    ref: store,\n    get() {\n      return controlled() ? props().value : store.value;\n    },\n    set(nextValue) {\n      const prev = store.value;\n      const next = isFunction(nextValue) ? nextValue(prev) : nextValue;\n      if (props().debug) {\n        console.log(`[bindable > ${props().debug}] setValue`, { next, prev });\n      }\n      if (!controlled()) store.value = next;\n      if (!eq(next, prev)) {\n        props().onChange?.(next, prev);\n      }\n    },\n    invoke(nextValue, prevValue) {\n      props().onChange?.(nextValue, prevValue);\n    },\n    hash(value) {\n      return props().hash?.(value) ?? String(value);\n    }\n  };\n}\nbindable.cleanup = (_fn) => {\n};\nbindable.ref = (defaultValue) => {\n  let value = defaultValue;\n  return {\n    get: () => value,\n    set: (next) => {\n      value = next;\n    }\n  };\n};\n\n// src/refs.ts\nfunction createRefs(refs) {\n  const ref = { current: refs };\n  return {\n    get(key) {\n      return ref.current[key];\n    },\n    set(key, value) {\n      ref.current[key] = value;\n    }\n  };\n}\n\n// src/machine.ts\nvar VanillaMachine = class {\n  constructor(machine, userProps = {}) {\n    this.machine = machine;\n    __publicField(this, \"scope\");\n    __publicField(this, \"context\");\n    __publicField(this, \"prop\");\n    __publicField(this, \"state\");\n    __publicField(this, \"refs\");\n    __publicField(this, \"computed\");\n    __publicField(this, \"event\", { type: \"\" });\n    __publicField(this, \"previousEvent\", { type: \"\" });\n    __publicField(this, \"effects\", /* @__PURE__ */ new Map());\n    __publicField(this, \"transition\", null);\n    __publicField(this, \"cleanups\", []);\n    __publicField(this, \"subscriptions\", []);\n    __publicField(this, \"getEvent\", () => ({\n      ...this.event,\n      current: () => this.event,\n      previous: () => this.previousEvent\n    }));\n    __publicField(this, \"getStateConfig\", (state) => {\n      return this.machine.states[state];\n    });\n    __publicField(this, \"getState\", () => ({\n      ...this.state,\n      matches: (...values) => values.includes(this.state.get()),\n      hasTag: (tag) => !!this.getStateConfig(this.state.get())?.tags?.includes(tag)\n    }));\n    __publicField(this, \"debug\", (...args) => {\n      if (this.machine.debug) console.log(...args);\n    });\n    __publicField(this, \"notify\", () => {\n      this.publish();\n    });\n    __publicField(this, \"send\", (event) => {\n      if (this.status !== MachineStatus.Started) return;\n      queueMicrotask(() => {\n        if (!event) return;\n        this.previousEvent = this.event;\n        this.event = event;\n        this.debug(\"send\", event);\n        let currentState = this.state.get();\n        const eventType = event.type;\n        const transitions = this.getStateConfig(currentState)?.on?.[eventType] ?? this.machine.on?.[eventType];\n        const transition = this.choose(transitions);\n        if (!transition) return;\n        this.transition = transition;\n        const target = transition.target ?? currentState;\n        this.debug(\"transition\", transition);\n        const changed = target !== currentState;\n        if (changed) {\n          this.state.set(target);\n        } else if (transition.reenter && !changed) {\n          this.state.invoke(currentState, currentState);\n        } else {\n          this.action(transition.actions);\n        }\n      });\n    });\n    __publicField(this, \"action\", (keys) => {\n      const strs = isFunction(keys) ? keys(this.getParams()) : keys;\n      if (!strs) return;\n      const fns = strs.map((s) => {\n        const fn = this.machine.implementations?.actions?.[s];\n        if (!fn) warn(`[zag-js] No implementation found for action \"${JSON.stringify(s)}\"`);\n        return fn;\n      });\n      for (const fn of fns) {\n        fn?.(this.getParams());\n      }\n    });\n    __publicField(this, \"guard\", (str) => {\n      if (isFunction(str)) return str(this.getParams());\n      return this.machine.implementations?.guards?.[str](this.getParams());\n    });\n    __publicField(this, \"effect\", (keys) => {\n      const strs = isFunction(keys) ? keys(this.getParams()) : keys;\n      if (!strs) return;\n      const fns = strs.map((s) => {\n        const fn = this.machine.implementations?.effects?.[s];\n        if (!fn) warn(`[zag-js] No implementation found for effect \"${JSON.stringify(s)}\"`);\n        return fn;\n      });\n      const cleanups = [];\n      for (const fn of fns) {\n        const cleanup = fn?.(this.getParams());\n        if (cleanup) cleanups.push(cleanup);\n      }\n      return () => cleanups.forEach((fn) => fn?.());\n    });\n    __publicField(this, \"choose\", (transitions) => {\n      return toArray(transitions).find((t) => {\n        let result = !t.guard;\n        if (isString(t.guard)) result = !!this.guard(t.guard);\n        else if (isFunction(t.guard)) result = t.guard(this.getParams());\n        return result;\n      });\n    });\n    __publicField(this, \"subscribe\", (fn) => {\n      this.subscriptions.push(fn);\n      return () => {\n        const index = this.subscriptions.indexOf(fn);\n        if (index > -1) this.subscriptions.splice(index, 1);\n      };\n    });\n    __publicField(this, \"status\", MachineStatus.NotStarted);\n    __publicField(this, \"publish\", () => {\n      this.callTrackers();\n      this.subscriptions.forEach((fn) => fn(this.service));\n    });\n    __publicField(this, \"trackers\", []);\n    __publicField(this, \"setupTrackers\", () => {\n      this.machine.watch?.(this.getParams());\n    });\n    __publicField(this, \"callTrackers\", () => {\n      this.trackers.forEach(({ deps, fn }) => {\n        const next = deps.map((dep) => dep());\n        if (!isEqual(fn.prev, next)) {\n          fn();\n          fn.prev = next;\n        }\n      });\n    });\n    __publicField(this, \"getParams\", () => ({\n      state: this.getState(),\n      context: this.context,\n      event: this.getEvent(),\n      prop: this.prop,\n      send: this.send,\n      action: this.action,\n      guard: this.guard,\n      track: (deps, fn) => {\n        fn.prev = deps.map((dep) => dep());\n        this.trackers.push({ deps, fn });\n      },\n      refs: this.refs,\n      computed: this.computed,\n      flush: identity,\n      scope: this.scope,\n      choose: this.choose\n    }));\n    const { id, ids, getRootNode } = runIfFn(userProps);\n    this.scope = createScope({ id, ids, getRootNode });\n    const prop = (key) => {\n      const __props = runIfFn(userProps);\n      const props = machine.props?.({ props: compact(__props), scope: this.scope }) ?? __props;\n      return props[key];\n    };\n    this.prop = prop;\n    const context = machine.context?.({\n      prop,\n      bindable,\n      scope: this.scope,\n      flush(fn) {\n        queueMicrotask(fn);\n      },\n      getContext() {\n        return ctx;\n      },\n      getComputed() {\n        return computed;\n      },\n      getRefs() {\n        return refs;\n      },\n      getEvent: this.getEvent.bind(this)\n    });\n    if (context) {\n      Object.values(context).forEach((item) => {\n        const unsub = subscribe(item.ref, () => this.notify());\n        this.cleanups.push(unsub);\n      });\n    }\n    const ctx = {\n      get(key) {\n        return context?.[key].get();\n      },\n      set(key, value) {\n        context?.[key].set(value);\n      },\n      initial(key) {\n        return context?.[key].initial;\n      },\n      hash(key) {\n        const current = context?.[key].get();\n        return context?.[key].hash(current);\n      }\n    };\n    this.context = ctx;\n    const computed = (key) => {\n      return machine.computed?.[key]({\n        context: ctx,\n        event: this.getEvent(),\n        prop,\n        refs: this.refs,\n        scope: this.scope,\n        computed\n      }) ?? {};\n    };\n    this.computed = computed;\n    const refs = createRefs(machine.refs?.({ prop, context: ctx }) ?? {});\n    this.refs = refs;\n    const state = bindable(() => ({\n      defaultValue: machine.initialState({ prop }),\n      onChange: (nextState, prevState) => {\n        if (prevState) {\n          const exitEffects = this.effects.get(prevState);\n          exitEffects?.();\n          this.effects.delete(prevState);\n        }\n        if (prevState) {\n          this.action(this.getStateConfig(prevState)?.exit);\n        }\n        this.action(this.transition?.actions);\n        const cleanup = this.effect(this.getStateConfig(nextState)?.effects);\n        if (cleanup) this.effects.set(nextState, cleanup);\n        if (prevState === INIT_STATE) {\n          this.action(machine.entry);\n          const cleanup2 = this.effect(machine.effects);\n          if (cleanup2) this.effects.set(INIT_STATE, cleanup2);\n        }\n        this.action(this.getStateConfig(nextState)?.entry);\n      }\n    }));\n    this.state = state;\n    this.cleanups.push(subscribe(this.state.ref, () => this.notify()));\n  }\n  start() {\n    this.status = MachineStatus.Started;\n    this.debug(\"initializing...\");\n    this.state.invoke(this.state.initial, INIT_STATE);\n    this.setupTrackers();\n  }\n  stop() {\n    this.effects.forEach((fn) => fn?.());\n    this.effects.clear();\n    this.transition = null;\n    this.action(this.machine.exit);\n    this.cleanups.forEach((unsub) => unsub());\n    this.cleanups = [];\n    this.subscriptions = [];\n    this.status = MachineStatus.Stopped;\n    this.debug(\"unmounting...\");\n  }\n  get service() {\n    return {\n      state: this.getState(),\n      send: this.send,\n      context: this.context,\n      prop: this.prop,\n      scope: this.scope,\n      refs: this.refs,\n      computed: this.computed,\n      event: this.getEvent(),\n      getStatus: () => this.status\n    };\n  }\n};\n\nexport { VanillaMachine, normalizeProps, spreadProps };\n", "import { VanillaMachine } from \"@zag-js/vanilla\";\n\ninterface ComponentInterface<Api> {\n  el: HTMLElement;\n  machine: VanillaMachine<any>;\n  api: Api;\n\n  init(): void;\n  destroy(): void;\n  render(): void;\n}\n\nexport abstract class Component<Props, Api> implements ComponentInterface<Api> {\n  el: HTMLElement;\n  machine: VanillaMachine<any>;\n  api: Api;\n\n  constructor(el: HTMLElement | null, props: Props) {\n    if (!el) throw new Error(\"Root element not found\");\n    this.el = el;\n    this.machine = this.initMachine(props);\n    this.api = this.initApi();\n  }\n\n  abstract initMachine(props: Props): VanillaMachine<any>;\n  abstract initApi(): Api;\n  abstract render(): void;\n\n  init = () => {\n    this.render();\n    this.machine.subscribe(() => {\n      this.api = this.initApi();\n      this.render();\n    });\n    this.machine.start();\n  };\n\n  destroy = () => {\n    this.machine.stop();\n  };\n}\n", "/**\n * Corex utility functions for working with Zag.js components.\n *\n * Note: `normalizeProps` is provided by @zag-js/vanilla and is imported from there.\n * `spreadProps` is wrapped to ensure ARIA boolean attributes are converted to strings\n * for accessibility compliance.\n */\nimport { spreadProps as zagSpreadProps } from \"@zag-js/vanilla\";\n\n/**\n * Wrapper around zag's spreadProps that converts boolean ARIA attributes to strings\n * (\"true\" or \"false\") for accessibility compliance. All other attributes are passed\n * through unchanged.\n *\n * The vanilla spreadProps removes boolean false attributes, but ARIA attributes\n * should always be present as strings when provided by the API.\n *\n * Exception: `aria-readonly` is omitted when false as it's invalid on certain roles\n * (e.g., role=\"button\").\n */\nexport function spreadProps(\n  node: Element,\n  attrs: Record<string, any>,\n): () => void {\n  const normalizedAttrs: Record<string, any> = {};\n\n  for (const [attrName, value] of Object.entries(attrs)) {\n    if (typeof value === \"boolean\") {\n      const lowerAttrName = attrName.toLowerCase();\n      if (lowerAttrName.startsWith(\"aria-\")) {\n        if (lowerAttrName === \"aria-readonly\" && !value) continue;\n        normalizedAttrs[attrName] = String(value);\n      } else {\n        normalizedAttrs[attrName] = value;\n      }\n    } else {\n      normalizedAttrs[attrName] = value;\n    }\n  }\n\n  return zagSpreadProps(node, normalizedAttrs);\n}\n\ntype PropertyType = \"string\" | \"boolean\" | \"number\" | \"string[]\";\ntype PropMap = Record<string, PropertyType>;\n/**\n * Renders a specific part of the UI based on the component's props.\n * If `propsToSend` is a PropMap, attributes are read from the DOM.\n * If `propsToSend` is a plain object, it is passed directly to the API.\n *\n * NOTE: This version treats the passed `root` element itself as a candidate\n * part (so you can call renderPart(li, 'item', api, { item }) for a single li).\n */\nexport const renderPart = (\n  root: HTMLElement,\n  name: string,\n  api: any,\n  propsToSend?: PropMap | Record<string, any | ((el: HTMLElement) => any)>,\n) => {\n  const camelizedName = name\n    .split(\"-\")\n    .map((word, index) =>\n      index === 0 ? word : word.charAt(0).toUpperCase() + word.slice(1),\n    )\n    .join(\"\");\n  const getterName = `get${camelizedName.charAt(0).toUpperCase()}${camelizedName.slice(1)}Props`;\n  if (typeof api[getterName] !== \"function\") return;\n\n  // Collect parts: include root itself if it matches, plus any descendants\n  const parts: HTMLElement[] = [];\n  try {\n    if (\n      (root as Element).matches &&\n      (root as Element).matches(`[data-part='${name}']`)\n    ) {\n      parts.push(root);\n    }\n  } catch (e) {\n    console.log(e);\n  }\n  parts.push(\n    ...Array.from(root.querySelectorAll<HTMLElement>(`[data-part='${name}']`)),\n  );\n\n  // Find the component root (closest ancestor with class containing \"-js\")\n  const componentRoot = root.closest('[class*=\"-js\"]') as HTMLElement | null;\n\n  const scopedParts = componentRoot\n    ? parts.filter((part) => part.closest('[class*=\"-js\"]') === componentRoot)\n    : parts;\n\n  scopedParts.forEach((part) => {\n    let props: Record<string, any> | undefined;\n    if (propsToSend) {\n      if (isPropMap(propsToSend)) {\n        props = {};\n        for (const [prop, type] of Object.entries(propsToSend)) {\n          const getter =\n            type === \"string\"\n              ? getString\n              : type === \"boolean\"\n                ? getBoolean\n                : type === \"number\"\n                  ? getNumber\n                  : type === \"string[]\"\n                    ? getStringList\n                    : getString;\n          props[prop] = getter(part, prop);\n        }\n      } else {\n        props = {};\n        for (const [key, value] of Object.entries(propsToSend)) {\n          props[key] = typeof value === \"function\" ? value(part) : value;\n        }\n      }\n    }\n    const result = props ? api[getterName](props) : api[getterName]();\n    spreadProps(part, result);\n    if (name === \"preview\") {\n      const childrenValue = part.getAttribute(\"children\");\n      if (childrenValue !== null) part.textContent = childrenValue;\n    }\n  });\n};\nfunction isPropMap(value: any): value is PropMap {\n  if (typeof value !== \"object\" || value === null) return false;\n  return Object.values(value).every(\n    (v) =>\n      v === \"string\" || v === \"boolean\" || v === \"number\" || v === \"string[]\",\n  );\n}\n\n/**\n * Renders a list of items inside the root element. Each item is identified by the `name`, and the\n * properties for each item are retrieved from the API based on its `data-value`, `data-disabled`, and `data-index` attributes.\n * @param root - The root HTML element containing the items.\n * @param name - The name of the item part to render.\n * @param api - The API object used to retrieve the properties for each item.\n * ```\n */\nexport function renderList<T extends { value: string; label?: string }>(\n  root: HTMLElement,\n  name: string,\n  api: any,\n  items: T[],\n) {\n  const parts = root.querySelectorAll<HTMLElement>(`[data-part='${name}']`);\n  const getter = api[`get${capitalize(name)}Props`];\n  parts.forEach((el, index) => {\n    const value = el.getAttribute(\"data-value\") || items[index]?.value;\n    const item = items.find((item) => item.value === value);\n    if (!item) return;\n    const props = getter({ item });\n    spreadProps(el, props);\n  });\n}\n\nfunction capitalize(str: string): string {\n  return str.replace(/(^|-)([a-z])/g, (_m, _p, l) => l.toUpperCase());\n}\ninterface Node {\n  id: string;\n  name: string;\n  children?: Node[];\n}\n/**\n * Recursively searches for a node in a hierarchical structure based on its `id`.\n * @param tree - The tree structure to search through.\n * @param id - The ID of the node to find.\n * @returns The node if found, or `null` if no node with the specified ID exists.\n * ```\n */\nexport function findNodeById(tree: Node, id: string): Node | null {\n  if (tree.id === id) return tree;\n  if (!tree.children) return null;\n  for (const child of tree.children) {\n    const found = findNodeById(child, id);\n    if (found) return found;\n  }\n  return null;\n}\n/**\n * Tree View Component: Renders a node from the provided hierarchical tree view into the specified part in the UI.\n * The part is identified by the `name`, and the node is retrieved from the tree using its `id` attribute.\n * @param root - The root HTML element in which the node resides.\n * @param name - The name of the node part to render.\n * @param api - The API object used to retrieve the properties for the node.\n * @param tree - The hierarchical tree structure containing the nodes.\n *\n * Example:\n * ```ts\n * const root = document.getElementById('root');\n * const tree = { id: '1', name: 'root', children: [{ id: '2', name: 'child' }] };\n * renderNode(root, 'node', api, tree); // Renders the node with properties from the tree\n * ```\n */\nexport const renderNode = (\n  root: HTMLElement,\n  name: string,\n  api: any,\n  tree: Node,\n) => {\n  const parts = root.querySelectorAll<HTMLElement>(`[data-part='${name}']`);\n  // Convert part name to API method name, e.g., \"branch-control\" \u2192 \"getBranchControlProps\"\n  const camelizedName = name.replace(\n    /(^|-)([a-z])/g,\n    (_match, _prefix, letter) => letter.toUpperCase(),\n  );\n  const getterName = `get${camelizedName}Props`;\n  // Helper to recursively find node and index path\n  const findNodeById = (\n    node: Node,\n    id: string,\n    path: number[] = [],\n  ): { node: Node; indexPath: number[] } | null => {\n    if (node.id === id) return { node, indexPath: path };\n    if (node.children) {\n      for (let i = 0; i < node.children.length; i++) {\n        const found = findNodeById(node.children[i], id, [...path, i]);\n        if (found) return found;\n      }\n    }\n    return null;\n  };\n  parts.forEach((part) => {\n    const id = part.getAttribute(\"data-id\");\n    if (!id) return;\n    const found = findNodeById(tree, id);\n    if (!found) return;\n    const { node, indexPath } = found;\n    const getPropsFn =\n      typeof api[getterName] === \"function\" ? api[getterName] : api.getProps;\n    const props = getPropsFn({ indexPath, node });\n    spreadProps(part, props);\n    const label = part.getAttribute(\"children\");\n    if (label != null) {\n      part.textContent = label;\n    }\n  });\n};\n/**\n * Extract a string data attribute with validation for specific type\n * @param element - The HTML element to extract from\n * @param attrName - The data attribute name (without 'data-' prefix)\n * @param validValues - Optional array of allowed values\n * @returns Validated string value or undefined\n */\nexport const getString = <T extends string>(\n  element: HTMLElement,\n  attrName: string,\n  validValues?: readonly T[],\n): T | undefined => {\n  const value = element.dataset[attrName];\n  if (\n    value !== undefined &&\n    (!validValues || (validValues as readonly string[]).includes(value))\n  ) {\n    return value as T;\n  }\n  return undefined;\n};\n/**\n * Extract a list of string values from a data attribute\n * @param element - The HTML element to extract from\n * @param attrName - The data attribute name (without 'data-' prefix)\n * @returns Array of strings or undefined\n */\nexport const getStringList = (\n  element: HTMLElement,\n  attrName: string,\n): string[] | undefined => {\n  const value = element.dataset[attrName];\n  if (typeof value === \"string\") {\n    return value\n      .split(\",\")\n      .map((v) => v.trim())\n      .filter((v) => v.length > 0);\n  }\n  return undefined;\n};\n/**\n * Extract a number data attribute with optional validation\n * @param element - The HTML element to extract from\n * @param attrName - The data attribute name (without 'data-' prefix)\n * @param validValues - Optional array of allowed numeric values\n * @returns Parsed number value or undefined\n */\nexport const getNumber = (\n  element: HTMLElement,\n  attrName: string,\n  validValues?: readonly number[],\n): number | undefined => {\n  const raw = element.dataset[attrName];\n  if (raw === undefined) return undefined;\n  const parsed = Number(raw);\n  if (Number.isNaN(parsed)) return undefined;\n  if (validValues && !validValues.includes(parsed)) return 0;\n  return parsed;\n};\n/**\n * Extract a boolean data attribute\n * @param element - The HTML element to extract from\n * @param attrName - The data attribute name (without 'data-' prefix)\n * @returns Boolean value or undefined\n */\nexport const getBoolean = (\n  element: HTMLElement,\n  attrName: string,\n): boolean | undefined => {\n  const value = element.dataset[attrName];\n  if (value === \"\") return true;\n  if (value === \"true\") return true;\n  if (value === \"false\") return false;\n  if (element.hasAttribute(attrName)) return true;\n  if (element.hasAttribute(`data-${attrName}`)) return true;\n\n  return undefined;\n};\n/**\n * Generate a random ID if none is provided\n * @param element - Optional HTML element to get an existing id\n * @param fallbackId - Optional fallback base string (e.g. \"checkbox\")\n * @returns ID string (existing or generated)\n */\nexport const generateId = (\n  element?: HTMLElement,\n  fallbackId: string = \"element\",\n): string => {\n  if (element?.id) return element.id;\n  return `${fallbackId}-${Math.random().toString(36).substring(2, 9)}`;\n};\n\nexport function valuesEqual<T>(a: T, b: T): boolean {\n  return a === b;\n}\n\nexport function arraysEqualUnordered(\n  a: string[] = [],\n  b: string[] = [],\n): boolean {\n  if (a === b) return true;\n  if (!Array.isArray(a) || !Array.isArray(b)) return false;\n  if (a.length !== b.length) return false;\n  return a.every((v) => b.includes(v));\n}\n\n/**\n * Parse element IDs from child parts with data-part and data-id attributes\n * @param root - The root element containing the parts\n * @param partNames - Array of part names to look for (e.g., ['root', 'control', 'label'])\n * @returns Object with parsed IDs or undefined if no IDs found\n *\n * Example:\n * ```html\n * <div class=\"checkbox-js\">\n *   <div data-part=\"root\" data-id=\"my-root\"></div>\n *   <div data-part=\"control\" data-id=\"my-control\"></div>\n * </div>\n * ```\n * ```ts\n * const ids = getPartIds(element, ['root', 'control', 'label']);\n * // Returns: { root: 'my-root', control: 'my-control' }\n * ```\n */\nexport const getPartIds = (\n  root: HTMLElement,\n  partNames: readonly string[],\n): Record<string, string> | undefined => {\n  const ids: Record<string, string> = {};\n  let hasAnyId = false;\n\n  for (const partName of partNames) {\n    const part = root.querySelector<HTMLElement>(`[data-part=\"${partName}\"]`);\n    const id = part?.dataset.id;\n\n    if (id) {\n      // Convert kebab-case to camelCase: hidden-input -> hiddenInput\n      const camelKey = partName.replace(/-([a-z])/g, (_, letter) =>\n        letter.toUpperCase(),\n      );\n      ids[camelKey] = id;\n      hasAnyId = true;\n    }\n  }\n\n  return hasAnyId ? ids : undefined;\n};\n", "import * as accordion from \"@zag-js/accordion\";\nimport type { Direction, Orientation } from \"@zag-js/types\";\nimport { VanillaMachine, normalizeProps } from \"@zag-js/vanilla\";\n\nimport {\n  Component,\n  getString,\n  getBoolean,\n  generateId,\n  renderPart,\n  getStringList,\n  getPartIds,\n  arraysEqualUnordered,\n} from \"../lib\";\n\nexport class Accordion extends Component<accordion.Props, accordion.Api> {\n  initMachine(props: accordion.Props): VanillaMachine<any> {\n    return new VanillaMachine(accordion.machine, props);\n  }\n\n  initApi(): accordion.Api {\n    return accordion.connect(this.machine.service, normalizeProps);\n  }\n\n  render(): void {\n    renderPart(this.el, \"root\", this.api);\n\n    const items = this.el.querySelectorAll<HTMLElement>('[data-part=\"item\"]');\n    items.forEach((itemEl) => {\n      const value = getString(itemEl, \"value\");\n      const disabled = getBoolean(itemEl, \"disabled\");\n\n      renderPart(itemEl, \"item\", this.api, { value, disabled });\n\n      [\"item-trigger\", \"item-indicator\", \"item-content\"].forEach(\n        (childPart) => {\n          renderPart(itemEl, childPart, this.api, {\n            value,\n            disabled,\n          });\n        },\n      );\n    });\n  }\n}\n\nexport function initAccordion(\n  doc: HTMLElement | Document = document,\n  selector = \".accordion-js\",\n): void {\n  doc.querySelectorAll<HTMLElement>(selector).forEach((rootEl) => {\n    const items = rootEl.querySelectorAll<HTMLElement>('[data-part=\"item\"]');\n    items.forEach((itemEl, index) => {\n      let value = getString(itemEl, \"value\");\n      if (!value) {\n        value = generateId(itemEl, `accordion-item-${index}`);\n        itemEl.setAttribute(\"data-value\", value);\n      }\n    });\n    const accordion = new Accordion(rootEl, {\n      id: generateId(rootEl, \"accordion\"),\n      ids: getPartIds(rootEl, [\n        \"root\",\n        \"item\",\n        \"item-trigger\",\n        \"item-indicator\",\n        \"item-content\",\n      ]),\n      collapsible: getBoolean(rootEl, \"collapsible\"),\n      defaultValue: getStringList(rootEl, \"defaultValue\"),\n      value: getStringList(rootEl, \"value\"),\n      disabled: getBoolean(rootEl, \"disabled\"),\n      multiple: getBoolean(rootEl, \"multiple\"),\n      orientation: getString<Orientation>(rootEl, \"orientation\", [\n        \"horizontal\",\n        \"vertical\",\n      ]),\n      dir: getString<Direction>(rootEl, \"dir\", [\"ltr\", \"rtl\"]),\n      onFocusChange(details) {\n        const eventName = getString(rootEl, \"onFocusChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onValueChange(details) {\n        const eventName = getString(rootEl, \"onValueChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n    });\n\n    accordion.init();\n\n    accordion.el.addEventListener(\"accordion:set-value\", (event) => {\n      const { value } = (event as CustomEvent<{ value: string[] }>).detail;\n      const current = accordion.api.value;\n      if (!arraysEqualUnordered(current, value)) {\n        accordion.api.setValue(value);\n      }\n    });\n\n    accordion.el.addEventListener(\"accordion:value\", (event) => {\n      const callback = (\n        event as CustomEvent<{ callback: (value: string[]) => void }>\n      ).detail.callback;\n      if (callback && typeof callback === \"function\") {\n        callback(accordion.api.value);\n      }\n    });\n\n    accordion.el.addEventListener(\"accordion:focused-value\", (event) => {\n      const callback = (\n        event as CustomEvent<{ callback: (value: string | null) => void }>\n      ).detail.callback;\n      if (callback) callback(accordion.api.focusedValue);\n    });\n  });\n}\n", "var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n\n// src/affine-transform.ts\nvar AffineTransform = class _AffineTransform {\n  constructor([m00, m01, m02, m10, m11, m12] = [0, 0, 0, 0, 0, 0]) {\n    __publicField(this, \"m00\");\n    __publicField(this, \"m01\");\n    __publicField(this, \"m02\");\n    __publicField(this, \"m10\");\n    __publicField(this, \"m11\");\n    __publicField(this, \"m12\");\n    __publicField(this, \"rotate\", (...args) => {\n      return this.prepend(_AffineTransform.rotate(...args));\n    });\n    __publicField(this, \"scale\", (...args) => {\n      return this.prepend(_AffineTransform.scale(...args));\n    });\n    __publicField(this, \"translate\", (...args) => {\n      return this.prepend(_AffineTransform.translate(...args));\n    });\n    this.m00 = m00;\n    this.m01 = m01;\n    this.m02 = m02;\n    this.m10 = m10;\n    this.m11 = m11;\n    this.m12 = m12;\n  }\n  applyTo(point) {\n    const { x, y } = point;\n    const { m00, m01, m02, m10, m11, m12 } = this;\n    return {\n      x: m00 * x + m01 * y + m02,\n      y: m10 * x + m11 * y + m12\n    };\n  }\n  prepend(other) {\n    return new _AffineTransform([\n      this.m00 * other.m00 + this.m01 * other.m10,\n      // m00\n      this.m00 * other.m01 + this.m01 * other.m11,\n      // m01\n      this.m00 * other.m02 + this.m01 * other.m12 + this.m02,\n      // m02\n      this.m10 * other.m00 + this.m11 * other.m10,\n      // m10\n      this.m10 * other.m01 + this.m11 * other.m11,\n      // m11\n      this.m10 * other.m02 + this.m11 * other.m12 + this.m12\n      // m12\n    ]);\n  }\n  append(other) {\n    return new _AffineTransform([\n      other.m00 * this.m00 + other.m01 * this.m10,\n      // m00\n      other.m00 * this.m01 + other.m01 * this.m11,\n      // m01\n      other.m00 * this.m02 + other.m01 * this.m12 + other.m02,\n      // m02\n      other.m10 * this.m00 + other.m11 * this.m10,\n      // m10\n      other.m10 * this.m01 + other.m11 * this.m11,\n      // m11\n      other.m10 * this.m02 + other.m11 * this.m12 + other.m12\n      // m12\n    ]);\n  }\n  get determinant() {\n    return this.m00 * this.m11 - this.m01 * this.m10;\n  }\n  get isInvertible() {\n    const det = this.determinant;\n    return isFinite(det) && isFinite(this.m02) && isFinite(this.m12) && det !== 0;\n  }\n  invert() {\n    const det = this.determinant;\n    return new _AffineTransform([\n      this.m11 / det,\n      // m00\n      -this.m01 / det,\n      // m01\n      (this.m01 * this.m12 - this.m11 * this.m02) / det,\n      // m02\n      -this.m10 / det,\n      // m10\n      this.m00 / det,\n      // m11\n      (this.m10 * this.m02 - this.m00 * this.m12) / det\n      // m12\n    ]);\n  }\n  get array() {\n    return [this.m00, this.m01, this.m02, this.m10, this.m11, this.m12, 0, 0, 1];\n  }\n  get float32Array() {\n    return new Float32Array(this.array);\n  }\n  // Static\n  static get identity() {\n    return new _AffineTransform([1, 0, 0, 0, 1, 0]);\n  }\n  static rotate(theta, origin) {\n    const rotation = new _AffineTransform([Math.cos(theta), -Math.sin(theta), 0, Math.sin(theta), Math.cos(theta), 0]);\n    if (origin && (origin.x !== 0 || origin.y !== 0)) {\n      return _AffineTransform.multiply(\n        _AffineTransform.translate(origin.x, origin.y),\n        rotation,\n        _AffineTransform.translate(-origin.x, -origin.y)\n      );\n    }\n    return rotation;\n  }\n  static scale(sx, sy = sx, origin = { x: 0, y: 0 }) {\n    const scale = new _AffineTransform([sx, 0, 0, 0, sy, 0]);\n    if (origin.x !== 0 || origin.y !== 0) {\n      return _AffineTransform.multiply(\n        _AffineTransform.translate(origin.x, origin.y),\n        scale,\n        _AffineTransform.translate(-origin.x, -origin.y)\n      );\n    }\n    return scale;\n  }\n  static translate(tx, ty) {\n    return new _AffineTransform([1, 0, tx, 0, 1, ty]);\n  }\n  static multiply(...[first, ...rest]) {\n    if (!first) return _AffineTransform.identity;\n    return rest.reduce((result, item) => result.prepend(item), first);\n  }\n  get a() {\n    return this.m00;\n  }\n  get b() {\n    return this.m10;\n  }\n  get c() {\n    return this.m01;\n  }\n  get d() {\n    return this.m11;\n  }\n  get tx() {\n    return this.m02;\n  }\n  get ty() {\n    return this.m12;\n  }\n  get scaleComponents() {\n    return { x: this.a, y: this.d };\n  }\n  get translationComponents() {\n    return { x: this.tx, y: this.ty };\n  }\n  get skewComponents() {\n    return { x: this.c, y: this.b };\n  }\n  toString() {\n    return `matrix(${this.a}, ${this.b}, ${this.c}, ${this.d}, ${this.tx}, ${this.ty})`;\n  }\n};\n\n// src/align.ts\nfunction hAlign(a, ref, h) {\n  let x = ref.minX;\n  if (h === \"left-inside\") x = ref.minX;\n  if (h === \"left-outside\") x = ref.minX - ref.width;\n  if (h === \"right-inside\") x = ref.maxX - ref.width;\n  if (h === \"right-outside\") x = ref.maxX;\n  if (h === \"center\") x = ref.midX - ref.width / 2;\n  return { ...a, x };\n}\nfunction vAlign(a, ref, v) {\n  let y = ref.minY;\n  if (v === \"top-inside\") y = ref.minY;\n  if (v === \"top-outside\") y = ref.minY - a.height;\n  if (v === \"bottom-inside\") y = ref.maxY - a.height;\n  if (v === \"bottom-outside\") y = ref.maxY;\n  if (v === \"center\") y = ref.midY - a.height / 2;\n  return { ...a, y };\n}\nfunction alignRect(a, ref, options) {\n  const { h, v } = options;\n  return vAlign(hAlign(a, ref, h), ref, v);\n}\n\n// src/angle.ts\nfunction getPointAngle(rect, point, reference = rect.center) {\n  const x = point.x - reference.x;\n  const y = point.y - reference.y;\n  const deg = Math.atan2(x, y) * (180 / Math.PI) + 180;\n  return 360 - deg;\n}\n\n// src/clamp.ts\nvar clamp = (value, min3, max2) => Math.min(Math.max(value, min3), max2);\nvar clampPoint = (position, size, boundaryRect) => {\n  const x = clamp(position.x, boundaryRect.x, boundaryRect.x + boundaryRect.width - size.width);\n  const y = clamp(position.y, boundaryRect.y, boundaryRect.y + boundaryRect.height - size.height);\n  return { x, y };\n};\nvar defaultMinSize = {\n  width: 0,\n  height: 0\n};\nvar defaultMaxSize = {\n  width: Infinity,\n  height: Infinity\n};\nvar clampSize = (size, minSize = defaultMinSize, maxSize = defaultMaxSize) => {\n  return {\n    width: Math.min(Math.max(size.width, minSize.width), maxSize.width),\n    height: Math.min(Math.max(size.height, minSize.height), maxSize.height)\n  };\n};\n\n// src/rect.ts\nvar createPoint = (x, y) => ({ x, y });\nvar subtractPoints = (a, b) => {\n  if (!b) return a;\n  return createPoint(a.x - b.x, a.y - b.y);\n};\nvar addPoints = (a, b) => createPoint(a.x + b.x, a.y + b.y);\nfunction isPoint(v) {\n  return Reflect.has(v, \"x\") && Reflect.has(v, \"y\");\n}\nfunction createRect(r) {\n  const { x, y, width, height } = r;\n  const midX = x + width / 2;\n  const midY = y + height / 2;\n  return {\n    x,\n    y,\n    width,\n    height,\n    minX: x,\n    minY: y,\n    maxX: x + width,\n    maxY: y + height,\n    midX,\n    midY,\n    center: createPoint(midX, midY)\n  };\n}\nfunction isRect(v) {\n  return Reflect.has(v, \"x\") && Reflect.has(v, \"y\") && Reflect.has(v, \"width\") && Reflect.has(v, \"height\");\n}\nfunction getRectCenters(v) {\n  const top = createPoint(v.midX, v.minY);\n  const right = createPoint(v.maxX, v.midY);\n  const bottom = createPoint(v.midX, v.maxY);\n  const left = createPoint(v.minX, v.midY);\n  return { top, right, bottom, left };\n}\nfunction getRectCorners(v) {\n  const top = createPoint(v.minX, v.minY);\n  const right = createPoint(v.maxX, v.minY);\n  const bottom = createPoint(v.maxX, v.maxY);\n  const left = createPoint(v.minX, v.maxY);\n  return { top, right, bottom, left };\n}\nfunction getRectEdges(v) {\n  const c = getRectCorners(v);\n  const top = [c.top, c.right];\n  const right = [c.right, c.bottom];\n  const bottom = [c.left, c.bottom];\n  const left = [c.top, c.left];\n  return { top, right, bottom, left };\n}\n\n// src/intersection.ts\nfunction intersects(a, b) {\n  return a.x < b.maxX && a.y < b.maxY && a.maxX > b.x && a.maxY > b.y;\n}\nfunction intersection(a, b) {\n  const x = Math.max(a.x, b.x);\n  const y = Math.max(a.y, b.y);\n  const x2 = Math.min(a.x + a.width, b.x + b.width);\n  const y2 = Math.min(a.y + a.height, b.y + b.height);\n  return createRect({ x, y, width: x2 - x, height: y2 - y });\n}\nfunction collisions(a, b) {\n  return {\n    top: a.minY <= b.minY,\n    right: a.maxX >= b.maxX,\n    bottom: a.maxY >= b.maxY,\n    left: a.minX <= b.minX\n  };\n}\n\n// src/distance.ts\nfunction distance(a, b = { x: 0, y: 0 }) {\n  return Math.sqrt(Math.pow(a.x - b.x, 2) + Math.pow(a.y - b.y, 2));\n}\nfunction distanceFromPoint(r, p) {\n  let x = 0;\n  let y = 0;\n  if (p.x < r.x) x = r.x - p.x;\n  else if (p.x > r.maxX) x = p.x - r.maxX;\n  if (p.y < r.y) y = r.y - p.y;\n  else if (p.y > r.maxY) y = p.y - r.maxY;\n  return { x, y, value: distance({ x, y }) };\n}\nfunction distanceFromRect(a, b) {\n  if (intersects(a, b)) return { x: 0, y: 0, value: 0 };\n  const left = a.x < b.x ? a : b;\n  const right = b.x < a.x ? a : b;\n  const upper = a.y < b.y ? a : b;\n  const lower = b.y < a.y ? a : b;\n  let x = left.x === right.x ? 0 : right.x - left.maxX;\n  x = Math.max(0, x);\n  let y = upper.y === lower.y ? 0 : lower.y - upper.maxY;\n  y = Math.max(0, y);\n  return { x, y, value: distance({ x, y }) };\n}\nfunction distanceBtwEdges(a, b) {\n  return {\n    left: b.x - a.x,\n    top: b.y - a.y,\n    right: a.maxX - b.maxX,\n    bottom: a.maxY - b.maxY\n  };\n}\n\n// src/closest.ts\nfunction closest(...pts) {\n  return (a) => {\n    const ds = pts.map((b) => distance(b, a));\n    const c = Math.min.apply(Math, ds);\n    return pts[ds.indexOf(c)];\n  };\n}\nfunction closestSideToRect(ref, r) {\n  if (r.maxX <= ref.minX) return \"left\";\n  if (r.minX >= ref.maxX) return \"right\";\n  if (r.maxY <= ref.minY) return \"top\";\n  if (r.minY >= ref.maxY) return \"bottom\";\n  return \"left\";\n}\nfunction closestSideToPoint(ref, p) {\n  const { x, y } = p;\n  const dl = x - ref.minX;\n  const dr = ref.maxX - x;\n  const dt = y - ref.minY;\n  const db = ref.maxY - y;\n  let closest2 = dl;\n  let side = \"left\";\n  if (dr < closest2) {\n    closest2 = dr;\n    side = \"right\";\n  }\n  if (dt < closest2) {\n    closest2 = dt;\n    side = \"top\";\n  }\n  if (db < closest2) {\n    side = \"bottom\";\n  }\n  return side;\n}\n\n// src/constrain.ts\nvar constrainRect = (rect, boundary) => {\n  const left = Math.max(boundary.x, Math.min(rect.x, boundary.x + boundary.width - rect.width));\n  const top = Math.max(boundary.y, Math.min(rect.y, boundary.y + boundary.height - rect.height));\n  return {\n    x: left,\n    y: top,\n    width: Math.min(rect.width, boundary.width),\n    height: Math.min(rect.height, boundary.height)\n  };\n};\n\n// src/contains.ts\nfunction containsPoint(r, p) {\n  return r.minX <= p.x && p.x <= r.maxX && r.minY <= p.y && p.y <= r.maxY;\n}\nfunction containsRect(a, b) {\n  return Object.values(getRectCorners(b)).every((c) => containsPoint(a, c));\n}\nfunction contains(r, v) {\n  return isRect(v) ? containsRect(r, v) : containsPoint(r, v);\n}\n\n// src/equality.ts\nvar isSizeEqual = (a, b) => {\n  return a.width === b?.width && a.height === b?.height;\n};\nvar isPointEqual = (a, b) => {\n  return a.x === b?.x && a.y === b?.y;\n};\nvar isRectEqual = (a, b) => {\n  return isPointEqual(a, b) && isSizeEqual(a, b);\n};\n\n// src/from-element.ts\nvar styleCache = /* @__PURE__ */ new WeakMap();\nfunction getCacheComputedStyle(el) {\n  if (!styleCache.has(el)) {\n    const win = el.ownerDocument.defaultView || window;\n    styleCache.set(el, win.getComputedStyle(el));\n  }\n  return styleCache.get(el);\n}\nfunction getElementRect(el, opts = {}) {\n  return createRect(getClientRect(el, opts));\n}\nfunction getClientRect(el, opts = {}) {\n  const { excludeScrollbar = false, excludeBorders = false } = opts;\n  const { x, y, width, height } = el.getBoundingClientRect();\n  const r = { x, y, width, height };\n  const style = getCacheComputedStyle(el);\n  const { borderLeftWidth, borderTopWidth, borderRightWidth, borderBottomWidth } = style;\n  const borderXWidth = sum(borderLeftWidth, borderRightWidth);\n  const borderYWidth = sum(borderTopWidth, borderBottomWidth);\n  if (excludeBorders) {\n    r.width -= borderXWidth;\n    r.height -= borderYWidth;\n    r.x += px(borderLeftWidth);\n    r.y += px(borderTopWidth);\n  }\n  if (excludeScrollbar) {\n    const scrollbarWidth = el.offsetWidth - el.clientWidth - borderXWidth;\n    const scrollbarHeight = el.offsetHeight - el.clientHeight - borderYWidth;\n    r.width -= scrollbarWidth;\n    r.height -= scrollbarHeight;\n  }\n  return r;\n}\nvar px = (v) => parseFloat(v.replace(\"px\", \"\"));\nvar sum = (...vals) => vals.reduce((sum2, v) => sum2 + (v ? px(v) : 0), 0);\n\n// src/from-points.ts\nfunction getRectFromPoints(...pts) {\n  const xs = pts.map((p) => p.x);\n  const ys = pts.map((p) => p.y);\n  const x = Math.min(...xs);\n  const y = Math.min(...ys);\n  const width = Math.max(...xs) - x;\n  const height = Math.max(...ys) - y;\n  return createRect({ x, y, width, height });\n}\n\n// src/union.ts\nvar { min, max } = Math;\nfunction union(...rs) {\n  const pMin = {\n    x: min(...rs.map((r) => r.minX)),\n    y: min(...rs.map((r) => r.minY))\n  };\n  const pMax = {\n    x: max(...rs.map((r) => r.maxX)),\n    y: max(...rs.map((r) => r.maxY))\n  };\n  return getRectFromPoints(pMin, pMax);\n}\n\n// src/from-range.ts\nfunction fromRange(range) {\n  let rs = [];\n  const rects = Array.from(range.getClientRects());\n  if (rects.length) {\n    rs = rs.concat(rects.map(createRect));\n    return union.apply(void 0, rs);\n  }\n  let start = range.startContainer;\n  if (start.nodeType === Node.TEXT_NODE) {\n    start = start.parentNode;\n  }\n  if (start instanceof HTMLElement) {\n    const r = getElementRect(start);\n    rs.push({ ...r, x: r.maxX, width: 0 });\n  }\n  return union.apply(void 0, rs);\n}\n\n// src/from-rotation.ts\nfunction toRad(d) {\n  return d % 360 * Math.PI / 180;\n}\nfunction rotate(a, d, c) {\n  const r = toRad(d);\n  const sin = Math.sin(r);\n  const cos = Math.cos(r);\n  const x = a.x - c.x;\n  const y = a.y - c.y;\n  return {\n    x: c.x + x * cos - y * sin,\n    y: c.y + x * sin + y * cos\n  };\n}\nfunction getRotationRect(r, deg) {\n  const rr = Object.values(getRectCorners(r)).map((p) => rotate(p, deg, r.center));\n  const xs = rr.map((p) => p.x);\n  const ys = rr.map((p) => p.y);\n  const minX = Math.min(...xs);\n  const minY = Math.min(...ys);\n  const maxX = Math.max(...xs);\n  const maxY = Math.max(...ys);\n  return createRect({\n    x: minX,\n    y: minY,\n    width: maxX - minX,\n    height: maxY - minY\n  });\n}\n\n// src/from-window.ts\nfunction getWindowRect(win, opts = {}) {\n  return createRect(getViewportRect(win, opts));\n}\nfunction getViewportRect(win, opts) {\n  const { excludeScrollbar = false } = opts;\n  const { innerWidth, innerHeight, document: doc, visualViewport } = win;\n  const width = visualViewport?.width || innerWidth;\n  const height = visualViewport?.height || innerHeight;\n  const rect = { x: 0, y: 0, width, height };\n  if (excludeScrollbar) {\n    const scrollbarWidth = innerWidth - doc.documentElement.clientWidth;\n    const scrollbarHeight = innerHeight - doc.documentElement.clientHeight;\n    rect.width -= scrollbarWidth;\n    rect.height -= scrollbarHeight;\n  }\n  return rect;\n}\n\n// src/operations.ts\nvar isSymmetric = (v) => \"dx\" in v || \"dy\" in v;\nfunction inset(r, i) {\n  const v = isSymmetric(i) ? { left: i.dx, right: i.dx, top: i.dy, bottom: i.dy } : i;\n  const { top = 0, right = 0, bottom = 0, left = 0 } = v;\n  return createRect({\n    x: r.x + left,\n    y: r.y + top,\n    width: r.width - left - right,\n    height: r.height - top - bottom\n  });\n}\nfunction expand(r, v) {\n  const value = typeof v === \"number\" ? { dx: -v, dy: -v } : v;\n  return inset(r, value);\n}\nfunction shrink(r, v) {\n  const value = typeof v === \"number\" ? { dx: -v, dy: -v } : v;\n  return inset(r, value);\n}\nfunction shift(r, o) {\n  const { x = 0, y = 0 } = o;\n  return createRect({\n    x: r.x + x,\n    y: r.y + y,\n    width: r.width,\n    height: r.height\n  });\n}\n\n// src/polygon.ts\nfunction getElementPolygon(rectValue, placement) {\n  const rect = createRect(rectValue);\n  const { top, right, left, bottom } = getRectCorners(rect);\n  const [base] = placement.split(\"-\");\n  return {\n    top: [left, top, right, bottom],\n    right: [top, right, bottom, left],\n    bottom: [top, left, bottom, right],\n    left: [right, top, left, bottom]\n  }[base];\n}\nfunction isPointInPolygon(polygon, point) {\n  const { x, y } = point;\n  let c = false;\n  for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n    const xi = polygon[i].x;\n    const yi = polygon[i].y;\n    const xj = polygon[j].x;\n    const yj = polygon[j].y;\n    if (yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi) {\n      c = !c;\n    }\n  }\n  return c;\n}\nfunction createPolygonElement() {\n  const id = \"debug-polygon\";\n  const existingPolygon = document.getElementById(id);\n  if (existingPolygon) {\n    return existingPolygon;\n  }\n  const svg = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n  Object.assign(svg.style, {\n    top: \"0\",\n    left: \"0\",\n    width: \"100%\",\n    height: \"100%\",\n    opacity: \"0.15\",\n    position: \"fixed\",\n    pointerEvents: \"none\",\n    fill: \"red\"\n  });\n  const polygon = document.createElementNS(\"http://www.w3.org/2000/svg\", \"polygon\");\n  polygon.setAttribute(\"id\", id);\n  polygon.setAttribute(\"points\", \"0,0 0,0\");\n  svg.appendChild(polygon);\n  document.body.appendChild(svg);\n  return polygon;\n}\nfunction debugPolygon(polygon) {\n  const el = createPolygonElement();\n  const points = polygon.map((point) => `${point.x},${point.y}`).join(\" \");\n  el.setAttribute(\"points\", points);\n  return () => {\n    el.remove();\n  };\n}\n\n// src/compass.ts\nvar compassDirectionMap = {\n  n: { x: 0.5, y: 0 },\n  ne: { x: 1, y: 0 },\n  e: { x: 1, y: 0.5 },\n  se: { x: 1, y: 1 },\n  s: { x: 0.5, y: 1 },\n  sw: { x: 0, y: 1 },\n  w: { x: 0, y: 0.5 },\n  nw: { x: 0, y: 0 }\n};\nvar oppositeDirectionMap = {\n  n: \"s\",\n  ne: \"sw\",\n  e: \"w\",\n  se: \"nw\",\n  s: \"n\",\n  sw: \"ne\",\n  w: \"e\",\n  nw: \"se\"\n};\n\n// src/resize.ts\nvar { sign, abs, min: min2 } = Math;\nfunction getRectExtentPoint(rect, direction) {\n  const { minX, minY, maxX, maxY, midX, midY } = rect;\n  const x = direction.includes(\"w\") ? minX : direction.includes(\"e\") ? maxX : midX;\n  const y = direction.includes(\"n\") ? minY : direction.includes(\"s\") ? maxY : midY;\n  return { x, y };\n}\nfunction getOppositeDirection(direction) {\n  return oppositeDirectionMap[direction];\n}\nfunction resizeRect(rect, offset, direction, opts) {\n  const { scalingOriginMode, lockAspectRatio } = opts;\n  const extent = getRectExtentPoint(rect, direction);\n  const oppositeDirection = getOppositeDirection(direction);\n  const oppositeExtent = getRectExtentPoint(rect, oppositeDirection);\n  if (scalingOriginMode === \"center\") {\n    offset = { x: offset.x * 2, y: offset.y * 2 };\n  }\n  const newExtent = {\n    x: extent.x + offset.x,\n    y: extent.y + offset.y\n  };\n  const multiplier = {\n    x: compassDirectionMap[direction].x * 2 - 1,\n    y: compassDirectionMap[direction].y * 2 - 1\n  };\n  const newSize = {\n    width: newExtent.x - oppositeExtent.x,\n    height: newExtent.y - oppositeExtent.y\n  };\n  const scaleX = multiplier.x * newSize.width / rect.width;\n  const scaleY = multiplier.y * newSize.height / rect.height;\n  const largestMagnitude = abs(scaleX) > abs(scaleY) ? scaleX : scaleY;\n  const scale = lockAspectRatio ? { x: largestMagnitude, y: largestMagnitude } : {\n    x: extent.x === oppositeExtent.x ? 1 : scaleX,\n    y: extent.y === oppositeExtent.y ? 1 : scaleY\n  };\n  if (extent.y === oppositeExtent.y) {\n    scale.y = abs(scale.y);\n  } else if (sign(scale.y) !== sign(scaleY)) {\n    scale.y *= -1;\n  }\n  if (extent.x === oppositeExtent.x) {\n    scale.x = abs(scale.x);\n  } else if (sign(scale.x) !== sign(scaleX)) {\n    scale.x *= -1;\n  }\n  switch (scalingOriginMode) {\n    case \"extent\":\n      return transformRect(rect, AffineTransform.scale(scale.x, scale.y, oppositeExtent), false);\n    case \"center\":\n      return transformRect(\n        rect,\n        AffineTransform.scale(scale.x, scale.y, {\n          x: rect.midX,\n          y: rect.midY\n        }),\n        false\n      );\n  }\n}\nfunction createRectFromPoints(initialPoint, finalPoint, normalized = true) {\n  if (normalized) {\n    return {\n      x: min2(finalPoint.x, initialPoint.x),\n      y: min2(finalPoint.y, initialPoint.y),\n      width: abs(finalPoint.x - initialPoint.x),\n      height: abs(finalPoint.y - initialPoint.y)\n    };\n  }\n  return {\n    x: initialPoint.x,\n    y: initialPoint.y,\n    width: finalPoint.x - initialPoint.x,\n    height: finalPoint.y - initialPoint.y\n  };\n}\nfunction transformRect(rect, transform, normalized = true) {\n  const p1 = transform.applyTo({ x: rect.minX, y: rect.minY });\n  const p2 = transform.applyTo({ x: rect.maxX, y: rect.maxY });\n  return createRectFromPoints(p1, p2, normalized);\n}\n\nexport { AffineTransform, addPoints, alignRect, clampPoint, clampSize, closest, closestSideToPoint, closestSideToRect, collisions, constrainRect, contains, containsPoint, containsRect, createPoint, createRect, debugPolygon, distance, distanceBtwEdges, distanceFromPoint, distanceFromRect, expand, fromRange, getElementPolygon, getElementRect, getPointAngle, getRectCenters, getRectCorners, getRectEdges, getRectFromPoints, getRotationRect, getViewportRect, getWindowRect, inset, intersection, intersects, isPoint, isPointEqual, isPointInPolygon, isRect, isRectEqual, isSizeEqual, isSymmetric, resizeRect, rotate, shift, shrink, subtractPoints, toRad, union };\n", "import { createAnatomy } from '@zag-js/anatomy';\nimport { raf, setElementValue, trackPointerMove, dataAttr, getEventStep, isLeftClick, getEventPoint, getNativeEvent } from '@zag-js/dom-query';\nimport { createRect, getPointAngle } from '@zag-js/rect-utils';\nimport { createSplitProps, snapValueToStep } from '@zag-js/utils';\nimport { createMachine } from '@zag-js/core';\nimport { createProps } from '@zag-js/types';\n\n// src/angle-slider.anatomy.ts\nvar anatomy = createAnatomy(\"angle-slider\").parts(\n  \"root\",\n  \"label\",\n  \"thumb\",\n  \"valueText\",\n  \"control\",\n  \"track\",\n  \"markerGroup\",\n  \"marker\"\n);\nvar parts = anatomy.build();\n\n// src/angle-slider.dom.ts\nvar getRootId = (ctx) => ctx.ids?.root ?? `angle-slider:${ctx.id}`;\nvar getThumbId = (ctx) => ctx.ids?.thumb ?? `angle-slider:${ctx.id}:thumb`;\nvar getHiddenInputId = (ctx) => ctx.ids?.hiddenInput ?? `angle-slider:${ctx.id}:input`;\nvar getControlId = (ctx) => ctx.ids?.control ?? `angle-slider:${ctx.id}:control`;\nvar getValueTextId = (ctx) => ctx.ids?.valueText ?? `angle-slider:${ctx.id}:value-text`;\nvar getLabelId = (ctx) => ctx.ids?.label ?? `angle-slider:${ctx.id}:label`;\nvar getHiddenInputEl = (ctx) => ctx.getById(getHiddenInputId(ctx));\nvar getControlEl = (ctx) => ctx.getById(getControlId(ctx));\nvar getThumbEl = (ctx) => ctx.getById(getThumbId(ctx));\nvar MIN_VALUE = 0;\nvar MAX_VALUE = 359;\nfunction getAngle(controlEl, point, angularOffset) {\n  const rect = createRect(controlEl.getBoundingClientRect());\n  const angle = getPointAngle(rect, point);\n  if (angularOffset != null) {\n    return angle - angularOffset;\n  }\n  return angle;\n}\nfunction clampAngle(degree) {\n  return Math.min(Math.max(degree, MIN_VALUE), MAX_VALUE);\n}\nfunction constrainAngle(degree, step) {\n  const clampedDegree = clampAngle(degree);\n  const upperStep = Math.ceil(clampedDegree / step);\n  const nearestStep = Math.round(clampedDegree / step);\n  return upperStep >= clampedDegree / step ? upperStep * step === MAX_VALUE ? MIN_VALUE : upperStep * step : nearestStep * step;\n}\nfunction snapAngleToStep(value, step) {\n  return snapValueToStep(value, MIN_VALUE, MAX_VALUE, step);\n}\n\n// src/angle-slider.connect.ts\nfunction connect(service, normalize) {\n  const { state, send, context, prop, computed, scope } = service;\n  const dragging = state.matches(\"dragging\");\n  const value = context.get(\"value\");\n  const valueAsDegree = computed(\"valueAsDegree\");\n  const disabled = prop(\"disabled\");\n  const invalid = prop(\"invalid\");\n  const readOnly = prop(\"readOnly\");\n  const interactive = computed(\"interactive\");\n  const ariaLabel = prop(\"aria-label\");\n  const ariaLabelledBy = prop(\"aria-labelledby\");\n  return {\n    value,\n    valueAsDegree,\n    dragging,\n    setValue(value2) {\n      send({ type: \"VALUE.SET\", value: value2 });\n    },\n    getRootProps() {\n      return normalize.element({\n        ...parts.root.attrs,\n        id: getRootId(scope),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-readonly\": dataAttr(readOnly),\n        style: {\n          \"--value\": value,\n          \"--angle\": valueAsDegree\n        }\n      });\n    },\n    getLabelProps() {\n      return normalize.label({\n        ...parts.label.attrs,\n        id: getLabelId(scope),\n        htmlFor: getHiddenInputId(scope),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-readonly\": dataAttr(readOnly),\n        onClick(event) {\n          if (!interactive) return;\n          event.preventDefault();\n          getThumbEl(scope)?.focus();\n        }\n      });\n    },\n    getHiddenInputProps() {\n      return normalize.element({\n        type: \"hidden\",\n        value,\n        name: prop(\"name\"),\n        id: getHiddenInputId(scope)\n      });\n    },\n    getControlProps() {\n      return normalize.element({\n        ...parts.control.attrs,\n        role: \"presentation\",\n        id: getControlId(scope),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-readonly\": dataAttr(readOnly),\n        onPointerDown(event) {\n          if (!interactive) return;\n          if (!isLeftClick(event)) return;\n          const point = getEventPoint(event);\n          const controlEl = event.currentTarget;\n          const thumbEl = getThumbEl(scope);\n          const composedPath = getNativeEvent(event).composedPath();\n          const isOverThumb = thumbEl && composedPath.includes(thumbEl);\n          let angularOffset = null;\n          if (isOverThumb) {\n            const clickAngle = getAngle(controlEl, point);\n            angularOffset = clickAngle - value;\n          }\n          send({ type: \"CONTROL.POINTER_DOWN\", point, angularOffset });\n          event.stopPropagation();\n        },\n        style: {\n          touchAction: \"none\",\n          userSelect: \"none\",\n          WebkitUserSelect: \"none\"\n        }\n      });\n    },\n    getThumbProps() {\n      return normalize.element({\n        ...parts.thumb.attrs,\n        id: getThumbId(scope),\n        role: \"slider\",\n        \"aria-label\": ariaLabel,\n        \"aria-labelledby\": ariaLabelledBy ?? getLabelId(scope),\n        \"aria-valuemax\": 360,\n        \"aria-valuemin\": 0,\n        \"aria-valuenow\": value,\n        tabIndex: readOnly || interactive ? 0 : void 0,\n        \"data-disabled\": dataAttr(disabled),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-readonly\": dataAttr(readOnly),\n        onFocus() {\n          send({ type: \"THUMB.FOCUS\" });\n        },\n        onBlur() {\n          send({ type: \"THUMB.BLUR\" });\n        },\n        onKeyDown(event) {\n          if (!interactive) return;\n          const step = getEventStep(event) * prop(\"step\");\n          switch (event.key) {\n            case \"ArrowLeft\":\n            case \"ArrowUp\":\n              event.preventDefault();\n              send({ type: \"THUMB.ARROW_DEC\", step });\n              break;\n            case \"ArrowRight\":\n            case \"ArrowDown\":\n              event.preventDefault();\n              send({ type: \"THUMB.ARROW_INC\", step });\n              break;\n            case \"Home\":\n              event.preventDefault();\n              send({ type: \"THUMB.HOME\" });\n              break;\n            case \"End\":\n              event.preventDefault();\n              send({ type: \"THUMB.END\" });\n              break;\n          }\n        },\n        style: {\n          rotate: `var(--angle)`\n        }\n      });\n    },\n    getValueTextProps() {\n      return normalize.element({\n        ...parts.valueText.attrs,\n        id: getValueTextId(scope)\n      });\n    },\n    getMarkerGroupProps() {\n      return normalize.element({\n        ...parts.markerGroup.attrs\n      });\n    },\n    getMarkerProps(props2) {\n      let markerState;\n      if (props2.value < value) {\n        markerState = \"under-value\";\n      } else if (props2.value > value) {\n        markerState = \"over-value\";\n      } else {\n        markerState = \"at-value\";\n      }\n      return normalize.element({\n        ...parts.marker.attrs,\n        \"data-value\": props2.value,\n        \"data-state\": markerState,\n        \"data-disabled\": dataAttr(disabled),\n        style: {\n          \"--marker-value\": props2.value,\n          rotate: `calc(var(--marker-value) * 1deg)`\n        }\n      });\n    }\n  };\n}\nvar machine = createMachine({\n  props({ props: props2 }) {\n    return {\n      step: 1,\n      defaultValue: 0,\n      ...props2\n    };\n  },\n  context({ prop, bindable }) {\n    return {\n      value: bindable(() => ({\n        defaultValue: prop(\"defaultValue\"),\n        value: prop(\"value\"),\n        onChange(value) {\n          prop(\"onValueChange\")?.({ value, valueAsDegree: `${value}deg` });\n        }\n      }))\n    };\n  },\n  refs() {\n    return {\n      thumbDragOffset: null\n    };\n  },\n  computed: {\n    interactive: ({ prop }) => !(prop(\"disabled\") || prop(\"readOnly\")),\n    valueAsDegree: ({ context }) => `${context.get(\"value\")}deg`\n  },\n  watch({ track, context, action }) {\n    track([() => context.get(\"value\")], () => {\n      action([\"syncInputElement\"]);\n    });\n  },\n  initialState() {\n    return \"idle\";\n  },\n  on: {\n    \"VALUE.SET\": {\n      actions: [\"setValue\"]\n    }\n  },\n  states: {\n    idle: {\n      on: {\n        \"CONTROL.POINTER_DOWN\": {\n          target: \"dragging\",\n          actions: [\"setThumbDragOffset\", \"setPointerValue\", \"focusThumb\"]\n        },\n        \"THUMB.FOCUS\": {\n          target: \"focused\"\n        }\n      }\n    },\n    focused: {\n      on: {\n        \"CONTROL.POINTER_DOWN\": {\n          target: \"dragging\",\n          actions: [\"setThumbDragOffset\", \"setPointerValue\", \"focusThumb\"]\n        },\n        \"THUMB.ARROW_DEC\": {\n          actions: [\"decrementValue\", \"invokeOnChangeEnd\"]\n        },\n        \"THUMB.ARROW_INC\": {\n          actions: [\"incrementValue\", \"invokeOnChangeEnd\"]\n        },\n        \"THUMB.HOME\": {\n          actions: [\"setValueToMin\", \"invokeOnChangeEnd\"]\n        },\n        \"THUMB.END\": {\n          actions: [\"setValueToMax\", \"invokeOnChangeEnd\"]\n        },\n        \"THUMB.BLUR\": {\n          target: \"idle\"\n        }\n      }\n    },\n    dragging: {\n      entry: [\"focusThumb\"],\n      effects: [\"trackPointerMove\"],\n      on: {\n        \"DOC.POINTER_UP\": {\n          target: \"focused\",\n          actions: [\"invokeOnChangeEnd\", \"clearThumbDragOffset\"]\n        },\n        \"DOC.POINTER_MOVE\": {\n          actions: [\"setPointerValue\"]\n        }\n      }\n    }\n  },\n  implementations: {\n    effects: {\n      trackPointerMove({ scope, send }) {\n        return trackPointerMove(scope.getDoc(), {\n          onPointerMove(info) {\n            send({ type: \"DOC.POINTER_MOVE\", point: info.point });\n          },\n          onPointerUp() {\n            send({ type: \"DOC.POINTER_UP\" });\n          }\n        });\n      }\n    },\n    actions: {\n      syncInputElement({ scope, context }) {\n        const inputEl = getHiddenInputEl(scope);\n        setElementValue(inputEl, context.get(\"value\").toString());\n      },\n      invokeOnChangeEnd({ context, prop, computed }) {\n        prop(\"onValueChangeEnd\")?.({\n          value: context.get(\"value\"),\n          valueAsDegree: computed(\"valueAsDegree\")\n        });\n      },\n      setPointerValue({ scope, event, context, prop, refs }) {\n        const controlEl = getControlEl(scope);\n        if (!controlEl) return;\n        const angularOffset = refs.get(\"thumbDragOffset\");\n        const deg = getAngle(controlEl, event.point, angularOffset);\n        context.set(\"value\", constrainAngle(deg, prop(\"step\")));\n      },\n      setValueToMin({ context }) {\n        context.set(\"value\", MIN_VALUE);\n      },\n      setValueToMax({ context }) {\n        context.set(\"value\", MAX_VALUE);\n      },\n      setValue({ context, event }) {\n        context.set(\"value\", clampAngle(event.value));\n      },\n      decrementValue({ context, event, prop }) {\n        const value = snapAngleToStep(context.get(\"value\") - event.step, event.step ?? prop(\"step\"));\n        context.set(\"value\", value);\n      },\n      incrementValue({ context, event, prop }) {\n        const value = snapAngleToStep(context.get(\"value\") + event.step, event.step ?? prop(\"step\"));\n        context.set(\"value\", value);\n      },\n      focusThumb({ scope }) {\n        raf(() => {\n          getThumbEl(scope)?.focus({ preventScroll: true });\n        });\n      },\n      setThumbDragOffset({ refs, event }) {\n        refs.set(\"thumbDragOffset\", event.angularOffset ?? null);\n      },\n      clearThumbDragOffset({ refs }) {\n        refs.set(\"thumbDragOffset\", null);\n      }\n    }\n  }\n});\nvar props = createProps()([\n  \"aria-label\",\n  \"aria-labelledby\",\n  \"dir\",\n  \"disabled\",\n  \"getRootNode\",\n  \"id\",\n  \"ids\",\n  \"invalid\",\n  \"name\",\n  \"onValueChange\",\n  \"onValueChangeEnd\",\n  \"readOnly\",\n  \"step\",\n  \"value\",\n  \"defaultValue\"\n]);\nvar splitProps = createSplitProps(props);\n\nexport { anatomy, connect, machine, props, splitProps };\n", "import * as angleSlider from \"@zag-js/angle-slider\";\nimport { VanillaMachine, normalizeProps } from \"@zag-js/vanilla\";\n\nimport {\n  Component,\n  getString,\n  getBoolean,\n  getNumber,\n  generateId,\n  renderPart,\n  getPartIds,\n  valuesEqual,\n} from \"../lib\";\n\nexport class AngleSlider extends Component<angleSlider.Props, angleSlider.Api> {\n  initMachine(props: angleSlider.Props): VanillaMachine<any> {\n    return new VanillaMachine(angleSlider.machine, props);\n  }\n  initApi(): angleSlider.Api {\n    return angleSlider.connect(this.machine.service, normalizeProps);\n  }\n  render(): void {\n    [\n      \"root\",\n      \"label\",\n      \"control\",\n      \"thumb\",\n      \"marker-group\",\n      \"value-text\",\n      \"hidden-input\",\n    ].forEach((part) => renderPart(this.el, part, this.api));\n    [\"marker\"].forEach((part) =>\n      renderPart(this.el, part, this.api, { value: \"number\" }),\n    );\n    this.updateValueText();\n  }\n  private updateValueText(): void {\n    const valueEl = this.el.querySelector<HTMLElement>(\n      '[data-part=\"value-text\"] [data-part=\"value\"]',\n    );\n    if (!valueEl) return;\n    const numberingSystem = getString(this.el, \"numberingSystem\");\n    if (numberingSystem) {\n      valueEl.textContent = new Intl.NumberFormat(undefined, {\n        numberingSystem,\n      } as Intl.NumberFormatOptions).format(this.api.value);\n    } else {\n      valueEl.textContent = String(this.api.value);\n    }\n  }\n}\nexport function initAngleSlider(\n  doc: HTMLElement | Document = document,\n  selector = \".angle-slider-js\",\n): void {\n  doc.querySelectorAll<HTMLElement>(selector).forEach((rootEl) => {\n    const angleSlider = new AngleSlider(rootEl, {\n      id: generateId(rootEl, \"angleSlider\"),\n      ids: getPartIds(rootEl, [\n        \"root\",\n        \"label\",\n        \"control\",\n        \"thumb\",\n        \"marker-group\",\n        \"value-text\",\n        \"hidden-input\",\n        \"marker\",\n      ]),\n      defaultValue: getNumber(rootEl, \"defaultValue\"),\n      disabled: getBoolean(rootEl, \"disabled\"),\n      invalid: getBoolean(rootEl, \"invalid\"),\n      name: getString(rootEl, \"name\"),\n      step: getNumber(rootEl, \"step\"),\n      value: getNumber(rootEl, \"value\"),\n      readOnly: getBoolean(rootEl, \"readOnly\"),\n      onValueChangeEnd(details) {\n        const eventName = getString(rootEl, \"onValueChangeEnd\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onValueChange(details) {\n        const eventName = getString(rootEl, \"onValueChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n    });\n    angleSlider.init();\n    angleSlider.el.addEventListener(\"angle-slider:set-value\", (event) => {\n      const { value } = (event as CustomEvent<{ value: number }>).detail;\n      if (!valuesEqual(angleSlider.api.value, value)) {\n        angleSlider.api.setValue(value);\n      }\n    });\n    angleSlider.el.addEventListener(\"angle-slider:value\", (event) => {\n      const callback = (\n        event as CustomEvent<{ callback: (value: number) => void }>\n      ).detail.callback;\n      if (callback) callback(angleSlider.api.value);\n    });\n    angleSlider.el.addEventListener(\"angle-slider:value-degree\", (event) => {\n      const callback = (\n        event as CustomEvent<{ callback: (value: string) => void }>\n      ).detail.callback;\n      if (callback) callback(angleSlider.api.valueAsDegree);\n    });\n  });\n}\n", "import { createAnatomy } from '@zag-js/anatomy';\nimport { observeAttributes, observeChildren } from '@zag-js/dom-query';\nimport { createMachine } from '@zag-js/core';\nimport { createProps } from '@zag-js/types';\nimport { createSplitProps } from '@zag-js/utils';\n\n// src/avatar.anatomy.ts\nvar anatomy = createAnatomy(\"avatar\").parts(\"root\", \"image\", \"fallback\");\nvar parts = anatomy.build();\n\n// src/avatar.dom.ts\nvar getRootId = (ctx) => ctx.ids?.root ?? `avatar:${ctx.id}`;\nvar getImageId = (ctx) => ctx.ids?.image ?? `avatar:${ctx.id}:image`;\nvar getFallbackId = (ctx) => ctx.ids?.fallback ?? `avatar:${ctx.id}:fallback`;\nvar getRootEl = (ctx) => ctx.getById(getRootId(ctx));\nvar getImageEl = (ctx) => ctx.getById(getImageId(ctx));\n\n// src/avatar.connect.ts\nfunction connect(service, normalize) {\n  const { state, send, prop, scope } = service;\n  const loaded = state.matches(\"loaded\");\n  return {\n    loaded,\n    setSrc(src) {\n      const img = getImageEl(scope);\n      img?.setAttribute(\"src\", src);\n    },\n    setLoaded() {\n      send({ type: \"img.loaded\", src: \"api\" });\n    },\n    setError() {\n      send({ type: \"img.error\", src: \"api\" });\n    },\n    getRootProps() {\n      return normalize.element({\n        ...parts.root.attrs,\n        dir: prop(\"dir\"),\n        id: getRootId(scope)\n      });\n    },\n    getImageProps() {\n      return normalize.img({\n        ...parts.image.attrs,\n        hidden: !loaded,\n        dir: prop(\"dir\"),\n        id: getImageId(scope),\n        \"data-state\": loaded ? \"visible\" : \"hidden\",\n        onLoad() {\n          send({ type: \"img.loaded\", src: \"element\" });\n        },\n        onError() {\n          send({ type: \"img.error\", src: \"element\" });\n        }\n      });\n    },\n    getFallbackProps() {\n      return normalize.element({\n        ...parts.fallback.attrs,\n        dir: prop(\"dir\"),\n        id: getFallbackId(scope),\n        hidden: loaded,\n        \"data-state\": loaded ? \"hidden\" : \"visible\"\n      });\n    }\n  };\n}\nvar machine = createMachine({\n  initialState() {\n    return \"loading\";\n  },\n  effects: [\"trackImageRemoval\", \"trackSrcChange\"],\n  on: {\n    \"src.change\": {\n      target: \"loading\"\n    },\n    \"img.unmount\": {\n      target: \"error\"\n    }\n  },\n  states: {\n    loading: {\n      entry: [\"checkImageStatus\"],\n      on: {\n        \"img.loaded\": {\n          target: \"loaded\",\n          actions: [\"invokeOnLoad\"]\n        },\n        \"img.error\": {\n          target: \"error\",\n          actions: [\"invokeOnError\"]\n        }\n      }\n    },\n    error: {\n      on: {\n        \"img.loaded\": {\n          target: \"loaded\",\n          actions: [\"invokeOnLoad\"]\n        }\n      }\n    },\n    loaded: {\n      on: {\n        \"img.error\": {\n          target: \"error\",\n          actions: [\"invokeOnError\"]\n        }\n      }\n    }\n  },\n  implementations: {\n    actions: {\n      invokeOnLoad({ prop }) {\n        prop(\"onStatusChange\")?.({ status: \"loaded\" });\n      },\n      invokeOnError({ prop }) {\n        prop(\"onStatusChange\")?.({ status: \"error\" });\n      },\n      checkImageStatus({ send, scope }) {\n        const imageEl = getImageEl(scope);\n        if (!imageEl?.complete) return;\n        const type = hasLoaded(imageEl) ? \"img.loaded\" : \"img.error\";\n        send({ type, src: \"ssr\" });\n      }\n    },\n    effects: {\n      trackImageRemoval({ send, scope }) {\n        const rootEl = getRootEl(scope);\n        return observeChildren(rootEl, {\n          callback(records) {\n            const removedNodes = Array.from(records[0].removedNodes);\n            const removed = removedNodes.find(\n              (node) => node.nodeType === Node.ELEMENT_NODE && node.matches(\"[data-scope=avatar][data-part=image]\")\n            );\n            if (removed) {\n              send({ type: \"img.unmount\" });\n            }\n          }\n        });\n      },\n      trackSrcChange({ send, scope }) {\n        const imageEl = getImageEl(scope);\n        return observeAttributes(imageEl, {\n          attributes: [\"src\", \"srcset\"],\n          callback() {\n            send({ type: \"src.change\" });\n          }\n        });\n      }\n    }\n  }\n});\nfunction hasLoaded(image) {\n  return image.complete && image.naturalWidth !== 0 && image.naturalHeight !== 0;\n}\nvar props = createProps()([\"dir\", \"id\", \"ids\", \"onStatusChange\", \"getRootNode\"]);\nvar splitProps = createSplitProps(props);\n\nexport { anatomy, connect, machine, props, splitProps };\n", "import * as avatar from \"@zag-js/avatar\";\nimport { Direction } from \"@zag-js/types\";\nimport { VanillaMachine, normalizeProps } from \"@zag-js/vanilla\";\nimport { Component, getString, generateId, renderPart } from \"../lib\";\nexport class Avatar extends Component<avatar.Props, avatar.Api> {\n  initMachine(props: avatar.Props): VanillaMachine<any> {\n    return new VanillaMachine(avatar.machine, props);\n  }\n  initApi(): avatar.Api {\n    return avatar.connect(this.machine.service, normalizeProps);\n  }\n  render() {\n    const parts = [\"root\", \"fallback\", \"image\"];\n    for (const part of parts) renderPart(this.el, part, this.api);\n  }\n}\nexport function initAvatar(\n  doc: HTMLElement | Document = document,\n  selector = \".avatar-js\",\n): void {\n  doc.querySelectorAll<HTMLElement>(selector).forEach((rootEl) => {\n    const directions = [\"ltr\", \"rtl\"] as const;\n    const avatar = new Avatar(rootEl, {\n      id: generateId(rootEl, \"avatar\"),\n      dir: getString<Direction>(rootEl, \"dir\", directions),\n      onStatusChange(details: any) {\n        const eventName = getString(rootEl, \"onStatusChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n    });\n    avatar.init();\n  });\n}\n", "import { getComputedStyle } from '@zag-js/dom-query';\n\n// src/index.ts\nvar getDirection = (element) => getComputedStyle(element).direction;\nfunction getScrollPadding(element) {\n  const style = getComputedStyle(element);\n  const rect = element.getBoundingClientRect();\n  let xBeforeRaw = style.getPropertyValue(\"scroll-padding-left\").replace(\"auto\", \"0px\");\n  let yBeforeRaw = style.getPropertyValue(\"scroll-padding-top\").replace(\"auto\", \"0px\");\n  let xAfterRaw = style.getPropertyValue(\"scroll-padding-right\").replace(\"auto\", \"0px\");\n  let yAfterRaw = style.getPropertyValue(\"scroll-padding-bottom\").replace(\"auto\", \"0px\");\n  function convert(raw, size) {\n    let n = parseFloat(raw);\n    if (/%/.test(raw)) {\n      n /= 100;\n      n *= size;\n    }\n    return Number.isNaN(n) ? 0 : n;\n  }\n  let xBefore = convert(xBeforeRaw, rect.width);\n  let yBefore = convert(yBeforeRaw, rect.height);\n  let xAfter = convert(xAfterRaw, rect.width);\n  let yAfter = convert(yAfterRaw, rect.height);\n  return {\n    x: { before: xBefore, after: xAfter },\n    y: { before: yBefore, after: yAfter }\n  };\n}\nfunction isRectIntersecting(a, b, axis = \"both\") {\n  return axis === \"x\" && a.right >= b.left && a.left <= b.right || axis === \"y\" && a.bottom >= b.top && a.top <= b.bottom || axis === \"both\" && a.right >= b.left && a.left <= b.right && a.bottom >= b.top && a.top <= b.bottom;\n}\nfunction getDescendants(parent) {\n  let children = [];\n  for (const child of parent.children) {\n    children = children.concat(child, getDescendants(child));\n  }\n  return children;\n}\nfunction getSnapPositions(parent, subtree = false) {\n  const parentRect = parent.getBoundingClientRect();\n  const dir = getDirection(parent);\n  const isRtl = dir === \"rtl\";\n  const positions = {\n    x: { start: [], center: [], end: [] },\n    y: { start: [], center: [], end: [] }\n  };\n  const children = subtree ? getDescendants(parent) : parent.children;\n  for (const axis of [\"x\", \"y\"]) {\n    const orthogonalAxis = axis === \"x\" ? \"y\" : \"x\";\n    const axisStart = axis === \"x\" ? \"left\" : \"top\";\n    const axisEnd = axis === \"x\" ? \"right\" : \"bottom\";\n    const axisSize = axis === \"x\" ? \"width\" : \"height\";\n    const axisScroll = axis === \"x\" ? \"scrollLeft\" : \"scrollTop\";\n    const useRtlCalc = isRtl && axis === \"x\";\n    for (const child of children) {\n      const childRect = child.getBoundingClientRect();\n      if (!isRectIntersecting(parentRect, childRect, orthogonalAxis)) {\n        continue;\n      }\n      const childStyle = getComputedStyle(child);\n      let [childAlignY, childAlignX] = childStyle.getPropertyValue(\"scroll-snap-align\").split(\" \");\n      if (typeof childAlignX === \"undefined\") {\n        childAlignX = childAlignY;\n      }\n      const childAlign = axis === \"x\" ? childAlignX : childAlignY;\n      let childOffsetStart;\n      let childOffsetEnd;\n      let childOffsetCenter;\n      if (useRtlCalc) {\n        const scrollOffset = Math.abs(parent[axisScroll]);\n        const rightOffset = parentRect[axisEnd] - childRect[axisEnd] + scrollOffset;\n        childOffsetStart = rightOffset;\n        childOffsetEnd = rightOffset + childRect[axisSize];\n        childOffsetCenter = rightOffset + childRect[axisSize] / 2;\n      } else {\n        childOffsetStart = childRect[axisStart] - parentRect[axisStart] + parent[axisScroll];\n        childOffsetEnd = childOffsetStart + childRect[axisSize];\n        childOffsetCenter = childOffsetStart + childRect[axisSize] / 2;\n      }\n      switch (childAlign) {\n        case \"none\":\n          break;\n        case \"start\":\n          positions[axis].start.push({ node: child, position: childOffsetStart });\n          break;\n        case \"center\":\n          positions[axis].center.push({ node: child, position: childOffsetCenter });\n          break;\n        case \"end\":\n          positions[axis].end.push({ node: child, position: childOffsetEnd });\n          break;\n      }\n    }\n  }\n  return positions;\n}\nfunction getScrollSnapPositions(element) {\n  const dir = getDirection(element);\n  const rect = element.getBoundingClientRect();\n  const scrollPadding = getScrollPadding(element);\n  const snapPositions = getSnapPositions(element);\n  const maxScroll = {\n    x: element.scrollWidth - element.offsetWidth,\n    y: element.scrollHeight - element.offsetHeight\n  };\n  const isRtl = dir === \"rtl\";\n  const usesNegativeScrollLeft = isRtl && element.scrollLeft <= 0;\n  let xPositions;\n  if (isRtl) {\n    xPositions = uniq(\n      [\n        ...snapPositions.x.start.map((v) => v.position - scrollPadding.x.after),\n        ...snapPositions.x.center.map((v) => v.position - rect.width / 2),\n        ...snapPositions.x.end.map((v) => v.position - rect.width + scrollPadding.x.before)\n      ].map(clamp(0, maxScroll.x))\n    );\n    if (usesNegativeScrollLeft) {\n      xPositions = xPositions.map((pos) => -pos);\n    }\n  } else {\n    xPositions = uniq(\n      [\n        ...snapPositions.x.start.map((v) => v.position - scrollPadding.x.before),\n        ...snapPositions.x.center.map((v) => v.position - rect.width / 2),\n        ...snapPositions.x.end.map((v) => v.position - rect.width + scrollPadding.x.after)\n      ].map(clamp(0, maxScroll.x))\n    );\n  }\n  return {\n    x: xPositions,\n    y: uniq(\n      [\n        ...snapPositions.y.start.map((v) => v.position - scrollPadding.y.before),\n        ...snapPositions.y.center.map((v) => v.position - rect.height / 2),\n        ...snapPositions.y.end.map((v) => v.position - rect.height + scrollPadding.y.after)\n      ].map(clamp(0, maxScroll.y))\n    )\n  };\n}\nfunction findSnapPoint(parent, axis, predicate) {\n  const dir = getDirection(parent);\n  const scrollPadding = getScrollPadding(parent);\n  const snapPositions = getSnapPositions(parent);\n  const items = [...snapPositions[axis].start, ...snapPositions[axis].center, ...snapPositions[axis].end];\n  const isRtl = dir === \"rtl\";\n  const usesNegativeScrollLeft = isRtl && axis === \"x\" && parent.scrollLeft <= 0;\n  for (const item of items) {\n    if (predicate(item.node)) {\n      let position;\n      if (axis === \"x\" && isRtl) {\n        position = item.position - scrollPadding.x.after;\n        if (usesNegativeScrollLeft) {\n          position = -position;\n        }\n      } else {\n        position = item.position - (axis === \"x\" ? scrollPadding.x.before : scrollPadding.y.before);\n      }\n      return position;\n    }\n  }\n}\nfunction getSnapPointTarget(parent, snapPoint) {\n  const rect = parent.getBoundingClientRect();\n  const scrollPadding = getScrollPadding(parent);\n  const children = Array.from(parent.children);\n  for (const child of children) {\n    const childRect = child.getBoundingClientRect();\n    const childOffsetStart = {\n      x: childRect.left - rect.left + parent.scrollLeft,\n      y: childRect.top - rect.top + parent.scrollTop\n    };\n    const matchesX = [\n      childOffsetStart.x - scrollPadding.x.before,\n      // start\n      childOffsetStart.x + childRect.width / 2 - rect.width / 2,\n      // center\n      childOffsetStart.x + childRect.width - rect.width + scrollPadding.x.after\n      // end\n    ].some((pos) => Math.abs(pos - snapPoint) < 1);\n    const matchesY = [\n      childOffsetStart.y - scrollPadding.y.before,\n      childOffsetStart.y + childRect.height / 2 - rect.height / 2,\n      childOffsetStart.y + childRect.height - rect.height + scrollPadding.y.after\n    ].some((pos) => Math.abs(pos - snapPoint) < 1);\n    if (matchesX || matchesY) {\n      return child;\n    }\n  }\n  return children[0];\n}\nvar uniq = (arr) => [...new Set(arr)];\nvar clamp = (min, max) => (value) => Math.max(min, Math.min(max, value));\n\nexport { findSnapPoint, getScrollSnapPositions, getSnapPointTarget, getSnapPositions };\n", "import { createAnatomy } from '@zag-js/anatomy';\nimport { raf, addDomEvent, trackPointerMove, queryAll, resizeObserverBorderBox, getTabbables, dataAttr, getEventKey, ariaAttr, isLeftClick, getEventTarget, isFocusable, contains } from '@zag-js/dom-query';\nimport { clampValue, prevIndex, nextIndex, add, remove, uniq, callAll, isObject, ensureProps, createSplitProps, throttle } from '@zag-js/utils';\nimport { createMachine } from '@zag-js/core';\nimport { getScrollSnapPositions, findSnapPoint } from '@zag-js/scroll-snap';\nimport { createProps } from '@zag-js/types';\n\n// src/carousel.anatomy.ts\nvar anatomy = createAnatomy(\"carousel\").parts(\n  \"root\",\n  \"itemGroup\",\n  \"item\",\n  \"control\",\n  \"nextTrigger\",\n  \"prevTrigger\",\n  \"indicatorGroup\",\n  \"indicator\",\n  \"autoplayTrigger\",\n  \"progressText\"\n);\nvar parts = anatomy.build();\nvar getRootId = (ctx) => ctx.ids?.root ?? `carousel:${ctx.id}`;\nvar getItemId = (ctx, index) => ctx.ids?.item?.(index) ?? `carousel:${ctx.id}:item:${index}`;\nvar getItemGroupId = (ctx) => ctx.ids?.itemGroup ?? `carousel:${ctx.id}:item-group`;\nvar getNextTriggerId = (ctx) => ctx.ids?.nextTrigger ?? `carousel:${ctx.id}:next-trigger`;\nvar getPrevTriggerId = (ctx) => ctx.ids?.prevTrigger ?? `carousel:${ctx.id}:prev-trigger`;\nvar getIndicatorGroupId = (ctx) => ctx.ids?.indicatorGroup ?? `carousel:${ctx.id}:indicator-group`;\nvar getIndicatorId = (ctx, index) => ctx.ids?.indicator?.(index) ?? `carousel:${ctx.id}:indicator:${index}`;\nvar getItemGroupEl = (ctx) => ctx.getById(getItemGroupId(ctx));\nvar getItemEls = (ctx) => queryAll(getItemGroupEl(ctx), `[data-part=item]`);\nvar getIndicatorEl = (ctx, page) => ctx.getById(getIndicatorId(ctx, page));\nvar syncTabIndex = (ctx) => {\n  const el = getItemGroupEl(ctx);\n  if (!el) return;\n  const tabbables = getTabbables(el);\n  el.setAttribute(\"tabindex\", tabbables.length > 0 ? \"-1\" : \"0\");\n};\n\n// src/carousel.connect.ts\nfunction connect(service, normalize) {\n  const { state, context, computed, send, scope, prop } = service;\n  const isPlaying = state.matches(\"autoplay\");\n  const isDragging = state.matches(\"dragging\");\n  const canScrollNext = computed(\"canScrollNext\");\n  const canScrollPrev = computed(\"canScrollPrev\");\n  const horizontal = computed(\"isHorizontal\");\n  const autoSize = prop(\"autoSize\");\n  const pageSnapPoints = Array.from(context.get(\"pageSnapPoints\"));\n  const page = context.get(\"page\");\n  const slidesPerPage = prop(\"slidesPerPage\");\n  const padding = prop(\"padding\");\n  const translations = prop(\"translations\");\n  return {\n    isPlaying,\n    isDragging,\n    page,\n    pageSnapPoints,\n    canScrollNext,\n    canScrollPrev,\n    getProgress() {\n      return page / pageSnapPoints.length;\n    },\n    getProgressText() {\n      const details = { page: page + 1, totalPages: pageSnapPoints.length };\n      return translations.progressText?.(details) ?? \"\";\n    },\n    scrollToIndex(index, instant) {\n      send({ type: \"INDEX.SET\", index, instant });\n    },\n    scrollTo(index, instant) {\n      send({ type: \"PAGE.SET\", index, instant });\n    },\n    scrollNext(instant) {\n      send({ type: \"PAGE.NEXT\", instant });\n    },\n    scrollPrev(instant) {\n      send({ type: \"PAGE.PREV\", instant });\n    },\n    play() {\n      send({ type: \"AUTOPLAY.START\" });\n    },\n    pause() {\n      send({ type: \"AUTOPLAY.PAUSE\" });\n    },\n    isInView(index) {\n      return Array.from(context.get(\"slidesInView\")).includes(index);\n    },\n    refresh() {\n      send({ type: \"SNAP.REFRESH\" });\n    },\n    getRootProps() {\n      return normalize.element({\n        ...parts.root.attrs,\n        id: getRootId(scope),\n        role: \"region\",\n        \"aria-roledescription\": \"carousel\",\n        \"data-orientation\": prop(\"orientation\"),\n        dir: prop(\"dir\"),\n        style: {\n          \"--slides-per-page\": slidesPerPage,\n          \"--slide-spacing\": prop(\"spacing\"),\n          \"--slide-item-size\": autoSize ? \"auto\" : \"calc(100% / var(--slides-per-page) - var(--slide-spacing) * (var(--slides-per-page) - 1) / var(--slides-per-page))\"\n        }\n      });\n    },\n    getItemGroupProps() {\n      return normalize.element({\n        ...parts.itemGroup.attrs,\n        id: getItemGroupId(scope),\n        \"data-orientation\": prop(\"orientation\"),\n        \"data-dragging\": dataAttr(isDragging),\n        dir: prop(\"dir\"),\n        \"aria-live\": isPlaying ? \"off\" : \"polite\",\n        onFocus(event) {\n          if (!contains(event.currentTarget, getEventTarget(event))) return;\n          send({ type: \"VIEWPORT.FOCUS\" });\n        },\n        onBlur(event) {\n          if (contains(event.currentTarget, event.relatedTarget)) return;\n          send({ type: \"VIEWPORT.BLUR\" });\n        },\n        onMouseDown(event) {\n          if (event.defaultPrevented) return;\n          if (!prop(\"allowMouseDrag\")) return;\n          if (!isLeftClick(event)) return;\n          const target = getEventTarget(event);\n          if (isFocusable(target) && target !== event.currentTarget) return;\n          event.preventDefault();\n          send({ type: \"DRAGGING.START\" });\n        },\n        onWheel: throttle((event) => {\n          const axis = prop(\"orientation\") === \"horizontal\" ? \"deltaX\" : \"deltaY\";\n          const isScrollingLeft = event[axis] < 0;\n          if (isScrollingLeft && !computed(\"canScrollPrev\")) return;\n          const isScrollingRight = event[axis] > 0;\n          if (isScrollingRight && !computed(\"canScrollNext\")) return;\n          send({ type: \"USER.SCROLL\" });\n        }, 150),\n        onTouchStart() {\n          send({ type: \"USER.SCROLL\" });\n        },\n        style: {\n          display: autoSize ? \"flex\" : \"grid\",\n          gap: \"var(--slide-spacing)\",\n          scrollSnapType: [horizontal ? \"x\" : \"y\", prop(\"snapType\")].join(\" \"),\n          gridAutoFlow: horizontal ? \"column\" : \"row\",\n          scrollbarWidth: \"none\",\n          overscrollBehaviorX: \"contain\",\n          [horizontal ? \"gridAutoColumns\" : \"gridAutoRows\"]: autoSize ? void 0 : \"var(--slide-item-size)\",\n          [horizontal ? \"scrollPaddingInline\" : \"scrollPaddingBlock\"]: padding,\n          [horizontal ? \"paddingInline\" : \"paddingBlock\"]: padding,\n          [horizontal ? \"overflowX\" : \"overflowY\"]: \"auto\"\n        }\n      });\n    },\n    getItemProps(props2) {\n      const isInView = context.get(\"slidesInView\").includes(props2.index);\n      return normalize.element({\n        ...parts.item.attrs,\n        id: getItemId(scope, props2.index),\n        dir: prop(\"dir\"),\n        role: \"group\",\n        \"data-index\": props2.index,\n        \"data-inview\": dataAttr(isInView),\n        \"aria-roledescription\": \"slide\",\n        \"data-orientation\": prop(\"orientation\"),\n        \"aria-label\": translations.item(props2.index, prop(\"slideCount\")),\n        \"aria-hidden\": ariaAttr(!isInView),\n        style: {\n          flex: \"0 0 auto\",\n          [horizontal ? \"maxWidth\" : \"maxHeight\"]: \"100%\",\n          scrollSnapAlign: (() => {\n            const snapAlign = props2.snapAlign ?? \"start\";\n            const slidesPerMove = prop(\"slidesPerMove\");\n            const perMove = slidesPerMove === \"auto\" ? Math.floor(prop(\"slidesPerPage\")) : slidesPerMove;\n            const shouldSnap = (props2.index + perMove) % perMove === 0;\n            return shouldSnap ? snapAlign : void 0;\n          })()\n        }\n      });\n    },\n    getControlProps() {\n      return normalize.element({\n        ...parts.control.attrs,\n        \"data-orientation\": prop(\"orientation\")\n      });\n    },\n    getPrevTriggerProps() {\n      return normalize.button({\n        ...parts.prevTrigger.attrs,\n        id: getPrevTriggerId(scope),\n        type: \"button\",\n        disabled: !canScrollPrev,\n        dir: prop(\"dir\"),\n        \"aria-label\": translations.prevTrigger,\n        \"data-orientation\": prop(\"orientation\"),\n        \"aria-controls\": getItemGroupId(scope),\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          send({ type: \"PAGE.PREV\", src: \"trigger\" });\n        }\n      });\n    },\n    getNextTriggerProps() {\n      return normalize.button({\n        ...parts.nextTrigger.attrs,\n        dir: prop(\"dir\"),\n        id: getNextTriggerId(scope),\n        type: \"button\",\n        \"aria-label\": translations.nextTrigger,\n        \"data-orientation\": prop(\"orientation\"),\n        \"aria-controls\": getItemGroupId(scope),\n        disabled: !canScrollNext,\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          send({ type: \"PAGE.NEXT\", src: \"trigger\" });\n        }\n      });\n    },\n    getIndicatorGroupProps() {\n      return normalize.element({\n        ...parts.indicatorGroup.attrs,\n        dir: prop(\"dir\"),\n        id: getIndicatorGroupId(scope),\n        \"data-orientation\": prop(\"orientation\"),\n        onKeyDown(event) {\n          if (event.defaultPrevented) return;\n          const src = \"indicator\";\n          const keyMap = {\n            ArrowDown(event2) {\n              if (horizontal) return;\n              send({ type: \"PAGE.NEXT\", src });\n              event2.preventDefault();\n            },\n            ArrowUp(event2) {\n              if (horizontal) return;\n              send({ type: \"PAGE.PREV\", src });\n              event2.preventDefault();\n            },\n            ArrowRight(event2) {\n              if (!horizontal) return;\n              send({ type: \"PAGE.NEXT\", src });\n              event2.preventDefault();\n            },\n            ArrowLeft(event2) {\n              if (!horizontal) return;\n              send({ type: \"PAGE.PREV\", src });\n              event2.preventDefault();\n            },\n            Home(event2) {\n              send({ type: \"PAGE.SET\", index: 0, src });\n              event2.preventDefault();\n            },\n            End(event2) {\n              send({ type: \"PAGE.SET\", index: pageSnapPoints.length - 1, src });\n              event2.preventDefault();\n            }\n          };\n          const key = getEventKey(event, {\n            dir: prop(\"dir\"),\n            orientation: prop(\"orientation\")\n          });\n          const exec = keyMap[key];\n          exec?.(event);\n        }\n      });\n    },\n    getIndicatorProps(props2) {\n      return normalize.button({\n        ...parts.indicator.attrs,\n        dir: prop(\"dir\"),\n        id: getIndicatorId(scope, props2.index),\n        type: \"button\",\n        \"data-orientation\": prop(\"orientation\"),\n        \"data-index\": props2.index,\n        \"data-readonly\": dataAttr(props2.readOnly),\n        \"data-current\": dataAttr(props2.index === page),\n        \"aria-label\": translations.indicator(props2.index),\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          if (props2.readOnly) return;\n          send({ type: \"PAGE.SET\", index: props2.index, src: \"indicator\" });\n        }\n      });\n    },\n    getAutoplayTriggerProps() {\n      return normalize.button({\n        ...parts.autoplayTrigger.attrs,\n        type: \"button\",\n        \"data-orientation\": prop(\"orientation\"),\n        \"data-pressed\": dataAttr(isPlaying),\n        \"aria-label\": isPlaying ? translations.autoplayStop : translations.autoplayStart,\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          send({ type: isPlaying ? \"AUTOPLAY.PAUSE\" : \"AUTOPLAY.START\" });\n        }\n      });\n    },\n    getProgressTextProps() {\n      return normalize.element({\n        ...parts.progressText.attrs\n      });\n    }\n  };\n}\nvar machine = createMachine({\n  props({ props: props2 }) {\n    ensureProps(props2, [\"slideCount\"], \"carousel\");\n    return {\n      dir: \"ltr\",\n      defaultPage: 0,\n      orientation: \"horizontal\",\n      snapType: \"mandatory\",\n      loop: !!props2.autoplay,\n      slidesPerPage: 1,\n      slidesPerMove: \"auto\",\n      spacing: \"0px\",\n      autoplay: false,\n      allowMouseDrag: false,\n      inViewThreshold: 0.6,\n      autoSize: false,\n      ...props2,\n      translations: {\n        nextTrigger: \"Next slide\",\n        prevTrigger: \"Previous slide\",\n        indicator: (index) => `Go to slide ${index + 1}`,\n        item: (index, count) => `${index + 1} of ${count}`,\n        autoplayStart: \"Start slide rotation\",\n        autoplayStop: \"Stop slide rotation\",\n        progressText: ({ page, totalPages }) => `${page} / ${totalPages}`,\n        ...props2.translations\n      }\n    };\n  },\n  refs() {\n    return {\n      timeoutRef: void 0\n    };\n  },\n  initialState({ prop }) {\n    return prop(\"autoplay\") ? \"autoplay\" : \"idle\";\n  },\n  context({ prop, bindable, getContext }) {\n    return {\n      page: bindable(() => ({\n        defaultValue: prop(\"defaultPage\"),\n        value: prop(\"page\"),\n        onChange(page) {\n          const ctx = getContext();\n          const pageSnapPoints = ctx.get(\"pageSnapPoints\");\n          prop(\"onPageChange\")?.({ page, pageSnapPoint: pageSnapPoints[page] });\n        }\n      })),\n      pageSnapPoints: bindable(() => {\n        return {\n          defaultValue: prop(\"autoSize\") ? Array.from({ length: prop(\"slideCount\") }, (_, i) => i) : getPageSnapPoints(prop(\"slideCount\"), prop(\"slidesPerMove\"), prop(\"slidesPerPage\"))\n        };\n      }),\n      slidesInView: bindable(() => ({\n        defaultValue: []\n      }))\n    };\n  },\n  computed: {\n    isRtl: ({ prop }) => prop(\"dir\") === \"rtl\",\n    isHorizontal: ({ prop }) => prop(\"orientation\") === \"horizontal\",\n    canScrollNext: ({ prop, context }) => prop(\"loop\") || context.get(\"page\") < context.get(\"pageSnapPoints\").length - 1,\n    canScrollPrev: ({ prop, context }) => prop(\"loop\") || context.get(\"page\") > 0,\n    autoplayInterval: ({ prop }) => {\n      const autoplay = prop(\"autoplay\");\n      return isObject(autoplay) ? autoplay.delay : 4e3;\n    }\n  },\n  watch({ track, action, context, prop, send }) {\n    track([() => prop(\"slidesPerPage\"), () => prop(\"slidesPerMove\")], () => {\n      action([\"setSnapPoints\"]);\n    });\n    track([() => context.get(\"page\")], () => {\n      action([\"scrollToPage\", \"focusIndicatorEl\"]);\n    });\n    track([() => prop(\"orientation\"), () => prop(\"autoSize\"), () => prop(\"dir\")], () => {\n      action([\"setSnapPoints\", \"scrollToPage\"]);\n    });\n    track([() => prop(\"slideCount\")], () => {\n      send({ type: \"SNAP.REFRESH\", src: \"slide.count\" });\n    });\n    track([() => !!prop(\"autoplay\")], () => {\n      send({ type: prop(\"autoplay\") ? \"AUTOPLAY.START\" : \"AUTOPLAY.PAUSE\", src: \"autoplay.prop.change\" });\n    });\n  },\n  on: {\n    \"PAGE.NEXT\": {\n      target: \"idle\",\n      actions: [\"clearScrollEndTimer\", \"setNextPage\"]\n    },\n    \"PAGE.PREV\": {\n      target: \"idle\",\n      actions: [\"clearScrollEndTimer\", \"setPrevPage\"]\n    },\n    \"PAGE.SET\": {\n      target: \"idle\",\n      actions: [\"clearScrollEndTimer\", \"setPage\"]\n    },\n    \"INDEX.SET\": {\n      target: \"idle\",\n      actions: [\"clearScrollEndTimer\", \"setMatchingPage\"]\n    },\n    \"SNAP.REFRESH\": {\n      actions: [\"setSnapPoints\", \"clampPage\"]\n    },\n    \"PAGE.SCROLL\": {\n      actions: [\"scrollToPage\"]\n    }\n  },\n  effects: [\"trackSlideMutation\", \"trackSlideIntersections\", \"trackSlideResize\"],\n  entry: [\"setSnapPoints\", \"setPage\"],\n  exit: [\"clearScrollEndTimer\"],\n  states: {\n    idle: {\n      on: {\n        \"DRAGGING.START\": {\n          target: \"dragging\",\n          actions: [\"invokeDragStart\"]\n        },\n        \"AUTOPLAY.START\": {\n          target: \"autoplay\",\n          actions: [\"invokeAutoplayStart\"]\n        },\n        \"USER.SCROLL\": {\n          target: \"userScroll\"\n        },\n        \"VIEWPORT.FOCUS\": {\n          target: \"focus\"\n        }\n      }\n    },\n    focus: {\n      effects: [\"trackKeyboardScroll\"],\n      on: {\n        \"VIEWPORT.BLUR\": {\n          target: \"idle\"\n        },\n        \"PAGE.NEXT\": {\n          actions: [\"clearScrollEndTimer\", \"setNextPage\"]\n        },\n        \"PAGE.PREV\": {\n          actions: [\"clearScrollEndTimer\", \"setPrevPage\"]\n        },\n        \"PAGE.SET\": {\n          actions: [\"clearScrollEndTimer\", \"setPage\"]\n        },\n        \"INDEX.SET\": {\n          actions: [\"clearScrollEndTimer\", \"setMatchingPage\"]\n        },\n        \"USER.SCROLL\": {\n          target: \"userScroll\"\n        }\n      }\n    },\n    dragging: {\n      effects: [\"trackPointerMove\"],\n      entry: [\"disableScrollSnap\"],\n      on: {\n        DRAGGING: {\n          actions: [\"scrollSlides\", \"invokeDragging\"]\n        },\n        \"DRAGGING.END\": {\n          target: \"idle\",\n          actions: [\"endDragging\", \"invokeDraggingEnd\"]\n        }\n      }\n    },\n    userScroll: {\n      effects: [\"trackScroll\"],\n      on: {\n        \"DRAGGING.START\": {\n          target: \"dragging\",\n          actions: [\"invokeDragStart\"]\n        },\n        \"SCROLL.END\": [\n          {\n            guard: \"isFocused\",\n            target: \"focus\",\n            actions: [\"setClosestPage\"]\n          },\n          {\n            target: \"idle\",\n            actions: [\"setClosestPage\"]\n          }\n        ]\n      }\n    },\n    autoplay: {\n      effects: [\"trackDocumentVisibility\", \"trackScroll\", \"autoUpdateSlide\"],\n      exit: [\"invokeAutoplayEnd\"],\n      on: {\n        \"AUTOPLAY.TICK\": {\n          actions: [\"setNextPage\", \"invokeAutoplay\"]\n        },\n        \"DRAGGING.START\": {\n          target: \"dragging\",\n          actions: [\"invokeDragStart\"]\n        },\n        \"AUTOPLAY.PAUSE\": {\n          target: \"idle\"\n        }\n      }\n    }\n  },\n  implementations: {\n    guards: {\n      isFocused: ({ scope }) => scope.isActiveElement(getItemGroupEl(scope))\n    },\n    effects: {\n      autoUpdateSlide({ computed, send }) {\n        const id = setInterval(() => {\n          send({\n            type: computed(\"canScrollNext\") ? \"AUTOPLAY.TICK\" : \"AUTOPLAY.PAUSE\",\n            src: \"autoplay.interval\"\n          });\n        }, computed(\"autoplayInterval\"));\n        return () => clearInterval(id);\n      },\n      trackSlideMutation({ scope, send }) {\n        const el = getItemGroupEl(scope);\n        if (!el) return;\n        const win = scope.getWin();\n        const observer = new win.MutationObserver(() => {\n          send({ type: \"SNAP.REFRESH\", src: \"slide.mutation\" });\n          syncTabIndex(scope);\n        });\n        syncTabIndex(scope);\n        observer.observe(el, { childList: true, subtree: true });\n        return () => observer.disconnect();\n      },\n      trackSlideResize({ scope, send }) {\n        const el = getItemGroupEl(scope);\n        if (!el) return;\n        const exec = () => {\n          send({ type: \"SNAP.REFRESH\", src: \"slide.resize\" });\n        };\n        raf(() => {\n          exec();\n          raf(() => {\n            send({ type: \"PAGE.SCROLL\", instant: true });\n          });\n        });\n        const itemEls = getItemEls(scope);\n        itemEls.forEach(exec);\n        const cleanups = itemEls.map((el2) => resizeObserverBorderBox.observe(el2, exec));\n        return callAll(...cleanups);\n      },\n      trackSlideIntersections({ scope, prop, context }) {\n        const el = getItemGroupEl(scope);\n        const win = scope.getWin();\n        const observer = new win.IntersectionObserver(\n          (entries) => {\n            const slidesInView = entries.reduce((acc, entry) => {\n              const target = entry.target;\n              const index = Number(target.dataset.index ?? \"-1\");\n              if (index == null || Number.isNaN(index) || index === -1) return acc;\n              return entry.isIntersecting ? add(acc, index) : remove(acc, index);\n            }, context.get(\"slidesInView\"));\n            context.set(\"slidesInView\", uniq(slidesInView));\n          },\n          {\n            root: el,\n            threshold: prop(\"inViewThreshold\")\n          }\n        );\n        getItemEls(scope).forEach((slide) => observer.observe(slide));\n        return () => observer.disconnect();\n      },\n      trackScroll({ send, refs, scope }) {\n        const el = getItemGroupEl(scope);\n        if (!el) return;\n        const onScroll = () => {\n          clearTimeout(refs.get(\"timeoutRef\"));\n          refs.set(\"timeoutRef\", void 0);\n          refs.set(\n            \"timeoutRef\",\n            setTimeout(() => {\n              send({ type: \"SCROLL.END\" });\n            }, 150)\n          );\n        };\n        return addDomEvent(el, \"scroll\", onScroll, { passive: true });\n      },\n      trackDocumentVisibility({ scope, send }) {\n        const doc = scope.getDoc();\n        const onVisibilityChange = () => {\n          if (doc.visibilityState === \"visible\") return;\n          send({ type: \"AUTOPLAY.PAUSE\", src: \"doc.hidden\" });\n        };\n        return addDomEvent(doc, \"visibilitychange\", onVisibilityChange);\n      },\n      trackPointerMove({ scope, send }) {\n        const doc = scope.getDoc();\n        return trackPointerMove(doc, {\n          onPointerMove({ event }) {\n            send({ type: \"DRAGGING\", left: -event.movementX, top: -event.movementY });\n          },\n          onPointerUp() {\n            send({ type: \"DRAGGING.END\" });\n          }\n        });\n      },\n      trackKeyboardScroll({ scope, send, context }) {\n        const win = scope.getWin();\n        const onKeyDown = (event) => {\n          switch (event.key) {\n            case \"ArrowRight\":\n              event.preventDefault();\n              send({ type: \"PAGE.NEXT\" });\n              break;\n            case \"ArrowLeft\":\n              event.preventDefault();\n              send({ type: \"PAGE.PREV\" });\n              break;\n            case \"Home\":\n              event.preventDefault();\n              send({ type: \"PAGE.SET\", index: 0 });\n              break;\n            case \"End\":\n              event.preventDefault();\n              send({ type: \"PAGE.SET\", index: context.get(\"pageSnapPoints\").length - 1 });\n          }\n        };\n        return addDomEvent(win, \"keydown\", onKeyDown, { capture: true });\n      }\n    },\n    actions: {\n      clearScrollEndTimer({ refs }) {\n        if (refs.get(\"timeoutRef\") == null) return;\n        clearTimeout(refs.get(\"timeoutRef\"));\n        refs.set(\"timeoutRef\", void 0);\n      },\n      scrollToPage({ context, event, scope, computed, flush }) {\n        const behavior = event.instant ? \"instant\" : \"smooth\";\n        const index = clampValue(event.index ?? context.get(\"page\"), 0, context.get(\"pageSnapPoints\").length - 1);\n        const el = getItemGroupEl(scope);\n        if (!el) return;\n        const axis = computed(\"isHorizontal\") ? \"left\" : \"top\";\n        flush(() => {\n          el.scrollTo({ [axis]: context.get(\"pageSnapPoints\")[index], behavior });\n        });\n      },\n      setClosestPage({ context, scope, computed }) {\n        const el = getItemGroupEl(scope);\n        if (!el) return;\n        const scrollPosition = computed(\"isHorizontal\") ? el.scrollLeft : el.scrollTop;\n        const page = context.get(\"pageSnapPoints\").findIndex((point) => Math.abs(point - scrollPosition) < 1);\n        if (page === -1) return;\n        context.set(\"page\", page);\n      },\n      setNextPage({ context, prop, state }) {\n        const loop = state.matches(\"autoplay\") || prop(\"loop\");\n        const page = nextIndex(context.get(\"pageSnapPoints\"), context.get(\"page\"), { loop });\n        context.set(\"page\", page);\n      },\n      setPrevPage({ context, prop, state }) {\n        const loop = state.matches(\"autoplay\") || prop(\"loop\");\n        const page = prevIndex(context.get(\"pageSnapPoints\"), context.get(\"page\"), { loop });\n        context.set(\"page\", page);\n      },\n      setMatchingPage({ context, event, computed, scope }) {\n        const el = getItemGroupEl(scope);\n        if (!el) return;\n        const snapPoint = findSnapPoint(\n          el,\n          computed(\"isHorizontal\") ? \"x\" : \"y\",\n          (node) => node.dataset.index === event.index.toString()\n        );\n        if (snapPoint == null) return;\n        const page = context.get(\"pageSnapPoints\").findIndex((point) => Math.abs(point - snapPoint) < 1);\n        context.set(\"page\", page);\n      },\n      setPage({ context, event }) {\n        const page = event.index ?? context.get(\"page\");\n        context.set(\"page\", page);\n      },\n      clampPage({ context }) {\n        const index = clampValue(context.get(\"page\"), 0, context.get(\"pageSnapPoints\").length - 1);\n        context.set(\"page\", index);\n      },\n      setSnapPoints({ context, computed, scope }) {\n        const el = getItemGroupEl(scope);\n        if (!el) return;\n        const scrollSnapPoints = getScrollSnapPositions(el);\n        context.set(\"pageSnapPoints\", computed(\"isHorizontal\") ? scrollSnapPoints.x : scrollSnapPoints.y);\n      },\n      disableScrollSnap({ scope }) {\n        const el = getItemGroupEl(scope);\n        if (!el) return;\n        const styles = getComputedStyle(el);\n        el.dataset.scrollSnapType = styles.getPropertyValue(\"scroll-snap-type\");\n        el.style.setProperty(\"scroll-snap-type\", \"none\");\n      },\n      scrollSlides({ scope, event }) {\n        const el = getItemGroupEl(scope);\n        el?.scrollBy({ left: event.left, top: event.top, behavior: \"instant\" });\n      },\n      endDragging({ scope, context, computed }) {\n        const el = getItemGroupEl(scope);\n        if (!el) return;\n        const isHorizontal = computed(\"isHorizontal\");\n        const scrollPos = isHorizontal ? el.scrollLeft : el.scrollTop;\n        const snapPoints = context.get(\"pageSnapPoints\");\n        const closest = snapPoints.reduce((closest2, curr) => {\n          return Math.abs(curr - scrollPos) < Math.abs(closest2 - scrollPos) ? curr : closest2;\n        }, snapPoints[0]);\n        raf(() => {\n          el.scrollTo({\n            left: isHorizontal ? closest : el.scrollLeft,\n            top: isHorizontal ? el.scrollTop : closest,\n            behavior: \"smooth\"\n          });\n          context.set(\"page\", snapPoints.indexOf(closest));\n          const scrollSnapType = el.dataset.scrollSnapType;\n          if (scrollSnapType) {\n            el.style.setProperty(\"scroll-snap-type\", scrollSnapType);\n            delete el.dataset.scrollSnapType;\n          }\n        });\n      },\n      focusIndicatorEl({ context, event, scope }) {\n        if (event.src !== \"indicator\") return;\n        const el = getIndicatorEl(scope, context.get(\"page\"));\n        if (!el) return;\n        raf(() => el.focus({ preventScroll: true }));\n      },\n      invokeDragStart({ context, prop }) {\n        prop(\"onDragStatusChange\")?.({ type: \"dragging.start\", isDragging: true, page: context.get(\"page\") });\n      },\n      invokeDragging({ context, prop }) {\n        prop(\"onDragStatusChange\")?.({ type: \"dragging\", isDragging: true, page: context.get(\"page\") });\n      },\n      invokeDraggingEnd({ context, prop }) {\n        prop(\"onDragStatusChange\")?.({ type: \"dragging.end\", isDragging: false, page: context.get(\"page\") });\n      },\n      invokeAutoplay({ context, prop }) {\n        prop(\"onAutoplayStatusChange\")?.({ type: \"autoplay\", isPlaying: true, page: context.get(\"page\") });\n      },\n      invokeAutoplayStart({ context, prop }) {\n        prop(\"onAutoplayStatusChange\")?.({ type: \"autoplay.start\", isPlaying: true, page: context.get(\"page\") });\n      },\n      invokeAutoplayEnd({ context, prop }) {\n        prop(\"onAutoplayStatusChange\")?.({ type: \"autoplay.stop\", isPlaying: false, page: context.get(\"page\") });\n      }\n    }\n  }\n});\nfunction getPageSnapPoints(totalSlides, slidesPerMove, slidesPerPage) {\n  if (totalSlides == null || slidesPerPage <= 0) {\n    return [];\n  }\n  const snapPoints = [];\n  const perMove = slidesPerMove === \"auto\" ? Math.floor(slidesPerPage) : slidesPerMove;\n  if (perMove <= 0) {\n    return [];\n  }\n  for (let i = 0; i < totalSlides; i += perMove) {\n    if (i + slidesPerPage > totalSlides) break;\n    snapPoints.push(i);\n  }\n  return snapPoints;\n}\nvar props = createProps()([\n  \"dir\",\n  \"getRootNode\",\n  \"id\",\n  \"ids\",\n  \"loop\",\n  \"page\",\n  \"defaultPage\",\n  \"onPageChange\",\n  \"orientation\",\n  \"slideCount\",\n  \"slidesPerPage\",\n  \"slidesPerMove\",\n  \"spacing\",\n  \"padding\",\n  \"autoplay\",\n  \"allowMouseDrag\",\n  \"inViewThreshold\",\n  \"translations\",\n  \"snapType\",\n  \"autoSize\",\n  \"onDragStatusChange\",\n  \"onAutoplayStatusChange\"\n]);\nvar splitProps = createSplitProps(props);\nvar indicatorProps = createProps()([\"index\", \"readOnly\"]);\nvar splitIndicatorProps = createSplitProps(indicatorProps);\nvar itemProps = createProps()([\"index\", \"snapAlign\"]);\nvar splitItemProps = createSplitProps(itemProps);\n\nexport { anatomy, connect, indicatorProps, itemProps, machine, props, splitIndicatorProps, splitItemProps, splitProps };\n", "import * as carousel from \"@zag-js/carousel\";\nimport type { Direction, Orientation } from \"@zag-js/types\";\nimport { VanillaMachine, normalizeProps } from \"@zag-js/vanilla\";\nimport {\n  Component,\n  getString,\n  getBoolean,\n  getNumber,\n  generateId,\n  renderPart,\n} from \"../lib\";\n\nexport class Carousel extends Component<carousel.Props, carousel.Api> {\n  initMachine(props: carousel.Props): VanillaMachine<any> {\n    return new VanillaMachine(carousel.machine, props);\n  }\n\n  initApi(): carousel.Api {\n    return carousel.connect(this.machine.service, normalizeProps);\n  }\n\n  render() {\n    const itemsPart = Array.from(\n      this.el.querySelectorAll<HTMLElement>('[data-part=\"item\"]'),\n    );\n    itemsPart.forEach((itemEl, index) => {\n      itemEl.setAttribute(\"data-index\", index.toString());\n    });\n\n    const indicatorGroup = this.el.querySelector<HTMLElement>(\n      '[data-part=\"indicator-group\"]',\n    );\n    if (indicatorGroup) {\n      const pageCount = this.api.pageSnapPoints.length;\n      const buttons = Array.from(\n        indicatorGroup.querySelectorAll<HTMLButtonElement>(\n          '[data-part=\"indicator\"]',\n        ),\n      );\n      for (let i = buttons.length; i < pageCount; i++) {\n        const button = document.createElement(\"button\");\n        button.setAttribute(\"data-part\", \"indicator\");\n        button.setAttribute(\"data-index\", i.toString());\n        indicatorGroup.appendChild(button);\n      }\n    }\n\n    const parts = [\n      \"root\",\n      \"control\",\n      \"prev-trigger\",\n      \"next-trigger\",\n      \"autoplay-trigger\",\n      \"item-group\",\n      \"indicator-group\",\n    ];\n    for (const part of parts) renderPart(this.el, part, this.api);\n\n    const items = [\"item\", \"indicator\"];\n    for (const item of items)\n      renderPart(this.el, item, this.api, { index: \"number\" });\n  }\n}\n\nexport function initCarousel(\n  doc: HTMLElement | Document = document,\n  selector = \".carousel-js\",\n): void {\n  doc.querySelectorAll<HTMLElement>(selector).forEach((rootEl) => {\n    const directions = [\"ltr\", \"rtl\"] as const;\n    const orientations = [\"horizontal\", \"vertical\"] as const;\n    const snapTypes = [\"proximity\", \"mandatory\"] as const;\n\n    const itemCount =\n      rootEl.querySelectorAll<HTMLElement>('[data-part=\"item\"]').length;\n\n    const carousel = new Carousel(rootEl, {\n      id: generateId(rootEl, \"carousel\"),\n      slideCount: itemCount,\n      slidesPerPage: getNumber(rootEl, \"slidesPerPage\"),\n      loop: getBoolean(rootEl, \"loop\"),\n      allowMouseDrag: getBoolean(rootEl, \"allowMouseDrag\") ?? true,\n      autoplay: getBoolean(rootEl, \"autoplay\")\n        ? getNumber(rootEl, \"delay\") !== undefined\n          ? { delay: getNumber(rootEl, \"delay\")! }\n          : undefined\n        : false,\n      defaultPage: getNumber(rootEl, \"defaultPage\"),\n      padding: getString(rootEl, \"padding\"),\n      page: getNumber(rootEl, \"page\"),\n      slidesPerMove:\n        getNumber(rootEl, \"slidesPerMove\") ??\n        (getString(rootEl, \"slidesPerMove\") === \"auto\" ? \"auto\" : undefined),\n      snapType: getString(rootEl, \"snapType\", snapTypes),\n      spacing: getString(rootEl, \"spacing\"),\n      inViewThreshold: getNumber(rootEl, \"inViewThreshold\"),\n      orientation: getString<Orientation>(rootEl, \"orientation\", orientations),\n      dir: getString<Direction>(rootEl, \"dir\", directions),\n      onAutoplayStatusChange(details) {\n        const eventName = getString(rootEl, \"onAutoplayStatusChange\");\n        if (eventName)\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n      },\n      onDragStatusChange(details) {\n        const eventName = getString(rootEl, \"onDragStatusChange\");\n        if (eventName)\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n      },\n      onPageChange(details) {\n        const eventName = getString(rootEl, \"onPageChange\");\n        if (eventName)\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n      },\n    });\n\n    carousel.init();\n  });\n}\n", "import { getWindow, getDocument, getEventTarget, isVirtualClick, isMac } from '@zag-js/dom-query';\n\n// src/index.ts\nfunction isValidKey(e) {\n  return !(e.metaKey || !isMac() && e.altKey || e.ctrlKey || e.key === \"Control\" || e.key === \"Shift\" || e.key === \"Meta\");\n}\nvar nonTextInputTypes = /* @__PURE__ */ new Set([\"checkbox\", \"radio\", \"range\", \"color\", \"file\", \"image\", \"button\", \"submit\", \"reset\"]);\nfunction isKeyboardFocusEvent(isTextInput, modality, e) {\n  const target = e ? getEventTarget(e) : null;\n  const win = getWindow(target);\n  isTextInput = isTextInput || target instanceof win.HTMLInputElement && !nonTextInputTypes.has(target?.type) || target instanceof win.HTMLTextAreaElement || target instanceof win.HTMLElement && target.isContentEditable;\n  return !(isTextInput && modality === \"keyboard\" && e instanceof win.KeyboardEvent && !Reflect.has(FOCUS_VISIBLE_INPUT_KEYS, e.key));\n}\nvar currentModality = null;\nvar changeHandlers = /* @__PURE__ */ new Set();\nvar listenerMap = /* @__PURE__ */ new Map();\nvar hasEventBeforeFocus = false;\nvar hasBlurredWindowRecently = false;\nvar FOCUS_VISIBLE_INPUT_KEYS = {\n  Tab: true,\n  Escape: true\n};\nfunction triggerChangeHandlers(modality, e) {\n  for (let handler of changeHandlers) {\n    handler(modality, e);\n  }\n}\nfunction handleKeyboardEvent(e) {\n  hasEventBeforeFocus = true;\n  if (isValidKey(e)) {\n    currentModality = \"keyboard\";\n    triggerChangeHandlers(\"keyboard\", e);\n  }\n}\nfunction handlePointerEvent(e) {\n  currentModality = \"pointer\";\n  if (e.type === \"mousedown\" || e.type === \"pointerdown\") {\n    hasEventBeforeFocus = true;\n    triggerChangeHandlers(\"pointer\", e);\n  }\n}\nfunction handleClickEvent(e) {\n  if (isVirtualClick(e)) {\n    hasEventBeforeFocus = true;\n    currentModality = \"virtual\";\n  }\n}\nfunction handleFocusEvent(e) {\n  const target = getEventTarget(e);\n  if (target === getWindow(target) || target === getDocument(target)) {\n    return;\n  }\n  if (!hasEventBeforeFocus && !hasBlurredWindowRecently) {\n    currentModality = \"virtual\";\n    triggerChangeHandlers(\"virtual\", e);\n  }\n  hasEventBeforeFocus = false;\n  hasBlurredWindowRecently = false;\n}\nfunction handleWindowBlur() {\n  hasEventBeforeFocus = false;\n  hasBlurredWindowRecently = true;\n}\nfunction setupGlobalFocusEvents(root) {\n  if (typeof window === \"undefined\" || listenerMap.get(getWindow(root))) {\n    return;\n  }\n  const win = getWindow(root);\n  const doc = getDocument(root);\n  let focus = win.HTMLElement.prototype.focus;\n  function patchedFocus() {\n    currentModality = \"virtual\";\n    triggerChangeHandlers(\"virtual\", null);\n    hasEventBeforeFocus = true;\n    focus.apply(this, arguments);\n  }\n  try {\n    Object.defineProperty(win.HTMLElement.prototype, \"focus\", {\n      configurable: true,\n      value: patchedFocus\n    });\n  } catch {\n  }\n  doc.addEventListener(\"keydown\", handleKeyboardEvent, true);\n  doc.addEventListener(\"keyup\", handleKeyboardEvent, true);\n  doc.addEventListener(\"click\", handleClickEvent, true);\n  win.addEventListener(\"focus\", handleFocusEvent, true);\n  win.addEventListener(\"blur\", handleWindowBlur, false);\n  if (typeof win.PointerEvent !== \"undefined\") {\n    doc.addEventListener(\"pointerdown\", handlePointerEvent, true);\n    doc.addEventListener(\"pointermove\", handlePointerEvent, true);\n    doc.addEventListener(\"pointerup\", handlePointerEvent, true);\n  } else {\n    doc.addEventListener(\"mousedown\", handlePointerEvent, true);\n    doc.addEventListener(\"mousemove\", handlePointerEvent, true);\n    doc.addEventListener(\"mouseup\", handlePointerEvent, true);\n  }\n  win.addEventListener(\n    \"beforeunload\",\n    () => {\n      tearDownWindowFocusTracking(root);\n    },\n    { once: true }\n  );\n  listenerMap.set(win, { focus });\n}\nvar tearDownWindowFocusTracking = (root, loadListener) => {\n  const win = getWindow(root);\n  const doc = getDocument(root);\n  const listenerData = listenerMap.get(win);\n  if (!listenerData) {\n    return;\n  }\n  try {\n    Object.defineProperty(win.HTMLElement.prototype, \"focus\", {\n      configurable: true,\n      value: listenerData.focus\n    });\n  } catch {\n  }\n  doc.removeEventListener(\"keydown\", handleKeyboardEvent, true);\n  doc.removeEventListener(\"keyup\", handleKeyboardEvent, true);\n  doc.removeEventListener(\"click\", handleClickEvent, true);\n  win.removeEventListener(\"focus\", handleFocusEvent, true);\n  win.removeEventListener(\"blur\", handleWindowBlur, false);\n  if (typeof win.PointerEvent !== \"undefined\") {\n    doc.removeEventListener(\"pointerdown\", handlePointerEvent, true);\n    doc.removeEventListener(\"pointermove\", handlePointerEvent, true);\n    doc.removeEventListener(\"pointerup\", handlePointerEvent, true);\n  } else {\n    doc.removeEventListener(\"mousedown\", handlePointerEvent, true);\n    doc.removeEventListener(\"mousemove\", handlePointerEvent, true);\n    doc.removeEventListener(\"mouseup\", handlePointerEvent, true);\n  }\n  listenerMap.delete(win);\n};\nfunction getInteractionModality() {\n  return currentModality;\n}\nfunction setInteractionModality(modality) {\n  currentModality = modality;\n  triggerChangeHandlers(modality, null);\n}\nfunction trackInteractionModality(props) {\n  const { onChange, root } = props;\n  setupGlobalFocusEvents(root);\n  onChange({ modality: currentModality });\n  const handler = () => onChange({ modality: currentModality });\n  changeHandlers.add(handler);\n  return () => {\n    changeHandlers.delete(handler);\n  };\n}\nfunction isFocusVisible() {\n  return currentModality === \"keyboard\";\n}\nfunction trackFocusVisible(props = {}) {\n  const { isTextInput, autoFocus, onChange, root } = props;\n  setupGlobalFocusEvents(root);\n  onChange?.({ isFocusVisible: autoFocus || isFocusVisible(), modality: currentModality });\n  const handler = (modality, e) => {\n    if (!isKeyboardFocusEvent(!!isTextInput, modality, e)) return;\n    onChange?.({ isFocusVisible: isFocusVisible(), modality });\n  };\n  changeHandlers.add(handler);\n  return () => {\n    changeHandlers.delete(handler);\n  };\n}\n\nexport { getInteractionModality, isFocusVisible, listenerMap, setInteractionModality, trackFocusVisible, trackInteractionModality };\n", "import { createAnatomy } from '@zag-js/anatomy';\nimport { dispatchInputCheckedEvent, setElementChecked, trackFormControl, trackPress, dataAttr, visuallyHiddenStyle, getEventTarget } from '@zag-js/dom-query';\nimport { trackFocusVisible, isFocusVisible } from '@zag-js/focus-visible';\nimport { createGuards, createMachine } from '@zag-js/core';\nimport { createProps } from '@zag-js/types';\nimport { createSplitProps } from '@zag-js/utils';\n\n// src/checkbox.anatomy.ts\nvar anatomy = createAnatomy(\"checkbox\").parts(\"root\", \"label\", \"control\", \"indicator\");\nvar parts = anatomy.build();\n\n// src/checkbox.dom.ts\nvar getRootId = (ctx) => ctx.ids?.root ?? `checkbox:${ctx.id}`;\nvar getLabelId = (ctx) => ctx.ids?.label ?? `checkbox:${ctx.id}:label`;\nvar getControlId = (ctx) => ctx.ids?.control ?? `checkbox:${ctx.id}:control`;\nvar getHiddenInputId = (ctx) => ctx.ids?.hiddenInput ?? `checkbox:${ctx.id}:input`;\nvar getRootEl = (ctx) => ctx.getById(getRootId(ctx));\nvar getHiddenInputEl = (ctx) => ctx.getById(getHiddenInputId(ctx));\n\n// src/checkbox.connect.ts\nfunction connect(service, normalize) {\n  const { send, context, prop, computed, scope } = service;\n  const disabled = !!prop(\"disabled\");\n  const readOnly = !!prop(\"readOnly\");\n  const required = !!prop(\"required\");\n  const invalid = !!prop(\"invalid\");\n  const focused = !disabled && context.get(\"focused\");\n  const focusVisible = !disabled && context.get(\"focusVisible\");\n  const checked = computed(\"checked\");\n  const indeterminate = computed(\"indeterminate\");\n  const checkedState = context.get(\"checked\");\n  const dataAttrs = {\n    \"data-active\": dataAttr(context.get(\"active\")),\n    \"data-focus\": dataAttr(focused),\n    \"data-focus-visible\": dataAttr(focusVisible),\n    \"data-readonly\": dataAttr(readOnly),\n    \"data-hover\": dataAttr(context.get(\"hovered\")),\n    \"data-disabled\": dataAttr(disabled),\n    \"data-state\": indeterminate ? \"indeterminate\" : checked ? \"checked\" : \"unchecked\",\n    \"data-invalid\": dataAttr(invalid),\n    \"data-required\": dataAttr(required)\n  };\n  return {\n    checked,\n    disabled,\n    indeterminate,\n    focused,\n    checkedState,\n    setChecked(checked2) {\n      send({ type: \"CHECKED.SET\", checked: checked2, isTrusted: false });\n    },\n    toggleChecked() {\n      send({ type: \"CHECKED.TOGGLE\", checked, isTrusted: false });\n    },\n    getRootProps() {\n      return normalize.label({\n        ...parts.root.attrs,\n        ...dataAttrs,\n        dir: prop(\"dir\"),\n        id: getRootId(scope),\n        htmlFor: getHiddenInputId(scope),\n        onPointerMove() {\n          if (disabled) return;\n          send({ type: \"CONTEXT.SET\", context: { hovered: true } });\n        },\n        onPointerLeave() {\n          if (disabled) return;\n          send({ type: \"CONTEXT.SET\", context: { hovered: false } });\n        },\n        onClick(event) {\n          const target = getEventTarget(event);\n          if (target === getHiddenInputEl(scope)) {\n            event.stopPropagation();\n          }\n        }\n      });\n    },\n    getLabelProps() {\n      return normalize.element({\n        ...parts.label.attrs,\n        ...dataAttrs,\n        dir: prop(\"dir\"),\n        id: getLabelId(scope)\n      });\n    },\n    getControlProps() {\n      return normalize.element({\n        ...parts.control.attrs,\n        ...dataAttrs,\n        dir: prop(\"dir\"),\n        id: getControlId(scope),\n        \"aria-hidden\": true\n      });\n    },\n    getIndicatorProps() {\n      return normalize.element({\n        ...parts.indicator.attrs,\n        ...dataAttrs,\n        dir: prop(\"dir\"),\n        hidden: !indeterminate && !checked\n      });\n    },\n    getHiddenInputProps() {\n      return normalize.input({\n        id: getHiddenInputId(scope),\n        type: \"checkbox\",\n        required: prop(\"required\"),\n        defaultChecked: checked,\n        disabled,\n        \"aria-labelledby\": getLabelId(scope),\n        \"aria-invalid\": invalid,\n        name: prop(\"name\"),\n        form: prop(\"form\"),\n        value: prop(\"value\"),\n        style: visuallyHiddenStyle,\n        onFocus() {\n          const focusVisible2 = isFocusVisible();\n          send({ type: \"CONTEXT.SET\", context: { focused: true, focusVisible: focusVisible2 } });\n        },\n        onBlur() {\n          send({ type: \"CONTEXT.SET\", context: { focused: false, focusVisible: false } });\n        },\n        onClick(event) {\n          if (readOnly) {\n            event.preventDefault();\n            return;\n          }\n          const checked2 = event.currentTarget.checked;\n          send({ type: \"CHECKED.SET\", checked: checked2, isTrusted: true });\n        }\n      });\n    }\n  };\n}\nvar { not } = createGuards();\nvar machine = createMachine({\n  props({ props: props2 }) {\n    return {\n      value: \"on\",\n      ...props2,\n      defaultChecked: props2.defaultChecked ?? false\n    };\n  },\n  initialState() {\n    return \"ready\";\n  },\n  context({ prop, bindable }) {\n    return {\n      checked: bindable(() => ({\n        defaultValue: prop(\"defaultChecked\"),\n        value: prop(\"checked\"),\n        onChange(checked) {\n          prop(\"onCheckedChange\")?.({ checked });\n        }\n      })),\n      fieldsetDisabled: bindable(() => ({ defaultValue: false })),\n      focusVisible: bindable(() => ({ defaultValue: false })),\n      active: bindable(() => ({ defaultValue: false })),\n      focused: bindable(() => ({ defaultValue: false })),\n      hovered: bindable(() => ({ defaultValue: false }))\n    };\n  },\n  watch({ track, context, prop, action }) {\n    track([() => prop(\"disabled\")], () => {\n      action([\"removeFocusIfNeeded\"]);\n    });\n    track([() => context.get(\"checked\")], () => {\n      action([\"syncInputElement\"]);\n    });\n  },\n  effects: [\"trackFormControlState\", \"trackPressEvent\", \"trackFocusVisible\"],\n  on: {\n    \"CHECKED.TOGGLE\": [\n      {\n        guard: not(\"isTrusted\"),\n        actions: [\"toggleChecked\", \"dispatchChangeEvent\"]\n      },\n      {\n        actions: [\"toggleChecked\"]\n      }\n    ],\n    \"CHECKED.SET\": [\n      {\n        guard: not(\"isTrusted\"),\n        actions: [\"setChecked\", \"dispatchChangeEvent\"]\n      },\n      {\n        actions: [\"setChecked\"]\n      }\n    ],\n    \"CONTEXT.SET\": {\n      actions: [\"setContext\"]\n    }\n  },\n  computed: {\n    indeterminate: ({ context }) => isIndeterminate(context.get(\"checked\")),\n    checked: ({ context }) => isChecked(context.get(\"checked\")),\n    disabled: ({ context, prop }) => !!prop(\"disabled\") || context.get(\"fieldsetDisabled\")\n  },\n  states: {\n    ready: {}\n  },\n  implementations: {\n    guards: {\n      isTrusted: ({ event }) => !!event.isTrusted\n    },\n    effects: {\n      trackPressEvent({ context, computed, scope }) {\n        if (computed(\"disabled\")) return;\n        return trackPress({\n          pointerNode: getRootEl(scope),\n          keyboardNode: getHiddenInputEl(scope),\n          isValidKey: (event) => event.key === \" \",\n          onPress: () => context.set(\"active\", false),\n          onPressStart: () => context.set(\"active\", true),\n          onPressEnd: () => context.set(\"active\", false)\n        });\n      },\n      trackFocusVisible({ computed, scope }) {\n        if (computed(\"disabled\")) return;\n        return trackFocusVisible({ root: scope.getRootNode?.() });\n      },\n      trackFormControlState({ context, scope }) {\n        return trackFormControl(getHiddenInputEl(scope), {\n          onFieldsetDisabledChange(disabled) {\n            context.set(\"fieldsetDisabled\", disabled);\n          },\n          onFormReset() {\n            context.set(\"checked\", context.initial(\"checked\"));\n          }\n        });\n      }\n    },\n    actions: {\n      setContext({ context, event }) {\n        for (const key in event.context) {\n          context.set(key, event.context[key]);\n        }\n      },\n      syncInputElement({ context, computed, scope }) {\n        const inputEl = getHiddenInputEl(scope);\n        if (!inputEl) return;\n        setElementChecked(inputEl, computed(\"checked\"));\n        inputEl.indeterminate = isIndeterminate(context.get(\"checked\"));\n      },\n      removeFocusIfNeeded({ context, prop }) {\n        if (prop(\"disabled\") && context.get(\"focused\")) {\n          context.set(\"focused\", false);\n          context.set(\"focusVisible\", false);\n        }\n      },\n      setChecked({ context, event }) {\n        context.set(\"checked\", event.checked);\n      },\n      toggleChecked({ context, computed }) {\n        const checked = isIndeterminate(computed(\"checked\")) ? true : !computed(\"checked\");\n        context.set(\"checked\", checked);\n      },\n      dispatchChangeEvent({ computed, scope }) {\n        queueMicrotask(() => {\n          const inputEl = getHiddenInputEl(scope);\n          dispatchInputCheckedEvent(inputEl, { checked: computed(\"checked\") });\n        });\n      }\n    }\n  }\n});\nfunction isIndeterminate(checked) {\n  return checked === \"indeterminate\";\n}\nfunction isChecked(checked) {\n  return isIndeterminate(checked) ? false : !!checked;\n}\nvar props = createProps()([\n  \"defaultChecked\",\n  \"checked\",\n  \"dir\",\n  \"disabled\",\n  \"form\",\n  \"getRootNode\",\n  \"id\",\n  \"ids\",\n  \"invalid\",\n  \"name\",\n  \"onCheckedChange\",\n  \"readOnly\",\n  \"required\",\n  \"value\"\n]);\nvar splitProps = createSplitProps(props);\n\nexport { anatomy, connect, machine, props, splitProps };\n", "import * as checkbox from \"@zag-js/checkbox\";\nimport type { Direction } from \"@zag-js/types\";\nimport { VanillaMachine, normalizeProps } from \"@zag-js/vanilla\";\n\nimport {\n  Component,\n  getString,\n  getBoolean,\n  generateId,\n  renderPart,\n  getPartIds,\n} from \"../lib\";\n\nexport class Checkbox extends Component<checkbox.Props, checkbox.Api> {\n  initMachine(props: checkbox.Props): VanillaMachine<any> {\n    return new VanillaMachine(checkbox.machine, props);\n  }\n  initApi(): checkbox.Api {\n    return checkbox.connect(this.machine.service, normalizeProps);\n  }\n  render(): void {\n    [\"root\", \"label\", \"control\", \"indicator\", \"hidden-input\"].forEach((part) =>\n      renderPart(this.el, part, this.api),\n    );\n  }\n}\nfunction parseCheckedState(\n  el: HTMLElement,\n  attr: \"checked\" | \"defaultChecked\",\n): checkbox.CheckedState | undefined {\n  if (getBoolean(el, attr) === true) return true;\n  return getString(el, attr, [\"indeterminate\"] as const);\n}\nexport function initCheckbox(\n  doc: HTMLElement | Document = document,\n  selector = \".checkbox-js\",\n): void {\n  doc.querySelectorAll<HTMLElement>(selector).forEach((rootEl) => {\n    const checkbox = new Checkbox(rootEl, {\n      id: generateId(rootEl, \"checkbox\"),\n      ids: getPartIds(rootEl, [\n        \"root\",\n        \"label\",\n        \"control\",\n        \"indicator\",\n        \"hidden-input\",\n      ]),\n      name: getString(rootEl, \"name\"),\n      form: getString(rootEl, \"form\"),\n      defaultChecked: parseCheckedState(rootEl, \"defaultChecked\"),\n      checked: parseCheckedState(rootEl, \"checked\"),\n      disabled: getBoolean(rootEl, \"disabled\"),\n      invalid: getBoolean(rootEl, \"invalid\"),\n      readOnly: getBoolean(rootEl, \"readOnly\"),\n      required: getBoolean(rootEl, \"required\"),\n      value: getString(rootEl, \"value\"),\n      dir: getString<Direction>(rootEl, \"dir\", [\"ltr\", \"rtl\"]),\n      onCheckedChange(details) {\n        const eventName = getString(rootEl, \"onCheckedChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n    });\n    checkbox.init();\n    rootEl.addEventListener(\"checkbox:set-checked\", (event) => {\n      const { value } = (event as CustomEvent<{ value: checkbox.CheckedState }>)\n        .detail;\n      checkbox.api.setChecked(value);\n    });\n    rootEl.addEventListener(\"checkbox:toggle-checked\", () => {\n      checkbox.api.toggleChecked();\n    });\n    rootEl.addEventListener(\"checkbox:checked\", (event) => {\n      const { callback } = (\n        event as CustomEvent<{ callback: (value: boolean) => void }>\n      ).detail;\n      if (typeof callback === \"function\") callback(checkbox.api.checked);\n    });\n    rootEl.addEventListener(\"checkbox:disabled\", (event) => {\n      const { callback } = (\n        event as CustomEvent<{ callback: (value: boolean | undefined) => void }>\n      ).detail;\n      if (typeof callback === \"function\") callback(checkbox.api.disabled);\n    });\n    rootEl.addEventListener(\"checkbox:indeterminate\", (event) => {\n      const { callback } = (\n        event as CustomEvent<{ callback: (value: boolean) => void }>\n      ).detail;\n      if (typeof callback === \"function\") callback(checkbox.api.indeterminate);\n    });\n    rootEl.addEventListener(\"checkbox:focused\", (event) => {\n      const { callback } = (\n        event as CustomEvent<{ callback: (value: boolean | undefined) => void }>\n      ).detail;\n      if (typeof callback === \"function\") callback(checkbox.api.focused);\n    });\n    rootEl.addEventListener(\"checkbox:checked-state\", (event) => {\n      const { callback } = (\n        event as CustomEvent<{\n          callback: (value: checkbox.CheckedState) => void;\n        }>\n      ).detail;\n      if (typeof callback === \"function\") callback(checkbox.api.checkedState);\n    });\n  });\n}\n", "import { createAnatomy } from '@zag-js/anatomy';\nimport { setElementValue, getWindow, dataAttr } from '@zag-js/dom-query';\nimport { createMachine } from '@zag-js/core';\nimport { setRafTimeout, createSplitProps } from '@zag-js/utils';\nimport { createProps } from '@zag-js/types';\n\n// src/clipboard.anatomy.ts\nvar anatomy = createAnatomy(\"clipboard\").parts(\"root\", \"control\", \"trigger\", \"indicator\", \"input\", \"label\");\nvar parts = anatomy.build();\nvar getRootId = (ctx) => ctx.ids?.root ?? `clip:${ctx.id}`;\nvar getInputId = (ctx) => ctx.ids?.input ?? `clip:${ctx.id}:input`;\nvar getLabelId = (ctx) => ctx.ids?.label ?? `clip:${ctx.id}:label`;\nvar getInputEl = (ctx) => ctx.getById(getInputId(ctx));\nvar writeToClipboard = (ctx, value) => copyText(ctx.getDoc(), value);\nfunction createNode(doc, text) {\n  const node = doc.createElement(\"pre\");\n  Object.assign(node.style, {\n    width: \"1px\",\n    height: \"1px\",\n    position: \"fixed\",\n    top: \"5px\"\n  });\n  node.textContent = text;\n  return node;\n}\nfunction copyNode(node) {\n  const win = getWindow(node);\n  const selection = win.getSelection();\n  if (selection == null) {\n    return Promise.reject(new Error());\n  }\n  selection.removeAllRanges();\n  const doc = node.ownerDocument;\n  const range = doc.createRange();\n  range.selectNodeContents(node);\n  selection.addRange(range);\n  doc.execCommand(\"copy\");\n  selection.removeAllRanges();\n  return Promise.resolve();\n}\nfunction copyText(doc, text) {\n  const win = doc.defaultView || window;\n  if (win.navigator.clipboard?.writeText !== void 0) {\n    return win.navigator.clipboard.writeText(text);\n  }\n  if (!doc.body) {\n    return Promise.reject(new Error());\n  }\n  const node = createNode(doc, text);\n  doc.body.appendChild(node);\n  copyNode(node);\n  doc.body.removeChild(node);\n  return Promise.resolve();\n}\n\n// src/clipboard.connect.ts\nfunction connect(service, normalize) {\n  const { state, send, context, scope } = service;\n  const copied = state.matches(\"copied\");\n  return {\n    copied,\n    value: context.get(\"value\"),\n    setValue(value) {\n      send({ type: \"VALUE.SET\", value });\n    },\n    copy() {\n      send({ type: \"COPY\" });\n    },\n    getRootProps() {\n      return normalize.element({\n        ...parts.root.attrs,\n        \"data-copied\": dataAttr(copied),\n        id: getRootId(scope)\n      });\n    },\n    getLabelProps() {\n      return normalize.label({\n        ...parts.label.attrs,\n        htmlFor: getInputId(scope),\n        \"data-copied\": dataAttr(copied),\n        id: getLabelId(scope)\n      });\n    },\n    getControlProps() {\n      return normalize.element({\n        ...parts.control.attrs,\n        \"data-copied\": dataAttr(copied)\n      });\n    },\n    getInputProps() {\n      return normalize.input({\n        ...parts.input.attrs,\n        defaultValue: context.get(\"value\"),\n        \"data-copied\": dataAttr(copied),\n        readOnly: true,\n        \"data-readonly\": \"true\",\n        id: getInputId(scope),\n        onFocus(event) {\n          event.currentTarget.select();\n        },\n        onCopy() {\n          send({ type: \"INPUT.COPY\" });\n        }\n      });\n    },\n    getTriggerProps() {\n      return normalize.button({\n        ...parts.trigger.attrs,\n        type: \"button\",\n        \"aria-label\": copied ? \"Copied to clipboard\" : \"Copy to clipboard\",\n        \"data-copied\": dataAttr(copied),\n        onClick() {\n          send({ type: \"COPY\" });\n        }\n      });\n    },\n    getIndicatorProps(props2) {\n      return normalize.element({\n        ...parts.indicator.attrs,\n        hidden: props2.copied !== copied\n      });\n    }\n  };\n}\nvar machine = createMachine({\n  props({ props: props2 }) {\n    return {\n      timeout: 3e3,\n      defaultValue: \"\",\n      ...props2\n    };\n  },\n  initialState() {\n    return \"idle\";\n  },\n  context({ prop, bindable }) {\n    return {\n      value: bindable(() => ({\n        defaultValue: prop(\"defaultValue\"),\n        value: prop(\"value\"),\n        onChange(value) {\n          prop(\"onValueChange\")?.({ value });\n        }\n      }))\n    };\n  },\n  watch({ track, context, action }) {\n    track([() => context.get(\"value\")], () => {\n      action([\"syncInputElement\"]);\n    });\n  },\n  on: {\n    \"VALUE.SET\": {\n      actions: [\"setValue\"]\n    },\n    COPY: {\n      target: \"copied\",\n      actions: [\"copyToClipboard\", \"invokeOnCopy\"]\n    }\n  },\n  states: {\n    idle: {\n      on: {\n        \"INPUT.COPY\": {\n          target: \"copied\",\n          actions: [\"invokeOnCopy\"]\n        }\n      }\n    },\n    copied: {\n      effects: [\"waitForTimeout\"],\n      on: {\n        \"COPY.DONE\": {\n          target: \"idle\"\n        },\n        COPY: {\n          target: \"copied\",\n          actions: [\"copyToClipboard\", \"invokeOnCopy\"]\n        },\n        \"INPUT.COPY\": {\n          actions: [\"invokeOnCopy\"]\n        }\n      }\n    }\n  },\n  implementations: {\n    effects: {\n      waitForTimeout({ prop, send }) {\n        return setRafTimeout(() => {\n          send({ type: \"COPY.DONE\" });\n        }, prop(\"timeout\"));\n      }\n    },\n    actions: {\n      setValue({ context, event }) {\n        context.set(\"value\", event.value);\n      },\n      copyToClipboard({ context, scope }) {\n        writeToClipboard(scope, context.get(\"value\"));\n      },\n      invokeOnCopy({ prop }) {\n        prop(\"onStatusChange\")?.({ copied: true });\n      },\n      syncInputElement({ context, scope }) {\n        const inputEl = getInputEl(scope);\n        if (!inputEl) return;\n        setElementValue(inputEl, context.get(\"value\"));\n      }\n    }\n  }\n});\nvar props = createProps()([\n  \"getRootNode\",\n  \"id\",\n  \"ids\",\n  \"value\",\n  \"defaultValue\",\n  \"timeout\",\n  \"onStatusChange\",\n  \"onValueChange\"\n]);\nvar contextProps = createSplitProps(props);\nvar indicatorProps = createProps()([\"copied\"]);\nvar splitIndicatorProps = createSplitProps(indicatorProps);\n\nexport { anatomy, connect, contextProps, indicatorProps, machine, props, splitIndicatorProps };\n", "import * as clipboard from \"@zag-js/clipboard\";\nimport { VanillaMachine, normalizeProps } from \"@zag-js/vanilla\";\n\nimport {\n  Component,\n  getString,\n  generateId,\n  renderPart,\n  getNumber,\n} from \"../lib\";\nexport class Clipboard extends Component<clipboard.Props, clipboard.Api> {\n  initMachine(props: clipboard.Props): VanillaMachine<any> {\n    return new VanillaMachine(clipboard.machine, props);\n  }\n  initApi(): clipboard.Api {\n    return clipboard.connect(this.machine.service, normalizeProps);\n  }\n  render() {\n    const parts = [\"root\", \"control\", \"trigger\", \"label\", \"input\"];\n    for (const part of parts) renderPart(this.el, part, this.api);\n  }\n}\nexport function initClipboard(\n  doc: HTMLElement | Document = document,\n  selector = \".clipboard-js\",\n): void {\n  doc.querySelectorAll<HTMLElement>(selector).forEach((rootEl) => {\n    const clipboard = new Clipboard(rootEl, {\n      id: generateId(rootEl, \"clipboard\"),\n      defaultValue: getString(rootEl, \"defaultValue\"),\n      value: getString(rootEl, \"value\"),\n      timeout: getNumber(rootEl, \"timeout\"),\n      onStatusChange(details) {\n        const eventName = getString(rootEl, \"onStatusChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onValueChange(details) {\n        const eventName = getString(rootEl, \"onValueChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n    });\n    clipboard.init();\n  });\n}\n", "import Prism from \"prismjs\";\nimport { getString } from \"../lib\";\nimport \"prismjs/components/prism-typescript\";\nimport \"prismjs/components/prism-bash\";\nimport \"prismjs/components/prism-javascript\";\nimport \"prismjs/components/prism-shell-session\";\nimport \"prismjs/components/prism-markup\";\n\nexport class Code {\n  el: HTMLElement;\n  constructor(el: HTMLElement) {\n    this.el = el;\n  }\n  init(): void {\n    const lang = getString(this.el, \"lang\") || \"html\";\n    if (!this.el.classList.contains(`language-${lang}`)) {\n      this.el.classList.add(`language-${lang}`);\n    }\n    Prism.highlightElement(this.el);\n  }\n}\nexport function initCode(\n  doc: HTMLElement | Document = document,\n  selector = \".code-js\",\n): void {\n  doc.querySelectorAll<HTMLElement>(selector).forEach((codeEl) => {\n    const code = new Code(codeEl);\n    code.init();\n  });\n}\n", "(function (Prism) {\n\n\tPrism.languages.typescript = Prism.languages.extend('javascript', {\n\t\t'class-name': {\n\t\t\tpattern: /(\\b(?:class|extends|implements|instanceof|interface|new|type)\\s+)(?!keyof\\b)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?:\\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true,\n\t\t\tinside: null // see below\n\t\t},\n\t\t'builtin': /\\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\\b/,\n\t});\n\n\t// The keywords TypeScript adds to JavaScript\n\tPrism.languages.typescript.keyword.push(\n\t\t/\\b(?:abstract|declare|is|keyof|readonly|require)\\b/,\n\t\t// keywords that have to be followed by an identifier\n\t\t/\\b(?:asserts|infer|interface|module|namespace|type)\\b(?=\\s*(?:[{_$a-zA-Z\\xA0-\\uFFFF]|$))/,\n\t\t// This is for `import type *, {}`\n\t\t/\\btype\\b(?=\\s*(?:[\\{*]|$))/\n\t);\n\n\t// doesn't work with TS because TS is too complex\n\tdelete Prism.languages.typescript['parameter'];\n\tdelete Prism.languages.typescript['literal-property'];\n\n\t// a version of typescript specifically for highlighting types\n\tvar typeInside = Prism.languages.extend('typescript', {});\n\tdelete typeInside['class-name'];\n\n\tPrism.languages.typescript['class-name'].inside = typeInside;\n\n\tPrism.languages.insertBefore('typescript', 'function', {\n\t\t'decorator': {\n\t\t\tpattern: /@[$\\w\\xA0-\\uFFFF]+/,\n\t\t\tinside: {\n\t\t\t\t'at': {\n\t\t\t\t\tpattern: /^@/,\n\t\t\t\t\talias: 'operator'\n\t\t\t\t},\n\t\t\t\t'function': /^[\\s\\S]+/\n\t\t\t}\n\t\t},\n\t\t'generic-function': {\n\t\t\t// e.g. foo<T extends \"bar\" | \"baz\">( ...\n\t\t\tpattern: /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\\s*\\()/,\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'function': /^#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*/,\n\t\t\t\t'generic': {\n\t\t\t\t\tpattern: /<[\\s\\S]+/, // everything after the first <\n\t\t\t\t\talias: 'class-name',\n\t\t\t\t\tinside: typeInside\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\tPrism.languages.ts = Prism.languages.typescript;\n\n}(Prism));\n", "(function (Prism) {\n\t// $ set | grep '^[A-Z][^[:space:]]*=' | cut -d= -f1 | tr '\\n' '|'\n\t// + LC_ALL, RANDOM, REPLY, SECONDS.\n\t// + make sure PS1..4 are here as they are not always set,\n\t// - some useless things.\n\tvar envVars = '\\\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\\\b';\n\n\tvar commandAfterHeredoc = {\n\t\tpattern: /(^([\"']?)\\w+\\2)[ \\t]+\\S.*/,\n\t\tlookbehind: true,\n\t\talias: 'punctuation', // this looks reasonably well in all themes\n\t\tinside: null // see below\n\t};\n\n\tvar insideString = {\n\t\t'bash': commandAfterHeredoc,\n\t\t'environment': {\n\t\t\tpattern: RegExp('\\\\$' + envVars),\n\t\t\talias: 'constant'\n\t\t},\n\t\t'variable': [\n\t\t\t// [0]: Arithmetic Environment\n\t\t\t{\n\t\t\t\tpattern: /\\$?\\(\\([\\s\\S]+?\\)\\)/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t// If there is a $ sign at the beginning highlight $(( and )) as variable\n\t\t\t\t\t'variable': [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /(^\\$\\(\\([\\s\\S]+)\\)\\)/,\n\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t},\n\t\t\t\t\t\t/^\\$\\(\\(/\n\t\t\t\t\t],\n\t\t\t\t\t'number': /\\b0x[\\dA-Fa-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[Ee]-?\\d+)?/,\n\t\t\t\t\t// Operators according to https://www.gnu.org/software/bash/manual/bashref.html#Shell-Arithmetic\n\t\t\t\t\t'operator': /--|\\+\\+|\\*\\*=?|<<=?|>>=?|&&|\\|\\||[=!+\\-*/%<>^&|]=?|[?~:]/,\n\t\t\t\t\t// If there is no $ sign at the beginning highlight (( and )) as punctuation\n\t\t\t\t\t'punctuation': /\\(\\(?|\\)\\)?|,|;/\n\t\t\t\t}\n\t\t\t},\n\t\t\t// [1]: Command Substitution\n\t\t\t{\n\t\t\t\tpattern: /\\$\\((?:\\([^)]+\\)|[^()])+\\)|`[^`]+`/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'variable': /^\\$\\(|^`|\\)$|`$/\n\t\t\t\t}\n\t\t\t},\n\t\t\t// [2]: Brace expansion\n\t\t\t{\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'operator': /:[-=?+]?|[!\\/]|##?|%%?|\\^\\^?|,,?/,\n\t\t\t\t\t'punctuation': /[\\[\\]]/,\n\t\t\t\t\t'environment': {\n\t\t\t\t\t\tpattern: RegExp('(\\\\{)' + envVars),\n\t\t\t\t\t\tlookbehind: true,\n\t\t\t\t\t\talias: 'constant'\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t/\\$(?:\\w+|[#?*!@$])/\n\t\t],\n\t\t// Escape sequences from echo and printf's manuals, and escaped quotes.\n\t\t'entity': /\\\\(?:[abceEfnrtv\\\\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/\n\t};\n\n\tPrism.languages.bash = {\n\t\t'shebang': {\n\t\t\tpattern: /^#!\\s*\\/.*/,\n\t\t\talias: 'important'\n\t\t},\n\t\t'comment': {\n\t\t\tpattern: /(^|[^\"{\\\\$])#.*/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'function-name': [\n\t\t\t// a) function foo {\n\t\t\t// b) foo() {\n\t\t\t// c) function foo() {\n\t\t\t// but not \u201Cfoo {\u201D\n\t\t\t{\n\t\t\t\t// a) and c)\n\t\t\t\tpattern: /(\\bfunction\\s+)[\\w-]+(?=(?:\\s*\\(?:\\s*\\))?\\s*\\{)/,\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'function'\n\t\t\t},\n\t\t\t{\n\t\t\t\t// b)\n\t\t\t\tpattern: /\\b[\\w-]+(?=\\s*\\(\\s*\\)\\s*\\{)/,\n\t\t\t\talias: 'function'\n\t\t\t}\n\t\t],\n\t\t// Highlight variable names as variables in for and select beginnings.\n\t\t'for-or-select': {\n\t\t\tpattern: /(\\b(?:for|select)\\s+)\\w+(?=\\s+in\\s)/,\n\t\t\talias: 'variable',\n\t\t\tlookbehind: true\n\t\t},\n\t\t// Highlight variable names as variables in the left-hand part\n\t\t// of assignments (\u201C=\u201D and \u201C+=\u201D).\n\t\t'assign-left': {\n\t\t\tpattern: /(^|[\\s;|&]|[<>]\\()\\w+(?:\\.\\w+)*(?=\\+?=)/,\n\t\t\tinside: {\n\t\t\t\t'environment': {\n\t\t\t\t\tpattern: RegExp('(^|[\\\\s;|&]|[<>]\\\\()' + envVars),\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\talias: 'constant'\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'variable',\n\t\t\tlookbehind: true\n\t\t},\n\t\t// Highlight parameter names as variables\n\t\t'parameter': {\n\t\t\tpattern: /(^|\\s)-{1,2}(?:\\w+:[+-]?)?\\w+(?:\\.\\w+)*(?=[=\\s]|$)/,\n\t\t\talias: 'variable',\n\t\t\tlookbehind: true\n\t\t},\n\t\t'string': [\n\t\t\t// Support for Here-documents https://en.wikipedia.org/wiki/Here_document\n\t\t\t{\n\t\t\t\tpattern: /((?:^|[^<])<<-?\\s*)(\\w+)\\s[\\s\\S]*?(?:\\r?\\n|\\r)\\2/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: insideString\n\t\t\t},\n\t\t\t// Here-document with quotes around the tag\n\t\t\t// \u2192 No expansion (so no \u201Cinside\u201D).\n\t\t\t{\n\t\t\t\tpattern: /((?:^|[^<])<<-?\\s*)([\"'])(\\w+)\\2\\s[\\s\\S]*?(?:\\r?\\n|\\r)\\3/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'bash': commandAfterHeredoc\n\t\t\t\t}\n\t\t\t},\n\t\t\t// \u201CNormal\u201D string\n\t\t\t{\n\t\t\t\t// https://www.gnu.org/software/bash/manual/html_node/Double-Quotes.html\n\t\t\t\tpattern: /(^|[^\\\\](?:\\\\\\\\)*)\"(?:\\\\[\\s\\S]|\\$\\([^)]+\\)|\\$(?!\\()|`[^`]+`|[^\"\\\\`$])*\"/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: insideString\n\t\t\t},\n\t\t\t{\n\t\t\t\t// https://www.gnu.org/software/bash/manual/html_node/Single-Quotes.html\n\t\t\t\tpattern: /(^|[^$\\\\])'[^']*'/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\t{\n\t\t\t\t// https://www.gnu.org/software/bash/manual/html_node/ANSI_002dC-Quoting.html\n\t\t\t\tpattern: /\\$'(?:[^'\\\\]|\\\\[\\s\\S])*'/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'entity': insideString.entity\n\t\t\t\t}\n\t\t\t}\n\t\t],\n\t\t'environment': {\n\t\t\tpattern: RegExp('\\\\$?' + envVars),\n\t\t\talias: 'constant'\n\t\t},\n\t\t'variable': insideString.variable,\n\t\t'function': {\n\t\t\tpattern: /(^|[\\s;|&]|[<>]\\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\\s;|&])/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'keyword': {\n\t\t\tpattern: /(^|[\\s;|&]|[<>]\\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\\s;|&])/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t// https://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html\n\t\t'builtin': {\n\t\t\tpattern: /(^|[\\s;|&]|[<>]\\()(?:\\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\\s;|&])/,\n\t\t\tlookbehind: true,\n\t\t\t// Alias added to make those easier to distinguish from strings.\n\t\t\talias: 'class-name'\n\t\t},\n\t\t'boolean': {\n\t\t\tpattern: /(^|[\\s;|&]|[<>]\\()(?:false|true)(?=$|[)\\s;|&])/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'file-descriptor': {\n\t\t\tpattern: /\\B&\\d\\b/,\n\t\t\talias: 'important'\n\t\t},\n\t\t'operator': {\n\t\t\t// Lots of redirections here, but not just that.\n\t\t\tpattern: /\\d?<>|>\\||\\+=|=[=~]?|!=?|<<[<-]?|[&\\d]?>>|\\d[<>]&?|[<>][&=]?|&[>&]?|\\|[&|]?/,\n\t\t\tinside: {\n\t\t\t\t'file-descriptor': {\n\t\t\t\t\tpattern: /^\\d/,\n\t\t\t\t\talias: 'important'\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t'punctuation': /\\$?\\(\\(?|\\)\\)?|\\.\\.|[{}[\\];\\\\]/,\n\t\t'number': {\n\t\t\tpattern: /(^|\\s)(?:[1-9]\\d*|0)(?:[.,]\\d+)?\\b/,\n\t\t\tlookbehind: true\n\t\t}\n\t};\n\n\tcommandAfterHeredoc.inside = Prism.languages.bash;\n\n\t/* Patterns in command substitution. */\n\tvar toBeCopied = [\n\t\t'comment',\n\t\t'function-name',\n\t\t'for-or-select',\n\t\t'assign-left',\n\t\t'parameter',\n\t\t'string',\n\t\t'environment',\n\t\t'function',\n\t\t'keyword',\n\t\t'builtin',\n\t\t'boolean',\n\t\t'file-descriptor',\n\t\t'operator',\n\t\t'punctuation',\n\t\t'number'\n\t];\n\tvar inside = insideString.variable[1].inside;\n\tfor (var i = 0; i < toBeCopied.length; i++) {\n\t\tinside[toBeCopied[i]] = Prism.languages.bash[toBeCopied[i]];\n\t}\n\n\tPrism.languages.sh = Prism.languages.bash;\n\tPrism.languages.shell = Prism.languages.bash;\n}(Prism));\n", "Prism.languages.javascript = Prism.languages.extend('clike', {\n\t'class-name': [\n\t\tPrism.languages.clike['class-name'],\n\t\t{\n\t\t\tpattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$A-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\.(?:constructor|prototype))/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'keyword': [\n\t\t{\n\t\t\tpattern: /((?:^|\\})\\s*)catch\\b/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^.]|\\.\\.\\.\\s*)\\b(?:as|assert(?=\\s*\\{)|async(?=\\s*(?:function\\b|\\(|[$\\w\\xA0-\\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\\s*(?:\\{|$))|for|from(?=\\s*(?:['\"]|$))|function|(?:get|set)(?=\\s*(?:[#\\[$\\w\\xA0-\\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\\b/,\n\t\t\tlookbehind: true\n\t\t},\n\t],\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,\n\t'number': {\n\t\tpattern: RegExp(\n\t\t\t/(^|[^\\w$])/.source +\n\t\t\t'(?:' +\n\t\t\t(\n\t\t\t\t// constant\n\t\t\t\t/NaN|Infinity/.source +\n\t\t\t\t'|' +\n\t\t\t\t// binary integer\n\t\t\t\t/0[bB][01]+(?:_[01]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// octal integer\n\t\t\t\t/0[oO][0-7]+(?:_[0-7]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// hexadecimal integer\n\t\t\t\t/0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// decimal bigint\n\t\t\t\t/\\d+(?:_\\d+)*n/.source +\n\t\t\t\t'|' +\n\t\t\t\t// decimal number (integer or float) but no bigint\n\t\t\t\t/(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?/.source\n\t\t\t) +\n\t\t\t')' +\n\t\t\t/(?![\\w$])/.source\n\t\t),\n\t\tlookbehind: true\n\t},\n\t'operator': /--|\\+\\+|\\*\\*=?|=>|&&=?|\\|\\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\\.{3}|\\?\\?=?|\\?\\.?|[~:]/\n});\n\nPrism.languages.javascript['class-name'][0].pattern = /(\\b(?:class|extends|implements|instanceof|interface|new)\\s+)[\\w.\\\\]+/;\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: RegExp(\n\t\t\t// lookbehind\n\t\t\t// eslint-disable-next-line regexp/no-dupe-characters-character-class\n\t\t\t/((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s]|\\b(?:return|yield))\\s*)/.source +\n\t\t\t// Regex pattern:\n\t\t\t// There are 2 regex patterns here. The RegExp set notation proposal added support for nested character\n\t\t\t// classes if the `v` flag is present. Unfortunately, nested CCs are both context-free and incompatible\n\t\t\t// with the only syntax, so we have to define 2 different regex patterns.\n\t\t\t/\\//.source +\n\t\t\t'(?:' +\n\t\t\t/(?:\\[(?:[^\\]\\\\\\r\\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}/.source +\n\t\t\t'|' +\n\t\t\t// `v` flag syntax. This supports 3 levels of nested character classes.\n\t\t\t/(?:\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.)*\\])*\\])*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source +\n\t\t\t')' +\n\t\t\t// lookahead\n\t\t\t/(?=(?:\\s|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*(?:$|[\\r\\n,.;:})\\]]|\\/\\/))/.source\n\t\t),\n\t\tlookbehind: true,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'regex-source': {\n\t\t\t\tpattern: /^(\\/)[\\s\\S]+(?=\\/[a-z]*$)/,\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'language-regex',\n\t\t\t\tinside: Prism.languages.regex\n\t\t\t},\n\t\t\t'regex-delimiter': /^\\/|\\/$/,\n\t\t\t'regex-flags': /^[a-z]+$/,\n\t\t}\n\t},\n\t// This must be declared before keyword because we use \"function\" inside the look-forward\n\t'function-variable': {\n\t\tpattern: /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*[=:]\\s*(?:async\\s*)?(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^()]*\\))*\\)|(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)\\s*=>))/,\n\t\talias: 'function'\n\t},\n\t'parameter': [\n\t\t{\n\t\t\tpattern: /(function(?:\\s+(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)?\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\))/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$a-z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*=>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /(\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*=>)/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /((?:\\b|\\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\\w\\xA0-\\uFFFF]))(?:(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*)\\(\\s*|\\]\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*\\{)/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t}\n\t],\n\t'constant': /\\b[A-Z](?:[A-Z_]|\\dx?)*\\b/\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'hashbang': {\n\t\tpattern: /^#!.*/,\n\t\tgreedy: true,\n\t\talias: 'comment'\n\t},\n\t'template-string': {\n\t\tpattern: /`(?:\\\\[\\s\\S]|\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}|(?!\\$\\{)[^\\\\`])*`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'template-punctuation': {\n\t\t\t\tpattern: /^`|`$/,\n\t\t\t\talias: 'string'\n\t\t\t},\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /((?:^|[^\\\\])(?:\\\\{2})*)\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t},\n\t'string-property': {\n\t\tpattern: /((?:^|[,{])[ \\t]*)([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\2)[^\\\\\\r\\n])*\\2(?=\\s*:)/m,\n\t\tlookbehind: true,\n\t\tgreedy: true,\n\t\talias: 'property'\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'operator', {\n\t'literal-property': {\n\t\tpattern: /((?:^|[,{])[ \\t]*)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*:)/m,\n\t\tlookbehind: true,\n\t\talias: 'property'\n\t},\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.markup.tag.addInlined('script', 'javascript');\n\n\t// add attribute support for all DOM events.\n\t// https://developer.mozilla.org/en-US/docs/Web/Events#Standard_events\n\tPrism.languages.markup.tag.addAttribute(\n\t\t/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,\n\t\t'javascript'\n\t);\n}\n\nPrism.languages.js = Prism.languages.javascript;\n", "(function (Prism) {\n\n\t// CAREFUL!\n\t// The following patterns are concatenated, so the group referenced by a back reference is non-obvious!\n\n\tvar strings = [\n\t\t// normal string\n\t\t/\"(?:\\\\[\\s\\S]|\\$\\([^)]+\\)|\\$(?!\\()|`[^`]+`|[^\"\\\\`$])*\"/.source,\n\t\t/'[^']*'/.source,\n\t\t/\\$'(?:[^'\\\\]|\\\\[\\s\\S])*'/.source,\n\n\t\t// here doc\n\t\t// 2 capturing groups\n\t\t/<<-?\\s*([\"']?)(\\w+)\\1\\s[\\s\\S]*?[\\r\\n]\\2/.source\n\t].join('|');\n\n\tPrism.languages['shell-session'] = {\n\t\t'command': {\n\t\t\tpattern: RegExp(\n\t\t\t\t// user info\n\t\t\t\t/^/.source +\n\t\t\t\t'(?:' +\n\t\t\t\t(\n\t\t\t\t\t// <user> \":\" ( <path> )?\n\t\t\t\t\t/[^\\s@:$#%*!/\\\\]+@[^\\r\\n@:$#%*!/\\\\]+(?::[^\\0-\\x1F$#%*?\"<>:;|]+)?/.source +\n\t\t\t\t\t'|' +\n\t\t\t\t\t// <path>\n\t\t\t\t\t// Since the path pattern is quite general, we will require it to start with a special character to\n\t\t\t\t\t// prevent false positives.\n\t\t\t\t\t/[/~.][^\\0-\\x1F$#%*?\"<>@:;|]*/.source\n\t\t\t\t) +\n\t\t\t\t')?' +\n\t\t\t\t// shell symbol\n\t\t\t\t/[$#%](?=\\s)/.source +\n\t\t\t\t// bash command\n\t\t\t\t/(?:[^\\\\\\r\\n \\t'\"<$]|[ \\t](?:(?!#)|#.*$)|\\\\(?:[^\\r]|\\r\\n?)|\\$(?!')|<(?!<)|<<str>>)+/.source.replace(/<<str>>/g, function () { return strings; }),\n\t\t\t\t'm'\n\t\t\t),\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'info': {\n\t\t\t\t\t// foo@bar:~/files$ exit\n\t\t\t\t\t// foo@bar$ exit\n\t\t\t\t\t// ~/files$ exit\n\t\t\t\t\tpattern: /^[^#$%]+/,\n\t\t\t\t\talias: 'punctuation',\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'user': /^[^\\s@:$#%*!/\\\\]+@[^\\r\\n@:$#%*!/\\\\]+/,\n\t\t\t\t\t\t'punctuation': /:/,\n\t\t\t\t\t\t'path': /[\\s\\S]+/\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'bash': {\n\t\t\t\t\tpattern: /(^[$#%]\\s*)\\S[\\s\\S]*/,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\talias: 'language-bash',\n\t\t\t\t\tinside: Prism.languages.bash\n\t\t\t\t},\n\t\t\t\t'shell-symbol': {\n\t\t\t\t\tpattern: /^[$#%]/,\n\t\t\t\t\talias: 'important'\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t'output': /.(?:.*(?:[\\r\\n]|.$))*/\n\t};\n\n\tPrism.languages['sh-session'] = Prism.languages['shellsession'] = Prism.languages['shell-session'];\n\n}(Prism));\n", "Prism.languages.markup = {\n\t'comment': {\n\t\tpattern: /<!--(?:(?!<!--)[\\s\\S])*?-->/,\n\t\tgreedy: true\n\t},\n\t'prolog': {\n\t\tpattern: /<\\?[\\s\\S]+?\\?>/,\n\t\tgreedy: true\n\t},\n\t'doctype': {\n\t\t// https://www.w3.org/TR/xml/#NT-doctypedecl\n\t\tpattern: /<!DOCTYPE(?:[^>\"'[\\]]|\"[^\"]*\"|'[^']*')+(?:\\[(?:[^<\"'\\]]|\"[^\"]*\"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\\]\\s*)?>/i,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'internal-subset': {\n\t\t\t\tpattern: /(^[^\\[]*\\[)[\\s\\S]+(?=\\]>$)/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: null // see below\n\t\t\t},\n\t\t\t'string': {\n\t\t\t\tpattern: /\"[^\"]*\"|'[^']*'/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\t'punctuation': /^<!|>$|[[\\]]/,\n\t\t\t'doctype-tag': /^DOCTYPE/i,\n\t\t\t'name': /[^\\s<>'\"]+/\n\t\t}\n\t},\n\t'cdata': {\n\t\tpattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n\t\tgreedy: true\n\t},\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<%]+(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))|(?=[\\s/>])))+)?\\s*\\/?>/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'special-attr': [],\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+)/,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /^=/,\n\t\t\t\t\t\t\talias: 'attr-equals'\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /^(\\s*)[\"']|[\"']$/,\n\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': [\n\t\t{\n\t\t\tpattern: /&[\\da-z]{1,8};/i,\n\t\t\talias: 'named-entity'\n\t\t},\n\t\t/&#x?[\\da-f]{1,8};/i\n\t]\n};\n\nPrism.languages.markup['tag'].inside['attr-value'].inside['entity'] =\n\tPrism.languages.markup['entity'];\nPrism.languages.markup['doctype'].inside['internal-subset'].inside = Prism.languages.markup;\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function (env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&amp;/, '&');\n\t}\n});\n\nObject.defineProperty(Prism.languages.markup.tag, 'addInlined', {\n\t/**\n\t * Adds an inlined language to markup.\n\t *\n\t * An example of an inlined language is CSS with `<style>` tags.\n\t *\n\t * @param {string} tagName The name of the tag that contains the inlined language. This name will be treated as\n\t * case insensitive.\n\t * @param {string} lang The language key.\n\t * @example\n\t * addInlined('style', 'css');\n\t */\n\tvalue: function addInlined(tagName, lang) {\n\t\tvar includedCdataInside = {};\n\t\tincludedCdataInside['language-' + lang] = {\n\t\t\tpattern: /(^<!\\[CDATA\\[)[\\s\\S]+?(?=\\]\\]>$)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages[lang]\n\t\t};\n\t\tincludedCdataInside['cdata'] = /^<!\\[CDATA\\[|\\]\\]>$/i;\n\n\t\tvar inside = {\n\t\t\t'included-cdata': {\n\t\t\t\tpattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n\t\t\t\tinside: includedCdataInside\n\t\t\t}\n\t\t};\n\t\tinside['language-' + lang] = {\n\t\t\tpattern: /[\\s\\S]+/,\n\t\t\tinside: Prism.languages[lang]\n\t\t};\n\n\t\tvar def = {};\n\t\tdef[tagName] = {\n\t\t\tpattern: RegExp(/(<__[^>]*>)(?:<!\\[CDATA\\[(?:[^\\]]|\\](?!\\]>))*\\]\\]>|(?!<!\\[CDATA\\[)[\\s\\S])*?(?=<\\/__>)/.source.replace(/__/g, function () { return tagName; }), 'i'),\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true,\n\t\t\tinside: inside\n\t\t};\n\n\t\tPrism.languages.insertBefore('markup', 'cdata', def);\n\t}\n});\nObject.defineProperty(Prism.languages.markup.tag, 'addAttribute', {\n\t/**\n\t * Adds an pattern to highlight languages embedded in HTML attributes.\n\t *\n\t * An example of an inlined language is CSS with `style` attributes.\n\t *\n\t * @param {string} attrName The name of the tag that contains the inlined language. This name will be treated as\n\t * case insensitive.\n\t * @param {string} lang The language key.\n\t * @example\n\t * addAttribute('style', 'css');\n\t */\n\tvalue: function (attrName, lang) {\n\t\tPrism.languages.markup.tag.inside['special-attr'].push({\n\t\t\tpattern: RegExp(\n\t\t\t\t/(^|[\"'\\s])/.source + '(?:' + attrName + ')' + /\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))/.source,\n\t\t\t\t'i'\n\t\t\t),\n\t\t\tlookbehind: true,\n\t\t\tinside: {\n\t\t\t\t'attr-name': /^[^\\s=]+/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /=[\\s\\S]+/,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'value': {\n\t\t\t\t\t\t\tpattern: /(^=\\s*([\"']|(?![\"'])))\\S[\\s\\S]*(?=\\2$)/,\n\t\t\t\t\t\t\tlookbehind: true,\n\t\t\t\t\t\t\talias: [lang, 'language-' + lang],\n\t\t\t\t\t\t\tinside: Prism.languages[lang]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'punctuation': [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tpattern: /^=/,\n\t\t\t\t\t\t\t\talias: 'attr-equals'\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t/\"|'/\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n});\n\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\nPrism.languages.xml = Prism.languages.extend('markup', {});\nPrism.languages.ssml = Prism.languages.xml;\nPrism.languages.atom = Prism.languages.xml;\nPrism.languages.rss = Prism.languages.xml;\n", "import { createAnatomy } from '@zag-js/anatomy';\nimport { raf, observeChildren, getComputedStyle, setStyle, getTabbables, setAttribute, getEventTarget, nextTick, dataAttr } from '@zag-js/dom-query';\nimport { createSplitProps, toPx } from '@zag-js/utils';\nimport { createMachine } from '@zag-js/core';\nimport { createProps } from '@zag-js/types';\n\n// src/collapsible.anatomy.ts\nvar anatomy = createAnatomy(\"collapsible\").parts(\"root\", \"trigger\", \"content\", \"indicator\");\nvar parts = anatomy.build();\n\n// src/collapsible.dom.ts\nvar getRootId = (ctx) => ctx.ids?.root ?? `collapsible:${ctx.id}`;\nvar getContentId = (ctx) => ctx.ids?.content ?? `collapsible:${ctx.id}:content`;\nvar getTriggerId = (ctx) => ctx.ids?.trigger ?? `collapsible:${ctx.id}:trigger`;\nvar getContentEl = (ctx) => ctx.getById(getContentId(ctx));\nfunction connect(service, normalize) {\n  const { state, send, context, scope, prop } = service;\n  const visible = state.matches(\"open\") || state.matches(\"closing\");\n  const open = state.matches(\"open\");\n  const closed = state.matches(\"closed\");\n  const { width, height } = context.get(\"size\");\n  const disabled = !!prop(\"disabled\");\n  const collapsedHeight = prop(\"collapsedHeight\");\n  const collapsedWidth = prop(\"collapsedWidth\");\n  const hasCollapsedHeight = collapsedHeight != null;\n  const hasCollapsedWidth = collapsedWidth != null;\n  const hasCollapsedSize = hasCollapsedHeight || hasCollapsedWidth;\n  const skip = !context.get(\"initial\") && open;\n  return {\n    disabled,\n    visible,\n    open,\n    measureSize() {\n      send({ type: \"size.measure\" });\n    },\n    setOpen(nextOpen) {\n      const open2 = state.matches(\"open\");\n      if (open2 === nextOpen) return;\n      send({ type: nextOpen ? \"open\" : \"close\" });\n    },\n    getRootProps() {\n      return normalize.element({\n        ...parts.root.attrs,\n        \"data-state\": open ? \"open\" : \"closed\",\n        dir: prop(\"dir\"),\n        id: getRootId(scope)\n      });\n    },\n    getContentProps() {\n      return normalize.element({\n        ...parts.content.attrs,\n        id: getContentId(scope),\n        \"data-collapsible\": \"\",\n        \"data-state\": skip ? void 0 : open ? \"open\" : \"closed\",\n        \"data-disabled\": dataAttr(disabled),\n        \"data-has-collapsed-size\": dataAttr(hasCollapsedSize),\n        hidden: !visible && !hasCollapsedSize,\n        dir: prop(\"dir\"),\n        style: {\n          \"--height\": toPx(height),\n          \"--width\": toPx(width),\n          \"--collapsed-height\": toPx(collapsedHeight),\n          \"--collapsed-width\": toPx(collapsedWidth),\n          ...closed && hasCollapsedHeight && {\n            overflow: \"hidden\",\n            minHeight: toPx(collapsedHeight),\n            maxHeight: toPx(collapsedHeight)\n          },\n          ...closed && hasCollapsedWidth && {\n            overflow: \"hidden\",\n            minWidth: toPx(collapsedWidth),\n            maxWidth: toPx(collapsedWidth)\n          }\n        }\n      });\n    },\n    getTriggerProps() {\n      return normalize.element({\n        ...parts.trigger.attrs,\n        id: getTriggerId(scope),\n        dir: prop(\"dir\"),\n        type: \"button\",\n        \"data-state\": open ? \"open\" : \"closed\",\n        \"data-disabled\": dataAttr(disabled),\n        \"aria-controls\": getContentId(scope),\n        \"aria-expanded\": visible || false,\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          if (disabled) return;\n          send({ type: open ? \"close\" : \"open\" });\n        }\n      });\n    },\n    getIndicatorProps() {\n      return normalize.element({\n        ...parts.indicator.attrs,\n        dir: prop(\"dir\"),\n        \"data-state\": open ? \"open\" : \"closed\",\n        \"data-disabled\": dataAttr(disabled)\n      });\n    }\n  };\n}\nvar machine = createMachine({\n  initialState({ prop }) {\n    const open = prop(\"open\") || prop(\"defaultOpen\");\n    return open ? \"open\" : \"closed\";\n  },\n  context({ bindable }) {\n    return {\n      size: bindable(() => ({\n        defaultValue: { height: 0, width: 0 },\n        sync: true\n      })),\n      initial: bindable(() => ({\n        defaultValue: false\n      }))\n    };\n  },\n  refs() {\n    return {\n      cleanup: void 0,\n      stylesRef: void 0\n    };\n  },\n  watch({ track, prop, action }) {\n    track([() => prop(\"open\")], () => {\n      action([\"setInitial\", \"computeSize\", \"toggleVisibility\"]);\n    });\n  },\n  exit: [\"cleanupNode\"],\n  states: {\n    closed: {\n      effects: [\"trackTabbableElements\"],\n      on: {\n        \"controlled.open\": {\n          target: \"open\"\n        },\n        open: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"setInitial\", \"computeSize\", \"invokeOnOpen\"]\n          }\n        ]\n      }\n    },\n    closing: {\n      effects: [\"trackExitAnimation\"],\n      on: {\n        \"controlled.close\": {\n          target: \"closed\"\n        },\n        \"controlled.open\": {\n          target: \"open\"\n        },\n        open: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"setInitial\", \"invokeOnOpen\"]\n          }\n        ],\n        close: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnExitComplete\"]\n          },\n          {\n            target: \"closed\",\n            actions: [\"setInitial\", \"computeSize\", \"invokeOnExitComplete\"]\n          }\n        ],\n        \"animation.end\": {\n          target: \"closed\",\n          actions: [\"invokeOnExitComplete\", \"clearInitial\"]\n        }\n      }\n    },\n    open: {\n      effects: [\"trackEnterAnimation\"],\n      on: {\n        \"controlled.close\": {\n          target: \"closing\"\n        },\n        close: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            target: \"closing\",\n            actions: [\"setInitial\", \"computeSize\", \"invokeOnClose\"]\n          }\n        ],\n        \"size.measure\": {\n          actions: [\"measureSize\"]\n        },\n        \"animation.end\": {\n          actions: [\"clearInitial\"]\n        }\n      }\n    }\n  },\n  implementations: {\n    guards: {\n      isOpenControlled: ({ prop }) => prop(\"open\") != void 0\n    },\n    effects: {\n      trackEnterAnimation: ({ send, scope }) => {\n        let cleanup;\n        const rafCleanup = raf(() => {\n          const contentEl = getContentEl(scope);\n          if (!contentEl) return;\n          const animationName = getComputedStyle(contentEl).animationName;\n          const hasNoAnimation = !animationName || animationName === \"none\";\n          if (hasNoAnimation) {\n            send({ type: \"animation.end\" });\n            return;\n          }\n          const onEnd = (event) => {\n            const target = getEventTarget(event);\n            if (target === contentEl) {\n              send({ type: \"animation.end\" });\n            }\n          };\n          contentEl.addEventListener(\"animationend\", onEnd);\n          cleanup = () => {\n            contentEl.removeEventListener(\"animationend\", onEnd);\n          };\n        });\n        return () => {\n          rafCleanup();\n          cleanup?.();\n        };\n      },\n      trackExitAnimation: ({ send, scope }) => {\n        let cleanup;\n        const rafCleanup = raf(() => {\n          const contentEl = getContentEl(scope);\n          if (!contentEl) return;\n          const animationName = getComputedStyle(contentEl).animationName;\n          const hasNoAnimation = !animationName || animationName === \"none\";\n          if (hasNoAnimation) {\n            send({ type: \"animation.end\" });\n            return;\n          }\n          const onEnd = (event) => {\n            const target = getEventTarget(event);\n            if (target === contentEl) {\n              send({ type: \"animation.end\" });\n            }\n          };\n          contentEl.addEventListener(\"animationend\", onEnd);\n          const restoreStyles = setStyle(contentEl, {\n            animationFillMode: \"forwards\"\n          });\n          cleanup = () => {\n            contentEl.removeEventListener(\"animationend\", onEnd);\n            nextTick(() => restoreStyles());\n          };\n        });\n        return () => {\n          rafCleanup();\n          cleanup?.();\n        };\n      },\n      trackTabbableElements: ({ scope, prop }) => {\n        if (!prop(\"collapsedHeight\") && !prop(\"collapsedWidth\")) return;\n        const contentEl = getContentEl(scope);\n        if (!contentEl) return;\n        const applyInertToTabbables = () => {\n          const tabbables = getTabbables(contentEl);\n          const restoreAttrs = tabbables.map((tabbable) => setAttribute(tabbable, \"inert\", \"\"));\n          return () => {\n            restoreAttrs.forEach((attr) => attr());\n          };\n        };\n        let restoreInert = applyInertToTabbables();\n        const observerCleanup = observeChildren(contentEl, {\n          callback() {\n            restoreInert();\n            restoreInert = applyInertToTabbables();\n          }\n        });\n        return () => {\n          restoreInert();\n          observerCleanup();\n        };\n      }\n    },\n    actions: {\n      setInitial: ({ context, flush }) => {\n        flush(() => {\n          context.set(\"initial\", true);\n        });\n      },\n      clearInitial: ({ context }) => {\n        context.set(\"initial\", false);\n      },\n      cleanupNode: ({ refs }) => {\n        refs.set(\"stylesRef\", null);\n      },\n      measureSize: ({ context, scope }) => {\n        const contentEl = getContentEl(scope);\n        if (!contentEl) return;\n        const { height, width } = contentEl.getBoundingClientRect();\n        context.set(\"size\", { height, width });\n      },\n      computeSize: ({ refs, scope, context }) => {\n        refs.get(\"cleanup\")?.();\n        const rafCleanup = raf(() => {\n          const contentEl = getContentEl(scope);\n          if (!contentEl) return;\n          const hidden = contentEl.hidden;\n          contentEl.style.animationName = \"none\";\n          contentEl.style.animationDuration = \"0s\";\n          contentEl.hidden = false;\n          const rect = contentEl.getBoundingClientRect();\n          context.set(\"size\", { height: rect.height, width: rect.width });\n          if (context.get(\"initial\")) {\n            contentEl.style.animationName = \"\";\n            contentEl.style.animationDuration = \"\";\n          }\n          contentEl.hidden = hidden;\n        });\n        refs.set(\"cleanup\", rafCleanup);\n      },\n      invokeOnOpen: ({ prop }) => {\n        prop(\"onOpenChange\")?.({ open: true });\n      },\n      invokeOnClose: ({ prop }) => {\n        prop(\"onOpenChange\")?.({ open: false });\n      },\n      invokeOnExitComplete: ({ prop }) => {\n        prop(\"onExitComplete\")?.();\n      },\n      toggleVisibility: ({ prop, send }) => {\n        send({ type: prop(\"open\") ? \"controlled.open\" : \"controlled.close\" });\n      }\n    }\n  }\n});\nvar props = createProps()([\n  \"dir\",\n  \"disabled\",\n  \"getRootNode\",\n  \"id\",\n  \"ids\",\n  \"collapsedHeight\",\n  \"collapsedWidth\",\n  \"onExitComplete\",\n  \"onOpenChange\",\n  \"defaultOpen\",\n  \"open\"\n]);\nvar splitProps = createSplitProps(props);\n\nexport { anatomy, connect, machine, props, splitProps };\n", "import * as collapsible from \"@zag-js/collapsible\";\nimport { VanillaMachine, normalizeProps } from \"@zag-js/vanilla\";\n\nimport {\n  Component,\n  getString,\n  generateId,\n  renderPart,\n  getBoolean,\n  valuesEqual,\n  getPartIds,\n} from \"../lib\";\nexport class Collapsible extends Component<collapsible.Props, collapsible.Api> {\n  initMachine(props: collapsible.Props): VanillaMachine<any> {\n    return new VanillaMachine(collapsible.machine, props);\n  }\n  initApi() {\n    return collapsible.connect(this.machine.service, normalizeProps);\n  }\n  render() {\n    const parts = [\"root\", \"trigger\", \"content\", \"indicator\"];\n    for (const part of parts) renderPart(this.el, part, this.api);\n  }\n}\nexport function initCollapsible(\n  doc: HTMLElement | Document = document,\n  selector = \".collapsible-js\",\n): void {\n  doc.querySelectorAll<HTMLElement>(selector).forEach((rootEl) => {\n    const collapsible = new Collapsible(rootEl, {\n      id: generateId(rootEl, \"collapsible\"),\n      ids: getPartIds(rootEl, [\"root\", \"trigger\", \"content\", \"indicator\"]),\n      defaultOpen: getBoolean(rootEl, \"defaultOpen\"),\n      open: getBoolean(rootEl, \"open\"),\n      disabled: getBoolean(rootEl, \"disabled\"),\n      onOpenChange(details) {\n        const eventName = getString(rootEl, \"onOpenChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onExitComplete() {\n        const eventName = getString(rootEl, \"onExitComplete\");\n        if (eventName) {\n          rootEl.dispatchEvent(\n            new CustomEvent(eventName, { detail: \"onExitComplete\" }),\n          );\n        }\n      },\n    });\n    collapsible.init();\n    collapsible.el.addEventListener(\"collapsible:set-open\", (event) => {\n      const { value } = (event as CustomEvent<{ value: boolean }>).detail;\n      if (!valuesEqual(collapsible.api.open, value)) {\n        collapsible.api.setOpen(value);\n      }\n    });\n    collapsible.el.addEventListener(\"collapsible:open\", (event) => {\n      const detail = (\n        event as CustomEvent<{ callback: (value: boolean) => void }>\n      ).detail;\n      const callback = detail.callback;\n      if (callback && typeof callback === \"function\") {\n        callback(collapsible.api.open);\n      }\n    });\n  });\n}\n", "import { getValuePercent, getPercentValue, snapValueToStep, clampValue, toFixedNumber, mod } from '@zag-js/utils';\n\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, key + \"\" , value);\n\n// src/color-format-gradient.ts\nvar generateRGB_R = (orientation, dir, zValue) => {\n  const maskImage = `linear-gradient(to ${orientation[Number(!dir)]}, transparent, #000)`;\n  const result = {\n    areaStyles: {\n      backgroundImage: `linear-gradient(to ${orientation[Number(dir)]},rgb(${zValue},0,0),rgb(${zValue},255,0))`\n    },\n    areaGradientStyles: {\n      backgroundImage: `linear-gradient(to ${orientation[Number(dir)]},rgb(${zValue},0,255),rgb(${zValue},255,255))`,\n      WebkitMaskImage: maskImage,\n      maskImage\n    }\n  };\n  return result;\n};\nvar generateRGB_G = (orientation, dir, zValue) => {\n  const maskImage = `linear-gradient(to ${orientation[Number(!dir)]}, transparent, #000)`;\n  const result = {\n    areaStyles: {\n      backgroundImage: `linear-gradient(to ${orientation[Number(dir)]},rgb(0,${zValue},0),rgb(255,${zValue},0))`\n    },\n    areaGradientStyles: {\n      backgroundImage: `linear-gradient(to ${orientation[Number(dir)]},rgb(0,${zValue},255),rgb(255,${zValue},255))`,\n      WebkitMaskImage: maskImage,\n      maskImage\n    }\n  };\n  return result;\n};\nvar generateRGB_B = (orientation, dir, zValue) => {\n  const maskImage = `linear-gradient(to ${orientation[Number(!dir)]}, transparent, #000)`;\n  const result = {\n    areaStyles: {\n      backgroundImage: `linear-gradient(to ${orientation[Number(dir)]},rgb(0,0,${zValue}),rgb(255,0,${zValue}))`\n    },\n    areaGradientStyles: {\n      backgroundImage: `linear-gradient(to ${orientation[Number(dir)]},rgb(0,255,${zValue}),rgb(255,255,${zValue}))`,\n      WebkitMaskImage: maskImage,\n      maskImage\n    }\n  };\n  return result;\n};\nvar generateHSL_H = (orientation, dir, zValue) => {\n  const result = {\n    areaStyles: {},\n    areaGradientStyles: {\n      background: [\n        `linear-gradient(to ${orientation[Number(dir)]}, hsla(0,0%,0%,1) 0%, hsla(0,0%,0%,0) 50%, hsla(0,0%,100%,0) 50%, hsla(0,0%,100%,1) 100%)`,\n        `linear-gradient(to ${orientation[Number(!dir)]},hsl(0,0%,50%),hsla(0,0%,50%,0))`,\n        `hsl(${zValue}, 100%, 50%)`\n      ].join(\",\")\n    }\n  };\n  return result;\n};\nvar generateHSL_S = (orientation, dir, alphaValue) => {\n  const result = {\n    areaStyles: {},\n    areaGradientStyles: {\n      background: [\n        `linear-gradient(to ${orientation[Number(!dir)]}, hsla(0,0%,0%,${alphaValue}) 0%, hsla(0,0%,0%,0) 50%, hsla(0,0%,100%,0) 50%, hsla(0,0%,100%,${alphaValue}) 100%)`,\n        `linear-gradient(to ${orientation[Number(dir)]},hsla(0,100%,50%,${alphaValue}),hsla(60,100%,50%,${alphaValue}),hsla(120,100%,50%,${alphaValue}),hsla(180,100%,50%,${alphaValue}),hsla(240,100%,50%,${alphaValue}),hsla(300,100%,50%,${alphaValue}),hsla(359,100%,50%,${alphaValue}))`,\n        \"hsl(0, 0%, 50%)\"\n      ].join(\",\")\n    }\n  };\n  return result;\n};\nvar generateHSL_L = (orientation, dir, zValue) => {\n  const result = {\n    areaStyles: {},\n    areaGradientStyles: {\n      backgroundImage: [\n        `linear-gradient(to ${orientation[Number(!dir)]},hsl(0,0%,${zValue}%),hsla(0,0%,${zValue}%,0))`,\n        `linear-gradient(to ${orientation[Number(dir)]},hsl(0,100%,${zValue}%),hsl(60,100%,${zValue}%),hsl(120,100%,${zValue}%),hsl(180,100%,${zValue}%),hsl(240,100%,${zValue}%),hsl(300,100%,${zValue}%),hsl(360,100%,${zValue}%))`\n      ].join(\",\")\n    }\n  };\n  return result;\n};\nvar generateHSB_H = (orientation, dir, zValue) => {\n  const result = {\n    areaStyles: {},\n    areaGradientStyles: {\n      background: [\n        `linear-gradient(to ${orientation[Number(dir)]},hsl(0,0%,0%),hsla(0,0%,0%,0))`,\n        `linear-gradient(to ${orientation[Number(!dir)]},hsl(0,0%,100%),hsla(0,0%,100%,0))`,\n        `hsl(${zValue}, 100%, 50%)`\n      ].join(\",\")\n    }\n  };\n  return result;\n};\nvar generateHSB_S = (orientation, dir, alphaValue) => {\n  const result = {\n    areaStyles: {},\n    areaGradientStyles: {\n      background: [\n        `linear-gradient(to ${orientation[Number(!dir)]},hsla(0,0%,0%,${alphaValue}),hsla(0,0%,0%,0))`,\n        `linear-gradient(to ${orientation[Number(dir)]},hsla(0,100%,50%,${alphaValue}),hsla(60,100%,50%,${alphaValue}),hsla(120,100%,50%,${alphaValue}),hsla(180,100%,50%,${alphaValue}),hsla(240,100%,50%,${alphaValue}),hsla(300,100%,50%,${alphaValue}),hsla(359,100%,50%,${alphaValue}))`,\n        `linear-gradient(to ${orientation[Number(!dir)]},hsl(0,0%,0%),hsl(0,0%,100%))`\n      ].join(\",\")\n    }\n  };\n  return result;\n};\nvar generateHSB_B = (orientation, dir, alphaValue) => {\n  const result = {\n    areaStyles: {},\n    areaGradientStyles: {\n      background: [\n        `linear-gradient(to ${orientation[Number(!dir)]},hsla(0,0%,100%,${alphaValue}),hsla(0,0%,100%,0))`,\n        `linear-gradient(to ${orientation[Number(dir)]},hsla(0,100%,50%,${alphaValue}),hsla(60,100%,50%,${alphaValue}),hsla(120,100%,50%,${alphaValue}),hsla(180,100%,50%,${alphaValue}),hsla(240,100%,50%,${alphaValue}),hsla(300,100%,50%,${alphaValue}),hsla(359,100%,50%,${alphaValue}))`,\n        \"#000\"\n      ].join(\",\")\n    }\n  };\n  return result;\n};\n\n// src/area-gradient.ts\nfunction getColorAreaGradient(color, options) {\n  const { xChannel, yChannel, dir: dirProp = \"ltr\" } = options;\n  const { zChannel } = color.getColorAxes({ xChannel, yChannel });\n  const zValue = color.getChannelValue(zChannel);\n  const { minValue: zMin, maxValue: zMax } = color.getChannelRange(zChannel);\n  const orientation = [\"top\", dirProp === \"rtl\" ? \"left\" : \"right\"];\n  let dir = false;\n  let background = { areaStyles: {}, areaGradientStyles: {} };\n  let alphaValue = (zValue - zMin) / (zMax - zMin);\n  let isHSL = color.getFormat() === \"hsla\";\n  switch (zChannel) {\n    case \"red\": {\n      dir = xChannel === \"green\";\n      background = generateRGB_R(orientation, dir, zValue);\n      break;\n    }\n    case \"green\": {\n      dir = xChannel === \"red\";\n      background = generateRGB_G(orientation, dir, zValue);\n      break;\n    }\n    case \"blue\": {\n      dir = xChannel === \"red\";\n      background = generateRGB_B(orientation, dir, zValue);\n      break;\n    }\n    case \"hue\": {\n      dir = xChannel !== \"saturation\";\n      if (isHSL) {\n        background = generateHSL_H(orientation, dir, zValue);\n      } else {\n        background = generateHSB_H(orientation, dir, zValue);\n      }\n      break;\n    }\n    case \"saturation\": {\n      dir = xChannel === \"hue\";\n      if (isHSL) {\n        background = generateHSL_S(orientation, dir, alphaValue);\n      } else {\n        background = generateHSB_S(orientation, dir, alphaValue);\n      }\n      break;\n    }\n    case \"brightness\": {\n      dir = xChannel === \"hue\";\n      background = generateHSB_B(orientation, dir, alphaValue);\n      break;\n    }\n    case \"lightness\": {\n      dir = xChannel === \"hue\";\n      background = generateHSL_L(orientation, dir, zValue);\n      break;\n    }\n  }\n  return background;\n}\nvar isEqualObject = (a, b) => {\n  if (Object.keys(a).length !== Object.keys(b).length) return false;\n  for (let key in a) if (a[key] !== b[key]) return false;\n  return true;\n};\nvar Color = class {\n  toHexInt() {\n    return this.toFormat(\"rgba\").toHexInt();\n  }\n  getChannelValue(channel) {\n    if (channel in this) return this[channel];\n    throw new Error(\"Unsupported color channel: \" + channel);\n  }\n  getChannelValuePercent(channel, valueToCheck) {\n    const value = valueToCheck ?? this.getChannelValue(channel);\n    const { minValue, maxValue } = this.getChannelRange(channel);\n    return getValuePercent(value, minValue, maxValue);\n  }\n  getChannelPercentValue(channel, percentToCheck) {\n    const { minValue, maxValue, step } = this.getChannelRange(channel);\n    const percentValue = getPercentValue(percentToCheck, minValue, maxValue, step);\n    return snapValueToStep(percentValue, minValue, maxValue, step);\n  }\n  withChannelValue(channel, value) {\n    const { minValue, maxValue } = this.getChannelRange(channel);\n    if (channel in this) {\n      let clone = this.clone();\n      clone[channel] = clampValue(value, minValue, maxValue);\n      return clone;\n    }\n    throw new Error(\"Unsupported color channel: \" + channel);\n  }\n  getColorAxes(xyChannels) {\n    let { xChannel, yChannel } = xyChannels;\n    let xCh = xChannel || this.getChannels().find((c) => c !== yChannel);\n    let yCh = yChannel || this.getChannels().find((c) => c !== xCh);\n    let zCh = this.getChannels().find((c) => c !== xCh && c !== yCh);\n    return { xChannel: xCh, yChannel: yCh, zChannel: zCh };\n  }\n  incrementChannel(channel, stepSize) {\n    const { minValue, maxValue, step } = this.getChannelRange(channel);\n    const value = snapValueToStep(\n      clampValue(this.getChannelValue(channel) + stepSize, minValue, maxValue),\n      minValue,\n      maxValue,\n      step\n    );\n    return this.withChannelValue(channel, value);\n  }\n  decrementChannel(channel, stepSize) {\n    return this.incrementChannel(channel, -stepSize);\n  }\n  isEqual(color) {\n    const isSame = isEqualObject(this.toJSON(), color.toJSON());\n    return isSame && this.getChannelValue(\"alpha\") === color.getChannelValue(\"alpha\");\n  }\n};\nvar HEX_COLOR_REGEX = /^#[\\da-f]+$/i;\nvar RGB_COLOR_REGEX = /^rgba?\\((.*)\\)$/;\nvar HEX_STARTING_REGEX = /[^#]/gi;\nvar _RGBColor = class _RGBColor extends Color {\n  constructor(red, green, blue, alpha) {\n    super();\n    this.red = red;\n    this.green = green;\n    this.blue = blue;\n    this.alpha = alpha;\n  }\n  static parse(value) {\n    let colors = [];\n    if (HEX_COLOR_REGEX.test(value) && [4, 5, 7, 9].includes(value.length)) {\n      const values = (value.length < 6 ? value.replace(HEX_STARTING_REGEX, \"$&$&\") : value).slice(1).split(\"\");\n      while (values.length > 0) {\n        colors.push(parseInt(values.splice(0, 2).join(\"\"), 16));\n      }\n      colors[3] = colors[3] !== void 0 ? colors[3] / 255 : void 0;\n    }\n    const match = value.match(RGB_COLOR_REGEX);\n    if (match?.[1]) {\n      colors = match[1].split(\",\").map((value2) => Number(value2.trim())).map((num, i) => clampValue(num, 0, i < 3 ? 255 : 1));\n    }\n    return colors.length < 3 ? void 0 : new _RGBColor(colors[0], colors[1], colors[2], colors[3] ?? 1);\n  }\n  toString(format) {\n    switch (format) {\n      case \"hex\":\n        return \"#\" + (this.red.toString(16).padStart(2, \"0\") + this.green.toString(16).padStart(2, \"0\") + this.blue.toString(16).padStart(2, \"0\")).toUpperCase();\n      case \"hexa\":\n        return \"#\" + (this.red.toString(16).padStart(2, \"0\") + this.green.toString(16).padStart(2, \"0\") + this.blue.toString(16).padStart(2, \"0\") + Math.round(this.alpha * 255).toString(16).padStart(2, \"0\")).toUpperCase();\n      case \"rgb\":\n        return `rgb(${this.red}, ${this.green}, ${this.blue})`;\n      case \"css\":\n      case \"rgba\":\n        return `rgba(${this.red}, ${this.green}, ${this.blue}, ${this.alpha})`;\n      case \"hsl\":\n        return this.toHSL().toString(\"hsl\");\n      case \"hsb\":\n        return this.toHSB().toString(\"hsb\");\n      default:\n        return this.toFormat(format).toString(format);\n    }\n  }\n  toFormat(format) {\n    switch (format) {\n      case \"rgba\":\n        return this;\n      case \"hsba\":\n        return this.toHSB();\n      case \"hsla\":\n        return this.toHSL();\n      default:\n        throw new Error(\"Unsupported color conversion: rgb -> \" + format);\n    }\n  }\n  toHexInt() {\n    return this.red << 16 | this.green << 8 | this.blue;\n  }\n  /**\n   * Converts an RGB color value to HSB.\n   * Conversion formula adapted from https://en.wikipedia.org/wiki/HSL_and_HSV#From_RGB.\n   * @returns An HSBColor object.\n   */\n  toHSB() {\n    const red = this.red / 255;\n    const green = this.green / 255;\n    const blue = this.blue / 255;\n    const min = Math.min(red, green, blue);\n    const brightness = Math.max(red, green, blue);\n    const chroma = brightness - min;\n    const saturation = brightness === 0 ? 0 : chroma / brightness;\n    let hue = 0;\n    if (chroma !== 0) {\n      switch (brightness) {\n        case red:\n          hue = (green - blue) / chroma + (green < blue ? 6 : 0);\n          break;\n        case green:\n          hue = (blue - red) / chroma + 2;\n          break;\n        case blue:\n          hue = (red - green) / chroma + 4;\n          break;\n      }\n      hue /= 6;\n    }\n    return new HSBColor(\n      toFixedNumber(hue * 360, 2),\n      toFixedNumber(saturation * 100, 2),\n      toFixedNumber(brightness * 100, 2),\n      toFixedNumber(this.alpha, 2)\n    );\n  }\n  /**\n   * Converts an RGB color value to HSL.\n   * Conversion formula adapted from https://en.wikipedia.org/wiki/HSL_and_HSV#From_RGB.\n   * @returns An HSLColor object.\n   */\n  toHSL() {\n    const red = this.red / 255;\n    const green = this.green / 255;\n    const blue = this.blue / 255;\n    const min = Math.min(red, green, blue);\n    const max = Math.max(red, green, blue);\n    const lightness = (max + min) / 2;\n    const chroma = max - min;\n    let hue = -1;\n    let saturation = -1;\n    if (chroma === 0) {\n      hue = saturation = 0;\n    } else {\n      saturation = chroma / (lightness < 0.5 ? max + min : 2 - max - min);\n      switch (max) {\n        case red:\n          hue = (green - blue) / chroma + (green < blue ? 6 : 0);\n          break;\n        case green:\n          hue = (blue - red) / chroma + 2;\n          break;\n        case blue:\n          hue = (red - green) / chroma + 4;\n          break;\n      }\n      hue /= 6;\n    }\n    return new HSLColor(\n      toFixedNumber(hue * 360, 2),\n      toFixedNumber(saturation * 100, 2),\n      toFixedNumber(lightness * 100, 2),\n      toFixedNumber(this.alpha, 2)\n    );\n  }\n  clone() {\n    return new _RGBColor(this.red, this.green, this.blue, this.alpha);\n  }\n  getChannelFormatOptions(channel) {\n    switch (channel) {\n      case \"red\":\n      case \"green\":\n      case \"blue\":\n        return { style: \"decimal\" };\n      case \"alpha\":\n        return { style: \"percent\" };\n      default:\n        throw new Error(\"Unknown color channel: \" + channel);\n    }\n  }\n  formatChannelValue(channel, locale) {\n    let options = this.getChannelFormatOptions(channel);\n    let value = this.getChannelValue(channel);\n    return new Intl.NumberFormat(locale, options).format(value);\n  }\n  getChannelRange(channel) {\n    switch (channel) {\n      case \"red\":\n      case \"green\":\n      case \"blue\":\n        return { minValue: 0, maxValue: 255, step: 1, pageSize: 17 };\n      case \"alpha\":\n        return { minValue: 0, maxValue: 1, step: 0.01, pageSize: 0.1 };\n      default:\n        throw new Error(\"Unknown color channel: \" + channel);\n    }\n  }\n  toJSON() {\n    return { r: this.red, g: this.green, b: this.blue, a: this.alpha };\n  }\n  getFormat() {\n    return \"rgba\";\n  }\n  getChannels() {\n    return _RGBColor.colorChannels;\n  }\n};\n__publicField(_RGBColor, \"colorChannels\", [\"red\", \"green\", \"blue\"]);\nvar RGBColor = _RGBColor;\n\n// src/hsl-color.ts\nvar HSL_REGEX = /hsl\\(([-+]?\\d+(?:.\\d+)?\\s*,\\s*[-+]?\\d+(?:.\\d+)?%\\s*,\\s*[-+]?\\d+(?:.\\d+)?%)\\)|hsla\\(([-+]?\\d+(?:.\\d+)?\\s*,\\s*[-+]?\\d+(?:.\\d+)?%\\s*,\\s*[-+]?\\d+(?:.\\d+)?%\\s*,\\s*[-+]?\\d(.\\d+)?)\\)/;\nvar _HSLColor = class _HSLColor extends Color {\n  constructor(hue, saturation, lightness, alpha) {\n    super();\n    this.hue = hue;\n    this.saturation = saturation;\n    this.lightness = lightness;\n    this.alpha = alpha;\n  }\n  static parse(value) {\n    let m;\n    if (m = value.match(HSL_REGEX)) {\n      const [h, s, l, a] = (m[1] ?? m[2]).split(\",\").map((n) => Number(n.trim().replace(\"%\", \"\")));\n      return new _HSLColor(mod(h, 360), clampValue(s, 0, 100), clampValue(l, 0, 100), clampValue(a ?? 1, 0, 1));\n    }\n  }\n  toString(format) {\n    switch (format) {\n      case \"hex\":\n        return this.toRGB().toString(\"hex\");\n      case \"hexa\":\n        return this.toRGB().toString(\"hexa\");\n      case \"hsl\":\n        return `hsl(${this.hue}, ${toFixedNumber(this.saturation, 2)}%, ${toFixedNumber(this.lightness, 2)}%)`;\n      case \"css\":\n      case \"hsla\":\n        return `hsla(${this.hue}, ${toFixedNumber(this.saturation, 2)}%, ${toFixedNumber(this.lightness, 2)}%, ${this.alpha})`;\n      case \"hsb\":\n        return this.toHSB().toString(\"hsb\");\n      case \"rgb\":\n        return this.toRGB().toString(\"rgb\");\n      default:\n        return this.toFormat(format).toString(format);\n    }\n  }\n  toFormat(format) {\n    switch (format) {\n      case \"hsla\":\n        return this;\n      case \"hsba\":\n        return this.toHSB();\n      case \"rgba\":\n        return this.toRGB();\n      default:\n        throw new Error(\"Unsupported color conversion: hsl -> \" + format);\n    }\n  }\n  /**\n   * Converts a HSL color to HSB.\n   * Conversion formula adapted from https://en.wikipedia.org/wiki/HSL_and_HSV#HSL_to_HSV.\n   * @returns An HSBColor object.\n   */\n  toHSB() {\n    let saturation = this.saturation / 100;\n    let lightness = this.lightness / 100;\n    let brightness = lightness + saturation * Math.min(lightness, 1 - lightness);\n    saturation = brightness === 0 ? 0 : 2 * (1 - lightness / brightness);\n    return new HSBColor(\n      toFixedNumber(this.hue, 2),\n      toFixedNumber(saturation * 100, 2),\n      toFixedNumber(brightness * 100, 2),\n      toFixedNumber(this.alpha, 2)\n    );\n  }\n  /**\n   * Converts a HSL color to RGB.\n   * Conversion formula adapted from https://en.wikipedia.org/wiki/HSL_and_HSV#HSL_to_RGB_alternative.\n   * @returns An RGBColor object.\n   */\n  toRGB() {\n    let hue = this.hue;\n    let saturation = this.saturation / 100;\n    let lightness = this.lightness / 100;\n    let a = saturation * Math.min(lightness, 1 - lightness);\n    let fn = (n, k = (n + hue / 30) % 12) => lightness - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n    return new RGBColor(\n      Math.round(fn(0) * 255),\n      Math.round(fn(8) * 255),\n      Math.round(fn(4) * 255),\n      toFixedNumber(this.alpha, 2)\n    );\n  }\n  clone() {\n    return new _HSLColor(this.hue, this.saturation, this.lightness, this.alpha);\n  }\n  getChannelFormatOptions(channel) {\n    switch (channel) {\n      case \"hue\":\n        return { style: \"unit\", unit: \"degree\", unitDisplay: \"narrow\" };\n      case \"saturation\":\n      case \"lightness\":\n      case \"alpha\":\n        return { style: \"percent\" };\n      default:\n        throw new Error(\"Unknown color channel: \" + channel);\n    }\n  }\n  formatChannelValue(channel, locale) {\n    let options = this.getChannelFormatOptions(channel);\n    let value = this.getChannelValue(channel);\n    if (channel === \"saturation\" || channel === \"lightness\") {\n      value /= 100;\n    }\n    return new Intl.NumberFormat(locale, options).format(value);\n  }\n  getChannelRange(channel) {\n    switch (channel) {\n      case \"hue\":\n        return { minValue: 0, maxValue: 360, step: 1, pageSize: 15 };\n      case \"saturation\":\n      case \"lightness\":\n        return { minValue: 0, maxValue: 100, step: 1, pageSize: 10 };\n      case \"alpha\":\n        return { minValue: 0, maxValue: 1, step: 0.01, pageSize: 0.1 };\n      default:\n        throw new Error(\"Unknown color channel: \" + channel);\n    }\n  }\n  toJSON() {\n    return { h: this.hue, s: this.saturation, l: this.lightness, a: this.alpha };\n  }\n  getFormat() {\n    return \"hsla\";\n  }\n  getChannels() {\n    return _HSLColor.colorChannels;\n  }\n};\n__publicField(_HSLColor, \"colorChannels\", [\"hue\", \"saturation\", \"lightness\"]);\nvar HSLColor = _HSLColor;\n\n// src/hsb-color.ts\nvar HSB_REGEX = /hsb\\(([-+]?\\d+(?:.\\d+)?\\s*,\\s*[-+]?\\d+(?:.\\d+)?%\\s*,\\s*[-+]?\\d+(?:.\\d+)?%)\\)|hsba\\(([-+]?\\d+(?:.\\d+)?\\s*,\\s*[-+]?\\d+(?:.\\d+)?%\\s*,\\s*[-+]?\\d+(?:.\\d+)?%\\s*,\\s*[-+]?\\d(.\\d+)?)\\)/;\nvar _HSBColor = class _HSBColor extends Color {\n  constructor(hue, saturation, brightness, alpha) {\n    super();\n    this.hue = hue;\n    this.saturation = saturation;\n    this.brightness = brightness;\n    this.alpha = alpha;\n  }\n  static parse(value) {\n    let m;\n    if (m = value.match(HSB_REGEX)) {\n      const [h, s, b, a] = (m[1] ?? m[2]).split(\",\").map((n) => Number(n.trim().replace(\"%\", \"\")));\n      return new _HSBColor(mod(h, 360), clampValue(s, 0, 100), clampValue(b, 0, 100), clampValue(a ?? 1, 0, 1));\n    }\n  }\n  toString(format) {\n    switch (format) {\n      case \"css\":\n        return this.toHSL().toString(\"css\");\n      case \"hex\":\n        return this.toRGB().toString(\"hex\");\n      case \"hexa\":\n        return this.toRGB().toString(\"hexa\");\n      case \"hsb\":\n        return `hsb(${this.hue}, ${toFixedNumber(this.saturation, 2)}%, ${toFixedNumber(this.brightness, 2)}%)`;\n      case \"hsba\":\n        return `hsba(${this.hue}, ${toFixedNumber(this.saturation, 2)}%, ${toFixedNumber(this.brightness, 2)}%, ${this.alpha})`;\n      case \"hsl\":\n        return this.toHSL().toString(\"hsl\");\n      case \"rgb\":\n        return this.toRGB().toString(\"rgb\");\n      default:\n        return this.toFormat(format).toString(format);\n    }\n  }\n  toFormat(format) {\n    switch (format) {\n      case \"hsba\":\n        return this;\n      case \"hsla\":\n        return this.toHSL();\n      case \"rgba\":\n        return this.toRGB();\n      default:\n        throw new Error(\"Unsupported color conversion: hsb -> \" + format);\n    }\n  }\n  /**\n   * Converts a HSB color to HSL.\n   * Conversion formula adapted from https://en.wikipedia.org/wiki/HSL_and_HSV#HSV_to_HSL.\n   * @returns An HSLColor object.\n   */\n  toHSL() {\n    let saturation = this.saturation / 100;\n    let brightness = this.brightness / 100;\n    let lightness = brightness * (1 - saturation / 2);\n    saturation = lightness === 0 || lightness === 1 ? 0 : (brightness - lightness) / Math.min(lightness, 1 - lightness);\n    return new HSLColor(\n      toFixedNumber(this.hue, 2),\n      toFixedNumber(saturation * 100, 2),\n      toFixedNumber(lightness * 100, 2),\n      toFixedNumber(this.alpha, 2)\n    );\n  }\n  /**\n   * Converts a HSV color value to RGB.\n   * Conversion formula adapted from https://en.wikipedia.org/wiki/HSL_and_HSV#HSV_to_RGB_alternative.\n   * @returns An RGBColor object.\n   */\n  toRGB() {\n    let hue = this.hue;\n    let saturation = this.saturation / 100;\n    let brightness = this.brightness / 100;\n    let fn = (n, k = (n + hue / 60) % 6) => brightness - saturation * brightness * Math.max(Math.min(k, 4 - k, 1), 0);\n    return new RGBColor(\n      Math.round(fn(5) * 255),\n      Math.round(fn(3) * 255),\n      Math.round(fn(1) * 255),\n      toFixedNumber(this.alpha, 2)\n    );\n  }\n  clone() {\n    return new _HSBColor(this.hue, this.saturation, this.brightness, this.alpha);\n  }\n  getChannelFormatOptions(channel) {\n    switch (channel) {\n      case \"hue\":\n        return { style: \"unit\", unit: \"degree\", unitDisplay: \"narrow\" };\n      case \"saturation\":\n      case \"brightness\":\n      case \"alpha\":\n        return { style: \"percent\" };\n      default:\n        throw new Error(\"Unknown color channel: \" + channel);\n    }\n  }\n  formatChannelValue(channel, locale) {\n    let options = this.getChannelFormatOptions(channel);\n    let value = this.getChannelValue(channel);\n    if (channel === \"saturation\" || channel === \"brightness\") {\n      value /= 100;\n    }\n    return new Intl.NumberFormat(locale, options).format(value);\n  }\n  getChannelRange(channel) {\n    switch (channel) {\n      case \"hue\":\n        return { minValue: 0, maxValue: 360, step: 1, pageSize: 15 };\n      case \"saturation\":\n      case \"brightness\":\n        return { minValue: 0, maxValue: 100, step: 1, pageSize: 10 };\n      case \"alpha\":\n        return { minValue: 0, maxValue: 1, step: 0.01, pageSize: 0.1 };\n      default:\n        throw new Error(\"Unknown color channel: \" + channel);\n    }\n  }\n  toJSON() {\n    return { h: this.hue, s: this.saturation, b: this.brightness, a: this.alpha };\n  }\n  getFormat() {\n    return \"hsba\";\n  }\n  getChannels() {\n    return _HSBColor.colorChannels;\n  }\n};\n__publicField(_HSBColor, \"colorChannels\", [\"hue\", \"saturation\", \"brightness\"]);\nvar HSBColor = _HSBColor;\n\n// src/native-color.ts\nvar nativeColors = \"aliceblue:f0f8ff,antiquewhite:faebd7,aqua:00ffff,aquamarine:7fffd4,azure:f0ffff,beige:f5f5dc,bisque:ffe4c4,black:000000,blanchedalmond:ffebcd,blue:0000ff,blueviolet:8a2be2,brown:a52a2a,burlywood:deb887,cadetblue:5f9ea0,chartreuse:7fff00,chocolate:d2691e,coral:ff7f50,cornflowerblue:6495ed,cornsilk:fff8dc,crimson:dc143c,cyan:00ffff,darkblue:00008b,darkcyan:008b8b,darkgoldenrod:b8860b,darkgray:a9a9a9,darkgreen:006400,darkkhaki:bdb76b,darkmagenta:8b008b,darkolivegreen:556b2f,darkorange:ff8c00,darkorchid:9932cc,darkred:8b0000,darksalmon:e9967a,darkseagreen:8fbc8f,darkslateblue:483d8b,darkslategray:2f4f4f,darkturquoise:00ced1,darkviolet:9400d3,deeppink:ff1493,deepskyblue:00bfff,dimgray:696969,dodgerblue:1e90ff,firebrick:b22222,floralwhite:fffaf0,forestgreen:228b22,fuchsia:ff00ff,gainsboro:dcdcdc,ghostwhite:f8f8ff,gold:ffd700,goldenrod:daa520,gray:808080,green:008000,greenyellow:adff2f,honeydew:f0fff0,hotpink:ff69b4,indianred:cd5c5c,indigo:4b0082,ivory:fffff0,khaki:f0e68c,lavender:e6e6fa,lavenderblush:fff0f5,lawngreen:7cfc00,lemonchiffon:fffacd,lightblue:add8e6,lightcoral:f08080,lightcyan:e0ffff,lightgoldenrodyellow:fafad2,lightgrey:d3d3d3,lightgreen:90ee90,lightpink:ffb6c1,lightsalmon:ffa07a,lightseagreen:20b2aa,lightskyblue:87cefa,lightslategray:778899,lightsteelblue:b0c4de,lightyellow:ffffe0,lime:00ff00,limegreen:32cd32,linen:faf0e6,magenta:ff00ff,maroon:800000,mediumaquamarine:66cdaa,mediumblue:0000cd,mediumorchid:ba55d3,mediumpurple:9370d8,mediumseagreen:3cb371,mediumslateblue:7b68ee,mediumspringgreen:00fa9a,mediumturquoise:48d1cc,mediumvioletred:c71585,midnightblue:191970,mintcream:f5fffa,mistyrose:ffe4e1,moccasin:ffe4b5,navajowhite:ffdead,navy:000080,oldlace:fdf5e6,olive:808000,olivedrab:6b8e23,orange:ffa500,orangered:ff4500,orchid:da70d6,palegoldenrod:eee8aa,palegreen:98fb98,paleturquoise:afeeee,palevioletred:d87093,papayawhip:ffefd5,peachpuff:ffdab9,peru:cd853f,pink:ffc0cb,plum:dda0dd,powderblue:b0e0e6,purple:800080,rebeccapurple:663399,red:ff0000,rosybrown:bc8f8f,royalblue:4169e1,saddlebrown:8b4513,salmon:fa8072,sandybrown:f4a460,seagreen:2e8b57,seashell:fff5ee,sienna:a0522d,silver:c0c0c0,skyblue:87ceeb,slateblue:6a5acd,slategray:708090,snow:fffafa,springgreen:00ff7f,steelblue:4682b4,tan:d2b48c,teal:008080,thistle:d8bfd8,tomato:ff6347,turquoise:40e0d0,violet:ee82ee,wheat:f5deb3,white:ffffff,whitesmoke:f5f5f5,yellow:ffff00,yellowgreen:9acd32\";\nvar makeMap = (str) => {\n  const map = /* @__PURE__ */ new Map();\n  const list = str.split(\",\");\n  for (let i = 0; i < list.length; i++) {\n    const [key, val] = list[i].split(\":\");\n    map.set(key, `#${val}`);\n    if (key.includes(\"gray\")) map.set(key.replace(\"gray\", \"grey\"), `#${val}`);\n  }\n  return map;\n};\nvar nativeColorMap = makeMap(nativeColors);\n\n// src/parse-color.ts\nvar parseColor = (value) => {\n  if (nativeColorMap.has(value)) {\n    return parseColor(nativeColorMap.get(value));\n  }\n  const result = RGBColor.parse(value) || HSBColor.parse(value) || HSLColor.parse(value);\n  if (!result) {\n    const error = new Error(\"Invalid color value: \" + value);\n    Error.captureStackTrace?.(error, parseColor);\n    throw error;\n  }\n  return result;\n};\nvar normalizeColor = (v) => {\n  return typeof v === \"string\" ? parseColor(v) : v;\n};\n\nexport { Color, getColorAreaGradient, normalizeColor, parseColor };\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};\nconst oppositeAlignmentMap = {\n  start: 'end',\n  end: 'start'\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}\nconst yAxisSides = /*#__PURE__*/new Set(['top', 'bottom']);\nfunction getSideAxis(placement) {\n  return yAxisSides.has(getSide(placement)) ? '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.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\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  return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\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 * 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 validMiddleware = middleware.filter(Boolean);\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 middlewareData = {};\n  let resetCount = 0;\n  for (let i = 0; i < validMiddleware.length; i++) {\n    const {\n      name,\n      fn\n    } = validMiddleware[i];\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,\n      elements: {\n        reference,\n        floating\n      }\n    });\n    x = nextX != null ? nextX : x;\n    y = nextY != null ? nextY : y;\n    middlewareData = {\n      ...middlewareData,\n      [name]: {\n        ...middlewareData[name],\n        ...data\n      }\n    };\n    if (reset && resetCount <= 50) {\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 * 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/**\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 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 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      } = state;\n      const {\n        strategy = 'referenceHidden',\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      switch (strategy) {\n        case 'referenceHidden':\n          {\n            const overflow = await 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 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      } = 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 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 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}\nconst invalidOverflowDisplayValues = /*#__PURE__*/new Set(['inline', 'contents']);\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) && !invalidOverflowDisplayValues.has(display);\n}\nconst tableElements = /*#__PURE__*/new Set(['table', 'td', 'th']);\nfunction isTableElement(element) {\n  return tableElements.has(getNodeName(element));\n}\nconst topLayerSelectors = [':popover-open', ':modal'];\nfunction isTopLayer(element) {\n  return topLayerSelectors.some(selector => {\n    try {\n      return element.matches(selector);\n    } catch (_e) {\n      return false;\n    }\n  });\n}\nconst transformProperties = ['transform', 'translate', 'scale', 'rotate', 'perspective'];\nconst willChangeValues = ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'];\nconst containValues = ['paint', 'layout', 'strict', 'content'];\nfunction isContainingBlock(elementOrCss) {\n  const webkit = isWebKit();\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 transformProperties.some(value => css[value] ? css[value] !== 'none' : false) || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || willChangeValues.some(value => (css.willChange || '').includes(value)) || containValues.some(value => (css.contain || '').includes(value));\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 (typeof CSS === 'undefined' || !CSS.supports) return false;\n  return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nconst lastTraversableNodeNames = /*#__PURE__*/new Set(['html', 'body', '#document']);\nfunction isLastTraversableNode(node) {\n  return lastTraversableNodeNames.has(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  }\n  return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\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 (isHTMLElement(offsetParent)) {\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\nconst absoluteOrFixed = /*#__PURE__*/new Set(['absolute', 'fixed']);\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 && absoluteOrFixed.has(currentContainingBlockComputedStyle.position) || 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 firstClippingAncestor = clippingAncestors[0];\n  const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n    const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n  return {\n    width: clippingRect.right - clippingRect.left,\n    height: clippingRect.bottom - clippingRect.top,\n    x: clippingRect.left,\n    y: clippingRect.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) : []), ...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) {\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    resizeObserver.observe(floating);\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, offset, flip, shift, limitShift, arrow, size, hide, computePosition } from '@floating-ui/dom';\nimport { raf, isHTMLElement, getWindow, getComputedStyle } from '@zag-js/dom-query';\nimport { noop, isNull, compact } from '@zag-js/utils';\n\n// src/get-placement.ts\nfunction createDOMRect(x = 0, y = 0, width = 0, height = 0) {\n  if (typeof DOMRect === \"function\") {\n    return new DOMRect(x, y, width, height);\n  }\n  const rect = {\n    x,\n    y,\n    width,\n    height,\n    top: y,\n    right: x + width,\n    bottom: y + height,\n    left: x\n  };\n  return { ...rect, toJSON: () => rect };\n}\nfunction getDOMRect(anchorRect) {\n  if (!anchorRect) return createDOMRect();\n  const { x, y, width, height } = anchorRect;\n  return createDOMRect(x, y, width, height);\n}\nfunction getAnchorElement(anchorElement, getAnchorRect) {\n  return {\n    contextElement: isHTMLElement(anchorElement) ? anchorElement : anchorElement?.contextElement,\n    getBoundingClientRect: () => {\n      const anchor = anchorElement;\n      const anchorRect = getAnchorRect?.(anchor);\n      if (anchorRect || !anchor) {\n        return getDOMRect(anchorRect);\n      }\n      return anchor.getBoundingClientRect();\n    }\n  };\n}\n\n// src/middleware.ts\nvar toVar = (value) => ({ variable: value, reference: `var(${value})` });\nvar cssVars = {\n  arrowSize: toVar(\"--arrow-size\"),\n  arrowSizeHalf: toVar(\"--arrow-size-half\"),\n  arrowBg: toVar(\"--arrow-background\"),\n  transformOrigin: toVar(\"--transform-origin\"),\n  arrowOffset: toVar(\"--arrow-offset\")\n};\nvar getSideAxis = (side) => side === \"top\" || side === \"bottom\" ? \"y\" : \"x\";\nfunction createTransformOriginMiddleware(opts, arrowEl) {\n  return {\n    name: \"transformOrigin\",\n    fn(state) {\n      const { elements, middlewareData, placement, rects, y } = state;\n      const side = placement.split(\"-\")[0];\n      const axis = getSideAxis(side);\n      const arrowX = middlewareData.arrow?.x || 0;\n      const arrowY = middlewareData.arrow?.y || 0;\n      const arrowWidth = arrowEl?.clientWidth || 0;\n      const arrowHeight = arrowEl?.clientHeight || 0;\n      const transformX = arrowX + arrowWidth / 2;\n      const transformY = arrowY + arrowHeight / 2;\n      const shiftY = Math.abs(middlewareData.shift?.y || 0);\n      const halfAnchorHeight = rects.reference.height / 2;\n      const arrowOffset = arrowHeight / 2;\n      const gutter = opts.offset?.mainAxis ?? opts.gutter;\n      const sideOffsetValue = typeof gutter === \"number\" ? gutter + arrowOffset : gutter ?? arrowOffset;\n      const isOverlappingAnchor = shiftY > sideOffsetValue;\n      const adjacentTransformOrigin = {\n        top: `${transformX}px calc(100% + ${sideOffsetValue}px)`,\n        bottom: `${transformX}px ${-sideOffsetValue}px`,\n        left: `calc(100% + ${sideOffsetValue}px) ${transformY}px`,\n        right: `${-sideOffsetValue}px ${transformY}px`\n      }[side];\n      const overlapTransformOrigin = `${transformX}px ${rects.reference.y + halfAnchorHeight - y}px`;\n      const useOverlap = Boolean(opts.overlap) && axis === \"y\" && isOverlappingAnchor;\n      elements.floating.style.setProperty(\n        cssVars.transformOrigin.variable,\n        useOverlap ? overlapTransformOrigin : adjacentTransformOrigin\n      );\n      return {\n        data: {\n          transformOrigin: useOverlap ? overlapTransformOrigin : adjacentTransformOrigin\n        }\n      };\n    }\n  };\n}\nvar rectMiddleware = {\n  name: \"rects\",\n  fn({ rects }) {\n    return {\n      data: rects\n    };\n  }\n};\nvar shiftArrowMiddleware = (arrowEl) => {\n  if (!arrowEl) return;\n  return {\n    name: \"shiftArrow\",\n    fn({ placement, middlewareData }) {\n      if (!middlewareData.arrow) return {};\n      const { x, y } = middlewareData.arrow;\n      const dir = placement.split(\"-\")[0];\n      Object.assign(arrowEl.style, {\n        left: x != null ? `${x}px` : \"\",\n        top: y != null ? `${y}px` : \"\",\n        [dir]: `calc(100% + ${cssVars.arrowOffset.reference})`\n      });\n      return {};\n    }\n  };\n};\n\n// src/placement.ts\nfunction isValidPlacement(v) {\n  return /^(?:top|bottom|left|right)(?:-(?:start|end))?$/.test(v);\n}\nfunction getPlacementDetails(placement) {\n  const [side, align] = placement.split(\"-\");\n  return { side, align, hasAlign: align != null };\n}\nfunction getPlacementSide(placement) {\n  return placement.split(\"-\")[0];\n}\n\n// src/get-placement.ts\nvar defaultOptions = {\n  strategy: \"absolute\",\n  placement: \"bottom\",\n  listeners: true,\n  gutter: 8,\n  flip: true,\n  slide: true,\n  overlap: false,\n  sameWidth: false,\n  fitViewport: false,\n  overflowPadding: 8,\n  arrowPadding: 4\n};\nfunction roundByDpr(win, value) {\n  const dpr = win.devicePixelRatio || 1;\n  return Math.round(value * dpr) / dpr;\n}\nfunction resolveBoundaryOption(boundary) {\n  if (typeof boundary === \"function\") return boundary();\n  if (boundary === \"clipping-ancestors\") return \"clippingAncestors\";\n  return boundary;\n}\nfunction getArrowMiddleware(arrowElement, doc, opts) {\n  const element = arrowElement || doc.createElement(\"div\");\n  return arrow({ element, padding: opts.arrowPadding });\n}\nfunction getOffsetMiddleware(arrowElement, opts) {\n  if (isNull(opts.offset ?? opts.gutter)) return;\n  return offset(({ placement }) => {\n    const arrowOffset = (arrowElement?.clientHeight || 0) / 2;\n    const gutter = opts.offset?.mainAxis ?? opts.gutter;\n    const mainAxis = typeof gutter === \"number\" ? gutter + arrowOffset : gutter ?? arrowOffset;\n    const { hasAlign } = getPlacementDetails(placement);\n    const shift2 = !hasAlign ? opts.shift : void 0;\n    const crossAxis = opts.offset?.crossAxis ?? shift2;\n    return compact({\n      crossAxis,\n      mainAxis,\n      alignmentAxis: opts.shift\n    });\n  });\n}\nfunction getFlipMiddleware(opts) {\n  if (!opts.flip) return;\n  const boundary = resolveBoundaryOption(opts.boundary);\n  return flip({\n    ...boundary ? { boundary } : void 0,\n    padding: opts.overflowPadding,\n    fallbackPlacements: opts.flip === true ? void 0 : opts.flip\n  });\n}\nfunction getShiftMiddleware(opts) {\n  if (!opts.slide && !opts.overlap) return;\n  const boundary = resolveBoundaryOption(opts.boundary);\n  return shift({\n    ...boundary ? { boundary } : void 0,\n    mainAxis: opts.slide,\n    crossAxis: opts.overlap,\n    padding: opts.overflowPadding,\n    limiter: limitShift()\n  });\n}\nfunction getSizeMiddleware(opts) {\n  return size({\n    padding: opts.overflowPadding,\n    apply({ elements, rects, availableHeight, availableWidth }) {\n      const floating = elements.floating;\n      const referenceWidth = Math.round(rects.reference.width);\n      const referenceHeight = Math.round(rects.reference.height);\n      availableWidth = Math.floor(availableWidth);\n      availableHeight = Math.floor(availableHeight);\n      floating.style.setProperty(\"--reference-width\", `${referenceWidth}px`);\n      floating.style.setProperty(\"--reference-height\", `${referenceHeight}px`);\n      floating.style.setProperty(\"--available-width\", `${availableWidth}px`);\n      floating.style.setProperty(\"--available-height\", `${availableHeight}px`);\n    }\n  });\n}\nfunction hideWhenDetachedMiddleware(opts) {\n  if (!opts.hideWhenDetached) return;\n  return hide({ strategy: \"referenceHidden\", boundary: resolveBoundaryOption(opts.boundary) ?? \"clippingAncestors\" });\n}\nfunction getAutoUpdateOptions(opts) {\n  if (!opts) return {};\n  if (opts === true) {\n    return { ancestorResize: true, ancestorScroll: true, elementResize: true, layoutShift: true };\n  }\n  return opts;\n}\nfunction getPlacementImpl(referenceOrVirtual, floating, opts = {}) {\n  const anchor = opts.getAnchorElement?.() ?? referenceOrVirtual;\n  const reference = getAnchorElement(anchor, opts.getAnchorRect);\n  if (!floating || !reference) return;\n  const options = Object.assign({}, defaultOptions, opts);\n  const arrowEl = floating.querySelector(\"[data-part=arrow]\");\n  const middleware = [\n    getOffsetMiddleware(arrowEl, options),\n    getFlipMiddleware(options),\n    getShiftMiddleware(options),\n    getArrowMiddleware(arrowEl, floating.ownerDocument, options),\n    shiftArrowMiddleware(arrowEl),\n    createTransformOriginMiddleware(\n      { gutter: options.gutter, offset: options.offset, overlap: options.overlap },\n      arrowEl\n    ),\n    getSizeMiddleware(options),\n    hideWhenDetachedMiddleware(options),\n    rectMiddleware\n  ];\n  const { placement, strategy, onComplete, onPositioned } = options;\n  const updatePosition = async () => {\n    if (!reference || !floating) return;\n    const pos = await computePosition(reference, floating, {\n      placement,\n      middleware,\n      strategy\n    });\n    onComplete?.(pos);\n    onPositioned?.({ placed: true });\n    const win = getWindow(floating);\n    const x = roundByDpr(win, pos.x);\n    const y = roundByDpr(win, pos.y);\n    floating.style.setProperty(\"--x\", `${x}px`);\n    floating.style.setProperty(\"--y\", `${y}px`);\n    if (options.hideWhenDetached) {\n      const isHidden = pos.middlewareData.hide?.referenceHidden;\n      if (isHidden) {\n        floating.style.setProperty(\"visibility\", \"hidden\");\n        floating.style.setProperty(\"pointer-events\", \"none\");\n      } else {\n        floating.style.removeProperty(\"visibility\");\n        floating.style.removeProperty(\"pointer-events\");\n      }\n    }\n    const contentEl = floating.firstElementChild;\n    if (contentEl) {\n      const styles = getComputedStyle(contentEl);\n      floating.style.setProperty(\"--z-index\", styles.zIndex);\n    }\n  };\n  const update = async () => {\n    if (opts.updatePosition) {\n      await opts.updatePosition({ updatePosition, floatingElement: floating });\n      onPositioned?.({ placed: true });\n    } else {\n      await updatePosition();\n    }\n  };\n  const autoUpdateOptions = getAutoUpdateOptions(options.listeners);\n  const cancelAutoUpdate = options.listeners ? autoUpdate(reference, floating, update, autoUpdateOptions) : noop;\n  update();\n  return () => {\n    cancelAutoUpdate?.();\n    onPositioned?.({ placed: false });\n  };\n}\nfunction getPlacement(referenceOrFn, floatingOrFn, opts = {}) {\n  const { defer, ...options } = opts;\n  const func = defer ? raf : (v) => v();\n  const cleanups = [];\n  cleanups.push(\n    func(() => {\n      const reference = typeof referenceOrFn === \"function\" ? referenceOrFn() : referenceOrFn;\n      const floating = typeof floatingOrFn === \"function\" ? floatingOrFn() : floatingOrFn;\n      cleanups.push(getPlacementImpl(reference, floating, options));\n    })\n  );\n  return () => {\n    cleanups.forEach((fn) => fn?.());\n  };\n}\n\n// src/get-styles.ts\nvar ARROW_FLOATING_STYLE = {\n  bottom: \"rotate(45deg)\",\n  left: \"rotate(135deg)\",\n  top: \"rotate(225deg)\",\n  right: \"rotate(315deg)\"\n};\nfunction getPlacementStyles(options = {}) {\n  const { placement, sameWidth, fitViewport, strategy = \"absolute\" } = options;\n  return {\n    arrow: {\n      position: \"absolute\",\n      width: cssVars.arrowSize.reference,\n      height: cssVars.arrowSize.reference,\n      [cssVars.arrowSizeHalf.variable]: `calc(${cssVars.arrowSize.reference} / 2)`,\n      [cssVars.arrowOffset.variable]: `calc(${cssVars.arrowSizeHalf.reference} * -1)`\n    },\n    arrowTip: {\n      // @ts-expect-error - Fix this\n      transform: placement ? ARROW_FLOATING_STYLE[placement.split(\"-\")[0]] : void 0,\n      background: cssVars.arrowBg.reference,\n      top: \"0\",\n      left: \"0\",\n      width: \"100%\",\n      height: \"100%\",\n      position: \"absolute\",\n      zIndex: \"inherit\"\n    },\n    floating: {\n      position: strategy,\n      isolation: \"isolate\",\n      minWidth: sameWidth ? void 0 : \"max-content\",\n      width: sameWidth ? \"var(--reference-width)\" : void 0,\n      maxWidth: fitViewport ? \"var(--available-width)\" : void 0,\n      maxHeight: fitViewport ? \"var(--available-height)\" : void 0,\n      pointerEvents: !placement ? \"none\" : void 0,\n      top: \"0px\",\n      left: \"0px\",\n      // move off-screen if placement is not defined\n      transform: placement ? \"translate3d(var(--x), var(--y), 0)\" : \"translate3d(0, -100vh, 0)\",\n      zIndex: \"var(--z-index)\"\n    }\n  };\n}\n\nexport { getPlacement, getPlacementSide, getPlacementStyles, isValidPlacement };\n", "import { raf, getDocument, getWindow, isShadowRoot, addDomEvent, isTouchDevice, getEventTarget, isFocusable, isContextMenuEvent, isHTMLElement, contains, isControlledElement, getNearestOverflowAncestor } from '@zag-js/dom-query';\nimport { callAll } from '@zag-js/utils';\n\n// src/index.ts\n\n// src/frame-utils.ts\nfunction getWindowFrames(win) {\n  const frames = {\n    each(cb) {\n      for (let i = 0; i < win.frames?.length; i += 1) {\n        const frame = win.frames[i];\n        if (frame) cb(frame);\n      }\n    },\n    addEventListener(event, listener, options) {\n      frames.each((frame) => {\n        try {\n          frame.document.addEventListener(event, listener, options);\n        } catch {\n        }\n      });\n      return () => {\n        try {\n          frames.removeEventListener(event, listener, options);\n        } catch {\n        }\n      };\n    },\n    removeEventListener(event, listener, options) {\n      frames.each((frame) => {\n        try {\n          frame.document.removeEventListener(event, listener, options);\n        } catch {\n        }\n      });\n    }\n  };\n  return frames;\n}\nfunction getParentWindow(win) {\n  const parent = win.frameElement != null ? win.parent : null;\n  return {\n    addEventListener: (event, listener, options) => {\n      try {\n        parent?.addEventListener(event, listener, options);\n      } catch {\n      }\n      return () => {\n        try {\n          parent?.removeEventListener(event, listener, options);\n        } catch {\n        }\n      };\n    },\n    removeEventListener: (event, listener, options) => {\n      try {\n        parent?.removeEventListener(event, listener, options);\n      } catch {\n      }\n    }\n  };\n}\n\n// src/index.ts\nvar POINTER_OUTSIDE_EVENT = \"pointerdown.outside\";\nvar FOCUS_OUTSIDE_EVENT = \"focus.outside\";\nfunction isComposedPathFocusable(composedPath) {\n  for (const node of composedPath) {\n    if (isHTMLElement(node) && isFocusable(node)) return true;\n  }\n  return false;\n}\nvar isPointerEvent = (event) => \"clientY\" in event;\nfunction isEventPointWithin(node, event) {\n  if (!isPointerEvent(event) || !node) return false;\n  const rect = node.getBoundingClientRect();\n  if (rect.width === 0 || rect.height === 0) return false;\n  return rect.top <= event.clientY && event.clientY <= rect.top + rect.height && rect.left <= event.clientX && event.clientX <= rect.left + rect.width;\n}\nfunction isPointInRect(rect, point) {\n  return rect.y <= point.y && point.y <= rect.y + rect.height && rect.x <= point.x && point.x <= rect.x + rect.width;\n}\nfunction isEventWithinScrollbar(event, ancestor) {\n  if (!ancestor || !isPointerEvent(event)) return false;\n  const isScrollableY = ancestor.scrollHeight > ancestor.clientHeight;\n  const onScrollbarY = isScrollableY && event.clientX > ancestor.offsetLeft + ancestor.clientWidth;\n  const isScrollableX = ancestor.scrollWidth > ancestor.clientWidth;\n  const onScrollbarX = isScrollableX && event.clientY > ancestor.offsetTop + ancestor.clientHeight;\n  const rect = {\n    x: ancestor.offsetLeft,\n    y: ancestor.offsetTop,\n    width: ancestor.clientWidth + (isScrollableY ? 16 : 0),\n    height: ancestor.clientHeight + (isScrollableX ? 16 : 0)\n  };\n  const point = {\n    x: event.clientX,\n    y: event.clientY\n  };\n  if (!isPointInRect(rect, point)) return false;\n  return onScrollbarY || onScrollbarX;\n}\nfunction trackInteractOutsideImpl(node, options) {\n  const {\n    exclude,\n    onFocusOutside,\n    onPointerDownOutside,\n    onInteractOutside,\n    defer,\n    followControlledElements = true\n  } = options;\n  if (!node) return;\n  const doc = getDocument(node);\n  const win = getWindow(node);\n  const frames = getWindowFrames(win);\n  const parentWin = getParentWindow(win);\n  function isEventOutside(event, target) {\n    if (!isHTMLElement(target)) return false;\n    if (!target.isConnected) return false;\n    if (contains(node, target)) return false;\n    if (isEventPointWithin(node, event)) return false;\n    if (followControlledElements && isControlledElement(node, target)) return false;\n    const triggerEl = doc.querySelector(`[aria-controls=\"${node.id}\"]`);\n    if (triggerEl) {\n      const triggerAncestor = getNearestOverflowAncestor(triggerEl);\n      if (isEventWithinScrollbar(event, triggerAncestor)) return false;\n    }\n    const nodeAncestor = getNearestOverflowAncestor(node);\n    if (isEventWithinScrollbar(event, nodeAncestor)) return false;\n    return !exclude?.(target);\n  }\n  const pointerdownCleanups = /* @__PURE__ */ new Set();\n  const isInShadowRoot = isShadowRoot(node?.getRootNode());\n  function onPointerDown(event) {\n    function handler(clickEvent) {\n      const func = defer && !isTouchDevice() ? raf : (v) => v();\n      const evt = clickEvent ?? event;\n      const composedPath = evt?.composedPath?.() ?? [evt?.target];\n      func(() => {\n        const target = isInShadowRoot ? composedPath[0] : getEventTarget(event);\n        if (!node || !isEventOutside(event, target)) return;\n        if (onPointerDownOutside || onInteractOutside) {\n          const handler2 = callAll(onPointerDownOutside, onInteractOutside);\n          node.addEventListener(POINTER_OUTSIDE_EVENT, handler2, { once: true });\n        }\n        fireCustomEvent(node, POINTER_OUTSIDE_EVENT, {\n          bubbles: false,\n          cancelable: true,\n          detail: {\n            originalEvent: evt,\n            contextmenu: isContextMenuEvent(evt),\n            focusable: isComposedPathFocusable(composedPath),\n            target\n          }\n        });\n      });\n    }\n    if (event.pointerType === \"touch\") {\n      pointerdownCleanups.forEach((fn) => fn());\n      pointerdownCleanups.add(addDomEvent(doc, \"click\", handler, { once: true }));\n      pointerdownCleanups.add(parentWin.addEventListener(\"click\", handler, { once: true }));\n      pointerdownCleanups.add(frames.addEventListener(\"click\", handler, { once: true }));\n    } else {\n      handler();\n    }\n  }\n  const cleanups = /* @__PURE__ */ new Set();\n  const timer = setTimeout(() => {\n    cleanups.add(addDomEvent(doc, \"pointerdown\", onPointerDown, true));\n    cleanups.add(parentWin.addEventListener(\"pointerdown\", onPointerDown, true));\n    cleanups.add(frames.addEventListener(\"pointerdown\", onPointerDown, true));\n  }, 0);\n  function onFocusin(event) {\n    const func = defer ? raf : (v) => v();\n    func(() => {\n      const composedPath = event?.composedPath?.() ?? [event?.target];\n      const target = isInShadowRoot ? composedPath[0] : getEventTarget(event);\n      if (!node || !isEventOutside(event, target)) return;\n      if (onFocusOutside || onInteractOutside) {\n        const handler = callAll(onFocusOutside, onInteractOutside);\n        node.addEventListener(FOCUS_OUTSIDE_EVENT, handler, { once: true });\n      }\n      fireCustomEvent(node, FOCUS_OUTSIDE_EVENT, {\n        bubbles: false,\n        cancelable: true,\n        detail: {\n          originalEvent: event,\n          contextmenu: false,\n          focusable: isFocusable(target),\n          target\n        }\n      });\n    });\n  }\n  if (!isTouchDevice()) {\n    cleanups.add(addDomEvent(doc, \"focusin\", onFocusin, true));\n    cleanups.add(parentWin.addEventListener(\"focusin\", onFocusin, true));\n    cleanups.add(frames.addEventListener(\"focusin\", onFocusin, true));\n  }\n  return () => {\n    clearTimeout(timer);\n    pointerdownCleanups.forEach((fn) => fn());\n    cleanups.forEach((fn) => fn());\n  };\n}\nfunction trackInteractOutside(nodeOrFn, options) {\n  const { defer } = options;\n  const func = defer ? raf : (v) => v();\n  const cleanups = [];\n  cleanups.push(\n    func(() => {\n      const node = typeof nodeOrFn === \"function\" ? nodeOrFn() : nodeOrFn;\n      cleanups.push(trackInteractOutsideImpl(node, options));\n    })\n  );\n  return () => {\n    cleanups.forEach((fn) => fn?.());\n  };\n}\nfunction fireCustomEvent(el, type, init) {\n  const win = el.ownerDocument.defaultView || window;\n  const event = new win.CustomEvent(type, init);\n  return el.dispatchEvent(event);\n}\n\nexport { trackInteractOutside };\n", "import { raf, contains, getDocument, waitForElement, isHTMLElement, setStyle, addDomEvent, getEventTarget } from '@zag-js/dom-query';\nimport { trackInteractOutside } from '@zag-js/interact-outside';\nimport { isFunction, warn } from '@zag-js/utils';\n\n// src/dismissable-layer.ts\nfunction trackEscapeKeydown(node, fn) {\n  const handleKeyDown = (event) => {\n    if (event.key !== \"Escape\") return;\n    if (event.isComposing) return;\n    fn?.(event);\n  };\n  return addDomEvent(getDocument(node), \"keydown\", handleKeyDown, { capture: true });\n}\nvar LAYER_REQUEST_DISMISS_EVENT = \"layer:request-dismiss\";\nvar layerStack = {\n  layers: [],\n  branches: [],\n  count() {\n    return this.layers.length;\n  },\n  pointerBlockingLayers() {\n    return this.layers.filter((layer) => layer.pointerBlocking);\n  },\n  topMostPointerBlockingLayer() {\n    return [...this.pointerBlockingLayers()].slice(-1)[0];\n  },\n  hasPointerBlockingLayer() {\n    return this.pointerBlockingLayers().length > 0;\n  },\n  isBelowPointerBlockingLayer(node) {\n    const index = this.indexOf(node);\n    const highestBlockingIndex = this.topMostPointerBlockingLayer() ? this.indexOf(this.topMostPointerBlockingLayer()?.node) : -1;\n    return index < highestBlockingIndex;\n  },\n  isTopMost(node) {\n    const layer = this.layers[this.count() - 1];\n    return layer?.node === node;\n  },\n  getNestedLayers(node) {\n    return Array.from(this.layers).slice(this.indexOf(node) + 1);\n  },\n  getLayersByType(type) {\n    return this.layers.filter((layer) => layer.type === type);\n  },\n  getNestedLayersByType(node, type) {\n    const index = this.indexOf(node);\n    if (index === -1) return [];\n    return this.layers.slice(index + 1).filter((layer) => layer.type === type);\n  },\n  getParentLayerOfType(node, type) {\n    const index = this.indexOf(node);\n    if (index <= 0) return void 0;\n    return this.layers.slice(0, index).reverse().find((layer) => layer.type === type);\n  },\n  countNestedLayersOfType(node, type) {\n    return this.getNestedLayersByType(node, type).length;\n  },\n  isInNestedLayer(node, target) {\n    return this.getNestedLayers(node).some((layer) => contains(layer.node, target));\n  },\n  isInBranch(target) {\n    return Array.from(this.branches).some((branch) => contains(branch, target));\n  },\n  add(layer) {\n    this.layers.push(layer);\n    this.syncLayers();\n  },\n  addBranch(node) {\n    this.branches.push(node);\n  },\n  remove(node) {\n    const index = this.indexOf(node);\n    if (index < 0) return;\n    if (index < this.count() - 1) {\n      const _layers = this.getNestedLayers(node);\n      _layers.forEach((layer) => layerStack.dismiss(layer.node, node));\n    }\n    this.layers.splice(index, 1);\n    this.syncLayers();\n  },\n  removeBranch(node) {\n    const index = this.branches.indexOf(node);\n    if (index >= 0) this.branches.splice(index, 1);\n  },\n  syncLayers() {\n    this.layers.forEach((layer, index) => {\n      layer.node.style.setProperty(\"--layer-index\", `${index}`);\n      layer.node.removeAttribute(\"data-nested\");\n      layer.node.removeAttribute(\"data-has-nested\");\n      const parentOfSameType = this.getParentLayerOfType(layer.node, layer.type);\n      if (parentOfSameType) {\n        layer.node.setAttribute(\"data-nested\", layer.type);\n      }\n      const nestedCount = this.countNestedLayersOfType(layer.node, layer.type);\n      if (nestedCount > 0) {\n        layer.node.setAttribute(\"data-has-nested\", layer.type);\n      }\n      layer.node.style.setProperty(\"--nested-layer-count\", `${nestedCount}`);\n    });\n  },\n  indexOf(node) {\n    return this.layers.findIndex((layer) => layer.node === node);\n  },\n  dismiss(node, parent) {\n    const index = this.indexOf(node);\n    if (index === -1) return;\n    const layer = this.layers[index];\n    addListenerOnce(node, LAYER_REQUEST_DISMISS_EVENT, (event) => {\n      layer.requestDismiss?.(event);\n      if (!event.defaultPrevented) {\n        layer?.dismiss();\n      }\n    });\n    fireCustomEvent(node, LAYER_REQUEST_DISMISS_EVENT, {\n      originalLayer: node,\n      targetLayer: parent,\n      originalIndex: index,\n      targetIndex: parent ? this.indexOf(parent) : -1\n    });\n    this.syncLayers();\n  },\n  clear() {\n    this.remove(this.layers[0].node);\n  }\n};\nfunction fireCustomEvent(el, type, detail) {\n  const win = el.ownerDocument.defaultView || window;\n  const event = new win.CustomEvent(type, { cancelable: true, bubbles: true, detail });\n  return el.dispatchEvent(event);\n}\nfunction addListenerOnce(el, type, callback) {\n  el.addEventListener(type, callback, { once: true });\n}\nvar originalBodyPointerEvents;\nfunction assignPointerEventToLayers() {\n  layerStack.layers.forEach(({ node }) => {\n    node.style.pointerEvents = layerStack.isBelowPointerBlockingLayer(node) ? \"none\" : \"auto\";\n  });\n}\nfunction clearPointerEvent(node) {\n  node.style.pointerEvents = \"\";\n}\nfunction disablePointerEventsOutside(node, persistentElements) {\n  const doc = getDocument(node);\n  const cleanups = [];\n  if (layerStack.hasPointerBlockingLayer() && !doc.body.hasAttribute(\"data-inert\")) {\n    originalBodyPointerEvents = document.body.style.pointerEvents;\n    queueMicrotask(() => {\n      doc.body.style.pointerEvents = \"none\";\n      doc.body.setAttribute(\"data-inert\", \"\");\n    });\n  }\n  persistentElements?.forEach((el) => {\n    const [promise, abort] = waitForElement(\n      () => {\n        const node2 = el();\n        return isHTMLElement(node2) ? node2 : null;\n      },\n      { timeout: 1e3 }\n    );\n    promise.then((el2) => cleanups.push(setStyle(el2, { pointerEvents: \"auto\" })));\n    cleanups.push(abort);\n  });\n  return () => {\n    if (layerStack.hasPointerBlockingLayer()) return;\n    queueMicrotask(() => {\n      doc.body.style.pointerEvents = originalBodyPointerEvents;\n      doc.body.removeAttribute(\"data-inert\");\n      if (doc.body.style.length === 0) doc.body.removeAttribute(\"style\");\n    });\n    cleanups.forEach((fn) => fn());\n  };\n}\n\n// src/dismissable-layer.ts\nfunction trackDismissableElementImpl(node, options) {\n  const { warnOnMissingNode = true } = options;\n  if (warnOnMissingNode && !node) {\n    warn(\"[@zag-js/dismissable] node is `null` or `undefined`\");\n    return;\n  }\n  if (!node) {\n    return;\n  }\n  const { onDismiss, onRequestDismiss, pointerBlocking, exclude: excludeContainers, debug, type = \"dialog\" } = options;\n  const layer = { dismiss: onDismiss, node, type, pointerBlocking, requestDismiss: onRequestDismiss };\n  layerStack.add(layer);\n  assignPointerEventToLayers();\n  function onPointerDownOutside(event) {\n    const target = getEventTarget(event.detail.originalEvent);\n    if (layerStack.isBelowPointerBlockingLayer(node) || layerStack.isInBranch(target)) return;\n    options.onPointerDownOutside?.(event);\n    options.onInteractOutside?.(event);\n    if (event.defaultPrevented) return;\n    if (debug) {\n      console.log(\"onPointerDownOutside:\", event.detail.originalEvent);\n    }\n    onDismiss?.();\n  }\n  function onFocusOutside(event) {\n    const target = getEventTarget(event.detail.originalEvent);\n    if (layerStack.isInBranch(target)) return;\n    options.onFocusOutside?.(event);\n    options.onInteractOutside?.(event);\n    if (event.defaultPrevented) return;\n    if (debug) {\n      console.log(\"onFocusOutside:\", event.detail.originalEvent);\n    }\n    onDismiss?.();\n  }\n  function onEscapeKeyDown(event) {\n    if (!layerStack.isTopMost(node)) return;\n    options.onEscapeKeyDown?.(event);\n    if (!event.defaultPrevented && onDismiss) {\n      event.preventDefault();\n      onDismiss();\n    }\n  }\n  function exclude(target) {\n    if (!node) return false;\n    const containers = typeof excludeContainers === \"function\" ? excludeContainers() : excludeContainers;\n    const _containers = Array.isArray(containers) ? containers : [containers];\n    const persistentElements = options.persistentElements?.map((fn) => fn()).filter(isHTMLElement);\n    if (persistentElements) _containers.push(...persistentElements);\n    return _containers.some((node2) => contains(node2, target)) || layerStack.isInNestedLayer(node, target);\n  }\n  const cleanups = [\n    pointerBlocking ? disablePointerEventsOutside(node, options.persistentElements) : void 0,\n    trackEscapeKeydown(node, onEscapeKeyDown),\n    trackInteractOutside(node, { exclude, onFocusOutside, onPointerDownOutside, defer: options.defer })\n  ];\n  return () => {\n    layerStack.remove(node);\n    assignPointerEventToLayers();\n    clearPointerEvent(node);\n    cleanups.forEach((fn) => fn?.());\n  };\n}\nfunction trackDismissableElement(nodeOrFn, options) {\n  const { defer } = options;\n  const func = defer ? raf : (v) => v();\n  const cleanups = [];\n  cleanups.push(\n    func(() => {\n      const node = isFunction(nodeOrFn) ? nodeOrFn() : nodeOrFn;\n      cleanups.push(trackDismissableElementImpl(node, options));\n    })\n  );\n  return () => {\n    cleanups.forEach((fn) => fn?.());\n  };\n}\nfunction trackDismissableBranch(nodeOrFn, options = {}) {\n  const { defer } = options;\n  const func = defer ? raf : (v) => v();\n  const cleanups = [];\n  cleanups.push(\n    func(() => {\n      const node = isFunction(nodeOrFn) ? nodeOrFn() : nodeOrFn;\n      if (!node) {\n        warn(\"[@zag-js/dismissable] branch node is `null` or `undefined`\");\n        return;\n      }\n      layerStack.addBranch(node);\n      cleanups.push(() => {\n        layerStack.removeBranch(node);\n      });\n    })\n  );\n  return () => {\n    cleanups.forEach((fn) => fn?.());\n  };\n}\n\nexport { trackDismissableBranch, trackDismissableElement };\n", "import { createAnatomy } from '@zag-js/anatomy';\nimport { parseColor, getColorAreaGradient, normalizeColor } from '@zag-js/color-utils';\nimport { raf, getInitialFocus, dispatchInputValueEvent, disableTextSelection, trackPointerMove, trackFormControl, setElementValue, getRelativePoint, queryAll, dataAttr, visuallyHiddenStyle, getEventStep, getEventKey, isLeftClick, isModifierKey, getEventPoint, query } from '@zag-js/dom-query';\nimport { getPlacement, getPlacementStyles } from '@zag-js/popper';\nimport { createGuards, createMachine } from '@zag-js/core';\nimport { trackDismissableElement } from '@zag-js/dismissable';\nimport { tryCatch, createSplitProps } from '@zag-js/utils';\nimport { createProps } from '@zag-js/types';\n\n// src/color-picker.anatomy.ts\nvar anatomy = createAnatomy(\"color-picker\", [\n  \"root\",\n  \"label\",\n  \"control\",\n  \"trigger\",\n  \"positioner\",\n  \"content\",\n  \"area\",\n  \"areaThumb\",\n  \"valueText\",\n  \"areaBackground\",\n  \"channelSlider\",\n  \"channelSliderLabel\",\n  \"channelSliderTrack\",\n  \"channelSliderThumb\",\n  \"channelSliderValueText\",\n  \"channelInput\",\n  \"transparencyGrid\",\n  \"swatchGroup\",\n  \"swatchTrigger\",\n  \"swatchIndicator\",\n  \"swatch\",\n  \"eyeDropperTrigger\",\n  \"formatTrigger\",\n  \"formatSelect\"\n]);\nvar parts = anatomy.build();\nvar getRootId = (ctx) => ctx.ids?.root ?? `color-picker:${ctx.id}`;\nvar getLabelId = (ctx) => ctx.ids?.label ?? `color-picker:${ctx.id}:label`;\nvar getHiddenInputId = (ctx) => ctx.ids?.hiddenInput ?? `color-picker:${ctx.id}:hidden-input`;\nvar getControlId = (ctx) => ctx.ids?.control ?? `color-picker:${ctx.id}:control`;\nvar getTriggerId = (ctx) => ctx.ids?.trigger ?? `color-picker:${ctx.id}:trigger`;\nvar getContentId = (ctx) => ctx.ids?.content ?? `color-picker:${ctx.id}:content`;\nvar getPositionerId = (ctx) => ctx.ids?.positioner ?? `color-picker:${ctx.id}:positioner`;\nvar getFormatSelectId = (ctx) => ctx.ids?.formatSelect ?? `color-picker:${ctx.id}:format-select`;\nvar getAreaId = (ctx) => ctx.ids?.area ?? `color-picker:${ctx.id}:area`;\nvar getAreaGradientId = (ctx) => ctx.ids?.areaGradient ?? `color-picker:${ctx.id}:area-gradient`;\nvar getAreaThumbId = (ctx) => ctx.ids?.areaThumb ?? `color-picker:${ctx.id}:area-thumb`;\nvar getChannelSliderTrackId = (ctx, channel) => ctx.ids?.channelSliderTrack?.(channel) ?? `color-picker:${ctx.id}:slider-track:${channel}`;\nvar getChannelSliderThumbId = (ctx, channel) => ctx.ids?.channelSliderThumb?.(channel) ?? `color-picker:${ctx.id}:slider-thumb:${channel}`;\nvar getContentEl = (ctx) => ctx.getById(getContentId(ctx));\nvar getAreaThumbEl = (ctx) => ctx.getById(getAreaThumbId(ctx));\nvar getChannelSliderThumbEl = (ctx, channel) => ctx.getById(getChannelSliderThumbId(ctx, channel));\nvar getFormatSelectEl = (ctx) => ctx.getById(getFormatSelectId(ctx));\nvar getHiddenInputEl = (ctx) => ctx.getById(getHiddenInputId(ctx));\nvar getAreaEl = (ctx) => ctx.getById(getAreaId(ctx));\nvar getAreaValueFromPoint = (ctx, point, dir) => {\n  const areaEl = getAreaEl(ctx);\n  if (!areaEl) return;\n  const { getPercentValue } = getRelativePoint(point, areaEl);\n  return {\n    x: getPercentValue({ dir, orientation: \"horizontal\" }),\n    y: getPercentValue({ orientation: \"vertical\" })\n  };\n};\nvar getControlEl = (ctx) => ctx.getById(getControlId(ctx));\nvar getTriggerEl = (ctx) => ctx.getById(getTriggerId(ctx));\nvar getPositionerEl = (ctx) => ctx.getById(getPositionerId(ctx));\nvar getChannelSliderTrackEl = (ctx, channel) => ctx.getById(getChannelSliderTrackId(ctx, channel));\nvar getChannelSliderValueFromPoint = (ctx, point, channel, dir) => {\n  const trackEl = getChannelSliderTrackEl(ctx, channel);\n  if (!trackEl) return;\n  const { getPercentValue } = getRelativePoint(point, trackEl);\n  return {\n    x: getPercentValue({ dir, orientation: \"horizontal\" }),\n    y: getPercentValue({ orientation: \"vertical\" })\n  };\n};\nvar getChannelInputEls = (ctx) => {\n  return [\n    ...queryAll(getContentEl(ctx), \"input[data-channel]\"),\n    ...queryAll(getControlEl(ctx), \"input[data-channel]\")\n  ];\n};\nfunction getChannelDisplayColor(color, channel) {\n  switch (channel) {\n    case \"hue\":\n      return parseColor(`hsl(${color.getChannelValue(\"hue\")}, 100%, 50%)`);\n    case \"lightness\":\n    case \"brightness\":\n    case \"saturation\":\n    case \"red\":\n    case \"green\":\n    case \"blue\":\n      return color.withChannelValue(\"alpha\", 1);\n    case \"alpha\": {\n      return color;\n    }\n    default:\n      throw new Error(\"Unknown color channel: \" + channel);\n  }\n}\nfunction getChannelValue(color, channel) {\n  if (channel == null) return \"\";\n  if (channel === \"hex\") {\n    return color.toString(\"hex\");\n  }\n  if (channel === \"css\") {\n    return color.toString(\"css\");\n  }\n  if (channel in color) {\n    return color.getChannelValue(channel).toString();\n  }\n  const isHSL = color.getFormat() === \"hsla\";\n  switch (channel) {\n    case \"hue\":\n      return isHSL ? color.toFormat(\"hsla\").getChannelValue(\"hue\").toString() : color.toFormat(\"hsba\").getChannelValue(\"hue\").toString();\n    case \"saturation\":\n      return isHSL ? color.toFormat(\"hsla\").getChannelValue(\"saturation\").toString() : color.toFormat(\"hsba\").getChannelValue(\"saturation\").toString();\n    case \"lightness\":\n      return color.toFormat(\"hsla\").getChannelValue(\"lightness\").toString();\n    case \"brightness\":\n      return color.toFormat(\"hsba\").getChannelValue(\"brightness\").toString();\n    case \"red\":\n    case \"green\":\n    case \"blue\":\n      return color.toFormat(\"rgba\").getChannelValue(channel).toString();\n    default:\n      return color.getChannelValue(channel).toString();\n  }\n}\nfunction getChannelRange(color, channel) {\n  switch (channel) {\n    case \"hex\":\n      const minColor = parseColor(\"#000000\");\n      const maxColor = parseColor(\"#FFFFFF\");\n      return {\n        minValue: minColor.toHexInt(),\n        maxValue: maxColor.toHexInt(),\n        pageSize: 10,\n        step: 1\n      };\n    case \"css\":\n      return void 0;\n    case \"hue\":\n    case \"saturation\":\n    case \"lightness\":\n      return color.toFormat(\"hsla\").getChannelRange(channel);\n    case \"brightness\":\n      return color.toFormat(\"hsba\").getChannelRange(channel);\n    case \"red\":\n    case \"green\":\n    case \"blue\":\n      return color.toFormat(\"rgba\").getChannelRange(channel);\n    default:\n      return color.getChannelRange(channel);\n  }\n}\n\n// src/utils/get-slider-background.ts\nfunction getSliderBackgroundDirection(orientation, dir) {\n  if (orientation === \"vertical\") {\n    return \"top\";\n  } else if (dir === \"ltr\") {\n    return \"right\";\n  } else {\n    return \"left\";\n  }\n}\nvar getSliderBackground = (props2) => {\n  const { channel, value, dir, orientation } = props2;\n  const bgDirection = getSliderBackgroundDirection(orientation, dir);\n  const { minValue, maxValue } = value.getChannelRange(channel);\n  switch (channel) {\n    case \"hue\":\n      return `linear-gradient(to ${bgDirection}, rgb(255, 0, 0) 0%, rgb(255, 255, 0) 17%, rgb(0, 255, 0) 33%, rgb(0, 255, 255) 50%, rgb(0, 0, 255) 67%, rgb(255, 0, 255) 83%, rgb(255, 0, 0) 100%)`;\n    case \"lightness\": {\n      let start = value.withChannelValue(channel, minValue).toString(\"css\");\n      let middle = value.withChannelValue(channel, (maxValue - minValue) / 2).toString(\"css\");\n      let end = value.withChannelValue(channel, maxValue).toString(\"css\");\n      return `linear-gradient(to ${bgDirection}, ${start}, ${middle}, ${end})`;\n    }\n    case \"saturation\":\n    case \"brightness\":\n    case \"red\":\n    case \"green\":\n    case \"blue\":\n    case \"alpha\": {\n      let start = value.withChannelValue(channel, minValue).toString(\"css\");\n      let end = value.withChannelValue(channel, maxValue).toString(\"css\");\n      return `linear-gradient(to ${bgDirection}, ${start}, ${end})`;\n    }\n    default:\n      throw new Error(\"Unknown color channel: \" + channel);\n  }\n};\n\n// src/color-picker.connect.ts\nfunction connect(service, normalize) {\n  const { context, send, prop, computed, state, scope } = service;\n  const value = context.get(\"value\");\n  const format = context.get(\"format\");\n  const areaValue = computed(\"areaValue\");\n  const valueAsString = computed(\"valueAsString\");\n  const disabled = computed(\"disabled\");\n  const readOnly = !!prop(\"readOnly\");\n  const invalid = !!prop(\"invalid\");\n  const required = !!prop(\"required\");\n  const interactive = computed(\"interactive\");\n  const dragging = state.hasTag(\"dragging\");\n  const open = state.hasTag(\"open\");\n  const focused = state.hasTag(\"focused\");\n  const getAreaChannels = (props2) => {\n    const channels = areaValue.getChannels();\n    return {\n      xChannel: props2.xChannel ?? channels[1],\n      yChannel: props2.yChannel ?? channels[2]\n    };\n  };\n  const currentPlacement = context.get(\"currentPlacement\");\n  const popperStyles = getPlacementStyles({\n    ...prop(\"positioning\"),\n    placement: currentPlacement\n  });\n  function getSwatchTriggerState(props2) {\n    const color = normalizeColor(props2.value).toFormat(context.get(\"format\"));\n    return {\n      value: color,\n      valueAsString: color.toString(\"hex\"),\n      checked: color.isEqual(value),\n      disabled: props2.disabled || !interactive\n    };\n  }\n  return {\n    dragging,\n    open,\n    valueAsString,\n    value,\n    inline: !!prop(\"inline\"),\n    setOpen(nextOpen) {\n      if (prop(\"inline\")) return;\n      const open2 = state.hasTag(\"open\");\n      if (open2 === nextOpen) return;\n      send({ type: nextOpen ? \"OPEN\" : \"CLOSE\" });\n    },\n    setValue(value2) {\n      send({ type: \"VALUE.SET\", value: normalizeColor(value2), src: \"set-color\" });\n    },\n    getChannelValue(channel) {\n      return getChannelValue(value, channel);\n    },\n    getChannelValueText(channel, locale) {\n      return value.formatChannelValue(channel, locale);\n    },\n    setChannelValue(channel, channelValue) {\n      const color = value.withChannelValue(channel, channelValue);\n      send({ type: \"VALUE.SET\", value: color, src: \"set-channel\" });\n    },\n    format: context.get(\"format\"),\n    setFormat(format2) {\n      const formatValue = value.toFormat(format2);\n      send({ type: \"VALUE.SET\", value: formatValue, src: \"set-format\" });\n    },\n    alpha: value.getChannelValue(\"alpha\"),\n    setAlpha(alphaValue) {\n      const color = value.withChannelValue(\"alpha\", alphaValue);\n      send({ type: \"VALUE.SET\", value: color, src: \"set-alpha\" });\n    },\n    getRootProps() {\n      return normalize.element({\n        ...parts.root.attrs,\n        dir: prop(\"dir\"),\n        id: getRootId(scope),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-readonly\": dataAttr(readOnly),\n        \"data-invalid\": dataAttr(invalid),\n        style: {\n          \"--value\": value.toString(\"css\")\n        }\n      });\n    },\n    getLabelProps() {\n      return normalize.element({\n        ...parts.label.attrs,\n        dir: prop(\"dir\"),\n        id: getLabelId(scope),\n        htmlFor: getHiddenInputId(scope),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-readonly\": dataAttr(readOnly),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-required\": dataAttr(required),\n        \"data-focus\": dataAttr(focused),\n        onClick(event) {\n          event.preventDefault();\n          const inputEl = query(getControlEl(scope), \"[data-channel=hex]\");\n          inputEl?.focus({ preventScroll: true });\n        }\n      });\n    },\n    getControlProps() {\n      return normalize.element({\n        ...parts.control.attrs,\n        id: getControlId(scope),\n        dir: prop(\"dir\"),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-readonly\": dataAttr(readOnly),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-state\": open ? \"open\" : \"closed\",\n        \"data-focus\": dataAttr(focused)\n      });\n    },\n    getTriggerProps() {\n      return normalize.button({\n        ...parts.trigger.attrs,\n        id: getTriggerId(scope),\n        dir: prop(\"dir\"),\n        disabled,\n        \"aria-label\": `select color. current color is ${valueAsString}`,\n        \"aria-controls\": getContentId(scope),\n        \"aria-labelledby\": getLabelId(scope),\n        \"aria-haspopup\": prop(\"inline\") ? void 0 : \"dialog\",\n        \"data-disabled\": dataAttr(disabled),\n        \"data-readonly\": dataAttr(readOnly),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-placement\": currentPlacement,\n        \"aria-expanded\": open,\n        \"data-state\": open ? \"open\" : \"closed\",\n        \"data-focus\": dataAttr(focused),\n        type: \"button\",\n        onClick() {\n          if (!interactive) return;\n          send({ type: \"TRIGGER.CLICK\" });\n        },\n        onBlur() {\n          if (!interactive) return;\n          send({ type: \"TRIGGER.BLUR\" });\n        },\n        style: {\n          position: \"relative\"\n        }\n      });\n    },\n    getPositionerProps() {\n      return normalize.element({\n        ...parts.positioner.attrs,\n        id: getPositionerId(scope),\n        dir: prop(\"dir\"),\n        style: popperStyles.floating\n      });\n    },\n    getContentProps() {\n      return normalize.element({\n        ...parts.content.attrs,\n        id: getContentId(scope),\n        dir: prop(\"dir\"),\n        role: prop(\"inline\") ? void 0 : \"dialog\",\n        tabIndex: -1,\n        \"data-placement\": currentPlacement,\n        \"data-state\": open ? \"open\" : \"closed\",\n        hidden: !open\n      });\n    },\n    getValueTextProps() {\n      return normalize.element({\n        ...parts.valueText.attrs,\n        dir: prop(\"dir\"),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-focus\": dataAttr(focused)\n      });\n    },\n    getAreaProps(props2 = {}) {\n      const { xChannel, yChannel } = getAreaChannels(props2);\n      const { areaStyles } = getColorAreaGradient(areaValue, {\n        xChannel,\n        yChannel,\n        dir: prop(\"dir\")\n      });\n      return normalize.element({\n        ...parts.area.attrs,\n        id: getAreaId(scope),\n        role: \"group\",\n        \"data-invalid\": dataAttr(invalid),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-readonly\": dataAttr(readOnly),\n        onPointerDown(event) {\n          if (!interactive) return;\n          if (!isLeftClick(event)) return;\n          if (isModifierKey(event)) return;\n          const point = getEventPoint(event);\n          const channel = { xChannel, yChannel };\n          send({ type: \"AREA.POINTER_DOWN\", point, channel, id: \"area\" });\n          event.preventDefault();\n        },\n        style: {\n          position: \"relative\",\n          touchAction: \"none\",\n          forcedColorAdjust: \"none\",\n          ...areaStyles\n        }\n      });\n    },\n    getAreaBackgroundProps(props2 = {}) {\n      const { xChannel, yChannel } = getAreaChannels(props2);\n      const { areaGradientStyles } = getColorAreaGradient(areaValue, {\n        xChannel,\n        yChannel,\n        dir: prop(\"dir\")\n      });\n      return normalize.element({\n        ...parts.areaBackground.attrs,\n        id: getAreaGradientId(scope),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-readonly\": dataAttr(readOnly),\n        style: {\n          position: \"relative\",\n          touchAction: \"none\",\n          forcedColorAdjust: \"none\",\n          ...areaGradientStyles\n        }\n      });\n    },\n    getAreaThumbProps(props2 = {}) {\n      const { xChannel, yChannel } = getAreaChannels(props2);\n      const channel = { xChannel, yChannel };\n      const xPercent = areaValue.getChannelValuePercent(xChannel);\n      const yPercent = 1 - areaValue.getChannelValuePercent(yChannel);\n      const isRtl = prop(\"dir\") === \"rtl\";\n      const finalXPercent = isRtl ? 1 - xPercent : xPercent;\n      const xValue = areaValue.getChannelValue(xChannel);\n      const yValue = areaValue.getChannelValue(yChannel);\n      const color = areaValue.withChannelValue(\"alpha\", 1).toString(\"css\");\n      return normalize.element({\n        ...parts.areaThumb.attrs,\n        id: getAreaThumbId(scope),\n        dir: prop(\"dir\"),\n        tabIndex: disabled ? void 0 : 0,\n        \"data-disabled\": dataAttr(disabled),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-readonly\": dataAttr(readOnly),\n        role: \"slider\",\n        \"aria-valuemin\": 0,\n        \"aria-valuemax\": 100,\n        \"aria-valuenow\": xValue,\n        \"aria-label\": `${xChannel} and ${yChannel}`,\n        \"aria-roledescription\": \"2d slider\",\n        \"aria-valuetext\": `${xChannel} ${xValue}, ${yChannel} ${yValue}`,\n        style: {\n          position: \"absolute\",\n          left: `${finalXPercent * 100}%`,\n          top: `${yPercent * 100}%`,\n          transform: \"translate(-50%, -50%)\",\n          touchAction: \"none\",\n          forcedColorAdjust: \"none\",\n          \"--color\": color,\n          background: color\n        },\n        onFocus() {\n          if (!interactive) return;\n          send({ type: \"AREA.FOCUS\", id: \"area\", channel });\n        },\n        onKeyDown(event) {\n          if (event.defaultPrevented) return;\n          if (!interactive) return;\n          const step = getEventStep(event);\n          const keyMap = {\n            ArrowUp() {\n              send({ type: \"AREA.ARROW_UP\", channel, step });\n            },\n            ArrowDown() {\n              send({ type: \"AREA.ARROW_DOWN\", channel, step });\n            },\n            ArrowLeft() {\n              send({ type: \"AREA.ARROW_LEFT\", channel, step });\n            },\n            ArrowRight() {\n              send({ type: \"AREA.ARROW_RIGHT\", channel, step });\n            },\n            PageUp() {\n              send({ type: \"AREA.PAGE_UP\", channel, step });\n            },\n            PageDown() {\n              send({ type: \"AREA.PAGE_DOWN\", channel, step });\n            },\n            Escape(event2) {\n              event2.stopPropagation();\n            }\n          };\n          const exec = keyMap[getEventKey(event, {\n            dir: prop(\"dir\")\n          })];\n          if (exec) {\n            exec(event);\n            event.preventDefault();\n          }\n        }\n      });\n    },\n    getTransparencyGridProps(props2 = {}) {\n      const { size = \"12px\" } = props2;\n      return normalize.element({\n        ...parts.transparencyGrid.attrs,\n        style: {\n          \"--size\": size,\n          width: \"100%\",\n          height: \"100%\",\n          position: \"absolute\",\n          backgroundColor: \"#fff\",\n          backgroundImage: \"conic-gradient(#eeeeee 0 25%, transparent 0 50%, #eeeeee 0 75%, transparent 0)\",\n          backgroundSize: \"var(--size) var(--size)\",\n          inset: \"0px\",\n          zIndex: \"auto\",\n          pointerEvents: \"none\"\n        }\n      });\n    },\n    getChannelSliderProps(props2) {\n      const { orientation = \"horizontal\", channel, format: format2 } = props2;\n      return normalize.element({\n        ...parts.channelSlider.attrs,\n        \"data-channel\": channel,\n        \"data-orientation\": orientation,\n        role: \"presentation\",\n        onPointerDown(event) {\n          if (!interactive) return;\n          if (!isLeftClick(event)) return;\n          if (isModifierKey(event)) return;\n          const point = getEventPoint(event);\n          send({ type: \"CHANNEL_SLIDER.POINTER_DOWN\", channel, format: format2, point, id: channel, orientation });\n          event.preventDefault();\n        },\n        style: {\n          position: \"relative\",\n          touchAction: \"none\"\n        }\n      });\n    },\n    getChannelSliderTrackProps(props2) {\n      const { orientation = \"horizontal\", channel, format: format2 } = props2;\n      const normalizedValue = format2 ? value.toFormat(format2) : areaValue;\n      return normalize.element({\n        ...parts.channelSliderTrack.attrs,\n        id: getChannelSliderTrackId(scope, channel),\n        role: \"group\",\n        \"data-channel\": channel,\n        \"data-orientation\": orientation,\n        style: {\n          position: \"relative\",\n          forcedColorAdjust: \"none\",\n          backgroundImage: getSliderBackground({\n            orientation,\n            channel,\n            dir: prop(\"dir\"),\n            value: normalizedValue\n          })\n        }\n      });\n    },\n    getChannelSliderLabelProps(props2) {\n      const { channel } = props2;\n      return normalize.element({\n        ...parts.channelSliderLabel.attrs,\n        \"data-channel\": channel,\n        onClick(event) {\n          if (!interactive) return;\n          event.preventDefault();\n          const thumbId = getChannelSliderThumbId(scope, channel);\n          scope.getById(thumbId)?.focus({ preventScroll: true });\n        },\n        style: {\n          userSelect: \"none\",\n          WebkitUserSelect: \"none\"\n        }\n      });\n    },\n    getChannelSliderValueTextProps(props2) {\n      return normalize.element({\n        ...parts.channelSliderValueText.attrs,\n        \"data-channel\": props2.channel\n      });\n    },\n    getChannelSliderThumbProps(props2) {\n      const { orientation = \"horizontal\", channel, format: format2 } = props2;\n      const normalizedValue = format2 ? value.toFormat(format2) : areaValue;\n      const channelRange = normalizedValue.getChannelRange(channel);\n      const channelValue = normalizedValue.getChannelValue(channel);\n      const offset = (channelValue - channelRange.minValue) / (channelRange.maxValue - channelRange.minValue);\n      const isRtl = prop(\"dir\") === \"rtl\";\n      const finalOffset = orientation === \"horizontal\" && isRtl ? 1 - offset : offset;\n      const placementStyles = orientation === \"horizontal\" ? { left: `${finalOffset * 100}%`, top: \"50%\" } : { top: `${offset * 100}%`, left: \"50%\" };\n      return normalize.element({\n        ...parts.channelSliderThumb.attrs,\n        id: getChannelSliderThumbId(scope, channel),\n        role: \"slider\",\n        \"aria-label\": channel,\n        tabIndex: disabled ? void 0 : 0,\n        \"data-channel\": channel,\n        \"data-disabled\": dataAttr(disabled),\n        \"data-orientation\": orientation,\n        \"aria-disabled\": dataAttr(disabled),\n        \"aria-orientation\": orientation,\n        \"aria-valuemax\": channelRange.maxValue,\n        \"aria-valuemin\": channelRange.minValue,\n        \"aria-valuenow\": channelValue,\n        \"aria-valuetext\": `${channel} ${channelValue}`,\n        style: {\n          forcedColorAdjust: \"none\",\n          position: \"absolute\",\n          background: getChannelDisplayColor(areaValue, channel).toString(\"css\"),\n          ...placementStyles\n        },\n        onFocus() {\n          if (!interactive) return;\n          send({ type: \"CHANNEL_SLIDER.FOCUS\", channel });\n        },\n        onKeyDown(event) {\n          if (event.defaultPrevented) return;\n          if (!interactive) return;\n          const step = getEventStep(event) * channelRange.step;\n          const keyMap = {\n            ArrowUp() {\n              send({ type: \"CHANNEL_SLIDER.ARROW_UP\", channel, step });\n            },\n            ArrowDown() {\n              send({ type: \"CHANNEL_SLIDER.ARROW_DOWN\", channel, step });\n            },\n            ArrowLeft() {\n              send({ type: \"CHANNEL_SLIDER.ARROW_LEFT\", channel, step });\n            },\n            ArrowRight() {\n              send({ type: \"CHANNEL_SLIDER.ARROW_RIGHT\", channel, step });\n            },\n            PageUp() {\n              send({ type: \"CHANNEL_SLIDER.PAGE_UP\", channel });\n            },\n            PageDown() {\n              send({ type: \"CHANNEL_SLIDER.PAGE_DOWN\", channel });\n            },\n            Home() {\n              send({ type: \"CHANNEL_SLIDER.HOME\", channel });\n            },\n            End() {\n              send({ type: \"CHANNEL_SLIDER.END\", channel });\n            },\n            Escape(event2) {\n              event2.stopPropagation();\n            }\n          };\n          const exec = keyMap[getEventKey(event, {\n            dir: prop(\"dir\")\n          })];\n          if (exec) {\n            exec(event);\n            event.preventDefault();\n          }\n        }\n      });\n    },\n    getChannelInputProps(props2) {\n      const { channel } = props2;\n      const isTextField = channel === \"hex\" || channel === \"css\";\n      const channelRange = getChannelRange(value, channel);\n      return normalize.input({\n        ...parts.channelInput.attrs,\n        dir: prop(\"dir\"),\n        type: isTextField ? \"text\" : \"number\",\n        \"data-channel\": channel,\n        \"aria-label\": channel,\n        spellCheck: false,\n        autoComplete: \"off\",\n        disabled,\n        \"data-disabled\": dataAttr(disabled),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-readonly\": dataAttr(readOnly),\n        readOnly,\n        defaultValue: getChannelValue(value, channel),\n        min: channelRange?.minValue,\n        max: channelRange?.maxValue,\n        step: channelRange?.step,\n        onBeforeInput(event) {\n          if (isTextField || !interactive) return;\n          const value2 = event.currentTarget.value;\n          if (value2.match(/[^0-9.]/g)) {\n            event.preventDefault();\n          }\n        },\n        onFocus(event) {\n          if (!interactive) return;\n          send({ type: \"CHANNEL_INPUT.FOCUS\", channel });\n          event.currentTarget.select();\n        },\n        onBlur(event) {\n          if (!interactive) return;\n          const value2 = isTextField ? event.currentTarget.value : event.currentTarget.valueAsNumber;\n          send({ type: \"CHANNEL_INPUT.BLUR\", channel, value: value2, isTextField });\n        },\n        onKeyDown(event) {\n          if (event.defaultPrevented) return;\n          if (!interactive) return;\n          if (event.key === \"Enter\") {\n            const value2 = isTextField ? event.currentTarget.value : event.currentTarget.valueAsNumber;\n            send({ type: \"CHANNEL_INPUT.CHANGE\", channel, value: value2, isTextField });\n            event.preventDefault();\n          }\n        },\n        style: {\n          appearance: \"none\",\n          WebkitAppearance: \"none\",\n          MozAppearance: \"textfield\"\n        }\n      });\n    },\n    getHiddenInputProps() {\n      return normalize.input({\n        type: \"text\",\n        disabled,\n        name: prop(\"name\"),\n        tabIndex: -1,\n        readOnly,\n        required,\n        id: getHiddenInputId(scope),\n        style: visuallyHiddenStyle,\n        defaultValue: valueAsString\n      });\n    },\n    getEyeDropperTriggerProps() {\n      return normalize.button({\n        ...parts.eyeDropperTrigger.attrs,\n        type: \"button\",\n        dir: prop(\"dir\"),\n        disabled,\n        \"data-disabled\": dataAttr(disabled),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-readonly\": dataAttr(readOnly),\n        \"aria-label\": \"Pick a color from the screen\",\n        onClick() {\n          if (!interactive) return;\n          send({ type: \"EYEDROPPER.CLICK\" });\n        }\n      });\n    },\n    getSwatchGroupProps() {\n      return normalize.element({\n        ...parts.swatchGroup.attrs,\n        role: \"group\"\n      });\n    },\n    getSwatchTriggerState,\n    getSwatchTriggerProps(props2) {\n      const swatchState = getSwatchTriggerState(props2);\n      return normalize.button({\n        ...parts.swatchTrigger.attrs,\n        disabled: swatchState.disabled,\n        dir: prop(\"dir\"),\n        type: \"button\",\n        \"aria-label\": `select ${swatchState.valueAsString} as the color`,\n        \"data-state\": swatchState.checked ? \"checked\" : \"unchecked\",\n        \"data-value\": swatchState.valueAsString,\n        \"data-disabled\": dataAttr(swatchState.disabled),\n        onClick() {\n          if (swatchState.disabled) return;\n          send({ type: \"SWATCH_TRIGGER.CLICK\", value: swatchState.value });\n        },\n        style: {\n          \"--color\": swatchState.valueAsString,\n          position: \"relative\"\n        }\n      });\n    },\n    getSwatchIndicatorProps(props2) {\n      const swatchState = getSwatchTriggerState(props2);\n      return normalize.element({\n        ...parts.swatchIndicator.attrs,\n        dir: prop(\"dir\"),\n        hidden: !swatchState.checked\n      });\n    },\n    getSwatchProps(props2) {\n      const { respectAlpha = true } = props2;\n      const swatchState = getSwatchTriggerState(props2);\n      const color = swatchState.value.toString(respectAlpha ? \"css\" : \"hex\");\n      return normalize.element({\n        ...parts.swatch.attrs,\n        dir: prop(\"dir\"),\n        \"data-state\": swatchState.checked ? \"checked\" : \"unchecked\",\n        \"data-value\": swatchState.valueAsString,\n        style: {\n          \"--color\": color,\n          position: \"relative\",\n          background: color\n        }\n      });\n    },\n    getFormatTriggerProps() {\n      return normalize.button({\n        ...parts.formatTrigger.attrs,\n        dir: prop(\"dir\"),\n        type: \"button\",\n        \"aria-label\": `change color format to ${getNextFormat(format)}`,\n        onClick(event) {\n          if (event.currentTarget.disabled) return;\n          const nextFormat = getNextFormat(format);\n          send({ type: \"FORMAT.SET\", format: nextFormat, src: \"format-trigger\" });\n        }\n      });\n    },\n    getFormatSelectProps() {\n      return normalize.select({\n        ...parts.formatSelect.attrs,\n        \"aria-label\": \"change color format\",\n        dir: prop(\"dir\"),\n        defaultValue: prop(\"format\"),\n        disabled,\n        onChange(event) {\n          const format2 = assertFormat(event.currentTarget.value);\n          send({ type: \"FORMAT.SET\", format: format2, src: \"format-select\" });\n        }\n      });\n    }\n  };\n}\nvar formats = [\"hsba\", \"hsla\", \"rgba\"];\nvar formatRegex = new RegExp(`^(${formats.join(\"|\")})$`);\nfunction getNextFormat(format) {\n  const index = formats.indexOf(format);\n  return formats[index + 1] ?? formats[0];\n}\nfunction assertFormat(format) {\n  if (formatRegex.test(format)) return format;\n  throw new Error(`Unsupported color format: ${format}`);\n}\nvar parse = (colorString) => {\n  return parseColor(colorString);\n};\n\n// src/utils/is-valid-hex.ts\nvar HEX_REGEX = /^[0-9a-fA-F]{3,8}$/;\nfunction isValidHex(value) {\n  return HEX_REGEX.test(value);\n}\nfunction prefixHex(value) {\n  if (value.startsWith(\"#\")) return value;\n  if (isValidHex(value)) return `#${value}`;\n  return value;\n}\n\n// src/color-picker.machine.ts\nvar { and } = createGuards();\nvar machine = createMachine({\n  props({ props: props2 }) {\n    return {\n      dir: \"ltr\",\n      defaultValue: parse(\"#000000\"),\n      defaultFormat: \"rgba\",\n      openAutoFocus: true,\n      ...props2,\n      positioning: {\n        placement: \"bottom\",\n        ...props2.positioning\n      }\n    };\n  },\n  initialState({ prop }) {\n    const open = prop(\"open\") || prop(\"defaultOpen\") || prop(\"inline\");\n    return open ? \"open\" : \"idle\";\n  },\n  context({ prop, bindable, getContext }) {\n    return {\n      value: bindable(() => ({\n        defaultValue: prop(\"defaultValue\"),\n        value: prop(\"value\"),\n        isEqual(a, b) {\n          return a.toString(\"css\") === b?.toString(\"css\");\n        },\n        hash(a) {\n          return a.toString(\"css\");\n        },\n        onChange(value) {\n          const ctx = getContext();\n          const valueAsString = value.toString(ctx.get(\"format\"));\n          prop(\"onValueChange\")?.({ value, valueAsString });\n        }\n      })),\n      format: bindable(() => ({\n        defaultValue: prop(\"defaultFormat\"),\n        value: prop(\"format\"),\n        onChange(format) {\n          prop(\"onFormatChange\")?.({ format });\n        }\n      })),\n      activeId: bindable(() => ({ defaultValue: null })),\n      activeChannel: bindable(() => ({ defaultValue: null })),\n      activeOrientation: bindable(() => ({ defaultValue: null })),\n      fieldsetDisabled: bindable(() => ({ defaultValue: false })),\n      restoreFocus: bindable(() => ({ defaultValue: true })),\n      currentPlacement: bindable(() => ({\n        defaultValue: void 0\n      }))\n    };\n  },\n  computed: {\n    rtl: ({ prop }) => prop(\"dir\") === \"rtl\",\n    disabled: ({ prop, context }) => !!prop(\"disabled\") || context.get(\"fieldsetDisabled\"),\n    interactive: ({ prop }) => !(prop(\"disabled\") || prop(\"readOnly\")),\n    valueAsString: ({ context }) => context.get(\"value\").toString(context.get(\"format\")),\n    areaValue: ({ context }) => {\n      const format = context.get(\"format\").startsWith(\"hsl\") ? \"hsla\" : \"hsba\";\n      return context.get(\"value\").toFormat(format);\n    }\n  },\n  effects: [\"trackFormControl\"],\n  watch({ prop, context, action, track }) {\n    track([() => context.hash(\"value\")], () => {\n      action([\"syncInputElements\", \"dispatchChangeEvent\"]);\n    });\n    track([() => context.get(\"format\")], () => {\n      action([\"syncFormatSelectElement\"]);\n    });\n    track([() => prop(\"open\")], () => {\n      action([\"toggleVisibility\"]);\n    });\n  },\n  on: {\n    \"VALUE.SET\": {\n      actions: [\"setValue\"]\n    },\n    \"FORMAT.SET\": {\n      actions: [\"setFormat\"]\n    },\n    \"CHANNEL_INPUT.CHANGE\": {\n      actions: [\"setChannelColorFromInput\"]\n    },\n    \"EYEDROPPER.CLICK\": {\n      actions: [\"openEyeDropper\"]\n    },\n    \"SWATCH_TRIGGER.CLICK\": {\n      actions: [\"setValue\"]\n    }\n  },\n  states: {\n    idle: {\n      tags: [\"closed\"],\n      on: {\n        \"CONTROLLED.OPEN\": {\n          target: \"open\",\n          actions: [\"setInitialFocus\"]\n        },\n        OPEN: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"invokeOnOpen\", \"setInitialFocus\"]\n          }\n        ],\n        \"TRIGGER.CLICK\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"invokeOnOpen\", \"setInitialFocus\"]\n          }\n        ],\n        \"CHANNEL_INPUT.FOCUS\": {\n          target: \"focused\",\n          actions: [\"setActiveChannel\"]\n        }\n      }\n    },\n    focused: {\n      tags: [\"closed\", \"focused\"],\n      on: {\n        \"CONTROLLED.OPEN\": {\n          target: \"open\",\n          actions: [\"setInitialFocus\"]\n        },\n        OPEN: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"invokeOnOpen\", \"setInitialFocus\"]\n          }\n        ],\n        \"TRIGGER.CLICK\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"invokeOnOpen\", \"setInitialFocus\"]\n          }\n        ],\n        \"CHANNEL_INPUT.FOCUS\": {\n          actions: [\"setActiveChannel\"]\n        },\n        \"CHANNEL_INPUT.BLUR\": {\n          target: \"idle\",\n          actions: [\"setChannelColorFromInput\"]\n        },\n        \"TRIGGER.BLUR\": {\n          target: \"idle\"\n        }\n      }\n    },\n    open: {\n      tags: [\"open\"],\n      effects: [\"trackPositioning\", \"trackDismissableElement\"],\n      on: {\n        \"CONTROLLED.CLOSE\": [\n          {\n            guard: \"shouldRestoreFocus\",\n            target: \"focused\",\n            actions: [\"setReturnFocus\"]\n          },\n          {\n            target: \"idle\"\n          }\n        ],\n        \"TRIGGER.CLICK\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            target: \"idle\",\n            actions: [\"invokeOnClose\"]\n          }\n        ],\n        \"AREA.POINTER_DOWN\": {\n          target: \"open:dragging\",\n          actions: [\"setActiveChannel\", \"setAreaColorFromPoint\", \"focusAreaThumb\"]\n        },\n        \"AREA.FOCUS\": {\n          actions: [\"setActiveChannel\"]\n        },\n        \"CHANNEL_SLIDER.POINTER_DOWN\": {\n          target: \"open:dragging\",\n          actions: [\"setActiveChannel\", \"setChannelColorFromPoint\", \"focusChannelThumb\"]\n        },\n        \"CHANNEL_SLIDER.FOCUS\": {\n          actions: [\"setActiveChannel\"]\n        },\n        \"AREA.ARROW_LEFT\": {\n          actions: [\"decrementAreaXChannel\"]\n        },\n        \"AREA.ARROW_RIGHT\": {\n          actions: [\"incrementAreaXChannel\"]\n        },\n        \"AREA.ARROW_UP\": {\n          actions: [\"incrementAreaYChannel\"]\n        },\n        \"AREA.ARROW_DOWN\": {\n          actions: [\"decrementAreaYChannel\"]\n        },\n        \"AREA.PAGE_UP\": {\n          actions: [\"incrementAreaXChannel\"]\n        },\n        \"AREA.PAGE_DOWN\": {\n          actions: [\"decrementAreaXChannel\"]\n        },\n        \"CHANNEL_SLIDER.ARROW_LEFT\": {\n          actions: [\"decrementChannel\"]\n        },\n        \"CHANNEL_SLIDER.ARROW_RIGHT\": {\n          actions: [\"incrementChannel\"]\n        },\n        \"CHANNEL_SLIDER.ARROW_UP\": {\n          actions: [\"incrementChannel\"]\n        },\n        \"CHANNEL_SLIDER.ARROW_DOWN\": {\n          actions: [\"decrementChannel\"]\n        },\n        \"CHANNEL_SLIDER.PAGE_UP\": {\n          actions: [\"incrementChannel\"]\n        },\n        \"CHANNEL_SLIDER.PAGE_DOWN\": {\n          actions: [\"decrementChannel\"]\n        },\n        \"CHANNEL_SLIDER.HOME\": {\n          actions: [\"setChannelToMin\"]\n        },\n        \"CHANNEL_SLIDER.END\": {\n          actions: [\"setChannelToMax\"]\n        },\n        \"CHANNEL_INPUT.BLUR\": {\n          actions: [\"setChannelColorFromInput\"]\n        },\n        INTERACT_OUTSIDE: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            guard: \"shouldRestoreFocus\",\n            target: \"focused\",\n            actions: [\"invokeOnClose\", \"setReturnFocus\"]\n          },\n          {\n            target: \"idle\",\n            actions: [\"invokeOnClose\"]\n          }\n        ],\n        CLOSE: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            target: \"idle\",\n            actions: [\"invokeOnClose\"]\n          }\n        ],\n        \"SWATCH_TRIGGER.CLICK\": [\n          {\n            guard: and(\"isOpenControlled\", \"closeOnSelect\"),\n            actions: [\"setValue\", \"invokeOnClose\"]\n          },\n          {\n            guard: \"closeOnSelect\",\n            target: \"focused\",\n            actions: [\"setValue\", \"invokeOnClose\", \"setReturnFocus\"]\n          },\n          {\n            actions: [\"setValue\"]\n          }\n        ]\n      }\n    },\n    \"open:dragging\": {\n      tags: [\"open\"],\n      exit: [\"clearActiveChannel\"],\n      effects: [\"trackPointerMove\", \"disableTextSelection\", \"trackPositioning\", \"trackDismissableElement\"],\n      on: {\n        \"CONTROLLED.CLOSE\": [\n          {\n            guard: \"shouldRestoreFocus\",\n            target: \"focused\",\n            actions: [\"setReturnFocus\"]\n          },\n          {\n            target: \"idle\"\n          }\n        ],\n        \"AREA.POINTER_MOVE\": {\n          actions: [\"setAreaColorFromPoint\", \"focusAreaThumb\"]\n        },\n        \"AREA.POINTER_UP\": {\n          target: \"open\",\n          actions: [\"invokeOnChangeEnd\"]\n        },\n        \"CHANNEL_SLIDER.POINTER_MOVE\": {\n          actions: [\"setChannelColorFromPoint\", \"focusChannelThumb\"]\n        },\n        \"CHANNEL_SLIDER.POINTER_UP\": {\n          target: \"open\",\n          actions: [\"invokeOnChangeEnd\"]\n        },\n        INTERACT_OUTSIDE: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            guard: \"shouldRestoreFocus\",\n            target: \"focused\",\n            actions: [\"invokeOnClose\", \"setReturnFocus\"]\n          },\n          {\n            target: \"idle\",\n            actions: [\"invokeOnClose\"]\n          }\n        ],\n        CLOSE: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            target: \"idle\",\n            actions: [\"invokeOnClose\"]\n          }\n        ]\n      }\n    }\n  },\n  implementations: {\n    guards: {\n      closeOnSelect: ({ prop }) => !!prop(\"closeOnSelect\"),\n      isOpenControlled: ({ prop }) => prop(\"open\") != null || !!prop(\"inline\"),\n      shouldRestoreFocus: ({ context }) => !!context.get(\"restoreFocus\")\n    },\n    effects: {\n      trackPositioning({ context, prop, scope }) {\n        if (prop(\"inline\")) return;\n        if (!context.get(\"currentPlacement\")) {\n          context.set(\"currentPlacement\", prop(\"positioning\")?.placement);\n        }\n        const anchorEl = getTriggerEl(scope);\n        const getPositionerEl2 = () => getPositionerEl(scope);\n        return getPlacement(anchorEl, getPositionerEl2, {\n          ...prop(\"positioning\"),\n          defer: true,\n          onComplete(data) {\n            context.set(\"currentPlacement\", data.placement);\n          }\n        });\n      },\n      trackDismissableElement({ context, scope, prop, send }) {\n        if (prop(\"inline\")) return;\n        const getContentEl2 = () => getContentEl(scope);\n        return trackDismissableElement(getContentEl2, {\n          type: \"popover\",\n          exclude: getTriggerEl(scope),\n          defer: true,\n          onInteractOutside(event) {\n            prop(\"onInteractOutside\")?.(event);\n            if (event.defaultPrevented) return;\n            context.set(\"restoreFocus\", !(event.detail.focusable || event.detail.contextmenu));\n          },\n          onPointerDownOutside: prop(\"onPointerDownOutside\"),\n          onFocusOutside: prop(\"onFocusOutside\"),\n          onDismiss() {\n            send({ type: \"INTERACT_OUTSIDE\" });\n          }\n        });\n      },\n      trackFormControl({ context, scope, send }) {\n        const inputEl = getHiddenInputEl(scope);\n        return trackFormControl(inputEl, {\n          onFieldsetDisabledChange(disabled) {\n            context.set(\"fieldsetDisabled\", disabled);\n          },\n          onFormReset() {\n            send({ type: \"VALUE.SET\", value: context.initial(\"value\"), src: \"form.reset\" });\n          }\n        });\n      },\n      trackPointerMove({ context, scope, event, send }) {\n        return trackPointerMove(scope.getDoc(), {\n          onPointerMove({ point }) {\n            const type = context.get(\"activeId\") === \"area\" ? \"AREA.POINTER_MOVE\" : \"CHANNEL_SLIDER.POINTER_MOVE\";\n            send({ type, point, format: event.format });\n          },\n          onPointerUp() {\n            const type = context.get(\"activeId\") === \"area\" ? \"AREA.POINTER_UP\" : \"CHANNEL_SLIDER.POINTER_UP\";\n            send({ type });\n          }\n        });\n      },\n      disableTextSelection({ scope }) {\n        return disableTextSelection({\n          doc: scope.getDoc(),\n          target: getContentEl(scope)\n        });\n      }\n    },\n    actions: {\n      openEyeDropper({ scope, context }) {\n        const win = scope.getWin();\n        const isSupported = \"EyeDropper\" in win;\n        if (!isSupported) return;\n        const picker = new win.EyeDropper();\n        picker.open().then(({ sRGBHex }) => {\n          const format = context.get(\"value\").getFormat();\n          const color = parseColor(sRGBHex).toFormat(format);\n          context.set(\"value\", color);\n        }).catch(() => void 0);\n      },\n      setActiveChannel({ context, event }) {\n        context.set(\"activeId\", event.id);\n        if (event.channel) context.set(\"activeChannel\", event.channel);\n        if (event.orientation) context.set(\"activeOrientation\", event.orientation);\n      },\n      clearActiveChannel({ context }) {\n        context.set(\"activeChannel\", null);\n        context.set(\"activeId\", null);\n        context.set(\"activeOrientation\", null);\n      },\n      setAreaColorFromPoint({ context, event, computed, scope, prop }) {\n        const v = event.format ? context.get(\"value\").toFormat(event.format) : computed(\"areaValue\");\n        const { xChannel, yChannel } = event.channel || context.get(\"activeChannel\");\n        const percent = getAreaValueFromPoint(scope, event.point, prop(\"dir\"));\n        if (!percent) return;\n        const xValue = v.getChannelPercentValue(xChannel, percent.x);\n        const yValue = v.getChannelPercentValue(yChannel, 1 - percent.y);\n        const color = v.withChannelValue(xChannel, xValue).withChannelValue(yChannel, yValue);\n        context.set(\"value\", color);\n      },\n      setChannelColorFromPoint({ context, event, computed, scope, prop }) {\n        const channel = event.channel || context.get(\"activeId\");\n        const normalizedValue = event.format ? context.get(\"value\").toFormat(event.format) : computed(\"areaValue\");\n        const percent = getChannelSliderValueFromPoint(scope, event.point, channel, prop(\"dir\"));\n        if (!percent) return;\n        const orientation = context.get(\"activeOrientation\") || \"horizontal\";\n        const channelPercent = orientation === \"horizontal\" ? percent.x : percent.y;\n        const value = normalizedValue.getChannelPercentValue(channel, channelPercent);\n        const color = normalizedValue.withChannelValue(channel, value);\n        context.set(\"value\", color);\n      },\n      setValue({ context, event }) {\n        context.set(\"value\", event.value);\n      },\n      setFormat({ context, event }) {\n        context.set(\"format\", event.format);\n      },\n      dispatchChangeEvent({ scope, computed }) {\n        dispatchInputValueEvent(getHiddenInputEl(scope), { value: computed(\"valueAsString\") });\n      },\n      syncInputElements({ context, scope }) {\n        syncChannelInputs(scope, context.get(\"value\"));\n      },\n      invokeOnChangeEnd({ context, prop, computed }) {\n        prop(\"onValueChangeEnd\")?.({\n          value: context.get(\"value\"),\n          valueAsString: computed(\"valueAsString\")\n        });\n      },\n      setChannelColorFromInput({ context, event, scope, prop }) {\n        const { channel, isTextField, value } = event;\n        const currentAlpha = context.get(\"value\").getChannelValue(\"alpha\");\n        let color;\n        if (channel === \"alpha\") {\n          let valueAsNumber = parseFloat(value);\n          valueAsNumber = Number.isNaN(valueAsNumber) ? currentAlpha : valueAsNumber;\n          color = context.get(\"value\").withChannelValue(\"alpha\", valueAsNumber);\n        } else if (isTextField) {\n          color = tryCatch(\n            () => {\n              const parseValue = channel === \"hex\" ? prefixHex(value) : value;\n              return parse(parseValue).withChannelValue(\"alpha\", currentAlpha);\n            },\n            () => context.get(\"value\")\n          );\n        } else {\n          const current = context.get(\"value\").toFormat(context.get(\"format\"));\n          const valueAsNumber = Number.isNaN(value) ? current.getChannelValue(channel) : value;\n          color = current.withChannelValue(channel, valueAsNumber);\n        }\n        syncChannelInputs(scope, context.get(\"value\"), color);\n        context.set(\"value\", color);\n        prop(\"onValueChangeEnd\")?.({\n          value: color,\n          valueAsString: color.toString(context.get(\"format\"))\n        });\n      },\n      incrementChannel({ context, event }) {\n        const color = context.get(\"value\").incrementChannel(event.channel, event.step);\n        context.set(\"value\", color);\n      },\n      decrementChannel({ context, event }) {\n        const color = context.get(\"value\").decrementChannel(event.channel, event.step);\n        context.set(\"value\", color);\n      },\n      incrementAreaXChannel({ context, event, computed }) {\n        const { xChannel } = event.channel;\n        const color = computed(\"areaValue\").incrementChannel(xChannel, event.step);\n        context.set(\"value\", color);\n      },\n      decrementAreaXChannel({ context, event, computed }) {\n        const { xChannel } = event.channel;\n        const color = computed(\"areaValue\").decrementChannel(xChannel, event.step);\n        context.set(\"value\", color);\n      },\n      incrementAreaYChannel({ context, event, computed }) {\n        const { yChannel } = event.channel;\n        const color = computed(\"areaValue\").incrementChannel(yChannel, event.step);\n        context.set(\"value\", color);\n      },\n      decrementAreaYChannel({ context, event, computed }) {\n        const { yChannel } = event.channel;\n        const color = computed(\"areaValue\").decrementChannel(yChannel, event.step);\n        context.set(\"value\", color);\n      },\n      setChannelToMax({ context, event }) {\n        const value = context.get(\"value\");\n        const range = value.getChannelRange(event.channel);\n        const color = value.withChannelValue(event.channel, range.maxValue);\n        context.set(\"value\", color);\n      },\n      setChannelToMin({ context, event }) {\n        const value = context.get(\"value\");\n        const range = value.getChannelRange(event.channel);\n        const color = value.withChannelValue(event.channel, range.minValue);\n        context.set(\"value\", color);\n      },\n      focusAreaThumb({ scope }) {\n        raf(() => {\n          getAreaThumbEl(scope)?.focus({ preventScroll: true });\n        });\n      },\n      focusChannelThumb({ event, scope }) {\n        raf(() => {\n          getChannelSliderThumbEl(scope, event.channel)?.focus({ preventScroll: true });\n        });\n      },\n      setInitialFocus({ prop, scope }) {\n        if (!prop(\"openAutoFocus\")) return;\n        raf(() => {\n          const element = getInitialFocus({\n            root: getContentEl(scope),\n            getInitialEl: prop(\"initialFocusEl\")\n          });\n          element?.focus({ preventScroll: true });\n        });\n      },\n      setReturnFocus({ scope }) {\n        raf(() => {\n          getTriggerEl(scope)?.focus({ preventScroll: true });\n        });\n      },\n      syncFormatSelectElement({ context, scope }) {\n        syncFormatSelect(scope, context.get(\"format\"));\n      },\n      invokeOnOpen({ prop, context }) {\n        if (prop(\"inline\")) return;\n        prop(\"onOpenChange\")?.({ open: true, value: context.get(\"value\") });\n      },\n      invokeOnClose({ prop, context }) {\n        if (prop(\"inline\")) return;\n        prop(\"onOpenChange\")?.({ open: false, value: context.get(\"value\") });\n      },\n      toggleVisibility({ prop, event, send }) {\n        send({ type: prop(\"open\") ? \"CONTROLLED.OPEN\" : \"CONTROLLED.CLOSE\", previousEvent: event });\n      }\n    }\n  }\n});\nfunction syncChannelInputs(scope, currentValue, nextValue) {\n  const channelInputEls = getChannelInputEls(scope);\n  raf(() => {\n    channelInputEls.forEach((inputEl) => {\n      const channel = inputEl.dataset.channel;\n      setElementValue(inputEl, getChannelValue(nextValue || currentValue, channel));\n    });\n  });\n}\nfunction syncFormatSelect(scope, format) {\n  const selectEl = getFormatSelectEl(scope);\n  if (!selectEl) return;\n  raf(() => setElementValue(selectEl, format));\n}\nvar props = createProps()([\n  \"closeOnSelect\",\n  \"dir\",\n  \"disabled\",\n  \"format\",\n  \"defaultFormat\",\n  \"getRootNode\",\n  \"id\",\n  \"ids\",\n  \"initialFocusEl\",\n  \"inline\",\n  \"name\",\n  \"positioning\",\n  \"onFocusOutside\",\n  \"onFormatChange\",\n  \"onInteractOutside\",\n  \"onOpenChange\",\n  \"onPointerDownOutside\",\n  \"onValueChange\",\n  \"onValueChangeEnd\",\n  \"defaultOpen\",\n  \"open\",\n  \"positioning\",\n  \"required\",\n  \"readOnly\",\n  \"value\",\n  \"defaultValue\",\n  \"invalid\",\n  \"openAutoFocus\"\n]);\nvar splitProps = createSplitProps(props);\nvar areaProps = createProps()([\"xChannel\", \"yChannel\"]);\nvar splitAreaProps = createSplitProps(areaProps);\nvar channelProps = createProps()([\"channel\", \"orientation\"]);\nvar splitChannelProps = createSplitProps(channelProps);\nvar swatchTriggerProps = createProps()([\"value\", \"disabled\"]);\nvar splitSwatchTriggerProps = createSplitProps(swatchTriggerProps);\nvar swatchProps = createProps()([\"value\", \"respectAlpha\"]);\nvar splitSwatchProps = createSplitProps(swatchProps);\nvar transparencyGridProps = createProps()([\"size\"]);\nvar splitTransparencyGridProps = createSplitProps(transparencyGridProps);\n\nexport { anatomy, areaProps, channelProps, connect, machine, parse, props, splitAreaProps, splitChannelProps, splitProps, splitSwatchProps, splitSwatchTriggerProps, splitTransparencyGridProps, swatchProps, swatchTriggerProps, transparencyGridProps };\n", "import * as colorPicker from \"@zag-js/color-picker\";\nimport type { ColorFormat } from \"@zag-js/color-picker\";\nimport type { Direction } from \"@zag-js/types\";\nimport { VanillaMachine, normalizeProps } from \"@zag-js/vanilla\";\n\nimport {\n  Component,\n  getString,\n  getBoolean,\n  getNumber,\n  generateId,\n  renderPart,\n} from \"../lib\";\nexport class ColorPicker extends Component<colorPicker.Props, colorPicker.Api> {\n  initMachine(props: colorPicker.Props): VanillaMachine<any> {\n    return new VanillaMachine(colorPicker.machine, props);\n  }\n  initApi(): colorPicker.Api {\n    return colorPicker.connect(this.machine.service, normalizeProps);\n  }\n  render() {\n    const parts = [\n      \"root\",\n      \"label\",\n      \"hidden-input\",\n      \"control\",\n      \"trigger\",\n      \"positioner\",\n      \"content\",\n      \"area\",\n      \"area-background\",\n      \"area-thumb\",\n      \"swatch-group\",\n      \"eye-dropper-trigger\",\n    ];\n    for (const part of parts) renderPart(this.el, part, this.api);\n    const items = [\n      \"channel-input\",\n      \"channel-slider\",\n      \"channel-slider-track\",\n      \"channel-slider-thumb\",\n    ];\n    for (const item of items)\n      renderPart(this.el, item, this.api, { channel: \"string\" });\n\n    const swatchTriggers = [\"swatch-trigger\"];\n    for (const trigger of swatchTriggers)\n      renderPart(this.el, trigger, this.api, { value: \"string\" });\n\n    const grids = [\"transparency-grid\"];\n    for (const grid of grids)\n      renderPart(this.el, grid, this.api, { size: \"string\" });\n\n    const swatchOutside = Array.from(\n      this.el.querySelectorAll<HTMLElement>(\"[data-part='swatch']\"),\n    ).filter((el) => !el.closest(\"[data-part='control']\"));\n\n    swatchOutside.forEach((part) => {\n      renderPart(part.parentElement!, \"swatch\", this.api, { value: \"string\" });\n    });\n\n    const swatchInside = Array.from(\n      this.el.querySelectorAll<HTMLElement>(\"[data-part='swatch']\"),\n    ).filter((el) => el.closest(\"[data-part='control']\"));\n\n    swatchInside.forEach((part) => {\n      renderPart(part.parentElement!, \"swatch\", this.api, {\n        value: this.api.value,\n      });\n    });\n  }\n}\nexport function initColorPicker(\n  doc: HTMLElement | Document = document,\n  selector = \".color-picker-js\",\n): void {\n  doc.querySelectorAll<HTMLElement>(selector).forEach((rootEl) => {\n    const directions = [\"ltr\", \"rtl\"] as const;\n    const formats = [\"rgba\", \"hsla\", \"hsba\"] as const;\n    const placements = [\n      \"top\",\n      \"right\",\n      \"bottom\",\n      \"left\",\n      \"top-start\",\n      \"top-end\",\n      \"right-start\",\n      \"right-end\",\n      \"bottom-start\",\n      \"bottom-end\",\n      \"left-start\",\n      \"left-end\",\n    ] as const;\n    const strategies = [\"absolute\", \"fixed\"] as const;\n    const colorPickerComponent = new ColorPicker(rootEl, {\n      id: generateId(rootEl, \"colorPicker\"),\n      defaultValue:\n        getString(rootEl, \"defaultValue\") !== undefined\n          ? colorPicker.parse(getString(rootEl, \"defaultValue\")!)\n          : undefined,\n      defaultFormat: getString<ColorFormat>(rootEl, \"defaultFormat\", formats),\n      closeOnSelect: getBoolean(rootEl, \"closeOnSelect\"),\n      defaultOpen: getBoolean(rootEl, \"defaultOpen\"),\n      dir: getString<Direction>(rootEl, \"dir\", directions),\n      disabled: getBoolean(rootEl, \"disabled\"),\n      format: getString<ColorFormat>(rootEl, \"format\", formats),\n      invalid: getBoolean(rootEl, \"invalid\"),\n      name: getString(rootEl, \"name\") || generateId(rootEl, \"color\"),\n      open: getBoolean(rootEl, \"open\"),\n      openAutoFocus: getBoolean(rootEl, \"openAutoFocus\"),\n      readOnly: getBoolean(rootEl, \"readOnly\"),\n      required: getBoolean(rootEl, \"required\"),\n      value:\n        getString(rootEl, \"value\") !== undefined\n          ? colorPicker.parse(getString(rootEl, \"value\")!)\n          : undefined,\n      positioning: {\n        hideWhenDetached: getBoolean(rootEl, \"hideWhenDetached\"),\n        placement: getString(rootEl, \"placement\", placements),\n        strategy: getString(rootEl, \"strategy\", strategies),\n        flip: getBoolean(rootEl, \"flip\"),\n        gutter: getNumber(rootEl, \"gutter\"),\n        arrowPadding: getNumber(rootEl, \"arrowPadding\"),\n        overflowPadding: getNumber(rootEl, \"overflowPadding\"),\n        offset: (() => {\n          const mainAxis = getNumber(rootEl, \"offsetMainAxis\");\n          const crossAxis = getNumber(rootEl, \"offsetCrossAxis\");\n          if (mainAxis !== undefined || crossAxis !== undefined) {\n            return {\n              mainAxis: mainAxis,\n              crossAxis: crossAxis,\n            };\n          }\n          return undefined;\n        })(),\n        sameWidth: getBoolean(rootEl, \"sameWidth\"),\n        overlap: getBoolean(rootEl, \"overlap\"),\n        fitViewport: getBoolean(rootEl, \"fitViewport\"),\n        slide: getBoolean(rootEl, \"slide\"),\n      },\n      onFocusOutside(details) {\n        const eventName = getString(rootEl, \"onFocusOutside\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onFormatChange(details) {\n        const eventName = getString(rootEl, \"onFormatChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onInteractOutside(details) {\n        const eventName = getString(rootEl, \"onInteractOutside\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onOpenChange(details) {\n        const eventName = getString(rootEl, \"onOpenChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onPointerDownOutside(details) {\n        const eventName = getString(rootEl, \"onPointerDownOutside\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onValueChange(details) {\n        const eventName = getString(rootEl, \"onValueChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onValueChangeEnd(details) {\n        const eventName = getString(rootEl, \"onFocusChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n    });\n    colorPickerComponent.init();\n  });\n}\n", "import { hasProp, isObject, isEqual, chunk, prevIndex, nextIndex } from '@zag-js/utils';\n\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar fallback = {\n  itemToValue(item) {\n    if (typeof item === \"string\") return item;\n    if (isObject(item) && hasProp(item, \"value\")) return item.value;\n    return \"\";\n  },\n  itemToString(item) {\n    if (typeof item === \"string\") return item;\n    if (isObject(item) && hasProp(item, \"label\")) return item.label;\n    return fallback.itemToValue(item);\n  },\n  isItemDisabled(item) {\n    if (isObject(item) && hasProp(item, \"disabled\")) return !!item.disabled;\n    return false;\n  }\n};\nvar ListCollection = class _ListCollection {\n  constructor(options) {\n    this.options = options;\n    /**\n     * The items in the collection\n     */\n    __publicField(this, \"items\");\n    __publicField(this, \"indexMap\", null);\n    /**\n     * Copy the collection\n     */\n    __publicField(this, \"copy\", (items) => {\n      return new _ListCollection({ ...this.options, items: items ?? [...this.items] });\n    });\n    /**\n     * Check if the collection is equal to another collection\n     */\n    __publicField(this, \"isEqual\", (other) => {\n      return isEqual(this.items, other.items);\n    });\n    /**\n     * Function to update the collection items\n     */\n    __publicField(this, \"setItems\", (items) => {\n      return this.copy(items);\n    });\n    /**\n     * Returns all the values in the collection\n     */\n    __publicField(this, \"getValues\", (items = this.items) => {\n      const values = [];\n      for (const item of items) {\n        const value = this.getItemValue(item);\n        if (value != null) values.push(value);\n      }\n      return values;\n    });\n    /**\n     * Get the item based on its value\n     */\n    __publicField(this, \"find\", (value) => {\n      if (value == null) return null;\n      const index = this.indexOf(value);\n      return index !== -1 ? this.at(index) : null;\n    });\n    /**\n     * Get the items based on its values\n     */\n    __publicField(this, \"findMany\", (values) => {\n      const result = [];\n      for (const value of values) {\n        const item = this.find(value);\n        if (item != null) result.push(item);\n      }\n      return result;\n    });\n    /**\n     * Get the item based on its index\n     */\n    __publicField(this, \"at\", (index) => {\n      if (!this.options.groupBy && !this.options.groupSort) {\n        return this.items[index] ?? null;\n      }\n      let idx = 0;\n      const groups = this.group();\n      for (const [, items] of groups) {\n        for (const item of items) {\n          if (idx === index) return item;\n          idx++;\n        }\n      }\n      return null;\n    });\n    __publicField(this, \"sortFn\", (valueA, valueB) => {\n      const indexA = this.indexOf(valueA);\n      const indexB = this.indexOf(valueB);\n      return (indexA ?? 0) - (indexB ?? 0);\n    });\n    /**\n     * Sort the values based on their index\n     */\n    __publicField(this, \"sort\", (values) => {\n      return [...values].sort(this.sortFn.bind(this));\n    });\n    /**\n     * Convert an item to a value\n     */\n    __publicField(this, \"getItemValue\", (item) => {\n      if (item == null) return null;\n      return this.options.itemToValue?.(item) ?? fallback.itemToValue(item);\n    });\n    /**\n     * Whether an item is disabled\n     */\n    __publicField(this, \"getItemDisabled\", (item) => {\n      if (item == null) return false;\n      return this.options.isItemDisabled?.(item) ?? fallback.isItemDisabled(item);\n    });\n    /**\n     * Convert an item to a string\n     */\n    __publicField(this, \"stringifyItem\", (item) => {\n      if (item == null) return null;\n      return this.options.itemToString?.(item) ?? fallback.itemToString(item);\n    });\n    /**\n     * Convert a value to a string\n     */\n    __publicField(this, \"stringify\", (value) => {\n      if (value == null) return null;\n      return this.stringifyItem(this.find(value));\n    });\n    /**\n     * Convert an array of items to a string\n     */\n    __publicField(this, \"stringifyItems\", (items, separator = \", \") => {\n      const strs = [];\n      for (const item of items) {\n        const str = this.stringifyItem(item);\n        if (str != null) strs.push(str);\n      }\n      return strs.join(separator);\n    });\n    /**\n     * Convert an array of items to a string\n     */\n    __publicField(this, \"stringifyMany\", (value, separator) => {\n      return this.stringifyItems(this.findMany(value), separator);\n    });\n    /**\n     * Whether the collection has a value\n     */\n    __publicField(this, \"has\", (value) => {\n      return this.indexOf(value) !== -1;\n    });\n    /**\n     * Whether the collection has an item\n     */\n    __publicField(this, \"hasItem\", (item) => {\n      if (item == null) return false;\n      return this.has(this.getItemValue(item));\n    });\n    /**\n     * Group items by the groupBy function provided in options\n     * Returns an array of [groupKey, items] tuples\n     */\n    __publicField(this, \"group\", () => {\n      const { groupBy, groupSort } = this.options;\n      if (!groupBy) return [[\"\", [...this.items]]];\n      const groups = /* @__PURE__ */ new Map();\n      this.items.forEach((item, index) => {\n        const groupKey = groupBy(item, index);\n        if (!groups.has(groupKey)) {\n          groups.set(groupKey, []);\n        }\n        groups.get(groupKey).push(item);\n      });\n      let entries = Array.from(groups.entries());\n      if (groupSort) {\n        entries.sort(([a], [b]) => {\n          if (typeof groupSort === \"function\") return groupSort(a, b);\n          if (Array.isArray(groupSort)) {\n            const indexA = groupSort.indexOf(a);\n            const indexB = groupSort.indexOf(b);\n            if (indexA === -1) return 1;\n            if (indexB === -1) return -1;\n            return indexA - indexB;\n          }\n          if (groupSort === \"asc\") return a.localeCompare(b);\n          if (groupSort === \"desc\") return b.localeCompare(a);\n          return 0;\n        });\n      }\n      return entries;\n    });\n    /**\n     * Returns the next value in the collection\n     */\n    __publicField(this, \"getNextValue\", (value, step = 1, clamp = false) => {\n      let index = this.indexOf(value);\n      if (index === -1) return null;\n      index = clamp ? Math.min(index + step, this.size - 1) : index + step;\n      while (index <= this.size && this.getItemDisabled(this.at(index))) index++;\n      return this.getItemValue(this.at(index));\n    });\n    /**\n     * Returns the previous value in the collection\n     */\n    __publicField(this, \"getPreviousValue\", (value, step = 1, clamp = false) => {\n      let index = this.indexOf(value);\n      if (index === -1) return null;\n      index = clamp ? Math.max(index - step, 0) : index - step;\n      while (index >= 0 && this.getItemDisabled(this.at(index))) index--;\n      return this.getItemValue(this.at(index));\n    });\n    /**\n     * Get the index of an item based on its key\n     */\n    __publicField(this, \"indexOf\", (value) => {\n      if (value == null) return -1;\n      if (!this.options.groupBy && !this.options.groupSort) {\n        return this.items.findIndex((item) => this.getItemValue(item) === value);\n      }\n      if (!this.indexMap) {\n        this.indexMap = /* @__PURE__ */ new Map();\n        let idx = 0;\n        const groups = this.group();\n        for (const [, items] of groups) {\n          for (const item of items) {\n            const itemValue = this.getItemValue(item);\n            if (itemValue != null) {\n              this.indexMap.set(itemValue, idx);\n            }\n            idx++;\n          }\n        }\n      }\n      return this.indexMap.get(value) ?? -1;\n    });\n    __publicField(this, \"getByText\", (text, current) => {\n      const currentIndex = current != null ? this.indexOf(current) : -1;\n      const isSingleKey = text.length === 1;\n      for (let i = 0; i < this.items.length; i++) {\n        const item = this.items[(currentIndex + i + 1) % this.items.length];\n        if (isSingleKey && this.getItemValue(item) === current) continue;\n        if (this.getItemDisabled(item)) continue;\n        if (match(this.stringifyItem(item), text)) return item;\n      }\n      return void 0;\n    });\n    /**\n     * Search for a value based on a query\n     */\n    __publicField(this, \"search\", (queryString, options) => {\n      const { state, currentValue, timeout = 350 } = options;\n      const search = state.keysSoFar + queryString;\n      const isRepeated = search.length > 1 && Array.from(search).every((char) => char === search[0]);\n      const query = isRepeated ? search[0] : search;\n      const item = this.getByText(query, currentValue);\n      const value = this.getItemValue(item);\n      function cleanup() {\n        clearTimeout(state.timer);\n        state.timer = -1;\n      }\n      function update(value2) {\n        state.keysSoFar = value2;\n        cleanup();\n        if (value2 !== \"\") {\n          state.timer = +setTimeout(() => {\n            update(\"\");\n            cleanup();\n          }, timeout);\n        }\n      }\n      update(search);\n      return value;\n    });\n    /**\n     * Update an item in the collection\n     */\n    __publicField(this, \"update\", (value, item) => {\n      let index = this.indexOf(value);\n      if (index === -1) return this;\n      return this.copy([...this.items.slice(0, index), item, ...this.items.slice(index + 1)]);\n    });\n    /**\n     * Update an item in the collection if it exists, otherwise append it\n     */\n    __publicField(this, \"upsert\", (value, item, mode = \"append\") => {\n      let index = this.indexOf(value);\n      if (index === -1) {\n        const fn = mode === \"append\" ? this.append : this.prepend;\n        return fn(item);\n      }\n      return this.copy([...this.items.slice(0, index), item, ...this.items.slice(index + 1)]);\n    });\n    /**\n     * Insert items at a specific index\n     */\n    __publicField(this, \"insert\", (index, ...items) => {\n      return this.copy(insert(this.items, index, ...items));\n    });\n    /**\n     * Insert items before a specific value\n     */\n    __publicField(this, \"insertBefore\", (value, ...items) => {\n      let toIndex = this.indexOf(value);\n      if (toIndex === -1) {\n        if (this.items.length === 0) toIndex = 0;\n        else return this;\n      }\n      return this.copy(insert(this.items, toIndex, ...items));\n    });\n    /**\n     * Insert items after a specific value\n     */\n    __publicField(this, \"insertAfter\", (value, ...items) => {\n      let toIndex = this.indexOf(value);\n      if (toIndex === -1) {\n        if (this.items.length === 0) toIndex = 0;\n        else return this;\n      }\n      return this.copy(insert(this.items, toIndex + 1, ...items));\n    });\n    /**\n     * Prepend items to the collection\n     */\n    __publicField(this, \"prepend\", (...items) => {\n      return this.copy(insert(this.items, 0, ...items));\n    });\n    /**\n     * Append items to the collection\n     */\n    __publicField(this, \"append\", (...items) => {\n      return this.copy(insert(this.items, this.items.length, ...items));\n    });\n    /**\n     * Filter the collection\n     */\n    __publicField(this, \"filter\", (fn) => {\n      const filteredItems = this.items.filter((item, index) => fn(this.stringifyItem(item), index, item));\n      return this.copy(filteredItems);\n    });\n    /**\n     * Remove items from the collection\n     */\n    __publicField(this, \"remove\", (...itemsOrValues) => {\n      const values = itemsOrValues.map(\n        (itemOrValue) => typeof itemOrValue === \"string\" ? itemOrValue : this.getItemValue(itemOrValue)\n      );\n      return this.copy(\n        this.items.filter((item) => {\n          const value = this.getItemValue(item);\n          if (value == null) return false;\n          return !values.includes(value);\n        })\n      );\n    });\n    /**\n     * Move an item to a specific index\n     */\n    __publicField(this, \"move\", (value, toIndex) => {\n      const fromIndex = this.indexOf(value);\n      if (fromIndex === -1) return this;\n      return this.copy(move(this.items, [fromIndex], toIndex));\n    });\n    /**\n     * Move items before a specific value\n     */\n    __publicField(this, \"moveBefore\", (value, ...values) => {\n      let toIndex = this.items.findIndex((item) => this.getItemValue(item) === value);\n      if (toIndex === -1) return this;\n      let indices = values.map((value2) => this.items.findIndex((item) => this.getItemValue(item) === value2)).sort((a, b) => a - b);\n      return this.copy(move(this.items, indices, toIndex));\n    });\n    /**\n     * Move items after a specific value\n     */\n    __publicField(this, \"moveAfter\", (value, ...values) => {\n      let toIndex = this.items.findIndex((item) => this.getItemValue(item) === value);\n      if (toIndex === -1) return this;\n      let indices = values.map((value2) => this.items.findIndex((item) => this.getItemValue(item) === value2)).sort((a, b) => a - b);\n      return this.copy(move(this.items, indices, toIndex + 1));\n    });\n    /**\n     * Reorder items\n     */\n    __publicField(this, \"reorder\", (fromIndex, toIndex) => {\n      return this.copy(move(this.items, [fromIndex], toIndex));\n    });\n    /**\n     * Compare two values\n     */\n    __publicField(this, \"compareValue\", (a, b) => {\n      const indexA = this.indexOf(a);\n      const indexB = this.indexOf(b);\n      if (indexA < indexB) return -1;\n      if (indexA > indexB) return 1;\n      return 0;\n    });\n    /**\n     * Get the range of values between two values\n     */\n    __publicField(this, \"range\", (from, to) => {\n      let keys = [];\n      let key = from;\n      while (key != null) {\n        let item = this.find(key);\n        if (item) keys.push(key);\n        if (key === to) return keys;\n        key = this.getNextValue(key);\n      }\n      return [];\n    });\n    /**\n     * Get the range of values between two values\n     */\n    __publicField(this, \"getValueRange\", (from, to) => {\n      if (from && to) {\n        if (this.compareValue(from, to) <= 0) {\n          return this.range(from, to);\n        }\n        return this.range(to, from);\n      }\n      return [];\n    });\n    /**\n     * Convert the collection to a string\n     */\n    __publicField(this, \"toString\", () => {\n      let result = \"\";\n      for (const item of this.items) {\n        const value = this.getItemValue(item);\n        const label = this.stringifyItem(item);\n        const disabled = this.getItemDisabled(item);\n        const itemString = [value, label, disabled].filter(Boolean).join(\":\");\n        result += itemString + \",\";\n      }\n      return result;\n    });\n    /**\n     * Convert the collection to a JSON object\n     */\n    __publicField(this, \"toJSON\", () => {\n      return {\n        size: this.size,\n        first: this.firstValue,\n        last: this.lastValue\n      };\n    });\n    this.items = [...options.items];\n  }\n  /**\n   * Returns the number of items in the collection\n   */\n  get size() {\n    return this.items.length;\n  }\n  /**\n   * Returns the first value in the collection\n   */\n  get firstValue() {\n    let index = 0;\n    while (this.getItemDisabled(this.at(index))) index++;\n    return this.getItemValue(this.at(index));\n  }\n  /**\n   * Returns the last value in the collection\n   */\n  get lastValue() {\n    let index = this.size - 1;\n    while (this.getItemDisabled(this.at(index))) index--;\n    return this.getItemValue(this.at(index));\n  }\n  *[Symbol.iterator]() {\n    yield* this.items;\n  }\n};\nvar match = (label, query) => {\n  return !!label?.toLowerCase().startsWith(query.toLowerCase());\n};\nfunction isListCollection(v) {\n  return v instanceof ListCollection;\n}\nfunction insert(items, index, ...values) {\n  return [...items.slice(0, index), ...values, ...items.slice(index)];\n}\nfunction move(items, indices, toIndex) {\n  indices = [...indices].sort((a, b) => a - b);\n  const itemsToMove = indices.map((i) => items[i]);\n  for (let i = indices.length - 1; i >= 0; i--) {\n    items = [...items.slice(0, indices[i]), ...items.slice(indices[i] + 1)];\n  }\n  toIndex = Math.max(0, toIndex - indices.filter((i) => i < toIndex).length);\n  return [...items.slice(0, toIndex), ...itemsToMove, ...items.slice(toIndex)];\n}\n\n// src/grid-collection.ts\nvar GridCollection = class extends ListCollection {\n  constructor(options) {\n    const { columnCount } = options;\n    super(options);\n    __publicField(this, \"columnCount\");\n    __publicField(this, \"rows\", null);\n    /**\n     * Returns the row data in the grid\n     */\n    __publicField(this, \"getRows\", () => {\n      if (!this.rows) {\n        this.rows = chunk([...this.items], this.columnCount);\n      }\n      return this.rows;\n    });\n    /**\n     * Returns the number of rows in the grid\n     */\n    __publicField(this, \"getRowCount\", () => {\n      return Math.ceil(this.items.length / this.columnCount);\n    });\n    /**\n     * Returns the index of the specified row and column in the grid\n     */\n    __publicField(this, \"getCellIndex\", (row, column) => {\n      return row * this.columnCount + column;\n    });\n    /**\n     * Returns the item at the specified row and column in the grid\n     */\n    __publicField(this, \"getCell\", (row, column) => {\n      return this.at(this.getCellIndex(row, column));\n    });\n    /**\n     * Returns the row and column index for a given value\n     */\n    __publicField(this, \"getValueCell\", (value) => {\n      const index = this.indexOf(value);\n      if (index === -1) return null;\n      const row = Math.floor(index / this.columnCount);\n      const column = index % this.columnCount;\n      return { row, column };\n    });\n    /**\n     * Returns the value of the last enabled column in a row\n     */\n    __publicField(this, \"getLastEnabledColumnIndex\", (row) => {\n      for (let col = this.columnCount - 1; col >= 0; col--) {\n        const cell = this.getCell(row, col);\n        if (cell && !this.getItemDisabled(cell)) {\n          return col;\n        }\n      }\n      return null;\n    });\n    /**\n     * Returns the index of the first enabled column in a row\n     */\n    __publicField(this, \"getFirstEnabledColumnIndex\", (row) => {\n      for (let col = 0; col < this.columnCount; col++) {\n        const cell = this.getCell(row, col);\n        if (cell && !this.getItemDisabled(cell)) {\n          return col;\n        }\n      }\n      return null;\n    });\n    /**\n     * Returns the value of the previous row in the grid, based on the current value\n     */\n    __publicField(this, \"getPreviousRowValue\", (value, loop = false) => {\n      const currentCell = this.getValueCell(value);\n      if (currentCell === null) return null;\n      const rows = this.getRows();\n      const rowCount = rows.length;\n      let prevRowIndex = currentCell.row;\n      let prevColumnIndex = currentCell.column;\n      for (let i = 1; i <= rowCount; i++) {\n        prevRowIndex = prevIndex(rows, prevRowIndex, { loop });\n        const prevRow = rows[prevRowIndex];\n        if (!prevRow) continue;\n        const prevCell = prevRow[prevColumnIndex];\n        if (!prevCell) {\n          const lastColumnIndex = this.getLastEnabledColumnIndex(prevRowIndex);\n          if (lastColumnIndex != null) {\n            prevColumnIndex = lastColumnIndex;\n          }\n        }\n        const cell = this.getCell(prevRowIndex, prevColumnIndex);\n        if (!this.getItemDisabled(cell)) {\n          return this.getItemValue(cell);\n        }\n      }\n      return this.firstValue;\n    });\n    /**\n     * Returns the value of the next row in the grid, based on the current value\n     */\n    __publicField(this, \"getNextRowValue\", (value, loop = false) => {\n      const currentCell = this.getValueCell(value);\n      if (currentCell === null) return null;\n      const rows = this.getRows();\n      const rowCount = rows.length;\n      let nextRowIndex = currentCell.row;\n      let nextColumnIndex = currentCell.column;\n      for (let i = 1; i <= rowCount; i++) {\n        nextRowIndex = nextIndex(rows, nextRowIndex, { loop });\n        const nextRow = rows[nextRowIndex];\n        if (!nextRow) continue;\n        const nextCell = nextRow[nextColumnIndex];\n        if (!nextCell) {\n          const lastColumnIndex = this.getLastEnabledColumnIndex(nextRowIndex);\n          if (lastColumnIndex != null) {\n            nextColumnIndex = lastColumnIndex;\n          }\n        }\n        const cell = this.getCell(nextRowIndex, nextColumnIndex);\n        if (!this.getItemDisabled(cell)) {\n          return this.getItemValue(cell);\n        }\n      }\n      return this.lastValue;\n    });\n    this.columnCount = columnCount;\n  }\n};\nfunction isGridCollection(v) {\n  return hasProp(v, \"columnCount\") && hasProp(v, \"getRows\");\n}\nvar Selection = class _Selection extends Set {\n  constructor(values = []) {\n    super(values);\n    __publicField(this, \"selectionMode\", \"single\");\n    __publicField(this, \"deselectable\", true);\n    __publicField(this, \"copy\", () => {\n      const clone = new _Selection([...this]);\n      return this.sync(clone);\n    });\n    __publicField(this, \"sync\", (other) => {\n      other.selectionMode = this.selectionMode;\n      other.deselectable = this.deselectable;\n      return other;\n    });\n    __publicField(this, \"isEmpty\", () => {\n      return this.size === 0;\n    });\n    __publicField(this, \"isSelected\", (value) => {\n      if (this.selectionMode === \"none\" || value == null) {\n        return false;\n      }\n      return this.has(value);\n    });\n    __publicField(this, \"canSelect\", (collection, value) => {\n      return this.selectionMode !== \"none\" || !collection.getItemDisabled(collection.find(value));\n    });\n    __publicField(this, \"firstSelectedValue\", (collection) => {\n      let firstValue = null;\n      for (let value of this) {\n        if (!firstValue || collection.compareValue(value, firstValue) < 0) {\n          firstValue = value;\n        }\n      }\n      return firstValue;\n    });\n    __publicField(this, \"lastSelectedValue\", (collection) => {\n      let lastValue = null;\n      for (let value of this) {\n        if (!lastValue || collection.compareValue(value, lastValue) > 0) {\n          lastValue = value;\n        }\n      }\n      return lastValue;\n    });\n    __publicField(this, \"extendSelection\", (collection, anchorValue, targetValue) => {\n      if (this.selectionMode === \"none\") {\n        return this;\n      }\n      if (this.selectionMode === \"single\") {\n        return this.replaceSelection(collection, targetValue);\n      }\n      const selection = this.copy();\n      const lastSelected = Array.from(this).pop();\n      for (let key of collection.getValueRange(anchorValue, lastSelected ?? targetValue)) {\n        selection.delete(key);\n      }\n      for (let key of collection.getValueRange(targetValue, anchorValue)) {\n        if (this.canSelect(collection, key)) {\n          selection.add(key);\n        }\n      }\n      return selection;\n    });\n    __publicField(this, \"toggleSelection\", (collection, value) => {\n      if (this.selectionMode === \"none\") {\n        return this;\n      }\n      if (this.selectionMode === \"single\" && !this.isSelected(value)) {\n        return this.replaceSelection(collection, value);\n      }\n      const selection = this.copy();\n      if (selection.has(value)) {\n        selection.delete(value);\n      } else if (selection.canSelect(collection, value)) {\n        selection.add(value);\n      }\n      return selection;\n    });\n    __publicField(this, \"replaceSelection\", (collection, value) => {\n      if (this.selectionMode === \"none\") {\n        return this;\n      }\n      if (value == null) {\n        return this;\n      }\n      if (!this.canSelect(collection, value)) {\n        return this;\n      }\n      const selection = new _Selection([value]);\n      return this.sync(selection);\n    });\n    __publicField(this, \"setSelection\", (values) => {\n      if (this.selectionMode === \"none\") {\n        return this;\n      }\n      let selection = new _Selection();\n      for (let value of values) {\n        if (value != null) {\n          selection.add(value);\n          if (this.selectionMode === \"single\") {\n            break;\n          }\n        }\n      }\n      return this.sync(selection);\n    });\n    __publicField(this, \"clearSelection\", () => {\n      const selection = this.copy();\n      if (selection.deselectable && selection.size > 0) {\n        selection.clear();\n      }\n      return selection;\n    });\n    __publicField(this, \"select\", (collection, value, forceToggle) => {\n      if (this.selectionMode === \"none\") {\n        return this;\n      }\n      if (this.selectionMode === \"single\") {\n        if (this.isSelected(value) && this.deselectable) {\n          return this.toggleSelection(collection, value);\n        } else {\n          return this.replaceSelection(collection, value);\n        }\n      } else if (this.selectionMode === \"multiple\" || forceToggle) {\n        return this.toggleSelection(collection, value);\n      } else {\n        return this.replaceSelection(collection, value);\n      }\n    });\n    __publicField(this, \"deselect\", (value) => {\n      const selection = this.copy();\n      selection.delete(value);\n      return selection;\n    });\n    __publicField(this, \"isEqual\", (other) => {\n      return isEqual(Array.from(this), Array.from(other));\n    });\n  }\n};\n\n// src/tree-visit.ts\nfunction access(node, indexPath, options) {\n  for (let i = 0; i < indexPath.length; i++) node = options.getChildren(node, indexPath.slice(i + 1))[indexPath[i]];\n  return node;\n}\nfunction ancestorIndexPaths(indexPaths) {\n  const sortedPaths = sortIndexPaths(indexPaths);\n  const result = [];\n  const seen = /* @__PURE__ */ new Set();\n  for (const indexPath of sortedPaths) {\n    const key = indexPath.join();\n    if (!seen.has(key)) {\n      seen.add(key);\n      result.push(indexPath);\n    }\n  }\n  return result;\n}\nfunction compareIndexPaths(a, b) {\n  for (let i = 0; i < Math.min(a.length, b.length); i++) {\n    if (a[i] < b[i]) return -1;\n    if (a[i] > b[i]) return 1;\n  }\n  return a.length - b.length;\n}\nfunction sortIndexPaths(indexPaths) {\n  return indexPaths.sort(compareIndexPaths);\n}\nfunction find(node, options) {\n  let found;\n  visit(node, {\n    ...options,\n    onEnter: (child, indexPath) => {\n      if (options.predicate(child, indexPath)) {\n        found = child;\n        return \"stop\";\n      }\n    }\n  });\n  return found;\n}\nfunction findAll(node, options) {\n  const found = [];\n  visit(node, {\n    onEnter: (child, indexPath) => {\n      if (options.predicate(child, indexPath)) found.push(child);\n    },\n    getChildren: options.getChildren\n  });\n  return found;\n}\nfunction findIndexPath(node, options) {\n  let found;\n  visit(node, {\n    onEnter: (child, indexPath) => {\n      if (options.predicate(child, indexPath)) {\n        found = [...indexPath];\n        return \"stop\";\n      }\n    },\n    getChildren: options.getChildren\n  });\n  return found;\n}\nfunction reduce(node, options) {\n  let result = options.initialResult;\n  visit(node, {\n    ...options,\n    onEnter: (child, indexPath) => {\n      result = options.nextResult(result, child, indexPath);\n    }\n  });\n  return result;\n}\nfunction flatMap(node, options) {\n  return reduce(node, {\n    ...options,\n    initialResult: [],\n    nextResult: (result, child, indexPath) => {\n      result.push(...options.transform(child, indexPath));\n      return result;\n    }\n  });\n}\nfunction filter(node, options) {\n  const { predicate, create, getChildren } = options;\n  const filterRecursive = (node2, indexPath) => {\n    const children = getChildren(node2, indexPath);\n    const filteredChildren = [];\n    children.forEach((child, index) => {\n      const childIndexPath = [...indexPath, index];\n      const filteredChild = filterRecursive(child, childIndexPath);\n      if (filteredChild) filteredChildren.push(filteredChild);\n    });\n    const isRoot = indexPath.length === 0;\n    const nodeMatches = predicate(node2, indexPath);\n    const hasFilteredChildren = filteredChildren.length > 0;\n    if (isRoot || nodeMatches || hasFilteredChildren) {\n      return create(node2, filteredChildren, indexPath);\n    }\n    return null;\n  };\n  return filterRecursive(node, []) || create(node, [], []);\n}\nfunction flatten(rootNode, options) {\n  const nodes = [];\n  let idx = 0;\n  const idxMap = /* @__PURE__ */ new Map();\n  const parentMap = /* @__PURE__ */ new Map();\n  visit(rootNode, {\n    getChildren: options.getChildren,\n    onEnter: (node, indexPath) => {\n      if (!idxMap.has(node)) {\n        idxMap.set(node, idx++);\n      }\n      const children = options.getChildren(node, indexPath);\n      children.forEach((child) => {\n        if (!parentMap.has(child)) {\n          parentMap.set(child, node);\n        }\n        if (!idxMap.has(child)) {\n          idxMap.set(child, idx++);\n        }\n      });\n      const _children = children.length > 0 ? children.map((child) => idxMap.get(child)) : void 0;\n      const parent = parentMap.get(node);\n      const _parent = parent ? idxMap.get(parent) : void 0;\n      const _index = idxMap.get(node);\n      nodes.push({ ...node, _children, _parent, _index });\n    }\n  });\n  return nodes;\n}\nfunction insertOperation(index, nodes) {\n  return { type: \"insert\", index, nodes };\n}\nfunction removeOperation(indexes) {\n  return { type: \"remove\", indexes };\n}\nfunction replaceOperation() {\n  return { type: \"replace\" };\n}\nfunction splitIndexPath(indexPath) {\n  return [indexPath.slice(0, -1), indexPath[indexPath.length - 1]];\n}\nfunction getInsertionOperations(indexPath, nodes, operations = /* @__PURE__ */ new Map()) {\n  const [parentIndexPath, index] = splitIndexPath(indexPath);\n  for (let i = parentIndexPath.length - 1; i >= 0; i--) {\n    const parentKey = parentIndexPath.slice(0, i).join();\n    switch (operations.get(parentKey)?.type) {\n      case \"remove\":\n        continue;\n    }\n    operations.set(parentKey, replaceOperation());\n  }\n  const operation = operations.get(parentIndexPath.join());\n  switch (operation?.type) {\n    case \"remove\":\n      operations.set(parentIndexPath.join(), {\n        type: \"removeThenInsert\",\n        removeIndexes: operation.indexes,\n        insertIndex: index,\n        insertNodes: nodes\n      });\n      break;\n    default:\n      operations.set(parentIndexPath.join(), insertOperation(index, nodes));\n  }\n  return operations;\n}\nfunction getRemovalOperations(indexPaths) {\n  const operations = /* @__PURE__ */ new Map();\n  const indexesToRemove = /* @__PURE__ */ new Map();\n  for (const indexPath of indexPaths) {\n    const parentKey = indexPath.slice(0, -1).join();\n    const value = indexesToRemove.get(parentKey) ?? [];\n    value.push(indexPath[indexPath.length - 1]);\n    indexesToRemove.set(\n      parentKey,\n      value.sort((a, b) => a - b)\n    );\n  }\n  for (const indexPath of indexPaths) {\n    for (let i = indexPath.length - 2; i >= 0; i--) {\n      const parentKey = indexPath.slice(0, i).join();\n      if (!operations.has(parentKey)) {\n        operations.set(parentKey, replaceOperation());\n      }\n    }\n  }\n  for (const [parentKey, indexes] of indexesToRemove) {\n    operations.set(parentKey, removeOperation(indexes));\n  }\n  return operations;\n}\nfunction getReplaceOperations(indexPath, node) {\n  const operations = /* @__PURE__ */ new Map();\n  const [parentIndexPath, index] = splitIndexPath(indexPath);\n  for (let i = parentIndexPath.length - 1; i >= 0; i--) {\n    const parentKey = parentIndexPath.slice(0, i).join();\n    operations.set(parentKey, replaceOperation());\n  }\n  operations.set(parentIndexPath.join(), {\n    type: \"removeThenInsert\",\n    removeIndexes: [index],\n    insertIndex: index,\n    insertNodes: [node]\n  });\n  return operations;\n}\nfunction mutate(node, operations, options) {\n  return map(node, {\n    ...options,\n    getChildren: (node2, indexPath) => {\n      const key = indexPath.join();\n      const operation = operations.get(key);\n      switch (operation?.type) {\n        case \"replace\":\n        case \"remove\":\n        case \"removeThenInsert\":\n        case \"insert\":\n          return options.getChildren(node2, indexPath);\n        default:\n          return [];\n      }\n    },\n    transform: (node2, children, indexPath) => {\n      const key = indexPath.join();\n      const operation = operations.get(key);\n      switch (operation?.type) {\n        case \"remove\":\n          return options.create(\n            node2,\n            children.filter((_, index) => !operation.indexes.includes(index)),\n            indexPath\n          );\n        case \"removeThenInsert\":\n          const updatedChildren = children.filter((_, index) => !operation.removeIndexes.includes(index));\n          const adjustedIndex = operation.removeIndexes.reduce(\n            (index, removedIndex) => removedIndex < index ? index - 1 : index,\n            operation.insertIndex\n          );\n          return options.create(node2, splice(updatedChildren, adjustedIndex, 0, ...operation.insertNodes), indexPath);\n        case \"insert\":\n          return options.create(node2, splice(children, operation.index, 0, ...operation.nodes), indexPath);\n        case \"replace\":\n          return options.create(node2, children, indexPath);\n        default:\n          return node2;\n      }\n    }\n  });\n}\nfunction splice(array, start, deleteCount, ...items) {\n  return [...array.slice(0, start), ...items, ...array.slice(start + deleteCount)];\n}\nfunction map(node, options) {\n  const childrenMap = {};\n  visit(node, {\n    ...options,\n    onLeave: (child, indexPath) => {\n      const keyIndexPath = [0, ...indexPath];\n      const key = keyIndexPath.join();\n      const transformed = options.transform(child, childrenMap[key] ?? [], indexPath);\n      const parentKey = keyIndexPath.slice(0, -1).join();\n      const parentChildren = childrenMap[parentKey] ?? [];\n      parentChildren.push(transformed);\n      childrenMap[parentKey] = parentChildren;\n    }\n  });\n  return childrenMap[\"\"][0];\n}\nfunction insert2(node, options) {\n  const { nodes, at } = options;\n  if (at.length === 0) throw new Error(`Can't insert nodes at the root`);\n  const state = getInsertionOperations(at, nodes);\n  return mutate(node, state, options);\n}\nfunction replace(node, options) {\n  if (options.at.length === 0) return options.node;\n  const operations = getReplaceOperations(options.at, options.node);\n  return mutate(node, operations, options);\n}\nfunction remove(node, options) {\n  if (options.indexPaths.length === 0) return node;\n  for (const indexPath of options.indexPaths) {\n    if (indexPath.length === 0) throw new Error(`Can't remove the root node`);\n  }\n  const operations = getRemovalOperations(options.indexPaths);\n  return mutate(node, operations, options);\n}\nfunction move2(node, options) {\n  if (options.indexPaths.length === 0) return node;\n  for (const indexPath of options.indexPaths) {\n    if (indexPath.length === 0) throw new Error(`Can't move the root node`);\n  }\n  if (options.to.length === 0) throw new Error(`Can't move nodes to the root`);\n  const _ancestorIndexPaths = ancestorIndexPaths(options.indexPaths);\n  const nodesToInsert = _ancestorIndexPaths.map((indexPath) => access(node, indexPath, options));\n  const operations = getInsertionOperations(options.to, nodesToInsert, getRemovalOperations(_ancestorIndexPaths));\n  return mutate(node, operations, options);\n}\nfunction visit(node, options) {\n  const { onEnter, onLeave, getChildren } = options;\n  let indexPath = [];\n  let stack = [{ node }];\n  const getIndexPath = options.reuseIndexPath ? () => indexPath : () => indexPath.slice();\n  while (stack.length > 0) {\n    let wrapper = stack[stack.length - 1];\n    if (wrapper.state === void 0) {\n      const enterResult = onEnter?.(wrapper.node, getIndexPath());\n      if (enterResult === \"stop\") return;\n      wrapper.state = enterResult === \"skip\" ? -1 : 0;\n    }\n    const children = wrapper.children || getChildren(wrapper.node, getIndexPath());\n    wrapper.children || (wrapper.children = children);\n    if (wrapper.state !== -1) {\n      if (wrapper.state < children.length) {\n        let currentIndex = wrapper.state;\n        indexPath.push(currentIndex);\n        stack.push({ node: children[currentIndex] });\n        wrapper.state = currentIndex + 1;\n        continue;\n      }\n      const leaveResult = onLeave?.(wrapper.node, getIndexPath());\n      if (leaveResult === \"stop\") return;\n    }\n    indexPath.pop();\n    stack.pop();\n  }\n}\n\n// src/tree-collection.ts\nvar TreeCollection = class _TreeCollection {\n  constructor(options) {\n    this.options = options;\n    __publicField(this, \"rootNode\");\n    __publicField(this, \"isEqual\", (other) => {\n      return isEqual(this.rootNode, other.rootNode);\n    });\n    __publicField(this, \"getNodeChildren\", (node) => {\n      return this.options.nodeToChildren?.(node) ?? fallbackMethods.nodeToChildren(node) ?? [];\n    });\n    __publicField(this, \"resolveIndexPath\", (valueOrIndexPath) => {\n      return typeof valueOrIndexPath === \"string\" ? this.getIndexPath(valueOrIndexPath) : valueOrIndexPath;\n    });\n    __publicField(this, \"resolveNode\", (valueOrIndexPath) => {\n      const indexPath = this.resolveIndexPath(valueOrIndexPath);\n      return indexPath ? this.at(indexPath) : void 0;\n    });\n    __publicField(this, \"getNodeChildrenCount\", (node) => {\n      return this.options.nodeToChildrenCount?.(node) ?? fallbackMethods.nodeToChildrenCount(node);\n    });\n    __publicField(this, \"getNodeValue\", (node) => {\n      return this.options.nodeToValue?.(node) ?? fallbackMethods.nodeToValue(node);\n    });\n    __publicField(this, \"getNodeDisabled\", (node) => {\n      return this.options.isNodeDisabled?.(node) ?? fallbackMethods.isNodeDisabled(node);\n    });\n    __publicField(this, \"stringify\", (value) => {\n      const node = this.findNode(value);\n      if (!node) return null;\n      return this.stringifyNode(node);\n    });\n    __publicField(this, \"stringifyNode\", (node) => {\n      return this.options.nodeToString?.(node) ?? fallbackMethods.nodeToString(node);\n    });\n    __publicField(this, \"getFirstNode\", (rootNode = this.rootNode) => {\n      let firstChild;\n      visit(rootNode, {\n        getChildren: this.getNodeChildren,\n        onEnter: (node, indexPath) => {\n          if (!firstChild && indexPath.length > 0 && !this.getNodeDisabled(node)) {\n            firstChild = node;\n            return \"stop\";\n          }\n        }\n      });\n      return firstChild;\n    });\n    __publicField(this, \"getLastNode\", (rootNode = this.rootNode, opts = {}) => {\n      let lastChild;\n      visit(rootNode, {\n        getChildren: this.getNodeChildren,\n        onEnter: (node, indexPath) => {\n          if (this.isSameNode(node, rootNode)) return;\n          if (opts.skip?.({ value: this.getNodeValue(node), node, indexPath })) return \"skip\";\n          if (indexPath.length > 0 && !this.getNodeDisabled(node)) {\n            lastChild = node;\n          }\n        }\n      });\n      return lastChild;\n    });\n    __publicField(this, \"at\", (indexPath) => {\n      return access(this.rootNode, indexPath, {\n        getChildren: this.getNodeChildren\n      });\n    });\n    __publicField(this, \"findNode\", (value, rootNode = this.rootNode) => {\n      return find(rootNode, {\n        getChildren: this.getNodeChildren,\n        predicate: (node) => this.getNodeValue(node) === value\n      });\n    });\n    __publicField(this, \"findNodes\", (values, rootNode = this.rootNode) => {\n      const v = new Set(values.filter((v2) => v2 != null));\n      return findAll(rootNode, {\n        getChildren: this.getNodeChildren,\n        predicate: (node) => v.has(this.getNodeValue(node))\n      });\n    });\n    __publicField(this, \"sort\", (values) => {\n      return values.reduce((acc, value) => {\n        const indexPath = this.getIndexPath(value);\n        if (indexPath) acc.push({ value, indexPath });\n        return acc;\n      }, []).sort((a, b) => compareIndexPaths(a.indexPath, b.indexPath)).map(({ value }) => value);\n    });\n    __publicField(this, \"getIndexPath\", (value) => {\n      return findIndexPath(this.rootNode, {\n        getChildren: this.getNodeChildren,\n        predicate: (node) => this.getNodeValue(node) === value\n      });\n    });\n    __publicField(this, \"getValue\", (indexPath) => {\n      const node = this.at(indexPath);\n      return node ? this.getNodeValue(node) : void 0;\n    });\n    __publicField(this, \"getValuePath\", (indexPath) => {\n      if (!indexPath) return [];\n      const valuePath = [];\n      let currentPath = [...indexPath];\n      while (currentPath.length > 0) {\n        const node = this.at(currentPath);\n        if (node) valuePath.unshift(this.getNodeValue(node));\n        currentPath.pop();\n      }\n      return valuePath;\n    });\n    __publicField(this, \"getDepth\", (value) => {\n      const indexPath = findIndexPath(this.rootNode, {\n        getChildren: this.getNodeChildren,\n        predicate: (node) => this.getNodeValue(node) === value\n      });\n      return indexPath?.length ?? 0;\n    });\n    __publicField(this, \"isSameNode\", (node, other) => {\n      return this.getNodeValue(node) === this.getNodeValue(other);\n    });\n    __publicField(this, \"isRootNode\", (node) => {\n      return this.isSameNode(node, this.rootNode);\n    });\n    __publicField(this, \"contains\", (parentIndexPath, valueIndexPath) => {\n      if (!parentIndexPath || !valueIndexPath) return false;\n      return valueIndexPath.slice(0, parentIndexPath.length).every((_, i) => parentIndexPath[i] === valueIndexPath[i]);\n    });\n    __publicField(this, \"getNextNode\", (value, opts = {}) => {\n      let found = false;\n      let nextNode;\n      visit(this.rootNode, {\n        getChildren: this.getNodeChildren,\n        onEnter: (node, indexPath) => {\n          if (this.isRootNode(node)) return;\n          const nodeValue = this.getNodeValue(node);\n          if (opts.skip?.({ value: nodeValue, node, indexPath })) {\n            if (nodeValue === value) {\n              found = true;\n            }\n            return \"skip\";\n          }\n          if (found && !this.getNodeDisabled(node)) {\n            nextNode = node;\n            return \"stop\";\n          }\n          if (nodeValue === value) {\n            found = true;\n          }\n        }\n      });\n      return nextNode;\n    });\n    __publicField(this, \"getPreviousNode\", (value, opts = {}) => {\n      let previousNode;\n      let found = false;\n      visit(this.rootNode, {\n        getChildren: this.getNodeChildren,\n        onEnter: (node, indexPath) => {\n          if (this.isRootNode(node)) return;\n          const nodeValue = this.getNodeValue(node);\n          if (opts.skip?.({ value: nodeValue, node, indexPath })) {\n            return \"skip\";\n          }\n          if (nodeValue === value) {\n            found = true;\n            return \"stop\";\n          }\n          if (!this.getNodeDisabled(node)) {\n            previousNode = node;\n          }\n        }\n      });\n      return found ? previousNode : void 0;\n    });\n    __publicField(this, \"getParentNodes\", (valueOrIndexPath) => {\n      const indexPath = this.resolveIndexPath(valueOrIndexPath)?.slice();\n      if (!indexPath) return [];\n      const result = [];\n      while (indexPath.length > 0) {\n        indexPath.pop();\n        const parentNode = this.at(indexPath);\n        if (parentNode && !this.isRootNode(parentNode)) {\n          result.unshift(parentNode);\n        }\n      }\n      return result;\n    });\n    __publicField(this, \"getDescendantNodes\", (valueOrIndexPath, options) => {\n      const parentNode = this.resolveNode(valueOrIndexPath);\n      if (!parentNode) return [];\n      const result = [];\n      visit(parentNode, {\n        getChildren: this.getNodeChildren,\n        onEnter: (node, nodeIndexPath) => {\n          if (nodeIndexPath.length === 0) return;\n          if (!options?.withBranch && this.isBranchNode(node)) return;\n          result.push(node);\n        }\n      });\n      return result;\n    });\n    __publicField(this, \"getDescendantValues\", (valueOrIndexPath, options) => {\n      const children = this.getDescendantNodes(valueOrIndexPath, options);\n      return children.map((child) => this.getNodeValue(child));\n    });\n    __publicField(this, \"getParentIndexPath\", (indexPath) => {\n      return indexPath.slice(0, -1);\n    });\n    __publicField(this, \"getParentNode\", (valueOrIndexPath) => {\n      const indexPath = this.resolveIndexPath(valueOrIndexPath);\n      return indexPath ? this.at(this.getParentIndexPath(indexPath)) : void 0;\n    });\n    __publicField(this, \"visit\", (opts) => {\n      const { skip, ...rest } = opts;\n      visit(this.rootNode, {\n        ...rest,\n        getChildren: this.getNodeChildren,\n        onEnter: (node, indexPath) => {\n          if (this.isRootNode(node)) return;\n          if (skip?.({ value: this.getNodeValue(node), node, indexPath })) return \"skip\";\n          return rest.onEnter?.(node, indexPath);\n        }\n      });\n    });\n    __publicField(this, \"getPreviousSibling\", (indexPath) => {\n      const parentNode = this.getParentNode(indexPath);\n      if (!parentNode) return;\n      const siblings = this.getNodeChildren(parentNode);\n      let idx = indexPath[indexPath.length - 1];\n      while (--idx >= 0) {\n        const sibling = siblings[idx];\n        if (!this.getNodeDisabled(sibling)) return sibling;\n      }\n      return;\n    });\n    __publicField(this, \"getNextSibling\", (indexPath) => {\n      const parentNode = this.getParentNode(indexPath);\n      if (!parentNode) return;\n      const siblings = this.getNodeChildren(parentNode);\n      let idx = indexPath[indexPath.length - 1];\n      while (++idx < siblings.length) {\n        const sibling = siblings[idx];\n        if (!this.getNodeDisabled(sibling)) return sibling;\n      }\n      return;\n    });\n    __publicField(this, \"getSiblingNodes\", (indexPath) => {\n      const parentNode = this.getParentNode(indexPath);\n      return parentNode ? this.getNodeChildren(parentNode) : [];\n    });\n    __publicField(this, \"getValues\", (rootNode = this.rootNode) => {\n      const values = flatMap(rootNode, {\n        getChildren: this.getNodeChildren,\n        transform: (node) => [this.getNodeValue(node)]\n      });\n      return values.slice(1);\n    });\n    __publicField(this, \"isValidDepth\", (indexPath, depth) => {\n      if (depth == null) return true;\n      if (typeof depth === \"function\") return depth(indexPath.length);\n      return indexPath.length === depth;\n    });\n    __publicField(this, \"isBranchNode\", (node) => {\n      return this.getNodeChildren(node).length > 0 || this.getNodeChildrenCount(node) != null;\n    });\n    __publicField(this, \"getBranchValues\", (rootNode = this.rootNode, opts = {}) => {\n      let values = [];\n      visit(rootNode, {\n        getChildren: this.getNodeChildren,\n        onEnter: (node, indexPath) => {\n          if (indexPath.length === 0) return;\n          const nodeValue = this.getNodeValue(node);\n          if (opts.skip?.({ value: nodeValue, node, indexPath })) return \"skip\";\n          if (this.isBranchNode(node) && this.isValidDepth(indexPath, opts.depth)) {\n            values.push(this.getNodeValue(node));\n          }\n        }\n      });\n      return values;\n    });\n    __publicField(this, \"flatten\", (rootNode = this.rootNode) => {\n      return flatten(rootNode, { getChildren: this.getNodeChildren });\n    });\n    __publicField(this, \"_create\", (node, children) => {\n      if (this.getNodeChildren(node).length > 0 || children.length > 0) {\n        return { ...node, children };\n      }\n      return { ...node };\n    });\n    __publicField(this, \"_insert\", (rootNode, indexPath, nodes) => {\n      return this.copy(\n        insert2(rootNode, { at: indexPath, nodes, getChildren: this.getNodeChildren, create: this._create })\n      );\n    });\n    __publicField(this, \"copy\", (rootNode) => {\n      return new _TreeCollection({ ...this.options, rootNode });\n    });\n    __publicField(this, \"_replace\", (rootNode, indexPath, node) => {\n      return this.copy(\n        replace(rootNode, { at: indexPath, node, getChildren: this.getNodeChildren, create: this._create })\n      );\n    });\n    __publicField(this, \"_move\", (rootNode, indexPaths, to) => {\n      return this.copy(move2(rootNode, { indexPaths, to, getChildren: this.getNodeChildren, create: this._create }));\n    });\n    __publicField(this, \"_remove\", (rootNode, indexPaths) => {\n      return this.copy(remove(rootNode, { indexPaths, getChildren: this.getNodeChildren, create: this._create }));\n    });\n    __publicField(this, \"replace\", (indexPath, node) => {\n      return this._replace(this.rootNode, indexPath, node);\n    });\n    __publicField(this, \"remove\", (indexPaths) => {\n      return this._remove(this.rootNode, indexPaths);\n    });\n    __publicField(this, \"insertBefore\", (indexPath, nodes) => {\n      const parentNode = this.getParentNode(indexPath);\n      return parentNode ? this._insert(this.rootNode, indexPath, nodes) : void 0;\n    });\n    __publicField(this, \"insertAfter\", (indexPath, nodes) => {\n      const parentNode = this.getParentNode(indexPath);\n      if (!parentNode) return;\n      const nextIndex2 = [...indexPath.slice(0, -1), indexPath[indexPath.length - 1] + 1];\n      return this._insert(this.rootNode, nextIndex2, nodes);\n    });\n    __publicField(this, \"move\", (fromIndexPaths, toIndexPath) => {\n      return this._move(this.rootNode, fromIndexPaths, toIndexPath);\n    });\n    __publicField(this, \"filter\", (predicate) => {\n      const filteredRoot = filter(this.rootNode, {\n        predicate,\n        getChildren: this.getNodeChildren,\n        create: this._create\n      });\n      return this.copy(filteredRoot);\n    });\n    __publicField(this, \"toJSON\", () => {\n      return this.getValues(this.rootNode);\n    });\n    this.rootNode = options.rootNode;\n  }\n};\nfunction flattenedToTree(nodes, options = fallbackMethods) {\n  if (nodes.length === 0) {\n    throw new Error(\"[zag-js/tree] Cannot create tree from empty flattened array\");\n  }\n  const rootFlatNode = nodes.find((node) => node._parent === void 0);\n  if (!rootFlatNode) {\n    throw new Error(\"[zag-js/tree] No root node found in flattened data\");\n  }\n  const nodeMap = /* @__PURE__ */ new Map();\n  nodes.forEach((node) => {\n    nodeMap.set(node._index, node);\n  });\n  const buildNode = (idx) => {\n    const flatNode = nodeMap.get(idx);\n    if (!flatNode) return {};\n    const { _children, _parent, _index, ...cleanNode } = flatNode;\n    const children = [];\n    _children?.forEach((childIndex) => {\n      children.push(buildNode(childIndex));\n    });\n    return {\n      ...cleanNode,\n      ...children.length > 0 && { children }\n    };\n  };\n  const rootNode = buildNode(rootFlatNode._index);\n  return new TreeCollection({ ...options, rootNode });\n}\nfunction filePathToTree(paths) {\n  const rootNode = {\n    label: \"\",\n    value: \"ROOT\",\n    children: []\n  };\n  paths.forEach((path) => {\n    const parts = path.split(\"/\");\n    let currentNode = rootNode;\n    parts.forEach((part, index) => {\n      let childNode = currentNode.children?.find((child) => child.label === part);\n      if (!childNode) {\n        childNode = {\n          value: parts.slice(0, index + 1).join(\"/\"),\n          label: part\n        };\n        currentNode.children || (currentNode.children = []);\n        currentNode.children.push(childNode);\n      }\n      currentNode = childNode;\n    });\n  });\n  return new TreeCollection({ rootNode });\n}\nvar fallbackMethods = {\n  nodeToValue(node) {\n    if (typeof node === \"string\") return node;\n    if (isObject(node) && hasProp(node, \"value\")) return node.value;\n    return \"\";\n  },\n  nodeToString(node) {\n    if (typeof node === \"string\") return node;\n    if (isObject(node) && hasProp(node, \"label\")) return node.label;\n    return fallbackMethods.nodeToValue(node);\n  },\n  isNodeDisabled(node) {\n    if (isObject(node) && hasProp(node, \"disabled\")) return !!node.disabled;\n    return false;\n  },\n  nodeToChildren(node) {\n    return node.children;\n  },\n  nodeToChildrenCount(node) {\n    if (isObject(node) && hasProp(node, \"childrenCount\")) return node.childrenCount;\n  }\n};\n\nexport { GridCollection, ListCollection, Selection, TreeCollection, filePathToTree, flattenedToTree, isGridCollection, isListCollection };\n", "import { createAnatomy } from '@zag-js/anatomy';\nimport { ListCollection } from '@zag-js/collection';\nimport { raf, setCaretToEnd, nextTick, scrollIntoView, observeAttributes, clickIfLink, query, dataAttr, ariaAttr, isDownloadingEvent, isOpeningInNewTab, isContextMenuEvent, isLeftClick, getEventKey, isComposingEvent, isAnchorElement } from '@zag-js/dom-query';\nimport { getPlacement, getPlacementStyles } from '@zag-js/popper';\nimport { match, remove, addOrRemove, isBoolean, isEqual, createSplitProps, ensure } from '@zag-js/utils';\nimport { setup } from '@zag-js/core';\nimport { trackDismissableElement } from '@zag-js/dismissable';\nimport { createProps } from '@zag-js/types';\n\n// src/combobox.anatomy.ts\nvar anatomy = createAnatomy(\"combobox\").parts(\n  \"root\",\n  \"clearTrigger\",\n  \"content\",\n  \"control\",\n  \"input\",\n  \"item\",\n  \"itemGroup\",\n  \"itemGroupLabel\",\n  \"itemIndicator\",\n  \"itemText\",\n  \"label\",\n  \"list\",\n  \"positioner\",\n  \"trigger\"\n);\nvar parts = anatomy.build();\nvar collection = (options) => {\n  return new ListCollection(options);\n};\ncollection.empty = () => {\n  return new ListCollection({ items: [] });\n};\nvar getRootId = (ctx) => ctx.ids?.root ?? `combobox:${ctx.id}`;\nvar getLabelId = (ctx) => ctx.ids?.label ?? `combobox:${ctx.id}:label`;\nvar getControlId = (ctx) => ctx.ids?.control ?? `combobox:${ctx.id}:control`;\nvar getInputId = (ctx) => ctx.ids?.input ?? `combobox:${ctx.id}:input`;\nvar getContentId = (ctx) => ctx.ids?.content ?? `combobox:${ctx.id}:content`;\nvar getPositionerId = (ctx) => ctx.ids?.positioner ?? `combobox:${ctx.id}:popper`;\nvar getTriggerId = (ctx) => ctx.ids?.trigger ?? `combobox:${ctx.id}:toggle-btn`;\nvar getClearTriggerId = (ctx) => ctx.ids?.clearTrigger ?? `combobox:${ctx.id}:clear-btn`;\nvar getItemGroupId = (ctx, id) => ctx.ids?.itemGroup?.(id) ?? `combobox:${ctx.id}:optgroup:${id}`;\nvar getItemGroupLabelId = (ctx, id) => ctx.ids?.itemGroupLabel?.(id) ?? `combobox:${ctx.id}:optgroup-label:${id}`;\nvar getItemId = (ctx, id) => ctx.ids?.item?.(id) ?? `combobox:${ctx.id}:option:${id}`;\nvar getContentEl = (ctx) => ctx.getById(getContentId(ctx));\nvar getInputEl = (ctx) => ctx.getById(getInputId(ctx));\nvar getPositionerEl = (ctx) => ctx.getById(getPositionerId(ctx));\nvar getControlEl = (ctx) => ctx.getById(getControlId(ctx));\nvar getTriggerEl = (ctx) => ctx.getById(getTriggerId(ctx));\nvar getClearTriggerEl = (ctx) => ctx.getById(getClearTriggerId(ctx));\nvar getItemEl = (ctx, value) => {\n  if (value == null) return null;\n  const selector = `[role=option][data-value=\"${CSS.escape(value)}\"]`;\n  return query(getContentEl(ctx), selector);\n};\nvar focusInputEl = (ctx) => {\n  const inputEl = getInputEl(ctx);\n  if (ctx.isActiveElement(inputEl)) return;\n  inputEl?.focus({ preventScroll: true });\n};\nvar focusTriggerEl = (ctx) => {\n  const triggerEl = getTriggerEl(ctx);\n  if (ctx.isActiveElement(triggerEl)) return;\n  triggerEl?.focus({ preventScroll: true });\n};\n\n// src/combobox.connect.ts\nfunction connect(service, normalize) {\n  const { context, prop, state, send, scope, computed, event } = service;\n  const translations = prop(\"translations\");\n  const collection2 = prop(\"collection\");\n  const disabled = !!prop(\"disabled\");\n  const interactive = computed(\"isInteractive\");\n  const invalid = !!prop(\"invalid\");\n  const required = !!prop(\"required\");\n  const readOnly = !!prop(\"readOnly\");\n  const open = state.hasTag(\"open\");\n  const focused = state.hasTag(\"focused\");\n  const composite = prop(\"composite\");\n  const highlightedValue = context.get(\"highlightedValue\");\n  const popperStyles = getPlacementStyles({\n    ...prop(\"positioning\"),\n    placement: context.get(\"currentPlacement\")\n  });\n  function getItemState(props2) {\n    const disabled2 = collection2.getItemDisabled(props2.item);\n    const value = collection2.getItemValue(props2.item);\n    ensure(value, () => `[zag-js] No value found for item ${JSON.stringify(props2.item)}`);\n    return {\n      value,\n      disabled: Boolean(disabled2 || disabled2),\n      highlighted: highlightedValue === value,\n      selected: context.get(\"value\").includes(value)\n    };\n  }\n  return {\n    focused,\n    open,\n    inputValue: context.get(\"inputValue\"),\n    highlightedValue,\n    highlightedItem: context.get(\"highlightedItem\"),\n    value: context.get(\"value\"),\n    valueAsString: computed(\"valueAsString\"),\n    hasSelectedItems: computed(\"hasSelectedItems\"),\n    selectedItems: context.get(\"selectedItems\"),\n    collection: prop(\"collection\"),\n    multiple: !!prop(\"multiple\"),\n    disabled: !!disabled,\n    syncSelectedItems() {\n      send({ type: \"SELECTED_ITEMS.SYNC\" });\n    },\n    reposition(options = {}) {\n      send({ type: \"POSITIONING.SET\", options });\n    },\n    setHighlightValue(value) {\n      send({ type: \"HIGHLIGHTED_VALUE.SET\", value });\n    },\n    clearHighlightValue() {\n      send({ type: \"HIGHLIGHTED_VALUE.CLEAR\" });\n    },\n    selectValue(value) {\n      send({ type: \"ITEM.SELECT\", value });\n    },\n    setValue(value) {\n      send({ type: \"VALUE.SET\", value });\n    },\n    setInputValue(value, reason = \"script\") {\n      send({ type: \"INPUT_VALUE.SET\", value, src: reason });\n    },\n    clearValue(value) {\n      if (value != null) {\n        send({ type: \"ITEM.CLEAR\", value });\n      } else {\n        send({ type: \"VALUE.CLEAR\" });\n      }\n    },\n    focus() {\n      getInputEl(scope)?.focus();\n    },\n    setOpen(nextOpen, reason = \"script\") {\n      const open2 = state.hasTag(\"open\");\n      if (open2 === nextOpen) return;\n      send({ type: nextOpen ? \"OPEN\" : \"CLOSE\", src: reason });\n    },\n    getRootProps() {\n      return normalize.element({\n        ...parts.root.attrs,\n        dir: prop(\"dir\"),\n        id: getRootId(scope),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-readonly\": dataAttr(readOnly)\n      });\n    },\n    getLabelProps() {\n      return normalize.label({\n        ...parts.label.attrs,\n        dir: prop(\"dir\"),\n        htmlFor: getInputId(scope),\n        id: getLabelId(scope),\n        \"data-readonly\": dataAttr(readOnly),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-required\": dataAttr(required),\n        \"data-focus\": dataAttr(focused),\n        onClick(event2) {\n          if (composite) return;\n          event2.preventDefault();\n          getTriggerEl(scope)?.focus({ preventScroll: true });\n        }\n      });\n    },\n    getControlProps() {\n      return normalize.element({\n        ...parts.control.attrs,\n        dir: prop(\"dir\"),\n        id: getControlId(scope),\n        \"data-state\": open ? \"open\" : \"closed\",\n        \"data-focus\": dataAttr(focused),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-invalid\": dataAttr(invalid)\n      });\n    },\n    getPositionerProps() {\n      return normalize.element({\n        ...parts.positioner.attrs,\n        dir: prop(\"dir\"),\n        id: getPositionerId(scope),\n        style: popperStyles.floating\n      });\n    },\n    getInputProps() {\n      return normalize.input({\n        ...parts.input.attrs,\n        dir: prop(\"dir\"),\n        \"aria-invalid\": ariaAttr(invalid),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-autofocus\": dataAttr(prop(\"autoFocus\")),\n        name: prop(\"name\"),\n        form: prop(\"form\"),\n        disabled,\n        required: prop(\"required\"),\n        autoComplete: \"off\",\n        autoCorrect: \"off\",\n        autoCapitalize: \"none\",\n        spellCheck: \"false\",\n        readOnly,\n        placeholder: prop(\"placeholder\"),\n        id: getInputId(scope),\n        type: \"text\",\n        role: \"combobox\",\n        defaultValue: context.get(\"inputValue\"),\n        \"aria-autocomplete\": computed(\"autoComplete\") ? \"both\" : \"list\",\n        \"aria-controls\": getContentId(scope),\n        \"aria-expanded\": open,\n        \"data-state\": open ? \"open\" : \"closed\",\n        \"aria-activedescendant\": highlightedValue ? getItemId(scope, highlightedValue) : void 0,\n        onClick(event2) {\n          if (event2.defaultPrevented) return;\n          if (!prop(\"openOnClick\")) return;\n          if (!interactive) return;\n          send({ type: \"INPUT.CLICK\", src: \"input-click\" });\n        },\n        onFocus() {\n          if (disabled) return;\n          send({ type: \"INPUT.FOCUS\" });\n        },\n        onBlur() {\n          if (disabled) return;\n          send({ type: \"INPUT.BLUR\" });\n        },\n        onChange(event2) {\n          send({ type: \"INPUT.CHANGE\", value: event2.currentTarget.value, src: \"input-change\" });\n        },\n        onKeyDown(event2) {\n          if (event2.defaultPrevented) return;\n          if (!interactive) return;\n          if (event2.ctrlKey || event2.shiftKey || isComposingEvent(event2)) return;\n          const openOnKeyPress = prop(\"openOnKeyPress\");\n          const isModifierKey = event2.ctrlKey || event2.metaKey || event2.shiftKey;\n          const keypress = true;\n          const keymap = {\n            ArrowDown(event3) {\n              if (!openOnKeyPress && !open) return;\n              send({ type: event3.altKey ? \"OPEN\" : \"INPUT.ARROW_DOWN\", keypress, src: \"arrow-key\" });\n              event3.preventDefault();\n            },\n            ArrowUp() {\n              if (!openOnKeyPress && !open) return;\n              send({ type: event2.altKey ? \"CLOSE\" : \"INPUT.ARROW_UP\", keypress, src: \"arrow-key\" });\n              event2.preventDefault();\n            },\n            Home(event3) {\n              if (isModifierKey) return;\n              send({ type: \"INPUT.HOME\", keypress });\n              if (open) {\n                event3.preventDefault();\n              }\n            },\n            End(event3) {\n              if (isModifierKey) return;\n              send({ type: \"INPUT.END\", keypress });\n              if (open) {\n                event3.preventDefault();\n              }\n            },\n            Enter(event3) {\n              send({ type: \"INPUT.ENTER\", keypress, src: \"item-select\" });\n              const submittable = computed(\"isCustomValue\") && prop(\"allowCustomValue\");\n              const hasHighlight = highlightedValue != null;\n              const alwaysSubmit = prop(\"alwaysSubmitOnEnter\");\n              if (open && !submittable && !alwaysSubmit && hasHighlight) {\n                event3.preventDefault();\n              }\n              if (highlightedValue == null) return;\n              const itemEl = getItemEl(scope, highlightedValue);\n              if (isAnchorElement(itemEl)) {\n                prop(\"navigate\")?.({ value: highlightedValue, node: itemEl, href: itemEl.href });\n              }\n            },\n            Escape() {\n              send({ type: \"INPUT.ESCAPE\", keypress, src: \"escape-key\" });\n              event2.preventDefault();\n            }\n          };\n          const key = getEventKey(event2, { dir: prop(\"dir\") });\n          const exec = keymap[key];\n          exec?.(event2);\n        }\n      });\n    },\n    getTriggerProps(props2 = {}) {\n      return normalize.button({\n        ...parts.trigger.attrs,\n        dir: prop(\"dir\"),\n        id: getTriggerId(scope),\n        \"aria-haspopup\": composite ? \"listbox\" : \"dialog\",\n        type: \"button\",\n        tabIndex: props2.focusable ? void 0 : -1,\n        \"aria-label\": translations.triggerLabel,\n        \"aria-expanded\": open,\n        \"data-state\": open ? \"open\" : \"closed\",\n        \"aria-controls\": open ? getContentId(scope) : void 0,\n        disabled,\n        \"data-invalid\": dataAttr(invalid),\n        \"data-focusable\": dataAttr(props2.focusable),\n        \"data-readonly\": dataAttr(readOnly),\n        \"data-disabled\": dataAttr(disabled),\n        onFocus() {\n          if (!props2.focusable) return;\n          send({ type: \"INPUT.FOCUS\", src: \"trigger\" });\n        },\n        onClick(event2) {\n          if (event2.defaultPrevented) return;\n          if (!interactive) return;\n          if (!isLeftClick(event2)) return;\n          send({ type: \"TRIGGER.CLICK\", src: \"trigger-click\" });\n        },\n        onPointerDown(event2) {\n          if (!interactive) return;\n          if (event2.pointerType === \"touch\") return;\n          if (!isLeftClick(event2)) return;\n          event2.preventDefault();\n          queueMicrotask(() => {\n            getInputEl(scope)?.focus({ preventScroll: true });\n          });\n        },\n        onKeyDown(event2) {\n          if (event2.defaultPrevented) return;\n          if (composite) return;\n          const keyMap = {\n            ArrowDown() {\n              send({ type: \"INPUT.ARROW_DOWN\", src: \"arrow-key\" });\n            },\n            ArrowUp() {\n              send({ type: \"INPUT.ARROW_UP\", src: \"arrow-key\" });\n            }\n          };\n          const key = getEventKey(event2, { dir: prop(\"dir\") });\n          const exec = keyMap[key];\n          if (exec) {\n            exec(event2);\n            event2.preventDefault();\n          }\n        }\n      });\n    },\n    getContentProps() {\n      return normalize.element({\n        ...parts.content.attrs,\n        dir: prop(\"dir\"),\n        id: getContentId(scope),\n        role: !composite ? \"dialog\" : \"listbox\",\n        tabIndex: -1,\n        hidden: !open,\n        \"data-state\": open ? \"open\" : \"closed\",\n        \"data-placement\": context.get(\"currentPlacement\"),\n        \"aria-labelledby\": getLabelId(scope),\n        \"aria-multiselectable\": prop(\"multiple\") && composite ? true : void 0,\n        \"data-empty\": dataAttr(collection2.size === 0),\n        onPointerDown(event2) {\n          if (!isLeftClick(event2)) return;\n          event2.preventDefault();\n        }\n      });\n    },\n    getListProps() {\n      return normalize.element({\n        ...parts.list.attrs,\n        role: !composite ? \"listbox\" : void 0,\n        \"data-empty\": dataAttr(collection2.size === 0),\n        \"aria-labelledby\": getLabelId(scope),\n        \"aria-multiselectable\": prop(\"multiple\") && !composite ? true : void 0\n      });\n    },\n    getClearTriggerProps() {\n      return normalize.button({\n        ...parts.clearTrigger.attrs,\n        dir: prop(\"dir\"),\n        id: getClearTriggerId(scope),\n        type: \"button\",\n        tabIndex: -1,\n        disabled,\n        \"data-invalid\": dataAttr(invalid),\n        \"aria-label\": translations.clearTriggerLabel,\n        \"aria-controls\": getInputId(scope),\n        hidden: !context.get(\"value\").length,\n        onPointerDown(event2) {\n          if (!isLeftClick(event2)) return;\n          event2.preventDefault();\n        },\n        onClick(event2) {\n          if (event2.defaultPrevented) return;\n          if (!interactive) return;\n          send({ type: \"VALUE.CLEAR\", src: \"clear-trigger\" });\n        }\n      });\n    },\n    getItemState,\n    getItemProps(props2) {\n      const itemState = getItemState(props2);\n      const value = itemState.value;\n      return normalize.element({\n        ...parts.item.attrs,\n        dir: prop(\"dir\"),\n        id: getItemId(scope, value),\n        role: \"option\",\n        tabIndex: -1,\n        \"data-highlighted\": dataAttr(itemState.highlighted),\n        \"data-state\": itemState.selected ? \"checked\" : \"unchecked\",\n        \"aria-selected\": ariaAttr(itemState.highlighted),\n        \"aria-disabled\": ariaAttr(itemState.disabled),\n        \"data-disabled\": dataAttr(itemState.disabled),\n        \"data-value\": itemState.value,\n        onPointerMove() {\n          if (itemState.disabled) return;\n          if (itemState.highlighted) return;\n          send({ type: \"ITEM.POINTER_MOVE\", value });\n        },\n        onPointerLeave() {\n          if (props2.persistFocus) return;\n          if (itemState.disabled) return;\n          const prev = event.previous();\n          const mouseMoved = prev?.type.includes(\"POINTER\");\n          if (!mouseMoved) return;\n          send({ type: \"ITEM.POINTER_LEAVE\", value });\n        },\n        onClick(event2) {\n          if (isDownloadingEvent(event2)) return;\n          if (isOpeningInNewTab(event2)) return;\n          if (isContextMenuEvent(event2)) return;\n          if (itemState.disabled) return;\n          send({ type: \"ITEM.CLICK\", src: \"item-select\", value });\n        }\n      });\n    },\n    getItemTextProps(props2) {\n      const itemState = getItemState(props2);\n      return normalize.element({\n        ...parts.itemText.attrs,\n        dir: prop(\"dir\"),\n        \"data-state\": itemState.selected ? \"checked\" : \"unchecked\",\n        \"data-disabled\": dataAttr(itemState.disabled),\n        \"data-highlighted\": dataAttr(itemState.highlighted)\n      });\n    },\n    getItemIndicatorProps(props2) {\n      const itemState = getItemState(props2);\n      return normalize.element({\n        \"aria-hidden\": true,\n        ...parts.itemIndicator.attrs,\n        dir: prop(\"dir\"),\n        \"data-state\": itemState.selected ? \"checked\" : \"unchecked\",\n        hidden: !itemState.selected\n      });\n    },\n    getItemGroupProps(props2) {\n      const { id } = props2;\n      return normalize.element({\n        ...parts.itemGroup.attrs,\n        dir: prop(\"dir\"),\n        id: getItemGroupId(scope, id),\n        \"aria-labelledby\": getItemGroupLabelId(scope, id),\n        \"data-empty\": dataAttr(collection2.size === 0),\n        role: \"group\"\n      });\n    },\n    getItemGroupLabelProps(props2) {\n      const { htmlFor } = props2;\n      return normalize.element({\n        ...parts.itemGroupLabel.attrs,\n        dir: prop(\"dir\"),\n        id: getItemGroupLabelId(scope, htmlFor),\n        role: \"presentation\"\n      });\n    }\n  };\n}\nvar { guards, createMachine, choose } = setup();\nvar { and, not } = guards;\nvar machine = createMachine({\n  props({ props: props2 }) {\n    return {\n      loopFocus: true,\n      openOnClick: false,\n      defaultValue: [],\n      defaultInputValue: \"\",\n      closeOnSelect: !props2.multiple,\n      allowCustomValue: false,\n      alwaysSubmitOnEnter: false,\n      inputBehavior: \"none\",\n      selectionBehavior: props2.multiple ? \"clear\" : \"replace\",\n      openOnKeyPress: true,\n      openOnChange: true,\n      composite: true,\n      navigate({ node }) {\n        clickIfLink(node);\n      },\n      collection: collection.empty(),\n      ...props2,\n      positioning: {\n        placement: \"bottom\",\n        sameWidth: true,\n        ...props2.positioning\n      },\n      translations: {\n        triggerLabel: \"Toggle suggestions\",\n        clearTriggerLabel: \"Clear value\",\n        ...props2.translations\n      }\n    };\n  },\n  initialState({ prop }) {\n    const open = prop(\"open\") || prop(\"defaultOpen\");\n    return open ? \"suggesting\" : \"idle\";\n  },\n  context({ prop, bindable, getContext, getEvent }) {\n    return {\n      currentPlacement: bindable(() => ({\n        defaultValue: void 0\n      })),\n      value: bindable(() => ({\n        defaultValue: prop(\"defaultValue\"),\n        value: prop(\"value\"),\n        isEqual,\n        hash(value) {\n          return value.join(\",\");\n        },\n        onChange(value) {\n          const context = getContext();\n          const prevSelectedItems = context.get(\"selectedItems\");\n          const collection2 = prop(\"collection\");\n          const nextItems = value.map((v) => {\n            const item = prevSelectedItems.find((item2) => collection2.getItemValue(item2) === v);\n            return item || collection2.find(v);\n          });\n          context.set(\"selectedItems\", nextItems);\n          prop(\"onValueChange\")?.({ value, items: nextItems });\n        }\n      })),\n      highlightedValue: bindable(() => ({\n        defaultValue: prop(\"defaultHighlightedValue\") || null,\n        value: prop(\"highlightedValue\"),\n        onChange(value) {\n          const item = prop(\"collection\").find(value);\n          prop(\"onHighlightChange\")?.({ highlightedValue: value, highlightedItem: item });\n        }\n      })),\n      inputValue: bindable(() => {\n        let inputValue = prop(\"inputValue\") || prop(\"defaultInputValue\");\n        const value = prop(\"value\") || prop(\"defaultValue\");\n        if (!inputValue.trim() && !prop(\"multiple\")) {\n          const valueAsString = prop(\"collection\").stringifyMany(value);\n          inputValue = match(prop(\"selectionBehavior\"), {\n            preserve: inputValue || valueAsString,\n            replace: valueAsString,\n            clear: \"\"\n          });\n        }\n        return {\n          defaultValue: inputValue,\n          value: prop(\"inputValue\"),\n          onChange(value2) {\n            const event = getEvent();\n            const reason = (event.previousEvent || event).src;\n            prop(\"onInputValueChange\")?.({ inputValue: value2, reason });\n          }\n        };\n      }),\n      highlightedItem: bindable(() => {\n        const highlightedValue = prop(\"highlightedValue\");\n        const highlightedItem = prop(\"collection\").find(highlightedValue);\n        return { defaultValue: highlightedItem };\n      }),\n      selectedItems: bindable(() => {\n        const value = prop(\"value\") || prop(\"defaultValue\") || [];\n        const selectedItems = prop(\"collection\").findMany(value);\n        return { defaultValue: selectedItems };\n      })\n    };\n  },\n  computed: {\n    isInputValueEmpty: ({ context }) => context.get(\"inputValue\").length === 0,\n    isInteractive: ({ prop }) => !(prop(\"readOnly\") || prop(\"disabled\")),\n    autoComplete: ({ prop }) => prop(\"inputBehavior\") === \"autocomplete\",\n    autoHighlight: ({ prop }) => prop(\"inputBehavior\") === \"autohighlight\",\n    hasSelectedItems: ({ context }) => context.get(\"value\").length > 0,\n    valueAsString: ({ context, prop }) => prop(\"collection\").stringifyItems(context.get(\"selectedItems\")),\n    isCustomValue: ({ context, computed }) => context.get(\"inputValue\") !== computed(\"valueAsString\")\n  },\n  watch({ context, prop, track, action, send }) {\n    track([() => context.hash(\"value\")], () => {\n      action([\"syncSelectedItems\"]);\n    });\n    track([() => context.get(\"inputValue\")], () => {\n      action([\"syncInputValue\"]);\n    });\n    track([() => context.get(\"highlightedValue\")], () => {\n      action([\"syncHighlightedItem\", \"autofillInputValue\"]);\n    });\n    track([() => prop(\"open\")], () => {\n      action([\"toggleVisibility\"]);\n    });\n    track([() => prop(\"collection\").toString()], () => {\n      send({ type: \"CHILDREN_CHANGE\" });\n    });\n  },\n  on: {\n    \"SELECTED_ITEMS.SYNC\": {\n      actions: [\"syncSelectedItems\"]\n    },\n    \"HIGHLIGHTED_VALUE.SET\": {\n      actions: [\"setHighlightedValue\"]\n    },\n    \"HIGHLIGHTED_VALUE.CLEAR\": {\n      actions: [\"clearHighlightedValue\"]\n    },\n    \"ITEM.SELECT\": {\n      actions: [\"selectItem\"]\n    },\n    \"ITEM.CLEAR\": {\n      actions: [\"clearItem\"]\n    },\n    \"VALUE.SET\": {\n      actions: [\"setValue\"]\n    },\n    \"INPUT_VALUE.SET\": {\n      actions: [\"setInputValue\"]\n    },\n    \"POSITIONING.SET\": {\n      actions: [\"reposition\"]\n    }\n  },\n  entry: choose([\n    {\n      guard: \"autoFocus\",\n      actions: [\"setInitialFocus\"]\n    }\n  ]),\n  states: {\n    idle: {\n      tags: [\"idle\", \"closed\"],\n      entry: [\"scrollContentToTop\", \"clearHighlightedValue\"],\n      on: {\n        \"CONTROLLED.OPEN\": {\n          target: \"interacting\"\n        },\n        \"TRIGGER.CLICK\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"setInitialFocus\", \"highlightFirstSelectedItem\", \"invokeOnOpen\"]\n          },\n          {\n            target: \"interacting\",\n            actions: [\"setInitialFocus\", \"highlightFirstSelectedItem\", \"invokeOnOpen\"]\n          }\n        ],\n        \"INPUT.CLICK\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"highlightFirstSelectedItem\", \"invokeOnOpen\"]\n          },\n          {\n            target: \"interacting\",\n            actions: [\"highlightFirstSelectedItem\", \"invokeOnOpen\"]\n          }\n        ],\n        \"INPUT.FOCUS\": {\n          target: \"focused\"\n        },\n        OPEN: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"interacting\",\n            actions: [\"invokeOnOpen\"]\n          }\n        ],\n        \"VALUE.CLEAR\": {\n          target: \"focused\",\n          actions: [\"clearInputValue\", \"clearSelectedItems\", \"setInitialFocus\"]\n        }\n      }\n    },\n    focused: {\n      tags: [\"focused\", \"closed\"],\n      entry: [\"scrollContentToTop\", \"clearHighlightedValue\"],\n      on: {\n        \"CONTROLLED.OPEN\": [\n          {\n            guard: \"isChangeEvent\",\n            target: \"suggesting\"\n          },\n          {\n            target: \"interacting\"\n          }\n        ],\n        \"INPUT.CHANGE\": [\n          {\n            guard: and(\"isOpenControlled\", \"openOnChange\"),\n            actions: [\"setInputValue\", \"invokeOnOpen\", \"highlightFirstItemIfNeeded\"]\n          },\n          {\n            guard: \"openOnChange\",\n            target: \"suggesting\",\n            actions: [\"setInputValue\", \"invokeOnOpen\", \"highlightFirstItemIfNeeded\"]\n          },\n          {\n            actions: [\"setInputValue\"]\n          }\n        ],\n        \"LAYER.INTERACT_OUTSIDE\": {\n          target: \"idle\"\n        },\n        \"INPUT.ESCAPE\": {\n          guard: and(\"isCustomValue\", not(\"allowCustomValue\")),\n          actions: [\"revertInputValue\"]\n        },\n        \"INPUT.BLUR\": {\n          target: \"idle\"\n        },\n        \"INPUT.CLICK\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"highlightFirstSelectedItem\", \"invokeOnOpen\"]\n          },\n          {\n            target: \"interacting\",\n            actions: [\"highlightFirstSelectedItem\", \"invokeOnOpen\"]\n          }\n        ],\n        \"TRIGGER.CLICK\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"setInitialFocus\", \"highlightFirstSelectedItem\", \"invokeOnOpen\"]\n          },\n          {\n            target: \"interacting\",\n            actions: [\"setInitialFocus\", \"highlightFirstSelectedItem\", \"invokeOnOpen\"]\n          }\n        ],\n        \"INPUT.ARROW_DOWN\": [\n          // == group 1 ==\n          {\n            guard: and(\"isOpenControlled\", \"autoComplete\"),\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            guard: \"autoComplete\",\n            target: \"interacting\",\n            actions: [\"invokeOnOpen\"]\n          },\n          // == group 2 ==\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"highlightFirstOrSelectedItem\", \"invokeOnOpen\"]\n          },\n          {\n            target: \"interacting\",\n            actions: [\"highlightFirstOrSelectedItem\", \"invokeOnOpen\"]\n          }\n        ],\n        \"INPUT.ARROW_UP\": [\n          // == group 1 ==\n          {\n            guard: \"autoComplete\",\n            target: \"interacting\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            guard: \"autoComplete\",\n            target: \"interacting\",\n            actions: [\"invokeOnOpen\"]\n          },\n          // == group 2 ==\n          {\n            target: \"interacting\",\n            actions: [\"highlightLastOrSelectedItem\", \"invokeOnOpen\"]\n          },\n          {\n            target: \"interacting\",\n            actions: [\"highlightLastOrSelectedItem\", \"invokeOnOpen\"]\n          }\n        ],\n        OPEN: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"interacting\",\n            actions: [\"invokeOnOpen\"]\n          }\n        ],\n        \"VALUE.CLEAR\": {\n          actions: [\"clearInputValue\", \"clearSelectedItems\"]\n        }\n      }\n    },\n    interacting: {\n      tags: [\"open\", \"focused\"],\n      entry: [\"setInitialFocus\"],\n      effects: [\"scrollToHighlightedItem\", \"trackDismissableLayer\", \"trackPlacement\"],\n      on: {\n        \"CONTROLLED.CLOSE\": [\n          {\n            guard: \"restoreFocus\",\n            target: \"focused\",\n            actions: [\"setFinalFocus\"]\n          },\n          {\n            target: \"idle\"\n          }\n        ],\n        CHILDREN_CHANGE: [\n          {\n            guard: \"isHighlightedItemRemoved\",\n            actions: [\"clearHighlightedValue\"]\n          },\n          {\n            actions: [\"scrollToHighlightedItem\"]\n          }\n        ],\n        \"INPUT.HOME\": {\n          actions: [\"highlightFirstItem\"]\n        },\n        \"INPUT.END\": {\n          actions: [\"highlightLastItem\"]\n        },\n        \"INPUT.ARROW_DOWN\": [\n          {\n            guard: and(\"autoComplete\", \"isLastItemHighlighted\"),\n            actions: [\"clearHighlightedValue\", \"scrollContentToTop\"]\n          },\n          {\n            actions: [\"highlightNextItem\"]\n          }\n        ],\n        \"INPUT.ARROW_UP\": [\n          {\n            guard: and(\"autoComplete\", \"isFirstItemHighlighted\"),\n            actions: [\"clearHighlightedValue\"]\n          },\n          {\n            actions: [\"highlightPrevItem\"]\n          }\n        ],\n        \"INPUT.ENTER\": [\n          // == group 1 ==\n          {\n            guard: and(\"isOpenControlled\", \"isCustomValue\", not(\"hasHighlightedItem\"), not(\"allowCustomValue\")),\n            actions: [\"revertInputValue\", \"invokeOnClose\"]\n          },\n          {\n            guard: and(\"isCustomValue\", not(\"hasHighlightedItem\"), not(\"allowCustomValue\")),\n            target: \"focused\",\n            actions: [\"revertInputValue\", \"invokeOnClose\"]\n          },\n          // == group 2 ==\n          {\n            guard: and(\"isOpenControlled\", \"closeOnSelect\"),\n            actions: [\"selectHighlightedItem\", \"invokeOnClose\"]\n          },\n          {\n            guard: \"closeOnSelect\",\n            target: \"focused\",\n            actions: [\"selectHighlightedItem\", \"invokeOnClose\", \"setFinalFocus\"]\n          },\n          {\n            actions: [\"selectHighlightedItem\"]\n          }\n        ],\n        \"INPUT.CHANGE\": [\n          {\n            guard: \"autoComplete\",\n            target: \"suggesting\",\n            actions: [\"setInputValue\"]\n          },\n          {\n            target: \"suggesting\",\n            actions: [\"clearHighlightedValue\", \"setInputValue\"]\n          }\n        ],\n        \"ITEM.POINTER_MOVE\": {\n          actions: [\"setHighlightedValue\"]\n        },\n        \"ITEM.POINTER_LEAVE\": {\n          actions: [\"clearHighlightedValue\"]\n        },\n        \"ITEM.CLICK\": [\n          {\n            guard: and(\"isOpenControlled\", \"closeOnSelect\"),\n            actions: [\"selectItem\", \"invokeOnClose\"]\n          },\n          {\n            guard: \"closeOnSelect\",\n            target: \"focused\",\n            actions: [\"selectItem\", \"invokeOnClose\", \"setFinalFocus\"]\n          },\n          {\n            actions: [\"selectItem\"]\n          }\n        ],\n        \"LAYER.ESCAPE\": [\n          {\n            guard: and(\"isOpenControlled\", \"autoComplete\"),\n            actions: [\"syncInputValue\", \"invokeOnClose\"]\n          },\n          {\n            guard: \"autoComplete\",\n            target: \"focused\",\n            actions: [\"syncInputValue\", \"invokeOnClose\"]\n          },\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            target: \"focused\",\n            actions: [\"invokeOnClose\", \"setFinalFocus\"]\n          }\n        ],\n        \"TRIGGER.CLICK\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            target: \"focused\",\n            actions: [\"invokeOnClose\"]\n          }\n        ],\n        \"LAYER.INTERACT_OUTSIDE\": [\n          // == group 1 ==\n          {\n            guard: and(\"isOpenControlled\", \"isCustomValue\", not(\"allowCustomValue\")),\n            actions: [\"revertInputValue\", \"invokeOnClose\"]\n          },\n          {\n            guard: and(\"isCustomValue\", not(\"allowCustomValue\")),\n            target: \"idle\",\n            actions: [\"revertInputValue\", \"invokeOnClose\"]\n          },\n          // == group 2 ==\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            target: \"idle\",\n            actions: [\"invokeOnClose\"]\n          }\n        ],\n        CLOSE: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            target: \"focused\",\n            actions: [\"invokeOnClose\", \"setFinalFocus\"]\n          }\n        ],\n        \"VALUE.CLEAR\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"clearInputValue\", \"clearSelectedItems\", \"invokeOnClose\"]\n          },\n          {\n            target: \"focused\",\n            actions: [\"clearInputValue\", \"clearSelectedItems\", \"invokeOnClose\", \"setFinalFocus\"]\n          }\n        ]\n      }\n    },\n    suggesting: {\n      tags: [\"open\", \"focused\"],\n      effects: [\"trackDismissableLayer\", \"scrollToHighlightedItem\", \"trackPlacement\"],\n      entry: [\"setInitialFocus\"],\n      on: {\n        \"CONTROLLED.CLOSE\": [\n          {\n            guard: \"restoreFocus\",\n            target: \"focused\",\n            actions: [\"setFinalFocus\"]\n          },\n          {\n            target: \"idle\"\n          }\n        ],\n        CHILDREN_CHANGE: [\n          {\n            guard: and(\"isHighlightedItemRemoved\", \"hasCollectionItems\", \"autoHighlight\"),\n            actions: [\"clearHighlightedValue\", \"highlightFirstItem\"]\n          },\n          {\n            guard: \"isHighlightedItemRemoved\",\n            actions: [\"clearHighlightedValue\"]\n          },\n          {\n            guard: \"autoHighlight\",\n            actions: [\"highlightFirstItem\"]\n          }\n        ],\n        \"INPUT.ARROW_DOWN\": {\n          target: \"interacting\",\n          actions: [\"highlightNextItem\"]\n        },\n        \"INPUT.ARROW_UP\": {\n          target: \"interacting\",\n          actions: [\"highlightPrevItem\"]\n        },\n        \"INPUT.HOME\": {\n          target: \"interacting\",\n          actions: [\"highlightFirstItem\"]\n        },\n        \"INPUT.END\": {\n          target: \"interacting\",\n          actions: [\"highlightLastItem\"]\n        },\n        \"INPUT.ENTER\": [\n          // == group 1 ==\n          {\n            guard: and(\"isOpenControlled\", \"isCustomValue\", not(\"hasHighlightedItem\"), not(\"allowCustomValue\")),\n            actions: [\"revertInputValue\", \"invokeOnClose\"]\n          },\n          {\n            guard: and(\"isCustomValue\", not(\"hasHighlightedItem\"), not(\"allowCustomValue\")),\n            target: \"focused\",\n            actions: [\"revertInputValue\", \"invokeOnClose\"]\n          },\n          // == group 2 ==\n          {\n            guard: and(\"isOpenControlled\", \"closeOnSelect\"),\n            actions: [\"selectHighlightedItem\", \"invokeOnClose\"]\n          },\n          {\n            guard: \"closeOnSelect\",\n            target: \"focused\",\n            actions: [\"selectHighlightedItem\", \"invokeOnClose\", \"setFinalFocus\"]\n          },\n          {\n            actions: [\"selectHighlightedItem\"]\n          }\n        ],\n        \"INPUT.CHANGE\": {\n          actions: [\"setInputValue\"]\n        },\n        \"LAYER.ESCAPE\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            target: \"focused\",\n            actions: [\"invokeOnClose\"]\n          }\n        ],\n        \"ITEM.POINTER_MOVE\": {\n          target: \"interacting\",\n          actions: [\"setHighlightedValue\"]\n        },\n        \"ITEM.POINTER_LEAVE\": {\n          actions: [\"clearHighlightedValue\"]\n        },\n        \"LAYER.INTERACT_OUTSIDE\": [\n          // == group 1 ==\n          {\n            guard: and(\"isOpenControlled\", \"isCustomValue\", not(\"allowCustomValue\")),\n            actions: [\"revertInputValue\", \"invokeOnClose\"]\n          },\n          {\n            guard: and(\"isCustomValue\", not(\"allowCustomValue\")),\n            target: \"idle\",\n            actions: [\"revertInputValue\", \"invokeOnClose\"]\n          },\n          // == group 2 ==\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            target: \"idle\",\n            actions: [\"invokeOnClose\"]\n          }\n        ],\n        \"TRIGGER.CLICK\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            target: \"focused\",\n            actions: [\"invokeOnClose\"]\n          }\n        ],\n        \"ITEM.CLICK\": [\n          {\n            guard: and(\"isOpenControlled\", \"closeOnSelect\"),\n            actions: [\"selectItem\", \"invokeOnClose\"]\n          },\n          {\n            guard: \"closeOnSelect\",\n            target: \"focused\",\n            actions: [\"selectItem\", \"invokeOnClose\", \"setFinalFocus\"]\n          },\n          {\n            actions: [\"selectItem\"]\n          }\n        ],\n        CLOSE: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            target: \"focused\",\n            actions: [\"invokeOnClose\", \"setFinalFocus\"]\n          }\n        ],\n        \"VALUE.CLEAR\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"clearInputValue\", \"clearSelectedItems\", \"invokeOnClose\"]\n          },\n          {\n            target: \"focused\",\n            actions: [\"clearInputValue\", \"clearSelectedItems\", \"invokeOnClose\", \"setFinalFocus\"]\n          }\n        ]\n      }\n    }\n  },\n  implementations: {\n    guards: {\n      isInputValueEmpty: ({ computed }) => computed(\"isInputValueEmpty\"),\n      autoComplete: ({ computed, prop }) => computed(\"autoComplete\") && !prop(\"multiple\"),\n      autoHighlight: ({ computed }) => computed(\"autoHighlight\"),\n      isFirstItemHighlighted: ({ prop, context }) => prop(\"collection\").firstValue === context.get(\"highlightedValue\"),\n      isLastItemHighlighted: ({ prop, context }) => prop(\"collection\").lastValue === context.get(\"highlightedValue\"),\n      isCustomValue: ({ computed }) => computed(\"isCustomValue\"),\n      allowCustomValue: ({ prop }) => !!prop(\"allowCustomValue\"),\n      hasHighlightedItem: ({ context }) => context.get(\"highlightedValue\") != null,\n      closeOnSelect: ({ prop }) => !!prop(\"closeOnSelect\"),\n      isOpenControlled: ({ prop }) => prop(\"open\") != null,\n      openOnChange: ({ prop, context }) => {\n        const openOnChange = prop(\"openOnChange\");\n        if (isBoolean(openOnChange)) return openOnChange;\n        return !!openOnChange?.({ inputValue: context.get(\"inputValue\") });\n      },\n      restoreFocus: ({ event }) => {\n        const restoreFocus = event.restoreFocus ?? event.previousEvent?.restoreFocus;\n        return restoreFocus == null ? true : !!restoreFocus;\n      },\n      isChangeEvent: ({ event }) => event.previousEvent?.type === \"INPUT.CHANGE\",\n      autoFocus: ({ prop }) => !!prop(\"autoFocus\"),\n      isHighlightedItemRemoved: ({ prop, context }) => !prop(\"collection\").has(context.get(\"highlightedValue\")),\n      hasCollectionItems: ({ prop }) => prop(\"collection\").size > 0\n    },\n    effects: {\n      trackDismissableLayer({ send, prop, scope }) {\n        if (prop(\"disableLayer\")) return;\n        const contentEl = () => getContentEl(scope);\n        return trackDismissableElement(contentEl, {\n          type: \"listbox\",\n          defer: true,\n          exclude: () => [getInputEl(scope), getTriggerEl(scope), getClearTriggerEl(scope)],\n          onFocusOutside: prop(\"onFocusOutside\"),\n          onPointerDownOutside: prop(\"onPointerDownOutside\"),\n          onInteractOutside: prop(\"onInteractOutside\"),\n          onEscapeKeyDown(event) {\n            event.preventDefault();\n            event.stopPropagation();\n            send({ type: \"LAYER.ESCAPE\", src: \"escape-key\" });\n          },\n          onDismiss() {\n            send({ type: \"LAYER.INTERACT_OUTSIDE\", src: \"interact-outside\", restoreFocus: false });\n          }\n        });\n      },\n      trackPlacement({ context, prop, scope }) {\n        const anchorEl = () => getControlEl(scope) || getTriggerEl(scope);\n        const positionerEl = () => getPositionerEl(scope);\n        context.set(\"currentPlacement\", prop(\"positioning\").placement);\n        return getPlacement(anchorEl, positionerEl, {\n          ...prop(\"positioning\"),\n          defer: true,\n          onComplete(data) {\n            context.set(\"currentPlacement\", data.placement);\n          }\n        });\n      },\n      scrollToHighlightedItem({ context, prop, scope, event }) {\n        const inputEl = getInputEl(scope);\n        let cleanups = [];\n        const exec = (immediate) => {\n          const pointer = event.current().type.includes(\"POINTER\");\n          const highlightedValue = context.get(\"highlightedValue\");\n          if (pointer || !highlightedValue) return;\n          const contentEl = getContentEl(scope);\n          const scrollToIndexFn = prop(\"scrollToIndexFn\");\n          if (scrollToIndexFn) {\n            const highlightedIndex = prop(\"collection\").indexOf(highlightedValue);\n            scrollToIndexFn({\n              index: highlightedIndex,\n              immediate,\n              getElement: () => getItemEl(scope, highlightedValue)\n            });\n            return;\n          }\n          const itemEl = getItemEl(scope, highlightedValue);\n          const raf_cleanup = raf(() => {\n            scrollIntoView(itemEl, { rootEl: contentEl, block: \"nearest\" });\n          });\n          cleanups.push(raf_cleanup);\n        };\n        const rafCleanup = raf(() => exec(true));\n        cleanups.push(rafCleanup);\n        const observerCleanup = observeAttributes(inputEl, {\n          attributes: [\"aria-activedescendant\"],\n          callback: () => exec(false)\n        });\n        cleanups.push(observerCleanup);\n        return () => {\n          cleanups.forEach((cleanup) => cleanup());\n        };\n      }\n    },\n    actions: {\n      reposition({ context, prop, scope, event }) {\n        const controlEl = () => getControlEl(scope);\n        const positionerEl = () => getPositionerEl(scope);\n        getPlacement(controlEl, positionerEl, {\n          ...prop(\"positioning\"),\n          ...event.options,\n          defer: true,\n          listeners: false,\n          onComplete(data) {\n            context.set(\"currentPlacement\", data.placement);\n          }\n        });\n      },\n      setHighlightedValue({ context, event }) {\n        if (event.value == null) return;\n        context.set(\"highlightedValue\", event.value);\n      },\n      clearHighlightedValue({ context }) {\n        context.set(\"highlightedValue\", null);\n      },\n      selectHighlightedItem(params) {\n        const { context, prop } = params;\n        const collection2 = prop(\"collection\");\n        const highlightedValue = context.get(\"highlightedValue\");\n        if (!highlightedValue || !collection2.has(highlightedValue)) return;\n        const nextValue = prop(\"multiple\") ? addOrRemove(context.get(\"value\"), highlightedValue) : [highlightedValue];\n        prop(\"onSelect\")?.({ value: nextValue, itemValue: highlightedValue });\n        context.set(\"value\", nextValue);\n        const inputValue = match(prop(\"selectionBehavior\"), {\n          preserve: context.get(\"inputValue\"),\n          replace: collection2.stringifyMany(nextValue),\n          clear: \"\"\n        });\n        context.set(\"inputValue\", inputValue);\n      },\n      scrollToHighlightedItem({ context, prop, scope }) {\n        nextTick(() => {\n          const highlightedValue = context.get(\"highlightedValue\");\n          if (highlightedValue == null) return;\n          const itemEl = getItemEl(scope, highlightedValue);\n          const contentEl = getContentEl(scope);\n          const scrollToIndexFn = prop(\"scrollToIndexFn\");\n          if (scrollToIndexFn) {\n            const highlightedIndex = prop(\"collection\").indexOf(highlightedValue);\n            scrollToIndexFn({\n              index: highlightedIndex,\n              immediate: true,\n              getElement: () => getItemEl(scope, highlightedValue)\n            });\n            return;\n          }\n          scrollIntoView(itemEl, { rootEl: contentEl, block: \"nearest\" });\n        });\n      },\n      selectItem(params) {\n        const { context, event, flush, prop } = params;\n        if (event.value == null) return;\n        flush(() => {\n          const nextValue = prop(\"multiple\") ? addOrRemove(context.get(\"value\"), event.value) : [event.value];\n          prop(\"onSelect\")?.({ value: nextValue, itemValue: event.value });\n          context.set(\"value\", nextValue);\n          const inputValue = match(prop(\"selectionBehavior\"), {\n            preserve: context.get(\"inputValue\"),\n            replace: prop(\"collection\").stringifyMany(nextValue),\n            clear: \"\"\n          });\n          context.set(\"inputValue\", inputValue);\n        });\n      },\n      clearItem(params) {\n        const { context, event, flush, prop } = params;\n        if (event.value == null) return;\n        flush(() => {\n          const nextValue = remove(context.get(\"value\"), event.value);\n          context.set(\"value\", nextValue);\n          const inputValue = match(prop(\"selectionBehavior\"), {\n            preserve: context.get(\"inputValue\"),\n            replace: prop(\"collection\").stringifyMany(nextValue),\n            clear: \"\"\n          });\n          context.set(\"inputValue\", inputValue);\n        });\n      },\n      setInitialFocus({ scope }) {\n        raf(() => {\n          focusInputEl(scope);\n        });\n      },\n      setFinalFocus({ scope }) {\n        raf(() => {\n          const triggerEl = getTriggerEl(scope);\n          if (triggerEl?.dataset.focusable == null) {\n            focusInputEl(scope);\n          } else {\n            focusTriggerEl(scope);\n          }\n        });\n      },\n      syncInputValue({ context, scope, event }) {\n        const inputEl = getInputEl(scope);\n        if (!inputEl) return;\n        inputEl.value = context.get(\"inputValue\");\n        queueMicrotask(() => {\n          if (event.current().type === \"INPUT.CHANGE\") return;\n          setCaretToEnd(inputEl);\n        });\n      },\n      setInputValue({ context, event }) {\n        context.set(\"inputValue\", event.value);\n      },\n      clearInputValue({ context }) {\n        context.set(\"inputValue\", \"\");\n      },\n      revertInputValue({ context, prop, computed }) {\n        const selectionBehavior = prop(\"selectionBehavior\");\n        const inputValue = match(selectionBehavior, {\n          replace: computed(\"hasSelectedItems\") ? computed(\"valueAsString\") : \"\",\n          preserve: context.get(\"inputValue\"),\n          clear: \"\"\n        });\n        context.set(\"inputValue\", inputValue);\n      },\n      setValue(params) {\n        const { context, flush, event, prop } = params;\n        flush(() => {\n          context.set(\"value\", event.value);\n          const inputValue = match(prop(\"selectionBehavior\"), {\n            preserve: context.get(\"inputValue\"),\n            replace: prop(\"collection\").stringifyMany(event.value),\n            clear: \"\"\n          });\n          context.set(\"inputValue\", inputValue);\n        });\n      },\n      clearSelectedItems(params) {\n        const { context, flush, prop } = params;\n        flush(() => {\n          context.set(\"value\", []);\n          const inputValue = match(prop(\"selectionBehavior\"), {\n            preserve: context.get(\"inputValue\"),\n            replace: prop(\"collection\").stringifyMany([]),\n            clear: \"\"\n          });\n          context.set(\"inputValue\", inputValue);\n        });\n      },\n      scrollContentToTop({ prop, scope }) {\n        const scrollToIndexFn = prop(\"scrollToIndexFn\");\n        if (scrollToIndexFn) {\n          const firstValue = prop(\"collection\").firstValue;\n          scrollToIndexFn({\n            index: 0,\n            immediate: true,\n            getElement: () => getItemEl(scope, firstValue)\n          });\n        } else {\n          const contentEl = getContentEl(scope);\n          if (!contentEl) return;\n          contentEl.scrollTop = 0;\n        }\n      },\n      invokeOnOpen({ prop, event, context }) {\n        const reason = getOpenChangeReason(event);\n        prop(\"onOpenChange\")?.({ open: true, reason, value: context.get(\"value\") });\n      },\n      invokeOnClose({ prop, event, context }) {\n        const reason = getOpenChangeReason(event);\n        prop(\"onOpenChange\")?.({ open: false, reason, value: context.get(\"value\") });\n      },\n      highlightFirstItem({ context, prop, scope }) {\n        const exec = getContentEl(scope) ? queueMicrotask : raf;\n        exec(() => {\n          const value = prop(\"collection\").firstValue;\n          if (value) context.set(\"highlightedValue\", value);\n        });\n      },\n      highlightFirstItemIfNeeded({ computed, action }) {\n        if (!computed(\"autoHighlight\")) return;\n        action([\"highlightFirstItem\"]);\n      },\n      highlightLastItem({ context, prop, scope }) {\n        const exec = getContentEl(scope) ? queueMicrotask : raf;\n        exec(() => {\n          const value = prop(\"collection\").lastValue;\n          if (value) context.set(\"highlightedValue\", value);\n        });\n      },\n      highlightNextItem({ context, prop }) {\n        let value = null;\n        const highlightedValue = context.get(\"highlightedValue\");\n        const collection2 = prop(\"collection\");\n        if (highlightedValue) {\n          value = collection2.getNextValue(highlightedValue);\n          if (!value && prop(\"loopFocus\")) value = collection2.firstValue;\n        } else {\n          value = collection2.firstValue;\n        }\n        if (value) context.set(\"highlightedValue\", value);\n      },\n      highlightPrevItem({ context, prop }) {\n        let value = null;\n        const highlightedValue = context.get(\"highlightedValue\");\n        const collection2 = prop(\"collection\");\n        if (highlightedValue) {\n          value = collection2.getPreviousValue(highlightedValue);\n          if (!value && prop(\"loopFocus\")) value = collection2.lastValue;\n        } else {\n          value = collection2.lastValue;\n        }\n        if (value) context.set(\"highlightedValue\", value);\n      },\n      highlightFirstSelectedItem({ context, prop }) {\n        raf(() => {\n          const [value] = prop(\"collection\").sort(context.get(\"value\"));\n          if (value) context.set(\"highlightedValue\", value);\n        });\n      },\n      highlightFirstOrSelectedItem({ context, prop, computed }) {\n        raf(() => {\n          let value = null;\n          if (computed(\"hasSelectedItems\")) {\n            value = prop(\"collection\").sort(context.get(\"value\"))[0];\n          } else {\n            value = prop(\"collection\").firstValue;\n          }\n          if (value) context.set(\"highlightedValue\", value);\n        });\n      },\n      highlightLastOrSelectedItem({ context, prop, computed }) {\n        raf(() => {\n          const collection2 = prop(\"collection\");\n          let value = null;\n          if (computed(\"hasSelectedItems\")) {\n            value = collection2.sort(context.get(\"value\"))[0];\n          } else {\n            value = collection2.lastValue;\n          }\n          if (value) context.set(\"highlightedValue\", value);\n        });\n      },\n      autofillInputValue({ context, computed, prop, event, scope }) {\n        const inputEl = getInputEl(scope);\n        const collection2 = prop(\"collection\");\n        if (!computed(\"autoComplete\") || !inputEl || !event.keypress) return;\n        const valueText = collection2.stringify(context.get(\"highlightedValue\"));\n        raf(() => {\n          inputEl.value = valueText || context.get(\"inputValue\");\n        });\n      },\n      syncSelectedItems(params) {\n        queueMicrotask(() => {\n          const { context, prop } = params;\n          const collection2 = prop(\"collection\");\n          const value = context.get(\"value\");\n          const selectedItems = value.map((v) => {\n            const item = context.get(\"selectedItems\").find((item2) => collection2.getItemValue(item2) === v);\n            return item || collection2.find(v);\n          });\n          context.set(\"selectedItems\", selectedItems);\n          const inputValue = match(prop(\"selectionBehavior\"), {\n            preserve: context.get(\"inputValue\"),\n            replace: collection2.stringifyMany(value),\n            clear: \"\"\n          });\n          context.set(\"inputValue\", inputValue);\n        });\n      },\n      syncHighlightedItem({ context, prop }) {\n        const item = prop(\"collection\").find(context.get(\"highlightedValue\"));\n        context.set(\"highlightedItem\", item);\n      },\n      toggleVisibility({ event, send, prop }) {\n        send({ type: prop(\"open\") ? \"CONTROLLED.OPEN\" : \"CONTROLLED.CLOSE\", previousEvent: event });\n      }\n    }\n  }\n});\nfunction getOpenChangeReason(event) {\n  return (event.previousEvent || event).src;\n}\nvar props = createProps()([\n  \"allowCustomValue\",\n  \"autoFocus\",\n  \"closeOnSelect\",\n  \"collection\",\n  \"composite\",\n  \"defaultHighlightedValue\",\n  \"defaultInputValue\",\n  \"defaultOpen\",\n  \"defaultValue\",\n  \"dir\",\n  \"disabled\",\n  \"disableLayer\",\n  \"form\",\n  \"getRootNode\",\n  \"highlightedValue\",\n  \"id\",\n  \"ids\",\n  \"inputBehavior\",\n  \"inputValue\",\n  \"invalid\",\n  \"loopFocus\",\n  \"multiple\",\n  \"name\",\n  \"navigate\",\n  \"onFocusOutside\",\n  \"onHighlightChange\",\n  \"onInputValueChange\",\n  \"onInteractOutside\",\n  \"onOpenChange\",\n  \"onOpenChange\",\n  \"onPointerDownOutside\",\n  \"onSelect\",\n  \"onValueChange\",\n  \"open\",\n  \"openOnChange\",\n  \"openOnClick\",\n  \"openOnKeyPress\",\n  \"placeholder\",\n  \"positioning\",\n  \"readOnly\",\n  \"required\",\n  \"scrollToIndexFn\",\n  \"selectionBehavior\",\n  \"translations\",\n  \"value\",\n  \"alwaysSubmitOnEnter\"\n]);\nvar splitProps = createSplitProps(props);\nvar itemGroupLabelProps = createProps()([\"htmlFor\"]);\nvar splitItemGroupLabelProps = createSplitProps(itemGroupLabelProps);\nvar itemGroupProps = createProps()([\"id\"]);\nvar splitItemGroupProps = createSplitProps(itemGroupProps);\nvar itemProps = createProps()([\"item\", \"persistFocus\"]);\nvar splitItemProps = createSplitProps(itemProps);\n\nexport { anatomy, collection, connect, itemGroupLabelProps, itemGroupProps, itemProps, machine, props, splitItemGroupLabelProps, splitItemGroupProps, splitItemProps, splitProps };\n", "import { getWindow } from '@zag-js/dom-query';\n\n// src/cache.ts\nfunction i18nCache(Ins) {\n  const formatterCache = /* @__PURE__ */ new Map();\n  return function create(locale, options) {\n    const cacheKey = locale + (options ? Object.entries(options).sort((a, b) => a[0] < b[0] ? -1 : 1).join() : \"\");\n    if (formatterCache.has(cacheKey)) {\n      return formatterCache.get(cacheKey);\n    }\n    let formatter = new Ins(locale, options);\n    formatterCache.set(cacheKey, formatter);\n    return formatter;\n  };\n}\n\n// src/collator.ts\nvar getCollator = i18nCache(Intl.Collator);\nfunction createCollator(locale = \"en-US\", options = {}) {\n  return getCollator(locale, options);\n}\n\n// src/filter.ts\nvar collatorCache = i18nCache(Intl.Collator);\nfunction createFilter(options) {\n  const { locale, ...rest } = options || {};\n  const collator = collatorCache(locale || \"en-US\", { usage: \"search\", ...rest });\n  function normalize(string) {\n    string = string.normalize(\"NFC\");\n    if (collator.resolvedOptions().ignorePunctuation) {\n      string = string.replace(/\\p{P}/gu, \"\");\n    }\n    return string;\n  }\n  function startsWith(string, substring) {\n    if (substring.length === 0) return true;\n    string = normalize(string);\n    substring = normalize(substring);\n    return collator.compare(string.slice(0, substring.length), substring) === 0;\n  }\n  function endsWith(string, substring) {\n    if (substring.length === 0) return true;\n    string = normalize(string);\n    substring = normalize(substring);\n    return collator.compare(string.slice(-substring.length), substring) === 0;\n  }\n  function contains(string, substring) {\n    if (substring.length === 0) return true;\n    string = normalize(string);\n    substring = normalize(substring);\n    let scan = 0;\n    let sliceLen = substring.length;\n    for (; scan + sliceLen <= string.length; scan++) {\n      let slice = string.slice(scan, scan + sliceLen);\n      if (collator.compare(substring, slice) === 0) {\n        return true;\n      }\n    }\n    return false;\n  }\n  return {\n    startsWith,\n    endsWith,\n    contains\n  };\n}\n\n// src/format-number.ts\nvar getNumberFormatter = i18nCache(Intl.NumberFormat);\nfunction formatNumber(v, locale, options = {}) {\n  const formatter = getNumberFormatter(locale, options);\n  return formatter.format(v);\n}\n\n// src/format-bytes.ts\nvar bitPrefixes = [\"\", \"kilo\", \"mega\", \"giga\", \"tera\"];\nvar bytePrefixes = [\"\", \"kilo\", \"mega\", \"giga\", \"tera\", \"peta\"];\nvar formatBytes = (bytes, locale = \"en-US\", options = {}) => {\n  if (Number.isNaN(bytes)) return \"\";\n  if (bytes === 0) return \"0 B\";\n  const { unitSystem = \"decimal\", precision = 3, unit = \"byte\", unitDisplay = \"short\" } = options;\n  const factor = unitSystem === \"binary\" ? 1024 : 1e3;\n  const prefix = unit === \"bit\" ? bitPrefixes : bytePrefixes;\n  const isNegative = bytes < 0;\n  const absoluteBytes = Math.abs(bytes);\n  let value = absoluteBytes;\n  let index = 0;\n  while (value >= factor && index < prefix.length - 1) {\n    value /= factor;\n    index++;\n  }\n  const v = parseFloat(value.toPrecision(precision));\n  const finalValue = isNegative ? -v : v;\n  return formatNumber(finalValue, locale, {\n    style: \"unit\",\n    unit: prefix[index] + unit,\n    unitDisplay\n  });\n};\n\n// src/format-date.ts\nvar symbols = \"\\\\s|\\\\.|-|/|\\\\\\\\|,|\\\\$|\\\\!|\\\\?|:|;\";\nfunction createRegEx(sign) {\n  return new RegExp(\"(^|>|\" + symbols + \")(\" + sign + \")($|<|\" + symbols + \")\", \"g\");\n}\nvar FORMATS = [\n  \"G\",\n  \"GG\",\n  \"GGG\",\n  \"GGGG\",\n  \"GGGGG\",\n  \"y\",\n  \"yo\",\n  \"yy\",\n  \"yyy\",\n  \"yyyy\",\n  \"Y\",\n  \"Yo\",\n  \"YY\",\n  \"YYY\",\n  \"YYYY\",\n  \"Q\",\n  \"Qo\",\n  \"QQ\",\n  \"QQQ\",\n  \"QQQQ\",\n  \"QQQQQ\",\n  \"M\",\n  \"Mo\",\n  \"MM\",\n  \"MMM\",\n  \"MMMM\",\n  \"MMMMM\",\n  \"E\",\n  \"EE\",\n  \"EEE\",\n  \"EEEE\",\n  \"EEEEE\",\n  \"EEEEEE\",\n  \"a\",\n  \"aa\",\n  \"aaa\",\n  \"aaaa\",\n  \"aaaaa\",\n  \"d\",\n  \"do\",\n  \"dd\",\n  \"D\",\n  \"Do\",\n  \"DD\",\n  \"DDD\",\n  \"w\",\n  \"wo\",\n  \"ww\",\n  \"s\",\n  \"so\",\n  \"ss\",\n  \"m\",\n  \"mo\",\n  \"mm\",\n  \"h\",\n  \"ho\",\n  \"hh\",\n  \"H\",\n  \"Ho\",\n  \"HH\",\n  \"z\",\n  \"zz\",\n  \"zzz\",\n  \"zzzz\",\n  \"T\"\n];\nfunction ordinal(num) {\n  const n = typeof num === \"string\" ? parseFloat(num) : num;\n  let suffix = \"th\";\n  if (n % 10 === 1 && n % 100 !== 11) {\n    suffix = \"st\";\n  } else if (n % 10 === 2 && n % 100 !== 12) {\n    suffix = \"nd\";\n  } else if (n % 10 === 3 && n % 100 !== 13) {\n    suffix = \"rd\";\n  }\n  return `${n}${suffix}`;\n}\nfunction pad(num, length) {\n  return String(num).padStart(length, \"0\");\n}\nfunction zone(str) {\n  return str.split(/AM|PM/)[1].trim();\n}\nfunction getFormat(date, options) {\n  const { locale, format, timeZone } = options;\n  switch (format) {\n    // era\n    case \"G\":\n    case \"GG\":\n    case \"GGG\":\n      return date.toLocaleString(locale, { era: \"short\" });\n    case \"GGGG\":\n      return date.toLocaleString(locale, { era: \"long\" });\n    case \"GGGGG\":\n      return date.toLocaleString(locale, { era: \"narrow\" });\n    // year\n    case \"y\":\n    case \"Y\":\n      return date.getFullYear();\n    case \"yo\":\n    case \"Yo\":\n      return ordinal(date.toLocaleString(locale, { year: \"numeric\" }));\n    case \"yy\":\n    case \"YY\":\n      return date.toLocaleString(locale, { year: \"2-digit\" });\n    case \"yyy\":\n    case \"YYY\":\n      return date.toLocaleString(locale, { year: \"numeric\" }).padStart(3, \"0\");\n    case \"yyyy\":\n    case \"YYYY\":\n      return date.toLocaleString(locale, { year: \"numeric\" }).padStart(4, \"0\");\n    // quarter\n    case \"Q\":\n    case \"QQQQQ\":\n      return Math.ceil((date.getMonth() + 1) / 3);\n    case \"Qo\":\n      return ordinal(Math.ceil((date.getMonth() + 1) / 3));\n    case \"QQ\":\n      return pad(Math.ceil((date.getMonth() + 1) / 3), 2);\n    case \"QQQ\":\n      return `Q${Math.ceil((date.getMonth() + 1) / 3)}`;\n    case \"QQQQ\": {\n      const base = ordinal(String(Math.ceil((date.getMonth() + 1) / 3)));\n      return `${base} quarter`;\n    }\n    // month\n    case \"M\":\n      return date.getMonth() + 1;\n    case \"Mo\":\n      return ordinal(date.getMonth() + 1);\n    case \"MM\":\n      return date.toLocaleString(locale, { month: \"2-digit\" });\n    case \"MMM\":\n      return date.toLocaleString(locale, { month: \"short\" });\n    case \"MMMM\":\n      return date.toLocaleString(locale, { month: \"long\" });\n    case \"MMMMM\":\n      return date.toLocaleString(locale, { month: \"narrow\" });\n    // week\n    case \"w\":\n      return Math.ceil(date.getDate() / 7);\n    case \"wo\":\n      return ordinal(Math.ceil(date.getDate() / 7));\n    case \"ww\":\n      return pad(Math.ceil(date.getDate() / 7), 2);\n    // day\n    case \"d\":\n    case \"D\":\n      return date.getDate();\n    case \"do\":\n    case \"Do\":\n      return ordinal(date.getDate());\n    case \"dd\":\n    case \"DD\":\n      return date.toLocaleString(locale, { day: \"2-digit\" });\n    case \"DDD\":\n      return pad(date.getDate(), 3);\n    // weekday\n    case \"E\":\n    case \"EE\":\n    case \"EEE\":\n      return date.toLocaleString(locale, { weekday: \"short\" });\n    case \"EEEE\":\n      return date.toLocaleString(locale, { weekday: \"long\" });\n    case \"EEEEE\":\n      return date.toLocaleString(locale, { weekday: \"narrow\" });\n    case \"EEEEEE\":\n      return date.toLocaleString(locale, { weekday: \"short\" }).slice(0, 2);\n    // hour\n    case \"h\":\n      return date.toLocaleString(locale, { hour: \"numeric\", hour12: true });\n    case \"ho\":\n      return ordinal(date.toLocaleString(locale, { hour: \"2-digit\", hour12: true }));\n    case \"hh\":\n      return date.toLocaleString(locale, { hour: \"2-digit\", hour12: true });\n    case \"H\":\n      return date.toLocaleString(locale, { hour: \"numeric\", hour12: false });\n    case \"Ho\":\n      return ordinal(+date.toLocaleString(locale, { hour: \"numeric\", hour12: false }));\n    case \"HH\":\n      return date.toLocaleString(locale, { hour: \"2-digit\", hour12: false });\n    // minute\n    case \"m\":\n      return date.toLocaleString(locale, { minute: \"numeric\" });\n    case \"mo\":\n      return ordinal(date.toLocaleString(locale, { minute: \"numeric\" }));\n    case \"mm\":\n      return date.toLocaleString(locale, { minute: \"2-digit\" });\n    // second\n    case \"s\":\n      return date.toLocaleString(locale, { second: \"numeric\" });\n    case \"so\":\n      return ordinal(date.toLocaleString(locale, { second: \"numeric\" }));\n    case \"ss\":\n      return date.toLocaleString(locale, { second: \"2-digit\" });\n    // timestamp\n    case \"T\":\n      return date.getTime();\n    // day period\n    case \"a\":\n    case \"aa\":\n    case \"aaa\":\n      return date.toLocaleString(locale, { hour: \"numeric\", hour12: true }).toLocaleUpperCase();\n    case \"aaaa\":\n      return date.toLocaleString(locale, { hour: \"numeric\", hour12: true }).toLocaleLowerCase();\n    case \"aaaaa\":\n      return date.toLocaleString(locale, { hour: \"numeric\", hour12: true }).charAt(0);\n    // TODO:Revise this\n    case \"z\":\n    case \"zz\":\n    case \"zzz\": {\n      return zone(date.toLocaleString(locale, { timeZone, timeZoneName: \"shortOffset\" }));\n    }\n    case \"zzzz\":\n      return zone(date.toLocaleString(locale, { timeZone, timeZoneName: \"longOffset\" }));\n    default:\n      throw new Error(`Unknown format: ${format}`);\n  }\n}\nfunction formatDate(date, format, locale, timeZone) {\n  let result = format;\n  for (const key of FORMATS) {\n    const res = getFormat(date, { locale, format: key, timeZone });\n    result = result.replace(createRegEx(key), \"$1\" + res + \"$3\");\n  }\n  return result;\n}\n\n// src/format-list.ts\nvar getListFormatter = i18nCache(Intl.ListFormat);\nfunction formatList(list, locale, options = {}) {\n  const formatter = getListFormatter(locale, options);\n  return formatter.format(list);\n}\n\n// src/format-relative-time.ts\nvar getRelativeTimeFormatter = i18nCache(Intl.RelativeTimeFormat);\nfunction formatRelativeTime(value, locale, options = {}) {\n  const rtf = getRelativeTimeFormatter(locale, options);\n  const now = /* @__PURE__ */ new Date();\n  const diff = getDistance(now, value);\n  if (diff.years > 0) return rtf.format(diff.years * diff.sign, \"year\");\n  if (diff.months > 0) return rtf.format(diff.months * diff.sign, \"month\");\n  if (diff.weeks > 0) return rtf.format(diff.weeks * diff.sign, \"week\");\n  if (diff.days > 0) return rtf.format(diff.days * diff.sign, \"day\");\n  if (diff.hours > 0) return rtf.format(diff.hours * diff.sign, \"hour\");\n  if (diff.minutes > 0) return rtf.format(diff.minutes * diff.sign, \"minute\");\n  return rtf.format(diff.seconds * diff.sign, \"second\");\n}\nvar SECOND_TO_MS = 1e3;\nvar MINUTE_TO_MS = 1e3 * 60;\nvar HOUR_TO_MS = 1e3 * 60 * 60;\nvar DAY_TO_MS = 1e3 * 60 * 60 * 24;\nvar WEEK_TO_MS = 1e3 * 60 * 60 * 24 * 7;\nvar MONTH_TO_MS = 1e3 * 60 * 60 * 24 * 30;\nvar YEAR_TO_MS = 1e3 * 60 * 60 * 24 * 365;\nfunction getDistance(startDate, endDate) {\n  const endTime = endDate.getTime();\n  const startTime = startDate.getTime();\n  const distance = Math.abs(endTime - startTime);\n  return {\n    sign: Math.sign(endTime - startTime),\n    days: Math.floor(distance / DAY_TO_MS),\n    hours: Math.floor(distance % DAY_TO_MS / HOUR_TO_MS),\n    minutes: Math.floor(distance % HOUR_TO_MS / MINUTE_TO_MS),\n    seconds: Math.floor(distance % MINUTE_TO_MS / SECOND_TO_MS),\n    weeks: Math.floor(distance / WEEK_TO_MS),\n    months: Math.floor(distance / MONTH_TO_MS),\n    years: Math.floor(distance / YEAR_TO_MS)\n  };\n}\n\n// src/is-rtl.ts\nvar RTL_SCRIPTS = /* @__PURE__ */ new Set([\n  \"Avst\",\n  \"Arab\",\n  \"Armi\",\n  \"Syrc\",\n  \"Samr\",\n  \"Mand\",\n  \"Thaa\",\n  \"Mend\",\n  \"Nkoo\",\n  \"Adlm\",\n  \"Rohg\",\n  \"Hebr\"\n]);\nvar RTL_LANGS = /* @__PURE__ */ new Set([\n  \"ae\",\n  \"ar\",\n  \"arc\",\n  \"bcc\",\n  \"bqi\",\n  \"ckb\",\n  \"dv\",\n  \"fa\",\n  \"glk\",\n  \"he\",\n  \"ku\",\n  \"mzn\",\n  \"nqo\",\n  \"pnb\",\n  \"ps\",\n  \"sd\",\n  \"ug\",\n  \"ur\",\n  \"yi\"\n]);\nfunction isRTL(locale) {\n  if (Intl.Locale) {\n    const script = new Intl.Locale(locale).maximize().script ?? \"\";\n    return RTL_SCRIPTS.has(script);\n  }\n  const lang = locale.split(\"-\")[0];\n  return RTL_LANGS.has(lang);\n}\nfunction getLocaleDir(locale) {\n  return isRTL(locale) ? \"rtl\" : \"ltr\";\n}\n\n// src/locale.ts\nfunction getDefaultLocale() {\n  let locale = typeof navigator !== \"undefined\" && (navigator.language || navigator.userLanguage) || \"en-US\";\n  return {\n    locale,\n    dir: isRTL(locale) ? \"rtl\" : \"ltr\"\n  };\n}\nfunction trackLocale(options = {}) {\n  const { getRootNode, onLocaleChange } = options;\n  onLocaleChange?.(getDefaultLocale());\n  const handleLocaleChange = () => {\n    onLocaleChange?.(getDefaultLocale());\n  };\n  const win = getRootNode ? getWindow(getRootNode()) : window;\n  win.addEventListener(\"languagechange\", handleLocaleChange);\n  return () => {\n    win.removeEventListener(\"languagechange\", handleLocaleChange);\n  };\n}\n\nexport { createCollator, createFilter, formatBytes, formatDate, formatList, formatNumber, formatRelativeTime, getDefaultLocale, getLocaleDir, isRTL, trackLocale };\n", "import * as combobox from \"@zag-js/combobox\";\nimport type { Direction } from \"@zag-js/types\";\nimport type { ListCollection } from \"@zag-js/collection\";\nimport { VanillaMachine, normalizeProps } from \"@zag-js/vanilla\";\n\nimport {\n  Component,\n  generateId,\n  renderPart,\n  getString,\n  getBoolean,\n  getNumber,\n  getStringList,\n} from \"../lib\";\nimport { createFilter } from \"@zag-js/i18n-utils\";\n\ninterface ComboboxItem {\n  value: string;\n  label?: string;\n  group?: string;\n  disabled?: boolean;\n}\n\ninterface Group {\n  value: string;\n  label?: string;\n}\n\nfunction flattenJsonItems(data: any, parentGroup?: string): ComboboxItem[] {\n  if (!data) return [];\n  const items: ComboboxItem[] = [];\n\n  if (data.children && Array.isArray(data.children)) {\n    data.children.forEach((child: any) => {\n      items.push(...flattenJsonItems(child, data.name || parentGroup));\n    });\n  } else {\n    items.push({\n      value: data.id,\n      label: data.name,\n      group: parentGroup ?? undefined,\n      disabled: data.disabled,\n    });\n  }\n\n  return items;\n}\n\nfunction loadJsonItems(path: string): ComboboxItem[] {\n  try {\n    const script = document.querySelector(\n      `script[type=\"application/json\"][data-combobox=\"${path}\"]`,\n    );\n    if (!script) throw new Error(`No inline JSON script found for ${path}`);\n    const data = JSON.parse(script.textContent || \"{}\");\n    return flattenJsonItems(data);\n  } catch (e) {\n    console.error(\"Failed to load JSON items:\", e);\n    return [];\n  }\n}\n\nfunction getDomGroups(rootEl: HTMLElement): Group[] {\n  const groups: Group[] = [];\n  rootEl.querySelectorAll('[data-part=\"item-group\"]').forEach((el) => {\n    const value = el.getAttribute(\"data-id\") || \"\";\n    groups.push({ value });\n  });\n  return groups;\n}\n\nexport class Combobox extends Component<combobox.Props, combobox.Api> {\n  userOnInputValueChange?: combobox.Props[\"onInputValueChange\"];\n  userOnOpenChange?: combobox.Props[\"onOpenChange\"];\n\n  constructor(el: HTMLElement, props: combobox.Props) {\n    super(el, {\n      ...props,\n      onInputValueChange: undefined,\n      onOpenChange: undefined,\n    });\n    this.userOnInputValueChange = props.onInputValueChange;\n    this.userOnOpenChange = props.onOpenChange;\n  }\n\n  options: ComboboxItem[] = [];\n  allItems: ComboboxItem[] = [];\n  groups: Group[] = [];\n  private domInitialized = false;\n\n  setItems(items: ComboboxItem[]) {\n    this.allItems = items;\n    this.options = items;\n  }\n\n  getCollection(\n    items: ComboboxItem[],\n    hasGroups: boolean = false,\n  ): ListCollection<ComboboxItem> {\n    if (hasGroups) {\n      return combobox.collection({\n        items,\n        itemToValue: (item) => item.value,\n        itemToString: (item) => item.label || item.value,\n        groupBy: (item) => item.group || \"Default\",\n      });\n    }\n    return combobox.collection({\n      items,\n      itemToValue: (item) => item.value,\n      itemToString: (item) => item.label || item.value,\n    });\n  }\n\n  initMachine(props: combobox.Props): VanillaMachine<any> {\n    const self = this;\n    const hasGroups =\n      (this.groups?.length ?? 0) > 0 ||\n      ((this.allItems?.length ?? 0) > 0 && this.allItems.some((i) => i.group));\n\n    return new VanillaMachine(combobox.machine, {\n      ...props,\n      get collection() {\n        return self.getCollection(self.options || [], hasGroups);\n      },\n      onOpenChange(...args: any[]) {\n        self.options = self.allItems;\n        const isJson = getString(self.el, \"json\") !== undefined;\n        if (isJson) {\n          self.renderJsonDom();\n        } else {\n          self.renderDomItems();\n        }\n        self.userOnOpenChange?.(args[0]);\n      },\n      onInputValueChange(...args: any[]) {\n        const [details] = args;\n        if (!details.inputValue.trim()) {\n          self.options = self.allItems;\n        } else {\n          const filter = createFilter({\n            sensitivity: getString(self.el, \"sensitivity\") || \"base\",\n            locale: getString(self.el, \"locale\") || \"en-US\",\n          });\n          const filtered = self.allItems.filter((item) =>\n            filter.contains(item.label || item.value, details.inputValue),\n          );\n          self.options = filtered.length > 0 ? filtered : self.allItems;\n        }\n        const isJson = getString(self.el, \"json\") !== undefined;\n        if (isJson) {\n          self.renderJsonDom();\n        } else {\n          self.renderDomItems();\n        }\n        self.userOnInputValueChange?.(args[0]);\n      },\n    });\n  }\n\n  initApi(): combobox.Api {\n    return combobox.connect(this.machine.service, normalizeProps);\n  }\n\n  private renderJsonDom() {\n    const rootEl = this.el;\n    if (!rootEl) return;\n\n    let contentEl = rootEl.querySelector<HTMLElement>('[data-part=\"content\"]');\n    if (!contentEl) {\n      contentEl = document.createElement(\"div\");\n      contentEl.setAttribute(\"data-part\", \"content\");\n      rootEl.appendChild(contentEl);\n    } else {\n      contentEl.innerHTML = \"\";\n    }\n\n    const noIcon = getBoolean(this.el, \"noIcon\");\n    const groupMap: Record<string, HTMLElement> = {};\n\n    if (this.groups.length === 0) {\n      const uniqueGroups = new Set<string>();\n      this.options.forEach((item) => {\n        if (item.group) uniqueGroups.add(item.group);\n      });\n      this.groups = Array.from(uniqueGroups).map((value) => ({\n        value,\n        label: value,\n      }));\n    }\n\n    const groupsWithItems = new Set<string>();\n    this.options.forEach((item) => {\n      if (item.group) groupsWithItems.add(item.group);\n    });\n\n    this.groups.forEach((g) => {\n      if (!groupsWithItems.has(g.value)) return;\n\n      const groupEl = document.createElement(\"div\");\n      groupEl.setAttribute(\"data-part\", \"item-group\");\n      groupEl.setAttribute(\"data-id\", g.value);\n\n      const labelEl = document.createElement(\"div\");\n      labelEl.setAttribute(\"data-part\", \"item-group-label\");\n      labelEl.setAttribute(\"data-id\", g.value);\n      labelEl.textContent = g.label || g.value;\n\n      contentEl.appendChild(labelEl);\n      contentEl.appendChild(groupEl);\n\n      groupMap[g.value] = groupEl;\n    });\n\n    this.options.forEach((item) => {\n      const itemEl = document.createElement(\"div\");\n      itemEl.setAttribute(\"data-part\", \"item\");\n      itemEl.setAttribute(\"data-value\", item.value);\n      itemEl.setAttribute(\"data-label\", item.label || item.value);\n      if (item.disabled) itemEl.setAttribute(\"data-disabled\", \"true\");\n\n      const textEl = document.createElement(\"span\");\n      textEl.setAttribute(\"data-part\", \"item-text\");\n      textEl.setAttribute(\"data-value\", item.value);\n      textEl.textContent = item.label || item.value;\n\n      itemEl.appendChild(textEl);\n\n      if (!noIcon) {\n        const indicatorEl = document.createElement(\"span\");\n        indicatorEl.setAttribute(\"data-part\", \"item-indicator\");\n        indicatorEl.setAttribute(\"data-value\", item.value);\n        indicatorEl.innerHTML = `\n          <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"\n            stroke-width=\"1.5\" stroke=\"currentColor\">\n            <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m4.5 12.75 6 6 9-13.5\" />\n          </svg>\n        `;\n        itemEl.appendChild(indicatorEl);\n      }\n\n      if (item.group && groupMap[item.group]) {\n        groupMap[item.group].appendChild(itemEl);\n      } else {\n        contentEl.appendChild(itemEl);\n      }\n    });\n  }\n\n  private renderDomItems() {\n    const contentEl = this.el.querySelector('[data-part=\"content\"]');\n    if (!contentEl) return;\n\n    const allDomItems = Array.from(\n      contentEl.querySelectorAll('[data-part=\"item\"]'),\n    ) as HTMLElement[];\n\n    const visibleGroups = new Set<string>();\n\n    allDomItems.forEach((el) => {\n      const value = el.getAttribute(\"data-value\");\n      const match = this.options.find((item) => item.value === value);\n      if (match) {\n        el.style.display = \"\";\n        const groupEl = el.closest(\n          '[data-part=\"item-group\"]',\n        ) as HTMLElement | null;\n        if (groupEl) {\n          const groupId = groupEl.getAttribute(\"data-id\");\n          if (groupId) visibleGroups.add(groupId);\n        }\n      } else {\n        el.style.display = \"none\";\n      }\n    });\n\n    const allGroupLabels = Array.from(\n      contentEl.querySelectorAll('[data-part=\"item-group-label\"]'),\n    ) as HTMLElement[];\n\n    allGroupLabels.forEach((labelEl) => {\n      const groupId = labelEl.getAttribute(\"data-id\");\n      if (groupId && visibleGroups.has(groupId)) {\n        labelEl.style.display = \"\";\n      } else {\n        labelEl.style.display = \"none\";\n      }\n    });\n\n    const allGroups = Array.from(\n      contentEl.querySelectorAll('[data-part=\"item-group\"]'),\n    ) as HTMLElement[];\n\n    allGroups.forEach((groupEl) => {\n      const groupId = groupEl.getAttribute(\"data-id\");\n      if (groupId && visibleGroups.has(groupId)) {\n        groupEl.style.display = \"\";\n      } else {\n        groupEl.style.display = \"none\";\n      }\n    });\n  }\n\n  render() {\n    const isJson = getString(this.el, \"json\") !== undefined;\n    if (isJson && !this.domInitialized) {\n      this.renderJsonDom();\n      this.domInitialized = true;\n    }\n\n    const parts = [\n      \"root\",\n      \"label\",\n      \"control\",\n      \"input\",\n      \"trigger\",\n      \"positioner\",\n      \"content\",\n      \"clear-trigger\",\n      \"list\",\n    ];\n    for (const part of parts) {\n      renderPart(this.el, part, this.api);\n    }\n\n    const itemParts = [\"item\", \"item-text\", \"item-indicator\"];\n    for (const part of itemParts) {\n      renderPart(this.el, part, this.api, {\n        item: (el: HTMLElement) => {\n          const value = el.getAttribute(\"data-value\");\n          const item = this.options.find((i) => i.value === value);\n          if (!item) {\n            console.warn(`[Combobox] No matching item for value: ${value}`);\n            return undefined;\n          }\n          return {\n            ...item,\n            label: item.label || el.getAttribute(\"data-label\") || item.value,\n            disabled: getBoolean(el, \"disabled\") || item.disabled,\n          };\n        },\n      });\n    }\n\n    renderPart(this.el, \"item-group\", this.api, {\n      group: (el: HTMLElement) => {\n        const id = el.getAttribute(\"data-id\");\n        const group = this.groups.find((g) => g.value === id);\n        return group;\n      },\n      id: (el: HTMLElement) => el.getAttribute(\"data-id\"),\n    });\n\n    renderPart(this.el, \"item-group-label\", this.api, {\n      group: (el: HTMLElement) => {\n        const id = el.getAttribute(\"data-id\");\n        return this.groups.find((g) => g.value === id);\n      },\n      htmlFor: (el: HTMLElement) => el.getAttribute(\"data-id\"),\n    });\n  }\n}\n\nexport function initCombobox(\n  doc: HTMLElement | Document = document,\n  selector = \".combobox-js\",\n): void {\n  doc.querySelectorAll<HTMLElement>(selector).forEach((rootEl) => {\n    const groupElements = rootEl.querySelectorAll<HTMLElement>(\n      '[data-part=\"item-group\"]',\n    );\n    groupElements.forEach((groupEl, index) => {\n      const groupId =\n        getString(groupEl, \"id\") ??\n        generateId(groupEl, `combobox-group-${index}`);\n      groupEl.setAttribute(\"data-id\", groupId);\n\n      const labelEl = groupEl.querySelector<HTMLElement>(\n        '[data-part=\"item-group-label\"]',\n      );\n      if (labelEl) labelEl.setAttribute(\"data-id\", groupId);\n    });\n\n    const itemElements =\n      rootEl.querySelectorAll<HTMLElement>('[data-part=\"item\"]');\n    itemElements.forEach((itemEl, index) => {\n      const value =\n        getString(itemEl, \"value\") ??\n        generateId(itemEl, `combobox-item-${index}`);\n      itemEl.setAttribute(\"data-value\", value);\n\n      if (!itemEl.hasAttribute(\"data-label\")) {\n        const textEl = itemEl.querySelector<HTMLElement>(\n          '[data-part=\"item-text\"]',\n        );\n        const label = textEl?.textContent?.trim() || value;\n        itemEl.setAttribute(\"data-label\", label);\n      }\n\n      const textEl = itemEl.querySelector<HTMLElement>(\n        '[data-part=\"item-text\"]',\n      );\n      if (textEl) textEl.setAttribute(\"data-value\", value);\n\n      const indicatorEl = itemEl.querySelector<HTMLElement>(\n        '[data-part=\"item-indicator\"]',\n      );\n      if (indicatorEl) indicatorEl.setAttribute(\"data-value\", value);\n    });\n\n    const jsonPath = getString(rootEl, \"json\");\n    const items: ComboboxItem[] = jsonPath\n      ? loadJsonItems(jsonPath)\n      : Array.from(itemElements).map((itemEl) => {\n          const value = getString(itemEl, \"value\")!;\n          const label =\n            itemEl.getAttribute(\"data-label\") ||\n            itemEl\n              .querySelector<HTMLElement>('[data-part=\"item-text\"]')\n              ?.textContent?.trim() ||\n            value;\n          const groupEl = itemEl.closest(\n            '[data-part=\"item-group\"]',\n          ) as HTMLElement | null;\n          const group = groupEl ? getString(groupEl, \"id\") : undefined;\n          const disabled = getBoolean(itemEl, \"disabled\");\n          return { value, label, group, disabled };\n        });\n\n    const groups = getDomGroups(rootEl);\n\n    const directions = [\"ltr\", \"rtl\"] as const;\n    const placements = [\n      \"top\",\n      \"right\",\n      \"bottom\",\n      \"left\",\n      \"top-start\",\n      \"top-end\",\n      \"right-start\",\n      \"right-end\",\n      \"bottom-start\",\n      \"bottom-end\",\n      \"left-start\",\n      \"left-end\",\n    ] as const;\n    const strategies = [\"absolute\", \"fixed\"] as const;\n    const inputBehaviors = [\"autohighlight\", \"autocomplete\", \"none\"] as const;\n    const selectionBehaviors = [\"replace\", \"clear\", \"preserve\"] as const;\n\n    const comboboxComponent = new Combobox(rootEl, {\n      id: generateId(rootEl, \"combobox\"),\n      placeholder: getString(rootEl, \"placeholder\"),\n      allowCustomValue: getBoolean(rootEl, \"allowCustomValue\"),\n      autoFocus: getBoolean(rootEl, \"autoFocus\"),\n      closeOnSelect: getBoolean(rootEl, \"closeOnSelect\"),\n      composite: getBoolean(rootEl, \"composite\"),\n      defaultHighlightedValue: getString(rootEl, \"defaultHighlightedValue\"),\n      defaultInputValue: getString(rootEl, \"defaultInputValue\"),\n      defaultOpen: getBoolean(rootEl, \"defaultOpen\"),\n      defaultValue: getStringList(rootEl, \"defaultValue\"),\n      dir: getString<Direction>(rootEl, \"dir\", directions),\n      disabled: getBoolean(rootEl, \"disabled\"),\n      disableLayer: getBoolean(rootEl, \"disableLayer\"),\n      form: getString(rootEl, \"form\"),\n      highlightedValue: getString(rootEl, \"highlightedValue\"),\n      inputBehavior: getString(rootEl, \"inputBehavior\", inputBehaviors),\n      inputValue: getString(rootEl, \"inputValue\"),\n      invalid: getBoolean(rootEl, \"invalid\"),\n      loopFocus: getBoolean(rootEl, \"loopFocus\"),\n      multiple: getBoolean(rootEl, \"multiple\"),\n      name: getString(rootEl, \"name\"),\n      readOnly: getBoolean(rootEl, \"readOnly\"),\n      required: getBoolean(rootEl, \"required\"),\n      open: getBoolean(rootEl, \"open\"),\n      openOnChange: getBoolean(rootEl, \"openOnChange\"),\n      openOnClick: getBoolean(rootEl, \"openOnClick\"),\n      openOnKeyPress: getBoolean(rootEl, \"openOnKeyPress\"),\n      value: getStringList(rootEl, \"value\"),\n      selectionBehavior: getString(\n        rootEl,\n        \"selectionBehavior\",\n        selectionBehaviors,\n      ),\n      positioning: {\n        hideWhenDetached: getBoolean(rootEl, \"hideWhenDetached\"),\n        placement: getString(rootEl, \"placement\", placements),\n        strategy: getString(rootEl, \"strategy\", strategies),\n        flip: getBoolean(rootEl, \"flip\"),\n        gutter: getNumber(rootEl, \"gutter\"),\n        arrowPadding: getNumber(rootEl, \"arrowPadding\"),\n        overflowPadding: getNumber(rootEl, \"overflowPadding\"),\n        offset: (() => {\n          const mainAxis = getNumber(rootEl, \"offsetMainAxis\");\n          const crossAxis = getNumber(rootEl, \"offsetCrossAxis\");\n          if (mainAxis !== undefined || crossAxis !== undefined) {\n            return {\n              mainAxis: mainAxis,\n              crossAxis: crossAxis,\n            };\n          }\n          return undefined;\n        })(),\n        sameWidth: getBoolean(rootEl, \"sameWidth\"),\n        overlap: getBoolean(rootEl, \"overlap\"),\n        fitViewport: getBoolean(rootEl, \"fitViewport\"),\n        slide: getBoolean(rootEl, \"slide\"),\n      },\n      navigate(details: any) {\n        const eventName = getString(rootEl, \"navigate\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onInputValueChange(details: any) {\n        const eventName = getString(rootEl, \"onInputValueChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onFocusOutside(event: any) {\n        const eventName = getString(rootEl, \"onFocusOutside\");\n        if (eventName) {\n          rootEl.dispatchEvent(\n            new CustomEvent(eventName, { detail: event.detail }),\n          );\n        }\n      },\n      onHighlightChange(details: any) {\n        const eventName = getString(rootEl, \"onHighlightChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onInteractOutside(event: any) {\n        const eventName = getString(rootEl, \"onInteractOutside\");\n        if (eventName) {\n          rootEl.dispatchEvent(\n            new CustomEvent(eventName, { detail: event.detail }),\n          );\n        }\n      },\n      onOpenChange(details: any) {\n        const eventName = getString(rootEl, \"onOpenChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onPointerDownOutside(event: any) {\n        const eventName = getString(rootEl, \"onPointerDownOutside\");\n        if (eventName) {\n          rootEl.dispatchEvent(\n            new CustomEvent(eventName, { detail: event.detail }),\n          );\n        }\n      },\n      onSelect(details: any) {\n        const eventName = getString(rootEl, \"onSelect\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onValueChange(details: any) {\n        const eventName = getString(rootEl, \"onValueChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n    });\n\n    comboboxComponent.setItems(items);\n    comboboxComponent.options = items;\n    comboboxComponent.groups = groups;\n    comboboxComponent.init();\n  });\n}\n", "/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nexport type Mutable<T> = {\n  -readonly[P in keyof T]: T[P]\n};\n\nexport function mod(amount: number, numerator: number): number {\n  return amount - numerator * Math.floor(amount / numerator);\n}\n", "/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from ICU.\n// Original licensing can be found in the NOTICE file in the root directory of this source tree.\n\nimport {AnyCalendarDate, Calendar, CalendarIdentifier} from '../types';\nimport {CalendarDate} from '../CalendarDate';\nimport {mod, Mutable} from '../utils';\n\nconst EPOCH = 1721426; // 001/01/03 Julian C.E.\nexport function gregorianToJulianDay(era: string, year: number, month: number, day: number): number {\n  year = getExtendedYear(era, year);\n\n  let y1 = year - 1;\n  let monthOffset = -2;\n  if (month <= 2) {\n    monthOffset = 0;\n  } else if (isLeapYear(year)) {\n    monthOffset = -1;\n  }\n\n  return (\n    EPOCH -\n    1 +\n    365 * y1 +\n    Math.floor(y1 / 4) -\n    Math.floor(y1 / 100) +\n    Math.floor(y1 / 400) +\n    Math.floor((367 * month - 362) / 12 + monthOffset + day)\n  );\n}\n\nexport function isLeapYear(year: number): boolean {\n  return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\nexport function getExtendedYear(era: string, year: number): number {\n  return era === 'BC' ? 1 - year : year;\n}\n\nexport function fromExtendedYear(year: number): [string, number] {\n  let era = 'AD';\n  if (year <= 0) {\n    era = 'BC';\n    year = 1 - year;\n  }\n\n  return [era, year];\n}\n\nconst daysInMonth = {\n  standard: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n  leapyear: [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n};\n\n/**\n * The Gregorian calendar is the most commonly used calendar system in the world. It supports two eras: BC, and AD.\n * Years always contain 12 months, and 365 or 366 days depending on whether it is a leap year.\n */\nexport class GregorianCalendar implements Calendar {\n  identifier: CalendarIdentifier = 'gregory';\n\n  fromJulianDay(jd: number): CalendarDate {\n    let jd0 = jd;\n    let depoch = jd0 - EPOCH;\n    let quadricent = Math.floor(depoch / 146097);\n    let dqc = mod(depoch, 146097);\n    let cent = Math.floor(dqc / 36524);\n    let dcent = mod(dqc, 36524);\n    let quad = Math.floor(dcent / 1461);\n    let dquad = mod(dcent, 1461);\n    let yindex = Math.floor(dquad / 365);\n\n    let extendedYear = quadricent * 400 + cent * 100 + quad * 4 + yindex + (cent !== 4 && yindex !== 4 ? 1 : 0);\n    let [era, year] = fromExtendedYear(extendedYear);\n    let yearDay = jd0 - gregorianToJulianDay(era, year, 1, 1);\n    let leapAdj = 2;\n    if (jd0 < gregorianToJulianDay(era, year, 3, 1)) {\n      leapAdj = 0;\n    } else if (isLeapYear(year)) {\n      leapAdj = 1;\n    }\n    let month = Math.floor(((yearDay + leapAdj) * 12 + 373) / 367);\n    let day = jd0 - gregorianToJulianDay(era, year, month, 1) + 1;\n\n    return new CalendarDate(era, year, month, day);\n  }\n\n  toJulianDay(date: AnyCalendarDate): number {\n    return gregorianToJulianDay(date.era, date.year, date.month, date.day);\n  }\n\n  getDaysInMonth(date: AnyCalendarDate): number {\n    return daysInMonth[isLeapYear(date.year) ? 'leapyear' : 'standard'][date.month - 1];\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  getMonthsInYear(date: AnyCalendarDate): number {\n    return 12;\n  }\n\n  getDaysInYear(date: AnyCalendarDate): number {\n    return isLeapYear(date.year) ? 366 : 365;\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  getYearsInEra(date: AnyCalendarDate): number {\n    return 9999;\n  }\n\n  getEras(): string[] {\n    return ['BC', 'AD'];\n  }\n\n  isInverseEra(date: AnyCalendarDate): boolean {\n    return date.era === 'BC';\n  }\n\n  balanceDate(date: Mutable<AnyCalendarDate>): void {\n    if (date.year <= 0) {\n      date.era = date.era === 'BC' ? 'AD' : 'BC';\n      date.year = 1 - date.year;\n    }\n  }\n}\n", "/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Data from https://github.com/unicode-cldr/cldr-core/blob/master/supplemental/weekData.json\n// Locales starting on Sunday have been removed for compression.\nexport const weekStartData = {\n  '001': 1,\n  AD: 1,\n  AE: 6,\n  AF: 6,\n  AI: 1,\n  AL: 1,\n  AM: 1,\n  AN: 1,\n  AR: 1,\n  AT: 1,\n  AU: 1,\n  AX: 1,\n  AZ: 1,\n  BA: 1,\n  BE: 1,\n  BG: 1,\n  BH: 6,\n  BM: 1,\n  BN: 1,\n  BY: 1,\n  CH: 1,\n  CL: 1,\n  CM: 1,\n  CN: 1,\n  CR: 1,\n  CY: 1,\n  CZ: 1,\n  DE: 1,\n  DJ: 6,\n  DK: 1,\n  DZ: 6,\n  EC: 1,\n  EE: 1,\n  EG: 6,\n  ES: 1,\n  FI: 1,\n  FJ: 1,\n  FO: 1,\n  FR: 1,\n  GB: 1,\n  GE: 1,\n  GF: 1,\n  GP: 1,\n  GR: 1,\n  HR: 1,\n  HU: 1,\n  IE: 1,\n  IQ: 6,\n  IR: 6,\n  IS: 1,\n  IT: 1,\n  JO: 6,\n  KG: 1,\n  KW: 6,\n  KZ: 1,\n  LB: 1,\n  LI: 1,\n  LK: 1,\n  LT: 1,\n  LU: 1,\n  LV: 1,\n  LY: 6,\n  MC: 1,\n  MD: 1,\n  ME: 1,\n  MK: 1,\n  MN: 1,\n  MQ: 1,\n  MV: 5,\n  MY: 1,\n  NL: 1,\n  NO: 1,\n  NZ: 1,\n  OM: 6,\n  PL: 1,\n  QA: 6,\n  RE: 1,\n  RO: 1,\n  RS: 1,\n  RU: 1,\n  SD: 6,\n  SE: 1,\n  SI: 1,\n  SK: 1,\n  SM: 1,\n  SY: 6,\n  TJ: 1,\n  TM: 1,\n  TR: 1,\n  UA: 1,\n  UY: 1,\n  UZ: 1,\n  VA: 1,\n  VN: 1,\n  XK: 1\n};\n", "/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {AnyCalendarDate, AnyTime, Calendar} from './types';\nimport {CalendarDate, CalendarDateTime, ZonedDateTime} from './CalendarDate';\nimport {fromAbsolute, toAbsolute, toCalendar, toCalendarDate} from './conversion';\nimport {weekStartData} from './weekStartData';\n\ntype DateValue = CalendarDate | CalendarDateTime | ZonedDateTime;\n\n/** Returns whether the given dates occur on the same day, regardless of the time or calendar system. */\nexport function isSameDay(a: DateValue, b: DateValue): boolean {\n  b = toCalendar(b, a.calendar);\n  return a.era === b.era && a.year === b.year && a.month === b.month && a.day === b.day;\n}\n\n/** Returns whether the given dates occur in the same month, using the calendar system of the first date. */\nexport function isSameMonth(a: DateValue, b: DateValue): boolean {\n  b = toCalendar(b, a.calendar);\n  // In the Japanese calendar, months can span multiple eras/years, so only compare the first of the month.\n  a = startOfMonth(a);\n  b = startOfMonth(b);\n  return a.era === b.era && a.year === b.year && a.month === b.month;\n}\n\n/** Returns whether the given dates occur in the same year, using the calendar system of the first date. */\nexport function isSameYear(a: DateValue, b: DateValue): boolean {\n  b = toCalendar(b, a.calendar);\n  a = startOfYear(a);\n  b = startOfYear(b);\n  return a.era === b.era && a.year === b.year;\n}\n\n/** Returns whether the given dates occur on the same day, and are of the same calendar system. */\nexport function isEqualDay(a: DateValue, b: DateValue): boolean {\n  return isEqualCalendar(a.calendar, b.calendar) && isSameDay(a, b);\n}\n\n/** Returns whether the given dates occur in the same month, and are of the same calendar system. */\nexport function isEqualMonth(a: DateValue, b: DateValue): boolean {\n  return isEqualCalendar(a.calendar, b.calendar) && isSameMonth(a, b);\n}\n\n/** Returns whether the given dates occur in the same year, and are of the same calendar system. */\nexport function isEqualYear(a: DateValue, b: DateValue): boolean {\n  return isEqualCalendar(a.calendar, b.calendar) && isSameYear(a, b);\n}\n\n/** Returns whether two calendars are the same. */\nexport function isEqualCalendar(a: Calendar, b: Calendar): boolean {\n  return a.isEqual?.(b) ?? b.isEqual?.(a) ?? a.identifier === b.identifier;\n}\n\n/** Returns whether the date is today in the given time zone. */\nexport function isToday(date: DateValue, timeZone: string): boolean {\n  return isSameDay(date, today(timeZone));\n}\n\nconst DAY_MAP = {\n  sun: 0,\n  mon: 1,\n  tue: 2,\n  wed: 3,\n  thu: 4,\n  fri: 5,\n  sat: 6\n};\n\ntype DayOfWeek = 'sun' | 'mon' | 'tue' | 'wed' | 'thu' | 'fri' | 'sat';\n\n/**\n * Returns the day of week for the given date and locale. Days are numbered from zero to six,\n * where zero is the first day of the week in the given locale. For example, in the United States,\n * the first day of the week is Sunday, but in France it is Monday.\n */\nexport function getDayOfWeek(date: DateValue, locale: string, firstDayOfWeek?: DayOfWeek): number {\n  let julian = date.calendar.toJulianDay(date);\n\n  // If julian is negative, then julian % 7 will be negative, so we adjust\n  // accordingly.  Julian day 0 is Monday.\n  let weekStart = firstDayOfWeek ? DAY_MAP[firstDayOfWeek] : getWeekStart(locale);\n  let dayOfWeek = Math.ceil(julian + 1 - weekStart) % 7;\n  if (dayOfWeek < 0) {\n    dayOfWeek += 7;\n  }\n\n  return dayOfWeek;\n}\n\n/** Returns the current time in the given time zone. */\nexport function now(timeZone: string): ZonedDateTime {\n  return fromAbsolute(Date.now(), timeZone);\n}\n\n/** Returns today's date in the given time zone. */\nexport function today(timeZone: string): CalendarDate {\n  return toCalendarDate(now(timeZone));\n}\n\nexport function compareDate(a: AnyCalendarDate, b: AnyCalendarDate): number {\n  return a.calendar.toJulianDay(a) - b.calendar.toJulianDay(b);\n}\n\nexport function compareTime(a: AnyTime, b: AnyTime): number {\n  return timeToMs(a) - timeToMs(b);\n}\n\nfunction timeToMs(a: AnyTime): number {\n  return a.hour * 60 * 60 * 1000 + a.minute * 60 * 1000 + a.second * 1000 + a.millisecond;\n}\n\n/**\n * Returns the number of hours in the given date and time zone.\n * Usually this is 24, but it could be 23 or 25 if the date is on a daylight saving transition.\n */\nexport function getHoursInDay(a: CalendarDate, timeZone: string): number {\n  let ms = toAbsolute(a, timeZone);\n  let tomorrow = a.add({days: 1});\n  let tomorrowMs = toAbsolute(tomorrow, timeZone);\n  return (tomorrowMs - ms) / 3600000;\n}\n\nlet localTimeZone: string | null = null;\n\n/** Returns the time zone identifier for the current user. */\nexport function getLocalTimeZone(): string {\n  if (localTimeZone == null) {\n    localTimeZone = new Intl.DateTimeFormat().resolvedOptions().timeZone;\n  }\n\n  return localTimeZone!;\n}\n\n/** Sets the time zone identifier for the current user. */\nexport function setLocalTimeZone(timeZone: string): void {\n  localTimeZone = timeZone;\n}\n\n/** Resets the time zone identifier for the current user. */\nexport function resetLocalTimeZone(): void {\n  localTimeZone = null;\n}\n\n/** Returns the first date of the month for the given date. */\nexport function startOfMonth(date: ZonedDateTime): ZonedDateTime;\nexport function startOfMonth(date: CalendarDateTime): CalendarDateTime;\nexport function startOfMonth(date: CalendarDate): CalendarDate;\nexport function startOfMonth(date: DateValue): DateValue;\nexport function startOfMonth(date: DateValue): DateValue {\n  // Use `subtract` instead of `set` so we don't get constrained in an era.\n  return date.subtract({days: date.day - 1});\n}\n\n/** Returns the last date of the month for the given date. */\nexport function endOfMonth(date: ZonedDateTime): ZonedDateTime;\nexport function endOfMonth(date: CalendarDateTime): CalendarDateTime;\nexport function endOfMonth(date: CalendarDate): CalendarDate;\nexport function endOfMonth(date: DateValue): DateValue;\nexport function endOfMonth(date: DateValue): DateValue {\n  return date.add({days: date.calendar.getDaysInMonth(date) - date.day});\n}\n\n/** Returns the first day of the year for the given date. */\nexport function startOfYear(date: ZonedDateTime): ZonedDateTime;\nexport function startOfYear(date: CalendarDateTime): CalendarDateTime;\nexport function startOfYear(date: CalendarDate): CalendarDate;\nexport function startOfYear(date: DateValue): DateValue;\nexport function startOfYear(date: DateValue): DateValue {\n  return startOfMonth(date.subtract({months: date.month - 1}));\n}\n\n/** Returns the last day of the year for the given date. */\nexport function endOfYear(date: ZonedDateTime): ZonedDateTime;\nexport function endOfYear(date: CalendarDateTime): CalendarDateTime;\nexport function endOfYear(date: CalendarDate): CalendarDate;\nexport function endOfYear(date: DateValue): DateValue;\nexport function endOfYear(date: DateValue): DateValue {\n  return endOfMonth(date.add({months: date.calendar.getMonthsInYear(date) - date.month}));\n}\n\nexport function getMinimumMonthInYear(date: AnyCalendarDate): number {\n  if (date.calendar.getMinimumMonthInYear) {\n    return date.calendar.getMinimumMonthInYear(date);\n  }\n\n  return 1;\n}\n\nexport function getMinimumDayInMonth(date: AnyCalendarDate): number {\n  if (date.calendar.getMinimumDayInMonth) {\n    return date.calendar.getMinimumDayInMonth(date);\n  }\n\n  return 1;\n}\n\n/** Returns the first date of the week for the given date and locale. */\nexport function startOfWeek(date: ZonedDateTime, locale: string, firstDayOfWeek?: DayOfWeek): ZonedDateTime;\nexport function startOfWeek(date: CalendarDateTime, locale: string, firstDayOfWeek?: DayOfWeek): CalendarDateTime;\nexport function startOfWeek(date: CalendarDate, locale: string, firstDayOfWeek?: DayOfWeek): CalendarDate;\nexport function startOfWeek(date: DateValue, locale: string, firstDayOfWeek?: DayOfWeek): DateValue;\nexport function startOfWeek(date: DateValue, locale: string, firstDayOfWeek?: DayOfWeek): DateValue {\n  let dayOfWeek = getDayOfWeek(date, locale, firstDayOfWeek);\n  return date.subtract({days: dayOfWeek});\n}\n\n/** Returns the last date of the week for the given date and locale. */\nexport function endOfWeek(date: ZonedDateTime, locale: string, firstDayOfWeek?: DayOfWeek): ZonedDateTime;\nexport function endOfWeek(date: CalendarDateTime, locale: string, firstDayOfWeek?: DayOfWeek): CalendarDateTime;\nexport function endOfWeek(date: CalendarDate, locale: string, firstDayOfWeek?: DayOfWeek): CalendarDate;\nexport function endOfWeek(date: DateValue, locale: string, firstDayOfWeek?: DayOfWeek): DateValue;\nexport function endOfWeek(date: DateValue, locale: string, firstDayOfWeek?: DayOfWeek): DateValue {\n  return startOfWeek(date, locale, firstDayOfWeek).add({days: 6});\n}\n\nconst cachedRegions = new Map<string, string>();\nconst cachedWeekInfo = new Map<string, {firstDay: number}>();\n\nfunction getRegion(locale: string): string | undefined {\n  // If the Intl.Locale API is available, use it to get the region for the locale.\n  // @ts-ignore\n  if (Intl.Locale) {\n    // Constructing an Intl.Locale is expensive, so cache the result.\n    let region = cachedRegions.get(locale);\n    if (!region) {\n      // @ts-ignore\n      region = new Intl.Locale(locale).maximize().region;\n      if (region) {\n        cachedRegions.set(locale, region);\n      }\n    }\n    return region;\n  }\n\n  // If not, just try splitting the string.\n  // If the second part of the locale string is 'u',\n  // then this is a unicode extension, so ignore it.\n  // Otherwise, it should be the region.\n  let part = locale.split('-')[1];\n  return part === 'u' ? undefined : part;\n}\n\nfunction getWeekStart(locale: string): number {\n  // TODO: use Intl.Locale for this once browsers support the weekInfo property\n  // https://github.com/tc39/proposal-intl-locale-info\n  let weekInfo = cachedWeekInfo.get(locale);\n  if (!weekInfo) {\n    if (Intl.Locale) {\n      // @ts-ignore\n      let localeInst = new Intl.Locale(locale);\n      if ('getWeekInfo' in localeInst) {\n        // @ts-expect-error\n        weekInfo = localeInst.getWeekInfo();\n        if (weekInfo) {\n          cachedWeekInfo.set(locale, weekInfo);\n          return weekInfo.firstDay;\n        }\n      }\n    }\n    let region = getRegion(locale);\n    if (locale.includes('-fw-')) {\n      // pull the value for the attribute fw from strings such as en-US-u-ca-iso8601-fw-tue or en-US-u-ca-iso8601-fw-mon-nu-thai\n      // where the fw attribute could be followed by another unicode locale extension or not\n      let day = locale.split('-fw-')[1].split('-')[0];\n      if (day === 'mon') {\n        weekInfo = {firstDay: 1};\n      } else if (day === 'tue') {\n        weekInfo = {firstDay: 2};\n      } else if (day === 'wed') {\n        weekInfo = {firstDay: 3};\n      } else if (day === 'thu') {\n        weekInfo = {firstDay: 4};\n      } else if (day === 'fri') {\n        weekInfo = {firstDay: 5};\n      } else if (day === 'sat') {\n        weekInfo = {firstDay: 6};\n      } else {\n        weekInfo = {firstDay: 0};\n      }\n    } else if (locale.includes('-ca-iso8601')) {\n      weekInfo = {firstDay: 1};\n    } else {\n      weekInfo = {firstDay: region ? weekStartData[region] || 0 : 0};\n    }\n    cachedWeekInfo.set(locale, weekInfo);\n  }\n\n  return weekInfo.firstDay;\n}\n\n/** Returns the number of weeks in the given month and locale. */\nexport function getWeeksInMonth(date: DateValue, locale: string, firstDayOfWeek?: DayOfWeek): number {\n  let days = date.calendar.getDaysInMonth(date);\n  return Math.ceil((getDayOfWeek(startOfMonth(date), locale, firstDayOfWeek) + days) / 7);\n}\n\n/** Returns the lesser of the two provider dates. */\nexport function minDate<A extends DateValue, B extends DateValue>(a?: A | null, b?: B | null): A | B | null | undefined {\n  if (a && b) {\n    return a.compare(b) <= 0 ? a : b;\n  }\n\n  return a || b;\n}\n\n/** Returns the greater of the two provider dates. */\nexport function maxDate<A extends DateValue, B extends DateValue>(a?: A | null, b?: B | null): A | B | null | undefined {\n  if (a && b) {\n    return a.compare(b) >= 0 ? a : b;\n  }\n\n  return a || b;\n}\n\nconst WEEKEND_DATA = {\n  AF: [4, 5],\n  AE: [5, 6],\n  BH: [5, 6],\n  DZ: [5, 6],\n  EG: [5, 6],\n  IL: [5, 6],\n  IQ: [5, 6],\n  IR: [5, 5],\n  JO: [5, 6],\n  KW: [5, 6],\n  LY: [5, 6],\n  OM: [5, 6],\n  QA: [5, 6],\n  SA: [5, 6],\n  SD: [5, 6],\n  SY: [5, 6],\n  YE: [5, 6]\n};\n\n/** Returns whether the given date is on a weekend in the given locale. */\nexport function isWeekend(date: DateValue, locale: string): boolean {\n  let julian = date.calendar.toJulianDay(date);\n\n  // If julian is negative, then julian % 7 will be negative, so we adjust\n  // accordingly.  Julian day 0 is Monday.\n  let dayOfWeek = Math.ceil(julian + 1) % 7;\n  if (dayOfWeek < 0) {\n    dayOfWeek += 7;\n  }\n\n  let region = getRegion(locale);\n  // Use Intl.Locale for this once weekInfo is supported.\n  // https://github.com/tc39/proposal-intl-locale-info\n  let [start, end] = WEEKEND_DATA[region!] || [6, 0];\n  return dayOfWeek === start || dayOfWeek === end;\n}\n\n/** Returns whether the given date is on a weekday in the given locale. */\nexport function isWeekday(date: DateValue, locale: string): boolean {\n  return !isWeekend(date, locale);\n}\n", "/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from the TC39 Temporal proposal.\n// Original licensing can be found in the NOTICE file in the root directory of this source tree.\n\nimport {AnyCalendarDate, AnyDateTime, AnyTime, Calendar, DateFields, Disambiguation, TimeFields} from './types';\nimport {CalendarDate, CalendarDateTime, Time, ZonedDateTime} from './CalendarDate';\nimport {constrain} from './manipulation';\nimport {getExtendedYear, GregorianCalendar} from './calendars/GregorianCalendar';\nimport {getLocalTimeZone, isEqualCalendar} from './queries';\nimport {Mutable} from './utils';\n\nexport function epochFromDate(date: AnyDateTime): number {\n  date = toCalendar(date, new GregorianCalendar());\n  let year = getExtendedYear(date.era, date.year);\n  return epochFromParts(year, date.month, date.day, date.hour, date.minute, date.second, date.millisecond);\n}\n\nfunction epochFromParts(year: number, month: number, day: number, hour: number, minute: number, second: number, millisecond: number): number {\n  // Note: Date.UTC() interprets one and two-digit years as being in the\n  // 20th century, so don't use it\n  let date = new Date();\n  date.setUTCHours(hour, minute, second, millisecond);\n  date.setUTCFullYear(year, month - 1, day);\n  return date.getTime();\n}\n\nexport function getTimeZoneOffset(ms: number, timeZone: string): number {\n  // Fast path for UTC.\n  if (timeZone === 'UTC') {\n    return 0;\n  }\n\n  // Fast path: for local timezone after 1970, use native Date.\n  if (ms > 0 && timeZone === getLocalTimeZone()) {\n    return new Date(ms).getTimezoneOffset() * -60 * 1000;\n  }\n\n  let {year, month, day, hour, minute, second} = getTimeZoneParts(ms, timeZone);\n  let utc = epochFromParts(year, month, day, hour, minute, second, 0);\n  return utc - Math.floor(ms / 1000) * 1000;\n}\n\nconst formattersByTimeZone = new Map<string, Intl.DateTimeFormat>();\n\nfunction getTimeZoneParts(ms: number, timeZone: string) {\n  let formatter = formattersByTimeZone.get(timeZone);\n  if (!formatter) {\n    formatter = new Intl.DateTimeFormat('en-US', {\n      timeZone,\n      hour12: false,\n      era: 'short',\n      year: 'numeric',\n      month: 'numeric',\n      day: 'numeric',\n      hour: 'numeric',\n      minute: 'numeric',\n      second: 'numeric'\n    });\n\n    formattersByTimeZone.set(timeZone, formatter);\n  }\n\n  let parts = formatter.formatToParts(new Date(ms));\n  let namedParts: {[name: string]: string} = {};\n  for (let part of parts) {\n    if (part.type !== 'literal') {\n      namedParts[part.type] = part.value;\n    }\n  }\n\n\n  return {\n    // Firefox returns B instead of BC... https://bugzilla.mozilla.org/show_bug.cgi?id=1752253\n    year: namedParts.era === 'BC' || namedParts.era === 'B' ? -namedParts.year + 1 : +namedParts.year,\n    month: +namedParts.month,\n    day: +namedParts.day,\n    hour: namedParts.hour === '24' ? 0 : +namedParts.hour, // bugs.chromium.org/p/chromium/issues/detail?id=1045791\n    minute: +namedParts.minute,\n    second: +namedParts.second\n  };\n}\n\nconst DAYMILLIS = 86400000;\n\nexport function possibleAbsolutes(date: CalendarDateTime, timeZone: string): number[] {\n  let ms = epochFromDate(date);\n  let earlier = ms - getTimeZoneOffset(ms - DAYMILLIS, timeZone);\n  let later = ms - getTimeZoneOffset(ms + DAYMILLIS, timeZone);\n  return getValidWallTimes(date, timeZone, earlier, later);\n}\n\nfunction getValidWallTimes(date: CalendarDateTime, timeZone: string, earlier: number, later: number): number[] {\n  let found = earlier === later ? [earlier] : [earlier, later];\n  return found.filter(absolute => isValidWallTime(date, timeZone, absolute));\n}\n\nfunction isValidWallTime(date: CalendarDateTime, timeZone: string, absolute: number) {\n  let parts = getTimeZoneParts(absolute, timeZone);\n  return date.year === parts.year\n    && date.month === parts.month\n    && date.day === parts.day\n    && date.hour === parts.hour\n    && date.minute === parts.minute\n    && date.second === parts.second;\n}\n\nexport function toAbsolute(date: CalendarDate | CalendarDateTime, timeZone: string, disambiguation: Disambiguation = 'compatible'): number {\n  let dateTime = toCalendarDateTime(date);\n\n  // Fast path: if the time zone is UTC, use native Date.\n  if (timeZone === 'UTC') {\n    return epochFromDate(dateTime);\n  }\n\n  // Fast path: if the time zone is the local timezone and disambiguation is compatible, use native Date.\n  if (timeZone === getLocalTimeZone() && disambiguation === 'compatible') {\n    dateTime = toCalendar(dateTime, new GregorianCalendar());\n\n    // Don't use Date constructor here because two-digit years are interpreted in the 20th century.\n    let date = new Date();\n    let year = getExtendedYear(dateTime.era, dateTime.year);\n    date.setFullYear(year, dateTime.month - 1, dateTime.day);\n    date.setHours(dateTime.hour, dateTime.minute, dateTime.second, dateTime.millisecond);\n    return date.getTime();\n  }\n\n  let ms = epochFromDate(dateTime);\n  let offsetBefore = getTimeZoneOffset(ms - DAYMILLIS, timeZone);\n  let offsetAfter = getTimeZoneOffset(ms + DAYMILLIS, timeZone);\n  let valid = getValidWallTimes(dateTime, timeZone, ms - offsetBefore, ms - offsetAfter);\n\n  if (valid.length === 1) {\n    return valid[0];\n  }\n\n  if (valid.length > 1) {\n    switch (disambiguation) {\n      // 'compatible' means 'earlier' for \"fall back\" transitions\n      case 'compatible':\n      case 'earlier':\n        return valid[0];\n      case 'later':\n        return valid[valid.length - 1];\n      case 'reject':\n        throw new RangeError('Multiple possible absolute times found');\n    }\n  }\n\n  switch (disambiguation) {\n    case 'earlier':\n      return Math.min(ms - offsetBefore, ms - offsetAfter);\n    // 'compatible' means 'later' for \"spring forward\" transitions\n    case 'compatible':\n    case 'later':\n      return Math.max(ms - offsetBefore, ms - offsetAfter);\n    case 'reject':\n      throw new RangeError('No such absolute time found');\n  }\n}\n\nexport function toDate(dateTime: CalendarDate | CalendarDateTime, timeZone: string, disambiguation: Disambiguation = 'compatible'): Date {\n  return new Date(toAbsolute(dateTime, timeZone, disambiguation));\n}\n\n/**\n * Takes a Unix epoch (milliseconds since 1970) and converts it to the provided time zone.\n */\nexport function fromAbsolute(ms: number, timeZone: string): ZonedDateTime {\n  let offset = getTimeZoneOffset(ms, timeZone);\n  let date = new Date(ms + offset);\n  let year = date.getUTCFullYear();\n  let month = date.getUTCMonth() + 1;\n  let day = date.getUTCDate();\n  let hour = date.getUTCHours();\n  let minute = date.getUTCMinutes();\n  let second = date.getUTCSeconds();\n  let millisecond = date.getUTCMilliseconds();\n\n  return new ZonedDateTime(year < 1 ? 'BC' : 'AD', year < 1 ? -year + 1 : year, month, day, timeZone, offset, hour, minute, second, millisecond);\n}\n\n/**\n * Takes a `Date` object and converts it to the provided time zone.\n */\nexport function fromDate(date: Date, timeZone: string): ZonedDateTime {\n  return fromAbsolute(date.getTime(), timeZone);\n}\n\nexport function fromDateToLocal(date: Date): ZonedDateTime {\n  return fromDate(date, getLocalTimeZone());\n}\n\n/** Converts a value with date components such as a `CalendarDateTime` or `ZonedDateTime` into a `CalendarDate`. */\nexport function toCalendarDate(dateTime: AnyCalendarDate): CalendarDate {\n  return new CalendarDate(dateTime.calendar, dateTime.era, dateTime.year, dateTime.month, dateTime.day);\n}\n\nexport function toDateFields(date: AnyCalendarDate): DateFields {\n  return {\n    era: date.era,\n    year: date.year,\n    month: date.month,\n    day: date.day\n  };\n}\n\nexport function toTimeFields(date: AnyTime): TimeFields {\n  return {\n    hour: date.hour,\n    minute: date.minute,\n    second: date.second,\n    millisecond: date.millisecond\n  };\n}\n\n/**\n * Converts a date value to a `CalendarDateTime`. An optional `Time` value can be passed to set the time\n * of the resulting value, otherwise it will default to midnight.\n */\nexport function toCalendarDateTime(date: CalendarDate | CalendarDateTime | ZonedDateTime, time?: AnyTime): CalendarDateTime {\n  let hour = 0, minute = 0, second = 0, millisecond = 0;\n  if ('timeZone' in date) {\n    ({hour, minute, second, millisecond} = date);\n  } else if ('hour' in date && !time) {\n    return date;\n  }\n\n  if (time) {\n    ({hour, minute, second, millisecond} = time);\n  }\n\n  return new CalendarDateTime(\n    date.calendar,\n    date.era,\n    date.year,\n    date.month,\n    date.day,\n    hour,\n    minute,\n    second,\n    millisecond\n  );\n}\n\n/** Extracts the time components from a value containing a date and time. */\nexport function toTime(dateTime: CalendarDateTime | ZonedDateTime): Time {\n  return new Time(dateTime.hour, dateTime.minute, dateTime.second, dateTime.millisecond);\n}\n\n/** Converts a date from one calendar system to another. */\nexport function toCalendar<T extends AnyCalendarDate>(date: T, calendar: Calendar): T {\n  if (isEqualCalendar(date.calendar, calendar)) {\n    return date;\n  }\n\n  let calendarDate = calendar.fromJulianDay(date.calendar.toJulianDay(date));\n  let copy: Mutable<T> = date.copy();\n  copy.calendar = calendar;\n  copy.era = calendarDate.era;\n  copy.year = calendarDate.year;\n  copy.month = calendarDate.month;\n  copy.day = calendarDate.day;\n  constrain(copy);\n  return copy;\n}\n\n/**\n * Converts a date value to a `ZonedDateTime` in the provided time zone. The `disambiguation` option can be set\n * to control how values that fall on daylight saving time changes are interpreted.\n */\nexport function toZoned(date: CalendarDate | CalendarDateTime | ZonedDateTime, timeZone: string, disambiguation?: Disambiguation): ZonedDateTime {\n  if (date instanceof ZonedDateTime) {\n    if (date.timeZone === timeZone) {\n      return date;\n    }\n\n    return toTimeZone(date, timeZone);\n  }\n\n  let ms = toAbsolute(date, timeZone, disambiguation);\n  return fromAbsolute(ms, timeZone);\n}\n\nexport function zonedToDate(date: ZonedDateTime): Date {\n  let ms = epochFromDate(date) - date.offset;\n  return new Date(ms);\n}\n\n/** Converts a `ZonedDateTime` from one time zone to another. */\nexport function toTimeZone(date: ZonedDateTime, timeZone: string): ZonedDateTime {\n  let ms = epochFromDate(date) - date.offset;\n  return toCalendar(fromAbsolute(ms, timeZone), date.calendar);\n}\n\n/** Converts the given `ZonedDateTime` into the user's local time zone. */\nexport function toLocalTimeZone(date: ZonedDateTime): ZonedDateTime {\n  return toTimeZone(date, getLocalTimeZone());\n}\n", "/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {AnyCalendarDate, AnyDateTime, AnyTime, CycleOptions, CycleTimeOptions, DateDuration, DateField, DateFields, DateTimeDuration, Disambiguation, TimeDuration, TimeField, TimeFields} from './types';\nimport {CalendarDate, CalendarDateTime, Time, ZonedDateTime} from './CalendarDate';\nimport {epochFromDate, fromAbsolute, toAbsolute, toCalendar, toCalendarDateTime} from './conversion';\nimport {GregorianCalendar} from './calendars/GregorianCalendar';\nimport {Mutable} from './utils';\n\nconst ONE_HOUR = 3600000;\n\nexport function add(date: CalendarDateTime, duration: DateTimeDuration): CalendarDateTime;\nexport function add(date: CalendarDate, duration: DateDuration): CalendarDate;\nexport function add(date: CalendarDate | CalendarDateTime, duration: DateTimeDuration): CalendarDate | CalendarDateTime;\nexport function add(date: CalendarDate | CalendarDateTime, duration: DateTimeDuration): Mutable<AnyCalendarDate | AnyDateTime> {\n  let mutableDate: Mutable<AnyCalendarDate | AnyDateTime> = date.copy();\n  let days = 'hour' in mutableDate ? addTimeFields(mutableDate, duration) : 0;\n\n  addYears(mutableDate, duration.years || 0);\n  if (mutableDate.calendar.balanceYearMonth) {\n    mutableDate.calendar.balanceYearMonth(mutableDate, date);\n  }\n\n  mutableDate.month += duration.months || 0;\n\n  balanceYearMonth(mutableDate);\n  constrainMonthDay(mutableDate);\n\n  mutableDate.day += (duration.weeks || 0) * 7;\n  mutableDate.day += duration.days || 0;\n  mutableDate.day += days;\n\n  balanceDay(mutableDate);\n\n  if (mutableDate.calendar.balanceDate) {\n    mutableDate.calendar.balanceDate(mutableDate);\n  }\n\n  // Constrain in case adding ended up with a date outside the valid range for the calendar system.\n  // The behavior here is slightly different than when constraining in the `set` function in that\n  // we adjust smaller fields to their minimum/maximum values rather than constraining each field\n  // individually. This matches the general behavior of `add` vs `set` regarding how fields are balanced.\n  if (mutableDate.year < 1) {\n    mutableDate.year = 1;\n    mutableDate.month = 1;\n    mutableDate.day = 1;\n  }\n\n  let maxYear = mutableDate.calendar.getYearsInEra(mutableDate);\n  if (mutableDate.year > maxYear) {\n    let isInverseEra = mutableDate.calendar.isInverseEra?.(mutableDate);\n    mutableDate.year = maxYear;\n    mutableDate.month = isInverseEra ? 1 : mutableDate.calendar.getMonthsInYear(mutableDate);\n    mutableDate.day = isInverseEra ? 1 : mutableDate.calendar.getDaysInMonth(mutableDate);\n  }\n\n  if (mutableDate.month < 1) {\n    mutableDate.month = 1;\n    mutableDate.day = 1;\n  }\n\n  let maxMonth = mutableDate.calendar.getMonthsInYear(mutableDate);\n  if (mutableDate.month > maxMonth) {\n    mutableDate.month = maxMonth;\n    mutableDate.day = mutableDate.calendar.getDaysInMonth(mutableDate);\n  }\n\n  mutableDate.day = Math.max(1, Math.min(mutableDate.calendar.getDaysInMonth(mutableDate), mutableDate.day));\n  return mutableDate;\n}\n\nfunction addYears(date: Mutable<AnyCalendarDate>, years: number) {\n  if (date.calendar.isInverseEra?.(date)) {\n    years = -years;\n  }\n\n  date.year += years;\n}\n\nfunction balanceYearMonth(date: Mutable<AnyCalendarDate>) {\n  while (date.month < 1) {\n    addYears(date, -1);\n    date.month += date.calendar.getMonthsInYear(date);\n  }\n\n  let monthsInYear = 0;\n  while (date.month > (monthsInYear = date.calendar.getMonthsInYear(date))) {\n    date.month -= monthsInYear;\n    addYears(date, 1);\n  }\n}\n\nfunction balanceDay(date: Mutable<AnyCalendarDate>) {\n  while (date.day < 1) {\n    date.month--;\n    balanceYearMonth(date);\n    date.day += date.calendar.getDaysInMonth(date);\n  }\n\n  while (date.day > date.calendar.getDaysInMonth(date)) {\n    date.day -= date.calendar.getDaysInMonth(date);\n    date.month++;\n    balanceYearMonth(date);\n  }\n}\n\nfunction constrainMonthDay(date: Mutable<AnyCalendarDate>) {\n  date.month = Math.max(1, Math.min(date.calendar.getMonthsInYear(date), date.month));\n  date.day = Math.max(1, Math.min(date.calendar.getDaysInMonth(date), date.day));\n}\n\nexport function constrain(date: Mutable<AnyCalendarDate>): void {\n  if (date.calendar.constrainDate) {\n    date.calendar.constrainDate(date);\n  }\n\n  date.year = Math.max(1, Math.min(date.calendar.getYearsInEra(date), date.year));\n  constrainMonthDay(date);\n}\n\nexport function invertDuration(duration: DateTimeDuration): DateTimeDuration {\n  let inverseDuration = {};\n  for (let key in duration) {\n    if (typeof duration[key] === 'number') {\n      inverseDuration[key] = -duration[key];\n    }\n  }\n\n  return inverseDuration;\n}\n\nexport function subtract(date: CalendarDateTime, duration: DateTimeDuration): CalendarDateTime;\nexport function subtract(date: CalendarDate, duration: DateDuration): CalendarDate;\nexport function subtract(date: CalendarDate | CalendarDateTime, duration: DateTimeDuration): CalendarDate | CalendarDateTime {\n  return add(date, invertDuration(duration));\n}\n\nexport function set(date: CalendarDateTime, fields: DateFields): CalendarDateTime;\nexport function set(date: CalendarDate, fields: DateFields): CalendarDate;\nexport function set(date: CalendarDate | CalendarDateTime, fields: DateFields): Mutable<AnyCalendarDate> {\n  let mutableDate: Mutable<AnyCalendarDate> = date.copy();\n\n  if (fields.era != null) {\n    mutableDate.era = fields.era;\n  }\n\n  if (fields.year != null) {\n    mutableDate.year = fields.year;\n  }\n\n  if (fields.month != null) {\n    mutableDate.month = fields.month;\n  }\n\n  if (fields.day != null) {\n    mutableDate.day = fields.day;\n  }\n\n  constrain(mutableDate);\n  return mutableDate;\n}\n\nexport function setTime(value: CalendarDateTime, fields: TimeFields): CalendarDateTime;\nexport function setTime(value: Time, fields: TimeFields): Time;\nexport function setTime(value: Time | CalendarDateTime, fields: TimeFields): Mutable<Time | CalendarDateTime> {\n  let mutableValue: Mutable<Time | CalendarDateTime> = value.copy();\n\n  if (fields.hour != null) {\n    mutableValue.hour = fields.hour;\n  }\n\n  if (fields.minute != null) {\n    mutableValue.minute = fields.minute;\n  }\n\n  if (fields.second != null) {\n    mutableValue.second = fields.second;\n  }\n\n  if (fields.millisecond != null) {\n    mutableValue.millisecond = fields.millisecond;\n  }\n\n  constrainTime(mutableValue);\n  return mutableValue;\n}\n\nfunction balanceTime(time: Mutable<AnyTime>): number {\n  time.second += Math.floor(time.millisecond / 1000);\n  time.millisecond = nonNegativeMod(time.millisecond, 1000);\n\n  time.minute += Math.floor(time.second / 60);\n  time.second = nonNegativeMod(time.second, 60);\n\n  time.hour += Math.floor(time.minute / 60);\n  time.minute = nonNegativeMod(time.minute, 60);\n\n  let days = Math.floor(time.hour / 24);\n  time.hour = nonNegativeMod(time.hour, 24);\n\n  return days;\n}\n\nexport function constrainTime(time: Mutable<AnyTime>): void {\n  time.millisecond = Math.max(0, Math.min(time.millisecond, 1000));\n  time.second = Math.max(0, Math.min(time.second, 59));\n  time.minute = Math.max(0, Math.min(time.minute, 59));\n  time.hour = Math.max(0, Math.min(time.hour, 23));\n}\n\nfunction nonNegativeMod(a: number, b: number) {\n  let result = a % b;\n  if (result < 0) {\n    result += b;\n  }\n  return result;\n}\n\nfunction addTimeFields(time: Mutable<AnyTime>, duration: TimeDuration): number {\n  time.hour += duration.hours || 0;\n  time.minute += duration.minutes || 0;\n  time.second += duration.seconds || 0;\n  time.millisecond += duration.milliseconds || 0;\n  return balanceTime(time);\n}\n\nexport function addTime(time: Time, duration: TimeDuration): Time {\n  let res = time.copy();\n  addTimeFields(res, duration);\n  return res;\n}\n\nexport function subtractTime(time: Time, duration: TimeDuration): Time {\n  return addTime(time, invertDuration(duration));\n}\n\nexport function cycleDate(value: CalendarDateTime, field: DateField, amount: number, options?: CycleOptions): CalendarDateTime;\nexport function cycleDate(value: CalendarDate, field: DateField, amount: number, options?: CycleOptions): CalendarDate;\nexport function cycleDate(value: CalendarDate | CalendarDateTime, field: DateField, amount: number, options?: CycleOptions): Mutable<CalendarDate | CalendarDateTime> {\n  let mutable: Mutable<CalendarDate | CalendarDateTime> = value.copy();\n\n  switch (field) {\n    case 'era': {\n      let eras = value.calendar.getEras();\n      let eraIndex = eras.indexOf(value.era);\n      if (eraIndex < 0) {\n        throw new Error('Invalid era: ' + value.era);\n      }\n      eraIndex = cycleValue(eraIndex, amount, 0, eras.length - 1, options?.round);\n      mutable.era = eras[eraIndex];\n\n      // Constrain the year and other fields within the era, so the era doesn't change when we balance below.\n      constrain(mutable);\n      break;\n    }\n    case 'year': {\n      if (mutable.calendar.isInverseEra?.(mutable)) {\n        amount = -amount;\n      }\n\n      // The year field should not cycle within the era as that can cause weird behavior affecting other fields.\n      // We need to also allow values < 1 so that decrementing goes to the previous era. If we get -Infinity back\n      // we know we wrapped around after reaching 9999 (the maximum), so set the year back to 1.\n      mutable.year = cycleValue(value.year, amount, -Infinity, 9999, options?.round);\n      if (mutable.year === -Infinity) {\n        mutable.year = 1;\n      }\n\n      if (mutable.calendar.balanceYearMonth) {\n        mutable.calendar.balanceYearMonth(mutable, value);\n      }\n      break;\n    }\n    case 'month':\n      mutable.month = cycleValue(value.month, amount, 1, value.calendar.getMonthsInYear(value), options?.round);\n      break;\n    case 'day':\n      mutable.day = cycleValue(value.day, amount, 1, value.calendar.getDaysInMonth(value), options?.round);\n      break;\n    default:\n      throw new Error('Unsupported field ' + field);\n  }\n\n  if (value.calendar.balanceDate) {\n    value.calendar.balanceDate(mutable);\n  }\n\n  constrain(mutable);\n  return mutable;\n}\n\nexport function cycleTime(value: CalendarDateTime, field: TimeField, amount: number, options?: CycleTimeOptions): CalendarDateTime;\nexport function cycleTime(value: Time, field: TimeField, amount: number, options?: CycleTimeOptions): Time;\nexport function cycleTime(value: Time | CalendarDateTime, field: TimeField, amount: number, options?: CycleTimeOptions): Mutable<Time | CalendarDateTime> {\n  let mutable: Mutable<Time | CalendarDateTime> = value.copy();\n\n  switch (field) {\n    case 'hour': {\n      let hours = value.hour;\n      let min = 0;\n      let max = 23;\n      if (options?.hourCycle === 12) {\n        let isPM = hours >= 12;\n        min = isPM ? 12 : 0;\n        max = isPM ? 23 : 11;\n      }\n      mutable.hour = cycleValue(hours, amount, min, max, options?.round);\n      break;\n    }\n    case 'minute':\n      mutable.minute = cycleValue(value.minute, amount, 0, 59, options?.round);\n      break;\n    case 'second':\n      mutable.second = cycleValue(value.second, amount, 0, 59, options?.round);\n      break;\n    case 'millisecond':\n      mutable.millisecond = cycleValue(value.millisecond, amount, 0, 999, options?.round);\n      break;\n    default:\n      throw new Error('Unsupported field ' + field);\n  }\n\n  return mutable;\n}\n\nfunction cycleValue(value: number, amount: number, min: number, max: number, round = false) {\n  if (round) {\n    value += Math.sign(amount);\n\n    if (value < min) {\n      value = max;\n    }\n\n    let div = Math.abs(amount);\n    if (amount > 0) {\n      value = Math.ceil(value / div) * div;\n    } else {\n      value = Math.floor(value / div) * div;\n    }\n\n    if (value > max) {\n      value = min;\n    }\n  } else {\n    value += amount;\n    if (value < min) {\n      value = max - (min - value - 1);\n    } else if (value > max) {\n      value = min + (value - max - 1);\n    }\n  }\n\n  return value;\n}\n\nexport function addZoned(dateTime: ZonedDateTime, duration: DateTimeDuration): ZonedDateTime {\n  let ms: number;\n  if ((duration.years != null && duration.years !== 0) || (duration.months != null && duration.months !== 0) || (duration.weeks != null && duration.weeks !== 0) || (duration.days != null && duration.days !== 0)) {\n    let res = add(toCalendarDateTime(dateTime), {\n      years: duration.years,\n      months: duration.months,\n      weeks: duration.weeks,\n      days: duration.days\n    });\n\n    // Changing the date may change the timezone offset, so we need to recompute\n    // using the 'compatible' disambiguation.\n    ms = toAbsolute(res, dateTime.timeZone);\n  } else {\n    // Otherwise, preserve the offset of the original date.\n    ms = epochFromDate(dateTime) - dateTime.offset;\n  }\n\n  // Perform time manipulation in milliseconds rather than on the original time fields to account for DST.\n  // For example, adding one hour during a DST transition may result in the hour field staying the same or\n  // skipping an hour. This results in the offset field changing value instead of the specified field.\n  ms += duration.milliseconds || 0;\n  ms += (duration.seconds || 0) * 1000;\n  ms += (duration.minutes || 0) * 60 * 1000;\n  ms += (duration.hours || 0) * 60 * 60 * 1000;\n\n  let res = fromAbsolute(ms, dateTime.timeZone);\n  return toCalendar(res, dateTime.calendar);\n}\n\nexport function subtractZoned(dateTime: ZonedDateTime, duration: DateTimeDuration): ZonedDateTime {\n  return addZoned(dateTime, invertDuration(duration));\n}\n\nexport function cycleZoned(dateTime: ZonedDateTime, field: DateField | TimeField, amount: number, options?: CycleTimeOptions): ZonedDateTime {\n  // For date fields, we want the time to remain consistent and the UTC offset to potentially change to account for DST changes.\n  // For time fields, we want the time to change by the amount given. This may result in the hour field staying the same, but the UTC\n  // offset changing in the case of a backward DST transition, or skipping an hour in the case of a forward DST transition.\n  switch (field) {\n    case 'hour': {\n      let min = 0;\n      let max = 23;\n      if (options?.hourCycle === 12) {\n        let isPM = dateTime.hour >= 12;\n        min = isPM ? 12 : 0;\n        max = isPM ? 23 : 11;\n      }\n\n      // The minimum and maximum hour may be affected by daylight saving time.\n      // For example, it might jump forward at midnight, and skip 1am.\n      // Or it might end at midnight and repeat the 11pm hour. To handle this, we get\n      // the possible absolute times for the min and max, and find the maximum range\n      // that is within the current day.\n      let plainDateTime = toCalendarDateTime(dateTime);\n      let minDate = toCalendar(setTime(plainDateTime, {hour: min}), new GregorianCalendar());\n      let minAbsolute = [toAbsolute(minDate, dateTime.timeZone, 'earlier'), toAbsolute(minDate, dateTime.timeZone, 'later')]\n        .filter(ms => fromAbsolute(ms, dateTime.timeZone).day === minDate.day)[0];\n\n      let maxDate = toCalendar(setTime(plainDateTime, {hour: max}), new GregorianCalendar());\n      let maxAbsolute = [toAbsolute(maxDate, dateTime.timeZone, 'earlier'), toAbsolute(maxDate, dateTime.timeZone, 'later')]\n        .filter(ms => fromAbsolute(ms, dateTime.timeZone).day === maxDate.day).pop()!;\n\n      // Since hours may repeat, we need to operate on the absolute time in milliseconds.\n      // This is done in hours from the Unix epoch so that cycleValue works correctly,\n      // and then converted back to milliseconds.\n      let ms = epochFromDate(dateTime) - dateTime.offset;\n      let hours = Math.floor(ms / ONE_HOUR);\n      let remainder = ms % ONE_HOUR;\n      ms = cycleValue(\n        hours,\n        amount,\n        Math.floor(minAbsolute / ONE_HOUR),\n        Math.floor(maxAbsolute / ONE_HOUR),\n        options?.round\n      ) * ONE_HOUR + remainder;\n\n      // Now compute the new timezone offset, and convert the absolute time back to local time.\n      return toCalendar(fromAbsolute(ms, dateTime.timeZone), dateTime.calendar);\n    }\n    case 'minute':\n    case 'second':\n    case 'millisecond':\n      // @ts-ignore\n      return cycleTime(dateTime, field, amount, options);\n    case 'era':\n    case 'year':\n    case 'month':\n    case 'day': {\n      let res = cycleDate(toCalendarDateTime(dateTime), field, amount, options);\n      let ms = toAbsolute(res, dateTime.timeZone);\n      return toCalendar(fromAbsolute(ms, dateTime.timeZone), dateTime.calendar);\n    }\n    default:\n      throw new Error('Unsupported field ' + field);\n  }\n}\n\nexport function setZoned(dateTime: ZonedDateTime, fields: DateFields & TimeFields, disambiguation?: Disambiguation): ZonedDateTime {\n  // Set the date/time fields, and recompute the UTC offset to account for DST changes.\n  // We also need to validate by converting back to a local time in case hours are skipped during forward DST transitions.\n  let plainDateTime = toCalendarDateTime(dateTime);\n  let res = setTime(set(plainDateTime, fields), fields);\n\n  // If the resulting plain date time values are equal, return the original time.\n  // We don't want to change the offset when setting the time to the same value.\n  if (res.compare(plainDateTime) === 0) {\n    return dateTime;\n  }\n\n  let ms = toAbsolute(res, dateTime.timeZone, disambiguation);\n  return toCalendar(fromAbsolute(ms, dateTime.timeZone), dateTime.calendar);\n}\n", "/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {AnyDateTime, DateTimeDuration, Disambiguation} from './types';\nimport {CalendarDate, CalendarDateTime, Time, ZonedDateTime} from './CalendarDate';\nimport {epochFromDate, fromAbsolute, possibleAbsolutes, toAbsolute, toCalendar, toCalendarDateTime, toTimeZone} from './conversion';\nimport {getLocalTimeZone} from './queries';\nimport {GregorianCalendar} from './calendars/GregorianCalendar';\nimport {Mutable} from './utils';\n\nconst TIME_RE = /^(\\d{2})(?::(\\d{2}))?(?::(\\d{2}))?(\\.\\d+)?$/;\nconst DATE_RE = /^([+-]\\d{6}|\\d{4})-(\\d{2})-(\\d{2})$/;\nconst DATE_TIME_RE = /^([+-]\\d{6}|\\d{4})-(\\d{2})-(\\d{2})(?:T(\\d{2}))?(?::(\\d{2}))?(?::(\\d{2}))?(\\.\\d+)?$/;\nconst ZONED_DATE_TIME_RE = /^([+-]\\d{6}|\\d{4})-(\\d{2})-(\\d{2})(?:T(\\d{2}))?(?::(\\d{2}))?(?::(\\d{2}))?(\\.\\d+)?(?:([+-]\\d{2})(?::?(\\d{2}))?(?::?(\\d{2}))?)?\\[(.*?)\\]$/;\nconst ABSOLUTE_RE = /^([+-]\\d{6}|\\d{4})-(\\d{2})-(\\d{2})(?:T(\\d{2}))?(?::(\\d{2}))?(?::(\\d{2}))?(\\.\\d+)?(?:(?:([+-]\\d{2})(?::?(\\d{2}))?)|Z)$/;\nconst DATE_TIME_DURATION_RE =\n    /^((?<negative>-)|\\+)?P((?<years>\\d*)Y)?((?<months>\\d*)M)?((?<weeks>\\d*)W)?((?<days>\\d*)D)?((?<time>T)((?<hours>\\d*[.,]?\\d{1,9})H)?((?<minutes>\\d*[.,]?\\d{1,9})M)?((?<seconds>\\d*[.,]?\\d{1,9})S)?)?$/;\nconst requiredDurationTimeGroups = ['hours', 'minutes', 'seconds'];\nconst requiredDurationGroups = ['years', 'months', 'weeks', 'days', ...requiredDurationTimeGroups];\n\n/** Parses an ISO 8601 time string. */\nexport function parseTime(value: string): Time {\n  let m = value.match(TIME_RE);\n  if (!m) {\n    throw new Error('Invalid ISO 8601 time string: ' + value);\n  }\n\n  return new Time(\n    parseNumber(m[1], 0, 23),\n    m[2] ? parseNumber(m[2], 0, 59) : 0,\n    m[3] ? parseNumber(m[3], 0, 59) : 0,\n    m[4] ? parseNumber(m[4], 0, Infinity) * 1000 : 0\n  );\n}\n\n/** Parses an ISO 8601 date string, with no time components. */\nexport function parseDate(value: string): CalendarDate {\n  let m = value.match(DATE_RE);\n  if (!m) {\n    throw new Error('Invalid ISO 8601 date string: ' + value);\n  }\n\n  let date: Mutable<CalendarDate> = new CalendarDate(\n    parseNumber(m[1], 0, 9999),\n    parseNumber(m[2], 1, 12),\n    1\n  );\n\n  date.day = parseNumber(m[3], 1, date.calendar.getDaysInMonth(date));\n  return date as CalendarDate;\n}\n\n/** Parses an ISO 8601 date and time string, with no time zone. */\nexport function parseDateTime(value: string): CalendarDateTime {\n  let m = value.match(DATE_TIME_RE);\n  if (!m) {\n    throw new Error('Invalid ISO 8601 date time string: ' + value);\n  }\n\n  let year = parseNumber(m[1], -9999, 9999);\n  let era = year < 1 ? 'BC' : 'AD';\n\n  let date: Mutable<CalendarDateTime> = new CalendarDateTime(\n    era,\n    year < 1 ? -year + 1 : year,\n    parseNumber(m[2], 1, 12),\n    1,\n    m[4] ? parseNumber(m[4], 0, 23) : 0,\n    m[5] ? parseNumber(m[5], 0, 59) : 0,\n    m[6] ? parseNumber(m[6], 0, 59) : 0,\n    m[7] ? parseNumber(m[7], 0, Infinity) * 1000 : 0\n  );\n\n  date.day = parseNumber(m[3], 0, date.calendar.getDaysInMonth(date));\n  return date as CalendarDateTime;\n}\n\n/**\n * Parses an ISO 8601 date and time string with a time zone extension and optional UTC offset\n * (e.g. \"2021-11-07T00:45[America/Los_Angeles]\" or \"2021-11-07T00:45-07:00[America/Los_Angeles]\").\n * Ambiguous times due to daylight saving time transitions are resolved according to the `disambiguation`\n * parameter.\n */\nexport function parseZonedDateTime(value: string, disambiguation?: Disambiguation): ZonedDateTime {\n  let m = value.match(ZONED_DATE_TIME_RE);\n  if (!m) {\n    throw new Error('Invalid ISO 8601 date time string: ' + value);\n  }\n\n  let year = parseNumber(m[1], -9999, 9999);\n  let era = year < 1 ? 'BC' : 'AD';\n\n  let date: Mutable<ZonedDateTime> = new ZonedDateTime(\n    era,\n    year < 1 ? -year + 1 : year,\n    parseNumber(m[2], 1, 12),\n    1,\n    m[11],\n    0,\n    m[4] ? parseNumber(m[4], 0, 23) : 0,\n    m[5] ? parseNumber(m[5], 0, 59) : 0,\n    m[6] ? parseNumber(m[6], 0, 59) : 0,\n    m[7] ? parseNumber(m[7], 0, Infinity) * 1000 : 0\n  );\n\n  date.day = parseNumber(m[3], 0, date.calendar.getDaysInMonth(date));\n\n  let plainDateTime = toCalendarDateTime(date as ZonedDateTime);\n\n  let ms: number;\n  if (m[8]) {\n    let hourOffset = parseNumber(m[8], -23, 23);\n    date.offset = Math.sign(hourOffset) * (Math.abs(hourOffset) * 60 * 60 * 1000 + parseNumber(m[9] ?? '0', 0, 59) * 60 * 1000 + parseNumber(m[10] ?? '0', 0, 59) * 1000);\n    ms = epochFromDate(date as ZonedDateTime) - date.offset;\n\n    // Validate offset against parsed date.\n    let absolutes = possibleAbsolutes(plainDateTime, date.timeZone);\n    if (!absolutes.includes(ms)) {\n      throw new Error(`Offset ${offsetToString(date.offset)} is invalid for ${dateTimeToString(date)} in ${date.timeZone}`);\n    }\n  } else {\n    // Convert to absolute and back to fix invalid times due to DST.\n    ms = toAbsolute(toCalendarDateTime(plainDateTime), date.timeZone, disambiguation);\n  }\n\n  return fromAbsolute(ms, date.timeZone);\n}\n\n/**\n * Parses an ISO 8601 date and time string with a UTC offset (e.g. \"2021-11-07T07:45:00Z\"\n * or \"2021-11-07T07:45:00-07:00\"). The result is converted to the provided time zone.\n */\nexport function parseAbsolute(value: string, timeZone: string): ZonedDateTime {\n  let m = value.match(ABSOLUTE_RE);\n  if (!m) {\n    throw new Error('Invalid ISO 8601 date time string: ' + value);\n  }\n\n  let year = parseNumber(m[1], -9999, 9999);\n  let era = year < 1 ? 'BC' : 'AD';\n\n  let date: Mutable<ZonedDateTime> = new ZonedDateTime(\n    era,\n    year < 1 ? -year + 1 : year,\n    parseNumber(m[2], 1, 12),\n    1,\n    timeZone,\n    0,\n    m[4] ? parseNumber(m[4], 0, 23) : 0,\n    m[5] ? parseNumber(m[5], 0, 59) : 0,\n    m[6] ? parseNumber(m[6], 0, 59) : 0,\n    m[7] ? parseNumber(m[7], 0, Infinity) * 1000 : 0\n  );\n\n  date.day = parseNumber(m[3], 0, date.calendar.getDaysInMonth(date));\n\n  if (m[8]) {\n    date.offset = parseNumber(m[8], -23, 23) * 60 * 60 * 1000 + parseNumber(m[9] ?? '0', 0, 59) * 60 * 1000;\n  }\n\n  return toTimeZone(date as ZonedDateTime, timeZone);\n}\n\n/**\n * Parses an ISO 8601 date and time string with a UTC offset (e.g. \"2021-11-07T07:45:00Z\"\n * or \"2021-11-07T07:45:00-07:00\"). The result is converted to the user's local time zone.\n */\nexport function parseAbsoluteToLocal(value: string): ZonedDateTime {\n  return parseAbsolute(value, getLocalTimeZone());\n}\n\nfunction parseNumber(value: string, min: number, max: number) {\n  let val = Number(value);\n  if (val < min || val > max) {\n    throw new RangeError(`Value out of range: ${min} <= ${val} <= ${max}`);\n  }\n\n  return val;\n}\n\nexport function timeToString(time: Time): string {\n  return `${String(time.hour).padStart(2, '0')}:${String(time.minute).padStart(2, '0')}:${String(time.second).padStart(2, '0')}${time.millisecond ? String(time.millisecond / 1000).slice(1) : ''}`;\n}\n\nexport function dateToString(date: CalendarDate): string {\n  let gregorianDate = toCalendar(date, new GregorianCalendar());\n  let year: string;\n  if (gregorianDate.era === 'BC') {\n    year = gregorianDate.year === 1\n      ? '0000'\n      : '-' + String(Math.abs(1 - gregorianDate.year)).padStart(6, '00');\n  } else {\n    year = String(gregorianDate.year).padStart(4, '0');\n  }\n  return `${year}-${String(gregorianDate.month).padStart(2, '0')}-${String(gregorianDate.day).padStart(2, '0')}`;\n}\n\nexport function dateTimeToString(date: AnyDateTime): string {\n  // @ts-ignore\n  return `${dateToString(date)}T${timeToString(date)}`;\n}\n\nfunction offsetToString(offset: number) {\n  let sign = Math.sign(offset) < 0 ? '-' : '+';\n  offset = Math.abs(offset);\n  let offsetHours = Math.floor(offset / (60 * 60 * 1000));\n  let offsetMinutes = Math.floor((offset % (60 * 60 * 1000)) / (60 * 1000));\n  let offsetSeconds = Math.floor((offset % (60 * 60 * 1000)) % (60 * 1000) / 1000);\n  let stringOffset = `${sign}${String(offsetHours).padStart(2, '0')}:${String(offsetMinutes).padStart(2, '0')}`;\n  if (offsetSeconds !== 0) {\n    stringOffset += `:${String(offsetSeconds).padStart(2, '0')}`;\n  }\n\n  return stringOffset;\n}\n\nexport function zonedDateTimeToString(date: ZonedDateTime): string {\n  return `${dateTimeToString(date)}${offsetToString(date.offset)}[${date.timeZone}]`;\n}\n\n/**\n * Parses an ISO 8601 duration string (e.g. \"P3Y6M6W4DT12H30M5S\").\n * @param value An ISO 8601 duration string.\n * @returns A DateTimeDuration object.\n */\nexport function parseDuration(value: string): Required<DateTimeDuration> {\n  const match = value.match(DATE_TIME_DURATION_RE);\n\n  if (!match) {\n    throw new Error(`Invalid ISO 8601 Duration string: ${value}`);\n  }\n\n  const parseDurationGroup = (\n    group: string | undefined,\n    isNegative: boolean\n  ): number => {\n    if (!group) {\n      return 0;\n    }\n    try {\n      const sign = isNegative ? -1 : 1;\n      return sign * Number(group.replace(',', '.'));\n    } catch {\n      throw new Error(`Invalid ISO 8601 Duration string: ${value}`);\n    }\n  };\n\n  const isNegative = !!match.groups?.negative;\n\n  const hasRequiredGroups = requiredDurationGroups.some(group => match.groups?.[group]);\n\n  if (!hasRequiredGroups) {\n    throw new Error(`Invalid ISO 8601 Duration string: ${value}`);\n  }\n\n  const durationStringIncludesTime = match.groups?.time;\n\n  if (durationStringIncludesTime) {\n    const hasRequiredDurationTimeGroups = requiredDurationTimeGroups.some(group => match.groups?.[group]);\n    if (!hasRequiredDurationTimeGroups) {\n      throw new Error(`Invalid ISO 8601 Duration string: ${value}`);\n    }\n  }\n\n  const duration: Mutable<DateTimeDuration> = {\n    years: parseDurationGroup(match.groups?.years, isNegative),\n    months: parseDurationGroup(match.groups?.months, isNegative),\n    weeks: parseDurationGroup(match.groups?.weeks, isNegative),\n    days: parseDurationGroup(match.groups?.days, isNegative),\n    hours: parseDurationGroup(match.groups?.hours, isNegative),\n    minutes: parseDurationGroup(match.groups?.minutes, isNegative),\n    seconds: parseDurationGroup(match.groups?.seconds, isNegative)\n  };\n\n  if (duration.hours !== undefined && ((duration.hours % 1) !== 0) && (duration.minutes || duration.seconds)) {\n    throw new Error(`Invalid ISO 8601 Duration string: ${value} - only the smallest unit can be fractional`);\n  }\n\n  if (duration.minutes !== undefined && ((duration.minutes % 1) !== 0) && duration.seconds) {\n    throw new Error(`Invalid ISO 8601 Duration string: ${value} - only the smallest unit can be fractional`);\n  }\n\n  return duration as Required<DateTimeDuration>;\n}\n", "function _check_private_redeclaration(obj, privateCollection) {\n    if (privateCollection.has(obj)) {\n        throw new TypeError(\"Cannot initialize the same private elements twice on an object\");\n    }\n}\nexport { _check_private_redeclaration as _ };\n", "import { _ as _check_private_redeclaration } from \"./_check_private_redeclaration.js\";\n\nfunction _class_private_field_init(obj, privateMap, value) {\n    _check_private_redeclaration(obj, privateMap);\n    privateMap.set(obj, value);\n}\nexport { _class_private_field_init as _ };\n", "/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {add, addTime, addZoned, constrain, constrainTime, cycleDate, cycleTime, cycleZoned, set, setTime, setZoned, subtract, subtractTime, subtractZoned} from './manipulation';\nimport {AnyCalendarDate, AnyTime, Calendar, CycleOptions, CycleTimeOptions, DateDuration, DateField, DateFields, DateTimeDuration, Disambiguation, TimeDuration, TimeField, TimeFields} from './types';\nimport {compareDate, compareTime} from './queries';\nimport {dateTimeToString, dateToString, timeToString, zonedDateTimeToString} from './string';\nimport {GregorianCalendar} from './calendars/GregorianCalendar';\nimport {toCalendarDateTime, toDate, toZoned, zonedToDate} from './conversion';\n\nfunction shiftArgs(args: any[]) {\n  let calendar: Calendar = typeof args[0] === 'object'\n    ? args.shift()\n    : new GregorianCalendar();\n\n  let era: string;\n  if (typeof args[0] === 'string') {\n    era = args.shift();\n  } else {\n    let eras = calendar.getEras();\n    era = eras[eras.length - 1];\n  }\n\n  let year = args.shift();\n  let month = args.shift();\n  let day = args.shift();\n\n  return [calendar, era, year, month, day];\n}\n\n/** A CalendarDate represents a date without any time components in a specific calendar system. */\nexport class CalendarDate {\n  // This prevents TypeScript from allowing other types with the same fields to match.\n  // i.e. a ZonedDateTime should not be be passable to a parameter that expects CalendarDate.\n  // If that behavior is desired, use the AnyCalendarDate interface instead.\n  // @ts-ignore\n  #type;\n  /** The calendar system associated with this date, e.g. Gregorian. */\n  public readonly calendar: Calendar;\n  /** The calendar era for this date, e.g. \"BC\" or \"AD\". */\n  public readonly era: string;\n  /** The year of this date within the era. */\n  public readonly year: number;\n  /**\n   * The month number within the year. Note that some calendar systems such as Hebrew\n   * may have a variable number of months per year. Therefore, month numbers may not\n   * always correspond to the same month names in different years.\n   */\n  public readonly month: number;\n  /** The day number within the month. */\n  public readonly day: number;\n\n  constructor(year: number, month: number, day: number);\n  constructor(era: string, year: number, month: number, day: number);\n  constructor(calendar: Calendar, year: number, month: number, day: number);\n  constructor(calendar: Calendar, era: string, year: number, month: number, day: number);\n  constructor(...args: any[]) {\n    let [calendar, era, year, month, day] = shiftArgs(args);\n    this.calendar = calendar;\n    this.era = era;\n    this.year = year;\n    this.month = month;\n    this.day = day;\n\n    constrain(this);\n  }\n\n  /** Returns a copy of this date. */\n  copy(): CalendarDate {\n    if (this.era) {\n      return new CalendarDate(this.calendar, this.era, this.year, this.month, this.day);\n    } else {\n      return new CalendarDate(this.calendar, this.year, this.month, this.day);\n    }\n  }\n\n  /** Returns a new `CalendarDate` with the given duration added to it. */\n  add(duration: DateDuration): CalendarDate {\n    return add(this, duration);\n  }\n\n  /** Returns a new `CalendarDate` with the given duration subtracted from it. */\n  subtract(duration: DateDuration): CalendarDate {\n    return subtract(this, duration);\n  }\n\n  /** Returns a new `CalendarDate` with the given fields set to the provided values. Other fields will be constrained accordingly. */\n  set(fields: DateFields): CalendarDate {\n    return set(this, fields);\n  }\n\n  /**\n   * Returns a new `CalendarDate` with the given field adjusted by a specified amount.\n   * When the resulting value reaches the limits of the field, it wraps around.\n   */\n  cycle(field: DateField, amount: number, options?: CycleOptions): CalendarDate {\n    return cycleDate(this, field, amount, options);\n  }\n\n  /** Converts the date to a native JavaScript Date object, with the time set to midnight in the given time zone. */\n  toDate(timeZone: string): Date {\n    return toDate(this, timeZone);\n  }\n\n  /** Converts the date to an ISO 8601 formatted string. */\n  toString(): string {\n    return dateToString(this);\n  }\n\n  /** Compares this date with another. A negative result indicates that this date is before the given one, and a positive date indicates that it is after. */\n  compare(b: AnyCalendarDate): number {\n    return compareDate(this, b);\n  }\n}\n\n/** A Time represents a clock time without any date components. */\nexport class Time {\n  // This prevents TypeScript from allowing other types with the same fields to match.\n  // @ts-ignore\n  #type;\n  /** The hour, numbered from 0 to 23. */\n  public readonly hour: number;\n  /** The minute in the hour. */\n  public readonly minute: number;\n  /** The second in the minute. */\n  public readonly second: number;\n  /** The millisecond in the second. */\n  public readonly millisecond: number;\n\n  constructor(\n    hour: number = 0,\n    minute: number = 0,\n    second: number = 0,\n    millisecond: number = 0\n  ) {\n    this.hour = hour;\n    this.minute = minute;\n    this.second = second;\n    this.millisecond = millisecond;\n    constrainTime(this);\n  }\n\n  /** Returns a copy of this time. */\n  copy(): Time {\n    return new Time(this.hour, this.minute, this.second, this.millisecond);\n  }\n\n  /** Returns a new `Time` with the given duration added to it. */\n  add(duration: TimeDuration): Time {\n    return addTime(this, duration);\n  }\n\n  /** Returns a new `Time` with the given duration subtracted from it. */\n  subtract(duration: TimeDuration): Time {\n    return subtractTime(this, duration);\n  }\n\n  /** Returns a new `Time` with the given fields set to the provided values. Other fields will be constrained accordingly. */\n  set(fields: TimeFields): Time {\n    return setTime(this, fields);\n  }\n\n  /**\n   * Returns a new `Time` with the given field adjusted by a specified amount.\n   * When the resulting value reaches the limits of the field, it wraps around.\n   */\n  cycle(field: TimeField, amount: number, options?: CycleTimeOptions): Time {\n    return cycleTime(this, field, amount, options);\n  }\n\n  /** Converts the time to an ISO 8601 formatted string. */\n  toString(): string {\n    return timeToString(this);\n  }\n\n  /** Compares this time with another. A negative result indicates that this time is before the given one, and a positive time indicates that it is after. */\n  compare(b: AnyTime): number {\n    return compareTime(this, b);\n  }\n}\n\n/** A CalendarDateTime represents a date and time without a time zone, in a specific calendar system. */\nexport class CalendarDateTime {\n  // This prevents TypeScript from allowing other types with the same fields to match.\n  // @ts-ignore\n  #type;\n  /** The calendar system associated with this date, e.g. Gregorian. */\n  public readonly calendar: Calendar;\n  /** The calendar era for this date, e.g. \"BC\" or \"AD\". */\n  public readonly era: string;\n  /** The year of this date within the era. */\n  public readonly year: number;\n  /**\n   * The month number within the year. Note that some calendar systems such as Hebrew\n   * may have a variable number of months per year. Therefore, month numbers may not\n   * always correspond to the same month names in different years.\n   */\n  public readonly month: number;\n  /** The day number within the month. */\n  public readonly day: number;\n  /** The hour in the day, numbered from 0 to 23. */\n  public readonly hour: number;\n  /** The minute in the hour. */\n  public readonly minute: number;\n  /** The second in the minute. */\n  public readonly second: number;\n  /** The millisecond in the second. */\n  public readonly millisecond: number;\n\n  constructor(year: number, month: number, day: number, hour?: number, minute?: number, second?: number, millisecond?: number);\n  constructor(era: string, year: number, month: number, day: number, hour?: number, minute?: number, second?: number, millisecond?: number);\n  constructor(calendar: Calendar, year: number, month: number, day: number, hour?: number, minute?: number, second?: number, millisecond?: number);\n  constructor(calendar: Calendar, era: string, year: number, month: number, day: number, hour?: number, minute?: number, second?: number, millisecond?: number);\n  constructor(...args: any[]) {\n    let [calendar, era, year, month, day] = shiftArgs(args);\n    this.calendar = calendar;\n    this.era = era;\n    this.year = year;\n    this.month = month;\n    this.day = day;\n    this.hour = args.shift() || 0;\n    this.minute = args.shift() || 0;\n    this.second = args.shift() || 0;\n    this.millisecond = args.shift() || 0;\n\n    constrain(this);\n  }\n\n  /** Returns a copy of this date. */\n  copy(): CalendarDateTime {\n    if (this.era) {\n      return new CalendarDateTime(this.calendar, this.era, this.year, this.month, this.day, this.hour, this.minute, this.second, this.millisecond);\n    } else {\n      return new CalendarDateTime(this.calendar, this.year, this.month, this.day, this.hour, this.minute, this.second, this.millisecond);\n    }\n  }\n\n  /** Returns a new `CalendarDateTime` with the given duration added to it. */\n  add(duration: DateTimeDuration): CalendarDateTime {\n    return add(this, duration);\n  }\n\n  /** Returns a new `CalendarDateTime` with the given duration subtracted from it. */\n  subtract(duration: DateTimeDuration): CalendarDateTime {\n    return subtract(this, duration);\n  }\n\n  /** Returns a new `CalendarDateTime` with the given fields set to the provided values. Other fields will be constrained accordingly. */\n  set(fields: DateFields & TimeFields): CalendarDateTime {\n    return set(setTime(this, fields), fields);\n  }\n\n  /**\n   * Returns a new `CalendarDateTime` with the given field adjusted by a specified amount.\n   * When the resulting value reaches the limits of the field, it wraps around.\n   */\n  cycle(field: DateField | TimeField, amount: number, options?: CycleTimeOptions): CalendarDateTime {\n    switch (field) {\n      case 'era':\n      case 'year':\n      case 'month':\n      case 'day':\n        return cycleDate(this, field, amount, options);\n      default:\n        return cycleTime(this, field, amount, options);\n    }\n  }\n\n  /** Converts the date to a native JavaScript Date object in the given time zone. */\n  toDate(timeZone: string, disambiguation?: Disambiguation): Date {\n    return toDate(this, timeZone, disambiguation);\n  }\n\n  /** Converts the date to an ISO 8601 formatted string. */\n  toString(): string {\n    return dateTimeToString(this);\n  }\n\n  /** Compares this date with another. A negative result indicates that this date is before the given one, and a positive date indicates that it is after. */\n  compare(b: CalendarDate | CalendarDateTime | ZonedDateTime): number {\n    let res = compareDate(this, b);\n    if (res === 0) {\n      return compareTime(this, toCalendarDateTime(b));\n    }\n\n    return res;\n  }\n}\n\n/** A ZonedDateTime represents a date and time in a specific time zone and calendar system. */\nexport class ZonedDateTime {\n  // This prevents TypeScript from allowing other types with the same fields to match.\n  // @ts-ignore\n  #type;\n  /** The calendar system associated with this date, e.g. Gregorian. */\n  public readonly calendar: Calendar;\n  /** The calendar era for this date, e.g. \"BC\" or \"AD\". */\n  public readonly era: string;\n  /** The year of this date within the era. */\n  public readonly year: number;\n  /**\n   * The month number within the year. Note that some calendar systems such as Hebrew\n   * may have a variable number of months per year. Therefore, month numbers may not\n   * always correspond to the same month names in different years.\n   */\n  public readonly month: number;\n  /** The day number within the month. */\n  public readonly day: number;\n  /** The hour in the day, numbered from 0 to 23. */\n  public readonly hour: number;\n  /** The minute in the hour. */\n  public readonly minute: number;\n  /** The second in the minute. */\n  public readonly second: number;\n  /** The millisecond in the second. */\n  public readonly millisecond: number;\n  /** The IANA time zone identifier that this date and time is represented in. */\n  public readonly timeZone: string;\n  /** The UTC offset for this time, in milliseconds. */\n  public readonly offset: number;\n\n  constructor(year: number, month: number, day: number, timeZone: string, offset: number, hour?: number, minute?: number, second?: number, millisecond?: number);\n  constructor(era: string, year: number, month: number, day: number, timeZone: string, offset: number, hour?: number, minute?: number, second?: number, millisecond?: number);\n  constructor(calendar: Calendar, year: number, month: number, day: number, timeZone: string, offset: number, hour?: number, minute?: number, second?: number, millisecond?: number);\n  constructor(calendar: Calendar, era: string, year: number, month: number, day: number, timeZone: string, offset: number, hour?: number, minute?: number, second?: number, millisecond?: number);\n  constructor(...args: any[]) {\n    let [calendar, era, year, month, day] = shiftArgs(args);\n    let timeZone = args.shift();\n    let offset = args.shift();\n    this.calendar = calendar;\n    this.era = era;\n    this.year = year;\n    this.month = month;\n    this.day = day;\n    this.timeZone = timeZone;\n    this.offset = offset;\n    this.hour = args.shift() || 0;\n    this.minute = args.shift() || 0;\n    this.second = args.shift() || 0;\n    this.millisecond = args.shift() || 0;\n\n    constrain(this);\n  }\n\n  /** Returns a copy of this date. */\n  copy(): ZonedDateTime {\n    if (this.era) {\n      return new ZonedDateTime(this.calendar, this.era, this.year, this.month, this.day, this.timeZone, this.offset, this.hour, this.minute, this.second, this.millisecond);\n    } else {\n      return new ZonedDateTime(this.calendar, this.year, this.month, this.day, this.timeZone, this.offset, this.hour, this.minute, this.second, this.millisecond);\n    }\n  }\n\n  /** Returns a new `ZonedDateTime` with the given duration added to it. */\n  add(duration: DateTimeDuration): ZonedDateTime {\n    return addZoned(this, duration);\n  }\n\n  /** Returns a new `ZonedDateTime` with the given duration subtracted from it. */\n  subtract(duration: DateTimeDuration): ZonedDateTime {\n    return subtractZoned(this, duration);\n  }\n\n  /** Returns a new `ZonedDateTime` with the given fields set to the provided values. Other fields will be constrained accordingly. */\n  set(fields: DateFields & TimeFields, disambiguation?: Disambiguation): ZonedDateTime {\n    return setZoned(this, fields, disambiguation);\n  }\n\n  /**\n   * Returns a new `ZonedDateTime` with the given field adjusted by a specified amount.\n   * When the resulting value reaches the limits of the field, it wraps around.\n   */\n  cycle(field: DateField | TimeField, amount: number, options?: CycleTimeOptions): ZonedDateTime {\n    return cycleZoned(this, field, amount, options);\n  }\n\n  /** Converts the date to a native JavaScript Date object. */\n  toDate(): Date {\n    return zonedToDate(this);\n  }\n\n   /** Converts the date to an ISO 8601 formatted string, including the UTC offset and time zone identifier. */\n  toString(): string {\n    return zonedDateTimeToString(this);\n  }\n\n   /** Converts the date to an ISO 8601 formatted string in UTC. */\n  toAbsoluteString(): string {\n    return this.toDate().toISOString();\n  }\n\n  /** Compares this date with another. A negative result indicates that this date is before the given one, and a positive date indicates that it is after. */\n  compare(b: CalendarDate | CalendarDateTime | ZonedDateTime): number {\n    // TODO: Is this a bad idea??\n    return this.toDate().getTime() - toZoned(b, this.timeZone).toDate().getTime();\n  }\n}\n", "/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nlet formatterCache = new Map<string, Intl.DateTimeFormat>();\n\ninterface DateRangeFormatPart extends Intl.DateTimeFormatPart {\n  source: 'startRange' | 'endRange' | 'shared'\n}\n\n/** A wrapper around Intl.DateTimeFormat that fixes various browser bugs, and polyfills new features. */\nexport class DateFormatter implements Intl.DateTimeFormat {\n  private formatter: Intl.DateTimeFormat;\n  private options: Intl.DateTimeFormatOptions;\n  private resolvedHourCycle: Intl.DateTimeFormatOptions['hourCycle'];\n\n  constructor(locale: string, options: Intl.DateTimeFormatOptions = {}) {\n    this.formatter = getCachedDateFormatter(locale, options);\n    this.options = options;\n  }\n\n  /** Formats a date as a string according to the locale and format options passed to the constructor. */\n  format(value: Date): string {\n    return this.formatter.format(value);\n  }\n\n  /** Formats a date to an array of parts such as separators, numbers, punctuation, and more. */\n  formatToParts(value: Date): Intl.DateTimeFormatPart[] {\n    return this.formatter.formatToParts(value);\n  }\n\n  /** Formats a date range as a string. */\n  formatRange(start: Date, end: Date): string {\n    // @ts-ignore\n    if (typeof this.formatter.formatRange === 'function') {\n      // @ts-ignore\n      return this.formatter.formatRange(start, end);\n    }\n\n    if (end < start) {\n      throw new RangeError('End date must be >= start date');\n    }\n\n    // Very basic fallback for old browsers.\n    return `${this.formatter.format(start)} – ${this.formatter.format(end)}`;\n  }\n\n  /** Formats a date range as an array of parts. */\n  formatRangeToParts(start: Date, end: Date): DateRangeFormatPart[] {\n    // @ts-ignore\n    if (typeof this.formatter.formatRangeToParts === 'function') {\n      // @ts-ignore\n      return this.formatter.formatRangeToParts(start, end);\n    }\n\n    if (end < start) {\n      throw new RangeError('End date must be >= start date');\n    }\n\n    let startParts = this.formatter.formatToParts(start);\n    let endParts = this.formatter.formatToParts(end);\n    return [\n      ...startParts.map(p => ({...p, source: 'startRange'} as DateRangeFormatPart)),\n      {type: 'literal', value: ' – ', source: 'shared'},\n      ...endParts.map(p => ({...p, source: 'endRange'} as DateRangeFormatPart))\n    ];\n  }\n\n  /** Returns the resolved formatting options based on the values passed to the constructor. */\n  resolvedOptions(): Intl.ResolvedDateTimeFormatOptions {\n    let resolvedOptions = this.formatter.resolvedOptions();\n    if (hasBuggyResolvedHourCycle()) {\n      if (!this.resolvedHourCycle) {\n        this.resolvedHourCycle = getResolvedHourCycle(resolvedOptions.locale, this.options);\n      }\n      resolvedOptions.hourCycle = this.resolvedHourCycle;\n      resolvedOptions.hour12 = this.resolvedHourCycle === 'h11' || this.resolvedHourCycle === 'h12';\n    }\n\n    // Safari uses a different name for the Ethiopic (Amete Alem) calendar.\n    // https://bugs.webkit.org/show_bug.cgi?id=241564\n    if (resolvedOptions.calendar === 'ethiopic-amete-alem') {\n      resolvedOptions.calendar = 'ethioaa';\n    }\n\n    return resolvedOptions;\n  }\n}\n\n// There are multiple bugs involving the hour12 and hourCycle options in various browser engines.\n//   - Chrome [1] (and the ECMA 402 spec [2]) resolve hour12: false in English and other locales to h24 (24:00 - 23:59)\n//     rather than h23 (00:00 - 23:59). Same can happen with hour12: true in French, which Chrome resolves to h11 (00:00 - 11:59)\n//     rather than h12 (12:00 - 11:59).\n//   - WebKit returns an incorrect hourCycle resolved option in the French locale due to incorrect parsing of 'h' literal\n//     in the resolved pattern. It also formats incorrectly when specifying the hourCycle option for the same reason. [3]\n// [1] https://bugs.chromium.org/p/chromium/issues/detail?id=1045791\n// [2] https://github.com/tc39/ecma402/issues/402\n// [3] https://bugs.webkit.org/show_bug.cgi?id=229313\n\n// https://github.com/unicode-org/cldr/blob/018b55eff7ceb389c7e3fc44e2f657eae3b10b38/common/supplemental/supplementalData.xml#L4774-L4802\nconst hour12Preferences = {\n  true: {\n    // Only Japanese uses the h11 style for 12 hour time. All others use h12.\n    ja: 'h11'\n  },\n  false: {\n    // All locales use h23 for 24 hour time. None use h24.\n  }\n};\n\nfunction getCachedDateFormatter(locale: string, options: Intl.DateTimeFormatOptions = {}): Intl.DateTimeFormat {\n  // Work around buggy hour12 behavior in Chrome / ECMA 402 spec by using hourCycle instead.\n  // Only apply the workaround if the issue is detected, because the hourCycle option is buggy in Safari.\n  if (typeof options.hour12 === 'boolean' && hasBuggyHour12Behavior()) {\n    options = {...options};\n    let pref = hour12Preferences[String(options.hour12)][locale.split('-')[0]];\n    let defaultHourCycle = options.hour12 ? 'h12' : 'h23';\n    options.hourCycle = pref ?? defaultHourCycle;\n    delete options.hour12;\n  }\n\n  let cacheKey = locale + (options ? Object.entries(options).sort((a, b) => a[0] < b[0] ? -1 : 1).join() : '');\n  if (formatterCache.has(cacheKey)) {\n    return formatterCache.get(cacheKey)!;\n  }\n\n  let numberFormatter = new Intl.DateTimeFormat(locale, options);\n  formatterCache.set(cacheKey, numberFormatter);\n  return numberFormatter;\n}\n\nlet _hasBuggyHour12Behavior: boolean | null = null;\nfunction hasBuggyHour12Behavior() {\n  if (_hasBuggyHour12Behavior == null) {\n    _hasBuggyHour12Behavior = new Intl.DateTimeFormat('en-US', {\n      hour: 'numeric',\n      hour12: false\n    }).format(new Date(2020, 2, 3, 0)) === '24';\n  }\n\n  return _hasBuggyHour12Behavior;\n}\n\nlet _hasBuggyResolvedHourCycle: boolean | null = null;\nfunction hasBuggyResolvedHourCycle() {\n  if (_hasBuggyResolvedHourCycle == null) {\n    _hasBuggyResolvedHourCycle = new Intl.DateTimeFormat('fr', {\n      hour: 'numeric',\n      hour12: false\n    }).resolvedOptions().hourCycle === 'h12';\n  }\n\n  return _hasBuggyResolvedHourCycle;\n}\n\nfunction getResolvedHourCycle(locale: string, options: Intl.DateTimeFormatOptions) {\n  if (!options.timeStyle && !options.hour) {\n    return undefined;\n  }\n\n  // Work around buggy results in resolved hourCycle and hour12 options in WebKit.\n  // Format the minimum possible hour and maximum possible hour in a day and parse the results.\n  locale = locale.replace(/(-u-)?-nu-[a-zA-Z0-9]+/, '');\n  locale += (locale.includes('-u-') ? '' : '-u') + '-nu-latn';\n  let formatter = getCachedDateFormatter(locale, {\n    ...options,\n    timeZone: undefined // use local timezone\n  });\n\n  let min = parseInt(formatter.formatToParts(new Date(2020, 2, 3, 0)).find(p => p.type === 'hour')!.value, 10);\n  let max = parseInt(formatter.formatToParts(new Date(2020, 2, 3, 23)).find(p => p.type === 'hour')!.value, 10);\n\n  if (min === 0 && max === 23) {\n    return 'h23';\n  }\n\n  if (min === 24 && max === 23) {\n    return 'h24';\n  }\n\n  if (min === 0 && max === 11) {\n    return 'h11';\n  }\n\n  if (min === 12 && max === 11) {\n    return 'h12';\n  }\n\n  throw new Error('Unexpected hour cycle result');\n}\n", "import { startOfYear, startOfMonth, startOfWeek, maxDate, toCalendarDate, minDate, isSameDay, toCalendarDateTime, today, DateFormatter, endOfMonth, endOfWeek, getWeeksInMonth, getLocalTimeZone, toCalendar, CalendarDate, now, endOfYear } from '@internationalized/date';\n\n// src/constrain.ts\nfunction alignCenter(date, duration, locale, min, max) {\n  const halfDuration = {};\n  for (let prop in duration) {\n    const key = prop;\n    const value = duration[key];\n    if (value == null) continue;\n    halfDuration[key] = Math.floor(value / 2);\n    if (halfDuration[key] > 0 && value % 2 === 0) {\n      halfDuration[key]--;\n    }\n  }\n  const aligned = alignStart(date, duration, locale).subtract(halfDuration);\n  return constrainStart(date, aligned, duration, locale, min, max);\n}\nfunction alignStart(date, duration, locale, min, max) {\n  let aligned = date;\n  if (duration.years) {\n    aligned = startOfYear(date);\n  } else if (duration.months) {\n    aligned = startOfMonth(date);\n  } else if (duration.weeks) {\n    aligned = startOfWeek(date, locale);\n  }\n  return constrainStart(date, aligned, duration, locale, min, max);\n}\nfunction alignEnd(date, duration, locale, min, max) {\n  let d = { ...duration };\n  if (d.days) {\n    d.days--;\n  } else if (d.weeks) {\n    d.weeks--;\n  } else if (d.months) {\n    d.months--;\n  } else if (d.years) {\n    d.years--;\n  }\n  let aligned = alignStart(date, duration, locale).subtract(d);\n  return constrainStart(date, aligned, duration, locale, min, max);\n}\nfunction constrainStart(date, aligned, duration, locale, min, max) {\n  if (min && date.compare(min) >= 0) {\n    aligned = maxDate(aligned, alignStart(toCalendarDate(min), duration, locale));\n  }\n  if (max && date.compare(max) <= 0) {\n    aligned = minDate(aligned, alignEnd(toCalendarDate(max), duration, locale));\n  }\n  return aligned;\n}\nfunction constrainValue(date, minValue, maxValue) {\n  let constrainedDate = toCalendarDate(date);\n  if (minValue) {\n    constrainedDate = maxDate(constrainedDate, toCalendarDate(minValue));\n  }\n  if (maxValue) {\n    constrainedDate = minDate(constrainedDate, toCalendarDate(maxValue));\n  }\n  return constrainedDate;\n}\n\n// src/align.ts\nfunction alignDate(date, alignment, duration, locale, min, max) {\n  switch (alignment) {\n    case \"start\":\n      return alignStart(date, duration, locale, min, max);\n    case \"end\":\n      return alignEnd(date, duration, locale, min, max);\n    case \"center\":\n    default:\n      return alignCenter(date, duration, locale, min, max);\n  }\n}\nfunction alignStartDate(date, startDate, endDate, duration, locale, min, max) {\n  if (date.compare(startDate) < 0) {\n    return alignEnd(date, duration, locale, min, max);\n  }\n  if (date.compare(endDate) > 0) {\n    return alignStart(date, duration, locale, min, max);\n  }\n  return startDate;\n}\nfunction isDateEqual(dateA, dateB) {\n  if (dateA == null || dateB == null) return dateA === dateB;\n  return isSameDay(dateA, dateB);\n}\nfunction isDateUnavailable(date, isUnavailable, locale, minValue, maxValue) {\n  if (!date) return false;\n  if (isUnavailable?.(date, locale)) return true;\n  return isDateOutsideRange(date, minValue, maxValue);\n}\nfunction isDateOutsideRange(date, startDate, endDate) {\n  return startDate != null && date.compare(startDate) < 0 || endDate != null && date.compare(endDate) > 0;\n}\nfunction isPreviousRangeInvalid(startDate, minValue, maxValue) {\n  const prevDate = startDate.subtract({ days: 1 });\n  return isSameDay(prevDate, startDate) || isDateOutsideRange(prevDate, minValue, maxValue);\n}\nfunction isNextRangeInvalid(endDate, minValue, maxValue) {\n  const nextDate = endDate.add({ days: 1 });\n  return isSameDay(nextDate, endDate) || isDateOutsideRange(nextDate, minValue, maxValue);\n}\n\n// src/duration.ts\nfunction getUnitDuration(duration) {\n  let clone = { ...duration };\n  for (let key in clone) clone[key] = 1;\n  return clone;\n}\nfunction getEndDate(startDate, duration) {\n  let clone = { ...duration };\n  if (clone.days) clone.days--;\n  else clone.days = -1;\n  return startDate.add(clone);\n}\n\n// src/get-era-format.ts\nfunction getEraFormat(date) {\n  return date?.calendar.identifier === \"gregory\" && date.era === \"BC\" ? \"short\" : void 0;\n}\n\n// src/formatter.ts\nfunction getDayFormatter(locale, timeZone) {\n  const date = toCalendarDateTime(today(timeZone));\n  return new DateFormatter(locale, {\n    weekday: \"long\",\n    month: \"long\",\n    year: \"numeric\",\n    day: \"numeric\",\n    era: getEraFormat(date),\n    timeZone\n  });\n}\nfunction getMonthFormatter(locale, timeZone) {\n  const date = today(timeZone);\n  return new DateFormatter(locale, {\n    month: \"long\",\n    year: \"numeric\",\n    era: getEraFormat(date),\n    calendar: date?.calendar.identifier,\n    timeZone\n  });\n}\n\n// src/format.ts\nfunction formatRange(startDate, endDate, formatter, toString, timeZone) {\n  let parts = formatter.formatRangeToParts(startDate.toDate(timeZone), endDate.toDate(timeZone));\n  let separatorIndex = -1;\n  for (let i = 0; i < parts.length; i++) {\n    let part = parts[i];\n    if (part.source === \"shared\" && part.type === \"literal\") {\n      separatorIndex = i;\n    } else if (part.source === \"endRange\") {\n      break;\n    }\n  }\n  let start = \"\";\n  let end = \"\";\n  for (let i = 0; i < parts.length; i++) {\n    if (i < separatorIndex) {\n      start += parts[i].value;\n    } else if (i > separatorIndex) {\n      end += parts[i].value;\n    }\n  }\n  return toString(start, end);\n}\nfunction formatSelectedDate(startDate, endDate, locale, timeZone) {\n  if (!startDate) return \"\";\n  let start = startDate;\n  let end = endDate ?? startDate;\n  let formatter = getDayFormatter(locale, timeZone);\n  if (isSameDay(start, end)) {\n    return formatter.format(start.toDate(timeZone));\n  }\n  return formatRange(start, end, formatter, (start2, end2) => `${start2} \\u2013 ${end2}`, timeZone);\n}\nfunction formatVisibleRange(startDate, endDate, locale, timeZone) {\n  const start = startDate;\n  const end = endDate ?? startDate;\n  const dayFormatter = getDayFormatter(locale, timeZone);\n  if (!isSameDay(start, startOfMonth(start))) {\n    return dayFormatter.formatRange(start.toDate(timeZone), end.toDate(timeZone));\n  }\n  const monthFormatter = getMonthFormatter(locale, timeZone);\n  if (isSameDay(end, endOfMonth(start))) {\n    return monthFormatter.format(start.toDate(timeZone));\n  }\n  if (isSameDay(end, endOfMonth(end))) {\n    return monthFormatter.formatRange(start.toDate(timeZone), end.toDate(timeZone));\n  }\n  return \"\";\n}\nvar daysOfTheWeek = [\"sun\", \"mon\", \"tue\", \"wed\", \"thu\", \"fri\", \"sat\"];\nfunction normalizeFirstDayOfWeek(firstDayOfWeek) {\n  return firstDayOfWeek != null ? daysOfTheWeek[firstDayOfWeek] : void 0;\n}\nfunction getStartOfWeek(date, locale, firstDayOfWeek) {\n  const firstDay = normalizeFirstDayOfWeek(firstDayOfWeek);\n  return startOfWeek(date, locale, firstDay);\n}\nfunction getEndOfWeek(date, locale, firstDayOfWeek = 0) {\n  const firstDay = normalizeFirstDayOfWeek(firstDayOfWeek);\n  return endOfWeek(date, locale, firstDay);\n}\nfunction getDaysInWeek(weekIndex, from, locale, firstDayOfWeek) {\n  const weekDate = from.add({ weeks: weekIndex });\n  const dates = [];\n  let date = getStartOfWeek(weekDate, locale, firstDayOfWeek);\n  while (dates.length < 7) {\n    dates.push(date);\n    let nextDate = date.add({ days: 1 });\n    if (isSameDay(date, nextDate)) break;\n    date = nextDate;\n  }\n  return dates;\n}\nfunction getMonthDays(from, locale, numOfWeeks, firstDayOfWeek) {\n  const firstDay = normalizeFirstDayOfWeek(firstDayOfWeek);\n  const monthWeeks = numOfWeeks ?? getWeeksInMonth(from, locale, firstDay);\n  const weeks = [...new Array(monthWeeks).keys()];\n  return weeks.map((week) => getDaysInWeek(week, from, locale, firstDayOfWeek));\n}\nfunction getWeekdayFormats(locale, timeZone) {\n  const longFormat = new DateFormatter(locale, { weekday: \"long\", timeZone });\n  const shortFormat = new DateFormatter(locale, { weekday: \"short\", timeZone });\n  const narrowFormat = new DateFormatter(locale, { weekday: \"narrow\", timeZone });\n  return (value) => {\n    const date = value instanceof Date ? value : value.toDate(timeZone);\n    return {\n      value,\n      short: shortFormat.format(date),\n      long: longFormat.format(date),\n      narrow: narrowFormat.format(date)\n    };\n  };\n}\nfunction getWeekDays(date, startOfWeekProp, timeZone, locale) {\n  const firstDayOfWeek = getStartOfWeek(date, locale, startOfWeekProp);\n  const weeks = [...new Array(7).keys()];\n  const format = getWeekdayFormats(locale, timeZone);\n  return weeks.map((index) => format(firstDayOfWeek.add({ days: index })));\n}\nfunction getMonthNames(locale, format = \"long\") {\n  const date = new Date(2021, 0, 1);\n  const monthNames = [];\n  for (let i = 0; i < 12; i++) {\n    monthNames.push(date.toLocaleString(locale, { month: format }));\n    date.setMonth(date.getMonth() + 1);\n  }\n  return monthNames;\n}\n\n// src/date-year.ts\nfunction getYearsRange(range) {\n  const years = [];\n  for (let year = range.from; year <= range.to; year += 1) years.push(year);\n  return years;\n}\nvar FUTURE_YEAR_COERCION = 10;\nfunction normalizeYear(year) {\n  if (!year) return;\n  if (year.length === 3) return year.padEnd(4, \"0\");\n  if (year.length === 2) {\n    const currentYear = (/* @__PURE__ */ new Date()).getFullYear();\n    const currentCentury = Math.floor(currentYear / 100) * 100;\n    const twoDigitYear = parseInt(year.slice(-2), 10);\n    const fullYear = currentCentury + twoDigitYear;\n    return fullYear > currentYear + FUTURE_YEAR_COERCION ? (fullYear - 100).toString() : fullYear.toString();\n  }\n  return year;\n}\nfunction getDecadeRange(year, opts) {\n  const chunkSize = opts?.strict ? 10 : 12;\n  const computedYear = year - year % 10;\n  const years = [];\n  for (let i = 0; i < chunkSize; i += 1) {\n    const value = computedYear + i;\n    years.push(value);\n  }\n  return years;\n}\nfunction getTodayDate(timeZone) {\n  return today(timeZone ?? getLocalTimeZone());\n}\nfunction setCalendar(date, calendar) {\n  return toCalendar(toCalendarDateTime(date), calendar);\n}\nfunction setDate(date, startDate, isDateUnavailable2, locale, minValue, maxValue) {\n  let result;\n  result = constrainValue(date, minValue, maxValue);\n  result = getPreviousAvailableDate(date, startDate, locale, isDateUnavailable2);\n  return result;\n}\nfunction getPreviousAvailableDate(date, minValue, locale, isDateUnavailable2) {\n  if (!isDateUnavailable2) {\n    return date;\n  }\n  while (date.compare(minValue) >= 0 && isDateUnavailable2(date, locale)) {\n    date = date.subtract({ days: 1 });\n  }\n  if (date.compare(minValue) >= 0) {\n    return date;\n  }\n}\nfunction getAdjustedDateFn(visibleDuration, locale, minValue, maxValue) {\n  return function getDate(options) {\n    const { startDate, focusedDate } = options;\n    const endDate = getEndDate(startDate, visibleDuration);\n    if (isDateOutsideRange(focusedDate, minValue, maxValue)) {\n      return {\n        startDate,\n        focusedDate: constrainValue(focusedDate, minValue, maxValue),\n        endDate\n      };\n    }\n    if (focusedDate.compare(startDate) < 0) {\n      return {\n        startDate: alignEnd(focusedDate, visibleDuration, locale, minValue, maxValue),\n        focusedDate: constrainValue(focusedDate, minValue, maxValue),\n        endDate\n      };\n    }\n    if (focusedDate.compare(endDate) > 0) {\n      return {\n        startDate: alignStart(focusedDate, visibleDuration, locale, minValue, maxValue),\n        endDate,\n        focusedDate: constrainValue(focusedDate, minValue, maxValue)\n      };\n    }\n    return {\n      startDate,\n      endDate,\n      focusedDate: constrainValue(focusedDate, minValue, maxValue)\n    };\n  };\n}\nfunction getNextPage(focusedDate, startDate, visibleDuration, locale, minValue, maxValue) {\n  const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue);\n  const start = startDate.add(visibleDuration);\n  return adjust({\n    focusedDate: focusedDate.add(visibleDuration),\n    startDate: alignStart(\n      constrainStart(focusedDate, start, visibleDuration, locale, minValue, maxValue),\n      visibleDuration,\n      locale\n    )\n  });\n}\nfunction getPreviousPage(focusedDate, startDate, visibleDuration, locale, minValue, maxValue) {\n  const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue);\n  let start = startDate.subtract(visibleDuration);\n  return adjust({\n    focusedDate: focusedDate.subtract(visibleDuration),\n    startDate: alignStart(\n      constrainStart(focusedDate, start, visibleDuration, locale, minValue, maxValue),\n      visibleDuration,\n      locale\n    )\n  });\n}\nfunction getNextRow(focusedDate, startDate, visibleDuration, locale, minValue, maxValue) {\n  const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue);\n  if (visibleDuration.days) {\n    return getNextPage(focusedDate, startDate, visibleDuration, locale, minValue, maxValue);\n  }\n  if (visibleDuration.weeks || visibleDuration.months || visibleDuration.years) {\n    return adjust({\n      focusedDate: focusedDate.add({ weeks: 1 }),\n      startDate\n    });\n  }\n}\nfunction getPreviousRow(focusedDate, startDate, visibleDuration, locale, minValue, maxValue) {\n  const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue);\n  if (visibleDuration.days) {\n    return getPreviousPage(focusedDate, startDate, visibleDuration, locale, minValue, maxValue);\n  }\n  if (visibleDuration.weeks || visibleDuration.months || visibleDuration.years) {\n    return adjust({\n      focusedDate: focusedDate.subtract({ weeks: 1 }),\n      startDate\n    });\n  }\n}\nfunction getSectionStart(focusedDate, startDate, visibleDuration, locale, minValue, maxValue) {\n  const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue);\n  if (visibleDuration.days) {\n    return adjust({\n      focusedDate: startDate,\n      startDate\n    });\n  }\n  if (visibleDuration.weeks) {\n    return adjust({\n      focusedDate: startOfWeek(focusedDate, locale),\n      startDate\n    });\n  }\n  if (visibleDuration.months || visibleDuration.years) {\n    return adjust({\n      focusedDate: startOfMonth(focusedDate),\n      startDate\n    });\n  }\n}\nfunction getSectionEnd(focusedDate, startDate, visibleDuration, locale, minValue, maxValue) {\n  const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue);\n  const endDate = getEndDate(startDate, visibleDuration);\n  if (visibleDuration.days) {\n    return adjust({\n      focusedDate: endDate,\n      startDate\n    });\n  }\n  if (visibleDuration.weeks) {\n    return adjust({\n      focusedDate: endOfWeek(focusedDate, locale),\n      startDate\n    });\n  }\n  if (visibleDuration.months || visibleDuration.years) {\n    return adjust({\n      focusedDate: endOfMonth(focusedDate),\n      startDate\n    });\n  }\n}\nfunction getNextSection(focusedDate, startDate, larger, visibleDuration, locale, minValue, maxValue) {\n  const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue);\n  if (!larger && !visibleDuration.days) {\n    return adjust({\n      focusedDate: focusedDate.add(getUnitDuration(visibleDuration)),\n      startDate\n    });\n  }\n  if (visibleDuration.days) {\n    return getNextPage(focusedDate, startDate, visibleDuration, locale, minValue, maxValue);\n  }\n  if (visibleDuration.weeks) {\n    return adjust({\n      focusedDate: focusedDate.add({ months: 1 }),\n      startDate\n    });\n  }\n  if (visibleDuration.months || visibleDuration.years) {\n    return adjust({\n      focusedDate: focusedDate.add({ years: 1 }),\n      startDate\n    });\n  }\n}\nfunction getPreviousSection(focusedDate, startDate, larger, visibleDuration, locale, minValue, maxValue) {\n  const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue);\n  if (!larger && !visibleDuration.days) {\n    return adjust({\n      focusedDate: focusedDate.subtract(getUnitDuration(visibleDuration)),\n      startDate\n    });\n  }\n  if (visibleDuration.days) {\n    return getPreviousPage(focusedDate, startDate, visibleDuration, locale, minValue, maxValue);\n  }\n  if (visibleDuration.weeks) {\n    return adjust({\n      focusedDate: focusedDate.subtract({ months: 1 }),\n      startDate\n    });\n  }\n  if (visibleDuration.months || visibleDuration.years) {\n    return adjust({\n      focusedDate: focusedDate.subtract({ years: 1 }),\n      startDate\n    });\n  }\n}\nvar isValidYear = (year) => year != null && year.length === 4;\nvar isValidMonth = (month) => month != null && parseFloat(month) <= 12;\nvar isValidDay = (day) => day != null && parseFloat(day) <= 31;\nfunction parseDateString(date, locale, timeZone) {\n  const regex = createRegex(locale, timeZone);\n  let { year, month, day } = extract(regex, date) ?? {};\n  const hasMatch = year != null || month != null || day != null;\n  if (hasMatch) {\n    const curr = /* @__PURE__ */ new Date();\n    year || (year = curr.getFullYear().toString());\n    month || (month = (curr.getMonth() + 1).toString());\n    day || (day = curr.getDate().toString());\n  }\n  if (!isValidYear(year)) {\n    year = normalizeYear(year);\n  }\n  if (isValidYear(year) && isValidMonth(month) && isValidDay(day)) {\n    return new CalendarDate(+year, +month, +day);\n  }\n  const time = Date.parse(date);\n  if (!isNaN(time)) {\n    const date2 = new Date(time);\n    return new CalendarDate(date2.getFullYear(), date2.getMonth() + 1, date2.getDate());\n  }\n}\nfunction createRegex(locale, timeZone) {\n  const formatter = new DateFormatter(locale, { day: \"numeric\", month: \"numeric\", year: \"numeric\", timeZone });\n  const parts = formatter.formatToParts(new Date(2e3, 11, 25));\n  return parts.map(({ type, value }) => type === \"literal\" ? `${value}?` : `((?!=<${type}>)\\\\d+)?`).join(\"\");\n}\nfunction extract(pattern, str) {\n  const matches = str.match(pattern);\n  return pattern.toString().match(/<(.+?)>/g)?.map((group) => {\n    const groupMatches = group.match(/<(.+)>/);\n    if (!groupMatches || groupMatches.length <= 0) {\n      return null;\n    }\n    return group.match(/<(.+)>/)?.[1];\n  }).reduce((acc, curr, index) => {\n    if (!curr) return acc;\n    if (matches && matches.length > index) {\n      acc[curr] = matches[index + 1];\n    } else {\n      acc[curr] = null;\n    }\n    return acc;\n  }, {});\n}\nfunction getDateRangePreset(preset, locale, timeZone) {\n  const today3 = toCalendarDate(now(timeZone));\n  switch (preset) {\n    case \"thisWeek\":\n      return [startOfWeek(today3, locale), endOfWeek(today3, locale)];\n    case \"thisMonth\":\n      return [startOfMonth(today3), today3];\n    case \"thisQuarter\":\n      return [startOfMonth(today3).add({ months: -((today3.month - 1) % 3) }), today3];\n    case \"thisYear\":\n      return [startOfYear(today3), today3];\n    case \"last3Days\":\n      return [today3.add({ days: -2 }), today3];\n    case \"last7Days\":\n      return [today3.add({ days: -6 }), today3];\n    case \"last14Days\":\n      return [today3.add({ days: -13 }), today3];\n    case \"last30Days\":\n      return [today3.add({ days: -29 }), today3];\n    case \"last90Days\":\n      return [today3.add({ days: -89 }), today3];\n    case \"lastMonth\":\n      return [startOfMonth(today3.add({ months: -1 })), endOfMonth(today3.add({ months: -1 }))];\n    case \"lastQuarter\":\n      return [\n        startOfMonth(today3.add({ months: -((today3.month - 1) % 3) - 3 })),\n        endOfMonth(today3.add({ months: -((today3.month - 1) % 3) - 1 }))\n      ];\n    case \"lastWeek\":\n      return [startOfWeek(today3, locale).add({ weeks: -1 }), endOfWeek(today3, locale).add({ weeks: -1 })];\n    case \"lastYear\":\n      return [startOfYear(today3.add({ years: -1 })), endOfYear(today3.add({ years: -1 }))];\n    default:\n      throw new Error(`Invalid date range preset: ${preset}`);\n  }\n}\n\nexport { alignCenter, alignDate, alignEnd, alignStart, alignStartDate, constrainStart, constrainValue, formatRange, formatSelectedDate, formatVisibleRange, getAdjustedDateFn, getDateRangePreset, getDayFormatter, getDaysInWeek, getDecadeRange, getEndDate, getEndOfWeek, getMonthDays, getMonthFormatter, getMonthNames, getNextPage, getNextRow, getNextSection, getPreviousAvailableDate, getPreviousPage, getPreviousRow, getPreviousSection, getSectionEnd, getSectionStart, getStartOfWeek, getTodayDate, getUnitDuration, getWeekDays, getWeekdayFormats, getYearsRange, isDateEqual, isDateOutsideRange, isDateUnavailable, isNextRangeInvalid, isPreviousRangeInvalid, normalizeYear, parseDateString, setCalendar, setDate };\n", "// src/index.ts\nvar ID = \"__live-region__\";\nfunction createLiveRegion(opts = {}) {\n  const { level = \"polite\", document: doc = document, root, delay: _delay = 0 } = opts;\n  const win = doc.defaultView ?? window;\n  const parent = root ?? doc.body;\n  function announce(message, delay) {\n    const oldRegion = doc.getElementById(ID);\n    oldRegion?.remove();\n    delay = delay ?? _delay;\n    const region = doc.createElement(\"span\");\n    region.id = ID;\n    region.dataset.liveAnnouncer = \"true\";\n    const role = level !== \"assertive\" ? \"status\" : \"alert\";\n    region.setAttribute(\"aria-live\", level);\n    region.setAttribute(\"role\", role);\n    Object.assign(region.style, {\n      border: \"0\",\n      clip: \"rect(0 0 0 0)\",\n      height: \"1px\",\n      margin: \"-1px\",\n      overflow: \"hidden\",\n      padding: \"0\",\n      position: \"absolute\",\n      width: \"1px\",\n      whiteSpace: \"nowrap\",\n      wordWrap: \"normal\"\n    });\n    parent.appendChild(region);\n    win.setTimeout(() => {\n      region.textContent = message;\n    }, delay);\n  }\n  function destroy() {\n    const oldRegion = doc.getElementById(ID);\n    oldRegion?.remove();\n  }\n  return {\n    announce,\n    destroy,\n    toJSON() {\n      return ID;\n    }\n  };\n}\n\nexport { createLiveRegion };\n", "import { createAnatomy } from '@zag-js/anatomy';\nimport { DateFormatter, isEqualYear, isEqualMonth, isEqualDay, CalendarDate, parseDate, isWeekend, isToday } from '@internationalized/date';\nimport { getEndDate, isDateOutsideRange, alignDate, constrainValue, getDecadeRange, getTodayDate, getPreviousSection, getNextSection, getPreviousPage, getNextPage, isDateEqual, formatSelectedDate, isNextRangeInvalid, isPreviousRangeInvalid, parseDateString, getAdjustedDateFn, getWeekDays, getDateRangePreset, getMonthFormatter, getDaysInWeek, getMonthDays, getMonthNames, getYearsRange, isDateUnavailable, getDayFormatter, getUnitDuration } from '@zag-js/date-utils';\nimport { queryAll, setElementValue, raf, query, restoreTextSelection, disableTextSelection, dataAttr, ariaAttr, getNativeEvent, getEventKey, isComposingEvent } from '@zag-js/dom-query';\nimport { getPlacement, getPlacementStyles } from '@zag-js/popper';\nimport { createSplitProps, clampValue, chunk, isValueWithinRange, match } from '@zag-js/utils';\nimport { createGuards, createMachine } from '@zag-js/core';\nimport { trackDismissableElement } from '@zag-js/dismissable';\nimport { createLiveRegion } from '@zag-js/live-region';\nimport { createProps } from '@zag-js/types';\n\n// src/date-picker.anatomy.ts\nvar anatomy = createAnatomy(\"date-picker\").parts(\n  \"clearTrigger\",\n  \"content\",\n  \"control\",\n  \"input\",\n  \"label\",\n  \"monthSelect\",\n  \"nextTrigger\",\n  \"positioner\",\n  \"presetTrigger\",\n  \"prevTrigger\",\n  \"rangeText\",\n  \"root\",\n  \"table\",\n  \"tableBody\",\n  \"tableCell\",\n  \"tableCellTrigger\",\n  \"tableHead\",\n  \"tableHeader\",\n  \"tableRow\",\n  \"trigger\",\n  \"view\",\n  \"viewControl\",\n  \"viewTrigger\",\n  \"yearSelect\"\n);\nvar parts = anatomy.build();\nvar getLabelId = (ctx, index) => ctx.ids?.label?.(index) ?? `datepicker:${ctx.id}:label:${index}`;\nvar getRootId = (ctx) => ctx.ids?.root ?? `datepicker:${ctx.id}`;\nvar getTableId = (ctx, id) => ctx.ids?.table?.(id) ?? `datepicker:${ctx.id}:table:${id}`;\nvar getContentId = (ctx) => ctx.ids?.content ?? `datepicker:${ctx.id}:content`;\nvar getCellTriggerId = (ctx, id) => ctx.ids?.cellTrigger?.(id) ?? `datepicker:${ctx.id}:cell-trigger:${id}`;\nvar getPrevTriggerId = (ctx, view) => ctx.ids?.prevTrigger?.(view) ?? `datepicker:${ctx.id}:prev:${view}`;\nvar getNextTriggerId = (ctx, view) => ctx.ids?.nextTrigger?.(view) ?? `datepicker:${ctx.id}:next:${view}`;\nvar getViewTriggerId = (ctx, view) => ctx.ids?.viewTrigger?.(view) ?? `datepicker:${ctx.id}:view:${view}`;\nvar getClearTriggerId = (ctx) => ctx.ids?.clearTrigger ?? `datepicker:${ctx.id}:clear`;\nvar getControlId = (ctx) => ctx.ids?.control ?? `datepicker:${ctx.id}:control`;\nvar getInputId = (ctx, index) => ctx.ids?.input?.(index) ?? `datepicker:${ctx.id}:input:${index}`;\nvar getTriggerId = (ctx) => ctx.ids?.trigger ?? `datepicker:${ctx.id}:trigger`;\nvar getPositionerId = (ctx) => ctx.ids?.positioner ?? `datepicker:${ctx.id}:positioner`;\nvar getMonthSelectId = (ctx) => ctx.ids?.monthSelect ?? `datepicker:${ctx.id}:month-select`;\nvar getYearSelectId = (ctx) => ctx.ids?.yearSelect ?? `datepicker:${ctx.id}:year-select`;\nvar getFocusedCell = (ctx, view) => query(getContentEl(ctx), `[data-part=table-cell-trigger][data-view=${view}][data-focus]:not([data-outside-range])`);\nvar getTriggerEl = (ctx) => ctx.getById(getTriggerId(ctx));\nvar getContentEl = (ctx) => ctx.getById(getContentId(ctx));\nvar getInputEls = (ctx) => queryAll(getControlEl(ctx), `[data-part=input]`);\nvar getYearSelectEl = (ctx) => ctx.getById(getYearSelectId(ctx));\nvar getMonthSelectEl = (ctx) => ctx.getById(getMonthSelectId(ctx));\nvar getClearTriggerEl = (ctx) => ctx.getById(getClearTriggerId(ctx));\nvar getPositionerEl = (ctx) => ctx.getById(getPositionerId(ctx));\nvar getControlEl = (ctx) => ctx.getById(getControlId(ctx));\nfunction adjustStartAndEndDate(value) {\n  const [startDate, endDate] = value;\n  let result;\n  if (!startDate || !endDate) result = value;\n  else result = startDate.compare(endDate) <= 0 ? value : [endDate, startDate];\n  return result;\n}\nfunction isDateWithinRange(date, value) {\n  const [startDate, endDate] = value;\n  if (!startDate || !endDate) return false;\n  return startDate.compare(date) <= 0 && endDate.compare(date) >= 0;\n}\nfunction sortDates(values) {\n  return values.slice().filter((date) => date != null).sort((a, b) => a.compare(b));\n}\nfunction getRoleDescription(view) {\n  return match(view, {\n    year: \"calendar decade\",\n    month: \"calendar year\",\n    day: \"calendar month\"\n  });\n}\nvar PLACEHOLDERS = {\n  day: \"dd\",\n  month: \"mm\",\n  year: \"yyyy\"\n};\nfunction getInputPlaceholder(locale) {\n  return new DateFormatter(locale).formatToParts(/* @__PURE__ */ new Date()).map((item) => PLACEHOLDERS[item.type] ?? item.value).join(\"\");\n}\nvar isValidCharacter = (char, separator) => {\n  if (!char) return true;\n  return /\\d/.test(char) || char === separator || char.length !== 1;\n};\nvar isValidDate = (value) => {\n  return !Number.isNaN(value.day) && !Number.isNaN(value.month) && !Number.isNaN(value.year);\n};\nvar ensureValidCharacters = (value, separator) => {\n  return value.split(\"\").filter((char) => isValidCharacter(char, separator)).join(\"\");\n};\nfunction getLocaleSeparator(locale) {\n  const dateFormatter = new Intl.DateTimeFormat(locale);\n  const parts2 = dateFormatter.formatToParts(/* @__PURE__ */ new Date());\n  const literalPart = parts2.find((part) => part.type === \"literal\");\n  return literalPart ? literalPart.value : \"/\";\n}\nvar defaultTranslations = {\n  dayCell(state) {\n    if (state.unavailable) return `Not available. ${state.formattedDate}`;\n    if (state.selected) return `Selected date. ${state.formattedDate}`;\n    return `Choose ${state.formattedDate}`;\n  },\n  trigger(open) {\n    return open ? \"Close calendar\" : \"Open calendar\";\n  },\n  viewTrigger(view) {\n    return match(view, {\n      year: \"Switch to month view\",\n      month: \"Switch to day view\",\n      day: \"Switch to year view\"\n    });\n  },\n  presetTrigger(value) {\n    const [start = \"\", end = \"\"] = value;\n    return `select ${start} to ${end}`;\n  },\n  prevTrigger(view) {\n    return match(view, {\n      year: \"Switch to previous decade\",\n      month: \"Switch to previous year\",\n      day: \"Switch to previous month\"\n    });\n  },\n  nextTrigger(view) {\n    return match(view, {\n      year: \"Switch to next decade\",\n      month: \"Switch to next year\",\n      day: \"Switch to next month\"\n    });\n  },\n  // TODO: Revisit this\n  placeholder() {\n    return { day: \"dd\", month: \"mm\", year: \"yyyy\" };\n  },\n  content: \"calendar\",\n  monthSelect: \"Select month\",\n  yearSelect: \"Select year\",\n  clearTrigger: \"Clear selected dates\"\n};\nfunction viewToNumber(view, fallback) {\n  if (!view) return fallback || 0;\n  return view === \"day\" ? 0 : view === \"month\" ? 1 : 2;\n}\nfunction viewNumberToView(viewNumber) {\n  return viewNumber === 0 ? \"day\" : viewNumber === 1 ? \"month\" : \"year\";\n}\nfunction clampView(view, minView, maxView) {\n  return viewNumberToView(\n    clampValue(viewToNumber(view, 0), viewToNumber(minView, 0), viewToNumber(maxView, 2))\n  );\n}\nfunction isAboveMinView(view, minView) {\n  return viewToNumber(view, 0) > viewToNumber(minView, 0);\n}\nfunction isBelowMinView(view, minView) {\n  return viewToNumber(view, 0) < viewToNumber(minView, 0);\n}\nfunction getNextView(view, minView, maxView) {\n  const nextViewNumber = viewToNumber(view, 0) + 1;\n  return clampView(viewNumberToView(nextViewNumber), minView, maxView);\n}\nfunction getPreviousView(view, minView, maxView) {\n  const prevViewNumber = viewToNumber(view, 0) - 1;\n  return clampView(viewNumberToView(prevViewNumber), minView, maxView);\n}\nvar views = [\"day\", \"month\", \"year\"];\nfunction eachView(cb) {\n  views.forEach((view) => cb(view));\n}\n\n// src/date-picker.connect.ts\nfunction connect(service, normalize) {\n  const { state, context, prop, send, computed, scope } = service;\n  const startValue = context.get(\"startValue\");\n  const endValue = computed(\"endValue\");\n  const selectedValue = context.get(\"value\");\n  const focusedValue = context.get(\"focusedValue\");\n  const hoveredValue = context.get(\"hoveredValue\");\n  const hoveredRangeValue = hoveredValue ? adjustStartAndEndDate([selectedValue[0], hoveredValue]) : [];\n  const disabled = Boolean(prop(\"disabled\"));\n  const readOnly = Boolean(prop(\"readOnly\"));\n  const invalid = Boolean(prop(\"invalid\"));\n  const interactive = computed(\"isInteractive\");\n  const min = prop(\"min\");\n  const max = prop(\"max\");\n  const locale = prop(\"locale\");\n  const timeZone = prop(\"timeZone\");\n  const startOfWeek = prop(\"startOfWeek\");\n  const focused = state.matches(\"focused\");\n  const open = state.matches(\"open\");\n  const isRangePicker = prop(\"selectionMode\") === \"range\";\n  const isDateUnavailableFn = prop(\"isDateUnavailable\");\n  const currentPlacement = context.get(\"currentPlacement\");\n  const popperStyles = getPlacementStyles({\n    ...prop(\"positioning\"),\n    placement: currentPlacement\n  });\n  const separator = getLocaleSeparator(locale);\n  const translations = { ...defaultTranslations, ...prop(\"translations\") };\n  function getMonthWeeks(from = startValue) {\n    const numOfWeeks = prop(\"fixedWeeks\") ? 6 : void 0;\n    return getMonthDays(from, locale, numOfWeeks, startOfWeek);\n  }\n  function getMonths(props2 = {}) {\n    const { format } = props2;\n    return getMonthNames(locale, format).map((label, index) => {\n      const value = index + 1;\n      const dateValue = focusedValue.set({ month: value });\n      const disabled2 = isDateOutsideRange(dateValue, min, max);\n      return { label, value, disabled: disabled2 };\n    });\n  }\n  function getYears() {\n    const range = getYearsRange({ from: min?.year ?? 1900, to: max?.year ?? 2100 });\n    return range.map((year) => ({\n      label: year.toString(),\n      value: year,\n      disabled: !isValueWithinRange(year, min?.year, max?.year)\n    }));\n  }\n  function getDecadeYears(year) {\n    const range = getDecadeRange(startValue.year);\n    return range.map((year2) => ({\n      label: year2.toString(),\n      value: year2,\n      disabled: !isValueWithinRange(year2, min?.year, max?.year)\n    }));\n  }\n  function isUnavailable(date) {\n    return isDateUnavailable(date, isDateUnavailableFn, locale, min, max);\n  }\n  function focusMonth(month) {\n    const date = startValue ?? getTodayDate(timeZone);\n    send({ type: \"FOCUS.SET\", value: date.set({ month }) });\n  }\n  function focusYear(year) {\n    const date = startValue ?? getTodayDate(timeZone);\n    send({ type: \"FOCUS.SET\", value: date.set({ year }) });\n  }\n  function getYearTableCellState(props2) {\n    const { value, disabled: disabled2 } = props2;\n    const dateValue = focusedValue.set({ year: value });\n    const decadeYears = getDecadeRange(startValue.year, { strict: true });\n    const isOutsideVisibleRange = !decadeYears.includes(value);\n    const isOutsideRange = isValueWithinRange(value, min?.year, max?.year);\n    const cellState = {\n      focused: focusedValue.year === props2.value,\n      selectable: isOutsideVisibleRange || isOutsideRange,\n      outsideRange: isOutsideVisibleRange,\n      selected: !!selectedValue.find((date) => date && date.year === value),\n      valueText: value.toString(),\n      inRange: isRangePicker && (isDateWithinRange(dateValue, selectedValue) || isDateWithinRange(dateValue, hoveredRangeValue)),\n      value: dateValue,\n      get disabled() {\n        return disabled2 || !cellState.selectable;\n      }\n    };\n    return cellState;\n  }\n  function getMonthTableCellState(props2) {\n    const { value, disabled: disabled2 } = props2;\n    const dateValue = focusedValue.set({ month: value });\n    const formatter = getMonthFormatter(locale, timeZone);\n    const cellState = {\n      focused: focusedValue.month === props2.value,\n      selectable: !isDateOutsideRange(dateValue, min, max),\n      selected: !!selectedValue.find((date) => date && date.month === value && date.year === focusedValue.year),\n      valueText: formatter.format(dateValue.toDate(timeZone)),\n      inRange: isRangePicker && (isDateWithinRange(dateValue, selectedValue) || isDateWithinRange(dateValue, hoveredRangeValue)),\n      value: dateValue,\n      get disabled() {\n        return disabled2 || !cellState.selectable;\n      }\n    };\n    return cellState;\n  }\n  function getDayTableCellState(props2) {\n    const { value, disabled: disabled2, visibleRange = computed(\"visibleRange\") } = props2;\n    const formatter = getDayFormatter(locale, timeZone);\n    const unitDuration = getUnitDuration(computed(\"visibleDuration\"));\n    const outsideDaySelectable = prop(\"outsideDaySelectable\");\n    const end = visibleRange.start.add(unitDuration).subtract({ days: 1 });\n    const isOutsideRange = isDateOutsideRange(value, visibleRange.start, end);\n    const isInSelectedRange = isRangePicker && isDateWithinRange(value, selectedValue);\n    const isFirstInSelectedRange = isRangePicker && isDateEqual(value, selectedValue[0]);\n    const isLastInSelectedRange = isRangePicker && isDateEqual(value, selectedValue[1]);\n    const hasHoveredRange = isRangePicker && hoveredRangeValue.length > 0;\n    const isInHoveredRange = hasHoveredRange && isDateWithinRange(value, hoveredRangeValue);\n    const isFirstInHoveredRange = hasHoveredRange && isDateEqual(value, hoveredRangeValue[0]);\n    const isLastInHoveredRange = hasHoveredRange && isDateEqual(value, hoveredRangeValue[1]);\n    const cellState = {\n      invalid: isDateOutsideRange(value, min, max),\n      disabled: disabled2 || !outsideDaySelectable && isOutsideRange || isDateOutsideRange(value, min, max),\n      selected: selectedValue.some((date) => isDateEqual(value, date)),\n      unavailable: isDateUnavailable(value, isDateUnavailableFn, locale, min, max) && !disabled2,\n      outsideRange: isOutsideRange,\n      today: isToday(value, timeZone),\n      weekend: isWeekend(value, locale),\n      formattedDate: formatter.format(value.toDate(timeZone)),\n      get focused() {\n        return isDateEqual(value, focusedValue) && (!cellState.outsideRange || outsideDaySelectable);\n      },\n      get ariaLabel() {\n        return translations.dayCell(cellState);\n      },\n      get selectable() {\n        return !cellState.disabled && !cellState.unavailable;\n      },\n      // Range states\n      inRange: isInSelectedRange || isInHoveredRange,\n      firstInRange: isFirstInSelectedRange,\n      lastInRange: isLastInSelectedRange,\n      // Preview range states\n      inHoveredRange: isInHoveredRange,\n      firstInHoveredRange: isFirstInHoveredRange,\n      lastInHoveredRange: isLastInHoveredRange\n    };\n    return cellState;\n  }\n  function getTableId2(props2) {\n    const { view = \"day\", id } = props2;\n    return [view, id].filter(Boolean).join(\" \");\n  }\n  return {\n    focused,\n    open,\n    disabled,\n    invalid,\n    inline: !!prop(\"inline\"),\n    view: context.get(\"view\"),\n    getRangePresetValue(preset) {\n      return getDateRangePreset(preset, locale, timeZone);\n    },\n    getDaysInWeek(week, from = startValue) {\n      return getDaysInWeek(week, from, locale, startOfWeek);\n    },\n    getOffset(duration) {\n      const from = startValue.add(duration);\n      const end = endValue.add(duration);\n      const formatter = getMonthFormatter(locale, timeZone);\n      return {\n        visibleRange: { start: from, end },\n        weeks: getMonthWeeks(from),\n        visibleRangeText: {\n          start: formatter.format(from.toDate(timeZone)),\n          end: formatter.format(end.toDate(timeZone))\n        }\n      };\n    },\n    getMonthWeeks,\n    isUnavailable,\n    weeks: getMonthWeeks(),\n    weekDays: getWeekDays(getTodayDate(timeZone), startOfWeek, timeZone, locale),\n    visibleRangeText: computed(\"visibleRangeText\"),\n    value: selectedValue,\n    valueAsDate: selectedValue.filter((date) => date != null).map((date) => date.toDate(timeZone)),\n    valueAsString: computed(\"valueAsString\"),\n    focusedValue,\n    focusedValueAsDate: focusedValue?.toDate(timeZone),\n    focusedValueAsString: prop(\"format\")(focusedValue, { locale, timeZone }),\n    visibleRange: computed(\"visibleRange\"),\n    selectToday() {\n      const value = constrainValue(getTodayDate(timeZone), min, max);\n      send({ type: \"VALUE.SET\", value });\n    },\n    setValue(values) {\n      const computedValue = values.map((date) => constrainValue(date, min, max));\n      send({ type: \"VALUE.SET\", value: computedValue });\n    },\n    clearValue() {\n      send({ type: \"VALUE.CLEAR\" });\n    },\n    setFocusedValue(value) {\n      send({ type: \"FOCUS.SET\", value });\n    },\n    setOpen(nextOpen) {\n      if (prop(\"inline\")) return;\n      const open2 = state.matches(\"open\");\n      if (open2 === nextOpen) return;\n      send({ type: nextOpen ? \"OPEN\" : \"CLOSE\" });\n    },\n    focusMonth,\n    focusYear,\n    getYears,\n    getMonths,\n    getYearsGrid(props2 = {}) {\n      const { columns = 1 } = props2;\n      return chunk(getDecadeYears(), columns);\n    },\n    getDecade() {\n      const years = getDecadeRange(focusedValue.year);\n      return { start: years.at(0), end: years.at(-1) };\n    },\n    getMonthsGrid(props2 = {}) {\n      const { columns = 1, format } = props2;\n      return chunk(getMonths({ format }), columns);\n    },\n    format(value, opts = { month: \"long\", year: \"numeric\" }) {\n      return new DateFormatter(locale, opts).format(value.toDate(timeZone));\n    },\n    setView(view) {\n      send({ type: \"VIEW.SET\", view });\n    },\n    goToNext() {\n      send({ type: \"GOTO.NEXT\", view: context.get(\"view\") });\n    },\n    goToPrev() {\n      send({ type: \"GOTO.PREV\", view: context.get(\"view\") });\n    },\n    getRootProps() {\n      return normalize.element({\n        ...parts.root.attrs,\n        dir: prop(\"dir\"),\n        id: getRootId(scope),\n        \"data-state\": open ? \"open\" : \"closed\",\n        \"data-disabled\": dataAttr(disabled),\n        \"data-readonly\": dataAttr(readOnly)\n      });\n    },\n    getLabelProps(props2 = {}) {\n      const { index = 0 } = props2;\n      return normalize.label({\n        ...parts.label.attrs,\n        id: getLabelId(scope, index),\n        dir: prop(\"dir\"),\n        htmlFor: getInputId(scope, index),\n        \"data-state\": open ? \"open\" : \"closed\",\n        \"data-index\": index,\n        \"data-disabled\": dataAttr(disabled),\n        \"data-readonly\": dataAttr(readOnly)\n      });\n    },\n    getControlProps() {\n      return normalize.element({\n        ...parts.control.attrs,\n        dir: prop(\"dir\"),\n        id: getControlId(scope),\n        \"data-disabled\": dataAttr(disabled)\n      });\n    },\n    getRangeTextProps() {\n      return normalize.element({\n        ...parts.rangeText.attrs,\n        dir: prop(\"dir\")\n      });\n    },\n    getContentProps() {\n      return normalize.element({\n        ...parts.content.attrs,\n        hidden: !open,\n        dir: prop(\"dir\"),\n        \"data-state\": open ? \"open\" : \"closed\",\n        \"data-placement\": currentPlacement,\n        \"data-inline\": dataAttr(prop(\"inline\")),\n        id: getContentId(scope),\n        tabIndex: -1,\n        role: \"application\",\n        \"aria-roledescription\": \"datepicker\",\n        \"aria-label\": translations.content\n      });\n    },\n    getTableProps(props2 = {}) {\n      const { view = \"day\", columns = view === \"day\" ? 7 : 4 } = props2;\n      const uid = getTableId2(props2);\n      return normalize.element({\n        ...parts.table.attrs,\n        role: \"grid\",\n        \"data-columns\": columns,\n        \"aria-roledescription\": getRoleDescription(view),\n        id: getTableId(scope, uid),\n        \"aria-readonly\": ariaAttr(readOnly),\n        \"aria-disabled\": ariaAttr(disabled),\n        \"aria-multiselectable\": ariaAttr(prop(\"selectionMode\") !== \"single\"),\n        \"data-view\": view,\n        dir: prop(\"dir\"),\n        tabIndex: -1,\n        onKeyDown(event) {\n          if (event.defaultPrevented) return;\n          const keyMap = {\n            Enter() {\n              if (view === \"day\" && isUnavailable(focusedValue)) return;\n              if (view === \"month\") {\n                const cellState = getMonthTableCellState({ value: focusedValue.month });\n                if (!cellState.selectable) return;\n              }\n              if (view === \"year\") {\n                const cellState = getYearTableCellState({ value: focusedValue.year });\n                if (!cellState.selectable) return;\n              }\n              send({ type: \"TABLE.ENTER\", view, columns, focus: true });\n            },\n            ArrowLeft() {\n              send({ type: \"TABLE.ARROW_LEFT\", view, columns, focus: true });\n            },\n            ArrowRight() {\n              send({ type: \"TABLE.ARROW_RIGHT\", view, columns, focus: true });\n            },\n            ArrowUp() {\n              send({ type: \"TABLE.ARROW_UP\", view, columns, focus: true });\n            },\n            ArrowDown() {\n              send({ type: \"TABLE.ARROW_DOWN\", view, columns, focus: true });\n            },\n            PageUp(event2) {\n              send({ type: \"TABLE.PAGE_UP\", larger: event2.shiftKey, view, columns, focus: true });\n            },\n            PageDown(event2) {\n              send({ type: \"TABLE.PAGE_DOWN\", larger: event2.shiftKey, view, columns, focus: true });\n            },\n            Home() {\n              send({ type: \"TABLE.HOME\", view, columns, focus: true });\n            },\n            End() {\n              send({ type: \"TABLE.END\", view, columns, focus: true });\n            }\n          };\n          const exec = keyMap[getEventKey(event, {\n            dir: prop(\"dir\")\n          })];\n          if (exec) {\n            exec(event);\n            event.preventDefault();\n            event.stopPropagation();\n          }\n        },\n        onPointerLeave() {\n          send({ type: \"TABLE.POINTER_LEAVE\" });\n        },\n        onPointerDown() {\n          send({ type: \"TABLE.POINTER_DOWN\", view });\n        },\n        onPointerUp() {\n          send({ type: \"TABLE.POINTER_UP\", view });\n        }\n      });\n    },\n    getTableHeadProps(props2 = {}) {\n      const { view = \"day\" } = props2;\n      return normalize.element({\n        ...parts.tableHead.attrs,\n        \"aria-hidden\": true,\n        dir: prop(\"dir\"),\n        \"data-view\": view,\n        \"data-disabled\": dataAttr(disabled)\n      });\n    },\n    getTableHeaderProps(props2 = {}) {\n      const { view = \"day\" } = props2;\n      return normalize.element({\n        ...parts.tableHeader.attrs,\n        dir: prop(\"dir\"),\n        \"data-view\": view,\n        \"data-disabled\": dataAttr(disabled)\n      });\n    },\n    getTableBodyProps(props2 = {}) {\n      const { view = \"day\" } = props2;\n      return normalize.element({\n        ...parts.tableBody.attrs,\n        \"data-view\": view,\n        \"data-disabled\": dataAttr(disabled)\n      });\n    },\n    getTableRowProps(props2 = {}) {\n      const { view = \"day\" } = props2;\n      return normalize.element({\n        ...parts.tableRow.attrs,\n        \"aria-disabled\": ariaAttr(disabled),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-view\": view\n      });\n    },\n    getDayTableCellState,\n    getDayTableCellProps(props2) {\n      const { value } = props2;\n      const cellState = getDayTableCellState(props2);\n      return normalize.element({\n        ...parts.tableCell.attrs,\n        role: \"gridcell\",\n        \"aria-disabled\": ariaAttr(!cellState.selectable),\n        \"aria-selected\": cellState.selected || cellState.inRange,\n        \"aria-invalid\": ariaAttr(cellState.invalid),\n        \"aria-current\": cellState.today ? \"date\" : void 0,\n        \"data-value\": value.toString()\n      });\n    },\n    getDayTableCellTriggerProps(props2) {\n      const { value } = props2;\n      const cellState = getDayTableCellState(props2);\n      return normalize.element({\n        ...parts.tableCellTrigger.attrs,\n        id: getCellTriggerId(scope, value.toString()),\n        role: \"button\",\n        dir: prop(\"dir\"),\n        tabIndex: cellState.focused ? 0 : -1,\n        \"aria-label\": cellState.ariaLabel,\n        \"aria-disabled\": ariaAttr(!cellState.selectable),\n        \"aria-invalid\": ariaAttr(cellState.invalid),\n        \"data-disabled\": dataAttr(!cellState.selectable),\n        \"data-selected\": dataAttr(cellState.selected),\n        \"data-value\": value.toString(),\n        \"data-view\": \"day\",\n        \"data-today\": dataAttr(cellState.today),\n        \"data-focus\": dataAttr(cellState.focused),\n        \"data-unavailable\": dataAttr(cellState.unavailable),\n        \"data-range-start\": dataAttr(cellState.firstInRange),\n        \"data-range-end\": dataAttr(cellState.lastInRange),\n        \"data-in-range\": dataAttr(cellState.inRange),\n        \"data-outside-range\": dataAttr(cellState.outsideRange),\n        \"data-weekend\": dataAttr(cellState.weekend),\n        \"data-in-hover-range\": dataAttr(cellState.inHoveredRange),\n        \"data-hover-range-start\": dataAttr(cellState.firstInHoveredRange),\n        \"data-hover-range-end\": dataAttr(cellState.lastInHoveredRange),\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          if (!cellState.selectable) return;\n          send({ type: \"CELL.CLICK\", cell: \"day\", value });\n        },\n        onPointerMove: isRangePicker ? (event) => {\n          if (event.pointerType === \"touch\") return;\n          if (!cellState.selectable) return;\n          const focus = !scope.isActiveElement(event.currentTarget);\n          if (hoveredValue && isEqualDay(value, hoveredValue)) return;\n          send({ type: \"CELL.POINTER_MOVE\", cell: \"day\", value, focus });\n        } : void 0\n      });\n    },\n    getMonthTableCellState,\n    getMonthTableCellProps(props2) {\n      const { value, columns } = props2;\n      const cellState = getMonthTableCellState(props2);\n      return normalize.element({\n        ...parts.tableCell.attrs,\n        dir: prop(\"dir\"),\n        colSpan: columns,\n        role: \"gridcell\",\n        \"aria-selected\": ariaAttr(cellState.selected || cellState.inRange),\n        \"data-selected\": dataAttr(cellState.selected),\n        \"aria-disabled\": ariaAttr(!cellState.selectable),\n        \"data-value\": value\n      });\n    },\n    getMonthTableCellTriggerProps(props2) {\n      const { value } = props2;\n      const cellState = getMonthTableCellState(props2);\n      return normalize.element({\n        ...parts.tableCellTrigger.attrs,\n        dir: prop(\"dir\"),\n        role: \"button\",\n        id: getCellTriggerId(scope, value.toString()),\n        \"data-selected\": dataAttr(cellState.selected),\n        \"aria-disabled\": ariaAttr(!cellState.selectable),\n        \"data-disabled\": dataAttr(!cellState.selectable),\n        \"data-focus\": dataAttr(cellState.focused),\n        \"data-in-range\": dataAttr(cellState.inRange),\n        \"data-outside-range\": dataAttr(cellState.outsideRange),\n        \"aria-label\": cellState.valueText,\n        \"data-view\": \"month\",\n        \"data-value\": value,\n        tabIndex: cellState.focused ? 0 : -1,\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          if (!cellState.selectable) return;\n          send({ type: \"CELL.CLICK\", cell: \"month\", value });\n        },\n        onPointerMove: isRangePicker ? (event) => {\n          if (event.pointerType === \"touch\") return;\n          if (!cellState.selectable) return;\n          const focus = !scope.isActiveElement(event.currentTarget);\n          if (hoveredValue && cellState.value && isEqualMonth(cellState.value, hoveredValue)) return;\n          send({ type: \"CELL.POINTER_MOVE\", cell: \"month\", value: cellState.value, focus });\n        } : void 0\n      });\n    },\n    getYearTableCellState,\n    getYearTableCellProps(props2) {\n      const { value, columns } = props2;\n      const cellState = getYearTableCellState(props2);\n      return normalize.element({\n        ...parts.tableCell.attrs,\n        dir: prop(\"dir\"),\n        colSpan: columns,\n        role: \"gridcell\",\n        \"aria-selected\": ariaAttr(cellState.selected),\n        \"data-selected\": dataAttr(cellState.selected),\n        \"aria-disabled\": ariaAttr(!cellState.selectable),\n        \"data-value\": value\n      });\n    },\n    getYearTableCellTriggerProps(props2) {\n      const { value } = props2;\n      const cellState = getYearTableCellState(props2);\n      return normalize.element({\n        ...parts.tableCellTrigger.attrs,\n        dir: prop(\"dir\"),\n        role: \"button\",\n        id: getCellTriggerId(scope, value.toString()),\n        \"data-selected\": dataAttr(cellState.selected),\n        \"data-focus\": dataAttr(cellState.focused),\n        \"data-in-range\": dataAttr(cellState.inRange),\n        \"aria-disabled\": ariaAttr(!cellState.selectable),\n        \"data-disabled\": dataAttr(!cellState.selectable),\n        \"aria-label\": cellState.valueText,\n        \"data-outside-range\": dataAttr(cellState.outsideRange),\n        \"data-value\": value,\n        \"data-view\": \"year\",\n        tabIndex: cellState.focused ? 0 : -1,\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          if (!cellState.selectable) return;\n          send({ type: \"CELL.CLICK\", cell: \"year\", value });\n        },\n        onPointerMove: isRangePicker ? (event) => {\n          if (event.pointerType === \"touch\") return;\n          if (!cellState.selectable) return;\n          const focus = !scope.isActiveElement(event.currentTarget);\n          if (hoveredValue && cellState.value && isEqualYear(cellState.value, hoveredValue)) return;\n          send({ type: \"CELL.POINTER_MOVE\", cell: \"year\", value: cellState.value, focus });\n        } : void 0\n      });\n    },\n    getNextTriggerProps(props2 = {}) {\n      const { view = \"day\" } = props2;\n      const isDisabled = disabled || !computed(\"isNextVisibleRangeValid\");\n      return normalize.button({\n        ...parts.nextTrigger.attrs,\n        dir: prop(\"dir\"),\n        id: getNextTriggerId(scope, view),\n        type: \"button\",\n        \"aria-label\": translations.nextTrigger(view),\n        disabled: isDisabled,\n        \"data-disabled\": dataAttr(isDisabled),\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          send({ type: \"GOTO.NEXT\", view });\n        }\n      });\n    },\n    getPrevTriggerProps(props2 = {}) {\n      const { view = \"day\" } = props2;\n      const isDisabled = disabled || !computed(\"isPrevVisibleRangeValid\");\n      return normalize.button({\n        ...parts.prevTrigger.attrs,\n        dir: prop(\"dir\"),\n        id: getPrevTriggerId(scope, view),\n        type: \"button\",\n        \"aria-label\": translations.prevTrigger(view),\n        disabled: isDisabled,\n        \"data-disabled\": dataAttr(isDisabled),\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          send({ type: \"GOTO.PREV\", view });\n        }\n      });\n    },\n    getClearTriggerProps() {\n      return normalize.button({\n        ...parts.clearTrigger.attrs,\n        id: getClearTriggerId(scope),\n        dir: prop(\"dir\"),\n        type: \"button\",\n        \"aria-label\": translations.clearTrigger,\n        hidden: !selectedValue.length,\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          send({ type: \"VALUE.CLEAR\" });\n        }\n      });\n    },\n    getTriggerProps() {\n      return normalize.button({\n        ...parts.trigger.attrs,\n        id: getTriggerId(scope),\n        dir: prop(\"dir\"),\n        type: \"button\",\n        \"data-placement\": currentPlacement,\n        \"aria-label\": translations.trigger(open),\n        \"aria-controls\": getContentId(scope),\n        \"data-state\": open ? \"open\" : \"closed\",\n        \"aria-haspopup\": \"grid\",\n        disabled,\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          if (!interactive) return;\n          send({ type: \"TRIGGER.CLICK\" });\n        }\n      });\n    },\n    getViewProps(props2 = {}) {\n      const { view = \"day\" } = props2;\n      return normalize.element({\n        ...parts.view.attrs,\n        \"data-view\": view,\n        hidden: context.get(\"view\") !== view\n      });\n    },\n    getViewTriggerProps(props2 = {}) {\n      const { view = \"day\" } = props2;\n      return normalize.button({\n        ...parts.viewTrigger.attrs,\n        \"data-view\": view,\n        dir: prop(\"dir\"),\n        id: getViewTriggerId(scope, view),\n        type: \"button\",\n        disabled,\n        \"aria-label\": translations.viewTrigger(view),\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          if (!interactive) return;\n          send({ type: \"VIEW.TOGGLE\", src: \"viewTrigger\" });\n        }\n      });\n    },\n    getViewControlProps(props2 = {}) {\n      const { view = \"day\" } = props2;\n      return normalize.element({\n        ...parts.viewControl.attrs,\n        \"data-view\": view,\n        dir: prop(\"dir\")\n      });\n    },\n    getInputProps(props2 = {}) {\n      const { index = 0, fixOnBlur = true } = props2;\n      return normalize.input({\n        ...parts.input.attrs,\n        id: getInputId(scope, index),\n        autoComplete: \"off\",\n        autoCorrect: \"off\",\n        spellCheck: \"false\",\n        dir: prop(\"dir\"),\n        name: prop(\"name\"),\n        \"data-index\": index,\n        \"data-state\": open ? \"open\" : \"closed\",\n        readOnly,\n        disabled,\n        required: prop(\"required\"),\n        \"aria-invalid\": ariaAttr(invalid),\n        \"data-invalid\": dataAttr(invalid),\n        placeholder: prop(\"placeholder\") || getInputPlaceholder(locale),\n        defaultValue: computed(\"valueAsString\")[index],\n        onBeforeInput(event) {\n          const { data } = getNativeEvent(event);\n          if (!isValidCharacter(data, separator)) {\n            event.preventDefault();\n          }\n        },\n        onFocus() {\n          send({ type: \"INPUT.FOCUS\", index });\n        },\n        onBlur(event) {\n          const value = event.currentTarget.value.trim();\n          send({ type: \"INPUT.BLUR\", value, index, fixOnBlur });\n        },\n        onKeyDown(event) {\n          if (event.defaultPrevented) return;\n          if (!interactive) return;\n          const keyMap = {\n            Enter(event2) {\n              if (isComposingEvent(event2)) return;\n              if (isUnavailable(focusedValue)) return;\n              if (event2.currentTarget.value.trim() === \"\") return;\n              send({ type: \"INPUT.ENTER\", value: event2.currentTarget.value, index });\n            }\n          };\n          const exec = keyMap[event.key];\n          if (exec) {\n            exec(event);\n            event.preventDefault();\n          }\n        },\n        onInput(event) {\n          const value = event.currentTarget.value;\n          send({ type: \"INPUT.CHANGE\", value: ensureValidCharacters(value, separator), index });\n        }\n      });\n    },\n    getMonthSelectProps() {\n      return normalize.select({\n        ...parts.monthSelect.attrs,\n        id: getMonthSelectId(scope),\n        \"aria-label\": translations.monthSelect,\n        disabled,\n        dir: prop(\"dir\"),\n        defaultValue: startValue.month,\n        onChange(event) {\n          focusMonth(Number(event.currentTarget.value));\n        }\n      });\n    },\n    getYearSelectProps() {\n      return normalize.select({\n        ...parts.yearSelect.attrs,\n        id: getYearSelectId(scope),\n        disabled,\n        \"aria-label\": translations.yearSelect,\n        dir: prop(\"dir\"),\n        defaultValue: startValue.year,\n        onChange(event) {\n          focusYear(Number(event.currentTarget.value));\n        }\n      });\n    },\n    getPositionerProps() {\n      return normalize.element({\n        id: getPositionerId(scope),\n        ...parts.positioner.attrs,\n        dir: prop(\"dir\"),\n        style: popperStyles.floating\n      });\n    },\n    getPresetTriggerProps(props2) {\n      const value = Array.isArray(props2.value) ? props2.value : getDateRangePreset(props2.value, locale, timeZone);\n      const valueAsString = value.filter((item) => item != null).map((item) => item.toDate(timeZone).toDateString());\n      return normalize.button({\n        ...parts.presetTrigger.attrs,\n        \"aria-label\": translations.presetTrigger(valueAsString),\n        type: \"button\",\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          send({ type: \"PRESET.CLICK\", value });\n        }\n      });\n    }\n  };\n}\nvar { and } = createGuards();\nfunction isDateArrayEqual(a, b) {\n  if (a?.length !== b?.length) return false;\n  const len = Math.max(a.length, b.length);\n  for (let i = 0; i < len; i++) {\n    if (!isDateEqual(a[i], b[i])) return false;\n  }\n  return true;\n}\nfunction getValueAsString(value, prop) {\n  return value.map((date) => {\n    if (date == null) return \"\";\n    return prop(\"format\")(date, { locale: prop(\"locale\"), timeZone: prop(\"timeZone\") });\n  });\n}\nvar machine = createMachine({\n  props({ props: props2 }) {\n    const locale = props2.locale || \"en-US\";\n    const timeZone = props2.timeZone || \"UTC\";\n    const selectionMode = props2.selectionMode || \"single\";\n    const numOfMonths = props2.numOfMonths || 1;\n    const defaultValue = props2.defaultValue ? sortDates(props2.defaultValue).map((date) => constrainValue(date, props2.min, props2.max)) : void 0;\n    const value = props2.value ? sortDates(props2.value).map((date) => constrainValue(date, props2.min, props2.max)) : void 0;\n    let focusedValue = props2.focusedValue || props2.defaultFocusedValue || value?.[0] || defaultValue?.[0] || getTodayDate(timeZone);\n    focusedValue = constrainValue(focusedValue, props2.min, props2.max);\n    const minView = \"day\";\n    const maxView = \"year\";\n    const defaultView = clampView(props2.view || minView, minView, maxView);\n    return {\n      locale,\n      numOfMonths,\n      timeZone,\n      selectionMode,\n      defaultView,\n      minView,\n      maxView,\n      outsideDaySelectable: false,\n      closeOnSelect: true,\n      format(date, { locale: locale2, timeZone: timeZone2 }) {\n        const formatter = new DateFormatter(locale2, { timeZone: timeZone2, day: \"2-digit\", month: \"2-digit\", year: \"numeric\" });\n        return formatter.format(date.toDate(timeZone2));\n      },\n      parse(value2, { locale: locale2, timeZone: timeZone2 }) {\n        return parseDateString(value2, locale2, timeZone2);\n      },\n      ...props2,\n      focusedValue: typeof props2.focusedValue === \"undefined\" ? void 0 : focusedValue,\n      defaultFocusedValue: focusedValue,\n      value,\n      defaultValue: defaultValue ?? [],\n      positioning: {\n        placement: \"bottom\",\n        ...props2.positioning\n      }\n    };\n  },\n  initialState({ prop }) {\n    const open = prop(\"open\") || prop(\"defaultOpen\") || prop(\"inline\");\n    return open ? \"open\" : \"idle\";\n  },\n  refs() {\n    return {\n      announcer: void 0\n    };\n  },\n  context({ prop, bindable, getContext }) {\n    return {\n      focusedValue: bindable(() => ({\n        defaultValue: prop(\"defaultFocusedValue\"),\n        value: prop(\"focusedValue\"),\n        isEqual: isDateEqual,\n        hash: (v) => v.toString(),\n        sync: true,\n        onChange(focusedValue) {\n          const context = getContext();\n          const view = context.get(\"view\");\n          const value = context.get(\"value\");\n          const valueAsString = getValueAsString(value, prop);\n          prop(\"onFocusChange\")?.({ value, valueAsString, view, focusedValue });\n        }\n      })),\n      value: bindable(() => ({\n        defaultValue: prop(\"defaultValue\"),\n        value: prop(\"value\"),\n        isEqual: isDateArrayEqual,\n        hash: (v) => v.map((date) => date?.toString() ?? \"\").join(\",\"),\n        onChange(value) {\n          const context = getContext();\n          const valueAsString = getValueAsString(value, prop);\n          prop(\"onValueChange\")?.({ value, valueAsString, view: context.get(\"view\") });\n        }\n      })),\n      inputValue: bindable(() => ({\n        defaultValue: \"\"\n      })),\n      activeIndex: bindable(() => ({\n        defaultValue: 0,\n        sync: true\n      })),\n      hoveredValue: bindable(() => ({\n        defaultValue: null,\n        isEqual: isDateEqual\n      })),\n      view: bindable(() => ({\n        defaultValue: prop(\"defaultView\"),\n        value: prop(\"view\"),\n        onChange(value) {\n          prop(\"onViewChange\")?.({ view: value });\n        }\n      })),\n      startValue: bindable(() => {\n        const focusedValue = prop(\"focusedValue\") || prop(\"defaultFocusedValue\");\n        return {\n          defaultValue: alignDate(focusedValue, \"start\", { months: prop(\"numOfMonths\") }, prop(\"locale\")),\n          isEqual: isDateEqual,\n          hash: (v) => v.toString()\n        };\n      }),\n      currentPlacement: bindable(() => ({\n        defaultValue: void 0\n      })),\n      restoreFocus: bindable(() => ({\n        defaultValue: false\n      }))\n    };\n  },\n  computed: {\n    isInteractive: ({ prop }) => !prop(\"disabled\") && !prop(\"readOnly\"),\n    visibleDuration: ({ prop }) => ({ months: prop(\"numOfMonths\") }),\n    endValue: ({ context, computed }) => getEndDate(context.get(\"startValue\"), computed(\"visibleDuration\")),\n    visibleRange: ({ context, computed }) => ({ start: context.get(\"startValue\"), end: computed(\"endValue\") }),\n    visibleRangeText({ context, prop, computed }) {\n      const timeZone = prop(\"timeZone\");\n      const formatter = new DateFormatter(prop(\"locale\"), { month: \"long\", year: \"numeric\", timeZone });\n      const start = formatter.format(context.get(\"startValue\").toDate(timeZone));\n      const end = formatter.format(computed(\"endValue\").toDate(timeZone));\n      const formatted = prop(\"selectionMode\") === \"range\" ? `${start} - ${end}` : start;\n      return { start, end, formatted };\n    },\n    isPrevVisibleRangeValid: ({ context, prop }) => !isPreviousRangeInvalid(context.get(\"startValue\"), prop(\"min\"), prop(\"max\")),\n    isNextVisibleRangeValid: ({ prop, computed }) => !isNextRangeInvalid(computed(\"endValue\"), prop(\"min\"), prop(\"max\")),\n    valueAsString: ({ context, prop }) => getValueAsString(context.get(\"value\"), prop)\n  },\n  effects: [\"setupLiveRegion\"],\n  watch({ track, prop, context, action, computed }) {\n    track([() => prop(\"locale\")], () => {\n      action([\"setStartValue\", \"syncInputElement\"]);\n    });\n    track([() => context.hash(\"focusedValue\")], () => {\n      action([\"setStartValue\", \"focusActiveCellIfNeeded\", \"setHoveredValueIfKeyboard\"]);\n    });\n    track([() => context.hash(\"startValue\")], () => {\n      action([\"syncMonthSelectElement\", \"syncYearSelectElement\", \"invokeOnVisibleRangeChange\"]);\n    });\n    track([() => context.get(\"inputValue\")], () => {\n      action([\"syncInputValue\"]);\n    });\n    track([() => context.hash(\"value\")], () => {\n      action([\"syncInputElement\"]);\n    });\n    track([() => computed(\"valueAsString\").toString()], () => {\n      action([\"announceValueText\"]);\n    });\n    track([() => context.get(\"view\")], () => {\n      action([\"focusActiveCell\"]);\n    });\n    track([() => prop(\"open\")], () => {\n      action([\"toggleVisibility\"]);\n    });\n  },\n  on: {\n    \"VALUE.SET\": {\n      actions: [\"setDateValue\", \"setFocusedDate\"]\n    },\n    \"VIEW.SET\": {\n      actions: [\"setView\"]\n    },\n    \"FOCUS.SET\": {\n      actions: [\"setFocusedDate\"]\n    },\n    \"VALUE.CLEAR\": {\n      actions: [\"clearDateValue\", \"clearFocusedDate\", \"focusFirstInputElement\"]\n    },\n    \"INPUT.CHANGE\": [\n      {\n        guard: \"isInputValueEmpty\",\n        actions: [\"setInputValue\", \"clearDateValue\", \"clearFocusedDate\"]\n      },\n      {\n        actions: [\"setInputValue\", \"focusParsedDate\"]\n      }\n    ],\n    \"INPUT.ENTER\": {\n      actions: [\"focusParsedDate\", \"selectFocusedDate\"]\n    },\n    \"INPUT.FOCUS\": {\n      actions: [\"setActiveIndex\"]\n    },\n    \"INPUT.BLUR\": [\n      {\n        guard: \"shouldFixOnBlur\",\n        actions: [\"setActiveIndexToStart\", \"selectParsedDate\"]\n      },\n      {\n        actions: [\"setActiveIndexToStart\"]\n      }\n    ],\n    \"PRESET.CLICK\": [\n      {\n        guard: \"isOpenControlled\",\n        actions: [\"setDateValue\", \"setFocusedDate\", \"invokeOnClose\"]\n      },\n      {\n        target: \"focused\",\n        actions: [\"setDateValue\", \"setFocusedDate\", \"focusInputElement\"]\n      }\n    ],\n    \"GOTO.NEXT\": [\n      {\n        guard: \"isYearView\",\n        actions: [\"focusNextDecade\", \"announceVisibleRange\"]\n      },\n      {\n        guard: \"isMonthView\",\n        actions: [\"focusNextYear\", \"announceVisibleRange\"]\n      },\n      {\n        actions: [\"focusNextPage\"]\n      }\n    ],\n    \"GOTO.PREV\": [\n      {\n        guard: \"isYearView\",\n        actions: [\"focusPreviousDecade\", \"announceVisibleRange\"]\n      },\n      {\n        guard: \"isMonthView\",\n        actions: [\"focusPreviousYear\", \"announceVisibleRange\"]\n      },\n      {\n        actions: [\"focusPreviousPage\"]\n      }\n    ]\n  },\n  states: {\n    idle: {\n      tags: [\"closed\"],\n      on: {\n        \"CONTROLLED.OPEN\": {\n          target: \"open\",\n          actions: [\"focusFirstSelectedDate\", \"focusActiveCell\"]\n        },\n        \"TRIGGER.CLICK\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"focusFirstSelectedDate\", \"focusActiveCell\", \"invokeOnOpen\"]\n          }\n        ],\n        OPEN: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"focusFirstSelectedDate\", \"focusActiveCell\", \"invokeOnOpen\"]\n          }\n        ]\n      }\n    },\n    focused: {\n      tags: [\"closed\"],\n      on: {\n        \"CONTROLLED.OPEN\": {\n          target: \"open\",\n          actions: [\"focusFirstSelectedDate\", \"focusActiveCell\"]\n        },\n        \"TRIGGER.CLICK\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"focusFirstSelectedDate\", \"focusActiveCell\", \"invokeOnOpen\"]\n          }\n        ],\n        OPEN: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"focusFirstSelectedDate\", \"focusActiveCell\", \"invokeOnOpen\"]\n          }\n        ]\n      }\n    },\n    open: {\n      tags: [\"open\"],\n      effects: [\"trackDismissableElement\", \"trackPositioning\"],\n      exit: [\"clearHoveredDate\", \"resetView\"],\n      on: {\n        \"CONTROLLED.CLOSE\": [\n          {\n            guard: and(\"shouldRestoreFocus\", \"isInteractOutsideEvent\"),\n            target: \"focused\",\n            actions: [\"focusTriggerElement\"]\n          },\n          {\n            guard: \"shouldRestoreFocus\",\n            target: \"focused\",\n            actions: [\"focusInputElement\"]\n          },\n          {\n            target: \"idle\"\n          }\n        ],\n        \"CELL.CLICK\": [\n          {\n            guard: \"isAboveMinView\",\n            actions: [\"setFocusedValueForView\", \"setPreviousView\"]\n          },\n          {\n            guard: and(\"isRangePicker\", \"hasSelectedRange\"),\n            actions: [\"setActiveIndexToStart\", \"resetSelection\", \"setActiveIndexToEnd\"]\n          },\n          // === Grouped transitions (based on `closeOnSelect` and `isOpenControlled`) ===\n          {\n            guard: and(\"isRangePicker\", \"isSelectingEndDate\", \"closeOnSelect\", \"isOpenControlled\"),\n            actions: [\n              \"setFocusedDate\",\n              \"setSelectedDate\",\n              \"setActiveIndexToStart\",\n              \"clearHoveredDate\",\n              \"invokeOnClose\",\n              \"setRestoreFocus\"\n            ]\n          },\n          {\n            guard: and(\"isRangePicker\", \"isSelectingEndDate\", \"closeOnSelect\"),\n            target: \"focused\",\n            actions: [\n              \"setFocusedDate\",\n              \"setSelectedDate\",\n              \"setActiveIndexToStart\",\n              \"clearHoveredDate\",\n              \"invokeOnClose\",\n              \"focusInputElement\"\n            ]\n          },\n          {\n            guard: and(\"isRangePicker\", \"isSelectingEndDate\"),\n            actions: [\"setFocusedDate\", \"setSelectedDate\", \"setActiveIndexToStart\", \"clearHoveredDate\"]\n          },\n          // ===\n          {\n            guard: \"isRangePicker\",\n            actions: [\"setFocusedDate\", \"setSelectedDate\", \"setActiveIndexToEnd\"]\n          },\n          {\n            guard: \"isMultiPicker\",\n            actions: [\"setFocusedDate\", \"toggleSelectedDate\"]\n          },\n          // === Grouped transitions (based on `closeOnSelect` and `isOpenControlled`) ===\n          {\n            guard: and(\"closeOnSelect\", \"isOpenControlled\"),\n            actions: [\"setFocusedDate\", \"setSelectedDate\", \"invokeOnClose\"]\n          },\n          {\n            guard: \"closeOnSelect\",\n            target: \"focused\",\n            actions: [\"setFocusedDate\", \"setSelectedDate\", \"invokeOnClose\", \"focusInputElement\"]\n          },\n          {\n            actions: [\"setFocusedDate\", \"setSelectedDate\"]\n          }\n          // ===\n        ],\n        \"CELL.POINTER_MOVE\": {\n          guard: and(\"isRangePicker\", \"isSelectingEndDate\"),\n          actions: [\"setHoveredDate\", \"setFocusedDate\"]\n        },\n        \"TABLE.POINTER_LEAVE\": {\n          guard: \"isRangePicker\",\n          actions: [\"clearHoveredDate\"]\n        },\n        \"TABLE.POINTER_DOWN\": {\n          actions: [\"disableTextSelection\"]\n        },\n        \"TABLE.POINTER_UP\": {\n          actions: [\"enableTextSelection\"]\n        },\n        \"TABLE.ESCAPE\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"focusFirstSelectedDate\", \"invokeOnClose\"]\n          },\n          {\n            target: \"focused\",\n            actions: [\"focusFirstSelectedDate\", \"invokeOnClose\", \"focusTriggerElement\"]\n          }\n        ],\n        \"TABLE.ENTER\": [\n          {\n            guard: \"isAboveMinView\",\n            actions: [\"setPreviousView\"]\n          },\n          {\n            guard: and(\"isRangePicker\", \"hasSelectedRange\"),\n            actions: [\"setActiveIndexToStart\", \"clearDateValue\", \"setSelectedDate\", \"setActiveIndexToEnd\"]\n          },\n          // === Grouped transitions (based on `closeOnSelect` and `isOpenControlled`) ===\n          {\n            guard: and(\"isRangePicker\", \"isSelectingEndDate\", \"closeOnSelect\", \"isOpenControlled\"),\n            actions: [\"setSelectedDate\", \"setActiveIndexToStart\", \"clearHoveredDate\", \"invokeOnClose\"]\n          },\n          {\n            guard: and(\"isRangePicker\", \"isSelectingEndDate\", \"closeOnSelect\"),\n            target: \"focused\",\n            actions: [\n              \"setSelectedDate\",\n              \"setActiveIndexToStart\",\n              \"clearHoveredDate\",\n              \"invokeOnClose\",\n              \"focusInputElement\"\n            ]\n          },\n          {\n            guard: and(\"isRangePicker\", \"isSelectingEndDate\"),\n            actions: [\"setSelectedDate\", \"setActiveIndexToStart\", \"clearHoveredDate\"]\n          },\n          // ===\n          {\n            guard: \"isRangePicker\",\n            actions: [\"setSelectedDate\", \"setActiveIndexToEnd\", \"focusNextDay\"]\n          },\n          {\n            guard: \"isMultiPicker\",\n            actions: [\"toggleSelectedDate\"]\n          },\n          // === Grouped transitions (based on `closeOnSelect` and `isOpenControlled`) ===\n          {\n            guard: and(\"closeOnSelect\", \"isOpenControlled\"),\n            actions: [\"selectFocusedDate\", \"invokeOnClose\"]\n          },\n          {\n            guard: \"closeOnSelect\",\n            target: \"focused\",\n            actions: [\"selectFocusedDate\", \"invokeOnClose\", \"focusInputElement\"]\n          },\n          {\n            actions: [\"selectFocusedDate\"]\n          }\n          // ===\n        ],\n        \"TABLE.ARROW_RIGHT\": [\n          {\n            guard: \"isMonthView\",\n            actions: [\"focusNextMonth\"]\n          },\n          {\n            guard: \"isYearView\",\n            actions: [\"focusNextYear\"]\n          },\n          {\n            actions: [\"focusNextDay\", \"setHoveredDate\"]\n          }\n        ],\n        \"TABLE.ARROW_LEFT\": [\n          {\n            guard: \"isMonthView\",\n            actions: [\"focusPreviousMonth\"]\n          },\n          {\n            guard: \"isYearView\",\n            actions: [\"focusPreviousYear\"]\n          },\n          {\n            actions: [\"focusPreviousDay\"]\n          }\n        ],\n        \"TABLE.ARROW_UP\": [\n          {\n            guard: \"isMonthView\",\n            actions: [\"focusPreviousMonthColumn\"]\n          },\n          {\n            guard: \"isYearView\",\n            actions: [\"focusPreviousYearColumn\"]\n          },\n          {\n            actions: [\"focusPreviousWeek\"]\n          }\n        ],\n        \"TABLE.ARROW_DOWN\": [\n          {\n            guard: \"isMonthView\",\n            actions: [\"focusNextMonthColumn\"]\n          },\n          {\n            guard: \"isYearView\",\n            actions: [\"focusNextYearColumn\"]\n          },\n          {\n            actions: [\"focusNextWeek\"]\n          }\n        ],\n        \"TABLE.PAGE_UP\": {\n          actions: [\"focusPreviousSection\"]\n        },\n        \"TABLE.PAGE_DOWN\": {\n          actions: [\"focusNextSection\"]\n        },\n        \"TABLE.HOME\": [\n          {\n            guard: \"isMonthView\",\n            actions: [\"focusFirstMonth\"]\n          },\n          {\n            guard: \"isYearView\",\n            actions: [\"focusFirstYear\"]\n          },\n          {\n            actions: [\"focusSectionStart\"]\n          }\n        ],\n        \"TABLE.END\": [\n          {\n            guard: \"isMonthView\",\n            actions: [\"focusLastMonth\"]\n          },\n          {\n            guard: \"isYearView\",\n            actions: [\"focusLastYear\"]\n          },\n          {\n            actions: [\"focusSectionEnd\"]\n          }\n        ],\n        \"TRIGGER.CLICK\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            target: \"focused\",\n            actions: [\"invokeOnClose\"]\n          }\n        ],\n        \"VIEW.TOGGLE\": {\n          actions: [\"setNextView\"]\n        },\n        INTERACT_OUTSIDE: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"setActiveIndexToStart\", \"invokeOnClose\"]\n          },\n          {\n            guard: \"shouldRestoreFocus\",\n            target: \"focused\",\n            actions: [\"setActiveIndexToStart\", \"invokeOnClose\", \"focusTriggerElement\"]\n          },\n          {\n            target: \"idle\",\n            actions: [\"setActiveIndexToStart\", \"invokeOnClose\"]\n          }\n        ],\n        CLOSE: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"setActiveIndexToStart\", \"invokeOnClose\"]\n          },\n          {\n            target: \"idle\",\n            actions: [\"setActiveIndexToStart\", \"invokeOnClose\"]\n          }\n        ]\n      }\n    }\n  },\n  implementations: {\n    guards: {\n      isAboveMinView: ({ context, prop }) => isAboveMinView(context.get(\"view\"), prop(\"minView\")),\n      isDayView: ({ context, event }) => (event.view || context.get(\"view\")) === \"day\",\n      isMonthView: ({ context, event }) => (event.view || context.get(\"view\")) === \"month\",\n      isYearView: ({ context, event }) => (event.view || context.get(\"view\")) === \"year\",\n      isRangePicker: ({ prop }) => prop(\"selectionMode\") === \"range\",\n      hasSelectedRange: ({ context }) => context.get(\"value\").length === 2,\n      isMultiPicker: ({ prop }) => prop(\"selectionMode\") === \"multiple\",\n      shouldRestoreFocus: ({ context }) => !!context.get(\"restoreFocus\"),\n      isSelectingEndDate: ({ context }) => context.get(\"activeIndex\") === 1,\n      closeOnSelect: ({ prop }) => !!prop(\"closeOnSelect\"),\n      isOpenControlled: ({ prop }) => prop(\"open\") != void 0 || !!prop(\"inline\"),\n      isInteractOutsideEvent: ({ event }) => event.previousEvent?.type === \"INTERACT_OUTSIDE\",\n      isInputValueEmpty: ({ event }) => event.value.trim() === \"\",\n      shouldFixOnBlur: ({ event }) => !!event.fixOnBlur\n    },\n    effects: {\n      trackPositioning({ context, prop, scope }) {\n        if (prop(\"inline\")) return;\n        if (!context.get(\"currentPlacement\")) {\n          context.set(\"currentPlacement\", prop(\"positioning\").placement);\n        }\n        const anchorEl = getControlEl(scope);\n        const getPositionerEl2 = () => getPositionerEl(scope);\n        return getPlacement(anchorEl, getPositionerEl2, {\n          ...prop(\"positioning\"),\n          defer: true,\n          onComplete(data) {\n            context.set(\"currentPlacement\", data.placement);\n          }\n        });\n      },\n      setupLiveRegion({ scope, refs }) {\n        const doc = scope.getDoc();\n        refs.set(\"announcer\", createLiveRegion({ level: \"assertive\", document: doc }));\n        return () => refs.get(\"announcer\")?.destroy?.();\n      },\n      trackDismissableElement({ scope, send, context, prop }) {\n        if (prop(\"inline\")) return;\n        const getContentEl2 = () => getContentEl(scope);\n        return trackDismissableElement(getContentEl2, {\n          type: \"popover\",\n          defer: true,\n          exclude: [...getInputEls(scope), getTriggerEl(scope), getClearTriggerEl(scope)],\n          onInteractOutside(event) {\n            context.set(\"restoreFocus\", !event.detail.focusable);\n          },\n          onDismiss() {\n            send({ type: \"INTERACT_OUTSIDE\" });\n          },\n          onEscapeKeyDown(event) {\n            event.preventDefault();\n            send({ type: \"TABLE.ESCAPE\", src: \"dismissable\" });\n          }\n        });\n      }\n    },\n    actions: {\n      setNextView({ context, prop }) {\n        const nextView = getNextView(context.get(\"view\"), prop(\"minView\"), prop(\"maxView\"));\n        context.set(\"view\", nextView);\n      },\n      setPreviousView({ context, prop }) {\n        const prevView = getPreviousView(context.get(\"view\"), prop(\"minView\"), prop(\"maxView\"));\n        context.set(\"view\", prevView);\n      },\n      setView({ context, event }) {\n        context.set(\"view\", event.view);\n      },\n      setRestoreFocus({ context }) {\n        context.set(\"restoreFocus\", true);\n      },\n      announceValueText({ context, prop, refs }) {\n        const value = context.get(\"value\");\n        const locale = prop(\"locale\");\n        const timeZone = prop(\"timeZone\");\n        let announceText;\n        if (prop(\"selectionMode\") === \"range\") {\n          const [startDate, endDate] = value;\n          if (startDate && endDate) {\n            announceText = formatSelectedDate(startDate, endDate, locale, timeZone);\n          } else if (startDate) {\n            announceText = formatSelectedDate(startDate, null, locale, timeZone);\n          } else if (endDate) {\n            announceText = formatSelectedDate(endDate, null, locale, timeZone);\n          } else {\n            announceText = \"\";\n          }\n        } else {\n          announceText = value.map((date) => formatSelectedDate(date, null, locale, timeZone)).filter(Boolean).join(\",\");\n        }\n        refs.get(\"announcer\")?.announce(announceText, 3e3);\n      },\n      announceVisibleRange({ computed, refs }) {\n        const { formatted } = computed(\"visibleRangeText\");\n        refs.get(\"announcer\")?.announce(formatted);\n      },\n      disableTextSelection({ scope }) {\n        disableTextSelection({ target: getContentEl(scope), doc: scope.getDoc() });\n      },\n      enableTextSelection({ scope }) {\n        restoreTextSelection({ doc: scope.getDoc(), target: getContentEl(scope) });\n      },\n      focusFirstSelectedDate(params) {\n        const { context } = params;\n        if (!context.get(\"value\").length) return;\n        setFocusedValue(params, context.get(\"value\")[0]);\n      },\n      syncInputElement({ scope, computed }) {\n        raf(() => {\n          const inputEls = getInputEls(scope);\n          inputEls.forEach((inputEl, index) => {\n            setElementValue(inputEl, computed(\"valueAsString\")[index] || \"\");\n          });\n        });\n      },\n      setFocusedDate(params) {\n        const { event } = params;\n        const value = Array.isArray(event.value) ? event.value[0] : event.value;\n        setFocusedValue(params, value);\n      },\n      setFocusedValueForView(params) {\n        const { context, event } = params;\n        setFocusedValue(params, context.get(\"focusedValue\").set({ [context.get(\"view\")]: event.value }));\n      },\n      focusNextMonth(params) {\n        const { context } = params;\n        setFocusedValue(params, context.get(\"focusedValue\").add({ months: 1 }));\n      },\n      focusPreviousMonth(params) {\n        const { context } = params;\n        setFocusedValue(params, context.get(\"focusedValue\").subtract({ months: 1 }));\n      },\n      setDateValue({ context, event, prop }) {\n        if (!Array.isArray(event.value)) return;\n        const value = event.value.map((date) => constrainValue(date, prop(\"min\"), prop(\"max\")));\n        context.set(\"value\", value);\n      },\n      clearDateValue({ context }) {\n        context.set(\"value\", []);\n      },\n      setSelectedDate(params) {\n        const { context, event } = params;\n        const values = Array.from(context.get(\"value\"));\n        values[context.get(\"activeIndex\")] = normalizeValue(params, event.value ?? context.get(\"focusedValue\"));\n        context.set(\"value\", adjustStartAndEndDate(values));\n      },\n      resetSelection(params) {\n        const { context, event } = params;\n        const value = normalizeValue(params, event.value ?? context.get(\"focusedValue\"));\n        context.set(\"value\", [value]);\n      },\n      toggleSelectedDate(params) {\n        const { context, event } = params;\n        const currentValue = normalizeValue(params, event.value ?? context.get(\"focusedValue\"));\n        const index = context.get(\"value\").findIndex((date) => isDateEqual(date, currentValue));\n        if (index === -1) {\n          const values = [...context.get(\"value\"), currentValue];\n          context.set(\"value\", sortDates(values));\n        } else {\n          const values = Array.from(context.get(\"value\"));\n          values.splice(index, 1);\n          context.set(\"value\", sortDates(values));\n        }\n      },\n      setHoveredDate({ context, event }) {\n        context.set(\"hoveredValue\", event.value);\n      },\n      clearHoveredDate({ context }) {\n        context.set(\"hoveredValue\", null);\n      },\n      selectFocusedDate({ context, computed }) {\n        const values = Array.from(context.get(\"value\"));\n        const activeIndex = context.get(\"activeIndex\");\n        values[activeIndex] = context.get(\"focusedValue\").copy();\n        context.set(\"value\", adjustStartAndEndDate(values));\n        const valueAsString = computed(\"valueAsString\");\n        context.set(\"inputValue\", valueAsString[activeIndex]);\n      },\n      focusPreviousDay(params) {\n        const { context } = params;\n        const nextValue = context.get(\"focusedValue\").subtract({ days: 1 });\n        setFocusedValue(params, nextValue);\n      },\n      focusNextDay(params) {\n        const { context } = params;\n        const nextValue = context.get(\"focusedValue\").add({ days: 1 });\n        setFocusedValue(params, nextValue);\n      },\n      focusPreviousWeek(params) {\n        const { context } = params;\n        const nextValue = context.get(\"focusedValue\").subtract({ weeks: 1 });\n        setFocusedValue(params, nextValue);\n      },\n      focusNextWeek(params) {\n        const { context } = params;\n        const nextValue = context.get(\"focusedValue\").add({ weeks: 1 });\n        setFocusedValue(params, nextValue);\n      },\n      focusNextPage(params) {\n        const { context, computed, prop } = params;\n        const nextPage = getNextPage(\n          context.get(\"focusedValue\"),\n          context.get(\"startValue\"),\n          computed(\"visibleDuration\"),\n          prop(\"locale\"),\n          prop(\"min\"),\n          prop(\"max\")\n        );\n        setAdjustedValue(params, nextPage);\n      },\n      focusPreviousPage(params) {\n        const { context, computed, prop } = params;\n        const previousPage = getPreviousPage(\n          context.get(\"focusedValue\"),\n          context.get(\"startValue\"),\n          computed(\"visibleDuration\"),\n          prop(\"locale\"),\n          prop(\"min\"),\n          prop(\"max\")\n        );\n        setAdjustedValue(params, previousPage);\n      },\n      focusSectionStart(params) {\n        const { context } = params;\n        setFocusedValue(params, context.get(\"startValue\").copy());\n      },\n      focusSectionEnd(params) {\n        const { computed } = params;\n        setFocusedValue(params, computed(\"endValue\").copy());\n      },\n      focusNextSection(params) {\n        const { context, event, computed, prop } = params;\n        const nextSection = getNextSection(\n          context.get(\"focusedValue\"),\n          context.get(\"startValue\"),\n          event.larger,\n          computed(\"visibleDuration\"),\n          prop(\"locale\"),\n          prop(\"min\"),\n          prop(\"max\")\n        );\n        if (!nextSection) return;\n        setAdjustedValue(params, nextSection);\n      },\n      focusPreviousSection(params) {\n        const { context, event, computed, prop } = params;\n        const previousSection = getPreviousSection(\n          context.get(\"focusedValue\"),\n          context.get(\"startValue\"),\n          event.larger,\n          computed(\"visibleDuration\"),\n          prop(\"locale\"),\n          prop(\"min\"),\n          prop(\"max\")\n        );\n        if (!previousSection) return;\n        setAdjustedValue(params, previousSection);\n      },\n      focusNextYear(params) {\n        const { context } = params;\n        const nextValue = context.get(\"focusedValue\").add({ years: 1 });\n        setFocusedValue(params, nextValue);\n      },\n      focusPreviousYear(params) {\n        const { context } = params;\n        const nextValue = context.get(\"focusedValue\").subtract({ years: 1 });\n        setFocusedValue(params, nextValue);\n      },\n      focusNextDecade(params) {\n        const { context } = params;\n        const nextValue = context.get(\"focusedValue\").add({ years: 10 });\n        setFocusedValue(params, nextValue);\n      },\n      focusPreviousDecade(params) {\n        const { context } = params;\n        const nextValue = context.get(\"focusedValue\").subtract({ years: 10 });\n        setFocusedValue(params, nextValue);\n      },\n      clearFocusedDate(params) {\n        const { prop } = params;\n        setFocusedValue(params, getTodayDate(prop(\"timeZone\")));\n      },\n      focusPreviousMonthColumn(params) {\n        const { context, event } = params;\n        const nextValue = context.get(\"focusedValue\").subtract({ months: event.columns });\n        setFocusedValue(params, nextValue);\n      },\n      focusNextMonthColumn(params) {\n        const { context, event } = params;\n        const nextValue = context.get(\"focusedValue\").add({ months: event.columns });\n        setFocusedValue(params, nextValue);\n      },\n      focusPreviousYearColumn(params) {\n        const { context, event } = params;\n        const nextValue = context.get(\"focusedValue\").subtract({ years: event.columns });\n        setFocusedValue(params, nextValue);\n      },\n      focusNextYearColumn(params) {\n        const { context, event } = params;\n        const nextValue = context.get(\"focusedValue\").add({ years: event.columns });\n        setFocusedValue(params, nextValue);\n      },\n      focusFirstMonth(params) {\n        const { context } = params;\n        const nextValue = context.get(\"focusedValue\").set({ month: 1 });\n        setFocusedValue(params, nextValue);\n      },\n      focusLastMonth(params) {\n        const { context } = params;\n        const nextValue = context.get(\"focusedValue\").set({ month: 12 });\n        setFocusedValue(params, nextValue);\n      },\n      focusFirstYear(params) {\n        const { context } = params;\n        const range = getDecadeRange(context.get(\"focusedValue\").year);\n        const nextValue = context.get(\"focusedValue\").set({ year: range[0] });\n        setFocusedValue(params, nextValue);\n      },\n      focusLastYear(params) {\n        const { context } = params;\n        const range = getDecadeRange(context.get(\"focusedValue\").year);\n        const nextValue = context.get(\"focusedValue\").set({ year: range[range.length - 1] });\n        setFocusedValue(params, nextValue);\n      },\n      setActiveIndex({ context, event }) {\n        context.set(\"activeIndex\", event.index);\n      },\n      setActiveIndexToEnd({ context }) {\n        context.set(\"activeIndex\", 1);\n      },\n      setActiveIndexToStart({ context }) {\n        context.set(\"activeIndex\", 0);\n      },\n      focusActiveCell({ scope, context }) {\n        raf(() => {\n          const view = context.get(\"view\");\n          getFocusedCell(scope, view)?.focus({ preventScroll: true });\n        });\n      },\n      focusActiveCellIfNeeded({ scope, context, event }) {\n        if (!event.focus) return;\n        raf(() => {\n          const view = context.get(\"view\");\n          getFocusedCell(scope, view)?.focus({ preventScroll: true });\n        });\n      },\n      setHoveredValueIfKeyboard({ context, event, prop }) {\n        if (!event.type.startsWith(\"TABLE.ARROW\") || prop(\"selectionMode\") !== \"range\" || context.get(\"activeIndex\") === 0)\n          return;\n        context.set(\"hoveredValue\", context.get(\"focusedValue\").copy());\n      },\n      focusTriggerElement({ scope }) {\n        raf(() => {\n          getTriggerEl(scope)?.focus({ preventScroll: true });\n        });\n      },\n      focusFirstInputElement({ scope }) {\n        raf(() => {\n          const [inputEl] = getInputEls(scope);\n          inputEl?.focus({ preventScroll: true });\n        });\n      },\n      focusInputElement({ scope }) {\n        raf(() => {\n          const inputEls = getInputEls(scope);\n          const lastIndexWithValue = inputEls.findLastIndex((inputEl2) => inputEl2.value !== \"\");\n          const indexToFocus = Math.max(lastIndexWithValue, 0);\n          const inputEl = inputEls[indexToFocus];\n          inputEl?.focus({ preventScroll: true });\n          inputEl?.setSelectionRange(inputEl.value.length, inputEl.value.length);\n        });\n      },\n      syncMonthSelectElement({ scope, context }) {\n        const monthSelectEl = getMonthSelectEl(scope);\n        setElementValue(monthSelectEl, context.get(\"startValue\").month.toString());\n      },\n      syncYearSelectElement({ scope, context }) {\n        const yearSelectEl = getYearSelectEl(scope);\n        setElementValue(yearSelectEl, context.get(\"startValue\").year.toString());\n      },\n      setInputValue({ context, event }) {\n        if (context.get(\"activeIndex\") !== event.index) return;\n        context.set(\"inputValue\", event.value);\n      },\n      syncInputValue({ scope, context, event }) {\n        queueMicrotask(() => {\n          const inputEls = getInputEls(scope);\n          const idx = event.index ?? context.get(\"activeIndex\");\n          setElementValue(inputEls[idx], context.get(\"inputValue\"));\n        });\n      },\n      focusParsedDate(params) {\n        const { event, prop } = params;\n        if (event.index == null) return;\n        const parse2 = prop(\"parse\");\n        const date = parse2(event.value, { locale: prop(\"locale\"), timeZone: prop(\"timeZone\") });\n        if (!date || !isValidDate(date)) return;\n        setFocusedValue(params, date);\n      },\n      selectParsedDate({ context, event, prop }) {\n        if (event.index == null) return;\n        const parse2 = prop(\"parse\");\n        let date = parse2(event.value, { locale: prop(\"locale\"), timeZone: prop(\"timeZone\") });\n        if (!date || !isValidDate(date)) {\n          if (event.value) {\n            date = context.get(\"focusedValue\").copy();\n          }\n        }\n        if (!date) return;\n        date = constrainValue(date, prop(\"min\"), prop(\"max\"));\n        const values = Array.from(context.get(\"value\"));\n        values[event.index] = date;\n        context.set(\"value\", values);\n        const valueAsString = getValueAsString(values, prop);\n        context.set(\"inputValue\", valueAsString[event.index]);\n      },\n      resetView({ context }) {\n        context.set(\"view\", context.initial(\"view\"));\n      },\n      setStartValue({ context, computed, prop }) {\n        const focusedValue = context.get(\"focusedValue\");\n        const outside = isDateOutsideRange(focusedValue, context.get(\"startValue\"), computed(\"endValue\"));\n        if (!outside) return;\n        const startValue = alignDate(focusedValue, \"start\", { months: prop(\"numOfMonths\") }, prop(\"locale\"));\n        context.set(\"startValue\", startValue);\n      },\n      invokeOnOpen({ prop, context }) {\n        if (prop(\"inline\")) return;\n        prop(\"onOpenChange\")?.({ open: true, value: context.get(\"value\") });\n      },\n      invokeOnClose({ prop, context }) {\n        if (prop(\"inline\")) return;\n        prop(\"onOpenChange\")?.({ open: false, value: context.get(\"value\") });\n      },\n      invokeOnVisibleRangeChange({ prop, context, computed }) {\n        prop(\"onVisibleRangeChange\")?.({\n          view: context.get(\"view\"),\n          visibleRange: computed(\"visibleRange\")\n        });\n      },\n      toggleVisibility({ event, send, prop }) {\n        send({ type: prop(\"open\") ? \"CONTROLLED.OPEN\" : \"CONTROLLED.CLOSE\", previousEvent: event });\n      }\n    }\n  }\n});\nvar normalizeValue = (ctx, value) => {\n  const { context, prop } = ctx;\n  const view = context.get(\"view\");\n  let dateValue = typeof value === \"number\" ? context.get(\"focusedValue\").set({ [view]: value }) : value;\n  eachView((view2) => {\n    if (isBelowMinView(view2, prop(\"minView\"))) {\n      dateValue = dateValue.set({ [view2]: view2 === \"day\" ? 1 : 0 });\n    }\n  });\n  return dateValue;\n};\nfunction setFocusedValue(ctx, mixedValue) {\n  const { context, prop, computed } = ctx;\n  if (!mixedValue) return;\n  const value = normalizeValue(ctx, mixedValue);\n  if (isDateEqual(context.get(\"focusedValue\"), value)) return;\n  const adjustFn = getAdjustedDateFn(computed(\"visibleDuration\"), prop(\"locale\"), prop(\"min\"), prop(\"max\"));\n  const adjustedValue = adjustFn({\n    focusedDate: value,\n    startDate: context.get(\"startValue\")\n  });\n  context.set(\"startValue\", adjustedValue.startDate);\n  context.set(\"focusedValue\", adjustedValue.focusedDate);\n}\nfunction setAdjustedValue(ctx, value) {\n  const { context } = ctx;\n  context.set(\"startValue\", value.startDate);\n  const focusedValue = context.get(\"focusedValue\");\n  if (isDateEqual(focusedValue, value.focusedDate)) return;\n  context.set(\"focusedValue\", value.focusedDate);\n}\nfunction parse(value) {\n  if (Array.isArray(value)) {\n    return value.map((v) => parse(v));\n  }\n  if (value instanceof Date) {\n    return new CalendarDate(value.getFullYear(), value.getMonth() + 1, value.getDate());\n  }\n  return parseDate(value);\n}\nvar props = createProps()([\n  \"closeOnSelect\",\n  \"dir\",\n  \"disabled\",\n  \"fixedWeeks\",\n  \"focusedValue\",\n  \"format\",\n  \"parse\",\n  \"placeholder\",\n  \"getRootNode\",\n  \"id\",\n  \"ids\",\n  \"inline\",\n  \"invalid\",\n  \"isDateUnavailable\",\n  \"locale\",\n  \"max\",\n  \"min\",\n  \"name\",\n  \"numOfMonths\",\n  \"onFocusChange\",\n  \"onOpenChange\",\n  \"onValueChange\",\n  \"onViewChange\",\n  \"onVisibleRangeChange\",\n  \"open\",\n  \"defaultOpen\",\n  \"positioning\",\n  \"readOnly\",\n  \"required\",\n  \"selectionMode\",\n  \"startOfWeek\",\n  \"timeZone\",\n  \"translations\",\n  \"value\",\n  \"defaultView\",\n  \"defaultValue\",\n  \"view\",\n  \"defaultFocusedValue\",\n  \"outsideDaySelectable\",\n  \"minView\",\n  \"maxView\"\n]);\nvar splitProps = createSplitProps(props);\nvar inputProps = createProps()([\"index\", \"fixOnBlur\"]);\nvar splitInputProps = createSplitProps(inputProps);\nvar presetTriggerProps = createProps()([\"value\"]);\nvar splitPresetTriggerProps = createSplitProps(presetTriggerProps);\nvar tableProps = createProps()([\"columns\", \"id\", \"view\"]);\nvar splitTableProps = createSplitProps(tableProps);\nvar tableCellProps = createProps()([\"disabled\", \"value\", \"columns\"]);\nvar splitTableCellProps = createSplitProps(tableCellProps);\nvar viewProps = createProps()([\"view\"]);\nvar splitViewProps = createSplitProps(viewProps);\n\nexport { anatomy, connect, inputProps, machine, parse, presetTriggerProps, props, splitInputProps, splitPresetTriggerProps, splitProps, splitTableCellProps, splitTableProps, splitViewProps, tableCellProps, tableProps, viewProps };\n", "import * as datePicker from \"@zag-js/date-picker\";\nimport type { Direction } from \"@zag-js/types\";\nimport { VanillaMachine, normalizeProps, spreadProps } from \"@zag-js/vanilla\";\n\nimport {\n  Component,\n  getString,\n  generateId,\n  renderPart,\n  getNumber,\n  getStringList,\n  getBoolean,\n} from \"../lib\";\nimport {\n  isWeekend,\n  DateFormatter,\n  today,\n  getLocalTimeZone,\n} from \"@internationalized/date\";\nexport class DatePicker extends Component<datePicker.Props, datePicker.Api> {\n  initMachine(props: datePicker.Props): VanillaMachine<any> {\n    return new VanillaMachine(datePicker.machine, props);\n  }\n  initApi() {\n    return datePicker.connect(this.machine.service, normalizeProps);\n  }\n  render() {\n    const dayViewTriggerContent = this.api.visibleRangeText.start;\n    const dayViewTriggerEl = this.el.querySelector(\n      '.date-picker__day-view [data-part=\"view-trigger\"]',\n    );\n    if (dayViewTriggerEl) dayViewTriggerEl.textContent = dayViewTriggerContent;\n    const monthViewTriggerContent = this.api.visibleRange.start.year.toString();\n    const monthViewTriggerEl = this.el.querySelector(\n      '.date-picker__month-view [data-part=\"view-trigger\"]',\n    );\n    if (monthViewTriggerEl)\n      monthViewTriggerEl.textContent = monthViewTriggerContent;\n    const yearViewTriggerContent = `${this.api.getDecade().start} - ${this.api.getDecade().end}`;\n    const yearViewTriggerEl = this.el.querySelector(\n      '.date-picker__year-view [data-part=\"view-trigger\"]',\n    );\n    if (yearViewTriggerEl)\n      yearViewTriggerEl.textContent = yearViewTriggerContent;\n    const parts = [\n      \"control\",\n      \"input\",\n      \"trigger\",\n      \"positioner\",\n      \"content\",\n      \"clear-trigger\",\n      \"label\",\n      \"month-select\",\n      \"preset-trigger\",\n      \"range-text\",\n      \"root\",\n      \"view\",\n      \"year-select\",\n    ];\n    for (const part of parts) {\n      renderPart(this.el, part, this.api);\n    }\n    const items = [\"input\"];\n    for (const item of items) {\n      renderPart(this.el, item, this.api, { index: \"number\" });\n    }\n    this.renderDayTableHeader();\n    this.renderDayTableBody();\n    const dayItems = [\n      { name: \"view-control\", view: \"day\" },\n      { name: \"view-trigger\", view: \"day\" },\n      { name: \"next-trigger\", view: \"day\" },\n      { name: \"prev-trigger\", view: \"day\" },\n      { name: \"table\", view: \"day\" },\n      { name: \"table-header\", view: \"day\" },\n      { name: \"table-body\", view: \"day\" },\n    ];\n    for (const item of dayItems) {\n      this.renderDayView(item.name, item.view);\n    }\n    const monthItems = [\n      { name: \"view-control\", view: \"month\" },\n      { name: \"view-trigger\", view: \"month\" },\n      { name: \"next-trigger\", view: \"month\" },\n      { name: \"prev-trigger\", view: \"month\" },\n      {\n        name: \"table\",\n        view: \"month\",\n        columns: getNumber(this.el, \"columns\") || 4,\n      },\n      { name: \"table-body\", view: \"month\" },\n    ];\n    for (const item of monthItems) {\n      this.renderMonthView(item.name, item.view, item.columns ?? null);\n    }\n    this.renderMonthTableBody();\n    const yearItems = [\n      { name: \"view-control\", view: \"year\" },\n      { name: \"view-trigger\", view: \"year\" },\n      { name: \"next-trigger\", view: \"year\" },\n      { name: \"prev-trigger\", view: \"year\" },\n      {\n        name: \"table\",\n        view: \"year\",\n        columns: getNumber(this.el, \"columns\") || 4,\n      },\n      { name: \"table-body\", view: \"year\" },\n    ];\n    for (const yearitem of yearItems) {\n      this.renderYearView(\n        yearitem.name,\n        yearitem.view,\n        yearitem.columns ?? null,\n      );\n    }\n    this.renderYearTableBody();\n    this.updateViewVisibility();\n  }\n  private renderDayView(itemName: string, view: string | null) {\n    const elements = this.el.querySelectorAll(\n      '.date-picker__day-view [data-part=\"' + itemName + '\"]',\n    );\n    elements.forEach((element) => {\n      let props;\n      switch (itemName) {\n        case \"view-control\": {\n          props = view ? this.api.getViewControlProps({ view } as any) : null;\n          break;\n        }\n        case \"view-trigger\": {\n          props = this.api.getViewTriggerProps();\n          break;\n        }\n        case \"next-trigger\": {\n          props = this.api.getNextTriggerProps();\n          break;\n        }\n        case \"prev-trigger\": {\n          props = this.api.getPrevTriggerProps();\n          break;\n        }\n        case \"table\": {\n          props = view ? this.api.getTableProps({ view } as any) : null;\n          break;\n        }\n        case \"table-header\": {\n          props = view ? this.api.getTableHeaderProps({ view } as any) : null;\n          break;\n        }\n        case \"table-body\": {\n          props = view ? this.api.getTableBodyProps({ view } as any) : null;\n          break;\n        }\n      }\n      if (props) {\n        spreadProps(element as HTMLElement, props);\n      }\n    });\n  }\n  private renderMonthView(\n    itemName: string,\n    view: string | null,\n    columns: number | null,\n  ) {\n    const elements = this.el.querySelectorAll(\n      '.date-picker__month-view [data-part=\"' + itemName + '\"]',\n    );\n    elements.forEach((element) => {\n      let props;\n      switch (itemName) {\n        case \"view-control\": {\n          props = view ? this.api.getViewControlProps({ view } as any) : null;\n          break;\n        }\n        case \"view-trigger\": {\n          props = view ? this.api.getViewTriggerProps({ view } as any) : null;\n          break;\n        }\n        case \"next-trigger\": {\n          props = view ? this.api.getNextTriggerProps({ view } as any) : null;\n          break;\n        }\n        case \"prev-trigger\": {\n          props = view ? this.api.getPrevTriggerProps({ view } as any) : null;\n          break;\n        }\n        case \"table\": {\n          props = view\n            ? this.api.getTableProps({ view, columns } as any)\n            : null;\n          break;\n        }\n        case \"table-body\": {\n          props = view\n            ? this.api.getTableBodyProps({ view, columns } as any)\n            : null;\n          break;\n        }\n      }\n      if (props) {\n        spreadProps(element as HTMLElement, props);\n      }\n    });\n  }\n  private renderYearView(\n    itemName: string,\n    view: string | null,\n    columns: number | null,\n  ) {\n    const elements = this.el.querySelectorAll(\n      '.date-picker__year-view [data-part=\"' + itemName + '\"]',\n    );\n    elements.forEach((element) => {\n      let props;\n      switch (itemName) {\n        case \"view-control\": {\n          props = view ? this.api.getViewControlProps({ view } as any) : null;\n          break;\n        }\n        case \"view-trigger\": {\n          props = view ? this.api.getViewTriggerProps({ view } as any) : null;\n          break;\n        }\n        case \"next-trigger\": {\n          props = view ? this.api.getNextTriggerProps({ view } as any) : null;\n          break;\n        }\n        case \"prev-trigger\": {\n          props = view ? this.api.getPrevTriggerProps({ view } as any) : null;\n          break;\n        }\n        case \"table\": {\n          props = view\n            ? this.api.getTableProps({ view, columns } as any)\n            : null;\n          break;\n        }\n        case \"table-body\": {\n          props = view\n            ? this.api.getTableBodyProps({ view, columns } as any)\n            : null;\n          break;\n        }\n      }\n      if (props) {\n        spreadProps(element as HTMLElement, props);\n      }\n    });\n  }\n  private updateViewVisibility() {\n    const dayViewElements = this.el.querySelectorAll(\".date-picker__day-view\");\n    dayViewElements.forEach((el) => {\n      const element = el as HTMLElement;\n      if (this.api.view === \"day\") {\n        element.style.display = \"\";\n        element.removeAttribute(\"hidden\");\n      } else {\n        element.style.display = \"none\";\n        element.setAttribute(\"hidden\", \"true\");\n      }\n    });\n    const monthViewElements = this.el.querySelectorAll(\n      \".date-picker__month-view\",\n    );\n    monthViewElements.forEach((el) => {\n      const element = el as HTMLElement;\n      if (this.api.view === \"month\") {\n        element.style.display = \"\";\n        element.removeAttribute(\"hidden\");\n      } else {\n        element.style.display = \"none\";\n        element.setAttribute(\"hidden\", \"true\");\n      }\n    });\n    const yearViewElements = this.el.querySelectorAll(\n      \".date-picker__year-view\",\n    );\n    yearViewElements.forEach((el) => {\n      const element = el as HTMLElement;\n      if (this.api.view === \"year\") {\n        element.style.display = \"\";\n        element.removeAttribute(\"hidden\");\n      } else {\n        element.style.display = \"none\";\n        element.setAttribute(\"hidden\", \"true\");\n      }\n    });\n  }\n  private renderDayTableHeader() {\n    const tableHeader = this.el.querySelector(\n      '.date-picker__day-view [data-part=\"table-header\"]',\n    );\n    if (!tableHeader || !this.api.weekDays) return;\n    tableHeader.innerHTML = \"\";\n    const tr = document.createElement(\"tr\");\n    const tableRowProps = this.api.getTableRowProps({ view: \"day\" });\n    spreadProps(tr, tableRowProps);\n    this.api.weekDays.forEach((day, index) => {\n      const th = document.createElement(\"th\");\n      th.scope = \"col\";\n      th.setAttribute(\"key\", index.toString());\n      th.setAttribute(\"aria-label\", day.long);\n      th.textContent = day.narrow;\n      tr.appendChild(th);\n    });\n    tableHeader.appendChild(tr);\n  }\n  private renderDayTableBody() {\n    const tableBody = this.el.querySelector(\n      '.date-picker__day-view [data-part=\"table-body\"]',\n    );\n    if (!tableBody || !this.api.weeks) return;\n    tableBody.innerHTML = \"\";\n    this.api.weeks.forEach((week, weekIndex) => {\n      const tr = document.createElement(\"tr\");\n      tr.setAttribute(\"key\", weekIndex.toString());\n      const tableRowProps = this.api.getTableRowProps({ view: \"day\" });\n      spreadProps(tr, tableRowProps);\n      week.forEach((value, dayIndex) => {\n        const td = document.createElement(\"td\");\n        td.setAttribute(\"key\", dayIndex.toString());\n        const cellProps = this.api.getDayTableCellProps({ value });\n        spreadProps(td, cellProps);\n        const div = document.createElement(\"div\");\n        div.textContent = value.day.toString();\n        const triggerProps = this.api.getDayTableCellTriggerProps({ value });\n        spreadProps(div, triggerProps);\n        td.appendChild(div);\n        tr.appendChild(td);\n      });\n      tableBody.appendChild(tr);\n    });\n  }\n\n  private renderMonthTableBody() {\n    const tableBody = this.el.querySelector(\n      '.date-picker__month-view [data-part=\"table-body\"]',\n    );\n    if (!tableBody) return;\n    tableBody.innerHTML = \"\";\n\n    const columns = getNumber(this.el, \"columns\") || 4;\n    const formatString = getString(this.el, \"month-format\");\n    const format: \"short\" | \"long\" | undefined =\n      formatString === \"short\" || formatString === \"long\"\n        ? formatString\n        : \"short\";\n    this.api\n      .getMonthsGrid({ columns, format })\n      .forEach((months: any, row: any) => {\n        const tr = document.createElement(\"tr\");\n        tr.setAttribute(\"key\", row);\n        const tableRowProps = this.api.getTableRowProps({ view: \"month\" });\n        spreadProps(tr, tableRowProps);\n\n        months.forEach((month: any, monthIndex: any) => {\n          const td = document.createElement(\"td\");\n          td.setAttribute(\"key\", monthIndex.toString());\n\n          const cellProps = this.api.getMonthTableCellProps({\n            value: month.value,\n          });\n          spreadProps(td, cellProps);\n\n          const triggerProps = this.api.getMonthTableCellTriggerProps({\n            value: month.value,\n          });\n          spreadProps(td, triggerProps);\n\n          td.textContent = month.label.toString();\n          tr.appendChild(td);\n        });\n\n        tableBody.appendChild(tr);\n      });\n  }\n\n  private renderYearTableBody() {\n    const tableBody = this.el.querySelector(\n      '.date-picker__year-view [data-part=\"table-body\"]',\n    );\n    if (!tableBody) return;\n    tableBody.innerHTML = \"\";\n\n    const columns = getNumber(this.el, \"columns\") || 4;\n\n    this.api.getYearsGrid({ columns }).forEach((years: any, row: any) => {\n      const tr = document.createElement(\"tr\");\n      tr.setAttribute(\"key\", row);\n      const tableRowProps = this.api.getTableRowProps({ view: \"year\" });\n      spreadProps(tr, tableRowProps);\n\n      years.forEach((year: any, yearIndex: any) => {\n        const td = document.createElement(\"td\");\n        td.setAttribute(\"key\", yearIndex.toString());\n\n        const cellProps = this.api.getYearTableCellProps({\n          value: year.value,\n          columns,\n        });\n        spreadProps(td, cellProps);\n\n        const triggerProps = this.api.getYearTableCellTriggerProps({\n          value: year.value,\n          columns,\n        });\n        spreadProps(td, triggerProps);\n\n        td.textContent = year.label.toString();\n        tr.appendChild(td);\n      });\n\n      tableBody.appendChild(tr);\n    });\n  }\n}\nexport function initDatePicker(\n  doc: HTMLElement | Document = document,\n  selector = \".date-picker-js\",\n): void {\n  doc.querySelectorAll<HTMLElement>(selector).forEach((rootEl) => {\n    const directions = [\"ltr\", \"rtl\"] as const;\n    const selectionModes = [\"single\", \"multiple\", \"range\"] as const;\n    const views = [\"day\", \"month\", \"year\"] as const;\n    const formats = [\"short\", \"medium\", \"long\", \"full\"] as const;\n    const placements = [\n      \"top\",\n      \"right\",\n      \"bottom\",\n      \"left\",\n      \"top-start\",\n      \"top-end\",\n      \"right-start\",\n      \"right-end\",\n      \"bottom-start\",\n      \"bottom-end\",\n      \"left-start\",\n      \"left-end\",\n    ] as const;\n    const strategies = [\"absolute\", \"fixed\"] as const;\n    const defaultValueStrings = getStringList(rootEl, \"defaultValue\");\n    const valueStrings = getStringList(rootEl, \"value\");\n    const defaultFocusedValueStrings = getString(rootEl, \"defaultFocusedValue\");\n    const focusedValueStrings = getString(rootEl, \"focusedValue\");\n    const datePickerComponent = new DatePicker(rootEl, {\n      id: generateId(rootEl, \"datePicker\"),\n      locale: getString(rootEl, \"locale\"),\n      dir: getString<Direction>(rootEl, \"dir\", directions),\n      defaultOpen: getBoolean(rootEl, \"defaultOpen\"),\n      closeOnSelect: getBoolean(rootEl, \"closeOnSelect\"),\n      placeholder: getString(rootEl, \"placeholder\"),\n      inline: getBoolean(rootEl, \"inline\"),\n      selectionMode: getString(rootEl, \"selectionMode\", selectionModes),\n      defaultValue: defaultValueStrings\n        ? defaultValueStrings.map(\n            (dateStr) => datePicker.parse(dateStr) as datePicker.DateValue,\n          )\n        : undefined,\n      defaultFocusedValue: defaultFocusedValueStrings\n        ? (datePicker.parse(defaultFocusedValueStrings) as datePicker.DateValue)\n        : undefined,\n      defaultView: getString(rootEl, \"defaultView\", views),\n      minView: getString(rootEl, \"minView\", views),\n      maxView: getString(rootEl, \"maxView\", views),\n      disabled: getBoolean(rootEl, \"disabled\"),\n      fixedWeeks: getBoolean(rootEl, \"fixedWeeks\") || true,\n      focusedValue: focusedValueStrings\n        ? (datePicker.parse(focusedValueStrings) as datePicker.DateValue)\n        : undefined,\n      format: getString(rootEl, \"format\", formats)\n        ? (date, localeDetails) => {\n            const jsDate = date.toDate(localeDetails.timeZone);\n            return new DateFormatter(localeDetails.locale, {\n              dateStyle: getString(rootEl, \"format\", formats) as\n                | \"short\"\n                | \"medium\"\n                | \"long\"\n                | \"full\",\n            }).format(jsDate);\n          }\n        : undefined,\n      max: (() => {\n        const value = getString(rootEl, \"max\");\n        if (value === \"today\") return today(getLocalTimeZone());\n        if (value) return datePicker.parse(value);\n        return undefined;\n      })(),\n      min: (() => {\n        const value = getString(rootEl, \"min\");\n        if (value === \"today\") return today(getLocalTimeZone());\n        if (value) return datePicker.parse(value);\n        return undefined;\n      })(),\n      name: getString(rootEl, \"name\"),\n      open: getBoolean(rootEl, \"open\"),\n      numOfMonths: getNumber(rootEl, \"numOfMonths\"),\n      outsideDaySelectable: getBoolean(rootEl, \"outsideDaySelectable\"),\n      positioning: {\n        hideWhenDetached: getBoolean(rootEl, \"hideWhenDetached\"),\n        placement: getString(rootEl, \"placement\", placements),\n        strategy: getString(rootEl, \"strategy\", strategies),\n        flip: getBoolean(rootEl, \"flip\"),\n        gutter: getNumber(rootEl, \"gutter\"),\n        arrowPadding: getNumber(rootEl, \"arrowPadding\"),\n        overflowPadding: getNumber(rootEl, \"overflowPadding\"),\n        offset: (() => {\n          const mainAxis = getNumber(rootEl, \"offsetMainAxis\");\n          const crossAxis = getNumber(rootEl, \"offsetCrossAxis\");\n          if (mainAxis !== undefined || crossAxis !== undefined) {\n            return {\n              mainAxis: mainAxis,\n              crossAxis: crossAxis,\n            };\n          }\n          return undefined;\n        })(),\n        sameWidth: getBoolean(rootEl, \"sameWidth\"),\n        overlap: getBoolean(rootEl, \"overlap\"),\n        fitViewport: getBoolean(rootEl, \"fitViewport\"),\n        slide: getBoolean(rootEl, \"slide\"),\n      },\n      readOnly: getBoolean(rootEl, \"readOnly\"),\n      startOfWeek: getNumber(rootEl, \"startOfWeek\"),\n      timeZone: getString(rootEl, \"timeZone\"),\n      value: valueStrings\n        ? valueStrings.map(\n            (dateStr) => datePicker.parse(dateStr) as datePicker.DateValue,\n          )\n        : undefined,\n      view: getString(rootEl, \"view\", views),\n      onOpenChange(details) {\n        const eventName = getString(rootEl, \"onOpenChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onFocusChange(details) {\n        const eventName = getString(rootEl, \"onFocusChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onValueChange(details) {\n        const eventName = getString(rootEl, \"onValueChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onViewChange(details) {\n        datePickerComponent.render();\n        const eventName = getString(rootEl, \"onViewChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      isDateUnavailable: (date, locale) => {\n        if (getBoolean(rootEl, \"noWeekend\")) {\n          return isWeekend(date, locale);\n        } else {\n          return false;\n        }\n      },\n    });\n    datePickerComponent.init();\n  });\n}\n", "import { isHTMLElement, findControlledElements } from '@zag-js/dom-query';\n\n// src/walk-tree-outside.ts\nvar counterMap = /* @__PURE__ */ new WeakMap();\nvar uncontrolledNodes = /* @__PURE__ */ new WeakMap();\nvar markerMap = {};\nvar lockCount = 0;\nvar unwrapHost = (node) => node && (node.host || unwrapHost(node.parentNode));\nvar correctTargets = (parent, targets) => targets.map((target) => {\n  if (parent.contains(target)) return target;\n  const correctedTarget = unwrapHost(target);\n  if (correctedTarget && parent.contains(correctedTarget)) {\n    return correctedTarget;\n  }\n  console.error(\"[zag-js > ariaHidden] target\", target, \"in not contained inside\", parent, \". Doing nothing\");\n  return null;\n}).filter((x) => Boolean(x));\nvar ignoreableNodes = /* @__PURE__ */ new Set([\"script\", \"output\", \"status\", \"next-route-announcer\"]);\nvar isIgnoredNode = (node) => {\n  if (ignoreableNodes.has(node.localName)) return true;\n  if (node.role === \"status\") return true;\n  if (node.hasAttribute(\"aria-live\")) return true;\n  return node.matches(\"[data-live-announcer]\");\n};\nvar walkTreeOutside = (originalTarget, props) => {\n  const { parentNode, markerName, controlAttribute, followControlledElements = true } = props;\n  const targets = correctTargets(parentNode, Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n  markerMap[markerName] || (markerMap[markerName] = /* @__PURE__ */ new WeakMap());\n  const markerCounter = markerMap[markerName];\n  const hiddenNodes = [];\n  const elementsToKeep = /* @__PURE__ */ new Set();\n  const elementsToStop = new Set(targets);\n  const keep = (el) => {\n    if (!el || elementsToKeep.has(el)) return;\n    elementsToKeep.add(el);\n    keep(el.parentNode);\n  };\n  targets.forEach((target) => {\n    keep(target);\n    if (followControlledElements && isHTMLElement(target)) {\n      findControlledElements(target, (controlledElement) => {\n        keep(controlledElement);\n      });\n    }\n  });\n  const deep = (parent) => {\n    if (!parent || elementsToStop.has(parent)) {\n      return;\n    }\n    Array.prototype.forEach.call(parent.children, (node) => {\n      if (elementsToKeep.has(node)) {\n        deep(node);\n      } else {\n        try {\n          if (isIgnoredNode(node)) return;\n          const attr = node.getAttribute(controlAttribute);\n          const alreadyHidden = attr === \"true\" ;\n          const counterValue = (counterMap.get(node) || 0) + 1;\n          const markerValue = (markerCounter.get(node) || 0) + 1;\n          counterMap.set(node, counterValue);\n          markerCounter.set(node, markerValue);\n          hiddenNodes.push(node);\n          if (counterValue === 1 && alreadyHidden) {\n            uncontrolledNodes.set(node, true);\n          }\n          if (markerValue === 1) {\n            node.setAttribute(markerName, \"\");\n          }\n          if (!alreadyHidden) {\n            node.setAttribute(controlAttribute, \"true\" );\n          }\n        } catch (e) {\n          console.error(\"[zag-js > ariaHidden] cannot operate on \", node, e);\n        }\n      }\n    });\n  };\n  deep(parentNode);\n  elementsToKeep.clear();\n  lockCount++;\n  return () => {\n    hiddenNodes.forEach((node) => {\n      const counterValue = counterMap.get(node) - 1;\n      const markerValue = markerCounter.get(node) - 1;\n      counterMap.set(node, counterValue);\n      markerCounter.set(node, markerValue);\n      if (!counterValue) {\n        if (!uncontrolledNodes.has(node)) {\n          node.removeAttribute(controlAttribute);\n        }\n        uncontrolledNodes.delete(node);\n      }\n      if (!markerValue) {\n        node.removeAttribute(markerName);\n      }\n    });\n    lockCount--;\n    if (!lockCount) {\n      counterMap = /* @__PURE__ */ new WeakMap();\n      counterMap = /* @__PURE__ */ new WeakMap();\n      uncontrolledNodes = /* @__PURE__ */ new WeakMap();\n      markerMap = {};\n    }\n  };\n};\n\n// src/aria-hidden.ts\nvar getParentNode = (originalTarget) => {\n  const target = Array.isArray(originalTarget) ? originalTarget[0] : originalTarget;\n  return target.ownerDocument.body;\n};\nvar hideOthers = (originalTarget, parentNode = getParentNode(originalTarget), markerName = \"data-aria-hidden\", followControlledElements = true) => {\n  if (!parentNode) return;\n  return walkTreeOutside(originalTarget, {\n    parentNode,\n    markerName,\n    controlAttribute: \"aria-hidden\",\n    followControlledElements\n  });\n};\n\n// src/index.ts\nvar raf = (fn) => {\n  const frameId = requestAnimationFrame(() => fn());\n  return () => cancelAnimationFrame(frameId);\n};\nfunction ariaHidden(targetsOrFn, options = {}) {\n  const { defer = true } = options;\n  const func = defer ? raf : (v) => v();\n  const cleanups = [];\n  cleanups.push(\n    func(() => {\n      const targets = typeof targetsOrFn === \"function\" ? targetsOrFn() : targetsOrFn;\n      const elements = targets.filter(Boolean);\n      if (elements.length === 0) return;\n      cleanups.push(hideOthers(elements));\n    })\n  );\n  return () => {\n    cleanups.forEach((fn) => fn?.());\n  };\n}\n\nexport { ariaHidden };\n", "import { getDocument, getControlledElements, isControlledElement, getTabbables, getFocusables, getTabIndex, addDomEvent, getActiveElement, raf, isTabbable, getEventTarget, isDocument, hasControllerElements, isControlledByExpandedController, isFocusable } from '@zag-js/dom-query';\n\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar activeFocusTraps = {\n  activateTrap(trapStack, trap) {\n    if (trapStack.length > 0) {\n      const activeTrap = trapStack[trapStack.length - 1];\n      if (activeTrap !== trap) {\n        activeTrap.pause();\n      }\n    }\n    const trapIndex = trapStack.indexOf(trap);\n    if (trapIndex === -1) {\n      trapStack.push(trap);\n    } else {\n      trapStack.splice(trapIndex, 1);\n      trapStack.push(trap);\n    }\n  },\n  deactivateTrap(trapStack, trap) {\n    const trapIndex = trapStack.indexOf(trap);\n    if (trapIndex !== -1) {\n      trapStack.splice(trapIndex, 1);\n    }\n    if (trapStack.length > 0) {\n      trapStack[trapStack.length - 1].unpause();\n    }\n  }\n};\nvar sharedTrapStack = [];\nvar FocusTrap = class {\n  constructor(elements, options) {\n    __publicField(this, \"trapStack\");\n    __publicField(this, \"config\");\n    __publicField(this, \"doc\");\n    __publicField(this, \"state\", {\n      containers: [],\n      containerGroups: [],\n      tabbableGroups: [],\n      nodeFocusedBeforeActivation: null,\n      mostRecentlyFocusedNode: null,\n      active: false,\n      paused: false,\n      delayInitialFocusTimer: void 0,\n      recentNavEvent: void 0\n    });\n    // Track portal containers that contain controlled elements\n    __publicField(this, \"portalContainers\", /* @__PURE__ */ new Set());\n    __publicField(this, \"listenerCleanups\", []);\n    __publicField(this, \"handleFocus\", (event) => {\n      const target = getEventTarget(event);\n      const targetContained = this.findContainerIndex(target, event) >= 0;\n      if (targetContained || isDocument(target)) {\n        if (targetContained) {\n          this.state.mostRecentlyFocusedNode = target;\n        }\n      } else {\n        event.stopImmediatePropagation();\n        let nextNode;\n        let navAcrossContainers = true;\n        if (this.state.mostRecentlyFocusedNode) {\n          if (getTabIndex(this.state.mostRecentlyFocusedNode) > 0) {\n            const mruContainerIdx = this.findContainerIndex(this.state.mostRecentlyFocusedNode);\n            const { tabbableNodes } = this.state.containerGroups[mruContainerIdx];\n            if (tabbableNodes.length > 0) {\n              const mruTabIdx = tabbableNodes.findIndex((node) => node === this.state.mostRecentlyFocusedNode);\n              if (mruTabIdx >= 0) {\n                if (this.config.isKeyForward(this.state.recentNavEvent)) {\n                  if (mruTabIdx + 1 < tabbableNodes.length) {\n                    nextNode = tabbableNodes[mruTabIdx + 1];\n                    navAcrossContainers = false;\n                  }\n                } else {\n                  if (mruTabIdx - 1 >= 0) {\n                    nextNode = tabbableNodes[mruTabIdx - 1];\n                    navAcrossContainers = false;\n                  }\n                }\n              }\n            }\n          } else {\n            if (!this.state.containerGroups.some((g) => g.tabbableNodes.some((n) => getTabIndex(n) > 0))) {\n              navAcrossContainers = false;\n            }\n          }\n        } else {\n          navAcrossContainers = false;\n        }\n        if (navAcrossContainers) {\n          nextNode = this.findNextNavNode({\n            // move FROM the MRU node, not event-related node (which will be the node that is\n            //  outside the trap causing the focus escape we're trying to fix)\n            target: this.state.mostRecentlyFocusedNode,\n            isBackward: this.config.isKeyBackward(this.state.recentNavEvent)\n          });\n        }\n        if (nextNode) {\n          this.tryFocus(nextNode);\n        } else {\n          this.tryFocus(this.state.mostRecentlyFocusedNode || this.getInitialFocusNode());\n        }\n      }\n      this.state.recentNavEvent = void 0;\n    });\n    __publicField(this, \"handlePointerDown\", (event) => {\n      const target = getEventTarget(event);\n      if (this.findContainerIndex(target, event) >= 0) {\n        return;\n      }\n      if (valueOrHandler(this.config.clickOutsideDeactivates, event)) {\n        this.deactivate({ returnFocus: this.config.returnFocusOnDeactivate });\n        return;\n      }\n      if (valueOrHandler(this.config.allowOutsideClick, event)) {\n        return;\n      }\n      event.preventDefault();\n    });\n    __publicField(this, \"handleClick\", (event) => {\n      const target = getEventTarget(event);\n      if (this.findContainerIndex(target, event) >= 0) {\n        return;\n      }\n      if (valueOrHandler(this.config.clickOutsideDeactivates, event)) {\n        return;\n      }\n      if (valueOrHandler(this.config.allowOutsideClick, event)) {\n        return;\n      }\n      event.preventDefault();\n      event.stopImmediatePropagation();\n    });\n    __publicField(this, \"handleTabKey\", (event) => {\n      if (this.config.isKeyForward(event) || this.config.isKeyBackward(event)) {\n        this.state.recentNavEvent = event;\n        const isBackward = this.config.isKeyBackward(event);\n        const destinationNode = this.findNextNavNode({ event, isBackward });\n        if (!destinationNode) return;\n        if (isTabEvent(event)) {\n          event.preventDefault();\n        }\n        this.tryFocus(destinationNode);\n      }\n    });\n    __publicField(this, \"handleEscapeKey\", (event) => {\n      if (isEscapeEvent(event) && valueOrHandler(this.config.escapeDeactivates, event) !== false) {\n        event.preventDefault();\n        this.deactivate();\n      }\n    });\n    __publicField(this, \"_mutationObserver\");\n    __publicField(this, \"setupMutationObserver\", () => {\n      const win = this.doc.defaultView || window;\n      this._mutationObserver = new win.MutationObserver((mutations) => {\n        const isFocusedNodeRemoved = mutations.some((mutation) => {\n          const removedNodes = Array.from(mutation.removedNodes);\n          return removedNodes.some((node) => node === this.state.mostRecentlyFocusedNode);\n        });\n        if (isFocusedNodeRemoved) {\n          this.tryFocus(this.getInitialFocusNode());\n        }\n        const hasControlledChanges = mutations.some((mutation) => {\n          if (mutation.type === \"attributes\" && (mutation.attributeName === \"aria-controls\" || mutation.attributeName === \"aria-expanded\")) {\n            return true;\n          }\n          if (mutation.type === \"childList\" && mutation.addedNodes.length > 0) {\n            return Array.from(mutation.addedNodes).some((node) => {\n              if (node.nodeType !== Node.ELEMENT_NODE) return false;\n              const element = node;\n              if (hasControllerElements(element)) {\n                return true;\n              }\n              if (element.id && !this.state.containers.some((c) => c.contains(element))) {\n                return isControlledByExpandedController(element);\n              }\n              return false;\n            });\n          }\n          return false;\n        });\n        if (hasControlledChanges && this.state.active && !this.state.paused) {\n          this.updateTabbableNodes();\n          this.updatePortalContainers();\n        }\n      });\n    });\n    __publicField(this, \"updateObservedNodes\", () => {\n      this._mutationObserver?.disconnect();\n      if (this.state.active && !this.state.paused) {\n        this.state.containers.map((container) => {\n          this._mutationObserver?.observe(container, {\n            subtree: true,\n            childList: true,\n            attributes: true,\n            attributeFilter: [\"aria-controls\", \"aria-expanded\"]\n          });\n        });\n        this.portalContainers.forEach((portalContainer) => {\n          this.observePortalContainer(portalContainer);\n        });\n      }\n    });\n    __publicField(this, \"getInitialFocusNode\", () => {\n      let node = this.getNodeForOption(\"initialFocus\", { hasFallback: true });\n      if (node === false) {\n        return false;\n      }\n      if (node === void 0 || node && !isFocusable(node)) {\n        const activeElement = getActiveElement(this.doc);\n        if (activeElement && this.findContainerIndex(activeElement) >= 0) {\n          node = activeElement;\n        } else {\n          const firstTabbableGroup = this.state.tabbableGroups[0];\n          const firstTabbableNode = firstTabbableGroup && firstTabbableGroup.firstTabbableNode;\n          node = firstTabbableNode || this.getNodeForOption(\"fallbackFocus\");\n        }\n      } else if (node === null) {\n        node = this.getNodeForOption(\"fallbackFocus\");\n      }\n      if (!node) {\n        throw new Error(\"Your focus-trap needs to have at least one focusable element\");\n      }\n      if (!node.isConnected) {\n        node = this.getNodeForOption(\"fallbackFocus\");\n      }\n      return node;\n    });\n    __publicField(this, \"tryFocus\", (node) => {\n      if (node === false) return;\n      if (node === getActiveElement(this.doc)) return;\n      if (!node || !node.focus) {\n        this.tryFocus(this.getInitialFocusNode());\n        return;\n      }\n      node.focus({ preventScroll: !!this.config.preventScroll });\n      this.state.mostRecentlyFocusedNode = node;\n      if (isSelectableInput(node)) {\n        node.select();\n      }\n    });\n    __publicField(this, \"deactivate\", (deactivateOptions) => {\n      if (!this.state.active) return this;\n      const options = {\n        onDeactivate: this.config.onDeactivate,\n        onPostDeactivate: this.config.onPostDeactivate,\n        checkCanReturnFocus: this.config.checkCanReturnFocus,\n        ...deactivateOptions\n      };\n      clearTimeout(this.state.delayInitialFocusTimer);\n      this.state.delayInitialFocusTimer = void 0;\n      this.removeListeners();\n      this.state.active = false;\n      this.state.paused = false;\n      this.updateObservedNodes();\n      activeFocusTraps.deactivateTrap(this.trapStack, this);\n      this.portalContainers.clear();\n      const onDeactivate = this.getOption(options, \"onDeactivate\");\n      const onPostDeactivate = this.getOption(options, \"onPostDeactivate\");\n      const checkCanReturnFocus = this.getOption(options, \"checkCanReturnFocus\");\n      const returnFocus = this.getOption(options, \"returnFocus\", \"returnFocusOnDeactivate\");\n      onDeactivate?.();\n      const finishDeactivation = () => {\n        delay(() => {\n          if (returnFocus) {\n            const returnFocusNode = this.getReturnFocusNode(this.state.nodeFocusedBeforeActivation);\n            this.tryFocus(returnFocusNode);\n          }\n          onPostDeactivate?.();\n        });\n      };\n      if (returnFocus && checkCanReturnFocus) {\n        const returnFocusNode = this.getReturnFocusNode(this.state.nodeFocusedBeforeActivation);\n        checkCanReturnFocus(returnFocusNode).then(finishDeactivation, finishDeactivation);\n        return this;\n      }\n      finishDeactivation();\n      return this;\n    });\n    __publicField(this, \"pause\", (pauseOptions) => {\n      if (this.state.paused || !this.state.active) {\n        return this;\n      }\n      const onPause = this.getOption(pauseOptions, \"onPause\");\n      const onPostPause = this.getOption(pauseOptions, \"onPostPause\");\n      this.state.paused = true;\n      onPause?.();\n      this.removeListeners();\n      this.updateObservedNodes();\n      onPostPause?.();\n      return this;\n    });\n    __publicField(this, \"unpause\", (unpauseOptions) => {\n      if (!this.state.paused || !this.state.active) {\n        return this;\n      }\n      const onUnpause = this.getOption(unpauseOptions, \"onUnpause\");\n      const onPostUnpause = this.getOption(unpauseOptions, \"onPostUnpause\");\n      this.state.paused = false;\n      onUnpause?.();\n      this.updateTabbableNodes();\n      this.addListeners();\n      this.updateObservedNodes();\n      onPostUnpause?.();\n      return this;\n    });\n    __publicField(this, \"updateContainerElements\", (containerElements) => {\n      this.state.containers = Array.isArray(containerElements) ? containerElements.filter(Boolean) : [containerElements].filter(Boolean);\n      if (this.state.active) {\n        this.updateTabbableNodes();\n      }\n      this.updateObservedNodes();\n      return this;\n    });\n    __publicField(this, \"getReturnFocusNode\", (previousActiveElement) => {\n      const node = this.getNodeForOption(\"setReturnFocus\", {\n        params: [previousActiveElement]\n      });\n      return node ? node : node === false ? false : previousActiveElement;\n    });\n    __publicField(this, \"getOption\", (configOverrideOptions, optionName, configOptionName) => {\n      return configOverrideOptions && configOverrideOptions[optionName] !== void 0 ? configOverrideOptions[optionName] : (\n        // @ts-expect-error\n        this.config[configOptionName || optionName]\n      );\n    });\n    __publicField(this, \"getNodeForOption\", (optionName, { hasFallback = false, params = [] } = {}) => {\n      let optionValue = this.config[optionName];\n      if (typeof optionValue === \"function\") optionValue = optionValue(...params);\n      if (optionValue === true) optionValue = void 0;\n      if (!optionValue) {\n        if (optionValue === void 0 || optionValue === false) {\n          return optionValue;\n        }\n        throw new Error(`\\`${optionName}\\` was specified but was not a node, or did not return a node`);\n      }\n      let node = optionValue;\n      if (typeof optionValue === \"string\") {\n        try {\n          node = this.doc.querySelector(optionValue);\n        } catch (err) {\n          throw new Error(`\\`${optionName}\\` appears to be an invalid selector; error=\"${err.message}\"`);\n        }\n        if (!node) {\n          if (!hasFallback) {\n            throw new Error(`\\`${optionName}\\` as selector refers to no known node`);\n          }\n        }\n      }\n      return node;\n    });\n    __publicField(this, \"findNextNavNode\", (opts) => {\n      const { event, isBackward = false } = opts;\n      const target = opts.target || getEventTarget(event);\n      this.updateTabbableNodes();\n      let destinationNode = null;\n      if (this.state.tabbableGroups.length > 0) {\n        const containerIndex = this.findContainerIndex(target, event);\n        const containerGroup = containerIndex >= 0 ? this.state.containerGroups[containerIndex] : void 0;\n        if (containerIndex < 0) {\n          if (isBackward) {\n            destinationNode = this.state.tabbableGroups[this.state.tabbableGroups.length - 1].lastTabbableNode;\n          } else {\n            destinationNode = this.state.tabbableGroups[0].firstTabbableNode;\n          }\n        } else if (isBackward) {\n          let startOfGroupIndex = this.state.tabbableGroups.findIndex(\n            ({ firstTabbableNode }) => target === firstTabbableNode\n          );\n          if (startOfGroupIndex < 0 && (containerGroup?.container === target || isFocusable(target) && !isTabbable(target) && !containerGroup?.nextTabbableNode(target, false))) {\n            startOfGroupIndex = containerIndex;\n          }\n          if (startOfGroupIndex >= 0) {\n            const destinationGroupIndex = startOfGroupIndex === 0 ? this.state.tabbableGroups.length - 1 : startOfGroupIndex - 1;\n            const destinationGroup = this.state.tabbableGroups[destinationGroupIndex];\n            destinationNode = getTabIndex(target) >= 0 ? destinationGroup.lastTabbableNode : destinationGroup.lastDomTabbableNode;\n          } else if (!isTabEvent(event)) {\n            destinationNode = containerGroup?.nextTabbableNode(target, false);\n          }\n        } else {\n          let lastOfGroupIndex = this.state.tabbableGroups.findIndex(\n            ({ lastTabbableNode }) => target === lastTabbableNode\n          );\n          if (lastOfGroupIndex < 0 && (containerGroup?.container === target || isFocusable(target) && !isTabbable(target) && !containerGroup?.nextTabbableNode(target))) {\n            lastOfGroupIndex = containerIndex;\n          }\n          if (lastOfGroupIndex >= 0) {\n            const destinationGroupIndex = lastOfGroupIndex === this.state.tabbableGroups.length - 1 ? 0 : lastOfGroupIndex + 1;\n            const destinationGroup = this.state.tabbableGroups[destinationGroupIndex];\n            destinationNode = getTabIndex(target) >= 0 ? destinationGroup.firstTabbableNode : destinationGroup.firstDomTabbableNode;\n          } else if (!isTabEvent(event)) {\n            destinationNode = containerGroup?.nextTabbableNode(target);\n          }\n        }\n      } else {\n        destinationNode = this.getNodeForOption(\"fallbackFocus\");\n      }\n      return destinationNode;\n    });\n    this.trapStack = options.trapStack || sharedTrapStack;\n    const config = {\n      returnFocusOnDeactivate: true,\n      escapeDeactivates: true,\n      delayInitialFocus: true,\n      followControlledElements: true,\n      isKeyForward,\n      isKeyBackward,\n      ...options\n    };\n    this.doc = config.document || getDocument(Array.isArray(elements) ? elements[0] : elements);\n    this.config = config;\n    this.updateContainerElements(elements);\n    this.setupMutationObserver();\n  }\n  addPortalContainer(controlledElement) {\n    const portalContainer = controlledElement.parentElement;\n    if (portalContainer && !this.portalContainers.has(portalContainer)) {\n      this.portalContainers.add(portalContainer);\n      if (this.state.active && !this.state.paused) {\n        this.observePortalContainer(portalContainer);\n      }\n    }\n  }\n  observePortalContainer(portalContainer) {\n    this._mutationObserver?.observe(portalContainer, {\n      subtree: true,\n      childList: true,\n      attributes: true,\n      attributeFilter: [\"aria-controls\", \"aria-expanded\"]\n    });\n  }\n  updatePortalContainers() {\n    if (!this.config.followControlledElements) return;\n    this.state.containers.forEach((container) => {\n      const controlledElements = getControlledElements(container);\n      controlledElements.forEach((controlledElement) => {\n        this.addPortalContainer(controlledElement);\n      });\n    });\n  }\n  get active() {\n    return this.state.active;\n  }\n  get paused() {\n    return this.state.paused;\n  }\n  findContainerIndex(element, event) {\n    const composedPath = typeof event?.composedPath === \"function\" ? event.composedPath() : void 0;\n    return this.state.containerGroups.findIndex(\n      ({ container, tabbableNodes }) => container.contains(element) || composedPath?.includes(container) || tabbableNodes.find((node) => node === element) || this.isControlledElement(container, element)\n    );\n  }\n  isControlledElement(container, element) {\n    if (!this.config.followControlledElements) return false;\n    return isControlledElement(container, element);\n  }\n  updateTabbableNodes() {\n    this.state.containerGroups = this.state.containers.map((container) => {\n      const tabbableNodes = getTabbables(container, { getShadowRoot: this.config.getShadowRoot });\n      const focusableNodes = getFocusables(container, { getShadowRoot: this.config.getShadowRoot });\n      const firstTabbableNode = tabbableNodes[0];\n      const lastTabbableNode = tabbableNodes[tabbableNodes.length - 1];\n      const firstDomTabbableNode = firstTabbableNode;\n      const lastDomTabbableNode = lastTabbableNode;\n      let posTabIndexesFound = false;\n      for (let i = 0; i < tabbableNodes.length; i++) {\n        if (getTabIndex(tabbableNodes[i]) > 0) {\n          posTabIndexesFound = true;\n          break;\n        }\n      }\n      function nextTabbableNode(node, forward = true) {\n        const nodeIdx = tabbableNodes.indexOf(node);\n        if (nodeIdx >= 0) {\n          return tabbableNodes[nodeIdx + (forward ? 1 : -1)];\n        }\n        const focusableIdx = focusableNodes.indexOf(node);\n        if (focusableIdx < 0) return void 0;\n        if (forward) {\n          for (let i = focusableIdx + 1; i < focusableNodes.length; i++) {\n            if (isTabbable(focusableNodes[i])) return focusableNodes[i];\n          }\n        } else {\n          for (let i = focusableIdx - 1; i >= 0; i--) {\n            if (isTabbable(focusableNodes[i])) return focusableNodes[i];\n          }\n        }\n        return void 0;\n      }\n      return {\n        container,\n        tabbableNodes,\n        focusableNodes,\n        posTabIndexesFound,\n        firstTabbableNode,\n        lastTabbableNode,\n        firstDomTabbableNode,\n        lastDomTabbableNode,\n        nextTabbableNode\n      };\n    });\n    this.state.tabbableGroups = this.state.containerGroups.filter((group) => group.tabbableNodes.length > 0);\n    if (this.state.tabbableGroups.length <= 0 && !this.getNodeForOption(\"fallbackFocus\")) {\n      throw new Error(\n        \"Your focus-trap must have at least one container with at least one tabbable node in it at all times\"\n      );\n    }\n    if (this.state.containerGroups.find((g) => g.posTabIndexesFound) && this.state.containerGroups.length > 1) {\n      throw new Error(\n        \"At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.\"\n      );\n    }\n  }\n  addListeners() {\n    if (!this.state.active) return;\n    activeFocusTraps.activateTrap(this.trapStack, this);\n    this.state.delayInitialFocusTimer = this.config.delayInitialFocus ? delay(() => {\n      this.tryFocus(this.getInitialFocusNode());\n    }) : this.tryFocus(this.getInitialFocusNode());\n    this.listenerCleanups.push(\n      addDomEvent(this.doc, \"focusin\", this.handleFocus, true),\n      addDomEvent(this.doc, \"mousedown\", this.handlePointerDown, { capture: true, passive: false }),\n      addDomEvent(this.doc, \"touchstart\", this.handlePointerDown, { capture: true, passive: false }),\n      addDomEvent(this.doc, \"click\", this.handleClick, { capture: true, passive: false }),\n      addDomEvent(this.doc, \"keydown\", this.handleTabKey, { capture: true, passive: false }),\n      addDomEvent(this.doc, \"keydown\", this.handleEscapeKey)\n    );\n    return this;\n  }\n  removeListeners() {\n    if (!this.state.active) return;\n    this.listenerCleanups.forEach((cleanup) => cleanup());\n    this.listenerCleanups = [];\n    return this;\n  }\n  activate(activateOptions) {\n    if (this.state.active) {\n      return this;\n    }\n    const onActivate = this.getOption(activateOptions, \"onActivate\");\n    const onPostActivate = this.getOption(activateOptions, \"onPostActivate\");\n    const checkCanFocusTrap = this.getOption(activateOptions, \"checkCanFocusTrap\");\n    if (!checkCanFocusTrap) {\n      this.updateTabbableNodes();\n    }\n    this.state.active = true;\n    this.state.paused = false;\n    this.state.nodeFocusedBeforeActivation = getActiveElement(this.doc);\n    onActivate?.();\n    const finishActivation = () => {\n      if (checkCanFocusTrap) {\n        this.updateTabbableNodes();\n      }\n      this.addListeners();\n      this.updateObservedNodes();\n      onPostActivate?.();\n    };\n    if (checkCanFocusTrap) {\n      checkCanFocusTrap(this.state.containers.concat()).then(finishActivation, finishActivation);\n      return this;\n    }\n    finishActivation();\n    return this;\n  }\n};\nvar isKeyboardEvent = (event) => event.type === \"keydown\";\nvar isTabEvent = (event) => isKeyboardEvent(event) && event?.key === \"Tab\";\nvar isKeyForward = (e) => isKeyboardEvent(e) && e.key === \"Tab\" && !e?.shiftKey;\nvar isKeyBackward = (e) => isKeyboardEvent(e) && e.key === \"Tab\" && e?.shiftKey;\nvar valueOrHandler = (value, ...params) => typeof value === \"function\" ? value(...params) : value;\nvar isEscapeEvent = (event) => !event.isComposing && event.key === \"Escape\";\nvar delay = (fn) => setTimeout(fn, 0);\nvar isSelectableInput = (node) => node.localName === \"input\" && \"select\" in node && typeof node.select === \"function\";\n\n// src/index.ts\nfunction trapFocus(el, options = {}) {\n  let trap;\n  const cleanup = raf(() => {\n    const elements = Array.isArray(el) ? el : [el];\n    const resolvedElements = elements.map((e) => typeof e === \"function\" ? e() : e).filter((e) => e != null);\n    if (resolvedElements.length === 0) return;\n    const primaryEl = resolvedElements[0];\n    trap = new FocusTrap(resolvedElements, {\n      escapeDeactivates: false,\n      allowOutsideClick: true,\n      preventScroll: true,\n      returnFocusOnDeactivate: true,\n      delayInitialFocus: false,\n      fallbackFocus: primaryEl,\n      ...options,\n      document: getDocument(primaryEl)\n    });\n    try {\n      trap.activate();\n    } catch {\n    }\n  });\n  return function destroy() {\n    trap?.deactivate();\n    cleanup();\n  };\n}\n\nexport { FocusTrap, trapFocus };\n", "import { setStyleProperty, isIos, setStyle, getComputedStyle } from '@zag-js/dom-query';\n\n// src/index.ts\nvar LOCK_CLASSNAME = \"data-scroll-lock\";\nfunction getPaddingProperty(documentElement) {\n  const documentLeft = documentElement.getBoundingClientRect().left;\n  const scrollbarX = Math.round(documentLeft) + documentElement.scrollLeft;\n  return scrollbarX ? \"paddingLeft\" : \"paddingRight\";\n}\nfunction hasStableScrollbarGutter(element) {\n  const styles = getComputedStyle(element);\n  const scrollbarGutter = styles?.scrollbarGutter;\n  return scrollbarGutter === \"stable\" || scrollbarGutter?.startsWith(\"stable \") === true;\n}\nfunction preventBodyScroll(_document) {\n  const doc = _document ?? document;\n  const win = doc.defaultView ?? window;\n  const { documentElement, body } = doc;\n  const locked = body.hasAttribute(LOCK_CLASSNAME);\n  if (locked) return;\n  const hasStableGutter = hasStableScrollbarGutter(documentElement) || hasStableScrollbarGutter(body);\n  const scrollbarWidth = win.innerWidth - documentElement.clientWidth;\n  body.setAttribute(LOCK_CLASSNAME, \"\");\n  const setScrollbarWidthProperty = () => setStyleProperty(documentElement, \"--scrollbar-width\", `${scrollbarWidth}px`);\n  const paddingProperty = getPaddingProperty(documentElement);\n  const setBodyStyle = () => {\n    const styles = {\n      overflow: \"hidden\"\n    };\n    if (!hasStableGutter && scrollbarWidth > 0) {\n      styles[paddingProperty] = `${scrollbarWidth}px`;\n    }\n    return setStyle(body, styles);\n  };\n  const setBodyStyleIOS = () => {\n    const { scrollX, scrollY, visualViewport } = win;\n    const offsetLeft = visualViewport?.offsetLeft ?? 0;\n    const offsetTop = visualViewport?.offsetTop ?? 0;\n    const styles = {\n      position: \"fixed\",\n      overflow: \"hidden\",\n      top: `${-(scrollY - Math.floor(offsetTop))}px`,\n      left: `${-(scrollX - Math.floor(offsetLeft))}px`,\n      right: \"0\"\n    };\n    if (!hasStableGutter && scrollbarWidth > 0) {\n      styles[paddingProperty] = `${scrollbarWidth}px`;\n    }\n    const restoreStyle = setStyle(body, styles);\n    return () => {\n      restoreStyle?.();\n      win.scrollTo({ left: scrollX, top: scrollY, behavior: \"instant\" });\n    };\n  };\n  const cleanups = [setScrollbarWidthProperty(), isIos() ? setBodyStyleIOS() : setBodyStyle()];\n  return () => {\n    cleanups.forEach((fn) => fn?.());\n    body.removeAttribute(LOCK_CLASSNAME);\n  };\n}\n\nexport { preventBodyScroll };\n", "import { createAnatomy } from '@zag-js/anatomy';\nimport { ariaHidden } from '@zag-js/aria-hidden';\nimport { createMachine } from '@zag-js/core';\nimport { trackDismissableElement } from '@zag-js/dismissable';\nimport { raf, getComputedStyle } from '@zag-js/dom-query';\nimport { trapFocus } from '@zag-js/focus-trap';\nimport { preventBodyScroll } from '@zag-js/remove-scroll';\nimport { createProps } from '@zag-js/types';\nimport { createSplitProps } from '@zag-js/utils';\n\n// src/dialog.anatomy.ts\nvar anatomy = createAnatomy(\"dialog\").parts(\n  \"trigger\",\n  \"backdrop\",\n  \"positioner\",\n  \"content\",\n  \"title\",\n  \"description\",\n  \"closeTrigger\"\n);\nvar parts = anatomy.build();\n\n// src/dialog.dom.ts\nvar getPositionerId = (ctx) => ctx.ids?.positioner ?? `dialog:${ctx.id}:positioner`;\nvar getBackdropId = (ctx) => ctx.ids?.backdrop ?? `dialog:${ctx.id}:backdrop`;\nvar getContentId = (ctx) => ctx.ids?.content ?? `dialog:${ctx.id}:content`;\nvar getTriggerId = (ctx) => ctx.ids?.trigger ?? `dialog:${ctx.id}:trigger`;\nvar getTitleId = (ctx) => ctx.ids?.title ?? `dialog:${ctx.id}:title`;\nvar getDescriptionId = (ctx) => ctx.ids?.description ?? `dialog:${ctx.id}:description`;\nvar getCloseTriggerId = (ctx) => ctx.ids?.closeTrigger ?? `dialog:${ctx.id}:close`;\nvar getContentEl = (ctx) => ctx.getById(getContentId(ctx));\nvar getPositionerEl = (ctx) => ctx.getById(getPositionerId(ctx));\nvar getBackdropEl = (ctx) => ctx.getById(getBackdropId(ctx));\nvar getTriggerEl = (ctx) => ctx.getById(getTriggerId(ctx));\nvar getTitleEl = (ctx) => ctx.getById(getTitleId(ctx));\nvar getDescriptionEl = (ctx) => ctx.getById(getDescriptionId(ctx));\nvar getCloseTriggerEl = (ctx) => ctx.getById(getCloseTriggerId(ctx));\n\n// src/dialog.connect.ts\nfunction connect(service, normalize) {\n  const { state, send, context, prop, scope } = service;\n  const ariaLabel = prop(\"aria-label\");\n  const open = state.matches(\"open\");\n  return {\n    open,\n    setOpen(nextOpen) {\n      const open2 = state.matches(\"open\");\n      if (open2 === nextOpen) return;\n      send({ type: nextOpen ? \"OPEN\" : \"CLOSE\" });\n    },\n    getTriggerProps() {\n      return normalize.button({\n        ...parts.trigger.attrs,\n        dir: prop(\"dir\"),\n        id: getTriggerId(scope),\n        \"aria-haspopup\": \"dialog\",\n        type: \"button\",\n        \"aria-expanded\": open,\n        \"data-state\": open ? \"open\" : \"closed\",\n        \"aria-controls\": getContentId(scope),\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          send({ type: \"TOGGLE\" });\n        }\n      });\n    },\n    getBackdropProps() {\n      return normalize.element({\n        ...parts.backdrop.attrs,\n        dir: prop(\"dir\"),\n        hidden: !open,\n        id: getBackdropId(scope),\n        \"data-state\": open ? \"open\" : \"closed\"\n      });\n    },\n    getPositionerProps() {\n      return normalize.element({\n        ...parts.positioner.attrs,\n        dir: prop(\"dir\"),\n        id: getPositionerId(scope),\n        style: {\n          pointerEvents: open ? void 0 : \"none\"\n        }\n      });\n    },\n    getContentProps() {\n      const rendered = context.get(\"rendered\");\n      return normalize.element({\n        ...parts.content.attrs,\n        dir: prop(\"dir\"),\n        role: prop(\"role\"),\n        hidden: !open,\n        id: getContentId(scope),\n        tabIndex: -1,\n        \"data-state\": open ? \"open\" : \"closed\",\n        \"aria-modal\": true,\n        \"aria-label\": ariaLabel || void 0,\n        \"aria-labelledby\": ariaLabel || !rendered.title ? void 0 : getTitleId(scope),\n        \"aria-describedby\": rendered.description ? getDescriptionId(scope) : void 0\n      });\n    },\n    getTitleProps() {\n      return normalize.element({\n        ...parts.title.attrs,\n        dir: prop(\"dir\"),\n        id: getTitleId(scope)\n      });\n    },\n    getDescriptionProps() {\n      return normalize.element({\n        ...parts.description.attrs,\n        dir: prop(\"dir\"),\n        id: getDescriptionId(scope)\n      });\n    },\n    getCloseTriggerProps() {\n      return normalize.button({\n        ...parts.closeTrigger.attrs,\n        dir: prop(\"dir\"),\n        id: getCloseTriggerId(scope),\n        type: \"button\",\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          event.stopPropagation();\n          send({ type: \"CLOSE\" });\n        }\n      });\n    }\n  };\n}\nvar machine = createMachine({\n  props({ props: props2, scope }) {\n    const alertDialog = props2.role === \"alertdialog\";\n    const initialFocusEl = alertDialog ? () => getCloseTriggerEl(scope) : void 0;\n    const modal = typeof props2.modal === \"boolean\" ? props2.modal : true;\n    return {\n      role: \"dialog\",\n      modal,\n      trapFocus: modal,\n      preventScroll: modal,\n      closeOnInteractOutside: !alertDialog,\n      closeOnEscape: true,\n      restoreFocus: true,\n      initialFocusEl,\n      ...props2\n    };\n  },\n  initialState({ prop }) {\n    const open = prop(\"open\") || prop(\"defaultOpen\");\n    return open ? \"open\" : \"closed\";\n  },\n  context({ bindable }) {\n    return {\n      rendered: bindable(() => ({\n        defaultValue: { title: true, description: true }\n      }))\n    };\n  },\n  watch({ track, action, prop }) {\n    track([() => prop(\"open\")], () => {\n      action([\"toggleVisibility\"]);\n    });\n  },\n  states: {\n    open: {\n      entry: [\"checkRenderedElements\", \"syncZIndex\"],\n      effects: [\"trackDismissableElement\", \"trapFocus\", \"preventScroll\", \"hideContentBelow\"],\n      on: {\n        \"CONTROLLED.CLOSE\": {\n          target: \"closed\"\n        },\n        CLOSE: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            target: \"closed\",\n            actions: [\"invokeOnClose\"]\n          }\n        ],\n        TOGGLE: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            target: \"closed\",\n            actions: [\"invokeOnClose\"]\n          }\n        ]\n      }\n    },\n    closed: {\n      on: {\n        \"CONTROLLED.OPEN\": {\n          target: \"open\"\n        },\n        OPEN: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"invokeOnOpen\"]\n          }\n        ],\n        TOGGLE: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"invokeOnOpen\"]\n          }\n        ]\n      }\n    }\n  },\n  implementations: {\n    guards: {\n      isOpenControlled: ({ prop }) => prop(\"open\") != void 0\n    },\n    effects: {\n      trackDismissableElement({ scope, send, prop }) {\n        const getContentEl2 = () => getContentEl(scope);\n        return trackDismissableElement(getContentEl2, {\n          type: \"dialog\",\n          defer: true,\n          pointerBlocking: prop(\"modal\"),\n          exclude: [getTriggerEl(scope)],\n          onInteractOutside(event) {\n            prop(\"onInteractOutside\")?.(event);\n            if (!prop(\"closeOnInteractOutside\")) {\n              event.preventDefault();\n            }\n          },\n          persistentElements: prop(\"persistentElements\"),\n          onFocusOutside: prop(\"onFocusOutside\"),\n          onPointerDownOutside: prop(\"onPointerDownOutside\"),\n          onRequestDismiss: prop(\"onRequestDismiss\"),\n          onEscapeKeyDown(event) {\n            prop(\"onEscapeKeyDown\")?.(event);\n            if (!prop(\"closeOnEscape\")) {\n              event.preventDefault();\n            }\n          },\n          onDismiss() {\n            send({ type: \"CLOSE\", src: \"interact-outside\" });\n          }\n        });\n      },\n      preventScroll({ scope, prop }) {\n        if (!prop(\"preventScroll\")) return;\n        return preventBodyScroll(scope.getDoc());\n      },\n      trapFocus({ scope, prop }) {\n        if (!prop(\"trapFocus\")) return;\n        const contentEl = () => getContentEl(scope);\n        return trapFocus(contentEl, {\n          preventScroll: true,\n          returnFocusOnDeactivate: !!prop(\"restoreFocus\"),\n          initialFocus: prop(\"initialFocusEl\"),\n          setReturnFocus: (el) => prop(\"finalFocusEl\")?.() ?? el,\n          getShadowRoot: true\n        });\n      },\n      hideContentBelow({ scope, prop }) {\n        if (!prop(\"modal\")) return;\n        const getElements = () => [getContentEl(scope)];\n        return ariaHidden(getElements, { defer: true });\n      }\n    },\n    actions: {\n      checkRenderedElements({ context, scope }) {\n        raf(() => {\n          context.set(\"rendered\", {\n            title: !!getTitleEl(scope),\n            description: !!getDescriptionEl(scope)\n          });\n        });\n      },\n      syncZIndex({ scope }) {\n        raf(() => {\n          const contentEl = getContentEl(scope);\n          if (!contentEl) return;\n          const styles = getComputedStyle(contentEl);\n          const elems = [getPositionerEl(scope), getBackdropEl(scope)];\n          elems.forEach((node) => {\n            node?.style.setProperty(\"--z-index\", styles.zIndex);\n            node?.style.setProperty(\"--layer-index\", styles.getPropertyValue(\"--layer-index\"));\n          });\n        });\n      },\n      invokeOnClose({ prop }) {\n        prop(\"onOpenChange\")?.({ open: false });\n      },\n      invokeOnOpen({ prop }) {\n        prop(\"onOpenChange\")?.({ open: true });\n      },\n      toggleVisibility({ prop, send, event }) {\n        send({\n          type: prop(\"open\") ? \"CONTROLLED.OPEN\" : \"CONTROLLED.CLOSE\",\n          previousEvent: event\n        });\n      }\n    }\n  }\n});\nvar props = createProps()([\n  \"aria-label\",\n  \"closeOnEscape\",\n  \"closeOnInteractOutside\",\n  \"dir\",\n  \"finalFocusEl\",\n  \"getRootNode\",\n  \"getRootNode\",\n  \"id\",\n  \"id\",\n  \"ids\",\n  \"initialFocusEl\",\n  \"modal\",\n  \"onEscapeKeyDown\",\n  \"onFocusOutside\",\n  \"onInteractOutside\",\n  \"onOpenChange\",\n  \"onPointerDownOutside\",\n  \"onRequestDismiss\",\n  \"defaultOpen\",\n  \"open\",\n  \"persistentElements\",\n  \"preventScroll\",\n  \"restoreFocus\",\n  \"role\",\n  \"trapFocus\"\n]);\nvar splitProps = createSplitProps(props);\n\nexport { anatomy, connect, machine, props, splitProps };\n", "import * as dialog from \"@zag-js/dialog\";\nimport type { Direction } from \"@zag-js/types\";\nimport { VanillaMachine, normalizeProps } from \"@zag-js/vanilla\";\nimport {\n  Component,\n  getString,\n  getBoolean,\n  generateId,\n  renderPart,\n  valuesEqual,\n} from \"../lib\";\nexport class Dialog extends Component<dialog.Props, dialog.Api> {\n  initMachine(props: dialog.Props): VanillaMachine<any> {\n    return new VanillaMachine(dialog.machine, props);\n  }\n  initApi(): dialog.Api {\n    return dialog.connect(this.machine.service, normalizeProps);\n  }\n  render() {\n    const parts = [\n      \"content\",\n      \"title\",\n      \"trigger\",\n      \"backdrop\",\n      \"positioner\",\n      \"description\",\n      \"close-trigger\",\n    ];\n    for (const part of parts) {\n      const node = this.el.querySelector(`[data-part=\"${part}\"]`);\n      if (node) renderPart(this.el, part, this.api);\n    }\n  }\n}\nexport function initDialog(\n  doc: HTMLElement | Document = document,\n  selector = \".dialog-js\",\n): void {\n  doc.querySelectorAll<HTMLElement>(selector).forEach((rootEl) => {\n    const directions = [\"ltr\", \"rtl\"] as const;\n    const roles = [\"dialog\", \"alertdialog\"] as const;\n    const dialog = new Dialog(rootEl, {\n      id: generateId(rootEl, \"dialog\"),\n      \"aria-label\": getString(rootEl, \"aria-label\"),\n      defaultOpen: getBoolean(rootEl, \"loopFocus\"),\n      dir: getString<Direction>(rootEl, \"dir\", directions),\n      modal: getBoolean(rootEl, \"modal\"),\n      open: getBoolean(rootEl, \"open\"),\n      preventScroll: getBoolean(rootEl, \"preventScroll\"),\n      restoreFocus: getBoolean(rootEl, \"restoreFocus\"),\n      trapFocus: getBoolean(rootEl, \"trapFocus\"),\n      closeOnInteractOutside: getBoolean(rootEl, \"closeOnInteractOutside\"),\n      closeOnEscape: getBoolean(rootEl, \"closeOnEscape\"),\n      role: getString(rootEl, \"dir\", roles),\n      onOpenChange(details: any) {\n        const eventName = getString(rootEl, \"onOpenChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n    });\n    dialog.init();\n    dialog.el.addEventListener(\"dialog:set-open\", (event) => {\n      const { value } = (event as CustomEvent<{ value: boolean }>).detail;\n      if (!valuesEqual(dialog.api.open, value)) {\n        dialog.api.setOpen(value);\n      }\n    });\n    dialog.el.addEventListener(\"dialog:open\", (event) => {\n      const detail = (\n        event as CustomEvent<{ callback: (value: boolean) => void }>\n      ).detail;\n      const callback = detail.callback;\n      if (callback && typeof callback === \"function\") {\n        callback(dialog.api.open);\n      }\n    });\n  });\n}\n", "import { createAnatomy } from '@zag-js/anatomy';\nimport { setElementValue, raf, contains, dataAttr, ariaAttr, isComposingEvent, isApple } from '@zag-js/dom-query';\nimport { createMachine } from '@zag-js/core';\nimport { trackInteractOutside } from '@zag-js/interact-outside';\nimport { createProps } from '@zag-js/types';\nimport { createSplitProps } from '@zag-js/utils';\n\n// src/editable.anatomy.ts\nvar anatomy = createAnatomy(\"editable\").parts(\n  \"root\",\n  \"area\",\n  \"label\",\n  \"preview\",\n  \"input\",\n  \"editTrigger\",\n  \"submitTrigger\",\n  \"cancelTrigger\",\n  \"control\"\n);\nvar parts = anatomy.build();\n\n// src/editable.dom.ts\nvar getRootId = (ctx) => ctx.ids?.root ?? `editable:${ctx.id}`;\nvar getAreaId = (ctx) => ctx.ids?.area ?? `editable:${ctx.id}:area`;\nvar getLabelId = (ctx) => ctx.ids?.label ?? `editable:${ctx.id}:label`;\nvar getPreviewId = (ctx) => ctx.ids?.preview ?? `editable:${ctx.id}:preview`;\nvar getInputId = (ctx) => ctx.ids?.input ?? `editable:${ctx.id}:input`;\nvar getControlId = (ctx) => ctx.ids?.control ?? `editable:${ctx.id}:control`;\nvar getSubmitTriggerId = (ctx) => ctx.ids?.submitTrigger ?? `editable:${ctx.id}:submit`;\nvar getCancelTriggerId = (ctx) => ctx.ids?.cancelTrigger ?? `editable:${ctx.id}:cancel`;\nvar getEditTriggerId = (ctx) => ctx.ids?.editTrigger ?? `editable:${ctx.id}:edit`;\nvar getInputEl = (ctx) => ctx.getById(getInputId(ctx));\nvar getPreviewEl = (ctx) => ctx.getById(getPreviewId(ctx));\nvar getSubmitTriggerEl = (ctx) => ctx.getById(getSubmitTriggerId(ctx));\nvar getCancelTriggerEl = (ctx) => ctx.getById(getCancelTriggerId(ctx));\nvar getEditTriggerEl = (ctx) => ctx.getById(getEditTriggerId(ctx));\n\n// src/editable.connect.ts\nfunction connect(service, normalize) {\n  const { state, context, send, prop, scope, computed } = service;\n  const disabled = !!prop(\"disabled\");\n  const interactive = computed(\"isInteractive\");\n  const readOnly = !!prop(\"readOnly\");\n  const required = !!prop(\"required\");\n  const invalid = !!prop(\"invalid\");\n  const autoResize = !!prop(\"autoResize\");\n  const translations = prop(\"translations\");\n  const editing = state.matches(\"edit\");\n  const placeholderProp = prop(\"placeholder\");\n  const placeholder = typeof placeholderProp === \"string\" ? { edit: placeholderProp, preview: placeholderProp } : placeholderProp;\n  const value = context.get(\"value\");\n  const empty = value.trim() === \"\";\n  const valueText = empty ? placeholder?.preview ?? \"\" : value;\n  return {\n    editing,\n    empty,\n    value,\n    valueText,\n    setValue(value2) {\n      send({ type: \"VALUE.SET\", value: value2, src: \"setValue\" });\n    },\n    clearValue() {\n      send({ type: \"VALUE.SET\", value: \"\", src: \"clearValue\" });\n    },\n    edit() {\n      if (!interactive) return;\n      send({ type: \"EDIT\" });\n    },\n    cancel() {\n      if (!interactive) return;\n      send({ type: \"CANCEL\" });\n    },\n    submit() {\n      if (!interactive) return;\n      send({ type: \"SUBMIT\" });\n    },\n    getRootProps() {\n      return normalize.element({\n        ...parts.root.attrs,\n        id: getRootId(scope),\n        dir: prop(\"dir\")\n      });\n    },\n    getAreaProps() {\n      return normalize.element({\n        ...parts.area.attrs,\n        id: getAreaId(scope),\n        dir: prop(\"dir\"),\n        style: autoResize ? { display: \"inline-grid\" } : void 0,\n        \"data-focus\": dataAttr(editing),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-placeholder-shown\": dataAttr(empty)\n      });\n    },\n    getLabelProps() {\n      return normalize.label({\n        ...parts.label.attrs,\n        id: getLabelId(scope),\n        dir: prop(\"dir\"),\n        htmlFor: getInputId(scope),\n        \"data-focus\": dataAttr(editing),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-required\": dataAttr(required),\n        onClick() {\n          if (editing) return;\n          const previewEl = getPreviewEl(scope);\n          previewEl?.focus({ preventScroll: true });\n        }\n      });\n    },\n    getInputProps() {\n      return normalize.input({\n        ...parts.input.attrs,\n        dir: prop(\"dir\"),\n        \"aria-label\": translations?.input,\n        name: prop(\"name\"),\n        form: prop(\"form\"),\n        id: getInputId(scope),\n        hidden: autoResize ? void 0 : !editing,\n        placeholder: placeholder?.edit,\n        maxLength: prop(\"maxLength\"),\n        required: prop(\"required\"),\n        disabled,\n        \"data-disabled\": dataAttr(disabled),\n        readOnly,\n        \"data-readonly\": dataAttr(readOnly),\n        \"aria-invalid\": ariaAttr(invalid),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-autoresize\": dataAttr(autoResize),\n        defaultValue: value,\n        size: autoResize ? 1 : void 0,\n        onChange(event) {\n          send({\n            type: \"VALUE.SET\",\n            src: \"input.change\",\n            value: event.currentTarget.value\n          });\n        },\n        onKeyDown(event) {\n          if (event.defaultPrevented) return;\n          if (isComposingEvent(event)) return;\n          const keyMap = {\n            Escape() {\n              send({ type: \"CANCEL\" });\n              event.preventDefault();\n            },\n            Enter(event2) {\n              if (!computed(\"submitOnEnter\")) return;\n              const { localName } = event2.currentTarget;\n              if (localName === \"textarea\") {\n                const submitMod = isApple() ? event2.metaKey : event2.ctrlKey;\n                if (!submitMod) return;\n                send({ type: \"SUBMIT\", src: \"keydown.enter\" });\n                return;\n              }\n              if (localName === \"input\" && !event2.shiftKey && !event2.metaKey) {\n                send({ type: \"SUBMIT\", src: \"keydown.enter\" });\n                event2.preventDefault();\n              }\n            }\n          };\n          const exec = keyMap[event.key];\n          if (exec) {\n            exec(event);\n          }\n        },\n        style: autoResize ? {\n          gridArea: \"1 / 1 / auto / auto\",\n          visibility: !editing ? \"hidden\" : void 0\n        } : void 0\n      });\n    },\n    getPreviewProps() {\n      return normalize.element({\n        id: getPreviewId(scope),\n        ...parts.preview.attrs,\n        dir: prop(\"dir\"),\n        \"data-placeholder-shown\": dataAttr(empty),\n        \"aria-readonly\": ariaAttr(readOnly),\n        \"data-readonly\": dataAttr(disabled),\n        \"data-disabled\": dataAttr(disabled),\n        \"aria-disabled\": ariaAttr(disabled),\n        \"aria-invalid\": ariaAttr(invalid),\n        \"data-invalid\": dataAttr(invalid),\n        \"aria-label\": translations?.edit,\n        \"data-autoresize\": dataAttr(autoResize),\n        children: valueText,\n        hidden: autoResize ? void 0 : editing,\n        tabIndex: interactive ? 0 : void 0,\n        onClick() {\n          if (!interactive) return;\n          if (prop(\"activationMode\") !== \"click\") return;\n          send({ type: \"EDIT\", src: \"click\" });\n        },\n        onFocus() {\n          if (!interactive) return;\n          if (prop(\"activationMode\") !== \"focus\") return;\n          send({ type: \"EDIT\", src: \"focus\" });\n        },\n        onDoubleClick(event) {\n          if (event.defaultPrevented) return;\n          if (!interactive) return;\n          if (prop(\"activationMode\") !== \"dblclick\") return;\n          send({ type: \"EDIT\", src: \"dblclick\" });\n        },\n        style: autoResize ? {\n          whiteSpace: \"pre\",\n          gridArea: \"1 / 1 / auto / auto\",\n          visibility: editing ? \"hidden\" : void 0,\n          // in event the preview overflow's the parent element\n          overflow: \"hidden\",\n          textOverflow: \"ellipsis\"\n        } : void 0\n      });\n    },\n    getEditTriggerProps() {\n      return normalize.button({\n        ...parts.editTrigger.attrs,\n        id: getEditTriggerId(scope),\n        dir: prop(\"dir\"),\n        \"aria-label\": translations?.edit,\n        hidden: editing,\n        type: \"button\",\n        disabled,\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          if (!interactive) return;\n          send({ type: \"EDIT\", src: \"edit.click\" });\n        }\n      });\n    },\n    getControlProps() {\n      return normalize.element({\n        id: getControlId(scope),\n        ...parts.control.attrs,\n        dir: prop(\"dir\")\n      });\n    },\n    getSubmitTriggerProps() {\n      return normalize.button({\n        ...parts.submitTrigger.attrs,\n        dir: prop(\"dir\"),\n        id: getSubmitTriggerId(scope),\n        \"aria-label\": translations?.submit,\n        hidden: !editing,\n        disabled,\n        type: \"button\",\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          if (!interactive) return;\n          send({ type: \"SUBMIT\", src: \"submit.click\" });\n        }\n      });\n    },\n    getCancelTriggerProps() {\n      return normalize.button({\n        ...parts.cancelTrigger.attrs,\n        dir: prop(\"dir\"),\n        \"aria-label\": translations?.cancel,\n        id: getCancelTriggerId(scope),\n        hidden: !editing,\n        type: \"button\",\n        disabled,\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          if (!interactive) return;\n          send({ type: \"CANCEL\", src: \"cancel.click\" });\n        }\n      });\n    }\n  };\n}\nvar machine = createMachine({\n  props({ props: props2 }) {\n    return {\n      activationMode: \"focus\",\n      submitMode: \"both\",\n      defaultValue: \"\",\n      selectOnFocus: true,\n      ...props2,\n      translations: {\n        input: \"editable input\",\n        edit: \"edit\",\n        submit: \"submit\",\n        cancel: \"cancel\",\n        ...props2.translations\n      }\n    };\n  },\n  initialState({ prop }) {\n    const edit = prop(\"edit\") || prop(\"defaultEdit\");\n    return edit ? \"edit\" : \"preview\";\n  },\n  entry: [\"focusInputIfNeeded\"],\n  context: ({ bindable, prop }) => {\n    return {\n      value: bindable(() => ({\n        defaultValue: prop(\"defaultValue\"),\n        value: prop(\"value\"),\n        onChange(value) {\n          return prop(\"onValueChange\")?.({ value });\n        }\n      })),\n      previousValue: bindable(() => ({\n        defaultValue: \"\"\n      }))\n    };\n  },\n  watch({ track, action, context, prop }) {\n    track([() => context.get(\"value\")], () => {\n      action([\"syncInputValue\"]);\n    });\n    track([() => prop(\"edit\")], () => {\n      action([\"toggleEditing\"]);\n    });\n  },\n  computed: {\n    submitOnEnter({ prop }) {\n      const submitMode = prop(\"submitMode\");\n      return submitMode === \"both\" || submitMode === \"enter\";\n    },\n    submitOnBlur({ prop }) {\n      const submitMode = prop(\"submitMode\");\n      return submitMode === \"both\" || submitMode === \"blur\";\n    },\n    isInteractive({ prop }) {\n      return !(prop(\"disabled\") || prop(\"readOnly\"));\n    }\n  },\n  on: {\n    \"VALUE.SET\": {\n      actions: [\"setValue\"]\n    }\n  },\n  states: {\n    preview: {\n      entry: [\"blurInput\"],\n      on: {\n        \"CONTROLLED.EDIT\": {\n          target: \"edit\",\n          actions: [\"setPreviousValue\", \"focusInput\"]\n        },\n        EDIT: [\n          {\n            guard: \"isEditControlled\",\n            actions: [\"invokeOnEdit\"]\n          },\n          {\n            target: \"edit\",\n            actions: [\"setPreviousValue\", \"focusInput\", \"invokeOnEdit\"]\n          }\n        ]\n      }\n    },\n    edit: {\n      effects: [\"trackInteractOutside\"],\n      entry: [\"syncInputValue\"],\n      on: {\n        \"CONTROLLED.PREVIEW\": [\n          {\n            guard: \"isSubmitEvent\",\n            target: \"preview\",\n            actions: [\"setPreviousValue\", \"restoreFocus\", \"invokeOnSubmit\"]\n          },\n          {\n            target: \"preview\",\n            actions: [\"revertValue\", \"restoreFocus\", \"invokeOnCancel\"]\n          }\n        ],\n        CANCEL: [\n          {\n            guard: \"isEditControlled\",\n            actions: [\"invokeOnPreview\"]\n          },\n          {\n            target: \"preview\",\n            actions: [\"revertValue\", \"restoreFocus\", \"invokeOnCancel\", \"invokeOnPreview\"]\n          }\n        ],\n        SUBMIT: [\n          {\n            guard: \"isEditControlled\",\n            actions: [\"invokeOnPreview\"]\n          },\n          {\n            target: \"preview\",\n            actions: [\"setPreviousValue\", \"restoreFocus\", \"invokeOnSubmit\", \"invokeOnPreview\"]\n          }\n        ]\n      }\n    }\n  },\n  implementations: {\n    guards: {\n      isEditControlled: ({ prop }) => prop(\"edit\") != void 0,\n      isSubmitEvent: ({ event }) => event.previousEvent?.type === \"SUBMIT\"\n    },\n    effects: {\n      trackInteractOutside({ send, scope, prop, computed }) {\n        return trackInteractOutside(getInputEl(scope), {\n          exclude(target) {\n            const ignore = [getCancelTriggerEl(scope), getSubmitTriggerEl(scope)];\n            return ignore.some((el) => contains(el, target));\n          },\n          onFocusOutside: prop(\"onFocusOutside\"),\n          onPointerDownOutside: prop(\"onPointerDownOutside\"),\n          onInteractOutside(event) {\n            prop(\"onInteractOutside\")?.(event);\n            if (event.defaultPrevented) return;\n            const { focusable } = event.detail;\n            send({\n              type: computed(\"submitOnBlur\") ? \"SUBMIT\" : \"CANCEL\",\n              src: \"interact-outside\",\n              focusable\n            });\n          }\n        });\n      }\n    },\n    actions: {\n      restoreFocus({ event, scope, prop }) {\n        if (event.focusable) return;\n        raf(() => {\n          const finalEl = prop(\"finalFocusEl\")?.() ?? getEditTriggerEl(scope);\n          finalEl?.focus({ preventScroll: true });\n        });\n      },\n      clearValue({ context }) {\n        context.set(\"value\", \"\");\n      },\n      focusInputIfNeeded({ action, prop }) {\n        const edit = prop(\"edit\") || prop(\"defaultEdit\");\n        if (!edit) return;\n        action([\"focusInput\"]);\n      },\n      focusInput({ scope, prop }) {\n        raf(() => {\n          const inputEl = getInputEl(scope);\n          if (!inputEl) return;\n          if (prop(\"selectOnFocus\")) {\n            inputEl.select();\n          } else {\n            inputEl.focus({ preventScroll: true });\n          }\n        });\n      },\n      invokeOnCancel({ prop, context }) {\n        const prev = context.get(\"previousValue\");\n        prop(\"onValueRevert\")?.({ value: prev });\n      },\n      invokeOnSubmit({ prop, context }) {\n        const value = context.get(\"value\");\n        prop(\"onValueCommit\")?.({ value });\n      },\n      invokeOnEdit({ prop }) {\n        prop(\"onEditChange\")?.({ edit: true });\n      },\n      invokeOnPreview({ prop }) {\n        prop(\"onEditChange\")?.({ edit: false });\n      },\n      toggleEditing({ prop, send, event }) {\n        send({\n          type: prop(\"edit\") ? \"CONTROLLED.EDIT\" : \"CONTROLLED.PREVIEW\",\n          previousEvent: event\n        });\n      },\n      syncInputValue({ context, scope }) {\n        const inputEl = getInputEl(scope);\n        if (!inputEl) return;\n        setElementValue(inputEl, context.get(\"value\"));\n      },\n      setValue({ context, prop, event }) {\n        const max = prop(\"maxLength\");\n        const value = max != null ? event.value.slice(0, max) : event.value;\n        context.set(\"value\", value);\n      },\n      setPreviousValue({ context }) {\n        context.set(\"previousValue\", context.get(\"value\"));\n      },\n      revertValue({ context }) {\n        const value = context.get(\"previousValue\");\n        if (!value) return;\n        context.set(\"value\", value);\n      },\n      blurInput({ scope }) {\n        getInputEl(scope)?.blur();\n      }\n    }\n  }\n});\nvar props = createProps()([\n  \"activationMode\",\n  \"autoResize\",\n  \"dir\",\n  \"disabled\",\n  \"finalFocusEl\",\n  \"form\",\n  \"getRootNode\",\n  \"id\",\n  \"ids\",\n  \"invalid\",\n  \"maxLength\",\n  \"name\",\n  \"onEditChange\",\n  \"onFocusOutside\",\n  \"onInteractOutside\",\n  \"onPointerDownOutside\",\n  \"onValueChange\",\n  \"onValueCommit\",\n  \"onValueRevert\",\n  \"placeholder\",\n  \"readOnly\",\n  \"required\",\n  \"selectOnFocus\",\n  \"edit\",\n  \"defaultEdit\",\n  \"submitMode\",\n  \"translations\",\n  \"defaultValue\",\n  \"value\"\n]);\nvar splitProps = createSplitProps(props);\n\nexport { anatomy, connect, machine, props, splitProps };\n", "import * as editable from \"@zag-js/editable\";\nimport type { Direction } from \"@zag-js/types\";\nimport { VanillaMachine, normalizeProps } from \"@zag-js/vanilla\";\n\nimport {\n  Component,\n  getString,\n  getBoolean,\n  getNumber,\n  generateId,\n  renderPart,\n  valuesEqual,\n} from \"../lib\";\nexport class Editable extends Component<editable.Props, editable.Api> {\n  initMachine(props: editable.Props): VanillaMachine<any> {\n    return new VanillaMachine(editable.machine, props);\n  }\n  initApi(): editable.Api {\n    return editable.connect(this.machine.service, normalizeProps);\n  }\n  render() {\n    const parts = [\n      \"root\",\n      \"area\",\n      \"input\",\n      \"preview\",\n      \"edit-trigger\",\n      \"submit-trigger\",\n      \"cancel-trigger\",\n    ];\n    for (const part of parts) renderPart(this.el, part, this.api);\n  }\n}\nexport function initEditable(\n  doc: HTMLElement | Document = document,\n  selector = \".editable-js\",\n): void {\n  doc.querySelectorAll<HTMLElement>(selector).forEach((rootEl) => {\n    const activationModes = [\"focus\", \"dblclick\", \"click\", \"none\"] as const;\n    const submitModes = [\"enter\", \"blur\", \"both\", \"none\"] as const;\n    const directions = [\"ltr\", \"rtl\"] as const;\n    const editable = new Editable(rootEl, {\n      id: generateId(rootEl, \"editable\"),\n      defaultValue: getString(rootEl, \"defaultValue\"),\n      dir: getString<Direction>(rootEl, \"dir\", directions),\n      activationMode: getString(rootEl, \"activationMode\", activationModes),\n      autoResize: getBoolean(rootEl, \"autoResize\") || true,\n      defaultEdit: getBoolean(rootEl, \"defaultEdit\"),\n      disabled: getBoolean(rootEl, \"disabled\"),\n      edit: getBoolean(rootEl, \"edit\"),\n      form: getString(rootEl, \"form\"),\n      submitMode: getString(rootEl, \"submitMode\", submitModes),\n      invalid: getBoolean(rootEl, \"invalid\"),\n      maxLength: getNumber(rootEl, \"maxLength\"),\n      name: getString(rootEl, \"name\"),\n      placeholder: getString(rootEl, \"placeholder\"),\n      readOnly: getBoolean(rootEl, \"readOnly\"),\n      required: getBoolean(rootEl, \"required\"),\n      selectOnFocus: getBoolean(rootEl, \"selectOnFocus\"),\n      value: getString(rootEl, \"value\"),\n      onEditChange(details) {\n        const eventName = getString(rootEl, \"onEditChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onFocusOutside(details) {\n        const eventName = getString(rootEl, \"onFocusOutside\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onInteractOutside(details) {\n        const eventName = getString(rootEl, \"onInteractOutside\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onPointerDownOutside(details) {\n        const eventName = getString(rootEl, \"onPointerDownOutside\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onValueChange(details) {\n        const eventName = getString(rootEl, \"onValueChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onValueCommit(details) {\n        const eventName = getString(rootEl, \"onValueCommit\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onValueRevert(details) {\n        const eventName = getString(rootEl, \"onValueRevert\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n    });\n    editable.init();\n    editable.el.addEventListener(\"editable:set-value\", (event) => {\n      const { value } = (event as CustomEvent<{ value: string }>).detail;\n      const current = editable.api.value;\n      if (!valuesEqual(current, value)) {\n        editable.api.setValue(value);\n      }\n    });\n  });\n}\n", "// src/data-transfer.ts\nvar getItemEntry = (item) => typeof item.getAsEntry === \"function\" ? item.getAsEntry() : typeof item.webkitGetAsEntry === \"function\" ? item.webkitGetAsEntry() : null;\nvar isDirectoryEntry = (entry) => entry.isDirectory;\nvar isFileEntry = (entry) => entry.isFile;\nvar addRelativePath = (file, path) => {\n  Object.defineProperty(file, \"relativePath\", { value: path ? `${path}/${file.name}` : file.name });\n  return file;\n};\nvar getFileEntries = (items, traverseDirectories) => Promise.all(\n  Array.from(items).filter((item) => item.kind === \"file\").map((item) => {\n    const entry = getItemEntry(item);\n    if (!entry) return null;\n    if (isDirectoryEntry(entry) && traverseDirectories) {\n      return getDirectoryFiles(entry.createReader(), `${entry.name}`);\n    }\n    if (isFileEntry(entry) && typeof item.getAsFile === \"function\") {\n      const file = item.getAsFile();\n      return Promise.resolve(file ? addRelativePath(file, \"\") : null);\n    }\n    if (isFileEntry(entry)) {\n      return new Promise((resolve) => {\n        entry.file((file) => {\n          resolve(addRelativePath(file, \"\"));\n        });\n      });\n    }\n  }).filter((b) => b)\n);\nvar getDirectoryFiles = (reader, path = \"\") => new Promise((resolve) => {\n  const entryPromises = [];\n  const readDirectoryEntries = () => {\n    reader.readEntries((entries) => {\n      if (entries.length === 0) {\n        resolve(Promise.all(entryPromises).then((entries2) => entries2.flat()));\n        return;\n      }\n      const promises = entries.map((entry) => {\n        if (!entry) return null;\n        if (isDirectoryEntry(entry)) {\n          return getDirectoryFiles(entry.createReader(), `${path}${entry.name}`);\n        }\n        if (isFileEntry(entry)) {\n          return new Promise((resolve2) => {\n            entry.file((file) => {\n              resolve2(addRelativePath(file, path));\n            });\n          });\n        }\n      }).filter((b) => b);\n      entryPromises.push(Promise.all(promises));\n      readDirectoryEntries();\n    });\n  };\n  readDirectoryEntries();\n});\n\n// src/data-url-to-blob.ts\nfunction dataURItoBlob(uri) {\n  const binary = atob(uri.split(\",\")[1]);\n  const mimeString = uri.split(\",\")[0].split(\":\")[1].split(\";\")[0];\n  const buffer = new ArrayBuffer(binary.length);\n  const intArray = new Uint8Array(buffer);\n  for (let i = 0; i < binary.length; i++) {\n    intArray[i] = binary.charCodeAt(i);\n  }\n  return new Blob([buffer], { type: mimeString });\n}\n\n// src/download-file.ts\nvar BOM_REGEX = /^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i;\nvar MAC_REGEX = /Macintosh/;\nvar APPLE_WEBKIT_REGEX = /AppleWebKit/;\nvar SAFARI_REGEX = /Safari/;\nfunction getBlob(blobOrString, type, appendBOM) {\n  let blob = typeof blobOrString === \"string\" ? new Blob([blobOrString], { type }) : blobOrString;\n  if (appendBOM && BOM_REGEX.test(blob.type)) {\n    return new Blob([String.fromCharCode(65279), blob], { type: blob.type });\n  }\n  return blob;\n}\nfunction isMSEdge(win) {\n  return Boolean(win.navigator && win.navigator.msSaveOrOpenBlob);\n}\nfunction isWebView(win) {\n  return win.navigator && MAC_REGEX.test(win.navigator.userAgent) && APPLE_WEBKIT_REGEX.test(win.navigator.userAgent) && !SAFARI_REGEX.test(win.navigator.userAgent);\n}\nfunction downloadFile(options) {\n  const { file, win = window, type, name, appendBOM, revokeTimeout = 0 } = options;\n  const doc = win.document;\n  const blob = getBlob(file, type, appendBOM);\n  const fileName = (file instanceof File ? name || file.name : name) || \"file-download\";\n  if (isMSEdge(win)) {\n    win.navigator.msSaveOrOpenBlob(blob, fileName);\n    return;\n  }\n  const isMacOSWebView = isWebView(win);\n  const anchor = doc.createElement(\"a\");\n  const canUseDownload = \"download\" in anchor && !isMacOSWebView;\n  if (canUseDownload) {\n    const url2 = win.URL.createObjectURL(blob);\n    anchor.href = url2;\n    anchor.rel = \"noopener\";\n    anchor.download = fileName;\n    anchor.style.display = \"none\";\n    doc.body.appendChild(anchor);\n    anchor.dispatchEvent(new win.MouseEvent(\"click\"));\n    setTimeout(() => {\n      win.URL.revokeObjectURL(url2);\n      anchor.remove();\n    }, revokeTimeout);\n    return;\n  }\n  const url = win.URL.createObjectURL(blob);\n  const popup = win.open(url, \"_blank\");\n  if (!popup) {\n    win.location.href = url;\n  }\n  setTimeout(() => {\n    win.URL.revokeObjectURL(url);\n  }, revokeTimeout);\n}\n\n// src/get-accept-attr.ts\nfunction isMIMEType(v) {\n  return v === \"audio/*\" || v === \"video/*\" || v === \"image/*\" || v === \"text/*\" || /\\w+\\/[-+.\\w]+/g.test(v);\n}\nfunction isExt(v) {\n  return /^.*\\.[\\w]+$/.test(v);\n}\nvar isValidMIME = (v) => isMIMEType(v) || isExt(v);\nfunction getAcceptAttrString(accept) {\n  if (accept == null) return;\n  if (typeof accept === \"string\") {\n    return accept;\n  }\n  if (Array.isArray(accept)) {\n    return accept.filter(isValidMIME).join(\",\");\n  }\n  return Object.entries(accept).reduce((a, [mimeType, ext]) => [...a, mimeType, ...ext], []).filter(isValidMIME).join(\",\");\n}\n\n// src/get-file-data-url.ts\nvar getFileDataUrl = async (file) => {\n  const reader = new FileReader();\n  return new Promise((resolve, reject) => {\n    reader.onerror = () => {\n      reader.abort();\n      reject(new Error(\"There was an error reading a file\"));\n    };\n    reader.onloadend = () => {\n      const { result } = reader;\n      if (result instanceof ArrayBuffer) {\n        reject(new Error(\"Expected DataURL as string from Blob/File, got ArrayBuffer\"));\n      } else {\n        resolve(result || void 0);\n      }\n    };\n    reader.readAsDataURL(file);\n  });\n};\n\n// src/get-total-file-size.ts\nvar getTotalFileSize = (files) => {\n  return files.reduce((acc, file) => acc + file.size, 0);\n};\n\n// src/is-file-equal.ts\nvar isFileEqual = (file1, file2) => {\n  return file1.name === file2.name && file1.size === file2.size && file1.type === file2.type;\n};\n\n// src/is-valid-file-size.ts\nvar isDefined = (v) => v !== void 0 && v !== null;\nfunction isValidFileSize(file, minSize, maxSize) {\n  if (isDefined(file.size)) {\n    if (isDefined(minSize) && isDefined(maxSize)) {\n      if (file.size > maxSize) return [false, \"FILE_TOO_LARGE\"];\n      if (file.size < minSize) return [false, \"FILE_TOO_SMALL\"];\n    } else if (isDefined(minSize) && file.size < minSize) {\n      return [false, \"FILE_TOO_SMALL\"];\n    } else if (isDefined(maxSize) && file.size > maxSize) {\n      return [false, \"FILE_TOO_LARGE\"];\n    }\n  }\n  return [true, null];\n}\n\n// src/mime-types.ts\nvar mimeTypes = \"3g2_video/3gpp2[3gp,3gpp_video/3gpp[3mf_model/3mf[7z_application/x-7z-compressed[aac_audio/aac[ac_application/pkix-attr-cert[adp_audio/adpcm[adts_audio/aac[ai_application/postscript[aml_application/automationml-aml+xml[amlx_application/automationml-amlx+zip[amr_audio/amr[apk_application/vnd.android.package-archive[apng_image/apng[appcache,manifest_text/cache-manifest[appinstaller_application/appinstaller[appx_application/appx[appxbundle_application/appxbundle[asc_application/pgp-keys[atom_application/atom+xml[atomcat_application/atomcat+xml[atomdeleted_application/atomdeleted+xml[atomsvc_application/atomsvc+xml[au,snd_audio/basic[avi_video/x-msvideo[avci_image/avci[avcs_image/avcs[avif_image/avif[aw_application/applixware[bdoc_application/bdoc[bin,bpk,buffer,deb,deploy,dist,distz,dll,dmg,dms,dump,elc,exe,img,iso,lrf,mar,msi,msm,msp,pkg,so_application/octet-stream[bmp,dib_image/bmp[btf,btif_image/prs.btif[bz2_application/x-bzip2[c_text/x-c[ccxml_application/ccxml+xml[cdfx_application/cdfx+xml[cdmia_application/cdmi-capability[cdmic_application/cdmi-container[cdmid_application/cdmi-domain[cdmio_application/cdmi-object[cdmiq_application/cdmi-queue[cer_application/pkix-cert[cgm_image/cgm[cjs_application/node[class_application/java-vm[coffee,litcoffee_text/coffeescript[conf,def,in,ini,list,log,text,txt_text/plain[cpp,cxx,cc_text/x-c++src[cpl_application/cpl+xml[cpt_application/mac-compactpro[crl_application/pkix-crl[css_text/css[csv_text/csv[cu_application/cu-seeme[cwl_application/cwl[cww_application/prs.cww[davmount_application/davmount+xml[dbk_application/docbook+xml[doc_application/msword[docx_application/vnd.openxmlformats-officedocument.wordprocessingml.document[dsc_text/prs.lines.tag[dssc_application/dssc+der[dtd_application/xml-dtd[dwd_application/atsc-dwd+xml[ear,jar,war_application/java-archive[ecma_application/ecmascript[emf_image/emf[eml,mime_message/rfc822[emma_application/emma+xml[emotionml_application/emotionml+xml[eot_application/vnd.ms-fontobject[eps,ps_application/postscript[epub_application/epub+zip[exi_application/exi[exp_application/express[exr_image/aces[ez_application/andrew-inset[fdf_application/fdf[fdt_application/fdt+xml[fits_image/fits[flac_audio/flac[flv_video/x-flv[g3_image/g3fax[geojson_application/geo+json[gif_image/gif[glb_model/gltf-binary[gltf_model/gltf+json[gml_application/gml+xml[go_text/x-go[gpx_application/gpx+xml[gz_application/gzip[h_text/x-h[h261_video/h261[h263_video/h263[h264_video/h264[heic_image/heic[heics_image/heic-sequence[heif_image/heif[heifs_image/heif-sequence[htm,html,shtml_text/html[ico_image/x-icon[icns_image/x-icns[ics,ifb_text/calendar[iges,igs_model/iges[ink,inkml_application/inkml+xml[ipa_application/octet-stream[java_text/x-java-source[jp2,jpg2_image/jp2[jpeg,jpe,jpg_image/jpeg[jpf,jpx_image/jpx[jpm,jpgm_image/jpm[jpgv_video/jpeg[jph_image/jph[js,mjs_text/javascript[json_application/json[json5_application/json5[jsonld_application/ld+json[jsx_text/jsx[jxl_image/jxl[jxr_image/jxr[ktx_image/ktx[ktx2_image/ktx2[less_text/less[m1v,m2v,mpe,mpeg,mpg_video/mpeg[m4a_audio/mp4[m4v_video/x-m4v[md,markdown_text/markdown[mid,midi,kar,rmi_audio/midi[mkv_video/x-matroska[mp2,mp2a,mp3,mpga,m3a,m2a_audio/mpeg[mp4,mp4v,mpg4_video/mp4[mp4a_audio/mp4[mp4s,m4p_application/mp4[odp_application/vnd.oasis.opendocument.presentation[oda_application/oda[ods_application/vnd.oasis.opendocument.spreadsheet[odt_application/vnd.oasis.opendocument.text[oga,ogg,opus,spx_audio/ogg[ogv_video/ogg[ogx_application/ogg[otf_font/otf[p12,pfx_application/x-pkcs12[pdf_application/pdf[pem_application/x-pem-file[php_text/x-php[png_image/png[ppt_application/vnd.ms-powerpoint[pptx_application/vnd.openxmlformats-officedocument.presentationml.presentation[pskcxml_application/pskc+xml[psd_image/vnd.adobe.photoshop[py_text/x-python[qt,mov_video/quicktime[rar_application/vnd.rar[rdf_application/rdf+xml[rtf_text/rtf[sass_text/x-sass[scss_text/x-scss[sgm,sgml_text/sgml[sh_application/x-sh[svg,svgz_image/svg+xml[swf_application/x-shockwave-flash[tar_application/x-tar[tif,tiff_image/tiff[toml_application/toml[ts_video/mp2t[tsx_text/tsx[tsv_text/tab-separated-values[ttc_font/collection[ttf_font/ttf[vtt_text/vtt[wasm_application/wasm[wav_audio/wav[weba_audio/webm[webm_video/webm[webmanifest_application/manifest+json[webp_image/webp[wma_audio/x-ms-wma[wmv_video/x-ms-wmv[woff_font/woff[woff2_font/woff2[xls_application/vnd.ms-excel[xlsx_application/vnd.openxmlformats-officedocument.spreadsheetml.sheet[xml_application/xml[xz_application/x-xz[yaml,yml_text/yaml[zip_application/zip\";\nvar mimeTypesMap = new Map(\n  mimeTypes.split(\"[\").flatMap((mime) => {\n    const [extensions, mimeType] = mime.split(\"_\");\n    return extensions.split(\",\").map((ext) => [ext, mimeType]);\n  })\n);\n\n// src/get-file-mime-type.ts\nfunction getFileMimeType(name) {\n  const extension = name.split(\".\").pop();\n  return extension ? mimeTypesMap.get(extension) || null : null;\n}\n\n// src/is-valid-file-type.ts\nfunction isFileAccepted(file, accept) {\n  if (file && accept) {\n    const types = Array.isArray(accept) ? accept : typeof accept === \"string\" ? accept.split(\",\") : [];\n    if (types.length === 0) return true;\n    const fileName = file.name || \"\";\n    const mimeType = (file.type || getFileMimeType(fileName) || \"\").toLowerCase();\n    const baseMimeType = mimeType.replace(/\\/.*$/, \"\");\n    return types.some((type) => {\n      const validType = type.trim().toLowerCase();\n      if (validType.charAt(0) === \".\") {\n        return fileName.toLowerCase().endsWith(validType);\n      }\n      if (validType.endsWith(\"/*\")) {\n        return baseMimeType === validType.replace(/\\/.*$/, \"\");\n      }\n      return mimeType === validType;\n    });\n  }\n  return true;\n}\nfunction isValidFileType(file, accept) {\n  const isAcceptable = file.type === \"application/x-moz-file\" || isFileAccepted(file, accept);\n  return [isAcceptable, isAcceptable ? null : \"FILE_INVALID_TYPE\"];\n}\n\nexport { dataURItoBlob, downloadFile, getAcceptAttrString, getFileDataUrl, getFileEntries, getFileMimeType, getTotalFileSize, isFileEqual, isValidFileSize, isValidFileType };\n", "import { createAnatomy } from '@zag-js/anatomy';\nimport { raf, addDomEvent, getWindow, contains, getEventTarget, dataAttr, visuallyHiddenStyle } from '@zag-js/dom-query';\nimport { getAcceptAttrString, isFileEqual, isValidFileType, isValidFileSize, getFileEntries } from '@zag-js/file-utils';\nimport { formatBytes } from '@zag-js/i18n-utils';\nimport { createProps } from '@zag-js/types';\nimport { warn, callAll, createSplitProps, hash, flatArray } from '@zag-js/utils';\nimport { createMachine } from '@zag-js/core';\n\n// src/file-upload.anatomy.ts\nvar anatomy = createAnatomy(\"file-upload\").parts(\n  \"root\",\n  \"dropzone\",\n  \"item\",\n  \"itemDeleteTrigger\",\n  \"itemGroup\",\n  \"itemName\",\n  \"itemPreview\",\n  \"itemPreviewImage\",\n  \"itemSizeText\",\n  \"label\",\n  \"trigger\",\n  \"clearTrigger\"\n);\nvar parts = anatomy.build();\nvar getRootId = (ctx) => ctx.ids?.root ?? `file:${ctx.id}`;\nvar getDropzoneId = (ctx) => ctx.ids?.dropzone ?? `file:${ctx.id}:dropzone`;\nvar getHiddenInputId = (ctx) => ctx.ids?.hiddenInput ?? `file:${ctx.id}:input`;\nvar getTriggerId = (ctx) => ctx.ids?.trigger ?? `file:${ctx.id}:trigger`;\nvar getLabelId = (ctx) => ctx.ids?.label ?? `file:${ctx.id}:label`;\nvar getItemId = (ctx, id) => ctx.ids?.item?.(id) ?? `file:${ctx.id}:item:${id}`;\nvar getItemNameId = (ctx, id) => ctx.ids?.itemName?.(id) ?? `file:${ctx.id}:item-name:${id}`;\nvar getItemSizeTextId = (ctx, id) => ctx.ids?.itemSizeText?.(id) ?? `file:${ctx.id}:item-size:${id}`;\nvar getItemPreviewId = (ctx, id) => ctx.ids?.itemPreview?.(id) ?? `file:${ctx.id}:item-preview:${id}`;\nvar getItemDeleteTriggerId = (ctx, id) => ctx.ids?.itemDeleteTrigger?.(id) ?? `file:${ctx.id}:item-delete:${id}`;\nvar getFileId = (file) => hash(`${file.name}-${file.size}`);\nvar getRootEl = (ctx) => ctx.getById(getRootId(ctx));\nvar getHiddenInputEl = (ctx) => ctx.getById(getHiddenInputId(ctx));\nvar getDropzoneEl = (ctx) => ctx.getById(getDropzoneId(ctx));\nfunction isEventWithFiles(event) {\n  const target = getEventTarget(event);\n  if (!event.dataTransfer) return !!target && \"files\" in target;\n  return event.dataTransfer.types.some((type) => {\n    return type === \"Files\" || type === \"application/x-moz-file\";\n  });\n}\nfunction isFilesWithinRange(ctx, incomingCount, currentAcceptedFiles) {\n  const { prop, computed } = ctx;\n  if (!computed(\"multiple\") && incomingCount > 1) return false;\n  if (!computed(\"multiple\") && incomingCount + currentAcceptedFiles.length === 2) return true;\n  if (incomingCount + currentAcceptedFiles.length > prop(\"maxFiles\")) return false;\n  return true;\n}\nfunction getEventFiles(ctx, files, currentAcceptedFiles = [], currentRejectedFiles = []) {\n  const { prop, computed } = ctx;\n  const acceptedFiles = [];\n  const rejectedFiles = [];\n  const validateParams = {\n    acceptedFiles: currentAcceptedFiles,\n    rejectedFiles: currentRejectedFiles\n  };\n  files.forEach((file) => {\n    const [accepted, acceptError] = isValidFileType(file, computed(\"acceptAttr\"));\n    const [sizeMatch, sizeError] = isValidFileSize(file, prop(\"minFileSize\"), prop(\"maxFileSize\"));\n    const validateErrors = prop(\"validate\")?.(file, validateParams);\n    const valid = validateErrors ? validateErrors.length === 0 : true;\n    if (accepted && sizeMatch && valid) {\n      acceptedFiles.push(file);\n    } else {\n      const errors = [acceptError, sizeError];\n      if (!valid) errors.push(...validateErrors ?? []);\n      rejectedFiles.push({ file, errors: errors.filter(Boolean) });\n    }\n  });\n  if (!isFilesWithinRange(ctx, acceptedFiles.length, currentAcceptedFiles)) {\n    acceptedFiles.forEach((file) => {\n      rejectedFiles.push({ file, errors: [\"TOO_MANY_FILES\"] });\n    });\n    acceptedFiles.splice(0);\n  }\n  return {\n    acceptedFiles,\n    rejectedFiles\n  };\n}\nfunction setInputFiles(inputEl, files) {\n  const win = getWindow(inputEl);\n  try {\n    if (\"DataTransfer\" in win) {\n      const dataTransfer = new win.DataTransfer();\n      files.forEach((file) => {\n        dataTransfer.items.add(file);\n      });\n      inputEl.files = dataTransfer.files;\n    }\n  } catch {\n  }\n}\n\n// src/file-upload.connect.ts\nvar DEFAULT_ITEM_TYPE = \"accepted\";\nvar INTERACTIVE_SELECTOR = \"button, a[href], input:not([type='file']), select, textarea, [tabindex], [contenteditable]\";\nfunction isInteractiveTarget(element, container) {\n  if (!element || element.getAttribute(\"type\") === \"file\") return false;\n  const interactive = element.closest(INTERACTIVE_SELECTOR);\n  return interactive != container && contains(container, interactive);\n}\nfunction connect(service, normalize) {\n  const { state, send, prop, computed, scope, context } = service;\n  const disabled = !!prop(\"disabled\");\n  const readOnly = !!prop(\"readOnly\");\n  const required = !!prop(\"required\");\n  const allowDrop = prop(\"allowDrop\");\n  const translations = prop(\"translations\");\n  const dragging = state.matches(\"dragging\");\n  const focused = state.matches(\"focused\") && !disabled;\n  const acceptedFiles = context.get(\"acceptedFiles\");\n  const maxFiles = prop(\"maxFiles\");\n  return {\n    dragging,\n    focused,\n    disabled,\n    readOnly,\n    transforming: context.get(\"transforming\"),\n    maxFilesReached: acceptedFiles.length >= maxFiles,\n    remainingFiles: Math.max(0, maxFiles - acceptedFiles.length),\n    openFilePicker() {\n      if (disabled || readOnly) return;\n      send({ type: \"OPEN\" });\n    },\n    deleteFile(file, type = DEFAULT_ITEM_TYPE) {\n      if (disabled || readOnly) return;\n      send({ type: \"FILE.DELETE\", file, itemType: type });\n    },\n    acceptedFiles,\n    rejectedFiles: context.get(\"rejectedFiles\"),\n    setFiles(files) {\n      if (disabled || readOnly) return;\n      send({ type: \"FILES.SET\", files, count: files.length });\n    },\n    clearRejectedFiles() {\n      if (disabled || readOnly) return;\n      send({ type: \"REJECTED_FILES.CLEAR\" });\n    },\n    clearFiles() {\n      if (disabled || readOnly) return;\n      send({ type: \"FILES.CLEAR\" });\n    },\n    getFileSize(file) {\n      return formatBytes(file.size, prop(\"locale\"));\n    },\n    createFileUrl(file, cb) {\n      const win = scope.getWin();\n      const url = win.URL.createObjectURL(file);\n      cb(url);\n      return () => win.URL.revokeObjectURL(url);\n    },\n    setClipboardFiles(dt) {\n      if (disabled || readOnly) return false;\n      const items = Array.from(dt?.items ?? []);\n      const files = items.reduce((acc, item) => {\n        if (item.kind !== \"file\") return acc;\n        const file = item.getAsFile();\n        if (!file) return acc;\n        return [...acc, file];\n      }, []);\n      if (!files.length) return false;\n      send({ type: \"FILE.SELECT\", files });\n      return true;\n    },\n    getRootProps() {\n      return normalize.element({\n        ...parts.root.attrs,\n        dir: prop(\"dir\"),\n        id: getRootId(scope),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-readonly\": dataAttr(readOnly),\n        \"data-dragging\": dataAttr(dragging)\n      });\n    },\n    getDropzoneProps(props2 = {}) {\n      return normalize.element({\n        ...parts.dropzone.attrs,\n        dir: prop(\"dir\"),\n        id: getDropzoneId(scope),\n        tabIndex: disabled || readOnly || props2.disableClick ? void 0 : 0,\n        role: props2.disableClick ? \"application\" : \"button\",\n        \"aria-label\": translations.dropzone,\n        \"aria-disabled\": disabled,\n        \"aria-readonly\": readOnly,\n        \"data-invalid\": dataAttr(prop(\"invalid\")),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-readonly\": dataAttr(readOnly),\n        \"data-dragging\": dataAttr(dragging),\n        onKeyDown(event) {\n          if (disabled || readOnly) return;\n          if (event.defaultPrevented) return;\n          const target = getEventTarget(event);\n          if (!contains(event.currentTarget, target)) return;\n          if (isInteractiveTarget(target, event.currentTarget)) return;\n          if (props2.disableClick) return;\n          if (event.key !== \"Enter\" && event.key !== \" \") return;\n          send({ type: \"DROPZONE.CLICK\", src: \"keydown\" });\n        },\n        onClick(event) {\n          if (disabled || readOnly) return;\n          if (event.defaultPrevented) return;\n          if (props2.disableClick) return;\n          const target = getEventTarget(event);\n          if (!contains(event.currentTarget, target)) return;\n          if (isInteractiveTarget(target, event.currentTarget)) return;\n          if (event.currentTarget.localName === \"label\") {\n            event.preventDefault();\n          }\n          send({ type: \"DROPZONE.CLICK\" });\n        },\n        onDragOver(event) {\n          if (disabled || readOnly) return;\n          if (!allowDrop) return;\n          event.preventDefault();\n          event.stopPropagation();\n          try {\n            event.dataTransfer.dropEffect = \"copy\";\n          } catch {\n          }\n          const hasFiles = isEventWithFiles(event);\n          if (!hasFiles) return;\n          const count = event.dataTransfer.items.length;\n          send({ type: \"DROPZONE.DRAG_OVER\", count });\n        },\n        onDragLeave(event) {\n          if (disabled || readOnly) return;\n          if (!allowDrop) return;\n          if (contains(event.currentTarget, event.relatedTarget)) return;\n          send({ type: \"DROPZONE.DRAG_LEAVE\" });\n        },\n        onDrop(event) {\n          if (disabled || readOnly) return;\n          if (allowDrop) {\n            event.preventDefault();\n            event.stopPropagation();\n          }\n          const hasFiles = isEventWithFiles(event);\n          if (!hasFiles) return;\n          getFileEntries(event.dataTransfer.items, prop(\"directory\")).then((files) => {\n            send({ type: \"DROPZONE.DROP\", files: flatArray(files) });\n          });\n        },\n        onFocus() {\n          if (disabled || readOnly) return;\n          send({ type: \"DROPZONE.FOCUS\" });\n        },\n        onBlur() {\n          if (disabled || readOnly) return;\n          send({ type: \"DROPZONE.BLUR\" });\n        }\n      });\n    },\n    getTriggerProps() {\n      return normalize.button({\n        ...parts.trigger.attrs,\n        dir: prop(\"dir\"),\n        id: getTriggerId(scope),\n        disabled: disabled || readOnly,\n        \"data-disabled\": dataAttr(disabled),\n        \"data-readonly\": dataAttr(readOnly),\n        \"data-invalid\": dataAttr(prop(\"invalid\")),\n        type: \"button\",\n        onClick(event) {\n          if (disabled || readOnly) return;\n          if (contains(getDropzoneEl(scope), event.currentTarget)) {\n            event.stopPropagation();\n          }\n          send({ type: \"OPEN\" });\n        }\n      });\n    },\n    getHiddenInputProps() {\n      return normalize.input({\n        id: getHiddenInputId(scope),\n        tabIndex: -1,\n        disabled: disabled || readOnly,\n        type: \"file\",\n        required: prop(\"required\"),\n        capture: prop(\"capture\"),\n        name: prop(\"name\"),\n        accept: computed(\"acceptAttr\"),\n        webkitdirectory: prop(\"directory\") ? \"\" : void 0,\n        multiple: computed(\"multiple\") || prop(\"maxFiles\") > 1,\n        onClick(event) {\n          event.stopPropagation();\n          event.currentTarget.value = \"\";\n        },\n        onInput(event) {\n          if (disabled || readOnly) return;\n          const { files } = event.currentTarget;\n          send({ type: \"FILE.SELECT\", files: files ? Array.from(files) : [] });\n        },\n        style: visuallyHiddenStyle\n      });\n    },\n    getItemGroupProps(props2 = {}) {\n      const { type = DEFAULT_ITEM_TYPE } = props2;\n      return normalize.element({\n        ...parts.itemGroup.attrs,\n        dir: prop(\"dir\"),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-type\": type\n      });\n    },\n    getItemProps(props2) {\n      const { file, type = DEFAULT_ITEM_TYPE } = props2;\n      return normalize.element({\n        ...parts.item.attrs,\n        dir: prop(\"dir\"),\n        id: getItemId(scope, getFileId(file)),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-type\": type\n      });\n    },\n    getItemNameProps(props2) {\n      const { file, type = DEFAULT_ITEM_TYPE } = props2;\n      return normalize.element({\n        ...parts.itemName.attrs,\n        dir: prop(\"dir\"),\n        id: getItemNameId(scope, getFileId(file)),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-type\": type\n      });\n    },\n    getItemSizeTextProps(props2) {\n      const { file, type = DEFAULT_ITEM_TYPE } = props2;\n      return normalize.element({\n        ...parts.itemSizeText.attrs,\n        dir: prop(\"dir\"),\n        id: getItemSizeTextId(scope, getFileId(file)),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-type\": type\n      });\n    },\n    getItemPreviewProps(props2) {\n      const { file, type = DEFAULT_ITEM_TYPE } = props2;\n      return normalize.element({\n        ...parts.itemPreview.attrs,\n        dir: prop(\"dir\"),\n        id: getItemPreviewId(scope, getFileId(file)),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-type\": type\n      });\n    },\n    getItemPreviewImageProps(props2) {\n      const { file, url, type = DEFAULT_ITEM_TYPE } = props2;\n      const isImage = file.type.startsWith(\"image/\");\n      if (!isImage) {\n        throw new Error(\"Preview Image is only supported for image files\");\n      }\n      return normalize.img({\n        ...parts.itemPreviewImage.attrs,\n        alt: translations.itemPreview?.(file),\n        src: url,\n        \"data-disabled\": dataAttr(disabled),\n        \"data-type\": type\n      });\n    },\n    getItemDeleteTriggerProps(props2) {\n      const { file, type = DEFAULT_ITEM_TYPE } = props2;\n      return normalize.button({\n        ...parts.itemDeleteTrigger.attrs,\n        dir: prop(\"dir\"),\n        id: getItemDeleteTriggerId(scope, getFileId(file)),\n        type: \"button\",\n        disabled: disabled || readOnly,\n        \"data-disabled\": dataAttr(disabled),\n        \"data-readonly\": dataAttr(readOnly),\n        \"data-type\": type,\n        \"aria-label\": translations.deleteFile?.(file),\n        onClick() {\n          if (disabled || readOnly) return;\n          send({ type: \"FILE.DELETE\", file, itemType: type });\n        }\n      });\n    },\n    getLabelProps() {\n      return normalize.label({\n        ...parts.label.attrs,\n        dir: prop(\"dir\"),\n        id: getLabelId(scope),\n        htmlFor: getHiddenInputId(scope),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-required\": dataAttr(required)\n      });\n    },\n    getClearTriggerProps() {\n      return normalize.button({\n        ...parts.clearTrigger.attrs,\n        dir: prop(\"dir\"),\n        type: \"button\",\n        disabled: disabled || readOnly,\n        hidden: acceptedFiles.length === 0,\n        \"data-disabled\": dataAttr(disabled),\n        \"data-readonly\": dataAttr(readOnly),\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          if (disabled || readOnly) return;\n          send({ type: \"FILES.CLEAR\" });\n        }\n      });\n    }\n  };\n}\nvar machine = createMachine({\n  props({ props: props2 }) {\n    return {\n      minFileSize: 0,\n      maxFileSize: Number.POSITIVE_INFINITY,\n      maxFiles: 1,\n      allowDrop: true,\n      preventDocumentDrop: true,\n      defaultAcceptedFiles: [],\n      ...props2,\n      translations: {\n        dropzone: \"dropzone\",\n        itemPreview: (file) => `preview of ${file.name}`,\n        deleteFile: (file) => `delete file ${file.name}`,\n        ...props2.translations\n      }\n    };\n  },\n  initialState() {\n    return \"idle\";\n  },\n  context({ prop, bindable, getContext }) {\n    return {\n      acceptedFiles: bindable(() => ({\n        defaultValue: prop(\"defaultAcceptedFiles\"),\n        value: prop(\"acceptedFiles\"),\n        isEqual: (a, b) => a.length === b?.length && a.every((file, i) => isFileEqual(file, b[i])),\n        hash(value) {\n          return value.map((file) => `${file.name}-${file.size}`).join(\",\");\n        },\n        onChange(value) {\n          const ctx = getContext();\n          prop(\"onFileAccept\")?.({ files: value });\n          prop(\"onFileChange\")?.({ acceptedFiles: value, rejectedFiles: ctx.get(\"rejectedFiles\") });\n        }\n      })),\n      rejectedFiles: bindable(() => ({\n        defaultValue: [],\n        isEqual: (a, b) => a.length === b?.length && a.every((file, i) => isFileEqual(file.file, b[i].file)),\n        onChange(value) {\n          const ctx = getContext();\n          prop(\"onFileReject\")?.({ files: value });\n          prop(\"onFileChange\")?.({ acceptedFiles: ctx.get(\"acceptedFiles\"), rejectedFiles: value });\n        }\n      })),\n      transforming: bindable(() => ({\n        defaultValue: false\n      }))\n    };\n  },\n  computed: {\n    acceptAttr: ({ prop }) => getAcceptAttrString(prop(\"accept\")),\n    multiple: ({ prop }) => prop(\"maxFiles\") > 1\n  },\n  watch({ track, context, action }) {\n    track([() => context.hash(\"acceptedFiles\")], () => {\n      action([\"syncInputElement\"]);\n    });\n  },\n  on: {\n    \"FILES.SET\": {\n      actions: [\"setFiles\"]\n    },\n    \"FILE.SELECT\": {\n      actions: [\"setEventFiles\"]\n    },\n    \"FILE.DELETE\": {\n      actions: [\"removeFile\"]\n    },\n    \"FILES.CLEAR\": {\n      actions: [\"clearFiles\"]\n    },\n    \"REJECTED_FILES.CLEAR\": {\n      actions: [\"clearRejectedFiles\"]\n    }\n  },\n  effects: [\"preventDocumentDrop\"],\n  states: {\n    idle: {\n      on: {\n        OPEN: {\n          actions: [\"openFilePicker\"]\n        },\n        \"DROPZONE.CLICK\": {\n          actions: [\"openFilePicker\"]\n        },\n        \"DROPZONE.FOCUS\": {\n          target: \"focused\"\n        },\n        \"DROPZONE.DRAG_OVER\": {\n          target: \"dragging\"\n        }\n      }\n    },\n    focused: {\n      on: {\n        \"DROPZONE.BLUR\": {\n          target: \"idle\"\n        },\n        OPEN: {\n          actions: [\"openFilePicker\"]\n        },\n        \"DROPZONE.CLICK\": {\n          actions: [\"openFilePicker\"]\n        },\n        \"DROPZONE.DRAG_OVER\": {\n          target: \"dragging\"\n        }\n      }\n    },\n    dragging: {\n      on: {\n        \"DROPZONE.DROP\": {\n          target: \"idle\",\n          actions: [\"setEventFiles\"]\n        },\n        \"DROPZONE.DRAG_LEAVE\": {\n          target: \"idle\"\n        }\n      }\n    }\n  },\n  implementations: {\n    effects: {\n      preventDocumentDrop({ prop, scope }) {\n        if (!prop(\"preventDocumentDrop\")) return;\n        if (!prop(\"allowDrop\")) return;\n        if (prop(\"disabled\")) return;\n        const doc = scope.getDoc();\n        const onDragOver = (event) => {\n          event?.preventDefault();\n        };\n        const onDrop = (event) => {\n          if (contains(getRootEl(scope), getEventTarget(event))) return;\n          event.preventDefault();\n        };\n        return callAll(addDomEvent(doc, \"dragover\", onDragOver, false), addDomEvent(doc, \"drop\", onDrop, false));\n      }\n    },\n    actions: {\n      syncInputElement({ scope, context }) {\n        queueMicrotask(() => {\n          const inputEl = getHiddenInputEl(scope);\n          if (!inputEl) return;\n          setInputFiles(inputEl, context.get(\"acceptedFiles\"));\n          const win = scope.getWin();\n          inputEl.dispatchEvent(new win.Event(\"change\", { bubbles: true }));\n        });\n      },\n      openFilePicker({ scope }) {\n        raf(() => {\n          getHiddenInputEl(scope)?.click();\n        });\n      },\n      setFiles(params) {\n        const { computed, context, event } = params;\n        const { acceptedFiles, rejectedFiles } = getEventFiles(params, event.files);\n        context.set(\n          \"acceptedFiles\",\n          computed(\"multiple\") ? acceptedFiles : acceptedFiles.length > 0 ? [acceptedFiles[0]] : []\n        );\n        context.set(\"rejectedFiles\", rejectedFiles);\n      },\n      setEventFiles(params) {\n        const { computed, context, event, prop } = params;\n        const currentAcceptedFiles = context.get(\"acceptedFiles\");\n        const currentRejectedFiles = context.get(\"rejectedFiles\");\n        const { acceptedFiles, rejectedFiles } = getEventFiles(\n          params,\n          event.files,\n          currentAcceptedFiles,\n          currentRejectedFiles\n        );\n        const set = (files) => {\n          if (computed(\"multiple\")) {\n            context.set(\"acceptedFiles\", (prev) => [...prev, ...files]);\n            context.set(\"rejectedFiles\", rejectedFiles);\n            return;\n          }\n          if (files.length) {\n            context.set(\"acceptedFiles\", [files[0]]);\n            context.set(\"rejectedFiles\", rejectedFiles);\n            return;\n          }\n          if (rejectedFiles.length) {\n            context.set(\"acceptedFiles\", context.get(\"acceptedFiles\"));\n            context.set(\"rejectedFiles\", rejectedFiles);\n          }\n        };\n        const transform = prop(\"transformFiles\");\n        if (transform) {\n          context.set(\"transforming\", true);\n          transform(acceptedFiles).then(set).catch((err) => {\n            warn(`[zag-js/file-upload] error transforming files\n${err}`);\n          }).finally(() => {\n            context.set(\"transforming\", false);\n          });\n        } else {\n          set(acceptedFiles);\n        }\n      },\n      removeFile({ context, event }) {\n        if (event.itemType === \"rejected\") {\n          const rejectedFiles = context.get(\"rejectedFiles\").filter((item) => !isFileEqual(item.file, event.file));\n          context.set(\"rejectedFiles\", rejectedFiles);\n        } else {\n          const files = context.get(\"acceptedFiles\").filter((file) => !isFileEqual(file, event.file));\n          context.set(\"acceptedFiles\", files);\n        }\n      },\n      clearRejectedFiles({ context }) {\n        context.set(\"rejectedFiles\", []);\n      },\n      clearFiles({ context }) {\n        context.set(\"acceptedFiles\", []);\n        context.set(\"rejectedFiles\", []);\n      }\n    }\n  }\n});\nvar props = createProps()([\n  \"accept\",\n  \"acceptedFiles\",\n  \"allowDrop\",\n  \"capture\",\n  \"defaultAcceptedFiles\",\n  \"dir\",\n  \"directory\",\n  \"disabled\",\n  \"getRootNode\",\n  \"id\",\n  \"ids\",\n  \"invalid\",\n  \"locale\",\n  \"maxFiles\",\n  \"maxFileSize\",\n  \"minFileSize\",\n  \"name\",\n  \"onFileAccept\",\n  \"onFileChange\",\n  \"onFileReject\",\n  \"preventDocumentDrop\",\n  \"readOnly\",\n  \"required\",\n  \"transformFiles\",\n  \"translations\",\n  \"validate\"\n]);\nvar splitProps = createSplitProps(props);\nvar itemProps = createProps()([\"file\", \"type\"]);\nvar splitItemProps = createSplitProps(itemProps);\n\nexport { anatomy, connect, itemProps, machine, props, splitItemProps, splitProps };\n", "import * as fileUpload from \"@zag-js/file-upload\";\nimport type { Direction } from \"@zag-js/types\";\nimport { VanillaMachine, normalizeProps } from \"@zag-js/vanilla\";\n\nimport {\n  Component,\n  generateId,\n  getBoolean,\n  getString,\n  getNumber,\n  renderPart,\n} from \"../lib\";\n\nexport class FileUpload extends Component<fileUpload.Props, fileUpload.Api> {\n  initMachine(props: fileUpload.Props): VanillaMachine<any> {\n    return new VanillaMachine(fileUpload.machine, props);\n  }\n\n  initApi() {\n    return fileUpload.connect(this.machine.service, normalizeProps);\n  }\n\n  render() {\n    [\n      \"root\",\n      \"label\",\n      \"dropzone\",\n      \"hidden-input\",\n      \"trigger\",\n      \"item-group\",\n      \"preview\",\n    ].forEach((part) => renderPart(this.el, part, this.api));\n  }\n}\nexport function initFileUpload(doc: HTMLElement | Document = document) {\n  doc.querySelectorAll<HTMLElement>(\".file-upload-js\").forEach((rootEl) => {\n    const directions = [\"ltr\", \"rtl\"] as const;\n    const fileUploadComponent = new FileUpload(rootEl, {\n      id: generateId(rootEl, \"fileUpload\"),\n      dir: getString<Direction>(rootEl, \"dir\", directions),\n      accept: getString(rootEl, \"accept\"),\n      maxFiles: getNumber(rootEl, \"maxFiles\"),\n      allowDrop: getBoolean(rootEl, \"allowDrop\"),\n      directory: getBoolean(rootEl, \"directory\"),\n      maxFileSize: getNumber(rootEl, \"maxFileSize\"),\n      minFileSize: getNumber(rootEl, \"minFileSize\"),\n      name: getString(rootEl, \"name\"),\n\n      required: getBoolean(rootEl, \"required\"),\n      onFileChange(details) {\n        const eventName = getString(rootEl, \"onFileAccept\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onFileReject(details) {\n        const eventName = getString(rootEl, \"onFileAccept\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onFileAccept(details) {\n        const eventName = getString(rootEl, \"onFileAccept\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n    });\n\n    fileUploadComponent.init();\n  });\n}\n", "import { createAnatomy } from '@zag-js/anatomy';\nimport { raf, isHTMLElement, resizeObserverBorderBox, addDomEvent, trackPointerMove, dataAttr, isLeftClick, getEventTarget, getEventStep, getEventKey } from '@zag-js/dom-query';\nimport { invariant, match, pick, clampValue, ensureProps, createSplitProps, toPx } from '@zag-js/utils';\nimport { clampPoint, clampSize, createRect, subtractPoints, resizeRect, addPoints, getElementRect, isPointEqual, isSizeEqual, getWindowRect, constrainRect } from '@zag-js/rect-utils';\nimport { createGuards, createMachine } from '@zag-js/core';\nimport { proxy, subscribe } from '@zag-js/store';\nimport { createProps } from '@zag-js/types';\n\n// src/floating-panel.anatomy.ts\nvar anatomy = createAnatomy(\"floating-panel\").parts(\n  \"trigger\",\n  \"positioner\",\n  \"content\",\n  \"header\",\n  \"body\",\n  \"title\",\n  \"resizeTrigger\",\n  \"dragTrigger\",\n  \"stageTrigger\",\n  \"closeTrigger\",\n  \"control\"\n);\nvar parts = anatomy.build();\nvar getTriggerId = (ctx) => ctx.ids?.trigger ?? `float:${ctx.id}:trigger`;\nvar getPositionerId = (ctx) => ctx.ids?.positioner ?? `float:${ctx.id}:positioner`;\nvar getContentId = (ctx) => ctx.ids?.content ?? `float:${ctx.id}:content`;\nvar getTitleId = (ctx) => ctx.ids?.title ?? `float:${ctx.id}:title`;\nvar getHeaderId = (ctx) => ctx.ids?.header ?? `float:${ctx.id}:header`;\nvar getTriggerEl = (ctx) => ctx.getById(getTriggerId(ctx));\nvar getPositionerEl = (ctx) => ctx.getById(getPositionerId(ctx));\nvar getContentEl = (ctx) => ctx.getById(getContentId(ctx));\nvar getHeaderEl = (ctx) => ctx.getById(getHeaderId(ctx));\nvar getBoundaryRect = (ctx, boundaryEl, allowOverflow) => {\n  let boundaryRect;\n  if (isHTMLElement(boundaryEl)) {\n    boundaryRect = getElementRect(boundaryEl);\n  } else {\n    boundaryRect = getWindowRect(ctx.getWin());\n  }\n  if (allowOverflow) {\n    boundaryRect = createRect({\n      x: -boundaryRect.width,\n      // empty(left)\n      y: boundaryRect.minY,\n      width: boundaryRect.width * 3,\n      // empty(left) + win + empty(right)\n      height: boundaryRect.height * 2\n      // win + empty(bottom)\n    });\n  }\n  return pick(boundaryRect, [\"x\", \"y\", \"width\", \"height\"]);\n};\n\n// src/get-resize-axis-style.ts\nfunction getResizeAxisStyle(axis) {\n  switch (axis) {\n    case \"n\":\n      return {\n        cursor: \"n-resize\",\n        width: \"100%\",\n        top: 0,\n        left: \"50%\",\n        translate: \"-50%\"\n      };\n    case \"e\":\n      return {\n        cursor: \"e-resize\",\n        height: \"100%\",\n        right: 0,\n        top: \"50%\",\n        translate: \"0 -50%\"\n      };\n    case \"s\":\n      return {\n        cursor: \"s-resize\",\n        width: \"100%\",\n        bottom: 0,\n        left: \"50%\",\n        translate: \"-50%\"\n      };\n    case \"w\":\n      return {\n        cursor: \"w-resize\",\n        height: \"100%\",\n        left: 0,\n        top: \"50%\",\n        translate: \"0 -50%\"\n      };\n    case \"se\":\n      return {\n        cursor: \"se-resize\",\n        bottom: 0,\n        right: 0\n      };\n    case \"sw\":\n      return {\n        cursor: \"sw-resize\",\n        bottom: 0,\n        left: 0\n      };\n    case \"ne\":\n      return {\n        cursor: \"ne-resize\",\n        top: 0,\n        right: 0\n      };\n    case \"nw\":\n      return {\n        cursor: \"nw-resize\",\n        top: 0,\n        left: 0\n      };\n    default:\n      throw new Error(`Invalid axis: ${axis}`);\n  }\n}\n\n// src/floating-panel.connect.ts\nvar validStages = /* @__PURE__ */ new Set([\"minimized\", \"maximized\", \"default\"]);\nfunction connect(service, normalize) {\n  const { state, send, scope, prop, computed, context } = service;\n  const open = state.hasTag(\"open\");\n  const dragging = state.matches(\"open.dragging\");\n  const resizing = state.matches(\"open.resizing\");\n  const isTopmost = context.get(\"isTopmost\");\n  const size = context.get(\"size\");\n  const position = context.get(\"position\");\n  const isMaximized = computed(\"isMaximized\");\n  const isMinimized = computed(\"isMinimized\");\n  const isStaged = computed(\"isStaged\");\n  const canResize = computed(\"canResize\");\n  const canDrag = computed(\"canDrag\");\n  return {\n    open,\n    resizable: prop(\"resizable\"),\n    draggable: prop(\"draggable\"),\n    setOpen(nextOpen) {\n      const open2 = state.hasTag(\"open\");\n      if (open2 === nextOpen) return;\n      send({ type: nextOpen ? \"OPEN\" : \"CLOSE\" });\n    },\n    dragging,\n    resizing,\n    position,\n    size,\n    setPosition(position2) {\n      send({ type: \"SET_POSITION\", position: position2 });\n    },\n    setSize(size2) {\n      send({ type: \"SET_SIZE\", size: size2 });\n    },\n    minimize() {\n      send({ type: \"MINIMIZE\" });\n    },\n    maximize() {\n      send({ type: \"MAXIMIZE\" });\n    },\n    restore() {\n      send({ type: \"RESTORE\" });\n    },\n    getTriggerProps() {\n      return normalize.button({\n        ...parts.trigger.attrs,\n        dir: prop(\"dir\"),\n        type: \"button\",\n        disabled: prop(\"disabled\"),\n        id: getTriggerId(scope),\n        \"data-state\": open ? \"open\" : \"closed\",\n        \"data-dragging\": dataAttr(dragging),\n        \"aria-controls\": getContentId(scope),\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          if (prop(\"disabled\")) return;\n          const open2 = state.hasTag(\"open\");\n          send({ type: open2 ? \"CLOSE\" : \"OPEN\", src: \"trigger\" });\n        }\n      });\n    },\n    getPositionerProps() {\n      return normalize.element({\n        ...parts.positioner.attrs,\n        dir: prop(\"dir\"),\n        id: getPositionerId(scope),\n        style: {\n          \"--width\": toPx(size?.width),\n          \"--height\": toPx(size?.height),\n          \"--x\": toPx(position?.x),\n          \"--y\": toPx(position?.y),\n          position: prop(\"strategy\"),\n          top: \"var(--y)\",\n          left: \"var(--x)\"\n        }\n      });\n    },\n    getContentProps() {\n      return normalize.element({\n        ...parts.content.attrs,\n        dir: prop(\"dir\"),\n        role: \"dialog\",\n        tabIndex: 0,\n        hidden: !open,\n        id: getContentId(scope),\n        \"aria-labelledby\": getTitleId(scope),\n        \"data-state\": open ? \"open\" : \"closed\",\n        \"data-dragging\": dataAttr(dragging),\n        \"data-topmost\": dataAttr(isTopmost),\n        \"data-behind\": dataAttr(!isTopmost),\n        \"data-minimized\": dataAttr(isMinimized),\n        \"data-maximized\": dataAttr(isMaximized),\n        \"data-staged\": dataAttr(isStaged),\n        style: {\n          width: \"var(--width)\",\n          height: \"var(--height)\",\n          overflow: isMinimized ? \"hidden\" : void 0\n        },\n        onFocus() {\n          send({ type: \"CONTENT_FOCUS\" });\n        },\n        onKeyDown(event) {\n          if (event.defaultPrevented) return;\n          if (event.currentTarget !== getEventTarget(event)) return;\n          const step = getEventStep(event) * prop(\"gridSize\");\n          const keyMap = {\n            Escape() {\n              if (!isTopmost) return;\n              send({ type: \"ESCAPE\" });\n            },\n            ArrowLeft() {\n              send({ type: \"MOVE\", direction: \"left\", step });\n            },\n            ArrowRight() {\n              send({ type: \"MOVE\", direction: \"right\", step });\n            },\n            ArrowUp() {\n              send({ type: \"MOVE\", direction: \"up\", step });\n            },\n            ArrowDown() {\n              send({ type: \"MOVE\", direction: \"down\", step });\n            }\n          };\n          const handler = keyMap[getEventKey(event, { dir: prop(\"dir\") })];\n          if (handler) {\n            event.preventDefault();\n            handler(event);\n          }\n        }\n      });\n    },\n    getCloseTriggerProps() {\n      return normalize.button({\n        ...parts.closeTrigger.attrs,\n        dir: prop(\"dir\"),\n        disabled: prop(\"disabled\"),\n        \"aria-label\": \"Close Window\",\n        type: \"button\",\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          send({ type: \"CLOSE\" });\n        }\n      });\n    },\n    getStageTriggerProps(props2) {\n      if (!validStages.has(props2.stage)) {\n        throw new Error(`[zag-js] Invalid stage: ${props2.stage}. Must be one of: ${Array.from(validStages).join(\", \")}`);\n      }\n      const translations = prop(\"translations\");\n      const actionProps = match(props2.stage, {\n        minimized: () => ({\n          \"aria-label\": translations.minimize,\n          hidden: isStaged\n        }),\n        maximized: () => ({\n          \"aria-label\": translations.maximize,\n          hidden: isStaged\n        }),\n        default: () => ({\n          \"aria-label\": translations.restore,\n          hidden: !isStaged\n        })\n      });\n      return normalize.button({\n        ...parts.stageTrigger.attrs,\n        dir: prop(\"dir\"),\n        disabled: prop(\"disabled\"),\n        ...actionProps,\n        type: \"button\",\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          if (!prop(\"resizable\")) return;\n          const type = match(props2.stage, {\n            minimized: () => \"MINIMIZE\",\n            maximized: () => \"MAXIMIZE\",\n            default: () => \"RESTORE\"\n          });\n          send({ type: type.toUpperCase() });\n        }\n      });\n    },\n    getResizeTriggerProps(props2) {\n      return normalize.element({\n        ...parts.resizeTrigger.attrs,\n        dir: prop(\"dir\"),\n        \"data-disabled\": dataAttr(!canResize),\n        \"data-axis\": props2.axis,\n        onPointerDown(event) {\n          if (!canResize) return;\n          if (!isLeftClick(event)) return;\n          event.currentTarget.setPointerCapture(event.pointerId);\n          event.stopPropagation();\n          send({\n            type: \"RESIZE_START\",\n            axis: props2.axis,\n            position: { x: event.clientX, y: event.clientY }\n          });\n        },\n        onPointerUp(event) {\n          if (!canResize) return;\n          const node = event.currentTarget;\n          if (node.hasPointerCapture(event.pointerId)) {\n            node.releasePointerCapture(event.pointerId);\n          }\n        },\n        style: {\n          position: \"absolute\",\n          touchAction: \"none\",\n          ...getResizeAxisStyle(props2.axis)\n        }\n      });\n    },\n    getDragTriggerProps() {\n      return normalize.element({\n        ...parts.dragTrigger.attrs,\n        dir: prop(\"dir\"),\n        \"data-disabled\": dataAttr(!canDrag),\n        onPointerDown(event) {\n          if (!canDrag) return;\n          if (!isLeftClick(event)) return;\n          const target = getEventTarget(event);\n          if (target?.closest(\"button\") || target?.closest(\"[data-no-drag]\")) {\n            return;\n          }\n          event.currentTarget.setPointerCapture(event.pointerId);\n          event.stopPropagation();\n          send({\n            type: \"DRAG_START\",\n            pointerId: event.pointerId,\n            position: { x: event.clientX, y: event.clientY }\n          });\n        },\n        onPointerUp(event) {\n          if (!canDrag) return;\n          const node = event.currentTarget;\n          if (node.hasPointerCapture(event.pointerId)) {\n            node.releasePointerCapture(event.pointerId);\n          }\n        },\n        onDoubleClick(event) {\n          if (event.defaultPrevented) return;\n          if (!prop(\"resizable\")) return;\n          send({ type: isMaximized ? \"RESTORE\" : \"MAXIMIZE\" });\n        },\n        style: {\n          WebkitUserSelect: \"none\",\n          userSelect: \"none\",\n          touchAction: \"none\",\n          cursor: \"move\"\n        }\n      });\n    },\n    getControlProps() {\n      return normalize.element({\n        ...parts.control.attrs,\n        dir: prop(\"dir\"),\n        \"data-disabled\": dataAttr(prop(\"disabled\")),\n        \"data-stage\": context.get(\"stage\"),\n        \"data-minimized\": dataAttr(isMinimized),\n        \"data-maximized\": dataAttr(isMaximized),\n        \"data-staged\": dataAttr(isStaged)\n      });\n    },\n    getTitleProps() {\n      return normalize.element({\n        ...parts.title.attrs,\n        dir: prop(\"dir\"),\n        id: getTitleId(scope)\n      });\n    },\n    getHeaderProps() {\n      return normalize.element({\n        ...parts.header.attrs,\n        dir: prop(\"dir\"),\n        id: getHeaderId(scope),\n        \"data-dragging\": dataAttr(dragging),\n        \"data-topmost\": dataAttr(isTopmost),\n        \"data-behind\": dataAttr(!isTopmost),\n        \"data-minimized\": dataAttr(isMinimized),\n        \"data-maximized\": dataAttr(isMaximized),\n        \"data-staged\": dataAttr(isStaged)\n      });\n    },\n    getBodyProps() {\n      return normalize.element({\n        ...parts.body.attrs,\n        dir: prop(\"dir\"),\n        \"data-dragging\": dataAttr(dragging),\n        \"data-minimized\": dataAttr(isMinimized),\n        \"data-maximized\": dataAttr(isMaximized),\n        \"data-staged\": dataAttr(isStaged),\n        hidden: isMinimized\n      });\n    }\n  };\n}\nvar panelStack = proxy({\n  stack: [],\n  count() {\n    return this.stack.length;\n  },\n  add(panelId) {\n    if (this.stack.includes(panelId)) return;\n    this.stack.push(panelId);\n  },\n  remove(panelId) {\n    const index = this.stack.indexOf(panelId);\n    if (index < 0) return;\n    this.stack.splice(index, 1);\n  },\n  bringToFront(id) {\n    this.remove(id);\n    this.add(id);\n  },\n  isTopmost(id) {\n    return this.stack[this.stack.length - 1] === id;\n  },\n  indexOf(id) {\n    return this.stack.indexOf(id);\n  }\n});\n\n// src/floating-panel.machine.ts\nvar { not, and } = createGuards();\nvar defaultTranslations = {\n  minimize: \"Minimize window\",\n  maximize: \"Maximize window\",\n  restore: \"Restore window\"\n};\nvar machine = createMachine({\n  props({ props: props2 }) {\n    ensureProps(props2, [\"id\"], \"floating-panel\");\n    return {\n      strategy: \"fixed\",\n      gridSize: 1,\n      defaultSize: { width: 320, height: 240 },\n      defaultPosition: { x: 300, y: 100 },\n      allowOverflow: true,\n      resizable: true,\n      draggable: true,\n      ...props2,\n      hasSpecifiedPosition: !!props2.defaultPosition || !!props2.position,\n      translations: {\n        ...defaultTranslations,\n        ...props2.translations\n      }\n    };\n  },\n  initialState({ prop }) {\n    const open = prop(\"open\") || prop(\"defaultOpen\");\n    return open ? \"open\" : \"closed\";\n  },\n  context({ prop, bindable }) {\n    return {\n      size: bindable(() => ({\n        defaultValue: prop(\"defaultSize\"),\n        value: prop(\"size\"),\n        isEqual: isSizeEqual,\n        sync: true,\n        hash(v) {\n          return `W:${v.width} H:${v.height}`;\n        },\n        onChange(value) {\n          prop(\"onSizeChange\")?.({ size: value });\n        }\n      })),\n      position: bindable(() => ({\n        defaultValue: prop(\"defaultPosition\"),\n        value: prop(\"position\"),\n        isEqual: isPointEqual,\n        sync: true,\n        hash(v) {\n          return `X:${v.x} Y:${v.y}`;\n        },\n        onChange(value) {\n          prop(\"onPositionChange\")?.({ position: value });\n        }\n      })),\n      stage: bindable(() => ({\n        defaultValue: \"default\",\n        onChange(value) {\n          prop(\"onStageChange\")?.({ stage: value });\n        }\n      })),\n      lastEventPosition: bindable(() => ({\n        defaultValue: null\n      })),\n      prevPosition: bindable(() => ({\n        defaultValue: null\n      })),\n      prevSize: bindable(() => ({\n        defaultValue: null\n      })),\n      isTopmost: bindable(() => ({\n        defaultValue: void 0\n      }))\n    };\n  },\n  computed: {\n    isMaximized: ({ context }) => context.get(\"stage\") === \"maximized\",\n    isMinimized: ({ context }) => context.get(\"stage\") === \"minimized\",\n    isStaged: ({ context }) => context.get(\"stage\") !== \"default\",\n    canResize: ({ context, prop }) => prop(\"resizable\") && !prop(\"disabled\") && context.get(\"stage\") === \"default\",\n    canDrag: ({ prop, computed }) => prop(\"draggable\") && !prop(\"disabled\") && !computed(\"isMaximized\")\n  },\n  watch({ track, context, action, prop }) {\n    track([() => context.hash(\"position\")], () => {\n      action([\"setPositionStyle\"]);\n    });\n    track([() => context.hash(\"size\")], () => {\n      action([\"setSizeStyle\"]);\n    });\n    track([() => prop(\"open\")], () => {\n      action([\"toggleVisibility\"]);\n    });\n  },\n  effects: [\"trackPanelStack\"],\n  on: {\n    CONTENT_FOCUS: {\n      actions: [\"bringToFrontOfPanelStack\"]\n    },\n    SET_POSITION: {\n      actions: [\"setPosition\"]\n    },\n    SET_SIZE: {\n      actions: [\"setSize\"]\n    }\n  },\n  states: {\n    closed: {\n      tags: [\"closed\"],\n      on: {\n        \"CONTROLLED.OPEN\": {\n          target: \"open\",\n          actions: [\"setAnchorPosition\", \"setPositionStyle\", \"setSizeStyle\", \"focusContentEl\"]\n        },\n        OPEN: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"invokeOnOpen\", \"setAnchorPosition\", \"setPositionStyle\", \"setSizeStyle\", \"focusContentEl\"]\n          }\n        ]\n      }\n    },\n    open: {\n      tags: [\"open\"],\n      entry: [\"bringToFrontOfPanelStack\"],\n      effects: [\"trackBoundaryRect\"],\n      on: {\n        DRAG_START: {\n          guard: not(\"isMaximized\"),\n          target: \"open.dragging\",\n          actions: [\"setPrevPosition\"]\n        },\n        RESIZE_START: {\n          guard: not(\"isMinimized\"),\n          target: \"open.resizing\",\n          actions: [\"setPrevSize\"]\n        },\n        \"CONTROLLED.CLOSE\": {\n          target: \"closed\",\n          actions: [\"resetRect\", \"focusTriggerEl\"]\n        },\n        CLOSE: [\n          {\n            guard: \"isOpenControlled\",\n            target: \"closed\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            target: \"closed\",\n            actions: [\"invokeOnClose\", \"resetRect\", \"focusTriggerEl\"]\n          }\n        ],\n        ESCAPE: [\n          {\n            guard: and(\"isOpenControlled\", \"closeOnEsc\"),\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            guard: \"closeOnEsc\",\n            target: \"closed\",\n            actions: [\"invokeOnClose\", \"resetRect\", \"focusTriggerEl\"]\n          }\n        ],\n        MINIMIZE: {\n          actions: [\"setMinimized\"]\n        },\n        MAXIMIZE: {\n          actions: [\"setMaximized\"]\n        },\n        RESTORE: {\n          actions: [\"setRestored\"]\n        },\n        MOVE: {\n          actions: [\"setPositionFromKeyboard\"]\n        }\n      }\n    },\n    \"open.dragging\": {\n      tags: [\"open\"],\n      effects: [\"trackPointerMove\"],\n      exit: [\"clearPrevPosition\"],\n      on: {\n        DRAG: {\n          actions: [\"setPosition\"]\n        },\n        DRAG_END: {\n          target: \"open\",\n          actions: [\"invokeOnDragEnd\"]\n        },\n        \"CONTROLLED.CLOSE\": {\n          target: \"closed\",\n          actions: [\"resetRect\"]\n        },\n        CLOSE: [\n          {\n            guard: \"isOpenControlled\",\n            target: \"closed\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            target: \"closed\",\n            actions: [\"invokeOnClose\", \"resetRect\"]\n          }\n        ],\n        ESCAPE: {\n          target: \"open\"\n        }\n      }\n    },\n    \"open.resizing\": {\n      tags: [\"open\"],\n      effects: [\"trackPointerMove\"],\n      exit: [\"clearPrevSize\"],\n      on: {\n        DRAG: {\n          actions: [\"setSize\"]\n        },\n        DRAG_END: {\n          target: \"open\",\n          actions: [\"invokeOnResizeEnd\"]\n        },\n        \"CONTROLLED.CLOSE\": {\n          target: \"closed\",\n          actions: [\"resetRect\"]\n        },\n        CLOSE: [\n          {\n            guard: \"isOpenControlled\",\n            target: \"closed\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            target: \"closed\",\n            actions: [\"invokeOnClose\", \"resetRect\"]\n          }\n        ],\n        ESCAPE: {\n          target: \"open\"\n        }\n      }\n    }\n  },\n  implementations: {\n    guards: {\n      closeOnEsc: ({ prop }) => !!prop(\"closeOnEscape\"),\n      isMaximized: ({ context }) => context.get(\"stage\") === \"maximized\",\n      isMinimized: ({ context }) => context.get(\"stage\") === \"minimized\",\n      isOpenControlled: ({ prop }) => prop(\"open\") != void 0\n    },\n    effects: {\n      trackPointerMove({ scope, send, event: evt, prop }) {\n        const doc = scope.getDoc();\n        const boundaryEl = prop(\"getBoundaryEl\")?.();\n        const boundaryRect = getBoundaryRect(scope, boundaryEl, false);\n        return trackPointerMove(doc, {\n          onPointerMove({ point, event }) {\n            const { altKey, shiftKey } = event;\n            let x = clampValue(point.x, boundaryRect.x, boundaryRect.x + boundaryRect.width);\n            let y = clampValue(point.y, boundaryRect.y, boundaryRect.y + boundaryRect.height);\n            send({ type: \"DRAG\", position: { x, y }, axis: evt.axis, altKey, shiftKey });\n          },\n          onPointerUp() {\n            send({ type: \"DRAG_END\" });\n          }\n        });\n      },\n      trackBoundaryRect({ context, scope, prop, computed }) {\n        const win = scope.getWin();\n        let skip = true;\n        const exec = () => {\n          if (skip) {\n            skip = false;\n            return;\n          }\n          const boundaryEl2 = prop(\"getBoundaryEl\")?.();\n          let boundaryRect = getBoundaryRect(scope, boundaryEl2, false);\n          if (!computed(\"isMaximized\")) {\n            const rect = { ...context.get(\"position\"), ...context.get(\"size\") };\n            boundaryRect = constrainRect(rect, boundaryRect);\n          }\n          context.set(\"size\", pick(boundaryRect, [\"width\", \"height\"]));\n          context.set(\"position\", pick(boundaryRect, [\"x\", \"y\"]));\n        };\n        const boundaryEl = prop(\"getBoundaryEl\")?.();\n        if (isHTMLElement(boundaryEl)) {\n          return resizeObserverBorderBox.observe(boundaryEl, exec);\n        }\n        return addDomEvent(win, \"resize\", exec);\n      },\n      trackPanelStack({ context, scope }) {\n        const unsub = subscribe(panelStack, () => {\n          context.set(\"isTopmost\", panelStack.isTopmost(scope.id));\n          const contentEl = getContentEl(scope);\n          if (!contentEl) return;\n          const index = panelStack.indexOf(scope.id);\n          if (index === -1) return;\n          contentEl.style.setProperty(\"--z-index\", `${index + 1}`);\n        });\n        return () => {\n          panelStack.remove(scope.id);\n          unsub();\n        };\n      }\n    },\n    actions: {\n      setAnchorPosition({ context, prop, scope }) {\n        if (prop(\"hasSpecifiedPosition\")) return;\n        const hasPrevRect = context.get(\"prevPosition\") || context.get(\"prevSize\");\n        if (prop(\"persistRect\") && hasPrevRect) return;\n        raf(() => {\n          const triggerRect = getTriggerEl(scope);\n          const boundaryRect = getBoundaryRect(scope, prop(\"getBoundaryEl\")?.(), false);\n          let anchorPosition = prop(\"getAnchorPosition\")?.({\n            triggerRect: triggerRect ? DOMRect.fromRect(getElementRect(triggerRect)) : null,\n            boundaryRect: DOMRect.fromRect(boundaryRect)\n          });\n          if (!anchorPosition) {\n            const size = context.get(\"size\");\n            anchorPosition = {\n              x: boundaryRect.x + (boundaryRect.width - size.width) / 2,\n              y: boundaryRect.y + (boundaryRect.height - size.height) / 2\n            };\n          }\n          if (!anchorPosition) return;\n          context.set(\"position\", anchorPosition);\n        });\n      },\n      setPrevPosition({ context, event }) {\n        context.set(\"prevPosition\", { ...context.get(\"position\") });\n        context.set(\"lastEventPosition\", event.position);\n      },\n      clearPrevPosition({ context, prop }) {\n        if (!prop(\"persistRect\")) context.set(\"prevPosition\", null);\n        context.set(\"lastEventPosition\", null);\n      },\n      setPosition({ context, event, prop, scope }) {\n        let diff = subtractPoints(event.position, context.get(\"lastEventPosition\"));\n        diff.x = Math.round(diff.x / prop(\"gridSize\")) * prop(\"gridSize\");\n        diff.y = Math.round(diff.y / prop(\"gridSize\")) * prop(\"gridSize\");\n        const prevPosition = context.get(\"prevPosition\");\n        if (!prevPosition) return;\n        let position = addPoints(prevPosition, diff);\n        const boundaryEl = prop(\"getBoundaryEl\")?.();\n        const boundaryRect = getBoundaryRect(scope, boundaryEl, prop(\"allowOverflow\"));\n        position = clampPoint(position, context.get(\"size\"), boundaryRect);\n        context.set(\"position\", position);\n      },\n      setPositionStyle({ scope, context }) {\n        const el = getPositionerEl(scope);\n        const position = context.get(\"position\");\n        el?.style.setProperty(\"--x\", `${position.x}px`);\n        el?.style.setProperty(\"--y\", `${position.y}px`);\n      },\n      resetRect({ context, prop }) {\n        context.set(\"stage\", \"default\");\n        if (!prop(\"persistRect\")) {\n          context.set(\"position\", context.initial(\"position\"));\n          context.set(\"size\", context.initial(\"size\"));\n        }\n      },\n      setPrevSize({ context, event }) {\n        context.set(\"prevSize\", { ...context.get(\"size\") });\n        context.set(\"prevPosition\", { ...context.get(\"position\") });\n        context.set(\"lastEventPosition\", event.position);\n      },\n      clearPrevSize({ context }) {\n        context.set(\"prevSize\", null);\n        context.set(\"prevPosition\", null);\n        context.set(\"lastEventPosition\", null);\n      },\n      setSize({ context, event, scope, prop }) {\n        const prevSize = context.get(\"prevSize\");\n        const prevPosition = context.get(\"prevPosition\");\n        const lastEventPosition = context.get(\"lastEventPosition\");\n        if (!prevSize || !prevPosition || !lastEventPosition) return;\n        const prevRect = createRect({ ...prevPosition, ...prevSize });\n        const offset = subtractPoints(event.position, lastEventPosition);\n        const nextRect = resizeRect(prevRect, offset, event.axis, {\n          scalingOriginMode: event.altKey ? \"center\" : \"extent\",\n          lockAspectRatio: !!prop(\"lockAspectRatio\") || event.shiftKey\n        });\n        let nextSize = pick(nextRect, [\"width\", \"height\"]);\n        let nextPosition = pick(nextRect, [\"x\", \"y\"]);\n        const boundaryEl = prop(\"getBoundaryEl\")?.();\n        const boundaryRect = getBoundaryRect(scope, boundaryEl, false);\n        nextSize = clampSize(nextSize, prop(\"minSize\"), prop(\"maxSize\"));\n        nextSize = clampSize(nextSize, prop(\"minSize\"), boundaryRect);\n        context.set(\"size\", nextSize);\n        if (nextPosition) {\n          const point = clampPoint(nextPosition, nextSize, boundaryRect);\n          context.set(\"position\", point);\n        }\n      },\n      setSizeStyle({ scope, context }) {\n        queueMicrotask(() => {\n          const el = getPositionerEl(scope);\n          const size = context.get(\"size\");\n          el?.style.setProperty(\"--width\", `${size.width}px`);\n          el?.style.setProperty(\"--height\", `${size.height}px`);\n        });\n      },\n      setMaximized({ context, prop, scope }) {\n        context.set(\"stage\", \"maximized\");\n        context.set(\"prevSize\", context.get(\"size\"));\n        context.set(\"prevPosition\", context.get(\"position\"));\n        const boundaryEl = prop(\"getBoundaryEl\")?.();\n        const boundaryRect = getBoundaryRect(scope, boundaryEl, false);\n        context.set(\"position\", pick(boundaryRect, [\"x\", \"y\"]));\n        context.set(\"size\", pick(boundaryRect, [\"height\", \"width\"]));\n      },\n      setMinimized({ context, scope }) {\n        context.set(\"stage\", \"minimized\");\n        context.set(\"prevSize\", context.get(\"size\"));\n        context.set(\"prevPosition\", context.get(\"position\"));\n        const headerEl = getHeaderEl(scope);\n        if (!headerEl) return;\n        const size = {\n          ...context.get(\"size\"),\n          height: headerEl?.offsetHeight\n        };\n        context.set(\"size\", size);\n      },\n      setRestored({ context, prop, scope }) {\n        const boundaryRect = getBoundaryRect(scope, prop(\"getBoundaryEl\")?.(), false);\n        context.set(\"stage\", \"default\");\n        const prevSize = context.get(\"prevSize\");\n        if (prevSize) {\n          let nextSize = prevSize;\n          nextSize = clampSize(nextSize, prop(\"minSize\"), prop(\"maxSize\"));\n          nextSize = clampSize(nextSize, prop(\"minSize\"), boundaryRect);\n          context.set(\"size\", nextSize);\n          context.set(\"prevSize\", null);\n        }\n        if (context.get(\"prevPosition\")) {\n          let nextPosition = context.get(\"prevPosition\");\n          nextPosition = clampPoint(nextPosition, context.get(\"size\"), boundaryRect);\n          context.set(\"position\", nextPosition);\n          context.set(\"prevPosition\", null);\n        }\n      },\n      setPositionFromKeyboard({ context, event, prop, scope }) {\n        invariant(event.step == null, \"step is required\");\n        const position = context.get(\"position\");\n        const step = event.step;\n        let nextPosition = match(event.direction, {\n          left: { x: position.x - step, y: position.y },\n          right: { x: position.x + step, y: position.y },\n          up: { x: position.x, y: position.y - step },\n          down: { x: position.x, y: position.y + step }\n        });\n        const boundaryEl = prop(\"getBoundaryEl\")?.();\n        const boundaryRect = getBoundaryRect(scope, boundaryEl, false);\n        nextPosition = clampPoint(nextPosition, context.get(\"size\"), boundaryRect);\n        context.set(\"position\", nextPosition);\n      },\n      bringToFrontOfPanelStack({ prop }) {\n        panelStack.bringToFront(prop(\"id\"));\n      },\n      invokeOnOpen({ prop }) {\n        prop(\"onOpenChange\")?.({ open: true });\n      },\n      invokeOnClose({ prop }) {\n        prop(\"onOpenChange\")?.({ open: false });\n      },\n      invokeOnDragEnd({ context, prop }) {\n        prop(\"onPositionChangeEnd\")?.({ position: context.get(\"position\") });\n      },\n      invokeOnResizeEnd({ context, prop }) {\n        prop(\"onSizeChangeEnd\")?.({ size: context.get(\"size\") });\n      },\n      focusTriggerEl({ scope }) {\n        raf(() => {\n          getTriggerEl(scope)?.focus();\n        });\n      },\n      focusContentEl({ scope }) {\n        raf(() => {\n          getContentEl(scope)?.focus();\n        });\n      },\n      toggleVisibility({ send, prop, event }) {\n        send({ type: prop(\"open\") ? \"CONTROLLED.OPEN\" : \"CONTROLLED.CLOSE\", previousEvent: event });\n      }\n    }\n  }\n});\nvar props = createProps()([\n  \"allowOverflow\",\n  \"closeOnEscape\",\n  \"defaultOpen\",\n  \"defaultPosition\",\n  \"defaultSize\",\n  \"dir\",\n  \"disabled\",\n  \"draggable\",\n  \"getAnchorPosition\",\n  \"getBoundaryEl\",\n  \"getRootNode\",\n  \"gridSize\",\n  \"id\",\n  \"ids\",\n  \"lockAspectRatio\",\n  \"maxSize\",\n  \"minSize\",\n  \"onOpenChange\",\n  \"onPositionChange\",\n  \"onPositionChangeEnd\",\n  \"onSizeChange\",\n  \"onSizeChangeEnd\",\n  \"onStageChange\",\n  \"open\",\n  \"persistRect\",\n  \"position\",\n  \"resizable\",\n  \"size\",\n  \"strategy\",\n  \"translations\"\n]);\nvar splitProps = createSplitProps(props);\nvar resizeTriggerProps = createProps()([\"axis\"]);\nvar splitResizeTriggerProps = createSplitProps(resizeTriggerProps);\nvar resizeTriggerAxes = [\"n\", \"e\", \"s\", \"w\", \"ne\", \"nw\", \"se\", \"sw\"];\n\nexport { anatomy, connect, machine, props, resizeTriggerAxes, resizeTriggerProps, splitProps, splitResizeTriggerProps };\n", "import * as floatingPanel from \"@zag-js/floating-panel\";\nimport type { Direction } from \"@zag-js/types\";\nimport { VanillaMachine, normalizeProps } from \"@zag-js/vanilla\";\n\nimport {\n  Component,\n  getString,\n  getBoolean,\n  getNumber,\n  generateId,\n  renderPart,\n} from \"../lib\";\nexport class FloatingPanel extends Component<\n  floatingPanel.Props,\n  floatingPanel.Api\n> {\n  initMachine(props: floatingPanel.Props): VanillaMachine<any> {\n    return new VanillaMachine(floatingPanel.machine, props);\n  }\n  initApi(): floatingPanel.Api {\n    return floatingPanel.connect(this.machine.service, normalizeProps);\n  }\n  render() {\n    const parts = [\n      \"trigger\",\n      \"positioner\",\n      \"content\",\n      \"drag-trigger\",\n      \"header\",\n      \"controls\",\n      \"body\",\n      \"close-trigger\",\n    ];\n    for (const part of parts) renderPart(this.el, part, this.api);\n    const stageItems = [\"stage-trigger\"];\n    for (const item of stageItems)\n      renderPart(this.el, item, this.api, { stage: \"string\" });\n    const resizeItems = [\"resize-trigger\"];\n    for (const item of resizeItems)\n      renderPart(this.el, item, this.api, { axis: \"string\" });\n  }\n}\nexport function initFloatingPanel(\n  doc: HTMLElement | Document = document,\n): void {\n  doc.querySelectorAll<HTMLElement>(\".floating-panel-js\").forEach((rootEl) => {\n    const strategies = [\"absolute\", \"fixed\"] as const;\n    const directions = [\"ltr\", \"rtl\"] as const;\n    const defaultPositionX = getNumber(rootEl, \"defaultPositionX\");\n    const defaultPositionY = getNumber(rootEl, \"defaultPositionY\");\n    const defaultSizeWidth = getNumber(rootEl, \"defaultSizeWidth\");\n    const defaultSizeHeight = getNumber(rootEl, \"defaultSizeHeight\");\n    const positionX = getNumber(rootEl, \"positionX\");\n    const positionY = getNumber(rootEl, \"positionY\");\n    const maxSizeWidth = getNumber(rootEl, \"maxSizeWidth\");\n    const maxSizeHeight = getNumber(rootEl, \"maxSizeHeight\");\n    const minSizeWidth = getNumber(rootEl, \"minSizeWidth\");\n    const minSizeHeight = getNumber(rootEl, \"minSizeHeight\");\n    const floatingPanel = new FloatingPanel(rootEl, {\n      id: generateId(rootEl, \"floatingPanel\"),\n      allowOverflow: getBoolean(rootEl, \"allowOverflow\"),\n      lockAspectRatio: getBoolean(rootEl, \"lockAspectRatio\"),\n      strategy: getString(rootEl, \"strategy\", strategies),\n      closeOnEscape: getBoolean(rootEl, \"closeOnEscape\"),\n      defaultOpen: getBoolean(rootEl, \"defaultOpen\"),\n      defaultPosition:\n        defaultPositionX !== undefined && defaultPositionY !== undefined\n          ? { x: defaultPositionX, y: defaultPositionY }\n          : undefined,\n      defaultSize:\n        defaultSizeWidth !== undefined && defaultSizeHeight !== undefined\n          ? { width: defaultSizeWidth, height: defaultSizeHeight }\n          : undefined,\n      position:\n        positionX !== undefined && positionY !== undefined\n          ? { x: positionX, y: positionY }\n          : undefined,\n      maxSize:\n        maxSizeWidth !== undefined && maxSizeHeight !== undefined\n          ? { width: maxSizeWidth, height: maxSizeHeight }\n          : undefined,\n      minSize:\n        minSizeWidth !== undefined && minSizeHeight !== undefined\n          ? { width: minSizeWidth, height: minSizeHeight }\n          : undefined,\n      dir: getString<Direction>(rootEl, \"dir\", directions),\n      disabled: getBoolean(rootEl, \"disabled\"),\n      draggable: getBoolean(rootEl, \"draggable\"),\n      gridSize: getNumber(rootEl, \"closeOnEscape\"),\n      open: getBoolean(rootEl, \"open\"),\n      persistRect: getBoolean(rootEl, \"persistRect\"),\n      resizable: getBoolean(rootEl, \"resizable\"),\n      onOpenChange(details) {\n        const eventName = getString(rootEl, \"onOpenChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onPositionChange(details) {\n        const eventName = getString(rootEl, \"onPositionChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onPositionChangeEnd(details) {\n        const eventName = getString(rootEl, \"onPositionChangeEnd\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onSizeChange(details) {\n        const eventName = getString(rootEl, \"onSizeChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onSizeChangeEnd(details) {\n        const eventName = getString(rootEl, \"onSizeChangeEnd\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onStageChange(details) {\n        const eventName = getString(rootEl, \"onStageChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n    });\n    floatingPanel.init();\n  });\n}\n", "import { createAnatomy } from '@zag-js/anatomy';\nimport { Selection, ListCollection, GridCollection, isGridCollection } from '@zag-js/collection';\nimport { raf, observeAttributes, getByTypeahead, scrollIntoView, dataAttr, contains, getEventTarget, getEventKey, isEditableElement, ariaAttr, isCtrlOrMetaKey, isComposingEvent, getNativeEvent } from '@zag-js/dom-query';\nimport { isEqual, createSplitProps, ensure } from '@zag-js/utils';\nimport { setup } from '@zag-js/core';\nimport { trackFocusVisible, getInteractionModality } from '@zag-js/focus-visible';\nimport { createProps } from '@zag-js/types';\n\n// src/listbox.anatomy.ts\nvar anatomy = createAnatomy(\"listbox\").parts(\n  \"label\",\n  \"input\",\n  \"item\",\n  \"itemText\",\n  \"itemIndicator\",\n  \"itemGroup\",\n  \"itemGroupLabel\",\n  \"content\",\n  \"root\",\n  \"valueText\"\n);\nvar parts = anatomy.build();\nvar collection = (options) => {\n  return new ListCollection(options);\n};\ncollection.empty = () => {\n  return new ListCollection({ items: [] });\n};\nvar gridCollection = (options) => {\n  return new GridCollection(options);\n};\ngridCollection.empty = () => {\n  return new GridCollection({ items: [], columnCount: 0 });\n};\n\n// src/listbox.dom.ts\nvar getRootId = (ctx) => ctx.ids?.root ?? `select:${ctx.id}`;\nvar getContentId = (ctx) => ctx.ids?.content ?? `select:${ctx.id}:content`;\nvar getLabelId = (ctx) => ctx.ids?.label ?? `select:${ctx.id}:label`;\nvar getItemId = (ctx, id) => ctx.ids?.item?.(id) ?? `select:${ctx.id}:option:${id}`;\nvar getItemGroupId = (ctx, id) => ctx.ids?.itemGroup?.(id) ?? `select:${ctx.id}:optgroup:${id}`;\nvar getItemGroupLabelId = (ctx, id) => ctx.ids?.itemGroupLabel?.(id) ?? `select:${ctx.id}:optgroup-label:${id}`;\nvar getContentEl = (ctx) => ctx.getById(getContentId(ctx));\nvar getItemEl = (ctx, id) => ctx.getById(getItemId(ctx, id));\n\n// src/listbox.connect.ts\nfunction connect(service, normalize) {\n  const { context, prop, scope, computed, send, refs } = service;\n  const disabled = prop(\"disabled\");\n  const collection2 = prop(\"collection\");\n  const layout = isGridCollection(collection2) ? \"grid\" : \"list\";\n  const focused = context.get(\"focused\");\n  const focusVisible = refs.get(\"focusVisible\") && focused;\n  const inputState = refs.get(\"inputState\");\n  const value = context.get(\"value\");\n  const selectedItems = context.get(\"selectedItems\");\n  const highlightedValue = context.get(\"highlightedValue\");\n  const highlightedItem = context.get(\"highlightedItem\");\n  const isTypingAhead = computed(\"isTypingAhead\");\n  const interactive = computed(\"isInteractive\");\n  const ariaActiveDescendant = highlightedValue ? getItemId(scope, highlightedValue) : void 0;\n  function getItemState(props2) {\n    const itemDisabled = collection2.getItemDisabled(props2.item);\n    const value2 = collection2.getItemValue(props2.item);\n    ensure(value2, () => `[zag-js] No value found for item ${JSON.stringify(props2.item)}`);\n    const highlighted = highlightedValue === value2;\n    return {\n      value: value2,\n      disabled: Boolean(disabled || itemDisabled),\n      focused: highlighted && focused,\n      focusVisible: highlighted && focusVisible,\n      // deprecated\n      highlighted: highlighted && (inputState.focused ? focused : focusVisible),\n      selected: context.get(\"value\").includes(value2)\n    };\n  }\n  return {\n    empty: value.length === 0,\n    highlightedItem,\n    highlightedValue,\n    clearHighlightedValue() {\n      send({ type: \"HIGHLIGHTED_VALUE.SET\", value: null });\n    },\n    selectedItems,\n    hasSelectedItems: computed(\"hasSelectedItems\"),\n    value,\n    valueAsString: computed(\"valueAsString\"),\n    collection: collection2,\n    disabled: !!disabled,\n    selectValue(value2) {\n      send({ type: \"ITEM.SELECT\", value: value2 });\n    },\n    setValue(value2) {\n      send({ type: \"VALUE.SET\", value: value2 });\n    },\n    selectAll() {\n      if (!computed(\"multiple\")) {\n        throw new Error(\"[zag-js] Cannot select all items in a single-select listbox\");\n      }\n      send({ type: \"VALUE.SET\", value: collection2.getValues() });\n    },\n    highlightValue(value2) {\n      send({ type: \"HIGHLIGHTED_VALUE.SET\", value: value2 });\n    },\n    clearValue(value2) {\n      if (value2) {\n        send({ type: \"ITEM.CLEAR\", value: value2 });\n      } else {\n        send({ type: \"VALUE.CLEAR\" });\n      }\n    },\n    getItemState,\n    getRootProps() {\n      return normalize.element({\n        ...parts.root.attrs,\n        dir: prop(\"dir\"),\n        id: getRootId(scope),\n        \"data-orientation\": prop(\"orientation\"),\n        \"data-disabled\": dataAttr(disabled)\n      });\n    },\n    getInputProps(props2 = {}) {\n      return normalize.input({\n        ...parts.input.attrs,\n        dir: prop(\"dir\"),\n        disabled,\n        \"data-disabled\": dataAttr(disabled),\n        autoComplete: \"off\",\n        autoCorrect: \"off\",\n        \"aria-haspopup\": \"listbox\",\n        \"aria-controls\": getContentId(scope),\n        \"aria-autocomplete\": \"list\",\n        \"aria-activedescendant\": ariaActiveDescendant,\n        spellCheck: false,\n        enterKeyHint: \"go\",\n        onFocus() {\n          queueMicrotask(() => {\n            send({ type: \"INPUT.FOCUS\", autoHighlight: !!props2?.autoHighlight });\n          });\n        },\n        onBlur() {\n          send({ type: \"CONTENT.BLUR\", src: \"input\" });\n        },\n        onInput(event) {\n          if (!props2?.autoHighlight) return;\n          if (event.currentTarget.value.trim()) return;\n          queueMicrotask(() => {\n            send({ type: \"HIGHLIGHTED_VALUE.SET\", value: null });\n          });\n        },\n        onKeyDown(event) {\n          if (event.defaultPrevented) return;\n          if (isComposingEvent(event)) return;\n          const nativeEvent = getNativeEvent(event);\n          const forwardEvent = () => {\n            event.preventDefault();\n            const win = scope.getWin();\n            const keyboardEvent = new win.KeyboardEvent(nativeEvent.type, nativeEvent);\n            getContentEl(scope)?.dispatchEvent(keyboardEvent);\n          };\n          switch (nativeEvent.key) {\n            case \"ArrowLeft\":\n            case \"ArrowRight\": {\n              if (!isGridCollection(collection2)) return;\n              if (event.ctrlKey) return;\n              forwardEvent();\n            }\n            case \"Home\":\n            case \"End\": {\n              if (highlightedValue == null && event.shiftKey) return;\n              forwardEvent();\n            }\n            case \"ArrowDown\":\n            case \"ArrowUp\": {\n              forwardEvent();\n              break;\n            }\n            case \"Enter\":\n              if (highlightedValue != null) {\n                event.preventDefault();\n                send({ type: \"ITEM.CLICK\", value: highlightedValue });\n              }\n              break;\n          }\n        }\n      });\n    },\n    getLabelProps() {\n      return normalize.element({\n        dir: prop(\"dir\"),\n        id: getLabelId(scope),\n        ...parts.label.attrs,\n        \"data-disabled\": dataAttr(disabled)\n      });\n    },\n    getValueTextProps() {\n      return normalize.element({\n        ...parts.valueText.attrs,\n        dir: prop(\"dir\"),\n        \"data-disabled\": dataAttr(disabled)\n      });\n    },\n    getItemProps(props2) {\n      const itemState = getItemState(props2);\n      return normalize.element({\n        id: getItemId(scope, itemState.value),\n        role: \"option\",\n        ...parts.item.attrs,\n        dir: prop(\"dir\"),\n        \"data-value\": itemState.value,\n        \"aria-selected\": itemState.selected,\n        \"data-selected\": dataAttr(itemState.selected),\n        \"data-layout\": layout,\n        \"data-state\": itemState.selected ? \"checked\" : \"unchecked\",\n        \"data-orientation\": prop(\"orientation\"),\n        \"data-highlighted\": dataAttr(itemState.highlighted),\n        \"data-disabled\": dataAttr(itemState.disabled),\n        \"aria-disabled\": ariaAttr(itemState.disabled),\n        onPointerMove(event) {\n          if (!props2.highlightOnHover) return;\n          if (itemState.disabled || event.pointerType !== \"mouse\") return;\n          if (itemState.highlighted) return;\n          send({ type: \"ITEM.POINTER_MOVE\", value: itemState.value });\n        },\n        onMouseDown(event) {\n          event.preventDefault();\n          getContentEl(scope)?.focus();\n        },\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          if (itemState.disabled) return;\n          send({\n            type: \"ITEM.CLICK\",\n            value: itemState.value,\n            shiftKey: event.shiftKey,\n            anchorValue: highlightedValue,\n            metaKey: isCtrlOrMetaKey(event)\n          });\n        }\n      });\n    },\n    getItemTextProps(props2) {\n      const itemState = getItemState(props2);\n      return normalize.element({\n        ...parts.itemText.attrs,\n        \"data-state\": itemState.selected ? \"checked\" : \"unchecked\",\n        \"data-disabled\": dataAttr(itemState.disabled),\n        \"data-highlighted\": dataAttr(itemState.highlighted)\n      });\n    },\n    getItemIndicatorProps(props2) {\n      const itemState = getItemState(props2);\n      return normalize.element({\n        ...parts.itemIndicator.attrs,\n        \"aria-hidden\": true,\n        \"data-state\": itemState.selected ? \"checked\" : \"unchecked\",\n        hidden: !itemState.selected\n      });\n    },\n    getItemGroupLabelProps(props2) {\n      const { htmlFor } = props2;\n      return normalize.element({\n        ...parts.itemGroupLabel.attrs,\n        id: getItemGroupLabelId(scope, htmlFor),\n        dir: prop(\"dir\"),\n        role: \"presentation\"\n      });\n    },\n    getItemGroupProps(props2) {\n      const { id } = props2;\n      return normalize.element({\n        ...parts.itemGroup.attrs,\n        \"data-disabled\": dataAttr(disabled),\n        \"data-orientation\": prop(\"orientation\"),\n        \"data-empty\": dataAttr(collection2.size === 0),\n        id: getItemGroupId(scope, id),\n        \"aria-labelledby\": getItemGroupLabelId(scope, id),\n        role: \"group\",\n        dir: prop(\"dir\")\n      });\n    },\n    getContentProps() {\n      return normalize.element({\n        dir: prop(\"dir\"),\n        id: getContentId(scope),\n        role: \"listbox\",\n        ...parts.content.attrs,\n        \"data-activedescendant\": ariaActiveDescendant,\n        \"aria-activedescendant\": ariaActiveDescendant,\n        \"data-orientation\": prop(\"orientation\"),\n        \"aria-multiselectable\": computed(\"multiple\") ? true : void 0,\n        \"aria-labelledby\": getLabelId(scope),\n        tabIndex: 0,\n        \"data-layout\": layout,\n        \"data-empty\": dataAttr(collection2.size === 0),\n        style: {\n          \"--column-count\": isGridCollection(collection2) ? collection2.columnCount : 1\n        },\n        onFocus() {\n          send({ type: \"CONTENT.FOCUS\" });\n        },\n        onBlur() {\n          send({ type: \"CONTENT.BLUR\" });\n        },\n        onKeyDown(event) {\n          if (!interactive) return;\n          if (!contains(event.currentTarget, getEventTarget(event))) return;\n          const shiftKey = event.shiftKey;\n          const keyMap = {\n            ArrowUp(event2) {\n              let nextValue = null;\n              if (isGridCollection(collection2) && highlightedValue) {\n                nextValue = collection2.getPreviousRowValue(highlightedValue);\n              } else if (highlightedValue) {\n                nextValue = collection2.getPreviousValue(highlightedValue);\n              }\n              if (!nextValue && (prop(\"loopFocus\") || !highlightedValue)) {\n                nextValue = collection2.lastValue;\n              }\n              if (!nextValue) return;\n              event2.preventDefault();\n              send({ type: \"NAVIGATE\", value: nextValue, shiftKey, anchorValue: highlightedValue });\n            },\n            ArrowDown(event2) {\n              let nextValue = null;\n              if (isGridCollection(collection2) && highlightedValue) {\n                nextValue = collection2.getNextRowValue(highlightedValue);\n              } else if (highlightedValue) {\n                nextValue = collection2.getNextValue(highlightedValue);\n              }\n              if (!nextValue && (prop(\"loopFocus\") || !highlightedValue)) {\n                nextValue = collection2.firstValue;\n              }\n              if (!nextValue) return;\n              event2.preventDefault();\n              send({ type: \"NAVIGATE\", value: nextValue, shiftKey, anchorValue: highlightedValue });\n            },\n            ArrowLeft() {\n              if (!isGridCollection(collection2) && prop(\"orientation\") === \"vertical\") return;\n              let nextValue = highlightedValue ? collection2.getPreviousValue(highlightedValue) : null;\n              if (!nextValue && prop(\"loopFocus\")) {\n                nextValue = collection2.lastValue;\n              }\n              if (!nextValue) return;\n              event.preventDefault();\n              send({ type: \"NAVIGATE\", value: nextValue, shiftKey, anchorValue: highlightedValue });\n            },\n            ArrowRight() {\n              if (!isGridCollection(collection2) && prop(\"orientation\") === \"vertical\") return;\n              let nextValue = highlightedValue ? collection2.getNextValue(highlightedValue) : null;\n              if (!nextValue && prop(\"loopFocus\")) {\n                nextValue = collection2.firstValue;\n              }\n              if (!nextValue) return;\n              event.preventDefault();\n              send({ type: \"NAVIGATE\", value: nextValue, shiftKey, anchorValue: highlightedValue });\n            },\n            Home(event2) {\n              event2.preventDefault();\n              let nextValue = collection2.firstValue;\n              send({ type: \"NAVIGATE\", value: nextValue, shiftKey, anchorValue: highlightedValue });\n            },\n            End(event2) {\n              event2.preventDefault();\n              let nextValue = collection2.lastValue;\n              send({ type: \"NAVIGATE\", value: nextValue, shiftKey, anchorValue: highlightedValue });\n            },\n            Enter() {\n              send({ type: \"ITEM.CLICK\", value: highlightedValue });\n            },\n            a(event2) {\n              if (isCtrlOrMetaKey(event2) && computed(\"multiple\") && !prop(\"disallowSelectAll\")) {\n                event2.preventDefault();\n                send({ type: \"VALUE.SET\", value: collection2.getValues() });\n              }\n            },\n            Space(event2) {\n              if (isTypingAhead && prop(\"typeahead\")) {\n                send({ type: \"CONTENT.TYPEAHEAD\", key: event2.key });\n              } else {\n                keyMap.Enter?.(event2);\n              }\n            },\n            Escape(event2) {\n              if (prop(\"deselectable\") && value.length > 0) {\n                event2.preventDefault();\n                event2.stopPropagation();\n                send({ type: \"VALUE.CLEAR\" });\n              }\n            }\n          };\n          const exec = keyMap[getEventKey(event)];\n          if (exec) {\n            exec(event);\n            return;\n          }\n          const target = getEventTarget(event);\n          if (isEditableElement(target)) {\n            return;\n          }\n          if (getByTypeahead.isValidEvent(event) && prop(\"typeahead\")) {\n            send({ type: \"CONTENT.TYPEAHEAD\", key: event.key });\n            event.preventDefault();\n          }\n        }\n      });\n    }\n  };\n}\nvar { guards, createMachine } = setup();\nvar { or } = guards;\nvar machine = createMachine({\n  props({ props: props2 }) {\n    return {\n      loopFocus: false,\n      composite: true,\n      defaultValue: [],\n      multiple: false,\n      typeahead: true,\n      collection: collection.empty(),\n      orientation: \"vertical\",\n      selectionMode: \"single\",\n      ...props2\n    };\n  },\n  context({ prop, bindable }) {\n    return {\n      value: bindable(() => ({\n        defaultValue: prop(\"defaultValue\"),\n        value: prop(\"value\"),\n        isEqual,\n        onChange(value) {\n          const items = prop(\"collection\").findMany(value);\n          return prop(\"onValueChange\")?.({ value, items });\n        }\n      })),\n      highlightedValue: bindable(() => ({\n        defaultValue: prop(\"defaultHighlightedValue\") || null,\n        value: prop(\"highlightedValue\"),\n        sync: true,\n        onChange(value) {\n          prop(\"onHighlightChange\")?.({\n            highlightedValue: value,\n            highlightedItem: prop(\"collection\").find(value),\n            highlightedIndex: prop(\"collection\").indexOf(value)\n          });\n        }\n      })),\n      highlightedItem: bindable(() => ({\n        defaultValue: null\n      })),\n      selectedItems: bindable(() => {\n        const value = prop(\"value\") ?? prop(\"defaultValue\") ?? [];\n        const items = prop(\"collection\").findMany(value);\n        return { defaultValue: items };\n      }),\n      focused: bindable(() => ({\n        sync: true,\n        defaultValue: false\n      }))\n    };\n  },\n  refs() {\n    return {\n      typeahead: { ...getByTypeahead.defaultOptions },\n      focusVisible: false,\n      inputState: { autoHighlight: false, focused: false }\n    };\n  },\n  computed: {\n    hasSelectedItems: ({ context }) => context.get(\"value\").length > 0,\n    isTypingAhead: ({ refs }) => refs.get(\"typeahead\").keysSoFar !== \"\",\n    isInteractive: ({ prop }) => !prop(\"disabled\"),\n    selection: ({ context, prop }) => {\n      const selection = new Selection(context.get(\"value\"));\n      selection.selectionMode = prop(\"selectionMode\");\n      selection.deselectable = !!prop(\"deselectable\");\n      return selection;\n    },\n    multiple: ({ prop }) => prop(\"selectionMode\") === \"multiple\" || prop(\"selectionMode\") === \"extended\",\n    valueAsString: ({ context, prop }) => prop(\"collection\").stringifyItems(context.get(\"selectedItems\"))\n  },\n  initialState() {\n    return \"idle\";\n  },\n  watch({ context, prop, track, action }) {\n    track([() => context.get(\"value\").toString()], () => {\n      action([\"syncSelectedItems\"]);\n    });\n    track([() => context.get(\"highlightedValue\")], () => {\n      action([\"syncHighlightedItem\"]);\n    });\n    track([() => prop(\"collection\").toString()], () => {\n      action([\"syncHighlightedValue\"]);\n    });\n  },\n  effects: [\"trackFocusVisible\"],\n  on: {\n    \"HIGHLIGHTED_VALUE.SET\": {\n      actions: [\"setHighlightedItem\"]\n    },\n    \"ITEM.SELECT\": {\n      actions: [\"selectItem\"]\n    },\n    \"ITEM.CLEAR\": {\n      actions: [\"clearItem\"]\n    },\n    \"VALUE.SET\": {\n      actions: [\"setSelectedItems\"]\n    },\n    \"VALUE.CLEAR\": {\n      actions: [\"clearSelectedItems\"]\n    }\n  },\n  states: {\n    idle: {\n      effects: [\"scrollToHighlightedItem\"],\n      on: {\n        \"INPUT.FOCUS\": {\n          actions: [\"setFocused\", \"setInputState\"]\n        },\n        \"CONTENT.FOCUS\": [\n          {\n            guard: or(\"hasSelectedValue\", \"hasHighlightedValue\"),\n            actions: [\"setFocused\"]\n          },\n          {\n            actions: [\"setFocused\", \"setDefaultHighlightedValue\"]\n          }\n        ],\n        \"CONTENT.BLUR\": {\n          actions: [\"clearFocused\", \"clearInputState\"]\n        },\n        \"ITEM.CLICK\": {\n          actions: [\"setHighlightedItem\", \"selectHighlightedItem\"]\n        },\n        \"CONTENT.TYPEAHEAD\": {\n          actions: [\"setFocused\", \"highlightMatchingItem\"]\n        },\n        \"ITEM.POINTER_MOVE\": {\n          actions: [\"highlightItem\"]\n        },\n        \"ITEM.POINTER_LEAVE\": {\n          actions: [\"clearHighlightedItem\"]\n        },\n        NAVIGATE: {\n          actions: [\"setFocused\", \"setHighlightedItem\", \"selectWithKeyboard\"]\n        }\n      }\n    }\n  },\n  implementations: {\n    guards: {\n      hasSelectedValue: ({ context }) => context.get(\"value\").length > 0,\n      hasHighlightedValue: ({ context }) => context.get(\"highlightedValue\") != null\n    },\n    effects: {\n      trackFocusVisible: ({ scope, refs }) => {\n        return trackFocusVisible({\n          root: scope.getRootNode?.(),\n          onChange(details) {\n            refs.set(\"focusVisible\", details.isFocusVisible);\n          }\n        });\n      },\n      scrollToHighlightedItem({ context, prop, scope }) {\n        const exec = (immediate) => {\n          const highlightedValue = context.get(\"highlightedValue\");\n          if (highlightedValue == null) return;\n          const modality = getInteractionModality();\n          if (modality !== \"keyboard\") return;\n          const contentEl2 = getContentEl(scope);\n          const scrollToIndexFn = prop(\"scrollToIndexFn\");\n          if (scrollToIndexFn) {\n            const highlightedIndex = prop(\"collection\").indexOf(highlightedValue);\n            scrollToIndexFn?.({\n              index: highlightedIndex,\n              immediate,\n              getElement() {\n                return getItemEl(scope, highlightedValue);\n              }\n            });\n            return;\n          }\n          const itemEl = getItemEl(scope, highlightedValue);\n          scrollIntoView(itemEl, { rootEl: contentEl2, block: \"nearest\" });\n        };\n        raf(() => exec(true));\n        const contentEl = () => getContentEl(scope);\n        return observeAttributes(contentEl, {\n          defer: true,\n          attributes: [\"data-activedescendant\"],\n          callback() {\n            exec(false);\n          }\n        });\n      }\n    },\n    actions: {\n      selectHighlightedItem({ context, prop, event, computed }) {\n        const value = event.value ?? context.get(\"highlightedValue\");\n        const collection2 = prop(\"collection\");\n        if (value == null || !collection2.has(value)) return;\n        const selection = computed(\"selection\");\n        if (event.shiftKey && computed(\"multiple\") && event.anchorValue) {\n          const next = selection.extendSelection(collection2, event.anchorValue, value);\n          invokeOnSelect(selection, next, prop(\"onSelect\"));\n          context.set(\"value\", Array.from(next));\n        } else {\n          const next = selection.select(collection2, value, event.metaKey);\n          invokeOnSelect(selection, next, prop(\"onSelect\"));\n          context.set(\"value\", Array.from(next));\n        }\n      },\n      selectWithKeyboard({ context, prop, event, computed }) {\n        const selection = computed(\"selection\");\n        const collection2 = prop(\"collection\");\n        if (event.shiftKey && computed(\"multiple\") && event.anchorValue) {\n          const next = selection.extendSelection(collection2, event.anchorValue, event.value);\n          invokeOnSelect(selection, next, prop(\"onSelect\"));\n          context.set(\"value\", Array.from(next));\n          return;\n        }\n        if (prop(\"selectOnHighlight\")) {\n          const next = selection.replaceSelection(collection2, event.value);\n          invokeOnSelect(selection, next, prop(\"onSelect\"));\n          context.set(\"value\", Array.from(next));\n        }\n      },\n      highlightItem({ context, event }) {\n        context.set(\"highlightedValue\", event.value);\n      },\n      highlightMatchingItem({ context, prop, event, refs }) {\n        const value = prop(\"collection\").search(event.key, {\n          state: refs.get(\"typeahead\"),\n          currentValue: context.get(\"highlightedValue\")\n        });\n        if (value == null) return;\n        context.set(\"highlightedValue\", value);\n      },\n      setHighlightedItem({ context, event }) {\n        context.set(\"highlightedValue\", event.value);\n      },\n      clearHighlightedItem({ context }) {\n        context.set(\"highlightedValue\", null);\n      },\n      selectItem({ context, prop, event, computed }) {\n        const collection2 = prop(\"collection\");\n        const selection = computed(\"selection\");\n        const next = selection.select(collection2, event.value);\n        invokeOnSelect(selection, next, prop(\"onSelect\"));\n        context.set(\"value\", Array.from(next));\n      },\n      clearItem({ context, event, computed }) {\n        const selection = computed(\"selection\");\n        const value = selection.deselect(event.value);\n        context.set(\"value\", Array.from(value));\n      },\n      setSelectedItems({ context, event }) {\n        context.set(\"value\", event.value);\n      },\n      clearSelectedItems({ context }) {\n        context.set(\"value\", []);\n      },\n      syncSelectedItems({ context, prop }) {\n        const collection2 = prop(\"collection\");\n        const prevSelectedItems = context.get(\"selectedItems\");\n        const value = context.get(\"value\");\n        const selectedItems = value.map((value2) => {\n          const item = prevSelectedItems.find((item2) => collection2.getItemValue(item2) === value2);\n          return item || collection2.find(value2);\n        });\n        context.set(\"selectedItems\", selectedItems);\n      },\n      syncHighlightedItem({ context, prop }) {\n        const collection2 = prop(\"collection\");\n        const highlightedValue = context.get(\"highlightedValue\");\n        const highlightedItem = highlightedValue ? collection2.find(highlightedValue) : null;\n        context.set(\"highlightedItem\", highlightedItem);\n      },\n      syncHighlightedValue({ context, prop, refs }) {\n        const collection2 = prop(\"collection\");\n        const highlightedValue = context.get(\"highlightedValue\");\n        const { autoHighlight } = refs.get(\"inputState\");\n        if (autoHighlight) {\n          queueMicrotask(() => {\n            context.set(\"highlightedValue\", prop(\"collection\").firstValue ?? null);\n          });\n          return;\n        }\n        if (highlightedValue != null && !collection2.has(highlightedValue)) {\n          queueMicrotask(() => {\n            context.set(\"highlightedValue\", null);\n          });\n        }\n      },\n      setFocused({ context }) {\n        context.set(\"focused\", true);\n      },\n      setDefaultHighlightedValue({ context, prop }) {\n        const collection2 = prop(\"collection\");\n        const firstValue = collection2.firstValue;\n        if (firstValue != null) {\n          context.set(\"highlightedValue\", firstValue);\n        }\n      },\n      clearFocused({ context }) {\n        context.set(\"focused\", false);\n      },\n      setInputState({ refs, event }) {\n        refs.set(\"inputState\", { autoHighlight: !!event.autoHighlight, focused: true });\n      },\n      clearInputState({ refs }) {\n        refs.set(\"inputState\", { autoHighlight: false, focused: false });\n      }\n    }\n  }\n});\nvar diff = (a, b) => {\n  const result = new Set(a);\n  for (const item of b) result.delete(item);\n  return result;\n};\nfunction invokeOnSelect(current, next, onSelect) {\n  const added = diff(next, current);\n  for (const item of added) {\n    onSelect?.({ value: item });\n  }\n}\nvar props = createProps()([\n  \"collection\",\n  \"defaultHighlightedValue\",\n  \"defaultValue\",\n  \"dir\",\n  \"disabled\",\n  \"deselectable\",\n  \"disallowSelectAll\",\n  \"getRootNode\",\n  \"highlightedValue\",\n  \"id\",\n  \"ids\",\n  \"loopFocus\",\n  \"onHighlightChange\",\n  \"onSelect\",\n  \"onValueChange\",\n  \"orientation\",\n  \"scrollToIndexFn\",\n  \"selectionMode\",\n  \"selectOnHighlight\",\n  \"typeahead\",\n  \"value\"\n]);\nvar splitProps = createSplitProps(props);\nvar itemProps = createProps()([\"item\", \"highlightOnHover\"]);\nvar splitItemProps = createSplitProps(itemProps);\nvar itemGroupProps = createProps()([\"id\"]);\nvar splitItemGroupProps = createSplitProps(itemGroupProps);\nvar itemGroupLabelProps = createProps()([\"htmlFor\"]);\nvar splitItemGroupLabelProps = createSplitProps(itemGroupLabelProps);\n\nexport { anatomy, collection, connect, gridCollection, itemGroupLabelProps, itemGroupProps, itemProps, machine, props, splitItemGroupLabelProps, splitItemGroupProps, splitItemProps, splitProps };\n", "import * as listbox from \"@zag-js/listbox\";\nimport type { Direction, Orientation } from \"@zag-js/types\";\nimport { VanillaMachine, normalizeProps } from \"@zag-js/vanilla\";\n\nimport {\n  Component,\n  generateId,\n  renderPart,\n  getString,\n  getStringList,\n  getNumber,\n  getBoolean,\n} from \"../lib\";\n\ninterface ListboxItem {\n  value: string;\n  label?: string;\n  group?: string;\n  disabled?: boolean;\n}\n\ninterface Group {\n  value: string;\n  label?: string;\n}\n\nfunction flattenJsonItems(data: any, parentGroup?: string): ListboxItem[] {\n  if (!data) return [];\n  const items: ListboxItem[] = [];\n\n  if (data.children && Array.isArray(data.children)) {\n    data.children.forEach((child: any) => {\n      items.push(...flattenJsonItems(child, data.name || parentGroup));\n    });\n  } else {\n    // leaf node = actual item\n    items.push({\n      value: data.id,\n      label: data.name,\n      group: parentGroup,\n      disabled: data.disabled,\n    });\n  }\n\n  return items;\n}\n\nfunction loadJsonItems(path: string): ListboxItem[] {\n  try {\n    const script = document.querySelector(\n      `script[type=\"application/json\"][data-listbox=\"${path}\"]`,\n    );\n    if (!script) throw new Error(`No inline JSON script found for ${path}`);\n    const data = JSON.parse(script.textContent || \"{}\");\n    return flattenJsonItems(data);\n  } catch (e) {\n    console.error(\"Failed to load JSON items:\", e);\n    return [];\n  }\n}\n\nfunction getDomGroups(rootEl: HTMLElement): Group[] {\n  const groups: Group[] = [];\n  rootEl.querySelectorAll('[data-part=\"item-group\"]').forEach((el) => {\n    const value = el.getAttribute(\"data-id\") || \"\";\n    groups.push({ value });\n  });\n  return groups;\n}\n\nexport class Listbox extends Component<listbox.Props, listbox.Api> {\n  collection!: listbox.ListCollection<ListboxItem>;\n  items: ListboxItem[] = [];\n  groups: Group[] = [];\n  private domInitialized = false;\n\n  getCollection(items: ListboxItem[], hasGroups: boolean = false) {\n    if (hasGroups) {\n      return listbox.collection({\n        items,\n        itemToValue: (item) => item.value,\n        itemToString: (item) => item.label || item.value,\n        groupBy: (item) => item.group || \"Default\",\n      });\n    }\n    return listbox.collection({\n      items,\n      itemToValue: (item) => item.value,\n      itemToString: (item) => item.label || item.value,\n    });\n  }\n\n  initMachine(props: listbox.Props): VanillaMachine<any> {\n    return new VanillaMachine(listbox.machine, props);\n  }\n\n  initApi(): listbox.Api {\n    return listbox.connect(this.machine.service, normalizeProps);\n  }\n\n  private renderJsonDom() {\n    const rootEl = this.el;\n    if (!rootEl) return;\n\n    let contentEl = rootEl.querySelector<HTMLElement>('[data-part=\"content\"]');\n    if (!contentEl) {\n      contentEl = document.createElement(\"div\");\n      contentEl.setAttribute(\"data-part\", \"content\");\n      rootEl.appendChild(contentEl);\n    } else {\n      contentEl.innerHTML = \"\";\n    }\n    const noIcon = getBoolean(this.el, \"noIcon\");\n\n    const groupMap: Record<string, HTMLElement> = {};\n\n    if (this.groups.length === 0) {\n      const uniqueGroups = new Set<string>();\n      this.items.forEach((item) => {\n        if (item.group) uniqueGroups.add(item.group);\n      });\n      this.groups = Array.from(uniqueGroups).map((value) => ({\n        value,\n        label: value,\n      }));\n    }\n\n    this.groups.forEach((g) => {\n      const groupEl = document.createElement(\"div\");\n      groupEl.setAttribute(\"data-part\", \"item-group\");\n      groupEl.setAttribute(\"data-id\", g.value);\n\n      const labelEl = document.createElement(\"div\");\n      labelEl.setAttribute(\"data-part\", \"item-group-label\");\n      labelEl.setAttribute(\"data-id\", g.value);\n      labelEl.textContent = g.label || g.value;\n\n      contentEl.appendChild(labelEl);\n      contentEl.appendChild(groupEl);\n\n      groupMap[g.value] = groupEl;\n    });\n\n    this.items.forEach((item) => {\n      const itemEl = document.createElement(\"div\");\n      itemEl.setAttribute(\"data-part\", \"item\");\n      itemEl.setAttribute(\"data-value\", item.value);\n      itemEl.setAttribute(\"data-label\", item.label || item.value);\n      if (item.disabled) itemEl.setAttribute(\"data-disabled\", \"true\");\n\n      const textEl = document.createElement(\"span\");\n      textEl.setAttribute(\"data-part\", \"item-text\");\n      textEl.setAttribute(\"data-value\", item.value);\n      textEl.textContent = item.label || item.value;\n\n      itemEl.appendChild(textEl);\n\n      if (!noIcon) {\n        const indicatorEl = document.createElement(\"span\");\n        indicatorEl.setAttribute(\"data-part\", \"item-indicator\");\n        indicatorEl.setAttribute(\"data-value\", item.value);\n        indicatorEl.innerHTML = `\n          <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"\n            stroke-width=\"1.5\" stroke=\"currentColor\">\n            <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m4.5 12.75 6 6 9-13.5\" />\n          </svg>\n        `;\n        itemEl.appendChild(indicatorEl);\n      }\n\n      if (item.group && groupMap[item.group]) {\n        groupMap[item.group].appendChild(itemEl);\n      } else {\n        contentEl.appendChild(itemEl);\n      }\n    });\n  }\n  render() {\n    const isJson = getString(this.el, \"json\") !== undefined;\n    if (isJson && !this.domInitialized) {\n      this.renderJsonDom();\n      this.domInitialized = true;\n    }\n\n    const parts = [\"root\", \"label\", \"content\"];\n    for (const part of parts) renderPart(this.el, part, this.api);\n\n    const itemParts = [\"item\", \"item-text\", \"item-indicator\"];\n    for (const part of itemParts) {\n      renderPart(this.el, part, this.api, {\n        item: (el: HTMLElement) => {\n          const value = el.getAttribute(\"data-value\");\n          const item = this.items.find((i) => i.value === value);\n          if (!item) {\n            console.warn(`[Listbox] No matching item for value: ${value}`);\n            return undefined;\n          }\n          return {\n            ...item,\n            label: item.label || el.getAttribute(\"data-label\") || item.value,\n            disabled: getBoolean(el, \"disabled\") || item.disabled,\n          };\n        },\n      });\n    }\n\n    renderPart(this.el, \"item-group\", this.api, {\n      group: (el: HTMLElement) => {\n        const id = el.getAttribute(\"data-id\");\n        const group = this.groups.find((g) => g.value === id);\n        return group;\n      },\n      id: (el: HTMLElement) => el.getAttribute(\"data-id\"),\n    });\n\n    renderPart(this.el, \"item-group-label\", this.api, {\n      group: (el: HTMLElement) => {\n        const id = el.getAttribute(\"data-id\");\n        return this.groups.find((g) => g.value === id);\n      },\n      htmlFor: (el: HTMLElement) => el.getAttribute(\"data-id\"),\n    });\n  }\n}\n\nexport function initListbox(doc: HTMLElement | Document = document): void {\n  doc.querySelectorAll<HTMLElement>(\".listbox-js\").forEach((rootEl) => {\n    const groupElements = rootEl.querySelectorAll<HTMLElement>(\n      '[data-part=\"item-group\"]',\n    );\n    groupElements.forEach((groupEl, index) => {\n      const groupId =\n        getString(groupEl, \"id\") ??\n        generateId(groupEl, `listbox-group-${index}`);\n      groupEl.setAttribute(\"data-id\", groupId);\n\n      const labelEl = groupEl.querySelector<HTMLElement>(\n        '[data-part=\"item-group-label\"]',\n      );\n      if (labelEl) labelEl.setAttribute(\"data-id\", groupId);\n    });\n\n    const itemElements =\n      rootEl.querySelectorAll<HTMLElement>('[data-part=\"item\"]');\n    itemElements.forEach((itemEl, index) => {\n      const value =\n        getString(itemEl, \"value\") ??\n        generateId(itemEl, `listbox-item-${index}`);\n      itemEl.setAttribute(\"data-value\", value);\n\n      const textEl = itemEl.querySelector<HTMLElement>(\n        '[data-part=\"item-text\"]',\n      );\n      if (textEl) textEl.setAttribute(\"data-value\", value);\n\n      const indicatorEl = itemEl.querySelector<HTMLElement>(\n        '[data-part=\"item-indicator\"]',\n      );\n      if (indicatorEl) indicatorEl.setAttribute(\"data-value\", value);\n    });\n\n    const jsonPath = getString(rootEl, \"json\");\n    const items: ListboxItem[] = jsonPath\n      ? loadJsonItems(jsonPath)\n      : Array.from(itemElements).map((itemEl) => {\n          const value = getString(itemEl, \"value\")!;\n          const label =\n            itemEl\n              .querySelector<HTMLElement>('[data-part=\"item-text\"]')\n              ?.textContent?.trim() || value;\n          const groupEl = itemEl.closest(\n            '[data-part=\"item-group\"]',\n          ) as HTMLElement | null;\n          const group = groupEl ? getString(groupEl, \"id\") : undefined;\n          const disabled = getBoolean(itemEl, \"disabled\");\n          return { value, label, group, disabled };\n        });\n\n    const groups = getDomGroups(rootEl);\n    const hasGroups = groups.length > 0 || items.some((i) => i.group);\n\n    const columnCount = getNumber(rootEl, \"columnCount\");\n    const collection =\n      columnCount && columnCount > 1\n        ? listbox.gridCollection<ListboxItem>({\n            items,\n            itemToValue: (item) => item.value,\n            columnCount,\n            ...(hasGroups && { groupBy: (item) => item.group || \"Default\" }),\n          })\n        : hasGroups\n          ? listbox.collection({\n              items,\n              itemToValue: (item) => item.value,\n              groupBy: (item) => item.group || \"Default\",\n            })\n          : listbox.collection({\n              items,\n              itemToValue: (item) => item.value,\n            });\n\n    const directions = [\"ltr\", \"rtl\"] as const;\n    const orientations = [\"horizontal\", \"vertical\"] as const;\n    const selectionModes = [\"single\", \"multiple\", \"extended\"] as const;\n\n    const listboxComponent = new Listbox(rootEl, {\n      id: generateId(rootEl, \"listbox\"),\n      collection,\n      dir: getString<Direction>(rootEl, \"dir\", directions),\n      disabled: getBoolean(rootEl, \"disabled\"),\n      disallowSelectAll: getBoolean(rootEl, \"disallowSelectAll\"),\n      value: getStringList(rootEl, \"value\"),\n      defaultValue: getStringList(rootEl, \"defaultValue\"),\n      defaultHighlightedValue: getString(rootEl, \"defaultHighlightedValue\"),\n      highlightedValue: getString(rootEl, \"highlightedValue\"),\n      loopFocus: getBoolean(rootEl, \"loopFocus\"),\n      typeahead: getBoolean(rootEl, \"typeahead\"),\n      deselectable: getBoolean(rootEl, \"deselectable\"),\n      orientation: getString<Orientation>(rootEl, \"orientation\", orientations),\n      selectionMode: getString(rootEl, \"selectionMode\", selectionModes),\n      selectOnHighlight: getBoolean(rootEl, \"selectOnHighlight\"),\n      onSelect(details) {\n        const eventName = getString(rootEl, \"onSelect\");\n        if (eventName)\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n      },\n      onHighlightChange(details) {\n        const eventName = getString(rootEl, \"onHighlightChange\");\n        if (eventName)\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n      },\n      onValueChange(details) {\n        const eventName = getString(rootEl, \"onValueChange\");\n        if (eventName)\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n      },\n    });\n\n    listboxComponent.collection = collection;\n    listboxComponent.items = items;\n    listboxComponent.groups = groups;\n    listboxComponent.init();\n  });\n}\n", "import { createAnatomy } from '@zag-js/anatomy';\nimport { createGuards, createMachine, mergeProps } from '@zag-js/core';\nimport { isEditableElement, raf, getInitialFocus, contains, isAnchorElement, observeAttributes, addDomEvent, getEventTarget, getByTypeahead, clickIfLink, getWindow, scrollIntoView, queryAll, dataAttr, isDownloadingEvent, isOpeningInNewTab, isValidTabEvent, getEventKey, isPrintableKey, isModifierKey, isContextMenuEvent, getEventPoint, ariaAttr, isHTMLElement } from '@zag-js/dom-query';\nimport { getPlacementSide, getPlacement, getPlacementStyles } from '@zag-js/popper';\nimport { last, first, isEqual, createSplitProps, prev, next, cast, hasProp } from '@zag-js/utils';\nimport { trackDismissableElement } from '@zag-js/dismissable';\nimport { getElementPolygon, isPointInPolygon } from '@zag-js/rect-utils';\nimport { createProps } from '@zag-js/types';\n\n// src/menu.anatomy.ts\nvar anatomy = createAnatomy(\"menu\").parts(\n  \"arrow\",\n  \"arrowTip\",\n  \"content\",\n  \"contextTrigger\",\n  \"indicator\",\n  \"item\",\n  \"itemGroup\",\n  \"itemGroupLabel\",\n  \"itemIndicator\",\n  \"itemText\",\n  \"positioner\",\n  \"separator\",\n  \"trigger\",\n  \"triggerItem\"\n);\nvar parts = anatomy.build();\nvar getTriggerId = (ctx) => ctx.ids?.trigger ?? `menu:${ctx.id}:trigger`;\nvar getContextTriggerId = (ctx) => ctx.ids?.contextTrigger ?? `menu:${ctx.id}:ctx-trigger`;\nvar getContentId = (ctx) => ctx.ids?.content ?? `menu:${ctx.id}:content`;\nvar getArrowId = (ctx) => ctx.ids?.arrow ?? `menu:${ctx.id}:arrow`;\nvar getPositionerId = (ctx) => ctx.ids?.positioner ?? `menu:${ctx.id}:popper`;\nvar getGroupId = (ctx, id) => ctx.ids?.group?.(id) ?? `menu:${ctx.id}:group:${id}`;\nvar getItemId = (ctx, id) => `${ctx.id}/${id}`;\nvar getItemValue = (el) => el?.dataset.value ?? null;\nvar getGroupLabelId = (ctx, id) => ctx.ids?.groupLabel?.(id) ?? `menu:${ctx.id}:group-label:${id}`;\nvar getContentEl = (ctx) => ctx.getById(getContentId(ctx));\nvar getPositionerEl = (ctx) => ctx.getById(getPositionerId(ctx));\nvar getTriggerEl = (ctx) => ctx.getById(getTriggerId(ctx));\nvar getItemEl = (ctx, value) => value ? ctx.getById(getItemId(ctx, value)) : null;\nvar getContextTriggerEl = (ctx) => ctx.getById(getContextTriggerId(ctx));\nvar getElements = (ctx) => {\n  const ownerId = CSS.escape(getContentId(ctx));\n  const selector = `[role^=\"menuitem\"][data-ownedby=${ownerId}]:not([data-disabled])`;\n  return queryAll(getContentEl(ctx), selector);\n};\nvar getFirstEl = (ctx) => first(getElements(ctx));\nvar getLastEl = (ctx) => last(getElements(ctx));\nvar isMatch = (el, value) => {\n  if (!value) return false;\n  return el.id === value || el.dataset.value === value;\n};\nvar getNextEl = (ctx, opts) => {\n  const items = getElements(ctx);\n  const index = items.findIndex((el) => isMatch(el, opts.value));\n  return next(items, index, { loop: opts.loop ?? opts.loopFocus });\n};\nvar getPrevEl = (ctx, opts) => {\n  const items = getElements(ctx);\n  const index = items.findIndex((el) => isMatch(el, opts.value));\n  return prev(items, index, { loop: opts.loop ?? opts.loopFocus });\n};\nvar getElemByKey = (ctx, opts) => {\n  const items = getElements(ctx);\n  const item = items.find((el) => isMatch(el, opts.value));\n  return getByTypeahead(items, { state: opts.typeaheadState, key: opts.key, activeId: item?.id ?? null });\n};\nvar isTargetDisabled = (v) => {\n  return isHTMLElement(v) && (v.dataset.disabled === \"\" || v.hasAttribute(\"disabled\"));\n};\nvar isTriggerItem = (el) => {\n  return !!el?.getAttribute(\"role\")?.startsWith(\"menuitem\") && !!el?.hasAttribute(\"data-controls\");\n};\nvar itemSelectEvent = \"menu:select\";\nfunction dispatchSelectionEvent(el, value) {\n  if (!el) return;\n  const win = getWindow(el);\n  const event = new win.CustomEvent(itemSelectEvent, { detail: { value } });\n  el.dispatchEvent(event);\n}\n\n// src/menu.connect.ts\nfunction connect(service, normalize) {\n  const { context, send, state, computed, prop, scope } = service;\n  const open = state.hasTag(\"open\");\n  const isSubmenu = context.get(\"isSubmenu\");\n  const isTypingAhead = computed(\"isTypingAhead\");\n  const composite = prop(\"composite\");\n  const currentPlacement = context.get(\"currentPlacement\");\n  const anchorPoint = context.get(\"anchorPoint\");\n  const highlightedValue = context.get(\"highlightedValue\");\n  const popperStyles = getPlacementStyles({\n    ...prop(\"positioning\"),\n    placement: anchorPoint ? \"bottom\" : currentPlacement\n  });\n  function getItemState(props2) {\n    return {\n      id: getItemId(scope, props2.value),\n      disabled: !!props2.disabled,\n      highlighted: highlightedValue === props2.value\n    };\n  }\n  function getOptionItemProps(props2) {\n    const valueText = props2.valueText ?? props2.value;\n    return { ...props2, id: props2.value, valueText };\n  }\n  function getOptionItemState(props2) {\n    const itemState = getItemState(getOptionItemProps(props2));\n    return {\n      ...itemState,\n      checked: !!props2.checked\n    };\n  }\n  function getItemProps(props2) {\n    const { closeOnSelect, valueText, value } = props2;\n    const itemState = getItemState(props2);\n    const id = getItemId(scope, value);\n    return normalize.element({\n      ...parts.item.attrs,\n      id,\n      role: \"menuitem\",\n      \"aria-disabled\": ariaAttr(itemState.disabled),\n      \"data-disabled\": dataAttr(itemState.disabled),\n      \"data-ownedby\": getContentId(scope),\n      \"data-highlighted\": dataAttr(itemState.highlighted),\n      \"data-value\": value,\n      \"data-valuetext\": valueText,\n      onDragStart(event) {\n        const isLink = event.currentTarget.matches(\"a[href]\");\n        if (isLink) event.preventDefault();\n      },\n      onPointerMove(event) {\n        if (itemState.disabled) return;\n        if (event.pointerType !== \"mouse\") return;\n        const target = event.currentTarget;\n        if (itemState.highlighted) return;\n        send({ type: \"ITEM_POINTERMOVE\", id, target, closeOnSelect });\n      },\n      onPointerLeave(event) {\n        if (itemState.disabled) return;\n        if (event.pointerType !== \"mouse\") return;\n        const pointerMoved = service.event.previous()?.type.includes(\"POINTER\");\n        if (!pointerMoved) return;\n        const target = event.currentTarget;\n        send({ type: \"ITEM_POINTERLEAVE\", id, target, closeOnSelect });\n      },\n      onPointerDown(event) {\n        if (itemState.disabled) return;\n        const target = event.currentTarget;\n        send({ type: \"ITEM_POINTERDOWN\", target, id, closeOnSelect });\n      },\n      onClick(event) {\n        if (isDownloadingEvent(event)) return;\n        if (isOpeningInNewTab(event)) return;\n        if (itemState.disabled) return;\n        const target = event.currentTarget;\n        send({ type: \"ITEM_CLICK\", target, id, closeOnSelect });\n      }\n    });\n  }\n  return {\n    highlightedValue,\n    open,\n    setOpen(nextOpen) {\n      const open2 = state.hasTag(\"open\");\n      if (open2 === nextOpen) return;\n      send({ type: nextOpen ? \"OPEN\" : \"CLOSE\" });\n    },\n    setHighlightedValue(value) {\n      send({ type: \"HIGHLIGHTED.SET\", value });\n    },\n    setParent(parent) {\n      send({ type: \"PARENT.SET\", value: parent, id: parent.prop(\"id\") });\n    },\n    setChild(child) {\n      send({ type: \"CHILD.SET\", value: child, id: child.prop(\"id\") });\n    },\n    reposition(options = {}) {\n      send({ type: \"POSITIONING.SET\", options });\n    },\n    addItemListener(props2) {\n      const node = scope.getById(props2.id);\n      if (!node) return;\n      const listener = () => props2.onSelect?.();\n      node.addEventListener(itemSelectEvent, listener);\n      return () => node.removeEventListener(itemSelectEvent, listener);\n    },\n    getContextTriggerProps() {\n      return normalize.element({\n        ...parts.contextTrigger.attrs,\n        dir: prop(\"dir\"),\n        id: getContextTriggerId(scope),\n        \"data-state\": open ? \"open\" : \"closed\",\n        onPointerDown(event) {\n          if (event.pointerType === \"mouse\") return;\n          const point = getEventPoint(event);\n          send({ type: \"CONTEXT_MENU_START\", point });\n        },\n        onPointerCancel(event) {\n          if (event.pointerType === \"mouse\") return;\n          send({ type: \"CONTEXT_MENU_CANCEL\" });\n        },\n        onPointerMove(event) {\n          if (event.pointerType === \"mouse\") return;\n          send({ type: \"CONTEXT_MENU_CANCEL\" });\n        },\n        onPointerUp(event) {\n          if (event.pointerType === \"mouse\") return;\n          send({ type: \"CONTEXT_MENU_CANCEL\" });\n        },\n        onContextMenu(event) {\n          const point = getEventPoint(event);\n          send({ type: \"CONTEXT_MENU\", point });\n          event.preventDefault();\n        },\n        style: {\n          WebkitTouchCallout: \"none\",\n          WebkitUserSelect: \"none\",\n          userSelect: \"none\"\n        }\n      });\n    },\n    getTriggerItemProps(childApi) {\n      const triggerProps = childApi.getTriggerProps();\n      return mergeProps(getItemProps({ value: triggerProps.id }), triggerProps);\n    },\n    getTriggerProps() {\n      return normalize.button({\n        ...isSubmenu ? parts.triggerItem.attrs : parts.trigger.attrs,\n        \"data-placement\": context.get(\"currentPlacement\"),\n        type: \"button\",\n        dir: prop(\"dir\"),\n        id: getTriggerId(scope),\n        \"data-uid\": prop(\"id\"),\n        \"aria-haspopup\": composite ? \"menu\" : \"dialog\",\n        \"aria-controls\": getContentId(scope),\n        \"data-controls\": getContentId(scope),\n        \"aria-expanded\": open || void 0,\n        \"data-state\": open ? \"open\" : \"closed\",\n        onPointerMove(event) {\n          if (event.pointerType !== \"mouse\") return;\n          const disabled = isTargetDisabled(event.currentTarget);\n          if (disabled || !isSubmenu) return;\n          const point = getEventPoint(event);\n          send({ type: \"TRIGGER_POINTERMOVE\", target: event.currentTarget, point });\n        },\n        onPointerLeave(event) {\n          if (isTargetDisabled(event.currentTarget)) return;\n          if (event.pointerType !== \"mouse\") return;\n          if (!isSubmenu) return;\n          const point = getEventPoint(event);\n          send({\n            type: \"TRIGGER_POINTERLEAVE\",\n            target: event.currentTarget,\n            point\n          });\n        },\n        onPointerDown(event) {\n          if (isTargetDisabled(event.currentTarget)) return;\n          if (isContextMenuEvent(event)) return;\n          event.preventDefault();\n        },\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          if (isTargetDisabled(event.currentTarget)) return;\n          send({ type: \"TRIGGER_CLICK\", target: event.currentTarget });\n        },\n        onBlur() {\n          send({ type: \"TRIGGER_BLUR\" });\n        },\n        onFocus() {\n          send({ type: \"TRIGGER_FOCUS\" });\n        },\n        onKeyDown(event) {\n          if (event.defaultPrevented) return;\n          const keyMap = {\n            ArrowDown() {\n              send({ type: \"ARROW_DOWN\" });\n            },\n            ArrowUp() {\n              send({ type: \"ARROW_UP\" });\n            },\n            Enter() {\n              send({ type: \"ARROW_DOWN\", src: \"enter\" });\n            },\n            Space() {\n              send({ type: \"ARROW_DOWN\", src: \"space\" });\n            }\n          };\n          const key = getEventKey(event, {\n            orientation: \"vertical\",\n            dir: prop(\"dir\")\n          });\n          const exec = keyMap[key];\n          if (exec) {\n            event.preventDefault();\n            exec(event);\n          }\n        }\n      });\n    },\n    getIndicatorProps() {\n      return normalize.element({\n        ...parts.indicator.attrs,\n        dir: prop(\"dir\"),\n        \"data-state\": open ? \"open\" : \"closed\"\n      });\n    },\n    getPositionerProps() {\n      return normalize.element({\n        ...parts.positioner.attrs,\n        dir: prop(\"dir\"),\n        id: getPositionerId(scope),\n        style: popperStyles.floating\n      });\n    },\n    getArrowProps() {\n      return normalize.element({\n        id: getArrowId(scope),\n        ...parts.arrow.attrs,\n        dir: prop(\"dir\"),\n        style: popperStyles.arrow\n      });\n    },\n    getArrowTipProps() {\n      return normalize.element({\n        ...parts.arrowTip.attrs,\n        dir: prop(\"dir\"),\n        style: popperStyles.arrowTip\n      });\n    },\n    getContentProps() {\n      return normalize.element({\n        ...parts.content.attrs,\n        id: getContentId(scope),\n        \"aria-label\": prop(\"aria-label\"),\n        hidden: !open,\n        \"data-state\": open ? \"open\" : \"closed\",\n        role: composite ? \"menu\" : \"dialog\",\n        tabIndex: 0,\n        dir: prop(\"dir\"),\n        \"aria-activedescendant\": computed(\"highlightedId\") || void 0,\n        \"aria-labelledby\": getTriggerId(scope),\n        \"data-placement\": currentPlacement,\n        onPointerEnter(event) {\n          if (event.pointerType !== \"mouse\") return;\n          send({ type: \"MENU_POINTERENTER\" });\n        },\n        onKeyDown(event) {\n          if (event.defaultPrevented) return;\n          if (!contains(event.currentTarget, getEventTarget(event))) return;\n          const target = getEventTarget(event);\n          const sameMenu = target?.closest(\"[role=menu]\") === event.currentTarget || target === event.currentTarget;\n          if (!sameMenu) return;\n          if (event.key === \"Tab\") {\n            const valid = isValidTabEvent(event);\n            if (!valid) {\n              event.preventDefault();\n              return;\n            }\n          }\n          const keyMap = {\n            ArrowDown() {\n              send({ type: \"ARROW_DOWN\" });\n            },\n            ArrowUp() {\n              send({ type: \"ARROW_UP\" });\n            },\n            ArrowLeft() {\n              send({ type: \"ARROW_LEFT\" });\n            },\n            ArrowRight() {\n              send({ type: \"ARROW_RIGHT\" });\n            },\n            Enter() {\n              send({ type: \"ENTER\" });\n            },\n            Space(event2) {\n              if (isTypingAhead) {\n                send({ type: \"TYPEAHEAD\", key: event2.key });\n              } else {\n                keyMap.Enter?.(event2);\n              }\n            },\n            Home() {\n              send({ type: \"HOME\" });\n            },\n            End() {\n              send({ type: \"END\" });\n            }\n          };\n          const key = getEventKey(event, { dir: prop(\"dir\") });\n          const exec = keyMap[key];\n          if (exec) {\n            exec(event);\n            event.stopPropagation();\n            event.preventDefault();\n            return;\n          }\n          if (!prop(\"typeahead\")) return;\n          if (!isPrintableKey(event)) return;\n          if (isModifierKey(event)) return;\n          if (isEditableElement(target)) return;\n          send({ type: \"TYPEAHEAD\", key: event.key });\n          event.preventDefault();\n        }\n      });\n    },\n    getSeparatorProps() {\n      return normalize.element({\n        ...parts.separator.attrs,\n        role: \"separator\",\n        dir: prop(\"dir\"),\n        \"aria-orientation\": \"horizontal\"\n      });\n    },\n    getItemState,\n    getItemProps,\n    getOptionItemState,\n    getOptionItemProps(props2) {\n      const { type, disabled, closeOnSelect } = props2;\n      const option = getOptionItemProps(props2);\n      const itemState = getOptionItemState(props2);\n      return {\n        ...getItemProps(option),\n        ...normalize.element({\n          \"data-type\": type,\n          ...parts.item.attrs,\n          dir: prop(\"dir\"),\n          \"data-value\": option.value,\n          role: `menuitem${type}`,\n          \"aria-checked\": !!itemState.checked,\n          \"data-state\": itemState.checked ? \"checked\" : \"unchecked\",\n          onClick(event) {\n            if (disabled) return;\n            if (isDownloadingEvent(event)) return;\n            if (isOpeningInNewTab(event)) return;\n            const target = event.currentTarget;\n            send({ type: \"ITEM_CLICK\", target, option, closeOnSelect });\n          }\n        })\n      };\n    },\n    getItemIndicatorProps(props2) {\n      const itemState = getOptionItemState(cast(props2));\n      const dataState = itemState.checked ? \"checked\" : \"unchecked\";\n      return normalize.element({\n        ...parts.itemIndicator.attrs,\n        dir: prop(\"dir\"),\n        \"data-disabled\": dataAttr(itemState.disabled),\n        \"data-highlighted\": dataAttr(itemState.highlighted),\n        \"data-state\": hasProp(props2, \"checked\") ? dataState : void 0,\n        hidden: hasProp(props2, \"checked\") ? !itemState.checked : void 0\n      });\n    },\n    getItemTextProps(props2) {\n      const itemState = getOptionItemState(cast(props2));\n      const dataState = itemState.checked ? \"checked\" : \"unchecked\";\n      return normalize.element({\n        ...parts.itemText.attrs,\n        dir: prop(\"dir\"),\n        \"data-disabled\": dataAttr(itemState.disabled),\n        \"data-highlighted\": dataAttr(itemState.highlighted),\n        \"data-state\": hasProp(props2, \"checked\") ? dataState : void 0\n      });\n    },\n    getItemGroupLabelProps(props2) {\n      return normalize.element({\n        ...parts.itemGroupLabel.attrs,\n        id: getGroupLabelId(scope, props2.htmlFor),\n        dir: prop(\"dir\")\n      });\n    },\n    getItemGroupProps(props2) {\n      return normalize.element({\n        id: getGroupId(scope, props2.id),\n        ...parts.itemGroup.attrs,\n        dir: prop(\"dir\"),\n        \"aria-labelledby\": getGroupLabelId(scope, props2.id),\n        role: \"group\"\n      });\n    }\n  };\n}\nvar { not, and, or } = createGuards();\nvar machine = createMachine({\n  props({ props: props2 }) {\n    return {\n      closeOnSelect: true,\n      typeahead: true,\n      composite: true,\n      loopFocus: false,\n      navigate(details) {\n        clickIfLink(details.node);\n      },\n      ...props2,\n      positioning: {\n        placement: \"bottom-start\",\n        gutter: 8,\n        ...props2.positioning\n      }\n    };\n  },\n  initialState({ prop }) {\n    const open = prop(\"open\") || prop(\"defaultOpen\");\n    return open ? \"open\" : \"idle\";\n  },\n  context({ bindable, prop }) {\n    return {\n      suspendPointer: bindable(() => ({\n        defaultValue: false\n      })),\n      highlightedValue: bindable(() => ({\n        defaultValue: prop(\"defaultHighlightedValue\") || null,\n        value: prop(\"highlightedValue\"),\n        onChange(value) {\n          prop(\"onHighlightChange\")?.({ highlightedValue: value });\n        }\n      })),\n      lastHighlightedValue: bindable(() => ({\n        defaultValue: null\n      })),\n      currentPlacement: bindable(() => ({\n        defaultValue: void 0\n      })),\n      intentPolygon: bindable(() => ({\n        defaultValue: null\n      })),\n      anchorPoint: bindable(() => ({\n        defaultValue: null,\n        hash(value) {\n          return `x: ${value?.x}, y: ${value?.y}`;\n        }\n      })),\n      isSubmenu: bindable(() => ({\n        defaultValue: false\n      }))\n    };\n  },\n  refs() {\n    return {\n      parent: null,\n      children: {},\n      typeaheadState: { ...getByTypeahead.defaultOptions },\n      positioningOverride: {}\n    };\n  },\n  computed: {\n    isRtl: ({ prop }) => prop(\"dir\") === \"rtl\",\n    isTypingAhead: ({ refs }) => refs.get(\"typeaheadState\").keysSoFar !== \"\",\n    highlightedId: ({ context, scope, refs }) => resolveItemId(refs.get(\"children\"), context.get(\"highlightedValue\"), scope)\n  },\n  watch({ track, action, context, prop }) {\n    track([() => context.get(\"isSubmenu\")], () => {\n      action([\"setSubmenuPlacement\"]);\n    });\n    track([() => context.hash(\"anchorPoint\")], () => {\n      if (!context.get(\"anchorPoint\")) return;\n      action([\"reposition\"]);\n    });\n    track([() => prop(\"open\")], () => {\n      action([\"toggleVisibility\"]);\n    });\n  },\n  on: {\n    \"PARENT.SET\": {\n      actions: [\"setParentMenu\"]\n    },\n    \"CHILD.SET\": {\n      actions: [\"setChildMenu\"]\n    },\n    OPEN: [\n      {\n        guard: \"isOpenControlled\",\n        actions: [\"invokeOnOpen\"]\n      },\n      {\n        target: \"open\",\n        actions: [\"invokeOnOpen\"]\n      }\n    ],\n    OPEN_AUTOFOCUS: [\n      {\n        guard: \"isOpenControlled\",\n        actions: [\"invokeOnOpen\"]\n      },\n      {\n        // internal: true,\n        target: \"open\",\n        actions: [\"highlightFirstItem\", \"invokeOnOpen\"]\n      }\n    ],\n    CLOSE: [\n      {\n        guard: \"isOpenControlled\",\n        actions: [\"invokeOnClose\"]\n      },\n      {\n        target: \"closed\",\n        actions: [\"invokeOnClose\"]\n      }\n    ],\n    \"HIGHLIGHTED.RESTORE\": {\n      actions: [\"restoreHighlightedItem\"]\n    },\n    \"HIGHLIGHTED.SET\": {\n      actions: [\"setHighlightedItem\"]\n    }\n  },\n  states: {\n    idle: {\n      tags: [\"closed\"],\n      on: {\n        \"CONTROLLED.OPEN\": {\n          target: \"open\"\n        },\n        \"CONTROLLED.CLOSE\": {\n          target: \"closed\"\n        },\n        CONTEXT_MENU_START: {\n          target: \"opening:contextmenu\",\n          actions: [\"setAnchorPoint\"]\n        },\n        CONTEXT_MENU: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"setAnchorPoint\", \"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"setAnchorPoint\", \"invokeOnOpen\"]\n          }\n        ],\n        TRIGGER_CLICK: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"invokeOnOpen\"]\n          }\n        ],\n        TRIGGER_FOCUS: {\n          guard: not(\"isSubmenu\"),\n          target: \"closed\"\n        },\n        TRIGGER_POINTERMOVE: {\n          guard: \"isSubmenu\",\n          target: \"opening\"\n        }\n      }\n    },\n    \"opening:contextmenu\": {\n      tags: [\"closed\"],\n      effects: [\"waitForLongPress\"],\n      on: {\n        \"CONTROLLED.OPEN\": { target: \"open\" },\n        \"CONTROLLED.CLOSE\": { target: \"closed\" },\n        CONTEXT_MENU_CANCEL: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            target: \"closed\",\n            actions: [\"invokeOnClose\"]\n          }\n        ],\n        \"LONG_PRESS.OPEN\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"invokeOnOpen\"]\n          }\n        ]\n      }\n    },\n    opening: {\n      tags: [\"closed\"],\n      effects: [\"waitForOpenDelay\"],\n      on: {\n        \"CONTROLLED.OPEN\": {\n          target: \"open\"\n        },\n        \"CONTROLLED.CLOSE\": {\n          target: \"closed\"\n        },\n        BLUR: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            target: \"closed\",\n            actions: [\"invokeOnClose\"]\n          }\n        ],\n        TRIGGER_POINTERLEAVE: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            target: \"closed\",\n            actions: [\"invokeOnClose\"]\n          }\n        ],\n        \"DELAY.OPEN\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"invokeOnOpen\"]\n          }\n        ]\n      }\n    },\n    closing: {\n      tags: [\"open\"],\n      effects: [\"trackPointerMove\", \"trackInteractOutside\", \"waitForCloseDelay\"],\n      on: {\n        \"CONTROLLED.OPEN\": {\n          target: \"open\"\n        },\n        \"CONTROLLED.CLOSE\": {\n          target: \"closed\",\n          actions: [\"focusParentMenu\", \"restoreParentHighlightedItem\"]\n        },\n        // don't invoke on open here since the menu is still open (we're only keeping it open)\n        MENU_POINTERENTER: {\n          target: \"open\",\n          actions: [\"clearIntentPolygon\"]\n        },\n        POINTER_MOVED_AWAY_FROM_SUBMENU: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            target: \"closed\",\n            actions: [\"focusParentMenu\", \"restoreParentHighlightedItem\"]\n          }\n        ],\n        \"DELAY.CLOSE\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            target: \"closed\",\n            actions: [\"focusParentMenu\", \"restoreParentHighlightedItem\", \"invokeOnClose\"]\n          }\n        ]\n      }\n    },\n    closed: {\n      tags: [\"closed\"],\n      entry: [\"clearHighlightedItem\", \"focusTrigger\", \"resumePointer\", \"clearAnchorPoint\"],\n      on: {\n        \"CONTROLLED.OPEN\": [\n          {\n            guard: or(\"isOpenAutoFocusEvent\", \"isArrowDownEvent\"),\n            target: \"open\",\n            actions: [\"highlightFirstItem\"]\n          },\n          {\n            guard: \"isArrowUpEvent\",\n            target: \"open\",\n            actions: [\"highlightLastItem\"]\n          },\n          {\n            target: \"open\"\n          }\n        ],\n        CONTEXT_MENU_START: {\n          target: \"opening:contextmenu\",\n          actions: [\"setAnchorPoint\"]\n        },\n        CONTEXT_MENU: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"setAnchorPoint\", \"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"setAnchorPoint\", \"invokeOnOpen\"]\n          }\n        ],\n        TRIGGER_CLICK: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"invokeOnOpen\"]\n          }\n        ],\n        TRIGGER_POINTERMOVE: {\n          guard: \"isTriggerItem\",\n          target: \"opening\"\n        },\n        TRIGGER_BLUR: { target: \"idle\" },\n        ARROW_DOWN: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"highlightFirstItem\", \"invokeOnOpen\"]\n          }\n        ],\n        ARROW_UP: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"highlightLastItem\", \"invokeOnOpen\"]\n          }\n        ]\n      }\n    },\n    open: {\n      tags: [\"open\"],\n      effects: [\"trackInteractOutside\", \"trackPositioning\", \"scrollToHighlightedItem\"],\n      entry: [\"focusMenu\", \"resumePointer\"],\n      on: {\n        \"CONTROLLED.CLOSE\": [\n          {\n            target: \"closed\",\n            guard: \"isArrowLeftEvent\",\n            actions: [\"focusParentMenu\"]\n          },\n          {\n            target: \"closed\"\n          }\n        ],\n        TRIGGER_CLICK: [\n          {\n            guard: and(not(\"isTriggerItem\"), \"isOpenControlled\"),\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            guard: not(\"isTriggerItem\"),\n            target: \"closed\",\n            actions: [\"invokeOnClose\"]\n          }\n        ],\n        CONTEXT_MENU: {\n          actions: [\"setAnchorPoint\", \"focusMenu\"]\n        },\n        ARROW_UP: {\n          actions: [\"highlightPrevItem\", \"focusMenu\"]\n        },\n        ARROW_DOWN: {\n          actions: [\"highlightNextItem\", \"focusMenu\"]\n        },\n        ARROW_LEFT: [\n          {\n            guard: and(\"isSubmenu\", \"isOpenControlled\"),\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            guard: \"isSubmenu\",\n            target: \"closed\",\n            actions: [\"focusParentMenu\", \"invokeOnClose\"]\n          }\n        ],\n        HOME: {\n          actions: [\"highlightFirstItem\", \"focusMenu\"]\n        },\n        END: {\n          actions: [\"highlightLastItem\", \"focusMenu\"]\n        },\n        ARROW_RIGHT: {\n          guard: \"isTriggerItemHighlighted\",\n          actions: [\"openSubmenu\"]\n        },\n        ENTER: [\n          {\n            guard: \"isTriggerItemHighlighted\",\n            actions: [\"openSubmenu\"]\n          },\n          {\n            actions: [\"clickHighlightedItem\"]\n          }\n        ],\n        ITEM_POINTERMOVE: [\n          {\n            guard: not(\"isPointerSuspended\"),\n            actions: [\"setHighlightedItem\", \"focusMenu\"]\n          },\n          {\n            actions: [\"setLastHighlightedItem\"]\n          }\n        ],\n        ITEM_POINTERLEAVE: {\n          guard: and(not(\"isPointerSuspended\"), not(\"isTriggerItem\")),\n          actions: [\"clearHighlightedItem\"]\n        },\n        ITEM_CLICK: [\n          // == grouped ==\n          {\n            guard: and(\n              not(\"isTriggerItemHighlighted\"),\n              not(\"isHighlightedItemEditable\"),\n              \"closeOnSelect\",\n              \"isOpenControlled\"\n            ),\n            actions: [\"invokeOnSelect\", \"setOptionState\", \"closeRootMenu\", \"invokeOnClose\"]\n          },\n          {\n            guard: and(not(\"isTriggerItemHighlighted\"), not(\"isHighlightedItemEditable\"), \"closeOnSelect\"),\n            target: \"closed\",\n            actions: [\"invokeOnSelect\", \"setOptionState\", \"closeRootMenu\", \"invokeOnClose\"]\n          },\n          //\n          {\n            guard: and(not(\"isTriggerItemHighlighted\"), not(\"isHighlightedItemEditable\")),\n            actions: [\"invokeOnSelect\", \"setOptionState\"]\n          },\n          { actions: [\"setHighlightedItem\"] }\n        ],\n        TRIGGER_POINTERMOVE: {\n          guard: \"isTriggerItem\",\n          actions: [\"setIntentPolygon\"]\n        },\n        TRIGGER_POINTERLEAVE: {\n          target: \"closing\"\n        },\n        ITEM_POINTERDOWN: {\n          actions: [\"setHighlightedItem\"]\n        },\n        TYPEAHEAD: {\n          actions: [\"highlightMatchedItem\"]\n        },\n        FOCUS_MENU: {\n          actions: [\"focusMenu\"]\n        },\n        \"POSITIONING.SET\": {\n          actions: [\"reposition\"]\n        }\n      }\n    }\n  },\n  implementations: {\n    guards: {\n      closeOnSelect: ({ prop, event }) => !!(event?.closeOnSelect ?? prop(\"closeOnSelect\")),\n      // whether the trigger is also a menu item\n      isTriggerItem: ({ event }) => isTriggerItem(event.target),\n      // whether the trigger item is the active item\n      isTriggerItemHighlighted: ({ event, scope, computed }) => {\n        const target = event.target ?? scope.getById(computed(\"highlightedId\"));\n        return !!target?.hasAttribute(\"data-controls\");\n      },\n      isSubmenu: ({ context }) => context.get(\"isSubmenu\"),\n      isPointerSuspended: ({ context }) => context.get(\"suspendPointer\"),\n      isHighlightedItemEditable: ({ scope, computed }) => isEditableElement(scope.getById(computed(\"highlightedId\"))),\n      // guard assertions (for controlled mode)\n      isOpenControlled: ({ prop }) => prop(\"open\") !== void 0,\n      isArrowLeftEvent: ({ event }) => event.previousEvent?.type === \"ARROW_LEFT\",\n      isArrowUpEvent: ({ event }) => event.previousEvent?.type === \"ARROW_UP\",\n      isArrowDownEvent: ({ event }) => event.previousEvent?.type === \"ARROW_DOWN\",\n      isOpenAutoFocusEvent: ({ event }) => event.previousEvent?.type === \"OPEN_AUTOFOCUS\"\n    },\n    effects: {\n      waitForOpenDelay({ send }) {\n        const timer = setTimeout(() => {\n          send({ type: \"DELAY.OPEN\" });\n        }, 100);\n        return () => clearTimeout(timer);\n      },\n      waitForCloseDelay({ send }) {\n        const timer = setTimeout(() => {\n          send({ type: \"DELAY.CLOSE\" });\n        }, 300);\n        return () => clearTimeout(timer);\n      },\n      waitForLongPress({ send }) {\n        const timer = setTimeout(() => {\n          send({ type: \"LONG_PRESS.OPEN\" });\n        }, 700);\n        return () => clearTimeout(timer);\n      },\n      trackPositioning({ context, prop, scope, refs }) {\n        if (!!getContextTriggerEl(scope)) return;\n        const positioning = {\n          ...prop(\"positioning\"),\n          ...refs.get(\"positioningOverride\")\n        };\n        context.set(\"currentPlacement\", positioning.placement);\n        const getPositionerEl2 = () => getPositionerEl(scope);\n        return getPlacement(getTriggerEl(scope), getPositionerEl2, {\n          ...positioning,\n          defer: true,\n          onComplete(data) {\n            context.set(\"currentPlacement\", data.placement);\n          }\n        });\n      },\n      trackInteractOutside({ refs, scope, prop, context, send }) {\n        const getContentEl2 = () => getContentEl(scope);\n        let restoreFocus = true;\n        return trackDismissableElement(getContentEl2, {\n          type: \"menu\",\n          defer: true,\n          exclude: [getTriggerEl(scope)],\n          onInteractOutside: prop(\"onInteractOutside\"),\n          onRequestDismiss: prop(\"onRequestDismiss\"),\n          onFocusOutside(event) {\n            prop(\"onFocusOutside\")?.(event);\n            const target = getEventTarget(event.detail.originalEvent);\n            const isWithinContextTrigger = contains(getContextTriggerEl(scope), target);\n            if (isWithinContextTrigger) {\n              event.preventDefault();\n              return;\n            }\n          },\n          onEscapeKeyDown(event) {\n            prop(\"onEscapeKeyDown\")?.(event);\n            if (context.get(\"isSubmenu\")) event.preventDefault();\n            closeRootMenu({ parent: refs.get(\"parent\") });\n          },\n          onPointerDownOutside(event) {\n            prop(\"onPointerDownOutside\")?.(event);\n            const target = getEventTarget(event.detail.originalEvent);\n            const isWithinContextTrigger = contains(getContextTriggerEl(scope), target);\n            if (isWithinContextTrigger && event.detail.contextmenu) {\n              event.preventDefault();\n              return;\n            }\n            restoreFocus = !event.detail.focusable;\n          },\n          onDismiss() {\n            send({ type: \"CLOSE\", src: \"interact-outside\", restoreFocus });\n          }\n        });\n      },\n      trackPointerMove({ context, scope, send, refs, flush }) {\n        const parent = refs.get(\"parent\");\n        flush(() => {\n          parent.context.set(\"suspendPointer\", true);\n        });\n        const doc = scope.getDoc();\n        return addDomEvent(doc, \"pointermove\", (e) => {\n          const isMovingToSubmenu = isWithinPolygon(context.get(\"intentPolygon\"), {\n            x: e.clientX,\n            y: e.clientY\n          });\n          if (!isMovingToSubmenu) {\n            send({ type: \"POINTER_MOVED_AWAY_FROM_SUBMENU\" });\n            parent.context.set(\"suspendPointer\", false);\n          }\n        });\n      },\n      scrollToHighlightedItem({ event, scope, computed }) {\n        const exec = () => {\n          if (event.current().type.startsWith(\"ITEM_POINTER\")) return;\n          const itemEl = scope.getById(computed(\"highlightedId\"));\n          const contentEl2 = getContentEl(scope);\n          scrollIntoView(itemEl, { rootEl: contentEl2, block: \"nearest\" });\n        };\n        raf(() => exec());\n        const contentEl = () => getContentEl(scope);\n        return observeAttributes(contentEl, {\n          defer: true,\n          attributes: [\"aria-activedescendant\"],\n          callback: exec\n        });\n      }\n    },\n    actions: {\n      setAnchorPoint({ context, event }) {\n        context.set(\"anchorPoint\", (prev2) => isEqual(prev2, event.point) ? prev2 : event.point);\n      },\n      setSubmenuPlacement({ context, computed, refs }) {\n        if (!context.get(\"isSubmenu\")) return;\n        const placement = computed(\"isRtl\") ? \"left-start\" : \"right-start\";\n        refs.set(\"positioningOverride\", { placement, gutter: 0 });\n      },\n      reposition({ context, scope, prop, event, refs }) {\n        const getPositionerEl2 = () => getPositionerEl(scope);\n        const anchorPoint = context.get(\"anchorPoint\");\n        const getAnchorRect = anchorPoint ? () => ({ width: 0, height: 0, ...anchorPoint }) : void 0;\n        const positioning = {\n          ...prop(\"positioning\"),\n          ...refs.get(\"positioningOverride\")\n        };\n        getPlacement(getTriggerEl(scope), getPositionerEl2, {\n          ...positioning,\n          defer: true,\n          getAnchorRect,\n          ...event.options ?? {},\n          listeners: false,\n          onComplete(data) {\n            context.set(\"currentPlacement\", data.placement);\n          }\n        });\n      },\n      setOptionState({ event }) {\n        if (!event.option) return;\n        const { checked, onCheckedChange, type } = event.option;\n        if (type === \"radio\") {\n          onCheckedChange?.(true);\n        } else if (type === \"checkbox\") {\n          onCheckedChange?.(!checked);\n        }\n      },\n      clickHighlightedItem({ scope, computed, prop, context }) {\n        const itemEl = scope.getById(computed(\"highlightedId\"));\n        if (!itemEl || itemEl.dataset.disabled) return;\n        const highlightedValue = context.get(\"highlightedValue\");\n        if (isAnchorElement(itemEl)) {\n          prop(\"navigate\")?.({ value: highlightedValue, node: itemEl, href: itemEl.href });\n        } else {\n          queueMicrotask(() => itemEl.click());\n        }\n      },\n      setIntentPolygon({ context, scope, event }) {\n        const menu = getContentEl(scope);\n        const placement = context.get(\"currentPlacement\");\n        if (!menu || !placement) return;\n        const rect = menu.getBoundingClientRect();\n        const polygon = getElementPolygon(rect, placement);\n        if (!polygon) return;\n        const rightSide = getPlacementSide(placement) === \"right\";\n        const bleed = rightSide ? -5 : 5;\n        context.set(\"intentPolygon\", [{ ...event.point, x: event.point.x + bleed }, ...polygon]);\n      },\n      clearIntentPolygon({ context }) {\n        context.set(\"intentPolygon\", null);\n      },\n      clearAnchorPoint({ context }) {\n        context.set(\"anchorPoint\", null);\n      },\n      resumePointer({ refs, flush }) {\n        const parent = refs.get(\"parent\");\n        if (!parent) return;\n        flush(() => {\n          parent.context.set(\"suspendPointer\", false);\n        });\n      },\n      setHighlightedItem({ context, event }) {\n        const value = event.value || getItemValue(event.target);\n        context.set(\"highlightedValue\", value);\n      },\n      clearHighlightedItem({ context }) {\n        context.set(\"highlightedValue\", null);\n      },\n      focusMenu({ scope }) {\n        raf(() => {\n          const contentEl = getContentEl(scope);\n          const initialFocusEl = getInitialFocus({\n            root: contentEl,\n            enabled: !contains(contentEl, scope.getActiveElement()),\n            filter(node) {\n              return !node.role?.startsWith(\"menuitem\");\n            }\n          });\n          initialFocusEl?.focus({ preventScroll: true });\n        });\n      },\n      highlightFirstItem({ context, scope }) {\n        const fn = getContentEl(scope) ? queueMicrotask : raf;\n        fn(() => {\n          const first2 = getFirstEl(scope);\n          if (!first2) return;\n          context.set(\"highlightedValue\", getItemValue(first2));\n        });\n      },\n      highlightLastItem({ context, scope }) {\n        const fn = getContentEl(scope) ? queueMicrotask : raf;\n        fn(() => {\n          const last2 = getLastEl(scope);\n          if (!last2) return;\n          context.set(\"highlightedValue\", getItemValue(last2));\n        });\n      },\n      highlightNextItem({ context, scope, event, prop }) {\n        const next2 = getNextEl(scope, {\n          loop: event.loop,\n          value: context.get(\"highlightedValue\"),\n          loopFocus: prop(\"loopFocus\")\n        });\n        context.set(\"highlightedValue\", getItemValue(next2));\n      },\n      highlightPrevItem({ context, scope, event, prop }) {\n        const prev2 = getPrevEl(scope, {\n          loop: event.loop,\n          value: context.get(\"highlightedValue\"),\n          loopFocus: prop(\"loopFocus\")\n        });\n        context.set(\"highlightedValue\", getItemValue(prev2));\n      },\n      invokeOnSelect({ context, prop, scope }) {\n        const value = context.get(\"highlightedValue\");\n        if (value == null) return;\n        const node = getItemEl(scope, value);\n        dispatchSelectionEvent(node, value);\n        prop(\"onSelect\")?.({ value });\n      },\n      focusTrigger({ scope, context, event }) {\n        if (context.get(\"isSubmenu\") || context.get(\"anchorPoint\") || event.restoreFocus === false) return;\n        queueMicrotask(() => getTriggerEl(scope)?.focus({ preventScroll: true }));\n      },\n      highlightMatchedItem({ scope, context, event, refs }) {\n        const node = getElemByKey(scope, {\n          key: event.key,\n          value: context.get(\"highlightedValue\"),\n          typeaheadState: refs.get(\"typeaheadState\")\n        });\n        if (!node) return;\n        context.set(\"highlightedValue\", getItemValue(node));\n      },\n      setParentMenu({ refs, event, context }) {\n        refs.set(\"parent\", event.value);\n        context.set(\"isSubmenu\", true);\n      },\n      setChildMenu({ refs, event }) {\n        const children = refs.get(\"children\");\n        children[event.id] = event.value;\n        refs.set(\"children\", children);\n      },\n      closeRootMenu({ refs }) {\n        closeRootMenu({ parent: refs.get(\"parent\") });\n      },\n      openSubmenu({ refs, scope, computed }) {\n        const item = scope.getById(computed(\"highlightedId\"));\n        const id = item?.getAttribute(\"data-uid\");\n        const children = refs.get(\"children\");\n        const child = id ? children[id] : null;\n        child?.send({ type: \"OPEN_AUTOFOCUS\" });\n      },\n      focusParentMenu({ refs }) {\n        refs.get(\"parent\")?.send({ type: \"FOCUS_MENU\" });\n      },\n      setLastHighlightedItem({ context, event }) {\n        context.set(\"lastHighlightedValue\", getItemValue(event.target));\n      },\n      restoreHighlightedItem({ context }) {\n        if (!context.get(\"lastHighlightedValue\")) return;\n        context.set(\"highlightedValue\", context.get(\"lastHighlightedValue\"));\n        context.set(\"lastHighlightedValue\", null);\n      },\n      restoreParentHighlightedItem({ refs }) {\n        refs.get(\"parent\")?.send({ type: \"HIGHLIGHTED.RESTORE\" });\n      },\n      invokeOnOpen({ prop }) {\n        prop(\"onOpenChange\")?.({ open: true });\n      },\n      invokeOnClose({ prop }) {\n        prop(\"onOpenChange\")?.({ open: false });\n      },\n      toggleVisibility({ prop, event, send }) {\n        send({\n          type: prop(\"open\") ? \"CONTROLLED.OPEN\" : \"CONTROLLED.CLOSE\",\n          previousEvent: event\n        });\n      }\n    }\n  }\n});\nfunction closeRootMenu(ctx) {\n  let parent = ctx.parent;\n  while (parent && parent.context.get(\"isSubmenu\")) {\n    parent = parent.refs.get(\"parent\");\n  }\n  parent?.send({ type: \"CLOSE\" });\n}\nfunction isWithinPolygon(polygon, point) {\n  if (!polygon) return false;\n  return isPointInPolygon(polygon, point);\n}\nfunction resolveItemId(children, value, scope) {\n  const hasChildren = Object.keys(children).length > 0;\n  if (!value) return null;\n  if (!hasChildren) {\n    return getItemId(scope, value);\n  }\n  for (const id in children) {\n    const childMenu = children[id];\n    const childTriggerId = getTriggerId(childMenu.scope);\n    if (childTriggerId === value) {\n      return childTriggerId;\n    }\n  }\n  return getItemId(scope, value);\n}\nvar props = createProps()([\n  \"anchorPoint\",\n  \"aria-label\",\n  \"closeOnSelect\",\n  \"composite\",\n  \"defaultHighlightedValue\",\n  \"defaultOpen\",\n  \"dir\",\n  \"getRootNode\",\n  \"highlightedValue\",\n  \"id\",\n  \"ids\",\n  \"loopFocus\",\n  \"navigate\",\n  \"onEscapeKeyDown\",\n  \"onFocusOutside\",\n  \"onHighlightChange\",\n  \"onInteractOutside\",\n  \"onOpenChange\",\n  \"onPointerDownOutside\",\n  \"onRequestDismiss\",\n  \"onSelect\",\n  \"open\",\n  \"positioning\",\n  \"typeahead\"\n]);\nvar splitProps = createSplitProps(props);\nvar itemProps = createProps()([\"closeOnSelect\", \"disabled\", \"value\", \"valueText\"]);\nvar splitItemProps = createSplitProps(itemProps);\nvar itemGroupLabelProps = createProps()([\"htmlFor\"]);\nvar splitItemGroupLabelProps = createSplitProps(itemGroupLabelProps);\nvar itemGroupProps = createProps()([\"id\"]);\nvar splitItemGroupProps = createSplitProps(itemGroupProps);\nvar optionItemProps = createProps()([\n  \"checked\",\n  \"closeOnSelect\",\n  \"disabled\",\n  \"onCheckedChange\",\n  \"type\",\n  \"value\",\n  \"valueText\"\n]);\nvar splitOptionItemProps = createSplitProps(optionItemProps);\n\nexport { anatomy, connect, itemGroupLabelProps, itemGroupProps, itemProps, machine, optionItemProps, props, splitItemGroupLabelProps, splitItemGroupProps, splitItemProps, splitOptionItemProps, splitProps };\n", "import * as menu from \"@zag-js/menu\";\nimport type { Direction } from \"@zag-js/types\";\nimport { VanillaMachine, normalizeProps, spreadProps } from \"@zag-js/vanilla\";\n\nimport {\n  Component,\n  getString,\n  getNumber,\n  getBoolean,\n  generateId,\n  renderPart,\n} from \"../lib\";\n\ninterface Node {\n  id: string;\n  name: string;\n  children?: Node[];\n}\n\nfunction loadJsonTreeNodes(path: string): Node {\n  try {\n    const script = document.querySelector(\n      `script[type=\"application/json\"][data-menu=\"${path}\"]`,\n    );\n    if (!script) throw new Error(`No inline JSON script found for ${path}`);\n    return JSON.parse(script.textContent || \"{}\");\n  } catch (e) {\n    console.error(\"Failed to load JSON tree nodes:\", e);\n    return { id: \"root\", name: \"Root\" };\n  }\n}\n\nexport class Menu extends Component<menu.Props, menu.Api> {\n  children: Menu[] = [];\n  parent?: Menu;\n  domInitialized = false;\n\n  initMachine(props: menu.Props): VanillaMachine<any> {\n    this.machine = new VanillaMachine(menu.machine, props);\n    return this.machine;\n  }\n\n  initApi(): menu.Api {\n    return menu.connect(this.machine.service, normalizeProps);\n  }\n\n  setChild(child: Menu) {\n    this.api.setChild(child.machine.service);\n    if (!this.children.includes(child)) {\n      this.children.push(child);\n    }\n  }\n\n  setParent(parent: Menu) {\n    this.api.setParent(parent.machine.service);\n    this.parent = parent;\n  }\n\n  renderFromJson() {\n    const jsonPath = getString(this.el, \"json\");\n    if (!jsonPath) return;\n\n    const rootNode = loadJsonTreeNodes(jsonPath);\n    if (!rootNode.children || rootNode.children.length === 0) return;\n\n    this.el.innerHTML = \"\";\n\n    rootNode.children.forEach((topLevelNode) => {\n      const menuId = `${this.el.id}-${topLevelNode.id}`;\n\n      const menuWrapper = document.createElement(\"div\");\n      menuWrapper.classList.add(\"menu-js\", \"menu\");\n      menuWrapper.id = menuId;\n      menuWrapper.dataset.ariaLabel = `${topLevelNode.name} Menu`;\n\n      Array.from(this.el.attributes).forEach((attr) => {\n        if (attr.name.startsWith(\"data-\") && attr.name !== \"data-json\") {\n          menuWrapper.setAttribute(attr.name, attr.value);\n        }\n      });\n\n      const trigger = document.createElement(\"button\");\n      trigger.setAttribute(\"data-part\", \"trigger\");\n      trigger.innerHTML = `\n        ${topLevelNode.name}\n        <span data-part=\"indicator\">\n          <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"\n               stroke-width=\"1.5\" stroke=\"currentColor\">\n            <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m19.5 8.25-7.5 7.5-7.5-7.5\"></path>\n          </svg>\n        </span>\n      `;\n\n      const positioner = document.createElement(\"div\");\n      positioner.setAttribute(\"data-part\", \"positioner\");\n\n      const content = document.createElement(\"ul\");\n      content.setAttribute(\"data-part\", \"content\");\n\n      positioner.appendChild(content);\n      menuWrapper.appendChild(trigger);\n      menuWrapper.appendChild(positioner);\n      this.el.appendChild(menuWrapper);\n\n      if (topLevelNode.children) {\n        topLevelNode.children.forEach((child) => {\n          this.renderNodeContent(child, content, menuWrapper, menuId);\n        });\n      }\n    });\n  }\n\n  private renderNodeContent(\n    node: Node,\n    parentEl: HTMLElement,\n    menuWrapper: HTMLElement,\n    parentMenuId: string,\n  ) {\n    const hasChildren = node.children && node.children.length > 0;\n    const li = document.createElement(\"li\");\n\n    if (hasChildren) {\n      li.setAttribute(\"data-part\", \"trigger-item\");\n      const submenuId = node.id;\n      li.dataset.child = submenuId;\n\n      li.innerHTML = `\n        ${node.name}\n        <span data-part=\"indicator\" data-child=\"${submenuId}\">\n          <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" \n               stroke-width=\"1.5\" stroke=\"currentColor\" class=\"icon\">\n            <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m8.25 4.5 7.5 7.5-7.5 7.5\"/>\n          </svg>\n        </span>\n      `;\n\n      const submenuEl = document.createElement(\"div\");\n      submenuEl.classList.add(\"menu-js\", \"menu\");\n      submenuEl.id = submenuId;\n      submenuEl.dataset.parent = parentMenuId;\n      submenuEl.dataset.ariaLabel = `${node.name} Menu`;\n      submenuEl.dataset.offsetMainAxis = \"5\";\n      submenuEl.dataset.placement = \"right-start\";\n\n      const eventAttrs = [\n        \"onSelect\",\n        \"onOpenChange\",\n        \"onEscapeKeyDown\",\n        \"onFocusOutside\",\n        \"onHighlightChange\",\n        \"onInteractOutside\",\n        \"onPointerDownOutside\",\n        \"navigate\",\n        \"sameWidth\",\n      ];\n\n      eventAttrs.forEach((attr) => {\n        const value = getString(menuWrapper, attr);\n        if (value !== undefined) {\n          submenuEl.dataset[attr] = value;\n        }\n      });\n\n      const positioner = document.createElement(\"div\");\n      positioner.setAttribute(\"data-part\", \"positioner\");\n\n      const submenuContent = document.createElement(\"ul\");\n      submenuContent.setAttribute(\"data-part\", \"content\");\n      positioner.appendChild(submenuContent);\n      submenuEl.appendChild(positioner);\n\n      menuWrapper.parentNode?.insertBefore(submenuEl, menuWrapper.nextSibling);\n\n      const childrenIds: string[] = [];\n      node.children!.forEach((child) => {\n        if (child.children && child.children.length > 0) {\n          childrenIds.push(child.id);\n        }\n        this.renderNodeContent(child, submenuContent, submenuEl, submenuId);\n      });\n\n      if (childrenIds.length > 0) {\n        submenuEl.dataset.children = childrenIds.join(\",\");\n      }\n\n      const existingChildren = menuWrapper.dataset.children\n        ? menuWrapper.dataset.children.split(\",\")\n        : [];\n      if (!existingChildren.includes(submenuId)) {\n        menuWrapper.dataset.children = [...existingChildren, submenuId].join(\n          \",\",\n        );\n      }\n    } else {\n      li.setAttribute(\"data-part\", \"item\");\n      li.dataset.value = node.id;\n      li.textContent = node.name;\n    }\n\n    parentEl.appendChild(li);\n  }\n\n  render() {\n    const isJson = getString(this.el, \"json\") !== undefined;\n    if (isJson && !this.domInitialized) {\n      this.renderFromJson();\n      this.domInitialized = true;\n      return;\n    }\n\n    const parts = [\n      \"trigger\",\n      \"indicator\",\n      \"positioner\",\n      \"content\",\n      \"context-trigger\",\n      \"separator\",\n    ];\n    for (const part of parts) {\n      renderPart(this.el, part, this.api);\n    }\n\n    const items = [\"item\", \"item-text\"];\n    for (const item of items) {\n      renderPart(this.el, item, this.api, {\n        value: \"string\",\n        id: \"string\",\n        child: \"string\",\n      });\n    }\n\n    const labels = [\"item-group-label\"];\n    for (const item of labels) {\n      renderPart(this.el, item, this.api, {\n        htmlFor: (el: any) => getString(el, \"id\"),\n      });\n    }\n\n    const groups = [\"item-group\"];\n    for (const item of groups) {\n      renderPart(this.el, item, this.api, { id: \"string\" });\n    }\n  }\n\n  renderSubmenuTriggers() {\n    const triggerItems = Array.from(\n      this.el.querySelectorAll<HTMLElement>(\n        '[data-part=\"trigger-item\"][data-child]',\n      ),\n    ).filter((el) => el.closest(\".menu-js\") === this.el);\n\n    for (const triggerEl of triggerItems) {\n      const targetMenuId = triggerEl.dataset.child;\n      if (!targetMenuId) continue;\n\n      const childMenu = this.children.find(\n        (child) => child.el.id === targetMenuId,\n      );\n      if (!childMenu) continue;\n\n      const indicatorEl = triggerEl.querySelector<HTMLElement>(\n        `[data-part=\"indicator\"][data-child=\"${targetMenuId}\"]`,\n      );\n\n      const applyProps = () => {\n        const triggerProps = this.api.getTriggerItemProps(childMenu.api);\n        spreadProps(triggerEl, triggerProps);\n        if (indicatorEl) {\n          const indicatorProps = childMenu.api.getIndicatorProps();\n          spreadProps(indicatorEl, indicatorProps);\n        }\n      };\n\n      applyProps();\n      this.machine.subscribe(applyProps);\n      childMenu.machine.subscribe(applyProps);\n    }\n  }\n}\n\nlet hasInitialized = false;\n\nexport function initMenu(\n  doc: HTMLElement | Document = document,\n  selector = \".menu-js\",\n): void {\n  if (hasInitialized) return;\n  hasInitialized = true;\n\n  doc.querySelectorAll<HTMLElement>(selector).forEach((rootEl, menuIndex) => {\n    const groupElements = rootEl.querySelectorAll<HTMLElement>(\n      '[data-part=\"item-group\"]',\n    );\n\n    groupElements.forEach((groupEl, groupIndex) => {\n      let groupId = getString(groupEl, \"id\");\n      if (!groupId) {\n        groupId = generateId(groupEl, `menu-group-${menuIndex}-${groupIndex}`);\n        groupEl.setAttribute(\"data-id\", groupId);\n      }\n\n      const labelEl = groupEl.querySelector<HTMLElement>(\n        '[data-part=\"item-group-label\"]',\n      );\n      if (labelEl) {\n        labelEl.setAttribute(\"data-id\", groupId);\n      }\n    });\n\n    const itemElements =\n      rootEl.querySelectorAll<HTMLElement>('[data-part=\"item\"]');\n    itemElements.forEach((itemEl, itemIndex) => {\n      let value = getString(itemEl, \"value\");\n      if (!value) {\n        value = generateId(itemEl, `menu-item-${menuIndex}-${itemIndex}`);\n        itemEl.setAttribute(\"data-value\", value);\n      }\n\n      const textEl = itemEl.querySelector<HTMLElement>(\n        '[data-part=\"item-text\"]',\n      );\n      if (textEl && !getString(textEl, \"value\")) {\n        textEl.setAttribute(\"data-value\", value);\n      }\n\n      const indicatorEl = itemEl.querySelector<HTMLElement>(\n        '[data-part=\"item-indicator\"]',\n      );\n      if (indicatorEl && !getString(indicatorEl, \"value\")) {\n        indicatorEl.setAttribute(\"data-value\", value);\n      }\n    });\n  });\n\n  const menusMap = new Map<string, Menu>();\n  doc\n    .querySelectorAll<HTMLElement>(`${selector}[data-json]`)\n    .forEach((rootEl) => {\n      const id = generateId(rootEl, \"menu\");\n      const jsonPath = getString(rootEl, \"json\");\n\n      if (jsonPath) {\n        const tempInstance = new Menu(rootEl, { id });\n        tempInstance.renderFromJson();\n        tempInstance.domInitialized = true;\n      }\n    });\n\n  doc\n    .querySelectorAll<HTMLElement>(`${selector}:not([data-json])`)\n    .forEach((rootEl) => {\n      const placements = [\n        \"top\",\n        \"right\",\n        \"bottom\",\n        \"left\",\n        \"top-start\",\n        \"top-end\",\n        \"right-start\",\n        \"right-end\",\n        \"bottom-start\",\n        \"bottom-end\",\n        \"left-start\",\n        \"left-end\",\n      ] as const;\n\n      const strategies = [\"absolute\", \"fixed\"] as const;\n      const directions = [\"ltr\", \"rtl\"] as const;\n      const id = generateId(rootEl, \"menu\");\n\n      const instance = new Menu(rootEl, {\n        id,\n        \"aria-label\": getString(rootEl, \"ariaLabel\"),\n        closeOnSelect: getBoolean(rootEl, \"closeOnSelect\"),\n        composite: getBoolean(rootEl, \"composite\"),\n        defaultHighlightedValue: getString(rootEl, \"defaultHighlightedValue\"),\n        defaultOpen: getBoolean(rootEl, \"defaultOpen\"),\n        open: getBoolean(rootEl, \"open\"),\n        dir: getString<Direction>(rootEl, \"dir\", directions),\n        loopFocus: getBoolean(rootEl, \"loopFocus\"),\n        typeahead: getBoolean(rootEl, \"typeahead\"),\n        highlightedValue: getString(rootEl, \"highlightedValue\"),\n        positioning: {\n          hideWhenDetached: getBoolean(rootEl, \"hideWhenDetached\"),\n          placement: getString(rootEl, \"placement\", placements),\n          strategy: getString(rootEl, \"strategy\", strategies),\n          flip: getBoolean(rootEl, \"flip\"),\n          gutter: getNumber(rootEl, \"gutter\"),\n          arrowPadding: getNumber(rootEl, \"arrowPadding\"),\n          overflowPadding: getNumber(rootEl, \"overflowPadding\"),\n          offset: (() => {\n            const mainAxis = getNumber(rootEl, \"offsetMainAxis\");\n            const crossAxis = getNumber(rootEl, \"offsetCrossAxis\");\n            if (mainAxis !== undefined || crossAxis !== undefined) {\n              return { mainAxis, crossAxis };\n            }\n            return undefined;\n          })(),\n          sameWidth: getBoolean(rootEl, \"sameWidth\"),\n          overlap: getBoolean(rootEl, \"overlap\"),\n          fitViewport: getBoolean(rootEl, \"fitViewport\"),\n          slide: getBoolean(rootEl, \"slide\"),\n        },\n        onSelect(details) {\n          const eventName = getString(rootEl, \"onSelect\");\n          if (eventName) {\n            const event = new CustomEvent(eventName, {\n              detail: details,\n              bubbles: true,\n            });\n            rootEl.dispatchEvent(event);\n\n            const parentId = rootEl.dataset.parent;\n            if (parentId) {\n              const parentMenu = doc.querySelector(`#${parentId}`);\n              if (parentMenu) {\n                const parentEvent = new CustomEvent(eventName, {\n                  detail: details,\n                  bubbles: true,\n                });\n                parentMenu.dispatchEvent(parentEvent);\n              }\n            }\n          }\n        },\n        onOpenChange(details) {\n          const eventName = getString(rootEl, \"onOpenChange\");\n          if (eventName) {\n            rootEl.dispatchEvent(\n              new CustomEvent(eventName, { detail: details }),\n            );\n          }\n        },\n        onEscapeKeyDown(details) {\n          const eventName = getString(rootEl, \"onEscapeKeyDown\");\n          if (eventName) {\n            rootEl.dispatchEvent(\n              new CustomEvent(eventName, { detail: details }),\n            );\n          }\n        },\n        onFocusOutside(details) {\n          const eventName = getString(rootEl, \"onFocusOutside\");\n          if (eventName) {\n            rootEl.dispatchEvent(\n              new CustomEvent(eventName, { detail: details }),\n            );\n          }\n        },\n        onHighlightChange(details) {\n          const eventName = getString(rootEl, \"onHighlightChange\");\n          if (eventName) {\n            rootEl.dispatchEvent(\n              new CustomEvent(eventName, { detail: details }),\n            );\n          }\n        },\n        onInteractOutside(details) {\n          const eventName = getString(rootEl, \"onInteractOutside\");\n          if (eventName) {\n            rootEl.dispatchEvent(\n              new CustomEvent(eventName, { detail: details }),\n            );\n          }\n        },\n        onPointerDownOutside(details) {\n          const eventName = getString(rootEl, \"onPointerDownOutside\");\n          if (eventName) {\n            rootEl.dispatchEvent(\n              new CustomEvent(eventName, { detail: details }),\n            );\n          }\n        },\n        navigate(details) {\n          const eventName = getString(rootEl, \"navigate\");\n          if (eventName) {\n            rootEl.dispatchEvent(\n              new CustomEvent(eventName, { detail: details }),\n            );\n          }\n        },\n      });\n\n      menusMap.set(id, instance);\n    });\n\n  menusMap.forEach((menu) => menu.init());\n\n  setTimeout(() => {\n    doc.querySelectorAll<HTMLElement>(selector).forEach((rootEl) => {\n      const id = rootEl.id || generateId(rootEl, \"menu\");\n      if (!menusMap.has(id) && rootEl.dataset.parent) {\n        const instance = new Menu(rootEl, { id });\n        instance.init();\n        menusMap.set(id, instance);\n      }\n    });\n\n    menusMap.forEach((parent) => {\n      const childIds =\n        parent.el.dataset.children?.split(\",\").map((id) => id.trim()) ?? [];\n      for (const childId of childIds) {\n        const child = menusMap.get(childId);\n        if (child) {\n          parent.setChild(child);\n          child.setParent(parent);\n        }\n      }\n    });\n\n    menusMap.forEach((menu) => {\n      if (!menu.parent) menu.render();\n    });\n    menusMap.forEach((menu) => {\n      if (menu.parent) menu.render();\n    });\n\n    setTimeout(() => {\n      menusMap.forEach((menu) => {\n        menu.api = menu.initApi();\n        if (menu.children.length > 0) menu.renderSubmenuTriggers();\n      });\n    }, 10);\n  }, 0);\n}\n", "/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nlet formatterCache = new Map<string, Intl.NumberFormat>();\n\nlet supportsSignDisplay = false;\ntry {\n  supportsSignDisplay = (new Intl.NumberFormat('de-DE', {signDisplay: 'exceptZero'})).resolvedOptions().signDisplay === 'exceptZero';\n  // eslint-disable-next-line no-empty\n} catch {}\n\nlet supportsUnit = false;\ntry {\n  supportsUnit = (new Intl.NumberFormat('de-DE', {style: 'unit', unit: 'degree'})).resolvedOptions().style === 'unit';\n  // eslint-disable-next-line no-empty\n} catch {}\n\n// Polyfill for units since Safari doesn't support them yet. See https://bugs.webkit.org/show_bug.cgi?id=215438.\n// Currently only polyfilling the unit degree in narrow format for ColorSlider in our supported locales.\n// Values were determined by switching to each locale manually in Chrome.\nconst UNITS = {\n  degree: {\n    narrow: {\n      default: '°',\n      'ja-JP': ' 度',\n      'zh-TW': '度',\n      'sl-SI': ' °'\n      // Arabic?? But Safari already doesn't use Arabic digits so might be ok...\n      // https://bugs.webkit.org/show_bug.cgi?id=218139\n    }\n  }\n};\n\nexport interface NumberFormatOptions extends Intl.NumberFormatOptions {\n  /** Overrides default numbering system for the current locale. */\n  numberingSystem?: string\n}\n\ninterface NumberRangeFormatPart extends Intl.NumberFormatPart {\n  source: 'startRange' | 'endRange' | 'shared'\n}\n\n/**\n * A wrapper around Intl.NumberFormat providing additional options, polyfills, and caching for performance.\n */\nexport class NumberFormatter implements Intl.NumberFormat {\n  private numberFormatter: Intl.NumberFormat;\n  private options: NumberFormatOptions;\n\n  constructor(locale: string, options: NumberFormatOptions = {}) {\n    this.numberFormatter = getCachedNumberFormatter(locale, options);\n    this.options = options;\n  }\n\n  /** Formats a number value as a string, according to the locale and options provided to the constructor. */\n  format(value: number): string {\n    let res = '';\n    if (!supportsSignDisplay && this.options.signDisplay != null) {\n      res = numberFormatSignDisplayPolyfill(this.numberFormatter, this.options.signDisplay, value);\n    } else {\n      res = this.numberFormatter.format(value);\n    }\n\n    if (this.options.style === 'unit' && !supportsUnit) {\n      let {unit, unitDisplay = 'short', locale} = this.resolvedOptions();\n      if (!unit) {\n        return res;\n      }\n      let values = UNITS[unit]?.[unitDisplay];\n      res += values[locale] || values.default;\n    }\n\n    return res;\n  }\n\n  /** Formats a number to an array of parts such as separators, digits, punctuation, and more. */\n  formatToParts(value: number): Intl.NumberFormatPart[] {\n    // TODO: implement signDisplay for formatToParts\n    return this.numberFormatter.formatToParts(value);\n  }\n\n  /** Formats a number range as a string. */\n  formatRange(start: number, end: number): string {\n    if (typeof this.numberFormatter.formatRange === 'function') {\n      return this.numberFormatter.formatRange(start, end);\n    }\n\n    if (end < start) {\n      throw new RangeError('End date must be >= start date');\n    }\n\n    // Very basic fallback for old browsers.\n    return `${this.format(start)} – ${this.format(end)}`;\n  }\n\n  /** Formats a number range as an array of parts. */\n  formatRangeToParts(start: number, end: number): NumberRangeFormatPart[] {\n    if (typeof this.numberFormatter.formatRangeToParts === 'function') {\n      return this.numberFormatter.formatRangeToParts(start, end);\n    }\n\n    if (end < start) {\n      throw new RangeError('End date must be >= start date');\n    }\n\n    let startParts = this.numberFormatter.formatToParts(start);\n    let endParts = this.numberFormatter.formatToParts(end);\n    return [\n      ...startParts.map(p => ({...p, source: 'startRange'} as NumberRangeFormatPart)),\n      {type: 'literal', value: ' – ', source: 'shared'},\n      ...endParts.map(p => ({...p, source: 'endRange'} as NumberRangeFormatPart))\n    ];\n  }\n\n  /** Returns the resolved formatting options based on the values passed to the constructor. */\n  resolvedOptions(): Intl.ResolvedNumberFormatOptions {\n    let options = this.numberFormatter.resolvedOptions();\n    if (!supportsSignDisplay && this.options.signDisplay != null) {\n      options = {...options, signDisplay: this.options.signDisplay};\n    }\n\n    if (!supportsUnit && this.options.style === 'unit') {\n      options = {...options, style: 'unit', unit: this.options.unit, unitDisplay: this.options.unitDisplay};\n    }\n\n    return options;\n  }\n}\n\nfunction getCachedNumberFormatter(locale: string, options: NumberFormatOptions = {}): Intl.NumberFormat {\n  let {numberingSystem} = options;\n  if (numberingSystem && locale.includes('-nu-')) {\n    if (!locale.includes('-u-')) {\n      locale += '-u-';\n    }\n    locale += `-nu-${numberingSystem}`;\n  }\n\n  if (options.style === 'unit' && !supportsUnit) {\n    let {unit, unitDisplay = 'short'} = options;\n    if (!unit) {\n      throw new Error('unit option must be provided with style: \"unit\"');\n    }\n    if (!UNITS[unit]?.[unitDisplay]) {\n      throw new Error(`Unsupported unit ${unit} with unitDisplay = ${unitDisplay}`);\n    }\n    options = {...options, style: 'decimal'};\n  }\n\n  let cacheKey = locale + (options ? Object.entries(options).sort((a, b) => a[0] < b[0] ? -1 : 1).join() : '');\n  if (formatterCache.has(cacheKey)) {\n    return formatterCache.get(cacheKey)!;\n  }\n\n  let numberFormatter = new Intl.NumberFormat(locale, options);\n  formatterCache.set(cacheKey, numberFormatter);\n  return numberFormatter;\n}\n\n/** @private - exported for tests */\nexport function numberFormatSignDisplayPolyfill(numberFormat: Intl.NumberFormat, signDisplay: string, num: number): string {\n  if (signDisplay === 'auto') {\n    return numberFormat.format(num);\n  } else if (signDisplay === 'never') {\n    return numberFormat.format(Math.abs(num));\n  } else {\n    let needsPositiveSign = false;\n    if (signDisplay === 'always') {\n      needsPositiveSign = num > 0 || Object.is(num, 0);\n    } else if (signDisplay === 'exceptZero') {\n      if (Object.is(num, -0) || Object.is(num, 0)) {\n        num = Math.abs(num);\n      } else {\n        needsPositiveSign = num > 0;\n      }\n    }\n\n    if (needsPositiveSign) {\n      let negative = numberFormat.format(-num);\n      let noSign = numberFormat.format(num);\n      // ignore RTL/LTR marker character\n      let minus = negative.replace(noSign, '').replace(/\\u200e|\\u061C/, '');\n      if ([...minus].length !== 1) {\n        console.warn('@react-aria/i18n polyfill for NumberFormat signDisplay: Unsupported case');\n      }\n      let positive = negative.replace(noSign, '!!!').replace(minus, '+').replace('!!!', noSign);\n      return positive;\n    } else {\n      return numberFormat.format(num);\n    }\n  }\n}\n", "/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {NumberFormatter} from './NumberFormatter';\n\ninterface Symbols {\n  minusSign?: string,\n  plusSign?: string,\n  decimal?: string,\n  group?: string,\n  literals: RegExp,\n  numeral: RegExp,\n  index: (v: string) => string\n}\n\nconst CURRENCY_SIGN_REGEX = new RegExp('^.*\\\\(.*\\\\).*$');\nconst NUMBERING_SYSTEMS = ['latn', 'arab', 'hanidec', 'deva', 'beng', 'fullwide'];\n\n/**\n * A NumberParser can be used to perform locale-aware parsing of numbers from Unicode strings,\n * as well as validation of partial user input. It automatically detects the numbering system\n * used in the input, and supports parsing decimals, percentages, currency values, and units\n * according to the locale.\n */\nexport class NumberParser {\n  private locale: string;\n  private options: Intl.NumberFormatOptions;\n\n  constructor(locale: string, options: Intl.NumberFormatOptions = {}) {\n    this.locale = locale;\n    this.options = options;\n  }\n\n  /**\n   * Parses the given string to a number. Returns NaN if a valid number could not be parsed.\n   */\n  parse(value: string): number {\n    return getNumberParserImpl(this.locale, this.options, value).parse(value);\n  }\n\n  /**\n   * Returns whether the given string could potentially be a valid number. This should be used to\n   * validate user input as the user types. If a `minValue` or `maxValue` is provided, the validity\n   * of the minus/plus sign characters can be checked.\n   */\n  isValidPartialNumber(value: string, minValue?: number, maxValue?: number): boolean {\n    return getNumberParserImpl(this.locale, this.options, value).isValidPartialNumber(value, minValue, maxValue);\n  }\n\n  /**\n   * Returns a numbering system for which the given string is valid in the current locale.\n   * If no numbering system could be detected, the default numbering system for the current\n   * locale is returned.\n   */\n  getNumberingSystem(value: string): string {\n    return getNumberParserImpl(this.locale, this.options, value).options.numberingSystem;\n  }\n}\n\nconst numberParserCache = new Map<string, NumberParserImpl>();\nfunction getNumberParserImpl(locale: string, options: Intl.NumberFormatOptions, value: string) {\n  // First try the default numbering system for the provided locale\n  let defaultParser = getCachedNumberParser(locale, options);\n\n  // If that doesn't match, and the locale doesn't include a hard coded numbering system,\n  // try each of the other supported numbering systems until we find one that matches.\n  if (!locale.includes('-nu-') && !defaultParser.isValidPartialNumber(value)) {\n    for (let numberingSystem of NUMBERING_SYSTEMS) {\n      if (numberingSystem !== defaultParser.options.numberingSystem) {\n        let parser = getCachedNumberParser(locale + (locale.includes('-u-') ? '-nu-' : '-u-nu-') + numberingSystem, options);\n        if (parser.isValidPartialNumber(value)) {\n          return parser;\n        }\n      }\n    }\n  }\n\n  return defaultParser;\n}\n\nfunction getCachedNumberParser(locale: string, options: Intl.NumberFormatOptions) {\n  let cacheKey = locale + (options ? Object.entries(options).sort((a, b) => a[0] < b[0] ? -1 : 1).join() : '');\n  let parser = numberParserCache.get(cacheKey);\n  if (!parser) {\n    parser = new NumberParserImpl(locale, options);\n    numberParserCache.set(cacheKey, parser);\n  }\n\n  return parser;\n}\n\n// The actual number parser implementation. Instances of this class are cached\n// based on the locale, options, and detected numbering system.\nclass NumberParserImpl {\n  formatter: Intl.NumberFormat;\n  options: Intl.ResolvedNumberFormatOptions;\n  symbols: Symbols;\n  locale: string;\n\n  constructor(locale: string, options: Intl.NumberFormatOptions = {}) {\n    this.locale = locale;\n    // see https://tc39.es/ecma402/#sec-setnfdigitoptions, when using roundingIncrement, the maximumFractionDigits and minimumFractionDigits must be equal\n    // by default, they are 0 and 3 respectively, so we set them to 0 if neither are set\n    if (options.roundingIncrement !== 1 && options.roundingIncrement != null) {\n      if (options.maximumFractionDigits == null && options.minimumFractionDigits == null) {\n        options.maximumFractionDigits = 0;\n        options.minimumFractionDigits = 0;\n      } else if (options.maximumFractionDigits == null) {\n        options.maximumFractionDigits = options.minimumFractionDigits;\n      } else if (options.minimumFractionDigits == null) {\n        options.minimumFractionDigits = options.maximumFractionDigits;\n      }\n      // if both are specified, let the normal Range Error be thrown\n    }\n    this.formatter = new Intl.NumberFormat(locale, options);\n    this.options = this.formatter.resolvedOptions();\n    this.symbols = getSymbols(locale, this.formatter, this.options, options);\n    if (this.options.style === 'percent' && ((this.options.minimumFractionDigits ?? 0) > 18 || (this.options.maximumFractionDigits ?? 0) > 18)) {\n      console.warn('NumberParser cannot handle percentages with greater than 18 decimal places, please reduce the number in your options.');\n    }\n  }\n\n  parse(value: string) {\n    // to parse the number, we need to remove anything that isn't actually part of the number, for example we want '-10.40' not '-10.40 USD'\n    let fullySanitizedValue = this.sanitize(value);\n\n    if (this.symbols.group) {\n      // Remove group characters, and replace decimal points and numerals with ASCII values.\n      fullySanitizedValue = replaceAll(fullySanitizedValue, this.symbols.group, '');\n    }\n    if (this.symbols.decimal) {\n      fullySanitizedValue = fullySanitizedValue.replace(this.symbols.decimal!, '.');\n    }\n    if (this.symbols.minusSign) {\n      fullySanitizedValue = fullySanitizedValue.replace(this.symbols.minusSign!, '-');\n    }\n    fullySanitizedValue = fullySanitizedValue.replace(this.symbols.numeral, this.symbols.index);\n\n    if (this.options.style === 'percent') {\n      // javascript is bad at dividing by 100 and maintaining the same significant figures, so perform it on the string before parsing\n      let isNegative = fullySanitizedValue.indexOf('-');\n      fullySanitizedValue = fullySanitizedValue.replace('-', '');\n      fullySanitizedValue = fullySanitizedValue.replace('+', '');\n      let index = fullySanitizedValue.indexOf('.');\n      if (index === -1) {\n        index = fullySanitizedValue.length;\n      }\n      fullySanitizedValue = fullySanitizedValue.replace('.', '');\n      if (index - 2 === 0) {\n        fullySanitizedValue = `0.${fullySanitizedValue}`;\n      } else if (index - 2 === -1) {\n        fullySanitizedValue = `0.0${fullySanitizedValue}`;\n      } else if (index - 2 === -2) {\n        fullySanitizedValue = '0.00';\n      } else {\n        fullySanitizedValue = `${fullySanitizedValue.slice(0, index - 2)}.${fullySanitizedValue.slice(index - 2)}`;\n      }\n      if (isNegative > -1) {\n        fullySanitizedValue = `-${fullySanitizedValue}`;\n      }\n    }\n\n    let newValue = fullySanitizedValue ? +fullySanitizedValue : NaN;\n    if (isNaN(newValue)) {\n      return NaN;\n    }\n\n    if (this.options.style === 'percent') {\n      // extra step for rounding percents to what our formatter would output\n      let options = {\n        ...this.options,\n        style: 'decimal' as const,\n        minimumFractionDigits: Math.min((this.options.minimumFractionDigits ?? 0) + 2, 20),\n        maximumFractionDigits: Math.min((this.options.maximumFractionDigits ?? 0) + 2, 20)\n      };\n      return (new NumberParser(this.locale, options)).parse(new NumberFormatter(this.locale, options).format(newValue));\n    }\n\n    // accounting will always be stripped to a positive number, so if it's accounting and has a () around everything, then we need to make it negative again\n    if (this.options.currencySign === 'accounting' && CURRENCY_SIGN_REGEX.test(value)) {\n      newValue = -1 * newValue;\n    }\n\n    return newValue;\n  }\n\n  sanitize(value: string) {\n    // Remove literals and whitespace, which are allowed anywhere in the string\n    value = value.replace(this.symbols.literals, '');\n\n    // Replace the ASCII minus sign with the minus sign used in the current locale\n    // so that both are allowed in case the user's keyboard doesn't have the locale's minus sign.\n    if (this.symbols.minusSign) {\n      value = value.replace('-', this.symbols.minusSign);\n    }\n\n    // In arab numeral system, their decimal character is 1643, but most keyboards don't type that\n    // instead they use the , (44) character or apparently the (1548) character.\n    if (this.options.numberingSystem === 'arab') {\n      if (this.symbols.decimal) {\n        value = value.replace(',', this.symbols.decimal);\n        value = value.replace(String.fromCharCode(1548), this.symbols.decimal);\n      }\n      if (this.symbols.group) {\n        value = replaceAll(value, '.', this.symbols.group);\n      }\n    }\n\n    // In some locale styles, such as swiss currency, the group character can be a special single quote\n    // that keyboards don't typically have. This expands the character to include the easier to type single quote.\n    if (this.symbols.group === '’' && value.includes(\"'\")) {\n      value = replaceAll(value, \"'\", this.symbols.group);\n    }\n\n    // fr-FR group character is narrow non-breaking space, char code 8239 (U+202F), but that's not a key on the french keyboard,\n    // so allow space and non-breaking space as a group char as well\n    if (this.options.locale === 'fr-FR' && this.symbols.group) {\n      value = replaceAll(value, ' ', this.symbols.group);\n      value = replaceAll(value, /\\u00A0/g, this.symbols.group);\n    }\n\n    return value;\n  }\n\n  isValidPartialNumber(value: string, minValue: number = -Infinity, maxValue: number = Infinity): boolean {\n    value = this.sanitize(value);\n\n    // Remove minus or plus sign, which must be at the start of the string.\n    if (this.symbols.minusSign && value.startsWith(this.symbols.minusSign) && minValue < 0) {\n      value = value.slice(this.symbols.minusSign.length);\n    } else if (this.symbols.plusSign && value.startsWith(this.symbols.plusSign) && maxValue > 0) {\n      value = value.slice(this.symbols.plusSign.length);\n    }\n\n    // Numbers cannot start with a group separator\n    if (this.symbols.group && value.startsWith(this.symbols.group)) {\n      return false;\n    }\n\n    // Numbers that can't have any decimal values fail if a decimal character is typed\n    if (this.symbols.decimal && value.indexOf(this.symbols.decimal) > -1 && this.options.maximumFractionDigits === 0) {\n      return false;\n    }\n\n    // Remove numerals, groups, and decimals\n    if (this.symbols.group) {\n      value = replaceAll(value, this.symbols.group, '');\n    }\n    value = value.replace(this.symbols.numeral, '');\n    if (this.symbols.decimal) {\n      value = value.replace(this.symbols.decimal, '');\n    }\n\n    // The number is valid if there are no remaining characters\n    return value.length === 0;\n  }\n}\n\nconst nonLiteralParts = new Set(['decimal', 'fraction', 'integer', 'minusSign', 'plusSign', 'group']);\n\n// This list is derived from https://www.unicode.org/cldr/charts/43/supplemental/language_plural_rules.html#comparison and includes\n// all unique numbers which we need to check in order to determine all the plural forms for a given locale.\n// See: https://github.com/adobe/react-spectrum/pull/5134/files#r1337037855 for used script\nconst pluralNumbers = [\n  0, 4, 2, 1, 11, 20, 3, 7, 100, 21, 0.1, 1.1\n];\n\nfunction getSymbols(locale: string, formatter: Intl.NumberFormat, intlOptions: Intl.ResolvedNumberFormatOptions, originalOptions: Intl.NumberFormatOptions): Symbols {\n  // formatter needs access to all decimal places in order to generate the correct literal strings for the plural set\n  let symbolFormatter = new Intl.NumberFormat(locale, {...intlOptions,\n    // Resets so we get the full range of symbols\n    minimumSignificantDigits: 1,\n    maximumSignificantDigits: 21,\n    roundingIncrement: 1,\n    roundingPriority: 'auto',\n    roundingMode: 'halfExpand'\n  });\n  // Note: some locale's don't add a group symbol until there is a ten thousands place\n  let allParts = symbolFormatter.formatToParts(-10000.111);\n  let posAllParts = symbolFormatter.formatToParts(10000.111);\n  let pluralParts = pluralNumbers.map(n => symbolFormatter.formatToParts(n));\n\n  let minusSign = allParts.find(p => p.type === 'minusSign')?.value ?? '-';\n  let plusSign = posAllParts.find(p => p.type === 'plusSign')?.value;\n\n  // Safari does not support the signDisplay option, but our number parser polyfills it.\n  // If no plus sign was returned, but the original options contained signDisplay, default to the '+' character.\n  if (!plusSign && (originalOptions?.signDisplay === 'exceptZero' || originalOptions?.signDisplay === 'always')) {\n    plusSign = '+';\n  }\n\n  // If maximumSignificantDigits is 1 (the minimum) then we won't get decimal characters out of the above formatters\n  // Percent also defaults to 0 fractionDigits, so we need to make a new one that isn't percent to get an accurate decimal\n  let decimalParts = new Intl.NumberFormat(locale, {...intlOptions, minimumFractionDigits: 2, maximumFractionDigits: 2}).formatToParts(0.001);\n\n  let decimal = decimalParts.find(p => p.type === 'decimal')?.value;\n  let group = allParts.find(p => p.type === 'group')?.value;\n\n  // this set is also for a regex, it's all literals that might be in the string we want to eventually parse that\n  // don't contribute to the numerical value\n  let allPartsLiterals = allParts.filter(p => !nonLiteralParts.has(p.type)).map(p => escapeRegex(p.value));\n  let pluralPartsLiterals = pluralParts.flatMap(p => p.filter(p => !nonLiteralParts.has(p.type)).map(p => escapeRegex(p.value)));\n  let sortedLiterals = [...new Set([...allPartsLiterals, ...pluralPartsLiterals])].sort((a, b) => b.length - a.length);\n\n  let literals = sortedLiterals.length === 0 ?\n      new RegExp('[\\\\p{White_Space}]', 'gu') :\n      new RegExp(`${sortedLiterals.join('|')}|[\\\\p{White_Space}]`, 'gu');\n\n  // These are for replacing non-latn characters with the latn equivalent\n  let numerals = [...new Intl.NumberFormat(intlOptions.locale, {useGrouping: false}).format(9876543210)].reverse();\n  let indexes = new Map(numerals.map((d, i) => [d, i]));\n  let numeral = new RegExp(`[${numerals.join('')}]`, 'g');\n  let index = d => String(indexes.get(d));\n\n  return {minusSign, plusSign, decimal, group, literals, numeral, index};\n}\n\nfunction replaceAll(str: string, find: string | RegExp, replace: string) {\n  if (str.replaceAll) {\n    return str.replaceAll(find, replace);\n  }\n\n  return str.split(find).join(replace);\n}\n\nfunction escapeRegex(string: string) {\n  return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n", "import { createAnatomy } from '@zag-js/anatomy';\nimport { raf, setElementValue, addDomEvent, isSafari, requestPointerLock, observeAttributes, trackFormControl, MAX_Z_INDEX, dataAttr, isLeftClick, getEventPoint, getWindow, ariaAttr, isComposingEvent, getEventStep, isModifierKey } from '@zag-js/dom-query';\nimport { isValueAtMax, isValueAtMin, clampValue, decrementValue, incrementValue, callAll, isValueWithinRange, createSplitProps, roundToDpr, wrap } from '@zag-js/utils';\nimport { setup, memo } from '@zag-js/core';\nimport { NumberParser } from '@internationalized/number';\nimport { createProps } from '@zag-js/types';\n\n// src/number-input.anatomy.ts\nvar anatomy = createAnatomy(\"numberInput\").parts(\n  \"root\",\n  \"label\",\n  \"input\",\n  \"control\",\n  \"valueText\",\n  \"incrementTrigger\",\n  \"decrementTrigger\",\n  \"scrubber\"\n);\nvar parts = anatomy.build();\nvar getRootId = (ctx) => ctx.ids?.root ?? `number-input:${ctx.id}`;\nvar getInputId = (ctx) => ctx.ids?.input ?? `number-input:${ctx.id}:input`;\nvar getIncrementTriggerId = (ctx) => ctx.ids?.incrementTrigger ?? `number-input:${ctx.id}:inc`;\nvar getDecrementTriggerId = (ctx) => ctx.ids?.decrementTrigger ?? `number-input:${ctx.id}:dec`;\nvar getScrubberId = (ctx) => ctx.ids?.scrubber ?? `number-input:${ctx.id}:scrubber`;\nvar getCursorId = (ctx) => `number-input:${ctx.id}:cursor`;\nvar getLabelId = (ctx) => ctx.ids?.label ?? `number-input:${ctx.id}:label`;\nvar getInputEl = (ctx) => ctx.getById(getInputId(ctx));\nvar getIncrementTriggerEl = (ctx) => ctx.getById(getIncrementTriggerId(ctx));\nvar getDecrementTriggerEl = (ctx) => ctx.getById(getDecrementTriggerId(ctx));\nvar getCursorEl = (ctx) => ctx.getDoc().getElementById(getCursorId(ctx));\nvar getPressedTriggerEl = (ctx, hint) => {\n  let btnEl = null;\n  if (hint === \"increment\") {\n    btnEl = getIncrementTriggerEl(ctx);\n  }\n  if (hint === \"decrement\") {\n    btnEl = getDecrementTriggerEl(ctx);\n  }\n  return btnEl;\n};\nvar setupVirtualCursor = (ctx, point) => {\n  if (isSafari()) return;\n  createVirtualCursor(ctx, point);\n  return () => {\n    getCursorEl(ctx)?.remove();\n  };\n};\nvar preventTextSelection = (ctx) => {\n  const doc = ctx.getDoc();\n  const html = doc.documentElement;\n  const body = doc.body;\n  body.style.pointerEvents = \"none\";\n  html.style.userSelect = \"none\";\n  html.style.cursor = \"ew-resize\";\n  return () => {\n    body.style.pointerEvents = \"\";\n    html.style.userSelect = \"\";\n    html.style.cursor = \"\";\n    if (!html.style.length) {\n      html.removeAttribute(\"style\");\n    }\n    if (!body.style.length) {\n      body.removeAttribute(\"style\");\n    }\n  };\n};\nvar getMousemoveValue = (ctx, opts) => {\n  const { point, isRtl, event } = opts;\n  const win = ctx.getWin();\n  const x = roundToDpr(event.movementX, win.devicePixelRatio);\n  const y = roundToDpr(event.movementY, win.devicePixelRatio);\n  let hint = x > 0 ? \"increment\" : x < 0 ? \"decrement\" : null;\n  if (isRtl && hint === \"increment\") hint = \"decrement\";\n  if (isRtl && hint === \"decrement\") hint = \"increment\";\n  const newPoint = { x: point.x + x, y: point.y + y };\n  const width = win.innerWidth;\n  const half = roundToDpr(7.5, win.devicePixelRatio);\n  newPoint.x = wrap(newPoint.x + half, width) - half;\n  return { hint, point: newPoint };\n};\nvar createVirtualCursor = (ctx, point) => {\n  const doc = ctx.getDoc();\n  const el = doc.createElement(\"div\");\n  el.className = \"scrubber--cursor\";\n  el.id = getCursorId(ctx);\n  Object.assign(el.style, {\n    width: \"15px\",\n    height: \"15px\",\n    position: \"fixed\",\n    pointerEvents: \"none\",\n    left: \"0px\",\n    top: \"0px\",\n    zIndex: MAX_Z_INDEX,\n    transform: point ? `translate3d(${point.x}px, ${point.y}px, 0px)` : void 0,\n    willChange: \"transform\"\n  });\n  el.innerHTML = `\n      <svg width=\"46\" height=\"15\" style=\"left: -15.5px; position: absolute; top: 0; filter: drop-shadow(rgba(0, 0, 0, 0.4) 0px 1px 1.1px);\">\n        <g transform=\"translate(2 3)\">\n          <path fill-rule=\"evenodd\" d=\"M 15 4.5L 15 2L 11.5 5.5L 15 9L 15 6.5L 31 6.5L 31 9L 34.5 5.5L 31 2L 31 4.5Z\" style=\"stroke-width: 2px; stroke: white;\"></path>\n          <path fill-rule=\"evenodd\" d=\"M 15 4.5L 15 2L 11.5 5.5L 15 9L 15 6.5L 31 6.5L 31 9L 34.5 5.5L 31 2L 31 4.5Z\"></path>\n        </g>\n      </svg>`;\n  doc.body.appendChild(el);\n};\n\n// src/cursor.ts\nfunction recordCursor(inputEl, scope) {\n  if (!inputEl || !scope.isActiveElement(inputEl)) return;\n  try {\n    const { selectionStart: start, selectionEnd: end, value } = inputEl;\n    if (start == null || end == null) return void 0;\n    return { start, end, value };\n  } catch {\n    return void 0;\n  }\n}\nfunction restoreCursor(inputEl, selection, scope) {\n  if (!inputEl || !scope.isActiveElement(inputEl)) return;\n  if (!selection) {\n    const len = inputEl.value.length;\n    inputEl.setSelectionRange(len, len);\n    return;\n  }\n  try {\n    const newValue = inputEl.value;\n    const { start, end, value: oldValue } = selection;\n    if (newValue === oldValue) {\n      inputEl.setSelectionRange(start, end);\n      return;\n    }\n    const newStart = getNewCursorPosition(oldValue, newValue, start);\n    const newEnd = start === end ? newStart : getNewCursorPosition(oldValue, newValue, end);\n    const clampedStart = Math.max(0, Math.min(newStart, newValue.length));\n    const clampedEnd = Math.max(clampedStart, Math.min(newEnd, newValue.length));\n    inputEl.setSelectionRange(clampedStart, clampedEnd);\n  } catch {\n    const len = inputEl.value.length;\n    inputEl.setSelectionRange(len, len);\n  }\n}\nfunction getNewCursorPosition(oldValue, newValue, oldPosition) {\n  const beforeCursor = oldValue.slice(0, oldPosition);\n  const afterCursor = oldValue.slice(oldPosition);\n  let prefixLength = 0;\n  const maxPrefixLength = Math.min(beforeCursor.length, newValue.length);\n  for (let i = 0; i < maxPrefixLength; i++) {\n    if (beforeCursor[i] === newValue[i]) {\n      prefixLength = i + 1;\n    } else {\n      break;\n    }\n  }\n  let suffixLength = 0;\n  const maxSuffixLength = Math.min(afterCursor.length, newValue.length - prefixLength);\n  for (let i = 0; i < maxSuffixLength; i++) {\n    const oldIndex = afterCursor.length - 1 - i;\n    const newIndex = newValue.length - 1 - i;\n    if (afterCursor[oldIndex] === newValue[newIndex]) {\n      suffixLength = i + 1;\n    } else {\n      break;\n    }\n  }\n  if (prefixLength >= beforeCursor.length) {\n    return prefixLength;\n  }\n  if (suffixLength >= afterCursor.length) {\n    return newValue.length - suffixLength;\n  }\n  if (prefixLength > 0) {\n    return prefixLength;\n  }\n  if (suffixLength > 0) {\n    return newValue.length - suffixLength;\n  }\n  if (oldValue.length > 0) {\n    const ratio = oldPosition / oldValue.length;\n    return Math.round(ratio * newValue.length);\n  }\n  return newValue.length;\n}\n\n// src/number-input.connect.ts\nfunction connect(service, normalize) {\n  const { state, send, prop, scope, computed } = service;\n  const focused = state.hasTag(\"focus\");\n  const disabled = computed(\"isDisabled\");\n  const readOnly = !!prop(\"readOnly\");\n  const required = !!prop(\"required\");\n  const scrubbing = state.matches(\"scrubbing\");\n  const empty = computed(\"isValueEmpty\");\n  const invalid = computed(\"isOutOfRange\") || !!prop(\"invalid\");\n  const isIncrementDisabled = disabled || !computed(\"canIncrement\") || readOnly;\n  const isDecrementDisabled = disabled || !computed(\"canDecrement\") || readOnly;\n  const translations = prop(\"translations\");\n  return {\n    focused,\n    invalid,\n    empty,\n    value: computed(\"formattedValue\"),\n    valueAsNumber: computed(\"valueAsNumber\"),\n    setValue(value) {\n      send({ type: \"VALUE.SET\", value });\n    },\n    clearValue() {\n      send({ type: \"VALUE.CLEAR\" });\n    },\n    increment() {\n      send({ type: \"VALUE.INCREMENT\" });\n    },\n    decrement() {\n      send({ type: \"VALUE.DECREMENT\" });\n    },\n    setToMax() {\n      send({ type: \"VALUE.SET\", value: prop(\"max\") });\n    },\n    setToMin() {\n      send({ type: \"VALUE.SET\", value: prop(\"min\") });\n    },\n    focus() {\n      getInputEl(scope)?.focus();\n    },\n    getRootProps() {\n      return normalize.element({\n        id: getRootId(scope),\n        ...parts.root.attrs,\n        dir: prop(\"dir\"),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-focus\": dataAttr(focused),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-scrubbing\": dataAttr(scrubbing)\n      });\n    },\n    getLabelProps() {\n      return normalize.label({\n        ...parts.label.attrs,\n        dir: prop(\"dir\"),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-focus\": dataAttr(focused),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-required\": dataAttr(required),\n        \"data-scrubbing\": dataAttr(scrubbing),\n        id: getLabelId(scope),\n        htmlFor: getInputId(scope)\n      });\n    },\n    getControlProps() {\n      return normalize.element({\n        ...parts.control.attrs,\n        dir: prop(\"dir\"),\n        role: \"group\",\n        \"aria-disabled\": disabled,\n        \"data-focus\": dataAttr(focused),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-scrubbing\": dataAttr(scrubbing),\n        \"aria-invalid\": ariaAttr(invalid)\n      });\n    },\n    getValueTextProps() {\n      return normalize.element({\n        ...parts.valueText.attrs,\n        dir: prop(\"dir\"),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-focus\": dataAttr(focused),\n        \"data-scrubbing\": dataAttr(scrubbing)\n      });\n    },\n    getInputProps() {\n      return normalize.input({\n        ...parts.input.attrs,\n        dir: prop(\"dir\"),\n        name: prop(\"name\"),\n        form: prop(\"form\"),\n        id: getInputId(scope),\n        role: \"spinbutton\",\n        defaultValue: computed(\"formattedValue\"),\n        pattern: prop(\"formatOptions\") ? void 0 : prop(\"pattern\"),\n        inputMode: prop(\"inputMode\"),\n        \"aria-invalid\": ariaAttr(invalid),\n        \"data-invalid\": dataAttr(invalid),\n        disabled,\n        \"data-disabled\": dataAttr(disabled),\n        readOnly,\n        required: prop(\"required\"),\n        autoComplete: \"off\",\n        autoCorrect: \"off\",\n        spellCheck: \"false\",\n        type: \"text\",\n        \"aria-roledescription\": \"numberfield\",\n        \"aria-valuemin\": prop(\"min\"),\n        \"aria-valuemax\": prop(\"max\"),\n        \"aria-valuenow\": Number.isNaN(computed(\"valueAsNumber\")) ? void 0 : computed(\"valueAsNumber\"),\n        \"aria-valuetext\": computed(\"valueText\"),\n        \"data-scrubbing\": dataAttr(scrubbing),\n        onFocus() {\n          send({ type: \"INPUT.FOCUS\" });\n        },\n        onBlur() {\n          send({ type: \"INPUT.BLUR\" });\n        },\n        onInput(event) {\n          const selection = recordCursor(event.currentTarget, scope);\n          send({ type: \"INPUT.CHANGE\", target: event.currentTarget, hint: \"set\", selection });\n        },\n        onBeforeInput(event) {\n          try {\n            const { selectionStart, selectionEnd, value } = event.currentTarget;\n            const nextValue = value.slice(0, selectionStart) + (event.data ?? \"\") + value.slice(selectionEnd);\n            const isValid = computed(\"parser\").isValidPartialNumber(nextValue);\n            if (!isValid) {\n              event.preventDefault();\n            }\n          } catch {\n          }\n        },\n        onKeyDown(event) {\n          if (event.defaultPrevented) return;\n          if (readOnly) return;\n          if (isComposingEvent(event)) return;\n          const step = getEventStep(event) * prop(\"step\");\n          const keyMap = {\n            ArrowUp() {\n              send({ type: \"INPUT.ARROW_UP\", step });\n              event.preventDefault();\n            },\n            ArrowDown() {\n              send({ type: \"INPUT.ARROW_DOWN\", step });\n              event.preventDefault();\n            },\n            Home() {\n              if (isModifierKey(event)) return;\n              send({ type: \"INPUT.HOME\" });\n              event.preventDefault();\n            },\n            End() {\n              if (isModifierKey(event)) return;\n              send({ type: \"INPUT.END\" });\n              event.preventDefault();\n            },\n            Enter(event2) {\n              const selection = recordCursor(event2.currentTarget, scope);\n              send({ type: \"INPUT.ENTER\", selection });\n            }\n          };\n          const exec = keyMap[event.key];\n          exec?.(event);\n        }\n      });\n    },\n    getDecrementTriggerProps() {\n      return normalize.button({\n        ...parts.decrementTrigger.attrs,\n        dir: prop(\"dir\"),\n        id: getDecrementTriggerId(scope),\n        disabled: isDecrementDisabled,\n        \"data-disabled\": dataAttr(isDecrementDisabled),\n        \"aria-label\": translations.decrementLabel,\n        type: \"button\",\n        tabIndex: -1,\n        \"aria-controls\": getInputId(scope),\n        \"data-scrubbing\": dataAttr(scrubbing),\n        onPointerDown(event) {\n          if (isDecrementDisabled) return;\n          if (!isLeftClick(event)) return;\n          send({ type: \"TRIGGER.PRESS_DOWN\", hint: \"decrement\", pointerType: event.pointerType });\n          if (event.pointerType === \"mouse\") {\n            event.preventDefault();\n          }\n          if (event.pointerType === \"touch\") {\n            event.currentTarget?.focus({ preventScroll: true });\n          }\n        },\n        onPointerUp(event) {\n          send({ type: \"TRIGGER.PRESS_UP\", hint: \"decrement\", pointerType: event.pointerType });\n        },\n        onPointerLeave() {\n          if (isDecrementDisabled) return;\n          send({ type: \"TRIGGER.PRESS_UP\", hint: \"decrement\" });\n        }\n      });\n    },\n    getIncrementTriggerProps() {\n      return normalize.button({\n        ...parts.incrementTrigger.attrs,\n        dir: prop(\"dir\"),\n        id: getIncrementTriggerId(scope),\n        disabled: isIncrementDisabled,\n        \"data-disabled\": dataAttr(isIncrementDisabled),\n        \"aria-label\": translations.incrementLabel,\n        type: \"button\",\n        tabIndex: -1,\n        \"aria-controls\": getInputId(scope),\n        \"data-scrubbing\": dataAttr(scrubbing),\n        onPointerDown(event) {\n          if (isIncrementDisabled || !isLeftClick(event)) return;\n          send({ type: \"TRIGGER.PRESS_DOWN\", hint: \"increment\", pointerType: event.pointerType });\n          if (event.pointerType === \"mouse\") {\n            event.preventDefault();\n          }\n          if (event.pointerType === \"touch\") {\n            event.currentTarget?.focus({ preventScroll: true });\n          }\n        },\n        onPointerUp(event) {\n          send({ type: \"TRIGGER.PRESS_UP\", hint: \"increment\", pointerType: event.pointerType });\n        },\n        onPointerLeave(event) {\n          send({ type: \"TRIGGER.PRESS_UP\", hint: \"increment\", pointerType: event.pointerType });\n        }\n      });\n    },\n    getScrubberProps() {\n      return normalize.element({\n        ...parts.scrubber.attrs,\n        dir: prop(\"dir\"),\n        \"data-disabled\": dataAttr(disabled),\n        id: getScrubberId(scope),\n        role: \"presentation\",\n        \"data-scrubbing\": dataAttr(scrubbing),\n        onMouseDown(event) {\n          if (disabled) return;\n          if (!isLeftClick(event)) return;\n          const point = getEventPoint(event);\n          const win = getWindow(event.currentTarget);\n          const dpr = win.devicePixelRatio;\n          point.x = point.x - roundToDpr(7.5, dpr);\n          point.y = point.y - roundToDpr(7.5, dpr);\n          send({ type: \"SCRUBBER.PRESS_DOWN\", point });\n          event.preventDefault();\n        },\n        style: {\n          cursor: disabled ? void 0 : \"ew-resize\"\n        }\n      });\n    }\n  };\n}\nvar createFormatter = (locale, options = {}) => {\n  return new Intl.NumberFormat(locale, options);\n};\nvar createParser = (locale, options = {}) => {\n  return new NumberParser(locale, options);\n};\nvar parseValue = (value, params) => {\n  const { prop, computed } = params;\n  if (!prop(\"formatOptions\")) return parseFloat(value);\n  if (value === \"\") return Number.NaN;\n  return computed(\"parser\").parse(value);\n};\nvar formatValue = (value, params) => {\n  const { prop, computed } = params;\n  if (Number.isNaN(value)) return \"\";\n  if (!prop(\"formatOptions\")) return value.toString();\n  return computed(\"formatter\").format(value);\n};\nvar getDefaultStep = (step, formatOptions) => {\n  let defaultStep = step !== void 0 && !Number.isNaN(step) ? step : 1;\n  if (formatOptions?.style === \"percent\" && (step === void 0 || Number.isNaN(step))) {\n    defaultStep = 0.01;\n  }\n  return defaultStep;\n};\n\n// src/number-input.machine.ts\nvar { choose, guards, createMachine } = setup();\nvar { not, and } = guards;\nvar machine = createMachine({\n  props({ props: props2 }) {\n    const step = getDefaultStep(props2.step, props2.formatOptions);\n    return {\n      dir: \"ltr\",\n      locale: \"en-US\",\n      focusInputOnChange: true,\n      clampValueOnBlur: !props2.allowOverflow,\n      allowOverflow: false,\n      inputMode: \"decimal\",\n      pattern: \"-?[0-9]*(.[0-9]+)?\",\n      defaultValue: \"\",\n      step,\n      min: Number.MIN_SAFE_INTEGER,\n      max: Number.MAX_SAFE_INTEGER,\n      spinOnPress: true,\n      ...props2,\n      translations: {\n        incrementLabel: \"increment value\",\n        decrementLabel: \"decrease value\",\n        ...props2.translations\n      }\n    };\n  },\n  initialState() {\n    return \"idle\";\n  },\n  context({ prop, bindable, getComputed }) {\n    return {\n      value: bindable(() => ({\n        defaultValue: prop(\"defaultValue\"),\n        value: prop(\"value\"),\n        onChange(value) {\n          const computed = getComputed();\n          const valueAsNumber = parseValue(value, { computed, prop });\n          prop(\"onValueChange\")?.({ value, valueAsNumber });\n        }\n      })),\n      hint: bindable(() => ({ defaultValue: null })),\n      scrubberCursorPoint: bindable(() => ({\n        defaultValue: null,\n        hash(value) {\n          return value ? `x:${value.x}, y:${value.y}` : \"\";\n        }\n      })),\n      fieldsetDisabled: bindable(() => ({ defaultValue: false }))\n    };\n  },\n  computed: {\n    isRtl: ({ prop }) => prop(\"dir\") === \"rtl\",\n    valueAsNumber: ({ context, computed, prop }) => parseValue(context.get(\"value\"), { computed, prop }),\n    formattedValue: ({ computed, prop }) => formatValue(computed(\"valueAsNumber\"), { computed, prop }),\n    isAtMin: ({ computed, prop }) => isValueAtMin(computed(\"valueAsNumber\"), prop(\"min\")),\n    isAtMax: ({ computed, prop }) => isValueAtMax(computed(\"valueAsNumber\"), prop(\"max\")),\n    isOutOfRange: ({ computed, prop }) => !isValueWithinRange(computed(\"valueAsNumber\"), prop(\"min\"), prop(\"max\")),\n    isValueEmpty: ({ context }) => context.get(\"value\") === \"\",\n    isDisabled: ({ prop, context }) => !!prop(\"disabled\") || context.get(\"fieldsetDisabled\"),\n    canIncrement: ({ prop, computed }) => prop(\"allowOverflow\") || !computed(\"isAtMax\"),\n    canDecrement: ({ prop, computed }) => prop(\"allowOverflow\") || !computed(\"isAtMin\"),\n    valueText: ({ prop, context }) => prop(\"translations\").valueText?.(context.get(\"value\")),\n    formatter: memo(\n      ({ prop }) => [prop(\"locale\"), prop(\"formatOptions\")],\n      ([locale, formatOptions]) => createFormatter(locale, formatOptions)\n    ),\n    parser: memo(\n      ({ prop }) => [prop(\"locale\"), prop(\"formatOptions\")],\n      ([locale, formatOptions]) => createParser(locale, formatOptions)\n    )\n  },\n  watch({ track, action, context, computed, prop }) {\n    track([() => context.get(\"value\"), () => prop(\"locale\"), () => JSON.stringify(prop(\"formatOptions\"))], () => {\n      action([\"syncInputElement\"]);\n    });\n    track([() => computed(\"isOutOfRange\")], () => {\n      action([\"invokeOnInvalid\"]);\n    });\n    track([() => context.hash(\"scrubberCursorPoint\")], () => {\n      action([\"setVirtualCursorPosition\"]);\n    });\n  },\n  effects: [\"trackFormControl\"],\n  on: {\n    \"VALUE.SET\": {\n      actions: [\"setRawValue\"]\n    },\n    \"VALUE.CLEAR\": {\n      actions: [\"clearValue\"]\n    },\n    \"VALUE.INCREMENT\": {\n      actions: [\"increment\"]\n    },\n    \"VALUE.DECREMENT\": {\n      actions: [\"decrement\"]\n    }\n  },\n  states: {\n    idle: {\n      on: {\n        \"TRIGGER.PRESS_DOWN\": [\n          { guard: \"isTouchPointer\", target: \"before:spin\", actions: [\"setHint\"] },\n          {\n            target: \"before:spin\",\n            actions: [\"focusInput\", \"invokeOnFocus\", \"setHint\"]\n          }\n        ],\n        \"SCRUBBER.PRESS_DOWN\": {\n          target: \"scrubbing\",\n          actions: [\"focusInput\", \"invokeOnFocus\", \"setHint\", \"setCursorPoint\"]\n        },\n        \"INPUT.FOCUS\": {\n          target: \"focused\",\n          actions: [\"focusInput\", \"invokeOnFocus\"]\n        }\n      }\n    },\n    focused: {\n      tags: [\"focus\"],\n      effects: [\"attachWheelListener\"],\n      on: {\n        \"TRIGGER.PRESS_DOWN\": [\n          { guard: \"isTouchPointer\", target: \"before:spin\", actions: [\"setHint\"] },\n          { target: \"before:spin\", actions: [\"focusInput\", \"setHint\"] }\n        ],\n        \"SCRUBBER.PRESS_DOWN\": {\n          target: \"scrubbing\",\n          actions: [\"focusInput\", \"setHint\", \"setCursorPoint\"]\n        },\n        \"INPUT.ARROW_UP\": {\n          actions: [\"increment\"]\n        },\n        \"INPUT.ARROW_DOWN\": {\n          actions: [\"decrement\"]\n        },\n        \"INPUT.HOME\": {\n          actions: [\"decrementToMin\"]\n        },\n        \"INPUT.END\": {\n          actions: [\"incrementToMax\"]\n        },\n        \"INPUT.CHANGE\": {\n          actions: [\"setValue\", \"setHint\"]\n        },\n        \"INPUT.BLUR\": [\n          {\n            guard: and(\"clampValueOnBlur\", not(\"isInRange\")),\n            target: \"idle\",\n            actions: [\"setClampedValue\", \"clearHint\", \"invokeOnBlur\", \"invokeOnValueCommit\"]\n          },\n          {\n            guard: not(\"isInRange\"),\n            target: \"idle\",\n            actions: [\"setFormattedValue\", \"clearHint\", \"invokeOnBlur\", \"invokeOnInvalid\", \"invokeOnValueCommit\"]\n          },\n          {\n            target: \"idle\",\n            actions: [\"setFormattedValue\", \"clearHint\", \"invokeOnBlur\", \"invokeOnValueCommit\"]\n          }\n        ],\n        \"INPUT.ENTER\": {\n          actions: [\"setFormattedValue\", \"clearHint\", \"invokeOnBlur\", \"invokeOnValueCommit\"]\n        }\n      }\n    },\n    \"before:spin\": {\n      tags: [\"focus\"],\n      effects: [\"trackButtonDisabled\", \"waitForChangeDelay\"],\n      entry: choose([\n        { guard: \"isIncrementHint\", actions: [\"increment\"] },\n        { guard: \"isDecrementHint\", actions: [\"decrement\"] }\n      ]),\n      on: {\n        CHANGE_DELAY: {\n          target: \"spinning\",\n          guard: and(\"isInRange\", \"spinOnPress\")\n        },\n        \"TRIGGER.PRESS_UP\": [\n          { guard: \"isTouchPointer\", target: \"focused\", actions: [\"clearHint\"] },\n          { target: \"focused\", actions: [\"focusInput\", \"clearHint\"] }\n        ]\n      }\n    },\n    spinning: {\n      tags: [\"focus\"],\n      effects: [\"trackButtonDisabled\", \"spinValue\"],\n      on: {\n        SPIN: [\n          {\n            guard: \"isIncrementHint\",\n            actions: [\"increment\"]\n          },\n          {\n            guard: \"isDecrementHint\",\n            actions: [\"decrement\"]\n          }\n        ],\n        \"TRIGGER.PRESS_UP\": {\n          target: \"focused\",\n          actions: [\"focusInput\", \"clearHint\"]\n        }\n      }\n    },\n    scrubbing: {\n      tags: [\"focus\"],\n      effects: [\"activatePointerLock\", \"trackMousemove\", \"setupVirtualCursor\", \"preventTextSelection\"],\n      on: {\n        \"SCRUBBER.POINTER_UP\": {\n          target: \"focused\",\n          actions: [\"focusInput\", \"clearCursorPoint\"]\n        },\n        \"SCRUBBER.POINTER_MOVE\": [\n          {\n            guard: \"isIncrementHint\",\n            actions: [\"increment\", \"setCursorPoint\"]\n          },\n          {\n            guard: \"isDecrementHint\",\n            actions: [\"decrement\", \"setCursorPoint\"]\n          }\n        ]\n      }\n    }\n  },\n  implementations: {\n    guards: {\n      clampValueOnBlur: ({ prop }) => prop(\"clampValueOnBlur\"),\n      spinOnPress: ({ prop }) => !!prop(\"spinOnPress\"),\n      isInRange: ({ computed }) => !computed(\"isOutOfRange\"),\n      isDecrementHint: ({ context, event }) => (event.hint ?? context.get(\"hint\")) === \"decrement\",\n      isIncrementHint: ({ context, event }) => (event.hint ?? context.get(\"hint\")) === \"increment\",\n      isTouchPointer: ({ event }) => event.pointerType === \"touch\"\n    },\n    effects: {\n      waitForChangeDelay({ send }) {\n        const id = setTimeout(() => {\n          send({ type: \"CHANGE_DELAY\" });\n        }, 300);\n        return () => clearTimeout(id);\n      },\n      spinValue({ send }) {\n        const id = setInterval(() => {\n          send({ type: \"SPIN\" });\n        }, 50);\n        return () => clearInterval(id);\n      },\n      trackFormControl({ context, scope }) {\n        const inputEl = getInputEl(scope);\n        return trackFormControl(inputEl, {\n          onFieldsetDisabledChange(disabled) {\n            context.set(\"fieldsetDisabled\", disabled);\n          },\n          onFormReset() {\n            context.set(\"value\", context.initial(\"value\"));\n          }\n        });\n      },\n      setupVirtualCursor({ context, scope }) {\n        const point = context.get(\"scrubberCursorPoint\");\n        return setupVirtualCursor(scope, point);\n      },\n      preventTextSelection({ scope }) {\n        return preventTextSelection(scope);\n      },\n      trackButtonDisabled({ context, scope, send }) {\n        const hint = context.get(\"hint\");\n        const btn = getPressedTriggerEl(scope, hint);\n        return observeAttributes(btn, {\n          attributes: [\"disabled\"],\n          callback() {\n            send({ type: \"TRIGGER.PRESS_UP\", src: \"attr\" });\n          }\n        });\n      },\n      attachWheelListener({ scope, send, prop }) {\n        const inputEl = getInputEl(scope);\n        if (!inputEl || !scope.isActiveElement(inputEl) || !prop(\"allowMouseWheel\")) return;\n        function onWheel(event) {\n          event.preventDefault();\n          const dir = Math.sign(event.deltaY) * -1;\n          if (dir === 1) {\n            send({ type: \"VALUE.INCREMENT\" });\n          } else if (dir === -1) {\n            send({ type: \"VALUE.DECREMENT\" });\n          }\n        }\n        return addDomEvent(inputEl, \"wheel\", onWheel, { passive: false });\n      },\n      activatePointerLock({ scope }) {\n        if (isSafari()) return;\n        return requestPointerLock(scope.getDoc());\n      },\n      trackMousemove({ scope, send, context, computed }) {\n        const doc = scope.getDoc();\n        function onMousemove(event) {\n          const point = context.get(\"scrubberCursorPoint\");\n          const isRtl = computed(\"isRtl\");\n          const value = getMousemoveValue(scope, { point, isRtl, event });\n          if (!value.hint) return;\n          send({\n            type: \"SCRUBBER.POINTER_MOVE\",\n            hint: value.hint,\n            point: value.point\n          });\n        }\n        function onMouseup() {\n          send({ type: \"SCRUBBER.POINTER_UP\" });\n        }\n        return callAll(addDomEvent(doc, \"mousemove\", onMousemove, false), addDomEvent(doc, \"mouseup\", onMouseup, false));\n      }\n    },\n    actions: {\n      focusInput({ scope, prop }) {\n        if (!prop(\"focusInputOnChange\")) return;\n        const inputEl = getInputEl(scope);\n        if (scope.isActiveElement(inputEl)) return;\n        raf(() => inputEl?.focus({ preventScroll: true }));\n      },\n      increment({ context, event, prop, computed }) {\n        let nextValue = incrementValue(computed(\"valueAsNumber\"), event.step ?? prop(\"step\"));\n        if (!prop(\"allowOverflow\")) nextValue = clampValue(nextValue, prop(\"min\"), prop(\"max\"));\n        context.set(\"value\", formatValue(nextValue, { computed, prop }));\n      },\n      decrement({ context, event, prop, computed }) {\n        let nextValue = decrementValue(computed(\"valueAsNumber\"), event.step ?? prop(\"step\"));\n        if (!prop(\"allowOverflow\")) nextValue = clampValue(nextValue, prop(\"min\"), prop(\"max\"));\n        context.set(\"value\", formatValue(nextValue, { computed, prop }));\n      },\n      setClampedValue({ context, prop, computed }) {\n        const nextValue = clampValue(computed(\"valueAsNumber\"), prop(\"min\"), prop(\"max\"));\n        context.set(\"value\", formatValue(nextValue, { computed, prop }));\n      },\n      setRawValue({ context, event, prop, computed }) {\n        let nextValue = parseValue(event.value, { computed, prop });\n        if (!prop(\"allowOverflow\")) nextValue = clampValue(nextValue, prop(\"min\"), prop(\"max\"));\n        context.set(\"value\", formatValue(nextValue, { computed, prop }));\n      },\n      setValue({ context, event }) {\n        const value = event.target?.value ?? event.value;\n        context.set(\"value\", value);\n      },\n      clearValue({ context }) {\n        context.set(\"value\", \"\");\n      },\n      incrementToMax({ context, prop, computed }) {\n        const value = formatValue(prop(\"max\"), { computed, prop });\n        context.set(\"value\", value);\n      },\n      decrementToMin({ context, prop, computed }) {\n        const value = formatValue(prop(\"min\"), { computed, prop });\n        context.set(\"value\", value);\n      },\n      setHint({ context, event }) {\n        context.set(\"hint\", event.hint);\n      },\n      clearHint({ context }) {\n        context.set(\"hint\", null);\n      },\n      invokeOnFocus({ computed, prop }) {\n        prop(\"onFocusChange\")?.({\n          focused: true,\n          value: computed(\"formattedValue\"),\n          valueAsNumber: computed(\"valueAsNumber\")\n        });\n      },\n      invokeOnBlur({ computed, prop }) {\n        prop(\"onFocusChange\")?.({\n          focused: false,\n          value: computed(\"formattedValue\"),\n          valueAsNumber: computed(\"valueAsNumber\")\n        });\n      },\n      invokeOnInvalid({ computed, prop, event }) {\n        if (event.type === \"INPUT.CHANGE\") return;\n        const reason = computed(\"valueAsNumber\") > prop(\"max\") ? \"rangeOverflow\" : \"rangeUnderflow\";\n        prop(\"onValueInvalid\")?.({\n          reason,\n          value: computed(\"formattedValue\"),\n          valueAsNumber: computed(\"valueAsNumber\")\n        });\n      },\n      invokeOnValueCommit({ computed, prop }) {\n        prop(\"onValueCommit\")?.({\n          value: computed(\"formattedValue\"),\n          valueAsNumber: computed(\"valueAsNumber\")\n        });\n      },\n      syncInputElement({ context, event, computed, scope }) {\n        const value = event.type.endsWith(\"CHANGE\") ? context.get(\"value\") : computed(\"formattedValue\");\n        const inputEl = getInputEl(scope);\n        const sel = event.selection ?? recordCursor(inputEl, scope);\n        raf(() => {\n          setElementValue(inputEl, value);\n          restoreCursor(inputEl, sel, scope);\n        });\n      },\n      setFormattedValue({ context, computed, action }) {\n        context.set(\"value\", computed(\"formattedValue\"));\n        action([\"syncInputElement\"]);\n      },\n      setCursorPoint({ context, event }) {\n        context.set(\"scrubberCursorPoint\", event.point);\n      },\n      clearCursorPoint({ context }) {\n        context.set(\"scrubberCursorPoint\", null);\n      },\n      setVirtualCursorPosition({ context, scope }) {\n        const cursorEl = getCursorEl(scope);\n        const point = context.get(\"scrubberCursorPoint\");\n        if (!cursorEl || !point) return;\n        cursorEl.style.transform = `translate3d(${point.x}px, ${point.y}px, 0px)`;\n      }\n    }\n  }\n});\nvar props = createProps()([\n  \"allowMouseWheel\",\n  \"allowOverflow\",\n  \"clampValueOnBlur\",\n  \"dir\",\n  \"disabled\",\n  \"focusInputOnChange\",\n  \"form\",\n  \"formatOptions\",\n  \"getRootNode\",\n  \"id\",\n  \"ids\",\n  \"inputMode\",\n  \"invalid\",\n  \"locale\",\n  \"max\",\n  \"min\",\n  \"name\",\n  \"onFocusChange\",\n  \"onValueChange\",\n  \"onValueCommit\",\n  \"onValueInvalid\",\n  \"pattern\",\n  \"required\",\n  \"readOnly\",\n  \"spinOnPress\",\n  \"step\",\n  \"translations\",\n  \"value\",\n  \"defaultValue\"\n]);\nvar splitProps = createSplitProps(props);\n\nexport { anatomy, connect, machine, props, splitProps };\n", "import * as numberInput from \"@zag-js/number-input\";\nimport { Direction } from \"@zag-js/types\";\nimport { VanillaMachine, normalizeProps } from \"@zag-js/vanilla\";\n\nimport {\n  Component,\n  getString,\n  generateId,\n  renderPart,\n  getBoolean,\n  getNumber,\n} from \"../lib\";\nexport class NumberInput extends Component<numberInput.Props, numberInput.Api> {\n  initMachine(props: numberInput.Props): VanillaMachine<any> {\n    return new VanillaMachine(numberInput.machine, props);\n  }\n  initApi(): numberInput.Api {\n    return numberInput.connect(this.machine.service, normalizeProps);\n  }\n  render() {\n    const parts = [\n      \"root\",\n      \"label\",\n      \"input\",\n      \"control\",\n      \"valueText\",\n      \"increment-trigger\",\n      \"decrement-trigger\",\n      \"scrubber\",\n    ];\n    for (const part of parts) renderPart(this.el, part, this.api);\n  }\n}\nexport function initNumberInput(\n  doc: HTMLElement | Document = document,\n  selector = \".number-input-js\",\n): void {\n  doc.querySelectorAll<HTMLElement>(selector).forEach((rootEl) => {\n    const directions = [\"ltr\", \"rtl\"] as const;\n    const numberInput = new NumberInput(rootEl, {\n      id: generateId(rootEl, \"numberInput\"),\n      dir: getString<Direction>(rootEl, \"dir\", directions),\n      allowMouseWheel: getBoolean(rootEl, \"allowMouseWheel\"),\n\n      allowOverflow: getBoolean(rootEl, \"allowOverflow\"),\n      clampValueOnBlur: getBoolean(rootEl, \"clampValueOnBlur\"),\n      disabled: getBoolean(rootEl, \"disabled\"),\n      focusInputOnChange: getBoolean(rootEl, \"focusInputOnChange\"),\n      invalid: getBoolean(rootEl, \"invalid\"),\n      defaultValue: getString(rootEl, \"defaultValue\"),\n      form: getString(rootEl, \"form\"),\n      formatOptions: {\n        currency: getString(rootEl, \"currency\"),\n        style:\n          getString(rootEl, \"style\", [\"decimal\", \"currency\", \"percent\"]) ||\n          \"decimal\",\n        maximumFractionDigits: getNumber(rootEl, \"maximumFractionDigits\"),\n        minimumFractionDigits: getNumber(rootEl, \"minimumFractionDigits\"),\n        maximumSignificantDigits: getNumber(rootEl, \"maximumSignificantDigits\"),\n        minimumSignificantDigits: getNumber(rootEl, \"minimumIntegerDigits\"),\n        minimumIntegerDigits: getNumber(rootEl, \"minimumIntegerDigits\"),\n        numberingSystem: getString(rootEl, \"numberingSystem\"),\n        currencyDisplay: getString(rootEl, \"currencyDisplay\", [\n          \"code\",\n          \"symbol\",\n          \"name\",\n        ]),\n        compactDisplay: getString(rootEl, \"compactDisplay\", [\"short\", \"long\"]),\n        notation: getString(rootEl, \"notation\", [\n          \"standard\",\n          \"scientific\",\n          \"engineering\",\n          \"compact\",\n        ]),\n        unit: getString(rootEl, \"unit\"),\n        unitDisplay: getString(rootEl, \"unitDisplay\", [\n          \"short\",\n          \"long\",\n          \"narrow\",\n        ]),\n        currencySign: getString(rootEl, \"currencySign\", [\n          \"standard\",\n          \"accounting\",\n        ]),\n      },\n      inputMode: getString(rootEl, \"inputMode\", [\n        \"text\",\n        \"tel\",\n        \"numeric\",\n        \"decimal\",\n      ]),\n      locale: getString(rootEl, \"locale\"),\n      max: getNumber(rootEl, \"max\"),\n      min: getNumber(rootEl, \"min\"),\n      name: getString(rootEl, \"name\"),\n      pattern: getString(rootEl, \"pattern\"),\n      readOnly: getBoolean(rootEl, \"readOnly\"),\n      required: getBoolean(rootEl, \"required\"),\n      spinOnPress: getBoolean(rootEl, \"spinOnPress\"),\n      step: getNumber(rootEl, \"step\"),\n      value: getString(rootEl, \"value\"),\n      onFocusChange(details) {\n        const eventName = getString(rootEl, \"onFocusChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onValueChange(details) {\n        const eventName = getString(rootEl, \"onValueChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onValueInvalid(details) {\n        const eventName = getString(rootEl, \"onValueInvalid\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n    });\n    numberInput.init();\n\n    numberInput.el.addEventListener(\"number-input:set-value\", (event) => {\n      const { value } = (event as CustomEvent<{ value: string }>).detail;\n      if (typeof value === \"string\" && value && !isNaN(Number(value))) {\n        // Type assertion needed due to zag-js type mismatch (API says number but runtime expects string)\n        (numberInput.api.setValue as unknown as (value: string) => void)(value);\n      }\n    });\n\n    numberInput.el.addEventListener(\"number-input:value\", (event) => {\n      const detail = (\n        event as CustomEvent<{ callback: (value: string) => void }>\n      ).detail;\n      const callback = detail.callback;\n      if (callback && typeof callback === \"function\") {\n        callback(numberInput.api.value);\n      }\n    });\n  });\n}\n", "import { createAnatomy } from '@zag-js/anatomy';\nimport { dataAttr, isLeftClick, ariaAttr } from '@zag-js/dom-query';\nimport { createMachine } from '@zag-js/core';\nimport { uuid, createSplitProps } from '@zag-js/utils';\nimport { createProps } from '@zag-js/types';\n\n// src/password-input.anatomy.ts\nvar anatomy = createAnatomy(\"password-input\").parts(\n  \"root\",\n  \"input\",\n  \"label\",\n  \"control\",\n  \"indicator\",\n  \"visibilityTrigger\"\n);\nvar parts = anatomy.build();\n\n// src/password-input.dom.ts\nvar getInputId = (ctx) => ctx.ids?.input ?? `p-input-${ctx.id}-input`;\nvar getInputEl = (ctx) => ctx.getById(getInputId(ctx));\n\n// src/password-input.connect.ts\nfunction connect(service, normalize) {\n  const { scope, prop, context } = service;\n  const visible = context.get(\"visible\");\n  const disabled = !!prop(\"disabled\");\n  const invalid = !!prop(\"invalid\");\n  const readOnly = !!prop(\"readOnly\");\n  const required = !!prop(\"required\");\n  const interactive = !(readOnly || disabled);\n  const translations = prop(\"translations\");\n  return {\n    visible,\n    disabled,\n    invalid,\n    focus() {\n      getInputEl(scope)?.focus();\n    },\n    setVisible(value) {\n      service.send({ type: \"VISIBILITY.SET\", value });\n    },\n    toggleVisible() {\n      service.send({ type: \"VISIBILITY.SET\", value: !visible });\n    },\n    getRootProps() {\n      return normalize.element({\n        ...parts.root.attrs,\n        dir: prop(\"dir\"),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-readonly\": dataAttr(readOnly)\n      });\n    },\n    getLabelProps() {\n      return normalize.label({\n        ...parts.label.attrs,\n        htmlFor: getInputId(scope),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-readonly\": dataAttr(readOnly),\n        \"data-required\": dataAttr(required)\n      });\n    },\n    getInputProps() {\n      return normalize.input({\n        ...parts.input.attrs,\n        id: getInputId(scope),\n        autoCapitalize: \"off\",\n        name: prop(\"name\"),\n        required: prop(\"required\"),\n        autoComplete: prop(\"autoComplete\"),\n        spellCheck: false,\n        readOnly,\n        disabled,\n        type: visible ? \"text\" : \"password\",\n        \"data-state\": visible ? \"visible\" : \"hidden\",\n        \"aria-invalid\": ariaAttr(invalid),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-readonly\": dataAttr(readOnly),\n        ...prop(\"ignorePasswordManagers\") ? passwordManagerProps : {}\n      });\n    },\n    getVisibilityTriggerProps() {\n      return normalize.button({\n        ...parts.visibilityTrigger.attrs,\n        type: \"button\",\n        tabIndex: -1,\n        \"aria-controls\": getInputId(scope),\n        \"aria-expanded\": visible,\n        \"data-readonly\": dataAttr(readOnly),\n        disabled,\n        \"data-disabled\": dataAttr(disabled),\n        \"data-state\": visible ? \"visible\" : \"hidden\",\n        \"aria-label\": translations?.visibilityTrigger?.(visible),\n        onPointerDown(event) {\n          if (!isLeftClick(event)) return;\n          if (!interactive) return;\n          event.preventDefault();\n          service.send({ type: \"TRIGGER.CLICK\" });\n        }\n      });\n    },\n    getIndicatorProps() {\n      return normalize.element({\n        ...parts.indicator.attrs,\n        \"aria-hidden\": true,\n        \"data-state\": visible ? \"visible\" : \"hidden\",\n        \"data-disabled\": dataAttr(disabled),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-readonly\": dataAttr(readOnly)\n      });\n    },\n    getControlProps() {\n      return normalize.element({\n        ...parts.control.attrs,\n        \"data-disabled\": dataAttr(disabled),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-readonly\": dataAttr(readOnly)\n      });\n    }\n  };\n}\nvar passwordManagerProps = {\n  // 1Password\n  \"data-1p-ignore\": \"\",\n  // LastPass\n  \"data-lpignore\": \"true\",\n  // Bitwarden\n  \"data-bwignore\": \"true\",\n  // Dashlane\n  \"data-form-type\": \"other\",\n  // Proton Pass\n  \"data-protonpass-ignore\": \"true\"\n};\nvar machine = createMachine({\n  props({ props: props2 }) {\n    return {\n      id: uuid(),\n      defaultVisible: false,\n      autoComplete: \"current-password\",\n      ignorePasswordManagers: false,\n      ...props2,\n      translations: {\n        visibilityTrigger(visible) {\n          return visible ? \"Hide password\" : \"Show password\";\n        },\n        ...props2.translations\n      }\n    };\n  },\n  context({ prop, bindable }) {\n    return {\n      visible: bindable(() => ({\n        value: prop(\"visible\"),\n        defaultValue: prop(\"defaultVisible\"),\n        onChange(value) {\n          prop(\"onVisibilityChange\")?.({ visible: value });\n        }\n      }))\n    };\n  },\n  initialState() {\n    return \"idle\";\n  },\n  effects: [\"trackFormEvents\"],\n  states: {\n    idle: {\n      on: {\n        \"VISIBILITY.SET\": {\n          actions: [\"setVisibility\"]\n        },\n        \"TRIGGER.CLICK\": {\n          actions: [\"toggleVisibility\", \"focusInputEl\"]\n        }\n      }\n    }\n  },\n  implementations: {\n    actions: {\n      setVisibility({ context, event }) {\n        context.set(\"visible\", event.value);\n      },\n      toggleVisibility({ context }) {\n        context.set(\"visible\", (c) => !c);\n      },\n      focusInputEl({ scope }) {\n        const inputEl = getInputEl(scope);\n        inputEl?.focus();\n      }\n    },\n    effects: {\n      trackFormEvents({ scope, send }) {\n        const inputEl = getInputEl(scope);\n        const form = inputEl?.form;\n        if (!form) return;\n        const win = scope.getWin();\n        const controller = new win.AbortController();\n        form.addEventListener(\n          \"reset\",\n          (event) => {\n            if (event.defaultPrevented) return;\n            send({ type: \"VISIBILITY.SET\", value: false });\n          },\n          { signal: controller.signal }\n        );\n        form.addEventListener(\n          \"submit\",\n          () => {\n            send({ type: \"VISIBILITY.SET\", value: false });\n          },\n          { signal: controller.signal }\n        );\n        return () => controller.abort();\n      }\n    }\n  }\n});\nvar props = createProps()([\n  \"defaultVisible\",\n  \"dir\",\n  \"id\",\n  \"onVisibilityChange\",\n  \"visible\",\n  \"ids\",\n  \"getRootNode\",\n  \"disabled\",\n  \"invalid\",\n  \"required\",\n  \"readOnly\",\n  \"translations\",\n  \"ignorePasswordManagers\",\n  \"autoComplete\",\n  \"name\"\n]);\nvar splitProps = createSplitProps(props);\n\nexport { anatomy, connect, machine, props, splitProps };\n", "import * as passwordInput from \"@zag-js/password-input\";\nimport { Direction } from \"@zag-js/types\";\nimport { VanillaMachine, normalizeProps } from \"@zag-js/vanilla\";\nimport {\n  Component,\n  getString,\n  generateId,\n  renderPart,\n  getBoolean,\n  getPartIds,\n} from \"../lib\";\nexport class PasswordInput extends Component<\n  passwordInput.Props,\n  passwordInput.Api\n> {\n  initMachine(props: passwordInput.Props): VanillaMachine<any> {\n    return new VanillaMachine(passwordInput.machine, props);\n  }\n  initApi(): passwordInput.Api {\n    return passwordInput.connect(this.machine.service, normalizeProps);\n  }\n  render() {\n    const parts = [\n      \"root\",\n      \"input\",\n      \"label\",\n      \"control\",\n      \"indicator\",\n      \"visibility-trigger\",\n    ];\n    for (const part of parts) renderPart(this.el, part, this.api);\n  }\n}\nexport function initPasswordInput(\n  doc: HTMLElement | Document = document,\n  selector = \".password-input-js\",\n): void {\n  doc.querySelectorAll<HTMLElement>(selector).forEach((rootEl) => {\n    const directions = [\"ltr\", \"rtl\"] as const;\n    const passwordInput = new PasswordInput(rootEl, {\n      id: generateId(rootEl, \"passwordInput\"),\n      ids: getPartIds(rootEl, [\n        \"root\",\n        \"input\",\n        \"label\",\n        \"control\",\n        \"indicator\",\n        \"visibility-trigger\",\n      ]),\n      dir: getString<Direction>(rootEl, \"dir\", directions),\n      autoComplete: getString(rootEl, \"autoComplete\", [\n        \"current-password\",\n        \"new-password\",\n      ]),\n      defaultVisible: getBoolean(rootEl, \"defaultVisible\"),\n      disabled: getBoolean(rootEl, \"disabled\"),\n      ignorePasswordManagers: getBoolean(rootEl, \"ignorePasswordManagers\"),\n      invalid: getBoolean(rootEl, \"invalid\"),\n      name: getString(rootEl, \"name\"),\n      readOnly: getBoolean(rootEl, \"readOnly\"),\n      required: getBoolean(rootEl, \"required\"),\n      visible: getBoolean(rootEl, \"visible\"),\n      onVisibilityChange(details) {\n        const eventName = getString(rootEl, \"onVisibilityChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n    });\n    passwordInput.init();\n  });\n}\n", "import { createAnatomy } from '@zag-js/anatomy';\nimport { raf, dispatchInputValueEvent, queryAll, dataAttr, ariaAttr, isHTMLElement, isComposingEvent, isModifierKey, getEventKey, getNativeEvent, getBeforeInputValue, visuallyHiddenStyle } from '@zag-js/dom-query';\nimport { setValueAtIndex, isEqual, createSplitProps, invariant } from '@zag-js/utils';\nimport { setup } from '@zag-js/core';\nimport { createProps } from '@zag-js/types';\n\n// src/pin-input.anatomy.ts\nvar anatomy = createAnatomy(\"pinInput\").parts(\"root\", \"label\", \"input\", \"control\");\nvar parts = anatomy.build();\nvar getRootId = (ctx) => ctx.ids?.root ?? `pin-input:${ctx.id}`;\nvar getInputId = (ctx, id) => ctx.ids?.input?.(id) ?? `pin-input:${ctx.id}:${id}`;\nvar getHiddenInputId = (ctx) => ctx.ids?.hiddenInput ?? `pin-input:${ctx.id}:hidden`;\nvar getLabelId = (ctx) => ctx.ids?.label ?? `pin-input:${ctx.id}:label`;\nvar getControlId = (ctx) => ctx.ids?.control ?? `pin-input:${ctx.id}:control`;\nvar getRootEl = (ctx) => ctx.getById(getRootId(ctx));\nvar getInputEls = (ctx) => {\n  const ownerId = CSS.escape(getRootId(ctx));\n  const selector = `input[data-ownedby=${ownerId}]`;\n  return queryAll(getRootEl(ctx), selector);\n};\nvar getInputElAtIndex = (ctx, index) => getInputEls(ctx)[index];\nvar getFirstInputEl = (ctx) => getInputEls(ctx)[0];\nvar getHiddenInputEl = (ctx) => ctx.getById(getHiddenInputId(ctx));\nvar setInputValue = (inputEl, value) => {\n  inputEl.value = value;\n  inputEl.setAttribute(\"value\", value);\n};\n\n// src/pin-input.utils.ts\nvar REGEX = {\n  numeric: /^[0-9]+$/,\n  alphabetic: /^[A-Za-z]+$/,\n  alphanumeric: /^[a-zA-Z0-9]+$/i\n};\nfunction isValidType(type, value) {\n  if (!type) return true;\n  return !!REGEX[type]?.test(value);\n}\nfunction isValidValue(value, type, pattern) {\n  if (!pattern) return isValidType(type, value);\n  const regex = new RegExp(pattern, \"g\");\n  return regex.test(value);\n}\n\n// src/pin-input.connect.ts\nfunction connect(service, normalize) {\n  const { send, context, computed, prop, scope } = service;\n  const complete = computed(\"isValueComplete\");\n  const disabled = !!prop(\"disabled\");\n  const readOnly = !!prop(\"readOnly\");\n  const invalid = !!prop(\"invalid\");\n  const required = !!prop(\"required\");\n  const translations = prop(\"translations\");\n  const focusedIndex = context.get(\"focusedIndex\");\n  function focus() {\n    getFirstInputEl(scope)?.focus();\n  }\n  return {\n    focus,\n    count: context.get(\"count\"),\n    items: Array.from({ length: context.get(\"count\") }).map((_, i) => i),\n    value: context.get(\"value\"),\n    valueAsString: computed(\"valueAsString\"),\n    complete,\n    setValue(value) {\n      if (!Array.isArray(value)) {\n        invariant(\"[pin-input/setValue] value must be an array\");\n      }\n      send({ type: \"VALUE.SET\", value });\n    },\n    clearValue() {\n      send({ type: \"VALUE.CLEAR\" });\n    },\n    setValueAtIndex(index, value) {\n      send({ type: \"VALUE.SET\", value, index });\n    },\n    getRootProps() {\n      return normalize.element({\n        dir: prop(\"dir\"),\n        ...parts.root.attrs,\n        id: getRootId(scope),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-complete\": dataAttr(complete),\n        \"data-readonly\": dataAttr(readOnly)\n      });\n    },\n    getLabelProps() {\n      return normalize.label({\n        ...parts.label.attrs,\n        dir: prop(\"dir\"),\n        htmlFor: getHiddenInputId(scope),\n        id: getLabelId(scope),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-complete\": dataAttr(complete),\n        \"data-required\": dataAttr(required),\n        \"data-readonly\": dataAttr(readOnly),\n        onClick(event) {\n          event.preventDefault();\n          focus();\n        }\n      });\n    },\n    getHiddenInputProps() {\n      return normalize.input({\n        \"aria-hidden\": true,\n        type: \"text\",\n        tabIndex: -1,\n        id: getHiddenInputId(scope),\n        readOnly,\n        disabled,\n        required,\n        name: prop(\"name\"),\n        form: prop(\"form\"),\n        style: visuallyHiddenStyle,\n        maxLength: computed(\"valueLength\"),\n        defaultValue: computed(\"valueAsString\")\n      });\n    },\n    getControlProps() {\n      return normalize.element({\n        ...parts.control.attrs,\n        dir: prop(\"dir\"),\n        id: getControlId(scope)\n      });\n    },\n    getInputProps(props2) {\n      const { index } = props2;\n      const inputType = prop(\"type\") === \"numeric\" ? \"tel\" : \"text\";\n      return normalize.input({\n        ...parts.input.attrs,\n        dir: prop(\"dir\"),\n        disabled,\n        \"data-disabled\": dataAttr(disabled),\n        \"data-complete\": dataAttr(complete),\n        id: getInputId(scope, index.toString()),\n        \"data-index\": index,\n        \"data-ownedby\": getRootId(scope),\n        \"aria-label\": translations?.inputLabel?.(index, computed(\"valueLength\")),\n        inputMode: prop(\"otp\") || prop(\"type\") === \"numeric\" ? \"numeric\" : \"text\",\n        \"aria-invalid\": ariaAttr(invalid),\n        \"data-invalid\": dataAttr(invalid),\n        type: prop(\"mask\") ? \"password\" : inputType,\n        defaultValue: context.get(\"value\")[index] || \"\",\n        readOnly,\n        autoCapitalize: \"none\",\n        autoComplete: prop(\"otp\") ? \"one-time-code\" : \"off\",\n        placeholder: focusedIndex === index ? \"\" : prop(\"placeholder\"),\n        onPaste(event) {\n          const pastedValue = event.clipboardData?.getData(\"text/plain\");\n          if (!pastedValue) return;\n          const isValid = isValidValue(pastedValue, prop(\"type\"), prop(\"pattern\"));\n          if (!isValid) {\n            send({ type: \"VALUE.INVALID\", value: pastedValue });\n            event.preventDefault();\n            return;\n          }\n          event.preventDefault();\n          send({ type: \"INPUT.PASTE\", value: pastedValue });\n        },\n        onBeforeInput(event) {\n          try {\n            const value = getBeforeInputValue(event);\n            const isValid = isValidValue(value, prop(\"type\"), prop(\"pattern\"));\n            if (!isValid) {\n              send({ type: \"VALUE.INVALID\", value });\n              event.preventDefault();\n            }\n            if (value.length > 1) {\n              event.currentTarget.setSelectionRange(0, 1, \"forward\");\n            }\n          } catch {\n          }\n        },\n        onChange(event) {\n          const evt = getNativeEvent(event);\n          const { value } = event.currentTarget;\n          if (evt.inputType === \"insertFromPaste\") {\n            event.currentTarget.value = value[0] || \"\";\n            return;\n          }\n          if (value.length > 2) {\n            send({ type: \"INPUT.PASTE\", value });\n            event.currentTarget.value = value[0];\n            event.preventDefault();\n            return;\n          }\n          if (evt.inputType === \"deleteContentBackward\") {\n            send({ type: \"INPUT.BACKSPACE\" });\n            return;\n          }\n          send({ type: \"INPUT.CHANGE\", value, index });\n        },\n        onKeyDown(event) {\n          if (event.defaultPrevented) return;\n          if (isComposingEvent(event)) return;\n          if (isModifierKey(event)) return;\n          const keyMap = {\n            Backspace() {\n              send({ type: \"INPUT.BACKSPACE\" });\n            },\n            Delete() {\n              send({ type: \"INPUT.DELETE\" });\n            },\n            ArrowLeft() {\n              send({ type: \"INPUT.ARROW_LEFT\" });\n            },\n            ArrowRight() {\n              send({ type: \"INPUT.ARROW_RIGHT\" });\n            },\n            Enter() {\n              send({ type: \"INPUT.ENTER\" });\n            }\n          };\n          const exec = keyMap[getEventKey(event, {\n            dir: prop(\"dir\"),\n            orientation: \"horizontal\"\n          })];\n          if (exec) {\n            exec(event);\n            event.preventDefault();\n          }\n        },\n        onFocus() {\n          send({ type: \"INPUT.FOCUS\", index });\n        },\n        onBlur(event) {\n          const target = event.relatedTarget;\n          if (isHTMLElement(target) && target.dataset.ownedby === getRootId(scope)) return;\n          send({ type: \"INPUT.BLUR\", index });\n        }\n      });\n    }\n  };\n}\nvar { choose, createMachine } = setup();\nvar machine = createMachine({\n  props({ props: props2 }) {\n    return {\n      placeholder: \"\\u25CB\",\n      otp: false,\n      type: \"numeric\",\n      defaultValue: props2.count ? fill([], props2.count) : [],\n      ...props2,\n      translations: {\n        inputLabel: (index, length) => `pin code ${index + 1} of ${length}`,\n        ...props2.translations\n      }\n    };\n  },\n  initialState() {\n    return \"idle\";\n  },\n  context({ prop, bindable }) {\n    return {\n      value: bindable(() => ({\n        value: prop(\"value\"),\n        defaultValue: prop(\"defaultValue\"),\n        isEqual,\n        onChange(value) {\n          prop(\"onValueChange\")?.({ value, valueAsString: value.join(\"\") });\n        }\n      })),\n      focusedIndex: bindable(() => ({\n        sync: true,\n        defaultValue: -1\n      })),\n      // TODO: Move this to `props` in next major version\n      count: bindable(() => ({\n        defaultValue: prop(\"count\")\n      }))\n    };\n  },\n  computed: {\n    _value: ({ context }) => fill(context.get(\"value\"), context.get(\"count\")),\n    valueLength: ({ computed }) => computed(\"_value\").length,\n    filledValueLength: ({ computed }) => computed(\"_value\").filter((v) => v?.trim() !== \"\").length,\n    isValueComplete: ({ computed }) => computed(\"valueLength\") === computed(\"filledValueLength\"),\n    valueAsString: ({ computed }) => computed(\"_value\").join(\"\"),\n    focusedValue: ({ computed, context }) => computed(\"_value\")[context.get(\"focusedIndex\")] || \"\"\n  },\n  entry: choose([\n    {\n      guard: \"autoFocus\",\n      actions: [\"setInputCount\", \"setFocusIndexToFirst\"]\n    },\n    { actions: [\"setInputCount\"] }\n  ]),\n  watch({ action, track, context, computed }) {\n    track([() => context.get(\"focusedIndex\")], () => {\n      action([\"focusInput\", \"selectInputIfNeeded\"]);\n    });\n    track([() => context.get(\"value\").join(\",\")], () => {\n      action([\"syncInputElements\", \"dispatchInputEvent\"]);\n    });\n    track([() => computed(\"isValueComplete\")], () => {\n      action([\"invokeOnComplete\", \"blurFocusedInputIfNeeded\"]);\n    });\n  },\n  on: {\n    \"VALUE.SET\": [\n      {\n        guard: \"hasIndex\",\n        actions: [\"setValueAtIndex\"]\n      },\n      { actions: [\"setValue\"] }\n    ],\n    \"VALUE.CLEAR\": {\n      actions: [\"clearValue\", \"setFocusIndexToFirst\"]\n    }\n  },\n  states: {\n    idle: {\n      on: {\n        \"INPUT.FOCUS\": {\n          target: \"focused\",\n          actions: [\"setFocusedIndex\"]\n        }\n      }\n    },\n    focused: {\n      on: {\n        \"INPUT.CHANGE\": {\n          actions: [\"setFocusedValue\", \"syncInputValue\", \"setNextFocusedIndex\"]\n        },\n        \"INPUT.PASTE\": {\n          actions: [\"setPastedValue\", \"setLastValueFocusIndex\"]\n        },\n        \"INPUT.FOCUS\": {\n          actions: [\"setFocusedIndex\"]\n        },\n        \"INPUT.BLUR\": {\n          target: \"idle\",\n          actions: [\"clearFocusedIndex\"]\n        },\n        \"INPUT.DELETE\": {\n          guard: \"hasValue\",\n          actions: [\"clearFocusedValue\"]\n        },\n        \"INPUT.ARROW_LEFT\": {\n          actions: [\"setPrevFocusedIndex\"]\n        },\n        \"INPUT.ARROW_RIGHT\": {\n          actions: [\"setNextFocusedIndex\"]\n        },\n        \"INPUT.BACKSPACE\": [\n          {\n            guard: \"hasValue\",\n            actions: [\"clearFocusedValue\"]\n          },\n          {\n            actions: [\"setPrevFocusedIndex\", \"clearFocusedValue\"]\n          }\n        ],\n        \"INPUT.ENTER\": {\n          guard: \"isValueComplete\",\n          actions: [\"requestFormSubmit\"]\n        },\n        \"VALUE.INVALID\": {\n          actions: [\"invokeOnInvalid\"]\n        }\n      }\n    }\n  },\n  implementations: {\n    guards: {\n      autoFocus: ({ prop }) => !!prop(\"autoFocus\"),\n      hasValue: ({ context }) => context.get(\"value\")[context.get(\"focusedIndex\")] !== \"\",\n      isValueComplete: ({ computed }) => computed(\"isValueComplete\"),\n      hasIndex: ({ event }) => event.index !== void 0\n    },\n    actions: {\n      dispatchInputEvent({ computed, scope }) {\n        const inputEl = getHiddenInputEl(scope);\n        dispatchInputValueEvent(inputEl, { value: computed(\"valueAsString\") });\n      },\n      setInputCount({ scope, context, prop }) {\n        if (prop(\"count\")) return;\n        const inputEls = getInputEls(scope);\n        context.set(\"count\", inputEls.length);\n      },\n      focusInput({ context, scope }) {\n        const focusedIndex = context.get(\"focusedIndex\");\n        if (focusedIndex === -1) return;\n        getInputElAtIndex(scope, focusedIndex)?.focus({ preventScroll: true });\n      },\n      selectInputIfNeeded({ context, prop, scope }) {\n        const focusedIndex = context.get(\"focusedIndex\");\n        if (!prop(\"selectOnFocus\") || focusedIndex === -1) return;\n        raf(() => {\n          getInputElAtIndex(scope, focusedIndex)?.select();\n        });\n      },\n      invokeOnComplete({ computed, prop }) {\n        if (!computed(\"isValueComplete\")) return;\n        prop(\"onValueComplete\")?.({\n          value: computed(\"_value\"),\n          valueAsString: computed(\"valueAsString\")\n        });\n      },\n      invokeOnInvalid({ context, event, prop }) {\n        prop(\"onValueInvalid\")?.({\n          value: event.value,\n          index: context.get(\"focusedIndex\")\n        });\n      },\n      clearFocusedIndex({ context }) {\n        context.set(\"focusedIndex\", -1);\n      },\n      setFocusedIndex({ context, event }) {\n        context.set(\"focusedIndex\", event.index);\n      },\n      setValue({ context, event }) {\n        const value = fill(event.value, context.get(\"count\"));\n        context.set(\"value\", value);\n      },\n      setFocusedValue({ context, event, computed, flush }) {\n        const focusedValue = computed(\"focusedValue\");\n        const focusedIndex = context.get(\"focusedIndex\");\n        const value = getNextValue(focusedValue, event.value);\n        flush(() => {\n          context.set(\"value\", setValueAtIndex(computed(\"_value\"), focusedIndex, value));\n        });\n      },\n      revertInputValue({ context, computed, scope }) {\n        const inputEl = getInputElAtIndex(scope, context.get(\"focusedIndex\"));\n        setInputValue(inputEl, computed(\"focusedValue\"));\n      },\n      syncInputValue({ context, event, scope }) {\n        const value = context.get(\"value\");\n        const inputEl = getInputElAtIndex(scope, event.index);\n        setInputValue(inputEl, value[event.index]);\n      },\n      syncInputElements({ context, scope }) {\n        const inputEls = getInputEls(scope);\n        const value = context.get(\"value\");\n        inputEls.forEach((inputEl, index) => {\n          setInputValue(inputEl, value[index]);\n        });\n      },\n      setPastedValue({ context, event, computed, flush }) {\n        raf(() => {\n          const valueAsString = computed(\"valueAsString\");\n          const focusedIndex = context.get(\"focusedIndex\");\n          const valueLength = computed(\"valueLength\");\n          const filledValueLength = computed(\"filledValueLength\");\n          const startIndex = Math.min(focusedIndex, filledValueLength);\n          const left = startIndex > 0 ? valueAsString.substring(0, focusedIndex) : \"\";\n          const right = event.value.substring(0, valueLength - startIndex);\n          const value = fill(`${left}${right}`.split(\"\"), valueLength);\n          flush(() => {\n            context.set(\"value\", value);\n          });\n        });\n      },\n      setValueAtIndex({ context, event, computed }) {\n        const nextValue = getNextValue(computed(\"focusedValue\"), event.value);\n        context.set(\"value\", setValueAtIndex(computed(\"_value\"), event.index, nextValue));\n      },\n      clearValue({ context }) {\n        const nextValue = Array.from({ length: context.get(\"count\") }).fill(\"\");\n        queueMicrotask(() => {\n          context.set(\"value\", nextValue);\n        });\n      },\n      clearFocusedValue({ context, computed }) {\n        const focusedIndex = context.get(\"focusedIndex\");\n        if (focusedIndex === -1) return;\n        context.set(\"value\", setValueAtIndex(computed(\"_value\"), focusedIndex, \"\"));\n      },\n      setFocusIndexToFirst({ context }) {\n        context.set(\"focusedIndex\", 0);\n      },\n      setNextFocusedIndex({ context, computed }) {\n        context.set(\"focusedIndex\", Math.min(context.get(\"focusedIndex\") + 1, computed(\"valueLength\") - 1));\n      },\n      setPrevFocusedIndex({ context }) {\n        context.set(\"focusedIndex\", Math.max(context.get(\"focusedIndex\") - 1, 0));\n      },\n      setLastValueFocusIndex({ context, computed }) {\n        raf(() => {\n          context.set(\"focusedIndex\", Math.min(computed(\"filledValueLength\"), computed(\"valueLength\") - 1));\n        });\n      },\n      blurFocusedInputIfNeeded({ context, prop, scope }) {\n        if (!prop(\"blurOnComplete\")) return;\n        raf(() => {\n          getInputElAtIndex(scope, context.get(\"focusedIndex\"))?.blur();\n        });\n      },\n      requestFormSubmit({ computed, prop, scope }) {\n        if (!prop(\"name\") || !computed(\"isValueComplete\")) return;\n        const inputEl = getHiddenInputEl(scope);\n        inputEl?.form?.requestSubmit();\n      }\n    }\n  }\n});\nfunction getNextValue(current, next) {\n  let nextValue = next;\n  if (current[0] === next[0]) {\n    nextValue = next[1];\n  } else if (current[0] === next[1]) {\n    nextValue = next[0];\n  }\n  const chars = nextValue.split(\"\");\n  nextValue = chars[chars.length - 1];\n  return nextValue ?? \"\";\n}\nfunction fill(value, count) {\n  return Array.from({ length: count }).fill(\"\").map((v, i) => value[i] || v);\n}\nvar props = createProps()([\n  \"autoFocus\",\n  \"blurOnComplete\",\n  \"count\",\n  \"defaultValue\",\n  \"dir\",\n  \"disabled\",\n  \"form\",\n  \"getRootNode\",\n  \"id\",\n  \"ids\",\n  \"invalid\",\n  \"mask\",\n  \"name\",\n  \"onValueChange\",\n  \"onValueComplete\",\n  \"onValueInvalid\",\n  \"otp\",\n  \"pattern\",\n  \"placeholder\",\n  \"readOnly\",\n  \"required\",\n  \"selectOnFocus\",\n  \"translations\",\n  \"type\",\n  \"value\"\n]);\nvar splitProps = createSplitProps(props);\n\nexport { anatomy, connect, machine, props, splitProps };\n", "import * as pinInput from \"@zag-js/pin-input\";\nimport { Direction } from \"@zag-js/types\";\nimport { VanillaMachine, normalizeProps } from \"@zag-js/vanilla\";\n\nimport {\n  Component,\n  getString,\n  generateId,\n  renderPart,\n  getBoolean,\n  getStringList,\n} from \"../lib\";\nexport class PinInput extends Component<pinInput.Props, pinInput.Api> {\n  initMachine(props: pinInput.Props): VanillaMachine<any> {\n    return new VanillaMachine(pinInput.machine, props);\n  }\n  initApi(): pinInput.Api {\n    return pinInput.connect(this.machine.service, normalizeProps);\n  }\n  render() {\n    const parts = [\"root\", \"label\", \"control\"];\n    for (const part of parts) renderPart(this.el, part, this.api);\n\n    renderPart(this.el, \"input\", this.api, { index: \"number\" });\n  }\n}\nexport function initPinInput(\n  doc: HTMLElement | Document = document,\n  selector = \".pin-input-js\",\n): void {\n  doc.querySelectorAll<HTMLElement>(selector).forEach((rootEl) => {\n    const inputs = rootEl.querySelectorAll<HTMLElement>('[data-part=\"input\"]');\n\n    inputs.forEach((input, index) => {\n      input.setAttribute(\"data-index\", String(index));\n    });\n\n    const directions = [\"ltr\", \"rtl\"] as const;\n    const pinInput = new PinInput(rootEl, {\n      id: generateId(rootEl, \"pinInput\"),\n      dir: getString<Direction>(rootEl, \"dir\", directions),\n      autoFocus: getBoolean(rootEl, \"autoFocus\"),\n      blurOnComplete: getBoolean(rootEl, \"blurOnComplete\"),\n      count: inputs.length,\n      defaultValue: getStringList(rootEl, \"defaultValue\"),\n      disabled: getBoolean(rootEl, \"disabled\"),\n      form: getString(rootEl, \"form\"),\n      invalid: getBoolean(rootEl, \"invalid\"),\n      mask: getBoolean(rootEl, \"mask\"),\n      name: getString(rootEl, \"name\"),\n      otp: getBoolean(rootEl, \"otp\"),\n      pattern: getString(rootEl, \"pattern\"),\n      placeholder: getString(rootEl, \"placeholder\"),\n      readOnly: getBoolean(rootEl, \"readOnly\"),\n      required: getBoolean(rootEl, \"required\"),\n      selectOnFocus: getBoolean(rootEl, \"selectOnFocus\"),\n      type: getString(rootEl, \"type\", [\n        \"alphanumeric\",\n        \"numeric\",\n        \"alphabetic\",\n      ]),\n      onValueComplete(details) {\n        const eventName = getString(rootEl, \"onValueComplete\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onValueChange(details) {\n        const eventName = getString(rootEl, \"onValueChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onValueInvalid(details) {\n        const eventName = getString(rootEl, \"onValueInvalid\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n    });\n    pinInput.init();\n  });\n}\n", "var QrCodeDataType = /* @__PURE__ */ ((QrCodeDataType2) => {\n  QrCodeDataType2[QrCodeDataType2[\"Border\"] = -1] = \"Border\";\n  QrCodeDataType2[QrCodeDataType2[\"Data\"] = 0] = \"Data\";\n  QrCodeDataType2[QrCodeDataType2[\"Function\"] = 1] = \"Function\";\n  QrCodeDataType2[QrCodeDataType2[\"Position\"] = 2] = \"Position\";\n  QrCodeDataType2[QrCodeDataType2[\"Timing\"] = 3] = \"Timing\";\n  QrCodeDataType2[QrCodeDataType2[\"Alignment\"] = 4] = \"Alignment\";\n  return QrCodeDataType2;\n})(QrCodeDataType || {});\n\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => {\n  __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n  return value;\n};\nconst LOW = [0, 1];\nconst MEDIUM = [1, 0];\nconst QUARTILE = [2, 3];\nconst HIGH = [3, 2];\nconst EccMap = {\n  L: LOW,\n  M: MEDIUM,\n  Q: QUARTILE,\n  H: HIGH\n};\nconst NUMERIC_REGEX = /^[0-9]*$/;\nconst ALPHANUMERIC_REGEX = /^[A-Z0-9 $%*+.\\/:-]*$/;\nconst ALPHANUMERIC_CHARSET = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:\";\nconst MIN_VERSION = 1;\nconst MAX_VERSION = 40;\nconst PENALTY_N1 = 3;\nconst PENALTY_N2 = 3;\nconst PENALTY_N3 = 40;\nconst PENALTY_N4 = 10;\nconst ECC_CODEWORDS_PER_BLOCK = [\n  // Version: (note that index 0 is for padding, and is set to an illegal value)\n  // 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40    Error correction level\n  [-1, 7, 10, 15, 20, 26, 18, 20, 24, 30, 18, 20, 24, 26, 30, 22, 24, 28, 30, 28, 28, 28, 28, 30, 30, 26, 28, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30],\n  // Low\n  [-1, 10, 16, 26, 18, 24, 16, 18, 22, 22, 26, 30, 22, 22, 24, 24, 28, 28, 26, 26, 26, 26, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28],\n  // Medium\n  [-1, 13, 22, 18, 26, 18, 24, 18, 22, 20, 24, 28, 26, 24, 20, 30, 24, 28, 28, 26, 30, 28, 30, 30, 30, 30, 28, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30],\n  // Quartile\n  [-1, 17, 28, 22, 16, 22, 28, 26, 26, 24, 28, 24, 28, 22, 24, 24, 30, 28, 28, 26, 28, 30, 24, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30]\n  // High\n];\nconst NUM_ERROR_CORRECTION_BLOCKS = [\n  // Version: (note that index 0 is for padding, and is set to an illegal value)\n  // 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40    Error correction level\n  [-1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 4, 4, 4, 4, 4, 6, 6, 6, 6, 7, 8, 8, 9, 9, 10, 12, 12, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 24, 25],\n  // Low\n  [-1, 1, 1, 1, 2, 2, 4, 4, 4, 5, 5, 5, 8, 9, 9, 10, 10, 11, 13, 14, 16, 17, 17, 18, 20, 21, 23, 25, 26, 28, 29, 31, 33, 35, 37, 38, 40, 43, 45, 47, 49],\n  // Medium\n  [-1, 1, 1, 2, 2, 4, 4, 6, 6, 8, 8, 8, 10, 12, 16, 12, 17, 16, 18, 21, 20, 23, 23, 25, 27, 29, 34, 34, 35, 38, 40, 43, 45, 48, 51, 53, 56, 59, 62, 65, 68],\n  // Quartile\n  [-1, 1, 1, 2, 4, 4, 4, 5, 6, 8, 8, 11, 11, 16, 16, 18, 16, 19, 21, 25, 25, 25, 34, 30, 32, 35, 37, 40, 42, 45, 48, 51, 54, 57, 60, 63, 66, 70, 74, 77, 81]\n  // High\n];\nclass QrCode {\n  /* -- Constructor (low level) and fields -- */\n  // Creates a new QR Code with the given version number,\n  // error correction level, data codeword bytes, and mask number.\n  // This is a low-level API that most users should not use directly.\n  // A mid-level API is the encodeSegments() function.\n  constructor(version, ecc, dataCodewords, msk) {\n    this.version = version;\n    this.ecc = ecc;\n    /* -- Fields -- */\n    // The width and height of this QR Code, measured in modules, between\n    // 21 and 177 (inclusive). This is equal to version * 4 + 17.\n    __publicField(this, \"size\");\n    // The index of the mask pattern used in this QR Code, which is between 0 and 7 (inclusive).\n    // Even if a QR Code is created with automatic masking requested (mask = -1),\n    // the resulting object still has a mask value between 0 and 7.\n    __publicField(this, \"mask\");\n    // The modules of this QR Code (false = light, true = dark).\n    // Immutable after constructor finishes. Accessed through getModule().\n    __publicField(this, \"modules\", []);\n    __publicField(this, \"types\", []);\n    if (version < MIN_VERSION || version > MAX_VERSION)\n      throw new RangeError(\"Version value out of range\");\n    if (msk < -1 || msk > 7)\n      throw new RangeError(\"Mask value out of range\");\n    this.size = version * 4 + 17;\n    const row = Array.from({ length: this.size }, () => false);\n    for (let i = 0; i < this.size; i++) {\n      this.modules.push(row.slice());\n      this.types.push(row.map(() => 0));\n    }\n    this.drawFunctionPatterns();\n    const allCodewords = this.addEccAndInterleave(dataCodewords);\n    this.drawCodewords(allCodewords);\n    if (msk === -1) {\n      let minPenalty = 1e9;\n      for (let i = 0; i < 8; i++) {\n        this.applyMask(i);\n        this.drawFormatBits(i);\n        const penalty = this.getPenaltyScore();\n        if (penalty < minPenalty) {\n          msk = i;\n          minPenalty = penalty;\n        }\n        this.applyMask(i);\n      }\n    }\n    this.mask = msk;\n    this.applyMask(msk);\n    this.drawFormatBits(msk);\n  }\n  /* -- Accessor methods -- */\n  // Returns the color of the module (pixel) at the given coordinates, which is false\n  // for light or true for dark. The top left corner has the coordinates (x=0, y=0).\n  // If the given coordinates are out of bounds, then false (light) is returned.\n  getModule(x, y) {\n    return x >= 0 && x < this.size && y >= 0 && y < this.size && this.modules[y][x];\n  }\n  /* -- Private helper methods for constructor: Drawing function modules -- */\n  // Reads this object's version field, and draws and marks all function modules.\n  drawFunctionPatterns() {\n    for (let i = 0; i < this.size; i++) {\n      this.setFunctionModule(6, i, i % 2 === 0, QrCodeDataType.Timing);\n      this.setFunctionModule(i, 6, i % 2 === 0, QrCodeDataType.Timing);\n    }\n    this.drawFinderPattern(3, 3);\n    this.drawFinderPattern(this.size - 4, 3);\n    this.drawFinderPattern(3, this.size - 4);\n    const alignPatPos = this.getAlignmentPatternPositions();\n    const numAlign = alignPatPos.length;\n    for (let i = 0; i < numAlign; i++) {\n      for (let j = 0; j < numAlign; j++) {\n        if (!(i === 0 && j === 0 || i === 0 && j === numAlign - 1 || i === numAlign - 1 && j === 0))\n          this.drawAlignmentPattern(alignPatPos[i], alignPatPos[j]);\n      }\n    }\n    this.drawFormatBits(0);\n    this.drawVersion();\n  }\n  // Draws two copies of the format bits (with its own error correction code)\n  // based on the given mask and this object's error correction level field.\n  drawFormatBits(mask) {\n    const data = this.ecc[1] << 3 | mask;\n    let rem = data;\n    for (let i = 0; i < 10; i++)\n      rem = rem << 1 ^ (rem >>> 9) * 1335;\n    const bits = (data << 10 | rem) ^ 21522;\n    for (let i = 0; i <= 5; i++)\n      this.setFunctionModule(8, i, getBit(bits, i));\n    this.setFunctionModule(8, 7, getBit(bits, 6));\n    this.setFunctionModule(8, 8, getBit(bits, 7));\n    this.setFunctionModule(7, 8, getBit(bits, 8));\n    for (let i = 9; i < 15; i++)\n      this.setFunctionModule(14 - i, 8, getBit(bits, i));\n    for (let i = 0; i < 8; i++)\n      this.setFunctionModule(this.size - 1 - i, 8, getBit(bits, i));\n    for (let i = 8; i < 15; i++)\n      this.setFunctionModule(8, this.size - 15 + i, getBit(bits, i));\n    this.setFunctionModule(8, this.size - 8, true);\n  }\n  // Draws two copies of the version bits (with its own error correction code),\n  // based on this object's version field, iff 7 <= version <= 40.\n  drawVersion() {\n    if (this.version < 7)\n      return;\n    let rem = this.version;\n    for (let i = 0; i < 12; i++)\n      rem = rem << 1 ^ (rem >>> 11) * 7973;\n    const bits = this.version << 12 | rem;\n    for (let i = 0; i < 18; i++) {\n      const color = getBit(bits, i);\n      const a = this.size - 11 + i % 3;\n      const b = Math.floor(i / 3);\n      this.setFunctionModule(a, b, color);\n      this.setFunctionModule(b, a, color);\n    }\n  }\n  // Draws a 9*9 finder pattern including the border separator,\n  // with the center module at (x, y). Modules can be out of bounds.\n  drawFinderPattern(x, y) {\n    for (let dy = -4; dy <= 4; dy++) {\n      for (let dx = -4; dx <= 4; dx++) {\n        const dist = Math.max(Math.abs(dx), Math.abs(dy));\n        const xx = x + dx;\n        const yy = y + dy;\n        if (xx >= 0 && xx < this.size && yy >= 0 && yy < this.size)\n          this.setFunctionModule(xx, yy, dist !== 2 && dist !== 4, QrCodeDataType.Position);\n      }\n    }\n  }\n  // Draws a 5*5 alignment pattern, with the center module\n  // at (x, y). All modules must be in bounds.\n  drawAlignmentPattern(x, y) {\n    for (let dy = -2; dy <= 2; dy++) {\n      for (let dx = -2; dx <= 2; dx++) {\n        this.setFunctionModule(\n          x + dx,\n          y + dy,\n          Math.max(Math.abs(dx), Math.abs(dy)) !== 1,\n          QrCodeDataType.Alignment\n        );\n      }\n    }\n  }\n  // Sets the color of a module and marks it as a function module.\n  // Only used by the constructor. Coordinates must be in bounds.\n  setFunctionModule(x, y, isDark, type = QrCodeDataType.Function) {\n    this.modules[y][x] = isDark;\n    this.types[y][x] = type;\n  }\n  /* -- Private helper methods for constructor: Codewords and masking -- */\n  // Returns a new byte string representing the given data with the appropriate error correction\n  // codewords appended to it, based on this object's version and error correction level.\n  addEccAndInterleave(data) {\n    const ver = this.version;\n    const ecl = this.ecc;\n    if (data.length !== getNumDataCodewords(ver, ecl))\n      throw new RangeError(\"Invalid argument\");\n    const numBlocks = NUM_ERROR_CORRECTION_BLOCKS[ecl[0]][ver];\n    const blockEccLen = ECC_CODEWORDS_PER_BLOCK[ecl[0]][ver];\n    const rawCodewords = Math.floor(getNumRawDataModules(ver) / 8);\n    const numShortBlocks = numBlocks - rawCodewords % numBlocks;\n    const shortBlockLen = Math.floor(rawCodewords / numBlocks);\n    const blocks = [];\n    const rsDiv = reedSolomonComputeDivisor(blockEccLen);\n    for (let i = 0, k = 0; i < numBlocks; i++) {\n      const dat = data.slice(k, k + shortBlockLen - blockEccLen + (i < numShortBlocks ? 0 : 1));\n      k += dat.length;\n      const ecc = reedSolomonComputeRemainder(dat, rsDiv);\n      if (i < numShortBlocks)\n        dat.push(0);\n      blocks.push(dat.concat(ecc));\n    }\n    const result = [];\n    for (let i = 0; i < blocks[0].length; i++) {\n      blocks.forEach((block, j) => {\n        if (i !== shortBlockLen - blockEccLen || j >= numShortBlocks)\n          result.push(block[i]);\n      });\n    }\n    return result;\n  }\n  // Draws the given sequence of 8-bit codewords (data and error correction) onto the entire\n  // data area of this QR Code. Function modules need to be marked off before this is called.\n  drawCodewords(data) {\n    if (data.length !== Math.floor(getNumRawDataModules(this.version) / 8))\n      throw new RangeError(\"Invalid argument\");\n    let i = 0;\n    for (let right = this.size - 1; right >= 1; right -= 2) {\n      if (right === 6)\n        right = 5;\n      for (let vert = 0; vert < this.size; vert++) {\n        for (let j = 0; j < 2; j++) {\n          const x = right - j;\n          const upward = (right + 1 & 2) === 0;\n          const y = upward ? this.size - 1 - vert : vert;\n          if (!this.types[y][x] && i < data.length * 8) {\n            this.modules[y][x] = getBit(data[i >>> 3], 7 - (i & 7));\n            i++;\n          }\n        }\n      }\n    }\n  }\n  // XORs the codeword modules in this QR Code with the given mask pattern.\n  // The function modules must be marked and the codeword bits must be drawn\n  // before masking. Due to the arithmetic of XOR, calling applyMask() with\n  // the same mask value a second time will undo the mask. A final well-formed\n  // QR Code needs exactly one (not zero, two, etc.) mask applied.\n  applyMask(mask) {\n    if (mask < 0 || mask > 7)\n      throw new RangeError(\"Mask value out of range\");\n    for (let y = 0; y < this.size; y++) {\n      for (let x = 0; x < this.size; x++) {\n        let invert;\n        switch (mask) {\n          case 0:\n            invert = (x + y) % 2 === 0;\n            break;\n          case 1:\n            invert = y % 2 === 0;\n            break;\n          case 2:\n            invert = x % 3 === 0;\n            break;\n          case 3:\n            invert = (x + y) % 3 === 0;\n            break;\n          case 4:\n            invert = (Math.floor(x / 3) + Math.floor(y / 2)) % 2 === 0;\n            break;\n          case 5:\n            invert = x * y % 2 + x * y % 3 === 0;\n            break;\n          case 6:\n            invert = (x * y % 2 + x * y % 3) % 2 === 0;\n            break;\n          case 7:\n            invert = ((x + y) % 2 + x * y % 3) % 2 === 0;\n            break;\n          default:\n            throw new Error(\"Unreachable\");\n        }\n        if (!this.types[y][x] && invert)\n          this.modules[y][x] = !this.modules[y][x];\n      }\n    }\n  }\n  // Calculates and returns the penalty score based on state of this QR Code's current modules.\n  // This is used by the automatic mask choice algorithm to find the mask pattern that yields the lowest score.\n  getPenaltyScore() {\n    let result = 0;\n    for (let y = 0; y < this.size; y++) {\n      let runColor = false;\n      let runX = 0;\n      const runHistory = [0, 0, 0, 0, 0, 0, 0];\n      for (let x = 0; x < this.size; x++) {\n        if (this.modules[y][x] === runColor) {\n          runX++;\n          if (runX === 5)\n            result += PENALTY_N1;\n          else if (runX > 5)\n            result++;\n        } else {\n          this.finderPenaltyAddHistory(runX, runHistory);\n          if (!runColor)\n            result += this.finderPenaltyCountPatterns(runHistory) * PENALTY_N3;\n          runColor = this.modules[y][x];\n          runX = 1;\n        }\n      }\n      result += this.finderPenaltyTerminateAndCount(runColor, runX, runHistory) * PENALTY_N3;\n    }\n    for (let x = 0; x < this.size; x++) {\n      let runColor = false;\n      let runY = 0;\n      const runHistory = [0, 0, 0, 0, 0, 0, 0];\n      for (let y = 0; y < this.size; y++) {\n        if (this.modules[y][x] === runColor) {\n          runY++;\n          if (runY === 5)\n            result += PENALTY_N1;\n          else if (runY > 5)\n            result++;\n        } else {\n          this.finderPenaltyAddHistory(runY, runHistory);\n          if (!runColor)\n            result += this.finderPenaltyCountPatterns(runHistory) * PENALTY_N3;\n          runColor = this.modules[y][x];\n          runY = 1;\n        }\n      }\n      result += this.finderPenaltyTerminateAndCount(runColor, runY, runHistory) * PENALTY_N3;\n    }\n    for (let y = 0; y < this.size - 1; y++) {\n      for (let x = 0; x < this.size - 1; x++) {\n        const color = this.modules[y][x];\n        if (color === this.modules[y][x + 1] && color === this.modules[y + 1][x] && color === this.modules[y + 1][x + 1])\n          result += PENALTY_N2;\n      }\n    }\n    let dark = 0;\n    for (const row of this.modules)\n      dark = row.reduce((sum, color) => sum + (color ? 1 : 0), dark);\n    const total = this.size * this.size;\n    const k = Math.ceil(Math.abs(dark * 20 - total * 10) / total) - 1;\n    result += k * PENALTY_N4;\n    return result;\n  }\n  /* -- Private helper functions -- */\n  // Returns an ascending list of positions of alignment patterns for this version number.\n  // Each position is in the range [0,177), and are used on both the x and y axes.\n  // This could be implemented as lookup table of 40 variable-length lists of integers.\n  getAlignmentPatternPositions() {\n    if (this.version === 1) {\n      return [];\n    } else {\n      const numAlign = Math.floor(this.version / 7) + 2;\n      const step = this.version === 32 ? 26 : Math.ceil((this.version * 4 + 4) / (numAlign * 2 - 2)) * 2;\n      const result = [6];\n      for (let pos = this.size - 7; result.length < numAlign; pos -= step)\n        result.splice(1, 0, pos);\n      return result;\n    }\n  }\n  // Can only be called immediately after a light run is added, and\n  // returns either 0, 1, or 2. A helper function for getPenaltyScore().\n  finderPenaltyCountPatterns(runHistory) {\n    const n = runHistory[1];\n    const core = n > 0 && runHistory[2] === n && runHistory[3] === n * 3 && runHistory[4] === n && runHistory[5] === n;\n    return (core && runHistory[0] >= n * 4 && runHistory[6] >= n ? 1 : 0) + (core && runHistory[6] >= n * 4 && runHistory[0] >= n ? 1 : 0);\n  }\n  // Must be called at the end of a line (row or column) of modules. A helper function for getPenaltyScore().\n  finderPenaltyTerminateAndCount(currentRunColor, currentRunLength, runHistory) {\n    if (currentRunColor) {\n      this.finderPenaltyAddHistory(currentRunLength, runHistory);\n      currentRunLength = 0;\n    }\n    currentRunLength += this.size;\n    this.finderPenaltyAddHistory(currentRunLength, runHistory);\n    return this.finderPenaltyCountPatterns(runHistory);\n  }\n  // Pushes the given value to the front and drops the last value. A helper function for getPenaltyScore().\n  finderPenaltyAddHistory(currentRunLength, runHistory) {\n    if (runHistory[0] === 0)\n      currentRunLength += this.size;\n    runHistory.pop();\n    runHistory.unshift(currentRunLength);\n  }\n}\nfunction appendBits(val, len, bb) {\n  if (len < 0 || len > 31 || val >>> len !== 0)\n    throw new RangeError(\"Value out of range\");\n  for (let i = len - 1; i >= 0; i--)\n    bb.push(val >>> i & 1);\n}\nfunction getBit(x, i) {\n  return (x >>> i & 1) !== 0;\n}\nclass QrSegment {\n  // Creates a new QR Code segment with the given attributes and data.\n  // The character count (numChars) must agree with the mode and the bit buffer length,\n  // but the constraint isn't checked. The given bit buffer is cloned and stored.\n  constructor(mode, numChars, bitData) {\n    this.mode = mode;\n    this.numChars = numChars;\n    this.bitData = bitData;\n    if (numChars < 0)\n      throw new RangeError(\"Invalid argument\");\n    this.bitData = bitData.slice();\n  }\n  /* -- Methods -- */\n  // Returns a new copy of the data bits of this segment.\n  getData() {\n    return this.bitData.slice();\n  }\n}\nconst MODE_NUMERIC = [1, 10, 12, 14];\nconst MODE_ALPHANUMERIC = [2, 9, 11, 13];\nconst MODE_BYTE = [4, 8, 16, 16];\nfunction numCharCountBits(mode, ver) {\n  return mode[Math.floor((ver + 7) / 17) + 1];\n}\nfunction makeBytes(data) {\n  const bb = [];\n  for (const b of data)\n    appendBits(b, 8, bb);\n  return new QrSegment(MODE_BYTE, data.length, bb);\n}\nfunction makeNumeric(digits) {\n  if (!isNumeric(digits))\n    throw new RangeError(\"String contains non-numeric characters\");\n  const bb = [];\n  for (let i = 0; i < digits.length; ) {\n    const n = Math.min(digits.length - i, 3);\n    appendBits(Number.parseInt(digits.substring(i, i + n), 10), n * 3 + 1, bb);\n    i += n;\n  }\n  return new QrSegment(MODE_NUMERIC, digits.length, bb);\n}\nfunction makeAlphanumeric(text) {\n  if (!isAlphanumeric(text))\n    throw new RangeError(\"String contains unencodable characters in alphanumeric mode\");\n  const bb = [];\n  let i;\n  for (i = 0; i + 2 <= text.length; i += 2) {\n    let temp = ALPHANUMERIC_CHARSET.indexOf(text.charAt(i)) * 45;\n    temp += ALPHANUMERIC_CHARSET.indexOf(text.charAt(i + 1));\n    appendBits(temp, 11, bb);\n  }\n  if (i < text.length)\n    appendBits(ALPHANUMERIC_CHARSET.indexOf(text.charAt(i)), 6, bb);\n  return new QrSegment(MODE_ALPHANUMERIC, text.length, bb);\n}\nfunction makeSegments(text) {\n  if (text === \"\")\n    return [];\n  else if (isNumeric(text))\n    return [makeNumeric(text)];\n  else if (isAlphanumeric(text))\n    return [makeAlphanumeric(text)];\n  else\n    return [makeBytes(toUtf8ByteArray(text))];\n}\nfunction isNumeric(text) {\n  return NUMERIC_REGEX.test(text);\n}\nfunction isAlphanumeric(text) {\n  return ALPHANUMERIC_REGEX.test(text);\n}\nfunction getTotalBits(segs, version) {\n  let result = 0;\n  for (const seg of segs) {\n    const ccbits = numCharCountBits(seg.mode, version);\n    if (seg.numChars >= 1 << ccbits)\n      return Number.POSITIVE_INFINITY;\n    result += 4 + ccbits + seg.bitData.length;\n  }\n  return result;\n}\nfunction toUtf8ByteArray(str) {\n  str = encodeURI(str);\n  const result = [];\n  for (let i = 0; i < str.length; i++) {\n    if (str.charAt(i) !== \"%\") {\n      result.push(str.charCodeAt(i));\n    } else {\n      result.push(Number.parseInt(str.substring(i + 1, i + 3), 16));\n      i += 2;\n    }\n  }\n  return result;\n}\nfunction getNumRawDataModules(ver) {\n  if (ver < MIN_VERSION || ver > MAX_VERSION)\n    throw new RangeError(\"Version number out of range\");\n  let result = (16 * ver + 128) * ver + 64;\n  if (ver >= 2) {\n    const numAlign = Math.floor(ver / 7) + 2;\n    result -= (25 * numAlign - 10) * numAlign - 55;\n    if (ver >= 7)\n      result -= 36;\n  }\n  return result;\n}\nfunction getNumDataCodewords(ver, ecl) {\n  return Math.floor(getNumRawDataModules(ver) / 8) - ECC_CODEWORDS_PER_BLOCK[ecl[0]][ver] * NUM_ERROR_CORRECTION_BLOCKS[ecl[0]][ver];\n}\nfunction reedSolomonComputeDivisor(degree) {\n  if (degree < 1 || degree > 255)\n    throw new RangeError(\"Degree out of range\");\n  const result = [];\n  for (let i = 0; i < degree - 1; i++)\n    result.push(0);\n  result.push(1);\n  let root = 1;\n  for (let i = 0; i < degree; i++) {\n    for (let j = 0; j < result.length; j++) {\n      result[j] = reedSolomonMultiply(result[j], root);\n      if (j + 1 < result.length)\n        result[j] ^= result[j + 1];\n    }\n    root = reedSolomonMultiply(root, 2);\n  }\n  return result;\n}\nfunction reedSolomonComputeRemainder(data, divisor) {\n  const result = divisor.map((_) => 0);\n  for (const b of data) {\n    const factor = b ^ result.shift();\n    result.push(0);\n    divisor.forEach((coef, i) => result[i] ^= reedSolomonMultiply(coef, factor));\n  }\n  return result;\n}\nfunction reedSolomonMultiply(x, y) {\n  if (x >>> 8 !== 0 || y >>> 8 !== 0)\n    throw new RangeError(\"Byte out of range\");\n  let z = 0;\n  for (let i = 7; i >= 0; i--) {\n    z = z << 1 ^ (z >>> 7) * 285;\n    z ^= (y >>> i & 1) * x;\n  }\n  return z;\n}\nfunction encodeSegments(segs, ecl, minVersion = 1, maxVersion = 40, mask = -1, boostEcl = true) {\n  if (!(MIN_VERSION <= minVersion && minVersion <= maxVersion && maxVersion <= MAX_VERSION) || mask < -1 || mask > 7)\n    throw new RangeError(\"Invalid value\");\n  let version;\n  let dataUsedBits;\n  for (version = minVersion; ; version++) {\n    const dataCapacityBits2 = getNumDataCodewords(version, ecl) * 8;\n    const usedBits = getTotalBits(segs, version);\n    if (usedBits <= dataCapacityBits2) {\n      dataUsedBits = usedBits;\n      break;\n    }\n    if (version >= maxVersion)\n      throw new RangeError(\"Data too long\");\n  }\n  for (const newEcl of [MEDIUM, QUARTILE, HIGH]) {\n    if (boostEcl && dataUsedBits <= getNumDataCodewords(version, newEcl) * 8)\n      ecl = newEcl;\n  }\n  const bb = [];\n  for (const seg of segs) {\n    appendBits(seg.mode[0], 4, bb);\n    appendBits(seg.numChars, numCharCountBits(seg.mode, version), bb);\n    for (const b of seg.getData())\n      bb.push(b);\n  }\n  const dataCapacityBits = getNumDataCodewords(version, ecl) * 8;\n  appendBits(0, Math.min(4, dataCapacityBits - bb.length), bb);\n  appendBits(0, (8 - bb.length % 8) % 8, bb);\n  for (let padByte = 236; bb.length < dataCapacityBits; padByte ^= 236 ^ 17)\n    appendBits(padByte, 8, bb);\n  const dataCodewords = Array.from({ length: Math.ceil(bb.length / 8) }, () => 0);\n  bb.forEach((b, i) => dataCodewords[i >>> 3] |= b << 7 - (i & 7));\n  return new QrCode(version, ecl, dataCodewords, mask);\n}\n\nfunction encode(data, options) {\n  const {\n    ecc = \"L\",\n    boostEcc = false,\n    minVersion = 1,\n    maxVersion = 40,\n    maskPattern = -1,\n    border = 1\n  } = options || {};\n  const segment = typeof data === \"string\" ? makeSegments(data) : Array.isArray(data) ? [makeBytes(data)] : void 0;\n  if (!segment)\n    throw new Error(`uqr only supports encoding string and binary data, but got: ${typeof data}`);\n  const qr = encodeSegments(\n    segment,\n    EccMap[ecc],\n    minVersion,\n    maxVersion,\n    maskPattern,\n    boostEcc\n  );\n  const result = addBorder({\n    version: qr.version,\n    maskPattern: qr.mask,\n    size: qr.size,\n    data: qr.modules,\n    types: qr.types\n  }, border);\n  if (options?.invert)\n    result.data = result.data.map((row) => row.map((mod) => !mod));\n  options?.onEncoded?.(result);\n  return result;\n}\nfunction addBorder(input, border = 1) {\n  if (!border)\n    return input;\n  const { size } = input;\n  const newSize = size + border * 2;\n  input.size = newSize;\n  input.data.forEach((row) => {\n    for (let i = 0; i < border; i++) {\n      row.unshift(false);\n      row.push(false);\n    }\n  });\n  for (let i = 0; i < border; i++) {\n    input.data.unshift(Array.from({ length: newSize }, (_) => false));\n    input.data.push(Array.from({ length: newSize }, (_) => false));\n  }\n  const b = QrCodeDataType.Border;\n  input.types.forEach((row) => {\n    for (let i = 0; i < border; i++) {\n      row.unshift(b);\n      row.push(b);\n    }\n  });\n  for (let i = 0; i < border; i++) {\n    input.types.unshift(Array.from({ length: newSize }, (_) => b));\n    input.types.push(Array.from({ length: newSize }, (_) => b));\n  }\n  return input;\n}\nfunction getDataAt(data, x, y, defaults = false) {\n  if (x < 0 || y < 0 || x >= data.length || y >= data.length)\n    return defaults;\n  return data[y][x];\n}\n\nfunction renderUnicode(data, options = {}) {\n  const {\n    whiteChar = \"\\u2588\",\n    blackChar = \"\\u2591\"\n  } = options;\n  const result = encode(data, options);\n  return result.data.map((row) => {\n    return row.map((mod) => mod ? blackChar : whiteChar).join(\"\");\n  }).join(\"\\n\");\n}\nfunction renderANSI(data, options = {}) {\n  return renderUnicode(data, {\n    ...options,\n    blackChar: \"\\x1B[40m\\u3000\\x1B[0m\",\n    whiteChar: \"\\x1B[47m\\u3000\\x1B[0m\"\n  });\n}\nfunction renderUnicodeCompact(data, options = {}) {\n  const platte = {\n    WHITE_ALL: \"\\u2588\",\n    WHITE_BLACK: \"\\u2580\",\n    BLACK_WHITE: \"\\u2584\",\n    BLACK_ALL: \" \"\n  };\n  const result = encode(data, options);\n  const WHITE = false;\n  const BLACK = true;\n  const at = (x, y) => getDataAt(result.data, x, y, true);\n  const lines = [];\n  let line = \"\";\n  for (let row = 0; row < result.size; row += 2) {\n    for (let col = 0; col < result.size; col++) {\n      if (at(col, row) === WHITE && at(col, row + 1) === WHITE)\n        line += platte.WHITE_ALL;\n      else if (at(col, row) === WHITE && at(col, row + 1) === BLACK)\n        line += platte.WHITE_BLACK;\n      else if (at(col, row) === BLACK && at(col, row + 1) === WHITE)\n        line += platte.BLACK_WHITE;\n      else\n        line += platte.BLACK_ALL;\n    }\n    lines.push(line);\n    line = \"\";\n  }\n  return lines.join(\"\\n\");\n}\n\nfunction renderSVG(data, options = {}) {\n  const result = encode(data, options);\n  const {\n    pixelSize = 10,\n    whiteColor = \"white\",\n    blackColor = \"black\"\n  } = options;\n  const height = result.size * pixelSize;\n  const width = result.size * pixelSize;\n  let svg = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 ${width} ${height}\">`;\n  const pathes = [];\n  for (let row = 0; row < result.size; row++) {\n    for (let col = 0; col < result.size; col++) {\n      const x = col * pixelSize;\n      const y = row * pixelSize;\n      if (result.data[row][col])\n        pathes.push(`M${x},${y}h${pixelSize}v${pixelSize}h-${pixelSize}z`);\n    }\n  }\n  svg += `<rect fill=\"${whiteColor}\" width=\"${width}\" height=\"${height}\"/>`;\n  svg += `<path fill=\"${blackColor}\" d=\"${pathes.join(\"\")}\"/>`;\n  svg += \"</svg>\";\n  return svg;\n}\n\nexport { QrCodeDataType, encode, renderANSI, renderSVG, renderUnicode, renderUnicodeCompact };\n", "import { createAnatomy } from '@zag-js/anatomy';\nimport { getDataUrl } from '@zag-js/dom-query';\nimport { createMachine, memo } from '@zag-js/core';\nimport { encode } from 'uqr';\nimport { createProps } from '@zag-js/types';\nimport { createSplitProps } from '@zag-js/utils';\n\n// src/qr-code.anatomy.ts\nvar anatomy = createAnatomy(\"qr-code\").parts(\"root\", \"frame\", \"pattern\", \"overlay\", \"downloadTrigger\");\nvar parts = anatomy.build();\n\n// src/qr-code.dom.ts\nvar getRootId = (scope) => scope.ids?.root ?? `qrcode:${scope.id}:root`;\nvar getFrameId = (scope) => scope.ids?.frame ?? `qrcode:${scope.id}:frame`;\nvar getFrameEl = (scope) => scope.getById(getFrameId(scope));\n\n// src/qr-code.connect.ts\nfunction connect(service, normalize) {\n  const { context, computed, send, scope, prop } = service;\n  const encoded = computed(\"encoded\");\n  const pixelSize = prop(\"pixelSize\");\n  const height = encoded.size * pixelSize;\n  const width = encoded.size * pixelSize;\n  const paths = [];\n  for (let row = 0; row < encoded.size; row++) {\n    for (let col = 0; col < encoded.size; col++) {\n      const x = col * pixelSize;\n      const y = row * pixelSize;\n      if (encoded.data[row][col]) {\n        paths.push(`M${x},${y}h${pixelSize}v${pixelSize}h-${pixelSize}z`);\n      }\n    }\n  }\n  return {\n    value: context.get(\"value\"),\n    setValue(value) {\n      send({ type: \"VALUE.SET\", value });\n    },\n    getDataUrl(type, quality) {\n      const svgEl = getFrameEl(scope);\n      return getDataUrl(svgEl, { type, quality });\n    },\n    getRootProps() {\n      return normalize.element({\n        id: getRootId(scope),\n        ...parts.root.attrs,\n        style: {\n          \"--qrcode-pixel-size\": `${pixelSize}px`,\n          \"--qrcode-width\": `${width}px`,\n          \"--qrcode-height\": `${height}px`,\n          position: \"relative\"\n        }\n      });\n    },\n    getFrameProps() {\n      return normalize.svg({\n        id: getFrameId(scope),\n        ...parts.frame.attrs,\n        xmlns: \"http://www.w3.org/2000/svg\",\n        viewBox: `0 0 ${width} ${height}`\n      });\n    },\n    getPatternProps() {\n      return normalize.path({\n        d: paths.join(\"\"),\n        ...parts.pattern.attrs\n      });\n    },\n    getOverlayProps() {\n      return normalize.element({\n        ...parts.overlay.attrs,\n        style: {\n          position: \"absolute\",\n          top: \"50%\",\n          left: \"50%\",\n          translate: \"-50% -50%\"\n        }\n      });\n    },\n    getDownloadTriggerProps(props2) {\n      return normalize.button({\n        type: \"button\",\n        ...parts.downloadTrigger.attrs,\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          send({ type: \"DOWNLOAD_TRIGGER.CLICK\", ...props2 });\n        }\n      });\n    }\n  };\n}\nvar machine = createMachine({\n  props({ props: props2 }) {\n    return {\n      defaultValue: \"\",\n      pixelSize: 10,\n      ...props2\n    };\n  },\n  initialState() {\n    return \"idle\";\n  },\n  context({ prop, bindable }) {\n    return {\n      value: bindable(() => ({\n        value: prop(\"value\"),\n        defaultValue: prop(\"defaultValue\"),\n        onChange(value) {\n          prop(\"onValueChange\")?.({ value });\n        }\n      }))\n    };\n  },\n  computed: {\n    encoded: memo(\n      ({ context, prop }) => [context.get(\"value\"), prop(\"encoding\")],\n      ([value, encoding]) => encode(value, encoding)\n    )\n  },\n  states: {\n    idle: {\n      on: {\n        \"VALUE.SET\": {\n          actions: [\"setValue\"]\n        },\n        \"DOWNLOAD_TRIGGER.CLICK\": {\n          actions: [\"downloadQrCode\"]\n        }\n      }\n    }\n  },\n  implementations: {\n    actions: {\n      setValue({ context, event }) {\n        context.set(\"value\", event.value);\n      },\n      downloadQrCode({ event, scope }) {\n        const { mimeType, quality, fileName } = event;\n        const svgEl = getFrameEl(scope);\n        const doc = scope.getDoc();\n        getDataUrl(svgEl, { type: mimeType, quality }).then((dataUri) => {\n          const a = doc.createElement(\"a\");\n          a.href = dataUri;\n          a.rel = \"noopener\";\n          a.download = fileName;\n          a.click();\n          setTimeout(() => {\n            a.remove();\n          }, 0);\n        });\n      }\n    }\n  }\n});\nvar props = createProps()([\n  \"ids\",\n  \"defaultValue\",\n  \"value\",\n  \"id\",\n  \"encoding\",\n  \"dir\",\n  \"getRootNode\",\n  \"onValueChange\",\n  \"pixelSize\"\n]);\nvar splitProps = createSplitProps(props);\n\nexport { anatomy, connect, machine, props, splitProps };\n", "import * as qrCode from \"@zag-js/qr-code\";\nimport { Direction } from \"@zag-js/types\";\nimport { VanillaMachine, normalizeProps } from \"@zag-js/vanilla\";\n\nimport {\n  Component,\n  getString,\n  generateId,\n  renderPart,\n  getNumber,\n  getBoolean,\n  getPartIds,\n} from \"../lib\";\nexport class QrCode extends Component<qrCode.Props, qrCode.Api> {\n  initMachine(props: qrCode.Props): VanillaMachine<any> {\n    return new VanillaMachine(qrCode.machine, props);\n  }\n  initApi(): qrCode.Api {\n    return qrCode.connect(this.machine.service, normalizeProps);\n  }\n  render() {\n    const parts = [\"root\", \"frame\", \"pattern\", \"overlay\", \"downloadTrigger\"];\n    for (const part of parts) renderPart(this.el, part, this.api);\n  }\n}\nexport function initQrCode(\n  doc: HTMLElement | Document = document,\n  selector = \".qr-code-js\",\n): void {\n  doc.querySelectorAll<HTMLElement>(selector).forEach((rootEl) => {\n    const directions = [\"ltr\", \"rtl\"] as const;\n    const qrCode = new QrCode(rootEl, {\n      id: generateId(rootEl, \"qrCode\"),\n      ids: getPartIds(rootEl, [\n        \"root\",\n        \"frame\",\n        \"pattern\",\n        \"overlay\",\n        \"downloadTrigger\",\n      ]),\n      dir: getString<Direction>(rootEl, \"dir\", directions),\n      defaultValue: getString(rootEl, \"defaultValue\"),\n      pixelSize: getNumber(rootEl, \"pixelSize\"),\n      encoding: {\n        boostEcc: getBoolean(rootEl, \"boostEcc\"),\n        border: getNumber(rootEl, \"border\"),\n        ecc: getString(rootEl, \"ecc\", [\"L\", \"M\", \"Q\", \"H\"]),\n        invert: getBoolean(rootEl, \"invert\"),\n        maskPattern: getNumber(rootEl, \"maskPattern\"),\n        maxVersion: getNumber(rootEl, \"maxVersion\"),\n        minVersion: getNumber(rootEl, \"minVersion\"),\n        onEncoded(qr) {\n          const eventName = getString(rootEl, \"onEncoded\");\n          if (eventName) {\n            queueMicrotask(() => {\n              rootEl.dispatchEvent(new CustomEvent(eventName, { detail: qr }));\n            });\n          }\n        },\n      },\n    });\n    qrCode.init();\n  });\n}\n", "import { createAnatomy } from '@zag-js/anatomy';\nimport { dispatchInputCheckedEvent, resizeObserverBorderBox, trackFormControl, queryAll, dataAttr, visuallyHiddenStyle, isSafari, isLeftClick } from '@zag-js/dom-query';\nimport { trackFocusVisible, isFocusVisible } from '@zag-js/focus-visible';\nimport { createSplitProps, toPx } from '@zag-js/utils';\nimport { createGuards, createMachine } from '@zag-js/core';\nimport { createProps } from '@zag-js/types';\n\n// src/radio-group.anatomy.ts\nvar anatomy = createAnatomy(\"radio-group\").parts(\n  \"root\",\n  \"label\",\n  \"item\",\n  \"itemText\",\n  \"itemControl\",\n  \"indicator\"\n);\nvar parts = anatomy.build();\nvar getRootId = (ctx) => ctx.ids?.root ?? `radio-group:${ctx.id}`;\nvar getLabelId = (ctx) => ctx.ids?.label ?? `radio-group:${ctx.id}:label`;\nvar getItemId = (ctx, value) => ctx.ids?.item?.(value) ?? `radio-group:${ctx.id}:radio:${value}`;\nvar getItemHiddenInputId = (ctx, value) => ctx.ids?.itemHiddenInput?.(value) ?? `radio-group:${ctx.id}:radio:input:${value}`;\nvar getItemControlId = (ctx, value) => ctx.ids?.itemControl?.(value) ?? `radio-group:${ctx.id}:radio:control:${value}`;\nvar getItemLabelId = (ctx, value) => ctx.ids?.itemLabel?.(value) ?? `radio-group:${ctx.id}:radio:label:${value}`;\nvar getIndicatorId = (ctx) => ctx.ids?.indicator ?? `radio-group:${ctx.id}:indicator`;\nvar getRootEl = (ctx) => ctx.getById(getRootId(ctx));\nvar getItemHiddenInputEl = (ctx, value) => ctx.getById(getItemHiddenInputId(ctx, value));\nvar getIndicatorEl = (ctx) => ctx.getById(getIndicatorId(ctx));\nvar getFirstEnabledInputEl = (ctx) => getRootEl(ctx)?.querySelector(\"input:not(:disabled)\");\nvar getFirstEnabledAndCheckedInputEl = (ctx) => getRootEl(ctx)?.querySelector(\"input:not(:disabled):checked\");\nvar getInputEls = (ctx) => {\n  const ownerId = CSS.escape(getRootId(ctx));\n  const selector = `input[type=radio][data-ownedby='${ownerId}']:not([disabled])`;\n  return queryAll(getRootEl(ctx), selector);\n};\nvar getRadioEl = (ctx, value) => {\n  if (!value) return;\n  return ctx.getById(getItemId(ctx, value));\n};\nvar getOffsetRect = (el) => ({\n  x: el?.offsetLeft ?? 0,\n  y: el?.offsetTop ?? 0,\n  width: el?.offsetWidth ?? 0,\n  height: el?.offsetHeight ?? 0\n});\n\n// src/radio-group.connect.ts\nfunction connect(service, normalize) {\n  const { context, send, computed, prop, scope } = service;\n  const groupDisabled = computed(\"isDisabled\");\n  const groupInvalid = prop(\"invalid\");\n  const readOnly = prop(\"readOnly\");\n  function getItemState(props2) {\n    return {\n      value: props2.value,\n      invalid: !!props2.invalid || !!groupInvalid,\n      disabled: !!props2.disabled || groupDisabled,\n      checked: context.get(\"value\") === props2.value,\n      focused: context.get(\"focusedValue\") === props2.value,\n      focusVisible: context.get(\"focusVisibleValue\") === props2.value,\n      hovered: context.get(\"hoveredValue\") === props2.value,\n      active: context.get(\"activeValue\") === props2.value\n    };\n  }\n  function getItemDataAttrs(props2) {\n    const itemState = getItemState(props2);\n    return {\n      \"data-focus\": dataAttr(itemState.focused),\n      \"data-focus-visible\": dataAttr(itemState.focusVisible),\n      \"data-disabled\": dataAttr(itemState.disabled),\n      \"data-readonly\": dataAttr(readOnly),\n      \"data-state\": itemState.checked ? \"checked\" : \"unchecked\",\n      \"data-hover\": dataAttr(itemState.hovered),\n      \"data-invalid\": dataAttr(itemState.invalid),\n      \"data-orientation\": prop(\"orientation\"),\n      \"data-ssr\": dataAttr(context.get(\"ssr\"))\n    };\n  }\n  const focus = () => {\n    const nodeToFocus = getFirstEnabledAndCheckedInputEl(scope) ?? getFirstEnabledInputEl(scope);\n    nodeToFocus?.focus();\n  };\n  return {\n    focus,\n    value: context.get(\"value\"),\n    setValue(value) {\n      send({ type: \"SET_VALUE\", value, isTrusted: false });\n    },\n    clearValue() {\n      send({ type: \"SET_VALUE\", value: null, isTrusted: false });\n    },\n    getRootProps() {\n      return normalize.element({\n        ...parts.root.attrs,\n        role: \"radiogroup\",\n        id: getRootId(scope),\n        \"aria-labelledby\": getLabelId(scope),\n        \"aria-required\": prop(\"required\") || void 0,\n        \"aria-disabled\": groupDisabled || void 0,\n        \"aria-readonly\": readOnly || void 0,\n        \"data-orientation\": prop(\"orientation\"),\n        \"data-disabled\": dataAttr(groupDisabled),\n        \"data-invalid\": dataAttr(groupInvalid),\n        \"data-required\": dataAttr(prop(\"required\")),\n        \"aria-orientation\": prop(\"orientation\"),\n        dir: prop(\"dir\"),\n        style: {\n          position: \"relative\"\n        }\n      });\n    },\n    getLabelProps() {\n      return normalize.element({\n        ...parts.label.attrs,\n        dir: prop(\"dir\"),\n        \"data-orientation\": prop(\"orientation\"),\n        \"data-disabled\": dataAttr(groupDisabled),\n        \"data-invalid\": dataAttr(groupInvalid),\n        \"data-required\": dataAttr(prop(\"required\")),\n        id: getLabelId(scope),\n        onClick: focus\n      });\n    },\n    getItemState,\n    getItemProps(props2) {\n      const itemState = getItemState(props2);\n      return normalize.label({\n        ...parts.item.attrs,\n        dir: prop(\"dir\"),\n        id: getItemId(scope, props2.value),\n        htmlFor: getItemHiddenInputId(scope, props2.value),\n        ...getItemDataAttrs(props2),\n        onPointerMove() {\n          if (itemState.disabled) return;\n          if (itemState.hovered) return;\n          send({ type: \"SET_HOVERED\", value: props2.value, hovered: true });\n        },\n        onPointerLeave() {\n          if (itemState.disabled) return;\n          send({ type: \"SET_HOVERED\", value: null });\n        },\n        onPointerDown(event) {\n          if (itemState.disabled) return;\n          if (!isLeftClick(event)) return;\n          if (itemState.focused && event.pointerType === \"mouse\") {\n            event.preventDefault();\n          }\n          send({ type: \"SET_ACTIVE\", value: props2.value, active: true });\n        },\n        onPointerUp() {\n          if (itemState.disabled) return;\n          send({ type: \"SET_ACTIVE\", value: null });\n        },\n        onClick() {\n          if (!itemState.disabled && isSafari()) {\n            getItemHiddenInputEl(scope, props2.value)?.focus();\n          }\n        }\n      });\n    },\n    getItemTextProps(props2) {\n      return normalize.element({\n        ...parts.itemText.attrs,\n        dir: prop(\"dir\"),\n        id: getItemLabelId(scope, props2.value),\n        ...getItemDataAttrs(props2)\n      });\n    },\n    getItemControlProps(props2) {\n      const itemState = getItemState(props2);\n      return normalize.element({\n        ...parts.itemControl.attrs,\n        dir: prop(\"dir\"),\n        id: getItemControlId(scope, props2.value),\n        \"data-active\": dataAttr(itemState.active),\n        \"aria-hidden\": true,\n        ...getItemDataAttrs(props2)\n      });\n    },\n    getItemHiddenInputProps(props2) {\n      const itemState = getItemState(props2);\n      return normalize.input({\n        \"data-ownedby\": getRootId(scope),\n        id: getItemHiddenInputId(scope, props2.value),\n        type: \"radio\",\n        name: prop(\"name\") || prop(\"id\"),\n        form: prop(\"form\"),\n        value: props2.value,\n        required: prop(\"required\"),\n        \"aria-invalid\": itemState.invalid || void 0,\n        onClick(event) {\n          if (readOnly) {\n            event.preventDefault();\n            return;\n          }\n          if (event.currentTarget.checked) {\n            send({ type: \"SET_VALUE\", value: props2.value, isTrusted: true });\n          }\n        },\n        onBlur() {\n          send({ type: \"SET_FOCUSED\", value: null, focused: false, focusVisible: false });\n        },\n        onFocus() {\n          const focusVisible = isFocusVisible();\n          send({ type: \"SET_FOCUSED\", value: props2.value, focused: true, focusVisible });\n        },\n        onKeyDown(event) {\n          if (event.defaultPrevented) return;\n          if (event.key === \" \") {\n            send({ type: \"SET_ACTIVE\", value: props2.value, active: true });\n          }\n        },\n        onKeyUp(event) {\n          if (event.defaultPrevented) return;\n          if (event.key === \" \") {\n            send({ type: \"SET_ACTIVE\", value: null });\n          }\n        },\n        disabled: itemState.disabled || readOnly,\n        defaultChecked: itemState.checked,\n        style: visuallyHiddenStyle\n      });\n    },\n    getIndicatorProps() {\n      const rect = context.get(\"indicatorRect\");\n      const rectIsEmpty = rect == null || rect.width === 0 && rect.height === 0 && rect.x === 0 && rect.y === 0;\n      return normalize.element({\n        id: getIndicatorId(scope),\n        ...parts.indicator.attrs,\n        dir: prop(\"dir\"),\n        hidden: context.get(\"value\") == null || rectIsEmpty,\n        \"data-disabled\": dataAttr(groupDisabled),\n        \"data-orientation\": prop(\"orientation\"),\n        style: {\n          \"--transition-property\": \"left, top, width, height\",\n          \"--left\": toPx(rect?.x),\n          \"--top\": toPx(rect?.y),\n          \"--width\": toPx(rect?.width),\n          \"--height\": toPx(rect?.height),\n          position: \"absolute\",\n          willChange: \"var(--transition-property)\",\n          transitionProperty: \"var(--transition-property)\",\n          transitionDuration: \"var(--transition-duration, 150ms)\",\n          transitionTimingFunction: \"var(--transition-timing-function)\",\n          [prop(\"orientation\") === \"horizontal\" ? \"left\" : \"top\"]: prop(\"orientation\") === \"horizontal\" ? \"var(--left)\" : \"var(--top)\"\n        }\n      });\n    }\n  };\n}\nvar { not } = createGuards();\nvar machine = createMachine({\n  props({ props: props2 }) {\n    return {\n      orientation: \"vertical\",\n      ...props2\n    };\n  },\n  initialState() {\n    return \"idle\";\n  },\n  context({ prop, bindable }) {\n    return {\n      value: bindable(() => ({\n        defaultValue: prop(\"defaultValue\"),\n        value: prop(\"value\"),\n        onChange(value) {\n          prop(\"onValueChange\")?.({ value });\n        }\n      })),\n      activeValue: bindable(() => ({\n        defaultValue: null\n      })),\n      focusedValue: bindable(() => ({\n        defaultValue: null\n      })),\n      focusVisibleValue: bindable(() => ({\n        defaultValue: null\n      })),\n      hoveredValue: bindable(() => ({\n        defaultValue: null\n      })),\n      indicatorRect: bindable(() => ({\n        defaultValue: null\n      })),\n      fieldsetDisabled: bindable(() => ({\n        defaultValue: false\n      })),\n      ssr: bindable(() => ({\n        defaultValue: true\n      }))\n    };\n  },\n  refs() {\n    return {\n      indicatorCleanup: null,\n      focusVisibleValue: null\n    };\n  },\n  computed: {\n    isDisabled: ({ prop, context }) => !!prop(\"disabled\") || context.get(\"fieldsetDisabled\")\n  },\n  entry: [\"syncIndicatorRect\", \"syncSsr\"],\n  exit: [\"cleanupObserver\"],\n  effects: [\"trackFormControlState\", \"trackFocusVisible\"],\n  watch({ track, action, context }) {\n    track([() => context.get(\"value\")], () => {\n      action([\"syncIndicatorRect\", \"syncInputElements\"]);\n    });\n  },\n  on: {\n    SET_VALUE: [\n      {\n        guard: not(\"isTrusted\"),\n        actions: [\"setValue\", \"dispatchChangeEvent\"]\n      },\n      {\n        actions: [\"setValue\"]\n      }\n    ],\n    SET_HOVERED: {\n      actions: [\"setHovered\"]\n    },\n    SET_ACTIVE: {\n      actions: [\"setActive\"]\n    },\n    SET_FOCUSED: {\n      actions: [\"setFocused\"]\n    }\n  },\n  states: {\n    idle: {}\n  },\n  implementations: {\n    guards: {\n      isTrusted: ({ event }) => !!event.isTrusted\n    },\n    effects: {\n      trackFormControlState({ context, scope }) {\n        return trackFormControl(getRootEl(scope), {\n          onFieldsetDisabledChange(disabled) {\n            context.set(\"fieldsetDisabled\", disabled);\n          },\n          onFormReset() {\n            context.set(\"value\", context.initial(\"value\"));\n          }\n        });\n      },\n      trackFocusVisible({ scope }) {\n        return trackFocusVisible({ root: scope.getRootNode?.() });\n      }\n    },\n    actions: {\n      setValue({ context, event }) {\n        context.set(\"value\", event.value);\n      },\n      setHovered({ context, event }) {\n        context.set(\"hoveredValue\", event.value);\n      },\n      setActive({ context, event }) {\n        context.set(\"activeValue\", event.value);\n      },\n      setFocused({ context, event }) {\n        context.set(\"focusedValue\", event.value);\n        const focusVisibleValue = event.value != null && event.focusVisible ? event.value : null;\n        context.set(\"focusVisibleValue\", focusVisibleValue);\n      },\n      syncInputElements({ context, scope }) {\n        const inputs = getInputEls(scope);\n        inputs.forEach((input) => {\n          input.checked = input.value === context.get(\"value\");\n        });\n      },\n      cleanupObserver({ refs }) {\n        refs.get(\"indicatorCleanup\")?.();\n      },\n      syncSsr({ context }) {\n        context.set(\"ssr\", false);\n      },\n      syncIndicatorRect({ context, scope, refs }) {\n        refs.get(\"indicatorCleanup\")?.();\n        if (!getIndicatorEl(scope)) return;\n        const value = context.get(\"value\");\n        const radioEl = getRadioEl(scope, value);\n        if (value == null || !radioEl) {\n          context.set(\"indicatorRect\", null);\n          return;\n        }\n        const exec = () => {\n          context.set(\"indicatorRect\", getOffsetRect(radioEl));\n        };\n        exec();\n        const indicatorCleanup = resizeObserverBorderBox.observe(radioEl, exec);\n        refs.set(\"indicatorCleanup\", indicatorCleanup);\n      },\n      dispatchChangeEvent({ context, scope }) {\n        const inputEls = getInputEls(scope);\n        inputEls.forEach((inputEl) => {\n          const checked = inputEl.value === context.get(\"value\");\n          if (checked === inputEl.checked) return;\n          dispatchInputCheckedEvent(inputEl, { checked });\n        });\n      }\n    }\n  }\n});\nvar props = createProps()([\n  \"dir\",\n  \"disabled\",\n  \"form\",\n  \"getRootNode\",\n  \"id\",\n  \"ids\",\n  \"invalid\",\n  \"name\",\n  \"onValueChange\",\n  \"orientation\",\n  \"readOnly\",\n  \"required\",\n  \"value\",\n  \"defaultValue\"\n]);\nvar splitProps = createSplitProps(props);\nvar itemProps = createProps()([\"value\", \"disabled\", \"invalid\"]);\nvar splitItemProps = createSplitProps(itemProps);\n\nexport { anatomy, connect, itemProps, machine, props, splitItemProps, splitProps };\n", "import * as radioGroup from \"@zag-js/radio-group\";\nimport type { Direction, Orientation } from \"@zag-js/types\";\nimport { VanillaMachine, normalizeProps } from \"@zag-js/vanilla\";\n\nimport {\n  Component,\n  getString,\n  getBoolean,\n  generateId,\n  renderPart,\n} from \"../lib\";\n\nexport class RadioGroup extends Component<radioGroup.Props, radioGroup.Api> {\n  initMachine(props: radioGroup.Props): VanillaMachine<any> {\n    return new VanillaMachine(radioGroup.machine, props);\n  }\n\n  initApi(): radioGroup.Api {\n    return radioGroup.connect(this.machine.service, normalizeProps);\n  }\n\n  render(): void {\n    [\"root\", \"label\"].forEach((part) => renderPart(this.el, part, this.api));\n\n    const items = this.el.querySelectorAll<HTMLElement>('[data-part=\"item\"]');\n    items.forEach((itemEl) => {\n      const value = getString(itemEl, \"value\");\n      const disabled = getBoolean(itemEl, \"disabled\");\n\n      renderPart(itemEl, \"item\", this.api, { value, disabled });\n\n      [\"item-text\", \"item-hidden-input\", \"item-control\"].forEach(\n        (childPart) => {\n          renderPart(itemEl, childPart, this.api, {\n            value,\n            disabled,\n          });\n        },\n      );\n    });\n  }\n}\n\nexport function initRadioGroup(\n  doc: HTMLElement | Document = document,\n  selector = \".radio-group-js\",\n): void {\n  doc.querySelectorAll<HTMLElement>(selector).forEach((rootEl) => {\n    const items = rootEl.querySelectorAll<HTMLElement>('[data-part=\"item\"]');\n    items.forEach((itemEl, index) => {\n      let value = getString(itemEl, \"value\");\n      if (!value) {\n        value = generateId(itemEl, `radio-group-item-${index}`);\n        itemEl.setAttribute(\"data-value\", value);\n      }\n    });\n    const radioGroup = new RadioGroup(rootEl, {\n      id: generateId(rootEl, \"radioGroup\"),\n      orientation: getString<Orientation>(rootEl, \"orientation\", [\n        \"horizontal\",\n        \"vertical\",\n      ]),\n      dir: getString<Direction>(rootEl, \"dir\", [\"ltr\", \"rtl\"]),\n      defaultValue: getString(rootEl, \"defaultValue\"),\n      disabled: getBoolean(rootEl, \"disabled\"),\n      form: getString(rootEl, \"form\"),\n      name: getString(rootEl, \"name\"),\n      readOnly: getBoolean(rootEl, \"readOnly\"),\n      value: getString(rootEl, \"value\"),\n      onValueChange(details) {\n        const eventName = getString(rootEl, \"onValueChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n    });\n\n    radioGroup.init();\n\n    radioGroup.el.addEventListener(\"radio-group:set-value\", (event) => {\n      const { value } = (event as CustomEvent<{ value: string }>).detail;\n      if (radioGroup.api.value !== value) {\n        radioGroup.api.setValue(value);\n      }\n    });\n\n    radioGroup.el.addEventListener(\"radio-group:value\", (event) => {\n      const detail = (\n        event as CustomEvent<{ callback: (value: string | null) => void }>\n      ).detail;\n      const callback = detail.callback;\n      if (callback && typeof callback === \"function\") {\n        callback(radioGroup.api.value);\n      }\n    });\n  });\n}\n", "import { createAnatomy } from '@zag-js/anatomy';\nimport { ListCollection } from '@zag-js/collection';\nimport { raf, getInitialFocus, observeAttributes, trackFormControl, getByTypeahead, scrollIntoView, contains, getEventTarget, isValidTabEvent, getEventKey, isEditableElement, visuallyHiddenStyle, dataAttr, ariaAttr } from '@zag-js/dom-query';\nimport { getPlacement, getPlacementStyles } from '@zag-js/popper';\nimport { addOrRemove, isEqual, createSplitProps, ensure } from '@zag-js/utils';\nimport { createGuards, createMachine } from '@zag-js/core';\nimport { trackDismissableElement } from '@zag-js/dismissable';\nimport { createProps } from '@zag-js/types';\n\n// src/select.anatomy.ts\nvar anatomy = createAnatomy(\"select\").parts(\n  \"label\",\n  \"positioner\",\n  \"trigger\",\n  \"indicator\",\n  \"clearTrigger\",\n  \"item\",\n  \"itemText\",\n  \"itemIndicator\",\n  \"itemGroup\",\n  \"itemGroupLabel\",\n  \"list\",\n  \"content\",\n  \"root\",\n  \"control\",\n  \"valueText\"\n);\nvar parts = anatomy.build();\nvar collection = (options) => {\n  return new ListCollection(options);\n};\ncollection.empty = () => {\n  return new ListCollection({ items: [] });\n};\n\n// src/select.dom.ts\nvar getRootId = (ctx) => ctx.ids?.root ?? `select:${ctx.id}`;\nvar getContentId = (ctx) => ctx.ids?.content ?? `select:${ctx.id}:content`;\nvar getTriggerId = (ctx) => ctx.ids?.trigger ?? `select:${ctx.id}:trigger`;\nvar getClearTriggerId = (ctx) => ctx.ids?.clearTrigger ?? `select:${ctx.id}:clear-trigger`;\nvar getLabelId = (ctx) => ctx.ids?.label ?? `select:${ctx.id}:label`;\nvar getControlId = (ctx) => ctx.ids?.control ?? `select:${ctx.id}:control`;\nvar getItemId = (ctx, id) => ctx.ids?.item?.(id) ?? `select:${ctx.id}:option:${id}`;\nvar getHiddenSelectId = (ctx) => ctx.ids?.hiddenSelect ?? `select:${ctx.id}:select`;\nvar getPositionerId = (ctx) => ctx.ids?.positioner ?? `select:${ctx.id}:positioner`;\nvar getItemGroupId = (ctx, id) => ctx.ids?.itemGroup?.(id) ?? `select:${ctx.id}:optgroup:${id}`;\nvar getItemGroupLabelId = (ctx, id) => ctx.ids?.itemGroupLabel?.(id) ?? `select:${ctx.id}:optgroup-label:${id}`;\nvar getHiddenSelectEl = (ctx) => ctx.getById(getHiddenSelectId(ctx));\nvar getContentEl = (ctx) => ctx.getById(getContentId(ctx));\nvar getTriggerEl = (ctx) => ctx.getById(getTriggerId(ctx));\nvar getClearTriggerEl = (ctx) => ctx.getById(getClearTriggerId(ctx));\nvar getPositionerEl = (ctx) => ctx.getById(getPositionerId(ctx));\nvar getItemEl = (ctx, id) => {\n  if (id == null) return null;\n  return ctx.getById(getItemId(ctx, id));\n};\n\n// src/select.connect.ts\nfunction connect(service, normalize) {\n  const { context, prop, scope, state, computed, send } = service;\n  const disabled = prop(\"disabled\") || context.get(\"fieldsetDisabled\");\n  const invalid = !!prop(\"invalid\");\n  const required = !!prop(\"required\");\n  const readOnly = !!prop(\"readOnly\");\n  const composite = prop(\"composite\");\n  const collection2 = prop(\"collection\");\n  const open = state.hasTag(\"open\");\n  const focused = state.matches(\"focused\");\n  const highlightedValue = context.get(\"highlightedValue\");\n  const highlightedItem = context.get(\"highlightedItem\");\n  const selectedItems = context.get(\"selectedItems\");\n  const currentPlacement = context.get(\"currentPlacement\");\n  const isTypingAhead = computed(\"isTypingAhead\");\n  const interactive = computed(\"isInteractive\");\n  const ariaActiveDescendant = highlightedValue ? getItemId(scope, highlightedValue) : void 0;\n  function getItemState(props2) {\n    const _disabled = collection2.getItemDisabled(props2.item);\n    const value = collection2.getItemValue(props2.item);\n    ensure(value, () => `[zag-js] No value found for item ${JSON.stringify(props2.item)}`);\n    return {\n      value,\n      disabled: Boolean(disabled || _disabled),\n      highlighted: highlightedValue === value,\n      selected: context.get(\"value\").includes(value)\n    };\n  }\n  const popperStyles = getPlacementStyles({\n    ...prop(\"positioning\"),\n    placement: currentPlacement\n  });\n  return {\n    open,\n    focused,\n    empty: context.get(\"value\").length === 0,\n    highlightedItem,\n    highlightedValue,\n    selectedItems,\n    hasSelectedItems: computed(\"hasSelectedItems\"),\n    value: context.get(\"value\"),\n    valueAsString: computed(\"valueAsString\"),\n    collection: collection2,\n    multiple: !!prop(\"multiple\"),\n    disabled: !!disabled,\n    reposition(options = {}) {\n      send({ type: \"POSITIONING.SET\", options });\n    },\n    focus() {\n      getTriggerEl(scope)?.focus({ preventScroll: true });\n    },\n    setOpen(nextOpen) {\n      const open2 = state.hasTag(\"open\");\n      if (open2 === nextOpen) return;\n      send({ type: nextOpen ? \"OPEN\" : \"CLOSE\" });\n    },\n    selectValue(value) {\n      send({ type: \"ITEM.SELECT\", value });\n    },\n    setValue(value) {\n      send({ type: \"VALUE.SET\", value });\n    },\n    selectAll() {\n      send({ type: \"VALUE.SET\", value: collection2.getValues() });\n    },\n    setHighlightValue(value) {\n      send({ type: \"HIGHLIGHTED_VALUE.SET\", value });\n    },\n    clearHighlightValue() {\n      send({ type: \"HIGHLIGHTED_VALUE.CLEAR\" });\n    },\n    clearValue(value) {\n      if (value) {\n        send({ type: \"ITEM.CLEAR\", value });\n      } else {\n        send({ type: \"VALUE.CLEAR\" });\n      }\n    },\n    getItemState,\n    getRootProps() {\n      return normalize.element({\n        ...parts.root.attrs,\n        dir: prop(\"dir\"),\n        id: getRootId(scope),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-readonly\": dataAttr(readOnly)\n      });\n    },\n    getLabelProps() {\n      return normalize.label({\n        dir: prop(\"dir\"),\n        id: getLabelId(scope),\n        ...parts.label.attrs,\n        \"data-disabled\": dataAttr(disabled),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-readonly\": dataAttr(readOnly),\n        \"data-required\": dataAttr(required),\n        htmlFor: getHiddenSelectId(scope),\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          if (disabled) return;\n          getTriggerEl(scope)?.focus({ preventScroll: true });\n        }\n      });\n    },\n    getControlProps() {\n      return normalize.element({\n        ...parts.control.attrs,\n        dir: prop(\"dir\"),\n        id: getControlId(scope),\n        \"data-state\": open ? \"open\" : \"closed\",\n        \"data-focus\": dataAttr(focused),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-invalid\": dataAttr(invalid)\n      });\n    },\n    getValueTextProps() {\n      return normalize.element({\n        ...parts.valueText.attrs,\n        dir: prop(\"dir\"),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-focus\": dataAttr(focused)\n      });\n    },\n    getTriggerProps() {\n      return normalize.button({\n        id: getTriggerId(scope),\n        disabled,\n        dir: prop(\"dir\"),\n        type: \"button\",\n        role: \"combobox\",\n        \"aria-controls\": getContentId(scope),\n        \"aria-expanded\": open,\n        \"aria-haspopup\": \"listbox\",\n        \"data-state\": open ? \"open\" : \"closed\",\n        \"aria-invalid\": invalid,\n        \"aria-required\": required,\n        \"aria-labelledby\": getLabelId(scope),\n        ...parts.trigger.attrs,\n        \"data-disabled\": dataAttr(disabled),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-readonly\": dataAttr(readOnly),\n        \"data-placement\": currentPlacement,\n        \"data-placeholder-shown\": dataAttr(!computed(\"hasSelectedItems\")),\n        onClick(event) {\n          if (!interactive) return;\n          if (event.defaultPrevented) return;\n          send({ type: \"TRIGGER.CLICK\" });\n        },\n        onFocus() {\n          send({ type: \"TRIGGER.FOCUS\" });\n        },\n        onBlur() {\n          send({ type: \"TRIGGER.BLUR\" });\n        },\n        onKeyDown(event) {\n          if (event.defaultPrevented) return;\n          if (!interactive) return;\n          const keyMap = {\n            ArrowUp() {\n              send({ type: \"TRIGGER.ARROW_UP\" });\n            },\n            ArrowDown(event2) {\n              send({ type: event2.altKey ? \"OPEN\" : \"TRIGGER.ARROW_DOWN\" });\n            },\n            ArrowLeft() {\n              send({ type: \"TRIGGER.ARROW_LEFT\" });\n            },\n            ArrowRight() {\n              send({ type: \"TRIGGER.ARROW_RIGHT\" });\n            },\n            Home() {\n              send({ type: \"TRIGGER.HOME\" });\n            },\n            End() {\n              send({ type: \"TRIGGER.END\" });\n            },\n            Enter() {\n              send({ type: \"TRIGGER.ENTER\" });\n            },\n            Space(event2) {\n              if (isTypingAhead) {\n                send({ type: \"TRIGGER.TYPEAHEAD\", key: event2.key });\n              } else {\n                send({ type: \"TRIGGER.ENTER\" });\n              }\n            }\n          };\n          const exec = keyMap[getEventKey(event, {\n            dir: prop(\"dir\"),\n            orientation: \"vertical\"\n          })];\n          if (exec) {\n            exec(event);\n            event.preventDefault();\n            return;\n          }\n          if (getByTypeahead.isValidEvent(event)) {\n            send({ type: \"TRIGGER.TYPEAHEAD\", key: event.key });\n            event.preventDefault();\n          }\n        }\n      });\n    },\n    getIndicatorProps() {\n      return normalize.element({\n        ...parts.indicator.attrs,\n        dir: prop(\"dir\"),\n        \"aria-hidden\": true,\n        \"data-state\": open ? \"open\" : \"closed\",\n        \"data-disabled\": dataAttr(disabled),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-readonly\": dataAttr(readOnly)\n      });\n    },\n    getItemProps(props2) {\n      const itemState = getItemState(props2);\n      return normalize.element({\n        id: getItemId(scope, itemState.value),\n        role: \"option\",\n        ...parts.item.attrs,\n        dir: prop(\"dir\"),\n        \"data-value\": itemState.value,\n        \"aria-selected\": itemState.selected,\n        \"data-state\": itemState.selected ? \"checked\" : \"unchecked\",\n        \"data-highlighted\": dataAttr(itemState.highlighted),\n        \"data-disabled\": dataAttr(itemState.disabled),\n        \"aria-disabled\": ariaAttr(itemState.disabled),\n        onPointerMove(event) {\n          if (itemState.disabled || event.pointerType !== \"mouse\") return;\n          if (itemState.value === highlightedValue) return;\n          send({ type: \"ITEM.POINTER_MOVE\", value: itemState.value });\n        },\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          if (itemState.disabled) return;\n          send({ type: \"ITEM.CLICK\", src: \"pointerup\", value: itemState.value });\n        },\n        onPointerLeave(event) {\n          if (itemState.disabled) return;\n          if (props2.persistFocus) return;\n          if (event.pointerType !== \"mouse\") return;\n          const pointerMoved = service.event.previous()?.type.includes(\"POINTER\");\n          if (!pointerMoved) return;\n          send({ type: \"ITEM.POINTER_LEAVE\" });\n        }\n      });\n    },\n    getItemTextProps(props2) {\n      const itemState = getItemState(props2);\n      return normalize.element({\n        ...parts.itemText.attrs,\n        \"data-state\": itemState.selected ? \"checked\" : \"unchecked\",\n        \"data-disabled\": dataAttr(itemState.disabled),\n        \"data-highlighted\": dataAttr(itemState.highlighted)\n      });\n    },\n    getItemIndicatorProps(props2) {\n      const itemState = getItemState(props2);\n      return normalize.element({\n        \"aria-hidden\": true,\n        ...parts.itemIndicator.attrs,\n        \"data-state\": itemState.selected ? \"checked\" : \"unchecked\",\n        hidden: !itemState.selected\n      });\n    },\n    getItemGroupLabelProps(props2) {\n      const { htmlFor } = props2;\n      return normalize.element({\n        ...parts.itemGroupLabel.attrs,\n        id: getItemGroupLabelId(scope, htmlFor),\n        dir: prop(\"dir\"),\n        role: \"presentation\"\n      });\n    },\n    getItemGroupProps(props2) {\n      const { id } = props2;\n      return normalize.element({\n        ...parts.itemGroup.attrs,\n        \"data-disabled\": dataAttr(disabled),\n        id: getItemGroupId(scope, id),\n        \"aria-labelledby\": getItemGroupLabelId(scope, id),\n        role: \"group\",\n        dir: prop(\"dir\")\n      });\n    },\n    getClearTriggerProps() {\n      return normalize.button({\n        ...parts.clearTrigger.attrs,\n        id: getClearTriggerId(scope),\n        type: \"button\",\n        \"aria-label\": \"Clear value\",\n        \"data-invalid\": dataAttr(invalid),\n        disabled,\n        hidden: !computed(\"hasSelectedItems\"),\n        dir: prop(\"dir\"),\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          send({ type: \"CLEAR.CLICK\" });\n        }\n      });\n    },\n    getHiddenSelectProps() {\n      const value = context.get(\"value\");\n      const defaultValue = prop(\"multiple\") ? value : value?.[0];\n      return normalize.select({\n        name: prop(\"name\"),\n        form: prop(\"form\"),\n        disabled,\n        multiple: prop(\"multiple\"),\n        required: prop(\"required\"),\n        \"aria-hidden\": true,\n        id: getHiddenSelectId(scope),\n        defaultValue,\n        style: visuallyHiddenStyle,\n        tabIndex: -1,\n        // Some browser extensions will focus the hidden select.\n        // Let's forward the focus to the trigger.\n        onFocus() {\n          getTriggerEl(scope)?.focus({ preventScroll: true });\n        },\n        \"aria-labelledby\": getLabelId(scope)\n      });\n    },\n    getPositionerProps() {\n      return normalize.element({\n        ...parts.positioner.attrs,\n        dir: prop(\"dir\"),\n        id: getPositionerId(scope),\n        style: popperStyles.floating\n      });\n    },\n    getContentProps() {\n      return normalize.element({\n        hidden: !open,\n        dir: prop(\"dir\"),\n        id: getContentId(scope),\n        role: composite ? \"listbox\" : \"dialog\",\n        ...parts.content.attrs,\n        \"data-state\": open ? \"open\" : \"closed\",\n        \"data-placement\": currentPlacement,\n        \"data-activedescendant\": ariaActiveDescendant,\n        \"aria-activedescendant\": composite ? ariaActiveDescendant : void 0,\n        \"aria-multiselectable\": prop(\"multiple\") && composite ? true : void 0,\n        \"aria-labelledby\": getLabelId(scope),\n        tabIndex: 0,\n        onKeyDown(event) {\n          if (!interactive) return;\n          if (!contains(event.currentTarget, getEventTarget(event))) return;\n          if (event.key === \"Tab\") {\n            const valid = isValidTabEvent(event);\n            if (!valid) {\n              event.preventDefault();\n              return;\n            }\n          }\n          const keyMap = {\n            ArrowUp() {\n              send({ type: \"CONTENT.ARROW_UP\" });\n            },\n            ArrowDown() {\n              send({ type: \"CONTENT.ARROW_DOWN\" });\n            },\n            Home() {\n              send({ type: \"CONTENT.HOME\" });\n            },\n            End() {\n              send({ type: \"CONTENT.END\" });\n            },\n            Enter() {\n              send({ type: \"ITEM.CLICK\", src: \"keydown.enter\" });\n            },\n            Space(event2) {\n              if (isTypingAhead) {\n                send({ type: \"CONTENT.TYPEAHEAD\", key: event2.key });\n              } else {\n                keyMap.Enter?.(event2);\n              }\n            }\n          };\n          const exec = keyMap[getEventKey(event)];\n          if (exec) {\n            exec(event);\n            event.preventDefault();\n            return;\n          }\n          const target = getEventTarget(event);\n          if (isEditableElement(target)) {\n            return;\n          }\n          if (getByTypeahead.isValidEvent(event)) {\n            send({ type: \"CONTENT.TYPEAHEAD\", key: event.key });\n            event.preventDefault();\n          }\n        }\n      });\n    },\n    getListProps() {\n      return normalize.element({\n        ...parts.list.attrs,\n        tabIndex: 0,\n        role: !composite ? \"listbox\" : void 0,\n        \"aria-labelledby\": getTriggerId(scope),\n        \"aria-activedescendant\": !composite ? ariaActiveDescendant : void 0,\n        \"aria-multiselectable\": !composite && prop(\"multiple\") ? true : void 0\n      });\n    }\n  };\n}\nvar { and, not, or } = createGuards();\nvar machine = createMachine({\n  props({ props: props2 }) {\n    return {\n      loopFocus: false,\n      closeOnSelect: !props2.multiple,\n      composite: true,\n      defaultValue: [],\n      ...props2,\n      collection: props2.collection ?? collection.empty(),\n      positioning: {\n        placement: \"bottom-start\",\n        gutter: 8,\n        ...props2.positioning\n      }\n    };\n  },\n  context({ prop, bindable }) {\n    return {\n      value: bindable(() => ({\n        defaultValue: prop(\"defaultValue\"),\n        value: prop(\"value\"),\n        isEqual,\n        onChange(value) {\n          const items = prop(\"collection\").findMany(value);\n          return prop(\"onValueChange\")?.({ value, items });\n        }\n      })),\n      highlightedValue: bindable(() => ({\n        defaultValue: prop(\"defaultHighlightedValue\") || null,\n        value: prop(\"highlightedValue\"),\n        onChange(value) {\n          prop(\"onHighlightChange\")?.({\n            highlightedValue: value,\n            highlightedItem: prop(\"collection\").find(value),\n            highlightedIndex: prop(\"collection\").indexOf(value)\n          });\n        }\n      })),\n      currentPlacement: bindable(() => ({\n        defaultValue: void 0\n      })),\n      fieldsetDisabled: bindable(() => ({\n        defaultValue: false\n      })),\n      highlightedItem: bindable(() => ({\n        defaultValue: null\n      })),\n      selectedItems: bindable(() => {\n        const value = prop(\"value\") ?? prop(\"defaultValue\") ?? [];\n        const items = prop(\"collection\").findMany(value);\n        return { defaultValue: items };\n      })\n    };\n  },\n  refs() {\n    return {\n      typeahead: { ...getByTypeahead.defaultOptions }\n    };\n  },\n  computed: {\n    hasSelectedItems: ({ context }) => context.get(\"value\").length > 0,\n    isTypingAhead: ({ refs }) => refs.get(\"typeahead\").keysSoFar !== \"\",\n    isDisabled: ({ prop, context }) => !!prop(\"disabled\") || !!context.get(\"fieldsetDisabled\"),\n    isInteractive: ({ prop }) => !(prop(\"disabled\") || prop(\"readOnly\")),\n    valueAsString: ({ context, prop }) => prop(\"collection\").stringifyItems(context.get(\"selectedItems\"))\n  },\n  initialState({ prop }) {\n    const open = prop(\"open\") || prop(\"defaultOpen\");\n    return open ? \"open\" : \"idle\";\n  },\n  entry: [\"syncSelectElement\"],\n  watch({ context, prop, track, action }) {\n    track([() => context.get(\"value\").toString()], () => {\n      action([\"syncSelectedItems\", \"syncSelectElement\", \"dispatchChangeEvent\"]);\n    });\n    track([() => prop(\"open\")], () => {\n      action([\"toggleVisibility\"]);\n    });\n    track([() => context.get(\"highlightedValue\")], () => {\n      action([\"syncHighlightedItem\"]);\n    });\n    track([() => prop(\"collection\").toString()], () => {\n      action([\"syncCollection\"]);\n    });\n  },\n  on: {\n    \"HIGHLIGHTED_VALUE.SET\": {\n      actions: [\"setHighlightedItem\"]\n    },\n    \"HIGHLIGHTED_VALUE.CLEAR\": {\n      actions: [\"clearHighlightedItem\"]\n    },\n    \"ITEM.SELECT\": {\n      actions: [\"selectItem\"]\n    },\n    \"ITEM.CLEAR\": {\n      actions: [\"clearItem\"]\n    },\n    \"VALUE.SET\": {\n      actions: [\"setSelectedItems\"]\n    },\n    \"VALUE.CLEAR\": {\n      actions: [\"clearSelectedItems\"]\n    },\n    \"CLEAR.CLICK\": {\n      actions: [\"clearSelectedItems\", \"focusTriggerEl\"]\n    }\n  },\n  effects: [\"trackFormControlState\"],\n  states: {\n    idle: {\n      tags: [\"closed\"],\n      on: {\n        \"CONTROLLED.OPEN\": [\n          {\n            guard: \"isTriggerClickEvent\",\n            target: \"open\",\n            actions: [\"setInitialFocus\", \"highlightFirstSelectedItem\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"setInitialFocus\"]\n          }\n        ],\n        \"TRIGGER.CLICK\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"invokeOnOpen\", \"setInitialFocus\", \"highlightFirstSelectedItem\"]\n          }\n        ],\n        \"TRIGGER.FOCUS\": {\n          target: \"focused\"\n        },\n        OPEN: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"setInitialFocus\", \"invokeOnOpen\"]\n          }\n        ]\n      }\n    },\n    focused: {\n      tags: [\"closed\"],\n      on: {\n        \"CONTROLLED.OPEN\": [\n          {\n            guard: \"isTriggerClickEvent\",\n            target: \"open\",\n            actions: [\"setInitialFocus\", \"highlightFirstSelectedItem\"]\n          },\n          {\n            guard: \"isTriggerArrowUpEvent\",\n            target: \"open\",\n            actions: [\"setInitialFocus\", \"highlightComputedLastItem\"]\n          },\n          {\n            guard: or(\"isTriggerArrowDownEvent\", \"isTriggerEnterEvent\"),\n            target: \"open\",\n            actions: [\"setInitialFocus\", \"highlightComputedFirstItem\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"setInitialFocus\"]\n          }\n        ],\n        OPEN: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"setInitialFocus\", \"invokeOnOpen\"]\n          }\n        ],\n        \"TRIGGER.BLUR\": {\n          target: \"idle\"\n        },\n        \"TRIGGER.CLICK\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"setInitialFocus\", \"invokeOnOpen\", \"highlightFirstSelectedItem\"]\n          }\n        ],\n        \"TRIGGER.ENTER\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"setInitialFocus\", \"invokeOnOpen\", \"highlightComputedFirstItem\"]\n          }\n        ],\n        \"TRIGGER.ARROW_UP\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"setInitialFocus\", \"invokeOnOpen\", \"highlightComputedLastItem\"]\n          }\n        ],\n        \"TRIGGER.ARROW_DOWN\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"setInitialFocus\", \"invokeOnOpen\", \"highlightComputedFirstItem\"]\n          }\n        ],\n        \"TRIGGER.ARROW_LEFT\": [\n          {\n            guard: and(not(\"multiple\"), \"hasSelectedItems\"),\n            actions: [\"selectPreviousItem\"]\n          },\n          {\n            guard: not(\"multiple\"),\n            actions: [\"selectLastItem\"]\n          }\n        ],\n        \"TRIGGER.ARROW_RIGHT\": [\n          {\n            guard: and(not(\"multiple\"), \"hasSelectedItems\"),\n            actions: [\"selectNextItem\"]\n          },\n          {\n            guard: not(\"multiple\"),\n            actions: [\"selectFirstItem\"]\n          }\n        ],\n        \"TRIGGER.HOME\": {\n          guard: not(\"multiple\"),\n          actions: [\"selectFirstItem\"]\n        },\n        \"TRIGGER.END\": {\n          guard: not(\"multiple\"),\n          actions: [\"selectLastItem\"]\n        },\n        \"TRIGGER.TYPEAHEAD\": {\n          guard: not(\"multiple\"),\n          actions: [\"selectMatchingItem\"]\n        }\n      }\n    },\n    open: {\n      tags: [\"open\"],\n      exit: [\"scrollContentToTop\"],\n      effects: [\"trackDismissableElement\", \"computePlacement\", \"scrollToHighlightedItem\"],\n      on: {\n        \"CONTROLLED.CLOSE\": [\n          {\n            guard: \"restoreFocus\",\n            target: \"focused\",\n            actions: [\"focusTriggerEl\", \"clearHighlightedItem\"]\n          },\n          {\n            target: \"idle\",\n            actions: [\"clearHighlightedItem\"]\n          }\n        ],\n        CLOSE: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            guard: \"restoreFocus\",\n            target: \"focused\",\n            actions: [\"invokeOnClose\", \"focusTriggerEl\", \"clearHighlightedItem\"]\n          },\n          {\n            target: \"idle\",\n            actions: [\"invokeOnClose\", \"clearHighlightedItem\"]\n          }\n        ],\n        \"TRIGGER.CLICK\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            target: \"focused\",\n            actions: [\"invokeOnClose\", \"clearHighlightedItem\"]\n          }\n        ],\n        \"ITEM.CLICK\": [\n          {\n            guard: and(\"closeOnSelect\", \"isOpenControlled\"),\n            actions: [\"selectHighlightedItem\", \"invokeOnClose\"]\n          },\n          {\n            guard: \"closeOnSelect\",\n            target: \"focused\",\n            actions: [\"selectHighlightedItem\", \"invokeOnClose\", \"focusTriggerEl\", \"clearHighlightedItem\"]\n          },\n          {\n            actions: [\"selectHighlightedItem\"]\n          }\n        ],\n        \"CONTENT.HOME\": {\n          actions: [\"highlightFirstItem\"]\n        },\n        \"CONTENT.END\": {\n          actions: [\"highlightLastItem\"]\n        },\n        \"CONTENT.ARROW_DOWN\": [\n          {\n            guard: and(\"hasHighlightedItem\", \"loop\", \"isLastItemHighlighted\"),\n            actions: [\"highlightFirstItem\"]\n          },\n          {\n            guard: \"hasHighlightedItem\",\n            actions: [\"highlightNextItem\"]\n          },\n          {\n            actions: [\"highlightFirstItem\"]\n          }\n        ],\n        \"CONTENT.ARROW_UP\": [\n          {\n            guard: and(\"hasHighlightedItem\", \"loop\", \"isFirstItemHighlighted\"),\n            actions: [\"highlightLastItem\"]\n          },\n          {\n            guard: \"hasHighlightedItem\",\n            actions: [\"highlightPreviousItem\"]\n          },\n          {\n            actions: [\"highlightLastItem\"]\n          }\n        ],\n        \"CONTENT.TYPEAHEAD\": {\n          actions: [\"highlightMatchingItem\"]\n        },\n        \"ITEM.POINTER_MOVE\": {\n          actions: [\"highlightItem\"]\n        },\n        \"ITEM.POINTER_LEAVE\": {\n          actions: [\"clearHighlightedItem\"]\n        },\n        \"POSITIONING.SET\": {\n          actions: [\"reposition\"]\n        }\n      }\n    }\n  },\n  implementations: {\n    guards: {\n      loop: ({ prop }) => !!prop(\"loopFocus\"),\n      multiple: ({ prop }) => !!prop(\"multiple\"),\n      hasSelectedItems: ({ computed }) => !!computed(\"hasSelectedItems\"),\n      hasHighlightedItem: ({ context }) => context.get(\"highlightedValue\") != null,\n      isFirstItemHighlighted: ({ context, prop }) => context.get(\"highlightedValue\") === prop(\"collection\").firstValue,\n      isLastItemHighlighted: ({ context, prop }) => context.get(\"highlightedValue\") === prop(\"collection\").lastValue,\n      closeOnSelect: ({ prop, event }) => !!(event.closeOnSelect ?? prop(\"closeOnSelect\")),\n      restoreFocus: ({ event }) => restoreFocusFn(event),\n      // guard assertions (for controlled mode)\n      isOpenControlled: ({ prop }) => prop(\"open\") !== void 0,\n      isTriggerClickEvent: ({ event }) => event.previousEvent?.type === \"TRIGGER.CLICK\",\n      isTriggerEnterEvent: ({ event }) => event.previousEvent?.type === \"TRIGGER.ENTER\",\n      isTriggerArrowUpEvent: ({ event }) => event.previousEvent?.type === \"TRIGGER.ARROW_UP\",\n      isTriggerArrowDownEvent: ({ event }) => event.previousEvent?.type === \"TRIGGER.ARROW_DOWN\"\n    },\n    effects: {\n      trackFormControlState({ context, scope }) {\n        return trackFormControl(getHiddenSelectEl(scope), {\n          onFieldsetDisabledChange(disabled) {\n            context.set(\"fieldsetDisabled\", disabled);\n          },\n          onFormReset() {\n            const value = context.initial(\"value\");\n            context.set(\"value\", value);\n          }\n        });\n      },\n      trackDismissableElement({ scope, send, prop }) {\n        const contentEl = () => getContentEl(scope);\n        let restoreFocus = true;\n        return trackDismissableElement(contentEl, {\n          type: \"listbox\",\n          defer: true,\n          exclude: [getTriggerEl(scope), getClearTriggerEl(scope)],\n          onFocusOutside: prop(\"onFocusOutside\"),\n          onPointerDownOutside: prop(\"onPointerDownOutside\"),\n          onInteractOutside(event) {\n            prop(\"onInteractOutside\")?.(event);\n            restoreFocus = !(event.detail.focusable || event.detail.contextmenu);\n          },\n          onDismiss() {\n            send({ type: \"CLOSE\", src: \"interact-outside\", restoreFocus });\n          }\n        });\n      },\n      computePlacement({ context, prop, scope }) {\n        const positioning = prop(\"positioning\");\n        context.set(\"currentPlacement\", positioning.placement);\n        const triggerEl = () => getTriggerEl(scope);\n        const positionerEl = () => getPositionerEl(scope);\n        return getPlacement(triggerEl, positionerEl, {\n          defer: true,\n          ...positioning,\n          onComplete(data) {\n            context.set(\"currentPlacement\", data.placement);\n          }\n        });\n      },\n      scrollToHighlightedItem({ context, prop, scope, event }) {\n        const exec = (immediate) => {\n          const highlightedValue = context.get(\"highlightedValue\");\n          if (highlightedValue == null) return;\n          if (event.current().type.includes(\"POINTER\")) return;\n          const contentEl2 = getContentEl(scope);\n          const scrollToIndexFn = prop(\"scrollToIndexFn\");\n          if (scrollToIndexFn) {\n            const highlightedIndex = prop(\"collection\").indexOf(highlightedValue);\n            scrollToIndexFn?.({\n              index: highlightedIndex,\n              immediate,\n              getElement: () => getItemEl(scope, highlightedValue)\n            });\n            return;\n          }\n          const itemEl = getItemEl(scope, highlightedValue);\n          scrollIntoView(itemEl, { rootEl: contentEl2, block: \"nearest\" });\n        };\n        raf(() => exec(true));\n        const contentEl = () => getContentEl(scope);\n        return observeAttributes(contentEl, {\n          defer: true,\n          attributes: [\"data-activedescendant\"],\n          callback() {\n            exec(false);\n          }\n        });\n      }\n    },\n    actions: {\n      reposition({ context, prop, scope, event }) {\n        const positionerEl = () => getPositionerEl(scope);\n        getPlacement(getTriggerEl(scope), positionerEl, {\n          ...prop(\"positioning\"),\n          ...event.options,\n          defer: true,\n          listeners: false,\n          onComplete(data) {\n            context.set(\"currentPlacement\", data.placement);\n          }\n        });\n      },\n      toggleVisibility({ send, prop, event }) {\n        send({ type: prop(\"open\") ? \"CONTROLLED.OPEN\" : \"CONTROLLED.CLOSE\", previousEvent: event });\n      },\n      highlightPreviousItem({ context, prop }) {\n        const highlightedValue = context.get(\"highlightedValue\");\n        if (highlightedValue == null) return;\n        const value = prop(\"collection\").getPreviousValue(highlightedValue, 1, prop(\"loopFocus\"));\n        if (value == null) return;\n        context.set(\"highlightedValue\", value);\n      },\n      highlightNextItem({ context, prop }) {\n        const highlightedValue = context.get(\"highlightedValue\");\n        if (highlightedValue == null) return;\n        const value = prop(\"collection\").getNextValue(highlightedValue, 1, prop(\"loopFocus\"));\n        if (value == null) return;\n        context.set(\"highlightedValue\", value);\n      },\n      highlightFirstItem({ context, prop }) {\n        const value = prop(\"collection\").firstValue;\n        context.set(\"highlightedValue\", value);\n      },\n      highlightLastItem({ context, prop }) {\n        const value = prop(\"collection\").lastValue;\n        context.set(\"highlightedValue\", value);\n      },\n      setInitialFocus({ scope }) {\n        raf(() => {\n          const element = getInitialFocus({\n            root: getContentEl(scope)\n          });\n          element?.focus({ preventScroll: true });\n        });\n      },\n      focusTriggerEl({ event, scope }) {\n        if (!restoreFocusFn(event)) return;\n        raf(() => {\n          const element = getTriggerEl(scope);\n          element?.focus({ preventScroll: true });\n        });\n      },\n      selectHighlightedItem({ context, prop, event }) {\n        let value = event.value ?? context.get(\"highlightedValue\");\n        if (value == null || !prop(\"collection\").has(value)) return;\n        prop(\"onSelect\")?.({ value });\n        const nullable = prop(\"deselectable\") && !prop(\"multiple\") && context.get(\"value\").includes(value);\n        value = nullable ? null : value;\n        context.set(\"value\", (prev) => {\n          if (value == null) return [];\n          if (prop(\"multiple\")) return addOrRemove(prev, value);\n          return [value];\n        });\n      },\n      highlightComputedFirstItem({ context, prop, computed }) {\n        const collection2 = prop(\"collection\");\n        const value = computed(\"hasSelectedItems\") ? collection2.sort(context.get(\"value\"))[0] : collection2.firstValue;\n        context.set(\"highlightedValue\", value);\n      },\n      highlightComputedLastItem({ context, prop, computed }) {\n        const collection2 = prop(\"collection\");\n        const value = computed(\"hasSelectedItems\") ? collection2.sort(context.get(\"value\"))[0] : collection2.lastValue;\n        context.set(\"highlightedValue\", value);\n      },\n      highlightFirstSelectedItem({ context, prop, computed }) {\n        if (!computed(\"hasSelectedItems\")) return;\n        const value = prop(\"collection\").sort(context.get(\"value\"))[0];\n        context.set(\"highlightedValue\", value);\n      },\n      highlightItem({ context, event }) {\n        context.set(\"highlightedValue\", event.value);\n      },\n      highlightMatchingItem({ context, prop, event, refs }) {\n        const value = prop(\"collection\").search(event.key, {\n          state: refs.get(\"typeahead\"),\n          currentValue: context.get(\"highlightedValue\")\n        });\n        if (value == null) return;\n        context.set(\"highlightedValue\", value);\n      },\n      setHighlightedItem({ context, event }) {\n        context.set(\"highlightedValue\", event.value);\n      },\n      clearHighlightedItem({ context }) {\n        context.set(\"highlightedValue\", null);\n      },\n      selectItem({ context, prop, event }) {\n        prop(\"onSelect\")?.({ value: event.value });\n        const nullable = prop(\"deselectable\") && !prop(\"multiple\") && context.get(\"value\").includes(event.value);\n        const value = nullable ? null : event.value;\n        context.set(\"value\", (prev) => {\n          if (value == null) return [];\n          if (prop(\"multiple\")) return addOrRemove(prev, value);\n          return [value];\n        });\n      },\n      clearItem({ context, event }) {\n        context.set(\"value\", (prev) => prev.filter((v) => v !== event.value));\n      },\n      setSelectedItems({ context, event }) {\n        context.set(\"value\", event.value);\n      },\n      clearSelectedItems({ context }) {\n        context.set(\"value\", []);\n      },\n      selectPreviousItem({ context, prop }) {\n        const [firstItem] = context.get(\"value\");\n        const value = prop(\"collection\").getPreviousValue(firstItem);\n        if (value) context.set(\"value\", [value]);\n      },\n      selectNextItem({ context, prop }) {\n        const [firstItem] = context.get(\"value\");\n        const value = prop(\"collection\").getNextValue(firstItem);\n        if (value) context.set(\"value\", [value]);\n      },\n      selectFirstItem({ context, prop }) {\n        const value = prop(\"collection\").firstValue;\n        if (value) context.set(\"value\", [value]);\n      },\n      selectLastItem({ context, prop }) {\n        const value = prop(\"collection\").lastValue;\n        if (value) context.set(\"value\", [value]);\n      },\n      selectMatchingItem({ context, prop, event, refs }) {\n        const value = prop(\"collection\").search(event.key, {\n          state: refs.get(\"typeahead\"),\n          currentValue: context.get(\"value\")[0]\n        });\n        if (value == null) return;\n        context.set(\"value\", [value]);\n      },\n      scrollContentToTop({ prop, scope }) {\n        if (prop(\"scrollToIndexFn\")) {\n          const firstValue = prop(\"collection\").firstValue;\n          prop(\"scrollToIndexFn\")?.({\n            index: 0,\n            immediate: true,\n            getElement: () => getItemEl(scope, firstValue)\n          });\n        } else {\n          getContentEl(scope)?.scrollTo(0, 0);\n        }\n      },\n      invokeOnOpen({ prop, context }) {\n        prop(\"onOpenChange\")?.({ open: true, value: context.get(\"value\") });\n      },\n      invokeOnClose({ prop, context }) {\n        prop(\"onOpenChange\")?.({ open: false, value: context.get(\"value\") });\n      },\n      syncSelectElement({ context, prop, scope }) {\n        const selectEl = getHiddenSelectEl(scope);\n        if (!selectEl) return;\n        if (context.get(\"value\").length === 0 && !prop(\"multiple\")) {\n          selectEl.selectedIndex = -1;\n          return;\n        }\n        for (const option of selectEl.options) {\n          option.selected = context.get(\"value\").includes(option.value);\n        }\n      },\n      syncCollection({ context, prop }) {\n        const collection2 = prop(\"collection\");\n        const highlightedItem = collection2.find(context.get(\"highlightedValue\"));\n        if (highlightedItem) context.set(\"highlightedItem\", highlightedItem);\n        const selectedItems = collection2.findMany(context.get(\"value\"));\n        context.set(\"selectedItems\", selectedItems);\n      },\n      syncSelectedItems({ context, prop }) {\n        const collection2 = prop(\"collection\");\n        const prevSelectedItems = context.get(\"selectedItems\");\n        const value = context.get(\"value\");\n        const selectedItems = value.map((value2) => {\n          const item = prevSelectedItems.find((item2) => collection2.getItemValue(item2) === value2);\n          return item || collection2.find(value2);\n        });\n        context.set(\"selectedItems\", selectedItems);\n      },\n      syncHighlightedItem({ context, prop }) {\n        const collection2 = prop(\"collection\");\n        const highlightedValue = context.get(\"highlightedValue\");\n        const highlightedItem = highlightedValue ? collection2.find(highlightedValue) : null;\n        context.set(\"highlightedItem\", highlightedItem);\n      },\n      dispatchChangeEvent({ scope }) {\n        queueMicrotask(() => {\n          const node = getHiddenSelectEl(scope);\n          if (!node) return;\n          const win = scope.getWin();\n          const changeEvent = new win.Event(\"change\", { bubbles: true, composed: true });\n          node.dispatchEvent(changeEvent);\n        });\n      }\n    }\n  }\n});\nfunction restoreFocusFn(event) {\n  const v = event.restoreFocus ?? event.previousEvent?.restoreFocus;\n  return v == null || !!v;\n}\nvar props = createProps()([\n  \"closeOnSelect\",\n  \"collection\",\n  \"composite\",\n  \"defaultHighlightedValue\",\n  \"defaultOpen\",\n  \"defaultValue\",\n  \"deselectable\",\n  \"dir\",\n  \"disabled\",\n  \"form\",\n  \"getRootNode\",\n  \"highlightedValue\",\n  \"id\",\n  \"ids\",\n  \"invalid\",\n  \"loopFocus\",\n  \"multiple\",\n  \"name\",\n  \"onFocusOutside\",\n  \"onHighlightChange\",\n  \"onInteractOutside\",\n  \"onOpenChange\",\n  \"onPointerDownOutside\",\n  \"onSelect\",\n  \"onValueChange\",\n  \"open\",\n  \"positioning\",\n  \"readOnly\",\n  \"required\",\n  \"scrollToIndexFn\",\n  \"value\"\n]);\nvar splitProps = createSplitProps(props);\nvar itemProps = createProps()([\"item\", \"persistFocus\"]);\nvar splitItemProps = createSplitProps(itemProps);\nvar itemGroupProps = createProps()([\"id\"]);\nvar splitItemGroupProps = createSplitProps(itemGroupProps);\nvar itemGroupLabelProps = createProps()([\"htmlFor\"]);\nvar splitItemGroupLabelProps = createSplitProps(itemGroupLabelProps);\n\nexport { anatomy, collection, connect, itemGroupLabelProps, itemGroupProps, itemProps, machine, props, splitItemGroupLabelProps, splitItemGroupProps, splitItemProps, splitProps };\n", "import * as select from \"@zag-js/select\";\nimport type { Direction } from \"@zag-js/types\";\nimport type { ListCollection } from \"@zag-js/collection\";\nimport { VanillaMachine, normalizeProps } from \"@zag-js/vanilla\";\n\nimport {\n  Component,\n  generateId,\n  renderPart,\n  getString,\n  getBoolean,\n  getNumber,\n  getStringList,\n  arraysEqualUnordered,\n} from \"../lib\";\n\ninterface SelectItem {\n  value: string;\n  label?: string;\n  group?: string;\n  disabled?: boolean;\n}\n\ninterface Group {\n  value: string;\n  label?: string;\n}\n\nfunction flattenJsonItems(data: any, parentGroup?: string): SelectItem[] {\n  if (!data) return [];\n  const items: SelectItem[] = [];\n\n  if (data.children && Array.isArray(data.children)) {\n    data.children.forEach((child: any) => {\n      items.push(...flattenJsonItems(child, data.name || parentGroup));\n    });\n  } else {\n    items.push({\n      value: data.id,\n      label: data.name,\n      group: parentGroup ?? undefined,\n      disabled: data.disabled,\n    });\n  }\n\n  return items;\n}\n\nfunction loadJsonItems(path: string): SelectItem[] {\n  try {\n    const script = document.querySelector(\n      `script[type=\"application/json\"][data-select=\"${path}\"]`,\n    );\n    if (!script) throw new Error(`No inline JSON script found for ${path}`);\n    const data = JSON.parse(script.textContent || \"{}\");\n    return flattenJsonItems(data);\n  } catch (e) {\n    console.error(\"Failed to load JSON items:\", e);\n    return [];\n  }\n}\n\nfunction getDomGroups(rootEl: HTMLElement): Group[] {\n  const groups: Group[] = [];\n  rootEl.querySelectorAll('[data-part=\"item-group\"]').forEach((el) => {\n    const value = el.getAttribute(\"data-id\") || \"\";\n    groups.push({ value });\n  });\n  return groups;\n}\n\nexport class Select extends Component<select.Props, select.Api> {\n  collection!: ListCollection<SelectItem>;\n  items: SelectItem[] = [];\n  groups: Group[] = [];\n  private domInitialized = false;\n\n  constructor(el: HTMLElement, props: select.Props) {\n    super(el, props);\n  }\n\n  setItems(items: SelectItem[]) {\n    this.items = items;\n  }\n\n  getCollection(\n    items: SelectItem[],\n    hasGroups: boolean = false,\n  ): ListCollection<SelectItem> {\n    if (hasGroups) {\n      return select.collection({\n        items,\n        itemToValue: (item) => item.value,\n        itemToString: (item) => item.label || item.value,\n        groupBy: (item) => item.group || \"Default\",\n      });\n    }\n    return select.collection({\n      items,\n      itemToValue: (item) => item.value,\n      itemToString: (item) => item.label || item.value,\n    });\n  }\n\n  initMachine(props: select.Props): VanillaMachine<any> {\n    return new VanillaMachine(select.machine, props);\n  }\n\n  initApi(): select.Api {\n    return select.connect(this.machine.service, normalizeProps);\n  }\n\n  private renderJsonDom() {\n    const rootEl = this.el;\n    if (!rootEl) return;\n\n    let contentEl = rootEl.querySelector<HTMLElement>('[data-part=\"content\"]');\n    if (!contentEl) {\n      contentEl = document.createElement(\"div\");\n      contentEl.setAttribute(\"data-part\", \"content\");\n      rootEl.appendChild(contentEl);\n    } else {\n      contentEl.innerHTML = \"\";\n    }\n\n    const groupMap: Record<string, HTMLElement> = {};\n\n    if (this.groups.length === 0) {\n      const uniqueGroups = new Set<string>();\n      this.items.forEach((item) => {\n        if (item.group) uniqueGroups.add(item.group);\n      });\n      this.groups = Array.from(uniqueGroups).map((value) => ({\n        value,\n        label: value,\n      }));\n    }\n\n    const groupsWithItems = new Set<string>();\n    this.items.forEach((item) => {\n      if (item.group) groupsWithItems.add(item.group);\n    });\n\n    this.groups.forEach((g) => {\n      if (!groupsWithItems.has(g.value)) return;\n\n      const groupEl = document.createElement(\"div\");\n      groupEl.setAttribute(\"data-part\", \"item-group\");\n      groupEl.setAttribute(\"data-id\", g.value);\n\n      const labelEl = document.createElement(\"div\");\n      labelEl.setAttribute(\"data-part\", \"item-group-label\");\n      labelEl.setAttribute(\"data-id\", g.value);\n      labelEl.textContent = g.label || g.value;\n\n      contentEl.appendChild(labelEl);\n      contentEl.appendChild(groupEl);\n\n      groupMap[g.value] = groupEl;\n    });\n\n    this.items.forEach((item) => {\n      const itemEl = document.createElement(\"div\");\n      itemEl.setAttribute(\"data-part\", \"item\");\n      itemEl.setAttribute(\"data-value\", item.value);\n      itemEl.setAttribute(\"data-label\", item.label || item.value);\n      if (item.disabled) itemEl.setAttribute(\"data-disabled\", \"true\");\n      itemEl.textContent = item.label || item.value;\n\n      if (item.group && groupMap[item.group]) {\n        groupMap[item.group].appendChild(itemEl);\n      } else {\n        contentEl.appendChild(itemEl);\n      }\n    });\n  }\n\n  private renderDomItems() {\n    const contentEl = this.el.querySelector('[data-part=\"content\"]');\n    if (!contentEl) return;\n\n    const allDomItems = Array.from(\n      contentEl.querySelectorAll('[data-part=\"item\"]'),\n    ) as HTMLElement[];\n\n    const visibleGroups = new Set<string>();\n\n    allDomItems.forEach((el) => {\n      const value = el.getAttribute(\"data-value\");\n      const match = this.items.find((item) => item.value === value);\n      if (match) {\n        el.style.display = \"\";\n        const groupEl = el.closest(\n          '[data-part=\"item-group\"]',\n        ) as HTMLElement | null;\n        if (groupEl) {\n          const groupId = groupEl.getAttribute(\"data-id\");\n          if (groupId) visibleGroups.add(groupId);\n        }\n      } else {\n        el.style.display = \"none\";\n      }\n    });\n\n    const allGroupLabels = Array.from(\n      contentEl.querySelectorAll('[data-part=\"item-group-label\"]'),\n    ) as HTMLElement[];\n\n    allGroupLabels.forEach((labelEl) => {\n      const groupId = labelEl.getAttribute(\"data-id\");\n      if (groupId && visibleGroups.has(groupId)) {\n        labelEl.style.display = \"\";\n      } else {\n        labelEl.style.display = \"none\";\n      }\n    });\n\n    const allGroups = Array.from(\n      contentEl.querySelectorAll('[data-part=\"item-group\"]'),\n    ) as HTMLElement[];\n\n    allGroups.forEach((groupEl) => {\n      const groupId = groupEl.getAttribute(\"data-id\");\n      if (groupId && visibleGroups.has(groupId)) {\n        groupEl.style.display = \"\";\n      } else {\n        groupEl.style.display = \"none\";\n      }\n    });\n  }\n\n  renderHiddenSelect() {\n    const control = this.el.querySelector<HTMLElement>('[data-part=\"control\"]');\n    if (!control) return;\n    let hiddenSelect = control.querySelector<HTMLSelectElement>(\n      '[data-part=\"hidden-select\"]',\n    );\n    if (!hiddenSelect) {\n      hiddenSelect = document.createElement(\"select\");\n      hiddenSelect.setAttribute(\"data-part\", \"hidden-select\");\n      control.appendChild(hiddenSelect);\n    }\n    hiddenSelect.innerHTML = \"\";\n    for (const item of this.items) {\n      const option = document.createElement(\"option\");\n      option.value = item.value;\n      option.textContent = item.label || item.value;\n      if (this.api.value.includes(item.value)) {\n        option.selected = true;\n      }\n      hiddenSelect.appendChild(option);\n    }\n  }\n\n  render() {\n    const isJson = getString(this.el, \"json\") !== undefined;\n    if (isJson && !this.domInitialized) {\n      this.renderJsonDom();\n      this.domInitialized = true;\n    } else if (!isJson) {\n      this.renderDomItems();\n    }\n\n    this.renderHiddenSelect();\n\n    if (!getString(this.el, \"noTriggerUpdate\")) {\n      this.updateTriggerText();\n    }\n\n    const parts = [\n      \"root\",\n      \"label\",\n      \"control\",\n      \"trigger\",\n      \"positioner\",\n      \"content\",\n      \"clear-trigger\",\n      \"list\",\n      \"hidden-select\",\n    ];\n    for (const part of parts) {\n      renderPart(this.el, part, this.api);\n    }\n\n    const itemParts = [\"item\"];\n    for (const part of itemParts) {\n      renderPart(this.el, part, this.api, {\n        item: (el: HTMLElement) => {\n          const value = el.getAttribute(\"data-value\");\n          const item = this.items.find((i) => i.value === value);\n          if (!item) {\n            console.warn(`[Select] No matching item for value: ${value}`);\n            return undefined;\n          }\n          return {\n            ...item,\n            label: item.label || el.getAttribute(\"data-label\") || item.value,\n            disabled: getBoolean(el, \"disabled\") || item.disabled,\n          };\n        },\n      });\n    }\n\n    renderPart(this.el, \"item-group\", this.api, {\n      group: (el: HTMLElement) => {\n        const id = el.getAttribute(\"data-id\");\n        const group = this.groups.find((g) => g.value === id);\n        return group;\n      },\n      id: (el: HTMLElement) => el.getAttribute(\"data-id\"),\n    });\n\n    renderPart(this.el, \"item-group-label\", this.api, {\n      group: (el: HTMLElement) => {\n        const id = el.getAttribute(\"data-id\");\n        return this.groups.find((g) => g.value === id);\n      },\n      htmlFor: (el: HTMLElement) => el.getAttribute(\"data-id\"),\n    });\n  }\n\n  private updateTriggerText() {\n    const trigger = this.el.querySelector(\n      '[data-part=\"trigger\"]',\n    ) as HTMLElement;\n    if (!trigger) return;\n    Array.from(trigger.childNodes).forEach((node) => {\n      if (node.nodeType === Node.TEXT_NODE) {\n        trigger.removeChild(node);\n      }\n    });\n    const selectedItems = this.items.filter((item) =>\n      this.api.value.includes(item.value),\n    );\n    const displayText =\n      selectedItems.length > 0\n        ? selectedItems.map((item) => item.label || item.value).join(\", \")\n        : getString(this.el, \"placeholder\") || \"Select\";\n    const textNode = document.createTextNode(displayText);\n    const firstChild = trigger.firstElementChild;\n    if (firstChild) {\n      trigger.insertBefore(textNode, firstChild);\n    } else {\n      trigger.appendChild(textNode);\n    }\n  }\n}\n\nexport function initSelect(\n  doc: HTMLElement | Document = document,\n  selector = \".select-js\",\n): void {\n  doc.querySelectorAll<HTMLElement>(selector).forEach((rootEl) => {\n    const groupElements = rootEl.querySelectorAll<HTMLElement>(\n      '[data-part=\"item-group\"]',\n    );\n    groupElements.forEach((groupEl, index) => {\n      const groupId =\n        getString(groupEl, \"id\") ??\n        generateId(groupEl, `select-group-${index}`);\n      groupEl.setAttribute(\"data-id\", groupId);\n\n      const labelEl = groupEl.querySelector<HTMLElement>(\n        '[data-part=\"item-group-label\"]',\n      );\n      if (labelEl) labelEl.setAttribute(\"data-id\", groupId);\n    });\n\n    const itemElements =\n      rootEl.querySelectorAll<HTMLElement>('[data-part=\"item\"]');\n    itemElements.forEach((itemEl, index) => {\n      const value =\n        getString(itemEl, \"value\") ??\n        generateId(itemEl, `select-item-${index}`);\n      itemEl.setAttribute(\"data-value\", value);\n\n      if (!itemEl.hasAttribute(\"data-label\")) {\n        const label = itemEl.textContent?.trim() || value;\n        itemEl.setAttribute(\"data-label\", label);\n      }\n    });\n\n    const jsonPath = getString(rootEl, \"json\");\n    const items: SelectItem[] = jsonPath\n      ? loadJsonItems(jsonPath)\n      : Array.from(itemElements).map((itemEl) => {\n          const value = getString(itemEl, \"value\")!;\n          const label =\n            itemEl.getAttribute(\"data-label\") ||\n            itemEl.textContent?.trim() ||\n            value;\n          const groupEl = itemEl.closest(\n            '[data-part=\"item-group\"]',\n          ) as HTMLElement | null;\n          const group = groupEl ? getString(groupEl, \"id\") : undefined;\n          const disabled = getBoolean(itemEl, \"disabled\");\n          return { value, label, group, disabled };\n        });\n\n    const groups = getDomGroups(rootEl);\n    const hasGroups = groups.length > 0 || items.some((i) => i.group);\n\n    const collection = hasGroups\n      ? select.collection({\n          items,\n          itemToValue: (item) => item.value,\n          itemToString: (item) => item.label || item.value,\n          groupBy: (item) => item.group || \"Default\",\n        })\n      : select.collection({\n          items,\n          itemToValue: (item) => item.value,\n          itemToString: (item) => item.label || item.value,\n        });\n\n    const directions = [\"ltr\", \"rtl\"] as const;\n    const placements = [\n      \"top\",\n      \"right\",\n      \"bottom\",\n      \"left\",\n      \"top-start\",\n      \"top-end\",\n      \"right-start\",\n      \"right-end\",\n      \"bottom-start\",\n      \"bottom-end\",\n      \"left-start\",\n      \"left-end\",\n    ] as const;\n    const strategies = [\"absolute\", \"fixed\"] as const;\n\n    const selectComponent = new Select(rootEl, {\n      id: generateId(rootEl, \"select\"),\n      collection,\n      closeOnSelect: getBoolean(rootEl, \"closeOnSelect\"),\n      composite: getBoolean(rootEl, \"composite\"),\n      defaultHighlightedValue: getString(rootEl, \"defaultHighlightedValue\"),\n      defaultOpen: getBoolean(rootEl, \"defaultOpen\"),\n      defaultValue: getStringList(rootEl, \"defaultValue\"),\n      dir: getString<Direction>(rootEl, \"dir\", directions),\n      disabled: getBoolean(rootEl, \"disabled\"),\n      form: getString(rootEl, \"form\"),\n      highlightedValue: getString(rootEl, \"highlightedValue\"),\n      invalid: getBoolean(rootEl, \"invalid\"),\n      loopFocus: getBoolean(rootEl, \"loopFocus\"),\n      multiple: getBoolean(rootEl, \"multiple\"),\n      name: getString(rootEl, \"name\"),\n      readOnly: getBoolean(rootEl, \"readOnly\"),\n      required: getBoolean(rootEl, \"required\"),\n      open: getBoolean(rootEl, \"open\"),\n      value: getStringList(rootEl, \"value\"),\n      positioning: {\n        hideWhenDetached: getBoolean(rootEl, \"hideWhenDetached\"),\n        placement: getString(rootEl, \"placement\", placements),\n        strategy: getString(rootEl, \"strategy\", strategies),\n        flip: getBoolean(rootEl, \"flip\"),\n        gutter: getNumber(rootEl, \"gutter\"),\n        arrowPadding: getNumber(rootEl, \"arrowPadding\"),\n        overflowPadding: getNumber(rootEl, \"overflowPadding\"),\n        offset: (() => {\n          const mainAxis = getNumber(rootEl, \"offsetMainAxis\");\n          const crossAxis = getNumber(rootEl, \"offsetCrossAxis\");\n          if (mainAxis !== undefined || crossAxis !== undefined) {\n            return { mainAxis, crossAxis };\n          }\n          return undefined;\n        })(),\n        sameWidth: getBoolean(rootEl, \"sameWidth\") || true,\n        overlap: getBoolean(rootEl, \"overlap\"),\n        fitViewport: getBoolean(rootEl, \"fitViewport\"),\n        slide: getBoolean(rootEl, \"slide\"),\n      },\n      onValueChange(details) {\n        const eventName = getString(rootEl, \"onValueChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onOpenChange(details) {\n        const eventName = getString(rootEl, \"onOpenChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onHighlightChange(details) {\n        const eventName = getString(rootEl, \"onHighlightChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onFocusOutside(event) {\n        const eventName = getString(rootEl, \"onFocusOutside\");\n        if (eventName) {\n          rootEl.dispatchEvent(\n            new CustomEvent(eventName, { detail: event.detail }),\n          );\n        }\n      },\n      onInteractOutside(event) {\n        const eventName = getString(rootEl, \"onInteractOutside\");\n        if (eventName) {\n          rootEl.dispatchEvent(\n            new CustomEvent(eventName, { detail: event.detail }),\n          );\n        }\n      },\n      onPointerDownOutside(event) {\n        const eventName = getString(rootEl, \"onPointerDownOutside\");\n        if (eventName) {\n          rootEl.dispatchEvent(\n            new CustomEvent(eventName, { detail: event.detail }),\n          );\n        }\n      },\n      onSelect(details) {\n        const eventName = getString(rootEl, \"onSelect\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n    });\n\n    selectComponent.collection = collection;\n    selectComponent.setItems(items);\n    selectComponent.groups = groups;\n    selectComponent.init();\n\n    selectComponent.el.addEventListener(\"select:set-value\", (event) => {\n      const { value } = (event as CustomEvent<{ value: string[] }>).detail;\n      const current = selectComponent.api.value;\n      if (!arraysEqualUnordered(current, value)) {\n        selectComponent.api.setValue(value);\n      }\n    });\n  });\n}\n", "function $(e,t,u,x=h=>h){return e*x(.5-t*(.5-u))}function se(e){return[-e[0],-e[1]]}function l(e,t){return[e[0]+t[0],e[1]+t[1]]}function a(e,t){return[e[0]-t[0],e[1]-t[1]]}function b(e,t){return[e[0]*t,e[1]*t]}function he(e,t){return[e[0]/t,e[1]/t]}function R(e){return[e[1],-e[0]]}function B(e,t){return e[0]*t[0]+e[1]*t[1]}function ue(e,t){return e[0]===t[0]&&e[1]===t[1]}function ge(e){return Math.hypot(e[0],e[1])}function de(e){return e[0]*e[0]+e[1]*e[1]}function A(e,t){return de(a(e,t))}function G(e){return he(e,ge(e))}function ie(e,t){return Math.hypot(e[1]-t[1],e[0]-t[0])}function L(e,t,u){let x=Math.sin(u),h=Math.cos(u),y=e[0]-t[0],n=e[1]-t[1],f=y*h-n*x,d=y*x+n*h;return[f+t[0],d+t[1]]}function K(e,t,u){return l(e,b(a(t,e),u))}function ee(e,t,u){return l(e,b(t,u))}var{min:C,PI:xe}=Math,pe=.275,V=xe+1e-4;function ce(e,t={}){let{size:u=16,smoothing:x=.5,thinning:h=.5,simulatePressure:y=!0,easing:n=r=>r,start:f={},end:d={},last:D=!1}=t,{cap:S=!0,easing:j=r=>r*(2-r)}=f,{cap:q=!0,easing:c=r=>--r*r*r+1}=d;if(e.length===0||u<=0)return[];let p=e[e.length-1].runningLength,g=f.taper===!1?0:f.taper===!0?Math.max(u,p):f.taper,T=d.taper===!1?0:d.taper===!0?Math.max(u,p):d.taper,te=Math.pow(u*x,2),_=[],M=[],H=e.slice(0,10).reduce((r,i)=>{let o=i.pressure;if(y){let s=C(1,i.distance/u),W=C(1,1-s);o=C(1,r+(W-r)*(s*pe))}return(r+o)/2},e[0].pressure),m=$(u,h,e[e.length-1].pressure,n),U,X=e[0].vector,z=e[0].point,F=z,O=z,E=F,J=!1;for(let r=0;r<e.length;r++){let{pressure:i}=e[r],{point:o,vector:s,distance:W,runningLength:I}=e[r];if(r<e.length-1&&p-I<3)continue;if(h){if(y){let v=C(1,W/u),Z=C(1,1-v);i=C(1,H+(Z-H)*(v*pe))}m=$(u,h,i,n)}else m=u/2;U===void 0&&(U=m);let le=I<g?j(I/g):1,fe=p-I<T?c((p-I)/T):1;m=Math.max(.01,m*Math.min(le,fe));let re=(r<e.length-1?e[r+1]:e[r]).vector,Y=r<e.length-1?B(s,re):1,be=B(s,X)<0&&!J,ne=Y!==null&&Y<0;if(be||ne){let v=b(R(X),m);for(let Z=1/13,w=0;w<=1;w+=Z)O=L(a(o,v),o,V*w),_.push(O),E=L(l(o,v),o,V*-w),M.push(E);z=O,F=E,ne&&(J=!0);continue}if(J=!1,r===e.length-1){let v=b(R(s),m);_.push(a(o,v)),M.push(l(o,v));continue}let oe=b(R(K(re,s,Y)),m);O=a(o,oe),(r<=1||A(z,O)>te)&&(_.push(O),z=O),E=l(o,oe),(r<=1||A(F,E)>te)&&(M.push(E),F=E),H=i,X=s}let P=e[0].point.slice(0,2),k=e.length>1?e[e.length-1].point.slice(0,2):l(e[0].point,[1,1]),Q=[],N=[];if(e.length===1){if(!(g||T)||D){let r=ee(P,G(R(a(P,k))),-(U||m)),i=[];for(let o=1/13,s=o;s<=1;s+=o)i.push(L(r,P,V*2*s));return i}}else{if(!(g||T&&e.length===1))if(S)for(let i=1/13,o=i;o<=1;o+=i){let s=L(M[0],P,V*o);Q.push(s)}else{let i=a(_[0],M[0]),o=b(i,.5),s=b(i,.51);Q.push(a(P,o),a(P,s),l(P,s),l(P,o))}let r=R(se(e[e.length-1].vector));if(T||g&&e.length===1)N.push(k);else if(q){let i=ee(k,r,m);for(let o=1/29,s=o;s<1;s+=o)N.push(L(i,k,V*3*s))}else N.push(l(k,b(r,m)),l(k,b(r,m*.99)),a(k,b(r,m*.99)),a(k,b(r,m)))}return _.concat(N,M.reverse(),Q)}function me(e,t={}){var q;let{streamline:u=.5,size:x=16,last:h=!1}=t;if(e.length===0)return[];let y=.15+(1-u)*.85,n=Array.isArray(e[0])?e:e.map(({x:c,y:p,pressure:g=.5})=>[c,p,g]);if(n.length===2){let c=n[1];n=n.slice(0,-1);for(let p=1;p<5;p++)n.push(K(n[0],c,p/4))}n.length===1&&(n=[...n,[...l(n[0],[1,1]),...n[0].slice(2)]]);let f=[{point:[n[0][0],n[0][1]],pressure:n[0][2]>=0?n[0][2]:.25,vector:[1,1],distance:0,runningLength:0}],d=!1,D=0,S=f[0],j=n.length-1;for(let c=1;c<n.length;c++){let p=h&&c===j?n[c].slice(0,2):K(S.point,n[c],y);if(ue(S.point,p))continue;let g=ie(p,S.point);if(D+=g,c<j&&!d){if(D<x)continue;d=!0}S={point:p,pressure:n[c][2]>=0?n[c][2]:.5,vector:G(a(S.point,p)),distance:g,runningLength:D},f.push(S)}return f[0].vector=((q=f[1])==null?void 0:q.vector)||[0,0],f}function ae(e,t={}){return ce(me(e,t),t)}var _e=ae;export{_e as default,ae as getStroke,ce as getStrokeOutlinePoints,me as getStrokePoints};\n", "import { createAnatomy } from '@zag-js/anatomy';\nimport { trackPointerMove, getRelativePoint, getDataUrl as getDataUrl$1, query, dataAttr, isLeftClick, isModifierKey, getEventTarget } from '@zag-js/dom-query';\nimport { createMachine } from '@zag-js/core';\nimport getStroke from 'perfect-freehand';\nimport { createProps } from '@zag-js/types';\nimport { createSplitProps } from '@zag-js/utils';\n\n// src/signature-pad.anatomy.ts\nvar anatomy = createAnatomy(\"signature-pad\").parts(\n  \"root\",\n  \"control\",\n  \"segment\",\n  \"segmentPath\",\n  \"guide\",\n  \"clearTrigger\",\n  \"label\"\n);\nvar parts = anatomy.build();\nvar getRootId = (ctx) => ctx.ids?.root ?? `signature-${ctx.id}`;\nvar getControlId = (ctx) => ctx.ids?.control ?? `signature-control-${ctx.id}`;\nvar getLabelId = (ctx) => ctx.ids?.label ?? `signature-label-${ctx.id}`;\nvar getHiddenInputId = (ctx) => ctx.ids?.hiddenInput ?? `signature-input-${ctx.id}`;\nvar getControlEl = (ctx) => ctx.getById(getControlId(ctx));\nvar getSegmentEl = (ctx) => query(getControlEl(ctx), \"[data-part=segment]\");\nvar getDataUrl = (ctx, options) => {\n  return getDataUrl$1(getSegmentEl(ctx), options);\n};\n\n// src/signature-pad.connect.ts\nfunction connect(service, normalize) {\n  const { state, send, prop, computed, context, scope } = service;\n  const drawing = state.matches(\"drawing\");\n  const empty = computed(\"isEmpty\");\n  const interactive = computed(\"isInteractive\");\n  const disabled = !!prop(\"disabled\");\n  const required = !!prop(\"required\");\n  const translations = prop(\"translations\");\n  return {\n    empty,\n    drawing,\n    currentPath: context.get(\"currentPath\"),\n    paths: context.get(\"paths\"),\n    clear() {\n      send({ type: \"CLEAR\" });\n    },\n    getDataUrl(type, quality) {\n      if (computed(\"isEmpty\")) return Promise.resolve(\"\");\n      return getDataUrl(scope, { type, quality });\n    },\n    getLabelProps() {\n      return normalize.label({\n        ...parts.label.attrs,\n        id: getLabelId(scope),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-required\": dataAttr(required),\n        htmlFor: getHiddenInputId(scope),\n        onClick(event) {\n          if (!interactive) return;\n          if (event.defaultPrevented) return;\n          const controlEl = getControlEl(scope);\n          controlEl?.focus({ preventScroll: true });\n        }\n      });\n    },\n    getRootProps() {\n      return normalize.element({\n        ...parts.root.attrs,\n        \"data-disabled\": dataAttr(disabled),\n        id: getRootId(scope)\n      });\n    },\n    getControlProps() {\n      return normalize.element({\n        ...parts.control.attrs,\n        tabIndex: disabled ? void 0 : 0,\n        id: getControlId(scope),\n        role: \"application\",\n        \"aria-roledescription\": \"signature pad\",\n        \"aria-label\": translations.control,\n        \"aria-disabled\": disabled,\n        \"data-disabled\": dataAttr(disabled),\n        onPointerDown(event) {\n          if (!isLeftClick(event)) return;\n          if (isModifierKey(event)) return;\n          if (!interactive) return;\n          const target = getEventTarget(event);\n          if (target?.closest(\"[data-part=clear-trigger]\")) return;\n          event.currentTarget.setPointerCapture(event.pointerId);\n          const point = { x: event.clientX, y: event.clientY };\n          const controlEl = getControlEl(scope);\n          if (!controlEl) return;\n          const { offset } = getRelativePoint(point, controlEl);\n          send({ type: \"POINTER_DOWN\", point: offset, pressure: event.pressure });\n        },\n        onPointerUp(event) {\n          if (!interactive) return;\n          if (event.currentTarget.hasPointerCapture(event.pointerId)) {\n            event.currentTarget.releasePointerCapture(event.pointerId);\n          }\n        },\n        style: {\n          position: \"relative\",\n          touchAction: \"none\",\n          userSelect: \"none\",\n          WebkitUserSelect: \"none\"\n        }\n      });\n    },\n    getSegmentProps() {\n      return normalize.svg({\n        ...parts.segment.attrs,\n        style: {\n          position: \"absolute\",\n          top: 0,\n          left: 0,\n          width: \"100%\",\n          height: \"100%\",\n          pointerEvents: \"none\",\n          fill: prop(\"drawing\").fill\n        }\n      });\n    },\n    getSegmentPathProps(props2) {\n      return normalize.path({\n        ...parts.segmentPath.attrs,\n        d: props2.path\n      });\n    },\n    getGuideProps() {\n      return normalize.element({\n        ...parts.guide.attrs,\n        \"data-disabled\": dataAttr(disabled)\n      });\n    },\n    getClearTriggerProps() {\n      return normalize.button({\n        ...parts.clearTrigger.attrs,\n        type: \"button\",\n        \"aria-label\": translations.clearTrigger,\n        hidden: !context.get(\"paths\").length || drawing,\n        disabled,\n        onClick() {\n          send({ type: \"CLEAR\" });\n        }\n      });\n    },\n    getHiddenInputProps(props2) {\n      return normalize.input({\n        id: getHiddenInputId(scope),\n        type: \"text\",\n        hidden: true,\n        disabled,\n        required: prop(\"required\"),\n        readOnly: true,\n        name: prop(\"name\"),\n        value: props2.value\n      });\n    }\n  };\n}\n\n// src/get-svg-path.ts\nvar average = (a, b) => (a + b) / 2;\nfunction getSvgPathFromStroke(points, closed = true) {\n  const len = points.length;\n  if (len < 4) {\n    return \"\";\n  }\n  let a = points[0];\n  let b = points[1];\n  const c = points[2];\n  let result = `M${a[0].toFixed(2)},${a[1].toFixed(2)} Q${b[0].toFixed(2)},${b[1].toFixed(2)} ${average(b[0], c[0]).toFixed(2)},${average(\n    b[1],\n    c[1]\n  ).toFixed(2)} T`;\n  for (let i = 2, max = len - 1; i < max; i++) {\n    a = points[i];\n    b = points[i + 1];\n    result += `${average(a[0], b[0]).toFixed(2)},${average(a[1], b[1]).toFixed(2)} `;\n  }\n  if (closed) {\n    result += \"Z\";\n  }\n  return result;\n}\n\n// src/signature-pad.machine.ts\nvar machine = createMachine({\n  props({ props: props2 }) {\n    return {\n      defaultPaths: [],\n      ...props2,\n      drawing: {\n        size: 2,\n        simulatePressure: false,\n        thinning: 0.7,\n        smoothing: 0.4,\n        streamline: 0.6,\n        ...props2.drawing\n      },\n      translations: {\n        control: \"signature pad\",\n        clearTrigger: \"clear signature\",\n        ...props2.translations\n      }\n    };\n  },\n  initialState() {\n    return \"idle\";\n  },\n  context({ prop, bindable }) {\n    return {\n      paths: bindable(() => ({\n        defaultValue: prop(\"defaultPaths\"),\n        value: prop(\"paths\"),\n        sync: true,\n        onChange(value) {\n          prop(\"onDraw\")?.({ paths: value });\n        }\n      })),\n      currentPoints: bindable(() => ({\n        defaultValue: []\n      })),\n      currentPath: bindable(() => ({\n        defaultValue: null\n      }))\n    };\n  },\n  computed: {\n    isInteractive: ({ prop }) => !(prop(\"disabled\") || prop(\"readOnly\")),\n    isEmpty: ({ context }) => context.get(\"paths\").length === 0\n  },\n  on: {\n    CLEAR: {\n      actions: [\"clearPoints\", \"invokeOnDrawEnd\", \"focusCanvasEl\"]\n    }\n  },\n  states: {\n    idle: {\n      on: {\n        POINTER_DOWN: {\n          target: \"drawing\",\n          actions: [\"addPoint\"]\n        }\n      }\n    },\n    drawing: {\n      effects: [\"trackPointerMove\"],\n      on: {\n        POINTER_MOVE: {\n          actions: [\"addPoint\", \"invokeOnDraw\"]\n        },\n        POINTER_UP: {\n          target: \"idle\",\n          actions: [\"endStroke\", \"invokeOnDrawEnd\"]\n        }\n      }\n    }\n  },\n  implementations: {\n    effects: {\n      trackPointerMove({ scope, send }) {\n        const doc = scope.getDoc();\n        return trackPointerMove(doc, {\n          onPointerMove({ event, point }) {\n            const controlEl = getControlEl(scope);\n            if (!controlEl) return;\n            const { offset } = getRelativePoint(point, controlEl);\n            send({ type: \"POINTER_MOVE\", point: offset, pressure: event.pressure });\n          },\n          onPointerUp() {\n            send({ type: \"POINTER_UP\" });\n          }\n        });\n      }\n    },\n    actions: {\n      addPoint({ context, event, prop }) {\n        const nextPoints = [...context.get(\"currentPoints\"), event.point];\n        context.set(\"currentPoints\", nextPoints);\n        const stroke = getStroke(nextPoints, prop(\"drawing\"));\n        context.set(\"currentPath\", getSvgPathFromStroke(stroke));\n      },\n      endStroke({ context }) {\n        const nextPaths = [...context.get(\"paths\"), context.get(\"currentPath\")];\n        context.set(\"paths\", nextPaths);\n        context.set(\"currentPoints\", []);\n        context.set(\"currentPath\", null);\n      },\n      clearPoints({ context }) {\n        context.set(\"currentPoints\", []);\n        context.set(\"paths\", []);\n        context.set(\"currentPath\", null);\n      },\n      focusCanvasEl({ scope }) {\n        queueMicrotask(() => {\n          scope.getActiveElement()?.focus({ preventScroll: true });\n        });\n      },\n      invokeOnDraw({ context, prop }) {\n        prop(\"onDraw\")?.({\n          paths: [...context.get(\"paths\"), context.get(\"currentPath\")]\n        });\n      },\n      invokeOnDrawEnd({ context, prop, scope, computed }) {\n        prop(\"onDrawEnd\")?.({\n          paths: [...context.get(\"paths\")],\n          getDataUrl(type, quality = 0.92) {\n            if (computed(\"isEmpty\")) return Promise.resolve(\"\");\n            return getDataUrl(scope, { type, quality });\n          }\n        });\n      }\n    }\n  }\n});\nvar props = createProps()([\n  \"defaultPaths\",\n  \"dir\",\n  \"disabled\",\n  \"drawing\",\n  \"getRootNode\",\n  \"id\",\n  \"ids\",\n  \"name\",\n  \"onDraw\",\n  \"onDrawEnd\",\n  \"paths\",\n  \"readOnly\",\n  \"required\",\n  \"translations\"\n]);\nvar splitProps = createSplitProps(props);\n\nexport { anatomy, connect, machine, props, splitProps };\n", "import * as signaturePad from \"@zag-js/signature-pad\";\nimport type { Direction } from \"@zag-js/types\";\nimport { VanillaMachine, normalizeProps } from \"@zag-js/vanilla\";\nimport {\n  Component,\n  getBoolean,\n  getNumber,\n  generateId,\n  renderPart,\n  getString,\n  getStringList,\n} from \"../lib\";\nexport class SignaturePad extends Component<\n  signaturePad.Props,\n  signaturePad.Api\n> {\n  initMachine(props: signaturePad.Props): VanillaMachine<any> {\n    return new VanillaMachine(signaturePad.machine, props);\n  }\n  initApi(): signaturePad.Api {\n    return signaturePad.connect(this.machine.service, normalizeProps);\n  }\n  async render() {\n    const svg = this.el.querySelector<SVGElement>('[data-part=\"segment\"]');\n    if (!svg) return;\n\n    svg.innerHTML = \"\";\n\n    this.api.paths.forEach((path) => {\n      const pathEl = document.createElementNS(\n        \"http://www.w3.org/2000/svg\",\n        \"path\",\n      );\n      const props = this.api.getSegmentPathProps({ path });\n      for (const [key, value] of Object.entries(props)) {\n        if (value != null) pathEl.setAttribute(key, String(value));\n      }\n      svg.appendChild(pathEl);\n    });\n\n    if (this.api.currentPath) {\n      const currentPathEl = document.createElementNS(\n        \"http://www.w3.org/2000/svg\",\n        \"path\",\n      );\n      const props = this.api.getSegmentPathProps({\n        path: this.api.currentPath,\n      });\n      for (const [key, value] of Object.entries(props)) {\n        if (value != null) currentPathEl.setAttribute(key, String(value));\n      }\n      svg.appendChild(currentPathEl);\n    }\n    const parts = [\n      \"root\",\n      \"label\",\n      \"control\",\n      \"segment\",\n      \"clear-trigger\",\n      \"guide\",\n    ];\n    for (const part of parts) renderPart(this.el, part, this.api);\n    const dataUrl = await this.api.getDataUrl(\"image/png\");\n    renderPart(this.el, \"hidden-input\", this.api, { value: dataUrl });\n  }\n}\nexport function initSignaturePad(\n  doc: HTMLElement | Document = document,\n  selector = \".signature-pad-js\",\n): void {\n  doc.querySelectorAll<HTMLElement>(selector).forEach((rootEl) => {\n    const directions = [\"ltr\", \"rtl\"] as const;\n    const signaturePad = new SignaturePad(rootEl, {\n      id: generateId(rootEl, \"signaturePad\"),\n      defaultPaths: getStringList(rootEl, \"defaultPaths\"),\n      dir: getString<Direction>(rootEl, \"dir\", directions),\n      disabled: getBoolean(rootEl, \"disabled\"),\n      name: getString(rootEl, \"name\"),\n      readOnly: getBoolean(rootEl, \"readOnly\"),\n      required: getBoolean(rootEl, \"required\"),\n      paths: getStringList(rootEl, \"paths\"),\n      drawing: {\n        fill: getString(rootEl, \"fill\"),\n        size: getNumber(rootEl, \"size\"),\n        simulatePressure: getBoolean(rootEl, \"simulatePressure\"),\n      },\n      onDrawEnd(details) {\n        const eventName = getString(rootEl, \"onDrawEnd\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onDraw(details) {\n        const eventName = getString(rootEl, \"onDraw\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n    });\n    signaturePad.init();\n  });\n}\n", "import * as combobox from \"@zag-js/combobox\";\nimport type { Direction } from \"@zag-js/types\";\nimport type { ListCollection } from \"@zag-js/collection\";\nimport { VanillaMachine, normalizeProps, spreadProps } from \"@zag-js/vanilla\";\n\nimport {\n  Component,\n  generateId,\n  renderPart,\n  getString,\n  getBoolean,\n  getNumber,\n  getStringList,\n} from \"../lib\";\ntype SearchItem = {\n  label: string;\n  code: string;\n  url?: string;\n  excerpt?: string;\n  title?: string;\n};\nfunction getDomItems(rootEl: HTMLElement): SearchItem[] {\n  const items: SearchItem[] = [];\n  rootEl.querySelectorAll('[data-part=\"item\"]').forEach((el) => {\n    const label = el.getAttribute(\"data-label\") || el.textContent?.trim() || \"\";\n    const code = el.getAttribute(\"data-code\") || \"\";\n    const url = el.getAttribute(\"href\") || \"\";\n    items.push({ label, code, url });\n  });\n  return items;\n}\nexport class SiteSearch extends Component<combobox.Props, combobox.Api> {\n  private pagefind: Pagefind | null = null;\n  userOnInputValueChange?: combobox.Props[\"onInputValueChange\"];\n  userOnOpenChange?: combobox.Props[\"onOpenChange\"];\n  constructor(el: HTMLElement, props: combobox.Props) {\n    super(el, {\n      ...props,\n      onInputValueChange: undefined,\n      onOpenChange: undefined,\n    });\n    this.userOnInputValueChange = props.onInputValueChange;\n    this.userOnOpenChange = props.onOpenChange;\n  }\n  options: SearchItem[] = [];\n  allItems: SearchItem[] = [];\n  setItems(items: SearchItem[]): void {\n    this.allItems = items;\n    this.options = items;\n  }\n  setPagefindInstance(pagefind: Pagefind): void {\n    this.pagefind = pagefind;\n  }\n  getCollection(items: SearchItem[]): ListCollection<SearchItem> {\n    return combobox.collection({\n      items,\n      itemToValue: (item) => item.code,\n      itemToString: (item) => item.label,\n    });\n  }\n  async performPagefindSearch(query: string): Promise<SearchItem[]> {\n    if (!this.pagefind || !query.trim()) {\n      return this.allItems;\n    }\n    try {\n      const searchResults: PagefindSearchResults =\n        await this.pagefind.search(query);\n      const searchItems: SearchItem[] = [];\n      for (const result of searchResults.results.slice(\n        0,\n        getNumber(this.el, \"maxResults\") || 20,\n      )) {\n        try {\n          const data: PagefindSearchFragment = await result.data();\n          searchItems.push({\n            label: data.meta.title ?? data.url,\n            code: data.url,\n            url: data.url,\n            excerpt: data.excerpt,\n            title: data.meta.title,\n          });\n        } catch (error) {\n          console.warn(\"Failed to load result data:\", error);\n        }\n      }\n      return searchItems;\n    } catch (error) {\n      console.error(\"Pagefind search error:\", error);\n      return this.allItems;\n    }\n  }\n  updateCollection(): void {\n    const newCollection = this.getCollection(this.options);\n    this.machine.service.send({\n      type: \"COLLECTION.SET\",\n      collection: newCollection,\n    });\n  }\n  initMachine(props: combobox.Props): VanillaMachine<any> {\n    const self = this;\n    return new VanillaMachine(combobox.machine, {\n      ...props,\n      get collection() {\n        return self.getCollection(self.options || []);\n      },\n      async onInputValueChange(details) {\n        const query = details.inputValue.trim();\n        if (!query) {\n          self.options = self.allItems;\n          self.updateCollection();\n          self.renderItems();\n          self.userOnInputValueChange?.(details);\n          return;\n        }\n        try {\n          const searchResults = await self.performPagefindSearch(query);\n          self.options =\n            searchResults.length > 0 ? searchResults : self.allItems;\n          self.updateCollection();\n          self.renderItems();\n          self.userOnInputValueChange?.(details);\n        } catch (error) {\n          console.error(\"Search error\", error);\n          self.options = self.allItems;\n          self.updateCollection();\n          self.renderItems();\n          self.userOnInputValueChange?.(details);\n        }\n      },\n      onOpenChange(details) {\n        if (details.open) {\n          self.options = self.allItems;\n          self.updateCollection();\n          self.renderItems();\n        }\n        self.userOnOpenChange?.(details);\n      },\n      onSelect(details) {\n        if (details.itemValue) {\n          window.location.href = details.itemValue;\n        }\n      },\n    });\n  }\n  initApi(): combobox.Api {\n    return combobox.connect(this.machine.service, normalizeProps);\n  }\n  renderItems(): void {\n    const contentEl = this.el.querySelector('[data-part=\"content\"]');\n    if (!contentEl) return;\n    contentEl.innerHTML = \"\";\n    if (this.options.length === 0) {\n      const noResult = document.createElement(\"div\");\n      noResult.setAttribute(\"data-part\", \"no-results\");\n      noResult.textContent =\n        getString(this.el, \"noResults\") || \"No results found\";\n      contentEl.appendChild(noResult);\n      return;\n    }\n    const list = document.createElement(\"ul\");\n    list.setAttribute(\"data-part\", \"list\");\n    spreadProps(list, this.api.getListProps());\n    for (const item of this.options) {\n      const li = document.createElement(\"li\");\n      li.setAttribute(\"data-part\", \"item\");\n      li.setAttribute(\"data-label\", item.label);\n      li.setAttribute(\"data-code\", item.code);\n      spreadProps(li, this.api.getItemProps({ item }));\n      li.textContent = item.label;\n      if (item.excerpt) {\n        const excerptDiv = document.createElement(\"span\");\n        excerptDiv.setAttribute(\"data-part\", \"excerpt\");\n        excerptDiv.innerHTML = item.excerpt;\n        li.appendChild(excerptDiv);\n      }\n      list.appendChild(li);\n    }\n    contentEl.appendChild(list);\n  }\n  render(): void {\n    const parts = [\n      \"root\",\n      \"label\",\n      \"control\",\n      \"input\",\n      \"trigger\",\n      \"positioner\",\n      \"content\",\n      \"clear-trigger\",\n      \"item-group\",\n      \"item-group-label\",\n      \"item-indicator\",\n      \"item-text\",\n      \"list\",\n    ];\n    for (const part of parts) {\n      renderPart(this.el, part, this.api);\n    }\n    this.renderItems();\n  }\n}\nexport function initSiteSearch(\n  pagefindInstance?: Pagefind,\n  doc: HTMLElement | Document = document,\n  selector = \".site-search-js\",\n): void {\n  doc.querySelectorAll<HTMLElement>(selector).forEach((rootEl) => {\n    const items: SearchItem[] = getDomItems(rootEl);\n    const directions = [\"ltr\", \"rtl\"] as const;\n    const placements = [\n      \"top\",\n      \"right\",\n      \"bottom\",\n      \"left\",\n      \"top-start\",\n      \"top-end\",\n      \"right-start\",\n      \"right-end\",\n      \"bottom-start\",\n      \"bottom-end\",\n      \"left-start\",\n      \"left-end\",\n    ] as const;\n    const strategies = [\"absolute\", \"fixed\"] as const;\n    const inputBehaviors = [\"autohighlight\", \"autocomplete\", \"none\"] as const;\n    const selectionBehaviors = [\"replace\", \"clear\", \"preserve\"] as const;\n    const siteSearchComponent = new SiteSearch(rootEl, {\n      id: generateId(rootEl, \"site-search\"),\n      placeholder: getString(rootEl, \"placeholder\"),\n      allowCustomValue: getBoolean(rootEl, \"allowCustomValue\"),\n      autoFocus: getBoolean(rootEl, \"autoFocus\"),\n      closeOnSelect: getBoolean(rootEl, \"closeOnSelect\"),\n      composite: getBoolean(rootEl, \"composite\"),\n      defaultHighlightedValue: getString(rootEl, \"defaultHighlightedValue\"),\n      defaultInputValue: getString(rootEl, \"defaultInputValue\"),\n      defaultOpen: getBoolean(rootEl, \"defaultOpen\"),\n      defaultValue: getStringList(rootEl, \"defaultValue\"),\n      dir: getString<Direction>(rootEl, \"dir\", directions),\n      disabled: getBoolean(rootEl, \"disabled\"),\n      disableLayer: getBoolean(rootEl, \"disableLayer\"),\n      form: getString(rootEl, \"form\"),\n      highlightedValue: getString(rootEl, \"highlightedValue\"),\n      inputBehavior: getString(rootEl, \"inputBehavior\", inputBehaviors),\n      inputValue: getString(rootEl, \"inputValue\"),\n      invalid: getBoolean(rootEl, \"invalid\"),\n      loopFocus: getBoolean(rootEl, \"loopFocus\"),\n      multiple: getBoolean(rootEl, \"multiple\"),\n      name: getString(rootEl, \"name\"),\n      readOnly: getBoolean(rootEl, \"readOnly\"),\n      required: getBoolean(rootEl, \"required\"),\n      open: getBoolean(rootEl, \"open\"),\n      openOnChange: getBoolean(rootEl, \"openOnChange\"),\n      openOnClick: getBoolean(rootEl, \"openOnClick\"),\n      openOnKeyPress: getBoolean(rootEl, \"openOnKeyPress\"),\n      value: getStringList(rootEl, \"value\"),\n      selectionBehavior: getString(\n        rootEl,\n        \"selectionBehavior\",\n        selectionBehaviors,\n      ),\n      positioning: {\n        hideWhenDetached: getBoolean(rootEl, \"hideWhenDetached\"),\n        placement: getString(rootEl, \"placement\", placements),\n        strategy: getString(rootEl, \"strategy\", strategies),\n        flip: getBoolean(rootEl, \"flip\"),\n        gutter: getNumber(rootEl, \"gutter\"),\n        arrowPadding: getNumber(rootEl, \"arrowPadding\"),\n        overflowPadding: getNumber(rootEl, \"overflowPadding\"),\n        offset: (() => {\n          const mainAxis = getNumber(rootEl, \"offsetMainAxis\");\n          const crossAxis = getNumber(rootEl, \"offsetCrossAxis\");\n          if (mainAxis !== undefined || crossAxis !== undefined) {\n            return {\n              mainAxis,\n              crossAxis,\n            };\n          }\n          return undefined;\n        })(),\n        sameWidth: getBoolean(rootEl, \"sameWidth\"),\n        overlap: getBoolean(rootEl, \"overlap\"),\n        fitViewport: getBoolean(rootEl, \"fitViewport\"),\n        slide: getBoolean(rootEl, \"slide\"),\n      },\n      navigate(details) {\n        const eventName = getString(rootEl, \"navigate\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onInputValueChange(details) {\n        const eventName = getString(rootEl, \"onInputValueChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onFocusOutside(event) {\n        const eventName = getString(rootEl, \"onFocusOutside\");\n        if (eventName) {\n          rootEl.dispatchEvent(\n            new CustomEvent(eventName, { detail: event.detail }),\n          );\n        }\n      },\n      onHighlightChange(details) {\n        const eventName = getString(rootEl, \"onHighlightChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onInteractOutside(event) {\n        const eventName = getString(rootEl, \"onInteractOutside\");\n        if (eventName) {\n          rootEl.dispatchEvent(\n            new CustomEvent(eventName, { detail: event.detail }),\n          );\n        }\n      },\n      onOpenChange(details) {\n        const eventName = getString(rootEl, \"onOpenChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onPointerDownOutside(event) {\n        const eventName = getString(rootEl, \"onPointerDownOutside\");\n        if (eventName) {\n          rootEl.dispatchEvent(\n            new CustomEvent(eventName, { detail: event.detail }),\n          );\n        }\n      },\n      onSelect(details) {\n        const eventName = getString(rootEl, \"onSelect\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onValueChange(details) {\n        const eventName = getString(rootEl, \"onValueChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n    });\n    siteSearchComponent.setItems(items);\n    siteSearchComponent.options = items;\n    siteSearchComponent.init();\n    if (pagefindInstance) {\n      siteSearchComponent.setPagefindInstance(pagefindInstance);\n    }\n  });\n}\n\ninterface PagefindIndexOptions {\n  basePath?: string;\n  baseUrl?: string;\n  excerptLength?: number;\n  indexWeight?: number;\n  mergeFilter?: Record<string, unknown>;\n  highlightParam?: string;\n  language?: string;\n  primary?: boolean;\n  ranking?: PagefindRankingWeights;\n}\n\ninterface PagefindRankingWeights {\n  termSimilarity?: number;\n  pageLength?: number;\n  termSaturation?: number;\n  termFrequency?: number;\n}\n\ninterface PagefindSearchOptions {\n  preload?: boolean;\n  verbose?: boolean;\n  filters?: Record<string, unknown>;\n  sort?: Record<string, unknown>;\n}\n\ntype PagefindFilterCounts = Record<string, Record<string, number>>;\n\ninterface PagefindSearchResults {\n  results: PagefindSearchResult[];\n  unfilteredResultCount: number;\n  filters: PagefindFilterCounts;\n  totalFilters: PagefindFilterCounts;\n  timings: {\n    preload: number;\n    search: number;\n    total: number;\n  };\n}\n\ninterface PagefindSearchResult {\n  id: string;\n  score: number;\n  words: number[];\n  data: () => Promise<PagefindSearchFragment>;\n}\n\ninterface PagefindSearchFragment {\n  url: string;\n  raw_url?: string;\n  content: string;\n  raw_content?: string;\n  excerpt: string;\n  sub_results: PagefindSubResult[];\n  word_count: number;\n  locations: number[];\n  weighted_locations: PagefindWordLocation[];\n  filters: Record<string, string[]>;\n  meta: Record<string, string>;\n  anchors: PagefindSearchAnchor[];\n}\n\ninterface PagefindSubResult {\n  title: string;\n  url: string;\n  locations: number[];\n  weighted_locations: PagefindWordLocation[];\n  excerpt: string;\n  anchor?: PagefindSearchAnchor;\n}\n\ninterface PagefindWordLocation {\n  weight: number;\n  balanced_score: number;\n  location: number;\n}\n\ninterface PagefindSearchAnchor {\n  element: string;\n  id: string;\n  text?: string;\n  location: number;\n}\n\ninterface Pagefind {\n  debouncedSearch: (\n    query: string,\n    options?: PagefindSearchOptions,\n    duration?: number,\n  ) => Promise<PagefindSearchResults>;\n  destroy: () => Promise<void>;\n  filters: () => Promise<PagefindFilterCounts>;\n  init: () => Promise<void>;\n  mergeIndex: (\n    indexPath: string,\n    options?: Record<string, unknown>,\n  ) => Promise<void>;\n  options: (options: PagefindIndexOptions) => Promise<void>;\n  preload: (term: string, options?: PagefindIndexOptions) => Promise<void>;\n  search: (\n    term: string,\n    options?: PagefindSearchOptions,\n  ) => Promise<PagefindSearchResults>;\n}\n\nexport type {\n  PagefindIndexOptions,\n  PagefindRankingWeights,\n  PagefindSearchOptions,\n  PagefindFilterCounts,\n  PagefindSearchResults,\n  PagefindSearchResult,\n  PagefindSearchFragment,\n  PagefindSubResult,\n  PagefindWordLocation,\n  PagefindSearchAnchor,\n  Pagefind,\n};\n", "import { createAnatomy } from '@zag-js/anatomy';\nimport { dispatchInputCheckedEvent, setElementChecked, trackFormControl, trackPress, dataAttr, visuallyHiddenStyle, getEventTarget, isSafari } from '@zag-js/dom-query';\nimport { trackFocusVisible, isFocusVisible } from '@zag-js/focus-visible';\nimport { createGuards, createMachine } from '@zag-js/core';\nimport { createProps } from '@zag-js/types';\nimport { createSplitProps } from '@zag-js/utils';\n\n// src/switch.anatomy.ts\nvar anatomy = createAnatomy(\"switch\").parts(\"root\", \"label\", \"control\", \"thumb\");\nvar parts = anatomy.build();\n\n// src/switch.dom.ts\nvar getRootId = (ctx) => ctx.ids?.root ?? `switch:${ctx.id}`;\nvar getLabelId = (ctx) => ctx.ids?.label ?? `switch:${ctx.id}:label`;\nvar getThumbId = (ctx) => ctx.ids?.thumb ?? `switch:${ctx.id}:thumb`;\nvar getControlId = (ctx) => ctx.ids?.control ?? `switch:${ctx.id}:control`;\nvar getHiddenInputId = (ctx) => ctx.ids?.hiddenInput ?? `switch:${ctx.id}:input`;\nvar getRootEl = (ctx) => ctx.getById(getRootId(ctx));\nvar getHiddenInputEl = (ctx) => ctx.getById(getHiddenInputId(ctx));\n\n// src/switch.connect.ts\nfunction connect(service, normalize) {\n  const { context, send, prop, scope } = service;\n  const disabled = !!prop(\"disabled\");\n  const readOnly = !!prop(\"readOnly\");\n  const required = !!prop(\"required\");\n  const checked = !!context.get(\"checked\");\n  const focused = !disabled && context.get(\"focused\");\n  const focusVisible = !disabled && context.get(\"focusVisible\");\n  const active = !disabled && context.get(\"active\");\n  const dataAttrs = {\n    \"data-active\": dataAttr(active),\n    \"data-focus\": dataAttr(focused),\n    \"data-focus-visible\": dataAttr(focusVisible),\n    \"data-readonly\": dataAttr(readOnly),\n    \"data-hover\": dataAttr(context.get(\"hovered\")),\n    \"data-disabled\": dataAttr(disabled),\n    \"data-state\": checked ? \"checked\" : \"unchecked\",\n    \"data-invalid\": dataAttr(prop(\"invalid\")),\n    \"data-required\": dataAttr(required)\n  };\n  return {\n    checked,\n    disabled,\n    focused,\n    setChecked(checked2) {\n      send({ type: \"CHECKED.SET\", checked: checked2, isTrusted: false });\n    },\n    toggleChecked() {\n      send({ type: \"CHECKED.TOGGLE\", checked, isTrusted: false });\n    },\n    getRootProps() {\n      return normalize.label({\n        ...parts.root.attrs,\n        ...dataAttrs,\n        dir: prop(\"dir\"),\n        id: getRootId(scope),\n        htmlFor: getHiddenInputId(scope),\n        onPointerMove() {\n          if (disabled) return;\n          send({ type: \"CONTEXT.SET\", context: { hovered: true } });\n        },\n        onPointerLeave() {\n          if (disabled) return;\n          send({ type: \"CONTEXT.SET\", context: { hovered: false } });\n        },\n        onClick(event) {\n          if (disabled) return;\n          const target = getEventTarget(event);\n          if (target === getHiddenInputEl(scope)) {\n            event.stopPropagation();\n          }\n          if (isSafari()) {\n            getHiddenInputEl(scope)?.focus();\n          }\n        }\n      });\n    },\n    getLabelProps() {\n      return normalize.element({\n        ...parts.label.attrs,\n        ...dataAttrs,\n        dir: prop(\"dir\"),\n        id: getLabelId(scope)\n      });\n    },\n    getThumbProps() {\n      return normalize.element({\n        ...parts.thumb.attrs,\n        ...dataAttrs,\n        dir: prop(\"dir\"),\n        id: getThumbId(scope),\n        \"aria-hidden\": true\n      });\n    },\n    getControlProps() {\n      return normalize.element({\n        ...parts.control.attrs,\n        ...dataAttrs,\n        dir: prop(\"dir\"),\n        id: getControlId(scope),\n        \"aria-hidden\": true\n      });\n    },\n    getHiddenInputProps() {\n      return normalize.input({\n        id: getHiddenInputId(scope),\n        type: \"checkbox\",\n        required: prop(\"required\"),\n        defaultChecked: checked,\n        disabled,\n        \"aria-labelledby\": getLabelId(scope),\n        \"aria-invalid\": prop(\"invalid\"),\n        name: prop(\"name\"),\n        form: prop(\"form\"),\n        value: prop(\"value\"),\n        style: visuallyHiddenStyle,\n        onFocus() {\n          const focusVisible2 = isFocusVisible();\n          send({ type: \"CONTEXT.SET\", context: { focused: true, focusVisible: focusVisible2 } });\n        },\n        onBlur() {\n          send({ type: \"CONTEXT.SET\", context: { focused: false, focusVisible: false } });\n        },\n        onClick(event) {\n          if (readOnly) {\n            event.preventDefault();\n            return;\n          }\n          const checked2 = event.currentTarget.checked;\n          send({ type: \"CHECKED.SET\", checked: checked2, isTrusted: true });\n        }\n      });\n    }\n  };\n}\nvar { not } = createGuards();\nvar machine = createMachine({\n  props({ props: props2 }) {\n    return {\n      defaultChecked: false,\n      label: \"switch\",\n      value: \"on\",\n      ...props2\n    };\n  },\n  initialState() {\n    return \"ready\";\n  },\n  context({ prop, bindable }) {\n    return {\n      checked: bindable(() => ({\n        defaultValue: prop(\"defaultChecked\"),\n        value: prop(\"checked\"),\n        onChange(value) {\n          prop(\"onCheckedChange\")?.({ checked: value });\n        }\n      })),\n      fieldsetDisabled: bindable(() => ({\n        defaultValue: false\n      })),\n      focusVisible: bindable(() => ({\n        defaultValue: false\n      })),\n      active: bindable(() => ({\n        defaultValue: false\n      })),\n      focused: bindable(() => ({\n        defaultValue: false\n      })),\n      hovered: bindable(() => ({\n        defaultValue: false\n      }))\n    };\n  },\n  computed: {\n    isDisabled: ({ context, prop }) => prop(\"disabled\") || context.get(\"fieldsetDisabled\")\n  },\n  watch({ track, prop, context, action }) {\n    track([() => prop(\"disabled\")], () => {\n      action([\"removeFocusIfNeeded\"]);\n    });\n    track([() => context.get(\"checked\")], () => {\n      action([\"syncInputElement\"]);\n    });\n  },\n  effects: [\"trackFormControlState\", \"trackPressEvent\", \"trackFocusVisible\"],\n  on: {\n    \"CHECKED.TOGGLE\": [\n      {\n        guard: not(\"isTrusted\"),\n        actions: [\"toggleChecked\", \"dispatchChangeEvent\"]\n      },\n      {\n        actions: [\"toggleChecked\"]\n      }\n    ],\n    \"CHECKED.SET\": [\n      {\n        guard: not(\"isTrusted\"),\n        actions: [\"setChecked\", \"dispatchChangeEvent\"]\n      },\n      {\n        actions: [\"setChecked\"]\n      }\n    ],\n    \"CONTEXT.SET\": {\n      actions: [\"setContext\"]\n    }\n  },\n  states: {\n    ready: {}\n  },\n  implementations: {\n    guards: {\n      isTrusted: ({ event }) => !!event.isTrusted\n    },\n    effects: {\n      trackPressEvent({ computed, scope, context }) {\n        if (computed(\"isDisabled\")) return;\n        return trackPress({\n          pointerNode: getRootEl(scope),\n          keyboardNode: getHiddenInputEl(scope),\n          isValidKey: (event) => event.key === \" \",\n          onPress: () => context.set(\"active\", false),\n          onPressStart: () => context.set(\"active\", true),\n          onPressEnd: () => context.set(\"active\", false)\n        });\n      },\n      trackFocusVisible({ computed, scope }) {\n        if (computed(\"isDisabled\")) return;\n        return trackFocusVisible({ root: scope.getRootNode() });\n      },\n      trackFormControlState({ context, send, scope }) {\n        return trackFormControl(getHiddenInputEl(scope), {\n          onFieldsetDisabledChange(disabled) {\n            context.set(\"fieldsetDisabled\", disabled);\n          },\n          onFormReset() {\n            const checked = context.initial(\"checked\");\n            send({ type: \"CHECKED.SET\", checked: !!checked, src: \"form-reset\" });\n          }\n        });\n      }\n    },\n    actions: {\n      setContext({ context, event }) {\n        for (const key in event.context) {\n          context.set(key, event.context[key]);\n        }\n      },\n      syncInputElement({ context, scope }) {\n        const inputEl = getHiddenInputEl(scope);\n        if (!inputEl) return;\n        setElementChecked(inputEl, !!context.get(\"checked\"));\n      },\n      removeFocusIfNeeded({ context, prop }) {\n        if (prop(\"disabled\")) {\n          context.set(\"focused\", false);\n        }\n      },\n      setChecked({ context, event }) {\n        context.set(\"checked\", event.checked);\n      },\n      toggleChecked({ context }) {\n        context.set(\"checked\", !context.get(\"checked\"));\n      },\n      dispatchChangeEvent({ context, scope }) {\n        const inputEl = getHiddenInputEl(scope);\n        dispatchInputCheckedEvent(inputEl, { checked: context.get(\"checked\") });\n      }\n    }\n  }\n});\nvar props = createProps()([\n  \"checked\",\n  \"defaultChecked\",\n  \"dir\",\n  \"disabled\",\n  \"form\",\n  \"getRootNode\",\n  \"id\",\n  \"ids\",\n  \"invalid\",\n  \"label\",\n  \"name\",\n  \"onCheckedChange\",\n  \"readOnly\",\n  \"required\",\n  \"value\"\n]);\nvar splitProps = createSplitProps(props);\n\nexport { anatomy, connect, machine, props, splitProps };\n", "import * as zagSwitch from \"@zag-js/switch\";\nimport type { Direction } from \"@zag-js/types\";\nimport { VanillaMachine, normalizeProps } from \"@zag-js/vanilla\";\n\nimport {\n  Component,\n  getString,\n  generateId,\n  renderPart,\n  getBoolean,\n  valuesEqual,\n} from \"../lib\";\nexport class ZagSwitch extends Component<zagSwitch.Props, zagSwitch.Api> {\n  initMachine(props: zagSwitch.Props): VanillaMachine<any> {\n    return new VanillaMachine(zagSwitch.machine, props);\n  }\n  initApi() {\n    return zagSwitch.connect(this.machine.service, normalizeProps);\n  }\n  render() {\n    const parts = [\"root\", \"label\", \"control\", \"thumb\", \"hidden-input\"];\n    for (const part of parts) renderPart(this.el, part, this.api);\n  }\n}\nexport function initSwitch(doc: HTMLElement | Document = document): void {\n  doc.querySelectorAll<HTMLElement>(\".switch-js\").forEach((rootEl) => {\n    const directions = [\"ltr\", \"rtl\"] as const;\n    const zagSwitch = new ZagSwitch(rootEl, {\n      id: generateId(rootEl, \"zagSwitch\"),\n      checked: getBoolean(rootEl, \"checked\"),\n      defaultChecked: getBoolean(rootEl, \"defaultChecked\"),\n      dir: getString<Direction>(rootEl, \"dir\", directions),\n      disabled: getBoolean(rootEl, \"disabled\"),\n      invalid: getBoolean(rootEl, \"invalid\"),\n      label: getString(rootEl, \"label\"),\n      name: getString(rootEl, \"name\"),\n      required: getBoolean(rootEl, \"required\"),\n      readOnly: getBoolean(rootEl, \"readOnly\"),\n      form: getString(rootEl, \"form\"),\n      value: getString(rootEl, \"value\"),\n      onCheckedChange(details: any) {\n        const eventName = getString(rootEl, \"onCheckedChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n    });\n    zagSwitch.init();\n    zagSwitch.el.addEventListener(\"switch:set-checked\", (event) => {\n      const { value } = (event as CustomEvent<{ value: boolean }>).detail;\n      if (!valuesEqual(zagSwitch.api.checked, value)) {\n        zagSwitch.api.setChecked(value);\n      }\n    });\n    zagSwitch.el.addEventListener(\"switch:toggle-checked\", () => {\n      zagSwitch.api.toggleChecked();\n    });\n    zagSwitch.el.addEventListener(\"switch:checked\", (event) => {\n      const detail = (\n        event as CustomEvent<{ callback: (value: boolean) => void }>\n      ).detail;\n      const callback = detail.callback;\n      if (callback && typeof callback === \"function\") {\n        callback(zagSwitch.api.checked);\n      }\n    });\n  });\n}\n", "import { createAnatomy } from '@zag-js/anatomy';\nimport { isAnchorElement, resizeObserverBorderBox, raf, getFocusables, prevById, nextById, clickIfLink, queryAll, itemById, dataAttr, isOpeningInNewTab, isSafari, isComposingEvent, contains, getEventTarget, getEventKey } from '@zag-js/dom-query';\nimport { callAll, last, first, createSplitProps, isEqual, toPx } from '@zag-js/utils';\nimport { setup } from '@zag-js/core';\nimport { createProps } from '@zag-js/types';\n\n// src/tabs.anatomy.ts\nvar anatomy = createAnatomy(\"tabs\").parts(\"root\", \"list\", \"trigger\", \"content\", \"indicator\");\nvar parts = anatomy.build();\nvar getRootId = (ctx) => ctx.ids?.root ?? `tabs:${ctx.id}`;\nvar getListId = (ctx) => ctx.ids?.list ?? `tabs:${ctx.id}:list`;\nvar getContentId = (ctx, value) => ctx.ids?.content?.(value) ?? `tabs:${ctx.id}:content-${value}`;\nvar getTriggerId = (ctx, value) => ctx.ids?.trigger?.(value) ?? `tabs:${ctx.id}:trigger-${value}`;\nvar getIndicatorId = (ctx) => ctx.ids?.indicator ?? `tabs:${ctx.id}:indicator`;\nvar getListEl = (ctx) => ctx.getById(getListId(ctx));\nvar getContentEl = (ctx, value) => ctx.getById(getContentId(ctx, value));\nvar getTriggerEl = (ctx, value) => value != null ? ctx.getById(getTriggerId(ctx, value)) : null;\nvar getIndicatorEl = (ctx) => ctx.getById(getIndicatorId(ctx));\nvar getElements = (ctx) => {\n  const ownerId = CSS.escape(getListId(ctx));\n  const selector = `[role=tab][data-ownedby='${ownerId}']:not([disabled])`;\n  return queryAll(getListEl(ctx), selector);\n};\nvar getFirstTriggerEl = (ctx) => first(getElements(ctx));\nvar getLastTriggerEl = (ctx) => last(getElements(ctx));\nvar getNextTriggerEl = (ctx, opts) => nextById(getElements(ctx), getTriggerId(ctx, opts.value), opts.loopFocus);\nvar getPrevTriggerEl = (ctx, opts) => prevById(getElements(ctx), getTriggerId(ctx, opts.value), opts.loopFocus);\nvar getOffsetRect = (el) => ({\n  x: el?.offsetLeft ?? 0,\n  y: el?.offsetTop ?? 0,\n  width: el?.offsetWidth ?? 0,\n  height: el?.offsetHeight ?? 0\n});\nvar getRectByValue = (ctx, value) => {\n  const tab = itemById(getElements(ctx), getTriggerId(ctx, value));\n  return getOffsetRect(tab);\n};\n\n// src/tabs.connect.ts\nfunction connect(service, normalize) {\n  const { state, send, context, prop, scope } = service;\n  const translations = prop(\"translations\");\n  const focused = state.matches(\"focused\");\n  const isVertical = prop(\"orientation\") === \"vertical\";\n  const isHorizontal = prop(\"orientation\") === \"horizontal\";\n  const composite = prop(\"composite\");\n  function getTriggerState(props2) {\n    return {\n      selected: context.get(\"value\") === props2.value,\n      focused: context.get(\"focusedValue\") === props2.value,\n      disabled: !!props2.disabled\n    };\n  }\n  return {\n    value: context.get(\"value\"),\n    focusedValue: context.get(\"focusedValue\"),\n    setValue(value) {\n      send({ type: \"SET_VALUE\", value });\n    },\n    clearValue() {\n      send({ type: \"CLEAR_VALUE\" });\n    },\n    setIndicatorRect(value) {\n      const id = getTriggerId(scope, value);\n      send({ type: \"SET_INDICATOR_RECT\", id });\n    },\n    syncTabIndex() {\n      send({ type: \"SYNC_TAB_INDEX\" });\n    },\n    selectNext(fromValue) {\n      send({ type: \"TAB_FOCUS\", value: fromValue, src: \"selectNext\" });\n      send({ type: \"ARROW_NEXT\", src: \"selectNext\" });\n    },\n    selectPrev(fromValue) {\n      send({ type: \"TAB_FOCUS\", value: fromValue, src: \"selectPrev\" });\n      send({ type: \"ARROW_PREV\", src: \"selectPrev\" });\n    },\n    focus() {\n      const value = context.get(\"value\");\n      if (!value) return;\n      getTriggerEl(scope, value)?.focus();\n    },\n    getRootProps() {\n      return normalize.element({\n        ...parts.root.attrs,\n        id: getRootId(scope),\n        \"data-orientation\": prop(\"orientation\"),\n        \"data-focus\": dataAttr(focused),\n        dir: prop(\"dir\")\n      });\n    },\n    getListProps() {\n      return normalize.element({\n        ...parts.list.attrs,\n        id: getListId(scope),\n        role: \"tablist\",\n        dir: prop(\"dir\"),\n        \"data-focus\": dataAttr(focused),\n        \"aria-orientation\": prop(\"orientation\"),\n        \"data-orientation\": prop(\"orientation\"),\n        \"aria-label\": translations?.listLabel,\n        onKeyDown(event) {\n          if (event.defaultPrevented) return;\n          if (isComposingEvent(event)) return;\n          if (!contains(event.currentTarget, getEventTarget(event))) return;\n          const keyMap = {\n            ArrowDown() {\n              if (isHorizontal) return;\n              send({ type: \"ARROW_NEXT\", key: \"ArrowDown\" });\n            },\n            ArrowUp() {\n              if (isHorizontal) return;\n              send({ type: \"ARROW_PREV\", key: \"ArrowUp\" });\n            },\n            ArrowLeft() {\n              if (isVertical) return;\n              send({ type: \"ARROW_PREV\", key: \"ArrowLeft\" });\n            },\n            ArrowRight() {\n              if (isVertical) return;\n              send({ type: \"ARROW_NEXT\", key: \"ArrowRight\" });\n            },\n            Home() {\n              send({ type: \"HOME\" });\n            },\n            End() {\n              send({ type: \"END\" });\n            }\n          };\n          let key = getEventKey(event, {\n            dir: prop(\"dir\"),\n            orientation: prop(\"orientation\")\n          });\n          const exec = keyMap[key];\n          if (exec) {\n            event.preventDefault();\n            exec(event);\n            return;\n          }\n        }\n      });\n    },\n    getTriggerState,\n    getTriggerProps(props2) {\n      const { value, disabled } = props2;\n      const triggerState = getTriggerState(props2);\n      return normalize.button({\n        ...parts.trigger.attrs,\n        role: \"tab\",\n        type: \"button\",\n        disabled,\n        dir: prop(\"dir\"),\n        \"data-orientation\": prop(\"orientation\"),\n        \"data-disabled\": dataAttr(disabled),\n        \"aria-disabled\": disabled,\n        \"data-value\": value,\n        \"aria-selected\": triggerState.selected,\n        \"data-selected\": dataAttr(triggerState.selected),\n        \"data-focus\": dataAttr(triggerState.focused),\n        \"aria-controls\": triggerState.selected ? getContentId(scope, value) : void 0,\n        \"data-ownedby\": getListId(scope),\n        \"data-ssr\": dataAttr(context.get(\"ssr\")),\n        id: getTriggerId(scope, value),\n        tabIndex: triggerState.selected && composite ? 0 : -1,\n        onFocus() {\n          send({ type: \"TAB_FOCUS\", value });\n        },\n        onBlur(event) {\n          const target = event.relatedTarget;\n          if (target?.getAttribute(\"role\") !== \"tab\") {\n            send({ type: \"TAB_BLUR\" });\n          }\n        },\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          if (isOpeningInNewTab(event)) return;\n          if (disabled) return;\n          if (isSafari()) {\n            event.currentTarget.focus();\n          }\n          send({ type: \"TAB_CLICK\", value });\n        }\n      });\n    },\n    getContentProps(props2) {\n      const { value } = props2;\n      const selected = context.get(\"value\") === value;\n      return normalize.element({\n        ...parts.content.attrs,\n        dir: prop(\"dir\"),\n        id: getContentId(scope, value),\n        tabIndex: composite ? 0 : -1,\n        \"aria-labelledby\": getTriggerId(scope, value),\n        role: \"tabpanel\",\n        \"data-ownedby\": getListId(scope),\n        \"data-selected\": dataAttr(selected),\n        \"data-orientation\": prop(\"orientation\"),\n        hidden: !selected\n      });\n    },\n    getIndicatorProps() {\n      const rect = context.get(\"indicatorRect\");\n      const rectIsEmpty = rect == null || rect.width === 0 && rect.height === 0 && rect.x === 0 && rect.y === 0;\n      return normalize.element({\n        id: getIndicatorId(scope),\n        ...parts.indicator.attrs,\n        dir: prop(\"dir\"),\n        \"data-orientation\": prop(\"orientation\"),\n        hidden: rectIsEmpty,\n        style: {\n          \"--transition-property\": \"left, right, top, bottom, width, height\",\n          \"--left\": toPx(rect?.x),\n          \"--top\": toPx(rect?.y),\n          \"--width\": toPx(rect?.width),\n          \"--height\": toPx(rect?.height),\n          position: \"absolute\",\n          willChange: \"var(--transition-property)\",\n          transitionProperty: \"var(--transition-property)\",\n          transitionDuration: \"var(--transition-duration, 150ms)\",\n          transitionTimingFunction: \"var(--transition-timing-function)\",\n          [isHorizontal ? \"left\" : \"top\"]: isHorizontal ? \"var(--left)\" : \"var(--top)\"\n        }\n      });\n    }\n  };\n}\nvar { createMachine } = setup();\nvar machine = createMachine({\n  props({ props: props2 }) {\n    return {\n      dir: \"ltr\",\n      orientation: \"horizontal\",\n      activationMode: \"automatic\",\n      loopFocus: true,\n      composite: true,\n      navigate(details) {\n        clickIfLink(details.node);\n      },\n      defaultValue: null,\n      ...props2\n    };\n  },\n  initialState() {\n    return \"idle\";\n  },\n  context({ prop, bindable }) {\n    return {\n      value: bindable(() => ({\n        defaultValue: prop(\"defaultValue\"),\n        value: prop(\"value\"),\n        onChange(value) {\n          prop(\"onValueChange\")?.({ value });\n        }\n      })),\n      focusedValue: bindable(() => ({\n        defaultValue: prop(\"value\") || prop(\"defaultValue\"),\n        sync: true,\n        onChange(value) {\n          prop(\"onFocusChange\")?.({ focusedValue: value });\n        }\n      })),\n      ssr: bindable(() => ({ defaultValue: true })),\n      indicatorRect: bindable(() => ({\n        defaultValue: null\n      }))\n    };\n  },\n  watch({ context, prop, track, action }) {\n    track([() => context.get(\"value\")], () => {\n      action([\"syncIndicatorRect\", \"syncTabIndex\", \"navigateIfNeeded\"]);\n    });\n    track([() => prop(\"dir\"), () => prop(\"orientation\")], () => {\n      action([\"syncIndicatorRect\"]);\n    });\n  },\n  on: {\n    SET_VALUE: {\n      actions: [\"setValue\"]\n    },\n    CLEAR_VALUE: {\n      actions: [\"clearValue\"]\n    },\n    SET_INDICATOR_RECT: {\n      actions: [\"setIndicatorRect\"]\n    },\n    SYNC_TAB_INDEX: {\n      actions: [\"syncTabIndex\"]\n    }\n  },\n  entry: [\"syncIndicatorRect\", \"syncTabIndex\", \"syncSsr\"],\n  exit: [\"cleanupObserver\"],\n  states: {\n    idle: {\n      on: {\n        TAB_FOCUS: {\n          target: \"focused\",\n          actions: [\"setFocusedValue\"]\n        },\n        TAB_CLICK: {\n          target: \"focused\",\n          actions: [\"setFocusedValue\", \"setValue\"]\n        }\n      }\n    },\n    focused: {\n      on: {\n        TAB_CLICK: {\n          actions: [\"setFocusedValue\", \"setValue\"]\n        },\n        ARROW_PREV: [\n          {\n            guard: \"selectOnFocus\",\n            actions: [\"focusPrevTab\", \"selectFocusedTab\"]\n          },\n          {\n            actions: [\"focusPrevTab\"]\n          }\n        ],\n        ARROW_NEXT: [\n          {\n            guard: \"selectOnFocus\",\n            actions: [\"focusNextTab\", \"selectFocusedTab\"]\n          },\n          {\n            actions: [\"focusNextTab\"]\n          }\n        ],\n        HOME: [\n          {\n            guard: \"selectOnFocus\",\n            actions: [\"focusFirstTab\", \"selectFocusedTab\"]\n          },\n          {\n            actions: [\"focusFirstTab\"]\n          }\n        ],\n        END: [\n          {\n            guard: \"selectOnFocus\",\n            actions: [\"focusLastTab\", \"selectFocusedTab\"]\n          },\n          {\n            actions: [\"focusLastTab\"]\n          }\n        ],\n        TAB_FOCUS: {\n          actions: [\"setFocusedValue\"]\n        },\n        TAB_BLUR: {\n          target: \"idle\",\n          actions: [\"clearFocusedValue\"]\n        }\n      }\n    }\n  },\n  implementations: {\n    guards: {\n      selectOnFocus: ({ prop }) => prop(\"activationMode\") === \"automatic\"\n    },\n    actions: {\n      selectFocusedTab({ context, prop }) {\n        raf(() => {\n          const focusedValue = context.get(\"focusedValue\");\n          if (!focusedValue) return;\n          const nullable = prop(\"deselectable\") && context.get(\"value\") === focusedValue;\n          const value = nullable ? null : focusedValue;\n          context.set(\"value\", value);\n        });\n      },\n      setFocusedValue({ context, event, flush }) {\n        if (event.value == null) return;\n        flush(() => {\n          context.set(\"focusedValue\", event.value);\n        });\n      },\n      clearFocusedValue({ context }) {\n        context.set(\"focusedValue\", null);\n      },\n      setValue({ context, event, prop }) {\n        const nullable = prop(\"deselectable\") && context.get(\"value\") === context.get(\"focusedValue\");\n        context.set(\"value\", nullable ? null : event.value);\n      },\n      clearValue({ context }) {\n        context.set(\"value\", null);\n      },\n      focusFirstTab({ scope }) {\n        raf(() => {\n          getFirstTriggerEl(scope)?.focus();\n        });\n      },\n      focusLastTab({ scope }) {\n        raf(() => {\n          getLastTriggerEl(scope)?.focus();\n        });\n      },\n      focusNextTab({ context, prop, scope, event }) {\n        const focusedValue = event.value ?? context.get(\"focusedValue\");\n        if (!focusedValue) return;\n        const triggerEl = getNextTriggerEl(scope, {\n          value: focusedValue,\n          loopFocus: prop(\"loopFocus\")\n        });\n        raf(() => {\n          if (prop(\"composite\")) {\n            triggerEl?.focus();\n          } else if (triggerEl?.dataset.value != null) {\n            context.set(\"focusedValue\", triggerEl.dataset.value);\n          }\n        });\n      },\n      focusPrevTab({ context, prop, scope, event }) {\n        const focusedValue = event.value ?? context.get(\"focusedValue\");\n        if (!focusedValue) return;\n        const triggerEl = getPrevTriggerEl(scope, {\n          value: focusedValue,\n          loopFocus: prop(\"loopFocus\")\n        });\n        raf(() => {\n          if (prop(\"composite\")) {\n            triggerEl?.focus();\n          } else if (triggerEl?.dataset.value != null) {\n            context.set(\"focusedValue\", triggerEl.dataset.value);\n          }\n        });\n      },\n      syncTabIndex({ context, scope }) {\n        raf(() => {\n          const value = context.get(\"value\");\n          if (!value) return;\n          const contentEl = getContentEl(scope, value);\n          if (!contentEl) return;\n          const focusables = getFocusables(contentEl);\n          if (focusables.length > 0) {\n            contentEl.removeAttribute(\"tabindex\");\n          } else {\n            contentEl.setAttribute(\"tabindex\", \"0\");\n          }\n        });\n      },\n      cleanupObserver({ refs }) {\n        const cleanup = refs.get(\"indicatorCleanup\");\n        if (cleanup) cleanup();\n      },\n      setIndicatorRect({ context, event, scope }) {\n        const value = event.id ?? context.get(\"value\");\n        const indicatorEl = getIndicatorEl(scope);\n        if (!indicatorEl) return;\n        if (!value) return;\n        const triggerEl = getTriggerEl(scope, value);\n        if (!triggerEl) return;\n        context.set(\"indicatorRect\", getRectByValue(scope, value));\n      },\n      syncSsr({ context }) {\n        context.set(\"ssr\", false);\n      },\n      syncIndicatorRect({ context, refs, scope }) {\n        const cleanup = refs.get(\"indicatorCleanup\");\n        if (cleanup) cleanup();\n        const indicatorEl = getIndicatorEl(scope);\n        if (!indicatorEl) return;\n        const exec = () => {\n          const triggerEl = getTriggerEl(scope, context.get(\"value\"));\n          if (!triggerEl) return;\n          const rect = getOffsetRect(triggerEl);\n          context.set(\"indicatorRect\", (prev) => isEqual(prev, rect) ? prev : rect);\n        };\n        exec();\n        const triggerEls = getElements(scope);\n        const indicatorCleanup = callAll(...triggerEls.map((el) => resizeObserverBorderBox.observe(el, exec)));\n        refs.set(\"indicatorCleanup\", indicatorCleanup);\n      },\n      navigateIfNeeded({ context, prop, scope }) {\n        const value = context.get(\"value\");\n        if (!value) return;\n        const triggerEl = getTriggerEl(scope, value);\n        if (isAnchorElement(triggerEl)) {\n          prop(\"navigate\")?.({ value, node: triggerEl, href: triggerEl.href });\n        }\n      }\n    }\n  }\n});\nvar props = createProps()([\n  \"activationMode\",\n  \"composite\",\n  \"deselectable\",\n  \"dir\",\n  \"getRootNode\",\n  \"id\",\n  \"ids\",\n  \"loopFocus\",\n  \"navigate\",\n  \"onFocusChange\",\n  \"onValueChange\",\n  \"orientation\",\n  \"translations\",\n  \"value\",\n  \"defaultValue\"\n]);\nvar splitProps = createSplitProps(props);\nvar triggerProps = createProps()([\"disabled\", \"value\"]);\nvar splitTriggerProps = createSplitProps(triggerProps);\nvar contentProps = createProps()([\"value\"]);\nvar splitContentProps = createSplitProps(contentProps);\n\nexport { anatomy, connect, contentProps, machine, props, splitContentProps, splitProps, splitTriggerProps, triggerProps };\n", "import * as tabs from \"@zag-js/tabs\";\nimport type { Direction, Orientation } from \"@zag-js/types\";\nimport { VanillaMachine, normalizeProps } from \"@zag-js/vanilla\";\nimport {\n  Component,\n  getString,\n  getBoolean,\n  generateId,\n  renderPart,\n  getPartIds,\n} from \"../lib\";\n\nexport class Tabs extends Component<tabs.Props, tabs.Api> {\n  initMachine(props: tabs.Props): VanillaMachine<any> {\n    return new VanillaMachine(tabs.machine, props);\n  }\n\n  initApi(): tabs.Api {\n    return tabs.connect(this.machine.service, normalizeProps);\n  }\n\n  render(): void {\n    renderPart(this.el, \"root\", this.api);\n\n    const list = this.el.querySelector<HTMLElement>('[data-part=\"list\"]');\n    if (list) renderPart(list, \"list\", this.api);\n\n    const triggers = Array.from(\n      this.el.querySelectorAll<HTMLElement>('[data-part=\"trigger\"]'),\n    );\n    const contents = Array.from(\n      this.el.querySelectorAll<HTMLElement>('[data-part=\"content\"]'),\n    );\n\n    triggers.forEach((triggerEl, index) => {\n      // Assign value to trigger\n      let value = getString(triggerEl, \"value\");\n      if (!value) {\n        value = generateId(triggerEl, `tab-${index}`);\n        triggerEl.setAttribute(\"data-value\", value);\n      }\n\n      renderPart(triggerEl, \"trigger\", this.api, {\n        value,\n        disabled: getBoolean(triggerEl, \"disabled\"),\n      });\n\n      // Assign the same value to the corresponding content in order\n      const contentEl = contents[index];\n      if (contentEl) {\n        contentEl.setAttribute(\"data-value\", value);\n        renderPart(contentEl, \"content\", this.api, { value });\n      }\n    });\n  }\n}\n\nexport function initTabs(\n  doc: HTMLElement | Document = document,\n  selector = \".tabs-js\",\n): void {\n  doc.querySelectorAll<HTMLElement>(selector).forEach((rootEl) => {\n    const triggers = rootEl.querySelectorAll<HTMLElement>(\n      '[data-part=\"trigger\"]',\n    );\n    const contents = rootEl.querySelectorAll<HTMLElement>(\n      '[data-part=\"content\"]',\n    );\n\n    // Generate values once in order\n    triggers.forEach((triggerEl, index) => {\n      let value = getString(triggerEl, \"value\");\n      if (!value) {\n        value = generateId(triggerEl, `tab-${index}`);\n        triggerEl.setAttribute(\"data-value\", value);\n      }\n\n      const contentEl = contents[index];\n      if (contentEl) {\n        contentEl.setAttribute(\"data-value\", value);\n      }\n    });\n\n    const tabsInstance = new Tabs(rootEl, {\n      id: generateId(rootEl, \"tabs\"),\n      value: getString(rootEl, \"value\"),\n      defaultValue: getString(rootEl, \"defaultValue\"),\n      loopFocus: getBoolean(rootEl, \"loopFocus\"),\n      orientation: getString<Orientation>(rootEl, \"orientation\", [\n        \"horizontal\",\n        \"vertical\",\n      ]),\n      dir: getString<Direction>(rootEl, \"dir\", [\"ltr\", \"rtl\"]),\n      activationMode: getString(rootEl, \"activationMode\", [\n        \"manual\",\n        \"automatic\",\n      ]),\n      composite: getBoolean(rootEl, \"composite\"),\n      deselectable: getBoolean(rootEl, \"deselectable\"),\n      ids: getPartIds(rootEl, [\"root\", \"list\", \"trigger\", \"content\"]),\n      translations: {\n        listLabel: getString(rootEl, \"listLabelTranslation\"),\n      },\n      onFocusChange(details) {\n        const eventName = getString(rootEl, \"onFocusChange\");\n        if (eventName)\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n      },\n      onValueChange(details) {\n        const eventName = getString(rootEl, \"onValueChange\");\n        if (eventName)\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n      },\n    });\n\n    tabsInstance.init();\n\n    rootEl.addEventListener(\"tabs:set-value\", (event) => {\n      const { value } = (event as CustomEvent<{ value: string }>).detail;\n      if (tabsInstance.api.value !== value && value !== null) {\n        tabsInstance.api.setValue(value);\n      }\n    });\n\n    rootEl.addEventListener(\"tabs:value\", (event) => {\n      const callback = (\n        event as CustomEvent<{ callback: (value: string) => void }>\n      ).detail.callback;\n      if (callback && tabsInstance.api.value !== null) {\n        callback(tabsInstance.api.value);\n      }\n    });\n\n    rootEl.addEventListener(\"tabs:focused-value\", (event) => {\n      const callback = (\n        event as CustomEvent<{ callback: (value: string | null) => void }>\n      ).detail.callback;\n      if (callback) callback(tabsInstance.api.focusedValue);\n    });\n  });\n}\n", "import { createAnatomy } from '@zag-js/anatomy';\nimport { setRafTimeout, setRafInterval, clampValue, createSplitProps, match, isObject } from '@zag-js/utils';\nimport { createMachine, memo } from '@zag-js/core';\nimport { createProps } from '@zag-js/types';\n\n// src/timer.anatomy.ts\nvar anatomy = createAnatomy(\"timer\").parts(\n  \"root\",\n  \"area\",\n  \"control\",\n  \"item\",\n  \"itemValue\",\n  \"itemLabel\",\n  \"actionTrigger\",\n  \"separator\"\n);\nvar parts = anatomy.build();\n\n// src/timer.dom.ts\nvar getRootId = (ctx) => ctx.ids?.root ?? `timer:${ctx.id}:root`;\nvar getAreaId = (ctx) => ctx.ids?.area ?? `timer:${ctx.id}:area`;\n\n// src/timer.connect.ts\nvar validActions = /* @__PURE__ */ new Set([\"start\", \"pause\", \"resume\", \"reset\", \"restart\"]);\nfunction connect(service, normalize) {\n  const { state, send, computed, scope } = service;\n  const running = state.matches(\"running\");\n  const paused = state.matches(\"paused\");\n  const time = computed(\"time\");\n  const formattedTime = computed(\"formattedTime\");\n  const progressPercent = computed(\"progressPercent\");\n  return {\n    running,\n    paused,\n    time,\n    formattedTime,\n    progressPercent,\n    start() {\n      send({ type: \"START\" });\n    },\n    pause() {\n      send({ type: \"PAUSE\" });\n    },\n    resume() {\n      send({ type: \"RESUME\" });\n    },\n    reset() {\n      send({ type: \"RESET\" });\n    },\n    restart() {\n      send({ type: \"RESTART\" });\n    },\n    getRootProps() {\n      return normalize.element({\n        id: getRootId(scope),\n        ...parts.root.attrs\n      });\n    },\n    getAreaProps() {\n      return normalize.element({\n        role: \"timer\",\n        id: getAreaId(scope),\n        \"aria-label\": `${time.days} days ${formattedTime.hours}:${formattedTime.minutes}:${formattedTime.seconds}`,\n        \"aria-atomic\": true,\n        ...parts.area.attrs\n      });\n    },\n    getControlProps() {\n      return normalize.element({\n        ...parts.control.attrs\n      });\n    },\n    getItemProps(props2) {\n      const value = time[props2.type];\n      return normalize.element({\n        ...parts.item.attrs,\n        \"data-type\": props2.type,\n        style: {\n          \"--value\": value\n        }\n      });\n    },\n    getItemLabelProps(props2) {\n      return normalize.element({\n        ...parts.itemLabel.attrs,\n        \"data-type\": props2.type\n      });\n    },\n    getItemValueProps(props2) {\n      return normalize.element({\n        ...parts.itemValue.attrs,\n        \"data-type\": props2.type\n      });\n    },\n    getSeparatorProps() {\n      return normalize.element({\n        \"aria-hidden\": true,\n        ...parts.separator.attrs\n      });\n    },\n    getActionTriggerProps(props2) {\n      if (!validActions.has(props2.action)) {\n        throw new Error(\n          `[zag-js] Invalid action: ${props2.action}. Must be one of: ${Array.from(validActions).join(\", \")}`\n        );\n      }\n      return normalize.button({\n        ...parts.actionTrigger.attrs,\n        hidden: match(props2.action, {\n          start: () => running || paused,\n          pause: () => !running,\n          reset: () => !running && !paused,\n          resume: () => !paused,\n          restart: () => false\n        }),\n        type: \"button\",\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          send({ type: props2.action.toUpperCase() });\n        }\n      });\n    }\n  };\n}\nvar machine = createMachine({\n  props({ props: props2 }) {\n    validateProps(props2);\n    return {\n      interval: 1e3,\n      startMs: 0,\n      ...props2\n    };\n  },\n  initialState({ prop }) {\n    return prop(\"autoStart\") ? \"running\" : \"idle\";\n  },\n  context({ prop, bindable }) {\n    return {\n      currentMs: bindable(() => ({\n        defaultValue: prop(\"startMs\")\n      }))\n    };\n  },\n  watch({ track, send, prop }) {\n    track([() => prop(\"startMs\")], () => {\n      send({ type: \"RESTART\" });\n    });\n  },\n  on: {\n    RESTART: {\n      target: \"running:temp\",\n      actions: [\"resetTime\"]\n    }\n  },\n  computed: {\n    time: ({ context }) => msToTime(context.get(\"currentMs\")),\n    formattedTime: ({ computed }) => formatTime(computed(\"time\")),\n    progressPercent: memo(\n      ({ context, prop }) => [context.get(\"currentMs\"), prop(\"targetMs\"), prop(\"startMs\"), prop(\"countdown\")],\n      ([currentMs, targetMs = 0, startMs, countdown]) => {\n        const percent = countdown ? toPercent(currentMs, targetMs, startMs) : toPercent(currentMs, startMs, targetMs);\n        return clampValue(percent, 0, 1);\n      }\n    )\n  },\n  states: {\n    idle: {\n      on: {\n        START: {\n          target: \"running\"\n        },\n        RESET: {\n          actions: [\"resetTime\"]\n        }\n      }\n    },\n    \"running:temp\": {\n      effects: [\"waitForNextTick\"],\n      on: {\n        CONTINUE: {\n          target: \"running\"\n        }\n      }\n    },\n    running: {\n      effects: [\"keepTicking\"],\n      on: {\n        PAUSE: {\n          target: \"paused\"\n        },\n        TICK: [\n          {\n            target: \"idle\",\n            guard: \"hasReachedTarget\",\n            actions: [\"invokeOnComplete\"]\n          },\n          {\n            actions: [\"updateTime\", \"invokeOnTick\"]\n          }\n        ],\n        RESET: {\n          actions: [\"resetTime\"]\n        }\n      }\n    },\n    paused: {\n      on: {\n        RESUME: {\n          target: \"running\"\n        },\n        RESET: {\n          target: \"idle\",\n          actions: [\"resetTime\"]\n        }\n      }\n    }\n  },\n  implementations: {\n    effects: {\n      keepTicking({ prop, send }) {\n        return setRafInterval(({ deltaMs }) => {\n          send({ type: \"TICK\", deltaMs });\n        }, prop(\"interval\"));\n      },\n      waitForNextTick({ send }) {\n        return setRafTimeout(() => {\n          send({ type: \"CONTINUE\" });\n        }, 0);\n      }\n    },\n    actions: {\n      updateTime({ context, prop, event }) {\n        const sign = prop(\"countdown\") ? -1 : 1;\n        const deltaMs = roundToInterval(event.deltaMs, prop(\"interval\"));\n        context.set(\"currentMs\", (prev) => {\n          const newValue = prev + sign * deltaMs;\n          let targetMs = prop(\"targetMs\");\n          if (targetMs == null && prop(\"countdown\")) targetMs = 0;\n          if (prop(\"countdown\") && targetMs != null) {\n            return Math.max(newValue, targetMs);\n          } else if (!prop(\"countdown\") && targetMs != null) {\n            return Math.min(newValue, targetMs);\n          }\n          return newValue;\n        });\n      },\n      resetTime({ context, prop }) {\n        let targetMs = prop(\"targetMs\");\n        if (targetMs == null && prop(\"countdown\")) targetMs = 0;\n        context.set(\"currentMs\", prop(\"startMs\") ?? 0);\n      },\n      invokeOnTick({ context, prop, computed }) {\n        prop(\"onTick\")?.({\n          value: context.get(\"currentMs\"),\n          time: computed(\"time\"),\n          formattedTime: computed(\"formattedTime\")\n        });\n      },\n      invokeOnComplete({ prop }) {\n        prop(\"onComplete\")?.();\n      }\n    },\n    guards: {\n      hasReachedTarget: ({ context, prop }) => {\n        let targetMs = prop(\"targetMs\");\n        if (targetMs == null && prop(\"countdown\")) targetMs = 0;\n        if (targetMs == null) return false;\n        const currentMs = context.get(\"currentMs\");\n        return prop(\"countdown\") ? currentMs <= targetMs : currentMs >= targetMs;\n      }\n    }\n  }\n});\nfunction msToTime(ms) {\n  const time = Math.max(0, ms);\n  const milliseconds = time % 1e3;\n  const seconds = Math.floor(time / 1e3) % 60;\n  const minutes = Math.floor(time / (1e3 * 60)) % 60;\n  const hours = Math.floor(time / (1e3 * 60 * 60)) % 24;\n  const days = Math.floor(time / (1e3 * 60 * 60 * 24));\n  return {\n    days,\n    hours,\n    minutes,\n    seconds,\n    milliseconds\n  };\n}\nfunction toPercent(value, minValue, maxValue) {\n  const range = maxValue - minValue;\n  if (range === 0) return 0;\n  return (value - minValue) / range;\n}\nfunction padStart(num, size = 2) {\n  return num.toString().padStart(size, \"0\");\n}\nfunction roundToInterval(value, interval) {\n  return Math.floor(value / interval) * interval;\n}\nfunction formatTime(time) {\n  const { days, hours, minutes, seconds } = time;\n  return {\n    days: padStart(days),\n    hours: padStart(hours),\n    minutes: padStart(minutes),\n    seconds: padStart(seconds),\n    milliseconds: padStart(time.milliseconds, 3)\n  };\n}\nfunction validateProps(props2) {\n  const { startMs, targetMs, countdown, interval } = props2;\n  if (interval != null && (typeof interval !== \"number\" || interval <= 0)) {\n    throw new Error(`[timer] Invalid interval: ${interval}. Must be a positive number.`);\n  }\n  if (startMs != null && (typeof startMs !== \"number\" || startMs < 0)) {\n    throw new Error(`[timer] Invalid startMs: ${startMs}. Must be a non-negative number.`);\n  }\n  if (targetMs != null && (typeof targetMs !== \"number\" || targetMs < 0)) {\n    throw new Error(`[timer] Invalid targetMs: ${targetMs}. Must be a non-negative number.`);\n  }\n  if (countdown && startMs != null && targetMs != null) {\n    if (startMs <= targetMs) {\n      throw new Error(\n        `[timer] Invalid countdown configuration: startMs (${startMs}) must be greater than targetMs (${targetMs}).`\n      );\n    }\n  }\n  if (!countdown && startMs != null && targetMs != null) {\n    if (startMs >= targetMs) {\n      throw new Error(\n        `[timer] Invalid stopwatch configuration: startMs (${startMs}) must be less than targetMs (${targetMs}).`\n      );\n    }\n  }\n  if (countdown && targetMs == null && startMs != null && startMs <= 0) {\n    throw new Error(\n      `[timer] Invalid countdown configuration: startMs (${startMs}) must be greater than 0 when no targetMs is provided.`\n    );\n  }\n}\nvar segments = /* @__PURE__ */ new Set([\"days\", \"hours\", \"minutes\", \"seconds\"]);\nfunction isTimeSegment(date) {\n  return isObject(date) && Object.keys(date).some((key) => segments.has(key));\n}\nfunction parse(date) {\n  if (typeof date === \"string\") {\n    return new Date(date).getTime();\n  }\n  if (isTimeSegment(date)) {\n    const { days = 0, hours = 0, minutes = 0, seconds = 0, milliseconds = 0 } = date;\n    const value = (days * 24 * 60 * 60 + hours * 60 * 60 + minutes * 60 + seconds) * 1e3;\n    return value + milliseconds;\n  }\n  throw new Error(\"Invalid date\");\n}\nvar props = createProps()([\n  \"autoStart\",\n  \"countdown\",\n  \"getRootNode\",\n  \"id\",\n  \"ids\",\n  \"interval\",\n  \"onComplete\",\n  \"onTick\",\n  \"startMs\",\n  \"targetMs\"\n]);\nvar splitProps = createSplitProps(props);\n\nexport { anatomy, connect, machine, parse, props, splitProps };\n", "import * as timer from \"@zag-js/timer\";\nimport { VanillaMachine, normalizeProps } from \"@zag-js/vanilla\";\n\nimport {\n  Component,\n  getString,\n  getBoolean,\n  getNumber,\n  generateId,\n  renderPart,\n} from \"../lib\";\n\ndeclare global {\n  var IS_PRERENDER: boolean;\n}\n\n/** Flexible parser for user input dates or times */\nfunction parseFlexibleDate(input: string | Partial<timer.Time>): number {\n  if (!input) throw new Error(\"Invalid date\");\n\n  if (typeof input === \"string\") {\n    // If it contains a space, treat as local time\n    if (input.includes(\" \")) {\n      const t = new Date(input).getTime();\n      if (isNaN(t)) throw new Error(`Unable to parse date: ${input}`);\n      return t;\n    }\n\n    // Otherwise parse as-is (handles ISO strings with timezone info)\n    const t = new Date(input).getTime();\n    if (isNaN(t)) throw new Error(`Unable to parse date: ${input}`);\n    return t;\n  }\n\n  if (typeof input === \"object\") {\n    const {\n      days = 0,\n      hours = 0,\n      minutes = 0,\n      seconds = 0,\n      milliseconds = 0,\n    } = input;\n    return (\n      ((days * 24 + hours) * 60 * 60 + minutes * 60 + seconds) * 1000 +\n      milliseconds\n    );\n  }\n\n  throw new Error(\"Invalid input\");\n}\n\nexport class Timer extends Component<timer.Props, timer.Api> {\n  initMachine(props: timer.Props): VanillaMachine<any> {\n    return new VanillaMachine(timer.machine, props);\n  }\n\n  initApi(): timer.Api {\n    return timer.connect(this.machine.service, normalizeProps);\n  }\n\n  render() {\n    const parts = [\"root\", \"area\", \"control\", \"separator\"];\n    for (const part of parts) renderPart(this.el, part, this.api);\n\n    const itemElements =\n      this.el.querySelectorAll<HTMLElement>('[data-part=\"item\"]');\n    itemElements.forEach((itemEl) => {\n      const type = getString(itemEl, \"type\");\n      if (type) {\n        renderPart(itemEl, \"item\", this.api, { type });\n      }\n    });\n\n    const actionTriggerElements = this.el.querySelectorAll<HTMLElement>(\n      '[data-part=\"action-trigger\"]',\n    );\n    actionTriggerElements.forEach((actionEl) => {\n      const action = getString(actionEl, \"action\");\n      if (action) {\n        renderPart(actionEl, \"action-trigger\", this.api, { action: \"string\" });\n      }\n    });\n  }\n}\n\nexport function initTimer(\n  doc: HTMLElement | Document = document,\n  selector = \".timer-js\",\n): void {\n  doc.querySelectorAll<HTMLElement>(selector).forEach((rootEl) => {\n    const countdown = getBoolean(rootEl, \"countdown\") ?? false;\n\n    // Check for date string attributes first\n    const startAttr = getString(rootEl, \"start\");\n    const targetAttr = getString(rootEl, \"target\");\n\n    let startMs: number | undefined;\n    let targetMs: number | undefined;\n\n    // Priority 1: Parse date strings if provided\n    if (startAttr) {\n      startMs = parseFlexibleDate(startAttr);\n    }\n    if (targetAttr) {\n      targetMs = parseFlexibleDate(targetAttr);\n    }\n\n    // Priority 2: Fall back to individual time unit attributes\n    if (!startMs) {\n      const timeObj = {\n        days: getNumber(rootEl, \"days\") || 0,\n        hours: getNumber(rootEl, \"hours\") || 0,\n        minutes: getNumber(rootEl, \"minutes\") || 0,\n        seconds: getNumber(rootEl, \"seconds\") || 0,\n        milliseconds: getNumber(rootEl, \"milliseconds\") || 0,\n      };\n      // Only parse if at least one value is non-zero\n      if (Object.values(timeObj).some((v) => v > 0)) {\n        startMs = parseFlexibleDate(timeObj);\n      }\n    }\n\n    if (!targetMs) {\n      const timeObj = {\n        days: getNumber(rootEl, \"daysTarget\") || 0,\n        hours: getNumber(rootEl, \"hoursTarget\") || 0,\n        minutes: getNumber(rootEl, \"minutesTarget\") || 0,\n        seconds: getNumber(rootEl, \"secondsTarget\") || 0,\n        milliseconds: getNumber(rootEl, \"millisecondsTarget\") || 0,\n      };\n      // Only parse if at least one value is non-zero\n      if (Object.values(timeObj).some((v) => v > 0)) {\n        targetMs = parseFlexibleDate(timeObj);\n      }\n    }\n\n    // Handle countdown to future date logic\n    if (countdown && targetAttr && !startAttr) {\n      // Countdown TO a future date: calculate duration from now\n      const futureMs = parseFlexibleDate(targetAttr);\n      const nowMs = Date.now();\n\n      if (futureMs > nowMs) {\n        // Set startMs to the duration between now and target\n        startMs = futureMs - nowMs;\n        targetMs = 0; // Count down to zero\n      } else {\n        // Target is in the past\n        startMs = 0;\n        targetMs = 0;\n      }\n    }\n\n    const timerComponent = new Timer(rootEl, {\n      id: generateId(rootEl, \"timer\"),\n      countdown: countdown,\n      autoStart: getBoolean(rootEl, \"autoStart\") ?? false,\n      interval: getNumber(rootEl, \"interval\") || 1000,\n      startMs: startMs,\n      targetMs: targetMs,\n      onTick(details) {\n        if (globalThis.IS_PRERENDER) return;\n        const eventName = getString(rootEl, \"onTick\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onComplete() {\n        if (globalThis.IS_PRERENDER) return;\n        const eventName = getString(rootEl, \"onComplete\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName));\n        }\n      },\n    });\n\n    if (!globalThis.IS_PRERENDER) {\n      timerComponent.init();\n    } else {\n      timerComponent.render();\n    }\n  });\n}\n", "import { addDomEvent, AnimationFrame, raf, contains, dataAttr, MAX_Z_INDEX } from '@zag-js/dom-query';\nimport { createAnatomy } from '@zag-js/anatomy';\nimport { setup, createGuards, createMachine as createMachine$1 } from '@zag-js/core';\nimport { trackDismissableBranch } from '@zag-js/dismissable';\nimport { uuid, setRafTimeout, ensureProps, warn, runIfFn, compact } from '@zag-js/utils';\n\n// src/toast-group.connect.ts\nvar anatomy = createAnatomy(\"toast\").parts(\n  \"group\",\n  \"root\",\n  \"title\",\n  \"description\",\n  \"actionTrigger\",\n  \"closeTrigger\"\n);\nvar parts = anatomy.build();\n\n// src/toast.dom.ts\nvar getRegionId = (placement) => `toast-group:${placement}`;\nvar getRegionEl = (ctx, placement) => ctx.getById(`toast-group:${placement}`);\nvar getRootId = (ctx) => `toast:${ctx.id}`;\nvar getRootEl = (ctx) => ctx.getById(getRootId(ctx));\nvar getTitleId = (ctx) => `toast:${ctx.id}:title`;\nvar getDescriptionId = (ctx) => `toast:${ctx.id}:description`;\nvar getCloseTriggerId = (ctx) => `toast${ctx.id}:close`;\nvar defaultTimeouts = {\n  info: 5e3,\n  error: 5e3,\n  success: 2e3,\n  loading: Infinity,\n  DEFAULT: 5e3\n};\nfunction getToastDuration(duration, type) {\n  return duration ?? defaultTimeouts[type] ?? defaultTimeouts.DEFAULT;\n}\nvar getOffsets = (offsets) => typeof offsets === \"string\" ? { left: offsets, right: offsets, bottom: offsets, top: offsets } : offsets;\nfunction getGroupPlacementStyle(service, placement) {\n  const { prop, computed, context } = service;\n  const { offsets, gap } = prop(\"store\").attrs;\n  const heights = context.get(\"heights\");\n  const computedOffset = getOffsets(offsets);\n  const rtl = prop(\"dir\") === \"rtl\";\n  const computedPlacement = placement.replace(\"-start\", rtl ? \"-right\" : \"-left\").replace(\"-end\", rtl ? \"-left\" : \"-right\");\n  const isRighty = computedPlacement.includes(\"right\");\n  const isLefty = computedPlacement.includes(\"left\");\n  const styles = {\n    position: \"fixed\",\n    pointerEvents: computed(\"count\") > 0 ? void 0 : \"none\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    \"--gap\": `${gap}px`,\n    \"--first-height\": `${heights[0]?.height || 0}px`,\n    \"--viewport-offset-left\": computedOffset.left,\n    \"--viewport-offset-right\": computedOffset.right,\n    \"--viewport-offset-top\": computedOffset.top,\n    \"--viewport-offset-bottom\": computedOffset.bottom,\n    zIndex: MAX_Z_INDEX\n  };\n  let alignItems = \"center\";\n  if (isRighty) alignItems = \"flex-end\";\n  if (isLefty) alignItems = \"flex-start\";\n  styles.alignItems = alignItems;\n  if (computedPlacement.includes(\"top\")) {\n    const offset = computedOffset.top;\n    styles.top = `max(env(safe-area-inset-top, 0px), ${offset})`;\n  }\n  if (computedPlacement.includes(\"bottom\")) {\n    const offset = computedOffset.bottom;\n    styles.bottom = `max(env(safe-area-inset-bottom, 0px), ${offset})`;\n  }\n  if (!computedPlacement.includes(\"left\")) {\n    const offset = computedOffset.right;\n    styles.insetInlineEnd = `calc(env(safe-area-inset-right, 0px) + ${offset})`;\n  }\n  if (!computedPlacement.includes(\"right\")) {\n    const offset = computedOffset.left;\n    styles.insetInlineStart = `calc(env(safe-area-inset-left, 0px) + ${offset})`;\n  }\n  return styles;\n}\nfunction getPlacementStyle(service, visible) {\n  const { prop, context, computed } = service;\n  const parent = prop(\"parent\");\n  const placement = parent.computed(\"placement\");\n  const { gap } = parent.prop(\"store\").attrs;\n  const [side] = placement.split(\"-\");\n  const mounted = context.get(\"mounted\");\n  const remainingTime = context.get(\"remainingTime\");\n  const height = computed(\"height\");\n  const frontmost = computed(\"frontmost\");\n  const sibling = !frontmost;\n  const overlap = !prop(\"stacked\");\n  const stacked = prop(\"stacked\");\n  const type = prop(\"type\");\n  const duration = type === \"loading\" ? Number.MAX_SAFE_INTEGER : remainingTime;\n  const offset = computed(\"heightIndex\") * gap + computed(\"heightBefore\");\n  const styles = {\n    position: \"absolute\",\n    pointerEvents: \"auto\",\n    \"--opacity\": \"0\",\n    \"--remove-delay\": `${prop(\"removeDelay\")}ms`,\n    \"--duration\": `${duration}ms`,\n    \"--initial-height\": `${height}px`,\n    \"--offset\": `${offset}px`,\n    \"--index\": prop(\"index\"),\n    \"--z-index\": computed(\"zIndex\"),\n    \"--lift-amount\": \"calc(var(--lift) * var(--gap))\",\n    \"--y\": \"100%\",\n    \"--x\": \"0\"\n  };\n  const assign = (overrides) => Object.assign(styles, overrides);\n  if (side === \"top\") {\n    assign({\n      top: \"0\",\n      \"--sign\": \"-1\",\n      \"--y\": \"-100%\",\n      \"--lift\": \"1\"\n    });\n  } else if (side === \"bottom\") {\n    assign({\n      bottom: \"0\",\n      \"--sign\": \"1\",\n      \"--y\": \"100%\",\n      \"--lift\": \"-1\"\n    });\n  }\n  if (mounted) {\n    assign({\n      \"--y\": \"0\",\n      \"--opacity\": \"1\"\n    });\n    if (stacked) {\n      assign({\n        \"--y\": \"calc(var(--lift) * var(--offset))\",\n        \"--height\": \"var(--initial-height)\"\n      });\n    }\n  }\n  if (!visible) {\n    assign({\n      \"--opacity\": \"0\",\n      pointerEvents: \"none\"\n    });\n  }\n  if (sibling && overlap) {\n    assign({\n      \"--base-scale\": \"var(--index) * 0.05 + 1\",\n      \"--y\": \"calc(var(--lift-amount) * var(--index))\",\n      \"--scale\": \"calc(-1 * var(--base-scale))\",\n      \"--height\": \"var(--first-height)\"\n    });\n    if (!visible) {\n      assign({\n        \"--y\": \"calc(var(--sign) * 40%)\"\n      });\n    }\n  }\n  if (sibling && stacked && !visible) {\n    assign({\n      \"--y\": \"calc(var(--lift) * var(--offset) + var(--lift) * -100%)\"\n    });\n  }\n  if (frontmost && !visible) {\n    assign({\n      \"--y\": \"calc(var(--lift) * -100%)\"\n    });\n  }\n  return styles;\n}\nfunction getGhostBeforeStyle(service, visible) {\n  const { computed } = service;\n  const styles = {\n    position: \"absolute\",\n    inset: \"0\",\n    scale: \"1 2\",\n    pointerEvents: visible ? \"none\" : \"auto\"\n  };\n  const assign = (overrides) => Object.assign(styles, overrides);\n  if (computed(\"frontmost\") && !visible) {\n    assign({\n      height: \"calc(var(--initial-height) + 80%)\"\n    });\n  }\n  return styles;\n}\nfunction getGhostAfterStyle() {\n  return {\n    position: \"absolute\",\n    left: \"0\",\n    height: \"calc(var(--gap) + 2px)\",\n    bottom: \"100%\",\n    width: \"100%\"\n  };\n}\n\n// src/toast-group.connect.ts\nfunction groupConnect(service, normalize) {\n  const { context, prop, send, refs, computed } = service;\n  return {\n    getCount() {\n      return context.get(\"toasts\").length;\n    },\n    getToasts() {\n      return context.get(\"toasts\");\n    },\n    getGroupProps(options = {}) {\n      const { label = \"Notifications\" } = options;\n      const { hotkey } = prop(\"store\").attrs;\n      const hotkeyLabel = hotkey.join(\"+\").replace(/Key/g, \"\").replace(/Digit/g, \"\");\n      const placement = computed(\"placement\");\n      const [side, align = \"center\"] = placement.split(\"-\");\n      return normalize.element({\n        ...parts.group.attrs,\n        dir: prop(\"dir\"),\n        tabIndex: -1,\n        \"aria-label\": `${placement} ${label} ${hotkeyLabel}`,\n        id: getRegionId(placement),\n        \"data-placement\": placement,\n        \"data-side\": side,\n        \"data-align\": align,\n        \"aria-live\": \"polite\",\n        role: \"region\",\n        style: getGroupPlacementStyle(service, placement),\n        onMouseEnter() {\n          if (refs.get(\"ignoreMouseTimer\").isActive()) return;\n          send({ type: \"REGION.POINTER_ENTER\", placement });\n        },\n        onMouseMove() {\n          if (refs.get(\"ignoreMouseTimer\").isActive()) return;\n          send({ type: \"REGION.POINTER_ENTER\", placement });\n        },\n        onMouseLeave() {\n          if (refs.get(\"ignoreMouseTimer\").isActive()) return;\n          send({ type: \"REGION.POINTER_LEAVE\", placement });\n        },\n        onFocus(event) {\n          send({ type: \"REGION.FOCUS\", target: event.relatedTarget });\n        },\n        onBlur(event) {\n          if (refs.get(\"isFocusWithin\") && !contains(event.currentTarget, event.relatedTarget)) {\n            queueMicrotask(() => send({ type: \"REGION.BLUR\" }));\n          }\n        }\n      });\n    },\n    subscribe(fn) {\n      const store = prop(\"store\");\n      return store.subscribe(() => fn(context.get(\"toasts\")));\n    }\n  };\n}\nvar { guards, createMachine } = setup();\nvar { and } = guards;\nvar groupMachine = createMachine({\n  props({ props }) {\n    return {\n      dir: \"ltr\",\n      id: uuid(),\n      ...props,\n      store: props.store\n    };\n  },\n  initialState({ prop }) {\n    return prop(\"store\").attrs.overlap ? \"overlap\" : \"stack\";\n  },\n  refs() {\n    return {\n      lastFocusedEl: null,\n      isFocusWithin: false,\n      isPointerWithin: false,\n      ignoreMouseTimer: AnimationFrame.create(),\n      dismissableCleanup: void 0\n    };\n  },\n  context({ bindable }) {\n    return {\n      toasts: bindable(() => ({\n        defaultValue: [],\n        sync: true,\n        hash: (toasts) => toasts.map((t) => t.id).join(\",\")\n      })),\n      heights: bindable(() => ({\n        defaultValue: [],\n        sync: true\n      }))\n    };\n  },\n  computed: {\n    count: ({ context }) => context.get(\"toasts\").length,\n    overlap: ({ prop }) => prop(\"store\").attrs.overlap,\n    placement: ({ prop }) => prop(\"store\").attrs.placement\n  },\n  effects: [\"subscribeToStore\", \"trackDocumentVisibility\", \"trackHotKeyPress\"],\n  watch({ track, context, action }) {\n    track([() => context.hash(\"toasts\")], () => {\n      queueMicrotask(() => {\n        action([\"collapsedIfEmpty\", \"setDismissableBranch\"]);\n      });\n    });\n  },\n  exit: [\"clearDismissableBranch\", \"clearLastFocusedEl\", \"clearMouseEventTimer\"],\n  on: {\n    \"DOC.HOTKEY\": {\n      actions: [\"focusRegionEl\"]\n    },\n    \"REGION.BLUR\": [\n      {\n        guard: and(\"isOverlapping\", \"isPointerOut\"),\n        target: \"overlap\",\n        actions: [\"collapseToasts\", \"resumeToasts\", \"restoreFocusIfPointerOut\"]\n      },\n      {\n        guard: \"isPointerOut\",\n        target: \"stack\",\n        actions: [\"resumeToasts\", \"restoreFocusIfPointerOut\"]\n      },\n      {\n        actions: [\"clearFocusWithin\"]\n      }\n    ],\n    \"TOAST.REMOVE\": {\n      actions: [\"removeToast\", \"removeHeight\", \"ignoreMouseEventsTemporarily\"]\n    },\n    \"TOAST.PAUSE\": {\n      actions: [\"pauseToasts\"]\n    }\n  },\n  states: {\n    stack: {\n      on: {\n        \"REGION.POINTER_LEAVE\": [\n          {\n            guard: \"isOverlapping\",\n            target: \"overlap\",\n            actions: [\"clearPointerWithin\", \"resumeToasts\", \"collapseToasts\"]\n          },\n          {\n            actions: [\"clearPointerWithin\", \"resumeToasts\"]\n          }\n        ],\n        \"REGION.OVERLAP\": {\n          target: \"overlap\",\n          actions: [\"collapseToasts\"]\n        },\n        \"REGION.FOCUS\": {\n          actions: [\"setLastFocusedEl\", \"pauseToasts\"]\n        },\n        \"REGION.POINTER_ENTER\": {\n          actions: [\"setPointerWithin\", \"pauseToasts\"]\n        }\n      }\n    },\n    overlap: {\n      on: {\n        \"REGION.STACK\": {\n          target: \"stack\",\n          actions: [\"expandToasts\"]\n        },\n        \"REGION.POINTER_ENTER\": {\n          target: \"stack\",\n          actions: [\"setPointerWithin\", \"pauseToasts\", \"expandToasts\"]\n        },\n        \"REGION.FOCUS\": {\n          target: \"stack\",\n          actions: [\"setLastFocusedEl\", \"pauseToasts\", \"expandToasts\"]\n        }\n      }\n    }\n  },\n  implementations: {\n    guards: {\n      isOverlapping: ({ computed }) => computed(\"overlap\"),\n      isPointerOut: ({ refs }) => !refs.get(\"isPointerWithin\")\n    },\n    effects: {\n      subscribeToStore({ context, prop }) {\n        return prop(\"store\").subscribe((toast) => {\n          if (toast.dismiss) {\n            context.set(\"toasts\", (prev) => prev.filter((t) => t.id !== toast.id));\n            return;\n          }\n          context.set(\"toasts\", (prev) => {\n            const index = prev.findIndex((t) => t.id === toast.id);\n            if (index !== -1) {\n              return [...prev.slice(0, index), { ...prev[index], ...toast }, ...prev.slice(index + 1)];\n            }\n            return [toast, ...prev];\n          });\n        });\n      },\n      trackHotKeyPress({ prop, send }) {\n        const handleKeyDown = (event) => {\n          const { hotkey } = prop(\"store\").attrs;\n          const isHotkeyPressed = hotkey.every((key) => event[key] || event.code === key);\n          if (!isHotkeyPressed) return;\n          send({ type: \"DOC.HOTKEY\" });\n        };\n        return addDomEvent(document, \"keydown\", handleKeyDown, { capture: true });\n      },\n      trackDocumentVisibility({ prop, send, scope }) {\n        const { pauseOnPageIdle } = prop(\"store\").attrs;\n        if (!pauseOnPageIdle) return;\n        const doc = scope.getDoc();\n        return addDomEvent(doc, \"visibilitychange\", () => {\n          const isHidden = doc.visibilityState === \"hidden\";\n          send({ type: isHidden ? \"PAUSE_ALL\" : \"RESUME_ALL\" });\n        });\n      }\n    },\n    actions: {\n      setDismissableBranch({ refs, context, computed, scope }) {\n        const toasts = context.get(\"toasts\");\n        const placement = computed(\"placement\");\n        const hasToasts = toasts.length > 0;\n        if (!hasToasts) {\n          refs.get(\"dismissableCleanup\")?.();\n          return;\n        }\n        if (hasToasts && refs.get(\"dismissableCleanup\")) {\n          return;\n        }\n        const groupEl = () => getRegionEl(scope, placement);\n        const cleanup = trackDismissableBranch(groupEl, { defer: true });\n        refs.set(\"dismissableCleanup\", cleanup);\n      },\n      clearDismissableBranch({ refs }) {\n        refs.get(\"dismissableCleanup\")?.();\n      },\n      focusRegionEl({ scope, computed }) {\n        queueMicrotask(() => {\n          getRegionEl(scope, computed(\"placement\"))?.focus();\n        });\n      },\n      pauseToasts({ prop }) {\n        prop(\"store\").pause();\n      },\n      resumeToasts({ prop }) {\n        prop(\"store\").resume();\n      },\n      expandToasts({ prop }) {\n        prop(\"store\").expand();\n      },\n      collapseToasts({ prop }) {\n        prop(\"store\").collapse();\n      },\n      removeToast({ prop, event }) {\n        prop(\"store\").remove(event.id);\n      },\n      removeHeight({ event, context }) {\n        if (event?.id == null) return;\n        queueMicrotask(() => {\n          context.set(\"heights\", (heights) => heights.filter((height) => height.id !== event.id));\n        });\n      },\n      collapsedIfEmpty({ send, computed }) {\n        if (!computed(\"overlap\") || computed(\"count\") > 1) return;\n        send({ type: \"REGION.OVERLAP\" });\n      },\n      setLastFocusedEl({ refs, event }) {\n        if (refs.get(\"isFocusWithin\") || !event.target) return;\n        refs.set(\"isFocusWithin\", true);\n        refs.set(\"lastFocusedEl\", event.target);\n      },\n      restoreFocusIfPointerOut({ refs }) {\n        if (!refs.get(\"lastFocusedEl\") || refs.get(\"isPointerWithin\")) return;\n        refs.get(\"lastFocusedEl\")?.focus({ preventScroll: true });\n        refs.set(\"lastFocusedEl\", null);\n        refs.set(\"isFocusWithin\", false);\n      },\n      setPointerWithin({ refs }) {\n        refs.set(\"isPointerWithin\", true);\n      },\n      clearPointerWithin({ refs }) {\n        refs.set(\"isPointerWithin\", false);\n        if (refs.get(\"lastFocusedEl\") && !refs.get(\"isFocusWithin\")) {\n          refs.get(\"lastFocusedEl\")?.focus({ preventScroll: true });\n          refs.set(\"lastFocusedEl\", null);\n        }\n      },\n      clearFocusWithin({ refs }) {\n        refs.set(\"isFocusWithin\", false);\n      },\n      clearLastFocusedEl({ refs }) {\n        if (!refs.get(\"lastFocusedEl\")) return;\n        refs.get(\"lastFocusedEl\")?.focus({ preventScroll: true });\n        refs.set(\"lastFocusedEl\", null);\n        refs.set(\"isFocusWithin\", false);\n      },\n      ignoreMouseEventsTemporarily({ refs }) {\n        refs.get(\"ignoreMouseTimer\").request();\n      },\n      clearMouseEventTimer({ refs }) {\n        refs.get(\"ignoreMouseTimer\").cancel();\n      }\n    }\n  }\n});\nfunction connect(service, normalize) {\n  const { state, send, prop, scope, context, computed } = service;\n  const visible = state.hasTag(\"visible\");\n  const paused = state.hasTag(\"paused\");\n  const mounted = context.get(\"mounted\");\n  const frontmost = computed(\"frontmost\");\n  const placement = prop(\"parent\").computed(\"placement\");\n  const type = prop(\"type\");\n  const stacked = prop(\"stacked\");\n  const title = prop(\"title\");\n  const description = prop(\"description\");\n  const action = prop(\"action\");\n  const [side, align = \"center\"] = placement.split(\"-\");\n  return {\n    type,\n    title,\n    description,\n    placement,\n    visible,\n    paused,\n    closable: !!prop(\"closable\"),\n    pause() {\n      send({ type: \"PAUSE\" });\n    },\n    resume() {\n      send({ type: \"RESUME\" });\n    },\n    dismiss() {\n      send({ type: \"DISMISS\", src: \"programmatic\" });\n    },\n    getRootProps() {\n      return normalize.element({\n        ...parts.root.attrs,\n        dir: prop(\"dir\"),\n        id: getRootId(scope),\n        \"data-state\": visible ? \"open\" : \"closed\",\n        \"data-type\": type,\n        \"data-placement\": placement,\n        \"data-align\": align,\n        \"data-side\": side,\n        \"data-mounted\": dataAttr(mounted),\n        \"data-paused\": dataAttr(paused),\n        \"data-first\": dataAttr(frontmost),\n        \"data-sibling\": dataAttr(!frontmost),\n        \"data-stack\": dataAttr(stacked),\n        \"data-overlap\": dataAttr(!stacked),\n        role: \"status\",\n        \"aria-atomic\": \"true\",\n        \"aria-describedby\": description ? getDescriptionId(scope) : void 0,\n        \"aria-labelledby\": title ? getTitleId(scope) : void 0,\n        tabIndex: 0,\n        style: getPlacementStyle(service, visible),\n        onKeyDown(event) {\n          if (event.defaultPrevented) return;\n          if (event.key == \"Escape\") {\n            send({ type: \"DISMISS\", src: \"keyboard\" });\n            event.preventDefault();\n          }\n        }\n      });\n    },\n    /* Leave a ghost div to avoid setting hover to false when transitioning out */\n    getGhostBeforeProps() {\n      return normalize.element({\n        \"data-ghost\": \"before\",\n        style: getGhostBeforeStyle(service, visible)\n      });\n    },\n    /* Needed to avoid setting hover to false when in between toasts */\n    getGhostAfterProps() {\n      return normalize.element({\n        \"data-ghost\": \"after\",\n        style: getGhostAfterStyle()\n      });\n    },\n    getTitleProps() {\n      return normalize.element({\n        ...parts.title.attrs,\n        id: getTitleId(scope)\n      });\n    },\n    getDescriptionProps() {\n      return normalize.element({\n        ...parts.description.attrs,\n        id: getDescriptionId(scope)\n      });\n    },\n    getActionTriggerProps() {\n      return normalize.button({\n        ...parts.actionTrigger.attrs,\n        type: \"button\",\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          action?.onClick?.();\n          send({ type: \"DISMISS\", src: \"user\" });\n        }\n      });\n    },\n    getCloseTriggerProps() {\n      return normalize.button({\n        id: getCloseTriggerId(scope),\n        ...parts.closeTrigger.attrs,\n        type: \"button\",\n        \"aria-label\": \"Dismiss notification\",\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          send({ type: \"DISMISS\", src: \"user\" });\n        }\n      });\n    }\n  };\n}\nvar { not } = createGuards();\nvar machine = createMachine$1({\n  props({ props }) {\n    ensureProps(props, [\"id\", \"type\", \"parent\", \"removeDelay\"], \"toast\");\n    return {\n      closable: true,\n      ...props,\n      duration: getToastDuration(props.duration, props.type)\n    };\n  },\n  initialState({ prop }) {\n    const persist = prop(\"type\") === \"loading\" || prop(\"duration\") === Infinity;\n    return persist ? \"visible:persist\" : \"visible\";\n  },\n  context({ prop, bindable }) {\n    return {\n      remainingTime: bindable(() => ({\n        defaultValue: getToastDuration(prop(\"duration\"), prop(\"type\"))\n      })),\n      createdAt: bindable(() => ({\n        defaultValue: Date.now()\n      })),\n      mounted: bindable(() => ({\n        defaultValue: false\n      })),\n      initialHeight: bindable(() => ({\n        defaultValue: 0\n      }))\n    };\n  },\n  refs() {\n    return {\n      closeTimerStartTime: Date.now(),\n      lastCloseStartTimerStartTime: 0\n    };\n  },\n  computed: {\n    zIndex: ({ prop }) => {\n      const toasts = prop(\"parent\").context.get(\"toasts\");\n      const index = toasts.findIndex((toast) => toast.id === prop(\"id\"));\n      return toasts.length - index;\n    },\n    height: ({ prop }) => {\n      const heights = prop(\"parent\").context.get(\"heights\");\n      const height = heights.find((height2) => height2.id === prop(\"id\"));\n      return height?.height ?? 0;\n    },\n    heightIndex: ({ prop }) => {\n      const heights = prop(\"parent\").context.get(\"heights\");\n      return heights.findIndex((height) => height.id === prop(\"id\"));\n    },\n    frontmost: ({ prop }) => prop(\"index\") === 0,\n    heightBefore: ({ prop }) => {\n      const heights = prop(\"parent\").context.get(\"heights\");\n      const heightIndex = heights.findIndex((height) => height.id === prop(\"id\"));\n      return heights.reduce((prev, curr, reducerIndex) => {\n        if (reducerIndex >= heightIndex) return prev;\n        return prev + curr.height;\n      }, 0);\n    },\n    shouldPersist: ({ prop }) => prop(\"type\") === \"loading\" || prop(\"duration\") === Infinity\n  },\n  watch({ track, prop, send }) {\n    track([() => prop(\"message\")], () => {\n      const message = prop(\"message\");\n      if (message) send({ type: message, src: \"programmatic\" });\n    });\n    track([() => prop(\"type\"), () => prop(\"duration\")], () => {\n      send({ type: \"UPDATE\" });\n    });\n  },\n  on: {\n    UPDATE: [\n      {\n        guard: \"shouldPersist\",\n        target: \"visible:persist\",\n        actions: [\"resetCloseTimer\"]\n      },\n      {\n        target: \"visible:updating\",\n        actions: [\"resetCloseTimer\"]\n      }\n    ],\n    MEASURE: {\n      actions: [\"measureHeight\"]\n    }\n  },\n  entry: [\"setMounted\", \"measureHeight\", \"invokeOnVisible\"],\n  effects: [\"trackHeight\"],\n  states: {\n    \"visible:updating\": {\n      tags: [\"visible\", \"updating\"],\n      effects: [\"waitForNextTick\"],\n      on: {\n        SHOW: {\n          target: \"visible\"\n        }\n      }\n    },\n    \"visible:persist\": {\n      tags: [\"visible\", \"paused\"],\n      on: {\n        RESUME: {\n          guard: not(\"isLoadingType\"),\n          target: \"visible\",\n          actions: [\"setCloseTimer\"]\n        },\n        DISMISS: {\n          target: \"dismissing\"\n        }\n      }\n    },\n    visible: {\n      tags: [\"visible\"],\n      effects: [\"waitForDuration\"],\n      on: {\n        DISMISS: {\n          target: \"dismissing\"\n        },\n        PAUSE: {\n          target: \"visible:persist\",\n          actions: [\"syncRemainingTime\"]\n        }\n      }\n    },\n    dismissing: {\n      entry: [\"invokeOnDismiss\"],\n      effects: [\"waitForRemoveDelay\"],\n      on: {\n        REMOVE: {\n          target: \"unmounted\",\n          actions: [\"notifyParentToRemove\"]\n        }\n      }\n    },\n    unmounted: {\n      entry: [\"invokeOnUnmount\"]\n    }\n  },\n  implementations: {\n    effects: {\n      waitForRemoveDelay({ prop, send }) {\n        return setRafTimeout(() => {\n          send({ type: \"REMOVE\", src: \"timer\" });\n        }, prop(\"removeDelay\"));\n      },\n      waitForDuration({ send, context, computed }) {\n        if (computed(\"shouldPersist\")) return;\n        return setRafTimeout(() => {\n          send({ type: \"DISMISS\", src: \"timer\" });\n        }, context.get(\"remainingTime\"));\n      },\n      waitForNextTick({ send }) {\n        return setRafTimeout(() => {\n          send({ type: \"SHOW\", src: \"timer\" });\n        }, 0);\n      },\n      trackHeight({ scope, prop }) {\n        let cleanup;\n        raf(() => {\n          const rootEl = getRootEl(scope);\n          if (!rootEl) return;\n          const syncHeight = () => {\n            const originalHeight = rootEl.style.height;\n            rootEl.style.height = \"auto\";\n            const height = rootEl.getBoundingClientRect().height;\n            rootEl.style.height = originalHeight;\n            const item = { id: prop(\"id\"), height };\n            setHeight(prop(\"parent\"), item);\n          };\n          const win = scope.getWin();\n          const observer = new win.MutationObserver(syncHeight);\n          observer.observe(rootEl, {\n            childList: true,\n            subtree: true,\n            characterData: true\n          });\n          cleanup = () => observer.disconnect();\n        });\n        return () => cleanup?.();\n      }\n    },\n    guards: {\n      isLoadingType: ({ prop }) => prop(\"type\") === \"loading\",\n      shouldPersist: ({ computed }) => computed(\"shouldPersist\")\n    },\n    actions: {\n      setMounted({ context }) {\n        raf(() => {\n          context.set(\"mounted\", true);\n        });\n      },\n      measureHeight({ scope, prop, context }) {\n        queueMicrotask(() => {\n          const rootEl = getRootEl(scope);\n          if (!rootEl) return;\n          const originalHeight = rootEl.style.height;\n          rootEl.style.height = \"auto\";\n          const height = rootEl.getBoundingClientRect().height;\n          rootEl.style.height = originalHeight;\n          context.set(\"initialHeight\", height);\n          const item = { id: prop(\"id\"), height };\n          setHeight(prop(\"parent\"), item);\n        });\n      },\n      setCloseTimer({ refs }) {\n        refs.set(\"closeTimerStartTime\", Date.now());\n      },\n      resetCloseTimer({ context, refs, prop }) {\n        refs.set(\"closeTimerStartTime\", Date.now());\n        context.set(\"remainingTime\", getToastDuration(prop(\"duration\"), prop(\"type\")));\n      },\n      syncRemainingTime({ context, refs }) {\n        context.set(\"remainingTime\", (prev) => {\n          const closeTimerStartTime = refs.get(\"closeTimerStartTime\");\n          const elapsedTime = Date.now() - closeTimerStartTime;\n          refs.set(\"lastCloseStartTimerStartTime\", Date.now());\n          return prev - elapsedTime;\n        });\n      },\n      notifyParentToRemove({ prop }) {\n        const parent = prop(\"parent\");\n        parent.send({ type: \"TOAST.REMOVE\", id: prop(\"id\") });\n      },\n      invokeOnDismiss({ prop, event }) {\n        prop(\"onStatusChange\")?.({ status: \"dismissing\", src: event.src });\n      },\n      invokeOnUnmount({ prop }) {\n        prop(\"onStatusChange\")?.({ status: \"unmounted\" });\n      },\n      invokeOnVisible({ prop }) {\n        prop(\"onStatusChange\")?.({ status: \"visible\" });\n      }\n    }\n  }\n});\nfunction setHeight(parent, item) {\n  const { id, height } = item;\n  parent.context.set(\"heights\", (prev) => {\n    const alreadyExists = prev.find((i) => i.id === id);\n    if (!alreadyExists) {\n      return [{ id, height }, ...prev];\n    } else {\n      return prev.map((i) => i.id === id ? { ...i, height } : i);\n    }\n  });\n}\nvar withDefaults = (options, defaults) => {\n  return { ...defaults, ...compact(options) };\n};\nfunction createToastStore(props = {}) {\n  const attrs = withDefaults(props, {\n    placement: \"bottom\",\n    overlap: false,\n    max: 24,\n    gap: 16,\n    offsets: \"1rem\",\n    hotkey: [\"altKey\", \"KeyT\"],\n    removeDelay: 200,\n    pauseOnPageIdle: true\n  });\n  let subscribers = [];\n  let toasts = [];\n  let dismissedToasts = /* @__PURE__ */ new Set();\n  let toastQueue = [];\n  const subscribe = (subscriber) => {\n    subscribers.push(subscriber);\n    return () => {\n      const index = subscribers.indexOf(subscriber);\n      subscribers.splice(index, 1);\n    };\n  };\n  const publish = (data) => {\n    subscribers.forEach((subscriber) => subscriber(data));\n    return data;\n  };\n  const addToast = (data) => {\n    if (toasts.length >= attrs.max) {\n      toastQueue.push(data);\n      return;\n    }\n    publish(data);\n    toasts.unshift(data);\n  };\n  const processQueue = () => {\n    while (toastQueue.length > 0 && toasts.length < attrs.max) {\n      const nextToast = toastQueue.shift();\n      if (nextToast) {\n        publish(nextToast);\n        toasts.unshift(nextToast);\n      }\n    }\n  };\n  const create = (data) => {\n    const id = data.id ?? `toast:${uuid()}`;\n    const exists = toasts.find((toast) => toast.id === id);\n    if (dismissedToasts.has(id)) dismissedToasts.delete(id);\n    if (exists) {\n      toasts = toasts.map((toast) => {\n        if (toast.id === id) {\n          return publish({ ...toast, ...data, id });\n        }\n        return toast;\n      });\n    } else {\n      addToast({\n        id,\n        duration: attrs.duration,\n        removeDelay: attrs.removeDelay,\n        type: \"info\",\n        ...data,\n        stacked: !attrs.overlap,\n        gap: attrs.gap\n      });\n    }\n    return id;\n  };\n  const remove = (id) => {\n    dismissedToasts.add(id);\n    if (!id) {\n      toasts.forEach((toast) => {\n        subscribers.forEach((subscriber) => subscriber({ id: toast.id, dismiss: true }));\n      });\n      toasts = [];\n      toastQueue = [];\n    } else {\n      subscribers.forEach((subscriber) => subscriber({ id, dismiss: true }));\n      toasts = toasts.filter((toast) => toast.id !== id);\n      processQueue();\n    }\n    return id;\n  };\n  const error = (data) => {\n    return create({ ...data, type: \"error\" });\n  };\n  const success = (data) => {\n    return create({ ...data, type: \"success\" });\n  };\n  const info = (data) => {\n    return create({ ...data, type: \"info\" });\n  };\n  const warning = (data) => {\n    return create({ ...data, type: \"warning\" });\n  };\n  const loading = (data) => {\n    return create({ ...data, type: \"loading\" });\n  };\n  const getVisibleToasts = () => {\n    return toasts.filter((toast) => !dismissedToasts.has(toast.id));\n  };\n  const getCount = () => {\n    return toasts.length;\n  };\n  const promise = (promise2, options, shared = {}) => {\n    if (!options || !options.loading) {\n      warn(\"[zag-js > toast] toaster.promise() requires at least a 'loading' option to be specified\");\n      return;\n    }\n    const id = create({\n      ...shared,\n      ...options.loading,\n      promise: promise2,\n      type: \"loading\"\n    });\n    let removable = true;\n    let result;\n    const prom = runIfFn(promise2).then(async (response) => {\n      result = [\"resolve\", response];\n      if (isHttpResponse(response) && !response.ok) {\n        removable = false;\n        const errorOptions = runIfFn(options.error, `HTTP Error! status: ${response.status}`);\n        create({ ...shared, ...errorOptions, id, type: \"error\" });\n      } else if (options.success !== void 0) {\n        removable = false;\n        const successOptions = runIfFn(options.success, response);\n        create({ ...shared, ...successOptions, id, type: \"success\" });\n      }\n    }).catch(async (error2) => {\n      result = [\"reject\", error2];\n      if (options.error !== void 0) {\n        removable = false;\n        const errorOptions = runIfFn(options.error, error2);\n        create({ ...shared, ...errorOptions, id, type: \"error\" });\n      }\n    }).finally(() => {\n      if (removable) {\n        remove(id);\n      }\n      options.finally?.();\n    });\n    const unwrap = () => new Promise(\n      (resolve, reject) => prom.then(() => result[0] === \"reject\" ? reject(result[1]) : resolve(result[1])).catch(reject)\n    );\n    return { id, unwrap };\n  };\n  const update = (id, data) => {\n    return create({ id, ...data });\n  };\n  const pause = (id) => {\n    if (id != null) {\n      toasts = toasts.map((toast) => {\n        if (toast.id === id) return publish({ ...toast, message: \"PAUSE\" });\n        return toast;\n      });\n    } else {\n      toasts = toasts.map((toast) => publish({ ...toast, message: \"PAUSE\" }));\n    }\n  };\n  const resume = (id) => {\n    if (id != null) {\n      toasts = toasts.map((toast) => {\n        if (toast.id === id) return publish({ ...toast, message: \"RESUME\" });\n        return toast;\n      });\n    } else {\n      toasts = toasts.map((toast) => publish({ ...toast, message: \"RESUME\" }));\n    }\n  };\n  const dismiss = (id) => {\n    if (id != null) {\n      toasts = toasts.map((toast) => {\n        if (toast.id === id) return publish({ ...toast, message: \"DISMISS\" });\n        return toast;\n      });\n    } else {\n      toasts = toasts.map((toast) => publish({ ...toast, message: \"DISMISS\" }));\n    }\n  };\n  const isVisible = (id) => {\n    return !dismissedToasts.has(id) && !!toasts.find((toast) => toast.id === id);\n  };\n  const isDismissed = (id) => {\n    return dismissedToasts.has(id);\n  };\n  const expand = () => {\n    toasts = toasts.map((toast) => publish({ ...toast, stacked: true }));\n  };\n  const collapse = () => {\n    toasts = toasts.map((toast) => publish({ ...toast, stacked: false }));\n  };\n  return {\n    attrs,\n    subscribe,\n    create,\n    update,\n    remove,\n    dismiss,\n    error,\n    success,\n    info,\n    warning,\n    loading,\n    getVisibleToasts,\n    getCount,\n    promise,\n    pause,\n    resume,\n    isVisible,\n    isDismissed,\n    expand,\n    collapse\n  };\n}\nvar isHttpResponse = (data) => {\n  return data && typeof data === \"object\" && \"ok\" in data && typeof data.ok === \"boolean\" && \"status\" in data && typeof data.status === \"number\";\n};\n\n// src/index.ts\nvar group = {\n  connect: groupConnect,\n  machine: groupMachine\n};\n\nexport { anatomy, connect, createToastStore as createStore, group, machine };\n", "import * as toast from \"@zag-js/toast\";\nimport { VanillaMachine, normalizeProps, spreadProps } from \"@zag-js/vanilla\";\n\nimport {\n  Component,\n  renderPart,\n  generateId,\n  getString,\n  getNumber,\n} from \"../lib\";\n\nimport type { Placement, StatusChangeDetails } from \"@zag-js/toast\";\n\nconst toastInstances = new WeakMap<HTMLElement, Toast>();\nconst toastStores = new WeakMap<HTMLElement, any>();\n\nexport class ToastItem extends Component<\n  toast.Options<any> & { parent: any; index: number },\n  toast.Api\n> {\n  constructor(\n    el: HTMLElement,\n    actor: toast.Options<any> & { parent: any; index: number },\n  ) {\n    super(el, actor);\n  }\n\n  initMachine(props: toast.Props): VanillaMachine<any> {\n    return new VanillaMachine(toast.machine, props);\n  }\n  initApi(): toast.Api {\n    return toast.connect(this.machine.service, normalizeProps);\n  }\n  destroy = () => {\n    this.machine.stop();\n    this.el.remove();\n  };\n  render() {\n    if (!this.el.isConnected) return;\n    const rootProps = this.api.getRootProps();\n    spreadProps(this.el, rootProps);\n    if (!this.el.innerHTML) {\n      this.el.innerHTML = `\n        <div data-scope=\"toast\" data-part=\"content\">\n        <div data-scope=\"toast\" data-part=\"title\"></div>\n        <div data-scope=\"toast\" data-part=\"description\"></div>\n        </div>\n        <button data-scope=\"toast\" data-part=\"close-trigger\">\n        <svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 20 20\" aria-hidden=\"true\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\">\n          <path fill-rule=\"evenodd\" d=\"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z\" clip-rule=\"evenodd\"></path>\n        </svg>\n      </button>\n      <div data-scope=\"toast\" data-part=\"progressbar\"></div>\n      `;\n    }\n    renderPart(this.el, \"progressbar\", this.api);\n    renderPart(this.el, \"close-trigger\", this.api);\n    const titleEl = this.el.querySelector<HTMLElement>('[data-part=\"title\"]');\n    if (titleEl && titleEl.textContent !== this.api.title)\n      titleEl.textContent = this.api.title || \"\";\n    const descEl = this.el.querySelector<HTMLElement>(\n      '[data-part=\"description\"]',\n    );\n    if (descEl && descEl.textContent !== this.api.description)\n      descEl.textContent = this.api.description || \"\";\n\n    renderPart(this.el, \"title\", this.api);\n    renderPart(this.el, \"description\", this.api);\n  }\n}\nexport class Toast extends Component<toast.GroupProps, toast.GroupApi> {\n  private toastComponents = new Map<string, ToastItem>();\n  private groupEl!: HTMLElement;\n  public groupId: string;\n  constructor(el: HTMLElement, props: toast.GroupProps) {\n    super(el, props);\n    this.groupId = props.id || generateId(el, \"toast\");\n  }\n  initMachine(props: toast.GroupProps): VanillaMachine<any> {\n    return new VanillaMachine(toast.group.machine, {\n      ...props,\n      id: props.id ?? generateId(this.el, \"toast\"),\n    });\n  }\n  initApi(): toast.GroupApi {\n    const api = toast.group.connect(this.machine.service, normalizeProps);\n    this.groupEl = this.el.querySelector<HTMLElement>('[data-part=\"group\"]')!;\n    if (!this.groupEl) {\n      this.groupEl = document.createElement(\"div\");\n      this.el.appendChild(this.groupEl);\n    }\n    return api;\n  }\n  addToast(toastActor: toast.Options<any> & { id: string }, index: number) {\n    let toastComp = this.toastComponents.get(toastActor.id);\n    if (!toastComp) {\n      const rootEl = document.createElement(\"div\");\n      this.groupEl.appendChild(rootEl);\n      const groupProps = this.api.getGroupProps;\n      spreadProps(this.el, groupProps);\n      toastComp = new ToastItem(rootEl, {\n        ...toastActor,\n        parent: this.machine.service,\n        index,\n      });\n      toastComp.init();\n      this.toastComponents.set(toastActor.id, toastComp);\n    }\n    toastComp.render();\n  }\n  render() {\n    renderPart(this.el, \"group\", this.api);\n    const toasts = this.api\n      .getToasts()\n      .filter((t): t is toast.Options<any> & { id: string } => !!t.id);\n    const newToastMap = new Map<string, ToastItem>();\n    toasts.forEach((toastActor, i) => {\n      this.addToast(toastActor, i);\n      newToastMap.set(toastActor.id, this.toastComponents.get(toastActor.id)!);\n    });\n    for (const [id, comp] of this.toastComponents) {\n      if (!newToastMap.has(id)) comp.destroy();\n    }\n    this.toastComponents = newToastMap;\n  }\n}\n\nexport function createToastGroup(\n  container: HTMLElement,\n  options?: {\n    id?: string;\n    store?: ReturnType<typeof toast.createStore>;\n    placement?: Placement;\n    overlap?: boolean;\n    max?: number;\n    gap?: number;\n    offsets?: string | Record<\"left\" | \"right\" | \"bottom\" | \"top\", string>;\n  },\n): { group: Toast; store: ReturnType<typeof toast.createStore> } {\n  const groupId = options?.id || generateId(container, \"toast\");\n  const store =\n    options?.store ||\n    toast.createStore({\n      placement: options?.placement || \"bottom-end\",\n      overlap: options?.overlap,\n      max: options?.max,\n      gap: options?.gap,\n      offsets: options?.offsets,\n    });\n\n  const toastInstance = new Toast(container, { id: groupId, store });\n  toastInstance.init();\n  toastInstances.set(container, toastInstance);\n  toastStores.set(container, store);\n\n  return { group: toastInstance, store };\n}\n\nexport function initToast(\n  doc: HTMLElement | Document = document,\n  selector = \".toast-js\",\n): Toast | null {\n  let toastInstance: Toast | null = null;\n  doc.querySelectorAll<HTMLElement>(selector).forEach((rootEl) => {\n    const groupId = generateId(rootEl, \"toast\");\n    const placements = [\n      \"top-start\",\n      \"top\",\n      \"top-end\",\n      \"bottom-start\",\n      \"bottom\",\n      \"bottom-end\",\n    ] as const;\n    const placement =\n      getString<Placement>(rootEl, \"placement\", placements) || \"bottom-end\";\n    const max = getNumber(rootEl, \"max\");\n    const gap = getNumber(rootEl, \"gap\");\n    const offsets = getString(rootEl, \"offsets\");\n    const store = toast.createStore({\n      placement,\n      gap,\n      max,\n      offsets,\n    });\n    toastInstance = new Toast(rootEl, { id: groupId, store });\n    toastInstance.init();\n    toastInstances.set(rootEl, toastInstance);\n    toastStores.set(rootEl, store);\n  });\n  return toastInstance;\n}\nexport function createToast(options: {\n  title: string;\n  description?: string;\n  type?: \"info\" | \"success\" | \"error\" | \"warning\" | \"loading\";\n  id?: string;\n  duration?: number;\n  onStatusChange?: (details: StatusChangeDetails) => void;\n  removeDelay?: number;\n  groupId?: string;\n}) {\n  let store: any;\n\n  if (options.groupId) {\n    const el = document.getElementById(options.groupId);\n    store = el ? toastStores.get(el) : undefined;\n  } else {\n    const el = document.querySelector<HTMLElement>(\".toast-js\");\n    store = el ? toastStores.get(el) : undefined;\n  }\n\n  if (!store) throw new Error(\"No toast store found\");\n\n  if (!options.id) options.id = generateId(undefined, \"toast\");\n\n  return store.create(options);\n}\nexport function createInfoToast(title: string, description?: string) {\n  return createToast({ title, description, type: \"info\" });\n}\nexport function createSuccessToast(title: string, description?: string) {\n  return createToast({ title, description, type: \"success\" });\n}\nexport function createErrorToast(title: string, description?: string) {\n  return createToast({ title, description, type: \"error\" });\n}\nexport function createWarningToast(title: string, description?: string) {\n  return createToast({ title, description, type: \"warning\" });\n}\nexport function createLoadingToast(title: string, description?: string) {\n  return createToast({\n    title,\n    description,\n    type: \"loading\",\n    duration: Infinity,\n  });\n}\nexport function updateToast(\n  id: string,\n  options: Partial<{\n    title: string;\n    description?: string;\n    type?: \"info\" | \"success\" | \"error\" | \"warning\" | \"loading\";\n  }>,\n) {\n  const stores = document.querySelectorAll<HTMLElement>(\".toast-js\");\n  if (!stores.length) throw new Error(\"No toast store found\");\n\n  stores.forEach((el) => {\n    const store = toastStores.get(el);\n    if (store) store.update(id, options);\n  });\n}\n\nexport function dismissToast(id: string) {\n  const stores = document.querySelectorAll<HTMLElement>(\".toast-js\");\n  if (!stores.length) throw new Error(\"No toast store found\");\n\n  stores.forEach((el) => {\n    const store = toastStores.get(el);\n    if (store) store.dismiss(id);\n  });\n}\n", "import { createAnatomy } from '@zag-js/anatomy';\nimport { raf, prevById, nextById, queryAll, dataAttr, contains, getEventTarget, getEventKey, isSafari } from '@zag-js/dom-query';\nimport { last, first, ensureProps, isArray, addOrRemove, isEqual, createSplitProps } from '@zag-js/utils';\nimport { createGuards, createMachine } from '@zag-js/core';\nimport { createProps } from '@zag-js/types';\n\n// src/toggle-group.anatomy.ts\nvar anatomy = createAnatomy(\"toggle-group\").parts(\"root\", \"item\");\nvar parts = anatomy.build();\nvar getRootId = (ctx) => ctx.ids?.root ?? `toggle-group:${ctx.id}`;\nvar getItemId = (ctx, value) => ctx.ids?.item?.(value) ?? `toggle-group:${ctx.id}:${value}`;\nvar getRootEl = (ctx) => ctx.getById(getRootId(ctx));\nvar getElements = (ctx) => {\n  const ownerId = CSS.escape(getRootId(ctx));\n  const selector = `[data-ownedby='${ownerId}']:not([data-disabled])`;\n  return queryAll(getRootEl(ctx), selector);\n};\nvar getFirstEl = (ctx) => first(getElements(ctx));\nvar getLastEl = (ctx) => last(getElements(ctx));\nvar getNextEl = (ctx, id, loopFocus) => nextById(getElements(ctx), id, loopFocus);\nvar getPrevEl = (ctx, id, loopFocus) => prevById(getElements(ctx), id, loopFocus);\n\n// src/toggle-group.connect.ts\nfunction connect(service, normalize) {\n  const { context, send, prop, scope } = service;\n  const value = context.get(\"value\");\n  const disabled = prop(\"disabled\");\n  const isSingle = !prop(\"multiple\");\n  const rovingFocus = prop(\"rovingFocus\");\n  const isHorizontal = prop(\"orientation\") === \"horizontal\";\n  function getItemState(props2) {\n    const id = getItemId(scope, props2.value);\n    return {\n      id,\n      disabled: Boolean(props2.disabled || disabled),\n      pressed: !!value.includes(props2.value),\n      focused: context.get(\"focusedId\") === id\n    };\n  }\n  return {\n    value,\n    setValue(value2) {\n      send({ type: \"VALUE.SET\", value: value2 });\n    },\n    getRootProps() {\n      return normalize.element({\n        ...parts.root.attrs,\n        id: getRootId(scope),\n        dir: prop(\"dir\"),\n        role: isSingle ? \"radiogroup\" : \"group\",\n        tabIndex: context.get(\"isTabbingBackward\") ? -1 : 0,\n        \"data-disabled\": dataAttr(disabled),\n        \"data-orientation\": prop(\"orientation\"),\n        \"data-focus\": dataAttr(context.get(\"focusedId\") != null),\n        style: { outline: \"none\" },\n        onMouseDown() {\n          if (disabled) return;\n          send({ type: \"ROOT.MOUSE_DOWN\" });\n        },\n        onFocus(event) {\n          if (disabled) return;\n          if (event.currentTarget !== getEventTarget(event)) return;\n          if (context.get(\"isClickFocus\")) return;\n          if (context.get(\"isTabbingBackward\")) return;\n          send({ type: \"ROOT.FOCUS\" });\n        },\n        onBlur(event) {\n          const target = event.relatedTarget;\n          if (contains(event.currentTarget, target)) return;\n          if (disabled) return;\n          send({ type: \"ROOT.BLUR\" });\n        }\n      });\n    },\n    getItemState,\n    getItemProps(props2) {\n      const itemState = getItemState(props2);\n      const rovingTabIndex = itemState.focused ? 0 : -1;\n      return normalize.button({\n        ...parts.item.attrs,\n        id: itemState.id,\n        type: \"button\",\n        \"data-ownedby\": getRootId(scope),\n        \"data-focus\": dataAttr(itemState.focused),\n        disabled: itemState.disabled,\n        tabIndex: rovingFocus ? rovingTabIndex : void 0,\n        // radio\n        role: isSingle ? \"radio\" : void 0,\n        \"aria-checked\": isSingle ? itemState.pressed : void 0,\n        \"aria-pressed\": isSingle ? void 0 : itemState.pressed,\n        //\n        \"data-disabled\": dataAttr(itemState.disabled),\n        \"data-orientation\": prop(\"orientation\"),\n        dir: prop(\"dir\"),\n        \"data-state\": itemState.pressed ? \"on\" : \"off\",\n        onFocus() {\n          if (itemState.disabled) return;\n          send({ type: \"TOGGLE.FOCUS\", id: itemState.id });\n        },\n        onClick(event) {\n          if (itemState.disabled) return;\n          send({ type: \"TOGGLE.CLICK\", id: itemState.id, value: props2.value });\n          if (isSafari()) {\n            event.currentTarget.focus({ preventScroll: true });\n          }\n        },\n        onKeyDown(event) {\n          if (event.defaultPrevented) return;\n          if (!contains(event.currentTarget, getEventTarget(event))) return;\n          if (itemState.disabled) return;\n          const keyMap = {\n            Tab(event2) {\n              const isShiftTab = event2.shiftKey;\n              send({ type: \"TOGGLE.SHIFT_TAB\", isShiftTab });\n            },\n            ArrowLeft() {\n              if (!rovingFocus || !isHorizontal) return;\n              send({ type: \"TOGGLE.FOCUS_PREV\" });\n            },\n            ArrowRight() {\n              if (!rovingFocus || !isHorizontal) return;\n              send({ type: \"TOGGLE.FOCUS_NEXT\" });\n            },\n            ArrowUp() {\n              if (!rovingFocus || isHorizontal) return;\n              send({ type: \"TOGGLE.FOCUS_PREV\" });\n            },\n            ArrowDown() {\n              if (!rovingFocus || isHorizontal) return;\n              send({ type: \"TOGGLE.FOCUS_NEXT\" });\n            },\n            Home() {\n              if (!rovingFocus) return;\n              send({ type: \"TOGGLE.FOCUS_FIRST\" });\n            },\n            End() {\n              if (!rovingFocus) return;\n              send({ type: \"TOGGLE.FOCUS_LAST\" });\n            }\n          };\n          const exec = keyMap[getEventKey(event)];\n          if (exec) {\n            exec(event);\n            if (event.key !== \"Tab\") event.preventDefault();\n          }\n        }\n      });\n    }\n  };\n}\nvar { not, and } = createGuards();\nvar machine = createMachine({\n  props({ props: props2 }) {\n    return {\n      defaultValue: [],\n      orientation: \"horizontal\",\n      rovingFocus: true,\n      loopFocus: true,\n      deselectable: true,\n      ...props2\n    };\n  },\n  initialState() {\n    return \"idle\";\n  },\n  context({ prop, bindable }) {\n    return {\n      value: bindable(() => ({\n        defaultValue: prop(\"defaultValue\"),\n        value: prop(\"value\"),\n        onChange(value) {\n          prop(\"onValueChange\")?.({ value });\n        }\n      })),\n      focusedId: bindable(() => ({\n        defaultValue: null\n      })),\n      isTabbingBackward: bindable(() => ({\n        defaultValue: false\n      })),\n      isClickFocus: bindable(() => ({\n        defaultValue: false\n      })),\n      isWithinToolbar: bindable(() => ({\n        defaultValue: false\n      }))\n    };\n  },\n  computed: {\n    currentLoopFocus: ({ context, prop }) => prop(\"loopFocus\") && !context.get(\"isWithinToolbar\")\n  },\n  entry: [\"checkIfWithinToolbar\"],\n  on: {\n    \"VALUE.SET\": {\n      actions: [\"setValue\"]\n    },\n    \"TOGGLE.CLICK\": {\n      actions: [\"setValue\"]\n    },\n    \"ROOT.MOUSE_DOWN\": {\n      actions: [\"setClickFocus\"]\n    }\n  },\n  states: {\n    idle: {\n      on: {\n        \"ROOT.FOCUS\": {\n          target: \"focused\",\n          guard: not(and(\"isClickFocus\", \"isTabbingBackward\")),\n          actions: [\"focusFirstToggle\", \"clearClickFocus\"]\n        },\n        \"TOGGLE.FOCUS\": {\n          target: \"focused\",\n          actions: [\"setFocusedId\"]\n        }\n      }\n    },\n    focused: {\n      on: {\n        \"ROOT.BLUR\": {\n          target: \"idle\",\n          actions: [\"clearIsTabbingBackward\", \"clearFocusedId\", \"clearClickFocus\"]\n        },\n        \"TOGGLE.FOCUS\": {\n          actions: [\"setFocusedId\"]\n        },\n        \"TOGGLE.FOCUS_NEXT\": {\n          actions: [\"focusNextToggle\"]\n        },\n        \"TOGGLE.FOCUS_PREV\": {\n          actions: [\"focusPrevToggle\"]\n        },\n        \"TOGGLE.FOCUS_FIRST\": {\n          actions: [\"focusFirstToggle\"]\n        },\n        \"TOGGLE.FOCUS_LAST\": {\n          actions: [\"focusLastToggle\"]\n        },\n        \"TOGGLE.SHIFT_TAB\": [\n          {\n            guard: not(\"isFirstToggleFocused\"),\n            target: \"idle\",\n            actions: [\"setIsTabbingBackward\"]\n          },\n          {\n            actions: [\"setIsTabbingBackward\"]\n          }\n        ]\n      }\n    }\n  },\n  implementations: {\n    guards: {\n      isClickFocus: ({ context }) => context.get(\"isClickFocus\"),\n      isTabbingBackward: ({ context }) => context.get(\"isTabbingBackward\"),\n      isFirstToggleFocused: ({ context, scope }) => context.get(\"focusedId\") === getFirstEl(scope)?.id\n    },\n    actions: {\n      setIsTabbingBackward({ context }) {\n        context.set(\"isTabbingBackward\", true);\n      },\n      clearIsTabbingBackward({ context }) {\n        context.set(\"isTabbingBackward\", false);\n      },\n      setClickFocus({ context }) {\n        context.set(\"isClickFocus\", true);\n      },\n      clearClickFocus({ context }) {\n        context.set(\"isClickFocus\", false);\n      },\n      checkIfWithinToolbar({ context, scope }) {\n        const closestToolbar = getRootEl(scope)?.closest(\"[role=toolbar]\");\n        context.set(\"isWithinToolbar\", !!closestToolbar);\n      },\n      setFocusedId({ context, event }) {\n        context.set(\"focusedId\", event.id);\n      },\n      clearFocusedId({ context }) {\n        context.set(\"focusedId\", null);\n      },\n      setValue({ context, event, prop }) {\n        ensureProps(event, [\"value\"]);\n        let next = context.get(\"value\");\n        if (isArray(event.value)) {\n          next = event.value;\n        } else if (prop(\"multiple\")) {\n          next = addOrRemove(next, event.value);\n        } else {\n          const isSelected = isEqual(next, [event.value]);\n          next = isSelected && prop(\"deselectable\") ? [] : [event.value];\n        }\n        context.set(\"value\", next);\n      },\n      focusNextToggle({ context, scope, prop }) {\n        raf(() => {\n          const focusedId = context.get(\"focusedId\");\n          if (!focusedId) return;\n          getNextEl(scope, focusedId, prop(\"loopFocus\"))?.focus({ preventScroll: true });\n        });\n      },\n      focusPrevToggle({ context, scope, prop }) {\n        raf(() => {\n          const focusedId = context.get(\"focusedId\");\n          if (!focusedId) return;\n          getPrevEl(scope, focusedId, prop(\"loopFocus\"))?.focus({ preventScroll: true });\n        });\n      },\n      focusFirstToggle({ scope }) {\n        raf(() => {\n          getFirstEl(scope)?.focus({ preventScroll: true });\n        });\n      },\n      focusLastToggle({ scope }) {\n        raf(() => {\n          getLastEl(scope)?.focus({ preventScroll: true });\n        });\n      }\n    }\n  }\n});\nvar props = createProps()([\n  \"dir\",\n  \"disabled\",\n  \"getRootNode\",\n  \"id\",\n  \"ids\",\n  \"loopFocus\",\n  \"multiple\",\n  \"onValueChange\",\n  \"orientation\",\n  \"rovingFocus\",\n  \"value\",\n  \"defaultValue\",\n  \"deselectable\"\n]);\nvar splitProps = createSplitProps(props);\nvar itemProps = createProps()([\"value\", \"disabled\"]);\nvar splitItemProps = createSplitProps(itemProps);\n\nexport { anatomy, connect, itemProps, machine, props, splitItemProps, splitProps };\n", "import * as toggleGroup from \"@zag-js/toggle-group\";\nimport type { Direction, Orientation } from \"@zag-js/types\";\nimport { VanillaMachine, normalizeProps } from \"@zag-js/vanilla\";\nimport {\n  Component,\n  getString,\n  getStringList,\n  getBoolean,\n  generateId,\n  renderPart,\n  arraysEqualUnordered,\n} from \"../lib\";\nexport class ToggleGroup extends Component<toggleGroup.Props, toggleGroup.Api> {\n  initMachine(props: toggleGroup.Props): VanillaMachine<any> {\n    return new VanillaMachine(toggleGroup.machine, props);\n  }\n  initApi(): toggleGroup.Api {\n    return toggleGroup.connect(this.machine.service, normalizeProps);\n  }\n  render() {\n    const parts = [\"root\"];\n    for (const part of parts) renderPart(this.el, part, this.api);\n\n    const items = this.el.querySelectorAll<HTMLElement>('[data-part=\"item\"]');\n    items.forEach((itemEl) => {\n      const value = getString(itemEl, \"value\");\n      const disabled = getBoolean(itemEl, \"disabled\");\n      renderPart(itemEl, \"item\", this.api, { value, disabled });\n    });\n  }\n}\nexport function initToggleGroup(\n  doc: HTMLElement | Document = document,\n  selector = \".toggle-group-js\",\n): void {\n  doc.querySelectorAll<HTMLElement>(selector).forEach((rootEl) => {\n    const directions = [\"ltr\", \"rtl\"] as const;\n    const orientations = [\"horizontal\", \"vertical\"] as const;\n    const toggleGroup = new ToggleGroup(rootEl, {\n      id: generateId(rootEl, \"toggleGroup\"),\n      defaultValue: getStringList(rootEl, \"defaultValue\"),\n      loopFocus: getBoolean(rootEl, \"loopFocus\"),\n      orientation: getString<Orientation>(rootEl, \"orientation\", orientations),\n      dir: getString<Direction>(rootEl, \"dir\", directions),\n      disabled: getBoolean(rootEl, \"disabled\"),\n      rovingFocus: getBoolean(rootEl, \"rovingFocus\"),\n      multiple: getBoolean(rootEl, \"multiple\"),\n      deselectable: getBoolean(rootEl, \"deselectable\"),\n      onValueChange(details) {\n        const eventName = getString(rootEl, \"onValueChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n    });\n    toggleGroup.init();\n\n    toggleGroup.el.addEventListener(\"toggle-group:set-value\", (event) => {\n      const { value } = (event as CustomEvent<{ value: string[] }>).detail;\n      const current = toggleGroup.api.value;\n      if (!arraysEqualUnordered(current, value)) {\n        toggleGroup.api.setValue(value);\n      }\n    });\n    toggleGroup.el.addEventListener(\"toggle-group:value\", (event) => {\n      const detail = (\n        event as CustomEvent<{ callback: (value: string[]) => void }>\n      ).detail;\n      const callback = detail.callback;\n      if (callback && typeof callback === \"function\") {\n        callback(toggleGroup.api.value);\n      }\n    });\n  });\n}\n", "import { createAnatomy } from '@zag-js/anatomy';\nimport { TreeCollection, filePathToTree } from '@zag-js/collection';\nimport { setElementValue, getByTypeahead, raf, isComposingEvent, dataAttr, isLeftClick, ariaAttr, isAnchorElement, isModifierKey, getEventTarget, isEditableElement, getEventKey } from '@zag-js/dom-query';\nimport { addOrRemove, first, uniq, diff, isArray, toArray, remove, last, isEqual, createSplitProps, add, partition, ensure } from '@zag-js/utils';\nimport { createGuards, createMachine } from '@zag-js/core';\nimport { createProps } from '@zag-js/types';\n\n// src/tree-view.anatomy.ts\nvar anatomy = createAnatomy(\"tree-view\").parts(\n  \"branch\",\n  \"branchContent\",\n  \"branchControl\",\n  \"branchIndentGuide\",\n  \"branchIndicator\",\n  \"branchText\",\n  \"branchTrigger\",\n  \"item\",\n  \"itemIndicator\",\n  \"itemText\",\n  \"label\",\n  \"nodeCheckbox\",\n  \"nodeRenameInput\",\n  \"root\",\n  \"tree\"\n);\nvar parts = anatomy.build();\nvar collection = (options) => {\n  return new TreeCollection(options);\n};\ncollection.empty = () => {\n  return new TreeCollection({ rootNode: { children: [] } });\n};\nfunction filePathCollection(paths) {\n  return filePathToTree(paths);\n}\n\n// src/tree-view.dom.ts\nvar getRootId = (ctx) => ctx.ids?.root ?? `tree:${ctx.id}:root`;\nvar getLabelId = (ctx) => ctx.ids?.label ?? `tree:${ctx.id}:label`;\nvar getNodeId = (ctx, value) => ctx.ids?.node?.(value) ?? `tree:${ctx.id}:node:${value}`;\nvar getTreeId = (ctx) => ctx.ids?.tree ?? `tree:${ctx.id}:tree`;\nvar focusNode = (ctx, value) => {\n  if (value == null) return;\n  ctx.getById(getNodeId(ctx, value))?.focus();\n};\nvar getRenameInputId = (ctx, value) => `tree:${ctx.id}:rename-input:${value}`;\nvar getRenameInputEl = (ctx, value) => {\n  return ctx.getById(getRenameInputId(ctx, value));\n};\nfunction getCheckedState(collection2, node, checkedValue) {\n  const value = collection2.getNodeValue(node);\n  if (!collection2.isBranchNode(node)) {\n    return checkedValue.includes(value);\n  }\n  const childValues = collection2.getDescendantValues(value);\n  const allChecked = childValues.every((v) => checkedValue.includes(v));\n  const someChecked = childValues.some((v) => checkedValue.includes(v));\n  return allChecked ? true : someChecked ? \"indeterminate\" : false;\n}\nfunction toggleBranchChecked(collection2, value, checkedValue) {\n  const childValues = collection2.getDescendantValues(value);\n  const allChecked = childValues.every((child) => checkedValue.includes(child));\n  return uniq(allChecked ? remove(checkedValue, ...childValues) : add(checkedValue, ...childValues));\n}\nfunction getCheckedValueMap(collection2, checkedValue) {\n  const map = /* @__PURE__ */ new Map();\n  collection2.visit({\n    onEnter: (node) => {\n      const value = collection2.getNodeValue(node);\n      const isBranch = collection2.isBranchNode(node);\n      const checked = getCheckedState(collection2, node, checkedValue);\n      map.set(value, {\n        type: isBranch ? \"branch\" : \"leaf\",\n        checked\n      });\n    }\n  });\n  return map;\n}\n\n// src/tree-view.connect.ts\nfunction connect(service, normalize) {\n  const { context, scope, computed, prop, send } = service;\n  const collection2 = prop(\"collection\");\n  const expandedValue = Array.from(context.get(\"expandedValue\"));\n  const selectedValue = Array.from(context.get(\"selectedValue\"));\n  const checkedValue = Array.from(context.get(\"checkedValue\"));\n  const isTypingAhead = computed(\"isTypingAhead\");\n  const focusedValue = context.get(\"focusedValue\");\n  const loadingStatus = context.get(\"loadingStatus\");\n  const renamingValue = context.get(\"renamingValue\");\n  function getNodeState(props2) {\n    const { node, indexPath } = props2;\n    const value = collection2.getNodeValue(node);\n    const firstNode = collection2.getFirstNode();\n    const firstNodeValue = firstNode ? collection2.getNodeValue(firstNode) : null;\n    return {\n      id: getNodeId(scope, value),\n      value,\n      indexPath,\n      valuePath: collection2.getValuePath(indexPath),\n      disabled: Boolean(node.disabled),\n      focused: focusedValue == null ? firstNodeValue == value : focusedValue === value,\n      selected: selectedValue.includes(value),\n      expanded: expandedValue.includes(value),\n      loading: loadingStatus[value] === \"loading\",\n      depth: indexPath.length,\n      isBranch: collection2.isBranchNode(node),\n      renaming: renamingValue === value,\n      get checked() {\n        return getCheckedState(collection2, node, checkedValue);\n      }\n    };\n  }\n  return {\n    collection: collection2,\n    expandedValue,\n    selectedValue,\n    checkedValue,\n    toggleChecked(value, isBranch) {\n      send({ type: \"CHECKED.TOGGLE\", value, isBranch });\n    },\n    setChecked(value) {\n      send({ type: \"CHECKED.SET\", value });\n    },\n    clearChecked() {\n      send({ type: \"CHECKED.CLEAR\" });\n    },\n    getCheckedMap() {\n      return getCheckedValueMap(collection2, checkedValue);\n    },\n    expand(value) {\n      send({ type: value ? \"BRANCH.EXPAND\" : \"EXPANDED.ALL\", value });\n    },\n    collapse(value) {\n      send({ type: value ? \"BRANCH.COLLAPSE\" : \"EXPANDED.CLEAR\", value });\n    },\n    deselect(value) {\n      send({ type: value ? \"NODE.DESELECT\" : \"SELECTED.CLEAR\", value });\n    },\n    select(value) {\n      send({ type: value ? \"NODE.SELECT\" : \"SELECTED.ALL\", value, isTrusted: false });\n    },\n    getVisibleNodes() {\n      return computed(\"visibleNodes\");\n    },\n    focus(value) {\n      focusNode(scope, value);\n    },\n    selectParent(value) {\n      const parentNode = collection2.getParentNode(value);\n      if (!parentNode) return;\n      const _selectedValue = add(selectedValue, collection2.getNodeValue(parentNode));\n      send({ type: \"SELECTED.SET\", value: _selectedValue, src: \"select.parent\" });\n    },\n    expandParent(value) {\n      const parentNode = collection2.getParentNode(value);\n      if (!parentNode) return;\n      const _expandedValue = add(expandedValue, collection2.getNodeValue(parentNode));\n      send({ type: \"EXPANDED.SET\", value: _expandedValue, src: \"expand.parent\" });\n    },\n    setExpandedValue(value) {\n      const _expandedValue = uniq(value);\n      send({ type: \"EXPANDED.SET\", value: _expandedValue });\n    },\n    setSelectedValue(value) {\n      const _selectedValue = uniq(value);\n      send({ type: \"SELECTED.SET\", value: _selectedValue });\n    },\n    startRenaming(value) {\n      send({ type: \"NODE.RENAME\", value });\n    },\n    submitRenaming(value, label) {\n      send({ type: \"RENAME.SUBMIT\", value, label });\n    },\n    cancelRenaming() {\n      send({ type: \"RENAME.CANCEL\" });\n    },\n    getRootProps() {\n      return normalize.element({\n        ...parts.root.attrs,\n        id: getRootId(scope),\n        dir: prop(\"dir\")\n      });\n    },\n    getLabelProps() {\n      return normalize.element({\n        ...parts.label.attrs,\n        id: getLabelId(scope),\n        dir: prop(\"dir\")\n      });\n    },\n    getTreeProps() {\n      return normalize.element({\n        ...parts.tree.attrs,\n        id: getTreeId(scope),\n        dir: prop(\"dir\"),\n        role: \"tree\",\n        \"aria-label\": \"Tree View\",\n        \"aria-labelledby\": getLabelId(scope),\n        \"aria-multiselectable\": prop(\"selectionMode\") === \"multiple\" || void 0,\n        tabIndex: -1,\n        onKeyDown(event) {\n          if (event.defaultPrevented) return;\n          if (isComposingEvent(event)) return;\n          const target = getEventTarget(event);\n          if (isEditableElement(target)) return;\n          const node = target?.closest(\"[data-part=branch-control], [data-part=item]\");\n          if (!node) return;\n          const nodeId = node.dataset.value;\n          if (nodeId == null) {\n            console.warn(`[zag-js/tree-view] Node id not found for node`, node);\n            return;\n          }\n          const isBranchNode = node.matches(\"[data-part=branch-control]\");\n          const keyMap = {\n            ArrowDown(event2) {\n              if (isModifierKey(event2)) return;\n              event2.preventDefault();\n              send({ type: \"NODE.ARROW_DOWN\", id: nodeId, shiftKey: event2.shiftKey });\n            },\n            ArrowUp(event2) {\n              if (isModifierKey(event2)) return;\n              event2.preventDefault();\n              send({ type: \"NODE.ARROW_UP\", id: nodeId, shiftKey: event2.shiftKey });\n            },\n            ArrowLeft(event2) {\n              if (isModifierKey(event2) || node.dataset.disabled) return;\n              event2.preventDefault();\n              send({ type: isBranchNode ? \"BRANCH_NODE.ARROW_LEFT\" : \"NODE.ARROW_LEFT\", id: nodeId });\n            },\n            ArrowRight(event2) {\n              if (!isBranchNode || node.dataset.disabled) return;\n              event2.preventDefault();\n              send({ type: \"BRANCH_NODE.ARROW_RIGHT\", id: nodeId });\n            },\n            Home(event2) {\n              if (isModifierKey(event2)) return;\n              event2.preventDefault();\n              send({ type: \"NODE.HOME\", id: nodeId, shiftKey: event2.shiftKey });\n            },\n            End(event2) {\n              if (isModifierKey(event2)) return;\n              event2.preventDefault();\n              send({ type: \"NODE.END\", id: nodeId, shiftKey: event2.shiftKey });\n            },\n            Space(event2) {\n              if (node.dataset.disabled) return;\n              if (isTypingAhead) {\n                send({ type: \"TREE.TYPEAHEAD\", key: event2.key });\n              } else {\n                keyMap.Enter?.(event2);\n              }\n            },\n            Enter(event2) {\n              if (node.dataset.disabled) return;\n              if (isAnchorElement(target) && isModifierKey(event2)) return;\n              send({ type: isBranchNode ? \"BRANCH_NODE.CLICK\" : \"NODE.CLICK\", id: nodeId, src: \"keyboard\" });\n              if (!isAnchorElement(target)) {\n                event2.preventDefault();\n              }\n            },\n            \"*\"(event2) {\n              if (node.dataset.disabled) return;\n              event2.preventDefault();\n              send({ type: \"SIBLINGS.EXPAND\", id: nodeId });\n            },\n            a(event2) {\n              if (!event2.metaKey || node.dataset.disabled) return;\n              event2.preventDefault();\n              send({ type: \"SELECTED.ALL\", moveFocus: true });\n            },\n            F2(event2) {\n              if (node.dataset.disabled) return;\n              const canRenameFn = prop(\"canRename\");\n              if (!canRenameFn) return;\n              const indexPath = collection2.getIndexPath(nodeId);\n              if (indexPath) {\n                const node2 = collection2.at(indexPath);\n                if (node2 && !canRenameFn(node2, indexPath)) {\n                  return;\n                }\n              }\n              event2.preventDefault();\n              send({ type: \"NODE.RENAME\", value: nodeId });\n            }\n          };\n          const key = getEventKey(event, { dir: prop(\"dir\") });\n          const exec = keyMap[key];\n          if (exec) {\n            exec(event);\n            return;\n          }\n          if (!getByTypeahead.isValidEvent(event)) return;\n          send({ type: \"TREE.TYPEAHEAD\", key: event.key, id: nodeId });\n          event.preventDefault();\n        }\n      });\n    },\n    getNodeState,\n    getItemProps(props2) {\n      const nodeState = getNodeState(props2);\n      return normalize.element({\n        ...parts.item.attrs,\n        id: nodeState.id,\n        dir: prop(\"dir\"),\n        \"data-ownedby\": getTreeId(scope),\n        \"data-path\": props2.indexPath.join(\"/\"),\n        \"data-value\": nodeState.value,\n        tabIndex: nodeState.focused ? 0 : -1,\n        \"data-focus\": dataAttr(nodeState.focused),\n        role: \"treeitem\",\n        \"aria-current\": nodeState.selected ? \"true\" : void 0,\n        \"aria-selected\": nodeState.disabled ? void 0 : nodeState.selected,\n        \"data-selected\": dataAttr(nodeState.selected),\n        \"aria-disabled\": ariaAttr(nodeState.disabled),\n        \"data-disabled\": dataAttr(nodeState.disabled),\n        \"data-renaming\": dataAttr(nodeState.renaming),\n        \"aria-level\": nodeState.depth,\n        \"data-depth\": nodeState.depth,\n        style: {\n          \"--depth\": nodeState.depth\n        },\n        onFocus(event) {\n          event.stopPropagation();\n          send({ type: \"NODE.FOCUS\", id: nodeState.value });\n        },\n        onClick(event) {\n          if (nodeState.disabled) return;\n          if (!isLeftClick(event)) return;\n          if (isAnchorElement(event.currentTarget) && isModifierKey(event)) return;\n          const isMetaKey = event.metaKey || event.ctrlKey;\n          send({ type: \"NODE.CLICK\", id: nodeState.value, shiftKey: event.shiftKey, ctrlKey: isMetaKey });\n          event.stopPropagation();\n          if (!isAnchorElement(event.currentTarget)) {\n            event.preventDefault();\n          }\n        }\n      });\n    },\n    getItemTextProps(props2) {\n      const itemState = getNodeState(props2);\n      return normalize.element({\n        ...parts.itemText.attrs,\n        \"data-disabled\": dataAttr(itemState.disabled),\n        \"data-selected\": dataAttr(itemState.selected),\n        \"data-focus\": dataAttr(itemState.focused)\n      });\n    },\n    getItemIndicatorProps(props2) {\n      const itemState = getNodeState(props2);\n      return normalize.element({\n        ...parts.itemIndicator.attrs,\n        \"aria-hidden\": true,\n        \"data-disabled\": dataAttr(itemState.disabled),\n        \"data-selected\": dataAttr(itemState.selected),\n        \"data-focus\": dataAttr(itemState.focused),\n        hidden: !itemState.selected\n      });\n    },\n    getBranchProps(props2) {\n      const nodeState = getNodeState(props2);\n      return normalize.element({\n        ...parts.branch.attrs,\n        \"data-depth\": nodeState.depth,\n        dir: prop(\"dir\"),\n        \"data-branch\": nodeState.value,\n        role: \"treeitem\",\n        \"data-ownedby\": getTreeId(scope),\n        \"data-value\": nodeState.value,\n        \"aria-level\": nodeState.depth,\n        \"aria-selected\": nodeState.disabled ? void 0 : nodeState.selected,\n        \"data-path\": props2.indexPath.join(\"/\"),\n        \"data-selected\": dataAttr(nodeState.selected),\n        \"aria-expanded\": nodeState.expanded,\n        \"data-state\": nodeState.expanded ? \"open\" : \"closed\",\n        \"aria-disabled\": ariaAttr(nodeState.disabled),\n        \"data-disabled\": dataAttr(nodeState.disabled),\n        \"data-loading\": dataAttr(nodeState.loading),\n        \"aria-busy\": ariaAttr(nodeState.loading),\n        style: {\n          \"--depth\": nodeState.depth\n        }\n      });\n    },\n    getBranchIndicatorProps(props2) {\n      const nodeState = getNodeState(props2);\n      return normalize.element({\n        ...parts.branchIndicator.attrs,\n        \"aria-hidden\": true,\n        \"data-state\": nodeState.expanded ? \"open\" : \"closed\",\n        \"data-disabled\": dataAttr(nodeState.disabled),\n        \"data-selected\": dataAttr(nodeState.selected),\n        \"data-focus\": dataAttr(nodeState.focused),\n        \"data-loading\": dataAttr(nodeState.loading)\n      });\n    },\n    getBranchTriggerProps(props2) {\n      const nodeState = getNodeState(props2);\n      return normalize.element({\n        ...parts.branchTrigger.attrs,\n        role: \"button\",\n        dir: prop(\"dir\"),\n        \"data-disabled\": dataAttr(nodeState.disabled),\n        \"data-state\": nodeState.expanded ? \"open\" : \"closed\",\n        \"data-value\": nodeState.value,\n        \"data-loading\": dataAttr(nodeState.loading),\n        disabled: nodeState.loading,\n        onClick(event) {\n          if (nodeState.disabled || nodeState.loading) return;\n          send({ type: \"BRANCH_TOGGLE.CLICK\", id: nodeState.value });\n          event.stopPropagation();\n        }\n      });\n    },\n    getBranchControlProps(props2) {\n      const nodeState = getNodeState(props2);\n      return normalize.element({\n        ...parts.branchControl.attrs,\n        role: \"button\",\n        id: nodeState.id,\n        dir: prop(\"dir\"),\n        tabIndex: nodeState.focused ? 0 : -1,\n        \"data-path\": props2.indexPath.join(\"/\"),\n        \"data-state\": nodeState.expanded ? \"open\" : \"closed\",\n        \"data-disabled\": dataAttr(nodeState.disabled),\n        \"data-selected\": dataAttr(nodeState.selected),\n        \"data-focus\": dataAttr(nodeState.focused),\n        \"data-renaming\": dataAttr(nodeState.renaming),\n        \"data-value\": nodeState.value,\n        \"data-depth\": nodeState.depth,\n        \"data-loading\": dataAttr(nodeState.loading),\n        \"aria-busy\": ariaAttr(nodeState.loading),\n        onFocus(event) {\n          send({ type: \"NODE.FOCUS\", id: nodeState.value });\n          event.stopPropagation();\n        },\n        onClick(event) {\n          if (nodeState.disabled) return;\n          if (nodeState.loading) return;\n          if (!isLeftClick(event)) return;\n          if (isAnchorElement(event.currentTarget) && isModifierKey(event)) return;\n          const isMetaKey = event.metaKey || event.ctrlKey;\n          send({ type: \"BRANCH_NODE.CLICK\", id: nodeState.value, shiftKey: event.shiftKey, ctrlKey: isMetaKey });\n          event.stopPropagation();\n        }\n      });\n    },\n    getBranchTextProps(props2) {\n      const nodeState = getNodeState(props2);\n      return normalize.element({\n        ...parts.branchText.attrs,\n        dir: prop(\"dir\"),\n        \"data-disabled\": dataAttr(nodeState.disabled),\n        \"data-state\": nodeState.expanded ? \"open\" : \"closed\",\n        \"data-loading\": dataAttr(nodeState.loading)\n      });\n    },\n    getBranchContentProps(props2) {\n      const nodeState = getNodeState(props2);\n      return normalize.element({\n        ...parts.branchContent.attrs,\n        role: \"group\",\n        dir: prop(\"dir\"),\n        \"data-state\": nodeState.expanded ? \"open\" : \"closed\",\n        \"data-depth\": nodeState.depth,\n        \"data-path\": props2.indexPath.join(\"/\"),\n        \"data-value\": nodeState.value,\n        hidden: !nodeState.expanded\n      });\n    },\n    getBranchIndentGuideProps(props2) {\n      const nodeState = getNodeState(props2);\n      return normalize.element({\n        ...parts.branchIndentGuide.attrs,\n        \"data-depth\": nodeState.depth\n      });\n    },\n    getNodeCheckboxProps(props2) {\n      const nodeState = getNodeState(props2);\n      const checkedState = nodeState.checked;\n      return normalize.element({\n        ...parts.nodeCheckbox.attrs,\n        tabIndex: -1,\n        role: \"checkbox\",\n        \"data-state\": checkedState === true ? \"checked\" : checkedState === false ? \"unchecked\" : \"indeterminate\",\n        \"aria-checked\": checkedState === true ? \"true\" : checkedState === false ? \"false\" : \"mixed\",\n        \"data-disabled\": dataAttr(nodeState.disabled),\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          if (nodeState.disabled) return;\n          if (!isLeftClick(event)) return;\n          send({ type: \"CHECKED.TOGGLE\", value: nodeState.value, isBranch: nodeState.isBranch });\n          event.stopPropagation();\n          const node = event.currentTarget.closest(\"[role=treeitem]\");\n          node?.focus({ preventScroll: true });\n        }\n      });\n    },\n    getNodeRenameInputProps(props2) {\n      const nodeState = getNodeState(props2);\n      return normalize.input({\n        ...parts.nodeRenameInput.attrs,\n        id: getRenameInputId(scope, nodeState.value),\n        type: \"text\",\n        \"aria-label\": \"Rename tree item\",\n        hidden: !nodeState.renaming,\n        onKeyDown(event) {\n          if (isComposingEvent(event)) return;\n          if (event.key === \"Escape\") {\n            send({ type: \"RENAME.CANCEL\" });\n            event.preventDefault();\n          }\n          if (event.key === \"Enter\") {\n            send({ type: \"RENAME.SUBMIT\", label: event.currentTarget.value });\n            event.preventDefault();\n          }\n          event.stopPropagation();\n        },\n        onBlur(event) {\n          send({ type: \"RENAME.SUBMIT\", label: event.currentTarget.value });\n        }\n      });\n    }\n  };\n}\nfunction expandBranches(params, values) {\n  const { context, prop, refs } = params;\n  if (!prop(\"loadChildren\")) {\n    context.set(\"expandedValue\", (prev) => uniq(add(prev, ...values)));\n    return;\n  }\n  const loadingStatus = context.get(\"loadingStatus\");\n  const [loadedValues, loadingValues] = partition(values, (value) => loadingStatus[value] === \"loaded\");\n  if (loadedValues.length > 0) {\n    context.set(\"expandedValue\", (prev) => uniq(add(prev, ...loadedValues)));\n  }\n  if (loadingValues.length === 0) return;\n  const collection2 = prop(\"collection\");\n  const [nodeWithChildren, nodeWithoutChildren] = partition(loadingValues, (id) => {\n    const node = collection2.findNode(id);\n    return collection2.getNodeChildren(node).length > 0;\n  });\n  if (nodeWithChildren.length > 0) {\n    context.set(\"expandedValue\", (prev) => uniq(add(prev, ...nodeWithChildren)));\n  }\n  if (nodeWithoutChildren.length === 0) return;\n  context.set(\"loadingStatus\", (prev) => ({\n    ...prev,\n    ...nodeWithoutChildren.reduce((acc, id) => ({ ...acc, [id]: \"loading\" }), {})\n  }));\n  const nodesToLoad = nodeWithoutChildren.map((id) => {\n    const indexPath = collection2.getIndexPath(id);\n    const valuePath = collection2.getValuePath(indexPath);\n    const node = collection2.findNode(id);\n    return { id, indexPath, valuePath, node };\n  });\n  const pendingAborts = refs.get(\"pendingAborts\");\n  const loadChildren = prop(\"loadChildren\");\n  ensure(loadChildren, () => \"[zag-js/tree-view] `loadChildren` is required for async expansion\");\n  const proms = nodesToLoad.map(({ id, indexPath, valuePath, node }) => {\n    const existingAbort = pendingAborts.get(id);\n    if (existingAbort) {\n      existingAbort.abort();\n      pendingAborts.delete(id);\n    }\n    const abortController = new AbortController();\n    pendingAborts.set(id, abortController);\n    return loadChildren({\n      valuePath,\n      indexPath,\n      node,\n      signal: abortController.signal\n    });\n  });\n  Promise.allSettled(proms).then((results) => {\n    const loadedValues2 = [];\n    const nodeWithErrors = [];\n    const nextLoadingStatus = context.get(\"loadingStatus\");\n    let collection3 = prop(\"collection\");\n    results.forEach((result, index) => {\n      const { id, indexPath, node, valuePath } = nodesToLoad[index];\n      if (result.status === \"fulfilled\") {\n        nextLoadingStatus[id] = \"loaded\";\n        loadedValues2.push(id);\n        collection3 = collection3.replace(indexPath, { ...node, children: result.value });\n      } else {\n        pendingAborts.delete(id);\n        Reflect.deleteProperty(nextLoadingStatus, id);\n        nodeWithErrors.push({ node, error: result.reason, indexPath, valuePath });\n      }\n    });\n    context.set(\"loadingStatus\", nextLoadingStatus);\n    if (loadedValues2.length) {\n      context.set(\"expandedValue\", (prev) => uniq(add(prev, ...loadedValues2)));\n      prop(\"onLoadChildrenComplete\")?.({ collection: collection3 });\n    }\n    if (nodeWithErrors.length) {\n      prop(\"onLoadChildrenError\")?.({ nodes: nodeWithErrors });\n    }\n  });\n}\n\n// src/utils/visit-skip.ts\nfunction skipFn(params) {\n  const { prop, context } = params;\n  return function skip({ indexPath }) {\n    const paths = prop(\"collection\").getValuePath(indexPath).slice(0, -1);\n    return paths.some((value) => !context.get(\"expandedValue\").includes(value));\n  };\n}\n\n// src/tree-view.machine.ts\nvar { and } = createGuards();\nvar machine = createMachine({\n  props({ props: props2 }) {\n    return {\n      selectionMode: \"single\",\n      collection: collection.empty(),\n      typeahead: true,\n      expandOnClick: true,\n      defaultExpandedValue: [],\n      defaultSelectedValue: [],\n      ...props2\n    };\n  },\n  initialState() {\n    return \"idle\";\n  },\n  context({ prop, bindable, getContext }) {\n    return {\n      expandedValue: bindable(() => ({\n        defaultValue: prop(\"defaultExpandedValue\"),\n        value: prop(\"expandedValue\"),\n        isEqual,\n        onChange(expandedValue) {\n          const ctx = getContext();\n          const focusedValue = ctx.get(\"focusedValue\");\n          prop(\"onExpandedChange\")?.({\n            expandedValue,\n            focusedValue,\n            get expandedNodes() {\n              return prop(\"collection\").findNodes(expandedValue);\n            }\n          });\n        }\n      })),\n      selectedValue: bindable(() => ({\n        defaultValue: prop(\"defaultSelectedValue\"),\n        value: prop(\"selectedValue\"),\n        isEqual,\n        onChange(selectedValue) {\n          const ctx = getContext();\n          const focusedValue = ctx.get(\"focusedValue\");\n          prop(\"onSelectionChange\")?.({\n            selectedValue,\n            focusedValue,\n            get selectedNodes() {\n              return prop(\"collection\").findNodes(selectedValue);\n            }\n          });\n        }\n      })),\n      focusedValue: bindable(() => ({\n        defaultValue: prop(\"defaultFocusedValue\") || null,\n        value: prop(\"focusedValue\"),\n        onChange(focusedValue) {\n          prop(\"onFocusChange\")?.({\n            focusedValue,\n            get focusedNode() {\n              return focusedValue ? prop(\"collection\").findNode(focusedValue) : null;\n            }\n          });\n        }\n      })),\n      loadingStatus: bindable(() => ({\n        defaultValue: {}\n      })),\n      checkedValue: bindable(() => ({\n        defaultValue: prop(\"defaultCheckedValue\") || [],\n        value: prop(\"checkedValue\"),\n        isEqual,\n        onChange(value) {\n          prop(\"onCheckedChange\")?.({ checkedValue: value });\n        }\n      })),\n      renamingValue: bindable(() => ({\n        sync: true,\n        defaultValue: null\n      }))\n    };\n  },\n  refs() {\n    return {\n      typeaheadState: { ...getByTypeahead.defaultOptions },\n      pendingAborts: /* @__PURE__ */ new Map()\n    };\n  },\n  computed: {\n    isMultipleSelection: ({ prop }) => prop(\"selectionMode\") === \"multiple\",\n    isTypingAhead: ({ refs }) => refs.get(\"typeaheadState\").keysSoFar.length > 0,\n    visibleNodes: ({ prop, context }) => {\n      const nodes = [];\n      prop(\"collection\").visit({\n        skip: skipFn({ prop, context }),\n        onEnter: (node, indexPath) => {\n          nodes.push({ node, indexPath });\n        }\n      });\n      return nodes;\n    }\n  },\n  on: {\n    \"EXPANDED.SET\": {\n      actions: [\"setExpanded\"]\n    },\n    \"EXPANDED.CLEAR\": {\n      actions: [\"clearExpanded\"]\n    },\n    \"EXPANDED.ALL\": {\n      actions: [\"expandAllBranches\"]\n    },\n    \"BRANCH.EXPAND\": {\n      actions: [\"expandBranches\"]\n    },\n    \"BRANCH.COLLAPSE\": {\n      actions: [\"collapseBranches\"]\n    },\n    \"SELECTED.SET\": {\n      actions: [\"setSelected\"]\n    },\n    \"SELECTED.ALL\": [\n      {\n        guard: and(\"isMultipleSelection\", \"moveFocus\"),\n        actions: [\"selectAllNodes\", \"focusTreeLastNode\"]\n      },\n      {\n        guard: \"isMultipleSelection\",\n        actions: [\"selectAllNodes\"]\n      }\n    ],\n    \"SELECTED.CLEAR\": {\n      actions: [\"clearSelected\"]\n    },\n    \"NODE.SELECT\": {\n      actions: [\"selectNode\"]\n    },\n    \"NODE.DESELECT\": {\n      actions: [\"deselectNode\"]\n    },\n    \"CHECKED.TOGGLE\": {\n      actions: [\"toggleChecked\"]\n    },\n    \"CHECKED.SET\": {\n      actions: [\"setChecked\"]\n    },\n    \"CHECKED.CLEAR\": {\n      actions: [\"clearChecked\"]\n    },\n    \"NODE.FOCUS\": {\n      actions: [\"setFocusedNode\"]\n    },\n    \"NODE.ARROW_DOWN\": [\n      {\n        guard: and(\"isShiftKey\", \"isMultipleSelection\"),\n        actions: [\"focusTreeNextNode\", \"extendSelectionToNextNode\"]\n      },\n      {\n        actions: [\"focusTreeNextNode\"]\n      }\n    ],\n    \"NODE.ARROW_UP\": [\n      {\n        guard: and(\"isShiftKey\", \"isMultipleSelection\"),\n        actions: [\"focusTreePrevNode\", \"extendSelectionToPrevNode\"]\n      },\n      {\n        actions: [\"focusTreePrevNode\"]\n      }\n    ],\n    \"NODE.ARROW_LEFT\": {\n      actions: [\"focusBranchNode\"]\n    },\n    \"BRANCH_NODE.ARROW_LEFT\": [\n      {\n        guard: \"isBranchExpanded\",\n        actions: [\"collapseBranch\"]\n      },\n      {\n        actions: [\"focusBranchNode\"]\n      }\n    ],\n    \"BRANCH_NODE.ARROW_RIGHT\": [\n      {\n        guard: and(\"isBranchFocused\", \"isBranchExpanded\"),\n        actions: [\"focusBranchFirstNode\"]\n      },\n      {\n        actions: [\"expandBranch\"]\n      }\n    ],\n    \"SIBLINGS.EXPAND\": {\n      actions: [\"expandSiblingBranches\"]\n    },\n    \"NODE.HOME\": [\n      {\n        guard: and(\"isShiftKey\", \"isMultipleSelection\"),\n        actions: [\"extendSelectionToFirstNode\", \"focusTreeFirstNode\"]\n      },\n      {\n        actions: [\"focusTreeFirstNode\"]\n      }\n    ],\n    \"NODE.END\": [\n      {\n        guard: and(\"isShiftKey\", \"isMultipleSelection\"),\n        actions: [\"extendSelectionToLastNode\", \"focusTreeLastNode\"]\n      },\n      {\n        actions: [\"focusTreeLastNode\"]\n      }\n    ],\n    \"NODE.CLICK\": [\n      {\n        guard: and(\"isCtrlKey\", \"isMultipleSelection\"),\n        actions: [\"toggleNodeSelection\"]\n      },\n      {\n        guard: and(\"isShiftKey\", \"isMultipleSelection\"),\n        actions: [\"extendSelectionToNode\"]\n      },\n      {\n        actions: [\"selectNode\"]\n      }\n    ],\n    \"BRANCH_NODE.CLICK\": [\n      {\n        guard: and(\"isCtrlKey\", \"isMultipleSelection\"),\n        actions: [\"toggleNodeSelection\"]\n      },\n      {\n        guard: and(\"isShiftKey\", \"isMultipleSelection\"),\n        actions: [\"extendSelectionToNode\"]\n      },\n      {\n        guard: \"expandOnClick\",\n        actions: [\"selectNode\", \"toggleBranchNode\"]\n      },\n      {\n        actions: [\"selectNode\"]\n      }\n    ],\n    \"BRANCH_TOGGLE.CLICK\": {\n      actions: [\"toggleBranchNode\"]\n    },\n    \"TREE.TYPEAHEAD\": {\n      actions: [\"focusMatchedNode\"]\n    }\n  },\n  exit: [\"clearPendingAborts\"],\n  states: {\n    idle: {\n      on: {\n        \"NODE.RENAME\": {\n          target: \"renaming\",\n          actions: [\"setRenamingValue\"]\n        }\n      }\n    },\n    renaming: {\n      entry: [\"syncRenameInput\", \"focusRenameInput\"],\n      on: {\n        \"RENAME.SUBMIT\": {\n          guard: \"isRenameLabelValid\",\n          target: \"idle\",\n          actions: [\"submitRenaming\"]\n        },\n        \"RENAME.CANCEL\": {\n          target: \"idle\",\n          actions: [\"cancelRenaming\"]\n        }\n      }\n    }\n  },\n  implementations: {\n    guards: {\n      isBranchFocused: ({ context, event }) => context.get(\"focusedValue\") === event.id,\n      isBranchExpanded: ({ context, event }) => context.get(\"expandedValue\").includes(event.id),\n      isShiftKey: ({ event }) => event.shiftKey,\n      isCtrlKey: ({ event }) => event.ctrlKey,\n      hasSelectedItems: ({ context }) => context.get(\"selectedValue\").length > 0,\n      isMultipleSelection: ({ prop }) => prop(\"selectionMode\") === \"multiple\",\n      moveFocus: ({ event }) => !!event.moveFocus,\n      expandOnClick: ({ prop }) => !!prop(\"expandOnClick\"),\n      isRenameLabelValid: ({ event }) => event.label.trim() !== \"\"\n    },\n    actions: {\n      selectNode({ context, event }) {\n        const value = event.id || event.value;\n        context.set(\"selectedValue\", (prev) => {\n          if (value == null) return prev;\n          if (!event.isTrusted && isArray(value)) return prev.concat(...value);\n          return [isArray(value) ? last(value) : value].filter(Boolean);\n        });\n      },\n      deselectNode({ context, event }) {\n        const value = toArray(event.id || event.value);\n        context.set(\"selectedValue\", (prev) => remove(prev, ...value));\n      },\n      setFocusedNode({ context, event }) {\n        context.set(\"focusedValue\", event.id);\n      },\n      clearFocusedNode({ context }) {\n        context.set(\"focusedValue\", null);\n      },\n      clearSelectedItem({ context }) {\n        context.set(\"selectedValue\", []);\n      },\n      toggleBranchNode({ context, event, action }) {\n        const isExpanded = context.get(\"expandedValue\").includes(event.id);\n        action(isExpanded ? [\"collapseBranch\"] : [\"expandBranch\"]);\n      },\n      expandBranch(params) {\n        const { event } = params;\n        expandBranches(params, [event.id]);\n      },\n      expandBranches(params) {\n        const { context, event } = params;\n        const valuesToExpand = toArray(event.value);\n        expandBranches(params, diff(valuesToExpand, context.get(\"expandedValue\")));\n      },\n      collapseBranch({ context, event }) {\n        context.set(\"expandedValue\", (prev) => remove(prev, event.id));\n      },\n      collapseBranches(params) {\n        const { context, event } = params;\n        const value = toArray(event.value);\n        context.set(\"expandedValue\", (prev) => remove(prev, ...value));\n      },\n      setExpanded({ context, event }) {\n        if (!isArray(event.value)) return;\n        context.set(\"expandedValue\", event.value);\n      },\n      clearExpanded({ context }) {\n        context.set(\"expandedValue\", []);\n      },\n      setSelected({ context, event }) {\n        if (!isArray(event.value)) return;\n        context.set(\"selectedValue\", event.value);\n      },\n      clearSelected({ context }) {\n        context.set(\"selectedValue\", []);\n      },\n      focusTreeFirstNode(params) {\n        const { prop, scope } = params;\n        const collection2 = prop(\"collection\");\n        const firstNode = collection2.getFirstNode();\n        const firstValue = collection2.getNodeValue(firstNode);\n        const scrolled = scrollToNode(params, firstValue);\n        if (scrolled) raf(() => focusNode(scope, firstValue));\n        else focusNode(scope, firstValue);\n      },\n      focusTreeLastNode(params) {\n        const { prop, scope } = params;\n        const collection2 = prop(\"collection\");\n        const lastNode = collection2.getLastNode(void 0, { skip: skipFn(params) });\n        const lastValue = collection2.getNodeValue(lastNode);\n        const scrolled = scrollToNode(params, lastValue);\n        if (scrolled) raf(() => focusNode(scope, lastValue));\n        else focusNode(scope, lastValue);\n      },\n      focusBranchFirstNode(params) {\n        const { event, prop, scope } = params;\n        const collection2 = prop(\"collection\");\n        const branchNode = collection2.findNode(event.id);\n        const firstNode = collection2.getFirstNode(branchNode);\n        const firstValue = collection2.getNodeValue(firstNode);\n        const scrolled = scrollToNode(params, firstValue);\n        if (scrolled) raf(() => focusNode(scope, firstValue));\n        else focusNode(scope, firstValue);\n      },\n      focusTreeNextNode(params) {\n        const { event, prop, scope } = params;\n        const collection2 = prop(\"collection\");\n        const nextNode = collection2.getNextNode(event.id, { skip: skipFn(params) });\n        if (!nextNode) return;\n        const nextValue = collection2.getNodeValue(nextNode);\n        const scrolled = scrollToNode(params, nextValue);\n        if (scrolled) raf(() => focusNode(scope, nextValue));\n        else focusNode(scope, nextValue);\n      },\n      focusTreePrevNode(params) {\n        const { event, prop, scope } = params;\n        const collection2 = prop(\"collection\");\n        const prevNode = collection2.getPreviousNode(event.id, { skip: skipFn(params) });\n        if (!prevNode) return;\n        const prevValue = collection2.getNodeValue(prevNode);\n        const scrolled = scrollToNode(params, prevValue);\n        if (scrolled) raf(() => focusNode(scope, prevValue));\n        else focusNode(scope, prevValue);\n      },\n      focusBranchNode(params) {\n        const { event, prop, scope } = params;\n        const collection2 = prop(\"collection\");\n        const parentNode = collection2.getParentNode(event.id);\n        const parentValue = parentNode ? collection2.getNodeValue(parentNode) : void 0;\n        if (!parentValue) return;\n        const scrolled = scrollToNode(params, parentValue);\n        if (scrolled) raf(() => focusNode(scope, parentValue));\n        else focusNode(scope, parentValue);\n      },\n      selectAllNodes({ context, prop }) {\n        context.set(\"selectedValue\", prop(\"collection\").getValues());\n      },\n      focusMatchedNode(params) {\n        const { context, prop, refs, event, scope, computed } = params;\n        const nodes = computed(\"visibleNodes\");\n        const elements = nodes.map(({ node: node2 }) => ({\n          textContent: prop(\"collection\").stringifyNode(node2),\n          id: prop(\"collection\").getNodeValue(node2)\n        }));\n        const node = getByTypeahead(elements, {\n          state: refs.get(\"typeaheadState\"),\n          activeId: context.get(\"focusedValue\"),\n          key: event.key\n        });\n        if (!node?.id) return;\n        const scrolled = scrollToNode(params, node.id);\n        if (scrolled) raf(() => focusNode(scope, node.id));\n        else focusNode(scope, node.id);\n      },\n      toggleNodeSelection({ context, event }) {\n        const selectedValue = addOrRemove(context.get(\"selectedValue\"), event.id);\n        context.set(\"selectedValue\", selectedValue);\n      },\n      expandAllBranches(params) {\n        const { context, prop } = params;\n        const branchValues = prop(\"collection\").getBranchValues();\n        const valuesToExpand = diff(branchValues, context.get(\"expandedValue\"));\n        expandBranches(params, valuesToExpand);\n      },\n      expandSiblingBranches(params) {\n        const { context, event, prop } = params;\n        const collection2 = prop(\"collection\");\n        const indexPath = collection2.getIndexPath(event.id);\n        if (!indexPath) return;\n        const nodes = collection2.getSiblingNodes(indexPath);\n        const values = nodes.map((node) => collection2.getNodeValue(node));\n        const valuesToExpand = diff(values, context.get(\"expandedValue\"));\n        expandBranches(params, valuesToExpand);\n      },\n      extendSelectionToNode(params) {\n        const { context, event, prop, computed } = params;\n        const collection2 = prop(\"collection\");\n        const anchorValue = first(context.get(\"selectedValue\")) || collection2.getNodeValue(collection2.getFirstNode());\n        const targetValue = event.id;\n        let values = [anchorValue, targetValue];\n        let hits = 0;\n        const visibleNodes = computed(\"visibleNodes\");\n        visibleNodes.forEach(({ node }) => {\n          const nodeValue = collection2.getNodeValue(node);\n          if (hits === 1) values.push(nodeValue);\n          if (nodeValue === anchorValue || nodeValue === targetValue) hits++;\n        });\n        context.set(\"selectedValue\", uniq(values));\n      },\n      extendSelectionToNextNode(params) {\n        const { context, event, prop } = params;\n        const collection2 = prop(\"collection\");\n        const nextNode = collection2.getNextNode(event.id, { skip: skipFn(params) });\n        if (!nextNode) return;\n        const values = new Set(context.get(\"selectedValue\"));\n        const nextValue = collection2.getNodeValue(nextNode);\n        if (nextValue == null) return;\n        if (values.has(event.id) && values.has(nextValue)) {\n          values.delete(event.id);\n        } else if (!values.has(nextValue)) {\n          values.add(nextValue);\n        }\n        context.set(\"selectedValue\", Array.from(values));\n      },\n      extendSelectionToPrevNode(params) {\n        const { context, event, prop } = params;\n        const collection2 = prop(\"collection\");\n        const prevNode = collection2.getPreviousNode(event.id, { skip: skipFn(params) });\n        if (!prevNode) return;\n        const values = new Set(context.get(\"selectedValue\"));\n        const prevValue = collection2.getNodeValue(prevNode);\n        if (prevValue == null) return;\n        if (values.has(event.id) && values.has(prevValue)) {\n          values.delete(event.id);\n        } else if (!values.has(prevValue)) {\n          values.add(prevValue);\n        }\n        context.set(\"selectedValue\", Array.from(values));\n      },\n      extendSelectionToFirstNode(params) {\n        const { context, prop } = params;\n        const collection2 = prop(\"collection\");\n        const currentSelection = first(context.get(\"selectedValue\"));\n        const values = [];\n        collection2.visit({\n          skip: skipFn(params),\n          onEnter: (node) => {\n            const nodeValue = collection2.getNodeValue(node);\n            values.push(nodeValue);\n            if (nodeValue === currentSelection) {\n              return \"stop\";\n            }\n          }\n        });\n        context.set(\"selectedValue\", values);\n      },\n      extendSelectionToLastNode(params) {\n        const { context, prop } = params;\n        const collection2 = prop(\"collection\");\n        const currentSelection = first(context.get(\"selectedValue\"));\n        const values = [];\n        let current = false;\n        collection2.visit({\n          skip: skipFn(params),\n          onEnter: (node) => {\n            const nodeValue = collection2.getNodeValue(node);\n            if (nodeValue === currentSelection) current = true;\n            if (current) values.push(nodeValue);\n          }\n        });\n        context.set(\"selectedValue\", values);\n      },\n      clearPendingAborts({ refs }) {\n        const aborts = refs.get(\"pendingAborts\");\n        aborts.forEach((abort) => abort.abort());\n        aborts.clear();\n      },\n      toggleChecked({ context, event, prop }) {\n        const collection2 = prop(\"collection\");\n        context.set(\n          \"checkedValue\",\n          (prev) => event.isBranch ? toggleBranchChecked(collection2, event.value, prev) : addOrRemove(prev, event.value)\n        );\n      },\n      setChecked({ context, event }) {\n        context.set(\"checkedValue\", event.value);\n      },\n      clearChecked({ context }) {\n        context.set(\"checkedValue\", []);\n      },\n      setRenamingValue({ context, event, prop }) {\n        context.set(\"renamingValue\", event.value);\n        const onRenameStartFn = prop(\"onRenameStart\");\n        if (onRenameStartFn) {\n          const collection2 = prop(\"collection\");\n          const indexPath = collection2.getIndexPath(event.value);\n          if (indexPath) {\n            const node = collection2.at(indexPath);\n            if (node) {\n              onRenameStartFn({\n                value: event.value,\n                node,\n                indexPath\n              });\n            }\n          }\n        }\n      },\n      submitRenaming({ context, event, prop, scope }) {\n        const renamingValue = context.get(\"renamingValue\");\n        if (!renamingValue) return;\n        const collection2 = prop(\"collection\");\n        const indexPath = collection2.getIndexPath(renamingValue);\n        if (!indexPath) return;\n        const trimmedLabel = event.label.trim();\n        const onBeforeRenameFn = prop(\"onBeforeRename\");\n        if (onBeforeRenameFn) {\n          const details = {\n            value: renamingValue,\n            label: trimmedLabel,\n            indexPath\n          };\n          const shouldRename = onBeforeRenameFn(details);\n          if (!shouldRename) {\n            context.set(\"renamingValue\", null);\n            focusNode(scope, renamingValue);\n            return;\n          }\n        }\n        prop(\"onRenameComplete\")?.({\n          value: renamingValue,\n          label: trimmedLabel,\n          indexPath\n        });\n        context.set(\"renamingValue\", null);\n        focusNode(scope, renamingValue);\n      },\n      cancelRenaming({ context, scope }) {\n        const renamingValue = context.get(\"renamingValue\");\n        context.set(\"renamingValue\", null);\n        if (renamingValue) {\n          focusNode(scope, renamingValue);\n        }\n      },\n      syncRenameInput({ context, scope, prop }) {\n        const renamingValue = context.get(\"renamingValue\");\n        if (!renamingValue) return;\n        const collection2 = prop(\"collection\");\n        const node = collection2.findNode(renamingValue);\n        if (!node) return;\n        const label = collection2.stringifyNode(node);\n        const inputEl = getRenameInputEl(scope, renamingValue);\n        setElementValue(inputEl, label);\n      },\n      focusRenameInput({ context, scope }) {\n        const renamingValue = context.get(\"renamingValue\");\n        if (!renamingValue) return;\n        const inputEl = getRenameInputEl(scope, renamingValue);\n        if (!inputEl) return;\n        inputEl.focus();\n        inputEl.select();\n      }\n    }\n  }\n});\nfunction scrollToNode(params, value) {\n  const { prop, scope, computed } = params;\n  const scrollToIndexFn = prop(\"scrollToIndexFn\");\n  if (!scrollToIndexFn) return false;\n  const collection2 = prop(\"collection\");\n  const visibleNodes = computed(\"visibleNodes\");\n  for (let i = 0; i < visibleNodes.length; i++) {\n    const { node, indexPath } = visibleNodes[i];\n    if (collection2.getNodeValue(node) !== value) continue;\n    scrollToIndexFn({\n      index: i,\n      node,\n      indexPath,\n      getElement: () => scope.getById(getNodeId(scope, value))\n    });\n    return true;\n  }\n  return false;\n}\nvar props = createProps()([\n  \"ids\",\n  \"collection\",\n  \"dir\",\n  \"expandedValue\",\n  \"expandOnClick\",\n  \"defaultFocusedValue\",\n  \"focusedValue\",\n  \"getRootNode\",\n  \"id\",\n  \"onExpandedChange\",\n  \"onFocusChange\",\n  \"onSelectionChange\",\n  \"checkedValue\",\n  \"selectedValue\",\n  \"selectionMode\",\n  \"typeahead\",\n  \"defaultExpandedValue\",\n  \"defaultSelectedValue\",\n  \"defaultCheckedValue\",\n  \"onCheckedChange\",\n  \"onLoadChildrenComplete\",\n  \"onLoadChildrenError\",\n  \"loadChildren\",\n  \"canRename\",\n  \"onRenameStart\",\n  \"onBeforeRename\",\n  \"onRenameComplete\",\n  \"scrollToIndexFn\"\n]);\nvar splitProps = createSplitProps(props);\nvar itemProps = createProps()([\"node\", \"indexPath\"]);\nvar splitItemProps = createSplitProps(itemProps);\n\nexport { anatomy, collection, connect, filePathCollection, itemProps, machine, props, splitItemProps, splitProps };\n", "import * as treeView from \"@zag-js/tree-view\";\nimport type { Direction } from \"@zag-js/types\";\nimport { VanillaMachine, normalizeProps } from \"@zag-js/vanilla\";\n\nimport {\n  Component,\n  generateId,\n  getString,\n  getStringList,\n  arraysEqualUnordered,\n  renderPart,\n  renderNode,\n  getBoolean,\n} from \"../lib\";\ninterface Node {\n  id: string;\n  name: string;\n  children?: Node[];\n}\nfunction loadJsonTreeNodes(path: string): Node {\n  try {\n    const script = document.querySelector(\n      `script[type=\"application/json\"][data-tree-view=\"${path}\"]`,\n    );\n    if (!script) throw new Error(`No inline JSON script found for ${path}`);\n    return JSON.parse(script.textContent || \"{}\");\n  } catch (e) {\n    console.error(\"Failed to load JSON tree nodes:\", e);\n    return { id: \"root\", name: \"Root\" };\n  }\n}\nfunction buildNodeTreeFromDOM(container: HTMLElement): Node {\n  const rootEl = container.querySelector<HTMLElement>('[data-part=\"tree\"]');\n  if (!rootEl) {\n    return { id: \"root\", name: \"Root\" };\n  }\n  function processElement(element: HTMLElement): Node | null {\n    const part = element.getAttribute(\"data-part\");\n    const id = element.getAttribute(\"data-id\");\n    const name = element.getAttribute(\"data-name\");\n    if (!id || !name) {\n      return null;\n    }\n    if (part === \"branch\") {\n      const branchContent = element.querySelector(\n        `[data-part=\"branch-content\"][data-id=\"${id}\"]`,\n      );\n      if (branchContent) {\n        const childElements = Array.from(branchContent.children).filter(\n          (child) => {\n            const childPart = child.getAttribute(\"data-part\");\n            return childPart === \"item\" || childPart === \"branch\";\n          },\n        );\n        const childNodes = childElements\n          .map((childEl) => processElement(childEl as HTMLElement))\n          .filter(Boolean) as Node[];\n        return {\n          id,\n          name,\n          children: childNodes.length > 0 ? childNodes : undefined,\n        };\n      }\n      return { id, name };\n    } else if (part === \"item\") {\n      return {\n        id,\n        name,\n      };\n    }\n    return null;\n  }\n  const topElements = Array.from(rootEl.children).filter((child) => {\n    const childPart = child.getAttribute(\"data-part\");\n    return childPart === \"item\" || childPart === \"branch\";\n  });\n  const children = topElements\n    .map((el) => processElement(el as HTMLElement))\n    .filter(Boolean) as Node[];\n  return {\n    id: getString(rootEl, \"nodeRootId\") || \"root\",\n    name: getString(rootEl, \"nodeRootName\") || \"Root\",\n    children,\n  };\n}\nexport class TreeView extends Component<treeView.Props, treeView.Api> {\n  collection!: ReturnType<typeof treeView.collection<Node>>;\n  private domInitialized = false;\n  initMachine(props: treeView.Props): VanillaMachine<any> {\n    return new VanillaMachine(treeView.machine, props);\n  }\n  initApi(): treeView.Api {\n    return treeView.connect(this.machine.service, normalizeProps);\n  }\n  renderNodes() {\n    const treeEl = this.el.querySelector('[data-part=\"tree\"]');\n    if (!treeEl || !(treeEl instanceof HTMLElement)) return;\n    const noIcon = getBoolean(this.el, \"noIcon\");\n    const noIndicator = getBoolean(this.el, \"noIndicator\");\n    treeEl.innerHTML = \"\";\n    const folderIconSvg = `\n    <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n      <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M2.25 12.75V12A2.25 2.25 0 0 1 4.5 9.75h15A2.25 2.25 0 0 1 21.75 12v.75m-8.69-6.44-2.12-2.12a1.5 1.5 0 0 0-1.061-.44H4.5A2.25 2.25 0 0 0 2.25 6v12a2.25 2.25 0 0 0 2.25 2.25h15A2.25 2.25 0 0 0 21.75 18V9a2.25 2.25 0 0 0-2.25-2.25h-5.379a1.5 1.5 0 0 1-1.06-.44Z\" />\n    </svg>\n`;\n    const docIconSvg = `\n    <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n      <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m2.25 0H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z\" />\n    </svg>\n`;\n    const chevronIconSvg = `\n    <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n      <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m8.25 4.5 7.5 7.5-7.5 7.5\"></path>\n    </svg>`;\n    const renderNodeRecursive = (node: Node, parentEl: HTMLElement) => {\n      const isBranch = !!node.children?.length;\n      if (isBranch) {\n        const branchEl = document.createElement(\"div\");\n        branchEl.setAttribute(\"data-part\", \"branch\");\n        branchEl.setAttribute(\"data-id\", node.id);\n        branchEl.setAttribute(\"data-name\", node.name);\n        const branchControl = document.createElement(\"div\");\n        branchControl.setAttribute(\"data-part\", \"branch-control\");\n        branchControl.setAttribute(\"data-id\", node.id);\n        branchControl.setAttribute(\"data-name\", node.name);\n        if (!noIcon)\n          branchControl.insertAdjacentHTML(\"beforeend\", folderIconSvg);\n        const branchText = document.createElement(\"span\");\n        branchText.setAttribute(\"data-part\", \"branch-text\");\n        branchText.setAttribute(\"data-id\", node.id);\n        branchText.setAttribute(\"data-name\", node.name);\n        branchText.textContent = node.name;\n        branchControl.appendChild(branchText);\n\n        if (!noIndicator) {\n          const branchIndicator = document.createElement(\"span\");\n          branchIndicator.setAttribute(\"data-part\", \"branch-indicator\");\n          branchIndicator.setAttribute(\"data-id\", node.id);\n          branchIndicator.setAttribute(\"data-name\", node.name);\n          branchIndicator.insertAdjacentHTML(\"beforeend\", chevronIconSvg);\n          branchControl.appendChild(branchIndicator);\n        }\n        branchEl.appendChild(branchControl);\n        const branchContent = document.createElement(\"div\");\n        branchContent.setAttribute(\"data-part\", \"branch-content\");\n        branchContent.setAttribute(\"data-id\", node.id);\n        branchContent.setAttribute(\"data-name\", node.name);\n        const branchIndentGuide = document.createElement(\"div\");\n        branchIndentGuide.setAttribute(\"data-part\", \"branch-indent-guide\");\n        branchIndentGuide.setAttribute(\"data-id\", node.id);\n        branchIndentGuide.setAttribute(\"data-name\", node.name);\n        branchContent.appendChild(branchIndentGuide);\n        node.children!.forEach((child) =>\n          renderNodeRecursive(child, branchContent),\n        );\n        branchEl.appendChild(branchContent);\n        parentEl.appendChild(branchEl);\n      } else {\n        const itemEl = document.createElement(\"div\");\n        itemEl.setAttribute(\"data-part\", \"item\");\n        itemEl.setAttribute(\"data-id\", node.id);\n        itemEl.setAttribute(\"data-name\", node.name);\n        itemEl.textContent = node.name;\n        if (!noIcon) itemEl.insertAdjacentHTML(\"afterbegin\", docIconSvg);\n        parentEl.appendChild(itemEl);\n      }\n    };\n    if (this.collection.rootNode.children) {\n      this.collection.rootNode.children.forEach((childNode) => {\n        renderNodeRecursive(childNode, treeEl);\n      });\n    }\n  }\n  render() {\n    const isJson = getString(this.el, \"json\") !== undefined;\n    if (isJson && !this.domInitialized) {\n      this.renderNodes();\n      this.domInitialized = true;\n    }\n    const parts = [\"root\", \"label\", \"tree\"];\n    for (const part of parts) {\n      renderPart(this.el, part, this.api);\n    }\n    const items = [\n      \"item\",\n      \"branch\",\n      \"branch-content\",\n      \"branch-text\",\n      \"branch-control\",\n      \"branch-indicator\",\n      \"branch-indent-guide\",\n    ];\n    for (const item of items) {\n      renderNode(this.el, item, this.api, this.collection.rootNode);\n    }\n  }\n}\nexport function initTreeView(\n  doc: HTMLElement | Document = document,\n  selector = \".tree-view-js\",\n): void {\n  doc.querySelectorAll<HTMLElement>(selector).forEach((rootEl) => {\n    const directions = [\"ltr\", \"rtl\"] as const;\n    const selectionModes = [\"single\", \"multiple\"] as const;\n    const jsonPath = getString(rootEl, \"json\");\n    let rootNode: Node;\n    if (jsonPath !== undefined) {\n      rootNode = loadJsonTreeNodes(jsonPath);\n    } else {\n      rootNode = buildNodeTreeFromDOM(rootEl);\n    }\n    const collection = treeView.collection<Node>({\n      nodeToValue: (node: Node) => node.id,\n      nodeToString: (node: Node) => node.name,\n      rootNode,\n    });\n    const treeViewComponent = new TreeView(rootEl, {\n      id: generateId(rootEl, \"treeView\"),\n      defaultExpandedValue: getStringList(rootEl, \"defaultExpandedValue\"),\n      defaultSelectedValue: getStringList(rootEl, \"defaultSelectedValue\"),\n      dir: getString<Direction>(rootEl, \"dir\", directions),\n      expandedValue: getStringList(rootEl, \"expandedValue\"),\n      expandOnClick: getBoolean(rootEl, \"expandOnClick\"),\n      focusedValue: getString(rootEl, \"focusedValue\"),\n      defaultFocusedValue: getString(rootEl, \"defaultFocusedValue\"),\n      selectionMode: getString(rootEl, \"selectionMode\", selectionModes),\n      selectedValue: getStringList(rootEl, \"selectedValue\"),\n      typeahead: getBoolean(rootEl, \"typeahead\"),\n      collection,\n      onCheckedChange(details) {\n        const eventName = getString(rootEl, \"onCheckedChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onExpandedChange(details) {\n        const eventName = getString(rootEl, \"onExpandedChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onFocusChange(details) {\n        const eventName = getString(rootEl, \"onFocusChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onSelectionChange(details) {\n        const eventName = getString(rootEl, \"onSelectionChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n    });\n    treeViewComponent.collection = collection;\n    treeViewComponent.init();\n    treeViewComponent.el.addEventListener(\"tree-view:set-value\", (event) => {\n      const { value } = (event as CustomEvent<{ value: string[] }>).detail;\n      const current = treeViewComponent.api.selectedValue;\n      if (!arraysEqualUnordered(current, value)) {\n        treeViewComponent.api.setSelectedValue(value);\n      }\n    });\n  });\n}\n", "import { initAccordion } from \"./components/accordion\";\nimport { initAngleSlider } from \"./components/angle-slider\";\nimport { initAvatar } from \"./components/avatar\";\nimport { initCarousel } from \"./components/carousel\";\nimport { initCheckbox } from \"./components/checkbox\";\nimport { initClipboard } from \"./components/clipboard\";\nimport { initCode } from \"./components/code\";\nimport { initCollapsible } from \"./components/collapsible\";\nimport { initColorPicker } from \"./components/color-picker\";\nimport { initCombobox } from \"./components/combobox\";\nimport { initDatePicker } from \"./components/date-picker\";\nimport { initDialog } from \"./components/dialog\";\nimport { initEditable } from \"./components/editable\";\nimport { initFileUpload } from \"./components/file-upload\";\nimport { initFloatingPanel } from \"./components/floating-panel\";\nimport { initListbox } from \"./components/listbox\";\nimport { initMenu } from \"./components/menu\";\nimport { initNumberInput } from \"./components/number-input\";\nimport { initPasswordInput } from \"./components/password-input\";\nimport { initPinInput } from \"./components/pin-input\";\nimport { initQrCode } from \"./components/qr-code\";\nimport { initRadioGroup } from \"./components/radio-group\";\nimport { initSelect } from \"./components/select\";\nimport { initSignaturePad } from \"./components/signature-pad\";\nimport { initSiteSearch } from \"./components/site-search\";\nimport { initSwitch } from \"./components/switch\";\nimport { initTabs } from \"./components/tabs\";\nimport { initTimer } from \"./components/timer\";\nimport {\n  initToast,\n  createToast,\n  createInfoToast,\n  createSuccessToast,\n  createErrorToast,\n  createWarningToast,\n  createLoadingToast,\n  updateToast,\n  dismissToast,\n} from \"./components/toast\";\nimport { initToggleGroup } from \"./components/toggle-group\";\nimport { initTreeView } from \"./components/tree-view\";\n\nexport {\n  initAccordion,\n  initAngleSlider,\n  initAvatar,\n  initCarousel,\n  initCheckbox,\n  initClipboard,\n  initCode,\n  initCollapsible,\n  initColorPicker,\n  initCombobox,\n  initDatePicker,\n  initDialog,\n  initEditable,\n  initFileUpload,\n  initFloatingPanel,\n  initListbox,\n  initMenu,\n  initNumberInput,\n  initPasswordInput,\n  initPinInput,\n  initQrCode,\n  initRadioGroup,\n  initSelect,\n  initSignaturePad,\n  initSiteSearch,\n  initSwitch,\n  initTabs,\n  initTimer,\n  initToast,\n  initToggleGroup,\n  initTreeView,\n};\n\n// Export toast helper functions\nexport {\n  createToast,\n  createInfoToast,\n  createSuccessToast,\n  createErrorToast,\n  createWarningToast,\n  createLoadingToast,\n  updateToast,\n  dismissToast,\n};\n\n// Export types\nexport type {\n  Pagefind,\n  PagefindIndexOptions,\n  PagefindRankingWeights,\n  PagefindSearchOptions,\n  PagefindFilterCounts,\n  PagefindSearchResults,\n  PagefindSearchResult,\n  PagefindSearchFragment,\n  PagefindSubResult,\n  PagefindWordLocation,\n  PagefindSearchAnchor,\n} from \"./components/site-search\";\n\n/**\n * Initialize all components with their default selectors.\n * Useful for development and testing.\n */\nexport function initAll(doc: HTMLElement | Document = document): void {\n  initAccordion(doc);\n  initAngleSlider(doc);\n  initAvatar(doc);\n  initCarousel(doc);\n  initCheckbox(doc);\n  initClipboard(doc);\n  initCode(doc);\n  initCollapsible(doc);\n  initColorPicker(doc);\n  initCombobox(doc);\n  initDatePicker(doc);\n  initDialog(doc);\n  initEditable(doc);\n  initFileUpload(doc);\n  initFloatingPanel(doc);\n  initListbox(doc);\n  initMenu(doc);\n  initNumberInput(doc);\n  initPasswordInput(doc);\n  initPinInput(doc);\n  initQrCode(doc);\n  initRadioGroup(doc);\n  initSelect(doc);\n  initSignaturePad(doc);\n  initSiteSearch(undefined, doc);\n  initSwitch(doc);\n  initTabs(doc);\n  initTimer(doc);\n  initToast(doc);\n  initToggleGroup(doc);\n  initTreeView(doc);\n}\n"],
  "mappings": "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",
  "names": ["require_prism", "__commonJSMin", "exports", "module", "_self", "Prism", "lang", "uniqueId", "plainTextGrammar", "_", "encode", "tokens", "Token", "o", "obj", "deepClone", "visited", "clone", "id", "key", "v", "i", "element", "language", "err", "src", "scripts", "className", "defaultActivation", "no", "classList", "redef", "inside", "before", "insert", "root", "grammar", "ret", "token", "newToken", "old", "value", "DFS", "callback", "type", "objId", "property", "propertyType", "async", "container", "env", "parent", "code", "insertHighlightedCode", "highlightedCode", "worker", "evt", "text", "rest", "tokenList", "LinkedList", "addAfter", "matchGrammar", "toArray", "name", "hooks", "callbacks", "content", "alias", "matchedStr", "stringify", "s", "e", "aliases", "attributes", "matchPattern", "pattern", "pos", "lookbehind", "match", "lookbehindLength", "startNode", "startPos", "rematch", "patterns", "j", "patternObj", "greedy", "flags", "currentNode", "str", "removeCount", "from", "to", "p", "k", "matchStr", "after", "reach", "removeFrom", "removeRange", "wrapped", "nestedRematch", "head", "tail", "list", "node", "next", "newNode", "count", "array", "message", "immediateClose", "script", "highlightAutomaticallyCallback", "readyState", "tagName", "includedCdataInside", "def", "attrName", "string", "markup", "LOADING_MESSAGE", "FAILURE_MESSAGE", "status", "FAILURE_EMPTY_MESSAGE", "EXTENSIONS", "STATUS_ATTR", "STATUS_LOADING", "STATUS_LOADED", "STATUS_FAILED", "SELECTOR", "loadFile", "success", "error", "xhr", "parseRange", "range", "m", "start", "comma", "end", "pre", "extension", "autoloader", "lines", "elements", "logged", "createAnatomy", "name", "parts", "values", "isEmpty", "part", "newName", "prev", "toKebabCase", "value", "v", "__defProp", "__defNormalProp", "obj", "key", "value", "__publicField", "setCaretToEnd", "input", "start", "end", "clamp", "value", "wrap", "v", "idx", "_", "index", "pipe", "fns", "arg", "acc", "fn", "noop", "isObject", "MAX_Z_INDEX", "dataAttr", "guard", "ariaAttr", "ELEMENT_NODE", "DOCUMENT_NODE", "DOCUMENT_FRAGMENT_NODE", "isHTMLElement", "el", "isDocument", "isWindow", "getNodeName", "node", "isHTMLElement", "isRootElement", "isNode", "el", "isObject", "isShadowRoot", "DOCUMENT_FRAGMENT_NODE", "isInputElement", "isAnchorElement", "isElementVisible", "isActiveElement", "element", "rootNode", "getActiveElement", "TEXTAREA_SELECT_REGEX", "isEditableElement", "contains", "parent", "child", "next", "getDocument", "isDocument", "isWindow", "getDocumentElement", "getWindow", "activeElement", "getParentNode", "result", "getRootNode", "styleCache", "getComputedStyle", "INTERACTIVE_CONTAINER_ROLE", "isInteractiveContainerRole", "role", "getAriaControls", "isControlledElement", "container", "visitedIds", "checkElement", "searchRoot", "controllingElements", "controller", "controlledIds", "id", "controlledElement", "modal", "findControlledElements", "callback", "findRecursive", "root", "getControlledElements", "controlledElements", "isInteractiveContainerElement", "isControllerElement", "hasControllerElements", "isControlledByExpandedController", "escapedId", "selector", "getDataUrl", "svg", "opts", "type", "quality", "background", "win", "doc", "svgBounds", "svgClone", "source", "svgString", "str", "dpr", "canvas", "image", "context", "resolve", "isDom", "getPlatform", "getUserAgent", "ua2", "brand", "version", "pt", "v", "ua", "vn", "isTouchDevice", "isIPhone", "isIPad", "isMac", "isIos", "isApple", "isSafari", "isFirefox", "isAndroid", "ua", "getBeforeInputValue", "event", "selectionStart", "selectionEnd", "value", "data", "getComposedPath", "getEventTarget", "isOpeningInNewTab", "element", "isMiddleClick", "isModKeyClick", "isCtrlOrMetaKey", "isDownloadingEvent", "localName", "isComposingEvent", "getNativeEvent", "isCtrlOrMetaKey", "isMac", "isPrintableKey", "isVirtualClick", "isAndroid", "isLeftClick", "isContextMenuEvent", "isMac", "isModifierKey", "isTouchEvent", "event", "keyMap", "rtlKeyMap", "getEventKey", "options", "dir", "orientation", "key", "getNativeEvent", "pageKeys", "arrowKeys", "getEventStep", "getEventPoint", "type", "point", "addDomEvent", "target", "eventName", "handler", "node", "getDescriptor", "el", "options", "type", "property", "proto", "getWindow", "getElementType", "setElementValue", "value", "setElementChecked", "checked", "dispatchInputValueEvent", "bubbles", "win", "dispatchInputCheckedEvent", "getClosestForm", "isFormElement", "trackFormReset", "callback", "form", "onReset", "e", "trackFieldsetDisabled", "fieldset", "obs", "trackFormControl", "onFieldsetDisabledChange", "onFormReset", "cleanups", "cleanup", "isFrame", "isHTMLElement", "NATURALLY_TABBABLE_REGEX", "parseTabIndex", "attr", "hasTabIndex", "hasNegativeTabIndex", "getShadowRootForNode", "element", "getShadowRoot", "result", "collectElementsWithShadowDOM", "elements", "filterFn", "allElements", "toProcess", "processed", "positionMap", "i", "processIndex", "shadowRoot", "shadowElements", "focusableSelector", "hostIndex", "insertPosition", "getFocusables", "container", "includeContainer", "isFocusable", "focusableElements", "frameBody", "isElementVisible", "getTabbables", "container", "options", "includeContainer", "getShadowRoot", "elements", "focusableSelector", "isTabbable", "tabbableElements", "element", "isFrame", "frameBody", "allElements", "collectElementsWithShadowDOM", "el", "isHTMLElement", "isFocusable", "hasNegativeTabIndex", "getTabbableEdges", "container", "options", "elements", "getTabbables", "first", "last", "getTabIndex", "node", "NATURALLY_TABBABLE_REGEX", "isEditableElement", "hasTabIndex", "getInitialFocus", "options", "root", "getInitialEl", "filter", "enabled", "tabbables", "getTabbables", "isValidTabEvent", "event", "container", "firstTabbable", "lastTabbable", "getTabbableEdges", "isActiveElement", "AnimationFrame", "_AnimationFrame", "__publicField", "fn", "raf", "frame", "nextTick", "set", "raf2", "fn2", "id", "queueBeforeEvent", "el", "type", "cb", "cancelTimer", "exec", "observeAttributesImpl", "attributes", "win", "obs", "changes", "change", "observeAttributes", "nodeOrFn", "defer", "func", "v", "cleanups", "observeChildrenImpl", "observeChildren", "clickIfLink", "el", "click", "win", "getWindow", "isFirefox", "queueBeforeEvent", "getNearestOverflowAncestor", "parentNode", "getParentNode", "isRootElement", "getDocument", "isHTMLElement", "isOverflowElement", "OVERFLOW_RE", "nonOverflowValues", "isOverflowElement", "el", "win", "getWindow", "overflow", "overflowX", "overflowY", "display", "isScrollable", "scrollIntoView", "options", "rootEl", "scrollOptions", "getRelativePoint", "point", "element", "left", "top", "width", "height", "offset", "percent", "clamp", "getPercentValue", "options", "dir", "orientation", "inverted", "invertX", "invertY", "requestPointerLock", "doc", "fn", "body", "supported", "isLocked", "onPointerChange", "onPointerError", "event", "cleanup", "addDomEvent", "cleanup2", "state", "userSelect", "elementMap", "disableTextSelectionImpl", "target", "docNode", "rootEl", "isIos", "restoreTextSelection", "nextTick", "prevUserSelect", "disableTextSelection", "defer", "restOptions", "func", "raf", "v", "cleanups", "node", "trackPointerMove", "handlers", "onPointerMove", "onPointerUp", "handleMove", "getEventPoint", "distance", "moveBuffer", "handleUp", "trackPress", "pointerNode", "keyboardNode", "onPress", "onPressStart", "onPressEnd", "isValidKey", "e", "noop", "win", "getWindow", "removeStartListeners", "removeEndListeners", "removeAccessibleListeners", "getInfo", "startPress", "cancelPress", "removePointerListener", "startEvent", "removePointerUpListener", "endEvent", "getEventTarget", "contains", "removePointerCancelListener", "pipe", "isActiveElement", "removeFocusListener", "startAccessiblePress", "handleKeydown", "keydownEvent", "handleKeyup", "keyupEvent", "evt2", "info", "evt", "handleBlur", "removeKeydownListener", "removeBlurListener", "queryAll", "root", "selector", "query", "defaultItemToId", "v", "itemById", "id", "itemToId", "item", "indexOfId", "nextById", "loop", "idx", "prevById", "createSharedResizeObserver", "options", "listeners", "observer", "entries", "getObserver", "win", "observedEntries", "entry", "elementListeners", "listener", "element", "getWindow", "elementListeners2", "resizeObserverBorderBox", "createSharedResizeObserver", "sanitize", "str", "char", "code", "getValueText", "el", "match", "valueText", "query2", "getByText", "v", "text", "currentId", "itemToId", "defaultItemToId", "index", "indexOfId", "items", "wrap", "item", "setAttribute", "attr", "prev", "exists", "setStyle", "el", "style", "noop", "prev", "acc", "key", "setStyleProperty", "prop", "value", "getByTypeaheadImpl", "baseItems", "options", "state2", "activeId", "timeout", "itemToId", "search", "query2", "char", "items", "next", "getByText", "cleanup", "update", "getByTypeahead", "isValidTypeaheadEvent", "event", "visuallyHiddenStyle", "waitForPromise", "promise", "controller", "timeout", "signal", "resolve", "reject", "timeoutId", "result", "error", "waitForElement", "target", "options", "rootNode", "win", "getWindow", "doc", "getDocument", "el", "observer", "el2", "__defProp", "__typeError", "msg", "__defNormalProp", "obj", "key", "value", "__publicField", "__accessCheck", "member", "__privateGet", "getter", "__privateAdd", "toArray", "v", "first", "v", "last", "has", "v", "add", "items", "remove", "t", "uniq", "v", "diff", "a", "b", "set", "t", "addOrRemove", "item", "has", "remove", "add", "nextIndex", "v", "idx", "opts", "step", "loop", "next2", "len", "last2", "next", "prevIndex", "prev", "index", "chunk", "size", "rows", "value", "last", "flatArray", "arr", "flat", "item", "partition", "fn", "pass", "fail", "isArrayLike", "isArrayEqual", "a", "b", "i", "isEqual", "keys", "length", "key", "isArray", "v", "isBoolean", "isObjectLike", "isObject", "isString", "v", "isFunction", "isNull", "hasProp", "obj", "prop", "baseGetTag", "fnToString", "objectCtorString", "isPlainObject", "isObjectLike", "isFrameworkElement", "proto", "Ctor", "isReactElement", "x", "isVueElement", "runIfFn", "a", "cast", "identity", "noop", "callAll", "fns", "fn", "uuid", "id", "match", "key", "record", "args", "error", "tryCatch", "fallback", "throttle", "wait", "lastCall", "timeout", "now", "timeSinceLastCall", "toChar", "code", "toName", "name", "x", "toPhash", "h", "i", "hash", "value", "floor", "abs", "round", "min", "max", "pow", "sign", "isNaN", "v", "nan", "mod", "m", "wrap", "vmax", "isValueAtMax", "v", "vmax", "nan", "isValueAtMin", "vmin", "isValueWithinRange", "value", "minCheck", "maxCheck", "roundValue", "step", "round", "clampValue", "min", "max", "getValuePercent", "v", "vmin", "vmax", "nan", "getPercentValue", "p", "step", "clampValue", "roundValue", "roundToStepPrecision", "rv", "ss", "pi", "pw", "pow", "round", "roundToDpr", "dpr", "floor", "snapValueToStep", "min2", "max2", "remainder", "snapped", "abs", "sign", "isNaN", "stepsInRange", "largestValidStep", "setValueAtIndex", "vs", "i", "toFixedNumber", "v", "d", "b", "pow2", "round", "countDecimals", "value", "e", "p", "decimalOp", "a", "op", "result", "multiplier", "incrementValue", "s", "nan", "decrementValue", "toPx", "compact", "obj", "isPlainObject", "keys", "key", "filtered", "pick", "obj", "keys", "filtered", "key", "value", "splitProps", "props", "rest", "result", "keySet", "ownKeys", "createSplitProps", "currentTime", "_tick", "Timer", "onTick", "__publicField", "startMs", "now", "__privateGet", "__privateAdd", "setRafInterval", "fn", "intervalMs", "timer", "deltaMs", "setRafTimeout", "delayMs", "warn", "a", "m", "c", "invariant", "ensure", "ensureProps", "props", "keys", "scope", "missingKeys", "key", "clsx", "args", "str", "CSS_REGEX", "serialize", "style", "res", "match", "css", "a", "b", "isString", "mergeProps", "result", "props", "key", "callAll", "symbols", "symbol", "memo", "getDeps", "fn", "opts", "deps", "depArgs", "newDeps", "dep", "index", "isEqual", "createGuards", "guards", "params", "guard", "setup", "createGuards", "config", "transitions", "choose", "MachineStatus", "MachineStatus2", "INIT_STATE", "createScope", "props", "getRootNode", "getDoc", "getDocument", "getActiveElement", "isActiveElement", "id", "createNormalizer", "fn", "_target", "key", "props", "createProps", "anatomy", "createAnatomy", "parts", "getRootId", "ctx", "getItemId", "value", "getItemContentId", "getItemTriggerId", "getRootEl", "getTriggerEls", "selector", "queryAll", "getFirstTriggerEl", "first", "getLastTriggerEl", "last", "getNextTriggerEl", "id", "nextById", "getPrevTriggerEl", "prevById", "connect", "service", "normalize", "send", "context", "prop", "scope", "computed", "focusedValue", "multiple", "setValue", "value2", "nextValue", "getItemState", "props2", "itemState", "dataAttr", "event", "isSafari", "keyMap", "key", "getEventKey", "exec", "and", "not", "createGuards", "machine", "bindable", "next", "remove", "add", "warn", "props", "createProps", "splitProps", "createSplitProps", "itemProps", "splitItemProps", "TRACK_MEMO_SYMBOL", "GET_ORIGINAL_SYMBOL", "getProto", "objectsToTrack", "isObjectToTrack", "obj", "getUntracked", "obj", "isObjectToTrack", "GET_ORIGINAL_SYMBOL", "markToTrack", "mark", "objectsToTrack", "glob", "globalRef", "key", "value", "g", "refSet", "isReactElement", "x", "isVueElement", "isDOMElement", "isElement", "isObject", "canProxy", "isDev", "proxyStateMap", "globalRef", "buildProxyFunction", "objectIs", "newProxy", "target", "handler", "snapCache", "createSnapshot", "version", "cache", "snap", "markToTrack", "key", "value", "refSet", "snapshot", "proxyCache", "versionHolder", "proxyFunction2", "initialObject", "isObject", "found", "listeners", "notifyUpdate", "op", "nextVersion", "listener", "checkVersion", "ensureVersion", "nextCheckVersion", "propProxyStates", "propProxyState", "propVersion", "createPropListener", "prop", "newOp", "addPropListener", "isDev", "remove", "removePropListener", "entry", "addListener", "prevRemove", "baseObject", "proxyObject", "prevValue", "deleted", "receiver", "hasPrevValue", "getUntracked", "nextValue", "canProxy", "proxy", "childProxyState", "proxyState", "desc", "proxyFunction", "subscribe", "callback", "notifyInSync", "promise", "ops", "isListenerActive", "removeListener", "__defProp", "__defNormalProp", "obj", "key", "value", "__publicField", "propMap", "caseSensitiveSvgAttrs", "toStyleString", "style", "string", "match", "normalizeProps", "createNormalizer", "props", "acc", "normalizedKey", "prevAttrsMap", "assignableProps", "caseSensitiveSvgAttrs2", "isSvgElement", "node", "getAttributeName", "attrName", "spreadProps", "attrs", "oldAttrs", "attrKeys", "addEvt", "e", "f", "remEvt", "onEvents", "attr", "others", "setup", "teardown", "apply", "oldValue", "evt", "bindable", "initial", "eq", "store", "proxy", "controlled", "nextValue", "prev", "next", "isFunction", "prevValue", "_fn", "defaultValue", "createRefs", "refs", "ref", "VanillaMachine", "machine", "userProps", "state", "values", "tag", "args", "event", "MachineStatus", "currentState", "eventType", "transitions", "transition", "target", "changed", "keys", "strs", "fns", "s", "fn", "warn", "str", "cleanups", "cleanup", "toArray", "t", "result", "isString", "index", "deps", "dep", "isEqual", "identity", "id", "ids", "getRootNode", "runIfFn", "createScope", "prop", "__props", "compact", "context", "ctx", "computed", "item", "unsub", "subscribe", "current", "nextState", "prevState", "INIT_STATE", "cleanup2", "Component", "el", "props", "spreadProps", "node", "attrs", "normalizedAttrs", "attrName", "value", "lowerAttrName", "renderPart", "root", "name", "api", "propsToSend", "camelizedName", "word", "index", "getterName", "parts", "e", "componentRoot", "part", "props", "isPropMap", "prop", "type", "getter", "getString", "getBoolean", "getNumber", "getStringList", "key", "result", "childrenValue", "v", "renderNode", "root", "name", "api", "tree", "parts", "getterName", "_match", "_prefix", "letter", "findNodeById", "node", "id", "path", "i", "found", "part", "indexPath", "props", "spreadProps", "label", "getString", "element", "attrName", "validValues", "value", "getStringList", "v", "getNumber", "raw", "parsed", "getBoolean", "generateId", "fallbackId", "valuesEqual", "a", "b", "arraysEqualUnordered", "getPartIds", "partNames", "ids", "hasAnyId", "partName", "camelKey", "_", "Accordion", "Component", "props", "VanillaMachine", "machine", "connect", "normalizeProps", "renderPart", "itemEl", "value", "getString", "disabled", "getBoolean", "childPart", "initAccordion", "doc", "selector", "rootEl", "index", "generateId", "accordion", "getPartIds", "getStringList", "details", "eventName", "event", "current", "arraysEqualUnordered", "callback", "__defProp", "__defNormalProp", "obj", "key", "value", "__publicField", "AffineTransform", "_AffineTransform", "m00", "m01", "m02", "m10", "m11", "m12", "args", "point", "x", "y", "other", "det", "theta", "origin", "rotation", "sx", "sy", "scale", "tx", "ty", "first", "rest", "result", "item", "getPointAngle", "rect", "point", "reference", "x", "y", "clamp", "value", "min3", "max2", "clampPoint", "position", "size", "boundaryRect", "defaultMinSize", "defaultMaxSize", "clampSize", "minSize", "maxSize", "createPoint", "subtractPoints", "a", "b", "addPoints", "createRect", "r", "x", "y", "width", "height", "midX", "midY", "createPoint", "getRectCorners", "v", "top", "createPoint", "right", "bottom", "left", "constrainRect", "rect", "boundary", "left", "top", "isSizeEqual", "a", "b", "isPointEqual", "styleCache", "getCacheComputedStyle", "el", "win", "getElementRect", "opts", "createRect", "getClientRect", "excludeScrollbar", "excludeBorders", "x", "y", "width", "height", "r", "style", "borderLeftWidth", "borderTopWidth", "borderRightWidth", "borderBottomWidth", "borderXWidth", "sum", "borderYWidth", "px", "scrollbarWidth", "scrollbarHeight", "v", "vals", "sum2", "min", "max", "getWindowRect", "win", "opts", "createRect", "getViewportRect", "excludeScrollbar", "innerWidth", "innerHeight", "doc", "visualViewport", "width", "height", "rect", "scrollbarWidth", "scrollbarHeight", "getElementPolygon", "rectValue", "placement", "rect", "createRect", "top", "right", "left", "bottom", "getRectCorners", "base", "isPointInPolygon", "polygon", "point", "x", "y", "c", "i", "j", "xi", "yi", "xj", "yj", "compassDirectionMap", "oppositeDirectionMap", "sign", "abs", "min2", "getRectExtentPoint", "rect", "direction", "minX", "minY", "maxX", "maxY", "midX", "midY", "x", "y", "getOppositeDirection", "resizeRect", "offset", "opts", "scalingOriginMode", "lockAspectRatio", "extent", "oppositeDirection", "oppositeExtent", "newExtent", "multiplier", "newSize", "scaleX", "scaleY", "largestMagnitude", "scale", "transformRect", "AffineTransform", "createRectFromPoints", "initialPoint", "finalPoint", "normalized", "transform", "p1", "p2", "anatomy", "createAnatomy", "parts", "getRootId", "ctx", "getThumbId", "getHiddenInputId", "getControlId", "getValueTextId", "getLabelId", "getHiddenInputEl", "getControlEl", "getThumbEl", "MIN_VALUE", "MAX_VALUE", "getAngle", "controlEl", "point", "angularOffset", "rect", "createRect", "angle", "getPointAngle", "clampAngle", "degree", "constrainAngle", "step", "clampedDegree", "upperStep", "nearestStep", "snapAngleToStep", "value", "snapValueToStep", "connect", "service", "normalize", "state", "send", "context", "prop", "computed", "scope", "dragging", "valueAsDegree", "disabled", "invalid", "readOnly", "interactive", "ariaLabel", "ariaLabelledBy", "value2", "dataAttr", "event", "isLeftClick", "getEventPoint", "thumbEl", "composedPath", "getNativeEvent", "isOverThumb", "getEventStep", "props2", "markerState", "machine", "bindable", "track", "action", "trackPointerMove", "info", "inputEl", "setElementValue", "refs", "deg", "raf", "props", "createProps", "splitProps", "createSplitProps", "AngleSlider", "Component", "props", "VanillaMachine", "machine", "connect", "normalizeProps", "part", "renderPart", "valueEl", "numberingSystem", "getString", "initAngleSlider", "doc", "selector", "rootEl", "angleSlider", "generateId", "getPartIds", "getNumber", "getBoolean", "details", "eventName", "event", "value", "valuesEqual", "callback", "anatomy", "createAnatomy", "parts", "getRootId", "ctx", "getImageId", "getFallbackId", "getRootEl", "getImageEl", "connect", "service", "normalize", "state", "send", "prop", "scope", "loaded", "src", "machine", "imageEl", "type", "hasLoaded", "rootEl", "observeChildren", "records", "node", "observeAttributes", "image", "props", "createProps", "splitProps", "createSplitProps", "Avatar", "Component", "props", "VanillaMachine", "machine", "connect", "normalizeProps", "parts", "part", "renderPart", "initAvatar", "doc", "selector", "rootEl", "directions", "generateId", "getString", "details", "eventName", "getDirection", "element", "getComputedStyle", "getScrollPadding", "style", "rect", "xBeforeRaw", "yBeforeRaw", "xAfterRaw", "yAfterRaw", "convert", "raw", "size", "n", "xBefore", "yBefore", "xAfter", "yAfter", "isRectIntersecting", "a", "b", "axis", "getDescendants", "parent", "children", "child", "getSnapPositions", "subtree", "parentRect", "isRtl", "positions", "orthogonalAxis", "axisStart", "axisEnd", "axisSize", "axisScroll", "useRtlCalc", "childRect", "childStyle", "childAlignY", "childAlignX", "childAlign", "childOffsetStart", "childOffsetEnd", "childOffsetCenter", "scrollOffset", "rightOffset", "getScrollSnapPositions", "dir", "scrollPadding", "snapPositions", "maxScroll", "usesNegativeScrollLeft", "xPositions", "uniq", "v", "clamp", "pos", "findSnapPoint", "predicate", "items", "item", "position", "uniq", "arr", "clamp", "min", "max", "value", "anatomy", "createAnatomy", "parts", "getRootId", "ctx", "getItemId", "index", "getItemGroupId", "getNextTriggerId", "getPrevTriggerId", "getIndicatorGroupId", "getIndicatorId", "getItemGroupEl", "getItemEls", "queryAll", "getIndicatorEl", "page", "syncTabIndex", "el", "tabbables", "getTabbables", "connect", "service", "normalize", "state", "context", "computed", "send", "scope", "prop", "isPlaying", "isDragging", "canScrollNext", "canScrollPrev", "horizontal", "autoSize", "pageSnapPoints", "slidesPerPage", "padding", "translations", "details", "instant", "dataAttr", "event", "contains", "getEventTarget", "isLeftClick", "target", "isFocusable", "throttle", "axis", "props2", "isInView", "ariaAttr", "snapAlign", "slidesPerMove", "perMove", "src", "keyMap", "event2", "key", "getEventKey", "exec", "machine", "ensureProps", "count", "totalPages", "bindable", "getContext", "_", "getPageSnapPoints", "autoplay", "isObject", "track", "action", "id", "win", "observer", "raf", "itemEls", "cleanups", "el2", "resizeObserverBorderBox", "callAll", "entries", "slidesInView", "acc", "entry", "add", "remove", "uniq", "slide", "refs", "addDomEvent", "doc", "trackPointerMove", "flush", "behavior", "clampValue", "scrollPosition", "point", "loop", "nextIndex", "prevIndex", "snapPoint", "findSnapPoint", "node", "scrollSnapPoints", "getScrollSnapPositions", "styles", "isHorizontal", "scrollPos", "snapPoints", "closest", "closest2", "curr", "scrollSnapType", "totalSlides", "i", "props", "createProps", "splitProps", "createSplitProps", "indicatorProps", "splitIndicatorProps", "itemProps", "splitItemProps", "Carousel", "Component", "props", "VanillaMachine", "machine", "connect", "normalizeProps", "itemEl", "index", "indicatorGroup", "pageCount", "buttons", "i", "button", "parts", "part", "renderPart", "items", "item", "initCarousel", "doc", "selector", "rootEl", "directions", "orientations", "snapTypes", "itemCount", "generateId", "getNumber", "getBoolean", "getString", "details", "eventName", "isValidKey", "isMac", "nonTextInputTypes", "isKeyboardFocusEvent", "isTextInput", "modality", "e", "target", "getEventTarget", "win", "getWindow", "FOCUS_VISIBLE_INPUT_KEYS", "currentModality", "changeHandlers", "listenerMap", "hasEventBeforeFocus", "hasBlurredWindowRecently", "triggerChangeHandlers", "handler", "handleKeyboardEvent", "handlePointerEvent", "handleClickEvent", "isVirtualClick", "handleFocusEvent", "getDocument", "handleWindowBlur", "setupGlobalFocusEvents", "root", "doc", "focus", "patchedFocus", "tearDownWindowFocusTracking", "loadListener", "listenerData", "getInteractionModality", "isFocusVisible", "currentModality", "trackFocusVisible", "props", "isTextInput", "autoFocus", "onChange", "root", "setupGlobalFocusEvents", "handler", "modality", "e", "isKeyboardFocusEvent", "changeHandlers", "anatomy", "createAnatomy", "parts", "getRootId", "ctx", "getLabelId", "getControlId", "getHiddenInputId", "getRootEl", "getHiddenInputEl", "connect", "service", "normalize", "send", "context", "prop", "computed", "scope", "disabled", "readOnly", "required", "invalid", "focused", "focusVisible", "checked", "indeterminate", "checkedState", "dataAttrs", "dataAttr", "checked2", "event", "getEventTarget", "visuallyHiddenStyle", "focusVisible2", "isFocusVisible", "not", "createGuards", "machine", "props2", "bindable", "track", "action", "isIndeterminate", "isChecked", "trackPress", "trackFocusVisible", "trackFormControl", "key", "inputEl", "setElementChecked", "dispatchInputCheckedEvent", "props", "createProps", "splitProps", "createSplitProps", "Checkbox", "Component", "props", "VanillaMachine", "machine", "connect", "normalizeProps", "part", "renderPart", "parseCheckedState", "el", "attr", "getBoolean", "getString", "initCheckbox", "doc", "selector", "rootEl", "checkbox", "generateId", "getPartIds", "details", "eventName", "event", "value", "callback", "anatomy", "createAnatomy", "parts", "getRootId", "ctx", "getInputId", "getLabelId", "getInputEl", "writeToClipboard", "value", "copyText", "createNode", "doc", "text", "node", "copyNode", "selection", "getWindow", "range", "win", "connect", "service", "normalize", "state", "send", "context", "scope", "copied", "dataAttr", "event", "props2", "machine", "prop", "bindable", "track", "action", "setRafTimeout", "inputEl", "setElementValue", "props", "createProps", "contextProps", "createSplitProps", "indicatorProps", "splitIndicatorProps", "Clipboard", "Component", "props", "VanillaMachine", "machine", "connect", "normalizeProps", "parts", "part", "renderPart", "initClipboard", "doc", "selector", "rootEl", "generateId", "getString", "getNumber", "details", "eventName", "import_prismjs", "Prism", "typeInside", "Prism", "envVars", "commandAfterHeredoc", "insideString", "toBeCopied", "inside", "i", "Prism", "strings", "env", "tagName", "lang", "includedCdataInside", "inside", "def", "attrName", "Code", "el", "lang", "getString", "Prism", "initCode", "doc", "selector", "codeEl", "anatomy", "createAnatomy", "parts", "getRootId", "ctx", "getContentId", "getTriggerId", "getContentEl", "connect", "service", "normalize", "state", "send", "context", "scope", "prop", "visible", "open", "closed", "width", "height", "disabled", "collapsedHeight", "collapsedWidth", "hasCollapsedHeight", "hasCollapsedWidth", "hasCollapsedSize", "skip", "nextOpen", "dataAttr", "toPx", "event", "machine", "bindable", "track", "action", "cleanup", "rafCleanup", "raf", "contentEl", "animationName", "getComputedStyle", "onEnd", "getEventTarget", "restoreStyles", "setStyle", "nextTick", "applyInertToTabbables", "restoreAttrs", "getTabbables", "tabbable", "setAttribute", "attr", "restoreInert", "observerCleanup", "observeChildren", "flush", "refs", "hidden", "rect", "props", "createProps", "splitProps", "createSplitProps", "Collapsible", "Component", "props", "VanillaMachine", "machine", "connect", "normalizeProps", "parts", "part", "renderPart", "initCollapsible", "doc", "selector", "rootEl", "collapsible", "generateId", "getPartIds", "getBoolean", "details", "eventName", "getString", "event", "value", "valuesEqual", "callback", "__defProp", "__defNormalProp", "obj", "key", "value", "__publicField", "generateRGB_R", "orientation", "dir", "zValue", "maskImage", "generateRGB_G", "generateRGB_B", "generateHSL_H", "generateHSL_S", "alphaValue", "generateHSL_L", "generateHSB_H", "generateHSB_S", "generateHSB_B", "getColorAreaGradient", "color", "options", "xChannel", "yChannel", "dirProp", "zChannel", "zMin", "zMax", "background", "isHSL", "isEqualObject", "a", "b", "Color", "channel", "valueToCheck", "minValue", "maxValue", "getValuePercent", "percentToCheck", "step", "percentValue", "getPercentValue", "snapValueToStep", "clone", "clampValue", "xyChannels", "xCh", "c", "yCh", "zCh", "stepSize", "HEX_COLOR_REGEX", "RGB_COLOR_REGEX", "HEX_STARTING_REGEX", "_RGBColor", "red", "green", "blue", "alpha", "colors", "values", "match", "value2", "num", "i", "format", "min", "brightness", "chroma", "saturation", "hue", "HSBColor", "toFixedNumber", "max", "lightness", "HSLColor", "locale", "RGBColor", "HSL_REGEX", "_HSLColor", "m", "h", "s", "l", "n", "mod", "fn", "k", "HSB_REGEX", "_HSBColor", "nativeColors", "makeMap", "str", "map", "list", "val", "nativeColorMap", "parseColor", "result", "error", "normalizeColor", "v", "sides", "min", "max", "round", "floor", "createCoords", "v", "oppositeSideMap", "oppositeAlignmentMap", "clamp", "start", "value", "end", "evaluate", "param", "getSide", "placement", "getAlignment", "getOppositeAxis", "axis", "getAxisLength", "yAxisSides", "getSideAxis", "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", "computePosition", "config", "strategy", "middleware", "platform", "validMiddleware", "rects", "x", "y", "statefulPlacement", "middlewareData", "resetCount", "i", "name", "fn", "nextX", "nextY", "data", "reset", "detectOverflow", "state", "options", "_await$platform$isEle", "elements", "boundary", "rootBoundary", "elementContext", "altBoundary", "padding", "evaluate", "paddingObject", "getPaddingObject", "element", "clippingClientRect", "rectToClientRect", "rect", "offsetParent", "offsetScale", "elementClientRect", "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", "detectOverflow", "overflows", "overflowsData", "sides", "getAlignmentSides", "_middlewareData$flip2", "_overflowsData$filter", "nextIndex", "nextPlacement", "d", "resetPlacement", "a", "b", "_overflowsData$filter2", "currentSideAxis", "acc", "getSideOffsets", "rect", "isAnySideFullyClipped", "hide", "strategy", "offsets", "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", "detectOverflow", "getOppositeAxis", "mainAxisCoord", "crossAxisCoord", "minSide", "maxSide", "min", "max", "clamp", "limitedCoords", "limitShift", "rects", "rawOffset", "computedOffset", "len", "limitMin", "limitMax", "_middlewareData$offse2", "isOriginSide", "size", "_state$middlewareData", "_state$middlewareData2", "apply", "isYAxis", "width", "height", "heightSide", "widthSide", "maximumClippingHeight", "maximumClippingWidth", "overflowAvailableHeight", "overflowAvailableWidth", "noShift", "availableHeight", "availableWidth", "xMin", "xMax", "yMin", "yMax", "nextDimensions", "hasWindow", "getNodeName", "node", "isNode", "getWindow", "_node$ownerDocument", "getDocumentElement", "_ref", "value", "isElement", "isHTMLElement", "isShadowRoot", "invalidOverflowDisplayValues", "isOverflowElement", "element", "overflow", "overflowX", "overflowY", "display", "getComputedStyle", "tableElements", "isTableElement", "topLayerSelectors", "isTopLayer", "selector", "transformProperties", "willChangeValues", "containValues", "isContainingBlock", "elementOrCss", "webkit", "isWebKit", "css", "getContainingBlock", "currentNode", "getParentNode", "isLastTraversableNode", "lastTraversableNodeNames", "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", "absoluteOrFixed", "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", "firstClippingAncestor", "clippingRect", "accRect", "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", "hide", "arrow", "limitShift", "computePosition", "reference", "floating", "options", "cache", "mergedOptions", "platform", "platformWithCache", "createDOMRect", "x", "y", "width", "height", "rect", "getDOMRect", "anchorRect", "getAnchorElement", "anchorElement", "getAnchorRect", "isHTMLElement", "anchor", "toVar", "value", "cssVars", "getSideAxis", "side", "createTransformOriginMiddleware", "opts", "arrowEl", "state", "elements", "middlewareData", "placement", "rects", "axis", "arrowX", "arrowY", "arrowWidth", "arrowHeight", "transformX", "transformY", "shiftY", "halfAnchorHeight", "arrowOffset", "gutter", "sideOffsetValue", "isOverlappingAnchor", "adjacentTransformOrigin", "overlapTransformOrigin", "useOverlap", "rectMiddleware", "shiftArrowMiddleware", "dir", "getPlacementDetails", "placement", "side", "align", "getPlacementSide", "defaultOptions", "roundByDpr", "win", "value", "dpr", "resolveBoundaryOption", "boundary", "getArrowMiddleware", "arrowElement", "doc", "opts", "element", "arrow", "getOffsetMiddleware", "isNull", "offset", "arrowOffset", "gutter", "mainAxis", "hasAlign", "shift2", "crossAxis", "compact", "getFlipMiddleware", "flip", "getShiftMiddleware", "shift", "limitShift", "getSizeMiddleware", "size", "elements", "rects", "availableHeight", "availableWidth", "floating", "referenceWidth", "referenceHeight", "hideWhenDetachedMiddleware", "hide", "getAutoUpdateOptions", "getPlacementImpl", "referenceOrVirtual", "anchor", "reference", "getAnchorElement", "options", "arrowEl", "middleware", "shiftArrowMiddleware", "createTransformOriginMiddleware", "rectMiddleware", "strategy", "onComplete", "onPositioned", "updatePosition", "pos", "computePosition", "getWindow", "x", "y", "contentEl", "styles", "getComputedStyle", "update", "autoUpdateOptions", "cancelAutoUpdate", "autoUpdate", "noop", "getPlacement", "referenceOrFn", "floatingOrFn", "defer", "func", "raf", "v", "cleanups", "fn", "ARROW_FLOATING_STYLE", "getPlacementStyles", "sameWidth", "fitViewport", "cssVars", "getWindowFrames", "win", "frames", "cb", "i", "frame", "event", "listener", "options", "getParentWindow", "parent", "POINTER_OUTSIDE_EVENT", "FOCUS_OUTSIDE_EVENT", "isComposedPathFocusable", "composedPath", "node", "isHTMLElement", "isFocusable", "isPointerEvent", "isEventPointWithin", "rect", "isPointInRect", "point", "isEventWithinScrollbar", "ancestor", "isScrollableY", "onScrollbarY", "isScrollableX", "onScrollbarX", "trackInteractOutsideImpl", "exclude", "onFocusOutside", "onPointerDownOutside", "onInteractOutside", "defer", "followControlledElements", "doc", "getDocument", "getWindow", "parentWin", "isEventOutside", "target", "contains", "isControlledElement", "triggerEl", "triggerAncestor", "getNearestOverflowAncestor", "nodeAncestor", "pointerdownCleanups", "isInShadowRoot", "isShadowRoot", "onPointerDown", "handler", "clickEvent", "func", "isTouchDevice", "raf", "v", "evt", "getEventTarget", "handler2", "callAll", "fireCustomEvent", "isContextMenuEvent", "fn", "addDomEvent", "cleanups", "timer", "onFocusin", "trackInteractOutside", "nodeOrFn", "el", "type", "init", "trackEscapeKeydown", "node", "fn", "handleKeyDown", "event", "addDomEvent", "getDocument", "LAYER_REQUEST_DISMISS_EVENT", "layerStack", "layer", "index", "highestBlockingIndex", "type", "target", "contains", "branch", "nestedCount", "parent", "addListenerOnce", "fireCustomEvent", "el", "detail", "win", "callback", "originalBodyPointerEvents", "assignPointerEventToLayers", "clearPointerEvent", "disablePointerEventsOutside", "persistentElements", "doc", "cleanups", "promise", "abort", "waitForElement", "node2", "isHTMLElement", "el2", "setStyle", "trackDismissableElementImpl", "options", "warnOnMissingNode", "warn", "onDismiss", "onRequestDismiss", "pointerBlocking", "excludeContainers", "debug", "onPointerDownOutside", "getEventTarget", "onFocusOutside", "onEscapeKeyDown", "exclude", "containers", "_containers", "trackInteractOutside", "trackDismissableElement", "nodeOrFn", "defer", "func", "raf", "v", "isFunction", "trackDismissableBranch", "anatomy", "createAnatomy", "parts", "getRootId", "ctx", "getLabelId", "getHiddenInputId", "getControlId", "getTriggerId", "getContentId", "getPositionerId", "getFormatSelectId", "getAreaId", "getAreaGradientId", "getAreaThumbId", "getChannelSliderTrackId", "channel", "getChannelSliderThumbId", "getContentEl", "getAreaThumbEl", "getChannelSliderThumbEl", "getFormatSelectEl", "getHiddenInputEl", "getAreaEl", "getAreaValueFromPoint", "point", "dir", "areaEl", "getPercentValue", "getRelativePoint", "getControlEl", "getTriggerEl", "getPositionerEl", "getChannelSliderTrackEl", "getChannelSliderValueFromPoint", "trackEl", "getChannelInputEls", "queryAll", "getChannelDisplayColor", "color", "parseColor", "getChannelValue", "isHSL", "getChannelRange", "minColor", "maxColor", "getSliderBackgroundDirection", "orientation", "getSliderBackground", "props2", "value", "bgDirection", "minValue", "maxValue", "start", "middle", "end", "connect", "service", "normalize", "context", "send", "prop", "computed", "state", "scope", "format", "areaValue", "valueAsString", "disabled", "readOnly", "invalid", "required", "interactive", "dragging", "open", "focused", "getAreaChannels", "channels", "currentPlacement", "popperStyles", "getPlacementStyles", "getSwatchTriggerState", "normalizeColor", "nextOpen", "value2", "locale", "channelValue", "format2", "formatValue", "alphaValue", "dataAttr", "event", "query", "xChannel", "yChannel", "areaStyles", "getColorAreaGradient", "isLeftClick", "isModifierKey", "getEventPoint", "areaGradientStyles", "xPercent", "yPercent", "finalXPercent", "xValue", "yValue", "step", "getEventStep", "exec", "event2", "getEventKey", "size", "normalizedValue", "thumbId", "channelRange", "offset", "isRtl", "finalOffset", "placementStyles", "isTextField", "visuallyHiddenStyle", "swatchState", "respectAlpha", "getNextFormat", "nextFormat", "assertFormat", "formats", "formatRegex", "index", "parse", "colorString", "HEX_REGEX", "isValidHex", "prefixHex", "and", "createGuards", "machine", "bindable", "getContext", "a", "b", "action", "track", "anchorEl", "getPlacement", "data", "trackDismissableElement", "inputEl", "trackFormControl", "trackPointerMove", "type", "disableTextSelection", "win", "sRGBHex", "v", "percent", "channelPercent", "dispatchInputValueEvent", "syncChannelInputs", "currentAlpha", "valueAsNumber", "tryCatch", "parseValue", "current", "range", "raf", "getInitialFocus", "syncFormatSelect", "currentValue", "nextValue", "channelInputEls", "setElementValue", "selectEl", "props", "createProps", "splitProps", "createSplitProps", "areaProps", "splitAreaProps", "channelProps", "splitChannelProps", "swatchTriggerProps", "splitSwatchTriggerProps", "swatchProps", "splitSwatchProps", "transparencyGridProps", "splitTransparencyGridProps", "ColorPicker", "Component", "props", "VanillaMachine", "machine", "connect", "normalizeProps", "parts", "part", "renderPart", "items", "item", "swatchTriggers", "trigger", "grids", "grid", "el", "initColorPicker", "doc", "selector", "rootEl", "directions", "formats", "placements", "strategies", "generateId", "getString", "parse", "getBoolean", "getNumber", "mainAxis", "crossAxis", "details", "eventName", "__defProp", "__defNormalProp", "obj", "key", "value", "__publicField", "fallback", "item", "isObject", "hasProp", "ListCollection", "_ListCollection", "options", "items", "other", "isEqual", "values", "index", "result", "idx", "groups", "valueA", "valueB", "indexA", "indexB", "separator", "strs", "str", "groupBy", "groupSort", "groupKey", "entries", "a", "b", "step", "clamp", "itemValue", "text", "current", "currentIndex", "isSingleKey", "i", "match", "queryString", "state", "currentValue", "timeout", "search", "query", "char", "cleanup", "update", "value2", "mode", "insert", "toIndex", "fn", "filteredItems", "itemsOrValues", "itemOrValue", "fromIndex", "move", "indices", "from", "to", "keys", "label", "disabled", "itemString", "insert", "items", "index", "values", "move", "indices", "toIndex", "a", "b", "itemsToMove", "GridCollection", "ListCollection", "options", "columnCount", "__publicField", "chunk", "row", "column", "value", "col", "cell", "loop", "currentCell", "rows", "rowCount", "prevRowIndex", "prevColumnIndex", "i", "prevIndex", "prevRow", "lastColumnIndex", "nextRowIndex", "nextColumnIndex", "nextIndex", "nextRow", "isGridCollection", "v", "hasProp", "Selection", "_Selection", "clone", "other", "collection", "firstValue", "lastValue", "anchorValue", "targetValue", "selection", "lastSelected", "key", "forceToggle", "isEqual", "access", "node", "indexPath", "ancestorIndexPaths", "indexPaths", "sortedPaths", "sortIndexPaths", "result", "seen", "compareIndexPaths", "find", "found", "visit", "child", "findAll", "findIndexPath", "reduce", "flatMap", "filter", "predicate", "create", "getChildren", "filterRecursive", "node2", "children", "filteredChildren", "childIndexPath", "filteredChild", "isRoot", "nodeMatches", "hasFilteredChildren", "flatten", "rootNode", "nodes", "idx", "idxMap", "parentMap", "_children", "parent", "_parent", "_index", "insertOperation", "removeOperation", "indexes", "replaceOperation", "splitIndexPath", "getInsertionOperations", "operations", "parentIndexPath", "parentKey", "operation", "getRemovalOperations", "indexesToRemove", "getReplaceOperations", "mutate", "map", "_", "updatedChildren", "adjustedIndex", "removedIndex", "splice", "array", "start", "deleteCount", "childrenMap", "keyIndexPath", "transformed", "parentChildren", "insert2", "at", "state", "replace", "remove", "move2", "_ancestorIndexPaths", "nodesToInsert", "onEnter", "onLeave", "stack", "getIndexPath", "wrapper", "enterResult", "currentIndex", "TreeCollection", "_TreeCollection", "fallbackMethods", "valueOrIndexPath", "firstChild", "opts", "lastChild", "v2", "acc", "valuePath", "currentPath", "valueIndexPath", "nextNode", "nodeValue", "previousNode", "parentNode", "nodeIndexPath", "skip", "rest", "siblings", "sibling", "depth", "to", "nextIndex2", "fromIndexPaths", "toIndexPath", "filteredRoot", "fallbackMethods", "node", "isObject", "hasProp", "anatomy", "createAnatomy", "parts", "collection", "options", "ListCollection", "getRootId", "ctx", "getLabelId", "getControlId", "getInputId", "getContentId", "getPositionerId", "getTriggerId", "getClearTriggerId", "getItemGroupId", "id", "getItemGroupLabelId", "getItemId", "getContentEl", "getInputEl", "getPositionerEl", "getControlEl", "getTriggerEl", "getClearTriggerEl", "getItemEl", "value", "selector", "query", "focusInputEl", "inputEl", "focusTriggerEl", "triggerEl", "connect", "service", "normalize", "context", "prop", "state", "send", "scope", "computed", "event", "translations", "collection2", "disabled", "interactive", "invalid", "required", "readOnly", "open", "focused", "composite", "highlightedValue", "popperStyles", "getPlacementStyles", "getItemState", "props2", "disabled2", "ensure", "reason", "nextOpen", "dataAttr", "event2", "ariaAttr", "isComposingEvent", "openOnKeyPress", "isModifierKey", "keypress", "keymap", "event3", "submittable", "hasHighlight", "alwaysSubmit", "itemEl", "isAnchorElement", "key", "getEventKey", "exec", "isLeftClick", "keyMap", "itemState", "isDownloadingEvent", "isOpeningInNewTab", "isContextMenuEvent", "htmlFor", "guards", "createMachine", "choose", "setup", "and", "not", "machine", "node", "clickIfLink", "bindable", "getContext", "getEvent", "isEqual", "prevSelectedItems", "nextItems", "v", "item2", "item", "inputValue", "valueAsString", "match", "value2", "track", "action", "openOnChange", "isBoolean", "restoreFocus", "trackDismissableElement", "anchorEl", "positionerEl", "getPlacement", "data", "cleanups", "immediate", "pointer", "contentEl", "scrollToIndexFn", "highlightedIndex", "raf_cleanup", "raf", "scrollIntoView", "rafCleanup", "observerCleanup", "observeAttributes", "cleanup", "params", "nextValue", "addOrRemove", "nextTick", "flush", "remove", "setCaretToEnd", "selectionBehavior", "firstValue", "getOpenChangeReason", "valueText", "selectedItems", "props", "createProps", "splitProps", "createSplitProps", "itemGroupLabelProps", "splitItemGroupLabelProps", "itemGroupProps", "splitItemGroupProps", "itemProps", "splitItemProps", "i18nCache", "Ins", "formatterCache", "locale", "options", "cacheKey", "a", "b", "formatter", "getCollator", "collatorCache", "i18nCache", "createFilter", "options", "locale", "rest", "collator", "normalize", "string", "startsWith", "substring", "endsWith", "contains", "scan", "sliceLen", "slice", "getNumberFormatter", "formatNumber", "v", "bitPrefixes", "bytePrefixes", "formatBytes", "bytes", "unitSystem", "precision", "unit", "unitDisplay", "factor", "prefix", "isNegative", "value", "index", "finalValue", "getListFormatter", "i18nCache", "getRelativeTimeFormatter", "i18nCache", "MINUTE_TO_MS", "HOUR_TO_MS", "DAY_TO_MS", "WEEK_TO_MS", "MONTH_TO_MS", "YEAR_TO_MS", "flattenJsonItems", "data", "parentGroup", "items", "child", "loadJsonItems", "path", "script", "e", "getDomGroups", "rootEl", "groups", "el", "value", "Combobox", "Component", "props", "hasGroups", "collection", "item", "self", "VanillaMachine", "machine", "args", "getString", "details", "filter", "createFilter", "filtered", "connect", "normalizeProps", "contentEl", "noIcon", "getBoolean", "groupMap", "uniqueGroups", "groupsWithItems", "g", "groupEl", "labelEl", "itemEl", "textEl", "indicatorEl", "allDomItems", "visibleGroups", "groupId", "parts", "part", "renderPart", "itemParts", "i", "id", "initCombobox", "doc", "selector", "index", "generateId", "itemElements", "label", "jsonPath", "group", "disabled", "directions", "placements", "strategies", "inputBehaviors", "selectionBehaviors", "comboboxComponent", "getStringList", "getNumber", "mainAxis", "crossAxis", "eventName", "event", "$2b4dce13dd5a17fa$export$842a2cf37af977e1", "amount", "numerator", "$3b62074eb05584b2$var$EPOCH", "$3b62074eb05584b2$export$f297eb839006d339", "era", "year", "month", "day", "$3b62074eb05584b2$export$c36e0ecb2d4fa69d", "y1", "monthOffset", "$3b62074eb05584b2$export$553d7fa8e3805fc0", "$3b62074eb05584b2$export$4475b7e617eb123c", "$3b62074eb05584b2$var$daysInMonth", "$3b62074eb05584b2$export$80ee6245ec4f29ec", "jd", "jd0", "depoch", "quadricent", "dqc", "$2b4dce13dd5a17fa$export$842a2cf37af977e1", "cent", "dcent", "quad", "dquad", "yindex", "extendedYear", "yearDay", "leapAdj", "$35ea8db9cb2ccb90$export$99faa760c7908e4f", "date", "$2fe286d2fb449abb$export$7a5acbd77d414bd9", "$14e0f24ef4ac5c92$export$ea39ec197993aef0", "a", "b", "$11d87f3f76e88657$export$b4a036af3fc0b032", "$14e0f24ef4ac5c92$export$a18c89cbd24170ff", "$14e0f24ef4ac5c92$export$a5a3b454ada2268e", "$14e0f24ef4ac5c92$export$5841f9eb9773f25f", "$14e0f24ef4ac5c92$export$f91e89d3d0406102", "$14e0f24ef4ac5c92$export$91b62ebf2ba703ee", "$14e0f24ef4ac5c92$export$dbc69fd56b53d5e", "$14e0f24ef4ac5c92$export$5a8da0c44a3afdf2", "$14e0f24ef4ac5c92$export$ea840f5a6dda8147", "_a_isEqual", "_b_isEqual", "_a_isEqual1", "_ref", "$14e0f24ef4ac5c92$export$629b0a497aa65267", "date", "timeZone", "$14e0f24ef4ac5c92$export$d0bdf45af03a6ea3", "$14e0f24ef4ac5c92$var$DAY_MAP", "$14e0f24ef4ac5c92$export$2061056d06d7cdf7", "locale", "firstDayOfWeek", "julian", "weekStart", "$14e0f24ef4ac5c92$var$getWeekStart", "dayOfWeek", "$14e0f24ef4ac5c92$export$461939dd4422153", "$11d87f3f76e88657$export$1b96692a1ba042ac", "$11d87f3f76e88657$export$93522d1a439f3617", "$14e0f24ef4ac5c92$export$68781ddf31c0090f", "$14e0f24ef4ac5c92$export$c19a80a9721b80f6", "$14e0f24ef4ac5c92$var$timeToMs", "$14e0f24ef4ac5c92$var$localTimeZone", "$14e0f24ef4ac5c92$export$aa8b41735afcabd2", "$14e0f24ef4ac5c92$export$a5a3b454ada2268e", "date", "$14e0f24ef4ac5c92$export$a2258d9c4118825c", "$14e0f24ef4ac5c92$export$f91e89d3d0406102", "$14e0f24ef4ac5c92$export$8b7aa55c66d5569e", "$14e0f24ef4ac5c92$export$42c81a444fbfb5d4", "date", "locale", "firstDayOfWeek", "dayOfWeek", "$14e0f24ef4ac5c92$export$2061056d06d7cdf7", "$14e0f24ef4ac5c92$export$ef8b6d9133084f4e", "$14e0f24ef4ac5c92$var$cachedRegions", "$14e0f24ef4ac5c92$var$cachedWeekInfo", "$14e0f24ef4ac5c92$var$getRegion", "region", "part", "$14e0f24ef4ac5c92$var$getWeekStart", "weekInfo", "localeInst", "day", "$2fe286d2fb449abb$export$7a5acbd77d414bd9", "$14e0f24ef4ac5c92$export$ccc1b2479e7dd654", "days", "$14e0f24ef4ac5c92$export$a5a3b454ada2268e", "$14e0f24ef4ac5c92$export$5c333a116e949cdd", "a", "b", "$14e0f24ef4ac5c92$export$a75f2bff57811055", "$14e0f24ef4ac5c92$var$WEEKEND_DATA", "$14e0f24ef4ac5c92$export$618d60ea299da42", "julian", "start", "end", "$11d87f3f76e88657$export$bd4fb2bc8bb06fb", "date", "$11d87f3f76e88657$export$b4a036af3fc0b032", "$3b62074eb05584b2$export$80ee6245ec4f29ec", "year", "$3b62074eb05584b2$export$c36e0ecb2d4fa69d", "$11d87f3f76e88657$var$epochFromParts", "month", "day", "hour", "minute", "second", "millisecond", "$11d87f3f76e88657$export$59c99f3515d3493f", "ms", "timeZone", "$14e0f24ef4ac5c92$export$aa8b41735afcabd2", "$11d87f3f76e88657$var$getTimeZoneParts", "$11d87f3f76e88657$var$formattersByTimeZone", "formatter", "parts", "namedParts", "part", "$11d87f3f76e88657$var$DAYMILLIS", "$11d87f3f76e88657$var$getValidWallTimes", "date", "timeZone", "earlier", "later", "absolute", "$11d87f3f76e88657$var$isValidWallTime", "parts", "$11d87f3f76e88657$var$getTimeZoneParts", "$11d87f3f76e88657$export$5107c82f94518f5c", "disambiguation", "dateTime", "$11d87f3f76e88657$export$b21e0b124e224484", "$11d87f3f76e88657$export$bd4fb2bc8bb06fb", "$14e0f24ef4ac5c92$export$aa8b41735afcabd2", "$11d87f3f76e88657$export$b4a036af3fc0b032", "$3b62074eb05584b2$export$80ee6245ec4f29ec", "year", "$3b62074eb05584b2$export$c36e0ecb2d4fa69d", "ms", "offsetBefore", "$11d87f3f76e88657$export$59c99f3515d3493f", "$11d87f3f76e88657$var$DAYMILLIS", "offsetAfter", "valid", "$11d87f3f76e88657$export$e67a095c620b86fe", "$11d87f3f76e88657$export$1b96692a1ba042ac", "offset", "month", "day", "hour", "minute", "second", "millisecond", "$35ea8db9cb2ccb90$export$d3b7288e7994edea", "$11d87f3f76e88657$export$93522d1a439f3617", "dateTime", "$35ea8db9cb2ccb90$export$99faa760c7908e4f", "$11d87f3f76e88657$export$b21e0b124e224484", "date", "time", "hour", "minute", "second", "millisecond", "$35ea8db9cb2ccb90$export$ca871e8dbb80966f", "$11d87f3f76e88657$export$b4a036af3fc0b032", "date", "calendar", "$14e0f24ef4ac5c92$export$dbc69fd56b53d5e", "calendarDate", "copy", "$735220c2d4774dd3$export$c4e2ecac49351ef2", "$11d87f3f76e88657$export$84c95a83c799e074", "timeZone", "disambiguation", "$35ea8db9cb2ccb90$export$d3b7288e7994edea", "$11d87f3f76e88657$export$538b00033cc11c75", "ms", "$11d87f3f76e88657$export$5107c82f94518f5c", "$11d87f3f76e88657$export$1b96692a1ba042ac", "$11d87f3f76e88657$export$83aac07b4c37b25", "$11d87f3f76e88657$export$bd4fb2bc8bb06fb", "$735220c2d4774dd3$var$ONE_HOUR", "$735220c2d4774dd3$export$e16d8520af44a096", "date", "duration", "mutableDate", "days", "$735220c2d4774dd3$var$addTimeFields", "$735220c2d4774dd3$var$addYears", "$735220c2d4774dd3$var$balanceYearMonth", "$735220c2d4774dd3$var$constrainMonthDay", "$735220c2d4774dd3$var$balanceDay", "maxYear", "_mutableDate_calendar_isInverseEra", "_mutableDate_calendar", "isInverseEra", "maxMonth", "years", "_date_calendar_isInverseEra", "_date_calendar", "monthsInYear", "$735220c2d4774dd3$export$c4e2ecac49351ef2", "$735220c2d4774dd3$export$3e2544e88a25bff8", "inverseDuration", "key", "$735220c2d4774dd3$export$4e2d2ead65e5f7e3", "$735220c2d4774dd3$export$adaa4cf7ef1b65be", "fields", "$735220c2d4774dd3$export$e5d5e1c1822b6e56", "value", "mutableValue", "$735220c2d4774dd3$export$7555de1e070510cb", "$735220c2d4774dd3$var$balanceTime", "time", "$735220c2d4774dd3$var$nonNegativeMod", "a", "b", "result", "$735220c2d4774dd3$export$d52ced6badfb9a4c", "value", "field", "amount", "options", "mutable", "eras", "eraIndex", "$735220c2d4774dd3$var$cycleValue", "$735220c2d4774dd3$export$c4e2ecac49351ef2", "_mutable_calendar_isInverseEra", "_mutable_calendar", "$735220c2d4774dd3$export$dd02b3e0007dfe28", "hours", "min", "max", "isPM", "round", "div", "$735220c2d4774dd3$export$96b1d28349274637", "dateTime", "duration", "ms", "res", "$735220c2d4774dd3$export$e16d8520af44a096", "$11d87f3f76e88657$export$b21e0b124e224484", "$11d87f3f76e88657$export$5107c82f94518f5c", "$11d87f3f76e88657$export$bd4fb2bc8bb06fb", "$11d87f3f76e88657$export$1b96692a1ba042ac", "$11d87f3f76e88657$export$b4a036af3fc0b032", "$735220c2d4774dd3$export$6814caac34ca03c7", "$735220c2d4774dd3$export$3e2544e88a25bff8", "$735220c2d4774dd3$export$9a297d111fc86b79", "plainDateTime", "minDate", "$735220c2d4774dd3$export$e5d5e1c1822b6e56", "$3b62074eb05584b2$export$80ee6245ec4f29ec", "minAbsolute", "maxDate", "maxAbsolute", "$735220c2d4774dd3$var$ONE_HOUR", "remainder", "$735220c2d4774dd3$export$31b5430eb18be4f8", "fields", "disambiguation", "$735220c2d4774dd3$export$adaa4cf7ef1b65be", "$fae977aafc393c5c$var$DATE_RE", "$fae977aafc393c5c$var$requiredDurationTimeGroups", "$fae977aafc393c5c$var$requiredDurationGroups", "$fae977aafc393c5c$export$6b862160d295c8e", "value", "m", "$fae977aafc393c5c$var$DATE_RE", "date", "$35ea8db9cb2ccb90$export$99faa760c7908e4f", "$fae977aafc393c5c$var$parseNumber", "$fae977aafc393c5c$var$parseNumber", "value", "min", "max", "val", "$fae977aafc393c5c$export$f59dee82248f5ad4", "time", "$fae977aafc393c5c$export$60dfd74aa96791bd", "date", "gregorianDate", "$11d87f3f76e88657$export$b4a036af3fc0b032", "$3b62074eb05584b2$export$80ee6245ec4f29ec", "year", "$fae977aafc393c5c$export$4223de14708adc63", "$fae977aafc393c5c$var$offsetToString", "offset", "sign", "offsetHours", "offsetMinutes", "offsetSeconds", "stringOffset", "$fae977aafc393c5c$export$bf79f1ebf4b18792", "_check_private_redeclaration", "obj", "privateCollection", "_class_private_field_init", "obj", "privateMap", "value", "_check_private_redeclaration", "$35ea8db9cb2ccb90$var$shiftArgs", "args", "calendar", "$3b62074eb05584b2$export$80ee6245ec4f29ec", "era", "eras", "year", "month", "day", "$35ea8db9cb2ccb90$var$_type", "$35ea8db9cb2ccb90$export$99faa760c7908e4f", "_$35ea8db9cb2ccb90$export$99faa760c7908e4f", "duration", "$735220c2d4774dd3$export$e16d8520af44a096", "$735220c2d4774dd3$export$4e2d2ead65e5f7e3", "fields", "$735220c2d4774dd3$export$adaa4cf7ef1b65be", "field", "amount", "options", "$735220c2d4774dd3$export$d52ced6badfb9a4c", "timeZone", "$11d87f3f76e88657$export$e67a095c620b86fe", "$fae977aafc393c5c$export$60dfd74aa96791bd", "b", "$14e0f24ef4ac5c92$export$68781ddf31c0090f", "_class_private_field_init", "$735220c2d4774dd3$export$c4e2ecac49351ef2", "$35ea8db9cb2ccb90$var$_type2", "$35ea8db9cb2ccb90$export$ca871e8dbb80966f", "_$35ea8db9cb2ccb90$export$ca871e8dbb80966f", "duration", "$735220c2d4774dd3$export$e16d8520af44a096", "$735220c2d4774dd3$export$4e2d2ead65e5f7e3", "fields", "$735220c2d4774dd3$export$adaa4cf7ef1b65be", "$735220c2d4774dd3$export$e5d5e1c1822b6e56", "field", "amount", "options", "$735220c2d4774dd3$export$d52ced6badfb9a4c", "$735220c2d4774dd3$export$dd02b3e0007dfe28", "timeZone", "disambiguation", "$11d87f3f76e88657$export$e67a095c620b86fe", "$fae977aafc393c5c$export$4223de14708adc63", "b", "res", "$14e0f24ef4ac5c92$export$68781ddf31c0090f", "$14e0f24ef4ac5c92$export$c19a80a9721b80f6", "$11d87f3f76e88657$export$b21e0b124e224484", "args", "_class_private_field_init", "calendar", "era", "year", "month", "day", "$35ea8db9cb2ccb90$var$shiftArgs", "$735220c2d4774dd3$export$c4e2ecac49351ef2", "$35ea8db9cb2ccb90$var$_type3", "$35ea8db9cb2ccb90$export$d3b7288e7994edea", "_$35ea8db9cb2ccb90$export$d3b7288e7994edea", "$735220c2d4774dd3$export$96b1d28349274637", "$735220c2d4774dd3$export$6814caac34ca03c7", "$735220c2d4774dd3$export$31b5430eb18be4f8", "$735220c2d4774dd3$export$9a297d111fc86b79", "$11d87f3f76e88657$export$83aac07b4c37b25", "$fae977aafc393c5c$export$bf79f1ebf4b18792", "$11d87f3f76e88657$export$84c95a83c799e074", "offset", "$fb18d541ea1ad717$var$formatterCache", "$fb18d541ea1ad717$export$ad991b66133851cf", "value", "start", "end", "startParts", "endParts", "p", "resolvedOptions", "$fb18d541ea1ad717$var$hasBuggyResolvedHourCycle", "$fb18d541ea1ad717$var$getResolvedHourCycle", "locale", "options", "$fb18d541ea1ad717$var$getCachedDateFormatter", "$fb18d541ea1ad717$var$hour12Preferences", "$fb18d541ea1ad717$var$hasBuggyHour12Behavior", "pref", "defaultHourCycle", "cacheKey", "a", "b", "numberFormatter", "$fb18d541ea1ad717$var$_hasBuggyHour12Behavior", "$fb18d541ea1ad717$var$_hasBuggyResolvedHourCycle", "formatter", "min", "max", "alignCenter", "date", "duration", "locale", "min", "max", "halfDuration", "prop", "key", "value", "aligned", "alignStart", "constrainStart", "$14e0f24ef4ac5c92$export$f91e89d3d0406102", "$14e0f24ef4ac5c92$export$a5a3b454ada2268e", "$14e0f24ef4ac5c92$export$42c81a444fbfb5d4", "alignEnd", "d", "$14e0f24ef4ac5c92$export$a75f2bff57811055", "$11d87f3f76e88657$export$93522d1a439f3617", "$14e0f24ef4ac5c92$export$5c333a116e949cdd", "constrainValue", "minValue", "maxValue", "constrainedDate", "alignDate", "alignment", "isDateEqual", "dateA", "dateB", "$14e0f24ef4ac5c92$export$ea39ec197993aef0", "isDateUnavailable", "date", "isUnavailable", "locale", "minValue", "maxValue", "isDateOutsideRange", "startDate", "endDate", "isPreviousRangeInvalid", "prevDate", "isNextRangeInvalid", "nextDate", "getUnitDuration", "duration", "clone", "key", "getEndDate", "getEraFormat", "getDayFormatter", "timeZone", "$11d87f3f76e88657$export$b21e0b124e224484", "$14e0f24ef4ac5c92$export$d0bdf45af03a6ea3", "$fb18d541ea1ad717$export$ad991b66133851cf", "getMonthFormatter", "formatRange", "formatter", "toString", "parts", "separatorIndex", "i", "part", "start", "end", "formatSelectedDate", "start2", "end2", "daysOfTheWeek", "normalizeFirstDayOfWeek", "firstDayOfWeek", "getStartOfWeek", "date", "locale", "firstDay", "$14e0f24ef4ac5c92$export$42c81a444fbfb5d4", "getDaysInWeek", "weekIndex", "from", "locale", "firstDayOfWeek", "weekDate", "dates", "date", "getStartOfWeek", "nextDate", "$14e0f24ef4ac5c92$export$ea39ec197993aef0", "getMonthDays", "numOfWeeks", "firstDay", "normalizeFirstDayOfWeek", "monthWeeks", "$14e0f24ef4ac5c92$export$ccc1b2479e7dd654", "week", "getWeekdayFormats", "timeZone", "longFormat", "$fb18d541ea1ad717$export$ad991b66133851cf", "shortFormat", "narrowFormat", "value", "getWeekDays", "startOfWeekProp", "weeks", "format", "index", "getMonthNames", "monthNames", "getYearsRange", "range", "years", "year", "FUTURE_YEAR_COERCION", "normalizeYear", "currentYear", "currentCentury", "twoDigitYear", "fullYear", "getDecadeRange", "opts", "chunkSize", "computedYear", "i", "getTodayDate", "$14e0f24ef4ac5c92$export$d0bdf45af03a6ea3", "$14e0f24ef4ac5c92$export$aa8b41735afcabd2", "getAdjustedDateFn", "visibleDuration", "locale", "minValue", "maxValue", "options", "startDate", "focusedDate", "endDate", "getEndDate", "isDateOutsideRange", "constrainValue", "alignEnd", "alignStart", "getNextPage", "adjust", "start", "constrainStart", "getPreviousPage", "getNextSection", "focusedDate", "startDate", "larger", "visibleDuration", "locale", "minValue", "maxValue", "adjust", "getAdjustedDateFn", "getUnitDuration", "getNextPage", "getPreviousSection", "getPreviousPage", "isValidYear", "year", "isValidMonth", "month", "isValidDay", "day", "parseDateString", "date", "timeZone", "regex", "createRegex", "extract", "curr", "normalizeYear", "$35ea8db9cb2ccb90$export$99faa760c7908e4f", "time", "date2", "$fb18d541ea1ad717$export$ad991b66133851cf", "type", "value", "pattern", "str", "matches", "group", "groupMatches", "acc", "index", "getDateRangePreset", "preset", "today3", "$11d87f3f76e88657$export$93522d1a439f3617", "$14e0f24ef4ac5c92$export$461939dd4422153", "$14e0f24ef4ac5c92$export$42c81a444fbfb5d4", "$14e0f24ef4ac5c92$export$ef8b6d9133084f4e", "$14e0f24ef4ac5c92$export$a5a3b454ada2268e", "$14e0f24ef4ac5c92$export$f91e89d3d0406102", "$14e0f24ef4ac5c92$export$a2258d9c4118825c", "$14e0f24ef4ac5c92$export$8b7aa55c66d5569e", "ID", "createLiveRegion", "opts", "level", "doc", "root", "_delay", "win", "parent", "announce", "message", "delay", "region", "role", "destroy", "anatomy", "createAnatomy", "parts", "getLabelId", "ctx", "index", "getRootId", "getTableId", "id", "getContentId", "getCellTriggerId", "getPrevTriggerId", "view", "getNextTriggerId", "getViewTriggerId", "getClearTriggerId", "getControlId", "getInputId", "getTriggerId", "getPositionerId", "getMonthSelectId", "getYearSelectId", "getFocusedCell", "query", "getContentEl", "getTriggerEl", "getInputEls", "queryAll", "getControlEl", "getYearSelectEl", "getMonthSelectEl", "getClearTriggerEl", "getPositionerEl", "adjustStartAndEndDate", "value", "startDate", "endDate", "result", "isDateWithinRange", "date", "sortDates", "values", "a", "b", "getRoleDescription", "match", "PLACEHOLDERS", "getInputPlaceholder", "locale", "$fb18d541ea1ad717$export$ad991b66133851cf", "item", "isValidCharacter", "char", "separator", "isValidDate", "ensureValidCharacters", "getLocaleSeparator", "literalPart", "part", "defaultTranslations", "state", "open", "start", "end", "viewToNumber", "fallback", "viewNumberToView", "viewNumber", "clampView", "minView", "maxView", "clampValue", "isAboveMinView", "isBelowMinView", "getNextView", "nextViewNumber", "getPreviousView", "prevViewNumber", "views", "eachView", "cb", "connect", "service", "normalize", "context", "prop", "send", "computed", "scope", "startValue", "endValue", "selectedValue", "focusedValue", "hoveredValue", "hoveredRangeValue", "disabled", "readOnly", "invalid", "interactive", "min", "max", "timeZone", "startOfWeek", "focused", "isRangePicker", "isDateUnavailableFn", "currentPlacement", "popperStyles", "getPlacementStyles", "translations", "getMonthWeeks", "from", "numOfWeeks", "getMonthDays", "getMonths", "props2", "format", "getMonthNames", "label", "dateValue", "disabled2", "isDateOutsideRange", "getYears", "getYearsRange", "year", "isValueWithinRange", "getDecadeYears", "getDecadeRange", "year2", "isUnavailable", "isDateUnavailable", "focusMonth", "month", "getTodayDate", "focusYear", "getYearTableCellState", "isOutsideVisibleRange", "isOutsideRange", "cellState", "getMonthTableCellState", "formatter", "getMonthFormatter", "getDayTableCellState", "visibleRange", "getDayFormatter", "unitDuration", "getUnitDuration", "outsideDaySelectable", "isInSelectedRange", "isFirstInSelectedRange", "isDateEqual", "isLastInSelectedRange", "hasHoveredRange", "isInHoveredRange", "isFirstInHoveredRange", "isLastInHoveredRange", "$14e0f24ef4ac5c92$export$629b0a497aa65267", "$14e0f24ef4ac5c92$export$618d60ea299da42", "getTableId2", "preset", "getDateRangePreset", "week", "getDaysInWeek", "duration", "getWeekDays", "constrainValue", "computedValue", "nextOpen", "columns", "chunk", "years", "opts", "dataAttr", "uid", "ariaAttr", "event", "exec", "event2", "getEventKey", "focus", "$14e0f24ef4ac5c92$export$91b62ebf2ba703ee", "$14e0f24ef4ac5c92$export$5a8da0c44a3afdf2", "$14e0f24ef4ac5c92$export$ea840f5a6dda8147", "isDisabled", "fixOnBlur", "data", "getNativeEvent", "isComposingEvent", "valueAsString", "and", "createGuards", "isDateArrayEqual", "len", "i", "getValueAsString", "machine", "selectionMode", "numOfMonths", "defaultValue", "defaultView", "locale2", "timeZone2", "value2", "parseDateString", "bindable", "getContext", "v", "alignDate", "getEndDate", "formatted", "isPreviousRangeInvalid", "isNextRangeInvalid", "track", "action", "anchorEl", "getPlacement", "refs", "doc", "createLiveRegion", "trackDismissableElement", "nextView", "prevView", "announceText", "formatSelectedDate", "disableTextSelection", "restoreTextSelection", "params", "setFocusedValue", "raf", "inputEl", "setElementValue", "normalizeValue", "currentValue", "activeIndex", "nextValue", "nextPage", "getNextPage", "setAdjustedValue", "previousPage", "getPreviousPage", "nextSection", "getNextSection", "previousSection", "getPreviousSection", "range", "inputEls", "lastIndexWithValue", "inputEl2", "indexToFocus", "monthSelectEl", "yearSelectEl", "idx", "view2", "mixedValue", "adjustedValue", "getAdjustedDateFn", "parse", "$35ea8db9cb2ccb90$export$99faa760c7908e4f", "$fae977aafc393c5c$export$6b862160d295c8e", "props", "createProps", "splitProps", "createSplitProps", "inputProps", "splitInputProps", "presetTriggerProps", "splitPresetTriggerProps", "tableProps", "splitTableProps", "tableCellProps", "splitTableCellProps", "viewProps", "splitViewProps", "DatePicker", "Component", "props", "VanillaMachine", "machine", "connect", "normalizeProps", "dayViewTriggerContent", "dayViewTriggerEl", "monthViewTriggerContent", "monthViewTriggerEl", "yearViewTriggerContent", "yearViewTriggerEl", "parts", "part", "renderPart", "items", "item", "dayItems", "monthItems", "getNumber", "yearItems", "yearitem", "itemName", "view", "element", "spreadProps", "columns", "el", "tableHeader", "tr", "tableRowProps", "day", "index", "th", "tableBody", "week", "weekIndex", "value", "dayIndex", "td", "cellProps", "div", "triggerProps", "formatString", "getString", "format", "months", "row", "month", "monthIndex", "years", "year", "yearIndex", "initDatePicker", "doc", "selector", "rootEl", "directions", "selectionModes", "views", "formats", "placements", "strategies", "defaultValueStrings", "getStringList", "valueStrings", "defaultFocusedValueStrings", "focusedValueStrings", "datePickerComponent", "generateId", "getBoolean", "dateStr", "parse", "date", "localeDetails", "jsDate", "$fb18d541ea1ad717$export$ad991b66133851cf", "$14e0f24ef4ac5c92$export$d0bdf45af03a6ea3", "$14e0f24ef4ac5c92$export$aa8b41735afcabd2", "mainAxis", "crossAxis", "details", "eventName", "locale", "$14e0f24ef4ac5c92$export$618d60ea299da42", "counterMap", "uncontrolledNodes", "markerMap", "lockCount", "unwrapHost", "node", "correctTargets", "parent", "targets", "target", "correctedTarget", "x", "ignoreableNodes", "isIgnoredNode", "walkTreeOutside", "originalTarget", "props", "parentNode", "markerName", "controlAttribute", "followControlledElements", "markerCounter", "hiddenNodes", "elementsToKeep", "elementsToStop", "keep", "el", "isHTMLElement", "findControlledElements", "controlledElement", "deep", "alreadyHidden", "counterValue", "markerValue", "e", "getParentNode", "hideOthers", "raf", "fn", "frameId", "ariaHidden", "targetsOrFn", "options", "defer", "func", "v", "cleanups", "elements", "__defProp", "__defNormalProp", "obj", "key", "value", "__publicField", "activeFocusTraps", "trapStack", "trap", "activeTrap", "trapIndex", "sharedTrapStack", "FocusTrap", "elements", "options", "event", "target", "getEventTarget", "targetContained", "isDocument", "nextNode", "navAcrossContainers", "getTabIndex", "mruContainerIdx", "tabbableNodes", "mruTabIdx", "node", "g", "n", "valueOrHandler", "isBackward", "destinationNode", "isTabEvent", "isEscapeEvent", "win", "mutations", "mutation", "element", "hasControllerElements", "c", "isControlledByExpandedController", "container", "portalContainer", "isFocusable", "activeElement", "getActiveElement", "firstTabbableGroup", "isSelectableInput", "deactivateOptions", "onDeactivate", "onPostDeactivate", "checkCanReturnFocus", "returnFocus", "finishDeactivation", "delay", "returnFocusNode", "pauseOptions", "onPause", "onPostPause", "unpauseOptions", "onUnpause", "onPostUnpause", "containerElements", "previousActiveElement", "configOverrideOptions", "optionName", "configOptionName", "hasFallback", "params", "optionValue", "err", "opts", "containerIndex", "containerGroup", "startOfGroupIndex", "firstTabbableNode", "isTabbable", "destinationGroupIndex", "destinationGroup", "lastOfGroupIndex", "lastTabbableNode", "config", "isKeyForward", "isKeyBackward", "getDocument", "controlledElement", "getControlledElements", "composedPath", "isControlledElement", "getTabbables", "focusableNodes", "getFocusables", "firstDomTabbableNode", "lastDomTabbableNode", "posTabIndexesFound", "i", "nextTabbableNode", "forward", "nodeIdx", "focusableIdx", "group", "addDomEvent", "cleanup", "activateOptions", "onActivate", "onPostActivate", "checkCanFocusTrap", "finishActivation", "isKeyboardEvent", "fn", "trapFocus", "el", "raf", "resolvedElements", "e", "primaryEl", "LOCK_CLASSNAME", "getPaddingProperty", "documentElement", "documentLeft", "hasStableScrollbarGutter", "element", "scrollbarGutter", "getComputedStyle", "preventBodyScroll", "_document", "doc", "win", "body", "hasStableGutter", "scrollbarWidth", "setScrollbarWidthProperty", "setStyleProperty", "paddingProperty", "setBodyStyle", "styles", "setStyle", "setBodyStyleIOS", "scrollX", "scrollY", "visualViewport", "offsetLeft", "offsetTop", "restoreStyle", "cleanups", "isIos", "fn", "anatomy", "createAnatomy", "parts", "getPositionerId", "ctx", "getBackdropId", "getContentId", "getTriggerId", "getTitleId", "getDescriptionId", "getCloseTriggerId", "getContentEl", "getPositionerEl", "getBackdropEl", "getTriggerEl", "getTitleEl", "getDescriptionEl", "getCloseTriggerEl", "connect", "service", "normalize", "state", "send", "context", "prop", "scope", "ariaLabel", "open", "nextOpen", "event", "rendered", "machine", "props2", "alertDialog", "initialFocusEl", "modal", "bindable", "track", "action", "trackDismissableElement", "preventBodyScroll", "trapFocus", "el", "ariaHidden", "raf", "contentEl", "styles", "getComputedStyle", "node", "props", "createProps", "splitProps", "createSplitProps", "Dialog", "Component", "props", "VanillaMachine", "machine", "connect", "normalizeProps", "parts", "part", "renderPart", "initDialog", "doc", "selector", "rootEl", "directions", "roles", "dialog", "generateId", "getString", "getBoolean", "details", "eventName", "event", "value", "valuesEqual", "callback", "anatomy", "createAnatomy", "parts", "getRootId", "ctx", "getAreaId", "getLabelId", "getPreviewId", "getInputId", "getControlId", "getSubmitTriggerId", "getCancelTriggerId", "getEditTriggerId", "getInputEl", "getPreviewEl", "getSubmitTriggerEl", "getCancelTriggerEl", "getEditTriggerEl", "connect", "service", "normalize", "state", "context", "send", "prop", "scope", "computed", "disabled", "interactive", "readOnly", "required", "invalid", "autoResize", "translations", "editing", "placeholderProp", "placeholder", "value", "empty", "valueText", "value2", "dataAttr", "ariaAttr", "event", "isComposingEvent", "exec", "event2", "localName", "isApple", "machine", "props2", "bindable", "track", "action", "submitMode", "trackInteractOutside", "target", "el", "contains", "focusable", "raf", "inputEl", "prev", "setElementValue", "max", "props", "createProps", "splitProps", "createSplitProps", "Editable", "Component", "props", "VanillaMachine", "machine", "connect", "normalizeProps", "parts", "part", "renderPart", "initEditable", "doc", "selector", "rootEl", "activationModes", "submitModes", "directions", "editable", "generateId", "getString", "getBoolean", "getNumber", "details", "eventName", "event", "value", "current", "valuesEqual", "getItemEntry", "item", "isDirectoryEntry", "entry", "isFileEntry", "addRelativePath", "file", "path", "getFileEntries", "items", "traverseDirectories", "getDirectoryFiles", "resolve", "b", "reader", "entryPromises", "readDirectoryEntries", "entries", "entries2", "promises", "resolve2", "isMIMEType", "v", "isExt", "isValidMIME", "getAcceptAttrString", "accept", "a", "mimeType", "ext", "isFileEqual", "file1", "file2", "isDefined", "v", "isValidFileSize", "file", "minSize", "maxSize", "mimeTypes", "mimeTypesMap", "mime", "extensions", "mimeType", "ext", "getFileMimeType", "name", "extension", "isFileAccepted", "accept", "types", "fileName", "baseMimeType", "type", "validType", "isValidFileType", "isAcceptable", "anatomy", "createAnatomy", "parts", "getRootId", "ctx", "getDropzoneId", "getHiddenInputId", "getTriggerId", "getLabelId", "getItemId", "id", "getItemNameId", "getItemSizeTextId", "getItemPreviewId", "getItemDeleteTriggerId", "getFileId", "file", "hash", "getRootEl", "getHiddenInputEl", "getDropzoneEl", "isEventWithFiles", "event", "target", "getEventTarget", "type", "isFilesWithinRange", "incomingCount", "currentAcceptedFiles", "prop", "computed", "getEventFiles", "files", "currentRejectedFiles", "acceptedFiles", "rejectedFiles", "validateParams", "accepted", "acceptError", "isValidFileType", "sizeMatch", "sizeError", "isValidFileSize", "validateErrors", "valid", "errors", "setInputFiles", "inputEl", "win", "getWindow", "dataTransfer", "DEFAULT_ITEM_TYPE", "INTERACTIVE_SELECTOR", "isInteractiveTarget", "element", "container", "interactive", "contains", "connect", "service", "normalize", "state", "send", "scope", "context", "disabled", "readOnly", "required", "allowDrop", "translations", "dragging", "focused", "maxFiles", "formatBytes", "cb", "url", "dt", "acc", "item", "dataAttr", "props2", "count", "getFileEntries", "flatArray", "visuallyHiddenStyle", "machine", "bindable", "getContext", "a", "b", "i", "isFileEqual", "value", "getAcceptAttrString", "track", "action", "doc", "onDragOver", "onDrop", "callAll", "addDomEvent", "raf", "params", "set", "prev", "transform", "err", "warn", "props", "createProps", "splitProps", "createSplitProps", "itemProps", "splitItemProps", "FileUpload", "Component", "props", "VanillaMachine", "machine", "connect", "normalizeProps", "part", "renderPart", "initFileUpload", "doc", "rootEl", "directions", "generateId", "getString", "getNumber", "getBoolean", "details", "eventName", "anatomy", "createAnatomy", "parts", "getTriggerId", "ctx", "getPositionerId", "getContentId", "getTitleId", "getHeaderId", "getTriggerEl", "getPositionerEl", "getContentEl", "getHeaderEl", "getBoundaryRect", "boundaryEl", "allowOverflow", "boundaryRect", "isHTMLElement", "getElementRect", "getWindowRect", "createRect", "pick", "getResizeAxisStyle", "axis", "validStages", "connect", "service", "normalize", "state", "send", "scope", "prop", "computed", "context", "open", "dragging", "resizing", "isTopmost", "size", "position", "isMaximized", "isMinimized", "isStaged", "canResize", "canDrag", "nextOpen", "position2", "size2", "dataAttr", "event", "open2", "toPx", "getEventTarget", "step", "getEventStep", "handler", "getEventKey", "props2", "translations", "actionProps", "match", "type", "isLeftClick", "node", "target", "panelStack", "proxy", "panelId", "index", "id", "not", "and", "createGuards", "defaultTranslations", "machine", "ensureProps", "bindable", "isSizeEqual", "v", "value", "isPointEqual", "track", "action", "evt", "doc", "trackPointerMove", "point", "altKey", "shiftKey", "x", "clampValue", "y", "win", "skip", "exec", "boundaryEl2", "rect", "constrainRect", "resizeObserverBorderBox", "addDomEvent", "unsub", "subscribe", "contentEl", "hasPrevRect", "raf", "triggerRect", "anchorPosition", "diff", "subtractPoints", "prevPosition", "addPoints", "clampPoint", "el", "prevSize", "lastEventPosition", "prevRect", "offset", "nextRect", "resizeRect", "nextSize", "nextPosition", "clampSize", "headerEl", "invariant", "props", "createProps", "splitProps", "createSplitProps", "resizeTriggerProps", "splitResizeTriggerProps", "FloatingPanel", "Component", "props", "VanillaMachine", "machine", "connect", "normalizeProps", "parts", "part", "renderPart", "stageItems", "item", "resizeItems", "initFloatingPanel", "doc", "rootEl", "strategies", "directions", "defaultPositionX", "getNumber", "defaultPositionY", "defaultSizeWidth", "defaultSizeHeight", "positionX", "positionY", "maxSizeWidth", "maxSizeHeight", "minSizeWidth", "minSizeHeight", "generateId", "getBoolean", "getString", "details", "eventName", "anatomy", "createAnatomy", "parts", "collection", "options", "ListCollection", "gridCollection", "GridCollection", "getRootId", "ctx", "getContentId", "getLabelId", "getItemId", "id", "getItemGroupId", "getItemGroupLabelId", "getContentEl", "getItemEl", "connect", "service", "normalize", "context", "prop", "scope", "computed", "send", "refs", "disabled", "collection2", "layout", "isGridCollection", "focused", "focusVisible", "inputState", "value", "selectedItems", "highlightedValue", "highlightedItem", "isTypingAhead", "interactive", "ariaActiveDescendant", "getItemState", "props2", "itemDisabled", "value2", "ensure", "highlighted", "dataAttr", "event", "isComposingEvent", "nativeEvent", "getNativeEvent", "forwardEvent", "win", "keyboardEvent", "itemState", "ariaAttr", "isCtrlOrMetaKey", "htmlFor", "contains", "getEventTarget", "shiftKey", "keyMap", "event2", "nextValue", "exec", "getEventKey", "target", "isEditableElement", "getByTypeahead", "guards", "createMachine", "setup", "or", "machine", "bindable", "isEqual", "items", "selection", "Selection", "track", "action", "trackFocusVisible", "details", "immediate", "getInteractionModality", "contentEl2", "scrollToIndexFn", "highlightedIndex", "itemEl", "scrollIntoView", "raf", "observeAttributes", "next", "invokeOnSelect", "prevSelectedItems", "item2", "autoHighlight", "firstValue", "diff", "a", "b", "result", "item", "current", "onSelect", "added", "props", "createProps", "splitProps", "createSplitProps", "itemProps", "splitItemProps", "itemGroupProps", "splitItemGroupProps", "itemGroupLabelProps", "splitItemGroupLabelProps", "flattenJsonItems", "data", "parentGroup", "items", "child", "loadJsonItems", "path", "script", "e", "getDomGroups", "rootEl", "groups", "el", "value", "Listbox", "Component", "hasGroups", "collection", "item", "props", "VanillaMachine", "machine", "connect", "normalizeProps", "contentEl", "noIcon", "getBoolean", "groupMap", "uniqueGroups", "g", "groupEl", "labelEl", "itemEl", "textEl", "indicatorEl", "getString", "parts", "part", "renderPart", "itemParts", "i", "id", "initListbox", "doc", "index", "groupId", "generateId", "itemElements", "jsonPath", "label", "group", "disabled", "columnCount", "getNumber", "gridCollection", "directions", "orientations", "selectionModes", "listboxComponent", "getStringList", "details", "eventName", "anatomy", "createAnatomy", "parts", "getTriggerId", "ctx", "getContextTriggerId", "getContentId", "getArrowId", "getPositionerId", "getGroupId", "id", "getItemId", "getItemValue", "el", "getGroupLabelId", "getContentEl", "getPositionerEl", "getTriggerEl", "getItemEl", "value", "getContextTriggerEl", "getElements", "selector", "queryAll", "getFirstEl", "first", "getLastEl", "last", "isMatch", "getNextEl", "opts", "items", "index", "next", "getPrevEl", "prev", "getElemByKey", "item", "getByTypeahead", "isTargetDisabled", "v", "isHTMLElement", "isTriggerItem", "itemSelectEvent", "dispatchSelectionEvent", "win", "getWindow", "event", "connect", "service", "normalize", "context", "send", "state", "computed", "prop", "scope", "open", "isSubmenu", "isTypingAhead", "composite", "currentPlacement", "anchorPoint", "highlightedValue", "popperStyles", "getPlacementStyles", "getItemState", "props2", "getOptionItemProps", "valueText", "getOptionItemState", "getItemProps", "closeOnSelect", "itemState", "ariaAttr", "dataAttr", "target", "isDownloadingEvent", "isOpeningInNewTab", "nextOpen", "parent", "child", "options", "node", "listener", "point", "getEventPoint", "childApi", "triggerProps", "mergeProps", "isContextMenuEvent", "keyMap", "key", "getEventKey", "exec", "contains", "getEventTarget", "isValidTabEvent", "event2", "isPrintableKey", "isModifierKey", "isEditableElement", "type", "disabled", "option", "cast", "dataState", "hasProp", "not", "and", "or", "createGuards", "machine", "details", "clickIfLink", "bindable", "refs", "resolveItemId", "track", "action", "timer", "positioning", "getPositionerEl2", "getPlacement", "data", "getContentEl2", "restoreFocus", "trackDismissableElement", "closeRootMenu", "flush", "doc", "addDomEvent", "e", "isWithinPolygon", "itemEl", "contentEl2", "scrollIntoView", "raf", "observeAttributes", "prev2", "isEqual", "placement", "getAnchorRect", "checked", "onCheckedChange", "isAnchorElement", "menu", "rect", "polygon", "getElementPolygon", "bleed", "getPlacementSide", "contentEl", "getInitialFocus", "first2", "last2", "next2", "children", "isPointInPolygon", "hasChildren", "childMenu", "childTriggerId", "props", "createProps", "splitProps", "createSplitProps", "itemProps", "splitItemProps", "itemGroupLabelProps", "splitItemGroupLabelProps", "itemGroupProps", "splitItemGroupProps", "optionItemProps", "splitOptionItemProps", "loadJsonTreeNodes", "path", "script", "e", "Menu", "Component", "props", "VanillaMachine", "machine", "connect", "normalizeProps", "child", "parent", "jsonPath", "getString", "rootNode", "topLevelNode", "menuId", "menuWrapper", "attr", "trigger", "positioner", "content", "node", "parentEl", "parentMenuId", "hasChildren", "li", "submenuId", "submenuEl", "value", "submenuContent", "childrenIds", "existingChildren", "parts", "part", "renderPart", "items", "item", "labels", "el", "groups", "triggerItems", "triggerEl", "targetMenuId", "childMenu", "indicatorEl", "applyProps", "triggerProps", "spreadProps", "indicatorProps", "hasInitialized", "initMenu", "doc", "selector", "rootEl", "menuIndex", "groupEl", "groupIndex", "groupId", "generateId", "labelEl", "itemEl", "itemIndex", "textEl", "menusMap", "id", "tempInstance", "placements", "strategies", "directions", "instance", "getBoolean", "getNumber", "mainAxis", "crossAxis", "details", "eventName", "event", "parentId", "parentMenu", "parentEvent", "menu", "childIds", "childId", "$488c6ddbf4ef74c2$var$formatterCache", "$488c6ddbf4ef74c2$var$supportsSignDisplay", "$488c6ddbf4ef74c2$var$supportsUnit", "$488c6ddbf4ef74c2$var$UNITS", "$488c6ddbf4ef74c2$export$cc77c4ff7e8673c5", "value", "res", "$488c6ddbf4ef74c2$export$711b50b3c525e0f2", "_UNITS_unit", "unit", "unitDisplay", "locale", "values", "start", "end", "startParts", "endParts", "p", "options", "$488c6ddbf4ef74c2$var$getCachedNumberFormatter", "numberingSystem", "cacheKey", "a", "b", "numberFormatter", "numberFormat", "signDisplay", "num", "needsPositiveSign", "negative", "noSign", "minus", "$6c7bd7858deea686$var$CURRENCY_SIGN_REGEX", "$6c7bd7858deea686$var$NUMBERING_SYSTEMS", "$6c7bd7858deea686$export$cd11ab140839f11d", "value", "$6c7bd7858deea686$var$getNumberParserImpl", "minValue", "maxValue", "locale", "options", "$6c7bd7858deea686$var$numberParserCache", "defaultParser", "$6c7bd7858deea686$var$getCachedNumberParser", "numberingSystem", "parser", "cacheKey", "a", "b", "$6c7bd7858deea686$var$NumberParserImpl", "fullySanitizedValue", "$6c7bd7858deea686$var$replaceAll", "isNegative", "index", "newValue", "_this_options_minimumFractionDigits", "_this_options_maximumFractionDigits", "$488c6ddbf4ef74c2$export$cc77c4ff7e8673c5", "$6c7bd7858deea686$var$getSymbols", "$6c7bd7858deea686$var$nonLiteralParts", "$6c7bd7858deea686$var$pluralNumbers", "formatter", "intlOptions", "originalOptions", "_allParts_find", "_posAllParts_find", "_decimalParts_find", "_allParts_find1", "symbolFormatter", "allParts", "posAllParts", "pluralParts", "n", "_allParts_find_value", "minusSign", "p", "plusSign", "decimal", "group", "allPartsLiterals", "$6c7bd7858deea686$var$escapeRegex", "pluralPartsLiterals", "sortedLiterals", "literals", "numerals", "indexes", "d", "i", "numeral", "str", "find", "replace", "string", "anatomy", "createAnatomy", "parts", "getRootId", "ctx", "getInputId", "getIncrementTriggerId", "getDecrementTriggerId", "getScrubberId", "getCursorId", "getLabelId", "getInputEl", "getIncrementTriggerEl", "getDecrementTriggerEl", "getCursorEl", "getPressedTriggerEl", "hint", "btnEl", "setupVirtualCursor", "point", "isSafari", "createVirtualCursor", "preventTextSelection", "doc", "html", "body", "getMousemoveValue", "opts", "isRtl", "event", "win", "x", "roundToDpr", "y", "newPoint", "width", "half", "wrap", "el", "MAX_Z_INDEX", "recordCursor", "inputEl", "scope", "start", "end", "value", "restoreCursor", "selection", "len", "newValue", "oldValue", "newStart", "getNewCursorPosition", "newEnd", "clampedStart", "clampedEnd", "oldPosition", "beforeCursor", "afterCursor", "prefixLength", "maxPrefixLength", "i", "suffixLength", "maxSuffixLength", "oldIndex", "newIndex", "ratio", "connect", "service", "normalize", "state", "send", "prop", "computed", "focused", "disabled", "readOnly", "required", "scrubbing", "empty", "invalid", "isIncrementDisabled", "isDecrementDisabled", "translations", "dataAttr", "ariaAttr", "selectionStart", "selectionEnd", "nextValue", "isComposingEvent", "step", "getEventStep", "exec", "isModifierKey", "event2", "isLeftClick", "getEventPoint", "dpr", "getWindow", "createFormatter", "locale", "options", "createParser", "$6c7bd7858deea686$export$cd11ab140839f11d", "parseValue", "params", "formatValue", "getDefaultStep", "formatOptions", "defaultStep", "choose", "guards", "createMachine", "setup", "not", "and", "machine", "props2", "bindable", "getComputed", "valueAsNumber", "context", "isValueAtMin", "isValueAtMax", "isValueWithinRange", "memo", "track", "action", "id", "trackFormControl", "btn", "observeAttributes", "onWheel", "dir", "addDomEvent", "requestPointerLock", "onMousemove", "onMouseup", "callAll", "raf", "incrementValue", "clampValue", "decrementValue", "reason", "sel", "setElementValue", "cursorEl", "props", "createProps", "splitProps", "createSplitProps", "NumberInput", "Component", "props", "VanillaMachine", "machine", "connect", "normalizeProps", "parts", "part", "renderPart", "initNumberInput", "doc", "selector", "rootEl", "directions", "numberInput", "generateId", "getString", "getBoolean", "getNumber", "details", "eventName", "event", "value", "callback", "anatomy", "createAnatomy", "parts", "getInputId", "ctx", "getInputEl", "connect", "service", "normalize", "scope", "prop", "context", "visible", "disabled", "invalid", "readOnly", "required", "interactive", "translations", "value", "dataAttr", "ariaAttr", "passwordManagerProps", "event", "isLeftClick", "machine", "props2", "uuid", "bindable", "c", "send", "form", "win", "controller", "props", "createProps", "splitProps", "createSplitProps", "PasswordInput", "Component", "props", "VanillaMachine", "machine", "connect", "normalizeProps", "parts", "part", "renderPart", "initPasswordInput", "doc", "selector", "rootEl", "directions", "generateId", "getPartIds", "getString", "getBoolean", "details", "eventName", "anatomy", "createAnatomy", "parts", "getRootId", "ctx", "getInputId", "id", "getHiddenInputId", "getLabelId", "getControlId", "getRootEl", "getInputEls", "selector", "queryAll", "getInputElAtIndex", "index", "getFirstInputEl", "getHiddenInputEl", "setInputValue", "inputEl", "value", "REGEX", "isValidType", "type", "isValidValue", "pattern", "connect", "service", "normalize", "send", "context", "computed", "prop", "scope", "complete", "disabled", "readOnly", "invalid", "required", "translations", "focusedIndex", "focus", "_", "i", "invariant", "dataAttr", "event", "visuallyHiddenStyle", "props2", "inputType", "ariaAttr", "pastedValue", "getBeforeInputValue", "evt", "getNativeEvent", "isComposingEvent", "isModifierKey", "exec", "getEventKey", "target", "isHTMLElement", "choose", "createMachine", "setup", "machine", "fill", "length", "bindable", "isEqual", "v", "action", "track", "dispatchInputValueEvent", "inputEls", "raf", "flush", "focusedValue", "getNextValue", "setValueAtIndex", "valueAsString", "valueLength", "filledValueLength", "startIndex", "left", "right", "nextValue", "current", "next", "chars", "count", "props", "createProps", "splitProps", "createSplitProps", "PinInput", "Component", "props", "VanillaMachine", "machine", "connect", "normalizeProps", "parts", "part", "renderPart", "initPinInput", "doc", "selector", "rootEl", "inputs", "input", "index", "directions", "generateId", "getString", "getBoolean", "getStringList", "details", "eventName", "QrCodeDataType", "QrCodeDataType2", "__defProp", "__defNormalProp", "obj", "key", "value", "__publicField", "LOW", "MEDIUM", "QUARTILE", "HIGH", "EccMap", "NUMERIC_REGEX", "ALPHANUMERIC_REGEX", "ALPHANUMERIC_CHARSET", "MIN_VERSION", "MAX_VERSION", "PENALTY_N1", "PENALTY_N2", "PENALTY_N3", "PENALTY_N4", "ECC_CODEWORDS_PER_BLOCK", "NUM_ERROR_CORRECTION_BLOCKS", "QrCode", "version", "ecc", "dataCodewords", "msk", "row", "i", "allCodewords", "minPenalty", "penalty", "x", "y", "alignPatPos", "numAlign", "j", "mask", "data", "rem", "bits", "getBit", "color", "b", "dy", "dx", "dist", "xx", "yy", "isDark", "type", "ver", "ecl", "getNumDataCodewords", "numBlocks", "blockEccLen", "rawCodewords", "getNumRawDataModules", "numShortBlocks", "shortBlockLen", "blocks", "rsDiv", "reedSolomonComputeDivisor", "k", "dat", "reedSolomonComputeRemainder", "result", "block", "right", "vert", "invert", "runColor", "runX", "runHistory", "runY", "dark", "sum", "total", "step", "pos", "core", "currentRunColor", "currentRunLength", "appendBits", "val", "len", "bb", "QrSegment", "mode", "numChars", "bitData", "MODE_NUMERIC", "MODE_ALPHANUMERIC", "MODE_BYTE", "numCharCountBits", "makeBytes", "makeNumeric", "digits", "isNumeric", "n", "makeAlphanumeric", "text", "isAlphanumeric", "temp", "makeSegments", "toUtf8ByteArray", "getTotalBits", "segs", "seg", "ccbits", "str", "degree", "root", "reedSolomonMultiply", "divisor", "_", "factor", "coef", "z", "encodeSegments", "minVersion", "maxVersion", "boostEcl", "dataUsedBits", "dataCapacityBits2", "usedBits", "newEcl", "dataCapacityBits", "padByte", "encode", "options", "boostEcc", "maskPattern", "border", "segment", "qr", "addBorder", "mod", "input", "size", "newSize", "anatomy", "createAnatomy", "parts", "getRootId", "scope", "getFrameId", "getFrameEl", "connect", "service", "normalize", "context", "computed", "send", "prop", "encoded", "pixelSize", "height", "width", "paths", "row", "col", "x", "y", "value", "type", "quality", "svgEl", "getDataUrl", "props2", "event", "machine", "bindable", "memo", "encoding", "encode", "mimeType", "fileName", "doc", "dataUri", "a", "props", "createProps", "splitProps", "createSplitProps", "QrCode", "Component", "props", "VanillaMachine", "machine", "connect", "normalizeProps", "parts", "part", "renderPart", "initQrCode", "doc", "selector", "rootEl", "directions", "generateId", "getPartIds", "getString", "getNumber", "getBoolean", "qr", "eventName", "anatomy", "createAnatomy", "parts", "getRootId", "ctx", "getLabelId", "getItemId", "value", "getItemHiddenInputId", "getItemControlId", "getItemLabelId", "getIndicatorId", "getRootEl", "getItemHiddenInputEl", "getIndicatorEl", "getFirstEnabledInputEl", "getFirstEnabledAndCheckedInputEl", "getInputEls", "selector", "queryAll", "getRadioEl", "getOffsetRect", "el", "connect", "service", "normalize", "context", "send", "computed", "prop", "scope", "groupDisabled", "groupInvalid", "readOnly", "getItemState", "props2", "getItemDataAttrs", "itemState", "dataAttr", "focus", "event", "isLeftClick", "isSafari", "focusVisible", "isFocusVisible", "visuallyHiddenStyle", "rect", "rectIsEmpty", "toPx", "not", "createGuards", "machine", "bindable", "track", "action", "trackFormControl", "disabled", "trackFocusVisible", "focusVisibleValue", "input", "refs", "radioEl", "exec", "indicatorCleanup", "resizeObserverBorderBox", "inputEl", "checked", "dispatchInputCheckedEvent", "props", "createProps", "splitProps", "createSplitProps", "itemProps", "splitItemProps", "RadioGroup", "Component", "props", "VanillaMachine", "machine", "connect", "normalizeProps", "part", "renderPart", "itemEl", "value", "getString", "disabled", "getBoolean", "childPart", "initRadioGroup", "doc", "selector", "rootEl", "index", "generateId", "radioGroup", "details", "eventName", "event", "callback", "anatomy", "createAnatomy", "parts", "collection", "options", "ListCollection", "getRootId", "ctx", "getContentId", "getTriggerId", "getClearTriggerId", "getLabelId", "getControlId", "getItemId", "id", "getHiddenSelectId", "getPositionerId", "getItemGroupId", "getItemGroupLabelId", "getHiddenSelectEl", "getContentEl", "getTriggerEl", "getClearTriggerEl", "getPositionerEl", "getItemEl", "connect", "service", "normalize", "context", "prop", "scope", "state", "computed", "send", "disabled", "invalid", "required", "readOnly", "composite", "collection2", "open", "focused", "highlightedValue", "highlightedItem", "selectedItems", "currentPlacement", "isTypingAhead", "interactive", "ariaActiveDescendant", "getItemState", "props2", "_disabled", "value", "ensure", "popperStyles", "getPlacementStyles", "nextOpen", "dataAttr", "event", "exec", "event2", "getEventKey", "getByTypeahead", "itemState", "ariaAttr", "htmlFor", "defaultValue", "visuallyHiddenStyle", "contains", "getEventTarget", "isValidTabEvent", "keyMap", "target", "isEditableElement", "and", "not", "or", "createGuards", "machine", "bindable", "isEqual", "items", "refs", "track", "action", "restoreFocusFn", "trackFormControl", "contentEl", "restoreFocus", "trackDismissableElement", "positioning", "getPlacement", "data", "immediate", "contentEl2", "scrollToIndexFn", "highlightedIndex", "itemEl", "scrollIntoView", "raf", "observeAttributes", "positionerEl", "getInitialFocus", "prev", "addOrRemove", "v", "firstItem", "firstValue", "selectEl", "option", "prevSelectedItems", "value2", "item2", "node", "win", "changeEvent", "props", "createProps", "splitProps", "createSplitProps", "itemProps", "splitItemProps", "itemGroupProps", "splitItemGroupProps", "itemGroupLabelProps", "splitItemGroupLabelProps", "flattenJsonItems", "data", "parentGroup", "items", "child", "loadJsonItems", "path", "script", "e", "getDomGroups", "rootEl", "groups", "el", "value", "Select", "Component", "props", "hasGroups", "collection", "item", "VanillaMachine", "machine", "connect", "normalizeProps", "contentEl", "groupMap", "uniqueGroups", "groupsWithItems", "g", "groupEl", "labelEl", "itemEl", "allDomItems", "visibleGroups", "groupId", "control", "hiddenSelect", "option", "isJson", "getString", "parts", "part", "renderPart", "itemParts", "i", "getBoolean", "id", "trigger", "node", "selectedItems", "displayText", "textNode", "firstChild", "initSelect", "doc", "selector", "index", "generateId", "itemElements", "label", "jsonPath", "group", "disabled", "directions", "placements", "strategies", "selectComponent", "getStringList", "getNumber", "mainAxis", "crossAxis", "details", "eventName", "event", "current", "arraysEqualUnordered", "$", "u", "x", "h", "se", "l", "a", "b", "he", "R", "B", "ue", "ge", "de", "A", "G", "ie", "L", "y", "n", "f", "d", "K", "ee", "C", "xe", "pe", "V", "ce", "r", "D", "S", "j", "q", "c", "p", "g", "T", "te", "_", "M", "H", "i", "o", "s", "W", "m", "U", "X", "z", "F", "O", "E", "J", "I", "v", "Z", "le", "fe", "re", "Y", "be", "ne", "w", "oe", "P", "k", "N", "me", "ae", "_e", "anatomy", "createAnatomy", "parts", "getRootId", "ctx", "getControlId", "getLabelId", "getHiddenInputId", "getControlEl", "getSegmentEl", "query", "getDataUrl", "options", "connect", "service", "normalize", "state", "send", "prop", "computed", "context", "scope", "drawing", "empty", "interactive", "disabled", "required", "translations", "type", "quality", "dataAttr", "event", "isLeftClick", "isModifierKey", "getEventTarget", "point", "controlEl", "offset", "getRelativePoint", "props2", "average", "a", "b", "getSvgPathFromStroke", "points", "closed", "len", "c", "result", "i", "max", "machine", "bindable", "value", "doc", "trackPointerMove", "nextPoints", "stroke", "_e", "nextPaths", "props", "createProps", "splitProps", "createSplitProps", "SignaturePad", "Component", "props", "VanillaMachine", "machine", "connect", "normalizeProps", "svg", "path", "pathEl", "key", "value", "currentPathEl", "parts", "part", "renderPart", "dataUrl", "initSignaturePad", "doc", "selector", "rootEl", "directions", "generateId", "getStringList", "getString", "getBoolean", "getNumber", "details", "eventName", "getDomItems", "rootEl", "items", "el", "label", "code", "url", "SiteSearch", "Component", "props", "pagefind", "collection", "item", "query", "searchResults", "searchItems", "result", "getNumber", "data", "error", "newCollection", "self", "VanillaMachine", "machine", "details", "connect", "normalizeProps", "contentEl", "noResult", "getString", "list", "spreadProps", "li", "excerptDiv", "parts", "part", "renderPart", "initSiteSearch", "pagefindInstance", "doc", "selector", "directions", "placements", "strategies", "inputBehaviors", "selectionBehaviors", "siteSearchComponent", "generateId", "getBoolean", "getStringList", "mainAxis", "crossAxis", "eventName", "event", "anatomy", "createAnatomy", "parts", "getRootId", "ctx", "getLabelId", "getThumbId", "getControlId", "getHiddenInputId", "getRootEl", "getHiddenInputEl", "connect", "service", "normalize", "context", "send", "prop", "scope", "disabled", "readOnly", "required", "checked", "focused", "focusVisible", "active", "dataAttrs", "dataAttr", "checked2", "event", "getEventTarget", "isSafari", "visuallyHiddenStyle", "focusVisible2", "isFocusVisible", "not", "createGuards", "machine", "props2", "bindable", "value", "track", "action", "computed", "trackPress", "trackFocusVisible", "trackFormControl", "key", "inputEl", "setElementChecked", "dispatchInputCheckedEvent", "props", "createProps", "splitProps", "createSplitProps", "ZagSwitch", "Component", "props", "VanillaMachine", "machine", "connect", "normalizeProps", "parts", "part", "renderPart", "initSwitch", "doc", "rootEl", "directions", "zagSwitch", "generateId", "getBoolean", "getString", "details", "eventName", "event", "value", "valuesEqual", "callback", "anatomy", "createAnatomy", "parts", "getRootId", "ctx", "getListId", "getContentId", "value", "getTriggerId", "getIndicatorId", "getListEl", "getContentEl", "getTriggerEl", "getIndicatorEl", "getElements", "selector", "queryAll", "getFirstTriggerEl", "first", "getLastTriggerEl", "last", "getNextTriggerEl", "opts", "nextById", "getPrevTriggerEl", "prevById", "getOffsetRect", "el", "getRectByValue", "tab", "itemById", "connect", "service", "normalize", "state", "send", "context", "prop", "scope", "translations", "focused", "isVertical", "isHorizontal", "composite", "getTriggerState", "props2", "id", "fromValue", "dataAttr", "event", "isComposingEvent", "contains", "getEventTarget", "keyMap", "key", "getEventKey", "exec", "disabled", "triggerState", "isOpeningInNewTab", "isSafari", "selected", "rect", "rectIsEmpty", "toPx", "createMachine", "setup", "machine", "details", "clickIfLink", "bindable", "track", "action", "raf", "focusedValue", "flush", "nullable", "triggerEl", "contentEl", "getFocusables", "refs", "cleanup", "prev", "isEqual", "triggerEls", "indicatorCleanup", "callAll", "resizeObserverBorderBox", "isAnchorElement", "props", "createProps", "splitProps", "createSplitProps", "triggerProps", "splitTriggerProps", "contentProps", "splitContentProps", "Tabs", "Component", "props", "VanillaMachine", "machine", "connect", "normalizeProps", "renderPart", "list", "triggers", "contents", "triggerEl", "index", "value", "getString", "generateId", "getBoolean", "contentEl", "initTabs", "doc", "selector", "rootEl", "tabsInstance", "getPartIds", "details", "eventName", "event", "callback", "anatomy", "createAnatomy", "parts", "getRootId", "ctx", "getAreaId", "validActions", "connect", "service", "normalize", "state", "send", "computed", "scope", "running", "paused", "time", "formattedTime", "progressPercent", "props2", "value", "match", "event", "machine", "validateProps", "prop", "bindable", "track", "context", "msToTime", "formatTime", "memo", "currentMs", "targetMs", "startMs", "countdown", "percent", "toPercent", "clampValue", "setRafInterval", "deltaMs", "setRafTimeout", "sign", "roundToInterval", "prev", "newValue", "ms", "milliseconds", "seconds", "minutes", "hours", "minValue", "maxValue", "range", "padStart", "num", "size", "interval", "days", "props", "createProps", "splitProps", "createSplitProps", "parseFlexibleDate", "input", "t", "days", "hours", "minutes", "seconds", "milliseconds", "Timer", "Component", "props", "VanillaMachine", "machine", "connect", "normalizeProps", "parts", "part", "renderPart", "itemEl", "type", "getString", "actionEl", "initTimer", "doc", "selector", "rootEl", "countdown", "getBoolean", "startAttr", "targetAttr", "startMs", "targetMs", "timeObj", "getNumber", "v", "futureMs", "nowMs", "timerComponent", "generateId", "details", "eventName", "anatomy", "createAnatomy", "parts", "getRegionId", "placement", "getRegionEl", "ctx", "getRootId", "getRootEl", "getTitleId", "getDescriptionId", "getCloseTriggerId", "defaultTimeouts", "getToastDuration", "duration", "type", "getOffsets", "offsets", "getGroupPlacementStyle", "service", "prop", "computed", "context", "gap", "heights", "computedOffset", "rtl", "computedPlacement", "isRighty", "isLefty", "styles", "MAX_Z_INDEX", "alignItems", "offset", "getPlacementStyle", "visible", "parent", "side", "mounted", "remainingTime", "height", "frontmost", "sibling", "overlap", "stacked", "assign", "overrides", "getGhostBeforeStyle", "getGhostAfterStyle", "groupConnect", "normalize", "send", "refs", "options", "label", "hotkey", "hotkeyLabel", "align", "event", "contains", "fn", "guards", "createMachine", "setup", "and", "groupMachine", "props", "uuid", "AnimationFrame", "bindable", "toasts", "t", "track", "action", "toast", "prev", "index", "addDomEvent", "key", "scope", "pauseOnPageIdle", "doc", "isHidden", "hasToasts", "cleanup", "trackDismissableBranch", "connect", "state", "paused", "title", "description", "dataAttr", "not", "createGuards", "machine", "ensureProps", "height2", "heightIndex", "curr", "reducerIndex", "message", "setRafTimeout", "raf", "rootEl", "syncHeight", "originalHeight", "item", "setHeight", "win", "observer", "closeTimerStartTime", "elapsedTime", "id", "i", "withDefaults", "defaults", "compact", "createToastStore", "attrs", "subscribers", "dismissedToasts", "toastQueue", "subscribe", "subscriber", "publish", "data", "addToast", "processQueue", "nextToast", "create", "exists", "remove", "promise2", "shared", "warn", "removable", "result", "prom", "runIfFn", "response", "isHttpResponse", "errorOptions", "successOptions", "error2", "resolve", "reject", "group", "toastInstances", "toastStores", "ToastItem", "Component", "el", "actor", "props", "VanillaMachine", "machine", "connect", "normalizeProps", "rootProps", "spreadProps", "renderPart", "titleEl", "descEl", "Toast", "generateId", "group", "api", "toastActor", "index", "toastComp", "rootEl", "groupProps", "toasts", "t", "newToastMap", "id", "comp", "initToast", "doc", "selector", "toastInstance", "rootEl", "groupId", "generateId", "placement", "getString", "max", "getNumber", "gap", "offsets", "store", "createToastStore", "Toast", "toastInstances", "toastStores", "createToast", "options", "el", "createInfoToast", "title", "description", "createSuccessToast", "createErrorToast", "createWarningToast", "createLoadingToast", "updateToast", "id", "stores", "dismissToast", "anatomy", "createAnatomy", "parts", "getRootId", "ctx", "getItemId", "value", "getRootEl", "getElements", "selector", "queryAll", "getFirstEl", "first", "getLastEl", "last", "getNextEl", "id", "loopFocus", "nextById", "getPrevEl", "prevById", "connect", "service", "normalize", "context", "send", "prop", "scope", "disabled", "isSingle", "rovingFocus", "isHorizontal", "getItemState", "props2", "value2", "dataAttr", "event", "getEventTarget", "target", "contains", "itemState", "rovingTabIndex", "isSafari", "exec", "event2", "isShiftTab", "getEventKey", "not", "and", "createGuards", "machine", "bindable", "closestToolbar", "ensureProps", "next", "isArray", "addOrRemove", "isEqual", "raf", "focusedId", "props", "createProps", "splitProps", "createSplitProps", "itemProps", "splitItemProps", "ToggleGroup", "Component", "props", "VanillaMachine", "machine", "connect", "normalizeProps", "parts", "part", "renderPart", "itemEl", "value", "getString", "disabled", "getBoolean", "initToggleGroup", "doc", "selector", "rootEl", "directions", "orientations", "toggleGroup", "generateId", "getStringList", "details", "eventName", "event", "current", "arraysEqualUnordered", "callback", "anatomy", "createAnatomy", "parts", "collection", "options", "TreeCollection", "getRootId", "ctx", "getLabelId", "getNodeId", "value", "getTreeId", "focusNode", "getRenameInputId", "getRenameInputEl", "getCheckedState", "collection2", "node", "checkedValue", "childValues", "allChecked", "v", "someChecked", "toggleBranchChecked", "child", "uniq", "remove", "add", "getCheckedValueMap", "map", "isBranch", "checked", "connect", "service", "normalize", "context", "scope", "computed", "prop", "send", "expandedValue", "selectedValue", "isTypingAhead", "focusedValue", "loadingStatus", "renamingValue", "getNodeState", "props2", "indexPath", "firstNode", "firstNodeValue", "parentNode", "_selectedValue", "_expandedValue", "label", "parts", "event", "isComposingEvent", "target", "getEventTarget", "isEditableElement", "nodeId", "isBranchNode", "keyMap", "event2", "isModifierKey", "isAnchorElement", "canRenameFn", "node2", "key", "getEventKey", "exec", "getByTypeahead", "nodeState", "dataAttr", "ariaAttr", "isLeftClick", "isMetaKey", "itemState", "checkedState", "expandBranches", "params", "values", "refs", "prev", "loadedValues", "loadingValues", "partition", "nodeWithChildren", "nodeWithoutChildren", "id", "acc", "nodesToLoad", "valuePath", "pendingAborts", "loadChildren", "ensure", "proms", "existingAbort", "abortController", "results", "loadedValues2", "nodeWithErrors", "nextLoadingStatus", "collection3", "result", "index", "skipFn", "and", "createGuards", "machine", "collection", "bindable", "getContext", "isEqual", "nodes", "isArray", "last", "toArray", "action", "isExpanded", "valuesToExpand", "diff", "firstValue", "scrollToNode", "raf", "lastNode", "lastValue", "branchNode", "nextNode", "nextValue", "prevNode", "prevValue", "parentValue", "elements", "addOrRemove", "branchValues", "anchorValue", "first", "targetValue", "hits", "nodeValue", "currentSelection", "current", "aborts", "abort", "onRenameStartFn", "trimmedLabel", "onBeforeRenameFn", "inputEl", "setElementValue", "scrollToIndexFn", "visibleNodes", "i", "props", "createProps", "splitProps", "createSplitProps", "itemProps", "splitItemProps", "loadJsonTreeNodes", "path", "script", "e", "buildNodeTreeFromDOM", "container", "rootEl", "processElement", "element", "part", "id", "name", "branchContent", "childNodes", "child", "childPart", "childEl", "children", "el", "getString", "TreeView", "Component", "props", "VanillaMachine", "machine", "connect", "normalizeProps", "treeEl", "noIcon", "getBoolean", "noIndicator", "folderIconSvg", "docIconSvg", "chevronIconSvg", "renderNodeRecursive", "node", "parentEl", "branchEl", "branchControl", "branchText", "branchIndicator", "branchIndentGuide", "itemEl", "childNode", "parts", "renderPart", "items", "item", "renderNode", "initTreeView", "doc", "selector", "directions", "selectionModes", "jsonPath", "rootNode", "collection", "treeViewComponent", "generateId", "getStringList", "details", "eventName", "event", "value", "current", "arraysEqualUnordered", "initAll", "doc", "initAccordion", "initAngleSlider", "initAvatar", "initCarousel", "initCheckbox", "initClipboard", "initCode", "initCollapsible", "initColorPicker", "initCombobox", "initDatePicker", "initDialog", "initEditable", "initFileUpload", "initFloatingPanel", "initListbox", "initMenu", "initNumberInput", "initPasswordInput", "initPinInput", "initQrCode", "initRadioGroup", "initSelect", "initSignaturePad", "initSiteSearch", "initSwitch", "initTabs", "initTimer", "initToast", "initToggleGroup", "initTreeView"]
}
