@public-ui/components 4.5.0-rc.8 → 4.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (503) 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-yiwXjRrz.js → Heading-CFe7VL6f.js} +3 -3
  8. package/dist/cjs/{Heading-yiwXjRrz.js.map → Heading-CFe7VL6f.js.map} +1 -1
  9. package/dist/cjs/{api-BDT5xkx5.js → api-kNqVTMqf.js} +8 -8
  10. package/dist/cjs/{api-BDT5xkx5.js.map → api-kNqVTMqf.js.map} +1 -1
  11. package/dist/cjs/{api-BI1qXrGa.js → api-n8IopicV.js} +12 -12
  12. package/dist/cjs/{api-BI1qXrGa.js.map → api-n8IopicV.js.map} +1 -1
  13. package/dist/cjs/{app-globals-DPVGNVgE.js → app-globals-KA8S4Kl9.js} +4 -4
  14. package/dist/cjs/{app-globals-DPVGNVgE.js.map → app-globals-KA8S4Kl9.js.map} +1 -1
  15. package/dist/cjs/{base-CaQNXZrN.js → base-B07RMt0-.js} +5 -5
  16. package/dist/cjs/{base-CaQNXZrN.js.map → base-B07RMt0-.js.map} +1 -1
  17. package/dist/cjs/{base-DlsemYqM.js → base-Bw44v5Il.js} +4 -4
  18. package/dist/cjs/{base-DlsemYqM.js.map → base-Bw44v5Il.js.map} +1 -1
  19. package/dist/cjs/{base-FZ2Hemhr.js → base-DGx5qxja.js} +16 -16
  20. package/dist/cjs/{base-FZ2Hemhr.js.map → base-DGx5qxja.js.map} +1 -1
  21. package/dist/cjs/{base-B_M9Y7nD.js → base-Og0FJHrO.js} +4 -4
  22. package/dist/cjs/{base-B_M9Y7nD.js.map → base-Og0FJHrO.js.map} +1 -1
  23. package/dist/cjs/{base-web-component-BK8X1O8C.js → base-web-component-9l9kVbBw.js} +5 -5
  24. package/dist/cjs/{base-web-component-BK8X1O8C.js.map → base-web-component-9l9kVbBw.js.map} +1 -1
  25. package/dist/cjs/{base-web-component-GLk66TOu.js → base-web-component-MA3Hmf00.js} +7 -7
  26. package/dist/cjs/{base-web-component-GLk66TOu.js.map → base-web-component-MA3Hmf00.js.map} +1 -1
  27. package/dist/cjs/{behavior-BEaXHesG.js → behavior-CddJDVDz.js} +3 -3
  28. package/dist/cjs/{behavior-BEaXHesG.js.map → behavior-CddJDVDz.js.map} +1 -1
  29. package/dist/cjs/{component-Bc8fDajy.js → component-8M23HGR8.js} +5 -5
  30. package/dist/cjs/{component-Bc8fDajy.js.map → component-8M23HGR8.js.map} +1 -1
  31. package/dist/cjs/{component-CPVFCnaN.js → component-B1t_MP4V.js} +7 -7
  32. package/dist/cjs/{component-CPVFCnaN.js.map → component-B1t_MP4V.js.map} +1 -1
  33. package/dist/cjs/{component-Dw6Tq7Wb.js → component-B92xMW4N.js} +4 -4
  34. package/dist/cjs/{component-Dw6Tq7Wb.js.map → component-B92xMW4N.js.map} +1 -1
  35. package/dist/cjs/{component-3EZdZbDH.js → component-BGdViN9u.js} +3 -3
  36. package/dist/cjs/{component-3EZdZbDH.js.map → component-BGdViN9u.js.map} +1 -1
  37. package/dist/cjs/{component-Bj4QdlXm.js → component-BZKcc9iM.js} +5 -5
  38. package/dist/cjs/{component-Bj4QdlXm.js.map → component-BZKcc9iM.js.map} +1 -1
  39. package/dist/cjs/{component-CAkixzEQ.js → component-C8WDkeRK.js} +3 -3
  40. package/dist/cjs/{component-CAkixzEQ.js.map → component-C8WDkeRK.js.map} +1 -1
  41. package/dist/cjs/{component-Du98sklA.js → component-CESKZB76.js} +3 -3
  42. package/dist/cjs/{component-Du98sklA.js.map → component-CESKZB76.js.map} +1 -1
  43. package/dist/cjs/{component-Be3QHUyC.js → component-CQRRF1jV.js} +3 -3
  44. package/dist/cjs/{component-Be3QHUyC.js.map → component-CQRRF1jV.js.map} +1 -1
  45. package/dist/cjs/{component-B96XYPtn.js → component-D7IXFVHR.js} +4 -4
  46. package/dist/cjs/{component-B96XYPtn.js.map → component-D7IXFVHR.js.map} +1 -1
  47. package/dist/cjs/{component-BUCx7i5o.js → component-Dzx6SM5K.js} +7 -7
  48. package/dist/cjs/{component-BUCx7i5o.js.map → component-Dzx6SM5K.js.map} +1 -1
  49. package/dist/cjs/{component-Dd-PS3jp.js → component-K9JCKLMC.js} +4 -4
  50. package/dist/cjs/{component-Dd-PS3jp.js.map → component-K9JCKLMC.js.map} +1 -1
  51. package/dist/cjs/{component-DjDOgcWW.js → component-inHq7qad.js} +5 -5
  52. package/dist/cjs/{component-DjDOgcWW.js.map → component-inHq7qad.js.map} +1 -1
  53. package/dist/cjs/{dev.utils-DybQ4euF.js → dev.utils-CIsKrkDZ.js} +3 -3
  54. package/dist/cjs/{dev.utils-DybQ4euF.js.map → dev.utils-CIsKrkDZ.js.map} +1 -1
  55. package/dist/cjs/{devtools-Bw5sQJOl.js → devtools-DEHRYx1J.js} +4 -4
  56. package/dist/cjs/{devtools-Bw5sQJOl.js.map → devtools-DEHRYx1J.js.map} +1 -1
  57. package/dist/cjs/{field-control-4CnbMR0i.js → field-control-gMhh35Xz.js} +8 -8
  58. package/dist/cjs/{field-control-4CnbMR0i.js.map → field-control-gMhh35Xz.js.map} +1 -1
  59. package/dist/cjs/{group-BCkxYeMA.js → group-eUk7QHkH.js} +5 -5
  60. package/dist/cjs/{group-BCkxYeMA.js.map → group-eUk7QHkH.js.map} +1 -1
  61. package/dist/cjs/{index-RAfZF5x0.js → index-CjTDipy9.js} +3 -3
  62. package/dist/cjs/index-CjTDipy9.js.map +1 -0
  63. package/dist/cjs/{input-7t7ZvgAy.js → input-D1hDtOel.js} +5 -5
  64. package/dist/cjs/{input-7t7ZvgAy.js.map → input-D1hDtOel.js.map} +1 -1
  65. package/dist/cjs/{input-container-BUK2Fp_t.js → input-container-C9wW0ZFj.js} +7 -7
  66. package/dist/cjs/{input-container-BUK2Fp_t.js.map → input-container-C9wW0ZFj.js.map} +1 -1
  67. package/dist/cjs/{item-K1SS6pAu.js → item-C6TgTi4l.js} +4 -4
  68. package/dist/cjs/{item-K1SS6pAu.js.map → item-C6TgTi4l.js.map} +1 -1
  69. package/dist/cjs/{item-DO176juh.js → item-D2TI8Iec.js} +4 -4
  70. package/dist/cjs/{item-DO176juh.js.map → item-D2TI8Iec.js.map} +1 -1
  71. package/dist/cjs/{item-D8Zz2ROC.js → item-DoAJ6Wmk.js} +3 -3
  72. package/dist/cjs/{item-D8Zz2ROC.js.map → item-DoAJ6Wmk.js.map} +1 -1
  73. package/dist/cjs/{item-BInO5rWQ.js → item-se0KVw5y.js} +8 -8
  74. package/dist/cjs/{item-BInO5rWQ.js.map → item-se0KVw5y.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 +9 -9
  122. package/dist/cjs/kol-textarea.cjs.entry.js +17 -17
  123. package/dist/cjs/kol-toast-container.cjs.entry.js +11 -11
  124. package/dist/cjs/kol-toolbar.cjs.entry.js +11 -11
  125. package/dist/cjs/kol-tooltip-wc.cjs.entry.js +4 -4
  126. package/dist/cjs/kol-tree-item.cjs.entry.js +9 -9
  127. package/dist/cjs/kol-tree.cjs.entry.js +1 -1
  128. package/dist/cjs/kol-version.cjs.entry.js +9 -9
  129. package/dist/cjs/kolibri.cjs.js +2 -2
  130. package/dist/cjs/loader.cjs.js +2 -2
  131. package/dist/cjs/{resolve-props-BBVQo_N5.js → resolve-props-JqnN_2MF.js} +3 -3
  132. package/dist/cjs/{resolve-props-BBVQo_N5.js.map → resolve-props-JqnN_2MF.js.map} +1 -1
  133. package/dist/cjs/{scroll-lock-zJbOf1Xr.js → scroll-lock-CxkP-oj1.js} +3 -3
  134. package/dist/cjs/{scroll-lock-zJbOf1Xr.js.map → scroll-lock-CxkP-oj1.js.map} +1 -1
  135. package/dist/cjs/{suggestions-quLXODgi.js → suggestions-BDfdREI5.js} +4 -4
  136. package/dist/cjs/{suggestions-quLXODgi.js.map → suggestions-BDfdREI5.js.map} +1 -1
  137. package/dist/cjs/test-component.cjs.entry.js +1 -1
  138. package/dist/cjs/{toggle-handler-CENFGRWT.js → toggle-handler-Bm0e15f-.js} +5 -5
  139. package/dist/cjs/{toggle-handler-CENFGRWT.js.map → toggle-handler-Bm0e15f-.js.map} +1 -1
  140. package/dist/collection/components/accordion/style.css +2 -2
  141. package/dist/collection/components/alert/style.css +2 -2
  142. package/dist/collection/components/badge/style.css +2 -2
  143. package/dist/collection/components/breadcrumb/style.css +2 -2
  144. package/dist/collection/components/button/style.css +2 -2
  145. package/dist/collection/components/button-link/style.css +2 -2
  146. package/dist/collection/components/card/style.css +2 -2
  147. package/dist/collection/components/combobox/style.css +2 -2
  148. package/dist/collection/components/details/style.css +2 -2
  149. package/dist/collection/components/dialog/style.css +2 -2
  150. package/dist/collection/components/drawer/style.css +2 -2
  151. package/dist/collection/components/form/style.css +2 -2
  152. package/dist/collection/components/icon/style.css +2 -2
  153. package/dist/collection/components/input-checkbox/style.css +2 -2
  154. package/dist/collection/components/input-color/style.css +2 -2
  155. package/dist/collection/components/input-date/style.css +2 -2
  156. package/dist/collection/components/input-email/style.css +2 -2
  157. package/dist/collection/components/input-file/style.css +2 -2
  158. package/dist/collection/components/input-number/style.css +2 -2
  159. package/dist/collection/components/input-password/style.css +2 -2
  160. package/dist/collection/components/input-radio/style.css +2 -2
  161. package/dist/collection/components/input-range/style.css +2 -2
  162. package/dist/collection/components/input-text/style.css +2 -2
  163. package/dist/collection/components/link/style.css +2 -2
  164. package/dist/collection/components/link-button/style.css +2 -2
  165. package/dist/collection/components/modal/style.css +2 -2
  166. package/dist/collection/components/nav/style.css +2 -2
  167. package/dist/collection/components/pagination/style.css +2 -2
  168. package/dist/collection/components/popover-button/style.css +2 -2
  169. package/dist/collection/components/select/style.css +2 -2
  170. package/dist/collection/components/single-select/style.css +2 -2
  171. package/dist/collection/components/skip-nav/style.css +2 -2
  172. package/dist/collection/components/split-button/style.css +2 -2
  173. package/dist/collection/components/table-stateful/style.css +2 -2
  174. package/dist/collection/components/table-stateless/style.css +2 -2
  175. package/dist/collection/components/tabs/style.css +2 -2
  176. package/dist/collection/components/textarea/style.css +2 -2
  177. package/dist/collection/components/toaster/style.css +2 -2
  178. package/dist/collection/components/toolbar/style.css +2 -2
  179. package/dist/collection/components/tree-item/style.css +2 -2
  180. package/dist/collection/components/version/style.css +2 -2
  181. package/dist/components/kol-accordion.js +1 -1
  182. package/dist/components/kol-alert.js +1 -1
  183. package/dist/components/kol-badge.js +1 -1
  184. package/dist/components/kol-breadcrumb.js +1 -1
  185. package/dist/components/kol-button-link.js +1 -1
  186. package/dist/components/kol-button.js +1 -1
  187. package/dist/components/kol-card.js +1 -1
  188. package/dist/components/kol-combobox.js +1 -1
  189. package/dist/components/kol-details.js +1 -1
  190. package/dist/components/kol-dialog.js +1 -1
  191. package/dist/components/kol-drawer.js +1 -1
  192. package/dist/components/kol-form.js +1 -1
  193. package/dist/components/kol-icon.js +1 -1
  194. package/dist/components/kol-input-checkbox.js +1 -1
  195. package/dist/components/kol-input-color.js +1 -1
  196. package/dist/components/kol-input-date.js +1 -1
  197. package/dist/components/kol-input-email.js +1 -1
  198. package/dist/components/kol-input-file.js +1 -1
  199. package/dist/components/kol-input-number.js +1 -1
  200. package/dist/components/kol-input-password.js +1 -1
  201. package/dist/components/kol-input-radio.js +1 -1
  202. package/dist/components/kol-input-range.js +1 -1
  203. package/dist/components/kol-input-text.js +1 -1
  204. package/dist/components/kol-link-button.js +1 -1
  205. package/dist/components/kol-link.js +1 -1
  206. package/dist/components/kol-modal.js +1 -1
  207. package/dist/components/kol-nav.js +1 -1
  208. package/dist/components/kol-pagination.js +1 -1
  209. package/dist/components/kol-popover-button.js +1 -1
  210. package/dist/components/kol-select.js +1 -1
  211. package/dist/components/kol-single-select.js +1 -1
  212. package/dist/components/kol-skip-nav.js +1 -1
  213. package/dist/components/kol-split-button.js +1 -1
  214. package/dist/components/kol-table-stateful.js +1 -1
  215. package/dist/components/kol-table-stateless.js +1 -1
  216. package/dist/components/kol-tabs.js +1 -1
  217. package/dist/components/kol-textarea.js +1 -1
  218. package/dist/components/kol-toast-container.js +1 -1
  219. package/dist/components/kol-toolbar.js +1 -1
  220. package/dist/components/kol-tree-item.js +1 -1
  221. package/dist/components/kol-version.js +1 -1
  222. package/dist/esm/{Heading-BctDgC7M.js → Heading-DYEtnAIe.js} +3 -3
  223. package/dist/{kolibri/Heading-BctDgC7M.js.map → esm/Heading-DYEtnAIe.js.map} +1 -1
  224. package/dist/esm/{api-B6fEjFVl.js → api-Bhr2ic7C.js} +12 -12
  225. package/dist/{kolibri/api-B6fEjFVl.js.map → esm/api-Bhr2ic7C.js.map} +1 -1
  226. package/dist/esm/{api-T-JuZMlj.js → api-DwdE0qU0.js} +8 -8
  227. package/dist/esm/{api-T-JuZMlj.js.map → api-DwdE0qU0.js.map} +1 -1
  228. package/dist/esm/{app-globals-CvvWI2x9.js → app-globals-DlrwRj26.js} +4 -4
  229. package/dist/esm/{app-globals-CvvWI2x9.js.map → app-globals-DlrwRj26.js.map} +1 -1
  230. package/dist/esm/{base-Dvr4F_Pr.js → base-BwsdAVVP.js} +16 -16
  231. package/dist/{kolibri/base-Dvr4F_Pr.js.map → esm/base-BwsdAVVP.js.map} +1 -1
  232. package/dist/esm/{base-BbVXW6YI.js → base-CQQKxfxv.js} +4 -4
  233. package/dist/{kolibri/base-BbVXW6YI.js.map → esm/base-CQQKxfxv.js.map} +1 -1
  234. package/dist/esm/{base-BARjFMg1.js → base-CdUYL1Y_.js} +5 -5
  235. package/dist/esm/{base-BARjFMg1.js.map → base-CdUYL1Y_.js.map} +1 -1
  236. package/dist/esm/{base-D8yYjJsn.js → base-D5a-Ls-4.js} +4 -4
  237. package/dist/{kolibri/base-D8yYjJsn.js.map → esm/base-D5a-Ls-4.js.map} +1 -1
  238. package/dist/esm/{base-web-component-DU3hnIWD.js → base-web-component-6IoFcVM9.js} +7 -7
  239. package/dist/{kolibri/base-web-component-DU3hnIWD.js.map → esm/base-web-component-6IoFcVM9.js.map} +1 -1
  240. package/dist/esm/{base-web-component-BzB5tP9s.js → base-web-component-CyCs0EpM.js} +5 -5
  241. package/dist/{kolibri/base-web-component-BzB5tP9s.js.map → esm/base-web-component-CyCs0EpM.js.map} +1 -1
  242. package/dist/esm/{behavior-CbqCHL6O.js → behavior-COQhqcG7.js} +3 -3
  243. package/dist/{kolibri/behavior-CbqCHL6O.js.map → esm/behavior-COQhqcG7.js.map} +1 -1
  244. package/dist/esm/{component-d1d-AIsY.js → component-BOFlST8N.js} +5 -5
  245. package/dist/{kolibri/component-d1d-AIsY.js.map → esm/component-BOFlST8N.js.map} +1 -1
  246. package/dist/esm/{component-DKS73hKY.js → component-C4dhT4Ba.js} +3 -3
  247. package/dist/{kolibri/component-DKS73hKY.js.map → esm/component-C4dhT4Ba.js.map} +1 -1
  248. package/dist/esm/{component-BaD1OTyv.js → component-C9cJK7Cf.js} +5 -5
  249. package/dist/esm/{component-BaD1OTyv.js.map → component-C9cJK7Cf.js.map} +1 -1
  250. package/dist/esm/{component-BjWF1SyZ.js → component-CBkrKKXd.js} +7 -7
  251. package/dist/esm/{component-BjWF1SyZ.js.map → component-CBkrKKXd.js.map} +1 -1
  252. package/dist/esm/{component-Ch6fss2f.js → component-CHz6TLzY.js} +5 -5
  253. package/dist/esm/{component-Ch6fss2f.js.map → component-CHz6TLzY.js.map} +1 -1
  254. package/dist/esm/{component-CmBM-Y1C.js → component-CODtL04S.js} +7 -7
  255. package/dist/esm/{component-CmBM-Y1C.js.map → component-CODtL04S.js.map} +1 -1
  256. package/dist/esm/{component-DhBTawyT.js → component-D30YHxgS.js} +3 -3
  257. package/dist/esm/{component-DhBTawyT.js.map → component-D30YHxgS.js.map} +1 -1
  258. package/dist/esm/{component-G9vQ1mQA.js → component-DXmRJdLc.js} +4 -4
  259. package/dist/{kolibri/component-G9vQ1mQA.js.map → esm/component-DXmRJdLc.js.map} +1 -1
  260. package/dist/esm/{component-QCFfSS76.js → component-DoCNds1d.js} +4 -4
  261. package/dist/{kolibri/component-QCFfSS76.js.map → esm/component-DoCNds1d.js.map} +1 -1
  262. package/dist/esm/{component-CvhmYY4a.js → component-fK2EUkFf.js} +4 -4
  263. package/dist/esm/{component-CvhmYY4a.js.map → component-fK2EUkFf.js.map} +1 -1
  264. package/dist/esm/{component-sf_0WjJF.js → component-kDR4_xf0.js} +3 -3
  265. package/dist/{kolibri/component-sf_0WjJF.js.map → esm/component-kDR4_xf0.js.map} +1 -1
  266. package/dist/esm/{component-D0iTurA_.js → component-kxFmDVse.js} +3 -3
  267. package/dist/esm/{component-D0iTurA_.js.map → component-kxFmDVse.js.map} +1 -1
  268. package/dist/esm/{dev.utils-BGy8dbtQ.js → dev.utils-DDqySnXB.js} +3 -3
  269. package/dist/{kolibri/dev.utils-BGy8dbtQ.js.map → esm/dev.utils-DDqySnXB.js.map} +1 -1
  270. package/dist/esm/{devtools-CZ8Mnmwl.js → devtools-CjmOcVsT.js} +4 -4
  271. package/dist/{kolibri/devtools-CZ8Mnmwl.js.map → esm/devtools-CjmOcVsT.js.map} +1 -1
  272. package/dist/esm/{field-control-CLnFuMmy.js → field-control-Dkru7B-M.js} +8 -8
  273. package/dist/esm/{field-control-CLnFuMmy.js.map → field-control-Dkru7B-M.js.map} +1 -1
  274. package/dist/esm/{group-BAOmF5Ok.js → group-CXJiUqKv.js} +5 -5
  275. package/dist/{kolibri/group-BAOmF5Ok.js.map → esm/group-CXJiUqKv.js.map} +1 -1
  276. package/dist/esm/{index-DAKQV03B.js → index-wY4pHWJG.js} +3 -3
  277. package/dist/esm/index-wY4pHWJG.js.map +1 -0
  278. package/dist/esm/{input-D2i1QEbL.js → input-C_ZwHs-7.js} +5 -5
  279. package/dist/esm/{input-D2i1QEbL.js.map → input-C_ZwHs-7.js.map} +1 -1
  280. package/dist/esm/{input-container-wQm8-W3s.js → input-container-CBl9xcK-.js} +7 -7
  281. package/dist/{kolibri/input-container-wQm8-W3s.js.map → esm/input-container-CBl9xcK-.js.map} +1 -1
  282. package/dist/esm/{item-Dkm57tce.js → item-BacIXvMT.js} +4 -4
  283. package/dist/esm/{item-Dkm57tce.js.map → item-BacIXvMT.js.map} +1 -1
  284. package/dist/esm/{item-DbLIGnc9.js → item-DewHrd_f.js} +4 -4
  285. package/dist/{kolibri/item-DbLIGnc9.js.map → esm/item-DewHrd_f.js.map} +1 -1
  286. package/dist/esm/{item-DuBSR8BS.js → item-lEB6GAqe.js} +3 -3
  287. package/dist/esm/{item-DuBSR8BS.js.map → item-lEB6GAqe.js.map} +1 -1
  288. package/dist/esm/{item-DJ8LXOMv.js → item-nGiqyOvt.js} +8 -8
  289. package/dist/{kolibri/item-DJ8LXOMv.js.map → esm/item-nGiqyOvt.js.map} +1 -1
  290. package/dist/esm/kol-abbr.entry.js +2 -2
  291. package/dist/esm/kol-accordion.entry.js +7 -7
  292. package/dist/esm/kol-alert.entry.js +11 -11
  293. package/dist/esm/kol-avatar.entry.js +1 -1
  294. package/dist/esm/kol-badge.entry.js +10 -10
  295. package/dist/esm/kol-breadcrumb.entry.js +9 -9
  296. package/dist/esm/kol-button-link.entry.js +10 -10
  297. package/dist/esm/kol-button.entry.js +10 -10
  298. package/dist/esm/kol-card.entry.js +11 -11
  299. package/dist/esm/kol-click-button.entry.js +2 -2
  300. package/dist/esm/kol-combobox.entry.js +18 -18
  301. package/dist/esm/kol-details.entry.js +7 -7
  302. package/dist/esm/kol-dialog.entry.js +13 -13
  303. package/dist/esm/kol-drawer.entry.js +12 -12
  304. package/dist/esm/kol-form.entry.js +12 -12
  305. package/dist/esm/kol-heading.entry.js +1 -1
  306. package/dist/esm/kol-icon.entry.js +3 -3
  307. package/dist/esm/kol-image.entry.js +1 -1
  308. package/dist/esm/kol-input-checkbox.entry.js +17 -17
  309. package/dist/esm/kol-input-color.entry.js +18 -18
  310. package/dist/esm/kol-input-date.entry.js +18 -18
  311. package/dist/esm/kol-input-email.entry.js +20 -20
  312. package/dist/esm/kol-input-file.entry.js +17 -17
  313. package/dist/esm/kol-input-number.entry.js +18 -18
  314. package/dist/esm/kol-input-password.entry.js +20 -20
  315. package/dist/esm/kol-input-radio.entry.js +17 -17
  316. package/dist/esm/kol-input-range.entry.js +18 -18
  317. package/dist/esm/kol-input-text.entry.js +20 -20
  318. package/dist/esm/kol-kolibri.entry.js +2 -2
  319. package/dist/esm/kol-link-button.entry.js +10 -10
  320. package/dist/esm/kol-link.entry.js +10 -10
  321. package/dist/esm/kol-meter.entry.js +1 -1
  322. package/dist/esm/kol-modal.entry.js +13 -13
  323. package/dist/esm/kol-nav.entry.js +13 -13
  324. package/dist/esm/kol-pagination.entry.js +18 -18
  325. package/dist/esm/kol-popover-button.entry.js +11 -11
  326. package/dist/esm/kol-progress.entry.js +1 -1
  327. package/dist/esm/kol-quote.entry.js +1 -1
  328. package/dist/esm/kol-select.entry.js +17 -17
  329. package/dist/esm/kol-single-select.entry.js +18 -18
  330. package/dist/esm/kol-skeleton.entry.js +2 -2
  331. package/dist/esm/kol-skip-nav.entry.js +9 -9
  332. package/dist/esm/kol-spin.entry.js +3 -3
  333. package/dist/esm/kol-split-button.entry.js +12 -12
  334. package/dist/esm/kol-table-stateful.entry.js +25 -25
  335. package/dist/esm/kol-table-stateless.entry.js +19 -19
  336. package/dist/esm/kol-tabs.entry.js +9 -9
  337. package/dist/esm/kol-textarea.entry.js +17 -17
  338. package/dist/esm/kol-toast-container.entry.js +11 -11
  339. package/dist/esm/kol-toolbar.entry.js +11 -11
  340. package/dist/esm/kol-tooltip-wc.entry.js +4 -4
  341. package/dist/esm/kol-tree-item.entry.js +9 -9
  342. package/dist/esm/kol-tree.entry.js +1 -1
  343. package/dist/esm/kol-version.entry.js +9 -9
  344. package/dist/esm/kolibri.js +3 -3
  345. package/dist/esm/loader.js +3 -3
  346. package/dist/esm/{resolve-props-BTiKxg-8.js → resolve-props-DrFDeILa.js} +3 -3
  347. package/dist/{kolibri/resolve-props-BTiKxg-8.js.map → esm/resolve-props-DrFDeILa.js.map} +1 -1
  348. package/dist/esm/{scroll-lock-DRNyw9qH.js → scroll-lock-BotxOlMX.js} +3 -3
  349. package/dist/{kolibri/scroll-lock-DRNyw9qH.js.map → esm/scroll-lock-BotxOlMX.js.map} +1 -1
  350. package/dist/esm/{suggestions-CG-TuGC4.js → suggestions-CX5S2xAI.js} +4 -4
  351. package/dist/esm/{suggestions-CG-TuGC4.js.map → suggestions-CX5S2xAI.js.map} +1 -1
  352. package/dist/esm/test-component.entry.js +1 -1
  353. package/dist/esm/{toggle-handler-aTxO0Wem.js → toggle-handler-VctiltrE.js} +5 -5
  354. package/dist/esm/{toggle-handler-aTxO0Wem.js.map → toggle-handler-VctiltrE.js.map} +1 -1
  355. package/dist/kolibri/{Heading-BctDgC7M.js → Heading-DYEtnAIe.js} +2 -2
  356. package/dist/{esm/Heading-BctDgC7M.js.map → kolibri/Heading-DYEtnAIe.js.map} +1 -1
  357. package/dist/kolibri/api-Bhr2ic7C.js +5 -0
  358. package/dist/{esm/api-B6fEjFVl.js.map → kolibri/api-Bhr2ic7C.js.map} +1 -1
  359. package/dist/kolibri/api-DwdE0qU0.js +5 -0
  360. package/dist/kolibri/{api-T-JuZMlj.js.map → api-DwdE0qU0.js.map} +1 -1
  361. package/dist/kolibri/app-globals-DlrwRj26.js +5 -0
  362. package/dist/kolibri/{app-globals-CvvWI2x9.js.map → app-globals-DlrwRj26.js.map} +1 -1
  363. package/dist/kolibri/{base-Dvr4F_Pr.js → base-BwsdAVVP.js} +2 -2
  364. package/dist/{esm/base-Dvr4F_Pr.js.map → kolibri/base-BwsdAVVP.js.map} +1 -1
  365. package/dist/kolibri/{base-BbVXW6YI.js → base-CQQKxfxv.js} +2 -2
  366. package/dist/{esm/base-BbVXW6YI.js.map → kolibri/base-CQQKxfxv.js.map} +1 -1
  367. package/dist/kolibri/{base-BARjFMg1.js → base-CdUYL1Y_.js} +2 -2
  368. package/dist/kolibri/{base-BARjFMg1.js.map → base-CdUYL1Y_.js.map} +1 -1
  369. package/dist/kolibri/{base-D8yYjJsn.js → base-D5a-Ls-4.js} +2 -2
  370. package/dist/{esm/base-D8yYjJsn.js.map → kolibri/base-D5a-Ls-4.js.map} +1 -1
  371. package/dist/kolibri/{base-web-component-DU3hnIWD.js → base-web-component-6IoFcVM9.js} +2 -2
  372. package/dist/{esm/base-web-component-DU3hnIWD.js.map → kolibri/base-web-component-6IoFcVM9.js.map} +1 -1
  373. package/dist/kolibri/{base-web-component-BzB5tP9s.js → base-web-component-CyCs0EpM.js} +2 -2
  374. package/dist/{esm/base-web-component-BzB5tP9s.js.map → kolibri/base-web-component-CyCs0EpM.js.map} +1 -1
  375. package/dist/kolibri/{behavior-CbqCHL6O.js → behavior-COQhqcG7.js} +2 -2
  376. package/dist/{esm/behavior-CbqCHL6O.js.map → kolibri/behavior-COQhqcG7.js.map} +1 -1
  377. package/dist/kolibri/{component-d1d-AIsY.js → component-BOFlST8N.js} +2 -2
  378. package/dist/{esm/component-d1d-AIsY.js.map → kolibri/component-BOFlST8N.js.map} +1 -1
  379. package/dist/kolibri/{component-DKS73hKY.js → component-C4dhT4Ba.js} +2 -2
  380. package/dist/{esm/component-DKS73hKY.js.map → kolibri/component-C4dhT4Ba.js.map} +1 -1
  381. package/dist/kolibri/component-C9cJK7Cf.js +5 -0
  382. package/dist/kolibri/{component-BaD1OTyv.js.map → component-C9cJK7Cf.js.map} +1 -1
  383. package/dist/kolibri/{component-BjWF1SyZ.js → component-CBkrKKXd.js} +2 -2
  384. package/dist/kolibri/{component-BjWF1SyZ.js.map → component-CBkrKKXd.js.map} +1 -1
  385. package/dist/kolibri/{component-Ch6fss2f.js → component-CHz6TLzY.js} +2 -2
  386. package/dist/kolibri/{component-Ch6fss2f.js.map → component-CHz6TLzY.js.map} +1 -1
  387. package/dist/kolibri/component-CODtL04S.js +5 -0
  388. package/dist/kolibri/{component-CmBM-Y1C.js.map → component-CODtL04S.js.map} +1 -1
  389. package/dist/kolibri/{component-DhBTawyT.js → component-D30YHxgS.js} +2 -2
  390. package/dist/kolibri/{component-DhBTawyT.js.map → component-D30YHxgS.js.map} +1 -1
  391. package/dist/kolibri/{component-G9vQ1mQA.js → component-DXmRJdLc.js} +2 -2
  392. package/dist/{esm/component-G9vQ1mQA.js.map → kolibri/component-DXmRJdLc.js.map} +1 -1
  393. package/dist/kolibri/{component-QCFfSS76.js → component-DoCNds1d.js} +2 -2
  394. package/dist/{esm/component-QCFfSS76.js.map → kolibri/component-DoCNds1d.js.map} +1 -1
  395. package/dist/kolibri/{component-CvhmYY4a.js → component-fK2EUkFf.js} +2 -2
  396. package/dist/kolibri/{component-CvhmYY4a.js.map → component-fK2EUkFf.js.map} +1 -1
  397. package/dist/kolibri/{component-sf_0WjJF.js → component-kDR4_xf0.js} +2 -2
  398. package/dist/{esm/component-sf_0WjJF.js.map → kolibri/component-kDR4_xf0.js.map} +1 -1
  399. package/dist/kolibri/{component-D0iTurA_.js → component-kxFmDVse.js} +2 -2
  400. package/dist/kolibri/{component-D0iTurA_.js.map → component-kxFmDVse.js.map} +1 -1
  401. package/dist/kolibri/{dev.utils-BGy8dbtQ.js → dev.utils-DDqySnXB.js} +2 -2
  402. package/dist/{esm/dev.utils-BGy8dbtQ.js.map → kolibri/dev.utils-DDqySnXB.js.map} +1 -1
  403. package/dist/kolibri/{devtools-CZ8Mnmwl.js → devtools-CjmOcVsT.js} +2 -2
  404. package/dist/{esm/devtools-CZ8Mnmwl.js.map → kolibri/devtools-CjmOcVsT.js.map} +1 -1
  405. package/dist/kolibri/field-control-Dkru7B-M.js +5 -0
  406. package/dist/kolibri/{field-control-CLnFuMmy.js.map → field-control-Dkru7B-M.js.map} +1 -1
  407. package/dist/kolibri/{group-BAOmF5Ok.js → group-CXJiUqKv.js} +2 -2
  408. package/dist/{esm/group-BAOmF5Ok.js.map → kolibri/group-CXJiUqKv.js.map} +1 -1
  409. package/dist/kolibri/{index-DAKQV03B.js → index-wY4pHWJG.js} +2 -2
  410. package/dist/kolibri/index-wY4pHWJG.js.map +1 -0
  411. package/dist/kolibri/input-C_ZwHs-7.js +5 -0
  412. package/dist/kolibri/{input-D2i1QEbL.js.map → input-C_ZwHs-7.js.map} +1 -1
  413. package/dist/kolibri/input-container-CBl9xcK-.js +5 -0
  414. package/dist/{esm/input-container-wQm8-W3s.js.map → kolibri/input-container-CBl9xcK-.js.map} +1 -1
  415. package/dist/kolibri/item-BacIXvMT.js +5 -0
  416. package/dist/kolibri/{item-Dkm57tce.js.map → item-BacIXvMT.js.map} +1 -1
  417. package/dist/kolibri/item-DewHrd_f.js +5 -0
  418. package/dist/{esm/item-DbLIGnc9.js.map → kolibri/item-DewHrd_f.js.map} +1 -1
  419. package/dist/kolibri/item-lEB6GAqe.js +5 -0
  420. package/dist/kolibri/{item-DuBSR8BS.js.map → item-lEB6GAqe.js.map} +1 -1
  421. package/dist/kolibri/{item-DJ8LXOMv.js → item-nGiqyOvt.js} +2 -2
  422. package/dist/{esm/item-DJ8LXOMv.js.map → kolibri/item-nGiqyOvt.js.map} +1 -1
  423. package/dist/kolibri/kol-abbr.entry.js +1 -1
  424. package/dist/kolibri/kol-accordion.entry.js +1 -1
  425. package/dist/kolibri/kol-alert.entry.js +1 -1
  426. package/dist/kolibri/kol-avatar.entry.js +1 -1
  427. package/dist/kolibri/kol-badge.entry.js +1 -1
  428. package/dist/kolibri/kol-breadcrumb.entry.js +1 -1
  429. package/dist/kolibri/kol-button-link.entry.js +1 -1
  430. package/dist/kolibri/kol-button.entry.js +1 -1
  431. package/dist/kolibri/kol-card.entry.js +1 -1
  432. package/dist/kolibri/kol-click-button.entry.js +1 -1
  433. package/dist/kolibri/kol-combobox.entry.js +1 -1
  434. package/dist/kolibri/kol-details.entry.js +1 -1
  435. package/dist/kolibri/kol-dialog.entry.js +1 -1
  436. package/dist/kolibri/kol-drawer.entry.js +1 -1
  437. package/dist/kolibri/kol-form.entry.js +1 -1
  438. package/dist/kolibri/kol-heading.entry.js +1 -1
  439. package/dist/kolibri/kol-icon.entry.js +1 -1
  440. package/dist/kolibri/kol-image.entry.js +1 -1
  441. package/dist/kolibri/kol-input-checkbox.entry.js +1 -1
  442. package/dist/kolibri/kol-input-color.entry.js +1 -1
  443. package/dist/kolibri/kol-input-date.entry.js +1 -1
  444. package/dist/kolibri/kol-input-email.entry.js +1 -1
  445. package/dist/kolibri/kol-input-file.entry.js +1 -1
  446. package/dist/kolibri/kol-input-number.entry.js +1 -1
  447. package/dist/kolibri/kol-input-password.entry.js +1 -1
  448. package/dist/kolibri/kol-input-radio.entry.js +1 -1
  449. package/dist/kolibri/kol-input-range.entry.js +1 -1
  450. package/dist/kolibri/kol-input-text.entry.js +1 -1
  451. package/dist/kolibri/kol-kolibri.entry.js +1 -1
  452. package/dist/kolibri/kol-link-button.entry.js +1 -1
  453. package/dist/kolibri/kol-link.entry.js +1 -1
  454. package/dist/kolibri/kol-meter.entry.js +1 -1
  455. package/dist/kolibri/kol-modal.entry.js +1 -1
  456. package/dist/kolibri/kol-nav.entry.js +1 -1
  457. package/dist/kolibri/kol-pagination.entry.js +1 -1
  458. package/dist/kolibri/kol-popover-button.entry.js +1 -1
  459. package/dist/kolibri/kol-progress.entry.js +1 -1
  460. package/dist/kolibri/kol-quote.entry.js +1 -1
  461. package/dist/kolibri/kol-select.entry.js +1 -1
  462. package/dist/kolibri/kol-single-select.entry.js +1 -1
  463. package/dist/kolibri/kol-skeleton.entry.js +1 -1
  464. package/dist/kolibri/kol-skip-nav.entry.js +1 -1
  465. package/dist/kolibri/kol-spin.entry.js +1 -1
  466. package/dist/kolibri/kol-split-button.entry.js +1 -1
  467. package/dist/kolibri/kol-table-stateful.entry.js +1 -1
  468. package/dist/kolibri/kol-table-stateless.entry.js +1 -1
  469. package/dist/kolibri/kol-tabs.entry.js +1 -1
  470. package/dist/kolibri/kol-textarea.entry.js +1 -1
  471. package/dist/kolibri/kol-toast-container.entry.js +1 -1
  472. package/dist/kolibri/kol-toolbar.entry.js +1 -1
  473. package/dist/kolibri/kol-tooltip-wc.entry.js +1 -1
  474. package/dist/kolibri/kol-tree-item.entry.js +1 -1
  475. package/dist/kolibri/kol-tree.entry.js +1 -1
  476. package/dist/kolibri/kol-version.entry.js +1 -1
  477. package/dist/kolibri/kolibri.esm.js +1 -1
  478. package/dist/kolibri/resolve-props-DrFDeILa.js +5 -0
  479. package/dist/{esm/resolve-props-BTiKxg-8.js.map → kolibri/resolve-props-DrFDeILa.js.map} +1 -1
  480. package/dist/kolibri/{scroll-lock-DRNyw9qH.js → scroll-lock-BotxOlMX.js} +2 -2
  481. package/dist/{esm/scroll-lock-DRNyw9qH.js.map → kolibri/scroll-lock-BotxOlMX.js.map} +1 -1
  482. package/dist/kolibri/{suggestions-CG-TuGC4.js → suggestions-CX5S2xAI.js} +2 -2
  483. package/dist/kolibri/{suggestions-CG-TuGC4.js.map → suggestions-CX5S2xAI.js.map} +1 -1
  484. package/dist/kolibri/test-component.entry.js +1 -1
  485. package/dist/kolibri/toggle-handler-VctiltrE.js +5 -0
  486. package/dist/kolibri/{toggle-handler-aTxO0Wem.js.map → toggle-handler-VctiltrE.js.map} +1 -1
  487. package/package.json +3 -3
  488. package/dist/cjs/index-RAfZF5x0.js.map +0 -1
  489. package/dist/esm/index-DAKQV03B.js.map +0 -1
  490. package/dist/kolibri/api-B6fEjFVl.js +0 -5
  491. package/dist/kolibri/api-T-JuZMlj.js +0 -5
  492. package/dist/kolibri/app-globals-CvvWI2x9.js +0 -5
  493. package/dist/kolibri/component-BaD1OTyv.js +0 -5
  494. package/dist/kolibri/component-CmBM-Y1C.js +0 -5
  495. package/dist/kolibri/field-control-CLnFuMmy.js +0 -5
  496. package/dist/kolibri/index-DAKQV03B.js.map +0 -1
  497. package/dist/kolibri/input-D2i1QEbL.js +0 -5
  498. package/dist/kolibri/input-container-wQm8-W3s.js +0 -5
  499. package/dist/kolibri/item-DbLIGnc9.js +0 -5
  500. package/dist/kolibri/item-Dkm57tce.js +0 -5
  501. package/dist/kolibri/item-DuBSR8BS.js +0 -5
  502. package/dist/kolibri/resolve-props-BTiKxg-8.js +0 -5
  503. package/dist/kolibri/toggle-handler-aTxO0Wem.js +0 -5
@@ -1 +1 @@
1
- {"version":3,"file":"item-DJ8LXOMv.js","sources":["src/internal/props/boundary-count.ts","src/internal/props/page.ts","src/internal/props/page-size.ts","src/internal/props/page-size-options.ts","src/internal/props/pagination-callbacks.ts","src/internal/props/pagination-has-buttons.ts","src/internal/props/pagination-label.ts","src/internal/props/pagination-max.ts","src/internal/props/sibling-count.ts","src/internal/functional-components/pagination/api.tsx","src/internal/functional-components/pagination/model.ts","src/internal/functional-components/pagination/component.tsx","src/internal/functional-components/pagination/page-size-select.tsx","src/internal/functional-components/pagination/item.ts"],"sourcesContent":["import type { SimpleProp } from './helpers/factory';\nimport { createPropDefinition } from './helpers/factory';\n\n/**\n * Boundary count prop of `kol-pagination`\n *\n * Description:\n * The number of pages shown next to the first and the last page. A negative value counts as 0.\n */\nexport type BoundaryCountProp = SimpleProp<'boundaryCount', number>;\nexport const boundaryCountProp = createPropDefinition<BoundaryCountProp>('boundaryCount', 1, (value) => Math.max(0, value as number));\n","import type { SimpleProp } from './helpers/factory';\nimport { createPropDefinition } from './helpers/factory';\nimport { normalizeNumberType } from './helpers/normalizers';\n\n/**\n * Page prop of `kol-pagination`\n *\n * Description:\n * The current page, starting at 1. The pagination clamps it to the available pages.\n */\nexport type PageProp = SimpleProp<'page', number>;\nexport const pageProp = createPropDefinition<PageProp>('page', 0, normalizeNumberType);\n","import type { SimpleProp } from './helpers/factory';\nimport { createPropDefinition } from './helpers/factory';\nimport { normalizeNumberType } from './helpers/normalizers';\n\n/**\n * Page size prop of `kol-pagination`\n *\n * Description:\n * The number of entries per page. With page size options, a value that is not an option falls back\n * to the first option.\n */\nexport type PageSizeProp = SimpleProp<'pageSize', number>;\nexport const pageSizeProp = createPropDefinition<PageSizeProp>('pageSize', 1, normalizeNumberType);\n","import type { Option, Stringified } from '../../schema';\nimport { parseJson } from '../../schema';\nimport type { Prop } from './helpers/factory';\nimport { createPropDefinition } from './helpers/factory';\n\n/**\n * Page size options prop of `kol-pagination`\n *\n * Description:\n * The page sizes of the page size select, as an array of numbers or as a JSON string. One value that\n * is not a number rejects the whole list.\n */\nexport type PageSizeOptionsProp = Prop<'pageSizeOptions', Stringified<number[]>, Option<number>[]>;\n\nconst OBJECT_OBJECT = /^\\[object Object\\]$/;\n\nfunction normalizePageSizeOptions(value: unknown): Option<number>[] | never {\n\t// An empty string or '[object Object]' is what Stencil passes for an array it could not reflect.\n\tif (value === '' || (typeof value === 'string' && OBJECT_OBJECT.test(value))) {\n\t\tthrow new Error('Unreflected page size options');\n\t}\n\tconst parsed = typeof value === 'string' ? parseJson<unknown>(value) : value;\n\tif (Array.isArray(parsed) && parsed.every((item) => typeof item === 'number')) {\n\t\treturn parsed.map((size) => ({ label: `${size}`, value: size }));\n\t}\n\tthrow new Error('Invalid page size options');\n}\n\nexport const pageSizeOptionsProp = createPropDefinition<PageSizeOptionsProp>('pageSizeOptions', [], normalizePageSizeOptions);\n","import type { KoliBriPaginationButtonCallbacks } from '../../schema';\nimport type { SimpleProp } from './helpers/factory';\nimport { createCallbacksPropDefinition } from './helpers/factory';\n\nexport type PaginationCallbacksProp = SimpleProp<'on', KoliBriPaginationButtonCallbacks>;\n\nexport const paginationCallbacksProp = createCallbacksPropDefinition<KoliBriPaginationButtonCallbacks>();\n","import type { PaginationHasButton, Stringified } from '../../schema';\nimport { parseJson } from '../../schema';\nimport type { Prop } from './helpers/factory';\nimport { createPropDefinition } from './helpers/factory';\n\n/**\n * Has buttons prop of `kol-pagination`\n *\n * Description:\n * Which navigation buttons to render: `true`/`false` for all four, or an object (also as JSON string)\n * that sets single buttons. The normalized value holds only the buttons the value sets; the\n * pagination merges it into the current buttons.\n */\nexport type PaginationHasButtonsProp = Prop<'hasButtons', boolean | Stringified<PaginationHasButton>, Partial<PaginationHasButton>>;\n\nconst BUTTONS = ['first', 'last', 'next', 'previous'] as const;\n\nconst allButtons = (shown: boolean): PaginationHasButton => ({ first: shown, last: shown, next: shown, previous: shown });\n\nfunction normalizeHasButtons(value: unknown): Partial<PaginationHasButton> | never {\n\tif (typeof value === 'boolean') {\n\t\treturn allButtons(value);\n\t}\n\tif (typeof value === 'object' && value !== null) {\n\t\tconst buttons: Partial<PaginationHasButton> = {};\n\t\tBUTTONS.forEach((button) => {\n\t\t\tconst shown = (value as Partial<Record<string, unknown>>)[button];\n\t\t\tif (typeof shown === 'boolean') {\n\t\t\t\tbuttons[button] = shown;\n\t\t\t}\n\t\t});\n\t\treturn buttons;\n\t}\n\tif (typeof value === 'string') {\n\t\tconst parsed = parseJson<unknown>(value);\n\t\t// A JSON string that is no object renders no button.\n\t\treturn typeof parsed === 'object' && parsed !== null ? normalizeHasButtons(parsed) : allButtons(false);\n\t}\n\tthrow new Error('Invalid pagination buttons');\n}\n\nexport const paginationHasButtonsProp = createPropDefinition<PaginationHasButtonsProp>('hasButtons', allButtons(true), normalizeHasButtons);\n","import type { SimpleProp } from './helpers/factory';\nimport { createPropDefinition } from './helpers/factory';\nimport { normalizeString } from './helpers/normalizers';\n\n/**\n * Label prop of `kol-pagination`\n *\n * Description:\n * The accessible name of the navigation. Unlike `labelProp`, any string is accepted. Without a value\n * the pagination uses the translation `kol-pagination`.\n */\nexport type PaginationLabelProp = SimpleProp<'label', string>;\nexport const paginationLabelProp = createPropDefinition<PaginationLabelProp>('label', '', normalizeString);\n","import type { SimpleProp } from './helpers/factory';\nimport { createPropDefinition } from './helpers/factory';\nimport { normalizeNumberType } from './helpers/normalizers';\n\n/**\n * Max prop of `kol-pagination`\n *\n * Description:\n * The total number of entries; 0 means no entries. `maxProp` does not fit, because it requires a\n * value above 0.\n */\nexport type PaginationMaxProp = SimpleProp<'max', number>;\nexport const paginationMaxProp = createPropDefinition<PaginationMaxProp>('max', 0, normalizeNumberType);\n","import type { SimpleProp } from './helpers/factory';\nimport { createPropDefinition } from './helpers/factory';\n\n/**\n * Sibling count prop of `kol-pagination`\n *\n * Description:\n * The number of pages shown on each side of the current page. A negative value counts as 0.\n */\nexport type SiblingCountProp = SimpleProp<'siblingCount', number>;\nexport const siblingCountProp = createPropDefinition<SiblingCountProp>('siblingCount', 1, (value) => Math.max(0, value as number));\n","import {\n\tboundaryCountProp,\n\tcustomClassProp,\n\tpageProp,\n\tpageSizeOptionsProp,\n\tpageSizeProp,\n\tpaginationCallbacksProp,\n\tpaginationHasButtonsProp,\n\tpaginationLabelProp,\n\tpaginationMaxProp,\n\tsiblingCountProp,\n\ttooltipAlignProp,\n} from '../../props';\nimport type { ApiFromConfig, PropsConfigShape } from '../generic-types';\n\n/**\n * `page` and `pageSize` hold the clamped page and the page size resolved against the options, not the\n * raw props.\n */\nexport const paginationPropsConfig = {\n\trequired: [pageProp, paginationCallbacksProp, paginationMaxProp],\n\toptional: [\n\t\tboundaryCountProp,\n\t\tcustomClassProp,\n\t\tpageSizeOptionsProp,\n\t\tpageSizeProp,\n\t\tpaginationHasButtonsProp,\n\t\tpaginationLabelProp,\n\t\tsiblingCountProp,\n\t\ttooltipAlignProp,\n\t],\n} as const satisfies PropsConfigShape;\n\nexport type PaginationApi = ApiFromConfig<\n\ttypeof paginationPropsConfig,\n\t{\n\t\tCallbacks: {\n\t\t\t/** A page button or a navigation button was clicked; `page` is its target page. */\n\t\t\tpageClick: (event: Event, page: number) => void;\n\t\t\t/** The page size select changed. */\n\t\t\tpageSizeChange: (event: Event, value: unknown) => void;\n\t\t};\n\t}\n>;\n","import type { Option } from '../../../schema';\n\n/** Number of pages; without a page size each entry is one page. */\nexport const getPageCount = (max: number, pageSize = 1): number => Math.ceil(max / pageSize);\n\n/**\n * The page a page outside the range is clamped to, or `undefined` when the page stays. Without entries\n * (`max` 0 or below) every page stays. An `undefined` page size counts as 1.\n */\nexport const clampPage = (page: number, pageSize: number | undefined, max: number): number | undefined => {\n\tif (max > 0) {\n\t\tconst count = getPageCount(max, pageSize);\n\t\tif (count > 0) {\n\t\t\tif (page > count) {\n\t\t\t\treturn count;\n\t\t\t}\n\t\t\tif (page < 1) {\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t}\n\t}\n\treturn undefined;\n};\n\n/** With page size options, a page size that is not an option falls back to the first option. */\nexport const resolvePageSize = (pageSize: number, options: Option<number>[]): number => {\n\tif (options.length > 0) {\n\t\treturn options.find((option) => option.value === pageSize)?.value ?? options[0].value;\n\t}\n\treturn pageSize;\n};\n\nexport type PageItem = { page: number; selected: boolean } | 'separator' | null;\n\n/**\n * One item per page: a page button for the first and last `boundaryCount` pages and `siblingCount`\n * pages on each side of the current page, a separator for the first hidden page after a shown one, and\n * `null` for the other hidden pages. The `null` items keep the positions of the rendered children\n * stable, so a re-render keeps the navigation buttons after the list (and their focus). A gap before the\n * first shown page has no separator.\n */\nexport const getPageItems = (page: number, count: number, boundaryCount: number, siblingCount: number): PageItem[] => {\n\tconst items: PageItem[] = [];\n\tlet afterPage = false;\n\tfor (let item = 1; item <= count; item++) {\n\t\tif (item <= boundaryCount || item > count - boundaryCount || (item >= page - siblingCount && item <= page + siblingCount)) {\n\t\t\tafterPage = true;\n\t\t\titems.push({ page: item, selected: item === page });\n\t\t} else if (afterPage) {\n\t\t\tafterPage = false;\n\t\t\titems.push('separator');\n\t\t} else {\n\t\t\titems.push(null);\n\t\t}\n\t}\n\treturn items;\n};\n\n/** First and last entry of the current page, numbered from 1. */\nexport const getVisibleRange = (page: number, pageSize: number, max: number): { start: number; end: number } => {\n\tconst highest = page * pageSize;\n\treturn {\n\t\tstart: Math.max(0, (page - 1) * pageSize + 1),\n\t\tend: max < highest ? max : highest,\n\t};\n};\n","import type { FunctionalComponent as FC, JSX } from '@stencil/core';\nimport { h } from '@stencil/core';\n\nimport { translate } from '../../../i18n';\nimport type { InternalButtonProps } from '../../../schema';\nimport { bem } from '../../../schema/bem-registry';\nimport { nonce } from '../../../utils/dev.utils';\nimport { BemRootNodeFC } from '../bem-root-node/component';\nimport { ButtonFC } from '../button/component';\nimport type { ButtonItemFcProps, ButtonItemRootAttributes } from '../button/item';\nimport type { FunctionalComponentProps } from '../generic-types';\nimport type { PaginationApi } from './api';\nimport { getPageCount, getPageItems, getVisibleRange } from './model';\nimport type { PageSizeSelectInput } from './page-size-select';\n\nconst paginationBem = bem.forBlock('kol-pagination');\n\nconst leftDoubleArrowIcon = { left: 'kolicon-chevron-double-left' };\nconst leftSingleArrowIcon = { left: 'kolicon-chevron-left' };\nconst rightSingleArrowIcon = { right: 'kolicon-chevron-right' };\nconst rightDoubleArrowIcon = { right: 'kolicon-chevron-double-right' };\n\nconst userLanguage = ((language: string) => (language.includes('-') ? language : `${language}-${language.toUpperCase()}`))(navigator.language || 'de-DE');\nconst NUMBER_FORMATTER = new Intl.NumberFormat(userLanguage, {\n\tstyle: 'decimal',\n\tminimumFractionDigits: 0,\n\tmaximumFractionDigits: 0,\n});\n\nexport type NavigationPosition = 'first' | 'last' | 'next' | 'previous';\n\nexport type PaginationFCProps = FunctionalComponentProps<PaginationApi> & {\n\t/**\n\t * The `_on` objects of the navigation buttons. They keep their identity across renders, so a\n\t * re-render of the pagination does not re-render the navigation buttons.\n\t */\n\tnavigationCallbacks: Record<NavigationPosition, { onClick: (event: Event) => void }>;\n\t/** `ButtonFC` props of the page or navigation button `key`; the pagination item keeps one button item per key. */\n\tgetButtonFcProps: (key: string, props: InternalButtonProps, rootAttributes?: ButtonItemRootAttributes) => ButtonItemFcProps;\n\t/** The page size select; the pagination item keeps it while it is rendered. */\n\trenderPageSizeSelect: (input: Omit<PageSizeSelectInput, 'on'>) => JSX.Element;\n};\n\n/** The content of the pagination: the visible range, the navigation and the page size select. */\nexport const PaginationContentFC: FC<PaginationFCProps> = ({\n\tboundaryCount,\n\tcustomClass,\n\tgetButtonFcProps,\n\thandlePageClick,\n\thasButtons,\n\tlabel,\n\tmax,\n\tnavigationCallbacks,\n\tpage,\n\tpageSize,\n\tpageSizeOptions,\n\trenderPageSizeSelect,\n\tsiblingCount,\n\ttooltipAlign,\n}) => {\n\tconst count = getPageCount(max, pageSize);\n\tconst { start, end } = getVisibleRange(page, pageSize, max);\n\tconst navigationButton = (position: NavigationPosition, icons: Record<string, string>, buttonLabel: string, disabled: boolean) => (\n\t\t<li>\n\t\t\t<ButtonFC\n\t\t\t\t{...getButtonFcProps(\n\t\t\t\t\t`navigation-${position}`,\n\t\t\t\t\t{\n\t\t\t\t\t\t_customClass: customClass,\n\t\t\t\t\t\t_disabled: disabled,\n\t\t\t\t\t\t_icons: icons,\n\t\t\t\t\t\t_hideLabel: true,\n\t\t\t\t\t\t_label: buttonLabel,\n\t\t\t\t\t\t_on: navigationCallbacks[position],\n\t\t\t\t\t\t_tooltipAlign: tooltipAlign,\n\t\t\t\t\t},\n\t\t\t\t\t{ class: paginationBem('button', { [position]: true }) },\n\t\t\t\t)}\n\t\t\t/>\n\t\t</li>\n\t);\n\tconst pageButton = (item: number, selected: boolean) => {\n\t\tconst pageText = NUMBER_FORMATTER.format(item);\n\t\tconst ariaDescription = `${translate('kol-page')} ${pageText}`;\n\t\treturn (\n\t\t\t<li key={nonce()}>\n\t\t\t\t{selected ? (\n\t\t\t\t\t<ButtonFC\n\t\t\t\t\t\t{...getButtonFcProps(\n\t\t\t\t\t\t\t`page-${item}`,\n\t\t\t\t\t\t\t{ _ariaDescription: ariaDescription, _customClass: customClass, _label: pageText },\n\t\t\t\t\t\t\t{ 'aria-current': 'page', class: `${paginationBem('button', { selected: true })} selected` },\n\t\t\t\t\t\t)}\n\t\t\t\t\t/>\n\t\t\t\t) : (\n\t\t\t\t\t<ButtonFC\n\t\t\t\t\t\t{...getButtonFcProps(\n\t\t\t\t\t\t\t`page-${item}`,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t_ariaDescription: ariaDescription,\n\t\t\t\t\t\t\t\t_customClass: customClass,\n\t\t\t\t\t\t\t\t_label: pageText,\n\t\t\t\t\t\t\t\t_on: { onClick: (event: Event) => handlePageClick(event, item) },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{ class: paginationBem('button', { numbers: true }) },\n\t\t\t\t\t\t)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</li>\n\t\t);\n\t};\n\n\treturn [\n\t\t<span role=\"status\" aria-live=\"polite\" class={paginationBem('entries')}>\n\t\t\t{translate('kol-table-visible-range', {\n\t\t\t\tplaceholders: {\n\t\t\t\t\tstart: NUMBER_FORMATTER.format(start),\n\t\t\t\t\tend: NUMBER_FORMATTER.format(end),\n\t\t\t\t\ttotal: NUMBER_FORMATTER.format(max),\n\t\t\t\t},\n\t\t\t})}\n\t\t</span>,\n\t\t<nav class={paginationBem('navigation')} aria-label={label}>\n\t\t\t<ul class={paginationBem('navigation-list')}>\n\t\t\t\t{hasButtons.first && navigationButton('first', leftDoubleArrowIcon, translate('kol-page-first'), page <= 1)}\n\t\t\t\t{hasButtons.previous && navigationButton('previous', leftSingleArrowIcon, translate('kol-page-back'), page <= 1)}\n\t\t\t\t{getPageItems(page, count, boundaryCount, siblingCount).map((item) =>\n\t\t\t\t\titem === null ? null : item === 'separator' ? (\n\t\t\t\t\t\t<li key={nonce()}>\n\t\t\t\t\t\t\t<span class={paginationBem('separator')} aria-hidden=\"true\"></span>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t) : (\n\t\t\t\t\t\tpageButton(item.page, item.selected)\n\t\t\t\t\t),\n\t\t\t\t)}\n\t\t\t\t{hasButtons.next && navigationButton('next', rightSingleArrowIcon, translate('kol-page-next'), count <= page)}\n\t\t\t\t{hasButtons.last && navigationButton('last', rightDoubleArrowIcon, translate('kol-page-last'), count <= page)}\n\t\t\t</ul>\n\t\t</nav>,\n\t\tpageSizeOptions?.length > 0 && (\n\t\t\t<div class=\"page-size\">\n\t\t\t\t<div class={paginationBem('page-size-select')}>\n\t\t\t\t\t{renderPageSizeSelect({ label: translate('kol-entries-per-site'), options: pageSizeOptions, value: pageSize })}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t),\n\t];\n};\n\n/** The pagination in its own root node, for `kol-pagination`. */\nexport const PaginationFC: FC<PaginationFCProps> = (props) => (\n\t<BemRootNodeFC block=\"kol-pagination\">\n\t\t<PaginationContentFC {...props} />\n\t</BemRootNodeFC>\n);\n","import type { JSX } from '@stencil/core';\nimport type { InputTypeOnDefault, Option, ShortKeyPropType, StencilUnknown, Stringified } from '../../../schema';\nimport { createUniqueId } from '../../../utils/dev.utils';\nimport { createCtaRef } from '../../../utils/element-interaction';\nimport { selectPropsConfig } from '../select/api';\nimport { BaseSelectWebComponent } from '../select/base-web-component';\n\n/** The props of the page size select that change with the pagination. */\nexport type PageSizeSelectInput = {\n\tlabel: string;\n\ton: InputTypeOnDefault;\n\toptions: Option<number>[];\n\tvalue: number;\n};\n\n/**\n * The page size select of a pagination: the select field of `kol-select`, rendered into the shadow root\n * of the element that renders the pagination (`kol-pagination`, `kol-table-stateful`) instead of an\n * element of its own. That element receives the KoliBri events of the select and frames its focus, so\n * moving the focus from the select to a page button sends no blur.\n *\n * Without an element of its own, the class does what Stencil does for one: the first `render` applies\n * the props in the load order of `kol-select`; each later `render` applies the props that changed, like\n * their watchers. A state change or a prop the select writes itself (`_value`, `_touched`) renders the\n * embedding element again through `requestRender`.\n */\nexport class PageSizeSelect extends BaseSelectWebComponent {\n\tpublic _disabled?: boolean = false;\n\tpublic _multiple?: boolean = false;\n\tpublic _on?: InputTypeOnDefault;\n\n\tprotected readonly ctaRef = createCtaRef<HTMLSelectElement>();\n\n\tpublic readonly id = createUniqueId('select');\n\n\tprivate loaded = false;\n\tprivate passed?: PageSizeSelectInput;\n\tprivate focused = false;\n\tprivate touched = false;\n\tprivate value?: Stringified<StencilUnknown[]> | Stringified<StencilUnknown>;\n\n\tpublic constructor(\n\t\tprivate readonly getHost: () => HTMLElement | undefined,\n\t\tprivate readonly requestRender: () => void,\n\t) {\n\t\tsuper();\n\t\tthis.initFormAssociation('select');\n\t}\n\n\t/** The base class reads the host while it is constructed, before `getHost` is assigned. */\n\tprotected get host(): HTMLElement | undefined {\n\t\treturn this.getHost?.();\n\t}\n\n\tpublic get inputHasFocus(): boolean {\n\t\treturn this.focused;\n\t}\n\n\tpublic set inputHasFocus(value: boolean) {\n\t\tif (value !== this.focused) {\n\t\t\tthis.focused = value;\n\t\t\tthis.requestRender();\n\t\t}\n\t}\n\n\tpublic get _touched(): boolean | undefined {\n\t\treturn this.touched;\n\t}\n\n\tpublic set _touched(value: boolean | undefined) {\n\t\tif (value !== this.touched) {\n\t\t\tthis.touched = value === true;\n\t\t\tthis.applyTouched(value);\n\t\t\tthis.requestRender();\n\t\t}\n\t}\n\n\tpublic get _value(): Stringified<StencilUnknown[]> | Stringified<StencilUnknown> | undefined {\n\t\treturn this.value;\n\t}\n\n\tpublic set _value(value: Stringified<StencilUnknown[]> | Stringified<StencilUnknown> | undefined) {\n\t\tif (value !== this.value) {\n\t\t\tthis.value = value;\n\t\t\tthis.applyValue(value);\n\t\t\tthis.requestRender();\n\t\t}\n\t}\n\n\tprotected getAccessKeyProp(): string | undefined {\n\t\treturn undefined;\n\t}\n\n\tprotected getShortKeyProp(): ShortKeyPropType | undefined {\n\t\treturn undefined;\n\t}\n\n\t/** Call once per render of the embedding element. */\n\tpublic render(input: PageSizeSelectInput): JSX.Element {\n\t\tif (this.loaded) {\n\t\t\tthis.update(input);\n\t\t} else {\n\t\t\tthis.load(input);\n\t\t}\n\t\treturn this.renderSelectField();\n\t}\n\n\t/** Call from `componentDidRender` of the embedding element. */\n\tpublic sync(): void {\n\t\tthis.syncFormField();\n\t}\n\n\t/** Call when the select is no longer rendered. */\n\tpublic destroy(): void {\n\t\tthis.destroyFormField();\n\t}\n\n\t/** The props the pagination does not pass keep the defaults of `kol-select`. */\n\tprivate load(input: PageSizeSelectInput): void {\n\t\tthis.passed = input;\n\t\tthis._on = input.on;\n\t\tthis.value = input.value;\n\t\tthis.initRenderProps(selectPropsConfig);\n\n\t\tthis.applyAriaDetails(undefined);\n\t\tthis.applyName(undefined);\n\t\tthis.applySyncValueBySelector(undefined);\n\t\tthis.applyTouched(false);\n\t\tthis.applyAccessKey(undefined);\n\t\tthis.applyMsg(undefined);\n\t\tthis.applyDisabled(false);\n\t\tthis.applyHideMsg(false);\n\t\tthis.applyHideLabel(false);\n\t\tthis.applyHint('');\n\t\tthis.applyInfoPopover(undefined);\n\t\tthis.applyLabel(input.label);\n\t\tthis.applyShortKey(undefined);\n\t\tthis.applyOn(input.on);\n\t\tthis.applyTooltipAlign('top');\n\t\tthis.applyVariant(undefined);\n\t\tthis.applyTabIndex(undefined);\n\t\tthis.applyIcons(undefined);\n\t\tthis.applyOptions(input.options);\n\t\tthis.applyMultiple(false);\n\t\tthis.applyRequired(false);\n\t\tthis.applyRows(undefined);\n\t\tthis.applyValue(input.value);\n\t\tthis.loaded = true;\n\t}\n\n\t/**\n\t * Applies the props that differ from the last passed ones, in the order the pagination passes them.\n\t * The value is applied only when it also differs from the current one, which an earlier choice in the\n\t * select may already hold. It does not render again: the embedding element is rendering.\n\t */\n\tprivate update(input: PageSizeSelectInput): void {\n\t\tconst passed = this.passed!;\n\t\tthis.passed = input;\n\t\tif (input.label !== passed.label) {\n\t\t\tthis.applyLabel(input.label);\n\t\t}\n\t\tif (input.options !== passed.options) {\n\t\t\tthis.applyOptions(input.options);\n\t\t}\n\t\tif (input.on !== passed.on) {\n\t\t\tthis._on = input.on;\n\t\t\tthis.applyOn(input.on);\n\t\t}\n\t\tif (input.value !== passed.value && input.value !== this.value) {\n\t\t\tthis.value = input.value;\n\t\t\tthis.applyValue(input.value);\n\t\t}\n\t}\n}\n","import { translate } from '../../../i18n';\nimport type {\n\tCustomClassPropType,\n\tInternalButtonProps,\n\tKoliBriPaginationButtonCallbacks,\n\tPaginationHasButton,\n\tStringified,\n\tTooltipAlignPropType,\n} from '../../../schema';\nimport { STATE_CHANGE_EVENT } from '../../../schema';\nimport { dispatchDomEvent, KolEvent } from '../../../utils/events';\nimport { addNavLabel, removeNavLabel } from '../../../utils/unique-nav-labels';\nimport {\n\tboundaryCountProp,\n\tcustomClassProp,\n\tpageProp,\n\tpageSizeOptionsProp,\n\tpageSizeProp,\n\tpaginationCallbacksProp,\n\tpaginationHasButtonsProp,\n\tpaginationLabelProp,\n\tpaginationMaxProp,\n\tsiblingCountProp,\n\ttooltipAlignProp,\n} from '../../props';\nimport type { ButtonItem, ButtonItemFcProps, ButtonItemRootAttributes } from '../button/item';\nimport { createButtonItem } from '../button/item';\nimport { createItemPool } from '../item-pool';\nimport { buildDefaultPropsFromConfig } from '../props-from-config';\nimport { paginationPropsConfig } from './api';\nimport type { PaginationFCProps } from './component';\nimport { clampPage, getPageCount, resolvePageSize } from './model';\nimport { PageSizeSelect } from './page-size-select';\n\n/** The render props of the pagination, as `PaginationFC` receives them. */\nexport type PaginationRenderProps = Omit<\n\tPaginationFCProps,\n\t'getButtonFcProps' | 'handlePageClick' | 'handlePageSizeChange' | 'navigationCallbacks' | 'renderPageSizeSelect'\n>;\n\n/** Where the item keeps its render props; `kol-pagination` passes its own render props. */\nexport type PaginationPropsStore = {\n\tget<K extends keyof PaginationRenderProps>(key: K): PaginationRenderProps[K];\n\tset<K extends keyof PaginationRenderProps>(key: K, value: PaginationRenderProps[K]): void;\n};\n\n/** The `_`-props of a pagination, without the underscore. */\nexport type PaginationInput = {\n\tboundaryCount?: number;\n\tcustomClass?: CustomClassPropType;\n\thasButtons?: boolean | Stringified<PaginationHasButton>;\n\tlabel?: string;\n\tmax?: number;\n\ton?: KoliBriPaginationButtonCallbacks;\n\tpage?: number;\n\tpageSize?: number;\n\tpageSizeOptions?: Stringified<number[]>;\n\tsiblingCount?: number;\n\ttooltipAlign?: TooltipAlignPropType;\n};\n\n/**\n * The order in which `update` applies changed inputs: the attribute order in which `kol-table-stateful`\n * passes them. Within one update, an earlier input clamps the page before a later one is applied.\n */\nconst UPDATE_ORDER: (keyof PaginationInput)[] = [\n\t'boundaryCount',\n\t'customClass',\n\t'hasButtons',\n\t'on',\n\t'page',\n\t'pageSize',\n\t'pageSizeOptions',\n\t'siblingCount',\n\t'tooltipAlign',\n\t'max',\n\t'label',\n];\n\nexport type PaginationItem = {\n\tapplyBoundaryCount: (value?: number) => void;\n\tapplyCustomClass: (value?: CustomClassPropType) => void;\n\t/** An object sets single buttons and keeps the others. */\n\tapplyHasButtons: (value?: boolean | Stringified<PaginationHasButton>) => void;\n\tapplyLabel: (value?: string) => void;\n\tapplyMax: (value?: number) => void;\n\tapplyOn: (value?: KoliBriPaginationButtonCallbacks) => void;\n\tapplyPage: (value?: number) => void;\n\t/** Applies `_pageSize`; it also becomes the page size a choice in the select is compared against. */\n\tapplyPageSize: (value?: number) => void;\n\tapplyPageSizeOptions: (value?: Stringified<number[]>) => void;\n\tapplySiblingCount: (value?: number) => void;\n\tapplyTooltipAlign: (value?: TooltipAlignPropType) => void;\n\t/**\n\t * Applies all inputs in the load order of the element. The page is applied again last: only then are\n\t * page size and number of entries known to clamp it, so a clamped page is reported twice.\n\t */\n\tload: (input: PaginationInput) => void;\n\t/**\n\t * Applies the inputs that differ from the last passed ones, like the props of a child element in a\n\t * render: a value passed again unchanged is not applied, even if the item changed it meanwhile.\n\t */\n\tupdate: (input: PaginationInput) => void;\n\t/** Fully resolved props for `PaginationFC` and `PaginationContentFC`. Call once per render. */\n\tgetFcProps: () => PaginationFCProps;\n\t/** Syncs the buttons and the page size select of the last render. Call from `componentDidRender`. */\n\tsync: () => void;\n\t/** Removes the navigation label from the register of unique labels and tears down the buttons and the page size select. */\n\tdestroy: () => void;\n};\n\nexport type PaginationItemOptions = {\n\t/**\n\t * Element the `click`, `changepage` and `changepagesize` events and the events of the page size select\n\t * are dispatched on; also the element the feature flags of the buttons are resolved against.\n\t */\n\tgetEventTarget: () => HTMLElement | undefined;\n\t/** Renders the embedding element again after a page size was chosen or the state of the select changed. */\n\trequestRender: () => void;\n\t/** Keeps the render props; without it the item keeps them itself. */\n\tstore?: PaginationPropsStore;\n};\n\nconst createLocalStore = (): PaginationPropsStore => {\n\tconst props = buildDefaultPropsFromConfig(paginationPropsConfig) as unknown as PaginationRenderProps;\n\treturn {\n\t\tget: (key) => props[key],\n\t\tset: (key, value) => {\n\t\t\tprops[key] = value;\n\t\t},\n\t};\n};\n\n/**\n * One orchestrated pagination: the props, the page clamping and the events of `PaginationFC`. It is a\n * plain object with closures, like `popover-button/item.ts`, so `kol-pagination` and\n * `kol-table-stateful` (which inherits the stateless table) compose it instead of inheriting it.\n *\n * Page, page size, page size options and the number of entries depend on each other: every change of\n * one of them clamps the current page to the available pages, and a clamped page is reported through\n * `onChangePage` and `changepage` with the `StateChange` event. Without a value, `page`, `pageSize` and\n * `max` keep the current one.\n */\nexport const createPaginationItem = (options: PaginationItemOptions): PaginationItem => {\n\tconst store = options.store ?? createLocalStore();\n\tconst translatePagination = translate('kol-pagination');\n\tconst buttons = createItemPool<ButtonItem>(\n\t\t() => createButtonItem(options.getEventTarget),\n\t\t(button) => button.syncListeners(),\n\t\t(button) => button.destroy(),\n\t);\n\tconst getButtonFcProps = (key: string, props: InternalButtonProps, rootAttributes?: ButtonItemRootAttributes): ButtonItemFcProps =>\n\t\tbuttons.get(key).getFcProps(props, rootAttributes);\n\tconst pageSizeSelects = createItemPool<PageSizeSelect>(\n\t\t() => new PageSizeSelect(options.getEventTarget, options.requestRender),\n\t\t(select) => select.sync(),\n\t\t(select) => select.destroy(),\n\t);\n\tlet pageSizeValue: number | undefined = 1;\n\tlet applied: PaginationInput = {};\n\n\tstore.set('label', translatePagination);\n\n\tconst reportPageChange = (event: Event, page: number): void => {\n\t\tsetTimeout(() => {\n\t\t\tstore.get('on').onChangePage?.(event, page);\n\t\t\tconst target = options.getEventTarget();\n\t\t\tif (target) {\n\t\t\t\tdispatchDomEvent(target, KolEvent.changePage, page);\n\t\t\t}\n\t\t});\n\t};\n\n\tconst syncPage = (page: number, pageSize: number | undefined, max: number): void => {\n\t\tconst clamped = clampPage(page, pageSize, max);\n\t\tif (clamped !== undefined) {\n\t\t\tstore.set('page', clamped);\n\t\t\treportPageChange(STATE_CHANGE_EVENT, clamped);\n\t\t}\n\t};\n\n\tconst applyPageSizeValue = (value?: number): void => {\n\t\tif (value === undefined || value === null) {\n\t\t\treturn;\n\t\t}\n\t\tpageSizeProp.apply(value, (pageSize) => {\n\t\t\tconst resolved = resolvePageSize(pageSize, store.get('pageSizeOptions'));\n\t\t\tstore.set('pageSize', resolved);\n\t\t\tsyncPage(store.get('page'), resolved, store.get('max'));\n\t\t});\n\t};\n\n\tconst applyLabel = (value: string | undefined, initial: boolean): void => {\n\t\tif (!initial) {\n\t\t\tremoveNavLabel(store.get('label'));\n\t\t}\n\t\tpaginationLabelProp.apply(value ?? translatePagination, (v) => store.set('label', v));\n\t\taddNavLabel(store.get('label'));\n\t};\n\n\tconst handlePageClick = (event: Event, page: number): void => {\n\t\tstore.get('on').onClick?.(event, page);\n\t\tconst target = options.getEventTarget();\n\t\tif (target) {\n\t\t\tdispatchDomEvent(target, KolEvent.click, page);\n\t\t}\n\t\treportPageChange(event, page);\n\t};\n\n\tconst handlePageSizeChange = (event: Event, value: unknown): void => {\n\t\tconst pageSize = parseInt(value as string);\n\t\tif (pageSize > 0 && pageSizeValue !== pageSize) {\n\t\t\tapplyPageSizeValue(pageSize);\n\t\t\tpageSizeValue = pageSize;\n\t\t\toptions.requestRender();\n\t\t\t// Reports the page size of the element when the timeout runs; it is the chosen one unless `_pageSize` changed meanwhile.\n\t\t\tsetTimeout(() => {\n\t\t\t\tconst current = pageSizeValue as number;\n\t\t\t\tstore.get('on').onChangePageSize?.(event, current);\n\t\t\t\tconst target = options.getEventTarget();\n\t\t\t\tif (target) {\n\t\t\t\t\tdispatchDomEvent(target, KolEvent.changePageSize, current);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t};\n\n\tconst pageSizeSelectCallbacks = { onChange: handlePageSizeChange };\n\tconst renderPageSizeSelect: PaginationFCProps['renderPageSizeSelect'] = (input) =>\n\t\tpageSizeSelects.get('page-size').render({ ...input, on: pageSizeSelectCallbacks });\n\n\t/** The targets are read when the button is clicked, from the current page and number of pages. */\n\tconst navigationCallbacks: PaginationFCProps['navigationCallbacks'] = {\n\t\tfirst: { onClick: (event: Event) => handlePageClick(event, 1) },\n\t\tlast: { onClick: (event: Event) => handlePageClick(event, getPageCount(store.get('max'), store.get('pageSize'))) },\n\t\tnext: { onClick: (event: Event) => handlePageClick(event, store.get('page') + 1) },\n\t\tprevious: { onClick: (event: Event) => handlePageClick(event, store.get('page') - 1) },\n\t};\n\n\tconst item: PaginationItem = {\n\t\tapplyBoundaryCount: (value) => boundaryCountProp.apply(value, (v) => store.set('boundaryCount', v)),\n\t\tapplyCustomClass: (value) => customClassProp.apply(value, (v) => store.set('customClass', v)),\n\t\tapplyHasButtons: (value) => paginationHasButtonsProp.apply(value, (v) => store.set('hasButtons', { ...store.get('hasButtons'), ...v })),\n\t\tapplyLabel: (value) => applyLabel(value, false),\n\t\tapplyMax: (value) => {\n\t\t\tif (value === undefined || value === null) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tpaginationMaxProp.apply(value, (max) => {\n\t\t\t\tstore.set('max', max);\n\t\t\t\tsyncPage(store.get('page'), store.get('pageSize'), max);\n\t\t\t});\n\t\t},\n\t\tapplyOn: (value) => paginationCallbacksProp.apply(value, (v) => store.set('on', v)),\n\t\tapplyPage: (value) => {\n\t\t\tif (value === undefined || value === null) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tpageProp.apply(value, (page) => {\n\t\t\t\tstore.set('page', page);\n\t\t\t\tsyncPage(page, store.get('pageSize'), store.get('max'));\n\t\t\t});\n\t\t},\n\t\tapplyPageSize: (value) => {\n\t\t\tapplyPageSizeValue(value);\n\t\t\tpageSizeValue = value;\n\t\t},\n\t\t/** Without options the page is clamped as if each entry were one page. */\n\t\tapplyPageSizeOptions: (value) =>\n\t\t\tpageSizeOptionsProp.apply(value, (pageSizeOptions) => {\n\t\t\t\tstore.set('pageSizeOptions', pageSizeOptions);\n\t\t\t\tlet pageSize: number | undefined;\n\t\t\t\tif (pageSizeOptions.length > 0) {\n\t\t\t\t\tpageSize = resolvePageSize(store.get('pageSize'), pageSizeOptions);\n\t\t\t\t\tstore.set('pageSize', pageSize);\n\t\t\t\t}\n\t\t\t\tsyncPage(store.get('page'), pageSize, store.get('max'));\n\t\t\t}),\n\t\tapplySiblingCount: (value) => siblingCountProp.apply(value, (v) => store.set('siblingCount', v)),\n\t\t/** Pagination buttons show the tooltip on top by default; the shared prop defaults to `'right'`. */\n\t\tapplyTooltipAlign: (value) => tooltipAlignProp.apply(value ?? 'top', (v) => store.set('tooltipAlign', v)),\n\t\tload: (input) => {\n\t\t\tapplied = { ...input };\n\t\t\titem.applyBoundaryCount(input.boundaryCount);\n\t\t\titem.applyCustomClass(input.customClass);\n\t\t\titem.applyHasButtons(input.hasButtons);\n\t\t\tapplyLabel(input.label, true);\n\t\t\titem.applyOn(input.on);\n\t\t\titem.applyPage(input.page);\n\t\t\titem.applyPageSize(input.pageSize);\n\t\t\titem.applyPageSizeOptions(input.pageSizeOptions);\n\t\t\titem.applySiblingCount(input.siblingCount);\n\t\t\titem.applyTooltipAlign(input.tooltipAlign);\n\t\t\titem.applyMax(input.max);\n\t\t\titem.applyPage(input.page);\n\t\t},\n\t\tupdate: (input) => {\n\t\t\tfor (const key of UPDATE_ORDER) {\n\t\t\t\tif (input[key] !== applied[key]) {\n\t\t\t\t\tapplied = { ...applied, [key]: input[key] };\n\t\t\t\t\t// A page size chosen in the select is the current one: passing it again changes nothing.\n\t\t\t\t\tif (key !== 'pageSize' || input.pageSize !== pageSizeValue) {\n\t\t\t\t\t\tappliers[key](input[key] as never);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tgetFcProps: () => {\n\t\t\tbuttons.beginRender();\n\t\t\tpageSizeSelects.beginRender();\n\t\t\treturn {\n\t\t\t\tboundaryCount: store.get('boundaryCount'),\n\t\t\t\tcustomClass: store.get('customClass'),\n\t\t\t\tgetButtonFcProps,\n\t\t\t\thandlePageClick,\n\t\t\t\thandlePageSizeChange,\n\t\t\t\thasButtons: store.get('hasButtons'),\n\t\t\t\tlabel: store.get('label'),\n\t\t\t\tmax: store.get('max'),\n\t\t\t\tnavigationCallbacks,\n\t\t\t\ton: store.get('on'),\n\t\t\t\tpage: store.get('page'),\n\t\t\t\tpageSize: store.get('pageSize'),\n\t\t\t\tpageSizeOptions: store.get('pageSizeOptions'),\n\t\t\t\trenderPageSizeSelect,\n\t\t\t\tsiblingCount: store.get('siblingCount'),\n\t\t\t\ttooltipAlign: store.get('tooltipAlign'),\n\t\t\t};\n\t\t},\n\t\tsync: () => {\n\t\t\tbuttons.endRender();\n\t\t\tpageSizeSelects.endRender();\n\t\t},\n\t\tdestroy: () => {\n\t\t\tremoveNavLabel(store.get('label'));\n\t\t\tbuttons.destroy();\n\t\t\tpageSizeSelects.destroy();\n\t\t},\n\t};\n\n\tconst appliers: { [K in keyof PaginationInput]-?: (value: PaginationInput[K]) => void } = {\n\t\tboundaryCount: item.applyBoundaryCount,\n\t\tcustomClass: item.applyCustomClass,\n\t\thasButtons: item.applyHasButtons,\n\t\tlabel: item.applyLabel,\n\t\tmax: item.applyMax,\n\t\ton: item.applyOn,\n\t\tpage: item.applyPage,\n\t\tpageSize: item.applyPageSize,\n\t\tpageSizeOptions: item.applyPageSizeOptions,\n\t\tsiblingCount: item.applySiblingCount,\n\t\ttooltipAlign: item.applyTooltipAlign,\n\t};\n\n\treturn item;\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAUO,MAAM,iBAAiB,GAAG,oBAAoB,CAAoB,eAAe,EAAE,CAAC,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAe,CAAC,CAAC;;ACC9H,MAAM,QAAQ,GAAG,oBAAoB,CAAW,MAAM,EAAE,CAAC,EAAE,mBAAmB,CAAC;;ACC/E,MAAM,YAAY,GAAG,oBAAoB,CAAe,UAAU,EAAE,CAAC,EAAE,mBAAmB,CAAC;;ACElG,MAAM,aAAa,GAAG,qBAAqB;AAE3C,SAAS,wBAAwB,CAAC,KAAc,EAAA;AAE/C,IAAA,IAAI,KAAK,KAAK,EAAE,KAAK,OAAO,KAAK,KAAK,QAAQ,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;AAC7E,QAAA,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC;;AAEjD,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,IAAI,KAAK,OAAO,IAAI,KAAK,QAAQ,CAAC,EAAE;QAC9E,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,EAAE,KAAK,EAAE,CAAA,EAAG,IAAI,CAAA,CAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;;AAEjE,IAAA,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC;AAC7C;AAEO,MAAM,mBAAmB,GAAG,oBAAoB,CAAsB,iBAAiB,EAAE,EAAE,EAAE,wBAAwB,CAAC;;ACtBtH,MAAM,uBAAuB,GAAG,6BAA6B,EAAoC;;ACSxG,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAU;AAE9D,MAAM,UAAU,GAAG,CAAC,KAAc,MAA2B,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AAEzH,SAAS,mBAAmB,CAAC,KAAc,EAAA;AAC1C,IAAA,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;AAC/B,QAAA,OAAO,UAAU,CAAC,KAAK,CAAC;;IAEzB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;QAChD,MAAM,OAAO,GAAiC,EAAE;AAChD,QAAA,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AAC1B,YAAA,MAAM,KAAK,GAAI,KAA0C,CAAC,MAAM,CAAC;AACjE,YAAA,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;AAC/B,gBAAA,OAAO,CAAC,MAAM,CAAC,GAAG,KAAK;;AAEzB,SAAC,CAAC;AACF,QAAA,OAAO,OAAO;;AAEf,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC9B,QAAA,MAAM,MAAM,GAAG,SAAS,CAAU,KAAK,CAAC;QAExC,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,GAAG,mBAAmB,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC;;AAEvG,IAAA,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC;AAC9C;AAEO,MAAM,wBAAwB,GAAG,oBAAoB,CAA2B,YAAY,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,mBAAmB,CAAC;;AC7BpI,MAAM,mBAAmB,GAAG,oBAAoB,CAAsB,OAAO,EAAE,EAAE,EAAE,eAAe,CAAC;;ACAnG,MAAM,iBAAiB,GAAG,oBAAoB,CAAoB,KAAK,EAAE,CAAC,EAAE,mBAAmB,CAAC;;ACFhG,MAAM,gBAAgB,GAAG,oBAAoB,CAAmB,cAAc,EAAE,CAAC,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAe,CAAC,CAAC;;ACSrH,MAAA,qBAAqB,GAAG;AACpC,IAAA,QAAQ,EAAE,CAAC,QAAQ,EAAE,uBAAuB,EAAE,iBAAiB,CAAC;AAChE,IAAA,QAAQ,EAAE;QACT,iBAAiB;QACjB,eAAe;QACf,mBAAmB;QACnB,YAAY;QACZ,wBAAwB;QACxB,mBAAmB;QACnB,gBAAgB;QAChB,gBAAgB;AAChB,KAAA;;;AC3BK,MAAM,YAAY,GAAG,CAAC,GAAW,EAAE,QAAQ,GAAG,CAAC,KAAa,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC;AAMrF,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,QAA4B,EAAE,GAAW,KAAwB;AACxG,IAAA,IAAI,GAAG,GAAG,CAAC,EAAE;QACZ,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC;AACzC,QAAA,IAAI,KAAK,GAAG,CAAC,EAAE;AACd,YAAA,IAAI,IAAI,GAAG,KAAK,EAAE;AACjB,gBAAA,OAAO,KAAK;;AAEb,YAAA,IAAI,IAAI,GAAG,CAAC,EAAE;AACb,gBAAA,OAAO,CAAC;;;;AAIX,IAAA,OAAO,SAAS;AACjB,CAAC;AAGM,MAAM,eAAe,GAAG,CAAC,QAAgB,EAAE,OAAyB,KAAY;;AACtF,IAAA,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACvB,QAAA,OAAO,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK;;AAEtF,IAAA,OAAO,QAAQ;AAChB,CAAC;AAWM,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,KAAa,EAAE,aAAqB,EAAE,YAAoB,KAAgB;IACpH,MAAM,KAAK,GAAe,EAAE;IAC5B,IAAI,SAAS,GAAG,KAAK;AACrB,IAAA,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,KAAK,EAAE,IAAI,EAAE,EAAE;QACzC,IAAI,IAAI,IAAI,aAAa,IAAI,IAAI,GAAG,KAAK,GAAG,aAAa,KAAK,IAAI,IAAI,IAAI,GAAG,YAAY,IAAI,IAAI,IAAI,IAAI,GAAG,YAAY,CAAC,EAAE;YAC1H,SAAS,GAAG,IAAI;AAChB,YAAA,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,KAAK,IAAI,EAAE,CAAC;;aAC7C,IAAI,SAAS,EAAE;YACrB,SAAS,GAAG,KAAK;AACjB,YAAA,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;;aACjB;AACN,YAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;;;AAGlB,IAAA,OAAO,KAAK;AACb,CAAC;AAGM,MAAM,eAAe,GAAG,CAAC,IAAY,EAAE,QAAgB,EAAE,GAAW,KAAoC;AAC9G,IAAA,MAAM,OAAO,GAAG,IAAI,GAAG,QAAQ;IAC/B,OAAO;AACN,QAAA,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC;QAC7C,GAAG,EAAE,GAAG,GAAG,OAAO,GAAG,GAAG,GAAG,OAAO;KAClC;AACF,CAAC;;AClDD,MAAM,aAAa,GAAG,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC;AAEpD,MAAM,mBAAmB,GAAG,EAAE,IAAI,EAAE,6BAA6B,EAAE;AACnE,MAAM,mBAAmB,GAAG,EAAE,IAAI,EAAE,sBAAsB,EAAE;AAC5D,MAAM,oBAAoB,GAAG,EAAE,KAAK,EAAE,uBAAuB,EAAE;AAC/D,MAAM,oBAAoB,GAAG,EAAE,KAAK,EAAE,8BAA8B,EAAE;AAEtE,MAAM,YAAY,GAAG,CAAC,CAAC,QAAgB,MAAM,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAG,EAAA,QAAQ,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAA,CAAE,CAAC,EAAE,SAAS,CAAC,QAAQ,IAAI,OAAO,CAAC;AACzJ,MAAM,gBAAgB,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE;AAC5D,IAAA,KAAK,EAAE,SAAS;AAChB,IAAA,qBAAqB,EAAE,CAAC;AACxB,IAAA,qBAAqB,EAAE,CAAC;AACxB,CAAA,CAAC;AAiBK,MAAM,mBAAmB,GAA0B,CAAC,EAC1D,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,KAAK,EACL,GAAG,EACH,mBAAmB,EACnB,IAAI,EACJ,QAAQ,EACR,eAAe,EACf,oBAAoB,EACpB,YAAY,EACZ,YAAY,GACZ,KAAI;IACJ,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC;AACzC,IAAA,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC;AAC3D,IAAA,MAAM,gBAAgB,GAAG,CAAC,QAA4B,EAAE,KAA6B,EAAE,WAAmB,EAAE,QAAiB,MAC5H,CAAA,CAAA,IAAA,EAAA,IAAA,EACC,CAAA,CAAC,QAAQ,EACJ,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,gBAAgB,CACnB,CAAc,WAAA,EAAA,QAAQ,EAAE,EACxB;AACC,QAAA,YAAY,EAAE,WAAW;AACzB,QAAA,SAAS,EAAE,QAAQ;AACnB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,MAAM,EAAE,WAAW;AACnB,QAAA,GAAG,EAAE,mBAAmB,CAAC,QAAQ,CAAC;AAClC,QAAA,aAAa,EAAE,YAAY;KAC3B,EACD,EAAE,KAAK,EAAE,aAAa,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,GAAG,IAAI,EAAE,CAAC,EAAE,CACxD,CACA,CAAA,CACE,CACL;AACD,IAAA,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,QAAiB,KAAI;QACtD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC;QAC9C,MAAM,eAAe,GAAG,CAAA,EAAG,SAAS,CAAC,UAAU,CAAC,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAE;AAC9D,QAAA,QACC,CAAA,CAAA,IAAA,EAAA,EAAI,GAAG,EAAE,KAAK,EAAE,EAAA,EACd,QAAQ,IACR,CAAA,CAAC,QAAQ,EACJ,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,gBAAgB,CACnB,CAAA,KAAA,EAAQ,IAAI,CAAE,CAAA,EACd,EAAE,gBAAgB,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,EAClF,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,CAAG,EAAA,aAAa,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAC5F,CAAA,CACA,KAEF,CAAC,CAAA,QAAQ,oBACJ,gBAAgB,CACnB,CAAQ,KAAA,EAAA,IAAI,EAAE,EACd;AACC,YAAA,gBAAgB,EAAE,eAAe;AACjC,YAAA,YAAY,EAAE,WAAW;AACzB,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,KAAY,KAAK,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE;SAChE,EACD,EAAE,KAAK,EAAE,aAAa,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,CACrD,EACA,CACF,CACG;AAEP,KAAC;IAED,OAAO;QACN,CAAA,CAAA,MAAA,EAAA,EAAM,IAAI,EAAC,QAAQ,EAAW,WAAA,EAAA,QAAQ,EAAC,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,EAAA,EACpE,SAAS,CAAC,yBAAyB,EAAE;AACrC,YAAA,YAAY,EAAE;AACb,gBAAA,KAAK,EAAE,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;AACrC,gBAAA,GAAG,EAAE,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC;AACjC,gBAAA,KAAK,EAAE,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC;AACnC,aAAA;AACD,SAAA,CAAC,CACI;QACP,CAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,aAAa,CAAC,YAAY,CAAC,gBAAc,KAAK,EAAA,EACzD,CAAA,CAAA,IAAA,EAAA,EAAI,KAAK,EAAE,aAAa,CAAC,iBAAiB,CAAC,EAAA,EACzC,UAAU,CAAC,KAAK,IAAI,gBAAgB,CAAC,OAAO,EAAE,mBAAmB,EAAE,SAAS,CAAC,gBAAgB,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,EAC1G,UAAU,CAAC,QAAQ,IAAI,gBAAgB,CAAC,UAAU,EAAE,mBAAmB,EAAE,SAAS,CAAC,eAAe,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,EAC/G,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAChE,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,KAAK,WAAW,IAC1C,UAAI,GAAG,EAAE,KAAK,EAAE,EAAA,EACf,CAAM,CAAA,MAAA,EAAA,EAAA,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,EAAA,aAAA,EAAc,MAAM,EAAA,CAAQ,CAC/D,KAEL,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CACpC,CACD,EACA,UAAU,CAAC,IAAI,IAAI,gBAAgB,CAAC,MAAM,EAAE,oBAAoB,EAAE,SAAS,CAAC,eAAe,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,EAC5G,UAAU,CAAC,IAAI,IAAI,gBAAgB,CAAC,MAAM,EAAE,oBAAoB,EAAE,SAAS,CAAC,eAAe,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,CACzG,CACA;AACN,QAAA,CAAA,eAAe,KAAA,IAAA,IAAf,eAAe,KAAA,MAAA,GAAA,MAAA,GAAf,eAAe,CAAE,MAAM,IAAG,CAAC,KAC1B,CAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,WAAW,EAAA,EACrB,CAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAC3C,EAAA,oBAAoB,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,sBAAsB,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CACzG,CACD,CACN;KACD;AACF,CAAC;AAGM,MAAM,YAAY,GAA0B,CAAC,KAAK,MACxD,CAAC,CAAA,aAAa,EAAC,EAAA,KAAK,EAAC,gBAAgB,EAAA,EACpC,CAAA,CAAC,mBAAmB,EAAK,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,CAAI,CAAA,CACnB;;AC/HX,MAAO,cAAe,SAAQ,sBAAsB,CAAA;IAezD,WACkB,CAAA,OAAsC,EACtC,aAAyB,EAAA;AAE1C,QAAA,KAAK,EAAE;AAHU,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO;AACP,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa;AAhBxB,QAAA,IAAS,CAAA,SAAA,GAAa,KAAK;AAC3B,QAAA,IAAS,CAAA,SAAA,GAAa,KAAK;AAGf,QAAA,IAAM,CAAA,MAAA,GAAG,YAAY,EAAqB;AAE7C,QAAA,IAAA,CAAA,EAAE,GAAG,cAAc,CAAC,QAAQ,CAAC;AAErC,QAAA,IAAM,CAAA,MAAA,GAAG,KAAK;AAEd,QAAA,IAAO,CAAA,OAAA,GAAG,KAAK;AACf,QAAA,IAAO,CAAA,OAAA,GAAG,KAAK;AAQtB,QAAA,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC;;AAInC,IAAA,IAAc,IAAI,GAAA;;AACjB,QAAA,OAAO,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,oDAAI;;AAGxB,IAAA,IAAW,aAAa,GAAA;QACvB,OAAO,IAAI,CAAC,OAAO;;IAGpB,IAAW,aAAa,CAAC,KAAc,EAAA;AACtC,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,OAAO,EAAE;AAC3B,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;YACpB,IAAI,CAAC,aAAa,EAAE;;;AAItB,IAAA,IAAW,QAAQ,GAAA;QAClB,OAAO,IAAI,CAAC,OAAO;;IAGpB,IAAW,QAAQ,CAAC,KAA0B,EAAA;AAC7C,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,OAAO,EAAE;AAC3B,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,KAAK,IAAI;AAC7B,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YACxB,IAAI,CAAC,aAAa,EAAE;;;AAItB,IAAA,IAAW,MAAM,GAAA;QAChB,OAAO,IAAI,CAAC,KAAK;;IAGlB,IAAW,MAAM,CAAC,KAA8E,EAAA;AAC/F,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE;AACzB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;YACtB,IAAI,CAAC,aAAa,EAAE;;;IAIZ,gBAAgB,GAAA;AACzB,QAAA,OAAO,SAAS;;IAGP,eAAe,GAAA;AACxB,QAAA,OAAO,SAAS;;AAIV,IAAA,MAAM,CAAC,KAA0B,EAAA;AACvC,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AAChB,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;;aACZ;AACN,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;;AAEjB,QAAA,OAAO,IAAI,CAAC,iBAAiB,EAAE;;IAIzB,IAAI,GAAA;QACV,IAAI,CAAC,aAAa,EAAE;;IAId,OAAO,GAAA;QACb,IAAI,CAAC,gBAAgB,EAAE;;AAIhB,IAAA,IAAI,CAAC,KAA0B,EAAA;AACtC,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,QAAA,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK;AACxB,QAAA,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC;AAEvC,QAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;AAChC,QAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;AACzB,QAAA,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC;AACxC,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;AAC9B,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;AACxB,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;AAC7B,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AAC7B,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;AAC5B,QAAA,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;AAC7B,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;AAC1B,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC;AAChC,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;AACzB,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;;AAQX,IAAA,MAAM,CAAC,KAA0B,EAAA;AACxC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAO;AAC3B,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;QACnB,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,EAAE;AACjC,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;;QAE7B,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,EAAE;AACrC,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC;;QAEjC,IAAI,KAAK,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,EAAE;AAC3B,YAAA,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE;AACnB,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;;AAEvB,QAAA,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE;AAC/D,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK;AACxB,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;;;AAG9B;;AC5GD,MAAM,YAAY,GAA8B;IAC/C,eAAe;IACf,aAAa;IACb,YAAY;IACZ,IAAI;IACJ,MAAM;IACN,UAAU;IACV,iBAAiB;IACjB,cAAc;IACd,cAAc;IACd,KAAK;IACL,OAAO;CACP;AA8CD,MAAM,gBAAgB,GAAG,MAA2B;AACnD,IAAA,MAAM,KAAK,GAAG,2BAA2B,CAAC,qBAAqB,CAAqC;IACpG,OAAO;QACN,GAAG,EAAE,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,CAAC;AACxB,QAAA,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,KAAI;AACnB,YAAA,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK;SAClB;KACD;AACF,CAAC;AAYY,MAAA,oBAAoB,GAAG,CAAC,OAA8B,KAAoB;;IACtF,MAAM,KAAK,GAAG,CAAA,EAAA,GAAA,OAAO,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,gBAAgB,EAAE;AACjD,IAAA,MAAM,mBAAmB,GAAG,SAAS,CAAC,gBAAgB,CAAC;AACvD,IAAA,MAAM,OAAO,GAAG,cAAc,CAC7B,MAAM,gBAAgB,CAAC,OAAO,CAAC,cAAc,CAAC,EAC9C,CAAC,MAAM,KAAK,MAAM,CAAC,aAAa,EAAE,EAClC,CAAC,MAAM,KAAK,MAAM,CAAC,OAAO,EAAE,CAC5B;IACD,MAAM,gBAAgB,GAAG,CAAC,GAAW,EAAE,KAA0B,EAAE,cAAyC,KAC3G,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,cAAc,CAAC;AACnD,IAAA,MAAM,eAAe,GAAG,cAAc,CACrC,MAAM,IAAI,cAAc,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,aAAa,CAAC,EACvE,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,EAAE,EACzB,CAAC,MAAM,KAAK,MAAM,CAAC,OAAO,EAAE,CAC5B;IACD,IAAI,aAAa,GAAuB,CAAC;IACzC,IAAI,OAAO,GAAoB,EAAE;AAEjC,IAAA,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,mBAAmB,CAAC;AAEvC,IAAA,MAAM,gBAAgB,GAAG,CAAC,KAAY,EAAE,IAAY,KAAU;QAC7D,UAAU,CAAC,MAAK;;AACf,YAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAC,YAAY,MAAG,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,KAAK,EAAE,IAAI,CAAC;AAC3C,YAAA,MAAM,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE;YACvC,IAAI,MAAM,EAAE;gBACX,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC;;AAErD,SAAC,CAAC;AACH,KAAC;IAED,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,QAA4B,EAAE,GAAW,KAAU;QAClF,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC;AAC9C,QAAA,IAAI,OAAO,KAAK,SAAS,EAAE;AAC1B,YAAA,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;AAC1B,YAAA,gBAAgB,CAAC,kBAAkB,EAAE,OAAO,CAAC;;AAE/C,KAAC;AAED,IAAA,MAAM,kBAAkB,GAAG,CAAC,KAAc,KAAU;QACnD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;YAC1C;;QAED,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,QAAQ,KAAI;AACtC,YAAA,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AACxE,YAAA,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC;AAC/B,YAAA,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACxD,SAAC,CAAC;AACH,KAAC;AAED,IAAA,MAAM,UAAU,GAAG,CAAC,KAAyB,EAAE,OAAgB,KAAU;QACxE,IAAI,CAAC,OAAO,EAAE;YACb,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;;AAEnC,QAAA,mBAAmB,CAAC,KAAK,CAAC,KAAK,KAAA,IAAA,IAAL,KAAK,KAAL,MAAA,GAAA,KAAK,GAAI,mBAAmB,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACrF,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAChC,KAAC;AAED,IAAA,MAAM,eAAe,GAAG,CAAC,KAAY,EAAE,IAAY,KAAU;;AAC5D,QAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAC,OAAO,MAAG,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,KAAK,EAAE,IAAI,CAAC;AACtC,QAAA,MAAM,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE;QACvC,IAAI,MAAM,EAAE;YACX,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;;AAE/C,QAAA,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC;AAC9B,KAAC;AAED,IAAA,MAAM,oBAAoB,GAAG,CAAC,KAAY,EAAE,KAAc,KAAU;AACnE,QAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAe,CAAC;QAC1C,IAAI,QAAQ,GAAG,CAAC,IAAI,aAAa,KAAK,QAAQ,EAAE;YAC/C,kBAAkB,CAAC,QAAQ,CAAC;YAC5B,aAAa,GAAG,QAAQ;YACxB,OAAO,CAAC,aAAa,EAAE;YAEvB,UAAU,CAAC,MAAK;;gBACf,MAAM,OAAO,GAAG,aAAuB;AACvC,gBAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAC,gBAAgB,MAAG,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,KAAK,EAAE,OAAO,CAAC;AAClD,gBAAA,MAAM,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE;gBACvC,IAAI,MAAM,EAAE;oBACX,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;;AAE5D,aAAC,CAAC;;AAEJ,KAAC;AAED,IAAA,MAAM,uBAAuB,GAAG,EAAE,QAAQ,EAAE,oBAAoB,EAAE;AAClE,IAAA,MAAM,oBAAoB,GAA8C,CAAC,KAAK,KAC7E,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,MAAM,CAAM,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,KAAE,EAAE,EAAE,uBAAuB,EAAA,CAAA,CAAG;AAGnF,IAAA,MAAM,mBAAmB,GAA6C;AACrE,QAAA,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,KAAY,KAAK,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE;AAC/D,QAAA,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,KAAY,KAAK,eAAe,CAAC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;QAClH,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,KAAY,KAAK,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;QAClF,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,KAAY,KAAK,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;KACtF;AAED,IAAA,MAAM,IAAI,GAAmB;QAC5B,kBAAkB,EAAE,CAAC,KAAK,KAAK,iBAAiB,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;QACnG,gBAAgB,EAAE,CAAC,KAAK,KAAK,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;QAC7F,eAAe,EAAE,CAAC,KAAK,KAAK,wBAAwB,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,YAAY,kCAAO,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAK,EAAA,CAAC,EAAG,CAAC;QACvI,UAAU,EAAE,CAAC,KAAK,KAAK,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC;AAC/C,QAAA,QAAQ,EAAE,CAAC,KAAK,KAAI;YACnB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;gBAC1C;;YAED,iBAAiB,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,KAAI;AACtC,gBAAA,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC;AACrB,gBAAA,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC;AACxD,aAAC,CAAC;SACF;QACD,OAAO,EAAE,CAAC,KAAK,KAAK,uBAAuB,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACnF,QAAA,SAAS,EAAE,CAAC,KAAK,KAAI;YACpB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;gBAC1C;;YAED,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,KAAI;AAC9B,gBAAA,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC;AACvB,gBAAA,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACxD,aAAC,CAAC;SACF;AACD,QAAA,aAAa,EAAE,CAAC,KAAK,KAAI;YACxB,kBAAkB,CAAC,KAAK,CAAC;YACzB,aAAa,GAAG,KAAK;SACrB;AAED,QAAA,oBAAoB,EAAE,CAAC,KAAK,KAC3B,mBAAmB,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,eAAe,KAAI;AACpD,YAAA,KAAK,CAAC,GAAG,CAAC,iBAAiB,EAAE,eAAe,CAAC;AAC7C,YAAA,IAAI,QAA4B;AAChC,YAAA,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,gBAAA,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,eAAe,CAAC;AAClE,gBAAA,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC;;AAEhC,YAAA,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACxD,SAAC,CAAC;QACH,iBAAiB,EAAE,CAAC,KAAK,KAAK,gBAAgB,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;AAEhG,QAAA,iBAAiB,EAAE,CAAC,KAAK,KAAK,gBAAgB,CAAC,KAAK,CAAC,KAAK,KAAA,IAAA,IAAL,KAAK,KAAL,MAAA,GAAA,KAAK,GAAI,KAAK,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;AACzG,QAAA,IAAI,EAAE,CAAC,KAAK,KAAI;YACf,OAAO,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAQ,KAAK,CAAE;AACtB,YAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,aAAa,CAAC;AAC5C,YAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC;AACxC,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC;AACtC,YAAA,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC;AAC7B,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;AACtB,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;AAC1B,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC;AAClC,YAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,eAAe,CAAC;AAChD,YAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,YAAY,CAAC;AAC1C,YAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,YAAY,CAAC;AAC1C,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;AACxB,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;SAC1B;AACD,QAAA,MAAM,EAAE,CAAC,KAAK,KAAI;AACjB,YAAA,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE;gBAC/B,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,EAAE;oBAChC,OAAO,GAAQ,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,OAAO,CAAE,EAAA,EAAA,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,EAAA,CAAE;oBAE3C,IAAI,GAAG,KAAK,UAAU,IAAI,KAAK,CAAC,QAAQ,KAAK,aAAa,EAAE;wBAC3D,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAU,CAAC;;;;SAIrC;QACD,UAAU,EAAE,MAAK;YAChB,OAAO,CAAC,WAAW,EAAE;YACrB,eAAe,CAAC,WAAW,EAAE;YAC7B,OAAO;AACN,gBAAA,aAAa,EAAE,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC;AACzC,gBAAA,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC;gBACrC,gBAAgB;gBAChB,eAAe;gBACf,oBAAoB;AACpB,gBAAA,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC;AACnC,gBAAA,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;AACzB,gBAAA,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;gBACrB,mBAAmB;AACnB,gBAAA,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AACnB,gBAAA,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;AACvB,gBAAA,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC;AAC/B,gBAAA,eAAe,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC;gBAC7C,oBAAoB;AACpB,gBAAA,YAAY,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC;AACvC,gBAAA,YAAY,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC;aACvC;SACD;QACD,IAAI,EAAE,MAAK;YACV,OAAO,CAAC,SAAS,EAAE;YACnB,eAAe,CAAC,SAAS,EAAE;SAC3B;QACD,OAAO,EAAE,MAAK;YACb,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAClC,OAAO,CAAC,OAAO,EAAE;YACjB,eAAe,CAAC,OAAO,EAAE;SACzB;KACD;AAED,IAAA,MAAM,QAAQ,GAA4E;QACzF,aAAa,EAAE,IAAI,CAAC,kBAAkB;QACtC,WAAW,EAAE,IAAI,CAAC,gBAAgB;QAClC,UAAU,EAAE,IAAI,CAAC,eAAe;QAChC,KAAK,EAAE,IAAI,CAAC,UAAU;QACtB,GAAG,EAAE,IAAI,CAAC,QAAQ;QAClB,EAAE,EAAE,IAAI,CAAC,OAAO;QAChB,IAAI,EAAE,IAAI,CAAC,SAAS;QACpB,QAAQ,EAAE,IAAI,CAAC,aAAa;QAC5B,eAAe,EAAE,IAAI,CAAC,oBAAoB;QAC1C,YAAY,EAAE,IAAI,CAAC,iBAAiB;QACpC,YAAY,EAAE,IAAI,CAAC,iBAAiB;KACpC;AAED,IAAA,OAAO,IAAI;AACZ;;;;"}
1
+ {"version":3,"file":"item-nGiqyOvt.js","sources":["src/internal/props/boundary-count.ts","src/internal/props/page.ts","src/internal/props/page-size.ts","src/internal/props/page-size-options.ts","src/internal/props/pagination-callbacks.ts","src/internal/props/pagination-has-buttons.ts","src/internal/props/pagination-label.ts","src/internal/props/pagination-max.ts","src/internal/props/sibling-count.ts","src/internal/functional-components/pagination/api.tsx","src/internal/functional-components/pagination/model.ts","src/internal/functional-components/pagination/component.tsx","src/internal/functional-components/pagination/page-size-select.tsx","src/internal/functional-components/pagination/item.ts"],"sourcesContent":["import type { SimpleProp } from './helpers/factory';\nimport { createPropDefinition } from './helpers/factory';\n\n/**\n * Boundary count prop of `kol-pagination`\n *\n * Description:\n * The number of pages shown next to the first and the last page. A negative value counts as 0.\n */\nexport type BoundaryCountProp = SimpleProp<'boundaryCount', number>;\nexport const boundaryCountProp = createPropDefinition<BoundaryCountProp>('boundaryCount', 1, (value) => Math.max(0, value as number));\n","import type { SimpleProp } from './helpers/factory';\nimport { createPropDefinition } from './helpers/factory';\nimport { normalizeNumberType } from './helpers/normalizers';\n\n/**\n * Page prop of `kol-pagination`\n *\n * Description:\n * The current page, starting at 1. The pagination clamps it to the available pages.\n */\nexport type PageProp = SimpleProp<'page', number>;\nexport const pageProp = createPropDefinition<PageProp>('page', 0, normalizeNumberType);\n","import type { SimpleProp } from './helpers/factory';\nimport { createPropDefinition } from './helpers/factory';\nimport { normalizeNumberType } from './helpers/normalizers';\n\n/**\n * Page size prop of `kol-pagination`\n *\n * Description:\n * The number of entries per page. With page size options, a value that is not an option falls back\n * to the first option.\n */\nexport type PageSizeProp = SimpleProp<'pageSize', number>;\nexport const pageSizeProp = createPropDefinition<PageSizeProp>('pageSize', 1, normalizeNumberType);\n","import type { Option, Stringified } from '../../schema';\nimport { parseJson } from '../../schema';\nimport type { Prop } from './helpers/factory';\nimport { createPropDefinition } from './helpers/factory';\n\n/**\n * Page size options prop of `kol-pagination`\n *\n * Description:\n * The page sizes of the page size select, as an array of numbers or as a JSON string. One value that\n * is not a number rejects the whole list.\n */\nexport type PageSizeOptionsProp = Prop<'pageSizeOptions', Stringified<number[]>, Option<number>[]>;\n\nconst OBJECT_OBJECT = /^\\[object Object\\]$/;\n\nfunction normalizePageSizeOptions(value: unknown): Option<number>[] | never {\n\t// An empty string or '[object Object]' is what Stencil passes for an array it could not reflect.\n\tif (value === '' || (typeof value === 'string' && OBJECT_OBJECT.test(value))) {\n\t\tthrow new Error('Unreflected page size options');\n\t}\n\tconst parsed = typeof value === 'string' ? parseJson<unknown>(value) : value;\n\tif (Array.isArray(parsed) && parsed.every((item) => typeof item === 'number')) {\n\t\treturn parsed.map((size) => ({ label: `${size}`, value: size }));\n\t}\n\tthrow new Error('Invalid page size options');\n}\n\nexport const pageSizeOptionsProp = createPropDefinition<PageSizeOptionsProp>('pageSizeOptions', [], normalizePageSizeOptions);\n","import type { KoliBriPaginationButtonCallbacks } from '../../schema';\nimport type { SimpleProp } from './helpers/factory';\nimport { createCallbacksPropDefinition } from './helpers/factory';\n\nexport type PaginationCallbacksProp = SimpleProp<'on', KoliBriPaginationButtonCallbacks>;\n\nexport const paginationCallbacksProp = createCallbacksPropDefinition<KoliBriPaginationButtonCallbacks>();\n","import type { PaginationHasButton, Stringified } from '../../schema';\nimport { parseJson } from '../../schema';\nimport type { Prop } from './helpers/factory';\nimport { createPropDefinition } from './helpers/factory';\n\n/**\n * Has buttons prop of `kol-pagination`\n *\n * Description:\n * Which navigation buttons to render: `true`/`false` for all four, or an object (also as JSON string)\n * that sets single buttons. The normalized value holds only the buttons the value sets; the\n * pagination merges it into the current buttons.\n */\nexport type PaginationHasButtonsProp = Prop<'hasButtons', boolean | Stringified<PaginationHasButton>, Partial<PaginationHasButton>>;\n\nconst BUTTONS = ['first', 'last', 'next', 'previous'] as const;\n\nconst allButtons = (shown: boolean): PaginationHasButton => ({ first: shown, last: shown, next: shown, previous: shown });\n\nfunction normalizeHasButtons(value: unknown): Partial<PaginationHasButton> | never {\n\tif (typeof value === 'boolean') {\n\t\treturn allButtons(value);\n\t}\n\tif (typeof value === 'object' && value !== null) {\n\t\tconst buttons: Partial<PaginationHasButton> = {};\n\t\tBUTTONS.forEach((button) => {\n\t\t\tconst shown = (value as Partial<Record<string, unknown>>)[button];\n\t\t\tif (typeof shown === 'boolean') {\n\t\t\t\tbuttons[button] = shown;\n\t\t\t}\n\t\t});\n\t\treturn buttons;\n\t}\n\tif (typeof value === 'string') {\n\t\tconst parsed = parseJson<unknown>(value);\n\t\t// A JSON string that is no object renders no button.\n\t\treturn typeof parsed === 'object' && parsed !== null ? normalizeHasButtons(parsed) : allButtons(false);\n\t}\n\tthrow new Error('Invalid pagination buttons');\n}\n\nexport const paginationHasButtonsProp = createPropDefinition<PaginationHasButtonsProp>('hasButtons', allButtons(true), normalizeHasButtons);\n","import type { SimpleProp } from './helpers/factory';\nimport { createPropDefinition } from './helpers/factory';\nimport { normalizeString } from './helpers/normalizers';\n\n/**\n * Label prop of `kol-pagination`\n *\n * Description:\n * The accessible name of the navigation. Unlike `labelProp`, any string is accepted. Without a value\n * the pagination uses the translation `kol-pagination`.\n */\nexport type PaginationLabelProp = SimpleProp<'label', string>;\nexport const paginationLabelProp = createPropDefinition<PaginationLabelProp>('label', '', normalizeString);\n","import type { SimpleProp } from './helpers/factory';\nimport { createPropDefinition } from './helpers/factory';\nimport { normalizeNumberType } from './helpers/normalizers';\n\n/**\n * Max prop of `kol-pagination`\n *\n * Description:\n * The total number of entries; 0 means no entries. `maxProp` does not fit, because it requires a\n * value above 0.\n */\nexport type PaginationMaxProp = SimpleProp<'max', number>;\nexport const paginationMaxProp = createPropDefinition<PaginationMaxProp>('max', 0, normalizeNumberType);\n","import type { SimpleProp } from './helpers/factory';\nimport { createPropDefinition } from './helpers/factory';\n\n/**\n * Sibling count prop of `kol-pagination`\n *\n * Description:\n * The number of pages shown on each side of the current page. A negative value counts as 0.\n */\nexport type SiblingCountProp = SimpleProp<'siblingCount', number>;\nexport const siblingCountProp = createPropDefinition<SiblingCountProp>('siblingCount', 1, (value) => Math.max(0, value as number));\n","import {\n\tboundaryCountProp,\n\tcustomClassProp,\n\tpageProp,\n\tpageSizeOptionsProp,\n\tpageSizeProp,\n\tpaginationCallbacksProp,\n\tpaginationHasButtonsProp,\n\tpaginationLabelProp,\n\tpaginationMaxProp,\n\tsiblingCountProp,\n\ttooltipAlignProp,\n} from '../../props';\nimport type { ApiFromConfig, PropsConfigShape } from '../generic-types';\n\n/**\n * `page` and `pageSize` hold the clamped page and the page size resolved against the options, not the\n * raw props.\n */\nexport const paginationPropsConfig = {\n\trequired: [pageProp, paginationCallbacksProp, paginationMaxProp],\n\toptional: [\n\t\tboundaryCountProp,\n\t\tcustomClassProp,\n\t\tpageSizeOptionsProp,\n\t\tpageSizeProp,\n\t\tpaginationHasButtonsProp,\n\t\tpaginationLabelProp,\n\t\tsiblingCountProp,\n\t\ttooltipAlignProp,\n\t],\n} as const satisfies PropsConfigShape;\n\nexport type PaginationApi = ApiFromConfig<\n\ttypeof paginationPropsConfig,\n\t{\n\t\tCallbacks: {\n\t\t\t/** A page button or a navigation button was clicked; `page` is its target page. */\n\t\t\tpageClick: (event: Event, page: number) => void;\n\t\t\t/** The page size select changed. */\n\t\t\tpageSizeChange: (event: Event, value: unknown) => void;\n\t\t};\n\t}\n>;\n","import type { Option } from '../../../schema';\n\n/** Number of pages; without a page size each entry is one page. */\nexport const getPageCount = (max: number, pageSize = 1): number => Math.ceil(max / pageSize);\n\n/**\n * The page a page outside the range is clamped to, or `undefined` when the page stays. Without entries\n * (`max` 0 or below) every page stays. An `undefined` page size counts as 1.\n */\nexport const clampPage = (page: number, pageSize: number | undefined, max: number): number | undefined => {\n\tif (max > 0) {\n\t\tconst count = getPageCount(max, pageSize);\n\t\tif (count > 0) {\n\t\t\tif (page > count) {\n\t\t\t\treturn count;\n\t\t\t}\n\t\t\tif (page < 1) {\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t}\n\t}\n\treturn undefined;\n};\n\n/** With page size options, a page size that is not an option falls back to the first option. */\nexport const resolvePageSize = (pageSize: number, options: Option<number>[]): number => {\n\tif (options.length > 0) {\n\t\treturn options.find((option) => option.value === pageSize)?.value ?? options[0].value;\n\t}\n\treturn pageSize;\n};\n\nexport type PageItem = { page: number; selected: boolean } | 'separator' | null;\n\n/**\n * One item per page: a page button for the first and last `boundaryCount` pages and `siblingCount`\n * pages on each side of the current page, a separator for the first hidden page after a shown one, and\n * `null` for the other hidden pages. The `null` items keep the positions of the rendered children\n * stable, so a re-render keeps the navigation buttons after the list (and their focus). A gap before the\n * first shown page has no separator.\n */\nexport const getPageItems = (page: number, count: number, boundaryCount: number, siblingCount: number): PageItem[] => {\n\tconst items: PageItem[] = [];\n\tlet afterPage = false;\n\tfor (let item = 1; item <= count; item++) {\n\t\tif (item <= boundaryCount || item > count - boundaryCount || (item >= page - siblingCount && item <= page + siblingCount)) {\n\t\t\tafterPage = true;\n\t\t\titems.push({ page: item, selected: item === page });\n\t\t} else if (afterPage) {\n\t\t\tafterPage = false;\n\t\t\titems.push('separator');\n\t\t} else {\n\t\t\titems.push(null);\n\t\t}\n\t}\n\treturn items;\n};\n\n/** First and last entry of the current page, numbered from 1. */\nexport const getVisibleRange = (page: number, pageSize: number, max: number): { start: number; end: number } => {\n\tconst highest = page * pageSize;\n\treturn {\n\t\tstart: Math.max(0, (page - 1) * pageSize + 1),\n\t\tend: max < highest ? max : highest,\n\t};\n};\n","import type { FunctionalComponent as FC, JSX } from '@stencil/core';\nimport { h } from '@stencil/core';\n\nimport { translate } from '../../../i18n';\nimport type { InternalButtonProps } from '../../../schema';\nimport { bem } from '../../../schema/bem-registry';\nimport { nonce } from '../../../utils/dev.utils';\nimport { BemRootNodeFC } from '../bem-root-node/component';\nimport { ButtonFC } from '../button/component';\nimport type { ButtonItemFcProps, ButtonItemRootAttributes } from '../button/item';\nimport type { FunctionalComponentProps } from '../generic-types';\nimport type { PaginationApi } from './api';\nimport { getPageCount, getPageItems, getVisibleRange } from './model';\nimport type { PageSizeSelectInput } from './page-size-select';\n\nconst paginationBem = bem.forBlock('kol-pagination');\n\nconst leftDoubleArrowIcon = { left: 'kolicon-chevron-double-left' };\nconst leftSingleArrowIcon = { left: 'kolicon-chevron-left' };\nconst rightSingleArrowIcon = { right: 'kolicon-chevron-right' };\nconst rightDoubleArrowIcon = { right: 'kolicon-chevron-double-right' };\n\nconst userLanguage = ((language: string) => (language.includes('-') ? language : `${language}-${language.toUpperCase()}`))(navigator.language || 'de-DE');\nconst NUMBER_FORMATTER = new Intl.NumberFormat(userLanguage, {\n\tstyle: 'decimal',\n\tminimumFractionDigits: 0,\n\tmaximumFractionDigits: 0,\n});\n\nexport type NavigationPosition = 'first' | 'last' | 'next' | 'previous';\n\nexport type PaginationFCProps = FunctionalComponentProps<PaginationApi> & {\n\t/**\n\t * The `_on` objects of the navigation buttons. They keep their identity across renders, so a\n\t * re-render of the pagination does not re-render the navigation buttons.\n\t */\n\tnavigationCallbacks: Record<NavigationPosition, { onClick: (event: Event) => void }>;\n\t/** `ButtonFC` props of the page or navigation button `key`; the pagination item keeps one button item per key. */\n\tgetButtonFcProps: (key: string, props: InternalButtonProps, rootAttributes?: ButtonItemRootAttributes) => ButtonItemFcProps;\n\t/** The page size select; the pagination item keeps it while it is rendered. */\n\trenderPageSizeSelect: (input: Omit<PageSizeSelectInput, 'on'>) => JSX.Element;\n};\n\n/** The content of the pagination: the visible range, the navigation and the page size select. */\nexport const PaginationContentFC: FC<PaginationFCProps> = ({\n\tboundaryCount,\n\tcustomClass,\n\tgetButtonFcProps,\n\thandlePageClick,\n\thasButtons,\n\tlabel,\n\tmax,\n\tnavigationCallbacks,\n\tpage,\n\tpageSize,\n\tpageSizeOptions,\n\trenderPageSizeSelect,\n\tsiblingCount,\n\ttooltipAlign,\n}) => {\n\tconst count = getPageCount(max, pageSize);\n\tconst { start, end } = getVisibleRange(page, pageSize, max);\n\tconst navigationButton = (position: NavigationPosition, icons: Record<string, string>, buttonLabel: string, disabled: boolean) => (\n\t\t<li>\n\t\t\t<ButtonFC\n\t\t\t\t{...getButtonFcProps(\n\t\t\t\t\t`navigation-${position}`,\n\t\t\t\t\t{\n\t\t\t\t\t\t_customClass: customClass,\n\t\t\t\t\t\t_disabled: disabled,\n\t\t\t\t\t\t_icons: icons,\n\t\t\t\t\t\t_hideLabel: true,\n\t\t\t\t\t\t_label: buttonLabel,\n\t\t\t\t\t\t_on: navigationCallbacks[position],\n\t\t\t\t\t\t_tooltipAlign: tooltipAlign,\n\t\t\t\t\t},\n\t\t\t\t\t{ class: paginationBem('button', { [position]: true }) },\n\t\t\t\t)}\n\t\t\t/>\n\t\t</li>\n\t);\n\tconst pageButton = (item: number, selected: boolean) => {\n\t\tconst pageText = NUMBER_FORMATTER.format(item);\n\t\tconst ariaDescription = `${translate('kol-page')} ${pageText}`;\n\t\treturn (\n\t\t\t<li key={nonce()}>\n\t\t\t\t{selected ? (\n\t\t\t\t\t<ButtonFC\n\t\t\t\t\t\t{...getButtonFcProps(\n\t\t\t\t\t\t\t`page-${item}`,\n\t\t\t\t\t\t\t{ _ariaDescription: ariaDescription, _customClass: customClass, _label: pageText },\n\t\t\t\t\t\t\t{ 'aria-current': 'page', class: `${paginationBem('button', { selected: true })} selected` },\n\t\t\t\t\t\t)}\n\t\t\t\t\t/>\n\t\t\t\t) : (\n\t\t\t\t\t<ButtonFC\n\t\t\t\t\t\t{...getButtonFcProps(\n\t\t\t\t\t\t\t`page-${item}`,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t_ariaDescription: ariaDescription,\n\t\t\t\t\t\t\t\t_customClass: customClass,\n\t\t\t\t\t\t\t\t_label: pageText,\n\t\t\t\t\t\t\t\t_on: { onClick: (event: Event) => handlePageClick(event, item) },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{ class: paginationBem('button', { numbers: true }) },\n\t\t\t\t\t\t)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</li>\n\t\t);\n\t};\n\n\treturn [\n\t\t<span role=\"status\" aria-live=\"polite\" class={paginationBem('entries')}>\n\t\t\t{translate('kol-table-visible-range', {\n\t\t\t\tplaceholders: {\n\t\t\t\t\tstart: NUMBER_FORMATTER.format(start),\n\t\t\t\t\tend: NUMBER_FORMATTER.format(end),\n\t\t\t\t\ttotal: NUMBER_FORMATTER.format(max),\n\t\t\t\t},\n\t\t\t})}\n\t\t</span>,\n\t\t<nav class={paginationBem('navigation')} aria-label={label}>\n\t\t\t<ul class={paginationBem('navigation-list')}>\n\t\t\t\t{hasButtons.first && navigationButton('first', leftDoubleArrowIcon, translate('kol-page-first'), page <= 1)}\n\t\t\t\t{hasButtons.previous && navigationButton('previous', leftSingleArrowIcon, translate('kol-page-back'), page <= 1)}\n\t\t\t\t{getPageItems(page, count, boundaryCount, siblingCount).map((item) =>\n\t\t\t\t\titem === null ? null : item === 'separator' ? (\n\t\t\t\t\t\t<li key={nonce()}>\n\t\t\t\t\t\t\t<span class={paginationBem('separator')} aria-hidden=\"true\"></span>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t) : (\n\t\t\t\t\t\tpageButton(item.page, item.selected)\n\t\t\t\t\t),\n\t\t\t\t)}\n\t\t\t\t{hasButtons.next && navigationButton('next', rightSingleArrowIcon, translate('kol-page-next'), count <= page)}\n\t\t\t\t{hasButtons.last && navigationButton('last', rightDoubleArrowIcon, translate('kol-page-last'), count <= page)}\n\t\t\t</ul>\n\t\t</nav>,\n\t\tpageSizeOptions?.length > 0 && (\n\t\t\t<div class=\"page-size\">\n\t\t\t\t<div class={paginationBem('page-size-select')}>\n\t\t\t\t\t{renderPageSizeSelect({ label: translate('kol-entries-per-site'), options: pageSizeOptions, value: pageSize })}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t),\n\t];\n};\n\n/** The pagination in its own root node, for `kol-pagination`. */\nexport const PaginationFC: FC<PaginationFCProps> = (props) => (\n\t<BemRootNodeFC block=\"kol-pagination\">\n\t\t<PaginationContentFC {...props} />\n\t</BemRootNodeFC>\n);\n","import type { JSX } from '@stencil/core';\nimport type { InputTypeOnDefault, Option, ShortKeyPropType, StencilUnknown, Stringified } from '../../../schema';\nimport { createUniqueId } from '../../../utils/dev.utils';\nimport { createCtaRef } from '../../../utils/element-interaction';\nimport { selectPropsConfig } from '../select/api';\nimport { BaseSelectWebComponent } from '../select/base-web-component';\n\n/** The props of the page size select that change with the pagination. */\nexport type PageSizeSelectInput = {\n\tlabel: string;\n\ton: InputTypeOnDefault;\n\toptions: Option<number>[];\n\tvalue: number;\n};\n\n/**\n * The page size select of a pagination: the select field of `kol-select`, rendered into the shadow root\n * of the element that renders the pagination (`kol-pagination`, `kol-table-stateful`) instead of an\n * element of its own. That element receives the KoliBri events of the select and frames its focus, so\n * moving the focus from the select to a page button sends no blur.\n *\n * Without an element of its own, the class does what Stencil does for one: the first `render` applies\n * the props in the load order of `kol-select`; each later `render` applies the props that changed, like\n * their watchers. A state change or a prop the select writes itself (`_value`, `_touched`) renders the\n * embedding element again through `requestRender`.\n */\nexport class PageSizeSelect extends BaseSelectWebComponent {\n\tpublic _disabled?: boolean = false;\n\tpublic _multiple?: boolean = false;\n\tpublic _on?: InputTypeOnDefault;\n\n\tprotected readonly ctaRef = createCtaRef<HTMLSelectElement>();\n\n\tpublic readonly id = createUniqueId('select');\n\n\tprivate loaded = false;\n\tprivate passed?: PageSizeSelectInput;\n\tprivate focused = false;\n\tprivate touched = false;\n\tprivate value?: Stringified<StencilUnknown[]> | Stringified<StencilUnknown>;\n\n\tpublic constructor(\n\t\tprivate readonly getHost: () => HTMLElement | undefined,\n\t\tprivate readonly requestRender: () => void,\n\t) {\n\t\tsuper();\n\t\tthis.initFormAssociation('select');\n\t}\n\n\t/** The base class reads the host while it is constructed, before `getHost` is assigned. */\n\tprotected get host(): HTMLElement | undefined {\n\t\treturn this.getHost?.();\n\t}\n\n\tpublic get inputHasFocus(): boolean {\n\t\treturn this.focused;\n\t}\n\n\tpublic set inputHasFocus(value: boolean) {\n\t\tif (value !== this.focused) {\n\t\t\tthis.focused = value;\n\t\t\tthis.requestRender();\n\t\t}\n\t}\n\n\tpublic get _touched(): boolean | undefined {\n\t\treturn this.touched;\n\t}\n\n\tpublic set _touched(value: boolean | undefined) {\n\t\tif (value !== this.touched) {\n\t\t\tthis.touched = value === true;\n\t\t\tthis.applyTouched(value);\n\t\t\tthis.requestRender();\n\t\t}\n\t}\n\n\tpublic get _value(): Stringified<StencilUnknown[]> | Stringified<StencilUnknown> | undefined {\n\t\treturn this.value;\n\t}\n\n\tpublic set _value(value: Stringified<StencilUnknown[]> | Stringified<StencilUnknown> | undefined) {\n\t\tif (value !== this.value) {\n\t\t\tthis.value = value;\n\t\t\tthis.applyValue(value);\n\t\t\tthis.requestRender();\n\t\t}\n\t}\n\n\tprotected getAccessKeyProp(): string | undefined {\n\t\treturn undefined;\n\t}\n\n\tprotected getShortKeyProp(): ShortKeyPropType | undefined {\n\t\treturn undefined;\n\t}\n\n\t/** Call once per render of the embedding element. */\n\tpublic render(input: PageSizeSelectInput): JSX.Element {\n\t\tif (this.loaded) {\n\t\t\tthis.update(input);\n\t\t} else {\n\t\t\tthis.load(input);\n\t\t}\n\t\treturn this.renderSelectField();\n\t}\n\n\t/** Call from `componentDidRender` of the embedding element. */\n\tpublic sync(): void {\n\t\tthis.syncFormField();\n\t}\n\n\t/** Call when the select is no longer rendered. */\n\tpublic destroy(): void {\n\t\tthis.destroyFormField();\n\t}\n\n\t/** The props the pagination does not pass keep the defaults of `kol-select`. */\n\tprivate load(input: PageSizeSelectInput): void {\n\t\tthis.passed = input;\n\t\tthis._on = input.on;\n\t\tthis.value = input.value;\n\t\tthis.initRenderProps(selectPropsConfig);\n\n\t\tthis.applyAriaDetails(undefined);\n\t\tthis.applyName(undefined);\n\t\tthis.applySyncValueBySelector(undefined);\n\t\tthis.applyTouched(false);\n\t\tthis.applyAccessKey(undefined);\n\t\tthis.applyMsg(undefined);\n\t\tthis.applyDisabled(false);\n\t\tthis.applyHideMsg(false);\n\t\tthis.applyHideLabel(false);\n\t\tthis.applyHint('');\n\t\tthis.applyInfoPopover(undefined);\n\t\tthis.applyLabel(input.label);\n\t\tthis.applyShortKey(undefined);\n\t\tthis.applyOn(input.on);\n\t\tthis.applyTooltipAlign('top');\n\t\tthis.applyVariant(undefined);\n\t\tthis.applyTabIndex(undefined);\n\t\tthis.applyIcons(undefined);\n\t\tthis.applyOptions(input.options);\n\t\tthis.applyMultiple(false);\n\t\tthis.applyRequired(false);\n\t\tthis.applyRows(undefined);\n\t\tthis.applyValue(input.value);\n\t\tthis.loaded = true;\n\t}\n\n\t/**\n\t * Applies the props that differ from the last passed ones, in the order the pagination passes them.\n\t * The value is applied only when it also differs from the current one, which an earlier choice in the\n\t * select may already hold. It does not render again: the embedding element is rendering.\n\t */\n\tprivate update(input: PageSizeSelectInput): void {\n\t\tconst passed = this.passed!;\n\t\tthis.passed = input;\n\t\tif (input.label !== passed.label) {\n\t\t\tthis.applyLabel(input.label);\n\t\t}\n\t\tif (input.options !== passed.options) {\n\t\t\tthis.applyOptions(input.options);\n\t\t}\n\t\tif (input.on !== passed.on) {\n\t\t\tthis._on = input.on;\n\t\t\tthis.applyOn(input.on);\n\t\t}\n\t\tif (input.value !== passed.value && input.value !== this.value) {\n\t\t\tthis.value = input.value;\n\t\t\tthis.applyValue(input.value);\n\t\t}\n\t}\n}\n","import { translate } from '../../../i18n';\nimport type {\n\tCustomClassPropType,\n\tInternalButtonProps,\n\tKoliBriPaginationButtonCallbacks,\n\tPaginationHasButton,\n\tStringified,\n\tTooltipAlignPropType,\n} from '../../../schema';\nimport { STATE_CHANGE_EVENT } from '../../../schema';\nimport { dispatchDomEvent, KolEvent } from '../../../utils/events';\nimport { addNavLabel, removeNavLabel } from '../../../utils/unique-nav-labels';\nimport {\n\tboundaryCountProp,\n\tcustomClassProp,\n\tpageProp,\n\tpageSizeOptionsProp,\n\tpageSizeProp,\n\tpaginationCallbacksProp,\n\tpaginationHasButtonsProp,\n\tpaginationLabelProp,\n\tpaginationMaxProp,\n\tsiblingCountProp,\n\ttooltipAlignProp,\n} from '../../props';\nimport type { ButtonItem, ButtonItemFcProps, ButtonItemRootAttributes } from '../button/item';\nimport { createButtonItem } from '../button/item';\nimport { createItemPool } from '../item-pool';\nimport { buildDefaultPropsFromConfig } from '../props-from-config';\nimport { paginationPropsConfig } from './api';\nimport type { PaginationFCProps } from './component';\nimport { clampPage, getPageCount, resolvePageSize } from './model';\nimport { PageSizeSelect } from './page-size-select';\n\n/** The render props of the pagination, as `PaginationFC` receives them. */\nexport type PaginationRenderProps = Omit<\n\tPaginationFCProps,\n\t'getButtonFcProps' | 'handlePageClick' | 'handlePageSizeChange' | 'navigationCallbacks' | 'renderPageSizeSelect'\n>;\n\n/** Where the item keeps its render props; `kol-pagination` passes its own render props. */\nexport type PaginationPropsStore = {\n\tget<K extends keyof PaginationRenderProps>(key: K): PaginationRenderProps[K];\n\tset<K extends keyof PaginationRenderProps>(key: K, value: PaginationRenderProps[K]): void;\n};\n\n/** The `_`-props of a pagination, without the underscore. */\nexport type PaginationInput = {\n\tboundaryCount?: number;\n\tcustomClass?: CustomClassPropType;\n\thasButtons?: boolean | Stringified<PaginationHasButton>;\n\tlabel?: string;\n\tmax?: number;\n\ton?: KoliBriPaginationButtonCallbacks;\n\tpage?: number;\n\tpageSize?: number;\n\tpageSizeOptions?: Stringified<number[]>;\n\tsiblingCount?: number;\n\ttooltipAlign?: TooltipAlignPropType;\n};\n\n/**\n * The order in which `update` applies changed inputs: the attribute order in which `kol-table-stateful`\n * passes them. Within one update, an earlier input clamps the page before a later one is applied.\n */\nconst UPDATE_ORDER: (keyof PaginationInput)[] = [\n\t'boundaryCount',\n\t'customClass',\n\t'hasButtons',\n\t'on',\n\t'page',\n\t'pageSize',\n\t'pageSizeOptions',\n\t'siblingCount',\n\t'tooltipAlign',\n\t'max',\n\t'label',\n];\n\nexport type PaginationItem = {\n\tapplyBoundaryCount: (value?: number) => void;\n\tapplyCustomClass: (value?: CustomClassPropType) => void;\n\t/** An object sets single buttons and keeps the others. */\n\tapplyHasButtons: (value?: boolean | Stringified<PaginationHasButton>) => void;\n\tapplyLabel: (value?: string) => void;\n\tapplyMax: (value?: number) => void;\n\tapplyOn: (value?: KoliBriPaginationButtonCallbacks) => void;\n\tapplyPage: (value?: number) => void;\n\t/** Applies `_pageSize`; it also becomes the page size a choice in the select is compared against. */\n\tapplyPageSize: (value?: number) => void;\n\tapplyPageSizeOptions: (value?: Stringified<number[]>) => void;\n\tapplySiblingCount: (value?: number) => void;\n\tapplyTooltipAlign: (value?: TooltipAlignPropType) => void;\n\t/**\n\t * Applies all inputs in the load order of the element. The page is applied again last: only then are\n\t * page size and number of entries known to clamp it, so a clamped page is reported twice.\n\t */\n\tload: (input: PaginationInput) => void;\n\t/**\n\t * Applies the inputs that differ from the last passed ones, like the props of a child element in a\n\t * render: a value passed again unchanged is not applied, even if the item changed it meanwhile.\n\t */\n\tupdate: (input: PaginationInput) => void;\n\t/** Fully resolved props for `PaginationFC` and `PaginationContentFC`. Call once per render. */\n\tgetFcProps: () => PaginationFCProps;\n\t/** Syncs the buttons and the page size select of the last render. Call from `componentDidRender`. */\n\tsync: () => void;\n\t/** Removes the navigation label from the register of unique labels and tears down the buttons and the page size select. */\n\tdestroy: () => void;\n};\n\nexport type PaginationItemOptions = {\n\t/**\n\t * Element the `click`, `changepage` and `changepagesize` events and the events of the page size select\n\t * are dispatched on; also the element the feature flags of the buttons are resolved against.\n\t */\n\tgetEventTarget: () => HTMLElement | undefined;\n\t/** Renders the embedding element again after a page size was chosen or the state of the select changed. */\n\trequestRender: () => void;\n\t/** Keeps the render props; without it the item keeps them itself. */\n\tstore?: PaginationPropsStore;\n};\n\nconst createLocalStore = (): PaginationPropsStore => {\n\tconst props = buildDefaultPropsFromConfig(paginationPropsConfig) as unknown as PaginationRenderProps;\n\treturn {\n\t\tget: (key) => props[key],\n\t\tset: (key, value) => {\n\t\t\tprops[key] = value;\n\t\t},\n\t};\n};\n\n/**\n * One orchestrated pagination: the props, the page clamping and the events of `PaginationFC`. It is a\n * plain object with closures, like `popover-button/item.ts`, so `kol-pagination` and\n * `kol-table-stateful` (which inherits the stateless table) compose it instead of inheriting it.\n *\n * Page, page size, page size options and the number of entries depend on each other: every change of\n * one of them clamps the current page to the available pages, and a clamped page is reported through\n * `onChangePage` and `changepage` with the `StateChange` event. Without a value, `page`, `pageSize` and\n * `max` keep the current one.\n */\nexport const createPaginationItem = (options: PaginationItemOptions): PaginationItem => {\n\tconst store = options.store ?? createLocalStore();\n\tconst translatePagination = translate('kol-pagination');\n\tconst buttons = createItemPool<ButtonItem>(\n\t\t() => createButtonItem(options.getEventTarget),\n\t\t(button) => button.syncListeners(),\n\t\t(button) => button.destroy(),\n\t);\n\tconst getButtonFcProps = (key: string, props: InternalButtonProps, rootAttributes?: ButtonItemRootAttributes): ButtonItemFcProps =>\n\t\tbuttons.get(key).getFcProps(props, rootAttributes);\n\tconst pageSizeSelects = createItemPool<PageSizeSelect>(\n\t\t() => new PageSizeSelect(options.getEventTarget, options.requestRender),\n\t\t(select) => select.sync(),\n\t\t(select) => select.destroy(),\n\t);\n\tlet pageSizeValue: number | undefined = 1;\n\tlet applied: PaginationInput = {};\n\n\tstore.set('label', translatePagination);\n\n\tconst reportPageChange = (event: Event, page: number): void => {\n\t\tsetTimeout(() => {\n\t\t\tstore.get('on').onChangePage?.(event, page);\n\t\t\tconst target = options.getEventTarget();\n\t\t\tif (target) {\n\t\t\t\tdispatchDomEvent(target, KolEvent.changePage, page);\n\t\t\t}\n\t\t});\n\t};\n\n\tconst syncPage = (page: number, pageSize: number | undefined, max: number): void => {\n\t\tconst clamped = clampPage(page, pageSize, max);\n\t\tif (clamped !== undefined) {\n\t\t\tstore.set('page', clamped);\n\t\t\treportPageChange(STATE_CHANGE_EVENT, clamped);\n\t\t}\n\t};\n\n\tconst applyPageSizeValue = (value?: number): void => {\n\t\tif (value === undefined || value === null) {\n\t\t\treturn;\n\t\t}\n\t\tpageSizeProp.apply(value, (pageSize) => {\n\t\t\tconst resolved = resolvePageSize(pageSize, store.get('pageSizeOptions'));\n\t\t\tstore.set('pageSize', resolved);\n\t\t\tsyncPage(store.get('page'), resolved, store.get('max'));\n\t\t});\n\t};\n\n\tconst applyLabel = (value: string | undefined, initial: boolean): void => {\n\t\tif (!initial) {\n\t\t\tremoveNavLabel(store.get('label'));\n\t\t}\n\t\tpaginationLabelProp.apply(value ?? translatePagination, (v) => store.set('label', v));\n\t\taddNavLabel(store.get('label'));\n\t};\n\n\tconst handlePageClick = (event: Event, page: number): void => {\n\t\tstore.get('on').onClick?.(event, page);\n\t\tconst target = options.getEventTarget();\n\t\tif (target) {\n\t\t\tdispatchDomEvent(target, KolEvent.click, page);\n\t\t}\n\t\treportPageChange(event, page);\n\t};\n\n\tconst handlePageSizeChange = (event: Event, value: unknown): void => {\n\t\tconst pageSize = parseInt(value as string);\n\t\tif (pageSize > 0 && pageSizeValue !== pageSize) {\n\t\t\tapplyPageSizeValue(pageSize);\n\t\t\tpageSizeValue = pageSize;\n\t\t\toptions.requestRender();\n\t\t\t// Reports the page size of the element when the timeout runs; it is the chosen one unless `_pageSize` changed meanwhile.\n\t\t\tsetTimeout(() => {\n\t\t\t\tconst current = pageSizeValue as number;\n\t\t\t\tstore.get('on').onChangePageSize?.(event, current);\n\t\t\t\tconst target = options.getEventTarget();\n\t\t\t\tif (target) {\n\t\t\t\t\tdispatchDomEvent(target, KolEvent.changePageSize, current);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t};\n\n\tconst pageSizeSelectCallbacks = { onChange: handlePageSizeChange };\n\tconst renderPageSizeSelect: PaginationFCProps['renderPageSizeSelect'] = (input) =>\n\t\tpageSizeSelects.get('page-size').render({ ...input, on: pageSizeSelectCallbacks });\n\n\t/** The targets are read when the button is clicked, from the current page and number of pages. */\n\tconst navigationCallbacks: PaginationFCProps['navigationCallbacks'] = {\n\t\tfirst: { onClick: (event: Event) => handlePageClick(event, 1) },\n\t\tlast: { onClick: (event: Event) => handlePageClick(event, getPageCount(store.get('max'), store.get('pageSize'))) },\n\t\tnext: { onClick: (event: Event) => handlePageClick(event, store.get('page') + 1) },\n\t\tprevious: { onClick: (event: Event) => handlePageClick(event, store.get('page') - 1) },\n\t};\n\n\tconst item: PaginationItem = {\n\t\tapplyBoundaryCount: (value) => boundaryCountProp.apply(value, (v) => store.set('boundaryCount', v)),\n\t\tapplyCustomClass: (value) => customClassProp.apply(value, (v) => store.set('customClass', v)),\n\t\tapplyHasButtons: (value) => paginationHasButtonsProp.apply(value, (v) => store.set('hasButtons', { ...store.get('hasButtons'), ...v })),\n\t\tapplyLabel: (value) => applyLabel(value, false),\n\t\tapplyMax: (value) => {\n\t\t\tif (value === undefined || value === null) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tpaginationMaxProp.apply(value, (max) => {\n\t\t\t\tstore.set('max', max);\n\t\t\t\tsyncPage(store.get('page'), store.get('pageSize'), max);\n\t\t\t});\n\t\t},\n\t\tapplyOn: (value) => paginationCallbacksProp.apply(value, (v) => store.set('on', v)),\n\t\tapplyPage: (value) => {\n\t\t\tif (value === undefined || value === null) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tpageProp.apply(value, (page) => {\n\t\t\t\tstore.set('page', page);\n\t\t\t\tsyncPage(page, store.get('pageSize'), store.get('max'));\n\t\t\t});\n\t\t},\n\t\tapplyPageSize: (value) => {\n\t\t\tapplyPageSizeValue(value);\n\t\t\tpageSizeValue = value;\n\t\t},\n\t\t/** Without options the page is clamped as if each entry were one page. */\n\t\tapplyPageSizeOptions: (value) =>\n\t\t\tpageSizeOptionsProp.apply(value, (pageSizeOptions) => {\n\t\t\t\tstore.set('pageSizeOptions', pageSizeOptions);\n\t\t\t\tlet pageSize: number | undefined;\n\t\t\t\tif (pageSizeOptions.length > 0) {\n\t\t\t\t\tpageSize = resolvePageSize(store.get('pageSize'), pageSizeOptions);\n\t\t\t\t\tstore.set('pageSize', pageSize);\n\t\t\t\t}\n\t\t\t\tsyncPage(store.get('page'), pageSize, store.get('max'));\n\t\t\t}),\n\t\tapplySiblingCount: (value) => siblingCountProp.apply(value, (v) => store.set('siblingCount', v)),\n\t\t/** Pagination buttons show the tooltip on top by default; the shared prop defaults to `'right'`. */\n\t\tapplyTooltipAlign: (value) => tooltipAlignProp.apply(value ?? 'top', (v) => store.set('tooltipAlign', v)),\n\t\tload: (input) => {\n\t\t\tapplied = { ...input };\n\t\t\titem.applyBoundaryCount(input.boundaryCount);\n\t\t\titem.applyCustomClass(input.customClass);\n\t\t\titem.applyHasButtons(input.hasButtons);\n\t\t\tapplyLabel(input.label, true);\n\t\t\titem.applyOn(input.on);\n\t\t\titem.applyPage(input.page);\n\t\t\titem.applyPageSize(input.pageSize);\n\t\t\titem.applyPageSizeOptions(input.pageSizeOptions);\n\t\t\titem.applySiblingCount(input.siblingCount);\n\t\t\titem.applyTooltipAlign(input.tooltipAlign);\n\t\t\titem.applyMax(input.max);\n\t\t\titem.applyPage(input.page);\n\t\t},\n\t\tupdate: (input) => {\n\t\t\tfor (const key of UPDATE_ORDER) {\n\t\t\t\tif (input[key] !== applied[key]) {\n\t\t\t\t\tapplied = { ...applied, [key]: input[key] };\n\t\t\t\t\t// A page size chosen in the select is the current one: passing it again changes nothing.\n\t\t\t\t\tif (key !== 'pageSize' || input.pageSize !== pageSizeValue) {\n\t\t\t\t\t\tappliers[key](input[key] as never);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tgetFcProps: () => {\n\t\t\tbuttons.beginRender();\n\t\t\tpageSizeSelects.beginRender();\n\t\t\treturn {\n\t\t\t\tboundaryCount: store.get('boundaryCount'),\n\t\t\t\tcustomClass: store.get('customClass'),\n\t\t\t\tgetButtonFcProps,\n\t\t\t\thandlePageClick,\n\t\t\t\thandlePageSizeChange,\n\t\t\t\thasButtons: store.get('hasButtons'),\n\t\t\t\tlabel: store.get('label'),\n\t\t\t\tmax: store.get('max'),\n\t\t\t\tnavigationCallbacks,\n\t\t\t\ton: store.get('on'),\n\t\t\t\tpage: store.get('page'),\n\t\t\t\tpageSize: store.get('pageSize'),\n\t\t\t\tpageSizeOptions: store.get('pageSizeOptions'),\n\t\t\t\trenderPageSizeSelect,\n\t\t\t\tsiblingCount: store.get('siblingCount'),\n\t\t\t\ttooltipAlign: store.get('tooltipAlign'),\n\t\t\t};\n\t\t},\n\t\tsync: () => {\n\t\t\tbuttons.endRender();\n\t\t\tpageSizeSelects.endRender();\n\t\t},\n\t\tdestroy: () => {\n\t\t\tremoveNavLabel(store.get('label'));\n\t\t\tbuttons.destroy();\n\t\t\tpageSizeSelects.destroy();\n\t\t},\n\t};\n\n\tconst appliers: { [K in keyof PaginationInput]-?: (value: PaginationInput[K]) => void } = {\n\t\tboundaryCount: item.applyBoundaryCount,\n\t\tcustomClass: item.applyCustomClass,\n\t\thasButtons: item.applyHasButtons,\n\t\tlabel: item.applyLabel,\n\t\tmax: item.applyMax,\n\t\ton: item.applyOn,\n\t\tpage: item.applyPage,\n\t\tpageSize: item.applyPageSize,\n\t\tpageSizeOptions: item.applyPageSizeOptions,\n\t\tsiblingCount: item.applySiblingCount,\n\t\ttooltipAlign: item.applyTooltipAlign,\n\t};\n\n\treturn item;\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 e,r as n,H as o}from"./index-DAKQV03B.js";import"./common-BqpMtheU.js";import{B as t}from"./base-web-component-3R1Dy3QK.js";import{l as i}from"./label-c9P7yC4V.js";import{B as a}from"./component-DhBTawyT.js";import"./isArray-CcrBs4JM.js";import"./tslib.es6-QNbPBOk5.js";import"./clsx-COFh-Vc8.js";import"./block-bem-DxQXsOt3.js";import"./bem-registry-CX5kvaqt.js";const l={optional:[i]};const r=()=>e(a,{block:"kol-abbr",component:"abbr"},e("slot",null));const s="@charset \"UTF-8\";\n/*\n* This file defines the layer order for all CSS layers used in KoliBri.\n* The order is important as it determines the cascade priority.\n*\n* Layer order (lowest to highest priority):\n* 1. kol-a11y - Accessibility defaults and requirements\n* 2. kol-global - Global component styles and resets\n* 3. kol-component - Component-specific styles\n* 4. kol-theme-global - Theme-specific global styles\n* 5. kol-theme-component - Theme-specific component styles\n* 6. kol-forced-colors - Defaults for forced colors and high contrast modes\n* 7. kol-theme-forced-colors - Theme-specific styles for forced colors and high contrast modes\n*/\n@layer kol-a11y, kol-global, kol-component, kol-theme-global, kol-theme-component, kol-forced-colors, kol-theme-forced-colors;\n/* forward the rem function */\n/*\n * Guards an interaction rule (`:hover`, `:active`, `:focus…`) against the disabled state.\n *\n * Two shapes are needed because the disabled marker sits on different elements: a native control\n * carries `disabled`, an anchor or summary carries `aria-disabled`, and a BEM wrapper carries a\n * `--disabled` modifier while its inner control carries the attribute.\n */\n/* Wrapper variant: asks the interactive element inside, which is where the attribute lives. */\n/*\n * This file contains all rules for accessibility.\n */\n@layer kol-a11y {\n :host {\n /*\n * Minimum size of interactive elements.\n *\n * The `max(…, 44px)` floor guarantees the WCAG 2.5.5 (AAA) target size of 44px:\n * `to-rem(44)` runs the value through a `calc()` rem round-trip which can lose\n * sub-pixel precision and resolve to e.g. 43.99px depending on the browser's\n * rounding, dropping just below the required minimum.\n */\n --a11y-min-size: max(calc(44 * 1rem / var(--kolibri-root-font-size, 16)), 44px);\n /*\n * No element should be used without verifying the contrast ratio of its background and font colors.\n * By initially setting the background color to white and the font color to black,\n * the contrast ratio is ensured and explicit adjustment is forced.\n */\n --kol-a11y-font-color: black;\n --kol-a11y-background-color: white;\n color: var(--kol-a11y-font-color);\n background-color: var(--kol-a11y-background-color);\n /*\n * Verdana is an accessible font that can be used without requiring additional loading time.\n */\n --kol-a11y-font-family: Verdana;\n font-family: var(--kol-a11y-font-family);\n /*\n * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\n /*\n * Text should be aligned left by default to provide a predictable starting point.\n */\n text-align: left;\n }\n * {\n /*\n * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n hyphens: auto;\n /*\n * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n word-break: break-word;\n }\n /*\n * All interactive elements should have a minimum size of to-rem(44).\n */\n /* input:not([type='checkbox'], [type='radio'], [type='range']), */\n /* option, */\n /* select, */\n /* textarea, */\n button,\n .kol-input .input {\n min-width: var(--a11y-min-size);\n min-height: var(--a11y-min-size);\n }\n /*\n * Some interactive elements should not inherit the font-family and font-size.\n */\n a,\n button,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n input,\n option,\n select,\n textarea {\n /*\n * All elements should inherit the text color from his parent element.\n */\n color: inherit;\n /*\n * All elements should inherit the font family from his parent element.\n */\n font-family: inherit;\n /*\n * All elements should inherit the font size from his parent element.\n */\n font-size: inherit;\n /*\n * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\n }\n /**\n * Sometimes we need the semantic element for accessibility reasons,\n * but we don't want to show it.\n *\n * - https://www.a11yproject.com/posts/how-to-hide-content/\n */\n .visually-hidden {\n position: fixed;\n top: 0;\n left: 0;\n width: 1px;\n height: 1px;\n overflow: hidden;\n white-space: nowrap;\n clip-path: inset(50%);\n }\n}\n/*\n * This file contains all rules for forced-colors and highcontrast modes\n * https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Values/system-color to see all color keywords the browsers are providing\n */\n@layer kol-forced-colors {\n @media (forced-colors: active) {\n .kol-button__text {\n color: ButtonText;\n background-color: ButtonFace;\n border: 2px solid ButtonBorder;\n }\n .kol-button--disabled .kol-button__text {\n color: GrayText;\n border-color: GrayText;\n }\n /*\n * Forced colors drop author colors, so the only way a disabled control still reads as\n * disabled is the `GrayText` system color. `kol-button` had it; the controls whose disabled\n * state is `aria-disabled` (anchor, summary) and the native form controls did not.\n */\n .kol-link__interactive-element[aria-disabled=true],\n .kol-accordion__heading[aria-disabled=true],\n .kol-details__heading[aria-disabled=true] {\n color: GrayText;\n }\n .kol-link__interactive-element[aria-disabled=true] .kol-icon,\n .kol-link__interactive-element[aria-disabled=true] .kol-span__label,\n .kol-accordion__heading[aria-disabled=true] .kol-icon,\n .kol-accordion__heading[aria-disabled=true] .kol-span__label,\n .kol-details__heading[aria-disabled=true] .kol-icon,\n .kol-details__heading[aria-disabled=true] .kol-span__label {\n color: GrayText;\n }\n input:disabled,\n select:disabled,\n textarea:disabled {\n color: GrayText;\n border-color: GrayText;\n }\n .kol-card,\n .kol-dialog,\n .kol-modal {\n color: CanvasText;\n background-color: Canvas;\n border: 1px solid ButtonBorder;\n }\n .kol-pagination__button--selected .kol-button {\n opacity: 1;\n }\n .kol-pagination__button--selected .kol-button__text {\n color: SelectedItemText;\n background-color: SelectedItem;\n }\n /* focus styles */\n .kol-button__interactive-element:focus-visible,\n .kol-link__interactive-element:focus-visible {\n outline: 2px solid Highlight;\n outline-offset: 2px;\n }\n }\n}\n@layer kol-global {\n /*\n * Dieses CSS stellt sicher, dass der Standard-Style\n * von A und Button resettet werden.\n */\n :is(a, button) {\n background-color: transparent;\n width: 100%;\n margin: 0;\n padding: 0;\n border: none;\n /* 100% needed for custom width from outside */\n }\n /*\n * Ensure elements with hidden attribute to be actually not visible\n * @see https://meowni.ca/hidden.is.a.lie.html\n */\n [hidden] {\n display: none !important;\n }\n .badge-text-hint {\n color: black;\n background-color: white;\n }\n}\n@layer kol-global {\n :host {\n /*\n * The max-width is needed to prevent the table from overflowing the\n * parent node, if the table is wider than the parent node.\n */\n max-width: 100%;\n font-size: calc(16 * 1rem / var(--kolibri-root-font-size, 16));\n }\n * {\n /*\n * We prefer to box-sizing: border-box for all elements.\n */\n box-sizing: border-box;\n }\n .kol-span {\n /* KolSpan is a layout component with icons in all directions and a label text in the middle. */\n display: flex;\n flex-flow: column;\n align-items: center;\n justify-content: center;\n /* The sub span in KolSpan is the horizontal span with icon left and right and the label text in the middle. */\n }\n .kol-span__container {\n display: flex;\n align-items: center;\n }\n a,\n button {\n cursor: pointer;\n }\n .kol-span .kol-span__label--hide-label .kol-span__label {\n display: none;\n }\n /* Reset browser agent style. */\n button:disabled {\n color: unset;\n }\n /* A disabled `fieldset` only groups its controls; `cursor` is inherited and would reach the\n operable info popover in its legend. */\n .disabled label,\n .disabled:focus-within label,\n [aria-disabled=true],\n [aria-disabled=true]:focus,\n [disabled]:where(:not(fieldset)),\n [disabled]:where(:not(fieldset)):focus {\n outline: none;\n cursor: not-allowed;\n }\n [aria-disabled=true]:focus .kol-span,\n [disabled]:focus .kol-span {\n outline: none !important;\n }\n .hastooltip {\n z-index: 900 !important;\n }\n}\n@layer kol-component {\n :host > abbr {\n text-decoration: underline dashed;\n cursor: help;\n }\n}";const d=class extends t{constructor(e){super();n(this,e)}watchLabel(e){i.apply(e,(e=>this.setRenderProp("label",e)))}componentWillLoad(){this.initRenderProps(l);this.watchLabel(this._label)}render(){return e(o,{key:"dcf505dc1bca158fd7b09a0089ecea3661f8d76c"},e(r,{key:"6f471aeb8b66b0af95f76396909d50e9542806cb",label:this.getRenderProp("label")}))}static get watchers(){return{_label:["watchLabel"]}}};d.style={default:s};export{d as kol_abbr};
4
+ import{h as e,r as n,H as o}from"./index-wY4pHWJG.js";import"./common-BqpMtheU.js";import{B as t}from"./base-web-component-3R1Dy3QK.js";import{l as i}from"./label-c9P7yC4V.js";import{B as a}from"./component-D30YHxgS.js";import"./isArray-CcrBs4JM.js";import"./tslib.es6-QNbPBOk5.js";import"./clsx-COFh-Vc8.js";import"./block-bem-DxQXsOt3.js";import"./bem-registry-CX5kvaqt.js";const l={optional:[i]};const r=()=>e(a,{block:"kol-abbr",component:"abbr"},e("slot",null));const s="@charset \"UTF-8\";\n/*\n* This file defines the layer order for all CSS layers used in KoliBri.\n* The order is important as it determines the cascade priority.\n*\n* Layer order (lowest to highest priority):\n* 1. kol-a11y - Accessibility defaults and requirements\n* 2. kol-global - Global component styles and resets\n* 3. kol-component - Component-specific styles\n* 4. kol-theme-global - Theme-specific global styles\n* 5. kol-theme-component - Theme-specific component styles\n* 6. kol-forced-colors - Defaults for forced colors and high contrast modes\n* 7. kol-theme-forced-colors - Theme-specific styles for forced colors and high contrast modes\n*/\n@layer kol-a11y, kol-global, kol-component, kol-theme-global, kol-theme-component, kol-forced-colors, kol-theme-forced-colors;\n/* forward the rem function */\n/*\n * Guards an interaction rule (`:hover`, `:active`, `:focus…`) against the disabled state.\n *\n * Two shapes are needed because the disabled marker sits on different elements: a native control\n * carries `disabled`, an anchor or summary carries `aria-disabled`, and a BEM wrapper carries a\n * `--disabled` modifier while its inner control carries the attribute.\n */\n/* Wrapper variant: asks the interactive element inside, which is where the attribute lives. */\n/*\n * This file contains all rules for accessibility.\n */\n@layer kol-a11y {\n :host {\n /*\n * Minimum size of interactive elements.\n *\n * The `max(…, 44px)` floor guarantees the WCAG 2.5.5 (AAA) target size of 44px:\n * `to-rem(44)` runs the value through a `calc()` rem round-trip which can lose\n * sub-pixel precision and resolve to e.g. 43.99px depending on the browser's\n * rounding, dropping just below the required minimum.\n */\n --a11y-min-size: max(calc(44 * 1rem / var(--kolibri-root-font-size, 16)), 44px);\n /*\n * No element should be used without verifying the contrast ratio of its background and font colors.\n * By initially setting the background color to white and the font color to black,\n * the contrast ratio is ensured and explicit adjustment is forced.\n */\n --kol-a11y-font-color: black;\n --kol-a11y-background-color: white;\n color: var(--kol-a11y-font-color);\n background-color: var(--kol-a11y-background-color);\n /*\n * Verdana is an accessible font that can be used without requiring additional loading time.\n */\n --kol-a11y-font-family: Verdana;\n font-family: var(--kol-a11y-font-family);\n /*\n * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\n /*\n * Text should be aligned left by default to provide a predictable starting point.\n */\n text-align: left;\n }\n * {\n /*\n * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n hyphens: auto;\n /*\n * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n word-break: break-word;\n }\n /*\n * All interactive elements should have a minimum size of to-rem(44).\n */\n /* input:not([type='checkbox'], [type='radio'], [type='range']), */\n /* option, */\n /* select, */\n /* textarea, */\n button,\n .kol-input .input {\n min-width: var(--a11y-min-size);\n min-height: var(--a11y-min-size);\n }\n /*\n * Some interactive elements should not inherit the font-family and font-size.\n */\n a,\n button,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n input,\n option,\n select,\n textarea {\n /*\n * All elements should inherit the text color from his parent element.\n */\n color: inherit;\n /*\n * All elements should inherit the font family from his parent element.\n */\n font-family: inherit;\n /*\n * All elements should inherit the font size from his parent element.\n */\n font-size: inherit;\n /*\n * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\n }\n /**\n * Sometimes we need the semantic element for accessibility reasons,\n * but we don't want to show it.\n *\n * - https://www.a11yproject.com/posts/how-to-hide-content/\n */\n .visually-hidden {\n position: fixed;\n top: 0;\n left: 0;\n width: 1px;\n height: 1px;\n overflow: hidden;\n white-space: nowrap;\n clip-path: inset(50%);\n }\n}\n/*\n * This file contains all rules for forced-colors and highcontrast modes\n * https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Values/system-color to see all color keywords the browsers are providing\n */\n@layer kol-forced-colors {\n @media (forced-colors: active) {\n .kol-button__text {\n color: ButtonText;\n background-color: ButtonFace;\n border: 2px solid ButtonBorder;\n }\n .kol-button--disabled .kol-button__text {\n color: GrayText;\n border-color: GrayText;\n }\n /*\n * Forced colors drop author colors, so the only way a disabled control still reads as\n * disabled is the `GrayText` system color. `kol-button` had it; the controls whose disabled\n * state is `aria-disabled` (anchor, summary) and the native form controls did not.\n */\n .kol-link__interactive-element[aria-disabled=true],\n .kol-accordion__heading[aria-disabled=true],\n .kol-details__heading[aria-disabled=true] {\n color: GrayText;\n }\n .kol-link__interactive-element[aria-disabled=true] .kol-icon,\n .kol-link__interactive-element[aria-disabled=true] .kol-span__label,\n .kol-accordion__heading[aria-disabled=true] .kol-icon,\n .kol-accordion__heading[aria-disabled=true] .kol-span__label,\n .kol-details__heading[aria-disabled=true] .kol-icon,\n .kol-details__heading[aria-disabled=true] .kol-span__label {\n color: GrayText;\n }\n input:disabled,\n select:disabled,\n textarea:disabled {\n color: GrayText;\n border-color: GrayText;\n }\n .kol-card,\n .kol-dialog,\n .kol-modal {\n color: CanvasText;\n background-color: Canvas;\n border: 1px solid ButtonBorder;\n }\n .kol-pagination__button--selected .kol-button {\n opacity: 1;\n }\n .kol-pagination__button--selected .kol-button__text {\n color: SelectedItemText;\n background-color: SelectedItem;\n }\n /* focus styles */\n .kol-button__interactive-element:focus-visible,\n .kol-link__interactive-element:focus-visible {\n outline: 2px solid Highlight;\n outline-offset: 2px;\n }\n }\n}\n@layer kol-global {\n /*\n * Dieses CSS stellt sicher, dass der Standard-Style\n * von A und Button resettet werden.\n */\n :is(a, button) {\n background-color: transparent;\n width: 100%;\n margin: 0;\n padding: 0;\n border: none;\n /* 100% needed for custom width from outside */\n }\n /*\n * Ensure elements with hidden attribute to be actually not visible\n * @see https://meowni.ca/hidden.is.a.lie.html\n */\n [hidden] {\n display: none !important;\n }\n .badge-text-hint {\n color: black;\n background-color: white;\n }\n}\n@layer kol-global {\n :host {\n /*\n * The max-width is needed to prevent the table from overflowing the\n * parent node, if the table is wider than the parent node.\n */\n max-width: 100%;\n font-size: calc(16 * 1rem / var(--kolibri-root-font-size, 16));\n }\n * {\n /*\n * We prefer to box-sizing: border-box for all elements.\n */\n box-sizing: border-box;\n }\n .kol-span {\n /* KolSpan is a layout component with icons in all directions and a label text in the middle. */\n display: flex;\n flex-flow: column;\n align-items: center;\n justify-content: center;\n /* The sub span in KolSpan is the horizontal span with icon left and right and the label text in the middle. */\n }\n .kol-span__container {\n display: flex;\n align-items: center;\n }\n a,\n button {\n cursor: pointer;\n }\n .kol-span .kol-span__label--hide-label .kol-span__label {\n display: none;\n }\n /* Reset browser agent style. */\n button:disabled {\n color: unset;\n }\n /* A disabled `fieldset` only groups its controls; `cursor` is inherited and would reach the\n operable info popover in its legend. */\n .disabled label,\n .disabled:focus-within label,\n [aria-disabled=true],\n [aria-disabled=true]:focus,\n [disabled]:where(:not(fieldset)),\n [disabled]:where(:not(fieldset)):focus {\n outline: none;\n cursor: not-allowed;\n }\n [aria-disabled=true]:focus .kol-span,\n [disabled]:focus .kol-span {\n outline: none !important;\n }\n .hastooltip {\n z-index: 900 !important;\n }\n}\n@layer kol-component {\n :host > abbr {\n text-decoration: underline dashed;\n cursor: help;\n }\n}";const d=class extends t{constructor(e){super();n(this,e)}watchLabel(e){i.apply(e,(e=>this.setRenderProp("label",e)))}componentWillLoad(){this.initRenderProps(l);this.watchLabel(this._label)}render(){return e(o,{key:"dcf505dc1bca158fd7b09a0089ecea3661f8d76c"},e(r,{key:"6f471aeb8b66b0af95f76396909d50e9542806cb",label:this.getRenderProp("label")}))}static get watchers(){return{_label:["watchLabel"]}}};d.style={default:s};export{d as kol_abbr};
5
5
  //# sourceMappingURL=kol-abbr.entry.js.map
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * KoliBri - The accessible HTML-Standard
3
3
  */
4
- import{r as n,h as e,H as o,g as t}from"./index-DAKQV03B.js";import{_ as i}from"./tslib.es6-QNbPBOk5.js";import{X as a}from"./common-BqpMtheU.js";import{B as l}from"./base-web-component-3R1Dy3QK.js";import{D as r,c as s,a as c,b as d,d as h,C as p}from"./toggle-handler-aTxO0Wem.js";import{l as b}from"./level-Q5lBISho.js";import{d as f}from"./disabled-CdyeAMlW.js";import{l as m}from"./label-c9P7yC4V.js";import{o as u}from"./open-BK72Y-b2.js";import{c as k,a as g}from"./dev.utils-BGy8dbtQ.js";import{c as y,d as w,a as v}from"./element-interaction-Cy9tx3Sx.js";import"./isArray-CcrBs4JM.js";import"./Heading-BctDgC7M.js";import"./clsx-COFh-Vc8.js";import"./block-bem-DxQXsOt3.js";import"./bem-registry-CX5kvaqt.js";import"./component-QCFfSS76.js";import"./component-DKS73hKY.js";import"./events-CRHxtwup.js";import"./element-focus-Cp994Rrk.js";const x='@charset "UTF-8";\n/*\n* This file defines the layer order for all CSS layers used in KoliBri.\n* The order is important as it determines the cascade priority.\n*\n* Layer order (lowest to highest priority):\n* 1. kol-a11y - Accessibility defaults and requirements\n* 2. kol-global - Global component styles and resets\n* 3. kol-component - Component-specific styles\n* 4. kol-theme-global - Theme-specific global styles\n* 5. kol-theme-component - Theme-specific component styles\n* 6. kol-forced-colors - Defaults for forced colors and high contrast modes\n* 7. kol-theme-forced-colors - Theme-specific styles for forced colors and high contrast modes\n*/\n@layer kol-a11y, kol-global, kol-component, kol-theme-global, kol-theme-component, kol-forced-colors, kol-theme-forced-colors;\n/* forward the rem function */\n/*\n * Guards an interaction rule (`:hover`, `:active`, `:focus…`) against the disabled state.\n *\n * Two shapes are needed because the disabled marker sits on different elements: a native control\n * carries `disabled`, an anchor or summary carries `aria-disabled`, and a BEM wrapper carries a\n * `--disabled` modifier while its inner control carries the attribute.\n */\n/* Wrapper variant: asks the interactive element inside, which is where the attribute lives. */\n/*\n * This file contains all rules for accessibility.\n */\n@layer kol-a11y {\n :host {\n /*\n * Minimum size of interactive elements.\n *\n * The `max(…, 44px)` floor guarantees the WCAG 2.5.5 (AAA) target size of 44px:\n * `to-rem(44)` runs the value through a `calc()` rem round-trip which can lose\n * sub-pixel precision and resolve to e.g. 43.99px depending on the browser\'s\n * rounding, dropping just below the required minimum.\n */\n --a11y-min-size: max(calc(44 * 1rem / var(--kolibri-root-font-size, 16)), 44px);\n /*\n * No element should be used without verifying the contrast ratio of its background and font colors.\n * By initially setting the background color to white and the font color to black,\n * the contrast ratio is ensured and explicit adjustment is forced.\n */\n --kol-a11y-font-color: black;\n --kol-a11y-background-color: white;\n color: var(--kol-a11y-font-color);\n background-color: var(--kol-a11y-background-color);\n /*\n * Verdana is an accessible font that can be used without requiring additional loading time.\n */\n --kol-a11y-font-family: Verdana;\n font-family: var(--kol-a11y-font-family);\n /*\n * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\n /*\n * Text should be aligned left by default to provide a predictable starting point.\n */\n text-align: left;\n }\n * {\n /*\n * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n hyphens: auto;\n /*\n * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n word-break: break-word;\n }\n /*\n * All interactive elements should have a minimum size of to-rem(44).\n */\n /* input:not([type=\'checkbox\'], [type=\'radio\'], [type=\'range\']), */\n /* option, */\n /* select, */\n /* textarea, */\n button,\n .kol-input .input {\n min-width: var(--a11y-min-size);\n min-height: var(--a11y-min-size);\n }\n /*\n * Some interactive elements should not inherit the font-family and font-size.\n */\n a,\n button,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n input,\n option,\n select,\n textarea {\n /*\n * All elements should inherit the text color from his parent element.\n */\n color: inherit;\n /*\n * All elements should inherit the font family from his parent element.\n */\n font-family: inherit;\n /*\n * All elements should inherit the font size from his parent element.\n */\n font-size: inherit;\n /*\n * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\n }\n /**\n * Sometimes we need the semantic element for accessibility reasons,\n * but we don\'t want to show it.\n *\n * - https://www.a11yproject.com/posts/how-to-hide-content/\n */\n .visually-hidden {\n position: fixed;\n top: 0;\n left: 0;\n width: 1px;\n height: 1px;\n overflow: hidden;\n white-space: nowrap;\n clip-path: inset(50%);\n }\n}\n/*\n * This file contains all rules for forced-colors and highcontrast modes\n * https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Values/system-color to see all color keywords the browsers are providing\n */\n@layer kol-forced-colors {\n @media (forced-colors: active) {\n .kol-button__text {\n color: ButtonText;\n background-color: ButtonFace;\n border: 2px solid ButtonBorder;\n }\n .kol-button--disabled .kol-button__text {\n color: GrayText;\n border-color: GrayText;\n }\n /*\n * Forced colors drop author colors, so the only way a disabled control still reads as\n * disabled is the `GrayText` system color. `kol-button` had it; the controls whose disabled\n * state is `aria-disabled` (anchor, summary) and the native form controls did not.\n */\n .kol-link__interactive-element[aria-disabled=true],\n .kol-accordion__heading[aria-disabled=true],\n .kol-details__heading[aria-disabled=true] {\n color: GrayText;\n }\n .kol-link__interactive-element[aria-disabled=true] .kol-icon,\n .kol-link__interactive-element[aria-disabled=true] .kol-span__label,\n .kol-accordion__heading[aria-disabled=true] .kol-icon,\n .kol-accordion__heading[aria-disabled=true] .kol-span__label,\n .kol-details__heading[aria-disabled=true] .kol-icon,\n .kol-details__heading[aria-disabled=true] .kol-span__label {\n color: GrayText;\n }\n input:disabled,\n select:disabled,\n textarea:disabled {\n color: GrayText;\n border-color: GrayText;\n }\n .kol-card,\n .kol-dialog,\n .kol-modal {\n color: CanvasText;\n background-color: Canvas;\n border: 1px solid ButtonBorder;\n }\n .kol-pagination__button--selected .kol-button {\n opacity: 1;\n }\n .kol-pagination__button--selected .kol-button__text {\n color: SelectedItemText;\n background-color: SelectedItem;\n }\n /* focus styles */\n .kol-button__interactive-element:focus-visible,\n .kol-link__interactive-element:focus-visible {\n outline: 2px solid Highlight;\n outline-offset: 2px;\n }\n }\n}\n@layer kol-global {\n /*\n * Dieses CSS stellt sicher, dass der Standard-Style\n * von A und Button resettet werden.\n */\n :is(a, button) {\n background-color: transparent;\n width: 100%;\n margin: 0;\n padding: 0;\n border: none;\n /* 100% needed for custom width from outside */\n }\n /*\n * Ensure elements with hidden attribute to be actually not visible\n * @see https://meowni.ca/hidden.is.a.lie.html\n */\n [hidden] {\n display: none !important;\n }\n .badge-text-hint {\n color: black;\n background-color: white;\n }\n}\n@layer kol-global {\n :host {\n /*\n * The max-width is needed to prevent the table from overflowing the\n * parent node, if the table is wider than the parent node.\n */\n max-width: 100%;\n font-size: calc(16 * 1rem / var(--kolibri-root-font-size, 16));\n }\n * {\n /*\n * We prefer to box-sizing: border-box for all elements.\n */\n box-sizing: border-box;\n }\n .kol-span {\n /* KolSpan is a layout component with icons in all directions and a label text in the middle. */\n display: flex;\n flex-flow: column;\n align-items: center;\n justify-content: center;\n /* The sub span in KolSpan is the horizontal span with icon left and right and the label text in the middle. */\n }\n .kol-span__container {\n display: flex;\n align-items: center;\n }\n a,\n button {\n cursor: pointer;\n }\n .kol-span .kol-span__label--hide-label .kol-span__label {\n display: none;\n }\n /* Reset browser agent style. */\n button:disabled {\n color: unset;\n }\n /* A disabled `fieldset` only groups its controls; `cursor` is inherited and would reach the\n operable info popover in its legend. */\n .disabled label,\n .disabled:focus-within label,\n [aria-disabled=true],\n [aria-disabled=true]:focus,\n [disabled]:where(:not(fieldset)),\n [disabled]:where(:not(fieldset)):focus {\n outline: none;\n cursor: not-allowed;\n }\n [aria-disabled=true]:focus .kol-span,\n [disabled]:focus .kol-span {\n outline: none !important;\n }\n .hastooltip {\n z-index: 900 !important;\n }\n}\n@layer kol-component {\n :host {\n display: block;\n }\n}\n/* For animation technique see https://css-tricks.com/css-grid-can-do-auto-height-transitions/ */\n/*\n * Base styles for a collapsible built on `<details>`/`<summary>`: `kol-accordion` and `kol-details`\n * render the same DOM under their own block, so each includes this mixin with its block name.\n *\n * The transition duration comes from the theme\'s `collapsibleTransitionMs` feature flag, which the\n * component writes to `--collapsible-transition-duration` on `<details>`.\n */\n@font-face {\n font-family: "kolicons";\n src: url("kolicons.eot?t=1791539188494"); /* IE9*/\n src: url("kolicons.eot?t=1791539188494#iefix") format("embedded-opentype"), url("kolicons.woff2?t=1791539188494") format("woff2"), url("kolicons.woff?t=1791539188494") format("woff"), url("kolicons.ttf?t=1791539188494") format("truetype"), url("kolicons.svg?t=1791539188494#kolicons") format("svg"); /* iOS 4.1- */\n}\n@layer kol-component {\n [class^=kolicon-], [class*=" kolicon-"] {\n font-family: "kolicons";\n font-style: normal;\n font-weight: 400;\n line-height: 1em;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n }\n .kolicon-alert-error::before {\n content: "\\ea01";\n }\n .kolicon-alert-info::before {\n content: "\\ea02";\n }\n .kolicon-alert-success::before {\n content: "\\ea03";\n }\n .kolicon-alert-warning::before {\n content: "\\ea04";\n }\n .kolicon-check::before {\n content: "\\ea05";\n }\n .kolicon-chevron-double-left::before {\n content: "\\ea06";\n }\n .kolicon-chevron-double-right::before {\n content: "\\ea07";\n }\n .kolicon-chevron-down::before {\n content: "\\ea08";\n }\n .kolicon-chevron-left::before {\n content: "\\ea09";\n }\n .kolicon-chevron-right::before {\n content: "\\ea0a";\n }\n .kolicon-chevron-up::before {\n content: "\\ea0b";\n }\n .kolicon-cogwheel::before {\n content: "\\ea0c";\n }\n .kolicon-cross::before {\n content: "\\ea0d";\n }\n .kolicon-eye-closed::before {\n content: "\\ea0e";\n }\n .kolicon-eye::before {\n content: "\\ea0f";\n }\n .kolicon-house::before {\n content: "\\ea10";\n }\n .kolicon-kolibri::before {\n content: "\\ea11";\n }\n .kolicon-link-external::before {\n content: "\\ea12";\n }\n .kolicon-link::before {\n content: "\\ea13";\n }\n .kolicon-minus::before {\n content: "\\ea14";\n }\n .kolicon-pin-pinned::before {\n content: "\\ea15";\n }\n .kolicon-pin-unpinned::before {\n content: "\\ea16";\n }\n .kolicon-plus::before {\n content: "\\ea17";\n }\n .kolicon-settings::before {\n content: "\\ea18";\n }\n .kolicon-sort-asc::before {\n content: "\\ea19";\n }\n .kolicon-sort-desc::before {\n content: "\\ea1a";\n }\n .kolicon-sort-neutral::before {\n content: "\\ea1b";\n }\n .kolicon-up::before {\n content: "\\ea1c";\n }\n .kolicon-version::before {\n content: "\\ea1d";\n }\n}\n@layer kol-component {\n .kol-accordion {\n /* `<summary>` is the toggle control and carries the box of the button it stands in for. */\n }\n .kol-accordion__heading {\n display: flex;\n min-height: var(--a11y-min-size);\n /* The `not-allowed` reset for disabled controls lives in `kol-global`, which loses to\n `kol-component` whatever the specificity (see `_layer-order.scss`). The pointer has to\n exclude the disabled summary itself, or it wins and a dead control looks clickable. */\n }\n .kol-accordion__heading:not([aria-disabled=true]) {\n cursor: pointer;\n }\n .kol-accordion__heading {\n /* Baseline box for the flex container; without it the surrounding inline flow shifts by 1px. */\n }\n .kol-accordion__heading::before {\n content: "​";\n }\n .kol-accordion__heading {\n /* The heading fills the row; the label span is the flex container inside it. */\n }\n .kol-accordion__heading > .kol-headline {\n display: flex;\n flex: 1;\n margin: 0;\n text-align: left;\n /* Form controls do not inherit font-weight (see `a11y.scss`); themes weight the label further in. */\n font-weight: 400;\n }\n .kol-accordion__heading > .kol-headline > .kol-span {\n flex: 1 0 100%;\n /* `.kol-span` centres its column (`_global.scss`); the summary label is start-aligned. */\n align-items: flex-start;\n }\n @media (prefers-reduced-motion) {\n .kol-accordion__wrapper-animation, .kol-accordion__wrapper {\n transition: none !important;\n }\n }\n .kol-accordion {\n /* @see https://github.com/public-ui/kolibri/issues/5952 */\n }\n @media print {\n .kol-accordion:not(.kol-accordion--open) .kol-accordion__wrapper-animation {\n display: none;\n }\n }\n .kol-accordion__wrapper {\n /* Forces the element into its own GPU compositing layer (via 3D transform). Helps prevent rendering/layout bugs (e.g. #7511) and may improve animation performance. */\n transform: translateZ(0);\n display: grid;\n grid-template-columns: minmax(0, 1fr);\n grid-template-rows: 0fr;\n transition: grid-template-rows var(--collapsible-transition-duration, 0.3s);\n }\n .kol-accordion__wrapper-animation {\n opacity: 0;\n transform: scaleY(0);\n transform-origin: top;\n min-height: 0;\n /* This property is important to keep in sync with the visual transition (template-rows). Without it interactive elements within the accordion would stay focusable. */\n visibility: hidden;\n transition: transform var(--collapsible-transition-duration, 0.3s), opacity var(--collapsible-transition-duration, 0.3s), visibility var(--collapsible-transition-duration, 0.3s);\n }\n .kol-accordion--open .kol-accordion__wrapper {\n grid-template-rows: 1fr;\n }\n .kol-accordion--open .kol-accordion__wrapper-animation {\n opacity: 1;\n transform: scaleY(1);\n visibility: visible;\n }\n .kol-accordion--open:focus-within {\n position: relative;\n z-index: 100;\n }\n .kol-icon {\n color: inherit;\n display: inline-block;\n font-size: inherit;\n font-weight: inherit;\n line-height: inherit;\n }\n}';const _=class extends l{constructor(e){super();n(this,e);this.accordionId=k("accordion");this.controlId=g(this.accordionId,"control");this.detailsOpen=false;this.expanded=false;this.headingId=g(this.accordionId,"heading");this.transitionMs=r;this.ctaRef=y((()=>this.getRenderProp("disabled")===true));this.hasLoaded=false;this.openAnimation=s({getTransitionMs:()=>this.transitionMs,setDetailsOpen:n=>this.detailsOpen=n,setExpanded:n=>this.expanded=n});this.handleToggle=c({getHost:()=>this.host,getOn:()=>this.getRenderProp("on"),isDisabled:()=>this.getRenderProp("disabled")===true,isOpen:()=>this.getRenderProp("open")===true,setOpen:n=>this._open=n});this._disabled=false;this._level=0;this._open=false}watchDisabled(n){f.apply(n,(n=>this.setRenderProp("disabled",n)))}watchLabel(n){m.apply(n,(n=>this.setRenderProp("label",n)))}watchLevel(n){b.apply(n,(n=>this.setRenderProp("level",n)))}watchOn(n){d.apply(n,(n=>this.setRenderProp("on",n)))}watchOpen(n){u.apply(n,(n=>{this.setRenderProp("open",n);this.openAnimation.syncOpen(n,this.hasLoaded)}))}async focus(n){}async click(){}componentWillLoad(){var n;this.initRenderProps(h);this.transitionMs=(n=a("collapsibleTransitionMs",this.host))!==null&&n!==void 0?n:r;this.watchDisabled(this._disabled);this.watchLabel(this._label);this.watchLevel(this._level);this.watchOn(this._on);this.watchOpen(this._open)}componentDidLoad(){this.hasLoaded=true}disconnectedCallback(){this.openAnimation.dispose()}render(){return e(o,{key:"d9be006e54ad72ab5f0504895974aa400bc3d149"},e(p,{key:"d068e116b608eb39abacce0a2b2389fbb04118e8",block:"kol-accordion",controlId:this.controlId,detailsOpen:this.detailsOpen,disabled:this.getRenderProp("disabled"),expanded:this.expanded,handleToggle:this.handleToggle,headingId:this.headingId,icons:this.getRenderProp("open")?"kolicon-chevron-down":"kolicon-chevron-right",label:this.getRenderProp("label"),level:this.getRenderProp("level"),on:this.getRenderProp("on"),open:this.getRenderProp("open"),refHeadingButton:this.ctaRef,transitionMs:this.transitionMs},e("slot",{key:"89a15577e70053eb6412d03c5eee7916115a7994"})))}get host(){return t(this)}static get watchers(){return{_disabled:["watchDisabled"],_label:["watchLabel"],_level:["watchLevel"],_on:["watchOn"],_open:["watchOpen"]}}};i([w("ctaRef")],_.prototype,"focus",null);i([v("ctaRef")],_.prototype,"click",null);_.style={default:x};export{_ as kol_accordion};
4
+ import{r as n,h as e,H as o,g as t}from"./index-wY4pHWJG.js";import{_ as i}from"./tslib.es6-QNbPBOk5.js";import{X as a}from"./common-BqpMtheU.js";import{B as l}from"./base-web-component-3R1Dy3QK.js";import{D as r,c as s,a as c,b as d,d as h,C as p}from"./toggle-handler-VctiltrE.js";import{l as b}from"./level-Q5lBISho.js";import{d as f}from"./disabled-CdyeAMlW.js";import{l as m}from"./label-c9P7yC4V.js";import{o as u}from"./open-BK72Y-b2.js";import{c as k,a as g}from"./dev.utils-DDqySnXB.js";import{c as y,d as w,a as v}from"./element-interaction-Cy9tx3Sx.js";import"./isArray-CcrBs4JM.js";import"./Heading-DYEtnAIe.js";import"./clsx-COFh-Vc8.js";import"./block-bem-DxQXsOt3.js";import"./bem-registry-CX5kvaqt.js";import"./component-DoCNds1d.js";import"./component-C4dhT4Ba.js";import"./events-CRHxtwup.js";import"./element-focus-Cp994Rrk.js";const x='@charset "UTF-8";\n/*\n* This file defines the layer order for all CSS layers used in KoliBri.\n* The order is important as it determines the cascade priority.\n*\n* Layer order (lowest to highest priority):\n* 1. kol-a11y - Accessibility defaults and requirements\n* 2. kol-global - Global component styles and resets\n* 3. kol-component - Component-specific styles\n* 4. kol-theme-global - Theme-specific global styles\n* 5. kol-theme-component - Theme-specific component styles\n* 6. kol-forced-colors - Defaults for forced colors and high contrast modes\n* 7. kol-theme-forced-colors - Theme-specific styles for forced colors and high contrast modes\n*/\n@layer kol-a11y, kol-global, kol-component, kol-theme-global, kol-theme-component, kol-forced-colors, kol-theme-forced-colors;\n/* forward the rem function */\n/*\n * Guards an interaction rule (`:hover`, `:active`, `:focus…`) against the disabled state.\n *\n * Two shapes are needed because the disabled marker sits on different elements: a native control\n * carries `disabled`, an anchor or summary carries `aria-disabled`, and a BEM wrapper carries a\n * `--disabled` modifier while its inner control carries the attribute.\n */\n/* Wrapper variant: asks the interactive element inside, which is where the attribute lives. */\n/*\n * This file contains all rules for accessibility.\n */\n@layer kol-a11y {\n :host {\n /*\n * Minimum size of interactive elements.\n *\n * The `max(…, 44px)` floor guarantees the WCAG 2.5.5 (AAA) target size of 44px:\n * `to-rem(44)` runs the value through a `calc()` rem round-trip which can lose\n * sub-pixel precision and resolve to e.g. 43.99px depending on the browser\'s\n * rounding, dropping just below the required minimum.\n */\n --a11y-min-size: max(calc(44 * 1rem / var(--kolibri-root-font-size, 16)), 44px);\n /*\n * No element should be used without verifying the contrast ratio of its background and font colors.\n * By initially setting the background color to white and the font color to black,\n * the contrast ratio is ensured and explicit adjustment is forced.\n */\n --kol-a11y-font-color: black;\n --kol-a11y-background-color: white;\n color: var(--kol-a11y-font-color);\n background-color: var(--kol-a11y-background-color);\n /*\n * Verdana is an accessible font that can be used without requiring additional loading time.\n */\n --kol-a11y-font-family: Verdana;\n font-family: var(--kol-a11y-font-family);\n /*\n * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\n /*\n * Text should be aligned left by default to provide a predictable starting point.\n */\n text-align: left;\n }\n * {\n /*\n * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n hyphens: auto;\n /*\n * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n word-break: break-word;\n }\n /*\n * All interactive elements should have a minimum size of to-rem(44).\n */\n /* input:not([type=\'checkbox\'], [type=\'radio\'], [type=\'range\']), */\n /* option, */\n /* select, */\n /* textarea, */\n button,\n .kol-input .input {\n min-width: var(--a11y-min-size);\n min-height: var(--a11y-min-size);\n }\n /*\n * Some interactive elements should not inherit the font-family and font-size.\n */\n a,\n button,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n input,\n option,\n select,\n textarea {\n /*\n * All elements should inherit the text color from his parent element.\n */\n color: inherit;\n /*\n * All elements should inherit the font family from his parent element.\n */\n font-family: inherit;\n /*\n * All elements should inherit the font size from his parent element.\n */\n font-size: inherit;\n /*\n * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\n }\n /**\n * Sometimes we need the semantic element for accessibility reasons,\n * but we don\'t want to show it.\n *\n * - https://www.a11yproject.com/posts/how-to-hide-content/\n */\n .visually-hidden {\n position: fixed;\n top: 0;\n left: 0;\n width: 1px;\n height: 1px;\n overflow: hidden;\n white-space: nowrap;\n clip-path: inset(50%);\n }\n}\n/*\n * This file contains all rules for forced-colors and highcontrast modes\n * https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Values/system-color to see all color keywords the browsers are providing\n */\n@layer kol-forced-colors {\n @media (forced-colors: active) {\n .kol-button__text {\n color: ButtonText;\n background-color: ButtonFace;\n border: 2px solid ButtonBorder;\n }\n .kol-button--disabled .kol-button__text {\n color: GrayText;\n border-color: GrayText;\n }\n /*\n * Forced colors drop author colors, so the only way a disabled control still reads as\n * disabled is the `GrayText` system color. `kol-button` had it; the controls whose disabled\n * state is `aria-disabled` (anchor, summary) and the native form controls did not.\n */\n .kol-link__interactive-element[aria-disabled=true],\n .kol-accordion__heading[aria-disabled=true],\n .kol-details__heading[aria-disabled=true] {\n color: GrayText;\n }\n .kol-link__interactive-element[aria-disabled=true] .kol-icon,\n .kol-link__interactive-element[aria-disabled=true] .kol-span__label,\n .kol-accordion__heading[aria-disabled=true] .kol-icon,\n .kol-accordion__heading[aria-disabled=true] .kol-span__label,\n .kol-details__heading[aria-disabled=true] .kol-icon,\n .kol-details__heading[aria-disabled=true] .kol-span__label {\n color: GrayText;\n }\n input:disabled,\n select:disabled,\n textarea:disabled {\n color: GrayText;\n border-color: GrayText;\n }\n .kol-card,\n .kol-dialog,\n .kol-modal {\n color: CanvasText;\n background-color: Canvas;\n border: 1px solid ButtonBorder;\n }\n .kol-pagination__button--selected .kol-button {\n opacity: 1;\n }\n .kol-pagination__button--selected .kol-button__text {\n color: SelectedItemText;\n background-color: SelectedItem;\n }\n /* focus styles */\n .kol-button__interactive-element:focus-visible,\n .kol-link__interactive-element:focus-visible {\n outline: 2px solid Highlight;\n outline-offset: 2px;\n }\n }\n}\n@layer kol-global {\n /*\n * Dieses CSS stellt sicher, dass der Standard-Style\n * von A und Button resettet werden.\n */\n :is(a, button) {\n background-color: transparent;\n width: 100%;\n margin: 0;\n padding: 0;\n border: none;\n /* 100% needed for custom width from outside */\n }\n /*\n * Ensure elements with hidden attribute to be actually not visible\n * @see https://meowni.ca/hidden.is.a.lie.html\n */\n [hidden] {\n display: none !important;\n }\n .badge-text-hint {\n color: black;\n background-color: white;\n }\n}\n@layer kol-global {\n :host {\n /*\n * The max-width is needed to prevent the table from overflowing the\n * parent node, if the table is wider than the parent node.\n */\n max-width: 100%;\n font-size: calc(16 * 1rem / var(--kolibri-root-font-size, 16));\n }\n * {\n /*\n * We prefer to box-sizing: border-box for all elements.\n */\n box-sizing: border-box;\n }\n .kol-span {\n /* KolSpan is a layout component with icons in all directions and a label text in the middle. */\n display: flex;\n flex-flow: column;\n align-items: center;\n justify-content: center;\n /* The sub span in KolSpan is the horizontal span with icon left and right and the label text in the middle. */\n }\n .kol-span__container {\n display: flex;\n align-items: center;\n }\n a,\n button {\n cursor: pointer;\n }\n .kol-span .kol-span__label--hide-label .kol-span__label {\n display: none;\n }\n /* Reset browser agent style. */\n button:disabled {\n color: unset;\n }\n /* A disabled `fieldset` only groups its controls; `cursor` is inherited and would reach the\n operable info popover in its legend. */\n .disabled label,\n .disabled:focus-within label,\n [aria-disabled=true],\n [aria-disabled=true]:focus,\n [disabled]:where(:not(fieldset)),\n [disabled]:where(:not(fieldset)):focus {\n outline: none;\n cursor: not-allowed;\n }\n [aria-disabled=true]:focus .kol-span,\n [disabled]:focus .kol-span {\n outline: none !important;\n }\n .hastooltip {\n z-index: 900 !important;\n }\n}\n@layer kol-component {\n :host {\n display: block;\n }\n}\n/* For animation technique see https://css-tricks.com/css-grid-can-do-auto-height-transitions/ */\n/*\n * Base styles for a collapsible built on `<details>`/`<summary>`: `kol-accordion` and `kol-details`\n * render the same DOM under their own block, so each includes this mixin with its block name.\n *\n * The transition duration comes from the theme\'s `collapsibleTransitionMs` feature flag, which the\n * component writes to `--collapsible-transition-duration` on `<details>`.\n */\n@font-face {\n font-family: "kolicons";\n src: url("kolicons.eot?t=1791544630279"); /* IE9*/\n src: url("kolicons.eot?t=1791544630279#iefix") format("embedded-opentype"), url("kolicons.woff2?t=1791544630279") format("woff2"), url("kolicons.woff?t=1791544630279") format("woff"), url("kolicons.ttf?t=1791544630279") format("truetype"), url("kolicons.svg?t=1791544630279#kolicons") format("svg"); /* iOS 4.1- */\n}\n@layer kol-component {\n [class^=kolicon-], [class*=" kolicon-"] {\n font-family: "kolicons";\n font-style: normal;\n font-weight: 400;\n line-height: 1em;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n }\n .kolicon-alert-error::before {\n content: "\\ea01";\n }\n .kolicon-alert-info::before {\n content: "\\ea02";\n }\n .kolicon-alert-success::before {\n content: "\\ea03";\n }\n .kolicon-alert-warning::before {\n content: "\\ea04";\n }\n .kolicon-check::before {\n content: "\\ea05";\n }\n .kolicon-chevron-double-left::before {\n content: "\\ea06";\n }\n .kolicon-chevron-double-right::before {\n content: "\\ea07";\n }\n .kolicon-chevron-down::before {\n content: "\\ea08";\n }\n .kolicon-chevron-left::before {\n content: "\\ea09";\n }\n .kolicon-chevron-right::before {\n content: "\\ea0a";\n }\n .kolicon-chevron-up::before {\n content: "\\ea0b";\n }\n .kolicon-cogwheel::before {\n content: "\\ea0c";\n }\n .kolicon-cross::before {\n content: "\\ea0d";\n }\n .kolicon-eye-closed::before {\n content: "\\ea0e";\n }\n .kolicon-eye::before {\n content: "\\ea0f";\n }\n .kolicon-house::before {\n content: "\\ea10";\n }\n .kolicon-kolibri::before {\n content: "\\ea11";\n }\n .kolicon-link-external::before {\n content: "\\ea12";\n }\n .kolicon-link::before {\n content: "\\ea13";\n }\n .kolicon-minus::before {\n content: "\\ea14";\n }\n .kolicon-pin-pinned::before {\n content: "\\ea15";\n }\n .kolicon-pin-unpinned::before {\n content: "\\ea16";\n }\n .kolicon-plus::before {\n content: "\\ea17";\n }\n .kolicon-settings::before {\n content: "\\ea18";\n }\n .kolicon-sort-asc::before {\n content: "\\ea19";\n }\n .kolicon-sort-desc::before {\n content: "\\ea1a";\n }\n .kolicon-sort-neutral::before {\n content: "\\ea1b";\n }\n .kolicon-up::before {\n content: "\\ea1c";\n }\n .kolicon-version::before {\n content: "\\ea1d";\n }\n}\n@layer kol-component {\n .kol-accordion {\n /* `<summary>` is the toggle control and carries the box of the button it stands in for. */\n }\n .kol-accordion__heading {\n display: flex;\n min-height: var(--a11y-min-size);\n /* The `not-allowed` reset for disabled controls lives in `kol-global`, which loses to\n `kol-component` whatever the specificity (see `_layer-order.scss`). The pointer has to\n exclude the disabled summary itself, or it wins and a dead control looks clickable. */\n }\n .kol-accordion__heading:not([aria-disabled=true]) {\n cursor: pointer;\n }\n .kol-accordion__heading {\n /* Baseline box for the flex container; without it the surrounding inline flow shifts by 1px. */\n }\n .kol-accordion__heading::before {\n content: "​";\n }\n .kol-accordion__heading {\n /* The heading fills the row; the label span is the flex container inside it. */\n }\n .kol-accordion__heading > .kol-headline {\n display: flex;\n flex: 1;\n margin: 0;\n text-align: left;\n /* Form controls do not inherit font-weight (see `a11y.scss`); themes weight the label further in. */\n font-weight: 400;\n }\n .kol-accordion__heading > .kol-headline > .kol-span {\n flex: 1 0 100%;\n /* `.kol-span` centres its column (`_global.scss`); the summary label is start-aligned. */\n align-items: flex-start;\n }\n @media (prefers-reduced-motion) {\n .kol-accordion__wrapper-animation, .kol-accordion__wrapper {\n transition: none !important;\n }\n }\n .kol-accordion {\n /* @see https://github.com/public-ui/kolibri/issues/5952 */\n }\n @media print {\n .kol-accordion:not(.kol-accordion--open) .kol-accordion__wrapper-animation {\n display: none;\n }\n }\n .kol-accordion__wrapper {\n /* Forces the element into its own GPU compositing layer (via 3D transform). Helps prevent rendering/layout bugs (e.g. #7511) and may improve animation performance. */\n transform: translateZ(0);\n display: grid;\n grid-template-columns: minmax(0, 1fr);\n grid-template-rows: 0fr;\n transition: grid-template-rows var(--collapsible-transition-duration, 0.3s);\n }\n .kol-accordion__wrapper-animation {\n opacity: 0;\n transform: scaleY(0);\n transform-origin: top;\n min-height: 0;\n /* This property is important to keep in sync with the visual transition (template-rows). Without it interactive elements within the accordion would stay focusable. */\n visibility: hidden;\n transition: transform var(--collapsible-transition-duration, 0.3s), opacity var(--collapsible-transition-duration, 0.3s), visibility var(--collapsible-transition-duration, 0.3s);\n }\n .kol-accordion--open .kol-accordion__wrapper {\n grid-template-rows: 1fr;\n }\n .kol-accordion--open .kol-accordion__wrapper-animation {\n opacity: 1;\n transform: scaleY(1);\n visibility: visible;\n }\n .kol-accordion--open:focus-within {\n position: relative;\n z-index: 100;\n }\n .kol-icon {\n color: inherit;\n display: inline-block;\n font-size: inherit;\n font-weight: inherit;\n line-height: inherit;\n }\n}';const _=class extends l{constructor(e){super();n(this,e);this.accordionId=k("accordion");this.controlId=g(this.accordionId,"control");this.detailsOpen=false;this.expanded=false;this.headingId=g(this.accordionId,"heading");this.transitionMs=r;this.ctaRef=y((()=>this.getRenderProp("disabled")===true));this.hasLoaded=false;this.openAnimation=s({getTransitionMs:()=>this.transitionMs,setDetailsOpen:n=>this.detailsOpen=n,setExpanded:n=>this.expanded=n});this.handleToggle=c({getHost:()=>this.host,getOn:()=>this.getRenderProp("on"),isDisabled:()=>this.getRenderProp("disabled")===true,isOpen:()=>this.getRenderProp("open")===true,setOpen:n=>this._open=n});this._disabled=false;this._level=0;this._open=false}watchDisabled(n){f.apply(n,(n=>this.setRenderProp("disabled",n)))}watchLabel(n){m.apply(n,(n=>this.setRenderProp("label",n)))}watchLevel(n){b.apply(n,(n=>this.setRenderProp("level",n)))}watchOn(n){d.apply(n,(n=>this.setRenderProp("on",n)))}watchOpen(n){u.apply(n,(n=>{this.setRenderProp("open",n);this.openAnimation.syncOpen(n,this.hasLoaded)}))}async focus(n){}async click(){}componentWillLoad(){var n;this.initRenderProps(h);this.transitionMs=(n=a("collapsibleTransitionMs",this.host))!==null&&n!==void 0?n:r;this.watchDisabled(this._disabled);this.watchLabel(this._label);this.watchLevel(this._level);this.watchOn(this._on);this.watchOpen(this._open)}componentDidLoad(){this.hasLoaded=true}disconnectedCallback(){this.openAnimation.dispose()}render(){return e(o,{key:"d9be006e54ad72ab5f0504895974aa400bc3d149"},e(p,{key:"d068e116b608eb39abacce0a2b2389fbb04118e8",block:"kol-accordion",controlId:this.controlId,detailsOpen:this.detailsOpen,disabled:this.getRenderProp("disabled"),expanded:this.expanded,handleToggle:this.handleToggle,headingId:this.headingId,icons:this.getRenderProp("open")?"kolicon-chevron-down":"kolicon-chevron-right",label:this.getRenderProp("label"),level:this.getRenderProp("level"),on:this.getRenderProp("on"),open:this.getRenderProp("open"),refHeadingButton:this.ctaRef,transitionMs:this.transitionMs},e("slot",{key:"89a15577e70053eb6412d03c5eee7916115a7994"})))}get host(){return t(this)}static get watchers(){return{_disabled:["watchDisabled"],_label:["watchLabel"],_level:["watchLevel"],_on:["watchOn"],_open:["watchOpen"]}}};i([w("ctaRef")],_.prototype,"focus",null);i([v("ctaRef")],_.prototype,"click",null);_.style={default:x};export{_ as kol_accordion};
5
5
  //# sourceMappingURL=kol-accordion.entry.js.map
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * KoliBri - The accessible HTML-Standard
3
3
  */
4
- import{r as n,h as e,H as t,g as o}from"./index-DAKQV03B.js";import{t as i}from"./i18n-BaCf-SDK.js";import"./common-BqpMtheU.js";import{l}from"./level-Q5lBISho.js";import{c as a,n as r,a as s,b as c,B as d}from"./base-web-component-3R1Dy3QK.js";import{h}from"./has-closer-BQ7zAkgZ.js";import{l as f}from"./label-c9P7yC4V.js";import{A as p}from"./component-BjWF1SyZ.js";import{T as m}from"./behavior-D1kOlK6p.js";import{c as b,n as u}from"./dev.utils-BGy8dbtQ.js";import{c as k}from"./element-interaction-Cy9tx3Sx.js";import{d as g,K as y}from"./events-CRHxtwup.js";import"./i18n-exgMSyNT.js";import"./isArray-CcrBs4JM.js";import"./tslib.es6-QNbPBOk5.js";import"./Heading-BctDgC7M.js";import"./clsx-COFh-Vc8.js";import"./bem-registry-CX5kvaqt.js";import"./component-DhBTawyT.js";import"./block-bem-DxQXsOt3.js";import"./component-CmBM-Y1C.js";import"./component-sf_0WjJF.js";import"./component-QCFfSS76.js";import"./component-DKS73hKY.js";import"./component-CvhmYY4a.js";import"./tooltip-open-tracking-D3tCiiGP.js";import"./align-DeB15XnU.js";import"./element-focus-Cp994Rrk.js";const w=["default","info","success","warning","error"];const v=["card","msg"];const x=a("alert",false,r);const _=s();const T=a("type","default",(n=>{const e=c(n);if(w.includes(e)){return e}throw new Error(`Invalid alert type: ${e}`)}),(()=>true));const C=a("variant","msg",(n=>{const e=c(n);if(v.includes(e)){return e}throw new Error(`Invalid alert variant: ${e}`)}),(()=>true));const j={optional:[_,x,T,C,h,f,l]};const z='@charset "UTF-8";\n/*\n* This file defines the layer order for all CSS layers used in KoliBri.\n* The order is important as it determines the cascade priority.\n*\n* Layer order (lowest to highest priority):\n* 1. kol-a11y - Accessibility defaults and requirements\n* 2. kol-global - Global component styles and resets\n* 3. kol-component - Component-specific styles\n* 4. kol-theme-global - Theme-specific global styles\n* 5. kol-theme-component - Theme-specific component styles\n* 6. kol-forced-colors - Defaults for forced colors and high contrast modes\n* 7. kol-theme-forced-colors - Theme-specific styles for forced colors and high contrast modes\n*/\n@layer kol-a11y, kol-global, kol-component, kol-theme-global, kol-theme-component, kol-forced-colors, kol-theme-forced-colors;\n/* forward the rem function */\n/*\n * Guards an interaction rule (`:hover`, `:active`, `:focus…`) against the disabled state.\n *\n * Two shapes are needed because the disabled marker sits on different elements: a native control\n * carries `disabled`, an anchor or summary carries `aria-disabled`, and a BEM wrapper carries a\n * `--disabled` modifier while its inner control carries the attribute.\n */\n/* Wrapper variant: asks the interactive element inside, which is where the attribute lives. */\n/*\n * This file contains all rules for accessibility.\n */\n@layer kol-a11y {\n :host {\n /*\n * Minimum size of interactive elements.\n *\n * The `max(…, 44px)` floor guarantees the WCAG 2.5.5 (AAA) target size of 44px:\n * `to-rem(44)` runs the value through a `calc()` rem round-trip which can lose\n * sub-pixel precision and resolve to e.g. 43.99px depending on the browser\'s\n * rounding, dropping just below the required minimum.\n */\n --a11y-min-size: max(calc(44 * 1rem / var(--kolibri-root-font-size, 16)), 44px);\n /*\n * No element should be used without verifying the contrast ratio of its background and font colors.\n * By initially setting the background color to white and the font color to black,\n * the contrast ratio is ensured and explicit adjustment is forced.\n */\n --kol-a11y-font-color: black;\n --kol-a11y-background-color: white;\n color: var(--kol-a11y-font-color);\n background-color: var(--kol-a11y-background-color);\n /*\n * Verdana is an accessible font that can be used without requiring additional loading time.\n */\n --kol-a11y-font-family: Verdana;\n font-family: var(--kol-a11y-font-family);\n /*\n * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\n /*\n * Text should be aligned left by default to provide a predictable starting point.\n */\n text-align: left;\n }\n * {\n /*\n * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n hyphens: auto;\n /*\n * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n word-break: break-word;\n }\n /*\n * All interactive elements should have a minimum size of to-rem(44).\n */\n /* input:not([type=\'checkbox\'], [type=\'radio\'], [type=\'range\']), */\n /* option, */\n /* select, */\n /* textarea, */\n button,\n .kol-input .input {\n min-width: var(--a11y-min-size);\n min-height: var(--a11y-min-size);\n }\n /*\n * Some interactive elements should not inherit the font-family and font-size.\n */\n a,\n button,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n input,\n option,\n select,\n textarea {\n /*\n * All elements should inherit the text color from his parent element.\n */\n color: inherit;\n /*\n * All elements should inherit the font family from his parent element.\n */\n font-family: inherit;\n /*\n * All elements should inherit the font size from his parent element.\n */\n font-size: inherit;\n /*\n * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\n }\n /**\n * Sometimes we need the semantic element for accessibility reasons,\n * but we don\'t want to show it.\n *\n * - https://www.a11yproject.com/posts/how-to-hide-content/\n */\n .visually-hidden {\n position: fixed;\n top: 0;\n left: 0;\n width: 1px;\n height: 1px;\n overflow: hidden;\n white-space: nowrap;\n clip-path: inset(50%);\n }\n}\n/*\n * This file contains all rules for forced-colors and highcontrast modes\n * https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Values/system-color to see all color keywords the browsers are providing\n */\n@layer kol-forced-colors {\n @media (forced-colors: active) {\n .kol-button__text {\n color: ButtonText;\n background-color: ButtonFace;\n border: 2px solid ButtonBorder;\n }\n .kol-button--disabled .kol-button__text {\n color: GrayText;\n border-color: GrayText;\n }\n /*\n * Forced colors drop author colors, so the only way a disabled control still reads as\n * disabled is the `GrayText` system color. `kol-button` had it; the controls whose disabled\n * state is `aria-disabled` (anchor, summary) and the native form controls did not.\n */\n .kol-link__interactive-element[aria-disabled=true],\n .kol-accordion__heading[aria-disabled=true],\n .kol-details__heading[aria-disabled=true] {\n color: GrayText;\n }\n .kol-link__interactive-element[aria-disabled=true] .kol-icon,\n .kol-link__interactive-element[aria-disabled=true] .kol-span__label,\n .kol-accordion__heading[aria-disabled=true] .kol-icon,\n .kol-accordion__heading[aria-disabled=true] .kol-span__label,\n .kol-details__heading[aria-disabled=true] .kol-icon,\n .kol-details__heading[aria-disabled=true] .kol-span__label {\n color: GrayText;\n }\n input:disabled,\n select:disabled,\n textarea:disabled {\n color: GrayText;\n border-color: GrayText;\n }\n .kol-card,\n .kol-dialog,\n .kol-modal {\n color: CanvasText;\n background-color: Canvas;\n border: 1px solid ButtonBorder;\n }\n .kol-pagination__button--selected .kol-button {\n opacity: 1;\n }\n .kol-pagination__button--selected .kol-button__text {\n color: SelectedItemText;\n background-color: SelectedItem;\n }\n /* focus styles */\n .kol-button__interactive-element:focus-visible,\n .kol-link__interactive-element:focus-visible {\n outline: 2px solid Highlight;\n outline-offset: 2px;\n }\n }\n}\n@layer kol-global {\n /*\n * Dieses CSS stellt sicher, dass der Standard-Style\n * von A und Button resettet werden.\n */\n :is(a, button) {\n background-color: transparent;\n width: 100%;\n margin: 0;\n padding: 0;\n border: none;\n /* 100% needed for custom width from outside */\n }\n /*\n * Ensure elements with hidden attribute to be actually not visible\n * @see https://meowni.ca/hidden.is.a.lie.html\n */\n [hidden] {\n display: none !important;\n }\n .badge-text-hint {\n color: black;\n background-color: white;\n }\n}\n@layer kol-global {\n :host {\n /*\n * The max-width is needed to prevent the table from overflowing the\n * parent node, if the table is wider than the parent node.\n */\n max-width: 100%;\n font-size: calc(16 * 1rem / var(--kolibri-root-font-size, 16));\n }\n * {\n /*\n * We prefer to box-sizing: border-box for all elements.\n */\n box-sizing: border-box;\n }\n .kol-span {\n /* KolSpan is a layout component with icons in all directions and a label text in the middle. */\n display: flex;\n flex-flow: column;\n align-items: center;\n justify-content: center;\n /* The sub span in KolSpan is the horizontal span with icon left and right and the label text in the middle. */\n }\n .kol-span__container {\n display: flex;\n align-items: center;\n }\n a,\n button {\n cursor: pointer;\n }\n .kol-span .kol-span__label--hide-label .kol-span__label {\n display: none;\n }\n /* Reset browser agent style. */\n button:disabled {\n color: unset;\n }\n /* A disabled `fieldset` only groups its controls; `cursor` is inherited and would reach the\n operable info popover in its legend. */\n .disabled label,\n .disabled:focus-within label,\n [aria-disabled=true],\n [aria-disabled=true]:focus,\n [disabled]:where(:not(fieldset)),\n [disabled]:where(:not(fieldset)):focus {\n outline: none;\n cursor: not-allowed;\n }\n [aria-disabled=true]:focus .kol-span,\n [disabled]:focus .kol-span {\n outline: none !important;\n }\n .hastooltip {\n z-index: 900 !important;\n }\n}\n@layer kol-component {\n :host {\n display: block;\n }\n}\n@font-face {\n font-family: "kolicons";\n src: url("kolicons.eot?t=1791539188494"); /* IE9*/\n src: url("kolicons.eot?t=1791539188494#iefix") format("embedded-opentype"), url("kolicons.woff2?t=1791539188494") format("woff2"), url("kolicons.woff?t=1791539188494") format("woff"), url("kolicons.ttf?t=1791539188494") format("truetype"), url("kolicons.svg?t=1791539188494#kolicons") format("svg"); /* iOS 4.1- */\n}\n@layer kol-component {\n [class^=kolicon-], [class*=" kolicon-"] {\n font-family: "kolicons";\n font-style: normal;\n font-weight: 400;\n line-height: 1em;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n }\n .kolicon-alert-error::before {\n content: "\\ea01";\n }\n .kolicon-alert-info::before {\n content: "\\ea02";\n }\n .kolicon-alert-success::before {\n content: "\\ea03";\n }\n .kolicon-alert-warning::before {\n content: "\\ea04";\n }\n .kolicon-check::before {\n content: "\\ea05";\n }\n .kolicon-chevron-double-left::before {\n content: "\\ea06";\n }\n .kolicon-chevron-double-right::before {\n content: "\\ea07";\n }\n .kolicon-chevron-down::before {\n content: "\\ea08";\n }\n .kolicon-chevron-left::before {\n content: "\\ea09";\n }\n .kolicon-chevron-right::before {\n content: "\\ea0a";\n }\n .kolicon-chevron-up::before {\n content: "\\ea0b";\n }\n .kolicon-cogwheel::before {\n content: "\\ea0c";\n }\n .kolicon-cross::before {\n content: "\\ea0d";\n }\n .kolicon-eye-closed::before {\n content: "\\ea0e";\n }\n .kolicon-eye::before {\n content: "\\ea0f";\n }\n .kolicon-house::before {\n content: "\\ea10";\n }\n .kolicon-kolibri::before {\n content: "\\ea11";\n }\n .kolicon-link-external::before {\n content: "\\ea12";\n }\n .kolicon-link::before {\n content: "\\ea13";\n }\n .kolicon-minus::before {\n content: "\\ea14";\n }\n .kolicon-pin-pinned::before {\n content: "\\ea15";\n }\n .kolicon-pin-unpinned::before {\n content: "\\ea16";\n }\n .kolicon-plus::before {\n content: "\\ea17";\n }\n .kolicon-settings::before {\n content: "\\ea18";\n }\n .kolicon-sort-asc::before {\n content: "\\ea19";\n }\n .kolicon-sort-desc::before {\n content: "\\ea1a";\n }\n .kolicon-sort-neutral::before {\n content: "\\ea1b";\n }\n .kolicon-up::before {\n content: "\\ea1c";\n }\n .kolicon-version::before {\n content: "\\ea1d";\n }\n}\n@layer kol-component {\n .kol-icon {\n color: inherit;\n display: inline-block;\n font-size: inherit;\n font-weight: inherit;\n line-height: inherit;\n }\n .kol-tooltip {\n display: contents;\n }\n .kol-tooltip__floating {\n opacity: 0;\n display: none;\n position: fixed;\n /* Avoid layout interference - see https://floating-ui.com/docs/computePosition */\n top: 0;\n left: 0;\n /* Can be used to specify the tooltip-width from the outside. Unset by default. */\n width: var(--kol-tooltip-width, max-content);\n min-width: calc(8 * 1rem / var(--kolibri-root-font-size, 16));\n max-width: 90vw;\n max-height: 90vh;\n animation-direction: normal;\n /* Can be used to specify the animation duration from the outside. 250ms by default. */\n animation-duration: var(--kolibri-tooltip-animation-duration, 250ms);\n animation-fill-mode: forwards;\n animation-iteration-count: 1;\n animation-timing-function: ease-in;\n }\n .kol-tooltip__floating.hide {\n animation-name: hideTooltip;\n }\n .kol-tooltip__floating.show {\n animation-name: showTooltip;\n }\n .kol-tooltip__arrow {\n transform: rotate(45deg);\n color: black;\n background-color: white;\n position: absolute;\n z-index: 999;\n width: calc(10 * 1rem / var(--kolibri-root-font-size, 16));\n height: calc(10 * 1rem / var(--kolibri-root-font-size, 16));\n }\n .kol-tooltip__content {\n color: black;\n background-color: white;\n position: relative;\n z-index: 1000;\n }\n @keyframes hideTooltip {\n 0% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n display: none;\n }\n }\n @keyframes showTooltip {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n}\n/*\n * Button styles for a skeleton block whose interactive element sits inside the BEM root:\n * `kol-button` renders `<div class="kol-button"><button class="kol-button__interactive-element">`,\n * `kol-link` renders `<div class="kol-link"><a class="kol-link__interactive-element">`.\n *\n * Overlaps with `kol-embedded-button-box-styles` below: both target the block class itself and disagree\n * on `display` and `text-align`. A stylesheet that includes both therefore depends on order or\n * specificity — today that only happens where the caller nests one of them (e.g. `_alert.mixin`\n * nests this one under `.kol-alert`, which wins). Include only one per block unless the nesting\n * makes the winner explicit.\n */\n/*\n * Minimal box replication for shadow trees that render `ButtonFC` without including\n * `kol-button-styles`. The `kol-global` reset (`background`, `width`, `margin`, `padding`,\n * `border`) and the a11y layer `min-height`/`min-width` apply to the native button, on top of the\n * UA `inline-block`, but not to the `div` root that carries the `kol-button` class. This mixin\n * replicates that outer box on the root, while the inner `kol-button__interactive-element` degrades\n * to a plain block container to avoid the inline-level baseline gap the UA `inline-block` would add\n * below it.\n *\n * Mutually exclusive with `kol-button-styles` above — see the collision note there.\n */\n@layer kol-component {\n .kol-alert .kol-icon {\n color: inherit;\n display: inline-block;\n font-size: inherit;\n font-weight: inherit;\n line-height: inherit;\n }\n .kol-alert :host {\n display: inline-block;\n }\n .kol-alert .kol-button {\n display: flex;\n height: 100%;\n min-height: var(--a11y-min-size);\n text-decoration-line: none;\n /* The interactive element is the flex container positioning the text, so it carries the\n box the root element used to be. The UA default underline sits on that element too,\n so suppressing `text-decoration` on the wrapper alone is not enough. */\n }\n .kol-alert .kol-button__interactive-element {\n display: flex;\n flex: 1;\n text-align: left;\n text-decoration-line: none;\n /* A flex container only exposes a baseline if it has an in-flow text box to derive one\n from; without it the surrounding inline formatting context falls back to the bottom\n margin edge and everything after the element shifts by 1px. The zero-width space\n supplies that box. Measured, not assumed: removing it turns `popover-button/inline`\n and `input-file/basic` red against the develop baseline (the box grows 179→180px). */\n }\n .kol-alert .kol-button__interactive-element::before {\n content: "​";\n }\n .kol-alert .kol-button__text {\n flex: 1 0 100%;\n }\n .kol-alert .kol-button {\n /* The tooltip wrapper holds only the absolutely positioned floating tooltip. In the legacy\n DOM it sat in a block flow and collapsed to zero height; as a flex/grid item it would\n stretch to the container height instead, adding phantom rows to the layout. */\n }\n .kol-alert .kol-button__tooltip {\n height: 0;\n }\n .kol-alert .kol-button--external-link > .kolicon-link-external::before {\n content: none;\n }\n .kol-alert .kol-button--external-link .kol-button__interactive-element > .kolicon-link-external::before {\n content: none;\n }\n .kol-alert {\n display: grid;\n grid-template-areas: "icon heading close" "icon content close";\n grid-template-columns: min-content 1fr min-content;\n grid-template-rows: min-content min-content;\n }\n .kol-alert__icon {\n grid-area: icon;\n }\n .kol-alert__heading {\n grid-area: heading;\n }\n .kol-alert__closer {\n /* Visible with forced colors */\n outline: transparent solid calc(1 * 1rem / var(--kolibri-root-font-size, 16));\n grid-area: close;\n }\n .kol-alert__content {\n grid-area: content;\n }\n}';const B=class extends d{constructor(e){super();n(this,e);this.headingId=b("alert-heading");this.closerAriaDescriptionId=u();this.translateCloseAlert=i("kol-close-alert");this.closerRef=k();this.closerTooltipBehavior=new m(this.stateAccess);this._alert=false;this._hasCloser=false;this._level=0;this._type="default";this._variant="msg";this.handleAlertTimeout=()=>{this.watchAlert(false)};this.handleCloserClick=n=>{var e,t;n.stopPropagation();this.closerTooltipBehavior.hideTooltip();(t=(e=this.getRenderProp("on")).onClose)===null||t===void 0?void 0:t.call(e,new Event("Close"));if(this.host){g(this.host,y.close)}}}watchAlert(n){x.apply(n,(n=>{this.setRenderProp("alert",n);this.syncAlertEffects(n)}))}watchHasCloser(n){h.apply(n,(n=>this.setRenderProp("hasCloser",n)))}watchLabel(n){f.apply(n,(n=>this.setRenderProp("label",n)))}watchLevel(n){l.apply(n,(n=>this.setRenderProp("level",n)))}watchOn(n){_.apply(n,(n=>this.setRenderProp("on",n)))}watchType(n){T.apply(n,(n=>this.setRenderProp("type",n)))}watchVariant(n){C.apply(n,(n=>this.setRenderProp("variant",n)))}componentWillLoad(){this.initRenderProps(j);this.watchAlert(this._alert);this.watchHasCloser(this._hasCloser);this.watchLabel(this._label);this.watchLevel(this._level);this.watchOn(this._on);this.watchType(this._type);this.watchVariant(this._variant);this.closerTooltipBehavior.componentWillLoad({label:this.translateCloseAlert,align:"left"})}componentDidRender(){if(this.closerRef.el){this.closerTooltipBehavior.syncListeners(undefined,this.closerRef.el,true)}}disconnectedCallback(){this.closerTooltipBehavior.destroy();this.syncAlertEffects(false)}syncAlertEffects(n){clearTimeout(this.alertTimeout);if(!n){return}if(typeof navigator!=="undefined"&&typeof navigator.vibrate==="function"){const n=navigator.userActivation;const e=(n===null||n===void 0?void 0:n.isActive)||(n===null||n===void 0?void 0:n.hasBeenActive);if(e&&matchMedia("(any-pointer: coarse)").matches){try{navigator.vibrate([100,75,100,75,100])}catch(n){}}}this.alertTimeout=setTimeout((()=>this.handleAlertTimeout()),1e4)}render(){return e(t,{key:"0367ba20fdb9c1d076bee92fdfe7efb5a770e088"},e(p,{key:"f34473dbc78f60471d435791e1dd905e20b038f6",alert:this.getRenderProp("alert"),handleCloserClick:this.handleCloserClick,closerAriaDescriptionId:this.closerAriaDescriptionId,hasCloser:this.getRenderProp("hasCloser"),headingId:this.headingId,label:this.getRenderProp("label"),level:this.getRenderProp("level"),refCloserButton:this.closerRef,refCloserTooltip:this.closerTooltipBehavior.setTooltipElementRef,type:this.getRenderProp("type"),variant:this.getRenderProp("variant")},e("slot",{key:"7ff3d6c012666e8a309889b6049f2c694be417ba"})))}get host(){return o(this)}static get watchers(){return{_alert:["watchAlert"],_hasCloser:["watchHasCloser"],_label:["watchLabel"],_level:["watchLevel"],_on:["watchOn"],_type:["watchType"],_variant:["watchVariant"]}}};B.style={default:z};export{B as kol_alert};
4
+ import{r as n,h as e,H as t,g as o}from"./index-wY4pHWJG.js";import{t as i}from"./i18n-BaCf-SDK.js";import"./common-BqpMtheU.js";import{l}from"./level-Q5lBISho.js";import{c as a,n as r,a as s,b as c,B as d}from"./base-web-component-3R1Dy3QK.js";import{h}from"./has-closer-BQ7zAkgZ.js";import{l as f}from"./label-c9P7yC4V.js";import{A as p}from"./component-CBkrKKXd.js";import{T as b}from"./behavior-D1kOlK6p.js";import{c as m,n as u}from"./dev.utils-DDqySnXB.js";import{c as k}from"./element-interaction-Cy9tx3Sx.js";import{d as g,K as y}from"./events-CRHxtwup.js";import"./i18n-exgMSyNT.js";import"./isArray-CcrBs4JM.js";import"./tslib.es6-QNbPBOk5.js";import"./Heading-DYEtnAIe.js";import"./clsx-COFh-Vc8.js";import"./bem-registry-CX5kvaqt.js";import"./component-D30YHxgS.js";import"./block-bem-DxQXsOt3.js";import"./component-CODtL04S.js";import"./component-kDR4_xf0.js";import"./component-DoCNds1d.js";import"./component-C4dhT4Ba.js";import"./component-fK2EUkFf.js";import"./tooltip-open-tracking-D3tCiiGP.js";import"./align-DeB15XnU.js";import"./element-focus-Cp994Rrk.js";const w=["default","info","success","warning","error"];const v=["card","msg"];const x=a("alert",false,r);const _=s();const T=a("type","default",(n=>{const e=c(n);if(w.includes(e)){return e}throw new Error(`Invalid alert type: ${e}`)}),(()=>true));const C=a("variant","msg",(n=>{const e=c(n);if(v.includes(e)){return e}throw new Error(`Invalid alert variant: ${e}`)}),(()=>true));const j={optional:[_,x,T,C,h,f,l]};const z='@charset "UTF-8";\n/*\n* This file defines the layer order for all CSS layers used in KoliBri.\n* The order is important as it determines the cascade priority.\n*\n* Layer order (lowest to highest priority):\n* 1. kol-a11y - Accessibility defaults and requirements\n* 2. kol-global - Global component styles and resets\n* 3. kol-component - Component-specific styles\n* 4. kol-theme-global - Theme-specific global styles\n* 5. kol-theme-component - Theme-specific component styles\n* 6. kol-forced-colors - Defaults for forced colors and high contrast modes\n* 7. kol-theme-forced-colors - Theme-specific styles for forced colors and high contrast modes\n*/\n@layer kol-a11y, kol-global, kol-component, kol-theme-global, kol-theme-component, kol-forced-colors, kol-theme-forced-colors;\n/* forward the rem function */\n/*\n * Guards an interaction rule (`:hover`, `:active`, `:focus…`) against the disabled state.\n *\n * Two shapes are needed because the disabled marker sits on different elements: a native control\n * carries `disabled`, an anchor or summary carries `aria-disabled`, and a BEM wrapper carries a\n * `--disabled` modifier while its inner control carries the attribute.\n */\n/* Wrapper variant: asks the interactive element inside, which is where the attribute lives. */\n/*\n * This file contains all rules for accessibility.\n */\n@layer kol-a11y {\n :host {\n /*\n * Minimum size of interactive elements.\n *\n * The `max(…, 44px)` floor guarantees the WCAG 2.5.5 (AAA) target size of 44px:\n * `to-rem(44)` runs the value through a `calc()` rem round-trip which can lose\n * sub-pixel precision and resolve to e.g. 43.99px depending on the browser\'s\n * rounding, dropping just below the required minimum.\n */\n --a11y-min-size: max(calc(44 * 1rem / var(--kolibri-root-font-size, 16)), 44px);\n /*\n * No element should be used without verifying the contrast ratio of its background and font colors.\n * By initially setting the background color to white and the font color to black,\n * the contrast ratio is ensured and explicit adjustment is forced.\n */\n --kol-a11y-font-color: black;\n --kol-a11y-background-color: white;\n color: var(--kol-a11y-font-color);\n background-color: var(--kol-a11y-background-color);\n /*\n * Verdana is an accessible font that can be used without requiring additional loading time.\n */\n --kol-a11y-font-family: Verdana;\n font-family: var(--kol-a11y-font-family);\n /*\n * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\n /*\n * Text should be aligned left by default to provide a predictable starting point.\n */\n text-align: left;\n }\n * {\n /*\n * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n hyphens: auto;\n /*\n * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n word-break: break-word;\n }\n /*\n * All interactive elements should have a minimum size of to-rem(44).\n */\n /* input:not([type=\'checkbox\'], [type=\'radio\'], [type=\'range\']), */\n /* option, */\n /* select, */\n /* textarea, */\n button,\n .kol-input .input {\n min-width: var(--a11y-min-size);\n min-height: var(--a11y-min-size);\n }\n /*\n * Some interactive elements should not inherit the font-family and font-size.\n */\n a,\n button,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n input,\n option,\n select,\n textarea {\n /*\n * All elements should inherit the text color from his parent element.\n */\n color: inherit;\n /*\n * All elements should inherit the font family from his parent element.\n */\n font-family: inherit;\n /*\n * All elements should inherit the font size from his parent element.\n */\n font-size: inherit;\n /*\n * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\n }\n /**\n * Sometimes we need the semantic element for accessibility reasons,\n * but we don\'t want to show it.\n *\n * - https://www.a11yproject.com/posts/how-to-hide-content/\n */\n .visually-hidden {\n position: fixed;\n top: 0;\n left: 0;\n width: 1px;\n height: 1px;\n overflow: hidden;\n white-space: nowrap;\n clip-path: inset(50%);\n }\n}\n/*\n * This file contains all rules for forced-colors and highcontrast modes\n * https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Values/system-color to see all color keywords the browsers are providing\n */\n@layer kol-forced-colors {\n @media (forced-colors: active) {\n .kol-button__text {\n color: ButtonText;\n background-color: ButtonFace;\n border: 2px solid ButtonBorder;\n }\n .kol-button--disabled .kol-button__text {\n color: GrayText;\n border-color: GrayText;\n }\n /*\n * Forced colors drop author colors, so the only way a disabled control still reads as\n * disabled is the `GrayText` system color. `kol-button` had it; the controls whose disabled\n * state is `aria-disabled` (anchor, summary) and the native form controls did not.\n */\n .kol-link__interactive-element[aria-disabled=true],\n .kol-accordion__heading[aria-disabled=true],\n .kol-details__heading[aria-disabled=true] {\n color: GrayText;\n }\n .kol-link__interactive-element[aria-disabled=true] .kol-icon,\n .kol-link__interactive-element[aria-disabled=true] .kol-span__label,\n .kol-accordion__heading[aria-disabled=true] .kol-icon,\n .kol-accordion__heading[aria-disabled=true] .kol-span__label,\n .kol-details__heading[aria-disabled=true] .kol-icon,\n .kol-details__heading[aria-disabled=true] .kol-span__label {\n color: GrayText;\n }\n input:disabled,\n select:disabled,\n textarea:disabled {\n color: GrayText;\n border-color: GrayText;\n }\n .kol-card,\n .kol-dialog,\n .kol-modal {\n color: CanvasText;\n background-color: Canvas;\n border: 1px solid ButtonBorder;\n }\n .kol-pagination__button--selected .kol-button {\n opacity: 1;\n }\n .kol-pagination__button--selected .kol-button__text {\n color: SelectedItemText;\n background-color: SelectedItem;\n }\n /* focus styles */\n .kol-button__interactive-element:focus-visible,\n .kol-link__interactive-element:focus-visible {\n outline: 2px solid Highlight;\n outline-offset: 2px;\n }\n }\n}\n@layer kol-global {\n /*\n * Dieses CSS stellt sicher, dass der Standard-Style\n * von A und Button resettet werden.\n */\n :is(a, button) {\n background-color: transparent;\n width: 100%;\n margin: 0;\n padding: 0;\n border: none;\n /* 100% needed for custom width from outside */\n }\n /*\n * Ensure elements with hidden attribute to be actually not visible\n * @see https://meowni.ca/hidden.is.a.lie.html\n */\n [hidden] {\n display: none !important;\n }\n .badge-text-hint {\n color: black;\n background-color: white;\n }\n}\n@layer kol-global {\n :host {\n /*\n * The max-width is needed to prevent the table from overflowing the\n * parent node, if the table is wider than the parent node.\n */\n max-width: 100%;\n font-size: calc(16 * 1rem / var(--kolibri-root-font-size, 16));\n }\n * {\n /*\n * We prefer to box-sizing: border-box for all elements.\n */\n box-sizing: border-box;\n }\n .kol-span {\n /* KolSpan is a layout component with icons in all directions and a label text in the middle. */\n display: flex;\n flex-flow: column;\n align-items: center;\n justify-content: center;\n /* The sub span in KolSpan is the horizontal span with icon left and right and the label text in the middle. */\n }\n .kol-span__container {\n display: flex;\n align-items: center;\n }\n a,\n button {\n cursor: pointer;\n }\n .kol-span .kol-span__label--hide-label .kol-span__label {\n display: none;\n }\n /* Reset browser agent style. */\n button:disabled {\n color: unset;\n }\n /* A disabled `fieldset` only groups its controls; `cursor` is inherited and would reach the\n operable info popover in its legend. */\n .disabled label,\n .disabled:focus-within label,\n [aria-disabled=true],\n [aria-disabled=true]:focus,\n [disabled]:where(:not(fieldset)),\n [disabled]:where(:not(fieldset)):focus {\n outline: none;\n cursor: not-allowed;\n }\n [aria-disabled=true]:focus .kol-span,\n [disabled]:focus .kol-span {\n outline: none !important;\n }\n .hastooltip {\n z-index: 900 !important;\n }\n}\n@layer kol-component {\n :host {\n display: block;\n }\n}\n@font-face {\n font-family: "kolicons";\n src: url("kolicons.eot?t=1791544630279"); /* IE9*/\n src: url("kolicons.eot?t=1791544630279#iefix") format("embedded-opentype"), url("kolicons.woff2?t=1791544630279") format("woff2"), url("kolicons.woff?t=1791544630279") format("woff"), url("kolicons.ttf?t=1791544630279") format("truetype"), url("kolicons.svg?t=1791544630279#kolicons") format("svg"); /* iOS 4.1- */\n}\n@layer kol-component {\n [class^=kolicon-], [class*=" kolicon-"] {\n font-family: "kolicons";\n font-style: normal;\n font-weight: 400;\n line-height: 1em;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n }\n .kolicon-alert-error::before {\n content: "\\ea01";\n }\n .kolicon-alert-info::before {\n content: "\\ea02";\n }\n .kolicon-alert-success::before {\n content: "\\ea03";\n }\n .kolicon-alert-warning::before {\n content: "\\ea04";\n }\n .kolicon-check::before {\n content: "\\ea05";\n }\n .kolicon-chevron-double-left::before {\n content: "\\ea06";\n }\n .kolicon-chevron-double-right::before {\n content: "\\ea07";\n }\n .kolicon-chevron-down::before {\n content: "\\ea08";\n }\n .kolicon-chevron-left::before {\n content: "\\ea09";\n }\n .kolicon-chevron-right::before {\n content: "\\ea0a";\n }\n .kolicon-chevron-up::before {\n content: "\\ea0b";\n }\n .kolicon-cogwheel::before {\n content: "\\ea0c";\n }\n .kolicon-cross::before {\n content: "\\ea0d";\n }\n .kolicon-eye-closed::before {\n content: "\\ea0e";\n }\n .kolicon-eye::before {\n content: "\\ea0f";\n }\n .kolicon-house::before {\n content: "\\ea10";\n }\n .kolicon-kolibri::before {\n content: "\\ea11";\n }\n .kolicon-link-external::before {\n content: "\\ea12";\n }\n .kolicon-link::before {\n content: "\\ea13";\n }\n .kolicon-minus::before {\n content: "\\ea14";\n }\n .kolicon-pin-pinned::before {\n content: "\\ea15";\n }\n .kolicon-pin-unpinned::before {\n content: "\\ea16";\n }\n .kolicon-plus::before {\n content: "\\ea17";\n }\n .kolicon-settings::before {\n content: "\\ea18";\n }\n .kolicon-sort-asc::before {\n content: "\\ea19";\n }\n .kolicon-sort-desc::before {\n content: "\\ea1a";\n }\n .kolicon-sort-neutral::before {\n content: "\\ea1b";\n }\n .kolicon-up::before {\n content: "\\ea1c";\n }\n .kolicon-version::before {\n content: "\\ea1d";\n }\n}\n@layer kol-component {\n .kol-icon {\n color: inherit;\n display: inline-block;\n font-size: inherit;\n font-weight: inherit;\n line-height: inherit;\n }\n .kol-tooltip {\n display: contents;\n }\n .kol-tooltip__floating {\n opacity: 0;\n display: none;\n position: fixed;\n /* Avoid layout interference - see https://floating-ui.com/docs/computePosition */\n top: 0;\n left: 0;\n /* Can be used to specify the tooltip-width from the outside. Unset by default. */\n width: var(--kol-tooltip-width, max-content);\n min-width: calc(8 * 1rem / var(--kolibri-root-font-size, 16));\n max-width: 90vw;\n max-height: 90vh;\n animation-direction: normal;\n /* Can be used to specify the animation duration from the outside. 250ms by default. */\n animation-duration: var(--kolibri-tooltip-animation-duration, 250ms);\n animation-fill-mode: forwards;\n animation-iteration-count: 1;\n animation-timing-function: ease-in;\n }\n .kol-tooltip__floating.hide {\n animation-name: hideTooltip;\n }\n .kol-tooltip__floating.show {\n animation-name: showTooltip;\n }\n .kol-tooltip__arrow {\n transform: rotate(45deg);\n color: black;\n background-color: white;\n position: absolute;\n z-index: 999;\n width: calc(10 * 1rem / var(--kolibri-root-font-size, 16));\n height: calc(10 * 1rem / var(--kolibri-root-font-size, 16));\n }\n .kol-tooltip__content {\n color: black;\n background-color: white;\n position: relative;\n z-index: 1000;\n }\n @keyframes hideTooltip {\n 0% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n display: none;\n }\n }\n @keyframes showTooltip {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n}\n/*\n * Button styles for a skeleton block whose interactive element sits inside the BEM root:\n * `kol-button` renders `<div class="kol-button"><button class="kol-button__interactive-element">`,\n * `kol-link` renders `<div class="kol-link"><a class="kol-link__interactive-element">`.\n *\n * Overlaps with `kol-embedded-button-box-styles` below: both target the block class itself and disagree\n * on `display` and `text-align`. A stylesheet that includes both therefore depends on order or\n * specificity — today that only happens where the caller nests one of them (e.g. `_alert.mixin`\n * nests this one under `.kol-alert`, which wins). Include only one per block unless the nesting\n * makes the winner explicit.\n */\n/*\n * Minimal box replication for shadow trees that render `ButtonFC` without including\n * `kol-button-styles`. The `kol-global` reset (`background`, `width`, `margin`, `padding`,\n * `border`) and the a11y layer `min-height`/`min-width` apply to the native button, on top of the\n * UA `inline-block`, but not to the `div` root that carries the `kol-button` class. This mixin\n * replicates that outer box on the root, while the inner `kol-button__interactive-element` degrades\n * to a plain block container to avoid the inline-level baseline gap the UA `inline-block` would add\n * below it.\n *\n * Mutually exclusive with `kol-button-styles` above — see the collision note there.\n */\n@layer kol-component {\n .kol-alert .kol-icon {\n color: inherit;\n display: inline-block;\n font-size: inherit;\n font-weight: inherit;\n line-height: inherit;\n }\n .kol-alert :host {\n display: inline-block;\n }\n .kol-alert .kol-button {\n display: flex;\n height: 100%;\n min-height: var(--a11y-min-size);\n text-decoration-line: none;\n /* The interactive element is the flex container positioning the text, so it carries the\n box the root element used to be. The UA default underline sits on that element too,\n so suppressing `text-decoration` on the wrapper alone is not enough. */\n }\n .kol-alert .kol-button__interactive-element {\n display: flex;\n flex: 1;\n text-align: left;\n text-decoration-line: none;\n /* A flex container only exposes a baseline if it has an in-flow text box to derive one\n from; without it the surrounding inline formatting context falls back to the bottom\n margin edge and everything after the element shifts by 1px. The zero-width space\n supplies that box. Measured, not assumed: removing it turns `popover-button/inline`\n and `input-file/basic` red against the develop baseline (the box grows 179→180px). */\n }\n .kol-alert .kol-button__interactive-element::before {\n content: "​";\n }\n .kol-alert .kol-button__text {\n flex: 1 0 100%;\n }\n .kol-alert .kol-button {\n /* The tooltip wrapper holds only the absolutely positioned floating tooltip. In the legacy\n DOM it sat in a block flow and collapsed to zero height; as a flex/grid item it would\n stretch to the container height instead, adding phantom rows to the layout. */\n }\n .kol-alert .kol-button__tooltip {\n height: 0;\n }\n .kol-alert .kol-button--external-link > .kolicon-link-external::before {\n content: none;\n }\n .kol-alert .kol-button--external-link .kol-button__interactive-element > .kolicon-link-external::before {\n content: none;\n }\n .kol-alert {\n display: grid;\n grid-template-areas: "icon heading close" "icon content close";\n grid-template-columns: min-content 1fr min-content;\n grid-template-rows: min-content min-content;\n }\n .kol-alert__icon {\n grid-area: icon;\n }\n .kol-alert__heading {\n grid-area: heading;\n }\n .kol-alert__closer {\n /* Visible with forced colors */\n outline: transparent solid calc(1 * 1rem / var(--kolibri-root-font-size, 16));\n grid-area: close;\n }\n .kol-alert__content {\n grid-area: content;\n }\n}';const A=class extends d{constructor(e){super();n(this,e);this.headingId=m("alert-heading");this.closerAriaDescriptionId=u();this.translateCloseAlert=i("kol-close-alert");this.closerRef=k();this.closerTooltipBehavior=new b(this.stateAccess);this._alert=false;this._hasCloser=false;this._level=0;this._type="default";this._variant="msg";this.handleAlertTimeout=()=>{this.watchAlert(false)};this.handleCloserClick=n=>{var e,t;n.stopPropagation();this.closerTooltipBehavior.hideTooltip();(t=(e=this.getRenderProp("on")).onClose)===null||t===void 0?void 0:t.call(e,new Event("Close"));if(this.host){g(this.host,y.close)}}}watchAlert(n){x.apply(n,(n=>{this.setRenderProp("alert",n);this.syncAlertEffects(n)}))}watchHasCloser(n){h.apply(n,(n=>this.setRenderProp("hasCloser",n)))}watchLabel(n){f.apply(n,(n=>this.setRenderProp("label",n)))}watchLevel(n){l.apply(n,(n=>this.setRenderProp("level",n)))}watchOn(n){_.apply(n,(n=>this.setRenderProp("on",n)))}watchType(n){T.apply(n,(n=>this.setRenderProp("type",n)))}watchVariant(n){C.apply(n,(n=>this.setRenderProp("variant",n)))}componentWillLoad(){this.initRenderProps(j);this.watchAlert(this._alert);this.watchHasCloser(this._hasCloser);this.watchLabel(this._label);this.watchLevel(this._level);this.watchOn(this._on);this.watchType(this._type);this.watchVariant(this._variant);this.closerTooltipBehavior.componentWillLoad({label:this.translateCloseAlert,align:"left"})}componentDidRender(){if(this.closerRef.el){this.closerTooltipBehavior.syncListeners(undefined,this.closerRef.el,true)}}disconnectedCallback(){this.closerTooltipBehavior.destroy();this.syncAlertEffects(false)}syncAlertEffects(n){clearTimeout(this.alertTimeout);if(!n){return}if(typeof navigator!=="undefined"&&typeof navigator.vibrate==="function"){const n=navigator.userActivation;const e=(n===null||n===void 0?void 0:n.isActive)||(n===null||n===void 0?void 0:n.hasBeenActive);if(e&&matchMedia("(any-pointer: coarse)").matches){try{navigator.vibrate([100,75,100,75,100])}catch(n){}}}this.alertTimeout=setTimeout((()=>this.handleAlertTimeout()),1e4)}render(){return e(t,{key:"0367ba20fdb9c1d076bee92fdfe7efb5a770e088"},e(p,{key:"f34473dbc78f60471d435791e1dd905e20b038f6",alert:this.getRenderProp("alert"),handleCloserClick:this.handleCloserClick,closerAriaDescriptionId:this.closerAriaDescriptionId,hasCloser:this.getRenderProp("hasCloser"),headingId:this.headingId,label:this.getRenderProp("label"),level:this.getRenderProp("level"),refCloserButton:this.closerRef,refCloserTooltip:this.closerTooltipBehavior.setTooltipElementRef,type:this.getRenderProp("type"),variant:this.getRenderProp("variant")},e("slot",{key:"7ff3d6c012666e8a309889b6049f2c694be417ba"})))}get host(){return o(this)}static get watchers(){return{_alert:["watchAlert"],_hasCloser:["watchHasCloser"],_label:["watchLabel"],_level:["watchLevel"],_on:["watchOn"],_type:["watchType"],_variant:["watchVariant"]}}};A.style={default:z};export{A as kol_alert};
5
5
  //# sourceMappingURL=kol-alert.entry.js.map