@unidy.io/sdk 1.2.0-alpha9 → 1.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 (715) hide show
  1. package/dist/cjs/_commonjsHelpers-CFO10eej.js +10 -0
  2. package/dist/cjs/_commonjsHelpers-CFO10eej.js.map +1 -0
  3. package/dist/cjs/app-globals-C-Wl5lPS.js +10 -0
  4. package/dist/cjs/app-globals-C-Wl5lPS.js.map +1 -0
  5. package/dist/cjs/{auth-store-DPmGKHZ2.js → auth-store-0vv3uOib.js} +4 -4
  6. package/dist/cjs/{auth-store-DPmGKHZ2.js.map → auth-store-0vv3uOib.js.map} +1 -1
  7. package/dist/cjs/component-DLxnZCW6.js +34 -0
  8. package/dist/cjs/component-DLxnZCW6.js.map +1 -0
  9. package/dist/cjs/component-utils-XXctnOM9.js +38 -0
  10. package/dist/cjs/component-utils-XXctnOM9.js.map +1 -0
  11. package/dist/cjs/de-BWF6Glzg.js +704 -0
  12. package/dist/cjs/de-BWF6Glzg.js.map +1 -0
  13. package/dist/cjs/en-GB-DhD5mdQw.js +119 -0
  14. package/dist/cjs/en-GB-DhD5mdQw.js.map +1 -0
  15. package/dist/cjs/{flash-store-gbSYhPAV.js → flash-store-CR6Umh1O.js} +3 -3
  16. package/dist/cjs/{flash-store-gbSYhPAV.js.map → flash-store-CR6Umh1O.js.map} +1 -1
  17. package/dist/cjs/fr-j2wwoj-A.js +577 -0
  18. package/dist/cjs/fr-j2wwoj-A.js.map +1 -0
  19. package/dist/cjs/has-slot-content-CfJbU4t-.js +37 -0
  20. package/dist/cjs/has-slot-content-CfJbU4t-.js.map +1 -0
  21. package/dist/cjs/{i18n-D5j_Zl-4.js → i18n-ClWrNmGh.js} +100 -4
  22. package/dist/cjs/{i18n-D5j_Zl-4.js.map → i18n-ClWrNmGh.js.map} +1 -1
  23. package/dist/cjs/{index-B325yXfO.js → index-2Fz3r5o0.js} +5 -41
  24. package/dist/cjs/index-2Fz3r5o0.js.map +1 -0
  25. package/dist/cjs/{index-yaeiYlfa.js → index-C6ZBKFYr.js} +3 -3
  26. package/dist/cjs/{index-yaeiYlfa.js.map → index-C6ZBKFYr.js.map} +1 -1
  27. package/dist/cjs/{index-BzPYBLYC.js → index-CpPKy1CZ.js} +1170 -1087
  28. package/dist/cjs/index-CpPKy1CZ.js.map +1 -0
  29. package/dist/cjs/index.cjs.js +24 -11
  30. package/dist/cjs/index.cjs.js.map +1 -1
  31. package/dist/cjs/loader.cjs.js +3 -3
  32. package/dist/cjs/{newsletter-helpers-hdDC5X-V.js → newsletter-helpers-BHvOI8M4.js} +46 -9
  33. package/dist/cjs/newsletter-helpers-BHvOI8M4.js.map +1 -0
  34. package/dist/cjs/{newsletter-store-CupsLgO9.js → newsletter-store-22Jswiqe.js} +5 -3
  35. package/dist/cjs/newsletter-store-22Jswiqe.js.map +1 -0
  36. package/dist/cjs/nl-BE-yKvOp1-G.js +542 -0
  37. package/dist/cjs/nl-BE-yKvOp1-G.js.map +1 -0
  38. package/dist/cjs/{profile-helpers-Bprrm-Xl.js → profile-helpers-BBpAqHjK.js} +4 -4
  39. package/dist/cjs/{profile-helpers-Bprrm-Xl.js.map → profile-helpers-BBpAqHjK.js.map} +1 -1
  40. package/dist/cjs/{profile-store-C_q-TuA_.js → profile-store-CQEQhPQD.js} +4 -4
  41. package/dist/cjs/{profile-store-C_q-TuA_.js.map → profile-store-CQEQhPQD.js.map} +1 -1
  42. package/dist/cjs/redirect-with-token-wupYX97S.js +37 -0
  43. package/dist/cjs/redirect-with-token-wupYX97S.js.map +1 -0
  44. package/dist/cjs/ro-CXq9d1lv.js +578 -0
  45. package/dist/cjs/ro-CXq9d1lv.js.map +1 -0
  46. package/dist/cjs/sdk.cjs.js +3 -3
  47. package/dist/cjs/sv-CMln4V33.js +597 -0
  48. package/dist/cjs/sv-CMln4V33.js.map +1 -0
  49. package/dist/cjs/u-conditional-render.cjs.entry.js +14 -14
  50. package/dist/cjs/u-conditional-render.entry.cjs.js.map +1 -1
  51. package/dist/cjs/u-config.cjs.entry.js +24 -11
  52. package/dist/cjs/u-config.entry.cjs.js.map +1 -1
  53. package/dist/cjs/u-email-field.cjs.entry.js +7 -7
  54. package/dist/cjs/u-error-message.cjs.entry.js +49 -22
  55. package/dist/cjs/u-error-message.entry.cjs.js.map +1 -1
  56. package/dist/cjs/u-field.u-raw-field.entry.cjs.js.map +1 -1
  57. package/dist/cjs/u-field_2.cjs.entry.js +124 -12
  58. package/dist/cjs/u-flash-message.cjs.entry.js +3 -3
  59. package/dist/cjs/u-full-profile.cjs.entry.js +6 -6
  60. package/dist/cjs/u-jump-to-service.cjs.entry.js +23 -44
  61. package/dist/cjs/u-jump-to-service.entry.cjs.js.map +1 -1
  62. package/dist/cjs/u-jump-to-unidy.cjs.entry.js +22 -43
  63. package/dist/cjs/u-jump-to-unidy.entry.cjs.js.map +1 -1
  64. package/dist/cjs/u-logout-button.u-signed-in.entry.cjs.js.map +1 -1
  65. package/dist/cjs/u-logout-button_2.cjs.entry.js +15 -22
  66. package/dist/cjs/u-magic-code-field.cjs.entry.js +8 -9
  67. package/dist/cjs/u-magic-code-field.entry.cjs.js.map +1 -1
  68. package/dist/cjs/u-missing-field.cjs.entry.js +6 -5
  69. package/dist/cjs/u-missing-field.entry.cjs.js.map +1 -1
  70. package/dist/cjs/u-missing-fields-submit-button.cjs.entry.js +16 -14
  71. package/dist/cjs/u-missing-fields-submit-button.entry.cjs.js.map +1 -1
  72. package/dist/cjs/u-newsletter-checkbox.cjs.entry.js +11 -12
  73. package/dist/cjs/u-newsletter-checkbox.entry.cjs.js.map +1 -1
  74. package/dist/cjs/u-newsletter-consent-checkbox.cjs.entry.js +4 -4
  75. package/dist/cjs/u-newsletter-logout-button.cjs.entry.js +15 -20
  76. package/dist/cjs/u-newsletter-logout-button.entry.cjs.js.map +1 -1
  77. package/dist/cjs/u-newsletter-preference-checkbox.cjs.entry.js +11 -12
  78. package/dist/cjs/u-newsletter-preference-checkbox.entry.cjs.js.map +1 -1
  79. package/dist/cjs/u-newsletter-resend-doi-button.cjs.entry.js +10 -11
  80. package/dist/cjs/u-newsletter-resend-doi-button.entry.cjs.js.map +1 -1
  81. package/dist/cjs/u-newsletter-root.cjs.entry.js +45 -22
  82. package/dist/cjs/u-newsletter-root.entry.cjs.js.map +1 -1
  83. package/dist/cjs/u-newsletter-toggle-subscription-button.cjs.entry.js +11 -12
  84. package/dist/cjs/u-newsletter-toggle-subscription-button.entry.cjs.js.map +1 -1
  85. package/dist/cjs/u-pagination-button.cjs.entry.js +4 -4
  86. package/dist/cjs/u-pagination-button.entry.cjs.js.map +1 -1
  87. package/dist/cjs/u-pagination-page.cjs.entry.js +4 -4
  88. package/dist/cjs/u-pagination-page.entry.cjs.js.map +1 -1
  89. package/dist/cjs/u-passkey.cjs.entry.js +8 -9
  90. package/dist/cjs/u-passkey.entry.cjs.js.map +1 -1
  91. package/dist/cjs/u-password-field.cjs.entry.js +5 -5
  92. package/dist/cjs/u-profile.u-submit-button.entry.cjs.js.map +1 -1
  93. package/dist/cjs/u-profile_2.cjs.entry.js +31 -33
  94. package/dist/cjs/u-registration-button.cjs.entry.js +5 -5
  95. package/dist/cjs/u-reset-password-button.cjs.entry.js +12 -15
  96. package/dist/cjs/u-reset-password-button.entry.cjs.js.map +1 -1
  97. package/dist/cjs/u-send-magic-code-button.cjs.entry.js +8 -9
  98. package/dist/cjs/u-send-magic-code-button.entry.cjs.js.map +1 -1
  99. package/dist/cjs/u-signin-root.cjs.entry.js +6 -8
  100. package/dist/cjs/u-signin-root.entry.cjs.js.map +1 -1
  101. package/dist/cjs/u-signin-step.cjs.entry.js +17 -21
  102. package/dist/cjs/u-signin-step.entry.cjs.js.map +1 -1
  103. package/dist/cjs/u-social-login-button.cjs.entry.js +16 -15
  104. package/dist/cjs/u-social-login-button.entry.cjs.js.map +1 -1
  105. package/dist/cjs/u-spinner.cjs.entry.js +3 -3
  106. package/dist/cjs/u-spinner.entry.cjs.js.map +1 -1
  107. package/dist/cjs/u-ticketable-export.cjs.entry.js +76 -0
  108. package/dist/cjs/u-ticketable-export.entry.cjs.js.map +1 -0
  109. package/dist/cjs/u-ticketable-list-D3M8iA-g.js +3991 -0
  110. package/dist/cjs/u-ticketable-list-D3M8iA-g.js.map +1 -0
  111. package/dist/cjs/u-ticketable-list.cjs.entry.js +11 -6118
  112. package/dist/cjs/u-ticketable-list.entry.cjs.js.map +1 -1
  113. package/dist/cjs/{unidy-store-BGnWn9pc.js → unidy-store-Bvnl24i9.js} +3 -3
  114. package/dist/cjs/{unidy-store-BGnWn9pc.js.map → unidy-store-Bvnl24i9.js.map} +1 -1
  115. package/dist/collection/api/base-service.js.map +1 -1
  116. package/dist/collection/api/client.js.map +1 -1
  117. package/dist/collection/api/index.js +6 -6
  118. package/dist/collection/api/index.js.map +1 -1
  119. package/dist/collection/api/standalone.js +88 -39
  120. package/dist/collection/api/standalone.js.map +1 -1
  121. package/dist/collection/auth/api/auth.js.map +1 -1
  122. package/dist/collection/auth/api/schemas.js +5 -5
  123. package/dist/collection/auth/api/schemas.js.map +1 -1
  124. package/dist/collection/auth/auth-helpers.js +7 -8
  125. package/dist/collection/auth/auth-helpers.js.map +1 -1
  126. package/dist/collection/auth/auth.js +1 -0
  127. package/dist/collection/auth/auth.js.map +1 -1
  128. package/dist/collection/auth/components/jump-to-service/jump-to-service.js +20 -40
  129. package/dist/collection/auth/components/jump-to-service/jump-to-service.js.map +1 -1
  130. package/dist/collection/auth/components/jump-to-unidy/jump-to-unidy.js +20 -39
  131. package/dist/collection/auth/components/jump-to-unidy/jump-to-unidy.js.map +1 -1
  132. package/dist/collection/auth/components/logout-button/logout-button.js +7 -11
  133. package/dist/collection/auth/components/logout-button/logout-button.js.map +1 -1
  134. package/dist/collection/auth/components/missing-field/missing-field.js +25 -1
  135. package/dist/collection/auth/components/missing-field/missing-field.js.map +1 -1
  136. package/dist/collection/auth/components/missing-fields-submit-button/missing-fields-submit-button.js +33 -7
  137. package/dist/collection/auth/components/missing-fields-submit-button/missing-fields-submit-button.js.map +1 -1
  138. package/dist/collection/auth/components/password-field/password-field.js +1 -1
  139. package/dist/collection/auth/components/reset-pass-button/reset-pass-button.js +6 -8
  140. package/dist/collection/auth/components/reset-pass-button/reset-pass-button.js.map +1 -1
  141. package/dist/collection/auth/components/signed-in/signed-in.js +2 -5
  142. package/dist/collection/auth/components/signed-in/signed-in.js.map +1 -1
  143. package/dist/collection/auth/components/signin-root/signin-root.js +2 -5
  144. package/dist/collection/auth/components/signin-root/signin-root.js.map +1 -1
  145. package/dist/collection/auth/components/signin-step/signin-step.js +9 -13
  146. package/dist/collection/auth/components/signin-step/signin-step.js.map +1 -1
  147. package/dist/collection/auth/components/social-logins/social-login-button.css +1 -1
  148. package/dist/collection/auth/components/social-logins/social-login-button.js +11 -12
  149. package/dist/collection/auth/components/social-logins/social-login-button.js.map +1 -1
  150. package/dist/collection/auth/components/submit-button/auth-submit-button.js +10 -0
  151. package/dist/collection/auth/components/submit-button/auth-submit-button.js.map +1 -1
  152. package/dist/collection/collection-manifest.json +1 -0
  153. package/dist/collection/locales/de.json +16 -0
  154. package/dist/collection/locales/en.json +16 -0
  155. package/dist/collection/locales/fr.json +16 -0
  156. package/dist/collection/locales/it.json +16 -0
  157. package/dist/collection/locales/nl_be.json +16 -0
  158. package/dist/collection/locales/ro.json +16 -0
  159. package/dist/collection/logger.js +0 -37
  160. package/dist/collection/logger.js.map +1 -1
  161. package/dist/collection/newsletter/api/newsletters.js +19 -18
  162. package/dist/collection/newsletter/api/newsletters.js.map +1 -1
  163. package/dist/collection/newsletter/components/consent-checkbox/consent-checkbox.js +1 -1
  164. package/dist/collection/newsletter/components/logout-button/logout-button.js +6 -10
  165. package/dist/collection/newsletter/components/logout-button/logout-button.js.map +1 -1
  166. package/dist/collection/newsletter/components/newsletter-checkbox/newsletter-checkbox.js +1 -1
  167. package/dist/collection/newsletter/components/newsletter-root/newsletter-root.js +65 -10
  168. package/dist/collection/newsletter/components/newsletter-root/newsletter-root.js.map +1 -1
  169. package/dist/collection/newsletter/components/preference-checkbox/preference-checkbox.js +1 -1
  170. package/dist/collection/newsletter/components/toggle-subscription-button/toggle-subscription-button.js +1 -1
  171. package/dist/collection/newsletter/newsletter-helpers.js +39 -2
  172. package/dist/collection/newsletter/newsletter-helpers.js.map +1 -1
  173. package/dist/collection/newsletter/store/newsletter-store.js +2 -0
  174. package/dist/collection/newsletter/store/newsletter-store.js.map +1 -1
  175. package/dist/collection/profile/api/profile.js.map +1 -1
  176. package/dist/collection/profile/api/schemas.js +1 -1
  177. package/dist/collection/profile/api/schemas.js.map +1 -1
  178. package/dist/collection/profile/components/field/field.js +3 -1
  179. package/dist/collection/profile/components/field/field.js.map +1 -1
  180. package/dist/collection/profile/components/full-profile/full-profile.js +1 -1
  181. package/dist/collection/profile/components/raw-field/raw-field.js +40 -7
  182. package/dist/collection/profile/components/raw-field/raw-field.js.map +1 -1
  183. package/dist/collection/profile/store/profile-store.js +1 -1
  184. package/dist/collection/profile/store/profile-store.js.map +1 -1
  185. package/dist/collection/shared/base/component.js +28 -0
  186. package/dist/collection/shared/base/component.js.map +1 -0
  187. package/dist/collection/shared/base/has-slot-content.js +31 -0
  188. package/dist/collection/shared/base/has-slot-content.js.map +1 -0
  189. package/dist/collection/shared/component-utils.js +23 -27
  190. package/dist/collection/shared/component-utils.js.map +1 -1
  191. package/dist/collection/shared/components/conditional-render/conditional-render.js +4 -5
  192. package/dist/collection/shared/components/conditional-render/conditional-render.js.map +1 -1
  193. package/dist/collection/shared/components/config/config.js +18 -5
  194. package/dist/collection/shared/components/config/config.js.map +1 -1
  195. package/dist/collection/shared/components/email-field/email-field.js +1 -1
  196. package/dist/collection/shared/components/error-message/error-message.css +1 -1
  197. package/dist/collection/shared/components/error-message/error-message.js +44 -17
  198. package/dist/collection/shared/components/error-message/error-message.js.map +1 -1
  199. package/dist/collection/shared/components/spinner/spinner.css +1 -1
  200. package/dist/collection/shared/components/spinner/spinner.js +1 -1
  201. package/dist/collection/shared/components/submit-button/submit-button.css +1 -1
  202. package/dist/collection/shared/components/submit-button/submit-button.js +12 -23
  203. package/dist/collection/shared/components/submit-button/submit-button.js.map +1 -1
  204. package/dist/collection/shared/context-utils.js +96 -0
  205. package/dist/collection/shared/context-utils.js.map +1 -0
  206. package/dist/collection/shared/utils/redirect-with-token.js +30 -0
  207. package/dist/collection/shared/utils/redirect-with-token.js.map +1 -0
  208. package/dist/collection/shared/utils/url-utils.js +25 -0
  209. package/dist/collection/shared/utils/url-utils.js.map +1 -0
  210. package/dist/collection/ticketable/api/schemas.js +10 -2
  211. package/dist/collection/ticketable/api/schemas.js.map +1 -1
  212. package/dist/collection/ticketable/api/subscriptions.js +22 -1
  213. package/dist/collection/ticketable/api/subscriptions.js.map +1 -1
  214. package/dist/collection/ticketable/api/tickets.js +22 -1
  215. package/dist/collection/ticketable/api/tickets.js.map +1 -1
  216. package/dist/collection/ticketable/components/pagination/pagination-button.js +3 -5
  217. package/dist/collection/ticketable/components/pagination/pagination-button.js.map +1 -1
  218. package/dist/collection/ticketable/components/pagination/pagination-page.js +3 -5
  219. package/dist/collection/ticketable/components/pagination/pagination-page.js.map +1 -1
  220. package/dist/collection/ticketable/components/ticketable-export/ticketable-export.js +175 -0
  221. package/dist/collection/ticketable/components/ticketable-export/ticketable-export.js.map +1 -0
  222. package/dist/collection/ticketable/components/ticketable-list/ticketable-list.js +163 -25
  223. package/dist/collection/ticketable/components/ticketable-list/ticketable-list.js.map +1 -1
  224. package/dist/collection/ticketable/index.js +1 -0
  225. package/dist/collection/ticketable/index.js.map +1 -1
  226. package/dist/components/_commonjsHelpers.js +8 -0
  227. package/dist/components/_commonjsHelpers.js.map +1 -0
  228. package/dist/components/component-utils.js +25 -28
  229. package/dist/components/component-utils.js.map +1 -1
  230. package/dist/components/component.js +33 -0
  231. package/dist/components/component.js.map +1 -0
  232. package/dist/components/de.js +702 -0
  233. package/dist/components/de.js.map +1 -0
  234. package/dist/components/en-GB.js +117 -0
  235. package/dist/components/en-GB.js.map +1 -0
  236. package/dist/components/field.js +3 -1
  237. package/dist/components/field.js.map +1 -1
  238. package/dist/components/fr.js +575 -0
  239. package/dist/components/fr.js.map +1 -0
  240. package/dist/components/has-slot-content.js +35 -0
  241. package/dist/components/has-slot-content.js.map +1 -0
  242. package/dist/components/i18n.js +96 -0
  243. package/dist/components/i18n.js.map +1 -1
  244. package/dist/components/index.js +11 -3
  245. package/dist/components/index.js.map +1 -1
  246. package/dist/components/index2.js +1158 -1083
  247. package/dist/components/index2.js.map +1 -1
  248. package/dist/components/logger.js +1 -39
  249. package/dist/components/logger.js.map +1 -1
  250. package/dist/components/newsletter-helpers.js +39 -2
  251. package/dist/components/newsletter-helpers.js.map +1 -1
  252. package/dist/components/newsletter-store.js +2 -0
  253. package/dist/components/newsletter-store.js.map +1 -1
  254. package/dist/components/nl-BE.js +540 -0
  255. package/dist/components/nl-BE.js.map +1 -0
  256. package/dist/components/profile-store.js +1 -1
  257. package/dist/components/profile-store.js.map +1 -1
  258. package/dist/components/raw-field.js +116 -7
  259. package/dist/components/raw-field.js.map +1 -1
  260. package/dist/components/redirect-with-token.js +35 -0
  261. package/dist/components/redirect-with-token.js.map +1 -0
  262. package/dist/components/ro.js +576 -0
  263. package/dist/components/ro.js.map +1 -0
  264. package/dist/components/spinner.js +2 -2
  265. package/dist/components/spinner.js.map +1 -1
  266. package/dist/components/submit-button.js +21 -24
  267. package/dist/components/submit-button.js.map +1 -1
  268. package/dist/components/sv.js +595 -0
  269. package/dist/components/sv.js.map +1 -0
  270. package/dist/components/u-conditional-render.js +5 -6
  271. package/dist/components/u-conditional-render.js.map +1 -1
  272. package/dist/components/u-config.js +16 -3
  273. package/dist/components/u-config.js.map +1 -1
  274. package/dist/components/u-email-field.js +1 -1
  275. package/dist/components/u-error-message.js +44 -19
  276. package/dist/components/u-error-message.js.map +1 -1
  277. package/dist/components/u-full-profile.js +1 -1
  278. package/dist/components/u-jump-to-service.js +16 -38
  279. package/dist/components/u-jump-to-service.js.map +1 -1
  280. package/dist/components/u-jump-to-unidy.js +16 -37
  281. package/dist/components/u-jump-to-unidy.js.map +1 -1
  282. package/dist/components/u-logout-button.js +5 -11
  283. package/dist/components/u-logout-button.js.map +1 -1
  284. package/dist/components/u-missing-field.js +5 -2
  285. package/dist/components/u-missing-field.js.map +1 -1
  286. package/dist/components/u-missing-fields-submit-button.js +10 -8
  287. package/dist/components/u-missing-fields-submit-button.js.map +1 -1
  288. package/dist/components/u-newsletter-checkbox.js +1 -1
  289. package/dist/components/u-newsletter-consent-checkbox.js +1 -1
  290. package/dist/components/u-newsletter-logout-button.js +6 -12
  291. package/dist/components/u-newsletter-logout-button.js.map +1 -1
  292. package/dist/components/u-newsletter-preference-checkbox.js +1 -1
  293. package/dist/components/u-newsletter-root.js +35 -12
  294. package/dist/components/u-newsletter-root.js.map +1 -1
  295. package/dist/components/u-newsletter-toggle-subscription-button.js +1 -1
  296. package/dist/components/u-pagination-button.js +3 -4
  297. package/dist/components/u-pagination-button.js.map +1 -1
  298. package/dist/components/u-pagination-page.js +3 -4
  299. package/dist/components/u-pagination-page.js.map +1 -1
  300. package/dist/components/u-reset-password-button.js +4 -8
  301. package/dist/components/u-reset-password-button.js.map +1 -1
  302. package/dist/components/u-signed-in.js +3 -6
  303. package/dist/components/u-signed-in.js.map +1 -1
  304. package/dist/components/u-signin-root.js +3 -6
  305. package/dist/components/u-signin-root.js.map +1 -1
  306. package/dist/components/u-signin-step.js +10 -14
  307. package/dist/components/u-signin-step.js.map +1 -1
  308. package/dist/components/u-social-login-button.js +13 -14
  309. package/dist/components/u-social-login-button.js.map +1 -1
  310. package/dist/components/u-ticketable-export.d.ts +11 -0
  311. package/dist/components/u-ticketable-export.js +93 -0
  312. package/dist/components/u-ticketable-export.js.map +1 -0
  313. package/dist/components/u-ticketable-list.js +256 -2396
  314. package/dist/components/u-ticketable-list.js.map +1 -1
  315. package/dist/esm/_commonjsHelpers-B85MJLTf.js +8 -0
  316. package/dist/esm/_commonjsHelpers-B85MJLTf.js.map +1 -0
  317. package/dist/esm/app-globals-J743qnJf.js +8 -0
  318. package/dist/esm/app-globals-J743qnJf.js.map +1 -0
  319. package/dist/esm/{auth-store-DBlGNGhq.js → auth-store-CSpEdi46.js} +4 -4
  320. package/dist/esm/{auth-store-DBlGNGhq.js.map → auth-store-CSpEdi46.js.map} +1 -1
  321. package/dist/esm/component-qfegGRWr.js +32 -0
  322. package/dist/esm/component-qfegGRWr.js.map +1 -0
  323. package/dist/esm/component-utils-WEof9bTg.js +36 -0
  324. package/dist/esm/component-utils-WEof9bTg.js.map +1 -0
  325. package/dist/esm/de-C6AnCqsA.js +702 -0
  326. package/dist/esm/de-C6AnCqsA.js.map +1 -0
  327. package/dist/esm/en-GB-DO63WPxt.js +117 -0
  328. package/dist/esm/en-GB-DO63WPxt.js.map +1 -0
  329. package/dist/esm/{flash-store-Df2YkLTB.js → flash-store-Dn1Bava8.js} +3 -3
  330. package/dist/esm/{flash-store-Df2YkLTB.js.map → flash-store-Dn1Bava8.js.map} +1 -1
  331. package/dist/esm/fr-C0oU6-EJ.js +575 -0
  332. package/dist/esm/fr-C0oU6-EJ.js.map +1 -0
  333. package/dist/esm/has-slot-content-DSMkJu9G.js +35 -0
  334. package/dist/esm/has-slot-content-DSMkJu9G.js.map +1 -0
  335. package/dist/esm/{i18n-Da7S9Oqf.js → i18n-ioyZxWsT.js} +100 -4
  336. package/dist/esm/{i18n-Da7S9Oqf.js.map → i18n-ioyZxWsT.js.map} +1 -1
  337. package/dist/esm/{index-FTKB5a1d.js → index-BsJDptgj.js} +4 -40
  338. package/dist/esm/index-BsJDptgj.js.map +1 -0
  339. package/dist/esm/{index-BnAYOYR5.js → index-C8kmD3tu.js} +3 -3
  340. package/dist/esm/{index-BnAYOYR5.js.map → index-C8kmD3tu.js.map} +1 -1
  341. package/dist/esm/{index-BVlbCQEX.js → index-kgGjfc-n.js} +1163 -1088
  342. package/dist/esm/index-kgGjfc-n.js.map +1 -0
  343. package/dist/esm/index.js +18 -12
  344. package/dist/esm/index.js.map +1 -1
  345. package/dist/esm/loader.js +4 -4
  346. package/dist/esm/{newsletter-helpers-fCpxzovf.js → newsletter-helpers-DoKGN_Kq.js} +46 -9
  347. package/dist/esm/newsletter-helpers-DoKGN_Kq.js.map +1 -0
  348. package/dist/esm/{newsletter-store-BB618FgS.js → newsletter-store-DpR85vaC.js} +5 -3
  349. package/dist/esm/newsletter-store-DpR85vaC.js.map +1 -0
  350. package/dist/esm/nl-BE-C8uPYb_H.js +540 -0
  351. package/dist/esm/nl-BE-C8uPYb_H.js.map +1 -0
  352. package/dist/esm/{profile-helpers-CXK2X6Ts.js → profile-helpers-BMJy0ei_.js} +4 -4
  353. package/dist/esm/{profile-helpers-CXK2X6Ts.js.map → profile-helpers-BMJy0ei_.js.map} +1 -1
  354. package/dist/esm/{profile-store-CHlSKuTY.js → profile-store-7wBS3gBH.js} +4 -4
  355. package/dist/esm/{profile-store-CHlSKuTY.js.map → profile-store-7wBS3gBH.js.map} +1 -1
  356. package/dist/esm/redirect-with-token-StCLJlSp.js +35 -0
  357. package/dist/esm/redirect-with-token-StCLJlSp.js.map +1 -0
  358. package/dist/esm/ro-BlDHz7d-.js +576 -0
  359. package/dist/esm/ro-BlDHz7d-.js.map +1 -0
  360. package/dist/esm/sdk.js +4 -4
  361. package/dist/esm/sv-B_Gq29K0.js +595 -0
  362. package/dist/esm/sv-B_Gq29K0.js.map +1 -0
  363. package/dist/esm/u-conditional-render.entry.js +14 -14
  364. package/dist/esm/u-conditional-render.entry.js.map +1 -1
  365. package/dist/esm/u-config.entry.js +24 -11
  366. package/dist/esm/u-config.entry.js.map +1 -1
  367. package/dist/esm/u-email-field.entry.js +7 -7
  368. package/dist/esm/u-error-message.entry.js +49 -22
  369. package/dist/esm/u-error-message.entry.js.map +1 -1
  370. package/dist/esm/u-field.u-raw-field.entry.js.map +1 -1
  371. package/dist/esm/u-field_2.entry.js +124 -12
  372. package/dist/esm/u-flash-message.entry.js +3 -3
  373. package/dist/esm/u-full-profile.entry.js +6 -6
  374. package/dist/esm/u-jump-to-service.entry.js +23 -44
  375. package/dist/esm/u-jump-to-service.entry.js.map +1 -1
  376. package/dist/esm/u-jump-to-unidy.entry.js +22 -43
  377. package/dist/esm/u-jump-to-unidy.entry.js.map +1 -1
  378. package/dist/esm/u-logout-button.u-signed-in.entry.js.map +1 -1
  379. package/dist/esm/u-logout-button_2.entry.js +15 -22
  380. package/dist/esm/u-magic-code-field.entry.js +8 -9
  381. package/dist/esm/u-magic-code-field.entry.js.map +1 -1
  382. package/dist/esm/u-missing-field.entry.js +6 -5
  383. package/dist/esm/u-missing-field.entry.js.map +1 -1
  384. package/dist/esm/u-missing-fields-submit-button.entry.js +16 -14
  385. package/dist/esm/u-missing-fields-submit-button.entry.js.map +1 -1
  386. package/dist/esm/u-newsletter-checkbox.entry.js +11 -12
  387. package/dist/esm/u-newsletter-checkbox.entry.js.map +1 -1
  388. package/dist/esm/u-newsletter-consent-checkbox.entry.js +4 -4
  389. package/dist/esm/u-newsletter-logout-button.entry.js +15 -20
  390. package/dist/esm/u-newsletter-logout-button.entry.js.map +1 -1
  391. package/dist/esm/u-newsletter-preference-checkbox.entry.js +11 -12
  392. package/dist/esm/u-newsletter-preference-checkbox.entry.js.map +1 -1
  393. package/dist/esm/u-newsletter-resend-doi-button.entry.js +10 -11
  394. package/dist/esm/u-newsletter-resend-doi-button.entry.js.map +1 -1
  395. package/dist/esm/u-newsletter-root.entry.js +42 -19
  396. package/dist/esm/u-newsletter-root.entry.js.map +1 -1
  397. package/dist/esm/u-newsletter-toggle-subscription-button.entry.js +11 -12
  398. package/dist/esm/u-newsletter-toggle-subscription-button.entry.js.map +1 -1
  399. package/dist/esm/u-pagination-button.entry.js +4 -4
  400. package/dist/esm/u-pagination-button.entry.js.map +1 -1
  401. package/dist/esm/u-pagination-page.entry.js +4 -4
  402. package/dist/esm/u-pagination-page.entry.js.map +1 -1
  403. package/dist/esm/u-passkey.entry.js +8 -9
  404. package/dist/esm/u-passkey.entry.js.map +1 -1
  405. package/dist/esm/u-password-field.entry.js +5 -5
  406. package/dist/esm/u-profile.u-submit-button.entry.js.map +1 -1
  407. package/dist/esm/u-profile_2.entry.js +31 -33
  408. package/dist/esm/u-registration-button.entry.js +5 -5
  409. package/dist/esm/u-reset-password-button.entry.js +12 -15
  410. package/dist/esm/u-reset-password-button.entry.js.map +1 -1
  411. package/dist/esm/u-send-magic-code-button.entry.js +8 -9
  412. package/dist/esm/u-send-magic-code-button.entry.js.map +1 -1
  413. package/dist/esm/u-signin-root.entry.js +6 -8
  414. package/dist/esm/u-signin-root.entry.js.map +1 -1
  415. package/dist/esm/u-signin-step.entry.js +17 -21
  416. package/dist/esm/u-signin-step.entry.js.map +1 -1
  417. package/dist/esm/u-social-login-button.entry.js +16 -15
  418. package/dist/esm/u-social-login-button.entry.js.map +1 -1
  419. package/dist/esm/u-spinner.entry.js +3 -3
  420. package/dist/esm/u-spinner.entry.js.map +1 -1
  421. package/dist/esm/u-ticketable-export.entry.js +74 -0
  422. package/dist/esm/u-ticketable-export.entry.js.map +1 -0
  423. package/dist/esm/u-ticketable-list-D2p21JjR.js +3981 -0
  424. package/dist/esm/u-ticketable-list-D2p21JjR.js.map +1 -0
  425. package/dist/esm/u-ticketable-list.entry.js +10 -6121
  426. package/dist/esm/u-ticketable-list.entry.js.map +1 -1
  427. package/dist/esm/{unidy-store-Bg7IaIMd.js → unidy-store-B5Bf4Vit.js} +3 -3
  428. package/dist/esm/{unidy-store-Bg7IaIMd.js.map → unidy-store-B5Bf4Vit.js.map} +1 -1
  429. package/dist/sdk/index.esm.js +1 -1
  430. package/dist/sdk/index.esm.js.map +1 -1
  431. package/dist/sdk/locales/de.json +16 -0
  432. package/dist/sdk/locales/en.json +16 -0
  433. package/dist/sdk/locales/fr.json +16 -0
  434. package/dist/sdk/locales/it.json +16 -0
  435. package/dist/sdk/locales/nl_be.json +16 -0
  436. package/dist/sdk/locales/ro.json +16 -0
  437. package/dist/sdk/p-02dce5da.entry.js +2 -0
  438. package/dist/sdk/p-02dce5da.entry.js.map +1 -0
  439. package/dist/sdk/p-043c7643.entry.js +2 -0
  440. package/dist/sdk/p-043c7643.entry.js.map +1 -0
  441. package/dist/sdk/p-18c17747.entry.js +2 -0
  442. package/dist/sdk/p-18c17747.entry.js.map +1 -0
  443. package/dist/sdk/p-1a1c1af0.entry.js +2 -0
  444. package/dist/sdk/p-1a1c1af0.entry.js.map +1 -0
  445. package/dist/sdk/p-271781c7.entry.js +2 -0
  446. package/dist/sdk/{p-1a8973a6.entry.js.map → p-271781c7.entry.js.map} +1 -1
  447. package/dist/sdk/p-29473a55.entry.js +2 -0
  448. package/dist/sdk/p-29473a55.entry.js.map +1 -0
  449. package/dist/sdk/p-2a25d62e.entry.js +2 -0
  450. package/dist/sdk/p-2a25d62e.entry.js.map +1 -0
  451. package/dist/sdk/{p-C8lRzJEX.js → p-2bKltz_F.js} +2 -2
  452. package/dist/sdk/{p-C8lRzJEX.js.map → p-2bKltz_F.js.map} +1 -1
  453. package/dist/sdk/p-2cc3a00d.entry.js +2 -0
  454. package/dist/sdk/p-2cc3a00d.entry.js.map +1 -0
  455. package/dist/sdk/p-2f49e0cb.entry.js +2 -0
  456. package/dist/sdk/p-2f49e0cb.entry.js.map +1 -0
  457. package/dist/sdk/p-34f5d201.entry.js +2 -0
  458. package/dist/sdk/p-34f5d201.entry.js.map +1 -0
  459. package/dist/sdk/p-52c4bdd9.entry.js +2 -0
  460. package/dist/sdk/p-52c4bdd9.entry.js.map +1 -0
  461. package/dist/sdk/p-585a0efa.entry.js +2 -0
  462. package/dist/sdk/p-585a0efa.entry.js.map +1 -0
  463. package/dist/sdk/p-60675019.entry.js +2 -0
  464. package/dist/sdk/p-60675019.entry.js.map +1 -0
  465. package/dist/sdk/p-79ef9a70.entry.js +2 -0
  466. package/dist/sdk/p-79ef9a70.entry.js.map +1 -0
  467. package/dist/sdk/p-7d88e21c.entry.js +2 -0
  468. package/dist/sdk/p-7d88e21c.entry.js.map +1 -0
  469. package/dist/sdk/p-7eaf3468.entry.js +2 -0
  470. package/dist/sdk/p-7eaf3468.entry.js.map +1 -0
  471. package/dist/sdk/{p-88beb872.entry.js → p-8412762c.entry.js} +2 -2
  472. package/dist/sdk/p-8ea70c08.entry.js +2 -0
  473. package/dist/sdk/p-8ea70c08.entry.js.map +1 -0
  474. package/dist/sdk/p-946cdb0a.entry.js +2 -0
  475. package/dist/sdk/p-946cdb0a.entry.js.map +1 -0
  476. package/dist/sdk/p-94bb0217.entry.js +2 -0
  477. package/dist/sdk/p-94bb0217.entry.js.map +1 -0
  478. package/dist/sdk/{p-bcca06f1.entry.js → p-96860b09.entry.js} +2 -2
  479. package/dist/sdk/p-B1A6Nu24.js +2 -0
  480. package/dist/sdk/p-B1A6Nu24.js.map +1 -0
  481. package/dist/sdk/p-B85MJLTf.js +2 -0
  482. package/dist/sdk/p-B85MJLTf.js.map +1 -0
  483. package/dist/sdk/p-B8N6Bwsa.js +2 -0
  484. package/dist/sdk/{p-DCG3L43i.js.map → p-B8N6Bwsa.js.map} +1 -1
  485. package/dist/sdk/p-Ba5szISo.js +2 -0
  486. package/dist/sdk/p-Ba5szISo.js.map +1 -0
  487. package/dist/sdk/p-BsJDptgj.js +14 -0
  488. package/dist/sdk/p-BsJDptgj.js.map +1 -0
  489. package/dist/sdk/{p-bpXpOZY_.js → p-C0Mo15qt.js} +2 -2
  490. package/dist/sdk/{p-bpXpOZY_.js.map → p-C0Mo15qt.js.map} +1 -1
  491. package/dist/sdk/p-C10MAuCE.js +2 -0
  492. package/dist/sdk/p-C10MAuCE.js.map +1 -0
  493. package/dist/sdk/p-CTy6pQSg.js +2 -0
  494. package/dist/sdk/p-CTy6pQSg.js.map +1 -0
  495. package/dist/sdk/p-CW6kGAuQ.js +2 -0
  496. package/dist/sdk/p-CW6kGAuQ.js.map +1 -0
  497. package/dist/sdk/{p-DdMKVWx8.js → p-CbSP8My1.js} +2 -2
  498. package/dist/sdk/{p-DdMKVWx8.js.map → p-CbSP8My1.js.map} +1 -1
  499. package/dist/sdk/p-CbzzI4uW.js +2 -0
  500. package/dist/sdk/p-CbzzI4uW.js.map +1 -0
  501. package/dist/sdk/p-CgT6fZjb.js +2 -0
  502. package/dist/sdk/p-CgT6fZjb.js.map +1 -0
  503. package/dist/sdk/p-CuHZ3IkE.js +2 -0
  504. package/dist/sdk/p-CuHZ3IkE.js.map +1 -0
  505. package/dist/sdk/p-Cysk_vik.js +2 -0
  506. package/dist/sdk/p-Cysk_vik.js.map +1 -0
  507. package/dist/sdk/p-D0ut3waq.js +2 -0
  508. package/dist/sdk/p-D0ut3waq.js.map +1 -0
  509. package/dist/sdk/{p-BigbTrKk.js → p-D2Rf-QGm.js} +2 -2
  510. package/dist/sdk/{p-BigbTrKk.js.map → p-D2Rf-QGm.js.map} +1 -1
  511. package/dist/sdk/{p-6rqGeAfT.js → p-D9yFO_ID.js} +2 -2
  512. package/dist/sdk/{p-6rqGeAfT.js.map → p-D9yFO_ID.js.map} +1 -1
  513. package/dist/sdk/p-DD_5soRi.js +2 -0
  514. package/dist/sdk/p-DD_5soRi.js.map +1 -0
  515. package/dist/sdk/p-DHuvvagO.js +2 -0
  516. package/dist/sdk/p-DHuvvagO.js.map +1 -0
  517. package/dist/sdk/p-DSMkJu9G.js +2 -0
  518. package/dist/sdk/p-DSMkJu9G.js.map +1 -0
  519. package/dist/sdk/p-DcirMfca.js +2 -0
  520. package/dist/sdk/p-DcirMfca.js.map +1 -0
  521. package/dist/sdk/p-J0cv5IOA.js +2 -0
  522. package/dist/sdk/p-J0cv5IOA.js.map +1 -0
  523. package/dist/sdk/p-_5evboqW.js +2 -0
  524. package/dist/sdk/{p-DSktNM_k.js.map → p-_5evboqW.js.map} +1 -1
  525. package/dist/sdk/{p-7ee2f2ab.entry.js → p-ac3a6bbf.entry.js} +2 -2
  526. package/dist/sdk/p-b498bcdd.entry.js +2 -0
  527. package/dist/sdk/p-b498bcdd.entry.js.map +1 -0
  528. package/dist/sdk/p-b5dd5b4c.entry.js +2 -0
  529. package/dist/sdk/p-b5dd5b4c.entry.js.map +1 -0
  530. package/dist/sdk/{p-6b061b18.entry.js → p-b99588a8.entry.js} +2 -2
  531. package/dist/sdk/p-bf9c27a8.entry.js +2 -0
  532. package/dist/sdk/p-bf9c27a8.entry.js.map +1 -0
  533. package/dist/sdk/p-c10d9b8e.entry.js +2 -0
  534. package/dist/sdk/p-c10d9b8e.entry.js.map +1 -0
  535. package/dist/sdk/{p-10e20afd.entry.js → p-c2634439.entry.js} +2 -2
  536. package/dist/sdk/p-d6777395.entry.js +2 -0
  537. package/dist/sdk/p-d6777395.entry.js.map +1 -0
  538. package/dist/sdk/p-dbfe7b29.entry.js +2 -0
  539. package/dist/sdk/p-dbfe7b29.entry.js.map +1 -0
  540. package/dist/sdk/p-def4e874.entry.js +2 -0
  541. package/dist/sdk/p-def4e874.entry.js.map +1 -0
  542. package/dist/sdk/p-e872a012.entry.js +2 -0
  543. package/dist/sdk/p-e872a012.entry.js.map +1 -0
  544. package/dist/sdk/p-eaaf3989.entry.js +2 -0
  545. package/dist/sdk/p-eaaf3989.entry.js.map +1 -0
  546. package/dist/sdk/p-fd46b459.entry.js +2 -0
  547. package/dist/sdk/{p-830778eb.entry.js.map → p-fd46b459.entry.js.map} +1 -1
  548. package/dist/sdk/sdk.esm.js +1 -1
  549. package/dist/sdk/u-conditional-render.entry.esm.js.map +1 -1
  550. package/dist/sdk/u-config.entry.esm.js.map +1 -1
  551. package/dist/sdk/u-error-message.entry.esm.js.map +1 -1
  552. package/dist/sdk/u-field.u-raw-field.entry.esm.js.map +1 -1
  553. package/dist/sdk/u-jump-to-service.entry.esm.js.map +1 -1
  554. package/dist/sdk/u-jump-to-unidy.entry.esm.js.map +1 -1
  555. package/dist/sdk/u-logout-button.u-signed-in.entry.esm.js.map +1 -1
  556. package/dist/sdk/u-magic-code-field.entry.esm.js.map +1 -1
  557. package/dist/sdk/u-missing-field.entry.esm.js.map +1 -1
  558. package/dist/sdk/u-missing-fields-submit-button.entry.esm.js.map +1 -1
  559. package/dist/sdk/u-newsletter-checkbox.entry.esm.js.map +1 -1
  560. package/dist/sdk/u-newsletter-logout-button.entry.esm.js.map +1 -1
  561. package/dist/sdk/u-newsletter-preference-checkbox.entry.esm.js.map +1 -1
  562. package/dist/sdk/u-newsletter-resend-doi-button.entry.esm.js.map +1 -1
  563. package/dist/sdk/u-newsletter-root.entry.esm.js.map +1 -1
  564. package/dist/sdk/u-newsletter-toggle-subscription-button.entry.esm.js.map +1 -1
  565. package/dist/sdk/u-pagination-button.entry.esm.js.map +1 -1
  566. package/dist/sdk/u-pagination-page.entry.esm.js.map +1 -1
  567. package/dist/sdk/u-passkey.entry.esm.js.map +1 -1
  568. package/dist/sdk/u-profile.u-submit-button.entry.esm.js.map +1 -1
  569. package/dist/sdk/u-reset-password-button.entry.esm.js.map +1 -1
  570. package/dist/sdk/u-send-magic-code-button.entry.esm.js.map +1 -1
  571. package/dist/sdk/u-signin-root.entry.esm.js.map +1 -1
  572. package/dist/sdk/u-signin-step.entry.esm.js.map +1 -1
  573. package/dist/sdk/u-social-login-button.entry.esm.js.map +1 -1
  574. package/dist/sdk/u-spinner.entry.esm.js.map +1 -1
  575. package/dist/sdk/u-ticketable-export.entry.esm.js.map +1 -0
  576. package/dist/sdk/u-ticketable-list.entry.esm.js.map +1 -1
  577. package/dist/types/api/client.d.ts +1 -1
  578. package/dist/types/api/index.d.ts +4 -4
  579. package/dist/types/api/standalone.d.ts +9 -9
  580. package/dist/types/auth/api/auth.d.ts +2 -3
  581. package/dist/types/auth/api/schemas.d.ts +19 -19
  582. package/dist/types/auth/auth-helpers.d.ts +1 -0
  583. package/dist/types/auth/components/jump-to-service/jump-to-service.d.ts +13 -5
  584. package/dist/types/auth/components/jump-to-unidy/jump-to-unidy.d.ts +13 -9
  585. package/dist/types/auth/components/logout-button/logout-button.d.ts +13 -4
  586. package/dist/types/auth/components/missing-field/missing-field.d.ts +1 -0
  587. package/dist/types/auth/components/missing-fields-submit-button/missing-fields-submit-button.d.ts +14 -2
  588. package/dist/types/auth/components/reset-pass-button/reset-pass-button.d.ts +13 -4
  589. package/dist/types/auth/components/social-logins/social-login-button.d.ts +11 -7
  590. package/dist/types/components.d.ts +73 -0
  591. package/dist/types/logger.d.ts +0 -34
  592. package/dist/types/newsletter/components/logout-button/logout-button.d.ts +13 -4
  593. package/dist/types/newsletter/components/newsletter-root/newsletter-root.d.ts +16 -2
  594. package/dist/types/newsletter/newsletter-helpers.d.ts +8 -2
  595. package/dist/types/newsletter/store/newsletter-store.d.ts +8 -1
  596. package/dist/types/profile/api/profile.d.ts +2 -2
  597. package/dist/types/profile/api/schemas.d.ts +21 -21
  598. package/dist/types/profile/components/raw-field/raw-field.d.ts +14 -2
  599. package/dist/types/shared/base/component.d.ts +46 -0
  600. package/dist/types/shared/base/has-slot-content.d.ts +10 -0
  601. package/dist/types/shared/component-utils.d.ts +20 -12
  602. package/dist/types/shared/components/conditional-render/conditional-render.d.ts +7 -2
  603. package/dist/types/shared/components/config/config.d.ts +7 -2
  604. package/dist/types/shared/components/error-message/error-message.d.ts +14 -2
  605. package/dist/types/shared/components/submit-button/submit-button.d.ts +13 -4
  606. package/dist/types/shared/context-utils.d.ts +73 -0
  607. package/dist/types/shared/utils/redirect-with-token.d.ts +21 -0
  608. package/dist/types/shared/utils/url-utils.d.ts +16 -0
  609. package/dist/types/ticketable/api/schemas.d.ts +16 -2
  610. package/dist/types/ticketable/api/subscriptions.d.ts +8 -3
  611. package/dist/types/ticketable/api/tickets.d.ts +8 -3
  612. package/dist/types/ticketable/components/pagination/pagination-button.d.ts +8 -4
  613. package/dist/types/ticketable/components/pagination/pagination-page.d.ts +8 -4
  614. package/dist/types/ticketable/components/ticketable-export/ticketable-export.d.ts +24 -0
  615. package/dist/types/ticketable/components/ticketable-list/ticketable-list.d.ts +10 -4
  616. package/dist/types/ticketable/index.d.ts +1 -0
  617. package/package.json +6 -2
  618. package/readme.md +248 -27
  619. package/dist/cjs/app-globals-hdkLqF51.js +0 -10
  620. package/dist/cjs/app-globals-hdkLqF51.js.map +0 -1
  621. package/dist/cjs/component-utils-bu3SY4dE.js +0 -42
  622. package/dist/cjs/component-utils-bu3SY4dE.js.map +0 -1
  623. package/dist/cjs/index-B325yXfO.js.map +0 -1
  624. package/dist/cjs/index-BzPYBLYC.js.map +0 -1
  625. package/dist/cjs/newsletter-helpers-hdDC5X-V.js.map +0 -1
  626. package/dist/cjs/newsletter-store-CupsLgO9.js.map +0 -1
  627. package/dist/cjs/pagination-store-zo48QpTm.js +0 -16
  628. package/dist/cjs/pagination-store-zo48QpTm.js.map +0 -1
  629. package/dist/components/pagination-store.js +0 -14
  630. package/dist/components/pagination-store.js.map +0 -1
  631. package/dist/esm/app-globals-iHhGdwBB.js +0 -8
  632. package/dist/esm/app-globals-iHhGdwBB.js.map +0 -1
  633. package/dist/esm/component-utils-BGq0leDV.js +0 -39
  634. package/dist/esm/component-utils-BGq0leDV.js.map +0 -1
  635. package/dist/esm/index-BVlbCQEX.js.map +0 -1
  636. package/dist/esm/index-FTKB5a1d.js.map +0 -1
  637. package/dist/esm/newsletter-helpers-fCpxzovf.js.map +0 -1
  638. package/dist/esm/newsletter-store-BB618FgS.js.map +0 -1
  639. package/dist/esm/pagination-store-DxmcQH8R.js +0 -14
  640. package/dist/esm/pagination-store-DxmcQH8R.js.map +0 -1
  641. package/dist/sdk/p-1a8973a6.entry.js +0 -2
  642. package/dist/sdk/p-35ad60ab.entry.js +0 -2
  643. package/dist/sdk/p-35ad60ab.entry.js.map +0 -1
  644. package/dist/sdk/p-3f352f38.entry.js +0 -2
  645. package/dist/sdk/p-3f352f38.entry.js.map +0 -1
  646. package/dist/sdk/p-468aaf62.entry.js +0 -2
  647. package/dist/sdk/p-468aaf62.entry.js.map +0 -1
  648. package/dist/sdk/p-4e2e6a13.entry.js +0 -2
  649. package/dist/sdk/p-4e2e6a13.entry.js.map +0 -1
  650. package/dist/sdk/p-57c8dc68.entry.js +0 -2
  651. package/dist/sdk/p-57c8dc68.entry.js.map +0 -1
  652. package/dist/sdk/p-594aec0c.entry.js +0 -2
  653. package/dist/sdk/p-594aec0c.entry.js.map +0 -1
  654. package/dist/sdk/p-60c8be64.entry.js +0 -2
  655. package/dist/sdk/p-60c8be64.entry.js.map +0 -1
  656. package/dist/sdk/p-760718d3.entry.js +0 -2
  657. package/dist/sdk/p-760718d3.entry.js.map +0 -1
  658. package/dist/sdk/p-77f541f3.entry.js +0 -2
  659. package/dist/sdk/p-77f541f3.entry.js.map +0 -1
  660. package/dist/sdk/p-830778eb.entry.js +0 -2
  661. package/dist/sdk/p-8839648e.entry.js +0 -2
  662. package/dist/sdk/p-8839648e.entry.js.map +0 -1
  663. package/dist/sdk/p-B6MYe-dh.js +0 -2
  664. package/dist/sdk/p-B6MYe-dh.js.map +0 -1
  665. package/dist/sdk/p-BGq0leDV.js +0 -2
  666. package/dist/sdk/p-BGq0leDV.js.map +0 -1
  667. package/dist/sdk/p-C_UZBwdm.js +0 -2
  668. package/dist/sdk/p-C_UZBwdm.js.map +0 -1
  669. package/dist/sdk/p-CbazSxaZ.js +0 -2
  670. package/dist/sdk/p-CbazSxaZ.js.map +0 -1
  671. package/dist/sdk/p-DCG3L43i.js +0 -2
  672. package/dist/sdk/p-DEUPZOH-.js +0 -2
  673. package/dist/sdk/p-DEUPZOH-.js.map +0 -1
  674. package/dist/sdk/p-DSktNM_k.js +0 -2
  675. package/dist/sdk/p-FTKB5a1d.js +0 -14
  676. package/dist/sdk/p-FTKB5a1d.js.map +0 -1
  677. package/dist/sdk/p-a7ffcff9.entry.js +0 -2
  678. package/dist/sdk/p-a7ffcff9.entry.js.map +0 -1
  679. package/dist/sdk/p-acaba1d5.entry.js +0 -2
  680. package/dist/sdk/p-acaba1d5.entry.js.map +0 -1
  681. package/dist/sdk/p-ae47a7a3.entry.js +0 -2
  682. package/dist/sdk/p-ae47a7a3.entry.js.map +0 -1
  683. package/dist/sdk/p-aec580e4.entry.js +0 -2
  684. package/dist/sdk/p-aec580e4.entry.js.map +0 -1
  685. package/dist/sdk/p-b63438ff.entry.js +0 -2
  686. package/dist/sdk/p-b63438ff.entry.js.map +0 -1
  687. package/dist/sdk/p-baaaa7f5.entry.js +0 -2
  688. package/dist/sdk/p-baaaa7f5.entry.js.map +0 -1
  689. package/dist/sdk/p-bba2da84.entry.js +0 -2
  690. package/dist/sdk/p-bba2da84.entry.js.map +0 -1
  691. package/dist/sdk/p-bc47f42b.entry.js +0 -2
  692. package/dist/sdk/p-bc47f42b.entry.js.map +0 -1
  693. package/dist/sdk/p-bd51e26f.entry.js +0 -2
  694. package/dist/sdk/p-bd51e26f.entry.js.map +0 -1
  695. package/dist/sdk/p-c3552f75.entry.js +0 -2
  696. package/dist/sdk/p-c3552f75.entry.js.map +0 -1
  697. package/dist/sdk/p-d9900482.entry.js +0 -2
  698. package/dist/sdk/p-d9900482.entry.js.map +0 -1
  699. package/dist/sdk/p-e6796c38.entry.js +0 -2
  700. package/dist/sdk/p-e6796c38.entry.js.map +0 -1
  701. package/dist/sdk/p-f272eb38.entry.js +0 -2
  702. package/dist/sdk/p-f272eb38.entry.js.map +0 -1
  703. package/dist/sdk/p-f4a47ef8.entry.js +0 -2
  704. package/dist/sdk/p-f4a47ef8.entry.js.map +0 -1
  705. package/dist/sdk/p-f608e64a.entry.js +0 -2
  706. package/dist/sdk/p-f608e64a.entry.js.map +0 -1
  707. package/dist/sdk/p-f762ac70.entry.js +0 -2
  708. package/dist/sdk/p-f762ac70.entry.js.map +0 -1
  709. package/dist/sdk/p-l6NinBiD.js +0 -2
  710. package/dist/sdk/p-l6NinBiD.js.map +0 -1
  711. /package/dist/sdk/{p-88beb872.entry.js.map → p-8412762c.entry.js.map} +0 -0
  712. /package/dist/sdk/{p-bcca06f1.entry.js.map → p-96860b09.entry.js.map} +0 -0
  713. /package/dist/sdk/{p-7ee2f2ab.entry.js.map → p-ac3a6bbf.entry.js.map} +0 -0
  714. /package/dist/sdk/{p-6b061b18.entry.js.map → p-b99588a8.entry.js.map} +0 -0
  715. /package/dist/sdk/{p-10e20afd.entry.js.map → p-c2634439.entry.js.map} +0 -0
@@ -1,29 +1,81 @@
1
1
  import { Host, h } from "@stencil/core";
2
2
  import { format } from "date-fns/format";
3
- import { de } from "date-fns/locale/de";
4
- import { enUS } from "date-fns/locale/en-US";
5
- import { fr } from "date-fns/locale/fr";
6
- import { nlBE } from "date-fns/locale/nl-BE";
7
- import { ro } from "date-fns/locale/ro";
8
3
  import { getUnidyClient } from "../../../api";
9
4
  import { Auth } from "../../../auth";
5
+ import { onChange as authOnChange } from "../../../auth/store/auth-store";
10
6
  import { t } from "../../../i18n";
11
- import { UnidyComponent } from "../../../logger";
7
+ import { UnidyComponent } from "../../../shared/base/component";
12
8
  import { unidyState, waitForConfig } from "../../../shared/store/unidy-store";
13
- import { createPaginationStore } from "../../store/pagination-store";
14
9
  import { createSkeletonLoader, replaceTextNodesWithSkeletons } from "./skeleton-helpers";
15
- const LOCALES = {
16
- "en-US": enUS,
17
- de: de,
18
- fr: fr,
19
- "nl-BE": nlBE,
20
- ro: ro,
21
- };
22
- export class TicketableList extends UnidyComponent {
10
+ const LOCALES = {};
11
+ /**
12
+ * Extracts a nested value from an object using a path string.
13
+ * Supports dot notation for object properties and bracket notation for arrays.
14
+ * Paths must use dot notation throughout, e.g., "metadata.foo.bar.[1]"
15
+ * Examples:
16
+ * - "metadata.foo.bar" -> item.metadata.foo.bar
17
+ * - "metadata.foo.bar.[1]" -> item.metadata.foo.bar[1]
18
+ * - "wallet_export.[0].address" -> item.wallet_export[0].address
19
+ */
20
+ // biome-ignore lint/suspicious/noExplicitAny: Dynamic nested property access requires any
21
+ function getNestedValue(obj, path) {
22
+ if (!path || !obj)
23
+ return undefined;
24
+ // Split by dots and process each part
25
+ const parts = path.split(".").filter(Boolean);
26
+ let result = obj;
27
+ for (const part of parts) {
28
+ if (result == null)
29
+ return undefined;
30
+ // Check if this part is an array index like "[1]"
31
+ if (part.startsWith("[") && part.endsWith("]")) {
32
+ const indexStr = part.slice(1, -1);
33
+ const index = /^\d+$/.test(indexStr) ? Number.parseInt(indexStr, 10) : indexStr;
34
+ result = result[index];
35
+ }
36
+ else {
37
+ result = result[part];
38
+ }
39
+ }
40
+ if (typeof result === "object" && result != null) {
41
+ return JSON.stringify(result);
42
+ }
43
+ return result;
44
+ }
45
+ async function loadLocales() {
46
+ // TODO: This should be pulled into a shared component
47
+ await Promise.all([
48
+ !LOCALES.en &&
49
+ import("date-fns/locale/en-GB").then((module) => {
50
+ LOCALES.en = module.enGB;
51
+ }),
52
+ !LOCALES.de &&
53
+ import("date-fns/locale/de").then((module) => {
54
+ LOCALES.de = module.de;
55
+ }),
56
+ !LOCALES.fr &&
57
+ import("date-fns/locale/fr").then((module) => {
58
+ LOCALES.fr = module.fr;
59
+ }),
60
+ !LOCALES.nl_be &&
61
+ import("date-fns/locale/nl-BE").then((module) => {
62
+ LOCALES.nl_be = module.nlBE;
63
+ }),
64
+ !LOCALES.ro &&
65
+ import("date-fns/locale/ro").then((module) => {
66
+ LOCALES.ro = module.ro;
67
+ }),
68
+ !LOCALES.sv &&
69
+ import("date-fns/locale/sv").then((module) => {
70
+ LOCALES.sv = module.sv;
71
+ }),
72
+ ]);
73
+ }
74
+ export class TicketableList extends UnidyComponent() {
23
75
  constructor() {
24
76
  super();
25
77
  }
26
- element;
78
+ unsubscribeAuth;
27
79
  // TODO: move into a generic store, since we'll have this kind of fetching all over the app (also implement SWR and other things inside of it)
28
80
  items = [];
29
81
  loading = true;
@@ -46,7 +98,10 @@ export class TicketableList extends UnidyComponent {
46
98
  uTicketableListSuccess;
47
99
  uTicketableListError;
48
100
  async componentWillLoad() {
49
- this.store = createPaginationStore();
101
+ await waitForConfig();
102
+ loadLocales().catch((err) => {
103
+ console.error("[u-ticketable-list] Failed to load locales, falling back to 'en'", err);
104
+ });
50
105
  }
51
106
  async componentDidLoad() {
52
107
  this.logger.trace("start componentDidLoad");
@@ -60,6 +115,16 @@ export class TicketableList extends UnidyComponent {
60
115
  else {
61
116
  this.logger.debug("user is not authenticated, skipping data load");
62
117
  }
118
+ // Listen for auth changes to refresh data when user logs in
119
+ this.unsubscribeAuth = authOnChange("token", (newToken) => {
120
+ if (newToken) {
121
+ this.logger.debug("auth token changed, refreshing data");
122
+ this.loadData();
123
+ }
124
+ });
125
+ }
126
+ disconnectedCallback() {
127
+ this.unsubscribeAuth?.();
63
128
  }
64
129
  async loadData() {
65
130
  this.loading = true;
@@ -75,6 +140,20 @@ export class TicketableList extends UnidyComponent {
75
140
  this.uTicketableListError.emit({ error: this.error });
76
141
  return;
77
142
  }
143
+ // TODO: Add a simple shared way of doing this
144
+ const auth = await Auth.getInstance();
145
+ if (!auth) {
146
+ this.error = "[u-ticketable-list] Auth instance not found";
147
+ this.loading = false;
148
+ return;
149
+ }
150
+ // TODO: Handle auth on change THAT SHOULD EXIST ON THE AUTH INSTANCE
151
+ const idToken = await auth.getToken();
152
+ if (typeof idToken !== "string") {
153
+ this.error = "[u-ticketable-list] Failed to get ID token";
154
+ this.loading = false;
155
+ return;
156
+ }
78
157
  try {
79
158
  const unidyClient = await getUnidyClient();
80
159
  // Parse filter string into typed args using URLSearchParams (treats ; as separator)
@@ -146,9 +225,12 @@ export class TicketableList extends UnidyComponent {
146
225
  return [attr, "#"];
147
226
  }
148
227
  let value = attr.value;
149
- for (const [key, val] of Object.entries(item)) {
150
- value = value.replaceAll(`{{${key}}}`, val);
151
- }
228
+ // Find all template strings like {{path}} and replace them with nested values
229
+ const templateRegex = /\{\{([^}]+)\}\}/g;
230
+ value = value.replace(templateRegex, (match, path) => {
231
+ const nestedValue = getNestedValue(item, path.trim());
232
+ return nestedValue != null ? String(nestedValue) : match;
233
+ });
152
234
  return [attr, value];
153
235
  })) {
154
236
  elem.setAttribute(unidyAttr.name.replace("unidy-attr-", ""), newValue);
@@ -166,18 +248,23 @@ export class TicketableList extends UnidyComponent {
166
248
  const key = valueEl.getAttribute("name");
167
249
  if (!key)
168
250
  continue;
169
- const value = item[key];
251
+ const value = getNestedValue(item, key);
170
252
  const formatAttr = valueEl.getAttribute("format");
171
253
  const dateFormatAttr = valueEl.getAttribute("date-format");
172
254
  let finalValue;
173
255
  if (typeof value === "object" && value instanceof Date) {
174
- finalValue = format(value, dateFormatAttr || "yyyy-MM-dd", { locale: LOCALES[unidyState.locale] || de });
256
+ finalValue = format(value, dateFormatAttr || "yyyy-MM-dd", { locale: LOCALES[unidyState.locale] || LOCALES.en });
175
257
  }
176
258
  else if (typeof value === "number" && key === "price") {
177
259
  finalValue = new Intl.NumberFormat(unidyState.locale, { style: "currency", currency: item.currency || "EUR" }).format(value);
178
260
  }
179
261
  else if (typeof value === "number") {
180
- finalValue = value.toFixed(2);
262
+ if (Number.isInteger(value)) {
263
+ finalValue = value.toString();
264
+ }
265
+ else {
266
+ finalValue = value.toFixed(2);
267
+ }
181
268
  }
182
269
  else if (value != null) {
183
270
  finalValue = String(value);
@@ -191,6 +278,58 @@ export class TicketableList extends UnidyComponent {
191
278
  valueEl.textContent = finalValue;
192
279
  }
193
280
  }
281
+ // Process ticketable-conditional elements
282
+ // Shows/hides content based on item property values.
283
+ // Example:
284
+ // <ticketable-conditional when="metadata.vip">
285
+ // <span class="vip-badge">VIP</span>
286
+ // </ticketable-conditional>
287
+ // The children are rendered only if the "when" property is truthy.
288
+ // Convert to array to avoid issues when modifying the DOM
289
+ const conditionalElements = Array.from(fragment.querySelectorAll("ticketable-conditional"));
290
+ for (const conditionalEl of conditionalElements) {
291
+ const whenAttr = conditionalEl.getAttribute("when");
292
+ if (!whenAttr) {
293
+ // If no 'when' attribute, remove the element
294
+ conditionalEl.remove();
295
+ continue;
296
+ }
297
+ if (isSkeleton) {
298
+ // For skeleton state, remove conditionals
299
+ conditionalEl.remove();
300
+ continue;
301
+ }
302
+ // Check if the item property is truthy
303
+ const value = getNestedValue(item, whenAttr);
304
+ const isTruthy = Boolean(value);
305
+ if (isTruthy) {
306
+ // Replace the conditional element with its children
307
+ const parent = conditionalEl.parentNode;
308
+ if (parent) {
309
+ // Move all children before the conditional element
310
+ while (conditionalEl.firstChild) {
311
+ parent.insertBefore(conditionalEl.firstChild, conditionalEl);
312
+ }
313
+ // Remove the conditional element
314
+ parent.removeChild(conditionalEl);
315
+ }
316
+ }
317
+ else {
318
+ // Remove the conditional element and its children
319
+ conditionalEl.remove();
320
+ }
321
+ }
322
+ // Set ticketable context on export buttons
323
+ for (const exportEl of fragment.querySelectorAll("u-ticketable-export")) {
324
+ if (item) {
325
+ exportEl.setAttribute("data-ticketable-id", item.id);
326
+ exportEl.setAttribute("data-ticketable-type", this.ticketableType);
327
+ exportEl.setAttribute("exportable", item.exportable_to_wallet ? "true" : "false");
328
+ }
329
+ else {
330
+ exportEl.setAttribute("exportable", "false");
331
+ }
332
+ }
194
333
  return fragment;
195
334
  }
196
335
  componentDidUpdate() {
@@ -480,7 +619,7 @@ export class TicketableList extends UnidyComponent {
480
619
  },
481
620
  "complexType": {
482
621
  "original": "{\n ticketableType: \"ticket\" | \"subscription\";\n items: Subscription[] | Ticket[];\n paginationMeta: PaginationMeta | null;\n }",
483
- "resolved": "{ ticketableType: \"subscription\" | \"ticket\"; items: { id: string; title: string; text: string; state: string; reference: string; created_at: Date; updated_at: Date; price: number; user_id: string; subscription_category_id: string; payment_frequency?: string; metadata?: Record<string, unknown>; wallet_export?: Record<string, unknown>; payment_state?: string; currency?: string; button_cta_url?: string; starts_at?: Date; ends_at?: Date; next_payment_at?: Date; }[] | { id: string; title: string; reference: string; state: string; starts_at: Date; created_at: Date; updated_at: Date; price: number; user_id: string; ticket_category_id: string; text?: string; metadata?: Record<string, unknown>; wallet_export?: Record<string, unknown>; payment_state?: string; button_cta_url?: string; info_banner?: string; seating?: string; venue?: string; currency?: string; ends_at?: Date; }[]; paginationMeta: { count: number; page: number; limit: number; last: number; prev?: number; next?: number; }; }",
622
+ "resolved": "{ ticketableType: \"subscription\" | \"ticket\"; items: { id: string; title: string; text: string; exportable_to_wallet: boolean; state: string; reference: string; created_at: Date; updated_at: Date; price: number; user_id: string; subscription_category_id: string; payment_frequency?: string; metadata?: Record<string, unknown>; wallet_export?: Record<string, unknown>; payment_state?: string; currency?: string; button_cta_url?: string; starts_at?: Date; ends_at?: Date; next_payment_at?: Date; }[] | { id: string; title: string; reference: string; exportable_to_wallet: boolean; state: string; starts_at: Date; created_at: Date; updated_at: Date; price: number; user_id: string; ticket_category_id: string; text?: string; metadata?: Record<string, unknown>; wallet_export?: Record<string, unknown>; payment_state?: string; button_cta_url?: string; info_banner?: string; seating?: string; venue?: string; currency?: string; ends_at?: Date; }[]; paginationMeta: { count: number; page: number; limit: number; last: number; prev?: number; next?: number; }; }",
484
623
  "references": {
485
624
  "Subscription": {
486
625
  "location": "import",
@@ -516,7 +655,6 @@ export class TicketableList extends UnidyComponent {
516
655
  }
517
656
  }];
518
657
  }
519
- static get elementRef() { return "element"; }
520
658
  static get watchers() {
521
659
  return [{
522
660
  "propName": "page",
@@ -1 +1 @@
1
- {"version":3,"file":"ticketable-list.js","sourceRoot":"","sources":["../../../../src/ticketable/components/ticketable-list/ticketable-list.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAqB,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAE1G,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAExC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAG9E,OAAO,EAAE,qBAAqB,EAAwB,MAAM,8BAA8B,CAAC;AAC3F,OAAO,EAAE,oBAAoB,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAC;AAEzF,MAAM,OAAO,GAA2B;IACtC,OAAO,EAAE,IAAI;IACb,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;IACN,OAAO,EAAE,IAAI;IACb,EAAE,EAAE,EAAE;CACP,CAAC;AAGF,MAAM,OAAO,cAAe,SAAQ,cAAc;;;;IACrC,OAAO,CAAc;IAEhC,8IAA8I;IACrI,KAAK,GAA8B,EAAE,CAAC;IACtC,OAAO,GAAG,IAAI,CAAC;IACf,KAAK,GAAkB,IAAI,CAAC;IAC7B,cAAc,GAA0B,IAAI,CAAC;IAE7C,MAAM,CAAU;IAChB,cAAc,CAAU;IAEhC,+CAA+C;IACtB,MAAM,GAAG,EAAE,CAAC;IAErC,yDAAyD;IAChC,KAAK,GAAG,EAAE,CAAC;IACX,IAAI,GAAG,CAAC,CAAC;IAE1B,aAAa,CAAU;IACvB,eAAe,GAAa,KAAK,CAAC;IAClC,cAAc,CAA6B;IAKnD,KAAK,CAAC,SAAS;QACb,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;IACxB,CAAC;IAEO,KAAK,GAA2B,IAAI,CAAC;IAEpC,sBAAsB,CAI5B;IAEM,oBAAoB,CAG1B;IAEH,KAAK,CAAC,iBAAiB;QACrB,IAAI,CAAC,KAAK,GAAG,qBAAqB,EAAE,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,MAAM,aAAa,EAAE,CAAC;QACtB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAE5D,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAE9C,IAAI,MAAM,YAAY,CAAC,eAAe,EAAE,EAAE,CAAC;YACzC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YACtB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,IAAI,CAAC,KAAK,qBAAqB,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;QACjG,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,QAAQ;QACpB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEpB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,IAAI,CAAC,KAAK,GAAG,2DAA2D,CAAC;YACzE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YACtD,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,cAAc,KAAK,QAAQ,IAAI,IAAI,CAAC,cAAc,KAAK,cAAc,EAAE,CAAC;YAC/E,IAAI,CAAC,KAAK,GAAG,gDAAgD,IAAI,CAAC,cAAc,sCAAsC,CAAC;YACvH,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YACtD,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,cAAc,EAAE,CAAC;YAE3C,oFAAoF;YACpF,MAAM,UAAU,GAA2B,MAAM,CAAC,WAAW,CAC3D,IAAI,eAAe,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CACtE,CAAC;YAEF,gCAAgC;YAChC,MAAM,UAAU,GAAG;gBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,IAAI,CAAC,KAAK;gBACnB,KAAK,EAAE,UAAU,CAAC,KAAK;gBACvB,YAAY,EAAE,UAAU,CAAC,aAAa;gBACtC,OAAO,EAAE,UAAU,CAAC,QAA4E;gBAChG,cAAc,EAAE,UAAU,CAAC,eAA6C;gBACxE,SAAS,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS;aAC7E,CAAC;YAEF,mDAAmD;YACnD,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GACjB,IAAI,CAAC,cAAc,KAAK,QAAQ;gBAC9B,CAAC,CAAC,MAAM,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;oBAC7B,GAAG,UAAU;oBACb,gBAAgB,EAAE,UAAU,CAAC,kBAAkB;iBAChD,CAAC;gBACJ,CAAC,CAAC,MAAM,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC;oBACnC,GAAG,UAAU;oBACb,sBAAsB,EAAE,UAAU,CAAC,wBAAwB;iBAC5D,CAAC,CAAC;YAET,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,EAAE,CAAC;gBACpD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBAC5C,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;gBACrB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;gBACtD,OAAO;YACT,CAAC;YAED,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;YAC1B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC;YAEhC,wCAAwC;YACxC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC;YAC9C,CAAC;YAED,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YAErB,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;QACpI,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,uCAAuC,CAAC;YAC1F,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAEO,kBAAkB,CAAC,KAAoB;QAC7C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,CAAC,gCAAgC,EAAE,EAAE,YAAY,EAAE,qBAAqB,EAAE,CAAC,CAAC;QACtF,CAAC;QAED,MAAM,aAAa,GAA2B;YAC5C,iBAAiB,EAAE,CAAC,CAAC,0BAA0B,EAAE,EAAE,YAAY,EAAE,2DAA2D,EAAE,CAAC;YAC/H,uBAAuB,EAAE,CAAC,CAAC,0BAA0B,EAAE,EAAE,YAAY,EAAE,oCAAoC,EAAE,CAAC;YAC9G,cAAc,EAAE,CAAC,CAAC,iBAAiB,EAAE,EAAE,YAAY,EAAE,6BAA6B,EAAE,CAAC;YACrF,gBAAgB,EAAE,CAAC,CAAC,qBAAqB,EAAE,EAAE,YAAY,EAAE,6CAA6C,EAAE,CAAC;YAC3G,YAAY,EAAE,CAAC,CAAC,qBAAqB,EAAE,EAAE,YAAY,EAAE,8CAA8C,EAAE,CAAC;YACxG,YAAY,EAAE,CAAC,CAAC,eAAe,EAAE,EAAE,YAAY,EAAE,kDAAkD,EAAE,CAAC;YACtG,gBAAgB,EAAE,CAAC,CAAC,yBAAyB,EAAE,EAAE,YAAY,EAAE,+BAA+B,EAAE,CAAC;SAClG,CAAC;QAEF,OAAO,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,EAAE,YAAY,EAAE,4BAA4B,EAAE,CAAC,CAAC;IACrG,CAAC;IAEO,cAAc,CAAC,QAA6B,EAAE,IAA4B;QAChF,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAqB,CAAC;QACtE,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC;QAEzB,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,gBAAgB,CAAC,cAAc,CAAC,EAAE,CAAC;YAC7D,KAAK,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;iBAC5D,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;iBACrD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBACZ,IAAI,UAAU,EAAE,CAAC;oBACf,OAAO,CAAC,IAAI,EAAE,GAAG,CAAU,CAAC;gBAC9B,CAAC;gBAED,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;gBACvB,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC9C,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,EAAE,GAAa,CAAC,CAAC;gBACxD,CAAC;gBAED,OAAO,CAAC,IAAI,EAAE,KAAK,CAAU,CAAC;YAChC,CAAC,CAAC,EAAE,CAAC;gBACL,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;gBACvE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;QAED,IAAI,UAAU,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACvC,6BAA6B,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC;QAED,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACpE,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,CAAC,SAAS,GAAG,oBAAoB,CAAC,aAAa,CAAC,CAAC;YAC1D,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBACzC,IAAI,CAAC,GAAG;oBAAE,SAAS;gBACnB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;gBACxB,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;gBAClD,MAAM,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;gBAE3D,IAAI,UAAkB,CAAC;gBAEvB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;oBACvD,UAAU,GAAG,MAAM,CAAC,KAAK,EAAE,cAAc,IAAI,YAAY,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC3G,CAAC;qBAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;oBACxD,UAAU,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC/H,CAAC;qBAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBACrC,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAChC,CAAC;qBAAM,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;oBACzB,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC7B,CAAC;qBAAM,CAAC;oBACN,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;gBACrD,CAAC;gBAED,IAAI,UAAU,EAAE,CAAC;oBACf,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;gBAC9D,CAAC;gBAED,OAAO,CAAC,WAAW,GAAG,UAAU,CAAC;YACnC,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,kBAAkB;QAChB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,qBAAqB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED,kBAAkB;QAChB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,qBAAqB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAEO,cAAc;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEtB,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1D,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YAC5C,OAAO;QACT,CAAC;QAED,yBAAyB;QACzB,aAAa,CAAC,SAAS,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAEO,aAAa,CAAC,MAAe,EAAE,QAA6B;QAClE,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,qDAAqD;YACrD,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,CAAC;YACvD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC;gBAC1D,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;aAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACvB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC9B,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YAC3D,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,KAAK,OAAO,CAAC;QACpE,CAAC;IACH,CAAC;IAED,MAAM;QACJ,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YACzD,OAAO,CACL;gBACG,CAAC,CAAC,eAAe,CAAC;;gBAAG,IAAI,CAAC,KAAK,CAC7B,CACN,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;YACxC,OAAO,+CAAuC,CAAC;QACjD,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,CACL,EAAC,IAAI;gBACH,eAAQ,CACH,CACR,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAEtC,OAAO,CACL,EAAC,IAAI;YACH,WAAK,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,GAAI;YACjE,YAAM,IAAI,EAAC,YAAY,GAAG,CACrB,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Element, Event, type EventEmitter, Host, h, Prop, State, Watch } from \"@stencil/core\";\nimport type { Locale } from \"date-fns\";\nimport { format } from \"date-fns/format\";\nimport { de } from \"date-fns/locale/de\";\nimport { enUS } from \"date-fns/locale/en-US\";\nimport { fr } from \"date-fns/locale/fr\";\nimport { nlBE } from \"date-fns/locale/nl-BE\";\nimport { ro } from \"date-fns/locale/ro\";\nimport type { PaginationMeta } from \"../../../api\";\nimport { getUnidyClient } from \"../../../api\";\nimport { Auth } from \"../../../auth\";\nimport { t } from \"../../../i18n\";\nimport { UnidyComponent } from \"../../../logger\";\nimport { unidyState, waitForConfig } from \"../../../shared/store/unidy-store\";\nimport type { Subscription } from \"../../api/subscriptions\";\nimport type { Ticket } from \"../../api/tickets\";\nimport { createPaginationStore, type PaginationStore } from \"../../store/pagination-store\";\nimport { createSkeletonLoader, replaceTextNodesWithSkeletons } from \"./skeleton-helpers\";\n\nconst LOCALES: Record<string, Locale> = {\n \"en-US\": enUS,\n de: de,\n fr: fr,\n \"nl-BE\": nlBE,\n ro: ro,\n};\n\n@Component({ tag: \"u-ticketable-list\", shadow: false })\nexport class TicketableList extends UnidyComponent {\n @Element() element: HTMLElement;\n\n // TODO: move into a generic store, since we'll have this kind of fetching all over the app (also implement SWR and other things inside of it)\n @State() items: Subscription[] | Ticket[] = [];\n @State() loading = true;\n @State() error: string | null = null;\n @Prop() paginationMeta: PaginationMeta | null = null;\n\n @Prop() target?: string;\n @Prop() containerClass?: string;\n\n // TODO: add a component that can override this\n @Prop({ mutable: true }) filter = \"\";\n\n // TODO: Add pagination component to override all of this\n @Prop({ mutable: true }) limit = 10;\n @Prop({ mutable: true }) page = 1;\n\n @Prop() skeletonCount?: number;\n @Prop() skeletonAllText?: boolean = false;\n @Prop() ticketableType!: \"ticket\" | \"subscription\";\n\n @Watch(\"page\")\n @Watch(\"limit\")\n @Watch(\"filter\")\n async fetchData() {\n await this.loadData();\n }\n\n @Prop() store: PaginationStore | null = null;\n\n @Event() uTicketableListSuccess!: EventEmitter<{\n ticketableType: \"ticket\" | \"subscription\";\n items: Subscription[] | Ticket[];\n paginationMeta: PaginationMeta | null;\n }>;\n\n @Event() uTicketableListError!: EventEmitter<{\n ticketableType?: \"ticket\" | \"subscription\";\n error: string;\n }>;\n\n async componentWillLoad() {\n this.store = createPaginationStore();\n }\n\n async componentDidLoad() {\n this.logger.trace(\"start componentDidLoad\");\n await waitForConfig();\n this.logger.trace(\"UnidyConfig loaded, start to load data\");\n\n const authInstance = await Auth.getInstance();\n\n if (await authInstance.isAuthenticated()) {\n await this.loadData();\n this.logger.debug(`data loaded, items: ${this.items}, paginationMeta: ${this.paginationMeta}`);\n } else {\n this.logger.debug(\"user is not authenticated, skipping data load\");\n }\n }\n\n private async loadData() {\n this.loading = true;\n\n if (!this.ticketableType) {\n this.error = \"[u-ticketable-list] ticketable-type attribute is required\";\n this.loading = false;\n this.uTicketableListError.emit({ error: this.error });\n return;\n }\n\n if (this.ticketableType !== \"ticket\" && this.ticketableType !== \"subscription\") {\n this.error = `[u-ticketable-list] Invalid ticketable-type: ${this.ticketableType}. Must be 'ticket' or 'subscription'`;\n this.loading = false;\n this.uTicketableListError.emit({ error: this.error });\n return;\n }\n\n try {\n const unidyClient = await getUnidyClient();\n\n // Parse filter string into typed args using URLSearchParams (treats ; as separator)\n const filterArgs: Record<string, string> = Object.fromEntries(\n new URLSearchParams((this.filter || \"\").replace(/;/g, \"&\")).entries(),\n );\n\n // Common args for both services\n const commonArgs = {\n page: this.page,\n perPage: this.limit,\n state: filterArgs.state,\n paymentState: filterArgs.payment_state,\n orderBy: filterArgs.order_by as \"starts_at\" | \"ends_at\" | \"reference\" | \"created_at\" | undefined,\n orderDirection: filterArgs.order_direction as \"asc\" | \"desc\" | undefined,\n serviceId: filterArgs.service_id ? Number(filterArgs.service_id) : undefined,\n };\n\n // Call the appropriate service with type-safe args\n const [error, data] =\n this.ticketableType === \"ticket\"\n ? await unidyClient.tickets.list({\n ...commonArgs,\n ticketCategoryId: filterArgs.ticket_category_id,\n })\n : await unidyClient.subscriptions.list({\n ...commonArgs,\n subscriptionCategoryId: filterArgs.subscription_category_id,\n });\n\n if (error !== null || !data || !(\"results\" in data)) {\n this.error = this.getTranslatedError(error);\n this.loading = false;\n this.uTicketableListError.emit({ error: this.error });\n return;\n }\n\n this.items = data.results;\n this.paginationMeta = data.meta;\n\n // Update the store with pagination data\n if (this.store) {\n this.store.state.paginationMeta = data.meta;\n }\n\n this.loading = false;\n\n this.uTicketableListSuccess.emit({ ticketableType: this.ticketableType, items: this.items, paginationMeta: this.paginationMeta });\n } catch (err) {\n this.error = err instanceof Error ? err.message : \"[u-ticketable-list] An error occurred\";\n this.loading = false;\n this.uTicketableListError.emit({ error: this.error });\n }\n }\n\n private getTranslatedError(error: string | null): string {\n if (!error) {\n return t(\"ticketable.errors.fetch_failed\", { defaultValue: \"Failed to load data\" });\n }\n\n const errorMessages: Record<string, string> = {\n connection_failed: t(\"errors.connection_failed\", { defaultValue: \"Connection failed. Please check your internet connection.\" }),\n schema_validation_error: t(\"errors.schema_validation\", { defaultValue: \"Invalid data received from server.\" }),\n internal_error: t(\"errors.internal\", { defaultValue: \"An internal error occurred.\" }),\n missing_id_token: t(\"errors.unauthorized\", { defaultValue: \"You must be logged in to view this content.\" }),\n unauthorized: t(\"errors.unauthorized\", { defaultValue: \"You are not authorized to view this content.\" }),\n server_error: t(\"errors.server\", { defaultValue: \"A server error occurred. Please try again later.\" }),\n invalid_response: t(\"errors.invalid_response\", { defaultValue: \"Invalid response from server.\" }),\n };\n\n return errorMessages[error] || t(\"errors.unknown\", { defaultValue: \"An unknown error occurred.\" });\n }\n\n private renderFragment(template: HTMLTemplateElement, item?: Subscription | Ticket): DocumentFragment {\n const fragment = template.content.cloneNode(true) as DocumentFragment;\n const isSkeleton = !item;\n\n for (const elem of fragment.querySelectorAll(\"[unidy-attr]\")) {\n for (const [unidyAttr, newValue] of Array.from(elem.attributes)\n .filter((attr) => attr.name.startsWith(\"unidy-attr-\"))\n .map((attr) => {\n if (isSkeleton) {\n return [attr, \"#\"] as const;\n }\n\n let value = attr.value;\n for (const [key, val] of Object.entries(item)) {\n value = value.replaceAll(`{{${key}}}`, val as string);\n }\n\n return [attr, value] as const;\n })) {\n elem.setAttribute(unidyAttr.name.replace(\"unidy-attr-\", \"\"), newValue);\n elem.removeAttribute(unidyAttr.name);\n }\n }\n\n if (isSkeleton && this.skeletonAllText) {\n replaceTextNodesWithSkeletons(fragment);\n }\n\n for (const valueEl of fragment.querySelectorAll(\"ticketable-value\")) {\n if (isSkeleton) {\n valueEl.innerHTML = createSkeletonLoader(\"Sample Text\");\n } else {\n const key = valueEl.getAttribute(\"name\");\n if (!key) continue;\n const value = item[key];\n const formatAttr = valueEl.getAttribute(\"format\");\n const dateFormatAttr = valueEl.getAttribute(\"date-format\");\n\n let finalValue: string;\n\n if (typeof value === \"object\" && value instanceof Date) {\n finalValue = format(value, dateFormatAttr || \"yyyy-MM-dd\", { locale: LOCALES[unidyState.locale] || de });\n } else if (typeof value === \"number\" && key === \"price\") {\n finalValue = new Intl.NumberFormat(unidyState.locale, { style: \"currency\", currency: item.currency || \"EUR\" }).format(value);\n } else if (typeof value === \"number\") {\n finalValue = value.toFixed(2);\n } else if (value != null) {\n finalValue = String(value);\n } else {\n finalValue = valueEl.getAttribute(\"default\") || \"\";\n }\n\n if (formatAttr) {\n finalValue = formatAttr.replaceAll(\"{{value}}\", finalValue);\n }\n\n valueEl.textContent = finalValue;\n }\n }\n\n return fragment;\n }\n\n componentDidUpdate() {\n if (this.target) {\n requestAnimationFrame(() => this.renderToTarget());\n }\n }\n\n componentDidRender() {\n if (this.target) {\n requestAnimationFrame(() => this.renderToTarget());\n }\n }\n\n private renderToTarget() {\n const template = this.element.querySelector(\"template\");\n if (!template) return;\n\n const targetElement = document.querySelector(this.target);\n if (!targetElement) {\n this.logger.warn(\"targetElement not found\");\n return;\n }\n\n // Clear existing content\n targetElement.innerHTML = \"\";\n this.renderContent(targetElement, template);\n }\n\n private renderContent(target: Element, template: HTMLTemplateElement) {\n if (this.loading) {\n // Use skeletonCount if provided, otherwise use limit\n const skeletonCount = this.skeletonCount || this.limit;\n for (const _item of Array.from({ length: skeletonCount })) {\n target.appendChild(this.renderFragment(template));\n }\n } else if (!this.error) {\n for (const item of this.items) {\n target.appendChild(this.renderFragment(template, item));\n }\n } else {\n this.logger.error(`failed to load content: ${this.error}`);\n target.innerHTML = `<h1>${t(\"errors.prefix\")} ${this.error}</h1>`;\n }\n }\n\n render() {\n if (this.error) {\n this.logger.error(`can't render content: ${this.error}`);\n return (\n <h1>\n {t(\"errors.prefix\")} {this.error}\n </h1>\n );\n }\n\n const template = this.element.querySelector(\"template\");\n if (!template) {\n this.logger.error(\"template not found\");\n return <h1>No template found - fix config</h1>;\n }\n\n if (this.target) {\n return (\n <Host>\n <slot />\n </Host>\n );\n }\n\n const element = document.createElement(\"div\");\n this.renderContent(element, template);\n\n return (\n <Host>\n <div class={this.containerClass} innerHTML={element.innerHTML} />\n <slot name=\"pagination\" />\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"ticketable-list.js","sourceRoot":"","sources":["../../../../src/ticketable/components/ticketable-list/ticketable-list.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAqB,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEjG,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAI9E,OAAO,EAAE,oBAAoB,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAC;AAEzF,MAAM,OAAO,GAA2B,EAAE,CAAC;AAE3C;;;;;;;;GAQG;AACH,0FAA0F;AAC1F,SAAS,cAAc,CAAC,GAAQ,EAAE,IAAY;IAC5C,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAEpC,sCAAsC;IACtC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAI,MAAM,GAAG,GAAG,CAAC;IAEjB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,MAAM,IAAI,IAAI;YAAE,OAAO,SAAS,CAAC;QAErC,kDAAkD;QAClD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACnC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;YAChF,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,WAAW;IACxB,sDAAsD;IACtD,MAAM,OAAO,CAAC,GAAG,CAAC;QAChB,CAAC,OAAO,CAAC,EAAE;YACT,MAAM,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC9C,OAAO,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;YAC3B,CAAC,CAAC;QACJ,CAAC,OAAO,CAAC,EAAE;YACT,MAAM,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC3C,OAAO,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;YACzB,CAAC,CAAC;QACJ,CAAC,OAAO,CAAC,EAAE;YACT,MAAM,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC3C,OAAO,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;YACzB,CAAC,CAAC;QACJ,CAAC,OAAO,CAAC,KAAK;YACZ,MAAM,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC9C,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC;YAC9B,CAAC,CAAC;QACJ,CAAC,OAAO,CAAC,EAAE;YACT,MAAM,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC3C,OAAO,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;YACzB,CAAC,CAAC;QACJ,CAAC,OAAO,CAAC,EAAE;YACT,MAAM,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC3C,OAAO,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;YACzB,CAAC,CAAC;KACL,CAAC,CAAC;AACL,CAAC;AAGD,MAAM,OAAO,cAAe,SAAQ,cAAc,EAAE;;;;IAC1C,eAAe,CAAc;IAErC,8IAA8I;IACrI,KAAK,GAA8B,EAAE,CAAC;IACtC,OAAO,GAAG,IAAI,CAAC;IACf,KAAK,GAAkB,IAAI,CAAC;IAC7B,cAAc,GAA0B,IAAI,CAAC;IAE7C,MAAM,CAAU;IAChB,cAAc,CAAU;IAEhC,+CAA+C;IACtB,MAAM,GAAG,EAAE,CAAC;IAErC,yDAAyD;IAChC,KAAK,GAAG,EAAE,CAAC;IACX,IAAI,GAAG,CAAC,CAAC;IAE1B,aAAa,CAAU;IACvB,eAAe,GAAa,KAAK,CAAC;IAClC,cAAc,CAA6B;IAKnD,KAAK,CAAC,SAAS;QACb,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;IACxB,CAAC;IAEO,KAAK,GAA2B,IAAI,CAAC;IAEpC,sBAAsB,CAI5B;IAEM,oBAAoB,CAG1B;IAEH,KAAK,CAAC,iBAAiB;QACrB,MAAM,aAAa,EAAE,CAAC;QACtB,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YAC1B,OAAO,CAAC,KAAK,CAAC,kEAAkE,EAAE,GAAG,CAAC,CAAC;QACzF,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,MAAM,aAAa,EAAE,CAAC;QACtB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAE5D,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAE9C,IAAI,MAAM,YAAY,CAAC,eAAe,EAAE,EAAE,CAAC;YACzC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YACtB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,IAAI,CAAC,KAAK,qBAAqB,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;QACjG,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACrE,CAAC;QAED,4DAA4D;QAC5D,IAAI,CAAC,eAAe,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC,QAAuB,EAAE,EAAE;YACvE,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;gBACzD,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,oBAAoB;QAClB,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;IAC3B,CAAC;IAEO,KAAK,CAAC,QAAQ;QACpB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEpB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,IAAI,CAAC,KAAK,GAAG,2DAA2D,CAAC;YACzE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YACtD,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,cAAc,KAAK,QAAQ,IAAI,IAAI,CAAC,cAAc,KAAK,cAAc,EAAE,CAAC;YAC/E,IAAI,CAAC,KAAK,GAAG,gDAAgD,IAAI,CAAC,cAAc,sCAAsC,CAAC;YACvH,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YACtD,OAAO;QACT,CAAC;QAED,8CAA8C;QAC9C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACtC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,CAAC,KAAK,GAAG,6CAA6C,CAAC;YAC3D,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,OAAO;QACT,CAAC;QAED,qEAAqE;QAErE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACtC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,IAAI,CAAC,KAAK,GAAG,4CAA4C,CAAC;YAC1D,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,cAAc,EAAE,CAAC;YAE3C,oFAAoF;YACpF,MAAM,UAAU,GAA2B,MAAM,CAAC,WAAW,CAAC,IAAI,eAAe,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YAErI,gCAAgC;YAChC,MAAM,UAAU,GAAG;gBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,IAAI,CAAC,KAAK;gBACnB,KAAK,EAAE,UAAU,CAAC,KAAK;gBACvB,YAAY,EAAE,UAAU,CAAC,aAAa;gBACtC,OAAO,EAAE,UAAU,CAAC,QAA4E;gBAChG,cAAc,EAAE,UAAU,CAAC,eAA6C;gBACxE,SAAS,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS;aAC7E,CAAC;YAEF,mDAAmD;YACnD,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GACjB,IAAI,CAAC,cAAc,KAAK,QAAQ;gBAC9B,CAAC,CAAC,MAAM,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;oBAC7B,GAAG,UAAU;oBACb,gBAAgB,EAAE,UAAU,CAAC,kBAAkB;iBAChD,CAAC;gBACJ,CAAC,CAAC,MAAM,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC;oBACnC,GAAG,UAAU;oBACb,sBAAsB,EAAE,UAAU,CAAC,wBAAwB;iBAC5D,CAAC,CAAC;YAET,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,EAAE,CAAC;gBACpD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBAC5C,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;gBACrB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;gBACtD,OAAO;YACT,CAAC;YAED,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;YAC1B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC;YAEhC,wCAAwC;YACxC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC;YAC9C,CAAC;YAED,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YAErB,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;QACpI,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,uCAAuC,CAAC;YAC1F,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAEO,kBAAkB,CAAC,KAAoB;QAC7C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,CAAC,gCAAgC,EAAE,EAAE,YAAY,EAAE,qBAAqB,EAAE,CAAC,CAAC;QACtF,CAAC;QAED,MAAM,aAAa,GAA2B;YAC5C,iBAAiB,EAAE,CAAC,CAAC,0BAA0B,EAAE,EAAE,YAAY,EAAE,2DAA2D,EAAE,CAAC;YAC/H,uBAAuB,EAAE,CAAC,CAAC,0BAA0B,EAAE,EAAE,YAAY,EAAE,oCAAoC,EAAE,CAAC;YAC9G,cAAc,EAAE,CAAC,CAAC,iBAAiB,EAAE,EAAE,YAAY,EAAE,6BAA6B,EAAE,CAAC;YACrF,gBAAgB,EAAE,CAAC,CAAC,qBAAqB,EAAE,EAAE,YAAY,EAAE,6CAA6C,EAAE,CAAC;YAC3G,YAAY,EAAE,CAAC,CAAC,qBAAqB,EAAE,EAAE,YAAY,EAAE,8CAA8C,EAAE,CAAC;YACxG,YAAY,EAAE,CAAC,CAAC,eAAe,EAAE,EAAE,YAAY,EAAE,kDAAkD,EAAE,CAAC;YACtG,gBAAgB,EAAE,CAAC,CAAC,yBAAyB,EAAE,EAAE,YAAY,EAAE,+BAA+B,EAAE,CAAC;SAClG,CAAC;QAEF,OAAO,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,EAAE,YAAY,EAAE,4BAA4B,EAAE,CAAC,CAAC;IACrG,CAAC;IAEO,cAAc,CAAC,QAA6B,EAAE,IAA4B;QAChF,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAqB,CAAC;QACtE,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC;QAEzB,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,gBAAgB,CAAC,cAAc,CAAC,EAAE,CAAC;YAC7D,KAAK,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;iBAC5D,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;iBACrD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBACZ,IAAI,UAAU,EAAE,CAAC;oBACf,OAAO,CAAC,IAAI,EAAE,GAAG,CAAU,CAAC;gBAC9B,CAAC;gBAED,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;gBACvB,8EAA8E;gBAC9E,MAAM,aAAa,GAAG,kBAAkB,CAAC;gBACzC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;oBACnD,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;oBACtD,OAAO,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC3D,CAAC,CAAC,CAAC;gBAEH,OAAO,CAAC,IAAI,EAAE,KAAK,CAAU,CAAC;YAChC,CAAC,CAAC,EAAE,CAAC;gBACL,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;gBACvE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;QAED,IAAI,UAAU,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACvC,6BAA6B,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC;QAED,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACpE,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,CAAC,SAAS,GAAG,oBAAoB,CAAC,aAAa,CAAC,CAAC;YAC1D,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBACzC,IAAI,CAAC,GAAG;oBAAE,SAAS;gBACnB,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBACxC,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;gBAClD,MAAM,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;gBAE3D,IAAI,UAAkB,CAAC;gBAEvB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;oBACvD,UAAU,GAAG,MAAM,CAAC,KAAK,EAAE,cAAc,IAAI,YAAY,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;gBACnH,CAAC;qBAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;oBACxD,UAAU,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC/H,CAAC;qBAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBACrC,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC5B,UAAU,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;oBAChC,CAAC;yBAAM,CAAC;wBACN,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAChC,CAAC;gBACH,CAAC;qBAAM,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;oBACzB,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC7B,CAAC;qBAAM,CAAC;oBACN,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;gBACrD,CAAC;gBAED,IAAI,UAAU,EAAE,CAAC;oBACf,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;gBAC9D,CAAC;gBAED,OAAO,CAAC,WAAW,GAAG,UAAU,CAAC;YACnC,CAAC;QACH,CAAC;QAED,0CAA0C;QAC1C,qDAAqD;QACrD,WAAW;QACX,iDAAiD;QACjD,yCAAyC;QACzC,8BAA8B;QAC9B,mEAAmE;QACnE,0DAA0D;QAC1D,MAAM,mBAAmB,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,CAAC,CAAC;QAC5F,KAAK,MAAM,aAAa,IAAI,mBAAmB,EAAE,CAAC;YAChD,MAAM,QAAQ,GAAG,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YACpD,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,6CAA6C;gBAC7C,aAAa,CAAC,MAAM,EAAE,CAAC;gBACvB,SAAS;YACX,CAAC;YAED,IAAI,UAAU,EAAE,CAAC;gBACf,0CAA0C;gBAC1C,aAAa,CAAC,MAAM,EAAE,CAAC;gBACvB,SAAS;YACX,CAAC;YAED,uCAAuC;YACvC,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC7C,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;YAEhC,IAAI,QAAQ,EAAE,CAAC;gBACb,oDAAoD;gBACpD,MAAM,MAAM,GAAG,aAAa,CAAC,UAAU,CAAC;gBACxC,IAAI,MAAM,EAAE,CAAC;oBACX,mDAAmD;oBACnD,OAAO,aAAa,CAAC,UAAU,EAAE,CAAC;wBAChC,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;oBAC/D,CAAC;oBACD,iCAAiC;oBACjC,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;gBACpC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,kDAAkD;gBAClD,aAAa,CAAC,MAAM,EAAE,CAAC;YACzB,CAAC;QACH,CAAC;QAED,2CAA2C;QAC3C,KAAK,MAAM,QAAQ,IAAI,QAAQ,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,EAAE,CAAC;YACxE,IAAI,IAAI,EAAE,CAAC;gBACT,QAAQ,CAAC,YAAY,CAAC,oBAAoB,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;gBACrD,QAAQ,CAAC,YAAY,CAAC,sBAAsB,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;gBACnE,QAAQ,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACpF,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,kBAAkB;QAChB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,qBAAqB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED,kBAAkB;QAChB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,qBAAqB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAEO,cAAc;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEtB,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1D,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YAC5C,OAAO;QACT,CAAC;QAED,yBAAyB;QACzB,aAAa,CAAC,SAAS,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAEO,aAAa,CAAC,MAAe,EAAE,QAA6B;QAClE,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,qDAAqD;YACrD,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,CAAC;YACvD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC;gBAC1D,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;aAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACvB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC9B,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YAC3D,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,KAAK,OAAO,CAAC;QACpE,CAAC;IACH,CAAC;IAED,MAAM;QACJ,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YACzD,OAAO,CACL;gBACG,CAAC,CAAC,eAAe,CAAC;;gBAAG,IAAI,CAAC,KAAK,CAC7B,CACN,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;YACxC,OAAO,+CAAuC,CAAC;QACjD,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,CACL,EAAC,IAAI;gBACH,eAAQ,CACH,CACR,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAEtC,OAAO,CACL,EAAC,IAAI;YACH,WAAK,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,GAAI;YACjE,YAAM,IAAI,EAAC,YAAY,GAAG,CACrB,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Event, type EventEmitter, Host, h, Prop, State, Watch } from \"@stencil/core\";\nimport type { Locale } from \"date-fns\";\nimport { format } from \"date-fns/format\";\nimport type { PaginationMeta } from \"../../../api\";\nimport { getUnidyClient } from \"../../../api\";\nimport { Auth } from \"../../../auth\";\nimport { onChange as authOnChange } from \"../../../auth/store/auth-store\";\nimport { t } from \"../../../i18n\";\nimport { UnidyComponent } from \"../../../shared/base/component\";\nimport { unidyState, waitForConfig } from \"../../../shared/store/unidy-store\";\nimport type { Subscription } from \"../../api/subscriptions\";\nimport type { Ticket } from \"../../api/tickets\";\nimport type { PaginationStore } from \"../../store/pagination-store\";\nimport { createSkeletonLoader, replaceTextNodesWithSkeletons } from \"./skeleton-helpers\";\n\nconst LOCALES: Record<string, Locale> = {};\n\n/**\n * Extracts a nested value from an object using a path string.\n * Supports dot notation for object properties and bracket notation for arrays.\n * Paths must use dot notation throughout, e.g., \"metadata.foo.bar.[1]\"\n * Examples:\n * - \"metadata.foo.bar\" -> item.metadata.foo.bar\n * - \"metadata.foo.bar.[1]\" -> item.metadata.foo.bar[1]\n * - \"wallet_export.[0].address\" -> item.wallet_export[0].address\n */\n// biome-ignore lint/suspicious/noExplicitAny: Dynamic nested property access requires any\nfunction getNestedValue(obj: any, path: string): any {\n if (!path || !obj) return undefined;\n\n // Split by dots and process each part\n const parts = path.split(\".\").filter(Boolean);\n let result = obj;\n\n for (const part of parts) {\n if (result == null) return undefined;\n\n // Check if this part is an array index like \"[1]\"\n if (part.startsWith(\"[\") && part.endsWith(\"]\")) {\n const indexStr = part.slice(1, -1);\n const index = /^\\d+$/.test(indexStr) ? Number.parseInt(indexStr, 10) : indexStr;\n result = result[index];\n } else {\n result = result[part];\n }\n }\n\n if (typeof result === \"object\" && result != null) {\n return JSON.stringify(result);\n }\n\n return result;\n}\n\nasync function loadLocales() {\n // TODO: This should be pulled into a shared component\n await Promise.all([\n !LOCALES.en &&\n import(\"date-fns/locale/en-GB\").then((module) => {\n LOCALES.en = module.enGB;\n }),\n !LOCALES.de &&\n import(\"date-fns/locale/de\").then((module) => {\n LOCALES.de = module.de;\n }),\n !LOCALES.fr &&\n import(\"date-fns/locale/fr\").then((module) => {\n LOCALES.fr = module.fr;\n }),\n !LOCALES.nl_be &&\n import(\"date-fns/locale/nl-BE\").then((module) => {\n LOCALES.nl_be = module.nlBE;\n }),\n !LOCALES.ro &&\n import(\"date-fns/locale/ro\").then((module) => {\n LOCALES.ro = module.ro;\n }),\n !LOCALES.sv &&\n import(\"date-fns/locale/sv\").then((module) => {\n LOCALES.sv = module.sv;\n }),\n ]);\n}\n\n@Component({ tag: \"u-ticketable-list\", shadow: false })\nexport class TicketableList extends UnidyComponent() {\n private unsubscribeAuth?: () => void;\n\n // TODO: move into a generic store, since we'll have this kind of fetching all over the app (also implement SWR and other things inside of it)\n @State() items: Subscription[] | Ticket[] = [];\n @State() loading = true;\n @State() error: string | null = null;\n @Prop() paginationMeta: PaginationMeta | null = null;\n\n @Prop() target?: string;\n @Prop() containerClass?: string;\n\n // TODO: add a component that can override this\n @Prop({ mutable: true }) filter = \"\";\n\n // TODO: Add pagination component to override all of this\n @Prop({ mutable: true }) limit = 10;\n @Prop({ mutable: true }) page = 1;\n\n @Prop() skeletonCount?: number;\n @Prop() skeletonAllText?: boolean = false;\n @Prop() ticketableType!: \"ticket\" | \"subscription\";\n\n @Watch(\"page\")\n @Watch(\"limit\")\n @Watch(\"filter\")\n async fetchData() {\n await this.loadData();\n }\n\n @Prop() store: PaginationStore | null = null;\n\n @Event() uTicketableListSuccess!: EventEmitter<{\n ticketableType: \"ticket\" | \"subscription\";\n items: Subscription[] | Ticket[];\n paginationMeta: PaginationMeta | null;\n }>;\n\n @Event() uTicketableListError!: EventEmitter<{\n ticketableType?: \"ticket\" | \"subscription\";\n error: string;\n }>;\n\n async componentWillLoad() {\n await waitForConfig();\n loadLocales().catch((err) => {\n console.error(\"[u-ticketable-list] Failed to load locales, falling back to 'en'\", err);\n });\n }\n\n async componentDidLoad() {\n this.logger.trace(\"start componentDidLoad\");\n await waitForConfig();\n this.logger.trace(\"UnidyConfig loaded, start to load data\");\n\n const authInstance = await Auth.getInstance();\n\n if (await authInstance.isAuthenticated()) {\n await this.loadData();\n this.logger.debug(`data loaded, items: ${this.items}, paginationMeta: ${this.paginationMeta}`);\n } else {\n this.logger.debug(\"user is not authenticated, skipping data load\");\n }\n\n // Listen for auth changes to refresh data when user logs in\n this.unsubscribeAuth = authOnChange(\"token\", (newToken: string | null) => {\n if (newToken) {\n this.logger.debug(\"auth token changed, refreshing data\");\n this.loadData();\n }\n });\n }\n\n disconnectedCallback() {\n this.unsubscribeAuth?.();\n }\n\n private async loadData() {\n this.loading = true;\n\n if (!this.ticketableType) {\n this.error = \"[u-ticketable-list] ticketable-type attribute is required\";\n this.loading = false;\n this.uTicketableListError.emit({ error: this.error });\n return;\n }\n\n if (this.ticketableType !== \"ticket\" && this.ticketableType !== \"subscription\") {\n this.error = `[u-ticketable-list] Invalid ticketable-type: ${this.ticketableType}. Must be 'ticket' or 'subscription'`;\n this.loading = false;\n this.uTicketableListError.emit({ error: this.error });\n return;\n }\n\n // TODO: Add a simple shared way of doing this\n const auth = await Auth.getInstance();\n if (!auth) {\n this.error = \"[u-ticketable-list] Auth instance not found\";\n this.loading = false;\n return;\n }\n\n // TODO: Handle auth on change THAT SHOULD EXIST ON THE AUTH INSTANCE\n\n const idToken = await auth.getToken();\n if (typeof idToken !== \"string\") {\n this.error = \"[u-ticketable-list] Failed to get ID token\";\n this.loading = false;\n return;\n }\n\n try {\n const unidyClient = await getUnidyClient();\n\n // Parse filter string into typed args using URLSearchParams (treats ; as separator)\n const filterArgs: Record<string, string> = Object.fromEntries(new URLSearchParams((this.filter || \"\").replace(/;/g, \"&\")).entries());\n\n // Common args for both services\n const commonArgs = {\n page: this.page,\n perPage: this.limit,\n state: filterArgs.state,\n paymentState: filterArgs.payment_state,\n orderBy: filterArgs.order_by as \"starts_at\" | \"ends_at\" | \"reference\" | \"created_at\" | undefined,\n orderDirection: filterArgs.order_direction as \"asc\" | \"desc\" | undefined,\n serviceId: filterArgs.service_id ? Number(filterArgs.service_id) : undefined,\n };\n\n // Call the appropriate service with type-safe args\n const [error, data] =\n this.ticketableType === \"ticket\"\n ? await unidyClient.tickets.list({\n ...commonArgs,\n ticketCategoryId: filterArgs.ticket_category_id,\n })\n : await unidyClient.subscriptions.list({\n ...commonArgs,\n subscriptionCategoryId: filterArgs.subscription_category_id,\n });\n\n if (error !== null || !data || !(\"results\" in data)) {\n this.error = this.getTranslatedError(error);\n this.loading = false;\n this.uTicketableListError.emit({ error: this.error });\n return;\n }\n\n this.items = data.results;\n this.paginationMeta = data.meta;\n\n // Update the store with pagination data\n if (this.store) {\n this.store.state.paginationMeta = data.meta;\n }\n\n this.loading = false;\n\n this.uTicketableListSuccess.emit({ ticketableType: this.ticketableType, items: this.items, paginationMeta: this.paginationMeta });\n } catch (err) {\n this.error = err instanceof Error ? err.message : \"[u-ticketable-list] An error occurred\";\n this.loading = false;\n this.uTicketableListError.emit({ error: this.error });\n }\n }\n\n private getTranslatedError(error: string | null): string {\n if (!error) {\n return t(\"ticketable.errors.fetch_failed\", { defaultValue: \"Failed to load data\" });\n }\n\n const errorMessages: Record<string, string> = {\n connection_failed: t(\"errors.connection_failed\", { defaultValue: \"Connection failed. Please check your internet connection.\" }),\n schema_validation_error: t(\"errors.schema_validation\", { defaultValue: \"Invalid data received from server.\" }),\n internal_error: t(\"errors.internal\", { defaultValue: \"An internal error occurred.\" }),\n missing_id_token: t(\"errors.unauthorized\", { defaultValue: \"You must be logged in to view this content.\" }),\n unauthorized: t(\"errors.unauthorized\", { defaultValue: \"You are not authorized to view this content.\" }),\n server_error: t(\"errors.server\", { defaultValue: \"A server error occurred. Please try again later.\" }),\n invalid_response: t(\"errors.invalid_response\", { defaultValue: \"Invalid response from server.\" }),\n };\n\n return errorMessages[error] || t(\"errors.unknown\", { defaultValue: \"An unknown error occurred.\" });\n }\n\n private renderFragment(template: HTMLTemplateElement, item?: Subscription | Ticket): DocumentFragment {\n const fragment = template.content.cloneNode(true) as DocumentFragment;\n const isSkeleton = !item;\n\n for (const elem of fragment.querySelectorAll(\"[unidy-attr]\")) {\n for (const [unidyAttr, newValue] of Array.from(elem.attributes)\n .filter((attr) => attr.name.startsWith(\"unidy-attr-\"))\n .map((attr) => {\n if (isSkeleton) {\n return [attr, \"#\"] as const;\n }\n\n let value = attr.value;\n // Find all template strings like {{path}} and replace them with nested values\n const templateRegex = /\\{\\{([^}]+)\\}\\}/g;\n value = value.replace(templateRegex, (match, path) => {\n const nestedValue = getNestedValue(item, path.trim());\n return nestedValue != null ? String(nestedValue) : match;\n });\n\n return [attr, value] as const;\n })) {\n elem.setAttribute(unidyAttr.name.replace(\"unidy-attr-\", \"\"), newValue);\n elem.removeAttribute(unidyAttr.name);\n }\n }\n\n if (isSkeleton && this.skeletonAllText) {\n replaceTextNodesWithSkeletons(fragment);\n }\n\n for (const valueEl of fragment.querySelectorAll(\"ticketable-value\")) {\n if (isSkeleton) {\n valueEl.innerHTML = createSkeletonLoader(\"Sample Text\");\n } else {\n const key = valueEl.getAttribute(\"name\");\n if (!key) continue;\n const value = getNestedValue(item, key);\n const formatAttr = valueEl.getAttribute(\"format\");\n const dateFormatAttr = valueEl.getAttribute(\"date-format\");\n\n let finalValue: string;\n\n if (typeof value === \"object\" && value instanceof Date) {\n finalValue = format(value, dateFormatAttr || \"yyyy-MM-dd\", { locale: LOCALES[unidyState.locale] || LOCALES.en });\n } else if (typeof value === \"number\" && key === \"price\") {\n finalValue = new Intl.NumberFormat(unidyState.locale, { style: \"currency\", currency: item.currency || \"EUR\" }).format(value);\n } else if (typeof value === \"number\") {\n if (Number.isInteger(value)) {\n finalValue = value.toString();\n } else {\n finalValue = value.toFixed(2);\n }\n } else if (value != null) {\n finalValue = String(value);\n } else {\n finalValue = valueEl.getAttribute(\"default\") || \"\";\n }\n\n if (formatAttr) {\n finalValue = formatAttr.replaceAll(\"{{value}}\", finalValue);\n }\n\n valueEl.textContent = finalValue;\n }\n }\n\n // Process ticketable-conditional elements\n // Shows/hides content based on item property values.\n // Example:\n // <ticketable-conditional when=\"metadata.vip\">\n // <span class=\"vip-badge\">VIP</span>\n // </ticketable-conditional>\n // The children are rendered only if the \"when\" property is truthy.\n // Convert to array to avoid issues when modifying the DOM\n const conditionalElements = Array.from(fragment.querySelectorAll(\"ticketable-conditional\"));\n for (const conditionalEl of conditionalElements) {\n const whenAttr = conditionalEl.getAttribute(\"when\");\n if (!whenAttr) {\n // If no 'when' attribute, remove the element\n conditionalEl.remove();\n continue;\n }\n\n if (isSkeleton) {\n // For skeleton state, remove conditionals\n conditionalEl.remove();\n continue;\n }\n\n // Check if the item property is truthy\n const value = getNestedValue(item, whenAttr);\n const isTruthy = Boolean(value);\n\n if (isTruthy) {\n // Replace the conditional element with its children\n const parent = conditionalEl.parentNode;\n if (parent) {\n // Move all children before the conditional element\n while (conditionalEl.firstChild) {\n parent.insertBefore(conditionalEl.firstChild, conditionalEl);\n }\n // Remove the conditional element\n parent.removeChild(conditionalEl);\n }\n } else {\n // Remove the conditional element and its children\n conditionalEl.remove();\n }\n }\n\n // Set ticketable context on export buttons\n for (const exportEl of fragment.querySelectorAll(\"u-ticketable-export\")) {\n if (item) {\n exportEl.setAttribute(\"data-ticketable-id\", item.id);\n exportEl.setAttribute(\"data-ticketable-type\", this.ticketableType);\n exportEl.setAttribute(\"exportable\", item.exportable_to_wallet ? \"true\" : \"false\");\n } else {\n exportEl.setAttribute(\"exportable\", \"false\");\n }\n }\n\n return fragment;\n }\n\n componentDidUpdate() {\n if (this.target) {\n requestAnimationFrame(() => this.renderToTarget());\n }\n }\n\n componentDidRender() {\n if (this.target) {\n requestAnimationFrame(() => this.renderToTarget());\n }\n }\n\n private renderToTarget() {\n const template = this.element.querySelector(\"template\");\n if (!template) return;\n\n const targetElement = document.querySelector(this.target);\n if (!targetElement) {\n this.logger.warn(\"targetElement not found\");\n return;\n }\n\n // Clear existing content\n targetElement.innerHTML = \"\";\n this.renderContent(targetElement, template);\n }\n\n private renderContent(target: Element, template: HTMLTemplateElement) {\n if (this.loading) {\n // Use skeletonCount if provided, otherwise use limit\n const skeletonCount = this.skeletonCount || this.limit;\n for (const _item of Array.from({ length: skeletonCount })) {\n target.appendChild(this.renderFragment(template));\n }\n } else if (!this.error) {\n for (const item of this.items) {\n target.appendChild(this.renderFragment(template, item));\n }\n } else {\n this.logger.error(`failed to load content: ${this.error}`);\n target.innerHTML = `<h1>${t(\"errors.prefix\")} ${this.error}</h1>`;\n }\n }\n\n render() {\n if (this.error) {\n this.logger.error(`can't render content: ${this.error}`);\n return (\n <h1>\n {t(\"errors.prefix\")} {this.error}\n </h1>\n );\n }\n\n const template = this.element.querySelector(\"template\");\n if (!template) {\n this.logger.error(\"template not found\");\n return <h1>No template found - fix config</h1>;\n }\n\n if (this.target) {\n return (\n <Host>\n <slot />\n </Host>\n );\n }\n\n const element = document.createElement(\"div\");\n this.renderContent(element, template);\n\n return (\n <Host>\n <div class={this.containerClass} innerHTML={element.innerHTML} />\n <slot name=\"pagination\" />\n </Host>\n );\n }\n}\n"]}
@@ -7,6 +7,7 @@
7
7
  * DO NOT use this file to export your components. Instead, use the recommended approaches
8
8
  * to consume components of this package as outlined in the `README.md`.
9
9
  */
10
+ export * from "./api/schemas";
10
11
  export * from "./api/subscriptions";
11
12
  export * from "./api/tickets";
12
13
  export * from "./store/pagination-store";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ticketable/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,0BAA0B,CAAC","sourcesContent":["/**\n * @fileoverview entry point for your component library\n *\n * This is the entry point for your component library. Use this file to export utilities,\n * constants or data structure that accompany your components.\n *\n * DO NOT use this file to export your components. Instead, use the recommended approaches\n * to consume components of this package as outlined in the `README.md`.\n */\n\nexport * from \"./api/subscriptions\";\nexport * from \"./api/tickets\";\nexport * from \"./store/pagination-store\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ticketable/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,0BAA0B,CAAC","sourcesContent":["/**\n * @fileoverview entry point for your component library\n *\n * This is the entry point for your component library. Use this file to export utilities,\n * constants or data structure that accompany your components.\n *\n * DO NOT use this file to export your components. Instead, use the recommended approaches\n * to consume components of this package as outlined in the `README.md`.\n */\n\nexport * from \"./api/schemas\";\nexport * from \"./api/subscriptions\";\nexport * from \"./api/tickets\";\nexport * from \"./store/pagination-store\";\n"]}
@@ -0,0 +1,8 @@
1
+ function getDefaultExportFromCjs (x) {
2
+ return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
3
+ }
4
+
5
+ export { getDefaultExportFromCjs as g };
6
+ //# sourceMappingURL=_commonjsHelpers.js.map
7
+
8
+ //# sourceMappingURL=_commonjsHelpers.js.map
@@ -0,0 +1 @@
1
+ {"file":"_commonjsHelpers.js","mappings":";;;;;;","names":[],"sources":[],"sourcesContent":[],"version":3}
@@ -1,39 +1,36 @@
1
+ import { h, Fragment } from '@stencil/core/internal/client';
2
+
1
3
  /**
2
- * Checks if a Stencil component's slot has content.
3
- * Use this in components to render fallback content when a slot is empty.
4
- *
5
- * IMPORTANT: (for shadow: false components)
6
- * You MUST call this in `componentWillLoad()` and cache the result in an instance property.
7
- * After the first render, `element.childNodes` will contain both user-provided slot content
8
- * AND the component's rendered internal elements (like <button>), causing false positives.
4
+ * Returns slot fallback content with proper loading handling for shadow: false components.
5
+ * When there's slot content, we must always render the <slot /> element to capture it,
6
+ * otherwise the slotted content will be visible even during loading state.
9
7
  *
10
- * Take a look at the https://stenciljs.com/docs/templating-jsx#slots-outside-shadow-dom
8
+ * @param fallbackText - The default text to display when there's no slot content
9
+ * @param options - Options object containing hasSlot and loading state
10
+ * @returns JSX content for the slot fallback
11
11
  *
12
- * @param element - The host element of the component (accessed via @Element())
13
- * @returns true if the slot has content, false otherwise
12
+ * @example
13
+ * ```tsx
14
+ * render() {
15
+ * return (
16
+ * <button>
17
+ * {slotFallbackText(t("buttons.submit"), { hasSlot: this.hasSlot, loading: this.isLoading() })}
18
+ * </button>
19
+ * );
20
+ * }
21
+ * ```
14
22
  */
15
- function hasSlotContent(element) {
16
- if (!element.hasChildNodes())
17
- return false;
18
- for (const child of Array.from(element.childNodes)) {
19
- if (child.nodeType === Node.ELEMENT_NODE)
20
- return true;
21
- if (child.nodeType === Node.TEXT_NODE && child.textContent?.trim())
22
- return true;
23
+ function slotFallbackText(fallbackText, { hasSlot, loading = false }) {
24
+ if (hasSlot) {
25
+ return (h(Fragment, null, loading && h("u-spinner", { key: "spinner" }), h("span", { key: "slot", style: { display: loading ? "none" : "contents" } }, h("slot", null))));
23
26
  }
24
- return false;
25
- }
26
- function clearUrlParam(param) {
27
- const url = new URL(window.location.href);
28
- const value = url.searchParams.get(param);
29
- if (value) {
30
- url.searchParams.delete(param);
31
- window.history.replaceState(null, "", url.toString());
27
+ if (loading) {
28
+ return h("u-spinner", null);
32
29
  }
33
- return value;
30
+ return fallbackText;
34
31
  }
35
32
 
36
- export { clearUrlParam as c, hasSlotContent as h };
33
+ export { slotFallbackText as s };
37
34
  //# sourceMappingURL=component-utils.js.map
38
35
 
39
36
  //# sourceMappingURL=component-utils.js.map
@@ -1 +1 @@
1
- {"file":"component-utils.js","mappings":"AAAA;;;;;;;;;;;;;AAaG;AACG,SAAU,cAAc,CAAC,OAAoB,EAAA;AACjD,IAAA,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;AAAE,QAAA,OAAO,KAAK;AAE1C,IAAA,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;AAClD,QAAA,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY;AAAE,YAAA,OAAO,IAAI;AACrD,QAAA,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE;AAAE,YAAA,OAAO,IAAI;;AAGjF,IAAA,OAAO,KAAK;AACd;AAEM,SAAU,aAAa,CAAC,KAAa,EAAA;IACzC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;IACzC,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;IAEzC,IAAI,KAAK,EAAE;AACT,QAAA,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC;AAC9B,QAAA,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;;AAGvD,IAAA,OAAO,KAAK;AACd;;;;","names":[],"sources":["src/shared/component-utils.ts"],"sourcesContent":["/**\n * Checks if a Stencil component's slot has content.\n * Use this in components to render fallback content when a slot is empty.\n *\n * IMPORTANT: (for shadow: false components)\n * You MUST call this in `componentWillLoad()` and cache the result in an instance property.\n * After the first render, `element.childNodes` will contain both user-provided slot content\n * AND the component's rendered internal elements (like <button>), causing false positives.\n *\n * Take a look at the https://stenciljs.com/docs/templating-jsx#slots-outside-shadow-dom\n *\n * @param element - The host element of the component (accessed via @Element())\n * @returns true if the slot has content, false otherwise\n */\nexport function hasSlotContent(element: HTMLElement): boolean {\n if (!element.hasChildNodes()) return false;\n\n for (const child of Array.from(element.childNodes)) {\n if (child.nodeType === Node.ELEMENT_NODE) return true;\n if (child.nodeType === Node.TEXT_NODE && child.textContent?.trim()) return true;\n }\n\n return false;\n}\n\nexport function clearUrlParam(param: string): string | null {\n const url = new URL(window.location.href);\n const value = url.searchParams.get(param);\n\n if (value) {\n url.searchParams.delete(param);\n window.history.replaceState(null, \"\", url.toString());\n }\n\n return value;\n}\n"],"version":3}
1
+ {"file":"component-utils.js","mappings":";;AAEA;;;;;;;;;;;;;;;;;;;AAmBG;AACG,SAAU,gBAAgB,CAAC,YAAoB,EAAE,EAAE,OAAO,EAAE,OAAO,GAAG,KAAK,EAA2C,EAAA;IAC1H,IAAI,OAAO,EAAE;QACX,QACE,EAAC,QAAQ,EAAA,IAAA,EACN,OAAO,IAAI,CAAA,CAAA,WAAA,EAAA,EAAW,GAAG,EAAC,SAAS,EAAG,CAAA,EACvC,CAAA,CAAA,MAAA,EAAA,EAAM,GAAG,EAAC,MAAM,EAAC,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,UAAU,EAAE,EAAA,EAChE,CAAQ,CAAA,MAAA,EAAA,IAAA,CAAA,CACH,CACE;;IAIf,IAAI,OAAO,EAAE;AACX,QAAA,OAAO,oBAAa;;AAGtB,IAAA,OAAO,YAAY;AACrB;;;;","names":[],"sources":["src/shared/component-utils.tsx"],"sourcesContent":["import { Fragment, h } from \"@stencil/core\";\n\n/**\n * Returns slot fallback content with proper loading handling for shadow: false components.\n * When there's slot content, we must always render the <slot /> element to capture it,\n * otherwise the slotted content will be visible even during loading state.\n *\n * @param fallbackText - The default text to display when there's no slot content\n * @param options - Options object containing hasSlot and loading state\n * @returns JSX content for the slot fallback\n *\n * @example\n * ```tsx\n * render() {\n * return (\n * <button>\n * {slotFallbackText(t(\"buttons.submit\"), { hasSlot: this.hasSlot, loading: this.isLoading() })}\n * </button>\n * );\n * }\n * ```\n */\nexport function slotFallbackText(fallbackText: string, { hasSlot, loading = false }: { hasSlot: boolean; loading?: boolean }) {\n if (hasSlot) {\n return (\n <Fragment>\n {loading && <u-spinner key=\"spinner\" />}\n <span key=\"slot\" style={{ display: loading ? \"none\" : \"contents\" }}>\n <slot />\n </span>\n </Fragment>\n );\n }\n\n if (loading) {\n return <u-spinner />;\n }\n\n return fallbackText;\n}\n"],"version":3}
@@ -0,0 +1,33 @@
1
+ import { Mixin, getElement } from '@stencil/core/internal/client';
2
+ import { c as createLogger } from './logger.js';
3
+
4
+ const loggerFactory = (Base) => {
5
+ class LoggerMixin extends Base {
6
+ /** @internal */
7
+ __logger = null;
8
+ get logger() {
9
+ if (!this.__logger) {
10
+ this.__logger = createLogger(this.element.localName);
11
+ }
12
+ return this.__logger;
13
+ }
14
+ get element() {
15
+ return getElement(this);
16
+ }
17
+ }
18
+ return LoggerMixin;
19
+ };
20
+ /**
21
+ * Base class factory for Unidy Stencil components that provides logging functionality
22
+ * and allows composing additional mixins.
23
+ * Components extending this class get a `this.logger` property that automatically prefixes log messages with the component's class name.
24
+ * Components extending this class get a `this.element` property that automatically returns the component's host element.
25
+ */
26
+ const UnidyComponent = (...mixins) => {
27
+ return Mixin(loggerFactory, ...mixins);
28
+ };
29
+
30
+ export { UnidyComponent as U };
31
+ //# sourceMappingURL=component.js.map
32
+
33
+ //# sourceMappingURL=component.js.map
@@ -0,0 +1 @@
1
+ {"file":"component.js","mappings":";;;AAGO,MAAM,aAAa,GAAG,CAAwB,IAAO,KAAI;IAC9D,MAAM,oBAAoB,IAAI,CAAA;;QAE5B,QAAQ,GAAkB,IAAI;AAE9B,QAAA,IAAI,MAAM,GAAA;AACR,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAClB,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;;YAEtD,OAAO,IAAI,CAAC,QAAQ;;AAGtB,QAAA,IAAI,OAAO,GAAA;AACT,YAAA,OAAO,UAAU,CAAC,IAAI,CAAC;;AAE1B;AACD,IAAA,OAAO,WAAW;AACpB,CAAC;AAID;;;;;AAKG;MACU,cAAc,GAAG,CAAmD,GAAG,MAAS,KAAI;AAC/F,IAAA,OAAO,KAAK,CAAC,aAAa,EAAE,GAAG,MAAM,CAAC;AACxC;;;;","names":[],"sources":["src/shared/base/component.tsx"],"sourcesContent":["import { getElement, type MixedInCtor, Mixin } from \"@stencil/core\";\nimport { createLogger, type Logger } from \"../../logger\";\n\nexport const loggerFactory = <B extends MixedInCtor>(Base: B) => {\n class LoggerMixin extends Base {\n /** @internal */\n __logger: Logger | null = null;\n\n get logger(): Logger {\n if (!this.__logger) {\n this.__logger = createLogger(this.element.localName);\n }\n return this.__logger;\n }\n\n get element() {\n return getElement(this);\n }\n }\n return LoggerMixin;\n};\n\nexport type BaseComponentType = ReturnType<typeof loggerFactory>;\n\n/**\n * Base class factory for Unidy Stencil components that provides logging functionality\n * and allows composing additional mixins.\n * Components extending this class get a `this.logger` property that automatically prefixes log messages with the component's class name.\n * Components extending this class get a `this.element` property that automatically returns the component's host element.\n */\nexport const UnidyComponent = <T extends ((base: MixedInCtor) => MixedInCtor)[]>(...mixins: T) => {\n return Mixin(loggerFactory, ...mixins);\n};\n"],"version":3}