ember-primitives 0.18.0 → 0.20.0

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 (52) hide show
  1. package/declarations/components/form.d.ts +3 -22
  2. package/declarations/components/form.d.ts.map +1 -1
  3. package/dist/color-scheme.js.map +1 -1
  4. package/dist/components/-private/typed-elements.js.map +1 -1
  5. package/dist/components/accordion.js.map +1 -1
  6. package/dist/components/avatar.js.map +1 -1
  7. package/dist/components/dialog.js.map +1 -1
  8. package/dist/components/external-link.js.map +1 -1
  9. package/dist/components/form.js +3 -47
  10. package/dist/components/form.js.map +1 -1
  11. package/dist/components/layout/sticky-footer/index.js.map +1 -1
  12. package/dist/components/link.js.map +1 -1
  13. package/dist/components/menu.js.map +1 -1
  14. package/dist/components/one-time-password/buttons.js.map +1 -1
  15. package/dist/components/one-time-password/input.js.map +1 -1
  16. package/dist/components/one-time-password/otp.js.map +1 -1
  17. package/dist/components/one-time-password/utils.js.map +1 -1
  18. package/dist/components/popover.js.map +1 -1
  19. package/dist/components/portal-targets.js.map +1 -1
  20. package/dist/components/portal.js.map +1 -1
  21. package/dist/components/progress.js.map +1 -1
  22. package/dist/components/scroller.js.map +1 -1
  23. package/dist/components/shadowed.js.map +1 -1
  24. package/dist/components/switch.js.map +1 -1
  25. package/dist/components/toggle-group.js.map +1 -1
  26. package/dist/components/toggle.js.map +1 -1
  27. package/dist/floating-ui/component.js.map +1 -1
  28. package/dist/floating-ui/modifier.js.map +1 -1
  29. package/dist/helpers/link.js.map +1 -1
  30. package/dist/helpers/service.js.map +1 -1
  31. package/dist/item-DmpElnSZ.js.map +1 -1
  32. package/dist/proper-links.js.map +1 -1
  33. package/dist/test-support/otp.js.map +1 -1
  34. package/package.json +3 -20
  35. package/dist/_app_/components/accordion.js +0 -1
  36. package/dist/_app_/components/avatar.js +0 -1
  37. package/dist/_app_/components/dialog.js +0 -1
  38. package/dist/_app_/components/external-link.js +0 -1
  39. package/dist/_app_/components/form.js +0 -1
  40. package/dist/_app_/components/link.js +0 -1
  41. package/dist/_app_/components/menu.js +0 -1
  42. package/dist/_app_/components/popover.js +0 -1
  43. package/dist/_app_/components/portal-targets.js +0 -1
  44. package/dist/_app_/components/portal.js +0 -1
  45. package/dist/_app_/components/progress.js +0 -1
  46. package/dist/_app_/components/scroller.js +0 -1
  47. package/dist/_app_/components/shadowed.js +0 -1
  48. package/dist/_app_/components/switch.js +0 -1
  49. package/dist/_app_/components/toggle-group.js +0 -1
  50. package/dist/_app_/components/toggle.js +0 -1
  51. package/dist/_app_/helpers/link.js +0 -1
  52. package/dist/_app_/helpers/service.js +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"menu.js","sources":["../../src/components/menu.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport Component from '@glimmer/component';\nimport { hash } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport { guidFor } from '@ember/object/internals';\nimport { modifier as eModifier } from 'ember-modifier';\nimport { cell } from 'ember-resources';\nimport { getTabster, getTabsterAttribute, setTabsterAttribute, Types } from 'tabster';\nimport { Popover, type Signature as PopoverSignature } from './popover.gts';\nimport type { TOC } from '@ember/component/template-only';\nimport type { WithBoundArgs } from '@glint/template';\ntype Cell<V> = ReturnType<typeof cell>;\ntype PopoverArgs = PopoverSignature['Args'];\ntype PopoverBlockParams = PopoverSignature['Blocks']['default'][0];\nconst TABSTER_CONFIG_CONTENT = getTabsterAttribute({\n mover: {\n direction: Types.MoverDirections.Both,\n cyclic: true\n },\n deloser: {}\n}, true);\nconst TABSTER_CONFIG_TRIGGER = {\n deloser: {}\n};\nexport interface Signature {\n Args: PopoverArgs;\n Blocks: {\n default: [{\n arrow: PopoverBlockParams['arrow'];\n trigger: WithBoundArgs<typeof trigger, 'triggerElement' | 'contentId' | 'isOpen' | 'setHook'>;\n Trigger: WithBoundArgs<typeof Trigger, 'triggerModifier'>;\n Content: WithBoundArgs<typeof Content, 'triggerElement' | 'contentId' | 'isOpen' | 'PopoverContent'>;\n isOpen: boolean;\n }];\n };\n}\nexport interface SeparatorSignature {\n Element: HTMLDivElement;\n Args: {\n };\n Blocks: {\n default: [];\n };\n}\nconst Separator: TOC<SeparatorSignature> = template(`\n <div role=\"separator\" ...attributes>\n {{yield}}\n </div>\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\n/**\n * We focus items on `pointerMove` to achieve the following:\n *\n * - Mouse over an item (it focuses)\n * - Leave mouse where it is and use keyboard to focus a different item\n * - Wiggle mouse without it leaving previously focused item\n * - Previously focused item should re-focus\n *\n * If we used `mouseOver`/`mouseEnter` it would not re-focus when the mouse\n * wiggles. This is to match native menu implementation.\n */ function focusOnHover(e1: PointerEvent) {\n const item1 = e1.currentTarget;\n if (item1 instanceof HTMLElement) {\n item1?.focus();\n }\n}\nexport interface ItemSignature {\n Element: HTMLButtonElement;\n Args: {\n onSelect?: (event: Event) => void;\n };\n Blocks: {\n default: [];\n };\n}\nconst Item: TOC<ItemSignature> = template(`\n <button\n type=\"button\"\n role=\"menuitem\"\n {{! @glint-ignore !}}\n {{(if @onSelect (modifier on \"click\" @onSelect))}}\n {{on \"pointermove\" focusOnHover}}\n ...attributes\n >\n {{yield}}\n </button>\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nconst installContent = eModifier<{\n Element: HTMLElement;\n Args: {\n Named: {\n isOpen: Cell<boolean>;\n triggerElement: Cell<HTMLElement>;\n };\n };\n}>((element1, _1: [], { isOpen: isOpen1, triggerElement: triggerElement1 })=>{\n // focus first focusable element on the content\n const tabster1 = getTabster(window);\n const firstFocusable1 = tabster1?.focusable.findFirst({\n container: element1\n });\n firstFocusable1?.focus();\n // listen for \"outside\" clicks\n function onDocumentClick1(e1: MouseEvent) {\n if (isOpen1.current && e1.target && !element1.contains(e1.target as HTMLElement) && !triggerElement1.current?.contains(e1.target as HTMLElement)) {\n isOpen1.current = false;\n }\n }\n // listen for the escape key\n function onDocumentKeydown1(e1: KeyboardEvent) {\n if (isOpen1.current && e1.key === 'Escape') {\n isOpen1.current = false;\n }\n }\n document.addEventListener('click', onDocumentClick1);\n document.addEventListener('keydown', onDocumentKeydown1);\n return ()=>{\n document.removeEventListener('click', onDocumentClick1);\n document.removeEventListener('keydown', onDocumentKeydown1);\n };\n});\ninterface PrivateContentSignature {\n Element: HTMLDivElement;\n Args: {\n triggerElement: Cell<HTMLElement>;\n contentId: string;\n isOpen: Cell<boolean>;\n PopoverContent: PopoverBlockParams['Content'];\n };\n Blocks: {\n default: [{\n Item: typeof Item;\n Separator: typeof Separator;\n }];\n };\n}\nexport interface ContentSignature {\n Element: PrivateContentSignature['Element'];\n Args: {\n };\n Blocks: PrivateContentSignature['Blocks'];\n}\nconst Content: TOC<PrivateContentSignature> = template(`\n {{#if @isOpen.current}}\n <@PopoverContent\n id={{@contentId}}\n role=\"menu\"\n data-tabster={{TABSTER_CONFIG_CONTENT}}\n tabindex=\"0\"\n {{installContent isOpen=@isOpen triggerElement=@triggerElement}}\n {{on \"click\" @isOpen.toggle}}\n ...attributes\n >\n {{yield (hash Item=Item Separator=Separator)}}\n </@PopoverContent>\n {{/if}}\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\ninterface PrivateTriggerModifierSignature {\n Element: HTMLElement;\n Args: {\n Named: {\n triggerElement: Cell<HTMLElement>;\n isOpen: Cell<boolean>;\n contentId: string;\n setHook: PopoverBlockParams['setHook'];\n };\n };\n}\nexport interface TriggerModifierSignature {\n Element: PrivateTriggerModifierSignature['Element'];\n}\nconst trigger = eModifier<PrivateTriggerModifierSignature>((element1, _1: [], { triggerElement: triggerElement1, isOpen: isOpen1, contentId: contentId1, setHook: setHook1 })=>{\n element1.setAttribute('aria-haspopup', 'menu');\n if (isOpen1.current) {\n element1.setAttribute('aria-controls', contentId1);\n element1.setAttribute('aria-expanded', 'true');\n } else {\n element1.removeAttribute('aria-controls');\n element1.setAttribute('aria-expanded', 'false');\n }\n setTabsterAttribute(element1, TABSTER_CONFIG_TRIGGER);\n const onTriggerClick1 = ()=>isOpen1.toggle();\n element1.addEventListener('click', onTriggerClick1);\n triggerElement1.current = element1;\n setHook1(element1);\n return ()=>{\n element1.removeEventListener('click', onTriggerClick1);\n };\n});\ninterface PrivateTriggerSignature {\n Element: HTMLButtonElement;\n Args: {\n triggerModifier: WithBoundArgs<typeof trigger, 'triggerElement' | 'contentId' | 'isOpen' | 'setHook'>;\n };\n Blocks: {\n default: [];\n };\n}\nexport interface TriggerSignature {\n Element: PrivateTriggerSignature['Element'];\n Args: {\n };\n Blocks: PrivateTriggerSignature['Blocks'];\n}\nconst Trigger: TOC<PrivateTriggerSignature> = template(`\n <button type=\"button\" {{@triggerModifier}} ...attributes>\n {{yield}}\n </button>\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nconst IsOpen = ()=>cell<boolean>(false);\nconst TriggerElement = ()=>cell<HTMLElement>();\nexport class Menu extends Component<Signature> {\n contentId = guidFor(this);\n static{\n template(`\n {{#let (IsOpen) (TriggerElement) as |isOpen triggerEl|}}\n <Popover\n @flipOptions={{@flipOptions}}\n @middleware={{@middleware}}\n @offsetOptions={{@offsetOptions}}\n @placement={{@placement}}\n @shiftOptions={{@shiftOptions}}\n @strategy={{@strategy}}\n @inline={{@inline}}\n as |p|\n >\n {{#let\n (modifier\n trigger\n triggerElement=triggerEl\n isOpen=isOpen\n contentId=this.contentId\n setHook=p.setHook\n )\n as |triggerModifier|\n }}\n {{yield\n (hash\n trigger=triggerModifier\n Trigger=(component Trigger triggerModifier=triggerModifier)\n Content=(component\n Content\n PopoverContent=p.Content\n isOpen=isOpen\n triggerElement=triggerEl\n contentId=this.contentId\n )\n arrow=p.arrow\n isOpen=isOpen.current\n )\n }}\n {{/let}}\n </Popover>\n {{/let}}\n `, {\n component: this,\n eval () {\n return eval(arguments[0]);\n }\n });\n }\n}\nexport default Menu;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL252cC9EZXZlbG9wbWVudC9OdWxsVm94UG9wdWxpL2VtYmVyLXByaW1pdGl2ZXMvZW1iZXItcHJpbWl0aXZlcy9zcmMvY29tcG9uZW50cy9tZW51Lmd0cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29tcG9uZW50IGZyb20gJ0BnbGltbWVyL2NvbXBvbmVudCc7XG5pbXBvcnQgeyBoYXNoIH0gZnJvbSAnQGVtYmVyL2hlbHBlcic7XG5pbXBvcnQgeyBvbiB9IGZyb20gJ0BlbWJlci9tb2RpZmllcic7XG5pbXBvcnQgeyBndWlkRm9yIH0gZnJvbSAnQGVtYmVyL29iamVjdC9pbnRlcm5hbHMnO1xuXG5pbXBvcnQgeyBtb2RpZmllciBhcyBlTW9kaWZpZXIgfSBmcm9tICdlbWJlci1tb2RpZmllcic7XG5pbXBvcnQgeyBjZWxsIH0gZnJvbSAnZW1iZXItcmVzb3VyY2VzJztcbmltcG9ydCB7IGdldFRhYnN0ZXIsIGdldFRhYnN0ZXJBdHRyaWJ1dGUsIHNldFRhYnN0ZXJBdHRyaWJ1dGUsIFR5cGVzIH0gZnJvbSAndGFic3Rlcic7XG5cbmltcG9ydCB7IFBvcG92ZXIsIHR5cGUgU2lnbmF0dXJlIGFzIFBvcG92ZXJTaWduYXR1cmUgfSBmcm9tICcuL3BvcG92ZXIuZ3RzJztcblxuaW1wb3J0IHR5cGUgeyBUT0MgfSBmcm9tICdAZW1iZXIvY29tcG9uZW50L3RlbXBsYXRlLW9ubHknO1xuaW1wb3J0IHR5cGUgeyBXaXRoQm91bmRBcmdzIH0gZnJvbSAnQGdsaW50L3RlbXBsYXRlJztcblxudHlwZSBDZWxsPFY-ID0gUmV0dXJuVHlwZTx0eXBlb2YgY2VsbDxWPj47XG50eXBlIFBvcG92ZXJBcmdzID0gUG9wb3ZlclNpZ25hdHVyZVsnQXJncyddO1xudHlwZSBQb3BvdmVyQmxvY2tQYXJhbXMgPSBQb3BvdmVyU2lnbmF0dXJlWydCbG9ja3MnXVsnZGVmYXVsdCddWzBdO1xuXG5jb25zdCBUQUJTVEVSX0NPTkZJR19DT05URU5UID0gZ2V0VGFic3RlckF0dHJpYnV0ZShcbiAge1xuICAgIG1vdmVyOiB7XG4gICAgICBkaXJlY3Rpb246IFR5cGVzLk1vdmVyRGlyZWN0aW9ucy5Cb3RoLFxuICAgICAgY3ljbGljOiB0cnVlLFxuICAgIH0sXG4gICAgZGVsb3Nlcjoge30sXG4gIH0sXG4gIHRydWVcbik7XG5cbmNvbnN0IFRBQlNURVJfQ09ORklHX1RSSUdHRVIgPSB7XG4gIGRlbG9zZXI6IHt9LFxufTtcblxuZXhwb3J0IGludGVyZmFjZSBTaWduYXR1cmUge1xuICBBcmdzOiBQb3BvdmVyQXJncztcbiAgQmxvY2tzOiB7XG4gICAgZGVmYXVsdDogW1xuICAgICAge1xuICAgICAgICBhcnJvdzogUG9wb3ZlckJsb2NrUGFyYW1zWydhcnJvdyddO1xuICAgICAgICB0cmlnZ2VyOiBXaXRoQm91bmRBcmdzPFxuICAgICAgICAgIHR5cGVvZiB0cmlnZ2VyLFxuICAgICAgICAgICd0cmlnZ2VyRWxlbWVudCcgfCAnY29udGVudElkJyB8ICdpc09wZW4nIHwgJ3NldEhvb2snXG4gICAgICAgID47XG4gICAgICAgIFRyaWdnZXI6IFdpdGhCb3VuZEFyZ3M8dHlwZW9mIFRyaWdnZXIsICd0cmlnZ2VyTW9kaWZpZXInPjtcbiAgICAgICAgQ29udGVudDogV2l0aEJvdW5kQXJnczxcbiAgICAgICAgICB0eXBlb2YgQ29udGVudCxcbiAgICAgICAgICAndHJpZ2dlckVsZW1lbnQnIHwgJ2NvbnRlbnRJZCcgfCAnaXNPcGVuJyB8ICdQb3BvdmVyQ29udGVudCdcbiAgICAgICAgPjtcbiAgICAgICAgaXNPcGVuOiBib29sZWFuO1xuICAgICAgfSxcbiAgICBdO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlcGFyYXRvclNpZ25hdHVyZSB7XG4gIEVsZW1lbnQ6IEhUTUxEaXZFbGVtZW50O1xuICBBcmdzOiB7fTtcbiAgQmxvY2tzOiB7IGRlZmF1bHQ6IFtdIH07XG59XG5cbmNvbnN0IFNlcGFyYXRvcjogVE9DPFNlcGFyYXRvclNpZ25hdHVyZT4gPSA8dGVtcGxhdGU-XG4gIDxkaXYgcm9sZT1cInNlcGFyYXRvclwiIC4uLmF0dHJpYnV0ZXM-XG4gICAge3t5aWVsZH19XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT47XG5cbi8qKlxuICogV2UgZm9jdXMgaXRlbXMgb24gYHBvaW50ZXJNb3ZlYCB0byBhY2hpZXZlIHRoZSBmb2xsb3dpbmc6XG4gKlxuICogLSBNb3VzZSBvdmVyIGFuIGl0ZW0gKGl0IGZvY3VzZXMpXG4gKiAtIExlYXZlIG1vdXNlIHdoZXJlIGl0IGlzIGFuZCB1c2Uga2V5Ym9hcmQgdG8gZm9jdXMgYSBkaWZmZXJlbnQgaXRlbVxuICogLSBXaWdnbGUgbW91c2Ugd2l0aG91dCBpdCBsZWF2aW5nIHByZXZpb3VzbHkgZm9jdXNlZCBpdGVtXG4gKiAtIFByZXZpb3VzbHkgZm9jdXNlZCBpdGVtIHNob3VsZCByZS1mb2N1c1xuICpcbiAqIElmIHdlIHVzZWQgYG1vdXNlT3ZlcmAvYG1vdXNlRW50ZXJgIGl0IHdvdWxkIG5vdCByZS1mb2N1cyB3aGVuIHRoZSBtb3VzZVxuICogd2lnZ2xlcy4gVGhpcyBpcyB0byBtYXRjaCBuYXRpdmUgbWVudSBpbXBsZW1lbnRhdGlvbi5cbiAqL1xuZnVuY3Rpb24gZm9jdXNPbkhvdmVyKGU6IFBvaW50ZXJFdmVudCkge1xuICBjb25zdCBpdGVtID0gZS5jdXJyZW50VGFyZ2V0O1xuXG4gIGlmIChpdGVtIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICBpdGVtPy5mb2N1cygpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSXRlbVNpZ25hdHVyZSB7XG4gIEVsZW1lbnQ6IEhUTUxCdXR0b25FbGVtZW50O1xuICBBcmdzOiB7IG9uU2VsZWN0PzogKGV2ZW50OiBFdmVudCkgPT4gdm9pZCB9O1xuICBCbG9ja3M6IHsgZGVmYXVsdDogW10gfTtcbn1cblxuY29uc3QgSXRlbTogVE9DPEl0ZW1TaWduYXR1cmU-ID0gPHRlbXBsYXRlPlxuICA8YnV0dG9uXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgcm9sZT1cIm1lbnVpdGVtXCJcbiAgICB7eyEgQGdsaW50LWlnbm9yZSAhfX1cbiAgICB7eyhpZiBAb25TZWxlY3QgKG1vZGlmaWVyIG9uIFwiY2xpY2tcIiBAb25TZWxlY3QpKX19XG4gICAge3tvbiBcInBvaW50ZXJtb3ZlXCIgZm9jdXNPbkhvdmVyfX1cbiAgICAuLi5hdHRyaWJ1dGVzXG4gID5cbiAgICB7e3lpZWxkfX1cbiAgPC9idXR0b24-XG48L3RlbXBsYXRlPjtcblxuY29uc3QgaW5zdGFsbENvbnRlbnQgPSBlTW9kaWZpZXI8e1xuICBFbGVtZW50OiBIVE1MRWxlbWVudDtcbiAgQXJnczoge1xuICAgIE5hbWVkOiB7XG4gICAgICBpc09wZW46IENlbGw8Ym9vbGVhbj47XG4gICAgICB0cmlnZ2VyRWxlbWVudDogQ2VsbDxIVE1MRWxlbWVudD47XG4gICAgfTtcbiAgfTtcbn0-KChlbGVtZW50LCBfOiBbXSwgeyBpc09wZW4sIHRyaWdnZXJFbGVtZW50IH0pID0-IHtcbiAgLy8gZm9jdXMgZmlyc3QgZm9jdXNhYmxlIGVsZW1lbnQgb24gdGhlIGNvbnRlbnRcbiAgY29uc3QgdGFic3RlciA9IGdldFRhYnN0ZXIod2luZG93KTtcbiAgY29uc3QgZmlyc3RGb2N1c2FibGUgPSB0YWJzdGVyPy5mb2N1c2FibGUuZmluZEZpcnN0KHtcbiAgICBjb250YWluZXI6IGVsZW1lbnQsXG4gIH0pO1xuXG4gIGZpcnN0Rm9jdXNhYmxlPy5mb2N1cygpO1xuXG4gIC8vIGxpc3RlbiBmb3IgXCJvdXRzaWRlXCIgY2xpY2tzXG4gIGZ1bmN0aW9uIG9uRG9jdW1lbnRDbGljayhlOiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKFxuICAgICAgaXNPcGVuLmN1cnJlbnQgJiZcbiAgICAgIGUudGFyZ2V0ICYmXG4gICAgICAhZWxlbWVudC5jb250YWlucyhlLnRhcmdldCBhcyBIVE1MRWxlbWVudCkgJiZcbiAgICAgICF0cmlnZ2VyRWxlbWVudC5jdXJyZW50Py5jb250YWlucyhlLnRhcmdldCBhcyBIVE1MRWxlbWVudClcbiAgICApIHtcbiAgICAgIGlzT3Blbi5jdXJyZW50ID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLy8gbGlzdGVuIGZvciB0aGUgZXNjYXBlIGtleVxuICBmdW5jdGlvbiBvbkRvY3VtZW50S2V5ZG93bihlOiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKGlzT3Blbi5jdXJyZW50ICYmIGUua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgaXNPcGVuLmN1cnJlbnQgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIG9uRG9jdW1lbnRDbGljayk7XG4gIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBvbkRvY3VtZW50S2V5ZG93bik7XG5cbiAgcmV0dXJuICgpID0-IHtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIG9uRG9jdW1lbnRDbGljayk7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIG9uRG9jdW1lbnRLZXlkb3duKTtcbiAgfTtcbn0pO1xuXG5pbnRlcmZhY2UgUHJpdmF0ZUNvbnRlbnRTaWduYXR1cmUge1xuICBFbGVtZW50OiBIVE1MRGl2RWxlbWVudDtcbiAgQXJnczoge1xuICAgIHRyaWdnZXJFbGVtZW50OiBDZWxsPEhUTUxFbGVtZW50PjtcbiAgICBjb250ZW50SWQ6IHN0cmluZztcbiAgICBpc09wZW46IENlbGw8Ym9vbGVhbj47XG4gICAgUG9wb3ZlckNvbnRlbnQ6IFBvcG92ZXJCbG9ja1BhcmFtc1snQ29udGVudCddO1xuICB9O1xuICBCbG9ja3M6IHsgZGVmYXVsdDogW3sgSXRlbTogdHlwZW9mIEl0ZW07IFNlcGFyYXRvcjogdHlwZW9mIFNlcGFyYXRvciB9XSB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRlbnRTaWduYXR1cmUge1xuICBFbGVtZW50OiBQcml2YXRlQ29udGVudFNpZ25hdHVyZVsnRWxlbWVudCddO1xuICBBcmdzOiB7fTtcbiAgQmxvY2tzOiBQcml2YXRlQ29udGVudFNpZ25hdHVyZVsnQmxvY2tzJ107XG59XG5cbmNvbnN0IENvbnRlbnQ6IFRPQzxQcml2YXRlQ29udGVudFNpZ25hdHVyZT4gPSA8dGVtcGxhdGU-XG4gIHt7I2lmIEBpc09wZW4uY3VycmVudH19XG4gICAgPEBQb3BvdmVyQ29udGVudFxuICAgICAgaWQ9e3tAY29udGVudElkfX1cbiAgICAgIHJvbGU9XCJtZW51XCJcbiAgICAgIGRhdGEtdGFic3Rlcj17e1RBQlNURVJfQ09ORklHX0NPTlRFTlR9fVxuICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgIHt7aW5zdGFsbENvbnRlbnQgaXNPcGVuPUBpc09wZW4gdHJpZ2dlckVsZW1lbnQ9QHRyaWdnZXJFbGVtZW50fX1cbiAgICAgIHt7b24gXCJjbGlja1wiIEBpc09wZW4udG9nZ2xlfX1cbiAgICAgIC4uLmF0dHJpYnV0ZXNcbiAgICA-XG4gICAgICB7e3lpZWxkIChoYXNoIEl0ZW09SXRlbSBTZXBhcmF0b3I9U2VwYXJhdG9yKX19XG4gICAgPC9AUG9wb3ZlckNvbnRlbnQ-XG4gIHt7L2lmfX1cbjwvdGVtcGxhdGU-O1xuXG5pbnRlcmZhY2UgUHJpdmF0ZVRyaWdnZXJNb2RpZmllclNpZ25hdHVyZSB7XG4gIEVsZW1lbnQ6IEhUTUxFbGVtZW50O1xuICBBcmdzOiB7XG4gICAgTmFtZWQ6IHtcbiAgICAgIHRyaWdnZXJFbGVtZW50OiBDZWxsPEhUTUxFbGVtZW50PjtcbiAgICAgIGlzT3BlbjogQ2VsbDxib29sZWFuPjtcbiAgICAgIGNvbnRlbnRJZDogc3RyaW5nO1xuICAgICAgc2V0SG9vazogUG9wb3ZlckJsb2NrUGFyYW1zWydzZXRIb29rJ107XG4gICAgfTtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmlnZ2VyTW9kaWZpZXJTaWduYXR1cmUge1xuICBFbGVtZW50OiBQcml2YXRlVHJpZ2dlck1vZGlmaWVyU2lnbmF0dXJlWydFbGVtZW50J107XG59XG5cbmNvbnN0IHRyaWdnZXIgPSBlTW9kaWZpZXI8UHJpdmF0ZVRyaWdnZXJNb2RpZmllclNpZ25hdHVyZT4oXG4gIChlbGVtZW50LCBfOiBbXSwgeyB0cmlnZ2VyRWxlbWVudCwgaXNPcGVuLCBjb250ZW50SWQsIHNldEhvb2sgfSkgPT4ge1xuICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLWhhc3BvcHVwJywgJ21lbnUnKTtcblxuICAgIGlmIChpc09wZW4uY3VycmVudCkge1xuICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtY29udHJvbHMnLCBjb250ZW50SWQpO1xuICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCAndHJ1ZScpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1jb250cm9scycpO1xuICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCAnZmFsc2UnKTtcbiAgICB9XG5cbiAgICBzZXRUYWJzdGVyQXR0cmlidXRlKGVsZW1lbnQsIFRBQlNURVJfQ09ORklHX1RSSUdHRVIpO1xuXG4gICAgY29uc3Qgb25UcmlnZ2VyQ2xpY2sgPSAoKSA9PiBpc09wZW4udG9nZ2xlKCk7XG5cbiAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgb25UcmlnZ2VyQ2xpY2spO1xuXG4gICAgdHJpZ2dlckVsZW1lbnQuY3VycmVudCA9IGVsZW1lbnQ7XG4gICAgc2V0SG9vayhlbGVtZW50KTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgb25UcmlnZ2VyQ2xpY2spO1xuICAgIH07XG4gIH1cbik7XG5cbmludGVyZmFjZSBQcml2YXRlVHJpZ2dlclNpZ25hdHVyZSB7XG4gIEVsZW1lbnQ6IEhUTUxCdXR0b25FbGVtZW50O1xuICBBcmdzOiB7XG4gICAgdHJpZ2dlck1vZGlmaWVyOiBXaXRoQm91bmRBcmdzPFxuICAgICAgdHlwZW9mIHRyaWdnZXIsXG4gICAgICAndHJpZ2dlckVsZW1lbnQnIHwgJ2NvbnRlbnRJZCcgfCAnaXNPcGVuJyB8ICdzZXRIb29rJ1xuICAgID47XG4gIH07XG4gIEJsb2NrczogeyBkZWZhdWx0OiBbXSB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyaWdnZXJTaWduYXR1cmUge1xuICBFbGVtZW50OiBQcml2YXRlVHJpZ2dlclNpZ25hdHVyZVsnRWxlbWVudCddO1xuICBBcmdzOiB7fTtcbiAgQmxvY2tzOiBQcml2YXRlVHJpZ2dlclNpZ25hdHVyZVsnQmxvY2tzJ107XG59XG5cbmNvbnN0IFRyaWdnZXI6IFRPQzxQcml2YXRlVHJpZ2dlclNpZ25hdHVyZT4gPSA8dGVtcGxhdGU-XG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHt7QHRyaWdnZXJNb2RpZmllcn19IC4uLmF0dHJpYnV0ZXM-XG4gICAge3t5aWVsZH19XG4gIDwvYnV0dG9uPlxuPC90ZW1wbGF0ZT47XG5cbmNvbnN0IElzT3BlbiA9ICgpID0-IGNlbGw8Ym9vbGVhbj4oZmFsc2UpO1xuY29uc3QgVHJpZ2dlckVsZW1lbnQgPSAoKSA9PiBjZWxsPEhUTUxFbGVtZW50PigpO1xuXG5leHBvcnQgY2xhc3MgTWVudSBleHRlbmRzIENvbXBvbmVudDxTaWduYXR1cmU-IHtcbiAgY29udGVudElkID0gZ3VpZEZvcih0aGlzKTtcblxuICA8dGVtcGxhdGU-XG4gICAge3sjbGV0IChJc09wZW4pIChUcmlnZ2VyRWxlbWVudCkgYXMgfGlzT3BlbiB0cmlnZ2VyRWx8fX1cbiAgICAgIDxQb3BvdmVyXG4gICAgICAgIEBmbGlwT3B0aW9ucz17e0BmbGlwT3B0aW9uc319XG4gICAgICAgIEBtaWRkbGV3YXJlPXt7QG1pZGRsZXdhcmV9fVxuICAgICAgICBAb2Zmc2V0T3B0aW9ucz17e0BvZmZzZXRPcHRpb25zfX1cbiAgICAgICAgQHBsYWNlbWVudD17e0BwbGFjZW1lbnR9fVxuICAgICAgICBAc2hpZnRPcHRpb25zPXt7QHNoaWZ0T3B0aW9uc319XG4gICAgICAgIEBzdHJhdGVneT17e0BzdHJhdGVneX19XG4gICAgICAgIEBpbmxpbmU9e3tAaW5saW5lfX1cbiAgICAgICAgYXMgfHB8XG4gICAgICA-XG4gICAgICAgIHt7I2xldFxuICAgICAgICAgIChtb2RpZmllclxuICAgICAgICAgICAgdHJpZ2dlclxuICAgICAgICAgICAgdHJpZ2dlckVsZW1lbnQ9dHJpZ2dlckVsXG4gICAgICAgICAgICBpc09wZW49aXNPcGVuXG4gICAgICAgICAgICBjb250ZW50SWQ9dGhpcy5jb250ZW50SWRcbiAgICAgICAgICAgIHNldEhvb2s9cC5zZXRIb29rXG4gICAgICAgICAgKVxuICAgICAgICAgIGFzIHx0cmlnZ2VyTW9kaWZpZXJ8XG4gICAgICAgIH19XG4gICAgICAgICAge3t5aWVsZFxuICAgICAgICAgICAgKGhhc2hcbiAgICAgICAgICAgICAgdHJpZ2dlcj10cmlnZ2VyTW9kaWZpZXJcbiAgICAgICAgICAgICAgVHJpZ2dlcj0oY29tcG9uZW50IFRyaWdnZXIgdHJpZ2dlck1vZGlmaWVyPXRyaWdnZXJNb2RpZmllcilcbiAgICAgICAgICAgICAgQ29udGVudD0oY29tcG9uZW50XG4gICAgICAgICAgICAgICAgQ29udGVudFxuICAgICAgICAgICAgICAgIFBvcG92ZXJDb250ZW50PXAuQ29udGVudFxuICAgICAgICAgICAgICAgIGlzT3Blbj1pc09wZW5cbiAgICAgICAgICAgICAgICB0cmlnZ2VyRWxlbWVudD10cmlnZ2VyRWxcbiAgICAgICAgICAgICAgICBjb250ZW50SWQ9dGhpcy5jb250ZW50SWRcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBhcnJvdz1wLmFycm93XG4gICAgICAgICAgICAgIGlzT3Blbj1pc09wZW4uY3VycmVudFxuICAgICAgICAgICAgKVxuICAgICAgICAgIH19XG4gICAgICAgIHt7L2xldH19XG4gICAgICA8L1BvcG92ZXI-XG4gICAge3svbGV0fX1cbiAgPC90ZW1wbGF0ZT5cbn1cblxuZXhwb3J0IGRlZmF1bHQgTWVudTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxlQUFlLHFCQUFxQjtBQUMzQyxTQUFTLElBQUksUUFBUSxnQkFBZ0I7QUFDckMsU0FBUyxFQUFFLFFBQVEsa0JBQWtCO0FBQ3JDLFNBQVMsT0FBTyxRQUFRLDBCQUEwQjtBQUVsRCxTQUFTLFlBQVksU0FBUyxRQUFRLGlCQUFpQjtBQUN2RCxTQUFTLElBQUksUUFBUSxrQkFBa0I7QUFDdkMsU0FBUyxVQUFVLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsS0FBSyxRQUFRLFVBQVU7QUFFdEYsU0FBUyxPQUFPLEVBQUUsS0FBSyxhQUFhLGdCQUFnQixRQUFRLGdCQUFnQjtBQUU1RSxjQUFjLEdBQUcsUUFBUSxpQ0FBaUM7QUFDMUQsY0FBYyxhQUFhLFFBQVEsa0JBQWtCO0tBRWhELEtBQUssS0FBSyxrQkFBa0I7S0FDNUIsY0FBYyxpQkFBaUI7S0FDL0IscUJBQXFCLGlCQUFpQixVQUFVLFdBQVc7QUFFaEUsTUFBTSx5QkFBeUIsb0JBQzdCO0lBQ0UsT0FBTztRQUNMLFdBQVcsTUFBTSxlQUFlLENBQUMsSUFBSTtRQUNyQyxRQUFRO0lBQ1Y7SUFDQSxTQUFTLENBQUM7QUFDWixHQUNBO0FBR0YsTUFBTSx5QkFBeUI7SUFDN0IsU0FBUyxDQUFDO0FBQ1o7QUFFQSxpQkFBaUI7SUFDZixNQUFNO0lBQ047UUFDRTtnQkFFSSxPQUFPLG1CQUFtQjtnQkFDMUIsU0FBUyxxQkFDQSxTQUNQLG1CQUFtQixjQUFjLFdBQVc7Z0JBRTlDLFNBQVMscUJBQXFCLFNBQVM7Z0JBQ3ZDLFNBQVMscUJBQ0EsU0FDUCxtQkFBbUIsY0FBYyxXQUFXO2dCQUU5QyxRQUFRLE9BQU87Ozs7QUFNdkIsaUJBQWlCO0lBQ2YsU0FBUztJQUNUOztJQUNBO1FBQVU7OztBQUdaLE1BQU0sV0FBVyxJQUFJLHNCQUFzQixTQUFVLENBQUE7Ozs7QUFJckQsQ0FBQSxF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"],"names":["TABSTER_CONFIG_CONTENT","getTabsterAttribute","mover","direction","Types","MoverDirections","Both","cyclic","deloser","TABSTER_CONFIG_TRIGGER","Separator","setComponentTemplate","precompileTemplate","strictMode","templateOnly","focusOnHover","e1","item1","currentTarget","HTMLElement","focus","Item","scope","on","installContent","eModifier","element1","_1","isOpen","isOpen1","triggerElement","triggerElement1","tabster1","getTabster","window","firstFocusable1","focusable","findFirst","container","onDocumentClick1","current","target","contains","onDocumentKeydown1","key","document","addEventListener","removeEventListener","Content","hash","trigger","contentId","contentId1","setHook","setHook1","setAttribute","removeAttribute","setTabsterAttribute","onTriggerClick1","toggle","Trigger","IsOpen","cell","TriggerElement","Menu","Component","guidFor","Popover"],"mappings":"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"}
1
+ {"version":3,"file":"menu.js","sources":["../../src/components/menu.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport Component from '@glimmer/component';\nimport { hash } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport { guidFor } from '@ember/object/internals';\nimport { modifier as eModifier } from 'ember-modifier';\nimport { cell } from 'ember-resources';\nimport { getTabster, getTabsterAttribute, setTabsterAttribute, Types } from 'tabster';\nimport { Popover, type Signature as PopoverSignature } from './popover.gts';\nimport type { TOC } from '@ember/component/template-only';\nimport type { WithBoundArgs } from '@glint/template';\ntype Cell<V> = ReturnType<typeof cell>;\ntype PopoverArgs = PopoverSignature['Args'];\ntype PopoverBlockParams = PopoverSignature['Blocks']['default'][0];\nconst TABSTER_CONFIG_CONTENT = getTabsterAttribute({\n mover: {\n direction: Types.MoverDirections.Both,\n cyclic: true\n },\n deloser: {}\n}, true);\nconst TABSTER_CONFIG_TRIGGER = {\n deloser: {}\n};\nexport interface Signature {\n Args: PopoverArgs;\n Blocks: {\n default: [{\n arrow: PopoverBlockParams['arrow'];\n trigger: WithBoundArgs<typeof trigger, 'triggerElement' | 'contentId' | 'isOpen' | 'setHook'>;\n Trigger: WithBoundArgs<typeof Trigger, 'triggerModifier'>;\n Content: WithBoundArgs<typeof Content, 'triggerElement' | 'contentId' | 'isOpen' | 'PopoverContent'>;\n isOpen: boolean;\n }];\n };\n}\nexport interface SeparatorSignature {\n Element: HTMLDivElement;\n Args: {\n };\n Blocks: {\n default: [];\n };\n}\nconst Separator: TOC<SeparatorSignature> = template(`\n <div role=\"separator\" ...attributes>\n {{yield}}\n </div>\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\n/**\n * We focus items on `pointerMove` to achieve the following:\n *\n * - Mouse over an item (it focuses)\n * - Leave mouse where it is and use keyboard to focus a different item\n * - Wiggle mouse without it leaving previously focused item\n * - Previously focused item should re-focus\n *\n * If we used `mouseOver`/`mouseEnter` it would not re-focus when the mouse\n * wiggles. This is to match native menu implementation.\n */ function focusOnHover(e1: PointerEvent) {\n const item1 = e1.currentTarget;\n if (item1 instanceof HTMLElement) {\n item1?.focus();\n }\n}\nexport interface ItemSignature {\n Element: HTMLButtonElement;\n Args: {\n onSelect?: (event: Event) => void;\n };\n Blocks: {\n default: [];\n };\n}\nconst Item: TOC<ItemSignature> = template(`\n <button\n type=\"button\"\n role=\"menuitem\"\n {{! @glint-ignore !}}\n {{(if @onSelect (modifier on \"click\" @onSelect))}}\n {{on \"pointermove\" focusOnHover}}\n ...attributes\n >\n {{yield}}\n </button>\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nconst installContent = eModifier<{\n Element: HTMLElement;\n Args: {\n Named: {\n isOpen: Cell<boolean>;\n triggerElement: Cell<HTMLElement>;\n };\n };\n}>((element1, _1: [], { isOpen: isOpen1, triggerElement: triggerElement1 })=>{\n // focus first focusable element on the content\n const tabster1 = getTabster(window);\n const firstFocusable1 = tabster1?.focusable.findFirst({\n container: element1\n });\n firstFocusable1?.focus();\n // listen for \"outside\" clicks\n function onDocumentClick1(e1: MouseEvent) {\n if (isOpen1.current && e1.target && !element1.contains(e1.target as HTMLElement) && !triggerElement1.current?.contains(e1.target as HTMLElement)) {\n isOpen1.current = false;\n }\n }\n // listen for the escape key\n function onDocumentKeydown1(e1: KeyboardEvent) {\n if (isOpen1.current && e1.key === 'Escape') {\n isOpen1.current = false;\n }\n }\n document.addEventListener('click', onDocumentClick1);\n document.addEventListener('keydown', onDocumentKeydown1);\n return ()=>{\n document.removeEventListener('click', onDocumentClick1);\n document.removeEventListener('keydown', onDocumentKeydown1);\n };\n});\ninterface PrivateContentSignature {\n Element: HTMLDivElement;\n Args: {\n triggerElement: Cell<HTMLElement>;\n contentId: string;\n isOpen: Cell<boolean>;\n PopoverContent: PopoverBlockParams['Content'];\n };\n Blocks: {\n default: [{\n Item: typeof Item;\n Separator: typeof Separator;\n }];\n };\n}\nexport interface ContentSignature {\n Element: PrivateContentSignature['Element'];\n Args: {\n };\n Blocks: PrivateContentSignature['Blocks'];\n}\nconst Content: TOC<PrivateContentSignature> = template(`\n {{#if @isOpen.current}}\n <@PopoverContent\n id={{@contentId}}\n role=\"menu\"\n data-tabster={{TABSTER_CONFIG_CONTENT}}\n tabindex=\"0\"\n {{installContent isOpen=@isOpen triggerElement=@triggerElement}}\n {{on \"click\" @isOpen.toggle}}\n ...attributes\n >\n {{yield (hash Item=Item Separator=Separator)}}\n </@PopoverContent>\n {{/if}}\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\ninterface PrivateTriggerModifierSignature {\n Element: HTMLElement;\n Args: {\n Named: {\n triggerElement: Cell<HTMLElement>;\n isOpen: Cell<boolean>;\n contentId: string;\n setHook: PopoverBlockParams['setHook'];\n };\n };\n}\nexport interface TriggerModifierSignature {\n Element: PrivateTriggerModifierSignature['Element'];\n}\nconst trigger = eModifier<PrivateTriggerModifierSignature>((element1, _1: [], { triggerElement: triggerElement1, isOpen: isOpen1, contentId: contentId1, setHook: setHook1 })=>{\n element1.setAttribute('aria-haspopup', 'menu');\n if (isOpen1.current) {\n element1.setAttribute('aria-controls', contentId1);\n element1.setAttribute('aria-expanded', 'true');\n } else {\n element1.removeAttribute('aria-controls');\n element1.setAttribute('aria-expanded', 'false');\n }\n setTabsterAttribute(element1, TABSTER_CONFIG_TRIGGER);\n const onTriggerClick1 = ()=>isOpen1.toggle();\n element1.addEventListener('click', onTriggerClick1);\n triggerElement1.current = element1;\n setHook1(element1);\n return ()=>{\n element1.removeEventListener('click', onTriggerClick1);\n };\n});\ninterface PrivateTriggerSignature {\n Element: HTMLButtonElement;\n Args: {\n triggerModifier: WithBoundArgs<typeof trigger, 'triggerElement' | 'contentId' | 'isOpen' | 'setHook'>;\n };\n Blocks: {\n default: [];\n };\n}\nexport interface TriggerSignature {\n Element: PrivateTriggerSignature['Element'];\n Args: {\n };\n Blocks: PrivateTriggerSignature['Blocks'];\n}\nconst Trigger: TOC<PrivateTriggerSignature> = template(`\n <button type=\"button\" {{@triggerModifier}} ...attributes>\n {{yield}}\n </button>\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nconst IsOpen = ()=>cell<boolean>(false);\nconst TriggerElement = ()=>cell<HTMLElement>();\nexport class Menu extends Component<Signature> {\n contentId = guidFor(this);\n static{\n template(`\n {{#let (IsOpen) (TriggerElement) as |isOpen triggerEl|}}\n <Popover\n @flipOptions={{@flipOptions}}\n @middleware={{@middleware}}\n @offsetOptions={{@offsetOptions}}\n @placement={{@placement}}\n @shiftOptions={{@shiftOptions}}\n @strategy={{@strategy}}\n @inline={{@inline}}\n as |p|\n >\n {{#let\n (modifier\n trigger\n triggerElement=triggerEl\n isOpen=isOpen\n contentId=this.contentId\n setHook=p.setHook\n )\n as |triggerModifier|\n }}\n {{yield\n (hash\n trigger=triggerModifier\n Trigger=(component Trigger triggerModifier=triggerModifier)\n Content=(component\n Content\n PopoverContent=p.Content\n isOpen=isOpen\n triggerElement=triggerEl\n contentId=this.contentId\n )\n arrow=p.arrow\n isOpen=isOpen.current\n )\n }}\n {{/let}}\n </Popover>\n {{/let}}\n `, {\n component: this,\n eval () {\n return eval(arguments[0]);\n }\n });\n }\n}\nexport default Menu;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2VtYmVyLXByaW1pdGl2ZXMvZW1iZXItcHJpbWl0aXZlcy9lbWJlci1wcmltaXRpdmVzL3NyYy9jb21wb25lbnRzL21lbnUuZ3RzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb21wb25lbnQgZnJvbSAnQGdsaW1tZXIvY29tcG9uZW50JztcbmltcG9ydCB7IGhhc2ggfSBmcm9tICdAZW1iZXIvaGVscGVyJztcbmltcG9ydCB7IG9uIH0gZnJvbSAnQGVtYmVyL21vZGlmaWVyJztcbmltcG9ydCB7IGd1aWRGb3IgfSBmcm9tICdAZW1iZXIvb2JqZWN0L2ludGVybmFscyc7XG5cbmltcG9ydCB7IG1vZGlmaWVyIGFzIGVNb2RpZmllciB9IGZyb20gJ2VtYmVyLW1vZGlmaWVyJztcbmltcG9ydCB7IGNlbGwgfSBmcm9tICdlbWJlci1yZXNvdXJjZXMnO1xuaW1wb3J0IHsgZ2V0VGFic3RlciwgZ2V0VGFic3RlckF0dHJpYnV0ZSwgc2V0VGFic3RlckF0dHJpYnV0ZSwgVHlwZXMgfSBmcm9tICd0YWJzdGVyJztcblxuaW1wb3J0IHsgUG9wb3ZlciwgdHlwZSBTaWduYXR1cmUgYXMgUG9wb3ZlclNpZ25hdHVyZSB9IGZyb20gJy4vcG9wb3Zlci5ndHMnO1xuXG5pbXBvcnQgdHlwZSB7IFRPQyB9IGZyb20gJ0BlbWJlci9jb21wb25lbnQvdGVtcGxhdGUtb25seSc7XG5pbXBvcnQgdHlwZSB7IFdpdGhCb3VuZEFyZ3MgfSBmcm9tICdAZ2xpbnQvdGVtcGxhdGUnO1xuXG50eXBlIENlbGw8Vj4gPSBSZXR1cm5UeXBlPHR5cGVvZiBjZWxsPFY-PjtcbnR5cGUgUG9wb3ZlckFyZ3MgPSBQb3BvdmVyU2lnbmF0dXJlWydBcmdzJ107XG50eXBlIFBvcG92ZXJCbG9ja1BhcmFtcyA9IFBvcG92ZXJTaWduYXR1cmVbJ0Jsb2NrcyddWydkZWZhdWx0J11bMF07XG5cbmNvbnN0IFRBQlNURVJfQ09ORklHX0NPTlRFTlQgPSBnZXRUYWJzdGVyQXR0cmlidXRlKFxuICB7XG4gICAgbW92ZXI6IHtcbiAgICAgIGRpcmVjdGlvbjogVHlwZXMuTW92ZXJEaXJlY3Rpb25zLkJvdGgsXG4gICAgICBjeWNsaWM6IHRydWUsXG4gICAgfSxcbiAgICBkZWxvc2VyOiB7fSxcbiAgfSxcbiAgdHJ1ZVxuKTtcblxuY29uc3QgVEFCU1RFUl9DT05GSUdfVFJJR0dFUiA9IHtcbiAgZGVsb3Nlcjoge30sXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFNpZ25hdHVyZSB7XG4gIEFyZ3M6IFBvcG92ZXJBcmdzO1xuICBCbG9ja3M6IHtcbiAgICBkZWZhdWx0OiBbXG4gICAgICB7XG4gICAgICAgIGFycm93OiBQb3BvdmVyQmxvY2tQYXJhbXNbJ2Fycm93J107XG4gICAgICAgIHRyaWdnZXI6IFdpdGhCb3VuZEFyZ3M8XG4gICAgICAgICAgdHlwZW9mIHRyaWdnZXIsXG4gICAgICAgICAgJ3RyaWdnZXJFbGVtZW50JyB8ICdjb250ZW50SWQnIHwgJ2lzT3BlbicgfCAnc2V0SG9vaydcbiAgICAgICAgPjtcbiAgICAgICAgVHJpZ2dlcjogV2l0aEJvdW5kQXJnczx0eXBlb2YgVHJpZ2dlciwgJ3RyaWdnZXJNb2RpZmllcic-O1xuICAgICAgICBDb250ZW50OiBXaXRoQm91bmRBcmdzPFxuICAgICAgICAgIHR5cGVvZiBDb250ZW50LFxuICAgICAgICAgICd0cmlnZ2VyRWxlbWVudCcgfCAnY29udGVudElkJyB8ICdpc09wZW4nIHwgJ1BvcG92ZXJDb250ZW50J1xuICAgICAgICA-O1xuICAgICAgICBpc09wZW46IGJvb2xlYW47XG4gICAgICB9LFxuICAgIF07XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VwYXJhdG9yU2lnbmF0dXJlIHtcbiAgRWxlbWVudDogSFRNTERpdkVsZW1lbnQ7XG4gIEFyZ3M6IHt9O1xuICBCbG9ja3M6IHsgZGVmYXVsdDogW10gfTtcbn1cblxuY29uc3QgU2VwYXJhdG9yOiBUT0M8U2VwYXJhdG9yU2lnbmF0dXJlPiA9IDx0ZW1wbGF0ZT5cbiAgPGRpdiByb2xlPVwic2VwYXJhdG9yXCIgLi4uYXR0cmlidXRlcz5cbiAgICB7e3lpZWxkfX1cbiAgPC9kaXY-XG48L3RlbXBsYXRlPjtcblxuLyoqXG4gKiBXZSBmb2N1cyBpdGVtcyBvbiBgcG9pbnRlck1vdmVgIHRvIGFjaGlldmUgdGhlIGZvbGxvd2luZzpcbiAqXG4gKiAtIE1vdXNlIG92ZXIgYW4gaXRlbSAoaXQgZm9jdXNlcylcbiAqIC0gTGVhdmUgbW91c2Ugd2hlcmUgaXQgaXMgYW5kIHVzZSBrZXlib2FyZCB0byBmb2N1cyBhIGRpZmZlcmVudCBpdGVtXG4gKiAtIFdpZ2dsZSBtb3VzZSB3aXRob3V0IGl0IGxlYXZpbmcgcHJldmlvdXNseSBmb2N1c2VkIGl0ZW1cbiAqIC0gUHJldmlvdXNseSBmb2N1c2VkIGl0ZW0gc2hvdWxkIHJlLWZvY3VzXG4gKlxuICogSWYgd2UgdXNlZCBgbW91c2VPdmVyYC9gbW91c2VFbnRlcmAgaXQgd291bGQgbm90IHJlLWZvY3VzIHdoZW4gdGhlIG1vdXNlXG4gKiB3aWdnbGVzLiBUaGlzIGlzIHRvIG1hdGNoIG5hdGl2ZSBtZW51IGltcGxlbWVudGF0aW9uLlxuICovXG5mdW5jdGlvbiBmb2N1c09uSG92ZXIoZTogUG9pbnRlckV2ZW50KSB7XG4gIGNvbnN0IGl0ZW0gPSBlLmN1cnJlbnRUYXJnZXQ7XG5cbiAgaWYgKGl0ZW0gaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgIGl0ZW0_LmZvY3VzKCk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJdGVtU2lnbmF0dXJlIHtcbiAgRWxlbWVudDogSFRNTEJ1dHRvbkVsZW1lbnQ7XG4gIEFyZ3M6IHsgb25TZWxlY3Q_OiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkIH07XG4gIEJsb2NrczogeyBkZWZhdWx0OiBbXSB9O1xufVxuXG5jb25zdCBJdGVtOiBUT0M8SXRlbVNpZ25hdHVyZT4gPSA8dGVtcGxhdGU-XG4gIDxidXR0b25cbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICByb2xlPVwibWVudWl0ZW1cIlxuICAgIHt7ISBAZ2xpbnQtaWdub3JlICF9fVxuICAgIHt7KGlmIEBvblNlbGVjdCAobW9kaWZpZXIgb24gXCJjbGlja1wiIEBvblNlbGVjdCkpfX1cbiAgICB7e29uIFwicG9pbnRlcm1vdmVcIiBmb2N1c09uSG92ZXJ9fVxuICAgIC4uLmF0dHJpYnV0ZXNcbiAgPlxuICAgIHt7eWllbGR9fVxuICA8L2J1dHRvbj5cbjwvdGVtcGxhdGU-O1xuXG5jb25zdCBpbnN0YWxsQ29udGVudCA9IGVNb2RpZmllcjx7XG4gIEVsZW1lbnQ6IEhUTUxFbGVtZW50O1xuICBBcmdzOiB7XG4gICAgTmFtZWQ6IHtcbiAgICAgIGlzT3BlbjogQ2VsbDxib29sZWFuPjtcbiAgICAgIHRyaWdnZXJFbGVtZW50OiBDZWxsPEhUTUxFbGVtZW50PjtcbiAgICB9O1xuICB9O1xufT4oKGVsZW1lbnQsIF86IFtdLCB7IGlzT3BlbiwgdHJpZ2dlckVsZW1lbnQgfSkgPT4ge1xuICAvLyBmb2N1cyBmaXJzdCBmb2N1c2FibGUgZWxlbWVudCBvbiB0aGUgY29udGVudFxuICBjb25zdCB0YWJzdGVyID0gZ2V0VGFic3Rlcih3aW5kb3cpO1xuICBjb25zdCBmaXJzdEZvY3VzYWJsZSA9IHRhYnN0ZXI_LmZvY3VzYWJsZS5maW5kRmlyc3Qoe1xuICAgIGNvbnRhaW5lcjogZWxlbWVudCxcbiAgfSk7XG5cbiAgZmlyc3RGb2N1c2FibGU_LmZvY3VzKCk7XG5cbiAgLy8gbGlzdGVuIGZvciBcIm91dHNpZGVcIiBjbGlja3NcbiAgZnVuY3Rpb24gb25Eb2N1bWVudENsaWNrKGU6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAoXG4gICAgICBpc09wZW4uY3VycmVudCAmJlxuICAgICAgZS50YXJnZXQgJiZcbiAgICAgICFlbGVtZW50LmNvbnRhaW5zKGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50KSAmJlxuICAgICAgIXRyaWdnZXJFbGVtZW50LmN1cnJlbnQ_LmNvbnRhaW5zKGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50KVxuICAgICkge1xuICAgICAgaXNPcGVuLmN1cnJlbnQgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvLyBsaXN0ZW4gZm9yIHRoZSBlc2NhcGUga2V5XG4gIGZ1bmN0aW9uIG9uRG9jdW1lbnRLZXlkb3duKGU6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoaXNPcGVuLmN1cnJlbnQgJiYgZS5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICBpc09wZW4uY3VycmVudCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgb25Eb2N1bWVudENsaWNrKTtcbiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIG9uRG9jdW1lbnRLZXlkb3duKTtcblxuICByZXR1cm4gKCkgPT4ge1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgb25Eb2N1bWVudENsaWNrKTtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgb25Eb2N1bWVudEtleWRvd24pO1xuICB9O1xufSk7XG5cbmludGVyZmFjZSBQcml2YXRlQ29udGVudFNpZ25hdHVyZSB7XG4gIEVsZW1lbnQ6IEhUTUxEaXZFbGVtZW50O1xuICBBcmdzOiB7XG4gICAgdHJpZ2dlckVsZW1lbnQ6IENlbGw8SFRNTEVsZW1lbnQ-O1xuICAgIGNvbnRlbnRJZDogc3RyaW5nO1xuICAgIGlzT3BlbjogQ2VsbDxib29sZWFuPjtcbiAgICBQb3BvdmVyQ29udGVudDogUG9wb3ZlckJsb2NrUGFyYW1zWydDb250ZW50J107XG4gIH07XG4gIEJsb2NrczogeyBkZWZhdWx0OiBbeyBJdGVtOiB0eXBlb2YgSXRlbTsgU2VwYXJhdG9yOiB0eXBlb2YgU2VwYXJhdG9yIH1dIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGVudFNpZ25hdHVyZSB7XG4gIEVsZW1lbnQ6IFByaXZhdGVDb250ZW50U2lnbmF0dXJlWydFbGVtZW50J107XG4gIEFyZ3M6IHt9O1xuICBCbG9ja3M6IFByaXZhdGVDb250ZW50U2lnbmF0dXJlWydCbG9ja3MnXTtcbn1cblxuY29uc3QgQ29udGVudDogVE9DPFByaXZhdGVDb250ZW50U2lnbmF0dXJlPiA9IDx0ZW1wbGF0ZT5cbiAge3sjaWYgQGlzT3Blbi5jdXJyZW50fX1cbiAgICA8QFBvcG92ZXJDb250ZW50XG4gICAgICBpZD17e0Bjb250ZW50SWR9fVxuICAgICAgcm9sZT1cIm1lbnVcIlxuICAgICAgZGF0YS10YWJzdGVyPXt7VEFCU1RFUl9DT05GSUdfQ09OVEVOVH19XG4gICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAge3tpbnN0YWxsQ29udGVudCBpc09wZW49QGlzT3BlbiB0cmlnZ2VyRWxlbWVudD1AdHJpZ2dlckVsZW1lbnR9fVxuICAgICAge3tvbiBcImNsaWNrXCIgQGlzT3Blbi50b2dnbGV9fVxuICAgICAgLi4uYXR0cmlidXRlc1xuICAgID5cbiAgICAgIHt7eWllbGQgKGhhc2ggSXRlbT1JdGVtIFNlcGFyYXRvcj1TZXBhcmF0b3IpfX1cbiAgICA8L0BQb3BvdmVyQ29udGVudD5cbiAge3svaWZ9fVxuPC90ZW1wbGF0ZT47XG5cbmludGVyZmFjZSBQcml2YXRlVHJpZ2dlck1vZGlmaWVyU2lnbmF0dXJlIHtcbiAgRWxlbWVudDogSFRNTEVsZW1lbnQ7XG4gIEFyZ3M6IHtcbiAgICBOYW1lZDoge1xuICAgICAgdHJpZ2dlckVsZW1lbnQ6IENlbGw8SFRNTEVsZW1lbnQ-O1xuICAgICAgaXNPcGVuOiBDZWxsPGJvb2xlYW4-O1xuICAgICAgY29udGVudElkOiBzdHJpbmc7XG4gICAgICBzZXRIb29rOiBQb3BvdmVyQmxvY2tQYXJhbXNbJ3NldEhvb2snXTtcbiAgICB9O1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyaWdnZXJNb2RpZmllclNpZ25hdHVyZSB7XG4gIEVsZW1lbnQ6IFByaXZhdGVUcmlnZ2VyTW9kaWZpZXJTaWduYXR1cmVbJ0VsZW1lbnQnXTtcbn1cblxuY29uc3QgdHJpZ2dlciA9IGVNb2RpZmllcjxQcml2YXRlVHJpZ2dlck1vZGlmaWVyU2lnbmF0dXJlPihcbiAgKGVsZW1lbnQsIF86IFtdLCB7IHRyaWdnZXJFbGVtZW50LCBpc09wZW4sIGNvbnRlbnRJZCwgc2V0SG9vayB9KSA9PiB7XG4gICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGFzcG9wdXAnLCAnbWVudScpO1xuXG4gICAgaWYgKGlzT3Blbi5jdXJyZW50KSB7XG4gICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1jb250cm9scycsIGNvbnRlbnRJZCk7XG4gICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsICd0cnVlJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWNvbnRyb2xzJyk7XG4gICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsICdmYWxzZScpO1xuICAgIH1cblxuICAgIHNldFRhYnN0ZXJBdHRyaWJ1dGUoZWxlbWVudCwgVEFCU1RFUl9DT05GSUdfVFJJR0dFUik7XG5cbiAgICBjb25zdCBvblRyaWdnZXJDbGljayA9ICgpID0-IGlzT3Blbi50b2dnbGUoKTtcblxuICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBvblRyaWdnZXJDbGljayk7XG5cbiAgICB0cmlnZ2VyRWxlbWVudC5jdXJyZW50ID0gZWxlbWVudDtcbiAgICBzZXRIb29rKGVsZW1lbnQpO1xuXG4gICAgcmV0dXJuICgpID0-IHtcbiAgICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBvblRyaWdnZXJDbGljayk7XG4gICAgfTtcbiAgfVxuKTtcblxuaW50ZXJmYWNlIFByaXZhdGVUcmlnZ2VyU2lnbmF0dXJlIHtcbiAgRWxlbWVudDogSFRNTEJ1dHRvbkVsZW1lbnQ7XG4gIEFyZ3M6IHtcbiAgICB0cmlnZ2VyTW9kaWZpZXI6IFdpdGhCb3VuZEFyZ3M8XG4gICAgICB0eXBlb2YgdHJpZ2dlcixcbiAgICAgICd0cmlnZ2VyRWxlbWVudCcgfCAnY29udGVudElkJyB8ICdpc09wZW4nIHwgJ3NldEhvb2snXG4gICAgPjtcbiAgfTtcbiAgQmxvY2tzOiB7IGRlZmF1bHQ6IFtdIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJpZ2dlclNpZ25hdHVyZSB7XG4gIEVsZW1lbnQ6IFByaXZhdGVUcmlnZ2VyU2lnbmF0dXJlWydFbGVtZW50J107XG4gIEFyZ3M6IHt9O1xuICBCbG9ja3M6IFByaXZhdGVUcmlnZ2VyU2lnbmF0dXJlWydCbG9ja3MnXTtcbn1cblxuY29uc3QgVHJpZ2dlcjogVE9DPFByaXZhdGVUcmlnZ2VyU2lnbmF0dXJlPiA9IDx0ZW1wbGF0ZT5cbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIge3tAdHJpZ2dlck1vZGlmaWVyfX0gLi4uYXR0cmlidXRlcz5cbiAgICB7e3lpZWxkfX1cbiAgPC9idXR0b24-XG48L3RlbXBsYXRlPjtcblxuY29uc3QgSXNPcGVuID0gKCkgPT4gY2VsbDxib29sZWFuPihmYWxzZSk7XG5jb25zdCBUcmlnZ2VyRWxlbWVudCA9ICgpID0-IGNlbGw8SFRNTEVsZW1lbnQ-KCk7XG5cbmV4cG9ydCBjbGFzcyBNZW51IGV4dGVuZHMgQ29tcG9uZW50PFNpZ25hdHVyZT4ge1xuICBjb250ZW50SWQgPSBndWlkRm9yKHRoaXMpO1xuXG4gIDx0ZW1wbGF0ZT5cbiAgICB7eyNsZXQgKElzT3BlbikgKFRyaWdnZXJFbGVtZW50KSBhcyB8aXNPcGVuIHRyaWdnZXJFbHx9fVxuICAgICAgPFBvcG92ZXJcbiAgICAgICAgQGZsaXBPcHRpb25zPXt7QGZsaXBPcHRpb25zfX1cbiAgICAgICAgQG1pZGRsZXdhcmU9e3tAbWlkZGxld2FyZX19XG4gICAgICAgIEBvZmZzZXRPcHRpb25zPXt7QG9mZnNldE9wdGlvbnN9fVxuICAgICAgICBAcGxhY2VtZW50PXt7QHBsYWNlbWVudH19XG4gICAgICAgIEBzaGlmdE9wdGlvbnM9e3tAc2hpZnRPcHRpb25zfX1cbiAgICAgICAgQHN0cmF0ZWd5PXt7QHN0cmF0ZWd5fX1cbiAgICAgICAgQGlubGluZT17e0BpbmxpbmV9fVxuICAgICAgICBhcyB8cHxcbiAgICAgID5cbiAgICAgICAge3sjbGV0XG4gICAgICAgICAgKG1vZGlmaWVyXG4gICAgICAgICAgICB0cmlnZ2VyXG4gICAgICAgICAgICB0cmlnZ2VyRWxlbWVudD10cmlnZ2VyRWxcbiAgICAgICAgICAgIGlzT3Blbj1pc09wZW5cbiAgICAgICAgICAgIGNvbnRlbnRJZD10aGlzLmNvbnRlbnRJZFxuICAgICAgICAgICAgc2V0SG9vaz1wLnNldEhvb2tcbiAgICAgICAgICApXG4gICAgICAgICAgYXMgfHRyaWdnZXJNb2RpZmllcnxcbiAgICAgICAgfX1cbiAgICAgICAgICB7e3lpZWxkXG4gICAgICAgICAgICAoaGFzaFxuICAgICAgICAgICAgICB0cmlnZ2VyPXRyaWdnZXJNb2RpZmllclxuICAgICAgICAgICAgICBUcmlnZ2VyPShjb21wb25lbnQgVHJpZ2dlciB0cmlnZ2VyTW9kaWZpZXI9dHJpZ2dlck1vZGlmaWVyKVxuICAgICAgICAgICAgICBDb250ZW50PShjb21wb25lbnRcbiAgICAgICAgICAgICAgICBDb250ZW50XG4gICAgICAgICAgICAgICAgUG9wb3ZlckNvbnRlbnQ9cC5Db250ZW50XG4gICAgICAgICAgICAgICAgaXNPcGVuPWlzT3BlblxuICAgICAgICAgICAgICAgIHRyaWdnZXJFbGVtZW50PXRyaWdnZXJFbFxuICAgICAgICAgICAgICAgIGNvbnRlbnRJZD10aGlzLmNvbnRlbnRJZFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGFycm93PXAuYXJyb3dcbiAgICAgICAgICAgICAgaXNPcGVuPWlzT3Blbi5jdXJyZW50XG4gICAgICAgICAgICApXG4gICAgICAgICAgfX1cbiAgICAgICAge3svbGV0fX1cbiAgICAgIDwvUG9wb3Zlcj5cbiAgICB7ey9sZXR9fVxuICA8L3RlbXBsYXRlPlxufVxuXG5leHBvcnQgZGVmYXVsdCBNZW51O1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLGVBQWUscUJBQXFCO0FBQzNDLFNBQVMsSUFBSSxRQUFRLGdCQUFnQjtBQUNyQyxTQUFTLEVBQUUsUUFBUSxrQkFBa0I7QUFDckMsU0FBUyxPQUFPLFFBQVEsMEJBQTBCO0FBRWxELFNBQVMsWUFBWSxTQUFTLFFBQVEsaUJBQWlCO0FBQ3ZELFNBQVMsSUFBSSxRQUFRLGtCQUFrQjtBQUN2QyxTQUFTLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBRSxLQUFLLFFBQVEsVUFBVTtBQUV0RixTQUFTLE9BQU8sRUFBRSxLQUFLLGFBQWEsZ0JBQWdCLFFBQVEsZ0JBQWdCO0FBRTVFLGNBQWMsR0FBRyxRQUFRLGlDQUFpQztBQUMxRCxjQUFjLGFBQWEsUUFBUSxrQkFBa0I7S0FFaEQsS0FBSyxLQUFLLGtCQUFrQjtLQUM1QixjQUFjLGlCQUFpQjtLQUMvQixxQkFBcUIsaUJBQWlCLFVBQVUsV0FBVztBQUVoRSxNQUFNLHlCQUF5QixvQkFDN0I7SUFDRSxPQUFPO1FBQ0wsV0FBVyxNQUFNLGVBQWUsQ0FBQyxJQUFJO1FBQ3JDLFFBQVE7SUFDVjtJQUNB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"],"names":["TABSTER_CONFIG_CONTENT","getTabsterAttribute","mover","direction","Types","MoverDirections","Both","cyclic","deloser","TABSTER_CONFIG_TRIGGER","Separator","setComponentTemplate","precompileTemplate","strictMode","templateOnly","focusOnHover","e1","item1","currentTarget","HTMLElement","focus","Item","scope","on","installContent","eModifier","element1","_1","isOpen","isOpen1","triggerElement","triggerElement1","tabster1","getTabster","window","firstFocusable1","focusable","findFirst","container","onDocumentClick1","current","target","contains","onDocumentKeydown1","key","document","addEventListener","removeEventListener","Content","hash","trigger","contentId","contentId1","setHook","setHook1","setAttribute","removeAttribute","setTabsterAttribute","onTriggerClick1","toggle","Trigger","IsOpen","cell","TriggerElement","Menu","Component","guidFor","Popover"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"buttons.js","sources":["../../../src/components/one-time-password/buttons.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport { assert } from '@ember/debug';\nimport { on } from '@ember/modifier';\nimport type { TOC } from '@ember/component/template-only';\nconst reset = (event1: Event)=>{\n assert('[BUG]: reset called without an event.target', event1.target instanceof HTMLElement);\n let form1 = event1.target.closest('form');\n assert('Form is missing. Cannot use <Reset> without being contained within a <form>', form1 instanceof HTMLFormElement);\n form1.reset();\n};\nexport const Submit: TOC<{\n Element: HTMLButtonElement;\n Blocks: {\n default: [];\n };\n}> = template(`\n <button type=\"submit\" ...attributes>Submit</button>\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nexport const Reset: TOC<{\n Element: HTMLButtonElement;\n Blocks: {\n default: [];\n };\n}> = template(`\n <button type=\"button\" {{on \"click\" reset}} ...attributes>{{yield}}</button>\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL252cC9EZXZlbG9wbWVudC9OdWxsVm94UG9wdWxpL2VtYmVyLXByaW1pdGl2ZXMvZW1iZXItcHJpbWl0aXZlcy9zcmMvY29tcG9uZW50cy9vbmUtdGltZS1wYXNzd29yZC9idXR0b25zLmd0cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhc3NlcnQgfSBmcm9tICdAZW1iZXIvZGVidWcnO1xuaW1wb3J0IHsgb24gfSBmcm9tICdAZW1iZXIvbW9kaWZpZXInO1xuXG5pbXBvcnQgdHlwZSB7IFRPQyB9IGZyb20gJ0BlbWJlci9jb21wb25lbnQvdGVtcGxhdGUtb25seSc7XG5cbmNvbnN0IHJlc2V0ID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICBhc3NlcnQoJ1tCVUddOiByZXNldCBjYWxsZWQgd2l0aG91dCBhbiBldmVudC50YXJnZXQnLCBldmVudC50YXJnZXQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCk7XG5cbiAgbGV0IGZvcm0gPSBldmVudC50YXJnZXQuY2xvc2VzdCgnZm9ybScpO1xuXG4gIGFzc2VydChcbiAgICAnRm9ybSBpcyBtaXNzaW5nLiBDYW5ub3QgdXNlIDxSZXNldD4gd2l0aG91dCBiZWluZyBjb250YWluZWQgd2l0aGluIGEgPGZvcm0-JyxcbiAgICBmb3JtIGluc3RhbmNlb2YgSFRNTEZvcm1FbGVtZW50XG4gICk7XG5cbiAgZm9ybS5yZXNldCgpO1xufTtcblxuZXhwb3J0IGNvbnN0IFN1Ym1pdDogVE9DPHtcbiAgRWxlbWVudDogSFRNTEJ1dHRvbkVsZW1lbnQ7XG4gIEJsb2NrczogeyBkZWZhdWx0OiBbXSB9O1xufT4gPSA8dGVtcGxhdGU-XG4gIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIC4uLmF0dHJpYnV0ZXM-U3VibWl0PC9idXR0b24-XG48L3RlbXBsYXRlPjtcblxuZXhwb3J0IGNvbnN0IFJlc2V0OiBUT0M8e1xuICBFbGVtZW50OiBIVE1MQnV0dG9uRWxlbWVudDtcbiAgQmxvY2tzOiB7IGRlZmF1bHQ6IFtdIH07XG59PiA9IDx0ZW1wbGF0ZT5cbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIge3tvbiBcImNsaWNrXCIgcmVzZXR9fSAuLi5hdHRyaWJ1dGVzPnt7eWllbGR9fTwvYnV0dG9uPlxuPC90ZW1wbGF0ZT47XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFNBQVMsTUFBTSxRQUFRLGVBQWU7QUFDdEMsU0FBUyxFQUFFLFFBQVEsa0JBQWtCO0FBRXJDLGNBQWMsR0FBRyxRQUFRLGlDQUFpQztBQUUxRCxNQUFNLFFBQVEsQ0FBQyxRQUFPO0lBQ3BCLE9BQU8sK0NBQStDLE9BQU0sTUFBTSxZQUFZO0lBRTlFLElBQUksUUFBTyxPQUFNLE1BQU0sQ0FBQyxPQUFPLENBQUM7SUFFaEMsT0FDRSwrRUFDQSxpQkFBZ0I7SUFHbEIsTUFBSyxLQUFLO0FBQ1o7QUFFQSxPQUFPLE1BQU0sUUFBUTtJQUNuQixTQUFTO0lBQ1Q7UUFBVTs7S0FDUCxTQUFVLENBQUE7O0FBRWYsQ0FBQSxFQUFBO0lBQUE7UUFBQSxPQUFBLEtBQUEsU0FBQSxDQUFBLEVBQVc7SUFBRDtBQUFBLEdBQUU7QUFFWixPQUFPLE1BQU0sT0FBTztJQUNsQixTQUFTO0lBQ1Q7UUFBVTs7S0FDUCxTQUFVLENBQUE7O0FBRWYsQ0FBQSxFQUFBO0lBQUE7UUFBQSxPQUFBLEtBQUEsU0FBQSxDQUFBLEVBQVc7SUFBRDtBQUFBLEdBQUUifQ"],"names":["reset","event1","assert","target","HTMLElement","form1","closest","HTMLFormElement","Submit","precompileTemplate","strictMode","templateOnly","Reset","scope","on"],"mappings":";;;;;;AAKA,MAAMA,KAAA,GAASC,MAAO,IAAA;AACpBC,EAAAA,MAAA,CAAO,6CAA+CD,EAAAA,MAAA,CAAME,MAAM,YAAYC,WAAA,CAAA,CAAA;AAE9E,EAAA,IAAIC,KAAA,GAAOJ,MAAA,CAAME,MAAM,CAACG,OAAO,CAAC,MAAA,CAAA,CAAA;AAEhCJ,EAAAA,MAAA,CACE,6EAAA,EACAG,KAAA,YAAgBE,eAAA,CAAA,CAAA;AAGlBF,EAAAA,KAAA,CAAKL,KAAK,EAAA,CAAA;AACZ,CAAA,CAAA;AAEaQ,MAAAA,SAGRC,oBAAAA,CAAAA,kBAAA,CAEL,6DAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA,EAAA;AAEGC,MAAAA,QAGRH,oBAAAA,CAAAA,kBAAA,CAEL,uFAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAG,EAAAA,KAAA,EAAAA,OAAA;IAAAC,EAAA;AAAAd,IAAAA,KAAAA;AAAA,GAAA,CAAA;AAAU,CAAA,CAAA,EAAAW,YAAA,EAAA;;;;"}
1
+ {"version":3,"file":"buttons.js","sources":["../../../src/components/one-time-password/buttons.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport { assert } from '@ember/debug';\nimport { on } from '@ember/modifier';\nimport type { TOC } from '@ember/component/template-only';\nconst reset = (event1: Event)=>{\n assert('[BUG]: reset called without an event.target', event1.target instanceof HTMLElement);\n let form1 = event1.target.closest('form');\n assert('Form is missing. Cannot use <Reset> without being contained within a <form>', form1 instanceof HTMLFormElement);\n form1.reset();\n};\nexport const Submit: TOC<{\n Element: HTMLButtonElement;\n Blocks: {\n default: [];\n };\n}> = template(`\n <button type=\"submit\" ...attributes>Submit</button>\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nexport const Reset: TOC<{\n Element: HTMLButtonElement;\n Blocks: {\n default: [];\n };\n}> = template(`\n <button type=\"button\" {{on \"click\" reset}} ...attributes>{{yield}}</button>\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2VtYmVyLXByaW1pdGl2ZXMvZW1iZXItcHJpbWl0aXZlcy9lbWJlci1wcmltaXRpdmVzL3NyYy9jb21wb25lbnRzL29uZS10aW1lLXBhc3N3b3JkL2J1dHRvbnMuZ3RzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFzc2VydCB9IGZyb20gJ0BlbWJlci9kZWJ1Zyc7XG5pbXBvcnQgeyBvbiB9IGZyb20gJ0BlbWJlci9tb2RpZmllcic7XG5cbmltcG9ydCB0eXBlIHsgVE9DIH0gZnJvbSAnQGVtYmVyL2NvbXBvbmVudC90ZW1wbGF0ZS1vbmx5JztcblxuY29uc3QgcmVzZXQgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gIGFzc2VydCgnW0JVR106IHJlc2V0IGNhbGxlZCB3aXRob3V0IGFuIGV2ZW50LnRhcmdldCcsIGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KTtcblxuICBsZXQgZm9ybSA9IGV2ZW50LnRhcmdldC5jbG9zZXN0KCdmb3JtJyk7XG5cbiAgYXNzZXJ0KFxuICAgICdGb3JtIGlzIG1pc3NpbmcuIENhbm5vdCB1c2UgPFJlc2V0PiB3aXRob3V0IGJlaW5nIGNvbnRhaW5lZCB3aXRoaW4gYSA8Zm9ybT4nLFxuICAgIGZvcm0gaW5zdGFuY2VvZiBIVE1MRm9ybUVsZW1lbnRcbiAgKTtcblxuICBmb3JtLnJlc2V0KCk7XG59O1xuXG5leHBvcnQgY29uc3QgU3VibWl0OiBUT0M8e1xuICBFbGVtZW50OiBIVE1MQnV0dG9uRWxlbWVudDtcbiAgQmxvY2tzOiB7IGRlZmF1bHQ6IFtdIH07XG59PiA9IDx0ZW1wbGF0ZT5cbiAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgLi4uYXR0cmlidXRlcz5TdWJtaXQ8L2J1dHRvbj5cbjwvdGVtcGxhdGU-O1xuXG5leHBvcnQgY29uc3QgUmVzZXQ6IFRPQzx7XG4gIEVsZW1lbnQ6IEhUTUxCdXR0b25FbGVtZW50O1xuICBCbG9ja3M6IHsgZGVmYXVsdDogW10gfTtcbn0-ID0gPHRlbXBsYXRlPlxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiB7e29uIFwiY2xpY2tcIiByZXNldH19IC4uLmF0dHJpYnV0ZXM-e3t5aWVsZH19PC9idXR0b24-XG48L3RlbXBsYXRlPjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsU0FBUyxNQUFNLFFBQVEsZUFBZTtBQUN0QyxTQUFTLEVBQUUsUUFBUSxrQkFBa0I7QUFFckMsY0FBYyxHQUFHLFFBQVEsaUNBQWlDO0FBRTFELE1BQU0sUUFBUSxDQUFDLFFBQU87SUFDcEIsT0FBTywrQ0FBK0MsT0FBTSxNQUFNLFlBQVk7SUFFOUUsSUFBSSxRQUFPLE9BQU0sTUFBTSxDQUFDLE9BQU8sQ0FBQztJQUVoQyxPQUNFLCtFQUNBLGlCQUFnQjtJQUdsQixNQUFLLEtBQUs7QUFDWjtBQUVBLE9BQU8sTUFBTSxRQUFRO0lBQ25CLFNBQVM7SUFDVDtRQUFVOztLQUNQLFNBQVUsQ0FBQTs7QUFFZixDQUFBLEVBQUE7SUFBQTtRQUFBLE9BQUEsS0FBQSxTQUFBLENBQUEsRUFBVztJQUFEO0FBQUEsR0FBRTtBQUVaLE9BQU8sTUFBTSxPQUFPO0lBQ2xCLFNBQVM7SUFDVDtRQUFVOztLQUNQLFNBQVUsQ0FBQTs7QUFFZixDQUFBLEVBQUE7SUFBQTtRQUFBLE9BQUEsS0FBQSxTQUFBLENBQUEsRUFBVztJQUFEO0FBQUEsR0FBRSJ9"],"names":["reset","event1","assert","target","HTMLElement","form1","closest","HTMLFormElement","Submit","precompileTemplate","strictMode","templateOnly","Reset","scope","on"],"mappings":";;;;;;AAKA,MAAMA,KAAA,GAASC,MAAO,IAAA;AACpBC,EAAAA,MAAA,CAAO,6CAA+CD,EAAAA,MAAA,CAAME,MAAM,YAAYC,WAAA,CAAA,CAAA;AAE9E,EAAA,IAAIC,KAAA,GAAOJ,MAAA,CAAME,MAAM,CAACG,OAAO,CAAC,MAAA,CAAA,CAAA;AAEhCJ,EAAAA,MAAA,CACE,6EAAA,EACAG,KAAA,YAAgBE,eAAA,CAAA,CAAA;AAGlBF,EAAAA,KAAA,CAAKL,KAAK,EAAA,CAAA;AACZ,CAAA,CAAA;AAEaQ,MAAAA,SAGRC,oBAAAA,CAAAA,kBAAA,CAEL,6DAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA,EAAA;AAEGC,MAAAA,QAGRH,oBAAAA,CAAAA,kBAAA,CAEL,uFAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAG,EAAAA,KAAA,EAAAA,OAAA;IAAAC,EAAA;AAAAd,IAAAA,KAAAA;AAAA,GAAA,CAAA;AAAU,CAAA,CAAA,EAAAW,YAAA,EAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"input.js","sources":["../../../src/components/one-time-password/input.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport Component from '@glimmer/component';\nimport { warn } from '@ember/debug';\nimport { isDestroyed, isDestroying } from '@ember/destroyable';\nimport { on } from '@ember/modifier';\nimport { buildWaiter } from '@ember/test-waiters';\nimport { autoAdvance, getCollectiveValue, handleNavigation, handlePaste, selectAll } from './utils.ts';\nimport type { TOC } from '@ember/component/template-only';\nimport type { WithBoundArgs } from '@glint/template';\nconst DEFAULT_LENGTH = 6;\nfunction labelFor(inputIndex1: number, labelFn1: undefined | ((index: number) => string)) {\n if (labelFn1) {\n return labelFn1(inputIndex1);\n }\n return `Please enter OTP character ${inputIndex1 + 1}`;\n}\nlet waiter = buildWaiter('ember-primitives:OTPInput:handleChange');\nconst Fields: TOC<{\n /**\n * Any attributes passed to this component will be applied to each input.\n */ Element: HTMLInputElement;\n Args: {\n fields: unknown[];\n labelFn: (index: number) => string;\n handleChange: (event: Event) => void;\n };\n}> = template(`\n {{#each @fields as |_field i|}}\n <label>\n <span class=\"ember-primitives__sr-only\">{{labelFor i @labelFn}}</span>\n <input\n name=\"code{{i}}\"\n type=\"text\"\n inputmode=\"numeric\"\n autocomplete=\"off\"\n ...attributes\n {{on \"click\" selectAll}}\n {{on \"paste\" handlePaste}}\n {{on \"input\" autoAdvance}}\n {{on \"input\" @handleChange}}\n {{on \"keydown\" handleNavigation}}\n />\n </label>\n {{/each}}\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nexport class OTPInput extends Component<{\n /**\n * The collection of individual OTP inputs are contained by a fieldset.\n * Applying the `disabled` attribute to this fieldset will disable\n * all of the inputs, if that's desired.\n */ Element: HTMLFieldSetElement;\n Args: {\n /**\n * How many characters the one-time-password field should be\n * Defaults to 6\n */ length?: number;\n /**\n * To Customize the label of the input fields, you may pass a function.\n * By default, this is `Please enter OTP character ${index + 1}`.\n */ labelFn?: (index: number) => string;\n /**\n * If passed, this function will be called when the <Input> changes.\n * All fields are considered one input.\n */ onChange?: (data: {\n /**\n * The text from the collective `<Input>`\n *\n * `code` _may_ be shorter than `length`\n * if the user has not finished typing / pasting their code\n */ code: string;\n /**\n * will be `true` if `code`'s length matches the passed `@length` or the default of 6\n */ complete: boolean;\n }, /**\n * The last input event received\n */ event: Event) => void;\n };\n Blocks: {\n /**\n * Optionally, you may control how the Fields are rendered, with proceeding text,\n * additional attributes added, etc.\n *\n * This is how you can add custom validation to each input field.\n */ default?: [fields: WithBoundArgs<typeof Fields, 'fields' | 'handleChange' | 'labelFn'>];\n };\n}> {\n /**\n * This is debounced, because we bind to each input,\n * but only want to emit one change event if someone pastes\n * multiple characters\n */ handleChange = (event1: Event)=>{\n if (!this.args.onChange) return;\n if (!this.#token) {\n this.#token = waiter.beginAsync();\n }\n if (this.#frame) {\n cancelAnimationFrame(this.#frame);\n }\n // We use requestAnimationFrame to be friendly to rendering.\n // We don't know if onChange is going to want to cause paints\n // (it's also how we debounce, under the assumption that \"paste\" behavior\n // would be fast enough to be quicker than individual frames\n // (see logic in autoAdvance)\n // )\n this.#frame = requestAnimationFrame(()=>{\n waiter.endAsync(this.#token);\n if (isDestroyed(this) || isDestroying(this)) return;\n if (!this.args.onChange) return;\n let value1 = getCollectiveValue(event1.target, this.length);\n if (value1 === undefined) {\n warn(`Value could not be determined for the OTP field. was it removed from the DOM?`, {\n id: 'ember-primitives.OTPInput.missing-value'\n });\n return;\n }\n this.args.onChange({\n code: value1,\n complete: value1.length === this.length\n }, event1);\n });\n };\n #token: unknown | undefined;\n #frame: number | undefined;\n get length() {\n return this.args.length ?? DEFAULT_LENGTH;\n }\n get fields() {\n // We only need to iterate a number of times,\n // so we don't care about the actual value or\n // referential integrity here\n return new Array(this.length);\n }\n static{\n template(`\n <fieldset ...attributes>\n {{#let\n (component Fields fields=this.fields handleChange=this.handleChange labelFn=@labelFn)\n as |CurriedFields|\n }}\n {{#if (has-block)}}\n {{yield CurriedFields}}\n {{else}}\n <CurriedFields />\n {{/if}}\n {{/let}}\n\n <style>\n .ember-primitives__sr-only { position: absolute; width: 1px; height: 1px; padding: 0;\n margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border-width:\n 0; }\n </style>\n </fieldset>\n `, {\n component: this,\n eval () {\n return eval(arguments[0]);\n }\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL252cC9EZXZlbG9wbWVudC9OdWxsVm94UG9wdWxpL2VtYmVyLXByaW1pdGl2ZXMvZW1iZXItcHJpbWl0aXZlcy9zcmMvY29tcG9uZW50cy9vbmUtdGltZS1wYXNzd29yZC9pbnB1dC5ndHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvbXBvbmVudCBmcm9tICdAZ2xpbW1lci9jb21wb25lbnQnO1xuaW1wb3J0IHsgd2FybiB9IGZyb20gJ0BlbWJlci9kZWJ1Zyc7XG5pbXBvcnQgeyBpc0Rlc3Ryb3llZCwgaXNEZXN0cm95aW5nIH0gZnJvbSAnQGVtYmVyL2Rlc3Ryb3lhYmxlJztcbmltcG9ydCB7IG9uIH0gZnJvbSAnQGVtYmVyL21vZGlmaWVyJztcbmltcG9ydCB7IGJ1aWxkV2FpdGVyIH0gZnJvbSAnQGVtYmVyL3Rlc3Qtd2FpdGVycyc7XG5cbmltcG9ydCB7XG4gIGF1dG9BZHZhbmNlLFxuICBnZXRDb2xsZWN0aXZlVmFsdWUsXG4gIGhhbmRsZU5hdmlnYXRpb24sXG4gIGhhbmRsZVBhc3RlLFxuICBzZWxlY3RBbGwsXG59IGZyb20gJy4vdXRpbHMudHMnO1xuXG5pbXBvcnQgdHlwZSB7IFRPQyB9IGZyb20gJ0BlbWJlci9jb21wb25lbnQvdGVtcGxhdGUtb25seSc7XG5pbXBvcnQgdHlwZSB7IFdpdGhCb3VuZEFyZ3MgfSBmcm9tICdAZ2xpbnQvdGVtcGxhdGUnO1xuXG5jb25zdCBERUZBVUxUX0xFTkdUSCA9IDY7XG5cbmZ1bmN0aW9uIGxhYmVsRm9yKGlucHV0SW5kZXg6IG51bWJlciwgbGFiZWxGbjogdW5kZWZpbmVkIHwgKChpbmRleDogbnVtYmVyKSA9PiBzdHJpbmcpKSB7XG4gIGlmIChsYWJlbEZuKSB7XG4gICAgcmV0dXJuIGxhYmVsRm4oaW5wdXRJbmRleCk7XG4gIH1cblxuICByZXR1cm4gYFBsZWFzZSBlbnRlciBPVFAgY2hhcmFjdGVyICR7aW5wdXRJbmRleCArIDF9YDtcbn1cblxubGV0IHdhaXRlciA9IGJ1aWxkV2FpdGVyKCdlbWJlci1wcmltaXRpdmVzOk9UUElucHV0OmhhbmRsZUNoYW5nZScpO1xuXG5jb25zdCBGaWVsZHM6IFRPQzx7XG4gIC8qKlxuICAgKiBBbnkgYXR0cmlidXRlcyBwYXNzZWQgdG8gdGhpcyBjb21wb25lbnQgd2lsbCBiZSBhcHBsaWVkIHRvIGVhY2ggaW5wdXQuXG4gICAqL1xuICBFbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50O1xuICBBcmdzOiB7XG4gICAgZmllbGRzOiB1bmtub3duW107XG4gICAgbGFiZWxGbjogKGluZGV4OiBudW1iZXIpID0-IHN0cmluZztcbiAgICBoYW5kbGVDaGFuZ2U6IChldmVudDogRXZlbnQpID0-IHZvaWQ7XG4gIH07XG59PiA9IDx0ZW1wbGF0ZT5cbiAge3sjZWFjaCBAZmllbGRzIGFzIHxfZmllbGQgaXx9fVxuICAgIDxsYWJlbD5cbiAgICAgIDxzcGFuIGNsYXNzPVwiZW1iZXItcHJpbWl0aXZlc19fc3Itb25seVwiPnt7bGFiZWxGb3IgaSBAbGFiZWxGbn19PC9zcGFuPlxuICAgICAgPGlucHV0XG4gICAgICAgIG5hbWU9XCJjb2Rle3tpfX1cIlxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIGlucHV0bW9kZT1cIm51bWVyaWNcIlxuICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAuLi5hdHRyaWJ1dGVzXG4gICAgICAgIHt7b24gXCJjbGlja1wiIHNlbGVjdEFsbH19XG4gICAgICAgIHt7b24gXCJwYXN0ZVwiIGhhbmRsZVBhc3RlfX1cbiAgICAgICAge3tvbiBcImlucHV0XCIgYXV0b0FkdmFuY2V9fVxuICAgICAgICB7e29uIFwiaW5wdXRcIiBAaGFuZGxlQ2hhbmdlfX1cbiAgICAgICAge3tvbiBcImtleWRvd25cIiBoYW5kbGVOYXZpZ2F0aW9ufX1cbiAgICAgIC8-XG4gICAgPC9sYWJlbD5cbiAge3svZWFjaH19XG48L3RlbXBsYXRlPjtcblxuZXhwb3J0IGNsYXNzIE9UUElucHV0IGV4dGVuZHMgQ29tcG9uZW50PHtcbiAgLyoqXG4gICAqIFRoZSBjb2xsZWN0aW9uIG9mIGluZGl2aWR1YWwgT1RQIGlucHV0cyBhcmUgY29udGFpbmVkIGJ5IGEgZmllbGRzZXQuXG4gICAqIEFwcGx5aW5nIHRoZSBgZGlzYWJsZWRgIGF0dHJpYnV0ZSB0byB0aGlzIGZpZWxkc2V0IHdpbGwgZGlzYWJsZVxuICAgKiBhbGwgb2YgdGhlIGlucHV0cywgaWYgdGhhdCdzIGRlc2lyZWQuXG4gICAqL1xuICBFbGVtZW50OiBIVE1MRmllbGRTZXRFbGVtZW50O1xuICBBcmdzOiB7XG4gICAgLyoqXG4gICAgICogSG93IG1hbnkgY2hhcmFjdGVycyB0aGUgb25lLXRpbWUtcGFzc3dvcmQgZmllbGQgc2hvdWxkIGJlXG4gICAgICogRGVmYXVsdHMgdG8gNlxuICAgICAqL1xuICAgIGxlbmd0aD86IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIFRvIEN1c3RvbWl6ZSB0aGUgbGFiZWwgb2YgdGhlIGlucHV0IGZpZWxkcywgeW91IG1heSBwYXNzIGEgZnVuY3Rpb24uXG4gICAgICogQnkgZGVmYXVsdCwgdGhpcyBpcyBgUGxlYXNlIGVudGVyIE9UUCBjaGFyYWN0ZXIgJHtpbmRleCArIDF9YC5cbiAgICAgKi9cbiAgICBsYWJlbEZuPzogKGluZGV4OiBudW1iZXIpID0-IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIElmIHBhc3NlZCwgdGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB3aGVuIHRoZSA8SW5wdXQ-IGNoYW5nZXMuXG4gICAgICogQWxsIGZpZWxkcyBhcmUgY29uc2lkZXJlZCBvbmUgaW5wdXQuXG4gICAgICovXG4gICAgb25DaGFuZ2U_OiAoXG4gICAgICBkYXRhOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgdGV4dCBmcm9tIHRoZSBjb2xsZWN0aXZlIGA8SW5wdXQ-YFxuICAgICAgICAgKlxuICAgICAgICAgKiBgY29kZWAgX21heV8gYmUgc2hvcnRlciB0aGFuIGBsZW5ndGhgXG4gICAgICAgICAqIGlmIHRoZSB1c2VyIGhhcyBub3QgZmluaXNoZWQgdHlwaW5nIC8gcGFzdGluZyB0aGVpciBjb2RlXG4gICAgICAgICAqL1xuICAgICAgICBjb2RlOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiB3aWxsIGJlIGB0cnVlYCBpZiBgY29kZWAncyBsZW5ndGggbWF0Y2hlcyB0aGUgcGFzc2VkIGBAbGVuZ3RoYCBvciB0aGUgZGVmYXVsdCBvZiA2XG4gICAgICAgICAqL1xuICAgICAgICBjb21wbGV0ZTogYm9vbGVhbjtcbiAgICAgIH0sXG4gICAgICAvKipcbiAgICAgICAqIFRoZSBsYXN0IGlucHV0IGV2ZW50IHJlY2VpdmVkXG4gICAgICAgKi9cbiAgICAgIGV2ZW50OiBFdmVudFxuICAgICkgPT4gdm9pZDtcbiAgfTtcbiAgQmxvY2tzOiB7XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWxseSwgeW91IG1heSBjb250cm9sIGhvdyB0aGUgRmllbGRzIGFyZSByZW5kZXJlZCwgd2l0aCBwcm9jZWVkaW5nIHRleHQsXG4gICAgICogYWRkaXRpb25hbCBhdHRyaWJ1dGVzIGFkZGVkLCBldGMuXG4gICAgICpcbiAgICAgKiBUaGlzIGlzIGhvdyB5b3UgY2FuIGFkZCBjdXN0b20gdmFsaWRhdGlvbiB0byBlYWNoIGlucHV0IGZpZWxkLlxuICAgICAqL1xuICAgIGRlZmF1bHQ_OiBbZmllbGRzOiBXaXRoQm91bmRBcmdzPHR5cGVvZiBGaWVsZHMsICdmaWVsZHMnIHwgJ2hhbmRsZUNoYW5nZScgfCAnbGFiZWxGbic-XTtcbiAgfTtcbn0-IHtcbiAgLyoqXG4gICAqIFRoaXMgaXMgZGVib3VuY2VkLCBiZWNhdXNlIHdlIGJpbmQgdG8gZWFjaCBpbnB1dCxcbiAgICogYnV0IG9ubHkgd2FudCB0byBlbWl0IG9uZSBjaGFuZ2UgZXZlbnQgaWYgc29tZW9uZSBwYXN0ZXNcbiAgICogbXVsdGlwbGUgY2hhcmFjdGVyc1xuICAgKi9cbiAgaGFuZGxlQ2hhbmdlID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmICghdGhpcy5hcmdzLm9uQ2hhbmdlKSByZXR1cm47XG5cbiAgICBpZiAoIXRoaXMuI3Rva2VuKSB7XG4gICAgICB0aGlzLiN0b2tlbiA9IHdhaXRlci5iZWdpbkFzeW5jKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuI2ZyYW1lKSB7XG4gICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLiNmcmFtZSk7XG4gICAgfVxuXG4gICAgLy8gV2UgIHVzZSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgdG8gYmUgZnJpZW5kbHkgdG8gcmVuZGVyaW5nLlxuICAgIC8vIFdlIGRvbid0IGtub3cgaWYgb25DaGFuZ2UgaXMgZ29pbmcgdG8gd2FudCB0byBjYXVzZSBwYWludHNcbiAgICAvLyAoaXQncyBhbHNvIGhvdyB3ZSBkZWJvdW5jZSwgdW5kZXIgdGhlIGFzc3VtcHRpb24gdGhhdCBcInBhc3RlXCIgYmVoYXZpb3JcbiAgICAvLyAgd291bGQgYmUgZmFzdCBlbm91Z2ggdG8gYmUgcXVpY2tlciB0aGFuIGluZGl2aWR1YWwgZnJhbWVzXG4gICAgLy8gICAoc2VlIGxvZ2ljIGluIGF1dG9BZHZhbmNlKVxuICAgIC8vICApXG4gICAgdGhpcy4jZnJhbWUgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgd2FpdGVyLmVuZEFzeW5jKHRoaXMuI3Rva2VuKTtcblxuICAgICAgaWYgKGlzRGVzdHJveWVkKHRoaXMpIHx8IGlzRGVzdHJveWluZyh0aGlzKSkgcmV0dXJuO1xuICAgICAgaWYgKCF0aGlzLmFyZ3Mub25DaGFuZ2UpIHJldHVybjtcblxuICAgICAgbGV0IHZhbHVlID0gZ2V0Q29sbGVjdGl2ZVZhbHVlKGV2ZW50LnRhcmdldCwgdGhpcy5sZW5ndGgpO1xuXG4gICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB3YXJuKGBWYWx1ZSBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZCBmb3IgdGhlIE9UUCBmaWVsZC4gd2FzIGl0IHJlbW92ZWQgZnJvbSB0aGUgRE9NP2AsIHtcbiAgICAgICAgICBpZDogJ2VtYmVyLXByaW1pdGl2ZXMuT1RQSW5wdXQubWlzc2luZy12YWx1ZScsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5hcmdzLm9uQ2hhbmdlKHsgY29kZTogdmFsdWUsIGNvbXBsZXRlOiB2YWx1ZS5sZW5ndGggPT09IHRoaXMubGVuZ3RoIH0sIGV2ZW50KTtcbiAgICB9KTtcbiAgfTtcblxuICAjdG9rZW46IHVua25vd24gfCB1bmRlZmluZWQ7XG4gICNmcmFtZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIGdldCBsZW5ndGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXJncy5sZW5ndGggPz8gREVGQVVMVF9MRU5HVEg7XG4gIH1cblxuICBnZXQgZmllbGRzKCkge1xuICAgIC8vIFdlIG9ubHkgbmVlZCB0byBpdGVyYXRlIGEgbnVtYmVyIG9mIHRpbWVzLFxuICAgIC8vIHNvIHdlIGRvbid0IGNhcmUgYWJvdXQgdGhlIGFjdHVhbCB2YWx1ZSBvclxuICAgIC8vIHJlZmVyZW50aWFsIGludGVncml0eSBoZXJlXG4gICAgcmV0dXJuIG5ldyBBcnJheSh0aGlzLmxlbmd0aCk7XG4gIH1cblxuICA8dGVtcGxhdGU-XG4gICAgPGZpZWxkc2V0IC4uLmF0dHJpYnV0ZXM-XG4gICAgICB7eyNsZXRcbiAgICAgICAgKGNvbXBvbmVudCBGaWVsZHMgZmllbGRzPXRoaXMuZmllbGRzIGhhbmRsZUNoYW5nZT10aGlzLmhhbmRsZUNoYW5nZSBsYWJlbEZuPUBsYWJlbEZuKVxuICAgICAgICBhcyB8Q3VycmllZEZpZWxkc3xcbiAgICAgIH19XG4gICAgICAgIHt7I2lmIChoYXMtYmxvY2spfX1cbiAgICAgICAgICB7e3lpZWxkIEN1cnJpZWRGaWVsZHN9fVxuICAgICAgICB7e2Vsc2V9fVxuICAgICAgICAgIDxDdXJyaWVkRmllbGRzIC8-XG4gICAgICAgIHt7L2lmfX1cbiAgICAgIHt7L2xldH19XG5cbiAgICAgIDxzdHlsZT5cbiAgICAgICAgLmVtYmVyLXByaW1pdGl2ZXNfX3NyLW9ubHkgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHdpZHRoOiAxcHg7IGhlaWdodDogMXB4OyBwYWRkaW5nOiAwO1xuICAgICAgICBtYXJnaW46IC0xcHg7IG92ZXJmbG93OiBoaWRkZW47IGNsaXA6IHJlY3QoMCwgMCwgMCwgMCk7IHdoaXRlLXNwYWNlOiBub3dyYXA7IGJvcmRlci13aWR0aDpcbiAgICAgICAgMDsgfVxuICAgICAgPC9zdHlsZT5cbiAgICA8L2ZpZWxkc2V0PlxuICA8L3RlbXBsYXRlPlxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLGVBQWUscUJBQXFCO0FBQzNDLFNBQVMsSUFBSSxRQUFRLGVBQWU7QUFDcEMsU0FBUyxXQUFXLEVBQUUsWUFBWSxRQUFRLHFCQUFxQjtBQUMvRCxTQUFTLEVBQUUsUUFBUSxrQkFBa0I7QUFDckMsU0FBUyxXQUFXLFFBQVEsc0JBQXNCO0FBRWxELFNBQ0UsV0FBVyxFQUNYLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsV0FBVyxFQUNYLFNBQVMsUUFDSixhQUFhO0FBRXBCLGNBQWMsR0FBRyxRQUFRLGlDQUFpQztBQUMxRCxjQUFjLGFBQWEsUUFBUSxrQkFBa0I7QUFFckQsTUFBTSxpQkFBaUI7QUFFdkIsU0FBUyxTQUFTLGFBQVksTUFBTSxFQUFFLFVBQVMsU0FBUyxLQUFLLE9BQU8sTUFBTSxLQUFLLE1BQU0sQ0FBQztJQUNwRixJQUFJLFVBQVM7UUFDWCxPQUFPLFNBQVE7SUFDakI7SUFFQSxPQUFPLENBQUMsMkJBQTJCLEVBQUUsY0FBYSxFQUFFLENBQUM7QUFDdkQ7QUFFQSxJQUFJLFNBQVMsWUFBWTtBQUV6QixNQUFNLFFBQVE7SUFDWjs7R0FFQyxHQUNELFNBQVM7SUFDVDtRQUNFLFFBQVEsT0FBTztRQUNmLFVBQVUsT0FBTyxNQUFNLEtBQUssTUFBTTtRQUNsQyxlQUFl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"],"names":["DEFAULT_LENGTH","labelFor","inputIndex1","labelFn1","waiter","buildWaiter","Fields","precompileTemplate","strictMode","scope","on","selectAll","handlePaste","autoAdvance","handleNavigation","templateOnly","OTPInput","Component","handleChange","event1","args","onChange","beginAsync","cancelAnimationFrame","requestAnimationFrame","endAsync","isDestroyed","isDestroying","value1","getCollectiveValue","target","length","undefined","warn","id","code","complete","fields","Array","setComponentTemplate"],"mappings":";;;;;;;;;;AAiBA,MAAMA,cAAA,GAAiB,CAAA,CAAA;AAEvB,SAASC,QAAAA,CAASC,WAAkB,EAAEC,QAAgD,EAAA;AACpF,EAAA,IAAIA,QAAA,EAAS;IACX,OAAOA,QAAA,CAAQD,WAAA,CAAA,CAAA;AACjB,GAAA;AAEA,EAAA,OAAQ,CAA6BA,2BAAAA,EAAAA,WAAA,GAAa,CAAE,CAAC,CAAA,CAAA;AACvD,CAAA;AAEA,IAAIE,MAAA,GAASC,WAAA,CAAY,wCAAA,CAAA,CAAA;AAEzB,MAAMC,SAUDC,oBAAAA,CAAAA,kBAAA,CAkBL,kaAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAR,QAAA;IAAAS,EAAA;IAAAC,SAAA;IAAAC,WAAA;IAAAC,WAAA;AAAAC,IAAAA,gBAAAA;AAAA,GAAA,CAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA,CAAA,CAAA;AAEH,MAAMC,QAAA,SAAiBC,SAAA;AAsD5B;;;;;AAKAC,EAAAA,YAAA,GAAgBC,MAAO,IAAA;AACrB,IAAA,IAAI,CAAC,IAAI,CAACC,IAAI,CAACC,QAAQ,EAAE,OAAA;AAEzB,IAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAChB,MAAA,IAAI,CAAC,MAAM,GAAGjB,MAAA,CAAOkB,UAAU,EAAA,CAAA;AACjC,KAAA;AAEA,IAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACfC,MAAAA,oBAAA,CAAqB,IAAI,CAAC,MAAM,CAAA,CAAA;AAClC,KAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAA,IAAI,CAAC,MAAM,GAAGC,qBAAA,CAAsB,MAAA;AAClCpB,MAAAA,MAAA,CAAOqB,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAA,CAAA;AAE3B,MAAA,IAAIC,WAAA,CAAY,IAAI,KAAKC,YAAA,CAAa,IAAI,CAAG,EAAA,OAAA;AAC7C,MAAA,IAAI,CAAC,IAAI,CAACP,IAAI,CAACC,QAAQ,EAAE,OAAA;MAEzB,IAAIO,MAAA,GAAQC,kBAAA,CAAmBV,MAAA,CAAMW,MAAM,EAAE,IAAI,CAACC,MAAM,CAAA,CAAA;MAExD,IAAIH,MAAA,KAAUI,SAAA,EAAW;QACvBC,IAAA,CAAM,+EAA8E,EAAE;AACpFC,UAAAA,EAAA,EAAI,yCAAA;AACN,SAAA,CAAA,CAAA;AAEA,QAAA,OAAA;AACF,OAAA;AAEA,MAAA,IAAI,CAACd,IAAI,CAACC,QAAQ,CAAC;AAAEc,QAAAA,IAAA,EAAMP,MAAA;AAAOQ,QAAAA,QAAA,EAAUR,MAAA,CAAMG,MAAM,KAAK,IAAI,CAACA,MAAAA;AAAO,OAAA,EAAGZ,MAAA,CAAA,CAAA;AAC9E,KAAA,CAAA,CAAA;AACF,GAAA,CAAA;AAEA,EAAA,MAAM,CAAA;AACN,EAAA,MAAM,CAAA;AAEN,EAAA,IAAIY,SAAS;AACX,IAAA,OAAO,IAAI,CAACX,IAAI,CAACW,MAAM,IAAI/B,cAAA,CAAA;AAC7B,GAAA;AAEA,EAAA,IAAIqC,SAAS;AACX;AACA;AACA;AACA,IAAA,OAAO,IAAIC,KAAA,CAAM,IAAI,CAACP,MAAM,CAAA,CAAA;AAC9B,GAAA;AAEA,EAAA;IAAAQ,oBAAA,CAAAhC,kBAAA,CAmBA,gjBAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;AAAAH,QAAAA,MAAAA;AAAA,OAAA,CAAA;AAAU,KAAA,CAAA,EAAV,IAAW,CAAA,CAAA;AAAD,GAAA;AACZ;;;;"}
1
+ {"version":3,"file":"input.js","sources":["../../../src/components/one-time-password/input.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport Component from '@glimmer/component';\nimport { warn } from '@ember/debug';\nimport { isDestroyed, isDestroying } from '@ember/destroyable';\nimport { on } from '@ember/modifier';\nimport { buildWaiter } from '@ember/test-waiters';\nimport { autoAdvance, getCollectiveValue, handleNavigation, handlePaste, selectAll } from './utils.ts';\nimport type { TOC } from '@ember/component/template-only';\nimport type { WithBoundArgs } from '@glint/template';\nconst DEFAULT_LENGTH = 6;\nfunction labelFor(inputIndex1: number, labelFn1: undefined | ((index: number) => string)) {\n if (labelFn1) {\n return labelFn1(inputIndex1);\n }\n return `Please enter OTP character ${inputIndex1 + 1}`;\n}\nlet waiter = buildWaiter('ember-primitives:OTPInput:handleChange');\nconst Fields: TOC<{\n /**\n * Any attributes passed to this component will be applied to each input.\n */ Element: HTMLInputElement;\n Args: {\n fields: unknown[];\n labelFn: (index: number) => string;\n handleChange: (event: Event) => void;\n };\n}> = template(`\n {{#each @fields as |_field i|}}\n <label>\n <span class=\"ember-primitives__sr-only\">{{labelFor i @labelFn}}</span>\n <input\n name=\"code{{i}}\"\n type=\"text\"\n inputmode=\"numeric\"\n autocomplete=\"off\"\n ...attributes\n {{on \"click\" selectAll}}\n {{on \"paste\" handlePaste}}\n {{on \"input\" autoAdvance}}\n {{on \"input\" @handleChange}}\n {{on \"keydown\" handleNavigation}}\n />\n </label>\n {{/each}}\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nexport class OTPInput extends Component<{\n /**\n * The collection of individual OTP inputs are contained by a fieldset.\n * Applying the `disabled` attribute to this fieldset will disable\n * all of the inputs, if that's desired.\n */ Element: HTMLFieldSetElement;\n Args: {\n /**\n * How many characters the one-time-password field should be\n * Defaults to 6\n */ length?: number;\n /**\n * To Customize the label of the input fields, you may pass a function.\n * By default, this is `Please enter OTP character ${index + 1}`.\n */ labelFn?: (index: number) => string;\n /**\n * If passed, this function will be called when the <Input> changes.\n * All fields are considered one input.\n */ onChange?: (data: {\n /**\n * The text from the collective `<Input>`\n *\n * `code` _may_ be shorter than `length`\n * if the user has not finished typing / pasting their code\n */ code: string;\n /**\n * will be `true` if `code`'s length matches the passed `@length` or the default of 6\n */ complete: boolean;\n }, /**\n * The last input event received\n */ event: Event) => void;\n };\n Blocks: {\n /**\n * Optionally, you may control how the Fields are rendered, with proceeding text,\n * additional attributes added, etc.\n *\n * This is how you can add custom validation to each input field.\n */ default?: [fields: WithBoundArgs<typeof Fields, 'fields' | 'handleChange' | 'labelFn'>];\n };\n}> {\n /**\n * This is debounced, because we bind to each input,\n * but only want to emit one change event if someone pastes\n * multiple characters\n */ handleChange = (event1: Event)=>{\n if (!this.args.onChange) return;\n if (!this.#token) {\n this.#token = waiter.beginAsync();\n }\n if (this.#frame) {\n cancelAnimationFrame(this.#frame);\n }\n // We use requestAnimationFrame to be friendly to rendering.\n // We don't know if onChange is going to want to cause paints\n // (it's also how we debounce, under the assumption that \"paste\" behavior\n // would be fast enough to be quicker than individual frames\n // (see logic in autoAdvance)\n // )\n this.#frame = requestAnimationFrame(()=>{\n waiter.endAsync(this.#token);\n if (isDestroyed(this) || isDestroying(this)) return;\n if (!this.args.onChange) return;\n let value1 = getCollectiveValue(event1.target, this.length);\n if (value1 === undefined) {\n warn(`Value could not be determined for the OTP field. was it removed from the DOM?`, {\n id: 'ember-primitives.OTPInput.missing-value'\n });\n return;\n }\n this.args.onChange({\n code: value1,\n complete: value1.length === this.length\n }, event1);\n });\n };\n #token: unknown | undefined;\n #frame: number | undefined;\n get length() {\n return this.args.length ?? DEFAULT_LENGTH;\n }\n get fields() {\n // We only need to iterate a number of times,\n // so we don't care about the actual value or\n // referential integrity here\n return new Array(this.length);\n }\n static{\n template(`\n <fieldset ...attributes>\n {{#let\n (component Fields fields=this.fields handleChange=this.handleChange labelFn=@labelFn)\n as |CurriedFields|\n }}\n {{#if (has-block)}}\n {{yield CurriedFields}}\n {{else}}\n <CurriedFields />\n {{/if}}\n {{/let}}\n\n <style>\n .ember-primitives__sr-only { position: absolute; width: 1px; height: 1px; padding: 0;\n margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border-width:\n 0; }\n </style>\n </fieldset>\n `, {\n component: this,\n eval () {\n return eval(arguments[0]);\n }\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2VtYmVyLXByaW1pdGl2ZXMvZW1iZXItcHJpbWl0aXZlcy9lbWJlci1wcmltaXRpdmVzL3NyYy9jb21wb25lbnRzL29uZS10aW1lLXBhc3N3b3JkL2lucHV0Lmd0cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29tcG9uZW50IGZyb20gJ0BnbGltbWVyL2NvbXBvbmVudCc7XG5pbXBvcnQgeyB3YXJuIH0gZnJvbSAnQGVtYmVyL2RlYnVnJztcbmltcG9ydCB7IGlzRGVzdHJveWVkLCBpc0Rlc3Ryb3lpbmcgfSBmcm9tICdAZW1iZXIvZGVzdHJveWFibGUnO1xuaW1wb3J0IHsgb24gfSBmcm9tICdAZW1iZXIvbW9kaWZpZXInO1xuaW1wb3J0IHsgYnVpbGRXYWl0ZXIgfSBmcm9tICdAZW1iZXIvdGVzdC13YWl0ZXJzJztcblxuaW1wb3J0IHtcbiAgYXV0b0FkdmFuY2UsXG4gIGdldENvbGxlY3RpdmVWYWx1ZSxcbiAgaGFuZGxlTmF2aWdhdGlvbixcbiAgaGFuZGxlUGFzdGUsXG4gIHNlbGVjdEFsbCxcbn0gZnJvbSAnLi91dGlscy50cyc7XG5cbmltcG9ydCB0eXBlIHsgVE9DIH0gZnJvbSAnQGVtYmVyL2NvbXBvbmVudC90ZW1wbGF0ZS1vbmx5JztcbmltcG9ydCB0eXBlIHsgV2l0aEJvdW5kQXJncyB9IGZyb20gJ0BnbGludC90ZW1wbGF0ZSc7XG5cbmNvbnN0IERFRkFVTFRfTEVOR1RIID0gNjtcblxuZnVuY3Rpb24gbGFiZWxGb3IoaW5wdXRJbmRleDogbnVtYmVyLCBsYWJlbEZuOiB1bmRlZmluZWQgfCAoKGluZGV4OiBudW1iZXIpID0-IHN0cmluZykpIHtcbiAgaWYgKGxhYmVsRm4pIHtcbiAgICByZXR1cm4gbGFiZWxGbihpbnB1dEluZGV4KTtcbiAgfVxuXG4gIHJldHVybiBgUGxlYXNlIGVudGVyIE9UUCBjaGFyYWN0ZXIgJHtpbnB1dEluZGV4ICsgMX1gO1xufVxuXG5sZXQgd2FpdGVyID0gYnVpbGRXYWl0ZXIoJ2VtYmVyLXByaW1pdGl2ZXM6T1RQSW5wdXQ6aGFuZGxlQ2hhbmdlJyk7XG5cbmNvbnN0IEZpZWxkczogVE9DPHtcbiAgLyoqXG4gICAqIEFueSBhdHRyaWJ1dGVzIHBhc3NlZCB0byB0aGlzIGNvbXBvbmVudCB3aWxsIGJlIGFwcGxpZWQgdG8gZWFjaCBpbnB1dC5cbiAgICovXG4gIEVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQ7XG4gIEFyZ3M6IHtcbiAgICBmaWVsZHM6IHVua25vd25bXTtcbiAgICBsYWJlbEZuOiAoaW5kZXg6IG51bWJlcikgPT4gc3RyaW5nO1xuICAgIGhhbmRsZUNoYW5nZTogKGV2ZW50OiBFdmVudCkgPT4gdm9pZDtcbiAgfTtcbn0-ID0gPHRlbXBsYXRlPlxuICB7eyNlYWNoIEBmaWVsZHMgYXMgfF9maWVsZCBpfH19XG4gICAgPGxhYmVsPlxuICAgICAgPHNwYW4gY2xhc3M9XCJlbWJlci1wcmltaXRpdmVzX19zci1vbmx5XCI-e3tsYWJlbEZvciBpIEBsYWJlbEZufX08L3NwYW4-XG4gICAgICA8aW5wdXRcbiAgICAgICAgbmFtZT1cImNvZGV7e2l9fVwiXG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgaW5wdXRtb2RlPVwibnVtZXJpY1wiXG4gICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgIC4uLmF0dHJpYnV0ZXNcbiAgICAgICAge3tvbiBcImNsaWNrXCIgc2VsZWN0QWxsfX1cbiAgICAgICAge3tvbiBcInBhc3RlXCIgaGFuZGxlUGFzdGV9fVxuICAgICAgICB7e29uIFwiaW5wdXRcIiBhdXRvQWR2YW5jZX19XG4gICAgICAgIHt7b24gXCJpbnB1dFwiIEBoYW5kbGVDaGFuZ2V9fVxuICAgICAgICB7e29uIFwia2V5ZG93blwiIGhhbmRsZU5hdmlnYXRpb259fVxuICAgICAgLz5cbiAgICA8L2xhYmVsPlxuICB7ey9lYWNofX1cbjwvdGVtcGxhdGU-O1xuXG5leHBvcnQgY2xhc3MgT1RQSW5wdXQgZXh0ZW5kcyBDb21wb25lbnQ8e1xuICAvKipcbiAgICogVGhlIGNvbGxlY3Rpb24gb2YgaW5kaXZpZHVhbCBPVFAgaW5wdXRzIGFyZSBjb250YWluZWQgYnkgYSBmaWVsZHNldC5cbiAgICogQXBwbHlpbmcgdGhlIGBkaXNhYmxlZGAgYXR0cmlidXRlIHRvIHRoaXMgZmllbGRzZXQgd2lsbCBkaXNhYmxlXG4gICAqIGFsbCBvZiB0aGUgaW5wdXRzLCBpZiB0aGF0J3MgZGVzaXJlZC5cbiAgICovXG4gIEVsZW1lbnQ6IEhUTUxGaWVsZFNldEVsZW1lbnQ7XG4gIEFyZ3M6IHtcbiAgICAvKipcbiAgICAgKiBIb3cgbWFueSBjaGFyYWN0ZXJzIHRoZSBvbmUtdGltZS1wYXNzd29yZCBmaWVsZCBzaG91bGQgYmVcbiAgICAgKiBEZWZhdWx0cyB0byA2XG4gICAgICovXG4gICAgbGVuZ3RoPzogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogVG8gQ3VzdG9taXplIHRoZSBsYWJlbCBvZiB0aGUgaW5wdXQgZmllbGRzLCB5b3UgbWF5IHBhc3MgYSBmdW5jdGlvbi5cbiAgICAgKiBCeSBkZWZhdWx0LCB0aGlzIGlzIGBQbGVhc2UgZW50ZXIgT1RQIGNoYXJhY3RlciAke2luZGV4ICsgMX1gLlxuICAgICAqL1xuICAgIGxhYmVsRm4_OiAoaW5kZXg6IG51bWJlcikgPT4gc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogSWYgcGFzc2VkLCB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIHdoZW4gdGhlIDxJbnB1dD4gY2hhbmdlcy5cbiAgICAgKiBBbGwgZmllbGRzIGFyZSBjb25zaWRlcmVkIG9uZSBpbnB1dC5cbiAgICAgKi9cbiAgICBvbkNoYW5nZT86IChcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoZSB0ZXh0IGZyb20gdGhlIGNvbGxlY3RpdmUgYDxJbnB1dD5gXG4gICAgICAgICAqXG4gICAgICAgICAqIGBjb2RlYCBfbWF5XyBiZSBzaG9ydGVyIHRoYW4gYGxlbmd0aGBcbiAgICAgICAgICogaWYgdGhlIHVzZXIgaGFzIG5vdCBmaW5pc2hlZCB0eXBpbmcgLyBwYXN0aW5nIHRoZWlyIGNvZGVcbiAgICAgICAgICovXG4gICAgICAgIGNvZGU6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIHdpbGwgYmUgYHRydWVgIGlmIGBjb2RlYCdzIGxlbmd0aCBtYXRjaGVzIHRoZSBwYXNzZWQgYEBsZW5ndGhgIG9yIHRoZSBkZWZhdWx0IG9mIDZcbiAgICAgICAgICovXG4gICAgICAgIGNvbXBsZXRlOiBib29sZWFuO1xuICAgICAgfSxcbiAgICAgIC8qKlxuICAgICAgICogVGhlIGxhc3QgaW5wdXQgZXZlbnQgcmVjZWl2ZWRcbiAgICAgICAqL1xuICAgICAgZXZlbnQ6IEV2ZW50XG4gICAgKSA9PiB2b2lkO1xuICB9O1xuICBCbG9ja3M6IHtcbiAgICAvKipcbiAgICAgKiBPcHRpb25hbGx5LCB5b3UgbWF5IGNvbnRyb2wgaG93IHRoZSBGaWVsZHMgYXJlIHJlbmRlcmVkLCB3aXRoIHByb2NlZWRpbmcgdGV4dCxcbiAgICAgKiBhZGRpdGlvbmFsIGF0dHJpYnV0ZXMgYWRkZWQsIGV0Yy5cbiAgICAgKlxuICAgICAqIFRoaXMgaXMgaG93IHlvdSBjYW4gYWRkIGN1c3RvbSB2YWxpZGF0aW9uIHRvIGVhY2ggaW5wdXQgZmllbGQuXG4gICAgICovXG4gICAgZGVmYXVsdD86IFtmaWVsZHM6IFdpdGhCb3VuZEFyZ3M8dHlwZW9mIEZpZWxkcywgJ2ZpZWxkcycgfCAnaGFuZGxlQ2hhbmdlJyB8ICdsYWJlbEZuJz5dO1xuICB9O1xufT4ge1xuICAvKipcbiAgICogVGhpcyBpcyBkZWJvdW5jZWQsIGJlY2F1c2Ugd2UgYmluZCB0byBlYWNoIGlucHV0LFxuICAgKiBidXQgb25seSB3YW50IHRvIGVtaXQgb25lIGNoYW5nZSBldmVudCBpZiBzb21lb25lIHBhc3Rlc1xuICAgKiBtdWx0aXBsZSBjaGFyYWN0ZXJzXG4gICAqL1xuICBoYW5kbGVDaGFuZ2UgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgaWYgKCF0aGlzLmFyZ3Mub25DaGFuZ2UpIHJldHVybjtcblxuICAgIGlmICghdGhpcy4jdG9rZW4pIHtcbiAgICAgIHRoaXMuI3Rva2VuID0gd2FpdGVyLmJlZ2luQXN5bmMoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy4jZnJhbWUpIHtcbiAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuI2ZyYW1lKTtcbiAgICB9XG5cbiAgICAvLyBXZSAgdXNlIHJlcXVlc3RBbmltYXRpb25GcmFtZSB0byBiZSBmcmllbmRseSB0byByZW5kZXJpbmcuXG4gICAgLy8gV2UgZG9uJ3Qga25vdyBpZiBvbkNoYW5nZSBpcyBnb2luZyB0byB3YW50IHRvIGNhdXNlIHBhaW50c1xuICAgIC8vIChpdCdzIGFsc28gaG93IHdlIGRlYm91bmNlLCB1bmRlciB0aGUgYXNzdW1wdGlvbiB0aGF0IFwicGFzdGVcIiBiZWhhdmlvclxuICAgIC8vICB3b3VsZCBiZSBmYXN0IGVub3VnaCB0byBiZSBxdWlja2VyIHRoYW4gaW5kaXZpZHVhbCBmcmFtZXNcbiAgICAvLyAgIChzZWUgbG9naWMgaW4gYXV0b0FkdmFuY2UpXG4gICAgLy8gIClcbiAgICB0aGlzLiNmcmFtZSA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICB3YWl0ZXIuZW5kQXN5bmModGhpcy4jdG9rZW4pO1xuXG4gICAgICBpZiAoaXNEZXN0cm95ZWQodGhpcykgfHwgaXNEZXN0cm95aW5nKHRoaXMpKSByZXR1cm47XG4gICAgICBpZiAoIXRoaXMuYXJncy5vbkNoYW5nZSkgcmV0dXJuO1xuXG4gICAgICBsZXQgdmFsdWUgPSBnZXRDb2xsZWN0aXZlVmFsdWUoZXZlbnQudGFyZ2V0LCB0aGlzLmxlbmd0aCk7XG5cbiAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHdhcm4oYFZhbHVlIGNvdWxkIG5vdCBiZSBkZXRlcm1pbmVkIGZvciB0aGUgT1RQIGZpZWxkLiB3YXMgaXQgcmVtb3ZlZCBmcm9tIHRoZSBET00_YCwge1xuICAgICAgICAgIGlkOiAnZW1iZXItcHJpbWl0aXZlcy5PVFBJbnB1dC5taXNzaW5nLXZhbHVlJyxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmFyZ3Mub25DaGFuZ2UoeyBjb2RlOiB2YWx1ZSwgY29tcGxldGU6IHZhbHVlLmxlbmd0aCA9PT0gdGhpcy5sZW5ndGggfSwgZXZlbnQpO1xuICAgIH0pO1xuICB9O1xuXG4gICN0b2tlbjogdW5rbm93biB8IHVuZGVmaW5lZDtcbiAgI2ZyYW1lOiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgZ2V0IGxlbmd0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5hcmdzLmxlbmd0aCA_PyBERUZBVUxUX0xFTkdUSDtcbiAgfVxuXG4gIGdldCBmaWVsZHMoKSB7XG4gICAgLy8gV2Ugb25seSBuZWVkIHRvIGl0ZXJhdGUgYSBudW1iZXIgb2YgdGltZXMsXG4gICAgLy8gc28gd2UgZG9uJ3QgY2FyZSBhYm91dCB0aGUgYWN0dWFsIHZhbHVlIG9yXG4gICAgLy8gcmVmZXJlbnRpYWwgaW50ZWdyaXR5IGhlcmVcbiAgICByZXR1cm4gbmV3IEFycmF5KHRoaXMubGVuZ3RoKTtcbiAgfVxuXG4gIDx0ZW1wbGF0ZT5cbiAgICA8ZmllbGRzZXQgLi4uYXR0cmlidXRlcz5cbiAgICAgIHt7I2xldFxuICAgICAgICAoY29tcG9uZW50IEZpZWxkcyBmaWVsZHM9dGhpcy5maWVsZHMgaGFuZGxlQ2hhbmdlPXRoaXMuaGFuZGxlQ2hhbmdlIGxhYmVsRm49QGxhYmVsRm4pXG4gICAgICAgIGFzIHxDdXJyaWVkRmllbGRzfFxuICAgICAgfX1cbiAgICAgICAge3sjaWYgKGhhcy1ibG9jayl9fVxuICAgICAgICAgIHt7eWllbGQgQ3VycmllZEZpZWxkc319XG4gICAgICAgIHt7ZWxzZX19XG4gICAgICAgICAgPEN1cnJpZWRGaWVsZHMgLz5cbiAgICAgICAge3svaWZ9fVxuICAgICAge3svbGV0fX1cblxuICAgICAgPHN0eWxlPlxuICAgICAgICAuZW1iZXItcHJpbWl0aXZlc19fc3Itb25seSB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgd2lkdGg6IDFweDsgaGVpZ2h0OiAxcHg7IHBhZGRpbmc6IDA7XG4gICAgICAgIG1hcmdpbjogLTFweDsgb3ZlcmZsb3c6IGhpZGRlbjsgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgYm9yZGVyLXdpZHRoOlxuICAgICAgICAwOyB9XG4gICAgICA8L3N0eWxlPlxuICAgIDwvZmllbGRzZXQ-XG4gIDwvdGVtcGxhdGU-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"],"names":["DEFAULT_LENGTH","labelFor","inputIndex1","labelFn1","waiter","buildWaiter","Fields","precompileTemplate","strictMode","scope","on","selectAll","handlePaste","autoAdvance","handleNavigation","templateOnly","OTPInput","Component","handleChange","event1","args","onChange","beginAsync","cancelAnimationFrame","requestAnimationFrame","endAsync","isDestroyed","isDestroying","value1","getCollectiveValue","target","length","undefined","warn","id","code","complete","fields","Array","setComponentTemplate"],"mappings":";;;;;;;;;;AAiBA,MAAMA,cAAA,GAAiB,CAAA,CAAA;AAEvB,SAASC,QAAAA,CAASC,WAAkB,EAAEC,QAAgD,EAAA;AACpF,EAAA,IAAIA,QAAA,EAAS;IACX,OAAOA,QAAA,CAAQD,WAAA,CAAA,CAAA;AACjB,GAAA;EAEA,OAAO,CAAA,2BAAA,EAA8BA,WAAA,GAAa,CAAG,CAAA,CAAA,CAAA;AACvD,CAAA;AAEA,IAAIE,MAAA,GAASC,WAAA,CAAY,wCAAA,CAAA,CAAA;AAEzB,MAAMC,SAUDC,oBAAAA,CAAAA,kBAAA,CAkBL,kaAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAR,QAAA;IAAAS,EAAA;IAAAC,SAAA;IAAAC,WAAA;IAAAC,WAAA;AAAAC,IAAAA,gBAAAA;AAAA,GAAA,CAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA,CAAA,CAAA;AAEH,MAAMC,QAAA,SAAiBC,SAAA;AAsD5B;;;;;AAKAC,EAAAA,YAAA,GAAgBC,MAAO,IAAA;AACrB,IAAA,IAAI,CAAC,IAAI,CAACC,IAAI,CAACC,QAAQ,EAAE,OAAA;AAEzB,IAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAChB,MAAA,IAAI,CAAC,MAAM,GAAGjB,MAAA,CAAOkB,UAAU,EAAA,CAAA;AACjC,KAAA;AAEA,IAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACfC,MAAAA,oBAAA,CAAqB,IAAI,CAAC,MAAM,CAAA,CAAA;AAClC,KAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAA,IAAI,CAAC,MAAM,GAAGC,qBAAA,CAAsB,MAAA;AAClCpB,MAAAA,MAAA,CAAOqB,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAA,CAAA;AAE3B,MAAA,IAAIC,WAAA,CAAY,IAAI,KAAKC,YAAA,CAAa,IAAI,CAAG,EAAA,OAAA;AAC7C,MAAA,IAAI,CAAC,IAAI,CAACP,IAAI,CAACC,QAAQ,EAAE,OAAA;MAEzB,IAAIO,MAAA,GAAQC,kBAAA,CAAmBV,MAAA,CAAMW,MAAM,EAAE,IAAI,CAACC,MAAM,CAAA,CAAA;MAExD,IAAIH,MAAA,KAAUI,SAAA,EAAW;QACvBC,IAAA,CAAK,+EAA+E,EAAE;AACpFC,UAAAA,EAAA,EAAI,yCAAA;AACN,SAAA,CAAA,CAAA;AAEA,QAAA,OAAA;AACF,OAAA;AAEA,MAAA,IAAI,CAACd,IAAI,CAACC,QAAQ,CAAC;AAAEc,QAAAA,IAAA,EAAMP,MAAA;AAAOQ,QAAAA,QAAA,EAAUR,MAAA,CAAMG,MAAM,KAAK,IAAI,CAACA,MAAAA;AAAO,OAAA,EAAGZ,MAAA,CAAA,CAAA;AAC9E,KAAA,CAAA,CAAA;AACF,GAAA,CAAA;AAEA,EAAA,MAAM,CAAA;AACN,EAAA,MAAM,CAAA;AAEN,EAAA,IAAIY,SAAS;AACX,IAAA,OAAO,IAAI,CAACX,IAAI,CAACW,MAAM,IAAI/B,cAAA,CAAA;AAC7B,GAAA;AAEA,EAAA,IAAIqC,SAAS;AACX;AACA;AACA;AACA,IAAA,OAAO,IAAIC,KAAA,CAAM,IAAI,CAACP,MAAM,CAAA,CAAA;AAC9B,GAAA;AAEA,EAAA;IAAAQ,oBAAA,CAAAhC,kBAAA,CAmBA,gjBAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;AAAAH,QAAAA,MAAAA;AAAA,OAAA,CAAA;AAAU,KAAA,CAAA,EAAV,IAAW,CAAA,CAAA;AAAD,GAAA;AACZ;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"otp.js","sources":["../../../src/components/one-time-password/otp.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport { assert } from '@ember/debug';\nimport { fn, hash } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport { buildWaiter } from '@ember/test-waiters';\nimport { Reset, Submit } from './buttons.gts';\nimport { OTPInput } from './input.gts';\nimport type { TOC } from '@ember/component/template-only';\nimport type { WithBoundArgs } from '@glint/template';\nlet waiter = buildWaiter('ember-primitives:OTP:handleAutoSubmitAttempt');\nconst handleFormSubmit = (submit1: (data: {\n code: string;\n}) => void, event1: SubmitEvent)=>{\n event1.preventDefault();\n assert('[BUG]: handleFormSubmit was not attached to a form. Please open an issue.', event1.currentTarget instanceof HTMLFormElement);\n let formData1 = new FormData(event1.currentTarget);\n let code1 = '';\n for (let [key1, value1] of formData1.entries()){\n if (key1.startsWith('code')) {\n code1 += value1;\n }\n }\n submit1({\n code: code1\n });\n};\nfunction handleChange(autoSubmit1: boolean | undefined, data1: {\n code: string;\n complete: boolean;\n}, event1: Event) {\n if (!autoSubmit1) return;\n if (!data1.complete) return;\n assert('[BUG]: event target is not a known element type', event1.target instanceof HTMLElement || event1.target instanceof SVGElement);\n const form1 = event1.target.closest('form');\n assert('[BUG]: Cannot handle event when <OTP> Inputs are not rendered within their <form>', form1);\n const token1 = waiter.beginAsync();\n let finished1 = ()=>{\n waiter.endAsync(token1);\n form1.removeEventListener('submit', finished1);\n };\n form1.addEventListener('submit', finished1);\n // NOTE: when calling .submit() the submit event handlers are not run\n form1.requestSubmit();\n}\nexport const OTP: TOC<{\n /**\n * The overall OTP Input is in its own form.\n * Modern UI/UX Patterns usually have this sort of field\n * as its own page, thus within its own form.\n *\n * By default, only the 'submit' event is bound, and is\n * what calls the `@onSubmit` argument.\n */ Element: HTMLFormElement;\n Args: {\n /**\n * How many characters the one-time-password field should be\n * Defaults to 6\n */ length?: number;\n /**\n * The on submit callback will give you the entered\n * one-time-password code.\n *\n * It will be called when the user manually clicks the 'submit'\n * button or when the full code is pasted and meats the validation\n * criteria.\n */ onSubmit: (data: {\n code: string;\n }) => void;\n /**\n * Whether or not to auto-submit after the code has been pasted\n * in to the collective \"field\". Default is true\n */ autoSubmit?: boolean;\n };\n Blocks: {\n default: [{\n /**\n * The collective input field that the OTP code will be typed/pasted in to\n */ Input: WithBoundArgs<typeof OTPInput, 'length' | 'onChange'>;\n /**\n * Button with `type=\"submit\"` to submit the form\n */ Submit: typeof Submit;\n /**\n * Pre-wired button to reset the form\n */ Reset: typeof Reset;\n }];\n };\n}> = template(`\n <form {{on \"submit\" (fn handleFormSubmit @onSubmit)}} ...attributes>\n {{yield\n (hash\n Input=(component\n OTPInput length=@length onChange=(if @autoSubmit (fn handleChange @autoSubmit))\n )\n Submit=Submit\n Reset=Reset\n )\n }}\n </form>\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL252cC9EZXZlbG9wbWVudC9OdWxsVm94UG9wdWxpL2VtYmVyLXByaW1pdGl2ZXMvZW1iZXItcHJpbWl0aXZlcy9zcmMvY29tcG9uZW50cy9vbmUtdGltZS1wYXNzd29yZC9vdHAuZ3RzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFzc2VydCB9IGZyb20gJ0BlbWJlci9kZWJ1Zyc7XG5pbXBvcnQgeyBmbiwgaGFzaCB9IGZyb20gJ0BlbWJlci9oZWxwZXInO1xuaW1wb3J0IHsgb24gfSBmcm9tICdAZW1iZXIvbW9kaWZpZXInO1xuaW1wb3J0IHsgYnVpbGRXYWl0ZXIgfSBmcm9tICdAZW1iZXIvdGVzdC13YWl0ZXJzJztcblxuaW1wb3J0IHsgUmVzZXQsIFN1Ym1pdCB9IGZyb20gJy4vYnV0dG9ucy5ndHMnO1xuaW1wb3J0IHsgT1RQSW5wdXQgfSBmcm9tICcuL2lucHV0Lmd0cyc7XG5cbmltcG9ydCB0eXBlIHsgVE9DIH0gZnJvbSAnQGVtYmVyL2NvbXBvbmVudC90ZW1wbGF0ZS1vbmx5JztcbmltcG9ydCB0eXBlIHsgV2l0aEJvdW5kQXJncyB9IGZyb20gJ0BnbGludC90ZW1wbGF0ZSc7XG5cbmxldCB3YWl0ZXIgPSBidWlsZFdhaXRlcignZW1iZXItcHJpbWl0aXZlczpPVFA6aGFuZGxlQXV0b1N1Ym1pdEF0dGVtcHQnKTtcblxuY29uc3QgaGFuZGxlRm9ybVN1Ym1pdCA9IChzdWJtaXQ6IChkYXRhOiB7IGNvZGU6IHN0cmluZyB9KSA9PiB2b2lkLCBldmVudDogU3VibWl0RXZlbnQpID0-IHtcbiAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICBhc3NlcnQoXG4gICAgJ1tCVUddOiBoYW5kbGVGb3JtU3VibWl0IHdhcyBub3QgYXR0YWNoZWQgdG8gYSBmb3JtLiBQbGVhc2Ugb3BlbiBhbiBpc3N1ZS4nLFxuICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQgaW5zdGFuY2VvZiBIVE1MRm9ybUVsZW1lbnRcbiAgKTtcblxuICBsZXQgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoZXZlbnQuY3VycmVudFRhcmdldCk7XG5cbiAgbGV0IGNvZGUgPSAnJztcblxuICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgZm9ybURhdGEuZW50cmllcygpKSB7XG4gICAgaWYgKGtleS5zdGFydHNXaXRoKCdjb2RlJykpIHtcbiAgICAgIGNvZGUgKz0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgc3VibWl0KHtcbiAgICBjb2RlLFxuICB9KTtcbn07XG5cbmZ1bmN0aW9uIGhhbmRsZUNoYW5nZShcbiAgYXV0b1N1Ym1pdDogYm9vbGVhbiB8IHVuZGVmaW5lZCxcbiAgZGF0YTogeyBjb2RlOiBzdHJpbmc7IGNvbXBsZXRlOiBib29sZWFuIH0sXG4gIGV2ZW50OiBFdmVudFxuKSB7XG4gIGlmICghYXV0b1N1Ym1pdCkgcmV0dXJuO1xuICBpZiAoIWRhdGEuY29tcGxldGUpIHJldHVybjtcblxuICBhc3NlcnQoXG4gICAgJ1tCVUddOiBldmVudCB0YXJnZXQgaXMgbm90IGEga25vd24gZWxlbWVudCB0eXBlJyxcbiAgICBldmVudC50YXJnZXQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCB8fCBldmVudC50YXJnZXQgaW5zdGFuY2VvZiBTVkdFbGVtZW50XG4gICk7XG5cbiAgY29uc3QgZm9ybSA9IGV2ZW50LnRhcmdldC5jbG9zZXN0KCdmb3JtJyk7XG5cbiAgYXNzZXJ0KCdbQlVHXTogQ2Fubm90IGhhbmRsZSBldmVudCB3aGVuIDxPVFA-IElucHV0cyBhcmUgbm90IHJlbmRlcmVkIHdpdGhpbiB0aGVpciA8Zm9ybT4nLCBmb3JtKTtcblxuICBjb25zdCB0b2tlbiA9IHdhaXRlci5iZWdpbkFzeW5jKCk7XG4gIGxldCBmaW5pc2hlZCA9ICgpID0-IHtcbiAgICB3YWl0ZXIuZW5kQXN5bmModG9rZW4pO1xuICAgIGZvcm0ucmVtb3ZlRXZlbnRMaXN0ZW5lcignc3VibWl0JywgZmluaXNoZWQpO1xuICB9O1xuXG4gIGZvcm0uYWRkRXZlbnRMaXN0ZW5lcignc3VibWl0JywgZmluaXNoZWQpO1xuXG4gIC8vIE5PVEU6IHdoZW4gY2FsbGluZyAuc3VibWl0KCkgdGhlIHN1Ym1pdCBldmVudCBoYW5kbGVycyBhcmUgbm90IHJ1blxuICBmb3JtLnJlcXVlc3RTdWJtaXQoKTtcbn1cblxuZXhwb3J0IGNvbnN0IE9UUDogVE9DPHtcbiAgLyoqXG4gICAqIFRoZSBvdmVyYWxsIE9UUCBJbnB1dCBpcyBpbiBpdHMgb3duIGZvcm0uXG4gICAqIE1vZGVybiBVSS9VWCBQYXR0ZXJucyB1c3VhbGx5IGhhdmUgdGhpcyBzb3J0IG9mIGZpZWxkXG4gICAqIGFzIGl0cyBvd24gcGFnZSwgdGh1cyB3aXRoaW4gaXRzIG93biBmb3JtLlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCBvbmx5IHRoZSAnc3VibWl0JyBldmVudCBpcyBib3VuZCwgYW5kIGlzXG4gICAqIHdoYXQgY2FsbHMgdGhlIGBAb25TdWJtaXRgIGFyZ3VtZW50LlxuICAgKi9cbiAgRWxlbWVudDogSFRNTEZvcm1FbGVtZW50O1xuICBBcmdzOiB7XG4gICAgLyoqXG4gICAgICogSG93IG1hbnkgY2hhcmFjdGVycyB0aGUgb25lLXRpbWUtcGFzc3dvcmQgZmllbGQgc2hvdWxkIGJlXG4gICAgICogRGVmYXVsdHMgdG8gNlxuICAgICAqL1xuICAgIGxlbmd0aD86IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIFRoZSBvbiBzdWJtaXQgY2FsbGJhY2sgd2lsbCBnaXZlIHlvdSB0aGUgZW50ZXJlZFxuICAgICAqIG9uZS10aW1lLXBhc3N3b3JkIGNvZGUuXG4gICAgICpcbiAgICAgKiBJdCB3aWxsIGJlIGNhbGxlZCB3aGVuIHRoZSB1c2VyIG1hbnVhbGx5IGNsaWNrcyB0aGUgJ3N1Ym1pdCdcbiAgICAgKiBidXR0b24gb3Igd2hlbiB0aGUgZnVsbCBjb2RlIGlzIHBhc3RlZCBhbmQgbWVhdHMgdGhlIHZhbGlkYXRpb25cbiAgICAgKiBjcml0ZXJpYS5cbiAgICAgKi9cbiAgICBvblN1Ym1pdDogKGRhdGE6IHsgY29kZTogc3RyaW5nIH0pID0-IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCB0byBhdXRvLXN1Ym1pdCBhZnRlciB0aGUgY29kZSBoYXMgYmVlbiBwYXN0ZWRcbiAgICAgKiBpbiB0byB0aGUgY29sbGVjdGl2ZSBcImZpZWxkXCIuICBEZWZhdWx0IGlzIHRydWVcbiAgICAgKi9cbiAgICBhdXRvU3VibWl0PzogYm9vbGVhbjtcbiAgfTtcbiAgQmxvY2tzOiB7XG4gICAgZGVmYXVsdDogW1xuICAgICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIGNvbGxlY3RpdmUgaW5wdXQgZmllbGQgdGhhdCB0aGUgT1RQIGNvZGUgd2lsbCBiZSB0eXBlZC9wYXN0ZWQgaW4gdG9cbiAgICAgICAgICovXG4gICAgICAgIElucHV0OiBXaXRoQm91bmRBcmdzPHR5cGVvZiBPVFBJbnB1dCwgJ2xlbmd0aCcgfCAnb25DaGFuZ2UnPjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEJ1dHRvbiB3aXRoIGB0eXBlPVwic3VibWl0XCJgIHRvIHN1Ym1pdCB0aGUgZm9ybVxuICAgICAgICAgKi9cbiAgICAgICAgU3VibWl0OiB0eXBlb2YgU3VibWl0O1xuICAgICAgICAvKipcbiAgICAgICAgICogUHJlLXdpcmVkIGJ1dHRvbiB0byByZXNldCB0aGUgZm9ybVxuICAgICAgICAgKi9cbiAgICAgICAgUmVzZXQ6IHR5cGVvZiBSZXNldDtcbiAgICAgIH0sXG4gICAgXTtcbiAgfTtcbn0-ID0gPHRlbXBsYXRlPlxuICA8Zm9ybSB7e29uIFwic3VibWl0XCIgKGZuIGhhbmRsZUZvcm1TdWJtaXQgQG9uU3VibWl0KX19IC4uLmF0dHJpYnV0ZXM-XG4gICAge3t5aWVsZFxuICAgICAgKGhhc2hcbiAgICAgICAgSW5wdXQ9KGNvbXBvbmVudFxuICAgICAgICAgIE9UUElucHV0IGxlbmd0aD1AbGVuZ3RoIG9uQ2hhbmdlPShpZiBAYXV0b1N1Ym1pdCAoZm4gaGFuZGxlQ2hhbmdlIEBhdXRvU3VibWl0KSlcbiAgICAgICAgKVxuICAgICAgICBTdWJtaXQ9U3VibWl0XG4gICAgICAgIFJlc2V0PVJlc2V0XG4gICAgICApXG4gICAgfX1cbiAgPC9mb3JtPlxuPC90ZW1wbGF0ZT47XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFNBQVMsTUFBTSxRQUFRLGVBQWU7QUFDdEMsU0FBUyxFQUFFLEVBQUUsSUFBSSxRQUFRLGdCQUFnQjtBQUN6QyxTQUFTLEVBQUUsUUFBUSxrQkFBa0I7QUFDckMsU0FBUyxXQUFXLFFBQVEsc0JBQXNCO0FBRWxELFNBQVMsS0FBSyxFQUFFLE1BQU0sUUFBUSxnQkFBZ0I7QUFDOUMsU0FBUyxRQUFRLFFBQVEsY0FBYztBQUV2QyxjQUFjLEdBQUcsUUFBUSxpQ0FBaUM7QUFDMUQsY0FBYyxhQUFhLFFBQVEsa0JBQWtCO0FBRXJELElBQUksU0FBUyxZQUFZO0FBRXpCLE1BQU0sbUJBQW1CLENBQUMsVUFBUztJQUFRLE1BQU0sTUFBTTtNQUFPLElBQUksRUFBRSxRQUFPO0lBQ3pFLE9BQU0sY0FBYztJQUVwQixPQUNFLDZFQUNBLE9BQU0sYUFBYSxZQUFZO0lBR2pDLElBQUksWUFBVyxJQUFJLFNBQVMsT0FBTSxhQUFhO0lBRS9DLElBQUksUUFBTztJQUVYLEtBQUssSUFBSSxDQUFDLE1BQUssT0FBTSxJQUFJLFVBQVMsT0FBTyxHQUFJO1FBQzNDLElBQUksS0FBSSxVQUFVLENBQUMsU0FBUztZQUMxQixTQUFRO1FBQ1Y7SUFDRjtJQUVBLFFBQU87UUFDTCxNQUFBO0lBQ0Y7QUFDRjtBQUVBLFNBQVMsYUFDUCxhQUFZLE9BQU8sR0FBRyxTQUFTLEVBQy9CO0lBQVEsTUFBTSxNQUFNO0lBQUUsVUFBVSxPQUFPO0NBQUUsRUFDekMsUUFBTyxLQUFLO0lBRVosSUFBSSxDQUFDLGFBQVk7SUFDakIsSUFBSSxDQUFDLE1BQUssUUFBUSxFQUFFO0lBRXBCLE9BQ0UsbURBQ0EsT0FBTSxNQUFNLFlBQVksZUFBZSxPQUFNLE1BQU0sWUFBWTtJQUdqRSxNQUFNLFFBQU8sT0FBTSxNQUFNLENBQUMsT0FBTyxDQUFDO0lBRWxDLE9BQU8scUZBQXFGO0lBRTVGLE1BQU0sU0FBUSxPQUFPLFVBQVU7SUFDL0IsSUFBSSxZQUFXO1FBQ2IsT0FBTyxRQUFRLENBQUM7UUFDaEIsTUFBSyxtQkFBbUIsQ0FBQyxVQUFVO0lBQ3JDO0lBRUEsTUFBSyxnQkFBZ0IsQ0FBQyxVQUFVO0lBRWhDLHFFQUFxRTtJQUNyRSxNQUFLLGFBQWE7QUFDcEI7QUFFQSxPQUFPLE1BQU0sS0FBSztJQUNoQjs7Ozs7OztHQU9DLEdBQ0QsU0FBUztJQUNUO1FBQ0U7OztLQUdDLEdBQ0QsU0FBUyxNQUFNO1FBRWY7Ozs7Ozs7S0FPQyxHQUNELFdBQVc7WUFBUSxNQUFNLE1BQU07Y0FBTyxJQUFJO1FBRTFDOzs7S0FHQyxHQUNELGFBQWEsT0FBTzs7SUFFdEI7UUFDRTtnQkFFSTs7U0FFQyxHQUNELE9BQU8scUJBQXFCLFVBQVUsV0FBVztnQkFDakQ7O1NBRUMsR0FDRCxlQUFlO2dCQUNmOztTQUVDLEdBQ0QsY0FBYzs7O0tBSWpCLFNBQVUsQ0FBQTs7Ozs7Ozs7Ozs7O0FBWWYsQ0FBQSxFQUFBO0lBQUE7UUFBQSxPQUFBLEtBQUEsU0FBQSxDQUFBLEVBQVc7SUFBRDtBQUFBLEdBQUUifQ"],"names":["waiter","buildWaiter","handleFormSubmit","submit1","event1","preventDefault","assert","currentTarget","HTMLFormElement","formData1","FormData","code1","key1","value1","entries","startsWith","code","handleChange","autoSubmit1","data1","complete","target","HTMLElement","SVGElement","form1","closest","token1","beginAsync","finished1","endAsync","removeEventListener","addEventListener","requestSubmit","OTP","precompileTemplate","strictMode","scope","on","fn","hash","OTPInput","Submit","Reset","templateOnly"],"mappings":";;;;;;;;;;AAWA,IAAIA,MAAA,GAASC,WAAA,CAAY,8CAAA,CAAA,CAAA;AAEzB,MAAMC,gBAAA,GAAmBA,CAACC,OAAwC,EAAEC,MAAO,KAAA;AACzEA,EAAAA,MAAA,CAAMC,cAAc,EAAA,CAAA;AAEpBC,EAAAA,MAAA,CACE,2EACAF,EAAAA,MAAA,CAAMG,aAAa,YAAYC,eAAA,CAAA,CAAA;AAGjC,EAAA,IAAIC,SAAA,GAAW,IAAIC,QAAA,CAASN,MAAA,CAAMG,aAAa,CAAA,CAAA;AAE/C,EAAA,IAAII,KAAA,GAAO,EAAA,CAAA;EAEX,KAAK,IAAI,CAACC,IAAA,EAAKC,MAAA,CAAM,IAAIJ,SAAA,CAASK,OAAO,EAAI,EAAA;AAC3C,IAAA,IAAIF,IAAA,CAAIG,UAAU,CAAC,MAAS,CAAA,EAAA;AAC1BJ,MAAAA,KAAA,IAAQE,MAAA,CAAA;AACV,KAAA;AACF,GAAA;AAEAV,EAAAA,OAAA,CAAO;AACLa,IAAAA,IAAA,EAAAL,KAAAA;AACF,GAAA,CAAA,CAAA;AACF,CAAA,CAAA;AAEA,SAASM,YACPC,CAAAA,WAA+B,EAC/BC,KAAyC,EACzCf,MAAY,EAAA;EAEZ,IAAI,CAACc,WAAA,EAAY,OAAA;AACjB,EAAA,IAAI,CAACC,KAAA,CAAKC,QAAQ,EAAE,OAAA;AAEpBd,EAAAA,MAAA,CACE,iDAAA,EACAF,MAAA,CAAMiB,MAAM,YAAYC,WAAA,IAAelB,MAAA,CAAMiB,MAAM,YAAYE,UAAA,CAAA,CAAA;AAGjE,EAAA,MAAMC,KAAA,GAAOpB,MAAA,CAAMiB,MAAM,CAACI,OAAO,CAAC,MAAA,CAAA,CAAA;EAElCnB,MAAA,CAAO,qFAAqFkB,KAAA,CAAA,CAAA;AAE5F,EAAA,MAAME,MAAA,GAAQ1B,MAAA,CAAO2B,UAAU,EAAA,CAAA;EAC/B,IAAIC,SAAA,GAAWA,MAAA;IACb5B,MAAA,CAAO6B,QAAQ,CAACH,MAAA,CAAA,CAAA;AAChBF,IAAAA,KAAA,CAAKM,mBAAmB,CAAC,QAAA,EAAUF,SAAA,CAAA,CAAA;AACrC,GAAA,CAAA;AAEAJ,EAAAA,KAAA,CAAKO,gBAAgB,CAAC,QAAA,EAAUH,SAAA,CAAA,CAAA;AAEhC;AACAJ,EAAAA,KAAA,CAAKQ,aAAa,EAAA,CAAA;AACpB,CAAA;AAEaC,MAAAA,MAmDRC,oBAAAA,CAAAA,kBAAA,CAYL,2OAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,EAAA;IAAAC,EAAA;IAAApC,gBAAA;IAAAqC,IAAA;IAAAC,QAAA;IAAAvB,YAAA;IAAAwB,MAAA;AAAAC,IAAAA,KAAAA;AAAA,GAAA,CAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
1
+ {"version":3,"file":"otp.js","sources":["../../../src/components/one-time-password/otp.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport { assert } from '@ember/debug';\nimport { fn, hash } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport { buildWaiter } from '@ember/test-waiters';\nimport { Reset, Submit } from './buttons.gts';\nimport { OTPInput } from './input.gts';\nimport type { TOC } from '@ember/component/template-only';\nimport type { WithBoundArgs } from '@glint/template';\nlet waiter = buildWaiter('ember-primitives:OTP:handleAutoSubmitAttempt');\nconst handleFormSubmit = (submit1: (data: {\n code: string;\n}) => void, event1: SubmitEvent)=>{\n event1.preventDefault();\n assert('[BUG]: handleFormSubmit was not attached to a form. Please open an issue.', event1.currentTarget instanceof HTMLFormElement);\n let formData1 = new FormData(event1.currentTarget);\n let code1 = '';\n for (let [key1, value1] of formData1.entries()){\n if (key1.startsWith('code')) {\n code1 += value1;\n }\n }\n submit1({\n code: code1\n });\n};\nfunction handleChange(autoSubmit1: boolean | undefined, data1: {\n code: string;\n complete: boolean;\n}, event1: Event) {\n if (!autoSubmit1) return;\n if (!data1.complete) return;\n assert('[BUG]: event target is not a known element type', event1.target instanceof HTMLElement || event1.target instanceof SVGElement);\n const form1 = event1.target.closest('form');\n assert('[BUG]: Cannot handle event when <OTP> Inputs are not rendered within their <form>', form1);\n const token1 = waiter.beginAsync();\n let finished1 = ()=>{\n waiter.endAsync(token1);\n form1.removeEventListener('submit', finished1);\n };\n form1.addEventListener('submit', finished1);\n // NOTE: when calling .submit() the submit event handlers are not run\n form1.requestSubmit();\n}\nexport const OTP: TOC<{\n /**\n * The overall OTP Input is in its own form.\n * Modern UI/UX Patterns usually have this sort of field\n * as its own page, thus within its own form.\n *\n * By default, only the 'submit' event is bound, and is\n * what calls the `@onSubmit` argument.\n */ Element: HTMLFormElement;\n Args: {\n /**\n * How many characters the one-time-password field should be\n * Defaults to 6\n */ length?: number;\n /**\n * The on submit callback will give you the entered\n * one-time-password code.\n *\n * It will be called when the user manually clicks the 'submit'\n * button or when the full code is pasted and meats the validation\n * criteria.\n */ onSubmit: (data: {\n code: string;\n }) => void;\n /**\n * Whether or not to auto-submit after the code has been pasted\n * in to the collective \"field\". Default is true\n */ autoSubmit?: boolean;\n };\n Blocks: {\n default: [{\n /**\n * The collective input field that the OTP code will be typed/pasted in to\n */ Input: WithBoundArgs<typeof OTPInput, 'length' | 'onChange'>;\n /**\n * Button with `type=\"submit\"` to submit the form\n */ Submit: typeof Submit;\n /**\n * Pre-wired button to reset the form\n */ Reset: typeof Reset;\n }];\n };\n}> = template(`\n <form {{on \"submit\" (fn handleFormSubmit @onSubmit)}} ...attributes>\n {{yield\n (hash\n Input=(component\n OTPInput length=@length onChange=(if @autoSubmit (fn handleChange @autoSubmit))\n )\n Submit=Submit\n Reset=Reset\n )\n }}\n </form>\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2VtYmVyLXByaW1pdGl2ZXMvZW1iZXItcHJpbWl0aXZlcy9lbWJlci1wcmltaXRpdmVzL3NyYy9jb21wb25lbnRzL29uZS10aW1lLXBhc3N3b3JkL290cC5ndHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSAnQGVtYmVyL2RlYnVnJztcbmltcG9ydCB7IGZuLCBoYXNoIH0gZnJvbSAnQGVtYmVyL2hlbHBlcic7XG5pbXBvcnQgeyBvbiB9IGZyb20gJ0BlbWJlci9tb2RpZmllcic7XG5pbXBvcnQgeyBidWlsZFdhaXRlciB9IGZyb20gJ0BlbWJlci90ZXN0LXdhaXRlcnMnO1xuXG5pbXBvcnQgeyBSZXNldCwgU3VibWl0IH0gZnJvbSAnLi9idXR0b25zLmd0cyc7XG5pbXBvcnQgeyBPVFBJbnB1dCB9IGZyb20gJy4vaW5wdXQuZ3RzJztcblxuaW1wb3J0IHR5cGUgeyBUT0MgfSBmcm9tICdAZW1iZXIvY29tcG9uZW50L3RlbXBsYXRlLW9ubHknO1xuaW1wb3J0IHR5cGUgeyBXaXRoQm91bmRBcmdzIH0gZnJvbSAnQGdsaW50L3RlbXBsYXRlJztcblxubGV0IHdhaXRlciA9IGJ1aWxkV2FpdGVyKCdlbWJlci1wcmltaXRpdmVzOk9UUDpoYW5kbGVBdXRvU3VibWl0QXR0ZW1wdCcpO1xuXG5jb25zdCBoYW5kbGVGb3JtU3VibWl0ID0gKHN1Ym1pdDogKGRhdGE6IHsgY29kZTogc3RyaW5nIH0pID0-IHZvaWQsIGV2ZW50OiBTdWJtaXRFdmVudCkgPT4ge1xuICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gIGFzc2VydChcbiAgICAnW0JVR106IGhhbmRsZUZvcm1TdWJtaXQgd2FzIG5vdCBhdHRhY2hlZCB0byBhIGZvcm0uIFBsZWFzZSBvcGVuIGFuIGlzc3VlLicsXG4gICAgZXZlbnQuY3VycmVudFRhcmdldCBpbnN0YW5jZW9mIEhUTUxGb3JtRWxlbWVudFxuICApO1xuXG4gIGxldCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YShldmVudC5jdXJyZW50VGFyZ2V0KTtcblxuICBsZXQgY29kZSA9ICcnO1xuXG4gIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBmb3JtRGF0YS5lbnRyaWVzKCkpIHtcbiAgICBpZiAoa2V5LnN0YXJ0c1dpdGgoJ2NvZGUnKSkge1xuICAgICAgY29kZSArPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBzdWJtaXQoe1xuICAgIGNvZGUsXG4gIH0pO1xufTtcblxuZnVuY3Rpb24gaGFuZGxlQ2hhbmdlKFxuICBhdXRvU3VibWl0OiBib29sZWFuIHwgdW5kZWZpbmVkLFxuICBkYXRhOiB7IGNvZGU6IHN0cmluZzsgY29tcGxldGU6IGJvb2xlYW4gfSxcbiAgZXZlbnQ6IEV2ZW50XG4pIHtcbiAgaWYgKCFhdXRvU3VibWl0KSByZXR1cm47XG4gIGlmICghZGF0YS5jb21wbGV0ZSkgcmV0dXJuO1xuXG4gIGFzc2VydChcbiAgICAnW0JVR106IGV2ZW50IHRhcmdldCBpcyBub3QgYSBrbm93biBlbGVtZW50IHR5cGUnLFxuICAgIGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50IHx8IGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIFNWR0VsZW1lbnRcbiAgKTtcblxuICBjb25zdCBmb3JtID0gZXZlbnQudGFyZ2V0LmNsb3Nlc3QoJ2Zvcm0nKTtcblxuICBhc3NlcnQoJ1tCVUddOiBDYW5ub3QgaGFuZGxlIGV2ZW50IHdoZW4gPE9UUD4gSW5wdXRzIGFyZSBub3QgcmVuZGVyZWQgd2l0aGluIHRoZWlyIDxmb3JtPicsIGZvcm0pO1xuXG4gIGNvbnN0IHRva2VuID0gd2FpdGVyLmJlZ2luQXN5bmMoKTtcbiAgbGV0IGZpbmlzaGVkID0gKCkgPT4ge1xuICAgIHdhaXRlci5lbmRBc3luYyh0b2tlbik7XG4gICAgZm9ybS5yZW1vdmVFdmVudExpc3RlbmVyKCdzdWJtaXQnLCBmaW5pc2hlZCk7XG4gIH07XG5cbiAgZm9ybS5hZGRFdmVudExpc3RlbmVyKCdzdWJtaXQnLCBmaW5pc2hlZCk7XG5cbiAgLy8gTk9URTogd2hlbiBjYWxsaW5nIC5zdWJtaXQoKSB0aGUgc3VibWl0IGV2ZW50IGhhbmRsZXJzIGFyZSBub3QgcnVuXG4gIGZvcm0ucmVxdWVzdFN1Ym1pdCgpO1xufVxuXG5leHBvcnQgY29uc3QgT1RQOiBUT0M8e1xuICAvKipcbiAgICogVGhlIG92ZXJhbGwgT1RQIElucHV0IGlzIGluIGl0cyBvd24gZm9ybS5cbiAgICogTW9kZXJuIFVJL1VYIFBhdHRlcm5zIHVzdWFsbHkgaGF2ZSB0aGlzIHNvcnQgb2YgZmllbGRcbiAgICogYXMgaXRzIG93biBwYWdlLCB0aHVzIHdpdGhpbiBpdHMgb3duIGZvcm0uXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIG9ubHkgdGhlICdzdWJtaXQnIGV2ZW50IGlzIGJvdW5kLCBhbmQgaXNcbiAgICogd2hhdCBjYWxscyB0aGUgYEBvblN1Ym1pdGAgYXJndW1lbnQuXG4gICAqL1xuICBFbGVtZW50OiBIVE1MRm9ybUVsZW1lbnQ7XG4gIEFyZ3M6IHtcbiAgICAvKipcbiAgICAgKiBIb3cgbWFueSBjaGFyYWN0ZXJzIHRoZSBvbmUtdGltZS1wYXNzd29yZCBmaWVsZCBzaG91bGQgYmVcbiAgICAgKiBEZWZhdWx0cyB0byA2XG4gICAgICovXG4gICAgbGVuZ3RoPzogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogVGhlIG9uIHN1Ym1pdCBjYWxsYmFjayB3aWxsIGdpdmUgeW91IHRoZSBlbnRlcmVkXG4gICAgICogb25lLXRpbWUtcGFzc3dvcmQgY29kZS5cbiAgICAgKlxuICAgICAqIEl0IHdpbGwgYmUgY2FsbGVkIHdoZW4gdGhlIHVzZXIgbWFudWFsbHkgY2xpY2tzIHRoZSAnc3VibWl0J1xuICAgICAqIGJ1dHRvbiBvciB3aGVuIHRoZSBmdWxsIGNvZGUgaXMgcGFzdGVkIGFuZCBtZWF0cyB0aGUgdmFsaWRhdGlvblxuICAgICAqIGNyaXRlcmlhLlxuICAgICAqL1xuICAgIG9uU3VibWl0OiAoZGF0YTogeyBjb2RlOiBzdHJpbmcgfSkgPT4gdm9pZDtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgb3Igbm90IHRvIGF1dG8tc3VibWl0IGFmdGVyIHRoZSBjb2RlIGhhcyBiZWVuIHBhc3RlZFxuICAgICAqIGluIHRvIHRoZSBjb2xsZWN0aXZlIFwiZmllbGRcIi4gIERlZmF1bHQgaXMgdHJ1ZVxuICAgICAqL1xuICAgIGF1dG9TdWJtaXQ_OiBib29sZWFuO1xuICB9O1xuICBCbG9ja3M6IHtcbiAgICBkZWZhdWx0OiBbXG4gICAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgY29sbGVjdGl2ZSBpbnB1dCBmaWVsZCB0aGF0IHRoZSBPVFAgY29kZSB3aWxsIGJlIHR5cGVkL3Bhc3RlZCBpbiB0b1xuICAgICAgICAgKi9cbiAgICAgICAgSW5wdXQ6IFdpdGhCb3VuZEFyZ3M8dHlwZW9mIE9UUElucHV0LCAnbGVuZ3RoJyB8ICdvbkNoYW5nZSc-O1xuICAgICAgICAvKipcbiAgICAgICAgICogQnV0dG9uIHdpdGggYHR5cGU9XCJzdWJtaXRcImAgdG8gc3VibWl0IHRoZSBmb3JtXG4gICAgICAgICAqL1xuICAgICAgICBTdWJtaXQ6IHR5cGVvZiBTdWJtaXQ7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBQcmUtd2lyZWQgYnV0dG9uIHRvIHJlc2V0IHRoZSBmb3JtXG4gICAgICAgICAqL1xuICAgICAgICBSZXNldDogdHlwZW9mIFJlc2V0O1xuICAgICAgfSxcbiAgICBdO1xuICB9O1xufT4gPSA8dGVtcGxhdGU-XG4gIDxmb3JtIHt7b24gXCJzdWJtaXRcIiAoZm4gaGFuZGxlRm9ybVN1Ym1pdCBAb25TdWJtaXQpfX0gLi4uYXR0cmlidXRlcz5cbiAgICB7e3lpZWxkXG4gICAgICAoaGFzaFxuICAgICAgICBJbnB1dD0oY29tcG9uZW50XG4gICAgICAgICAgT1RQSW5wdXQgbGVuZ3RoPUBsZW5ndGggb25DaGFuZ2U9KGlmIEBhdXRvU3VibWl0IChmbiBoYW5kbGVDaGFuZ2UgQGF1dG9TdWJtaXQpKVxuICAgICAgICApXG4gICAgICAgIFN1Ym1pdD1TdWJtaXRcbiAgICAgICAgUmVzZXQ9UmVzZXRcbiAgICAgIClcbiAgICB9fVxuICA8L2Zvcm0-XG48L3RlbXBsYXRlPjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsU0FBUyxNQUFNLFFBQVEsZUFBZTtBQUN0QyxTQUFTLEVBQUUsRUFBRSxJQUFJLFFBQVEsZ0JBQWdCO0FBQ3pDLFNBQVMsRUFBRSxRQUFRLGtCQUFrQjtBQUNyQyxTQUFTLFdBQVcsUUFBUSxzQkFBc0I7QUFFbEQsU0FBUyxLQUFLLEVBQUUsTUFBTSxRQUFRLGdCQUFnQjtBQUM5QyxTQUFTLFFBQVEsUUFBUSxjQUFjO0FBRXZDLGNBQWMsR0FBRyxRQUFRLGlDQUFpQztBQUMxRCxjQUFjLGFBQWEsUUFBUSxrQkFBa0I7QUFFckQsSUFBSSxTQUFTLFlBQVk7QUFFekIsTUFBTSxtQkFBbUIsQ0FBQyxVQUFTO0lBQVEsTUFBTSxNQUFNO01BQU8sSUFBSSxFQUFFLFFBQU87SUFDekUsT0FBTSxjQUFjO0lBRXBCLE9BQ0UsNkVBQ0EsT0FBTSxhQUFhLFlBQVk7SUFHakMsSUFBSSxZQUFXLElBQUksU0FBUyxPQUFNLGFBQWE7SUFFL0MsSUFBSSxRQUFPO0lBRVgsS0FBSyxJQUFJLENBQUMsTUFBSyxPQUFNLElBQUksVUFBUyxPQUFPLEdBQUk7UUFDM0MsSUFBSSxLQUFJLFVBQVUsQ0FBQyxTQUFTO1lBQzFCLFNBQVE7UUFDVjtJQUNGO0lBRUEsUUFBTztRQUNMLE1BQUE7SUFDRjtBQUNGO0FBRUEsU0FBUyxhQUNQLGFBQVksT0FBTyxHQUFHLFNBQVMsRUFDL0I7SUFBUSxNQUFNLE1BQU07SUFBRSxVQUFVLE9BQU87Q0FBRSxFQUN6QyxRQUFPLEtBQUs7SUFFWixJQUFJLENBQUMsYUFBWTtJQUNqQixJQUFJLENBQUMsTUFBSyxRQUFRLEVBQUU7SUFFcEIsT0FDRSxtREFDQSxPQUFNLE1BQU0sWUFBWSxlQUFlLE9BQU0sTUFBTSxZQUFZO0lBR2pFLE1BQU0sUUFBTyxPQUFNLE1BQU0sQ0FBQyxPQUFPLENBQUM7SUFFbEMsT0FBTyxxRkFBcUY7SUFFNUYsTUFBTSxTQUFRLE9BQU8sVUFBVTtJQUMvQixJQUFJLFlBQVc7UUFDYixPQUFPLFFBQVEsQ0FBQztRQUNoQixNQUFLLG1CQUFtQixDQUFDLFVBQVU7SUFDckM7SUFFQSxNQUFLLGdCQUFnQixDQUFDLFVBQVU7SUFFaEMscUVBQXFFO0lBQ3JFLE1BQUssYUFBYTtBQUNwQjtBQUVBLE9BQU8sTUFBTSxLQUFLO0lBQ2hCOzs7Ozs7O0dBT0MsR0FDRCxTQUFTO0lBQ1Q7UUFDRTs7O0tBR0MsR0FDRCxTQUFTLE1BQU07UUFFZjs7Ozs7OztLQU9DLEdBQ0QsV0FBVztZQUFRLE1BQU0sTUFBTTtjQUFPLElBQUk7UUFFMUM7OztLQUdDLEdBQ0QsYUFBYSxPQUFPOztJQUV0QjtRQUNFO2dCQUVJOztTQUVDLEdBQ0QsT0FBTyxxQkFBcUIsVUFBVSxXQUFXO2dCQUNqRDs7U0FFQyxHQUNELGVBQWU7Z0JBQ2Y7O1NBRUMsR0FDRCxjQUFjOzs7S0FJakIsU0FBVSxDQUFBOzs7Ozs7Ozs7Ozs7QUFZZixDQUFBLEVBQUE7SUFBQTtRQUFBLE9BQUEsS0FBQSxTQUFBLENBQUEsRUFBVztJQUFEO0FBQUEsR0FBRSJ9"],"names":["waiter","buildWaiter","handleFormSubmit","submit1","event1","preventDefault","assert","currentTarget","HTMLFormElement","formData1","FormData","code1","key1","value1","entries","startsWith","code","handleChange","autoSubmit1","data1","complete","target","HTMLElement","SVGElement","form1","closest","token1","beginAsync","finished1","endAsync","removeEventListener","addEventListener","requestSubmit","OTP","precompileTemplate","strictMode","scope","on","fn","hash","OTPInput","Submit","Reset","templateOnly"],"mappings":";;;;;;;;;;AAWA,IAAIA,MAAA,GAASC,WAAA,CAAY,8CAAA,CAAA,CAAA;AAEzB,MAAMC,gBAAA,GAAmBA,CAACC,OAAwC,EAAEC,MAAO,KAAA;AACzEA,EAAAA,MAAA,CAAMC,cAAc,EAAA,CAAA;AAEpBC,EAAAA,MAAA,CACE,2EACAF,EAAAA,MAAA,CAAMG,aAAa,YAAYC,eAAA,CAAA,CAAA;AAGjC,EAAA,IAAIC,SAAA,GAAW,IAAIC,QAAA,CAASN,MAAA,CAAMG,aAAa,CAAA,CAAA;AAE/C,EAAA,IAAII,KAAA,GAAO,EAAA,CAAA;EAEX,KAAK,IAAI,CAACC,IAAA,EAAKC,MAAA,CAAM,IAAIJ,SAAA,CAASK,OAAO,EAAI,EAAA;AAC3C,IAAA,IAAIF,IAAA,CAAIG,UAAU,CAAC,MAAS,CAAA,EAAA;AAC1BJ,MAAAA,KAAA,IAAQE,MAAA,CAAA;AACV,KAAA;AACF,GAAA;AAEAV,EAAAA,OAAA,CAAO;AACLa,IAAAA,IAAA,EAAAL,KAAAA;AACF,GAAA,CAAA,CAAA;AACF,CAAA,CAAA;AAEA,SAASM,YACPC,CAAAA,WAA+B,EAC/BC,KAAyC,EACzCf,MAAY,EAAA;EAEZ,IAAI,CAACc,WAAA,EAAY,OAAA;AACjB,EAAA,IAAI,CAACC,KAAA,CAAKC,QAAQ,EAAE,OAAA;AAEpBd,EAAAA,MAAA,CACE,iDAAA,EACAF,MAAA,CAAMiB,MAAM,YAAYC,WAAA,IAAelB,MAAA,CAAMiB,MAAM,YAAYE,UAAA,CAAA,CAAA;AAGjE,EAAA,MAAMC,KAAA,GAAOpB,MAAA,CAAMiB,MAAM,CAACI,OAAO,CAAC,MAAA,CAAA,CAAA;EAElCnB,MAAA,CAAO,qFAAqFkB,KAAA,CAAA,CAAA;AAE5F,EAAA,MAAME,MAAA,GAAQ1B,MAAA,CAAO2B,UAAU,EAAA,CAAA;EAC/B,IAAIC,SAAA,GAAWA,MAAA;IACb5B,MAAA,CAAO6B,QAAQ,CAACH,MAAA,CAAA,CAAA;AAChBF,IAAAA,KAAA,CAAKM,mBAAmB,CAAC,QAAA,EAAUF,SAAA,CAAA,CAAA;AACrC,GAAA,CAAA;AAEAJ,EAAAA,KAAA,CAAKO,gBAAgB,CAAC,QAAA,EAAUH,SAAA,CAAA,CAAA;AAEhC;AACAJ,EAAAA,KAAA,CAAKQ,aAAa,EAAA,CAAA;AACpB,CAAA;AAEaC,MAAAA,MAmDRC,oBAAAA,CAAAA,kBAAA,CAYL,2OAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,EAAA;IAAAC,EAAA;IAAApC,gBAAA;IAAAqC,IAAA;IAAAC,QAAA;IAAAvB,YAAA;IAAAwB,MAAA;AAAAC,IAAAA,KAAAA;AAAA,GAAA,CAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../src/components/one-time-password/utils.ts"],"sourcesContent":["import { assert } from '@ember/debug';\n\nfunction getInputs(current: HTMLInputElement) {\n let fieldset = current.closest('fieldset');\n\n assert('[BUG]: fieldset went missing', fieldset);\n\n return [...fieldset.querySelectorAll('input')];\n}\n\nfunction nextInput(current: HTMLInputElement) {\n let inputs = getInputs(current);\n let currentIndex = inputs.indexOf(current);\n\n return inputs[currentIndex + 1];\n}\n\nexport function selectAll(event: Event) {\n let target = event.target;\n\n assert(`selectAll is only meant for use with input elements`, target instanceof HTMLInputElement);\n\n target.select();\n}\n\nexport function handlePaste(event: Event) {\n let target = event.target;\n\n assert(\n `handlePaste is only meant for use with input elements`,\n target instanceof HTMLInputElement\n );\n\n let clipboardData = (event as ClipboardEvent).clipboardData;\n\n assert(\n `Could not get clipboardData while handling the paste event on OTP. Please report this issue on the ember-primitives repo with a reproduction. Thanks!`,\n clipboardData\n );\n\n // This is typically not good to prevent paste.\n // But because of the UX we're implementing,\n // we want to split the pasted value across\n // multiple text fields\n event.preventDefault();\n\n let value = clipboardData.getData('Text');\n const digits = value;\n let i = 0;\n let currElement: HTMLInputElement | null = target;\n\n while (currElement) {\n currElement.value = digits[i++] || '';\n\n let next = nextInput(currElement);\n\n if (next instanceof HTMLInputElement) {\n currElement = next;\n } else {\n break;\n }\n }\n\n // We want to select the first field again\n // so that if someone holds paste, or\n // pastes again, they get the same result.\n target.select();\n}\n\nexport function handleNavigation(event: KeyboardEvent) {\n switch (event.key) {\n case 'Backspace':\n return handleBackspace(event);\n case 'ArrowLeft':\n return focusLeft(event);\n case 'ArrowRight':\n return focusRight(event);\n }\n}\n\nfunction focusLeft(event: Pick<Event, 'target'>) {\n let target = event.target;\n\n assert(`only allowed on input elements`, target instanceof HTMLInputElement);\n\n let input = previousInput(target);\n\n input?.focus();\n requestAnimationFrame(() => {\n input?.select();\n });\n}\n\nfunction focusRight(event: Pick<Event, 'target'>) {\n let target = event.target;\n\n assert(`only allowed on input elements`, target instanceof HTMLInputElement);\n\n let input = nextInput(target);\n\n input?.focus();\n requestAnimationFrame(() => {\n input?.select();\n });\n}\n\nconst syntheticEvent = new InputEvent('input');\n\nfunction handleBackspace(event: KeyboardEvent) {\n if (event.key !== 'Backspace') return;\n\n /**\n * We have to prevent default because we\n * - want to clear the whole field\n * - have the focus behavior keep up with the key-repeat\n * speed of the user's computer\n */\n event.preventDefault();\n\n let target = event.target;\n\n if (target && 'value' in target) {\n if (target.value === '') {\n focusLeft({ target });\n } else {\n target.value = '';\n }\n }\n\n target?.dispatchEvent(syntheticEvent);\n}\n\nfunction previousInput(current: HTMLInputElement) {\n let inputs = getInputs(current);\n let currentIndex = inputs.indexOf(current);\n\n return inputs[currentIndex - 1];\n}\n\nexport const autoAdvance = (event: Event) => {\n assert(\n '[BUG]: autoAdvance called on non-input element',\n event.target instanceof HTMLInputElement\n );\n\n let value = event.target.value;\n\n if (value.length === 0) return;\n\n if (value.length > 0) {\n if ('data' in event && event.data && typeof event.data === 'string') {\n event.target.value = event.data;\n }\n\n return focusRight(event);\n }\n};\n\nexport function getCollectiveValue(elementTarget: EventTarget | null, length: number) {\n if (!elementTarget) return;\n\n assert(\n `[BUG]: somehow the element target is not HTMLElement`,\n elementTarget instanceof HTMLElement\n );\n\n let parent: null | HTMLElement | ShadowRoot;\n\n // TODO: should this logic be extracted?\n // why is getting the target element within a shadow root hard?\n if (!(elementTarget instanceof HTMLInputElement)) {\n if (elementTarget.shadowRoot) {\n parent = elementTarget.shadowRoot;\n } else {\n parent = elementTarget.closest('fieldset');\n }\n } else {\n parent = elementTarget.closest('fieldset');\n }\n\n assert(`[BUG]: somehow the input fields were rendered without a parent element`, parent);\n\n let elements = parent.querySelectorAll('input');\n\n let value = '';\n\n assert(\n `found elements (${elements.length}) do not match length (${length}). Was the same OTP input rendered more than once?`,\n elements.length === length\n );\n\n for (let element of elements) {\n assert(\n '[BUG]: how did the queried elements become a non-input element?',\n element instanceof HTMLInputElement\n );\n value += element.value;\n }\n\n return value;\n}\n"],"names":["getInputs","current","fieldset","closest","assert","querySelectorAll","nextInput","inputs","currentIndex","indexOf","selectAll","event","target","HTMLInputElement","select","handlePaste","clipboardData","preventDefault","value","getData","digits","i","currElement","next","handleNavigation","key","handleBackspace","focusLeft","focusRight","input","previousInput","focus","requestAnimationFrame","syntheticEvent","InputEvent","dispatchEvent","autoAdvance","length","data","getCollectiveValue","elementTarget","HTMLElement","parent","shadowRoot","elements","element"],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sources":["../../../src/components/one-time-password/utils.ts"],"sourcesContent":["import { assert } from '@ember/debug';\n\nfunction getInputs(current: HTMLInputElement) {\n let fieldset = current.closest('fieldset');\n\n assert('[BUG]: fieldset went missing', fieldset);\n\n return [...fieldset.querySelectorAll('input')];\n}\n\nfunction nextInput(current: HTMLInputElement) {\n let inputs = getInputs(current);\n let currentIndex = inputs.indexOf(current);\n\n return inputs[currentIndex + 1];\n}\n\nexport function selectAll(event: Event) {\n let target = event.target;\n\n assert(`selectAll is only meant for use with input elements`, target instanceof HTMLInputElement);\n\n target.select();\n}\n\nexport function handlePaste(event: Event) {\n let target = event.target;\n\n assert(\n `handlePaste is only meant for use with input elements`,\n target instanceof HTMLInputElement\n );\n\n let clipboardData = (event as ClipboardEvent).clipboardData;\n\n assert(\n `Could not get clipboardData while handling the paste event on OTP. Please report this issue on the ember-primitives repo with a reproduction. Thanks!`,\n clipboardData\n );\n\n // This is typically not good to prevent paste.\n // But because of the UX we're implementing,\n // we want to split the pasted value across\n // multiple text fields\n event.preventDefault();\n\n let value = clipboardData.getData('Text');\n const digits = value;\n let i = 0;\n let currElement: HTMLInputElement | null = target;\n\n while (currElement) {\n currElement.value = digits[i++] || '';\n\n let next = nextInput(currElement);\n\n if (next instanceof HTMLInputElement) {\n currElement = next;\n } else {\n break;\n }\n }\n\n // We want to select the first field again\n // so that if someone holds paste, or\n // pastes again, they get the same result.\n target.select();\n}\n\nexport function handleNavigation(event: KeyboardEvent) {\n switch (event.key) {\n case 'Backspace':\n return handleBackspace(event);\n case 'ArrowLeft':\n return focusLeft(event);\n case 'ArrowRight':\n return focusRight(event);\n }\n}\n\nfunction focusLeft(event: Pick<Event, 'target'>) {\n let target = event.target;\n\n assert(`only allowed on input elements`, target instanceof HTMLInputElement);\n\n let input = previousInput(target);\n\n input?.focus();\n requestAnimationFrame(() => {\n input?.select();\n });\n}\n\nfunction focusRight(event: Pick<Event, 'target'>) {\n let target = event.target;\n\n assert(`only allowed on input elements`, target instanceof HTMLInputElement);\n\n let input = nextInput(target);\n\n input?.focus();\n requestAnimationFrame(() => {\n input?.select();\n });\n}\n\nconst syntheticEvent = new InputEvent('input');\n\nfunction handleBackspace(event: KeyboardEvent) {\n if (event.key !== 'Backspace') return;\n\n /**\n * We have to prevent default because we\n * - want to clear the whole field\n * - have the focus behavior keep up with the key-repeat\n * speed of the user's computer\n */\n event.preventDefault();\n\n let target = event.target;\n\n if (target && 'value' in target) {\n if (target.value === '') {\n focusLeft({ target });\n } else {\n target.value = '';\n }\n }\n\n target?.dispatchEvent(syntheticEvent);\n}\n\nfunction previousInput(current: HTMLInputElement) {\n let inputs = getInputs(current);\n let currentIndex = inputs.indexOf(current);\n\n return inputs[currentIndex - 1];\n}\n\nexport const autoAdvance = (event: Event) => {\n assert(\n '[BUG]: autoAdvance called on non-input element',\n event.target instanceof HTMLInputElement\n );\n\n let value = event.target.value;\n\n if (value.length === 0) return;\n\n if (value.length > 0) {\n if ('data' in event && event.data && typeof event.data === 'string') {\n event.target.value = event.data;\n }\n\n return focusRight(event);\n }\n};\n\nexport function getCollectiveValue(elementTarget: EventTarget | null, length: number) {\n if (!elementTarget) return;\n\n assert(\n `[BUG]: somehow the element target is not HTMLElement`,\n elementTarget instanceof HTMLElement\n );\n\n let parent: null | HTMLElement | ShadowRoot;\n\n // TODO: should this logic be extracted?\n // why is getting the target element within a shadow root hard?\n if (!(elementTarget instanceof HTMLInputElement)) {\n if (elementTarget.shadowRoot) {\n parent = elementTarget.shadowRoot;\n } else {\n parent = elementTarget.closest('fieldset');\n }\n } else {\n parent = elementTarget.closest('fieldset');\n }\n\n assert(`[BUG]: somehow the input fields were rendered without a parent element`, parent);\n\n let elements = parent.querySelectorAll('input');\n\n let value = '';\n\n assert(\n `found elements (${elements.length}) do not match length (${length}). Was the same OTP input rendered more than once?`,\n elements.length === length\n );\n\n for (let element of elements) {\n assert(\n '[BUG]: how did the queried elements become a non-input element?',\n element instanceof HTMLInputElement\n );\n value += element.value;\n }\n\n return value;\n}\n"],"names":["getInputs","current","fieldset","closest","assert","querySelectorAll","nextInput","inputs","currentIndex","indexOf","selectAll","event","target","HTMLInputElement","select","handlePaste","clipboardData","preventDefault","value","getData","digits","i","currElement","next","handleNavigation","key","handleBackspace","focusLeft","focusRight","input","previousInput","focus","requestAnimationFrame","syntheticEvent","InputEvent","dispatchEvent","autoAdvance","length","data","getCollectiveValue","elementTarget","HTMLElement","parent","shadowRoot","elements","element"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"popover.js","sources":["../../src/components/popover.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport { hash } from '@ember/helper';\nimport { arrow } from '@floating-ui/dom';\nimport { element } from 'ember-element-helper';\nimport { modifier as eModifier } from 'ember-modifier';\nimport { cell } from 'ember-resources';\nimport { FloatingUI } from '../floating-ui.ts';\nimport { Portal } from './portal.gts';\nimport { TARGETS } from './portal-targets.gts';\nimport type { Signature as FloatingUiComponentSignature } from '../floating-ui/component.ts';\nimport type { Signature as HookSignature } from '../floating-ui/modifier.ts';\nimport type { TOC } from '@ember/component/template-only';\nimport type { ElementContext, Middleware } from '@floating-ui/dom';\nimport type { ModifierLike, WithBoundArgs } from '@glint/template';\nexport interface Signature {\n Args: {\n /**\n * See the Floating UI's [flip docs](https://floating-ui.com/docs/flip) for possible values.\n *\n * This argument is forwarded to `ember-velcro`'s `<Velcro>` component.\n */ flipOptions?: HookSignature['Args']['Named']['flipOptions'];\n /**\n * Array of one or more objects to add to Floating UI's list of [middleware](https://floating-ui.com/docs/middleware)\n *\n * This argument is forwarded to `ember-velcro`'s `<Velcro>` component.\n */ middleware?: HookSignature['Args']['Named']['middleware'];\n /**\n * See the Floating UI's [offset docs](https://floating-ui.com/docs/offset) for possible values.\n *\n * This argument is forwarded to `ember-velcro`'s `<Velcro>` component.\n */ offsetOptions?: HookSignature['Args']['Named']['offsetOptions'];\n /**\n * One of the possible [`placements`](https://floating-ui.com/docs/computeposition#placement). The default is 'bottom'.\n *\n * Possible values are\n * - top\n * - bottom\n * - right\n * - left\n *\n * And may optionally have `-start` or `-end` added to adjust position along the side.\n *\n * This argument is forwarded to `ember-velcro`'s `<Velcro>` component.\n */ placement?: `${'top' | 'bottom' | 'left' | 'right'}${'' | '-start' | '-end'}`;\n /**\n * See the Floating UI's [shift docs](https://floating-ui.com/docs/shift) for possible values.\n *\n * This argument is forwarded to `ember-velcro`'s `<Velcro>` component.\n */ shiftOptions?: HookSignature['Args']['Named']['shiftOptions'];\n /**\n * CSS position property, either `fixed` or `absolute`.\n *\n * Pros and cons of each strategy are explained on [Floating UI's Docs](https://floating-ui.com/docs/computePosition#strategy)\n *\n * This argument is forwarded to `ember-velcro`'s `<Velcro>` component.\n */ strategy?: HookSignature['Args']['Named']['strategy'];\n /**\n * By default, the popover is portaled.\n * If you don't control your CSS, and the positioning of the popover content\n * is misbehaving, you may pass \"@inline={{true}}\" to opt out of portalling.\n *\n * Inline may also be useful in nested menus, where you know exactly how the nesting occurs\n */ inline?: boolean;\n };\n Blocks: {\n default: [{\n hook: FloatingUiComponentSignature['Blocks']['default'][0]['hook'];\n setHook: FloatingUiComponentSignature['Blocks']['default'][0]['setHook'];\n Content: WithBoundArgs<typeof Content, 'loop'>;\n data: FloatingUiComponentSignature['Blocks']['default'][0]['data'];\n arrow: WithBoundArgs<ModifierLike<AttachArrowSignature>, 'arrowElement' | 'data'>;\n }];\n };\n}\nfunction getElementTag(tagName1: undefined | string) {\n return tagName1 || 'div';\n}\n/**\n * Allows lazy evaluation of the portal target (do nothing until rendered)\n * This is useful because the algorithm for finding the portal target isn't cheap.\n */ const Content: TOC<{\n Element: HTMLDivElement;\n Args: {\n loop: ModifierLike<{\n Element: HTMLElement;\n }>;\n inline?: boolean;\n /**\n * By default the popover content is wrapped in a div.\n * You may change this by supplying the name of an element here.\n *\n * For example:\n * ```gjs\n * <Popover as |p|>\n * <p.Content @as=\"dialog\">\n * this is now focus trapped\n * </p.Content>\n * </Popover>\n * ```\n */ as?: string;\n };\n Blocks: {\n default: [];\n };\n}> = template(`\n {{#let (element (getElementTag @as)) as |El|}}\n {{#if @inline}}\n {{! @glint-ignore\n https://github.com/tildeio/ember-element-helper/issues/91\n https://github.com/typed-ember/glint/issues/610\n }}\n <El {{@loop}} ...attributes>\n {{yield}}\n </El>\n {{else}}\n <Portal @to={{TARGETS.popover}}>\n {{! @glint-ignore\n https://github.com/tildeio/ember-element-helper/issues/91\n https://github.com/typed-ember/glint/issues/610\n }}\n <El {{@loop}} ...attributes>\n {{yield}}\n </El>\n </Portal>\n {{/if}}\n {{/let}}\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\ninterface AttachArrowSignature {\n Element: HTMLElement;\n Args: {\n Named: {\n arrowElement: ReturnType<typeof ArrowElement>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data?: any;\n };\n };\n}\nconst arrowSides = {\n top: 'bottom',\n right: 'left',\n bottom: 'top',\n left: 'right'\n};\ntype Direction = 'top' | 'bottom' | 'left' | 'right';\ntype Placement = `${Direction}${'' | '-start' | '-end'}`;\nconst attachArrow = eModifier<AttachArrowSignature>((element1, _1: [], named1)=>{\n if (element1 === named1.arrowElement.current) {\n if (!named1.data) return;\n if (!named1.data.middlewareData) return;\n let { arrow: arrow1 } = named1.data.middlewareData;\n let { placement: placement1 } = named1.data;\n if (!arrow1) return;\n if (!placement1) return;\n let { x: arrowX1, y: arrowY1 } = arrow1;\n let otherSide1 = (placement1 as Placement).split('-')[0] as Direction;\n let staticSide1 = arrowSides[otherSide1];\n Object.assign(named1.arrowElement.current.style, {\n left: arrowX1 != null ? `${arrowX1}px` : '',\n top: arrowY1 != null ? `${arrowY1}px` : '',\n right: '',\n bottom: '',\n [staticSide1]: '-4px'\n });\n return;\n }\n (async ()=>{\n await Promise.resolve();\n named1.arrowElement.set(element1);\n })();\n});\nconst ArrowElement: () => ReturnType<typeof cell> = ()=>cell<HTMLElement>();\nfunction maybeAddArrow(middleware1: Middleware[] | undefined, element1: Element | undefined) {\n let result1 = [\n ...(middleware1 || [])\n ];\n if (element1) {\n result1.push(arrow({\n element: element1\n }));\n }\n return result1;\n}\nfunction flipOptions(options1: HookSignature['Args']['Named']['flipOptions']) {\n return {\n elementContext: 'reference' as ElementContext,\n ...options1\n };\n}\nexport const Popover: TOC<Signature> = template(`\n {{#let (ArrowElement) as |arrowElement|}}\n <FloatingUI\n @placement={{@placement}}\n @strategy={{@strategy}}\n @middleware={{maybeAddArrow @middleware arrowElement.current}}\n @flipOptions={{flipOptions @flipOptions}}\n @shiftOptions={{@shiftOptions}}\n @offsetOptions={{@offsetOptions}}\n as |fui|\n >\n {{yield\n (hash\n hook=fui.hook\n setHook=fui.setHook\n Content=(component Content loop=fui.loop inline=@inline)\n data=fui.data\n arrow=(modifier attachArrow arrowElement=arrowElement data=fui.data)\n )\n }}\n </FloatingUI>\n {{/let}}\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nexport default Popover;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL252cC9EZXZlbG9wbWVudC9OdWxsVm94UG9wdWxpL2VtYmVyLXByaW1pdGl2ZXMvZW1iZXItcHJpbWl0aXZlcy9zcmMvY29tcG9uZW50cy9wb3BvdmVyLmd0cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBoYXNoIH0gZnJvbSAnQGVtYmVyL2hlbHBlcic7XG5cbmltcG9ydCB7IGFycm93IH0gZnJvbSAnQGZsb2F0aW5nLXVpL2RvbSc7XG5pbXBvcnQgeyBlbGVtZW50IH0gZnJvbSAnZW1iZXItZWxlbWVudC1oZWxwZXInO1xuaW1wb3J0IHsgbW9kaWZpZXIgYXMgZU1vZGlmaWVyIH0gZnJvbSAnZW1iZXItbW9kaWZpZXInO1xuaW1wb3J0IHsgY2VsbCB9IGZyb20gJ2VtYmVyLXJlc291cmNlcyc7XG5cbmltcG9ydCB7IEZsb2F0aW5nVUkgfSBmcm9tICcuLi9mbG9hdGluZy11aS50cyc7XG5pbXBvcnQgeyBQb3J0YWwgfSBmcm9tICcuL3BvcnRhbC5ndHMnO1xuaW1wb3J0IHsgVEFSR0VUUyB9IGZyb20gJy4vcG9ydGFsLXRhcmdldHMuZ3RzJztcblxuaW1wb3J0IHR5cGUgeyBTaWduYXR1cmUgYXMgRmxvYXRpbmdVaUNvbXBvbmVudFNpZ25hdHVyZSB9IGZyb20gJy4uL2Zsb2F0aW5nLXVpL2NvbXBvbmVudC50cyc7XG5pbXBvcnQgdHlwZSB7IFNpZ25hdHVyZSBhcyBIb29rU2lnbmF0dXJlIH0gZnJvbSAnLi4vZmxvYXRpbmctdWkvbW9kaWZpZXIudHMnO1xuaW1wb3J0IHR5cGUgeyBUT0MgfSBmcm9tICdAZW1iZXIvY29tcG9uZW50L3RlbXBsYXRlLW9ubHknO1xuaW1wb3J0IHR5cGUgeyBFbGVtZW50Q29udGV4dCwgTWlkZGxld2FyZSB9IGZyb20gJ0BmbG9hdGluZy11aS9kb20nO1xuaW1wb3J0IHR5cGUgeyBNb2RpZmllckxpa2UsIFdpdGhCb3VuZEFyZ3MgfSBmcm9tICdAZ2xpbnQvdGVtcGxhdGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNpZ25hdHVyZSB7XG4gIEFyZ3M6IHtcbiAgICAvKipcbiAgICAgKiBTZWUgdGhlIEZsb2F0aW5nIFVJJ3MgW2ZsaXAgZG9jc10oaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9mbGlwKSBmb3IgcG9zc2libGUgdmFsdWVzLlxuICAgICAqXG4gICAgICogVGhpcyBhcmd1bWVudCBpcyBmb3J3YXJkZWQgdG8gYGVtYmVyLXZlbGNyb2AncyBgPFZlbGNybz5gIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBmbGlwT3B0aW9ucz86IEhvb2tTaWduYXR1cmVbJ0FyZ3MnXVsnTmFtZWQnXVsnZmxpcE9wdGlvbnMnXTtcbiAgICAvKipcbiAgICAgKiBBcnJheSBvZiBvbmUgb3IgbW9yZSBvYmplY3RzIHRvIGFkZCB0byBGbG9hdGluZyBVSSdzIGxpc3Qgb2YgW21pZGRsZXdhcmVdKGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvbWlkZGxld2FyZSlcbiAgICAgKlxuICAgICAqIFRoaXMgYXJndW1lbnQgaXMgZm9yd2FyZGVkIHRvIGBlbWJlci12ZWxjcm9gJ3MgYDxWZWxjcm8-YCBjb21wb25lbnQuXG4gICAgICovXG4gICAgbWlkZGxld2FyZT86IEhvb2tTaWduYXR1cmVbJ0FyZ3MnXVsnTmFtZWQnXVsnbWlkZGxld2FyZSddO1xuICAgIC8qKlxuICAgICAqIFNlZSB0aGUgRmxvYXRpbmcgVUkncyBbb2Zmc2V0IGRvY3NdKGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvb2Zmc2V0KSBmb3IgcG9zc2libGUgdmFsdWVzLlxuICAgICAqXG4gICAgICogVGhpcyBhcmd1bWVudCBpcyBmb3J3YXJkZWQgdG8gYGVtYmVyLXZlbGNyb2AncyBgPFZlbGNybz5gIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBvZmZzZXRPcHRpb25zPzogSG9va1NpZ25hdHVyZVsnQXJncyddWydOYW1lZCddWydvZmZzZXRPcHRpb25zJ107XG4gICAgLyoqXG4gICAgICogT25lIG9mIHRoZSBwb3NzaWJsZSBbYHBsYWNlbWVudHNgXShodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2NvbXB1dGVwb3NpdGlvbiNwbGFjZW1lbnQpLiBUaGUgZGVmYXVsdCBpcyAnYm90dG9tJy5cbiAgICAgKlxuICAgICAqIFBvc3NpYmxlIHZhbHVlcyBhcmVcbiAgICAgKiAtIHRvcFxuICAgICAqIC0gYm90dG9tXG4gICAgICogLSByaWdodFxuICAgICAqIC0gbGVmdFxuICAgICAqXG4gICAgICogQW5kIG1heSBvcHRpb25hbGx5IGhhdmUgYC1zdGFydGAgb3IgYC1lbmRgIGFkZGVkIHRvIGFkanVzdCBwb3NpdGlvbiBhbG9uZyB0aGUgc2lkZS5cbiAgICAgKlxuICAgICAqIFRoaXMgYXJndW1lbnQgaXMgZm9yd2FyZGVkIHRvIGBlbWJlci12ZWxjcm9gJ3MgYDxWZWxjcm8-YCBjb21wb25lbnQuXG4gICAgICovXG4gICAgcGxhY2VtZW50PzogYCR7J3RvcCcgfCAnYm90dG9tJyB8ICdsZWZ0JyB8ICdyaWdodCd9JHsnJyB8ICctc3RhcnQnIHwgJy1lbmQnfWA7XG4gICAgLyoqXG4gICAgICogU2VlIHRoZSBGbG9hdGluZyBVSSdzIFtzaGlmdCBkb2NzXShodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3NoaWZ0KSBmb3IgcG9zc2libGUgdmFsdWVzLlxuICAgICAqXG4gICAgICogVGhpcyBhcmd1bWVudCBpcyBmb3J3YXJkZWQgdG8gYGVtYmVyLXZlbGNyb2AncyBgPFZlbGNybz5gIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBzaGlmdE9wdGlvbnM_OiBIb29rU2lnbmF0dXJlWydBcmdzJ11bJ05hbWVkJ11bJ3NoaWZ0T3B0aW9ucyddO1xuICAgIC8qKlxuICAgICAqIENTUyBwb3NpdGlvbiBwcm9wZXJ0eSwgZWl0aGVyIGBmaXhlZGAgb3IgYGFic29sdXRlYC5cbiAgICAgKlxuICAgICAqIFByb3MgYW5kIGNvbnMgb2YgZWFjaCBzdHJhdGVneSBhcmUgZXhwbGFpbmVkIG9uIFtGbG9hdGluZyBVSSdzIERvY3NdKGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvY29tcHV0ZVBvc2l0aW9uI3N0cmF0ZWd5KVxuICAgICAqXG4gICAgICogVGhpcyBhcmd1bWVudCBpcyBmb3J3YXJkZWQgdG8gYGVtYmVyLXZlbGNyb2AncyBgPFZlbGNybz5gIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBzdHJhdGVneT86IEhvb2tTaWduYXR1cmVbJ0FyZ3MnXVsnTmFtZWQnXVsnc3RyYXRlZ3knXTtcblxuICAgIC8qKlxuICAgICAqIEJ5IGRlZmF1bHQsIHRoZSBwb3BvdmVyIGlzIHBvcnRhbGVkLlxuICAgICAqIElmIHlvdSBkb24ndCBjb250cm9sIHlvdXIgQ1NTLCBhbmQgdGhlIHBvc2l0aW9uaW5nIG9mIHRoZSBwb3BvdmVyIGNvbnRlbnRcbiAgICAgKiBpcyBtaXNiZWhhdmluZywgeW91IG1heSBwYXNzIFwiQGlubGluZT17e3RydWV9fVwiIHRvIG9wdCBvdXQgb2YgcG9ydGFsbGluZy5cbiAgICAgKlxuICAgICAqIElubGluZSBtYXkgYWxzbyBiZSB1c2VmdWwgaW4gbmVzdGVkIG1lbnVzLCB3aGVyZSB5b3Uga25vdyBleGFjdGx5IGhvdyB0aGUgbmVzdGluZyBvY2N1cnNcbiAgICAgKi9cbiAgICBpbmxpbmU_OiBib29sZWFuO1xuICB9O1xuICBCbG9ja3M6IHtcbiAgICBkZWZhdWx0OiBbXG4gICAgICB7XG4gICAgICAgIGhvb2s6IEZsb2F0aW5nVWlDb21wb25lbnRTaWduYXR1cmVbJ0Jsb2NrcyddWydkZWZhdWx0J11bMF1bJ2hvb2snXTtcbiAgICAgICAgc2V0SG9vazogRmxvYXRpbmdVaUNvbXBvbmVudFNpZ25hdHVyZVsnQmxvY2tzJ11bJ2RlZmF1bHQnXVswXVsnc2V0SG9vayddO1xuICAgICAgICBDb250ZW50OiBXaXRoQm91bmRBcmdzPHR5cGVvZiBDb250ZW50LCAnbG9vcCc-O1xuICAgICAgICBkYXRhOiBGbG9hdGluZ1VpQ29tcG9uZW50U2lnbmF0dXJlWydCbG9ja3MnXVsnZGVmYXVsdCddWzBdWydkYXRhJ107XG4gICAgICAgIGFycm93OiBXaXRoQm91bmRBcmdzPE1vZGlmaWVyTGlrZTxBdHRhY2hBcnJvd1NpZ25hdHVyZT4sICdhcnJvd0VsZW1lbnQnIHwgJ2RhdGEnPjtcbiAgICAgIH0sXG4gICAgXTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0RWxlbWVudFRhZyh0YWdOYW1lOiB1bmRlZmluZWQgfCBzdHJpbmcpIHtcbiAgcmV0dXJuIHRhZ05hbWUgfHwgJ2Rpdic7XG59XG5cbi8qKlxuICogQWxsb3dzIGxhenkgZXZhbHVhdGlvbiBvZiB0aGUgcG9ydGFsIHRhcmdldCAoZG8gbm90aGluZyB1bnRpbCByZW5kZXJlZClcbiAqIFRoaXMgaXMgdXNlZnVsIGJlY2F1c2UgdGhlIGFsZ29yaXRobSBmb3IgZmluZGluZyB0aGUgcG9ydGFsIHRhcmdldCBpc24ndCBjaGVhcC5cbiAqL1xuY29uc3QgQ29udGVudDogVE9DPHtcbiAgRWxlbWVudDogSFRNTERpdkVsZW1lbnQ7XG4gIEFyZ3M6IHtcbiAgICBsb29wOiBNb2RpZmllckxpa2U8eyBFbGVtZW50OiBIVE1MRWxlbWVudCB9PjtcbiAgICBpbmxpbmU_OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIEJ5IGRlZmF1bHQgdGhlIHBvcG92ZXIgY29udGVudCBpcyB3cmFwcGVkIGluIGEgZGl2LlxuICAgICAqIFlvdSBtYXkgY2hhbmdlIHRoaXMgYnkgc3VwcGx5aW5nIHRoZSBuYW1lIG9mIGFuIGVsZW1lbnQgaGVyZS5cbiAgICAgKlxuICAgICAqIEZvciBleGFtcGxlOlxuICAgICAqIGBgYGdqc1xuICAgICAqIDxQb3BvdmVyIGFzIHxwfD5cbiAgICAgKiAgPHAuQ29udGVudCBAYXM9XCJkaWFsb2dcIj5cbiAgICAgKiAgICB0aGlzIGlzIG5vdyBmb2N1cyB0cmFwcGVkXG4gICAgICogIDwvcC5Db250ZW50PlxuICAgICAqIDwvUG9wb3Zlcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBhcz86IHN0cmluZztcbiAgfTtcbiAgQmxvY2tzOiB7IGRlZmF1bHQ6IFtdIH07XG59PiA9IDx0ZW1wbGF0ZT5cbiAge3sjbGV0IChlbGVtZW50IChnZXRFbGVtZW50VGFnIEBhcykpIGFzIHxFbHx9fVxuICAgIHt7I2lmIEBpbmxpbmV9fVxuICAgICAge3shIEBnbGludC1pZ25vcmVcbiAgICAgICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS90aWxkZWlvL2VtYmVyLWVsZW1lbnQtaGVscGVyL2lzc3Vlcy85MVxuICAgICAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL3R5cGVkLWVtYmVyL2dsaW50L2lzc3Vlcy82MTBcbiAgICAgIH19XG4gICAgICA8RWwge3tAbG9vcH19IC4uLmF0dHJpYnV0ZXM-XG4gICAgICAgIHt7eWllbGR9fVxuICAgICAgPC9FbD5cbiAgICB7e2Vsc2V9fVxuICAgICAgPFBvcnRhbCBAdG89e3tUQVJHRVRTLnBvcG92ZXJ9fT5cbiAgICAgICAge3shIEBnbGludC1pZ25vcmVcbiAgICAgICAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL3RpbGRlaW8vZW1iZXItZWxlbWVudC1oZWxwZXIvaXNzdWVzLzkxXG4gICAgICAgICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS90eXBlZC1lbWJlci9nbGludC9pc3N1ZXMvNjEwXG4gICAgICAgIH19XG4gICAgICAgIDxFbCB7e0Bsb29wfX0gLi4uYXR0cmlidXRlcz5cbiAgICAgICAgICB7e3lpZWxkfX1cbiAgICAgICAgPC9FbD5cbiAgICAgIDwvUG9ydGFsPlxuICAgIHt7L2lmfX1cbiAge3svbGV0fX1cbjwvdGVtcGxhdGU-O1xuXG5pbnRlcmZhY2UgQXR0YWNoQXJyb3dTaWduYXR1cmUge1xuICBFbGVtZW50OiBIVE1MRWxlbWVudDtcbiAgQXJnczoge1xuICAgIE5hbWVkOiB7XG4gICAgICBhcnJvd0VsZW1lbnQ6IFJldHVyblR5cGU8dHlwZW9mIEFycm93RWxlbWVudD47XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgZGF0YT86IGFueTtcbiAgICB9O1xuICB9O1xufVxuXG5jb25zdCBhcnJvd1NpZGVzID0ge1xuICB0b3A6ICdib3R0b20nLFxuICByaWdodDogJ2xlZnQnLFxuICBib3R0b206ICd0b3AnLFxuICBsZWZ0OiAncmlnaHQnLFxufTtcblxudHlwZSBEaXJlY3Rpb24gPSAndG9wJyB8ICdib3R0b20nIHwgJ2xlZnQnIHwgJ3JpZ2h0JztcbnR5cGUgUGxhY2VtZW50ID0gYCR7RGlyZWN0aW9ufSR7JycgfCAnLXN0YXJ0JyB8ICctZW5kJ31gO1xuXG5jb25zdCBhdHRhY2hBcnJvdyA9IGVNb2RpZmllcjxBdHRhY2hBcnJvd1NpZ25hdHVyZT4oKGVsZW1lbnQsIF86IFtdLCBuYW1lZCkgPT4ge1xuICBpZiAoZWxlbWVudCA9PT0gbmFtZWQuYXJyb3dFbGVtZW50LmN1cnJlbnQpIHtcbiAgICBpZiAoIW5hbWVkLmRhdGEpIHJldHVybjtcbiAgICBpZiAoIW5hbWVkLmRhdGEubWlkZGxld2FyZURhdGEpIHJldHVybjtcblxuICAgIGxldCB7IGFycm93IH0gPSBuYW1lZC5kYXRhLm1pZGRsZXdhcmVEYXRhO1xuICAgIGxldCB7IHBsYWNlbWVudCB9ID0gbmFtZWQuZGF0YTtcblxuICAgIGlmICghYXJyb3cpIHJldHVybjtcbiAgICBpZiAoIXBsYWNlbWVudCkgcmV0dXJuO1xuXG4gICAgbGV0IHsgeDogYXJyb3dYLCB5OiBhcnJvd1kgfSA9IGFycm93O1xuICAgIGxldCBvdGhlclNpZGUgPSAocGxhY2VtZW50IGFzIFBsYWNlbWVudCkuc3BsaXQoJy0nKVswXSBhcyBEaXJlY3Rpb247XG4gICAgbGV0IHN0YXRpY1NpZGUgPSBhcnJvd1NpZGVzW290aGVyU2lkZV07XG5cbiAgICBPYmplY3QuYXNzaWduKG5hbWVkLmFycm93RWxlbWVudC5jdXJyZW50LnN0eWxlLCB7XG4gICAgICBsZWZ0OiBhcnJvd1ggIT0gbnVsbCA_IGAke2Fycm93WH1weGAgOiAnJyxcbiAgICAgIHRvcDogYXJyb3dZICE9IG51bGwgPyBgJHthcnJvd1l9cHhgIDogJycsXG4gICAgICByaWdodDogJycsXG4gICAgICBib3R0b206ICcnLFxuICAgICAgW3N0YXRpY1NpZGVdOiAnLTRweCcsXG4gICAgfSk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICAoYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IFByb21pc2UucmVzb2x2ZSgpO1xuICAgIG5hbWVkLmFycm93RWxlbWVudC5zZXQoZWxlbWVudCk7XG4gIH0pKCk7XG59KTtcblxuY29uc3QgQXJyb3dFbGVtZW50OiAoKSA9PiBSZXR1cm5UeXBlPHR5cGVvZiBjZWxsPEhUTUxFbGVtZW50Pj4gPSAoKSA9PiBjZWxsPEhUTUxFbGVtZW50PigpO1xuXG5mdW5jdGlvbiBtYXliZUFkZEFycm93KG1pZGRsZXdhcmU6IE1pZGRsZXdhcmVbXSB8IHVuZGVmaW5lZCwgZWxlbWVudDogRWxlbWVudCB8IHVuZGVmaW5lZCkge1xuICBsZXQgcmVzdWx0ID0gWy4uLihtaWRkbGV3YXJlIHx8IFtdKV07XG5cbiAgaWYgKGVsZW1lbnQpIHtcbiAgICByZXN1bHQucHVzaChhcnJvdyh7IGVsZW1lbnQgfSkpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gZmxpcE9wdGlvbnMob3B0aW9uczogSG9va1NpZ25hdHVyZVsnQXJncyddWydOYW1lZCddWydmbGlwT3B0aW9ucyddKSB7XG4gIHJldHVybiB7XG4gICAgZWxlbWVudENvbnRleHQ6ICdyZWZlcmVuY2UnIGFzIEVsZW1lbnRDb250ZXh0LFxuICAgIC4uLm9wdGlvbnMsXG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBQb3BvdmVyOiBUT0M8U2lnbmF0dXJlPiA9IDx0ZW1wbGF0ZT5cbiAge3sjbGV0IChBcnJvd0VsZW1lbnQpIGFzIHxhcnJvd0VsZW1lbnR8fX1cbiAgICA8RmxvYXRpbmdVSVxuICAgICAgQHBsYWNlbWVudD17e0BwbGFjZW1lbnR9fVxuICAgICAgQHN0cmF0ZWd5PXt7QHN0cmF0ZWd5fX1cbiAgICAgIEBtaWRkbGV3YXJlPXt7bWF5YmVBZGRBcnJvdyBAbWlkZGxld2FyZSBhcnJvd0VsZW1lbnQuY3VycmVudH19XG4gICAgICBAZmxpcE9wdGlvbnM9e3tmbGlwT3B0aW9ucyBAZmxpcE9wdGlvbnN9fVxuICAgICAgQHNoaWZ0T3B0aW9ucz17e0BzaGlmdE9wdGlvbnN9fVxuICAgICAgQG9mZnNldE9wdGlvbnM9e3tAb2Zmc2V0T3B0aW9uc319XG4gICAgICBhcyB8ZnVpfFxuICAgID5cbiAgICAgIHt7eWllbGRcbiAgICAgICAgKGhhc2hcbiAgICAgICAgICBob29rPWZ1aS5ob29rXG4gICAgICAgICAgc2V0SG9vaz1mdWkuc2V0SG9va1xuICAgICAgICAgIENvbnRlbnQ9KGNvbXBvbmVudCBDb250ZW50IGxvb3A9ZnVpLmxvb3AgaW5saW5lPUBpbmxpbmUpXG4gICAgICAgICAgZGF0YT1mdWkuZGF0YVxuICAgICAgICAgIGFycm93PShtb2RpZmllciBhdHRhY2hBcnJvdyBhcnJvd0VsZW1lbnQ9YXJyb3dFbGVtZW50IGRhdGE9ZnVpLmRhdGEpXG4gICAgICAgIClcbiAgICAgIH19XG4gICAgPC9GbG9hdGluZ1VJPlxuICB7ey9sZXR9fVxuPC90ZW1wbGF0ZT47XG5cbmV4cG9ydCBkZWZhdWx0IFBvcG92ZXI7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFNBQVMsSUFBSSxRQUFRLGdCQUFnQjtBQUVyQyxTQUFTLEtBQUssUUFBUSxtQkFBbUI7QUFDekMsU0FBUyxPQUFPLFFBQVEsdUJBQXVCO0FBQy9DLFNBQVMsWUFBWSxTQUFTLFFBQVEsaUJBQWlCO0FBQ3ZELFNBQVMsSUFBSSxRQUFRLGtCQUFrQjtBQUV2QyxTQUFTLFVBQVUsUUFBUSxvQkFBb0I7QUFDL0MsU0FBUyxNQUFNLFFBQVEsZUFBZTtBQUN0QyxTQUFTLE9BQU8sUUFBUSx1QkFBdUI7QUFFL0MsY0FBYyxhQUFhLDRCQUE0QixRQUFRLDhCQUE4QjtB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"],"names":["getElementTag","tagName1","Content","precompileTemplate","strictMode","scope","element","Portal","TARGETS","templateOnly","arrowSides","top","right","bottom","left","attachArrow","eModifier","element1","_1","named1","arrowElement","current","data","middlewareData","arrow","arrow1","placement","placement1","x","arrowX1","y","arrowY1","otherSide1","split","staticSide1","Object","assign","style","Promise","resolve","set","ArrowElement","cell","maybeAddArrow","middleware1","result1","push","flipOptions","options1","elementContext","Popover","setComponentTemplate","FloatingUI","hash"],"mappings":"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"}
1
+ {"version":3,"file":"popover.js","sources":["../../src/components/popover.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport { hash } from '@ember/helper';\nimport { arrow } from '@floating-ui/dom';\nimport { element } from 'ember-element-helper';\nimport { modifier as eModifier } from 'ember-modifier';\nimport { cell } from 'ember-resources';\nimport { FloatingUI } from '../floating-ui.ts';\nimport { Portal } from './portal.gts';\nimport { TARGETS } from './portal-targets.gts';\nimport type { Signature as FloatingUiComponentSignature } from '../floating-ui/component.ts';\nimport type { Signature as HookSignature } from '../floating-ui/modifier.ts';\nimport type { TOC } from '@ember/component/template-only';\nimport type { ElementContext, Middleware } from '@floating-ui/dom';\nimport type { ModifierLike, WithBoundArgs } from '@glint/template';\nexport interface Signature {\n Args: {\n /**\n * See the Floating UI's [flip docs](https://floating-ui.com/docs/flip) for possible values.\n *\n * This argument is forwarded to `ember-velcro`'s `<Velcro>` component.\n */ flipOptions?: HookSignature['Args']['Named']['flipOptions'];\n /**\n * Array of one or more objects to add to Floating UI's list of [middleware](https://floating-ui.com/docs/middleware)\n *\n * This argument is forwarded to `ember-velcro`'s `<Velcro>` component.\n */ middleware?: HookSignature['Args']['Named']['middleware'];\n /**\n * See the Floating UI's [offset docs](https://floating-ui.com/docs/offset) for possible values.\n *\n * This argument is forwarded to `ember-velcro`'s `<Velcro>` component.\n */ offsetOptions?: HookSignature['Args']['Named']['offsetOptions'];\n /**\n * One of the possible [`placements`](https://floating-ui.com/docs/computeposition#placement). The default is 'bottom'.\n *\n * Possible values are\n * - top\n * - bottom\n * - right\n * - left\n *\n * And may optionally have `-start` or `-end` added to adjust position along the side.\n *\n * This argument is forwarded to `ember-velcro`'s `<Velcro>` component.\n */ placement?: `${'top' | 'bottom' | 'left' | 'right'}${'' | '-start' | '-end'}`;\n /**\n * See the Floating UI's [shift docs](https://floating-ui.com/docs/shift) for possible values.\n *\n * This argument is forwarded to `ember-velcro`'s `<Velcro>` component.\n */ shiftOptions?: HookSignature['Args']['Named']['shiftOptions'];\n /**\n * CSS position property, either `fixed` or `absolute`.\n *\n * Pros and cons of each strategy are explained on [Floating UI's Docs](https://floating-ui.com/docs/computePosition#strategy)\n *\n * This argument is forwarded to `ember-velcro`'s `<Velcro>` component.\n */ strategy?: HookSignature['Args']['Named']['strategy'];\n /**\n * By default, the popover is portaled.\n * If you don't control your CSS, and the positioning of the popover content\n * is misbehaving, you may pass \"@inline={{true}}\" to opt out of portalling.\n *\n * Inline may also be useful in nested menus, where you know exactly how the nesting occurs\n */ inline?: boolean;\n };\n Blocks: {\n default: [{\n hook: FloatingUiComponentSignature['Blocks']['default'][0]['hook'];\n setHook: FloatingUiComponentSignature['Blocks']['default'][0]['setHook'];\n Content: WithBoundArgs<typeof Content, 'loop'>;\n data: FloatingUiComponentSignature['Blocks']['default'][0]['data'];\n arrow: WithBoundArgs<ModifierLike<AttachArrowSignature>, 'arrowElement' | 'data'>;\n }];\n };\n}\nfunction getElementTag(tagName1: undefined | string) {\n return tagName1 || 'div';\n}\n/**\n * Allows lazy evaluation of the portal target (do nothing until rendered)\n * This is useful because the algorithm for finding the portal target isn't cheap.\n */ const Content: TOC<{\n Element: HTMLDivElement;\n Args: {\n loop: ModifierLike<{\n Element: HTMLElement;\n }>;\n inline?: boolean;\n /**\n * By default the popover content is wrapped in a div.\n * You may change this by supplying the name of an element here.\n *\n * For example:\n * ```gjs\n * <Popover as |p|>\n * <p.Content @as=\"dialog\">\n * this is now focus trapped\n * </p.Content>\n * </Popover>\n * ```\n */ as?: string;\n };\n Blocks: {\n default: [];\n };\n}> = template(`\n {{#let (element (getElementTag @as)) as |El|}}\n {{#if @inline}}\n {{! @glint-ignore\n https://github.com/tildeio/ember-element-helper/issues/91\n https://github.com/typed-ember/glint/issues/610\n }}\n <El {{@loop}} ...attributes>\n {{yield}}\n </El>\n {{else}}\n <Portal @to={{TARGETS.popover}}>\n {{! @glint-ignore\n https://github.com/tildeio/ember-element-helper/issues/91\n https://github.com/typed-ember/glint/issues/610\n }}\n <El {{@loop}} ...attributes>\n {{yield}}\n </El>\n </Portal>\n {{/if}}\n {{/let}}\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\ninterface AttachArrowSignature {\n Element: HTMLElement;\n Args: {\n Named: {\n arrowElement: ReturnType<typeof ArrowElement>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data?: any;\n };\n };\n}\nconst arrowSides = {\n top: 'bottom',\n right: 'left',\n bottom: 'top',\n left: 'right'\n};\ntype Direction = 'top' | 'bottom' | 'left' | 'right';\ntype Placement = `${Direction}${'' | '-start' | '-end'}`;\nconst attachArrow = eModifier<AttachArrowSignature>((element1, _1: [], named1)=>{\n if (element1 === named1.arrowElement.current) {\n if (!named1.data) return;\n if (!named1.data.middlewareData) return;\n let { arrow: arrow1 } = named1.data.middlewareData;\n let { placement: placement1 } = named1.data;\n if (!arrow1) return;\n if (!placement1) return;\n let { x: arrowX1, y: arrowY1 } = arrow1;\n let otherSide1 = (placement1 as Placement).split('-')[0] as Direction;\n let staticSide1 = arrowSides[otherSide1];\n Object.assign(named1.arrowElement.current.style, {\n left: arrowX1 != null ? `${arrowX1}px` : '',\n top: arrowY1 != null ? `${arrowY1}px` : '',\n right: '',\n bottom: '',\n [staticSide1]: '-4px'\n });\n return;\n }\n (async ()=>{\n await Promise.resolve();\n named1.arrowElement.set(element1);\n })();\n});\nconst ArrowElement: () => ReturnType<typeof cell> = ()=>cell<HTMLElement>();\nfunction maybeAddArrow(middleware1: Middleware[] | undefined, element1: Element | undefined) {\n let result1 = [\n ...(middleware1 || [])\n ];\n if (element1) {\n result1.push(arrow({\n element: element1\n }));\n }\n return result1;\n}\nfunction flipOptions(options1: HookSignature['Args']['Named']['flipOptions']) {\n return {\n elementContext: 'reference' as ElementContext,\n ...options1\n };\n}\nexport const Popover: TOC<Signature> = template(`\n {{#let (ArrowElement) as |arrowElement|}}\n <FloatingUI\n @placement={{@placement}}\n @strategy={{@strategy}}\n @middleware={{maybeAddArrow @middleware arrowElement.current}}\n @flipOptions={{flipOptions @flipOptions}}\n @shiftOptions={{@shiftOptions}}\n @offsetOptions={{@offsetOptions}}\n as |fui|\n >\n {{yield\n (hash\n hook=fui.hook\n setHook=fui.setHook\n Content=(component Content loop=fui.loop inline=@inline)\n data=fui.data\n arrow=(modifier attachArrow arrowElement=arrowElement data=fui.data)\n )\n }}\n </FloatingUI>\n {{/let}}\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nexport default Popover;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2VtYmVyLXByaW1pdGl2ZXMvZW1iZXItcHJpbWl0aXZlcy9lbWJlci1wcmltaXRpdmVzL3NyYy9jb21wb25lbnRzL3BvcG92ZXIuZ3RzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGhhc2ggfSBmcm9tICdAZW1iZXIvaGVscGVyJztcblxuaW1wb3J0IHsgYXJyb3cgfSBmcm9tICdAZmxvYXRpbmctdWkvZG9tJztcbmltcG9ydCB7IGVsZW1lbnQgfSBmcm9tICdlbWJlci1lbGVtZW50LWhlbHBlcic7XG5pbXBvcnQgeyBtb2RpZmllciBhcyBlTW9kaWZpZXIgfSBmcm9tICdlbWJlci1tb2RpZmllcic7XG5pbXBvcnQgeyBjZWxsIH0gZnJvbSAnZW1iZXItcmVzb3VyY2VzJztcblxuaW1wb3J0IHsgRmxvYXRpbmdVSSB9IGZyb20gJy4uL2Zsb2F0aW5nLXVpLnRzJztcbmltcG9ydCB7IFBvcnRhbCB9IGZyb20gJy4vcG9ydGFsLmd0cyc7XG5pbXBvcnQgeyBUQVJHRVRTIH0gZnJvbSAnLi9wb3J0YWwtdGFyZ2V0cy5ndHMnO1xuXG5pbXBvcnQgdHlwZSB7IFNpZ25hdHVyZSBhcyBGbG9hdGluZ1VpQ29tcG9uZW50U2lnbmF0dXJlIH0gZnJvbSAnLi4vZmxvYXRpbmctdWkvY29tcG9uZW50LnRzJztcbmltcG9ydCB0eXBlIHsgU2lnbmF0dXJlIGFzIEhvb2tTaWduYXR1cmUgfSBmcm9tICcuLi9mbG9hdGluZy11aS9tb2RpZmllci50cyc7XG5pbXBvcnQgdHlwZSB7IFRPQyB9IGZyb20gJ0BlbWJlci9jb21wb25lbnQvdGVtcGxhdGUtb25seSc7XG5pbXBvcnQgdHlwZSB7IEVsZW1lbnRDb250ZXh0LCBNaWRkbGV3YXJlIH0gZnJvbSAnQGZsb2F0aW5nLXVpL2RvbSc7XG5pbXBvcnQgdHlwZSB7IE1vZGlmaWVyTGlrZSwgV2l0aEJvdW5kQXJncyB9IGZyb20gJ0BnbGludC90ZW1wbGF0ZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lnbmF0dXJlIHtcbiAgQXJnczoge1xuICAgIC8qKlxuICAgICAqIFNlZSB0aGUgRmxvYXRpbmcgVUkncyBbZmxpcCBkb2NzXShodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2ZsaXApIGZvciBwb3NzaWJsZSB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBUaGlzIGFyZ3VtZW50IGlzIGZvcndhcmRlZCB0byBgZW1iZXItdmVsY3JvYCdzIGA8VmVsY3JvPmAgY29tcG9uZW50LlxuICAgICAqL1xuICAgIGZsaXBPcHRpb25zPzogSG9va1NpZ25hdHVyZVsnQXJncyddWydOYW1lZCddWydmbGlwT3B0aW9ucyddO1xuICAgIC8qKlxuICAgICAqIEFycmF5IG9mIG9uZSBvciBtb3JlIG9iamVjdHMgdG8gYWRkIHRvIEZsb2F0aW5nIFVJJ3MgbGlzdCBvZiBbbWlkZGxld2FyZV0oaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9taWRkbGV3YXJlKVxuICAgICAqXG4gICAgICogVGhpcyBhcmd1bWVudCBpcyBmb3J3YXJkZWQgdG8gYGVtYmVyLXZlbGNyb2AncyBgPFZlbGNybz5gIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBtaWRkbGV3YXJlPzogSG9va1NpZ25hdHVyZVsnQXJncyddWydOYW1lZCddWydtaWRkbGV3YXJlJ107XG4gICAgLyoqXG4gICAgICogU2VlIHRoZSBGbG9hdGluZyBVSSdzIFtvZmZzZXQgZG9jc10oaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9vZmZzZXQpIGZvciBwb3NzaWJsZSB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBUaGlzIGFyZ3VtZW50IGlzIGZvcndhcmRlZCB0byBgZW1iZXItdmVsY3JvYCdzIGA8VmVsY3JvPmAgY29tcG9uZW50LlxuICAgICAqL1xuICAgIG9mZnNldE9wdGlvbnM_OiBIb29rU2lnbmF0dXJlWydBcmdzJ11bJ05hbWVkJ11bJ29mZnNldE9wdGlvbnMnXTtcbiAgICAvKipcbiAgICAgKiBPbmUgb2YgdGhlIHBvc3NpYmxlIFtgcGxhY2VtZW50c2BdKGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvY29tcHV0ZXBvc2l0aW9uI3BsYWNlbWVudCkuIFRoZSBkZWZhdWx0IGlzICdib3R0b20nLlxuICAgICAqXG4gICAgICogUG9zc2libGUgdmFsdWVzIGFyZVxuICAgICAqIC0gdG9wXG4gICAgICogLSBib3R0b21cbiAgICAgKiAtIHJpZ2h0XG4gICAgICogLSBsZWZ0XG4gICAgICpcbiAgICAgKiBBbmQgbWF5IG9wdGlvbmFsbHkgaGF2ZSBgLXN0YXJ0YCBvciBgLWVuZGAgYWRkZWQgdG8gYWRqdXN0IHBvc2l0aW9uIGFsb25nIHRoZSBzaWRlLlxuICAgICAqXG4gICAgICogVGhpcyBhcmd1bWVudCBpcyBmb3J3YXJkZWQgdG8gYGVtYmVyLXZlbGNyb2AncyBgPFZlbGNybz5gIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBwbGFjZW1lbnQ_OiBgJHsndG9wJyB8ICdib3R0b20nIHwgJ2xlZnQnIHwgJ3JpZ2h0J30keycnIHwgJy1zdGFydCcgfCAnLWVuZCd9YDtcbiAgICAvKipcbiAgICAgKiBTZWUgdGhlIEZsb2F0aW5nIFVJJ3MgW3NoaWZ0IGRvY3NdKGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvc2hpZnQpIGZvciBwb3NzaWJsZSB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBUaGlzIGFyZ3VtZW50IGlzIGZvcndhcmRlZCB0byBgZW1iZXItdmVsY3JvYCdzIGA8VmVsY3JvPmAgY29tcG9uZW50LlxuICAgICAqL1xuICAgIHNoaWZ0T3B0aW9ucz86IEhvb2tTaWduYXR1cmVbJ0FyZ3MnXVsnTmFtZWQnXVsnc2hpZnRPcHRpb25zJ107XG4gICAgLyoqXG4gICAgICogQ1NTIHBvc2l0aW9uIHByb3BlcnR5LCBlaXRoZXIgYGZpeGVkYCBvciBgYWJzb2x1dGVgLlxuICAgICAqXG4gICAgICogUHJvcyBhbmQgY29ucyBvZiBlYWNoIHN0cmF0ZWd5IGFyZSBleHBsYWluZWQgb24gW0Zsb2F0aW5nIFVJJ3MgRG9jc10oaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9jb21wdXRlUG9zaXRpb24jc3RyYXRlZ3kpXG4gICAgICpcbiAgICAgKiBUaGlzIGFyZ3VtZW50IGlzIGZvcndhcmRlZCB0byBgZW1iZXItdmVsY3JvYCdzIGA8VmVsY3JvPmAgY29tcG9uZW50LlxuICAgICAqL1xuICAgIHN0cmF0ZWd5PzogSG9va1NpZ25hdHVyZVsnQXJncyddWydOYW1lZCddWydzdHJhdGVneSddO1xuXG4gICAgLyoqXG4gICAgICogQnkgZGVmYXVsdCwgdGhlIHBvcG92ZXIgaXMgcG9ydGFsZWQuXG4gICAgICogSWYgeW91IGRvbid0IGNvbnRyb2wgeW91ciBDU1MsIGFuZCB0aGUgcG9zaXRpb25pbmcgb2YgdGhlIHBvcG92ZXIgY29udGVudFxuICAgICAqIGlzIG1pc2JlaGF2aW5nLCB5b3UgbWF5IHBhc3MgXCJAaW5saW5lPXt7dHJ1ZX19XCIgdG8gb3B0IG91dCBvZiBwb3J0YWxsaW5nLlxuICAgICAqXG4gICAgICogSW5saW5lIG1heSBhbHNvIGJlIHVzZWZ1bCBpbiBuZXN0ZWQgbWVudXMsIHdoZXJlIHlvdSBrbm93IGV4YWN0bHkgaG93IHRoZSBuZXN0aW5nIG9jY3Vyc1xuICAgICAqL1xuICAgIGlubGluZT86IGJvb2xlYW47XG4gIH07XG4gIEJsb2Nrczoge1xuICAgIGRlZmF1bHQ6IFtcbiAgICAgIHtcbiAgICAgICAgaG9vazogRmxvYXRpbmdVaUNvbXBvbmVudFNpZ25hdHVyZVsnQmxvY2tzJ11bJ2RlZmF1bHQnXVswXVsnaG9vayddO1xuICAgICAgICBzZXRIb29rOiBGbG9hdGluZ1VpQ29tcG9uZW50U2lnbmF0dXJlWydCbG9ja3MnXVsnZGVmYXVsdCddWzBdWydzZXRIb29rJ107XG4gICAgICAgIENvbnRlbnQ6IFdpdGhCb3VuZEFyZ3M8dHlwZW9mIENvbnRlbnQsICdsb29wJz47XG4gICAgICAgIGRhdGE6IEZsb2F0aW5nVWlDb21wb25lbnRTaWduYXR1cmVbJ0Jsb2NrcyddWydkZWZhdWx0J11bMF1bJ2RhdGEnXTtcbiAgICAgICAgYXJyb3c6IFdpdGhCb3VuZEFyZ3M8TW9kaWZpZXJMaWtlPEF0dGFjaEFycm93U2lnbmF0dXJlPiwgJ2Fycm93RWxlbWVudCcgfCAnZGF0YSc-O1xuICAgICAgfSxcbiAgICBdO1xuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRFbGVtZW50VGFnKHRhZ05hbWU6IHVuZGVmaW5lZCB8IHN0cmluZykge1xuICByZXR1cm4gdGFnTmFtZSB8fCAnZGl2Jztcbn1cblxuLyoqXG4gKiBBbGxvd3MgbGF6eSBldmFsdWF0aW9uIG9mIHRoZSBwb3J0YWwgdGFyZ2V0IChkbyBub3RoaW5nIHVudGlsIHJlbmRlcmVkKVxuICogVGhpcyBpcyB1c2VmdWwgYmVjYXVzZSB0aGUgYWxnb3JpdGhtIGZvciBmaW5kaW5nIHRoZSBwb3J0YWwgdGFyZ2V0IGlzbid0IGNoZWFwLlxuICovXG5jb25zdCBDb250ZW50OiBUT0M8e1xuICBFbGVtZW50OiBIVE1MRGl2RWxlbWVudDtcbiAgQXJnczoge1xuICAgIGxvb3A6IE1vZGlmaWVyTGlrZTx7IEVsZW1lbnQ6IEhUTUxFbGVtZW50IH0-O1xuICAgIGlubGluZT86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogQnkgZGVmYXVsdCB0aGUgcG9wb3ZlciBjb250ZW50IGlzIHdyYXBwZWQgaW4gYSBkaXYuXG4gICAgICogWW91IG1heSBjaGFuZ2UgdGhpcyBieSBzdXBwbHlpbmcgdGhlIG5hbWUgb2YgYW4gZWxlbWVudCBoZXJlLlxuICAgICAqXG4gICAgICogRm9yIGV4YW1wbGU6XG4gICAgICogYGBgZ2pzXG4gICAgICogPFBvcG92ZXIgYXMgfHB8PlxuICAgICAqICA8cC5Db250ZW50IEBhcz1cImRpYWxvZ1wiPlxuICAgICAqICAgIHRoaXMgaXMgbm93IGZvY3VzIHRyYXBwZWRcbiAgICAgKiAgPC9wLkNvbnRlbnQ-XG4gICAgICogPC9Qb3BvdmVyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIGFzPzogc3RyaW5nO1xuICB9O1xuICBCbG9ja3M6IHsgZGVmYXVsdDogW10gfTtcbn0-ID0gPHRlbXBsYXRlPlxuICB7eyNsZXQgKGVsZW1lbnQgKGdldEVsZW1lbnRUYWcgQGFzKSkgYXMgfEVsfH19XG4gICAge3sjaWYgQGlubGluZX19XG4gICAgICB7eyEgQGdsaW50LWlnbm9yZVxuICAgICAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL3RpbGRlaW8vZW1iZXItZWxlbWVudC1oZWxwZXIvaXNzdWVzLzkxXG4gICAgICAgICAgICBodHRwczovL2dpdGh1Yi5jb20vdHlwZWQtZW1iZXIvZ2xpbnQvaXNzdWVzLzYxMFxuICAgICAgfX1cbiAgICAgIDxFbCB7e0Bsb29wfX0gLi4uYXR0cmlidXRlcz5cbiAgICAgICAge3t5aWVsZH19XG4gICAgICA8L0VsPlxuICAgIHt7ZWxzZX19XG4gICAgICA8UG9ydGFsIEB0bz17e1RBUkdFVFMucG9wb3Zlcn19PlxuICAgICAgICB7eyEgQGdsaW50LWlnbm9yZVxuICAgICAgICAgICAgICBodHRwczovL2dpdGh1Yi5jb20vdGlsZGVpby9lbWJlci1lbGVtZW50LWhlbHBlci9pc3N1ZXMvOTFcbiAgICAgICAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL3R5cGVkLWVtYmVyL2dsaW50L2lzc3Vlcy82MTBcbiAgICAgICAgfX1cbiAgICAgICAgPEVsIHt7QGxvb3B9fSAuLi5hdHRyaWJ1dGVzPlxuICAgICAgICAgIHt7eWllbGR9fVxuICAgICAgICA8L0VsPlxuICAgICAgPC9Qb3J0YWw-XG4gICAge3svaWZ9fVxuICB7ey9sZXR9fVxuPC90ZW1wbGF0ZT47XG5cbmludGVyZmFjZSBBdHRhY2hBcnJvd1NpZ25hdHVyZSB7XG4gIEVsZW1lbnQ6IEhUTUxFbGVtZW50O1xuICBBcmdzOiB7XG4gICAgTmFtZWQ6IHtcbiAgICAgIGFycm93RWxlbWVudDogUmV0dXJuVHlwZTx0eXBlb2YgQXJyb3dFbGVtZW50PjtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICBkYXRhPzogYW55O1xuICAgIH07XG4gIH07XG59XG5cbmNvbnN0IGFycm93U2lkZXMgPSB7XG4gIHRvcDogJ2JvdHRvbScsXG4gIHJpZ2h0OiAnbGVmdCcsXG4gIGJvdHRvbTogJ3RvcCcsXG4gIGxlZnQ6ICdyaWdodCcsXG59O1xuXG50eXBlIERpcmVjdGlvbiA9ICd0b3AnIHwgJ2JvdHRvbScgfCAnbGVmdCcgfCAncmlnaHQnO1xudHlwZSBQbGFjZW1lbnQgPSBgJHtEaXJlY3Rpb259JHsnJyB8ICctc3RhcnQnIHwgJy1lbmQnfWA7XG5cbmNvbnN0IGF0dGFjaEFycm93ID0gZU1vZGlmaWVyPEF0dGFjaEFycm93U2lnbmF0dXJlPigoZWxlbWVudCwgXzogW10sIG5hbWVkKSA9PiB7XG4gIGlmIChlbGVtZW50ID09PSBuYW1lZC5hcnJvd0VsZW1lbnQuY3VycmVudCkge1xuICAgIGlmICghbmFtZWQuZGF0YSkgcmV0dXJuO1xuICAgIGlmICghbmFtZWQuZGF0YS5taWRkbGV3YXJlRGF0YSkgcmV0dXJuO1xuXG4gICAgbGV0IHsgYXJyb3cgfSA9IG5hbWVkLmRhdGEubWlkZGxld2FyZURhdGE7XG4gICAgbGV0IHsgcGxhY2VtZW50IH0gPSBuYW1lZC5kYXRhO1xuXG4gICAgaWYgKCFhcnJvdykgcmV0dXJuO1xuICAgIGlmICghcGxhY2VtZW50KSByZXR1cm47XG5cbiAgICBsZXQgeyB4OiBhcnJvd1gsIHk6IGFycm93WSB9ID0gYXJyb3c7XG4gICAgbGV0IG90aGVyU2lkZSA9IChwbGFjZW1lbnQgYXMgUGxhY2VtZW50KS5zcGxpdCgnLScpWzBdIGFzIERpcmVjdGlvbjtcbiAgICBsZXQgc3RhdGljU2lkZSA9IGFycm93U2lkZXNbb3RoZXJTaWRlXTtcblxuICAgIE9iamVjdC5hc3NpZ24obmFtZWQuYXJyb3dFbGVtZW50LmN1cnJlbnQuc3R5bGUsIHtcbiAgICAgIGxlZnQ6IGFycm93WCAhPSBudWxsID8gYCR7YXJyb3dYfXB4YCA6ICcnLFxuICAgICAgdG9wOiBhcnJvd1kgIT0gbnVsbCA_IGAke2Fycm93WX1weGAgOiAnJyxcbiAgICAgIHJpZ2h0OiAnJyxcbiAgICAgIGJvdHRvbTogJycsXG4gICAgICBbc3RhdGljU2lkZV06ICctNHB4JyxcbiAgICB9KTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIChhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgbmFtZWQuYXJyb3dFbGVtZW50LnNldChlbGVtZW50KTtcbiAgfSkoKTtcbn0pO1xuXG5jb25zdCBBcnJvd0VsZW1lbnQ6ICgpID0-IFJldHVyblR5cGU8dHlwZW9mIGNlbGw8SFRNTEVsZW1lbnQ-PiA9ICgpID0-IGNlbGw8SFRNTEVsZW1lbnQ-KCk7XG5cbmZ1bmN0aW9uIG1heWJlQWRkQXJyb3cobWlkZGxld2FyZTogTWlkZGxld2FyZVtdIHwgdW5kZWZpbmVkLCBlbGVtZW50OiBFbGVtZW50IHwgdW5kZWZpbmVkKSB7XG4gIGxldCByZXN1bHQgPSBbLi4uKG1pZGRsZXdhcmUgfHwgW10pXTtcblxuICBpZiAoZWxlbWVudCkge1xuICAgIHJlc3VsdC5wdXNoKGFycm93KHsgZWxlbWVudCB9KSk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBmbGlwT3B0aW9ucyhvcHRpb25zOiBIb29rU2lnbmF0dXJlWydBcmdzJ11bJ05hbWVkJ11bJ2ZsaXBPcHRpb25zJ10pIHtcbiAgcmV0dXJuIHtcbiAgICBlbGVtZW50Q29udGV4dDogJ3JlZmVyZW5jZScgYXMgRWxlbWVudENvbnRleHQsXG4gICAgLi4ub3B0aW9ucyxcbiAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IFBvcG92ZXI6IFRPQzxTaWduYXR1cmU-ID0gPHRlbXBsYXRlPlxuICB7eyNsZXQgKEFycm93RWxlbWVudCkgYXMgfGFycm93RWxlbWVudHx9fVxuICAgIDxGbG9hdGluZ1VJXG4gICAgICBAcGxhY2VtZW50PXt7QHBsYWNlbWVudH19XG4gICAgICBAc3RyYXRlZ3k9e3tAc3RyYXRlZ3l9fVxuICAgICAgQG1pZGRsZXdhcmU9e3ttYXliZUFkZEFycm93IEBtaWRkbGV3YXJlIGFycm93RWxlbWVudC5jdXJyZW50fX1cbiAgICAgIEBmbGlwT3B0aW9ucz17e2ZsaXBPcHRpb25zIEBmbGlwT3B0aW9uc319XG4gICAgICBAc2hpZnRPcHRpb25zPXt7QHNoaWZ0T3B0aW9uc319XG4gICAgICBAb2Zmc2V0T3B0aW9ucz17e0BvZmZzZXRPcHRpb25zfX1cbiAgICAgIGFzIHxmdWl8XG4gICAgPlxuICAgICAge3t5aWVsZFxuICAgICAgICAoaGFzaFxuICAgICAgICAgIGhvb2s9ZnVpLmhvb2tcbiAgICAgICAgICBzZXRIb29rPWZ1aS5zZXRIb29rXG4gICAgICAgICAgQ29udGVudD0oY29tcG9uZW50IENvbnRlbnQgbG9vcD1mdWkubG9vcCBpbmxpbmU9QGlubGluZSlcbiAgICAgICAgICBkYXRhPWZ1aS5kYXRhXG4gICAgICAgICAgYXJyb3c9KG1vZGlmaWVyIGF0dGFjaEFycm93IGFycm93RWxlbWVudD1hcnJvd0VsZW1lbnQgZGF0YT1mdWkuZGF0YSlcbiAgICAgICAgKVxuICAgICAgfX1cbiAgICA8L0Zsb2F0aW5nVUk-XG4gIHt7L2xldH19XG48L3RlbXBsYXRlPjtcblxuZXhwb3J0IGRlZmF1bHQgUG9wb3ZlcjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsU0FBUyxJQUFJLFFBQVEsZ0JBQWdCO0FBRXJDLFNBQVMsS0FBSyxRQUFRLG1CQUFtQjtBQUN6QyxTQUFTLE9BQU8sUUFBUSx1QkFBdUI7QUFDL0MsU0FBUyxZQUFZLFNBQVMsUUFBUSxpQkFBaUI7QUFDdkQsU0FBUyxJQUFJLFFBQVEsa0JBQWtCO0FBRXZDLFNBQVMsVUFBVSxRQUFRLG9CQUFvQjtBQUMvQyxTQUFTLE1BQU0sUUFBUSxlQUFlO0FBQ3RDLFNBQVMsT0FBTyxRQUFRLHVCQUF1QjtBQUUvQyxjQUFjLGFBQWEsNEJBQTRCLFFBQVEsOEJBQThCO0FBQzdGLGNBQWMsYUFBYSxhQUFhLFFBQVEsNkJBQTZCO0FBQzdFLGNBQWMsR0FBRyxRQUFRLGlDQUFpQztBQUMxRCxjQUFjLGNBQWMsRUFBRSxVQUFVLFFBQVEsbUJBQW1CO0FBQ25FLGNBQWMsWUFBWSxFQUFFLGFBQWEsUUFBUSxrQkFBa0I7QUFFbkUsaUJBQWlCO0lBQ2Y7UUFDRTs7OztLQUlDLEdBQ0QsY0FBYyxjQUFjLFFBQVEsU0FBUztRQUM3Qzs7OztLQUlDLEdBQ0QsYUFBYSxjQUFjLFFBQVEsU0FBUztRQUM1Qzs7OztLQUlDLEdBQ0QsZ0JBQWdCLGNBQWMsUUFBUSxTQUFTO1FBQy9DOzs7Ozs7Ozs7Ozs7S0FZQyxHQUNELGFBQWEsRUFBRSxRQUFRLFdBQVcsU0FBUyxRQUFRLEVBQUUsS0FBSyxXQUFXLE9BQU87UUFDNUU7Ozs7S0FJQyxHQUNELGVBQWUsY0FBYyxRQUFRLFNBQVM7UUFDOUM7Ozs7OztLQU1DLEdBQ0QsV0FBVyxjQUFjLFFBQVEsU0FBUztRQUUxQzs7Ozs7O0tBTUMsR0FDRCxTQUFTLE9BQU87O0lBRWxCO1FBQ0U7Z0JBRUksTUFBTSw2QkFBNkIsVUFBVSxXQUFXLEdBQUc7Z0JBQzNELFNBQVMsNkJBQTZCLFVBQVUsV0FBVyxHQUFHO2dCQUM5RCxTQUFTLHFCQUFx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"],"names":["getElementTag","tagName1","Content","precompileTemplate","strictMode","scope","element","Portal","TARGETS","templateOnly","arrowSides","top","right","bottom","left","attachArrow","eModifier","element1","_1","named1","arrowElement","current","data","middlewareData","arrow","arrow1","placement","placement1","x","arrowX1","y","arrowY1","otherSide1","split","staticSide1","Object","assign","style","Promise","resolve","set","ArrowElement","cell","maybeAddArrow","middleware1","result1","push","flipOptions","options1","elementContext","Popover","setComponentTemplate","FloatingUI","hash"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"portal-targets.js","sources":["../../src/components/portal-targets.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport { assert } from '@ember/debug';\nimport { isDevelopingApp, macroCondition } from '@embroider/macros';\nimport type { TOC } from '@ember/component/template-only';\nexport const TARGETS = Object.freeze({\n popover: 'ember-primitives__portal-targets__popover',\n tooltip: 'ember-primitives__portal-targets__tooltip',\n modal: 'ember-primitives__portal-targets__modal'\n});\nexport function findNearestTarget(origin1: Element, name1: string) {\n assert(`first argument to \\`findNearestTarget\\` must be an element`, origin1 instanceof Element);\n assert(`second argument to \\`findNearestTarget\\` must be a string`, typeof name1 === `string`);\n let element1: Element | null = null;\n let parent1 = origin1.parentNode;\n while(!element1 && parent1){\n element1 = parent1.querySelector(`[data-portal-name=${name1}]`);\n if (element1) break;\n parent1 = parent1.parentNode;\n }\n if (macroCondition(isDevelopingApp())) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (window as any).prime0 = origin1;\n }\n assert(`Could not find element by the given name: \\`${name1}\\`.` + ` The known names are ` + `${Object.values(TARGETS).join(', ')} ` + `-- but any name will work as long as it is set to the \\`data-portal-name\\` attribute. ` + `Double check that the element you're wanting to portal to is rendered. ` + `The element passed to \\`findNearestTarget\\` is stored on \\`window.prime0\\` ` + `You can debug in your browser's console via ` + `\\`document.querySelector('[data-portal-name=\"${name1}\"]')\\``, element1);\n return element1;\n}\nexport interface Signature {\n Args: {\n };\n Blocks: {\n };\n}\nexport const PortalTargets: TOC<Signature> = template(`\n <div data-portal-name={{TARGETS.popover}}></div>\n <div data-portal-name={{TARGETS.tooltip}}></div>\n <div data-portal-name={{TARGETS.modal}}></div>\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nexport default PortalTargets;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL252cC9EZXZlbG9wbWVudC9OdWxsVm94UG9wdWxpL2VtYmVyLXByaW1pdGl2ZXMvZW1iZXItcHJpbWl0aXZlcy9zcmMvY29tcG9uZW50cy9wb3J0YWwtdGFyZ2V0cy5ndHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSAnQGVtYmVyL2RlYnVnJztcbmltcG9ydCB7IGlzRGV2ZWxvcGluZ0FwcCwgbWFjcm9Db25kaXRpb24gfSBmcm9tICdAZW1icm9pZGVyL21hY3Jvcyc7XG5cbmltcG9ydCB0eXBlIHsgVE9DIH0gZnJvbSAnQGVtYmVyL2NvbXBvbmVudC90ZW1wbGF0ZS1vbmx5JztcblxuZXhwb3J0IGNvbnN0IFRBUkdFVFMgPSBPYmplY3QuZnJlZXplKHtcbiAgcG9wb3ZlcjogJ2VtYmVyLXByaW1pdGl2ZXNfX3BvcnRhbC10YXJnZXRzX19wb3BvdmVyJyxcbiAgdG9vbHRpcDogJ2VtYmVyLXByaW1pdGl2ZXNfX3BvcnRhbC10YXJnZXRzX190b29sdGlwJyxcbiAgbW9kYWw6ICdlbWJlci1wcmltaXRpdmVzX19wb3J0YWwtdGFyZ2V0c19fbW9kYWwnLFxufSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kTmVhcmVzdFRhcmdldChvcmlnaW46IEVsZW1lbnQsIG5hbWU6IHN0cmluZykge1xuICBhc3NlcnQoYGZpcnN0IGFyZ3VtZW50IHRvIFxcYGZpbmROZWFyZXN0VGFyZ2V0XFxgIG11c3QgYmUgYW4gZWxlbWVudGAsIG9yaWdpbiBpbnN0YW5jZW9mIEVsZW1lbnQpO1xuICBhc3NlcnQoYHNlY29uZCBhcmd1bWVudCB0byBcXGBmaW5kTmVhcmVzdFRhcmdldFxcYCBtdXN0IGJlIGEgc3RyaW5nYCwgdHlwZW9mIG5hbWUgPT09IGBzdHJpbmdgKTtcblxuICBsZXQgZWxlbWVudDogRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gIGxldCBwYXJlbnQgPSBvcmlnaW4ucGFyZW50Tm9kZTtcblxuICB3aGlsZSAoIWVsZW1lbnQgJiYgcGFyZW50KSB7XG4gICAgZWxlbWVudCA9IHBhcmVudC5xdWVyeVNlbGVjdG9yKGBbZGF0YS1wb3J0YWwtbmFtZT0ke25hbWV9XWApO1xuICAgIGlmIChlbGVtZW50KSBicmVhaztcbiAgICBwYXJlbnQgPSBwYXJlbnQucGFyZW50Tm9kZTtcbiAgfVxuXG4gIGlmIChtYWNyb0NvbmRpdGlvbihpc0RldmVsb3BpbmdBcHAoKSkpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICh3aW5kb3cgYXMgYW55KS5wcmltZTAgPSBvcmlnaW47XG4gIH1cblxuICBhc3NlcnQoXG4gICAgYENvdWxkIG5vdCBmaW5kIGVsZW1lbnQgYnkgdGhlIGdpdmVuIG5hbWU6IFxcYCR7bmFtZX1cXGAuYCArXG4gICAgICBgIFRoZSBrbm93biBuYW1lcyBhcmUgYCArXG4gICAgICBgJHtPYmplY3QudmFsdWVzKFRBUkdFVFMpLmpvaW4oJywgJyl9IGAgK1xuICAgICAgYC0tIGJ1dCBhbnkgbmFtZSB3aWxsIHdvcmsgYXMgbG9uZyBhcyBpdCBpcyBzZXQgdG8gdGhlIFxcYGRhdGEtcG9ydGFsLW5hbWVcXGAgYXR0cmlidXRlLiBgICtcbiAgICAgIGBEb3VibGUgY2hlY2sgdGhhdCB0aGUgZWxlbWVudCB5b3UncmUgd2FudGluZyB0byBwb3J0YWwgdG8gaXMgcmVuZGVyZWQuIGAgK1xuICAgICAgYFRoZSBlbGVtZW50IHBhc3NlZCB0byBcXGBmaW5kTmVhcmVzdFRhcmdldFxcYCBpcyBzdG9yZWQgb24gXFxgd2luZG93LnByaW1lMFxcYCBgICtcbiAgICAgIGBZb3UgY2FuIGRlYnVnIGluIHlvdXIgYnJvd3NlcidzIGNvbnNvbGUgdmlhIGAgK1xuICAgICAgYFxcYGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXBvcnRhbC1uYW1lPVwiJHtuYW1lfVwiXScpXFxgYCxcbiAgICBlbGVtZW50XG4gICk7XG5cbiAgcmV0dXJuIGVsZW1lbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lnbmF0dXJlIHtcbiAgQXJnczoge307XG4gIEJsb2Nrczoge307XG59XG5cbmV4cG9ydCBjb25zdCBQb3J0YWxUYXJnZXRzOiBUT0M8U2lnbmF0dXJlPiA9IDx0ZW1wbGF0ZT5cbiAgPGRpdiBkYXRhLXBvcnRhbC1uYW1lPXt7VEFSR0VUUy5wb3BvdmVyfX0-PC9kaXY-XG4gIDxkaXYgZGF0YS1wb3J0YWwtbmFtZT17e1RBUkdFVFMudG9vbHRpcH19PjwvZGl2PlxuICA8ZGl2IGRhdGEtcG9ydGFsLW5hbWU9e3tUQVJHRVRTLm1vZGFsfX0-PC9kaXY-XG48L3RlbXBsYXRlPjtcblxuZXhwb3J0IGRlZmF1bHQgUG9ydGFsVGFyZ2V0cztcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsU0FBUyxNQUFNLFFBQVEsZUFBZTtBQUN0QyxTQUFTLGVBQWUsRUFBRSxjQUFjLFFBQVEsb0JBQW9CO0FBRXBFLGNBQWMsR0FBRyxRQUFRLGlDQUFpQztBQUUxRCxPQUFPLE1BQU0sVUFBVSxPQUFPLE1BQU0sQ0FBQztJQUNuQyxTQUFTO0lBQ1QsU0FBUztJQUNULE9BQU87QUFDVCxHQUFHO0FBRUgsT0FBTyxTQUFTLGtCQUFrQixTQUFRLE9BQU8sRUFBRSxPQUFNLE1BQU07SUFDN0QsT0FBTyxDQUFDLDBEQUEwRCxDQUFDLEVBQUUsbUJBQWtCO0lBQ3ZGLE9BQU8sQ0FBQyx5REFBeUQsQ0FBQyxFQUFFLE9BQU8sVUFBUyxDQUFDLE1BQU0sQ0FBQztJQUU1RixJQUFJLFVBQVMsVUFBVSxJQUFJLEdBQUc7SUFFOUIsSUFBSSxVQUFTLFFBQU8sVUFBVTtJQUU5QixNQUFPLENBQUMsWUFBVyxRQUFRO1FBQ3pCLFdBQVUsUUFBTyxhQUFhLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxNQUFLLENBQUMsQ0FBQztRQUMzRCxJQUFJLFVBQVM7UUFDYixVQUFTLFFBQU8sVUFBVTtJQUM1QjtJQUVBLElBQUksZUFBZSxvQkFBb0I7UUFDckMsOERBQThEO1FBQzlELENBQUMsVUFBVSxHQUFHLEVBQUUsTUFBTSxHQUFHO0lBQzNCO0lBRUEsT0FDRSxDQUFDLDRDQUE0QyxFQUFFLE1BQUssR0FBRyxDQUFDLEdBQ3RELENBQUMscUJBQXFCLENBQUMsR0FDdkIsQ0FBQyxFQUFFLE9BQU8sTUFBTSxDQUFDLFNBQVMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQ3ZDLENBQUMsc0ZBQXNGLENBQUMsR0FDeEYsQ0FBQyx1RUFBdUUsQ0FBQyxHQUN6RSxDQUFDLDJFQUEyRSxDQUFDLEdBQzdFLENBQUMsNENBQTRDLENBQUMsR0FDOUMsQ0FBQyw2Q0FBNkMsRUFBRSxNQUFLLE1BQU0sQ0FBQyxFQUM5RDtJQUdGLE9BQU87QUFDVDtBQUVBLGlCQUFpQjtJQUNmOztJQUNBOzs7QUFHRixPQUFPLE1BQU0sZUFBZSxJQUFJLGFBQWEsU0FBVSxDQUFBOzs7O0FBSXZELENBQUEsRUFBQTtJQUFBO1FBQUEsT0FBQSxLQUFBLFNBQUEsQ0FBQSxFQUFXO0lBQUQ7QUFBQSxHQUFFO0FBRVosZUFBZSxjQUFjIn0"],"names":["TARGETS","Object","freeze","popover","tooltip","modal","findNearestTarget","origin1","name1","assert","Element","element1","parent1","parentNode","querySelector","macroCondition","isDevelopingApp","window","prime0","values","join","PortalTargets","setComponentTemplate","precompileTemplate","strictMode","scope","templateOnly"],"mappings":";;;;;;MAKaA,OAAA,GAAUC,MAAA,CAAOC,MAAM,CAAC;AACnCC,EAAAA,OAAA,EAAS,2CAAA;AACTC,EAAAA,OAAA,EAAS,2CAAA;AACTC,EAAAA,KAAA,EAAO,yCAAA;AACT,CAAA,EAAA;AAEO,SAASC,iBAAAA,CAAkBC,OAAe,EAAEC,KAAY,EAAA;AAC7DC,EAAAA,MAAA,CAAQ,CAAA,0DAAA,CAA2D,EAAEF,OAAA,YAAkBG,OAAA,CAAA,CAAA;AACvFD,EAAAA,MAAA,CAAQ,CAA0D,yDAAA,CAAA,EAAE,OAAOD,KAAA,KAAU,CAAO,MAAA,CAAA,CAAA,CAAA;AAE5F,EAAA,IAAIG,QAAuB,GAAG,IAAA,CAAA;AAE9B,EAAA,IAAIC,OAAA,GAASL,OAAA,CAAOM,UAAU,CAAA;AAE9B,EAAA,OAAO,CAACF,QAAA,IAAWC,OAAA,EAAQ;AACzBD,IAAAA,QAAA,GAAUC,OAAA,CAAOE,aAAa,CAAE,CAAA,kBAAA,EAAoBN,KAAK,CAAE,CAAA,CAAA,CAAA,CAAA;AAC3D,IAAA,IAAIG,QAAA,EAAS,MAAA;IACbC,OAAA,GAASA,OAAA,CAAOC,UAAU,CAAA;AAC5B,GAAA;EAEA,IAAIE,cAAA,CAAeC,eAAA,EAAoB,CAAA,EAAA;AACrC;IACCC,MAAA,CAAeC,MAAM,GAAGX,OAAA,CAAA;AAC3B,GAAA;AAEAE,EAAAA,MAAA,CACG,CAAA,4CAAA,EAA8CD,KAAK,CAAA,GAAA,CAAI,GACrD,CAAA,qBAAA,CAAsB,GACtB,CAAA,EAAEP,MAAA,CAAOkB,MAAM,CAACnB,OAAA,CAASoB,CAAAA,IAAI,CAAC,IAAA,CAAM,CAAE,CAAA,CAAA,GACtC,CAAuF,sFAAA,CAAA,GACvF,yEAAwE,GACxE,CAAA,2EAAA,CAA4E,GAC5E,CAAA,4CAAA,CAA6C,GAC7C,CAAA,6CAAA,EAA+CZ,KAAK,CAAA,MAAA,CAAO,EAC9DG,QAAA,CAAA,CAAA;AAGF,EAAA,OAAOA,QAAA,CAAA;AACT,CAAA;MAOaU,aAAmB,GAAAC,oBAAA,CAAaC,kBAAA,CAI7C,8JAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;AAAAzB,IAAAA,OAAAA;AAAA,GAAA,CAAA;AAAU,CAAA,CAAA,EAAA0B,YAAA,EAAA;;;;"}
1
+ {"version":3,"file":"portal-targets.js","sources":["../../src/components/portal-targets.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport { assert } from '@ember/debug';\nimport { isDevelopingApp, macroCondition } from '@embroider/macros';\nimport type { TOC } from '@ember/component/template-only';\nexport const TARGETS = Object.freeze({\n popover: 'ember-primitives__portal-targets__popover',\n tooltip: 'ember-primitives__portal-targets__tooltip',\n modal: 'ember-primitives__portal-targets__modal'\n});\nexport function findNearestTarget(origin1: Element, name1: string) {\n assert(`first argument to \\`findNearestTarget\\` must be an element`, origin1 instanceof Element);\n assert(`second argument to \\`findNearestTarget\\` must be a string`, typeof name1 === `string`);\n let element1: Element | null = null;\n let parent1 = origin1.parentNode;\n while(!element1 && parent1){\n element1 = parent1.querySelector(`[data-portal-name=${name1}]`);\n if (element1) break;\n parent1 = parent1.parentNode;\n }\n if (macroCondition(isDevelopingApp())) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (window as any).prime0 = origin1;\n }\n assert(`Could not find element by the given name: \\`${name1}\\`.` + ` The known names are ` + `${Object.values(TARGETS).join(', ')} ` + `-- but any name will work as long as it is set to the \\`data-portal-name\\` attribute. ` + `Double check that the element you're wanting to portal to is rendered. ` + `The element passed to \\`findNearestTarget\\` is stored on \\`window.prime0\\` ` + `You can debug in your browser's console via ` + `\\`document.querySelector('[data-portal-name=\"${name1}\"]')\\``, element1);\n return element1;\n}\nexport interface Signature {\n Args: {\n };\n Blocks: {\n };\n}\nexport const PortalTargets: TOC<Signature> = template(`\n <div data-portal-name={{TARGETS.popover}}></div>\n <div data-portal-name={{TARGETS.tooltip}}></div>\n <div data-portal-name={{TARGETS.modal}}></div>\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nexport default PortalTargets;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2VtYmVyLXByaW1pdGl2ZXMvZW1iZXItcHJpbWl0aXZlcy9lbWJlci1wcmltaXRpdmVzL3NyYy9jb21wb25lbnRzL3BvcnRhbC10YXJnZXRzLmd0cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhc3NlcnQgfSBmcm9tICdAZW1iZXIvZGVidWcnO1xuaW1wb3J0IHsgaXNEZXZlbG9waW5nQXBwLCBtYWNyb0NvbmRpdGlvbiB9IGZyb20gJ0BlbWJyb2lkZXIvbWFjcm9zJztcblxuaW1wb3J0IHR5cGUgeyBUT0MgfSBmcm9tICdAZW1iZXIvY29tcG9uZW50L3RlbXBsYXRlLW9ubHknO1xuXG5leHBvcnQgY29uc3QgVEFSR0VUUyA9IE9iamVjdC5mcmVlemUoe1xuICBwb3BvdmVyOiAnZW1iZXItcHJpbWl0aXZlc19fcG9ydGFsLXRhcmdldHNfX3BvcG92ZXInLFxuICB0b29sdGlwOiAnZW1iZXItcHJpbWl0aXZlc19fcG9ydGFsLXRhcmdldHNfX3Rvb2x0aXAnLFxuICBtb2RhbDogJ2VtYmVyLXByaW1pdGl2ZXNfX3BvcnRhbC10YXJnZXRzX19tb2RhbCcsXG59KTtcblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmROZWFyZXN0VGFyZ2V0KG9yaWdpbjogRWxlbWVudCwgbmFtZTogc3RyaW5nKSB7XG4gIGFzc2VydChgZmlyc3QgYXJndW1lbnQgdG8gXFxgZmluZE5lYXJlc3RUYXJnZXRcXGAgbXVzdCBiZSBhbiBlbGVtZW50YCwgb3JpZ2luIGluc3RhbmNlb2YgRWxlbWVudCk7XG4gIGFzc2VydChgc2Vjb25kIGFyZ3VtZW50IHRvIFxcYGZpbmROZWFyZXN0VGFyZ2V0XFxgIG11c3QgYmUgYSBzdHJpbmdgLCB0eXBlb2YgbmFtZSA9PT0gYHN0cmluZ2ApO1xuXG4gIGxldCBlbGVtZW50OiBFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgbGV0IHBhcmVudCA9IG9yaWdpbi5wYXJlbnROb2RlO1xuXG4gIHdoaWxlICghZWxlbWVudCAmJiBwYXJlbnQpIHtcbiAgICBlbGVtZW50ID0gcGFyZW50LnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLXBvcnRhbC1uYW1lPSR7bmFtZX1dYCk7XG4gICAgaWYgKGVsZW1lbnQpIGJyZWFrO1xuICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnROb2RlO1xuICB9XG5cbiAgaWYgKG1hY3JvQ29uZGl0aW9uKGlzRGV2ZWxvcGluZ0FwcCgpKSkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgKHdpbmRvdyBhcyBhbnkpLnByaW1lMCA9IG9yaWdpbjtcbiAgfVxuXG4gIGFzc2VydChcbiAgICBgQ291bGQgbm90IGZpbmQgZWxlbWVudCBieSB0aGUgZ2l2ZW4gbmFtZTogXFxgJHtuYW1lfVxcYC5gICtcbiAgICAgIGAgVGhlIGtub3duIG5hbWVzIGFyZSBgICtcbiAgICAgIGAke09iamVjdC52YWx1ZXMoVEFSR0VUUykuam9pbignLCAnKX0gYCArXG4gICAgICBgLS0gYnV0IGFueSBuYW1lIHdpbGwgd29yayBhcyBsb25nIGFzIGl0IGlzIHNldCB0byB0aGUgXFxgZGF0YS1wb3J0YWwtbmFtZVxcYCBhdHRyaWJ1dGUuIGAgK1xuICAgICAgYERvdWJsZSBjaGVjayB0aGF0IHRoZSBlbGVtZW50IHlvdSdyZSB3YW50aW5nIHRvIHBvcnRhbCB0byBpcyByZW5kZXJlZC4gYCArXG4gICAgICBgVGhlIGVsZW1lbnQgcGFzc2VkIHRvIFxcYGZpbmROZWFyZXN0VGFyZ2V0XFxgIGlzIHN0b3JlZCBvbiBcXGB3aW5kb3cucHJpbWUwXFxgIGAgK1xuICAgICAgYFlvdSBjYW4gZGVidWcgaW4geW91ciBicm93c2VyJ3MgY29uc29sZSB2aWEgYCArXG4gICAgICBgXFxgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2RhdGEtcG9ydGFsLW5hbWU9XCIke25hbWV9XCJdJylcXGBgLFxuICAgIGVsZW1lbnRcbiAgKTtcblxuICByZXR1cm4gZWxlbWVudDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaWduYXR1cmUge1xuICBBcmdzOiB7fTtcbiAgQmxvY2tzOiB7fTtcbn1cblxuZXhwb3J0IGNvbnN0IFBvcnRhbFRhcmdldHM6IFRPQzxTaWduYXR1cmU-ID0gPHRlbXBsYXRlPlxuICA8ZGl2IGRhdGEtcG9ydGFsLW5hbWU9e3tUQVJHRVRTLnBvcG92ZXJ9fT48L2Rpdj5cbiAgPGRpdiBkYXRhLXBvcnRhbC1uYW1lPXt7VEFSR0VUUy50b29sdGlwfX0-PC9kaXY-XG4gIDxkaXYgZGF0YS1wb3J0YWwtbmFtZT17e1RBUkdFVFMubW9kYWx9fT48L2Rpdj5cbjwvdGVtcGxhdGU-O1xuXG5leHBvcnQgZGVmYXVsdCBQb3J0YWxUYXJnZXRzO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxTQUFTLE1BQU0sUUFBUSxlQUFlO0FBQ3RDLFNBQVMsZUFBZSxFQUFFLGNBQWMsUUFBUSxvQkFBb0I7QUFFcEUsY0FBYyxHQUFHLFFBQVEsaUNBQWlDO0FBRTFELE9BQU8sTUFBTSxVQUFVLE9BQU8sTUFBTSxDQUFDO0lBQ25DLFNBQVM7SUFDVCxTQUFTO0lBQ1QsT0FBTztBQUNULEdBQUc7QUFFSCxPQUFPLFNBQVMsa0JBQWtCLFNBQVEsT0FBTyxFQUFFLE9BQU0sTUFBTTtJQUM3RCxPQUFPLENBQUMsMERBQTBELENBQUMsRUFBRSxtQkFBa0I7SUFDdkYsT0FBTyxDQUFDLHlEQUF5RCxDQUFDLEVBQUUsT0FBTyxVQUFTLENBQUMsTUFBTSxDQUFDO0lBRTVGLElBQUksVUFBUyxVQUFVLElBQUksR0FBRztJQUU5QixJQUFJLFVBQVMsUUFBTyxVQUFVO0lBRTlCLE1BQU8sQ0FBQyxZQUFXLFFBQVE7UUFDekIsV0FBVSxRQUFPLGFBQWEsQ0FBQyxDQUFDLGtCQUFrQixFQUFFLE1BQUssQ0FBQyxDQUFDO1FBQzNELElBQUksVUFBUztRQUNiLFVBQVMsUUFBTyxVQUFVO0lBQzVCO0lBRUEsSUFBSSxlQUFlLG9CQUFvQjtRQUNyQyw4REFBOEQ7UUFDOUQsQ0FBQyxVQUFVLEdBQUcsRUFBRSxNQUFNLEdBQUc7SUFDM0I7SUFFQSxPQUNFLENBQUMsNENBQTRDLEVBQUUsTUFBSyxHQUFHLENBQUMsR0FDdEQsQ0FBQyxxQkFBcUIsQ0FBQyxHQUN2QixDQUFDLEVBQUUsT0FBTyxNQUFNLENBQUMsU0FBUyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FDdkMsQ0FBQyxzRkFBc0YsQ0FBQyxHQUN4RixDQUFDLHVFQUF1RSxDQUFDLEdBQ3pFLENBQUMsMkVBQTJFLENBQUMsR0FDN0UsQ0FBQyw0Q0FBNEMsQ0FBQyxHQUM5QyxDQUFDLDZDQUE2QyxFQUFFLE1BQUssTUFBTSxDQUFDLEVBQzlEO0lBR0YsT0FBTztBQUNUO0FBRUEsaUJBQWlCO0lBQ2Y7O0lBQ0E7OztBQUdGLE9BQU8sTUFBTSxlQUFlLElBQUksYUFBYSxTQUFVLENBQUE7Ozs7QUFJdkQsQ0FBQSxFQUFBO0lBQUE7UUFBQSxPQUFBLEtBQUEsU0FBQSxDQUFBLEVBQVc7SUFBRDtBQUFBLEdBQUU7QUFFWixlQUFlLGNBQWMifQ"],"names":["TARGETS","Object","freeze","popover","tooltip","modal","findNearestTarget","origin1","name1","assert","Element","element1","parent1","parentNode","querySelector","macroCondition","isDevelopingApp","window","prime0","values","join","PortalTargets","setComponentTemplate","precompileTemplate","strictMode","scope","templateOnly"],"mappings":";;;;;;MAKaA,OAAA,GAAUC,MAAA,CAAOC,MAAM,CAAC;AACnCC,EAAAA,OAAA,EAAS,2CAAA;AACTC,EAAAA,OAAA,EAAS,2CAAA;AACTC,EAAAA,KAAA,EAAO,yCAAA;AACT,CAAA,EAAA;AAEO,SAASC,iBAAAA,CAAkBC,OAAe,EAAEC,KAAY,EAAA;AAC7DC,EAAAA,MAAA,CAAO,CAAA,0DAAA,CAA4D,EAAEF,OAAA,YAAkBG,OAAA,CAAA,CAAA;AACvFD,EAAAA,MAAA,CAAO,CAA2D,yDAAA,CAAA,EAAE,OAAOD,KAAA,KAAS,CAAQ,MAAA,CAAA,CAAA,CAAA;AAE5F,EAAA,IAAIG,QAAuB,GAAG,IAAA,CAAA;AAE9B,EAAA,IAAIC,OAAA,GAASL,OAAA,CAAOM,UAAU,CAAA;AAE9B,EAAA,OAAO,CAACF,QAAA,IAAWC,OAAA,EAAQ;AACzBD,IAAAA,QAAA,GAAUC,OAAA,CAAOE,aAAa,CAAC,CAAA,kBAAA,EAAqBN,KAAA,CAAO,CAAA,CAAA,CAAA,CAAA;AAC3D,IAAA,IAAIG,QAAA,EAAS,MAAA;IACbC,OAAA,GAASA,OAAA,CAAOC,UAAU,CAAA;AAC5B,GAAA;EAEA,IAAIE,cAAA,CAAeC,eAAA,EAAoB,CAAA,EAAA;AACrC;IACCC,MAAA,CAAeC,MAAM,GAAGX,OAAA,CAAA;AAC3B,GAAA;AAEAE,EAAAA,MAAA,CACE,CAAA,4CAAA,EAA+CD,KAAA,CAAA,GAAA,CAAS,GACtD,CAAA,qBAAA,CAAuB,GACvB,CAAA,EAAGP,MAAA,CAAOkB,MAAM,CAACnB,OAAA,CAASoB,CAAAA,IAAI,CAAC,IAAA,CAAA,CAAA,CAAA,CAAQ,GACvC,CAAA,sFAAA,CAAwF,GACxF,CAAA,uEAAA,CAAyE,GACzE,CAAA,2EAAA,CAA6E,GAC7E,CAAA,4CAAA,CAA8C,GAC9C,CAAA,6CAAA,EAAgDZ,KAAA,CAAA,MAAA,CAAY,EAC9DG,QAAA,CAAA,CAAA;AAGF,EAAA,OAAOA,QAAA,CAAA;AACT,CAAA;MAOaU,aAAmB,GAAAC,oBAAA,CAAaC,kBAAA,CAI7C,8JAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;AAAAzB,IAAAA,OAAAA;AAAA,GAAA,CAAA;AAAU,CAAA,CAAA,EAAA0B,YAAA,EAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"portal.js","sources":["../../src/components/portal.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport { modifier } from 'ember-modifier';\nimport { cell } from 'ember-resources';\nimport { findNearestTarget, type TARGETS } from './portal-targets.gts';\nimport type { TOC } from '@ember/component/template-only';\nexport interface Signature {\n Args: {\n /**\n * The name of the PortalTarget to render in to.\n * This is the value of the `data-portal-name` attribute\n * of the element you wish to render in to.\n */ to: (typeof TARGETS)[keyof typeof TARGETS] | (string & {\n });\n };\n Blocks: {\n /**\n * The portaled content\n */ default: [];\n };\n}\nconst anchor = modifier((element1: Element, [to1, update1]: [string, ReturnType<typeof ElementValue>['set']])=>{\n let found1 = findNearestTarget(element1, to1);\n update1(found1);\n});\nconst ElementValue = ()=>cell<Element | ShadowRoot>();\nexport const Portal: TOC<Signature> = template(`\n {{#let (ElementValue) as |target|}}\n {{! This div is always going to be empty,\n because it'll either find the portal and render content elsewhere,\n it it won't find the portal and won't render anything.\n }}\n {{! template-lint-disable no-inline-styles }}\n <div style=\"display:contents;\" {{anchor @to target.set}}>\n {{#if target.current}}\n {{#in-element target.current}}\n {{yield}}\n {{/in-element}}\n {{/if}}\n </div>\n {{/let}}\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nexport default Portal;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL252cC9EZXZlbG9wbWVudC9OdWxsVm94UG9wdWxpL2VtYmVyLXByaW1pdGl2ZXMvZW1iZXItcHJpbWl0aXZlcy9zcmMvY29tcG9uZW50cy9wb3J0YWwuZ3RzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1vZGlmaWVyIH0gZnJvbSAnZW1iZXItbW9kaWZpZXInO1xuaW1wb3J0IHsgY2VsbCB9IGZyb20gJ2VtYmVyLXJlc291cmNlcyc7XG5cbmltcG9ydCB7IGZpbmROZWFyZXN0VGFyZ2V0LCB0eXBlIFRBUkdFVFMgfSBmcm9tICcuL3BvcnRhbC10YXJnZXRzLmd0cyc7XG5cbmltcG9ydCB0eXBlIHsgVE9DIH0gZnJvbSAnQGVtYmVyL2NvbXBvbmVudC90ZW1wbGF0ZS1vbmx5JztcblxuZXhwb3J0IGludGVyZmFjZSBTaWduYXR1cmUge1xuICBBcmdzOiB7XG4gICAgLyoqXG4gICAgICogVGhlIG5hbWUgb2YgdGhlIFBvcnRhbFRhcmdldCB0byByZW5kZXIgaW4gdG8uXG4gICAgICogVGhpcyBpcyB0aGUgdmFsdWUgb2YgdGhlIGBkYXRhLXBvcnRhbC1uYW1lYCBhdHRyaWJ1dGVcbiAgICAgKiBvZiB0aGUgZWxlbWVudCB5b3Ugd2lzaCB0byByZW5kZXIgaW4gdG8uXG4gICAgICovXG4gICAgdG86ICh0eXBlb2YgVEFSR0VUUylba2V5b2YgdHlwZW9mIFRBUkdFVFNdIHwgKHN0cmluZyAmIHt9KTtcbiAgfTtcbiAgQmxvY2tzOiB7XG4gICAgLyoqXG4gICAgICogVGhlIHBvcnRhbGVkIGNvbnRlbnRcbiAgICAgKi9cbiAgICBkZWZhdWx0OiBbXTtcbiAgfTtcbn1cblxuY29uc3QgYW5jaG9yID0gbW9kaWZpZXIoXG4gIChlbGVtZW50OiBFbGVtZW50LCBbdG8sIHVwZGF0ZV06IFtzdHJpbmcsIFJldHVyblR5cGU8dHlwZW9mIEVsZW1lbnRWYWx1ZT5bJ3NldCddXSkgPT4ge1xuICAgIGxldCBmb3VuZCA9IGZpbmROZWFyZXN0VGFyZ2V0KGVsZW1lbnQsIHRvKTtcblxuICAgIHVwZGF0ZShmb3VuZCk7XG4gIH1cbik7XG5cbmNvbnN0IEVsZW1lbnRWYWx1ZSA9ICgpID0-IGNlbGw8RWxlbWVudCB8IFNoYWRvd1Jvb3Q-KCk7XG5cbmV4cG9ydCBjb25zdCBQb3J0YWw6IFRPQzxTaWduYXR1cmU-ID0gPHRlbXBsYXRlPlxuICB7eyNsZXQgKEVsZW1lbnRWYWx1ZSkgYXMgfHRhcmdldHx9fVxuICAgIHt7ISBUaGlzIGRpdiBpcyBhbHdheXMgZ29pbmcgdG8gYmUgZW1wdHksXG4gICAgICAgICAgYmVjYXVzZSBpdCdsbCBlaXRoZXIgZmluZCB0aGUgcG9ydGFsIGFuZCByZW5kZXIgY29udGVudCBlbHNld2hlcmUsXG4gICAgICAgICAgaXQgaXQgd29uJ3QgZmluZCB0aGUgcG9ydGFsIGFuZCB3b24ndCByZW5kZXIgYW55dGhpbmcuXG4gICAgfX1cbiAgICB7eyEgdGVtcGxhdGUtbGludC1kaXNhYmxlIG5vLWlubGluZS1zdHlsZXMgfX1cbiAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTpjb250ZW50cztcIiB7e2FuY2hvciBAdG8gdGFyZ2V0LnNldH19PlxuICAgICAge3sjaWYgdGFyZ2V0LmN1cnJlbnR9fVxuICAgICAgICB7eyNpbi1lbGVtZW50IHRhcmdldC5jdXJyZW50fX1cbiAgICAgICAgICB7e3lpZWxkfX1cbiAgICAgICAge3svaW4tZWxlbWVudH19XG4gICAgICB7ey9pZn19XG4gICAgPC9kaXY-XG4gIHt7L2xldH19XG48L3RlbXBsYXRlPjtcblxuZXhwb3J0IGRlZmF1bHQgUG9ydGFsO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxTQUFTLFFBQVEsUUFBUSxpQkFBaUI7QUFDMUMsU0FBUyxJQUFJLFFBQVEsa0JBQWtCO0FBRXZDLFNBQVMsaUJBQWlCLEVBQUUsS0FBSyxPQUFPLFFBQVEsdUJBQXVCO0FBRXZFLGNBQWMsR0FBRyxRQUFRLGlDQUFpQztBQUUxRCxpQkFBaUI7SUFDZjtRQUNFOzs7O0tBSUMsR0FDRCxZQUFZLHNCQUFzQixZQUFZLE1BQU07OztJQUV0RDtRQUNFOztLQUVDLEdBQ0Q7OztBQUlKLE1BQU0sU0FBUyxTQUNiLENBQUMsVUFBUyxTQUFTLENBQUMsS0FBSSxXQUFVLE1BQU0sRUFBRSxrQkFBa0IsY0FBYyxPQUFPO0lBQy9FLElBQUksU0FBUSxrQkFBa0IsVUFBUztJQUV2QyxRQUFPO0FBQ1Q7QUFHRixNQUFNLGVBQWUsSUFBTSxLQUFLLFVBQVU7QUFFMUMsT0FBTyxNQUFNLFFBQVEsSUFBSSxhQUFhLFNBQVUsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7O0FBZWhELENBQUEsRUFBQTtJQUFBO1FBQUEsT0FBQSxLQUFBLFNBQUEsQ0FBQSxFQUFXO0lBQUQ7QUFBQSxHQUFFO0FBRVosZUFBZSxPQUFPIn0"],"names":["anchor","modifier","element1","to1","update1","found1","findNearestTarget","ElementValue","cell","Portal","setComponentTemplate","precompileTemplate","strictMode","scope","templateOnly"],"mappings":";;;;;;;AAwBA,MAAMA,MAAA,GAASC,QAAA,CACb,CAACC,QAAS,EAAS,CAACC,GAAA,EAAIC,OAAA,CAAyD,KAAA;AAC/E,EAAA,IAAIC,MAAA,GAAQC,iBAAA,CAAkBJ,QAAA,EAASC,GAAA,CAAA,CAAA;AAEvCC,EAAAA,OAAA,CAAOC,MAAA,CAAA,CAAA;AACT,CAAA,CAAA,CAAA;AAGF,MAAME,YAAA,GAAeA,MAAMC,IAAA,EAAe,CAAA;MAE7BC,MAAY,GAAAC,oBAAA,CAAaC,kBAAA,CAetC,ygBAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAN,YAAA;AAAAP,IAAAA,MAAAA;AAAA,GAAA,CAAA;AAAU,CAAA,CAAA,EAAAc,YAAA,EAAA;;;;"}
1
+ {"version":3,"file":"portal.js","sources":["../../src/components/portal.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport { modifier } from 'ember-modifier';\nimport { cell } from 'ember-resources';\nimport { findNearestTarget, type TARGETS } from './portal-targets.gts';\nimport type { TOC } from '@ember/component/template-only';\nexport interface Signature {\n Args: {\n /**\n * The name of the PortalTarget to render in to.\n * This is the value of the `data-portal-name` attribute\n * of the element you wish to render in to.\n */ to: (typeof TARGETS)[keyof typeof TARGETS] | (string & {\n });\n };\n Blocks: {\n /**\n * The portaled content\n */ default: [];\n };\n}\nconst anchor = modifier((element1: Element, [to1, update1]: [string, ReturnType<typeof ElementValue>['set']])=>{\n let found1 = findNearestTarget(element1, to1);\n update1(found1);\n});\nconst ElementValue = ()=>cell<Element | ShadowRoot>();\nexport const Portal: TOC<Signature> = template(`\n {{#let (ElementValue) as |target|}}\n {{! This div is always going to be empty,\n because it'll either find the portal and render content elsewhere,\n it it won't find the portal and won't render anything.\n }}\n {{! template-lint-disable no-inline-styles }}\n <div style=\"display:contents;\" {{anchor @to target.set}}>\n {{#if target.current}}\n {{#in-element target.current}}\n {{yield}}\n {{/in-element}}\n {{/if}}\n </div>\n {{/let}}\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nexport default Portal;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2VtYmVyLXByaW1pdGl2ZXMvZW1iZXItcHJpbWl0aXZlcy9lbWJlci1wcmltaXRpdmVzL3NyYy9jb21wb25lbnRzL3BvcnRhbC5ndHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbW9kaWZpZXIgfSBmcm9tICdlbWJlci1tb2RpZmllcic7XG5pbXBvcnQgeyBjZWxsIH0gZnJvbSAnZW1iZXItcmVzb3VyY2VzJztcblxuaW1wb3J0IHsgZmluZE5lYXJlc3RUYXJnZXQsIHR5cGUgVEFSR0VUUyB9IGZyb20gJy4vcG9ydGFsLXRhcmdldHMuZ3RzJztcblxuaW1wb3J0IHR5cGUgeyBUT0MgfSBmcm9tICdAZW1iZXIvY29tcG9uZW50L3RlbXBsYXRlLW9ubHknO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNpZ25hdHVyZSB7XG4gIEFyZ3M6IHtcbiAgICAvKipcbiAgICAgKiBUaGUgbmFtZSBvZiB0aGUgUG9ydGFsVGFyZ2V0IHRvIHJlbmRlciBpbiB0by5cbiAgICAgKiBUaGlzIGlzIHRoZSB2YWx1ZSBvZiB0aGUgYGRhdGEtcG9ydGFsLW5hbWVgIGF0dHJpYnV0ZVxuICAgICAqIG9mIHRoZSBlbGVtZW50IHlvdSB3aXNoIHRvIHJlbmRlciBpbiB0by5cbiAgICAgKi9cbiAgICB0bzogKHR5cGVvZiBUQVJHRVRTKVtrZXlvZiB0eXBlb2YgVEFSR0VUU10gfCAoc3RyaW5nICYge30pO1xuICB9O1xuICBCbG9ja3M6IHtcbiAgICAvKipcbiAgICAgKiBUaGUgcG9ydGFsZWQgY29udGVudFxuICAgICAqL1xuICAgIGRlZmF1bHQ6IFtdO1xuICB9O1xufVxuXG5jb25zdCBhbmNob3IgPSBtb2RpZmllcihcbiAgKGVsZW1lbnQ6IEVsZW1lbnQsIFt0bywgdXBkYXRlXTogW3N0cmluZywgUmV0dXJuVHlwZTx0eXBlb2YgRWxlbWVudFZhbHVlPlsnc2V0J11dKSA9PiB7XG4gICAgbGV0IGZvdW5kID0gZmluZE5lYXJlc3RUYXJnZXQoZWxlbWVudCwgdG8pO1xuXG4gICAgdXBkYXRlKGZvdW5kKTtcbiAgfVxuKTtcblxuY29uc3QgRWxlbWVudFZhbHVlID0gKCkgPT4gY2VsbDxFbGVtZW50IHwgU2hhZG93Um9vdD4oKTtcblxuZXhwb3J0IGNvbnN0IFBvcnRhbDogVE9DPFNpZ25hdHVyZT4gPSA8dGVtcGxhdGU-XG4gIHt7I2xldCAoRWxlbWVudFZhbHVlKSBhcyB8dGFyZ2V0fH19XG4gICAge3shIFRoaXMgZGl2IGlzIGFsd2F5cyBnb2luZyB0byBiZSBlbXB0eSxcbiAgICAgICAgICBiZWNhdXNlIGl0J2xsIGVpdGhlciBmaW5kIHRoZSBwb3J0YWwgYW5kIHJlbmRlciBjb250ZW50IGVsc2V3aGVyZSxcbiAgICAgICAgICBpdCBpdCB3b24ndCBmaW5kIHRoZSBwb3J0YWwgYW5kIHdvbid0IHJlbmRlciBhbnl0aGluZy5cbiAgICB9fVxuICAgIHt7ISB0ZW1wbGF0ZS1saW50LWRpc2FibGUgbm8taW5saW5lLXN0eWxlcyB9fVxuICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OmNvbnRlbnRzO1wiIHt7YW5jaG9yIEB0byB0YXJnZXQuc2V0fX0-XG4gICAgICB7eyNpZiB0YXJnZXQuY3VycmVudH19XG4gICAgICAgIHt7I2luLWVsZW1lbnQgdGFyZ2V0LmN1cnJlbnR9fVxuICAgICAgICAgIHt7eWllbGR9fVxuICAgICAgICB7ey9pbi1lbGVtZW50fX1cbiAgICAgIHt7L2lmfX1cbiAgICA8L2Rpdj5cbiAge3svbGV0fX1cbjwvdGVtcGxhdGU-O1xuXG5leHBvcnQgZGVmYXVsdCBQb3J0YWw7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFNBQVMsUUFBUSxRQUFRLGlCQUFpQjtBQUMxQyxTQUFTLElBQUksUUFBUSxrQkFBa0I7QUFFdkMsU0FBUyxpQkFBaUIsRUFBRSxLQUFLLE9BQU8sUUFBUSx1QkFBdUI7QUFFdkUsY0FBYyxHQUFHLFFBQVEsaUNBQWlDO0FBRTFELGlCQUFpQjtJQUNmO1FBQ0U7Ozs7S0FJQyxHQUNELFlBQVksc0JBQXNCLFlBQVksTUFBTTs7O0lBRXREO1FBQ0U7O0tBRUMsR0FDRDs7O0FBSUosTUFBTSxTQUFTLFNBQ2IsQ0FBQyxVQUFTLFNBQVMsQ0FBQyxLQUFJLFdBQVUsTUFBTSxFQUFFLGtCQUFrQixjQUFjLE9BQU87SUFDL0UsSUFBSSxTQUFRLGtCQUFrQixVQUFTO0lBRXZDLFFBQU87QUFDVDtBQUdGLE1BQU0sZUFBZSxJQUFNLEtBQUssVUFBVTtBQUUxQyxPQUFPLE1BQU0sUUFBUSxJQUFJLGFBQWEsU0FBVSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7QUFlaEQsQ0FBQSxFQUFBO0lBQUE7UUFBQSxPQUFBLEtBQUEsU0FBQSxDQUFBLEVBQVc7SUFBRDtBQUFBLEdBQUU7QUFFWixlQUFlLE9BQU8ifQ"],"names":["anchor","modifier","element1","to1","update1","found1","findNearestTarget","ElementValue","cell","Portal","setComponentTemplate","precompileTemplate","strictMode","scope","templateOnly"],"mappings":";;;;;;;AAwBA,MAAMA,MAAA,GAASC,QAAA,CACb,CAACC,QAAS,EAAS,CAACC,GAAA,EAAIC,OAAA,CAAyD,KAAA;AAC/E,EAAA,IAAIC,MAAA,GAAQC,iBAAA,CAAkBJ,QAAA,EAASC,GAAA,CAAA,CAAA;AAEvCC,EAAAA,OAAA,CAAOC,MAAA,CAAA,CAAA;AACT,CAAA,CAAA,CAAA;AAGF,MAAME,YAAA,GAAeA,MAAMC,IAAA,EAAe,CAAA;MAE7BC,MAAY,GAAAC,oBAAA,CAAaC,kBAAA,CAetC,ygBAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAN,YAAA;AAAAP,IAAAA,MAAAA;AAAA,GAAA,CAAA;AAAU,CAAA,CAAA,EAAAc,YAAA,EAAA;;;;"}