@oiz/stzh-components 3.2.0-beta1 → 3.2.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 (285) hide show
  1. package/dist/cjs/{app-globals-efe6d21d.js → app-globals-d07dad99.js} +2 -2
  2. package/dist/cjs/{app-globals-efe6d21d.js.map → app-globals-d07dad99.js.map} +1 -1
  3. package/dist/cjs/index.cjs.js.map +1 -1
  4. package/dist/cjs/loader.cjs.js +2 -2
  5. package/dist/cjs/stzh-audio.cjs.entry.js.map +1 -1
  6. package/dist/cjs/stzh-badge_3.cjs.entry.js +3 -3
  7. package/dist/cjs/stzh-badge_3.cjs.entry.js.map +1 -1
  8. package/dist/cjs/stzh-breadcrumb_2.cjs.entry.js.map +1 -1
  9. package/dist/cjs/stzh-card-navigation.cjs.entry.js +6 -4
  10. package/dist/cjs/stzh-card-navigation.cjs.entry.js.map +1 -1
  11. package/dist/cjs/stzh-card-searchresult.cjs.entry.js +3 -1
  12. package/dist/cjs/stzh-card-searchresult.cjs.entry.js.map +1 -1
  13. package/dist/cjs/stzh-card-superteaser.cjs.entry.js +8 -20
  14. package/dist/cjs/stzh-card-superteaser.cjs.entry.js.map +1 -1
  15. package/dist/cjs/stzh-carousel.cjs.entry.js.map +1 -1
  16. package/dist/cjs/stzh-chart.cjs.entry.js +1 -1
  17. package/dist/cjs/stzh-chart.cjs.entry.js.map +1 -1
  18. package/dist/cjs/stzh-clamp.cjs.entry.js.map +1 -1
  19. package/dist/cjs/stzh-components.cjs.js +2 -2
  20. package/dist/cjs/stzh-datalist_2.cjs.entry.js.map +1 -1
  21. package/dist/cjs/stzh-datamessagelist.cjs.entry.js.map +1 -1
  22. package/dist/cjs/stzh-datatable.cjs.entry.js +98 -79
  23. package/dist/cjs/stzh-datatable.cjs.entry.js.map +1 -1
  24. package/dist/cjs/stzh-dialog.cjs.entry.js.map +1 -1
  25. package/dist/cjs/stzh-disturber.cjs.entry.js +1 -1
  26. package/dist/cjs/stzh-disturber.cjs.entry.js.map +1 -1
  27. package/dist/cjs/stzh-ghettobox_3.cjs.entry.js.map +1 -1
  28. package/dist/cjs/stzh-header.cjs.entry.js.map +1 -1
  29. package/dist/cjs/stzh-link.cjs.entry.js.map +1 -1
  30. package/dist/cjs/stzh-pagebottom.cjs.entry.js.map +1 -1
  31. package/dist/cjs/stzh-pagecontent.cjs.entry.js.map +1 -1
  32. package/dist/cjs/stzh-pagetitle-hero.cjs.entry.js.map +1 -1
  33. package/dist/cjs/stzh-pagetitle.cjs.entry.js.map +1 -1
  34. package/dist/cjs/stzh-pi-pagetitle.cjs.entry.js.map +1 -1
  35. package/dist/cjs/stzh-pi-quote.cjs.entry.js.map +1 -1
  36. package/dist/cjs/stzh-progressbar.cjs.entry.js +1 -1
  37. package/dist/cjs/stzh-progressbar.cjs.entry.js.map +1 -1
  38. package/dist/cjs/stzh-search.cjs.entry.js +3 -4
  39. package/dist/cjs/stzh-search.cjs.entry.js.map +1 -1
  40. package/dist/cjs/stzh-sticky-actions.cjs.entry.js.map +1 -1
  41. package/dist/cjs/stzh-sticky.cjs.entry.js.map +1 -1
  42. package/dist/cjs/stzh-table.cjs.entry.js.map +1 -1
  43. package/dist/cjs/stzh-vbz-intro.cjs.entry.js.map +1 -1
  44. package/dist/cjs/stzh-youtube.cjs.entry.js.map +1 -1
  45. package/dist/collection/components/stzh-audio/stzh-audio.js +1 -0
  46. package/dist/collection/components/stzh-audio/stzh-audio.js.map +1 -1
  47. package/dist/collection/components/stzh-badge/stzh-badge.js +1 -1
  48. package/dist/collection/components/stzh-badge/stzh-badge.js.map +1 -1
  49. package/dist/collection/components/stzh-breadcrumb/stzh-breadcrumb.js +1 -1
  50. package/dist/collection/components/stzh-breadcrumb/stzh-breadcrumb.js.map +1 -1
  51. package/dist/collection/components/stzh-button/stzh-button.js +2 -2
  52. package/dist/collection/components/stzh-button/stzh-button.js.map +1 -1
  53. package/dist/collection/components/stzh-card-navigation/stzh-card-navigation.css +5 -0
  54. package/dist/collection/components/stzh-card-navigation/stzh-card-navigation.js +24 -4
  55. package/dist/collection/components/stzh-card-navigation/stzh-card-navigation.js.map +1 -1
  56. package/dist/collection/components/stzh-card-navigation/stzh-card-navigation.stories.js +14 -7
  57. package/dist/collection/components/stzh-card-searchresult/stzh-card-searchresult.css +5 -0
  58. package/dist/collection/components/stzh-card-searchresult/stzh-card-searchresult.js +20 -0
  59. package/dist/collection/components/stzh-card-searchresult/stzh-card-searchresult.js.map +1 -1
  60. package/dist/collection/components/stzh-card-searchresult/stzh-card-searchresult.stories.js +129 -109
  61. package/dist/collection/components/stzh-card-superteaser/stzh-card-superteaser.css +5 -0
  62. package/dist/collection/components/stzh-card-superteaser/stzh-card-superteaser.js +25 -19
  63. package/dist/collection/components/stzh-card-superteaser/stzh-card-superteaser.js.map +1 -1
  64. package/dist/collection/components/stzh-card-superteaser/stzh-card-superteaser.stories.js +116 -98
  65. package/dist/collection/components/stzh-carousel/stzh-carousel.js +1 -1
  66. package/dist/collection/components/stzh-carousel/stzh-carousel.js.map +1 -1
  67. package/dist/collection/components/stzh-chart/stzh-chart.js +1 -1
  68. package/dist/collection/components/stzh-chart/stzh-chart.js.map +1 -1
  69. package/dist/collection/components/stzh-clamp/stzh-clamp.js +1 -1
  70. package/dist/collection/components/stzh-clamp/stzh-clamp.js.map +1 -1
  71. package/dist/collection/components/stzh-datalist/stzh-datalist.js +1 -0
  72. package/dist/collection/components/stzh-datalist/stzh-datalist.js.map +1 -1
  73. package/dist/collection/components/stzh-datamessagelist/stzh-datamessagelist.js +1 -0
  74. package/dist/collection/components/stzh-datamessagelist/stzh-datamessagelist.js.map +1 -1
  75. package/dist/collection/components/stzh-datatable/stzh-datatable.js +100 -80
  76. package/dist/collection/components/stzh-datatable/stzh-datatable.js.map +1 -1
  77. package/dist/collection/components/stzh-datatable/stzh-datatable.stories.js +110 -39
  78. package/dist/collection/components/stzh-dialog/stzh-dialog.js +1 -0
  79. package/dist/collection/components/stzh-dialog/stzh-dialog.js.map +1 -1
  80. package/dist/collection/components/stzh-disturber/stzh-disturber.css +1 -0
  81. package/dist/collection/components/stzh-ghettobox/stzh-ghettobox.js +1 -0
  82. package/dist/collection/components/stzh-ghettobox/stzh-ghettobox.js.map +1 -1
  83. package/dist/collection/components/stzh-header/stzh-header.js +1 -0
  84. package/dist/collection/components/stzh-header/stzh-header.js.map +1 -1
  85. package/dist/collection/components/stzh-link/stzh-link.js +1 -1
  86. package/dist/collection/components/stzh-link/stzh-link.js.map +1 -1
  87. package/dist/collection/components/stzh-pagebottom/stzh-pagebottom.js +1 -0
  88. package/dist/collection/components/stzh-pagebottom/stzh-pagebottom.js.map +1 -1
  89. package/dist/collection/components/stzh-pagecontent/stzh-pagecontent.js +1 -0
  90. package/dist/collection/components/stzh-pagecontent/stzh-pagecontent.js.map +1 -1
  91. package/dist/collection/components/stzh-pagetitle/stzh-pagetitle.js +2 -1
  92. package/dist/collection/components/stzh-pagetitle/stzh-pagetitle.js.map +1 -1
  93. package/dist/collection/components/stzh-pagetitle-hero/stzh-pagetitle-hero.js +1 -0
  94. package/dist/collection/components/stzh-pagetitle-hero/stzh-pagetitle-hero.js.map +1 -1
  95. package/dist/collection/components/stzh-pi-pagetitle/stzh-pi-pagetitle.js +4 -0
  96. package/dist/collection/components/stzh-pi-pagetitle/stzh-pi-pagetitle.js.map +1 -1
  97. package/dist/collection/components/stzh-pi-quote/stzh-pi-quote.js +3 -0
  98. package/dist/collection/components/stzh-pi-quote/stzh-pi-quote.js.map +1 -1
  99. package/dist/collection/components/stzh-progressbar/stzh-progressbar.js +1 -1
  100. package/dist/collection/components/stzh-progressbar/stzh-progressbar.js.map +1 -1
  101. package/dist/collection/components/stzh-search/stzh-search.js +4 -4
  102. package/dist/collection/components/stzh-search/stzh-search.js.map +1 -1
  103. package/dist/collection/components/stzh-sticky/stzh-sticky.js +1 -1
  104. package/dist/collection/components/stzh-sticky/stzh-sticky.js.map +1 -1
  105. package/dist/collection/components/stzh-sticky-actions/stzh-sticky-actions.js +2 -0
  106. package/dist/collection/components/stzh-sticky-actions/stzh-sticky-actions.js.map +1 -1
  107. package/dist/collection/components/stzh-table/stzh-table.js +2 -0
  108. package/dist/collection/components/stzh-table/stzh-table.js.map +1 -1
  109. package/dist/collection/components/stzh-vbz-intro/stzh-vbz-intro.js +3 -0
  110. package/dist/collection/components/stzh-vbz-intro/stzh-vbz-intro.js.map +1 -1
  111. package/dist/collection/components/stzh-youtube/stzh-youtube.js +2 -1
  112. package/dist/collection/components/stzh-youtube/stzh-youtube.js.map +1 -1
  113. package/dist/collection/index.js.map +1 -1
  114. package/dist/components/index.js +1 -1
  115. package/dist/components/index2.js.map +1 -1
  116. package/dist/components/stzh-audio.js.map +1 -1
  117. package/dist/components/stzh-badge2.js +2 -2
  118. package/dist/components/stzh-badge2.js.map +1 -1
  119. package/dist/components/stzh-breadcrumb2.js.map +1 -1
  120. package/dist/components/stzh-button2.js +2 -2
  121. package/dist/components/stzh-button2.js.map +1 -1
  122. package/dist/components/stzh-card-navigation.js +8 -5
  123. package/dist/components/stzh-card-navigation.js.map +1 -1
  124. package/dist/components/stzh-card-searchresult.js +5 -2
  125. package/dist/components/stzh-card-searchresult.js.map +1 -1
  126. package/dist/components/stzh-card-superteaser.js +10 -21
  127. package/dist/components/stzh-card-superteaser.js.map +1 -1
  128. package/dist/components/stzh-carousel2.js.map +1 -1
  129. package/dist/components/stzh-chart.js +2 -2
  130. package/dist/components/stzh-chart.js.map +1 -1
  131. package/dist/components/stzh-clamp2.js.map +1 -1
  132. package/dist/components/stzh-datalist2.js.map +1 -1
  133. package/dist/components/stzh-datamessagelist.js.map +1 -1
  134. package/dist/components/stzh-datatable.js +98 -79
  135. package/dist/components/stzh-datatable.js.map +1 -1
  136. package/dist/components/stzh-dialog2.js.map +1 -1
  137. package/dist/components/stzh-disturber.js +1 -1
  138. package/dist/components/stzh-disturber.js.map +1 -1
  139. package/dist/components/stzh-ghettobox2.js.map +1 -1
  140. package/dist/components/stzh-header.js.map +1 -1
  141. package/dist/components/stzh-link2.js.map +1 -1
  142. package/dist/components/stzh-pagebottom.js.map +1 -1
  143. package/dist/components/stzh-pagecontent.js.map +1 -1
  144. package/dist/components/stzh-pagetitle-hero.js.map +1 -1
  145. package/dist/components/stzh-pagetitle.js.map +1 -1
  146. package/dist/components/stzh-pi-pagetitle.js.map +1 -1
  147. package/dist/components/stzh-pi-quote.js.map +1 -1
  148. package/dist/components/stzh-progressbar.js +2 -2
  149. package/dist/components/stzh-progressbar.js.map +1 -1
  150. package/dist/components/stzh-search.js +3 -4
  151. package/dist/components/stzh-search.js.map +1 -1
  152. package/dist/components/stzh-sticky-actions.js.map +1 -1
  153. package/dist/components/stzh-sticky2.js.map +1 -1
  154. package/dist/components/stzh-table.js.map +1 -1
  155. package/dist/components/stzh-vbz-intro.js.map +1 -1
  156. package/dist/components/stzh-youtube.js.map +1 -1
  157. package/dist/esm/{app-globals-93678901.js → app-globals-b0bdc495.js} +2 -2
  158. package/dist/esm/{app-globals-93678901.js.map → app-globals-b0bdc495.js.map} +1 -1
  159. package/dist/esm/index.js.map +1 -1
  160. package/dist/esm/loader.js +2 -2
  161. package/dist/esm/stzh-audio.entry.js.map +1 -1
  162. package/dist/esm/stzh-badge_3.entry.js +3 -3
  163. package/dist/esm/stzh-badge_3.entry.js.map +1 -1
  164. package/dist/esm/stzh-breadcrumb_2.entry.js.map +1 -1
  165. package/dist/esm/stzh-card-navigation.entry.js +6 -4
  166. package/dist/esm/stzh-card-navigation.entry.js.map +1 -1
  167. package/dist/esm/stzh-card-searchresult.entry.js +3 -1
  168. package/dist/esm/stzh-card-searchresult.entry.js.map +1 -1
  169. package/dist/esm/stzh-card-superteaser.entry.js +8 -20
  170. package/dist/esm/stzh-card-superteaser.entry.js.map +1 -1
  171. package/dist/esm/stzh-carousel.entry.js.map +1 -1
  172. package/dist/esm/stzh-chart.entry.js +1 -1
  173. package/dist/esm/stzh-chart.entry.js.map +1 -1
  174. package/dist/esm/stzh-clamp.entry.js.map +1 -1
  175. package/dist/esm/stzh-components.js +2 -2
  176. package/dist/esm/stzh-datalist_2.entry.js.map +1 -1
  177. package/dist/esm/stzh-datamessagelist.entry.js.map +1 -1
  178. package/dist/esm/stzh-datatable.entry.js +98 -79
  179. package/dist/esm/stzh-datatable.entry.js.map +1 -1
  180. package/dist/esm/stzh-dialog.entry.js.map +1 -1
  181. package/dist/esm/stzh-disturber.entry.js +1 -1
  182. package/dist/esm/stzh-disturber.entry.js.map +1 -1
  183. package/dist/esm/stzh-ghettobox_3.entry.js.map +1 -1
  184. package/dist/esm/stzh-header.entry.js.map +1 -1
  185. package/dist/esm/stzh-link.entry.js.map +1 -1
  186. package/dist/esm/stzh-pagebottom.entry.js.map +1 -1
  187. package/dist/esm/stzh-pagecontent.entry.js.map +1 -1
  188. package/dist/esm/stzh-pagetitle-hero.entry.js.map +1 -1
  189. package/dist/esm/stzh-pagetitle.entry.js.map +1 -1
  190. package/dist/esm/stzh-pi-pagetitle.entry.js.map +1 -1
  191. package/dist/esm/stzh-pi-quote.entry.js.map +1 -1
  192. package/dist/esm/stzh-progressbar.entry.js +1 -1
  193. package/dist/esm/stzh-progressbar.entry.js.map +1 -1
  194. package/dist/esm/stzh-search.entry.js +3 -4
  195. package/dist/esm/stzh-search.entry.js.map +1 -1
  196. package/dist/esm/stzh-sticky-actions.entry.js.map +1 -1
  197. package/dist/esm/stzh-sticky.entry.js.map +1 -1
  198. package/dist/esm/stzh-table.entry.js.map +1 -1
  199. package/dist/esm/stzh-vbz-intro.entry.js.map +1 -1
  200. package/dist/esm/stzh-youtube.entry.js.map +1 -1
  201. package/dist/stzh-components/index.esm.js.map +1 -1
  202. package/dist/stzh-components/p-069e181f.entry.js.map +1 -1
  203. package/dist/stzh-components/p-09480ffe.entry.js.map +1 -1
  204. package/dist/stzh-components/p-1c75b53f.entry.js +2 -0
  205. package/dist/stzh-components/p-1c75b53f.entry.js.map +1 -0
  206. package/dist/stzh-components/p-29c1cb5c.entry.js.map +1 -1
  207. package/dist/stzh-components/p-30a522e0.entry.js.map +1 -1
  208. package/dist/stzh-components/p-32cb5b94.entry.js.map +1 -1
  209. package/dist/stzh-components/p-3cc6f193.entry.js.map +1 -1
  210. package/dist/stzh-components/p-429d2a9b.entry.js.map +1 -1
  211. package/dist/stzh-components/{p-30a7c058.entry.js → p-4b0cb255.entry.js} +2 -2
  212. package/dist/stzh-components/p-4b0cb255.entry.js.map +1 -0
  213. package/dist/stzh-components/p-513b7fcd.entry.js +2 -0
  214. package/dist/stzh-components/p-513b7fcd.entry.js.map +1 -0
  215. package/dist/stzh-components/p-6e49f741.js +2 -0
  216. package/dist/stzh-components/{p-2d405b51.js.map → p-6e49f741.js.map} +1 -1
  217. package/dist/stzh-components/{p-3912a256.entry.js → p-8273e37d.entry.js} +2 -2
  218. package/dist/stzh-components/p-8273e37d.entry.js.map +1 -0
  219. package/dist/stzh-components/p-909f7fc0.entry.js.map +1 -1
  220. package/dist/stzh-components/p-94947ab0.entry.js.map +1 -1
  221. package/dist/stzh-components/{p-d9fa718c.entry.js → p-995bee31.entry.js} +2 -2
  222. package/dist/stzh-components/p-995bee31.entry.js.map +1 -0
  223. package/dist/stzh-components/p-9c1b3929.entry.js.map +1 -1
  224. package/dist/stzh-components/p-aa3e4203.entry.js.map +1 -1
  225. package/dist/stzh-components/p-b273f95c.entry.js.map +1 -1
  226. package/dist/stzh-components/p-b397337c.entry.js.map +1 -1
  227. package/dist/stzh-components/p-b41d255f.entry.js.map +1 -1
  228. package/dist/stzh-components/{p-2ba166dd.entry.js → p-b5c781bc.entry.js} +2 -2
  229. package/dist/stzh-components/{p-2ba166dd.entry.js.map → p-b5c781bc.entry.js.map} +1 -1
  230. package/dist/stzh-components/{p-ab2aee99.entry.js → p-b87781f5.entry.js} +2 -2
  231. package/dist/stzh-components/{p-ab2aee99.entry.js.map → p-b87781f5.entry.js.map} +1 -1
  232. package/dist/stzh-components/p-ba716237.entry.js.map +1 -1
  233. package/dist/stzh-components/p-bdff55a6.entry.js.map +1 -1
  234. package/dist/stzh-components/p-bfe8d5cc.entry.js +2 -0
  235. package/dist/stzh-components/p-bfe8d5cc.entry.js.map +1 -0
  236. package/dist/stzh-components/p-cb569e91.entry.js.map +1 -1
  237. package/dist/stzh-components/p-d0ecdd5b.entry.js.map +1 -1
  238. package/dist/stzh-components/p-d48ecb2f.entry.js.map +1 -1
  239. package/dist/stzh-components/p-d7697cf8.entry.js.map +1 -1
  240. package/dist/stzh-components/p-dcfe93da.entry.js.map +1 -1
  241. package/dist/stzh-components/{p-8b04698a.entry.js → p-f18978b5.entry.js} +2 -2
  242. package/dist/stzh-components/p-f18978b5.entry.js.map +1 -0
  243. package/dist/stzh-components/stzh-components.esm.js +1 -1
  244. package/dist/stzh-components/stzh-components.esm.js.map +1 -1
  245. package/dist/types/components/stzh-audio/stzh-audio.d.ts +1 -0
  246. package/dist/types/components/stzh-breadcrumb/stzh-breadcrumb.d.ts +1 -1
  247. package/dist/types/components/stzh-card-navigation/stzh-card-navigation.d.ts +2 -0
  248. package/dist/types/components/stzh-card-searchresult/stzh-card-searchresult.d.ts +2 -0
  249. package/dist/types/components/stzh-card-superteaser/stzh-card-superteaser.d.ts +3 -1
  250. package/dist/types/components/stzh-carousel/stzh-carousel.d.ts +1 -1
  251. package/dist/types/components/stzh-clamp/stzh-clamp.d.ts +1 -1
  252. package/dist/types/components/stzh-datalist/stzh-datalist.d.ts +1 -0
  253. package/dist/types/components/stzh-datamessagelist/stzh-datamessagelist.d.ts +1 -0
  254. package/dist/types/components/stzh-datatable/stzh-datatable.d.ts +2 -1
  255. package/dist/types/components/stzh-dialog/stzh-dialog.d.ts +1 -0
  256. package/dist/types/components/stzh-ghettobox/stzh-ghettobox.d.ts +1 -0
  257. package/dist/types/components/stzh-header/stzh-header.d.ts +1 -0
  258. package/dist/types/components/stzh-link/stzh-link.d.ts +1 -1
  259. package/dist/types/components/stzh-pagebottom/stzh-pagebottom.d.ts +1 -0
  260. package/dist/types/components/stzh-pagecontent/stzh-pagecontent.d.ts +1 -0
  261. package/dist/types/components/stzh-pagetitle/stzh-pagetitle.d.ts +2 -1
  262. package/dist/types/components/stzh-pagetitle-hero/stzh-pagetitle-hero.d.ts +1 -0
  263. package/dist/types/components/stzh-pi-pagetitle/stzh-pi-pagetitle.d.ts +4 -0
  264. package/dist/types/components/stzh-pi-quote/stzh-pi-quote.d.ts +3 -0
  265. package/dist/types/components/stzh-search/stzh-search.d.ts +1 -0
  266. package/dist/types/components/stzh-sticky/stzh-sticky.d.ts +1 -1
  267. package/dist/types/components/stzh-sticky-actions/stzh-sticky-actions.d.ts +2 -0
  268. package/dist/types/components/stzh-table/stzh-table.d.ts +2 -0
  269. package/dist/types/components/stzh-vbz-intro/stzh-vbz-intro.d.ts +3 -0
  270. package/dist/types/components/stzh-youtube/stzh-youtube.d.ts +2 -1
  271. package/dist/types/components.d.ts +26 -2
  272. package/dist/types/index.d.ts +4 -0
  273. package/dist/vscode-data.json +13 -1
  274. package/package.json +1 -1
  275. package/dist/stzh-components/p-2d405b51.js +0 -2
  276. package/dist/stzh-components/p-30a7c058.entry.js.map +0 -1
  277. package/dist/stzh-components/p-3912a256.entry.js.map +0 -1
  278. package/dist/stzh-components/p-39acdb68.entry.js +0 -2
  279. package/dist/stzh-components/p-39acdb68.entry.js.map +0 -1
  280. package/dist/stzh-components/p-8b04698a.entry.js.map +0 -1
  281. package/dist/stzh-components/p-acef653a.entry.js +0 -2
  282. package/dist/stzh-components/p-acef653a.entry.js.map +0 -1
  283. package/dist/stzh-components/p-c169f243.entry.js +0 -2
  284. package/dist/stzh-components/p-c169f243.entry.js.map +0 -1
  285. package/dist/stzh-components/p-d9fa718c.entry.js.map +0 -1
@@ -1,27 +1,28 @@
1
- import { Host, h, } from "@stencil/core";
1
+ import { h, Host } from "@stencil/core";
2
2
  import { Document } from "flexsearch/dist/flexsearch.bundle.min.js";
3
3
  import { parse } from "papaparse";
4
4
  import { hasSlot } from "../../utils/utils";
5
5
  /**
6
+ * @slot heading - Slot for heading element
6
7
  * @slot action-button - Slot for action `stzh-button` element
7
8
  */
8
9
  export class StzhDatatable {
9
10
  constructor() {
10
11
  this.handleSortByDropdownChange = async (event) => {
11
12
  const target = event.target;
12
- const sortBy = await target.getValue();
13
+ const sortBy = (await target.getValue());
13
14
  this.sortBy = sortBy;
14
15
  };
15
16
  this.handleSortDirectionDropdownChange = async (event) => {
16
17
  const target = event.target;
17
- const sortDirection = await target.getValue();
18
+ const sortDirection = (await target.getValue());
18
19
  this.sortDirection = sortDirection;
19
20
  };
20
21
  this.handleRowClick = (event, row) => {
21
22
  this.stzhRowClick.emit({
22
23
  component: "stzh-datatable",
23
24
  row,
24
- originalEvent: event
25
+ originalEvent: event,
25
26
  });
26
27
  };
27
28
  this.handleCellClick = (event, row, column, cellIndex, rowIndex) => {
@@ -31,14 +32,14 @@ export class StzhDatatable {
31
32
  column,
32
33
  cellIndex,
33
34
  rowIndex,
34
- originalEvent: event
35
+ originalEvent: event,
35
36
  });
36
37
  };
37
38
  this.handleSortClick = (event, column) => {
38
39
  this.stzhSortClick.emit({
39
40
  component: "stzh-datatable",
40
41
  column,
41
- originalEvent: event
42
+ originalEvent: event,
42
43
  });
43
44
  this.toggleSort(column.key);
44
45
  };
@@ -63,14 +64,12 @@ export class StzhDatatable {
63
64
  cells.forEach((cell, index) => {
64
65
  const offsetLeft = cell.offsetLeft;
65
66
  const offsetRight = offsetLeft + cell.offsetWidth;
66
- if (this.hasScrollLeft
67
- && this._columns[index].fixed === "left"
68
- && Math.ceil(wrapperScrollLeft) >= offsetLeft) {
67
+ if (this.hasScrollLeft && this._columns[index].fixed === "left" && Math.ceil(wrapperScrollLeft) >= offsetLeft) {
69
68
  this.cellsStickyLeft.push(index);
70
69
  }
71
- if (this.hasScrollRight
72
- && this._columns[index].fixed === "right"
73
- && Math.ceil(wrapperScrollLeft) + wrapperClientWidth <= offsetRight) {
70
+ if (this.hasScrollRight &&
71
+ this._columns[index].fixed === "right" &&
72
+ Math.ceil(wrapperScrollLeft) + wrapperClientWidth <= offsetRight) {
74
73
  this.cellsStickyRight.push(index);
75
74
  }
76
75
  });
@@ -139,7 +138,7 @@ export class StzhDatatable {
139
138
  const csvData = await response.text();
140
139
  const { columns, rows } = await this.parseCsvToJson(csvData);
141
140
  if (this.csvHeader) {
142
- this.columns = columns.map((column) => {
141
+ this.columns = columns.map(column => {
143
142
  var _a;
144
143
  return (Object.assign(Object.assign({}, column), (((_a = this._columns) === null || _a === void 0 ? void 0 : _a.find(({ key }) => key === column.key)) || {})));
145
144
  });
@@ -161,7 +160,7 @@ export class StzhDatatable {
161
160
  const row = {};
162
161
  function transformRowCell(cellData) {
163
162
  const baseCellData = {
164
- value: ""
163
+ value: "",
165
164
  };
166
165
  if (typeof cellData === "object") {
167
166
  return Object.assign(Object.assign({}, baseCellData), cellData);
@@ -195,14 +194,14 @@ export class StzhDatatable {
195
194
  this.stzhSortByChange.emit({
196
195
  component: "stzh-datatable",
197
196
  value,
198
- oldValue
197
+ oldValue,
199
198
  });
200
199
  }
201
200
  sortDirectionWatcher(value, oldValue) {
202
201
  this.stzhSortDirectionChange.emit({
203
202
  component: "stzh-datatable",
204
203
  value,
205
- oldValue
204
+ oldValue,
206
205
  });
207
206
  }
208
207
  async parseCsvToJson(csvData) {
@@ -210,23 +209,23 @@ export class StzhDatatable {
210
209
  parse(csvData, {
211
210
  header: this.csvHeader,
212
211
  dynamicTyping: this.csvDynamicTyping,
213
- complete: (result) => {
214
- const normalizedData = result.data.map((row) => {
212
+ complete: result => {
213
+ const normalizedData = result.data.map(row => {
215
214
  const normalizedRow = {};
216
- Object.keys(row).forEach((key) => {
215
+ Object.keys(row).forEach(key => {
217
216
  normalizedRow[key.toLowerCase()] = row[key];
218
217
  });
219
218
  return normalizedRow;
220
219
  });
221
220
  resolve({
222
- columns: Object.keys(result.data[0]).map((key) => ({
221
+ columns: Object.keys(result.data[0]).map(key => ({
223
222
  key: key.toLowerCase(),
224
223
  text: key,
225
224
  })),
226
225
  rows: normalizedData,
227
226
  });
228
227
  },
229
- error: (error) => {
228
+ error: error => {
230
229
  reject(error);
231
230
  },
232
231
  });
@@ -237,26 +236,25 @@ export class StzhDatatable {
237
236
  component: "stzh-datatable",
238
237
  column,
239
238
  index,
240
- originalEvent: event
239
+ originalEvent: event,
241
240
  });
242
241
  }
243
242
  buildSearchIndex() {
244
- if (!this._rows || this._rows.length === 0
245
- || !this._columns || this._columns.length === 0) {
243
+ if (!this._rows || this._rows.length === 0 || !this._columns || this._columns.length === 0) {
246
244
  return;
247
245
  }
248
246
  this.searchIndex = new Document({
249
247
  tokenize: "forward",
250
248
  matcher: {
251
- '[äà]': 'a',
252
- '[öó]': 'o',
253
- '[üûúù]': 'u',
254
- '[éè]': 'e'
249
+ "[äà]": "a",
250
+ "[öó]": "o",
251
+ "[üûúù]": "u",
252
+ "[éè]": "e",
255
253
  },
256
254
  document: {
257
255
  id: this.idField,
258
- index: this._columns.map(column => column.key)
259
- }
256
+ index: this._columns.map(column => column.key),
257
+ },
260
258
  });
261
259
  this._rows.forEach(row => {
262
260
  const rowData = {};
@@ -281,15 +279,14 @@ export class StzhDatatable {
281
279
  this._rowsFiltered = [];
282
280
  if (this.query) {
283
281
  let resultIds = [];
284
- this.searchIndex.search(this.query).forEach((result) => {
282
+ this.searchIndex.search(this.query).forEach(result => {
285
283
  resultIds = [...resultIds, ...result.result];
286
284
  });
287
285
  resultIds = resultIds.filter(function (item, pos) {
288
286
  return resultIds.indexOf(item) === pos;
289
287
  });
290
- this._rows.forEach((row) => {
291
- if (resultIds.includes(row[this.idField].value)
292
- || resultIds.includes(row[this.idField].value.toString())) {
288
+ this._rows.forEach(row => {
289
+ if (resultIds.includes(row[this.idField].value) || resultIds.includes(row[this.idField].value.toString())) {
293
290
  this._rowsFiltered.push(row);
294
291
  }
295
292
  });
@@ -298,7 +295,7 @@ export class StzhDatatable {
298
295
  this._rowsFiltered = [...this._rows];
299
296
  }
300
297
  if (this.sortBy) {
301
- const columnConfig = this._columns.find((column) => column.key === this.sortBy);
298
+ const columnConfig = this._columns.find(column => column.key === this.sortBy);
302
299
  let column = this.sortBy;
303
300
  let type = null;
304
301
  if (typeof columnConfig.sort === "object") {
@@ -355,14 +352,14 @@ export class StzhDatatable {
355
352
  "has-list": this.showList,
356
353
  "has-heading": headingSlotUsed,
357
354
  "has-action-or-search": actionButtonSlotUsed || !this.hideSearch,
358
- "has-header": headingSlotUsed || actionButtonSlotUsed || !this.hideSearch
355
+ "has-header": headingSlotUsed || actionButtonSlotUsed || !this.hideSearch,
359
356
  };
360
357
  const totalPages = Math.ceil(this._rowsFiltered.length / this.pageSize);
361
- const firstHeaderColumn = this._columns.find((column) => column.isHeader);
358
+ const firstHeaderColumn = this._columns.find(column => column.isHeader);
362
359
  const sortByOptions = [
363
360
  {
364
361
  text: this.localization.sortByDefaultOption,
365
- value: ''
362
+ value: "",
366
363
  },
367
364
  ...this._columns
368
365
  .filter(column => !!column.sort)
@@ -372,17 +369,17 @@ export class StzhDatatable {
372
369
  value: column.key,
373
370
  text: (_a = this.localization.sortByOption) === null || _a === void 0 ? void 0 : _a.replace(/\{column\}/gi, column.text),
374
371
  });
375
- })
372
+ }),
376
373
  ];
377
374
  const sortDirectionOptions = [
378
375
  {
379
- value: 'asc',
376
+ value: "asc",
380
377
  text: (_a = this.localization.sortDirectionOption) === null || _a === void 0 ? void 0 : _a.replace(/\{direction\}/gi, this.localization.asc),
381
378
  },
382
379
  {
383
- value: 'desc',
380
+ value: "desc",
384
381
  text: (_b = this.localization.sortDirectionOption) === null || _b === void 0 ? void 0 : _b.replace(/\{direction\}/gi, this.localization.desc),
385
- }
382
+ },
386
383
  ];
387
384
  const getCellClasses = (column, row, index) => {
388
385
  var _a, _b, _c, _d, _e;
@@ -397,48 +394,71 @@ export class StzhDatatable {
397
394
  "has-sorted-asc": column.key === this.sortBy && this.sortDirection === "asc",
398
395
  "has-sorted-desc": column.key === this.sortBy && this.sortDirection === "desc",
399
396
  [`align-${((_b = row[column.key]) === null || _b === void 0 ? void 0 : _b.align) || column.align}`]: !!((_c = row[column.key]) === null || _c === void 0 ? void 0 : _c.align) || !!column.align,
400
- [`valign-${((_d = row[column.key]) === null || _d === void 0 ? void 0 : _d.valign) || column.valign}`]: !!((_e = row[column.key]) === null || _e === void 0 ? void 0 : _e.valign) || !!column.valign
397
+ [`valign-${((_d = row[column.key]) === null || _d === void 0 ? void 0 : _d.valign) || column.valign}`]: !!((_e = row[column.key]) === null || _e === void 0 ? void 0 : _e.valign) || !!column.valign,
401
398
  };
402
399
  };
403
- return (h(Host, null, h("div", { class: classes }, h("div", { class: "stzh-datatable__header" }, h("div", { class: "stzh-datatable__heading" }, h("slot", { name: "heading" })), h("div", { class: "stzh-datatable__sub-header" }, !this.hideSearch &&
404
- h("stzh-input", { ref: (el) => (this.input = el), class: "stzh-datatable__search", size: "small", name: "stzh-datatable-search", onStzhChange: this.onInputChange, hideOptional: true, label: this.localization.searchLabel, type: "search" }), h("div", { class: "stzh-datatable__action-button" }, h("slot", { name: "action-button" })))), h("div", { class: "stzh-datatable__outer-wrapper" }, h("div", { ref: (el) => (this.tableWrapper = el), class: "stzh-datatable__wrapper", onScroll: this.handleScroll }, h("table", { class: {
400
+ return (h(Host, null, h("div", { class: classes }, h("div", { class: "stzh-datatable__header" }, h("div", { class: "stzh-datatable__heading" }, h("slot", { name: "heading" })), h("div", { class: "stzh-datatable__sub-header" }, !this.hideSearch && (h("stzh-input", { ref: el => (this.input = el), class: "stzh-datatable__search", size: "small", name: "stzh-datatable-search", onStzhChange: this.onInputChange, hideOptional: true, label: this.localization.searchLabel, type: "search" })), h("div", { class: "stzh-datatable__action-button" }, h("slot", { name: "action-button" })))), h("div", { class: "stzh-datatable__outer-wrapper" }, h("div", { ref: el => (this.tableWrapper = el), class: "stzh-datatable__wrapper", onScroll: this.handleScroll }, h("table", { class: {
405
401
  "stzh-datatable__table": true,
406
402
  "has-layout-fixed": this.tableLayout === "fixed",
407
- } }, !this.hideColumnHeadings &&
408
- h("thead", { class: "stzh-datatable__thead" }, h("tr", { class: "stzh-datatable__row stzh-datatable__row--head" }, this._columns.map((column, index) => h("th", { onClick: (event) => this.handleHeadingCellClick(event, column, index), style: column.style, class: {
409
- "stzh-datatable__cell stzh-datatable__cell--head": true,
410
- "is-sticky-left": column.fixed === "left",
411
- "is-sticky-right": column.fixed === "right",
412
- "is-sortable": !!column.sort,
413
- "has-sticked": this.cellsStickyLeft.indexOf(index) > -1 || this.cellsStickyRight.indexOf(index) > -1,
414
- "has-sorted": column.key === this.sortBy,
415
- "has-sorted-asc": column.key === this.sortBy && this.sortDirection === "asc",
416
- "has-sorted-desc": column.key === this.sortBy && this.sortDirection === "desc",
417
- [`align-${column.align}`]: !!column.align,
418
- [`valign-${column.valign}`]: !!column.valign
419
- } }, !column.hideColumnHeading &&
420
- (column.sort ?
421
- h("button", { class: "stzh-datatable__sort-button", type: "button", onClick: (event) => this.handleSortClick(event, column), "s-object-id": column.analyticsId || `${column.text} ${this.localization.columnSort}` }, h("span", null, column.text), h("stzh-icon", { name: "arrow-up", class: "stzh-datatable__sort-icon", a11yTitle: this.localization.columnSort }))
422
- :
423
- h("span", null, column.text)))))), h("tbody", { class: "stzh-datatable__tbody" }, this._rowsShown.map((row, rowIndex) => h("tr", { class: "stzh-datatable__row stzh-datatable__row--body", onClick: (event) => this.handleRowClick(event, row) }, this._columns.map((column, index) => {
424
- var _a;
425
- return (!!((_a = row[column.key]) === null || _a === void 0 ? void 0 : _a.isHeader) || !!column.isHeader)
426
- ?
427
- h("th", { id: row[column.key].id, onClick: (event) => this.handleCellClick(event, row, column, index, rowIndex), innerHTML: row[column.key].value.toString() || "", style: column.style, class: getCellClasses(column, row, index) })
428
- :
429
- h("td", { id: row[column.key].id, onClick: (event) => this.handleCellClick(event, row, column, index, rowIndex), innerHTML: row[column.key].value.toString() || "", style: column.style, class: getCellClasses(column, row, index) });
430
- }))))))), this.showList &&
431
- h("div", { class: "stzh-datatable__list-wrapper" }, sortByOptions.length > 1 &&
432
- h("div", { class: "stzh-datatable__list-sort-wrapper" }, h("stzh-dropdown", { inline: true, "no-search": true, class: "stzh-datatable__list-sort-by-dropdown", variant: "plain", size: "small", items: [this.sortBy], options: sortByOptions, onStzhChange: this.handleSortByDropdownChange }), h("stzh-dropdown", { disabled: this.sortBy === '', inline: true, "no-search": true, class: "stzh-datatable__list-sort-direction-dropdown", variant: "plain", size: "small", items: [this.sortDirection], options: sortDirectionOptions, onStzhChange: this.handleSortDirectionDropdownChange })), h("stzh-accordion", { variant: "table" }, this._rowsShown.map((row, index) => {
433
- var _a, _b, _c, _d;
434
- return h("stzh-accordion-item", { heading: ((_b = (_a = row[this.rowHeaderField]) === null || _a === void 0 ? void 0 : _a.value) === null || _b === void 0 ? void 0 : _b.toString())
435
- || ((_d = (_c = row[firstHeaderColumn === null || firstHeaderColumn === void 0 ? void 0 : firstHeaderColumn.key]) === null || _c === void 0 ? void 0 : _c.value) === null || _d === void 0 ? void 0 : _d.toString())
436
- || this.localization.defaultListRowHeading.replace(/\{n\}/ig, (index + 1).toString()) }, h("stzh-datalist", { variant: "table", columnsMedium: 2 }, this._columns.map((column) => {
437
- var _a, _b;
438
- return h("stzh-datalist-item", { label: column.text, value: ((_b = (_a = row[column.key]) === null || _a === void 0 ? void 0 : _a.value) === null || _b === void 0 ? void 0 : _b.toString()) || "" });
439
- })));
440
- }))), this.pageSize !== null && totalPages > 1 &&
441
- h("div", { class: "stzh-datatable__pagination-wrapper" }, h("stzh-pagination", { value: this.page, total: totalPages, onStzhChange: this.onPaginationChange })))));
403
+ } }, !this.hideColumnHeadings && (h("thead", { class: "stzh-datatable__thead" }, h("tr", { class: "stzh-datatable__row stzh-datatable__row--head" }, (() => {
404
+ let colspanOffset = 0;
405
+ return this._columns.map((column, index) => {
406
+ if (colspanOffset > 0) {
407
+ colspanOffset--;
408
+ return null;
409
+ }
410
+ const colspan = column.colspan || 1;
411
+ if (colspan > 1) {
412
+ colspanOffset = colspan - 1;
413
+ }
414
+ return (h("th", Object.assign({ onClick: event => this.handleHeadingCellClick(event, column, index), style: column.style, class: {
415
+ "stzh-datatable__cell stzh-datatable__cell--head": true,
416
+ "is-sticky-left": column.fixed === "left",
417
+ "is-sticky-right": column.fixed === "right",
418
+ "is-sortable": !!column.sort,
419
+ "has-sticked": this.cellsStickyLeft.indexOf(index) > -1 || this.cellsStickyRight.indexOf(index) > -1,
420
+ "has-sorted": column.key === this.sortBy,
421
+ "has-sorted-asc": column.key === this.sortBy && this.sortDirection === "asc",
422
+ "has-sorted-desc": column.key === this.sortBy && this.sortDirection === "desc",
423
+ [`align-${column.align}`]: !!column.align,
424
+ [`valign-${column.valign}`]: !!column.valign,
425
+ } }, (colspan > 1 ? { colspan } : {}), (column.rowspan ? { rowspan: column.rowspan } : {})), !column.hideColumnHeading &&
426
+ (column.sort ? (h("button", { class: "stzh-datatable__sort-button", type: "button", onClick: event => this.handleSortClick(event, column), "s-object-id": column.analyticsId || `${column.text} ${this.localization.columnSort}` }, h("span", null, column.text), h("stzh-icon", { name: "arrow-up", class: "stzh-datatable__sort-icon", a11yTitle: this.localization.columnSort }))) : (h("span", null, column.text)))));
427
+ });
428
+ })()))), h("tbody", { class: "stzh-datatable__tbody" }, (() => {
429
+ const rowspanOffsets = [];
430
+ return this._rowsShown.map((row, rowIndex) => (h("tr", { class: "stzh-datatable__row stzh-datatable__row--body", onClick: event => this.handleRowClick(event, row) }, (() => {
431
+ let colspanOffset = 0;
432
+ return this._columns.map((column, index) => {
433
+ if (rowspanOffsets[index]) {
434
+ rowspanOffsets[index]--;
435
+ return null;
436
+ }
437
+ if (colspanOffset > 0) {
438
+ colspanOffset--;
439
+ return null;
440
+ }
441
+ const cell = row[column.key];
442
+ const colspan = (cell === null || cell === void 0 ? void 0 : cell.colspan) || 1;
443
+ const rowspan = (cell === null || cell === void 0 ? void 0 : cell.rowspan) || 1;
444
+ if (colspan > 1) {
445
+ colspanOffset = colspan - 1;
446
+ }
447
+ if (rowspan > 1) {
448
+ rowspanOffsets[index] = rowspan - 1;
449
+ }
450
+ return (cell === null || cell === void 0 ? void 0 : cell.isHeader) || column.isHeader ? (h("th", Object.assign({ id: cell.id, onClick: event => this.handleCellClick(event, row, column, index, rowIndex), innerHTML: cell.value.toString() || "", style: column.style }, (colspan > 1 ? { colspan } : {}), (rowspan > 1 ? { rowspan } : {}), { class: getCellClasses(column, row, index) }))) : (h("td", Object.assign({ id: cell.id, onClick: event => this.handleCellClick(event, row, column, index, rowIndex), innerHTML: cell.value.toString() || "", style: column.style }, (colspan > 1 ? { colspan } : {}), (rowspan > 1 ? { rowspan } : {}), { class: getCellClasses(column, row, index) })));
451
+ });
452
+ })())));
453
+ })())))), this.showList && (h("div", { class: "stzh-datatable__list-wrapper" }, sortByOptions.length > 1 && (h("div", { class: "stzh-datatable__list-sort-wrapper" }, h("stzh-dropdown", { inline: true, "no-search": true, class: "stzh-datatable__list-sort-by-dropdown", variant: "plain", size: "small", items: [this.sortBy], options: sortByOptions, onStzhChange: this.handleSortByDropdownChange }), h("stzh-dropdown", { disabled: this.sortBy === "", inline: true, "no-search": true, class: "stzh-datatable__list-sort-direction-dropdown", variant: "plain", size: "small", items: [this.sortDirection], options: sortDirectionOptions, onStzhChange: this.handleSortDirectionDropdownChange }))), h("stzh-accordion", { variant: "table" }, this._rowsShown.map((row, index) => {
454
+ var _a, _b, _c, _d;
455
+ return (h("stzh-accordion-item", { heading: ((_b = (_a = row[this.rowHeaderField]) === null || _a === void 0 ? void 0 : _a.value) === null || _b === void 0 ? void 0 : _b.toString()) ||
456
+ ((_d = (_c = row[firstHeaderColumn === null || firstHeaderColumn === void 0 ? void 0 : firstHeaderColumn.key]) === null || _c === void 0 ? void 0 : _c.value) === null || _d === void 0 ? void 0 : _d.toString()) ||
457
+ this.localization.defaultListRowHeading.replace(/\{n\}/gi, (index + 1).toString()) }, h("stzh-datalist", { variant: "table", columnsMedium: 2 }, this._columns.map(column => {
458
+ var _a, _b;
459
+ return (h("stzh-datalist-item", { label: column.text, value: ((_b = (_a = row[column.key]) === null || _a === void 0 ? void 0 : _a.value) === null || _b === void 0 ? void 0 : _b.toString()) || "" }));
460
+ }))));
461
+ })))), this.pageSize !== null && totalPages > 1 && (h("div", { class: "stzh-datatable__pagination-wrapper" }, h("stzh-pagination", { value: this.page, total: totalPages, onStzhChange: this.onPaginationChange }))))));
442
462
  }
443
463
  static get is() { return "stzh-datatable"; }
444
464
  static get originalStyleUrls() {
@@ -1 +1 @@
1
- {"version":3,"file":"stzh-datatable.js","sourceRoot":"","sources":["../../../../src/components/stzh-datatable/stzh-datatable.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,IAAI,EACJ,CAAC,EACD,OAAO,EACP,IAAI,EACJ,KAAK,EACL,MAAM,EACN,KAAK,EACL,KAAK,GAEN,MAAM,eAAe,CAAC;AAiBvB,OAAO,EAAE,QAAQ,EAAE,MAAM,0CAA0C,CAAC;AACpE,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAGlC,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C;;GAEG;AAKH,MAAM,OAAO,aAAa;;IA6PhB,+BAA0B,GAAG,KAAK,EAAE,KAA2C,EAAE,EAAE;MACzF,MAAM,MAAM,GAA4B,KAAK,CAAC,MAAiC,CAAC;MAChF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAY,CAAC;MACjD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC,CAAA;IAEO,sCAAiC,GAAG,KAAK,EAAE,KAA2C,EAAE,EAAE;MAChG,MAAM,MAAM,GAA4B,KAAK,CAAC,MAAiC,CAAC;MAChF,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAoB,CAAC;MAChE,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC,CAAA;IAEO,mBAAc,GAAG,CAAC,KAAiB,EAAE,GAAyB,EAAE,EAAE;MACxE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;QACrB,SAAS,EAAE,gBAAgB;QAC3B,GAAG;QACH,aAAa,EAAE,KAAK;OACrB,CAAC,CAAC;IACL,CAAC,CAAA;IAEO,oBAAe,GAAG,CAAC,KAAiB,EAAE,GAAyB,EAAE,MAA+B,EAAE,SAAiB,EAAE,QAAgB,EAAE,EAAE;MAC/I,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;QACtB,SAAS,EAAE,gBAAgB;QAC3B,GAAG;QACH,MAAM;QACN,SAAS;QACT,QAAQ;QACR,aAAa,EAAE,KAAK;OACrB,CAAC,CAAC;IACL,CAAC,CAAA;IAWO,oBAAe,GAAG,CAAC,KAAiB,EAAE,MAA+B,EAAE,EAAE;MAC/E,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;QACtB,SAAS,EAAE,gBAAgB;QAC3B,MAAM;QACN,aAAa,EAAE,KAAK;OACrB,CAAC,CAAC;MAEH,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC,CAAA;IAEO,uBAAkB,GAAG,GAAG,EAAE;MAChC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;QACtB,OAAO;OACR;MAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC;MACvD,MAAM,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;MACzD,MAAM,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;MAEzD,IAAI,CAAC,YAAY,GAAG,kBAAkB,GAAG,kBAAkB,CAAC;MAC5D,IAAI,CAAC,aAAa,GAAG,iBAAiB,GAAG,CAAC,CAAC;MAC3C,IAAI,CAAC,cAAc,GAAG,iBAAiB,GAAG,kBAAkB,GAAG,kBAAkB,CAAC;MAElF,MAAM,IAAI,GAA0B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;MACzF,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;MAEzB,IAAI,CAAC,QAAQ,EAAE;QACb,OAAO;OACR;MAED,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;MAC1B,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;MAC3B,MAAM,KAAK,GAAc,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;MAEvD,KAAK,CAAC,OAAO,CAAC,CAAC,IAA0B,EAAE,KAAa,EAAE,EAAE;QAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,MAAM,WAAW,GAAG,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;QAElD,IACE,IAAI,CAAC,aAAa;aACf,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,MAAM;aACrC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,UAAU,EAC7C;UACA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAClC;QAED,IACE,IAAI,CAAC,cAAc;aAChB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,OAAO;aACtC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,kBAAkB,IAAI,WAAW,EACnE;UACA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACnC;MACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAA;IAEO,iBAAY,GAAG,GAAG,EAAE;MAC1B,IAAI,IAAI,CAAC,cAAc,EAAE;QACvB,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;OAClD;MAED,IAAI,CAAC,cAAc,GAAG,qBAAqB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACvE,CAAC,CAAA;IAEO,iBAAY,GAAG,GAAG,EAAE;MAC1B,IAAI,IAAI,CAAC,cAAc,EAAE;QACvB,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;OAClD;MAED,IAAI,CAAC,cAAc,GAAG,qBAAqB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACvE,CAAC,CAAA;IAoCO,kBAAa,GAAG,GAAG,EAAE;MAC3B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;IAChC,CAAC,CAAA;IAEO,uBAAkB,GAAG,CAAC,KAA6C,EAAE,EAAE;MAC7E,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,KAAK,iBAAiB,EAAE;QAChD,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;OAC/B;IACH,CAAC,CAAA;uBArZuC,MAAM;;iBAMtB,EAAE;kBAGgB,EAAE;yBAGa,KAAK;mBAM5C,IAAI;0BAGG,EAAE;sBAGW,KAAK;8BAGG,KAAK;oBAGf,KAAK;gBAGD,CAAC;oBAGd,IAAI;;qBAMF,IAAI;4BAGG,IAAI;2BAUY,KAAK;gBAOyC,EAAE;mBAW7B,EAAE;iBAGhD,EAAE;yBACO,KAAK;0BACJ,KAAK;wBACP,KAAK;2BACD,EAAE;4BACD,EAAE;;EAsBxC,8EAA8E;EAE9E,KAAK,CAAC,UAAU,CAAC,SAAiB;IAChC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;IAEd,IAAI,SAAS,KAAK,IAAI,CAAC,MAAM,EAAE;MAC7B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;KACpE;SAAM;MACL,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;MAC3B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;KACzB;EACH,CAAC;EAGD,KAAK,CAAC,cAAc,CAAC,MAAc;IACjC,IAAI,CAAC,MAAM,EAAE;MACX,OAAO;KACR;IAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACtC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAE7D,IAAI,IAAI,CAAC,SAAS,EAAE;MAClB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;;QAAC,OAAA,iCAClC,MAAM,GACN,CAAC,CAAA,MAAA,IAAI,CAAC,QAAQ,0CAAE,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC,KAAI,EAAE,CAAC,EAC/D,CAAA;OAAA,CAAC,CAAC;KACL;SAAM;MACL,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC;KACxC;IAED,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACnB,CAAC;EAGD,WAAW,CAAC,QAA0E;IACpF,IAAI,SAAkE,CAAC;IAEvE,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;MAChC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;KAClC;SAAM;MACL,SAAS,GAAG,QAAQ,CAAC;KACtB;IAED,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,OAA4D,EAAE,EAAE;MAC1F,MAAM,GAAG,GAAyB,EAAE,CAAC;MAErC,SAAS,gBAAgB,CAAC,QAAiD;QACzE,MAAM,YAAY,GAA0B;UAC1C,KAAK,EAAE,EAAE;SACV,CAAC;QAEF,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;UAChC,uCACK,YAAY,GACZ,QAAQ,EACX;SACH;aAAM;UACL,uCACK,YAAY,KACf,KAAK,EAAE,QAAQ,IACf;SACH;MACH,CAAC;MAED,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QACtC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;UAC1B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;SACpD;aAAM;UACL,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;SACzD;MACH,CAAC,CAAC,CAAC;MAEH,OAAO,GAAG,CAAC;IACb,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,gBAAgB,EAAE,CAAC;EAC1B,CAAC;EAGD,cAAc,CAAC,QAA4C;IACzD,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;MAChC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;KACtC;SAAM;MACL,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;KAC1B;IAED,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EAC9B,CAAC;EAGD,aAAa,CAAC,KAAa,EAAE,QAAgB;IAC3C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;MACzB,SAAS,EAAE,gBAAgB;MAC3B,KAAK;MACL,QAAQ;KACT,CAAC,CAAC;EACL,CAAC;EAGD,oBAAoB,CAAC,KAAqB,EAAE,QAAwB;IAClE,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC;MAChC,SAAS,EAAE,gBAAgB;MAC3B,KAAK;MACL,QAAQ;KACT,CAAC,CAAC;EACL,CAAC;EAUO,KAAK,CAAC,cAAc,CAAC,OAAe;IAI1C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;MACrC,KAAK,CAAC,OAAO,EAAE;QACb,MAAM,EAAE,IAAI,CAAC,SAAS;QACtB,aAAa,EAAE,IAAI,CAAC,gBAAgB;QACpC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;UACnB,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YAC7C,MAAM,aAAa,GAAG,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;cAC/B,aAAa,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YAC9C,CAAC,CAAC,CAAC;YACH,OAAO,aAAa,CAAC;UACvB,CAAC,CAAC,CAAC;UACH,OAAO,CAAC;YACN,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;cACjD,GAAG,EAAE,GAAG,CAAC,WAAW,EAAE;cACtB,IAAI,EAAE,GAAG;aACV,CAAC,CAAC;YACH,IAAI,EAAE,cAAc;WACrB,CAAC,CAAC;QACL,CAAC;QACD,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;UACf,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC;OACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;EACL,CAAC;EAiCO,sBAAsB,CAAC,KAAiB,EAAE,MAA+B,EAAE,KAAa;IAC9F,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;MAC7B,SAAS,EAAE,gBAAgB;MAC3B,MAAM;MACN,KAAK;MACL,aAAa,EAAE,KAAK;KACrB,CAAC,CAAC;EACL,CAAC;EA0EO,gBAAgB;IACtB,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;SACrC,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAC/C;MACA,OAAO;KACR;IAED,IAAI,CAAC,WAAW,GAAG,IAAI,QAAQ,CAAC;MAC9B,QAAQ,EAAE,SAAS;MACnB,OAAO,EAAE;QACP,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,QAAQ,EAAE,GAAG;QACb,MAAM,EAAE,GAAG;OACZ;MACD,QAAQ,EAAE;QACR,EAAE,EAAE,IAAI,CAAC,OAAO;QAChB,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC;OAC/C;KACF,CAAC,CAAC;IAEH,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;MACvB,MAAM,OAAO,GAET,EAAE,CAAC;MAEP,KAAK,MAAM,SAAS,IAAI,GAAG,EAAE;QAC3B,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;OACtD;MAED,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;EACL,CAAC;EAYD,KAAK,CAAC,iBAAiB;IACrB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEvC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;MACtB,IAAI,CAAC,YAAY,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;KACpG;EACH,CAAC;EAED,gBAAgB;IACd,IAAI,CAAC,kBAAkB,EAAE,CAAC;EAC5B,CAAC;EAED,mBAAmB;IACjB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;IACrB,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;IAExB,IAAI,IAAI,CAAC,KAAK,EAAE;MACd,IAAI,SAAS,GAAG,EAAE,CAAC;MAEnB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QACrD,SAAS,GAAG,CAAC,GAAG,SAAS,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;MAC/C,CAAC,CAAC,CAAC;MAEH,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,UAAS,IAAI,EAAE,GAAG;QAC7C,OAAO,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC;MACzC,CAAC,CAAC,CAAC;MAEH,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QACzB,IACE,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC;aACxC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,EACzD;UACA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAC9B;MACH,CAAC,CAAC,CAAC;KACJ;SAAM;MACL,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;KACtC;IAED,IAAI,IAAI,CAAC,MAAM,EAAE;MACf,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC;MAEhF,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;MACzB,IAAI,IAAI,GAAG,IAAI,CAAC;MAEhB,IAAI,OAAO,YAAY,CAAC,IAAI,KAAK,QAAQ,EAAE;QACzC,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE;UAC3B,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;SAClC;QAED,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE;UAC1B,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;SAC/B;OACF;MAED,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;QACrC,IAAI,IAAI,KAAK,WAAW,EAAE;UACxB,IAAI,IAAI,CAAC,aAAa,KAAK,KAAK,EAAE;YAChC,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;WAChE;eAAM;YACL,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;WAChE;SACF;aAAM;UACL,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAA;UAC7F,OAAO,IAAI,CAAC,aAAa,KAAK,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;SACpE;MACH,CAAC,CAAC,CAAC;KACJ;IAED,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE;MAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;MAC1C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;KAC9E;SAAM;MACL,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;KAC3C;EACH,CAAC;EAED,iBAAiB;IACf,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC5D,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;EAC5C,CAAC;EAED,oBAAoB;IAClB,IAAI,IAAI,CAAC,cAAc,EAAE;MACvB,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;KAClC;EACH,CAAC;EAED,MAAM;;IACJ,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACzD,MAAM,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAEpE,MAAM,OAAO,GAAG;MACd,gBAAgB,EAAE,IAAI;MACtB,eAAe,EAAE,IAAI,CAAC,YAAY;MAClC,iBAAiB,EAAE,IAAI,CAAC,aAAa;MACrC,kBAAkB,EAAE,IAAI,CAAC,cAAc;MACvC,wBAAwB,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC;MACjF,yBAAyB,EAAE,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC;MACpF,UAAU,EAAE,IAAI,CAAC,QAAQ;MACzB,aAAa,EAAE,eAAe;MAC9B,sBAAsB,EAAE,oBAAoB,IAAI,CAAC,IAAI,CAAC,UAAU;MAChE,YAAY,EAAE,eAAe,IAAI,oBAAoB,IAAI,CAAC,IAAI,CAAC,UAAU;KAC1E,CAAC;IAEF,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IAExE,MAAM,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAE1E,MAAM,aAAa,GAAG;MACpB;QACE,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,mBAAmB;QAC3C,KAAK,EAAE,EAAE;OACV;MACD,GAAG,IAAI,CAAC,QAAQ;SACb,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;SAC/B,GAAG,CAAC,MAAM,CAAC,EAAE;;QAAC,OAAA,CAAC;UACd,KAAK,EAAE,MAAM,CAAC,GAAG;UACjB,IAAI,EAAE,MAAA,IAAI,CAAC,YAAY,CAAC,YAAY,0CAChC,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC;SACzC,CAAC,CAAA;OAAA,CAAC;KACN,CAAC;IAEF,MAAM,oBAAoB,GAAG;MAC3B;QACE,KAAK,EAAE,KAAK;QACZ,IAAI,EAAE,MAAA,IAAI,CAAC,YAAY,CAAC,mBAAmB,0CACvC,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;OACtD;MACD;QACE,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,MAAA,IAAI,CAAC,YAAY,CAAC,mBAAmB,0CACvC,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;OACvD;KACF,CAAC;IAEF,MAAM,cAAc,GAAG,CAAC,MAA+B,EAAE,GAAyB,EAAE,KAAa,EAAE,EAAE;;MACnG,OAAO;QACL,iDAAiD,EAAE,IAAI;QACvD,gBAAgB,EAAE,MAAM,CAAC,KAAK,KAAK,MAAM;QACzC,iBAAiB,EAAE,MAAM,CAAC,KAAK,KAAK,OAAO;QAC3C,SAAS,EAAE,CAAC,CAAC,CAAA,MAAA,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,0CAAE,QAAQ,CAAA,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ;QAC3D,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI;QAC5B,aAAa,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACpG,YAAY,EAAE,MAAM,CAAC,GAAG,KAAK,IAAI,CAAC,MAAM;QACxC,gBAAgB,EAAE,MAAM,CAAC,GAAG,KAAK,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,KAAK,KAAK;QAC5E,iBAAiB,EAAE,MAAM,CAAC,GAAG,KAAK,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,KAAK,MAAM;QAC9E,CAAC,SAAS,CAAA,MAAA,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,0CAAE,KAAK,KAAI,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA,MAAA,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,0CAAE,KAAK,CAAA,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK;QAC/F,CAAC,UAAU,CAAA,MAAA,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,0CAAE,MAAM,KAAI,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA,MAAA,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,0CAAE,MAAM,CAAA,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM;OACrG,CAAA;IACH,CAAC,CAAA;IAED,OAAO,CACL,EAAC,IAAI;MACH,WAAK,KAAK,EAAE,OAAO;QACjB,WAAK,KAAK,EAAC,wBAAwB;UACjC,WAAK,KAAK,EAAC,yBAAyB;YAClC,YAAM,IAAI,EAAC,SAAS,GAAQ,CACxB;UACN,WAAK,KAAK,EAAC,4BAA4B;YACpC,CAAC,IAAI,CAAC,UAAU;cACf,kBACE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,EAA0B,CAAC,EACtD,KAAK,EAAC,wBAAwB,EAC9B,IAAI,EAAC,OAAO,EACZ,IAAI,EAAC,uBAAuB,EAC5B,YAAY,EAAE,IAAI,CAAC,aAAa,EAChC,YAAY,EAAE,IAAI,EAClB,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,WAAW,EACpC,IAAI,EAAC,QAAQ,GACD;YAEhB,WAAK,KAAK,EAAC,+BAA+B;cACxC,YAAM,IAAI,EAAC,eAAe,GAAQ,CAC9B,CACF,CACF;QAEN,WAAK,KAAK,EAAC,+BAA+B;UACxC,WACE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,GAAG,EAAoB,CAAC,EACvD,KAAK,EAAC,yBAAyB,EAC/B,QAAQ,EAAE,IAAI,CAAC,YAAY;YAE3B,aAAO,KAAK,EAAE;gBACZ,uBAAuB,EAAE,IAAI;gBAC7B,kBAAkB,EAAE,IAAI,CAAC,WAAW,KAAK,OAAO;eACjD;cACE,CAAC,IAAI,CAAC,kBAAkB;gBACvB,aAAO,KAAK,EAAC,uBAAuB;kBAClC,UAAI,KAAK,EAAC,+CAA+C,IACtD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CACnC,UACE,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EACrE,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,KAAK,EAAE;sBACL,iDAAiD,EAAE,IAAI;sBACvD,gBAAgB,EAAE,MAAM,CAAC,KAAK,KAAK,MAAM;sBACzC,iBAAiB,EAAE,MAAM,CAAC,KAAK,KAAK,OAAO;sBAC3C,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI;sBAC5B,aAAa,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;sBACpG,YAAY,EAAE,MAAM,CAAC,GAAG,KAAK,IAAI,CAAC,MAAM;sBACxC,gBAAgB,EAAE,MAAM,CAAC,GAAG,KAAK,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,KAAK,KAAK;sBAC5E,iBAAiB,EAAE,MAAM,CAAC,GAAG,KAAK,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,KAAK,MAAM;sBAC9E,CAAC,SAAS,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK;sBACzC,CAAC,UAAU,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM;qBAC7C,IAEA,CAAC,MAAM,CAAC,iBAAiB;oBACxB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;sBACZ,cACE,KAAK,EAAC,6BAA6B,EACnC,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,iBAC1C,MAAM,CAAC,WAAW,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE;wBAEnF,gBAAO,MAAM,CAAC,IAAI,CAAQ;wBAC1B,iBACE,IAAI,EAAC,UAAU,EACf,KAAK,EAAC,2BAA2B,EACjC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,UAAU,GAC5B,CACN;sBACT,CAAC;wBACD,gBAAO,MAAM,CAAC,IAAI,CAAQ,CAAC,CAE5B,CACN,CACE,CACC;cAEV,aAAO,KAAK,EAAC,uBAAuB,IACjC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,CACrC,UACE,KAAK,EAAC,+CAA+C,EACrD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,IAElD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;;gBACnC,OAAA,CAAC,CAAC,CAAC,CAAA,MAAA,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,0CAAE,QAAQ,CAAA,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;kBAChD,CAAC;oBACD,UACE,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EACtB,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,EAC7E,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,EACjD,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,KAAK,EAAE,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,GACrC;kBACN,CAAC;oBACD,UACE,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EACtB,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,EAC7E,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,EACjD,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,KAAK,EAAE,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,GACrC,CAAA;eAAA,CACT,CACE,CACN,CACK,CACF,CACJ,CACF;QAEL,IAAI,CAAC,QAAQ;UACZ,WAAK,KAAK,EAAC,8BAA8B;YACtC,aAAa,CAAC,MAAM,GAAG,CAAC;cACvB,WAAK,KAAK,EAAC,mCAAmC;gBAC5C,qBACE,MAAM,2BAEN,KAAK,EAAC,uCAAuC,EAC7C,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,OAAO,EACZ,KAAK,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EACpB,OAAO,EAAE,aAAa,EACtB,YAAY,EAAE,IAAI,CAAC,0BAA0B,GAC9B;gBACjB,qBACE,QAAQ,EAAE,IAAI,CAAC,MAAM,KAAK,EAAE,EAC5B,MAAM,2BAEN,KAAK,EAAC,8CAA8C,EACpD,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,OAAO,EACZ,KAAK,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,EAC3B,OAAO,EAAE,oBAAoB,EAC7B,YAAY,EAAE,IAAI,CAAC,iCAAiC,GACrC,CACb;YAGR,sBAAgB,OAAO,EAAC,OAAO,IAC5B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;;cAClC,OAAA,2BACE,OAAO,EACL,CAAA,MAAA,MAAA,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,0CAAE,KAAK,0CAAE,QAAQ,EAAE;sBACxC,MAAA,MAAA,GAAG,CAAC,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,GAAG,CAAC,0CAAE,KAAK,0CAAE,QAAQ,EAAE,CAAA;qBAC9C,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAGvF,qBAAe,OAAO,EAAC,OAAO,EAAC,aAAa,EAAE,CAAC,IAC5C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;;kBAC5B,OAAA,0BACE,KAAK,EAAE,MAAM,CAAC,IAAI,EAClB,KAAK,EAAE,CAAA,MAAA,MAAA,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,0CAAE,KAAK,0CAAE,QAAQ,EAAE,KAAI,EAAE,GAC3B,CAAA;iBAAA,CACvB,CACa,CACI,CAAA;aAAA,CACvB,CACc,CACb;QAGP,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,UAAU,GAAG,CAAC;UACvC,WAAK,KAAK,EAAC,oCAAoC;YAC7C,uBACE,KAAK,EAAE,IAAI,CAAC,IAAI,EAChB,KAAK,EAAE,UAAU,EACjB,YAAY,EAAE,IAAI,CAAC,kBAAkB,GACpB,CACf,CAEJ,CACD,CACR,CAAC;EACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import {\n Component,\n Host,\n h,\n Element,\n Prop,\n Watch,\n Method,\n State,\n Event,\n EventEmitter,\n} from \"@stencil/core\";\n\nimport {\n StzhDatatableCellData,\n StzhDatatableRowData,\n StzhDatatableInputRowData,\n StzhDatatableColumnData,\n StzhDatatableRowClickEvent,\n StzhDatatableCellClickEvent,\n StzhDatatableHeadingCellClickEvent,\n StzhDatatableSortClickEvent,\n StzhDatatableSortByChangeEvent,\n StzhDatatableSortDirectionChangeEvent,\n StzhDropdownChangeEvent,\n StzhPaginationChangeEvent,\n} from \"../../index\";\n\nimport { Document } from \"flexsearch/dist/flexsearch.bundle.min.js\";\nimport { parse } from \"papaparse\";\n\nimport { StzhDatatableLocalizedText } from \"./stzh-datatable.localization\";\nimport { hasSlot } from \"../../utils/utils\";\n\n/**\n * @slot action-button - Slot for action `stzh-button` element\n */\n@Component({\n tag: \"stzh-datatable\",\n styleUrl: \"stzh-datatable.scss\"\n})\nexport class StzhDatatable {\n /** Table layout */\n @Prop() tableLayout: \"auto\" | \"fixed\" = \"auto\";\n\n /** Translation strings */\n @Prop() localization: StzhDatatableLocalizedText;\n\n /** Label */\n @Prop() label: string = \"\";\n\n /** Sort by given column key */\n @Prop({ mutable: true }) sortBy: string = \"\";\n\n /** Sort direction */\n @Prop({ mutable: true }) sortDirection: \"asc\" | \"desc\" = \"asc\";\n\n /** Tokenize type */\n // @Prop() tokenize: \"strict\" | \"forward\" | \"reverse\" | \"full\" = \"forward\";\n\n /** ID field */\n @Prop() idField = \"id\";\n\n /** Row header field when list is used (`showList=true`) */\n @Prop() rowHeaderField = \"\";\n\n /* Whether to hide search */\n @Prop({ reflect: true }) hideSearch = false;\n\n /* Whether to hide column heading cells */\n @Prop({ reflect: true }) hideColumnHeadings = false;\n\n /** Whether to show table data as list on mikro breakpoint */\n @Prop({ reflect: true }) showList = false;\n\n /** Current page */\n @Prop({ mutable: true }) page: number = 1;\n\n /** If pagination should be shown, set a number of items to be shown by each page. */\n @Prop() pageSize: number = null;\n\n /** URL of the CSV data */\n @Prop() csvUrl: string;\n\n /** Whether csv has header row */\n @Prop() csvHeader: boolean = true;\n\n /** Whether csv has dynamic typing enabled */\n @Prop() csvDynamicTyping: boolean = true;\n\n /**\n * Whether to disable min-width of the table.\n *\n * If `false`, the default `min-width` is `700px`\n * If `true`, the `min-width` is `none`, so the table will try to squeeze down content as much as possible.\n *\n * You can also overwrite the min-width via CSS with the custom property `--min-width`.\n */\n @Prop({ reflect: true }) disableMinWidth: boolean = false;\n\n /**\n * Array of objects including the row data that must at least include `id` attribute (name can be changed with `idField` property).\n *\n * Example: [{\"id\":\"1\",\"text\":\"Foo\"}, ...]\n */\n @Prop({ mutable: true }) rows: StzhDatatableInputRowData[] | StzhDatatableCellData[][] | string = [];\n private _rows: StzhDatatableRowData[];\n private _rowsShown: StzhDatatableRowData[];\n private _rowsFiltered: StzhDatatableRowData[];\n\n /**\n * Array of objects including the columns data that must include `key` and `text` attribute.\n *\n * Example: [{ \"key\": \"id\", \"text\": \"ID\", \"align\": \"right\", \"sort\": true, \"fixed\": \"right\", style: { width: \"53px\" } }]\n */\n\n @Prop({ mutable: true }) columns: StzhDatatableColumnData[] | string = [];\n private _columns: StzhDatatableColumnData[];\n\n @State() query: string = \"\";\n @State() hasScrollLeft: boolean = false;\n @State() hasScrollRight: boolean = false;\n @State() isScrollable: boolean = false;\n @State() cellsStickyLeft: number[] = [];\n @State() cellsStickyRight: number[] = [];\n\n @Element() element: HTMLStzhDatatableElement;\n\n /** Datatable row click event */\n @Event() stzhRowClick: EventEmitter<StzhDatatableRowClickEvent>;\n\n /** Datatable cell click event */\n @Event() stzhCellClick: EventEmitter<StzhDatatableCellClickEvent>;\n\n /** Datatable heading cell click event */\n @Event() stzhHeadingCellClick: EventEmitter<StzhDatatableHeadingCellClickEvent>;\n\n /** Datatable sort click event */\n @Event() stzhSortClick: EventEmitter<StzhDatatableSortClickEvent>;\n\n /** Datatable sort by change event */\n @Event() stzhSortByChange: EventEmitter<StzhDatatableSortByChangeEvent>;\n\n /** Datatable sort direction change event */\n @Event() stzhSortDirectionChange: EventEmitter<StzhDatatableSortDirectionChangeEvent>;\n\n /** Toggle sort by a given column key like when clicking on a column header */\n @Method()\n async toggleSort(columnKey: string) {\n this.page = 1;\n\n if (columnKey === this.sortBy) {\n this.sortDirection = this.sortDirection === \"asc\" ? \"desc\" : \"asc\";\n } else {\n this.sortDirection = \"asc\";\n this.sortBy = columnKey;\n }\n }\n\n @Watch(\"csvUrls\")\n async csvUrlsWatcher(newUrl: string) {\n if (!newUrl) {\n return;\n }\n\n const response = await fetch(newUrl);\n const csvData = await response.text();\n const { columns, rows } = await this.parseCsvToJson(csvData);\n\n if (this.csvHeader) {\n this.columns = columns.map((column) => ({\n ...column,\n ...(this._columns?.find(({ key }) => key === column.key) || {})\n }));\n } else {\n this.columns = this.columns || columns;\n }\n\n this.rows = rows;\n }\n\n @Watch(\"rows\")\n rowsWatcher(newValue: StzhDatatableInputRowData[] | StzhDatatableCellData[][] | string) {\n let inputData: StzhDatatableInputRowData[] | StzhDatatableCellData[][];\n\n if (typeof newValue === \"string\") {\n inputData = JSON.parse(newValue);\n } else {\n inputData = newValue;\n }\n\n this._rows = inputData.map((rowData: StzhDatatableCellData[] | StzhDatatableInputRowData) => {\n const row: StzhDatatableRowData = {};\n\n function transformRowCell(cellData: StzhDatatableCellData | string | number) {\n const baseCellData: StzhDatatableCellData = {\n value: \"\"\n };\n\n if (typeof cellData === \"object\") {\n return {\n ...baseCellData,\n ...cellData\n };\n } else {\n return {\n ...baseCellData,\n value: cellData\n };\n }\n }\n\n this._columns.forEach((column, index) => {\n if (Array.isArray(rowData)) {\n row[column.key] = transformRowCell(rowData[index]);\n } else {\n row[column.key] = transformRowCell(rowData[column.key]);\n }\n });\n\n return row;\n });\n\n this.buildSearchIndex();\n }\n\n @Watch(\"columns\")\n columnsWatcher(newValue: StzhDatatableColumnData[] | string) {\n if (typeof newValue === \"string\") {\n this._columns = JSON.parse(newValue);\n } else {\n this._columns = newValue;\n }\n\n this.rowsWatcher(this.rows);\n }\n\n @Watch(\"sortBy\")\n sortByWatcher(value: string, oldValue: string) {\n this.stzhSortByChange.emit({\n component: \"stzh-datatable\",\n value,\n oldValue\n });\n }\n\n @Watch(\"sortDirection\")\n sortDirectionWatcher(value: \"asc\" | \"desc\", oldValue: \"asc\" | \"desc\") {\n this.stzhSortDirectionChange.emit({\n component: \"stzh-datatable\",\n value,\n oldValue\n });\n }\n\n private input: HTMLStzhInputElement;\n private searchIndex: Document;\n private tableWrapper: HTMLDivElement;\n private debounceScroll: number;\n\n private debounceResize: number;\n private resizeObserver: ResizeObserver;\n\n private async parseCsvToJson(csvData: string): Promise<{\n columns: { key: string, text: string }[]\n rows: { [key: string]: string | number }[]\n }> {\n return new Promise((resolve, reject) => {\n parse(csvData, {\n header: this.csvHeader,\n dynamicTyping: this.csvDynamicTyping,\n complete: (result) => {\n const normalizedData = result.data.map((row) => {\n const normalizedRow = {};\n Object.keys(row).forEach((key) => {\n normalizedRow[key.toLowerCase()] = row[key];\n });\n return normalizedRow;\n });\n resolve({\n columns: Object.keys(result.data[0]).map((key) => ({\n key: key.toLowerCase(),\n text: key,\n })),\n rows: normalizedData,\n });\n },\n error: (error) => {\n reject(error);\n },\n });\n });\n }\n\n private handleSortByDropdownChange = async (event: CustomEvent<StzhDropdownChangeEvent>) => {\n const target: HTMLStzhDropdownElement = event.target as HTMLStzhDropdownElement;\n const sortBy = await target.getValue() as string;\n this.sortBy = sortBy;\n }\n\n private handleSortDirectionDropdownChange = async (event: CustomEvent<StzhDropdownChangeEvent>) => {\n const target: HTMLStzhDropdownElement = event.target as HTMLStzhDropdownElement;\n const sortDirection = await target.getValue() as \"asc\" | \"desc\";\n this.sortDirection = sortDirection;\n }\n\n private handleRowClick = (event: MouseEvent, row: StzhDatatableRowData) => {\n this.stzhRowClick.emit({\n component: \"stzh-datatable\",\n row,\n originalEvent: event\n });\n }\n\n private handleCellClick = (event: MouseEvent, row: StzhDatatableRowData, column: StzhDatatableColumnData, cellIndex: number, rowIndex: number) => {\n this.stzhCellClick.emit({\n component: \"stzh-datatable\",\n row,\n column,\n cellIndex,\n rowIndex,\n originalEvent: event\n });\n }\n\n private handleHeadingCellClick(event: MouseEvent, column: StzhDatatableColumnData, index: number) {\n this.stzhHeadingCellClick.emit({\n component: \"stzh-datatable\",\n column,\n index,\n originalEvent: event\n });\n }\n\n private handleSortClick = (event: MouseEvent, column: StzhDatatableColumnData) => {\n this.stzhSortClick.emit({\n component: \"stzh-datatable\",\n column,\n originalEvent: event\n });\n\n this.toggleSort(column.key);\n }\n\n private updateScrollStates = () => {\n if (!this.tableWrapper) {\n return;\n }\n\n const wrapperScrollLeft = this.tableWrapper.scrollLeft;\n const wrapperScrollWidth = this.tableWrapper.scrollWidth;\n const wrapperClientWidth = this.tableWrapper.clientWidth;\n\n this.isScrollable = wrapperScrollWidth > wrapperClientWidth;\n this.hasScrollLeft = wrapperScrollLeft > 0;\n this.hasScrollRight = wrapperScrollLeft < wrapperScrollWidth - wrapperClientWidth;\n\n const rows: HTMLTableRowElement[] = Array.from(this.tableWrapper.querySelectorAll(\"tr\"));\n const firstRow = rows[0];\n\n if (!firstRow) {\n return;\n }\n\n this.cellsStickyLeft = [];\n this.cellsStickyRight = [];\n const cells: Element[] = Array.from(firstRow.children);\n\n cells.forEach((cell: HTMLTableCellElement, index: number) => {\n const offsetLeft = cell.offsetLeft;\n const offsetRight = offsetLeft + cell.offsetWidth;\n\n if (\n this.hasScrollLeft\n && this._columns[index].fixed === \"left\"\n && Math.ceil(wrapperScrollLeft) >= offsetLeft\n ) {\n this.cellsStickyLeft.push(index);\n }\n\n if (\n this.hasScrollRight\n && this._columns[index].fixed === \"right\"\n && Math.ceil(wrapperScrollLeft) + wrapperClientWidth <= offsetRight\n ) {\n this.cellsStickyRight.push(index);\n }\n });\n }\n\n private handleResize = () => {\n if (this.debounceResize) {\n window.cancelAnimationFrame(this.debounceResize);\n }\n\n this.debounceResize = requestAnimationFrame(this.updateScrollStates);\n }\n\n private handleScroll = () => {\n if (this.debounceScroll) {\n window.cancelAnimationFrame(this.debounceScroll);\n }\n\n this.debounceScroll = requestAnimationFrame(this.updateScrollStates);\n }\n\n private buildSearchIndex() {\n if (!this._rows || this._rows.length === 0\n || !this._columns || this._columns.length === 0\n ) {\n return;\n }\n\n this.searchIndex = new Document({\n tokenize: \"forward\",\n matcher: {\n '[äà]': 'a',\n '[öó]': 'o',\n '[üûúù]': 'u',\n '[éè]': 'e'\n },\n document: {\n id: this.idField,\n index: this._columns.map(column => column.key)\n }\n });\n\n this._rows.forEach(row => {\n const rowData: {\n [key: string]: string\n } = {};\n\n for (const columnKey in row) {\n rowData[columnKey] = row[columnKey].value.toString();\n }\n\n this.searchIndex.add(rowData);\n });\n }\n\n private onInputChange = () => {\n this.query = this.input.value;\n }\n\n private onPaginationChange = (event: CustomEvent<StzhPaginationChangeEvent>) => {\n if (event.detail.component === \"stzh-pagination\") {\n this.page = event.detail.page;\n }\n }\n\n async componentWillLoad() {\n this.columnsWatcher(this.columns);\n await this.csvUrlsWatcher(this.csvUrl);\n\n if (!this.localization) {\n this.localization = await window.stzhComponents.utils.fetchTranslations(this.element, \"datatable\");\n }\n }\n\n componentDidLoad() {\n this.updateScrollStates();\n }\n\n componentWillRender() {\n this._rowsShown = [];\n this._rowsFiltered = [];\n\n if (this.query) {\n let resultIds = [];\n\n this.searchIndex.search(this.query).forEach((result) => {\n resultIds = [...resultIds, ...result.result];\n });\n\n resultIds = resultIds.filter(function(item, pos) {\n return resultIds.indexOf(item) === pos;\n });\n\n this._rows.forEach((row) => {\n if (\n resultIds.includes(row[this.idField].value)\n || resultIds.includes(row[this.idField].value.toString())\n ) {\n this._rowsFiltered.push(row);\n }\n });\n } else {\n this._rowsFiltered = [...this._rows];\n }\n\n if (this.sortBy) {\n const columnConfig = this._columns.find((column) => column.key === this.sortBy);\n\n let column = this.sortBy;\n let type = null;\n\n if (typeof columnConfig.sort === \"object\") {\n if (columnConfig.sort.field) {\n column = columnConfig.sort.field;\n }\n\n if (columnConfig.sort.type) {\n type = columnConfig.sort.type;\n }\n }\n\n this._rowsFiltered.sort((rowA, rowB) => {\n if (type === \"numerical\") {\n if (this.sortDirection === \"asc\") {\n return Number(rowA[column].value) - Number(rowB[column].value);\n } else {\n return Number(rowB[column].value) - Number(rowA[column].value);\n }\n } else {\n const comparison = rowA[column].value.toString().localeCompare(rowB[column].value.toString())\n return this.sortDirection === \"asc\" ? comparison : comparison / -1;\n }\n });\n }\n\n if (this.pageSize !== null) {\n const pageEnd = this.page * this.pageSize;\n this._rowsShown = this._rowsFiltered.slice(pageEnd - this.pageSize, pageEnd);\n } else {\n this._rowsShown = [...this._rowsFiltered];\n }\n }\n\n connectedCallback() {\n this.resizeObserver = new ResizeObserver(this.handleResize);\n this.resizeObserver.observe(this.element);\n }\n\n disconnectedCallback() {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n }\n\n render() {\n const headingSlotUsed = hasSlot(this.element, \"heading\");\n const actionButtonSlotUsed = hasSlot(this.element, \"action-button\");\n\n const classes = {\n \"stzh-datatable\": true,\n \"is-scrollable\": this.isScrollable,\n \"has-scroll-left\": this.hasScrollLeft,\n \"has-scroll-right\": this.hasScrollRight,\n \"has-scroll-left-shadow\": this.hasScrollLeft && this.cellsStickyLeft.length === 0,\n \"has-scroll-right-shadow\": this.hasScrollRight && this.cellsStickyRight.length === 0,\n \"has-list\": this.showList,\n \"has-heading\": headingSlotUsed,\n \"has-action-or-search\": actionButtonSlotUsed || !this.hideSearch,\n \"has-header\": headingSlotUsed || actionButtonSlotUsed || !this.hideSearch\n };\n\n const totalPages = Math.ceil(this._rowsFiltered.length / this.pageSize);\n\n const firstHeaderColumn = this._columns.find((column) => column.isHeader);\n\n const sortByOptions = [\n {\n text: this.localization.sortByDefaultOption,\n value: ''\n },\n ...this._columns\n .filter(column => !!column.sort)\n .map(column => ({\n value: column.key,\n text: this.localization.sortByOption\n ?.replace(/\\{column\\}/gi, column.text),\n }))\n ];\n\n const sortDirectionOptions = [\n {\n value: 'asc',\n text: this.localization.sortDirectionOption\n ?.replace(/\\{direction\\}/gi, this.localization.asc),\n },\n {\n value: 'desc',\n text: this.localization.sortDirectionOption\n ?.replace(/\\{direction\\}/gi, this.localization.desc),\n }\n ];\n\n const getCellClasses = (column: StzhDatatableColumnData, row: StzhDatatableRowData, index: number) => {\n return {\n \"stzh-datatable__cell stzh-datatable__cell--body\": true,\n \"is-sticky-left\": column.fixed === \"left\",\n \"is-sticky-right\": column.fixed === \"right\",\n \"is-head\": !!row[column.key]?.isHeader || !!column.isHeader,\n \"is-sortable\": !!column.sort,\n \"has-sticked\": this.cellsStickyLeft.indexOf(index) > -1 || this.cellsStickyRight.indexOf(index) > -1,\n \"has-sorted\": column.key === this.sortBy,\n \"has-sorted-asc\": column.key === this.sortBy && this.sortDirection === \"asc\",\n \"has-sorted-desc\": column.key === this.sortBy && this.sortDirection === \"desc\",\n [`align-${row[column.key]?.align || column.align}`]: !!row[column.key]?.align || !!column.align,\n [`valign-${row[column.key]?.valign || column.valign}`]: !!row[column.key]?.valign || !!column.valign\n }\n }\n\n return (\n <Host>\n <div class={classes}>\n <div class=\"stzh-datatable__header\">\n <div class=\"stzh-datatable__heading\">\n <slot name=\"heading\"></slot>\n </div>\n <div class=\"stzh-datatable__sub-header\">\n {!this.hideSearch &&\n <stzh-input\n ref={(el) => (this.input = el as HTMLStzhInputElement)}\n class=\"stzh-datatable__search\"\n size=\"small\"\n name=\"stzh-datatable-search\"\n onStzhChange={this.onInputChange}\n hideOptional={true}\n label={this.localization.searchLabel}\n type=\"search\"\n ></stzh-input>\n }\n <div class=\"stzh-datatable__action-button\">\n <slot name=\"action-button\"></slot>\n </div>\n </div>\n </div>\n\n <div class=\"stzh-datatable__outer-wrapper\">\n <div\n ref={(el) => (this.tableWrapper = el as HTMLDivElement)}\n class=\"stzh-datatable__wrapper\"\n onScroll={this.handleScroll}\n >\n <table class={{\n \"stzh-datatable__table\": true,\n \"has-layout-fixed\": this.tableLayout === \"fixed\",\n }}>\n {!this.hideColumnHeadings &&\n <thead class=\"stzh-datatable__thead\">\n <tr class=\"stzh-datatable__row stzh-datatable__row--head\">\n {this._columns.map((column, index) =>\n <th\n onClick={(event) => this.handleHeadingCellClick(event, column, index)}\n style={column.style}\n class={{\n \"stzh-datatable__cell stzh-datatable__cell--head\": true,\n \"is-sticky-left\": column.fixed === \"left\",\n \"is-sticky-right\": column.fixed === \"right\",\n \"is-sortable\": !!column.sort,\n \"has-sticked\": this.cellsStickyLeft.indexOf(index) > -1 || this.cellsStickyRight.indexOf(index) > -1,\n \"has-sorted\": column.key === this.sortBy,\n \"has-sorted-asc\": column.key === this.sortBy && this.sortDirection === \"asc\",\n \"has-sorted-desc\": column.key === this.sortBy && this.sortDirection === \"desc\",\n [`align-${column.align}`]: !!column.align,\n [`valign-${column.valign}`]: !!column.valign\n }}\n >\n {!column.hideColumnHeading &&\n (column.sort ?\n <button\n class=\"stzh-datatable__sort-button\"\n type=\"button\"\n onClick={(event) => this.handleSortClick(event, column)}\n s-object-id={column.analyticsId || `${column.text} ${this.localization.columnSort}`}\n >\n <span>{column.text}</span>\n <stzh-icon\n name=\"arrow-up\"\n class=\"stzh-datatable__sort-icon\"\n a11yTitle={this.localization.columnSort}\n ></stzh-icon>\n </button>\n :\n <span>{column.text}</span>)\n }\n </th>\n )}\n </tr>\n </thead>\n }\n <tbody class=\"stzh-datatable__tbody\">\n {this._rowsShown.map((row, rowIndex) =>\n <tr\n class=\"stzh-datatable__row stzh-datatable__row--body\"\n onClick={(event) => this.handleRowClick(event, row)}\n >\n {this._columns.map((column, index) =>\n (!!row[column.key]?.isHeader || !!column.isHeader)\n ?\n <th\n id={row[column.key].id}\n onClick={(event) => this.handleCellClick(event, row, column, index, rowIndex)}\n innerHTML={row[column.key].value.toString() || \"\"}\n style={column.style}\n class={getCellClasses(column, row, index)}\n ></th>\n :\n <td\n id={row[column.key].id}\n onClick={(event) => this.handleCellClick(event, row, column, index, rowIndex)}\n innerHTML={row[column.key].value.toString() || \"\"}\n style={column.style}\n class={getCellClasses(column, row, index)}\n ></td>\n )}\n </tr>\n )}\n </tbody>\n </table>\n </div>\n </div>\n\n {this.showList &&\n <div class=\"stzh-datatable__list-wrapper\">\n {sortByOptions.length > 1 &&\n <div class=\"stzh-datatable__list-sort-wrapper\">\n <stzh-dropdown\n inline\n no-search\n class=\"stzh-datatable__list-sort-by-dropdown\"\n variant=\"plain\"\n size=\"small\"\n items={[this.sortBy]}\n options={sortByOptions}\n onStzhChange={this.handleSortByDropdownChange}\n ></stzh-dropdown>\n <stzh-dropdown\n disabled={this.sortBy === ''}\n inline\n no-search\n class=\"stzh-datatable__list-sort-direction-dropdown\"\n variant=\"plain\"\n size=\"small\"\n items={[this.sortDirection]}\n options={sortDirectionOptions}\n onStzhChange={this.handleSortDirectionDropdownChange}\n ></stzh-dropdown>\n </div>\n }\n\n <stzh-accordion variant=\"table\">\n {this._rowsShown.map((row, index) =>\n <stzh-accordion-item\n heading={\n row[this.rowHeaderField]?.value?.toString()\n || row[firstHeaderColumn?.key]?.value?.toString()\n || this.localization.defaultListRowHeading.replace(/\\{n\\}/ig, (index + 1).toString())\n }\n >\n <stzh-datalist variant=\"table\" columnsMedium={2}>\n {this._columns.map((column) =>\n <stzh-datalist-item\n label={column.text}\n value={row[column.key]?.value?.toString() || \"\"}\n ></stzh-datalist-item>\n )}\n </stzh-datalist>\n </stzh-accordion-item>\n )}\n </stzh-accordion>\n </div>\n }\n\n {this.pageSize !== null && totalPages > 1 &&\n <div class=\"stzh-datatable__pagination-wrapper\">\n <stzh-pagination\n value={this.page}\n total={totalPages}\n onStzhChange={this.onPaginationChange}\n ></stzh-pagination>\n </div>\n }\n </div>\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"stzh-datatable.js","sourceRoot":"","sources":["../../../../src/components/stzh-datatable/stzh-datatable.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Event, EventEmitter, h, Host, Method, Prop, State, Watch } from \"@stencil/core\";\n\nimport {\n StzhDatatableCellClickEvent,\n StzhDatatableCellData,\n StzhDatatableColumnData,\n StzhDatatableHeadingCellClickEvent,\n StzhDatatableInputRowData,\n StzhDatatableRowClickEvent,\n StzhDatatableRowData,\n StzhDatatableSortByChangeEvent,\n StzhDatatableSortClickEvent,\n StzhDatatableSortDirectionChangeEvent,\n StzhDropdownChangeEvent,\n StzhPaginationChangeEvent,\n} from \"../../index\";\n\nimport { Document } from \"flexsearch/dist/flexsearch.bundle.min.js\";\nimport { parse } from \"papaparse\";\n\nimport { StzhDatatableLocalizedText } from \"./stzh-datatable.localization\";\nimport { hasSlot } from \"../../utils/utils\";\n\n/**\n * @slot heading - Slot for heading element\n * @slot action-button - Slot for action `stzh-button` element\n */\n@Component({\n tag: \"stzh-datatable\",\n styleUrl: \"stzh-datatable.scss\",\n})\nexport class StzhDatatable {\n /** Table layout */\n @Prop() tableLayout: \"auto\" | \"fixed\" = \"auto\";\n\n /** Translation strings */\n @Prop() localization: StzhDatatableLocalizedText;\n\n /** Label */\n @Prop() label: string = \"\";\n\n /** Sort by given column key */\n @Prop({ mutable: true }) sortBy: string = \"\";\n\n /** Sort direction */\n @Prop({ mutable: true }) sortDirection: \"asc\" | \"desc\" = \"asc\";\n\n /** Tokenize type */\n // @Prop() tokenize: \"strict\" | \"forward\" | \"reverse\" | \"full\" = \"forward\";\n\n /** ID field */\n @Prop() idField = \"id\";\n\n /** Row header field when list is used (`showList=true`) */\n @Prop() rowHeaderField = \"\";\n\n /* Whether to hide search */\n @Prop({ reflect: true }) hideSearch = false;\n\n /* Whether to hide column heading cells */\n @Prop({ reflect: true }) hideColumnHeadings = false;\n\n /** Whether to show table data as list on mikro breakpoint */\n @Prop({ reflect: true }) showList = false;\n\n /** Current page */\n @Prop({ mutable: true }) page: number = 1;\n\n /** If pagination should be shown, set a number of items to be shown by each page. */\n @Prop() pageSize: number = null;\n\n /** URL of the CSV data */\n @Prop() csvUrl: string;\n\n /** Whether csv has header row */\n @Prop() csvHeader: boolean = true;\n\n /** Whether csv has dynamic typing enabled */\n @Prop() csvDynamicTyping: boolean = true;\n\n /**\n * Whether to disable min-width of the table.\n *\n * If `false`, the default `min-width` is `700px`\n * If `true`, the `min-width` is `none`, so the table will try to squeeze down content as much as possible.\n *\n * You can also overwrite the min-width via CSS with the custom property `--min-width`.\n */\n @Prop({ reflect: true }) disableMinWidth: boolean = false;\n\n /**\n * Array of objects including the row data that must at least include `id` attribute (name can be changed with `idField` property).\n *\n * Example: [{\"id\":\"1\",\"text\":\"Foo\"}, ...]\n */\n @Prop({ mutable: true }) rows: StzhDatatableInputRowData[] | StzhDatatableCellData[][] | string = [];\n private _rows: StzhDatatableRowData[];\n private _rowsShown: StzhDatatableRowData[];\n private _rowsFiltered: StzhDatatableRowData[];\n\n /**\n * Array of objects including the columns data that must include `key` and `text` attribute.\n *\n * Example: [{ \"key\": \"id\", \"text\": \"ID\", \"align\": \"right\", \"sort\": true, \"fixed\": \"right\", style: { width: \"53px\" } }]\n */\n\n @Prop({ mutable: true }) columns: StzhDatatableColumnData[] | string = [];\n private _columns: StzhDatatableColumnData[];\n\n @State() query: string = \"\";\n @State() hasScrollLeft: boolean = false;\n @State() hasScrollRight: boolean = false;\n @State() isScrollable: boolean = false;\n @State() cellsStickyLeft: number[] = [];\n @State() cellsStickyRight: number[] = [];\n\n @Element() element: HTMLStzhDatatableElement;\n\n /** Datatable row click event */\n @Event() stzhRowClick: EventEmitter<StzhDatatableRowClickEvent>;\n\n /** Datatable cell click event */\n @Event() stzhCellClick: EventEmitter<StzhDatatableCellClickEvent>;\n\n /** Datatable heading cell click event */\n @Event() stzhHeadingCellClick: EventEmitter<StzhDatatableHeadingCellClickEvent>;\n\n /** Datatable sort click event */\n @Event() stzhSortClick: EventEmitter<StzhDatatableSortClickEvent>;\n\n /** Datatable sort by change event */\n @Event() stzhSortByChange: EventEmitter<StzhDatatableSortByChangeEvent>;\n\n /** Datatable sort direction change event */\n @Event() stzhSortDirectionChange: EventEmitter<StzhDatatableSortDirectionChangeEvent>;\n\n /** Toggle sort by a given column key like when clicking on a column header */\n @Method()\n async toggleSort(columnKey: string) {\n this.page = 1;\n\n if (columnKey === this.sortBy) {\n this.sortDirection = this.sortDirection === \"asc\" ? \"desc\" : \"asc\";\n } else {\n this.sortDirection = \"asc\";\n this.sortBy = columnKey;\n }\n }\n\n @Watch(\"csvUrls\")\n async csvUrlsWatcher(newUrl: string) {\n if (!newUrl) {\n return;\n }\n\n const response = await fetch(newUrl);\n const csvData = await response.text();\n const { columns, rows } = await this.parseCsvToJson(csvData);\n\n if (this.csvHeader) {\n this.columns = columns.map(column => ({\n ...column,\n ...(this._columns?.find(({ key }) => key === column.key) || {}),\n }));\n } else {\n this.columns = this.columns || columns;\n }\n\n this.rows = rows;\n }\n\n @Watch(\"rows\")\n rowsWatcher(newValue: StzhDatatableInputRowData[] | StzhDatatableCellData[][] | string) {\n let inputData: StzhDatatableInputRowData[] | StzhDatatableCellData[][];\n\n if (typeof newValue === \"string\") {\n inputData = JSON.parse(newValue);\n } else {\n inputData = newValue;\n }\n\n this._rows = inputData.map((rowData: StzhDatatableCellData[] | StzhDatatableInputRowData) => {\n const row: StzhDatatableRowData = {};\n\n function transformRowCell(cellData: StzhDatatableCellData | string | number) {\n const baseCellData: StzhDatatableCellData = {\n value: \"\",\n };\n\n if (typeof cellData === \"object\") {\n return {\n ...baseCellData,\n ...cellData,\n };\n } else {\n return {\n ...baseCellData,\n value: cellData,\n };\n }\n }\n\n this._columns.forEach((column, index) => {\n if (Array.isArray(rowData)) {\n row[column.key] = transformRowCell(rowData[index]);\n } else {\n row[column.key] = transformRowCell(rowData[column.key]);\n }\n });\n\n return row;\n });\n\n this.buildSearchIndex();\n }\n\n @Watch(\"columns\")\n columnsWatcher(newValue: StzhDatatableColumnData[] | string) {\n if (typeof newValue === \"string\") {\n this._columns = JSON.parse(newValue);\n } else {\n this._columns = newValue;\n }\n\n this.rowsWatcher(this.rows);\n }\n\n @Watch(\"sortBy\")\n sortByWatcher(value: string, oldValue: string) {\n this.stzhSortByChange.emit({\n component: \"stzh-datatable\",\n value,\n oldValue,\n });\n }\n\n @Watch(\"sortDirection\")\n sortDirectionWatcher(value: \"asc\" | \"desc\", oldValue: \"asc\" | \"desc\") {\n this.stzhSortDirectionChange.emit({\n component: \"stzh-datatable\",\n value,\n oldValue,\n });\n }\n\n private input: HTMLStzhInputElement;\n private searchIndex: Document;\n private tableWrapper: HTMLDivElement;\n private debounceScroll: number;\n\n private debounceResize: number;\n private resizeObserver: ResizeObserver;\n\n private async parseCsvToJson(csvData: string): Promise<{\n columns: { key: string; text: string }[];\n rows: { [key: string]: string | number }[];\n }> {\n return new Promise((resolve, reject) => {\n parse(csvData, {\n header: this.csvHeader,\n dynamicTyping: this.csvDynamicTyping,\n complete: result => {\n const normalizedData = result.data.map(row => {\n const normalizedRow = {};\n Object.keys(row).forEach(key => {\n normalizedRow[key.toLowerCase()] = row[key];\n });\n return normalizedRow;\n });\n resolve({\n columns: Object.keys(result.data[0]).map(key => ({\n key: key.toLowerCase(),\n text: key,\n })),\n rows: normalizedData,\n });\n },\n error: error => {\n reject(error);\n },\n });\n });\n }\n\n private handleSortByDropdownChange = async (event: CustomEvent<StzhDropdownChangeEvent>) => {\n const target: HTMLStzhDropdownElement = event.target as HTMLStzhDropdownElement;\n const sortBy = (await target.getValue()) as string;\n this.sortBy = sortBy;\n };\n\n private handleSortDirectionDropdownChange = async (event: CustomEvent<StzhDropdownChangeEvent>) => {\n const target: HTMLStzhDropdownElement = event.target as HTMLStzhDropdownElement;\n const sortDirection = (await target.getValue()) as \"asc\" | \"desc\";\n this.sortDirection = sortDirection;\n };\n\n private handleRowClick = (event: MouseEvent, row: StzhDatatableRowData) => {\n this.stzhRowClick.emit({\n component: \"stzh-datatable\",\n row,\n originalEvent: event,\n });\n };\n\n private handleCellClick = (\n event: MouseEvent,\n row: StzhDatatableRowData,\n column: StzhDatatableColumnData,\n cellIndex: number,\n rowIndex: number\n ) => {\n this.stzhCellClick.emit({\n component: \"stzh-datatable\",\n row,\n column,\n cellIndex,\n rowIndex,\n originalEvent: event,\n });\n };\n\n private handleHeadingCellClick(event: MouseEvent, column: StzhDatatableColumnData, index: number) {\n this.stzhHeadingCellClick.emit({\n component: \"stzh-datatable\",\n column,\n index,\n originalEvent: event,\n });\n }\n\n private handleSortClick = (event: MouseEvent, column: StzhDatatableColumnData) => {\n this.stzhSortClick.emit({\n component: \"stzh-datatable\",\n column,\n originalEvent: event,\n });\n\n this.toggleSort(column.key);\n };\n\n private updateScrollStates = () => {\n if (!this.tableWrapper) {\n return;\n }\n\n const wrapperScrollLeft = this.tableWrapper.scrollLeft;\n const wrapperScrollWidth = this.tableWrapper.scrollWidth;\n const wrapperClientWidth = this.tableWrapper.clientWidth;\n\n this.isScrollable = wrapperScrollWidth > wrapperClientWidth;\n this.hasScrollLeft = wrapperScrollLeft > 0;\n this.hasScrollRight = wrapperScrollLeft < wrapperScrollWidth - wrapperClientWidth;\n\n const rows: HTMLTableRowElement[] = Array.from(this.tableWrapper.querySelectorAll(\"tr\"));\n const firstRow = rows[0];\n\n if (!firstRow) {\n return;\n }\n\n this.cellsStickyLeft = [];\n this.cellsStickyRight = [];\n const cells: Element[] = Array.from(firstRow.children);\n\n cells.forEach((cell: HTMLTableCellElement, index: number) => {\n const offsetLeft = cell.offsetLeft;\n const offsetRight = offsetLeft + cell.offsetWidth;\n\n if (this.hasScrollLeft && this._columns[index].fixed === \"left\" && Math.ceil(wrapperScrollLeft) >= offsetLeft) {\n this.cellsStickyLeft.push(index);\n }\n\n if (\n this.hasScrollRight &&\n this._columns[index].fixed === \"right\" &&\n Math.ceil(wrapperScrollLeft) + wrapperClientWidth <= offsetRight\n ) {\n this.cellsStickyRight.push(index);\n }\n });\n };\n\n private handleResize = () => {\n if (this.debounceResize) {\n window.cancelAnimationFrame(this.debounceResize);\n }\n\n this.debounceResize = requestAnimationFrame(this.updateScrollStates);\n };\n\n private handleScroll = () => {\n if (this.debounceScroll) {\n window.cancelAnimationFrame(this.debounceScroll);\n }\n\n this.debounceScroll = requestAnimationFrame(this.updateScrollStates);\n };\n\n private buildSearchIndex() {\n if (!this._rows || this._rows.length === 0 || !this._columns || this._columns.length === 0) {\n return;\n }\n\n this.searchIndex = new Document({\n tokenize: \"forward\",\n matcher: {\n \"[äà]\": \"a\",\n \"[öó]\": \"o\",\n \"[üûúù]\": \"u\",\n \"[éè]\": \"e\",\n },\n document: {\n id: this.idField,\n index: this._columns.map(column => column.key),\n },\n });\n\n this._rows.forEach(row => {\n const rowData: {\n [key: string]: string;\n } = {};\n\n for (const columnKey in row) {\n rowData[columnKey] = row[columnKey].value.toString();\n }\n\n this.searchIndex.add(rowData);\n });\n }\n\n private onInputChange = () => {\n this.query = this.input.value;\n };\n\n private onPaginationChange = (event: CustomEvent<StzhPaginationChangeEvent>) => {\n if (event.detail.component === \"stzh-pagination\") {\n this.page = event.detail.page;\n }\n };\n\n async componentWillLoad() {\n this.columnsWatcher(this.columns);\n await this.csvUrlsWatcher(this.csvUrl);\n\n if (!this.localization) {\n this.localization = await window.stzhComponents.utils.fetchTranslations(this.element, \"datatable\");\n }\n }\n\n componentDidLoad() {\n this.updateScrollStates();\n }\n\n componentWillRender() {\n this._rowsShown = [];\n this._rowsFiltered = [];\n\n if (this.query) {\n let resultIds = [];\n\n this.searchIndex.search(this.query).forEach(result => {\n resultIds = [...resultIds, ...result.result];\n });\n\n resultIds = resultIds.filter(function (item, pos) {\n return resultIds.indexOf(item) === pos;\n });\n\n this._rows.forEach(row => {\n if (resultIds.includes(row[this.idField].value) || resultIds.includes(row[this.idField].value.toString())) {\n this._rowsFiltered.push(row);\n }\n });\n } else {\n this._rowsFiltered = [...this._rows];\n }\n\n if (this.sortBy) {\n const columnConfig = this._columns.find(column => column.key === this.sortBy);\n\n let column = this.sortBy;\n let type = null;\n\n if (typeof columnConfig.sort === \"object\") {\n if (columnConfig.sort.field) {\n column = columnConfig.sort.field;\n }\n\n if (columnConfig.sort.type) {\n type = columnConfig.sort.type;\n }\n }\n\n this._rowsFiltered.sort((rowA, rowB) => {\n if (type === \"numerical\") {\n if (this.sortDirection === \"asc\") {\n return Number(rowA[column].value) - Number(rowB[column].value);\n } else {\n return Number(rowB[column].value) - Number(rowA[column].value);\n }\n } else {\n const comparison = rowA[column].value.toString().localeCompare(rowB[column].value.toString());\n return this.sortDirection === \"asc\" ? comparison : comparison / -1;\n }\n });\n }\n\n if (this.pageSize !== null) {\n const pageEnd = this.page * this.pageSize;\n this._rowsShown = this._rowsFiltered.slice(pageEnd - this.pageSize, pageEnd);\n } else {\n this._rowsShown = [...this._rowsFiltered];\n }\n }\n\n connectedCallback() {\n this.resizeObserver = new ResizeObserver(this.handleResize);\n this.resizeObserver.observe(this.element);\n }\n\n disconnectedCallback() {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n }\n\n render() {\n const headingSlotUsed = hasSlot(this.element, \"heading\");\n const actionButtonSlotUsed = hasSlot(this.element, \"action-button\");\n\n const classes = {\n \"stzh-datatable\": true,\n \"is-scrollable\": this.isScrollable,\n \"has-scroll-left\": this.hasScrollLeft,\n \"has-scroll-right\": this.hasScrollRight,\n \"has-scroll-left-shadow\": this.hasScrollLeft && this.cellsStickyLeft.length === 0,\n \"has-scroll-right-shadow\": this.hasScrollRight && this.cellsStickyRight.length === 0,\n \"has-list\": this.showList,\n \"has-heading\": headingSlotUsed,\n \"has-action-or-search\": actionButtonSlotUsed || !this.hideSearch,\n \"has-header\": headingSlotUsed || actionButtonSlotUsed || !this.hideSearch,\n };\n\n const totalPages = Math.ceil(this._rowsFiltered.length / this.pageSize);\n\n const firstHeaderColumn = this._columns.find(column => column.isHeader);\n\n const sortByOptions = [\n {\n text: this.localization.sortByDefaultOption,\n value: \"\",\n },\n ...this._columns\n .filter(column => !!column.sort)\n .map(column => ({\n value: column.key,\n text: this.localization.sortByOption?.replace(/\\{column\\}/gi, column.text),\n })),\n ];\n\n const sortDirectionOptions = [\n {\n value: \"asc\",\n text: this.localization.sortDirectionOption?.replace(/\\{direction\\}/gi, this.localization.asc),\n },\n {\n value: \"desc\",\n text: this.localization.sortDirectionOption?.replace(/\\{direction\\}/gi, this.localization.desc),\n },\n ];\n\n const getCellClasses = (column: StzhDatatableColumnData, row: StzhDatatableRowData, index: number) => {\n return {\n \"stzh-datatable__cell stzh-datatable__cell--body\": true,\n \"is-sticky-left\": column.fixed === \"left\",\n \"is-sticky-right\": column.fixed === \"right\",\n \"is-head\": !!row[column.key]?.isHeader || !!column.isHeader,\n \"is-sortable\": !!column.sort,\n \"has-sticked\": this.cellsStickyLeft.indexOf(index) > -1 || this.cellsStickyRight.indexOf(index) > -1,\n \"has-sorted\": column.key === this.sortBy,\n \"has-sorted-asc\": column.key === this.sortBy && this.sortDirection === \"asc\",\n \"has-sorted-desc\": column.key === this.sortBy && this.sortDirection === \"desc\",\n [`align-${row[column.key]?.align || column.align}`]: !!row[column.key]?.align || !!column.align,\n [`valign-${row[column.key]?.valign || column.valign}`]: !!row[column.key]?.valign || !!column.valign,\n };\n };\n\n return (\n <Host>\n <div class={classes}>\n <div class=\"stzh-datatable__header\">\n <div class=\"stzh-datatable__heading\">\n <slot name=\"heading\"></slot>\n </div>\n <div class=\"stzh-datatable__sub-header\">\n {!this.hideSearch && (\n <stzh-input\n ref={el => (this.input = el as HTMLStzhInputElement)}\n class=\"stzh-datatable__search\"\n size=\"small\"\n name=\"stzh-datatable-search\"\n onStzhChange={this.onInputChange}\n hideOptional={true}\n label={this.localization.searchLabel}\n type=\"search\"\n ></stzh-input>\n )}\n <div class=\"stzh-datatable__action-button\">\n <slot name=\"action-button\"></slot>\n </div>\n </div>\n </div>\n\n <div class=\"stzh-datatable__outer-wrapper\">\n <div\n ref={el => (this.tableWrapper = el as HTMLDivElement)}\n class=\"stzh-datatable__wrapper\"\n onScroll={this.handleScroll}\n >\n <table\n class={{\n \"stzh-datatable__table\": true,\n \"has-layout-fixed\": this.tableLayout === \"fixed\",\n }}\n >\n {!this.hideColumnHeadings && (\n <thead class=\"stzh-datatable__thead\">\n <tr class=\"stzh-datatable__row stzh-datatable__row--head\">\n {(() => {\n let colspanOffset = 0;\n return this._columns.map((column, index) => {\n if (colspanOffset > 0) {\n colspanOffset--;\n return null;\n }\n\n const colspan = column.colspan || 1;\n if (colspan > 1) {\n colspanOffset = colspan - 1;\n }\n\n return (\n <th\n onClick={event => this.handleHeadingCellClick(event, column, index)}\n style={column.style}\n class={{\n \"stzh-datatable__cell stzh-datatable__cell--head\": true,\n \"is-sticky-left\": column.fixed === \"left\",\n \"is-sticky-right\": column.fixed === \"right\",\n \"is-sortable\": !!column.sort,\n \"has-sticked\":\n this.cellsStickyLeft.indexOf(index) > -1 || this.cellsStickyRight.indexOf(index) > -1,\n \"has-sorted\": column.key === this.sortBy,\n \"has-sorted-asc\": column.key === this.sortBy && this.sortDirection === \"asc\",\n \"has-sorted-desc\": column.key === this.sortBy && this.sortDirection === \"desc\",\n [`align-${column.align}`]: !!column.align,\n [`valign-${column.valign}`]: !!column.valign,\n }}\n {...(colspan > 1 ? { colspan } : {})}\n {...(column.rowspan ? { rowspan: column.rowspan } : {})}\n >\n {!column.hideColumnHeading &&\n (column.sort ? (\n <button\n class=\"stzh-datatable__sort-button\"\n type=\"button\"\n onClick={event => this.handleSortClick(event, column)}\n s-object-id={column.analyticsId || `${column.text} ${this.localization.columnSort}`}\n >\n <span>{column.text}</span>\n <stzh-icon\n name=\"arrow-up\"\n class=\"stzh-datatable__sort-icon\"\n a11yTitle={this.localization.columnSort}\n ></stzh-icon>\n </button>\n ) : (\n <span>{column.text}</span>\n ))}\n </th>\n );\n });\n })()}\n </tr>\n </thead>\n )}\n <tbody class=\"stzh-datatable__tbody\">\n {(() => {\n const rowspanOffsets = [];\n\n return this._rowsShown.map((row, rowIndex) => (\n <tr\n class=\"stzh-datatable__row stzh-datatable__row--body\"\n onClick={event => this.handleRowClick(event, row)}\n >\n {(() => {\n let colspanOffset = 0;\n return this._columns.map((column, index) => {\n if (rowspanOffsets[index]) {\n rowspanOffsets[index]--;\n return null;\n }\n if (colspanOffset > 0) {\n colspanOffset--;\n return null;\n }\n\n const cell = row[column.key];\n const colspan = cell?.colspan || 1;\n const rowspan = cell?.rowspan || 1;\n\n if (colspan > 1) {\n colspanOffset = colspan - 1;\n }\n if (rowspan > 1) {\n rowspanOffsets[index] = rowspan - 1;\n }\n\n return cell?.isHeader || column.isHeader ? (\n <th\n id={cell.id}\n onClick={event => this.handleCellClick(event, row, column, index, rowIndex)}\n innerHTML={cell.value.toString() || \"\"}\n style={column.style}\n {...(colspan > 1 ? { colspan } : {})}\n {...(rowspan > 1 ? { rowspan } : {})}\n class={getCellClasses(column, row, index)}\n ></th>\n ) : (\n <td\n id={cell.id}\n onClick={event => this.handleCellClick(event, row, column, index, rowIndex)}\n innerHTML={cell.value.toString() || \"\"}\n style={column.style}\n {...(colspan > 1 ? { colspan } : {})}\n {...(rowspan > 1 ? { rowspan } : {})}\n class={getCellClasses(column, row, index)}\n ></td>\n );\n });\n })()}\n </tr>\n ));\n })()}\n </tbody>\n </table>\n </div>\n </div>\n\n {this.showList && (\n <div class=\"stzh-datatable__list-wrapper\">\n {sortByOptions.length > 1 && (\n <div class=\"stzh-datatable__list-sort-wrapper\">\n <stzh-dropdown\n inline\n no-search\n class=\"stzh-datatable__list-sort-by-dropdown\"\n variant=\"plain\"\n size=\"small\"\n items={[this.sortBy]}\n options={sortByOptions}\n onStzhChange={this.handleSortByDropdownChange}\n ></stzh-dropdown>\n <stzh-dropdown\n disabled={this.sortBy === \"\"}\n inline\n no-search\n class=\"stzh-datatable__list-sort-direction-dropdown\"\n variant=\"plain\"\n size=\"small\"\n items={[this.sortDirection]}\n options={sortDirectionOptions}\n onStzhChange={this.handleSortDirectionDropdownChange}\n ></stzh-dropdown>\n </div>\n )}\n\n <stzh-accordion variant=\"table\">\n {this._rowsShown.map((row, index) => (\n <stzh-accordion-item\n heading={\n row[this.rowHeaderField]?.value?.toString() ||\n row[firstHeaderColumn?.key]?.value?.toString() ||\n this.localization.defaultListRowHeading.replace(/\\{n\\}/gi, (index + 1).toString())\n }\n >\n <stzh-datalist variant=\"table\" columnsMedium={2}>\n {this._columns.map(column => (\n <stzh-datalist-item\n label={column.text}\n value={row[column.key]?.value?.toString() || \"\"}\n ></stzh-datalist-item>\n ))}\n </stzh-datalist>\n </stzh-accordion-item>\n ))}\n </stzh-accordion>\n </div>\n )}\n\n {this.pageSize !== null && totalPages > 1 && (\n <div class=\"stzh-datatable__pagination-wrapper\">\n <stzh-pagination\n value={this.page}\n total={totalPages}\n onStzhChange={this.onPaginationChange}\n ></stzh-pagination>\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n"]}