@public-ui/components 4.5.0-rc.4 → 4.5.0-rc.5

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 (516) hide show
  1. package/assets/kolicons/kolicons.eot +0 -0
  2. package/assets/kolicons/kolicons.ttf +0 -0
  3. package/assets/kolicons/kolicons.woff +0 -0
  4. package/assets/kolicons/kolicons.woff2 +0 -0
  5. package/assets/kolicons/style.css +6 -6
  6. package/custom-elements.json +1 -1
  7. package/dist/cjs/{Heading-CmJwWzTx.js → Heading-DG2wWECB.js} +3 -3
  8. package/dist/cjs/{Heading-CmJwWzTx.js.map → Heading-DG2wWECB.js.map} +1 -1
  9. package/dist/cjs/{api-CimiLGvb.js → api-8kjgnnU3.js} +8 -8
  10. package/dist/cjs/{api-CimiLGvb.js.map → api-8kjgnnU3.js.map} +1 -1
  11. package/dist/cjs/{api-CGIOreYK.js → api-C2rTkOz2.js} +12 -12
  12. package/dist/cjs/{api-CGIOreYK.js.map → api-C2rTkOz2.js.map} +1 -1
  13. package/dist/cjs/{app-globals-DXKl7Bxk.js → app-globals-B1xqi4rZ.js} +4 -4
  14. package/dist/cjs/{app-globals-DXKl7Bxk.js.map → app-globals-B1xqi4rZ.js.map} +1 -1
  15. package/dist/cjs/{base-3S-emPWZ.js → base-BMrlvKIO.js} +16 -16
  16. package/dist/cjs/{base-3S-emPWZ.js.map → base-BMrlvKIO.js.map} +1 -1
  17. package/dist/cjs/{base-BCEIzc57.js → base-Cea-xkFy.js} +5 -5
  18. package/dist/cjs/{base-BCEIzc57.js.map → base-Cea-xkFy.js.map} +1 -1
  19. package/dist/cjs/{base-DD2zVHk7.js → base-OMJLjz5u.js} +4 -4
  20. package/dist/cjs/{base-DD2zVHk7.js.map → base-OMJLjz5u.js.map} +1 -1
  21. package/dist/cjs/{base-web-component-8qVyDl6W.js → base-web-component-BCEKzbV3.js} +7 -7
  22. package/dist/cjs/{base-web-component-8qVyDl6W.js.map → base-web-component-BCEKzbV3.js.map} +1 -1
  23. package/dist/cjs/{base-web-component-CtQdH3PJ.js → base-web-component-CpH4iN97.js} +5 -5
  24. package/dist/cjs/{base-web-component-CtQdH3PJ.js.map → base-web-component-CpH4iN97.js.map} +1 -1
  25. package/dist/cjs/{base-CVLHbu6O.js → base-xR4eDUJg.js} +4 -4
  26. package/dist/cjs/{base-CVLHbu6O.js.map → base-xR4eDUJg.js.map} +1 -1
  27. package/dist/cjs/{behavior-B9JuvM3I.js → behavior-XywM4z8h.js} +3 -3
  28. package/dist/cjs/{behavior-B9JuvM3I.js.map → behavior-XywM4z8h.js.map} +1 -1
  29. package/dist/cjs/{component-CCZ7pXRv.js → component-04gQVLQ1.js} +4 -4
  30. package/dist/cjs/{component-CCZ7pXRv.js.map → component-04gQVLQ1.js.map} +1 -1
  31. package/dist/cjs/{component-B18PknAn.js → component-BB3YHW86.js} +3 -3
  32. package/dist/cjs/{component-B18PknAn.js.map → component-BB3YHW86.js.map} +1 -1
  33. package/dist/cjs/{component-GzpJi_tI.js → component-BLnwCgKh.js} +7 -7
  34. package/dist/cjs/{component-GzpJi_tI.js.map → component-BLnwCgKh.js.map} +1 -1
  35. package/dist/cjs/{component-BT9bnLTG.js → component-Bprn2Dws.js} +4 -4
  36. package/dist/cjs/{component-BT9bnLTG.js.map → component-Bprn2Dws.js.map} +1 -1
  37. package/dist/cjs/{component-B368JCB7.js → component-CJDDp8K2.js} +3 -3
  38. package/dist/cjs/{component-B368JCB7.js.map → component-CJDDp8K2.js.map} +1 -1
  39. package/dist/cjs/{component-D0N2WBmH.js → component-ClYrtAkb.js} +5 -5
  40. package/dist/cjs/{component-D0N2WBmH.js.map → component-ClYrtAkb.js.map} +1 -1
  41. package/dist/cjs/{component-BzMxgoHU.js → component-DAfsN5m4.js} +5 -5
  42. package/dist/cjs/{component-BzMxgoHU.js.map → component-DAfsN5m4.js.map} +1 -1
  43. package/dist/cjs/{component-BCFL2G_g.js → component-DDlbarYZ.js} +4 -4
  44. package/dist/cjs/{component-BCFL2G_g.js.map → component-DDlbarYZ.js.map} +1 -1
  45. package/dist/cjs/{component-DXv0HPeN.js → component-DlN2bfiT.js} +5 -5
  46. package/dist/cjs/{component-DXv0HPeN.js.map → component-DlN2bfiT.js.map} +1 -1
  47. package/dist/cjs/{component-DlgM4oEf.js → component-KIiCY2eY.js} +7 -7
  48. package/dist/cjs/{component-DlgM4oEf.js.map → component-KIiCY2eY.js.map} +1 -1
  49. package/dist/cjs/{component-CH432A4c.js → component-i9zUYU8M.js} +3 -3
  50. package/dist/cjs/{component-CH432A4c.js.map → component-i9zUYU8M.js.map} +1 -1
  51. package/dist/cjs/{component-C7NI5Iy5.js → component-sZUV7dBr.js} +3 -3
  52. package/dist/cjs/{component-C7NI5Iy5.js.map → component-sZUV7dBr.js.map} +1 -1
  53. package/dist/cjs/{dev.utils-BoFqqn8Y.js → dev.utils-BVqwixuA.js} +3 -3
  54. package/dist/cjs/{dev.utils-BoFqqn8Y.js.map → dev.utils-BVqwixuA.js.map} +1 -1
  55. package/dist/cjs/{devtools-C-m9X0nz.js → devtools-DxqqXOxW.js} +4 -4
  56. package/dist/cjs/{devtools-C-m9X0nz.js.map → devtools-DxqqXOxW.js.map} +1 -1
  57. package/dist/cjs/{field-control-MhWSen3X.js → field-control-CTOjt7vn.js} +8 -8
  58. package/dist/cjs/{field-control-MhWSen3X.js.map → field-control-CTOjt7vn.js.map} +1 -1
  59. package/dist/cjs/{group-7951SxEA.js → group-VoBXFtaB.js} +5 -5
  60. package/dist/cjs/{group-7951SxEA.js.map → group-VoBXFtaB.js.map} +1 -1
  61. package/dist/cjs/{index-DO9lYEcH.js → index-Dv7OF9AY.js} +3 -3
  62. package/dist/cjs/{index-DO9lYEcH.js.map → index-Dv7OF9AY.js.map} +1 -1
  63. package/dist/cjs/{input-DCNSFlzf.js → input-BeQNLD9x.js} +5 -5
  64. package/dist/cjs/{input-DCNSFlzf.js.map → input-BeQNLD9x.js.map} +1 -1
  65. package/dist/cjs/{input-container-AUYMUXlO.js → input-container-BXz_irj1.js} +7 -7
  66. package/dist/cjs/{input-container-AUYMUXlO.js.map → input-container-BXz_irj1.js.map} +1 -1
  67. package/dist/cjs/{item-C63M9WqZ.js → item-C_mVKQHN.js} +4 -4
  68. package/dist/cjs/{item-C63M9WqZ.js.map → item-C_mVKQHN.js.map} +1 -1
  69. package/dist/cjs/{item-CAtWa-Nr.js → item-Caz7PzHo.js} +4 -4
  70. package/dist/cjs/{item-CAtWa-Nr.js.map → item-Caz7PzHo.js.map} +1 -1
  71. package/dist/cjs/{item-CXS6hLg9.js → item-DksElMyT.js} +8 -8
  72. package/dist/cjs/{item-CXS6hLg9.js.map → item-DksElMyT.js.map} +1 -1
  73. package/dist/cjs/{item-BPM40Vsi.js → item-P6pvO7ia.js} +3 -3
  74. package/dist/cjs/{item-BPM40Vsi.js.map → item-P6pvO7ia.js.map} +1 -1
  75. package/dist/cjs/kol-abbr.cjs.entry.js +2 -2
  76. package/dist/cjs/kol-accordion.cjs.entry.js +7 -7
  77. package/dist/cjs/kol-alert.cjs.entry.js +11 -11
  78. package/dist/cjs/kol-avatar.cjs.entry.js +1 -1
  79. package/dist/cjs/kol-badge.cjs.entry.js +10 -10
  80. package/dist/cjs/kol-breadcrumb.cjs.entry.js +9 -9
  81. package/dist/cjs/kol-button-link.cjs.entry.js +10 -10
  82. package/dist/cjs/kol-button.cjs.entry.js +10 -10
  83. package/dist/cjs/kol-card.cjs.entry.js +11 -11
  84. package/dist/cjs/kol-click-button.cjs.entry.js +2 -2
  85. package/dist/cjs/kol-combobox.cjs.entry.js +18 -18
  86. package/dist/cjs/kol-details.cjs.entry.js +7 -7
  87. package/dist/cjs/kol-dialog.cjs.entry.js +13 -13
  88. package/dist/cjs/kol-drawer.cjs.entry.js +12 -12
  89. package/dist/cjs/kol-form.cjs.entry.js +12 -12
  90. package/dist/cjs/kol-heading.cjs.entry.js +1 -1
  91. package/dist/cjs/kol-icon.cjs.entry.js +3 -3
  92. package/dist/cjs/kol-image.cjs.entry.js +1 -1
  93. package/dist/cjs/kol-input-checkbox.cjs.entry.js +17 -17
  94. package/dist/cjs/kol-input-color.cjs.entry.js +18 -18
  95. package/dist/cjs/kol-input-date.cjs.entry.js +18 -18
  96. package/dist/cjs/kol-input-email.cjs.entry.js +20 -20
  97. package/dist/cjs/kol-input-file.cjs.entry.js +17 -17
  98. package/dist/cjs/kol-input-number.cjs.entry.js +18 -18
  99. package/dist/cjs/kol-input-password.cjs.entry.js +20 -20
  100. package/dist/cjs/kol-input-radio.cjs.entry.js +17 -17
  101. package/dist/cjs/kol-input-range.cjs.entry.js +18 -18
  102. package/dist/cjs/kol-input-text.cjs.entry.js +20 -20
  103. package/dist/cjs/kol-kolibri.cjs.entry.js +2 -2
  104. package/dist/cjs/kol-link-button.cjs.entry.js +10 -10
  105. package/dist/cjs/kol-link.cjs.entry.js +10 -10
  106. package/dist/cjs/kol-meter.cjs.entry.js +1 -1
  107. package/dist/cjs/kol-modal.cjs.entry.js +13 -13
  108. package/dist/cjs/kol-nav.cjs.entry.js +13 -13
  109. package/dist/cjs/kol-pagination.cjs.entry.js +18 -18
  110. package/dist/cjs/kol-popover-button.cjs.entry.js +11 -11
  111. package/dist/cjs/kol-progress.cjs.entry.js +1 -1
  112. package/dist/cjs/kol-quote.cjs.entry.js +1 -1
  113. package/dist/cjs/kol-select.cjs.entry.js +17 -17
  114. package/dist/cjs/kol-single-select.cjs.entry.js +18 -18
  115. package/dist/cjs/kol-skeleton.cjs.entry.js +2 -2
  116. package/dist/cjs/kol-skip-nav.cjs.entry.js +9 -9
  117. package/dist/cjs/kol-spin.cjs.entry.js +3 -3
  118. package/dist/cjs/kol-split-button.cjs.entry.js +12 -12
  119. package/dist/cjs/kol-table-stateful.cjs.entry.js +25 -25
  120. package/dist/cjs/kol-table-stateless.cjs.entry.js +19 -19
  121. package/dist/cjs/kol-tabs.cjs.entry.js +14 -26
  122. package/dist/cjs/kol-tabs.entry.cjs.js.map +1 -1
  123. package/dist/cjs/kol-textarea.cjs.entry.js +17 -17
  124. package/dist/cjs/kol-toast-container.cjs.entry.js +11 -11
  125. package/dist/cjs/kol-toolbar.cjs.entry.js +11 -11
  126. package/dist/cjs/kol-tooltip-wc.cjs.entry.js +4 -4
  127. package/dist/cjs/kol-tree-item.cjs.entry.js +9 -9
  128. package/dist/cjs/kol-tree.cjs.entry.js +1 -1
  129. package/dist/cjs/kol-version.cjs.entry.js +9 -9
  130. package/dist/cjs/kolibri.cjs.js +2 -2
  131. package/dist/cjs/loader.cjs.js +2 -2
  132. package/dist/cjs/{resolve-props-DrG_HqJv.js → resolve-props-DS3EE-fd.js} +3 -3
  133. package/dist/cjs/{resolve-props-DrG_HqJv.js.map → resolve-props-DS3EE-fd.js.map} +1 -1
  134. package/dist/cjs/{scroll-lock-oNylqons.js → scroll-lock-B8N6TEH3.js} +3 -3
  135. package/dist/cjs/{scroll-lock-oNylqons.js.map → scroll-lock-B8N6TEH3.js.map} +1 -1
  136. package/dist/cjs/{suggestions-Dtu6i-Ff.js → suggestions-CC1tzlom.js} +4 -4
  137. package/dist/cjs/{suggestions-Dtu6i-Ff.js.map → suggestions-CC1tzlom.js.map} +1 -1
  138. package/dist/cjs/test-component.cjs.entry.js +1 -1
  139. package/dist/cjs/{toggle-handler-CE-IOVjQ.js → toggle-handler-BzdKX5H6.js} +5 -5
  140. package/dist/cjs/{toggle-handler-CE-IOVjQ.js.map → toggle-handler-BzdKX5H6.js.map} +1 -1
  141. package/dist/collection/components/accordion/style.css +2 -2
  142. package/dist/collection/components/alert/style.css +2 -2
  143. package/dist/collection/components/badge/style.css +2 -2
  144. package/dist/collection/components/breadcrumb/style.css +2 -2
  145. package/dist/collection/components/button/style.css +2 -2
  146. package/dist/collection/components/button-link/style.css +2 -2
  147. package/dist/collection/components/card/style.css +2 -2
  148. package/dist/collection/components/combobox/style.css +2 -2
  149. package/dist/collection/components/details/style.css +2 -2
  150. package/dist/collection/components/dialog/style.css +2 -2
  151. package/dist/collection/components/drawer/style.css +2 -2
  152. package/dist/collection/components/form/style.css +2 -2
  153. package/dist/collection/components/icon/style.css +2 -2
  154. package/dist/collection/components/input-checkbox/style.css +2 -2
  155. package/dist/collection/components/input-color/style.css +2 -2
  156. package/dist/collection/components/input-date/style.css +2 -2
  157. package/dist/collection/components/input-email/style.css +2 -2
  158. package/dist/collection/components/input-file/style.css +2 -2
  159. package/dist/collection/components/input-number/style.css +2 -2
  160. package/dist/collection/components/input-password/style.css +2 -2
  161. package/dist/collection/components/input-radio/style.css +2 -2
  162. package/dist/collection/components/input-range/style.css +2 -2
  163. package/dist/collection/components/input-text/style.css +2 -2
  164. package/dist/collection/components/link/style.css +2 -2
  165. package/dist/collection/components/link-button/style.css +2 -2
  166. package/dist/collection/components/modal/style.css +2 -2
  167. package/dist/collection/components/nav/style.css +2 -2
  168. package/dist/collection/components/pagination/style.css +2 -2
  169. package/dist/collection/components/popover-button/style.css +2 -2
  170. package/dist/collection/components/select/style.css +2 -2
  171. package/dist/collection/components/single-select/style.css +2 -2
  172. package/dist/collection/components/skip-nav/style.css +2 -2
  173. package/dist/collection/components/split-button/style.css +2 -2
  174. package/dist/collection/components/table-stateful/style.css +2 -2
  175. package/dist/collection/components/table-stateless/style.css +2 -2
  176. package/dist/collection/components/tabs/component.js +5 -17
  177. package/dist/collection/components/tabs/component.js.map +1 -1
  178. package/dist/collection/components/tabs/style.css +2 -2
  179. package/dist/collection/components/textarea/style.css +2 -2
  180. package/dist/collection/components/toaster/style.css +2 -2
  181. package/dist/collection/components/toolbar/style.css +2 -2
  182. package/dist/collection/components/tree-item/style.css +2 -2
  183. package/dist/collection/components/version/style.css +2 -2
  184. package/dist/components/kol-accordion.js +1 -1
  185. package/dist/components/kol-alert.js +1 -1
  186. package/dist/components/kol-badge.js +1 -1
  187. package/dist/components/kol-breadcrumb.js +1 -1
  188. package/dist/components/kol-button-link.js +1 -1
  189. package/dist/components/kol-button.js +1 -1
  190. package/dist/components/kol-card.js +1 -1
  191. package/dist/components/kol-combobox.js +1 -1
  192. package/dist/components/kol-details.js +1 -1
  193. package/dist/components/kol-dialog.js +1 -1
  194. package/dist/components/kol-drawer.js +1 -1
  195. package/dist/components/kol-form.js +1 -1
  196. package/dist/components/kol-icon.js +1 -1
  197. package/dist/components/kol-input-checkbox.js +1 -1
  198. package/dist/components/kol-input-color.js +1 -1
  199. package/dist/components/kol-input-date.js +1 -1
  200. package/dist/components/kol-input-email.js +1 -1
  201. package/dist/components/kol-input-file.js +1 -1
  202. package/dist/components/kol-input-number.js +1 -1
  203. package/dist/components/kol-input-password.js +1 -1
  204. package/dist/components/kol-input-radio.js +1 -1
  205. package/dist/components/kol-input-range.js +1 -1
  206. package/dist/components/kol-input-text.js +1 -1
  207. package/dist/components/kol-link-button.js +1 -1
  208. package/dist/components/kol-link.js +1 -1
  209. package/dist/components/kol-modal.js +1 -1
  210. package/dist/components/kol-nav.js +1 -1
  211. package/dist/components/kol-pagination.js +1 -1
  212. package/dist/components/kol-popover-button.js +1 -1
  213. package/dist/components/kol-select.js +1 -1
  214. package/dist/components/kol-single-select.js +1 -1
  215. package/dist/components/kol-skip-nav.js +1 -1
  216. package/dist/components/kol-split-button.js +1 -1
  217. package/dist/components/kol-table-stateful.js +1 -1
  218. package/dist/components/kol-table-stateless.js +1 -1
  219. package/dist/components/kol-tabs.js +6 -18
  220. package/dist/components/kol-tabs.js.map +1 -1
  221. package/dist/components/kol-textarea.js +1 -1
  222. package/dist/components/kol-toast-container.js +1 -1
  223. package/dist/components/kol-toolbar.js +1 -1
  224. package/dist/components/kol-tree-item.js +1 -1
  225. package/dist/components/kol-version.js +1 -1
  226. package/dist/esm/{Heading-D2EH5Vz9.js → Heading-DAPZwXCt.js} +3 -3
  227. package/dist/esm/{Heading-D2EH5Vz9.js.map → Heading-DAPZwXCt.js.map} +1 -1
  228. package/dist/esm/{api-DScxu3ou.js → api-DueenSkb.js} +12 -12
  229. package/dist/{kolibri/api-DScxu3ou.js.map → esm/api-DueenSkb.js.map} +1 -1
  230. package/dist/esm/{api-CN_pBHgH.js → api-zFp24D1x.js} +8 -8
  231. package/dist/esm/{api-CN_pBHgH.js.map → api-zFp24D1x.js.map} +1 -1
  232. package/dist/esm/{app-globals-CddJRb3M.js → app-globals-CYRfyhVc.js} +4 -4
  233. package/dist/esm/{app-globals-CddJRb3M.js.map → app-globals-CYRfyhVc.js.map} +1 -1
  234. package/dist/esm/{base-DHBpPWDW.js → base-AvIGo8Mp.js} +16 -16
  235. package/dist/{kolibri/base-DHBpPWDW.js.map → esm/base-AvIGo8Mp.js.map} +1 -1
  236. package/dist/esm/{base-B4XSDJBd.js → base-BU2iT3jv.js} +5 -5
  237. package/dist/{kolibri/base-B4XSDJBd.js.map → esm/base-BU2iT3jv.js.map} +1 -1
  238. package/dist/esm/{base-DFtj5G32.js → base-BUu1gNpy.js} +4 -4
  239. package/dist/{kolibri/base-DFtj5G32.js.map → esm/base-BUu1gNpy.js.map} +1 -1
  240. package/dist/esm/{base-Jvi_AWqL.js → base-CjlYs5Fb.js} +4 -4
  241. package/dist/{kolibri/base-Jvi_AWqL.js.map → esm/base-CjlYs5Fb.js.map} +1 -1
  242. package/dist/esm/{base-web-component-D_VU8SGY.js → base-web-component-BEf83bnu.js} +7 -7
  243. package/dist/esm/{base-web-component-D_VU8SGY.js.map → base-web-component-BEf83bnu.js.map} +1 -1
  244. package/dist/esm/{base-web-component-t9oDjRt3.js → base-web-component-C2q-dSOg.js} +5 -5
  245. package/dist/esm/{base-web-component-t9oDjRt3.js.map → base-web-component-C2q-dSOg.js.map} +1 -1
  246. package/dist/esm/{behavior-Dpui_R-v.js → behavior-DCpLHoHs.js} +3 -3
  247. package/dist/{kolibri/behavior-Dpui_R-v.js.map → esm/behavior-DCpLHoHs.js.map} +1 -1
  248. package/dist/esm/{component-DSKwp72M.js → component-9XV7ykPK.js} +4 -4
  249. package/dist/{kolibri/component-DSKwp72M.js.map → esm/component-9XV7ykPK.js.map} +1 -1
  250. package/dist/esm/{component-BauANlCU.js → component-B5MUeex-.js} +3 -3
  251. package/dist/{kolibri/component-BauANlCU.js.map → esm/component-B5MUeex-.js.map} +1 -1
  252. package/dist/esm/{component-B5OmtChm.js → component-BR-6tKab.js} +3 -3
  253. package/dist/esm/{component-B5OmtChm.js.map → component-BR-6tKab.js.map} +1 -1
  254. package/dist/esm/{component-ArZwqu6c.js → component-Bj13sPTL.js} +4 -4
  255. package/dist/esm/{component-ArZwqu6c.js.map → component-Bj13sPTL.js.map} +1 -1
  256. package/dist/esm/{component-DWiKUdpa.js → component-BrOA7gRZ.js} +7 -7
  257. package/dist/esm/{component-DWiKUdpa.js.map → component-BrOA7gRZ.js.map} +1 -1
  258. package/dist/esm/{component-CoN6ZwTo.js → component-CQJ_jIZm.js} +7 -7
  259. package/dist/esm/{component-CoN6ZwTo.js.map → component-CQJ_jIZm.js.map} +1 -1
  260. package/dist/esm/{component-D6Z14V5i.js → component-Cqcw7JSO.js} +5 -5
  261. package/dist/{kolibri/component-D6Z14V5i.js.map → esm/component-Cqcw7JSO.js.map} +1 -1
  262. package/dist/esm/{component-GqGXpjMZ.js → component-Cy_xOMLd.js} +3 -3
  263. package/dist/esm/{component-GqGXpjMZ.js.map → component-Cy_xOMLd.js.map} +1 -1
  264. package/dist/esm/{component-6cLprNJZ.js → component-DCK-2RQ3.js} +3 -3
  265. package/dist/esm/{component-6cLprNJZ.js.map → component-DCK-2RQ3.js.map} +1 -1
  266. package/dist/esm/{component-D0Coq_zE.js → component-DRUoRfdO.js} +5 -5
  267. package/dist/{kolibri/component-D0Coq_zE.js.map → esm/component-DRUoRfdO.js.map} +1 -1
  268. package/dist/esm/{component-DbsunX7x.js → component-D_xOkOl6.js} +4 -4
  269. package/dist/{kolibri/component-DbsunX7x.js.map → esm/component-D_xOkOl6.js.map} +1 -1
  270. package/dist/esm/{component-CChFD3b2.js → component-Droc76Vh.js} +5 -5
  271. package/dist/{kolibri/component-CChFD3b2.js.map → esm/component-Droc76Vh.js.map} +1 -1
  272. package/dist/esm/{dev.utils-DVPKJwhh.js → dev.utils-CWEYl26B.js} +3 -3
  273. package/dist/{kolibri/dev.utils-DVPKJwhh.js.map → esm/dev.utils-CWEYl26B.js.map} +1 -1
  274. package/dist/esm/{devtools-Ctvg6SnM.js → devtools-BfiT_Mej.js} +4 -4
  275. package/dist/{kolibri/devtools-Ctvg6SnM.js.map → esm/devtools-BfiT_Mej.js.map} +1 -1
  276. package/dist/esm/{field-control-CJ-9C7AK.js → field-control-BvFIxA5C.js} +8 -8
  277. package/dist/{kolibri/field-control-CJ-9C7AK.js.map → esm/field-control-BvFIxA5C.js.map} +1 -1
  278. package/dist/esm/{group-6LOQ2Eed.js → group-DzNZiu3R.js} +5 -5
  279. package/dist/esm/{group-6LOQ2Eed.js.map → group-DzNZiu3R.js.map} +1 -1
  280. package/dist/esm/{index-BtYjJomD.js → index-CyLMYdnq.js} +3 -3
  281. package/dist/{kolibri/index-BtYjJomD.js.map → esm/index-CyLMYdnq.js.map} +1 -1
  282. package/dist/esm/{input-DispvARh.js → input-C55z9I-y.js} +5 -5
  283. package/dist/esm/{input-DispvARh.js.map → input-C55z9I-y.js.map} +1 -1
  284. package/dist/esm/{input-container-CVU5Y0-o.js → input-container-28E-ib9E.js} +7 -7
  285. package/dist/{kolibri/input-container-CVU5Y0-o.js.map → esm/input-container-28E-ib9E.js.map} +1 -1
  286. package/dist/esm/{item-BShglo-p.js → item-Bwz4OUrI.js} +4 -4
  287. package/dist/esm/{item-BShglo-p.js.map → item-Bwz4OUrI.js.map} +1 -1
  288. package/dist/esm/{item-CD8r4zxe.js → item-CuhPkC8A.js} +4 -4
  289. package/dist/esm/{item-CD8r4zxe.js.map → item-CuhPkC8A.js.map} +1 -1
  290. package/dist/esm/{item-Cj7w26xK.js → item-HQBfKHr0.js} +3 -3
  291. package/dist/esm/{item-Cj7w26xK.js.map → item-HQBfKHr0.js.map} +1 -1
  292. package/dist/esm/{item-CIIV_ncI.js → item-aP2OcbwT.js} +8 -8
  293. package/dist/esm/{item-CIIV_ncI.js.map → item-aP2OcbwT.js.map} +1 -1
  294. package/dist/esm/kol-abbr.entry.js +2 -2
  295. package/dist/esm/kol-accordion.entry.js +7 -7
  296. package/dist/esm/kol-alert.entry.js +11 -11
  297. package/dist/esm/kol-avatar.entry.js +1 -1
  298. package/dist/esm/kol-badge.entry.js +10 -10
  299. package/dist/esm/kol-breadcrumb.entry.js +9 -9
  300. package/dist/esm/kol-button-link.entry.js +10 -10
  301. package/dist/esm/kol-button.entry.js +10 -10
  302. package/dist/esm/kol-card.entry.js +11 -11
  303. package/dist/esm/kol-click-button.entry.js +2 -2
  304. package/dist/esm/kol-combobox.entry.js +18 -18
  305. package/dist/esm/kol-details.entry.js +7 -7
  306. package/dist/esm/kol-dialog.entry.js +13 -13
  307. package/dist/esm/kol-drawer.entry.js +12 -12
  308. package/dist/esm/kol-form.entry.js +12 -12
  309. package/dist/esm/kol-heading.entry.js +1 -1
  310. package/dist/esm/kol-icon.entry.js +3 -3
  311. package/dist/esm/kol-image.entry.js +1 -1
  312. package/dist/esm/kol-input-checkbox.entry.js +17 -17
  313. package/dist/esm/kol-input-color.entry.js +18 -18
  314. package/dist/esm/kol-input-date.entry.js +18 -18
  315. package/dist/esm/kol-input-email.entry.js +20 -20
  316. package/dist/esm/kol-input-file.entry.js +17 -17
  317. package/dist/esm/kol-input-number.entry.js +18 -18
  318. package/dist/esm/kol-input-password.entry.js +20 -20
  319. package/dist/esm/kol-input-radio.entry.js +17 -17
  320. package/dist/esm/kol-input-range.entry.js +18 -18
  321. package/dist/esm/kol-input-text.entry.js +20 -20
  322. package/dist/esm/kol-kolibri.entry.js +2 -2
  323. package/dist/esm/kol-link-button.entry.js +10 -10
  324. package/dist/esm/kol-link.entry.js +10 -10
  325. package/dist/esm/kol-meter.entry.js +1 -1
  326. package/dist/esm/kol-modal.entry.js +13 -13
  327. package/dist/esm/kol-nav.entry.js +13 -13
  328. package/dist/esm/kol-pagination.entry.js +18 -18
  329. package/dist/esm/kol-popover-button.entry.js +11 -11
  330. package/dist/esm/kol-progress.entry.js +1 -1
  331. package/dist/esm/kol-quote.entry.js +1 -1
  332. package/dist/esm/kol-select.entry.js +17 -17
  333. package/dist/esm/kol-single-select.entry.js +18 -18
  334. package/dist/esm/kol-skeleton.entry.js +2 -2
  335. package/dist/esm/kol-skip-nav.entry.js +9 -9
  336. package/dist/esm/kol-spin.entry.js +3 -3
  337. package/dist/esm/kol-split-button.entry.js +12 -12
  338. package/dist/esm/kol-table-stateful.entry.js +25 -25
  339. package/dist/esm/kol-table-stateless.entry.js +19 -19
  340. package/dist/esm/kol-tabs.entry.js +14 -26
  341. package/dist/esm/kol-tabs.entry.js.map +1 -1
  342. package/dist/esm/kol-textarea.entry.js +17 -17
  343. package/dist/esm/kol-toast-container.entry.js +11 -11
  344. package/dist/esm/kol-toolbar.entry.js +11 -11
  345. package/dist/esm/kol-tooltip-wc.entry.js +4 -4
  346. package/dist/esm/kol-tree-item.entry.js +9 -9
  347. package/dist/esm/kol-tree.entry.js +1 -1
  348. package/dist/esm/kol-version.entry.js +9 -9
  349. package/dist/esm/kolibri.js +3 -3
  350. package/dist/esm/loader.js +3 -3
  351. package/dist/esm/{resolve-props-USwvESw_.js → resolve-props-D0-62io3.js} +3 -3
  352. package/dist/{kolibri/resolve-props-USwvESw_.js.map → esm/resolve-props-D0-62io3.js.map} +1 -1
  353. package/dist/esm/{scroll-lock-CKJqGGmP.js → scroll-lock-DYMGa60u.js} +3 -3
  354. package/dist/{kolibri/scroll-lock-CKJqGGmP.js.map → esm/scroll-lock-DYMGa60u.js.map} +1 -1
  355. package/dist/esm/{suggestions-PclKnJ2U.js → suggestions-Cm-RWrWm.js} +4 -4
  356. package/dist/esm/{suggestions-PclKnJ2U.js.map → suggestions-Cm-RWrWm.js.map} +1 -1
  357. package/dist/esm/test-component.entry.js +1 -1
  358. package/dist/esm/{toggle-handler-BIUmTJk5.js → toggle-handler-D5L4pnQ5.js} +5 -5
  359. package/dist/esm/{toggle-handler-BIUmTJk5.js.map → toggle-handler-D5L4pnQ5.js.map} +1 -1
  360. package/dist/kolibri/Heading-DAPZwXCt.js +5 -0
  361. package/dist/kolibri/{Heading-D2EH5Vz9.js.map → Heading-DAPZwXCt.js.map} +1 -1
  362. package/dist/kolibri/api-DueenSkb.js +5 -0
  363. package/dist/{esm/api-DScxu3ou.js.map → kolibri/api-DueenSkb.js.map} +1 -1
  364. package/dist/kolibri/api-zFp24D1x.js +5 -0
  365. package/dist/kolibri/{api-CN_pBHgH.js.map → api-zFp24D1x.js.map} +1 -1
  366. package/dist/kolibri/app-globals-CYRfyhVc.js +5 -0
  367. package/dist/kolibri/{app-globals-CddJRb3M.js.map → app-globals-CYRfyhVc.js.map} +1 -1
  368. package/dist/kolibri/{base-DHBpPWDW.js → base-AvIGo8Mp.js} +2 -2
  369. package/dist/{esm/base-DHBpPWDW.js.map → kolibri/base-AvIGo8Mp.js.map} +1 -1
  370. package/dist/kolibri/{base-B4XSDJBd.js → base-BU2iT3jv.js} +2 -2
  371. package/dist/{esm/base-B4XSDJBd.js.map → kolibri/base-BU2iT3jv.js.map} +1 -1
  372. package/dist/kolibri/{base-DFtj5G32.js → base-BUu1gNpy.js} +2 -2
  373. package/dist/{esm/base-DFtj5G32.js.map → kolibri/base-BUu1gNpy.js.map} +1 -1
  374. package/dist/kolibri/base-CjlYs5Fb.js +5 -0
  375. package/dist/{esm/base-Jvi_AWqL.js.map → kolibri/base-CjlYs5Fb.js.map} +1 -1
  376. package/dist/kolibri/{base-web-component-D_VU8SGY.js → base-web-component-BEf83bnu.js} +2 -2
  377. package/dist/kolibri/{base-web-component-D_VU8SGY.js.map → base-web-component-BEf83bnu.js.map} +1 -1
  378. package/dist/kolibri/{base-web-component-t9oDjRt3.js → base-web-component-C2q-dSOg.js} +2 -2
  379. package/dist/kolibri/{base-web-component-t9oDjRt3.js.map → base-web-component-C2q-dSOg.js.map} +1 -1
  380. package/dist/kolibri/{behavior-Dpui_R-v.js → behavior-DCpLHoHs.js} +2 -2
  381. package/dist/{esm/behavior-Dpui_R-v.js.map → kolibri/behavior-DCpLHoHs.js.map} +1 -1
  382. package/dist/kolibri/{component-DSKwp72M.js → component-9XV7ykPK.js} +2 -2
  383. package/dist/{esm/component-DSKwp72M.js.map → kolibri/component-9XV7ykPK.js.map} +1 -1
  384. package/dist/kolibri/{component-BauANlCU.js → component-B5MUeex-.js} +2 -2
  385. package/dist/{esm/component-BauANlCU.js.map → kolibri/component-B5MUeex-.js.map} +1 -1
  386. package/dist/kolibri/component-BR-6tKab.js +5 -0
  387. package/dist/kolibri/{component-B5OmtChm.js.map → component-BR-6tKab.js.map} +1 -1
  388. package/dist/kolibri/{component-ArZwqu6c.js → component-Bj13sPTL.js} +2 -2
  389. package/dist/kolibri/{component-ArZwqu6c.js.map → component-Bj13sPTL.js.map} +1 -1
  390. package/dist/kolibri/component-BrOA7gRZ.js +5 -0
  391. package/dist/kolibri/{component-DWiKUdpa.js.map → component-BrOA7gRZ.js.map} +1 -1
  392. package/dist/kolibri/component-CQJ_jIZm.js +5 -0
  393. package/dist/kolibri/{component-CoN6ZwTo.js.map → component-CQJ_jIZm.js.map} +1 -1
  394. package/dist/kolibri/component-Cqcw7JSO.js +5 -0
  395. package/dist/{esm/component-D6Z14V5i.js.map → kolibri/component-Cqcw7JSO.js.map} +1 -1
  396. package/dist/kolibri/component-Cy_xOMLd.js +5 -0
  397. package/dist/kolibri/{component-GqGXpjMZ.js.map → component-Cy_xOMLd.js.map} +1 -1
  398. package/dist/kolibri/component-DCK-2RQ3.js +5 -0
  399. package/dist/kolibri/{component-6cLprNJZ.js.map → component-DCK-2RQ3.js.map} +1 -1
  400. package/dist/kolibri/{component-D0Coq_zE.js → component-DRUoRfdO.js} +2 -2
  401. package/dist/{esm/component-D0Coq_zE.js.map → kolibri/component-DRUoRfdO.js.map} +1 -1
  402. package/dist/kolibri/{component-DbsunX7x.js → component-D_xOkOl6.js} +2 -2
  403. package/dist/{esm/component-DbsunX7x.js.map → kolibri/component-D_xOkOl6.js.map} +1 -1
  404. package/dist/kolibri/{component-CChFD3b2.js → component-Droc76Vh.js} +2 -2
  405. package/dist/{esm/component-CChFD3b2.js.map → kolibri/component-Droc76Vh.js.map} +1 -1
  406. package/dist/kolibri/dev.utils-CWEYl26B.js +5 -0
  407. package/dist/{esm/dev.utils-DVPKJwhh.js.map → kolibri/dev.utils-CWEYl26B.js.map} +1 -1
  408. package/dist/kolibri/{devtools-Ctvg6SnM.js → devtools-BfiT_Mej.js} +2 -2
  409. package/dist/{esm/devtools-Ctvg6SnM.js.map → kolibri/devtools-BfiT_Mej.js.map} +1 -1
  410. package/dist/kolibri/field-control-BvFIxA5C.js +5 -0
  411. package/dist/{esm/field-control-CJ-9C7AK.js.map → kolibri/field-control-BvFIxA5C.js.map} +1 -1
  412. package/dist/kolibri/{group-6LOQ2Eed.js → group-DzNZiu3R.js} +2 -2
  413. package/dist/kolibri/{group-6LOQ2Eed.js.map → group-DzNZiu3R.js.map} +1 -1
  414. package/dist/kolibri/{index-BtYjJomD.js → index-CyLMYdnq.js} +2 -2
  415. package/dist/{esm/index-BtYjJomD.js.map → kolibri/index-CyLMYdnq.js.map} +1 -1
  416. package/dist/kolibri/input-C55z9I-y.js +5 -0
  417. package/dist/kolibri/{input-DispvARh.js.map → input-C55z9I-y.js.map} +1 -1
  418. package/dist/kolibri/{input-container-CVU5Y0-o.js → input-container-28E-ib9E.js} +2 -2
  419. package/dist/{esm/input-container-CVU5Y0-o.js.map → kolibri/input-container-28E-ib9E.js.map} +1 -1
  420. package/dist/kolibri/item-Bwz4OUrI.js +5 -0
  421. package/dist/kolibri/{item-BShglo-p.js.map → item-Bwz4OUrI.js.map} +1 -1
  422. package/dist/kolibri/item-CuhPkC8A.js +5 -0
  423. package/dist/kolibri/{item-CD8r4zxe.js.map → item-CuhPkC8A.js.map} +1 -1
  424. package/dist/kolibri/{item-Cj7w26xK.js → item-HQBfKHr0.js} +2 -2
  425. package/dist/kolibri/{item-Cj7w26xK.js.map → item-HQBfKHr0.js.map} +1 -1
  426. package/dist/kolibri/item-aP2OcbwT.js +5 -0
  427. package/dist/kolibri/{item-CIIV_ncI.js.map → item-aP2OcbwT.js.map} +1 -1
  428. package/dist/kolibri/kol-abbr.entry.js +1 -1
  429. package/dist/kolibri/kol-accordion.entry.js +1 -1
  430. package/dist/kolibri/kol-alert.entry.js +1 -1
  431. package/dist/kolibri/kol-avatar.entry.js +1 -1
  432. package/dist/kolibri/kol-badge.entry.js +1 -1
  433. package/dist/kolibri/kol-breadcrumb.entry.js +1 -1
  434. package/dist/kolibri/kol-button-link.entry.js +1 -1
  435. package/dist/kolibri/kol-button.entry.js +1 -1
  436. package/dist/kolibri/kol-card.entry.js +1 -1
  437. package/dist/kolibri/kol-click-button.entry.js +1 -1
  438. package/dist/kolibri/kol-combobox.entry.js +1 -1
  439. package/dist/kolibri/kol-combobox.entry.js.map +1 -1
  440. package/dist/kolibri/kol-details.entry.js +1 -1
  441. package/dist/kolibri/kol-dialog.entry.js +1 -1
  442. package/dist/kolibri/kol-drawer.entry.js +1 -1
  443. package/dist/kolibri/kol-form.entry.js +1 -1
  444. package/dist/kolibri/kol-heading.entry.js +1 -1
  445. package/dist/kolibri/kol-icon.entry.js +1 -1
  446. package/dist/kolibri/kol-image.entry.js +1 -1
  447. package/dist/kolibri/kol-input-checkbox.entry.js +1 -1
  448. package/dist/kolibri/kol-input-color.entry.js +1 -1
  449. package/dist/kolibri/kol-input-date.entry.js +1 -1
  450. package/dist/kolibri/kol-input-email.entry.js +1 -1
  451. package/dist/kolibri/kol-input-file.entry.js +1 -1
  452. package/dist/kolibri/kol-input-number.entry.js +1 -1
  453. package/dist/kolibri/kol-input-password.entry.js +1 -1
  454. package/dist/kolibri/kol-input-radio.entry.js +1 -1
  455. package/dist/kolibri/kol-input-radio.entry.js.map +1 -1
  456. package/dist/kolibri/kol-input-range.entry.js +1 -1
  457. package/dist/kolibri/kol-input-text.entry.js +1 -1
  458. package/dist/kolibri/kol-kolibri.entry.js +1 -1
  459. package/dist/kolibri/kol-link-button.entry.js +1 -1
  460. package/dist/kolibri/kol-link.entry.js +1 -1
  461. package/dist/kolibri/kol-meter.entry.js +1 -1
  462. package/dist/kolibri/kol-modal.entry.js +1 -1
  463. package/dist/kolibri/kol-nav.entry.js +1 -1
  464. package/dist/kolibri/kol-pagination.entry.js +1 -1
  465. package/dist/kolibri/kol-popover-button.entry.js +1 -1
  466. package/dist/kolibri/kol-progress.entry.js +1 -1
  467. package/dist/kolibri/kol-quote.entry.js +1 -1
  468. package/dist/kolibri/kol-select.entry.js +1 -1
  469. package/dist/kolibri/kol-single-select.entry.js +1 -1
  470. package/dist/kolibri/kol-single-select.entry.js.map +1 -1
  471. package/dist/kolibri/kol-skeleton.entry.js +1 -1
  472. package/dist/kolibri/kol-skeleton.entry.js.map +1 -1
  473. package/dist/kolibri/kol-skip-nav.entry.js +1 -1
  474. package/dist/kolibri/kol-spin.entry.js +1 -1
  475. package/dist/kolibri/kol-split-button.entry.js +1 -1
  476. package/dist/kolibri/kol-table-stateful.entry.js +1 -1
  477. package/dist/kolibri/kol-table-stateless.entry.js +1 -1
  478. package/dist/kolibri/kol-tabs.entry.esm.js.map +1 -1
  479. package/dist/kolibri/kol-tabs.entry.js +1 -1
  480. package/dist/kolibri/kol-tabs.entry.js.map +1 -1
  481. package/dist/kolibri/kol-textarea.entry.js +1 -1
  482. package/dist/kolibri/kol-toast-container.entry.js +1 -1
  483. package/dist/kolibri/kol-toolbar.entry.js +1 -1
  484. package/dist/kolibri/kol-tooltip-wc.entry.js +1 -1
  485. package/dist/kolibri/kol-tree-item.entry.js +1 -1
  486. package/dist/kolibri/kol-tree.entry.js +1 -1
  487. package/dist/kolibri/kol-version.entry.js +1 -1
  488. package/dist/kolibri/kolibri.esm.js +1 -1
  489. package/dist/kolibri/resolve-props-D0-62io3.js +5 -0
  490. package/dist/{esm/resolve-props-USwvESw_.js.map → kolibri/resolve-props-D0-62io3.js.map} +1 -1
  491. package/dist/kolibri/{scroll-lock-CKJqGGmP.js → scroll-lock-DYMGa60u.js} +2 -2
  492. package/dist/{esm/scroll-lock-CKJqGGmP.js.map → kolibri/scroll-lock-DYMGa60u.js.map} +1 -1
  493. package/dist/kolibri/{suggestions-PclKnJ2U.js → suggestions-Cm-RWrWm.js} +2 -2
  494. package/dist/kolibri/{suggestions-PclKnJ2U.js.map → suggestions-Cm-RWrWm.js.map} +1 -1
  495. package/dist/kolibri/test-component.entry.js +1 -1
  496. package/dist/kolibri/{toggle-handler-BIUmTJk5.js → toggle-handler-D5L4pnQ5.js} +2 -2
  497. package/dist/kolibri/{toggle-handler-BIUmTJk5.js.map → toggle-handler-D5L4pnQ5.js.map} +1 -1
  498. package/package.json +4 -4
  499. package/dist/kolibri/Heading-D2EH5Vz9.js +0 -5
  500. package/dist/kolibri/api-CN_pBHgH.js +0 -5
  501. package/dist/kolibri/api-DScxu3ou.js +0 -5
  502. package/dist/kolibri/app-globals-CddJRb3M.js +0 -5
  503. package/dist/kolibri/base-Jvi_AWqL.js +0 -5
  504. package/dist/kolibri/component-6cLprNJZ.js +0 -5
  505. package/dist/kolibri/component-B5OmtChm.js +0 -5
  506. package/dist/kolibri/component-CoN6ZwTo.js +0 -5
  507. package/dist/kolibri/component-D6Z14V5i.js +0 -5
  508. package/dist/kolibri/component-DWiKUdpa.js +0 -5
  509. package/dist/kolibri/component-GqGXpjMZ.js +0 -5
  510. package/dist/kolibri/dev.utils-DVPKJwhh.js +0 -5
  511. package/dist/kolibri/field-control-CJ-9C7AK.js +0 -5
  512. package/dist/kolibri/input-DispvARh.js +0 -5
  513. package/dist/kolibri/item-BShglo-p.js +0 -5
  514. package/dist/kolibri/item-CD8r4zxe.js +0 -5
  515. package/dist/kolibri/item-CIIV_ncI.js +0 -5
  516. package/dist/kolibri/resolve-props-USwvESw_.js +0 -5
@@ -1 +1 @@
1
- {"version":3,"file":"base-web-component-t9oDjRt3.js","sources":["src/schema/validators/options.ts","src/internal/props/options-with-optgroup.ts","src/internal/props/select-value.ts","src/internal/functional-components/select/api.tsx","src/internal/functional-components/form-field/select.tsx","src/internal/functional-components/form-field/select-value.ts","src/internal/functional-components/select/base-web-component.tsx"],"sourcesContent":["import { containsOnlyNumbers, hasEnoughReadableChars } from '../props';\nimport { a11yHint } from '../utils';\n\nimport type { Optgroup, SelectOption } from '../types';\nexport const validateInputSelectOptions = <T>(option: SelectOption<T>): boolean => {\n\tif (typeof option === 'object' && option !== null) {\n\t\tif (typeof option.label === 'string' && option.label.length > 0) {\n\t\t\toption.disabled = option.disabled === true;\n\t\t\toption.label = `${option.label}`.trim();\n\t\t\tif (hasEnoughReadableChars(option.label, 3) === false && containsOnlyNumbers(option.label) === false) {\n\t\t\t\ta11yHint(`A differing Aria-Label (${option.label}) is inaccessible. A differing Aria-Label should consist of at least three readable characters.`);\n\t\t\t}\n\t\t\tif (Array.isArray((option as Optgroup<T>).options)) {\n\t\t\t\treturn (\n\t\t\t\t\t(option as Optgroup<T>).options.find((item) => {\n\t\t\t\t\t\treturn validateInputSelectOptions(item) === false;\n\t\t\t\t\t}) === undefined\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn true;\n\t\t} else if (typeof option.label === 'number') {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n","import type { Optgroup, Option, OptionsWithOptgroupPropType, StencilUnknown } from '../../schema';\nimport { parseJson, validateInputSelectOptions } from '../../schema';\nimport type { Prop } from './helpers/factory';\nimport { createPropDefinition } from './helpers/factory';\n\nexport type SelectOptionsList = (Option<StencilUnknown> | Optgroup<StencilUnknown>)[];\n\n/**\n * Options prop for `kol-select`\n *\n * Description:\n * Options and optgroups, as an array or as a JSON string when it is passed through an HTML attribute.\n * Every option needs a non-empty string or a number as `label`; one invalid option rejects the whole\n * list. An empty string is rejected as well, because Stencil can pass it for an empty array.\n *\n * The validation is `validateInputSelectOptions` of the schema, which also normalizes each option in\n * place: `disabled` becomes a boolean and a string `label` is trimmed.\n */\nexport type OptionsWithOptgroupProp = Prop<'options', OptionsWithOptgroupPropType, SelectOptionsList>;\n\nfunction normalizeOptionsWithOptgroup(value: unknown): SelectOptionsList | never {\n\tconst parsed = typeof value === 'string' ? parseJson<unknown>(value) : value;\n\tif (Array.isArray(parsed) && parsed.every((option) => validateInputSelectOptions(option as Option<StencilUnknown>))) {\n\t\treturn parsed as SelectOptionsList;\n\t}\n\tthrow new Error('Invalid select options');\n}\n\nexport const optionsWithOptgroupProp = createPropDefinition<OptionsWithOptgroupProp>('options', [], normalizeOptionsWithOptgroup);\n","import type { StencilUnknown, Stringified } from '../../schema';\nimport type { Prop } from './helpers/factory';\nimport { createPropDefinition } from './helpers/factory';\n\n/**\n * Value prop of `kol-select`\n *\n * Description:\n * The selected values; a single value is wrapped into a list. A JSON string is not parsed, it is a\n * value of its own. The default is the empty list. `kol-select` keeps `null` as `[null]` instead of\n * applying this definition to it.\n */\nexport type SelectValueProp = Prop<'value', Stringified<StencilUnknown[]> | Stringified<StencilUnknown>, StencilUnknown[]>;\nexport const selectValueProp = createPropDefinition<SelectValueProp>('value', [], (value: unknown) =>\n\tArray.isArray(value) ? (value as StencilUnknown[]) : [value as StencilUnknown],\n);\n","import {\n\taccessKeyProp,\n\thorizontalIconsProp,\n\tmultipleProp,\n\toptionsWithOptgroupProp,\n\trequiredProp,\n\trowsProp,\n\tselectValueProp,\n\tshortKeyProp,\n\ttabIndexProp,\n\tvariantProp,\n} from '../../props';\nimport type { FormFieldBaseStates } from '../form-field/api';\nimport { formFieldBasePropsConfig } from '../form-field/api';\nimport type { ApiFromConfig, PropsConfigShape } from '../generic-types';\n\nexport const selectPropsConfig = {\n\trequired: [...formFieldBasePropsConfig.required],\n\toptional: [\n\t\t...formFieldBasePropsConfig.optional,\n\t\taccessKeyProp,\n\t\thorizontalIconsProp,\n\t\tmultipleProp,\n\t\toptionsWithOptgroupProp,\n\t\trequiredProp,\n\t\trowsProp,\n\t\tselectValueProp,\n\t\tshortKeyProp,\n\t\ttabIndexProp,\n\t\tvariantProp,\n\t],\n} as const satisfies PropsConfigShape;\n\nexport type SelectApi = ApiFromConfig<typeof selectPropsConfig, { States: FormFieldBaseStates }>;\n","import { Fragment, h, type FunctionalComponent as FC } from '@stencil/core';\nimport type { JSXBase } from '@stencil/core/internal';\nimport type { MsgPropType, SelectOption, StencilUnknown, Stringified, W3CInputValue } from '../../../schema';\nimport { getMsgType, isMsgDefinedAndInputTouched } from '../../../schema';\nimport clsx from '../../../utils/clsx';\nimport { getBlockBem } from '../bem-root-node/block-bem';\nimport type { DefaultInputProps } from './default-input-props';\nimport { getDefaultInputProps } from './default-input-props';\n\nconst selectBem = getBlockBem('kol-select');\n\ntype SelectAttributes = JSXBase.SelectHTMLAttributes<HTMLSelectElement>;\n\nexport type SelectOptionFCProps = Omit<JSXBase.OptionHTMLAttributes<HTMLOptionElement>, 'value' | 'label'> & {\n\t/** The value, or the list of values, of the selected options. */\n\tselectedValue?: StencilUnknown | StencilUnknown[];\n\tvalue: StencilUnknown;\n\tlabel: W3CInputValue;\n\t/** The key of the option, rendered as its native value; the field maps it back to `value`. */\n\tindex?: string | number;\n};\n\nexport type SelectOptionListFCProps = {\n\t/** Key prefix of the options in an optgroup. */\n\tpreKey?: string;\n\tdisabled?: boolean;\n\tvalue?: StencilUnknown | StencilUnknown[];\n\toptions?: SelectOption<StencilUnknown>[];\n\tOptionProps?: Omit<JSXBase.OptionHTMLAttributes<HTMLOptionElement>, 'value' | 'label'>;\n\tOptionGroupProps?: Omit<JSXBase.OptgroupHTMLAttributes<HTMLOptGroupElement>, 'label'>;\n};\n\nexport type SelectFCProps = DefaultInputProps<SelectAttributes> &\n\tSelectOptionListFCProps & {\n\t\ttouched?: boolean;\n\t\tmsg?: Stringified<MsgPropType>;\n\t} & {\n\t\t[key: `aria-${string}`]: unknown;\n\t\t[key: `data-${string}`]: unknown;\n\t};\n\n/**\n * Native `<option>`. Its native value is the key (`-<index>`, in an optgroup `-<group>-<index>`), not\n * the option value, because a native value can only be a string.\n */\nexport const SelectOptionFC: FC<SelectOptionFCProps> = ({ class: classNames, index, selectedValue, selected, value, label, disabled, ...other }) => {\n\tconst selectedValues = selectedValue === undefined ? [] : Array.isArray(selectedValue) ? selectedValue : [selectedValue];\n\tconst isSelected = selected || selectedValues.includes(value);\n\n\treturn (\n\t\t<option\n\t\t\tclass={clsx(selectBem('option', { selected: Boolean(isSelected), disabled: Boolean(disabled) }), classNames)}\n\t\t\tselected={isSelected}\n\t\t\tdisabled={disabled}\n\t\t\tvalue={index}\n\t\t\t{...other}\n\t\t>\n\t\t\t{label}\n\t\t</option>\n\t);\n};\n\n/** Options and optgroups of a native select, recursively; an optgroup prefixes the keys of its options. */\nexport const SelectOptionListFC: FC<SelectOptionListFCProps> = ({\n\tpreKey,\n\toptions,\n\tdisabled,\n\tvalue: selectedValue,\n\tOptionProps = {},\n\tOptionGroupProps = {},\n}) => {\n\tif (!options?.length) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{options.map((option, index) => {\n\t\t\t\tconst key = [preKey, `-${index}`].join('');\n\n\t\t\t\tif ('options' in option) {\n\t\t\t\t\tconst { label, ...other } = option;\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<optgroup\n\t\t\t\t\t\t\tclass={selectBem('optgroup', { disabled: Boolean(disabled) })}\n\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\t{...OptionGroupProps}\n\t\t\t\t\t\t\tlabel={label?.toString()}\n\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<SelectOptionListFC OptionGroupProps={OptionGroupProps} OptionProps={OptionProps} value={selectedValue} preKey={key} {...other} />\n\t\t\t\t\t\t</optgroup>\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif ('value' in option) {\n\t\t\t\t\treturn <SelectOptionFC key={key} {...OptionProps} index={key} selectedValue={selectedValue} {...option} />;\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\t\t\t})}\n\t\t</>\n\t);\n};\n\n/**\n * Native `<select>` of a form field with its options. The select itself is the root of the\n * `kol-select` block, so the block classes are set on it directly instead of through `BemRootNodeFC`.\n */\nexport const SelectFC: FC<SelectFCProps> = (props) => {\n\tconst {\n\t\tclass: classNames,\n\t\tmsg,\n\t\ttouched,\n\t\tdisabled,\n\t\trequired,\n\t\toptions,\n\t\tvalue,\n\t\tOptionProps,\n\t\tOptionGroupProps,\n\t\tariaDescribedBy,\n\t\thideLabel,\n\t\tlabel,\n\t\t...other\n\t} = props;\n\n\tconst selectProps: SelectAttributes = {\n\t\tclass: clsx(\n\t\t\tselectBem({\n\t\t\t\tdisabled: Boolean(disabled),\n\t\t\t\trequired: Boolean(required),\n\t\t\t\ttouched: Boolean(touched),\n\t\t\t\t...(isMsgDefinedAndInputTouched(msg, touched) ? { [getMsgType(msg) as string]: true } : {}),\n\t\t\t}),\n\t\t\tclassNames,\n\t\t),\n\t\trequired: required,\n\t\tdisabled: disabled,\n\t\t...getDefaultInputProps({ ariaDescribedBy, hideLabel, label }),\n\t\t...other,\n\t};\n\n\treturn (\n\t\t<select {...selectProps}>\n\t\t\t<SelectOptionListFC options={options} value={value} OptionGroupProps={OptionGroupProps} OptionProps={OptionProps} />\n\t\t</select>\n\t);\n};\n","import type { Option, StencilUnknown } from '../../../schema';\nimport type { SelectOptionsList } from '../../props/options-with-optgroup';\n\n/**\n * Throws when the shape of a `_value` does not match `_multiple`: a list in single mode, or a single\n * value in multiple mode. The field throws from its watcher, so the value is not applied. `source`\n * names the value in the message: the received value of a `_value` change, or the current value on\n * a `_multiple` change.\n */\nexport const assertSelectValueMatchesMultiplicity = (value: unknown, multiple: boolean, source: 'current' | 'received'): void => {\n\tconst isArray = Array.isArray(value);\n\n\tif (multiple) {\n\t\tif (value !== undefined && !isArray) {\n\t\t\tthrow new Error(\n\t\t\t\t`↑ The schema for the property (_value) is not valid for multiple mode. Expected an array. The value will not be changed. (${source} = ${JSON.stringify(value)})`,\n\t\t\t);\n\t\t}\n\t} else if (isArray) {\n\t\tthrow new Error(\n\t\t\t`↑ The schema for the property (_value) is not valid for single mode. Expected a single value. The value will not be changed. (${source} = ${JSON.stringify(value)})`,\n\t\t);\n\t}\n};\n\n/** The options of the list, with the options of each optgroup in place of the optgroup. */\nconst flattenSelectOptions = (options: SelectOptionsList): Option<StencilUnknown>[] =>\n\toptions.flatMap((entry) => ('options' in entry && Array.isArray(entry.options) ? flattenSelectOptions(entry.options) : [entry as Option<StencilUnknown>]));\n\n/**\n * Keeps only the values that belong to an option. Then, in single mode (`multiple === false`, not\n * merely falsy) without a value, the value becomes the value of the first enabled option, which is\n * the option the native select shows. Without options, the value is kept as it is, because the\n * options can follow the value.\n */\nexport const normalizeSelectValue = (value: StencilUnknown[], options: SelectOptionsList, multiple: boolean | undefined): StencilUnknown[] => {\n\tif (options.length === 0) {\n\t\treturn value;\n\t}\n\tconst flatOptions = flattenSelectOptions(options);\n\tconst optionValues = flatOptions.map((option) => option.value);\n\tconst filtered = value.every((item) => optionValues.includes(item)) ? value : value.filter((item) => optionValues.includes(item));\n\tif (multiple === false && filtered.length === 0) {\n\t\tconst firstEnabled = flatOptions.find((option) => option.disabled !== true);\n\t\treturn firstEnabled ? [firstEnabled.value] : filtered;\n\t}\n\treturn filtered;\n};\n","import { h, type JSX } from '@stencil/core';\nimport type {\n\tIconsHorizontalPropType,\n\tMultiplePropType,\n\tOption,\n\tOptionsWithOptgroupPropType,\n\tSelectOption,\n\tShortKeyPropType,\n\tStencilUnknown,\n\tStringified,\n\tVariantClassNamePropType,\n} from '../../../schema';\nimport { validateAccessAndShortKey } from '../../../schema/validators/access-and-short-key';\nimport clsx from '../../../utils/clsx';\nimport type { CtaRef } from '../../../utils/element-interaction';\nimport {\n\taccessKeyProp,\n\thorizontalIconsProp,\n\tmultipleProp,\n\toptionsWithOptgroupProp,\n\trequiredProp,\n\trowsProp,\n\tselectValueProp,\n\tshortKeyProp,\n\ttabIndexProp,\n\tvariantProp,\n} from '../../props';\nimport { getInputAdornments } from '../form-field/adornments';\nimport { BaseFormFieldWebComponent } from '../form-field/base-web-component';\nimport { FormFieldFC } from '../form-field/component';\nimport { InputContainerFC } from '../form-field/input-container';\nimport { fillKeyOptionMap } from '../form-field/options';\nimport type { SelectFCProps } from '../form-field/select';\nimport { SelectFC } from '../form-field/select';\nimport { assertSelectValueMatchesMultiplicity, normalizeSelectValue } from '../form-field/select-value';\nimport type { SelectApi } from './api';\n\n/**\n * Shared orchestrator implementation of `kol-select` and the page size select of the pagination\n * (`PageSizeSelect`): the option map, the value list and its normalization, the native select\n * events and the render.\n *\n * `kol-select` keeps what Stencil has to see in the component class itself (DD16).\n */\nexport abstract class BaseSelectWebComponent extends BaseFormFieldWebComponent<SelectApi> {\n\t/** Read for the multiplicity check and the first option preselection, like the raw prop. */\n\tpublic abstract _multiple?: boolean;\n\t/** Written on user input. */\n\tpublic abstract _value?: Stringified<StencilUnknown[]> | Stringified<StencilUnknown>;\n\n\tprotected abstract readonly ctaRef: CtaRef<HTMLSelectElement>;\n\n\t/** Option of each native option value (`-<index>`). */\n\tprivate readonly keyOptionMap = new Map<string, Option<StencilUnknown>>();\n\n\t/**\n\t * Whether the field has a value, for the class `kol-form-field--has-value`. It starts as `true`\n\t * and follows each `change`; it does not trigger a render of its own.\n\t */\n\tprivate hasValue = true;\n\n\t// --- Prop application (the concrete element's watchers delegate here) ---\n\n\tprotected applyAccessKey(value?: string): void {\n\t\taccessKeyProp.apply(value, (v) => this.setRenderProp('accessKey', v));\n\t\tvalidateAccessAndShortKey(value, this.getShortKeyProp());\n\t}\n\n\tprotected applyShortKey(value?: ShortKeyPropType): void {\n\t\tshortKeyProp.apply(value, (v) => this.setRenderProp('shortKey', v));\n\t\tvalidateAccessAndShortKey(this.getAccessKeyProp(), value);\n\t}\n\n\tprotected abstract getAccessKeyProp(): string | undefined;\n\tprotected abstract getShortKeyProp(): ShortKeyPropType | undefined;\n\n\tprotected applyIcons(value?: IconsHorizontalPropType): void {\n\t\thorizontalIconsProp.apply(value, (v) => this.setRenderProp('icons', v));\n\t}\n\n\tprotected applyMultiple(value?: MultiplePropType): void {\n\t\tassertSelectValueMatchesMultiplicity(this._value, value === true, 'current');\n\t\tmultipleProp.apply(value, (v) => {\n\t\t\tthis.setRenderProp('multiple', v);\n\t\t\tthis.setRenderProp('value', normalizeSelectValue(this.getRenderProp('value'), this.getRenderProp('options'), this._multiple));\n\t\t});\n\t}\n\n\t/** The option map keeps its entries while the list is empty. */\n\tprotected applyOptions(value?: OptionsWithOptgroupPropType): void {\n\t\toptionsWithOptgroupProp.apply(value, (v) => {\n\t\t\tthis.setRenderProp('options', v);\n\t\t\tif (v.length > 0) {\n\t\t\t\tthis.keyOptionMap.clear();\n\t\t\t\tfillKeyOptionMap(this.keyOptionMap, v as SelectOption<StencilUnknown>[]);\n\t\t\t\tthis.setRenderProp('value', normalizeSelectValue(this.getRenderProp('value'), v, this._multiple));\n\t\t\t}\n\t\t});\n\t}\n\n\tprotected applyRequired(value?: boolean): void {\n\t\trequiredProp.apply(value, (v) => this.setRenderProp('required', v));\n\t}\n\n\tprotected applyRows(value?: number): void {\n\t\trowsProp.apply(value, (v) => this.setRenderProp('rows', v));\n\t}\n\n\tprotected applyTabIndex(value?: number): void {\n\t\ttabIndexProp.apply(value, (v) => this.setRenderProp('tabIndex', v));\n\t}\n\n\t/**\n\t * A single value is wrapped into a list and `null` is kept as `[null]`. Only a `_value` change sets\n\t * the form value; the preselection on an `_options` or `_multiple` change does not.\n\t */\n\tprotected applyValue(value?: Stringified<StencilUnknown[]> | Stringified<StencilUnknown>): void {\n\t\tassertSelectValueMatchesMultiplicity(value, this._multiple === true, 'received');\n\t\tconst setValue = (list: StencilUnknown[]): void => {\n\t\t\tconst normalized = normalizeSelectValue(list, this.getRenderProp('options'), this._multiple);\n\t\t\tthis.setRenderProp('value', normalized);\n\t\t\tthis.formAssociation.setFormAssociatedValue(this.getModelValue());\n\t\t};\n\t\tif (value === null) {\n\t\t\tsetValue([null]);\n\t\t} else {\n\t\t\tselectValueProp.apply(value, setValue);\n\t\t}\n\t}\n\n\tprotected applyVariant(value?: VariantClassNamePropType): void {\n\t\tvariantProp.apply(value, (v) => this.setRenderProp('variant', v));\n\t}\n\n\t// --- Value ---\n\n\t/** The value list with `_multiple`, otherwise its first entry (the list itself when empty). */\n\tprotected getModelValue(): StencilUnknown[] | StencilUnknown {\n\t\tconst value = this.getRenderProp('value');\n\t\tif (this._multiple) {\n\t\t\treturn value;\n\t\t}\n\t\treturn Array.isArray(value) && value.length > 0 ? value[0] : value;\n\t}\n\n\t// --- Event handling of the native select ---\n\n\tprivate readonly handleSelectInput = (event: Event): void => {\n\t\tconst selectedValues = Array.from(this.ctaRef.el?.options || [])\n\t\t\t.filter((option) => option.selected)\n\t\t\t.map((option) => this.keyOptionMap.get(option.value)?.value);\n\n\t\tif (this._multiple) {\n\t\t\tthis._value = selectedValues;\n\t\t\tthis.handleInput(event, selectedValues);\n\t\t} else {\n\t\t\tconst singleValue: StencilUnknown = selectedValues.length > 0 ? selectedValues[0] : undefined;\n\t\t\tthis._value = singleValue as Stringified<StencilUnknown>;\n\t\t\tthis.handleInput(event, singleValue);\n\t\t}\n\t};\n\n\tprivate readonly handleSelectChange = (event: Event): void => {\n\t\tconst value = this._value as StencilUnknown;\n\t\tthis.handleChange(event, value);\n\t\tthis.hasValue = !!value;\n\t};\n\n\t// --- Render ---\n\n\tprivate getSelectProps(): SelectFCProps {\n\t\tconst { ariaDescribedBy, hasError } = this.getAria();\n\t\tconst multiple = this.getRenderProp('multiple');\n\t\tconst shortKey = this.getRenderProp('shortKey');\n\n\t\treturn {\n\t\t\tid: this.getState('id'),\n\t\t\thideLabel: this.getRenderProp('hideLabel'),\n\t\t\tlabel: this.getRenderProp('label'),\n\t\t\tvalue: this.getRenderProp('value'),\n\t\t\toptions: this.getRenderProp('options'),\n\t\t\taccessKey: this.getRenderProp('accessKey') || undefined,\n\t\t\tdisabled: this.getRenderProp('disabled'),\n\t\t\tname: this.getRenderProp('name') || undefined,\n\t\t\t'aria-invalid': hasError ? 'true' : undefined,\n\t\t\tariaDescribedBy,\n\t\t\tsize: multiple ? this.getRenderProp('rows') : undefined,\n\t\t\tmultiple,\n\t\t\trequired: this.getRenderProp('required'),\n\t\t\ttouched: this.getRenderProp('touched'),\n\t\t\tmsg: this.getRenderProp('msg'),\n\t\t\t...(shortKey ? { 'aria-keyshortcuts': shortKey } : {}),\n\t\t\tref: this.ctaRef,\n\t\t\tonBlur: this.handleBlur,\n\t\t\tonChange: this.handleSelectChange,\n\t\t\tonClick: this.handleClick,\n\t\t\tonFocus: this.handleFocus,\n\t\t\tonInput: this.handleSelectInput,\n\t\t\tonKeyDown: this.handleKeyDown,\n\t\t};\n\t}\n\n\tprotected renderSelectField(): JSX.Element {\n\t\tconst disabled = this.getRenderProp('disabled');\n\t\tconst { startAdornment, endAdornment } = getInputAdornments({ icons: this.getRenderProp('icons') });\n\n\t\treturn (\n\t\t\t<FormFieldFC\n\t\t\t\t{...this.getFormFieldProps({\n\t\t\t\t\tclass: clsx('kol-form-field-select', { 'kol-form-field--has-value': this.hasValue }),\n\t\t\t\t\taccessKey: this.getRenderProp('accessKey') || undefined,\n\t\t\t\t\tshortKey: this.getRenderProp('shortKey') || undefined,\n\t\t\t\t\trequired: this.getRenderProp('required'),\n\t\t\t\t\tvariant: this.getRenderProp('variant'),\n\t\t\t\t})}\n\t\t\t\tonClick={() => this.ctaRef.el?.focus()}\n\t\t\t>\n\t\t\t\t<InputContainerFC\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tmsg={this.getRenderProp('msg')}\n\t\t\t\t\ttouched={this.getRenderProp('touched')}\n\t\t\t\t\tstartAdornment={startAdornment}\n\t\t\t\t\tendAdornment={endAdornment}\n\t\t\t\t>\n\t\t\t\t\t<SelectFC {...this.getSelectProps()} />\n\t\t\t\t</InputContainerFC>\n\t\t\t</FormFieldFC>\n\t\t);\n\t}\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAIO,MAAM,0BAA0B,GAAG,CAAI,MAAuB,KAAa;IACjF,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE;AAClD,QAAA,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAChE,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,KAAK,IAAI;YAC1C,MAAM,CAAC,KAAK,GAAG,CAAG,EAAA,MAAM,CAAC,KAAK,CAAE,CAAA,CAAC,IAAI,EAAE;YACvC,IAAI,sBAAsB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,KAAK,IAAI,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE;AACrG,gBAAA,QAAQ,CAAC,CAA2B,wBAAA,EAAA,MAAM,CAAC,KAAK,CAAA,+FAAA,CAAiG,CAAC;;YAEnJ,IAAI,KAAK,CAAC,OAAO,CAAE,MAAsB,CAAC,OAAO,CAAC,EAAE;gBACnD,QACE,MAAsB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,KAAI;AAC7C,oBAAA,OAAO,0BAA0B,CAAC,IAAI,CAAC,KAAK,KAAK;AAClD,iBAAC,CAAC,KAAK,SAAS;;AAGlB,YAAA,OAAO,IAAI;;AACL,aAAA,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE;AAC5C,YAAA,OAAO,IAAI;;;AAGb,IAAA,OAAO,KAAK;AACb,CAAC;;ACLD,SAAS,4BAA4B,CAAC,KAAc,EAAA;AACnD,IAAA,MAAM,MAAM,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,SAAS,CAAU,KAAK,CAAC,GAAG,KAAK;IAC5E,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,0BAA0B,CAAC,MAAgC,CAAC,CAAC,EAAE;AACpH,QAAA,OAAO,MAA2B;;AAEnC,IAAA,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC;AAC1C;AAEO,MAAM,uBAAuB,GAAG,oBAAoB,CAA0B,SAAS,EAAE,EAAE,EAAE,4BAA4B,CAAC;;ACf1H,MAAM,eAAe,GAAG,oBAAoB,CAAkB,OAAO,EAAE,EAAE,EAAE,CAAC,KAAc,KAChG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAI,KAA0B,GAAG,CAAC,KAAuB,CAAC,CAC9E;;ACCY,MAAA,iBAAiB,GAAG;AAChC,IAAA,QAAQ,EAAE,CAAC,GAAG,wBAAwB,CAAC,QAAQ,CAAC;AAChD,IAAA,QAAQ,EAAE;QACT,GAAG,wBAAwB,CAAC,QAAQ;QACpC,aAAa;QACb,mBAAmB;QACnB,YAAY;QACZ,uBAAuB;QACvB,YAAY;QACZ,QAAQ;QACR,eAAe;QACf,YAAY;QACZ,YAAY;QACZ,WAAW;AACX,KAAA;;;ACrBF,MAAM,SAAS,GAAG,WAAW,CAAC,YAAY,CAAC;AAoCpC,MAAM,cAAc,GAA4B,CAAC,EAAuF,KAAI;QAA3F,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAA,GAAA,EAAY,EAAP,KAAK,GAAA,MAAA,CAAA,EAAA,EAArF,6EAAuF,CAAF;AAC5I,IAAA,MAAM,cAAc,GAAG,aAAa,KAAK,SAAS,GAAG,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,aAAa,GAAG,CAAC,aAAa,CAAC;IACxH,MAAM,UAAU,GAAG,QAAQ,IAAI,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC;IAE7D,QACC,4BACC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,EAC5G,QAAQ,EAAE,UAAU,EACpB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,EAAA,EACR,KAAK,CAER,EAAA,KAAK,CACE;AAEX,CAAC;AAGM,MAAM,kBAAkB,GAAgC,CAAC,EAC/D,MAAM,EACN,OAAO,EACP,QAAQ,EACR,KAAK,EAAE,aAAa,EACpB,WAAW,GAAG,EAAE,EAChB,gBAAgB,GAAG,EAAE,GACrB,KAAI;IACJ,IAAI,EAAC,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,MAAA,GAAA,MAAA,GAAA,OAAO,CAAE,MAAM,CAAA,EAAE;AACrB,QAAA,OAAO,IAAI;;AAGZ,IAAA,QACC,CACE,CAAA,QAAA,EAAA,IAAA,EAAA,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,KAAI;AAC9B,QAAA,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,CAAI,CAAA,EAAA,KAAK,CAAE,CAAA,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AAE1C,QAAA,IAAI,SAAS,IAAI,MAAM,EAAE;AACxB,YAAA,MAAM,EAAE,KAAK,EAAA,GAAe,MAAM,EAAhB,KAAK,GAAA,MAAA,CAAK,MAAM,EAA5B,CAAmB,OAAA,CAAA,CAAS;YAElC,QACC,CACC,CAAA,UAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,KAAK,EAAE,SAAS,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,EAC7D,GAAG,EAAE,GAAG,EACJ,EAAA,gBAAgB,EACpB,EAAA,KAAK,EAAE,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,MAAA,GAAA,MAAA,GAAL,KAAK,CAAE,QAAQ,EAAE,EACxB,QAAQ,EAAE,QAAQ,EAAA,CAAA,EAElB,CAAC,CAAA,kBAAkB,kBAAC,gBAAgB,EAAE,gBAAgB,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,IAAM,KAAK,CAAA,CAAI,CACxH;;AAIb,QAAA,IAAI,OAAO,IAAI,MAAM,EAAE;AACtB,YAAA,OAAO,EAAC,cAAc,EAAA,MAAA,CAAA,MAAA,CAAA,EAAC,GAAG,EAAE,GAAG,IAAM,WAAW,EAAA,EAAE,KAAK,EAAE,GAAG,EAAE,aAAa,EAAE,aAAa,EAAM,EAAA,MAAM,EAAI;;AAG3G,QAAA,OAAO,IAAI;KACX,CAAC,CACA;AAEL,CAAC;AAMM,MAAM,QAAQ,GAAsB,CAAC,KAAK,KAAI;AACpD,IAAA,MAAM,EACL,KAAK,EAAE,UAAU,EACjB,GAAG,EACH,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,KAAK,EACL,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,SAAS,EACT,KAAK,EAAA,GAEF,KAAK,EADL,KAAK,GACL,MAAA,CAAA,KAAK,EAdH,CAAA,OAAA,EAAA,KAAA,EAAA,SAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,OAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,OAAA,CAcL,CAAQ;IAET,MAAM,WAAW,GAChB,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,KAAK,EAAE,IAAI,CACV,SAAS,CAAA,MAAA,CAAA,MAAA,CAAA,EACR,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,EAC3B,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,EAC3B,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,EAAA,GACrB,2BAA2B,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,CAAW,GAAG,IAAI,EAAE,GAAG,EAAE,EAAC,CAC1F,EACF,UAAU,CACV,EACD,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EACf,EAAA,oBAAoB,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAC3D,EAAA,KAAK,CACR;AAED,IAAA,QACC,8BAAY,WAAW,CAAA,EACtB,CAAC,CAAA,kBAAkB,IAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,WAAW,EAAE,WAAW,EAAI,CAAA,CAC5G;AAEX,CAAC;;AC3IM,MAAM,oCAAoC,GAAG,CAAC,KAAc,EAAE,QAAiB,EAAE,MAA8B,KAAU;IAC/H,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;IAEpC,IAAI,QAAQ,EAAE;AACb,QAAA,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,OAAO,EAAE;AACpC,YAAA,MAAM,IAAI,KAAK,CACd,CAAA,0HAAA,EAA6H,MAAM,CAAM,GAAA,EAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA,CAAA,CAAG,CACjK;;;SAEI,IAAI,OAAO,EAAE;AACnB,QAAA,MAAM,IAAI,KAAK,CACd,CAAA,8HAAA,EAAiI,MAAM,CAAM,GAAA,EAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA,CAAA,CAAG,CACrK;;AAEH,CAAC;AAGD,MAAM,oBAAoB,GAAG,CAAC,OAA0B,KACvD,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,MAAM,SAAS,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAA+B,CAAC,CAAC,CAAC;AAQpJ,MAAM,oBAAoB,GAAG,CAAC,KAAuB,EAAE,OAA0B,EAAE,QAA6B,KAAsB;AAC5I,IAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AACzB,QAAA,OAAO,KAAK;;AAEb,IAAA,MAAM,WAAW,GAAG,oBAAoB,CAAC,OAAO,CAAC;AACjD,IAAA,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,CAAC;AAC9D,IAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjI,IAAI,QAAQ,KAAK,KAAK,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AAChD,QAAA,MAAM,YAAY,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC;AAC3E,QAAA,OAAO,YAAY,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,QAAQ;;AAEtD,IAAA,OAAO,QAAQ;AAChB,CAAC;;ACHK,MAAgB,sBAAuB,SAAQ,yBAAoC,CAAA;AAAzF,IAAA,WAAA,GAAA;;AASkB,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,GAAG,EAAkC;AAMjE,QAAA,IAAQ,CAAA,QAAA,GAAG,IAAI;AAwFN,QAAA,IAAA,CAAA,iBAAiB,GAAG,CAAC,KAAY,KAAU;;AAC3D,YAAA,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,CAAC,EAAE,0CAAE,OAAO,KAAI,EAAE;iBAC7D,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,QAAQ;iBAClC,GAAG,CAAC,CAAC,MAAM,KAAK,EAAA,IAAA,EAAA,CAAA,CAAA,OAAA,CAAA,EAAA,GAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,0CAAE,KAAK,CAAA,EAAA,CAAC;AAE7D,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AACnB,gBAAA,IAAI,CAAC,MAAM,GAAG,cAAc;AAC5B,gBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,cAAc,CAAC;;iBACjC;AACN,gBAAA,MAAM,WAAW,GAAmB,cAAc,CAAC,MAAM,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS;AAC7F,gBAAA,IAAI,CAAC,MAAM,GAAG,WAA0C;AACxD,gBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC;;AAEtC,SAAC;AAEgB,QAAA,IAAA,CAAA,kBAAkB,GAAG,CAAC,KAAY,KAAU;AAC5D,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAwB;AAC3C,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC;AAC/B,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK;AACxB,SAAC;;AAvGS,IAAA,cAAc,CAAC,KAAc,EAAA;AACtC,QAAA,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QACrE,yBAAyB,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;;AAG/C,IAAA,aAAa,CAAC,KAAwB,EAAA;AAC/C,QAAA,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QACnE,yBAAyB,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,KAAK,CAAC;;AAMhD,IAAA,UAAU,CAAC,KAA+B,EAAA;AACnD,QAAA,mBAAmB,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;;AAG9D,IAAA,aAAa,CAAC,KAAwB,EAAA;QAC/C,oCAAoC,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,KAAK,IAAI,EAAE,SAAS,CAAC;QAC5E,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,KAAI;AAC/B,YAAA,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,CAAC;YACjC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAC9H,SAAC,CAAC;;AAIO,IAAA,YAAY,CAAC,KAAmC,EAAA;QACzD,uBAAuB,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,KAAI;AAC1C,YAAA,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC;AAChC,YAAA,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AACjB,gBAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AACzB,gBAAA,gBAAgB,CAAC,IAAI,CAAC,YAAY,EAAE,CAAmC,CAAC;gBACxE,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;;AAEnG,SAAC,CAAC;;AAGO,IAAA,aAAa,CAAC,KAAe,EAAA;AACtC,QAAA,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;;AAG1D,IAAA,SAAS,CAAC,KAAc,EAAA;AACjC,QAAA,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;;AAGlD,IAAA,aAAa,CAAC,KAAc,EAAA;AACrC,QAAA,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;;AAO1D,IAAA,UAAU,CAAC,KAAmE,EAAA;QACvF,oCAAoC,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE,UAAU,CAAC;AAChF,QAAA,MAAM,QAAQ,GAAG,CAAC,IAAsB,KAAU;AACjD,YAAA,MAAM,UAAU,GAAG,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC;AAC5F,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,UAAU,CAAC;YACvC,IAAI,CAAC,eAAe,CAAC,sBAAsB,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;AAClE,SAAC;AACD,QAAA,IAAI,KAAK,KAAK,IAAI,EAAE;AACnB,YAAA,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;;aACV;AACN,YAAA,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC;;;AAI9B,IAAA,YAAY,CAAC,KAAgC,EAAA;AACtD,QAAA,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;;IAMxD,aAAa,GAAA;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;AACzC,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AACnB,YAAA,OAAO,KAAK;;QAEb,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK;;IA4B3D,cAAc,GAAA;QACrB,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;QAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;QAE/C,OACC,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EACvB,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAC1C,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAClC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAClC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EACtC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,SAAS,EACvD,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EACxC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,SAAS,EAC7C,cAAc,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,EAC7C,eAAe,EACf,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,SAAS,EACvD,QAAQ,EACR,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EACxC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EACtC,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,KAC1B,QAAQ,GAAG,EAAE,mBAAmB,EAAE,QAAQ,EAAE,GAAG,EAAE,MACrD,GAAG,EAAE,IAAI,CAAC,MAAM,EAChB,MAAM,EAAE,IAAI,CAAC,UAAU,EACvB,QAAQ,EAAE,IAAI,CAAC,kBAAkB,EACjC,OAAO,EAAE,IAAI,CAAC,WAAW,EACzB,OAAO,EAAE,IAAI,CAAC,WAAW,EACzB,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAC/B,SAAS,EAAE,IAAI,CAAC,aAAa,EAC5B,CAAA;;IAGO,iBAAiB,GAAA;QAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;AAC/C,QAAA,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,GAAG,kBAAkB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;AAEnG,QAAA,QACC,CAAC,CAAA,WAAW,oBACP,IAAI,CAAC,iBAAiB,CAAC;AAC1B,YAAA,KAAK,EAAE,IAAI,CAAC,uBAAuB,EAAE,EAAE,2BAA2B,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpF,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,SAAS;YACvD,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,SAAS;AACrD,YAAA,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;AACxC,YAAA,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;SACtC,CAAC,IACF,OAAO,EAAE,MAAK,UAAC,OAAA,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,CAAC,EAAE,0CAAE,KAAK,EAAE,CAAA,EAAA,EAAA,CAAA,EAEtC,CAAA,CAAC,gBAAgB,EAAA,EAChB,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAC9B,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EACtC,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,YAAY,EAAA,EAE1B,CAAC,CAAA,QAAQ,EAAK,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAI,CAAC,cAAc,EAAE,CAAI,CAAA,CACrB,CACN;;AAGhB;;;;"}
1
+ {"version":3,"file":"base-web-component-C2q-dSOg.js","sources":["src/schema/validators/options.ts","src/internal/props/options-with-optgroup.ts","src/internal/props/select-value.ts","src/internal/functional-components/select/api.tsx","src/internal/functional-components/form-field/select.tsx","src/internal/functional-components/form-field/select-value.ts","src/internal/functional-components/select/base-web-component.tsx"],"sourcesContent":["import { containsOnlyNumbers, hasEnoughReadableChars } from '../props';\nimport { a11yHint } from '../utils';\n\nimport type { Optgroup, SelectOption } from '../types';\nexport const validateInputSelectOptions = <T>(option: SelectOption<T>): boolean => {\n\tif (typeof option === 'object' && option !== null) {\n\t\tif (typeof option.label === 'string' && option.label.length > 0) {\n\t\t\toption.disabled = option.disabled === true;\n\t\t\toption.label = `${option.label}`.trim();\n\t\t\tif (hasEnoughReadableChars(option.label, 3) === false && containsOnlyNumbers(option.label) === false) {\n\t\t\t\ta11yHint(`A differing Aria-Label (${option.label}) is inaccessible. A differing Aria-Label should consist of at least three readable characters.`);\n\t\t\t}\n\t\t\tif (Array.isArray((option as Optgroup<T>).options)) {\n\t\t\t\treturn (\n\t\t\t\t\t(option as Optgroup<T>).options.find((item) => {\n\t\t\t\t\t\treturn validateInputSelectOptions(item) === false;\n\t\t\t\t\t}) === undefined\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn true;\n\t\t} else if (typeof option.label === 'number') {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n","import type { Optgroup, Option, OptionsWithOptgroupPropType, StencilUnknown } from '../../schema';\nimport { parseJson, validateInputSelectOptions } from '../../schema';\nimport type { Prop } from './helpers/factory';\nimport { createPropDefinition } from './helpers/factory';\n\nexport type SelectOptionsList = (Option<StencilUnknown> | Optgroup<StencilUnknown>)[];\n\n/**\n * Options prop for `kol-select`\n *\n * Description:\n * Options and optgroups, as an array or as a JSON string when it is passed through an HTML attribute.\n * Every option needs a non-empty string or a number as `label`; one invalid option rejects the whole\n * list. An empty string is rejected as well, because Stencil can pass it for an empty array.\n *\n * The validation is `validateInputSelectOptions` of the schema, which also normalizes each option in\n * place: `disabled` becomes a boolean and a string `label` is trimmed.\n */\nexport type OptionsWithOptgroupProp = Prop<'options', OptionsWithOptgroupPropType, SelectOptionsList>;\n\nfunction normalizeOptionsWithOptgroup(value: unknown): SelectOptionsList | never {\n\tconst parsed = typeof value === 'string' ? parseJson<unknown>(value) : value;\n\tif (Array.isArray(parsed) && parsed.every((option) => validateInputSelectOptions(option as Option<StencilUnknown>))) {\n\t\treturn parsed as SelectOptionsList;\n\t}\n\tthrow new Error('Invalid select options');\n}\n\nexport const optionsWithOptgroupProp = createPropDefinition<OptionsWithOptgroupProp>('options', [], normalizeOptionsWithOptgroup);\n","import type { StencilUnknown, Stringified } from '../../schema';\nimport type { Prop } from './helpers/factory';\nimport { createPropDefinition } from './helpers/factory';\n\n/**\n * Value prop of `kol-select`\n *\n * Description:\n * The selected values; a single value is wrapped into a list. A JSON string is not parsed, it is a\n * value of its own. The default is the empty list. `kol-select` keeps `null` as `[null]` instead of\n * applying this definition to it.\n */\nexport type SelectValueProp = Prop<'value', Stringified<StencilUnknown[]> | Stringified<StencilUnknown>, StencilUnknown[]>;\nexport const selectValueProp = createPropDefinition<SelectValueProp>('value', [], (value: unknown) =>\n\tArray.isArray(value) ? (value as StencilUnknown[]) : [value as StencilUnknown],\n);\n","import {\n\taccessKeyProp,\n\thorizontalIconsProp,\n\tmultipleProp,\n\toptionsWithOptgroupProp,\n\trequiredProp,\n\trowsProp,\n\tselectValueProp,\n\tshortKeyProp,\n\ttabIndexProp,\n\tvariantProp,\n} from '../../props';\nimport type { FormFieldBaseStates } from '../form-field/api';\nimport { formFieldBasePropsConfig } from '../form-field/api';\nimport type { ApiFromConfig, PropsConfigShape } from '../generic-types';\n\nexport const selectPropsConfig = {\n\trequired: [...formFieldBasePropsConfig.required],\n\toptional: [\n\t\t...formFieldBasePropsConfig.optional,\n\t\taccessKeyProp,\n\t\thorizontalIconsProp,\n\t\tmultipleProp,\n\t\toptionsWithOptgroupProp,\n\t\trequiredProp,\n\t\trowsProp,\n\t\tselectValueProp,\n\t\tshortKeyProp,\n\t\ttabIndexProp,\n\t\tvariantProp,\n\t],\n} as const satisfies PropsConfigShape;\n\nexport type SelectApi = ApiFromConfig<typeof selectPropsConfig, { States: FormFieldBaseStates }>;\n","import { Fragment, h, type FunctionalComponent as FC } from '@stencil/core';\nimport type { JSXBase } from '@stencil/core/internal';\nimport type { MsgPropType, SelectOption, StencilUnknown, Stringified, W3CInputValue } from '../../../schema';\nimport { getMsgType, isMsgDefinedAndInputTouched } from '../../../schema';\nimport clsx from '../../../utils/clsx';\nimport { getBlockBem } from '../bem-root-node/block-bem';\nimport type { DefaultInputProps } from './default-input-props';\nimport { getDefaultInputProps } from './default-input-props';\n\nconst selectBem = getBlockBem('kol-select');\n\ntype SelectAttributes = JSXBase.SelectHTMLAttributes<HTMLSelectElement>;\n\nexport type SelectOptionFCProps = Omit<JSXBase.OptionHTMLAttributes<HTMLOptionElement>, 'value' | 'label'> & {\n\t/** The value, or the list of values, of the selected options. */\n\tselectedValue?: StencilUnknown | StencilUnknown[];\n\tvalue: StencilUnknown;\n\tlabel: W3CInputValue;\n\t/** The key of the option, rendered as its native value; the field maps it back to `value`. */\n\tindex?: string | number;\n};\n\nexport type SelectOptionListFCProps = {\n\t/** Key prefix of the options in an optgroup. */\n\tpreKey?: string;\n\tdisabled?: boolean;\n\tvalue?: StencilUnknown | StencilUnknown[];\n\toptions?: SelectOption<StencilUnknown>[];\n\tOptionProps?: Omit<JSXBase.OptionHTMLAttributes<HTMLOptionElement>, 'value' | 'label'>;\n\tOptionGroupProps?: Omit<JSXBase.OptgroupHTMLAttributes<HTMLOptGroupElement>, 'label'>;\n};\n\nexport type SelectFCProps = DefaultInputProps<SelectAttributes> &\n\tSelectOptionListFCProps & {\n\t\ttouched?: boolean;\n\t\tmsg?: Stringified<MsgPropType>;\n\t} & {\n\t\t[key: `aria-${string}`]: unknown;\n\t\t[key: `data-${string}`]: unknown;\n\t};\n\n/**\n * Native `<option>`. Its native value is the key (`-<index>`, in an optgroup `-<group>-<index>`), not\n * the option value, because a native value can only be a string.\n */\nexport const SelectOptionFC: FC<SelectOptionFCProps> = ({ class: classNames, index, selectedValue, selected, value, label, disabled, ...other }) => {\n\tconst selectedValues = selectedValue === undefined ? [] : Array.isArray(selectedValue) ? selectedValue : [selectedValue];\n\tconst isSelected = selected || selectedValues.includes(value);\n\n\treturn (\n\t\t<option\n\t\t\tclass={clsx(selectBem('option', { selected: Boolean(isSelected), disabled: Boolean(disabled) }), classNames)}\n\t\t\tselected={isSelected}\n\t\t\tdisabled={disabled}\n\t\t\tvalue={index}\n\t\t\t{...other}\n\t\t>\n\t\t\t{label}\n\t\t</option>\n\t);\n};\n\n/** Options and optgroups of a native select, recursively; an optgroup prefixes the keys of its options. */\nexport const SelectOptionListFC: FC<SelectOptionListFCProps> = ({\n\tpreKey,\n\toptions,\n\tdisabled,\n\tvalue: selectedValue,\n\tOptionProps = {},\n\tOptionGroupProps = {},\n}) => {\n\tif (!options?.length) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{options.map((option, index) => {\n\t\t\t\tconst key = [preKey, `-${index}`].join('');\n\n\t\t\t\tif ('options' in option) {\n\t\t\t\t\tconst { label, ...other } = option;\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<optgroup\n\t\t\t\t\t\t\tclass={selectBem('optgroup', { disabled: Boolean(disabled) })}\n\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\t{...OptionGroupProps}\n\t\t\t\t\t\t\tlabel={label?.toString()}\n\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<SelectOptionListFC OptionGroupProps={OptionGroupProps} OptionProps={OptionProps} value={selectedValue} preKey={key} {...other} />\n\t\t\t\t\t\t</optgroup>\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif ('value' in option) {\n\t\t\t\t\treturn <SelectOptionFC key={key} {...OptionProps} index={key} selectedValue={selectedValue} {...option} />;\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\t\t\t})}\n\t\t</>\n\t);\n};\n\n/**\n * Native `<select>` of a form field with its options. The select itself is the root of the\n * `kol-select` block, so the block classes are set on it directly instead of through `BemRootNodeFC`.\n */\nexport const SelectFC: FC<SelectFCProps> = (props) => {\n\tconst {\n\t\tclass: classNames,\n\t\tmsg,\n\t\ttouched,\n\t\tdisabled,\n\t\trequired,\n\t\toptions,\n\t\tvalue,\n\t\tOptionProps,\n\t\tOptionGroupProps,\n\t\tariaDescribedBy,\n\t\thideLabel,\n\t\tlabel,\n\t\t...other\n\t} = props;\n\n\tconst selectProps: SelectAttributes = {\n\t\tclass: clsx(\n\t\t\tselectBem({\n\t\t\t\tdisabled: Boolean(disabled),\n\t\t\t\trequired: Boolean(required),\n\t\t\t\ttouched: Boolean(touched),\n\t\t\t\t...(isMsgDefinedAndInputTouched(msg, touched) ? { [getMsgType(msg) as string]: true } : {}),\n\t\t\t}),\n\t\t\tclassNames,\n\t\t),\n\t\trequired: required,\n\t\tdisabled: disabled,\n\t\t...getDefaultInputProps({ ariaDescribedBy, hideLabel, label }),\n\t\t...other,\n\t};\n\n\treturn (\n\t\t<select {...selectProps}>\n\t\t\t<SelectOptionListFC options={options} value={value} OptionGroupProps={OptionGroupProps} OptionProps={OptionProps} />\n\t\t</select>\n\t);\n};\n","import type { Option, StencilUnknown } from '../../../schema';\nimport type { SelectOptionsList } from '../../props/options-with-optgroup';\n\n/**\n * Throws when the shape of a `_value` does not match `_multiple`: a list in single mode, or a single\n * value in multiple mode. The field throws from its watcher, so the value is not applied. `source`\n * names the value in the message: the received value of a `_value` change, or the current value on\n * a `_multiple` change.\n */\nexport const assertSelectValueMatchesMultiplicity = (value: unknown, multiple: boolean, source: 'current' | 'received'): void => {\n\tconst isArray = Array.isArray(value);\n\n\tif (multiple) {\n\t\tif (value !== undefined && !isArray) {\n\t\t\tthrow new Error(\n\t\t\t\t`↑ The schema for the property (_value) is not valid for multiple mode. Expected an array. The value will not be changed. (${source} = ${JSON.stringify(value)})`,\n\t\t\t);\n\t\t}\n\t} else if (isArray) {\n\t\tthrow new Error(\n\t\t\t`↑ The schema for the property (_value) is not valid for single mode. Expected a single value. The value will not be changed. (${source} = ${JSON.stringify(value)})`,\n\t\t);\n\t}\n};\n\n/** The options of the list, with the options of each optgroup in place of the optgroup. */\nconst flattenSelectOptions = (options: SelectOptionsList): Option<StencilUnknown>[] =>\n\toptions.flatMap((entry) => ('options' in entry && Array.isArray(entry.options) ? flattenSelectOptions(entry.options) : [entry as Option<StencilUnknown>]));\n\n/**\n * Keeps only the values that belong to an option. Then, in single mode (`multiple === false`, not\n * merely falsy) without a value, the value becomes the value of the first enabled option, which is\n * the option the native select shows. Without options, the value is kept as it is, because the\n * options can follow the value.\n */\nexport const normalizeSelectValue = (value: StencilUnknown[], options: SelectOptionsList, multiple: boolean | undefined): StencilUnknown[] => {\n\tif (options.length === 0) {\n\t\treturn value;\n\t}\n\tconst flatOptions = flattenSelectOptions(options);\n\tconst optionValues = flatOptions.map((option) => option.value);\n\tconst filtered = value.every((item) => optionValues.includes(item)) ? value : value.filter((item) => optionValues.includes(item));\n\tif (multiple === false && filtered.length === 0) {\n\t\tconst firstEnabled = flatOptions.find((option) => option.disabled !== true);\n\t\treturn firstEnabled ? [firstEnabled.value] : filtered;\n\t}\n\treturn filtered;\n};\n","import { h, type JSX } from '@stencil/core';\nimport type {\n\tIconsHorizontalPropType,\n\tMultiplePropType,\n\tOption,\n\tOptionsWithOptgroupPropType,\n\tSelectOption,\n\tShortKeyPropType,\n\tStencilUnknown,\n\tStringified,\n\tVariantClassNamePropType,\n} from '../../../schema';\nimport { validateAccessAndShortKey } from '../../../schema/validators/access-and-short-key';\nimport clsx from '../../../utils/clsx';\nimport type { CtaRef } from '../../../utils/element-interaction';\nimport {\n\taccessKeyProp,\n\thorizontalIconsProp,\n\tmultipleProp,\n\toptionsWithOptgroupProp,\n\trequiredProp,\n\trowsProp,\n\tselectValueProp,\n\tshortKeyProp,\n\ttabIndexProp,\n\tvariantProp,\n} from '../../props';\nimport { getInputAdornments } from '../form-field/adornments';\nimport { BaseFormFieldWebComponent } from '../form-field/base-web-component';\nimport { FormFieldFC } from '../form-field/component';\nimport { InputContainerFC } from '../form-field/input-container';\nimport { fillKeyOptionMap } from '../form-field/options';\nimport type { SelectFCProps } from '../form-field/select';\nimport { SelectFC } from '../form-field/select';\nimport { assertSelectValueMatchesMultiplicity, normalizeSelectValue } from '../form-field/select-value';\nimport type { SelectApi } from './api';\n\n/**\n * Shared orchestrator implementation of `kol-select` and the page size select of the pagination\n * (`PageSizeSelect`): the option map, the value list and its normalization, the native select\n * events and the render.\n *\n * `kol-select` keeps what Stencil has to see in the component class itself (DD16).\n */\nexport abstract class BaseSelectWebComponent extends BaseFormFieldWebComponent<SelectApi> {\n\t/** Read for the multiplicity check and the first option preselection, like the raw prop. */\n\tpublic abstract _multiple?: boolean;\n\t/** Written on user input. */\n\tpublic abstract _value?: Stringified<StencilUnknown[]> | Stringified<StencilUnknown>;\n\n\tprotected abstract readonly ctaRef: CtaRef<HTMLSelectElement>;\n\n\t/** Option of each native option value (`-<index>`). */\n\tprivate readonly keyOptionMap = new Map<string, Option<StencilUnknown>>();\n\n\t/**\n\t * Whether the field has a value, for the class `kol-form-field--has-value`. It starts as `true`\n\t * and follows each `change`; it does not trigger a render of its own.\n\t */\n\tprivate hasValue = true;\n\n\t// --- Prop application (the concrete element's watchers delegate here) ---\n\n\tprotected applyAccessKey(value?: string): void {\n\t\taccessKeyProp.apply(value, (v) => this.setRenderProp('accessKey', v));\n\t\tvalidateAccessAndShortKey(value, this.getShortKeyProp());\n\t}\n\n\tprotected applyShortKey(value?: ShortKeyPropType): void {\n\t\tshortKeyProp.apply(value, (v) => this.setRenderProp('shortKey', v));\n\t\tvalidateAccessAndShortKey(this.getAccessKeyProp(), value);\n\t}\n\n\tprotected abstract getAccessKeyProp(): string | undefined;\n\tprotected abstract getShortKeyProp(): ShortKeyPropType | undefined;\n\n\tprotected applyIcons(value?: IconsHorizontalPropType): void {\n\t\thorizontalIconsProp.apply(value, (v) => this.setRenderProp('icons', v));\n\t}\n\n\tprotected applyMultiple(value?: MultiplePropType): void {\n\t\tassertSelectValueMatchesMultiplicity(this._value, value === true, 'current');\n\t\tmultipleProp.apply(value, (v) => {\n\t\t\tthis.setRenderProp('multiple', v);\n\t\t\tthis.setRenderProp('value', normalizeSelectValue(this.getRenderProp('value'), this.getRenderProp('options'), this._multiple));\n\t\t});\n\t}\n\n\t/** The option map keeps its entries while the list is empty. */\n\tprotected applyOptions(value?: OptionsWithOptgroupPropType): void {\n\t\toptionsWithOptgroupProp.apply(value, (v) => {\n\t\t\tthis.setRenderProp('options', v);\n\t\t\tif (v.length > 0) {\n\t\t\t\tthis.keyOptionMap.clear();\n\t\t\t\tfillKeyOptionMap(this.keyOptionMap, v as SelectOption<StencilUnknown>[]);\n\t\t\t\tthis.setRenderProp('value', normalizeSelectValue(this.getRenderProp('value'), v, this._multiple));\n\t\t\t}\n\t\t});\n\t}\n\n\tprotected applyRequired(value?: boolean): void {\n\t\trequiredProp.apply(value, (v) => this.setRenderProp('required', v));\n\t}\n\n\tprotected applyRows(value?: number): void {\n\t\trowsProp.apply(value, (v) => this.setRenderProp('rows', v));\n\t}\n\n\tprotected applyTabIndex(value?: number): void {\n\t\ttabIndexProp.apply(value, (v) => this.setRenderProp('tabIndex', v));\n\t}\n\n\t/**\n\t * A single value is wrapped into a list and `null` is kept as `[null]`. Only a `_value` change sets\n\t * the form value; the preselection on an `_options` or `_multiple` change does not.\n\t */\n\tprotected applyValue(value?: Stringified<StencilUnknown[]> | Stringified<StencilUnknown>): void {\n\t\tassertSelectValueMatchesMultiplicity(value, this._multiple === true, 'received');\n\t\tconst setValue = (list: StencilUnknown[]): void => {\n\t\t\tconst normalized = normalizeSelectValue(list, this.getRenderProp('options'), this._multiple);\n\t\t\tthis.setRenderProp('value', normalized);\n\t\t\tthis.formAssociation.setFormAssociatedValue(this.getModelValue());\n\t\t};\n\t\tif (value === null) {\n\t\t\tsetValue([null]);\n\t\t} else {\n\t\t\tselectValueProp.apply(value, setValue);\n\t\t}\n\t}\n\n\tprotected applyVariant(value?: VariantClassNamePropType): void {\n\t\tvariantProp.apply(value, (v) => this.setRenderProp('variant', v));\n\t}\n\n\t// --- Value ---\n\n\t/** The value list with `_multiple`, otherwise its first entry (the list itself when empty). */\n\tprotected getModelValue(): StencilUnknown[] | StencilUnknown {\n\t\tconst value = this.getRenderProp('value');\n\t\tif (this._multiple) {\n\t\t\treturn value;\n\t\t}\n\t\treturn Array.isArray(value) && value.length > 0 ? value[0] : value;\n\t}\n\n\t// --- Event handling of the native select ---\n\n\tprivate readonly handleSelectInput = (event: Event): void => {\n\t\tconst selectedValues = Array.from(this.ctaRef.el?.options || [])\n\t\t\t.filter((option) => option.selected)\n\t\t\t.map((option) => this.keyOptionMap.get(option.value)?.value);\n\n\t\tif (this._multiple) {\n\t\t\tthis._value = selectedValues;\n\t\t\tthis.handleInput(event, selectedValues);\n\t\t} else {\n\t\t\tconst singleValue: StencilUnknown = selectedValues.length > 0 ? selectedValues[0] : undefined;\n\t\t\tthis._value = singleValue as Stringified<StencilUnknown>;\n\t\t\tthis.handleInput(event, singleValue);\n\t\t}\n\t};\n\n\tprivate readonly handleSelectChange = (event: Event): void => {\n\t\tconst value = this._value as StencilUnknown;\n\t\tthis.handleChange(event, value);\n\t\tthis.hasValue = !!value;\n\t};\n\n\t// --- Render ---\n\n\tprivate getSelectProps(): SelectFCProps {\n\t\tconst { ariaDescribedBy, hasError } = this.getAria();\n\t\tconst multiple = this.getRenderProp('multiple');\n\t\tconst shortKey = this.getRenderProp('shortKey');\n\n\t\treturn {\n\t\t\tid: this.getState('id'),\n\t\t\thideLabel: this.getRenderProp('hideLabel'),\n\t\t\tlabel: this.getRenderProp('label'),\n\t\t\tvalue: this.getRenderProp('value'),\n\t\t\toptions: this.getRenderProp('options'),\n\t\t\taccessKey: this.getRenderProp('accessKey') || undefined,\n\t\t\tdisabled: this.getRenderProp('disabled'),\n\t\t\tname: this.getRenderProp('name') || undefined,\n\t\t\t'aria-invalid': hasError ? 'true' : undefined,\n\t\t\tariaDescribedBy,\n\t\t\tsize: multiple ? this.getRenderProp('rows') : undefined,\n\t\t\tmultiple,\n\t\t\trequired: this.getRenderProp('required'),\n\t\t\ttouched: this.getRenderProp('touched'),\n\t\t\tmsg: this.getRenderProp('msg'),\n\t\t\t...(shortKey ? { 'aria-keyshortcuts': shortKey } : {}),\n\t\t\tref: this.ctaRef,\n\t\t\tonBlur: this.handleBlur,\n\t\t\tonChange: this.handleSelectChange,\n\t\t\tonClick: this.handleClick,\n\t\t\tonFocus: this.handleFocus,\n\t\t\tonInput: this.handleSelectInput,\n\t\t\tonKeyDown: this.handleKeyDown,\n\t\t};\n\t}\n\n\tprotected renderSelectField(): JSX.Element {\n\t\tconst disabled = this.getRenderProp('disabled');\n\t\tconst { startAdornment, endAdornment } = getInputAdornments({ icons: this.getRenderProp('icons') });\n\n\t\treturn (\n\t\t\t<FormFieldFC\n\t\t\t\t{...this.getFormFieldProps({\n\t\t\t\t\tclass: clsx('kol-form-field-select', { 'kol-form-field--has-value': this.hasValue }),\n\t\t\t\t\taccessKey: this.getRenderProp('accessKey') || undefined,\n\t\t\t\t\tshortKey: this.getRenderProp('shortKey') || undefined,\n\t\t\t\t\trequired: this.getRenderProp('required'),\n\t\t\t\t\tvariant: this.getRenderProp('variant'),\n\t\t\t\t})}\n\t\t\t\tonClick={() => this.ctaRef.el?.focus()}\n\t\t\t>\n\t\t\t\t<InputContainerFC\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tmsg={this.getRenderProp('msg')}\n\t\t\t\t\ttouched={this.getRenderProp('touched')}\n\t\t\t\t\tstartAdornment={startAdornment}\n\t\t\t\t\tendAdornment={endAdornment}\n\t\t\t\t>\n\t\t\t\t\t<SelectFC {...this.getSelectProps()} />\n\t\t\t\t</InputContainerFC>\n\t\t\t</FormFieldFC>\n\t\t);\n\t}\n}\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * KoliBri - The accessible HTML-Standard
3
3
  */
4
- import{a as t}from"./dev.utils-DVPKJwhh.js";import"./common-DuSFcfNN.js";import{c as e,n as r,o as i,b as n,i as a}from"./base-web-component-DK8TT74a.js";import{B as h}from"./behavior-CiPpEcHi.js";import{t as o}from"./i18n-CEIPukO1.js";const s=e("hasCounter",false,r);const c=e("maxLength",undefined,i,(t=>t===undefined||t>=0));const u=["hard","soft"];function m(t){const e=n(t);if(a(e,u)){return e}throw new Error(`Invalid max length behavior: ${e}`)}const l=e("maxLengthBehavior","hard",m);const f={optional:[s,c,l]};const g=(t,e,r)=>{if(typeof e!=="number"){return o("kol-character-counter-current",{placeholders:{current:String(r)}})}if(t==="soft"){const t=e-r;return t<0?o("kol-character-limit-exceeded",{placeholders:{over:String(Math.abs(t))}}):o("kol-character-limit-remaining",{placeholders:{remaining:String(t)}})}return o("kol-character-counter-current-of-max",{placeholders:{current:String(r),max:String(e)}})};const d=(t,e,r)=>{if(typeof e!=="number"){return o("kol-character-counter-current",{placeholders:{current:String(r)}})}if(t==="soft"){const t=e-r;return t<0?o("kol-character-limit-exceeded",{placeholders:{over:String(Math.abs(t))}}):o("kol-character-limit-remaining",{placeholders:{remaining:String(t)}})}return o("kol-character-counter-current-of-max-aria",{placeholders:{current:String(r),max:String(e)}})};const x=(t,e,r)=>{if(t==="hard"&&typeof e==="number"&&r>=e){return o("kol-character-counter-max-aria")}return""};const p=t=>t.key.length===1&&!t.ctrlKey&&!t.metaKey&&!t.altKey;const L=" ";const v=1e3;class B extends h{constructor(t){super(t,f);this.reannounceToggle=false;this.setVisualRef=t=>{this.visualSpan=t};this.setAriaRef=t=>{this.ariaSpan=t};this.handleKeyDown=(t,e)=>{const{maxLength:r,maxLengthBehavior:i}=this.getLimit();if(i!=="hard"||typeof r!=="number"||e<r)return;if(!p(t))return;this.retriggerAria(e)}}componentWillLoad(t){this.watchHasCounter(t.hasCounter);this.watchMaxLength(t.maxLength);this.watchMaxLengthBehavior(t.maxLengthBehavior)}watchHasCounter(t){s.apply(t,(t=>this.setRenderProp("hasCounter",t)))}watchMaxLength(t){c.apply(t,(t=>this.setRenderProp("maxLength",t)))}watchMaxLengthBehavior(t){l.apply(t,(t=>this.setRenderProp("maxLengthBehavior",t)))}hasCounter(){return this.getRenderProp("hasCounter")===true}hasSoftLimit(){const{maxLength:t,maxLengthBehavior:e}=this.getLimit();return typeof t==="number"&&e==="soft"}getMaxLengthAttribute(){const{maxLength:t,maxLengthBehavior:e}=this.getLimit();return e==="hard"?t:undefined}getCounterProps(){if(!this.hasCounter()){return undefined}const{maxLength:t,maxLengthBehavior:e}=this.getLimit();return{maxLength:t,maxLengthBehavior:e,visualRef:this.setVisualRef,ariaRef:this.setAriaRef}}getCharacterLimitHintId(e){return typeof this.getRenderProp("maxLength")==="number"&&!this.hasCounter()?t(e,"character-limit-hint"):undefined}update(t){const e=this.getLimit();this.updateVisual(t,e);clearTimeout(this.debounceTimer);this.debounceTimer=setTimeout((()=>this.updateAria(t,e)),v)}updateImmediate(t){const e=this.getLimit();this.updateVisual(t,e);clearTimeout(this.debounceTimer);this.updateAria(t,e)}retriggerAria(t){if(!this.ariaSpan)return;const e=this.getLimit();clearTimeout(this.debounceTimer);this.debounceTimer=setTimeout((()=>this.updateAria(t,e,true)),v)}destroy(){clearTimeout(this.debounceTimer)}getLimit(){return{maxLength:this.getRenderProp("maxLength"),maxLengthBehavior:this.getRenderProp("maxLengthBehavior")}}updateVisual(t,{maxLength:e,maxLengthBehavior:r}){if(!this.visualSpan)return;this.visualSpan.innerText=g(r,e,t);this.visualSpan.classList.toggle("kol-form-field__counter--exceeded",r==="soft"&&typeof e==="number"&&t>e)}updateAria(t,{maxLength:e,maxLengthBehavior:r},i=false){if(!this.ariaSpan)return;let n=[d(r,e,t),x(r,e,t)].filter(Boolean).join(" ");if(i){this.reannounceToggle=!this.reannounceToggle;if(this.reannounceToggle){n+=L}}this.ariaSpan.innerText=n}}export{B as C};
5
- //# sourceMappingURL=behavior-Dpui_R-v.js.map
4
+ import{a as t}from"./dev.utils-CWEYl26B.js";import"./common-DuSFcfNN.js";import{c as e,n as r,o as i,b as n,i as a}from"./base-web-component-DK8TT74a.js";import{B as h}from"./behavior-CiPpEcHi.js";import{t as o}from"./i18n-CEIPukO1.js";const s=e("hasCounter",false,r);const c=e("maxLength",undefined,i,(t=>t===undefined||t>=0));const u=["hard","soft"];function m(t){const e=n(t);if(a(e,u)){return e}throw new Error(`Invalid max length behavior: ${e}`)}const l=e("maxLengthBehavior","hard",m);const f={optional:[s,c,l]};const g=(t,e,r)=>{if(typeof e!=="number"){return o("kol-character-counter-current",{placeholders:{current:String(r)}})}if(t==="soft"){const t=e-r;return t<0?o("kol-character-limit-exceeded",{placeholders:{over:String(Math.abs(t))}}):o("kol-character-limit-remaining",{placeholders:{remaining:String(t)}})}return o("kol-character-counter-current-of-max",{placeholders:{current:String(r),max:String(e)}})};const d=(t,e,r)=>{if(typeof e!=="number"){return o("kol-character-counter-current",{placeholders:{current:String(r)}})}if(t==="soft"){const t=e-r;return t<0?o("kol-character-limit-exceeded",{placeholders:{over:String(Math.abs(t))}}):o("kol-character-limit-remaining",{placeholders:{remaining:String(t)}})}return o("kol-character-counter-current-of-max-aria",{placeholders:{current:String(r),max:String(e)}})};const x=(t,e,r)=>{if(t==="hard"&&typeof e==="number"&&r>=e){return o("kol-character-counter-max-aria")}return""};const p=t=>t.key.length===1&&!t.ctrlKey&&!t.metaKey&&!t.altKey;const L=" ";const v=1e3;class B extends h{constructor(t){super(t,f);this.reannounceToggle=false;this.setVisualRef=t=>{this.visualSpan=t};this.setAriaRef=t=>{this.ariaSpan=t};this.handleKeyDown=(t,e)=>{const{maxLength:r,maxLengthBehavior:i}=this.getLimit();if(i!=="hard"||typeof r!=="number"||e<r)return;if(!p(t))return;this.retriggerAria(e)}}componentWillLoad(t){this.watchHasCounter(t.hasCounter);this.watchMaxLength(t.maxLength);this.watchMaxLengthBehavior(t.maxLengthBehavior)}watchHasCounter(t){s.apply(t,(t=>this.setRenderProp("hasCounter",t)))}watchMaxLength(t){c.apply(t,(t=>this.setRenderProp("maxLength",t)))}watchMaxLengthBehavior(t){l.apply(t,(t=>this.setRenderProp("maxLengthBehavior",t)))}hasCounter(){return this.getRenderProp("hasCounter")===true}hasSoftLimit(){const{maxLength:t,maxLengthBehavior:e}=this.getLimit();return typeof t==="number"&&e==="soft"}getMaxLengthAttribute(){const{maxLength:t,maxLengthBehavior:e}=this.getLimit();return e==="hard"?t:undefined}getCounterProps(){if(!this.hasCounter()){return undefined}const{maxLength:t,maxLengthBehavior:e}=this.getLimit();return{maxLength:t,maxLengthBehavior:e,visualRef:this.setVisualRef,ariaRef:this.setAriaRef}}getCharacterLimitHintId(e){return typeof this.getRenderProp("maxLength")==="number"&&!this.hasCounter()?t(e,"character-limit-hint"):undefined}update(t){const e=this.getLimit();this.updateVisual(t,e);clearTimeout(this.debounceTimer);this.debounceTimer=setTimeout((()=>this.updateAria(t,e)),v)}updateImmediate(t){const e=this.getLimit();this.updateVisual(t,e);clearTimeout(this.debounceTimer);this.updateAria(t,e)}retriggerAria(t){if(!this.ariaSpan)return;const e=this.getLimit();clearTimeout(this.debounceTimer);this.debounceTimer=setTimeout((()=>this.updateAria(t,e,true)),v)}destroy(){clearTimeout(this.debounceTimer)}getLimit(){return{maxLength:this.getRenderProp("maxLength"),maxLengthBehavior:this.getRenderProp("maxLengthBehavior")}}updateVisual(t,{maxLength:e,maxLengthBehavior:r}){if(!this.visualSpan)return;this.visualSpan.innerText=g(r,e,t);this.visualSpan.classList.toggle("kol-form-field__counter--exceeded",r==="soft"&&typeof e==="number"&&t>e)}updateAria(t,{maxLength:e,maxLengthBehavior:r},i=false){if(!this.ariaSpan)return;let n=[d(r,e,t),x(r,e,t)].filter(Boolean).join(" ");if(i){this.reannounceToggle=!this.reannounceToggle;if(this.reannounceToggle){n+=L}}this.ariaSpan.innerText=n}}export{B as C};
5
+ //# sourceMappingURL=behavior-DCpLHoHs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"behavior-Dpui_R-v.js","sources":["src/internal/props/has-counter.ts","src/internal/props/max-length.ts","src/internal/props/max-length-behavior.ts","src/internal/functional-components/counter/api.tsx","src/internal/functional-components/counter/texts.ts","src/internal/functional-components/counter/behavior.ts"],"sourcesContent":["import type { SimpleProp } from './helpers/factory';\nimport { createPropDefinition } from './helpers/factory';\nimport { normalizeBoolean } from './helpers/normalizers';\n\n/**\n * Has counter prop for text-based form fields\n *\n * Description:\n * Shows the character counter below the control.\n */\nexport type HasCounterProp = SimpleProp<'hasCounter', boolean>;\nexport const hasCounterProp = createPropDefinition<HasCounterProp>('hasCounter', false, normalizeBoolean);\n","import type { SimpleProp } from './helpers/factory';\nimport { createPropDefinition } from './helpers/factory';\nimport { normalizeNumber } from './helpers/normalizers';\n\n/**\n * Max length prop for text-based form fields\n *\n * Description:\n * The maximum number of characters. With the max length behavior `'hard'` it becomes the native\n * `maxlength` attribute, with `'soft'` it is only announced by the character counter.\n *\n * @see https://html.spec.whatwg.org/multipage/input.html#attr-input-maxlength\n */\nexport type MaxLengthProp = SimpleProp<'maxLength', number>;\n// The default is `undefined`: without a maximum there is no limit and no character limit hint. The\n// validation also runs on the default, so it accepts `undefined`.\nexport const maxLengthProp = createPropDefinition<MaxLengthProp>(\n\t'maxLength',\n\tundefined as unknown as number,\n\tnormalizeNumber,\n\t(value) => value === undefined || value >= 0,\n);\n","import type { MaxLengthBehaviorPropType } from '../../schema';\nimport type { SimpleProp } from './helpers/factory';\nimport { createPropDefinition } from './helpers/factory';\nimport { isEnumOption, normalizeString } from './helpers/normalizers';\n\nconst MAX_LENGTH_BEHAVIOR_OPTIONS: readonly MaxLengthBehaviorPropType[] = ['hard', 'soft'];\n\n/**\n * Max length behavior prop for text-based form fields\n *\n * Description:\n * `'hard'` prevents longer input through the native `maxlength` attribute, `'soft'` allows it and\n * lets the character counter announce the exceeded limit.\n */\nexport type MaxLengthBehaviorProp = SimpleProp<'maxLengthBehavior', MaxLengthBehaviorPropType>;\n\nfunction normalizeMaxLengthBehavior(value: unknown): MaxLengthBehaviorPropType {\n\tconst str = normalizeString(value);\n\tif (isEnumOption(str, MAX_LENGTH_BEHAVIOR_OPTIONS)) {\n\t\treturn str;\n\t}\n\tthrow new Error(`Invalid max length behavior: ${str}`);\n}\n\nexport const maxLengthBehaviorProp = createPropDefinition<MaxLengthBehaviorProp>('maxLengthBehavior', 'hard', normalizeMaxLengthBehavior);\n","import { hasCounterProp, maxLengthBehaviorProp, maxLengthProp } from '../../props';\nimport type { ApiFromConfig, PropsConfigShape } from '../generic-types';\n\nexport const counterPropsConfig = {\n\toptional: [hasCounterProp, maxLengthProp, maxLengthBehaviorProp],\n} as const satisfies PropsConfigShape;\n\nexport type CounterApi = ApiFromConfig<typeof counterPropsConfig>;\n","import { translate } from '../../../i18n';\nimport type { MaxLengthBehaviorPropType } from '../../../schema';\n\nexport const getCounterVisualText = (maxLengthBehavior: MaxLengthBehaviorPropType, maxLength: number | undefined, currentLength: number): string => {\n\tif (typeof maxLength !== 'number') {\n\t\treturn translate('kol-character-counter-current', { placeholders: { current: String(currentLength) } });\n\t}\n\tif (maxLengthBehavior === 'soft') {\n\t\tconst remaining = maxLength - currentLength;\n\t\treturn remaining < 0\n\t\t\t? translate('kol-character-limit-exceeded', { placeholders: { over: String(Math.abs(remaining)) } })\n\t\t\t: translate('kol-character-limit-remaining', { placeholders: { remaining: String(remaining) } });\n\t}\n\treturn translate('kol-character-counter-current-of-max', { placeholders: { current: String(currentLength), max: String(maxLength) } });\n};\n\nexport const getCounterAriaText = (maxLengthBehavior: MaxLengthBehaviorPropType, maxLength: number | undefined, currentLength: number): string => {\n\tif (typeof maxLength !== 'number') {\n\t\treturn translate('kol-character-counter-current', { placeholders: { current: String(currentLength) } });\n\t}\n\tif (maxLengthBehavior === 'soft') {\n\t\tconst remaining = maxLength - currentLength;\n\t\treturn remaining < 0\n\t\t\t? translate('kol-character-limit-exceeded', { placeholders: { over: String(Math.abs(remaining)) } })\n\t\t\t: translate('kol-character-limit-remaining', { placeholders: { remaining: String(remaining) } });\n\t}\n\treturn translate('kol-character-counter-current-of-max-aria', { placeholders: { current: String(currentLength), max: String(maxLength) } });\n};\n\nexport const getCounterMaxText = (maxLengthBehavior: MaxLengthBehaviorPropType, maxLength: number | undefined, currentLength: number): string => {\n\tif (maxLengthBehavior === 'hard' && typeof maxLength === 'number' && currentLength >= maxLength) {\n\t\treturn translate('kol-character-counter-max-aria');\n\t}\n\treturn '';\n};\n","import type { MaxLengthBehaviorPropType } from '../../../schema';\nimport { createRelatedUniqueId } from '../../../utils/dev.utils';\nimport { hasCounterProp, maxLengthBehaviorProp, maxLengthProp } from '../../props';\nimport { BaseBehavior } from '../base-behavior';\nimport type { FormFieldFCProps } from '../form-field/component';\nimport type { BehaviorInterface, ResolvedInputProps, StateAccess } from '../generic-types';\nimport type { CounterApi } from './api';\nimport { counterPropsConfig } from './api';\nimport { getCounterAriaText, getCounterMaxText, getCounterVisualText } from './texts';\n\n/** A printable single character without Ctrl, Meta or Alt, i.e. a key press that inserts a character. */\nconst isCharacterInputKey = (event: KeyboardEvent): boolean => event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey;\n\n/** Invisible no-break space that makes an identical live region text differ, so it is announced again. */\nconst REANNOUNCE_MARKER = ' ';\n\nconst ARIA_DEBOUNCE_MS = 1000;\n\ntype CounterLimit = {\n\tmaxLength?: number;\n\tmaxLengthBehavior: MaxLengthBehaviorPropType;\n};\n\n/**\n * Character counter and character limit of a text field.\n *\n * It owns `hasCounter`, `maxLength` and `maxLengthBehavior` and writes the texts of the two counter\n * spans of `FormFieldFC` directly into the DOM, without a re-render: the visible span immediately,\n * the `aria-live` span debounced, so a screen reader does not announce every key stroke.\n */\nexport class CounterBehavior extends BaseBehavior<CounterApi> implements BehaviorInterface<CounterApi> {\n\tprivate visualSpan?: HTMLSpanElement;\n\tprivate ariaSpan?: HTMLSpanElement;\n\tprivate debounceTimer?: ReturnType<typeof setTimeout>;\n\tprivate reannounceToggle = false;\n\n\tpublic constructor(stateAccess: StateAccess<CounterApi>) {\n\t\tsuper(stateAccess, counterPropsConfig);\n\t}\n\n\tpublic componentWillLoad(props: ResolvedInputProps<CounterApi>): void {\n\t\tthis.watchHasCounter(props.hasCounter);\n\t\tthis.watchMaxLength(props.maxLength);\n\t\tthis.watchMaxLengthBehavior(props.maxLengthBehavior);\n\t}\n\n\tpublic watchHasCounter(value?: boolean): void {\n\t\thasCounterProp.apply(value, (v) => this.setRenderProp('hasCounter', v));\n\t}\n\n\tpublic watchMaxLength(value?: number): void {\n\t\tmaxLengthProp.apply(value, (v) => this.setRenderProp('maxLength', v));\n\t}\n\n\tpublic watchMaxLengthBehavior(value?: MaxLengthBehaviorPropType): void {\n\t\tmaxLengthBehaviorProp.apply(value, (v) => this.setRenderProp('maxLengthBehavior', v));\n\t}\n\n\tpublic readonly setVisualRef = (el?: HTMLSpanElement): void => {\n\t\tthis.visualSpan = el;\n\t};\n\n\tpublic readonly setAriaRef = (el?: HTMLSpanElement): void => {\n\t\tthis.ariaSpan = el;\n\t};\n\n\tpublic hasCounter(): boolean {\n\t\treturn this.getRenderProp('hasCounter') === true;\n\t}\n\n\t/** A maximum with the behavior `'soft'`: the counter announces the exceeded limit instead of `maxlength` preventing it. */\n\tpublic hasSoftLimit(): boolean {\n\t\tconst { maxLength, maxLengthBehavior } = this.getLimit();\n\t\treturn typeof maxLength === 'number' && maxLengthBehavior === 'soft';\n\t}\n\n\t/** The native `maxlength` attribute: only a hard limit prevents longer input. */\n\tpublic getMaxLengthAttribute(): number | undefined {\n\t\tconst { maxLength, maxLengthBehavior } = this.getLimit();\n\t\treturn maxLengthBehavior === 'hard' ? maxLength : undefined;\n\t}\n\n\t/** The `counter` prop of `FormFieldFC`; the counter is only rendered with `hasCounter`. */\n\tpublic getCounterProps(): FormFieldFCProps['counter'] {\n\t\tif (!this.hasCounter()) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst { maxLength, maxLengthBehavior } = this.getLimit();\n\t\treturn { maxLength, maxLengthBehavior, visualRef: this.setVisualRef, ariaRef: this.setAriaRef };\n\t}\n\n\t/**\n\t * The ID of the hidden character limit hint, which the control references in `aria-describedby`.\n\t * The hint only exists for a maximum without counter, because the counter announces the maximum itself.\n\t */\n\tpublic getCharacterLimitHintId(id: string): string | undefined {\n\t\treturn typeof this.getRenderProp('maxLength') === 'number' && !this.hasCounter() ? createRelatedUniqueId(id, 'character-limit-hint') : undefined;\n\t}\n\n\t/** Updates the visible span immediately and the `aria-live` span debounced. */\n\tpublic update(currentLength: number): void {\n\t\tconst limit = this.getLimit();\n\t\tthis.updateVisual(currentLength, limit);\n\t\tclearTimeout(this.debounceTimer);\n\t\tthis.debounceTimer = setTimeout(() => this.updateAria(currentLength, limit), ARIA_DEBOUNCE_MS);\n\t}\n\n\t/** Updates both spans without debounce, e.g. after the first render or a programmatic change of the limit. */\n\tpublic updateImmediate(currentLength: number): void {\n\t\tconst limit = this.getLimit();\n\t\tthis.updateVisual(currentLength, limit);\n\t\tclearTimeout(this.debounceTimer);\n\t\tthis.updateAria(currentLength, limit);\n\t}\n\n\t/**\n\t * Announces the reached hard limit again on every further typing attempt. `maxlength` blocks the\n\t * input without an `input` event, so the live region would otherwise stay silent.\n\t */\n\tpublic readonly handleKeyDown = (event: KeyboardEvent, currentLength: number): void => {\n\t\tconst { maxLength, maxLengthBehavior } = this.getLimit();\n\t\tif (maxLengthBehavior !== 'hard' || typeof maxLength !== 'number' || currentLength < maxLength) return;\n\t\tif (!isCharacterInputKey(event)) return;\n\t\tthis.retriggerAria(currentLength);\n\t};\n\n\t/** Announces the `aria-live` span again, debounced, even if its text did not change. */\n\tpublic retriggerAria(currentLength: number): void {\n\t\tif (!this.ariaSpan) return;\n\t\tconst limit = this.getLimit();\n\t\tclearTimeout(this.debounceTimer);\n\t\tthis.debounceTimer = setTimeout(() => this.updateAria(currentLength, limit, true), ARIA_DEBOUNCE_MS);\n\t}\n\n\tpublic destroy(): void {\n\t\tclearTimeout(this.debounceTimer);\n\t}\n\n\tprivate getLimit(): CounterLimit {\n\t\treturn { maxLength: this.getRenderProp('maxLength'), maxLengthBehavior: this.getRenderProp('maxLengthBehavior') };\n\t}\n\n\tprivate updateVisual(currentLength: number, { maxLength, maxLengthBehavior }: CounterLimit): void {\n\t\tif (!this.visualSpan) return;\n\t\tthis.visualSpan.innerText = getCounterVisualText(maxLengthBehavior, maxLength, currentLength);\n\t\tthis.visualSpan.classList.toggle(\n\t\t\t'kol-form-field__counter--exceeded',\n\t\t\tmaxLengthBehavior === 'soft' && typeof maxLength === 'number' && currentLength > maxLength,\n\t\t);\n\t}\n\n\tprivate updateAria(currentLength: number, { maxLength, maxLengthBehavior }: CounterLimit, forceReannounce = false): void {\n\t\tif (!this.ariaSpan) return;\n\t\tlet text = [getCounterAriaText(maxLengthBehavior, maxLength, currentLength), getCounterMaxText(maxLengthBehavior, maxLength, currentLength)]\n\t\t\t.filter(Boolean)\n\t\t\t.join(' ');\n\n\t\tif (forceReannounce) {\n\t\t\t// `aria-live` only announces a changed text. A repeated attempt produces the same text, so a\n\t\t\t// no-break space is appended on every other call to make it differ.\n\t\t\tthis.reannounceToggle = !this.reannounceToggle;\n\t\t\tif (this.reannounceToggle) {\n\t\t\t\ttext += REANNOUNCE_MARKER;\n\t\t\t}\n\t\t}\n\n\t\tthis.ariaSpan.innerText = text;\n\t}\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"behavior-DCpLHoHs.js","sources":["src/internal/props/has-counter.ts","src/internal/props/max-length.ts","src/internal/props/max-length-behavior.ts","src/internal/functional-components/counter/api.tsx","src/internal/functional-components/counter/texts.ts","src/internal/functional-components/counter/behavior.ts"],"sourcesContent":["import type { SimpleProp } from './helpers/factory';\nimport { createPropDefinition } from './helpers/factory';\nimport { normalizeBoolean } from './helpers/normalizers';\n\n/**\n * Has counter prop for text-based form fields\n *\n * Description:\n * Shows the character counter below the control.\n */\nexport type HasCounterProp = SimpleProp<'hasCounter', boolean>;\nexport const hasCounterProp = createPropDefinition<HasCounterProp>('hasCounter', false, normalizeBoolean);\n","import type { SimpleProp } from './helpers/factory';\nimport { createPropDefinition } from './helpers/factory';\nimport { normalizeNumber } from './helpers/normalizers';\n\n/**\n * Max length prop for text-based form fields\n *\n * Description:\n * The maximum number of characters. With the max length behavior `'hard'` it becomes the native\n * `maxlength` attribute, with `'soft'` it is only announced by the character counter.\n *\n * @see https://html.spec.whatwg.org/multipage/input.html#attr-input-maxlength\n */\nexport type MaxLengthProp = SimpleProp<'maxLength', number>;\n// The default is `undefined`: without a maximum there is no limit and no character limit hint. The\n// validation also runs on the default, so it accepts `undefined`.\nexport const maxLengthProp = createPropDefinition<MaxLengthProp>(\n\t'maxLength',\n\tundefined as unknown as number,\n\tnormalizeNumber,\n\t(value) => value === undefined || value >= 0,\n);\n","import type { MaxLengthBehaviorPropType } from '../../schema';\nimport type { SimpleProp } from './helpers/factory';\nimport { createPropDefinition } from './helpers/factory';\nimport { isEnumOption, normalizeString } from './helpers/normalizers';\n\nconst MAX_LENGTH_BEHAVIOR_OPTIONS: readonly MaxLengthBehaviorPropType[] = ['hard', 'soft'];\n\n/**\n * Max length behavior prop for text-based form fields\n *\n * Description:\n * `'hard'` prevents longer input through the native `maxlength` attribute, `'soft'` allows it and\n * lets the character counter announce the exceeded limit.\n */\nexport type MaxLengthBehaviorProp = SimpleProp<'maxLengthBehavior', MaxLengthBehaviorPropType>;\n\nfunction normalizeMaxLengthBehavior(value: unknown): MaxLengthBehaviorPropType {\n\tconst str = normalizeString(value);\n\tif (isEnumOption(str, MAX_LENGTH_BEHAVIOR_OPTIONS)) {\n\t\treturn str;\n\t}\n\tthrow new Error(`Invalid max length behavior: ${str}`);\n}\n\nexport const maxLengthBehaviorProp = createPropDefinition<MaxLengthBehaviorProp>('maxLengthBehavior', 'hard', normalizeMaxLengthBehavior);\n","import { hasCounterProp, maxLengthBehaviorProp, maxLengthProp } from '../../props';\nimport type { ApiFromConfig, PropsConfigShape } from '../generic-types';\n\nexport const counterPropsConfig = {\n\toptional: [hasCounterProp, maxLengthProp, maxLengthBehaviorProp],\n} as const satisfies PropsConfigShape;\n\nexport type CounterApi = ApiFromConfig<typeof counterPropsConfig>;\n","import { translate } from '../../../i18n';\nimport type { MaxLengthBehaviorPropType } from '../../../schema';\n\nexport const getCounterVisualText = (maxLengthBehavior: MaxLengthBehaviorPropType, maxLength: number | undefined, currentLength: number): string => {\n\tif (typeof maxLength !== 'number') {\n\t\treturn translate('kol-character-counter-current', { placeholders: { current: String(currentLength) } });\n\t}\n\tif (maxLengthBehavior === 'soft') {\n\t\tconst remaining = maxLength - currentLength;\n\t\treturn remaining < 0\n\t\t\t? translate('kol-character-limit-exceeded', { placeholders: { over: String(Math.abs(remaining)) } })\n\t\t\t: translate('kol-character-limit-remaining', { placeholders: { remaining: String(remaining) } });\n\t}\n\treturn translate('kol-character-counter-current-of-max', { placeholders: { current: String(currentLength), max: String(maxLength) } });\n};\n\nexport const getCounterAriaText = (maxLengthBehavior: MaxLengthBehaviorPropType, maxLength: number | undefined, currentLength: number): string => {\n\tif (typeof maxLength !== 'number') {\n\t\treturn translate('kol-character-counter-current', { placeholders: { current: String(currentLength) } });\n\t}\n\tif (maxLengthBehavior === 'soft') {\n\t\tconst remaining = maxLength - currentLength;\n\t\treturn remaining < 0\n\t\t\t? translate('kol-character-limit-exceeded', { placeholders: { over: String(Math.abs(remaining)) } })\n\t\t\t: translate('kol-character-limit-remaining', { placeholders: { remaining: String(remaining) } });\n\t}\n\treturn translate('kol-character-counter-current-of-max-aria', { placeholders: { current: String(currentLength), max: String(maxLength) } });\n};\n\nexport const getCounterMaxText = (maxLengthBehavior: MaxLengthBehaviorPropType, maxLength: number | undefined, currentLength: number): string => {\n\tif (maxLengthBehavior === 'hard' && typeof maxLength === 'number' && currentLength >= maxLength) {\n\t\treturn translate('kol-character-counter-max-aria');\n\t}\n\treturn '';\n};\n","import type { MaxLengthBehaviorPropType } from '../../../schema';\nimport { createRelatedUniqueId } from '../../../utils/dev.utils';\nimport { hasCounterProp, maxLengthBehaviorProp, maxLengthProp } from '../../props';\nimport { BaseBehavior } from '../base-behavior';\nimport type { FormFieldFCProps } from '../form-field/component';\nimport type { BehaviorInterface, ResolvedInputProps, StateAccess } from '../generic-types';\nimport type { CounterApi } from './api';\nimport { counterPropsConfig } from './api';\nimport { getCounterAriaText, getCounterMaxText, getCounterVisualText } from './texts';\n\n/** A printable single character without Ctrl, Meta or Alt, i.e. a key press that inserts a character. */\nconst isCharacterInputKey = (event: KeyboardEvent): boolean => event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey;\n\n/** Invisible no-break space that makes an identical live region text differ, so it is announced again. */\nconst REANNOUNCE_MARKER = ' ';\n\nconst ARIA_DEBOUNCE_MS = 1000;\n\ntype CounterLimit = {\n\tmaxLength?: number;\n\tmaxLengthBehavior: MaxLengthBehaviorPropType;\n};\n\n/**\n * Character counter and character limit of a text field.\n *\n * It owns `hasCounter`, `maxLength` and `maxLengthBehavior` and writes the texts of the two counter\n * spans of `FormFieldFC` directly into the DOM, without a re-render: the visible span immediately,\n * the `aria-live` span debounced, so a screen reader does not announce every key stroke.\n */\nexport class CounterBehavior extends BaseBehavior<CounterApi> implements BehaviorInterface<CounterApi> {\n\tprivate visualSpan?: HTMLSpanElement;\n\tprivate ariaSpan?: HTMLSpanElement;\n\tprivate debounceTimer?: ReturnType<typeof setTimeout>;\n\tprivate reannounceToggle = false;\n\n\tpublic constructor(stateAccess: StateAccess<CounterApi>) {\n\t\tsuper(stateAccess, counterPropsConfig);\n\t}\n\n\tpublic componentWillLoad(props: ResolvedInputProps<CounterApi>): void {\n\t\tthis.watchHasCounter(props.hasCounter);\n\t\tthis.watchMaxLength(props.maxLength);\n\t\tthis.watchMaxLengthBehavior(props.maxLengthBehavior);\n\t}\n\n\tpublic watchHasCounter(value?: boolean): void {\n\t\thasCounterProp.apply(value, (v) => this.setRenderProp('hasCounter', v));\n\t}\n\n\tpublic watchMaxLength(value?: number): void {\n\t\tmaxLengthProp.apply(value, (v) => this.setRenderProp('maxLength', v));\n\t}\n\n\tpublic watchMaxLengthBehavior(value?: MaxLengthBehaviorPropType): void {\n\t\tmaxLengthBehaviorProp.apply(value, (v) => this.setRenderProp('maxLengthBehavior', v));\n\t}\n\n\tpublic readonly setVisualRef = (el?: HTMLSpanElement): void => {\n\t\tthis.visualSpan = el;\n\t};\n\n\tpublic readonly setAriaRef = (el?: HTMLSpanElement): void => {\n\t\tthis.ariaSpan = el;\n\t};\n\n\tpublic hasCounter(): boolean {\n\t\treturn this.getRenderProp('hasCounter') === true;\n\t}\n\n\t/** A maximum with the behavior `'soft'`: the counter announces the exceeded limit instead of `maxlength` preventing it. */\n\tpublic hasSoftLimit(): boolean {\n\t\tconst { maxLength, maxLengthBehavior } = this.getLimit();\n\t\treturn typeof maxLength === 'number' && maxLengthBehavior === 'soft';\n\t}\n\n\t/** The native `maxlength` attribute: only a hard limit prevents longer input. */\n\tpublic getMaxLengthAttribute(): number | undefined {\n\t\tconst { maxLength, maxLengthBehavior } = this.getLimit();\n\t\treturn maxLengthBehavior === 'hard' ? maxLength : undefined;\n\t}\n\n\t/** The `counter` prop of `FormFieldFC`; the counter is only rendered with `hasCounter`. */\n\tpublic getCounterProps(): FormFieldFCProps['counter'] {\n\t\tif (!this.hasCounter()) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst { maxLength, maxLengthBehavior } = this.getLimit();\n\t\treturn { maxLength, maxLengthBehavior, visualRef: this.setVisualRef, ariaRef: this.setAriaRef };\n\t}\n\n\t/**\n\t * The ID of the hidden character limit hint, which the control references in `aria-describedby`.\n\t * The hint only exists for a maximum without counter, because the counter announces the maximum itself.\n\t */\n\tpublic getCharacterLimitHintId(id: string): string | undefined {\n\t\treturn typeof this.getRenderProp('maxLength') === 'number' && !this.hasCounter() ? createRelatedUniqueId(id, 'character-limit-hint') : undefined;\n\t}\n\n\t/** Updates the visible span immediately and the `aria-live` span debounced. */\n\tpublic update(currentLength: number): void {\n\t\tconst limit = this.getLimit();\n\t\tthis.updateVisual(currentLength, limit);\n\t\tclearTimeout(this.debounceTimer);\n\t\tthis.debounceTimer = setTimeout(() => this.updateAria(currentLength, limit), ARIA_DEBOUNCE_MS);\n\t}\n\n\t/** Updates both spans without debounce, e.g. after the first render or a programmatic change of the limit. */\n\tpublic updateImmediate(currentLength: number): void {\n\t\tconst limit = this.getLimit();\n\t\tthis.updateVisual(currentLength, limit);\n\t\tclearTimeout(this.debounceTimer);\n\t\tthis.updateAria(currentLength, limit);\n\t}\n\n\t/**\n\t * Announces the reached hard limit again on every further typing attempt. `maxlength` blocks the\n\t * input without an `input` event, so the live region would otherwise stay silent.\n\t */\n\tpublic readonly handleKeyDown = (event: KeyboardEvent, currentLength: number): void => {\n\t\tconst { maxLength, maxLengthBehavior } = this.getLimit();\n\t\tif (maxLengthBehavior !== 'hard' || typeof maxLength !== 'number' || currentLength < maxLength) return;\n\t\tif (!isCharacterInputKey(event)) return;\n\t\tthis.retriggerAria(currentLength);\n\t};\n\n\t/** Announces the `aria-live` span again, debounced, even if its text did not change. */\n\tpublic retriggerAria(currentLength: number): void {\n\t\tif (!this.ariaSpan) return;\n\t\tconst limit = this.getLimit();\n\t\tclearTimeout(this.debounceTimer);\n\t\tthis.debounceTimer = setTimeout(() => this.updateAria(currentLength, limit, true), ARIA_DEBOUNCE_MS);\n\t}\n\n\tpublic destroy(): void {\n\t\tclearTimeout(this.debounceTimer);\n\t}\n\n\tprivate getLimit(): CounterLimit {\n\t\treturn { maxLength: this.getRenderProp('maxLength'), maxLengthBehavior: this.getRenderProp('maxLengthBehavior') };\n\t}\n\n\tprivate updateVisual(currentLength: number, { maxLength, maxLengthBehavior }: CounterLimit): void {\n\t\tif (!this.visualSpan) return;\n\t\tthis.visualSpan.innerText = getCounterVisualText(maxLengthBehavior, maxLength, currentLength);\n\t\tthis.visualSpan.classList.toggle(\n\t\t\t'kol-form-field__counter--exceeded',\n\t\t\tmaxLengthBehavior === 'soft' && typeof maxLength === 'number' && currentLength > maxLength,\n\t\t);\n\t}\n\n\tprivate updateAria(currentLength: number, { maxLength, maxLengthBehavior }: CounterLimit, forceReannounce = false): void {\n\t\tif (!this.ariaSpan) return;\n\t\tlet text = [getCounterAriaText(maxLengthBehavior, maxLength, currentLength), getCounterMaxText(maxLengthBehavior, maxLength, currentLength)]\n\t\t\t.filter(Boolean)\n\t\t\t.join(' ');\n\n\t\tif (forceReannounce) {\n\t\t\t// `aria-live` only announces a changed text. A repeated attempt produces the same text, so a\n\t\t\t// no-break space is appended on every other call to make it differ.\n\t\t\tthis.reannounceToggle = !this.reannounceToggle;\n\t\t\tif (this.reannounceToggle) {\n\t\t\t\ttext += REANNOUNCE_MARKER;\n\t\t\t}\n\t\t}\n\n\t\tthis.ariaSpan.innerText = text;\n\t}\n}\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * KoliBri - The accessible HTML-Standard
3
3
  */
4
- import{h as s,F as n}from"./index-BtYjJomD.js";import{t as a}from"./i18n-CEIPukO1.js";import{b as e}from"./bem-registry-Bma6U-JA.js";import{B as r}from"./component-B5OmtChm.js";const t=e.forBlock("kol-spin");const o=t("loader");const l=["1","2","3","neutral"];function i(n){switch(n){case"cycle":return s("span",{class:o});case"none":return s("slot",{name:"expert"});default:return l.map((n=>s("span",{class:t("spinner-element",{[n]:true})})))}}const c=e=>{const{show:o,label:l,variant:c}=e;return s(r,{block:"kol-spin"},o?s(n,null,s("span",{class:t("spinner",{[c]:true})},i(c)),s("span",{"aria-busy":"true",class:"visually-hidden",role:"alert"},l||a("kol-action-running"))):s("span",{"aria-busy":"false",class:"visually-hidden",role:"alert"},l||a("kol-action-done")))};export{c as S};
5
- //# sourceMappingURL=component-DSKwp72M.js.map
4
+ import{h as s,F as n}from"./index-CyLMYdnq.js";import{t as a}from"./i18n-CEIPukO1.js";import{b as e}from"./bem-registry-Bma6U-JA.js";import{B as r}from"./component-BR-6tKab.js";const t=e.forBlock("kol-spin");const o=t("loader");const l=["1","2","3","neutral"];function i(n){switch(n){case"cycle":return s("span",{class:o});case"none":return s("slot",{name:"expert"});default:return l.map((n=>s("span",{class:t("spinner-element",{[n]:true})})))}}const c=e=>{const{show:o,label:l,variant:c}=e;return s(r,{block:"kol-spin"},o?s(n,null,s("span",{class:t("spinner",{[c]:true})},i(c)),s("span",{"aria-busy":"true",class:"visually-hidden",role:"alert"},l||a("kol-action-running"))):s("span",{"aria-busy":"false",class:"visually-hidden",role:"alert"},l||a("kol-action-done")))};export{c as S};
5
+ //# sourceMappingURL=component-9XV7ykPK.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"component-DSKwp72M.js","sources":["src/internal/functional-components/spin/component.tsx"],"sourcesContent":["import type { FunctionalComponent as FC } from '@stencil/core';\nimport { Fragment, h } from '@stencil/core';\n\nimport { translate } from '../../../i18n';\nimport { bem } from '../../../schema/bem-registry';\nimport type { SpinVariantType } from '../../props';\nimport { BemRootNodeFC } from '../bem-root-node/component';\nimport type { FunctionalComponentProps } from '../generic-types';\nimport type { SpinApi } from './api';\n\nconst spinBem = bem.forBlock('kol-spin');\nconst BEM_CLASS_SPIN__LOADER = spinBem('loader');\nconst DOT_ELEMENTS = ['1', '2', '3', 'neutral'] as const;\n\nfunction renderSpinVariant(variant: SpinVariantType): unknown {\n\tswitch (variant) {\n\t\tcase 'cycle':\n\t\t\treturn <span class={BEM_CLASS_SPIN__LOADER}></span>;\n\t\tcase 'none':\n\t\t\treturn <slot name=\"expert\"></slot>;\n\t\tdefault:\n\t\t\treturn DOT_ELEMENTS.map((element) => <span class={spinBem('spinner-element', { [element]: true })}></span>);\n\t}\n}\n\nexport const SpinFC: FC<FunctionalComponentProps<SpinApi>> = (props) => {\n\tconst { show, label, variant } = props;\n\n\treturn (\n\t\t<BemRootNodeFC block=\"kol-spin\">\n\t\t\t{show ? (\n\t\t\t\t<Fragment>\n\t\t\t\t\t<span class={spinBem('spinner', { [variant]: true })}>{renderSpinVariant(variant)}</span>\n\t\t\t\t\t<span aria-busy=\"true\" class=\"visually-hidden\" role=\"alert\">\n\t\t\t\t\t\t{label || translate('kol-action-running')}\n\t\t\t\t\t</span>\n\t\t\t\t</Fragment>\n\t\t\t) : (\n\t\t\t\t<span aria-busy=\"false\" class=\"visually-hidden\" role=\"alert\">\n\t\t\t\t\t{label || translate('kol-action-done')}\n\t\t\t\t</span>\n\t\t\t)}\n\t\t</BemRootNodeFC>\n\t);\n};\n"],"names":[],"mappings":";;;;;;;;AAUA,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;AACxC,MAAM,sBAAsB,GAAG,OAAO,CAAC,QAAQ,CAAC;AAChD,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,CAAU;AAExD,SAAS,iBAAiB,CAAC,OAAwB,EAAA;IAClD,QAAQ,OAAO;AACd,QAAA,KAAK,OAAO;YACX,OAAO,CAAM,CAAA,MAAA,EAAA,EAAA,KAAK,EAAE,sBAAsB,GAAS;AACpD,QAAA,KAAK,MAAM;YACV,OAAO,CAAM,CAAA,MAAA,EAAA,EAAA,IAAI,EAAC,QAAQ,GAAQ;AACnC,QAAA;AACC,YAAA,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,CAAM,CAAA,MAAA,EAAA,EAAA,KAAK,EAAE,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC,EAAS,CAAA,CAAC;;AAE9G;AAEa,MAAA,MAAM,GAA0C,CAAC,KAAK,KAAI;IACtE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,KAAK;IAEtC,QACC,CAAA,CAAC,aAAa,EAAA,EAAC,KAAK,EAAC,UAAU,EAC7B,EAAA,IAAI,IACJ,EAAC,QAAQ,EAAA,IAAA,EACR,CAAA,CAAA,MAAA,EAAA,EAAM,KAAK,EAAE,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC,EAAA,EAAG,iBAAiB,CAAC,OAAO,CAAC,CAAQ,EACzF,CAAgB,CAAA,MAAA,EAAA,EAAA,WAAA,EAAA,MAAM,EAAC,KAAK,EAAC,iBAAiB,EAAC,IAAI,EAAC,OAAO,EAAA,EACzD,KAAK,IAAI,SAAS,CAAC,oBAAoB,CAAC,CACnC,CACG,KAEX,CAAgB,CAAA,MAAA,EAAA,EAAA,WAAA,EAAA,OAAO,EAAC,KAAK,EAAC,iBAAiB,EAAC,IAAI,EAAC,OAAO,EAAA,EAC1D,KAAK,IAAI,SAAS,CAAC,iBAAiB,CAAC,CAChC,CACP,CACc;AAElB;;;;"}
1
+ {"version":3,"file":"component-9XV7ykPK.js","sources":["src/internal/functional-components/spin/component.tsx"],"sourcesContent":["import type { FunctionalComponent as FC } from '@stencil/core';\nimport { Fragment, h } from '@stencil/core';\n\nimport { translate } from '../../../i18n';\nimport { bem } from '../../../schema/bem-registry';\nimport type { SpinVariantType } from '../../props';\nimport { BemRootNodeFC } from '../bem-root-node/component';\nimport type { FunctionalComponentProps } from '../generic-types';\nimport type { SpinApi } from './api';\n\nconst spinBem = bem.forBlock('kol-spin');\nconst BEM_CLASS_SPIN__LOADER = spinBem('loader');\nconst DOT_ELEMENTS = ['1', '2', '3', 'neutral'] as const;\n\nfunction renderSpinVariant(variant: SpinVariantType): unknown {\n\tswitch (variant) {\n\t\tcase 'cycle':\n\t\t\treturn <span class={BEM_CLASS_SPIN__LOADER}></span>;\n\t\tcase 'none':\n\t\t\treturn <slot name=\"expert\"></slot>;\n\t\tdefault:\n\t\t\treturn DOT_ELEMENTS.map((element) => <span class={spinBem('spinner-element', { [element]: true })}></span>);\n\t}\n}\n\nexport const SpinFC: FC<FunctionalComponentProps<SpinApi>> = (props) => {\n\tconst { show, label, variant } = props;\n\n\treturn (\n\t\t<BemRootNodeFC block=\"kol-spin\">\n\t\t\t{show ? (\n\t\t\t\t<Fragment>\n\t\t\t\t\t<span class={spinBem('spinner', { [variant]: true })}>{renderSpinVariant(variant)}</span>\n\t\t\t\t\t<span aria-busy=\"true\" class=\"visually-hidden\" role=\"alert\">\n\t\t\t\t\t\t{label || translate('kol-action-running')}\n\t\t\t\t\t</span>\n\t\t\t\t</Fragment>\n\t\t\t) : (\n\t\t\t\t<span aria-busy=\"false\" class=\"visually-hidden\" role=\"alert\">\n\t\t\t\t\t{label || translate('kol-action-done')}\n\t\t\t\t</span>\n\t\t\t)}\n\t\t</BemRootNodeFC>\n\t);\n};\n"],"names":[],"mappings":";;;;;;;;AAUA,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;AACxC,MAAM,sBAAsB,GAAG,OAAO,CAAC,QAAQ,CAAC;AAChD,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,CAAU;AAExD,SAAS,iBAAiB,CAAC,OAAwB,EAAA;IAClD,QAAQ,OAAO;AACd,QAAA,KAAK,OAAO;YACX,OAAO,CAAM,CAAA,MAAA,EAAA,EAAA,KAAK,EAAE,sBAAsB,GAAS;AACpD,QAAA,KAAK,MAAM;YACV,OAAO,CAAM,CAAA,MAAA,EAAA,EAAA,IAAI,EAAC,QAAQ,GAAQ;AACnC,QAAA;AACC,YAAA,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,CAAM,CAAA,MAAA,EAAA,EAAA,KAAK,EAAE,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC,EAAS,CAAA,CAAC;;AAE9G;AAEa,MAAA,MAAM,GAA0C,CAAC,KAAK,KAAI;IACtE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,KAAK;IAEtC,QACC,CAAA,CAAC,aAAa,EAAA,EAAC,KAAK,EAAC,UAAU,EAC7B,EAAA,IAAI,IACJ,EAAC,QAAQ,EAAA,IAAA,EACR,CAAA,CAAA,MAAA,EAAA,EAAM,KAAK,EAAE,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC,EAAA,EAAG,iBAAiB,CAAC,OAAO,CAAC,CAAQ,EACzF,CAAgB,CAAA,MAAA,EAAA,EAAA,WAAA,EAAA,MAAM,EAAC,KAAK,EAAC,iBAAiB,EAAC,IAAI,EAAC,OAAO,EAAA,EACzD,KAAK,IAAI,SAAS,CAAC,oBAAoB,CAAC,CACnC,CACG,KAEX,CAAgB,CAAA,MAAA,EAAA,EAAA,WAAA,EAAA,OAAO,EAAC,KAAK,EAAC,iBAAiB,EAAC,IAAI,EAAC,OAAO,EAAA,EAC1D,KAAK,IAAI,SAAS,CAAC,iBAAiB,CAAC,CAChC,CACP,CACc;AAElB;;;;"}
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * KoliBri - The accessible HTML-Standard
3
3
  */
4
- import{a as s}from"./tslib.es6-QNbPBOk5.js";import{h as o}from"./index-BtYjJomD.js";import{b as i}from"./bem-registry-Bma6U-JA.js";import{c as e}from"./clsx-COFh-Vc8.js";const n=i.forBlock("kol-icon");const r=n();const a=n("icon");const t=i=>{var{class:n,icons:t,label:c}=i,l=s(i,["class","icons","label"]);const m=(c===null||c===void 0?void 0:c.length)>0;return o("i",Object.assign({},l,{"aria-hidden":m?undefined:"true","aria-label":m?c:undefined,class:e(r,a,t,n),role:m?"img":"presentation"}))};export{t as I};
5
- //# sourceMappingURL=component-BauANlCU.js.map
4
+ import{a as s}from"./tslib.es6-QNbPBOk5.js";import{h as o}from"./index-CyLMYdnq.js";import{b as i}from"./bem-registry-Bma6U-JA.js";import{c as n}from"./clsx-COFh-Vc8.js";const e=i.forBlock("kol-icon");const r=e();const a=e("icon");const t=i=>{var{class:e,icons:t,label:c}=i,l=s(i,["class","icons","label"]);const m=(c===null||c===void 0?void 0:c.length)>0;return o("i",Object.assign({},l,{"aria-hidden":m?undefined:"true","aria-label":m?c:undefined,class:n(r,a,t,e),role:m?"img":"presentation"}))};export{t as I};
5
+ //# sourceMappingURL=component-B5MUeex-.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"component-BauANlCU.js","sources":["src/internal/functional-components/icon/component.tsx"],"sourcesContent":["import type { FunctionalComponent as FC } from '@stencil/core';\nimport { h } from '@stencil/core';\n\nimport { bem } from '../../../schema/bem-registry';\nimport clsx from '../../../utils/clsx';\nimport type { FunctionalComponentProps } from '../generic-types';\nimport type { IconApi } from './api';\n\nconst iconBem = bem.forBlock('kol-icon');\nconst BEM_CLASS_ICON = iconBem();\nconst BEM_CLASS_ICON__ICON = iconBem('icon');\n\nexport const IconFC: FC<FunctionalComponentProps<IconApi>> = ({ class: classNames, icons, label, ...htmlAttributes }) => {\n\t// label is always a normalized string ('' when unset — see labelProp definition)\n\tconst hasAriaLabel = label?.length > 0;\n\treturn (\n\t\t<i\n\t\t\t{...htmlAttributes}\n\t\t\t/**\n\t\t\t * Die Auszeichnung `aria-hidden` ist eigentlich nicht erforderlich, da die aktuellen\n\t\t\t * Screenreader, wie NVDA und JAWS, es auch ohne `aria-hidden` nicht vorlesen.\n\t\t\t *\n\t\t\t * Referenz: https://www.w3.org/TR/wai-aria/states_and_properties#aria-hidden\n\t\t\t */\n\t\t\taria-hidden={hasAriaLabel ? undefined : 'true'}\n\t\t\taria-label={hasAriaLabel ? label : undefined}\n\t\t\tclass={clsx(BEM_CLASS_ICON, BEM_CLASS_ICON__ICON, icons, classNames)}\n\t\t\trole={hasAriaLabel ? 'img' : 'presentation'}\n\t\t/>\n\t);\n};\n"],"names":[],"mappings":";;;;;;;;AAQA,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;AACxC,MAAM,cAAc,GAAG,OAAO,EAAE;AAChC,MAAM,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;AAE/B,MAAA,MAAM,GAA0C,CAAC,EAAsD,KAAI;IAA1D,IAAA,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAA,GAAA,EAAqB,EAAhB,cAAc,GAApD,MAAA,CAAA,EAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,OAAA,CAAsD,CAAF;IAEjH,MAAM,YAAY,GAAG,CAAA,KAAK,KAAL,IAAA,IAAA,KAAK,KAAL,MAAA,GAAA,MAAA,GAAA,KAAK,CAAE,MAAM,IAAG,CAAC;AACtC,IAAA,QACC,yBACK,cAAc,EAAA,EAAA,aAAA,EAOL,YAAY,GAAG,SAAS,GAAG,MAAM,EAAA,YAAA,EAClC,YAAY,GAAG,KAAK,GAAG,SAAS,EAC5C,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,oBAAoB,EAAE,KAAK,EAAE,UAAU,CAAC,EACpE,IAAI,EAAE,YAAY,GAAG,KAAK,GAAG,cAAc,EAC1C,CAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"component-B5MUeex-.js","sources":["src/internal/functional-components/icon/component.tsx"],"sourcesContent":["import type { FunctionalComponent as FC } from '@stencil/core';\nimport { h } from '@stencil/core';\n\nimport { bem } from '../../../schema/bem-registry';\nimport clsx from '../../../utils/clsx';\nimport type { FunctionalComponentProps } from '../generic-types';\nimport type { IconApi } from './api';\n\nconst iconBem = bem.forBlock('kol-icon');\nconst BEM_CLASS_ICON = iconBem();\nconst BEM_CLASS_ICON__ICON = iconBem('icon');\n\nexport const IconFC: FC<FunctionalComponentProps<IconApi>> = ({ class: classNames, icons, label, ...htmlAttributes }) => {\n\t// label is always a normalized string ('' when unset — see labelProp definition)\n\tconst hasAriaLabel = label?.length > 0;\n\treturn (\n\t\t<i\n\t\t\t{...htmlAttributes}\n\t\t\t/**\n\t\t\t * Die Auszeichnung `aria-hidden` ist eigentlich nicht erforderlich, da die aktuellen\n\t\t\t * Screenreader, wie NVDA und JAWS, es auch ohne `aria-hidden` nicht vorlesen.\n\t\t\t *\n\t\t\t * Referenz: https://www.w3.org/TR/wai-aria/states_and_properties#aria-hidden\n\t\t\t */\n\t\t\taria-hidden={hasAriaLabel ? undefined : 'true'}\n\t\t\taria-label={hasAriaLabel ? label : undefined}\n\t\t\tclass={clsx(BEM_CLASS_ICON, BEM_CLASS_ICON__ICON, icons, classNames)}\n\t\t\trole={hasAriaLabel ? 'img' : 'presentation'}\n\t\t/>\n\t);\n};\n"],"names":[],"mappings":";;;;;;;;AAQA,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;AACxC,MAAM,cAAc,GAAG,OAAO,EAAE;AAChC,MAAM,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;AAE/B,MAAA,MAAM,GAA0C,CAAC,EAAsD,KAAI;IAA1D,IAAA,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAA,GAAA,EAAqB,EAAhB,cAAc,GAApD,MAAA,CAAA,EAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,OAAA,CAAsD,CAAF;IAEjH,MAAM,YAAY,GAAG,CAAA,KAAK,KAAL,IAAA,IAAA,KAAK,KAAL,MAAA,GAAA,MAAA,GAAA,KAAK,CAAE,MAAM,IAAG,CAAC;AACtC,IAAA,QACC,yBACK,cAAc,EAAA,EAAA,aAAA,EAOL,YAAY,GAAG,SAAS,GAAG,MAAM,EAAA,YAAA,EAClC,YAAY,GAAG,KAAK,GAAG,SAAS,EAC5C,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,oBAAoB,EAAE,KAAK,EAAE,UAAU,CAAC,EACpE,IAAI,EAAE,YAAY,GAAG,KAAK,GAAG,cAAc,EAC1C,CAAA,CAAA;AAEJ;;;;"}
@@ -0,0 +1,5 @@
1
+ /*!
2
+ * KoliBri - The accessible HTML-Standard
3
+ */
4
+ import{a as s}from"./tslib.es6-QNbPBOk5.js";import{h as o}from"./index-CyLMYdnq.js";import{c}from"./clsx-COFh-Vc8.js";import{g as r}from"./block-bem-BWLThqqc.js";const m=(m,t)=>{var{block:i,modifiers:e,class:n,component:a="div"}=m,l=s(m,["block","modifiers","class","component"]);const b=r(i);const p=a;return o(p,Object.assign({class:c(b(e),n)},l),t)};export{m as B};
5
+ //# sourceMappingURL=component-BR-6tKab.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"component-B5OmtChm.js","sources":["src/internal/functional-components/bem-root-node/component.tsx"],"sourcesContent":["import type { FunctionalComponent as FC } from '@stencil/core';\nimport { h } from '@stencil/core';\nimport type { JSXBase } from '@stencil/core/internal';\n\nimport type { KoliBriComponentsBemSchema } from '../../../schema/bem-registry';\nimport clsx from '../../../utils/clsx';\nimport type { BlockModifiers } from './block-bem';\nimport { getBlockBem } from './block-bem';\n\ntype FCChildren = Parameters<FC>[1];\n\ntype BemRootNodeFCProps<TBlock extends keyof KoliBriComponentsBemSchema> = {\n\t/**\n\t * BEM block name — must be a key registered in `KoliBriComponentsBemSchema`.\n\t * Constrains `modifiers` to the exact modifier set defined in `bem-registry.ts`.\n\t */\n\tblock: TBlock;\n\t/**\n\t * BEM block modifiers. Keys are validated against the schema (e.g. `'disabled'`, `'inline'`).\n\t * No `kol-link--` prefix needed — typed-bem adds it automatically.\n\t */\n\tmodifiers?: BlockModifiers<TBlock>;\n\t/**\n\t * Additional classes forwarded 1:1 from the FC tag onto the root node.\n\t * Typically the `class` prop received by the surrounding Functional Component\n\t * (i.e. the `class` attribute set by a parent component).\n\t */\n\tclass?: JSXBase.HTMLAttributes<HTMLElement>['class'];\n\t/**\n\t * Element of the root node, `div` by default. `abbr` is the abbreviation itself, `fieldset` groups\n\t * the options of a radio group, `label` wraps the native control of a checkbox or radio, `svg` is\n\t * the root of a graphic.\n\t */\n\tcomponent?: 'abbr' | 'div' | 'fieldset' | 'label' | 'svg';\n} & Partial<Omit<JSXBase.HTMLAttributes<HTMLDivElement>, 'class'>> &\n\tPartial<Omit<JSXBase.SVGAttributes<SVGSVGElement>, 'class' | keyof JSXBase.HTMLAttributes<HTMLDivElement>>>;\n\n/**\n * Single-Root BEM wrapper for all Skeleton Functional Components.\n *\n * Responsibilities:\n * - Renders exactly one root node — a `<div>` unless `component` names another element —\n * enforcing the Single-Root FC rule.\n * - Accepts a `block` name and typed `modifiers` from `KoliBriComponentsBemSchema`.\n * - Calls `bem.forBlock(block)(modifiers)` internally to generate the class string.\n * - Merges the result with the optional `class` prop.\n * - Forwards all remaining HTML attributes (`id`, `role`, `aria-*`, `ref`, …) onto the root\n * node — legacy functional components spread these onto their root, and internal\n * consumers (form, form-field-msg, toast-item) rely on that passthrough.\n *\n * Usage:\n * ```tsx\n * export const LinkFC: FC<LinkFCProps> = ({ ..., class: hostClass, disabled }, children) => (\n * <BemRootNodeFC\n * block=\"kol-link\"\n * modifiers={{ disabled, 'external-link': isExternal }}\n * class={hostClass}\n * >\n * <a class={linkBem('interactive-element')}>…</a>\n * </BemRootNodeFC>\n * );\n * ```\n */\nexport const BemRootNodeFC = <TBlock extends keyof KoliBriComponentsBemSchema>(\n\t{ block, modifiers, class: hostClass, component: Component = 'div', ...rest }: BemRootNodeFCProps<TBlock>,\n\tchildren: FCChildren,\n) => {\n\tconst blockBem = getBlockBem(block);\n\t// The attributes are typed for a `div` plus the SVG attributes; `abbr`, `fieldset` and `label` accept the same global attributes.\n\tconst Root = Component as 'div';\n\treturn (\n\t\t<Root class={clsx(blockBem(modifiers), hostClass)} {...rest}>\n\t\t\t{children}\n\t\t</Root>\n\t);\n};\n"],"names":[],"mappings":";;;;;;;;MA+Da,aAAa,GAAG,CAC5B,EAAyG,EACzG,QAAoB,KACjB;AAFH,IAAA,IAAA,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,GAAG,KAAK,EAAA,GAAA,EAAuC,EAAlC,IAAI,GAAA,MAAA,CAAA,EAAA,EAA3E,4CAA6E,CAAF;AAG3E,IAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC;IAEnC,MAAM,IAAI,GAAG,SAAkB;AAC/B,IAAA,QACC,EAAC,IAAI,EAAA,MAAA,CAAA,MAAA,CAAA,EAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,EAAA,EAAM,IAAI,CACzD,EAAA,QAAQ,CACH;AAET;;;;"}
1
+ {"version":3,"file":"component-BR-6tKab.js","sources":["src/internal/functional-components/bem-root-node/component.tsx"],"sourcesContent":["import type { FunctionalComponent as FC } from '@stencil/core';\nimport { h } from '@stencil/core';\nimport type { JSXBase } from '@stencil/core/internal';\n\nimport type { KoliBriComponentsBemSchema } from '../../../schema/bem-registry';\nimport clsx from '../../../utils/clsx';\nimport type { BlockModifiers } from './block-bem';\nimport { getBlockBem } from './block-bem';\n\ntype FCChildren = Parameters<FC>[1];\n\ntype BemRootNodeFCProps<TBlock extends keyof KoliBriComponentsBemSchema> = {\n\t/**\n\t * BEM block name — must be a key registered in `KoliBriComponentsBemSchema`.\n\t * Constrains `modifiers` to the exact modifier set defined in `bem-registry.ts`.\n\t */\n\tblock: TBlock;\n\t/**\n\t * BEM block modifiers. Keys are validated against the schema (e.g. `'disabled'`, `'inline'`).\n\t * No `kol-link--` prefix needed — typed-bem adds it automatically.\n\t */\n\tmodifiers?: BlockModifiers<TBlock>;\n\t/**\n\t * Additional classes forwarded 1:1 from the FC tag onto the root node.\n\t * Typically the `class` prop received by the surrounding Functional Component\n\t * (i.e. the `class` attribute set by a parent component).\n\t */\n\tclass?: JSXBase.HTMLAttributes<HTMLElement>['class'];\n\t/**\n\t * Element of the root node, `div` by default. `abbr` is the abbreviation itself, `fieldset` groups\n\t * the options of a radio group, `label` wraps the native control of a checkbox or radio, `svg` is\n\t * the root of a graphic.\n\t */\n\tcomponent?: 'abbr' | 'div' | 'fieldset' | 'label' | 'svg';\n} & Partial<Omit<JSXBase.HTMLAttributes<HTMLDivElement>, 'class'>> &\n\tPartial<Omit<JSXBase.SVGAttributes<SVGSVGElement>, 'class' | keyof JSXBase.HTMLAttributes<HTMLDivElement>>>;\n\n/**\n * Single-Root BEM wrapper for all Skeleton Functional Components.\n *\n * Responsibilities:\n * - Renders exactly one root node — a `<div>` unless `component` names another element —\n * enforcing the Single-Root FC rule.\n * - Accepts a `block` name and typed `modifiers` from `KoliBriComponentsBemSchema`.\n * - Calls `bem.forBlock(block)(modifiers)` internally to generate the class string.\n * - Merges the result with the optional `class` prop.\n * - Forwards all remaining HTML attributes (`id`, `role`, `aria-*`, `ref`, …) onto the root\n * node — legacy functional components spread these onto their root, and internal\n * consumers (form, form-field-msg, toast-item) rely on that passthrough.\n *\n * Usage:\n * ```tsx\n * export const LinkFC: FC<LinkFCProps> = ({ ..., class: hostClass, disabled }, children) => (\n * <BemRootNodeFC\n * block=\"kol-link\"\n * modifiers={{ disabled, 'external-link': isExternal }}\n * class={hostClass}\n * >\n * <a class={linkBem('interactive-element')}>…</a>\n * </BemRootNodeFC>\n * );\n * ```\n */\nexport const BemRootNodeFC = <TBlock extends keyof KoliBriComponentsBemSchema>(\n\t{ block, modifiers, class: hostClass, component: Component = 'div', ...rest }: BemRootNodeFCProps<TBlock>,\n\tchildren: FCChildren,\n) => {\n\tconst blockBem = getBlockBem(block);\n\t// The attributes are typed for a `div` plus the SVG attributes; `abbr`, `fieldset` and `label` accept the same global attributes.\n\tconst Root = Component as 'div';\n\treturn (\n\t\t<Root class={clsx(blockBem(modifiers), hostClass)} {...rest}>\n\t\t\t{children}\n\t\t</Root>\n\t);\n};\n"],"names":[],"mappings":";;;;;;;;MA+Da,aAAa,GAAG,CAC5B,EAAyG,EACzG,QAAoB,KACjB;AAFH,IAAA,IAAA,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,GAAG,KAAK,EAAA,GAAA,EAAuC,EAAlC,IAAI,GAAA,MAAA,CAAA,EAAA,EAA3E,4CAA6E,CAAF;AAG3E,IAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC;IAEnC,MAAM,IAAI,GAAG,SAAkB;AAC/B,IAAA,QACC,EAAC,IAAI,EAAA,MAAA,CAAA,MAAA,CAAA,EAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,EAAA,EAAM,IAAI,CACzD,EAAA,QAAQ,CACH;AAET;;;;"}
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * KoliBri - The accessible HTML-Standard
3
3
  */
4
- import{h as o}from"./index-BtYjJomD.js";import{S as t}from"./component-DbsunX7x.js";const l=({label:l,badgeText:e,id:i,refFloating:a})=>o("div",{class:"kol-tooltip__floating",hidden:l.length===0,ref:a},o("div",{class:"kol-tooltip__arrow"}),o(t,{class:"kol-tooltip__content",badgeText:e,id:i,label:l}));export{l as T};
5
- //# sourceMappingURL=component-ArZwqu6c.js.map
4
+ import{h as o}from"./index-CyLMYdnq.js";import{S as t}from"./component-D_xOkOl6.js";const l=({label:l,badgeText:e,id:i,refFloating:a})=>o("div",{class:"kol-tooltip__floating",hidden:l.length===0,ref:a},o("div",{class:"kol-tooltip__arrow"}),o(t,{class:"kol-tooltip__content",badgeText:e,id:i,label:l}));export{l as T};
5
+ //# sourceMappingURL=component-Bj13sPTL.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"component-ArZwqu6c.js","sources":["src/internal/functional-components/tooltip/component.tsx"],"sourcesContent":["import type { FunctionalComponent as FC } from '@stencil/core';\nimport { h } from '@stencil/core';\n\nimport type { TooltipAlignPropType } from '../../../schema';\nimport type { FunctionalComponentProps } from '../generic-types';\nimport { SpanFC } from '../span/component';\nimport type { TooltipApi } from './api';\n\ntype TooltipFCProps = Pick<FunctionalComponentProps<TooltipApi>, 'label'> & {\n\tbadgeText?: string;\n\tid?: string;\n\talign?: TooltipAlignPropType;\n\trefFloating: (el?: HTMLDivElement) => void;\n};\n\nexport const TooltipFC: FC<TooltipFCProps> = ({ label, badgeText, id, refFloating }) => {\n\treturn (\n\t\t<div class=\"kol-tooltip__floating\" hidden={label.length === 0} ref={refFloating}>\n\t\t\t<div class=\"kol-tooltip__arrow\" />\n\t\t\t<SpanFC class=\"kol-tooltip__content\" badgeText={badgeText} id={id} label={label} />\n\t\t</div>\n\t);\n};\n"],"names":[],"mappings":";;;;;;AAeO,MAAM,SAAS,GAAuB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,KAAI;IACtF,QACC,CAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,uBAAuB,EAAC,MAAM,EAAE,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,GAAG,EAAE,WAAW,EAAA,EAC9E,CAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,oBAAoB,EAAG,CAAA,EAClC,CAAC,CAAA,MAAM,IAAC,KAAK,EAAC,sBAAsB,EAAC,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAI,CAAA,CAC9E;AAER;;;;"}
1
+ {"version":3,"file":"component-Bj13sPTL.js","sources":["src/internal/functional-components/tooltip/component.tsx"],"sourcesContent":["import type { FunctionalComponent as FC } from '@stencil/core';\nimport { h } from '@stencil/core';\n\nimport type { TooltipAlignPropType } from '../../../schema';\nimport type { FunctionalComponentProps } from '../generic-types';\nimport { SpanFC } from '../span/component';\nimport type { TooltipApi } from './api';\n\ntype TooltipFCProps = Pick<FunctionalComponentProps<TooltipApi>, 'label'> & {\n\tbadgeText?: string;\n\tid?: string;\n\talign?: TooltipAlignPropType;\n\trefFloating: (el?: HTMLDivElement) => void;\n};\n\nexport const TooltipFC: FC<TooltipFCProps> = ({ label, badgeText, id, refFloating }) => {\n\treturn (\n\t\t<div class=\"kol-tooltip__floating\" hidden={label.length === 0} ref={refFloating}>\n\t\t\t<div class=\"kol-tooltip__arrow\" />\n\t\t\t<SpanFC class=\"kol-tooltip__content\" badgeText={badgeText} id={id} label={label} />\n\t\t</div>\n\t);\n};\n"],"names":[],"mappings":";;;;;;AAeO,MAAM,SAAS,GAAuB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,KAAI;IACtF,QACC,CAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,uBAAuB,EAAC,MAAM,EAAE,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,GAAG,EAAE,WAAW,EAAA,EAC9E,CAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,oBAAoB,EAAG,CAAA,EAClC,CAAC,CAAA,MAAM,IAAC,KAAK,EAAC,sBAAsB,EAAC,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAI,CAAA,CAC9E;AAER;;;;"}
@@ -0,0 +1,5 @@
1
+ /*!
2
+ * KoliBri - The accessible HTML-Standard
3
+ */
4
+ import{a as e}from"./tslib.es6-QNbPBOk5.js";import{h as o,F as l}from"./index-CyLMYdnq.js";import{g as s}from"./Heading-DAPZwXCt.js";import{t as n}from"./i18n-CEIPukO1.js";import{b as a}from"./bem-registry-Bma6U-JA.js";import{c as r}from"./clsx-COFh-Vc8.js";import{B as t}from"./component-BR-6tKab.js";import{B as i}from"./component-CQJ_jIZm.js";import{I as c}from"./component-B5MUeex-.js";const d=a.forBlock("kol-alert");const f=d("icon");const u={error:{label:n("kol-error"),icon:"kolicon-alert-error"},info:{label:n("kol-info"),icon:"kolicon-alert-info"},warning:{label:n("kol-warning"),icon:"kolicon-alert-warning"},success:{label:n("kol-success"),icon:"kolicon-alert-success"},default:{label:n("kol-message"),icon:"kolicon-alert-info"}};const p=({type:e="default"})=>{const s=u[e||"default"];return o(l,null,o("span",{class:"visually-hidden"},s.label),o(c,{class:f,label:"",icons:s.icon}))};const m=a.forBlock("kol-alert");const k=m("closer");const b=m("content");const h=undefined;const C=(l,a)=>{const{alert:c,class:d,closerAriaDescriptionId:f,handleCloserClick:u,hasCloser:C,headingId:g,label:y,level:j,refCloserButton:B,refCloserTooltip:I,type:v,variant:x}=l,A=e(l,["alert","class","closerAriaDescriptionId","handleCloserClick","hasCloser","headingId","label","level","refCloserButton","refCloserTooltip","type","variant"]);const D=n("kol-close-alert");const w=s(j);return o(t,Object.assign({block:"kol-alert",class:d,modifiers:{hasCloser:C===true,[`type-${v}`]:true,[`variant-${x}`]:true},role:c?"alert":undefined},A),o(p,{type:v}),y.length>0&&o(w,{class:r("kol-headline",`kol-headline--${w}`,m("heading",{[`h${j}`]:true}),"kol-headline--single"),id:g},y),C&&o(i,{accessKey:"",ariaControls:"",ariaDescription:y.trim(),ariaDescriptionId:f,ariaExpanded:h,ariaHasPopup:"",ariaSelected:h,class:r(k,"kol-close-button"),customClass:"",disabled:false,handleBlur:()=>undefined,handleClick:u,handleFocus:()=>undefined,handleMouseDown:()=>undefined,hideLabel:true,icons:{left:{icon:"kolicon-cross"}},id:"",inline:false,label:D,name:"",on:{},refButton:B,refTooltip:I,role:h,shortKey:"",tabIndex:h,tooltipAlign:"left",type:"button",variant:["normal"]}),o("div",{"aria-describedby":y.length>0?g:undefined,class:b},a))};export{C as A};
5
+ //# sourceMappingURL=component-BrOA7gRZ.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"component-DWiKUdpa.js","sources":["src/internal/functional-components/alert/icon.tsx","src/internal/functional-components/alert/component.tsx"],"sourcesContent":["import { Fragment, h, type FunctionalComponent as FC } from '@stencil/core';\n\nimport { translate } from '../../../i18n';\nimport type { AlertType } from '../../../schema';\nimport { bem } from '../../../schema/bem-registry';\nimport { IconFC } from '../icon/component';\n\nconst alertBem = bem.forBlock('kol-alert');\nconst BEM_CLASS_ALERT__ICON = alertBem('icon');\n\n/**\n * The icon uses a visually-hidden span instead of an aria-label because the Alert might be referenced as content for aria-describedby.\n * In this scenario, Firefox with NVDA does not properly read the aria-label, so the visually-hidden span ensures correct screen reader behavior.\n * @see https://github.com/public-ui/kolibri/issues/7119\n */\nconst ALERT_ICON_CONFIG: Record<AlertType | 'default', { label: string; icon: string }> = {\n\terror: {\n\t\tlabel: translate('kol-error'),\n\t\ticon: 'kolicon-alert-error',\n\t},\n\tinfo: {\n\t\tlabel: translate('kol-info'),\n\t\ticon: 'kolicon-alert-info',\n\t},\n\twarning: {\n\t\tlabel: translate('kol-warning'),\n\t\ticon: 'kolicon-alert-warning',\n\t},\n\tsuccess: {\n\t\tlabel: translate('kol-success'),\n\t\ticon: 'kolicon-alert-success',\n\t},\n\tdefault: {\n\t\tlabel: translate('kol-message'),\n\t\ticon: 'kolicon-alert-info',\n\t},\n};\n\nexport const AlertIconFC: FC<{ type?: AlertType }> = ({ type = 'default' }) => {\n\tconst config = ALERT_ICON_CONFIG[type || 'default'];\n\treturn (\n\t\t<>\n\t\t\t<span class=\"visually-hidden\">{config.label}</span>\n\t\t\t<IconFC class={BEM_CLASS_ALERT__ICON} label=\"\" icons={config.icon} />\n\t\t</>\n\t);\n};\n","import type { FunctionalComponent as FC } from '@stencil/core';\nimport { h } from '@stencil/core';\n\nimport { getHeadlineTag } from '../../../functional-components/Heading/Heading';\nimport { translate } from '../../../i18n';\nimport { bem } from '../../../schema/bem-registry';\nimport clsx from '../../../utils/clsx';\nimport { BemRootNodeFC } from '../bem-root-node/component';\nimport { ButtonFC } from '../button/component';\nimport type { FunctionalComponentProps } from '../generic-types';\nimport type { AlertApi } from './api';\nimport { AlertIconFC } from './icon';\n\nconst alertBem = bem.forBlock('kol-alert');\nconst BEM_CLASS_ALERT__CLOSER = alertBem('closer');\nconst BEM_CLASS_ALERT__CONTENT = alertBem('content');\n\n/**\n * The closer is a plain button: no role override, and an unset tabindex must not render as\n * `tabindex=\"0\"` — buttons are natively tabbable and the attribute would pin them into the tab\n * order. `kol-button` reaches the same undefined render props via `unsetRenderProp`.\n */\nconst UNSET_BUTTON_PROP = undefined as never;\n\n/**\n * Renders the alert as a single BEM root: icon, optional heading, optional closer button and the\n * content region.\n *\n * The closer is rendered as `ButtonFC` directly — its BEM root carries both `kol-button` and\n * `kol-alert__closer` on the same element, so theme styles that targeted the closer through a\n * descendant `.kol-button` (or `.kol-button--normal`) now target the compound selector instead.\n * The tooltip behavior for the closer (show on hover/focus) is composed by the web component,\n * which owns `refCloserButton`/`refCloserTooltip` — a plain functional component has no lifecycle\n * to sync the listeners in.\n *\n * All remaining HTML attributes (`id`, `role`, `aria-*`, `ref`, …) are forwarded onto the root\n * node — internal consumers (form, form-field-msg, toast-item) rely on that passthrough.\n */\n/** The consumer's callbacks stay with the web component, which invokes them in its closer handler. */\nexport type AlertFCProps = Omit<FunctionalComponentProps<AlertApi>, 'on'>;\n\nexport const AlertFC: FC<AlertFCProps> = (props, children) => {\n\tconst {\n\t\talert,\n\t\tclass: classNames,\n\t\tcloserAriaDescriptionId,\n\t\thandleCloserClick,\n\t\thasCloser,\n\t\theadingId,\n\t\tlabel,\n\t\tlevel,\n\t\trefCloserButton,\n\t\trefCloserTooltip,\n\t\ttype,\n\t\tvariant,\n\t\t...other\n\t} = props;\n\n\tconst translateCloseAlert = translate('kol-close-alert');\n\tconst HeadlineTag = getHeadlineTag(level);\n\n\treturn (\n\t\t<BemRootNodeFC\n\t\t\tblock=\"kol-alert\"\n\t\t\tclass={classNames}\n\t\t\tmodifiers={{\n\t\t\t\thasCloser: hasCloser === true,\n\t\t\t\t[`type-${type}`]: true,\n\t\t\t\t[`variant-${variant}`]: true,\n\t\t\t}}\n\t\t\trole={alert ? 'alert' : undefined}\n\t\t\t{...other}\n\t\t>\n\t\t\t<AlertIconFC type={type} />\n\n\t\t\t{label.length > 0 && (\n\t\t\t\t<HeadlineTag\n\t\t\t\t\tclass={clsx('kol-headline', `kol-headline--${HeadlineTag}`, alertBem('heading', { [`h${level}`]: true }), 'kol-headline--single')}\n\t\t\t\t\tid={headingId}\n\t\t\t\t>\n\t\t\t\t\t{label}\n\t\t\t\t</HeadlineTag>\n\t\t\t)}\n\n\t\t\t{hasCloser && (\n\t\t\t\t<ButtonFC\n\t\t\t\t\taccessKey=\"\"\n\t\t\t\t\tariaControls=\"\"\n\t\t\t\t\tariaDescription={label.trim()}\n\t\t\t\t\tariaDescriptionId={closerAriaDescriptionId}\n\t\t\t\t\tariaExpanded={UNSET_BUTTON_PROP}\n\t\t\t\t\tariaHasPopup=\"\"\n\t\t\t\t\tariaSelected={UNSET_BUTTON_PROP}\n\t\t\t\t\tclass={clsx(BEM_CLASS_ALERT__CLOSER, 'kol-close-button')}\n\t\t\t\t\tcustomClass=\"\"\n\t\t\t\t\tdisabled={false}\n\t\t\t\t\thandleBlur={() => undefined}\n\t\t\t\t\thandleClick={handleCloserClick}\n\t\t\t\t\thandleFocus={() => undefined}\n\t\t\t\t\thandleMouseDown={() => undefined}\n\t\t\t\t\thideLabel\n\t\t\t\t\ticons={{\n\t\t\t\t\t\tleft: {\n\t\t\t\t\t\t\ticon: 'kolicon-cross',\n\t\t\t\t\t\t},\n\t\t\t\t\t}}\n\t\t\t\t\tid=\"\"\n\t\t\t\t\tinline={false}\n\t\t\t\t\tlabel={translateCloseAlert}\n\t\t\t\t\tname=\"\"\n\t\t\t\t\ton={{}}\n\t\t\t\t\trefButton={refCloserButton}\n\t\t\t\t\trefTooltip={refCloserTooltip}\n\t\t\t\t\trole={UNSET_BUTTON_PROP}\n\t\t\t\t\tshortKey=\"\"\n\t\t\t\t\ttabIndex={UNSET_BUTTON_PROP}\n\t\t\t\t\ttooltipAlign=\"left\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tvariant={['normal']}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t<div aria-describedby={label.length > 0 ? headingId : undefined} class={BEM_CLASS_ALERT__CONTENT}>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t</BemRootNodeFC>\n\t);\n};\n"],"names":["alertBem"],"mappings":"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"}
1
+ {"version":3,"file":"component-BrOA7gRZ.js","sources":["src/internal/functional-components/alert/icon.tsx","src/internal/functional-components/alert/component.tsx"],"sourcesContent":["import { Fragment, h, type FunctionalComponent as FC } from '@stencil/core';\n\nimport { translate } from '../../../i18n';\nimport type { AlertType } from '../../../schema';\nimport { bem } from '../../../schema/bem-registry';\nimport { IconFC } from '../icon/component';\n\nconst alertBem = bem.forBlock('kol-alert');\nconst BEM_CLASS_ALERT__ICON = alertBem('icon');\n\n/**\n * The icon uses a visually-hidden span instead of an aria-label because the Alert might be referenced as content for aria-describedby.\n * In this scenario, Firefox with NVDA does not properly read the aria-label, so the visually-hidden span ensures correct screen reader behavior.\n * @see https://github.com/public-ui/kolibri/issues/7119\n */\nconst ALERT_ICON_CONFIG: Record<AlertType | 'default', { label: string; icon: string }> = {\n\terror: {\n\t\tlabel: translate('kol-error'),\n\t\ticon: 'kolicon-alert-error',\n\t},\n\tinfo: {\n\t\tlabel: translate('kol-info'),\n\t\ticon: 'kolicon-alert-info',\n\t},\n\twarning: {\n\t\tlabel: translate('kol-warning'),\n\t\ticon: 'kolicon-alert-warning',\n\t},\n\tsuccess: {\n\t\tlabel: translate('kol-success'),\n\t\ticon: 'kolicon-alert-success',\n\t},\n\tdefault: {\n\t\tlabel: translate('kol-message'),\n\t\ticon: 'kolicon-alert-info',\n\t},\n};\n\nexport const AlertIconFC: FC<{ type?: AlertType }> = ({ type = 'default' }) => {\n\tconst config = ALERT_ICON_CONFIG[type || 'default'];\n\treturn (\n\t\t<>\n\t\t\t<span class=\"visually-hidden\">{config.label}</span>\n\t\t\t<IconFC class={BEM_CLASS_ALERT__ICON} label=\"\" icons={config.icon} />\n\t\t</>\n\t);\n};\n","import type { FunctionalComponent as FC } from '@stencil/core';\nimport { h } from '@stencil/core';\n\nimport { getHeadlineTag } from '../../../functional-components/Heading/Heading';\nimport { translate } from '../../../i18n';\nimport { bem } from '../../../schema/bem-registry';\nimport clsx from '../../../utils/clsx';\nimport { BemRootNodeFC } from '../bem-root-node/component';\nimport { ButtonFC } from '../button/component';\nimport type { FunctionalComponentProps } from '../generic-types';\nimport type { AlertApi } from './api';\nimport { AlertIconFC } from './icon';\n\nconst alertBem = bem.forBlock('kol-alert');\nconst BEM_CLASS_ALERT__CLOSER = alertBem('closer');\nconst BEM_CLASS_ALERT__CONTENT = alertBem('content');\n\n/**\n * The closer is a plain button: no role override, and an unset tabindex must not render as\n * `tabindex=\"0\"` — buttons are natively tabbable and the attribute would pin them into the tab\n * order. `kol-button` reaches the same undefined render props via `unsetRenderProp`.\n */\nconst UNSET_BUTTON_PROP = undefined as never;\n\n/**\n * Renders the alert as a single BEM root: icon, optional heading, optional closer button and the\n * content region.\n *\n * The closer is rendered as `ButtonFC` directly — its BEM root carries both `kol-button` and\n * `kol-alert__closer` on the same element, so theme styles that targeted the closer through a\n * descendant `.kol-button` (or `.kol-button--normal`) now target the compound selector instead.\n * The tooltip behavior for the closer (show on hover/focus) is composed by the web component,\n * which owns `refCloserButton`/`refCloserTooltip` — a plain functional component has no lifecycle\n * to sync the listeners in.\n *\n * All remaining HTML attributes (`id`, `role`, `aria-*`, `ref`, …) are forwarded onto the root\n * node — internal consumers (form, form-field-msg, toast-item) rely on that passthrough.\n */\n/** The consumer's callbacks stay with the web component, which invokes them in its closer handler. */\nexport type AlertFCProps = Omit<FunctionalComponentProps<AlertApi>, 'on'>;\n\nexport const AlertFC: FC<AlertFCProps> = (props, children) => {\n\tconst {\n\t\talert,\n\t\tclass: classNames,\n\t\tcloserAriaDescriptionId,\n\t\thandleCloserClick,\n\t\thasCloser,\n\t\theadingId,\n\t\tlabel,\n\t\tlevel,\n\t\trefCloserButton,\n\t\trefCloserTooltip,\n\t\ttype,\n\t\tvariant,\n\t\t...other\n\t} = props;\n\n\tconst translateCloseAlert = translate('kol-close-alert');\n\tconst HeadlineTag = getHeadlineTag(level);\n\n\treturn (\n\t\t<BemRootNodeFC\n\t\t\tblock=\"kol-alert\"\n\t\t\tclass={classNames}\n\t\t\tmodifiers={{\n\t\t\t\thasCloser: hasCloser === true,\n\t\t\t\t[`type-${type}`]: true,\n\t\t\t\t[`variant-${variant}`]: true,\n\t\t\t}}\n\t\t\trole={alert ? 'alert' : undefined}\n\t\t\t{...other}\n\t\t>\n\t\t\t<AlertIconFC type={type} />\n\n\t\t\t{label.length > 0 && (\n\t\t\t\t<HeadlineTag\n\t\t\t\t\tclass={clsx('kol-headline', `kol-headline--${HeadlineTag}`, alertBem('heading', { [`h${level}`]: true }), 'kol-headline--single')}\n\t\t\t\t\tid={headingId}\n\t\t\t\t>\n\t\t\t\t\t{label}\n\t\t\t\t</HeadlineTag>\n\t\t\t)}\n\n\t\t\t{hasCloser && (\n\t\t\t\t<ButtonFC\n\t\t\t\t\taccessKey=\"\"\n\t\t\t\t\tariaControls=\"\"\n\t\t\t\t\tariaDescription={label.trim()}\n\t\t\t\t\tariaDescriptionId={closerAriaDescriptionId}\n\t\t\t\t\tariaExpanded={UNSET_BUTTON_PROP}\n\t\t\t\t\tariaHasPopup=\"\"\n\t\t\t\t\tariaSelected={UNSET_BUTTON_PROP}\n\t\t\t\t\tclass={clsx(BEM_CLASS_ALERT__CLOSER, 'kol-close-button')}\n\t\t\t\t\tcustomClass=\"\"\n\t\t\t\t\tdisabled={false}\n\t\t\t\t\thandleBlur={() => undefined}\n\t\t\t\t\thandleClick={handleCloserClick}\n\t\t\t\t\thandleFocus={() => undefined}\n\t\t\t\t\thandleMouseDown={() => undefined}\n\t\t\t\t\thideLabel\n\t\t\t\t\ticons={{\n\t\t\t\t\t\tleft: {\n\t\t\t\t\t\t\ticon: 'kolicon-cross',\n\t\t\t\t\t\t},\n\t\t\t\t\t}}\n\t\t\t\t\tid=\"\"\n\t\t\t\t\tinline={false}\n\t\t\t\t\tlabel={translateCloseAlert}\n\t\t\t\t\tname=\"\"\n\t\t\t\t\ton={{}}\n\t\t\t\t\trefButton={refCloserButton}\n\t\t\t\t\trefTooltip={refCloserTooltip}\n\t\t\t\t\trole={UNSET_BUTTON_PROP}\n\t\t\t\t\tshortKey=\"\"\n\t\t\t\t\ttabIndex={UNSET_BUTTON_PROP}\n\t\t\t\t\ttooltipAlign=\"left\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tvariant={['normal']}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t<div aria-describedby={label.length > 0 ? headingId : undefined} class={BEM_CLASS_ALERT__CONTENT}>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t</BemRootNodeFC>\n\t);\n};\n"],"names":["alertBem"],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /*!
2
+ * KoliBri - The accessible HTML-Standard
3
+ */
4
+ import{a as e}from"./tslib.es6-QNbPBOk5.js";import{h as a}from"./index-CyLMYdnq.js";import"./common-DuSFcfNN.js";import{A as n,c as o}from"./component-Cy_xOMLd.js";import{b as s}from"./bem-registry-Bma6U-JA.js";import{c as i}from"./clsx-COFh-Vc8.js";import{B as t}from"./component-BR-6tKab.js";import{S as r}from"./component-D_xOkOl6.js";import{T as d}from"./component-Bj13sPTL.js";const l=s.forBlock("kol-button");const c=l("interactive-element");const p=l("text");const u=l("tooltip");const m=s=>{const{accessKey:l,ariaControls:m,ariaDescription:b,ariaDescriptionId:f,ariaExpanded:h,ariaHasPopup:x,ariaSelected:y,class:j,customClass:B,disabled:C,handleBlur:k,handleClick:D,handleFocus:F,handleMouseDown:I,hideLabel:K,icons:L,id:O,inline:T,label:g,name:M,refButton:v,refTooltip:P,role:S,shortKey:w,tabIndex:A,type:N,variant:E}=s,H=e(s,["accessKey","ariaControls","ariaDescription","ariaDescriptionId","ariaExpanded","ariaHasPopup","ariaSelected","class","customClass","disabled","handleBlur","handleClick","handleFocus","handleMouseDown","hideLabel","icons","id","inline","label","name","refButton","refTooltip","role","shortKey","tabIndex","type","variant","on","tooltipAlign"]);const _=l||w;const q=g.length>0;const J=b.trim().length>0;return a(t,Object.assign({block:"kol-button",class:i(j,{[o(E,"button")]:E.length>0,[B]:B.length>0}),modifiers:{disabled:C,"hide-label":K,inline:T===true,standalone:T===false}},H),a("button",{ref:v,accessKey:l||undefined,"aria-controls":m||undefined,"aria-describedby":J?f:undefined,"aria-expanded":h||undefined,"aria-haspopup":x||undefined,"aria-keyshortcuts":w||undefined,"aria-label":K&&q?g:undefined,"aria-selected":y||undefined,class:c,disabled:C,id:O||undefined,name:M||undefined,onBlur:k,onClick:D,onFocus:F,onMouseDown:I,role:S||undefined,tabIndex:A,type:N},a(r,{class:p,badgeText:_,icons:L,hideLabel:K,label:g},a("slot",{name:"expert",slot:"expert"}))),K&&q&&a("div",{class:u},a(d,{badgeText:_,label:g,refFloating:P})),J&&a(n,{description:b,descriptionId:f}))};export{m as B};
5
+ //# sourceMappingURL=component-CQJ_jIZm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"component-CoN6ZwTo.js","sources":["src/internal/functional-components/button/component.tsx"],"sourcesContent":["import type { FunctionalComponent as FC } from '@stencil/core';\nimport { h } from '@stencil/core';\n\nimport { classNameFromVariant } from '../../../schema';\nimport { bem } from '../../../schema/bem-registry';\nimport clsx from '../../../utils/clsx';\nimport { AriaDescriptionSpanFC } from '../aria-description-span/component';\nimport { BemRootNodeFC } from '../bem-root-node/component';\nimport type { FunctionalComponentProps } from '../generic-types';\nimport { SpanFC } from '../span/component';\nimport { TooltipFC } from '../tooltip/component';\nimport type { ButtonApi } from './api';\n\nconst buttonBem = bem.forBlock('kol-button');\nconst BEM_CLASS_BUTTON__INTERACTIVE_ELEMENT = buttonBem('interactive-element');\nconst BEM_CLASS_BUTTON__TEXT = buttonBem('text');\nconst BEM_CLASS_BUTTON__TOOLTIP = buttonBem('tooltip');\n\n/**\n * Renders the button, its floating tooltip and its visually-hidden description inside a single\n * BEM root, the same shape `LinkFC` uses.\n *\n * The tooltip and the description span cannot live inside the `<button>` — a nested tooltip would\n * become part of the accessible name, and the description is referenced by `aria-describedby`\n * from outside. They are therefore siblings of the `<button>` within the `BemRootNodeFC` wrapper.\n */\nexport const ButtonFC: FC<FunctionalComponentProps<ButtonApi>> = (props) => {\n\tconst {\n\t\taccessKey,\n\t\tariaControls,\n\t\tariaDescription,\n\t\tariaDescriptionId,\n\t\tariaExpanded,\n\t\tariaHasPopup,\n\t\tariaSelected,\n\t\tclass: hostClass,\n\t\tcustomClass,\n\t\tdisabled,\n\t\thandleBlur,\n\t\thandleClick,\n\t\thandleFocus,\n\t\thandleMouseDown,\n\t\thideLabel,\n\t\ticons,\n\t\tid,\n\t\tinline,\n\t\tlabel,\n\t\tname,\n\t\trefButton,\n\t\trefTooltip,\n\t\trole,\n\t\tshortKey,\n\t\ttabIndex,\n\t\ttype,\n\t\tvariant,\n\t\t/* Not rendered as attributes: `on` is kept for the StrictFields contract, `tooltipAlign`\n\t\t is consumed by the tooltip behavior of the web component. */\n\t\ton,\n\t\ttooltipAlign,\n\t\t...rest\n\t} = props;\n\n\t// Marking both as intentionally read keeps them out of the forwarded rest attributes without\n\t// tripping `no-unused-vars`.\n\tvoid on;\n\tvoid tooltipAlign;\n\n\tconst badgeText = accessKey || shortKey;\n\tconst hasLabelText = label.length > 0;\n\tconst hasAriaDescription = ariaDescription.trim().length > 0;\n\n\treturn (\n\t\t<BemRootNodeFC\n\t\t\tblock=\"kol-button\"\n\t\t\tclass={clsx(\n\t\t\t\t// Forwarded 1:1 from the FC tag, so a component embedding a button inside its own\n\t\t\t\t// boundary can mark it — e.g. the badge's `kol-badge__smart-button`.\n\t\t\t\thostClass,\n\t\t\t\t{\n\t\t\t\t\t[classNameFromVariant(variant, 'button')]: variant.length > 0,\n\t\t\t\t\t[customClass]: customClass.length > 0,\n\t\t\t\t},\n\t\t\t)}\n\t\t\tmodifiers={{\n\t\t\t\tdisabled,\n\t\t\t\t'hide-label': hideLabel,\n\t\t\t\tinline: inline === true,\n\t\t\t\tstandalone: inline === false,\n\t\t\t}}\n\t\t\t{...rest}\n\t\t>\n\t\t\t<button\n\t\t\t\tref={refButton}\n\t\t\t\taccessKey={accessKey || undefined}\n\t\t\t\taria-controls={ariaControls || undefined}\n\t\t\t\taria-describedby={hasAriaDescription ? ariaDescriptionId : undefined}\n\t\t\t\taria-expanded={ariaExpanded || undefined}\n\t\t\t\taria-haspopup={ariaHasPopup || undefined}\n\t\t\t\taria-keyshortcuts={shortKey || undefined}\n\t\t\t\taria-label={hideLabel && hasLabelText ? label : undefined}\n\t\t\t\taria-selected={ariaSelected || undefined}\n\t\t\t\tclass={BEM_CLASS_BUTTON__INTERACTIVE_ELEMENT}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tid={id || undefined}\n\t\t\t\tname={name || undefined}\n\t\t\t\tonBlur={handleBlur}\n\t\t\t\tonClick={handleClick}\n\t\t\t\tonFocus={handleFocus}\n\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t\trole={role || undefined}\n\t\t\t\ttabIndex={tabIndex}\n\t\t\t\ttype={type}\n\t\t\t>\n\t\t\t\t<SpanFC class={BEM_CLASS_BUTTON__TEXT} badgeText={badgeText} icons={icons} hideLabel={hideLabel} label={label}>\n\t\t\t\t\t<slot name=\"expert\" slot=\"expert\"></slot>\n\t\t\t\t</SpanFC>\n\t\t\t</button>\n\t\t\t{hideLabel && hasLabelText && (\n\t\t\t\t<div class={BEM_CLASS_BUTTON__TOOLTIP}>\n\t\t\t\t\t<TooltipFC badgeText={badgeText} label={label} refFloating={refTooltip} />\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{hasAriaDescription && <AriaDescriptionSpanFC description={ariaDescription} descriptionId={ariaDescriptionId} />}\n\t\t</BemRootNodeFC>\n\t);\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"component-CQJ_jIZm.js","sources":["src/internal/functional-components/button/component.tsx"],"sourcesContent":["import type { FunctionalComponent as FC } from '@stencil/core';\nimport { h } from '@stencil/core';\n\nimport { classNameFromVariant } from '../../../schema';\nimport { bem } from '../../../schema/bem-registry';\nimport clsx from '../../../utils/clsx';\nimport { AriaDescriptionSpanFC } from '../aria-description-span/component';\nimport { BemRootNodeFC } from '../bem-root-node/component';\nimport type { FunctionalComponentProps } from '../generic-types';\nimport { SpanFC } from '../span/component';\nimport { TooltipFC } from '../tooltip/component';\nimport type { ButtonApi } from './api';\n\nconst buttonBem = bem.forBlock('kol-button');\nconst BEM_CLASS_BUTTON__INTERACTIVE_ELEMENT = buttonBem('interactive-element');\nconst BEM_CLASS_BUTTON__TEXT = buttonBem('text');\nconst BEM_CLASS_BUTTON__TOOLTIP = buttonBem('tooltip');\n\n/**\n * Renders the button, its floating tooltip and its visually-hidden description inside a single\n * BEM root, the same shape `LinkFC` uses.\n *\n * The tooltip and the description span cannot live inside the `<button>` — a nested tooltip would\n * become part of the accessible name, and the description is referenced by `aria-describedby`\n * from outside. They are therefore siblings of the `<button>` within the `BemRootNodeFC` wrapper.\n */\nexport const ButtonFC: FC<FunctionalComponentProps<ButtonApi>> = (props) => {\n\tconst {\n\t\taccessKey,\n\t\tariaControls,\n\t\tariaDescription,\n\t\tariaDescriptionId,\n\t\tariaExpanded,\n\t\tariaHasPopup,\n\t\tariaSelected,\n\t\tclass: hostClass,\n\t\tcustomClass,\n\t\tdisabled,\n\t\thandleBlur,\n\t\thandleClick,\n\t\thandleFocus,\n\t\thandleMouseDown,\n\t\thideLabel,\n\t\ticons,\n\t\tid,\n\t\tinline,\n\t\tlabel,\n\t\tname,\n\t\trefButton,\n\t\trefTooltip,\n\t\trole,\n\t\tshortKey,\n\t\ttabIndex,\n\t\ttype,\n\t\tvariant,\n\t\t/* Not rendered as attributes: `on` is kept for the StrictFields contract, `tooltipAlign`\n\t\t is consumed by the tooltip behavior of the web component. */\n\t\ton,\n\t\ttooltipAlign,\n\t\t...rest\n\t} = props;\n\n\t// Marking both as intentionally read keeps them out of the forwarded rest attributes without\n\t// tripping `no-unused-vars`.\n\tvoid on;\n\tvoid tooltipAlign;\n\n\tconst badgeText = accessKey || shortKey;\n\tconst hasLabelText = label.length > 0;\n\tconst hasAriaDescription = ariaDescription.trim().length > 0;\n\n\treturn (\n\t\t<BemRootNodeFC\n\t\t\tblock=\"kol-button\"\n\t\t\tclass={clsx(\n\t\t\t\t// Forwarded 1:1 from the FC tag, so a component embedding a button inside its own\n\t\t\t\t// boundary can mark it — e.g. the badge's `kol-badge__smart-button`.\n\t\t\t\thostClass,\n\t\t\t\t{\n\t\t\t\t\t[classNameFromVariant(variant, 'button')]: variant.length > 0,\n\t\t\t\t\t[customClass]: customClass.length > 0,\n\t\t\t\t},\n\t\t\t)}\n\t\t\tmodifiers={{\n\t\t\t\tdisabled,\n\t\t\t\t'hide-label': hideLabel,\n\t\t\t\tinline: inline === true,\n\t\t\t\tstandalone: inline === false,\n\t\t\t}}\n\t\t\t{...rest}\n\t\t>\n\t\t\t<button\n\t\t\t\tref={refButton}\n\t\t\t\taccessKey={accessKey || undefined}\n\t\t\t\taria-controls={ariaControls || undefined}\n\t\t\t\taria-describedby={hasAriaDescription ? ariaDescriptionId : undefined}\n\t\t\t\taria-expanded={ariaExpanded || undefined}\n\t\t\t\taria-haspopup={ariaHasPopup || undefined}\n\t\t\t\taria-keyshortcuts={shortKey || undefined}\n\t\t\t\taria-label={hideLabel && hasLabelText ? label : undefined}\n\t\t\t\taria-selected={ariaSelected || undefined}\n\t\t\t\tclass={BEM_CLASS_BUTTON__INTERACTIVE_ELEMENT}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tid={id || undefined}\n\t\t\t\tname={name || undefined}\n\t\t\t\tonBlur={handleBlur}\n\t\t\t\tonClick={handleClick}\n\t\t\t\tonFocus={handleFocus}\n\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t\trole={role || undefined}\n\t\t\t\ttabIndex={tabIndex}\n\t\t\t\ttype={type}\n\t\t\t>\n\t\t\t\t<SpanFC class={BEM_CLASS_BUTTON__TEXT} badgeText={badgeText} icons={icons} hideLabel={hideLabel} label={label}>\n\t\t\t\t\t<slot name=\"expert\" slot=\"expert\"></slot>\n\t\t\t\t</SpanFC>\n\t\t\t</button>\n\t\t\t{hideLabel && hasLabelText && (\n\t\t\t\t<div class={BEM_CLASS_BUTTON__TOOLTIP}>\n\t\t\t\t\t<TooltipFC badgeText={badgeText} label={label} refFloating={refTooltip} />\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{hasAriaDescription && <AriaDescriptionSpanFC description={ariaDescription} descriptionId={ariaDescriptionId} />}\n\t\t</BemRootNodeFC>\n\t);\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /*!
2
+ * KoliBri - The accessible HTML-Standard
3
+ */
4
+ import{t as e}from"./i18n-CEIPukO1.js";import{r as o}from"./resolve-props-vskIOP3D.js";import{h as l}from"./index-CyLMYdnq.js";import{K as s}from"./Heading-DAPZwXCt.js";import{b as t}from"./bem-registry-Bma6U-JA.js";import{c as r}from"./clsx-COFh-Vc8.js";import{B as n}from"./component-CQJ_jIZm.js";function a(l){return o({_hideLabel:true,_icons:{left:{icon:"kolicon-cross"}},_label:e("kol-close"),_tooltipAlign:"left"},l)}const c=t.forBlock("kol-card");const i=c("close-button");const d=c("content");const f=c("header");const m=c("link");const u=()=>{};const h=({headingId:e,label:o,level:t})=>l(s,{class:f,id:e,level:t},o);const p=(e,o)=>{const{ariaDescriptionId:s,class:t,closeButtonProps:a,handleBlur:f,handleClose:p,handleFocus:b,hasCloser:C,headingId:g,href:j,label:v,level:I,refCloseButton:k,refCta:B,refTooltip:D,target:_}=e;return l("article",{"aria-labelledby":g,class:r(c(),t)},j.length>0?l("a",{class:m,href:j,target:_||undefined,onBlur:f,onFocus:b,ref:B},l(h,{headingId:g,label:v,level:I})):l(h,{headingId:g,label:v,level:I}),l("div",{class:d},o),C&&l("div",{class:r(i,"kol-close-button")},l(n,Object.assign({},a,{ariaDescriptionId:s,handleBlur:u,handleClick:p,handleFocus:u,handleMouseDown:u,refButton:k,refTooltip:D}))))};export{p as C,a as r};
5
+ //# sourceMappingURL=component-Cqcw7JSO.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"component-D6Z14V5i.js","sources":["src/internal/functional-components/card/close-button.ts","src/internal/functional-components/card/component.tsx"],"sourcesContent":["import { translate } from '../../../i18n';\nimport type { ResolvedButtonProps } from '../button/resolve-props';\nimport { resolveButtonProps } from '../button/resolve-props';\n\n/**\n * Normalizes the card's close button into the render props `ButtonFC` expects.\n *\n * The configuration is fixed — an icon-only button whose label lives in its tooltip — so every\n * component rendering `CardFC` resolves it the same way. It is a function rather than a constant\n * because `translate` must run after the i18n bundle is in place.\n *\n * Props only: the tooltip behavior, the click handler and the button ref belong to the composing\n * web component.\n *\n * @param host - The host element, used for the per-theme `buttonVariantDefault` feature flag.\n */\nexport function resolveCardCloseButtonProps(host?: HTMLElement): ResolvedButtonProps {\n\treturn resolveButtonProps(\n\t\t{\n\t\t\t_hideLabel: true,\n\t\t\t_icons: { left: { icon: 'kolicon-cross' } },\n\t\t\t_label: translate('kol-close'),\n\t\t\t_tooltipAlign: 'left',\n\t\t},\n\t\thost,\n\t);\n}\n","import type { FunctionalComponent as FC } from '@stencil/core';\nimport { h } from '@stencil/core';\n\nimport KolHeadingFc from '../../../functional-components/Heading/Heading';\nimport { bem } from '../../../schema/bem-registry';\nimport clsx from '../../../utils/clsx';\nimport { ButtonFC } from '../button/component';\nimport type { ResolvedButtonProps } from '../button/resolve-props';\nimport type { FunctionalComponentProps } from '../generic-types';\nimport type { CardApi } from './api';\n\nconst cardBem = bem.forBlock('kol-card');\nconst BEM_CLASS_CARD__CLOSE_BUTTON = cardBem('close-button');\nconst BEM_CLASS_CARD__CONTENT = cardBem('content');\nconst BEM_CLASS_CARD__HEADER = cardBem('header');\nconst BEM_CLASS_CARD__LINK = cardBem('link');\n\n/**\n * The close button reports only its click. `ButtonFC` requires a handler per callback, and the\n * card's `_on` callbacks describe its heading link, not this button.\n */\nconst NOOP = (): void => {};\n\n/** The heading renders either on its own or wrapped in the link, so it lives in its own FC. */\nconst CardHeadingFC: FC<Pick<FunctionalComponentProps<CardApi>, 'headingId' | 'label' | 'level'>> = ({ headingId, label, level }) => (\n\t<KolHeadingFc class={BEM_CLASS_CARD__HEADER} id={headingId} level={level}>\n\t\t{label}\n\t</KolHeadingFc>\n);\n\nexport type CardFCProps = FunctionalComponentProps<CardApi> & {\n\t/** The close button's normalized `ButtonFC` render props, resolved once by the web component. */\n\tcloseButtonProps: ResolvedButtonProps;\n};\n\n/**\n * Root from `bem.forBlock('kol-card')`, not `BemRootNodeFC`: the card's root is the semantic\n * `<article>` that carries `aria-labelledby`, and `BemRootNodeFC` always renders a `<div>`.\n *\n * The content area renders `children`, not a `<slot />` of its own: Stencil derives its light-DOM\n * slot relocation from the JSX in the element file, so the `<slot />` has to be written there.\n *\n * `.kol-close-button` is a theme hook shared with the alert, and every theme addresses it as an\n * ancestor of `.kol-button`. It therefore stays on a wrapper around `ButtonFC` rather than merging\n * into the button's own root — drop the wrapper once the hook itself moves onto the button root.\n *\n * A forwarded `class` lands on the root, so a consumer that wants its own hook on the card itself\n * can add one. A hook that themes address as an *ancestor* of `.kol-card` must not go here — it\n * belongs on a wrapper around `CardFC`, the way the drawer keeps `.kol-drawer__wrapper`.\n */\nexport const CardFC: FC<CardFCProps> = (props, children) => {\n\tconst {\n\t\tariaDescriptionId,\n\t\tclass: hostClass,\n\t\tcloseButtonProps,\n\t\thandleBlur,\n\t\thandleClose,\n\t\thandleFocus,\n\t\thasCloser,\n\t\theadingId,\n\t\thref,\n\t\tlabel,\n\t\tlevel,\n\t\trefCloseButton,\n\t\trefCta,\n\t\trefTooltip,\n\t\ttarget,\n\t} = props;\n\n\treturn (\n\t\t<article aria-labelledby={headingId} class={clsx(cardBem(), hostClass)}>\n\t\t\t{href.length > 0 ? (\n\t\t\t\t<a class={BEM_CLASS_CARD__LINK} href={href} target={target || undefined} onBlur={handleBlur} onFocus={handleFocus} ref={refCta}>\n\t\t\t\t\t<CardHeadingFC headingId={headingId} label={label} level={level} />\n\t\t\t\t</a>\n\t\t\t) : (\n\t\t\t\t<CardHeadingFC headingId={headingId} label={label} level={level} />\n\t\t\t)}\n\t\t\t<div class={BEM_CLASS_CARD__CONTENT}>{children}</div>\n\t\t\t{hasCloser && (\n\t\t\t\t<div class={clsx(BEM_CLASS_CARD__CLOSE_BUTTON, 'kol-close-button')}>\n\t\t\t\t\t<ButtonFC\n\t\t\t\t\t\t{...closeButtonProps}\n\t\t\t\t\t\tariaDescriptionId={ariaDescriptionId}\n\t\t\t\t\t\thandleBlur={NOOP}\n\t\t\t\t\t\thandleClick={handleClose}\n\t\t\t\t\t\thandleFocus={NOOP}\n\t\t\t\t\t\thandleMouseDown={NOOP}\n\t\t\t\t\t\trefButton={refCloseButton}\n\t\t\t\t\t\trefTooltip={refTooltip}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</article>\n\t);\n};\n"],"names":[],"mappings":";;;;;;;;;;;AAgBM,SAAU,2BAA2B,CAAC,IAAkB,EAAA;AAC7D,IAAA,OAAO,kBAAkB,CACxB;AACC,QAAA,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE;AAC3C,QAAA,MAAM,EAAE,SAAS,CAAC,WAAW,CAAC;AAC9B,QAAA,aAAa,EAAE,MAAM;KACrB,EACD,IAAI,CACJ;AACF;;ACfA,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;AACxC,MAAM,4BAA4B,GAAG,OAAO,CAAC,cAAc,CAAC;AAC5D,MAAM,uBAAuB,GAAG,OAAO,CAAC,SAAS,CAAC;AAClD,MAAM,sBAAsB,GAAG,OAAO,CAAC,QAAQ,CAAC;AAChD,MAAM,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;AAM5C,MAAM,IAAI,GAAG,MAAW,GAAG;AAG3B,MAAM,aAAa,GAAiF,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAC/H,CAAC,CAAA,YAAY,EAAC,EAAA,KAAK,EAAE,sBAAsB,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAA,EACtE,KAAK,CACQ,CACf;MAsBY,MAAM,GAAoB,CAAC,KAAK,EAAE,QAAQ,KAAI;AAC1D,IAAA,MAAM,EACL,iBAAiB,EACjB,KAAK,EAAE,SAAS,EAChB,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,WAAW,EACX,SAAS,EACT,SAAS,EACT,IAAI,EACJ,KAAK,EACL,KAAK,EACL,cAAc,EACd,MAAM,EACN,UAAU,EACV,MAAM,GACN,GAAG,KAAK;AAET,IAAA,QACC,CAAA,CAAA,SAAA,EAAA,EAAA,iBAAA,EAA0B,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,EAAA,EACpE,IAAI,CAAC,MAAM,GAAG,CAAC,IACf,CAAA,CAAA,GAAA,EAAA,EAAG,KAAK,EAAE,oBAAoB,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,IAAI,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAA,EAC7H,CAAA,CAAC,aAAa,EAAA,EAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAA,CAAI,CAChE,KAEJ,CAAC,CAAA,aAAa,EAAC,EAAA,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAI,CACnE,EACD,CAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,uBAAuB,EAAA,EAAG,QAAQ,CAAO,EACpD,SAAS,KACT,CAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,IAAI,CAAC,4BAA4B,EAAE,kBAAkB,CAAC,EAAA,EACjE,CAAA,CAAC,QAAQ,EACJ,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,gBAAgB,EACpB,EAAA,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,IAAI,EAChB,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,IAAI,EACjB,eAAe,EAAE,IAAI,EACrB,SAAS,EAAE,cAAc,EACzB,UAAU,EAAE,UAAU,EACrB,CAAA,CAAA,CACG,CACN,CACQ;AAEZ;;;;"}
1
+ {"version":3,"file":"component-Cqcw7JSO.js","sources":["src/internal/functional-components/card/close-button.ts","src/internal/functional-components/card/component.tsx"],"sourcesContent":["import { translate } from '../../../i18n';\nimport type { ResolvedButtonProps } from '../button/resolve-props';\nimport { resolveButtonProps } from '../button/resolve-props';\n\n/**\n * Normalizes the card's close button into the render props `ButtonFC` expects.\n *\n * The configuration is fixed — an icon-only button whose label lives in its tooltip — so every\n * component rendering `CardFC` resolves it the same way. It is a function rather than a constant\n * because `translate` must run after the i18n bundle is in place.\n *\n * Props only: the tooltip behavior, the click handler and the button ref belong to the composing\n * web component.\n *\n * @param host - The host element, used for the per-theme `buttonVariantDefault` feature flag.\n */\nexport function resolveCardCloseButtonProps(host?: HTMLElement): ResolvedButtonProps {\n\treturn resolveButtonProps(\n\t\t{\n\t\t\t_hideLabel: true,\n\t\t\t_icons: { left: { icon: 'kolicon-cross' } },\n\t\t\t_label: translate('kol-close'),\n\t\t\t_tooltipAlign: 'left',\n\t\t},\n\t\thost,\n\t);\n}\n","import type { FunctionalComponent as FC } from '@stencil/core';\nimport { h } from '@stencil/core';\n\nimport KolHeadingFc from '../../../functional-components/Heading/Heading';\nimport { bem } from '../../../schema/bem-registry';\nimport clsx from '../../../utils/clsx';\nimport { ButtonFC } from '../button/component';\nimport type { ResolvedButtonProps } from '../button/resolve-props';\nimport type { FunctionalComponentProps } from '../generic-types';\nimport type { CardApi } from './api';\n\nconst cardBem = bem.forBlock('kol-card');\nconst BEM_CLASS_CARD__CLOSE_BUTTON = cardBem('close-button');\nconst BEM_CLASS_CARD__CONTENT = cardBem('content');\nconst BEM_CLASS_CARD__HEADER = cardBem('header');\nconst BEM_CLASS_CARD__LINK = cardBem('link');\n\n/**\n * The close button reports only its click. `ButtonFC` requires a handler per callback, and the\n * card's `_on` callbacks describe its heading link, not this button.\n */\nconst NOOP = (): void => {};\n\n/** The heading renders either on its own or wrapped in the link, so it lives in its own FC. */\nconst CardHeadingFC: FC<Pick<FunctionalComponentProps<CardApi>, 'headingId' | 'label' | 'level'>> = ({ headingId, label, level }) => (\n\t<KolHeadingFc class={BEM_CLASS_CARD__HEADER} id={headingId} level={level}>\n\t\t{label}\n\t</KolHeadingFc>\n);\n\nexport type CardFCProps = FunctionalComponentProps<CardApi> & {\n\t/** The close button's normalized `ButtonFC` render props, resolved once by the web component. */\n\tcloseButtonProps: ResolvedButtonProps;\n};\n\n/**\n * Root from `bem.forBlock('kol-card')`, not `BemRootNodeFC`: the card's root is the semantic\n * `<article>` that carries `aria-labelledby`, and `BemRootNodeFC` always renders a `<div>`.\n *\n * The content area renders `children`, not a `<slot />` of its own: Stencil derives its light-DOM\n * slot relocation from the JSX in the element file, so the `<slot />` has to be written there.\n *\n * `.kol-close-button` is a theme hook shared with the alert, and every theme addresses it as an\n * ancestor of `.kol-button`. It therefore stays on a wrapper around `ButtonFC` rather than merging\n * into the button's own root — drop the wrapper once the hook itself moves onto the button root.\n *\n * A forwarded `class` lands on the root, so a consumer that wants its own hook on the card itself\n * can add one. A hook that themes address as an *ancestor* of `.kol-card` must not go here — it\n * belongs on a wrapper around `CardFC`, the way the drawer keeps `.kol-drawer__wrapper`.\n */\nexport const CardFC: FC<CardFCProps> = (props, children) => {\n\tconst {\n\t\tariaDescriptionId,\n\t\tclass: hostClass,\n\t\tcloseButtonProps,\n\t\thandleBlur,\n\t\thandleClose,\n\t\thandleFocus,\n\t\thasCloser,\n\t\theadingId,\n\t\thref,\n\t\tlabel,\n\t\tlevel,\n\t\trefCloseButton,\n\t\trefCta,\n\t\trefTooltip,\n\t\ttarget,\n\t} = props;\n\n\treturn (\n\t\t<article aria-labelledby={headingId} class={clsx(cardBem(), hostClass)}>\n\t\t\t{href.length > 0 ? (\n\t\t\t\t<a class={BEM_CLASS_CARD__LINK} href={href} target={target || undefined} onBlur={handleBlur} onFocus={handleFocus} ref={refCta}>\n\t\t\t\t\t<CardHeadingFC headingId={headingId} label={label} level={level} />\n\t\t\t\t</a>\n\t\t\t) : (\n\t\t\t\t<CardHeadingFC headingId={headingId} label={label} level={level} />\n\t\t\t)}\n\t\t\t<div class={BEM_CLASS_CARD__CONTENT}>{children}</div>\n\t\t\t{hasCloser && (\n\t\t\t\t<div class={clsx(BEM_CLASS_CARD__CLOSE_BUTTON, 'kol-close-button')}>\n\t\t\t\t\t<ButtonFC\n\t\t\t\t\t\t{...closeButtonProps}\n\t\t\t\t\t\tariaDescriptionId={ariaDescriptionId}\n\t\t\t\t\t\thandleBlur={NOOP}\n\t\t\t\t\t\thandleClick={handleClose}\n\t\t\t\t\t\thandleFocus={NOOP}\n\t\t\t\t\t\thandleMouseDown={NOOP}\n\t\t\t\t\t\trefButton={refCloseButton}\n\t\t\t\t\t\trefTooltip={refTooltip}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</article>\n\t);\n};\n"],"names":[],"mappings":";;;;;;;;;;;AAgBM,SAAU,2BAA2B,CAAC,IAAkB,EAAA;AAC7D,IAAA,OAAO,kBAAkB,CACxB;AACC,QAAA,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE;AAC3C,QAAA,MAAM,EAAE,SAAS,CAAC,WAAW,CAAC;AAC9B,QAAA,aAAa,EAAE,MAAM;KACrB,EACD,IAAI,CACJ;AACF;;ACfA,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;AACxC,MAAM,4BAA4B,GAAG,OAAO,CAAC,cAAc,CAAC;AAC5D,MAAM,uBAAuB,GAAG,OAAO,CAAC,SAAS,CAAC;AAClD,MAAM,sBAAsB,GAAG,OAAO,CAAC,QAAQ,CAAC;AAChD,MAAM,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;AAM5C,MAAM,IAAI,GAAG,MAAW,GAAG;AAG3B,MAAM,aAAa,GAAiF,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAC/H,CAAC,CAAA,YAAY,EAAC,EAAA,KAAK,EAAE,sBAAsB,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAA,EACtE,KAAK,CACQ,CACf;MAsBY,MAAM,GAAoB,CAAC,KAAK,EAAE,QAAQ,KAAI;AAC1D,IAAA,MAAM,EACL,iBAAiB,EACjB,KAAK,EAAE,SAAS,EAChB,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,WAAW,EACX,SAAS,EACT,SAAS,EACT,IAAI,EACJ,KAAK,EACL,KAAK,EACL,cAAc,EACd,MAAM,EACN,UAAU,EACV,MAAM,GACN,GAAG,KAAK;AAET,IAAA,QACC,CAAA,CAAA,SAAA,EAAA,EAAA,iBAAA,EAA0B,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,EAAA,EACpE,IAAI,CAAC,MAAM,GAAG,CAAC,IACf,CAAA,CAAA,GAAA,EAAA,EAAG,KAAK,EAAE,oBAAoB,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,IAAI,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAA,EAC7H,CAAA,CAAC,aAAa,EAAA,EAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAA,CAAI,CAChE,KAEJ,CAAC,CAAA,aAAa,EAAC,EAAA,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAI,CACnE,EACD,CAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,uBAAuB,EAAA,EAAG,QAAQ,CAAO,EACpD,SAAS,KACT,CAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,IAAI,CAAC,4BAA4B,EAAE,kBAAkB,CAAC,EAAA,EACjE,CAAA,CAAC,QAAQ,EACJ,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,gBAAgB,EACpB,EAAA,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,IAAI,EAChB,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,IAAI,EACjB,eAAe,EAAE,IAAI,EACrB,SAAS,EAAE,cAAc,EACzB,UAAU,EAAE,UAAU,EACrB,CAAA,CAAA,CACG,CACN,CACQ;AAEZ;;;;"}
@@ -0,0 +1,5 @@
1
+ /*!
2
+ * KoliBri - The accessible HTML-Standard
3
+ */
4
+ import"./common-DuSFcfNN.js";import{h as s}from"./index-CyLMYdnq.js";const i=(s,i)=>{let n="";if(Array.isArray(s)){s.forEach((s=>{n+="kol-"+i+"--"+s+" "}))}return n};const n=({description:i,descriptionId:n})=>i?s("span",{class:"visually-hidden",id:n},i):null;export{n as A,i as c};
5
+ //# sourceMappingURL=component-Cy_xOMLd.js.map