@m3e/web 2.5.10 → 2.5.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/dist/all.js +371 -125
  2. package/dist/all.js.map +1 -1
  3. package/dist/all.min.js +56 -56
  4. package/dist/all.min.js.map +1 -1
  5. package/dist/autocomplete.js +23 -5
  6. package/dist/autocomplete.js.map +1 -1
  7. package/dist/autocomplete.min.js +1 -1
  8. package/dist/autocomplete.min.js.map +1 -1
  9. package/dist/breadcrumb.js +1 -1
  10. package/dist/breadcrumb.js.map +1 -1
  11. package/dist/breadcrumb.min.js +1 -1
  12. package/dist/breadcrumb.min.js.map +1 -1
  13. package/dist/button.js +13 -7
  14. package/dist/button.js.map +1 -1
  15. package/dist/button.min.js +1 -1
  16. package/dist/button.min.js.map +1 -1
  17. package/dist/checkbox.js +5 -0
  18. package/dist/checkbox.js.map +1 -1
  19. package/dist/checkbox.min.js +1 -1
  20. package/dist/checkbox.min.js.map +1 -1
  21. package/dist/chips.js +2 -2
  22. package/dist/chips.js.map +1 -1
  23. package/dist/chips.min.js +1 -1
  24. package/dist/chips.min.js.map +1 -1
  25. package/dist/core.js +27 -23
  26. package/dist/core.js.map +1 -1
  27. package/dist/core.min.js +1 -1
  28. package/dist/core.min.js.map +1 -1
  29. package/dist/css-custom-data.json +5263 -5233
  30. package/dist/custom-elements.json +51230 -50306
  31. package/dist/fab.js +9 -9
  32. package/dist/fab.js.map +1 -1
  33. package/dist/fab.min.js +1 -1
  34. package/dist/fab.min.js.map +1 -1
  35. package/dist/form-field.js +4 -5
  36. package/dist/form-field.js.map +1 -1
  37. package/dist/form-field.min.js +2 -2
  38. package/dist/form-field.min.js.map +1 -1
  39. package/dist/html-custom-data.json +1693 -1666
  40. package/dist/icon-button.js +48 -42
  41. package/dist/icon-button.js.map +1 -1
  42. package/dist/icon-button.min.js +1 -1
  43. package/dist/icon-button.min.js.map +1 -1
  44. package/dist/menu.js +2 -2
  45. package/dist/menu.js.map +1 -1
  46. package/dist/menu.min.js +1 -1
  47. package/dist/menu.min.js.map +1 -1
  48. package/dist/option.js +13 -3
  49. package/dist/option.js.map +1 -1
  50. package/dist/option.min.js +1 -1
  51. package/dist/option.min.js.map +1 -1
  52. package/dist/paginator.js +1 -1
  53. package/dist/paginator.js.map +1 -1
  54. package/dist/paginator.min.js +2 -2
  55. package/dist/paginator.min.js.map +1 -1
  56. package/dist/radio-group.js +6 -1
  57. package/dist/radio-group.js.map +1 -1
  58. package/dist/radio-group.min.js +1 -1
  59. package/dist/radio-group.min.js.map +1 -1
  60. package/dist/select.js +18 -2
  61. package/dist/select.js.map +1 -1
  62. package/dist/select.min.js +1 -1
  63. package/dist/select.min.js.map +1 -1
  64. package/dist/split-button.js +1 -1
  65. package/dist/split-button.js.map +1 -1
  66. package/dist/split-button.min.js +1 -1
  67. package/dist/split-button.min.js.map +1 -1
  68. package/dist/src/autocomplete/AutocompleteElement.d.ts.map +1 -1
  69. package/dist/src/button/ButtonElement.d.ts +1 -0
  70. package/dist/src/button/ButtonElement.d.ts.map +1 -1
  71. package/dist/src/checkbox/CheckboxElement.d.ts.map +1 -1
  72. package/dist/src/core/shared/mixins/LinkButton.d.ts.map +1 -1
  73. package/dist/src/core/shared/tokens/DesignToken.d.ts +3 -0
  74. package/dist/src/core/shared/tokens/DesignToken.d.ts.map +1 -1
  75. package/dist/src/core/shared/tokens/MeasurementToken.d.ts +13 -7
  76. package/dist/src/core/shared/tokens/MeasurementToken.d.ts.map +1 -1
  77. package/dist/src/fab/styles/FabSizeToken.d.ts.map +1 -1
  78. package/dist/src/form-field/FormFieldElement.d.ts.map +1 -1
  79. package/dist/src/icon-button/IconButtonElement.d.ts +1 -0
  80. package/dist/src/icon-button/IconButtonElement.d.ts.map +1 -1
  81. package/dist/src/icon-button/styles/IconButtonSizeToken.d.ts.map +1 -1
  82. package/dist/src/menu/MenuElement.d.ts.map +1 -1
  83. package/dist/src/menu/MenuItemElementBase.d.ts.map +1 -1
  84. package/dist/src/option/OptionElement.d.ts.map +1 -1
  85. package/dist/src/option/OptionPanelElement.d.ts.map +1 -1
  86. package/dist/src/paginator/PaginatorElement.d.ts.map +1 -1
  87. package/dist/src/radio-group/RadioElement.d.ts.map +1 -1
  88. package/dist/src/select/SelectElement.d.ts.map +1 -1
  89. package/dist/src/split-button/SplitButtonElement.d.ts.map +1 -1
  90. package/dist/src/switch/SwitchElement.d.ts.map +1 -1
  91. package/dist/src/switch/styles/SwitchToken.d.ts.map +1 -1
  92. package/dist/src/theme/ThemeElement.d.ts +6 -0
  93. package/dist/src/theme/ThemeElement.d.ts.map +1 -1
  94. package/dist/src/theme/ThemeIconElement.d.ts +60 -0
  95. package/dist/src/theme/ThemeIconElement.d.ts.map +1 -0
  96. package/dist/src/theme/ThemeVariant.d.ts +3 -0
  97. package/dist/src/theme/ThemeVariant.d.ts.map +1 -0
  98. package/dist/src/theme/index.d.ts +2 -0
  99. package/dist/src/theme/index.d.ts.map +1 -1
  100. package/dist/switch.js +16 -11
  101. package/dist/switch.js.map +1 -1
  102. package/dist/switch.min.js +1 -1
  103. package/dist/switch.min.js.map +1 -1
  104. package/dist/theme.js +184 -11
  105. package/dist/theme.js.map +1 -1
  106. package/dist/theme.min.js +31 -31
  107. package/dist/theme.min.js.map +1 -1
  108. package/package.json +1 -1
@@ -8,9 +8,9 @@ import { LitElement, html, css } from 'lit';
8
8
  import { property } from 'lit/decorators.js';
9
9
  import { HtmlFor, MutationController, setCustomState, deleteCustomState, prefersReducedMotion, scrollIntoViewIfNeeded, forcedColorsActive, addCustomState, customElement } from '@m3e/web/core';
10
10
  import { ListKeyManager, M3eLiveAnnouncer } from '@m3e/web/core/a11y';
11
- import { M3eOptGroupElement } from '@m3e/web/option';
11
+ import { M3eOptionElement, M3eOptGroupElement } from '@m3e/web/option';
12
12
 
13
- var _M3eAutocompleteElement_instances, _M3eAutocompleteElement_id, _M3eAutocompleteElement_menuId, _M3eAutocompleteElement_clone, _M3eAutocompleteElement_ignoreFocusVisible, _M3eAutocompleteElement_menu, _M3eAutocompleteElement_ignoreHideMenuOnBlur, _M3eAutocompleteElement_inputChanged, _M3eAutocompleteElement_hasFocus, _M3eAutocompleteElement_mutationAbortController, _M3eAutocompleteElement_clickHandler, _M3eAutocompleteElement_formFieldPointerDownHandler, _M3eAutocompleteElement_focusHandler, _M3eAutocompleteElement_blurHandler, _M3eAutocompleteElement_keyDownHandler, _M3eAutocompleteElement_inputHandler, _M3eAutocompleteElement_changeHandler, _M3eAutocompleteElement_menuToggleHandler, _M3eAutocompleteElement_menuPointerDownHandler, _M3eAutocompleteElement_menuPointerUpHandler, _M3eAutocompleteElement_menuPressedOption, _M3eAutocompleteElement_options_get, _M3eAutocompleteElement_input_get, _M3eAutocompleteElement_hasNoDataSlot_get, _M3eAutocompleteElement_hasLoadingSlot_get, _M3eAutocompleteElement_shouldShowMenu_get, _M3eAutocompleteElement_formField_get, _M3eAutocompleteElement_handleMutation, _M3eAutocompleteElement_handleClick, _M3eAutocompleteElement_handleFormFieldPointerDown, _M3eAutocompleteElement_handleFocus, _M3eAutocompleteElement_handleBlur, _M3eAutocompleteElement_handleInput, _M3eAutocompleteElement_handleChange, _M3eAutocompleteElement_handleKeyDown, _M3eAutocompleteElement_handleMenuPointerDown, _M3eAutocompleteElement_handleMenuPointerUp, _M3eAutocompleteElement_handleMenuToggle, _M3eAutocompleteElement_destroyMenu, _M3eAutocompleteElement_showMenu, _M3eAutocompleteElement_projectClone, _M3eAutocompleteElement_updateMenuState, _M3eAutocompleteElement_hideMenu, _M3eAutocompleteElement_activateOption, _M3eAutocompleteElement_updateSelectionState, _M3eAutocompleteElement_selectOption, _M3eAutocompleteElement_filterOption, _M3eAutocompleteElement_filterOptions, _M3eAutocompleteElement_clearOptions, _M3eAutocompleteElement_announceResults, _M3eAutocompleteElement_autoActivate, _M3eAutocompleteElement_deactivateOption;
13
+ var _M3eAutocompleteElement_instances, _M3eAutocompleteElement_id, _M3eAutocompleteElement_menuId, _M3eAutocompleteElement_clone, _M3eAutocompleteElement_ignoreFocusVisible, _M3eAutocompleteElement_menu, _M3eAutocompleteElement_ignoreHideMenuOnBlur, _M3eAutocompleteElement_inputChanged, _M3eAutocompleteElement_hasFocus, _M3eAutocompleteElement_mutationAbortController, _M3eAutocompleteElement_clickHandler, _M3eAutocompleteElement_formFieldPointerDownHandler, _M3eAutocompleteElement_focusHandler, _M3eAutocompleteElement_blurHandler, _M3eAutocompleteElement_keyDownHandler, _M3eAutocompleteElement_inputHandler, _M3eAutocompleteElement_changeHandler, _M3eAutocompleteElement_menuToggleHandler, _M3eAutocompleteElement_menuPointerDownHandler, _M3eAutocompleteElement_menuPointerUpHandler, _M3eAutocompleteElement_menuPressedOption, _M3eAutocompleteElement_options_get, _M3eAutocompleteElement_input_get, _M3eAutocompleteElement_hasNoDataSlot_get, _M3eAutocompleteElement_hasLoadingSlot_get, _M3eAutocompleteElement_shouldShowMenu_get, _M3eAutocompleteElement_formField_get, _M3eAutocompleteElement_handleOptionStateChange, _M3eAutocompleteElement_handleMutation, _M3eAutocompleteElement_handleClick, _M3eAutocompleteElement_handleFormFieldPointerDown, _M3eAutocompleteElement_handleFocus, _M3eAutocompleteElement_handleBlur, _M3eAutocompleteElement_handleInput, _M3eAutocompleteElement_handleChange, _M3eAutocompleteElement_handleKeyDown, _M3eAutocompleteElement_handleMenuPointerDown, _M3eAutocompleteElement_handleMenuPointerUp, _M3eAutocompleteElement_handleMenuToggle, _M3eAutocompleteElement_destroyMenu, _M3eAutocompleteElement_showMenu, _M3eAutocompleteElement_projectClone, _M3eAutocompleteElement_updateMenuState, _M3eAutocompleteElement_hideMenu, _M3eAutocompleteElement_activateOption, _M3eAutocompleteElement_updateSelectionState, _M3eAutocompleteElement_selectOption, _M3eAutocompleteElement_filterOption, _M3eAutocompleteElement_filterOptions, _M3eAutocompleteElement_clearOptions, _M3eAutocompleteElement_announceResults, _M3eAutocompleteElement_autoActivate, _M3eAutocompleteElement_deactivateOption;
14
14
  var M3eAutocompleteElement_1;
15
15
  /**
16
16
  * Enhances a text input with suggested options.
@@ -275,7 +275,7 @@ let M3eAutocompleteElement = M3eAutocompleteElement_1 = class M3eAutocompleteEle
275
275
  }
276
276
  /** @inheritdoc */
277
277
  render() {
278
- return html`<div class="options" aria-hidden="true"><slot></slot></div>`;
278
+ return html`<div class="options" aria-hidden="true" @state-change="${__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "m", _M3eAutocompleteElement_handleOptionStateChange)}"><slot></slot></div>`;
279
279
  }
280
280
  };
281
281
  _M3eAutocompleteElement_id = new WeakMap();
@@ -317,6 +317,16 @@ _M3eAutocompleteElement_shouldShowMenu_get = function _M3eAutocompleteElement_sh
317
317
  _M3eAutocompleteElement_formField_get = function _M3eAutocompleteElement_formField_get() {
318
318
  return this.control?.closest("m3e-form-field") ?? null;
319
319
  };
320
+ _M3eAutocompleteElement_handleOptionStateChange = function _M3eAutocompleteElement_handleOptionStateChange(e) {
321
+ if (!(e.target instanceof M3eOptionElement)) return;
322
+ e.stopImmediatePropagation();
323
+ const index = this.options.indexOf(e.target);
324
+ if (index == -1) return;
325
+ const clone = __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_options_get)[index];
326
+ if (!clone) return;
327
+ clone.disabled = e.target.disabled;
328
+ clone.selected = e.target.selected;
329
+ };
320
330
  _M3eAutocompleteElement_handleMutation = /** @private */
321
331
  async function _M3eAutocompleteElement_handleMutation() {
322
332
  if (__classPrivateFieldGet(this, _M3eAutocompleteElement_mutationAbortController, "f")) {
@@ -587,13 +597,21 @@ _M3eAutocompleteElement_projectClone = function _M3eAutocompleteElement_projectC
587
597
  if (!__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_hasNoDataSlot_get) && this.noDataLabel) {
588
598
  const noDataSpan = document.createElement("span");
589
599
  noDataSpan.slot = "no-data";
590
- noDataSpan.textContent = this.noDataLabel;
600
+ noDataSpan.translate = false;
601
+ const text = document.createElement("span");
602
+ text.translate = true;
603
+ text.textContent = this.noDataLabel;
604
+ noDataSpan.append(text);
591
605
  children.push(noDataSpan);
592
606
  }
593
607
  if (!__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_hasLoadingSlot_get) && this.loadingLabel) {
594
608
  const loadingSpan = document.createElement("span");
595
609
  loadingSpan.slot = "loading";
596
- loadingSpan.textContent = this.loadingLabel;
610
+ loadingSpan.translate = false;
611
+ const text = document.createElement("span");
612
+ text.translate = true;
613
+ text.textContent = this.loadingLabel;
614
+ loadingSpan.append(text);
597
615
  children.push(loadingSpan);
598
616
  }
599
617
  __classPrivateFieldGet(this, _M3eAutocompleteElement_menu, "f").replaceChildren(...children);
@@ -1 +1 @@
1
- {"version":3,"file":"autocomplete.js","sources":["../../src/autocomplete/AutocompleteElement.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */\r\nimport { css, CSSResultGroup, html, LitElement, PropertyValues } from \"lit\";\r\nimport { property } from \"lit/decorators.js\";\r\n\r\nimport {\r\n HtmlFor,\r\n prefersReducedMotion,\r\n scrollIntoViewIfNeeded,\r\n forcedColorsActive,\r\n setCustomState,\r\n deleteCustomState,\r\n addCustomState,\r\n customElement,\r\n MutationController,\r\n} from \"@m3e/web/core\";\r\n\r\nimport { ListKeyManager, M3eLiveAnnouncer } from \"@m3e/web/core/a11y\";\r\nimport { M3eOptGroupElement, M3eOptionElement, M3eOptionPanelElement } from \"@m3e/web/option\";\r\nimport type { M3eFormFieldElement } from \"@m3e/web/form-field\";\r\n\r\nimport { AutocompleteFilterMode } from \"./AutocompleteFilterMode\";\r\nimport { AutocompleteQueryEventDetail } from \"./AutocompleteQueryEventDetail\";\r\n\r\n/**\r\n * Enhances a text input with suggested options.\r\n *\r\n * @description\r\n * The `m3e-autocomplete` component augments a text input field with a dynamically positioned menu of filterable suggestions,\r\n * following Material Design 3 principles. It provides real-time filtering, keyboard navigation, automatic option activation,\r\n * and text highlighting to guide user selection. The component manages focus, selection state, and menu visibility while\r\n * integrating seamlessly with form field containers and supporting both required and optional selection modes.\r\n *\r\n * @example\r\n * The following example illustrates use of the `m3e-autocomplete` paired with a `m3e-form-field`.\r\n * ```html\r\n * <m3e-form-field>\r\n * <label slot=\"label\" for=\"fruit\">Choose your favorite fruit</label>\r\n * <input id=\"fruit\" />\r\n * </m3e-form-field>\r\n * <m3e-autocomplete for=\"fruit\">\r\n * <m3e-option>Apples</m3e-option>\r\n * <m3e-option>Oranges</m3e-option>\r\n * <m3e-option>Bananas</m3e-option>\r\n * <m3e-option>Grapes</m3e-option>\r\n * </m3e-autocomplete>\r\n * ```\r\n *\r\n * @tag m3e-autocomplete\r\n *\r\n * @attr auto-activate - Whether the first option should be automatically activated.\r\n * @attr case-sensitive - Whether filtering is case sensitive.\r\n * @attr filter - Mode in which to filter options.\r\n * @attr hide-selection-indicator - Whether to hide the selection indicator.\r\n * @attr hide-loading - Whether to hide the menu when loading options.\r\n * @attr hide-no-data - Whether to hide the menu when there are no options to show.\r\n * @attr loading - Whether options are being loaded.\r\n * @attr loading-label - The text announced and presented when loading options.\r\n * @attr no-data-label - The text announced and presented when no options are available for the current term.\r\n * @attr panel-class - Class or list of classes to be applied to the autocomplete's overlay panel.\r\n * @attr required - Whether the user is required to make a selection when interacting with the autocomplete.\r\n * @attr results-label - The text announced when available options change for the current term.\r\n *\r\n * @slot - Renders the options of the autocomplete.\r\n * @slot loading - Renders content when loading options.\r\n * @slot no-data - Renders content when there are no options to show.\r\n *\r\n * @fires toggle - Dispatched when the options menu opens or closes.\r\n * @fires query - Dispatched when the input is focused or when the user modifies its value.\r\n * @fires change - Dispatched when the committed value changes due to selecting an option or clearing the input.\r\n */\r\n@customElement(\"m3e-autocomplete\")\r\nexport class M3eAutocompleteElement extends HtmlFor(LitElement) {\r\n /** The styles of the element. */\r\n static override styles: CSSResultGroup = css`\r\n :host {\r\n display: contents;\r\n }\r\n .options {\r\n display: none;\r\n }\r\n `;\r\n\r\n /** @private */ private static __nextId = 0;\r\n\r\n /** @private */ readonly #id = `m3e-autocomplete-${M3eAutocompleteElement.__nextId}`;\r\n /** @private */ readonly #menuId = `${this.#id}-menu`;\r\n /** @private */ private _options = new Array<M3eOptionElement>();\r\n /** @private */ #clone?: HTMLElement;\r\n /** @private */ #ignoreFocusVisible = false;\r\n /** @private */ #menu?: M3eOptionPanelElement;\r\n /** @private */ #ignoreHideMenuOnBlur = false;\r\n /** @private */ #inputChanged = false;\r\n /** @private */ #hasFocus = false;\r\n /** @private */ #mutationAbortController?: AbortController;\r\n\r\n /** @private */ readonly #clickHandler = () => this.#handleClick();\r\n /** @private */ readonly #formFieldPointerDownHandler = () => this.#handleFormFieldPointerDown();\r\n /** @private */ readonly #focusHandler = () => this.#handleFocus();\r\n /** @private */ readonly #blurHandler = () => this.#handleBlur();\r\n /** @private */ readonly #keyDownHandler = (e: KeyboardEvent) => this.#handleKeyDown(e);\r\n /** @private */ readonly #inputHandler = (e: Event) => this.#handleInput(e);\r\n /** @private */ readonly #changeHandler = () => this.#handleChange();\r\n /** @private */ readonly #menuToggleHandler = (e: ToggleEvent) => this.#handleMenuToggle(e);\r\n /** @private */ readonly #menuPointerDownHandler = (e: PointerEvent) => this.#handleMenuPointerDown(e);\r\n /** @private */ readonly #menuPointerUpHandler = (e: PointerEvent) => this.#handleMenuPointerUp(e);\r\n /** @private */ #menuPressedOption?: M3eOptionElement;\r\n\r\n /** @private */ private readonly _listKeyManager = new ListKeyManager<M3eOptionElement>()\r\n .withWrap()\r\n .withHomeAndEnd()\r\n .withPageUpAndDown()\r\n .withVerticalOrientation()\r\n .withSkipPredicate((item) => item.disabled || item.hidden === true)\r\n .onActiveItemChange(() => {\r\n if (this._listKeyManager.activeItem) {\r\n this.#activateOption(this._listKeyManager.activeItem);\r\n }\r\n });\r\n\r\n constructor() {\r\n super();\r\n\r\n new MutationController(this, {\r\n config: {\r\n childList: true,\r\n subtree: true,\r\n },\r\n callback: () => this.#handleMutation(),\r\n });\r\n }\r\n\r\n /**\r\n * Whether to hide the selection indicator.\r\n * @default false\r\n */\r\n @property({ attribute: \"hide-selection-indicator\", type: Boolean }) hideSelectionIndicator = false;\r\n\r\n /**\r\n * Whether the user is required to make a selection when interacting with the autocomplete.\r\n * @default false\r\n */\r\n @property({ type: Boolean, reflect: true }) required = false;\r\n\r\n /**\r\n * Whether the first option should be automatically activated.\r\n * @default false\r\n */\r\n @property({ attribute: \"auto-activate\", type: Boolean }) autoActivate = false;\r\n\r\n /**\r\n * Whether filtering is case sensitive.\r\n * @default false\r\n */\r\n @property({ attribute: \"case-sensitive\", type: Boolean }) caseSensitive = false;\r\n\r\n /**\r\n * Mode in which to filter options.\r\n * @default \"contains\"\r\n */\r\n @property({\r\n converter: {\r\n fromAttribute(value: string | null): AutocompleteFilterMode {\r\n if (value === null) return \"contains\";\r\n if (value === \"starts-with\" || value === \"ends-with\" || value === \"contains\" || value === \"none\") {\r\n return value;\r\n }\r\n return \"contains\";\r\n },\r\n },\r\n })\r\n filter: AutocompleteFilterMode | ((option: M3eOptionElement, term: string) => boolean) = \"contains\";\r\n\r\n /**\r\n * Whether options are being loaded.\r\n * @default false\r\n */\r\n @property({ type: Boolean }) loading = false;\r\n\r\n /**\r\n * Whether to hide the menu when there are no options to show.\r\n * @default false\r\n */\r\n @property({ attribute: \"hide-no-data\", type: Boolean }) hideNoData = false;\r\n\r\n /**\r\n * Whether to hide the menu when loading options.\r\n * @default false\r\n */\r\n @property({ attribute: \"hide-loading\", type: Boolean }) hideLoading = false;\r\n\r\n /**\r\n * The text announced and presented when loading options.\r\n * @default \"Loading...\"\r\n */\r\n @property({ attribute: \"loading-label\" }) loadingLabel = \"Loading...\";\r\n\r\n /**\r\n * The text announced and presented when no options are available for the current term.\r\n * @default \"No options\"\r\n */\r\n @property({ attribute: \"no-data-label\" }) noDataLabel = \"No options\";\r\n\r\n /**\r\n * The text announced when available options change for the current term.\r\n * @default (count) => `${count} options`\r\n */\r\n @property({ attribute: \"results-label\" }) resultsLabel: string | ((count: number) => string) = (count) =>\r\n `${count} options`;\r\n\r\n /**\r\n * Class or list of classes to be applied to the autocomplete's overlay panel.\r\n * @default \"\"\r\n */\r\n @property({ attribute: \"panel-class\" }) panelClass = \"\";\r\n\r\n /** The options that can be selected. */\r\n get options(): readonly M3eOptionElement[] {\r\n return this._options ?? [];\r\n }\r\n\r\n /** The selected option. */\r\n get selected(): M3eOptionElement | null {\r\n return this.options.find((x) => x.selected) ?? null;\r\n }\r\n\r\n /** The selected (enabled) value. */\r\n get value(): string | null {\r\n const selected = this.selected;\r\n return selected && !selected.disabled ? selected.value : null;\r\n }\r\n\r\n /** @private */\r\n get #options(): readonly M3eOptionElement[] {\r\n return this._listKeyManager?.items ?? [];\r\n }\r\n\r\n /** @private */\r\n get #input(): HTMLInputElement | null {\r\n return this.control ? <HTMLInputElement>this.control : null;\r\n }\r\n\r\n /** @private */\r\n get #hasNoDataSlot(): boolean {\r\n return (this.#clone?.querySelector(\"[slot='no-data']\") ?? null) !== null;\r\n }\r\n\r\n /** @private */\r\n get #hasLoadingSlot(): boolean {\r\n return (this.#clone?.querySelector(\"[slot='loading']\") ?? null) !== null;\r\n }\r\n\r\n /** @private */\r\n get #shouldShowMenu(): boolean {\r\n return (\r\n this.#options.some((x) => x.hidden === false) ||\r\n (this.loading && !this.hideLoading && this.loadingLabel.length > 0) ||\r\n (!this.loading && !this.hideNoData && this.noDataLabel.length > 0)\r\n );\r\n }\r\n\r\n /** @private */\r\n get #formField(): M3eFormFieldElement | null {\r\n return this.control?.closest(\"m3e-form-field\") ?? null;\r\n }\r\n\r\n /** @inheritdoc */\r\n override attach(control: HTMLElement): void {\r\n if (!(control instanceof HTMLInputElement)) return;\r\n\r\n super.attach(control);\r\n\r\n control.autocomplete = \"off\";\r\n control.role = \"combobox\";\r\n control.ariaAutoComplete = \"list\";\r\n control.ariaExpanded = \"false\";\r\n\r\n control.addEventListener(\"click\", this.#clickHandler);\r\n control.addEventListener(\"focus\", this.#focusHandler);\r\n control.addEventListener(\"blur\", this.#blurHandler);\r\n control.addEventListener(\"keydown\", this.#keyDownHandler);\r\n control.addEventListener(\"input\", this.#inputHandler);\r\n control.addEventListener(\"change\", this.#changeHandler);\r\n\r\n this.#formField?.addEventListener(\"pointerdown\", this.#formFieldPointerDownHandler);\r\n }\r\n\r\n /** @inheritdoc */\r\n override detach(): void {\r\n if (this.control) {\r\n this.#formField?.removeEventListener(\"pointerdown\", this.#formFieldPointerDownHandler);\r\n\r\n this.control.role = null;\r\n this.control.ariaAutoComplete = null;\r\n this.control.ariaExpanded = null;\r\n\r\n this.control.removeEventListener(\"click\", this.#clickHandler);\r\n this.control.removeEventListener(\"focus\", this.#focusHandler);\r\n this.control.removeEventListener(\"blur\", this.#blurHandler);\r\n this.control.removeEventListener(\"keydown\", this.#keyDownHandler);\r\n this.control.removeEventListener(\"input\", this.#inputHandler);\r\n this.control.removeEventListener(\"change\", this.#changeHandler);\r\n }\r\n super.detach();\r\n }\r\n\r\n /**\r\n * Clears the value of the element.\r\n * @param [restoreFocus=false] Whether to restore input focus.\r\n */\r\n clear(restoreFocus = false): void {\r\n if (!this.#input) return;\r\n\r\n this.#input.value = \"\";\r\n if (this.#clearOptions()) {\r\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\r\n }\r\n this.#filterOptions();\r\n\r\n if (restoreFocus) {\r\n this.#input.focus();\r\n } else {\r\n this.#hideMenu();\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n override connectedCallback(): void {\r\n super.connectedCallback();\r\n this.#handleMutation();\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override update(changedProperties: PropertyValues<this>): void {\r\n super.update(changedProperties);\r\n\r\n if (changedProperties.has(\"hideNoData\") && this.hideNoData && this.#menu) {\r\n setCustomState(this.#menu, \"--no-data\", false);\r\n }\r\n\r\n if (changedProperties.has(\"loading\")) {\r\n if (this.loading) {\r\n if (this.#hasFocus) {\r\n if (this.loadingLabel) {\r\n M3eLiveAnnouncer.announce(this.loadingLabel, \"polite\");\r\n }\r\n if (!this.#menu && this.#shouldShowMenu) {\r\n this.#showMenu();\r\n }\r\n }\r\n } else if (this.#menu && !this.#shouldShowMenu) {\r\n this.#hideMenu();\r\n } else if (this.#menu) {\r\n deleteCustomState(this.#menu, \"--loading\");\r\n } else if (this.#hasFocus) {\r\n this.#showMenu();\r\n }\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override render(): unknown {\r\n return html`<div class=\"options\" aria-hidden=\"true\">\r\n <slot></slot>\r\n </div>`;\r\n }\r\n\r\n /** @private */\r\n async #handleMutation(): Promise<void> {\r\n if (this.#mutationAbortController) {\r\n this.#mutationAbortController.abort();\r\n }\r\n const mutationAbortController = new AbortController();\r\n this.#mutationAbortController = mutationAbortController;\r\n\r\n const options = [...this.querySelectorAll(\"m3e-option\")];\r\n\r\n for (const option of options) {\r\n if (mutationAbortController.signal.aborted) {\r\n break;\r\n }\r\n if (option.isUpdatePending) {\r\n await option.updateComplete;\r\n }\r\n }\r\n\r\n if (mutationAbortController.signal.aborted) {\r\n return;\r\n }\r\n\r\n this._options = options;\r\n\r\n this.#clone = <HTMLElement>this.cloneNode(true);\r\n\r\n const { added } = this._listKeyManager.setItems([...this.#clone.querySelectorAll(\"m3e-option\")]);\r\n added.forEach((x) => {\r\n x.id = x.id || `${this.#id}-option-${this._listKeyManager.items.indexOf(x)}`;\r\n setCustomState(x, \"--hide-selection-indicator\", this.hideSelectionIndicator);\r\n });\r\n\r\n if (this.#menu) {\r\n const count = this.#filterOptions();\r\n this.#projectClone();\r\n if (!this.#shouldShowMenu) {\r\n this.#hideMenu();\r\n } else {\r\n this.#updateMenuState(this.#menu, count);\r\n }\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleClick(): void {\r\n this.#ignoreFocusVisible = true;\r\n this.#showMenu();\r\n }\r\n\r\n /** @private */\r\n #handleFormFieldPointerDown(): void {\r\n this.#ignoreHideMenuOnBlur = true;\r\n }\r\n\r\n /** @private */\r\n #handleFocus(): void {\r\n this.#hasFocus = true;\r\n this.#ignoreFocusVisible = true;\r\n\r\n if (this.options.length == 0 && !(<HTMLInputElement>this.control).readOnly) {\r\n this.dispatchEvent(\r\n new CustomEvent<AutocompleteQueryEventDetail>(\"query\", {\r\n detail: { term: this.#input?.value ?? \"\" },\r\n bubbles: true,\r\n composed: true,\r\n }),\r\n );\r\n }\r\n\r\n this.#showMenu();\r\n }\r\n\r\n /** @private */\r\n #handleBlur(): void {\r\n this.#hasFocus = false;\r\n if (!this.#ignoreHideMenuOnBlur) {\r\n this.#hideMenu();\r\n }\r\n this.#ignoreHideMenuOnBlur = false;\r\n }\r\n\r\n /** @private */\r\n #handleInput(e: Event): void {\r\n if (!this.#input || e.defaultPrevented) return;\r\n\r\n this.dispatchEvent(\r\n new CustomEvent<AutocompleteQueryEventDetail>(\"query\", {\r\n detail: { term: this.#input.value },\r\n bubbles: true,\r\n composed: true,\r\n }),\r\n );\r\n\r\n if (this.#input.value === \"\" && this.#clearOptions()) {\r\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\r\n }\r\n\r\n this.#inputChanged = true;\r\n try {\r\n if (!this.#menu) {\r\n this.#showMenu();\r\n } else {\r\n this.#filterOptions();\r\n if (!this.#shouldShowMenu) {\r\n this.#hideMenu();\r\n }\r\n }\r\n } finally {\r\n this.#inputChanged = false;\r\n this.#formField?.notifyControlStateChange(true);\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleChange(): void {\r\n if (this.#input) {\r\n const selected = this.selected;\r\n if (this.required) {\r\n this.#input.value = selected?.label ?? \"\";\r\n } else if (selected && selected.label !== this.#input.value && this.#clearOptions()) {\r\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\r\n }\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleKeyDown(e: KeyboardEvent): void {\r\n if (e.defaultPrevented) return;\r\n\r\n this.#ignoreFocusVisible = false;\r\n\r\n switch (e.key) {\r\n case \"Backspace\":\r\n case \"Delete\":\r\n if (this.#input && !this.#input.value) {\r\n this.#hideMenu();\r\n }\r\n break;\r\n\r\n case \"Enter\":\r\n if (this.#menu && this._listKeyManager.activeItem) {\r\n e.preventDefault();\r\n this.#selectOption(this._listKeyManager.activeItem);\r\n if (!prefersReducedMotion()) {\r\n setTimeout(() => this.#hideMenu(), 150);\r\n } else {\r\n this.#hideMenu();\r\n }\r\n } else if (this.#menu) {\r\n setTimeout(() => {\r\n if (this.#input && !this.#input.value) {\r\n this.#hideMenu();\r\n }\r\n });\r\n }\r\n break;\r\n\r\n case \"Escape\":\r\n case \"Tab\":\r\n this.#hideMenu();\r\n break;\r\n\r\n case \"Up\":\r\n case \"ArrowUp\":\r\n if (e.altKey) {\r\n this.#hideMenu();\r\n } else {\r\n this._listKeyManager.onKeyDown(e);\r\n }\r\n break;\r\n\r\n case \"Down\":\r\n case \"ArrowDown\":\r\n if (!this.#menu) {\r\n this.#showMenu();\r\n e.preventDefault();\r\n } else {\r\n this._listKeyManager.onKeyDown(e);\r\n }\r\n break;\r\n\r\n default:\r\n this._listKeyManager.onKeyDown(e);\r\n break;\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleMenuPointerDown(e: PointerEvent): void {\r\n this.#menuPressedOption = undefined;\r\n\r\n if (e.button === 2) return;\r\n // Prevent click to avoid stealing focus.\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n\r\n const option = <M3eOptionElement | undefined>(\r\n e.composedPath().find((x) => x instanceof HTMLElement && x.tagName === \"M3E-OPTION\")\r\n );\r\n\r\n if (option && !option.disabled) {\r\n this.#menuPressedOption = option;\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleMenuPointerUp(e: PointerEvent): void {\r\n const pressedOption = this.#menuPressedOption;\r\n this.#menuPressedOption = undefined;\r\n\r\n if (e.button === 2) return;\r\n\r\n if (!pressedOption) return;\r\n\r\n const option = <M3eOptionElement | undefined>(\r\n e.composedPath().find((x) => x instanceof HTMLElement && x.tagName === \"M3E-OPTION\")\r\n );\r\n\r\n if (option === pressedOption) {\r\n this._listKeyManager.setActiveItem(option);\r\n this.#selectOption(option);\r\n }\r\n\r\n if (!prefersReducedMotion()) {\r\n setTimeout(() => this.#hideMenu(), 150);\r\n } else {\r\n this.#hideMenu();\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleMenuToggle(e: ToggleEvent): void {\r\n if (!this.#menu) return;\r\n\r\n if (e.newState !== \"closed\") {\r\n const option = this.#options.find((x) => x.selected && !x.disabled);\r\n if (option) {\r\n this._listKeyManager.setActiveItem(option);\r\n scrollIntoViewIfNeeded(option, this.#menu);\r\n } else {\r\n this.#autoActivate();\r\n }\r\n\r\n this.dispatchEvent(\r\n new ToggleEvent(\"toggle\", {\r\n oldState: e.oldState,\r\n newState: e.newState,\r\n }),\r\n );\r\n } else {\r\n if (prefersReducedMotion()) {\r\n this.#destroyMenu(e);\r\n } else {\r\n // NOTE: use transitionend is preferred but doesn't fire when used here.\r\n // This is a workaround until that is fixed.\r\n setTimeout(() => this.#destroyMenu(e), 100);\r\n }\r\n }\r\n }\r\n\r\n /** @private*/\r\n #destroyMenu(e: ToggleEvent): void {\r\n if (!this.#menu) return;\r\n\r\n this.#clone?.replaceChildren(...this.#menu.childNodes);\r\n\r\n this.#menu.remove();\r\n this.#menu.removeEventListener(\"toggle\", this.#menuToggleHandler);\r\n this.#menu.removeEventListener(\"pointerdown\", this.#menuPointerDownHandler);\r\n this.#menu.removeEventListener(\"pointerup\", this.#menuPointerUpHandler);\r\n this.#menu = undefined;\r\n\r\n if (this.#input) {\r\n this.#input.ariaExpanded = \"false\";\r\n this.#input.removeAttribute(\"aria-controls\");\r\n this.#input.removeAttribute(\"aria-owns\");\r\n this.#input.removeAttribute(\"aria-activedescendant\");\r\n }\r\n this.requestUpdate();\r\n\r\n this.#formField?.notifyControlStateChange();\r\n\r\n this.dispatchEvent(\r\n new ToggleEvent(\"toggle\", {\r\n oldState: e.oldState,\r\n newState: e.newState,\r\n }),\r\n );\r\n\r\n if (this.#input?.slot === \"input\" && this.#input.parentElement?.tagName === \"M3E-INPUT-CHIP-SET\") {\r\n this.#clearOptions();\r\n }\r\n }\r\n\r\n /** @private */\r\n #showMenu(): void {\r\n if (this.#menu || !this.#input || this.#input.readOnly || this.#input.disabled) return;\r\n\r\n const count = this.#filterOptions();\r\n\r\n if (!this.#shouldShowMenu) return;\r\n\r\n this.#menu = document.createElement(\"m3e-option-panel\");\r\n this.#menu.id = this.#menuId;\r\n\r\n if (this.panelClass) {\r\n for (const klass of this.panelClass\r\n .split(/\\s+/)\r\n .map((d) => d.trim())\r\n .filter(Boolean)) {\r\n this.#menu.classList.add(klass);\r\n }\r\n }\r\n\r\n this.#menu.style.overflowX = \"hidden\";\r\n this.#menu.scrollStrategy = \"reposition\";\r\n this.#menu.fitAnchorWidth = true;\r\n this.#menu.addEventListener(\"toggle\", this.#menuToggleHandler);\r\n this.#menu.addEventListener(\"pointerdown\", this.#menuPointerDownHandler);\r\n this.#menu.addEventListener(\"pointerup\", this.#menuPointerUpHandler);\r\n\r\n this.#projectClone();\r\n\r\n this.#updateMenuState(this.#menu, count);\r\n\r\n (this.#formField ?? this.#input).insertAdjacentElement(\"afterend\", this.#menu);\r\n\r\n this.#input.setAttribute(\"aria-controls\", this.#menuId);\r\n this.#input.setAttribute(\"aria-owns\", this.#menuId);\r\n\r\n this.#formField?.notifyControlStateChange();\r\n\r\n if (this._listKeyManager.activeItem && this.autoActivate) {\r\n this.#activateOption(this._listKeyManager.activeItem, true);\r\n }\r\n\r\n const input = this.#input;\r\n setTimeout(() => this.#menu?.show(input, this.#formField?.menuAnchor));\r\n }\r\n\r\n /** @private */\r\n #projectClone(): void {\r\n if (!this.#clone || !this.#menu) return;\r\n const children = [...this.#clone.childNodes];\r\n if (!this.#hasNoDataSlot && this.noDataLabel) {\r\n const noDataSpan = document.createElement(\"span\");\r\n noDataSpan.slot = \"no-data\";\r\n noDataSpan.textContent = this.noDataLabel;\r\n children.push(noDataSpan);\r\n }\r\n if (!this.#hasLoadingSlot && this.loadingLabel) {\r\n const loadingSpan = document.createElement(\"span\");\r\n loadingSpan.slot = \"loading\";\r\n loadingSpan.textContent = this.loadingLabel;\r\n children.push(loadingSpan);\r\n }\r\n this.#menu.replaceChildren(...children);\r\n }\r\n\r\n /** @private */\r\n #updateMenuState(menu: M3eOptionPanelElement, count: number): void {\r\n setCustomState(menu, \"--loading\", this.loading);\r\n setCustomState(menu, \"--no-data\", count == 0);\r\n }\r\n\r\n /** @private */\r\n #hideMenu(): void {\r\n this.#menu?.hide();\r\n }\r\n\r\n /** @private */\r\n #activateOption(option: M3eOptionElement, forceFocusVisible = false): void {\r\n if (!this.#input) return;\r\n\r\n this.#input.setAttribute(\"aria-activedescendant\", option.id);\r\n\r\n if (this.#menu) {\r\n scrollIntoViewIfNeeded(option, this.#menu, { block: \"nearest\", behavior: \"instant\" });\r\n\r\n const focusVisible =\r\n forceFocusVisible ||\r\n (!this.#ignoreFocusVisible && (this.#input.matches(\":focus-visible\") || forcedColorsActive()));\r\n\r\n this.#options.forEach((x) => {\r\n const active = x === option && focusVisible;\r\n if (active) {\r\n x.focusRing?.show();\r\n x.stateLayer?.show(\"focused\");\r\n } else {\r\n x.focusRing?.hide();\r\n x.stateLayer?.hide(\"focused\");\r\n }\r\n });\r\n }\r\n }\r\n\r\n /** @private */\r\n async #updateSelectionState(clone: M3eOptionElement): Promise<void> {\r\n const option = this._options[this._listKeyManager.items.indexOf(clone)];\r\n if (option) {\r\n option.selected = clone.selected;\r\n if (option.isUpdatePending) {\r\n await option.updateComplete;\r\n }\r\n }\r\n }\r\n\r\n /** @private */\r\n async #selectOption(option: M3eOptionElement): Promise<void> {\r\n if (option.selected) return;\r\n\r\n option.selected = true;\r\n await this.#updateSelectionState(option);\r\n if (option.isUpdatePending) {\r\n await option.updateComplete;\r\n }\r\n\r\n this.requestUpdate();\r\n if (this.isUpdatePending) {\r\n await this.updateComplete;\r\n }\r\n\r\n if (this.#input) {\r\n this.#input.value = option.label;\r\n }\r\n\r\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\r\n\r\n this.#formField?.notifyControlStateChange(true);\r\n }\r\n\r\n /** @private */\r\n #filterOption(clone: M3eOptionElement, option: M3eOptionElement, term: string, exactTerm: string): boolean {\r\n const value = this.caseSensitive ? option.value : option.value.toLowerCase();\r\n switch (this.filter) {\r\n case \"starts-with\":\r\n clone.term = exactTerm;\r\n clone.highlightMode = this.filter;\r\n return value.startsWith(term);\r\n case \"ends-with\":\r\n clone.term = exactTerm;\r\n clone.highlightMode = this.filter;\r\n return value.endsWith(term);\r\n case \"contains\":\r\n clone.term = exactTerm;\r\n clone.highlightMode = this.filter;\r\n return value.includes(term);\r\n case \"none\":\r\n clone.disableHighlight = true;\r\n return true;\r\n default:\r\n clone.disableHighlight = true;\r\n return this.filter(option, exactTerm);\r\n }\r\n }\r\n\r\n /** @private */\r\n #filterOptions(): number {\r\n if (!this.#input) return 0;\r\n\r\n const oldCount = this.#options.filter((x) => x.hidden === false).length;\r\n const shouldAnnounce = !this.loading && this.#inputChanged;\r\n this.#inputChanged = false;\r\n\r\n const exactTerm = this.#input.value;\r\n const term = this.caseSensitive ? exactTerm : exactTerm.toLocaleLowerCase();\r\n\r\n let newCount = 0;\r\n let first = false;\r\n let last: M3eOptionElement | undefined;\r\n\r\n for (let i = 0; i < this.#options.length; i++) {\r\n const clone = this.#options[i];\r\n const option = this._options[i];\r\n clone.hidden = !this.#filterOption(clone, option, term, exactTerm);\r\n\r\n if (clone.hidden === true) {\r\n this.#deactivateOption(clone);\r\n deleteCustomState(clone, \"--first\");\r\n deleteCustomState(clone, \"--last\");\r\n } else {\r\n newCount++;\r\n if (!first && !(clone.parentElement instanceof M3eOptGroupElement)) {\r\n addCustomState(clone, \"--first\");\r\n first = true;\r\n addCustomState(clone, \"--last\");\r\n last = clone;\r\n } else {\r\n deleteCustomState(clone, \"--first\");\r\n if (last) {\r\n deleteCustomState(last, \"--last\");\r\n }\r\n addCustomState(clone, \"--last\");\r\n last = clone;\r\n }\r\n }\r\n }\r\n\r\n if (this.#menu) {\r\n this.#updateMenuState(this.#menu, newCount);\r\n }\r\n\r\n const groups = this.#menu?.querySelectorAll(\"m3e-optgroup\") ?? this.#clone?.querySelectorAll(\"m3e-optgroup\") ?? [];\r\n for (const group of groups) {\r\n group.hidden = [...group.querySelectorAll(\"m3e-option\")].every((x) => x.hidden === true);\r\n }\r\n\r\n if (shouldAnnounce) {\r\n this.#announceResults(oldCount, newCount);\r\n }\r\n\r\n this.#autoActivate();\r\n return newCount;\r\n }\r\n\r\n /** @private */\r\n #clearOptions(): boolean {\r\n const selected = this._listKeyManager.items.filter((x) => x.selected);\r\n if (selected.length > 0) {\r\n selected.forEach((x) => {\r\n x.selected = false;\r\n this.#updateSelectionState(x);\r\n });\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /** @private */\r\n #announceResults(oldCount: number, newCount: number): void {\r\n if (!this.#hasFocus) return;\r\n if (newCount == 0) {\r\n if (oldCount > 0 && this.noDataLabel) {\r\n M3eLiveAnnouncer.announce(this.noDataLabel, \"polite\");\r\n }\r\n } else if (oldCount != newCount) {\r\n const message = this.resultsLabel instanceof Function ? this.resultsLabel(newCount) : this.resultsLabel;\r\n if (message) {\r\n M3eLiveAnnouncer.announce(message, \"polite\");\r\n }\r\n }\r\n }\r\n\r\n /** @private */\r\n #autoActivate(): void {\r\n if (this.autoActivate && (!this._listKeyManager.activeItem || !this._listKeyManager.activeItem.selected)) {\r\n const option = this.#options.find((x) => !x.disabled && x.hidden === false);\r\n if (option) {\r\n this._listKeyManager.setActiveItem(option);\r\n if (this.#menu) {\r\n scrollIntoViewIfNeeded(option, this.#menu, { block: \"nearest\", behavior: \"instant\" });\r\n }\r\n }\r\n }\r\n }\r\n\r\n /** @private */\r\n #deactivateOption(option: M3eOptionElement): void {\r\n option.focusRing?.hide();\r\n option.stateLayer?.hide(\"focused\");\r\n if (option === this._listKeyManager.activeItem) {\r\n this._listKeyManager.updateActiveItem(null);\r\n this.#input?.removeAttribute(\"aria-activedescendant\");\r\n }\r\n }\r\n}\r\n\r\ninterface M3eAutocompleteElementEventMap extends HTMLElementEventMap {\r\n toggle: ToggleEvent;\r\n query: CustomEvent<AutocompleteQueryEventDetail>;\r\n}\r\n\r\nexport interface M3eAutocompleteElement {\r\n addEventListener<K extends keyof M3eAutocompleteElementEventMap>(\r\n type: K,\r\n listener: (this: M3eAutocompleteElement, ev: M3eAutocompleteElementEventMap[K]) => void,\r\n options?: boolean | AddEventListenerOptions,\r\n ): void;\r\n\r\n addEventListener(\r\n type: string,\r\n listener: EventListenerOrEventListenerObject,\r\n options?: boolean | AddEventListenerOptions,\r\n ): void;\r\n\r\n removeEventListener<K extends keyof M3eAutocompleteElementEventMap>(\r\n type: K,\r\n listener: (this: M3eAutocompleteElement, ev: M3eAutocompleteElementEventMap[K]) => void,\r\n options?: boolean | EventListenerOptions,\r\n ): void;\r\n\r\n removeEventListener(\r\n type: string,\r\n listener: EventListenerOrEventListenerObject,\r\n options?: boolean | EventListenerOptions,\r\n ): void;\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n \"m3e-autocomplete\": M3eAutocompleteElement;\r\n }\r\n}\r\n"],"names":["M3eAutocompleteElement","HtmlFor","LitElement","constructor","_M3eAutocompleteElement_id","set","M3eAutocompleteElement_1","__nextId","_M3eAutocompleteElement_menuId","__classPrivateFieldGet","_options","Array","_M3eAutocompleteElement_clone","_M3eAutocompleteElement_ignoreFocusVisible","_M3eAutocompleteElement_menu","_M3eAutocompleteElement_ignoreHideMenuOnBlur","_M3eAutocompleteElement_inputChanged","_M3eAutocompleteElement_hasFocus","_M3eAutocompleteElement_mutationAbortController","_M3eAutocompleteElement_clickHandler","_M3eAutocompleteElement_instances","_M3eAutocompleteElement_handleClick","call","_M3eAutocompleteElement_formFieldPointerDownHandler","_M3eAutocompleteElement_handleFormFieldPointerDown","_M3eAutocompleteElement_focusHandler","_M3eAutocompleteElement_handleFocus","_M3eAutocompleteElement_blurHandler","_M3eAutocompleteElement_handleBlur","_M3eAutocompleteElement_keyDownHandler","e","_M3eAutocompleteElement_inputHandler","_M3eAutocompleteElement_changeHandler","_M3eAutocompleteElement_handleChange","_M3eAutocompleteElement_menuToggleHandler","_M3eAutocompleteElement_menuPointerDownHandler","_M3eAutocompleteElement_menuPointerUpHandler","_M3eAutocompleteElement_menuPressedOption","_listKeyManager","ListKeyManager","withWrap","withHomeAndEnd","withPageUpAndDown","withVerticalOrientation","withSkipPredicate","item","disabled","hidden","onActiveItemChange","activeItem","_M3eAutocompleteElement_activateOption","hideSelectionIndicator","required","autoActivate","caseSensitive","filter","loading","hideNoData","hideLoading","loadingLabel","noDataLabel","resultsLabel","count","panelClass","MutationController","config","childList","subtree","callback","_M3eAutocompleteElement_handleMutation","options","selected","find","x","value","attach","control","HTMLInputElement","autocomplete","role","ariaAutoComplete","ariaExpanded","addEventListener","_M3eAutocompleteElement_formField_get","detach","removeEventListener","clear","restoreFocus","_M3eAutocompleteElement_input_get","_M3eAutocompleteElement_clearOptions","dispatchEvent","Event","bubbles","_M3eAutocompleteElement_filterOptions","focus","_M3eAutocompleteElement_hideMenu","connectedCallback","update","changedProperties","has","setCustomState","M3eLiveAnnouncer","announce","_M3eAutocompleteElement_shouldShowMenu_get","_M3eAutocompleteElement_showMenu","deleteCustomState","render","html","items","querySelector","_M3eAutocompleteElement_options_get","some","length","closest","abort","mutationAbortController","AbortController","__classPrivateFieldSet","querySelectorAll","option","signal","aborted","isUpdatePending","updateComplete","cloneNode","added","setItems","forEach","id","indexOf","_M3eAutocompleteElement_projectClone","_M3eAutocompleteElement_updateMenuState","readOnly","CustomEvent","detail","term","composed","defaultPrevented","notifyControlStateChange","label","key","preventDefault","_M3eAutocompleteElement_selectOption","prefersReducedMotion","setTimeout","altKey","onKeyDown","undefined","button","stopImmediatePropagation","composedPath","HTMLElement","tagName","pressedOption","setActiveItem","newState","scrollIntoViewIfNeeded","_M3eAutocompleteElement_autoActivate","ToggleEvent","oldState","_M3eAutocompleteElement_destroyMenu","replaceChildren","childNodes","remove","removeAttribute","requestUpdate","slot","parentElement","document","createElement","klass","split","map","d","trim","Boolean","classList","add","style","overflowX","scrollStrategy","fitAnchorWidth","insertAdjacentElement","setAttribute","input","show","menuAnchor","children","_M3eAutocompleteElement_hasNoDataSlot_get","noDataSpan","textContent","push","_M3eAutocompleteElement_hasLoadingSlot_get","loadingSpan","menu","hide","forceFocusVisible","block","behavior","focusVisible","matches","forcedColorsActive","active","focusRing","stateLayer","clone","_M3eAutocompleteElement_updateSelectionState","_M3eAutocompleteElement_filterOption","exactTerm","toLowerCase","highlightMode","startsWith","endsWith","includes","disableHighlight","oldCount","shouldAnnounce","toLocaleLowerCase","newCount","first","last","i","_M3eAutocompleteElement_deactivateOption","M3eOptGroupElement","addCustomState","groups","group","every","_M3eAutocompleteElement_announceResults","message","Function","updateActiveItem","styles","css","__decorate","property","attribute","type","prototype","reflect","converter","fromAttribute","customElement"],"mappings":"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"}
1
+ {"version":3,"file":"autocomplete.js","sources":["../../src/autocomplete/AutocompleteElement.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */\r\nimport { css, CSSResultGroup, html, LitElement, PropertyValues } from \"lit\";\r\nimport { property } from \"lit/decorators.js\";\r\n\r\nimport {\r\n HtmlFor,\r\n prefersReducedMotion,\r\n scrollIntoViewIfNeeded,\r\n forcedColorsActive,\r\n setCustomState,\r\n deleteCustomState,\r\n addCustomState,\r\n customElement,\r\n MutationController,\r\n} from \"@m3e/web/core\";\r\n\r\nimport { ListKeyManager, M3eLiveAnnouncer } from \"@m3e/web/core/a11y\";\r\nimport { M3eOptGroupElement, M3eOptionElement, M3eOptionPanelElement } from \"@m3e/web/option\";\r\nimport type { M3eFormFieldElement } from \"@m3e/web/form-field\";\r\n\r\nimport { AutocompleteFilterMode } from \"./AutocompleteFilterMode\";\r\nimport { AutocompleteQueryEventDetail } from \"./AutocompleteQueryEventDetail\";\r\n\r\n/**\r\n * Enhances a text input with suggested options.\r\n *\r\n * @description\r\n * The `m3e-autocomplete` component augments a text input field with a dynamically positioned menu of filterable suggestions,\r\n * following Material Design 3 principles. It provides real-time filtering, keyboard navigation, automatic option activation,\r\n * and text highlighting to guide user selection. The component manages focus, selection state, and menu visibility while\r\n * integrating seamlessly with form field containers and supporting both required and optional selection modes.\r\n *\r\n * @example\r\n * The following example illustrates use of the `m3e-autocomplete` paired with a `m3e-form-field`.\r\n * ```html\r\n * <m3e-form-field>\r\n * <label slot=\"label\" for=\"fruit\">Choose your favorite fruit</label>\r\n * <input id=\"fruit\" />\r\n * </m3e-form-field>\r\n * <m3e-autocomplete for=\"fruit\">\r\n * <m3e-option>Apples</m3e-option>\r\n * <m3e-option>Oranges</m3e-option>\r\n * <m3e-option>Bananas</m3e-option>\r\n * <m3e-option>Grapes</m3e-option>\r\n * </m3e-autocomplete>\r\n * ```\r\n *\r\n * @tag m3e-autocomplete\r\n *\r\n * @attr auto-activate - Whether the first option should be automatically activated.\r\n * @attr case-sensitive - Whether filtering is case sensitive.\r\n * @attr filter - Mode in which to filter options.\r\n * @attr hide-selection-indicator - Whether to hide the selection indicator.\r\n * @attr hide-loading - Whether to hide the menu when loading options.\r\n * @attr hide-no-data - Whether to hide the menu when there are no options to show.\r\n * @attr loading - Whether options are being loaded.\r\n * @attr loading-label - The text announced and presented when loading options.\r\n * @attr no-data-label - The text announced and presented when no options are available for the current term.\r\n * @attr panel-class - Class or list of classes to be applied to the autocomplete's overlay panel.\r\n * @attr required - Whether the user is required to make a selection when interacting with the autocomplete.\r\n * @attr results-label - The text announced when available options change for the current term.\r\n *\r\n * @slot - Renders the options of the autocomplete.\r\n * @slot loading - Renders content when loading options.\r\n * @slot no-data - Renders content when there are no options to show.\r\n *\r\n * @fires toggle - Dispatched when the options menu opens or closes.\r\n * @fires query - Dispatched when the input is focused or when the user modifies its value.\r\n * @fires change - Dispatched when the committed value changes due to selecting an option or clearing the input.\r\n */\r\n@customElement(\"m3e-autocomplete\")\r\nexport class M3eAutocompleteElement extends HtmlFor(LitElement) {\r\n /** The styles of the element. */\r\n static override styles: CSSResultGroup = css`\r\n :host {\r\n display: contents;\r\n }\r\n .options {\r\n display: none;\r\n }\r\n `;\r\n\r\n /** @private */ private static __nextId = 0;\r\n\r\n /** @private */ readonly #id = `m3e-autocomplete-${M3eAutocompleteElement.__nextId}`;\r\n /** @private */ readonly #menuId = `${this.#id}-menu`;\r\n /** @private */ private _options = new Array<M3eOptionElement>();\r\n /** @private */ #clone?: HTMLElement;\r\n /** @private */ #ignoreFocusVisible = false;\r\n /** @private */ #menu?: M3eOptionPanelElement;\r\n /** @private */ #ignoreHideMenuOnBlur = false;\r\n /** @private */ #inputChanged = false;\r\n /** @private */ #hasFocus = false;\r\n /** @private */ #mutationAbortController?: AbortController;\r\n\r\n /** @private */ readonly #clickHandler = () => this.#handleClick();\r\n /** @private */ readonly #formFieldPointerDownHandler = () => this.#handleFormFieldPointerDown();\r\n /** @private */ readonly #focusHandler = () => this.#handleFocus();\r\n /** @private */ readonly #blurHandler = () => this.#handleBlur();\r\n /** @private */ readonly #keyDownHandler = (e: KeyboardEvent) => this.#handleKeyDown(e);\r\n /** @private */ readonly #inputHandler = (e: Event) => this.#handleInput(e);\r\n /** @private */ readonly #changeHandler = () => this.#handleChange();\r\n /** @private */ readonly #menuToggleHandler = (e: ToggleEvent) => this.#handleMenuToggle(e);\r\n /** @private */ readonly #menuPointerDownHandler = (e: PointerEvent) => this.#handleMenuPointerDown(e);\r\n /** @private */ readonly #menuPointerUpHandler = (e: PointerEvent) => this.#handleMenuPointerUp(e);\r\n /** @private */ #menuPressedOption?: M3eOptionElement;\r\n\r\n /** @private */ private readonly _listKeyManager = new ListKeyManager<M3eOptionElement>()\r\n .withWrap()\r\n .withHomeAndEnd()\r\n .withPageUpAndDown()\r\n .withVerticalOrientation()\r\n .withSkipPredicate((item) => item.disabled || item.hidden === true)\r\n .onActiveItemChange(() => {\r\n if (this._listKeyManager.activeItem) {\r\n this.#activateOption(this._listKeyManager.activeItem);\r\n }\r\n });\r\n\r\n constructor() {\r\n super();\r\n\r\n new MutationController(this, {\r\n config: {\r\n childList: true,\r\n subtree: true,\r\n },\r\n callback: () => this.#handleMutation(),\r\n });\r\n }\r\n\r\n /**\r\n * Whether to hide the selection indicator.\r\n * @default false\r\n */\r\n @property({ attribute: \"hide-selection-indicator\", type: Boolean }) hideSelectionIndicator = false;\r\n\r\n /**\r\n * Whether the user is required to make a selection when interacting with the autocomplete.\r\n * @default false\r\n */\r\n @property({ type: Boolean, reflect: true }) required = false;\r\n\r\n /**\r\n * Whether the first option should be automatically activated.\r\n * @default false\r\n */\r\n @property({ attribute: \"auto-activate\", type: Boolean }) autoActivate = false;\r\n\r\n /**\r\n * Whether filtering is case sensitive.\r\n * @default false\r\n */\r\n @property({ attribute: \"case-sensitive\", type: Boolean }) caseSensitive = false;\r\n\r\n /**\r\n * Mode in which to filter options.\r\n * @default \"contains\"\r\n */\r\n @property({\r\n converter: {\r\n fromAttribute(value: string | null): AutocompleteFilterMode {\r\n if (value === null) return \"contains\";\r\n if (value === \"starts-with\" || value === \"ends-with\" || value === \"contains\" || value === \"none\") {\r\n return value;\r\n }\r\n return \"contains\";\r\n },\r\n },\r\n })\r\n filter: AutocompleteFilterMode | ((option: M3eOptionElement, term: string) => boolean) = \"contains\";\r\n\r\n /**\r\n * Whether options are being loaded.\r\n * @default false\r\n */\r\n @property({ type: Boolean }) loading = false;\r\n\r\n /**\r\n * Whether to hide the menu when there are no options to show.\r\n * @default false\r\n */\r\n @property({ attribute: \"hide-no-data\", type: Boolean }) hideNoData = false;\r\n\r\n /**\r\n * Whether to hide the menu when loading options.\r\n * @default false\r\n */\r\n @property({ attribute: \"hide-loading\", type: Boolean }) hideLoading = false;\r\n\r\n /**\r\n * The text announced and presented when loading options.\r\n * @default \"Loading...\"\r\n */\r\n @property({ attribute: \"loading-label\" }) loadingLabel = \"Loading...\";\r\n\r\n /**\r\n * The text announced and presented when no options are available for the current term.\r\n * @default \"No options\"\r\n */\r\n @property({ attribute: \"no-data-label\" }) noDataLabel = \"No options\";\r\n\r\n /**\r\n * The text announced when available options change for the current term.\r\n * @default (count) => `${count} options`\r\n */\r\n @property({ attribute: \"results-label\" }) resultsLabel: string | ((count: number) => string) = (count) =>\r\n `${count} options`;\r\n\r\n /**\r\n * Class or list of classes to be applied to the autocomplete's overlay panel.\r\n * @default \"\"\r\n */\r\n @property({ attribute: \"panel-class\" }) panelClass = \"\";\r\n\r\n /** The options that can be selected. */\r\n get options(): readonly M3eOptionElement[] {\r\n return this._options ?? [];\r\n }\r\n\r\n /** The selected option. */\r\n get selected(): M3eOptionElement | null {\r\n return this.options.find((x) => x.selected) ?? null;\r\n }\r\n\r\n /** The selected (enabled) value. */\r\n get value(): string | null {\r\n const selected = this.selected;\r\n return selected && !selected.disabled ? selected.value : null;\r\n }\r\n\r\n /** @private */\r\n get #options(): readonly M3eOptionElement[] {\r\n return this._listKeyManager?.items ?? [];\r\n }\r\n\r\n /** @private */\r\n get #input(): HTMLInputElement | null {\r\n return this.control ? <HTMLInputElement>this.control : null;\r\n }\r\n\r\n /** @private */\r\n get #hasNoDataSlot(): boolean {\r\n return (this.#clone?.querySelector(\"[slot='no-data']\") ?? null) !== null;\r\n }\r\n\r\n /** @private */\r\n get #hasLoadingSlot(): boolean {\r\n return (this.#clone?.querySelector(\"[slot='loading']\") ?? null) !== null;\r\n }\r\n\r\n /** @private */\r\n get #shouldShowMenu(): boolean {\r\n return (\r\n this.#options.some((x) => x.hidden === false) ||\r\n (this.loading && !this.hideLoading && this.loadingLabel.length > 0) ||\r\n (!this.loading && !this.hideNoData && this.noDataLabel.length > 0)\r\n );\r\n }\r\n\r\n /** @private */\r\n get #formField(): M3eFormFieldElement | null {\r\n return this.control?.closest(\"m3e-form-field\") ?? null;\r\n }\r\n\r\n /** @inheritdoc */\r\n override attach(control: HTMLElement): void {\r\n if (!(control instanceof HTMLInputElement)) return;\r\n\r\n super.attach(control);\r\n\r\n control.autocomplete = \"off\";\r\n control.role = \"combobox\";\r\n control.ariaAutoComplete = \"list\";\r\n control.ariaExpanded = \"false\";\r\n\r\n control.addEventListener(\"click\", this.#clickHandler);\r\n control.addEventListener(\"focus\", this.#focusHandler);\r\n control.addEventListener(\"blur\", this.#blurHandler);\r\n control.addEventListener(\"keydown\", this.#keyDownHandler);\r\n control.addEventListener(\"input\", this.#inputHandler);\r\n control.addEventListener(\"change\", this.#changeHandler);\r\n\r\n this.#formField?.addEventListener(\"pointerdown\", this.#formFieldPointerDownHandler);\r\n }\r\n\r\n /** @inheritdoc */\r\n override detach(): void {\r\n if (this.control) {\r\n this.#formField?.removeEventListener(\"pointerdown\", this.#formFieldPointerDownHandler);\r\n\r\n this.control.role = null;\r\n this.control.ariaAutoComplete = null;\r\n this.control.ariaExpanded = null;\r\n\r\n this.control.removeEventListener(\"click\", this.#clickHandler);\r\n this.control.removeEventListener(\"focus\", this.#focusHandler);\r\n this.control.removeEventListener(\"blur\", this.#blurHandler);\r\n this.control.removeEventListener(\"keydown\", this.#keyDownHandler);\r\n this.control.removeEventListener(\"input\", this.#inputHandler);\r\n this.control.removeEventListener(\"change\", this.#changeHandler);\r\n }\r\n super.detach();\r\n }\r\n\r\n /**\r\n * Clears the value of the element.\r\n * @param [restoreFocus=false] Whether to restore input focus.\r\n */\r\n clear(restoreFocus = false): void {\r\n if (!this.#input) return;\r\n\r\n this.#input.value = \"\";\r\n if (this.#clearOptions()) {\r\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\r\n }\r\n this.#filterOptions();\r\n\r\n if (restoreFocus) {\r\n this.#input.focus();\r\n } else {\r\n this.#hideMenu();\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n override connectedCallback(): void {\r\n super.connectedCallback();\r\n this.#handleMutation();\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override update(changedProperties: PropertyValues<this>): void {\r\n super.update(changedProperties);\r\n\r\n if (changedProperties.has(\"hideNoData\") && this.hideNoData && this.#menu) {\r\n setCustomState(this.#menu, \"--no-data\", false);\r\n }\r\n\r\n if (changedProperties.has(\"loading\")) {\r\n if (this.loading) {\r\n if (this.#hasFocus) {\r\n if (this.loadingLabel) {\r\n M3eLiveAnnouncer.announce(this.loadingLabel, \"polite\");\r\n }\r\n if (!this.#menu && this.#shouldShowMenu) {\r\n this.#showMenu();\r\n }\r\n }\r\n } else if (this.#menu && !this.#shouldShowMenu) {\r\n this.#hideMenu();\r\n } else if (this.#menu) {\r\n deleteCustomState(this.#menu, \"--loading\");\r\n } else if (this.#hasFocus) {\r\n this.#showMenu();\r\n }\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override render(): unknown {\r\n return html`<div class=\"options\" aria-hidden=\"true\" @state-change=\"${this.#handleOptionStateChange}\">\r\n <slot></slot>\r\n </div>`;\r\n }\r\n\r\n /** @private */\r\n #handleOptionStateChange(e: Event): void {\r\n if (!(e.target instanceof M3eOptionElement)) return;\r\n e.stopImmediatePropagation();\r\n\r\n const index = this.options.indexOf(e.target);\r\n if (index == -1) return;\r\n\r\n const clone = this.#options[index];\r\n if (!clone) return;\r\n\r\n clone.disabled = e.target.disabled;\r\n clone.selected = e.target.selected;\r\n }\r\n\r\n /** @private */\r\n async #handleMutation(): Promise<void> {\r\n if (this.#mutationAbortController) {\r\n this.#mutationAbortController.abort();\r\n }\r\n const mutationAbortController = new AbortController();\r\n this.#mutationAbortController = mutationAbortController;\r\n\r\n const options = [...this.querySelectorAll(\"m3e-option\")];\r\n\r\n for (const option of options) {\r\n if (mutationAbortController.signal.aborted) {\r\n break;\r\n }\r\n if (option.isUpdatePending) {\r\n await option.updateComplete;\r\n }\r\n }\r\n\r\n if (mutationAbortController.signal.aborted) {\r\n return;\r\n }\r\n\r\n this._options = options;\r\n\r\n this.#clone = <HTMLElement>this.cloneNode(true);\r\n\r\n const { added } = this._listKeyManager.setItems([...this.#clone.querySelectorAll(\"m3e-option\")]);\r\n added.forEach((x) => {\r\n x.id = x.id || `${this.#id}-option-${this._listKeyManager.items.indexOf(x)}`;\r\n setCustomState(x, \"--hide-selection-indicator\", this.hideSelectionIndicator);\r\n });\r\n\r\n if (this.#menu) {\r\n const count = this.#filterOptions();\r\n this.#projectClone();\r\n if (!this.#shouldShowMenu) {\r\n this.#hideMenu();\r\n } else {\r\n this.#updateMenuState(this.#menu, count);\r\n }\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleClick(): void {\r\n this.#ignoreFocusVisible = true;\r\n this.#showMenu();\r\n }\r\n\r\n /** @private */\r\n #handleFormFieldPointerDown(): void {\r\n this.#ignoreHideMenuOnBlur = true;\r\n }\r\n\r\n /** @private */\r\n #handleFocus(): void {\r\n this.#hasFocus = true;\r\n this.#ignoreFocusVisible = true;\r\n\r\n if (this.options.length == 0 && !(<HTMLInputElement>this.control).readOnly) {\r\n this.dispatchEvent(\r\n new CustomEvent<AutocompleteQueryEventDetail>(\"query\", {\r\n detail: { term: this.#input?.value ?? \"\" },\r\n bubbles: true,\r\n composed: true,\r\n }),\r\n );\r\n }\r\n\r\n this.#showMenu();\r\n }\r\n\r\n /** @private */\r\n #handleBlur(): void {\r\n this.#hasFocus = false;\r\n if (!this.#ignoreHideMenuOnBlur) {\r\n this.#hideMenu();\r\n }\r\n this.#ignoreHideMenuOnBlur = false;\r\n }\r\n\r\n /** @private */\r\n #handleInput(e: Event): void {\r\n if (!this.#input || e.defaultPrevented) return;\r\n\r\n this.dispatchEvent(\r\n new CustomEvent<AutocompleteQueryEventDetail>(\"query\", {\r\n detail: { term: this.#input.value },\r\n bubbles: true,\r\n composed: true,\r\n }),\r\n );\r\n\r\n if (this.#input.value === \"\" && this.#clearOptions()) {\r\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\r\n }\r\n\r\n this.#inputChanged = true;\r\n try {\r\n if (!this.#menu) {\r\n this.#showMenu();\r\n } else {\r\n this.#filterOptions();\r\n if (!this.#shouldShowMenu) {\r\n this.#hideMenu();\r\n }\r\n }\r\n } finally {\r\n this.#inputChanged = false;\r\n this.#formField?.notifyControlStateChange(true);\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleChange(): void {\r\n if (this.#input) {\r\n const selected = this.selected;\r\n if (this.required) {\r\n this.#input.value = selected?.label ?? \"\";\r\n } else if (selected && selected.label !== this.#input.value && this.#clearOptions()) {\r\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\r\n }\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleKeyDown(e: KeyboardEvent): void {\r\n if (e.defaultPrevented) return;\r\n\r\n this.#ignoreFocusVisible = false;\r\n\r\n switch (e.key) {\r\n case \"Backspace\":\r\n case \"Delete\":\r\n if (this.#input && !this.#input.value) {\r\n this.#hideMenu();\r\n }\r\n break;\r\n\r\n case \"Enter\":\r\n if (this.#menu && this._listKeyManager.activeItem) {\r\n e.preventDefault();\r\n this.#selectOption(this._listKeyManager.activeItem);\r\n if (!prefersReducedMotion()) {\r\n setTimeout(() => this.#hideMenu(), 150);\r\n } else {\r\n this.#hideMenu();\r\n }\r\n } else if (this.#menu) {\r\n setTimeout(() => {\r\n if (this.#input && !this.#input.value) {\r\n this.#hideMenu();\r\n }\r\n });\r\n }\r\n break;\r\n\r\n case \"Escape\":\r\n case \"Tab\":\r\n this.#hideMenu();\r\n break;\r\n\r\n case \"Up\":\r\n case \"ArrowUp\":\r\n if (e.altKey) {\r\n this.#hideMenu();\r\n } else {\r\n this._listKeyManager.onKeyDown(e);\r\n }\r\n break;\r\n\r\n case \"Down\":\r\n case \"ArrowDown\":\r\n if (!this.#menu) {\r\n this.#showMenu();\r\n e.preventDefault();\r\n } else {\r\n this._listKeyManager.onKeyDown(e);\r\n }\r\n break;\r\n\r\n default:\r\n this._listKeyManager.onKeyDown(e);\r\n break;\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleMenuPointerDown(e: PointerEvent): void {\r\n this.#menuPressedOption = undefined;\r\n\r\n if (e.button === 2) return;\r\n // Prevent click to avoid stealing focus.\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n\r\n const option = <M3eOptionElement | undefined>(\r\n e.composedPath().find((x) => x instanceof HTMLElement && x.tagName === \"M3E-OPTION\")\r\n );\r\n\r\n if (option && !option.disabled) {\r\n this.#menuPressedOption = option;\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleMenuPointerUp(e: PointerEvent): void {\r\n const pressedOption = this.#menuPressedOption;\r\n this.#menuPressedOption = undefined;\r\n\r\n if (e.button === 2) return;\r\n\r\n if (!pressedOption) return;\r\n\r\n const option = <M3eOptionElement | undefined>(\r\n e.composedPath().find((x) => x instanceof HTMLElement && x.tagName === \"M3E-OPTION\")\r\n );\r\n\r\n if (option === pressedOption) {\r\n this._listKeyManager.setActiveItem(option);\r\n this.#selectOption(option);\r\n }\r\n\r\n if (!prefersReducedMotion()) {\r\n setTimeout(() => this.#hideMenu(), 150);\r\n } else {\r\n this.#hideMenu();\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleMenuToggle(e: ToggleEvent): void {\r\n if (!this.#menu) return;\r\n\r\n if (e.newState !== \"closed\") {\r\n const option = this.#options.find((x) => x.selected && !x.disabled);\r\n if (option) {\r\n this._listKeyManager.setActiveItem(option);\r\n scrollIntoViewIfNeeded(option, this.#menu);\r\n } else {\r\n this.#autoActivate();\r\n }\r\n\r\n this.dispatchEvent(\r\n new ToggleEvent(\"toggle\", {\r\n oldState: e.oldState,\r\n newState: e.newState,\r\n }),\r\n );\r\n } else {\r\n if (prefersReducedMotion()) {\r\n this.#destroyMenu(e);\r\n } else {\r\n // NOTE: use transitionend is preferred but doesn't fire when used here.\r\n // This is a workaround until that is fixed.\r\n setTimeout(() => this.#destroyMenu(e), 100);\r\n }\r\n }\r\n }\r\n\r\n /** @private*/\r\n #destroyMenu(e: ToggleEvent): void {\r\n if (!this.#menu) return;\r\n\r\n this.#clone?.replaceChildren(...this.#menu.childNodes);\r\n\r\n this.#menu.remove();\r\n this.#menu.removeEventListener(\"toggle\", this.#menuToggleHandler);\r\n this.#menu.removeEventListener(\"pointerdown\", this.#menuPointerDownHandler);\r\n this.#menu.removeEventListener(\"pointerup\", this.#menuPointerUpHandler);\r\n this.#menu = undefined;\r\n\r\n if (this.#input) {\r\n this.#input.ariaExpanded = \"false\";\r\n this.#input.removeAttribute(\"aria-controls\");\r\n this.#input.removeAttribute(\"aria-owns\");\r\n this.#input.removeAttribute(\"aria-activedescendant\");\r\n }\r\n this.requestUpdate();\r\n\r\n this.#formField?.notifyControlStateChange();\r\n\r\n this.dispatchEvent(\r\n new ToggleEvent(\"toggle\", {\r\n oldState: e.oldState,\r\n newState: e.newState,\r\n }),\r\n );\r\n\r\n if (this.#input?.slot === \"input\" && this.#input.parentElement?.tagName === \"M3E-INPUT-CHIP-SET\") {\r\n this.#clearOptions();\r\n }\r\n }\r\n\r\n /** @private */\r\n #showMenu(): void {\r\n if (this.#menu || !this.#input || this.#input.readOnly || this.#input.disabled) return;\r\n\r\n const count = this.#filterOptions();\r\n\r\n if (!this.#shouldShowMenu) return;\r\n\r\n this.#menu = document.createElement(\"m3e-option-panel\");\r\n this.#menu.id = this.#menuId;\r\n\r\n if (this.panelClass) {\r\n for (const klass of this.panelClass\r\n .split(/\\s+/)\r\n .map((d) => d.trim())\r\n .filter(Boolean)) {\r\n this.#menu.classList.add(klass);\r\n }\r\n }\r\n\r\n this.#menu.style.overflowX = \"hidden\";\r\n this.#menu.scrollStrategy = \"reposition\";\r\n this.#menu.fitAnchorWidth = true;\r\n this.#menu.addEventListener(\"toggle\", this.#menuToggleHandler);\r\n this.#menu.addEventListener(\"pointerdown\", this.#menuPointerDownHandler);\r\n this.#menu.addEventListener(\"pointerup\", this.#menuPointerUpHandler);\r\n\r\n this.#projectClone();\r\n\r\n this.#updateMenuState(this.#menu, count);\r\n\r\n (this.#formField ?? this.#input).insertAdjacentElement(\"afterend\", this.#menu);\r\n\r\n this.#input.setAttribute(\"aria-controls\", this.#menuId);\r\n this.#input.setAttribute(\"aria-owns\", this.#menuId);\r\n\r\n this.#formField?.notifyControlStateChange();\r\n\r\n if (this._listKeyManager.activeItem && this.autoActivate) {\r\n this.#activateOption(this._listKeyManager.activeItem, true);\r\n }\r\n\r\n const input = this.#input;\r\n setTimeout(() => this.#menu?.show(input, this.#formField?.menuAnchor));\r\n }\r\n\r\n /** @private */\r\n #projectClone(): void {\r\n if (!this.#clone || !this.#menu) return;\r\n const children = [...this.#clone.childNodes];\r\n if (!this.#hasNoDataSlot && this.noDataLabel) {\r\n const noDataSpan = document.createElement(\"span\");\r\n noDataSpan.slot = \"no-data\";\r\n noDataSpan.translate = false;\r\n\r\n const text = document.createElement(\"span\");\r\n text.translate = true;\r\n text.textContent = this.noDataLabel;\r\n noDataSpan.append(text);\r\n\r\n children.push(noDataSpan);\r\n }\r\n if (!this.#hasLoadingSlot && this.loadingLabel) {\r\n const loadingSpan = document.createElement(\"span\");\r\n loadingSpan.slot = \"loading\";\r\n loadingSpan.translate = false;\r\n\r\n const text = document.createElement(\"span\");\r\n text.translate = true;\r\n text.textContent = this.loadingLabel;\r\n loadingSpan.append(text);\r\n\r\n children.push(loadingSpan);\r\n }\r\n this.#menu.replaceChildren(...children);\r\n }\r\n\r\n /** @private */\r\n #updateMenuState(menu: M3eOptionPanelElement, count: number): void {\r\n setCustomState(menu, \"--loading\", this.loading);\r\n setCustomState(menu, \"--no-data\", count == 0);\r\n }\r\n\r\n /** @private */\r\n #hideMenu(): void {\r\n this.#menu?.hide();\r\n }\r\n\r\n /** @private */\r\n #activateOption(option: M3eOptionElement, forceFocusVisible = false): void {\r\n if (!this.#input) return;\r\n\r\n this.#input.setAttribute(\"aria-activedescendant\", option.id);\r\n\r\n if (this.#menu) {\r\n scrollIntoViewIfNeeded(option, this.#menu, { block: \"nearest\", behavior: \"instant\" });\r\n\r\n const focusVisible =\r\n forceFocusVisible ||\r\n (!this.#ignoreFocusVisible && (this.#input.matches(\":focus-visible\") || forcedColorsActive()));\r\n\r\n this.#options.forEach((x) => {\r\n const active = x === option && focusVisible;\r\n if (active) {\r\n x.focusRing?.show();\r\n x.stateLayer?.show(\"focused\");\r\n } else {\r\n x.focusRing?.hide();\r\n x.stateLayer?.hide(\"focused\");\r\n }\r\n });\r\n }\r\n }\r\n\r\n /** @private */\r\n async #updateSelectionState(clone: M3eOptionElement): Promise<void> {\r\n const option = this._options[this._listKeyManager.items.indexOf(clone)];\r\n if (option) {\r\n option.selected = clone.selected;\r\n if (option.isUpdatePending) {\r\n await option.updateComplete;\r\n }\r\n }\r\n }\r\n\r\n /** @private */\r\n async #selectOption(option: M3eOptionElement): Promise<void> {\r\n if (option.selected) return;\r\n\r\n option.selected = true;\r\n await this.#updateSelectionState(option);\r\n if (option.isUpdatePending) {\r\n await option.updateComplete;\r\n }\r\n\r\n this.requestUpdate();\r\n if (this.isUpdatePending) {\r\n await this.updateComplete;\r\n }\r\n\r\n if (this.#input) {\r\n this.#input.value = option.label;\r\n }\r\n\r\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\r\n\r\n this.#formField?.notifyControlStateChange(true);\r\n }\r\n\r\n /** @private */\r\n #filterOption(clone: M3eOptionElement, option: M3eOptionElement, term: string, exactTerm: string): boolean {\r\n const value = this.caseSensitive ? option.value : option.value.toLowerCase();\r\n switch (this.filter) {\r\n case \"starts-with\":\r\n clone.term = exactTerm;\r\n clone.highlightMode = this.filter;\r\n return value.startsWith(term);\r\n case \"ends-with\":\r\n clone.term = exactTerm;\r\n clone.highlightMode = this.filter;\r\n return value.endsWith(term);\r\n case \"contains\":\r\n clone.term = exactTerm;\r\n clone.highlightMode = this.filter;\r\n return value.includes(term);\r\n case \"none\":\r\n clone.disableHighlight = true;\r\n return true;\r\n default:\r\n clone.disableHighlight = true;\r\n return this.filter(option, exactTerm);\r\n }\r\n }\r\n\r\n /** @private */\r\n #filterOptions(): number {\r\n if (!this.#input) return 0;\r\n\r\n const oldCount = this.#options.filter((x) => x.hidden === false).length;\r\n const shouldAnnounce = !this.loading && this.#inputChanged;\r\n this.#inputChanged = false;\r\n\r\n const exactTerm = this.#input.value;\r\n const term = this.caseSensitive ? exactTerm : exactTerm.toLocaleLowerCase();\r\n\r\n let newCount = 0;\r\n let first = false;\r\n let last: M3eOptionElement | undefined;\r\n\r\n for (let i = 0; i < this.#options.length; i++) {\r\n const clone = this.#options[i];\r\n const option = this._options[i];\r\n clone.hidden = !this.#filterOption(clone, option, term, exactTerm);\r\n\r\n if (clone.hidden === true) {\r\n this.#deactivateOption(clone);\r\n deleteCustomState(clone, \"--first\");\r\n deleteCustomState(clone, \"--last\");\r\n } else {\r\n newCount++;\r\n if (!first && !(clone.parentElement instanceof M3eOptGroupElement)) {\r\n addCustomState(clone, \"--first\");\r\n first = true;\r\n addCustomState(clone, \"--last\");\r\n last = clone;\r\n } else {\r\n deleteCustomState(clone, \"--first\");\r\n if (last) {\r\n deleteCustomState(last, \"--last\");\r\n }\r\n addCustomState(clone, \"--last\");\r\n last = clone;\r\n }\r\n }\r\n }\r\n\r\n if (this.#menu) {\r\n this.#updateMenuState(this.#menu, newCount);\r\n }\r\n\r\n const groups = this.#menu?.querySelectorAll(\"m3e-optgroup\") ?? this.#clone?.querySelectorAll(\"m3e-optgroup\") ?? [];\r\n for (const group of groups) {\r\n group.hidden = [...group.querySelectorAll(\"m3e-option\")].every((x) => x.hidden === true);\r\n }\r\n\r\n if (shouldAnnounce) {\r\n this.#announceResults(oldCount, newCount);\r\n }\r\n\r\n this.#autoActivate();\r\n return newCount;\r\n }\r\n\r\n /** @private */\r\n #clearOptions(): boolean {\r\n const selected = this._listKeyManager.items.filter((x) => x.selected);\r\n if (selected.length > 0) {\r\n selected.forEach((x) => {\r\n x.selected = false;\r\n this.#updateSelectionState(x);\r\n });\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /** @private */\r\n #announceResults(oldCount: number, newCount: number): void {\r\n if (!this.#hasFocus) return;\r\n if (newCount == 0) {\r\n if (oldCount > 0 && this.noDataLabel) {\r\n M3eLiveAnnouncer.announce(this.noDataLabel, \"polite\");\r\n }\r\n } else if (oldCount != newCount) {\r\n const message = this.resultsLabel instanceof Function ? this.resultsLabel(newCount) : this.resultsLabel;\r\n if (message) {\r\n M3eLiveAnnouncer.announce(message, \"polite\");\r\n }\r\n }\r\n }\r\n\r\n /** @private */\r\n #autoActivate(): void {\r\n if (this.autoActivate && (!this._listKeyManager.activeItem || !this._listKeyManager.activeItem.selected)) {\r\n const option = this.#options.find((x) => !x.disabled && x.hidden === false);\r\n if (option) {\r\n this._listKeyManager.setActiveItem(option);\r\n if (this.#menu) {\r\n scrollIntoViewIfNeeded(option, this.#menu, { block: \"nearest\", behavior: \"instant\" });\r\n }\r\n }\r\n }\r\n }\r\n\r\n /** @private */\r\n #deactivateOption(option: M3eOptionElement): void {\r\n option.focusRing?.hide();\r\n option.stateLayer?.hide(\"focused\");\r\n if (option === this._listKeyManager.activeItem) {\r\n this._listKeyManager.updateActiveItem(null);\r\n this.#input?.removeAttribute(\"aria-activedescendant\");\r\n }\r\n }\r\n}\r\n\r\ninterface M3eAutocompleteElementEventMap extends HTMLElementEventMap {\r\n toggle: ToggleEvent;\r\n query: CustomEvent<AutocompleteQueryEventDetail>;\r\n}\r\n\r\nexport interface M3eAutocompleteElement {\r\n addEventListener<K extends keyof M3eAutocompleteElementEventMap>(\r\n type: K,\r\n listener: (this: M3eAutocompleteElement, ev: M3eAutocompleteElementEventMap[K]) => void,\r\n options?: boolean | AddEventListenerOptions,\r\n ): void;\r\n\r\n addEventListener(\r\n type: string,\r\n listener: EventListenerOrEventListenerObject,\r\n options?: boolean | AddEventListenerOptions,\r\n ): void;\r\n\r\n removeEventListener<K extends keyof M3eAutocompleteElementEventMap>(\r\n type: K,\r\n listener: (this: M3eAutocompleteElement, ev: M3eAutocompleteElementEventMap[K]) => void,\r\n options?: boolean | EventListenerOptions,\r\n ): void;\r\n\r\n removeEventListener(\r\n type: string,\r\n listener: EventListenerOrEventListenerObject,\r\n options?: boolean | EventListenerOptions,\r\n ): void;\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n \"m3e-autocomplete\": M3eAutocompleteElement;\r\n }\r\n}\r\n"],"names":["M3eAutocompleteElement","HtmlFor","LitElement","constructor","_M3eAutocompleteElement_id","set","M3eAutocompleteElement_1","__nextId","_M3eAutocompleteElement_menuId","__classPrivateFieldGet","_options","Array","_M3eAutocompleteElement_clone","_M3eAutocompleteElement_ignoreFocusVisible","_M3eAutocompleteElement_menu","_M3eAutocompleteElement_ignoreHideMenuOnBlur","_M3eAutocompleteElement_inputChanged","_M3eAutocompleteElement_hasFocus","_M3eAutocompleteElement_mutationAbortController","_M3eAutocompleteElement_clickHandler","_M3eAutocompleteElement_instances","_M3eAutocompleteElement_handleClick","call","_M3eAutocompleteElement_formFieldPointerDownHandler","_M3eAutocompleteElement_handleFormFieldPointerDown","_M3eAutocompleteElement_focusHandler","_M3eAutocompleteElement_handleFocus","_M3eAutocompleteElement_blurHandler","_M3eAutocompleteElement_handleBlur","_M3eAutocompleteElement_keyDownHandler","e","_M3eAutocompleteElement_inputHandler","_M3eAutocompleteElement_changeHandler","_M3eAutocompleteElement_handleChange","_M3eAutocompleteElement_menuToggleHandler","_M3eAutocompleteElement_menuPointerDownHandler","_M3eAutocompleteElement_menuPointerUpHandler","_M3eAutocompleteElement_menuPressedOption","_listKeyManager","ListKeyManager","withWrap","withHomeAndEnd","withPageUpAndDown","withVerticalOrientation","withSkipPredicate","item","disabled","hidden","onActiveItemChange","activeItem","_M3eAutocompleteElement_activateOption","hideSelectionIndicator","required","autoActivate","caseSensitive","filter","loading","hideNoData","hideLoading","loadingLabel","noDataLabel","resultsLabel","count","panelClass","MutationController","config","childList","subtree","callback","_M3eAutocompleteElement_handleMutation","options","selected","find","x","value","attach","control","HTMLInputElement","autocomplete","role","ariaAutoComplete","ariaExpanded","addEventListener","_M3eAutocompleteElement_formField_get","detach","removeEventListener","clear","restoreFocus","_M3eAutocompleteElement_input_get","_M3eAutocompleteElement_clearOptions","dispatchEvent","Event","bubbles","_M3eAutocompleteElement_filterOptions","focus","_M3eAutocompleteElement_hideMenu","connectedCallback","update","changedProperties","has","setCustomState","M3eLiveAnnouncer","announce","_M3eAutocompleteElement_shouldShowMenu_get","_M3eAutocompleteElement_showMenu","deleteCustomState","render","html","_M3eAutocompleteElement_handleOptionStateChange","items","querySelector","_M3eAutocompleteElement_options_get","some","length","closest","target","M3eOptionElement","stopImmediatePropagation","index","indexOf","clone","abort","mutationAbortController","AbortController","__classPrivateFieldSet","querySelectorAll","option","signal","aborted","isUpdatePending","updateComplete","cloneNode","added","setItems","forEach","id","_M3eAutocompleteElement_projectClone","_M3eAutocompleteElement_updateMenuState","readOnly","CustomEvent","detail","term","composed","defaultPrevented","notifyControlStateChange","label","key","preventDefault","_M3eAutocompleteElement_selectOption","prefersReducedMotion","setTimeout","altKey","onKeyDown","undefined","button","composedPath","HTMLElement","tagName","pressedOption","setActiveItem","newState","scrollIntoViewIfNeeded","_M3eAutocompleteElement_autoActivate","ToggleEvent","oldState","_M3eAutocompleteElement_destroyMenu","replaceChildren","childNodes","remove","removeAttribute","requestUpdate","slot","parentElement","document","createElement","klass","split","map","d","trim","Boolean","classList","add","style","overflowX","scrollStrategy","fitAnchorWidth","insertAdjacentElement","setAttribute","input","show","menuAnchor","children","_M3eAutocompleteElement_hasNoDataSlot_get","noDataSpan","translate","text","textContent","append","push","_M3eAutocompleteElement_hasLoadingSlot_get","loadingSpan","menu","hide","forceFocusVisible","block","behavior","focusVisible","matches","forcedColorsActive","active","focusRing","stateLayer","_M3eAutocompleteElement_updateSelectionState","_M3eAutocompleteElement_filterOption","exactTerm","toLowerCase","highlightMode","startsWith","endsWith","includes","disableHighlight","oldCount","shouldAnnounce","toLocaleLowerCase","newCount","first","last","i","_M3eAutocompleteElement_deactivateOption","M3eOptGroupElement","addCustomState","groups","group","every","_M3eAutocompleteElement_announceResults","message","Function","updateActiveItem","styles","css","__decorate","property","attribute","type","prototype","reflect","converter","fromAttribute","customElement"],"mappings":";;;;;;;;;;;;;;AAuBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8CG;AAEI,IAAMA,sBAAsB,8BAA5B,MAAMA,sBAAuB,SAAQC,OAAO,CAACC,UAAU,CAAC,CAAA;AAgD7DC,EAAAA,WAAAA,GAAA;AACE,IAAA,KAAK,EAAE;;AApCT;IAAyBC,0BAAA,CAAAC,GAAA,CAAA,IAAA,EAAM,oBAAoBC,wBAAsB,CAACC,QAAQ,CAAA,CAAE,CAAA;AACpF;AAAyBC,IAAAA,8BAAA,CAAAH,GAAA,CAAA,IAAA,EAAU,CAAA,EAAGI,uBAAA,IAAI,EAAAL,0BAAA,EAAA,GAAA,CAAI,OAAO,CAAA;AACrD;AAAwB,IAAA,IAAA,CAAAM,QAAQ,GAAG,IAAIC,KAAK,EAAoB;AAChE;AAAgBC,IAAAA,6BAAA,CAAAP,GAAA,CAAA,IAAA,EAAA,MAAA,CAAA;AAChB;AAAgBQ,IAAAA,0CAAA,CAAAR,GAAA,CAAA,IAAA,EAAsB,KAAK,CAAA;AAC3C;AAAgBS,IAAAA,4BAAA,CAAAT,GAAA,CAAA,IAAA,EAAA,MAAA,CAAA;AAChB;AAAgBU,IAAAA,4CAAA,CAAAV,GAAA,CAAA,IAAA,EAAwB,KAAK,CAAA;AAC7C;AAAgBW,IAAAA,oCAAA,CAAAX,GAAA,CAAA,IAAA,EAAgB,KAAK,CAAA;AACrC;AAAgBY,IAAAA,gCAAA,CAAAZ,GAAA,CAAA,IAAA,EAAY,KAAK,CAAA;AACjC;AAAgBa,IAAAA,+CAAA,CAAAb,GAAA,CAAA,IAAA,EAAA,MAAA,CAAA;AAEhB;IAAyBc,oCAAA,CAAAd,GAAA,CAAA,IAAA,EAAgB,MAAMI,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAC,mCAAA,CAAa,CAAAC,IAAA,CAAjB,IAAI,CAAe,CAAA;AAClE;IAAyBC,mDAAA,CAAAlB,GAAA,CAAA,IAAA,EAA+B,MAAMI,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAI,kDAAA,CAA4B,CAAAF,IAAA,CAAhC,IAAI,CAA8B,CAAA;AAChG;IAAyBG,oCAAA,CAAApB,GAAA,CAAA,IAAA,EAAgB,MAAMI,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAM,mCAAA,CAAa,CAAAJ,IAAA,CAAjB,IAAI,CAAe,CAAA;AAClE;IAAyBK,mCAAA,CAAAtB,GAAA,CAAA,IAAA,EAAe,MAAMI,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAQ,kCAAA,CAAY,CAAAN,IAAA,CAAhB,IAAI,CAAc,CAAA;AAChE;IAAyBO,sCAAA,CAAAxB,GAAA,CAAA,IAAA,EAAmByB,CAAgB,IAAKrB,sBAAA,CAAA,IAAI,gFAAe,CAAAa,IAAA,CAAnB,IAAI,EAAgBQ,CAAC,CAAC,CAAA;AACvF;IAAyBC,oCAAA,CAAA1B,GAAA,CAAA,IAAA,EAAiByB,CAAQ,IAAKrB,sBAAA,CAAA,IAAI,8EAAa,CAAAa,IAAA,CAAjB,IAAI,EAAcQ,CAAC,CAAC,CAAA;AAC3E;IAAyBE,qCAAA,CAAA3B,GAAA,CAAA,IAAA,EAAiB,MAAMI,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAa,oCAAA,CAAc,CAAAX,IAAA,CAAlB,IAAI,CAAgB,CAAA;AACpE;IAAyBY,yCAAA,CAAA7B,GAAA,CAAA,IAAA,EAAsByB,CAAc,IAAKrB,sBAAA,CAAA,IAAI,mFAAkB,CAAAa,IAAA,CAAtB,IAAI,EAAmBQ,CAAC,CAAC,CAAA;AAC3F;IAAyBK,8CAAA,CAAA9B,GAAA,CAAA,IAAA,EAA2ByB,CAAe,IAAKrB,sBAAA,CAAA,IAAI,wFAAuB,CAAAa,IAAA,CAA3B,IAAI,EAAwBQ,CAAC,CAAC,CAAA;AACtG;IAAyBM,4CAAA,CAAA/B,GAAA,CAAA,IAAA,EAAyByB,CAAe,IAAKrB,sBAAA,CAAA,IAAI,sFAAqB,CAAAa,IAAA,CAAzB,IAAI,EAAsBQ,CAAC,CAAC,CAAA;AAClG;AAAgBO,IAAAA,yCAAA,CAAAhC,GAAA,CAAA,IAAA,EAAA,MAAA,CAAA;AAEhB;AAAiC,IAAA,IAAA,CAAAiC,eAAe,GAAG,IAAIC,cAAc,EAAoB,CACtFC,QAAQ,EAAE,CACVC,cAAc,EAAE,CAChBC,iBAAiB,EAAE,CACnBC,uBAAuB,EAAE,CACzBC,iBAAiB,CAAEC,IAAI,IAAKA,IAAI,CAACC,QAAQ,IAAID,IAAI,CAACE,MAAM,KAAK,IAAI,CAAC,CAClEC,kBAAkB,CAAC,MAAK;AACvB,MAAA,IAAI,IAAI,CAACV,eAAe,CAACW,UAAU,EAAE;AACnCxC,QAAAA,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAA8B,sCAAA,CAAgB,CAAA5B,IAAA,CAApB,IAAI,EAAiB,IAAI,CAACgB,eAAe,CAACW,UAAU,CAAC;AACvD,MAAA;AACF,IAAA,CAAC,CAAC;AAcJ;;;AAGG;IACiE,IAAA,CAAAE,sBAAsB,GAAG,KAAK;AAElG;;;AAGG;IACyC,IAAA,CAAAC,QAAQ,GAAG,KAAK;AAE5D;;;AAGG;IACsD,IAAA,CAAAC,YAAY,GAAG,KAAK;AAE7E;;;AAGG;IACuD,IAAA,CAAAC,aAAa,GAAG,KAAK;AAE/E;;;AAGG;IAYH,IAAA,CAAAC,MAAM,GAAmF,UAAU;AAEnG;;;AAGG;IAC0B,IAAA,CAAAC,OAAO,GAAG,KAAK;AAE5C;;;AAGG;IACqD,IAAA,CAAAC,UAAU,GAAG,KAAK;AAE1E;;;AAGG;IACqD,IAAA,CAAAC,WAAW,GAAG,KAAK;AAE3E;;;AAGG;IACuC,IAAA,CAAAC,YAAY,GAAG,YAAY;AAErE;;;AAGG;IACuC,IAAA,CAAAC,WAAW,GAAG,YAAY;AAEpE;;;AAGG;AACuC,IAAA,IAAA,CAAAC,YAAY,GAA0CC,KAAK,IACnG,CAAA,EAAGA,KAAK,CAAA,QAAA,CAAU;AAEpB;;;AAGG;IACqC,IAAA,CAAAC,UAAU,GAAG,EAAE;IA3FrD,IAAIC,kBAAkB,CAAC,IAAI,EAAE;AAC3BC,MAAAA,MAAM,EAAE;AACNC,QAAAA,SAAS,EAAE,IAAI;AACfC,QAAAA,OAAO,EAAE;OACV;AACDC,MAAAA,QAAQ,EAAEA,MAAM3D,uBAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAiD,sCAAA,CAAgB,CAAA/C,IAAA,CAApB,IAAI;AACrB,KAAA,CAAC;AACJ,EAAA;AAsFA;EACA,IAAIgD,OAAOA,GAAA;AACT,IAAA,OAAO,IAAI,CAAC5D,QAAQ,IAAI,EAAE;AAC5B,EAAA;AAEA;EACA,IAAI6D,QAAQA,GAAA;AACV,IAAA,OAAO,IAAI,CAACD,OAAO,CAACE,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAACF,QAAQ,CAAC,IAAI,IAAI;AACrD,EAAA;AAEA;EACA,IAAIG,KAAKA,GAAA;AACP,IAAA,MAAMH,QAAQ,GAAG,IAAI,CAACA,QAAQ;IAC9B,OAAOA,QAAQ,IAAI,CAACA,QAAQ,CAACzB,QAAQ,GAAGyB,QAAQ,CAACG,KAAK,GAAG,IAAI;AAC/D,EAAA;AAoCA;EACSC,MAAMA,CAACC,OAAoB,EAAA;AAClC,IAAA,IAAI,EAAEA,OAAO,YAAYC,gBAAgB,CAAC,EAAE;AAE5C,IAAA,KAAK,CAACF,MAAM,CAACC,OAAO,CAAC;IAErBA,OAAO,CAACE,YAAY,GAAG,KAAK;IAC5BF,OAAO,CAACG,IAAI,GAAG,UAAU;IACzBH,OAAO,CAACI,gBAAgB,GAAG,MAAM;IACjCJ,OAAO,CAACK,YAAY,GAAG,OAAO;AAE9BL,IAAAA,OAAO,CAACM,gBAAgB,CAAC,OAAO,EAAEzE,sBAAA,CAAA,IAAI,EAAAU,oCAAA,EAAA,GAAA,CAAc,CAAC;AACrDyD,IAAAA,OAAO,CAACM,gBAAgB,CAAC,OAAO,EAAEzE,sBAAA,CAAA,IAAI,EAAAgB,oCAAA,EAAA,GAAA,CAAc,CAAC;AACrDmD,IAAAA,OAAO,CAACM,gBAAgB,CAAC,MAAM,EAAEzE,sBAAA,CAAA,IAAI,EAAAkB,mCAAA,EAAA,GAAA,CAAa,CAAC;AACnDiD,IAAAA,OAAO,CAACM,gBAAgB,CAAC,SAAS,EAAEzE,sBAAA,CAAA,IAAI,EAAAoB,sCAAA,EAAA,GAAA,CAAgB,CAAC;AACzD+C,IAAAA,OAAO,CAACM,gBAAgB,CAAC,OAAO,EAAEzE,sBAAA,CAAA,IAAI,EAAAsB,oCAAA,EAAA,GAAA,CAAc,CAAC;AACrD6C,IAAAA,OAAO,CAACM,gBAAgB,CAAC,QAAQ,EAAEzE,sBAAA,CAAA,IAAI,EAAAuB,qCAAA,EAAA,GAAA,CAAe,CAAC;IAEvDvB,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAA+D,qCAAA,CAAW,EAAED,gBAAgB,CAAC,aAAa,EAAEzE,sBAAA,CAAA,IAAI,EAAAc,mDAAA,EAAA,GAAA,CAA6B,CAAC;AACrF,EAAA;AAEA;AACS6D,EAAAA,MAAMA,GAAA;IACb,IAAI,IAAI,CAACR,OAAO,EAAE;MAChBnE,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAA+D,qCAAA,CAAW,EAAEE,mBAAmB,CAAC,aAAa,EAAE5E,sBAAA,CAAA,IAAI,EAAAc,mDAAA,EAAA,GAAA,CAA6B,CAAC;AAEtF,MAAA,IAAI,CAACqD,OAAO,CAACG,IAAI,GAAG,IAAI;AACxB,MAAA,IAAI,CAACH,OAAO,CAACI,gBAAgB,GAAG,IAAI;AACpC,MAAA,IAAI,CAACJ,OAAO,CAACK,YAAY,GAAG,IAAI;AAEhC,MAAA,IAAI,CAACL,OAAO,CAACS,mBAAmB,CAAC,OAAO,EAAE5E,sBAAA,CAAA,IAAI,EAAAU,oCAAA,EAAA,GAAA,CAAc,CAAC;AAC7D,MAAA,IAAI,CAACyD,OAAO,CAACS,mBAAmB,CAAC,OAAO,EAAE5E,sBAAA,CAAA,IAAI,EAAAgB,oCAAA,EAAA,GAAA,CAAc,CAAC;AAC7D,MAAA,IAAI,CAACmD,OAAO,CAACS,mBAAmB,CAAC,MAAM,EAAE5E,sBAAA,CAAA,IAAI,EAAAkB,mCAAA,EAAA,GAAA,CAAa,CAAC;AAC3D,MAAA,IAAI,CAACiD,OAAO,CAACS,mBAAmB,CAAC,SAAS,EAAE5E,sBAAA,CAAA,IAAI,EAAAoB,sCAAA,EAAA,GAAA,CAAgB,CAAC;AACjE,MAAA,IAAI,CAAC+C,OAAO,CAACS,mBAAmB,CAAC,OAAO,EAAE5E,sBAAA,CAAA,IAAI,EAAAsB,oCAAA,EAAA,GAAA,CAAc,CAAC;AAC7D,MAAA,IAAI,CAAC6C,OAAO,CAACS,mBAAmB,CAAC,QAAQ,EAAE5E,sBAAA,CAAA,IAAI,EAAAuB,qCAAA,EAAA,GAAA,CAAe,CAAC;AACjE,IAAA;IACA,KAAK,CAACoD,MAAM,EAAE;AAChB,EAAA;AAEA;;;AAGG;AACHE,EAAAA,KAAKA,CAACC,YAAY,GAAG,KAAK,EAAA;IACxB,IAAI,CAAC9E,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAoE,iCAAA,CAAO,EAAE;AAElB/E,IAAAA,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAoE,iCAAA,CAAO,CAACd,KAAK,GAAG,EAAE;AACtB,IAAA,IAAIjE,uBAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAqE,oCAAA,CAAc,MAAlB,IAAI,CAAgB,EAAE;AACxB,MAAA,IAAI,CAACC,aAAa,CAAC,IAAIC,KAAK,CAAC,QAAQ,EAAE;AAAEC,QAAAA,OAAO,EAAE;AAAI,OAAE,CAAC,CAAC;AAC5D,IAAA;AACAnF,IAAAA,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAyE,qCAAA,CAAe,CAAAvE,IAAA,CAAnB,IAAI,CAAiB;AAErB,IAAA,IAAIiE,YAAY,EAAE;AAChB9E,MAAAA,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAoE,iCAAA,CAAO,CAACM,KAAK,EAAE;AACrB,IAAA,CAAC,MAAM;AACLrF,MAAAA,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAA2E,gCAAA,CAAU,CAAAzE,IAAA,CAAd,IAAI,CAAY;AAClB,IAAA;AACF,EAAA;AAEA;AACS0E,EAAAA,iBAAiBA,GAAA;IACxB,KAAK,CAACA,iBAAiB,EAAE;AACzBvF,IAAAA,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAiD,sCAAA,CAAgB,CAAA/C,IAAA,CAApB,IAAI,CAAkB;AACxB,EAAA;AAEA;EACmB2E,MAAMA,CAACC,iBAAuC,EAAA;AAC/D,IAAA,KAAK,CAACD,MAAM,CAACC,iBAAiB,CAAC;AAE/B,IAAA,IAAIA,iBAAiB,CAACC,GAAG,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC1C,UAAU,IAAIhD,sBAAA,CAAA,IAAI,EAAAK,4BAAA,EAAA,GAAA,CAAM,EAAE;AACxEsF,MAAAA,cAAc,CAAC3F,uBAAA,IAAI,EAAAK,4BAAA,EAAA,GAAA,CAAM,EAAE,WAAW,EAAE,KAAK,CAAC;AAChD,IAAA;AAEA,IAAA,IAAIoF,iBAAiB,CAACC,GAAG,CAAC,SAAS,CAAC,EAAE;MACpC,IAAI,IAAI,CAAC3C,OAAO,EAAE;QAChB,IAAI/C,sBAAA,CAAA,IAAI,EAAAQ,gCAAA,EAAA,GAAA,CAAU,EAAE;UAClB,IAAI,IAAI,CAAC0C,YAAY,EAAE;YACrB0C,gBAAgB,CAACC,QAAQ,CAAC,IAAI,CAAC3C,YAAY,EAAE,QAAQ,CAAC;AACxD,UAAA;UACA,IAAI,CAAClD,uBAAA,IAAI,EAAAK,4BAAA,EAAA,GAAA,CAAM,IAAIL,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAmF,0CAAA,CAAgB,EAAE;AACvC9F,YAAAA,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAoF,gCAAA,CAAU,CAAAlF,IAAA,CAAd,IAAI,CAAY;AAClB,UAAA;AACF,QAAA;MACF,CAAC,MAAM,IAAIb,sBAAA,CAAA,IAAI,EAAAK,4BAAA,EAAA,GAAA,CAAM,IAAI,CAACL,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAmF,0CAAA,CAAgB,EAAE;AAC9C9F,QAAAA,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAA2E,gCAAA,CAAU,CAAAzE,IAAA,CAAd,IAAI,CAAY;MAClB,CAAC,MAAM,IAAIb,sBAAA,CAAA,IAAI,EAAAK,4BAAA,EAAA,GAAA,CAAM,EAAE;QACrB2F,iBAAiB,CAAChG,sBAAA,CAAA,IAAI,oCAAM,EAAE,WAAW,CAAC;MAC5C,CAAC,MAAM,IAAIA,sBAAA,CAAA,IAAI,EAAAQ,gCAAA,EAAA,GAAA,CAAU,EAAE;AACzBR,QAAAA,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAoF,gCAAA,CAAU,CAAAlF,IAAA,CAAd,IAAI,CAAY;AAClB,MAAA;AACF,IAAA;AACF,EAAA;AAEA;AACmBoF,EAAAA,MAAMA,GAAA;AACvB,IAAA,OAAOC,IAAI,CAAA,uDAAA,EAA0DlG,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAwF,+CAAA,CAAyB,CAAA,qBAAA,CAE3F;AACT,EAAA;;;;;;;;;;;;;;;;;;;;;;;;AAnIE,EAAA,OAAO,IAAI,CAACtE,eAAe,EAAEuE,KAAK,IAAI,EAAE;AAC1C,CAAC;;EAIC,OAAO,IAAI,CAACjC,OAAO,GAAqB,IAAI,CAACA,OAAO,GAAG,IAAI;AAC7D,CAAC;;AAIC,EAAA,OAAO,CAACnE,sBAAA,CAAA,IAAI,EAAAG,6BAAA,EAAA,GAAA,CAAO,EAAEkG,aAAa,CAAC,kBAAkB,CAAC,IAAI,IAAI,MAAM,IAAI;AAC1E,CAAC;;AAIC,EAAA,OAAO,CAACrG,sBAAA,CAAA,IAAI,EAAAG,6BAAA,EAAA,GAAA,CAAO,EAAEkG,aAAa,CAAC,kBAAkB,CAAC,IAAI,IAAI,MAAM,IAAI;AAC1E,CAAC;;EAIC,OACErG,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAA2F,mCAAA,CAAS,CAACC,IAAI,CAAEvC,CAAC,IAAKA,CAAC,CAAC1B,MAAM,KAAK,KAAK,CAAC,IAC5C,IAAI,CAACS,OAAO,IAAI,CAAC,IAAI,CAACE,WAAW,IAAI,IAAI,CAACC,YAAY,CAACsD,MAAM,GAAG,CAAE,IAClE,CAAC,IAAI,CAACzD,OAAO,IAAI,CAAC,IAAI,CAACC,UAAU,IAAI,IAAI,CAACG,WAAW,CAACqD,MAAM,GAAG,CAAE;AAEtE,CAAC;;EAIC,OAAO,IAAI,CAACrC,OAAO,EAAEsC,OAAO,CAAC,gBAAgB,CAAC,IAAI,IAAI;AACxD,CAAC;2GAwGwBpF,CAAQ,EAAA;AAC/B,EAAA,IAAI,EAAEA,CAAC,CAACqF,MAAM,YAAYC,gBAAgB,CAAC,EAAE;EAC7CtF,CAAC,CAACuF,wBAAwB,EAAE;EAE5B,MAAMC,KAAK,GAAG,IAAI,CAAChD,OAAO,CAACiD,OAAO,CAACzF,CAAC,CAACqF,MAAM,CAAC;AAC5C,EAAA,IAAIG,KAAK,IAAI,EAAE,EAAE;AAEjB,EAAA,MAAME,KAAK,GAAG/G,sBAAA,CAAA,IAAI,8EAAS,CAAC6G,KAAK,CAAC;EAClC,IAAI,CAACE,KAAK,EAAE;AAEZA,EAAAA,KAAK,CAAC1E,QAAQ,GAAGhB,CAAC,CAACqF,MAAM,CAACrE,QAAQ;AAClC0E,EAAAA,KAAK,CAACjD,QAAQ,GAAGzC,CAAC,CAACqF,MAAM,CAAC5C,QAAQ;AACpC,CAAC;;AAGD,eAAKF,sCAAAA,GAAA;EACH,IAAI5D,sBAAA,CAAA,IAAI,EAAAS,+CAAA,EAAA,GAAA,CAAyB,EAAE;IACjCT,sBAAA,CAAA,IAAI,EAAAS,+CAAA,EAAA,GAAA,CAAyB,CAACuG,KAAK,EAAE;AACvC,EAAA;AACA,EAAA,MAAMC,uBAAuB,GAAG,IAAIC,eAAe,EAAE;EACrDC,sBAAA,CAAA,IAAI,EAAA1G,+CAAA,EAA4BwG,uBAAuB,EAAA,GAAA,CAAA;EAEvD,MAAMpD,OAAO,GAAG,CAAC,GAAG,IAAI,CAACuD,gBAAgB,CAAC,YAAY,CAAC,CAAC;AAExD,EAAA,KAAK,MAAMC,MAAM,IAAIxD,OAAO,EAAE;AAC5B,IAAA,IAAIoD,uBAAuB,CAACK,MAAM,CAACC,OAAO,EAAE;AAC1C,MAAA;AACF,IAAA;IACA,IAAIF,MAAM,CAACG,eAAe,EAAE;MAC1B,MAAMH,MAAM,CAACI,cAAc;AAC7B,IAAA;AACF,EAAA;AAEA,EAAA,IAAIR,uBAAuB,CAACK,MAAM,CAACC,OAAO,EAAE;AAC1C,IAAA;AACF,EAAA;EAEA,IAAI,CAACtH,QAAQ,GAAG4D,OAAO;AAEvBsD,EAAAA,sBAAA,CAAA,IAAI,iCAAuB,IAAI,CAACO,SAAS,CAAC,IAAI,CAAC,EAAA,GAAA,CAAA;EAE/C,MAAM;AAAEC,IAAAA;GAAO,GAAG,IAAI,CAAC9F,eAAe,CAAC+F,QAAQ,CAAC,CAAC,GAAG5H,sBAAA,CAAA,IAAI,qCAAO,CAACoH,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC;AAChGO,EAAAA,KAAK,CAACE,OAAO,CAAE7D,CAAC,IAAI;IAClBA,CAAC,CAAC8D,EAAE,GAAG9D,CAAC,CAAC8D,EAAE,IAAI,CAAA,EAAG9H,sBAAA,CAAA,IAAI,EAAAL,0BAAA,EAAA,GAAA,CAAI,CAAA,QAAA,EAAW,IAAI,CAACkC,eAAe,CAACuE,KAAK,CAACU,OAAO,CAAC9C,CAAC,CAAC,CAAA,CAAE;IAC5E2B,cAAc,CAAC3B,CAAC,EAAE,4BAA4B,EAAE,IAAI,CAACtB,sBAAsB,CAAC;AAC9E,EAAA,CAAC,CAAC;EAEF,IAAI1C,sBAAA,CAAA,IAAI,EAAAK,4BAAA,EAAA,GAAA,CAAM,EAAE;AACd,IAAA,MAAMgD,KAAK,GAAGrD,sBAAA,CAAA,IAAI,gFAAe,CAAAa,IAAA,CAAnB,IAAI,CAAiB;AACnCb,IAAAA,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAoH,oCAAA,CAAc,CAAAlH,IAAA,CAAlB,IAAI,CAAgB;IACpB,IAAI,CAACb,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAmF,0CAAA,CAAgB,EAAE;AACzB9F,MAAAA,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAA2E,gCAAA,CAAU,CAAAzE,IAAA,CAAd,IAAI,CAAY;AAClB,IAAA,CAAC,MAAM;MACLb,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAqH,uCAAA,CAAiB,CAAAnH,IAAA,CAArB,IAAI,EAAkBb,sBAAA,CAAA,IAAI,EAAAK,4BAAA,EAAA,GAAA,CAAM,EAAEgD,KAAK,CAAC;AAC1C,IAAA;AACF,EAAA;AACF,CAAC;;EAIC8D,sBAAA,CAAA,IAAI,EAAA/G,0CAAA,EAAuB,IAAI,EAAA,GAAA,CAAA;AAC/BJ,EAAAA,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAoF,gCAAA,CAAU,CAAAlF,IAAA,CAAd,IAAI,CAAY;AAClB,CAAC;;EAICsG,sBAAA,CAAA,IAAI,EAAA7G,4CAAA,EAAyB,IAAI,EAAA,GAAA,CAAA;AACnC,CAAC;;EAIC6G,sBAAA,CAAA,IAAI,EAAA3G,gCAAA,EAAa,IAAI,EAAA,GAAA,CAAA;EACrB2G,sBAAA,CAAA,IAAI,EAAA/G,0CAAA,EAAuB,IAAI,EAAA,GAAA,CAAA;AAE/B,EAAA,IAAI,IAAI,CAACyD,OAAO,CAAC2C,MAAM,IAAI,CAAC,IAAI,CAAoB,IAAI,CAACrC,OAAQ,CAAC8D,QAAQ,EAAE;AAC1E,IAAA,IAAI,CAAChD,aAAa,CAChB,IAAIiD,WAAW,CAA+B,OAAO,EAAE;AACrDC,MAAAA,MAAM,EAAE;AAAEC,QAAAA,IAAI,EAAEpI,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAoE,iCAAA,CAAO,EAAEd,KAAK,IAAI;OAAI;AAC1CkB,MAAAA,OAAO,EAAE,IAAI;AACbkD,MAAAA,QAAQ,EAAE;AACX,KAAA,CAAC,CACH;AACH,EAAA;AAEArI,EAAAA,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAoF,gCAAA,CAAU,CAAAlF,IAAA,CAAd,IAAI,CAAY;AAClB,CAAC;;EAICsG,sBAAA,CAAA,IAAI,EAAA3G,gCAAA,EAAa,KAAK,EAAA,GAAA,CAAA;EACtB,IAAI,CAACR,sBAAA,CAAA,IAAI,EAAAM,4CAAA,EAAA,GAAA,CAAsB,EAAE;AAC/BN,IAAAA,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAA2E,gCAAA,CAAU,CAAAzE,IAAA,CAAd,IAAI,CAAY;AAClB,EAAA;EACAsG,sBAAA,CAAA,IAAI,EAAA7G,4CAAA,EAAyB,KAAK,EAAA,GAAA,CAAA;AACpC,CAAC;mFAGYe,CAAQ,EAAA;AACnB,EAAA,IAAI,CAACrB,sBAAA,CAAA,IAAI,4EAAO,IAAIqB,CAAC,CAACiH,gBAAgB,EAAE;AAExC,EAAA,IAAI,CAACrD,aAAa,CAChB,IAAIiD,WAAW,CAA+B,OAAO,EAAE;AACrDC,IAAAA,MAAM,EAAE;MAAEC,IAAI,EAAEpI,uBAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAoE,iCAAA,CAAO,CAACd;KAAO;AACnCkB,IAAAA,OAAO,EAAE,IAAI;AACbkD,IAAAA,QAAQ,EAAE;AACX,GAAA,CAAC,CACH;AAED,EAAA,IAAIrI,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAoE,iCAAA,CAAO,CAACd,KAAK,KAAK,EAAE,IAAIjE,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAqE,oCAAA,CAAc,CAAAnE,IAAA,CAAlB,IAAI,CAAgB,EAAE;AACpD,IAAA,IAAI,CAACoE,aAAa,CAAC,IAAIC,KAAK,CAAC,QAAQ,EAAE;AAAEC,MAAAA,OAAO,EAAE;AAAI,KAAE,CAAC,CAAC;AAC5D,EAAA;EAEAgC,sBAAA,CAAA,IAAI,EAAA5G,oCAAA,EAAiB,IAAI,EAAA,GAAA,CAAA;EACzB,IAAI;IACF,IAAI,CAACP,sBAAA,CAAA,IAAI,EAAAK,4BAAA,EAAA,GAAA,CAAM,EAAE;AACfL,MAAAA,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAoF,gCAAA,CAAU,CAAAlF,IAAA,CAAd,IAAI,CAAY;AAClB,IAAA,CAAC,MAAM;AACLb,MAAAA,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAyE,qCAAA,CAAe,CAAAvE,IAAA,CAAnB,IAAI,CAAiB;MACrB,IAAI,CAACb,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAmF,0CAAA,CAAgB,EAAE;AACzB9F,QAAAA,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAA2E,gCAAA,CAAU,CAAAzE,IAAA,CAAd,IAAI,CAAY;AAClB,MAAA;AACF,IAAA;AACF,EAAA,CAAC,SAAS;IACRsG,sBAAA,CAAA,IAAI,EAAA5G,oCAAA,EAAiB,KAAK,EAAA,GAAA,CAAA;AAC1BP,IAAAA,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAA+D,qCAAA,CAAW,EAAE6D,wBAAwB,CAAC,IAAI,CAAC;AACjD,EAAA;AACF,CAAC;;EAIC,IAAIvI,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAoE,iCAAA,CAAO,EAAE;AACf,IAAA,MAAMjB,QAAQ,GAAG,IAAI,CAACA,QAAQ;IAC9B,IAAI,IAAI,CAACnB,QAAQ,EAAE;AACjB3C,MAAAA,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAoE,iCAAA,CAAO,CAACd,KAAK,GAAGH,QAAQ,EAAE0E,KAAK,IAAI,EAAE;AAC3C,IAAA,CAAC,MAAM,IAAI1E,QAAQ,IAAIA,QAAQ,CAAC0E,KAAK,KAAKxI,uBAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAoE,iCAAA,CAAO,CAACd,KAAK,IAAIjE,uBAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAqE,oCAAA,CAAc,MAAlB,IAAI,CAAgB,EAAE;AACnF,MAAA,IAAI,CAACC,aAAa,CAAC,IAAIC,KAAK,CAAC,QAAQ,EAAE;AAAEC,QAAAA,OAAO,EAAE;AAAI,OAAE,CAAC,CAAC;AAC5D,IAAA;AACF,EAAA;AACF,CAAC;uFAGc9D,CAAgB,EAAA;EAC7B,IAAIA,CAAC,CAACiH,gBAAgB,EAAE;EAExBnB,sBAAA,CAAA,IAAI,EAAA/G,0CAAA,EAAuB,KAAK,EAAA,GAAA,CAAA;EAEhC,QAAQiB,CAAC,CAACoH,GAAG;AACX,IAAA,KAAK,WAAW;AAChB,IAAA,KAAK,QAAQ;MACX,IAAIzI,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAoE,iCAAA,CAAO,IAAI,CAAC/E,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAoE,iCAAA,CAAO,CAACd,KAAK,EAAE;AACrCjE,QAAAA,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAA2E,gCAAA,CAAU,CAAAzE,IAAA,CAAd,IAAI,CAAY;AAClB,MAAA;AACA,MAAA;AAEF,IAAA,KAAK,OAAO;AACV,MAAA,IAAIb,sBAAA,CAAA,IAAI,EAAAK,4BAAA,EAAA,GAAA,CAAM,IAAI,IAAI,CAACwB,eAAe,CAACW,UAAU,EAAE;QACjDnB,CAAC,CAACqH,cAAc,EAAE;AAClB1I,QAAAA,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAgI,oCAAA,CAAc,CAAA9H,IAAA,CAAlB,IAAI,EAAe,IAAI,CAACgB,eAAe,CAACW,UAAU,CAAC;AACnD,QAAA,IAAI,CAACoG,oBAAoB,EAAE,EAAE;AAC3BC,UAAAA,UAAU,CAAC,MAAM7I,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAA2E,gCAAA,CAAU,CAAAzE,IAAA,CAAd,IAAI,CAAY,EAAE,GAAG,CAAC;AACzC,QAAA,CAAC,MAAM;AACLb,UAAAA,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAA2E,gCAAA,CAAU,CAAAzE,IAAA,CAAd,IAAI,CAAY;AAClB,QAAA;MACF,CAAC,MAAM,IAAIb,sBAAA,CAAA,IAAI,EAAAK,4BAAA,EAAA,GAAA,CAAM,EAAE;AACrBwI,QAAAA,UAAU,CAAC,MAAK;UACd,IAAI7I,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAoE,iCAAA,CAAO,IAAI,CAAC/E,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAoE,iCAAA,CAAO,CAACd,KAAK,EAAE;AACrCjE,YAAAA,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAA2E,gCAAA,CAAU,CAAAzE,IAAA,CAAd,IAAI,CAAY;AAClB,UAAA;AACF,QAAA,CAAC,CAAC;AACJ,MAAA;AACA,MAAA;AAEF,IAAA,KAAK,QAAQ;AACb,IAAA,KAAK,KAAK;AACRb,MAAAA,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAA2E,gCAAA,CAAU,CAAAzE,IAAA,CAAd,IAAI,CAAY;AAChB,MAAA;AAEF,IAAA,KAAK,IAAI;AACT,IAAA,KAAK,SAAS;MACZ,IAAIQ,CAAC,CAACyH,MAAM,EAAE;AACZ9I,QAAAA,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAA2E,gCAAA,CAAU,CAAAzE,IAAA,CAAd,IAAI,CAAY;AAClB,MAAA,CAAC,MAAM;AACL,QAAA,IAAI,CAACgB,eAAe,CAACkH,SAAS,CAAC1H,CAAC,CAAC;AACnC,MAAA;AACA,MAAA;AAEF,IAAA,KAAK,MAAM;AACX,IAAA,KAAK,WAAW;MACd,IAAI,CAACrB,sBAAA,CAAA,IAAI,EAAAK,4BAAA,EAAA,GAAA,CAAM,EAAE;AACfL,QAAAA,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAoF,gCAAA,CAAU,CAAAlF,IAAA,CAAd,IAAI,CAAY;QAChBQ,CAAC,CAACqH,cAAc,EAAE;AACpB,MAAA,CAAC,MAAM;AACL,QAAA,IAAI,CAAC7G,eAAe,CAACkH,SAAS,CAAC1H,CAAC,CAAC;AACnC,MAAA;AACA,MAAA;AAEF,IAAA;AACE,MAAA,IAAI,CAACQ,eAAe,CAACkH,SAAS,CAAC1H,CAAC,CAAC;AACjC,MAAA;AACJ;AACF,CAAC;uGAGsBA,CAAe,EAAA;EACpC8F,sBAAA,CAAA,IAAI,EAAAvF,yCAAA,EAAsBoH,SAAS,EAAA,GAAA,CAAA;AAEnC,EAAA,IAAI3H,CAAC,CAAC4H,MAAM,KAAK,CAAC,EAAE;AACpB;EACA5H,CAAC,CAACqH,cAAc,EAAE;EAClBrH,CAAC,CAACuF,wBAAwB,EAAE;EAE5B,MAAMS,MAAM,GACVhG,CAAC,CAAC6H,YAAY,EAAE,CAACnF,IAAI,CAAEC,CAAC,IAAKA,CAAC,YAAYmF,WAAW,IAAInF,CAAC,CAACoF,OAAO,KAAK,YAAY,CACpF;AAED,EAAA,IAAI/B,MAAM,IAAI,CAACA,MAAM,CAAChF,QAAQ,EAAE;IAC9B8E,sBAAA,CAAA,IAAI,EAAAvF,yCAAA,EAAsByF,MAAM,EAAA,GAAA,CAAA;AAClC,EAAA;AACF,CAAC;mGAGoBhG,CAAe,EAAA;EAClC,MAAMgI,aAAa,GAAGrJ,sBAAA,CAAA,IAAI,iDAAmB;EAC7CmH,sBAAA,CAAA,IAAI,EAAAvF,yCAAA,EAAsBoH,SAAS,EAAA,GAAA,CAAA;AAEnC,EAAA,IAAI3H,CAAC,CAAC4H,MAAM,KAAK,CAAC,EAAE;EAEpB,IAAI,CAACI,aAAa,EAAE;EAEpB,MAAMhC,MAAM,GACVhG,CAAC,CAAC6H,YAAY,EAAE,CAACnF,IAAI,CAAEC,CAAC,IAAKA,CAAC,YAAYmF,WAAW,IAAInF,CAAC,CAACoF,OAAO,KAAK,YAAY,CACpF;EAED,IAAI/B,MAAM,KAAKgC,aAAa,EAAE;AAC5B,IAAA,IAAI,CAACxH,eAAe,CAACyH,aAAa,CAACjC,MAAM,CAAC;AAC1CrH,IAAAA,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAgI,oCAAA,CAAc,CAAA9H,IAAA,CAAlB,IAAI,EAAewG,MAAM,CAAC;AAC5B,EAAA;AAEA,EAAA,IAAI,CAACuB,oBAAoB,EAAE,EAAE;AAC3BC,IAAAA,UAAU,CAAC,MAAM7I,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAA2E,gCAAA,CAAU,CAAAzE,IAAA,CAAd,IAAI,CAAY,EAAE,GAAG,CAAC;AACzC,EAAA,CAAC,MAAM;AACLb,IAAAA,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAA2E,gCAAA,CAAU,CAAAzE,IAAA,CAAd,IAAI,CAAY;AAClB,EAAA;AACF,CAAC;6FAGiBQ,CAAc,EAAA;EAC9B,IAAI,CAACrB,sBAAA,CAAA,IAAI,EAAAK,4BAAA,EAAA,GAAA,CAAM,EAAE;AAEjB,EAAA,IAAIgB,CAAC,CAACkI,QAAQ,KAAK,QAAQ,EAAE;IAC3B,MAAMlC,MAAM,GAAGrH,sBAAA,CAAA,IAAI,8EAAS,CAAC+D,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAACF,QAAQ,IAAI,CAACE,CAAC,CAAC3B,QAAQ,CAAC;AACnE,IAAA,IAAIgF,MAAM,EAAE;AACV,MAAA,IAAI,CAACxF,eAAe,CAACyH,aAAa,CAACjC,MAAM,CAAC;MAC1CmC,sBAAsB,CAACnC,MAAM,EAAErH,uBAAA,IAAI,EAAAK,4BAAA,EAAA,GAAA,CAAM,CAAC;AAC5C,IAAA,CAAC,MAAM;AACLL,MAAAA,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAA8I,oCAAA,CAAc,CAAA5I,IAAA,CAAlB,IAAI,CAAgB;AACtB,IAAA;AAEA,IAAA,IAAI,CAACoE,aAAa,CAChB,IAAIyE,WAAW,CAAC,QAAQ,EAAE;MACxBC,QAAQ,EAAEtI,CAAC,CAACsI,QAAQ;MACpBJ,QAAQ,EAAElI,CAAC,CAACkI;AACb,KAAA,CAAC,CACH;AACH,EAAA,CAAC,MAAM;IACL,IAAIX,oBAAoB,EAAE,EAAE;AAC1B5I,MAAAA,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAiJ,mCAAA,CAAa,CAAA/I,IAAA,CAAjB,IAAI,EAAcQ,CAAC,CAAC;AACtB,IAAA,CAAC,MAAM;AACL;AACA;MACAwH,UAAU,CAAC,MAAM7I,uBAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAiJ,mCAAA,CAAa,CAAA/I,IAAA,CAAjB,IAAI,EAAcQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAC7C,IAAA;AACF,EAAA;AACF,CAAC;mFAGYA,CAAc,EAAA;EACzB,IAAI,CAACrB,sBAAA,CAAA,IAAI,EAAAK,4BAAA,EAAA,GAAA,CAAM,EAAE;EAEjBL,sBAAA,CAAA,IAAI,EAAAG,6BAAA,EAAA,GAAA,CAAO,EAAE0J,eAAe,CAAC,GAAG7J,sBAAA,CAAA,IAAI,EAAAK,4BAAA,EAAA,GAAA,CAAM,CAACyJ,UAAU,CAAC;EAEtD9J,sBAAA,CAAA,IAAI,EAAAK,4BAAA,EAAA,GAAA,CAAM,CAAC0J,MAAM,EAAE;EACnB/J,sBAAA,CAAA,IAAI,EAAAK,4BAAA,EAAA,GAAA,CAAM,CAACuE,mBAAmB,CAAC,QAAQ,EAAE5E,sBAAA,CAAA,IAAI,EAAAyB,yCAAA,EAAA,GAAA,CAAmB,CAAC;EACjEzB,sBAAA,CAAA,IAAI,EAAAK,4BAAA,EAAA,GAAA,CAAM,CAACuE,mBAAmB,CAAC,aAAa,EAAE5E,sBAAA,CAAA,IAAI,EAAA0B,8CAAA,EAAA,GAAA,CAAwB,CAAC;EAC3E1B,sBAAA,CAAA,IAAI,EAAAK,4BAAA,EAAA,GAAA,CAAM,CAACuE,mBAAmB,CAAC,WAAW,EAAE5E,sBAAA,CAAA,IAAI,EAAA2B,4CAAA,EAAA,GAAA,CAAsB,CAAC;EACvEwF,sBAAA,CAAA,IAAI,EAAA9G,4BAAA,EAAS2I,SAAS,EAAA,GAAA,CAAA;EAEtB,IAAIhJ,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAoE,iCAAA,CAAO,EAAE;AACf/E,IAAAA,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAoE,iCAAA,CAAO,CAACP,YAAY,GAAG,OAAO;AAClCxE,IAAAA,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAoE,iCAAA,CAAO,CAACiF,eAAe,CAAC,eAAe,CAAC;AAC5ChK,IAAAA,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAoE,iCAAA,CAAO,CAACiF,eAAe,CAAC,WAAW,CAAC;AACxChK,IAAAA,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAoE,iCAAA,CAAO,CAACiF,eAAe,CAAC,uBAAuB,CAAC;AACtD,EAAA;EACA,IAAI,CAACC,aAAa,EAAE;AAEpBjK,EAAAA,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAA+D,qCAAA,CAAW,EAAE6D,wBAAwB,EAAE;AAE3C,EAAA,IAAI,CAACtD,aAAa,CAChB,IAAIyE,WAAW,CAAC,QAAQ,EAAE;IACxBC,QAAQ,EAAEtI,CAAC,CAACsI,QAAQ;IACpBJ,QAAQ,EAAElI,CAAC,CAACkI;AACb,GAAA,CAAC,CACH;AAED,EAAA,IAAIvJ,uBAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAoE,iCAAA,CAAO,EAAEmF,IAAI,KAAK,OAAO,IAAIlK,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAoE,iCAAA,CAAO,CAACoF,aAAa,EAAEf,OAAO,KAAK,oBAAoB,EAAE;AAChGpJ,IAAAA,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAqE,oCAAA,CAAc,CAAAnE,IAAA,CAAlB,IAAI,CAAgB;AACtB,EAAA;AACF,CAAC;;EAIC,IAAIb,uBAAA,IAAI,EAAAK,4BAAA,EAAA,GAAA,CAAM,IAAI,CAACL,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAoE,iCAAA,CAAO,IAAI/E,uBAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAoE,iCAAA,CAAO,CAACkD,QAAQ,IAAIjI,uBAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAoE,iCAAA,CAAO,CAAC1C,QAAQ,EAAE;AAEhF,EAAA,MAAMgB,KAAK,GAAGrD,sBAAA,CAAA,IAAI,gFAAe,CAAAa,IAAA,CAAnB,IAAI,CAAiB;EAEnC,IAAI,CAACb,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAmF,0CAAA,CAAgB,EAAE;AAE3BqB,EAAAA,sBAAA,CAAA,IAAI,gCAASiD,QAAQ,CAACC,aAAa,CAAC,kBAAkB,CAAC,EAAA,GAAA,CAAA;AACvDrK,EAAAA,sBAAA,CAAA,IAAI,oCAAM,CAAC8H,EAAE,GAAG9H,sBAAA,CAAA,IAAI,sCAAQ;EAE5B,IAAI,IAAI,CAACsD,UAAU,EAAE;IACnB,KAAK,MAAMgH,KAAK,IAAI,IAAI,CAAChH,UAAU,CAChCiH,KAAK,CAAC,KAAK,CAAC,CACZC,GAAG,CAAEC,CAAC,IAAKA,CAAC,CAACC,IAAI,EAAE,CAAC,CACpB5H,MAAM,CAAC6H,OAAO,CAAC,EAAE;AAClB3K,MAAAA,sBAAA,CAAA,IAAI,oCAAM,CAAC4K,SAAS,CAACC,GAAG,CAACP,KAAK,CAAC;AACjC,IAAA;AACF,EAAA;AAEAtK,EAAAA,sBAAA,CAAA,IAAI,oCAAM,CAAC8K,KAAK,CAACC,SAAS,GAAG,QAAQ;EACrC/K,sBAAA,CAAA,IAAI,EAAAK,4BAAA,EAAA,GAAA,CAAM,CAAC2K,cAAc,GAAG,YAAY;EACxChL,sBAAA,CAAA,IAAI,EAAAK,4BAAA,EAAA,GAAA,CAAM,CAAC4K,cAAc,GAAG,IAAI;EAChCjL,sBAAA,CAAA,IAAI,EAAAK,4BAAA,EAAA,GAAA,CAAM,CAACoE,gBAAgB,CAAC,QAAQ,EAAEzE,sBAAA,CAAA,IAAI,EAAAyB,yCAAA,EAAA,GAAA,CAAmB,CAAC;EAC9DzB,sBAAA,CAAA,IAAI,EAAAK,4BAAA,EAAA,GAAA,CAAM,CAACoE,gBAAgB,CAAC,aAAa,EAAEzE,sBAAA,CAAA,IAAI,EAAA0B,8CAAA,EAAA,GAAA,CAAwB,CAAC;EACxE1B,sBAAA,CAAA,IAAI,EAAAK,4BAAA,EAAA,GAAA,CAAM,CAACoE,gBAAgB,CAAC,WAAW,EAAEzE,sBAAA,CAAA,IAAI,EAAA2B,4CAAA,EAAA,GAAA,CAAsB,CAAC;AAEpE3B,EAAAA,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAoH,oCAAA,CAAc,CAAAlH,IAAA,CAAlB,IAAI,CAAgB;EAEpBb,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAqH,uCAAA,CAAiB,CAAAnH,IAAA,CAArB,IAAI,EAAkBb,sBAAA,CAAA,IAAI,EAAAK,4BAAA,EAAA,GAAA,CAAM,EAAEgD,KAAK,CAAC;AAExC,EAAA,CAACrD,uBAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAA+D,qCAAA,CAAW,IAAI1E,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAoE,iCAAA,CAAO,EAAEmG,qBAAqB,CAAC,UAAU,EAAElL,uBAAA,IAAI,EAAAK,4BAAA,EAAA,GAAA,CAAM,CAAC;EAE9EL,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAoE,iCAAA,CAAO,CAACoG,YAAY,CAAC,eAAe,EAAEnL,sBAAA,CAAA,IAAI,EAAAD,8BAAA,EAAA,GAAA,CAAQ,CAAC;EACvDC,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAoE,iCAAA,CAAO,CAACoG,YAAY,CAAC,WAAW,EAAEnL,sBAAA,CAAA,IAAI,EAAAD,8BAAA,EAAA,GAAA,CAAQ,CAAC;AAEnDC,EAAAA,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAA+D,qCAAA,CAAW,EAAE6D,wBAAwB,EAAE;EAE3C,IAAI,IAAI,CAAC1G,eAAe,CAACW,UAAU,IAAI,IAAI,CAACI,YAAY,EAAE;IACxD5C,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAA8B,sCAAA,CAAgB,CAAA5B,IAAA,CAApB,IAAI,EAAiB,IAAI,CAACgB,eAAe,CAACW,UAAU,EAAE,IAAI,CAAC;AAC7D,EAAA;EAEA,MAAM4I,KAAK,GAAGpL,sBAAA,CAAA,IAAI,4EAAO;AACzB6I,EAAAA,UAAU,CAAC,MAAM7I,sBAAA,CAAA,IAAI,oCAAM,EAAEqL,IAAI,CAACD,KAAK,EAAEpL,uBAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAA+D,qCAAA,CAAW,EAAE4G,UAAU,CAAC,CAAC;AACxE,CAAC;;AAIC,EAAA,IAAI,CAACtL,uBAAA,IAAI,EAAAG,6BAAA,EAAA,GAAA,CAAO,IAAI,CAACH,sBAAA,CAAA,IAAI,EAAAK,4BAAA,EAAA,GAAA,CAAM,EAAE;AACjC,EAAA,MAAMkL,QAAQ,GAAG,CAAC,GAAGvL,sBAAA,CAAA,IAAI,EAAAG,6BAAA,EAAA,GAAA,CAAO,CAAC2J,UAAU,CAAC;AAC5C,EAAA,IAAI,CAAC9J,uBAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAA6K,yCAAA,CAAe,IAAI,IAAI,CAACrI,WAAW,EAAE;AAC5C,IAAA,MAAMsI,UAAU,GAAGrB,QAAQ,CAACC,aAAa,CAAC,MAAM,CAAC;IACjDoB,UAAU,CAACvB,IAAI,GAAG,SAAS;IAC3BuB,UAAU,CAACC,SAAS,GAAG,KAAK;AAE5B,IAAA,MAAMC,IAAI,GAAGvB,QAAQ,CAACC,aAAa,CAAC,MAAM,CAAC;IAC3CsB,IAAI,CAACD,SAAS,GAAG,IAAI;AACrBC,IAAAA,IAAI,CAACC,WAAW,GAAG,IAAI,CAACzI,WAAW;AACnCsI,IAAAA,UAAU,CAACI,MAAM,CAACF,IAAI,CAAC;AAEvBJ,IAAAA,QAAQ,CAACO,IAAI,CAACL,UAAU,CAAC;AAC3B,EAAA;AACA,EAAA,IAAI,CAACzL,uBAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAoL,0CAAA,CAAgB,IAAI,IAAI,CAAC7I,YAAY,EAAE;AAC9C,IAAA,MAAM8I,WAAW,GAAG5B,QAAQ,CAACC,aAAa,CAAC,MAAM,CAAC;IAClD2B,WAAW,CAAC9B,IAAI,GAAG,SAAS;IAC5B8B,WAAW,CAACN,SAAS,GAAG,KAAK;AAE7B,IAAA,MAAMC,IAAI,GAAGvB,QAAQ,CAACC,aAAa,CAAC,MAAM,CAAC;IAC3CsB,IAAI,CAACD,SAAS,GAAG,IAAI;AACrBC,IAAAA,IAAI,CAACC,WAAW,GAAG,IAAI,CAAC1I,YAAY;AACpC8I,IAAAA,WAAW,CAACH,MAAM,CAACF,IAAI,CAAC;AAExBJ,IAAAA,QAAQ,CAACO,IAAI,CAACE,WAAW,CAAC;AAC5B,EAAA;AACAhM,EAAAA,sBAAA,CAAA,IAAI,oCAAM,CAAC6J,eAAe,CAAC,GAAG0B,QAAQ,CAAC;AACzC,CAAC;AAGgBvD,uCAAA,GAAA,SAAAA,uCAAAA,CAAAiE,IAA2B,EAAE5I,KAAa,EAAA;EACzDsC,cAAc,CAACsG,IAAI,EAAE,WAAW,EAAE,IAAI,CAAClJ,OAAO,CAAC;EAC/C4C,cAAc,CAACsG,IAAI,EAAE,WAAW,EAAE5I,KAAK,IAAI,CAAC,CAAC;AAC/C,CAAC;;EAICrD,sBAAA,CAAA,IAAI,EAAAK,4BAAA,EAAA,GAAA,CAAM,EAAE6L,IAAI,EAAE;AACpB,CAAC;yFAGe7E,MAAwB,EAAE8E,iBAAiB,GAAG,KAAK,EAAA;EACjE,IAAI,CAACnM,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAoE,iCAAA,CAAO,EAAE;AAElB/E,EAAAA,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAoE,iCAAA,CAAO,CAACoG,YAAY,CAAC,uBAAuB,EAAE9D,MAAM,CAACS,EAAE,CAAC;EAE5D,IAAI9H,sBAAA,CAAA,IAAI,EAAAK,4BAAA,EAAA,GAAA,CAAM,EAAE;IACdmJ,sBAAsB,CAACnC,MAAM,EAAErH,sBAAA,CAAA,IAAI,oCAAM,EAAE;AAAEoM,MAAAA,KAAK,EAAE,SAAS;AAAEC,MAAAA,QAAQ,EAAE;AAAS,KAAE,CAAC;AAErF,IAAA,MAAMC,YAAY,GAChBH,iBAAiB,IAChB,CAACnM,sBAAA,CAAA,IAAI,kDAAoB,KAAKA,uBAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAoE,iCAAA,CAAO,CAACwH,OAAO,CAAC,gBAAgB,CAAC,IAAIC,kBAAkB,EAAE,CAAE;AAEhGxM,IAAAA,sBAAA,CAAA,IAAI,8EAAS,CAAC6H,OAAO,CAAE7D,CAAC,IAAI;AAC1B,MAAA,MAAMyI,MAAM,GAAGzI,CAAC,KAAKqD,MAAM,IAAIiF,YAAY;AAC3C,MAAA,IAAIG,MAAM,EAAE;AACVzI,QAAAA,CAAC,CAAC0I,SAAS,EAAErB,IAAI,EAAE;AACnBrH,QAAAA,CAAC,CAAC2I,UAAU,EAAEtB,IAAI,CAAC,SAAS,CAAC;AAC/B,MAAA,CAAC,MAAM;AACLrH,QAAAA,CAAC,CAAC0I,SAAS,EAAER,IAAI,EAAE;AACnBlI,QAAAA,CAAC,CAAC2I,UAAU,EAAET,IAAI,CAAC,SAAS,CAAC;AAC/B,MAAA;AACF,IAAA,CAAC,CAAC;AACJ,EAAA;AACF,CAAC;;AAGD,4DAA4BnF,KAAuB,EAAA;AACjD,EAAA,MAAMM,MAAM,GAAG,IAAI,CAACpH,QAAQ,CAAC,IAAI,CAAC4B,eAAe,CAACuE,KAAK,CAACU,OAAO,CAACC,KAAK,CAAC,CAAC;AACvE,EAAA,IAAIM,MAAM,EAAE;AACVA,IAAAA,MAAM,CAACvD,QAAQ,GAAGiD,KAAK,CAACjD,QAAQ;IAChC,IAAIuD,MAAM,CAACG,eAAe,EAAE;MAC1B,MAAMH,MAAM,CAACI,cAAc;AAC7B,IAAA;AACF,EAAA;AACF,CAAC;;AAGD,oDAAoBJ,MAAwB,EAAA;EAC1C,IAAIA,MAAM,CAACvD,QAAQ,EAAE;EAErBuD,MAAM,CAACvD,QAAQ,GAAG,IAAI;AACtB,EAAA,MAAM9D,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAiM,4CAAA,CAAsB,CAAA/L,IAAA,CAA1B,IAAI,EAAuBwG,MAAM,CAAC;EACxC,IAAIA,MAAM,CAACG,eAAe,EAAE;IAC1B,MAAMH,MAAM,CAACI,cAAc;AAC7B,EAAA;EAEA,IAAI,CAACwC,aAAa,EAAE;EACpB,IAAI,IAAI,CAACzC,eAAe,EAAE;IACxB,MAAM,IAAI,CAACC,cAAc;AAC3B,EAAA;EAEA,IAAIzH,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAoE,iCAAA,CAAO,EAAE;AACf/E,IAAAA,sBAAA,CAAA,IAAI,4EAAO,CAACiE,KAAK,GAAGoD,MAAM,CAACmB,KAAK;AAClC,EAAA;AAEA,EAAA,IAAI,CAACvD,aAAa,CAAC,IAAIC,KAAK,CAAC,QAAQ,EAAE;AAAEC,IAAAA,OAAO,EAAE;AAAI,GAAE,CAAC,CAAC;AAE1DnF,EAAAA,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAA+D,qCAAA,CAAW,EAAE6D,wBAAwB,CAAC,IAAI,CAAC;AACjD,CAAC;AAGasE,oCAAA,GAAA,SAAAA,oCAAAA,CAAA9F,KAAuB,EAAEM,MAAwB,EAAEe,IAAY,EAAE0E,SAAiB,EAAA;AAC9F,EAAA,MAAM7I,KAAK,GAAG,IAAI,CAACpB,aAAa,GAAGwE,MAAM,CAACpD,KAAK,GAAGoD,MAAM,CAACpD,KAAK,CAAC8I,WAAW,EAAE;EAC5E,QAAQ,IAAI,CAACjK,MAAM;AACjB,IAAA,KAAK,aAAa;MAChBiE,KAAK,CAACqB,IAAI,GAAG0E,SAAS;AACtB/F,MAAAA,KAAK,CAACiG,aAAa,GAAG,IAAI,CAAClK,MAAM;AACjC,MAAA,OAAOmB,KAAK,CAACgJ,UAAU,CAAC7E,IAAI,CAAC;AAC/B,IAAA,KAAK,WAAW;MACdrB,KAAK,CAACqB,IAAI,GAAG0E,SAAS;AACtB/F,MAAAA,KAAK,CAACiG,aAAa,GAAG,IAAI,CAAClK,MAAM;AACjC,MAAA,OAAOmB,KAAK,CAACiJ,QAAQ,CAAC9E,IAAI,CAAC;AAC7B,IAAA,KAAK,UAAU;MACbrB,KAAK,CAACqB,IAAI,GAAG0E,SAAS;AACtB/F,MAAAA,KAAK,CAACiG,aAAa,GAAG,IAAI,CAAClK,MAAM;AACjC,MAAA,OAAOmB,KAAK,CAACkJ,QAAQ,CAAC/E,IAAI,CAAC;AAC7B,IAAA,KAAK,MAAM;MACTrB,KAAK,CAACqG,gBAAgB,GAAG,IAAI;AAC7B,MAAA,OAAO,IAAI;AACb,IAAA;MACErG,KAAK,CAACqG,gBAAgB,GAAG,IAAI;AAC7B,MAAA,OAAO,IAAI,CAACtK,MAAM,CAACuE,MAAM,EAAEyF,SAAS,CAAC;AACzC;AACF,CAAC;;AAIC,EAAA,IAAI,CAAC9M,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAoE,iCAAA,CAAO,EAAE,OAAO,CAAC;EAE1B,MAAMsI,QAAQ,GAAGrN,sBAAA,CAAA,IAAI,8EAAS,CAAC8C,MAAM,CAAEkB,CAAC,IAAKA,CAAC,CAAC1B,MAAM,KAAK,KAAK,CAAC,CAACkE,MAAM;AACvE,EAAA,MAAM8G,cAAc,GAAG,CAAC,IAAI,CAACvK,OAAO,IAAI/C,sBAAA,CAAA,IAAI,EAAAO,oCAAA,EAAA,GAAA,CAAc;EAC1D4G,sBAAA,CAAA,IAAI,EAAA5G,oCAAA,EAAiB,KAAK,EAAA,GAAA,CAAA;AAE1B,EAAA,MAAMuM,SAAS,GAAG9M,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAoE,iCAAA,CAAO,CAACd,KAAK;AACnC,EAAA,MAAMmE,IAAI,GAAG,IAAI,CAACvF,aAAa,GAAGiK,SAAS,GAAGA,SAAS,CAACS,iBAAiB,EAAE;EAE3E,IAAIC,QAAQ,GAAG,CAAC;EAChB,IAAIC,KAAK,GAAG,KAAK;AACjB,EAAA,IAAIC,IAAkC;EAEtC,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG3N,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAA2F,mCAAA,CAAS,CAACE,MAAM,EAAEmH,CAAC,EAAE,EAAE;AAC7C,IAAA,MAAM5G,KAAK,GAAG/G,sBAAA,CAAA,IAAI,8EAAS,CAAC2N,CAAC,CAAC;AAC9B,IAAA,MAAMtG,MAAM,GAAG,IAAI,CAACpH,QAAQ,CAAC0N,CAAC,CAAC;IAC/B5G,KAAK,CAACzE,MAAM,GAAG,CAACtC,sBAAA,CAAA,IAAI,+EAAc,CAAAa,IAAA,CAAlB,IAAI,EAAekG,KAAK,EAAEM,MAAM,EAAEe,IAAI,EAAE0E,SAAS,CAAC;AAElE,IAAA,IAAI/F,KAAK,CAACzE,MAAM,KAAK,IAAI,EAAE;AACzBtC,MAAAA,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAiN,wCAAA,CAAkB,CAAA/M,IAAA,CAAtB,IAAI,EAAmBkG,KAAK,CAAC;AAC7Bf,MAAAA,iBAAiB,CAACe,KAAK,EAAE,SAAS,CAAC;AACnCf,MAAAA,iBAAiB,CAACe,KAAK,EAAE,QAAQ,CAAC;AACpC,IAAA,CAAC,MAAM;AACLyG,MAAAA,QAAQ,EAAE;MACV,IAAI,CAACC,KAAK,IAAI,EAAE1G,KAAK,CAACoD,aAAa,YAAY0D,kBAAkB,CAAC,EAAE;AAClEC,QAAAA,cAAc,CAAC/G,KAAK,EAAE,SAAS,CAAC;AAChC0G,QAAAA,KAAK,GAAG,IAAI;AACZK,QAAAA,cAAc,CAAC/G,KAAK,EAAE,QAAQ,CAAC;AAC/B2G,QAAAA,IAAI,GAAG3G,KAAK;AACd,MAAA,CAAC,MAAM;AACLf,QAAAA,iBAAiB,CAACe,KAAK,EAAE,SAAS,CAAC;AACnC,QAAA,IAAI2G,IAAI,EAAE;AACR1H,UAAAA,iBAAiB,CAAC0H,IAAI,EAAE,QAAQ,CAAC;AACnC,QAAA;AACAI,QAAAA,cAAc,CAAC/G,KAAK,EAAE,QAAQ,CAAC;AAC/B2G,QAAAA,IAAI,GAAG3G,KAAK;AACd,MAAA;AACF,IAAA;AACF,EAAA;EAEA,IAAI/G,sBAAA,CAAA,IAAI,EAAAK,4BAAA,EAAA,GAAA,CAAM,EAAE;IACdL,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAqH,uCAAA,CAAiB,CAAAnH,IAAA,CAArB,IAAI,EAAkBb,sBAAA,CAAA,IAAI,EAAAK,4BAAA,EAAA,GAAA,CAAM,EAAEmN,QAAQ,CAAC;AAC7C,EAAA;AAEA,EAAA,MAAMO,MAAM,GAAG/N,sBAAA,CAAA,IAAI,oCAAM,EAAEoH,gBAAgB,CAAC,cAAc,CAAC,IAAIpH,sBAAA,CAAA,IAAI,qCAAO,EAAEoH,gBAAgB,CAAC,cAAc,CAAC,IAAI,EAAE;AAClH,EAAA,KAAK,MAAM4G,KAAK,IAAID,MAAM,EAAE;IAC1BC,KAAK,CAAC1L,MAAM,GAAG,CAAC,GAAG0L,KAAK,CAAC5G,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC6G,KAAK,CAAEjK,CAAC,IAAKA,CAAC,CAAC1B,MAAM,KAAK,IAAI,CAAC;AAC1F,EAAA;AAEA,EAAA,IAAIgL,cAAc,EAAE;AAClBtN,IAAAA,sBAAA,CAAA,IAAI,kFAAiB,CAAAa,IAAA,CAArB,IAAI,EAAkBwM,QAAQ,EAAEG,QAAQ,CAAC;AAC3C,EAAA;AAEAxN,EAAAA,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAA8I,oCAAA,CAAc,CAAA5I,IAAA,CAAlB,IAAI,CAAgB;AACpB,EAAA,OAAO2M,QAAQ;AACjB,CAAC;;AAIC,EAAA,MAAM1J,QAAQ,GAAG,IAAI,CAACjC,eAAe,CAACuE,KAAK,CAACtD,MAAM,CAAEkB,CAAC,IAAKA,CAAC,CAACF,QAAQ,CAAC;AACrE,EAAA,IAAIA,QAAQ,CAAC0C,MAAM,GAAG,CAAC,EAAE;AACvB1C,IAAAA,QAAQ,CAAC+D,OAAO,CAAE7D,CAAC,IAAI;MACrBA,CAAC,CAACF,QAAQ,GAAG,KAAK;AAClB9D,MAAAA,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAiM,4CAAA,CAAsB,CAAA/L,IAAA,CAA1B,IAAI,EAAuBmD,CAAC,CAAC;AAC/B,IAAA,CAAC,CAAC;AACF,IAAA,OAAO,IAAI;AACb,EAAA;AACA,EAAA,OAAO,KAAK;AACd,CAAC;AAGgBkK,uCAAA,GAAA,SAAAA,uCAAAA,CAAAb,QAAgB,EAAEG,QAAgB,EAAA;EACjD,IAAI,CAACxN,sBAAA,CAAA,IAAI,EAAAQ,gCAAA,EAAA,GAAA,CAAU,EAAE;EACrB,IAAIgN,QAAQ,IAAI,CAAC,EAAE;AACjB,IAAA,IAAIH,QAAQ,GAAG,CAAC,IAAI,IAAI,CAAClK,WAAW,EAAE;MACpCyC,gBAAgB,CAACC,QAAQ,CAAC,IAAI,CAAC1C,WAAW,EAAE,QAAQ,CAAC;AACvD,IAAA;AACF,EAAA,CAAC,MAAM,IAAIkK,QAAQ,IAAIG,QAAQ,EAAE;AAC/B,IAAA,MAAMW,OAAO,GAAG,IAAI,CAAC/K,YAAY,YAAYgL,QAAQ,GAAG,IAAI,CAAChL,YAAY,CAACoK,QAAQ,CAAC,GAAG,IAAI,CAACpK,YAAY;AACvG,IAAA,IAAI+K,OAAO,EAAE;AACXvI,MAAAA,gBAAgB,CAACC,QAAQ,CAACsI,OAAO,EAAE,QAAQ,CAAC;AAC9C,IAAA;AACF,EAAA;AACF,CAAC;;EAIC,IAAI,IAAI,CAACvL,YAAY,KAAK,CAAC,IAAI,CAACf,eAAe,CAACW,UAAU,IAAI,CAAC,IAAI,CAACX,eAAe,CAACW,UAAU,CAACsB,QAAQ,CAAC,EAAE;IACxG,MAAMuD,MAAM,GAAGrH,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAA2F,mCAAA,CAAS,CAACvC,IAAI,CAAEC,CAAC,IAAK,CAACA,CAAC,CAAC3B,QAAQ,IAAI2B,CAAC,CAAC1B,MAAM,KAAK,KAAK,CAAC;AAC3E,IAAA,IAAI+E,MAAM,EAAE;AACV,MAAA,IAAI,CAACxF,eAAe,CAACyH,aAAa,CAACjC,MAAM,CAAC;MAC1C,IAAIrH,sBAAA,CAAA,IAAI,EAAAK,4BAAA,EAAA,GAAA,CAAM,EAAE;QACdmJ,sBAAsB,CAACnC,MAAM,EAAErH,sBAAA,CAAA,IAAI,oCAAM,EAAE;AAAEoM,UAAAA,KAAK,EAAE,SAAS;AAAEC,UAAAA,QAAQ,EAAE;AAAS,SAAE,CAAC;AACvF,MAAA;AACF,IAAA;AACF,EAAA;AACF,CAAC;6FAGiBhF,MAAwB,EAAA;AACxCA,EAAAA,MAAM,CAACqF,SAAS,EAAER,IAAI,EAAE;AACxB7E,EAAAA,MAAM,CAACsF,UAAU,EAAET,IAAI,CAAC,SAAS,CAAC;AAClC,EAAA,IAAI7E,MAAM,KAAK,IAAI,CAACxF,eAAe,CAACW,UAAU,EAAE;AAC9C,IAAA,IAAI,CAACX,eAAe,CAACwM,gBAAgB,CAAC,IAAI,CAAC;AAC3CrO,IAAAA,sBAAA,CAAA,IAAI,EAAAW,iCAAA,EAAA,GAAA,EAAAoE,iCAAA,CAAO,EAAEiF,eAAe,CAAC,uBAAuB,CAAC;AACvD,EAAA;AACF,CAAC;AAt3BD;AACgBzK,sBAAA,CAAA+O,MAAM,GAAmBC,GAAG,CAAA,wDAAA,CAAtB;AAStB;AAA+BhP,sBAAA,CAAAO,QAAQ,GAAG,CAAC;AAqDyB0O,UAAA,CAAA,CAAnEC,QAAQ,CAAC;AAAEC,EAAAA,SAAS,EAAE,0BAA0B;AAAEC,EAAAA,IAAI,EAAEhE;AAAO,CAAE,CAAC,CAAgC,EAAApL,sBAAA,CAAAqP,SAAA,EAAA,wBAAA,EAAA,MAAA,CAAA;AAMvDJ,UAAA,CAAA,CAA3CC,QAAQ,CAAC;AAAEE,EAAAA,IAAI,EAAEhE,OAAO;AAAEkE,EAAAA,OAAO,EAAE;AAAI,CAAE,CAAC,CAAkB,EAAAtP,sBAAA,CAAAqP,SAAA,EAAA,UAAA,EAAA,MAAA,CAAA;AAMJJ,UAAA,CAAA,CAAxDC,QAAQ,CAAC;AAAEC,EAAAA,SAAS,EAAE,eAAe;AAAEC,EAAAA,IAAI,EAAEhE;AAAO,CAAE,CAAC,CAAsB,EAAApL,sBAAA,CAAAqP,SAAA,EAAA,cAAA,EAAA,MAAA,CAAA;AAMpBJ,UAAA,CAAA,CAAzDC,QAAQ,CAAC;AAAEC,EAAAA,SAAS,EAAE,gBAAgB;AAAEC,EAAAA,IAAI,EAAEhE;AAAO,CAAE,CAAC,CAAuB,EAAApL,sBAAA,CAAAqP,SAAA,EAAA,eAAA,EAAA,MAAA,CAAA;AAiBhFJ,UAAA,CAAA,CAXCC,QAAQ,CAAC;AACRK,EAAAA,SAAS,EAAE;IACTC,aAAaA,CAAC9K,KAAoB,EAAA;AAChC,MAAA,IAAIA,KAAK,KAAK,IAAI,EAAE,OAAO,UAAU;AACrC,MAAA,IAAIA,KAAK,KAAK,aAAa,IAAIA,KAAK,KAAK,WAAW,IAAIA,KAAK,KAAK,UAAU,IAAIA,KAAK,KAAK,MAAM,EAAE;AAChG,QAAA,OAAOA,KAAK;AACd,MAAA;AACA,MAAA,OAAO,UAAU;AACnB,IAAA;AACD;CACF,CAAC,CACkG,EAAA1E,sBAAA,CAAAqP,SAAA,EAAA,QAAA,EAAA,MAAA,CAAA;AAMvEJ,UAAA,CAAA,CAA5BC,QAAQ,CAAC;AAAEE,EAAAA,IAAI,EAAEhE;CAAS,CAAC,CAAiB,EAAApL,sBAAA,CAAAqP,SAAA,EAAA,SAAA,EAAA,MAAA,CAAA;AAMWJ,UAAA,CAAA,CAAvDC,QAAQ,CAAC;AAAEC,EAAAA,SAAS,EAAE,cAAc;AAAEC,EAAAA,IAAI,EAAEhE;AAAO,CAAE,CAAC,CAAoB,EAAApL,sBAAA,CAAAqP,SAAA,EAAA,YAAA,EAAA,MAAA,CAAA;AAMnBJ,UAAA,CAAA,CAAvDC,QAAQ,CAAC;AAAEC,EAAAA,SAAS,EAAE,cAAc;AAAEC,EAAAA,IAAI,EAAEhE;AAAO,CAAE,CAAC,CAAqB,EAAApL,sBAAA,CAAAqP,SAAA,EAAA,aAAA,EAAA,MAAA,CAAA;AAMlCJ,UAAA,CAAA,CAAzCC,QAAQ,CAAC;AAAEC,EAAAA,SAAS,EAAE;CAAiB,CAAC,CAA6B,EAAAnP,sBAAA,CAAAqP,SAAA,EAAA,cAAA,EAAA,MAAA,CAAA;AAM5BJ,UAAA,CAAA,CAAzCC,QAAQ,CAAC;AAAEC,EAAAA,SAAS,EAAE;CAAiB,CAAC,CAA4B,EAAAnP,sBAAA,CAAAqP,SAAA,EAAA,aAAA,EAAA,MAAA,CAAA;AAM3BJ,UAAA,CAAA,CAAzCC,QAAQ,CAAC;AAAEC,EAAAA,SAAS,EAAE;CAAiB,CAAC,CACpB,EAAAnP,sBAAA,CAAAqP,SAAA,EAAA,cAAA,EAAA,MAAA,CAAA;AAMmBJ,UAAA,CAAA,CAAvCC,QAAQ,CAAC;AAAEC,EAAAA,SAAS,EAAE;CAAe,CAAC,CAAiB,EAAAnP,sBAAA,CAAAqP,SAAA,EAAA,YAAA,EAAA,MAAA,CAAA;AA9I7CrP,sBAAsB,GAAAM,wBAAA,GAAA2O,UAAA,CAAA,CADlCQ,aAAa,CAAC,kBAAkB,CAAC,CACrB,EAAAzP,sBAAsB,CAw3BlC;;;;"}
@@ -3,5 +3,5 @@
3
3
  * Copyright (c) 2025–2026 matraic
4
4
  * See LICENSE file in the project root for full license text.
5
5
  */
6
- import{__classPrivateFieldGet as t,__classPrivateFieldSet as e,__decorate as i}from"tslib";import{LitElement as s,html as a,css as n}from"lit";import{property as h}from"lit/decorators.js";import{HtmlFor as o,MutationController as l,setCustomState as r,deleteCustomState as c,prefersReducedMotion as d,scrollIntoViewIfNeeded as f,forcedColorsActive as u,addCustomState as p,customElement as m}from"@m3e/web/core";import{ListKeyManager as v,M3eLiveAnnouncer as g}from"@m3e/web/core/a11y";import{M3eOptGroupElement as b}from"@m3e/web/option";var w,y,E,L,M,k,A,C,S,_,I,K,W,D,N,P,T,q,x,U,B,O,H,$,R,j,F,V,X,z,G,J,Q,Y,Z,tt,et,it,st,at,nt,ht,ot,lt,rt,ct,dt,ft,ut,pt,mt,vt,gt;let bt=gt=class extends(o(s)){constructor(){super(),w.add(this),y.set(this,`m3e-autocomplete-${gt.__nextId}`),E.set(this,`${t(this,y,"f")}-menu`),this._options=new Array,L.set(this,void 0),M.set(this,!1),k.set(this,void 0),A.set(this,!1),C.set(this,!1),S.set(this,!1),_.set(this,void 0),I.set(this,()=>t(this,w,"m",X).call(this)),K.set(this,()=>t(this,w,"m",z).call(this)),W.set(this,()=>t(this,w,"m",G).call(this)),D.set(this,()=>t(this,w,"m",J).call(this)),N.set(this,e=>t(this,w,"m",Z).call(this,e)),P.set(this,e=>t(this,w,"m",Q).call(this,e)),T.set(this,()=>t(this,w,"m",Y).call(this)),q.set(this,e=>t(this,w,"m",it).call(this,e)),x.set(this,e=>t(this,w,"m",tt).call(this,e)),U.set(this,e=>t(this,w,"m",et).call(this,e)),B.set(this,void 0),this._listKeyManager=(new v).withWrap().withHomeAndEnd().withPageUpAndDown().withVerticalOrientation().withSkipPredicate(t=>t.disabled||!0===t.hidden).onActiveItemChange(()=>{this._listKeyManager.activeItem&&t(this,w,"m",lt).call(this,this._listKeyManager.activeItem)}),this.hideSelectionIndicator=!1,this.required=!1,this.autoActivate=!1,this.caseSensitive=!1,this.filter="contains",this.loading=!1,this.hideNoData=!1,this.hideLoading=!1,this.loadingLabel="Loading...",this.noDataLabel="No options",this.resultsLabel=t=>`${t} options`,this.panelClass="",new l(this,{config:{childList:!0,subtree:!0},callback:()=>t(this,w,"m",V).call(this)})}get options(){return this._options??[]}get selected(){return this.options.find(t=>t.selected)??null}get value(){const t=this.selected;return t&&!t.disabled?t.value:null}attach(e){e instanceof HTMLInputElement&&(super.attach(e),e.autocomplete="off",e.role="combobox",e.ariaAutoComplete="list",e.ariaExpanded="false",e.addEventListener("click",t(this,I,"f")),e.addEventListener("focus",t(this,W,"f")),e.addEventListener("blur",t(this,D,"f")),e.addEventListener("keydown",t(this,N,"f")),e.addEventListener("input",t(this,P,"f")),e.addEventListener("change",t(this,T,"f")),t(this,w,"a",F)?.addEventListener("pointerdown",t(this,K,"f")))}detach(){this.control&&(t(this,w,"a",F)?.removeEventListener("pointerdown",t(this,K,"f")),this.control.role=null,this.control.ariaAutoComplete=null,this.control.ariaExpanded=null,this.control.removeEventListener("click",t(this,I,"f")),this.control.removeEventListener("focus",t(this,W,"f")),this.control.removeEventListener("blur",t(this,D,"f")),this.control.removeEventListener("keydown",t(this,N,"f")),this.control.removeEventListener("input",t(this,P,"f")),this.control.removeEventListener("change",t(this,T,"f"))),super.detach()}clear(e=!1){t(this,w,"a",H)&&(t(this,w,"a",H).value="",t(this,w,"m",ut).call(this)&&this.dispatchEvent(new Event("change",{bubbles:!0})),t(this,w,"m",ft).call(this),e?t(this,w,"a",H).focus():t(this,w,"m",ot).call(this))}connectedCallback(){super.connectedCallback(),t(this,w,"m",V).call(this)}update(e){super.update(e),e.has("hideNoData")&&this.hideNoData&&t(this,k,"f")&&r(t(this,k,"f"),"--no-data",!1),e.has("loading")&&(this.loading?t(this,S,"f")&&(this.loadingLabel&&g.announce(this.loadingLabel,"polite"),!t(this,k,"f")&&t(this,w,"a",j)&&t(this,w,"m",at).call(this)):t(this,k,"f")&&!t(this,w,"a",j)?t(this,w,"m",ot).call(this):t(this,k,"f")?c(t(this,k,"f"),"--loading"):t(this,S,"f")&&t(this,w,"m",at).call(this))}render(){return a`<div class="options" aria-hidden="true"><slot></slot></div>`}};y=new WeakMap,E=new WeakMap,L=new WeakMap,M=new WeakMap,k=new WeakMap,A=new WeakMap,C=new WeakMap,S=new WeakMap,_=new WeakMap,I=new WeakMap,K=new WeakMap,W=new WeakMap,D=new WeakMap,N=new WeakMap,P=new WeakMap,T=new WeakMap,q=new WeakMap,x=new WeakMap,U=new WeakMap,B=new WeakMap,w=new WeakSet,O=function(){return this._listKeyManager?.items??[]},H=function(){return this.control?this.control:null},$=function(){return null!==(t(this,L,"f")?.querySelector("[slot='no-data']")??null)},R=function(){return null!==(t(this,L,"f")?.querySelector("[slot='loading']")??null)},j=function(){return t(this,w,"a",O).some(t=>!1===t.hidden)||this.loading&&!this.hideLoading&&this.loadingLabel.length>0||!this.loading&&!this.hideNoData&&this.noDataLabel.length>0},F=function(){return this.control?.closest("m3e-form-field")??null},V=async function(){t(this,_,"f")&&t(this,_,"f").abort();const i=new AbortController;e(this,_,i,"f");const s=[...this.querySelectorAll("m3e-option")];for(const t of s){if(i.signal.aborted)break;t.isUpdatePending&&await t.updateComplete}if(i.signal.aborted)return;this._options=s,e(this,L,this.cloneNode(!0),"f");const{added:a}=this._listKeyManager.setItems([...t(this,L,"f").querySelectorAll("m3e-option")]);if(a.forEach(e=>{e.id=e.id||`${t(this,y,"f")}-option-${this._listKeyManager.items.indexOf(e)}`,r(e,"--hide-selection-indicator",this.hideSelectionIndicator)}),t(this,k,"f")){const e=t(this,w,"m",ft).call(this);t(this,w,"m",nt).call(this),t(this,w,"a",j)?t(this,w,"m",ht).call(this,t(this,k,"f"),e):t(this,w,"m",ot).call(this)}},X=function(){e(this,M,!0,"f"),t(this,w,"m",at).call(this)},z=function(){e(this,A,!0,"f")},G=function(){e(this,S,!0,"f"),e(this,M,!0,"f"),0!=this.options.length||this.control.readOnly||this.dispatchEvent(new CustomEvent("query",{detail:{term:t(this,w,"a",H)?.value??""},bubbles:!0,composed:!0})),t(this,w,"m",at).call(this)},J=function(){e(this,S,!1,"f"),t(this,A,"f")||t(this,w,"m",ot).call(this),e(this,A,!1,"f")},Q=function(i){if(t(this,w,"a",H)&&!i.defaultPrevented){this.dispatchEvent(new CustomEvent("query",{detail:{term:t(this,w,"a",H).value},bubbles:!0,composed:!0})),""===t(this,w,"a",H).value&&t(this,w,"m",ut).call(this)&&this.dispatchEvent(new Event("change",{bubbles:!0})),e(this,C,!0,"f");try{t(this,k,"f")?(t(this,w,"m",ft).call(this),t(this,w,"a",j)||t(this,w,"m",ot).call(this)):t(this,w,"m",at).call(this)}finally{e(this,C,!1,"f"),t(this,w,"a",F)?.notifyControlStateChange(!0)}}},Y=function(){if(t(this,w,"a",H)){const e=this.selected;this.required?t(this,w,"a",H).value=e?.label??"":e&&e.label!==t(this,w,"a",H).value&&t(this,w,"m",ut).call(this)&&this.dispatchEvent(new Event("change",{bubbles:!0}))}},Z=function(i){if(!i.defaultPrevented)switch(e(this,M,!1,"f"),i.key){case"Backspace":case"Delete":t(this,w,"a",H)&&!t(this,w,"a",H).value&&t(this,w,"m",ot).call(this);break;case"Enter":t(this,k,"f")&&this._listKeyManager.activeItem?(i.preventDefault(),t(this,w,"m",ct).call(this,this._listKeyManager.activeItem),d()?t(this,w,"m",ot).call(this):setTimeout(()=>t(this,w,"m",ot).call(this),150)):t(this,k,"f")&&setTimeout(()=>{t(this,w,"a",H)&&!t(this,w,"a",H).value&&t(this,w,"m",ot).call(this)});break;case"Escape":case"Tab":t(this,w,"m",ot).call(this);break;case"Up":case"ArrowUp":i.altKey?t(this,w,"m",ot).call(this):this._listKeyManager.onKeyDown(i);break;case"Down":case"ArrowDown":t(this,k,"f")?this._listKeyManager.onKeyDown(i):(t(this,w,"m",at).call(this),i.preventDefault());break;default:this._listKeyManager.onKeyDown(i)}},tt=function(t){if(e(this,B,void 0,"f"),2===t.button)return;t.preventDefault(),t.stopImmediatePropagation();const i=t.composedPath().find(t=>t instanceof HTMLElement&&"M3E-OPTION"===t.tagName);i&&!i.disabled&&e(this,B,i,"f")},et=function(i){const s=t(this,B,"f");if(e(this,B,void 0,"f"),2===i.button)return;if(!s)return;const a=i.composedPath().find(t=>t instanceof HTMLElement&&"M3E-OPTION"===t.tagName);a===s&&(this._listKeyManager.setActiveItem(a),t(this,w,"m",ct).call(this,a)),d()?t(this,w,"m",ot).call(this):setTimeout(()=>t(this,w,"m",ot).call(this),150)},it=function(e){if(t(this,k,"f"))if("closed"!==e.newState){const i=t(this,w,"a",O).find(t=>t.selected&&!t.disabled);i?(this._listKeyManager.setActiveItem(i),f(i,t(this,k,"f"))):t(this,w,"m",mt).call(this),this.dispatchEvent(new ToggleEvent("toggle",{oldState:e.oldState,newState:e.newState}))}else d()?t(this,w,"m",st).call(this,e):setTimeout(()=>t(this,w,"m",st).call(this,e),100)},st=function(i){t(this,k,"f")&&(t(this,L,"f")?.replaceChildren(...t(this,k,"f").childNodes),t(this,k,"f").remove(),t(this,k,"f").removeEventListener("toggle",t(this,q,"f")),t(this,k,"f").removeEventListener("pointerdown",t(this,x,"f")),t(this,k,"f").removeEventListener("pointerup",t(this,U,"f")),e(this,k,void 0,"f"),t(this,w,"a",H)&&(t(this,w,"a",H).ariaExpanded="false",t(this,w,"a",H).removeAttribute("aria-controls"),t(this,w,"a",H).removeAttribute("aria-owns"),t(this,w,"a",H).removeAttribute("aria-activedescendant")),this.requestUpdate(),t(this,w,"a",F)?.notifyControlStateChange(),this.dispatchEvent(new ToggleEvent("toggle",{oldState:i.oldState,newState:i.newState})),"input"===t(this,w,"a",H)?.slot&&"M3E-INPUT-CHIP-SET"===t(this,w,"a",H).parentElement?.tagName&&t(this,w,"m",ut).call(this))},at=function(){if(t(this,k,"f")||!t(this,w,"a",H)||t(this,w,"a",H).readOnly||t(this,w,"a",H).disabled)return;const i=t(this,w,"m",ft).call(this);if(!t(this,w,"a",j))return;if(e(this,k,document.createElement("m3e-option-panel"),"f"),t(this,k,"f").id=t(this,E,"f"),this.panelClass)for(const e of this.panelClass.split(/\s+/).map(t=>t.trim()).filter(Boolean))t(this,k,"f").classList.add(e);t(this,k,"f").style.overflowX="hidden",t(this,k,"f").scrollStrategy="reposition",t(this,k,"f").fitAnchorWidth=!0,t(this,k,"f").addEventListener("toggle",t(this,q,"f")),t(this,k,"f").addEventListener("pointerdown",t(this,x,"f")),t(this,k,"f").addEventListener("pointerup",t(this,U,"f")),t(this,w,"m",nt).call(this),t(this,w,"m",ht).call(this,t(this,k,"f"),i),(t(this,w,"a",F)??t(this,w,"a",H)).insertAdjacentElement("afterend",t(this,k,"f")),t(this,w,"a",H).setAttribute("aria-controls",t(this,E,"f")),t(this,w,"a",H).setAttribute("aria-owns",t(this,E,"f")),t(this,w,"a",F)?.notifyControlStateChange(),this._listKeyManager.activeItem&&this.autoActivate&&t(this,w,"m",lt).call(this,this._listKeyManager.activeItem,!0);const s=t(this,w,"a",H);setTimeout(()=>t(this,k,"f")?.show(s,t(this,w,"a",F)?.menuAnchor))},nt=function(){if(!t(this,L,"f")||!t(this,k,"f"))return;const e=[...t(this,L,"f").childNodes];if(!t(this,w,"a",$)&&this.noDataLabel){const t=document.createElement("span");t.slot="no-data",t.textContent=this.noDataLabel,e.push(t)}if(!t(this,w,"a",R)&&this.loadingLabel){const t=document.createElement("span");t.slot="loading",t.textContent=this.loadingLabel,e.push(t)}t(this,k,"f").replaceChildren(...e)},ht=function(t,e){r(t,"--loading",this.loading),r(t,"--no-data",0==e)},ot=function(){t(this,k,"f")?.hide()},lt=function(e,i=!1){if(t(this,w,"a",H)&&(t(this,w,"a",H).setAttribute("aria-activedescendant",e.id),t(this,k,"f"))){f(e,t(this,k,"f"),{block:"nearest",behavior:"instant"});const s=i||!t(this,M,"f")&&(t(this,w,"a",H).matches(":focus-visible")||u());t(this,w,"a",O).forEach(t=>{t===e&&s?(t.focusRing?.show(),t.stateLayer?.show("focused")):(t.focusRing?.hide(),t.stateLayer?.hide("focused"))})}},rt=async function(t){const e=this._options[this._listKeyManager.items.indexOf(t)];e&&(e.selected=t.selected,e.isUpdatePending&&await e.updateComplete)},ct=async function(e){e.selected||(e.selected=!0,await t(this,w,"m",rt).call(this,e),e.isUpdatePending&&await e.updateComplete,this.requestUpdate(),this.isUpdatePending&&await this.updateComplete,t(this,w,"a",H)&&(t(this,w,"a",H).value=e.label),this.dispatchEvent(new Event("change",{bubbles:!0})),t(this,w,"a",F)?.notifyControlStateChange(!0))},dt=function(t,e,i,s){const a=this.caseSensitive?e.value:e.value.toLowerCase();switch(this.filter){case"starts-with":return t.term=s,t.highlightMode=this.filter,a.startsWith(i);case"ends-with":return t.term=s,t.highlightMode=this.filter,a.endsWith(i);case"contains":return t.term=s,t.highlightMode=this.filter,a.includes(i);case"none":return t.disableHighlight=!0,!0;default:return t.disableHighlight=!0,this.filter(e,s)}},ft=function(){if(!t(this,w,"a",H))return 0;const i=t(this,w,"a",O).filter(t=>!1===t.hidden).length,s=!this.loading&&t(this,C,"f");e(this,C,!1,"f");const a=t(this,w,"a",H).value,n=this.caseSensitive?a:a.toLocaleLowerCase();let h,o=0,l=!1;for(let e=0;e<t(this,w,"a",O).length;e++){const i=t(this,w,"a",O)[e],s=this._options[e];i.hidden=!t(this,w,"m",dt).call(this,i,s,n,a),!0===i.hidden?(t(this,w,"m",vt).call(this,i),c(i,"--first"),c(i,"--last")):(o++,l||i.parentElement instanceof b?(c(i,"--first"),h&&c(h,"--last"),p(i,"--last"),h=i):(p(i,"--first"),l=!0,p(i,"--last"),h=i))}t(this,k,"f")&&t(this,w,"m",ht).call(this,t(this,k,"f"),o);const r=t(this,k,"f")?.querySelectorAll("m3e-optgroup")??t(this,L,"f")?.querySelectorAll("m3e-optgroup")??[];for(const t of r)t.hidden=[...t.querySelectorAll("m3e-option")].every(t=>!0===t.hidden);return s&&t(this,w,"m",pt).call(this,i,o),t(this,w,"m",mt).call(this),o},ut=function(){const e=this._listKeyManager.items.filter(t=>t.selected);return e.length>0&&(e.forEach(e=>{e.selected=!1,t(this,w,"m",rt).call(this,e)}),!0)},pt=function(e,i){if(t(this,S,"f"))if(0==i)e>0&&this.noDataLabel&&g.announce(this.noDataLabel,"polite");else if(e!=i){const t=this.resultsLabel instanceof Function?this.resultsLabel(i):this.resultsLabel;t&&g.announce(t,"polite")}},mt=function(){if(this.autoActivate&&(!this._listKeyManager.activeItem||!this._listKeyManager.activeItem.selected)){const e=t(this,w,"a",O).find(t=>!t.disabled&&!1===t.hidden);e&&(this._listKeyManager.setActiveItem(e),t(this,k,"f")&&f(e,t(this,k,"f"),{block:"nearest",behavior:"instant"}))}},vt=function(e){e.focusRing?.hide(),e.stateLayer?.hide("focused"),e===this._listKeyManager.activeItem&&(this._listKeyManager.updateActiveItem(null),t(this,w,"a",H)?.removeAttribute("aria-activedescendant"))},bt.styles=n`:host { display: contents; } .options { display: none; }`,bt.__nextId=0,i([h({attribute:"hide-selection-indicator",type:Boolean})],bt.prototype,"hideSelectionIndicator",void 0),i([h({type:Boolean,reflect:!0})],bt.prototype,"required",void 0),i([h({attribute:"auto-activate",type:Boolean})],bt.prototype,"autoActivate",void 0),i([h({attribute:"case-sensitive",type:Boolean})],bt.prototype,"caseSensitive",void 0),i([h({converter:{fromAttribute:t=>null===t?"contains":"starts-with"===t||"ends-with"===t||"contains"===t||"none"===t?t:"contains"}})],bt.prototype,"filter",void 0),i([h({type:Boolean})],bt.prototype,"loading",void 0),i([h({attribute:"hide-no-data",type:Boolean})],bt.prototype,"hideNoData",void 0),i([h({attribute:"hide-loading",type:Boolean})],bt.prototype,"hideLoading",void 0),i([h({attribute:"loading-label"})],bt.prototype,"loadingLabel",void 0),i([h({attribute:"no-data-label"})],bt.prototype,"noDataLabel",void 0),i([h({attribute:"results-label"})],bt.prototype,"resultsLabel",void 0),i([h({attribute:"panel-class"})],bt.prototype,"panelClass",void 0),bt=gt=i([m("m3e-autocomplete")],bt);export{bt as M3eAutocompleteElement};
6
+ import{__classPrivateFieldGet as t,__classPrivateFieldSet as e,__decorate as i}from"tslib";import{LitElement as s,html as a,css as n}from"lit";import{property as h}from"lit/decorators.js";import{HtmlFor as o,MutationController as l,setCustomState as r,deleteCustomState as c,prefersReducedMotion as d,scrollIntoViewIfNeeded as f,forcedColorsActive as u,addCustomState as p,customElement as m}from"@m3e/web/core";import{ListKeyManager as v,M3eLiveAnnouncer as g}from"@m3e/web/core/a11y";import{M3eOptionElement as b,M3eOptGroupElement as w}from"@m3e/web/option";var y,E,L,M,k,A,C,S,_,I,K,W,D,P,N,T,q,x,O,U,B,H,$,R,j,F,V,X,z,G,J,Q,Y,Z,tt,et,it,st,at,nt,ht,ot,lt,rt,ct,dt,ft,ut,pt,mt,vt,gt,bt,wt;let yt=wt=class extends(o(s)){constructor(){super(),y.add(this),E.set(this,`m3e-autocomplete-${wt.__nextId}`),L.set(this,`${t(this,E,"f")}-menu`),this._options=new Array,M.set(this,void 0),k.set(this,!1),A.set(this,void 0),C.set(this,!1),S.set(this,!1),_.set(this,!1),I.set(this,void 0),K.set(this,()=>t(this,y,"m",G).call(this)),W.set(this,()=>t(this,y,"m",J).call(this)),D.set(this,()=>t(this,y,"m",Q).call(this)),P.set(this,()=>t(this,y,"m",Y).call(this)),N.set(this,e=>t(this,y,"m",et).call(this,e)),T.set(this,e=>t(this,y,"m",Z).call(this,e)),q.set(this,()=>t(this,y,"m",tt).call(this)),x.set(this,e=>t(this,y,"m",at).call(this,e)),O.set(this,e=>t(this,y,"m",it).call(this,e)),U.set(this,e=>t(this,y,"m",st).call(this,e)),B.set(this,void 0),this._listKeyManager=(new v).withWrap().withHomeAndEnd().withPageUpAndDown().withVerticalOrientation().withSkipPredicate(t=>t.disabled||!0===t.hidden).onActiveItemChange(()=>{this._listKeyManager.activeItem&&t(this,y,"m",ct).call(this,this._listKeyManager.activeItem)}),this.hideSelectionIndicator=!1,this.required=!1,this.autoActivate=!1,this.caseSensitive=!1,this.filter="contains",this.loading=!1,this.hideNoData=!1,this.hideLoading=!1,this.loadingLabel="Loading...",this.noDataLabel="No options",this.resultsLabel=t=>`${t} options`,this.panelClass="",new l(this,{config:{childList:!0,subtree:!0},callback:()=>t(this,y,"m",z).call(this)})}get options(){return this._options??[]}get selected(){return this.options.find(t=>t.selected)??null}get value(){const t=this.selected;return t&&!t.disabled?t.value:null}attach(e){e instanceof HTMLInputElement&&(super.attach(e),e.autocomplete="off",e.role="combobox",e.ariaAutoComplete="list",e.ariaExpanded="false",e.addEventListener("click",t(this,K,"f")),e.addEventListener("focus",t(this,D,"f")),e.addEventListener("blur",t(this,P,"f")),e.addEventListener("keydown",t(this,N,"f")),e.addEventListener("input",t(this,T,"f")),e.addEventListener("change",t(this,q,"f")),t(this,y,"a",V)?.addEventListener("pointerdown",t(this,W,"f")))}detach(){this.control&&(t(this,y,"a",V)?.removeEventListener("pointerdown",t(this,W,"f")),this.control.role=null,this.control.ariaAutoComplete=null,this.control.ariaExpanded=null,this.control.removeEventListener("click",t(this,K,"f")),this.control.removeEventListener("focus",t(this,D,"f")),this.control.removeEventListener("blur",t(this,P,"f")),this.control.removeEventListener("keydown",t(this,N,"f")),this.control.removeEventListener("input",t(this,T,"f")),this.control.removeEventListener("change",t(this,q,"f"))),super.detach()}clear(e=!1){t(this,y,"a",$)&&(t(this,y,"a",$).value="",t(this,y,"m",mt).call(this)&&this.dispatchEvent(new Event("change",{bubbles:!0})),t(this,y,"m",pt).call(this),e?t(this,y,"a",$).focus():t(this,y,"m",rt).call(this))}connectedCallback(){super.connectedCallback(),t(this,y,"m",z).call(this)}update(e){super.update(e),e.has("hideNoData")&&this.hideNoData&&t(this,A,"f")&&r(t(this,A,"f"),"--no-data",!1),e.has("loading")&&(this.loading?t(this,_,"f")&&(this.loadingLabel&&g.announce(this.loadingLabel,"polite"),!t(this,A,"f")&&t(this,y,"a",F)&&t(this,y,"m",ht).call(this)):t(this,A,"f")&&!t(this,y,"a",F)?t(this,y,"m",rt).call(this):t(this,A,"f")?c(t(this,A,"f"),"--loading"):t(this,_,"f")&&t(this,y,"m",ht).call(this))}render(){return a`<div class="options" aria-hidden="true" @state-change="${t(this,y,"m",X)}"><slot></slot></div>`}};E=new WeakMap,L=new WeakMap,M=new WeakMap,k=new WeakMap,A=new WeakMap,C=new WeakMap,S=new WeakMap,_=new WeakMap,I=new WeakMap,K=new WeakMap,W=new WeakMap,D=new WeakMap,P=new WeakMap,N=new WeakMap,T=new WeakMap,q=new WeakMap,x=new WeakMap,O=new WeakMap,U=new WeakMap,B=new WeakMap,y=new WeakSet,H=function(){return this._listKeyManager?.items??[]},$=function(){return this.control?this.control:null},R=function(){return null!==(t(this,M,"f")?.querySelector("[slot='no-data']")??null)},j=function(){return null!==(t(this,M,"f")?.querySelector("[slot='loading']")??null)},F=function(){return t(this,y,"a",H).some(t=>!1===t.hidden)||this.loading&&!this.hideLoading&&this.loadingLabel.length>0||!this.loading&&!this.hideNoData&&this.noDataLabel.length>0},V=function(){return this.control?.closest("m3e-form-field")??null},X=function(e){if(!(e.target instanceof b))return;e.stopImmediatePropagation();const i=this.options.indexOf(e.target);if(-1==i)return;const s=t(this,y,"a",H)[i];s&&(s.disabled=e.target.disabled,s.selected=e.target.selected)},z=async function(){t(this,I,"f")&&t(this,I,"f").abort();const i=new AbortController;e(this,I,i,"f");const s=[...this.querySelectorAll("m3e-option")];for(const t of s){if(i.signal.aborted)break;t.isUpdatePending&&await t.updateComplete}if(i.signal.aborted)return;this._options=s,e(this,M,this.cloneNode(!0),"f");const{added:a}=this._listKeyManager.setItems([...t(this,M,"f").querySelectorAll("m3e-option")]);if(a.forEach(e=>{e.id=e.id||`${t(this,E,"f")}-option-${this._listKeyManager.items.indexOf(e)}`,r(e,"--hide-selection-indicator",this.hideSelectionIndicator)}),t(this,A,"f")){const e=t(this,y,"m",pt).call(this);t(this,y,"m",ot).call(this),t(this,y,"a",F)?t(this,y,"m",lt).call(this,t(this,A,"f"),e):t(this,y,"m",rt).call(this)}},G=function(){e(this,k,!0,"f"),t(this,y,"m",ht).call(this)},J=function(){e(this,C,!0,"f")},Q=function(){e(this,_,!0,"f"),e(this,k,!0,"f"),0!=this.options.length||this.control.readOnly||this.dispatchEvent(new CustomEvent("query",{detail:{term:t(this,y,"a",$)?.value??""},bubbles:!0,composed:!0})),t(this,y,"m",ht).call(this)},Y=function(){e(this,_,!1,"f"),t(this,C,"f")||t(this,y,"m",rt).call(this),e(this,C,!1,"f")},Z=function(i){if(t(this,y,"a",$)&&!i.defaultPrevented){this.dispatchEvent(new CustomEvent("query",{detail:{term:t(this,y,"a",$).value},bubbles:!0,composed:!0})),""===t(this,y,"a",$).value&&t(this,y,"m",mt).call(this)&&this.dispatchEvent(new Event("change",{bubbles:!0})),e(this,S,!0,"f");try{t(this,A,"f")?(t(this,y,"m",pt).call(this),t(this,y,"a",F)||t(this,y,"m",rt).call(this)):t(this,y,"m",ht).call(this)}finally{e(this,S,!1,"f"),t(this,y,"a",V)?.notifyControlStateChange(!0)}}},tt=function(){if(t(this,y,"a",$)){const e=this.selected;this.required?t(this,y,"a",$).value=e?.label??"":e&&e.label!==t(this,y,"a",$).value&&t(this,y,"m",mt).call(this)&&this.dispatchEvent(new Event("change",{bubbles:!0}))}},et=function(i){if(!i.defaultPrevented)switch(e(this,k,!1,"f"),i.key){case"Backspace":case"Delete":t(this,y,"a",$)&&!t(this,y,"a",$).value&&t(this,y,"m",rt).call(this);break;case"Enter":t(this,A,"f")&&this._listKeyManager.activeItem?(i.preventDefault(),t(this,y,"m",ft).call(this,this._listKeyManager.activeItem),d()?t(this,y,"m",rt).call(this):setTimeout(()=>t(this,y,"m",rt).call(this),150)):t(this,A,"f")&&setTimeout(()=>{t(this,y,"a",$)&&!t(this,y,"a",$).value&&t(this,y,"m",rt).call(this)});break;case"Escape":case"Tab":t(this,y,"m",rt).call(this);break;case"Up":case"ArrowUp":i.altKey?t(this,y,"m",rt).call(this):this._listKeyManager.onKeyDown(i);break;case"Down":case"ArrowDown":t(this,A,"f")?this._listKeyManager.onKeyDown(i):(t(this,y,"m",ht).call(this),i.preventDefault());break;default:this._listKeyManager.onKeyDown(i)}},it=function(t){if(e(this,B,void 0,"f"),2===t.button)return;t.preventDefault(),t.stopImmediatePropagation();const i=t.composedPath().find(t=>t instanceof HTMLElement&&"M3E-OPTION"===t.tagName);i&&!i.disabled&&e(this,B,i,"f")},st=function(i){const s=t(this,B,"f");if(e(this,B,void 0,"f"),2===i.button)return;if(!s)return;const a=i.composedPath().find(t=>t instanceof HTMLElement&&"M3E-OPTION"===t.tagName);a===s&&(this._listKeyManager.setActiveItem(a),t(this,y,"m",ft).call(this,a)),d()?t(this,y,"m",rt).call(this):setTimeout(()=>t(this,y,"m",rt).call(this),150)},at=function(e){if(t(this,A,"f"))if("closed"!==e.newState){const i=t(this,y,"a",H).find(t=>t.selected&&!t.disabled);i?(this._listKeyManager.setActiveItem(i),f(i,t(this,A,"f"))):t(this,y,"m",gt).call(this),this.dispatchEvent(new ToggleEvent("toggle",{oldState:e.oldState,newState:e.newState}))}else d()?t(this,y,"m",nt).call(this,e):setTimeout(()=>t(this,y,"m",nt).call(this,e),100)},nt=function(i){t(this,A,"f")&&(t(this,M,"f")?.replaceChildren(...t(this,A,"f").childNodes),t(this,A,"f").remove(),t(this,A,"f").removeEventListener("toggle",t(this,x,"f")),t(this,A,"f").removeEventListener("pointerdown",t(this,O,"f")),t(this,A,"f").removeEventListener("pointerup",t(this,U,"f")),e(this,A,void 0,"f"),t(this,y,"a",$)&&(t(this,y,"a",$).ariaExpanded="false",t(this,y,"a",$).removeAttribute("aria-controls"),t(this,y,"a",$).removeAttribute("aria-owns"),t(this,y,"a",$).removeAttribute("aria-activedescendant")),this.requestUpdate(),t(this,y,"a",V)?.notifyControlStateChange(),this.dispatchEvent(new ToggleEvent("toggle",{oldState:i.oldState,newState:i.newState})),"input"===t(this,y,"a",$)?.slot&&"M3E-INPUT-CHIP-SET"===t(this,y,"a",$).parentElement?.tagName&&t(this,y,"m",mt).call(this))},ht=function(){if(t(this,A,"f")||!t(this,y,"a",$)||t(this,y,"a",$).readOnly||t(this,y,"a",$).disabled)return;const i=t(this,y,"m",pt).call(this);if(!t(this,y,"a",F))return;if(e(this,A,document.createElement("m3e-option-panel"),"f"),t(this,A,"f").id=t(this,L,"f"),this.panelClass)for(const e of this.panelClass.split(/\s+/).map(t=>t.trim()).filter(Boolean))t(this,A,"f").classList.add(e);t(this,A,"f").style.overflowX="hidden",t(this,A,"f").scrollStrategy="reposition",t(this,A,"f").fitAnchorWidth=!0,t(this,A,"f").addEventListener("toggle",t(this,x,"f")),t(this,A,"f").addEventListener("pointerdown",t(this,O,"f")),t(this,A,"f").addEventListener("pointerup",t(this,U,"f")),t(this,y,"m",ot).call(this),t(this,y,"m",lt).call(this,t(this,A,"f"),i),(t(this,y,"a",V)??t(this,y,"a",$)).insertAdjacentElement("afterend",t(this,A,"f")),t(this,y,"a",$).setAttribute("aria-controls",t(this,L,"f")),t(this,y,"a",$).setAttribute("aria-owns",t(this,L,"f")),t(this,y,"a",V)?.notifyControlStateChange(),this._listKeyManager.activeItem&&this.autoActivate&&t(this,y,"m",ct).call(this,this._listKeyManager.activeItem,!0);const s=t(this,y,"a",$);setTimeout(()=>t(this,A,"f")?.show(s,t(this,y,"a",V)?.menuAnchor))},ot=function(){if(!t(this,M,"f")||!t(this,A,"f"))return;const e=[...t(this,M,"f").childNodes];if(!t(this,y,"a",R)&&this.noDataLabel){const t=document.createElement("span");t.slot="no-data",t.translate=!1;const i=document.createElement("span");i.translate=!0,i.textContent=this.noDataLabel,t.append(i),e.push(t)}if(!t(this,y,"a",j)&&this.loadingLabel){const t=document.createElement("span");t.slot="loading",t.translate=!1;const i=document.createElement("span");i.translate=!0,i.textContent=this.loadingLabel,t.append(i),e.push(t)}t(this,A,"f").replaceChildren(...e)},lt=function(t,e){r(t,"--loading",this.loading),r(t,"--no-data",0==e)},rt=function(){t(this,A,"f")?.hide()},ct=function(e,i=!1){if(t(this,y,"a",$)&&(t(this,y,"a",$).setAttribute("aria-activedescendant",e.id),t(this,A,"f"))){f(e,t(this,A,"f"),{block:"nearest",behavior:"instant"});const s=i||!t(this,k,"f")&&(t(this,y,"a",$).matches(":focus-visible")||u());t(this,y,"a",H).forEach(t=>{t===e&&s?(t.focusRing?.show(),t.stateLayer?.show("focused")):(t.focusRing?.hide(),t.stateLayer?.hide("focused"))})}},dt=async function(t){const e=this._options[this._listKeyManager.items.indexOf(t)];e&&(e.selected=t.selected,e.isUpdatePending&&await e.updateComplete)},ft=async function(e){e.selected||(e.selected=!0,await t(this,y,"m",dt).call(this,e),e.isUpdatePending&&await e.updateComplete,this.requestUpdate(),this.isUpdatePending&&await this.updateComplete,t(this,y,"a",$)&&(t(this,y,"a",$).value=e.label),this.dispatchEvent(new Event("change",{bubbles:!0})),t(this,y,"a",V)?.notifyControlStateChange(!0))},ut=function(t,e,i,s){const a=this.caseSensitive?e.value:e.value.toLowerCase();switch(this.filter){case"starts-with":return t.term=s,t.highlightMode=this.filter,a.startsWith(i);case"ends-with":return t.term=s,t.highlightMode=this.filter,a.endsWith(i);case"contains":return t.term=s,t.highlightMode=this.filter,a.includes(i);case"none":return t.disableHighlight=!0,!0;default:return t.disableHighlight=!0,this.filter(e,s)}},pt=function(){if(!t(this,y,"a",$))return 0;const i=t(this,y,"a",H).filter(t=>!1===t.hidden).length,s=!this.loading&&t(this,S,"f");e(this,S,!1,"f");const a=t(this,y,"a",$).value,n=this.caseSensitive?a:a.toLocaleLowerCase();let h,o=0,l=!1;for(let e=0;e<t(this,y,"a",H).length;e++){const i=t(this,y,"a",H)[e],s=this._options[e];i.hidden=!t(this,y,"m",ut).call(this,i,s,n,a),!0===i.hidden?(t(this,y,"m",bt).call(this,i),c(i,"--first"),c(i,"--last")):(o++,l||i.parentElement instanceof w?(c(i,"--first"),h&&c(h,"--last"),p(i,"--last"),h=i):(p(i,"--first"),l=!0,p(i,"--last"),h=i))}t(this,A,"f")&&t(this,y,"m",lt).call(this,t(this,A,"f"),o);const r=t(this,A,"f")?.querySelectorAll("m3e-optgroup")??t(this,M,"f")?.querySelectorAll("m3e-optgroup")??[];for(const t of r)t.hidden=[...t.querySelectorAll("m3e-option")].every(t=>!0===t.hidden);return s&&t(this,y,"m",vt).call(this,i,o),t(this,y,"m",gt).call(this),o},mt=function(){const e=this._listKeyManager.items.filter(t=>t.selected);return e.length>0&&(e.forEach(e=>{e.selected=!1,t(this,y,"m",dt).call(this,e)}),!0)},vt=function(e,i){if(t(this,_,"f"))if(0==i)e>0&&this.noDataLabel&&g.announce(this.noDataLabel,"polite");else if(e!=i){const t=this.resultsLabel instanceof Function?this.resultsLabel(i):this.resultsLabel;t&&g.announce(t,"polite")}},gt=function(){if(this.autoActivate&&(!this._listKeyManager.activeItem||!this._listKeyManager.activeItem.selected)){const e=t(this,y,"a",H).find(t=>!t.disabled&&!1===t.hidden);e&&(this._listKeyManager.setActiveItem(e),t(this,A,"f")&&f(e,t(this,A,"f"),{block:"nearest",behavior:"instant"}))}},bt=function(e){e.focusRing?.hide(),e.stateLayer?.hide("focused"),e===this._listKeyManager.activeItem&&(this._listKeyManager.updateActiveItem(null),t(this,y,"a",$)?.removeAttribute("aria-activedescendant"))},yt.styles=n`:host { display: contents; } .options { display: none; }`,yt.__nextId=0,i([h({attribute:"hide-selection-indicator",type:Boolean})],yt.prototype,"hideSelectionIndicator",void 0),i([h({type:Boolean,reflect:!0})],yt.prototype,"required",void 0),i([h({attribute:"auto-activate",type:Boolean})],yt.prototype,"autoActivate",void 0),i([h({attribute:"case-sensitive",type:Boolean})],yt.prototype,"caseSensitive",void 0),i([h({converter:{fromAttribute:t=>null===t?"contains":"starts-with"===t||"ends-with"===t||"contains"===t||"none"===t?t:"contains"}})],yt.prototype,"filter",void 0),i([h({type:Boolean})],yt.prototype,"loading",void 0),i([h({attribute:"hide-no-data",type:Boolean})],yt.prototype,"hideNoData",void 0),i([h({attribute:"hide-loading",type:Boolean})],yt.prototype,"hideLoading",void 0),i([h({attribute:"loading-label"})],yt.prototype,"loadingLabel",void 0),i([h({attribute:"no-data-label"})],yt.prototype,"noDataLabel",void 0),i([h({attribute:"results-label"})],yt.prototype,"resultsLabel",void 0),i([h({attribute:"panel-class"})],yt.prototype,"panelClass",void 0),yt=wt=i([m("m3e-autocomplete")],yt);export{yt as M3eAutocompleteElement};
7
7
  //# sourceMappingURL=autocomplete.min.js.map