ember-primitives 0.16.0 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/declarations/components/dialog.d.ts +4 -4
  2. package/declarations/components/form.d.ts +19 -1
  3. package/declarations/components/form.d.ts.map +1 -1
  4. package/declarations/components/link.d.ts +35 -13
  5. package/declarations/components/link.d.ts.map +1 -1
  6. package/declarations/components/one-time-password/input.d.ts +1 -1
  7. package/declarations/components/popover.d.ts +1 -7
  8. package/declarations/components/popover.d.ts.map +1 -1
  9. package/declarations/helpers/link.d.ts +34 -0
  10. package/declarations/helpers/link.d.ts.map +1 -0
  11. package/declarations/helpers.d.ts +1 -0
  12. package/declarations/helpers.d.ts.map +1 -1
  13. package/dist/_app_/helpers/link.js +1 -0
  14. package/dist/components/-private/typed-elements.js.map +1 -1
  15. package/dist/components/accordion/content.js +1 -1
  16. package/dist/components/accordion/header.js +1 -1
  17. package/dist/components/accordion/item.js +1 -1
  18. package/dist/components/accordion/trigger.js +1 -1
  19. package/dist/components/accordion.js +3 -3
  20. package/dist/components/accordion.js.map +1 -1
  21. package/dist/components/avatar.js +4 -4
  22. package/dist/components/avatar.js.map +1 -1
  23. package/dist/components/dialog.js +4 -4
  24. package/dist/components/dialog.js.map +1 -1
  25. package/dist/components/external-link.js.map +1 -1
  26. package/dist/components/form.js +49 -6
  27. package/dist/components/form.js.map +1 -1
  28. package/dist/components/layout/sticky-footer/index.js.map +1 -1
  29. package/dist/components/link.js +11 -77
  30. package/dist/components/link.js.map +1 -1
  31. package/dist/components/menu.js +6 -6
  32. package/dist/components/menu.js.map +1 -1
  33. package/dist/components/one-time-password/buttons.js +2 -2
  34. package/dist/components/one-time-password/buttons.js.map +1 -1
  35. package/dist/components/one-time-password/input.js +4 -4
  36. package/dist/components/one-time-password/input.js.map +1 -1
  37. package/dist/components/one-time-password/otp.js +2 -2
  38. package/dist/components/one-time-password/otp.js.map +1 -1
  39. package/dist/components/popover.js +4 -4
  40. package/dist/components/popover.js.map +1 -1
  41. package/dist/components/portal-targets.js +2 -2
  42. package/dist/components/portal-targets.js.map +1 -1
  43. package/dist/components/portal.js +2 -2
  44. package/dist/components/portal.js.map +1 -1
  45. package/dist/components/progress.js +4 -4
  46. package/dist/components/progress.js.map +1 -1
  47. package/dist/components/scroller.js +2 -2
  48. package/dist/components/scroller.js.map +1 -1
  49. package/dist/components/shadowed.js +4 -4
  50. package/dist/components/shadowed.js.map +1 -1
  51. package/dist/components/switch.js +4 -4
  52. package/dist/components/switch.js.map +1 -1
  53. package/dist/components/toggle-group.js +6 -6
  54. package/dist/components/toggle-group.js.map +1 -1
  55. package/dist/components/toggle.js +2 -2
  56. package/dist/components/toggle.js.map +1 -1
  57. package/dist/floating-ui/component.js +2 -2
  58. package/dist/floating-ui/component.js.map +1 -1
  59. package/dist/helpers/link.js +79 -0
  60. package/dist/helpers/link.js.map +1 -0
  61. package/dist/helpers.js +1 -0
  62. package/dist/helpers.js.map +1 -1
  63. package/dist/index.js +1 -0
  64. package/dist/index.js.map +1 -1
  65. package/dist/{item-kSSfp2r5.js → item-DmpElnSZ.js} +9 -9
  66. package/dist/item-DmpElnSZ.js.map +1 -0
  67. package/package.json +18 -17
  68. package/dist/item-kSSfp2r5.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"external-link.js","sources":["../../src/components/external-link.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport type { TOC } from '@ember/component/template-only';\nexport const ExternalLink: TOC<{\n Element: HTMLAnchorElement;\n Blocks: {\n default: [];\n };\n}> = template(`\n <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"##missing##\" ...attributes>\n {{yield}}\n </a>\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nexport default ExternalLink;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2VtYmVyLXByaW1pdGl2ZXMvZW1iZXItcHJpbWl0aXZlcy9lbWJlci1wcmltaXRpdmVzL3NyYy9jb21wb25lbnRzL2V4dGVybmFsLWxpbmsuZ3RzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgVE9DIH0gZnJvbSAnQGVtYmVyL2NvbXBvbmVudC90ZW1wbGF0ZS1vbmx5JztcblxuZXhwb3J0IGNvbnN0IEV4dGVybmFsTGluazogVE9DPHtcbiAgRWxlbWVudDogSFRNTEFuY2hvckVsZW1lbnQ7XG4gIEJsb2Nrczoge1xuICAgIGRlZmF1bHQ6IFtdO1xuICB9O1xufT4gPSA8dGVtcGxhdGU-XG4gIDxhIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vcmVmZXJyZXIgbm9vcGVuZXJcIiBocmVmPVwiIyNtaXNzaW5nIyNcIiAuLi5hdHRyaWJ1dGVzPlxuICAgIHt7eWllbGR9fVxuICA8L2E-XG48L3RlbXBsYXRlPjtcblxuZXhwb3J0IGRlZmF1bHQgRXh0ZXJuYWxMaW5rO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxjQUFjLEdBQUcsUUFBUSxpQ0FBaUM7QUFFMUQsT0FBTyxNQUFNLGNBQWM7SUFDekIsU0FBUztJQUNUO1FBQ0U7O0tBRUMsU0FBVSxDQUFBOzs7O0FBSWYsQ0FBQSxFQUFBO0lBQUE7UUFBQSxPQUFBLEtBQUEsU0FBQSxDQUFBLEVBQVc7SUFBRDtBQUFBLEdBQUU7QUFFWixlQUFlLGFBQWEifQ"],"names":["ExternalLink","precompileTemplate","strictMode","templateOnly"],"mappings":";;;;AAEaA,MAAAA,eAKRC,oBAAAA,CAAAA,kBAAA,CAIL,mHAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
1
+ {"version":3,"file":"external-link.js","sources":["../../src/components/external-link.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport type { TOC } from '@ember/component/template-only';\nexport const ExternalLink: TOC<{\n Element: HTMLAnchorElement;\n Blocks: {\n default: [];\n };\n}> = template(`\n <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"##missing##\" ...attributes>\n {{yield}}\n </a>\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nexport default ExternalLink;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL252cC9EZXZlbG9wbWVudC9OdWxsVm94UG9wdWxpL2VtYmVyLXByaW1pdGl2ZXMvZW1iZXItcHJpbWl0aXZlcy9zcmMvY29tcG9uZW50cy9leHRlcm5hbC1saW5rLmd0cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFRPQyB9IGZyb20gJ0BlbWJlci9jb21wb25lbnQvdGVtcGxhdGUtb25seSc7XG5cbmV4cG9ydCBjb25zdCBFeHRlcm5hbExpbms6IFRPQzx7XG4gIEVsZW1lbnQ6IEhUTUxBbmNob3JFbGVtZW50O1xuICBCbG9ja3M6IHtcbiAgICBkZWZhdWx0OiBbXTtcbiAgfTtcbn0-ID0gPHRlbXBsYXRlPlxuICA8YSB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub3JlZmVycmVyIG5vb3BlbmVyXCIgaHJlZj1cIiMjbWlzc2luZyMjXCIgLi4uYXR0cmlidXRlcz5cbiAgICB7e3lpZWxkfX1cbiAgPC9hPlxuPC90ZW1wbGF0ZT47XG5cbmV4cG9ydCBkZWZhdWx0IEV4dGVybmFsTGluaztcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsY0FBYyxHQUFHLFFBQVEsaUNBQWlDO0FBRTFELE9BQU8sTUFBTSxjQUFjO0lBQ3pCLFNBQVM7SUFDVDtRQUNFOztLQUVDLFNBQVUsQ0FBQTs7OztBQUlmLENBQUEsRUFBQTtJQUFBO1FBQUEsT0FBQSxLQUFBLFNBQUEsQ0FBQSxFQUFXO0lBQUQ7QUFBQSxHQUFFO0FBRVosZUFBZSxhQUFhIn0"],"names":["ExternalLink","precompileTemplate","strictMode","templateOnly"],"mappings":";;;;AAEaA,MAAAA,eAKRC,oBAAAA,CAAAA,kBAAA,CAIL,mHAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
@@ -5,10 +5,53 @@ import { precompileTemplate } from '@ember/template-compilation';
5
5
  import { setComponentTemplate } from '@ember/component';
6
6
  import templateOnly from '@ember/component/template-only';
7
7
 
8
- const handleInput = (onChange1, event1, eventType1 = 'input') => {
9
- assert('An unexpected event was passed to handleInput in <Form>', 'currentTarget' in event1 && event1.currentTarget instanceof HTMLFormElement);
10
- let formData1 = new FormData(event1.currentTarget);
8
+ /**
9
+ * A utility function for extracting the FormData as an object
10
+ *
11
+ */
12
+ function dataFromEvent(
13
+ /**
14
+ * The submit event from the event listener on the form.
15
+ * The currentTarget must be a `<form>`
16
+ *
17
+ *
18
+ * Each input within your `<form>` should have a `name` attribute.
19
+ * (or else the `<form>` element doesn't know what inputs are relevant)
20
+ */
21
+ event1) {
22
+ assert('An unexpected event was passed to formDataFrom in <Form>', 'currentTarget' in event1 && event1.currentTarget instanceof HTMLFormElement);
23
+ let form1 = event1.currentTarget;
24
+ let formData1 = new FormData(form1);
11
25
  let data1 = Object.fromEntries(formData1.entries());
26
+ // Gather fields from the form, and set any missing
27
+ // values to undefined.
28
+ let fields1 = form1.querySelectorAll('input,select');
29
+ for (let field1 of fields1) {
30
+ let name1 = field1.getAttribute('name');
31
+ // The field is probably invalid
32
+ if (!name1) continue;
33
+ let hasSubmitted1 = (name1 in data1);
34
+ if (!hasSubmitted1) data1[name1] = '';
35
+ // If the field is a `select`, we need to better
36
+ // handle the value, since only the most recently
37
+ // clicked will beb available
38
+ if (field1 instanceof HTMLSelectElement) {
39
+ if (field1.hasAttribute('multiple')) {
40
+ let options1 = field1.querySelectorAll('option');
41
+ let values1 = [];
42
+ for (let option1 of options1) {
43
+ if (option1.selected) {
44
+ values1.push(option1.value);
45
+ }
46
+ }
47
+ data1[field1.name] = values1;
48
+ }
49
+ }
50
+ }
51
+ return data1;
52
+ }
53
+ const handleInput = (onChange1, event1, eventType1 = 'input') => {
54
+ let data1 = dataFromEvent(event1);
12
55
  onChange1(data1, eventType1, event1);
13
56
  };
14
57
  const handleSubmit = (onChange1, event1) => {
@@ -16,14 +59,14 @@ const handleSubmit = (onChange1, event1) => {
16
59
  handleInput(onChange1, event1, 'submit');
17
60
  };
18
61
  const Form = setComponentTemplate(precompileTemplate("\n <form {{on \"input\" (fn handleInput @onChange)}} {{on \"submit\" (fn handleSubmit @onChange)}} ...attributes>\n {{yield}}\n </form>\n", {
62
+ strictMode: true,
19
63
  scope: () => ({
20
64
  on,
21
65
  fn,
22
66
  handleInput,
23
67
  handleSubmit
24
- }),
25
- strictMode: true
68
+ })
26
69
  }), templateOnly());
27
70
 
28
- export { Form, Form as default };
71
+ export { Form, dataFromEvent, Form as default };
29
72
  //# sourceMappingURL=form.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"form.js","sources":["../../src/components/form.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport { assert } from '@ember/debug';\nimport { fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport type { TOC } from '@ember/component/template-only';\ntype FormDataEntryValue = NonNullable<ReturnType<FormData['get']>>;\ntype Data = {\n [key: string]: FormDataEntryValue;\n};\nconst handleInput = (onChange1: (data: Data, eventType: 'input' | 'submit', event: Event) => void, event1: Event | SubmitEvent, eventType1: 'input' | 'submit' = 'input')=>{\n assert('An unexpected event was passed to handleInput in <Form>', 'currentTarget' in event1 && event1.currentTarget instanceof HTMLFormElement);\n let formData1 = new FormData(event1.currentTarget);\n let data1 = Object.fromEntries(formData1.entries());\n onChange1(data1, eventType1, event1);\n};\nconst handleSubmit = (onChange1: (data: Data, eventType: 'input' | 'submit', event: Event | SubmitEvent) => void, event1: SubmitEvent)=>{\n event1.preventDefault();\n handleInput(onChange1, event1, 'submit');\n};\nexport interface Signature {\n Element: HTMLFormElement;\n Args: {\n /**\n * Any time the value of any field is changed this function will be called.\n */ onChange: (/**\n * The data from the form as an Object of `{ [field name] => value }` pairs.\n * This is generated from the native [FormData](https://developer.mozilla.org/en-US/docs/Web/API/FormData)\n *\n * Additional fields/inputs/controls can be added to this data by specifying a\n * \"name\" attribute.\n */ data: Data, /**\n * Indicates whether the `onChange` function was called from the `input` or `submit` event handlers.\n */ eventType: 'input' | 'submit', /**\n * The raw event, if needed.\n */ event: Event | SubmitEvent) => void;\n };\n Blocks: {\n /**\n * The main content for the form. This is where inputs / fields / controls would go.\n * Within the `<form>` content, `<button type=\"submit\">` will submit the form, which\n * triggers the `@onChange` event.\n */ default: [];\n };\n}\nexport const Form: TOC<Signature> = template(`\n <form\n {{on \"input\" (fn handleInput @onChange)}}\n {{on \"submit\" (fn handleSubmit @onChange)}}\n ...attributes\n >\n {{yield}}\n </form>\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nexport default Form;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2VtYmVyLXByaW1pdGl2ZXMvZW1iZXItcHJpbWl0aXZlcy9lbWJlci1wcmltaXRpdmVzL3NyYy9jb21wb25lbnRzL2Zvcm0uZ3RzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFzc2VydCB9IGZyb20gJ0BlbWJlci9kZWJ1Zyc7XG5pbXBvcnQgeyBmbiB9IGZyb20gJ0BlbWJlci9oZWxwZXInO1xuaW1wb3J0IHsgb24gfSBmcm9tICdAZW1iZXIvbW9kaWZpZXInO1xuXG5pbXBvcnQgdHlwZSB7IFRPQyB9IGZyb20gJ0BlbWJlci9jb21wb25lbnQvdGVtcGxhdGUtb25seSc7XG5cbnR5cGUgRm9ybURhdGFFbnRyeVZhbHVlID0gTm9uTnVsbGFibGU8UmV0dXJuVHlwZTxGb3JtRGF0YVsnZ2V0J10-PjtcbnR5cGUgRGF0YSA9IHsgW2tleTogc3RyaW5nXTogRm9ybURhdGFFbnRyeVZhbHVlIH07XG5cbmNvbnN0IGhhbmRsZUlucHV0ID0gKFxuICBvbkNoYW5nZTogKGRhdGE6IERhdGEsIGV2ZW50VHlwZTogJ2lucHV0JyB8ICdzdWJtaXQnLCBldmVudDogRXZlbnQpID0-IHZvaWQsXG4gIGV2ZW50OiBFdmVudCB8IFN1Ym1pdEV2ZW50LFxuICBldmVudFR5cGU6ICdpbnB1dCcgfCAnc3VibWl0JyA9ICdpbnB1dCdcbikgPT4ge1xuICBhc3NlcnQoXG4gICAgJ0FuIHVuZXhwZWN0ZWQgZXZlbnQgd2FzIHBhc3NlZCB0byBoYW5kbGVJbnB1dCBpbiA8Rm9ybT4nLFxuICAgICdjdXJyZW50VGFyZ2V0JyBpbiBldmVudCAmJiBldmVudC5jdXJyZW50VGFyZ2V0IGluc3RhbmNlb2YgSFRNTEZvcm1FbGVtZW50XG4gICk7XG5cbiAgbGV0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKGV2ZW50LmN1cnJlbnRUYXJnZXQpO1xuICBsZXQgZGF0YSA9IE9iamVjdC5mcm9tRW50cmllcyhmb3JtRGF0YS5lbnRyaWVzKCkpO1xuXG4gIG9uQ2hhbmdlKGRhdGEsIGV2ZW50VHlwZSwgZXZlbnQpO1xufTtcblxuY29uc3QgaGFuZGxlU3VibWl0ID0gKFxuICBvbkNoYW5nZTogKGRhdGE6IERhdGEsIGV2ZW50VHlwZTogJ2lucHV0JyB8ICdzdWJtaXQnLCBldmVudDogRXZlbnQgfCBTdWJtaXRFdmVudCkgPT4gdm9pZCxcbiAgZXZlbnQ6IFN1Ym1pdEV2ZW50XG4pID0-IHtcbiAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgaGFuZGxlSW5wdXQob25DaGFuZ2UsIGV2ZW50LCAnc3VibWl0Jyk7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFNpZ25hdHVyZSB7XG4gIEVsZW1lbnQ6IEhUTUxGb3JtRWxlbWVudDtcbiAgQXJnczoge1xuICAgIC8qKlxuICAgICAqICBBbnkgdGltZSB0aGUgdmFsdWUgb2YgYW55IGZpZWxkIGlzIGNoYW5nZWQgdGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZC5cbiAgICAgKi9cbiAgICBvbkNoYW5nZTogKFxuICAgICAgLyoqXG4gICAgICAgKiBUaGUgZGF0YSBmcm9tIHRoZSBmb3JtIGFzIGFuIE9iamVjdCBvZiBgeyBbZmllbGQgbmFtZV0gPT4gdmFsdWUgfWAgcGFpcnMuXG4gICAgICAgKiBUaGlzIGlzIGdlbmVyYXRlZCBmcm9tIHRoZSBuYXRpdmUgW0Zvcm1EYXRhXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRm9ybURhdGEpXG4gICAgICAgKlxuICAgICAgICogQWRkaXRpb25hbCBmaWVsZHMvaW5wdXRzL2NvbnRyb2xzIGNhbiBiZSBhZGRlZCB0byB0aGlzIGRhdGEgYnkgc3BlY2lmeWluZyBhXG4gICAgICAgKiBcIm5hbWVcIiBhdHRyaWJ1dGUuXG4gICAgICAgKi9cbiAgICAgIGRhdGE6IERhdGEsXG4gICAgICAvKipcbiAgICAgICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBgb25DaGFuZ2VgIGZ1bmN0aW9uIHdhcyBjYWxsZWQgZnJvbSB0aGUgYGlucHV0YCBvciBgc3VibWl0YCBldmVudCBoYW5kbGVycy5cbiAgICAgICAqL1xuICAgICAgZXZlbnRUeXBlOiAnaW5wdXQnIHwgJ3N1Ym1pdCcsXG4gICAgICAvKipcbiAgICAgICAqIFRoZSByYXcgZXZlbnQsIGlmIG5lZWRlZC5cbiAgICAgICAqL1xuICAgICAgZXZlbnQ6IEV2ZW50IHwgU3VibWl0RXZlbnRcbiAgICApID0-IHZvaWQ7XG4gIH07XG4gIEJsb2Nrczoge1xuICAgIC8qKlxuICAgICAqIFRoZSBtYWluIGNvbnRlbnQgZm9yIHRoZSBmb3JtLiBUaGlzIGlzIHdoZXJlIGlucHV0cyAvIGZpZWxkcyAvIGNvbnRyb2xzIHdvdWxkIGdvLlxuICAgICAqIFdpdGhpbiB0aGUgYDxmb3JtPmAgY29udGVudCwgYDxidXR0b24gdHlwZT1cInN1Ym1pdFwiPmAgd2lsbCBzdWJtaXQgdGhlIGZvcm0sIHdoaWNoXG4gICAgICogdHJpZ2dlcnMgdGhlIGBAb25DaGFuZ2VgIGV2ZW50LlxuICAgICAqL1xuICAgIGRlZmF1bHQ6IFtdO1xuICB9O1xufVxuXG5leHBvcnQgY29uc3QgRm9ybTogVE9DPFNpZ25hdHVyZT4gPSA8dGVtcGxhdGU-XG4gIDxmb3JtXG4gICAge3tvbiBcImlucHV0XCIgKGZuIGhhbmRsZUlucHV0IEBvbkNoYW5nZSl9fVxuICAgIHt7b24gXCJzdWJtaXRcIiAoZm4gaGFuZGxlU3VibWl0IEBvbkNoYW5nZSl9fVxuICAgIC4uLmF0dHJpYnV0ZXNcbiAgPlxuICAgIHt7eWllbGR9fVxuICA8L2Zvcm0-XG48L3RlbXBsYXRlPjtcblxuZXhwb3J0IGRlZmF1bHQgRm9ybTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsU0FBUyxNQUFNLFFBQVEsZUFBZTtBQUN0QyxTQUFTLEVBQUUsUUFBUSxnQkFBZ0I7QUFDbkMsU0FBUyxFQUFFLFFBQVEsa0JBQWtCO0FBRXJDLGNBQWMsR0FBRyxRQUFRLGlDQUFpQztLQUVyRCxxQkFBcUIsWUFBWSxXQUFXLFNBQVM7S0FDckQ7S0FBVSxLQUFLLE1BQU0sR0FBRzs7QUFFN0IsTUFBTSxjQUFjLENBQ2xCLFlBQVcsTUFBTSxNQUFNLFdBQVcsVUFBVSxVQUFVLE9BQU8sVUFBVSxJQUFJLEVBQzNFLFFBQU8sUUFBUSxhQUNmLFlBQVcsVUFBVSxXQUFXLE9BQU87SUFFdkMsT0FDRSwyREFDQSxtQkFBbUIsVUFBUyxPQUFNLGFBQWEsWUFBWTtJQUc3RCxJQUFJLFlBQVcsSUFBSSxTQUFTLE9BQU0sYUFBYTtJQUMvQyxJQUFJLFFBQU8sT0FBTyxXQUFXLENBQUMsVUFBUyxPQUFPO0lBRTlDLFVBQVMsT0FBTSxZQUFXO0FBQzVCO0FBRUEsTUFBTSxlQUFlLENBQ25CLFlBQVcsTUFBTSxNQUFNLFdBQVcsVUFBVSxVQUFVLE9BQU8sUUFBUSxnQkFBZ0IsSUFBSSxFQUN6RixRQUFPO0lBRVAsT0FBTSxjQUFjO0lBQ3BCLFlBQVksV0FBVSxRQUFPO0FBQy9CO0FBRUEsaUJBQWlCO0lBQ2YsU0FBUztJQUNUO1FBQ0U7O0tBRUMsR0FDRCxXQUNFOzs7Ozs7T0FNQyxHQUNELE1BQU0sTUFDTjs7T0FFQyxHQUNELFdBQVcsVUFBVSxVQUNyQjs7T0FFQyxHQUNELE9BQU8sUUFBUSxnQkFDWixJQUFJOztJQUVYO1FBQ0U7Ozs7S0FJQyxHQUNEOzs7QUFJSixPQUFPLE1BQU0sTUFBTSxJQUFJLGFBQWEsU0FBVSxDQUFBOzs7Ozs7OztBQVE5QyxDQUFBLEVBQUE7SUFBQTtRQUFBLE9BQUEsS0FBQSxTQUFBLENBQUEsRUFBVztJQUFEO0FBQUEsR0FBRTtBQUVaLGVBQWUsS0FBSyJ9"],"names":["handleInput","onChange1","event1","eventType1","assert","currentTarget","HTMLFormElement","formData1","FormData","data1","Object","fromEntries","entries","handleSubmit","preventDefault","Form","setComponentTemplate","precompileTemplate","scope","on","fn","strictMode","templateOnly"],"mappings":";;;;;;;AASA,MAAMA,WAAA,GAAcA,CAClBC,SAA2E,EAC3EC,MAAe,EACfC,UAAqB,GAAW,OAAO,KAAA;EAEvCC,MAAA,CACE,2DACA,eAAmBF,IAAAA,MAAA,IAASA,MAAA,CAAMG,aAAa,YAAYC,eAAA,CAAA,CAAA;AAG7D,EAAA,IAAIC,SAAA,GAAW,IAAIC,QAAA,CAASN,MAAA,CAAMG,aAAa,CAAA,CAAA;EAC/C,IAAII,KAAA,GAAOC,MAAA,CAAOC,WAAW,CAACJ,SAAA,CAASK,OAAO,EAAA,CAAA,CAAA;AAE9CX,EAAAA,SAAA,CAASQ,KAAA,EAAMN,UAAA,EAAWD,MAAA,CAAA,CAAA;AAC5B,CAAA,CAAA;AAEA,MAAMW,YAAA,GAAeA,CACnBZ,SAAyF,EACzFC,MAAO,KAAA;AAEPA,EAAAA,MAAA,CAAMY,cAAc,EAAA,CAAA;AACpBd,EAAAA,WAAA,CAAYC,SAAA,EAAUC,MAAA,EAAO,QAAA,CAAA,CAAA;AAC/B,CAAA,CAAA;MAqCaa,IAAU,GAAAC,oBAAA,CAAaC,kBAAA,CAQpC,gJAAA,EAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,EAAA;IAAAC,EAAA;IAAApB,WAAA;AAAAa,IAAAA,YAAAA;AAAA,GAAA,CAAA;EAAAQ,UAAA,EAAA,IAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
1
+ {"version":3,"file":"form.js","sources":["../../src/components/form.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport { assert } from '@ember/debug';\nimport { fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport type { TOC } from '@ember/component/template-only';\ntype FormDataEntryValue = NonNullable<ReturnType<FormData['get']>>;\ntype Data = {\n [key: string]: FormDataEntryValue | string[];\n};\n/**\n * A utility function for extracting the FormData as an object\n *\n */ export function dataFromEvent(/**\n * The submit event from the event listener on the form.\n * The currentTarget must be a `<form>`\n *\n *\n * Each input within your `<form>` should have a `name` attribute.\n * (or else the `<form>` element doesn't know what inputs are relevant)\n */ event1: {\n currentTarget: EventTarget | null;\n}): {\n [name: string]: FormDataEntryValue | string[];\n} {\n assert('An unexpected event was passed to formDataFrom in <Form>', 'currentTarget' in event1 && event1.currentTarget instanceof HTMLFormElement);\n let form1 = event1.currentTarget;\n let formData1 = new FormData(form1);\n let data1: Data = Object.fromEntries(formData1.entries());\n // Gather fields from the form, and set any missing\n // values to undefined.\n let fields1 = form1.querySelectorAll('input,select');\n for (let field1 of fields1){\n let name1 = field1.getAttribute('name');\n // The field is probably invalid\n if (!name1) continue;\n let hasSubmitted1 = name1 in data1;\n if (!hasSubmitted1) data1[name1] = '';\n // If the field is a `select`, we need to better\n // handle the value, since only the most recently\n // clicked will beb available\n if (field1 instanceof HTMLSelectElement) {\n if (field1.hasAttribute('multiple')) {\n let options1 = field1.querySelectorAll('option');\n let values1 = [];\n for (let option1 of options1){\n if (option1.selected) {\n values1.push(option1.value);\n }\n }\n data1[field1.name] = values1;\n }\n }\n }\n return data1;\n}\nconst handleInput = (onChange1: (data: Data, eventType: 'input' | 'submit', event: Event) => void, event1: Event | SubmitEvent, eventType1: 'input' | 'submit' = 'input')=>{\n let data1 = dataFromEvent(event1);\n onChange1(data1, eventType1, event1);\n};\nconst handleSubmit = (onChange1: (data: Data, eventType: 'input' | 'submit', event: Event | SubmitEvent) => void, event1: SubmitEvent)=>{\n event1.preventDefault();\n handleInput(onChange1, event1, 'submit');\n};\nexport interface Signature {\n Element: HTMLFormElement;\n Args: {\n /**\n * Any time the value of any field is changed this function will be called.\n */ onChange: (/**\n * The data from the form as an Object of `{ [field name] => value }` pairs.\n * This is generated from the native [FormData](https://developer.mozilla.org/en-US/docs/Web/API/FormData)\n *\n * Additional fields/inputs/controls can be added to this data by specifying a\n * \"name\" attribute.\n */ data: Data, /**\n * Indicates whether the `onChange` function was called from the `input` or `submit` event handlers.\n */ eventType: 'input' | 'submit', /**\n * The raw event, if needed.\n */ event: Event | SubmitEvent) => void;\n };\n Blocks: {\n /**\n * The main content for the form. This is where inputs / fields / controls would go.\n * Within the `<form>` content, `<button type=\"submit\">` will submit the form, which\n * triggers the `@onChange` event.\n */ default: [];\n };\n}\nexport const Form: TOC<Signature> = template(`\n <form\n {{on \"input\" (fn handleInput @onChange)}}\n {{on \"submit\" (fn handleSubmit @onChange)}}\n ...attributes\n >\n {{yield}}\n </form>\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nexport default Form;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL252cC9EZXZlbG9wbWVudC9OdWxsVm94UG9wdWxpL2VtYmVyLXByaW1pdGl2ZXMvZW1iZXItcHJpbWl0aXZlcy9zcmMvY29tcG9uZW50cy9mb3JtLmd0cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhc3NlcnQgfSBmcm9tICdAZW1iZXIvZGVidWcnO1xuaW1wb3J0IHsgZm4gfSBmcm9tICdAZW1iZXIvaGVscGVyJztcbmltcG9ydCB7IG9uIH0gZnJvbSAnQGVtYmVyL21vZGlmaWVyJztcblxuaW1wb3J0IHR5cGUgeyBUT0MgfSBmcm9tICdAZW1iZXIvY29tcG9uZW50L3RlbXBsYXRlLW9ubHknO1xuXG50eXBlIEZvcm1EYXRhRW50cnlWYWx1ZSA9IE5vbk51bGxhYmxlPFJldHVyblR5cGU8Rm9ybURhdGFbJ2dldCddPj47XG50eXBlIERhdGEgPSB7IFtrZXk6IHN0cmluZ106IEZvcm1EYXRhRW50cnlWYWx1ZSB8IHN0cmluZ1tdIH07XG5cbi8qKlxuICogQSB1dGlsaXR5IGZ1bmN0aW9uIGZvciBleHRyYWN0aW5nIHRoZSBGb3JtRGF0YSBhcyBhbiBvYmplY3RcbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkYXRhRnJvbUV2ZW50KFxuICAvKipcbiAgICogVGhlIHN1Ym1pdCBldmVudCBmcm9tIHRoZSBldmVudCBsaXN0ZW5lciBvbiB0aGUgZm9ybS5cbiAgICogVGhlIGN1cnJlbnRUYXJnZXQgbXVzdCBiZSBhIGA8Zm9ybT5gXG4gICAqXG4gICAqXG4gICAqIEVhY2ggaW5wdXQgd2l0aGluIHlvdXIgYDxmb3JtPmAgc2hvdWxkIGhhdmUgYSBgbmFtZWAgYXR0cmlidXRlLlxuICAgKiAob3IgZWxzZSB0aGUgYDxmb3JtPmAgZWxlbWVudCBkb2Vzbid0IGtub3cgd2hhdCBpbnB1dHMgYXJlIHJlbGV2YW50KVxuICAgKi9cbiAgZXZlbnQ6IHsgY3VycmVudFRhcmdldDogRXZlbnRUYXJnZXQgfCBudWxsIH1cbik6IHtcbiAgW25hbWU6IHN0cmluZ106IEZvcm1EYXRhRW50cnlWYWx1ZSB8IHN0cmluZ1tdO1xufSB7XG4gIGFzc2VydChcbiAgICAnQW4gdW5leHBlY3RlZCBldmVudCB3YXMgcGFzc2VkIHRvIGZvcm1EYXRhRnJvbSBpbiA8Rm9ybT4nLFxuICAgICdjdXJyZW50VGFyZ2V0JyBpbiBldmVudCAmJiBldmVudC5jdXJyZW50VGFyZ2V0IGluc3RhbmNlb2YgSFRNTEZvcm1FbGVtZW50XG4gICk7XG5cbiAgbGV0IGZvcm0gPSBldmVudC5jdXJyZW50VGFyZ2V0O1xuICBsZXQgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoZm9ybSk7XG4gIGxldCBkYXRhOiBEYXRhID0gT2JqZWN0LmZyb21FbnRyaWVzKGZvcm1EYXRhLmVudHJpZXMoKSk7XG5cbiAgLy8gR2F0aGVyIGZpZWxkcyBmcm9tIHRoZSBmb3JtLCBhbmQgc2V0IGFueSBtaXNzaW5nXG4gIC8vIHZhbHVlcyB0byB1bmRlZmluZWQuXG4gIGxldCBmaWVsZHMgPSBmb3JtLnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0LHNlbGVjdCcpO1xuXG4gIGZvciAobGV0IGZpZWxkIG9mIGZpZWxkcykge1xuICAgIGxldCBuYW1lID0gZmllbGQuZ2V0QXR0cmlidXRlKCduYW1lJyk7XG5cbiAgICAvLyBUaGUgZmllbGQgaXMgcHJvYmFibHkgaW52YWxpZFxuICAgIGlmICghbmFtZSkgY29udGludWU7XG5cbiAgICBsZXQgaGFzU3VibWl0dGVkID0gbmFtZSBpbiBkYXRhO1xuXG4gICAgaWYgKCFoYXNTdWJtaXR0ZWQpIGRhdGFbbmFtZV0gPSAnJztcblxuICAgIC8vIElmIHRoZSBmaWVsZCBpcyBhIGBzZWxlY3RgLCB3ZSBuZWVkIHRvIGJldHRlclxuICAgIC8vIGhhbmRsZSB0aGUgdmFsdWUsIHNpbmNlIG9ubHkgdGhlIG1vc3QgcmVjZW50bHlcbiAgICAvLyBjbGlja2VkIHdpbGwgYmViIGF2YWlsYWJsZVxuICAgIGlmIChmaWVsZCBpbnN0YW5jZW9mIEhUTUxTZWxlY3RFbGVtZW50KSB7XG4gICAgICBpZiAoZmllbGQuaGFzQXR0cmlidXRlKCdtdWx0aXBsZScpKSB7XG4gICAgICAgIGxldCBvcHRpb25zID0gZmllbGQucXVlcnlTZWxlY3RvckFsbCgnb3B0aW9uJyk7XG4gICAgICAgIGxldCB2YWx1ZXMgPSBbXTtcblxuICAgICAgICBmb3IgKGxldCBvcHRpb24gb2Ygb3B0aW9ucykge1xuICAgICAgICAgIGlmIChvcHRpb24uc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHZhbHVlcy5wdXNoKG9wdGlvbi52YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZGF0YVtmaWVsZC5uYW1lXSA9IHZhbHVlcztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZGF0YTtcbn1cblxuY29uc3QgaGFuZGxlSW5wdXQgPSAoXG4gIG9uQ2hhbmdlOiAoZGF0YTogRGF0YSwgZXZlbnRUeXBlOiAnaW5wdXQnIHwgJ3N1Ym1pdCcsIGV2ZW50OiBFdmVudCkgPT4gdm9pZCxcbiAgZXZlbnQ6IEV2ZW50IHwgU3VibWl0RXZlbnQsXG4gIGV2ZW50VHlwZTogJ2lucHV0JyB8ICdzdWJtaXQnID0gJ2lucHV0J1xuKSA9PiB7XG4gIGxldCBkYXRhID0gZGF0YUZyb21FdmVudChldmVudCk7XG5cbiAgb25DaGFuZ2UoZGF0YSwgZXZlbnRUeXBlLCBldmVudCk7XG59O1xuXG5jb25zdCBoYW5kbGVTdWJtaXQgPSAoXG4gIG9uQ2hhbmdlOiAoZGF0YTogRGF0YSwgZXZlbnRUeXBlOiAnaW5wdXQnIHwgJ3N1Ym1pdCcsIGV2ZW50OiBFdmVudCB8IFN1Ym1pdEV2ZW50KSA9PiB2b2lkLFxuICBldmVudDogU3VibWl0RXZlbnRcbikgPT4ge1xuICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICBoYW5kbGVJbnB1dChvbkNoYW5nZSwgZXZlbnQsICdzdWJtaXQnKTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lnbmF0dXJlIHtcbiAgRWxlbWVudDogSFRNTEZvcm1FbGVtZW50O1xuICBBcmdzOiB7XG4gICAgLyoqXG4gICAgICogIEFueSB0aW1lIHRoZSB2YWx1ZSBvZiBhbnkgZmllbGQgaXMgY2hhbmdlZCB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkLlxuICAgICAqL1xuICAgIG9uQ2hhbmdlOiAoXG4gICAgICAvKipcbiAgICAgICAqIFRoZSBkYXRhIGZyb20gdGhlIGZvcm0gYXMgYW4gT2JqZWN0IG9mIGB7IFtmaWVsZCBuYW1lXSA9PiB2YWx1ZSB9YCBwYWlycy5cbiAgICAgICAqIFRoaXMgaXMgZ2VuZXJhdGVkIGZyb20gdGhlIG5hdGl2ZSBbRm9ybURhdGFdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9Gb3JtRGF0YSlcbiAgICAgICAqXG4gICAgICAgKiBBZGRpdGlvbmFsIGZpZWxkcy9pbnB1dHMvY29udHJvbHMgY2FuIGJlIGFkZGVkIHRvIHRoaXMgZGF0YSBieSBzcGVjaWZ5aW5nIGFcbiAgICAgICAqIFwibmFtZVwiIGF0dHJpYnV0ZS5cbiAgICAgICAqL1xuICAgICAgZGF0YTogRGF0YSxcbiAgICAgIC8qKlxuICAgICAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGBvbkNoYW5nZWAgZnVuY3Rpb24gd2FzIGNhbGxlZCBmcm9tIHRoZSBgaW5wdXRgIG9yIGBzdWJtaXRgIGV2ZW50IGhhbmRsZXJzLlxuICAgICAgICovXG4gICAgICBldmVudFR5cGU6ICdpbnB1dCcgfCAnc3VibWl0JyxcbiAgICAgIC8qKlxuICAgICAgICogVGhlIHJhdyBldmVudCwgaWYgbmVlZGVkLlxuICAgICAgICovXG4gICAgICBldmVudDogRXZlbnQgfCBTdWJtaXRFdmVudFxuICAgICkgPT4gdm9pZDtcbiAgfTtcbiAgQmxvY2tzOiB7XG4gICAgLyoqXG4gICAgICogVGhlIG1haW4gY29udGVudCBmb3IgdGhlIGZvcm0uIFRoaXMgaXMgd2hlcmUgaW5wdXRzIC8gZmllbGRzIC8gY29udHJvbHMgd291bGQgZ28uXG4gICAgICogV2l0aGluIHRoZSBgPGZvcm0-YCBjb250ZW50LCBgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCI-YCB3aWxsIHN1Ym1pdCB0aGUgZm9ybSwgd2hpY2hcbiAgICAgKiB0cmlnZ2VycyB0aGUgYEBvbkNoYW5nZWAgZXZlbnQuXG4gICAgICovXG4gICAgZGVmYXVsdDogW107XG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBGb3JtOiBUT0M8U2lnbmF0dXJlPiA9IDx0ZW1wbGF0ZT5cbiAgPGZvcm1cbiAgICB7e29uIFwiaW5wdXRcIiAoZm4gaGFuZGxlSW5wdXQgQG9uQ2hhbmdlKX19XG4gICAge3tvbiBcInN1Ym1pdFwiIChmbiBoYW5kbGVTdWJtaXQgQG9uQ2hhbmdlKX19XG4gICAgLi4uYXR0cmlidXRlc1xuICA-XG4gICAge3t5aWVsZH19XG4gIDwvZm9ybT5cbjwvdGVtcGxhdGU-O1xuXG5leHBvcnQgZGVmYXVsdCBGb3JtO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxTQUFTLE1BQU0sUUFBUSxlQUFlO0FBQ3RDLFNBQVMsRUFBRSxRQUFRLGdCQUFnQjtBQUNuQyxTQUFTLEVBQUUsUUFBUSxrQkFBa0I7QUFFckMsY0FBYyxHQUFHLFFBQVEsaUNBQWlDO0tBRXJELHFCQUFxQixZQUFZLFdBQVcsU0FBUztLQUNyRDtLQUFVLEtBQUssTUFBTSxHQUFHLHFCQUFxQixNQUFNOztBQUV4RDs7O0NBR0MsR0FDRCxPQUFPLFNBQVMsY0FDZDs7Ozs7OztHQU9DLEdBQ0Q7SUFBUyxlQUFlLGNBQWMsSUFBSTtDQUFFO0tBRTNDLE1BQU0sTUFBTSxHQUFHLHFCQUFxQixNQUFNOztJQUUzQyxPQUNFLDREQUNBLG1CQUFtQixVQUFTLE9BQU0sYUFBYSxZQUFZO0lBRzdELElBQUksUUFBTyxPQUFNLGFBQWE7SUFDOUIsSUFBSSxZQUFXLElBQUksU0FBUztJQUM1QixJQUFJLE9BQU0sT0FBTyxPQUFPLFdBQVcsQ0FBQyxVQUFTLE9BQU87SUFFcEQsbURBQW1EO0lBQ25ELHVCQUF1QjtJQUN2QixJQUFJLFVBQVMsTUFBSyxnQkFBZ0IsQ0FBQztJQUVuQyxLQUFLLElBQUksVUFBUyxRQUFRO1FBQ3hCLElBQUksUUFBTyxPQUFNLFlBQVksQ0FBQztRQUU5QixnQ0FBZ0M7UUFDaEMsSUFBSSxDQUFDLE9BQU07UUFFWCxJQUFJLGdCQUFlLFNBQVE7UUFFM0IsSUFBSSxDQUFDLGVBQWMsS0FBSSxDQUFDLE1BQUssR0FBRztRQUVoQyxnREFBZ0Q7UUFDaEQsaURBQWlEO1FBQ2pELDZCQUE2QjtRQUM3QixJQUFJLGtCQUFpQixtQkFBbUI7WUFDdEMsSUFBSSxPQUFNLFlBQVksQ0FBQyxhQUFhO2dCQUNsQyxJQUFJLFdBQVUsT0FBTSxnQkFBZ0IsQ0FBQztnQkFDckMsSUFBSSxVQUFTLEVBQUU7Z0JBRWYsS0FBSyxJQUFJLFdBQVUsU0FBUztvQkFDMUIsSUFBSSxRQUFPLFFBQVEsRUFBRTt3QkFDbkIsUUFBTyxJQUFJLENBQUMsUUFBTyxLQUFLO29CQUMxQjtnQkFDRjtnQkFFQSxLQUFJLENBQUMsT0FBTSxJQUFJLENBQUMsR0FBRztZQUNyQjtRQUNGO0lBQ0Y7SUFFQSxPQUFPO0FBQ1Q7QUFFQSxNQUFNLGNBQWMsQ0FDbEIsWUFBVyxNQUFNLE1BQU0sV0FBVyxVQUFVLFVBQVUsT0FBTyxVQUFVLElBQUksRUFDM0UsUUFBTyxRQUFRLGFBQ2YsWUFBVyxVQUFVLFdBQVcsT0FBTztJQUV2QyxJQUFJLFFBQU8sY0FBYztJQUV6QixVQUFTLE9BQU0sWUFBVztBQUM1QjtBQUVBLE1BQU0sZUFBZSxDQUNuQixZQUFXLE1BQU0sTUFBTSxXQUFXLFVBQVUsVUFBVSxPQUFPLFFBQVEsZ0JBQWdCLElBQUksRUFDekYsUUFBTztJQUVQLE9BQU0sY0FBYztJQUNwQixZQUFZLFdBQVUsUUFBTztBQUMvQjtBQUVBLGlCQUFpQjtJQUNmLFNBQVM7SUFDVDtRQUNFOztLQUVDLEdBQ0QsV0FDRTs7Ozs7O09BTUMsR0FDRCxNQUFNLE1BQ047O09BRUMsR0FDRCxXQUFXLFVBQVUsVUFDckI7O09BRUMsR0FDRCxPQUFPLFFBQVEsZ0JBQ1osSUFBSTs7SUFFWDtRQUNFOzs7O0tBSUMsR0FDRDs7O0FBSUosT0FBTyxNQUFNLE1BQU0sSUFBSSxhQUFhLFNBQVUsQ0FBQTs7Ozs7Ozs7QUFROUMsQ0FBQSxFQUFBO0lBQUE7UUFBQSxPQUFBLEtBQUEsU0FBQSxDQUFBLEVBQVc7SUFBRDtBQUFBLEdBQUU7QUFFWixlQUFlLEtBQUsifQ"],"names":["dataFromEvent","event1","assert","currentTarget","HTMLFormElement","form1","formData1","FormData","data1","Object","fromEntries","entries","fields1","querySelectorAll","field1","name1","getAttribute","hasSubmitted1","HTMLSelectElement","hasAttribute","options1","values1","option1","selected","push","value","name","handleInput","onChange1","eventType1","handleSubmit","preventDefault","Form","setComponentTemplate","precompileTemplate","strictMode","scope","on","fn","templateOnly"],"mappings":";;;;;;;AASA;;;;AAIO,SAASA,aAAAA;AACd;;;;;;;;AAQAC,MAA4C;EAI5CC,MAAA,CACE,4DACA,eAAmBD,IAAAA,MAAA,IAASA,MAAA,CAAME,aAAa,YAAYC,eAAA,CAAA,CAAA;AAG7D,EAAA,IAAIC,KAAA,GAAOJ,MAAA,CAAME,aAAa,CAAA;AAC9B,EAAA,IAAIG,SAAA,GAAW,IAAIC,QAAA,CAASF,KAAA,CAAA,CAAA;EAC5B,IAAIG,KAAM,GAAOC,MAAA,CAAOC,WAAW,CAACJ,SAAA,CAASK,OAAO,EAAA,CAAA,CAAA;AAEpD;AACA;AACA,EAAA,IAAIC,OAAA,GAASP,KAAA,CAAKQ,gBAAgB,CAAC,cAAA,CAAA,CAAA;AAEnC,EAAA,KAAK,IAAIC,MAAA,IAASF,OAAA,EAAQ;AACxB,IAAA,IAAIG,KAAA,GAAOD,MAAA,CAAME,YAAY,CAAC,MAAA,CAAA,CAAA;AAE9B;IACA,IAAI,CAACD,KAAA,EAAM,SAAA;AAEX,IAAA,IAAIE,aAAA,IAAeF,KAAA,IAAQP,KAAA,CAAA,CAAA;AAE3B,IAAA,IAAI,CAACS,aAAA,EAAcT,KAAI,CAACO,KAAA,CAAK,GAAG,EAAA,CAAA;AAEhC;AACA;AACA;IACA,IAAID,MAAA,YAAiBI,iBAAA,EAAmB;AACtC,MAAA,IAAIJ,MAAA,CAAMK,YAAY,CAAC,UAAa,CAAA,EAAA;AAClC,QAAA,IAAIC,QAAA,GAAUN,MAAA,CAAMD,gBAAgB,CAAC,QAAA,CAAA,CAAA;QACrC,IAAIQ,OAAA,GAAS,EAAE,CAAA;AAEf,QAAA,KAAK,IAAIC,OAAA,IAAUF,QAAA,EAAS;UAC1B,IAAIE,OAAA,CAAOC,QAAQ,EAAE;AACnBF,YAAAA,OAAA,CAAOG,IAAI,CAACF,OAAA,CAAOG,KAAK,CAAA,CAAA;AAC1B,WAAA;AACF,SAAA;AAEAjB,QAAAA,KAAI,CAACM,MAAA,CAAMY,IAAI,CAAC,GAAGL,OAAA,CAAA;AACrB,OAAA;AACF,KAAA;AACF,GAAA;AAEA,EAAA,OAAOb,KAAA,CAAA;AACT,CAAA;AAEA,MAAMmB,WAAA,GAAcA,CAClBC,SAA2E,EAC3E3B,MAAe,EACf4B,UAAqB,GAAW,OAAO,KAAA;AAEvC,EAAA,IAAIrB,KAAA,GAAOR,aAAA,CAAcC,MAAA,CAAA,CAAA;AAEzB2B,EAAAA,SAAA,CAASpB,KAAA,EAAMqB,UAAA,EAAW5B,MAAA,CAAA,CAAA;AAC5B,CAAA,CAAA;AAEA,MAAM6B,YAAA,GAAeA,CACnBF,SAAyF,EACzF3B,MAAO,KAAA;AAEPA,EAAAA,MAAA,CAAM8B,cAAc,EAAA,CAAA;AACpBJ,EAAAA,WAAA,CAAYC,SAAA,EAAU3B,MAAA,EAAO,QAAA,CAAA,CAAA;AAC/B,CAAA,CAAA;MAqCa+B,IAAU,GAAAC,oBAAA,CAAaC,kBAAA,CAQpC,gJAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,EAAA;IAAAC,EAAA;IAAAX,WAAA;AAAAG,IAAAA,YAAAA;AAAA,GAAA,CAAA;AAAU,CAAA,CAAA,EAAAS,YAAA,EAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/layout/sticky-footer/index.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport './index.css';\nimport type { TOC } from '@ember/component/template-only';\nexport const StickyFooter: TOC<{\n /**\n * The wrapper element of the whole layout.\n * Valid parents for this element must have either a set height,\n * or a set max-height.\n */ Element: HTMLDivElement;\n Blocks: {\n /**\n * This is the scrollable content, contained within a `<div>` element for positioning.\n * If this component is used as the main layout on a page,\n * the `<main>` element would be appropriate within here.\n */ content: [];\n /**\n * This is the footer content, contained within a `<div>` element for positioning.\n * A `<footer>` element would be appropriate within here.\n *\n * This element will be at the bottom of the page if the content does not overflow the containing element and this element will be at the bottom of the content if there is overflow.\n */ footer: [];\n };\n}> = template(`\n <div class=\"ember-primitives__sticky-footer__wrapper\" ...attributes>\n <div class=\"ember-primitives__sticky-footer__container\">\n <div class=\"ember-primitives__sticky-footer__content\">\n {{yield to=\"content\"}}\n </div>\n <div class=\"ember-primitives__sticky-footer__footer\">\n {{yield to=\"footer\"}}\n </div>\n </div>\n </div>\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nexport default StickyFooter;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2VtYmVyLXByaW1pdGl2ZXMvZW1iZXItcHJpbWl0aXZlcy9lbWJlci1wcmltaXRpdmVzL3NyYy9jb21wb25lbnRzL2xheW91dC9zdGlja3ktZm9vdGVyL2luZGV4Lmd0cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJy4vaW5kZXguY3NzJztcblxuaW1wb3J0IHR5cGUgeyBUT0MgfSBmcm9tICdAZW1iZXIvY29tcG9uZW50L3RlbXBsYXRlLW9ubHknO1xuXG5leHBvcnQgY29uc3QgU3RpY2t5Rm9vdGVyOiBUT0M8e1xuICAvKipcbiAgICogVGhlIHdyYXBwZXIgZWxlbWVudCBvZiB0aGUgd2hvbGUgbGF5b3V0LlxuICAgKiBWYWxpZCBwYXJlbnRzIGZvciB0aGlzIGVsZW1lbnQgbXVzdCBoYXZlIGVpdGhlciBhIHNldCBoZWlnaHQsXG4gICAqIG9yIGEgc2V0IG1heC1oZWlnaHQuXG4gICAqL1xuICBFbGVtZW50OiBIVE1MRGl2RWxlbWVudDtcbiAgQmxvY2tzOiB7XG4gICAgLyoqXG4gICAgICogVGhpcyBpcyB0aGUgc2Nyb2xsYWJsZSBjb250ZW50LCBjb250YWluZWQgd2l0aGluIGEgYDxkaXY-YCBlbGVtZW50IGZvciBwb3NpdGlvbmluZy5cbiAgICAgKiBJZiB0aGlzIGNvbXBvbmVudCBpcyB1c2VkIGFzIHRoZSBtYWluIGxheW91dCBvbiBhIHBhZ2UsXG4gICAgICogdGhlIGA8bWFpbj5gIGVsZW1lbnQgd291bGQgYmUgYXBwcm9wcmlhdGUgd2l0aGluIGhlcmUuXG4gICAgICovXG4gICAgY29udGVudDogW107XG4gICAgLyoqXG4gICAgICogVGhpcyBpcyB0aGUgZm9vdGVyIGNvbnRlbnQsIGNvbnRhaW5lZCB3aXRoaW4gYSBgPGRpdj5gIGVsZW1lbnQgZm9yIHBvc2l0aW9uaW5nLlxuICAgICAqIEEgYDxmb290ZXI-YCBlbGVtZW50IHdvdWxkIGJlIGFwcHJvcHJpYXRlIHdpdGhpbiBoZXJlLlxuICAgICAqXG4gICAgICogVGhpcyBlbGVtZW50IHdpbGwgYmUgYXQgdGhlIGJvdHRvbSBvZiB0aGUgcGFnZSBpZiB0aGUgY29udGVudCBkb2VzIG5vdCBvdmVyZmxvdyB0aGUgY29udGFpbmluZyBlbGVtZW50IGFuZCB0aGlzIGVsZW1lbnQgd2lsbCBiZSBhdCB0aGUgYm90dG9tIG9mIHRoZSBjb250ZW50IGlmIHRoZXJlIGlzIG92ZXJmbG93LlxuICAgICAqL1xuICAgIGZvb3RlcjogW107XG4gIH07XG59PiA9IDx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cImVtYmVyLXByaW1pdGl2ZXNfX3N0aWNreS1mb290ZXJfX3dyYXBwZXJcIiAuLi5hdHRyaWJ1dGVzPlxuICAgIDxkaXYgY2xhc3M9XCJlbWJlci1wcmltaXRpdmVzX19zdGlja3ktZm9vdGVyX19jb250YWluZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJlbWJlci1wcmltaXRpdmVzX19zdGlja3ktZm9vdGVyX19jb250ZW50XCI-XG4gICAgICAgIHt7eWllbGQgdG89XCJjb250ZW50XCJ9fVxuICAgICAgPC9kaXY-XG4gICAgICA8ZGl2IGNsYXNzPVwiZW1iZXItcHJpbWl0aXZlc19fc3RpY2t5LWZvb3Rlcl9fZm9vdGVyXCI-XG4gICAgICAgIHt7eWllbGQgdG89XCJmb290ZXJcIn19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY-XG48L3RlbXBsYXRlPjtcblxuZXhwb3J0IGRlZmF1bHQgU3RpY2t5Rm9vdGVyO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLGNBQWM7QUFFckIsY0FBYyxHQUFHLFFBQVEsaUNBQWlDO0FBRTFELE9BQU8sTUFBTSxjQUFjO0lBQ3pCOzs7O0dBSUMsR0FDRCxTQUFTO0lBQ1Q7UUFDRTs7OztLQUlDLEdBQ0Q7UUFDQTs7Ozs7S0FLQyxHQUNEOztLQUVDLFNBQVUsQ0FBQTs7Ozs7Ozs7Ozs7QUFXZixDQUFBLEVBQUE7SUFBQTtRQUFBLE9BQUEsS0FBQSxTQUFBLENBQUEsRUFBVztJQUFEO0FBQUEsR0FBRTtBQUVaLGVBQWUsYUFBYSJ9"],"names":["StickyFooter","precompileTemplate","strictMode","templateOnly"],"mappings":";;;;;AAIaA,MAAAA,eAsBRC,oBAAAA,CAAAA,kBAAA,CAWL,kYAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/layout/sticky-footer/index.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport './index.css';\nimport type { TOC } from '@ember/component/template-only';\nexport const StickyFooter: TOC<{\n /**\n * The wrapper element of the whole layout.\n * Valid parents for this element must have either a set height,\n * or a set max-height.\n */ Element: HTMLDivElement;\n Blocks: {\n /**\n * This is the scrollable content, contained within a `<div>` element for positioning.\n * If this component is used as the main layout on a page,\n * the `<main>` element would be appropriate within here.\n */ content: [];\n /**\n * This is the footer content, contained within a `<div>` element for positioning.\n * A `<footer>` element would be appropriate within here.\n *\n * This element will be at the bottom of the page if the content does not overflow the containing element and this element will be at the bottom of the content if there is overflow.\n */ footer: [];\n };\n}> = template(`\n <div class=\"ember-primitives__sticky-footer__wrapper\" ...attributes>\n <div class=\"ember-primitives__sticky-footer__container\">\n <div class=\"ember-primitives__sticky-footer__content\">\n {{yield to=\"content\"}}\n </div>\n <div class=\"ember-primitives__sticky-footer__footer\">\n {{yield to=\"footer\"}}\n </div>\n </div>\n </div>\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nexport default StickyFooter;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL252cC9EZXZlbG9wbWVudC9OdWxsVm94UG9wdWxpL2VtYmVyLXByaW1pdGl2ZXMvZW1iZXItcHJpbWl0aXZlcy9zcmMvY29tcG9uZW50cy9sYXlvdXQvc3RpY2t5LWZvb3Rlci9pbmRleC5ndHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICcuL2luZGV4LmNzcyc7XG5cbmltcG9ydCB0eXBlIHsgVE9DIH0gZnJvbSAnQGVtYmVyL2NvbXBvbmVudC90ZW1wbGF0ZS1vbmx5JztcblxuZXhwb3J0IGNvbnN0IFN0aWNreUZvb3RlcjogVE9DPHtcbiAgLyoqXG4gICAqIFRoZSB3cmFwcGVyIGVsZW1lbnQgb2YgdGhlIHdob2xlIGxheW91dC5cbiAgICogVmFsaWQgcGFyZW50cyBmb3IgdGhpcyBlbGVtZW50IG11c3QgaGF2ZSBlaXRoZXIgYSBzZXQgaGVpZ2h0LFxuICAgKiBvciBhIHNldCBtYXgtaGVpZ2h0LlxuICAgKi9cbiAgRWxlbWVudDogSFRNTERpdkVsZW1lbnQ7XG4gIEJsb2Nrczoge1xuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgdGhlIHNjcm9sbGFibGUgY29udGVudCwgY29udGFpbmVkIHdpdGhpbiBhIGA8ZGl2PmAgZWxlbWVudCBmb3IgcG9zaXRpb25pbmcuXG4gICAgICogSWYgdGhpcyBjb21wb25lbnQgaXMgdXNlZCBhcyB0aGUgbWFpbiBsYXlvdXQgb24gYSBwYWdlLFxuICAgICAqIHRoZSBgPG1haW4-YCBlbGVtZW50IHdvdWxkIGJlIGFwcHJvcHJpYXRlIHdpdGhpbiBoZXJlLlxuICAgICAqL1xuICAgIGNvbnRlbnQ6IFtdO1xuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgdGhlIGZvb3RlciBjb250ZW50LCBjb250YWluZWQgd2l0aGluIGEgYDxkaXY-YCBlbGVtZW50IGZvciBwb3NpdGlvbmluZy5cbiAgICAgKiBBIGA8Zm9vdGVyPmAgZWxlbWVudCB3b3VsZCBiZSBhcHByb3ByaWF0ZSB3aXRoaW4gaGVyZS5cbiAgICAgKlxuICAgICAqIFRoaXMgZWxlbWVudCB3aWxsIGJlIGF0IHRoZSBib3R0b20gb2YgdGhlIHBhZ2UgaWYgdGhlIGNvbnRlbnQgZG9lcyBub3Qgb3ZlcmZsb3cgdGhlIGNvbnRhaW5pbmcgZWxlbWVudCBhbmQgdGhpcyBlbGVtZW50IHdpbGwgYmUgYXQgdGhlIGJvdHRvbSBvZiB0aGUgY29udGVudCBpZiB0aGVyZSBpcyBvdmVyZmxvdy5cbiAgICAgKi9cbiAgICBmb290ZXI6IFtdO1xuICB9O1xufT4gPSA8dGVtcGxhdGU-XG4gIDxkaXYgY2xhc3M9XCJlbWJlci1wcmltaXRpdmVzX19zdGlja3ktZm9vdGVyX193cmFwcGVyXCIgLi4uYXR0cmlidXRlcz5cbiAgICA8ZGl2IGNsYXNzPVwiZW1iZXItcHJpbWl0aXZlc19fc3RpY2t5LWZvb3Rlcl9fY29udGFpbmVyXCI-XG4gICAgICA8ZGl2IGNsYXNzPVwiZW1iZXItcHJpbWl0aXZlc19fc3RpY2t5LWZvb3Rlcl9fY29udGVudFwiPlxuICAgICAgICB7e3lpZWxkIHRvPVwiY29udGVudFwifX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImVtYmVyLXByaW1pdGl2ZXNfX3N0aWNreS1mb290ZXJfX2Zvb3RlclwiPlxuICAgICAgICB7e3lpZWxkIHRvPVwiZm9vdGVyXCJ9fVxuICAgICAgPC9kaXY-XG4gICAgPC9kaXY-XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT47XG5cbmV4cG9ydCBkZWZhdWx0IFN0aWNreUZvb3RlcjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxjQUFjO0FBRXJCLGNBQWMsR0FBRyxRQUFRLGlDQUFpQztBQUUxRCxPQUFPLE1BQU0sY0FBYztJQUN6Qjs7OztHQUlDLEdBQ0QsU0FBUztJQUNUO1FBQ0U7Ozs7S0FJQyxHQUNEO1FBQ0E7Ozs7O0tBS0MsR0FDRDs7S0FFQyxTQUFVLENBQUE7Ozs7Ozs7Ozs7O0FBV2YsQ0FBQSxFQUFBO0lBQUE7UUFBQSxPQUFBLEtBQUEsU0FBQSxDQUFBLEVBQVc7SUFBRDtBQUFBLEdBQUU7QUFFWixlQUFlLGFBQWEifQ"],"names":["StickyFooter","precompileTemplate","strictMode","templateOnly"],"mappings":";;;;;AAIaA,MAAAA,eAsBRC,oBAAAA,CAAAA,kBAAA,CAWL,kYAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
@@ -1,13 +1,10 @@
1
- import Component from '@glimmer/component';
2
- import { assert } from '@ember/debug';
3
1
  import { hash } from '@ember/helper';
4
2
  import { on } from '@ember/modifier';
5
- import { service } from '@ember/service';
6
- import { handle } from '../proper-links.js';
3
+ import { link } from '../helpers/link.js';
7
4
  import { ExternalLink } from './external-link.js';
8
5
  import { precompileTemplate } from '@ember/template-compilation';
9
6
  import { setComponentTemplate } from '@ember/component';
10
- import { g, i } from 'decorator-transforms/runtime';
7
+ import templateOnly from '@ember/component/template-only';
11
8
 
12
9
  /**
13
10
  * TODO: make template-only component,
@@ -21,78 +18,15 @@ import { g, i } from 'decorator-transforms/runtime';
21
18
  *
22
19
  * [mdn-a]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a
23
20
  */
24
- class Link extends Component {
25
- static {
26
- setComponentTemplate(precompileTemplate("\n {{#if (isExternal @href)}}\n <ExternalLink href={{@href}} ...attributes>\n {{yield (hash isExternal=true isActive=false)}}\n </ExternalLink>\n {{else}}\n <a data-active={{this.isActive}} href={{if @href @href \"##missing##\"}} {{on \"click\" this.handleClick}} ...attributes>\n {{yield (hash isExternal=false isActive=this.isActive)}}\n </a>\n {{/if}}\n ", {
27
- scope: () => ({
28
- isExternal,
29
- ExternalLink,
30
- hash,
31
- on
32
- }),
33
- strictMode: true
34
- }), this);
35
- }
36
- static {
37
- g(this.prototype, "router", [service]);
38
- }
39
- #router = (i(this, "router"), void 0);
40
- handleClick = event1 => {
41
- assert('[BUG]', event1.target instanceof HTMLAnchorElement);
42
- handle(this.router, event1.target, [], event1);
43
- };
44
- get isActive() {
45
- let {
46
- href: href1,
47
- includeActiveQueryParams: includeActiveQueryParams1
48
- } = this.args;
49
- return isActive(this.router, href1, includeActiveQueryParams1);
50
- }
51
- }
52
- function isExternal(href1) {
53
- if (!href1) return false;
54
- if (href1.startsWith('#')) return false;
55
- if (href1.startsWith('/')) return false;
56
- return location.origin !== new URL(href1).origin;
57
- }
58
- function isActive(router1, href1, includeQueryParams1) {
59
- if (!includeQueryParams1) {
60
- /**
61
- * is Active doesn't understand `href`, so we have to convert to RouteInfo-esque
62
- */
63
- let info1 = router1.recognize(href1);
64
- if (info1) {
65
- let dynamicSegments1 = getParams(info1);
66
- return router1.isActive(info1.name, ...dynamicSegments1);
67
- }
68
- return false;
69
- }
70
- let url1 = new URL(href1, location.origin);
71
- let hrefQueryParams1 = new URLSearchParams(url1.searchParams);
72
- let hrefPath1 = url1.pathname;
73
- const currentPath1 = router1.currentURL?.split('?')[0];
74
- if (!currentPath1) return false;
75
- if (hrefPath1 !== currentPath1) return false;
76
- const currentQueryParams1 = router1.currentRoute?.queryParams;
77
- if (!currentQueryParams1) return false;
78
- if (includeQueryParams1 === true) {
79
- return Object.entries(currentQueryParams1).every(([key1, value1]) => {
80
- return hrefQueryParams1.get(key1) === value1;
81
- });
82
- }
83
- return includeQueryParams1.every(key1 => {
84
- return hrefQueryParams1.get(key1) === currentQueryParams1[key1];
85
- });
86
- }
87
- function getParams(currentRouteInfo1) {
88
- let params1 = [];
89
- while (currentRouteInfo1?.parent) {
90
- let currentParams1 = currentRouteInfo1.params;
91
- params1 = currentParams1 ? [currentParams1, ...params1] : params1;
92
- currentRouteInfo1 = currentRouteInfo1.parent;
93
- }
94
- return params1.map(Object.values).flat();
95
- }
21
+ const Link = setComponentTemplate(precompileTemplate("\n {{#let (link @href includeActiveQueryParams=@includeActiveQueryParams activeOnSubPaths=@activeOnSubPaths) as |l|}}\n {{#if l.isExternal}}\n <ExternalLink href={{@href}} ...attributes>\n {{yield (hash isExternal=true isActive=false)}}\n </ExternalLink>\n {{else}}\n <a data-active={{l.isActive}} href={{if @href @href \"##missing##\"}} {{on \"click\" l.handleClick}} ...attributes>\n {{yield (hash isExternal=false isActive=l.isActive)}}\n </a>\n {{/if}}\n {{/let}}\n", {
22
+ strictMode: true,
23
+ scope: () => ({
24
+ link,
25
+ ExternalLink,
26
+ hash,
27
+ on
28
+ })
29
+ }), templateOnly());
96
30
 
97
31
  export { Link, Link as default };
98
32
  //# sourceMappingURL=link.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"link.js","sources":["../../src/components/link.gts"],"sourcesContent":["/**\n * TODO: make template-only component,\n * and use class-based modifier?\n *\n * This would require that modifiers could run pre-render\n */ import { template } from \"@ember/template-compiler\";\nimport Component from '@glimmer/component';\nimport { assert } from '@ember/debug';\nimport { hash } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport { service } from '@ember/service';\nimport { handle } from '../proper-links.ts';\nimport { ExternalLink } from './external-link.gts';\nimport type RouterService from '@ember/routing/router-service';\nexport interface Signature {\n Element: HTMLAnchorElement;\n Args: {\n /**\n * the `href` string value to set on the anchor element.\n */ href: string;\n /**\n * When calculating the \"active\" state of the link, you may decide\n * whether or not you want to _require_ that all query params be considered (true)\n * or specify individual query params, ignoring anything not specified.\n *\n * For example:\n *\n * ```gjs live preview\n * import { Link } from 'ember-primitives';\n *\n * <template>\n * <Link @href=\"/\" @includeActiveQueryParams={{true}} as |a|>\n * ...\n * </Link>\n * </template>\n * ```\n *\n * the data-active state here will only be \"true\" on\n * - `/`\n * - `/?foo=2`\n * - `/?foo=&bar=`\n *\n */ includeActiveQueryParams?: true | string[];\n };\n Blocks: {\n default: [{\n /**\n * Indicates if the passed `href` is pointing to an external site.\n * Useful if you want your links to have additional context for when\n * a user is about to leave your site.\n *\n * For example:\n *\n * ```gjs live preview\n * import { Link } from 'ember-primitives';\n *\n * const MyLink = <template>\n * <Link @href={{@href}} as |a|>\n * {{yield}}\n * {{#if a.isExternal}}\n * ➚\n * {{/if}}\n * </Link>\n * </template>;\n *\n * <template>\n * <MyLink @href=\"https://developer.mozilla.org\">MDN</MyLink> &nbsp;&nbsp;\n * <MyLink @href=\"/\">Home</MyLink>\n * </template>\n * ```\n */ isExternal: boolean;\n /**\n * Indicates if the passed `href` is *active*, or the user is on the same basepath.\n * This allows consumers to style their link if they wish or style their text.\n * The active state will also be present on a `data-active` attribute on the generated anchor tag.\n *\n *\n * For example\n * ```gjs\n * import { Link, service } from 'ember-primitives';\n *\n * const MyLink = <template>\n * <Link @href=\"...\"> as |a|>\n * <span class=\"{{if a.isActive 'underline'}}\">\n * {{yield}}\n * </span>\n * </Link>\n * </template>\n *\n * <template>\n * {{#let (service 'router') as |router|}}\n * <MyLink @href={{router.currentURL}}>Ths page</MyLink> &nbsp;&nbsp;\n * <MyLink @href=\"/\">Home</MyLink>\n * {{/let}}\n * </template>\n * ```\n *\n * By default, the query params are omitted from `isActive` calculation, but you may\n * configure the query params to be included if you wish\n * See: `@includeActiveQueryParams`\n *\n * Note that external links are never active.\n */ isActive: boolean;\n }];\n };\n}\n/**\n * A light wrapper around the [Anchor element][mdn-a], which will appropriately make your link an external link if the passed `@href` is not on the same domain.\n *\n *\n * [mdn-a]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a\n */ export class Link extends Component<Signature> {\n static{\n template(`\n {{#if (isExternal @href)}}\n <ExternalLink href={{@href}} ...attributes>\n {{yield (hash isExternal=true isActive=false)}}\n </ExternalLink>\n {{else}}\n <a\n data-active={{this.isActive}}\n href={{if @href @href \"##missing##\"}}\n {{on \"click\" this.handleClick}}\n ...attributes\n >\n {{yield (hash isExternal=false isActive=this.isActive)}}\n </a>\n {{/if}}\n `, {\n component: this,\n eval () {\n return eval(arguments[0]);\n }\n });\n }\n @service\n router: RouterService;\n handleClick = (event1: MouseEvent)=>{\n assert('[BUG]', event1.target instanceof HTMLAnchorElement);\n handle(this.router, event1.target, [], event1);\n };\n get isActive() {\n let { href: href1, includeActiveQueryParams: includeActiveQueryParams1 } = this.args;\n return isActive(this.router, href1, includeActiveQueryParams1);\n }\n}\nexport default Link;\nfunction isExternal(href1: string) {\n if (!href1) return false;\n if (href1.startsWith('#')) return false;\n if (href1.startsWith('/')) return false;\n return location.origin !== new URL(href1).origin;\n}\nfunction isActive(router1: RouterService, href1: string, includeQueryParams1?: boolean | string[]) {\n if (!includeQueryParams1) {\n /**\n * is Active doesn't understand `href`, so we have to convert to RouteInfo-esque\n */ let info1 = router1.recognize(href1);\n if (info1) {\n let dynamicSegments1 = getParams(info1);\n return router1.isActive(info1.name, ...dynamicSegments1);\n }\n return false;\n }\n let url1 = new URL(href1, location.origin);\n let hrefQueryParams1 = new URLSearchParams(url1.searchParams);\n let hrefPath1 = url1.pathname;\n const currentPath1 = router1.currentURL?.split('?')[0];\n if (!currentPath1) return false;\n if (hrefPath1 !== currentPath1) return false;\n const currentQueryParams1 = router1.currentRoute?.queryParams;\n if (!currentQueryParams1) return false;\n if (includeQueryParams1 === true) {\n return Object.entries(currentQueryParams1).every(([key1, value1])=>{\n return hrefQueryParams1.get(key1) === value1;\n });\n }\n return includeQueryParams1.every((key1)=>{\n return hrefQueryParams1.get(key1) === currentQueryParams1[key1];\n });\n}\ntype RouteInfo = ReturnType<RouterService['recognize']>;\nfunction getParams(currentRouteInfo1: RouteInfo) {\n let params1: Record<string, string | unknown | undefined>[] = [];\n while(currentRouteInfo1?.parent){\n let currentParams1 = currentRouteInfo1.params;\n params1 = currentParams1 ? [\n currentParams1,\n ...params1\n ] : params1;\n currentRouteInfo1 = currentRouteInfo1.parent;\n }\n return params1.map(Object.values).flat();\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2VtYmVyLXByaW1pdGl2ZXMvZW1iZXItcHJpbWl0aXZlcy9lbWJlci1wcmltaXRpdmVzL3NyYy9jb21wb25lbnRzL2xpbmsuZ3RzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVE9ETzogbWFrZSB0ZW1wbGF0ZS1vbmx5IGNvbXBvbmVudCxcbiAqIGFuZCB1c2UgY2xhc3MtYmFzZWQgbW9kaWZpZXI_XG4gKlxuICogVGhpcyB3b3VsZCByZXF1aXJlIHRoYXQgbW9kaWZpZXJzIGNvdWxkIHJ1biBwcmUtcmVuZGVyXG4gKi9cbmltcG9ydCBDb21wb25lbnQgZnJvbSAnQGdsaW1tZXIvY29tcG9uZW50JztcbmltcG9ydCB7IGFzc2VydCB9IGZyb20gJ0BlbWJlci9kZWJ1Zyc7XG5pbXBvcnQgeyBoYXNoIH0gZnJvbSAnQGVtYmVyL2hlbHBlcic7XG5pbXBvcnQgeyBvbiB9IGZyb20gJ0BlbWJlci9tb2RpZmllcic7XG5pbXBvcnQgeyBzZXJ2aWNlIH0gZnJvbSAnQGVtYmVyL3NlcnZpY2UnO1xuXG5pbXBvcnQgeyBoYW5kbGUgfSBmcm9tICcuLi9wcm9wZXItbGlua3MudHMnO1xuaW1wb3J0IHsgRXh0ZXJuYWxMaW5rIH0gZnJvbSAnLi9leHRlcm5hbC1saW5rLmd0cyc7XG5cbmltcG9ydCB0eXBlIFJvdXRlclNlcnZpY2UgZnJvbSAnQGVtYmVyL3JvdXRpbmcvcm91dGVyLXNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNpZ25hdHVyZSB7XG4gIEVsZW1lbnQ6IEhUTUxBbmNob3JFbGVtZW50O1xuICBBcmdzOiB7XG4gICAgLyoqXG4gICAgICogdGhlIGBocmVmYCBzdHJpbmcgdmFsdWUgdG8gc2V0IG9uIHRoZSBhbmNob3IgZWxlbWVudC5cbiAgICAgKi9cbiAgICBocmVmOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogV2hlbiBjYWxjdWxhdGluZyB0aGUgXCJhY3RpdmVcIiBzdGF0ZSBvZiB0aGUgbGluaywgeW91IG1heSBkZWNpZGVcbiAgICAgKiB3aGV0aGVyIG9yIG5vdCB5b3Ugd2FudCB0byBfcmVxdWlyZV8gdGhhdCBhbGwgcXVlcnkgcGFyYW1zIGJlIGNvbnNpZGVyZWQgKHRydWUpXG4gICAgICogb3Igc3BlY2lmeSBpbmRpdmlkdWFsIHF1ZXJ5IHBhcmFtcywgaWdub3JpbmcgYW55dGhpbmcgbm90IHNwZWNpZmllZC5cbiAgICAgKlxuICAgICAqIEZvciBleGFtcGxlOlxuICAgICAqXG4gICAgICogYGBgZ2pzIGxpdmUgcHJldmlld1xuICAgICAqIGltcG9ydCB7IExpbmsgfSBmcm9tICdlbWJlci1wcmltaXRpdmVzJztcbiAgICAgKlxuICAgICAqIDx0ZW1wbGF0ZT5cbiAgICAgKiAgIDxMaW5rIEBocmVmPVwiL1wiIEBpbmNsdWRlQWN0aXZlUXVlcnlQYXJhbXM9e3t0cnVlfX0gYXMgfGF8PlxuICAgICAqICAgICAuLi5cbiAgICAgKiAgIDwvTGluaz5cbiAgICAgKiA8L3RlbXBsYXRlPlxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogdGhlIGRhdGEtYWN0aXZlIHN0YXRlIGhlcmUgd2lsbCBvbmx5IGJlIFwidHJ1ZVwiIG9uXG4gICAgICogLSBgL2BcbiAgICAgKiAtIGAvP2Zvbz0yYFxuICAgICAqIC0gYC8_Zm9vPSZiYXI9YFxuICAgICAqXG4gICAgICovXG4gICAgaW5jbHVkZUFjdGl2ZVF1ZXJ5UGFyYW1zPzogdHJ1ZSB8IHN0cmluZ1tdO1xuICB9O1xuICBCbG9ja3M6IHtcbiAgICBkZWZhdWx0OiBbXG4gICAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJbmRpY2F0ZXMgaWYgdGhlIHBhc3NlZCBgaHJlZmAgaXMgcG9pbnRpbmcgdG8gYW4gZXh0ZXJuYWwgc2l0ZS5cbiAgICAgICAgICogVXNlZnVsIGlmIHlvdSB3YW50IHlvdXIgbGlua3MgdG8gaGF2ZSBhZGRpdGlvbmFsIGNvbnRleHQgZm9yIHdoZW5cbiAgICAgICAgICogYSB1c2VyIGlzIGFib3V0IHRvIGxlYXZlIHlvdXIgc2l0ZS5cbiAgICAgICAgICpcbiAgICAgICAgICogRm9yIGV4YW1wbGU6XG4gICAgICAgICAqXG4gICAgICAgICAqIGBgYGdqcyBsaXZlIHByZXZpZXdcbiAgICAgICAgICogaW1wb3J0IHsgTGluayB9IGZyb20gJ2VtYmVyLXByaW1pdGl2ZXMnO1xuICAgICAgICAgKlxuICAgICAgICAgKiBjb25zdCBNeUxpbmsgPSA8dGVtcGxhdGU-XG4gICAgICAgICAqICAgPExpbmsgQGhyZWY9e3tAaHJlZn19IGFzIHxhfD5cbiAgICAgICAgICogICAgIHt7eWllbGR9fVxuICAgICAgICAgKiAgICAge3sjaWYgYS5pc0V4dGVybmFsfX1cbiAgICAgICAgICogICAgICAg4p6aXG4gICAgICAgICAqICAgICB7ey9pZn19XG4gICAgICAgICAqICAgPC9MaW5rPlxuICAgICAgICAgKiA8L3RlbXBsYXRlPjtcbiAgICAgICAgICpcbiAgICAgICAgICogPHRlbXBsYXRlPlxuICAgICAgICAgKiAgIDxNeUxpbmsgQGhyZWY9XCJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZ1wiPk1ETjwvTXlMaW5rPiAmbmJzcDsmbmJzcDtcbiAgICAgICAgICogICA8TXlMaW5rIEBocmVmPVwiL1wiPkhvbWU8L015TGluaz5cbiAgICAgICAgICogIDwvdGVtcGxhdGU-XG4gICAgICAgICAqIGBgYFxuICAgICAgICAgKi9cbiAgICAgICAgaXNFeHRlcm5hbDogYm9vbGVhbjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEluZGljYXRlcyBpZiB0aGUgcGFzc2VkIGBocmVmYCBpcyAqYWN0aXZlKiwgb3IgdGhlIHVzZXIgaXMgb24gdGhlIHNhbWUgYmFzZXBhdGguXG4gICAgICAgICAqIFRoaXMgYWxsb3dzIGNvbnN1bWVycyB0byBzdHlsZSB0aGVpciBsaW5rIGlmIHRoZXkgd2lzaCBvciBzdHlsZSB0aGVpciB0ZXh0LlxuICAgICAgICAgKiBUaGUgYWN0aXZlIHN0YXRlIHdpbGwgYWxzbyBiZSBwcmVzZW50IG9uIGEgYGRhdGEtYWN0aXZlYCBhdHRyaWJ1dGUgb24gdGhlIGdlbmVyYXRlZCBhbmNob3IgdGFnLlxuICAgICAgICAgKlxuICAgICAgICAgKlxuICAgICAgICAgKiBGb3IgZXhhbXBsZVxuICAgICAgICAgKiBgYGBnanNcbiAgICAgICAgICogaW1wb3J0IHsgTGluaywgc2VydmljZSB9IGZyb20gJ2VtYmVyLXByaW1pdGl2ZXMnO1xuICAgICAgICAgKlxuICAgICAgICAgKiBjb25zdCBNeUxpbmsgPSA8dGVtcGxhdGU-XG4gICAgICAgICAqICAgPExpbmsgQGhyZWY9XCIuLi5cIj4gYXMgfGF8PlxuICAgICAgICAgKiAgICAgPHNwYW4gY2xhc3M9XCJ7e2lmIGEuaXNBY3RpdmUgJ3VuZGVybGluZSd9fVwiPlxuICAgICAgICAgKiAgICAge3t5aWVsZH19XG4gICAgICAgICAqICAgICA8L3NwYW4-XG4gICAgICAgICAqICAgPC9MaW5rPlxuICAgICAgICAgKiA8L3RlbXBsYXRlPlxuICAgICAgICAgKlxuICAgICAgICAgKiA8dGVtcGxhdGU-XG4gICAgICAgICAqIHt7I2xldCAoc2VydmljZSAncm91dGVyJykgYXMgfHJvdXRlcnx9fVxuICAgICAgICAgKiAgICAgPE15TGluayBAaHJlZj17e3JvdXRlci5jdXJyZW50VVJMfX0-VGhzIHBhZ2U8L015TGluaz4gJm5ic3A7Jm5ic3A7XG4gICAgICAgICAqICAgICA8TXlMaW5rIEBocmVmPVwiL1wiPkhvbWU8L015TGluaz5cbiAgICAgICAgICogICB7ey9sZXR9fVxuICAgICAgICAgKiAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICogYGBgXG4gICAgICAgICAqXG4gICAgICAgICAqIEJ5IGRlZmF1bHQsIHRoZSBxdWVyeSBwYXJhbXMgYXJlIG9taXR0ZWQgZnJvbSBgaXNBY3RpdmVgIGNhbGN1bGF0aW9uLCBidXQgeW91IG1heVxuICAgICAgICAgKiBjb25maWd1cmUgdGhlIHF1ZXJ5IHBhcmFtcyB0byBiZSBpbmNsdWRlZCBpZiB5b3Ugd2lzaFxuICAgICAgICAgKiBTZWU6IGBAaW5jbHVkZUFjdGl2ZVF1ZXJ5UGFyYW1zYFxuICAgICAgICAgKlxuICAgICAgICAgKiBOb3RlIHRoYXQgZXh0ZXJuYWwgbGlua3MgYXJlIG5ldmVyIGFjdGl2ZS5cbiAgICAgICAgICovXG4gICAgICAgIGlzQWN0aXZlOiBib29sZWFuO1xuICAgICAgfSxcbiAgICBdO1xuICB9O1xufVxuXG4vKipcbiAqIEEgbGlnaHQgd3JhcHBlciBhcm91bmQgdGhlIFtBbmNob3IgZWxlbWVudF1bbWRuLWFdLCB3aGljaCB3aWxsIGFwcHJvcHJpYXRlbHkgbWFrZSB5b3VyIGxpbmsgYW4gZXh0ZXJuYWwgbGluayBpZiB0aGUgcGFzc2VkIGBAaHJlZmAgaXMgbm90IG9uIHRoZSBzYW1lIGRvbWFpbi5cbiAqXG4gKlxuICogW21kbi1hXTogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2FcbiAqL1xuZXhwb3J0IGNsYXNzIExpbmsgZXh0ZW5kcyBDb21wb25lbnQ8U2lnbmF0dXJlPiB7XG4gIDx0ZW1wbGF0ZT5cbiAgICB7eyNpZiAoaXNFeHRlcm5hbCBAaHJlZil9fVxuICAgICAgPEV4dGVybmFsTGluayBocmVmPXt7QGhyZWZ9fSAuLi5hdHRyaWJ1dGVzPlxuICAgICAgICB7e3lpZWxkIChoYXNoIGlzRXh0ZXJuYWw9dHJ1ZSBpc0FjdGl2ZT1mYWxzZSl9fVxuICAgICAgPC9FeHRlcm5hbExpbms-XG4gICAge3tlbHNlfX1cbiAgICAgIDxhXG4gICAgICAgIGRhdGEtYWN0aXZlPXt7dGhpcy5pc0FjdGl2ZX19XG4gICAgICAgIGhyZWY9e3tpZiBAaHJlZiBAaHJlZiBcIiMjbWlzc2luZyMjXCJ9fVxuICAgICAgICB7e29uIFwiY2xpY2tcIiB0aGlzLmhhbmRsZUNsaWNrfX1cbiAgICAgICAgLi4uYXR0cmlidXRlc1xuICAgICAgPlxuICAgICAgICB7e3lpZWxkIChoYXNoIGlzRXh0ZXJuYWw9ZmFsc2UgaXNBY3RpdmU9dGhpcy5pc0FjdGl2ZSl9fVxuICAgICAgPC9hPlxuICAgIHt7L2lmfX1cbiAgPC90ZW1wbGF0ZT5cblxuICBAc2VydmljZSBkZWNsYXJlIHJvdXRlcjogUm91dGVyU2VydmljZTtcblxuICBoYW5kbGVDbGljayA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgIGFzc2VydCgnW0JVR10nLCBldmVudC50YXJnZXQgaW5zdGFuY2VvZiBIVE1MQW5jaG9yRWxlbWVudCk7XG5cbiAgICBoYW5kbGUodGhpcy5yb3V0ZXIsIGV2ZW50LnRhcmdldCwgW10sIGV2ZW50KTtcbiAgfTtcblxuICBnZXQgaXNBY3RpdmUoKSB7XG4gICAgbGV0IHsgaHJlZiwgaW5jbHVkZUFjdGl2ZVF1ZXJ5UGFyYW1zIH0gPSB0aGlzLmFyZ3M7XG5cbiAgICByZXR1cm4gaXNBY3RpdmUodGhpcy5yb3V0ZXIsIGhyZWYsIGluY2x1ZGVBY3RpdmVRdWVyeVBhcmFtcyk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTGluaztcblxuZnVuY3Rpb24gaXNFeHRlcm5hbChocmVmOiBzdHJpbmcpIHtcbiAgaWYgKCFocmVmKSByZXR1cm4gZmFsc2U7XG4gIGlmIChocmVmLnN0YXJ0c1dpdGgoJyMnKSkgcmV0dXJuIGZhbHNlO1xuICBpZiAoaHJlZi5zdGFydHNXaXRoKCcvJykpIHJldHVybiBmYWxzZTtcblxuICByZXR1cm4gbG9jYXRpb24ub3JpZ2luICE9PSBuZXcgVVJMKGhyZWYpLm9yaWdpbjtcbn1cblxuZnVuY3Rpb24gaXNBY3RpdmUocm91dGVyOiBSb3V0ZXJTZXJ2aWNlLCBocmVmOiBzdHJpbmcsIGluY2x1ZGVRdWVyeVBhcmFtcz86IGJvb2xlYW4gfCBzdHJpbmdbXSkge1xuICBpZiAoIWluY2x1ZGVRdWVyeVBhcmFtcykge1xuICAgIC8qKlxuICAgICAqIGlzIEFjdGl2ZSBkb2Vzbid0IHVuZGVyc3RhbmQgYGhyZWZgLCBzbyB3ZSBoYXZlIHRvIGNvbnZlcnQgdG8gUm91dGVJbmZvLWVzcXVlXG4gICAgICovXG4gICAgbGV0IGluZm8gPSByb3V0ZXIucmVjb2duaXplKGhyZWYpO1xuXG4gICAgaWYgKGluZm8pIHtcbiAgICAgIGxldCBkeW5hbWljU2VnbWVudHMgPSBnZXRQYXJhbXMoaW5mbyk7XG5cbiAgICAgIHJldHVybiByb3V0ZXIuaXNBY3RpdmUoaW5mby5uYW1lLCAuLi5keW5hbWljU2VnbWVudHMpO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGxldCB1cmwgPSBuZXcgVVJMKGhyZWYsIGxvY2F0aW9uLm9yaWdpbik7XG4gIGxldCBocmVmUXVlcnlQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHVybC5zZWFyY2hQYXJhbXMpO1xuICBsZXQgaHJlZlBhdGggPSB1cmwucGF0aG5hbWU7XG5cbiAgY29uc3QgY3VycmVudFBhdGggPSByb3V0ZXIuY3VycmVudFVSTD8uc3BsaXQoJz8nKVswXTtcblxuICBpZiAoIWN1cnJlbnRQYXRoKSByZXR1cm4gZmFsc2U7XG5cbiAgaWYgKGhyZWZQYXRoICE9PSBjdXJyZW50UGF0aCkgcmV0dXJuIGZhbHNlO1xuXG4gIGNvbnN0IGN1cnJlbnRRdWVyeVBhcmFtcyA9IHJvdXRlci5jdXJyZW50Um91dGU_LnF1ZXJ5UGFyYW1zO1xuXG4gIGlmICghY3VycmVudFF1ZXJ5UGFyYW1zKSByZXR1cm4gZmFsc2U7XG5cbiAgaWYgKGluY2x1ZGVRdWVyeVBhcmFtcyA9PT0gdHJ1ZSkge1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhjdXJyZW50UXVlcnlQYXJhbXMpLmV2ZXJ5KChba2V5LCB2YWx1ZV0pID0-IHtcbiAgICAgIHJldHVybiBocmVmUXVlcnlQYXJhbXMuZ2V0KGtleSkgPT09IHZhbHVlO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGluY2x1ZGVRdWVyeVBhcmFtcy5ldmVyeSgoa2V5KSA9PiB7XG4gICAgcmV0dXJuIGhyZWZRdWVyeVBhcmFtcy5nZXQoa2V5KSA9PT0gY3VycmVudFF1ZXJ5UGFyYW1zW2tleV07XG4gIH0pO1xufVxuXG50eXBlIFJvdXRlSW5mbyA9IFJldHVyblR5cGU8Um91dGVyU2VydmljZVsncmVjb2duaXplJ10-O1xuXG5mdW5jdGlvbiBnZXRQYXJhbXMoY3VycmVudFJvdXRlSW5mbzogUm91dGVJbmZvKSB7XG4gIGxldCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVua25vd24gfCB1bmRlZmluZWQ-W10gPSBbXTtcblxuICB3aGlsZSAoY3VycmVudFJvdXRlSW5mbz8ucGFyZW50KSB7XG4gICAgbGV0IGN1cnJlbnRQYXJhbXMgPSBjdXJyZW50Um91dGVJbmZvLnBhcmFtcztcblxuICAgIHBhcmFtcyA9IGN1cnJlbnRQYXJhbXMgPyBbY3VycmVudFBhcmFtcywgLi4ucGFyYW1zXSA6IHBhcmFtcztcbiAgICBjdXJyZW50Um91dGVJbmZvID0gY3VycmVudFJvdXRlSW5mby5wYXJlbnQ7XG4gIH1cblxuICByZXR1cm4gcGFyYW1zLm1hcChPYmplY3QudmFsdWVzKS5mbGF0KCk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0NBS0M7QUFDRCxPQUFPLGVBQWUscUJBQXFCO0FBQzNDLFNBQVMsTUFBTSxRQUFRLGVBQWU7QUFDdEMsU0FBUyxJQUFJLFFBQVEsZ0JBQWdCO0FBQ3JDLFNBQVMsRUFBRSxRQUFRLGtCQUFrQjtBQUNyQyxTQUFTLE9BQU8sUUFBUSxpQkFBaUI7QUFFekMsU0FBUyxNQUFNLFFBQVEscUJBQXFCO0FBQzVDLFNBQVMsWUFBWSxRQUFRLHNCQUFzQjtBQUVuRCxZQUFZLG1CQUFtQixnQ0FBZ0M7QUFFL0QsaUJBQWlCO0lBQ2YsU0FBUztJQUNUO1FBQ0U7O0tBRUMsR0FDRCxNQUFNLE1BQU07UUFDWjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQXNCQyxHQUNELDJCQUEyQixJQUFJLEdBQUcsTUFBTTs7SUFFMUM7UUFDRTtnQkFFSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBd0JDLEdBQ0QsWUFBWSxPQUFPO2dCQUNuQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQStCQyxHQUNELFVBQVUsT0FBTzs7OztBQU16Qjs7Ozs7Q0FLQyxHQUNELE9BQU8sTUFBTSxhQUFhLFVBQVU7SUFDbEMsTUFBQTtRQUFBLFNBQVUsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7O0VBZVYsQ0FBQSxFQUFBO1lBQUEsV0FBQSxJQUFXO1lBQVg7Z0JBQUEsT0FBQSxLQUFBLFNBQUEsQ0FB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"],"names":["Link","Component","setComponentTemplate","precompileTemplate","scope","isExternal","ExternalLink","hash","on","strictMode","g","this","prototype","service","i","void 0","handleClick","event1","assert","target","HTMLAnchorElement","handle","router","isActive","href","href1","includeActiveQueryParams","includeActiveQueryParams1","args","startsWith","location","origin","URL","router1","includeQueryParams1","info1","recognize","dynamicSegments1","getParams","name","url1","hrefQueryParams1","URLSearchParams","searchParams","hrefPath1","pathname","currentPath1","currentURL","split","currentQueryParams1","currentRoute","queryParams","Object","entries","every","key1","value1","get","currentRouteInfo1","params1","parent","currentParams1","params","map","values","flat"],"mappings":"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"}
1
+ {"version":3,"file":"link.js","sources":["../../src/components/link.gts"],"sourcesContent":["/**\n * TODO: make template-only component,\n * and use class-based modifier?\n *\n * This would require that modifiers could run pre-render\n */ import { template } from \"@ember/template-compiler\";\nimport { hash } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport { link } from '../helpers/link.ts';\nimport { ExternalLink } from './external-link.gts';\nimport type { TOC } from '@ember/component/template-only';\nexport interface Signature {\n Element: HTMLAnchorElement;\n Args: {\n /**\n * the `href` string value to set on the anchor element.\n */ href: string;\n /**\n * When calculating the \"active\" state of the link, you may decide\n * whether or not you want to _require_ that all query params be considered (true)\n * or specify individual query params, ignoring anything not specified.\n *\n * For example:\n *\n * ```gjs live preview\n * import { Link } from 'ember-primitives';\n *\n * <template>\n * <Link @href=\"/\" @includeActiveQueryParams={{true}} as |a|>\n * ...\n * </Link>\n * </template>\n * ```\n *\n * the data-active state here will only be \"true\" on\n * - `/`\n * - `/?foo=2`\n * - `/?foo=&bar=`\n *\n */ includeActiveQueryParams?: true | string[];\n /**\n * When calculating the \"active\" state of the link, you may decide\n * whether or not you want to consider sub paths to be active when\n * child routes/urls are active.\n *\n * For example:\n *\n * ```gjs live preview\n * import { Link } from 'ember-primitives';\n *\n * <template>\n * <Link @href=\"/forum/1\" @activeOnSubPaths={{true}} as |a|>\n * ...\n * </Link>\n * </template>\n * ```\n *\n * the data-active state here will be \"true\" on\n * - `/forum/1`\n * - `/forum/1/posts`\n * - `/forum/1/posts/comments`\n * - `/forum/1/*etc*`\n *\n * if `@activeOnSubPaths` is set to false or left off\n * the data-active state here will only be \"true\" on\n * - `/forum/1`\n *\n */ activeOnSubPaths?: true;\n };\n Blocks: {\n default: [{\n /**\n * Indicates if the passed `href` is pointing to an external site.\n * Useful if you want your links to have additional context for when\n * a user is about to leave your site.\n *\n * For example:\n *\n * ```gjs live preview\n * import { Link } from 'ember-primitives';\n *\n * const MyLink = <template>\n * <Link @href={{@href}} as |a|>\n * {{yield}}\n * {{#if a.isExternal}}\n * ➚\n * {{/if}}\n * </Link>\n * </template>;\n *\n * <template>\n * <MyLink @href=\"https://developer.mozilla.org\">MDN</MyLink> &nbsp;&nbsp;\n * <MyLink @href=\"/\">Home</MyLink>\n * </template>\n * ```\n */ isExternal: boolean;\n /**\n * Indicates if the passed `href` is *active*, or the user is on the same basepath.\n * This allows consumers to style their link if they wish or style their text.\n * The active state will also be present on a `data-active` attribute on the generated anchor tag.\n *\n *\n * For example\n * ```gjs\n * import { Link, service } from 'ember-primitives';\n *\n * const MyLink = <template>\n * <Link @href=\"...\"> as |a|>\n * <span class=\"{{if a.isActive 'underline'}}\">\n * {{yield}}\n * </span>\n * </Link>\n * </template>\n *\n * <template>\n * {{#let (service 'router') as |router|}}\n * <MyLink @href={{router.currentURL}}>Ths page</MyLink> &nbsp;&nbsp;\n * <MyLink @href=\"/\">Home</MyLink>\n * {{/let}}\n * </template>\n * ```\n *\n * By default, the query params are omitted from `isActive` calculation, but you may\n * configure the query params to be included if you wish\n * See: `@includeActiveQueryParams`\n *\n * By default, only the exact route/url is considered for the `isActive` calculation,\n * but you may configure sub routes/paths to also be considered active\n * See: `@activeOnSubPaths`\n *\n * Note that external links are never active.\n */ isActive: boolean;\n }];\n };\n}\n/**\n * A light wrapper around the [Anchor element][mdn-a], which will appropriately make your link an external link if the passed `@href` is not on the same domain.\n *\n *\n * [mdn-a]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a\n */ export const Link: TOC<Signature> = template(`\n {{#let (link @href includeActiveQueryParams=@includeActiveQueryParams activeOnSubPaths=@activeOnSubPaths) as |l|}}\n {{#if l.isExternal}}\n <ExternalLink href={{@href}} ...attributes>\n {{yield (hash isExternal=true isActive=false)}}\n </ExternalLink>\n {{else}}\n <a\n data-active={{l.isActive}}\n href={{if @href @href \"##missing##\"}}\n {{on \"click\" l.handleClick}}\n ...attributes\n >\n {{yield (hash isExternal=false isActive=l.isActive)}}\n </a>\n {{/if}}\n {{/let}}\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nexport default Link;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL252cC9EZXZlbG9wbWVudC9OdWxsVm94UG9wdWxpL2VtYmVyLXByaW1pdGl2ZXMvZW1iZXItcHJpbWl0aXZlcy9zcmMvY29tcG9uZW50cy9saW5rLmd0cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRPRE86IG1ha2UgdGVtcGxhdGUtb25seSBjb21wb25lbnQsXG4gKiBhbmQgdXNlIGNsYXNzLWJhc2VkIG1vZGlmaWVyP1xuICpcbiAqIFRoaXMgd291bGQgcmVxdWlyZSB0aGF0IG1vZGlmaWVycyBjb3VsZCBydW4gcHJlLXJlbmRlclxuICovXG5pbXBvcnQgeyBoYXNoIH0gZnJvbSAnQGVtYmVyL2hlbHBlcic7XG5pbXBvcnQgeyBvbiB9IGZyb20gJ0BlbWJlci9tb2RpZmllcic7XG5cbmltcG9ydCB7IGxpbmsgfSBmcm9tICcuLi9oZWxwZXJzL2xpbmsudHMnO1xuaW1wb3J0IHsgRXh0ZXJuYWxMaW5rIH0gZnJvbSAnLi9leHRlcm5hbC1saW5rLmd0cyc7XG5cbmltcG9ydCB0eXBlIHsgVE9DIH0gZnJvbSAnQGVtYmVyL2NvbXBvbmVudC90ZW1wbGF0ZS1vbmx5JztcblxuZXhwb3J0IGludGVyZmFjZSBTaWduYXR1cmUge1xuICBFbGVtZW50OiBIVE1MQW5jaG9yRWxlbWVudDtcbiAgQXJnczoge1xuICAgIC8qKlxuICAgICAqIHRoZSBgaHJlZmAgc3RyaW5nIHZhbHVlIHRvIHNldCBvbiB0aGUgYW5jaG9yIGVsZW1lbnQuXG4gICAgICovXG4gICAgaHJlZjogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFdoZW4gY2FsY3VsYXRpbmcgdGhlIFwiYWN0aXZlXCIgc3RhdGUgb2YgdGhlIGxpbmssIHlvdSBtYXkgZGVjaWRlXG4gICAgICogd2hldGhlciBvciBub3QgeW91IHdhbnQgdG8gX3JlcXVpcmVfIHRoYXQgYWxsIHF1ZXJ5IHBhcmFtcyBiZSBjb25zaWRlcmVkICh0cnVlKVxuICAgICAqIG9yIHNwZWNpZnkgaW5kaXZpZHVhbCBxdWVyeSBwYXJhbXMsIGlnbm9yaW5nIGFueXRoaW5nIG5vdCBzcGVjaWZpZWQuXG4gICAgICpcbiAgICAgKiBGb3IgZXhhbXBsZTpcbiAgICAgKlxuICAgICAqIGBgYGdqcyBsaXZlIHByZXZpZXdcbiAgICAgKiBpbXBvcnQgeyBMaW5rIH0gZnJvbSAnZW1iZXItcHJpbWl0aXZlcyc7XG4gICAgICpcbiAgICAgKiA8dGVtcGxhdGU-XG4gICAgICogICA8TGluayBAaHJlZj1cIi9cIiBAaW5jbHVkZUFjdGl2ZVF1ZXJ5UGFyYW1zPXt7dHJ1ZX19IGFzIHxhfD5cbiAgICAgKiAgICAgLi4uXG4gICAgICogICA8L0xpbms-XG4gICAgICogPC90ZW1wbGF0ZT5cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIHRoZSBkYXRhLWFjdGl2ZSBzdGF0ZSBoZXJlIHdpbGwgb25seSBiZSBcInRydWVcIiBvblxuICAgICAqIC0gYC9gXG4gICAgICogLSBgLz9mb289MmBcbiAgICAgKiAtIGAvP2Zvbz0mYmFyPWBcbiAgICAgKlxuICAgICAqL1xuICAgIGluY2x1ZGVBY3RpdmVRdWVyeVBhcmFtcz86IHRydWUgfCBzdHJpbmdbXTtcbiAgICAvKipcbiAgICAgKiBXaGVuIGNhbGN1bGF0aW5nIHRoZSBcImFjdGl2ZVwiIHN0YXRlIG9mIHRoZSBsaW5rLCB5b3UgbWF5IGRlY2lkZVxuICAgICAqIHdoZXRoZXIgb3Igbm90IHlvdSB3YW50IHRvIGNvbnNpZGVyIHN1YiBwYXRocyB0byBiZSBhY3RpdmUgd2hlblxuICAgICAqIGNoaWxkIHJvdXRlcy91cmxzIGFyZSBhY3RpdmUuXG4gICAgICpcbiAgICAgKiBGb3IgZXhhbXBsZTpcbiAgICAgKlxuICAgICAqIGBgYGdqcyBsaXZlIHByZXZpZXdcbiAgICAgKiBpbXBvcnQgeyBMaW5rIH0gZnJvbSAnZW1iZXItcHJpbWl0aXZlcyc7XG4gICAgICpcbiAgICAgKiA8dGVtcGxhdGU-XG4gICAgICogICA8TGluayBAaHJlZj1cIi9mb3J1bS8xXCIgQGFjdGl2ZU9uU3ViUGF0aHM9e3t0cnVlfX0gYXMgfGF8PlxuICAgICAqICAgICAuLi5cbiAgICAgKiAgIDwvTGluaz5cbiAgICAgKiA8L3RlbXBsYXRlPlxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogdGhlIGRhdGEtYWN0aXZlIHN0YXRlIGhlcmUgd2lsbCBiZSBcInRydWVcIiBvblxuICAgICAqIC0gYC9mb3J1bS8xYFxuICAgICAqIC0gYC9mb3J1bS8xL3Bvc3RzYFxuICAgICAqIC0gYC9mb3J1bS8xL3Bvc3RzL2NvbW1lbnRzYFxuICAgICAqIC0gYC9mb3J1bS8xLypldGMqYFxuICAgICAqXG4gICAgICogaWYgYEBhY3RpdmVPblN1YlBhdGhzYCBpcyBzZXQgdG8gZmFsc2Ugb3IgbGVmdCBvZmZcbiAgICAgKiB0aGUgZGF0YS1hY3RpdmUgc3RhdGUgaGVyZSB3aWxsIG9ubHkgYmUgXCJ0cnVlXCIgb25cbiAgICAgKiAtIGAvZm9ydW0vMWBcbiAgICAgKlxuICAgICAqL1xuICAgIGFjdGl2ZU9uU3ViUGF0aHM_OiB0cnVlO1xuICB9O1xuICBCbG9ja3M6IHtcbiAgICBkZWZhdWx0OiBbXG4gICAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJbmRpY2F0ZXMgaWYgdGhlIHBhc3NlZCBgaHJlZmAgaXMgcG9pbnRpbmcgdG8gYW4gZXh0ZXJuYWwgc2l0ZS5cbiAgICAgICAgICogVXNlZnVsIGlmIHlvdSB3YW50IHlvdXIgbGlua3MgdG8gaGF2ZSBhZGRpdGlvbmFsIGNvbnRleHQgZm9yIHdoZW5cbiAgICAgICAgICogYSB1c2VyIGlzIGFib3V0IHRvIGxlYXZlIHlvdXIgc2l0ZS5cbiAgICAgICAgICpcbiAgICAgICAgICogRm9yIGV4YW1wbGU6XG4gICAgICAgICAqXG4gICAgICAgICAqIGBgYGdqcyBsaXZlIHByZXZpZXdcbiAgICAgICAgICogaW1wb3J0IHsgTGluayB9IGZyb20gJ2VtYmVyLXByaW1pdGl2ZXMnO1xuICAgICAgICAgKlxuICAgICAgICAgKiBjb25zdCBNeUxpbmsgPSA8dGVtcGxhdGU-XG4gICAgICAgICAqICAgPExpbmsgQGhyZWY9e3tAaHJlZn19IGFzIHxhfD5cbiAgICAgICAgICogICAgIHt7eWllbGR9fVxuICAgICAgICAgKiAgICAge3sjaWYgYS5pc0V4dGVybmFsfX1cbiAgICAgICAgICogICAgICAg4p6aXG4gICAgICAgICAqICAgICB7ey9pZn19XG4gICAgICAgICAqICAgPC9MaW5rPlxuICAgICAgICAgKiA8L3RlbXBsYXRlPjtcbiAgICAgICAgICpcbiAgICAgICAgICogPHRlbXBsYXRlPlxuICAgICAgICAgKiAgIDxNeUxpbmsgQGhyZWY9XCJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZ1wiPk1ETjwvTXlMaW5rPiAmbmJzcDsmbmJzcDtcbiAgICAgICAgICogICA8TXlMaW5rIEBocmVmPVwiL1wiPkhvbWU8L015TGluaz5cbiAgICAgICAgICogIDwvdGVtcGxhdGU-XG4gICAgICAgICAqIGBgYFxuICAgICAgICAgKi9cbiAgICAgICAgaXNFeHRlcm5hbDogYm9vbGVhbjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEluZGljYXRlcyBpZiB0aGUgcGFzc2VkIGBocmVmYCBpcyAqYWN0aXZlKiwgb3IgdGhlIHVzZXIgaXMgb24gdGhlIHNhbWUgYmFzZXBhdGguXG4gICAgICAgICAqIFRoaXMgYWxsb3dzIGNvbnN1bWVycyB0byBzdHlsZSB0aGVpciBsaW5rIGlmIHRoZXkgd2lzaCBvciBzdHlsZSB0aGVpciB0ZXh0LlxuICAgICAgICAgKiBUaGUgYWN0aXZlIHN0YXRlIHdpbGwgYWxzbyBiZSBwcmVzZW50IG9uIGEgYGRhdGEtYWN0aXZlYCBhdHRyaWJ1dGUgb24gdGhlIGdlbmVyYXRlZCBhbmNob3IgdGFnLlxuICAgICAgICAgKlxuICAgICAgICAgKlxuICAgICAgICAgKiBGb3IgZXhhbXBsZVxuICAgICAgICAgKiBgYGBnanNcbiAgICAgICAgICogaW1wb3J0IHsgTGluaywgc2VydmljZSB9IGZyb20gJ2VtYmVyLXByaW1pdGl2ZXMnO1xuICAgICAgICAgKlxuICAgICAgICAgKiBjb25zdCBNeUxpbmsgPSA8dGVtcGxhdGU-XG4gICAgICAgICAqICAgPExpbmsgQGhyZWY9XCIuLi5cIj4gYXMgfGF8PlxuICAgICAgICAgKiAgICAgPHNwYW4gY2xhc3M9XCJ7e2lmIGEuaXNBY3RpdmUgJ3VuZGVybGluZSd9fVwiPlxuICAgICAgICAgKiAgICAge3t5aWVsZH19XG4gICAgICAgICAqICAgICA8L3NwYW4-XG4gICAgICAgICAqICAgPC9MaW5rPlxuICAgICAgICAgKiA8L3RlbXBsYXRlPlxuICAgICAgICAgKlxuICAgICAgICAgKiA8dGVtcGxhdGU-XG4gICAgICAgICAqIHt7I2xldCAoc2VydmljZSAncm91dGVyJykgYXMgfHJvdXRlcnx9fVxuICAgICAgICAgKiAgICAgPE15TGluayBAaHJlZj17e3JvdXRlci5jdXJyZW50VVJMfX0-VGhzIHBhZ2U8L015TGluaz4gJm5ic3A7Jm5ic3A7XG4gICAgICAgICAqICAgICA8TXlMaW5rIEBocmVmPVwiL1wiPkhvbWU8L015TGluaz5cbiAgICAgICAgICogICB7ey9sZXR9fVxuICAgICAgICAgKiAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICogYGBgXG4gICAgICAgICAqXG4gICAgICAgICAqIEJ5IGRlZmF1bHQsIHRoZSBxdWVyeSBwYXJhbXMgYXJlIG9taXR0ZWQgZnJvbSBgaXNBY3RpdmVgIGNhbGN1bGF0aW9uLCBidXQgeW91IG1heVxuICAgICAgICAgKiBjb25maWd1cmUgdGhlIHF1ZXJ5IHBhcmFtcyB0byBiZSBpbmNsdWRlZCBpZiB5b3Ugd2lzaFxuICAgICAgICAgKiBTZWU6IGBAaW5jbHVkZUFjdGl2ZVF1ZXJ5UGFyYW1zYFxuICAgICAgICAgKlxuICAgICAgICAgKiBCeSBkZWZhdWx0LCBvbmx5IHRoZSBleGFjdCByb3V0ZS91cmwgaXMgY29uc2lkZXJlZCBmb3IgdGhlIGBpc0FjdGl2ZWAgY2FsY3VsYXRpb24sXG4gICAgICAgICAqIGJ1dCB5b3UgbWF5IGNvbmZpZ3VyZSBzdWIgcm91dGVzL3BhdGhzIHRvIGFsc28gYmUgY29uc2lkZXJlZCBhY3RpdmVcbiAgICAgICAgICogU2VlOiBgQGFjdGl2ZU9uU3ViUGF0aHNgXG4gICAgICAgICAqXG4gICAgICAgICAqIE5vdGUgdGhhdCBleHRlcm5hbCBsaW5rcyBhcmUgbmV2ZXIgYWN0aXZlLlxuICAgICAgICAgKi9cbiAgICAgICAgaXNBY3RpdmU6IGJvb2xlYW47XG4gICAgICB9LFxuICAgIF07XG4gIH07XG59XG5cbi8qKlxuICogQSBsaWdodCB3cmFwcGVyIGFyb3VuZCB0aGUgW0FuY2hvciBlbGVtZW50XVttZG4tYV0sIHdoaWNoIHdpbGwgYXBwcm9wcmlhdGVseSBtYWtlIHlvdXIgbGluayBhbiBleHRlcm5hbCBsaW5rIGlmIHRoZSBwYXNzZWQgYEBocmVmYCBpcyBub3Qgb24gdGhlIHNhbWUgZG9tYWluLlxuICpcbiAqXG4gKiBbbWRuLWFdOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYVxuICovXG5leHBvcnQgY29uc3QgTGluazogVE9DPFNpZ25hdHVyZT4gPSA8dGVtcGxhdGU-XG4gIHt7I2xldCAobGluayBAaHJlZiBpbmNsdWRlQWN0aXZlUXVlcnlQYXJhbXM9QGluY2x1ZGVBY3RpdmVRdWVyeVBhcmFtcyBhY3RpdmVPblN1YlBhdGhzPUBhY3RpdmVPblN1YlBhdGhzKSBhcyB8bHx9fVxuICAgIHt7I2lmIGwuaXNFeHRlcm5hbH19XG4gICAgICA8RXh0ZXJuYWxMaW5rIGhyZWY9e3tAaHJlZn19IC4uLmF0dHJpYnV0ZXM-XG4gICAgICAgIHt7eWllbGQgKGhhc2ggaXNFeHRlcm5hbD10cnVlIGlzQWN0aXZlPWZhbHNlKX19XG4gICAgICA8L0V4dGVybmFsTGluaz5cbiAgICB7e2Vsc2V9fVxuICAgICAgPGFcbiAgICAgICAgZGF0YS1hY3RpdmU9e3tsLmlzQWN0aXZlfX1cbiAgICAgICAgaHJlZj17e2lmIEBocmVmIEBocmVmIFwiIyNtaXNzaW5nIyNcIn19XG4gICAgICAgIHt7b24gXCJjbGlja1wiIGwuaGFuZGxlQ2xpY2t9fVxuICAgICAgICAuLi5hdHRyaWJ1dGVzXG4gICAgICA-XG4gICAgICAgIHt7eWllbGQgKGhhc2ggaXNFeHRlcm5hbD1mYWxzZSBpc0FjdGl2ZT1sLmlzQWN0aXZlKX19XG4gICAgICA8L2E-XG4gICAge3svaWZ9fVxuICB7ey9sZXR9fVxuPC90ZW1wbGF0ZT47XG5cbmV4cG9ydCBkZWZhdWx0IExpbms7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0NBS0M7QUFDRCxTQUFTLElBQUksUUFBUSxnQkFBZ0I7QUFDckMsU0FBUyxFQUFFLFFBQVEsa0JBQWtCO0FBRXJDLFNBQVMsSUFBSSxRQUFRLHFCQUFxQjtBQUMxQyxTQUFTLFlBQVksUUFBUSxzQkFBc0I7QUFFbkQsY0FBYyxHQUFHLFFBQVEsaUNBQWlDO0FBRTFELGlCQUFpQjtJQUNmLFNBQVM7SUFDVDtRQUNFOztLQUVDLEdBQ0QsTUFBTSxNQUFNO1FBQ1o7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FzQkMsR0FDRCwyQkFBMkIsSUFBSSxHQUFHLE1BQU07UUFDeEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQTJCQyxHQUNELG1CQUFtQixJQUFJOztJQUV6QjtRQUNFO2dCQUVJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0F3QkMsR0FDRCxZQUFZLE9BQU87Z0JBQ25COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQW1DQyxHQUNELFVBQVUsT0FBTzs7OztBQU16Qjs7Ozs7Q0FLQyxHQUNELE9BQU8sTUFBTSxNQUFNLElBQUksYUFBYSxTQUFVLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBaUI5QyxDQUFBLEVBQUE7SUFBQTtRQUFBLE9BQUEsS0FBQSxTQUFBLENBQUEsRUFBVztJQUFEO0FBQUEsR0FBRTtBQUVaLGVBQWUsS0FBSyJ9"],"names":["Link","setComponentTemplate","precompileTemplate","strictMode","scope","link","ExternalLink","hash","on","templateOnly"],"mappings":";;;;;;;;AAAA;;;;;;AAkJA;;;;;;MAMaA,IAAU,GAAAC,oBAAA,CAAaC,kBAAA,CAiBpC,ogBAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,IAAA;IAAAC,YAAA;IAAAC,IAAA;AAAAC,IAAAA,EAAAA;AAAA,GAAA,CAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
@@ -41,11 +41,11 @@ function focusOnHover(e1) {
41
41
  }
42
42
  }
43
43
  const Item = setComponentTemplate(precompileTemplate("\n <button type=\"button\" role=\"menuitem\" {{!-- @glint-ignore !--}} {{(if @onSelect (modifier on \"click\" @onSelect))}} {{on \"pointermove\" focusOnHover}} ...attributes>\n {{yield}}\n </button>\n", {
44
+ strictMode: true,
44
45
  scope: () => ({
45
46
  on,
46
47
  focusOnHover
47
- }),
48
- strictMode: true
48
+ })
49
49
  }), templateOnly());
50
50
  const installContent = modifier((element1, _1, {
51
51
  isOpen: isOpen1,
@@ -77,6 +77,7 @@ const installContent = modifier((element1, _1, {
77
77
  };
78
78
  });
79
79
  const Content = setComponentTemplate(precompileTemplate("\n {{#if @isOpen.current}}\n <@PopoverContent id={{@contentId}} role=\"menu\" data-tabster={{TABSTER_CONFIG_CONTENT}} tabindex=\"0\" {{installContent isOpen=@isOpen triggerElement=@triggerElement}} {{on \"click\" @isOpen.toggle}} ...attributes>\n {{yield (hash Item=Item Separator=Separator)}}\n </@PopoverContent>\n {{/if}}\n", {
80
+ strictMode: true,
80
81
  scope: () => ({
81
82
  TABSTER_CONFIG_CONTENT,
82
83
  installContent,
@@ -84,8 +85,7 @@ const Content = setComponentTemplate(precompileTemplate("\n {{#if @isOpen.curre
84
85
  hash,
85
86
  Item,
86
87
  Separator
87
- }),
88
- strictMode: true
88
+ })
89
89
  }), templateOnly());
90
90
  const trigger = modifier((element1, _1, {
91
91
  triggerElement: triggerElement1,
@@ -119,6 +119,7 @@ class Menu extends Component {
119
119
  contentId = guidFor(this);
120
120
  static {
121
121
  setComponentTemplate(precompileTemplate("\n {{#let (IsOpen) (TriggerElement) as |isOpen triggerEl|}}\n <Popover @flipOptions={{@flipOptions}} @middleware={{@middleware}} @offsetOptions={{@offsetOptions}} @placement={{@placement}} @shiftOptions={{@shiftOptions}} @strategy={{@strategy}} @inline={{@inline}} as |p|>\n {{#let (modifier trigger triggerElement=triggerEl isOpen=isOpen contentId=this.contentId setHook=p.setHook) as |triggerModifier|}}\n {{yield (hash trigger=triggerModifier Trigger=(component Trigger triggerModifier=triggerModifier) Content=(component Content PopoverContent=p.Content isOpen=isOpen triggerElement=triggerEl contentId=this.contentId) arrow=p.arrow isOpen=isOpen.current)}}\n {{/let}}\n </Popover>\n {{/let}}\n ", {
122
+ strictMode: true,
122
123
  scope: () => ({
123
124
  IsOpen,
124
125
  TriggerElement,
@@ -127,8 +128,7 @@ class Menu extends Component {
127
128
  hash,
128
129
  Trigger,
129
130
  Content
130
- }),
131
- strictMode: true
131
+ })
132
132
  }), this);
133
133
  }
134
134
  }
@@ -1 +1 @@
1
- {"version":3,"file":"menu.js","sources":["../../src/components/menu.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport Component from '@glimmer/component';\nimport { hash } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport { guidFor } from '@ember/object/internals';\nimport { modifier as eModifier } from 'ember-modifier';\nimport { cell } from 'ember-resources';\nimport { getTabster, getTabsterAttribute, setTabsterAttribute, Types } from 'tabster';\nimport { Popover, type Signature as PopoverSignature } from './popover.gts';\nimport type { TOC } from '@ember/component/template-only';\nimport type { WithBoundArgs } from '@glint/template';\ntype Cell<V> = ReturnType<typeof cell>;\ntype PopoverArgs = PopoverSignature['Args'];\ntype PopoverBlockParams = PopoverSignature['Blocks']['default'][0];\nconst TABSTER_CONFIG_CONTENT = getTabsterAttribute({\n mover: {\n direction: Types.MoverDirections.Both,\n cyclic: true\n },\n deloser: {}\n}, true);\nconst TABSTER_CONFIG_TRIGGER = {\n deloser: {}\n};\nexport interface Signature {\n Args: PopoverArgs;\n Blocks: {\n default: [{\n arrow: PopoverBlockParams['arrow'];\n trigger: WithBoundArgs<typeof trigger, 'triggerElement' | 'contentId' | 'isOpen' | 'setHook'>;\n Trigger: WithBoundArgs<typeof Trigger, 'triggerModifier'>;\n Content: WithBoundArgs<typeof Content, 'triggerElement' | 'contentId' | 'isOpen' | 'PopoverContent'>;\n isOpen: boolean;\n }];\n };\n}\nexport interface SeparatorSignature {\n Element: HTMLDivElement;\n Args: {\n };\n Blocks: {\n default: [];\n };\n}\nconst Separator: TOC<SeparatorSignature> = template(`\n <div role=\"separator\" ...attributes>\n {{yield}}\n </div>\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\n/**\n * We focus items on `pointerMove` to achieve the following:\n *\n * - Mouse over an item (it focuses)\n * - Leave mouse where it is and use keyboard to focus a different item\n * - Wiggle mouse without it leaving previously focused item\n * - Previously focused item should re-focus\n *\n * If we used `mouseOver`/`mouseEnter` it would not re-focus when the mouse\n * wiggles. This is to match native menu implementation.\n */ function focusOnHover(e1: PointerEvent) {\n const item1 = e1.currentTarget;\n if (item1 instanceof HTMLElement) {\n item1?.focus();\n }\n}\nexport interface ItemSignature {\n Element: HTMLButtonElement;\n Args: {\n onSelect?: (event: Event) => void;\n };\n Blocks: {\n default: [];\n };\n}\nconst Item: TOC<ItemSignature> = template(`\n <button\n type=\"button\"\n role=\"menuitem\"\n {{! @glint-ignore !}}\n {{(if @onSelect (modifier on \"click\" @onSelect))}}\n {{on \"pointermove\" focusOnHover}}\n ...attributes\n >\n {{yield}}\n </button>\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nconst installContent = eModifier<{\n Element: HTMLElement;\n Args: {\n Named: {\n isOpen: Cell<boolean>;\n triggerElement: Cell<HTMLElement>;\n };\n };\n}>((element1, _1: [], { isOpen: isOpen1, triggerElement: triggerElement1 })=>{\n // focus first focusable element on the content\n const tabster1 = getTabster(window);\n const firstFocusable1 = tabster1?.focusable.findFirst({\n container: element1\n });\n firstFocusable1?.focus();\n // listen for \"outside\" clicks\n function onDocumentClick1(e1: MouseEvent) {\n if (isOpen1.current && e1.target && !element1.contains(e1.target as HTMLElement) && !triggerElement1.current?.contains(e1.target as HTMLElement)) {\n isOpen1.current = false;\n }\n }\n // listen for the escape key\n function onDocumentKeydown1(e1: KeyboardEvent) {\n if (isOpen1.current && e1.key === 'Escape') {\n isOpen1.current = false;\n }\n }\n document.addEventListener('click', onDocumentClick1);\n document.addEventListener('keydown', onDocumentKeydown1);\n return ()=>{\n document.removeEventListener('click', onDocumentClick1);\n document.removeEventListener('keydown', onDocumentKeydown1);\n };\n});\ninterface PrivateContentSignature {\n Element: HTMLDivElement;\n Args: {\n triggerElement: Cell<HTMLElement>;\n contentId: string;\n isOpen: Cell<boolean>;\n PopoverContent: PopoverBlockParams['Content'];\n };\n Blocks: {\n default: [{\n Item: typeof Item;\n Separator: typeof Separator;\n }];\n };\n}\nexport interface ContentSignature {\n Element: PrivateContentSignature['Element'];\n Args: {\n };\n Blocks: PrivateContentSignature['Blocks'];\n}\nconst Content: TOC<PrivateContentSignature> = template(`\n {{#if @isOpen.current}}\n <@PopoverContent\n id={{@contentId}}\n role=\"menu\"\n data-tabster={{TABSTER_CONFIG_CONTENT}}\n tabindex=\"0\"\n {{installContent isOpen=@isOpen triggerElement=@triggerElement}}\n {{on \"click\" @isOpen.toggle}}\n ...attributes\n >\n {{yield (hash Item=Item Separator=Separator)}}\n </@PopoverContent>\n {{/if}}\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\ninterface PrivateTriggerModifierSignature {\n Element: HTMLElement;\n Args: {\n Named: {\n triggerElement: Cell<HTMLElement>;\n isOpen: Cell<boolean>;\n contentId: string;\n setHook: PopoverBlockParams['setHook'];\n };\n };\n}\nexport interface TriggerModifierSignature {\n Element: PrivateTriggerModifierSignature['Element'];\n}\nconst trigger = eModifier<PrivateTriggerModifierSignature>((element1, _1: [], { triggerElement: triggerElement1, isOpen: isOpen1, contentId: contentId1, setHook: setHook1 })=>{\n element1.setAttribute('aria-haspopup', 'menu');\n if (isOpen1.current) {\n element1.setAttribute('aria-controls', contentId1);\n element1.setAttribute('aria-expanded', 'true');\n } else {\n element1.removeAttribute('aria-controls');\n element1.setAttribute('aria-expanded', 'false');\n }\n setTabsterAttribute(element1, TABSTER_CONFIG_TRIGGER);\n const onTriggerClick1 = ()=>isOpen1.toggle();\n element1.addEventListener('click', onTriggerClick1);\n triggerElement1.current = element1;\n setHook1(element1);\n return ()=>{\n element1.removeEventListener('click', onTriggerClick1);\n };\n});\ninterface PrivateTriggerSignature {\n Element: HTMLButtonElement;\n Args: {\n triggerModifier: WithBoundArgs<typeof trigger, 'triggerElement' | 'contentId' | 'isOpen' | 'setHook'>;\n };\n Blocks: {\n default: [];\n };\n}\nexport interface TriggerSignature {\n Element: PrivateTriggerSignature['Element'];\n Args: {\n };\n Blocks: PrivateTriggerSignature['Blocks'];\n}\nconst Trigger: TOC<PrivateTriggerSignature> = template(`\n <button type=\"button\" {{@triggerModifier}} ...attributes>\n {{yield}}\n </button>\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nconst IsOpen = ()=>cell<boolean>(false);\nconst TriggerElement = ()=>cell<HTMLElement>();\nexport class Menu extends Component<Signature> {\n contentId = guidFor(this);\n static{\n template(`\n {{#let (IsOpen) (TriggerElement) as |isOpen triggerEl|}}\n <Popover\n @flipOptions={{@flipOptions}}\n @middleware={{@middleware}}\n @offsetOptions={{@offsetOptions}}\n @placement={{@placement}}\n @shiftOptions={{@shiftOptions}}\n @strategy={{@strategy}}\n @inline={{@inline}}\n as |p|\n >\n {{#let\n (modifier\n trigger\n triggerElement=triggerEl\n isOpen=isOpen\n contentId=this.contentId\n setHook=p.setHook\n )\n as |triggerModifier|\n }}\n {{yield\n (hash\n trigger=triggerModifier\n Trigger=(component Trigger triggerModifier=triggerModifier)\n Content=(component\n Content\n PopoverContent=p.Content\n isOpen=isOpen\n triggerElement=triggerEl\n contentId=this.contentId\n )\n arrow=p.arrow\n isOpen=isOpen.current\n )\n }}\n {{/let}}\n </Popover>\n {{/let}}\n `, {\n component: this,\n eval () {\n return eval(arguments[0]);\n }\n });\n }\n}\nexport default Menu;\n//# sourceMappingURL=data:application/json;base64,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
+ {"version":3,"file":"menu.js","sources":["../../src/components/menu.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport Component from '@glimmer/component';\nimport { hash } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport { guidFor } from '@ember/object/internals';\nimport { modifier as eModifier } from 'ember-modifier';\nimport { cell } from 'ember-resources';\nimport { getTabster, getTabsterAttribute, setTabsterAttribute, Types } from 'tabster';\nimport { Popover, type Signature as PopoverSignature } from './popover.gts';\nimport type { TOC } from '@ember/component/template-only';\nimport type { WithBoundArgs } from '@glint/template';\ntype Cell<V> = ReturnType<typeof cell>;\ntype PopoverArgs = PopoverSignature['Args'];\ntype PopoverBlockParams = PopoverSignature['Blocks']['default'][0];\nconst TABSTER_CONFIG_CONTENT = getTabsterAttribute({\n mover: {\n direction: Types.MoverDirections.Both,\n cyclic: true\n },\n deloser: {}\n}, true);\nconst TABSTER_CONFIG_TRIGGER = {\n deloser: {}\n};\nexport interface Signature {\n Args: PopoverArgs;\n Blocks: {\n default: [{\n arrow: PopoverBlockParams['arrow'];\n trigger: WithBoundArgs<typeof trigger, 'triggerElement' | 'contentId' | 'isOpen' | 'setHook'>;\n Trigger: WithBoundArgs<typeof Trigger, 'triggerModifier'>;\n Content: WithBoundArgs<typeof Content, 'triggerElement' | 'contentId' | 'isOpen' | 'PopoverContent'>;\n isOpen: boolean;\n }];\n };\n}\nexport interface SeparatorSignature {\n Element: HTMLDivElement;\n Args: {\n };\n Blocks: {\n default: [];\n };\n}\nconst Separator: TOC<SeparatorSignature> = template(`\n <div role=\"separator\" ...attributes>\n {{yield}}\n </div>\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\n/**\n * We focus items on `pointerMove` to achieve the following:\n *\n * - Mouse over an item (it focuses)\n * - Leave mouse where it is and use keyboard to focus a different item\n * - Wiggle mouse without it leaving previously focused item\n * - Previously focused item should re-focus\n *\n * If we used `mouseOver`/`mouseEnter` it would not re-focus when the mouse\n * wiggles. This is to match native menu implementation.\n */ function focusOnHover(e1: PointerEvent) {\n const item1 = e1.currentTarget;\n if (item1 instanceof HTMLElement) {\n item1?.focus();\n }\n}\nexport interface ItemSignature {\n Element: HTMLButtonElement;\n Args: {\n onSelect?: (event: Event) => void;\n };\n Blocks: {\n default: [];\n };\n}\nconst Item: TOC<ItemSignature> = template(`\n <button\n type=\"button\"\n role=\"menuitem\"\n {{! @glint-ignore !}}\n {{(if @onSelect (modifier on \"click\" @onSelect))}}\n {{on \"pointermove\" focusOnHover}}\n ...attributes\n >\n {{yield}}\n </button>\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nconst installContent = eModifier<{\n Element: HTMLElement;\n Args: {\n Named: {\n isOpen: Cell<boolean>;\n triggerElement: Cell<HTMLElement>;\n };\n };\n}>((element1, _1: [], { isOpen: isOpen1, triggerElement: triggerElement1 })=>{\n // focus first focusable element on the content\n const tabster1 = getTabster(window);\n const firstFocusable1 = tabster1?.focusable.findFirst({\n container: element1\n });\n firstFocusable1?.focus();\n // listen for \"outside\" clicks\n function onDocumentClick1(e1: MouseEvent) {\n if (isOpen1.current && e1.target && !element1.contains(e1.target as HTMLElement) && !triggerElement1.current?.contains(e1.target as HTMLElement)) {\n isOpen1.current = false;\n }\n }\n // listen for the escape key\n function onDocumentKeydown1(e1: KeyboardEvent) {\n if (isOpen1.current && e1.key === 'Escape') {\n isOpen1.current = false;\n }\n }\n document.addEventListener('click', onDocumentClick1);\n document.addEventListener('keydown', onDocumentKeydown1);\n return ()=>{\n document.removeEventListener('click', onDocumentClick1);\n document.removeEventListener('keydown', onDocumentKeydown1);\n };\n});\ninterface PrivateContentSignature {\n Element: HTMLDivElement;\n Args: {\n triggerElement: Cell<HTMLElement>;\n contentId: string;\n isOpen: Cell<boolean>;\n PopoverContent: PopoverBlockParams['Content'];\n };\n Blocks: {\n default: [{\n Item: typeof Item;\n Separator: typeof Separator;\n }];\n };\n}\nexport interface ContentSignature {\n Element: PrivateContentSignature['Element'];\n Args: {\n };\n Blocks: PrivateContentSignature['Blocks'];\n}\nconst Content: TOC<PrivateContentSignature> = template(`\n {{#if @isOpen.current}}\n <@PopoverContent\n id={{@contentId}}\n role=\"menu\"\n data-tabster={{TABSTER_CONFIG_CONTENT}}\n tabindex=\"0\"\n {{installContent isOpen=@isOpen triggerElement=@triggerElement}}\n {{on \"click\" @isOpen.toggle}}\n ...attributes\n >\n {{yield (hash Item=Item Separator=Separator)}}\n </@PopoverContent>\n {{/if}}\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\ninterface PrivateTriggerModifierSignature {\n Element: HTMLElement;\n Args: {\n Named: {\n triggerElement: Cell<HTMLElement>;\n isOpen: Cell<boolean>;\n contentId: string;\n setHook: PopoverBlockParams['setHook'];\n };\n };\n}\nexport interface TriggerModifierSignature {\n Element: PrivateTriggerModifierSignature['Element'];\n}\nconst trigger = eModifier<PrivateTriggerModifierSignature>((element1, _1: [], { triggerElement: triggerElement1, isOpen: isOpen1, contentId: contentId1, setHook: setHook1 })=>{\n element1.setAttribute('aria-haspopup', 'menu');\n if (isOpen1.current) {\n element1.setAttribute('aria-controls', contentId1);\n element1.setAttribute('aria-expanded', 'true');\n } else {\n element1.removeAttribute('aria-controls');\n element1.setAttribute('aria-expanded', 'false');\n }\n setTabsterAttribute(element1, TABSTER_CONFIG_TRIGGER);\n const onTriggerClick1 = ()=>isOpen1.toggle();\n element1.addEventListener('click', onTriggerClick1);\n triggerElement1.current = element1;\n setHook1(element1);\n return ()=>{\n element1.removeEventListener('click', onTriggerClick1);\n };\n});\ninterface PrivateTriggerSignature {\n Element: HTMLButtonElement;\n Args: {\n triggerModifier: WithBoundArgs<typeof trigger, 'triggerElement' | 'contentId' | 'isOpen' | 'setHook'>;\n };\n Blocks: {\n default: [];\n };\n}\nexport interface TriggerSignature {\n Element: PrivateTriggerSignature['Element'];\n Args: {\n };\n Blocks: PrivateTriggerSignature['Blocks'];\n}\nconst Trigger: TOC<PrivateTriggerSignature> = template(`\n <button type=\"button\" {{@triggerModifier}} ...attributes>\n {{yield}}\n </button>\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nconst IsOpen = ()=>cell<boolean>(false);\nconst TriggerElement = ()=>cell<HTMLElement>();\nexport class Menu extends Component<Signature> {\n contentId = guidFor(this);\n static{\n template(`\n {{#let (IsOpen) (TriggerElement) as |isOpen triggerEl|}}\n <Popover\n @flipOptions={{@flipOptions}}\n @middleware={{@middleware}}\n @offsetOptions={{@offsetOptions}}\n @placement={{@placement}}\n @shiftOptions={{@shiftOptions}}\n @strategy={{@strategy}}\n @inline={{@inline}}\n as |p|\n >\n {{#let\n (modifier\n trigger\n triggerElement=triggerEl\n isOpen=isOpen\n contentId=this.contentId\n setHook=p.setHook\n )\n as |triggerModifier|\n }}\n {{yield\n (hash\n trigger=triggerModifier\n Trigger=(component Trigger triggerModifier=triggerModifier)\n Content=(component\n Content\n PopoverContent=p.Content\n isOpen=isOpen\n triggerElement=triggerEl\n contentId=this.contentId\n )\n arrow=p.arrow\n isOpen=isOpen.current\n )\n }}\n {{/let}}\n </Popover>\n {{/let}}\n `, {\n component: this,\n eval () {\n return eval(arguments[0]);\n }\n });\n }\n}\nexport default Menu;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL252cC9EZXZlbG9wbWVudC9OdWxsVm94UG9wdWxpL2VtYmVyLXByaW1pdGl2ZXMvZW1iZXItcHJpbWl0aXZlcy9zcmMvY29tcG9uZW50cy9tZW51Lmd0cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29tcG9uZW50IGZyb20gJ0BnbGltbWVyL2NvbXBvbmVudCc7XG5pbXBvcnQgeyBoYXNoIH0gZnJvbSAnQGVtYmVyL2hlbHBlcic7XG5pbXBvcnQgeyBvbiB9IGZyb20gJ0BlbWJlci9tb2RpZmllcic7XG5pbXBvcnQgeyBndWlkRm9yIH0gZnJvbSAnQGVtYmVyL29iamVjdC9pbnRlcm5hbHMnO1xuXG5pbXBvcnQgeyBtb2RpZmllciBhcyBlTW9kaWZpZXIgfSBmcm9tICdlbWJlci1tb2RpZmllcic7XG5pbXBvcnQgeyBjZWxsIH0gZnJvbSAnZW1iZXItcmVzb3VyY2VzJztcbmltcG9ydCB7IGdldFRhYnN0ZXIsIGdldFRhYnN0ZXJBdHRyaWJ1dGUsIHNldFRhYnN0ZXJBdHRyaWJ1dGUsIFR5cGVzIH0gZnJvbSAndGFic3Rlcic7XG5cbmltcG9ydCB7IFBvcG92ZXIsIHR5cGUgU2lnbmF0dXJlIGFzIFBvcG92ZXJTaWduYXR1cmUgfSBmcm9tICcuL3BvcG92ZXIuZ3RzJztcblxuaW1wb3J0IHR5cGUgeyBUT0MgfSBmcm9tICdAZW1iZXIvY29tcG9uZW50L3RlbXBsYXRlLW9ubHknO1xuaW1wb3J0IHR5cGUgeyBXaXRoQm91bmRBcmdzIH0gZnJvbSAnQGdsaW50L3RlbXBsYXRlJztcblxudHlwZSBDZWxsPFY-ID0gUmV0dXJuVHlwZTx0eXBlb2YgY2VsbDxWPj47XG50eXBlIFBvcG92ZXJBcmdzID0gUG9wb3ZlclNpZ25hdHVyZVsnQXJncyddO1xudHlwZSBQb3BvdmVyQmxvY2tQYXJhbXMgPSBQb3BvdmVyU2lnbmF0dXJlWydCbG9ja3MnXVsnZGVmYXVsdCddWzBdO1xuXG5jb25zdCBUQUJTVEVSX0NPTkZJR19DT05URU5UID0gZ2V0VGFic3RlckF0dHJpYnV0ZShcbiAge1xuICAgIG1vdmVyOiB7XG4gICAgICBkaXJlY3Rpb246IFR5cGVzLk1vdmVyRGlyZWN0aW9ucy5Cb3RoLFxuICAgICAgY3ljbGljOiB0cnVlLFxuICAgIH0sXG4gICAgZGVsb3Nlcjoge30sXG4gIH0sXG4gIHRydWVcbik7XG5cbmNvbnN0IFRBQlNURVJfQ09ORklHX1RSSUdHRVIgPSB7XG4gIGRlbG9zZXI6IHt9LFxufTtcblxuZXhwb3J0IGludGVyZmFjZSBTaWduYXR1cmUge1xuICBBcmdzOiBQb3BvdmVyQXJncztcbiAgQmxvY2tzOiB7XG4gICAgZGVmYXVsdDogW1xuICAgICAge1xuICAgICAgICBhcnJvdzogUG9wb3ZlckJsb2NrUGFyYW1zWydhcnJvdyddO1xuICAgICAgICB0cmlnZ2VyOiBXaXRoQm91bmRBcmdzPFxuICAgICAgICAgIHR5cGVvZiB0cmlnZ2VyLFxuICAgICAgICAgICd0cmlnZ2VyRWxlbWVudCcgfCAnY29udGVudElkJyB8ICdpc09wZW4nIHwgJ3NldEhvb2snXG4gICAgICAgID47XG4gICAgICAgIFRyaWdnZXI6IFdpdGhCb3VuZEFyZ3M8dHlwZW9mIFRyaWdnZXIsICd0cmlnZ2VyTW9kaWZpZXInPjtcbiAgICAgICAgQ29udGVudDogV2l0aEJvdW5kQXJnczxcbiAgICAgICAgICB0eXBlb2YgQ29udGVudCxcbiAgICAgICAgICAndHJpZ2dlckVsZW1lbnQnIHwgJ2NvbnRlbnRJZCcgfCAnaXNPcGVuJyB8ICdQb3BvdmVyQ29udGVudCdcbiAgICAgICAgPjtcbiAgICAgICAgaXNPcGVuOiBib29sZWFuO1xuICAgICAgfSxcbiAgICBdO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlcGFyYXRvclNpZ25hdHVyZSB7XG4gIEVsZW1lbnQ6IEhUTUxEaXZFbGVtZW50O1xuICBBcmdzOiB7fTtcbiAgQmxvY2tzOiB7IGRlZmF1bHQ6IFtdIH07XG59XG5cbmNvbnN0IFNlcGFyYXRvcjogVE9DPFNlcGFyYXRvclNpZ25hdHVyZT4gPSA8dGVtcGxhdGU-XG4gIDxkaXYgcm9sZT1cInNlcGFyYXRvclwiIC4uLmF0dHJpYnV0ZXM-XG4gICAge3t5aWVsZH19XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT47XG5cbi8qKlxuICogV2UgZm9jdXMgaXRlbXMgb24gYHBvaW50ZXJNb3ZlYCB0byBhY2hpZXZlIHRoZSBmb2xsb3dpbmc6XG4gKlxuICogLSBNb3VzZSBvdmVyIGFuIGl0ZW0gKGl0IGZvY3VzZXMpXG4gKiAtIExlYXZlIG1vdXNlIHdoZXJlIGl0IGlzIGFuZCB1c2Uga2V5Ym9hcmQgdG8gZm9jdXMgYSBkaWZmZXJlbnQgaXRlbVxuICogLSBXaWdnbGUgbW91c2Ugd2l0aG91dCBpdCBsZWF2aW5nIHByZXZpb3VzbHkgZm9jdXNlZCBpdGVtXG4gKiAtIFByZXZpb3VzbHkgZm9jdXNlZCBpdGVtIHNob3VsZCByZS1mb2N1c1xuICpcbiAqIElmIHdlIHVzZWQgYG1vdXNlT3ZlcmAvYG1vdXNlRW50ZXJgIGl0IHdvdWxkIG5vdCByZS1mb2N1cyB3aGVuIHRoZSBtb3VzZVxuICogd2lnZ2xlcy4gVGhpcyBpcyB0byBtYXRjaCBuYXRpdmUgbWVudSBpbXBsZW1lbnRhdGlvbi5cbiAqL1xuZnVuY3Rpb24gZm9jdXNPbkhvdmVyKGU6IFBvaW50ZXJFdmVudCkge1xuICBjb25zdCBpdGVtID0gZS5jdXJyZW50VGFyZ2V0O1xuXG4gIGlmIChpdGVtIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICBpdGVtPy5mb2N1cygpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSXRlbVNpZ25hdHVyZSB7XG4gIEVsZW1lbnQ6IEhUTUxCdXR0b25FbGVtZW50O1xuICBBcmdzOiB7IG9uU2VsZWN0PzogKGV2ZW50OiBFdmVudCkgPT4gdm9pZCB9O1xuICBCbG9ja3M6IHsgZGVmYXVsdDogW10gfTtcbn1cblxuY29uc3QgSXRlbTogVE9DPEl0ZW1TaWduYXR1cmU-ID0gPHRlbXBsYXRlPlxuICA8YnV0dG9uXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgcm9sZT1cIm1lbnVpdGVtXCJcbiAgICB7eyEgQGdsaW50LWlnbm9yZSAhfX1cbiAgICB7eyhpZiBAb25TZWxlY3QgKG1vZGlmaWVyIG9uIFwiY2xpY2tcIiBAb25TZWxlY3QpKX19XG4gICAge3tvbiBcInBvaW50ZXJtb3ZlXCIgZm9jdXNPbkhvdmVyfX1cbiAgICAuLi5hdHRyaWJ1dGVzXG4gID5cbiAgICB7e3lpZWxkfX1cbiAgPC9idXR0b24-XG48L3RlbXBsYXRlPjtcblxuY29uc3QgaW5zdGFsbENvbnRlbnQgPSBlTW9kaWZpZXI8e1xuICBFbGVtZW50OiBIVE1MRWxlbWVudDtcbiAgQXJnczoge1xuICAgIE5hbWVkOiB7XG4gICAgICBpc09wZW46IENlbGw8Ym9vbGVhbj47XG4gICAgICB0cmlnZ2VyRWxlbWVudDogQ2VsbDxIVE1MRWxlbWVudD47XG4gICAgfTtcbiAgfTtcbn0-KChlbGVtZW50LCBfOiBbXSwgeyBpc09wZW4sIHRyaWdnZXJFbGVtZW50IH0pID0-IHtcbiAgLy8gZm9jdXMgZmlyc3QgZm9jdXNhYmxlIGVsZW1lbnQgb24gdGhlIGNvbnRlbnRcbiAgY29uc3QgdGFic3RlciA9IGdldFRhYnN0ZXIod2luZG93KTtcbiAgY29uc3QgZmlyc3RGb2N1c2FibGUgPSB0YWJzdGVyPy5mb2N1c2FibGUuZmluZEZpcnN0KHtcbiAgICBjb250YWluZXI6IGVsZW1lbnQsXG4gIH0pO1xuXG4gIGZpcnN0Rm9jdXNhYmxlPy5mb2N1cygpO1xuXG4gIC8vIGxpc3RlbiBmb3IgXCJvdXRzaWRlXCIgY2xpY2tzXG4gIGZ1bmN0aW9uIG9uRG9jdW1lbnRDbGljayhlOiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKFxuICAgICAgaXNPcGVuLmN1cnJlbnQgJiZcbiAgICAgIGUudGFyZ2V0ICYmXG4gICAgICAhZWxlbWVudC5jb250YWlucyhlLnRhcmdldCBhcyBIVE1MRWxlbWVudCkgJiZcbiAgICAgICF0cmlnZ2VyRWxlbWVudC5jdXJyZW50Py5jb250YWlucyhlLnRhcmdldCBhcyBIVE1MRWxlbWVudClcbiAgICApIHtcbiAgICAgIGlzT3Blbi5jdXJyZW50ID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLy8gbGlzdGVuIGZvciB0aGUgZXNjYXBlIGtleVxuICBmdW5jdGlvbiBvbkRvY3VtZW50S2V5ZG93bihlOiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKGlzT3Blbi5jdXJyZW50ICYmIGUua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgaXNPcGVuLmN1cnJlbnQgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIG9uRG9jdW1lbnRDbGljayk7XG4gIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBvbkRvY3VtZW50S2V5ZG93bik7XG5cbiAgcmV0dXJuICgpID0-IHtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIG9uRG9jdW1lbnRDbGljayk7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIG9uRG9jdW1lbnRLZXlkb3duKTtcbiAgfTtcbn0pO1xuXG5pbnRlcmZhY2UgUHJpdmF0ZUNvbnRlbnRTaWduYXR1cmUge1xuICBFbGVtZW50OiBIVE1MRGl2RWxlbWVudDtcbiAgQXJnczoge1xuICAgIHRyaWdnZXJFbGVtZW50OiBDZWxsPEhUTUxFbGVtZW50PjtcbiAgICBjb250ZW50SWQ6IHN0cmluZztcbiAgICBpc09wZW46IENlbGw8Ym9vbGVhbj47XG4gICAgUG9wb3ZlckNvbnRlbnQ6IFBvcG92ZXJCbG9ja1BhcmFtc1snQ29udGVudCddO1xuICB9O1xuICBCbG9ja3M6IHsgZGVmYXVsdDogW3sgSXRlbTogdHlwZW9mIEl0ZW07IFNlcGFyYXRvcjogdHlwZW9mIFNlcGFyYXRvciB9XSB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRlbnRTaWduYXR1cmUge1xuICBFbGVtZW50OiBQcml2YXRlQ29udGVudFNpZ25hdHVyZVsnRWxlbWVudCddO1xuICBBcmdzOiB7fTtcbiAgQmxvY2tzOiBQcml2YXRlQ29udGVudFNpZ25hdHVyZVsnQmxvY2tzJ107XG59XG5cbmNvbnN0IENvbnRlbnQ6IFRPQzxQcml2YXRlQ29udGVudFNpZ25hdHVyZT4gPSA8dGVtcGxhdGU-XG4gIHt7I2lmIEBpc09wZW4uY3VycmVudH19XG4gICAgPEBQb3BvdmVyQ29udGVudFxuICAgICAgaWQ9e3tAY29udGVudElkfX1cbiAgICAgIHJvbGU9XCJtZW51XCJcbiAgICAgIGRhdGEtdGFic3Rlcj17e1RBQlNURVJfQ09ORklHX0NPTlRFTlR9fVxuICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgIHt7aW5zdGFsbENvbnRlbnQgaXNPcGVuPUBpc09wZW4gdHJpZ2dlckVsZW1lbnQ9QHRyaWdnZXJFbGVtZW50fX1cbiAgICAgIHt7b24gXCJjbGlja1wiIEBpc09wZW4udG9nZ2xlfX1cbiAgICAgIC4uLmF0dHJpYnV0ZXNcbiAgICA-XG4gICAgICB7e3lpZWxkIChoYXNoIEl0ZW09SXRlbSBTZXBhcmF0b3I9U2VwYXJhdG9yKX19XG4gICAgPC9AUG9wb3ZlckNvbnRlbnQ-XG4gIHt7L2lmfX1cbjwvdGVtcGxhdGU-O1xuXG5pbnRlcmZhY2UgUHJpdmF0ZVRyaWdnZXJNb2RpZmllclNpZ25hdHVyZSB7XG4gIEVsZW1lbnQ6IEhUTUxFbGVtZW50O1xuICBBcmdzOiB7XG4gICAgTmFtZWQ6IHtcbiAgICAgIHRyaWdnZXJFbGVtZW50OiBDZWxsPEhUTUxFbGVtZW50PjtcbiAgICAgIGlzT3BlbjogQ2VsbDxib29sZWFuPjtcbiAgICAgIGNvbnRlbnRJZDogc3RyaW5nO1xuICAgICAgc2V0SG9vazogUG9wb3ZlckJsb2NrUGFyYW1zWydzZXRIb29rJ107XG4gICAgfTtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmlnZ2VyTW9kaWZpZXJTaWduYXR1cmUge1xuICBFbGVtZW50OiBQcml2YXRlVHJpZ2dlck1vZGlmaWVyU2lnbmF0dXJlWydFbGVtZW50J107XG59XG5cbmNvbnN0IHRyaWdnZXIgPSBlTW9kaWZpZXI8UHJpdmF0ZVRyaWdnZXJNb2RpZmllclNpZ25hdHVyZT4oXG4gIChlbGVtZW50LCBfOiBbXSwgeyB0cmlnZ2VyRWxlbWVudCwgaXNPcGVuLCBjb250ZW50SWQsIHNldEhvb2sgfSkgPT4ge1xuICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLWhhc3BvcHVwJywgJ21lbnUnKTtcblxuICAgIGlmIChpc09wZW4uY3VycmVudCkge1xuICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtY29udHJvbHMnLCBjb250ZW50SWQpO1xuICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCAndHJ1ZScpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1jb250cm9scycpO1xuICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCAnZmFsc2UnKTtcbiAgICB9XG5cbiAgICBzZXRUYWJzdGVyQXR0cmlidXRlKGVsZW1lbnQsIFRBQlNURVJfQ09ORklHX1RSSUdHRVIpO1xuXG4gICAgY29uc3Qgb25UcmlnZ2VyQ2xpY2sgPSAoKSA9PiBpc09wZW4udG9nZ2xlKCk7XG5cbiAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgb25UcmlnZ2VyQ2xpY2spO1xuXG4gICAgdHJpZ2dlckVsZW1lbnQuY3VycmVudCA9IGVsZW1lbnQ7XG4gICAgc2V0SG9vayhlbGVtZW50KTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgb25UcmlnZ2VyQ2xpY2spO1xuICAgIH07XG4gIH1cbik7XG5cbmludGVyZmFjZSBQcml2YXRlVHJpZ2dlclNpZ25hdHVyZSB7XG4gIEVsZW1lbnQ6IEhUTUxCdXR0b25FbGVtZW50O1xuICBBcmdzOiB7XG4gICAgdHJpZ2dlck1vZGlmaWVyOiBXaXRoQm91bmRBcmdzPFxuICAgICAgdHlwZW9mIHRyaWdnZXIsXG4gICAgICAndHJpZ2dlckVsZW1lbnQnIHwgJ2NvbnRlbnRJZCcgfCAnaXNPcGVuJyB8ICdzZXRIb29rJ1xuICAgID47XG4gIH07XG4gIEJsb2NrczogeyBkZWZhdWx0OiBbXSB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyaWdnZXJTaWduYXR1cmUge1xuICBFbGVtZW50OiBQcml2YXRlVHJpZ2dlclNpZ25hdHVyZVsnRWxlbWVudCddO1xuICBBcmdzOiB7fTtcbiAgQmxvY2tzOiBQcml2YXRlVHJpZ2dlclNpZ25hdHVyZVsnQmxvY2tzJ107XG59XG5cbmNvbnN0IFRyaWdnZXI6IFRPQzxQcml2YXRlVHJpZ2dlclNpZ25hdHVyZT4gPSA8dGVtcGxhdGU-XG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHt7QHRyaWdnZXJNb2RpZmllcn19IC4uLmF0dHJpYnV0ZXM-XG4gICAge3t5aWVsZH19XG4gIDwvYnV0dG9uPlxuPC90ZW1wbGF0ZT47XG5cbmNvbnN0IElzT3BlbiA9ICgpID0-IGNlbGw8Ym9vbGVhbj4oZmFsc2UpO1xuY29uc3QgVHJpZ2dlckVsZW1lbnQgPSAoKSA9PiBjZWxsPEhUTUxFbGVtZW50PigpO1xuXG5leHBvcnQgY2xhc3MgTWVudSBleHRlbmRzIENvbXBvbmVudDxTaWduYXR1cmU-IHtcbiAgY29udGVudElkID0gZ3VpZEZvcih0aGlzKTtcblxuICA8dGVtcGxhdGU-XG4gICAge3sjbGV0IChJc09wZW4pIChUcmlnZ2VyRWxlbWVudCkgYXMgfGlzT3BlbiB0cmlnZ2VyRWx8fX1cbiAgICAgIDxQb3BvdmVyXG4gICAgICAgIEBmbGlwT3B0aW9ucz17e0BmbGlwT3B0aW9uc319XG4gICAgICAgIEBtaWRkbGV3YXJlPXt7QG1pZGRsZXdhcmV9fVxuICAgICAgICBAb2Zmc2V0T3B0aW9ucz17e0BvZmZzZXRPcHRpb25zfX1cbiAgICAgICAgQHBsYWNlbWVudD17e0BwbGFjZW1lbnR9fVxuICAgICAgICBAc2hpZnRPcHRpb25zPXt7QHNoaWZ0T3B0aW9uc319XG4gICAgICAgIEBzdHJhdGVneT17e0BzdHJhdGVneX19XG4gICAgICAgIEBpbmxpbmU9e3tAaW5saW5lfX1cbiAgICAgICAgYXMgfHB8XG4gICAgICA-XG4gICAgICAgIHt7I2xldFxuICAgICAgICAgIChtb2RpZmllclxuICAgICAgICAgICAgdHJpZ2dlclxuICAgICAgICAgICAgdHJpZ2dlckVsZW1lbnQ9dHJpZ2dlckVsXG4gICAgICAgICAgICBpc09wZW49aXNPcGVuXG4gICAgICAgICAgICBjb250ZW50SWQ9dGhpcy5jb250ZW50SWRcbiAgICAgICAgICAgIHNldEhvb2s9cC5zZXRIb29rXG4gICAgICAgICAgKVxuICAgICAgICAgIGFzIHx0cmlnZ2VyTW9kaWZpZXJ8XG4gICAgICAgIH19XG4gICAgICAgICAge3t5aWVsZFxuICAgICAgICAgICAgKGhhc2hcbiAgICAgICAgICAgICAgdHJpZ2dlcj10cmlnZ2VyTW9kaWZpZXJcbiAgICAgICAgICAgICAgVHJpZ2dlcj0oY29tcG9uZW50IFRyaWdnZXIgdHJpZ2dlck1vZGlmaWVyPXRyaWdnZXJNb2RpZmllcilcbiAgICAgICAgICAgICAgQ29udGVudD0oY29tcG9uZW50XG4gICAgICAgICAgICAgICAgQ29udGVudFxuICAgICAgICAgICAgICAgIFBvcG92ZXJDb250ZW50PXAuQ29udGVudFxuICAgICAgICAgICAgICAgIGlzT3Blbj1pc09wZW5cbiAgICAgICAgICAgICAgICB0cmlnZ2VyRWxlbWVudD10cmlnZ2VyRWxcbiAgICAgICAgICAgICAgICBjb250ZW50SWQ9dGhpcy5jb250ZW50SWRcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBhcnJvdz1wLmFycm93XG4gICAgICAgICAgICAgIGlzT3Blbj1pc09wZW4uY3VycmVudFxuICAgICAgICAgICAgKVxuICAgICAgICAgIH19XG4gICAgICAgIHt7L2xldH19XG4gICAgICA8L1BvcG92ZXI-XG4gICAge3svbGV0fX1cbiAgPC90ZW1wbGF0ZT5cbn1cblxuZXhwb3J0IGRlZmF1bHQgTWVudTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxlQUFlLHFCQUFxQjtBQUMzQyxTQUFTLElBQUksUUFBUSxnQkFBZ0I7QUFDckMsU0FBUyxFQUFFLFFBQVEsa0JBQWtCO0FBQ3JDLFNBQVMsT0FBTyxRQUFRLDBCQUEwQjtBQUVsRCxTQUFTLFlBQVksU0FBUyxRQUFRLGlCQUFpQjtBQUN2RCxTQUFTLElBQUksUUFBUSxrQkFBa0I7QUFDdkMsU0FBUyxVQUFVLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsS0FBSyxRQUFRLFVBQVU7QUFFdEYsU0FBUyxPQUFPLEVBQUUsS0FBSyxhQUFhLGdCQUFnQixRQUFRLGdCQUFnQjtBQUU1RSxjQUFjLEdBQUcsUUFBUSxpQ0FBaUM7QUFDMUQsY0FBYyxhQUFhLFFBQVEsa0JBQWtCO0tBRWhELEtBQUssS0FBSyxrQkFBa0I7S0FDNUIsY0FBYyxpQkFBaUI7S0FDL0IscUJBQXFCLGlCQUFpQixVQUFVLFdBQVc7QUFFaEUsTUFBTSx5QkFBeUIsb0JBQzdCO0lBQ0UsT0FBTztRQUNMLFdBQVcsTUFBTSxlQUFlLENBQUMsSUFBSTtRQUNyQyxRQUFRO0lBQ1Y7SUFDQSxTQUFTLENBQUM7QUFDWixHQUNBO0FBR0YsTUFBTSx5QkFBeUI7SUFDN0IsU0FBUyxDQUFDO0FBQ1o7QUFFQSxpQkFBaUI7SUFDZixNQUFNO0lBQ047UUFDRTtnQkFFSSxPQUFPLG1CQUFtQjtnQkFDMUIsU0FBUyxxQkFDQSxTQUNQLG1CQUFtQixjQUFjLFdBQVc7Z0JBRTlDLFNBQVMscUJBQXFCLFNBQVM7Z0JBQ3ZDLFNBQVMscUJBQ0EsU0FDUCxtQkFBbUIsY0FBYyxXQUFXO2dCQUU5QyxRQUFRLE9BQU87Ozs7QUFNdkIsaUJBQWlCO0lBQ2YsU0FBUztJQUNUOztJQUNBO1FBQVU7OztBQUdaLE1BQU0sV0FBVyxJQUFJLHNCQUFzQixTQUFVLENBQUE7Ozs7QUFJckQsQ0FBQSxF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"],"names":["TABSTER_CONFIG_CONTENT","getTabsterAttribute","mover","direction","Types","MoverDirections","Both","cyclic","deloser","TABSTER_CONFIG_TRIGGER","Separator","setComponentTemplate","precompileTemplate","strictMode","templateOnly","focusOnHover","e1","item1","currentTarget","HTMLElement","focus","Item","scope","on","installContent","eModifier","element1","_1","isOpen","isOpen1","triggerElement","triggerElement1","tabster1","getTabster","window","firstFocusable1","focusable","findFirst","container","onDocumentClick1","current","target","contains","onDocumentKeydown1","key","document","addEventListener","removeEventListener","Content","hash","trigger","contentId","contentId1","setHook","setHook1","setAttribute","removeAttribute","setTabsterAttribute","onTriggerClick1","toggle","Trigger","IsOpen","cell","TriggerElement","Menu","Component","guidFor","Popover"],"mappings":"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"}
@@ -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//# 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;AAAAI,EAAAA,KAAA,EAAAA,OAAA;IAAAC,EAAA;AAAAd,IAAAA,KAAAA;AAAA,GAAA,CAAA;EAAAU,UAAA,EAAA,IAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
1
+ {"version":3,"file":"buttons.js","sources":["../../../src/components/one-time-password/buttons.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport { assert } from '@ember/debug';\nimport { on } from '@ember/modifier';\nimport type { TOC } from '@ember/component/template-only';\nconst reset = (event1: Event)=>{\n assert('[BUG]: reset called without an event.target', event1.target instanceof HTMLElement);\n let form1 = event1.target.closest('form');\n assert('Form is missing. Cannot use <Reset> without being contained within a <form>', form1 instanceof HTMLFormElement);\n form1.reset();\n};\nexport const Submit: TOC<{\n Element: HTMLButtonElement;\n Blocks: {\n default: [];\n };\n}> = template(`\n <button type=\"submit\" ...attributes>Submit</button>\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nexport const Reset: TOC<{\n Element: HTMLButtonElement;\n Blocks: {\n default: [];\n };\n}> = template(`\n <button type=\"button\" {{on \"click\" reset}} ...attributes>{{yield}}</button>\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL252cC9EZXZlbG9wbWVudC9OdWxsVm94UG9wdWxpL2VtYmVyLXByaW1pdGl2ZXMvZW1iZXItcHJpbWl0aXZlcy9zcmMvY29tcG9uZW50cy9vbmUtdGltZS1wYXNzd29yZC9idXR0b25zLmd0cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhc3NlcnQgfSBmcm9tICdAZW1iZXIvZGVidWcnO1xuaW1wb3J0IHsgb24gfSBmcm9tICdAZW1iZXIvbW9kaWZpZXInO1xuXG5pbXBvcnQgdHlwZSB7IFRPQyB9IGZyb20gJ0BlbWJlci9jb21wb25lbnQvdGVtcGxhdGUtb25seSc7XG5cbmNvbnN0IHJlc2V0ID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICBhc3NlcnQoJ1tCVUddOiByZXNldCBjYWxsZWQgd2l0aG91dCBhbiBldmVudC50YXJnZXQnLCBldmVudC50YXJnZXQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCk7XG5cbiAgbGV0IGZvcm0gPSBldmVudC50YXJnZXQuY2xvc2VzdCgnZm9ybScpO1xuXG4gIGFzc2VydChcbiAgICAnRm9ybSBpcyBtaXNzaW5nLiBDYW5ub3QgdXNlIDxSZXNldD4gd2l0aG91dCBiZWluZyBjb250YWluZWQgd2l0aGluIGEgPGZvcm0-JyxcbiAgICBmb3JtIGluc3RhbmNlb2YgSFRNTEZvcm1FbGVtZW50XG4gICk7XG5cbiAgZm9ybS5yZXNldCgpO1xufTtcblxuZXhwb3J0IGNvbnN0IFN1Ym1pdDogVE9DPHtcbiAgRWxlbWVudDogSFRNTEJ1dHRvbkVsZW1lbnQ7XG4gIEJsb2NrczogeyBkZWZhdWx0OiBbXSB9O1xufT4gPSA8dGVtcGxhdGU-XG4gIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIC4uLmF0dHJpYnV0ZXM-U3VibWl0PC9idXR0b24-XG48L3RlbXBsYXRlPjtcblxuZXhwb3J0IGNvbnN0IFJlc2V0OiBUT0M8e1xuICBFbGVtZW50OiBIVE1MQnV0dG9uRWxlbWVudDtcbiAgQmxvY2tzOiB7IGRlZmF1bHQ6IFtdIH07XG59PiA9IDx0ZW1wbGF0ZT5cbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIge3tvbiBcImNsaWNrXCIgcmVzZXR9fSAuLi5hdHRyaWJ1dGVzPnt7eWllbGR9fTwvYnV0dG9uPlxuPC90ZW1wbGF0ZT47XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFNBQVMsTUFBTSxRQUFRLGVBQWU7QUFDdEMsU0FBUyxFQUFFLFFBQVEsa0JBQWtCO0FBRXJDLGNBQWMsR0FBRyxRQUFRLGlDQUFpQztBQUUxRCxNQUFNLFFBQVEsQ0FBQyxRQUFPO0lBQ3BCLE9BQU8sK0NBQStDLE9BQU0sTUFBTSxZQUFZO0lBRTlFLElBQUksUUFBTyxPQUFNLE1BQU0sQ0FBQyxPQUFPLENBQUM7SUFFaEMsT0FDRSwrRUFDQSxpQkFBZ0I7SUFHbEIsTUFBSyxLQUFLO0FBQ1o7QUFFQSxPQUFPLE1BQU0sUUFBUTtJQUNuQixTQUFTO0lBQ1Q7UUFBVTs7S0FDUCxTQUFVLENBQUE7O0FBRWYsQ0FBQSxFQUFBO0lBQUE7UUFBQSxPQUFBLEtBQUEsU0FBQSxDQUFBLEVBQVc7SUFBRDtBQUFBLEdBQUU7QUFFWixPQUFPLE1BQU0sT0FBTztJQUNsQixTQUFTO0lBQ1Q7UUFBVTs7S0FDUCxTQUFVLENBQUE7O0FBRWYsQ0FBQSxFQUFBO0lBQUE7UUFBQSxPQUFBLEtBQUEsU0FBQSxDQUFBLEVBQVc7SUFBRDtBQUFBLEdBQUUifQ"],"names":["reset","event1","assert","target","HTMLElement","form1","closest","HTMLFormElement","Submit","precompileTemplate","strictMode","templateOnly","Reset","scope","on"],"mappings":";;;;;;AAKA,MAAMA,KAAA,GAASC,MAAO,IAAA;AACpBC,EAAAA,MAAA,CAAO,6CAA+CD,EAAAA,MAAA,CAAME,MAAM,YAAYC,WAAA,CAAA,CAAA;AAE9E,EAAA,IAAIC,KAAA,GAAOJ,MAAA,CAAME,MAAM,CAACG,OAAO,CAAC,MAAA,CAAA,CAAA;AAEhCJ,EAAAA,MAAA,CACE,6EAAA,EACAG,KAAA,YAAgBE,eAAA,CAAA,CAAA;AAGlBF,EAAAA,KAAA,CAAKL,KAAK,EAAA,CAAA;AACZ,CAAA,CAAA;AAEaQ,MAAAA,SAGRC,oBAAAA,CAAAA,kBAAA,CAEL,6DAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA,EAAA;AAEGC,MAAAA,QAGRH,oBAAAA,CAAAA,kBAAA,CAEL,uFAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAG,EAAAA,KAAA,EAAAA,OAAA;IAAAC,EAAA;AAAAd,IAAAA,KAAAA;AAAA,GAAA,CAAA;AAAU,CAAA,CAAA,EAAAW,YAAA,EAAA;;;;"}