@hokulea/ember 0.6.2 → 0.7.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 (252) hide show
  1. package/README.md +178 -17
  2. package/addon-main.cjs +5 -0
  3. package/declarations/-private/form/components/{description.d.ts → description.gts.d.ts} +1 -1
  4. package/declarations/-private/form/components/description.gts.d.ts.map +1 -0
  5. package/declarations/-private/form/components/{errors.d.ts → errors.gts.d.ts} +2 -2
  6. package/declarations/-private/form/components/errors.gts.d.ts.map +1 -0
  7. package/declarations/-private/form/components/{field.d.ts → field.gts.d.ts} +22 -16
  8. package/declarations/-private/form/components/field.gts.d.ts.map +1 -0
  9. package/declarations/-private/form/components/fields/{checkbox.d.ts → checkbox.gts.d.ts} +2 -2
  10. package/declarations/-private/form/components/fields/checkbox.gts.d.ts.map +1 -0
  11. package/declarations/-private/form/components/fields/{currency.d.ts → currency.gts.d.ts} +2 -2
  12. package/declarations/-private/form/components/fields/currency.gts.d.ts.map +1 -0
  13. package/declarations/-private/form/components/fields/{date.d.ts → date.gts.d.ts} +2 -2
  14. package/declarations/-private/form/components/fields/date.gts.d.ts.map +1 -0
  15. package/declarations/-private/form/components/fields/{email.d.ts → email.gts.d.ts} +2 -2
  16. package/declarations/-private/form/components/fields/email.gts.d.ts.map +1 -0
  17. package/declarations/-private/form/components/fields/{list.d.ts → list.gts.d.ts} +3 -3
  18. package/declarations/-private/form/components/fields/list.gts.d.ts.map +1 -0
  19. package/declarations/-private/form/components/fields/{multiple-choice.d.ts → multiple-choice.gts.d.ts} +2 -2
  20. package/declarations/-private/form/components/fields/multiple-choice.gts.d.ts.map +1 -0
  21. package/declarations/-private/form/components/fields/{number.d.ts → number.gts.d.ts} +2 -2
  22. package/declarations/-private/form/components/fields/number.gts.d.ts.map +1 -0
  23. package/declarations/-private/form/components/fields/{password.d.ts → password.gts.d.ts} +2 -2
  24. package/declarations/-private/form/components/fields/password.gts.d.ts.map +1 -0
  25. package/declarations/-private/form/components/fields/{phone.d.ts → phone.gts.d.ts} +2 -2
  26. package/declarations/-private/form/components/fields/phone.gts.d.ts.map +1 -0
  27. package/declarations/-private/form/components/fields/{range.d.ts → range.gts.d.ts} +2 -2
  28. package/declarations/-private/form/components/fields/range.gts.d.ts.map +1 -0
  29. package/declarations/-private/form/components/fields/{select.d.ts → select.gts.d.ts} +2 -2
  30. package/declarations/-private/form/components/fields/select.gts.d.ts.map +1 -0
  31. package/declarations/-private/form/components/fields/{singular-choice.d.ts → singular-choice.gts.d.ts} +2 -2
  32. package/declarations/-private/form/components/fields/singular-choice.gts.d.ts.map +1 -0
  33. package/declarations/-private/form/components/fields/{text-area.d.ts → text-area.gts.d.ts} +2 -2
  34. package/declarations/-private/form/components/fields/text-area.gts.d.ts.map +1 -0
  35. package/declarations/-private/form/components/fields/{text.d.ts → text.gts.d.ts} +2 -2
  36. package/declarations/-private/form/components/fields/text.gts.d.ts.map +1 -0
  37. package/declarations/-private/form/components/{label.d.ts → label.gts.d.ts} +1 -1
  38. package/declarations/-private/form/components/label.gts.d.ts.map +1 -0
  39. package/declarations/-private/form/components/{reset.d.ts → reset.gts.d.ts} +1 -1
  40. package/declarations/-private/form/components/reset.gts.d.ts.map +1 -0
  41. package/declarations/-private/form/components/{submit.d.ts → submit.gts.d.ts} +1 -1
  42. package/declarations/-private/form/components/submit.gts.d.ts.map +1 -0
  43. package/declarations/-private/form/modifiers/capture-events.d.ts.map +1 -1
  44. package/declarations/-private/form/modifiers/manage-validation.d.ts +8 -5
  45. package/declarations/-private/form/modifiers/manage-validation.d.ts.map +1 -1
  46. package/declarations/-private/helpers.d.ts.map +1 -1
  47. package/declarations/-private/stories.d.ts +2 -0
  48. package/declarations/-private/stories.d.ts.map +1 -0
  49. package/declarations/components/-stories.d.ts +3 -0
  50. package/declarations/components/-stories.d.ts.map +1 -0
  51. package/declarations/components/{app-header.d.ts → app-header.gts.d.ts} +1 -2
  52. package/declarations/components/app-header.gts.d.ts.map +1 -0
  53. package/declarations/components/{box.d.ts → box.gts.d.ts} +1 -1
  54. package/declarations/components/box.gts.d.ts.map +1 -0
  55. package/declarations/components/{button.d.ts → button.gts.d.ts} +1 -1
  56. package/declarations/components/button.gts.d.ts.map +1 -0
  57. package/declarations/components/{card.d.ts → card.gts.d.ts} +1 -1
  58. package/declarations/components/card.gts.d.ts.map +1 -0
  59. package/declarations/components/{checkbox.d.ts → checkbox.gts.d.ts} +2 -2
  60. package/declarations/components/checkbox.gts.d.ts.map +1 -0
  61. package/declarations/components/{currency-input.d.ts → currency-input.gts.d.ts} +2 -2
  62. package/declarations/components/currency-input.gts.d.ts.map +1 -0
  63. package/declarations/components/{date-input.d.ts → date-input.gts.d.ts} +2 -2
  64. package/declarations/components/date-input.gts.d.ts.map +1 -0
  65. package/declarations/components/{email-input.d.ts → email-input.gts.d.ts} +2 -2
  66. package/declarations/components/email-input.gts.d.ts.map +1 -0
  67. package/declarations/components/{form.d.ts → form.gts.d.ts} +27 -31
  68. package/declarations/components/form.gts.d.ts.map +1 -0
  69. package/declarations/components/{icon-button.d.ts → icon-button.gts.d.ts} +4 -5
  70. package/declarations/components/icon-button.gts.d.ts.map +1 -0
  71. package/declarations/components/icon.gts.d.ts +14 -0
  72. package/declarations/components/icon.gts.d.ts.map +1 -0
  73. package/declarations/components/{input-builder.d.ts → input-builder.gts.d.ts} +1 -1
  74. package/declarations/components/input-builder.gts.d.ts.map +1 -0
  75. package/declarations/components/{list.d.ts → list.gts.d.ts} +1 -1
  76. package/declarations/components/list.gts.d.ts.map +1 -0
  77. package/declarations/components/{menu.d.ts → menu.gts.d.ts} +3 -4
  78. package/declarations/components/menu.gts.d.ts.map +1 -0
  79. package/declarations/components/{number-input.d.ts → number-input.gts.d.ts} +2 -2
  80. package/declarations/components/number-input.gts.d.ts.map +1 -0
  81. package/declarations/components/{page.d.ts → page.gts.d.ts} +6 -2
  82. package/declarations/components/page.gts.d.ts.map +1 -0
  83. package/declarations/components/{password-input.d.ts → password-input.gts.d.ts} +2 -2
  84. package/declarations/components/password-input.gts.d.ts.map +1 -0
  85. package/declarations/components/{phone-input.d.ts → phone-input.gts.d.ts} +2 -2
  86. package/declarations/components/phone-input.gts.d.ts.map +1 -0
  87. package/declarations/components/{popover.d.ts → popover.gts.d.ts} +1 -1
  88. package/declarations/components/popover.gts.d.ts.map +1 -0
  89. package/declarations/components/{radio.d.ts → radio.gts.d.ts} +2 -2
  90. package/declarations/components/radio.gts.d.ts.map +1 -0
  91. package/declarations/components/{range-input.d.ts → range-input.gts.d.ts} +2 -2
  92. package/declarations/components/range-input.gts.d.ts.map +1 -0
  93. package/declarations/components/{section.d.ts → section.gts.d.ts} +1 -1
  94. package/declarations/components/section.gts.d.ts.map +1 -0
  95. package/declarations/components/{select.d.ts → select.gts.d.ts} +1 -1
  96. package/declarations/components/select.gts.d.ts.map +1 -0
  97. package/declarations/components/{tabs.d.ts → tabs.gts.d.ts} +6 -5
  98. package/declarations/components/tabs.gts.d.ts.map +1 -0
  99. package/declarations/components/{text-area.d.ts → text-area.gts.d.ts} +2 -2
  100. package/declarations/components/text-area.gts.d.ts.map +1 -0
  101. package/declarations/components/{text-input.d.ts → text-input.gts.d.ts} +2 -2
  102. package/declarations/components/text-input.gts.d.ts.map +1 -0
  103. package/declarations/index.d.ts +11 -11
  104. package/declarations/index.d.ts.map +1 -1
  105. package/declarations/services/-hokulea.d.ts +5 -0
  106. package/declarations/services/-hokulea.d.ts.map +1 -0
  107. package/declarations/template-registry.d.ts +1 -1
  108. package/declarations/template-registry.d.ts.map +1 -1
  109. package/declarations/test-support/index.d.ts +18 -18
  110. package/declarations/test-support/index.d.ts.map +1 -1
  111. package/declarations/test-support/page-objects/-private/choices.d.ts +1 -2
  112. package/declarations/test-support/page-objects/-private/choices.d.ts.map +1 -1
  113. package/declarations/test-support/page-objects/-private/field.d.ts +11 -33
  114. package/declarations/test-support/page-objects/-private/field.d.ts.map +1 -1
  115. package/declarations/test-support/page-objects/app-header.d.ts +3 -3
  116. package/declarations/test-support/page-objects/app-header.d.ts.map +1 -1
  117. package/declarations/test-support/page-objects/choice.d.ts +1 -1
  118. package/declarations/test-support/page-objects/choice.d.ts.map +1 -1
  119. package/declarations/test-support/page-objects/form.d.ts +4 -2
  120. package/declarations/test-support/page-objects/form.d.ts.map +1 -1
  121. package/declarations/test-support/page-objects/icon-button.d.ts +1 -1
  122. package/declarations/test-support/page-objects/icon-button.d.ts.map +1 -1
  123. package/declarations/test-support/page-objects/icon.d.ts +1 -2
  124. package/declarations/test-support/page-objects/icon.d.ts.map +1 -1
  125. package/declarations/test-support/page-objects/input-builder.d.ts +2 -2
  126. package/declarations/test-support/page-objects/input-builder.d.ts.map +1 -1
  127. package/declarations/test-support/page-objects/menu.d.ts +1 -1
  128. package/declarations/test-support/page-objects/menu.d.ts.map +1 -1
  129. package/declarations/test-support/page-objects/tabs.d.ts.map +1 -1
  130. package/declarations/test-support/page-objects/text-area.d.ts +1 -1
  131. package/declarations/test-support/page-objects/text-area.d.ts.map +1 -1
  132. package/dist/{-button-CJL1yb2d.js → -button-KUaJCQaB.js} +2 -2
  133. package/dist/-button-KUaJCQaB.js.map +1 -0
  134. package/dist/-input-DGR-n9U_.js.map +1 -1
  135. package/dist/_app_/services/-hokulea.js +1 -0
  136. package/dist/components/app-header.js +35 -40
  137. package/dist/components/app-header.js.map +1 -1
  138. package/dist/components/box.js +3 -3
  139. package/dist/components/box.js.map +1 -1
  140. package/dist/components/button.js +4 -4
  141. package/dist/components/button.js.map +1 -1
  142. package/dist/components/card.js +3 -3
  143. package/dist/components/card.js.map +1 -1
  144. package/dist/components/checkbox.js +3 -3
  145. package/dist/components/checkbox.js.map +1 -1
  146. package/dist/components/currency-input.js +3 -3
  147. package/dist/components/currency-input.js.map +1 -1
  148. package/dist/components/date-input.js +3 -3
  149. package/dist/components/date-input.js.map +1 -1
  150. package/dist/components/email-input.js +3 -3
  151. package/dist/components/email-input.js.map +1 -1
  152. package/dist/components/form.js +287 -295
  153. package/dist/components/form.js.map +1 -1
  154. package/dist/components/icon-button.js +8 -6
  155. package/dist/components/icon-button.js.map +1 -1
  156. package/dist/components/icon.js +9 -34
  157. package/dist/components/icon.js.map +1 -1
  158. package/dist/components/input-builder.js +2 -2
  159. package/dist/components/input-builder.js.map +1 -1
  160. package/dist/components/list.js +17 -17
  161. package/dist/components/list.js.map +1 -1
  162. package/dist/components/menu.js +18 -23
  163. package/dist/components/menu.js.map +1 -1
  164. package/dist/components/number-input.js +3 -3
  165. package/dist/components/number-input.js.map +1 -1
  166. package/dist/components/page.js +33 -35
  167. package/dist/components/page.js.map +1 -1
  168. package/dist/components/password-input.js +3 -3
  169. package/dist/components/password-input.js.map +1 -1
  170. package/dist/components/phone-input.js +3 -3
  171. package/dist/components/phone-input.js.map +1 -1
  172. package/dist/components/popover.js +2 -2
  173. package/dist/components/popover.js.map +1 -1
  174. package/dist/components/radio.js +3 -3
  175. package/dist/components/radio.js.map +1 -1
  176. package/dist/components/range-input.js +15 -15
  177. package/dist/components/range-input.js.map +1 -1
  178. package/dist/components/section.js +10 -10
  179. package/dist/components/section.js.map +1 -1
  180. package/dist/components/select.js +10 -10
  181. package/dist/components/select.js.map +1 -1
  182. package/dist/components/tabs.js +28 -27
  183. package/dist/components/tabs.js.map +1 -1
  184. package/dist/components/text-area.js +3 -3
  185. package/dist/components/text-area.js.map +1 -1
  186. package/dist/components/text-input.js +3 -3
  187. package/dist/components/text-input.js.map +1 -1
  188. package/dist/disabled-B_FQ0Z51.js.map +1 -1
  189. package/dist/helpers/popover.js +3 -3
  190. package/dist/helpers/popover.js.map +1 -1
  191. package/dist/{helpers-DApiJrHl.js → helpers-DS9du02l.js} +4 -2
  192. package/dist/helpers-DS9du02l.js.map +1 -0
  193. package/dist/index.js +9 -9
  194. package/dist/services/-hokulea.js +15 -0
  195. package/dist/services/-hokulea.js.map +1 -0
  196. package/dist/test-support/index.js +12 -14
  197. package/dist/test-support/index.js.map +1 -1
  198. package/package.json +93 -84
  199. package/addon-main.js +0 -49
  200. package/declarations/-private/form/components/description.d.ts.map +0 -1
  201. package/declarations/-private/form/components/errors.d.ts.map +0 -1
  202. package/declarations/-private/form/components/field.d.ts.map +0 -1
  203. package/declarations/-private/form/components/fields/checkbox.d.ts.map +0 -1
  204. package/declarations/-private/form/components/fields/currency.d.ts.map +0 -1
  205. package/declarations/-private/form/components/fields/date.d.ts.map +0 -1
  206. package/declarations/-private/form/components/fields/email.d.ts.map +0 -1
  207. package/declarations/-private/form/components/fields/list.d.ts.map +0 -1
  208. package/declarations/-private/form/components/fields/multiple-choice.d.ts.map +0 -1
  209. package/declarations/-private/form/components/fields/number.d.ts.map +0 -1
  210. package/declarations/-private/form/components/fields/password.d.ts.map +0 -1
  211. package/declarations/-private/form/components/fields/phone.d.ts.map +0 -1
  212. package/declarations/-private/form/components/fields/range.d.ts.map +0 -1
  213. package/declarations/-private/form/components/fields/select.d.ts.map +0 -1
  214. package/declarations/-private/form/components/fields/singular-choice.d.ts.map +0 -1
  215. package/declarations/-private/form/components/fields/text-area.d.ts.map +0 -1
  216. package/declarations/-private/form/components/fields/text.d.ts.map +0 -1
  217. package/declarations/-private/form/components/label.d.ts.map +0 -1
  218. package/declarations/-private/form/components/reset.d.ts.map +0 -1
  219. package/declarations/-private/form/components/submit.d.ts.map +0 -1
  220. package/declarations/components/app-header.d.ts.map +0 -1
  221. package/declarations/components/box.d.ts.map +0 -1
  222. package/declarations/components/button.d.ts.map +0 -1
  223. package/declarations/components/card.d.ts.map +0 -1
  224. package/declarations/components/checkbox.d.ts.map +0 -1
  225. package/declarations/components/currency-input.d.ts.map +0 -1
  226. package/declarations/components/date-input.d.ts.map +0 -1
  227. package/declarations/components/email-input.d.ts.map +0 -1
  228. package/declarations/components/form.d.ts.map +0 -1
  229. package/declarations/components/icon-button.d.ts.map +0 -1
  230. package/declarations/components/icon.d.ts +0 -13698
  231. package/declarations/components/icon.d.ts.map +0 -1
  232. package/declarations/components/input-builder.d.ts.map +0 -1
  233. package/declarations/components/list.d.ts.map +0 -1
  234. package/declarations/components/menu.d.ts.map +0 -1
  235. package/declarations/components/number-input.d.ts.map +0 -1
  236. package/declarations/components/page.d.ts.map +0 -1
  237. package/declarations/components/password-input.d.ts.map +0 -1
  238. package/declarations/components/phone-input.d.ts.map +0 -1
  239. package/declarations/components/popover.d.ts.map +0 -1
  240. package/declarations/components/radio.d.ts.map +0 -1
  241. package/declarations/components/range-input.d.ts.map +0 -1
  242. package/declarations/components/section.d.ts.map +0 -1
  243. package/declarations/components/select.d.ts.map +0 -1
  244. package/declarations/components/tabs.d.ts.map +0 -1
  245. package/declarations/components/text-area.d.ts.map +0 -1
  246. package/declarations/components/text-input.d.ts.map +0 -1
  247. package/dist/-button-CJL1yb2d.js.map +0 -1
  248. package/dist/helpers-DApiJrHl.js.map +0 -1
  249. package/lib/config.js +0 -10
  250. package/lib/css-modules-plugin.js +0 -43
  251. package/lib/index.js +0 -30
  252. package/lib/webpack-asset-loader-plugin.js +0 -23
@@ -3,20 +3,23 @@ import { assert } from '@ember/debug';
3
3
  import CommandElement from 'ember-command/components/command-element';
4
4
  import { element } from 'ember-element-helper';
5
5
  import styles from '@hokulea/core/actions.module.css';
6
- import { n as not } from '../helpers-DApiJrHl.js';
6
+ import { n as not } from '../helpers-DS9du02l.js';
7
7
  import { d as disabled } from '../disabled-B_FQ0Z51.js';
8
- import { i as isLink } from '../-button-CJL1yb2d.js';
8
+ import { i as isLink } from '../-button-KUaJCQaB.js';
9
9
  import Icon from './icon.js';
10
10
  import { precompileTemplate } from '@ember/template-compilation';
11
11
  import { setComponentTemplate } from '@ember/component';
12
12
 
13
13
  class IconButton extends Component {
14
14
  get label() {
15
- assert('Please provide a `@label` to `<IconButton>` for accessibility reasons.', this.args.label !== undefined);
15
+ assert('Please provide a `@label` to `<IconButton>` for accessibility reasons.',
16
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
17
+ this.args.label !== undefined);
16
18
  return this.args.label;
17
19
  }
18
20
  static {
19
- setComponentTemplate(precompileTemplate("\n <CommandElement @element={{element \"button\"}} @command={{@push}} class=\"{{styles.iconButton}}\" type={{if (not (isLink @push)) \"button\"}} data-intent={{if @intent @intent \"action\"}} data-importance={{if @importance @importance \"supreme\"}} data-spacing={{@spacing}} aria-label={{this.label}} {{disabled when=(if @disabled @disabled false)}} data-test-icon-button ...attributes>\n <Icon @icon={{@icon}} @style={{@iconStyle}} data-test-icon-button=\"icon\" />\n </CommandElement>\n ", {
21
+ setComponentTemplate(precompileTemplate("\n <CommandElement @element={{element \"button\"}} @command={{@push}} class=\"{{styles.iconButton}}\" type={{if (not (isLink @push)) \"button\"}} data-intent={{if @intent @intent \"action\"}} data-importance={{if @importance @importance \"supreme\"}} data-spacing={{@spacing}} aria-label={{this.label}} {{disabled when=(if @disabled @disabled false)}} data-test-icon-button ...attributes>\n <Icon @icon={{@icon}} data-test-icon-button=\"icon\" />\n </CommandElement>\n ", {
22
+ strictMode: true,
20
23
  scope: () => ({
21
24
  CommandElement,
22
25
  element,
@@ -25,8 +28,7 @@ class IconButton extends Component {
25
28
  isLink,
26
29
  disabled,
27
30
  Icon
28
- }),
29
- strictMode: true
31
+ })
30
32
  }), this);
31
33
  }
32
34
  }
@@ -1 +1 @@
1
- {"version":3,"file":"icon-button.js","sources":["../../src/components/icon-button.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport Component from '@glimmer/component';\nimport { assert } from '@ember/debug';\nimport CommandElement from 'ember-command/components/command-element';\nimport { element } from 'ember-element-helper';\nimport styles from '@hokulea/core/actions.module.css';\nimport { not } from '../-private/helpers';\nimport disabled from '../-private/modifiers/disabled';\nimport { isLink } from './-button';\nimport Icon from './icon';\nimport type { Importance, Importances, Intent, Intents, Spacing, Spacings } from '@hokulea/tokens';\nimport type { CommandAction } from 'ember-command';\nexport interface IconButtonSignature {\n Element: HTMLButtonElement | HTMLAnchorElement | HTMLSpanElement;\n Args: {\n push?: CommandAction;\n intent?: Intent | Intents;\n importance?: Importance | Importances;\n spacing?: Spacing | Spacings;\n disabled?: boolean;\n label: string;\n /** The name of the icon */ icon: string;\n /**\n * @defaultValue regular\n */ iconStyle?: 'thin' | 'light' | 'regular' | 'bold' | 'fill' | 'duotone';\n };\n Blocks: {\n default: [];\n };\n}\nexport default class IconButton extends Component<IconButtonSignature> {\n get label() {\n assert('Please provide a `@label` to `<IconButton>` for accessibility reasons.', this.args.label !== undefined);\n return this.args.label;\n }\n static{\n template(`\n <CommandElement\n @element={{element \"button\"}}\n @command={{@push}}\n class=\"{{styles.iconButton}}\"\n type={{if (not (isLink @push)) \"button\"}}\n data-intent={{if @intent @intent \"action\"}}\n data-importance={{if @importance @importance \"supreme\"}}\n data-spacing={{@spacing}}\n aria-label={{this.label}}\n {{disabled when=(if @disabled @disabled false)}}\n data-test-icon-button\n ...attributes\n >\n <Icon @icon={{@icon}} @style={{@iconStyle}} data-test-icon-button=\"icon\" />\n </CommandElement>\n `, {\n component: this,\n eval () {\n return eval(arguments[0]);\n }\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2hva3VsZWEvaG9rdWxlYS9lbWJlci9wYWNrYWdlL3NyYy9jb21wb25lbnRzL2ljb24tYnV0dG9uLmd0cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29tcG9uZW50IGZyb20gJ0BnbGltbWVyL2NvbXBvbmVudCc7XG5pbXBvcnQgeyBhc3NlcnQgfSBmcm9tICdAZW1iZXIvZGVidWcnO1xuXG5pbXBvcnQgQ29tbWFuZEVsZW1lbnQgZnJvbSAnZW1iZXItY29tbWFuZC9jb21wb25lbnRzL2NvbW1hbmQtZWxlbWVudCc7XG5pbXBvcnQgeyBlbGVtZW50IH0gZnJvbSAnZW1iZXItZWxlbWVudC1oZWxwZXInO1xuXG5pbXBvcnQgc3R5bGVzIGZyb20gJ0Bob2t1bGVhL2NvcmUvYWN0aW9ucy5tb2R1bGUuY3NzJztcblxuaW1wb3J0IHsgbm90IH0gZnJvbSAnLi4vLXByaXZhdGUvaGVscGVycyc7XG5pbXBvcnQgZGlzYWJsZWQgZnJvbSAnLi4vLXByaXZhdGUvbW9kaWZpZXJzL2Rpc2FibGVkJztcbmltcG9ydCB7IGlzTGluayB9IGZyb20gJy4vLWJ1dHRvbic7XG5pbXBvcnQgSWNvbiBmcm9tICcuL2ljb24nO1xuXG5pbXBvcnQgdHlwZSB7IEltcG9ydGFuY2UsIEltcG9ydGFuY2VzLCBJbnRlbnQsIEludGVudHMsIFNwYWNpbmcsIFNwYWNpbmdzIH0gZnJvbSAnQGhva3VsZWEvdG9rZW5zJztcbmltcG9ydCB0eXBlIHsgQ29tbWFuZEFjdGlvbiB9IGZyb20gJ2VtYmVyLWNvbW1hbmQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEljb25CdXR0b25TaWduYXR1cmUge1xuICBFbGVtZW50OiBIVE1MQnV0dG9uRWxlbWVudCB8IEhUTUxBbmNob3JFbGVtZW50IHwgSFRNTFNwYW5FbGVtZW50O1xuICBBcmdzOiB7XG4gICAgcHVzaD86IENvbW1hbmRBY3Rpb247XG4gICAgaW50ZW50PzogSW50ZW50IHwgSW50ZW50cztcbiAgICBpbXBvcnRhbmNlPzogSW1wb3J0YW5jZSB8IEltcG9ydGFuY2VzO1xuICAgIHNwYWNpbmc_OiBTcGFjaW5nIHwgU3BhY2luZ3M7XG4gICAgZGlzYWJsZWQ_OiBib29sZWFuO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgLyoqIFRoZSBuYW1lIG9mIHRoZSBpY29uICovXG4gICAgaWNvbjogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEBkZWZhdWx0VmFsdWUgcmVndWxhclxuICAgICAqL1xuICAgIGljb25TdHlsZT86ICd0aGluJyB8ICdsaWdodCcgfCAncmVndWxhcicgfCAnYm9sZCcgfCAnZmlsbCcgfCAnZHVvdG9uZSc7XG4gIH07XG4gIEJsb2Nrczoge1xuICAgIGRlZmF1bHQ6IFtdO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJY29uQnV0dG9uIGV4dGVuZHMgQ29tcG9uZW50PEljb25CdXR0b25TaWduYXR1cmU-IHtcbiAgZ2V0IGxhYmVsKCkge1xuICAgIGFzc2VydChcbiAgICAgICdQbGVhc2UgcHJvdmlkZSBhIGBAbGFiZWxgIHRvIGA8SWNvbkJ1dHRvbj5gIGZvciBhY2Nlc3NpYmlsaXR5IHJlYXNvbnMuJyxcbiAgICAgIHRoaXMuYXJncy5sYWJlbCAhPT0gdW5kZWZpbmVkXG4gICAgKTtcblxuICAgIHJldHVybiB0aGlzLmFyZ3MubGFiZWw7XG4gIH1cblxuICA8dGVtcGxhdGU-XG4gICAgPENvbW1hbmRFbGVtZW50XG4gICAgICBAZWxlbWVudD17e2VsZW1lbnQgXCJidXR0b25cIn19XG4gICAgICBAY29tbWFuZD17e0BwdXNofX1cbiAgICAgIGNsYXNzPVwie3tzdHlsZXMuaWNvbkJ1dHRvbn19XCJcbiAgICAgIHR5cGU9e3tpZiAobm90IChpc0xpbmsgQHB1c2gpKSBcImJ1dHRvblwifX1cbiAgICAgIGRhdGEtaW50ZW50PXt7aWYgQGludGVudCBAaW50ZW50IFwiYWN0aW9uXCJ9fVxuICAgICAgZGF0YS1pbXBvcnRhbmNlPXt7aWYgQGltcG9ydGFuY2UgQGltcG9ydGFuY2UgXCJzdXByZW1lXCJ9fVxuICAgICAgZGF0YS1zcGFjaW5nPXt7QHNwYWNpbmd9fVxuICAgICAgYXJpYS1sYWJlbD17e3RoaXMubGFiZWx9fVxuICAgICAge3tkaXNhYmxlZCB3aGVuPShpZiBAZGlzYWJsZWQgQGRpc2FibGVkIGZhbHNlKX19XG4gICAgICBkYXRhLXRlc3QtaWNvbi1idXR0b25cbiAgICAgIC4uLmF0dHJpYnV0ZXNcbiAgICA-XG4gICAgICA8SWNvbiBAaWNvbj17e0BpY29ufX0gQHN0eWxlPXt7QGljb25TdHlsZX19IGRhdGEtdGVzdC1pY29uLWJ1dHRvbj1cImljb25cIiAvPlxuICAgIDwvQ29tbWFuZEVsZW1lbnQ-XG4gIDwvdGVtcGxhdGU-XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sZUFBZSxxQkFBcUI7QUFDM0MsU0FBUyxNQUFNLFFBQVEsZUFBZTtBQUV0QyxPQUFPLG9CQUFvQiwyQ0FBMkM7QUFDdEUsU0FBUyxPQUFPLFFBQVEsdUJBQXVCO0FBRS9DLE9BQU8sWUFBWSxtQ0FBbUM7QUFFdEQsU0FBUyxHQUFHLFFBQVEsc0JBQXNCO0FBQzFDLE9BQU8sY0FBYyxpQ0FBaUM7QUFDdEQsU0FBUyxNQUFNLFFBQVEsWUFBWTtBQUNuQyxPQUFPLFVBQVUsU0FBUztBQUUxQixjQUFjLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxRQUFRLGtCQUFrQjtBQUNuRyxjQUFjLGFBQWEsUUFBUSxnQkFBZ0I7QUFFbkQsaUJBQWlCO0lBQ2YsU0FBUyxvQkFBb0Isb0JBQW9CO0lBQ2pEO1FBQ0UsT0FBTztRQUNQLFNBQVMsU0FBUztRQUNsQixhQUFhLGFBQWE7UUFDMUIsVUFBVSxVQUFVO1FBQ3BCLFdBQVcsT0FBTztRQUNsQixPQUFPLE1BQU07UUFDYix5QkFBeUIsR0FDekIsTUFBTSxNQUFNO1FBQ1o7O0tBRUMsR0FDRCxZQUFZLFNBQVMsVUFBVSxZQUFZLFNBQVMsU0FBUzs7SUFFL0Q7UUFDRTs7O0FBSUosZUFBZSxNQUFNLG1CQUFtQixVQUFVO0lBQ2hELElBQUksUUFBUTtRQUNWLE9BQ0UsMEVBQ0EsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUs7UUFHdEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUs7SUFDeEI7SUFFQSxNQUFBO1FBQUEsU0FBVSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7O0VBZ0JWLENBQUEsRUFBQTtZQUFBLFdBQUEsSUFBVztZQUFYO2dCQUFBLE9BQUEsS0FBQSxTQUFBLENBQUEsRUFBVztZQUFEO1FBQUE7SUFBQSxDQWhCQTtBQWlCWiJ9"],"names":["IconButton","Component","label","assert","args","undefined","setComponentTemplate","precompileTemplate","scope","CommandElement","element","styles","not","isLink","disabled","Icon","strictMode"],"mappings":";;;;;;;;;;;;AAqCe,MAAMA,UAAA,SAAmBC,SAAA,CAAU;AAChD,EAAA,IAAIC,QAAQ;IACVC,MAAA,CACE,0EACA,IAAI,CAACC,IAAI,CAACF,KAAK,KAAKG,SAAA,CAAA,CAAA;AAGtB,IAAA,OAAO,IAAI,CAACD,IAAI,CAACF,KAAK,CAAA;AACxB,GAAA;AAEA,EAAA;IAAAI,oBAAA,CAAAC,kBAAA,CAgBA,yfAAA,EAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,cAAA;QAAAC,OAAA;QAAAC,MAAA;QAAAC,GAAA;QAAAC,MAAA;QAAAC,QAAA;AAAAC,QAAAA,IAAAA;AAAA,OAAA,CAAA;MAAAC,UAAA,EAAA,IAAA;AAAU,KAAA,CAAA,EAAV,IAAW,CAAA,CAAA;AAAD,GAAA;AACZ;;;;"}
1
+ {"version":3,"file":"icon-button.js","sources":["../../src/components/icon-button.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { assert } from '@ember/debug';\n\nimport CommandElement from 'ember-command/components/command-element';\nimport { element } from 'ember-element-helper';\n\nimport styles from '@hokulea/core/actions.module.css';\n\nimport { not } from '../-private/helpers.ts';\nimport disabled from '../-private/modifiers/disabled.ts';\nimport { isLink } from './-button.ts';\nimport Icon from './icon.gts';\n\nimport type { Importance, Importances, Intent, Intents, Spacing, Spacings } from '@hokulea/tokens';\nimport type { CommandAction } from 'ember-command';\n\nexport interface IconButtonSignature {\n Element: HTMLButtonElement | HTMLAnchorElement | HTMLSpanElement;\n Args: {\n push?: CommandAction;\n intent?: Intent | Intents;\n importance?: Importance | Importances;\n spacing?: Spacing | Spacings;\n disabled?: boolean;\n label: string;\n /**\n * A string containing a `<svg>` element.\n * Make sure to use `currentColor` to comply with the styling\n */\n icon: string;\n };\n Blocks: {\n default: [];\n };\n}\n\nexport default class IconButton extends Component<IconButtonSignature> {\n get label() {\n assert(\n 'Please provide a `@label` to `<IconButton>` for accessibility reasons.',\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n this.args.label !== undefined\n );\n\n return this.args.label;\n }\n\n <template>\n <CommandElement\n @element={{element \"button\"}}\n @command={{@push}}\n class=\"{{styles.iconButton}}\"\n type={{if (not (isLink @push)) \"button\"}}\n data-intent={{if @intent @intent \"action\"}}\n data-importance={{if @importance @importance \"supreme\"}}\n data-spacing={{@spacing}}\n aria-label={{this.label}}\n {{disabled when=(if @disabled @disabled false)}}\n data-test-icon-button\n ...attributes\n >\n <Icon @icon={{@icon}} data-test-icon-button=\"icon\" />\n </CommandElement>\n </template>\n}\n"],"names":["IconButton","Component","label","assert","args","undefined","setComponentTemplate","precompileTemplate","strictMode","scope","CommandElement","element","styles","not","isLink","disabled","Icon"],"mappings":";;;;;;;;;;;;AAoCe,MAAMA,mBAAmBC,SAAA,CAAU;EAChD,IAAIC,KAAAA,GAAQ;AACVC,IAAAA,MAAA,CACE;AACA;AACA,IAAA,IAAI,CAACC,IAAI,CAACF,KAAK,KAAKG,SAAA,CAAA;AAGtB,IAAA,OAAO,IAAI,CAACD,IAAI,CAACF,KAAK;AACxB,EAAA;AAEA,EAAA;IAAAI,oBAAA,CAAAC,kBAAA,CAAA,meAAA,EAgBA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,cAAA;QAAAC,OAAA;QAAAC,MAAA;QAAAC,GAAA;QAAAC,MAAA;QAAAC,QAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
@@ -1,41 +1,16 @@
1
- import Component from '@glimmer/component';
2
- import { cached } from '@glimmer/tracking';
3
- import { macroCondition, dependencySatisfies, importSync } from '@embroider/macros';
4
- import { icons } from '@phosphor-icons/core';
5
- import { pascalCase } from 'change-case';
6
- import * as phIcons from 'ember-phosphor-icons';
1
+ import { htmlSafe } from '@ember/template';
7
2
  import styles from '@hokulea/core/icons.module.css';
8
- import { n } from 'decorator-transforms/runtime';
9
3
  import { precompileTemplate } from '@ember/template-compilation';
10
4
  import { setComponentTemplate } from '@ember/component';
5
+ import templateOnly from '@ember/component/template-only';
11
6
 
12
- const svgJar = macroCondition(dependencySatisfies('ember-svg-jar', '*')) ? importSync('ember-svg-jar/helpers/svg-jar').default : undefined;
13
- class Icon extends Component {
14
- get phosphorIcon() {
15
- return icons.find(entry1 => entry1.name === this.args.icon);
16
- }
17
- // eslint-disable-next-line @typescript-eslint/naming-convention
18
- static {
19
- n(this.prototype, "phosphorIcon", [cached]);
20
- }
21
- get PhIcon() {
22
- const icon1 = `Ph${pascalCase(this.args.icon)}`;
23
- // @ts-expect-error no index signature is given but we are ok with this
24
- return phIcons[icon1];
25
- }
26
- get style() {
27
- return this.phosphorIcon ? this.args.style ?? 'regular' : svgJar ? 'custom' : '';
28
- }
29
- static {
30
- setComponentTemplate(precompileTemplate("\n <span class={{styles.icon}} data-test-icon={{@icon}} data-test-icon-style={{this.style}} ...attributes>\n {{#if this.phosphorIcon}}\n <this.PhIcon @weight={{@style}} />\n {{else if svgJar}}\n {{svgJar @icon}}\n {{/if}}\n </span>\n ", {
31
- scope: () => ({
32
- styles,
33
- svgJar
34
- }),
35
- strictMode: true
36
- }), this);
37
- }
38
- }
7
+ const Icon = setComponentTemplate(precompileTemplate("\n <span class={{styles.icon}} data-test-icon ...attributes>\n {{htmlSafe @icon}}\n </span>\n", {
8
+ strictMode: true,
9
+ scope: () => ({
10
+ styles,
11
+ htmlSafe
12
+ })
13
+ }), templateOnly());
39
14
 
40
15
  export { Icon as default };
41
16
  //# sourceMappingURL=icon.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"icon.js","sources":["../../src/components/icon.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport Component from '@glimmer/component';\nimport { cached } from '@glimmer/tracking';\nimport { dependencySatisfies, importSync, macroCondition } from '@embroider/macros';\nimport { icons } from '@phosphor-icons/core';\nimport { pascalCase } from 'change-case';\nimport * as phIcons from 'ember-phosphor-icons';\nimport styles from '@hokulea/core/icons.module.css';\nimport type PhIcon from 'ember-phosphor-icons/ph-icon';\nimport type SvgJarHelper from 'ember-svg-jar/helpers/svg-jar';\nconst svgJar = macroCondition(dependencySatisfies('ember-svg-jar', '*')) ? (importSync('ember-svg-jar/helpers/svg-jar') as {\n default: typeof SvgJarHelper;\n}).default : undefined;\nexport interface IconSignature {\n Element: HTMLSpanElement;\n Args: {\n icon: string;\n /**\n * @defaultValue regular\n */ style?: 'thin' | 'light' | 'regular' | 'bold' | 'fill' | 'duotone';\n };\n}\nexport default class Icon extends Component<IconSignature> {\n @cached\n get phosphorIcon() {\n return icons.find((entry1)=>entry1.name === this.args.icon);\n }\n // eslint-disable-next-line @typescript-eslint/naming-convention\n get PhIcon(): typeof PhIcon {\n const icon1 = `Ph${pascalCase(this.args.icon)}`;\n // @ts-expect-error no index signature is given but we are ok with this\n return phIcons[icon1] as typeof PhIcon;\n }\n get style() {\n return this.phosphorIcon ? this.args.style ?? 'regular' : svgJar ? 'custom' : '';\n }\n static{\n template(`\n <span\n class={{styles.icon}}\n data-test-icon={{@icon}}\n data-test-icon-style={{this.style}}\n ...attributes\n >\n {{#if this.phosphorIcon}}\n <this.PhIcon @weight={{@style}} />\n {{else if svgJar}}\n {{svgJar @icon}}\n {{/if}}\n </span>\n `, {\n component: this,\n eval () {\n return eval(arguments[0]);\n }\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2hva3VsZWEvaG9rdWxlYS9lbWJlci9wYWNrYWdlL3NyYy9jb21wb25lbnRzL2ljb24uZ3RzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb21wb25lbnQgZnJvbSAnQGdsaW1tZXIvY29tcG9uZW50JztcbmltcG9ydCB7IGNhY2hlZCB9IGZyb20gJ0BnbGltbWVyL3RyYWNraW5nJztcbmltcG9ydCB7IGRlcGVuZGVuY3lTYXRpc2ZpZXMsIGltcG9ydFN5bmMsIG1hY3JvQ29uZGl0aW9uIH0gZnJvbSAnQGVtYnJvaWRlci9tYWNyb3MnO1xuXG5pbXBvcnQgeyBpY29ucyB9IGZyb20gJ0BwaG9zcGhvci1pY29ucy9jb3JlJztcbmltcG9ydCB7IHBhc2NhbENhc2UgfSBmcm9tICdjaGFuZ2UtY2FzZSc7XG5pbXBvcnQgKiBhcyBwaEljb25zIGZyb20gJ2VtYmVyLXBob3NwaG9yLWljb25zJztcblxuaW1wb3J0IHN0eWxlcyBmcm9tICdAaG9rdWxlYS9jb3JlL2ljb25zLm1vZHVsZS5jc3MnO1xuXG5pbXBvcnQgdHlwZSBQaEljb24gZnJvbSAnZW1iZXItcGhvc3Bob3ItaWNvbnMvcGgtaWNvbic7XG5pbXBvcnQgdHlwZSBTdmdKYXJIZWxwZXIgZnJvbSAnZW1iZXItc3ZnLWphci9oZWxwZXJzL3N2Zy1qYXInO1xuXG5jb25zdCBzdmdKYXIgPSBtYWNyb0NvbmRpdGlvbihkZXBlbmRlbmN5U2F0aXNmaWVzKCdlbWJlci1zdmctamFyJywgJyonKSlcbiAgPyAoaW1wb3J0U3luYygnZW1iZXItc3ZnLWphci9oZWxwZXJzL3N2Zy1qYXInKSBhcyB7IGRlZmF1bHQ6IHR5cGVvZiBTdmdKYXJIZWxwZXIgfSkuZGVmYXVsdFxuICA6IHVuZGVmaW5lZDtcblxuZXhwb3J0IGludGVyZmFjZSBJY29uU2lnbmF0dXJlIHtcbiAgRWxlbWVudDogSFRNTFNwYW5FbGVtZW50O1xuICBBcmdzOiB7XG4gICAgaWNvbjogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQGRlZmF1bHRWYWx1ZSByZWd1bGFyXG4gICAgICovXG4gICAgc3R5bGU_OiAndGhpbicgfCAnbGlnaHQnIHwgJ3JlZ3VsYXInIHwgJ2JvbGQnIHwgJ2ZpbGwnIHwgJ2R1b3RvbmUnO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJY29uIGV4dGVuZHMgQ29tcG9uZW50PEljb25TaWduYXR1cmU-IHtcbiAgQGNhY2hlZFxuICBnZXQgcGhvc3Bob3JJY29uKCkge1xuICAgIHJldHVybiBpY29ucy5maW5kKChlbnRyeSkgPT4gZW50cnkubmFtZSA9PT0gdGhpcy5hcmdzLmljb24pO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICBnZXQgUGhJY29uKCk6IHR5cGVvZiBQaEljb24ge1xuICAgIGNvbnN0IGljb24gPSBgUGgke3Bhc2NhbENhc2UodGhpcy5hcmdzLmljb24pfWA7XG5cbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIG5vIGluZGV4IHNpZ25hdHVyZSBpcyBnaXZlbiBidXQgd2UgYXJlIG9rIHdpdGggdGhpc1xuICAgIHJldHVybiBwaEljb25zW2ljb25dIGFzIHR5cGVvZiBQaEljb247XG4gIH1cblxuICBnZXQgc3R5bGUoKSB7XG4gICAgcmV0dXJuIHRoaXMucGhvc3Bob3JJY29uID8gdGhpcy5hcmdzLnN0eWxlID8_ICdyZWd1bGFyJyA6IHN2Z0phciA_ICdjdXN0b20nIDogJyc7XG4gIH1cblxuICA8dGVtcGxhdGU-XG4gICAgPHNwYW5cbiAgICAgIGNsYXNzPXt7c3R5bGVzLmljb259fVxuICAgICAgZGF0YS10ZXN0LWljb249e3tAaWNvbn19XG4gICAgICBkYXRhLXRlc3QtaWNvbi1zdHlsZT17e3RoaXMuc3R5bGV9fVxuICAgICAgLi4uYXR0cmlidXRlc1xuICAgID5cbiAgICAgIHt7I2lmIHRoaXMucGhvc3Bob3JJY29ufX1cbiAgICAgICAgPHRoaXMuUGhJY29uIEB3ZWlnaHQ9e3tAc3R5bGV9fSAvPlxuICAgICAge3tlbHNlIGlmIHN2Z0phcn19XG4gICAgICAgIHt7c3ZnSmFyIEBpY29ufX1cbiAgICAgIHt7L2lmfX1cbiAgICA8L3NwYW4-XG4gIDwvdGVtcGxhdGU-XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sZUFBZSxxQkFBcUI7QUFDM0MsU0FBUyxNQUFNLFFBQVEsb0JBQW9CO0FBQzNDLFNBQVMsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLGNBQWMsUUFBUSxvQkFBb0I7QUFFcEYsU0FBUyxLQUFLLFFBQVEsdUJBQXVCO0FBQzdDLFNBQVMsVUFBVSxRQUFRLGNBQWM7QUFDekMsWUFBWSxhQUFhLHVCQUF1QjtBQUVoRCxPQUFPLFlBQVksaUNBQWlDO0FBRXBELFlBQVksWUFBWSwrQkFBK0I7QUFDdkQsWUFBWSxrQkFBa0IsZ0NBQWdDO0FBRTlELE1BQU0sU0FBUyxlQUFlLG9CQUFvQixpQkFBaUIsUUFDL0QsQ0FBQyxXQUFXO0lBQXNDLGdCQUFnQjtDQUFjLEVBQUUsT0FBTyxHQUN6RjtBQUVKLGlCQUFpQjtJQUNmLFNBQVM7SUFDVDtRQUNFLE1BQU0sTUFBTTtRQUVaOztLQUVDLEdBQ0QsUUFBUSxTQUFTLFVBQVUsWUFBWSxTQUFTLFNBQVM7OztBQUk3RCxlQUFlLE1BQU0sYUFBYSxVQUFVO0lBQzFDLENBQUM7SUFBTSxJQUNILGVBQWU7UUFDakIsT0FBTyxNQUFNLElBQUksQ0FBQyxDQUFDLFNBQVUsT0FBTSxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJO0lBQzVEO0lBRUEsZ0VBQWdFO0lBQ2hFLElBQUksaUJBQWlCLE9BQU87UUFDMUIsTUFBTSxRQUFPLENBQUMsRUFBRSxFQUFFLFdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUU5Qyx1RUFBdUU7UUFDdkUsT0FBTyxPQUFPLENBQUMsTUFBSyxXQUFXO0lBQ2pDO0lBRUEsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLFlBQVksU0FBUyxXQUFXO0lBQ2hGO0lBRUEsTUFBQTtRQUFBLFNBQVUsQ0FBQTs7Ozs7Ozs7Ozs7OztFQWFWLENBQUEsRUFBQTtZQUFBLFdBQUEsSUFBVztZQUFYO2dCQUFBLE9BQUEsS0FBQSxTQUFBLENBQUEsRUFBVztZQUFEO1FBQUE7SUFBQSxDQWJBO0FBY1oifQ"],"names":["svgJar","macroCondition","dependencySatisfies","importSync","default","undefined","Icon","Component","phosphorIcon","icons","find","entry1","name","args","icon","n","prototype","cached","PhIcon","icon1","pascalCase","phIcons","style","setComponentTemplate","precompileTemplate","scope","styles","strictMode"],"mappings":";;;;;;;;;;;AAaA,MAAMA,MAAA,GAASC,cAAA,CAAeC,mBAAA,CAAoB,eAAiB,EAAA,GAAA,CAAA,CAAA,GAC9DC,UAAA,CAAW,+BAAsEC,CAAAA,CAAAA,OAAO,GACzFC,SAAA,CAAA;AAcW,MAAMC,IAAA,SAAaC,SAAA,CAAU;AAC1C,EAAA,IACIC,eAAe;AACjB,IAAA,OAAOC,KAAA,CAAMC,IAAI,CAAEC,MAAA,IAAUA,MAAA,CAAMC,IAAI,KAAK,IAAI,CAACC,IAAI,CAACC,IAAI,CAAA,CAAA;AAC5D,GAAA;AAEA;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,cAAA,EAAA,CALCC,MAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAMD,EAAA,IAAIC,SAAwB;IAC1B,MAAMC,KAAA,GAAO,CAAA,EAAA,EAAKC,UAAA,CAAW,IAAI,CAACP,IAAI,CAACC,IAAI,CAAG,CAAA,CAAA,CAAA;AAE9C;IACA,OAAOO,OAAO,CAACF,KAAA,CAAK,CAAA;AACtB,GAAA;AAEA,EAAA,IAAIG,QAAQ;AACV,IAAA,OAAO,IAAI,CAACd,YAAY,GAAG,IAAI,CAACK,IAAI,CAACS,KAAK,IAAI,SAAYtB,GAAAA,MAAA,GAAS,QAAW,GAAA,EAAA,CAAA;AAChF,GAAA;AAEA,EAAA;IAAAuB,oBAAA,CAAAC,kBAAA,CAaA,gRAAA,EAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,MAAA;AAAA1B,QAAAA,MAAAA;AAAA,OAAA,CAAA;MAAA2B,UAAA,EAAA,IAAA;AAAU,KAAA,CAAA,EAAV,IAAW,CAAA,CAAA;AAAD,GAAA;AACZ;;;;"}
1
+ {"version":3,"file":"icon.js","sources":["../../src/components/icon.gts"],"sourcesContent":["import { htmlSafe } from '@ember/template';\n\nimport styles from '@hokulea/core/icons.module.css';\n\nimport type { TOC } from '@ember/component/template-only';\n\nexport interface IconSignature {\n Element: HTMLSpanElement;\n Args: {\n /**\n * A string containing a `<svg>` element.\n * Make sure to use `currentColor` to comply with the styling\n */\n icon: string;\n };\n}\n\nconst Icon: TOC<IconSignature> = <template>\n <span class={{styles.icon}} data-test-icon ...attributes>\n {{htmlSafe @icon}}\n </span>\n</template>;\n\nexport default Icon;\n"],"names":["Icon","setComponentTemplate","precompileTemplate","strictMode","scope","styles","htmlSafe","templateOnly"],"mappings":";;;;;;AAiBA,MAAMA,IAAU,GAAAC,oBAAA,CAAiBC,kBAAA,CAAA,oGAAA,EAIjC;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,MAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
@@ -8,12 +8,12 @@ const Affix = setComponentTemplate(precompileTemplate("\n <span class={{@class}
8
8
  strictMode: true
9
9
  }), templateOnly());
10
10
  const TextInput = setComponentTemplate(precompileTemplate("\n {{!-- template-lint-disable no-unsupported-role-attributes --}}\n <span class={{styles.inputBuilder}} aria-disabled={{if @disabled \"true\"}} data-input-builder data-test-input-builder>\n {{yield (hash Prefix=(component Affix class=styles.prefix identity=\"prefix\") Affix=(component Affix class=styles.affix identity=\"affix\") Suffix=(component Affix class=styles.suffix identity=\"suffix\"))}}\n </span>\n", {
11
+ strictMode: true,
11
12
  scope: () => ({
12
13
  styles,
13
14
  hash,
14
15
  Affix
15
- }),
16
- strictMode: true
16
+ })
17
17
  }), templateOnly());
18
18
 
19
19
  export { TextInput as default };
@@ -1 +1 @@
1
- {"version":3,"file":"input-builder.js","sources":["../../src/components/input-builder.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport { hash } from '@ember/helper';\nimport styles from '@hokulea/core/controls.module.css';\nimport type { TOC } from '@ember/component/template-only';\nimport type { WithBoundArgs } from '@glint/template';\ninterface AffixSignature {\n Args: {\n class: string;\n identity: 'prefix' | 'affix' | 'suffix';\n };\n Blocks: {\n default: [];\n };\n}\nconst Affix: TOC<AffixSignature> = template(`\n <span class={{@class}} data-test-input-builder={{@identity}}>{{yield}}</span>\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nexport interface InputBuilderSignature {\n Args: {\n disabled?: boolean;\n };\n Blocks: {\n default: [{\n // eslint-disable-next-line @typescript-eslint/naming-convention\n Affix: WithBoundArgs<typeof Affix, 'class' | 'identity'>;\n // eslint-disable-next-line @typescript-eslint/naming-convention\n Prefix: WithBoundArgs<typeof Affix, 'class' | 'identity'>;\n // eslint-disable-next-line @typescript-eslint/naming-convention\n Suffix: WithBoundArgs<typeof Affix, 'class' | 'identity'>;\n }];\n };\n}\nconst TextInput: TOC<InputBuilderSignature> = template(`\n {{! template-lint-disable no-unsupported-role-attributes }}\n <span\n class={{styles.inputBuilder}}\n aria-disabled={{if @disabled \"true\"}}\n data-input-builder\n data-test-input-builder\n >\n {{yield\n (hash\n Prefix=(component Affix class=styles.prefix identity=\"prefix\")\n Affix=(component Affix class=styles.affix identity=\"affix\")\n Suffix=(component Affix class=styles.suffix identity=\"suffix\")\n )\n }}\n </span>\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nexport default TextInput;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2hva3VsZWEvaG9rdWxlYS9lbWJlci9wYWNrYWdlL3NyYy9jb21wb25lbnRzL2lucHV0LWJ1aWxkZXIuZ3RzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGhhc2ggfSBmcm9tICdAZW1iZXIvaGVscGVyJztcblxuaW1wb3J0IHN0eWxlcyBmcm9tICdAaG9rdWxlYS9jb3JlL2NvbnRyb2xzLm1vZHVsZS5jc3MnO1xuXG5pbXBvcnQgdHlwZSB7IFRPQyB9IGZyb20gJ0BlbWJlci9jb21wb25lbnQvdGVtcGxhdGUtb25seSc7XG5pbXBvcnQgdHlwZSB7IFdpdGhCb3VuZEFyZ3MgfSBmcm9tICdAZ2xpbnQvdGVtcGxhdGUnO1xuXG5pbnRlcmZhY2UgQWZmaXhTaWduYXR1cmUge1xuICBBcmdzOiB7XG4gICAgY2xhc3M6IHN0cmluZztcbiAgICBpZGVudGl0eTogJ3ByZWZpeCcgfCAnYWZmaXgnIHwgJ3N1ZmZpeCc7XG4gIH07XG4gIEJsb2Nrczoge1xuICAgIGRlZmF1bHQ6IFtdO1xuICB9O1xufVxuXG5jb25zdCBBZmZpeDogVE9DPEFmZml4U2lnbmF0dXJlPiA9IDx0ZW1wbGF0ZT5cbiAgPHNwYW4gY2xhc3M9e3tAY2xhc3N9fSBkYXRhLXRlc3QtaW5wdXQtYnVpbGRlcj17e0BpZGVudGl0eX19Pnt7eWllbGR9fTwvc3Bhbj5cbjwvdGVtcGxhdGU-O1xuXG5leHBvcnQgaW50ZXJmYWNlIElucHV0QnVpbGRlclNpZ25hdHVyZSB7XG4gIEFyZ3M6IHtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIH07XG4gIEJsb2Nrczoge1xuICAgIGRlZmF1bHQ6IFtcbiAgICAgIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICAgICBBZmZpeDogV2l0aEJvdW5kQXJnczx0eXBlb2YgQWZmaXgsICdjbGFzcycgfCAnaWRlbnRpdHknPjtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICAgICBQcmVmaXg6IFdpdGhCb3VuZEFyZ3M8dHlwZW9mIEFmZml4LCAnY2xhc3MnIHwgJ2lkZW50aXR5Jz47XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAgICAgU3VmZml4OiBXaXRoQm91bmRBcmdzPHR5cGVvZiBBZmZpeCwgJ2NsYXNzJyB8ICdpZGVudGl0eSc-O1xuICAgICAgfVxuICAgIF07XG4gIH07XG59XG5cbmNvbnN0IFRleHRJbnB1dDogVE9DPElucHV0QnVpbGRlclNpZ25hdHVyZT4gPSA8dGVtcGxhdGU-XG4gIHt7ISB0ZW1wbGF0ZS1saW50LWRpc2FibGUgbm8tdW5zdXBwb3J0ZWQtcm9sZS1hdHRyaWJ1dGVzIH19XG4gIDxzcGFuXG4gICAgY2xhc3M9e3tzdHlsZXMuaW5wdXRCdWlsZGVyfX1cbiAgICBhcmlhLWRpc2FibGVkPXt7aWYgQGRpc2FibGVkIFwidHJ1ZVwifX1cbiAgICBkYXRhLWlucHV0LWJ1aWxkZXJcbiAgICBkYXRhLXRlc3QtaW5wdXQtYnVpbGRlclxuICA-XG4gICAge3t5aWVsZFxuICAgICAgKGhhc2hcbiAgICAgICAgUHJlZml4PShjb21wb25lbnQgQWZmaXggY2xhc3M9c3R5bGVzLnByZWZpeCBpZGVudGl0eT1cInByZWZpeFwiKVxuICAgICAgICBBZmZpeD0oY29tcG9uZW50IEFmZml4IGNsYXNzPXN0eWxlcy5hZmZpeCBpZGVudGl0eT1cImFmZml4XCIpXG4gICAgICAgIFN1ZmZpeD0oY29tcG9uZW50IEFmZml4IGNsYXNzPXN0eWxlcy5zdWZmaXggaWRlbnRpdHk9XCJzdWZmaXhcIilcbiAgICAgIClcbiAgICB9fVxuICA8L3NwYW4-XG48L3RlbXBsYXRlPjtcblxuZXhwb3J0IGRlZmF1bHQgVGV4dElucHV0O1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxTQUFTLElBQUksUUFBUSxnQkFBZ0I7QUFFckMsT0FBTyxZQUFZLG9DQUFvQztBQUV2RCxjQUFjLEdBQUcsUUFBUSxpQ0FBaUM7QUFDMUQsY0FBYyxhQUFhLFFBQVEsa0JBQWtCO1VBRTNDO0lBQ1I7UUFDRSxPQUFPLE1BQU07UUFDYixVQUFVLFdBQVcsVUFBVTs7SUFFakM7UUFDRTs7O0FBSUosTUFBTSxPQUFPLElBQUksa0JBQWtCLFNBQVUsQ0FBQTs7QUFFN0MsQ0FBQSxFQUFBO0lBQUE7UUFBQSxPQUFBLEtBQUEsU0FBQSxDQUFBLEVBQVc7SUFBRDtBQUFBO0FBRVYsaUJBQWlCO0lBQ2Y7UUFDRSxXQUFXLE9BQU87O0lBRXBCO1FBQ0U7Z0JBRUksZ0VBQWdFO2dCQUNoRSxPQUFPLHFCQUFxQixPQUFPLFVBQVU7Z0JBQzdDLGdFQUFnRTtnQkFDaEUsUUFBUSxxQkFBcUIsT0FBTyxVQUFVO2dCQUM5QyxnRUFBZ0U7Z0JBQ2hFLFFBQVEscUJBQXFCLE9BQU8sVUFBVTs7OztBQU10RCxNQUFNLFdBQVcsSUFBSSx5QkFBeUIsU0FBVSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7O0FBZ0J4RCxDQUFBLEVBQUE7SUFBQTtRQUFBLE9BQUEsS0FBQSxTQUFBLENBQUEsRUFBVztJQUFEO0FBQUE7QUFFVixlQUFlLFVBQVUifQ"],"names":["Affix","setComponentTemplate","precompileTemplate","strictMode","templateOnly","TextInput","scope","styles","hash"],"mappings":";;;;;;AAiBA,MAAMA,KAAW,GAAAC,oBAAA,CAAkBC,kBAAA,CAEnC,qFAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA,CAAA,CAAA;AAoBV,MAAMC,SAAe,GAAAJ,oBAAA,CAAyBC,kBAAA,CAgB9C,maAAA,EAAA;AAAAI,EAAAA,KAAA,EAAAA,OAAA;IAAAC,MAAA;IAAAC,IAAA;AAAAR,IAAAA,KAAAA;AAAA,GAAA,CAAA;EAAAG,UAAA,EAAA,IAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
1
+ {"version":3,"file":"input-builder.js","sources":["../../src/components/input-builder.gts"],"sourcesContent":["import { hash } from '@ember/helper';\n\nimport styles from '@hokulea/core/controls.module.css';\n\nimport type { TOC } from '@ember/component/template-only';\nimport type { WithBoundArgs } from '@glint/template';\n\ninterface AffixSignature {\n Args: {\n class: string;\n identity: 'prefix' | 'affix' | 'suffix';\n };\n Blocks: {\n default: [];\n };\n}\n\nconst Affix: TOC<AffixSignature> = <template>\n <span class={{@class}} data-test-input-builder={{@identity}}>{{yield}}</span>\n</template>;\n\nexport interface InputBuilderSignature {\n Args: {\n disabled?: boolean;\n };\n Blocks: {\n default: [\n {\n Affix: WithBoundArgs<typeof Affix, 'class' | 'identity'>;\n Prefix: WithBoundArgs<typeof Affix, 'class' | 'identity'>;\n Suffix: WithBoundArgs<typeof Affix, 'class' | 'identity'>;\n }\n ];\n };\n}\n\nconst TextInput: TOC<InputBuilderSignature> = <template>\n {{! template-lint-disable no-unsupported-role-attributes }}\n <span\n class={{styles.inputBuilder}}\n aria-disabled={{if @disabled \"true\"}}\n data-input-builder\n data-test-input-builder\n >\n {{yield\n (hash\n Prefix=(component Affix class=styles.prefix identity=\"prefix\")\n Affix=(component Affix class=styles.affix identity=\"affix\")\n Suffix=(component Affix class=styles.suffix identity=\"suffix\")\n )\n }}\n </span>\n</template>;\n\nexport default TextInput;\n"],"names":["Affix","setComponentTemplate","precompileTemplate","strictMode","templateOnly","TextInput","scope","styles","hash"],"mappings":";;;;;;AAiBA,MAAMA,KAAW,GAAAC,oBAAA,CAAkBC,kBAAA,CAAA,qFAAA,EAEnC;EAAAC,UAAA,EAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA,CAAA;AAiBV,MAAMC,SAAe,GAAAJ,oBAAA,CAAyBC,kBAAA,CAAA,maAAA,EAgB9C;EAAAC,UAAA,EAAA,IAAA;AAAAG,EAAAA,KAAA,EAAAA,OAAA;IAAAC,MAAA;IAAAC,IAAA;AAAAR,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAI,YAAA,EAAA;;;;"}
@@ -8,14 +8,14 @@ import { TrackedArray } from 'tracked-built-ins';
8
8
  import styles from '@hokulea/core/controls.module.css';
9
9
  import { precompileTemplate } from '@ember/template-compilation';
10
10
  import { setComponentTemplate } from '@ember/component';
11
- import { g, i } from 'decorator-transforms/runtime';
11
+ import { g, i } from 'decorator-transforms/runtime-esm';
12
12
 
13
- let Option = class Option extends Component {
14
- constructor(owner1, args1) {
15
- super(owner1, args1);
16
- args1.registerItem(args1.value);
13
+ class Option extends Component {
14
+ constructor(owner, args) {
15
+ super(owner, args);
16
+ args.registerItem(args.value);
17
17
  registerDestructor(this, () => {
18
- args1.unregisterItem(args1.value);
18
+ args.unregisterItem(args.value);
19
19
  });
20
20
  }
21
21
  static {
@@ -23,7 +23,7 @@ let Option = class Option extends Component {
23
23
  strictMode: true
24
24
  }), this);
25
25
  }
26
- };
26
+ }
27
27
  class List extends Component {
28
28
  Option = Option;
29
29
  static {
@@ -32,32 +32,32 @@ class List extends Component {
32
32
  });
33
33
  }
34
34
  #items = (i(this, "items"), void 0);
35
- registerItem = item1 => {
35
+ registerItem = item => {
36
36
  // eslint-disable-next-line ember/no-runloop
37
37
  next(() => {
38
- this.items.push(item1);
38
+ this.items.push(item);
39
39
  });
40
40
  };
41
- unregisterItem = item1 => {
41
+ unregisterItem = item => {
42
42
  // eslint-disable-next-line ember/no-runloop
43
43
  next(() => {
44
- this.items.splice(this.items.indexOf(item1), 1);
44
+ this.items.splice(this.items.indexOf(item), 1);
45
45
  });
46
46
  };
47
- isSelected = option1 => {
47
+ isSelected = option => {
48
48
  if (Array.isArray(this.args.value)) {
49
- return this.args.value.includes(option1);
49
+ return this.args.value.includes(option);
50
50
  }
51
- return this.args.value === option1;
51
+ return this.args.value === option;
52
52
  };
53
53
  static {
54
- setComponentTemplate(precompileTemplate("\n <div class={{styles.list}} data-test-list ...attributes {{!--@glint-ignore--}} {{ariaListbox items=this.items selection=@value multi=@multiple disabled=@disabled select=@update activateItem=@activateItem}}>\n {{yield (hash Option=(component this.Option isSelected=this.isSelected registerItem=this.registerItem unregisterItem=this.unregisterItem))}}\n </div>\n ", {
54
+ setComponentTemplate(precompileTemplate("\n <div class={{styles.list}} data-test-list ...attributes {{ariaListbox items=this.items selection=@value multi=@multiple disabled=@disabled select=@update activateItem=@activateItem}}>\n {{yield (hash Option=(component this.Option isSelected=this.isSelected registerItem=this.registerItem unregisterItem=this.unregisterItem))}}\n </div>\n ", {
55
+ strictMode: true,
55
56
  scope: () => ({
56
57
  styles,
57
58
  ariaListbox,
58
59
  hash
59
- }),
60
- strictMode: true
60
+ })
61
61
  }), this);
62
62
  }
63
63
  }
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sources":["../../src/components/list.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { registerDestructor } from '@ember/destroyable';\nimport { hash } from '@ember/helper';\nimport { next } from '@ember/runloop';\nimport { ariaListbox } from 'ember-aria-voyager';\nimport { TrackedArray } from 'tracked-built-ins';\nimport styles from '@hokulea/core/controls.module.css';\nimport type Owner from '@ember/owner';\nimport type { WithBoundArgs } from '@glint/template';\nexport interface OptionSignature<V> {\n Element: HTMLOptionElement;\n Args: {\n value: V;\n isSelected: (option: V) => boolean;\n registerItem: (item: V) => void;\n unregisterItem: (item: V) => void;\n };\n Blocks: {\n default: [];\n };\n}\nlet Option = class Option<V> extends Component<OptionSignature<V>> {\n constructor(owner1: Owner, args1: OptionSignature<V>['Args']){\n super(owner1, args1);\n args1.registerItem(args1.value);\n registerDestructor(this, ()=>{\n args1.unregisterItem(args1.value);\n });\n }\n static{\n template(`\n <span role=\"option\" aria-selected={{if (@isSelected @value) \"true\"}}>\n {{yield}}\n </span>\n `, {\n component: this,\n eval () {\n return eval(arguments[0]);\n }\n });\n }\n};\nexport interface ListSignature<V> {\n Element: HTMLDivElement;\n Args: {\n multiple?: boolean;\n disabled?: boolean;\n value?: V | V[];\n update?: (value: V | V[]) => void;\n activateItem?: (value: V) => void;\n };\n Blocks: {\n default: [{\n Option: WithBoundArgs<typeof Option, 'isSelected' | 'registerItem' | 'unregisterItem'>;\n }];\n };\n}\nexport default class List<V> extends Component<ListSignature<V>> {\n Option = Option<V>;\n @tracked\n items: V[] = new TrackedArray();\n registerItem = (item1: V)=>{\n // eslint-disable-next-line ember/no-runloop\n next(()=>{\n this.items.push(item1);\n });\n };\n unregisterItem = (item1: V)=>{\n // eslint-disable-next-line ember/no-runloop\n next(()=>{\n this.items.splice(this.items.indexOf(item1), 1);\n });\n };\n isSelected = (option1: V)=>{\n if (Array.isArray(this.args.value)) {\n return this.args.value.includes(option1);\n }\n return this.args.value === option1;\n };\n static{\n template(`\n <div\n class={{styles.list}}\n data-test-list\n ...attributes\n {{!@glint-ignore}}\n {{ariaListbox\n items=this.items\n selection=@value\n multi=@multiple\n disabled=@disabled\n select=@update\n activateItem=@activateItem\n }}\n >\n {{yield\n (hash\n Option=(component\n this.Option\n isSelected=this.isSelected\n registerItem=this.registerItem\n unregisterItem=this.unregisterItem\n )\n )\n }}\n </div>\n `, {\n component: this,\n eval () {\n return eval(arguments[0]);\n }\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2hva3VsZWEvaG9rdWxlYS9lbWJlci9wYWNrYWdlL3NyYy9jb21wb25lbnRzL2xpc3QuZ3RzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb21wb25lbnQgZnJvbSAnQGdsaW1tZXIvY29tcG9uZW50JztcbmltcG9ydCB7IHRyYWNrZWQgfSBmcm9tICdAZ2xpbW1lci90cmFja2luZyc7XG5pbXBvcnQgeyByZWdpc3RlckRlc3RydWN0b3IgfSBmcm9tICdAZW1iZXIvZGVzdHJveWFibGUnO1xuaW1wb3J0IHsgaGFzaCB9IGZyb20gJ0BlbWJlci9oZWxwZXInO1xuaW1wb3J0IHsgbmV4dCB9IGZyb20gJ0BlbWJlci9ydW5sb29wJztcblxuaW1wb3J0IHsgYXJpYUxpc3Rib3ggfSBmcm9tICdlbWJlci1hcmlhLXZveWFnZXInO1xuaW1wb3J0IHsgVHJhY2tlZEFycmF5IH0gZnJvbSAndHJhY2tlZC1idWlsdC1pbnMnO1xuXG5pbXBvcnQgc3R5bGVzIGZyb20gJ0Bob2t1bGVhL2NvcmUvY29udHJvbHMubW9kdWxlLmNzcyc7XG5cbmltcG9ydCB0eXBlIE93bmVyIGZyb20gJ0BlbWJlci9vd25lcic7XG5pbXBvcnQgdHlwZSB7IFdpdGhCb3VuZEFyZ3MgfSBmcm9tICdAZ2xpbnQvdGVtcGxhdGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE9wdGlvblNpZ25hdHVyZTxWPiB7XG4gIEVsZW1lbnQ6IEhUTUxPcHRpb25FbGVtZW50O1xuICBBcmdzOiB7XG4gICAgdmFsdWU6IFY7XG4gICAgaXNTZWxlY3RlZDogKG9wdGlvbjogVikgPT4gYm9vbGVhbjtcbiAgICByZWdpc3Rlckl0ZW06IChpdGVtOiBWKSA9PiB2b2lkO1xuICAgIHVucmVnaXN0ZXJJdGVtOiAoaXRlbTogVikgPT4gdm9pZDtcbiAgfTtcbiAgQmxvY2tzOiB7XG4gICAgZGVmYXVsdDogW107XG4gIH07XG59XG5cbmNsYXNzIE9wdGlvbjxWPiBleHRlbmRzIENvbXBvbmVudDxPcHRpb25TaWduYXR1cmU8Vj4-IHtcbiAgY29uc3RydWN0b3Iob3duZXI6IE93bmVyLCBhcmdzOiBPcHRpb25TaWduYXR1cmU8Vj5bJ0FyZ3MnXSkge1xuICAgIHN1cGVyKG93bmVyLCBhcmdzKTtcblxuICAgIGFyZ3MucmVnaXN0ZXJJdGVtKGFyZ3MudmFsdWUpO1xuXG4gICAgcmVnaXN0ZXJEZXN0cnVjdG9yKHRoaXMsICgpID0-IHtcbiAgICAgIGFyZ3MudW5yZWdpc3Rlckl0ZW0oYXJncy52YWx1ZSk7XG4gICAgfSk7XG4gIH1cblxuICA8dGVtcGxhdGU-XG4gICAgPHNwYW4gcm9sZT1cIm9wdGlvblwiIGFyaWEtc2VsZWN0ZWQ9e3tpZiAoQGlzU2VsZWN0ZWQgQHZhbHVlKSBcInRydWVcIn19PlxuICAgICAge3t5aWVsZH19XG4gICAgPC9zcGFuPlxuICA8L3RlbXBsYXRlPlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpc3RTaWduYXR1cmU8Vj4ge1xuICBFbGVtZW50OiBIVE1MRGl2RWxlbWVudDtcbiAgQXJnczoge1xuICAgIG11bHRpcGxlPzogYm9vbGVhbjtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgdmFsdWU_OiBWIHwgVltdO1xuICAgIHVwZGF0ZT86ICh2YWx1ZTogViB8IFZbXSkgPT4gdm9pZDtcbiAgICBhY3RpdmF0ZUl0ZW0_OiAodmFsdWU6IFYpID0-IHZvaWQ7XG4gIH07XG4gIEJsb2Nrczoge1xuICAgIGRlZmF1bHQ6IFtcbiAgICAgIHtcbiAgICAgICAgT3B0aW9uOiBXaXRoQm91bmRBcmdzPHR5cGVvZiBPcHRpb248Vj4sICdpc1NlbGVjdGVkJyB8ICdyZWdpc3Rlckl0ZW0nIHwgJ3VucmVnaXN0ZXJJdGVtJz47XG4gICAgICB9XG4gICAgXTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTGlzdDxWPiBleHRlbmRzIENvbXBvbmVudDxMaXN0U2lnbmF0dXJlPFY-PiB7XG4gIE9wdGlvbiA9IE9wdGlvbjxWPjtcblxuICBAdHJhY2tlZCBpdGVtczogVltdID0gbmV3IFRyYWNrZWRBcnJheSgpO1xuXG4gIHJlZ2lzdGVySXRlbSA9IChpdGVtOiBWKSA9PiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVtYmVyL25vLXJ1bmxvb3BcbiAgICBuZXh0KCgpID0-IHtcbiAgICAgIHRoaXMuaXRlbXMucHVzaChpdGVtKTtcbiAgICB9KTtcbiAgfTtcblxuICB1bnJlZ2lzdGVySXRlbSA9IChpdGVtOiBWKSA9PiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVtYmVyL25vLXJ1bmxvb3BcbiAgICBuZXh0KCgpID0-IHtcbiAgICAgIHRoaXMuaXRlbXMuc3BsaWNlKHRoaXMuaXRlbXMuaW5kZXhPZihpdGVtKSwgMSk7XG4gICAgfSk7XG4gIH07XG5cbiAgaXNTZWxlY3RlZCA9IChvcHRpb246IFYpID0-IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmFyZ3MudmFsdWUpKSB7XG4gICAgICByZXR1cm4gdGhpcy5hcmdzLnZhbHVlLmluY2x1ZGVzKG9wdGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYXJncy52YWx1ZSA9PT0gb3B0aW9uO1xuICB9O1xuXG4gIDx0ZW1wbGF0ZT5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz17e3N0eWxlcy5saXN0fX1cbiAgICAgIGRhdGEtdGVzdC1saXN0XG4gICAgICAuLi5hdHRyaWJ1dGVzXG4gICAgICB7eyFAZ2xpbnQtaWdub3JlfX1cbiAgICAgIHt7YXJpYUxpc3Rib3hcbiAgICAgICAgaXRlbXM9dGhpcy5pdGVtc1xuICAgICAgICBzZWxlY3Rpb249QHZhbHVlXG4gICAgICAgIG11bHRpPUBtdWx0aXBsZVxuICAgICAgICBkaXNhYmxlZD1AZGlzYWJsZWRcbiAgICAgICAgc2VsZWN0PUB1cGRhdGVcbiAgICAgICAgYWN0aXZhdGVJdGVtPUBhY3RpdmF0ZUl0ZW1cbiAgICAgIH19XG4gICAgPlxuICAgICAge3t5aWVsZFxuICAgICAgICAoaGFzaFxuICAgICAgICAgIE9wdGlvbj0oY29tcG9uZW50XG4gICAgICAgICAgICB0aGlzLk9wdGlvblxuICAgICAgICAgICAgaXNTZWxlY3RlZD10aGlzLmlzU2VsZWN0ZWRcbiAgICAgICAgICAgIHJlZ2lzdGVySXRlbT10aGlzLnJlZ2lzdGVySXRlbVxuICAgICAgICAgICAgdW5yZWdpc3Rlckl0ZW09dGhpcy51bnJlZ2lzdGVySXRlbVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgfX1cbiAgICA8L2Rpdj5cbiAgPC90ZW1wbGF0ZT5cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxlQUFlLHFCQUFxQjtBQUMzQyxTQUFTLE9BQU8sUUFBUSxvQkFBb0I7QUFDNUMsU0FBUyxrQkFBa0IsUUFBUSxxQkFBcUI7QUFDeEQsU0FBUyxJQUFJLFFBQVEsZ0JBQWdCO0FBQ3JDLFNBQVMsSUFBSSxRQUFRLGlCQUFpQjtBQUV0QyxTQUFTLFdBQVcsUUFBUSxxQkFBcUI7QUFDakQsU0FBUyxZQUFZLFFBQVEsb0JBQW9CO0FBRWpELE9BQU8sWUFBWSxvQ0FBb0M7QUFFdkQsWUFBWSxXQUFXLGVBQWU7QUFDdEMsY0FBYyxhQUFhLFFBQVEsa0JBQWtCO0FBRXJELGlCQUFpQixnQkFBZ0I7SUFDL0IsU0FBUztJQUNUO1FBQ0UsT0FBTztRQUNQLGFBQWEsUUFBUSxNQUFNLE9BQU87UUFDbEMsZUFBZSxNQUFNLE1BQU0sSUFBSTtRQUMvQixpQkFBaUIsTUFBTSxNQUFNLElBQUk7O0lBRW5DO1FBQ0U7OztBQUlKLElBQUEsQUFBTSxTQUFOLE1BQU0sT0FBTyxXQUFXLFVBQVUsZ0JBQWdCO0lBQ2hELFlBQVksUUFBTyxLQUFLLEVBQUUsT0FBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUU7UUFDMUQsS0FBSyxDQUFDLFFBQU87UUFFYixNQUFLLFlBQVksQ0FBQyxNQUFLLEtBQUs7UUFFNUIsbUJBQW1CLElBQUksRUFBRTtZQUN2QixNQUFLLGNBQWMsQ0FBQyxNQUFLLEtBQUs7UUFDaEM7SUFDRjtJQUVBLE1BQUE7UUFBQSxTQUFVLENBQUE7Ozs7RUFJVixDQUFBLEVBQUE7WUFBQSxXQUFBLElBQVc7WUFBWDtnQkFBQSxPQUFBLEtBQUEsU0FBQSxDQUFBLEVBQVc7WUFBRDtRQUFBO0lBQUEsQ0FKQTtBQUtaO0FBRUEsaUJBQWlCLGNBQWM7SUFDN0IsU0FBUztJQUNUO1FBQ0UsV0FBVyxPQUFPO1FBQ2xCLFdBQVcsT0FBTztRQUNsQixRQUFRLElBQUk7UUFDWixVQUFVLE9BQU8sSUFBSSxRQUFRLElBQUk7UUFDakMsZ0JBQWdCLE9BQU8sTUFBTSxJQUFJOztJQUVuQztRQUNFO2dCQUVJLFFBQVEscUJBQXFCLFFBQVcsZUFBZSxpQkFBaUI7Ozs7QUFNaEYsZUFBZSxNQUFNLEtBQUssV0FBVyxVQUFVLGNBQWM7SUFDM0QsU0FBUyxPQUFPLEdBQUc7SUFFbkIsQ0FBQztJQUFRLE9BQU8sTUFBTSxJQUFJLGVBQWU7SUFFekMsZUFBZSxDQUFDLE9BQU07UUFDcEIsNENBQTRDO1FBQzVDLEtBQUs7WUFDSCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztRQUNsQjtJQUNGLEVBQUU7SUFFRixpQkFBaUIsQ0FBQyxPQUFNO1FBQ3RCLDRDQUE0QztRQUM1QyxLQUFLO1lBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBTztRQUM5QztJQUNGLEVBQUU7SUFFRixhQUFhLENBQUMsU0FBUTtRQUNwQixJQUFJLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHO1lBQ2xDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQ2xDO1FBRUEsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSztJQUM3QixFQUFFO0lBRUYsTUFBQTtRQUFBLFNBQVUsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUEwQlYsQ0FBQSxFQUFBO1lBQUEsV0FBQSxJQUFXO1lBQVg7Z0JBQUEsT0FBQSxLQUFBLFNBQUEsQ0FBQSxFQUFXO1lBQUQ7UUFBQTtJQUFBLENBMUJBO0FBMkJaIn0"],"names":["Option","Component","constructor","owner1","args1","registerItem","value","registerDestructor","unregisterItem","setComponentTemplate","precompileTemplate","strictMode","List","g","prototype","tracked","TrackedArray","i","void 0","item1","next","items","push","splice","indexOf","isSelected","option1","Array","isArray","args","includes","scope","styles","ariaListbox","hash"],"mappings":";;;;;;;;;;;;AA2BA,IAAAA,MAAM,GAAN,MAAMA,MAAA,SAAkBC,SAAA,CAA0B;EAChDC,WAAYC,CAAAA,MAAY,EAAEC,KAAgC,EAAE;IAC1D,KAAK,CAACD,MAAA,EAAOC,KAAA,CAAA,CAAA;AAEbA,IAAAA,KAAA,CAAKC,YAAY,CAACD,KAAA,CAAKE,KAAK,CAAA,CAAA;IAE5BC,kBAAA,CAAmB,IAAI,EAAE,MAAA;AACvBH,MAAAA,KAAA,CAAKI,cAAc,CAACJ,KAAA,CAAKE,KAAK,CAAA,CAAA;AAChC,KAAA,CAAA,CAAA;AACF,GAAA;AAEA,EAAA;IAAAG,oBAAA,CAAAC,kBAAA,CAIA,mHAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAU,KAAA,CAAA,EAAV,IAAW,CAAA,CAAA;AAAD,GAAA;AACZ,CAAA,CAAA;AAoBe,MAAMC,IAAA,SAAgBX,SAAA,CAAwB;AAC3DD,EAAAA,MAAA,GAASA,MAAA,CAAA;AAAU,EAAA;IAAAa,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,OAAA,EAAA,CAElBC,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAAqB,IAAIC,YAAA,EAAA,CAAA;AAAA,KAAA,CAAA,CAAA;AAAA,GAAA;AAAA,EAAA,MAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,OAAA,CAAA,EAAAC,KAAA,CAAA,EAAA;AAE1Bb,EAAAA,YAAA,GAAgBc,KAAM,IAAA;AACpB;AACAC,IAAAA,IAAA,CAAK,MAAA;AACH,MAAA,IAAI,CAACC,KAAK,CAACC,IAAI,CAACH,KAAA,CAAA,CAAA;AAClB,KAAA,CAAA,CAAA;AACF,GAAA,CAAA;AAEAX,EAAAA,cAAA,GAAkBW,KAAM,IAAA;AACtB;AACAC,IAAAA,IAAA,CAAK,MAAA;AACH,MAAA,IAAI,CAACC,KAAK,CAACE,MAAM,CAAC,IAAI,CAACF,KAAK,CAACG,OAAO,CAACL,KAAA,CAAO,EAAA,CAAA,CAAA,CAAA;AAC9C,KAAA,CAAA,CAAA;AACF,GAAA,CAAA;AAEAM,EAAAA,UAAA,GAAcC,OAAQ,IAAA;IACpB,IAAIC,KAAA,CAAMC,OAAO,CAAC,IAAI,CAACC,IAAI,CAACvB,KAAK,CAAG,EAAA;MAClC,OAAO,IAAI,CAACuB,IAAI,CAACvB,KAAK,CAACwB,QAAQ,CAACJ,OAAA,CAAA,CAAA;AAClC,KAAA;AAEA,IAAA,OAAO,IAAI,CAACG,IAAI,CAACvB,KAAK,KAAKoB,OAAA,CAAA;AAC7B,GAAA,CAAA;AAEA,EAAA;IAAAjB,oBAAA,CAAAC,kBAAA,CA0BA,0XAAA,EAAA;AAAAqB,MAAAA,KAAA,EAAAA,OAAA;QAAAC,MAAA;QAAAC,WAAA;AAAAC,QAAAA,IAAAA;AAAA,OAAA,CAAA;MAAAvB,UAAA,EAAA,IAAA;AAAU,KAAA,CAAA,EAAV,IAAW,CAAA,CAAA;AAAD,GAAA;AACZ;;;;"}
1
+ {"version":3,"file":"list.js","sources":["../../src/components/list.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { registerDestructor } from '@ember/destroyable';\nimport { hash } from '@ember/helper';\nimport { next } from '@ember/runloop';\n\nimport { ariaListbox } from 'ember-aria-voyager';\nimport { TrackedArray } from 'tracked-built-ins';\n\nimport styles from '@hokulea/core/controls.module.css';\n\nimport type Owner from '@ember/owner';\nimport type { WithBoundArgs } from '@glint/template';\n\nexport interface OptionSignature<V> {\n Element: HTMLOptionElement;\n Args: {\n value: V;\n isSelected: (option: V) => boolean;\n registerItem: (item: V) => void;\n unregisterItem: (item: V) => void;\n };\n Blocks: {\n default: [];\n };\n}\n\nclass Option<V> extends Component<OptionSignature<V>> {\n constructor(owner: Owner, args: OptionSignature<V>['Args']) {\n super(owner, args);\n\n args.registerItem(args.value);\n\n registerDestructor(this, () => {\n args.unregisterItem(args.value);\n });\n }\n\n <template>\n <span role=\"option\" aria-selected={{if (@isSelected @value) \"true\"}}>\n {{yield}}\n </span>\n </template>\n}\n\nexport interface ListSignature<V> {\n Element: HTMLDivElement;\n Args: {\n multiple?: boolean;\n disabled?: boolean;\n value?: V | V[];\n update?: (value: V | V[]) => void;\n activateItem?: (value: V) => void;\n };\n Blocks: {\n default: [\n {\n Option: WithBoundArgs<typeof Option<V>, 'isSelected' | 'registerItem' | 'unregisterItem'>;\n }\n ];\n };\n}\n\nexport default class List<V> extends Component<ListSignature<V>> {\n Option = Option<V>;\n\n @tracked items: V[] = new TrackedArray();\n\n registerItem = (item: V) => {\n // eslint-disable-next-line ember/no-runloop\n next(() => {\n this.items.push(item);\n });\n };\n\n unregisterItem = (item: V) => {\n // eslint-disable-next-line ember/no-runloop\n next(() => {\n this.items.splice(this.items.indexOf(item), 1);\n });\n };\n\n isSelected = (option: V) => {\n if (Array.isArray(this.args.value)) {\n return this.args.value.includes(option);\n }\n\n return this.args.value === option;\n };\n\n <template>\n <div\n class={{styles.list}}\n data-test-list\n ...attributes\n {{ariaListbox\n items=this.items\n selection=@value\n multi=@multiple\n disabled=@disabled\n select=@update\n activateItem=@activateItem\n }}\n >\n {{yield\n (hash\n Option=(component\n this.Option\n isSelected=this.isSelected\n registerItem=this.registerItem\n unregisterItem=this.unregisterItem\n )\n )\n }}\n </div>\n </template>\n}\n"],"names":["Option","Component","constructor","owner","args","registerItem","value","registerDestructor","unregisterItem","setComponentTemplate","precompileTemplate","strictMode","List","g","prototype","tracked","TrackedArray","i","void 0","item","next","items","push","splice","indexOf","isSelected","option","Array","isArray","includes","scope","styles","ariaListbox","hash"],"mappings":";;;;;;;;;;;;AA2BA,MAAMA,MAAA,SAAkBC,SAAA,CAA0B;AAChDC,EAAAA,WAAAA,CAAYC,KAAY,EAAEC,IAAgC,EAAE;AAC1D,IAAA,KAAK,CAACD,KAAA,EAAOC,IAAA,CAAA;AAEbA,IAAAA,IAAA,CAAKC,YAAY,CAACD,IAAA,CAAKE,KAAK,CAAA;IAE5BC,kBAAA,CAAmB,IAAI,EAAE,MAAA;AACvBH,MAAAA,IAAA,CAAKI,cAAc,CAACJ,IAAA,CAAKE,KAAK,CAAA;AAChC,IAAA,CAAA,CAAA;AACF,EAAA;AAEA,EAAA;IAAAG,oBAAA,CAAAC,kBAAA,CAAA,mHAAA,EAIA;MAAAC,UAAA,EAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;AAoBe,MAAMC,IAAA,SAAgBX,SAAA,CAAwB;AAC3DD,EAAAA,MAAA,GAASA;AAAU,EAAA;IAAAa,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,OAAA,EAAA,CAElBC,OAAA,CAAA,EAAA,YAAA;MAAA,OAAqB,IAAIC,YAAA,EAAA;AAAA,IAAA,CAAA,CAAA;AAAA;AAAA,EAAA,MAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,OAAA,CAAA,EAAAC,MAAA;EAE1Bb,YAAA,GAAgBc,IAAM,IAAA;AACpB;AACAC,IAAAA,IAAA,CAAK,MAAA;AACH,MAAA,IAAI,CAACC,KAAK,CAACC,IAAI,CAACH,IAAA,CAAA;AAClB,IAAA,CAAA,CAAA;EACF,CAAA;EAEAX,cAAA,GAAkBW,IAAM,IAAA;AACtB;AACAC,IAAAA,IAAA,CAAK,MAAA;AACH,MAAA,IAAI,CAACC,KAAK,CAACE,MAAM,CAAC,IAAI,CAACF,KAAK,CAACG,OAAO,CAACL,IAAA,CAAA,EAAO,CAAA,CAAA;AAC9C,IAAA,CAAA,CAAA;EACF,CAAA;EAEAM,UAAA,GAAcC,MAAQ,IAAA;IACpB,IAAIC,KAAA,CAAMC,OAAO,CAAC,IAAI,CAACxB,IAAI,CAACE,KAAK,CAAA,EAAG;MAClC,OAAO,IAAI,CAACF,IAAI,CAACE,KAAK,CAACuB,QAAQ,CAACH,MAAA,CAAA;AAClC,IAAA;AAEA,IAAA,OAAO,IAAI,CAACtB,IAAI,CAACE,KAAK,KAAKoB,MAAA;EAC7B,CAAA;AAEA,EAAA;IAAAjB,oBAAA,CAAAC,kBAAA,CAAA,mWAAA,EAyBA;MAAAC,UAAA,EAAA,IAAA;AAAAmB,MAAAA,KAAA,EAAAA,OAAA;QAAAC,MAAA;QAAAC,WAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
@@ -7,14 +7,13 @@ import { service } from '@ember/service';
7
7
  import { htmlSafe } from '@ember/template';
8
8
  import { ariaMenu } from 'ember-aria-voyager';
9
9
  import { CommandElement } from 'ember-command';
10
- import { consume } from 'ember-provide-consume-context';
11
10
  import { TrackedArray } from 'tracked-built-ins';
12
11
  import styles from '@hokulea/core/controls.module.css';
13
12
  import { d as disabled } from '../disabled-B_FQ0Z51.js';
14
13
  import popover from '../helpers/popover.js';
15
14
  import { precompileTemplate } from '@ember/template-compilation';
16
15
  import { setComponentTemplate } from '@ember/component';
17
- import { g, i } from 'decorator-transforms/runtime';
16
+ import { g, i } from 'decorator-transforms/runtime-esm';
18
17
 
19
18
  // below are attempts at conditional typing based on provided blocks in dynamic invocation
20
19
  // type MenuItemArgs = {
@@ -51,26 +50,26 @@ import { g, i } from 'decorator-transforms/runtime';
51
50
  // }
52
51
  // );
53
52
  /* eslint-disable @typescript-eslint/no-use-before-define */
54
- let MenuItem = class MenuItem extends Component {
55
- constructor(owner1, args1) {
56
- super(owner1, args1);
57
- args1.registerItem(this);
53
+ class MenuItem extends Component {
54
+ constructor(owner, args) {
55
+ super(owner, args);
56
+ args.registerItem(this);
58
57
  registerDestructor(this, () => {
59
- args1.unregisterItem(this);
58
+ args.unregisterItem(this);
60
59
  });
61
60
  }
62
61
  static {
63
62
  setComponentTemplate(precompileTemplate("\n {{#if (has-block \"menu\")}}\n {{#let (popover position=\"right-start\") as |p|}}\n <button type=\"button\" role=\"menuitem\" aria-haspopup=\"menu\" {{disabled when=(if @disabled @disabled false)}} {{p.trigger}}>\n {{~yield to=\"label\"~}}\n </button>\n\n <Menu {{p.target}} as |m|>\n {{yield m to=\"menu\"}}\n </Menu>\n {{/let}}\n {{else}}\n <CommandElement @command={{@push}} {{disabled when=(if @disabled @disabled false)}} role=\"menuitem\">\n {{~yield~}}\n </CommandElement>\n {{/if}}\n ", {
63
+ strictMode: true,
64
64
  scope: () => ({
65
65
  popover,
66
66
  disabled,
67
67
  Menu,
68
68
  CommandElement
69
- }),
70
- strictMode: true
69
+ })
71
70
  }), this);
72
71
  }
73
- };
72
+ }
74
73
  /* eslint-enable @typescript-eslint/no-use-before-define */
75
74
 
76
75
  class Menu extends Component {
@@ -78,41 +77,37 @@ class Menu extends Component {
78
77
  g(this.prototype, "fastboot", [service]);
79
78
  }
80
79
  #fastboot = (i(this, "fastboot"), void 0);
81
- static {
82
- g(this.prototype, "withinAppHeader", [consume('hokulea-app-header')]);
83
- }
84
- #withinAppHeader = (i(this, "withinAppHeader"), void 0);
85
80
  static {
86
81
  g(this.prototype, "items", [tracked], function () {
87
82
  return new TrackedArray();
88
83
  });
89
84
  }
90
85
  #items = (i(this, "items"), void 0);
91
- get shallHide() {
92
- return this.fastboot?.isFastBoot && this.withinAppHeader === true;
86
+ get hideInSSR() {
87
+ return this.fastboot?.isFastBoot;
93
88
  }
94
- registerItem = item1 => {
89
+ registerItem = item => {
95
90
  // eslint-disable-next-line ember/no-runloop
96
91
  next(() => {
97
- this.items.push(item1);
92
+ this.items.push(item);
98
93
  });
99
94
  };
100
- unregisterItem = item1 => {
95
+ unregisterItem = item => {
101
96
  // eslint-disable-next-line ember/no-runloop
102
97
  next(() => {
103
- this.items.splice(this.items.indexOf(item1), 1);
98
+ this.items.splice(this.items.indexOf(item), 1);
104
99
  });
105
100
  };
106
101
  static {
107
- setComponentTemplate(precompileTemplate("\n <div class={{styles.menu}} data-test-menu ...attributes {{ariaMenu items=this.items disabled=@disabled}} style={{if this.shallHide (htmlSafe \"display: none\")}}>\n {{yield (hash Item=(component MenuItem registerItem=this.registerItem unregisterItem=this.unregisterItem))}}\n </div>\n ", {
102
+ setComponentTemplate(precompileTemplate("\n <div class={{styles.menu}} data-test-menu ...attributes {{ariaMenu items=this.items disabled=@disabled}} style={{if this.hideInSSR (htmlSafe \"display: none\")}}>\n {{yield (hash Item=(component MenuItem registerItem=this.registerItem unregisterItem=this.unregisterItem))}}\n </div>\n ", {
103
+ strictMode: true,
108
104
  scope: () => ({
109
105
  styles,
110
106
  htmlSafe,
111
107
  ariaMenu,
112
108
  hash,
113
109
  MenuItem
114
- }),
115
- strictMode: true
110
+ })
116
111
  }), this);
117
112
  }
118
113
  }
@@ -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 { tracked } from '@glimmer/tracking';\nimport { registerDestructor } from '@ember/destroyable';\nimport { hash } from '@ember/helper';\nimport { next } from '@ember/runloop';\nimport { service } from '@ember/service';\nimport { htmlSafe } from '@ember/template';\nimport { ariaMenu } from 'ember-aria-voyager';\nimport { CommandElement } from 'ember-command';\nimport { consume } from 'ember-provide-consume-context';\nimport { TrackedArray } from 'tracked-built-ins';\nimport styles from '@hokulea/core/controls.module.css';\nimport disabled from '../-private/modifiers/disabled';\nimport popover from '../helpers/popover';\nimport type { MenuItemArgs, MenuItemBlocks, MenuItemElement } from './-menu';\nimport type Owner from '@ember/owner';\nimport type { WithBoundArgs } from '@glint/template';\nimport type FastBoot from 'ember-cli-fastboot/services/fastboot';\nexport type MenuDefaultBlock = {\n Item: WithBoundArgs<typeof MenuItem, 'registerItem' | 'unregisterItem'>;\n};\nexport interface MenuItemSignature {\n Element: MenuItemElement;\n Args: MenuItemArgs & {\n registerItem: (item: MenuItem) => void;\n unregisterItem: (item: MenuItem) => void;\n };\n Blocks: MenuItemBlocks & {\n menu?: [MenuDefaultBlock];\n };\n}\n// below are attempts at conditional typing based on provided blocks in dynamic invocation\n// type MenuItemArgs = {\n// disabled?: boolean;\n// registerItem: (item: MenuItem) => void;\n// unregisterItem: (item: MenuItem) => void;\n// };\n// export interface MenuItemSignature<T = {}> {\n// Element: HTMLButtonElement | HTMLAnchorElement;\n// Args: T extends { Blocks: { default: [] } }\n// ? MenuItemArgs & {\n// push: CommandAction;\n// }\n// : MenuItemArgs;\n// Blocks: T extends { Blocks: { default: [] } }\n// ? { default: [] }\n// : { label: []; menu: [MenuDefaultBlock] };\n// }\n// & (\n// | {\n// Args: MenuItemArgs & {\n// push: CommandAction;\n// };\n// Blocks: {\n// default: [];\n// };\n// }\n// | {\n// Args: MenuItemArgs;\n// Blocks: {\n// label: [];\n// menu: [MenuDefaultBlock];\n// };\n// }\n// );\n/* eslint-disable @typescript-eslint/no-use-before-define */ let MenuItem = class MenuItem extends Component<MenuItemSignature> {\n constructor(owner1: Owner, args1: MenuItemSignature['Args']){\n super(owner1, args1);\n args1.registerItem(this);\n registerDestructor(this, ()=>{\n args1.unregisterItem(this);\n });\n }\n static{\n template(`\n {{#if (has-block \"menu\")}}\n {{#let (popover position=\"right-start\") as |p|}}\n <button\n type=\"button\"\n role=\"menuitem\"\n aria-haspopup=\"menu\"\n {{disabled when=(if @disabled @disabled false)}}\n {{p.trigger}}\n >\n {{~yield to=\"label\"~}}\n </button>\n\n <Menu {{p.target}} as |m|>\n {{yield m to=\"menu\"}}\n </Menu>\n {{/let}}\n {{else}}\n <CommandElement\n @command={{@push}}\n {{disabled when=(if @disabled @disabled false)}}\n role=\"menuitem\"\n >\n {{~yield~}}\n </CommandElement>\n {{/if}}\n `, {\n component: this,\n eval () {\n return eval(arguments[0]);\n }\n });\n }\n};\n/* eslint-enable @typescript-eslint/no-use-before-define */ export interface MenuSignature {\n Element: HTMLDivElement;\n Args: {\n disabled?: boolean;\n };\n Blocks: {\n default: [MenuDefaultBlock];\n };\n}\nexport default class Menu extends Component<MenuSignature> {\n @service\n fastboot?: FastBoot;\n @consume('hokulea-app-header')\n withinAppHeader: boolean;\n @tracked\n items: MenuItem[] = new TrackedArray();\n get shallHide() {\n return this.fastboot?.isFastBoot && this.withinAppHeader === true;\n }\n registerItem = (item1: MenuItem)=>{\n // eslint-disable-next-line ember/no-runloop\n next(()=>{\n this.items.push(item1);\n });\n };\n unregisterItem = (item1: MenuItem)=>{\n // eslint-disable-next-line ember/no-runloop\n next(()=>{\n this.items.splice(this.items.indexOf(item1), 1);\n });\n };\n static{\n template(`\n <div\n class={{styles.menu}}\n data-test-menu\n ...attributes\n {{ariaMenu items=this.items disabled=@disabled}}\n style={{if this.shallHide (htmlSafe \"display: none\")}}\n >\n {{yield\n (hash\n Item=(component\n MenuItem registerItem=this.registerItem unregisterItem=this.unregisterItem\n )\n )\n }}\n </div>\n `, {\n component: this,\n eval () {\n return eval(arguments[0]);\n }\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2hva3VsZWEvaG9rdWxlYS9lbWJlci9wYWNrYWdlL3NyYy9jb21wb25lbnRzL21lbnUuZ3RzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb21wb25lbnQgZnJvbSAnQGdsaW1tZXIvY29tcG9uZW50JztcbmltcG9ydCB7IHRyYWNrZWQgfSBmcm9tICdAZ2xpbW1lci90cmFja2luZyc7XG5pbXBvcnQgeyByZWdpc3RlckRlc3RydWN0b3IgfSBmcm9tICdAZW1iZXIvZGVzdHJveWFibGUnO1xuaW1wb3J0IHsgaGFzaCB9IGZyb20gJ0BlbWJlci9oZWxwZXInO1xuaW1wb3J0IHsgbmV4dCB9IGZyb20gJ0BlbWJlci9ydW5sb29wJztcbmltcG9ydCB7IHNlcnZpY2UgfSBmcm9tICdAZW1iZXIvc2VydmljZSc7XG5pbXBvcnQgeyBodG1sU2FmZSB9IGZyb20gJ0BlbWJlci90ZW1wbGF0ZSc7XG5cbmltcG9ydCB7IGFyaWFNZW51IH0gZnJvbSAnZW1iZXItYXJpYS12b3lhZ2VyJztcbmltcG9ydCB7IENvbW1hbmRFbGVtZW50IH0gZnJvbSAnZW1iZXItY29tbWFuZCc7XG5pbXBvcnQgeyBjb25zdW1lIH0gZnJvbSAnZW1iZXItcHJvdmlkZS1jb25zdW1lLWNvbnRleHQnO1xuaW1wb3J0IHsgVHJhY2tlZEFycmF5IH0gZnJvbSAndHJhY2tlZC1idWlsdC1pbnMnO1xuXG5pbXBvcnQgc3R5bGVzIGZyb20gJ0Bob2t1bGVhL2NvcmUvY29udHJvbHMubW9kdWxlLmNzcyc7XG5cbmltcG9ydCBkaXNhYmxlZCBmcm9tICcuLi8tcHJpdmF0ZS9tb2RpZmllcnMvZGlzYWJsZWQnO1xuaW1wb3J0IHBvcG92ZXIgZnJvbSAnLi4vaGVscGVycy9wb3BvdmVyJztcblxuaW1wb3J0IHR5cGUgeyBNZW51SXRlbUFyZ3MsIE1lbnVJdGVtQmxvY2tzLCBNZW51SXRlbUVsZW1lbnQgfSBmcm9tICcuLy1tZW51JztcbmltcG9ydCB0eXBlIE93bmVyIGZyb20gJ0BlbWJlci9vd25lcic7XG5pbXBvcnQgdHlwZSB7IFdpdGhCb3VuZEFyZ3MgfSBmcm9tICdAZ2xpbnQvdGVtcGxhdGUnO1xuaW1wb3J0IHR5cGUgRmFzdEJvb3QgZnJvbSAnZW1iZXItY2xpLWZhc3Rib290L3NlcnZpY2VzL2Zhc3Rib290JztcblxuZXhwb3J0IHR5cGUgTWVudURlZmF1bHRCbG9jayA9IHtcbiAgSXRlbTogV2l0aEJvdW5kQXJnczx0eXBlb2YgTWVudUl0ZW0sICdyZWdpc3Rlckl0ZW0nIHwgJ3VucmVnaXN0ZXJJdGVtJz47XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIE1lbnVJdGVtU2lnbmF0dXJlIHtcbiAgRWxlbWVudDogTWVudUl0ZW1FbGVtZW50O1xuICBBcmdzOiBNZW51SXRlbUFyZ3MgJiB7XG4gICAgcmVnaXN0ZXJJdGVtOiAoaXRlbTogTWVudUl0ZW0pID0-IHZvaWQ7XG4gICAgdW5yZWdpc3Rlckl0ZW06IChpdGVtOiBNZW51SXRlbSkgPT4gdm9pZDtcbiAgfTtcbiAgQmxvY2tzOiBNZW51SXRlbUJsb2NrcyAmIHtcbiAgICBtZW51PzogW01lbnVEZWZhdWx0QmxvY2tdO1xuICB9O1xufVxuXG4vLyBiZWxvdyBhcmUgYXR0ZW1wdHMgYXQgY29uZGl0aW9uYWwgdHlwaW5nIGJhc2VkIG9uIHByb3ZpZGVkIGJsb2NrcyBpbiBkeW5hbWljIGludm9jYXRpb25cblxuLy8gdHlwZSBNZW51SXRlbUFyZ3MgPSB7XG4vLyAgIGRpc2FibGVkPzogYm9vbGVhbjtcbi8vICAgcmVnaXN0ZXJJdGVtOiAoaXRlbTogTWVudUl0ZW0pID0-IHZvaWQ7XG4vLyAgIHVucmVnaXN0ZXJJdGVtOiAoaXRlbTogTWVudUl0ZW0pID0-IHZvaWQ7XG4vLyB9O1xuXG4vLyBleHBvcnQgaW50ZXJmYWNlIE1lbnVJdGVtU2lnbmF0dXJlPFQgPSB7fT4ge1xuLy8gICBFbGVtZW50OiBIVE1MQnV0dG9uRWxlbWVudCB8IEhUTUxBbmNob3JFbGVtZW50O1xuLy8gICBBcmdzOiBUIGV4dGVuZHMgeyBCbG9ja3M6IHsgZGVmYXVsdDogW10gfSB9XG4vLyAgICAgPyBNZW51SXRlbUFyZ3MgJiB7XG4vLyAgICAgICAgIHB1c2g6IENvbW1hbmRBY3Rpb247XG4vLyAgICAgICB9XG4vLyAgICAgOiBNZW51SXRlbUFyZ3M7XG4vLyAgIEJsb2NrczogVCBleHRlbmRzIHsgQmxvY2tzOiB7IGRlZmF1bHQ6IFtdIH0gfVxuLy8gICAgID8geyBkZWZhdWx0OiBbXSB9XG4vLyAgICAgOiB7IGxhYmVsOiBbXTsgbWVudTogW01lbnVEZWZhdWx0QmxvY2tdIH07XG4vLyB9XG5cbi8vICAmIChcbi8vICAgfCB7XG4vLyAgICAgICBBcmdzOiBNZW51SXRlbUFyZ3MgJiB7XG4vLyAgICAgICAgIHB1c2g6IENvbW1hbmRBY3Rpb247XG4vLyAgICAgICB9O1xuLy8gICAgICAgQmxvY2tzOiB7XG4vLyAgICAgICAgIGRlZmF1bHQ6IFtdO1xuLy8gICAgICAgfTtcbi8vICAgICB9XG4vLyAgIHwge1xuLy8gICAgICAgQXJnczogTWVudUl0ZW1BcmdzO1xuLy8gICAgICAgQmxvY2tzOiB7XG4vLyAgICAgICAgIGxhYmVsOiBbXTtcbi8vICAgICAgICAgbWVudTogW01lbnVEZWZhdWx0QmxvY2tdO1xuLy8gICAgICAgfTtcbi8vICAgICB9XG4vLyApO1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdXNlLWJlZm9yZS1kZWZpbmUgKi9cbmNsYXNzIE1lbnVJdGVtIGV4dGVuZHMgQ29tcG9uZW50PE1lbnVJdGVtU2lnbmF0dXJlPiB7XG4gIGNvbnN0cnVjdG9yKG93bmVyOiBPd25lciwgYXJnczogTWVudUl0ZW1TaWduYXR1cmVbJ0FyZ3MnXSkge1xuICAgIHN1cGVyKG93bmVyLCBhcmdzKTtcblxuICAgIGFyZ3MucmVnaXN0ZXJJdGVtKHRoaXMpO1xuXG4gICAgcmVnaXN0ZXJEZXN0cnVjdG9yKHRoaXMsICgpID0-IHtcbiAgICAgIGFyZ3MudW5yZWdpc3Rlckl0ZW0odGhpcyk7XG4gICAgfSk7XG4gIH1cblxuICA8dGVtcGxhdGU-XG4gICAge3sjaWYgKGhhcy1ibG9jayBcIm1lbnVcIil9fVxuICAgICAge3sjbGV0IChwb3BvdmVyIHBvc2l0aW9uPVwicmlnaHQtc3RhcnRcIikgYXMgfHB8fX1cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJtZW51aXRlbVwiXG4gICAgICAgICAgYXJpYS1oYXNwb3B1cD1cIm1lbnVcIlxuICAgICAgICAgIHt7ZGlzYWJsZWQgd2hlbj0oaWYgQGRpc2FibGVkIEBkaXNhYmxlZCBmYWxzZSl9fVxuICAgICAgICAgIHt7cC50cmlnZ2VyfX1cbiAgICAgICAgPlxuICAgICAgICAgIHt7fnlpZWxkIHRvPVwibGFiZWxcIn59fVxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8TWVudSB7e3AudGFyZ2V0fX0gYXMgfG18PlxuICAgICAgICAgIHt7eWllbGQgbSB0bz1cIm1lbnVcIn19XG4gICAgICAgIDwvTWVudT5cbiAgICAgIHt7L2xldH19XG4gICAge3tlbHNlfX1cbiAgICAgIDxDb21tYW5kRWxlbWVudFxuICAgICAgICBAY29tbWFuZD17e0BwdXNofX1cbiAgICAgICAge3tkaXNhYmxlZCB3aGVuPShpZiBAZGlzYWJsZWQgQGRpc2FibGVkIGZhbHNlKX19XG4gICAgICAgIHJvbGU9XCJtZW51aXRlbVwiXG4gICAgICA-XG4gICAgICAgIHt7fnlpZWxkfn19XG4gICAgICA8L0NvbW1hbmRFbGVtZW50PlxuICAgIHt7L2lmfX1cbiAgPC90ZW1wbGF0ZT5cbn1cbi8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVzZS1iZWZvcmUtZGVmaW5lICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVudVNpZ25hdHVyZSB7XG4gIEVsZW1lbnQ6IEhUTUxEaXZFbGVtZW50O1xuICBBcmdzOiB7XG4gICAgZGlzYWJsZWQ_OiBib29sZWFuO1xuICB9O1xuICBCbG9ja3M6IHtcbiAgICBkZWZhdWx0OiBbTWVudURlZmF1bHRCbG9ja107XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1lbnUgZXh0ZW5kcyBDb21wb25lbnQ8TWVudVNpZ25hdHVyZT4ge1xuICBAc2VydmljZSBkZWNsYXJlIGZhc3Rib290PzogRmFzdEJvb3Q7XG5cbiAgQGNvbnN1bWUoJ2hva3VsZWEtYXBwLWhlYWRlcicpIGRlY2xhcmUgd2l0aGluQXBwSGVhZGVyOiBib29sZWFuO1xuXG4gIEB0cmFja2VkIGl0ZW1zOiBNZW51SXRlbVtdID0gbmV3IFRyYWNrZWRBcnJheSgpO1xuXG4gIGdldCBzaGFsbEhpZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmFzdGJvb3Q_LmlzRmFzdEJvb3QgJiYgdGhpcy53aXRoaW5BcHBIZWFkZXIgPT09IHRydWU7XG4gIH1cblxuICByZWdpc3Rlckl0ZW0gPSAoaXRlbTogTWVudUl0ZW0pID0-IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZW1iZXIvbm8tcnVubG9vcFxuICAgIG5leHQoKCkgPT4ge1xuICAgICAgdGhpcy5pdGVtcy5wdXNoKGl0ZW0pO1xuICAgIH0pO1xuICB9O1xuXG4gIHVucmVnaXN0ZXJJdGVtID0gKGl0ZW06IE1lbnVJdGVtKSA9PiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVtYmVyL25vLXJ1bmxvb3BcbiAgICBuZXh0KCgpID0-IHtcbiAgICAgIHRoaXMuaXRlbXMuc3BsaWNlKHRoaXMuaXRlbXMuaW5kZXhPZihpdGVtKSwgMSk7XG4gICAgfSk7XG4gIH07XG5cbiAgPHRlbXBsYXRlPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPXt7c3R5bGVzLm1lbnV9fVxuICAgICAgZGF0YS10ZXN0LW1lbnVcbiAgICAgIC4uLmF0dHJpYnV0ZXNcbiAgICAgIHt7YXJpYU1lbnUgaXRlbXM9dGhpcy5pdGVtcyBkaXNhYmxlZD1AZGlzYWJsZWR9fVxuICAgICAgc3R5bGU9e3tpZiB0aGlzLnNoYWxsSGlkZSAoaHRtbFNhZmUgXCJkaXNwbGF5OiBub25lXCIpfX1cbiAgICA-XG4gICAgICB7e3lpZWxkXG4gICAgICAgIChoYXNoXG4gICAgICAgICAgSXRlbT0oY29tcG9uZW50XG4gICAgICAgICAgICBNZW51SXRlbSByZWdpc3Rlckl0ZW09dGhpcy5yZWdpc3Rlckl0ZW0gdW5yZWdpc3Rlckl0ZW09dGhpcy51bnJlZ2lzdGVySXRlbVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgfX1cbiAgICA8L2Rpdj5cbiAgPC90ZW1wbGF0ZT5cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxlQUFlLHFCQUFxQjtBQUMzQyxTQUFTLE9BQU8sUUFBUSxvQkFBb0I7QUFDNUMsU0FBUyxrQkFBa0IsUUFBUSxxQkFBcUI7QUFDeEQsU0FBUyxJQUFJLFFBQVEsZ0JBQWdCO0FBQ3JDLFNBQVMsSUFBSSxRQUFRLGlCQUFpQjtBQUN0QyxTQUFTLE9BQU8sUUFBUSxpQkFBaUI7QUFDekMsU0FBUyxRQUFRLFFBQVEsa0JBQWtCO0FBRTNDLFNBQVMsUUFBUSxRQUFRLHFCQUFxQjtBQUM5QyxTQUFTLGNBQWMsUUFBUSxnQkFBZ0I7QUFDL0MsU0FBUyxPQUFPLFFBQVEsZ0NBQWdDO0FBQ3hELFNBQVMsWUFBWSxRQUFRLG9CQUFvQjtBQUVqRCxPQUFPLFlBQVksb0NBQW9DO0FBRXZELE9BQU8sY0FBYyxpQ0FBaUM7QUFDdEQsT0FBTyxhQUFhLHFCQUFxQjtBQUV6QyxjQUFjLFlBQVksRUFBRSxjQUFjLEVBQUUsZUFBZSxRQUFRLFVBQVU7QUFDN0UsWUFBWSxXQUFXLGVBQWU7QUFDdEMsY0FBYyxhQUFhLFFBQVEsa0JBQWtCO0FBQ3JELFlBQVksY0FBYyx1Q0FBdUM7QUFFakUsWUFBWTtJQUNWLE1BQU0scUJBQXFCLFVBQVUsaUJBQWlCOztBQUd4RCxpQkFBaUI7SUFDZixTQUFTO0lBQ1QsTUFBTTtRQUNKLGVBQWUsTUFBTSxhQUFhLElBQUk7UUFDdEMsaUJBQWlCLE1BQU0sYUFBYSxJQUFJOztJQUUxQyxRQUFRO1FBQ04sUUFBUTs7O0FBSVosMEZBQTBGO0FBRTFGLHdCQUF3QjtBQUN4Qix3QkFBd0I7QUFDeEIsNENBQTRDO0FBQzVDLDhDQUE4QztBQUM5QyxLQUFLO0FBRUwsK0NBQStDO0FBQy9DLG9EQUFvRDtBQUNwRCxnREFBZ0Q7QUFDaEQseUJBQXlCO0FBQ3pCLCtCQUErQjtBQUMvQixVQUFVO0FBQ1Ysc0JBQXNCO0FBQ3RCLGtEQUFrRDtBQUNsRCx3QkFBd0I7QUFDeEIsaURBQWlEO0FBQ2pELElBQUk7QUFFSixPQUFPO0FBQ1AsUUFBUTtBQUNSLCtCQUErQjtBQUMvQiwrQkFBK0I7QUFDL0IsV0FBVztBQUNYLGtCQUFrQjtBQUNsQix1QkFBdUI7QUFDdkIsV0FBVztBQUNYLFFBQVE7QUFDUixRQUFRO0FBQ1IsNEJBQTRCO0FBQzVCLGtCQUFrQjtBQUNsQixxQkFBcUI7QUFDckIsb0NBQW9DO0FBQ3BDLFdBQVc7QUFDWCxRQUFRO0FBQ1IsS0FBSztBQUVMLDBEQUEwRCxHQUMxRCxJQUFBLEFBQU0sV0FBTixNQUFNLGlCQUFpQixVQUFVO0lBQy9CLFlBQVksUUFBTyxLQUFLLEVBQUUsT0FBTSxrQkFBa0IsT0FBTyxDQUFFO1FBQ3pELEtBQUssQ0FBQyxRQUFPO1FBRWIsTUFBSyxZQUFZLENBQUMsSUFBSTtRQUV0QixtQkFBbUIsSUFBSSxFQUFFO1lBQ3ZCLE1BQUssY0FBYyxDQUFDLElBQUk7UUFDMUI7SUFDRjtJQUVBLE1BQUE7UUFBQSxTQUFVLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBMEJWLENBQUEsRUFBQTtZQUFBLFdBQUEsSUFBVztZQUFYO2dCQUFBLE9BQUEsS0FBQSxTQUFBLENBQUEsRUFBVztZQUFEO1FBQUE7SUFBQSxDQTFCQTtBQTJCWjtBQUNBLHlEQUF5RCxHQUV6RCxpQkFBaUI7SUFDZixTQUFTO0lBQ1Q7UUFDRSxXQUFXLE9BQU87O0lBRXBCO1FBQ0UsVUFBVTs7O0FBSWQsZUFBZSxNQUFNLGFBQWEsVUFBVTtJQUMxQyxDQUFDO0lBQWdCLFdBQVcsU0FBUztJQUVyQyxDQUFDLFFBQVE7SUFBOEIsaUJBQWlCLE9BQU8sQ0FBQztJQUVoRSxDQUFDO0lBQVEsT0FBTyxhQUFhLElBQUksZUFBZTtJQUVoRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsY0FBYyxJQUFJLENBQUMsZUFBZSxLQUFLO0lBQy9EO0lBRUEsZUFBZSxDQUFDLE9BQU07UUFDcEIsNENBQTRDO1FBQzVDLEtBQUs7WUFDSCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztRQUNsQjtJQUNGLEVBQUU7SUFFRixpQkFBaUIsQ0FBQyxPQUFNO1FBQ3RCLDRDQUE0QztRQUM1QyxLQUFLO1lBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBTztRQUM5QztJQUNGLEVBQUU7SUFFRixNQUFBO1FBQUEsU0FBVSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7O0VBZ0JWLENBQUEsRUFBQTtZQUFBLFdBQUEsSUFBVztZQUFYO2dCQUFBLE9BQUEsS0FBQSxTQUFBLENBQUEsRUFBVztZQUFEO1FBQUE7SUFBQSxDQWhCQTtBQWlCWiJ9"],"names":["MenuItem","Component","constructor","owner1","args1","registerItem","registerDestructor","unregisterItem","setComponentTemplate","precompileTemplate","scope","popover","disabled","Menu","CommandElement","strictMode","g","prototype","service","i","void 0","consume","tracked","TrackedArray","shallHide","fastboot","isFastBoot","withinAppHeader","item1","next","items","push","splice","indexOf","styles","htmlSafe","ariaMenu","hash"],"mappings":";;;;;;;;;;;;;;;;;;AAsCA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA,IAAAA,QAAM,GAAN,MAAMA,QAAA,SAAiBC,SAAA,CAAU;EAC/BC,WAAYC,CAAAA,MAAY,EAAEC,KAA+B,EAAE;IACzD,KAAK,CAACD,MAAA,EAAOC,KAAA,CAAA,CAAA;IAEbA,KAAA,CAAKC,YAAY,CAAC,IAAI,CAAA,CAAA;IAEtBC,kBAAA,CAAmB,IAAI,EAAE,MAAA;MACvBF,KAAA,CAAKG,cAAc,CAAC,IAAI,CAAA,CAAA;AAC1B,KAAA,CAAA,CAAA;AACF,GAAA;AAEA,EAAA;IAAAC,oBAAA,CAAAC,kBAAA,CA0BA,okBAAA,EAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,OAAA;QAAAC,QAAA;QAAAC,IAAA;AAAAC,QAAAA,cAAAA;AAAA,OAAA,CAAA;MAAAC,UAAA,EAAA,IAAA;AAAU,KAAA,CAAA,EAAV,IAAW,CAAA,CAAA;AAAD,GAAA;AACZ,CAAA,CAAA;AACA;;AAYe,MAAMF,IAAA,SAAaZ,SAAA,CAAU;AAAA,EAAA;IAAAe,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,UAAA,EAAA,CACzCC,OAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAAA,EAAA,SAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,UAAA,CAAA,EAAAC,KAAA,CAAA,EAAA;AAAA,EAAA;AAAAJ,IAAAA,CAAA,CAAAC,IAAAA,CAAAA,SAAA,EAEAI,iBAAAA,EAAAA,CAAAA,OAAA,CAAQ,oBAAA,CAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAAA,EAAA,gBAAA,IAAAF,CAAA,CAAA,IAAA,EAAA,iBAAA,CAAA,EAAAC,KAAA,CAAA,EAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,OAAA,EAAA,CAERK,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAA4B,IAAIC,YAAA,EAAA,CAAA;AAAA,KAAA,CAAA,CAAA;AAAA,GAAA;AAAA,EAAA,MAAA,IAAAJ,CAAA,CAAA,IAAA,EAAA,OAAA,CAAA,EAAAC,KAAA,CAAA,EAAA;AAEjC,EAAA,IAAII,YAAY;IACd,OAAO,IAAI,CAACC,QAAQ,EAAEC,UAAA,IAAc,IAAI,CAACC,eAAe,KAAK,IAAA,CAAA;AAC/D,GAAA;AAEAtB,EAAAA,YAAA,GAAgBuB,KAAM,IAAA;AACpB;AACAC,IAAAA,IAAA,CAAK,MAAA;AACH,MAAA,IAAI,CAACC,KAAK,CAACC,IAAI,CAACH,KAAA,CAAA,CAAA;AAClB,KAAA,CAAA,CAAA;AACF,GAAA,CAAA;AAEArB,EAAAA,cAAA,GAAkBqB,KAAM,IAAA;AACtB;AACAC,IAAAA,IAAA,CAAK,MAAA;AACH,MAAA,IAAI,CAACC,KAAK,CAACE,MAAM,CAAC,IAAI,CAACF,KAAK,CAACG,OAAO,CAACL,KAAA,CAAO,EAAA,CAAA,CAAA,CAAA;AAC9C,KAAA,CAAA,CAAA;AACF,GAAA,CAAA;AAEA,EAAA;IAAApB,oBAAA,CAAAC,kBAAA,CAgBA,8SAAA,EAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAwB,MAAA;QAAAC,QAAA;QAAAC,QAAA;QAAAC,IAAA;AAAArC,QAAAA,QAAAA;AAAA,OAAA,CAAA;MAAAe,UAAA,EAAA,IAAA;AAAU,KAAA,CAAA,EAAV,IAAW,CAAA,CAAA;AAAD,GAAA;AACZ;;;;"}
1
+ {"version":3,"file":"menu.js","sources":["../../src/components/menu.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { registerDestructor } from '@ember/destroyable';\nimport { hash } from '@ember/helper';\nimport { next } from '@ember/runloop';\nimport { service } from '@ember/service';\nimport { htmlSafe } from '@ember/template';\n\nimport { ariaMenu } from 'ember-aria-voyager';\nimport { CommandElement } from 'ember-command';\nimport { TrackedArray } from 'tracked-built-ins';\n\nimport styles from '@hokulea/core/controls.module.css';\n\nimport disabled from '../-private/modifiers/disabled.ts';\nimport popover from '../helpers/popover.ts';\n\nimport type { MenuItemArgs, MenuItemBlocks, MenuItemElement } from './-menu.ts';\nimport type Owner from '@ember/owner';\nimport type { WithBoundArgs } from '@glint/template';\nimport type FastBoot from 'ember-cli-fastboot/services/fastboot';\n\nexport type MenuDefaultBlock = {\n Item: WithBoundArgs<typeof MenuItem, 'registerItem' | 'unregisterItem'>;\n};\n\nexport interface MenuItemSignature {\n Element: MenuItemElement;\n Args: MenuItemArgs & {\n registerItem: (item: MenuItem) => void;\n unregisterItem: (item: MenuItem) => void;\n };\n Blocks: MenuItemBlocks & {\n menu?: [MenuDefaultBlock];\n };\n}\n\n// below are attempts at conditional typing based on provided blocks in dynamic invocation\n\n// type MenuItemArgs = {\n// disabled?: boolean;\n// registerItem: (item: MenuItem) => void;\n// unregisterItem: (item: MenuItem) => void;\n// };\n\n// export interface MenuItemSignature<T = {}> {\n// Element: HTMLButtonElement | HTMLAnchorElement;\n// Args: T extends { Blocks: { default: [] } }\n// ? MenuItemArgs & {\n// push: CommandAction;\n// }\n// : MenuItemArgs;\n// Blocks: T extends { Blocks: { default: [] } }\n// ? { default: [] }\n// : { label: []; menu: [MenuDefaultBlock] };\n// }\n\n// & (\n// | {\n// Args: MenuItemArgs & {\n// push: CommandAction;\n// };\n// Blocks: {\n// default: [];\n// };\n// }\n// | {\n// Args: MenuItemArgs;\n// Blocks: {\n// label: [];\n// menu: [MenuDefaultBlock];\n// };\n// }\n// );\n\n/* eslint-disable @typescript-eslint/no-use-before-define */\nclass MenuItem extends Component<MenuItemSignature> {\n constructor(owner: Owner, args: MenuItemSignature['Args']) {\n super(owner, args);\n\n args.registerItem(this);\n\n registerDestructor(this, () => {\n args.unregisterItem(this);\n });\n }\n\n <template>\n {{#if (has-block \"menu\")}}\n {{#let (popover position=\"right-start\") as |p|}}\n <button\n type=\"button\"\n role=\"menuitem\"\n aria-haspopup=\"menu\"\n {{disabled when=(if @disabled @disabled false)}}\n {{p.trigger}}\n >\n {{~yield to=\"label\"~}}\n </button>\n\n <Menu {{p.target}} as |m|>\n {{yield m to=\"menu\"}}\n </Menu>\n {{/let}}\n {{else}}\n <CommandElement\n @command={{@push}}\n {{disabled when=(if @disabled @disabled false)}}\n role=\"menuitem\"\n >\n {{~yield~}}\n </CommandElement>\n {{/if}}\n </template>\n}\n/* eslint-enable @typescript-eslint/no-use-before-define */\n\nexport interface MenuSignature {\n Element: HTMLDivElement;\n Args: {\n disabled?: boolean;\n };\n Blocks: {\n default: [MenuDefaultBlock];\n };\n}\n\nexport default class Menu extends Component<MenuSignature> {\n @service declare fastboot?: FastBoot;\n\n @tracked items: MenuItem[] = new TrackedArray();\n\n get hideInSSR() {\n return this.fastboot?.isFastBoot;\n }\n\n registerItem = (item: MenuItem) => {\n // eslint-disable-next-line ember/no-runloop\n next(() => {\n this.items.push(item);\n });\n };\n\n unregisterItem = (item: MenuItem) => {\n // eslint-disable-next-line ember/no-runloop\n next(() => {\n this.items.splice(this.items.indexOf(item), 1);\n });\n };\n\n <template>\n <div\n class={{styles.menu}}\n data-test-menu\n ...attributes\n {{ariaMenu items=this.items disabled=@disabled}}\n style={{if this.hideInSSR (htmlSafe \"display: none\")}}\n >\n {{yield\n (hash\n Item=(component\n MenuItem registerItem=this.registerItem unregisterItem=this.unregisterItem\n )\n )\n }}\n </div>\n </template>\n}\n"],"names":["MenuItem","Component","constructor","owner","args","registerItem","registerDestructor","unregisterItem","setComponentTemplate","precompileTemplate","strictMode","scope","popover","disabled","Menu","CommandElement","g","prototype","service","i","void 0","tracked","TrackedArray","hideInSSR","fastboot","isFastBoot","item","next","items","push","splice","indexOf","styles","htmlSafe","ariaMenu","hash"],"mappings":";;;;;;;;;;;;;;;;;AAqCA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA,MAAMA,QAAA,SAAiBC,SAAA,CAAU;AAC/BC,EAAAA,WAAAA,CAAYC,KAAY,EAAEC,IAA+B,EAAE;AACzD,IAAA,KAAK,CAACD,KAAA,EAAOC,IAAA,CAAA;AAEbA,IAAAA,IAAA,CAAKC,YAAY,CAAC,IAAI,CAAA;IAEtBC,kBAAA,CAAmB,IAAI,EAAE,MAAA;AACvBF,MAAAA,IAAA,CAAKG,cAAc,CAAC,IAAI,CAAA;AAC1B,IAAA,CAAA,CAAA;AACF,EAAA;AAEA,EAAA;IAAAC,oBAAA,CAAAC,kBAAA,CAAA,okBAAA,EA0BA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,OAAA;QAAAC,QAAA;QAAAC,IAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;AACA;;AAYe,MAAMD,aAAab,SAAA,CAAU;AAAA,EAAA;IAAAe,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,UAAA,EAAA,CACzCC,OAAA,CAAA,CAAA;AAAA;AAAA,EAAA,SAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,UAAA,CAAA,EAAAC,MAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,OAAA,EAAA,CAEAI,OAAA,CAAA,EAAA,YAAA;MAAA,OAA4B,IAAIC,YAAA,EAAA;AAAA,IAAA,CAAA,CAAA;AAAA;AAAA,EAAA,MAAA,IAAAH,CAAA,CAAA,IAAA,EAAA,OAAA,CAAA,EAAAC,MAAA;EAEjC,IAAIG,SAAAA,GAAY;AACd,IAAA,OAAO,IAAI,CAACC,QAAQ,EAAEC,UAAA;AACxB,EAAA;EAEApB,YAAA,GAAgBqB,IAAM,IAAA;AACpB;AACAC,IAAAA,IAAA,CAAK,MAAA;AACH,MAAA,IAAI,CAACC,KAAK,CAACC,IAAI,CAACH,IAAA,CAAA;AAClB,IAAA,CAAA,CAAA;EACF,CAAA;EAEAnB,cAAA,GAAkBmB,IAAM,IAAA;AACtB;AACAC,IAAAA,IAAA,CAAK,MAAA;AACH,MAAA,IAAI,CAACC,KAAK,CAACE,MAAM,CAAC,IAAI,CAACF,KAAK,CAACG,OAAO,CAACL,IAAA,CAAA,EAAO,CAAA,CAAA;AAC9C,IAAA,CAAA,CAAA;EACF,CAAA;AAEA,EAAA;IAAAlB,oBAAA,CAAAC,kBAAA,CAAA,8SAAA,EAgBA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAqB,MAAA;QAAAC,QAAA;QAAAC,QAAA;QAAAC,IAAA;AAAAnC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
@@ -1,19 +1,19 @@
1
1
  import { on } from '@ember/modifier';
2
2
  import styles from '@hokulea/core/controls.module.css';
3
- import { p as pick } from '../helpers-DApiJrHl.js';
3
+ import { p as pick } from '../helpers-DS9du02l.js';
4
4
  import { p as pickAsNumber } from '../-input-DGR-n9U_.js';
5
5
  import { precompileTemplate } from '@ember/template-compilation';
6
6
  import { setComponentTemplate } from '@ember/component';
7
7
  import templateOnly from '@ember/component/template-only';
8
8
 
9
9
  const NumberInput = setComponentTemplate(precompileTemplate("\n <input class={{styles.input}} type=\"number\" value={{@value}} disabled={{@disabled}} data-test-input ...attributes {{on \"input\" (pick \"target.value\" (pickAsNumber @update))}} />\n", {
10
+ strictMode: true,
10
11
  scope: () => ({
11
12
  styles,
12
13
  on,
13
14
  pick,
14
15
  pickAsNumber
15
- }),
16
- strictMode: true
16
+ })
17
17
  }), templateOnly());
18
18
 
19
19
  export { NumberInput as default };
@@ -1 +1 @@
1
- {"version":3,"file":"number-input.js","sources":["../../src/components/number-input.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport { on } from '@ember/modifier';\nimport styles from '@hokulea/core/controls.module.css';\nimport { pick } from '../-private/helpers';\nimport { pickAsNumber } from './-input';\nimport type { InputArgs } from './-input';\nimport type { TOC } from '@ember/component/template-only';\nexport interface NumberInputSignature {\n Element: HTMLInputElement;\n Args: InputArgs<number>;\n}\nconst NumberInput: TOC<NumberInputSignature> = template(`\n <input\n class={{styles.input}}\n type=\"number\"\n value={{@value}}\n disabled={{@disabled}}\n data-test-input\n ...attributes\n {{on \"input\" (pick \"target.value\" (pickAsNumber @update))}}\n />\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nexport default NumberInput;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2hva3VsZWEvaG9rdWxlYS9lbWJlci9wYWNrYWdlL3NyYy9jb21wb25lbnRzL251bWJlci1pbnB1dC5ndHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgb24gfSBmcm9tICdAZW1iZXIvbW9kaWZpZXInO1xuXG5pbXBvcnQgc3R5bGVzIGZyb20gJ0Bob2t1bGVhL2NvcmUvY29udHJvbHMubW9kdWxlLmNzcyc7XG5cbmltcG9ydCB7IHBpY2sgfSBmcm9tICcuLi8tcHJpdmF0ZS9oZWxwZXJzJztcbmltcG9ydCB7IHBpY2tBc051bWJlciB9IGZyb20gJy4vLWlucHV0JztcblxuaW1wb3J0IHR5cGUgeyBJbnB1dEFyZ3MgfSBmcm9tICcuLy1pbnB1dCc7XG5pbXBvcnQgdHlwZSB7IFRPQyB9IGZyb20gJ0BlbWJlci9jb21wb25lbnQvdGVtcGxhdGUtb25seSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTnVtYmVySW5wdXRTaWduYXR1cmUge1xuICBFbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50O1xuICBBcmdzOiBJbnB1dEFyZ3M8bnVtYmVyPjtcbn1cblxuY29uc3QgTnVtYmVySW5wdXQ6IFRPQzxOdW1iZXJJbnB1dFNpZ25hdHVyZT4gPSA8dGVtcGxhdGU-XG4gIDxpbnB1dFxuICAgIGNsYXNzPXt7c3R5bGVzLmlucHV0fX1cbiAgICB0eXBlPVwibnVtYmVyXCJcbiAgICB2YWx1ZT17e0B2YWx1ZX19XG4gICAgZGlzYWJsZWQ9e3tAZGlzYWJsZWR9fVxuICAgIGRhdGEtdGVzdC1pbnB1dFxuICAgIC4uLmF0dHJpYnV0ZXNcbiAgICB7e29uIFwiaW5wdXRcIiAocGljayBcInRhcmdldC52YWx1ZVwiIChwaWNrQXNOdW1iZXIgQHVwZGF0ZSkpfX1cbiAgLz5cbjwvdGVtcGxhdGU-O1xuXG5leHBvcnQgZGVmYXVsdCBOdW1iZXJJbnB1dDtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsU0FBUyxFQUFFLFFBQVEsa0JBQWtCO0FBRXJDLE9BQU8sWUFBWSxvQ0FBb0M7QUFFdkQsU0FBUyxJQUFJLFFBQVEsc0JBQXNCO0FBQzNDLFNBQVMsWUFBWSxRQUFRLFdBQVc7QUFFeEMsY0FBYyxTQUFTLFFBQVEsV0FBVztBQUMxQyxjQUFjLEdBQUcsUUFBUSxpQ0FBaUM7QUFFMUQsaUJBQWlCO0lBQ2YsU0FBUztJQUNULE1BQU0sVUFBVSxNQUFNOztBQUd4QixNQUFNLGFBQWEsSUFBSSx3QkFBd0IsU0FBVSxDQUFBOzs7Ozs7Ozs7O0FBVXpELENBQUEsRUFBQTtJQUFBO1FBQUEsT0FBQSxLQUFBLFNBQUEsQ0FBQSxFQUFXO0lBQUQ7QUFBQTtBQUVWLGVBQWUsWUFBWSJ9"],"names":["NumberInput","setComponentTemplate","precompileTemplate","scope","styles","on","pick","pickAsNumber","strictMode","templateOnly"],"mappings":";;;;;;;;AAeA,MAAMA,WAAiB,GAAAC,oBAAA,CAAwBC,kBAAA,CAU/C,8LAAA,EAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,MAAA;IAAAC,EAAA;IAAAC,IAAA;AAAAC,IAAAA,YAAAA;AAAA,GAAA,CAAA;EAAAC,UAAA,EAAA,IAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
1
+ {"version":3,"file":"number-input.js","sources":["../../src/components/number-input.gts"],"sourcesContent":["import { on } from '@ember/modifier';\n\nimport styles from '@hokulea/core/controls.module.css';\n\nimport { pick } from '../-private/helpers.ts';\nimport { pickAsNumber } from './-input.ts';\n\nimport type { InputArgs } from './-input.ts';\nimport type { TOC } from '@ember/component/template-only';\n\nexport interface NumberInputSignature {\n Element: HTMLInputElement;\n Args: InputArgs<number>;\n}\n\nconst NumberInput: TOC<NumberInputSignature> = <template>\n <input\n class={{styles.input}}\n type=\"number\"\n value={{@value}}\n disabled={{@disabled}}\n data-test-input\n ...attributes\n {{on \"input\" (pick \"target.value\" (pickAsNumber @update))}}\n />\n</template>;\n\nexport default NumberInput;\n"],"names":["NumberInput","setComponentTemplate","precompileTemplate","strictMode","scope","styles","on","pick","pickAsNumber","templateOnly"],"mappings":";;;;;;;;AAeA,MAAMA,WAAiB,GAAAC,oBAAA,CAAwBC,kBAAA,CAAA,8LAAA,EAU/C;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,MAAA;IAAAC,EAAA;IAAAC,IAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
@@ -1,65 +1,63 @@
1
1
  import Component from '@glimmer/component';
2
+ import { tracked } from '@glimmer/tracking';
3
+ import { registerDestructor } from '@ember/destroyable';
2
4
  import { on } from '@ember/modifier';
5
+ import { next } from '@ember/runloop';
6
+ import { service } from '@ember/service';
3
7
  import { element } from 'ember-element-helper';
4
- import { consume, provide } from 'ember-provide-consume-context';
5
8
  import styles from '@hokulea/core/layouts.module.css';
6
9
  import typo from '@hokulea/core/typography.module.css';
7
- import { o as or } from '../helpers-DApiJrHl.js';
10
+ import { o as or } from '../helpers-DS9du02l.js';
8
11
  import { precompileTemplate } from '@ember/template-compilation';
9
12
  import { setComponentTemplate } from '@ember/component';
10
13
  import templateOnly from '@ember/component/template-only';
11
- import { g, i, n } from 'decorator-transforms/runtime';
14
+ import { g, i } from 'decorator-transforms/runtime-esm';
12
15
 
13
16
  const NavLink = setComponentTemplate(precompileTemplate("\n <a href={{@link.url}} {{on \"click\" @link.open}} aria-current={{if @link.isActive \"page\"}}>\n <span>\n {{yield}}\n </span>\n </a>\n", {
17
+ strictMode: true,
14
18
  scope: () => ({
15
19
  on
16
- }),
17
- strictMode: true
20
+ })
18
21
  }), templateOnly());
19
- let PageElement = class PageElement extends Component {
22
+ class Page extends Component {
20
23
  static {
21
- g(this.prototype, "useMain", [consume('page-root')]);
22
- }
23
- #useMain = (i(this, "useMain"), void 0);
24
- get pageInside() {
25
- return true;
26
- }
27
- static {
28
- n(this.prototype, "pageInside", [provide('page-inside')]);
24
+ g(this.prototype, "hokulea", [service('-hokulea')]);
29
25
  }
26
+ #hokulea = (i(this, "hokulea"), void 0);
30
27
  static {
31
- setComponentTemplate(precompileTemplate("\n {{#let (element (if this.useMain \"main\" \"section\")) as |Element|}}\n <Element ...attributes>\n {{yield}}\n </Element>\n {{/let}}\n ", {
32
- scope: () => ({
33
- element
34
- }),
35
- strictMode: true
36
- }), this);
28
+ g(this.prototype, "pageLevel", [tracked], function () {
29
+ return 0;
30
+ });
37
31
  }
38
- };
39
- let Page = class Page extends Component {
40
- static {
41
- g(this.prototype, "insidePage", [consume('page-inside')]);
42
- }
43
- #insidePage = (i(this, "insidePage"), void 0);
32
+ #pageLevel = (i(this, "pageLevel"), void 0);
33
+ /* the level for _THIS_ page */
44
34
  get rootPage() {
45
- return this.insidePage ? false : true;
46
- }
47
- static {
48
- n(this.prototype, "rootPage", [provide('page-root')]);
35
+ return this.pageLevel === 1;
36
+ }
37
+ constructor(owner, args) {
38
+ super(owner, args);
39
+ // eslint-disable-next-line ember/no-runloop
40
+ next(() => {
41
+ this.hokulea.pageLevel += 1;
42
+ this.pageLevel = this.hokulea.pageLevel;
43
+ });
44
+ registerDestructor(this, () => {
45
+ this.hokulea.pageLevel -= 1;
46
+ });
49
47
  }
50
48
  static {
51
- setComponentTemplate(precompileTemplate("\n <PageElement class={{styles.page}} ...attributes data-test-page>\n {{#if (or @title @description (has-block \"title\") (has-block \"description\") (has-block \"nav\"))}}\n <header class={{styles.pageContent}}>\n <h1 class={{typo.display}}>\n {{#if (has-block \"title\")}}\n {{yield to=\"title\"}}\n {{else if @title}}\n {{@title}}\n {{/if}}\n </h1>\n\n {{#if (or (has-block \"description\") @description)}}\n <p>\n {{#if (has-block \"description\")}}\n {{yield to=\"description\"}}\n {{else if @description}}\n {{@description}}\n {{/if}}\n </p>\n {{/if}}\n\n {{#if (has-block \"nav\")}}\n <nav>\n {{yield NavLink to=\"nav\"}}\n </nav>\n {{/if}}\n </header>\n {{/if}}\n\n <div class=\"{{styles.pageContent}} {{styles.flow}}\" part=\"content\">\n {{yield to=\"content\"}}\n {{yield}}\n </div>\n </PageElement>\n ", {
49
+ setComponentTemplate(precompileTemplate("\n {{#let (element (if this.rootPage \"main\" \"section\")) as |Element|}}\n <Element class={{styles.page}} ...attributes data-test-page>\n {{#if (or @title @description (has-block \"title\") (has-block \"description\") (has-block \"nav\"))}}\n <header class={{styles.pageContent}}>\n <h1 class={{typo.display}}>\n {{#if (has-block \"title\")}}\n {{yield to=\"title\"}}\n {{else if @title}}\n {{@title}}\n {{/if}}\n </h1>\n\n {{#if (or (has-block \"description\") @description)}}\n <p>\n {{#if (has-block \"description\")}}\n {{yield to=\"description\"}}\n {{else if @description}}\n {{@description}}\n {{/if}}\n </p>\n {{/if}}\n\n {{#if (has-block \"nav\")}}\n <nav>\n {{yield NavLink to=\"nav\"}}\n </nav>\n {{/if}}\n </header>\n {{/if}}\n\n <div class=\"{{styles.pageContent}} {{styles.flow}}\" part=\"content\">\n {{yield to=\"content\"}}\n {{yield}}\n </div>\n </Element>\n {{/let}}\n ", {
50
+ strictMode: true,
52
51
  scope: () => ({
53
- PageElement,
52
+ element,
54
53
  styles,
55
54
  or,
56
55
  typo,
57
56
  NavLink
58
- }),
59
- strictMode: true
57
+ })
60
58
  }), this);
61
59
  }
62
- };
60
+ }
63
61
 
64
62
  export { Page as default };
65
63
  //# sourceMappingURL=page.js.map