ember-primitives 0.15.0 → 0.17.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.
- package/declarations/components/dialog.d.ts +4 -4
- package/declarations/components/form.d.ts +19 -1
- package/declarations/components/form.d.ts.map +1 -1
- package/declarations/components/link.d.ts +35 -13
- package/declarations/components/link.d.ts.map +1 -1
- package/declarations/components/menu.d.ts +55 -15
- package/declarations/components/menu.d.ts.map +1 -1
- package/declarations/components/one-time-password/input.d.ts +1 -1
- package/declarations/components/popover.d.ts +1 -7
- package/declarations/components/popover.d.ts.map +1 -1
- package/declarations/floating-ui/component.d.ts +3 -10
- package/declarations/floating-ui/component.d.ts.map +1 -1
- package/declarations/helpers/link.d.ts +29 -0
- package/declarations/helpers/link.d.ts.map +1 -0
- package/declarations/helpers.d.ts +1 -0
- package/declarations/helpers.d.ts.map +1 -1
- package/dist/_app_/helpers/link.js +1 -0
- package/dist/components/-private/typed-elements.js.map +1 -1
- package/dist/components/accordion/content.js +1 -1
- package/dist/components/accordion/header.js +1 -1
- package/dist/components/accordion/item.js +1 -1
- package/dist/components/accordion/trigger.js +1 -1
- package/dist/components/accordion.js +4 -4
- package/dist/components/accordion.js.map +1 -1
- package/dist/components/avatar.js +6 -6
- package/dist/components/avatar.js.map +1 -1
- package/dist/components/dialog.js +6 -6
- package/dist/components/dialog.js.map +1 -1
- package/dist/components/external-link.js.map +1 -1
- package/dist/components/form.js +50 -7
- package/dist/components/form.js.map +1 -1
- package/dist/components/layout/sticky-footer/index.js.map +1 -1
- package/dist/components/link.js +12 -78
- package/dist/components/link.js.map +1 -1
- package/dist/components/menu.js +35 -21
- package/dist/components/menu.js.map +1 -1
- package/dist/components/one-time-password/buttons.js +3 -3
- package/dist/components/one-time-password/buttons.js.map +1 -1
- package/dist/components/one-time-password/input.js +5 -5
- package/dist/components/one-time-password/input.js.map +1 -1
- package/dist/components/one-time-password/otp.js +5 -5
- package/dist/components/one-time-password/otp.js.map +1 -1
- package/dist/components/popover.js +9 -9
- package/dist/components/popover.js.map +1 -1
- package/dist/components/portal-targets.js +2 -2
- package/dist/components/portal-targets.js.map +1 -1
- package/dist/components/portal.js +2 -2
- package/dist/components/portal.js.map +1 -1
- package/dist/components/progress.js +5 -5
- package/dist/components/progress.js.map +1 -1
- package/dist/components/scroller.js +3 -3
- package/dist/components/scroller.js.map +1 -1
- package/dist/components/shadowed.js +4 -4
- package/dist/components/shadowed.js.map +1 -1
- package/dist/components/switch.js +8 -8
- package/dist/components/switch.js.map +1 -1
- package/dist/components/toggle-group.js +8 -8
- package/dist/components/toggle-group.js.map +1 -1
- package/dist/components/toggle.js +5 -5
- package/dist/components/toggle.js.map +1 -1
- package/dist/floating-ui/component.js +11 -9
- package/dist/floating-ui/component.js.map +1 -1
- package/dist/helpers/link.js +79 -0
- package/dist/helpers/link.js.map +1 -0
- package/dist/helpers.js +1 -0
- package/dist/helpers.js.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/{item-HBCzMJwv.js → item-DmpElnSZ.js} +23 -23
- package/dist/item-DmpElnSZ.js.map +1 -0
- package/package.json +21 -20
- package/dist/item-HBCzMJwv.js.map +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 } from 'ember-modifier';\nimport { cell } from 'ember-resources';\nimport { getTabster, getTabsterAttribute, 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>;\nconst TABSTER_CONFIG_CONTENT = getTabsterAttribute({\n mover: {\n direction: Types.MoverDirections.Both,\n cyclic: true\n },\n deloser: {}\n}, true);\nconst TABSTER_CONFIG_TRIGGER = getTabsterAttribute({\n deloser: {}\n}, true);\nexport interface Signature {\n Args: PopoverSignature['Args'];\n Blocks: {\n default: [{\n arrow: PopoverSignature['Blocks']['default'][0]['arrow'];\n Trigger: WithBoundArgs<typeof Trigger, 'triggerElement' | 'contentId' | 'isOpen' | 'hook'>;\n Content: WithBoundArgs<typeof Content, 'triggerElement' | 'contentId' | 'isOpen' | 'PopoverContent'>;\n isOpen: boolean;\n }];\n };\n}\nconst Separator: TOC<{\n Element: HTMLDivElement;\n Args: {\n };\n Blocks: {\n default: [];\n };\n}> = 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}\nconst Item: TOC<{\n Element: HTMLButtonElement;\n Args: {\n onSelect?: (event: Event) => void;\n };\n Blocks: {\n default: [];\n };\n}> = 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 = modifier<{\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});\nconst Content: TOC<{\n Element: HTMLDivElement;\n Args: {\n triggerElement: Cell<HTMLElement>;\n contentId: string;\n isOpen: Cell<boolean>;\n PopoverContent: PopoverSignature['Blocks']['default'][0]['Content'];\n };\n Blocks: {\n default: [{\n Item: typeof Item;\n Separator: typeof Separator;\n }];\n };\n}> = 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});\nconst installTrigger = modifier<{\n Element: HTMLElement;\n Args: {\n Named: {\n triggerElement: Cell<HTMLElement>;\n };\n };\n}>((element1, _1: [], { triggerElement: triggerElement1 })=>{\n triggerElement1.current = element1;\n});\nconst Trigger: TOC<{\n Element: HTMLButtonElement;\n Args: {\n triggerElement: Cell<HTMLElement>;\n contentId: string;\n isOpen: Cell<boolean>;\n hook: PopoverSignature['Blocks']['default'][0]['hook'];\n };\n Blocks: {\n default: [];\n };\n}> = template(`\n <button\n data-tabster={{TABSTER_CONFIG_TRIGGER}}\n type=\"button\"\n aria-controls={{if @isOpen.current @contentId}}\n aria-haspopup=\"menu\"\n aria-expanded={{if @isOpen.current \"true\" \"false\"}}\n {{@hook}}\n {{installTrigger triggerElement=@triggerElement}}\n {{on \"click\" @isOpen.toggle}}\n ...attributes\n >\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 {{yield\n (hash\n Trigger=(component\n Trigger hook=p.hook isOpen=isOpen triggerElement=triggerEl contentId=this.contentId\n )\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 </Popover>\n {{/let}}\n `, {\n component: this,\n eval () {\n return eval(arguments[0]);\n }\n });\n }\n}\nexport default Menu;\n"],"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","modifier","element1","_1","isOpen","isOpen1","triggerElement","triggerElement1","tabster1","getTabster","window","firstFocusable1","focusable","findFirst","container","onDocumentClick1","current","target","contains","onDocumentKeydown1","key","document","addEventListener","removeEventListener","Content","hash","installTrigger","Trigger","IsOpen","cell","TriggerElement","Menu","Component","contentId","guidFor","Popover"],"mappings":";;;;;;;;;;;;AAYA,MAAMA,sBAAsB,GAAGC,mBAAmB,CAAC;AAC/CC,EAAAA,KAAK,EAAE;AACHC,IAAAA,SAAS,EAAEC,KAAK,CAACC,eAAe,CAACC,IAAI;AACrCC,IAAAA,MAAM,EAAE,IAAA;GACX;AACDC,EAAAA,OAAO,EAAE,EAAC;AACd,CAAC,EAAE,IAAI,CAAC,CAAA;AACR,MAAMC,sBAAsB,GAAGR,mBAAmB,CAAC;AAC/CO,EAAAA,OAAO,EAAE,EAAC;AACd,CAAC,EAAE,IAAI,CAAC,CAAA;AAYR,MAAME,SAOJ,GAAAC,oBAAA,CAAGC,kBAAA,CAIF,uEAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAIH,CAAC,CAAC,EAAAC,YAAA,EAAA,CAAA,CAAA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAI,SAASC,YAAYA,CAACC,EAAgB,EAAE;AACxC,EAAA,MAAMC,KAAK,GAAGD,EAAE,CAACE,aAAa,CAAA;EAC9B,IAAID,KAAK,YAAYE,WAAW,EAAE;IAC9BF,KAAK,EAAEG,KAAK,EAAE,CAAA;AAClB,GAAA;AACJ,CAAA;AACA,MAAMC,IAQJ,GAAAV,oBAAA,CAAGC,kBAAA,CAWF,+MAAA,EAAA;AAAAU,EAAAA,KAAA,EAAAA,OAAA;IAAAC,EAAA;AAAAR,IAAAA,YAAAA;AAAA,GAAA,CAAA;EAAAF,UAAA,EAAA,IAAA;AAIH,CAAC,CAAC,EAAAC,YAAA,EAAA,CAAA,CAAA;AACF,MAAMU,cAAc,GAAGC,QAAQ,CAQ5B,CAACC,QAAQ,EAAEC,EAAM,EAAE;AAAEC,EAAAA,MAAM,EAAEC,OAAO;AAAEC,EAAAA,cAAc,EAAEC,eAAAA;AAAgB,CAAC,KAAG;AACzE;AACA,EAAA,MAAMC,QAAQ,GAAGC,UAAU,CAACC,MAAM,CAAC,CAAA;AACnC,EAAA,MAAMC,eAAe,GAAGH,QAAQ,EAAEI,SAAS,CAACC,SAAS,CAAC;AAClDC,IAAAA,SAAS,EAAEZ,QAAAA;AACf,GAAC,CAAC,CAAA;EACFS,eAAe,EAAEf,KAAK,EAAE,CAAA;AACxB;EACA,SAASmB,gBAAgBA,CAACvB,EAAc,EAAE;AACtC,IAAA,IAAIa,OAAO,CAACW,OAAO,IAAIxB,EAAE,CAACyB,MAAM,IAAI,CAACf,QAAQ,CAACgB,QAAQ,CAAC1B,EAAE,CAACyB,MAAqB,CAAC,IAAI,CAACV,eAAe,CAACS,OAAO,EAAEE,QAAQ,CAAC1B,EAAE,CAACyB,MAAqB,CAAC,EAAE;MAC9IZ,OAAO,CAACW,OAAO,GAAG,KAAK,CAAA;AAC3B,KAAA;AACJ,GAAA;AACA;EACA,SAASG,kBAAkBA,CAAC3B,EAAiB,EAAE;IAC3C,IAAIa,OAAO,CAACW,OAAO,IAAIxB,EAAE,CAAC4B,GAAG,KAAK,QAAQ,EAAE;MACxCf,OAAO,CAACW,OAAO,GAAG,KAAK,CAAA;AAC3B,KAAA;AACJ,GAAA;AACAK,EAAAA,QAAQ,CAACC,gBAAgB,CAAC,OAAO,EAAEP,gBAAgB,CAAC,CAAA;AACpDM,EAAAA,QAAQ,CAACC,gBAAgB,CAAC,SAAS,EAAEH,kBAAkB,CAAC,CAAA;AACxD,EAAA,OAAO,MAAI;AACPE,IAAAA,QAAQ,CAACE,mBAAmB,CAAC,OAAO,EAAER,gBAAgB,CAAC,CAAA;AACvDM,IAAAA,QAAQ,CAACE,mBAAmB,CAAC,SAAS,EAAEJ,kBAAkB,CAAC,CAAA;GAC9D,CAAA;AACL,CAAC,CAAC,CAAA;AACF,MAAMK,OAcJ,GAAArC,oBAAA,CAAGC,kBAAA,CAcF,qVAAA,EAAA;AAAAU,EAAAA,KAAA,EAAAA,OAAA;IAAAtB,sBAAA;IAAAwB,cAAA;IAAAD,EAAA;IAAA0B,IAAA;IAAA5B,IAAA;AAAAX,IAAAA,SAAAA;AAAA,GAAA,CAAA;EAAAG,UAAA,EAAA,IAAA;AAIH,CAAC,CAAC,EAAAC,YAAA,EAAA,CAAA,CAAA;AACF,MAAMoC,cAAc,GAAGzB,QAAQ,CAO5B,CAACC,QAAQ,EAAEC,EAAM,EAAE;AAAEG,EAAAA,cAAc,EAAEC,eAAAA;AAAgB,CAAC,KAAG;EACxDA,eAAe,CAACS,OAAO,GAAGd,QAAQ,CAAA;AACtC,CAAC,CAAC,CAAA;AACF,MAAMyB,OAWJ,GAAAxC,oBAAA,CAAGC,kBAAA,CAcF,6UAAA,EAAA;AAAAU,EAAAA,KAAA,EAAAA,OAAA;IAAAb,sBAAA;IAAAyC,cAAA;AAAA3B,IAAAA,EAAAA;AAAA,GAAA,CAAA;EAAAV,UAAA,EAAA,IAAA;AAIH,CAAC,CAAC,EAAAC,YAAA,EAAA,CAAA,CAAA;AACF,MAAMsC,MAAM,GAAGA,MAAIC,IAAI,CAAU,KAAK,CAAC,CAAA;AACvC,MAAMC,cAAc,GAAGA,MAAID,IAAI,EAAe,CAAA;AACvC,MAAME,IAAI,SAASC,SAAS,CAAY;AAC3CC,EAAAA,SAAS,GAAGC,OAAO,CAAC,IAAI,CAAC,CAAA;AACzB,EAAA;IACI/C,oBAAA,CAAAC,kBAAA,CA8BH,ylBAAA,EAAA;AAAAU,MAAAA,KAAA,EAAAA,OAAA;QAAA8B,MAAA;QAAAE,cAAA;QAAAK,OAAA;QAAAV,IAAA;QAAAE,OAAA;AAAAH,QAAAA,OAAAA;AAAA,OAAA,CAAA;MAAAnC,UAAA,EAAA,IAAA;KAKI,CAAC,EAJa,IAAI,CAAA,CAAA;AAKvB,GAAA;AACJ;;;;"}
|
|
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,8 +1,8 @@
|
|
|
1
1
|
import { assert } from '@ember/debug';
|
|
2
|
+
import { on } from '@ember/modifier';
|
|
2
3
|
import { precompileTemplate } from '@ember/template-compilation';
|
|
3
4
|
import { setComponentTemplate } from '@ember/component';
|
|
4
5
|
import templateOnly from '@ember/component/template-only';
|
|
5
|
-
import { on } from '@ember/modifier';
|
|
6
6
|
|
|
7
7
|
const reset = event1 => {
|
|
8
8
|
assert('[BUG]: reset called without an event.target', event1.target instanceof HTMLElement);
|
|
@@ -14,11 +14,11 @@ const Submit = setComponentTemplate(precompileTemplate("\n <button type=\"submi
|
|
|
14
14
|
strictMode: true
|
|
15
15
|
}), templateOnly());
|
|
16
16
|
const Reset = setComponentTemplate(precompileTemplate("\n <button type=\"button\" {{on \"click\" reset}} ...attributes>{{yield}}</button>\n", {
|
|
17
|
+
strictMode: true,
|
|
17
18
|
scope: () => ({
|
|
18
19
|
on,
|
|
19
20
|
reset
|
|
20
|
-
})
|
|
21
|
-
strictMode: true
|
|
21
|
+
})
|
|
22
22
|
}), templateOnly());
|
|
23
23
|
|
|
24
24
|
export { Reset, Submit };
|
|
@@ -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"],"names":["reset","event1","assert","target","HTMLElement","form1","closest","HTMLFormElement","Submit","
|
|
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,9 +1,9 @@
|
|
|
1
1
|
import Component from '@glimmer/component';
|
|
2
2
|
import { warn } from '@ember/debug';
|
|
3
3
|
import { isDestroyed, isDestroying } from '@ember/destroyable';
|
|
4
|
+
import { on } from '@ember/modifier';
|
|
4
5
|
import { buildWaiter } from '@ember/test-waiters';
|
|
5
6
|
import { selectAll, handlePaste, autoAdvance, handleNavigation, getCollectiveValue } from './utils.js';
|
|
6
|
-
import { on } from '@ember/modifier';
|
|
7
7
|
import { precompileTemplate } from '@ember/template-compilation';
|
|
8
8
|
import { setComponentTemplate } from '@ember/component';
|
|
9
9
|
import templateOnly from '@ember/component/template-only';
|
|
@@ -17,6 +17,7 @@ function labelFor(inputIndex1, labelFn1) {
|
|
|
17
17
|
}
|
|
18
18
|
let waiter = buildWaiter('ember-primitives:OTPInput:handleChange');
|
|
19
19
|
const Fields = setComponentTemplate(precompileTemplate("\n {{#each @fields as |_field i|}}\n <label>\n <span class=\"ember-primitives__sr-only\">{{labelFor i @labelFn}}</span>\n <input name=\"code{{i}}\" type=\"text\" inputmode=\"numeric\" autocomplete=\"off\" ...attributes {{on \"click\" selectAll}} {{on \"paste\" handlePaste}} {{on \"input\" autoAdvance}} {{on \"input\" @handleChange}} {{on \"keydown\" handleNavigation}} />\n </label>\n {{/each}}\n", {
|
|
20
|
+
strictMode: true,
|
|
20
21
|
scope: () => ({
|
|
21
22
|
labelFor,
|
|
22
23
|
on,
|
|
@@ -24,8 +25,7 @@ const Fields = setComponentTemplate(precompileTemplate("\n {{#each @fields as |
|
|
|
24
25
|
handlePaste,
|
|
25
26
|
autoAdvance,
|
|
26
27
|
handleNavigation
|
|
27
|
-
})
|
|
28
|
-
strictMode: true
|
|
28
|
+
})
|
|
29
29
|
}), templateOnly());
|
|
30
30
|
class OTPInput extends Component {
|
|
31
31
|
/**
|
|
@@ -77,10 +77,10 @@ class OTPInput extends Component {
|
|
|
77
77
|
}
|
|
78
78
|
static {
|
|
79
79
|
setComponentTemplate(precompileTemplate("\n <fieldset ...attributes>\n {{#let (component Fields fields=this.fields handleChange=this.handleChange labelFn=@labelFn) as |CurriedFields|}}\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 ", {
|
|
80
|
+
strictMode: true,
|
|
80
81
|
scope: () => ({
|
|
81
82
|
Fields
|
|
82
|
-
})
|
|
83
|
-
strictMode: true
|
|
83
|
+
})
|
|
84
84
|
}), this);
|
|
85
85
|
}
|
|
86
86
|
}
|
|
@@ -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"],"names":["DEFAULT_LENGTH","labelFor","inputIndex1","labelFn1","waiter","buildWaiter","Fields","setComponentTemplate","precompileTemplate","scope","on","selectAll","handlePaste","autoAdvance","handleNavigation","strictMode","templateOnly","OTPInput","Component","handleChange","event1","args","onChange","beginAsync","cancelAnimationFrame","requestAnimationFrame","endAsync","isDestroyed","isDestroying","value1","getCollectiveValue","target","length","undefined","warn","id","code","complete","fields","Array"],"mappings":";;;;;;;;;;AASA,MAAMA,cAAc,GAAG,CAAC,CAAA;AACxB,SAASC,QAAQA,CAACC,WAAmB,EAAEC,QAAiD,EAAE;AACtF,EAAA,IAAIA,QAAQ,EAAE;IACV,OAAOA,QAAQ,CAACD,WAAW,CAAC,CAAA;AAChC,GAAA;AACA,EAAA,OAAQ,CAA6BA,2BAAAA,EAAAA,WAAW,GAAG,CAAE,CAAC,CAAA,CAAA;AAC1D,CAAA;AACA,IAAIE,MAAM,GAAGC,WAAW,CAAC,wCAAwC,CAAC,CAAA;AAClE,MAAMC,MASJ,GAAAC,oBAAA,CAAGC,kBAAA,CAkBF,kaAAA,EAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAR,QAAA;IAAAS,EAAA;IAAAC,SAAA;IAAAC,WAAA;IAAAC,WAAA;AAAAC,IAAAA,gBAAAA;AAAA,GAAA,CAAA;EAAAC,UAAA,EAAA,IAAA;AAIH,CAAC,CAAC,EAAAC,YAAA,EAAA,CAAA,CAAA;AACK,MAAMC,QAAQ,SAASC,SAAS,CAwCpC;AACC;AACJ;AACA;AACA;AACA;EAAMC,YAAY,GAAIC,MAAa,IAAG;AAC9B,IAAA,IAAI,CAAC,IAAI,CAACC,IAAI,CAACC,QAAQ,EAAE,OAAA;AACzB,IAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;MACd,IAAI,CAAC,MAAM,GAAGlB,MAAM,CAACmB,UAAU,EAAE,CAAA;AACrC,KAAA;AACA,IAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACbC,MAAAA,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AACrC,KAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAA,IAAI,CAAC,MAAM,GAAGC,qBAAqB,CAAC,MAAI;AACpCrB,MAAAA,MAAM,CAACsB,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;MAC5B,IAAIC,WAAW,CAAC,IAAI,CAAC,IAAIC,YAAY,CAAC,IAAI,CAAC,EAAE,OAAA;AAC7C,MAAA,IAAI,CAAC,IAAI,CAACP,IAAI,CAACC,QAAQ,EAAE,OAAA;MACzB,IAAIO,MAAM,GAAGC,kBAAkB,CAACV,MAAM,CAACW,MAAM,EAAE,IAAI,CAACC,MAAM,CAAC,CAAA;MAC3D,IAAIH,MAAM,KAAKI,SAAS,EAAE;QACtBC,IAAI,CAAE,+EAA8E,EAAE;AAClFC,UAAAA,EAAE,EAAE,yCAAA;AACR,SAAC,CAAC,CAAA;AACF,QAAA,OAAA;AACJ,OAAA;AACA,MAAA,IAAI,CAACd,IAAI,CAACC,QAAQ,CAAC;AACfc,QAAAA,IAAI,EAAEP,MAAM;AACZQ,QAAAA,QAAQ,EAAER,MAAM,CAACG,MAAM,KAAK,IAAI,CAACA,MAAAA;OACpC,EAAEZ,MAAM,CAAC,CAAA;AACd,KAAC,CAAC,CAAA;GACL,CAAA;AACD,EAAA,MAAM,CAAA;AACN,EAAA,MAAM,CAAA;EACN,IAAIY,MAAMA,GAAG;AACT,IAAA,OAAO,IAAI,CAACX,IAAI,CAACW,MAAM,IAAIhC,cAAc,CAAA;AAC7C,GAAA;EACA,IAAIsC,MAAMA,GAAG;AACT;AACA;AACA;AACA,IAAA,OAAO,IAAIC,KAAK,CAAC,IAAI,CAACP,MAAM,CAAC,CAAA;AACjC,GAAA;AACA,EAAA;IACIzB,oBAAA,CAAAC,kBAAA,CAmBH,gjBAAA,EAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;AAAAH,QAAAA,MAAAA;AAAA,OAAA,CAAA;MAAAS,UAAA,EAAA,IAAA;KAKI,CAAC,EAJa,IAAI,CAAA,CAAA;AAKvB,GAAA;AACJ;;;;"}
|
|
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;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,9 +1,9 @@
|
|
|
1
1
|
import { assert } from '@ember/debug';
|
|
2
|
-
import { buildWaiter } from '@ember/test-waiters';
|
|
3
|
-
import { on } from '@ember/modifier';
|
|
4
2
|
import { fn, hash } from '@ember/helper';
|
|
5
|
-
import {
|
|
3
|
+
import { on } from '@ember/modifier';
|
|
4
|
+
import { buildWaiter } from '@ember/test-waiters';
|
|
6
5
|
import { Submit, Reset } from './buttons.js';
|
|
6
|
+
import { OTPInput } from './input.js';
|
|
7
7
|
import { precompileTemplate } from '@ember/template-compilation';
|
|
8
8
|
import { setComponentTemplate } from '@ember/component';
|
|
9
9
|
import templateOnly from '@ember/component/template-only';
|
|
@@ -39,6 +39,7 @@ function handleChange(autoSubmit1, data1, event1) {
|
|
|
39
39
|
form1.requestSubmit();
|
|
40
40
|
}
|
|
41
41
|
const OTP = setComponentTemplate(precompileTemplate("\n <form {{on \"submit\" (fn handleFormSubmit @onSubmit)}} ...attributes>\n {{yield (hash Input=(component OTPInput length=@length onChange=(if @autoSubmit (fn handleChange @autoSubmit))) Submit=Submit Reset=Reset)}}\n </form>\n", {
|
|
42
|
+
strictMode: true,
|
|
42
43
|
scope: () => ({
|
|
43
44
|
on,
|
|
44
45
|
fn,
|
|
@@ -48,8 +49,7 @@ const OTP = setComponentTemplate(precompileTemplate("\n <form {{on \"submit\" (
|
|
|
48
49
|
handleChange,
|
|
49
50
|
Submit,
|
|
50
51
|
Reset
|
|
51
|
-
})
|
|
52
|
-
strictMode: true
|
|
52
|
+
})
|
|
53
53
|
}), templateOnly());
|
|
54
54
|
|
|
55
55
|
export { OTP };
|
|
@@ -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"],"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","setComponentTemplate","precompileTemplate","scope","on","fn","hash","OTPInput","Submit","Reset","strictMode","templateOnly"],"mappings":";;;;;;;;;;AASA,IAAIA,MAAM,GAAGC,WAAW,CAAC,8CAA8C,CAAC,CAAA;AACxE,MAAMC,gBAAgB,GAAGA,CAACC,OAEhB,EAAEC,MAAmB,KAAG;EAC9BA,MAAM,CAACC,cAAc,EAAE,CAAA;EACvBC,MAAM,CAAC,2EAA2E,EAAEF,MAAM,CAACG,aAAa,YAAYC,eAAe,CAAC,CAAA;EACpI,IAAIC,SAAS,GAAG,IAAIC,QAAQ,CAACN,MAAM,CAACG,aAAa,CAAC,CAAA;EAClD,IAAII,KAAK,GAAG,EAAE,CAAA;AACd,EAAA,KAAK,IAAI,CAACC,IAAI,EAAEC,MAAM,CAAC,IAAIJ,SAAS,CAACK,OAAO,EAAE,EAAC;AAC3C,IAAA,IAAIF,IAAI,CAACG,UAAU,CAAC,MAAM,CAAC,EAAE;AACzBJ,MAAAA,KAAK,IAAIE,MAAM,CAAA;AACnB,KAAA;AACJ,GAAA;AACAV,EAAAA,OAAO,CAAC;AACJa,IAAAA,IAAI,EAAEL,KAAAA;AACV,GAAC,CAAC,CAAA;AACN,CAAC,CAAA;AACD,SAASM,YAAYA,CAACC,WAAgC,EAAEC,KAGvD,EAAEf,MAAa,EAAE;EACd,IAAI,CAACc,WAAW,EAAE,OAAA;AAClB,EAAA,IAAI,CAACC,KAAK,CAACC,QAAQ,EAAE,OAAA;AACrBd,EAAAA,MAAM,CAAC,iDAAiD,EAAEF,MAAM,CAACiB,MAAM,YAAYC,WAAW,IAAIlB,MAAM,CAACiB,MAAM,YAAYE,UAAU,CAAC,CAAA;EACtI,MAAMC,KAAK,GAAGpB,MAAM,CAACiB,MAAM,CAACI,OAAO,CAAC,MAAM,CAAC,CAAA;AAC3CnB,EAAAA,MAAM,CAAC,mFAAmF,EAAEkB,KAAK,CAAC,CAAA;AAClG,EAAA,MAAME,MAAM,GAAG1B,MAAM,CAAC2B,UAAU,EAAE,CAAA;EAClC,IAAIC,SAAS,GAAGA,MAAI;AAChB5B,IAAAA,MAAM,CAAC6B,QAAQ,CAACH,MAAM,CAAC,CAAA;AACvBF,IAAAA,KAAK,CAACM,mBAAmB,CAAC,QAAQ,EAAEF,SAAS,CAAC,CAAA;GACjD,CAAA;AACDJ,EAAAA,KAAK,CAACO,gBAAgB,CAAC,QAAQ,EAAEH,SAAS,CAAC,CAAA;AAC3C;EACAJ,KAAK,CAACQ,aAAa,EAAE,CAAA;AACzB,CAAA;MACaC,GA0CX,GAAAC,oBAAA,CAAGC,kBAAA,CAYF,2OAAA,EAAA;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;EAAAC,UAAA,EAAA,IAAA;AAIH,CAAC,CAAC,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,16 +1,16 @@
|
|
|
1
|
+
import { hash } from '@ember/helper';
|
|
1
2
|
import { arrow } from '@floating-ui/dom';
|
|
3
|
+
import { element } from 'ember-element-helper';
|
|
2
4
|
import { modifier } from 'ember-modifier';
|
|
3
5
|
import { cell } from 'ember-resources';
|
|
4
|
-
import
|
|
6
|
+
import Velcro from '../floating-ui/component.js';
|
|
7
|
+
import '@ember/debug';
|
|
8
|
+
import '@ember/destroyable';
|
|
5
9
|
import { Portal } from './portal.js';
|
|
6
10
|
import { TARGETS } from './portal-targets.js';
|
|
7
11
|
import { precompileTemplate } from '@ember/template-compilation';
|
|
8
12
|
import { setComponentTemplate } from '@ember/component';
|
|
9
13
|
import templateOnly from '@ember/component/template-only';
|
|
10
|
-
import Velcro from '../floating-ui/component.js';
|
|
11
|
-
import '@ember/debug';
|
|
12
|
-
import '@ember/destroyable';
|
|
13
|
-
import { hash } from '@ember/helper';
|
|
14
14
|
|
|
15
15
|
function getElementTag(tagName1) {
|
|
16
16
|
return tagName1 || 'div';
|
|
@@ -20,13 +20,13 @@ function getElementTag(tagName1) {
|
|
|
20
20
|
* This is useful because the algorithm for finding the portal target isn't cheap.
|
|
21
21
|
*/
|
|
22
22
|
const Content = setComponentTemplate(precompileTemplate("\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", {
|
|
23
|
+
strictMode: true,
|
|
23
24
|
scope: () => ({
|
|
24
25
|
element,
|
|
25
26
|
getElementTag,
|
|
26
27
|
Portal,
|
|
27
28
|
TARGETS
|
|
28
|
-
})
|
|
29
|
-
strictMode: true
|
|
29
|
+
})
|
|
30
30
|
}), templateOnly());
|
|
31
31
|
const arrowSides = {
|
|
32
32
|
top: 'bottom',
|
|
@@ -83,6 +83,7 @@ function flipOptions(options1) {
|
|
|
83
83
|
};
|
|
84
84
|
}
|
|
85
85
|
const Popover = setComponentTemplate(precompileTemplate("\n {{#let (ArrowElement) as |arrowElement|}}\n <FloatingUI @placement={{@placement}} @strategy={{@strategy}} @middleware={{maybeAddArrow @middleware arrowElement.current}} @flipOptions={{flipOptions @flipOptions}} @shiftOptions={{@shiftOptions}} @offsetOptions={{@offsetOptions}} as |fui|>\n {{yield (hash hook=fui.hook setHook=fui.setHook Content=(component Content loop=fui.loop inline=@inline) data=fui.data arrow=(modifier attachArrow arrowElement=arrowElement data=fui.data))}}\n </FloatingUI>\n {{/let}}\n", {
|
|
86
|
+
strictMode: true,
|
|
86
87
|
scope: () => ({
|
|
87
88
|
ArrowElement,
|
|
88
89
|
FloatingUI: Velcro,
|
|
@@ -91,8 +92,7 @@ const Popover = setComponentTemplate(precompileTemplate("\n {{#let (ArrowElemen
|
|
|
91
92
|
hash,
|
|
92
93
|
Content,
|
|
93
94
|
attachArrow
|
|
94
|
-
})
|
|
95
|
-
strictMode: true
|
|
95
|
+
})
|
|
96
96
|
}), templateOnly());
|
|
97
97
|
|
|
98
98
|
export { Popover, Popover as default };
|
|
@@ -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 } 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, MiddlewareData } 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 data?: {\n middlewareData?: MiddlewareData;\n placement?: Placement;\n };\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 = modifier<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"],"names":["getElementTag","tagName1","Content","setComponentTemplate","precompileTemplate","scope","element","Portal","TARGETS","strictMode","templateOnly","arrowSides","top","right","bottom","left","attachArrow","modifier","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","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":";;;;;;;;;;;;;;AAwFA,SAASA,cAAcC,QAA2B,EAAA;AAChD,EAAA,OAAOA,QAAA,IAAW,KAAA,CAAA;AACpB,CAAA;AAEA;;;;AAIA,MAAMC,UAqBDC,oBAAAA,CAAAA,kBAAA,CAsBL,upBAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,OAAA;IAAAN,aAAA;IAAAO,MAAA;AAAAC,IAAAA,OAAAA;AAAA,GAAA,CAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA,CAAA,CAAA;AAaV,MAAMC,UAAA,GAAa;AACjBC,EAAAA,GAAA,EAAK,QAAA;AACLC,EAAAA,KAAA,EAAO,MAAA;AACPC,EAAAA,MAAA,EAAQ,KAAA;AACRC,EAAAA,IAAA,EAAM,OAAA;AACR,CAAA,CAAA;AAKA,MAAMC,WAAA,GAAcC,QAAA,CAAgC,CAACC,QAAA,EAASC,EAAA,EAAOC,MAAA,KAAA;AACnE,EAAA,IAAIF,QAAA,KAAYE,MAAA,CAAMC,YAAY,CAACC,OAAO,EAAE;AAC1C,IAAA,IAAI,CAACF,MAAA,CAAMG,IAAI,EAAE,OAAA;AACjB,IAAA,IAAI,CAACH,MAAA,CAAMG,IAAI,CAACC,cAAc,EAAE,OAAA;IAEhC,IAAI;AAAEC,MAAAA,KAAA,EAAAC,MAAAA;AAAK,KAAE,GAAGN,MAAA,CAAMG,IAAI,CAACC,cAAc,CAAA;IACzC,IAAI;AAAEG,MAAAA,SAAA,EAAAC,UAAAA;KAAW,GAAGR,MAAA,CAAMG,IAAI,CAAA;IAE9B,IAAI,CAACG,MAAA,EAAO,OAAA;IACZ,IAAI,CAACE,UAAA,EAAW,OAAA;IAEhB,IAAI;AAAEC,MAAAA,CAAA,EAAGC,OAAM;AAAEC,MAAAA,CAAA,EAAGC,OAAAA;AAAM,KAAE,GAAGN,MAAA,CAAA;IAC/B,IAAIO,UAAA,GAAaL,UAAA,CAAwBM,KAAK,CAAC,GAAA,CAAI,CAAC,CAAM,CAAA,CAAA;AAC1D,IAAA,IAAIC,WAAA,GAAaxB,UAAU,CAACsB,UAAA,CAAU,CAAA;IAEtCG,MAAA,CAAOC,MAAM,CAACjB,MAAA,CAAMC,YAAY,CAACC,OAAO,CAACgB,KAAK,EAAE;AAC9CvB,MAAAA,IAAA,EAAMe,OAAA,IAAU,OAAQ,CAAEA,EAAAA,OAAO,IAAG,GAAG,EAAA;AACvClB,MAAAA,GAAA,EAAKoB,OAAA,IAAU,OAAQ,CAAEA,EAAAA,OAAO,IAAG,GAAG,EAAA;AACtCnB,MAAAA,KAAA,EAAO,EAAA;AACPC,MAAAA,MAAA,EAAQ,EAAA;AACR,MAAA,CAACqB,WAAA,GAAa,MAAA;AAChB,KAAA,CAAA,CAAA;AAEA,IAAA,OAAA;AACF,GAAA;EAEA,CAAC,YAAA;IACC,MAAMI,OAAA,CAAQC,OAAO,EAAA,CAAA;AACrBpB,IAAAA,MAAA,CAAMC,YAAY,CAACoB,GAAG,CAACvB,QAAA,CAAA,CAAA;GACxB,GAAA,CAAA;AACH,CAAA,CAAA,CAAA;AAEA,MAAMwB,YAAsC,GAAqBA,MAAMC,IAAA,EAAK,CAAA;AAE5E,SAASC,aAAAA,CAAcC,WAAoC,EAAE3B,QAA4B,EAAA;AACvF,EAAA,IAAI4B,OAAA,GAAS,KAAKD,WAAA,IAAc,EAAE,EAAE,CAAA;AAEpC,EAAA,IAAI3B,QAAA,EAAS;AACX4B,IAAAA,OAAA,CAAOC,IAAI,CAACtB,KAAA,CAAM;AAAElB,MAAAA,OAAA,EAAAW,QAAAA;AAAQ,KAAA,CAAA,CAAA,CAAA;AAC9B,GAAA;AAEA,EAAA,OAAO4B,OAAA,CAAA;AACT,CAAA;AAEA,SAASE,YAAYC,QAAsD,EAAA;EACzE,OAAO;AACLC,IAAAA,cAAA,EAAgB,WAAe;IAC/B,GAAGD,QAAAA;AACL,GAAA,CAAA;AACF,CAAA;MAEaE,OAAa,GAAAC,oBAAA,CAAahD,kBAAA,CAsBvC,8gBAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAoC,YAAA;gBAAAW,MAAA;IAAAT,aAAA;IAAAI,WAAA;IAAAM,IAAA;IAAAnD,OAAA;AAAAa,IAAAA,WAAAA;AAAA,GAAA,CAAA;AAAU,CAAA,CAAA,EAAAN,YAAA,EAAA;;;;"}
|
|
@@ -27,10 +27,10 @@ function findNearestTarget(origin1, name1) {
|
|
|
27
27
|
return element1;
|
|
28
28
|
}
|
|
29
29
|
const PortalTargets = setComponentTemplate(precompileTemplate("\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", {
|
|
30
|
+
strictMode: true,
|
|
30
31
|
scope: () => ({
|
|
31
32
|
TARGETS
|
|
32
|
-
})
|
|
33
|
-
strictMode: true
|
|
33
|
+
})
|
|
34
34
|
}), templateOnly());
|
|
35
35
|
|
|
36
36
|
export { PortalTargets, TARGETS, PortalTargets as default, findNearestTarget };
|
|
@@ -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"],"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","
|
|
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,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;;;;"}
|
|
@@ -11,11 +11,11 @@ const anchor = modifier((element1, [to1, update1]) => {
|
|
|
11
11
|
});
|
|
12
12
|
const ElementValue = () => cell();
|
|
13
13
|
const Portal = setComponentTemplate(precompileTemplate("\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", {
|
|
14
|
+
strictMode: true,
|
|
14
15
|
scope: () => ({
|
|
15
16
|
ElementValue,
|
|
16
17
|
anchor
|
|
17
|
-
})
|
|
18
|
-
strictMode: true
|
|
18
|
+
})
|
|
19
19
|
}), templateOnly());
|
|
20
20
|
|
|
21
21
|
export { Portal, Portal as default };
|
|
@@ -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"],"names":["anchor","modifier","element1","to1","update1","found1","findNearestTarget","ElementValue","cell","Portal","setComponentTemplate","precompileTemplate","
|
|
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;;;;"}
|