@public-ui/components 4.5.0-rc.7 → 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 (499) 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-d30Feghg.js → Heading-CFe7VL6f.js} +3 -3
  8. package/dist/cjs/{Heading-d30Feghg.js.map → Heading-CFe7VL6f.js.map} +1 -1
  9. package/dist/cjs/{api-C8ZkIyx7.js → api-kNqVTMqf.js} +8 -8
  10. package/dist/cjs/{api-C8ZkIyx7.js.map → api-kNqVTMqf.js.map} +1 -1
  11. package/dist/cjs/{api-CRSjJs8P.js → api-n8IopicV.js} +12 -12
  12. package/dist/cjs/{api-CRSjJs8P.js.map → api-n8IopicV.js.map} +1 -1
  13. package/dist/cjs/{app-globals-B6wB2cXk.js → app-globals-KA8S4Kl9.js} +4 -4
  14. package/dist/cjs/{app-globals-B6wB2cXk.js.map → app-globals-KA8S4Kl9.js.map} +1 -1
  15. package/dist/cjs/{base-LmwA5h1k.js → base-B07RMt0-.js} +5 -5
  16. package/dist/cjs/{base-LmwA5h1k.js.map → base-B07RMt0-.js.map} +1 -1
  17. package/dist/cjs/{base-C3MDHUog.js → base-Bw44v5Il.js} +4 -4
  18. package/dist/cjs/{base-C3MDHUog.js.map → base-Bw44v5Il.js.map} +1 -1
  19. package/dist/cjs/{base-DgUZAiNc.js → base-DGx5qxja.js} +16 -16
  20. package/dist/cjs/{base-DgUZAiNc.js.map → base-DGx5qxja.js.map} +1 -1
  21. package/dist/cjs/{base-CyQnTxi6.js → base-Og0FJHrO.js} +4 -4
  22. package/dist/cjs/{base-CyQnTxi6.js.map → base-Og0FJHrO.js.map} +1 -1
  23. package/dist/cjs/{base-web-component-C-CwpVZw.js → base-web-component-9l9kVbBw.js} +5 -5
  24. package/dist/cjs/{base-web-component-C-CwpVZw.js.map → base-web-component-9l9kVbBw.js.map} +1 -1
  25. package/dist/cjs/{base-web-component-d2k3Mc9P.js → base-web-component-MA3Hmf00.js} +7 -7
  26. package/dist/cjs/{base-web-component-d2k3Mc9P.js.map → base-web-component-MA3Hmf00.js.map} +1 -1
  27. package/dist/cjs/{behavior-C-BdOoSN.js → behavior-CddJDVDz.js} +3 -3
  28. package/dist/cjs/{behavior-C-BdOoSN.js.map → behavior-CddJDVDz.js.map} +1 -1
  29. package/dist/cjs/{component-D2kI8uwF.js → component-8M23HGR8.js} +5 -5
  30. package/dist/cjs/{component-D2kI8uwF.js.map → component-8M23HGR8.js.map} +1 -1
  31. package/dist/cjs/{component-BIz_gAas.js → component-B1t_MP4V.js} +7 -7
  32. package/dist/cjs/{component-BIz_gAas.js.map → component-B1t_MP4V.js.map} +1 -1
  33. package/dist/cjs/{component-B1kzY-J5.js → component-B92xMW4N.js} +4 -4
  34. package/dist/cjs/{component-B1kzY-J5.js.map → component-B92xMW4N.js.map} +1 -1
  35. package/dist/cjs/{component-BairlFHi.js → component-BGdViN9u.js} +3 -3
  36. package/dist/cjs/{component-BairlFHi.js.map → component-BGdViN9u.js.map} +1 -1
  37. package/dist/cjs/{component-B1zMXSkZ.js → component-BZKcc9iM.js} +5 -5
  38. package/dist/cjs/{component-B1zMXSkZ.js.map → component-BZKcc9iM.js.map} +1 -1
  39. package/dist/cjs/{component-CmyhDJ0r.js → component-C8WDkeRK.js} +3 -3
  40. package/dist/cjs/{component-CmyhDJ0r.js.map → component-C8WDkeRK.js.map} +1 -1
  41. package/dist/cjs/{component-BHDnSaCH.js → component-CESKZB76.js} +3 -3
  42. package/dist/cjs/{component-BHDnSaCH.js.map → component-CESKZB76.js.map} +1 -1
  43. package/dist/cjs/{component-D33lYKYT.js → component-CQRRF1jV.js} +3 -3
  44. package/dist/cjs/{component-D33lYKYT.js.map → component-CQRRF1jV.js.map} +1 -1
  45. package/dist/cjs/{component-DaAVlb5U.js → component-D7IXFVHR.js} +4 -4
  46. package/dist/cjs/{component-DaAVlb5U.js.map → component-D7IXFVHR.js.map} +1 -1
  47. package/dist/cjs/{component-DITtC2F9.js → component-Dzx6SM5K.js} +7 -7
  48. package/dist/cjs/{component-DITtC2F9.js.map → component-Dzx6SM5K.js.map} +1 -1
  49. package/dist/cjs/{component-_jdRFw0Y.js → component-K9JCKLMC.js} +4 -4
  50. package/dist/cjs/{component-_jdRFw0Y.js.map → component-K9JCKLMC.js.map} +1 -1
  51. package/dist/cjs/{component-KT0MKnL5.js → component-inHq7qad.js} +5 -5
  52. package/dist/cjs/{component-KT0MKnL5.js.map → component-inHq7qad.js.map} +1 -1
  53. package/dist/cjs/{dev.utils-B1bWgxrQ.js → dev.utils-CIsKrkDZ.js} +3 -3
  54. package/dist/cjs/{dev.utils-B1bWgxrQ.js.map → dev.utils-CIsKrkDZ.js.map} +1 -1
  55. package/dist/cjs/{devtools-DlcIXbRm.js → devtools-DEHRYx1J.js} +4 -4
  56. package/dist/cjs/{devtools-DlcIXbRm.js.map → devtools-DEHRYx1J.js.map} +1 -1
  57. package/dist/cjs/{field-control-D0lryu2-.js → field-control-gMhh35Xz.js} +8 -8
  58. package/dist/cjs/{field-control-D0lryu2-.js.map → field-control-gMhh35Xz.js.map} +1 -1
  59. package/dist/cjs/{group-DIGY9sM6.js → group-eUk7QHkH.js} +5 -5
  60. package/dist/cjs/{group-DIGY9sM6.js.map → group-eUk7QHkH.js.map} +1 -1
  61. package/dist/cjs/{index-qcrGfEY6.js → index-CjTDipy9.js} +3 -3
  62. package/dist/cjs/index-CjTDipy9.js.map +1 -0
  63. package/dist/cjs/{input-BjNjOSo5.js → input-D1hDtOel.js} +5 -5
  64. package/dist/cjs/{input-BjNjOSo5.js.map → input-D1hDtOel.js.map} +1 -1
  65. package/dist/cjs/{input-container-DghKiuUH.js → input-container-C9wW0ZFj.js} +7 -7
  66. package/dist/cjs/{input-container-DghKiuUH.js.map → input-container-C9wW0ZFj.js.map} +1 -1
  67. package/dist/cjs/{item-BMB6SaVm.js → item-C6TgTi4l.js} +4 -4
  68. package/dist/cjs/{item-BMB6SaVm.js.map → item-C6TgTi4l.js.map} +1 -1
  69. package/dist/cjs/{item-BKz8BDg2.js → item-D2TI8Iec.js} +4 -4
  70. package/dist/cjs/{item-BKz8BDg2.js.map → item-D2TI8Iec.js.map} +1 -1
  71. package/dist/cjs/{item-DdnTb-BP.js → item-DoAJ6Wmk.js} +3 -3
  72. package/dist/cjs/{item-DdnTb-BP.js.map → item-DoAJ6Wmk.js.map} +1 -1
  73. package/dist/cjs/{item-CFojolE7.js → item-se0KVw5y.js} +8 -8
  74. package/dist/cjs/{item-CFojolE7.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-pAyNSZMT.js → resolve-props-JqnN_2MF.js} +3 -3
  132. package/dist/cjs/{resolve-props-pAyNSZMT.js.map → resolve-props-JqnN_2MF.js.map} +1 -1
  133. package/dist/cjs/{scroll-lock-CNwobwd2.js → scroll-lock-CxkP-oj1.js} +3 -3
  134. package/dist/cjs/{scroll-lock-CNwobwd2.js.map → scroll-lock-CxkP-oj1.js.map} +1 -1
  135. package/dist/cjs/{suggestions-D4TMMZSv.js → suggestions-BDfdREI5.js} +4 -4
  136. package/dist/cjs/{suggestions-D4TMMZSv.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-mIB8gvse.js → toggle-handler-Bm0e15f-.js} +5 -5
  139. package/dist/cjs/{toggle-handler-mIB8gvse.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-NHB1reiQ.js → Heading-DYEtnAIe.js} +3 -3
  223. package/dist/{kolibri/Heading-NHB1reiQ.js.map → esm/Heading-DYEtnAIe.js.map} +1 -1
  224. package/dist/esm/{api-BAEPnyL7.js → api-Bhr2ic7C.js} +12 -12
  225. package/dist/{kolibri/api-BAEPnyL7.js.map → esm/api-Bhr2ic7C.js.map} +1 -1
  226. package/dist/esm/{api-CagcODCX.js → api-DwdE0qU0.js} +8 -8
  227. package/dist/esm/{api-CagcODCX.js.map → api-DwdE0qU0.js.map} +1 -1
  228. package/dist/esm/{app-globals-CwlOH1sO.js → app-globals-DlrwRj26.js} +4 -4
  229. package/dist/esm/{app-globals-CwlOH1sO.js.map → app-globals-DlrwRj26.js.map} +1 -1
  230. package/dist/esm/{base-BFU17cMm.js → base-BwsdAVVP.js} +16 -16
  231. package/dist/{kolibri/base-BFU17cMm.js.map → esm/base-BwsdAVVP.js.map} +1 -1
  232. package/dist/esm/{base-BpKxLJ6r.js → base-CQQKxfxv.js} +4 -4
  233. package/dist/{kolibri/base-BpKxLJ6r.js.map → esm/base-CQQKxfxv.js.map} +1 -1
  234. package/dist/esm/{base-Cm_c8klt.js → base-CdUYL1Y_.js} +5 -5
  235. package/dist/esm/{base-Cm_c8klt.js.map → base-CdUYL1Y_.js.map} +1 -1
  236. package/dist/esm/{base-DitGpYOV.js → base-D5a-Ls-4.js} +4 -4
  237. package/dist/{kolibri/base-DitGpYOV.js.map → esm/base-D5a-Ls-4.js.map} +1 -1
  238. package/dist/esm/{base-web-component-BFCVvyYG.js → base-web-component-6IoFcVM9.js} +7 -7
  239. package/dist/{kolibri/base-web-component-BFCVvyYG.js.map → esm/base-web-component-6IoFcVM9.js.map} +1 -1
  240. package/dist/esm/{base-web-component-6J5sCsnZ.js → base-web-component-CyCs0EpM.js} +5 -5
  241. package/dist/esm/{base-web-component-6J5sCsnZ.js.map → base-web-component-CyCs0EpM.js.map} +1 -1
  242. package/dist/esm/{behavior-CH_2MMuX.js → behavior-COQhqcG7.js} +3 -3
  243. package/dist/{kolibri/behavior-CH_2MMuX.js.map → esm/behavior-COQhqcG7.js.map} +1 -1
  244. package/dist/esm/{component-Dg6TIbeY.js → component-BOFlST8N.js} +5 -5
  245. package/dist/{kolibri/component-Dg6TIbeY.js.map → esm/component-BOFlST8N.js.map} +1 -1
  246. package/dist/esm/{component-BpOMe842.js → component-C4dhT4Ba.js} +3 -3
  247. package/dist/{kolibri/component-BpOMe842.js.map → esm/component-C4dhT4Ba.js.map} +1 -1
  248. package/dist/esm/{component-Ba4gjLBG.js → component-C9cJK7Cf.js} +5 -5
  249. package/dist/esm/{component-Ba4gjLBG.js.map → component-C9cJK7Cf.js.map} +1 -1
  250. package/dist/esm/{component-Do9rjnte.js → component-CBkrKKXd.js} +7 -7
  251. package/dist/esm/{component-Do9rjnte.js.map → component-CBkrKKXd.js.map} +1 -1
  252. package/dist/esm/{component-C5BFsKau.js → component-CHz6TLzY.js} +5 -5
  253. package/dist/esm/{component-C5BFsKau.js.map → component-CHz6TLzY.js.map} +1 -1
  254. package/dist/esm/{component-CBpYh2q-.js → component-CODtL04S.js} +7 -7
  255. package/dist/esm/{component-CBpYh2q-.js.map → component-CODtL04S.js.map} +1 -1
  256. package/dist/esm/{component-C3sXiwbS.js → component-D30YHxgS.js} +3 -3
  257. package/dist/esm/{component-C3sXiwbS.js.map → component-D30YHxgS.js.map} +1 -1
  258. package/dist/esm/{component-DZbJLUju.js → component-DXmRJdLc.js} +4 -4
  259. package/dist/{kolibri/component-DZbJLUju.js.map → esm/component-DXmRJdLc.js.map} +1 -1
  260. package/dist/esm/{component-C_d54ujF.js → component-DoCNds1d.js} +4 -4
  261. package/dist/{kolibri/component-C_d54ujF.js.map → esm/component-DoCNds1d.js.map} +1 -1
  262. package/dist/esm/{component-CvCfEqSE.js → component-fK2EUkFf.js} +4 -4
  263. package/dist/esm/{component-CvCfEqSE.js.map → component-fK2EUkFf.js.map} +1 -1
  264. package/dist/esm/{component-BF8FPuIW.js → component-kDR4_xf0.js} +3 -3
  265. package/dist/esm/{component-BF8FPuIW.js.map → component-kDR4_xf0.js.map} +1 -1
  266. package/dist/esm/{component-DzoBgfR4.js → component-kxFmDVse.js} +3 -3
  267. package/dist/esm/{component-DzoBgfR4.js.map → component-kxFmDVse.js.map} +1 -1
  268. package/dist/esm/{dev.utils-CJMVCYWh.js → dev.utils-DDqySnXB.js} +3 -3
  269. package/dist/{kolibri/dev.utils-CJMVCYWh.js.map → esm/dev.utils-DDqySnXB.js.map} +1 -1
  270. package/dist/esm/{devtools-rRHULXVr.js → devtools-CjmOcVsT.js} +4 -4
  271. package/dist/{kolibri/devtools-rRHULXVr.js.map → esm/devtools-CjmOcVsT.js.map} +1 -1
  272. package/dist/esm/{field-control-DXxCMXvx.js → field-control-Dkru7B-M.js} +8 -8
  273. package/dist/{kolibri/field-control-DXxCMXvx.js.map → esm/field-control-Dkru7B-M.js.map} +1 -1
  274. package/dist/esm/{group-CI4sSgiu.js → group-CXJiUqKv.js} +5 -5
  275. package/dist/esm/{group-CI4sSgiu.js.map → group-CXJiUqKv.js.map} +1 -1
  276. package/dist/esm/{index-DQdQBwMc.js → index-wY4pHWJG.js} +3 -3
  277. package/dist/esm/index-wY4pHWJG.js.map +1 -0
  278. package/dist/esm/{input-CDtJZ2sy.js → input-C_ZwHs-7.js} +5 -5
  279. package/dist/esm/{input-CDtJZ2sy.js.map → input-C_ZwHs-7.js.map} +1 -1
  280. package/dist/esm/{input-container-DROwwh7_.js → input-container-CBl9xcK-.js} +7 -7
  281. package/dist/{kolibri/input-container-DROwwh7_.js.map → esm/input-container-CBl9xcK-.js.map} +1 -1
  282. package/dist/esm/{item-C6p5wW-z.js → item-BacIXvMT.js} +4 -4
  283. package/dist/esm/{item-C6p5wW-z.js.map → item-BacIXvMT.js.map} +1 -1
  284. package/dist/esm/{item-CHP-bw8Q.js → item-DewHrd_f.js} +4 -4
  285. package/dist/{kolibri/item-CHP-bw8Q.js.map → esm/item-DewHrd_f.js.map} +1 -1
  286. package/dist/esm/{item-Cbi_ZY6o.js → item-lEB6GAqe.js} +3 -3
  287. package/dist/esm/{item-Cbi_ZY6o.js.map → item-lEB6GAqe.js.map} +1 -1
  288. package/dist/esm/{item-ZjrNIhfW.js → item-nGiqyOvt.js} +8 -8
  289. package/dist/{kolibri/item-ZjrNIhfW.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-CjBvvXId.js → resolve-props-DrFDeILa.js} +3 -3
  347. package/dist/esm/{resolve-props-CjBvvXId.js.map → resolve-props-DrFDeILa.js.map} +1 -1
  348. package/dist/esm/{scroll-lock-6SV-XFXR.js → scroll-lock-BotxOlMX.js} +3 -3
  349. package/dist/{kolibri/scroll-lock-6SV-XFXR.js.map → esm/scroll-lock-BotxOlMX.js.map} +1 -1
  350. package/dist/esm/{suggestions-BYMmW1aV.js → suggestions-CX5S2xAI.js} +4 -4
  351. package/dist/esm/{suggestions-BYMmW1aV.js.map → suggestions-CX5S2xAI.js.map} +1 -1
  352. package/dist/esm/test-component.entry.js +1 -1
  353. package/dist/esm/{toggle-handler-D-yalcds.js → toggle-handler-VctiltrE.js} +5 -5
  354. package/dist/esm/{toggle-handler-D-yalcds.js.map → toggle-handler-VctiltrE.js.map} +1 -1
  355. package/dist/kolibri/{Heading-NHB1reiQ.js → Heading-DYEtnAIe.js} +2 -2
  356. package/dist/{esm/Heading-NHB1reiQ.js.map → kolibri/Heading-DYEtnAIe.js.map} +1 -1
  357. package/dist/kolibri/{api-BAEPnyL7.js → api-Bhr2ic7C.js} +2 -2
  358. package/dist/{esm/api-BAEPnyL7.js.map → kolibri/api-Bhr2ic7C.js.map} +1 -1
  359. package/dist/kolibri/api-DwdE0qU0.js +5 -0
  360. package/dist/kolibri/{api-CagcODCX.js.map → api-DwdE0qU0.js.map} +1 -1
  361. package/dist/kolibri/app-globals-DlrwRj26.js +5 -0
  362. package/dist/kolibri/{app-globals-CwlOH1sO.js.map → app-globals-DlrwRj26.js.map} +1 -1
  363. package/dist/kolibri/{base-BFU17cMm.js → base-BwsdAVVP.js} +2 -2
  364. package/dist/{esm/base-BFU17cMm.js.map → kolibri/base-BwsdAVVP.js.map} +1 -1
  365. package/dist/kolibri/{base-BpKxLJ6r.js → base-CQQKxfxv.js} +2 -2
  366. package/dist/{esm/base-BpKxLJ6r.js.map → kolibri/base-CQQKxfxv.js.map} +1 -1
  367. package/dist/kolibri/{base-Cm_c8klt.js → base-CdUYL1Y_.js} +2 -2
  368. package/dist/kolibri/{base-Cm_c8klt.js.map → base-CdUYL1Y_.js.map} +1 -1
  369. package/dist/kolibri/{base-DitGpYOV.js → base-D5a-Ls-4.js} +2 -2
  370. package/dist/{esm/base-DitGpYOV.js.map → kolibri/base-D5a-Ls-4.js.map} +1 -1
  371. package/dist/kolibri/{base-web-component-BFCVvyYG.js → base-web-component-6IoFcVM9.js} +2 -2
  372. package/dist/{esm/base-web-component-BFCVvyYG.js.map → kolibri/base-web-component-6IoFcVM9.js.map} +1 -1
  373. package/dist/kolibri/{base-web-component-6J5sCsnZ.js → base-web-component-CyCs0EpM.js} +2 -2
  374. package/dist/kolibri/{base-web-component-6J5sCsnZ.js.map → base-web-component-CyCs0EpM.js.map} +1 -1
  375. package/dist/kolibri/{behavior-CH_2MMuX.js → behavior-COQhqcG7.js} +2 -2
  376. package/dist/{esm/behavior-CH_2MMuX.js.map → kolibri/behavior-COQhqcG7.js.map} +1 -1
  377. package/dist/kolibri/{component-Dg6TIbeY.js → component-BOFlST8N.js} +2 -2
  378. package/dist/{esm/component-Dg6TIbeY.js.map → kolibri/component-BOFlST8N.js.map} +1 -1
  379. package/dist/kolibri/{component-BpOMe842.js → component-C4dhT4Ba.js} +2 -2
  380. package/dist/{esm/component-BpOMe842.js.map → kolibri/component-C4dhT4Ba.js.map} +1 -1
  381. package/dist/kolibri/component-C9cJK7Cf.js +5 -0
  382. package/dist/kolibri/{component-Ba4gjLBG.js.map → component-C9cJK7Cf.js.map} +1 -1
  383. package/dist/kolibri/{component-Do9rjnte.js → component-CBkrKKXd.js} +2 -2
  384. package/dist/kolibri/{component-Do9rjnte.js.map → component-CBkrKKXd.js.map} +1 -1
  385. package/dist/kolibri/component-CHz6TLzY.js +5 -0
  386. package/dist/kolibri/{component-C5BFsKau.js.map → component-CHz6TLzY.js.map} +1 -1
  387. package/dist/kolibri/component-CODtL04S.js +5 -0
  388. package/dist/kolibri/{component-CBpYh2q-.js.map → component-CODtL04S.js.map} +1 -1
  389. package/dist/kolibri/{component-C3sXiwbS.js → component-D30YHxgS.js} +2 -2
  390. package/dist/kolibri/{component-C3sXiwbS.js.map → component-D30YHxgS.js.map} +1 -1
  391. package/dist/kolibri/{component-DZbJLUju.js → component-DXmRJdLc.js} +2 -2
  392. package/dist/{esm/component-DZbJLUju.js.map → kolibri/component-DXmRJdLc.js.map} +1 -1
  393. package/dist/kolibri/{component-C_d54ujF.js → component-DoCNds1d.js} +2 -2
  394. package/dist/{esm/component-C_d54ujF.js.map → kolibri/component-DoCNds1d.js.map} +1 -1
  395. package/dist/kolibri/{component-CvCfEqSE.js → component-fK2EUkFf.js} +2 -2
  396. package/dist/kolibri/{component-CvCfEqSE.js.map → component-fK2EUkFf.js.map} +1 -1
  397. package/dist/kolibri/{component-BF8FPuIW.js → component-kDR4_xf0.js} +2 -2
  398. package/dist/kolibri/{component-BF8FPuIW.js.map → component-kDR4_xf0.js.map} +1 -1
  399. package/dist/kolibri/component-kxFmDVse.js +5 -0
  400. package/dist/kolibri/{component-DzoBgfR4.js.map → component-kxFmDVse.js.map} +1 -1
  401. package/dist/kolibri/{dev.utils-CJMVCYWh.js → dev.utils-DDqySnXB.js} +2 -2
  402. package/dist/{esm/dev.utils-CJMVCYWh.js.map → kolibri/dev.utils-DDqySnXB.js.map} +1 -1
  403. package/dist/kolibri/{devtools-rRHULXVr.js → devtools-CjmOcVsT.js} +2 -2
  404. package/dist/{esm/devtools-rRHULXVr.js.map → kolibri/devtools-CjmOcVsT.js.map} +1 -1
  405. package/dist/kolibri/field-control-Dkru7B-M.js +5 -0
  406. package/dist/{esm/field-control-DXxCMXvx.js.map → kolibri/field-control-Dkru7B-M.js.map} +1 -1
  407. package/dist/kolibri/{group-CI4sSgiu.js → group-CXJiUqKv.js} +2 -2
  408. package/dist/kolibri/{group-CI4sSgiu.js.map → group-CXJiUqKv.js.map} +1 -1
  409. package/dist/kolibri/{index-DQdQBwMc.js → index-wY4pHWJG.js} +2 -2
  410. package/dist/kolibri/index-wY4pHWJG.js.map +1 -0
  411. package/dist/kolibri/{input-CDtJZ2sy.js → input-C_ZwHs-7.js} +2 -2
  412. package/dist/kolibri/{input-CDtJZ2sy.js.map → input-C_ZwHs-7.js.map} +1 -1
  413. package/dist/kolibri/{input-container-DROwwh7_.js → input-container-CBl9xcK-.js} +2 -2
  414. package/dist/{esm/input-container-DROwwh7_.js.map → kolibri/input-container-CBl9xcK-.js.map} +1 -1
  415. package/dist/kolibri/item-BacIXvMT.js +5 -0
  416. package/dist/kolibri/{item-C6p5wW-z.js.map → item-BacIXvMT.js.map} +1 -1
  417. package/dist/kolibri/item-DewHrd_f.js +5 -0
  418. package/dist/{esm/item-CHP-bw8Q.js.map → kolibri/item-DewHrd_f.js.map} +1 -1
  419. package/dist/kolibri/{item-Cbi_ZY6o.js → item-lEB6GAqe.js} +2 -2
  420. package/dist/kolibri/{item-Cbi_ZY6o.js.map → item-lEB6GAqe.js.map} +1 -1
  421. package/dist/kolibri/{item-ZjrNIhfW.js → item-nGiqyOvt.js} +2 -2
  422. package/dist/{esm/item-ZjrNIhfW.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-CjBvvXId.js → resolve-props-DrFDeILa.js} +2 -2
  479. package/dist/kolibri/{resolve-props-CjBvvXId.js.map → resolve-props-DrFDeILa.js.map} +1 -1
  480. package/dist/kolibri/{scroll-lock-6SV-XFXR.js → scroll-lock-BotxOlMX.js} +2 -2
  481. package/dist/{esm/scroll-lock-6SV-XFXR.js.map → kolibri/scroll-lock-BotxOlMX.js.map} +1 -1
  482. package/dist/kolibri/{suggestions-BYMmW1aV.js → suggestions-CX5S2xAI.js} +2 -2
  483. package/dist/kolibri/{suggestions-BYMmW1aV.js.map → suggestions-CX5S2xAI.js.map} +1 -1
  484. package/dist/kolibri/test-component.entry.js +1 -1
  485. package/dist/kolibri/{toggle-handler-D-yalcds.js → toggle-handler-VctiltrE.js} +2 -2
  486. package/dist/kolibri/{toggle-handler-D-yalcds.js.map → toggle-handler-VctiltrE.js.map} +1 -1
  487. package/package.json +2 -2
  488. package/dist/cjs/index-qcrGfEY6.js.map +0 -1
  489. package/dist/esm/index-DQdQBwMc.js.map +0 -1
  490. package/dist/kolibri/api-CagcODCX.js +0 -5
  491. package/dist/kolibri/app-globals-CwlOH1sO.js +0 -5
  492. package/dist/kolibri/component-Ba4gjLBG.js +0 -5
  493. package/dist/kolibri/component-C5BFsKau.js +0 -5
  494. package/dist/kolibri/component-CBpYh2q-.js +0 -5
  495. package/dist/kolibri/component-DzoBgfR4.js +0 -5
  496. package/dist/kolibri/field-control-DXxCMXvx.js +0 -5
  497. package/dist/kolibri/index-DQdQBwMc.js.map +0 -1
  498. package/dist/kolibri/item-C6p5wW-z.js +0 -5
  499. package/dist/kolibri/item-CHP-bw8Q.js +0 -5
@@ -1 +1 @@
1
- {"version":3,"file":"base-DgUZAiNc.js","sources":["src/schema/props/aria-labelledby.ts","src/internal/props/fixed-cols.ts","src/internal/props/has-settings-menu.ts","src/internal/props/table-callbacks.ts","src/internal/props/table-data.ts","src/internal/props/table-data-foot.ts","src/internal/props/table-headers.ts","src/internal/props/table-loading.ts","src/internal/props/table-selection.ts","src/internal/functional-components/table-stateless/api.tsx","src/internal/functional-components/table-stateless/table-model.ts","src/internal/functional-components/table-stateless/component.tsx","src/internal/functional-components/dialog/item.tsx","src/internal/functional-components/table-stateless/settings.tsx","src/components/table-stateless/base.tsx"],"sourcesContent":["import type { Generic } from 'adopted-style-sheets';\n\nimport type { HostInternals } from '../../utils/aria-labelledby';\nimport { resolveTargets } from '../../utils/aria-labelledby';\nimport { Log, watchValidator } from '../utils';\n\n/* types */\n/**\n * An IDREF (space-separated) identifying external element(s) that label this component.\n *\n * Internally the component resolves the IDREF to an element reference and sets it via\n * ElementInternals.ariaLabelledByElements so the accessible name crosses the Shadow DOM\n * boundary. Desktop screen readers (NVDA + Chrome, JAWS + Chrome) follow this chain;\n * mobile screen readers (TalkBack, VoiceOver iOS) do not yet support element references\n * across shadow boundaries — use `_label` when TalkBack support is required.\n */\nexport type AriaLabelledbyPropType = string;\n\nexport type PropAriaLabelledby = {\n\tariaLabelledby: AriaLabelledbyPropType;\n};\n\n/* validator */\nexport const validateAriaLabelledby = (\n\tcomponent: unknown,\n\thost: HTMLElement | undefined,\n\tinternals: HostInternals | undefined,\n\tvalue?: AriaLabelledbyPropType,\n): HTMLElement[] => {\n\tconst isValid = (value?: unknown): boolean => typeof value === 'string' || typeof value === 'undefined';\n\twatchValidator(component as Generic.Element.Component, '_ariaLabelledby', isValid, new Set(['string']), value);\n\tif (!isValid(value)) {\n\t\t// An invalid value is only logged: it resolves to no element and leaves the internals untouched.\n\t\treturn [];\n\t}\n\n\tconst elements = resolveTargets(host, value);\n\tif (internals) {\n\t\ttry {\n\t\t\tinternals.ariaLabelledByElements = elements;\n\t\t} catch {\n\t\t\t// ariaLabelledByElements is not supported in this environment — silently skip.\n\t\t}\n\t\tLog.debug(['WebComponent internals', internals]);\n\t}\n\treturn elements;\n};\n","import type { FixedColsPropType } from '../../schema';\nimport type { SimpleProp } from './helpers/factory';\nimport { createPropDefinition } from './helpers/factory';\nimport { normalizeArray } from './helpers/normalizers';\n\n/**\n * Number of sticky columns at the start and at the end of a table.\n *\n * The default `[0, 0]` fixes no column, which renders exactly like an unset value: no column index\n * is lower than 0 or at least as high as the column count.\n */\nexport type FixedColsProp = SimpleProp<'fixedCols', FixedColsPropType>;\n\nconst isFixedColCount = (value: unknown): boolean => typeof value === 'number' && Number.isInteger(value) && value >= 0;\n\nexport const fixedColsProp = createPropDefinition<FixedColsProp>(\n\t'fixedCols',\n\t[0, 0],\n\t(value) => normalizeArray(value) as FixedColsPropType,\n\t(value) => value.length === 2 && value.every(isFixedColCount),\n);\n","import type { SimpleProp } from './helpers/factory';\nimport { createPropDefinition } from './helpers/factory';\nimport { normalizeBoolean } from './helpers/normalizers';\n\n/**\n * Whether a component shows its settings menu (e.g. the column settings of a table).\n */\nexport type HasSettingsMenuProp = SimpleProp<'hasSettingsMenu', boolean>;\nexport const hasSettingsMenuProp = createPropDefinition<HasSettingsMenuProp>('hasSettingsMenu', false, normalizeBoolean);\n","import type { TableCallbacksPropType } from '../../schema';\nimport { createCallbacksPropDefinition } from './helpers/factory';\n\nexport const tableCallbacksProp = createCallbacksPropDefinition<TableCallbacksPropType>();\n","import type { KoliBriTableDataType, Stringified } from '../../schema';\nimport { parseJson } from '../../schema';\nimport type { Prop } from './helpers/factory';\nimport { createPropDefinition } from './helpers/factory';\n\n/**\n * Rows of a table body or footer.\n *\n * Declared `Stringified<…>`, so the rows also arrive as a JSON string whenever they are set through\n * an HTML attribute. `parseJson` also accepts single-quoted JSON.\n */\nexport type TableDataProp = Prop<'data', Stringified<KoliBriTableDataType[]>, KoliBriTableDataType[]>;\n\n/** Parses and verifies a list of table rows; shared by the body and the footer data. */\nexport function normalizeTableRows(value: unknown): KoliBriTableDataType[] {\n\tconst rows = typeof value === 'string' ? parseJson<unknown>(value) : value;\n\tif (Array.isArray(rows)) {\n\t\treturn rows as KoliBriTableDataType[];\n\t}\n\tthrow new Error('Invalid table data: expected an array of row objects.');\n}\n\n/** Every row must be an object; a list with a non-object entry is rejected as a whole. */\nexport function isTableRows(rows: KoliBriTableDataType[]): boolean {\n\treturn rows.every((row) => typeof row === 'object' && row !== null);\n}\n\nexport const tableDataProp = createPropDefinition<TableDataProp>('data', [], normalizeTableRows, isTableRows);\n","import type { KoliBriTableDataType, Stringified } from '../../schema';\nimport type { Prop } from './helpers/factory';\nimport { createPropDefinition } from './helpers/factory';\nimport { isTableRows, normalizeTableRows } from './table-data';\n\n/**\n * Rows of the table footer. Same shape and normalization as the body rows (`tableDataProp`).\n */\nexport type TableDataFootProp = Prop<'dataFoot', Stringified<KoliBriTableDataType[]>, KoliBriTableDataType[]>;\n\nexport const tableDataFootProp = createPropDefinition<TableDataFootProp>('dataFoot', [], normalizeTableRows, isTableRows);\n","import type { KoliBriTableHeaderCellWithLogic, KoliBriTableHeaders, Stringified, TableHeaderCells } from '../../schema';\nimport { parseJson } from '../../schema';\nimport type { Prop } from './helpers/factory';\nimport { createPropDefinition } from './helpers/factory';\n\n/**\n * Horizontal and vertical header cells of a table, normalized so that both directions are always\n * arrays — an omitted direction renders exactly like an empty one.\n */\nexport type TableHeaders = Required<KoliBriTableHeaders>;\nexport type TableHeadersProp = Prop<'headers', Stringified<TableHeaderCells>, TableHeaders>;\n\nconst isHeaderRows = (rows: unknown): rows is KoliBriTableHeaderCellWithLogic[][] => Array.isArray(rows) && rows.every((row) => Array.isArray(row));\n\nfunction normalizeTableHeaders(value: unknown): TableHeaders {\n\tconst headers = typeof value === 'string' ? parseJson<unknown>(value) : value;\n\tif (typeof headers !== 'object' || headers === null) {\n\t\tthrow new Error('Invalid table headers: expected an object.');\n\t}\n\tconst { horizontal = [], vertical = [] } = headers as KoliBriTableHeaders;\n\tif (!isHeaderRows(horizontal) || !isHeaderRows(vertical)) {\n\t\tthrow new Error('Invalid table headers: horizontal and vertical must be arrays of header rows.');\n\t}\n\treturn { horizontal, vertical };\n}\n\n/** A header width, when given, must be a number of pixels. */\nfunction hasNumericWidths({ horizontal, vertical }: TableHeaders): boolean {\n\treturn [...horizontal, ...vertical].every((row) => row.every((cell) => cell.width === undefined || typeof cell.width === 'number'));\n}\n\nexport const tableHeadersProp = createPropDefinition<TableHeadersProp>('headers', { horizontal: [], vertical: [] }, normalizeTableHeaders, hasNumericWidths);\n","import type { SimpleProp } from './helpers/factory';\nimport { createPropDefinition } from './helpers/factory';\nimport { normalizeBoolean } from './helpers/normalizers';\n\n/**\n * Whether a table shows its loading spinner.\n *\n * Shares the key `loading` with `loadingProp`, which is the unrelated lazy-loading hint of embedded\n * content (`'eager' | 'lazy'`) — hence a definition of its own.\n */\nexport type TableLoadingProp = SimpleProp<'loading', boolean>;\nexport const tableLoadingProp = createPropDefinition<TableLoadingProp>('loading', false, normalizeBoolean);\n","import type { KoliBriTableSelection, Stringified } from '../../schema';\nimport { parseJson } from '../../schema';\nimport type { Prop } from './helpers/factory';\nimport { createPropDefinition } from './helpers/factory';\n\n/**\n * Row selection of a table.\n *\n * `false` is the normalized \"no selection\" and the default: the table then renders no selection\n * column. A selection is only valid with a `label` function, which is why a JSON string can never\n * validate — it is parsed for a meaningful warning, not for use.\n */\nexport type TableSelectionProp = Prop<'selection', Stringified<KoliBriTableSelection>, KoliBriTableSelection | false>;\n\nfunction normalizeTableSelection(value: unknown): KoliBriTableSelection {\n\tconst selection = typeof value === 'string' ? parseJson<unknown>(value) : value;\n\tif (typeof selection === 'object' && selection !== null) {\n\t\treturn selection as KoliBriTableSelection;\n\t}\n\tthrow new Error('Invalid table selection: expected an object.');\n}\n\nfunction isTableSelection(selection: KoliBriTableSelection | false): boolean {\n\treturn selection === false || (typeof selection.label === 'function' && (!selection.selectedKeys || Array.isArray(selection.selectedKeys)));\n}\n\nexport const tableSelectionProp = createPropDefinition<TableSelectionProp>('selection', false, normalizeTableSelection, isTableSelection);\n","import type { KoliBriTableCell, KoliBriTableDataType, KoliBriTableHeaderCell, SelectionChangeEventPayload, SortEventPayload } from '../../../schema';\nimport {\n\tfixedColsProp,\n\thasSettingsMenuProp,\n\tlabelWithExpertSlotProp,\n\ttableCallbacksProp,\n\ttableDataFootProp,\n\ttableDataProp,\n\ttableHeadersProp,\n\ttableLoadingProp,\n\ttableSelectionProp,\n\tvariantProp,\n} from '../../props';\nimport type { ApiFromConfig, PropsConfigShape } from '../generic-types';\n\n/**\n * Props configuration for the stateless table.\n *\n * Notes on prop choices:\n * - `labelWithExpertSlotProp`, not `labelProp`: the label is the table caption, which has no\n * length limit. `labelProp` rejects labels longer than 80 characters and would drop such a\n * caption; the table renders no expert slot either way.\n * - `tableLoadingProp`, not `loadingProp`: both use the key `loading`, but `loadingProp` is the\n * lazy-loading hint of embedded content.\n */\nexport const tableStatelessPropsConfig = {\n\trequired: [labelWithExpertSlotProp, tableDataProp],\n\toptional: [fixedColsProp, hasSettingsMenuProp, tableCallbacksProp, tableDataFootProp, tableHeadersProp, tableLoadingProp, tableSelectionProp, variantProp],\n} as const satisfies PropsConfigShape;\n\nexport type TableStatelessApi = ApiFromConfig<\n\ttypeof tableStatelessPropsConfig,\n\t{\n\t\tCallbacks: {\n\t\t\t/** Runs a cell's custom `render` function against its rendered `<td>`. */\n\t\t\trenderCell: (cell: KoliBriTableCell, element?: HTMLElement) => void;\n\t\t\t/** A selection checkbox or radio changed; the payload is the complete new selection. */\n\t\t\tselectionChange: (event: Event, payload: SelectionChangeEventPayload) => void;\n\t\t\t/** A sort button of a header cell was clicked. */\n\t\t\tsort: (event: MouseEvent, payload: SortEventPayload) => void;\n\t\t};\n\t\tListeners: {\n\t\t\t/** The settings menu applied new horizontal header cells. */\n\t\t\tchangeHeaderCells: CustomEvent<KoliBriTableHeaderCell[][]>;\n\t\t\t/** Arrow up/down moves the focus between the selection checkboxes. */\n\t\t\tkeydown: KeyboardEvent;\n\t\t};\n\t\tRefs: {\n\t\t\tscrollContainer: HTMLDivElement;\n\t\t\ttable: HTMLTableElement;\n\t\t};\n\t\tStates: {\n\t\t\t/**\n\t\t\t * Elements that label the table from outside its shadow root (`_ariaLabelledby`). While\n\t\t\t * there are any, the table renders no caption of its own.\n\t\t\t */\n\t\t\texternalLabelElements: HTMLElement[];\n\t\t\t/** Whether the scroll container overflows horizontally; it then becomes a keyboard stop. */\n\t\t\thasScrollbar: boolean;\n\t\t\t/**\n\t\t\t * A stable key per body row object, so a re-sorted table moves its rows instead of\n\t\t\t * rewriting their cells.\n\t\t\t */\n\t\t\trowKeys: Map<KoliBriTableDataType, string>;\n\t\t\t/**\n\t\t\t * Bumped whenever the settings menu changes the header cells. Part of every body cell's\n\t\t\t * key, so each cell is recreated after a settings change.\n\t\t\t */\n\t\t\tsettingsChangedCounter: number;\n\t\t\t/** Whether the fixed columns are too wide for the container and render unfixed. */\n\t\t\tstickyColsDisabled: boolean;\n\t\t};\n\t}\n>;\n","import type {\n\tActionColumnHeaderCell,\n\tFixedColsPropType,\n\tKoliBriTableCell,\n\tKoliBriTableDataType,\n\tKoliBriTableHeaderCell,\n\tKoliBriTableHeaderCellWithLogic,\n\tKoliBriTableSelection,\n\tKoliBriTableSelectionKey,\n\tStateColumnHeaderCell,\n} from '../../../schema';\nimport type { TableHeaders } from '../../props/table-headers';\n\n/**\n * Pure helpers that derive the rendered table from its render props. They are shared by the\n * functional component (rendering) and the web component (sticky-column measurement), so both\n * agree on the column model.\n */\n\nexport type TableDataCell = KoliBriTableCell & KoliBriTableDataType;\nexport type TableDataRow = TableDataCell[];\n\n/**\n * The header cells that define the data columns — those with a `key` or a `render` function.\n * They also fix the rendering direction: if only the vertical headers carry keys, the data is\n * rendered column-wise (`horizontal: false`).\n */\nexport type PrimaryHeaders = {\n\tcells: KoliBriTableHeaderCell[];\n\thorizontal: boolean;\n};\n\nconst collectKeyedHeaderCells = (rows: KoliBriTableHeaderCell[][]): KoliBriTableHeaderCell[] =>\n\trows.flatMap((cells) => cells.filter((cell) => typeof cell.key === 'string' || typeof cell.render === 'function'));\n\nexport const getPrimaryHeaders = (headers: TableHeaders): PrimaryHeaders => {\n\tconst horizontalCells = collectKeyedHeaderCells(headers.horizontal);\n\tif (horizontalCells.length > 0) {\n\t\treturn { cells: horizontalCells, horizontal: true };\n\t}\n\tconst verticalCells = collectKeyedHeaderCells(headers.vertical);\n\treturn { cells: verticalCells, horizontal: verticalCells.length === 0 };\n};\n\nconst sumSpans = (cells: KoliBriTableHeaderCell[], span: 'colSpan' | 'rowSpan'): number => {\n\tlet count = 0;\n\tif (Array.isArray(cells)) {\n\t\tcells.forEach((cell) => {\n\t\t\tcount += cell[span] ?? 1;\n\t\t});\n\t}\n\treturn count;\n};\n\n/** The widest horizontal header row decides the column count; without headers, the data does. */\nexport const getNumberOfCols = (horizontalHeaders: KoliBriTableHeaderCell[][], data: KoliBriTableDataType[]): number => {\n\tconst max = Math.max(0, ...horizontalHeaders.map((row) => sumSpans(row, 'colSpan')));\n\treturn max === 0 ? data.length : max;\n};\n\n/** The longest vertical header column decides the body row count; footer rows are not part of it. */\nexport const getNumberOfRows = (verticalHeaders: KoliBriTableHeaderCell[][], data: KoliBriTableDataType[], footLength: number): number => {\n\tconst max = Math.max(0, ...verticalHeaders.map((column) => sumSpans(column, 'rowSpan')));\n\treturn max === 0 ? data.length : max - footLength;\n};\n\nexport const getVisibleColSpan = (cells?: Array<KoliBriTableCell | KoliBriTableHeaderCell>): number =>\n\tcells?.reduce((acc, cell) => {\n\t\tif ('visible' in cell && cell.visible === false) {\n\t\t\treturn acc;\n\t\t}\n\t\treturn acc + (cell.colSpan || 1);\n\t}, 0) ?? 0;\n\nexport type FixedSide = 'left' | 'right';\n\n/**\n * Resolves which side a column sticks to, if any. A row's cell index also counts its vertical\n * header cells and can reach `maxCols`, so right-fixing needs a configured right count.\n */\nexport const getFixedSide = (fixedCols: FixedColsPropType, stickyColsDisabled: boolean, maxCols: number, index: number | undefined): FixedSide | undefined => {\n\tif (index === undefined || stickyColsDisabled) {\n\t\treturn undefined;\n\t}\n\tif (index < fixedCols[0]) {\n\t\treturn 'left';\n\t}\n\tif (fixedCols[1] > 0 && index >= maxCols - fixedCols[1]) {\n\t\treturn 'right';\n\t}\n\treturn undefined;\n};\n\n/**\n * Sticky offsets per column: the summed declared widths of the fixed columns between a column and\n * its edge of the table.\n */\nexport const getFixedOffsets = (\n\tprimaryCells: KoliBriTableHeaderCell[],\n\tmaxCols: number,\n\tfixedCols: FixedColsPropType,\n\tstickyColsDisabled: boolean,\n): number[] => {\n\tconst offsets: number[] = [];\n\tfor (let j = 0; j < maxCols; j++) {\n\t\tif (getFixedSide(fixedCols, stickyColsDisabled, maxCols, j) === 'left') {\n\t\t\toffsets[j] = (offsets[j - 1] ?? 0) + (primaryCells[j - 1]?.width ?? 0);\n\t\t}\n\t}\n\tfor (let j = maxCols - 1; j >= 0; j--) {\n\t\tif (getFixedSide(fixedCols, stickyColsDisabled, maxCols, j) === 'right') {\n\t\t\toffsets[j] = (offsets[j + 1] ?? 0) + (primaryCells[j + 1]?.width ?? 0);\n\t\t}\n\t}\n\treturn offsets;\n};\n\n/**\n * CSS offset of a sticky cell. A left-fixed column also clears the selection column, which is\n * always sticky at `left: 0`.\n */\nexport const getOffsetString = (offsets: number[], index: number | undefined, left: boolean, hasSelection: boolean): string => {\n\tconst offset = index === undefined ? undefined : offsets[index];\n\tif (left && hasSelection) {\n\t\treturn `calc( var(--kol-table-selection-col-width) + ${offset}px)`;\n\t}\n\treturn `${offset}px`;\n};\n\n/**\n * Finds the action or state column definition for a given data column.\n */\nexport const getColumnHeaderForType = (\n\theaders: TableHeaders,\n\tprimaryHeaders: PrimaryHeaders,\n\tcolIndex: number,\n\ttype: 'action' | 'state',\n): ActionColumnHeaderCell | StateColumnHeaderCell | undefined => {\n\tconst directionHeaders = primaryHeaders.horizontal ? headers.horizontal : headers.vertical;\n\tif (directionHeaders.length === 0) return undefined;\n\n\tconst header = primaryHeaders.cells[colIndex] as KoliBriTableHeaderCellWithLogic | undefined;\n\tif (header?.type === type) {\n\t\treturn header;\n\t}\n\treturn undefined;\n};\n\ntype DataFieldOptions = {\n\tdata: KoliBriTableDataType[];\n\t/** Footer rows; required to size the body and, with `isFoot`, the rows rendered. */\n\tdataFoot: KoliBriTableDataType[];\n\theaders: TableHeaders;\n\tisFoot: boolean;\n\t/** Text of the single cell a table without data renders. */\n\tnoEntriesLabel: string;\n\tprimaryHeaders: PrimaryHeaders;\n};\n\n/**\n * Lays out the cells of the body (or the footer) row by row: the vertical header cells that start\n * in a row, followed by one data cell per primary column. The footer continues the vertical\n * headers below the body rows.\n */\nexport const createDataField = ({ data, dataFoot, headers, isFoot, noEntriesLabel, primaryHeaders }: DataFieldOptions): TableDataRow[] => {\n\tconst maxCols = getNumberOfCols(headers.horizontal, data);\n\tconst primaryCells = primaryHeaders.cells;\n\tlet maxRows = getNumberOfRows(headers.vertical, data, dataFoot.length);\n\tlet startRow = 0;\n\tif (isFoot) {\n\t\tstartRow = maxRows;\n\t\tmaxRows += dataFoot.length;\n\t}\n\tconst dataField: TableDataRow[] = [];\n\n\tconst rowCount: number[] = [];\n\tconst rowSpans: number[][] = [];\n\theaders.vertical.forEach((_row, index) => {\n\t\trowCount[index] = 0;\n\t\trowSpans[index] = [];\n\t});\n\n\tfor (let i = startRow; i < maxRows; i++) {\n\t\tconst dataRow: TableDataRow = [];\n\t\theaders.vertical.forEach((headerCells, index) => {\n\t\t\tlet rowsTotal = 0;\n\t\t\trowSpans[index].forEach((value) => (rowsTotal += value));\n\t\t\tif (rowsTotal <= i) {\n\t\t\t\tconst rows = headerCells[i - rowsTotal + rowCount[index]];\n\t\t\t\tif (typeof rows === 'object') {\n\t\t\t\t\tdataRow.push({\n\t\t\t\t\t\t...rows,\n\t\t\t\t\t\theaderCell: true,\n\t\t\t\t\t\tdata: {},\n\t\t\t\t\t});\n\t\t\t\t\tlet rowSpan = 1;\n\t\t\t\t\tif (typeof rows.rowSpan === 'number' && rows.rowSpan > 1) {\n\t\t\t\t\t\trowSpan = rows.rowSpan;\n\t\t\t\t\t}\n\t\t\t\t\trowSpans[index].push(rowSpan);\n\t\t\t\t\tif (typeof rows.colSpan === 'number' && rows.colSpan > 1) {\n\t\t\t\t\t\tfor (let k = 1; k < rows.colSpan; k++) {\n\t\t\t\t\t\t\trowSpans[index + k].push(rowSpan);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\trowCount[index]++;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tfor (let j = 0; j < maxCols; j++) {\n\t\t\tif (primaryHeaders.horizontal) {\n\t\t\t\tconst row = isFoot ? dataFoot[i - startRow] : data[i];\n\t\t\t\tconst header = primaryCells[j];\n\t\t\t\tif (typeof header === 'object' && header !== null && typeof row === 'object' && row !== null) {\n\t\t\t\t\tdataRow.push({\n\t\t\t\t\t\t...header,\n\t\t\t\t\t\tcolIndex: j,\n\t\t\t\t\t\tcolSpan: undefined,\n\t\t\t\t\t\trowSpan: undefined,\n\t\t\t\t\t\tdata: row,\n\t\t\t\t\t\tlabel: row[header.key as string] as string,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst header = primaryCells[i];\n\t\t\t\tif (typeof header === 'object' && header !== null && typeof data[j] === 'object' && data[j] !== null) {\n\t\t\t\t\tdataRow.push({\n\t\t\t\t\t\t...header,\n\t\t\t\t\t\tcolIndex: j,\n\t\t\t\t\t\tcolSpan: undefined,\n\t\t\t\t\t\trowSpan: undefined,\n\t\t\t\t\t\tdata: data[j],\n\t\t\t\t\t\tlabel: data[j][header.key as unknown as number] as string,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdataField.push(dataRow);\n\t}\n\tif (data.length === 0) {\n\t\tlet colspan = getVisibleColSpan(headers.horizontal[0]);\n\t\tlet rowspan = 0;\n\n\t\tif (headers.vertical.length > 0) {\n\t\t\tcolspan -= headers.vertical.length;\n\t\t\theaders.vertical[0].forEach((row) => {\n\t\t\t\trowspan += row.rowSpan || 1;\n\t\t\t});\n\t\t}\n\t\tconst emptyCell = {\n\t\t\tcolSpan: colspan,\n\t\t\tlabel: noEntriesLabel,\n\t\t\trender: undefined,\n\t\t\trowSpan: Math.max(rowspan, 1),\n\t\t};\n\t\tif (dataField.length === 0) {\n\t\t\tdataField.push([emptyCell]);\n\t\t} else {\n\t\t\tdataField[0].push(emptyCell);\n\t\t}\n\t}\n\treturn dataField;\n};\n\n/**\n * Minimum width of the table: the sum of all declared header widths (all horizontal rows including\n * merged parent cells, and all vertical header cells). Widths declared on both a parent and its\n * children are all summed.\n */\nexport const getTableMinWidth = ({ horizontal, vertical }: TableHeaders): string => {\n\tconst horizontalWidths = horizontal.flatMap((row) =>\n\t\trow.filter((cell) => cell.visible !== false && cell.width !== undefined && cell.width > 0).map((cell) => cell.width as number),\n\t);\n\tconst verticalWidths = vertical.flatMap((column) => column.filter((cell) => cell.width !== undefined && cell.width > 0).map((cell) => cell.width as number));\n\tconst allWidths = [...verticalWidths, ...horizontalWidths];\n\n\tif (allWidths.length === 0) {\n\t\treturn '0px';\n\t}\n\tif (allWidths.length === 1) {\n\t\treturn `${allWidths[0]}px`;\n\t}\n\treturn `calc(${allWidths.map((w) => `${w}px`).join(' + ')})`;\n};\n\nexport const normalizeSelectionKeys = (value?: KoliBriTableSelectionKey | KoliBriTableSelectionKey[]): KoliBriTableSelectionKey[] =>\n\tvalue === undefined ? [] : Array.isArray(value) ? value : [value];\n\nexport const getSelectionKeyPropertyName = (selection: KoliBriTableSelection | false): string => (selection ? selection.keyPropertyName : undefined) ?? 'id';\n\n/**\n * Selection state derived once per render: string sets allow O(1) membership checks per row\n * instead of scanning the key arrays for every row.\n */\nexport type SelectionModel = {\n\tdisabledKeys: Set<string>;\n\tkeyPropertyName: string;\n\tselectedKeys: KoliBriTableSelectionKey[];\n\tselectedKeysSet: Set<string>;\n};\n\nexport const createSelectionModel = (selection: KoliBriTableSelection | false): SelectionModel => {\n\tconst selectedKeys = selection ? normalizeSelectionKeys(selection.selectedKeys) : [];\n\treturn {\n\t\tdisabledKeys: new Set((selection ? normalizeSelectionKeys(selection.disabledKeys) : []).map(String)),\n\t\tkeyPropertyName: getSelectionKeyPropertyName(selection),\n\t\tselectedKeys,\n\t\tselectedKeysSet: new Set(selectedKeys.map(String)),\n\t};\n};\n\n/** Rows whose selection is not disabled. */\nexport const getSelectableRows = (data: KoliBriTableDataType[], model: SelectionModel): KoliBriTableDataType[] =>\n\tdata.filter((item) => !model.disabledKeys.has(String(item[model.keyPropertyName] as KoliBriTableSelectionKey)));\n\n/**\n * The selection after toggling \"select all\": already selected but disabled rows always stay\n * selected; with `selectAll`, every selectable row is added.\n */\nexport const getSelectAllSelection = (data: KoliBriTableDataType[], model: SelectionModel, selectAll: boolean): KoliBriTableSelectionKey[] => {\n\tconst selection = model.selectedKeys.filter((key) => model.disabledKeys.has(String(key)));\n\tif (selectAll) {\n\t\tselection.push(...getSelectableRows(data, model).map((row) => row?.[model.keyPropertyName] as KoliBriTableSelectionKey));\n\t}\n\treturn selection;\n};\n","import type { FunctionalComponent as FC, JSX } from '@stencil/core';\nimport { Fragment, h } from '@stencil/core';\n\nimport { KolBadgeTag } from '../../../core/component-names';\nimport { translate } from '../../../i18n';\nimport type {\n\tActionColumnHeaderCell,\n\tAriaSort,\n\tInternalButtonProps,\n\tKoliBriTableCell,\n\tKoliBriTableDataType,\n\tKoliBriTableHeaderCell,\n\tKoliBriTableHeaderCellWithLogic,\n\tKoliBriTableRender,\n\tStateColumnHeaderCell,\n\tStateColumnPropType,\n} from '../../../schema';\nimport { classNameFromVariant } from '../../../schema';\nimport { bem } from '../../../schema/bem-registry';\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 { IconFC } from '../icon/component';\nimport type { LinkFCProps } from '../link/component';\nimport { LinkFC } from '../link/component';\nimport type { EmbeddedLinkProps } from '../link/resolve-props';\nimport { SpinFC } from '../spin/component';\nimport { TooltipFC } from '../tooltip/component';\nimport type { TableStatelessApi } from './api';\nimport type { FixedSide, PrimaryHeaders, SelectionModel, TableDataCell, TableDataRow } from './table-model';\nimport {\n\tcreateDataField,\n\tcreateSelectionModel,\n\tgetColumnHeaderForType,\n\tgetFixedOffsets,\n\tgetFixedSide,\n\tgetNumberOfCols,\n\tgetOffsetString,\n\tgetPrimaryHeaders,\n\tgetSelectableRows,\n\tgetSelectAllSelection,\n\tgetTableMinWidth,\n\tgetVisibleColSpan,\n} from './table-model';\n\nconst tableBem = bem.forBlock('kol-table');\nconst BEM_CLASS_TABLE__BODY = tableBem('body');\nconst BEM_CLASS_TABLE__CELL_ACTIONS = tableBem('cell-actions');\nconst BEM_CLASS_TABLE__CELL_STATES = tableBem('cell-states');\nconst BEM_CLASS_TABLE__FOOTER = tableBem('footer');\nconst BEM_CLASS_TABLE__HEAD = tableBem('head');\nconst BEM_CLASS_TABLE__HEAD_ROW = tableBem('head-row');\nconst BEM_CLASS_TABLE__SCROLL_CONTAINER = tableBem('scroll-container');\nconst BEM_CLASS_TABLE__SELECTION_ICON = tableBem('selection-icon');\nconst BEM_CLASS_TABLE__SELECTION_INPUT_TOOLTIP = tableBem('selection-input-tooltip');\nconst BEM_CLASS_TABLE__SORT = tableBem('sort');\nconst BEM_CLASS_TABLE__SORT_BUTTON = tableBem('sort-button');\nconst BEM_CLASS_TABLE__SORT_ORDER = tableBem('sort-order');\nconst BEM_CLASS_TABLE__TABLE = tableBem('table');\nconst BEM_CLASS_TABLE__CAPTION = `${tableBem('focus-element')} ${tableBem('caption')}`;\n\nexport type TableStatelessFCProps = FunctionalComponentProps<TableStatelessApi> & {\n\t/** `ButtonFC` props of the embedded button `key`; the web component keeps one button item per key. */\n\tgetButtonFcProps: (key: string, props: InternalButtonProps, rootAttributes?: ButtonItemRootAttributes) => ButtonItemFcProps;\n\t/** `LinkFC` props of the embedded link `key`; the web component keeps one link item per key. */\n\tgetLinkFcProps: (key: string, props: EmbeddedLinkProps) => LinkFCProps;\n\t/** Renders the settings menu; the web component keeps its state. */\n\trenderSettings: (horizontalHeaderCells: KoliBriTableHeaderCell[][]) => JSX.Element;\n};\n\n/**\n * Everything the render helpers derive once per render and share: the column model, the sticky\n * offsets and the selection state.\n */\ntype RenderContext = TableStatelessFCProps & {\n\tfixedOffsets: number[];\n\tmaxCols: number;\n\tprimaryHeaders: PrimaryHeaders;\n\tselectionModel: SelectionModel;\n\ttranslateNoEntries: string;\n};\n\nconst getFixedSideOf = (context: RenderContext, index: number | undefined): FixedSide | undefined =>\n\tgetFixedSide(context.fixedCols, context.stickyColsDisabled, context.maxCols, index);\n\nconst getOffsets = (context: RenderContext, fixed: FixedSide | undefined, index: number | undefined) => ({\n\tleft: fixed === 'left' ? getOffsetString(context.fixedOffsets, index, true, context.selection !== false) : undefined,\n\tright: fixed === 'right' ? getOffsetString(context.fixedOffsets, index, false, context.selection !== false) : undefined,\n});\n\n/**\n * Rows keep their identity across renders through a key derived from the row object, so a\n * re-sorted table moves its rows instead of rewriting their cells.\n */\nconst getRowKey = (context: RenderContext, row: TableDataRow, rowIndex: number): string =>\n\t(context.primaryHeaders.horizontal && row[0]?.data ? context.rowKeys.get(row[0].data) : undefined) ?? String(rowIndex);\n\n/**\n * The selection cell of a body row: a checkbox for multiple selection, a radio for single\n * selection.\n */\nconst renderSelectionCell = (context: RenderContext, row: TableDataRow, rowIndex: number): JSX.Element => {\n\tconst { handleSelectionChange, selection, selectionModel } = context;\n\tif (!selection) return '';\n\tconst firstCellData = row[0]?.data;\n\n\tif (!firstCellData) return '';\n\tconst keyProperty = firstCellData[selectionModel.keyPropertyName] as string | number;\n\tconst isMultiple = selection.multiple || selection.multiple === undefined;\n\n\tconst keyPropertyString = String(keyProperty);\n\tconst selected = selectionModel.selectedKeysSet.has(keyPropertyString);\n\tconst disabled = selectionModel.disabledKeys.has(keyPropertyString);\n\n\tconst label = selection.label(firstCellData);\n\tconst props = {\n\t\tname: 'selection',\n\t\tchecked: selected,\n\t\tdisabled,\n\t\tid: String(keyProperty),\n\t\t['aria-label']: label,\n\t};\n\treturn (\n\t\t<td key={`tbody-${rowIndex}-selection`} class={tableBem('cell', { selection: true })}>\n\t\t\t<div class={tableBem('selection', { checked: selected })}>\n\t\t\t\t{isMultiple ? (\n\t\t\t\t\t<label class={tableBem('selection-label', { disabled })}>\n\t\t\t\t\t\t<IconFC class={BEM_CLASS_TABLE__SELECTION_ICON} icons={`kolicon ${selected ? 'kolicon-check' : ''}`} label=\"\" />\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\tclass={tableBem('selection-input', { checkbox: true })}\n\t\t\t\t\t\t\t{...props}\n\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\tonInput={(event: Event) => {\n\t\t\t\t\t\t\t\tconst updatedSelectedKeys = !selected\n\t\t\t\t\t\t\t\t\t? [...selectionModel.selectedKeys, keyProperty]\n\t\t\t\t\t\t\t\t\t: selectionModel.selectedKeys.filter((key) => String(key) !== keyPropertyString);\n\t\t\t\t\t\t\t\thandleSelectionChange(event, updatedSelectedKeys);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</label>\n\t\t\t\t) : (\n\t\t\t\t\t<label class={tableBem('selection-label')}>\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\tclass={tableBem('selection-input', { radio: true })}\n\t\t\t\t\t\t\t{...props}\n\t\t\t\t\t\t\ttype=\"radio\"\n\t\t\t\t\t\t\tonInput={(event: Event) => {\n\t\t\t\t\t\t\t\thandleSelectionChange(event, [keyProperty]);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</label>\n\t\t\t\t)}\n\t\t\t\t<div class={BEM_CLASS_TABLE__SELECTION_INPUT_TOOLTIP}>\n\t\t\t\t\t<TooltipFC label={label} badgeText=\"\" id={`${keyProperty}-label`} refFloating={() => {}} />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</td>\n\t);\n};\n\n/**\n * The header cell of the selection column. With multiple selection it holds a checkbox that\n * selects or deselects all selectable rows, indeterminate while only some are selected.\n */\nconst renderHeadingSelectionCell = (context: RenderContext): JSX.Element => {\n\tconst { data, handleSelectionChange, selection, selectionModel } = context;\n\n\tif (!selection) {\n\t\treturn <td class={tableBem('cell', { header: true })} key={`thead-0`}></td>;\n\t}\n\n\tif (selection.multiple === false) {\n\t\treturn (\n\t\t\t<th scope=\"col\" key={`thead-0-selection`} class={tableBem('cell', { header: true, selection: true })}>\n\t\t\t\t<span class=\"visually-hidden\">{translate('kol-table-selection')}</span>\n\t\t\t</th>\n\t\t);\n\t}\n\n\tconst selectedKeyLength = selectionModel.selectedKeys.filter((key) => !selectionModel.disabledKeys.has(String(key))).length;\n\tconst dataLength = getSelectableRows(data, selectionModel).length;\n\tconst isChecked = selectedKeyLength === dataLength;\n\tconst indeterminate = selectedKeyLength !== 0 && !isChecked;\n\tlet label: string;\n\tif (selectedKeyLength === 0) {\n\t\tlabel = translate('kol-table-selection-all');\n\t} else if (isChecked && !indeterminate) {\n\t\tlabel = translate('kol-table-selection-none');\n\t} else {\n\t\tlabel = translate('kol-table-selection-indeterminate');\n\t}\n\treturn (\n\t\t<th scope=\"col\" key={`thead-0-selection`} class={tableBem('cell', { header: true, selection: true })}>\n\t\t\t<span class=\"visually-hidden\">{translate('kol-table-selection')}</span>\n\t\t\t<div class={tableBem('selection', { checked: isChecked, indeterminate })}>\n\t\t\t\t<label class={tableBem('selection-label')}>\n\t\t\t\t\t<IconFC class={BEM_CLASS_TABLE__SELECTION_ICON} icons={`kolicon ${indeterminate ? 'kolicon-minus' : isChecked ? 'kolicon-check' : ''}`} label=\"\" />\n\t\t\t\t\t<input\n\t\t\t\t\t\tclass={tableBem('selection-input', { checkbox: true })}\n\t\t\t\t\t\tname=\"selection\"\n\t\t\t\t\t\tchecked={isChecked && !indeterminate}\n\t\t\t\t\t\tindeterminate={indeterminate}\n\t\t\t\t\t\taria-label={label}\n\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\tonInput={(event: Event) => {\n\t\t\t\t\t\t\thandleSelectionChange(event, getSelectAllSelection(data, selectionModel, !isChecked));\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t</label>\n\t\t\t\t<div class={BEM_CLASS_TABLE__SELECTION_INPUT_TOOLTIP}>\n\t\t\t\t\t<TooltipFC label={label} badgeText=\"\" refFloating={() => {}} />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</th>\n\t);\n};\n\n/**\n * The blank cell above the vertical header columns when the table has headers in both\n * directions. Its width is the sum of the first cell of each vertical header column, so the\n * column widths hold with `table-layout: fixed`.\n */\nconst renderHeaderTdCell = ({ headers }: RenderContext): JSX.Element => {\n\tconst { horizontal, vertical } = headers;\n\n\tif (horizontal.length === 0 || vertical.length === 0) {\n\t\treturn <Fragment></Fragment>;\n\t}\n\n\tconst totalWidth = vertical.reduce((sum, column) => sum + (column?.[0]?.width ?? 0), 0);\n\n\treturn <td aria-hidden=\"true\" colSpan={vertical.length} rowSpan={horizontal.length} style={totalWidth > 0 ? { width: `${totalWidth}px` } : undefined}></td>;\n};\n\nconst getSortAriaDescription = (order?: number): string => {\n\tconst translateSort = translate('kol-sort');\n\tif (typeof order === 'number' && order > 0) {\n\t\treturn `${translateSort} – ${translate('kol-table-sort-order').replace('{{order}}', `${order}`)}`;\n\t}\n\treturn translateSort;\n};\n\n/**\n * A header cell (`<th>`). A cell with a `sortDirection` renders a sort button, and with a\n * `sortOrder` also the position of its column in a multi-column sort.\n */\nconst renderHeadingCell = (context: RenderContext, cell: KoliBriTableHeaderCell, rowIndex: number, colIndex: number, isVertical: boolean): JSX.Element => {\n\tif (cell.visible === false) {\n\t\treturn '';\n\t}\n\n\tconst sortableSetting = cell?.sortable !== false;\n\tconst hasSortDirection = typeof cell.sortDirection === 'string';\n\tconst canSort = sortableSetting && hasSortDirection;\n\n\tlet ariaSort: AriaSort = 'none';\n\tlet sortButtonIcon = 'kolicon-sort-neutral';\n\n\tif (canSort && cell.sortDirection) {\n\t\tswitch (cell.sortDirection) {\n\t\t\tcase 'ASC':\n\t\t\t\tsortButtonIcon = 'kolicon-sort-asc';\n\t\t\t\tariaSort = 'ascending';\n\t\t\t\tbreak;\n\t\t\tcase 'DESC':\n\t\t\t\tsortButtonIcon = 'kolicon-sort-desc';\n\t\t\t\tariaSort = 'descending';\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tariaSort = 'none';\n\t\t}\n\t}\n\n\tconst scope = isVertical ? 'row' : typeof cell.colSpan === 'number' && cell.colSpan > 1 ? 'colgroup' : 'col';\n\n\tconst sortOrder = typeof cell.sortOrder === 'number' && cell.sortOrder > 0 ? cell.sortOrder : undefined;\n\tconst width = cell.width !== undefined ? `${cell.width}px` : undefined;\n\tconst fixed = getFixedSideOf(context, colIndex);\n\tconst { left, right } = getOffsets(context, fixed, colIndex);\n\tconst textAlign = cell.textAlign;\n\tconst sortDirection = canSort ? cell.sortDirection : undefined;\n\n\treturn (\n\t\t<th\n\t\t\tkey={`${rowIndex}-${colIndex}-${cell.label}`}\n\t\t\tclass={tableBem('cell', {\n\t\t\t\t[ariaSort]: true,\n\t\t\t\t'align-center': textAlign === 'center',\n\t\t\t\t'align-justify': textAlign === 'justify',\n\t\t\t\t'align-left': textAlign === 'left',\n\t\t\t\t'align-right': textAlign === 'right',\n\t\t\t\theader: true,\n\t\t\t\t'sticky-left': fixed === 'left',\n\t\t\t\t'sticky-right': fixed === 'right',\n\t\t\t})}\n\t\t\tscope={scope}\n\t\t\tcolSpan={cell.colSpan}\n\t\t\trowSpan={cell.rowSpan}\n\t\t\tstyle={{ width, left, right }}\n\t\t\taria-sort={ariaSort}\n\t\t\tdata-sort={sortDirection ? `sort-${sortDirection}` : undefined}\n\t\t>\n\t\t\t{sortDirection ? (\n\t\t\t\t<span class={BEM_CLASS_TABLE__SORT}>\n\t\t\t\t\t<ButtonFC\n\t\t\t\t\t\t{...context.getButtonFcProps(\n\t\t\t\t\t\t\t`sort-${isVertical ? 'vertical' : 'horizontal'}-${rowIndex}-${colIndex}`,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t_icons: { right: sortButtonIcon },\n\t\t\t\t\t\t\t\t_label: cell.label,\n\t\t\t\t\t\t\t\t_ariaDescription: getSortAriaDescription(sortOrder),\n\t\t\t\t\t\t\t\t_on: {\n\t\t\t\t\t\t\t\t\tonClick: (event: MouseEvent) => {\n\t\t\t\t\t\t\t\t\t\tcontext.handleSort(event, {\n\t\t\t\t\t\t\t\t\t\t\tkey: cell.key as string,\n\t\t\t\t\t\t\t\t\t\t\tcurrentSortDirection: sortDirection,\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{ class: BEM_CLASS_TABLE__SORT_BUTTON },\n\t\t\t\t\t\t)}\n\t\t\t\t\t/>\n\t\t\t\t\t{sortOrder && (\n\t\t\t\t\t\t<span aria-hidden=\"true\" class={BEM_CLASS_TABLE__SORT_ORDER}>\n\t\t\t\t\t\t\t{sortOrder}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t)}\n\t\t\t\t</span>\n\t\t\t) : (\n\t\t\t\tcell.label\n\t\t\t)}\n\t\t</th>\n\t);\n};\n\n/**\n * The actions of an action column: buttons and links built by the column's `actions` factory from\n * the row data. Each action sits in a classless `<span>`: the span is the flex item of the actions\n * container and holds the inline-flex button or link in a line box, which sets its height.\n */\nconst renderActionItems = (context: RenderContext, actionColumn: ActionColumnHeaderCell, rowData: KoliBriTableDataType, key: string): JSX.Element => (\n\t<div class={BEM_CLASS_TABLE__CELL_ACTIONS}>\n\t\t{actionColumn.actions(rowData).map((action, actionIndex) => {\n\t\t\tconst actionKey = `action-${key}-${actionIndex}`;\n\t\t\tif (action.type === 'button') {\n\t\t\t\treturn (\n\t\t\t\t\t<span key={actionKey}>\n\t\t\t\t\t\t<ButtonFC {...context.getButtonFcProps(actionKey, action)} />\n\t\t\t\t\t</span>\n\t\t\t\t);\n\t\t\t} else if (action.type === 'link') {\n\t\t\t\treturn (\n\t\t\t\t\t<span key={actionKey}>\n\t\t\t\t\t\t<LinkFC {...context.getLinkFcProps(actionKey, action)} />\n\t\t\t\t\t</span>\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn null;\n\t\t})}\n\t</div>\n);\n\n/**\n * The states of a state column: the badges the row data lists under the column's key.\n */\nconst renderStateItems = (stateColumn: StateColumnHeaderCell, rowData: KoliBriTableDataType, key: string): JSX.Element => {\n\tconst colKey = stateColumn.key;\n\tif (!colKey) {\n\t\treturn '';\n\t}\n\n\tconst states = rowData[colKey] as StateColumnPropType[];\n\tif (!states) {\n\t\treturn '';\n\t}\n\n\treturn (\n\t\t<div class={BEM_CLASS_TABLE__CELL_STATES}>\n\t\t\t{states.map((state, stateIndex) => {\n\t\t\t\tif (state.type === 'badge') {\n\t\t\t\t\treturn <KolBadgeTag key={`state-${key}-${stateIndex}`} {...state} />;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t})}\n\t\t</div>\n\t);\n};\n\n/**\n * A body or footer cell: a vertical header cell (`<th>`) or a data cell (`<td>`). A data cell\n * renders an action column's actions, a state column's badges, its label — or nothing, when a\n * custom `render` function fills it after rendering.\n */\nconst renderTableCell = (context: RenderContext, cell: TableDataCell, rowIndex: number, colIndex: number, isVertical: boolean): JSX.Element => {\n\tif ((cell as KoliBriTableHeaderCell).visible === false) {\n\t\treturn '';\n\t}\n\n\tlet key = `${rowIndex}-${colIndex}-${cell.label}`;\n\tif (cell.data) {\n\t\tconst dataKey = context.rowKeys.get(cell.data);\n\t\tkey = dataKey ? `${dataKey}-${context.primaryHeaders.horizontal ? colIndex : rowIndex}` : key;\n\t}\n\n\tif ((cell as KoliBriTableHeaderCellWithLogic).headerCell) {\n\t\treturn renderHeadingCell(context, cell, rowIndex, colIndex, isVertical);\n\t}\n\n\tconst isNoEntriesHintCell = typeof cell.render !== 'function' && cell.label === context.translateNoEntries;\n\tconst actionColumn = getColumnHeaderForType(context.headers, context.primaryHeaders, colIndex, 'action') as ActionColumnHeaderCell | undefined;\n\tconst isActionColumn = Boolean(actionColumn && cell.data);\n\tconst stateColumn = getColumnHeaderForType(context.headers, context.primaryHeaders, colIndex, 'state') as StateColumnHeaderCell | undefined;\n\tconst isStateColumn = Boolean(stateColumn && cell.data);\n\tconst fixed = getFixedSideOf(context, colIndex);\n\tconst { left, right } = getOffsets(context, fixed, cell.colIndex);\n\tconst hasCustomRender = typeof cell.render === 'function';\n\tconst textAlign = cell.textAlign;\n\n\treturn (\n\t\t<td\n\t\t\t// settingsChangedCounter gives every cell a new key after a settings change, so it is rerendered\n\t\t\tkey={`cell-${key}-${context.settingsChangedCounter}`}\n\t\t\tclass={tableBem('cell', {\n\t\t\t\tactions: isActionColumn,\n\t\t\t\t'align-center': textAlign === 'center',\n\t\t\t\t'align-justify': textAlign === 'justify',\n\t\t\t\t'align-left': textAlign === 'left',\n\t\t\t\t'align-right': textAlign === 'right',\n\t\t\t\tbody: true,\n\t\t\t\tstates: isStateColumn,\n\t\t\t\t'sticky-left': fixed === 'left',\n\t\t\t\t'sticky-right': fixed === 'right',\n\t\t\t})}\n\t\t\taria-atomic={isNoEntriesHintCell ? 'false' : undefined}\n\t\t\taria-live={isNoEntriesHintCell ? 'polite' : undefined}\n\t\t\taria-relevant={isNoEntriesHintCell ? 'text' : undefined}\n\t\t\tcolSpan={cell.colSpan}\n\t\t\trowSpan={cell.rowSpan}\n\t\t\tstyle={{ textAlign, left, right }}\n\t\t\tref={hasCustomRender ? (element) => context.handleRenderCell(cell as KoliBriTableCell & { render: KoliBriTableRender }, element) : undefined}\n\t\t>\n\t\t\t{isActionColumn && actionColumn && cell.data\n\t\t\t\t? renderActionItems(context, actionColumn, cell.data, key)\n\t\t\t\t: isStateColumn && stateColumn && cell.data\n\t\t\t\t\t? renderStateItems(stateColumn, cell.data, key)\n\t\t\t\t\t: !hasCustomRender\n\t\t\t\t\t\t? cell.label\n\t\t\t\t\t\t: ''}\n\t\t</td>\n\t);\n};\n\nconst renderTableRow = (context: RenderContext, row: TableDataRow, rowIndex: number, isVertical: boolean, isFooter: boolean = false): JSX.Element => (\n\t<tr class={tableBem('row', { body: !isFooter, footer: isFooter })} key={`row-${getRowKey(context, row, rowIndex)}`}>\n\t\t{renderSelectionCell(context, row, rowIndex)}\n\t\t{row.map((cell, colIndex) => renderTableCell(context, cell, rowIndex, colIndex, isVertical))}\n\t</tr>\n);\n\n/** The visual separator row below the header and above the footer, spanning all columns. */\nconst renderSpacer = (context: RenderContext, variant: 'foot' | 'head', cellDefs: KoliBriTableHeaderCell[][] | KoliBriTableCell[][]): JSX.Element => {\n\tconst colspan = context.headers.vertical.length + getVisibleColSpan(cellDefs?.[0]) + (context.selection ? 1 : 0);\n\n\treturn (\n\t\t<tr aria-hidden=\"true\" class={tableBem('spacer', { [variant]: true })}>\n\t\t\t<td class={tableBem('spacer-line', { [variant]: true })} colSpan={colspan}></td>\n\t\t</tr>\n\t);\n};\n\nconst renderFoot = (context: RenderContext): JSX.Element | null => {\n\tconst { dataFoot, headers, primaryHeaders, translateNoEntries } = context;\n\tif (dataFoot.length === 0) {\n\t\treturn null;\n\t}\n\n\tconst rows = createDataField({ data: dataFoot, dataFoot, headers, isFoot: true, noEntriesLabel: translateNoEntries, primaryHeaders });\n\tconst maxCols = getNumberOfCols(headers.horizontal, dataFoot);\n\tconst footContext: RenderContext = {\n\t\t...context,\n\t\tfixedOffsets: getFixedOffsets(primaryHeaders.cells, maxCols, context.fixedCols, context.stickyColsDisabled),\n\t\tmaxCols,\n\t};\n\treturn (\n\t\t<tfoot class={BEM_CLASS_TABLE__FOOTER}>\n\t\t\t{[renderSpacer(context, 'foot', rows), rows.map((row, rowIndex) => renderTableRow(footContext, row, rowIndex, true, true))]}\n\t\t</tfoot>\n\t);\n};\n\n/**\n * Stateless renderer of the table: the optional settings menu, the scroll container and the\n * table with caption, header, body (with loading indicator) and footer.\n *\n * The web component owns everything with a lifecycle — the scroll-container measurement, the row\n * keys and the event handling; this renderer only derives the column model from its props.\n */\nexport const TableStatelessFC: FC<TableStatelessFCProps> = (props) => {\n\tconst {\n\t\tdata,\n\t\tdataFoot,\n\t\texternalLabelElements,\n\t\tfixedCols,\n\t\thasScrollbar,\n\t\thasSettingsMenu,\n\t\theaders,\n\t\tlabel,\n\t\tloading,\n\t\trefScrollContainer,\n\t\trefTable,\n\t\tselection,\n\t\tstickyColsDisabled,\n\t\tvariant,\n\t} = props;\n\n\tconst translateNoEntries = translate('kol-no-entries');\n\tconst primaryHeaders = getPrimaryHeaders(headers);\n\tconst maxCols = getNumberOfCols(headers.horizontal, data);\n\tconst context: RenderContext = {\n\t\t...props,\n\t\tfixedOffsets: getFixedOffsets(primaryHeaders.cells, maxCols, fixedCols, stickyColsDisabled),\n\t\tmaxCols,\n\t\tprimaryHeaders,\n\t\tselectionModel: createSelectionModel(selection),\n\t\ttranslateNoEntries,\n\t};\n\tconst dataField = createDataField({ data, dataFoot, headers, isFoot: false, noEntriesLabel: translateNoEntries, primaryHeaders });\n\tconst showInternalCaption = externalLabelElements.length === 0;\n\n\treturn (\n\t\t<BemRootNodeFC block=\"kol-table\" class={classNameFromVariant(variant, 'table')}>\n\t\t\t{hasSettingsMenu && props.renderSettings(headers.horizontal)}\n\n\t\t\t{/* Firefox automatically makes the scroll container focusable when it has a scrollbar. We implement a similar behavior cross-browser by allowing the\n\t\t\t * caption to receive focus. Hence, the container opts out with `tabindex=\"-1\"` to avoid two focusable elements.\n\t\t\t * When an external label is active the caption is not rendered — the scroll container becomes the keyboard stop instead.\n\t\t\t */}\n\t\t\t<div ref={refScrollContainer} class={BEM_CLASS_TABLE__SCROLL_CONTAINER} tabindex={hasScrollbar ? (showInternalCaption ? '-1' : '0') : undefined}>\n\t\t\t\t<table\n\t\t\t\t\tref={refTable}\n\t\t\t\t\taria-labelledby={showInternalCaption ? 'caption' : undefined}\n\t\t\t\t\tclass={BEM_CLASS_TABLE__TABLE}\n\t\t\t\t\tstyle={{ minWidth: getTableMinWidth(headers) }}\n\t\t\t\t>\n\t\t\t\t\t{/* eslint-disable jsx-a11y/no-noninteractive-tabindex -- caption tabIndex enables keyboard access to scrollable overflow */}\n\t\t\t\t\t{showInternalCaption && (\n\t\t\t\t\t\t<caption class={BEM_CLASS_TABLE__CAPTION} id=\"caption\" tabindex={hasScrollbar ? '0' : undefined}>\n\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t</caption>\n\t\t\t\t\t)}\n\t\t\t\t\t{/* eslint-enable jsx-a11y/no-noninteractive-tabindex */}\n\n\t\t\t\t\t<thead class={BEM_CLASS_TABLE__HEAD}>\n\t\t\t\t\t\t{[\n\t\t\t\t\t\t\theaders.horizontal.map((cols, rowIndex) => (\n\t\t\t\t\t\t\t\t<tr class={BEM_CLASS_TABLE__HEAD_ROW} key={`thead-${rowIndex}`}>\n\t\t\t\t\t\t\t\t\t{selection && renderHeadingSelectionCell(context)}\n\t\t\t\t\t\t\t\t\t{rowIndex === 0 && renderHeaderTdCell(context)}\n\t\t\t\t\t\t\t\t\t{Array.isArray(cols) && cols.map((cell, colIndex) => renderHeadingCell(context, cell, rowIndex, colIndex, false))}\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t)),\n\t\t\t\t\t\t\trenderSpacer(context, 'head', headers.horizontal),\n\t\t\t\t\t\t]}\n\t\t\t\t\t</thead>\n\t\t\t\t\t<tbody class={BEM_CLASS_TABLE__BODY}>\n\t\t\t\t\t\t<div class={tableBem('loader', { shown: loading })}>\n\t\t\t\t\t\t\t<SpinFC\n\t\t\t\t\t\t\t\tlabel={(loading ? translate('kol-table-data-loading') : translate('kol-table-data-loaded')).replace('{{caption}}', label)}\n\t\t\t\t\t\t\t\tshow={loading}\n\t\t\t\t\t\t\t\tvariant=\"cycle\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{dataField.map((row, rowIndex) => renderTableRow(context, row, rowIndex, true))}\n\t\t\t\t\t</tbody>\n\t\t\t\t\t{renderFoot(context)}\n\t\t\t\t</table>\n\t\t\t</div>\n\t\t</BemRootNodeFC>\n\t);\n};\n","import type { FunctionalComponent as FC } from '@stencil/core';\nimport { h } from '@stencil/core';\n\nimport type { HeadingLevel, KoliBriDialogEventCallbacks, LabelPropType } from '../../../schema';\nimport type { ModalVariantPropType } from '../../../schema/props/variant/modal';\nimport { createUniqueId, nonce } from '../../../utils/dev.utils';\nimport { createCtaRef } from '../../../utils/element-interaction';\nimport { dispatchDomEvent, KolEvent } from '../../../utils/events';\nimport { lockScroll, unlockScroll } from '../../../utils/scroll-lock';\nimport { handleCancelOverlay } from '../../../utils/tooltip-open-tracking';\nimport { dialogCallbacksProp, labelProp, levelProp, variantDialogProp, widthProp } from '../../props';\nimport { BaseWebComponent } from '../base-web-component';\nimport type { ResolvedButtonProps } from '../button/resolve-props';\nimport { resolveCardCloseButtonProps } from '../card/close-button';\nimport type { CardFCProps } from '../card/component';\nimport { CardFC } from '../card/component';\nimport { TooltipBehavior } from '../tooltip/behavior';\nimport type { DialogFCProps } from './component';\nimport { dialogBlockClass, DialogFC } from './component';\n\n/** The configuration of an embedded dialog: the public props of the dialog elements. */\nexport type DialogItemProps = {\n\tlabel: LabelPropType;\n\tlevel?: HeadingLevel;\n\ton?: KoliBriDialogEventCallbacks;\n\tvariant?: ModalVariantPropType;\n\twidth?: string;\n};\n\n/** The resolved props of `DialogItemFC`; `card` only for the card variant. */\nexport type DialogItemFCProps = {\n\tdialog: DialogFCProps;\n\tcard?: CardFCProps;\n};\n\n/** Renders an embedded dialog from the props of `DialogItem.getFcProps`, with the children as its content. */\nexport const DialogItemFC: FC<DialogItemFCProps> = ({ dialog, card }, children) => (\n\t<DialogFC {...dialog}>{card ? <CardFC {...card}>{children}</CardFC> : children}</DialogFC>\n);\n\n/**\n * One orchestrated dialog embedded in another component's shadow DOM: the counterpart of the dialog\n * elements for a component that renders `DialogFC` itself. It keeps the open state of the native\n * dialog, the scroll lock, the cancel and close handling and, for the card variant, the close\n * button with its tooltip behavior.\n *\n * The `KolEvent` DOM events are dispatched on an element the embedding component provides, an\n * ancestor of the `<dialog>`: dispatched on the `<dialog>` itself, the `close` and `cancel` events\n * would reach the dialog's own native `close` and `cancel` listeners.\n */\nexport type DialogItem = {\n\t/** Resolves the dialog for the current render pass. Call once per render. */\n\tgetFcProps(props: DialogItemProps): DialogItemFCProps;\n\t/** Opens the dialog, modal or not. */\n\tshow(modal: boolean): void;\n\t/** Closes the dialog. */\n\tclose(): void;\n\t/** Re-registers the close button's tooltip listeners. Call from `componentDidRender`. */\n\tsyncListeners(): void;\n\t/** Closes the dialog and tears down the scroll lock and the tooltip behavior. Call from `disconnectedCallback`. */\n\tdestroy(): void;\n};\n\n/**\n * The card variant renders no link, so its anchor never exists: the card's own `_on` callbacks\n * describe that anchor, and its ref is never called.\n */\nconst NOOP = (): void => {};\n\n/**\n * @param getFlagHost - Element the theme-scoped `buttonVariantDefault` feature flag of the card's\n * close button is resolved against.\n * @param requestRender - Renders the embedding component again, after the dialog switched between\n * modal and non-modal.\n * @param getEventTarget - Element the `KolEvent` DOM events are dispatched on, an ancestor of the `<dialog>`.\n */\nexport const createDialogItem = (\n\tgetFlagHost: () => HTMLElement | undefined,\n\trequestRender: () => void,\n\tgetEventTarget: () => HTMLElement | undefined,\n): DialogItem => {\n\tconst dialogRef = createCtaRef<HTMLDialogElement>();\n\tconst cardCloseButtonRef = createCtaRef<HTMLButtonElement>();\n\tconst cardCloseTooltipBehavior = new TooltipBehavior(BaseWebComponent.stateLess);\n\tconst ariaDescriptionId = nonce();\n\tconst headingId = createUniqueId('dialog-heading');\n\t/* The scroll lock is counted per owner; the item is the owner of its dialog's lock. */\n\tconst scrollLockOwner = {};\n\tlet cardCloseButtonProps: ResolvedButtonProps | undefined;\n\tlet modal = true;\n\tlet on: KoliBriDialogEventCallbacks = {};\n\n\tconst dispatch = (event: KolEvent): boolean => {\n\t\tconst target = getEventTarget();\n\t\treturn target ? dispatchDomEvent(target, event) : true;\n\t};\n\n\t/*\n\t * The optional chaining on the native methods is a workaround for HTMLDialogElement not being\n\t * implemented in jsdom, which would otherwise fail the Jest tests.\n\t */\n\tconst close = (): void => {\n\t\tdialogRef.el?.close?.();\n\t};\n\n\tconst handleCancel = (event: Event): void => {\n\t\thandleCancelOverlay(event);\n\t\tif (event.defaultPrevented) return;\n\n\t\ton.onCancel?.(event);\n\t\tif (event.defaultPrevented) return;\n\n\t\tif (!dispatch(KolEvent.cancel)) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t};\n\n\tconst handleClose = (event: Event): void => {\n\t\t// Ignore close events that bubble up from child components (e.g. KolAlert).\n\t\t// Only react when the dialog element itself is the event origin.\n\t\tif (event.target !== dialogRef.el) {\n\t\t\treturn;\n\t\t}\n\n\t\tunlockScroll(scrollLockOwner);\n\t\ton.onClose?.();\n\t\tdispatch(KolEvent.close);\n\t};\n\n\t/** The card's close button closes the dialog, which then fires its own native close event. */\n\tconst handleCardClose = (): void => {\n\t\tcardCloseTooltipBehavior.hideTooltip();\n\t\tclose();\n\t\tdispatch(KolEvent.close);\n\t};\n\n\treturn {\n\t\tgetFcProps: (props: DialogItemProps): DialogItemFCProps => {\n\t\t\tlet label = '';\n\t\t\tlet level: HeadingLevel = 0;\n\t\t\tlet variant = 'blank' as ModalVariantPropType;\n\t\t\tlet width = '100%';\n\t\t\tlabelProp.apply(props.label, (v) => {\n\t\t\t\tlabel = v;\n\t\t\t});\n\t\t\tlevelProp.apply(props.level ?? 0, (v) => {\n\t\t\t\tlevel = v;\n\t\t\t});\n\t\t\tdialogCallbacksProp.apply(props.on, (v) => {\n\t\t\t\ton = v;\n\t\t\t});\n\t\t\tvariantDialogProp.apply(props.variant ?? 'blank', (v) => {\n\t\t\t\tvariant = v;\n\t\t\t});\n\t\t\twidthProp.apply(props.width ?? '100%', (v) => {\n\t\t\t\twidth = v;\n\t\t\t});\n\n\t\t\tconst isCard = variant === 'card';\n\t\t\tif (isCard && !cardCloseButtonProps) {\n\t\t\t\tcardCloseButtonProps = resolveCardCloseButtonProps(getFlagHost());\n\t\t\t\tcardCloseTooltipBehavior.componentWillLoad({\n\t\t\t\t\tlabel: cardCloseButtonProps.label,\n\t\t\t\t\talign: cardCloseButtonProps.tooltipAlign,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tdialog: {\n\t\t\t\t\tblockClass: dialogBlockClass(variant),\n\t\t\t\t\thandleCancel,\n\t\t\t\t\thandleClose,\n\t\t\t\t\tlabel,\n\t\t\t\t\tlabelledBy: isCard ? headingId : undefined,\n\t\t\t\t\tmodal,\n\t\t\t\t\trefDialog: dialogRef,\n\t\t\t\t\twidth,\n\t\t\t\t},\n\t\t\t\tcard:\n\t\t\t\t\tisCard && cardCloseButtonProps\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tariaDescriptionId,\n\t\t\t\t\t\t\t\tcloseButtonProps: cardCloseButtonProps,\n\t\t\t\t\t\t\t\thandleBlur: NOOP,\n\t\t\t\t\t\t\t\thandleClose: handleCardClose,\n\t\t\t\t\t\t\t\thandleFocus: NOOP,\n\t\t\t\t\t\t\t\thasCloser: true,\n\t\t\t\t\t\t\t\theadingId,\n\t\t\t\t\t\t\t\thref: '',\n\t\t\t\t\t\t\t\tlabel,\n\t\t\t\t\t\t\t\tlevel,\n\t\t\t\t\t\t\t\ton: {},\n\t\t\t\t\t\t\t\trefCloseButton: cardCloseButtonRef,\n\t\t\t\t\t\t\t\trefCta: NOOP,\n\t\t\t\t\t\t\t\trefTooltip: cardCloseTooltipBehavior.setTooltipElementRef,\n\t\t\t\t\t\t\t\ttarget: '',\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: undefined,\n\t\t\t};\n\t\t},\n\t\tshow: (nextModal: boolean): void => {\n\t\t\tconst dialog = dialogRef.el;\n\t\t\tif (dialog?.open) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (modal !== nextModal) {\n\t\t\t\tmodal = nextModal;\n\t\t\t\trequestRender();\n\t\t\t}\n\t\t\tif (nextModal) {\n\t\t\t\tdialog?.showModal?.();\n\t\t\t\tif (dialog) {\n\t\t\t\t\tlockScroll(scrollLockOwner);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdialog?.show?.();\n\t\t\t}\n\t\t},\n\t\tclose,\n\t\tsyncListeners: (): void => {\n\t\t\tif (cardCloseButtonRef.el) {\n\t\t\t\tcardCloseTooltipBehavior.syncListeners(undefined, cardCloseButtonRef.el, true);\n\t\t\t}\n\t\t},\n\t\tdestroy: (): void => {\n\t\t\tclose();\n\t\t\tunlockScroll(scrollLockOwner);\n\t\t\tcardCloseTooltipBehavior.destroy();\n\t\t},\n\t};\n};\n","import type { JSX } from '@stencil/core';\nimport { h } from '@stencil/core';\n\nimport { KolInputCheckboxTag, KolInputNumberTag } from '../../../core/component-names';\nimport { translate } from '../../../i18n';\nimport type { KoliBriTableHeaderCell } from '../../../schema';\nimport { bem } from '../../../schema/bem-registry';\nimport { createUniqueId, nonce } from '../../../utils/dev.utils';\nimport { dispatchDomEvent, KolEvent } from '../../../utils/events';\nimport { AlertFC } from '../alert/component';\nimport { ButtonFC } from '../button/component';\nimport type { ButtonItem } from '../button/item';\nimport { createButtonItem } from '../button/item';\nimport { createDialogItem, DialogItemFC } from '../dialog/item';\nimport { createItemPool } from '../item-pool';\n\nconst BEM_CLASS_TABLE__SETTINGS = bem.forBlock('kol-table')('settings');\n\n/**\n * The settings menu of the table: the toggle button and the dialog that hides, resizes and moves\n * the columns. It keeps the applied and the edited header cells and the error message; every change\n * renders the table again.\n */\nexport type TableSettings = {\n\t/** Starts a render pass of the table, also one that does not render the menu. */\n\tbeginRender(): void;\n\t/** Renders the menu for the horizontal header cells. Call at most once per render pass. */\n\trender(horizontalHeaderCells: KoliBriTableHeaderCell[][]): JSX.Element;\n\t/** Syncs the embedded buttons and the dialog. Call from `componentDidRender`. */\n\tsync(): void;\n\t/** Tears down the embedded buttons and the dialog. Call from `disconnectedCallback`. */\n\tdestroy(): void;\n};\n\n/**\n * Parses a column width and returns its numeric value.\n * Returns undefined if the width is not finite or not positive.\n */\nconst parseColumnWidth = (width: number | undefined): number | undefined => {\n\treturn Number.isFinite(width) && width !== undefined && width > 0 ? width : undefined;\n};\n\nconst NOOP = (): void => {};\n\n/**\n * @param getHost - The table element: the feature flag host of the embedded buttons.\n * @param requestTableRender - Renders the table again after a change of the settings state.\n */\nexport const createTableSettings = (getHost: () => HTMLElement | undefined, requestTableRender: () => void): TableSettings => {\n\tconst translateTableSettings = translate('kol-table-settings');\n\tconst translateTableSettingsCancel = translate('kol-table-settings-cancel');\n\tconst translateTableSettingsApply = translate('kol-table-settings-apply');\n\tconst translateErrorAllInvisible = translate('kol-table-settings-error-all-invisible');\n\n\tlet rootElement: HTMLElement | undefined;\n\n\t/**\n\t * A render the menu requested itself keeps the edited header cells: `kol-table-stateful` passes\n\t * header cells of a new identity in every render, which would discard the edits.\n\t */\n\tlet ownRenderRequested = false;\n\tlet isOwnRender = false;\n\tconst requestRender = (): void => {\n\t\townRenderRequested = true;\n\t\trequestTableRender();\n\t};\n\n\tconst buttons = createItemPool<ButtonItem>(\n\t\t() => createButtonItem(getHost),\n\t\t(item) => item.syncListeners(),\n\t\t(item) => item.destroy(),\n\t);\n\tconst dialog = createDialogItem(getHost, requestRender, () => rootElement);\n\tconst alertHeadingId = createUniqueId('alert-heading');\n\tconst alertCloserAriaDescriptionId = nonce();\n\n\tlet receivedHeaderCells: KoliBriTableHeaderCell[][] | undefined;\n\tlet headerCells: KoliBriTableHeaderCell[][] = [];\n\tlet editingHeaderCells: KoliBriTableHeaderCell[][] = [];\n\tlet errorMessage: string | null = null;\n\n\tconst applyHeaderCells = (value: KoliBriTableHeaderCell[][]): void => {\n\t\theaderCells = value.map((row) => [...row]);\n\t\teditingHeaderCells = value.map((row) => row.map((cell) => ({ ...cell })));\n\t};\n\n\tconst getPrimaryRow = (): KoliBriTableHeaderCell[] => editingHeaderCells[editingHeaderCells.length - 1] ?? [];\n\n\tconst updatePrimaryRow = (newRow: KoliBriTableHeaderCell[]): void => {\n\t\teditingHeaderCells = editingHeaderCells.map((row, index, arr) => (index === arr.length - 1 ? newRow : row));\n\t\trequestRender();\n\t};\n\n\tconst moveColumn = (columnId: string, direction: 'up' | 'down'): void => {\n\t\tconst row = [...getPrimaryRow()];\n\t\tconst sourceIndex = row.findIndex((col) => col.key === columnId);\n\t\tif (sourceIndex === -1) return;\n\n\t\tlet targetIndex: number;\n\t\tif (direction === 'up') {\n\t\t\tif (sourceIndex === 0) return; // Cannot move first column up\n\t\t\ttargetIndex = sourceIndex - 1;\n\t\t} else {\n\t\t\tif (sourceIndex === row.length - 1) return; // Cannot move last column down\n\t\t\ttargetIndex = sourceIndex + 1;\n\t\t}\n\n\t\t// Swap with target\n\t\tconst [source] = row.splice(sourceIndex, 1);\n\t\trow.splice(targetIndex, 0, source);\n\t\tupdatePrimaryRow(row);\n\t};\n\n\tconst handleVisibilityChange = (key: string, visible: unknown): void => {\n\t\tconst row = getPrimaryRow().map((col) => (col.key === key && col.hidable !== false ? { ...col, visible: Boolean(visible) } : col));\n\t\tupdatePrimaryRow(row);\n\t};\n\n\tconst handleWidthChange = (key: string, width: unknown): void => {\n\t\t// Clearing/invalid input must not collapse the column: parseColumnWidth maps\n\t\t// non-positive or non-finite values (e.g. an emptied field => 0) back to undefined,\n\t\t// which renders as an auto-width column instead of a 0px/1px sliver.\n\t\tconst parsedWidth = parseColumnWidth(Number(width));\n\t\tconst row = getPrimaryRow().map((col) => (col.key === key && col.resizable !== false ? { ...col, width: parsedWidth } : col));\n\t\tupdatePrimaryRow(row);\n\t};\n\n\tconst handleCancel = (): void => {\n\t\teditingHeaderCells = headerCells.map((row) => [...row]);\n\t\terrorMessage = null;\n\t\trequestRender();\n\t\tdialog.close();\n\t};\n\n\tconst handleSubmit = (event: Event): void => {\n\t\tevent.preventDefault();\n\n\t\tconst primaryRow = getPrimaryRow();\n\t\tconst hasVisibleColumn = primaryRow.some((column) => column.visible !== false);\n\n\t\tif (!hasVisibleColumn) {\n\t\t\terrorMessage = translateErrorAllInvisible;\n\t\t\trequestRender();\n\t\t\treturn;\n\t\t} else if (rootElement) {\n\t\t\terrorMessage = null;\n\t\t\t// Update headerCells with the edited values\n\t\t\theaderCells = editingHeaderCells.map((row) => row.map((cell) => ({ ...cell })));\n\t\t\trequestRender();\n\n\t\t\t// Type for sanitized cells where optional properties are truly omitted\n\t\t\ttype SanitizedHeaderCell = Omit<KoliBriTableHeaderCell, 'hidable' | 'position' | 'resizable' | 'sortable' | 'visible' | 'width'> &\n\t\t\t\tPartial<Pick<KoliBriTableHeaderCell, 'hidable' | 'resizable' | 'sortable' | 'visible' | 'width'>>;\n\n\t\t\tconst sanitizedHeaderCells = editingHeaderCells.map((row) =>\n\t\t\t\trow.map((column): SanitizedHeaderCell => {\n\t\t\t\t\tconst { hidable, resizable, sortable, visible, width, ...rest } = column as KoliBriTableHeaderCell & { position?: unknown };\n\t\t\t\t\tconst cell: SanitizedHeaderCell = { ...rest };\n\t\t\t\t\tif (visible !== undefined) cell.visible = visible;\n\t\t\t\t\tif (hidable !== undefined) cell.hidable = hidable;\n\t\t\t\t\tif (sortable !== undefined) cell.sortable = sortable;\n\t\t\t\t\tif (resizable !== undefined) cell.resizable = resizable;\n\t\t\t\t\tif (width !== undefined && width !== null) cell.width = width;\n\t\t\t\t\treturn cell;\n\t\t\t\t}),\n\t\t\t);\n\n\t\t\tdispatchDomEvent(rootElement, KolEvent.changeHeaderCells, sanitizedHeaderCells);\n\t\t\tdialog.close();\n\t\t}\n\t};\n\n\tconst refRoot = (element?: HTMLElement): void => {\n\t\tif (element) {\n\t\t\trootElement = element;\n\t\t}\n\t};\n\n\tconst renderColumn = (column: KoliBriTableHeaderCell, index: number, columns: KoliBriTableHeaderCell[]): JSX.Element => (\n\t\t<div key={column.key} class=\"kol-table-settings__column\">\n\t\t\t<KolInputCheckboxTag\n\t\t\t\t_checked={column.visible !== false}\n\t\t\t\t_label={\n\t\t\t\t\tcolumn.hidable\n\t\t\t\t\t\t? translate('kol-table-settings-column-hidable', { placeholders: { column: column.label } })\n\t\t\t\t\t\t: translate('kol-table-settings-column-not-hidable', { placeholders: { column: column.label } })\n\t\t\t\t}\n\t\t\t\t_value={true}\n\t\t\t\t_hideLabel\n\t\t\t\t_disabled={column.hidable === false}\n\t\t\t\t_on={{ onInput: (_, value: unknown) => handleVisibilityChange(column.key ?? '', value) }}\n\t\t\t/>\n\t\t\t<span class=\"kol-table-settings__column-label\">{column.label}</span>\n\t\t\t<KolInputNumberTag\n\t\t\t\t_hideLabel\n\t\t\t\t_value={parseColumnWidth(column.width)}\n\t\t\t\t_label={translate('kol-table-settings-column-width', { placeholders: { column: column.label } })}\n\t\t\t\t_min={1}\n\t\t\t\t_disabled={column.resizable === false}\n\t\t\t\t_on={{ onInput: (_, value: unknown) => handleWidthChange(column.key ?? '', value) }}\n\t\t\t/>\n\t\t\t<ButtonFC\n\t\t\t\t{...buttons.get(`move-up-${column.key}`).getFcProps(\n\t\t\t\t\t{\n\t\t\t\t\t\t_icons: 'kolicon-chevron-up',\n\t\t\t\t\t\t_label:\n\t\t\t\t\t\t\tcolumn.sortable === false || index === 0\n\t\t\t\t\t\t\t\t? translate('kol-table-settings-not-move', { placeholders: { column: column.label } })\n\t\t\t\t\t\t\t\t: translate('kol-table-settings-move-up', { placeholders: { column: column.label } }),\n\t\t\t\t\t\t_hideLabel: true,\n\t\t\t\t\t\t_variant: 'ghost',\n\t\t\t\t\t\t_on: { onClick: () => moveColumn(column.key ?? '', 'up') },\n\t\t\t\t\t\t_disabled: column.sortable === false || index === 0,\n\t\t\t\t\t},\n\t\t\t\t\t{ 'data-testid': 'table-settings-move-up' },\n\t\t\t\t)}\n\t\t\t/>\n\t\t\t<ButtonFC\n\t\t\t\t{...buttons.get(`move-down-${column.key}`).getFcProps(\n\t\t\t\t\t{\n\t\t\t\t\t\t_icons: 'kolicon-chevron-down',\n\t\t\t\t\t\t_label:\n\t\t\t\t\t\t\tcolumn.sortable === false || index === columns.length - 1\n\t\t\t\t\t\t\t\t? translate('kol-table-settings-not-move', { placeholders: { column: column.label } })\n\t\t\t\t\t\t\t\t: translate('kol-table-settings-move-down', { placeholders: { column: column.label } }),\n\t\t\t\t\t\t_hideLabel: true,\n\t\t\t\t\t\t_variant: 'ghost',\n\t\t\t\t\t\t_on: { onClick: () => moveColumn(column.key ?? '', 'down') },\n\t\t\t\t\t\t_disabled: column.sortable === false || index === columns.length - 1,\n\t\t\t\t\t},\n\t\t\t\t\t{ 'data-testid': 'table-settings-move-down' },\n\t\t\t\t)}\n\t\t\t/>\n\t\t</div>\n\t);\n\n\treturn {\n\t\tbeginRender: (): void => {\n\t\t\tbuttons.beginRender();\n\t\t\tisOwnRender = ownRenderRequested;\n\t\t\townRenderRequested = false;\n\t\t},\n\t\trender: (horizontalHeaderCells: KoliBriTableHeaderCell[][]): JSX.Element => {\n\t\t\tif (!isOwnRender && horizontalHeaderCells !== receivedHeaderCells) {\n\t\t\t\treceivedHeaderCells = horizontalHeaderCells;\n\t\t\t\tapplyHeaderCells(horizontalHeaderCells);\n\t\t\t}\n\t\t\tconst columns = getPrimaryRow();\n\n\t\t\treturn (\n\t\t\t\t<div class={BEM_CLASS_TABLE__SETTINGS} ref={refRoot}>\n\t\t\t\t\t{/* `.kol-table-settings` stays an ancestor of `.kol-button`: the themes style the toggle as `.kol-table-settings .kol-button`. */}\n\t\t\t\t\t<div class=\"kol-table-settings\">\n\t\t\t\t\t\t<ButtonFC\n\t\t\t\t\t\t\t{...buttons.get('toggle').getFcProps({\n\t\t\t\t\t\t\t\t_icons: 'kolicon-settings',\n\t\t\t\t\t\t\t\t_label: translateTableSettings,\n\t\t\t\t\t\t\t\t_hideLabel: true,\n\t\t\t\t\t\t\t\t_on: { onClick: () => dialog.show(true) },\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t\t<DialogItemFC {...dialog.getFcProps({ label: translateTableSettings, variant: 'card', width: 'fit-content' })}>\n\t\t\t\t\t\t<div class=\"kol-table-settings__content\">\n\t\t\t\t\t\t\t{errorMessage && (\n\t\t\t\t\t\t\t\t<div class=\"kol-table-settings__error-message\">\n\t\t\t\t\t\t\t\t\t<AlertFC\n\t\t\t\t\t\t\t\t\t\talert={false}\n\t\t\t\t\t\t\t\t\t\tcloserAriaDescriptionId={alertCloserAriaDescriptionId}\n\t\t\t\t\t\t\t\t\t\thandleCloserClick={NOOP}\n\t\t\t\t\t\t\t\t\t\thasCloser={false}\n\t\t\t\t\t\t\t\t\t\theadingId={alertHeadingId}\n\t\t\t\t\t\t\t\t\t\tlabel={errorMessage}\n\t\t\t\t\t\t\t\t\t\tlevel={0}\n\t\t\t\t\t\t\t\t\t\trefCloserButton={NOOP}\n\t\t\t\t\t\t\t\t\t\trefCloserTooltip={NOOP}\n\t\t\t\t\t\t\t\t\t\ttype=\"error\"\n\t\t\t\t\t\t\t\t\t\tvariant=\"msg\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t<form onSubmit={handleSubmit}>\n\t\t\t\t\t\t\t\t<div class=\"kol-table-settings__columns\">{columns.map((column, index) => renderColumn(column, index, columns))}</div>\n\t\t\t\t\t\t\t\t<div class=\"kol-table-settings__actions\">\n\t\t\t\t\t\t\t\t\t<ButtonFC\n\t\t\t\t\t\t\t\t\t\t{...buttons.get('cancel').getFcProps(\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t_label: translateTableSettingsCancel,\n\t\t\t\t\t\t\t\t\t\t\t\t_variant: 'secondary',\n\t\t\t\t\t\t\t\t\t\t\t\t_on: { onClick: () => handleCancel() },\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{ 'data-testid': 'table-settings-cancel' },\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<ButtonFC\n\t\t\t\t\t\t\t\t\t\t{...buttons\n\t\t\t\t\t\t\t\t\t\t\t.get('apply')\n\t\t\t\t\t\t\t\t\t\t\t.getFcProps({ _label: translateTableSettingsApply, _variant: 'primary', _type: 'submit' }, { 'data-testid': 'table-settings-apply' })}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</form>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</DialogItemFC>\n\t\t\t\t</div>\n\t\t\t);\n\t\t},\n\t\tsync: (): void => {\n\t\t\tbuttons.endRender();\n\t\t\tdialog.syncListeners();\n\t\t},\n\t\tdestroy: (): void => {\n\t\t\tbuttons.destroy();\n\t\t\tdialog.destroy();\n\t\t},\n\t};\n};\n","import type { JSX } from '@stencil/core';\nimport { forceUpdate, h } from '@stencil/core';\n\nimport { BaseWebComponent } from '../../internal/functional-components/base-web-component';\nimport type { ButtonItem, ButtonItemFcProps, ButtonItemRootAttributes } from '../../internal/functional-components/button/item';\nimport { createButtonItem } from '../../internal/functional-components/button/item';\nimport { createItemPool } from '../../internal/functional-components/item-pool';\nimport type { LinkFCProps } from '../../internal/functional-components/link/component';\nimport type { LinkItem } from '../../internal/functional-components/link/item';\nimport { createLinkItem } from '../../internal/functional-components/link/item';\nimport type { EmbeddedLinkProps } from '../../internal/functional-components/link/resolve-props';\nimport type { TableStatelessApi } from '../../internal/functional-components/table-stateless/api';\nimport { tableStatelessPropsConfig } from '../../internal/functional-components/table-stateless/api';\nimport { TableStatelessFC } from '../../internal/functional-components/table-stateless/component';\nimport { createTableSettings } from '../../internal/functional-components/table-stateless/settings';\nimport { getNumberOfCols, getPrimaryHeaders } from '../../internal/functional-components/table-stateless/table-model';\nimport {\n\tfixedColsProp,\n\thasSettingsMenuProp,\n\tlabelWithExpertSlotProp,\n\ttableCallbacksProp,\n\ttableDataFootProp,\n\ttableDataProp,\n\ttableHeadersProp,\n\ttableLoadingProp,\n\ttableSelectionProp,\n\tvariantProp,\n} from '../../internal/props';\nimport type { TableHeaders } from '../../internal/props/table-headers';\nimport type {\n\tFixedColsPropType,\n\tHasSettingsMenuPropType,\n\tInternalButtonProps,\n\tKoliBriTableCell,\n\tKoliBriTableDataType,\n\tKoliBriTableHeaderCell,\n\tSelectionChangeEventPayload,\n\tSortEventPayload,\n\tTableCallbacksPropType,\n\tTableDataFootPropType,\n\tTableDataPropType,\n\tTableHeaderCellsPropType,\n\tTableSelectionPropType,\n\tVariantClassNamePropType,\n} from '../../schema';\nimport { Log } from '../../schema';\nimport { Callback } from '../../schema/enums';\nimport { nonce } from '../../utils/dev.utils';\nimport { dispatchDomEvent, KolEvent } from '../../utils/events';\n\nconst RESIZE_DEBOUNCE_DELAY = 150;\n\n/**\n * Header cells shown in the settings menu are visible and hidable unless they say otherwise.\n */\nconst withHeaderCellSettings = (headers: TableHeaders): TableHeaders => {\n\tif (headers.horizontal.length === 0) {\n\t\treturn headers;\n\t}\n\treturn {\n\t\t...headers,\n\t\thorizontal: headers.horizontal.map((row) =>\n\t\t\trow.map((header) => ({\n\t\t\t\t...header,\n\t\t\t\tvisible: typeof header.visible === 'boolean' ? header.visible : true,\n\t\t\t\thidable: typeof header.hidable === 'boolean' ? header.hidable : true,\n\t\t\t})),\n\t\t),\n\t};\n};\n\n/** Keeps the key of every row that is still present and assigns a new one to each new row. */\nconst createRowKeys = (rows: KoliBriTableDataType[], previous: Map<KoliBriTableDataType, string>): Map<KoliBriTableDataType, string> =>\n\tnew Map(rows.map((row) => [row, previous.get(row) ?? nonce()]));\n\n/**\n * Orchestrator shared by `kol-table-stateless` and `kol-table-stateful`. Both render the same\n * `TableStatelessFC`; the concrete element only declares the Stencil members and delegates from its\n * watchers, listeners and lifecycle hooks.\n *\n * Besides the render props it owns what has a lifecycle: the scroll container's measurements\n * (scrollbar, sticky columns), the row keys, the deferred custom cell rendering and the events.\n */\nexport abstract class BaseTableStatelessWebComponent extends BaseWebComponent<TableStatelessApi> {\n\tprotected abstract readonly host?: HTMLElement;\n\n\tprivate scrollContainerElement?: HTMLDivElement;\n\tprivate tableElement?: HTMLTableElement;\n\tprivate resizeObserver?: ResizeObserver;\n\tprivate resizeDebounceTimeout?: ReturnType<typeof setTimeout>;\n\tprivate readonly cellRenderTimeouts = new Map<HTMLElement, ReturnType<typeof setTimeout>>();\n\n\t/** The sort buttons and the action buttons, one item per key the table FC renders. */\n\tprivate readonly buttonItems = createItemPool<ButtonItem>(\n\t\t() => createButtonItem(() => this.host),\n\t\t(item) => item.syncListeners(),\n\t\t(item) => item.destroy(),\n\t);\n\n\t/** The settings menu with its state, its buttons and its dialog. */\n\tprivate readonly settings = createTableSettings(\n\t\t() => this.host,\n\t\t() => forceUpdate(this),\n\t);\n\n\t/** The action links, one item per key the table FC renders. */\n\tprivate readonly linkItems = createItemPool<LinkItem>(\n\t\t() => createLinkItem(() => forceUpdate(this)),\n\t\t(item) => item.syncListeners(),\n\t\t(item) => item.destroy(),\n\t);\n\n\t// --- Lifecycle ---\n\n\tprotected initTableRenderProps(): void {\n\t\tthis.initRenderProps(tableStatelessPropsConfig);\n\t}\n\n\tprotected observeScrollContainer(): void {\n\t\tif (this.scrollContainerElement && ResizeObserver) {\n\t\t\tthis.resizeObserver = new ResizeObserver(this.handleResize);\n\t\t\tthis.resizeObserver.observe(this.scrollContainerElement);\n\t\t}\n\t\tthis.updateStickyColsDisabled();\n\t}\n\n\tprotected teardownTable(): void {\n\t\tthis.resizeObserver?.disconnect();\n\t\tclearTimeout(this.resizeDebounceTimeout);\n\t\tthis.buttonItems.destroy();\n\t\tthis.linkItems.destroy();\n\t\tthis.settings.destroy();\n\t}\n\n\t/** Call from `componentDidRender`: syncs the embedded buttons and links of the last render pass. */\n\tprotected syncTableItems(): void {\n\t\tthis.buttonItems.endRender();\n\t\tthis.linkItems.endRender();\n\t\tthis.settings.sync();\n\t}\n\n\t// --- Prop application ---\n\n\tprotected applyData(value?: TableDataPropType): void {\n\t\ttableDataProp.apply(value, (rows) => {\n\t\t\tthis.setRenderProp('data', rows);\n\t\t\tthis.setState('rowKeys', createRowKeys(rows, this.getState('rowKeys')));\n\t\t});\n\t}\n\n\tprotected applyDataFoot(value?: TableDataFootPropType): void {\n\t\ttableDataFootProp.apply(value, (v) => this.setRenderProp('dataFoot', v));\n\t}\n\n\tprotected applyFixedCols(value?: FixedColsPropType): void {\n\t\tfixedColsProp.apply(value, (v) => this.setRenderProp('fixedCols', v));\n\t\tthis.updateStickyColsDisabled();\n\t}\n\n\tprotected applyHasSettingsMenu(value?: HasSettingsMenuPropType): void {\n\t\thasSettingsMenuProp.apply(value, (v) => this.setRenderProp('hasSettingsMenu', v));\n\t}\n\n\tprotected applyHeaders(value?: TableHeaderCellsPropType): void {\n\t\ttableHeadersProp.apply(value, (headers) => this.setRenderProp('headers', withHeaderCellSettings(headers)));\n\t}\n\n\tprotected applyLabel(value?: string): void {\n\t\tlabelWithExpertSlotProp.apply(value, (v) => this.setRenderProp('label', v));\n\t}\n\n\tprotected applyLoading(value?: boolean): void {\n\t\ttableLoadingProp.apply(value, (v) => this.setRenderProp('loading', v));\n\t}\n\n\tprotected applyOn(value?: TableCallbacksPropType): void {\n\t\ttableCallbacksProp.apply(value, (v) => this.setRenderProp('on', v));\n\t}\n\n\tprotected applySelection(value?: TableSelectionPropType): void {\n\t\ttableSelectionProp.apply(value, (v) => this.setRenderProp('selection', v));\n\t\tthis.updateStickyColsDisabled();\n\t}\n\n\tprotected applyVariant(value?: VariantClassNamePropType): void {\n\t\tvariantProp.apply(value, (v) => this.setRenderProp('variant', v));\n\t}\n\n\t/**\n\t * Labels the `<table>` by elements outside the shadow root. Plain `aria-labelledby` IDREFs cannot\n\t * cross that boundary; element references can.\n\t */\n\tprotected syncTableLabel(elements?: HTMLElement[]): void {\n\t\tif (!this.tableElement) return;\n\t\tif ('ariaLabelledByElements' in this.tableElement) {\n\t\t\tif (elements?.length) {\n\t\t\t\tthis.tableElement.ariaLabelledByElements = elements;\n\t\t\t}\n\t\t\tLog.debug([this.tableElement, !!elements?.length, elements, this.tableElement.ariaLabelledByElements]);\n\t\t}\n\t}\n\n\t// --- Listeners ---\n\n\t/** Arrow up/down cycles the focus through the selection checkboxes in document order. */\n\tprotected moveCheckboxFocus(event: KeyboardEvent): void {\n\t\tif (event.key !== 'ArrowUp' && event.key !== 'ArrowDown') {\n\t\t\treturn;\n\t\t}\n\t\tconst checkboxes = Array.from(this.scrollContainerElement?.querySelectorAll<HTMLInputElement>('.kol-table__selection-input--checkbox') ?? []);\n\t\tconst focusedElement = this.scrollContainerElement?.querySelector(':focus') as HTMLInputElement;\n\t\tlet index = checkboxes.indexOf(focusedElement);\n\n\t\tif (index > -1) {\n\t\t\tevent.preventDefault();\n\t\t\tconst offset = event.key === 'ArrowDown' ? 1 : checkboxes.length - 1;\n\t\t\tindex = (index + offset) % checkboxes.length;\n\t\t\tcheckboxes[index].focus();\n\t\t}\n\t}\n\n\tprotected applyChangedHeaderCells(event: CustomEvent<KoliBriTableHeaderCell[][]>): void {\n\t\tconst updatedHeaders = { ...this.getRenderProp('headers'), horizontal: event.detail };\n\t\tthis.setRenderProp('headers', updatedHeaders);\n\t\tthis.setState('settingsChangedCounter', this.getState('settingsChangedCounter') + 1);\n\n\t\tconst onChangeHeaderCells = this.getRenderProp('on')[Callback.onChangeHeaderCells];\n\t\tif (typeof onChangeHeaderCells === 'function') {\n\t\t\tonChangeHeaderCells(event, updatedHeaders);\n\t\t}\n\t}\n\n\t// --- Measurements ---\n\n\t/**\n\t * Covers both axes: a theme may limit the height of the scroll container, so a table can overflow\n\t * vertically without overflowing horizontally. The base styling clips the vertical overflow, so\n\t * that axis only counts once a theme makes it scrollable.\n\t */\n\tprotected updateScrollbarState(): void {\n\t\tif (this.scrollContainerElement) {\n\t\t\tconst { clientHeight, clientWidth, scrollHeight, scrollWidth } = this.scrollContainerElement;\n\t\t\tthis.setState(\n\t\t\t\t'hasScrollbar',\n\t\t\t\tscrollWidth > clientWidth || (scrollHeight > clientHeight && ['auto', 'scroll'].includes(getComputedStyle(this.scrollContainerElement).overflowY)),\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate readonly handleResize = (): void => {\n\t\tthis.updateScrollbarState();\n\t\tclearTimeout(this.resizeDebounceTimeout);\n\t\tthis.resizeDebounceTimeout = setTimeout(() => {\n\t\t\tthis.updateStickyColsDisabled();\n\t\t}, RESIZE_DEBOUNCE_DELAY);\n\t};\n\n\t/**\n\t * Declared widths of the fixed columns plus the measured width of the selection column, which\n\t * is always sticky and sized by CSS.\n\t */\n\tprivate calculateFixedColsWidth(): number {\n\t\tconst [fixedLeft, fixedRight] = this.getRenderProp('fixedCols');\n\t\tconst headers = this.getRenderProp('headers');\n\t\tconst primaryCells = getPrimaryHeaders(headers).cells;\n\t\tconst maxCols = getNumberOfCols(headers.horizontal, this.getRenderProp('data'));\n\t\tlet totalWidth = 0;\n\n\t\tfor (let i = 0; i < fixedLeft && i < primaryCells.length; i++) {\n\t\t\ttotalWidth += primaryCells[i]?.width ?? 0;\n\t\t}\n\t\tfor (let i = maxCols - fixedRight; i < maxCols && i < primaryCells.length; i++) {\n\t\t\ttotalWidth += primaryCells[i]?.width ?? 0;\n\t\t}\n\n\t\tif (this.getRenderProp('selection')) {\n\t\t\tconst selectionCell = this.scrollContainerElement?.querySelector<HTMLElement>('.kol-table__cell--selection');\n\t\t\ttotalWidth += selectionCell?.offsetWidth ?? 0;\n\t\t}\n\n\t\treturn totalWidth;\n\t}\n\n\t/** Fixed columns that would fill the whole container render unfixed, so the rest stays reachable. */\n\tprivate updateStickyColsDisabled(): void {\n\t\tif (!this.scrollContainerElement) {\n\t\t\tthis.setState('stickyColsDisabled', false);\n\t\t\treturn;\n\t\t}\n\t\tconst fixedColsWidth = this.calculateFixedColsWidth();\n\t\tthis.setState('stickyColsDisabled', fixedColsWidth > 0 && fixedColsWidth >= this.scrollContainerElement.clientWidth);\n\t}\n\n\t// --- Callbacks ---\n\n\t/** Reports a changed selection through `onSelectionChange` and the `selectionchange` event. */\n\tprotected emitSelectionChange(event: Event, payload: SelectionChangeEventPayload): void {\n\t\tconst onSelectionChange = this.getRenderProp('on')[Callback.onSelectionChange];\n\t\tif (typeof onSelectionChange === 'function') {\n\t\t\tonSelectionChange(event, payload);\n\t\t}\n\t\tif (this.host) {\n\t\t\tdispatchDomEvent(this.host, KolEvent.selectionChange, payload);\n\t\t}\n\t}\n\n\t/** Reports a clicked sort button through `onSort` and the `sort` event. */\n\tprotected emitSort(event: MouseEvent, payload: SortEventPayload): void {\n\t\tconst onSort = this.getRenderProp('on')[Callback.onSort];\n\t\tif (typeof onSort === 'function' && payload.key) {\n\t\t\tonSort(event, payload);\n\t\t}\n\t\tif (this.host) {\n\t\t\tdispatchDomEvent(this.host, KolEvent.sort, payload);\n\t\t}\n\t}\n\n\tprivate readonly handleSelectionChange = (event: Event, payload: SelectionChangeEventPayload): void => {\n\t\tthis.emitSelectionChange(event, payload);\n\t};\n\n\tprivate readonly handleSort = (event: MouseEvent, payload: SortEventPayload): void => {\n\t\tthis.emitSort(event, payload);\n\t};\n\n\t/**\n\t * Runs a cell's custom `render` function once the cell is in the DOM. Deferred and debounced per\n\t * cell, so repeated renders of the table call it only once.\n\t */\n\tprivate readonly handleRenderCell = (cell: KoliBriTableCell, element?: HTMLElement): void => {\n\t\tif (!element) {\n\t\t\treturn;\n\t\t}\n\t\tclearTimeout(this.cellRenderTimeouts.get(element));\n\t\tthis.cellRenderTimeouts.set(\n\t\t\telement,\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (typeof cell.render === 'function') {\n\t\t\t\t\tconst renderContent = cell.render(element, cell, cell.data, this.getRenderProp('data'));\n\t\t\t\t\tif (typeof renderContent === 'string') {\n\t\t\t\t\t\telement.textContent = renderContent;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}),\n\t\t);\n\t};\n\n\t// --- Refs ---\n\n\tprivate readonly refScrollContainer = (element?: HTMLDivElement): void => {\n\t\tthis.scrollContainerElement = element;\n\t};\n\n\tprivate readonly refTable = (element?: HTMLTableElement): void => {\n\t\tthis.tableElement = element;\n\t\tthis.syncTableLabel(this.getState('externalLabelElements'));\n\t};\n\n\t// --- Render ---\n\n\tprivate readonly getButtonFcProps = (key: string, props: InternalButtonProps, rootAttributes?: ButtonItemRootAttributes): ButtonItemFcProps =>\n\t\tthis.buttonItems.get(key).getFcProps(props, rootAttributes);\n\n\tprivate readonly renderSettings = (horizontalHeaderCells: KoliBriTableHeaderCell[][]): JSX.Element => this.settings.render(horizontalHeaderCells);\n\n\tprivate readonly getLinkFcProps = (key: string, props: EmbeddedLinkProps): LinkFCProps => this.linkItems.get(key).getFcProps(props);\n\n\tprotected renderTableStatelessFC(): JSX.Element {\n\t\tthis.buttonItems.beginRender();\n\t\tthis.linkItems.beginRender();\n\t\tthis.settings.beginRender();\n\t\treturn (\n\t\t\t<TableStatelessFC\n\t\t\t\tdata={this.getRenderProp('data')}\n\t\t\t\tdataFoot={this.getRenderProp('dataFoot')}\n\t\t\t\texternalLabelElements={this.getState('externalLabelElements')}\n\t\t\t\tfixedCols={this.getRenderProp('fixedCols')}\n\t\t\t\tgetButtonFcProps={this.getButtonFcProps}\n\t\t\t\tgetLinkFcProps={this.getLinkFcProps}\n\t\t\t\trenderSettings={this.renderSettings}\n\t\t\t\thandleRenderCell={this.handleRenderCell}\n\t\t\t\thandleSelectionChange={this.handleSelectionChange}\n\t\t\t\thandleSort={this.handleSort}\n\t\t\t\thasScrollbar={this.getState('hasScrollbar')}\n\t\t\t\thasSettingsMenu={this.getRenderProp('hasSettingsMenu')}\n\t\t\t\theaders={this.getRenderProp('headers')}\n\t\t\t\tlabel={this.getRenderProp('label')}\n\t\t\t\tloading={this.getRenderProp('loading')}\n\t\t\t\ton={this.getRenderProp('on')}\n\t\t\t\trefScrollContainer={this.refScrollContainer}\n\t\t\t\trefTable={this.refTable}\n\t\t\t\trowKeys={this.getState('rowKeys')}\n\t\t\t\tselection={this.getRenderProp('selection')}\n\t\t\t\tsettingsChangedCounter={this.getState('settingsChangedCounter')}\n\t\t\t\tstickyColsDisabled={this.getState('stickyColsDisabled')}\n\t\t\t\tvariant={this.getRenderProp('variant')}\n\t\t\t/>\n\t\t);\n\t}\n}\n"],"names":["watchValidator","resolveTargets","Log","createPropDefinition","normalizeArray","normalizeBoolean","createCallbacksPropDefinition","parseJson","labelWithExpertSlotProp","variantProp","bem","h","IconFC","TooltipFC","translate","Fragment","ButtonFC","LinkFC","KolBadgeTag","BemRootNodeFC","classNameFromVariant","SpinFC","DialogFC","CardFC","NOOP","createCtaRef","TooltipBehavior","BaseWebComponent","nonce","createUniqueId","dispatchDomEvent","handleCancelOverlay","KolEvent","unlockScroll","label","level","width","labelProp","levelProp","dialogCallbacksProp","variantDialogProp","widthProp","resolveCardCloseButtonProps","dialogBlockClass","lockScroll","createItemPool","createButtonItem","__rest","index","KolInputCheckboxTag","KolInputNumberTag","AlertFC","forceUpdate","createLinkItem","Callback"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBO,MAAM,sBAAsB,GAAG,CACrC,SAAkB,EAClB,IAA6B,EAC7B,SAAoC,EACpC,KAA8B,KACZ;AAClB,IAAA,MAAM,OAAO,GAAG,CAAC,KAAe,KAAc,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,WAAW;AACvG,IAAAA,qBAAc,CAAC,SAAsC,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC;AAC9G,IAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAEpB,QAAA,OAAO,EAAE;;IAGV,MAAM,QAAQ,GAAGC,6BAAc,CAAC,IAAI,EAAE,KAAK,CAAC;IAC5C,IAAI,SAAS,EAAE;AACd,QAAA,IAAI;AACH,YAAA,SAAS,CAAC,sBAAsB,GAAG,QAAQ;;QAC1C,OAAA,EAAA,EAAM;;QAGRC,UAAG,CAAC,KAAK,CAAC,CAAC,wBAAwB,EAAE,SAAS,CAAC,CAAC;;AAEjD,IAAA,OAAO,QAAQ;AAChB;;ACjCA,MAAM,eAAe,GAAG,CAAC,KAAc,KAAc,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;AAEhH,MAAM,aAAa,GAAGC,qCAAoB,CAChD,WAAW,EACX,CAAC,CAAC,EAAE,CAAC,CAAC,EACN,CAAC,KAAK,KAAKC,+BAAc,CAAC,KAAK,CAAsB,EACrD,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,CAC7D;;ACZM,MAAM,mBAAmB,GAAGD,qCAAoB,CAAsB,iBAAiB,EAAE,KAAK,EAAEE,iCAAgB,CAAC;;ACLjH,MAAM,kBAAkB,GAAGC,8CAA6B,EAA0B;;ACWnF,SAAU,kBAAkB,CAAC,KAAc,EAAA;AAChD,IAAA,MAAM,IAAI,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAGC,gBAAS,CAAU,KAAK,CAAC,GAAG,KAAK;AAC1E,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACxB,QAAA,OAAO,IAA8B;;AAEtC,IAAA,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC;AACzE;AAGM,SAAU,WAAW,CAAC,IAA4B,EAAA;AACvD,IAAA,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,CAAC;AACpE;AAEO,MAAM,aAAa,GAAGJ,qCAAoB,CAAgB,MAAM,EAAE,EAAE,EAAE,kBAAkB,EAAE,WAAW;;ACjBrG,MAAM,iBAAiB,GAAGA,qCAAoB,CAAoB,UAAU,EAAE,EAAE,EAAE,kBAAkB,EAAE,WAAW;;ACExH,MAAM,YAAY,GAAG,CAAC,IAAa,KAAkD,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAEnJ,SAAS,qBAAqB,CAAC,KAAc,EAAA;AAC5C,IAAA,MAAM,OAAO,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAGI,gBAAS,CAAU,KAAK,CAAC,GAAG,KAAK;IAC7E,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE;AACpD,QAAA,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC;;IAE9D,MAAM,EAAE,UAAU,GAAG,EAAE,EAAE,QAAQ,GAAG,EAAE,EAAE,GAAG,OAA8B;AACzE,IAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE;AACzD,QAAA,MAAM,IAAI,KAAK,CAAC,+EAA+E,CAAC;;AAEjG,IAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE;AAChC;AAGA,SAAS,gBAAgB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAgB,EAAA;AAC/D,IAAA,OAAO,CAAC,GAAG,UAAU,EAAE,GAAG,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC;AACpI;AAEO,MAAM,gBAAgB,GAAGJ,qCAAoB,CAAmB,SAAS,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,qBAAqB,EAAE,gBAAgB,CAAC;;ACpBrJ,MAAM,gBAAgB,GAAGA,qCAAoB,CAAmB,SAAS,EAAE,KAAK,EAAEE,iCAAgB,CAAC;;ACG1G,SAAS,uBAAuB,CAAC,KAAc,EAAA;AAC9C,IAAA,MAAM,SAAS,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAGE,gBAAS,CAAU,KAAK,CAAC,GAAG,KAAK;IAC/E,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,EAAE;AACxD,QAAA,OAAO,SAAkC;;AAE1C,IAAA,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC;AAChE;AAEA,SAAS,gBAAgB,CAAC,SAAwC,EAAA;AACjE,IAAA,OAAO,SAAS,KAAK,KAAK,KAAK,OAAO,SAAS,CAAC,KAAK,KAAK,UAAU,KAAK,CAAC,SAAS,CAAC,YAAY,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;AAC5I;AAEO,MAAM,kBAAkB,GAAGJ,qCAAoB,CAAqB,WAAW,EAAE,KAAK,EAAE,uBAAuB,EAAE,gBAAgB,CAAC;;ACDlI,MAAM,yBAAyB,GAAG;AACxC,IAAA,QAAQ,EAAE,CAACK,2CAAuB,EAAE,aAAa,CAAC;AAClD,IAAA,QAAQ,EAAE,CAAC,aAAa,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,EAAEC,mBAAW,CAAC;CACtH;;ACIrC,MAAM,uBAAuB,GAAG,CAAC,IAAgC,KAChE,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC;AAE5G,MAAM,iBAAiB,GAAG,CAAC,OAAqB,KAAoB;IAC1E,MAAM,eAAe,GAAG,uBAAuB,CAAC,OAAO,CAAC,UAAU,CAAC;AACnE,IAAA,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;QAC/B,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,IAAI,EAAE;;IAEpD,MAAM,aAAa,GAAG,uBAAuB,CAAC,OAAO,CAAC,QAAQ,CAAC;AAC/D,IAAA,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;AACxE,CAAC;AAED,MAAM,QAAQ,GAAG,CAAC,KAA+B,EAAE,IAA2B,KAAY;IACzF,IAAI,KAAK,GAAG,CAAC;AACb,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACzB,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;;YACtB,KAAK,IAAI,MAAA,IAAI,CAAC,IAAI,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,CAAC;AACzB,SAAC,CAAC;;AAEH,IAAA,OAAO,KAAK;AACb,CAAC;AAGM,MAAM,eAAe,GAAG,CAAC,iBAA6C,EAAE,IAA4B,KAAY;IACtH,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;AACpF,IAAA,OAAO,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG;AACrC,CAAC;AAGM,MAAM,eAAe,GAAG,CAAC,eAA2C,EAAE,IAA4B,EAAE,UAAkB,KAAY;IACxI,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;AACxF,IAAA,OAAO,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,GAAG,UAAU;AAClD,CAAC;AAEM,MAAM,iBAAiB,GAAG,CAAC,KAAwD,KAAY;;AACrG,IAAA,OAAA,CAAA,EAAA,GAAA,KAAK,KAAL,IAAA,IAAA,KAAK,uBAAL,KAAK,CAAE,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAI;QAC3B,IAAI,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE;AAChD,YAAA,OAAO,GAAG;;QAEX,OAAO,GAAG,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;AACjC,KAAC,EAAE,CAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,CAAC;CAAA;AAQJ,MAAM,YAAY,GAAG,CAAC,SAA4B,EAAE,kBAA2B,EAAE,OAAe,EAAE,KAAyB,KAA2B;AAC5J,IAAA,IAAI,KAAK,KAAK,SAAS,IAAI,kBAAkB,EAAE;AAC9C,QAAA,OAAO,SAAS;;AAEjB,IAAA,IAAI,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE;AACzB,QAAA,OAAO,MAAM;;AAEd,IAAA,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE;AACxD,QAAA,OAAO,OAAO;;AAEf,IAAA,OAAO,SAAS;AACjB,CAAC;AAMM,MAAM,eAAe,GAAG,CAC9B,YAAsC,EACtC,OAAe,EACf,SAA4B,EAC5B,kBAA2B,KACd;;IACb,MAAM,OAAO,GAAa,EAAE;AAC5B,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE;AACjC,QAAA,IAAI,YAAY,CAAC,SAAS,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,MAAM,EAAE;AACvE,YAAA,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA,EAAA,GAAA,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,mCAAI,CAAC,KAAK,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,CAAC,CAAC;;;AAGxE,IAAA,KAAK,IAAI,CAAC,GAAG,OAAO,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AACtC,QAAA,IAAI,YAAY,CAAC,SAAS,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,OAAO,EAAE;AACxE,YAAA,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA,EAAA,GAAA,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,mCAAI,CAAC,KAAK,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,CAAC,CAAC;;;AAGxE,IAAA,OAAO,OAAO;AACf,CAAC;AAMM,MAAM,eAAe,GAAG,CAAC,OAAiB,EAAE,KAAyB,EAAE,IAAa,EAAE,YAAqB,KAAY;AAC7H,IAAA,MAAM,MAAM,GAAG,KAAK,KAAK,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;AAC/D,IAAA,IAAI,IAAI,IAAI,YAAY,EAAE;QACzB,OAAO,CAAA,6CAAA,EAAgD,MAAM,CAAA,GAAA,CAAK;;IAEnE,OAAO,CAAA,EAAG,MAAM,CAAA,EAAA,CAAI;AACrB,CAAC;AAKM,MAAM,sBAAsB,GAAG,CACrC,OAAqB,EACrB,cAA8B,EAC9B,QAAgB,EAChB,IAAwB,KACuC;AAC/D,IAAA,MAAM,gBAAgB,GAAG,cAAc,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,QAAQ;AAC1F,IAAA,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,SAAS;IAEnD,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAgD;IAC5F,IAAI,CAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,MAAA,GAAA,MAAA,GAAN,MAAM,CAAE,IAAI,MAAK,IAAI,EAAE;AAC1B,QAAA,OAAO,MAAM;;AAEd,IAAA,OAAO,SAAS;AACjB,CAAC;AAkBM,MAAM,eAAe,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,EAAoB,KAAoB;IACxI,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC;AACzD,IAAA,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK;AACzC,IAAA,IAAI,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC;IACtE,IAAI,QAAQ,GAAG,CAAC;IAChB,IAAI,MAAM,EAAE;QACX,QAAQ,GAAG,OAAO;AAClB,QAAA,OAAO,IAAI,QAAQ,CAAC,MAAM;;IAE3B,MAAM,SAAS,GAAmB,EAAE;IAEpC,MAAM,QAAQ,GAAa,EAAE;IAC7B,MAAM,QAAQ,GAAe,EAAE;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AACxC,QAAA,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;AACnB,QAAA,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE;AACrB,KAAC,CAAC;AAEF,IAAA,KAAK,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE;QACxC,MAAM,OAAO,GAAiB,EAAE;QAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,KAAK,KAAI;YAC/C,IAAI,SAAS,GAAG,CAAC;AACjB,YAAA,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,CAAC;AACxD,YAAA,IAAI,SAAS,IAAI,CAAC,EAAE;AACnB,gBAAA,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,GAAG,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AACzD,gBAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;oBAC7B,OAAO,CAAC,IAAI,CACR,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAI,CACP,EAAA,EAAA,UAAU,EAAE,IAAI,EAChB,IAAI,EAAE,EAAE,IACP;oBACF,IAAI,OAAO,GAAG,CAAC;AACf,oBAAA,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE;AACzD,wBAAA,OAAO,GAAG,IAAI,CAAC,OAAO;;oBAEvB,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;AAC7B,oBAAA,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE;AACzD,wBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE;4BACtC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;;;AAGnC,oBAAA,QAAQ,CAAC,KAAK,CAAC,EAAE;;;AAGpB,SAAC,CAAC;AACF,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE;AACjC,YAAA,IAAI,cAAc,CAAC,UAAU,EAAE;AAC9B,gBAAA,MAAM,GAAG,GAAG,MAAM,GAAG,QAAQ,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACrD,gBAAA,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC;AAC9B,gBAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE;oBAC7F,OAAO,CAAC,IAAI,CACR,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,MAAM,CACT,EAAA,EAAA,QAAQ,EAAE,CAAC,EACX,OAAO,EAAE,SAAS,EAClB,OAAO,EAAE,SAAS,EAClB,IAAI,EAAE,GAAG,EACT,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,GAAa,CAAW,IACzC;;;iBAEG;AACN,gBAAA,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC;gBAC9B,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;oBACrG,OAAO,CAAC,IAAI,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACR,MAAM,CAAA,EAAA,EACT,QAAQ,EAAE,CAAC,EACX,OAAO,EAAE,SAAS,EAClB,OAAO,EAAE,SAAS,EAClB,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EACb,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAwB,CAAW,IACxD;;;;AAIL,QAAA,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;;AAExB,IAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QACtB,IAAI,OAAO,GAAG,iBAAiB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACtD,IAAI,OAAO,GAAG,CAAC;QAEf,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAChC,YAAA,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM;YAClC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AACnC,gBAAA,OAAO,IAAI,GAAG,CAAC,OAAO,IAAI,CAAC;AAC5B,aAAC,CAAC;;AAEH,QAAA,MAAM,SAAS,GAAG;AACjB,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,KAAK,EAAE,cAAc;AACrB,YAAA,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;SAC7B;AACD,QAAA,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3B,YAAA,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC;;aACrB;YACN,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;;;AAG9B,IAAA,OAAO,SAAS;AACjB,CAAC;AAOM,MAAM,gBAAgB,GAAG,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAgB,KAAY;IAClF,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,KAC/C,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAe,CAAC,CAC9H;IACD,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAe,CAAC,CAAC;IAC5J,MAAM,SAAS,GAAG,CAAC,GAAG,cAAc,EAAE,GAAG,gBAAgB,CAAC;AAE1D,IAAA,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3B,QAAA,OAAO,KAAK;;AAEb,IAAA,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3B,QAAA,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI;;IAE3B,OAAO,CAAA,KAAA,EAAQ,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAA,EAAA,CAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG;AAC7D,CAAC;AAEM,MAAM,sBAAsB,GAAG,CAAC,KAA6D,KACnG,KAAK,KAAK,SAAS,GAAG,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC;AAE3D,MAAM,2BAA2B,GAAG,CAAC,SAAwC,KAAY,EAAC,IAAA,EAAA,CAAA,CAAA,OAAA,CAAA,EAAA,IAAC,SAAS,GAAG,SAAS,CAAC,eAAe,GAAG,SAAS,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,CAAA,EAAA;AAarJ,MAAM,oBAAoB,GAAG,CAAC,SAAwC,KAAoB;AAChG,IAAA,MAAM,YAAY,GAAG,SAAS,GAAG,sBAAsB,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,EAAE;IACpF,OAAO;QACN,YAAY,EAAE,IAAI,GAAG,CAAC,CAAC,SAAS,GAAG,sBAAsB,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;AACpG,QAAA,eAAe,EAAE,2BAA2B,CAAC,SAAS,CAAC;QACvD,YAAY;QACZ,eAAe,EAAE,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;KAClD;AACF,CAAC;AAGM,MAAM,iBAAiB,GAAG,CAAC,IAA4B,EAAE,KAAqB,KACpF,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAA6B,CAAC,CAAC,CAAC;AAMzG,MAAM,qBAAqB,GAAG,CAAC,IAA4B,EAAE,KAAqB,EAAE,SAAkB,KAAgC;IAC5I,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACzF,IAAI,SAAS,EAAE;AACd,QAAA,SAAS,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,KAAH,IAAA,IAAA,GAAG,KAAH,MAAA,GAAA,MAAA,GAAA,GAAG,CAAG,KAAK,CAAC,eAAe,CAA6B,CAAC,CAAC;;AAEzH,IAAA,OAAO,SAAS;AACjB,CAAC;;ACvRD,MAAM,QAAQ,GAAGC,eAAG,CAAC,QAAQ,CAAC,WAAW,CAAC;AAC1C,MAAM,qBAAqB,GAAG,QAAQ,CAAC,MAAM,CAAC;AAC9C,MAAM,6BAA6B,GAAG,QAAQ,CAAC,cAAc,CAAC;AAC9D,MAAM,4BAA4B,GAAG,QAAQ,CAAC,aAAa,CAAC;AAC5D,MAAM,uBAAuB,GAAG,QAAQ,CAAC,QAAQ,CAAC;AAClD,MAAM,qBAAqB,GAAG,QAAQ,CAAC,MAAM,CAAC;AAC9C,MAAM,yBAAyB,GAAG,QAAQ,CAAC,UAAU,CAAC;AACtD,MAAM,iCAAiC,GAAG,QAAQ,CAAC,kBAAkB,CAAC;AACtE,MAAM,+BAA+B,GAAG,QAAQ,CAAC,gBAAgB,CAAC;AAClE,MAAM,wCAAwC,GAAG,QAAQ,CAAC,yBAAyB,CAAC;AACpF,MAAM,qBAAqB,GAAG,QAAQ,CAAC,MAAM,CAAC;AAC9C,MAAM,4BAA4B,GAAG,QAAQ,CAAC,aAAa,CAAC;AAC5D,MAAM,2BAA2B,GAAG,QAAQ,CAAC,YAAY,CAAC;AAC1D,MAAM,sBAAsB,GAAG,QAAQ,CAAC,OAAO,CAAC;AAChD,MAAM,wBAAwB,GAAG,CAAG,EAAA,QAAQ,CAAC,eAAe,CAAC,CAAA,CAAA,EAAI,QAAQ,CAAC,SAAS,CAAC,EAAE;AAuBtF,MAAM,cAAc,GAAG,CAAC,OAAsB,EAAE,KAAyB,KACxE,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,kBAAkB,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC;AAEpF,MAAM,UAAU,GAAG,CAAC,OAAsB,EAAE,KAA4B,EAAE,KAAyB,MAAM;IACxG,IAAI,EAAE,KAAK,KAAK,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,SAAS,KAAK,KAAK,CAAC,GAAG,SAAS;IACpH,KAAK,EAAE,KAAK,KAAK,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,SAAS,KAAK,KAAK,CAAC,GAAG,SAAS;AACvH,CAAA,CAAC;AAMF,MAAM,SAAS,GAAG,CAAC,OAAsB,EAAE,GAAiB,EAAE,QAAgB,OAAY,IAAA,EAAA,EAAA,EAAA,CAAA,CACzF,OAAA,CAAA,EAAA,IAAC,OAAO,CAAC,cAAc,CAAC,UAAU,KAAI,CAAA,EAAA,GAAA,GAAG,CAAC,CAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,IAAI,CAAA,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,MAAM,CAAC,QAAQ,CAAC,CAAA,EAAA;AAMvH,MAAM,mBAAmB,GAAG,CAAC,OAAsB,EAAE,GAAiB,EAAE,QAAgB,KAAiB;;IACxG,MAAM,EAAE,qBAAqB,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,OAAO;AACpE,IAAA,IAAI,CAAC,SAAS;AAAE,QAAA,OAAO,EAAE;AACzB,IAAA,MAAM,aAAa,GAAG,CAAA,EAAA,GAAA,GAAG,CAAC,CAAC,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAI;AAElC,IAAA,IAAI,CAAC,aAAa;AAAE,QAAA,OAAO,EAAE;IAC7B,MAAM,WAAW,GAAG,aAAa,CAAC,cAAc,CAAC,eAAe,CAAoB;IACpF,MAAM,UAAU,GAAG,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,QAAQ,KAAK,SAAS;AAEzE,IAAA,MAAM,iBAAiB,GAAG,MAAM,CAAC,WAAW,CAAC;IAC7C,MAAM,QAAQ,GAAG,cAAc,CAAC,eAAe,CAAC,GAAG,CAAC,iBAAiB,CAAC;IACtE,MAAM,QAAQ,GAAG,cAAc,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAEnE,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC;AAC5C,IAAA,MAAM,KAAK,GAAG;AACb,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,OAAO,EAAE,QAAQ;QACjB,QAAQ;AACR,QAAA,EAAE,EAAE,MAAM,CAAC,WAAW,CAAC;QACvB,CAAC,YAAY,GAAG,KAAK;KACrB;AACD,IAAA,QACCC,OAAI,CAAA,IAAA,EAAA,EAAA,GAAG,EAAE,CAAS,MAAA,EAAA,QAAQ,CAAY,UAAA,CAAA,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAA,EACnFA,OAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAE,QAAQ,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAA,EACtD,UAAU,IACVA,mBAAO,KAAK,EAAE,QAAQ,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAA,EACtDA,OAAC,CAAAC,kBAAM,IAAC,KAAK,EAAE,+BAA+B,EAAE,KAAK,EAAE,CAAA,QAAA,EAAW,QAAQ,GAAG,eAAe,GAAG,EAAE,CAAE,CAAA,EAAE,KAAK,EAAC,EAAE,EAAG,CAAA,EAChHD,OACC,CAAA,OAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,KAAK,EAAE,QAAQ,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAClD,KAAK,EAAA,EACT,IAAI,EAAC,UAAU,EACf,OAAO,EAAE,CAAC,KAAY,KAAI;YACzB,MAAM,mBAAmB,GAAG,CAAC;kBAC1B,CAAC,GAAG,cAAc,CAAC,YAAY,EAAE,WAAW;AAC9C,kBAAE,cAAc,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC,KAAK,iBAAiB,CAAC;AACjF,YAAA,qBAAqB,CAAC,KAAK,EAAE,mBAAmB,CAAC;SACjD,EACA,CAAA,CAAA,CACK,KAERA,OAAA,CAAA,OAAA,EAAA,EAAO,KAAK,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EAAA,EACxCA,OACC,CAAA,OAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,KAAK,EAAE,QAAQ,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,IAC/C,KAAK,EAAA,EACT,IAAI,EAAC,OAAO,EACZ,OAAO,EAAE,CAAC,KAAY,KAAI;AACzB,YAAA,qBAAqB,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,CAAC;SAC3C,EAAA,CAAA,CACA,CACK,CACR,EACDA,OAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAE,wCAAwC,EAAA,EACnDA,OAAC,CAAAE,qBAAS,EAAC,EAAA,KAAK,EAAE,KAAK,EAAE,SAAS,EAAC,EAAE,EAAC,EAAE,EAAE,CAAA,EAAG,WAAW,CAAA,MAAA,CAAQ,EAAE,WAAW,EAAE,SAAQ,EAAA,CAAI,CACtF,CACD,CACF;AAEP,CAAC;AAMD,MAAM,0BAA0B,GAAG,CAAC,OAAsB,KAAiB;IAC1E,MAAM,EAAE,IAAI,EAAE,qBAAqB,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,OAAO;IAE1E,IAAI,CAAC,SAAS,EAAE;QACf,OAAOF,gBAAI,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAA,OAAA,CAAS,GAAO;;AAG5E,IAAA,IAAI,SAAS,CAAC,QAAQ,KAAK,KAAK,EAAE;QACjC,QACCA,OAAI,CAAA,IAAA,EAAA,EAAA,KAAK,EAAC,KAAK,EAAC,GAAG,EAAE,CAAmB,iBAAA,CAAA,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAA,EACnGA,OAAM,CAAA,MAAA,EAAA,EAAA,KAAK,EAAC,iBAAiB,EAAE,EAAAG,cAAS,CAAC,qBAAqB,CAAC,CAAQ,CACnE;;AAIP,IAAA,MAAM,iBAAiB,GAAG,cAAc,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM;IAC3H,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,MAAM;AACjE,IAAA,MAAM,SAAS,GAAG,iBAAiB,KAAK,UAAU;IAClD,MAAM,aAAa,GAAG,iBAAiB,KAAK,CAAC,IAAI,CAAC,SAAS;AAC3D,IAAA,IAAI,KAAa;AACjB,IAAA,IAAI,iBAAiB,KAAK,CAAC,EAAE;AAC5B,QAAA,KAAK,GAAGA,cAAS,CAAC,yBAAyB,CAAC;;AACtC,SAAA,IAAI,SAAS,IAAI,CAAC,aAAa,EAAE;AACvC,QAAA,KAAK,GAAGA,cAAS,CAAC,0BAA0B,CAAC;;SACvC;AACN,QAAA,KAAK,GAAGA,cAAS,CAAC,mCAAmC,CAAC;;AAEvD,IAAA,QACCH,OAAI,CAAA,IAAA,EAAA,EAAA,KAAK,EAAC,KAAK,EAAC,GAAG,EAAE,CAAA,iBAAA,CAAmB,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAA,EACnGA,OAAM,CAAA,MAAA,EAAA,EAAA,KAAK,EAAC,iBAAiB,EAAA,EAAEG,cAAS,CAAC,qBAAqB,CAAC,CAAQ,EACvEH,OAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,QAAQ,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,EAAA,EACvEA,OAAA,CAAA,OAAA,EAAA,EAAO,KAAK,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EAAA,EACxCA,OAAA,CAACC,kBAAM,EAAA,EAAC,KAAK,EAAE,+BAA+B,EAAE,KAAK,EAAE,CAAA,QAAA,EAAW,aAAa,GAAG,eAAe,GAAG,SAAS,GAAG,eAAe,GAAG,EAAE,CAAE,CAAA,EAAE,KAAK,EAAC,EAAE,EAAG,CAAA,EACnJD,OAAA,CAAA,OAAA,EAAA,EACC,KAAK,EAAE,QAAQ,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EACtD,IAAI,EAAC,WAAW,EAChB,OAAO,EAAE,SAAS,IAAI,CAAC,aAAa,EACpC,aAAa,EAAE,aAAa,gBAChB,KAAK,EACjB,IAAI,EAAC,UAAU,EACf,OAAO,EAAE,CAAC,KAAY,KAAI;AACzB,YAAA,qBAAqB,CAAC,KAAK,EAAE,qBAAqB,CAAC,IAAI,EAAE,cAAc,EAAE,CAAC,SAAS,CAAC,CAAC;AACtF,SAAC,GACA,CACK,EACRA,OAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAE,wCAAwC,EAAA,EACnDA,OAAC,CAAAE,qBAAS,IAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAC,EAAE,EAAC,WAAW,EAAE,MAAK,GAAG,GAAI,CAC1D,CACD,CACF;AAEP,CAAC;AAOD,MAAM,kBAAkB,GAAG,CAAC,EAAE,OAAO,EAAiB,KAAiB;AACtE,IAAA,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,OAAO;AAExC,IAAA,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AACrD,QAAA,OAAOF,OAAA,CAACI,cAAQ,EAAA,IAAA,CAAY;;AAG7B,IAAA,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,OAAI,IAAA,EAAA,EAAA,EAAA,CAAA,CAAC,OAAA,GAAG,IAAI,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAM,aAAN,MAAM,KAAA,MAAA,GAAA,MAAA,GAAN,MAAM,CAAG,CAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,CAAC,CAAC,CAAA,EAAA,EAAE,CAAC,CAAC;AAEvF,IAAA,OAAOJ,OAAgB,CAAA,IAAA,EAAA,EAAA,aAAA,EAAA,MAAM,EAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,UAAU,CAAA,EAAA,CAAI,EAAE,GAAG,SAAS,GAAO;AAC5J,CAAC;AAED,MAAM,sBAAsB,GAAG,CAAC,KAAc,KAAY;AACzD,IAAA,MAAM,aAAa,GAAGG,cAAS,CAAC,UAAU,CAAC;IAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,GAAG,CAAC,EAAE;AAC3C,QAAA,OAAO,GAAG,aAAa,CAAA,GAAA,EAAMA,cAAS,CAAC,sBAAsB,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAA,EAAG,KAAK,CAAE,CAAA,CAAC,EAAE;;AAElG,IAAA,OAAO,aAAa;AACrB,CAAC;AAMD,MAAM,iBAAiB,GAAG,CAAC,OAAsB,EAAE,IAA4B,EAAE,QAAgB,EAAE,QAAgB,EAAE,UAAmB,KAAiB;AACxJ,IAAA,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE;AAC3B,QAAA,OAAO,EAAE;;IAGV,MAAM,eAAe,GAAG,CAAA,IAAI,KAAJ,IAAA,IAAA,IAAI,KAAJ,MAAA,GAAA,MAAA,GAAA,IAAI,CAAE,QAAQ,MAAK,KAAK;IAChD,MAAM,gBAAgB,GAAG,OAAO,IAAI,CAAC,aAAa,KAAK,QAAQ;AAC/D,IAAA,MAAM,OAAO,GAAG,eAAe,IAAI,gBAAgB;IAEnD,IAAI,QAAQ,GAAa,MAAM;IAC/B,IAAI,cAAc,GAAG,sBAAsB;AAE3C,IAAA,IAAI,OAAO,IAAI,IAAI,CAAC,aAAa,EAAE;AAClC,QAAA,QAAQ,IAAI,CAAC,aAAa;AACzB,YAAA,KAAK,KAAK;gBACT,cAAc,GAAG,kBAAkB;gBACnC,QAAQ,GAAG,WAAW;gBACtB;AACD,YAAA,KAAK,MAAM;gBACV,cAAc,GAAG,mBAAmB;gBACpC,QAAQ,GAAG,YAAY;gBACvB;AACD,YAAA;gBACC,QAAQ,GAAG,MAAM;;;AAIpB,IAAA,MAAM,KAAK,GAAG,UAAU,GAAG,KAAK,GAAG,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,UAAU,GAAG,KAAK;IAE5G,MAAM,SAAS,GAAG,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,GAAG,SAAS;AACvG,IAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,KAAK,SAAS,GAAG,CAAG,EAAA,IAAI,CAAC,KAAK,CAAA,EAAA,CAAI,GAAG,SAAS;IACtE,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC;AAC/C,IAAA,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC;AAC5D,IAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS;AAChC,IAAA,MAAM,aAAa,GAAG,OAAO,GAAG,IAAI,CAAC,aAAa,GAAG,SAAS;IAE9D,QACCH,OACC,CAAA,IAAA,EAAA,EAAA,GAAG,EAAE,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,QAAQ,CAAI,CAAA,EAAA,IAAI,CAAC,KAAK,CAAE,CAAA,EAC5C,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE;YACvB,CAAC,QAAQ,GAAG,IAAI;YAChB,cAAc,EAAE,SAAS,KAAK,QAAQ;YACtC,eAAe,EAAE,SAAS,KAAK,SAAS;YACxC,YAAY,EAAE,SAAS,KAAK,MAAM;YAClC,aAAa,EAAE,SAAS,KAAK,OAAO;AACpC,YAAA,MAAM,EAAE,IAAI;YACZ,aAAa,EAAE,KAAK,KAAK,MAAM;YAC/B,cAAc,EAAE,KAAK,KAAK,OAAO;AACjC,SAAA,CAAC,EACF,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAA,WAAA,EAClB,QAAQ,EACR,WAAA,EAAA,aAAa,GAAG,CAAQ,KAAA,EAAA,aAAa,EAAE,GAAG,SAAS,EAE7D,EAAA,aAAa,IACbA,OAAA,CAAA,MAAA,EAAA,EAAM,KAAK,EAAE,qBAAqB,EAAA,EACjCA,OAAC,CAAAK,oBAAQ,oBACJ,OAAO,CAAC,gBAAgB,CAC3B,CAAQ,KAAA,EAAA,UAAU,GAAG,UAAU,GAAG,YAAY,CAAA,CAAA,EAAI,QAAQ,CAAI,CAAA,EAAA,QAAQ,EAAE,EACxE;AACC,QAAA,MAAM,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;QACjC,MAAM,EAAE,IAAI,CAAC,KAAK;AAClB,QAAA,gBAAgB,EAAE,sBAAsB,CAAC,SAAS,CAAC;AACnD,QAAA,GAAG,EAAE;AACJ,YAAA,OAAO,EAAE,CAAC,KAAiB,KAAI;AAC9B,gBAAA,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE;oBACzB,GAAG,EAAE,IAAI,CAAC,GAAa;AACvB,oBAAA,oBAAoB,EAAE,aAAa;AACnC,iBAAA,CAAC;aACF;AACD,SAAA;AACD,KAAA,EACD,EAAE,KAAK,EAAE,4BAA4B,EAAE,CACvC,CACA,CAAA,EACD,SAAS,KACTL,OAAA,CAAA,MAAA,EAAA,EAAA,aAAA,EAAkB,MAAM,EAAC,KAAK,EAAE,2BAA2B,EACzD,EAAA,SAAS,CACJ,CACP,CACK,KAEP,IAAI,CAAC,KAAK,CACV,CACG;AAEP,CAAC;AAOD,MAAM,iBAAiB,GAAG,CAAC,OAAsB,EAAE,YAAoC,EAAE,OAA6B,EAAE,GAAW,MAClIA,OAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAE,6BAA6B,EACvC,EAAA,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,WAAW,KAAI;AAC1D,IAAA,MAAM,SAAS,GAAG,CAAA,OAAA,EAAU,GAAG,CAAI,CAAA,EAAA,WAAW,EAAE;AAChD,IAAA,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC7B,QAAA,QACCA,OAAA,CAAA,MAAA,EAAA,EAAM,GAAG,EAAE,SAAS,EAAA,EACnBA,OAAA,CAACK,oBAAQ,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAK,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAI,CAAA,CACvD;;AAEF,SAAA,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE;AAClC,QAAA,QACCL,OAAA,CAAA,MAAA,EAAA,EAAM,GAAG,EAAE,SAAS,EAAA,EACnBA,OAAA,CAACM,UAAM,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAK,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC,CAAI,CAAA,CACnD;;AAGT,IAAA,OAAO,IAAI;AACZ,CAAC,CAAC,CACG,CACN;AAKD,MAAM,gBAAgB,GAAG,CAAC,WAAkC,EAAE,OAA6B,EAAE,GAAW,KAAiB;AACxH,IAAA,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG;IAC9B,IAAI,CAAC,MAAM,EAAE;AACZ,QAAA,OAAO,EAAE;;AAGV,IAAA,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAA0B;IACvD,IAAI,CAAC,MAAM,EAAE;AACZ,QAAA,OAAO,EAAE;;IAGV,QACCN,OAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,4BAA4B,EACtC,EAAA,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,UAAU,KAAI;AACjC,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;YAC3B,OAAOA,OAAC,CAAAO,0BAAW,EAAC,MAAA,CAAA,MAAA,CAAA,EAAA,GAAG,EAAE,CAAS,MAAA,EAAA,GAAG,IAAI,UAAU,CAAA,CAAE,EAAM,EAAA,KAAK,EAAI;;AAErE,QAAA,OAAO,IAAI;KACX,CAAC,CACG;AAER,CAAC;AAOD,MAAM,eAAe,GAAG,CAAC,OAAsB,EAAE,IAAmB,EAAE,QAAgB,EAAE,QAAgB,EAAE,UAAmB,KAAiB;AAC7I,IAAA,IAAK,IAA+B,CAAC,OAAO,KAAK,KAAK,EAAE;AACvD,QAAA,OAAO,EAAE;;IAGV,IAAI,GAAG,GAAG,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAA,EAAI,IAAI,CAAC,KAAK,CAAA,CAAE;AACjD,IAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACd,QAAA,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;QAC9C,GAAG,GAAG,OAAO,GAAG,CAAG,EAAA,OAAO,CAAI,CAAA,EAAA,OAAO,CAAC,cAAc,CAAC,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAA,CAAE,GAAG,GAAG;;AAG9F,IAAA,IAAK,IAAwC,CAAC,UAAU,EAAE;AACzD,QAAA,OAAO,iBAAiB,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC;;AAGxE,IAAA,MAAM,mBAAmB,GAAG,OAAO,IAAI,CAAC,MAAM,KAAK,UAAU,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,kBAAkB;AAC1G,IAAA,MAAM,YAAY,GAAG,sBAAsB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,EAAE,QAAQ,EAAE,QAAQ,CAAuC;IAC9I,MAAM,cAAc,GAAG,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC;AACzD,IAAA,MAAM,WAAW,GAAG,sBAAsB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,EAAE,QAAQ,EAAE,OAAO,CAAsC;IAC3I,MAAM,aAAa,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,CAAC;IACvD,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC;AAC/C,IAAA,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC;IACjE,MAAM,eAAe,GAAG,OAAO,IAAI,CAAC,MAAM,KAAK,UAAU;AACzD,IAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS;IAEhC,QACCP,OAEC,CAAA,IAAA,EAAA,EAAA,GAAG,EAAE,CAAQ,KAAA,EAAA,GAAG,IAAI,OAAO,CAAC,sBAAsB,CAAE,CAAA,EACpD,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE;AACvB,YAAA,OAAO,EAAE,cAAc;YACvB,cAAc,EAAE,SAAS,KAAK,QAAQ;YACtC,eAAe,EAAE,SAAS,KAAK,SAAS;YACxC,YAAY,EAAE,SAAS,KAAK,MAAM;YAClC,aAAa,EAAE,SAAS,KAAK,OAAO;AACpC,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,MAAM,EAAE,aAAa;YACrB,aAAa,EAAE,KAAK,KAAK,MAAM;YAC/B,cAAc,EAAE,KAAK,KAAK,OAAO;AACjC,SAAA,CAAC,iBACW,mBAAmB,GAAG,OAAO,GAAG,SAAS,eAC3C,mBAAmB,GAAG,QAAQ,GAAG,SAAS,EAAA,eAAA,EACtC,mBAAmB,GAAG,MAAM,GAAG,SAAS,EACvD,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,EACjC,GAAG,EAAE,eAAe,GAAG,CAAC,OAAO,KAAK,OAAO,CAAC,gBAAgB,CAAC,IAAyD,EAAE,OAAO,CAAC,GAAG,SAAS,IAE3I,cAAc,IAAI,YAAY,IAAI,IAAI,CAAC;AACvC,UAAE,iBAAiB,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG;AACzD,UAAE,aAAa,IAAI,WAAW,IAAI,IAAI,CAAC;cACpC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG;cAC5C,CAAC;kBACA,IAAI,CAAC;AACP,kBAAE,EAAE,CACH;AAEP,CAAC;AAED,MAAM,cAAc,GAAG,CAAC,OAAsB,EAAE,GAAiB,EAAE,QAAgB,EAAE,UAAmB,EAAE,QAAoB,GAAA,KAAK,MAClIA,OAAI,CAAA,IAAA,EAAA,EAAA,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,CAAO,IAAA,EAAA,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAA,CAAE,EAAA,EAChH,mBAAmB,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,EAC3C,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,QAAQ,KAAK,eAAe,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CACxF,CACL;AAGD,MAAM,YAAY,GAAG,CAAC,OAAsB,EAAE,OAAwB,EAAE,QAA2D,KAAiB;IACnJ,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,iBAAiB,CAAC,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAR,MAAA,GAAA,MAAA,GAAA,QAAQ,CAAG,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC;IAEhH,QACCA,OAAgB,CAAA,IAAA,EAAA,EAAA,aAAA,EAAA,MAAM,EAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC,EAAA,EACpEA,OAAI,CAAA,IAAA,EAAA,EAAA,KAAK,EAAE,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAA,CAAO,CAC5E;AAEP,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,OAAsB,KAAwB;IACjE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,OAAO;AACzE,IAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AAC1B,QAAA,OAAO,IAAI;;IAGZ,MAAM,IAAI,GAAG,eAAe,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,kBAAkB,EAAE,cAAc,EAAE,CAAC;IACrI,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC;AAC7D,IAAA,MAAM,WAAW,GACb,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,OAAO,CACV,EAAA,EAAA,YAAY,EAAE,eAAe,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,kBAAkB,CAAC,EAC3G,OAAO,EAAA,CACP;IACD,QACCA,OAAO,CAAA,OAAA,EAAA,EAAA,KAAK,EAAE,uBAAuB,EAAA,EACnC,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,QAAQ,KAAK,cAAc,CAAC,WAAW,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CACpH;AAEV,CAAC;AASM,MAAM,gBAAgB,GAA8B,CAAC,KAAK,KAAI;AACpE,IAAA,MAAM,EACL,IAAI,EACJ,QAAQ,EACR,qBAAqB,EACrB,SAAS,EACT,YAAY,EACZ,eAAe,EACf,OAAO,EACP,KAAK,EACL,OAAO,EACP,kBAAkB,EAClB,QAAQ,EACR,SAAS,EACT,kBAAkB,EAClB,OAAO,GACP,GAAG,KAAK;AAET,IAAA,MAAM,kBAAkB,GAAGG,cAAS,CAAC,gBAAgB,CAAC;AACtD,IAAA,MAAM,cAAc,GAAG,iBAAiB,CAAC,OAAO,CAAC;IACjD,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC;AACzD,IAAA,MAAM,OAAO,GACT,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,KACR,YAAY,EAAE,eAAe,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,kBAAkB,CAAC,EAC3F,OAAO;QACP,cAAc,EACd,cAAc,EAAE,oBAAoB,CAAC,SAAS,CAAC,EAC/C,kBAAkB,EAAA,CAClB;IACD,MAAM,SAAS,GAAG,eAAe,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,cAAc,EAAE,CAAC;AACjI,IAAA,MAAM,mBAAmB,GAAG,qBAAqB,CAAC,MAAM,KAAK,CAAC;AAE9D,IAAA,QACCH,OAAA,CAACQ,yBAAa,EAAA,EAAC,KAAK,EAAC,WAAW,EAAC,KAAK,EAAEC,gCAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,EAAA,EAC5E,eAAe,IAAI,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,UAAU,CAAC,EAM5DT,OAAA,CAAA,KAAA,EAAA,EAAK,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,iCAAiC,EAAE,QAAQ,EAAE,YAAY,IAAI,mBAAmB,GAAG,IAAI,GAAG,GAAG,IAAI,SAAS,EAAA,EAC9IA,OACC,CAAA,OAAA,EAAA,EAAA,GAAG,EAAE,QAAQ,EACI,iBAAA,EAAA,mBAAmB,GAAG,SAAS,GAAG,SAAS,EAC5D,KAAK,EAAE,sBAAsB,EAC7B,KAAK,EAAE,EAAE,QAAQ,EAAE,gBAAgB,CAAC,OAAO,CAAC,EAAE,EAAA,EAG7C,mBAAmB,KACnBA,OAAA,CAAA,SAAA,EAAA,EAAS,KAAK,EAAE,wBAAwB,EAAE,EAAE,EAAC,SAAS,EAAC,QAAQ,EAAE,YAAY,GAAG,GAAG,GAAG,SAAS,EAAA,EAC7F,KAAK,CACG,CACV,EAGDA,OAAO,CAAA,OAAA,EAAA,EAAA,KAAK,EAAE,qBAAqB,EACjC,EAAA;AACA,QAAA,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,QAAQ,MACrCA,OAAA,CAAA,IAAA,EAAA,EAAI,KAAK,EAAE,yBAAyB,EAAE,GAAG,EAAE,CAAA,MAAA,EAAS,QAAQ,CAAE,CAAA,EAAA,EAC5D,SAAS,IAAI,0BAA0B,CAAC,OAAO,CAAC,EAChD,QAAQ,KAAK,CAAC,IAAI,kBAAkB,CAAC,OAAO,CAAC,EAC7C,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,QAAQ,KAAK,iBAAiB,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAC7G,CACL,CAAC;QACF,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC;KACjD,CACM,EACRA,OAAO,CAAA,OAAA,EAAA,EAAA,KAAK,EAAE,qBAAqB,EAAA,EAClCA,OAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAA,EACjDA,OAAA,CAACU,gBAAM,EACN,EAAA,KAAK,EAAE,CAAC,OAAO,GAAGP,cAAS,CAAC,wBAAwB,CAAC,GAAGA,cAAS,CAAC,uBAAuB,CAAC,EAAE,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,EACzH,IAAI,EAAE,OAAO,EACb,OAAO,EAAC,OAAO,GACd,CACG,EACL,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,QAAQ,KAAK,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CACxE,EACP,UAAU,CAAC,OAAO,CAAC,CACb,CACH,CACS;AAElB,CAAC;;ACjiBM,MAAM,YAAY,GAA0B,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,QAAQ,MAC7EH,QAACW,mBAAQ,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAK,MAAM,CAAA,EAAG,IAAI,GAAGX,OAAA,CAACY,kBAAM,EAAK,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAI,CAAG,EAAA,QAAQ,CAAU,GAAG,QAAQ,CAAY,CAC1F;AA6BD,MAAMC,MAAI,GAAG,MAAW,GAAG;AASpB,MAAM,gBAAgB,GAAG,CAC/B,WAA0C,EAC1C,aAAyB,EACzB,cAA6C,KAC9B;AACf,IAAA,MAAM,SAAS,GAAGC,+BAAY,EAAqB;AACnD,IAAA,MAAM,kBAAkB,GAAGA,+BAAY,EAAqB;IAC5D,MAAM,wBAAwB,GAAG,IAAIC,wBAAe,CAACC,iCAAgB,CAAC,SAAS,CAAC;AAChF,IAAA,MAAM,iBAAiB,GAAGC,eAAK,EAAE;AACjC,IAAA,MAAM,SAAS,GAAGC,wBAAc,CAAC,gBAAgB,CAAC;IAElD,MAAM,eAAe,GAAG,EAAE;AAC1B,IAAA,IAAI,oBAAqD;IACzD,IAAI,KAAK,GAAG,IAAI;IAChB,IAAI,EAAE,GAAgC,EAAE;AAExC,IAAA,MAAM,QAAQ,GAAG,CAAC,KAAe,KAAa;AAC7C,QAAA,MAAM,MAAM,GAAG,cAAc,EAAE;AAC/B,QAAA,OAAO,MAAM,GAAGC,uBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,IAAI;AACvD,KAAC;IAMD,MAAM,KAAK,GAAG,MAAW;;QACxB,CAAA,EAAA,GAAA,MAAA,SAAS,CAAC,EAAE,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,kDAAI;AACxB,KAAC;AAED,IAAA,MAAM,YAAY,GAAG,CAAC,KAAY,KAAU;;QAC3CC,uCAAmB,CAAC,KAAK,CAAC;QAC1B,IAAI,KAAK,CAAC,gBAAgB;YAAE;AAE5B,QAAA,CAAA,EAAA,GAAA,EAAE,CAAC,QAAQ,MAAG,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,KAAK,CAAC;QACpB,IAAI,KAAK,CAAC,gBAAgB;YAAE;QAE5B,IAAI,CAAC,QAAQ,CAACC,eAAQ,CAAC,MAAM,CAAC,EAAE;YAC/B,KAAK,CAAC,cAAc,EAAE;;AAExB,KAAC;AAED,IAAA,MAAM,WAAW,GAAG,CAAC,KAAY,KAAU;;QAG1C,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,EAAE,EAAE;YAClC;;QAGDC,uBAAY,CAAC,eAAe,CAAC;QAC7B,CAAA,EAAA,GAAA,EAAE,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,CAAI;AACd,QAAA,QAAQ,CAACD,eAAQ,CAAC,KAAK,CAAC;AACzB,KAAC;IAGD,MAAM,eAAe,GAAG,MAAW;QAClC,wBAAwB,CAAC,WAAW,EAAE;AACtC,QAAA,KAAK,EAAE;AACP,QAAA,QAAQ,CAACA,eAAQ,CAAC,KAAK,CAAC;AACzB,KAAC;IAED,OAAO;AACN,QAAA,UAAU,EAAE,CAAC,KAAsB,KAAuB;;YACzD,IAAIE,OAAK,GAAG,EAAE;YACd,IAAIC,OAAK,GAAiB,CAAC;YAC3B,IAAI,OAAO,GAAG,OAA+B;YAC7C,IAAIC,OAAK,GAAG,MAAM;YAClBC,eAAS,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,KAAI;gBAClCH,OAAK,GAAG,CAAC;AACV,aAAC,CAAC;AACF,YAAAI,eAAS,CAAC,KAAK,CAAC,CAAA,EAAA,GAAA,KAAK,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,CAAC,EAAE,CAAC,CAAC,KAAI;gBACvCH,OAAK,GAAG,CAAC;AACV,aAAC,CAAC;YACFI,yBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,KAAI;gBACzC,EAAE,GAAG,CAAC;AACP,aAAC,CAAC;AACF,YAAAC,kCAAiB,CAAC,KAAK,CAAC,CAAA,EAAA,GAAA,KAAK,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,OAAO,EAAE,CAAC,CAAC,KAAI;gBACvD,OAAO,GAAG,CAAC;AACZ,aAAC,CAAC;AACF,YAAAC,eAAS,CAAC,KAAK,CAAC,CAAA,EAAA,GAAA,KAAK,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,MAAM,EAAE,CAAC,CAAC,KAAI;gBAC5CL,OAAK,GAAG,CAAC;AACV,aAAC,CAAC;AAEF,YAAA,MAAM,MAAM,GAAG,OAAO,KAAK,MAAM;AACjC,YAAA,IAAI,MAAM,IAAI,CAAC,oBAAoB,EAAE;AACpC,gBAAA,oBAAoB,GAAGM,uCAA2B,CAAC,WAAW,EAAE,CAAC;gBACjE,wBAAwB,CAAC,iBAAiB,CAAC;oBAC1C,KAAK,EAAE,oBAAoB,CAAC,KAAK;oBACjC,KAAK,EAAE,oBAAoB,CAAC,YAAY;AACxC,iBAAA,CAAC;;YAGH,OAAO;AACN,gBAAA,MAAM,EAAE;AACP,oBAAA,UAAU,EAAEC,2BAAgB,CAAC,OAAO,CAAC;oBACrC,YAAY;oBACZ,WAAW;2BACXT,OAAK;oBACL,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;oBAC1C,KAAK;AACL,oBAAA,SAAS,EAAE,SAAS;2BACpBE,OAAK;AACL,iBAAA;gBACD,IAAI,EACH,MAAM,IAAI;AACT,sBAAE;wBACA,iBAAiB;AACjB,wBAAA,gBAAgB,EAAE,oBAAoB;AACtC,wBAAA,UAAU,EAAEZ,MAAI;AAChB,wBAAA,WAAW,EAAE,eAAe;AAC5B,wBAAA,WAAW,EAAEA,MAAI;AACjB,wBAAA,SAAS,EAAE,IAAI;wBACf,SAAS;AACT,wBAAA,IAAI,EAAE,EAAE;+BACRU,OAAK;+BACLC,OAAK;AACL,wBAAA,EAAE,EAAE,EAAE;AACN,wBAAA,cAAc,EAAE,kBAAkB;AAClC,wBAAA,MAAM,EAAEX,MAAI;wBACZ,UAAU,EAAE,wBAAwB,CAAC,oBAAoB;AACzD,wBAAA,MAAM,EAAE,EAAE;AACV;AACF,sBAAE,SAAS;aACb;SACD;AACD,QAAA,IAAI,EAAE,CAAC,SAAkB,KAAU;;AAClC,YAAA,MAAM,MAAM,GAAG,SAAS,CAAC,EAAE;YAC3B,IAAI,MAAM,aAAN,MAAM,KAAA,MAAA,GAAA,MAAA,GAAN,MAAM,CAAE,IAAI,EAAE;gBACjB;;AAGD,YAAA,IAAI,KAAK,KAAK,SAAS,EAAE;gBACxB,KAAK,GAAG,SAAS;AACjB,gBAAA,aAAa,EAAE;;YAEhB,IAAI,SAAS,EAAE;AACd,gBAAA,CAAA,EAAA,GAAA,MAAM,aAAN,MAAM,KAAA,MAAA,GAAA,MAAA,GAAN,MAAM,CAAE,SAAS,sDAAI;gBACrB,IAAI,MAAM,EAAE;oBACXoB,qBAAU,CAAC,eAAe,CAAC;;;iBAEtB;AACN,gBAAA,CAAA,EAAA,GAAA,MAAM,aAAN,MAAM,KAAA,MAAA,GAAA,MAAA,GAAN,MAAM,CAAE,IAAI,sDAAI;;SAEjB;QACD,KAAK;QACL,aAAa,EAAE,MAAW;AACzB,YAAA,IAAI,kBAAkB,CAAC,EAAE,EAAE;gBAC1B,wBAAwB,CAAC,aAAa,CAAC,SAAS,EAAE,kBAAkB,CAAC,EAAE,EAAE,IAAI,CAAC;;SAE/E;QACD,OAAO,EAAE,MAAW;AACnB,YAAA,KAAK,EAAE;YACPX,uBAAY,CAAC,eAAe,CAAC;YAC7B,wBAAwB,CAAC,OAAO,EAAE;SAClC;KACD;AACF,CAAC;;ACvND,MAAM,yBAAyB,GAAGvB,eAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC;AAsBvE,MAAM,gBAAgB,GAAG,CAAC,KAAyB,KAAwB;IAC1E,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,SAAS;AACtF,CAAC;AAED,MAAM,IAAI,GAAG,MAAW,GAAG;AAMpB,MAAM,mBAAmB,GAAG,CAAC,OAAsC,EAAE,kBAA8B,KAAmB;AAC5H,IAAA,MAAM,sBAAsB,GAAGI,cAAS,CAAC,oBAAoB,CAAC;AAC9D,IAAA,MAAM,4BAA4B,GAAGA,cAAS,CAAC,2BAA2B,CAAC;AAC3E,IAAA,MAAM,2BAA2B,GAAGA,cAAS,CAAC,0BAA0B,CAAC;AACzE,IAAA,MAAM,0BAA0B,GAAGA,cAAS,CAAC,wCAAwC,CAAC;AAEtF,IAAA,IAAI,WAAoC;IAMxC,IAAI,kBAAkB,GAAG,KAAK;IAC9B,IAAI,WAAW,GAAG,KAAK;IACvB,MAAM,aAAa,GAAG,MAAW;QAChC,kBAAkB,GAAG,IAAI;AACzB,QAAA,kBAAkB,EAAE;AACrB,KAAC;AAED,IAAA,MAAM,OAAO,GAAG+B,uBAAc,CAC7B,MAAMC,qBAAgB,CAAC,OAAO,CAAC,EAC/B,CAAC,IAAI,KAAK,IAAI,CAAC,aAAa,EAAE,EAC9B,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,EAAE,CACxB;AACD,IAAA,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1E,IAAA,MAAM,cAAc,GAAGjB,wBAAc,CAAC,eAAe,CAAC;AACtD,IAAA,MAAM,4BAA4B,GAAGD,eAAK,EAAE;AAE5C,IAAA,IAAI,mBAA2D;IAC/D,IAAI,WAAW,GAA+B,EAAE;IAChD,IAAI,kBAAkB,GAA+B,EAAE;IACvD,IAAI,YAAY,GAAkB,IAAI;AAEtC,IAAA,MAAM,gBAAgB,GAAG,CAAC,KAAiC,KAAU;AACpE,QAAA,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;AAC1C,QAAA,kBAAkB,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,wBAAW,IAAI,CAAA,CAAG,CAAC,CAAC;AAC1E,KAAC;AAED,IAAA,MAAM,aAAa,GAAG,MAAgC,EAAA,IAAA,EAAA,CAAA,CAAA,OAAA,MAAA,kBAAkB,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC,mCAAI,EAAE,CAAA,EAAA;AAE7G,IAAA,MAAM,gBAAgB,GAAG,CAAC,MAAgC,KAAU;AACnE,QAAA,kBAAkB,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,MAAM,KAAK,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,GAAG,CAAC,CAAC;AAC3G,QAAA,aAAa,EAAE;AAChB,KAAC;AAED,IAAA,MAAM,UAAU,GAAG,CAAC,QAAgB,EAAE,SAAwB,KAAU;AACvE,QAAA,MAAM,GAAG,GAAG,CAAC,GAAG,aAAa,EAAE,CAAC;AAChC,QAAA,MAAM,WAAW,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,QAAQ,CAAC;QAChE,IAAI,WAAW,KAAK,EAAE;YAAE;AAExB,QAAA,IAAI,WAAmB;AACvB,QAAA,IAAI,SAAS,KAAK,IAAI,EAAE;YACvB,IAAI,WAAW,KAAK,CAAC;gBAAE;AACvB,YAAA,WAAW,GAAG,WAAW,GAAG,CAAC;;aACvB;AACN,YAAA,IAAI,WAAW,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC;gBAAE;AACpC,YAAA,WAAW,GAAG,WAAW,GAAG,CAAC;;AAI9B,QAAA,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QAC3C,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,MAAM,CAAC;QAClC,gBAAgB,CAAC,GAAG,CAAC;AACtB,KAAC;AAED,IAAA,MAAM,sBAAsB,GAAG,CAAC,GAAW,EAAE,OAAgB,KAAU;QACtE,MAAM,GAAG,GAAG,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,GAAG,CAAC,OAAO,KAAK,KAAK,GAAQ,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,GAAG,KAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,EAAG,CAAA,GAAE,GAAG,CAAC,CAAC;QAClI,gBAAgB,CAAC,GAAG,CAAC;AACtB,KAAC;AAED,IAAA,MAAM,iBAAiB,GAAG,CAAC,GAAW,EAAE,KAAc,KAAU;QAI/D,MAAM,WAAW,GAAG,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnD,MAAM,GAAG,GAAG,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,GAAG,CAAC,SAAS,KAAK,KAAK,mCAAQ,GAAG,CAAA,EAAA,EAAE,KAAK,EAAE,WAAW,EAAG,CAAA,GAAE,GAAG,CAAC,CAAC;QAC7H,gBAAgB,CAAC,GAAG,CAAC;AACtB,KAAC;IAED,MAAM,YAAY,GAAG,MAAW;AAC/B,QAAA,kBAAkB,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;QACvD,YAAY,GAAG,IAAI;AACnB,QAAA,aAAa,EAAE;QACf,MAAM,CAAC,KAAK,EAAE;AACf,KAAC;AAED,IAAA,MAAM,YAAY,GAAG,CAAC,KAAY,KAAU;QAC3C,KAAK,CAAC,cAAc,EAAE;AAEtB,QAAA,MAAM,UAAU,GAAG,aAAa,EAAE;AAClC,QAAA,MAAM,gBAAgB,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,OAAO,KAAK,KAAK,CAAC;QAE9E,IAAI,CAAC,gBAAgB,EAAE;YACtB,YAAY,GAAG,0BAA0B;AACzC,YAAA,aAAa,EAAE;YACf;;aACM,IAAI,WAAW,EAAE;YACvB,YAAY,GAAG,IAAI;AAEnB,YAAA,WAAW,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,wBAAW,IAAI,CAAA,CAAG,CAAC,CAAC;AAC/E,YAAA,aAAa,EAAE;AAMf,YAAA,MAAM,oBAAoB,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,GAAG,KACvD,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,KAAyB;AACvC,gBAAA,MAAM,KAA4D,MAAyD,EAArH,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAuE,GAAA,EAAA,EAAlE,IAAI,GAAvDmB,gBAAA,CAAA,EAAA,EAAA,CAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,SAAA,EAAA,OAAA,CAAyD,CAA4D;gBAC3H,MAAM,IAAI,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAA6B,IAAI,CAAE;gBAC7C,IAAI,OAAO,KAAK,SAAS;AAAE,oBAAA,IAAI,CAAC,OAAO,GAAG,OAAO;gBACjD,IAAI,OAAO,KAAK,SAAS;AAAE,oBAAA,IAAI,CAAC,OAAO,GAAG,OAAO;gBACjD,IAAI,QAAQ,KAAK,SAAS;AAAE,oBAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;gBACpD,IAAI,SAAS,KAAK,SAAS;AAAE,oBAAA,IAAI,CAAC,SAAS,GAAG,SAAS;AACvD,gBAAA,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;AAAE,oBAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAC7D,gBAAA,OAAO,IAAI;aACX,CAAC,CACF;YAEDjB,uBAAgB,CAAC,WAAW,EAAEE,eAAQ,CAAC,iBAAiB,EAAE,oBAAoB,CAAC;YAC/E,MAAM,CAAC,KAAK,EAAE;;AAEhB,KAAC;AAED,IAAA,MAAM,OAAO,GAAG,CAAC,OAAqB,KAAU;QAC/C,IAAI,OAAO,EAAE;YACZ,WAAW,GAAG,OAAO;;AAEvB,KAAC;IAED,MAAM,YAAY,GAAG,CAAC,MAA8B,EAAEgB,OAAa,EAAE,OAAiC,MACrGrC,OAAA,CAAA,KAAA,EAAA,EAAK,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,KAAK,EAAC,4BAA4B,EAAA,EACvDA,OAAA,CAACsC,kCAAmB,EAAA,EACnB,QAAQ,EAAE,MAAM,CAAC,OAAO,KAAK,KAAK,EAClC,MAAM,EACL,MAAM,CAAC;AACN,cAAEnC,cAAS,CAAC,mCAAmC,EAAE,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE;cACzFA,cAAS,CAAC,uCAAuC,EAAE,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,EAElG,MAAM,EAAE,IAAI,EACZ,UAAU,EACV,IAAA,EAAA,SAAS,EAAE,MAAM,CAAC,OAAO,KAAK,KAAK,EACnC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,KAAc,KAAK,EAAA,IAAA,EAAA,CAAA,CAAA,OAAA,sBAAsB,CAAC,CAAA,EAAA,GAAA,MAAM,CAAC,GAAG,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,EAAE,EAAE,KAAK,CAAC,CAAA,EAAA,EAAE,EACvF,CAAA,EACFH,OAAA,CAAA,MAAA,EAAA,EAAM,KAAK,EAAC,kCAAkC,IAAE,MAAM,CAAC,KAAK,CAAQ,EACpEA,OAAA,CAACuC,gCAAiB,EAAA,EACjB,UAAU,EAAA,IAAA,EACV,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,EACtC,MAAM,EAAEpC,cAAS,CAAC,iCAAiC,EAAE,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,EAChG,IAAI,EAAE,CAAC,EACP,SAAS,EAAE,MAAM,CAAC,SAAS,KAAK,KAAK,EACrC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,KAAc,OAAI,IAAA,EAAA,CAAA,CAAC,OAAA,iBAAiB,CAAC,CAAA,EAAA,GAAA,MAAM,CAAC,GAAG,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,EAAE,EAAE,KAAK,CAAC,CAAA,EAAA,EAAE,EAClF,CAAA,EACFH,OAAA,CAACK,oBAAQ,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACJ,OAAO,CAAC,GAAG,CAAC,CAAW,QAAA,EAAA,MAAM,CAAC,GAAG,CAAE,CAAA,CAAC,CAAC,UAAU,CAClD;AACC,QAAA,MAAM,EAAE,oBAAoB;QAC5B,MAAM,EACL,MAAM,CAAC,QAAQ,KAAK,KAAK,IAAIgC,OAAK,KAAK;AACtC,cAAElC,cAAS,CAAC,6BAA6B,EAAE,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE;AACrF,cAAEA,cAAS,CAAC,4BAA4B,EAAE,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;AACvF,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,GAAG,EAAE,EAAE,OAAO,EAAE,QAAK,IAAA,EAAA,CAAA,CAAC,OAAA,UAAU,CAAC,MAAA,MAAM,CAAC,GAAG,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,EAAE,EAAE,IAAI,CAAC,CAAA,EAAA,EAAE;QAC1D,SAAS,EAAE,MAAM,CAAC,QAAQ,KAAK,KAAK,IAAIkC,OAAK,KAAK,CAAC;AACnD,KAAA,EACD,EAAE,aAAa,EAAE,wBAAwB,EAAE,CAC3C,CACA,CAAA,EACFrC,OAAA,CAACK,oBAAQ,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACJ,OAAO,CAAC,GAAG,CAAC,CAAA,UAAA,EAAa,MAAM,CAAC,GAAG,CAAA,CAAE,CAAC,CAAC,UAAU,CACpD;AACC,QAAA,MAAM,EAAE,sBAAsB;AAC9B,QAAA,MAAM,EACL,MAAM,CAAC,QAAQ,KAAK,KAAK,IAAIgC,OAAK,KAAK,OAAO,CAAC,MAAM,GAAG;AACvD,cAAElC,cAAS,CAAC,6BAA6B,EAAE,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE;AACrF,cAAEA,cAAS,CAAC,8BAA8B,EAAE,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;AACzF,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,GAAG,EAAE,EAAE,OAAO,EAAE,QAAK,IAAA,EAAA,CAAA,CAAC,OAAA,UAAU,CAAC,MAAA,MAAM,CAAC,GAAG,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,EAAE,EAAE,MAAM,CAAC,CAAA,EAAA,EAAE;AAC5D,QAAA,SAAS,EAAE,MAAM,CAAC,QAAQ,KAAK,KAAK,IAAIkC,OAAK,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC;KACpE,EACD,EAAE,aAAa,EAAE,0BAA0B,EAAE,CAC7C,CAAA,CACA,CACG,CACN;IAED,OAAO;QACN,WAAW,EAAE,MAAW;YACvB,OAAO,CAAC,WAAW,EAAE;YACrB,WAAW,GAAG,kBAAkB;YAChC,kBAAkB,GAAG,KAAK;SAC1B;AACD,QAAA,MAAM,EAAE,CAAC,qBAAiD,KAAiB;AAC1E,YAAA,IAAI,CAAC,WAAW,IAAI,qBAAqB,KAAK,mBAAmB,EAAE;gBAClE,mBAAmB,GAAG,qBAAqB;gBAC3C,gBAAgB,CAAC,qBAAqB,CAAC;;AAExC,YAAA,MAAM,OAAO,GAAG,aAAa,EAAE;AAE/B,YAAA,QACCrC,iBAAK,KAAK,EAAE,yBAAyB,EAAE,GAAG,EAAE,OAAO,EAAA,EAElDA,OAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,oBAAoB,EAAA,EAC9BA,OAAC,CAAAK,oBAAQ,EACJ,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC;AACpC,gBAAA,MAAM,EAAE,kBAAkB;AAC1B,gBAAA,MAAM,EAAE,sBAAsB;AAC9B,gBAAA,UAAU,EAAE,IAAI;AAChB,gBAAA,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACzC,aAAA,CAAC,EACD,CACG,EACNL,OAAA,CAAC,YAAY,EAAK,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,MAAM,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAA,EAC5GA,OAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,6BAA6B,EAAA,EACtC,YAAY,KACZA,OAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,mCAAmC,EAAA,EAC7CA,OAAC,CAAAwC,mBAAO,IACP,KAAK,EAAE,KAAK,EACZ,uBAAuB,EAAE,4BAA4B,EACrD,iBAAiB,EAAE,IAAI,EACvB,SAAS,EAAE,KAAK,EAChB,SAAS,EAAE,cAAc,EACzB,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE,CAAC,EACR,eAAe,EAAE,IAAI,EACrB,gBAAgB,EAAE,IAAI,EACtB,IAAI,EAAC,OAAO,EACZ,OAAO,EAAC,KAAK,EACZ,CAAA,CACG,CACN,EACDxC,OAAM,CAAA,MAAA,EAAA,EAAA,QAAQ,EAAE,YAAY,EAAA,EAC3BA,OAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,6BAA6B,EAAE,EAAA,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,KAAK,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAO,EACrHA,OAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,6BAA6B,EAAA,EACvCA,OAAC,CAAAK,oBAAQ,EACJ,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,UAAU,CACnC;AACC,gBAAA,MAAM,EAAE,4BAA4B;AACpC,gBAAA,QAAQ,EAAE,WAAW;gBACrB,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,YAAY,EAAE,EAAE;AACtC,aAAA,EACD,EAAE,aAAa,EAAE,uBAAuB,EAAE,CAC1C,CACA,CAAA,EACFL,OAAC,CAAAK,oBAAQ,oBACJ;iBACF,GAAG,CAAC,OAAO;AACX,iBAAA,UAAU,CAAC,EAAE,MAAM,EAAE,2BAA2B,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,aAAa,EAAE,sBAAsB,EAAE,CAAC,CAAA,CACrI,CACG,CACA,CACF,CACQ,CACV;SAEP;QACD,IAAI,EAAE,MAAW;YAChB,OAAO,CAAC,SAAS,EAAE;YACnB,MAAM,CAAC,aAAa,EAAE;SACtB;QACD,OAAO,EAAE,MAAW;YACnB,OAAO,CAAC,OAAO,EAAE;YACjB,MAAM,CAAC,OAAO,EAAE;SAChB;KACD;AACF,CAAC;;ACzQD,MAAM,qBAAqB,GAAG,GAAG;AAKjC,MAAM,sBAAsB,GAAG,CAAC,OAAqB,KAAkB;IACtE,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AACpC,QAAA,OAAO,OAAO;;IAEf,OAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACI,OAAO,CAAA,EAAA,EACV,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,KACtC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,MACX,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,MAAM,CACT,EAAA,EAAA,OAAO,EAAE,OAAO,MAAM,CAAC,OAAO,KAAK,SAAS,GAAG,MAAM,CAAC,OAAO,GAAG,IAAI,EACpE,OAAO,EAAE,OAAO,MAAM,CAAC,OAAO,KAAK,SAAS,GAAG,MAAM,CAAC,OAAO,GAAG,IAAI,EACnE,CAAA,CAAA,CAAC,CACH,EACA,CAAA;AACH,CAAC;AAGD,MAAM,aAAa,GAAG,CAAC,IAA4B,EAAE,QAA2C,KAC/F,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAA,IAAA,EAAA,CAAA,CAAA,OAAA,CAAC,GAAG,EAAE,MAAA,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAIY,eAAK,EAAE,CAAC,CAAA,EAAA,CAAC,CAAC;AAU1D,MAAgB,8BAA+B,SAAQD,iCAAmC,CAAA;AAAhG,IAAA,WAAA,GAAA;;AAOkB,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,GAAG,EAA8C;AAG1E,QAAA,IAAA,CAAA,WAAW,GAAGkB,uBAAc,CAC5C,MAAMC,qBAAgB,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,EACvC,CAAC,IAAI,KAAK,IAAI,CAAC,aAAa,EAAE,EAC9B,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,EAAE,CACxB;QAGgB,IAAA,CAAA,QAAQ,GAAG,mBAAmB,CAC9C,MAAM,IAAI,CAAC,IAAI,EACf,MAAMM,iBAAW,CAAC,IAAI,CAAC,CACvB;AAGgB,QAAA,IAAA,CAAA,SAAS,GAAGP,uBAAc,CAC1C,MAAMQ,qBAAc,CAAC,MAAMD,iBAAW,CAAC,IAAI,CAAC,CAAC,EAC7C,CAAC,IAAI,KAAK,IAAI,CAAC,aAAa,EAAE,EAC9B,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,EAAE,CACxB;AA2IgB,QAAA,IAAY,CAAA,YAAA,GAAG,MAAW;YAC1C,IAAI,CAAC,oBAAoB,EAAE;AAC3B,YAAA,YAAY,CAAC,IAAI,CAAC,qBAAqB,CAAC;AACxC,YAAA,IAAI,CAAC,qBAAqB,GAAG,UAAU,CAAC,MAAK;gBAC5C,IAAI,CAAC,wBAAwB,EAAE;aAC/B,EAAE,qBAAqB,CAAC;AAC1B,SAAC;QA8DgB,IAAA,CAAA,qBAAqB,GAAG,CAAC,KAAY,EAAE,OAAoC,KAAU;AACrG,YAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC;AACzC,SAAC;QAEgB,IAAA,CAAA,UAAU,GAAG,CAAC,KAAiB,EAAE,OAAyB,KAAU;AACpF,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;AAC9B,SAAC;QAMgB,IAAA,CAAA,gBAAgB,GAAG,CAAC,IAAsB,EAAE,OAAqB,KAAU;YAC3F,IAAI,CAAC,OAAO,EAAE;gBACb;;YAED,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAClD,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAC1B,OAAO,EACP,UAAU,CAAC,MAAK;AACf,gBAAA,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE;oBACtC,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AACvF,oBAAA,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE;AACtC,wBAAA,OAAO,CAAC,WAAW,GAAG,aAAa;;;aAGrC,CAAC,CACF;AACF,SAAC;AAIgB,QAAA,IAAA,CAAA,kBAAkB,GAAG,CAAC,OAAwB,KAAU;AACxE,YAAA,IAAI,CAAC,sBAAsB,GAAG,OAAO;AACtC,SAAC;AAEgB,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,OAA0B,KAAU;AAChE,YAAA,IAAI,CAAC,YAAY,GAAG,OAAO;YAC3B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;AAC5D,SAAC;QAIgB,IAAgB,CAAA,gBAAA,GAAG,CAAC,GAAW,EAAE,KAA0B,EAAE,cAAyC,KACtH,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,cAAc,CAAC;AAE3C,QAAA,IAAA,CAAA,cAAc,GAAG,CAAC,qBAAiD,KAAkB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,qBAAqB,CAAC;QAEhI,IAAc,CAAA,cAAA,GAAG,CAAC,GAAW,EAAE,KAAwB,KAAkB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC;;IA3PzH,oBAAoB,GAAA;AAC7B,QAAA,IAAI,CAAC,eAAe,CAAC,yBAAyB,CAAC;;IAGtC,sBAAsB,GAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,sBAAsB,IAAI,cAAc,EAAE;YAClD,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC;YAC3D,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC;;QAEzD,IAAI,CAAC,wBAAwB,EAAE;;IAGtB,aAAa,GAAA;;QACtB,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,UAAU,EAAE;AACjC,QAAA,YAAY,CAAC,IAAI,CAAC,qBAAqB,CAAC;AACxC,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;;IAId,cAAc,GAAA;AACvB,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE;AAC5B,QAAA,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;AAC1B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;;AAKX,IAAA,SAAS,CAAC,KAAyB,EAAA;QAC5C,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,KAAI;AACnC,YAAA,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC;AAChC,YAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AACxE,SAAC,CAAC;;AAGO,IAAA,aAAa,CAAC,KAA6B,EAAA;AACpD,QAAA,iBAAiB,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;;AAG/D,IAAA,cAAc,CAAC,KAAyB,EAAA;AACjD,QAAA,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,wBAAwB,EAAE;;AAGtB,IAAA,oBAAoB,CAAC,KAA+B,EAAA;AAC7D,QAAA,mBAAmB,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;;AAGxE,IAAA,YAAY,CAAC,KAAgC,EAAA;QACtD,gBAAgB,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC;;AAGjG,IAAA,UAAU,CAAC,KAAc,EAAA;AAClC,QAAA5C,2CAAuB,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;;AAGlE,IAAA,YAAY,CAAC,KAAe,EAAA;AACrC,QAAA,gBAAgB,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;;AAG7D,IAAA,OAAO,CAAC,KAA8B,EAAA;AAC/C,QAAA,kBAAkB,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;;AAG1D,IAAA,cAAc,CAAC,KAA8B,EAAA;AACtD,QAAA,kBAAkB,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAC1E,IAAI,CAAC,wBAAwB,EAAE;;AAGtB,IAAA,YAAY,CAAC,KAAgC,EAAA;AACtD,QAAAC,mBAAW,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;;AAOxD,IAAA,cAAc,CAAC,QAAwB,EAAA;QAChD,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE;AACxB,QAAA,IAAI,wBAAwB,IAAI,IAAI,CAAC,YAAY,EAAE;YAClD,IAAI,QAAQ,aAAR,QAAQ,KAAA,MAAA,GAAA,MAAA,GAAR,QAAQ,CAAE,MAAM,EAAE;AACrB,gBAAA,IAAI,CAAC,YAAY,CAAC,sBAAsB,GAAG,QAAQ;;AAEpD,YAAAP,UAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,EAAC,QAAQ,KAAR,IAAA,IAAA,QAAQ,KAAR,MAAA,GAAA,MAAA,GAAA,QAAQ,CAAE,MAAM,CAAA,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,sBAAsB,CAAC,CAAC;;;AAO9F,IAAA,iBAAiB,CAAC,KAAoB,EAAA;;AAC/C,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;YACzD;;QAED,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,MAAA,CAAA,EAAA,GAAA,IAAI,CAAC,sBAAsB,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,gBAAgB,CAAmB,uCAAuC,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,EAAE,CAAC;AAC7I,QAAA,MAAM,cAAc,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,sBAAsB,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,aAAa,CAAC,QAAQ,CAAqB;QAC/F,IAAI,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,cAAc,CAAC;AAE9C,QAAA,IAAI,KAAK,GAAG,EAAE,EAAE;YACf,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,KAAK,WAAW,GAAG,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC;YACpE,KAAK,GAAG,CAAC,KAAK,GAAG,MAAM,IAAI,UAAU,CAAC,MAAM;AAC5C,YAAA,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE;;;AAIjB,IAAA,uBAAuB,CAAC,KAA8C,EAAA;AAC/E,QAAA,MAAM,cAAc,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAQ,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA,EAAA,EAAE,UAAU,EAAE,KAAK,CAAC,MAAM,GAAE;AACrF,QAAA,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,cAAc,CAAC;AAC7C,QAAA,IAAI,CAAC,QAAQ,CAAC,wBAAwB,EAAE,IAAI,CAAC,QAAQ,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC;AAEpF,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAACoD,iBAAQ,CAAC,mBAAmB,CAAC;AAClF,QAAA,IAAI,OAAO,mBAAmB,KAAK,UAAU,EAAE;AAC9C,YAAA,mBAAmB,CAAC,KAAK,EAAE,cAAc,CAAC;;;IAWlC,oBAAoB,GAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,sBAAsB,EAAE;AAChC,YAAA,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,sBAAsB;AAC5F,YAAA,IAAI,CAAC,QAAQ,CACZ,cAAc,EACd,WAAW,GAAG,WAAW,KAAK,YAAY,GAAG,YAAY,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,SAAS,CAAC,CAAC,CAClJ;;;IAgBK,uBAAuB,GAAA;;AAC9B,QAAA,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;QAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;QAC7C,MAAM,YAAY,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC,KAAK;AACrD,QAAA,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC/E,IAAI,UAAU,GAAG,CAAC;AAElB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC9D,UAAU,IAAI,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,YAAY,CAAC,CAAC,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,CAAC;;QAE1C,KAAK,IAAI,CAAC,GAAG,OAAO,GAAG,UAAU,EAAE,CAAC,GAAG,OAAO,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC/E,UAAU,IAAI,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,YAAY,CAAC,CAAC,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,CAAC;;AAG1C,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE;AACpC,YAAA,MAAM,aAAa,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,sBAAsB,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,aAAa,CAAc,6BAA6B,CAAC;AAC5G,YAAA,UAAU,IAAI,CAAA,EAAA,GAAA,aAAa,KAAb,IAAA,IAAA,aAAa,KAAb,MAAA,GAAA,MAAA,GAAA,aAAa,CAAE,WAAW,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,CAAC;;AAG9C,QAAA,OAAO,UAAU;;IAIV,wBAAwB,GAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;AACjC,YAAA,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE,KAAK,CAAC;YAC1C;;AAED,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,uBAAuB,EAAE;AACrD,QAAA,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE,cAAc,GAAG,CAAC,IAAI,cAAc,IAAI,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC;;IAM3G,mBAAmB,CAAC,KAAY,EAAE,OAAoC,EAAA;AAC/E,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAACA,iBAAQ,CAAC,iBAAiB,CAAC;AAC9E,QAAA,IAAI,OAAO,iBAAiB,KAAK,UAAU,EAAE;AAC5C,YAAA,iBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC;;AAElC,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;YACdxB,uBAAgB,CAAC,IAAI,CAAC,IAAI,EAAEE,eAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;;;IAKtD,QAAQ,CAAC,KAAiB,EAAE,OAAyB,EAAA;AAC9D,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAACsB,iBAAQ,CAAC,MAAM,CAAC;QACxD,IAAI,OAAO,MAAM,KAAK,UAAU,IAAI,OAAO,CAAC,GAAG,EAAE;AAChD,YAAA,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC;;AAEvB,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;YACdxB,uBAAgB,CAAC,IAAI,CAAC,IAAI,EAAEE,eAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;;;IAsD3C,sBAAsB,GAAA;AAC/B,QAAA,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE;AAC9B,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;AAC5B,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;QAC3B,QACCrB,QAAC,gBAAgB,EAAA,EAChB,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAChC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EACxC,qBAAqB,EAAE,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAC7D,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAC1C,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EACvC,cAAc,EAAE,IAAI,CAAC,cAAc,EACnC,cAAc,EAAE,IAAI,CAAC,cAAc,EACnC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EACvC,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,EACjD,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAC3C,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,EACtD,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EACtC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAClC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EACtC,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAC5B,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAC3C,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EACjC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAC1C,sBAAsB,EAAE,IAAI,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAC/D,kBAAkB,EAAE,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EACvD,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EAAA,CACrC;;AAGJ;;;;;;;"}
1
+ {"version":3,"file":"base-DGx5qxja.js","sources":["src/schema/props/aria-labelledby.ts","src/internal/props/fixed-cols.ts","src/internal/props/has-settings-menu.ts","src/internal/props/table-callbacks.ts","src/internal/props/table-data.ts","src/internal/props/table-data-foot.ts","src/internal/props/table-headers.ts","src/internal/props/table-loading.ts","src/internal/props/table-selection.ts","src/internal/functional-components/table-stateless/api.tsx","src/internal/functional-components/table-stateless/table-model.ts","src/internal/functional-components/table-stateless/component.tsx","src/internal/functional-components/dialog/item.tsx","src/internal/functional-components/table-stateless/settings.tsx","src/components/table-stateless/base.tsx"],"sourcesContent":["import type { Generic } from 'adopted-style-sheets';\n\nimport type { HostInternals } from '../../utils/aria-labelledby';\nimport { resolveTargets } from '../../utils/aria-labelledby';\nimport { Log, watchValidator } from '../utils';\n\n/* types */\n/**\n * An IDREF (space-separated) identifying external element(s) that label this component.\n *\n * Internally the component resolves the IDREF to an element reference and sets it via\n * ElementInternals.ariaLabelledByElements so the accessible name crosses the Shadow DOM\n * boundary. Desktop screen readers (NVDA + Chrome, JAWS + Chrome) follow this chain;\n * mobile screen readers (TalkBack, VoiceOver iOS) do not yet support element references\n * across shadow boundaries — use `_label` when TalkBack support is required.\n */\nexport type AriaLabelledbyPropType = string;\n\nexport type PropAriaLabelledby = {\n\tariaLabelledby: AriaLabelledbyPropType;\n};\n\n/* validator */\nexport const validateAriaLabelledby = (\n\tcomponent: unknown,\n\thost: HTMLElement | undefined,\n\tinternals: HostInternals | undefined,\n\tvalue?: AriaLabelledbyPropType,\n): HTMLElement[] => {\n\tconst isValid = (value?: unknown): boolean => typeof value === 'string' || typeof value === 'undefined';\n\twatchValidator(component as Generic.Element.Component, '_ariaLabelledby', isValid, new Set(['string']), value);\n\tif (!isValid(value)) {\n\t\t// An invalid value is only logged: it resolves to no element and leaves the internals untouched.\n\t\treturn [];\n\t}\n\n\tconst elements = resolveTargets(host, value);\n\tif (internals) {\n\t\ttry {\n\t\t\tinternals.ariaLabelledByElements = elements;\n\t\t} catch {\n\t\t\t// ariaLabelledByElements is not supported in this environment — silently skip.\n\t\t}\n\t\tLog.debug(['WebComponent internals', internals]);\n\t}\n\treturn elements;\n};\n","import type { FixedColsPropType } from '../../schema';\nimport type { SimpleProp } from './helpers/factory';\nimport { createPropDefinition } from './helpers/factory';\nimport { normalizeArray } from './helpers/normalizers';\n\n/**\n * Number of sticky columns at the start and at the end of a table.\n *\n * The default `[0, 0]` fixes no column, which renders exactly like an unset value: no column index\n * is lower than 0 or at least as high as the column count.\n */\nexport type FixedColsProp = SimpleProp<'fixedCols', FixedColsPropType>;\n\nconst isFixedColCount = (value: unknown): boolean => typeof value === 'number' && Number.isInteger(value) && value >= 0;\n\nexport const fixedColsProp = createPropDefinition<FixedColsProp>(\n\t'fixedCols',\n\t[0, 0],\n\t(value) => normalizeArray(value) as FixedColsPropType,\n\t(value) => value.length === 2 && value.every(isFixedColCount),\n);\n","import type { SimpleProp } from './helpers/factory';\nimport { createPropDefinition } from './helpers/factory';\nimport { normalizeBoolean } from './helpers/normalizers';\n\n/**\n * Whether a component shows its settings menu (e.g. the column settings of a table).\n */\nexport type HasSettingsMenuProp = SimpleProp<'hasSettingsMenu', boolean>;\nexport const hasSettingsMenuProp = createPropDefinition<HasSettingsMenuProp>('hasSettingsMenu', false, normalizeBoolean);\n","import type { TableCallbacksPropType } from '../../schema';\nimport { createCallbacksPropDefinition } from './helpers/factory';\n\nexport const tableCallbacksProp = createCallbacksPropDefinition<TableCallbacksPropType>();\n","import type { KoliBriTableDataType, Stringified } from '../../schema';\nimport { parseJson } from '../../schema';\nimport type { Prop } from './helpers/factory';\nimport { createPropDefinition } from './helpers/factory';\n\n/**\n * Rows of a table body or footer.\n *\n * Declared `Stringified<…>`, so the rows also arrive as a JSON string whenever they are set through\n * an HTML attribute. `parseJson` also accepts single-quoted JSON.\n */\nexport type TableDataProp = Prop<'data', Stringified<KoliBriTableDataType[]>, KoliBriTableDataType[]>;\n\n/** Parses and verifies a list of table rows; shared by the body and the footer data. */\nexport function normalizeTableRows(value: unknown): KoliBriTableDataType[] {\n\tconst rows = typeof value === 'string' ? parseJson<unknown>(value) : value;\n\tif (Array.isArray(rows)) {\n\t\treturn rows as KoliBriTableDataType[];\n\t}\n\tthrow new Error('Invalid table data: expected an array of row objects.');\n}\n\n/** Every row must be an object; a list with a non-object entry is rejected as a whole. */\nexport function isTableRows(rows: KoliBriTableDataType[]): boolean {\n\treturn rows.every((row) => typeof row === 'object' && row !== null);\n}\n\nexport const tableDataProp = createPropDefinition<TableDataProp>('data', [], normalizeTableRows, isTableRows);\n","import type { KoliBriTableDataType, Stringified } from '../../schema';\nimport type { Prop } from './helpers/factory';\nimport { createPropDefinition } from './helpers/factory';\nimport { isTableRows, normalizeTableRows } from './table-data';\n\n/**\n * Rows of the table footer. Same shape and normalization as the body rows (`tableDataProp`).\n */\nexport type TableDataFootProp = Prop<'dataFoot', Stringified<KoliBriTableDataType[]>, KoliBriTableDataType[]>;\n\nexport const tableDataFootProp = createPropDefinition<TableDataFootProp>('dataFoot', [], normalizeTableRows, isTableRows);\n","import type { KoliBriTableHeaderCellWithLogic, KoliBriTableHeaders, Stringified, TableHeaderCells } from '../../schema';\nimport { parseJson } from '../../schema';\nimport type { Prop } from './helpers/factory';\nimport { createPropDefinition } from './helpers/factory';\n\n/**\n * Horizontal and vertical header cells of a table, normalized so that both directions are always\n * arrays — an omitted direction renders exactly like an empty one.\n */\nexport type TableHeaders = Required<KoliBriTableHeaders>;\nexport type TableHeadersProp = Prop<'headers', Stringified<TableHeaderCells>, TableHeaders>;\n\nconst isHeaderRows = (rows: unknown): rows is KoliBriTableHeaderCellWithLogic[][] => Array.isArray(rows) && rows.every((row) => Array.isArray(row));\n\nfunction normalizeTableHeaders(value: unknown): TableHeaders {\n\tconst headers = typeof value === 'string' ? parseJson<unknown>(value) : value;\n\tif (typeof headers !== 'object' || headers === null) {\n\t\tthrow new Error('Invalid table headers: expected an object.');\n\t}\n\tconst { horizontal = [], vertical = [] } = headers as KoliBriTableHeaders;\n\tif (!isHeaderRows(horizontal) || !isHeaderRows(vertical)) {\n\t\tthrow new Error('Invalid table headers: horizontal and vertical must be arrays of header rows.');\n\t}\n\treturn { horizontal, vertical };\n}\n\n/** A header width, when given, must be a number of pixels. */\nfunction hasNumericWidths({ horizontal, vertical }: TableHeaders): boolean {\n\treturn [...horizontal, ...vertical].every((row) => row.every((cell) => cell.width === undefined || typeof cell.width === 'number'));\n}\n\nexport const tableHeadersProp = createPropDefinition<TableHeadersProp>('headers', { horizontal: [], vertical: [] }, normalizeTableHeaders, hasNumericWidths);\n","import type { SimpleProp } from './helpers/factory';\nimport { createPropDefinition } from './helpers/factory';\nimport { normalizeBoolean } from './helpers/normalizers';\n\n/**\n * Whether a table shows its loading spinner.\n *\n * Shares the key `loading` with `loadingProp`, which is the unrelated lazy-loading hint of embedded\n * content (`'eager' | 'lazy'`) — hence a definition of its own.\n */\nexport type TableLoadingProp = SimpleProp<'loading', boolean>;\nexport const tableLoadingProp = createPropDefinition<TableLoadingProp>('loading', false, normalizeBoolean);\n","import type { KoliBriTableSelection, Stringified } from '../../schema';\nimport { parseJson } from '../../schema';\nimport type { Prop } from './helpers/factory';\nimport { createPropDefinition } from './helpers/factory';\n\n/**\n * Row selection of a table.\n *\n * `false` is the normalized \"no selection\" and the default: the table then renders no selection\n * column. A selection is only valid with a `label` function, which is why a JSON string can never\n * validate — it is parsed for a meaningful warning, not for use.\n */\nexport type TableSelectionProp = Prop<'selection', Stringified<KoliBriTableSelection>, KoliBriTableSelection | false>;\n\nfunction normalizeTableSelection(value: unknown): KoliBriTableSelection {\n\tconst selection = typeof value === 'string' ? parseJson<unknown>(value) : value;\n\tif (typeof selection === 'object' && selection !== null) {\n\t\treturn selection as KoliBriTableSelection;\n\t}\n\tthrow new Error('Invalid table selection: expected an object.');\n}\n\nfunction isTableSelection(selection: KoliBriTableSelection | false): boolean {\n\treturn selection === false || (typeof selection.label === 'function' && (!selection.selectedKeys || Array.isArray(selection.selectedKeys)));\n}\n\nexport const tableSelectionProp = createPropDefinition<TableSelectionProp>('selection', false, normalizeTableSelection, isTableSelection);\n","import type { KoliBriTableCell, KoliBriTableDataType, KoliBriTableHeaderCell, SelectionChangeEventPayload, SortEventPayload } from '../../../schema';\nimport {\n\tfixedColsProp,\n\thasSettingsMenuProp,\n\tlabelWithExpertSlotProp,\n\ttableCallbacksProp,\n\ttableDataFootProp,\n\ttableDataProp,\n\ttableHeadersProp,\n\ttableLoadingProp,\n\ttableSelectionProp,\n\tvariantProp,\n} from '../../props';\nimport type { ApiFromConfig, PropsConfigShape } from '../generic-types';\n\n/**\n * Props configuration for the stateless table.\n *\n * Notes on prop choices:\n * - `labelWithExpertSlotProp`, not `labelProp`: the label is the table caption, which has no\n * length limit. `labelProp` rejects labels longer than 80 characters and would drop such a\n * caption; the table renders no expert slot either way.\n * - `tableLoadingProp`, not `loadingProp`: both use the key `loading`, but `loadingProp` is the\n * lazy-loading hint of embedded content.\n */\nexport const tableStatelessPropsConfig = {\n\trequired: [labelWithExpertSlotProp, tableDataProp],\n\toptional: [fixedColsProp, hasSettingsMenuProp, tableCallbacksProp, tableDataFootProp, tableHeadersProp, tableLoadingProp, tableSelectionProp, variantProp],\n} as const satisfies PropsConfigShape;\n\nexport type TableStatelessApi = ApiFromConfig<\n\ttypeof tableStatelessPropsConfig,\n\t{\n\t\tCallbacks: {\n\t\t\t/** Runs a cell's custom `render` function against its rendered `<td>`. */\n\t\t\trenderCell: (cell: KoliBriTableCell, element?: HTMLElement) => void;\n\t\t\t/** A selection checkbox or radio changed; the payload is the complete new selection. */\n\t\t\tselectionChange: (event: Event, payload: SelectionChangeEventPayload) => void;\n\t\t\t/** A sort button of a header cell was clicked. */\n\t\t\tsort: (event: MouseEvent, payload: SortEventPayload) => void;\n\t\t};\n\t\tListeners: {\n\t\t\t/** The settings menu applied new horizontal header cells. */\n\t\t\tchangeHeaderCells: CustomEvent<KoliBriTableHeaderCell[][]>;\n\t\t\t/** Arrow up/down moves the focus between the selection checkboxes. */\n\t\t\tkeydown: KeyboardEvent;\n\t\t};\n\t\tRefs: {\n\t\t\tscrollContainer: HTMLDivElement;\n\t\t\ttable: HTMLTableElement;\n\t\t};\n\t\tStates: {\n\t\t\t/**\n\t\t\t * Elements that label the table from outside its shadow root (`_ariaLabelledby`). While\n\t\t\t * there are any, the table renders no caption of its own.\n\t\t\t */\n\t\t\texternalLabelElements: HTMLElement[];\n\t\t\t/** Whether the scroll container overflows horizontally; it then becomes a keyboard stop. */\n\t\t\thasScrollbar: boolean;\n\t\t\t/**\n\t\t\t * A stable key per body row object, so a re-sorted table moves its rows instead of\n\t\t\t * rewriting their cells.\n\t\t\t */\n\t\t\trowKeys: Map<KoliBriTableDataType, string>;\n\t\t\t/**\n\t\t\t * Bumped whenever the settings menu changes the header cells. Part of every body cell's\n\t\t\t * key, so each cell is recreated after a settings change.\n\t\t\t */\n\t\t\tsettingsChangedCounter: number;\n\t\t\t/** Whether the fixed columns are too wide for the container and render unfixed. */\n\t\t\tstickyColsDisabled: boolean;\n\t\t};\n\t}\n>;\n","import type {\n\tActionColumnHeaderCell,\n\tFixedColsPropType,\n\tKoliBriTableCell,\n\tKoliBriTableDataType,\n\tKoliBriTableHeaderCell,\n\tKoliBriTableHeaderCellWithLogic,\n\tKoliBriTableSelection,\n\tKoliBriTableSelectionKey,\n\tStateColumnHeaderCell,\n} from '../../../schema';\nimport type { TableHeaders } from '../../props/table-headers';\n\n/**\n * Pure helpers that derive the rendered table from its render props. They are shared by the\n * functional component (rendering) and the web component (sticky-column measurement), so both\n * agree on the column model.\n */\n\nexport type TableDataCell = KoliBriTableCell & KoliBriTableDataType;\nexport type TableDataRow = TableDataCell[];\n\n/**\n * The header cells that define the data columns — those with a `key` or a `render` function.\n * They also fix the rendering direction: if only the vertical headers carry keys, the data is\n * rendered column-wise (`horizontal: false`).\n */\nexport type PrimaryHeaders = {\n\tcells: KoliBriTableHeaderCell[];\n\thorizontal: boolean;\n};\n\nconst collectKeyedHeaderCells = (rows: KoliBriTableHeaderCell[][]): KoliBriTableHeaderCell[] =>\n\trows.flatMap((cells) => cells.filter((cell) => typeof cell.key === 'string' || typeof cell.render === 'function'));\n\nexport const getPrimaryHeaders = (headers: TableHeaders): PrimaryHeaders => {\n\tconst horizontalCells = collectKeyedHeaderCells(headers.horizontal);\n\tif (horizontalCells.length > 0) {\n\t\treturn { cells: horizontalCells, horizontal: true };\n\t}\n\tconst verticalCells = collectKeyedHeaderCells(headers.vertical);\n\treturn { cells: verticalCells, horizontal: verticalCells.length === 0 };\n};\n\nconst sumSpans = (cells: KoliBriTableHeaderCell[], span: 'colSpan' | 'rowSpan'): number => {\n\tlet count = 0;\n\tif (Array.isArray(cells)) {\n\t\tcells.forEach((cell) => {\n\t\t\tcount += cell[span] ?? 1;\n\t\t});\n\t}\n\treturn count;\n};\n\n/** The widest horizontal header row decides the column count; without headers, the data does. */\nexport const getNumberOfCols = (horizontalHeaders: KoliBriTableHeaderCell[][], data: KoliBriTableDataType[]): number => {\n\tconst max = Math.max(0, ...horizontalHeaders.map((row) => sumSpans(row, 'colSpan')));\n\treturn max === 0 ? data.length : max;\n};\n\n/** The longest vertical header column decides the body row count; footer rows are not part of it. */\nexport const getNumberOfRows = (verticalHeaders: KoliBriTableHeaderCell[][], data: KoliBriTableDataType[], footLength: number): number => {\n\tconst max = Math.max(0, ...verticalHeaders.map((column) => sumSpans(column, 'rowSpan')));\n\treturn max === 0 ? data.length : max - footLength;\n};\n\nexport const getVisibleColSpan = (cells?: Array<KoliBriTableCell | KoliBriTableHeaderCell>): number =>\n\tcells?.reduce((acc, cell) => {\n\t\tif ('visible' in cell && cell.visible === false) {\n\t\t\treturn acc;\n\t\t}\n\t\treturn acc + (cell.colSpan || 1);\n\t}, 0) ?? 0;\n\nexport type FixedSide = 'left' | 'right';\n\n/**\n * Resolves which side a column sticks to, if any. A row's cell index also counts its vertical\n * header cells and can reach `maxCols`, so right-fixing needs a configured right count.\n */\nexport const getFixedSide = (fixedCols: FixedColsPropType, stickyColsDisabled: boolean, maxCols: number, index: number | undefined): FixedSide | undefined => {\n\tif (index === undefined || stickyColsDisabled) {\n\t\treturn undefined;\n\t}\n\tif (index < fixedCols[0]) {\n\t\treturn 'left';\n\t}\n\tif (fixedCols[1] > 0 && index >= maxCols - fixedCols[1]) {\n\t\treturn 'right';\n\t}\n\treturn undefined;\n};\n\n/**\n * Sticky offsets per column: the summed declared widths of the fixed columns between a column and\n * its edge of the table.\n */\nexport const getFixedOffsets = (\n\tprimaryCells: KoliBriTableHeaderCell[],\n\tmaxCols: number,\n\tfixedCols: FixedColsPropType,\n\tstickyColsDisabled: boolean,\n): number[] => {\n\tconst offsets: number[] = [];\n\tfor (let j = 0; j < maxCols; j++) {\n\t\tif (getFixedSide(fixedCols, stickyColsDisabled, maxCols, j) === 'left') {\n\t\t\toffsets[j] = (offsets[j - 1] ?? 0) + (primaryCells[j - 1]?.width ?? 0);\n\t\t}\n\t}\n\tfor (let j = maxCols - 1; j >= 0; j--) {\n\t\tif (getFixedSide(fixedCols, stickyColsDisabled, maxCols, j) === 'right') {\n\t\t\toffsets[j] = (offsets[j + 1] ?? 0) + (primaryCells[j + 1]?.width ?? 0);\n\t\t}\n\t}\n\treturn offsets;\n};\n\n/**\n * CSS offset of a sticky cell. A left-fixed column also clears the selection column, which is\n * always sticky at `left: 0`.\n */\nexport const getOffsetString = (offsets: number[], index: number | undefined, left: boolean, hasSelection: boolean): string => {\n\tconst offset = index === undefined ? undefined : offsets[index];\n\tif (left && hasSelection) {\n\t\treturn `calc( var(--kol-table-selection-col-width) + ${offset}px)`;\n\t}\n\treturn `${offset}px`;\n};\n\n/**\n * Finds the action or state column definition for a given data column.\n */\nexport const getColumnHeaderForType = (\n\theaders: TableHeaders,\n\tprimaryHeaders: PrimaryHeaders,\n\tcolIndex: number,\n\ttype: 'action' | 'state',\n): ActionColumnHeaderCell | StateColumnHeaderCell | undefined => {\n\tconst directionHeaders = primaryHeaders.horizontal ? headers.horizontal : headers.vertical;\n\tif (directionHeaders.length === 0) return undefined;\n\n\tconst header = primaryHeaders.cells[colIndex] as KoliBriTableHeaderCellWithLogic | undefined;\n\tif (header?.type === type) {\n\t\treturn header;\n\t}\n\treturn undefined;\n};\n\ntype DataFieldOptions = {\n\tdata: KoliBriTableDataType[];\n\t/** Footer rows; required to size the body and, with `isFoot`, the rows rendered. */\n\tdataFoot: KoliBriTableDataType[];\n\theaders: TableHeaders;\n\tisFoot: boolean;\n\t/** Text of the single cell a table without data renders. */\n\tnoEntriesLabel: string;\n\tprimaryHeaders: PrimaryHeaders;\n};\n\n/**\n * Lays out the cells of the body (or the footer) row by row: the vertical header cells that start\n * in a row, followed by one data cell per primary column. The footer continues the vertical\n * headers below the body rows.\n */\nexport const createDataField = ({ data, dataFoot, headers, isFoot, noEntriesLabel, primaryHeaders }: DataFieldOptions): TableDataRow[] => {\n\tconst maxCols = getNumberOfCols(headers.horizontal, data);\n\tconst primaryCells = primaryHeaders.cells;\n\tlet maxRows = getNumberOfRows(headers.vertical, data, dataFoot.length);\n\tlet startRow = 0;\n\tif (isFoot) {\n\t\tstartRow = maxRows;\n\t\tmaxRows += dataFoot.length;\n\t}\n\tconst dataField: TableDataRow[] = [];\n\n\tconst rowCount: number[] = [];\n\tconst rowSpans: number[][] = [];\n\theaders.vertical.forEach((_row, index) => {\n\t\trowCount[index] = 0;\n\t\trowSpans[index] = [];\n\t});\n\n\tfor (let i = startRow; i < maxRows; i++) {\n\t\tconst dataRow: TableDataRow = [];\n\t\theaders.vertical.forEach((headerCells, index) => {\n\t\t\tlet rowsTotal = 0;\n\t\t\trowSpans[index].forEach((value) => (rowsTotal += value));\n\t\t\tif (rowsTotal <= i) {\n\t\t\t\tconst rows = headerCells[i - rowsTotal + rowCount[index]];\n\t\t\t\tif (typeof rows === 'object') {\n\t\t\t\t\tdataRow.push({\n\t\t\t\t\t\t...rows,\n\t\t\t\t\t\theaderCell: true,\n\t\t\t\t\t\tdata: {},\n\t\t\t\t\t});\n\t\t\t\t\tlet rowSpan = 1;\n\t\t\t\t\tif (typeof rows.rowSpan === 'number' && rows.rowSpan > 1) {\n\t\t\t\t\t\trowSpan = rows.rowSpan;\n\t\t\t\t\t}\n\t\t\t\t\trowSpans[index].push(rowSpan);\n\t\t\t\t\tif (typeof rows.colSpan === 'number' && rows.colSpan > 1) {\n\t\t\t\t\t\tfor (let k = 1; k < rows.colSpan; k++) {\n\t\t\t\t\t\t\trowSpans[index + k].push(rowSpan);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\trowCount[index]++;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tfor (let j = 0; j < maxCols; j++) {\n\t\t\tif (primaryHeaders.horizontal) {\n\t\t\t\tconst row = isFoot ? dataFoot[i - startRow] : data[i];\n\t\t\t\tconst header = primaryCells[j];\n\t\t\t\tif (typeof header === 'object' && header !== null && typeof row === 'object' && row !== null) {\n\t\t\t\t\tdataRow.push({\n\t\t\t\t\t\t...header,\n\t\t\t\t\t\tcolIndex: j,\n\t\t\t\t\t\tcolSpan: undefined,\n\t\t\t\t\t\trowSpan: undefined,\n\t\t\t\t\t\tdata: row,\n\t\t\t\t\t\tlabel: row[header.key as string] as string,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst header = primaryCells[i];\n\t\t\t\tif (typeof header === 'object' && header !== null && typeof data[j] === 'object' && data[j] !== null) {\n\t\t\t\t\tdataRow.push({\n\t\t\t\t\t\t...header,\n\t\t\t\t\t\tcolIndex: j,\n\t\t\t\t\t\tcolSpan: undefined,\n\t\t\t\t\t\trowSpan: undefined,\n\t\t\t\t\t\tdata: data[j],\n\t\t\t\t\t\tlabel: data[j][header.key as unknown as number] as string,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdataField.push(dataRow);\n\t}\n\tif (data.length === 0) {\n\t\tlet colspan = getVisibleColSpan(headers.horizontal[0]);\n\t\tlet rowspan = 0;\n\n\t\tif (headers.vertical.length > 0) {\n\t\t\tcolspan -= headers.vertical.length;\n\t\t\theaders.vertical[0].forEach((row) => {\n\t\t\t\trowspan += row.rowSpan || 1;\n\t\t\t});\n\t\t}\n\t\tconst emptyCell = {\n\t\t\tcolSpan: colspan,\n\t\t\tlabel: noEntriesLabel,\n\t\t\trender: undefined,\n\t\t\trowSpan: Math.max(rowspan, 1),\n\t\t};\n\t\tif (dataField.length === 0) {\n\t\t\tdataField.push([emptyCell]);\n\t\t} else {\n\t\t\tdataField[0].push(emptyCell);\n\t\t}\n\t}\n\treturn dataField;\n};\n\n/**\n * Minimum width of the table: the sum of all declared header widths (all horizontal rows including\n * merged parent cells, and all vertical header cells). Widths declared on both a parent and its\n * children are all summed.\n */\nexport const getTableMinWidth = ({ horizontal, vertical }: TableHeaders): string => {\n\tconst horizontalWidths = horizontal.flatMap((row) =>\n\t\trow.filter((cell) => cell.visible !== false && cell.width !== undefined && cell.width > 0).map((cell) => cell.width as number),\n\t);\n\tconst verticalWidths = vertical.flatMap((column) => column.filter((cell) => cell.width !== undefined && cell.width > 0).map((cell) => cell.width as number));\n\tconst allWidths = [...verticalWidths, ...horizontalWidths];\n\n\tif (allWidths.length === 0) {\n\t\treturn '0px';\n\t}\n\tif (allWidths.length === 1) {\n\t\treturn `${allWidths[0]}px`;\n\t}\n\treturn `calc(${allWidths.map((w) => `${w}px`).join(' + ')})`;\n};\n\nexport const normalizeSelectionKeys = (value?: KoliBriTableSelectionKey | KoliBriTableSelectionKey[]): KoliBriTableSelectionKey[] =>\n\tvalue === undefined ? [] : Array.isArray(value) ? value : [value];\n\nexport const getSelectionKeyPropertyName = (selection: KoliBriTableSelection | false): string => (selection ? selection.keyPropertyName : undefined) ?? 'id';\n\n/**\n * Selection state derived once per render: string sets allow O(1) membership checks per row\n * instead of scanning the key arrays for every row.\n */\nexport type SelectionModel = {\n\tdisabledKeys: Set<string>;\n\tkeyPropertyName: string;\n\tselectedKeys: KoliBriTableSelectionKey[];\n\tselectedKeysSet: Set<string>;\n};\n\nexport const createSelectionModel = (selection: KoliBriTableSelection | false): SelectionModel => {\n\tconst selectedKeys = selection ? normalizeSelectionKeys(selection.selectedKeys) : [];\n\treturn {\n\t\tdisabledKeys: new Set((selection ? normalizeSelectionKeys(selection.disabledKeys) : []).map(String)),\n\t\tkeyPropertyName: getSelectionKeyPropertyName(selection),\n\t\tselectedKeys,\n\t\tselectedKeysSet: new Set(selectedKeys.map(String)),\n\t};\n};\n\n/** Rows whose selection is not disabled. */\nexport const getSelectableRows = (data: KoliBriTableDataType[], model: SelectionModel): KoliBriTableDataType[] =>\n\tdata.filter((item) => !model.disabledKeys.has(String(item[model.keyPropertyName] as KoliBriTableSelectionKey)));\n\n/**\n * The selection after toggling \"select all\": already selected but disabled rows always stay\n * selected; with `selectAll`, every selectable row is added.\n */\nexport const getSelectAllSelection = (data: KoliBriTableDataType[], model: SelectionModel, selectAll: boolean): KoliBriTableSelectionKey[] => {\n\tconst selection = model.selectedKeys.filter((key) => model.disabledKeys.has(String(key)));\n\tif (selectAll) {\n\t\tselection.push(...getSelectableRows(data, model).map((row) => row?.[model.keyPropertyName] as KoliBriTableSelectionKey));\n\t}\n\treturn selection;\n};\n","import type { FunctionalComponent as FC, JSX } from '@stencil/core';\nimport { Fragment, h } from '@stencil/core';\n\nimport { KolBadgeTag } from '../../../core/component-names';\nimport { translate } from '../../../i18n';\nimport type {\n\tActionColumnHeaderCell,\n\tAriaSort,\n\tInternalButtonProps,\n\tKoliBriTableCell,\n\tKoliBriTableDataType,\n\tKoliBriTableHeaderCell,\n\tKoliBriTableHeaderCellWithLogic,\n\tKoliBriTableRender,\n\tStateColumnHeaderCell,\n\tStateColumnPropType,\n} from '../../../schema';\nimport { classNameFromVariant } from '../../../schema';\nimport { bem } from '../../../schema/bem-registry';\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 { IconFC } from '../icon/component';\nimport type { LinkFCProps } from '../link/component';\nimport { LinkFC } from '../link/component';\nimport type { EmbeddedLinkProps } from '../link/resolve-props';\nimport { SpinFC } from '../spin/component';\nimport { TooltipFC } from '../tooltip/component';\nimport type { TableStatelessApi } from './api';\nimport type { FixedSide, PrimaryHeaders, SelectionModel, TableDataCell, TableDataRow } from './table-model';\nimport {\n\tcreateDataField,\n\tcreateSelectionModel,\n\tgetColumnHeaderForType,\n\tgetFixedOffsets,\n\tgetFixedSide,\n\tgetNumberOfCols,\n\tgetOffsetString,\n\tgetPrimaryHeaders,\n\tgetSelectableRows,\n\tgetSelectAllSelection,\n\tgetTableMinWidth,\n\tgetVisibleColSpan,\n} from './table-model';\n\nconst tableBem = bem.forBlock('kol-table');\nconst BEM_CLASS_TABLE__BODY = tableBem('body');\nconst BEM_CLASS_TABLE__CELL_ACTIONS = tableBem('cell-actions');\nconst BEM_CLASS_TABLE__CELL_STATES = tableBem('cell-states');\nconst BEM_CLASS_TABLE__FOOTER = tableBem('footer');\nconst BEM_CLASS_TABLE__HEAD = tableBem('head');\nconst BEM_CLASS_TABLE__HEAD_ROW = tableBem('head-row');\nconst BEM_CLASS_TABLE__SCROLL_CONTAINER = tableBem('scroll-container');\nconst BEM_CLASS_TABLE__SELECTION_ICON = tableBem('selection-icon');\nconst BEM_CLASS_TABLE__SELECTION_INPUT_TOOLTIP = tableBem('selection-input-tooltip');\nconst BEM_CLASS_TABLE__SORT = tableBem('sort');\nconst BEM_CLASS_TABLE__SORT_BUTTON = tableBem('sort-button');\nconst BEM_CLASS_TABLE__SORT_ORDER = tableBem('sort-order');\nconst BEM_CLASS_TABLE__TABLE = tableBem('table');\nconst BEM_CLASS_TABLE__CAPTION = `${tableBem('focus-element')} ${tableBem('caption')}`;\n\nexport type TableStatelessFCProps = FunctionalComponentProps<TableStatelessApi> & {\n\t/** `ButtonFC` props of the embedded button `key`; the web component keeps one button item per key. */\n\tgetButtonFcProps: (key: string, props: InternalButtonProps, rootAttributes?: ButtonItemRootAttributes) => ButtonItemFcProps;\n\t/** `LinkFC` props of the embedded link `key`; the web component keeps one link item per key. */\n\tgetLinkFcProps: (key: string, props: EmbeddedLinkProps) => LinkFCProps;\n\t/** Renders the settings menu; the web component keeps its state. */\n\trenderSettings: (horizontalHeaderCells: KoliBriTableHeaderCell[][]) => JSX.Element;\n};\n\n/**\n * Everything the render helpers derive once per render and share: the column model, the sticky\n * offsets and the selection state.\n */\ntype RenderContext = TableStatelessFCProps & {\n\tfixedOffsets: number[];\n\tmaxCols: number;\n\tprimaryHeaders: PrimaryHeaders;\n\tselectionModel: SelectionModel;\n\ttranslateNoEntries: string;\n};\n\nconst getFixedSideOf = (context: RenderContext, index: number | undefined): FixedSide | undefined =>\n\tgetFixedSide(context.fixedCols, context.stickyColsDisabled, context.maxCols, index);\n\nconst getOffsets = (context: RenderContext, fixed: FixedSide | undefined, index: number | undefined) => ({\n\tleft: fixed === 'left' ? getOffsetString(context.fixedOffsets, index, true, context.selection !== false) : undefined,\n\tright: fixed === 'right' ? getOffsetString(context.fixedOffsets, index, false, context.selection !== false) : undefined,\n});\n\n/**\n * Rows keep their identity across renders through a key derived from the row object, so a\n * re-sorted table moves its rows instead of rewriting their cells.\n */\nconst getRowKey = (context: RenderContext, row: TableDataRow, rowIndex: number): string =>\n\t(context.primaryHeaders.horizontal && row[0]?.data ? context.rowKeys.get(row[0].data) : undefined) ?? String(rowIndex);\n\n/**\n * The selection cell of a body row: a checkbox for multiple selection, a radio for single\n * selection.\n */\nconst renderSelectionCell = (context: RenderContext, row: TableDataRow, rowIndex: number): JSX.Element => {\n\tconst { handleSelectionChange, selection, selectionModel } = context;\n\tif (!selection) return '';\n\tconst firstCellData = row[0]?.data;\n\n\tif (!firstCellData) return '';\n\tconst keyProperty = firstCellData[selectionModel.keyPropertyName] as string | number;\n\tconst isMultiple = selection.multiple || selection.multiple === undefined;\n\n\tconst keyPropertyString = String(keyProperty);\n\tconst selected = selectionModel.selectedKeysSet.has(keyPropertyString);\n\tconst disabled = selectionModel.disabledKeys.has(keyPropertyString);\n\n\tconst label = selection.label(firstCellData);\n\tconst props = {\n\t\tname: 'selection',\n\t\tchecked: selected,\n\t\tdisabled,\n\t\tid: String(keyProperty),\n\t\t['aria-label']: label,\n\t};\n\treturn (\n\t\t<td key={`tbody-${rowIndex}-selection`} class={tableBem('cell', { selection: true })}>\n\t\t\t<div class={tableBem('selection', { checked: selected })}>\n\t\t\t\t{isMultiple ? (\n\t\t\t\t\t<label class={tableBem('selection-label', { disabled })}>\n\t\t\t\t\t\t<IconFC class={BEM_CLASS_TABLE__SELECTION_ICON} icons={`kolicon ${selected ? 'kolicon-check' : ''}`} label=\"\" />\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\tclass={tableBem('selection-input', { checkbox: true })}\n\t\t\t\t\t\t\t{...props}\n\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\tonInput={(event: Event) => {\n\t\t\t\t\t\t\t\tconst updatedSelectedKeys = !selected\n\t\t\t\t\t\t\t\t\t? [...selectionModel.selectedKeys, keyProperty]\n\t\t\t\t\t\t\t\t\t: selectionModel.selectedKeys.filter((key) => String(key) !== keyPropertyString);\n\t\t\t\t\t\t\t\thandleSelectionChange(event, updatedSelectedKeys);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</label>\n\t\t\t\t) : (\n\t\t\t\t\t<label class={tableBem('selection-label')}>\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\tclass={tableBem('selection-input', { radio: true })}\n\t\t\t\t\t\t\t{...props}\n\t\t\t\t\t\t\ttype=\"radio\"\n\t\t\t\t\t\t\tonInput={(event: Event) => {\n\t\t\t\t\t\t\t\thandleSelectionChange(event, [keyProperty]);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</label>\n\t\t\t\t)}\n\t\t\t\t<div class={BEM_CLASS_TABLE__SELECTION_INPUT_TOOLTIP}>\n\t\t\t\t\t<TooltipFC label={label} badgeText=\"\" id={`${keyProperty}-label`} refFloating={() => {}} />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</td>\n\t);\n};\n\n/**\n * The header cell of the selection column. With multiple selection it holds a checkbox that\n * selects or deselects all selectable rows, indeterminate while only some are selected.\n */\nconst renderHeadingSelectionCell = (context: RenderContext): JSX.Element => {\n\tconst { data, handleSelectionChange, selection, selectionModel } = context;\n\n\tif (!selection) {\n\t\treturn <td class={tableBem('cell', { header: true })} key={`thead-0`}></td>;\n\t}\n\n\tif (selection.multiple === false) {\n\t\treturn (\n\t\t\t<th scope=\"col\" key={`thead-0-selection`} class={tableBem('cell', { header: true, selection: true })}>\n\t\t\t\t<span class=\"visually-hidden\">{translate('kol-table-selection')}</span>\n\t\t\t</th>\n\t\t);\n\t}\n\n\tconst selectedKeyLength = selectionModel.selectedKeys.filter((key) => !selectionModel.disabledKeys.has(String(key))).length;\n\tconst dataLength = getSelectableRows(data, selectionModel).length;\n\tconst isChecked = selectedKeyLength === dataLength;\n\tconst indeterminate = selectedKeyLength !== 0 && !isChecked;\n\tlet label: string;\n\tif (selectedKeyLength === 0) {\n\t\tlabel = translate('kol-table-selection-all');\n\t} else if (isChecked && !indeterminate) {\n\t\tlabel = translate('kol-table-selection-none');\n\t} else {\n\t\tlabel = translate('kol-table-selection-indeterminate');\n\t}\n\treturn (\n\t\t<th scope=\"col\" key={`thead-0-selection`} class={tableBem('cell', { header: true, selection: true })}>\n\t\t\t<span class=\"visually-hidden\">{translate('kol-table-selection')}</span>\n\t\t\t<div class={tableBem('selection', { checked: isChecked, indeterminate })}>\n\t\t\t\t<label class={tableBem('selection-label')}>\n\t\t\t\t\t<IconFC class={BEM_CLASS_TABLE__SELECTION_ICON} icons={`kolicon ${indeterminate ? 'kolicon-minus' : isChecked ? 'kolicon-check' : ''}`} label=\"\" />\n\t\t\t\t\t<input\n\t\t\t\t\t\tclass={tableBem('selection-input', { checkbox: true })}\n\t\t\t\t\t\tname=\"selection\"\n\t\t\t\t\t\tchecked={isChecked && !indeterminate}\n\t\t\t\t\t\tindeterminate={indeterminate}\n\t\t\t\t\t\taria-label={label}\n\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\tonInput={(event: Event) => {\n\t\t\t\t\t\t\thandleSelectionChange(event, getSelectAllSelection(data, selectionModel, !isChecked));\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t</label>\n\t\t\t\t<div class={BEM_CLASS_TABLE__SELECTION_INPUT_TOOLTIP}>\n\t\t\t\t\t<TooltipFC label={label} badgeText=\"\" refFloating={() => {}} />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</th>\n\t);\n};\n\n/**\n * The blank cell above the vertical header columns when the table has headers in both\n * directions. Its width is the sum of the first cell of each vertical header column, so the\n * column widths hold with `table-layout: fixed`.\n */\nconst renderHeaderTdCell = ({ headers }: RenderContext): JSX.Element => {\n\tconst { horizontal, vertical } = headers;\n\n\tif (horizontal.length === 0 || vertical.length === 0) {\n\t\treturn <Fragment></Fragment>;\n\t}\n\n\tconst totalWidth = vertical.reduce((sum, column) => sum + (column?.[0]?.width ?? 0), 0);\n\n\treturn <td aria-hidden=\"true\" colSpan={vertical.length} rowSpan={horizontal.length} style={totalWidth > 0 ? { width: `${totalWidth}px` } : undefined}></td>;\n};\n\nconst getSortAriaDescription = (order?: number): string => {\n\tconst translateSort = translate('kol-sort');\n\tif (typeof order === 'number' && order > 0) {\n\t\treturn `${translateSort} – ${translate('kol-table-sort-order').replace('{{order}}', `${order}`)}`;\n\t}\n\treturn translateSort;\n};\n\n/**\n * A header cell (`<th>`). A cell with a `sortDirection` renders a sort button, and with a\n * `sortOrder` also the position of its column in a multi-column sort.\n */\nconst renderHeadingCell = (context: RenderContext, cell: KoliBriTableHeaderCell, rowIndex: number, colIndex: number, isVertical: boolean): JSX.Element => {\n\tif (cell.visible === false) {\n\t\treturn '';\n\t}\n\n\tconst sortableSetting = cell?.sortable !== false;\n\tconst hasSortDirection = typeof cell.sortDirection === 'string';\n\tconst canSort = sortableSetting && hasSortDirection;\n\n\tlet ariaSort: AriaSort = 'none';\n\tlet sortButtonIcon = 'kolicon-sort-neutral';\n\n\tif (canSort && cell.sortDirection) {\n\t\tswitch (cell.sortDirection) {\n\t\t\tcase 'ASC':\n\t\t\t\tsortButtonIcon = 'kolicon-sort-asc';\n\t\t\t\tariaSort = 'ascending';\n\t\t\t\tbreak;\n\t\t\tcase 'DESC':\n\t\t\t\tsortButtonIcon = 'kolicon-sort-desc';\n\t\t\t\tariaSort = 'descending';\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tariaSort = 'none';\n\t\t}\n\t}\n\n\tconst scope = isVertical ? 'row' : typeof cell.colSpan === 'number' && cell.colSpan > 1 ? 'colgroup' : 'col';\n\n\tconst sortOrder = typeof cell.sortOrder === 'number' && cell.sortOrder > 0 ? cell.sortOrder : undefined;\n\tconst width = cell.width !== undefined ? `${cell.width}px` : undefined;\n\tconst fixed = getFixedSideOf(context, colIndex);\n\tconst { left, right } = getOffsets(context, fixed, colIndex);\n\tconst textAlign = cell.textAlign;\n\tconst sortDirection = canSort ? cell.sortDirection : undefined;\n\n\treturn (\n\t\t<th\n\t\t\tkey={`${rowIndex}-${colIndex}-${cell.label}`}\n\t\t\tclass={tableBem('cell', {\n\t\t\t\t[ariaSort]: true,\n\t\t\t\t'align-center': textAlign === 'center',\n\t\t\t\t'align-justify': textAlign === 'justify',\n\t\t\t\t'align-left': textAlign === 'left',\n\t\t\t\t'align-right': textAlign === 'right',\n\t\t\t\theader: true,\n\t\t\t\t'sticky-left': fixed === 'left',\n\t\t\t\t'sticky-right': fixed === 'right',\n\t\t\t})}\n\t\t\tscope={scope}\n\t\t\tcolSpan={cell.colSpan}\n\t\t\trowSpan={cell.rowSpan}\n\t\t\tstyle={{ width, left, right }}\n\t\t\taria-sort={ariaSort}\n\t\t\tdata-sort={sortDirection ? `sort-${sortDirection}` : undefined}\n\t\t>\n\t\t\t{sortDirection ? (\n\t\t\t\t<span class={BEM_CLASS_TABLE__SORT}>\n\t\t\t\t\t<ButtonFC\n\t\t\t\t\t\t{...context.getButtonFcProps(\n\t\t\t\t\t\t\t`sort-${isVertical ? 'vertical' : 'horizontal'}-${rowIndex}-${colIndex}`,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t_icons: { right: sortButtonIcon },\n\t\t\t\t\t\t\t\t_label: cell.label,\n\t\t\t\t\t\t\t\t_ariaDescription: getSortAriaDescription(sortOrder),\n\t\t\t\t\t\t\t\t_on: {\n\t\t\t\t\t\t\t\t\tonClick: (event: MouseEvent) => {\n\t\t\t\t\t\t\t\t\t\tcontext.handleSort(event, {\n\t\t\t\t\t\t\t\t\t\t\tkey: cell.key as string,\n\t\t\t\t\t\t\t\t\t\t\tcurrentSortDirection: sortDirection,\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{ class: BEM_CLASS_TABLE__SORT_BUTTON },\n\t\t\t\t\t\t)}\n\t\t\t\t\t/>\n\t\t\t\t\t{sortOrder && (\n\t\t\t\t\t\t<span aria-hidden=\"true\" class={BEM_CLASS_TABLE__SORT_ORDER}>\n\t\t\t\t\t\t\t{sortOrder}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t)}\n\t\t\t\t</span>\n\t\t\t) : (\n\t\t\t\tcell.label\n\t\t\t)}\n\t\t</th>\n\t);\n};\n\n/**\n * The actions of an action column: buttons and links built by the column's `actions` factory from\n * the row data. Each action sits in a classless `<span>`: the span is the flex item of the actions\n * container and holds the inline-flex button or link in a line box, which sets its height.\n */\nconst renderActionItems = (context: RenderContext, actionColumn: ActionColumnHeaderCell, rowData: KoliBriTableDataType, key: string): JSX.Element => (\n\t<div class={BEM_CLASS_TABLE__CELL_ACTIONS}>\n\t\t{actionColumn.actions(rowData).map((action, actionIndex) => {\n\t\t\tconst actionKey = `action-${key}-${actionIndex}`;\n\t\t\tif (action.type === 'button') {\n\t\t\t\treturn (\n\t\t\t\t\t<span key={actionKey}>\n\t\t\t\t\t\t<ButtonFC {...context.getButtonFcProps(actionKey, action)} />\n\t\t\t\t\t</span>\n\t\t\t\t);\n\t\t\t} else if (action.type === 'link') {\n\t\t\t\treturn (\n\t\t\t\t\t<span key={actionKey}>\n\t\t\t\t\t\t<LinkFC {...context.getLinkFcProps(actionKey, action)} />\n\t\t\t\t\t</span>\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn null;\n\t\t})}\n\t</div>\n);\n\n/**\n * The states of a state column: the badges the row data lists under the column's key.\n */\nconst renderStateItems = (stateColumn: StateColumnHeaderCell, rowData: KoliBriTableDataType, key: string): JSX.Element => {\n\tconst colKey = stateColumn.key;\n\tif (!colKey) {\n\t\treturn '';\n\t}\n\n\tconst states = rowData[colKey] as StateColumnPropType[];\n\tif (!states) {\n\t\treturn '';\n\t}\n\n\treturn (\n\t\t<div class={BEM_CLASS_TABLE__CELL_STATES}>\n\t\t\t{states.map((state, stateIndex) => {\n\t\t\t\tif (state.type === 'badge') {\n\t\t\t\t\treturn <KolBadgeTag key={`state-${key}-${stateIndex}`} {...state} />;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t})}\n\t\t</div>\n\t);\n};\n\n/**\n * A body or footer cell: a vertical header cell (`<th>`) or a data cell (`<td>`). A data cell\n * renders an action column's actions, a state column's badges, its label — or nothing, when a\n * custom `render` function fills it after rendering.\n */\nconst renderTableCell = (context: RenderContext, cell: TableDataCell, rowIndex: number, colIndex: number, isVertical: boolean): JSX.Element => {\n\tif ((cell as KoliBriTableHeaderCell).visible === false) {\n\t\treturn '';\n\t}\n\n\tlet key = `${rowIndex}-${colIndex}-${cell.label}`;\n\tif (cell.data) {\n\t\tconst dataKey = context.rowKeys.get(cell.data);\n\t\tkey = dataKey ? `${dataKey}-${context.primaryHeaders.horizontal ? colIndex : rowIndex}` : key;\n\t}\n\n\tif ((cell as KoliBriTableHeaderCellWithLogic).headerCell) {\n\t\treturn renderHeadingCell(context, cell, rowIndex, colIndex, isVertical);\n\t}\n\n\tconst isNoEntriesHintCell = typeof cell.render !== 'function' && cell.label === context.translateNoEntries;\n\tconst actionColumn = getColumnHeaderForType(context.headers, context.primaryHeaders, colIndex, 'action') as ActionColumnHeaderCell | undefined;\n\tconst isActionColumn = Boolean(actionColumn && cell.data);\n\tconst stateColumn = getColumnHeaderForType(context.headers, context.primaryHeaders, colIndex, 'state') as StateColumnHeaderCell | undefined;\n\tconst isStateColumn = Boolean(stateColumn && cell.data);\n\tconst fixed = getFixedSideOf(context, colIndex);\n\tconst { left, right } = getOffsets(context, fixed, cell.colIndex);\n\tconst hasCustomRender = typeof cell.render === 'function';\n\tconst textAlign = cell.textAlign;\n\n\treturn (\n\t\t<td\n\t\t\t// settingsChangedCounter gives every cell a new key after a settings change, so it is rerendered\n\t\t\tkey={`cell-${key}-${context.settingsChangedCounter}`}\n\t\t\tclass={tableBem('cell', {\n\t\t\t\tactions: isActionColumn,\n\t\t\t\t'align-center': textAlign === 'center',\n\t\t\t\t'align-justify': textAlign === 'justify',\n\t\t\t\t'align-left': textAlign === 'left',\n\t\t\t\t'align-right': textAlign === 'right',\n\t\t\t\tbody: true,\n\t\t\t\tstates: isStateColumn,\n\t\t\t\t'sticky-left': fixed === 'left',\n\t\t\t\t'sticky-right': fixed === 'right',\n\t\t\t})}\n\t\t\taria-atomic={isNoEntriesHintCell ? 'false' : undefined}\n\t\t\taria-live={isNoEntriesHintCell ? 'polite' : undefined}\n\t\t\taria-relevant={isNoEntriesHintCell ? 'text' : undefined}\n\t\t\tcolSpan={cell.colSpan}\n\t\t\trowSpan={cell.rowSpan}\n\t\t\tstyle={{ textAlign, left, right }}\n\t\t\tref={hasCustomRender ? (element) => context.handleRenderCell(cell as KoliBriTableCell & { render: KoliBriTableRender }, element) : undefined}\n\t\t>\n\t\t\t{isActionColumn && actionColumn && cell.data\n\t\t\t\t? renderActionItems(context, actionColumn, cell.data, key)\n\t\t\t\t: isStateColumn && stateColumn && cell.data\n\t\t\t\t\t? renderStateItems(stateColumn, cell.data, key)\n\t\t\t\t\t: !hasCustomRender\n\t\t\t\t\t\t? cell.label\n\t\t\t\t\t\t: ''}\n\t\t</td>\n\t);\n};\n\nconst renderTableRow = (context: RenderContext, row: TableDataRow, rowIndex: number, isVertical: boolean, isFooter: boolean = false): JSX.Element => (\n\t<tr class={tableBem('row', { body: !isFooter, footer: isFooter })} key={`row-${getRowKey(context, row, rowIndex)}`}>\n\t\t{renderSelectionCell(context, row, rowIndex)}\n\t\t{row.map((cell, colIndex) => renderTableCell(context, cell, rowIndex, colIndex, isVertical))}\n\t</tr>\n);\n\n/** The visual separator row below the header and above the footer, spanning all columns. */\nconst renderSpacer = (context: RenderContext, variant: 'foot' | 'head', cellDefs: KoliBriTableHeaderCell[][] | KoliBriTableCell[][]): JSX.Element => {\n\tconst colspan = context.headers.vertical.length + getVisibleColSpan(cellDefs?.[0]) + (context.selection ? 1 : 0);\n\n\treturn (\n\t\t<tr aria-hidden=\"true\" class={tableBem('spacer', { [variant]: true })}>\n\t\t\t<td class={tableBem('spacer-line', { [variant]: true })} colSpan={colspan}></td>\n\t\t</tr>\n\t);\n};\n\nconst renderFoot = (context: RenderContext): JSX.Element | null => {\n\tconst { dataFoot, headers, primaryHeaders, translateNoEntries } = context;\n\tif (dataFoot.length === 0) {\n\t\treturn null;\n\t}\n\n\tconst rows = createDataField({ data: dataFoot, dataFoot, headers, isFoot: true, noEntriesLabel: translateNoEntries, primaryHeaders });\n\tconst maxCols = getNumberOfCols(headers.horizontal, dataFoot);\n\tconst footContext: RenderContext = {\n\t\t...context,\n\t\tfixedOffsets: getFixedOffsets(primaryHeaders.cells, maxCols, context.fixedCols, context.stickyColsDisabled),\n\t\tmaxCols,\n\t};\n\treturn (\n\t\t<tfoot class={BEM_CLASS_TABLE__FOOTER}>\n\t\t\t{[renderSpacer(context, 'foot', rows), rows.map((row, rowIndex) => renderTableRow(footContext, row, rowIndex, true, true))]}\n\t\t</tfoot>\n\t);\n};\n\n/**\n * Stateless renderer of the table: the optional settings menu, the scroll container and the\n * table with caption, header, body (with loading indicator) and footer.\n *\n * The web component owns everything with a lifecycle — the scroll-container measurement, the row\n * keys and the event handling; this renderer only derives the column model from its props.\n */\nexport const TableStatelessFC: FC<TableStatelessFCProps> = (props) => {\n\tconst {\n\t\tdata,\n\t\tdataFoot,\n\t\texternalLabelElements,\n\t\tfixedCols,\n\t\thasScrollbar,\n\t\thasSettingsMenu,\n\t\theaders,\n\t\tlabel,\n\t\tloading,\n\t\trefScrollContainer,\n\t\trefTable,\n\t\tselection,\n\t\tstickyColsDisabled,\n\t\tvariant,\n\t} = props;\n\n\tconst translateNoEntries = translate('kol-no-entries');\n\tconst primaryHeaders = getPrimaryHeaders(headers);\n\tconst maxCols = getNumberOfCols(headers.horizontal, data);\n\tconst context: RenderContext = {\n\t\t...props,\n\t\tfixedOffsets: getFixedOffsets(primaryHeaders.cells, maxCols, fixedCols, stickyColsDisabled),\n\t\tmaxCols,\n\t\tprimaryHeaders,\n\t\tselectionModel: createSelectionModel(selection),\n\t\ttranslateNoEntries,\n\t};\n\tconst dataField = createDataField({ data, dataFoot, headers, isFoot: false, noEntriesLabel: translateNoEntries, primaryHeaders });\n\tconst showInternalCaption = externalLabelElements.length === 0;\n\n\treturn (\n\t\t<BemRootNodeFC block=\"kol-table\" class={classNameFromVariant(variant, 'table')}>\n\t\t\t{hasSettingsMenu && props.renderSettings(headers.horizontal)}\n\n\t\t\t{/* Firefox automatically makes the scroll container focusable when it has a scrollbar. We implement a similar behavior cross-browser by allowing the\n\t\t\t * caption to receive focus. Hence, the container opts out with `tabindex=\"-1\"` to avoid two focusable elements.\n\t\t\t * When an external label is active the caption is not rendered — the scroll container becomes the keyboard stop instead.\n\t\t\t */}\n\t\t\t<div ref={refScrollContainer} class={BEM_CLASS_TABLE__SCROLL_CONTAINER} tabindex={hasScrollbar ? (showInternalCaption ? '-1' : '0') : undefined}>\n\t\t\t\t<table\n\t\t\t\t\tref={refTable}\n\t\t\t\t\taria-labelledby={showInternalCaption ? 'caption' : undefined}\n\t\t\t\t\tclass={BEM_CLASS_TABLE__TABLE}\n\t\t\t\t\tstyle={{ minWidth: getTableMinWidth(headers) }}\n\t\t\t\t>\n\t\t\t\t\t{/* eslint-disable jsx-a11y/no-noninteractive-tabindex -- caption tabIndex enables keyboard access to scrollable overflow */}\n\t\t\t\t\t{showInternalCaption && (\n\t\t\t\t\t\t<caption class={BEM_CLASS_TABLE__CAPTION} id=\"caption\" tabindex={hasScrollbar ? '0' : undefined}>\n\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t</caption>\n\t\t\t\t\t)}\n\t\t\t\t\t{/* eslint-enable jsx-a11y/no-noninteractive-tabindex */}\n\n\t\t\t\t\t<thead class={BEM_CLASS_TABLE__HEAD}>\n\t\t\t\t\t\t{[\n\t\t\t\t\t\t\theaders.horizontal.map((cols, rowIndex) => (\n\t\t\t\t\t\t\t\t<tr class={BEM_CLASS_TABLE__HEAD_ROW} key={`thead-${rowIndex}`}>\n\t\t\t\t\t\t\t\t\t{selection && renderHeadingSelectionCell(context)}\n\t\t\t\t\t\t\t\t\t{rowIndex === 0 && renderHeaderTdCell(context)}\n\t\t\t\t\t\t\t\t\t{Array.isArray(cols) && cols.map((cell, colIndex) => renderHeadingCell(context, cell, rowIndex, colIndex, false))}\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t)),\n\t\t\t\t\t\t\trenderSpacer(context, 'head', headers.horizontal),\n\t\t\t\t\t\t]}\n\t\t\t\t\t</thead>\n\t\t\t\t\t<tbody class={BEM_CLASS_TABLE__BODY}>\n\t\t\t\t\t\t<div class={tableBem('loader', { shown: loading })}>\n\t\t\t\t\t\t\t<SpinFC\n\t\t\t\t\t\t\t\tlabel={(loading ? translate('kol-table-data-loading') : translate('kol-table-data-loaded')).replace('{{caption}}', label)}\n\t\t\t\t\t\t\t\tshow={loading}\n\t\t\t\t\t\t\t\tvariant=\"cycle\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{dataField.map((row, rowIndex) => renderTableRow(context, row, rowIndex, true))}\n\t\t\t\t\t</tbody>\n\t\t\t\t\t{renderFoot(context)}\n\t\t\t\t</table>\n\t\t\t</div>\n\t\t</BemRootNodeFC>\n\t);\n};\n","import type { FunctionalComponent as FC } from '@stencil/core';\nimport { h } from '@stencil/core';\n\nimport type { HeadingLevel, KoliBriDialogEventCallbacks, LabelPropType } from '../../../schema';\nimport type { ModalVariantPropType } from '../../../schema/props/variant/modal';\nimport { createUniqueId, nonce } from '../../../utils/dev.utils';\nimport { createCtaRef } from '../../../utils/element-interaction';\nimport { dispatchDomEvent, KolEvent } from '../../../utils/events';\nimport { lockScroll, unlockScroll } from '../../../utils/scroll-lock';\nimport { handleCancelOverlay } from '../../../utils/tooltip-open-tracking';\nimport { dialogCallbacksProp, labelProp, levelProp, variantDialogProp, widthProp } from '../../props';\nimport { BaseWebComponent } from '../base-web-component';\nimport type { ResolvedButtonProps } from '../button/resolve-props';\nimport { resolveCardCloseButtonProps } from '../card/close-button';\nimport type { CardFCProps } from '../card/component';\nimport { CardFC } from '../card/component';\nimport { TooltipBehavior } from '../tooltip/behavior';\nimport type { DialogFCProps } from './component';\nimport { dialogBlockClass, DialogFC } from './component';\n\n/** The configuration of an embedded dialog: the public props of the dialog elements. */\nexport type DialogItemProps = {\n\tlabel: LabelPropType;\n\tlevel?: HeadingLevel;\n\ton?: KoliBriDialogEventCallbacks;\n\tvariant?: ModalVariantPropType;\n\twidth?: string;\n};\n\n/** The resolved props of `DialogItemFC`; `card` only for the card variant. */\nexport type DialogItemFCProps = {\n\tdialog: DialogFCProps;\n\tcard?: CardFCProps;\n};\n\n/** Renders an embedded dialog from the props of `DialogItem.getFcProps`, with the children as its content. */\nexport const DialogItemFC: FC<DialogItemFCProps> = ({ dialog, card }, children) => (\n\t<DialogFC {...dialog}>{card ? <CardFC {...card}>{children}</CardFC> : children}</DialogFC>\n);\n\n/**\n * One orchestrated dialog embedded in another component's shadow DOM: the counterpart of the dialog\n * elements for a component that renders `DialogFC` itself. It keeps the open state of the native\n * dialog, the scroll lock, the cancel and close handling and, for the card variant, the close\n * button with its tooltip behavior.\n *\n * The `KolEvent` DOM events are dispatched on an element the embedding component provides, an\n * ancestor of the `<dialog>`: dispatched on the `<dialog>` itself, the `close` and `cancel` events\n * would reach the dialog's own native `close` and `cancel` listeners.\n */\nexport type DialogItem = {\n\t/** Resolves the dialog for the current render pass. Call once per render. */\n\tgetFcProps(props: DialogItemProps): DialogItemFCProps;\n\t/** Opens the dialog, modal or not. */\n\tshow(modal: boolean): void;\n\t/** Closes the dialog. */\n\tclose(): void;\n\t/** Re-registers the close button's tooltip listeners. Call from `componentDidRender`. */\n\tsyncListeners(): void;\n\t/** Closes the dialog and tears down the scroll lock and the tooltip behavior. Call from `disconnectedCallback`. */\n\tdestroy(): void;\n};\n\n/**\n * The card variant renders no link, so its anchor never exists: the card's own `_on` callbacks\n * describe that anchor, and its ref is never called.\n */\nconst NOOP = (): void => {};\n\n/**\n * @param getFlagHost - Element the theme-scoped `buttonVariantDefault` feature flag of the card's\n * close button is resolved against.\n * @param requestRender - Renders the embedding component again, after the dialog switched between\n * modal and non-modal.\n * @param getEventTarget - Element the `KolEvent` DOM events are dispatched on, an ancestor of the `<dialog>`.\n */\nexport const createDialogItem = (\n\tgetFlagHost: () => HTMLElement | undefined,\n\trequestRender: () => void,\n\tgetEventTarget: () => HTMLElement | undefined,\n): DialogItem => {\n\tconst dialogRef = createCtaRef<HTMLDialogElement>();\n\tconst cardCloseButtonRef = createCtaRef<HTMLButtonElement>();\n\tconst cardCloseTooltipBehavior = new TooltipBehavior(BaseWebComponent.stateLess);\n\tconst ariaDescriptionId = nonce();\n\tconst headingId = createUniqueId('dialog-heading');\n\t/* The scroll lock is counted per owner; the item is the owner of its dialog's lock. */\n\tconst scrollLockOwner = {};\n\tlet cardCloseButtonProps: ResolvedButtonProps | undefined;\n\tlet modal = true;\n\tlet on: KoliBriDialogEventCallbacks = {};\n\n\tconst dispatch = (event: KolEvent): boolean => {\n\t\tconst target = getEventTarget();\n\t\treturn target ? dispatchDomEvent(target, event) : true;\n\t};\n\n\t/*\n\t * The optional chaining on the native methods is a workaround for HTMLDialogElement not being\n\t * implemented in jsdom, which would otherwise fail the Jest tests.\n\t */\n\tconst close = (): void => {\n\t\tdialogRef.el?.close?.();\n\t};\n\n\tconst handleCancel = (event: Event): void => {\n\t\thandleCancelOverlay(event);\n\t\tif (event.defaultPrevented) return;\n\n\t\ton.onCancel?.(event);\n\t\tif (event.defaultPrevented) return;\n\n\t\tif (!dispatch(KolEvent.cancel)) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t};\n\n\tconst handleClose = (event: Event): void => {\n\t\t// Ignore close events that bubble up from child components (e.g. KolAlert).\n\t\t// Only react when the dialog element itself is the event origin.\n\t\tif (event.target !== dialogRef.el) {\n\t\t\treturn;\n\t\t}\n\n\t\tunlockScroll(scrollLockOwner);\n\t\ton.onClose?.();\n\t\tdispatch(KolEvent.close);\n\t};\n\n\t/** The card's close button closes the dialog, which then fires its own native close event. */\n\tconst handleCardClose = (): void => {\n\t\tcardCloseTooltipBehavior.hideTooltip();\n\t\tclose();\n\t\tdispatch(KolEvent.close);\n\t};\n\n\treturn {\n\t\tgetFcProps: (props: DialogItemProps): DialogItemFCProps => {\n\t\t\tlet label = '';\n\t\t\tlet level: HeadingLevel = 0;\n\t\t\tlet variant = 'blank' as ModalVariantPropType;\n\t\t\tlet width = '100%';\n\t\t\tlabelProp.apply(props.label, (v) => {\n\t\t\t\tlabel = v;\n\t\t\t});\n\t\t\tlevelProp.apply(props.level ?? 0, (v) => {\n\t\t\t\tlevel = v;\n\t\t\t});\n\t\t\tdialogCallbacksProp.apply(props.on, (v) => {\n\t\t\t\ton = v;\n\t\t\t});\n\t\t\tvariantDialogProp.apply(props.variant ?? 'blank', (v) => {\n\t\t\t\tvariant = v;\n\t\t\t});\n\t\t\twidthProp.apply(props.width ?? '100%', (v) => {\n\t\t\t\twidth = v;\n\t\t\t});\n\n\t\t\tconst isCard = variant === 'card';\n\t\t\tif (isCard && !cardCloseButtonProps) {\n\t\t\t\tcardCloseButtonProps = resolveCardCloseButtonProps(getFlagHost());\n\t\t\t\tcardCloseTooltipBehavior.componentWillLoad({\n\t\t\t\t\tlabel: cardCloseButtonProps.label,\n\t\t\t\t\talign: cardCloseButtonProps.tooltipAlign,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tdialog: {\n\t\t\t\t\tblockClass: dialogBlockClass(variant),\n\t\t\t\t\thandleCancel,\n\t\t\t\t\thandleClose,\n\t\t\t\t\tlabel,\n\t\t\t\t\tlabelledBy: isCard ? headingId : undefined,\n\t\t\t\t\tmodal,\n\t\t\t\t\trefDialog: dialogRef,\n\t\t\t\t\twidth,\n\t\t\t\t},\n\t\t\t\tcard:\n\t\t\t\t\tisCard && cardCloseButtonProps\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tariaDescriptionId,\n\t\t\t\t\t\t\t\tcloseButtonProps: cardCloseButtonProps,\n\t\t\t\t\t\t\t\thandleBlur: NOOP,\n\t\t\t\t\t\t\t\thandleClose: handleCardClose,\n\t\t\t\t\t\t\t\thandleFocus: NOOP,\n\t\t\t\t\t\t\t\thasCloser: true,\n\t\t\t\t\t\t\t\theadingId,\n\t\t\t\t\t\t\t\thref: '',\n\t\t\t\t\t\t\t\tlabel,\n\t\t\t\t\t\t\t\tlevel,\n\t\t\t\t\t\t\t\ton: {},\n\t\t\t\t\t\t\t\trefCloseButton: cardCloseButtonRef,\n\t\t\t\t\t\t\t\trefCta: NOOP,\n\t\t\t\t\t\t\t\trefTooltip: cardCloseTooltipBehavior.setTooltipElementRef,\n\t\t\t\t\t\t\t\ttarget: '',\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: undefined,\n\t\t\t};\n\t\t},\n\t\tshow: (nextModal: boolean): void => {\n\t\t\tconst dialog = dialogRef.el;\n\t\t\tif (dialog?.open) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (modal !== nextModal) {\n\t\t\t\tmodal = nextModal;\n\t\t\t\trequestRender();\n\t\t\t}\n\t\t\tif (nextModal) {\n\t\t\t\tdialog?.showModal?.();\n\t\t\t\tif (dialog) {\n\t\t\t\t\tlockScroll(scrollLockOwner);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdialog?.show?.();\n\t\t\t}\n\t\t},\n\t\tclose,\n\t\tsyncListeners: (): void => {\n\t\t\tif (cardCloseButtonRef.el) {\n\t\t\t\tcardCloseTooltipBehavior.syncListeners(undefined, cardCloseButtonRef.el, true);\n\t\t\t}\n\t\t},\n\t\tdestroy: (): void => {\n\t\t\tclose();\n\t\t\tunlockScroll(scrollLockOwner);\n\t\t\tcardCloseTooltipBehavior.destroy();\n\t\t},\n\t};\n};\n","import type { JSX } from '@stencil/core';\nimport { h } from '@stencil/core';\n\nimport { KolInputCheckboxTag, KolInputNumberTag } from '../../../core/component-names';\nimport { translate } from '../../../i18n';\nimport type { KoliBriTableHeaderCell } from '../../../schema';\nimport { bem } from '../../../schema/bem-registry';\nimport { createUniqueId, nonce } from '../../../utils/dev.utils';\nimport { dispatchDomEvent, KolEvent } from '../../../utils/events';\nimport { AlertFC } from '../alert/component';\nimport { ButtonFC } from '../button/component';\nimport type { ButtonItem } from '../button/item';\nimport { createButtonItem } from '../button/item';\nimport { createDialogItem, DialogItemFC } from '../dialog/item';\nimport { createItemPool } from '../item-pool';\n\nconst BEM_CLASS_TABLE__SETTINGS = bem.forBlock('kol-table')('settings');\n\n/**\n * The settings menu of the table: the toggle button and the dialog that hides, resizes and moves\n * the columns. It keeps the applied and the edited header cells and the error message; every change\n * renders the table again.\n */\nexport type TableSettings = {\n\t/** Starts a render pass of the table, also one that does not render the menu. */\n\tbeginRender(): void;\n\t/** Renders the menu for the horizontal header cells. Call at most once per render pass. */\n\trender(horizontalHeaderCells: KoliBriTableHeaderCell[][]): JSX.Element;\n\t/** Syncs the embedded buttons and the dialog. Call from `componentDidRender`. */\n\tsync(): void;\n\t/** Tears down the embedded buttons and the dialog. Call from `disconnectedCallback`. */\n\tdestroy(): void;\n};\n\n/**\n * Parses a column width and returns its numeric value.\n * Returns undefined if the width is not finite or not positive.\n */\nconst parseColumnWidth = (width: number | undefined): number | undefined => {\n\treturn Number.isFinite(width) && width !== undefined && width > 0 ? width : undefined;\n};\n\nconst NOOP = (): void => {};\n\n/**\n * @param getHost - The table element: the feature flag host of the embedded buttons.\n * @param requestTableRender - Renders the table again after a change of the settings state.\n */\nexport const createTableSettings = (getHost: () => HTMLElement | undefined, requestTableRender: () => void): TableSettings => {\n\tconst translateTableSettings = translate('kol-table-settings');\n\tconst translateTableSettingsCancel = translate('kol-table-settings-cancel');\n\tconst translateTableSettingsApply = translate('kol-table-settings-apply');\n\tconst translateErrorAllInvisible = translate('kol-table-settings-error-all-invisible');\n\n\tlet rootElement: HTMLElement | undefined;\n\n\t/**\n\t * A render the menu requested itself keeps the edited header cells: `kol-table-stateful` passes\n\t * header cells of a new identity in every render, which would discard the edits.\n\t */\n\tlet ownRenderRequested = false;\n\tlet isOwnRender = false;\n\tconst requestRender = (): void => {\n\t\townRenderRequested = true;\n\t\trequestTableRender();\n\t};\n\n\tconst buttons = createItemPool<ButtonItem>(\n\t\t() => createButtonItem(getHost),\n\t\t(item) => item.syncListeners(),\n\t\t(item) => item.destroy(),\n\t);\n\tconst dialog = createDialogItem(getHost, requestRender, () => rootElement);\n\tconst alertHeadingId = createUniqueId('alert-heading');\n\tconst alertCloserAriaDescriptionId = nonce();\n\n\tlet receivedHeaderCells: KoliBriTableHeaderCell[][] | undefined;\n\tlet headerCells: KoliBriTableHeaderCell[][] = [];\n\tlet editingHeaderCells: KoliBriTableHeaderCell[][] = [];\n\tlet errorMessage: string | null = null;\n\n\tconst applyHeaderCells = (value: KoliBriTableHeaderCell[][]): void => {\n\t\theaderCells = value.map((row) => [...row]);\n\t\teditingHeaderCells = value.map((row) => row.map((cell) => ({ ...cell })));\n\t};\n\n\tconst getPrimaryRow = (): KoliBriTableHeaderCell[] => editingHeaderCells[editingHeaderCells.length - 1] ?? [];\n\n\tconst updatePrimaryRow = (newRow: KoliBriTableHeaderCell[]): void => {\n\t\teditingHeaderCells = editingHeaderCells.map((row, index, arr) => (index === arr.length - 1 ? newRow : row));\n\t\trequestRender();\n\t};\n\n\tconst moveColumn = (columnId: string, direction: 'up' | 'down'): void => {\n\t\tconst row = [...getPrimaryRow()];\n\t\tconst sourceIndex = row.findIndex((col) => col.key === columnId);\n\t\tif (sourceIndex === -1) return;\n\n\t\tlet targetIndex: number;\n\t\tif (direction === 'up') {\n\t\t\tif (sourceIndex === 0) return; // Cannot move first column up\n\t\t\ttargetIndex = sourceIndex - 1;\n\t\t} else {\n\t\t\tif (sourceIndex === row.length - 1) return; // Cannot move last column down\n\t\t\ttargetIndex = sourceIndex + 1;\n\t\t}\n\n\t\t// Swap with target\n\t\tconst [source] = row.splice(sourceIndex, 1);\n\t\trow.splice(targetIndex, 0, source);\n\t\tupdatePrimaryRow(row);\n\t};\n\n\tconst handleVisibilityChange = (key: string, visible: unknown): void => {\n\t\tconst row = getPrimaryRow().map((col) => (col.key === key && col.hidable !== false ? { ...col, visible: Boolean(visible) } : col));\n\t\tupdatePrimaryRow(row);\n\t};\n\n\tconst handleWidthChange = (key: string, width: unknown): void => {\n\t\t// Clearing/invalid input must not collapse the column: parseColumnWidth maps\n\t\t// non-positive or non-finite values (e.g. an emptied field => 0) back to undefined,\n\t\t// which renders as an auto-width column instead of a 0px/1px sliver.\n\t\tconst parsedWidth = parseColumnWidth(Number(width));\n\t\tconst row = getPrimaryRow().map((col) => (col.key === key && col.resizable !== false ? { ...col, width: parsedWidth } : col));\n\t\tupdatePrimaryRow(row);\n\t};\n\n\tconst handleCancel = (): void => {\n\t\teditingHeaderCells = headerCells.map((row) => [...row]);\n\t\terrorMessage = null;\n\t\trequestRender();\n\t\tdialog.close();\n\t};\n\n\tconst handleSubmit = (event: Event): void => {\n\t\tevent.preventDefault();\n\n\t\tconst primaryRow = getPrimaryRow();\n\t\tconst hasVisibleColumn = primaryRow.some((column) => column.visible !== false);\n\n\t\tif (!hasVisibleColumn) {\n\t\t\terrorMessage = translateErrorAllInvisible;\n\t\t\trequestRender();\n\t\t\treturn;\n\t\t} else if (rootElement) {\n\t\t\terrorMessage = null;\n\t\t\t// Update headerCells with the edited values\n\t\t\theaderCells = editingHeaderCells.map((row) => row.map((cell) => ({ ...cell })));\n\t\t\trequestRender();\n\n\t\t\t// Type for sanitized cells where optional properties are truly omitted\n\t\t\ttype SanitizedHeaderCell = Omit<KoliBriTableHeaderCell, 'hidable' | 'position' | 'resizable' | 'sortable' | 'visible' | 'width'> &\n\t\t\t\tPartial<Pick<KoliBriTableHeaderCell, 'hidable' | 'resizable' | 'sortable' | 'visible' | 'width'>>;\n\n\t\t\tconst sanitizedHeaderCells = editingHeaderCells.map((row) =>\n\t\t\t\trow.map((column): SanitizedHeaderCell => {\n\t\t\t\t\tconst { hidable, resizable, sortable, visible, width, ...rest } = column as KoliBriTableHeaderCell & { position?: unknown };\n\t\t\t\t\tconst cell: SanitizedHeaderCell = { ...rest };\n\t\t\t\t\tif (visible !== undefined) cell.visible = visible;\n\t\t\t\t\tif (hidable !== undefined) cell.hidable = hidable;\n\t\t\t\t\tif (sortable !== undefined) cell.sortable = sortable;\n\t\t\t\t\tif (resizable !== undefined) cell.resizable = resizable;\n\t\t\t\t\tif (width !== undefined && width !== null) cell.width = width;\n\t\t\t\t\treturn cell;\n\t\t\t\t}),\n\t\t\t);\n\n\t\t\tdispatchDomEvent(rootElement, KolEvent.changeHeaderCells, sanitizedHeaderCells);\n\t\t\tdialog.close();\n\t\t}\n\t};\n\n\tconst refRoot = (element?: HTMLElement): void => {\n\t\tif (element) {\n\t\t\trootElement = element;\n\t\t}\n\t};\n\n\tconst renderColumn = (column: KoliBriTableHeaderCell, index: number, columns: KoliBriTableHeaderCell[]): JSX.Element => (\n\t\t<div key={column.key} class=\"kol-table-settings__column\">\n\t\t\t<KolInputCheckboxTag\n\t\t\t\t_checked={column.visible !== false}\n\t\t\t\t_label={\n\t\t\t\t\tcolumn.hidable\n\t\t\t\t\t\t? translate('kol-table-settings-column-hidable', { placeholders: { column: column.label } })\n\t\t\t\t\t\t: translate('kol-table-settings-column-not-hidable', { placeholders: { column: column.label } })\n\t\t\t\t}\n\t\t\t\t_value={true}\n\t\t\t\t_hideLabel\n\t\t\t\t_disabled={column.hidable === false}\n\t\t\t\t_on={{ onInput: (_, value: unknown) => handleVisibilityChange(column.key ?? '', value) }}\n\t\t\t/>\n\t\t\t<span class=\"kol-table-settings__column-label\">{column.label}</span>\n\t\t\t<KolInputNumberTag\n\t\t\t\t_hideLabel\n\t\t\t\t_value={parseColumnWidth(column.width)}\n\t\t\t\t_label={translate('kol-table-settings-column-width', { placeholders: { column: column.label } })}\n\t\t\t\t_min={1}\n\t\t\t\t_disabled={column.resizable === false}\n\t\t\t\t_on={{ onInput: (_, value: unknown) => handleWidthChange(column.key ?? '', value) }}\n\t\t\t/>\n\t\t\t<ButtonFC\n\t\t\t\t{...buttons.get(`move-up-${column.key}`).getFcProps(\n\t\t\t\t\t{\n\t\t\t\t\t\t_icons: 'kolicon-chevron-up',\n\t\t\t\t\t\t_label:\n\t\t\t\t\t\t\tcolumn.sortable === false || index === 0\n\t\t\t\t\t\t\t\t? translate('kol-table-settings-not-move', { placeholders: { column: column.label } })\n\t\t\t\t\t\t\t\t: translate('kol-table-settings-move-up', { placeholders: { column: column.label } }),\n\t\t\t\t\t\t_hideLabel: true,\n\t\t\t\t\t\t_variant: 'ghost',\n\t\t\t\t\t\t_on: { onClick: () => moveColumn(column.key ?? '', 'up') },\n\t\t\t\t\t\t_disabled: column.sortable === false || index === 0,\n\t\t\t\t\t},\n\t\t\t\t\t{ 'data-testid': 'table-settings-move-up' },\n\t\t\t\t)}\n\t\t\t/>\n\t\t\t<ButtonFC\n\t\t\t\t{...buttons.get(`move-down-${column.key}`).getFcProps(\n\t\t\t\t\t{\n\t\t\t\t\t\t_icons: 'kolicon-chevron-down',\n\t\t\t\t\t\t_label:\n\t\t\t\t\t\t\tcolumn.sortable === false || index === columns.length - 1\n\t\t\t\t\t\t\t\t? translate('kol-table-settings-not-move', { placeholders: { column: column.label } })\n\t\t\t\t\t\t\t\t: translate('kol-table-settings-move-down', { placeholders: { column: column.label } }),\n\t\t\t\t\t\t_hideLabel: true,\n\t\t\t\t\t\t_variant: 'ghost',\n\t\t\t\t\t\t_on: { onClick: () => moveColumn(column.key ?? '', 'down') },\n\t\t\t\t\t\t_disabled: column.sortable === false || index === columns.length - 1,\n\t\t\t\t\t},\n\t\t\t\t\t{ 'data-testid': 'table-settings-move-down' },\n\t\t\t\t)}\n\t\t\t/>\n\t\t</div>\n\t);\n\n\treturn {\n\t\tbeginRender: (): void => {\n\t\t\tbuttons.beginRender();\n\t\t\tisOwnRender = ownRenderRequested;\n\t\t\townRenderRequested = false;\n\t\t},\n\t\trender: (horizontalHeaderCells: KoliBriTableHeaderCell[][]): JSX.Element => {\n\t\t\tif (!isOwnRender && horizontalHeaderCells !== receivedHeaderCells) {\n\t\t\t\treceivedHeaderCells = horizontalHeaderCells;\n\t\t\t\tapplyHeaderCells(horizontalHeaderCells);\n\t\t\t}\n\t\t\tconst columns = getPrimaryRow();\n\n\t\t\treturn (\n\t\t\t\t<div class={BEM_CLASS_TABLE__SETTINGS} ref={refRoot}>\n\t\t\t\t\t{/* `.kol-table-settings` stays an ancestor of `.kol-button`: the themes style the toggle as `.kol-table-settings .kol-button`. */}\n\t\t\t\t\t<div class=\"kol-table-settings\">\n\t\t\t\t\t\t<ButtonFC\n\t\t\t\t\t\t\t{...buttons.get('toggle').getFcProps({\n\t\t\t\t\t\t\t\t_icons: 'kolicon-settings',\n\t\t\t\t\t\t\t\t_label: translateTableSettings,\n\t\t\t\t\t\t\t\t_hideLabel: true,\n\t\t\t\t\t\t\t\t_on: { onClick: () => dialog.show(true) },\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t\t<DialogItemFC {...dialog.getFcProps({ label: translateTableSettings, variant: 'card', width: 'fit-content' })}>\n\t\t\t\t\t\t<div class=\"kol-table-settings__content\">\n\t\t\t\t\t\t\t{errorMessage && (\n\t\t\t\t\t\t\t\t<div class=\"kol-table-settings__error-message\">\n\t\t\t\t\t\t\t\t\t<AlertFC\n\t\t\t\t\t\t\t\t\t\talert={false}\n\t\t\t\t\t\t\t\t\t\tcloserAriaDescriptionId={alertCloserAriaDescriptionId}\n\t\t\t\t\t\t\t\t\t\thandleCloserClick={NOOP}\n\t\t\t\t\t\t\t\t\t\thasCloser={false}\n\t\t\t\t\t\t\t\t\t\theadingId={alertHeadingId}\n\t\t\t\t\t\t\t\t\t\tlabel={errorMessage}\n\t\t\t\t\t\t\t\t\t\tlevel={0}\n\t\t\t\t\t\t\t\t\t\trefCloserButton={NOOP}\n\t\t\t\t\t\t\t\t\t\trefCloserTooltip={NOOP}\n\t\t\t\t\t\t\t\t\t\ttype=\"error\"\n\t\t\t\t\t\t\t\t\t\tvariant=\"msg\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t<form onSubmit={handleSubmit}>\n\t\t\t\t\t\t\t\t<div class=\"kol-table-settings__columns\">{columns.map((column, index) => renderColumn(column, index, columns))}</div>\n\t\t\t\t\t\t\t\t<div class=\"kol-table-settings__actions\">\n\t\t\t\t\t\t\t\t\t<ButtonFC\n\t\t\t\t\t\t\t\t\t\t{...buttons.get('cancel').getFcProps(\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t_label: translateTableSettingsCancel,\n\t\t\t\t\t\t\t\t\t\t\t\t_variant: 'secondary',\n\t\t\t\t\t\t\t\t\t\t\t\t_on: { onClick: () => handleCancel() },\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{ 'data-testid': 'table-settings-cancel' },\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<ButtonFC\n\t\t\t\t\t\t\t\t\t\t{...buttons\n\t\t\t\t\t\t\t\t\t\t\t.get('apply')\n\t\t\t\t\t\t\t\t\t\t\t.getFcProps({ _label: translateTableSettingsApply, _variant: 'primary', _type: 'submit' }, { 'data-testid': 'table-settings-apply' })}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</form>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</DialogItemFC>\n\t\t\t\t</div>\n\t\t\t);\n\t\t},\n\t\tsync: (): void => {\n\t\t\tbuttons.endRender();\n\t\t\tdialog.syncListeners();\n\t\t},\n\t\tdestroy: (): void => {\n\t\t\tbuttons.destroy();\n\t\t\tdialog.destroy();\n\t\t},\n\t};\n};\n","import type { JSX } from '@stencil/core';\nimport { forceUpdate, h } from '@stencil/core';\n\nimport { BaseWebComponent } from '../../internal/functional-components/base-web-component';\nimport type { ButtonItem, ButtonItemFcProps, ButtonItemRootAttributes } from '../../internal/functional-components/button/item';\nimport { createButtonItem } from '../../internal/functional-components/button/item';\nimport { createItemPool } from '../../internal/functional-components/item-pool';\nimport type { LinkFCProps } from '../../internal/functional-components/link/component';\nimport type { LinkItem } from '../../internal/functional-components/link/item';\nimport { createLinkItem } from '../../internal/functional-components/link/item';\nimport type { EmbeddedLinkProps } from '../../internal/functional-components/link/resolve-props';\nimport type { TableStatelessApi } from '../../internal/functional-components/table-stateless/api';\nimport { tableStatelessPropsConfig } from '../../internal/functional-components/table-stateless/api';\nimport { TableStatelessFC } from '../../internal/functional-components/table-stateless/component';\nimport { createTableSettings } from '../../internal/functional-components/table-stateless/settings';\nimport { getNumberOfCols, getPrimaryHeaders } from '../../internal/functional-components/table-stateless/table-model';\nimport {\n\tfixedColsProp,\n\thasSettingsMenuProp,\n\tlabelWithExpertSlotProp,\n\ttableCallbacksProp,\n\ttableDataFootProp,\n\ttableDataProp,\n\ttableHeadersProp,\n\ttableLoadingProp,\n\ttableSelectionProp,\n\tvariantProp,\n} from '../../internal/props';\nimport type { TableHeaders } from '../../internal/props/table-headers';\nimport type {\n\tFixedColsPropType,\n\tHasSettingsMenuPropType,\n\tInternalButtonProps,\n\tKoliBriTableCell,\n\tKoliBriTableDataType,\n\tKoliBriTableHeaderCell,\n\tSelectionChangeEventPayload,\n\tSortEventPayload,\n\tTableCallbacksPropType,\n\tTableDataFootPropType,\n\tTableDataPropType,\n\tTableHeaderCellsPropType,\n\tTableSelectionPropType,\n\tVariantClassNamePropType,\n} from '../../schema';\nimport { Log } from '../../schema';\nimport { Callback } from '../../schema/enums';\nimport { nonce } from '../../utils/dev.utils';\nimport { dispatchDomEvent, KolEvent } from '../../utils/events';\n\nconst RESIZE_DEBOUNCE_DELAY = 150;\n\n/**\n * Header cells shown in the settings menu are visible and hidable unless they say otherwise.\n */\nconst withHeaderCellSettings = (headers: TableHeaders): TableHeaders => {\n\tif (headers.horizontal.length === 0) {\n\t\treturn headers;\n\t}\n\treturn {\n\t\t...headers,\n\t\thorizontal: headers.horizontal.map((row) =>\n\t\t\trow.map((header) => ({\n\t\t\t\t...header,\n\t\t\t\tvisible: typeof header.visible === 'boolean' ? header.visible : true,\n\t\t\t\thidable: typeof header.hidable === 'boolean' ? header.hidable : true,\n\t\t\t})),\n\t\t),\n\t};\n};\n\n/** Keeps the key of every row that is still present and assigns a new one to each new row. */\nconst createRowKeys = (rows: KoliBriTableDataType[], previous: Map<KoliBriTableDataType, string>): Map<KoliBriTableDataType, string> =>\n\tnew Map(rows.map((row) => [row, previous.get(row) ?? nonce()]));\n\n/**\n * Orchestrator shared by `kol-table-stateless` and `kol-table-stateful`. Both render the same\n * `TableStatelessFC`; the concrete element only declares the Stencil members and delegates from its\n * watchers, listeners and lifecycle hooks.\n *\n * Besides the render props it owns what has a lifecycle: the scroll container's measurements\n * (scrollbar, sticky columns), the row keys, the deferred custom cell rendering and the events.\n */\nexport abstract class BaseTableStatelessWebComponent extends BaseWebComponent<TableStatelessApi> {\n\tprotected abstract readonly host?: HTMLElement;\n\n\tprivate scrollContainerElement?: HTMLDivElement;\n\tprivate tableElement?: HTMLTableElement;\n\tprivate resizeObserver?: ResizeObserver;\n\tprivate resizeDebounceTimeout?: ReturnType<typeof setTimeout>;\n\tprivate readonly cellRenderTimeouts = new Map<HTMLElement, ReturnType<typeof setTimeout>>();\n\n\t/** The sort buttons and the action buttons, one item per key the table FC renders. */\n\tprivate readonly buttonItems = createItemPool<ButtonItem>(\n\t\t() => createButtonItem(() => this.host),\n\t\t(item) => item.syncListeners(),\n\t\t(item) => item.destroy(),\n\t);\n\n\t/** The settings menu with its state, its buttons and its dialog. */\n\tprivate readonly settings = createTableSettings(\n\t\t() => this.host,\n\t\t() => forceUpdate(this),\n\t);\n\n\t/** The action links, one item per key the table FC renders. */\n\tprivate readonly linkItems = createItemPool<LinkItem>(\n\t\t() => createLinkItem(() => forceUpdate(this)),\n\t\t(item) => item.syncListeners(),\n\t\t(item) => item.destroy(),\n\t);\n\n\t// --- Lifecycle ---\n\n\tprotected initTableRenderProps(): void {\n\t\tthis.initRenderProps(tableStatelessPropsConfig);\n\t}\n\n\tprotected observeScrollContainer(): void {\n\t\tif (this.scrollContainerElement && ResizeObserver) {\n\t\t\tthis.resizeObserver = new ResizeObserver(this.handleResize);\n\t\t\tthis.resizeObserver.observe(this.scrollContainerElement);\n\t\t}\n\t\tthis.updateStickyColsDisabled();\n\t}\n\n\tprotected teardownTable(): void {\n\t\tthis.resizeObserver?.disconnect();\n\t\tclearTimeout(this.resizeDebounceTimeout);\n\t\tthis.buttonItems.destroy();\n\t\tthis.linkItems.destroy();\n\t\tthis.settings.destroy();\n\t}\n\n\t/** Call from `componentDidRender`: syncs the embedded buttons and links of the last render pass. */\n\tprotected syncTableItems(): void {\n\t\tthis.buttonItems.endRender();\n\t\tthis.linkItems.endRender();\n\t\tthis.settings.sync();\n\t}\n\n\t// --- Prop application ---\n\n\tprotected applyData(value?: TableDataPropType): void {\n\t\ttableDataProp.apply(value, (rows) => {\n\t\t\tthis.setRenderProp('data', rows);\n\t\t\tthis.setState('rowKeys', createRowKeys(rows, this.getState('rowKeys')));\n\t\t});\n\t}\n\n\tprotected applyDataFoot(value?: TableDataFootPropType): void {\n\t\ttableDataFootProp.apply(value, (v) => this.setRenderProp('dataFoot', v));\n\t}\n\n\tprotected applyFixedCols(value?: FixedColsPropType): void {\n\t\tfixedColsProp.apply(value, (v) => this.setRenderProp('fixedCols', v));\n\t\tthis.updateStickyColsDisabled();\n\t}\n\n\tprotected applyHasSettingsMenu(value?: HasSettingsMenuPropType): void {\n\t\thasSettingsMenuProp.apply(value, (v) => this.setRenderProp('hasSettingsMenu', v));\n\t}\n\n\tprotected applyHeaders(value?: TableHeaderCellsPropType): void {\n\t\ttableHeadersProp.apply(value, (headers) => this.setRenderProp('headers', withHeaderCellSettings(headers)));\n\t}\n\n\tprotected applyLabel(value?: string): void {\n\t\tlabelWithExpertSlotProp.apply(value, (v) => this.setRenderProp('label', v));\n\t}\n\n\tprotected applyLoading(value?: boolean): void {\n\t\ttableLoadingProp.apply(value, (v) => this.setRenderProp('loading', v));\n\t}\n\n\tprotected applyOn(value?: TableCallbacksPropType): void {\n\t\ttableCallbacksProp.apply(value, (v) => this.setRenderProp('on', v));\n\t}\n\n\tprotected applySelection(value?: TableSelectionPropType): void {\n\t\ttableSelectionProp.apply(value, (v) => this.setRenderProp('selection', v));\n\t\tthis.updateStickyColsDisabled();\n\t}\n\n\tprotected applyVariant(value?: VariantClassNamePropType): void {\n\t\tvariantProp.apply(value, (v) => this.setRenderProp('variant', v));\n\t}\n\n\t/**\n\t * Labels the `<table>` by elements outside the shadow root. Plain `aria-labelledby` IDREFs cannot\n\t * cross that boundary; element references can.\n\t */\n\tprotected syncTableLabel(elements?: HTMLElement[]): void {\n\t\tif (!this.tableElement) return;\n\t\tif ('ariaLabelledByElements' in this.tableElement) {\n\t\t\tif (elements?.length) {\n\t\t\t\tthis.tableElement.ariaLabelledByElements = elements;\n\t\t\t}\n\t\t\tLog.debug([this.tableElement, !!elements?.length, elements, this.tableElement.ariaLabelledByElements]);\n\t\t}\n\t}\n\n\t// --- Listeners ---\n\n\t/** Arrow up/down cycles the focus through the selection checkboxes in document order. */\n\tprotected moveCheckboxFocus(event: KeyboardEvent): void {\n\t\tif (event.key !== 'ArrowUp' && event.key !== 'ArrowDown') {\n\t\t\treturn;\n\t\t}\n\t\tconst checkboxes = Array.from(this.scrollContainerElement?.querySelectorAll<HTMLInputElement>('.kol-table__selection-input--checkbox') ?? []);\n\t\tconst focusedElement = this.scrollContainerElement?.querySelector(':focus') as HTMLInputElement;\n\t\tlet index = checkboxes.indexOf(focusedElement);\n\n\t\tif (index > -1) {\n\t\t\tevent.preventDefault();\n\t\t\tconst offset = event.key === 'ArrowDown' ? 1 : checkboxes.length - 1;\n\t\t\tindex = (index + offset) % checkboxes.length;\n\t\t\tcheckboxes[index].focus();\n\t\t}\n\t}\n\n\tprotected applyChangedHeaderCells(event: CustomEvent<KoliBriTableHeaderCell[][]>): void {\n\t\tconst updatedHeaders = { ...this.getRenderProp('headers'), horizontal: event.detail };\n\t\tthis.setRenderProp('headers', updatedHeaders);\n\t\tthis.setState('settingsChangedCounter', this.getState('settingsChangedCounter') + 1);\n\n\t\tconst onChangeHeaderCells = this.getRenderProp('on')[Callback.onChangeHeaderCells];\n\t\tif (typeof onChangeHeaderCells === 'function') {\n\t\t\tonChangeHeaderCells(event, updatedHeaders);\n\t\t}\n\t}\n\n\t// --- Measurements ---\n\n\t/**\n\t * Covers both axes: a theme may limit the height of the scroll container, so a table can overflow\n\t * vertically without overflowing horizontally. The base styling clips the vertical overflow, so\n\t * that axis only counts once a theme makes it scrollable.\n\t */\n\tprotected updateScrollbarState(): void {\n\t\tif (this.scrollContainerElement) {\n\t\t\tconst { clientHeight, clientWidth, scrollHeight, scrollWidth } = this.scrollContainerElement;\n\t\t\tthis.setState(\n\t\t\t\t'hasScrollbar',\n\t\t\t\tscrollWidth > clientWidth || (scrollHeight > clientHeight && ['auto', 'scroll'].includes(getComputedStyle(this.scrollContainerElement).overflowY)),\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate readonly handleResize = (): void => {\n\t\tthis.updateScrollbarState();\n\t\tclearTimeout(this.resizeDebounceTimeout);\n\t\tthis.resizeDebounceTimeout = setTimeout(() => {\n\t\t\tthis.updateStickyColsDisabled();\n\t\t}, RESIZE_DEBOUNCE_DELAY);\n\t};\n\n\t/**\n\t * Declared widths of the fixed columns plus the measured width of the selection column, which\n\t * is always sticky and sized by CSS.\n\t */\n\tprivate calculateFixedColsWidth(): number {\n\t\tconst [fixedLeft, fixedRight] = this.getRenderProp('fixedCols');\n\t\tconst headers = this.getRenderProp('headers');\n\t\tconst primaryCells = getPrimaryHeaders(headers).cells;\n\t\tconst maxCols = getNumberOfCols(headers.horizontal, this.getRenderProp('data'));\n\t\tlet totalWidth = 0;\n\n\t\tfor (let i = 0; i < fixedLeft && i < primaryCells.length; i++) {\n\t\t\ttotalWidth += primaryCells[i]?.width ?? 0;\n\t\t}\n\t\tfor (let i = maxCols - fixedRight; i < maxCols && i < primaryCells.length; i++) {\n\t\t\ttotalWidth += primaryCells[i]?.width ?? 0;\n\t\t}\n\n\t\tif (this.getRenderProp('selection')) {\n\t\t\tconst selectionCell = this.scrollContainerElement?.querySelector<HTMLElement>('.kol-table__cell--selection');\n\t\t\ttotalWidth += selectionCell?.offsetWidth ?? 0;\n\t\t}\n\n\t\treturn totalWidth;\n\t}\n\n\t/** Fixed columns that would fill the whole container render unfixed, so the rest stays reachable. */\n\tprivate updateStickyColsDisabled(): void {\n\t\tif (!this.scrollContainerElement) {\n\t\t\tthis.setState('stickyColsDisabled', false);\n\t\t\treturn;\n\t\t}\n\t\tconst fixedColsWidth = this.calculateFixedColsWidth();\n\t\tthis.setState('stickyColsDisabled', fixedColsWidth > 0 && fixedColsWidth >= this.scrollContainerElement.clientWidth);\n\t}\n\n\t// --- Callbacks ---\n\n\t/** Reports a changed selection through `onSelectionChange` and the `selectionchange` event. */\n\tprotected emitSelectionChange(event: Event, payload: SelectionChangeEventPayload): void {\n\t\tconst onSelectionChange = this.getRenderProp('on')[Callback.onSelectionChange];\n\t\tif (typeof onSelectionChange === 'function') {\n\t\t\tonSelectionChange(event, payload);\n\t\t}\n\t\tif (this.host) {\n\t\t\tdispatchDomEvent(this.host, KolEvent.selectionChange, payload);\n\t\t}\n\t}\n\n\t/** Reports a clicked sort button through `onSort` and the `sort` event. */\n\tprotected emitSort(event: MouseEvent, payload: SortEventPayload): void {\n\t\tconst onSort = this.getRenderProp('on')[Callback.onSort];\n\t\tif (typeof onSort === 'function' && payload.key) {\n\t\t\tonSort(event, payload);\n\t\t}\n\t\tif (this.host) {\n\t\t\tdispatchDomEvent(this.host, KolEvent.sort, payload);\n\t\t}\n\t}\n\n\tprivate readonly handleSelectionChange = (event: Event, payload: SelectionChangeEventPayload): void => {\n\t\tthis.emitSelectionChange(event, payload);\n\t};\n\n\tprivate readonly handleSort = (event: MouseEvent, payload: SortEventPayload): void => {\n\t\tthis.emitSort(event, payload);\n\t};\n\n\t/**\n\t * Runs a cell's custom `render` function once the cell is in the DOM. Deferred and debounced per\n\t * cell, so repeated renders of the table call it only once.\n\t */\n\tprivate readonly handleRenderCell = (cell: KoliBriTableCell, element?: HTMLElement): void => {\n\t\tif (!element) {\n\t\t\treturn;\n\t\t}\n\t\tclearTimeout(this.cellRenderTimeouts.get(element));\n\t\tthis.cellRenderTimeouts.set(\n\t\t\telement,\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (typeof cell.render === 'function') {\n\t\t\t\t\tconst renderContent = cell.render(element, cell, cell.data, this.getRenderProp('data'));\n\t\t\t\t\tif (typeof renderContent === 'string') {\n\t\t\t\t\t\telement.textContent = renderContent;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}),\n\t\t);\n\t};\n\n\t// --- Refs ---\n\n\tprivate readonly refScrollContainer = (element?: HTMLDivElement): void => {\n\t\tthis.scrollContainerElement = element;\n\t};\n\n\tprivate readonly refTable = (element?: HTMLTableElement): void => {\n\t\tthis.tableElement = element;\n\t\tthis.syncTableLabel(this.getState('externalLabelElements'));\n\t};\n\n\t// --- Render ---\n\n\tprivate readonly getButtonFcProps = (key: string, props: InternalButtonProps, rootAttributes?: ButtonItemRootAttributes): ButtonItemFcProps =>\n\t\tthis.buttonItems.get(key).getFcProps(props, rootAttributes);\n\n\tprivate readonly renderSettings = (horizontalHeaderCells: KoliBriTableHeaderCell[][]): JSX.Element => this.settings.render(horizontalHeaderCells);\n\n\tprivate readonly getLinkFcProps = (key: string, props: EmbeddedLinkProps): LinkFCProps => this.linkItems.get(key).getFcProps(props);\n\n\tprotected renderTableStatelessFC(): JSX.Element {\n\t\tthis.buttonItems.beginRender();\n\t\tthis.linkItems.beginRender();\n\t\tthis.settings.beginRender();\n\t\treturn (\n\t\t\t<TableStatelessFC\n\t\t\t\tdata={this.getRenderProp('data')}\n\t\t\t\tdataFoot={this.getRenderProp('dataFoot')}\n\t\t\t\texternalLabelElements={this.getState('externalLabelElements')}\n\t\t\t\tfixedCols={this.getRenderProp('fixedCols')}\n\t\t\t\tgetButtonFcProps={this.getButtonFcProps}\n\t\t\t\tgetLinkFcProps={this.getLinkFcProps}\n\t\t\t\trenderSettings={this.renderSettings}\n\t\t\t\thandleRenderCell={this.handleRenderCell}\n\t\t\t\thandleSelectionChange={this.handleSelectionChange}\n\t\t\t\thandleSort={this.handleSort}\n\t\t\t\thasScrollbar={this.getState('hasScrollbar')}\n\t\t\t\thasSettingsMenu={this.getRenderProp('hasSettingsMenu')}\n\t\t\t\theaders={this.getRenderProp('headers')}\n\t\t\t\tlabel={this.getRenderProp('label')}\n\t\t\t\tloading={this.getRenderProp('loading')}\n\t\t\t\ton={this.getRenderProp('on')}\n\t\t\t\trefScrollContainer={this.refScrollContainer}\n\t\t\t\trefTable={this.refTable}\n\t\t\t\trowKeys={this.getState('rowKeys')}\n\t\t\t\tselection={this.getRenderProp('selection')}\n\t\t\t\tsettingsChangedCounter={this.getState('settingsChangedCounter')}\n\t\t\t\tstickyColsDisabled={this.getState('stickyColsDisabled')}\n\t\t\t\tvariant={this.getRenderProp('variant')}\n\t\t\t/>\n\t\t);\n\t}\n}\n"],"names":["watchValidator","resolveTargets","Log","createPropDefinition","normalizeArray","normalizeBoolean","createCallbacksPropDefinition","parseJson","labelWithExpertSlotProp","variantProp","bem","h","IconFC","TooltipFC","translate","Fragment","ButtonFC","LinkFC","KolBadgeTag","BemRootNodeFC","classNameFromVariant","SpinFC","DialogFC","CardFC","NOOP","createCtaRef","TooltipBehavior","BaseWebComponent","nonce","createUniqueId","dispatchDomEvent","handleCancelOverlay","KolEvent","unlockScroll","label","level","width","labelProp","levelProp","dialogCallbacksProp","variantDialogProp","widthProp","resolveCardCloseButtonProps","dialogBlockClass","lockScroll","createItemPool","createButtonItem","__rest","index","KolInputCheckboxTag","KolInputNumberTag","AlertFC","forceUpdate","createLinkItem","Callback"],"mappings":"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"}