@hokulea/ember 0.6.2 → 0.7.1

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 (253) 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 +14 -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 +10 -9
  194. package/dist/index.js.map +1 -1
  195. package/dist/services/-hokulea.js +15 -0
  196. package/dist/services/-hokulea.js.map +1 -0
  197. package/dist/test-support/index.js +12 -14
  198. package/dist/test-support/index.js.map +1 -1
  199. package/package.json +93 -84
  200. package/addon-main.js +0 -49
  201. package/declarations/-private/form/components/description.d.ts.map +0 -1
  202. package/declarations/-private/form/components/errors.d.ts.map +0 -1
  203. package/declarations/-private/form/components/field.d.ts.map +0 -1
  204. package/declarations/-private/form/components/fields/checkbox.d.ts.map +0 -1
  205. package/declarations/-private/form/components/fields/currency.d.ts.map +0 -1
  206. package/declarations/-private/form/components/fields/date.d.ts.map +0 -1
  207. package/declarations/-private/form/components/fields/email.d.ts.map +0 -1
  208. package/declarations/-private/form/components/fields/list.d.ts.map +0 -1
  209. package/declarations/-private/form/components/fields/multiple-choice.d.ts.map +0 -1
  210. package/declarations/-private/form/components/fields/number.d.ts.map +0 -1
  211. package/declarations/-private/form/components/fields/password.d.ts.map +0 -1
  212. package/declarations/-private/form/components/fields/phone.d.ts.map +0 -1
  213. package/declarations/-private/form/components/fields/range.d.ts.map +0 -1
  214. package/declarations/-private/form/components/fields/select.d.ts.map +0 -1
  215. package/declarations/-private/form/components/fields/singular-choice.d.ts.map +0 -1
  216. package/declarations/-private/form/components/fields/text-area.d.ts.map +0 -1
  217. package/declarations/-private/form/components/fields/text.d.ts.map +0 -1
  218. package/declarations/-private/form/components/label.d.ts.map +0 -1
  219. package/declarations/-private/form/components/reset.d.ts.map +0 -1
  220. package/declarations/-private/form/components/submit.d.ts.map +0 -1
  221. package/declarations/components/app-header.d.ts.map +0 -1
  222. package/declarations/components/box.d.ts.map +0 -1
  223. package/declarations/components/button.d.ts.map +0 -1
  224. package/declarations/components/card.d.ts.map +0 -1
  225. package/declarations/components/checkbox.d.ts.map +0 -1
  226. package/declarations/components/currency-input.d.ts.map +0 -1
  227. package/declarations/components/date-input.d.ts.map +0 -1
  228. package/declarations/components/email-input.d.ts.map +0 -1
  229. package/declarations/components/form.d.ts.map +0 -1
  230. package/declarations/components/icon-button.d.ts.map +0 -1
  231. package/declarations/components/icon.d.ts +0 -13698
  232. package/declarations/components/icon.d.ts.map +0 -1
  233. package/declarations/components/input-builder.d.ts.map +0 -1
  234. package/declarations/components/list.d.ts.map +0 -1
  235. package/declarations/components/menu.d.ts.map +0 -1
  236. package/declarations/components/number-input.d.ts.map +0 -1
  237. package/declarations/components/page.d.ts.map +0 -1
  238. package/declarations/components/password-input.d.ts.map +0 -1
  239. package/declarations/components/phone-input.d.ts.map +0 -1
  240. package/declarations/components/popover.d.ts.map +0 -1
  241. package/declarations/components/radio.d.ts.map +0 -1
  242. package/declarations/components/range-input.d.ts.map +0 -1
  243. package/declarations/components/section.d.ts.map +0 -1
  244. package/declarations/components/select.d.ts.map +0 -1
  245. package/declarations/components/tabs.d.ts.map +0 -1
  246. package/declarations/components/text-area.d.ts.map +0 -1
  247. package/declarations/components/text-input.d.ts.map +0 -1
  248. package/dist/-button-CJL1yb2d.js.map +0 -1
  249. package/dist/helpers-DApiJrHl.js.map +0 -1
  250. package/lib/config.js +0 -10
  251. package/lib/css-modules-plugin.js +0 -43
  252. package/lib/index.js +0 -30
  253. package/lib/webpack-asset-loader-plugin.js +0 -23
@@ -1 +1 @@
1
- {"version":3,"file":"page.js","sources":["../../src/components/page.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport Component from '@glimmer/component';\nimport { on } from '@ember/modifier';\nimport { element } from 'ember-element-helper';\nimport { consume, provide } from 'ember-provide-consume-context';\nimport styles from '@hokulea/core/layouts.module.css';\nimport typo from '@hokulea/core/typography.module.css';\nimport { or } from '../-private/helpers';\nimport type { TOC } from '@ember/component/template-only';\nimport type { Link } from 'ember-link';\ninterface NavLinkSignature {\n Args: {\n link: Link;\n };\n Blocks: {\n default: [];\n };\n}\nconst NavLink: TOC<NavLinkSignature> = template(`\n <a href={{@link.url}} {{on \"click\" @link.open}} aria-current={{if @link.isActive \"page\"}}>\n <span>\n {{yield}}\n </span>\n </a>\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nlet PageElement = class PageElement extends Component<{\n Element: HTMLElement;\n Blocks: {\n default: [];\n };\n}> {\n @consume('page-root')\n useMain: boolean;\n @provide('page-inside')\n get pageInside() {\n return true;\n }\n static{\n template(`\n {{#let (element (if this.useMain \"main\" \"section\")) as |Element|}}\n <Element ...attributes>\n {{yield}}\n </Element>\n {{/let}}\n `, {\n component: this,\n eval () {\n return eval(arguments[0]);\n }\n });\n }\n};\ninterface PageSignature {\n Element: HTMLElement;\n Args: {\n title?: string;\n description?: string;\n };\n Blocks: {\n title?: [];\n description?: [];\n nav?: [typeof NavLink];\n content?: [];\n default?: [];\n };\n}\nlet Page = class Page extends Component<PageSignature> {\n @consume('page-inside')\n insidePage: boolean;\n @provide('page-root')\n get rootPage() {\n return this.insidePage ? false : true;\n }\n static{\n template(`\n <PageElement class={{styles.page}} ...attributes data-test-page>\n {{#if\n (or @title @description (has-block \"title\") (has-block \"description\") (has-block \"nav\"))\n }}\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 `, {\n component: this,\n eval () {\n return eval(arguments[0]);\n }\n });\n }\n};\nexport default Page;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2hva3VsZWEvaG9rdWxlYS9lbWJlci9wYWNrYWdlL3NyYy9jb21wb25lbnRzL3BhZ2UuZ3RzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb21wb25lbnQgZnJvbSAnQGdsaW1tZXIvY29tcG9uZW50JztcbmltcG9ydCB7IG9uIH0gZnJvbSAnQGVtYmVyL21vZGlmaWVyJztcblxuaW1wb3J0IHsgZWxlbWVudCB9IGZyb20gJ2VtYmVyLWVsZW1lbnQtaGVscGVyJztcbmltcG9ydCB7IGNvbnN1bWUsIHByb3ZpZGUgfSBmcm9tICdlbWJlci1wcm92aWRlLWNvbnN1bWUtY29udGV4dCc7XG5cbmltcG9ydCBzdHlsZXMgZnJvbSAnQGhva3VsZWEvY29yZS9sYXlvdXRzLm1vZHVsZS5jc3MnO1xuaW1wb3J0IHR5cG8gZnJvbSAnQGhva3VsZWEvY29yZS90eXBvZ3JhcGh5Lm1vZHVsZS5jc3MnO1xuXG5pbXBvcnQgeyBvciB9IGZyb20gJy4uLy1wcml2YXRlL2hlbHBlcnMnO1xuXG5pbXBvcnQgdHlwZSB7IFRPQyB9IGZyb20gJ0BlbWJlci9jb21wb25lbnQvdGVtcGxhdGUtb25seSc7XG5pbXBvcnQgdHlwZSB7IExpbmsgfSBmcm9tICdlbWJlci1saW5rJztcblxuaW50ZXJmYWNlIE5hdkxpbmtTaWduYXR1cmUge1xuICBBcmdzOiB7XG4gICAgbGluazogTGluaztcbiAgfTtcbiAgQmxvY2tzOiB7XG4gICAgZGVmYXVsdDogW107XG4gIH07XG59XG5cbmNvbnN0IE5hdkxpbms6IFRPQzxOYXZMaW5rU2lnbmF0dXJlPiA9IDx0ZW1wbGF0ZT5cbiAgPGEgaHJlZj17e0BsaW5rLnVybH19IHt7b24gXCJjbGlja1wiIEBsaW5rLm9wZW59fSBhcmlhLWN1cnJlbnQ9e3tpZiBAbGluay5pc0FjdGl2ZSBcInBhZ2VcIn19PlxuICAgIDxzcGFuPlxuICAgICAge3t5aWVsZH19XG4gICAgPC9zcGFuPlxuICA8L2E-XG48L3RlbXBsYXRlPjtcblxuY2xhc3MgUGFnZUVsZW1lbnQgZXh0ZW5kcyBDb21wb25lbnQ8eyBFbGVtZW50OiBIVE1MRWxlbWVudDsgQmxvY2tzOiB7IGRlZmF1bHQ6IFtdIH0gfT4ge1xuICBAY29uc3VtZSgncGFnZS1yb290JykgZGVjbGFyZSB1c2VNYWluOiBib29sZWFuO1xuXG4gIEBwcm92aWRlKCdwYWdlLWluc2lkZScpXG4gIGdldCBwYWdlSW5zaWRlKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgPHRlbXBsYXRlPlxuICAgIHt7I2xldCAoZWxlbWVudCAoaWYgdGhpcy51c2VNYWluIFwibWFpblwiIFwic2VjdGlvblwiKSkgYXMgfEVsZW1lbnR8fX1cbiAgICAgIDxFbGVtZW50IC4uLmF0dHJpYnV0ZXM-XG4gICAgICAgIHt7eWllbGR9fVxuICAgICAgPC9FbGVtZW50PlxuICAgIHt7L2xldH19XG4gIDwvdGVtcGxhdGU-XG59XG5cbmludGVyZmFjZSBQYWdlU2lnbmF0dXJlIHtcbiAgRWxlbWVudDogSFRNTEVsZW1lbnQ7XG4gIEFyZ3M6IHtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgfTtcbiAgQmxvY2tzOiB7XG4gICAgdGl0bGU_OiBbXTtcbiAgICBkZXNjcmlwdGlvbj86IFtdO1xuICAgIG5hdj86IFt0eXBlb2YgTmF2TGlua107XG4gICAgY29udGVudD86IFtdO1xuICAgIGRlZmF1bHQ_OiBbXTtcbiAgfTtcbn1cblxuY2xhc3MgUGFnZSBleHRlbmRzIENvbXBvbmVudDxQYWdlU2lnbmF0dXJlPiB7XG4gIEBjb25zdW1lKCdwYWdlLWluc2lkZScpIGRlY2xhcmUgaW5zaWRlUGFnZTogYm9vbGVhbjtcblxuICBAcHJvdmlkZSgncGFnZS1yb290JylcbiAgZ2V0IHJvb3RQYWdlKCkge1xuICAgIHJldHVybiB0aGlzLmluc2lkZVBhZ2UgPyBmYWxzZSA6IHRydWU7XG4gIH1cblxuICA8dGVtcGxhdGU-XG4gICAgPFBhZ2VFbGVtZW50IGNsYXNzPXt7c3R5bGVzLnBhZ2V9fSAuLi5hdHRyaWJ1dGVzIGRhdGEtdGVzdC1wYWdlPlxuICAgICAge3sjaWZcbiAgICAgICAgKG9yIEB0aXRsZSBAZGVzY3JpcHRpb24gKGhhcy1ibG9jayBcInRpdGxlXCIpIChoYXMtYmxvY2sgXCJkZXNjcmlwdGlvblwiKSAoaGFzLWJsb2NrIFwibmF2XCIpKVxuICAgICAgfX1cbiAgICAgICAgPGhlYWRlciBjbGFzcz17e3N0eWxlcy5wYWdlQ29udGVudH19PlxuICAgICAgICAgIDxoMSBjbGFzcz17e3R5cG8uZGlzcGxheX19PlxuICAgICAgICAgICAge3sjaWYgKGhhcy1ibG9jayBcInRpdGxlXCIpfX1cbiAgICAgICAgICAgICAge3t5aWVsZCB0bz1cInRpdGxlXCJ9fVxuICAgICAgICAgICAge3tlbHNlIGlmIEB0aXRsZX19XG4gICAgICAgICAgICAgIHt7QHRpdGxlfX1cbiAgICAgICAgICAgIHt7L2lmfX1cbiAgICAgICAgICA8L2gxPlxuXG4gICAgICAgICAge3sjaWYgKG9yIChoYXMtYmxvY2sgXCJkZXNjcmlwdGlvblwiKSBAZGVzY3JpcHRpb24pfX1cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICB7eyNpZiAoaGFzLWJsb2NrIFwiZGVzY3JpcHRpb25cIil9fVxuICAgICAgICAgICAgICAgIHt7eWllbGQgdG89XCJkZXNjcmlwdGlvblwifX1cbiAgICAgICAgICAgICAge3tlbHNlIGlmIEBkZXNjcmlwdGlvbn19XG4gICAgICAgICAgICAgICAge3tAZGVzY3JpcHRpb259fVxuICAgICAgICAgICAgICB7ey9pZn19XG4gICAgICAgICAgICA8L3A-XG4gICAgICAgICAge3svaWZ9fVxuXG4gICAgICAgICAge3sjaWYgKGhhcy1ibG9jayBcIm5hdlwiKX19XG4gICAgICAgICAgICA8bmF2PlxuICAgICAgICAgICAgICB7e3lpZWxkIE5hdkxpbmsgdG89XCJuYXZcIn19XG4gICAgICAgICAgICA8L25hdj5cbiAgICAgICAgICB7ey9pZn19XG4gICAgICAgIDwvaGVhZGVyPlxuICAgICAge3svaWZ9fVxuXG4gICAgICA8ZGl2IGNsYXNzPVwie3tzdHlsZXMucGFnZUNvbnRlbnR9fSB7e3N0eWxlcy5mbG93fX1cIiBwYXJ0PVwiY29udGVudFwiPlxuICAgICAgICB7e3lpZWxkIHRvPVwiY29udGVudFwifX1cbiAgICAgICAge3t5aWVsZH19XG4gICAgICA8L2Rpdj5cbiAgICA8L1BhZ2VFbGVtZW50PlxuICA8L3RlbXBsYXRlPlxufVxuXG5leHBvcnQgZGVmYXVsdCBQYWdlO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLGVBQWUscUJBQXFCO0FBQzNDLFNBQVMsRUFBRSxRQUFRLGtCQUFrQjtBQUVyQyxTQUFTLE9BQU8sUUFBUSx1QkFBdUI7QUFDL0MsU0FBUyxPQUFPLEVBQUUsT0FBTyxRQUFRLGdDQUFnQztBQUVqRSxPQUFPLFlBQVksbUNBQW1DO0FBQ3RELE9BQU8sVUFBVSxzQ0FBc0M7QUFFdkQsU0FBUyxFQUFFLFFBQVEsc0JBQXNCO0FBRXpDLGNBQWMsR0FBRyxRQUFRLGlDQUFpQztBQUMxRCxjQUFjLElBQUksUUFBUSxhQUFhO1VBRTdCO0lBQ1I7UUFDRSxNQUFNOztJQUVSO1FBQ0U7OztBQUlKLE1BQU0sU0FBUyxJQUFJLG9CQUFvQixTQUFVLENBQUE7Ozs7OztBQU1qRCxDQUFBLEVBQUE7SUFBQTtRQUFBLE9BQUEsS0FBQSxTQUFBLENBQUEsRUFBVztJQUFEO0FBQUE7QUFFVixJQUFBLEFBQU0sY0FBTixNQUFNLG9CQUFvQjtJQUFZLFNBQVM7SUFBYTtRQUFVOzs7SUFDcEUsQ0FBQyxRQUFRO0lBQXFCLFNBQVMsT0FBTyxDQUFDO0lBRS9DLENBQUMsUUFBUTtJQUFjLElBQ25CLGFBQWE7UUFDZixPQUFPO0lBQ1Q7SUFFQSxNQUFBO1FBQUEsU0FBVSxDQUFBOzs7Ozs7RUFNVixDQUFBLEVBQUE7WUFBQSxXQUFBLElBQVc7WUFBWDtnQkFBQSxPQUFBLEtBQUEsU0FBQSxDQUFBLEVBQVc7WUFBRDtRQUFBO0lBQUEsQ0FOQTtBQU9aO1VBRVU7SUFDUixTQUFTO0lBQ1Q7UUFDRSxRQUFRLE1BQU07UUFDZCxjQUFjLE1BQU07O0lBRXRCO1FBQ0U7UUFDQTtRQUNBLGNBQWM7UUFDZDtRQUNBOzs7QUFJSixJQUFBLEFBQU0sT0FBTixNQUFNLGFBQWEsVUFBVTtJQUMzQixDQUFDLFFBQVE7SUFBdUIsWUFBWSxPQUFPLENBQUM7SUFFcEQsQ0FBQyxRQUFRO0lBQVksSUFDakIsV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRO0lBQ25DO0lBRUEsTUFBQTtRQUFBLFNBQVUsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXFDVixDQUFBLEVBQUE7WUFBQSxXQUFBLElBQVc7WUFBWDtnQkFBQSxPQUFBLEtBQUEsU0FBQSxDQUFBLEVBQVc7WUFBRDtRQUFBO0lBQUEsQ0FyQ0E7QUFzQ1o7QUFFQSxlQUFlLEtBQUsifQ"],"names":["NavLink","setComponentTemplate","precompileTemplate","scope","on","strictMode","templateOnly","PageElement","Component","consume","i","void 0","pageInside","n","prototype","provide","element","Page","g","rootPage","insidePage","styles","or","typo"],"mappings":";;;;;;;;;;;;AAuBA,MAAMA,OAAa,GAAAC,oBAAA,CAAoBC,kBAAA,CAMvC,wJAAA,EAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;AAAAC,IAAAA,EAAAA;AAAA,GAAA,CAAA;EAAAC,UAAA,EAAA,IAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA,CAAA,CAAA;AAEV,IAAAC,WAAM,GAAN,MAAMA,WAAA,SAAoBC,SAAA;;AACvBC,IAAAA,CAAAA,CAAAA,IAAAA,CAAAA,SAAAA,EAAAA,SAAAA,EAAAA,CAAAA,OAAA,CAAQ,WAAA,CAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAAA,EAAA,QAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,SAAA,CAAA,EAAAC,KAAA,CAAA,EAAA;AAET,EAAA,IACIC,aAAa;IACf,OAAO,IAAA,CAAA;AACT,GAAA;AAAA,EAAA;AAAAC,IAAAA,CAAA,CAAAC,IAAAA,CAAAA,SAAA,EAHCC,YAAAA,EAAAA,CAAAA,OAAA,CAAQ,aAAA,CAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAKT,EAAA;IAAAd,oBAAA,CAAAC,kBAAA,CAMA,oKAAA,EAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;AAAAa,QAAAA,OAAAA;AAAA,OAAA,CAAA;MAAAX,UAAA,EAAA,IAAA;AAAU,KAAA,CAAA,EAAV,IAAW,CAAA,CAAA;AAAD,GAAA;AACZ,CAAA,CAAA;AAiBA,IAAAY,IAAM,GAAN,MAAMA,IAAA,SAAaT,SAAA,CAAU;AAAA,EAAA;AAAAU,IAAAA,CAAA,CAAAJ,IAAAA,CAAAA,SAAA,EAC1BL,YAAAA,EAAAA,CAAAA,OAAA,CAAQ,aAAA,CAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAAA,EAAA,WAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,YAAA,CAAA,EAAAC,KAAA,CAAA,EAAA;AAET,EAAA,IACIQ,WAAW;AACb,IAAA,OAAO,IAAI,CAACC,UAAU,GAAG,KAAQ,GAAA,IAAA,CAAA;AACnC,GAAA;AAAA,EAAA;AAAAP,IAAAA,CAAA,CAAAC,IAAAA,CAAAA,SAAA,EAHCC,UAAAA,EAAAA,CAAAA,OAAA,CAAQ,WAAA,CAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAKT,EAAA;IAAAd,oBAAA,CAAAC,kBAAA,CAqCA,qlCAAA,EAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAI,WAAA;QAAAc,MAAA;QAAAC,EAAA;QAAAC,IAAA;AAAAvB,QAAAA,OAAAA;AAAA,OAAA,CAAA;MAAAK,UAAA,EAAA,IAAA;AAAU,KAAA,CAAA,EAAV,IAAW,CAAA,CAAA;AAAD,GAAA;AACZ;;;;"}
1
+ {"version":3,"file":"page.js","sources":["../../src/components/page.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { registerDestructor } from '@ember/destroyable';\nimport { on } from '@ember/modifier';\nimport { next } from '@ember/runloop';\nimport { service } from '@ember/service';\n\nimport { element } from 'ember-element-helper';\n\n// eslint-disable-next-line import-x/no-duplicates\nimport styles from '@hokulea/core/layouts.module.css';\n// eslint-disable-next-line import-x/no-duplicates\nimport typo from '@hokulea/core/typography.module.css';\n\nimport { or } from '../-private/helpers.ts';\n\nimport type { TOC } from '@ember/component/template-only';\nimport type Owner from '@ember/owner';\nimport type HokuleaService from '#src/services/-hokulea.ts';\nimport type { Link } from 'ember-link';\n\ninterface NavLinkSignature {\n Args: {\n link: Link;\n };\n Blocks: {\n default: [];\n };\n}\n\nconst NavLink: TOC<NavLinkSignature> = <template>\n <a href={{@link.url}} {{on \"click\" @link.open}} aria-current={{if @link.isActive \"page\"}}>\n <span>\n {{yield}}\n </span>\n </a>\n</template>;\n\ninterface PageSignature {\n Element: HTMLElement;\n Args: {\n title?: string;\n description?: string;\n };\n Blocks: {\n title?: [];\n description?: [];\n nav?: [typeof NavLink];\n content?: [];\n default?: [];\n };\n}\n\nclass Page extends Component<PageSignature> {\n @service('-hokulea') declare hokulea: HokuleaService;\n\n /* the level for _THIS_ page */\n @tracked pageLevel = 0;\n\n get rootPage() {\n return this.pageLevel === 1;\n }\n\n constructor(owner: Owner, args: PageSignature['Args']) {\n super(owner, args);\n\n // eslint-disable-next-line ember/no-runloop\n next(() => {\n this.hokulea.pageLevel += 1;\n this.pageLevel = this.hokulea.pageLevel;\n });\n\n registerDestructor(this, () => {\n this.hokulea.pageLevel -= 1;\n });\n }\n\n <template>\n {{#let (element (if this.rootPage \"main\" \"section\")) as |Element|}}\n <Element class={{styles.page}} ...attributes data-test-page>\n {{#if\n (or @title @description (has-block \"title\") (has-block \"description\") (has-block \"nav\"))\n }}\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 </template>\n}\n\nexport default Page;\n"],"names":["NavLink","setComponentTemplate","precompileTemplate","strictMode","scope","on","templateOnly","Page","Component","g","prototype","service","i","void 0","tracked","rootPage","pageLevel","constructor","owner","args","next","hokulea","registerDestructor","element","styles","or","typo"],"mappings":";;;;;;;;;;;;;;;AA8BA,MAAMA,OAAa,GAAAC,oBAAA,CAAoBC,kBAAA,CAAA,wJAAA,EAMvC;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA,CAAA;AAiBV,MAAMC,aAAaC,SAAA,CAAU;AAAA,EAAA;AAAAC,IAAAA,CAAA,MAAAC,SAAA,EAAA,SAAA,EAAA,CAC1BC,OAAA,CAAQ,UAAA,CAAA,CAAA,CAAA;AAAA;AAAA,EAAA,QAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,SAAA,CAAA,EAAAC,MAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,WAAA,EAAA,CAGRI,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAAoB,CAAA;AAAA,IAAA,CAAA,CAAA;AAAA;AAAA,EAAA,UAAA,IAAAF,CAAA,CAAA,IAAA,EAAA,WAAA,CAAA,EAAAC,MAAA;AADrB;EAGA,IAAIE,QAAAA,GAAW;AACb,IAAA,OAAO,IAAI,CAACC,SAAS,KAAK,CAAA;AAC5B,EAAA;AAEAC,EAAAA,WAAAA,CAAYC,KAAY,EAAEC,IAA2B,EAAE;AACrD,IAAA,KAAK,CAACD,KAAA,EAAOC,IAAA,CAAA;AAEb;AACAC,IAAAA,IAAA,CAAK,MAAA;AACH,MAAA,IAAI,CAACC,OAAO,CAACL,SAAS,IAAI,CAAA;AAC1B,MAAA,IAAI,CAACA,SAAS,GAAG,IAAI,CAACK,OAAO,CAACL,SAAS;AACzC,IAAA,CAAA,CAAA;IAEAM,kBAAA,CAAmB,IAAI,EAAE,MAAA;AACvB,MAAA,IAAI,CAACD,OAAO,CAACL,SAAS,IAAI,CAAA;AAC5B,IAAA,CAAA,CAAA;AACF,EAAA;AAEA,EAAA;IAAAf,oBAAA,CAAAC,kBAAA,CAAA,suCAAA,EAuCA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAmB,OAAA;QAAAC,MAAA;QAAAC,EAAA;QAAAC,IAAA;AAAA1B,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
@@ -1,17 +1,17 @@
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 { precompileTemplate } from '@ember/template-compilation';
5
5
  import { setComponentTemplate } from '@ember/component';
6
6
  import templateOnly from '@ember/component/template-only';
7
7
 
8
8
  const PasswordInput = setComponentTemplate(precompileTemplate("\n <input class={{styles.input}} type=\"password\" value={{@value}} disabled={{@disabled}} data-test-input ...attributes {{on \"input\" (pick \"target.value\" @update)}} />\n", {
9
+ strictMode: true,
9
10
  scope: () => ({
10
11
  styles,
11
12
  on,
12
13
  pick
13
- }),
14
- strictMode: true
14
+ })
15
15
  }), templateOnly());
16
16
 
17
17
  export { PasswordInput as default };
@@ -1 +1 @@
1
- {"version":3,"file":"password-input.js","sources":["../../src/components/password-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 type { InputArgs } from './-input';\nimport type { TOC } from '@ember/component/template-only';\nexport interface PasswordInputSignature {\n Element: HTMLInputElement;\n Args: InputArgs<string>;\n}\nconst PasswordInput: TOC<PasswordInputSignature> = template(`\n <input\n class={{styles.input}}\n type=\"password\"\n value={{@value}}\n disabled={{@disabled}}\n data-test-input\n ...attributes\n {{on \"input\" (pick \"target.value\" @update)}}\n />\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nexport default PasswordInput;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2hva3VsZWEvaG9rdWxlYS9lbWJlci9wYWNrYWdlL3NyYy9jb21wb25lbnRzL3Bhc3N3b3JkLWlucHV0Lmd0cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBvbiB9IGZyb20gJ0BlbWJlci9tb2RpZmllcic7XG5cbmltcG9ydCBzdHlsZXMgZnJvbSAnQGhva3VsZWEvY29yZS9jb250cm9scy5tb2R1bGUuY3NzJztcblxuaW1wb3J0IHsgcGljayB9IGZyb20gJy4uLy1wcml2YXRlL2hlbHBlcnMnO1xuXG5pbXBvcnQgdHlwZSB7IElucHV0QXJncyB9IGZyb20gJy4vLWlucHV0JztcbmltcG9ydCB0eXBlIHsgVE9DIH0gZnJvbSAnQGVtYmVyL2NvbXBvbmVudC90ZW1wbGF0ZS1vbmx5JztcblxuZXhwb3J0IGludGVyZmFjZSBQYXNzd29yZElucHV0U2lnbmF0dXJlIHtcbiAgRWxlbWVudDogSFRNTElucHV0RWxlbWVudDtcbiAgQXJnczogSW5wdXRBcmdzPHN0cmluZz47XG59XG5cbmNvbnN0IFBhc3N3b3JkSW5wdXQ6IFRPQzxQYXNzd29yZElucHV0U2lnbmF0dXJlPiA9IDx0ZW1wbGF0ZT5cbiAgPGlucHV0XG4gICAgY2xhc3M9e3tzdHlsZXMuaW5wdXR9fVxuICAgIHR5cGU9XCJwYXNzd29yZFwiXG4gICAgdmFsdWU9e3tAdmFsdWV9fVxuICAgIGRpc2FibGVkPXt7QGRpc2FibGVkfX1cbiAgICBkYXRhLXRlc3QtaW5wdXRcbiAgICAuLi5hdHRyaWJ1dGVzXG4gICAge3tvbiBcImlucHV0XCIgKHBpY2sgXCJ0YXJnZXQudmFsdWVcIiBAdXBkYXRlKX19XG4gIC8-XG48L3RlbXBsYXRlPjtcblxuZXhwb3J0IGRlZmF1bHQgUGFzc3dvcmRJbnB1dDtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsU0FBUyxFQUFFLFFBQVEsa0JBQWtCO0FBRXJDLE9BQU8sWUFBWSxvQ0FBb0M7QUFFdkQsU0FBUyxJQUFJLFFBQVEsc0JBQXNCO0FBRTNDLGNBQWMsU0FBUyxRQUFRLFdBQVc7QUFDMUMsY0FBYyxHQUFHLFFBQVEsaUNBQWlDO0FBRTFELGlCQUFpQjtJQUNmLFNBQVM7SUFDVCxNQUFNLFVBQVUsTUFBTTs7QUFHeEIsTUFBTSxlQUFlLElBQUksMEJBQTBCLFNBQVUsQ0FBQTs7Ozs7Ozs7OztBQVU3RCxDQUFBLEVBQUE7SUFBQTtRQUFBLE9BQUEsS0FBQSxTQUFBLENBQUEsRUFBVztJQUFEO0FBQUE7QUFFVixlQUFlLGNBQWMifQ"],"names":["PasswordInput","setComponentTemplate","precompileTemplate","scope","styles","on","pick","strictMode","templateOnly"],"mappings":";;;;;;;AAcA,MAAMA,aAAmB,GAAAC,oBAAA,CAA0BC,kBAAA,CAUnD,iLAAA,EAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,MAAA;IAAAC,EAAA;AAAAC,IAAAA,IAAAA;AAAA,GAAA,CAAA;EAAAC,UAAA,EAAA,IAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
1
+ {"version":3,"file":"password-input.js","sources":["../../src/components/password-input.gts"],"sourcesContent":["import { on } from '@ember/modifier';\n\nimport styles from '@hokulea/core/controls.module.css';\n\nimport { pick } from '../-private/helpers.ts';\n\nimport type { InputArgs } from './-input.ts';\nimport type { TOC } from '@ember/component/template-only';\n\nexport interface PasswordInputSignature {\n Element: HTMLInputElement;\n Args: InputArgs<string>;\n}\n\nconst PasswordInput: TOC<PasswordInputSignature> = <template>\n <input\n class={{styles.input}}\n type=\"password\"\n value={{@value}}\n disabled={{@disabled}}\n data-test-input\n ...attributes\n {{on \"input\" (pick \"target.value\" @update)}}\n />\n</template>;\n\nexport default PasswordInput;\n"],"names":["PasswordInput","setComponentTemplate","precompileTemplate","strictMode","scope","styles","on","pick","templateOnly"],"mappings":";;;;;;;AAcA,MAAMA,aAAmB,GAAAC,oBAAA,CAA0BC,kBAAA,CAAA,iLAAA,EAUnD;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,MAAA;IAAAC,EAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
@@ -1,17 +1,17 @@
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 { precompileTemplate } from '@ember/template-compilation';
5
5
  import { setComponentTemplate } from '@ember/component';
6
6
  import templateOnly from '@ember/component/template-only';
7
7
 
8
8
  const PhoneInput = setComponentTemplate(precompileTemplate("\n <input class={{styles.input}} type=\"tel\" value={{@value}} disabled={{@disabled}} data-test-input ...attributes {{on \"input\" (pick \"target.value\" @update)}} />\n", {
9
+ strictMode: true,
9
10
  scope: () => ({
10
11
  styles,
11
12
  on,
12
13
  pick
13
- }),
14
- strictMode: true
14
+ })
15
15
  }), templateOnly());
16
16
 
17
17
  export { PhoneInput as default };
@@ -1 +1 @@
1
- {"version":3,"file":"phone-input.js","sources":["../../src/components/phone-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 type { InputArgs } from './-input';\nimport type { TOC } from '@ember/component/template-only';\nexport interface PhoneInputSignature {\n Element: HTMLInputElement;\n Args: InputArgs<string>;\n}\nconst PhoneInput: TOC<PhoneInputSignature> = template(`\n <input\n class={{styles.input}}\n type=\"tel\"\n value={{@value}}\n disabled={{@disabled}}\n data-test-input\n ...attributes\n {{on \"input\" (pick \"target.value\" @update)}}\n />\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nexport default PhoneInput;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2hva3VsZWEvaG9rdWxlYS9lbWJlci9wYWNrYWdlL3NyYy9jb21wb25lbnRzL3Bob25lLWlucHV0Lmd0cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBvbiB9IGZyb20gJ0BlbWJlci9tb2RpZmllcic7XG5cbmltcG9ydCBzdHlsZXMgZnJvbSAnQGhva3VsZWEvY29yZS9jb250cm9scy5tb2R1bGUuY3NzJztcblxuaW1wb3J0IHsgcGljayB9IGZyb20gJy4uLy1wcml2YXRlL2hlbHBlcnMnO1xuXG5pbXBvcnQgdHlwZSB7IElucHV0QXJncyB9IGZyb20gJy4vLWlucHV0JztcbmltcG9ydCB0eXBlIHsgVE9DIH0gZnJvbSAnQGVtYmVyL2NvbXBvbmVudC90ZW1wbGF0ZS1vbmx5JztcblxuZXhwb3J0IGludGVyZmFjZSBQaG9uZUlucHV0U2lnbmF0dXJlIHtcbiAgRWxlbWVudDogSFRNTElucHV0RWxlbWVudDtcbiAgQXJnczogSW5wdXRBcmdzPHN0cmluZz47XG59XG5cbmNvbnN0IFBob25lSW5wdXQ6IFRPQzxQaG9uZUlucHV0U2lnbmF0dXJlPiA9IDx0ZW1wbGF0ZT5cbiAgPGlucHV0XG4gICAgY2xhc3M9e3tzdHlsZXMuaW5wdXR9fVxuICAgIHR5cGU9XCJ0ZWxcIlxuICAgIHZhbHVlPXt7QHZhbHVlfX1cbiAgICBkaXNhYmxlZD17e0BkaXNhYmxlZH19XG4gICAgZGF0YS10ZXN0LWlucHV0XG4gICAgLi4uYXR0cmlidXRlc1xuICAgIHt7b24gXCJpbnB1dFwiIChwaWNrIFwidGFyZ2V0LnZhbHVlXCIgQHVwZGF0ZSl9fVxuICAvPlxuPC90ZW1wbGF0ZT47XG5cbmV4cG9ydCBkZWZhdWx0IFBob25lSW5wdXQ7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFNBQVMsRUFBRSxRQUFRLGtCQUFrQjtBQUVyQyxPQUFPLFlBQVksb0NBQW9DO0FBRXZELFNBQVMsSUFBSSxRQUFRLHNCQUFzQjtBQUUzQyxjQUFjLFNBQVMsUUFBUSxXQUFXO0FBQzFDLGNBQWMsR0FBRyxRQUFRLGlDQUFpQztBQUUxRCxpQkFBaUI7SUFDZixTQUFTO0lBQ1QsTUFBTSxVQUFVLE1BQU07O0FBR3hCLE1BQU0sWUFBWSxJQUFJLHVCQUF1QixTQUFVLENBQUE7Ozs7Ozs7Ozs7QUFVdkQsQ0FBQSxFQUFBO0lBQUE7UUFBQSxPQUFBLEtBQUEsU0FBQSxDQUFBLEVBQVc7SUFBRDtBQUFBO0FBRVYsZUFBZSxXQUFXIn0"],"names":["PhoneInput","setComponentTemplate","precompileTemplate","scope","styles","on","pick","strictMode","templateOnly"],"mappings":";;;;;;;AAcA,MAAMA,UAAgB,GAAAC,oBAAA,CAAuBC,kBAAA,CAU7C,4KAAA,EAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,MAAA;IAAAC,EAAA;AAAAC,IAAAA,IAAAA;AAAA,GAAA,CAAA;EAAAC,UAAA,EAAA,IAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
1
+ {"version":3,"file":"phone-input.js","sources":["../../src/components/phone-input.gts"],"sourcesContent":["import { on } from '@ember/modifier';\n\nimport styles from '@hokulea/core/controls.module.css';\n\nimport { pick } from '../-private/helpers.ts';\n\nimport type { InputArgs } from './-input.ts';\nimport type { TOC } from '@ember/component/template-only';\n\nexport interface PhoneInputSignature {\n Element: HTMLInputElement;\n Args: InputArgs<string>;\n}\n\nconst PhoneInput: TOC<PhoneInputSignature> = <template>\n <input\n class={{styles.input}}\n type=\"tel\"\n value={{@value}}\n disabled={{@disabled}}\n data-test-input\n ...attributes\n {{on \"input\" (pick \"target.value\" @update)}}\n />\n</template>;\n\nexport default PhoneInput;\n"],"names":["PhoneInput","setComponentTemplate","precompileTemplate","strictMode","scope","styles","on","pick","templateOnly"],"mappings":";;;;;;;AAcA,MAAMA,UAAgB,GAAAC,oBAAA,CAAuBC,kBAAA,CAAA,4KAAA,EAU7C;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,MAAA;IAAAC,EAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
@@ -4,10 +4,10 @@ import { setComponentTemplate } from '@ember/component';
4
4
  import templateOnly from '@ember/component/template-only';
5
5
 
6
6
  const Popover = setComponentTemplate(precompileTemplate("\n <div class={{styles.popover}} data-test-popover ...attributes>\n {{yield}}\n </div>\n", {
7
+ strictMode: true,
7
8
  scope: () => ({
8
9
  styles
9
- }),
10
- strictMode: true
10
+ })
11
11
  }), templateOnly());
12
12
 
13
13
  export { Popover as default };
@@ -1 +1 @@
1
- {"version":3,"file":"popover.js","sources":["../../src/components/popover.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport styles from '@hokulea/core/windows.module.css';\nimport type { TOC } from '@ember/component/template-only';\nexport interface PopoverSignature {\n Element: HTMLDivElement;\n Blocks: {\n default: [];\n };\n}\nconst Popover: TOC<PopoverSignature> = template(`\n <div class={{styles.popover}} data-test-popover ...attributes>\n {{yield}}\n </div>\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nexport default Popover;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2hva3VsZWEvaG9rdWxlYS9lbWJlci9wYWNrYWdlL3NyYy9jb21wb25lbnRzL3BvcG92ZXIuZ3RzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzdHlsZXMgZnJvbSAnQGhva3VsZWEvY29yZS93aW5kb3dzLm1vZHVsZS5jc3MnO1xuXG5pbXBvcnQgdHlwZSB7IFRPQyB9IGZyb20gJ0BlbWJlci9jb21wb25lbnQvdGVtcGxhdGUtb25seSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUG9wb3ZlclNpZ25hdHVyZSB7XG4gIEVsZW1lbnQ6IEhUTUxEaXZFbGVtZW50O1xuICBCbG9ja3M6IHtcbiAgICBkZWZhdWx0OiBbXTtcbiAgfTtcbn1cblxuY29uc3QgUG9wb3ZlcjogVE9DPFBvcG92ZXJTaWduYXR1cmU-ID0gPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPXt7c3R5bGVzLnBvcG92ZXJ9fSBkYXRhLXRlc3QtcG9wb3ZlciAuLi5hdHRyaWJ1dGVzPlxuICAgIHt7eWllbGR9fVxuICA8L2Rpdj5cbjwvdGVtcGxhdGU-O1xuXG5leHBvcnQgZGVmYXVsdCBQb3BvdmVyO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLFlBQVksbUNBQW1DO0FBRXRELGNBQWMsR0FBRyxRQUFRLGlDQUFpQztBQUUxRCxpQkFBaUI7SUFDZixTQUFTO0lBQ1Q7UUFDRTs7O0FBSUosTUFBTSxTQUFTLElBQUksb0JBQW9CLFNBQVUsQ0FBQTs7OztBQUlqRCxDQUFBLEVBQUE7SUFBQTtRQUFBLE9BQUEsS0FBQSxTQUFBLENBQUEsRUFBVztJQUFEO0FBQUE7QUFFVixlQUFlLFFBQVEifQ"],"names":["Popover","setComponentTemplate","precompileTemplate","scope","styles","strictMode","templateOnly"],"mappings":";;;;;AAWA,MAAMA,OAAa,GAAAC,oBAAA,CAAoBC,kBAAA,CAIvC,+FAAA,EAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;AAAAC,IAAAA,MAAAA;AAAA,GAAA,CAAA;EAAAC,UAAA,EAAA,IAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
1
+ {"version":3,"file":"popover.js","sources":["../../src/components/popover.gts"],"sourcesContent":["import styles from '@hokulea/core/windows.module.css';\n\nimport type { TOC } from '@ember/component/template-only';\n\nexport interface PopoverSignature {\n Element: HTMLDivElement;\n Blocks: {\n default: [];\n };\n}\n\nconst Popover: TOC<PopoverSignature> = <template>\n <div class={{styles.popover}} data-test-popover ...attributes>\n {{yield}}\n </div>\n</template>;\n\nexport default Popover;\n"],"names":["Popover","setComponentTemplate","precompileTemplate","strictMode","scope","styles","templateOnly"],"mappings":";;;;;AAWA,MAAMA,OAAa,GAAAC,oBAAA,CAAoBC,kBAAA,CAAA,+FAAA,EAIvC;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
@@ -1,17 +1,17 @@
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 { precompileTemplate } from '@ember/template-compilation';
5
5
  import { setComponentTemplate } from '@ember/component';
6
6
  import templateOnly from '@ember/component/template-only';
7
7
 
8
8
  const Radio = setComponentTemplate(precompileTemplate("\n <input class={{styles.choice}} type=\"radio\" checked={{@value}} disabled={{@disabled}} data-test-choice ...attributes {{on \"input\" (pick \"target.checked\" @update)}} />\n", {
9
+ strictMode: true,
9
10
  scope: () => ({
10
11
  styles,
11
12
  on,
12
13
  pick
13
- }),
14
- strictMode: true
14
+ })
15
15
  }), templateOnly());
16
16
 
17
17
  export { Radio as default };
@@ -1 +1 @@
1
- {"version":3,"file":"radio.js","sources":["../../src/components/radio.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 type { InputArgs } from './-input';\nimport type { TOC } from '@ember/component/template-only';\nexport interface RadioSignature {\n Element: HTMLInputElement;\n Args: InputArgs<boolean>;\n}\nconst Radio: TOC<RadioSignature> = template(`\n <input\n class={{styles.choice}}\n type=\"radio\"\n checked={{@value}}\n disabled={{@disabled}}\n data-test-choice\n ...attributes\n {{on \"input\" (pick \"target.checked\" @update)}}\n />\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nexport default Radio;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2hva3VsZWEvaG9rdWxlYS9lbWJlci9wYWNrYWdlL3NyYy9jb21wb25lbnRzL3JhZGlvLmd0cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBvbiB9IGZyb20gJ0BlbWJlci9tb2RpZmllcic7XG5cbmltcG9ydCBzdHlsZXMgZnJvbSAnQGhva3VsZWEvY29yZS9jb250cm9scy5tb2R1bGUuY3NzJztcblxuaW1wb3J0IHsgcGljayB9IGZyb20gJy4uLy1wcml2YXRlL2hlbHBlcnMnO1xuXG5pbXBvcnQgdHlwZSB7IElucHV0QXJncyB9IGZyb20gJy4vLWlucHV0JztcbmltcG9ydCB0eXBlIHsgVE9DIH0gZnJvbSAnQGVtYmVyL2NvbXBvbmVudC90ZW1wbGF0ZS1vbmx5JztcblxuZXhwb3J0IGludGVyZmFjZSBSYWRpb1NpZ25hdHVyZSB7XG4gIEVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQ7XG4gIEFyZ3M6IElucHV0QXJnczxib29sZWFuPjtcbn1cblxuY29uc3QgUmFkaW86IFRPQzxSYWRpb1NpZ25hdHVyZT4gPSA8dGVtcGxhdGU-XG4gIDxpbnB1dFxuICAgIGNsYXNzPXt7c3R5bGVzLmNob2ljZX19XG4gICAgdHlwZT1cInJhZGlvXCJcbiAgICBjaGVja2VkPXt7QHZhbHVlfX1cbiAgICBkaXNhYmxlZD17e0BkaXNhYmxlZH19XG4gICAgZGF0YS10ZXN0LWNob2ljZVxuICAgIC4uLmF0dHJpYnV0ZXNcbiAgICB7e29uIFwiaW5wdXRcIiAocGljayBcInRhcmdldC5jaGVja2VkXCIgQHVwZGF0ZSl9fVxuICAvPlxuPC90ZW1wbGF0ZT47XG5cbmV4cG9ydCBkZWZhdWx0IFJhZGlvO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxTQUFTLEVBQUUsUUFBUSxrQkFBa0I7QUFFckMsT0FBTyxZQUFZLG9DQUFvQztBQUV2RCxTQUFTLElBQUksUUFBUSxzQkFBc0I7QUFFM0MsY0FBYyxTQUFTLFFBQVEsV0FBVztBQUMxQyxjQUFjLEdBQUcsUUFBUSxpQ0FBaUM7QUFFMUQsaUJBQWlCO0lBQ2YsU0FBUztJQUNULE1BQU0sVUFBVSxPQUFPOztBQUd6QixNQUFNLE9BQU8sSUFBSSxrQkFBa0IsU0FBVSxDQUFBOzs7Ozs7Ozs7O0FBVTdDLENBQUEsRUFBQTtJQUFBO1FBQUEsT0FBQSxLQUFBLFNBQUEsQ0FBQSxFQUFXO0lBQUQ7QUFBQTtBQUVWLGVBQWUsTUFBTSJ9"],"names":["Radio","setComponentTemplate","precompileTemplate","scope","styles","on","pick","strictMode","templateOnly"],"mappings":";;;;;;;AAcA,MAAMA,KAAW,GAAAC,oBAAA,CAAkBC,kBAAA,CAUnC,oLAAA,EAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,MAAA;IAAAC,EAAA;AAAAC,IAAAA,IAAAA;AAAA,GAAA,CAAA;EAAAC,UAAA,EAAA,IAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
1
+ {"version":3,"file":"radio.js","sources":["../../src/components/radio.gts"],"sourcesContent":["import { on } from '@ember/modifier';\n\nimport styles from '@hokulea/core/controls.module.css';\n\nimport { pick } from '../-private/helpers.ts';\n\nimport type { InputArgs } from './-input.ts';\nimport type { TOC } from '@ember/component/template-only';\n\nexport interface RadioSignature {\n Element: HTMLInputElement;\n Args: InputArgs<boolean>;\n}\n\nconst Radio: TOC<RadioSignature> = <template>\n <input\n class={{styles.choice}}\n type=\"radio\"\n checked={{@value}}\n disabled={{@disabled}}\n data-test-choice\n ...attributes\n {{on \"input\" (pick \"target.checked\" @update)}}\n />\n</template>;\n\nexport default Radio;\n"],"names":["Radio","setComponentTemplate","precompileTemplate","strictMode","scope","styles","on","pick","templateOnly"],"mappings":";;;;;;;AAcA,MAAMA,KAAW,GAAAC,oBAAA,CAAkBC,kBAAA,CAAA,oLAAA,EAUnC;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,MAAA;IAAAC,EAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
@@ -1,36 +1,36 @@
1
1
  import { on } from '@ember/modifier';
2
2
  import { modifier } from 'ember-modifier';
3
3
  import styles from '@hokulea/core/controls.module.css';
4
- import { p as pick } from '../helpers-DApiJrHl.js';
4
+ import { p as pick } from '../helpers-DS9du02l.js';
5
5
  import { p as pickAsNumber } from '../-input-DGR-n9U_.js';
6
6
  import { precompileTemplate } from '@ember/template-compilation';
7
7
  import { setComponentTemplate } from '@ember/component';
8
8
  import templateOnly from '@ember/component/template-only';
9
9
 
10
- function applyProgressStyle(range1, value1) {
11
- const min1 = Number.parseFloat(range1.min) || 0;
12
- const max1 = Number.parseFloat(range1.max) || 100;
13
- const currentVal1 = value1 ?? Number.parseFloat(range1.value);
14
- const progress1 = (currentVal1 - min1) / (max1 - min1) * 100;
15
- range1.style.setProperty('--_hokulea-slider-progress', `${progress1}%`);
10
+ function applyProgressStyle(range, value) {
11
+ const min = Number.parseFloat(range.min) || 0;
12
+ const max = Number.parseFloat(range.max) || 100;
13
+ const currentVal = value ?? Number.parseFloat(range.value);
14
+ const progress = (currentVal - min) / (max - min) * 100;
15
+ range.style.setProperty('--_hokulea-slider-progress', `${progress}%`);
16
16
  }
17
- const progressStyle = modifier((element1, [value1]) => {
18
- applyProgressStyle(element1, value1);
19
- const listenForProgressChange1 = () => {
20
- applyProgressStyle(element1);
17
+ const progressStyle = modifier((element, [value]) => {
18
+ applyProgressStyle(element, value);
19
+ const listenForProgressChange = () => {
20
+ applyProgressStyle(element);
21
21
  };
22
- element1.addEventListener('input', listenForProgressChange1);
23
- return () => element1.removeEventListener('input', listenForProgressChange1);
22
+ element.addEventListener('input', listenForProgressChange);
23
+ return () => element.removeEventListener('input', listenForProgressChange);
24
24
  });
25
25
  const RangeInput = setComponentTemplate(precompileTemplate("\n <input class={{styles.range}} type=\"range\" value={{@value}} disabled={{@disabled}} data-test-input data-orientation={{@orientation}} ...attributes {{progressStyle @value}} {{on \"input\" (pick \"target.value\" (pickAsNumber @update))}} />\n", {
26
+ strictMode: true,
26
27
  scope: () => ({
27
28
  styles,
28
29
  progressStyle,
29
30
  on,
30
31
  pick,
31
32
  pickAsNumber
32
- }),
33
- strictMode: true
33
+ })
34
34
  }), templateOnly());
35
35
 
36
36
  export { RangeInput as default };
@@ -1 +1 @@
1
- {"version":3,"file":"range-input.js","sources":["../../src/components/range-input.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport { on } from '@ember/modifier';\nimport { modifier } 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';\nfunction applyProgressStyle(range1: HTMLInputElement, value1?: number) {\n const min1 = Number.parseFloat(range1.min) || 0;\n const max1 = Number.parseFloat(range1.max) || 100;\n const currentVal1 = value1 ?? Number.parseFloat(range1.value);\n const progress1 = ((currentVal1 - min1) / (max1 - min1)) * 100;\n range1.style.setProperty('--_hokulea-slider-progress', `${progress1}%`);\n}\nconst progressStyle = modifier((element1: HTMLInputElement, [value1]: [number?])=>{\n applyProgressStyle(element1, value1);\n const listenForProgressChange1 = ()=>{\n applyProgressStyle(element1);\n };\n element1.addEventListener('input', listenForProgressChange1);\n return ()=>element1.removeEventListener('input', listenForProgressChange1);\n});\nexport interface RangeInputSignature {\n Element: HTMLInputElement;\n Args: InputArgs<number> & {\n min?: number;\n max?: number;\n step?: number | 'any';\n orientation?: 'horizontal' | 'vertical';\n };\n}\nconst RangeInput: TOC<RangeInputSignature> = template(`\n <input\n class={{styles.range}}\n type=\"range\"\n value={{@value}}\n disabled={{@disabled}}\n data-test-input\n data-orientation={{@orientation}}\n ...attributes\n {{progressStyle @value}}\n {{on \"input\" (pick \"target.value\" (pickAsNumber @update))}}\n />\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nexport default RangeInput;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2hva3VsZWEvaG9rdWxlYS9lbWJlci9wYWNrYWdlL3NyYy9jb21wb25lbnRzL3JhbmdlLWlucHV0Lmd0cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBvbiB9IGZyb20gJ0BlbWJlci9tb2RpZmllcic7XG5cbmltcG9ydCB7IG1vZGlmaWVyIH0gZnJvbSAnZW1iZXItbW9kaWZpZXInO1xuXG5pbXBvcnQgc3R5bGVzIGZyb20gJ0Bob2t1bGVhL2NvcmUvY29udHJvbHMubW9kdWxlLmNzcyc7XG5cbmltcG9ydCB7IHBpY2sgfSBmcm9tICcuLi8tcHJpdmF0ZS9oZWxwZXJzJztcbmltcG9ydCB7IHBpY2tBc051bWJlciB9IGZyb20gJy4vLWlucHV0JztcblxuaW1wb3J0IHR5cGUgeyBJbnB1dEFyZ3MgfSBmcm9tICcuLy1pbnB1dCc7XG5pbXBvcnQgdHlwZSB7IFRPQyB9IGZyb20gJ0BlbWJlci9jb21wb25lbnQvdGVtcGxhdGUtb25seSc7XG5cbmZ1bmN0aW9uIGFwcGx5UHJvZ3Jlc3NTdHlsZShyYW5nZTogSFRNTElucHV0RWxlbWVudCwgdmFsdWU_OiBudW1iZXIpIHtcbiAgY29uc3QgbWluID0gTnVtYmVyLnBhcnNlRmxvYXQocmFuZ2UubWluKSB8fCAwO1xuICBjb25zdCBtYXggPSBOdW1iZXIucGFyc2VGbG9hdChyYW5nZS5tYXgpIHx8IDEwMDtcbiAgY29uc3QgY3VycmVudFZhbCA9IHZhbHVlID8_IE51bWJlci5wYXJzZUZsb2F0KHJhbmdlLnZhbHVlKTtcbiAgY29uc3QgcHJvZ3Jlc3MgPSAoKGN1cnJlbnRWYWwgLSBtaW4pIC8gKG1heCAtIG1pbikpICogMTAwO1xuXG4gIHJhbmdlLnN0eWxlLnNldFByb3BlcnR5KCctLV9ob2t1bGVhLXNsaWRlci1wcm9ncmVzcycsIGAke3Byb2dyZXNzfSVgKTtcbn1cblxuY29uc3QgcHJvZ3Jlc3NTdHlsZSA9IG1vZGlmaWVyKChlbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50LCBbdmFsdWVdOiBbbnVtYmVyP10pID0-IHtcbiAgYXBwbHlQcm9ncmVzc1N0eWxlKGVsZW1lbnQsIHZhbHVlKTtcblxuICBjb25zdCBsaXN0ZW5Gb3JQcm9ncmVzc0NoYW5nZSA9ICgpID0-IHtcbiAgICBhcHBseVByb2dyZXNzU3R5bGUoZWxlbWVudCk7XG4gIH07XG5cbiAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGxpc3RlbkZvclByb2dyZXNzQ2hhbmdlKTtcblxuICByZXR1cm4gKCkgPT4gZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdpbnB1dCcsIGxpc3RlbkZvclByb2dyZXNzQ2hhbmdlKTtcbn0pO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJhbmdlSW5wdXRTaWduYXR1cmUge1xuICBFbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50O1xuICBBcmdzOiBJbnB1dEFyZ3M8bnVtYmVyPiAmIHtcbiAgICBtaW4_OiBudW1iZXI7XG4gICAgbWF4PzogbnVtYmVyO1xuICAgIHN0ZXA_OiBudW1iZXIgfCAnYW55JztcbiAgICBvcmllbnRhdGlvbj86ICdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCc7XG4gIH07XG59XG5cbmNvbnN0IFJhbmdlSW5wdXQ6IFRPQzxSYW5nZUlucHV0U2lnbmF0dXJlPiA9IDx0ZW1wbGF0ZT5cbiAgPGlucHV0XG4gICAgY2xhc3M9e3tzdHlsZXMucmFuZ2V9fVxuICAgIHR5cGU9XCJyYW5nZVwiXG4gICAgdmFsdWU9e3tAdmFsdWV9fVxuICAgIGRpc2FibGVkPXt7QGRpc2FibGVkfX1cbiAgICBkYXRhLXRlc3QtaW5wdXRcbiAgICBkYXRhLW9yaWVudGF0aW9uPXt7QG9yaWVudGF0aW9ufX1cbiAgICAuLi5hdHRyaWJ1dGVzXG4gICAge3twcm9ncmVzc1N0eWxlIEB2YWx1ZX19XG4gICAge3tvbiBcImlucHV0XCIgKHBpY2sgXCJ0YXJnZXQudmFsdWVcIiAocGlja0FzTnVtYmVyIEB1cGRhdGUpKX19XG4gIC8-XG48L3RlbXBsYXRlPjtcblxuZXhwb3J0IGRlZmF1bHQgUmFuZ2VJbnB1dDtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsU0FBUyxFQUFFLFFBQVEsa0JBQWtCO0FBRXJDLFNBQVMsUUFBUSxRQUFRLGlCQUFpQjtBQUUxQyxPQUFPLFlBQVksb0NBQW9DO0FBRXZELFNBQVMsSUFBSSxRQUFRLHNCQUFzQjtBQUMzQyxTQUFTLFlBQVksUUFBUSxXQUFXO0FBRXhDLGNBQWMsU0FBUyxRQUFRLFdBQVc7QUFDMUMsY0FBYyxHQUFHLFFBQVEsaUNBQWlDO0FBRTFELFNBQVMsbUJBQW1CLFFBQU8sZ0JBQWdCLEVBQUUsU0FBUSxNQUFNO0lBQ2pFLE1BQU0sT0FBTSxPQUFPLFVBQVUsQ0FBQyxPQUFNLEdBQUcsS0FBSztJQUM1QyxNQUFNLE9BQU0sT0FBTyxVQUFVLENBQUMsT0FBTSxHQUFHLEtBQUs7SUFDNUMsTUFBTSxjQUFhLFVBQVMsT0FBTyxVQUFVLENBQUMsT0FBTSxLQUFLO0lBQ3pELE1BQU0sWUFBVyxDQUFDLENBQUMsY0FBYSxJQUFHLElBQUksQ0FBQyxPQUFNLElBQUcsQ0FBQyxJQUFJO0lBRXRELE9BQU0sS0FBSyxDQUFDLFdBQVcsQ0FBQyw4QkFBOEIsQ0FBQyxFQUFFLFVBQVMsQ0FBQyxDQUFDO0FBQ3RFO0FBRUEsTUFBTSxnQkFBZ0IsU0FBUyxDQUFDLFVBQVMsa0JBQWtCLENBQUMsVUFBUyxNQUFNLEVBQUU7SUFDM0UsbUJBQW1CLFVBQVM7SUFFNUIsTUFBTSwyQkFBMEI7UUFDOUIsbUJBQW1CO0lBQ3JCO0lBRUEsU0FBUSxnQkFBZ0IsQ0FBQyxTQUFTO0lBRWxDLE9BQU8sSUFBTSxTQUFRLG1CQUFtQixDQUFDLFNBQVM7QUFDcEQ7QUFFQSxpQkFBaUI7SUFDZixTQUFTO0lBQ1QsTUFBTSxVQUFVLE1BQU07UUFDcEIsTUFBTSxNQUFNO1FBQ1osTUFBTSxNQUFNO1FBQ1osT0FBTyxNQUFNLEdBQUc7UUFDaEIsY0FBYyxlQUFlOzs7QUFJakMsTUFBTSxZQUFZLElBQUksdUJBQXVCLFNBQVUsQ0FBQTs7Ozs7Ozs7Ozs7O0FBWXZELENBQUEsRUFBQTtJQUFBO1FBQUEsT0FBQSxLQUFBLFNBQUEsQ0FBQSxFQUFXO0lBQUQ7QUFBQTtBQUVWLGVBQWUsV0FBVyJ9"],"names":["applyProgressStyle","range1","value1","min1","Number","parseFloat","min","max1","max","currentVal1","value","progress1","style","setProperty","progressStyle","modifier","element1","listenForProgressChange1","addEventListener","removeEventListener","RangeInput","setComponentTemplate","precompileTemplate","scope","styles","on","pick","pickAsNumber","strictMode","templateOnly"],"mappings":";;;;;;;;;AAYA,SAASA,kBAAAA,CAAmBC,MAAuB,EAAEC,MAAc,EAAA;EACjE,MAAMC,IAAA,GAAMC,MAAA,CAAOC,UAAU,CAACJ,MAAA,CAAMK,GAAG,CAAK,IAAA,CAAA,CAAA;EAC5C,MAAMC,IAAA,GAAMH,MAAA,CAAOC,UAAU,CAACJ,MAAA,CAAMO,GAAG,CAAK,IAAA,GAAA,CAAA;EAC5C,MAAMC,WAAA,GAAaP,MAAA,IAASE,MAAA,CAAOC,UAAU,CAACJ,MAAA,CAAMS,KAAK,CAAA,CAAA;EACzD,MAAMC,SAAA,GAAY,CAACF,WAAA,GAAaN,IAAG,KAAKI,IAAA,GAAMJ,IAAG,CAAC,GAAI,GAAA,CAAA;EAEtDF,MAAA,CAAMW,KAAK,CAACC,WAAW,CAAC,4BAA8B,EAAA,CAAA,EAAGF,SAAA,CAAW,CAAA,CAAA,CAAA,CAAA;AACtE,CAAA;AAEA,MAAMG,aAAA,GAAgBC,QAAA,CAAS,CAACC,QAAS,EAAkB,CAACd,MAAA,CAAiB,KAAA;EAC3EF,kBAAA,CAAmBgB,QAAA,EAASd,MAAA,CAAA,CAAA;EAE5B,MAAMe,wBAAA,GAA0BA,MAAA;AAC9BjB,IAAAA,kBAAA,CAAmBgB,QAAA,CAAA,CAAA;AACrB,GAAA,CAAA;AAEAA,EAAAA,QAAA,CAAQE,gBAAgB,CAAC,OAAA,EAASD,wBAAA,CAAA,CAAA;AAElC,EAAA,OAAO,MAAMD,QAAA,CAAQG,mBAAmB,CAAC,SAASF,wBAAA,CAAA,CAAA;AACpD,CAAA,CAAA,CAAA;AAYA,MAAMG,UAAgB,GAAAC,oBAAA,CAAuBC,kBAAA,CAY7C,wPAAA,EAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,MAAA;IAAAV,aAAA;IAAAW,EAAA;IAAAC,IAAA;AAAAC,IAAAA,YAAAA;AAAA,GAAA,CAAA;EAAAC,UAAA,EAAA,IAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
1
+ {"version":3,"file":"range-input.js","sources":["../../src/components/range-input.gts"],"sourcesContent":["import { on } from '@ember/modifier';\n\nimport { modifier } 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\nfunction applyProgressStyle(range: HTMLInputElement, value?: number) {\n const min = Number.parseFloat(range.min) || 0;\n const max = Number.parseFloat(range.max) || 100;\n const currentVal = value ?? Number.parseFloat(range.value);\n const progress = ((currentVal - min) / (max - min)) * 100;\n\n range.style.setProperty('--_hokulea-slider-progress', `${progress}%`);\n}\n\nconst progressStyle = modifier((element: HTMLInputElement, [value]: [number?]) => {\n applyProgressStyle(element, value);\n\n const listenForProgressChange = () => {\n applyProgressStyle(element);\n };\n\n element.addEventListener('input', listenForProgressChange);\n\n return () => element.removeEventListener('input', listenForProgressChange);\n});\n\nexport interface RangeInputSignature {\n Element: HTMLInputElement;\n Args: InputArgs<number> & {\n min?: number;\n max?: number;\n step?: number | 'any';\n orientation?: 'horizontal' | 'vertical';\n };\n}\n\nconst RangeInput: TOC<RangeInputSignature> = <template>\n <input\n class={{styles.range}}\n type=\"range\"\n value={{@value}}\n disabled={{@disabled}}\n data-test-input\n data-orientation={{@orientation}}\n ...attributes\n {{progressStyle @value}}\n {{on \"input\" (pick \"target.value\" (pickAsNumber @update))}}\n />\n</template>;\n\nexport default RangeInput;\n"],"names":["applyProgressStyle","range","value","min","Number","parseFloat","max","currentVal","progress","style","setProperty","progressStyle","modifier","element","listenForProgressChange","addEventListener","removeEventListener","RangeInput","setComponentTemplate","precompileTemplate","strictMode","scope","styles","on","pick","pickAsNumber","templateOnly"],"mappings":";;;;;;;;;AAYA,SAASA,kBAAAA,CAAmBC,KAAuB,EAAEC,KAAc,EAAA;EACjE,MAAMC,MAAMC,MAAA,CAAOC,UAAU,CAACJ,KAAA,CAAME,GAAG,CAAA,IAAK,CAAA;EAC5C,MAAMG,MAAMF,MAAA,CAAOC,UAAU,CAACJ,KAAA,CAAMK,GAAG,CAAA,IAAK,GAAA;EAC5C,MAAMC,aAAaL,KAAA,IAASE,MAAA,CAAOC,UAAU,CAACJ,MAAMC,KAAK,CAAA;AACzD,EAAA,MAAMM,QAAA,GAAY,CAACD,UAAA,GAAaJ,GAAG,KAAKG,GAAA,GAAMH,GAAG,CAAC,GAAI,GAAA;EAEtDF,KAAA,CAAMQ,KAAK,CAACC,WAAW,CAAC,8BAA8B,CAAA,EAAGF,QAAA,CAAA,CAAA,CAAW,CAAA;AACtE;AAEA,MAAMG,aAAA,GAAgBC,SAAS,CAACC,SAA2B,CAACX,KAAA,CAAiB,KAAA;AAC3EF,EAAAA,kBAAA,CAAmBa,OAAA,EAASX,KAAA,CAAA;EAE5B,MAAMY,uBAAA,GAA0BA,MAAA;IAC9Bd,kBAAA,CAAmBa,OAAA,CAAA;EACrB,CAAA;AAEAA,EAAAA,OAAA,CAAQE,gBAAgB,CAAC,OAAA,EAASD,uBAAA,CAAA;EAElC,OAAO,MAAMD,OAAA,CAAQG,mBAAmB,CAAC,OAAA,EAASF,uBAAA,CAAA;AACpD,CAAA,CAAA;AAYA,MAAMG,UAAgB,GAAAC,oBAAA,CAAuBC,kBAAA,CAAA,wPAAA,EAY7C;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,MAAA;IAAAX,aAAA;IAAAY,EAAA;IAAAC,IAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
@@ -1,24 +1,24 @@
1
1
  import { assert } from '@ember/debug';
2
2
  import { element } from 'ember-element-helper';
3
- import styles from '@hokulea/core/content.module.css';
4
- import styles$1 from '@hokulea/core/layouts.module.css';
3
+ import styles$1 from '@hokulea/core/content.module.css';
4
+ import styles from '@hokulea/core/layouts.module.css';
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
- function elementForLevel(level1) {
10
- const lvl1 = level1 ? Number.parseInt(level1) : 2;
11
- assert(`@level for <Section> must be between 1 and 6, received '${lvl1}'`, lvl1 >= 1 && lvl1 <= 6);
12
- return `h${lvl1}`;
9
+ function elementForLevel(level) {
10
+ const lvl = level ? Number.parseInt(level) : 2;
11
+ assert(`@level for <Section> must be between 1 and 6, received '${lvl}'`, lvl >= 1 && lvl <= 6);
12
+ return `h${lvl}`;
13
13
  }
14
14
  const Section = setComponentTemplate(precompileTemplate("\n <section class=\"{{styles.section}} {{layouts.flow}}\" data-test-section ...attributes>\n {{#if @title}}\n <header data-test-section=\"header\" part=\"header\">\n {{#if @title}}\n {{#let (element (elementForLevel @level)) as |Headline|}}\n <Headline data-test-section=\"title\" class={{styles.sectionTitle}}>{{@title}}</Headline>\n {{/let}}\n {{/if}}\n </header>\n {{/if}}\n\n {{#if (has-block)}}\n {{yield}}\n {{/if}}\n </section>\n", {
15
+ strictMode: true,
15
16
  scope: () => ({
16
- styles,
17
- layouts: styles$1,
17
+ styles: styles$1,
18
+ layouts: styles,
18
19
  element,
19
20
  elementForLevel
20
- }),
21
- strictMode: true
21
+ })
22
22
  }), templateOnly());
23
23
 
24
24
  export { Section as default };
@@ -1 +1 @@
1
- {"version":3,"file":"section.js","sources":["../../src/components/section.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport { assert } from '@ember/debug';\nimport { element } from 'ember-element-helper';\nimport styles from '@hokulea/core/content.module.css';\nimport layouts from '@hokulea/core/layouts.module.css';\nimport type { TOC } from '@ember/component/template-only';\nexport interface SectionSignature {\n Element: HTMLElement;\n Args: {\n title?: string;\n /**\n * The level of the component, 1-6 as in `<h1>` to `<h6>`\n *\n * @defaultValue 2\n */ level?: string;\n };\n Blocks: {\n default: [];\n };\n}\nfunction elementForLevel(level1?: string) {\n const lvl1 = level1 ? Number.parseInt(level1) : 2;\n assert(`@level for <Section> must be between 1 and 6, received '${lvl1}'`, lvl1 >= 1 && lvl1 <= 6);\n return `h${lvl1}`;\n}\nconst Section: TOC<SectionSignature> = template(`\n <section class=\"{{styles.section}} {{layouts.flow}}\" data-test-section ...attributes>\n {{#if @title}}\n <header data-test-section=\"header\" part=\"header\">\n {{#if @title}}\n {{#let (element (elementForLevel @level)) as |Headline|}}\n <Headline data-test-section=\"title\" class={{styles.sectionTitle}}>{{@title}}</Headline>\n {{/let}}\n {{/if}}\n </header>\n {{/if}}\n\n {{#if (has-block)}}\n {{yield}}\n {{/if}}\n </section>\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nexport default Section;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2hva3VsZWEvaG9rdWxlYS9lbWJlci9wYWNrYWdlL3NyYy9jb21wb25lbnRzL3NlY3Rpb24uZ3RzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFzc2VydCB9IGZyb20gJ0BlbWJlci9kZWJ1Zyc7XG5cbmltcG9ydCB7IGVsZW1lbnQgfSBmcm9tICdlbWJlci1lbGVtZW50LWhlbHBlcic7XG5cbmltcG9ydCBzdHlsZXMgZnJvbSAnQGhva3VsZWEvY29yZS9jb250ZW50Lm1vZHVsZS5jc3MnO1xuaW1wb3J0IGxheW91dHMgZnJvbSAnQGhva3VsZWEvY29yZS9sYXlvdXRzLm1vZHVsZS5jc3MnO1xuXG5pbXBvcnQgdHlwZSB7IFRPQyB9IGZyb20gJ0BlbWJlci9jb21wb25lbnQvdGVtcGxhdGUtb25seSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VjdGlvblNpZ25hdHVyZSB7XG4gIEVsZW1lbnQ6IEhUTUxFbGVtZW50O1xuICBBcmdzOiB7XG4gICAgdGl0bGU_OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogVGhlIGxldmVsIG9mIHRoZSBjb21wb25lbnQsIDEtNiBhcyBpbiBgPGgxPmAgdG8gYDxoNj5gXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdFZhbHVlIDJcbiAgICAgKi9cbiAgICBsZXZlbD86IHN0cmluZztcbiAgfTtcbiAgQmxvY2tzOiB7XG4gICAgZGVmYXVsdDogW107XG4gIH07XG59XG5cbmZ1bmN0aW9uIGVsZW1lbnRGb3JMZXZlbChsZXZlbD86IHN0cmluZykge1xuICBjb25zdCBsdmwgPSBsZXZlbCA_IE51bWJlci5wYXJzZUludChsZXZlbCkgOiAyO1xuXG4gIGFzc2VydChgQGxldmVsIGZvciA8U2VjdGlvbj4gbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDYsIHJlY2VpdmVkICcke2x2bH0nYCwgbHZsID49IDEgJiYgbHZsIDw9IDYpO1xuXG4gIHJldHVybiBgaCR7bHZsfWA7XG59XG5cbmNvbnN0IFNlY3Rpb246IFRPQzxTZWN0aW9uU2lnbmF0dXJlPiA9IDx0ZW1wbGF0ZT5cbiAgPHNlY3Rpb24gY2xhc3M9XCJ7e3N0eWxlcy5zZWN0aW9ufX0ge3tsYXlvdXRzLmZsb3d9fVwiIGRhdGEtdGVzdC1zZWN0aW9uIC4uLmF0dHJpYnV0ZXM-XG4gICAge3sjaWYgQHRpdGxlfX1cbiAgICAgIDxoZWFkZXIgZGF0YS10ZXN0LXNlY3Rpb249XCJoZWFkZXJcIiBwYXJ0PVwiaGVhZGVyXCI-XG4gICAgICAgIHt7I2lmIEB0aXRsZX19XG4gICAgICAgICAge3sjbGV0IChlbGVtZW50IChlbGVtZW50Rm9yTGV2ZWwgQGxldmVsKSkgYXMgfEhlYWRsaW5lfH19XG4gICAgICAgICAgICA8SGVhZGxpbmUgZGF0YS10ZXN0LXNlY3Rpb249XCJ0aXRsZVwiIGNsYXNzPXt7c3R5bGVzLnNlY3Rpb25UaXRsZX19Pnt7QHRpdGxlfX08L0hlYWRsaW5lPlxuICAgICAgICAgIHt7L2xldH19XG4gICAgICAgIHt7L2lmfX1cbiAgICAgIDwvaGVhZGVyPlxuICAgIHt7L2lmfX1cblxuICAgIHt7I2lmIChoYXMtYmxvY2spfX1cbiAgICAgIHt7eWllbGR9fVxuICAgIHt7L2lmfX1cbiAgPC9zZWN0aW9uPlxuPC90ZW1wbGF0ZT47XG5cbmV4cG9ydCBkZWZhdWx0IFNlY3Rpb247XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFNBQVMsTUFBTSxRQUFRLGVBQWU7QUFFdEMsU0FBUyxPQUFPLFFBQVEsdUJBQXVCO0FBRS9DLE9BQU8sWUFBWSxtQ0FBbUM7QUFDdEQsT0FBTyxhQUFhLG1DQUFtQztBQUV2RCxjQUFjLEdBQUcsUUFBUSxpQ0FBaUM7QUFFMUQsaUJBQWlCO0lBQ2YsU0FBUztJQUNUO1FBQ0UsUUFBUSxNQUFNO1FBQ2Q7Ozs7S0FJQyxHQUNELFFBQVEsTUFBTTs7SUFFaEI7UUFDRTs7O0FBSUosU0FBUyxnQkFBZ0IsU0FBUSxNQUFNO0lBQ3JDLE1BQU0sT0FBTSxTQUFRLE9BQU8sUUFBUSxDQUFDLFVBQVM7SUFFN0MsT0FBTyxDQUFDLHdEQUF3RCxFQUFFLEtBQUksQ0FBQyxDQUFDLEVBQUUsUUFBTyxLQUFLLFFBQU87SUFFN0YsT0FBTyxDQUFDLENBQUMsRUFBRSxLQUFJLENBQUM7QUFDbEI7QUFFQSxNQUFNLFNBQVMsSUFBSSxvQkFBb0IsU0FBVSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7O0FBZ0JqRCxDQUFBLEVBQUE7SUFBQTtRQUFBLE9BQUEsS0FBQSxTQUFBLENBQUEsRUFBVztJQUFEO0FBQUE7QUFFVixlQUFlLFFBQVEifQ"],"names":["elementForLevel","level1","lvl1","Number","parseInt","assert","Section","setComponentTemplate","precompileTemplate","scope","styles","layouts","element","strictMode","templateOnly"],"mappings":";;;;;;;;AAyBA,SAASA,gBAAgBC,MAAc,EAAA;EACrC,MAAMC,IAAA,GAAMD,MAAA,GAAQE,MAAA,CAAOC,QAAQ,CAACH,MAAA,CAAS,GAAA,CAAA,CAAA;EAE7CI,MAAA,CAAO,2DAA2DH,IAAA,CAAA,CAAA,CAAM,EAAEA,IAAA,IAAO,CAAKA,IAAAA,IAAA,IAAO,CAAA,CAAA,CAAA;EAE7F,OAAO,CAAA,CAAA,EAAIA,IAAA,CAAK,CAAA,CAAA;AAClB,CAAA;AAEA,MAAMI,OAAa,GAAAC,oBAAA,CAAoBC,kBAAA,CAgBvC,8fAAA,EAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,MAAA;aAAAC,QAAA;IAAAC,OAAA;AAAAZ,IAAAA,eAAAA;AAAA,GAAA,CAAA;EAAAa,UAAA,EAAA,IAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
1
+ {"version":3,"file":"section.js","sources":["../../src/components/section.gts"],"sourcesContent":["import { assert } from '@ember/debug';\n\nimport { element } from 'ember-element-helper';\n\n// eslint-disable-next-line import-x/no-duplicates\nimport styles from '@hokulea/core/content.module.css';\n// eslint-disable-next-line import-x/no-duplicates\nimport layouts from '@hokulea/core/layouts.module.css';\n\nimport type { TOC } from '@ember/component/template-only';\n\nexport interface SectionSignature {\n Element: HTMLElement;\n Args: {\n title?: string;\n /**\n * The level of the component, 1-6 as in `<h1>` to `<h6>`\n *\n * @defaultValue 2\n */\n level?: string;\n };\n Blocks: {\n default: [];\n };\n}\n\nfunction elementForLevel(level?: string) {\n const lvl = level ? Number.parseInt(level) : 2;\n\n assert(`@level for <Section> must be between 1 and 6, received '${lvl}'`, lvl >= 1 && lvl <= 6);\n\n return `h${lvl}`;\n}\n\nconst Section: TOC<SectionSignature> = <template>\n <section class=\"{{styles.section}} {{layouts.flow}}\" data-test-section ...attributes>\n {{#if @title}}\n <header data-test-section=\"header\" part=\"header\">\n {{#if @title}}\n {{#let (element (elementForLevel @level)) as |Headline|}}\n <Headline data-test-section=\"title\" class={{styles.sectionTitle}}>{{@title}}</Headline>\n {{/let}}\n {{/if}}\n </header>\n {{/if}}\n\n {{#if (has-block)}}\n {{yield}}\n {{/if}}\n </section>\n</template>;\n\nexport default Section;\n"],"names":["elementForLevel","level","lvl","Number","parseInt","assert","Section","setComponentTemplate","precompileTemplate","strictMode","scope","styles","layouts","element","templateOnly"],"mappings":";;;;;;;;AA2BA,SAASA,eAAAA,CAAgBC,KAAc,EAAA;EACrC,MAAMC,GAAA,GAAMD,KAAA,GAAQE,MAAA,CAAOC,QAAQ,CAACH,KAAA,CAAA,GAAS,CAAA;AAE7CI,EAAAA,MAAA,CAAO,CAAA,wDAAA,EAA2DH,GAAA,CAAA,CAAA,CAAM,EAAEA,GAAA,IAAO,CAAA,IAAKA,GAAA,IAAO,CAAA,CAAA;EAE7F,OAAO,CAAA,CAAA,EAAIA,GAAA,CAAA,CAAK;AAClB;AAEA,MAAMI,OAAa,GAAAC,oBAAA,CAAoBC,kBAAA,CAAA,8fAAA,EAgBvC;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;YAAAC,QAAA;aAAAC,MAAA;IAAAC,OAAA;AAAAb,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAc,YAAA,EAAA;;;;"}
@@ -10,27 +10,27 @@ const Option = setComponentTemplate(precompileTemplate("\n <option value={{@val
10
10
  strictMode: true
11
11
  }), templateOnly());
12
12
  class Select extends Component {
13
- isSelected = option1 => {
13
+ isSelected = option => {
14
14
  if (Array.isArray(this.args.value)) {
15
- return this.args.value.includes(option1);
15
+ return this.args.value.includes(option);
16
16
  }
17
- return String(option1) === String(this.args.value);
17
+ return String(option) === String(this.args.value);
18
18
  };
19
- select = event1 => {
20
- const select1 = event1.target;
21
- const selection1 = Array.of(...select1.selectedOptions).map(option1 => option1.value);
22
- const value1 = selection1.length === 1 ? selection1[0] : selection1;
23
- this.args.update?.(value1);
19
+ select = event => {
20
+ const select = event.target;
21
+ const selection = Array.of(...select.selectedOptions).map(option => option.value);
22
+ const value = selection.length === 1 ? selection[0] : selection;
23
+ this.args.update?.(value);
24
24
  };
25
25
  static {
26
26
  setComponentTemplate(precompileTemplate("\n <span class={{styles.select}}>\n <select disabled={{@disabled}} data-test-select ...attributes {{on \"input\" this.select}}>\n {{yield (hash Option=(component Option isSelected=this.isSelected))}}\n </select>\n </span>\n ", {
27
+ strictMode: true,
27
28
  scope: () => ({
28
29
  styles,
29
30
  on,
30
31
  hash,
31
32
  Option
32
- }),
33
- strictMode: true
33
+ })
34
34
  }), this);
35
35
  }
36
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"select.js","sources":["../../src/components/select.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport Component from '@glimmer/component';\nimport { hash } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport styles from '@hokulea/core/controls.module.css';\nimport type { TOC } from '@ember/component/template-only';\nimport type { WithBoundArgs } from '@glint/template';\nexport type Value = string | number;\nexport interface OptionSignature {\n Element: HTMLOptionElement;\n Args: {\n value: Value;\n isSelected: (option: Value) => boolean;\n };\n Blocks: {\n default: [];\n };\n}\nconst Option: TOC<OptionSignature> = template(`\n <option value={{@value}} selected={{@isSelected @value}} ...attributes>\n {{#if (has-block)}}\n {{yield}}\n {{else}}\n {{@value}}\n {{/if}}\n </option>\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nexport interface SelectSignature {\n Element: HTMLSelectElement;\n Args: {\n value?: Value | Value[];\n update?: (value: Value | Value[]) => void;\n disabled?: boolean;\n };\n Blocks: {\n default: [{\n Option: WithBoundArgs<typeof Option, 'isSelected'>;\n }];\n };\n}\nexport default class Select extends Component<SelectSignature> {\n isSelected = (option1: Value)=>{\n if (Array.isArray(this.args.value)) {\n return this.args.value.includes(option1);\n }\n return String(option1) === String(this.args.value);\n };\n select = (event1: Event)=>{\n const select1 = event1.target as HTMLSelectElement;\n const selection1 = Array.of(...select1.selectedOptions).map((option1)=>option1.value);\n const value1 = selection1.length === 1 ? (selection1[0] as Value) : (selection1 as Value[]);\n this.args.update?.(value1);\n };\n static{\n template(`\n <span class={{styles.select}}>\n <select disabled={{@disabled}} data-test-select ...attributes {{on \"input\" this.select}}>\n {{yield (hash Option=(component Option isSelected=this.isSelected))}}\n </select>\n </span>\n `, {\n component: this,\n eval () {\n return eval(arguments[0]);\n }\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2hva3VsZWEvaG9rdWxlYS9lbWJlci9wYWNrYWdlL3NyYy9jb21wb25lbnRzL3NlbGVjdC5ndHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvbXBvbmVudCBmcm9tICdAZ2xpbW1lci9jb21wb25lbnQnO1xuaW1wb3J0IHsgaGFzaCB9IGZyb20gJ0BlbWJlci9oZWxwZXInO1xuaW1wb3J0IHsgb24gfSBmcm9tICdAZW1iZXIvbW9kaWZpZXInO1xuXG5pbXBvcnQgc3R5bGVzIGZyb20gJ0Bob2t1bGVhL2NvcmUvY29udHJvbHMubW9kdWxlLmNzcyc7XG5cbmltcG9ydCB0eXBlIHsgVE9DIH0gZnJvbSAnQGVtYmVyL2NvbXBvbmVudC90ZW1wbGF0ZS1vbmx5JztcbmltcG9ydCB0eXBlIHsgV2l0aEJvdW5kQXJncyB9IGZyb20gJ0BnbGludC90ZW1wbGF0ZSc7XG5cbmV4cG9ydCB0eXBlIFZhbHVlID0gc3RyaW5nIHwgbnVtYmVyO1xuXG5leHBvcnQgaW50ZXJmYWNlIE9wdGlvblNpZ25hdHVyZSB7XG4gIEVsZW1lbnQ6IEhUTUxPcHRpb25FbGVtZW50O1xuICBBcmdzOiB7XG4gICAgdmFsdWU6IFZhbHVlO1xuICAgIGlzU2VsZWN0ZWQ6IChvcHRpb246IFZhbHVlKSA9PiBib29sZWFuO1xuICB9O1xuICBCbG9ja3M6IHtcbiAgICBkZWZhdWx0OiBbXTtcbiAgfTtcbn1cblxuY29uc3QgT3B0aW9uOiBUT0M8T3B0aW9uU2lnbmF0dXJlPiA9IDx0ZW1wbGF0ZT5cbiAgPG9wdGlvbiB2YWx1ZT17e0B2YWx1ZX19IHNlbGVjdGVkPXt7QGlzU2VsZWN0ZWQgQHZhbHVlfX0gLi4uYXR0cmlidXRlcz5cbiAgICB7eyNpZiAoaGFzLWJsb2NrKX19XG4gICAgICB7e3lpZWxkfX1cbiAgICB7e2Vsc2V9fVxuICAgICAge3tAdmFsdWV9fVxuICAgIHt7L2lmfX1cbiAgPC9vcHRpb24-XG48L3RlbXBsYXRlPjtcblxuZXhwb3J0IGludGVyZmFjZSBTZWxlY3RTaWduYXR1cmUge1xuICBFbGVtZW50OiBIVE1MU2VsZWN0RWxlbWVudDtcbiAgQXJnczoge1xuICAgIHZhbHVlPzogVmFsdWUgfCBWYWx1ZVtdO1xuICAgIHVwZGF0ZT86ICh2YWx1ZTogVmFsdWUgfCBWYWx1ZVtdKSA9PiB2b2lkO1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgfTtcbiAgQmxvY2tzOiB7XG4gICAgZGVmYXVsdDogW1xuICAgICAge1xuICAgICAgICBPcHRpb246IFdpdGhCb3VuZEFyZ3M8dHlwZW9mIE9wdGlvbiwgJ2lzU2VsZWN0ZWQnPjtcbiAgICAgIH1cbiAgICBdO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZWxlY3QgZXh0ZW5kcyBDb21wb25lbnQ8U2VsZWN0U2lnbmF0dXJlPiB7XG4gIGlzU2VsZWN0ZWQgPSAob3B0aW9uOiBWYWx1ZSkgPT4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuYXJncy52YWx1ZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLmFyZ3MudmFsdWUuaW5jbHVkZXMob3B0aW9uKTtcbiAgICB9XG5cbiAgICByZXR1cm4gU3RyaW5nKG9wdGlvbikgPT09IFN0cmluZyh0aGlzLmFyZ3MudmFsdWUpO1xuICB9O1xuXG4gIHNlbGVjdCA9IChldmVudDogRXZlbnQpID0-IHtcbiAgICBjb25zdCBzZWxlY3QgPSBldmVudC50YXJnZXQgYXMgSFRNTFNlbGVjdEVsZW1lbnQ7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gQXJyYXkub2YoLi4uc2VsZWN0LnNlbGVjdGVkT3B0aW9ucykubWFwKChvcHRpb24pID0-IG9wdGlvbi52YWx1ZSk7XG4gICAgY29uc3QgdmFsdWUgPSBzZWxlY3Rpb24ubGVuZ3RoID09PSAxID8gKHNlbGVjdGlvblswXSBhcyBWYWx1ZSkgOiAoc2VsZWN0aW9uIGFzIFZhbHVlW10pO1xuXG4gICAgdGhpcy5hcmdzLnVwZGF0ZT8uKHZhbHVlKTtcbiAgfTtcblxuICA8dGVtcGxhdGU-XG4gICAgPHNwYW4gY2xhc3M9e3tzdHlsZXMuc2VsZWN0fX0-XG4gICAgICA8c2VsZWN0IGRpc2FibGVkPXt7QGRpc2FibGVkfX0gZGF0YS10ZXN0LXNlbGVjdCAuLi5hdHRyaWJ1dGVzIHt7b24gXCJpbnB1dFwiIHRoaXMuc2VsZWN0fX0-XG4gICAgICAgIHt7eWllbGQgKGhhc2ggT3B0aW9uPShjb21wb25lbnQgT3B0aW9uIGlzU2VsZWN0ZWQ9dGhpcy5pc1NlbGVjdGVkKSl9fVxuICAgICAgPC9zZWxlY3Q-XG4gICAgPC9zcGFuPlxuICA8L3RlbXBsYXRlPlxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLGVBQWUscUJBQXFCO0FBQzNDLFNBQVMsSUFBSSxRQUFRLGdCQUFnQjtBQUNyQyxTQUFTLEVBQUUsUUFBUSxrQkFBa0I7QUFFckMsT0FBTyxZQUFZLG9DQUFvQztBQUV2RCxjQUFjLEdBQUcsUUFBUSxpQ0FBaUM7QUFDMUQsY0FBYyxhQUFhLFFBQVEsa0JBQWtCO0FBRXJELFlBQVksUUFBUSxNQUFNLEdBQUcsTUFBTTtBQUVuQyxpQkFBaUI7SUFDZixTQUFTO0lBQ1Q7UUFDRSxPQUFPO1FBQ1AsYUFBYSxRQUFRLFVBQVUsT0FBTzs7SUFFeEM7UUFDRTs7O0FBSUosTUFBTSxRQUFRLElBQUksbUJBQW1CLFNBQVUsQ0FBQTs7Ozs7Ozs7QUFRL0MsQ0FBQSxFQUFBO0lBQUE7UUFBQSxPQUFBLEtBQUEsU0FBQSxDQUFBLEVBQVc7SUFBRDtBQUFBO0FBRVYsaUJBQWlCO0lBQ2YsU0FBUztJQUNUO1FBQ0UsUUFBUSxRQUFRO1FBQ2hCLFVBQVUsT0FBTyxRQUFRLFlBQVksSUFBSTtRQUN6QyxXQUFXLE9BQU87O0lBRXBCO1FBQ0U7Z0JBRUksUUFBUSxxQkFBcUIsUUFBUTs7OztBQU03QyxlQUFlLE1BQU0sZUFBZSxVQUFVO0lBQzVDLGFBQWEsQ0FBQyxTQUFRO1FBQ3BCLElBQUksTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUc7WUFDbEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFDbEM7UUFFQSxPQUFPLE9BQU8sYUFBWSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSztJQUNsRCxFQUFFO0lBRUYsU0FBUyxDQUFDLFFBQU87UUFDZixNQUFNLFVBQVMsT0FBTSxNQUFNLElBQUk7UUFDL0IsTUFBTSxhQUFZLE1BQU0sRUFBRSxJQUFJLFFBQU8sZUFBZSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFVBQVcsUUFBTyxLQUFLO1FBQ2xGLE1BQU0sU0FBUSxXQUFVLE1BQU0sS0FBSyxJQUFJLENBQUMsVUFBUyxDQUFDLEVBQUUsSUFBSSxLQUFLLElBQUksQ0FBQyxjQUFhLE9BQU87UUFFdEYsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUc7SUFDckIsRUFBRTtJQUVGLE1BQUE7UUFBQSxTQUFVLENBQUE7Ozs7OztFQU1WLENBQUEsRUFBQTtZQUFBLFdBQUEsSUFBVztZQUFYO2dCQUFBLE9BQUEsS0FBQSxTQUFBLENBQUEsRUFBVztZQUFEO1FBQUE7SUFBQSxDQU5BO0FBT1oifQ"],"names":["Option","setComponentTemplate","precompileTemplate","strictMode","templateOnly","Select","Component","isSelected","option1","Array","isArray","args","value","includes","String","select","event1","select1","target","selection1","of","selectedOptions","map","value1","length","update","scope","styles","on","hash"],"mappings":";;;;;;;;AAsBA,MAAMA,MAAY,GAAAC,oBAAA,CAAmBC,kBAAA,CAQrC,mLAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA,CAAA,CAAA;AAkBK,MAAMC,MAAA,SAAeC,SAAA,CAAU;AAC5CC,EAAAA,UAAA,GAAcC,OAAQ,IAAA;IACpB,IAAIC,KAAA,CAAMC,OAAO,CAAC,IAAI,CAACC,IAAI,CAACC,KAAK,CAAG,EAAA;MAClC,OAAO,IAAI,CAACD,IAAI,CAACC,KAAK,CAACC,QAAQ,CAACL,OAAA,CAAA,CAAA;AAClC,KAAA;IAEA,OAAOM,MAAA,CAAON,OAAA,CAAYM,KAAAA,MAAA,CAAO,IAAI,CAACH,IAAI,CAACC,KAAK,CAAA,CAAA;AAClD,GAAA,CAAA;AAEAG,EAAAA,MAAA,GAAUC,MAAO,IAAA;AACf,IAAA,MAAMC,OAAA,GAASD,MAAA,CAAME,MAAU,CAAA;AAC/B,IAAA,MAAMC,UAAA,GAAYV,KAAA,CAAMW,EAAE,IAAIH,OAAA,CAAOI,eAAe,CAAA,CAAEC,GAAG,CAAEd,OAAA,IAAWA,OAAA,CAAOI,KAAK,CAAA,CAAA;IAClF,MAAMW,MAAA,GAAQJ,UAAA,CAAUK,MAAM,KAAK,CAAA,GAAKL,UAAS,CAAC,CAAE,CAAA,GAAcA,UAAoB,CAAA;AAEtF,IAAA,IAAI,CAACR,IAAI,CAACc,MAAM,GAAGF,MAAA,CAAA,CAAA;AACrB,GAAA,CAAA;AAEA,EAAA;IAAAtB,oBAAA,CAAAC,kBAAA,CAMA,0PAAA,EAAA;AAAAwB,MAAAA,KAAA,EAAAA,OAAA;QAAAC,MAAA;QAAAC,EAAA;QAAAC,IAAA;AAAA7B,QAAAA,MAAAA;AAAA,OAAA,CAAA;MAAAG,UAAA,EAAA,IAAA;AAAU,KAAA,CAAA,EAAV,IAAW,CAAA,CAAA;AAAD,GAAA;AACZ;;;;"}
1
+ {"version":3,"file":"select.js","sources":["../../src/components/select.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { hash } from '@ember/helper';\nimport { on } from '@ember/modifier';\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\nexport type Value = string | number;\n\nexport interface OptionSignature {\n Element: HTMLOptionElement;\n Args: {\n value: Value;\n isSelected: (option: Value) => boolean;\n };\n Blocks: {\n default: [];\n };\n}\n\nconst Option: TOC<OptionSignature> = <template>\n <option value={{@value}} selected={{@isSelected @value}} ...attributes>\n {{#if (has-block)}}\n {{yield}}\n {{else}}\n {{@value}}\n {{/if}}\n </option>\n</template>;\n\nexport interface SelectSignature {\n Element: HTMLSelectElement;\n Args: {\n value?: Value | Value[];\n update?: (value: Value | Value[]) => void;\n disabled?: boolean;\n };\n Blocks: {\n default: [\n {\n Option: WithBoundArgs<typeof Option, 'isSelected'>;\n }\n ];\n };\n}\n\nexport default class Select extends Component<SelectSignature> {\n isSelected = (option: Value) => {\n if (Array.isArray(this.args.value)) {\n return this.args.value.includes(option);\n }\n\n return String(option) === String(this.args.value);\n };\n\n select = (event: Event) => {\n const select = event.target as HTMLSelectElement;\n const selection = Array.of(...select.selectedOptions).map((option) => option.value);\n const value = selection.length === 1 ? (selection[0] as Value) : (selection as Value[]);\n\n this.args.update?.(value);\n };\n\n <template>\n <span class={{styles.select}}>\n <select disabled={{@disabled}} data-test-select ...attributes {{on \"input\" this.select}}>\n {{yield (hash Option=(component Option isSelected=this.isSelected))}}\n </select>\n </span>\n </template>\n}\n"],"names":["Option","setComponentTemplate","precompileTemplate","strictMode","templateOnly","Select","Component","isSelected","option","Array","isArray","args","value","includes","String","select","event","target","selection","of","selectedOptions","map","length","update","scope","styles","on","hash"],"mappings":";;;;;;;;AAsBA,MAAMA,MAAY,GAAAC,oBAAA,CAAmBC,kBAAA,CAAA,mLAAA,EAQrC;EAAAC,UAAA,EAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA,CAAA;AAkBK,MAAMC,eAAeC,SAAA,CAAU;EAC5CC,UAAA,GAAcC,MAAQ,IAAA;IACpB,IAAIC,KAAA,CAAMC,OAAO,CAAC,IAAI,CAACC,IAAI,CAACC,KAAK,CAAA,EAAG;MAClC,OAAO,IAAI,CAACD,IAAI,CAACC,KAAK,CAACC,QAAQ,CAACL,MAAA,CAAA;AAClC,IAAA;AAEA,IAAA,OAAOM,OAAON,MAAA,CAAA,KAAYM,MAAA,CAAO,IAAI,CAACH,IAAI,CAACC,KAAK,CAAA;EAClD,CAAA;EAEAG,MAAA,GAAUC,KAAO,IAAA;AACf,IAAA,MAAMD,MAAA,GAASC,KAAA,CAAMC,MAAU;AAC/B,IAAA,MAAMC,SAAA,GAAYT,KAAA,CAAMU,EAAE,CAAA,GAAIJ,MAAA,CAAOK,eAAe,CAAA,CAAEC,GAAG,CAAEb,MAAA,IAAWA,MAAA,CAAOI,KAAK,CAAA;AAClF,IAAA,MAAMA,KAAA,GAAQM,SAAA,CAAUI,MAAM,KAAK,IAAKJ,SAAS,CAAC,CAAA,CAAE,GAAcA,SAAoB;AAEtF,IAAA,IAAI,CAACP,IAAI,CAACY,MAAM,GAAGX,KAAA,CAAA;EACrB,CAAA;AAEA,EAAA;IAAAX,oBAAA,CAAAC,kBAAA,CAAA,0PAAA,EAMA;MAAAC,UAAA,EAAA,IAAA;AAAAqB,MAAAA,KAAA,EAAAA,OAAA;QAAAC,MAAA;QAAAC,EAAA;QAAAC,IAAA;AAAA3B,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
@@ -1,7 +1,7 @@
1
1
  import Component from '@glimmer/component';
2
2
  import { cached, tracked } from '@glimmer/tracking';
3
3
  import { registerDestructor } from '@ember/destroyable';
4
- import { uniqueId, hash } from '@ember/helper';
4
+ import { hash, uniqueId } from '@ember/helper';
5
5
  import { guidFor } from '@ember/object/internals';
6
6
  import { next } from '@ember/runloop';
7
7
  import { ariaTablist } from 'ember-aria-voyager';
@@ -10,24 +10,24 @@ import Portal from 'ember-stargate/components/portal';
10
10
  import PortalTarget from 'ember-stargate/components/portal-target';
11
11
  import { TrackedArray } from 'tracked-built-ins';
12
12
  import styles from '@hokulea/core/controls.module.css';
13
- import { e as eq, n as not } from '../helpers-DApiJrHl.js';
14
- import { n, g, i } from 'decorator-transforms/runtime';
13
+ import { n as not, e as eq } from '../helpers-DS9du02l.js';
15
14
  import { precompileTemplate } from '@ember/template-compilation';
16
15
  import { setComponentTemplate } from '@ember/component';
16
+ import { n, g, i } from 'decorator-transforms/runtime-esm';
17
17
 
18
18
  const TabValue = Symbol('TabValue');
19
- const attachValue = modifier((element1, [value1]) => {
20
- if (value1) {
19
+ const attachValue = modifier((element, [value]) => {
20
+ if (value) {
21
21
  // @ts-expect-error this is internal API
22
- element1[TabValue] = value1;
22
+ element[TabValue] = value;
23
23
  }
24
24
  });
25
- let Tab = class Tab extends Component {
26
- constructor(owner1, args1) {
27
- super(owner1, args1);
28
- args1.register(this);
25
+ class Tab extends Component {
26
+ constructor(owner, args) {
27
+ super(owner, args);
28
+ args.register(this);
29
29
  registerDestructor(this, () => {
30
- args1.unregister(this);
30
+ args.unregister(this);
31
31
  });
32
32
  }
33
33
  get id() {
@@ -38,6 +38,7 @@ let Tab = class Tab extends Component {
38
38
  }
39
39
  static {
40
40
  setComponentTemplate(precompileTemplate("\n {{#let (uniqueId) (hash active=(eq this.id @activeItem) selected=(eq this.id @selection)) as |id state|}}\n <Portal @target={{@tablist}}>\n {{!-- template-lint-disable require-context-role --}}\n <button type=\"button\" role=\"tab\" aria-controls={{id}} aria-selected={{if state.selected \"true\"}} id=\"{{id}}-label\" {{attachValue @value}}>\n <span>\n {{#if (has-block \"label\")}}\n {{yield state to=\"label\"}}\n {{else}}\n {{@label}}\n {{/if}}\n </span>\n </button>\n </Portal>\n\n <section id={{id}} role=\"tabpanel\" aria-labelledby=\"{{id}}-label\" local-class=\"content\" hidden={{not state.selected}}>\n {{#if (has-block \"content\")}}\n {{yield state to=\"content\"}}\n {{else}}\n {{yield state}}\n {{/if}}\n </section>\n {{/let}}\n ", {
41
+ strictMode: true,
41
42
  scope: () => ({
42
43
  uniqueId,
43
44
  hash,
@@ -45,11 +46,10 @@ let Tab = class Tab extends Component {
45
46
  Portal,
46
47
  attachValue,
47
48
  not
48
- }),
49
- strictMode: true
49
+ })
50
50
  }), this);
51
51
  }
52
- };
52
+ }
53
53
  class Tabs extends Component {
54
54
  static {
55
55
  g(this.prototype, "tabs", [tracked], function () {
@@ -66,33 +66,35 @@ class Tabs extends Component {
66
66
  }
67
67
  #activeItem = (i(this, "activeItem"), void 0);
68
68
  get items() {
69
- return this.tabs.map(t1 => t1.id);
69
+ return this.tabs.map(t => t.id);
70
70
  }
71
71
  get selection() {
72
72
  return this.args.selection ?? this.internalSelection?.id;
73
73
  }
74
- register = tab1 => {
74
+ register = tab => {
75
75
  // eslint-disable-next-line ember/no-runloop
76
76
  next(() => {
77
- this.tabs.push(tab1);
77
+ this.tabs.push(tab);
78
78
  });
79
79
  };
80
- unregister = tab1 => {
80
+ unregister = tab => {
81
81
  // eslint-disable-next-line ember/no-runloop
82
82
  next(() => {
83
- this.tabs.splice(this.tabs.indexOf(tab1), 1);
83
+ this.tabs.splice(this.tabs.indexOf(tab), 1);
84
84
  });
85
85
  };
86
- select = id1 => {
87
- const tab1 = this.tabs.find(t1 => t1.id === id1);
88
- this.internalSelection = tab1;
89
- this.args.update?.(tab1.args.value ?? tab1.args.label ?? undefined);
86
+ select = id => {
87
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
88
+ const tab = this.tabs.find(t => t.id === id);
89
+ this.internalSelection = tab;
90
+ this.args.update?.(tab.args.value ?? tab.args.label ?? undefined);
90
91
  };
91
- activateItem = id1 => {
92
- this.activeItem = id1;
92
+ activateItem = id => {
93
+ this.activeItem = id;
93
94
  };
94
95
  static {
95
96
  setComponentTemplate(precompileTemplate("\n <div class={{styles.tabs}} data-test-tabs>\n {{#let (uniqueId) as |tablistId|}}\n <PortalTarget @name={{tablistId}} @multiple={{true}} role=\"tablist\" {{ariaTablist items=this.items select=this.select selection=this.selection activateItem=this.activateItem disabled=@disabled behavior=@behavior orientation=@orientation}} />\n\n {{yield (hash Tab=(component Tab register=this.register unregister=this.unregister tablist=tablistId selection=this.selection activeItem=this.activeItem))}}\n {{/let}}\n </div>\n ", {
97
+ strictMode: true,
96
98
  scope: () => ({
97
99
  styles,
98
100
  uniqueId,
@@ -100,8 +102,7 @@ class Tabs extends Component {
100
102
  ariaTablist,
101
103
  hash,
102
104
  Tab
103
- }),
104
- strictMode: true
105
+ })
105
106
  }), this);
106
107
  }
107
108
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tabs.js","sources":["../../src/components/tabs.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport Component from '@glimmer/component';\nimport { cached, tracked } from '@glimmer/tracking';\nimport { registerDestructor } from '@ember/destroyable';\nimport { hash } from '@ember/helper';\nimport { uniqueId } from '@ember/helper';\nimport { guidFor } from '@ember/object/internals';\nimport { next } from '@ember/runloop';\nimport { ariaTablist, type Orientation, type TablistBehavior } from 'ember-aria-voyager';\nimport { modifier } from 'ember-modifier';\nimport Portal from 'ember-stargate/components/portal';\nimport PortalTarget from 'ember-stargate/components/portal-target';\nimport { TrackedArray } from 'tracked-built-ins';\nimport styles from '@hokulea/core/controls.module.css';\nimport { eq, not } from '../-private/helpers';\nimport type Owner from '@ember/owner';\nimport type { WithBoundArgs } from '@glint/template';\nexport const TabValue = Symbol('TabValue');\nconst attachValue = modifier((element1, [value1])=>{\n if (value1) {\n // @ts-expect-error this is internal API\n element1[TabValue] = value1;\n }\n});\ninterface State {\n active: boolean;\n selected: boolean;\n}\ntype TabSignature = {\n Element: HTMLDivElement;\n Args: {\n tablist: string;\n register: (tab: Tab) => void;\n unregister: (tab: Tab) => void;\n label?: string;\n value?: unknown;\n selection?: unknown;\n activeItem?: string | unknown;\n };\n Blocks: {\n default?: [State];\n label?: [State];\n content?: [State];\n };\n};\nlet Tab = class Tab extends Component<TabSignature> {\n constructor(owner1: Owner, args1: TabSignature['Args']){\n super(owner1, args1);\n args1.register(this);\n registerDestructor(this, ()=>{\n args1.unregister(this);\n });\n }\n @cached\n get id() {\n return this.args.value ?? this.args.label ?? guidFor(this);\n }\n static{\n template(`\n {{#let\n (uniqueId) (hash active=(eq this.id @activeItem) selected=(eq this.id @selection))\n as |id state|\n }}\n <Portal @target={{@tablist}}>\n {{! template-lint-disable require-context-role }}\n <button\n type=\"button\"\n role=\"tab\"\n aria-controls={{id}}\n aria-selected={{if state.selected \"true\"}}\n id=\"{{id}}-label\"\n {{attachValue @value}}\n >\n <span>\n {{#if (has-block \"label\")}}\n {{yield state to=\"label\"}}\n {{else}}\n {{@label}}\n {{/if}}\n </span>\n </button>\n </Portal>\n\n <section\n id={{id}}\n role=\"tabpanel\"\n aria-labelledby=\"{{id}}-label\"\n local-class=\"content\"\n hidden={{not state.selected}}\n >\n {{#if (has-block \"content\")}}\n {{yield state to=\"content\"}}\n {{else}}\n {{yield state}}\n {{/if}}\n </section>\n {{/let}}\n `, {\n component: this,\n eval () {\n return eval(arguments[0]);\n }\n });\n }\n};\ninterface TabsSignature {\n Element: HTMLDivElement;\n Args: {\n disabled?: boolean;\n selection?: unknown;\n update?: (value: unknown) => void;\n behavior?: TablistBehavior;\n orientation?: Orientation;\n };\n Blocks: {\n default: [{\n Tab: WithBoundArgs<typeof Tab, 'selection' | 'activeItem' | 'tablist' | 'register' | 'unregister'>;\n }];\n };\n}\nexport default class Tabs extends Component<TabsSignature> {\n @tracked\n tabs: Tab[] = new TrackedArray();\n @tracked\n internalSelection?: Tab;\n @tracked\n activeItem?: string | unknown;\n get items() {\n return this.tabs.map((t1)=>t1.id);\n }\n get selection() {\n return this.args.selection ?? this.internalSelection?.id;\n }\n register = (tab1: Tab)=>{\n // eslint-disable-next-line ember/no-runloop\n next(()=>{\n this.tabs.push(tab1);\n });\n };\n unregister = (tab1: Tab)=>{\n // eslint-disable-next-line ember/no-runloop\n next(()=>{\n this.tabs.splice(this.tabs.indexOf(tab1), 1);\n });\n };\n select = (id1: string | unknown)=>{\n const tab1 = this.tabs.find((t1)=>t1.id === id1) as Tab;\n this.internalSelection = tab1;\n this.args.update?.(tab1.args.value ?? tab1.args.label ?? undefined);\n };\n activateItem = (id1: string | unknown)=>{\n this.activeItem = id1;\n };\n static{\n template(`\n <div class={{styles.tabs}} data-test-tabs>\n {{#let (uniqueId) as |tablistId|}}\n <PortalTarget\n @name={{tablistId}}\n @multiple={{true}}\n role=\"tablist\"\n {{ariaTablist\n items=this.items\n select=this.select\n selection=this.selection\n activateItem=this.activateItem\n disabled=@disabled\n behavior=@behavior\n orientation=@orientation\n }}\n />\n\n {{yield\n (hash\n Tab=(component\n Tab\n register=this.register\n unregister=this.unregister\n tablist=tablistId\n selection=this.selection\n activeItem=this.activeItem\n )\n )\n }}\n {{/let}}\n </div>\n `, {\n component: this,\n eval () {\n return eval(arguments[0]);\n }\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2hva3VsZWEvaG9rdWxlYS9lbWJlci9wYWNrYWdlL3NyYy9jb21wb25lbnRzL3RhYnMuZ3RzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb21wb25lbnQgZnJvbSAnQGdsaW1tZXIvY29tcG9uZW50JztcbmltcG9ydCB7IGNhY2hlZCwgdHJhY2tlZCB9IGZyb20gJ0BnbGltbWVyL3RyYWNraW5nJztcbmltcG9ydCB7IHJlZ2lzdGVyRGVzdHJ1Y3RvciB9IGZyb20gJ0BlbWJlci9kZXN0cm95YWJsZSc7XG5pbXBvcnQgeyBoYXNoIH0gZnJvbSAnQGVtYmVyL2hlbHBlcic7XG5pbXBvcnQgeyB1bmlxdWVJZCB9IGZyb20gJ0BlbWJlci9oZWxwZXInO1xuaW1wb3J0IHsgZ3VpZEZvciB9IGZyb20gJ0BlbWJlci9vYmplY3QvaW50ZXJuYWxzJztcbmltcG9ydCB7IG5leHQgfSBmcm9tICdAZW1iZXIvcnVubG9vcCc7XG5cbmltcG9ydCB7IGFyaWFUYWJsaXN0LCB0eXBlIE9yaWVudGF0aW9uLCB0eXBlIFRhYmxpc3RCZWhhdmlvciB9IGZyb20gJ2VtYmVyLWFyaWEtdm95YWdlcic7XG5pbXBvcnQgeyBtb2RpZmllciB9IGZyb20gJ2VtYmVyLW1vZGlmaWVyJztcbmltcG9ydCBQb3J0YWwgZnJvbSAnZW1iZXItc3RhcmdhdGUvY29tcG9uZW50cy9wb3J0YWwnO1xuaW1wb3J0IFBvcnRhbFRhcmdldCBmcm9tICdlbWJlci1zdGFyZ2F0ZS9jb21wb25lbnRzL3BvcnRhbC10YXJnZXQnO1xuaW1wb3J0IHsgVHJhY2tlZEFycmF5IH0gZnJvbSAndHJhY2tlZC1idWlsdC1pbnMnO1xuXG5pbXBvcnQgc3R5bGVzIGZyb20gJ0Bob2t1bGVhL2NvcmUvY29udHJvbHMubW9kdWxlLmNzcyc7XG5cbmltcG9ydCB7IGVxLCBub3QgfSBmcm9tICcuLi8tcHJpdmF0ZS9oZWxwZXJzJztcblxuaW1wb3J0IHR5cGUgT3duZXIgZnJvbSAnQGVtYmVyL293bmVyJztcbmltcG9ydCB0eXBlIHsgV2l0aEJvdW5kQXJncyB9IGZyb20gJ0BnbGludC90ZW1wbGF0ZSc7XG5cbmV4cG9ydCBjb25zdCBUYWJWYWx1ZSA9IFN5bWJvbCgnVGFiVmFsdWUnKTtcblxuY29uc3QgYXR0YWNoVmFsdWUgPSBtb2RpZmllcigoZWxlbWVudCwgW3ZhbHVlXSkgPT4ge1xuICBpZiAodmFsdWUpIHtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIHRoaXMgaXMgaW50ZXJuYWwgQVBJXG4gICAgZWxlbWVudFtUYWJWYWx1ZV0gPSB2YWx1ZTtcbiAgfVxufSk7XG5cbmludGVyZmFjZSBTdGF0ZSB7XG4gIGFjdGl2ZTogYm9vbGVhbjtcbiAgc2VsZWN0ZWQ6IGJvb2xlYW47XG59XG5cbnR5cGUgVGFiU2lnbmF0dXJlID0ge1xuICBFbGVtZW50OiBIVE1MRGl2RWxlbWVudDtcbiAgQXJnczoge1xuICAgIHRhYmxpc3Q6IHN0cmluZztcbiAgICByZWdpc3RlcjogKHRhYjogVGFiKSA9PiB2b2lkO1xuICAgIHVucmVnaXN0ZXI6ICh0YWI6IFRhYikgPT4gdm9pZDtcbiAgICBsYWJlbD86IHN0cmluZztcbiAgICB2YWx1ZT86IHVua25vd247XG4gICAgc2VsZWN0aW9uPzogdW5rbm93bjtcbiAgICBhY3RpdmVJdGVtPzogc3RyaW5nIHwgdW5rbm93bjtcbiAgfTtcbiAgQmxvY2tzOiB7XG4gICAgZGVmYXVsdD86IFtTdGF0ZV07XG4gICAgbGFiZWw_OiBbU3RhdGVdO1xuICAgIGNvbnRlbnQ_OiBbU3RhdGVdO1xuICB9O1xufTtcblxuY2xhc3MgVGFiIGV4dGVuZHMgQ29tcG9uZW50PFRhYlNpZ25hdHVyZT4ge1xuICBjb25zdHJ1Y3Rvcihvd25lcjogT3duZXIsIGFyZ3M6IFRhYlNpZ25hdHVyZVsnQXJncyddKSB7XG4gICAgc3VwZXIob3duZXIsIGFyZ3MpO1xuXG4gICAgYXJncy5yZWdpc3Rlcih0aGlzKTtcblxuICAgIHJlZ2lzdGVyRGVzdHJ1Y3Rvcih0aGlzLCAoKSA9PiB7XG4gICAgICBhcmdzLnVucmVnaXN0ZXIodGhpcyk7XG4gICAgfSk7XG4gIH1cblxuICBAY2FjaGVkXG4gIGdldCBpZCgpIHtcbiAgICByZXR1cm4gdGhpcy5hcmdzLnZhbHVlID8_IHRoaXMuYXJncy5sYWJlbCA_PyBndWlkRm9yKHRoaXMpO1xuICB9XG5cbiAgPHRlbXBsYXRlPlxuICAgIHt7I2xldFxuICAgICAgKHVuaXF1ZUlkKSAoaGFzaCBhY3RpdmU9KGVxIHRoaXMuaWQgQGFjdGl2ZUl0ZW0pIHNlbGVjdGVkPShlcSB0aGlzLmlkIEBzZWxlY3Rpb24pKVxuICAgICAgYXMgfGlkIHN0YXRlfFxuICAgIH19XG4gICAgICA8UG9ydGFsIEB0YXJnZXQ9e3tAdGFibGlzdH19PlxuICAgICAgICB7eyEgdGVtcGxhdGUtbGludC1kaXNhYmxlIHJlcXVpcmUtY29udGV4dC1yb2xlIH19XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwidGFiXCJcbiAgICAgICAgICBhcmlhLWNvbnRyb2xzPXt7aWR9fVxuICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e3tpZiBzdGF0ZS5zZWxlY3RlZCBcInRydWVcIn19XG4gICAgICAgICAgaWQ9XCJ7e2lkfX0tbGFiZWxcIlxuICAgICAgICAgIHt7YXR0YWNoVmFsdWUgQHZhbHVlfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAge3sjaWYgKGhhcy1ibG9jayBcImxhYmVsXCIpfX1cbiAgICAgICAgICAgICAge3t5aWVsZCBzdGF0ZSB0bz1cImxhYmVsXCJ9fVxuICAgICAgICAgICAge3tlbHNlfX1cbiAgICAgICAgICAgICAge3tAbGFiZWx9fVxuICAgICAgICAgICAge3svaWZ9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24-XG4gICAgICA8L1BvcnRhbD5cblxuICAgICAgPHNlY3Rpb25cbiAgICAgICAgaWQ9e3tpZH19XG4gICAgICAgIHJvbGU9XCJ0YWJwYW5lbFwiXG4gICAgICAgIGFyaWEtbGFiZWxsZWRieT1cInt7aWR9fS1sYWJlbFwiXG4gICAgICAgIGxvY2FsLWNsYXNzPVwiY29udGVudFwiXG4gICAgICAgIGhpZGRlbj17e25vdCBzdGF0ZS5zZWxlY3RlZH19XG4gICAgICA-XG4gICAgICAgIHt7I2lmIChoYXMtYmxvY2sgXCJjb250ZW50XCIpfX1cbiAgICAgICAgICB7e3lpZWxkIHN0YXRlIHRvPVwiY29udGVudFwifX1cbiAgICAgICAge3tlbHNlfX1cbiAgICAgICAgICB7e3lpZWxkIHN0YXRlfX1cbiAgICAgICAge3svaWZ9fVxuICAgICAgPC9zZWN0aW9uPlxuICAgIHt7L2xldH19XG4gIDwvdGVtcGxhdGU-XG59XG5cbmludGVyZmFjZSBUYWJzU2lnbmF0dXJlIHtcbiAgRWxlbWVudDogSFRNTERpdkVsZW1lbnQ7XG4gIEFyZ3M6IHtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgc2VsZWN0aW9uPzogdW5rbm93bjtcbiAgICB1cGRhdGU_OiAodmFsdWU6IHVua25vd24pID0-IHZvaWQ7XG4gICAgYmVoYXZpb3I_OiBUYWJsaXN0QmVoYXZpb3I7XG4gICAgb3JpZW50YXRpb24_OiBPcmllbnRhdGlvbjtcbiAgfTtcbiAgQmxvY2tzOiB7XG4gICAgZGVmYXVsdDogW1xuICAgICAge1xuICAgICAgICBUYWI6IFdpdGhCb3VuZEFyZ3M8XG4gICAgICAgICAgdHlwZW9mIFRhYixcbiAgICAgICAgICAnc2VsZWN0aW9uJyB8ICdhY3RpdmVJdGVtJyB8ICd0YWJsaXN0JyB8ICdyZWdpc3RlcicgfCAndW5yZWdpc3RlcidcbiAgICAgICAgPjtcbiAgICAgIH1cbiAgICBdO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUYWJzIGV4dGVuZHMgQ29tcG9uZW50PFRhYnNTaWduYXR1cmU-IHtcbiAgQHRyYWNrZWQgdGFiczogVGFiW10gPSBuZXcgVHJhY2tlZEFycmF5KCk7XG4gIEB0cmFja2VkIGludGVybmFsU2VsZWN0aW9uPzogVGFiO1xuICBAdHJhY2tlZCBhY3RpdmVJdGVtPzogc3RyaW5nIHwgdW5rbm93bjtcblxuICBnZXQgaXRlbXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudGFicy5tYXAoKHQpID0-IHQuaWQpO1xuICB9XG5cbiAgZ2V0IHNlbGVjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5hcmdzLnNlbGVjdGlvbiA_PyB0aGlzLmludGVybmFsU2VsZWN0aW9uPy5pZDtcbiAgfVxuXG4gIHJlZ2lzdGVyID0gKHRhYjogVGFiKSA9PiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVtYmVyL25vLXJ1bmxvb3BcbiAgICBuZXh0KCgpID0-IHtcbiAgICAgIHRoaXMudGFicy5wdXNoKHRhYik7XG4gICAgfSk7XG4gIH07XG5cbiAgdW5yZWdpc3RlciA9ICh0YWI6IFRhYikgPT4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlbWJlci9uby1ydW5sb29wXG4gICAgbmV4dCgoKSA9PiB7XG4gICAgICB0aGlzLnRhYnMuc3BsaWNlKHRoaXMudGFicy5pbmRleE9mKHRhYiksIDEpO1xuICAgIH0pO1xuICB9O1xuXG4gIHNlbGVjdCA9IChpZDogc3RyaW5nIHwgdW5rbm93bikgPT4ge1xuICAgIGNvbnN0IHRhYiA9IHRoaXMudGFicy5maW5kKCh0KSA9PiB0LmlkID09PSBpZCkgYXMgVGFiO1xuXG4gICAgdGhpcy5pbnRlcm5hbFNlbGVjdGlvbiA9IHRhYjtcbiAgICB0aGlzLmFyZ3MudXBkYXRlPy4odGFiLmFyZ3MudmFsdWUgPz8gdGFiLmFyZ3MubGFiZWwgPz8gdW5kZWZpbmVkKTtcbiAgfTtcblxuICBhY3RpdmF0ZUl0ZW0gPSAoaWQ6IHN0cmluZyB8IHVua25vd24pID0-IHtcbiAgICB0aGlzLmFjdGl2ZUl0ZW0gPSBpZDtcbiAgfTtcblxuICA8dGVtcGxhdGU-XG4gICAgPGRpdiBjbGFzcz17e3N0eWxlcy50YWJzfX0gZGF0YS10ZXN0LXRhYnM-XG4gICAgICB7eyNsZXQgKHVuaXF1ZUlkKSBhcyB8dGFibGlzdElkfH19XG4gICAgICAgIDxQb3J0YWxUYXJnZXRcbiAgICAgICAgICBAbmFtZT17e3RhYmxpc3RJZH19XG4gICAgICAgICAgQG11bHRpcGxlPXt7dHJ1ZX19XG4gICAgICAgICAgcm9sZT1cInRhYmxpc3RcIlxuICAgICAgICAgIHt7YXJpYVRhYmxpc3RcbiAgICAgICAgICAgIGl0ZW1zPXRoaXMuaXRlbXNcbiAgICAgICAgICAgIHNlbGVjdD10aGlzLnNlbGVjdFxuICAgICAgICAgICAgc2VsZWN0aW9uPXRoaXMuc2VsZWN0aW9uXG4gICAgICAgICAgICBhY3RpdmF0ZUl0ZW09dGhpcy5hY3RpdmF0ZUl0ZW1cbiAgICAgICAgICAgIGRpc2FibGVkPUBkaXNhYmxlZFxuICAgICAgICAgICAgYmVoYXZpb3I9QGJlaGF2aW9yXG4gICAgICAgICAgICBvcmllbnRhdGlvbj1Ab3JpZW50YXRpb25cbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuXG4gICAgICAgIHt7eWllbGRcbiAgICAgICAgICAoaGFzaFxuICAgICAgICAgICAgVGFiPShjb21wb25lbnRcbiAgICAgICAgICAgICAgVGFiXG4gICAgICAgICAgICAgIHJlZ2lzdGVyPXRoaXMucmVnaXN0ZXJcbiAgICAgICAgICAgICAgdW5yZWdpc3Rlcj10aGlzLnVucmVnaXN0ZXJcbiAgICAgICAgICAgICAgdGFibGlzdD10YWJsaXN0SWRcbiAgICAgICAgICAgICAgc2VsZWN0aW9uPXRoaXMuc2VsZWN0aW9uXG4gICAgICAgICAgICAgIGFjdGl2ZUl0ZW09dGhpcy5hY3RpdmVJdGVtXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICB9fVxuICAgICAge3svbGV0fX1cbiAgICA8L2Rpdj5cbiAgPC90ZW1wbGF0ZT5cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxlQUFlLHFCQUFxQjtBQUMzQyxTQUFTLE1BQU0sRUFBRSxPQUFPLFFBQVEsb0JB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"],"names":["TabValue","Symbol","attachValue","modifier","element1","value1","Tab","Component","constructor","owner1","args1","register","registerDestructor","unregister","id","args","value","label","guidFor","n","prototype","cached","setComponentTemplate","precompileTemplate","scope","uniqueId","hash","eq","Portal","not","strictMode","Tabs","g","tracked","TrackedArray","i","void 0","items","tabs","map","t1","selection","internalSelection","tab1","next","push","splice","indexOf","select","id1","find","update","undefined","activateItem","activeItem","styles","PortalTarget","ariaTablist"],"mappings":";;;;;;;;;;;;;;;;;AAqBaA,MAAAA,QAAA,GAAWC,MAAA,CAAO,UAAA,EAAA;AAE/B,MAAMC,WAAA,GAAcC,QAAA,CAAS,CAACC,QAAA,EAAS,CAACC,MAAA,CAAM,KAAA;AAC5C,EAAA,IAAIA,MAAA,EAAO;AACT;AACAD,IAAAA,QAAO,CAACJ,QAAA,CAAS,GAAGK,MAAA,CAAA;AACtB,GAAA;AACF,CAAA,CAAA,CAAA;AAyBA,IAAAC,GAAM,GAAN,MAAMA,GAAA,SAAYC,SAAA,CAAU;EAC1BC,WAAYC,CAAAA,MAAY,EAAEC,KAA0B,EAAE;IACpD,KAAK,CAACD,MAAA,EAAOC,KAAA,CAAA,CAAA;IAEbA,KAAA,CAAKC,QAAQ,CAAC,IAAI,CAAA,CAAA;IAElBC,kBAAA,CAAmB,IAAI,EAAE,MAAA;MACvBF,KAAA,CAAKG,UAAU,CAAC,IAAI,CAAA,CAAA;AACtB,KAAA,CAAA,CAAA;AACF,GAAA;AAEA,EAAA,IACIC,KAAK;AACP,IAAA,OAAO,IAAI,CAACC,IAAI,CAACC,KAAK,IAAI,IAAI,CAACD,IAAI,CAACE,KAAK,IAAIC,OAAA,CAAQ,IAAI,CAAA,CAAA;AAC3D,GAAA;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,IAAA,EAAA,CAHCC,MAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAKD,EAAA;IAAAC,oBAAA,CAAAC,kBAAA,CAuCA,i5BAAA,EAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,QAAA;QAAAC,IAAA;QAAAC,EAAA;QAAAC,MAAA;QAAA1B,WAAA;AAAA2B,QAAAA,GAAAA;AAAA,OAAA,CAAA;MAAAC,UAAA,EAAA,IAAA;AAAU,KAAA,CAAA,EAAV,IAAW,CAAA,CAAA;AAAD,GAAA;AACZ,CAAA,CAAA;AAuBe,MAAMC,IAAA,SAAaxB,SAAA,CAAU;AAAA,EAAA;IAAAyB,CAAA,CAAA,IAAA,CAAAZ,SAAA,EAAA,MAAA,EAAA,CACzCa,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAAsB,IAAIC,YAAA,EAAA,CAAA;AAAA,KAAA,CAAA,CAAA;AAAA,GAAA;AAAA,EAAA,KAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,MAAA,CAAA,EAAAC,KAAA,CAAA,EAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAZ,SAAA,EAAA,mBAAA,EAAA,CAC1Ba,OAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAAA,EAAA,kBAAA,IAAAE,CAAA,CAAA,IAAA,EAAA,mBAAA,CAAA,EAAAC,KAAA,CAAA,EAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAZ,SAAA,EAAA,YAAA,EAAA,CACAa,OAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAAA,EAAA,WAAA,IAAAE,CAAA,CAAA,IAAA,EAAA,YAAA,CAAA,EAAAC,KAAA,CAAA,EAAA;AAED,EAAA,IAAIC,QAAQ;IACV,OAAO,IAAI,CAACC,IAAI,CAACC,GAAG,CAAEC,EAAA,IAAMA,EAAA,CAAE1B,EAAE,CAAA,CAAA;AAClC,GAAA;AAEA,EAAA,IAAI2B,YAAY;IACd,OAAO,IAAI,CAAC1B,IAAI,CAAC0B,SAAS,IAAI,IAAI,CAACC,iBAAiB,EAAE5B,EAAA,CAAA;AACxD,GAAA;AAEAH,EAAAA,QAAA,GAAYgC,IAAK,IAAA;AACf;AACAC,IAAAA,IAAA,CAAK,MAAA;AACH,MAAA,IAAI,CAACN,IAAI,CAACO,IAAI,CAACF,IAAA,CAAA,CAAA;AACjB,KAAA,CAAA,CAAA;AACF,GAAA,CAAA;AAEA9B,EAAAA,UAAA,GAAc8B,IAAK,IAAA;AACjB;AACAC,IAAAA,IAAA,CAAK,MAAA;AACH,MAAA,IAAI,CAACN,IAAI,CAACQ,MAAM,CAAC,IAAI,CAACR,IAAI,CAACS,OAAO,CAACJ,IAAA,CAAM,EAAA,CAAA,CAAA,CAAA;AAC3C,KAAA,CAAA,CAAA;AACF,GAAA,CAAA;AAEAK,EAAAA,MAAA,GAAUC,GAAoB,IAAA;AAC5B,IAAA,MAAMN,IAAA,GAAM,IAAI,CAACL,IAAI,CAACY,IAAI,CAAEV,EAAA,IAAMA,EAAA,CAAE1B,EAAE,KAAKmC,GAAA,CAAO,CAAA;IAElD,IAAI,CAACP,iBAAiB,GAAGC,IAAA,CAAA;AACzB,IAAA,IAAI,CAAC5B,IAAI,CAACoC,MAAM,GAAGR,IAAA,CAAI5B,IAAI,CAACC,KAAK,IAAI2B,IAAA,CAAI5B,IAAI,CAACE,KAAK,IAAImC,SAAA,CAAA,CAAA;AACzD,GAAA,CAAA;AAEAC,EAAAA,YAAA,GAAgBJ,GAAoB,IAAA;IAClC,IAAI,CAACK,UAAU,GAAGL,GAAA,CAAA;AACpB,GAAA,CAAA;AAEA,EAAA;IAAA3B,oBAAA,CAAAC,kBAAA,CAgCA,iiBAAA,EAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAA+B,MAAA;QAAA9B,QAAA;QAAA+B,YAAA;QAAAC,WAAA;QAAA/B,IAAA;AAAApB,QAAAA,GAAAA;AAAA,OAAA,CAAA;MAAAwB,UAAA,EAAA,IAAA;AAAU,KAAA,CAAA,EAAV,IAAW,CAAA,CAAA;AAAD,GAAA;AACZ;;;;"}
1
+ {"version":3,"file":"tabs.js","sources":["../../src/components/tabs.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { cached, tracked } from '@glimmer/tracking';\nimport { registerDestructor } from '@ember/destroyable';\nimport { hash, uniqueId } from '@ember/helper';\nimport { guidFor } from '@ember/object/internals';\nimport { next } from '@ember/runloop';\n\nimport { ariaTablist, type Orientation, type TablistBehavior } from 'ember-aria-voyager';\nimport { modifier } from 'ember-modifier';\nimport Portal from 'ember-stargate/components/portal';\nimport PortalTarget from 'ember-stargate/components/portal-target';\nimport { TrackedArray } from 'tracked-built-ins';\n\nimport styles from '@hokulea/core/controls.module.css';\n\nimport { eq, not } from '../-private/helpers.ts';\n\nimport type Owner from '@ember/owner';\nimport type { WithBoundArgs } from '@glint/template';\n\nexport const TabValue = Symbol('TabValue');\n\nconst attachValue = modifier((element, [value]) => {\n if (value) {\n // @ts-expect-error this is internal API\n element[TabValue] = value;\n }\n});\n\ninterface State {\n active: boolean;\n selected: boolean;\n}\n\ntype Item = string & {};\n\ntype TabSignature = {\n Element: HTMLDivElement;\n Args: {\n tablist: string;\n register: (tab: Tab) => void;\n unregister: (tab: Tab) => void;\n label?: string;\n value?: unknown;\n selection?: unknown;\n activeItem?: Item;\n };\n Blocks: {\n default?: [State];\n label?: [State];\n content?: [State];\n };\n};\n\nclass Tab extends Component<TabSignature> {\n constructor(owner: Owner, args: TabSignature['Args']) {\n super(owner, args);\n\n args.register(this);\n\n registerDestructor(this, () => {\n args.unregister(this);\n });\n }\n\n @cached\n get id() {\n return this.args.value ?? this.args.label ?? guidFor(this);\n }\n\n <template>\n {{#let\n (uniqueId) (hash active=(eq this.id @activeItem) selected=(eq this.id @selection))\n as |id state|\n }}\n <Portal @target={{@tablist}}>\n {{! template-lint-disable require-context-role }}\n <button\n type=\"button\"\n role=\"tab\"\n aria-controls={{id}}\n aria-selected={{if state.selected \"true\"}}\n id=\"{{id}}-label\"\n {{attachValue @value}}\n >\n <span>\n {{#if (has-block \"label\")}}\n {{yield state to=\"label\"}}\n {{else}}\n {{@label}}\n {{/if}}\n </span>\n </button>\n </Portal>\n\n <section\n id={{id}}\n role=\"tabpanel\"\n aria-labelledby=\"{{id}}-label\"\n local-class=\"content\"\n hidden={{not state.selected}}\n >\n {{#if (has-block \"content\")}}\n {{yield state to=\"content\"}}\n {{else}}\n {{yield state}}\n {{/if}}\n </section>\n {{/let}}\n </template>\n}\n\ninterface TabsSignature {\n Element: HTMLDivElement;\n Args: {\n disabled?: boolean;\n selection?: unknown;\n update?: (value: unknown) => void;\n behavior?: TablistBehavior;\n orientation?: Orientation;\n };\n Blocks: {\n default: [\n {\n Tab: WithBoundArgs<\n typeof Tab,\n 'selection' | 'activeItem' | 'tablist' | 'register' | 'unregister'\n >;\n }\n ];\n };\n}\n\nexport default class Tabs extends Component<TabsSignature> {\n @tracked tabs: Tab[] = new TrackedArray();\n @tracked internalSelection?: Tab;\n @tracked activeItem?: Item;\n\n get items() {\n return this.tabs.map((t) => t.id);\n }\n\n get selection() {\n return this.args.selection ?? this.internalSelection?.id;\n }\n\n register = (tab: Tab) => {\n // eslint-disable-next-line ember/no-runloop\n next(() => {\n this.tabs.push(tab);\n });\n };\n\n unregister = (tab: Tab) => {\n // eslint-disable-next-line ember/no-runloop\n next(() => {\n this.tabs.splice(this.tabs.indexOf(tab), 1);\n });\n };\n\n select = (id: Item) => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const tab = this.tabs.find((t) => t.id === id)!;\n\n this.internalSelection = tab;\n this.args.update?.(tab.args.value ?? tab.args.label ?? undefined);\n };\n\n activateItem = (id: Item) => {\n this.activeItem = id;\n };\n\n <template>\n <div class={{styles.tabs}} data-test-tabs>\n {{#let (uniqueId) as |tablistId|}}\n <PortalTarget\n @name={{tablistId}}\n @multiple={{true}}\n role=\"tablist\"\n {{ariaTablist\n items=this.items\n select=this.select\n selection=this.selection\n activateItem=this.activateItem\n disabled=@disabled\n behavior=@behavior\n orientation=@orientation\n }}\n />\n\n {{yield\n (hash\n Tab=(component\n Tab\n register=this.register\n unregister=this.unregister\n tablist=tablistId\n selection=this.selection\n activeItem=this.activeItem\n )\n )\n }}\n {{/let}}\n </div>\n </template>\n}\n"],"names":["TabValue","Symbol","attachValue","modifier","element","value","Tab","Component","constructor","owner","args","register","registerDestructor","unregister","id","label","guidFor","n","prototype","cached","setComponentTemplate","precompileTemplate","strictMode","scope","uniqueId","hash","eq","Portal","not","Tabs","g","tracked","TrackedArray","i","void 0","items","tabs","map","t","selection","internalSelection","tab","next","push","splice","indexOf","select","find","update","undefined","activateItem","activeItem","styles","PortalTarget","ariaTablist"],"mappings":"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"}