@kirbydesign/designsystem 11.11.3-dev-e7cb27f → 12.0.0-dev-67d5287

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 (282) hide show
  1. package/fesm2022/kirbydesign-designsystem-accordion.mjs +246 -135
  2. package/fesm2022/kirbydesign-designsystem-accordion.mjs.map +1 -1
  3. package/fesm2022/kirbydesign-designsystem-action-group.mjs +229 -134
  4. package/fesm2022/kirbydesign-designsystem-action-group.mjs.map +1 -1
  5. package/fesm2022/kirbydesign-designsystem-avatar.mjs +102 -55
  6. package/fesm2022/kirbydesign-designsystem-avatar.mjs.map +1 -1
  7. package/fesm2022/kirbydesign-designsystem-badge.mjs +85 -42
  8. package/fesm2022/kirbydesign-designsystem-badge.mjs.map +1 -1
  9. package/fesm2022/kirbydesign-designsystem-button.mjs +203 -170
  10. package/fesm2022/kirbydesign-designsystem-button.mjs.map +1 -1
  11. package/fesm2022/kirbydesign-designsystem-calendar.mjs +524 -516
  12. package/fesm2022/kirbydesign-designsystem-calendar.mjs.map +1 -1
  13. package/fesm2022/kirbydesign-designsystem-card.mjs +439 -205
  14. package/fesm2022/kirbydesign-designsystem-card.mjs.map +1 -1
  15. package/fesm2022/kirbydesign-designsystem-chart.mjs +1388 -1469
  16. package/fesm2022/kirbydesign-designsystem-chart.mjs.map +1 -1
  17. package/fesm2022/kirbydesign-designsystem-checkbox.mjs +215 -176
  18. package/fesm2022/kirbydesign-designsystem-checkbox.mjs.map +1 -1
  19. package/fesm2022/kirbydesign-designsystem-config.mjs +50 -96
  20. package/fesm2022/kirbydesign-designsystem-config.mjs.map +1 -1
  21. package/fesm2022/kirbydesign-designsystem-data-table.mjs +180 -83
  22. package/fesm2022/kirbydesign-designsystem-data-table.mjs.map +1 -1
  23. package/fesm2022/kirbydesign-designsystem-divider.mjs +46 -19
  24. package/fesm2022/kirbydesign-designsystem-divider.mjs.map +1 -1
  25. package/fesm2022/kirbydesign-designsystem-dropdown.mjs +878 -752
  26. package/fesm2022/kirbydesign-designsystem-dropdown.mjs.map +1 -1
  27. package/fesm2022/kirbydesign-designsystem-empty-state.mjs +164 -91
  28. package/fesm2022/kirbydesign-designsystem-empty-state.mjs.map +1 -1
  29. package/fesm2022/kirbydesign-designsystem-fab-sheet.mjs +213 -85
  30. package/fesm2022/kirbydesign-designsystem-fab-sheet.mjs.map +1 -1
  31. package/fesm2022/kirbydesign-designsystem-flag.mjs +67 -33
  32. package/fesm2022/kirbydesign-designsystem-flag.mjs.map +1 -1
  33. package/fesm2022/kirbydesign-designsystem-form-field.mjs +1260 -901
  34. package/fesm2022/kirbydesign-designsystem-form-field.mjs.map +1 -1
  35. package/fesm2022/kirbydesign-designsystem-gesture.mjs +38 -23
  36. package/fesm2022/kirbydesign-designsystem-gesture.mjs.map +1 -1
  37. package/fesm2022/kirbydesign-designsystem-header.mjs +422 -182
  38. package/fesm2022/kirbydesign-designsystem-header.mjs.map +1 -1
  39. package/fesm2022/kirbydesign-designsystem-helpers-scss.mjs +16 -14
  40. package/fesm2022/kirbydesign-designsystem-helpers-scss.mjs.map +1 -1
  41. package/fesm2022/kirbydesign-designsystem-helpers.mjs +251 -361
  42. package/fesm2022/kirbydesign-designsystem-helpers.mjs.map +1 -1
  43. package/fesm2022/kirbydesign-designsystem-icon.mjs +881 -303
  44. package/fesm2022/kirbydesign-designsystem-icon.mjs.map +1 -1
  45. package/fesm2022/kirbydesign-designsystem-item-group.mjs +52 -23
  46. package/fesm2022/kirbydesign-designsystem-item-group.mjs.map +1 -1
  47. package/fesm2022/kirbydesign-designsystem-item-sliding.mjs +147 -43
  48. package/fesm2022/kirbydesign-designsystem-item-sliding.mjs.map +1 -1
  49. package/fesm2022/kirbydesign-designsystem-item.mjs +395 -151
  50. package/fesm2022/kirbydesign-designsystem-item.mjs.map +1 -1
  51. package/fesm2022/kirbydesign-designsystem-kirby-app.mjs +136 -54
  52. package/fesm2022/kirbydesign-designsystem-kirby-app.mjs.map +1 -1
  53. package/fesm2022/kirbydesign-designsystem-list.mjs +1185 -697
  54. package/fesm2022/kirbydesign-designsystem-list.mjs.map +1 -1
  55. package/fesm2022/kirbydesign-designsystem-loading-overlay.mjs +166 -76
  56. package/fesm2022/kirbydesign-designsystem-loading-overlay.mjs.map +1 -1
  57. package/fesm2022/kirbydesign-designsystem-menu.mjs +420 -311
  58. package/fesm2022/kirbydesign-designsystem-menu.mjs.map +1 -1
  59. package/fesm2022/kirbydesign-designsystem-modal.mjs +2467 -1912
  60. package/fesm2022/kirbydesign-designsystem-modal.mjs.map +1 -1
  61. package/fesm2022/kirbydesign-designsystem-page.mjs +1505 -923
  62. package/fesm2022/kirbydesign-designsystem-page.mjs.map +1 -1
  63. package/fesm2022/kirbydesign-designsystem-popover.mjs +203 -183
  64. package/fesm2022/kirbydesign-designsystem-popover.mjs.map +1 -1
  65. package/fesm2022/kirbydesign-designsystem-progress-circle.mjs +209 -121
  66. package/fesm2022/kirbydesign-designsystem-progress-circle.mjs.map +1 -1
  67. package/fesm2022/kirbydesign-designsystem-radio.mjs +537 -365
  68. package/fesm2022/kirbydesign-designsystem-radio.mjs.map +1 -1
  69. package/fesm2022/kirbydesign-designsystem-range.mjs +207 -150
  70. package/fesm2022/kirbydesign-designsystem-range.mjs.map +1 -1
  71. package/fesm2022/kirbydesign-designsystem-reorder-list.mjs +217 -104
  72. package/fesm2022/kirbydesign-designsystem-reorder-list.mjs.map +1 -1
  73. package/fesm2022/kirbydesign-designsystem-router-outlet.mjs +113 -38
  74. package/fesm2022/kirbydesign-designsystem-router-outlet.mjs.map +1 -1
  75. package/fesm2022/kirbydesign-designsystem-section-header.mjs +56 -18
  76. package/fesm2022/kirbydesign-designsystem-section-header.mjs.map +1 -1
  77. package/fesm2022/kirbydesign-designsystem-segmented-control.mjs +276 -232
  78. package/fesm2022/kirbydesign-designsystem-segmented-control.mjs.map +1 -1
  79. package/fesm2022/kirbydesign-designsystem-shared-floating.mjs +319 -382
  80. package/fesm2022/kirbydesign-designsystem-shared-floating.mjs.map +1 -1
  81. package/fesm2022/kirbydesign-designsystem-shared-portal.mjs +73 -84
  82. package/fesm2022/kirbydesign-designsystem-shared-portal.mjs.map +1 -1
  83. package/fesm2022/kirbydesign-designsystem-shared.mjs +665 -529
  84. package/fesm2022/kirbydesign-designsystem-shared.mjs.map +1 -1
  85. package/fesm2022/kirbydesign-designsystem-slide-button.mjs +140 -91
  86. package/fesm2022/kirbydesign-designsystem-slide-button.mjs.map +1 -1
  87. package/fesm2022/kirbydesign-designsystem-slide.mjs +360 -158
  88. package/fesm2022/kirbydesign-designsystem-slide.mjs.map +1 -1
  89. package/fesm2022/kirbydesign-designsystem-spinner.mjs +90 -32
  90. package/fesm2022/kirbydesign-designsystem-spinner.mjs.map +1 -1
  91. package/fesm2022/kirbydesign-designsystem-tab-navigation.mjs +348 -181
  92. package/fesm2022/kirbydesign-designsystem-tab-navigation.mjs.map +1 -1
  93. package/fesm2022/kirbydesign-designsystem-tabs.mjs +286 -121
  94. package/fesm2022/kirbydesign-designsystem-tabs.mjs.map +1 -1
  95. package/fesm2022/kirbydesign-designsystem-testing-base.mjs +6232 -3164
  96. package/fesm2022/kirbydesign-designsystem-testing-base.mjs.map +1 -1
  97. package/fesm2022/kirbydesign-designsystem-testing-jasmine.mjs +118 -95
  98. package/fesm2022/kirbydesign-designsystem-testing-jasmine.mjs.map +1 -1
  99. package/fesm2022/kirbydesign-designsystem-testing-jest.mjs +128 -101
  100. package/fesm2022/kirbydesign-designsystem-testing-jest.mjs.map +1 -1
  101. package/fesm2022/kirbydesign-designsystem-testing.mjs +236 -243
  102. package/fesm2022/kirbydesign-designsystem-testing.mjs.map +1 -1
  103. package/fesm2022/kirbydesign-designsystem-toast.mjs +98 -62
  104. package/fesm2022/kirbydesign-designsystem-toast.mjs.map +1 -1
  105. package/fesm2022/kirbydesign-designsystem-toggle-button.mjs +155 -127
  106. package/fesm2022/kirbydesign-designsystem-toggle-button.mjs.map +1 -1
  107. package/fesm2022/kirbydesign-designsystem-toggle.mjs +180 -150
  108. package/fesm2022/kirbydesign-designsystem-toggle.mjs.map +1 -1
  109. package/fesm2022/kirbydesign-designsystem-types.mjs +39 -24
  110. package/fesm2022/kirbydesign-designsystem-types.mjs.map +1 -1
  111. package/fesm2022/kirbydesign-designsystem.mjs +516 -407
  112. package/fesm2022/kirbydesign-designsystem.mjs.map +1 -1
  113. package/icons/svg/megaphone.svg +3 -0
  114. package/package.json +10 -10
  115. package/readme.md +37 -0
  116. package/types/kirbydesign-designsystem-accordion.d.ts +72 -39
  117. package/types/kirbydesign-designsystem-accordion.d.ts.map +1 -1
  118. package/types/kirbydesign-designsystem-action-group.d.ts +46 -39
  119. package/types/kirbydesign-designsystem-action-group.d.ts.map +1 -1
  120. package/types/kirbydesign-designsystem-avatar.d.ts +62 -26
  121. package/types/kirbydesign-designsystem-avatar.d.ts.map +1 -1
  122. package/types/kirbydesign-designsystem-badge.d.ts +30 -19
  123. package/types/kirbydesign-designsystem-badge.d.ts.map +1 -1
  124. package/types/kirbydesign-designsystem-button.d.ts +70 -45
  125. package/types/kirbydesign-designsystem-button.d.ts.map +1 -1
  126. package/types/kirbydesign-designsystem-calendar.d.ts +193 -132
  127. package/types/kirbydesign-designsystem-calendar.d.ts.map +1 -1
  128. package/types/kirbydesign-designsystem-card.d.ts +130 -66
  129. package/types/kirbydesign-designsystem-card.d.ts.map +1 -1
  130. package/types/kirbydesign-designsystem-chart.d.ts +198 -172
  131. package/types/kirbydesign-designsystem-chart.d.ts.map +1 -1
  132. package/types/kirbydesign-designsystem-checkbox.d.ts +96 -68
  133. package/types/kirbydesign-designsystem-checkbox.d.ts.map +1 -1
  134. package/types/kirbydesign-designsystem-config.d.ts +17 -21
  135. package/types/kirbydesign-designsystem-config.d.ts.map +1 -1
  136. package/types/kirbydesign-designsystem-data-table.d.ts +46 -26
  137. package/types/kirbydesign-designsystem-data-table.d.ts.map +1 -1
  138. package/types/kirbydesign-designsystem-divider.d.ts +11 -9
  139. package/types/kirbydesign-designsystem-divider.d.ts.map +1 -1
  140. package/types/kirbydesign-designsystem-dropdown.d.ts +219 -166
  141. package/types/kirbydesign-designsystem-dropdown.d.ts.map +1 -1
  142. package/types/kirbydesign-designsystem-empty-state.d.ts +47 -35
  143. package/types/kirbydesign-designsystem-empty-state.d.ts.map +1 -1
  144. package/types/kirbydesign-designsystem-fab-sheet.d.ts +34 -28
  145. package/types/kirbydesign-designsystem-fab-sheet.d.ts.map +1 -1
  146. package/types/kirbydesign-designsystem-flag.d.ts +18 -13
  147. package/types/kirbydesign-designsystem-flag.d.ts.map +1 -1
  148. package/types/kirbydesign-designsystem-form-field.d.ts +409 -242
  149. package/types/kirbydesign-designsystem-form-field.d.ts.map +1 -1
  150. package/types/kirbydesign-designsystem-gesture.d.ts +41 -46
  151. package/types/kirbydesign-designsystem-gesture.d.ts.map +1 -1
  152. package/types/kirbydesign-designsystem-header.d.ts +102 -64
  153. package/types/kirbydesign-designsystem-header.d.ts.map +1 -1
  154. package/types/kirbydesign-designsystem-helpers-scss.d.ts +6 -8
  155. package/types/kirbydesign-designsystem-helpers-scss.d.ts.map +1 -1
  156. package/types/kirbydesign-designsystem-helpers.d.ts +83 -97
  157. package/types/kirbydesign-designsystem-helpers.d.ts.map +1 -1
  158. package/types/kirbydesign-designsystem-icon.d.ts +63 -59
  159. package/types/kirbydesign-designsystem-icon.d.ts.map +1 -1
  160. package/types/kirbydesign-designsystem-item-group.d.ts +6 -9
  161. package/types/kirbydesign-designsystem-item-group.d.ts.map +1 -1
  162. package/types/kirbydesign-designsystem-item-sliding.d.ts +30 -26
  163. package/types/kirbydesign-designsystem-item-sliding.d.ts.map +1 -1
  164. package/types/kirbydesign-designsystem-item.d.ts +93 -54
  165. package/types/kirbydesign-designsystem-item.d.ts.map +1 -1
  166. package/types/kirbydesign-designsystem-kirby-app.d.ts +18 -19
  167. package/types/kirbydesign-designsystem-kirby-app.d.ts.map +1 -1
  168. package/types/kirbydesign-designsystem-list.d.ts +387 -263
  169. package/types/kirbydesign-designsystem-list.d.ts.map +1 -1
  170. package/types/kirbydesign-designsystem-loading-overlay.d.ts +35 -24
  171. package/types/kirbydesign-designsystem-loading-overlay.d.ts.map +1 -1
  172. package/types/kirbydesign-designsystem-menu.d.ts +119 -69
  173. package/types/kirbydesign-designsystem-menu.d.ts.map +1 -1
  174. package/types/kirbydesign-designsystem-modal.d.ts +577 -455
  175. package/types/kirbydesign-designsystem-modal.d.ts.map +1 -1
  176. package/types/kirbydesign-designsystem-page.d.ts +304 -229
  177. package/types/kirbydesign-designsystem-page.d.ts.map +1 -1
  178. package/types/kirbydesign-designsystem-popover.d.ts +48 -40
  179. package/types/kirbydesign-designsystem-popover.d.ts.map +1 -1
  180. package/types/kirbydesign-designsystem-progress-circle.d.ts +60 -38
  181. package/types/kirbydesign-designsystem-progress-circle.d.ts.map +1 -1
  182. package/types/kirbydesign-designsystem-radio.d.ts +147 -98
  183. package/types/kirbydesign-designsystem-radio.d.ts.map +1 -1
  184. package/types/kirbydesign-designsystem-range.d.ts +90 -45
  185. package/types/kirbydesign-designsystem-range.d.ts.map +1 -1
  186. package/types/kirbydesign-designsystem-reorder-list.d.ts +44 -32
  187. package/types/kirbydesign-designsystem-reorder-list.d.ts.map +1 -1
  188. package/types/kirbydesign-designsystem-router-outlet.d.ts +23 -18
  189. package/types/kirbydesign-designsystem-router-outlet.d.ts.map +1 -1
  190. package/types/kirbydesign-designsystem-section-header.d.ts +5 -8
  191. package/types/kirbydesign-designsystem-section-header.d.ts.map +1 -1
  192. package/types/kirbydesign-designsystem-segmented-control.d.ts +123 -100
  193. package/types/kirbydesign-designsystem-segmented-control.d.ts.map +1 -1
  194. package/types/kirbydesign-designsystem-shared-floating.d.ts +183 -128
  195. package/types/kirbydesign-designsystem-shared-floating.d.ts.map +1 -1
  196. package/types/kirbydesign-designsystem-shared-portal.d.ts +29 -28
  197. package/types/kirbydesign-designsystem-shared-portal.d.ts.map +1 -1
  198. package/types/kirbydesign-designsystem-shared.d.ts +143 -139
  199. package/types/kirbydesign-designsystem-shared.d.ts.map +1 -1
  200. package/types/kirbydesign-designsystem-slide-button.d.ts +43 -34
  201. package/types/kirbydesign-designsystem-slide-button.d.ts.map +1 -1
  202. package/types/kirbydesign-designsystem-slide.d.ts +80 -59
  203. package/types/kirbydesign-designsystem-slide.d.ts.map +1 -1
  204. package/types/kirbydesign-designsystem-spinner.d.ts +13 -14
  205. package/types/kirbydesign-designsystem-spinner.d.ts.map +1 -1
  206. package/types/kirbydesign-designsystem-tab-navigation.d.ts +78 -55
  207. package/types/kirbydesign-designsystem-tab-navigation.d.ts.map +1 -1
  208. package/types/kirbydesign-designsystem-tabs.d.ts +50 -45
  209. package/types/kirbydesign-designsystem-tabs.d.ts.map +1 -1
  210. package/types/kirbydesign-designsystem-testing-base.d.ts +2430 -815
  211. package/types/kirbydesign-designsystem-testing-base.d.ts.map +1 -1
  212. package/types/kirbydesign-designsystem-testing-jasmine.d.ts +9 -10
  213. package/types/kirbydesign-designsystem-testing-jasmine.d.ts.map +1 -1
  214. package/types/kirbydesign-designsystem-testing-jest.d.ts +9 -10
  215. package/types/kirbydesign-designsystem-testing-jest.d.ts.map +1 -1
  216. package/types/kirbydesign-designsystem-testing.d.ts +52 -58
  217. package/types/kirbydesign-designsystem-testing.d.ts.map +1 -1
  218. package/types/kirbydesign-designsystem-toast.d.ts +25 -31
  219. package/types/kirbydesign-designsystem-toast.d.ts.map +1 -1
  220. package/types/kirbydesign-designsystem-toggle-button.d.ts +62 -56
  221. package/types/kirbydesign-designsystem-toggle-button.d.ts.map +1 -1
  222. package/types/kirbydesign-designsystem-toggle.d.ts +71 -63
  223. package/types/kirbydesign-designsystem-toggle.d.ts.map +1 -1
  224. package/types/kirbydesign-designsystem-types.d.ts +15 -22
  225. package/types/kirbydesign-designsystem-types.d.ts.map +1 -1
  226. package/types/kirbydesign-designsystem.d.ts +135 -123
  227. package/types/kirbydesign-designsystem.d.ts.map +1 -1
  228. package/accordion/package.json +0 -4
  229. package/action-group/package.json +0 -4
  230. package/avatar/package.json +0 -4
  231. package/badge/package.json +0 -4
  232. package/button/package.json +0 -4
  233. package/calendar/package.json +0 -4
  234. package/card/package.json +0 -4
  235. package/chart/package.json +0 -4
  236. package/checkbox/package.json +0 -4
  237. package/config/package.json +0 -4
  238. package/data-table/package.json +0 -4
  239. package/divider/package.json +0 -4
  240. package/dropdown/package.json +0 -4
  241. package/empty-state/package.json +0 -4
  242. package/fab-sheet/package.json +0 -4
  243. package/flag/package.json +0 -4
  244. package/form-field/package.json +0 -4
  245. package/gesture/package.json +0 -4
  246. package/header/package.json +0 -4
  247. package/helpers/package.json +0 -4
  248. package/helpers/scss/package.json +0 -4
  249. package/icon/package.json +0 -4
  250. package/item/package.json +0 -4
  251. package/item-group/package.json +0 -4
  252. package/item-sliding/package.json +0 -4
  253. package/kirby-app/package.json +0 -4
  254. package/list/package.json +0 -4
  255. package/loading-overlay/package.json +0 -4
  256. package/menu/package.json +0 -4
  257. package/modal/package.json +0 -4
  258. package/page/package.json +0 -4
  259. package/popover/package.json +0 -4
  260. package/progress-circle/package.json +0 -4
  261. package/radio/package.json +0 -4
  262. package/range/package.json +0 -4
  263. package/reorder-list/package.json +0 -4
  264. package/router-outlet/package.json +0 -4
  265. package/section-header/package.json +0 -4
  266. package/segmented-control/package.json +0 -4
  267. package/shared/floating/package.json +0 -4
  268. package/shared/package.json +0 -4
  269. package/shared/portal/package.json +0 -4
  270. package/slide/package.json +0 -4
  271. package/slide-button/package.json +0 -4
  272. package/spinner/package.json +0 -4
  273. package/tab-navigation/package.json +0 -4
  274. package/tabs/package.json +0 -4
  275. package/testing/package.json +0 -4
  276. package/testing-base/package.json +0 -4
  277. package/testing-jasmine/package.json +0 -4
  278. package/testing-jest/package.json +0 -4
  279. package/toast/package.json +0 -4
  280. package/toggle/package.json +0 -4
  281. package/toggle-button/package.json +0 -4
  282. package/types/package.json +0 -4
@@ -1 +1 @@
1
- {"version":3,"file":"kirbydesign-designsystem-shared.mjs","sources":["../../shared/src/resize-observer/resize-observer.factory.ts","../../shared/src/resize-observer/resize-observer.service.ts","../../shared/src/text-resize-observer/text-resize-observer.service.ts","../../shared/src/theme-color/theme-color.directive.ts","../../shared/src/component-loader.directive.ts","../../shared/src/fit-heading/fit-heading.directive.ts","../../shared/src/controls/label-helpers.ts","../../shared/src/translation/translations/da.ts","../../shared/src/translation/translations/en.ts","../../shared/src/translation/translations/de.ts","../../shared/src/translation/translation.service.ts","../../shared/src/kirbydesign-designsystem-shared.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n/**\n * Factory that creates a new ResizeObserver and allows us to stub it out in unit tests.\n * @docs-private\n */\n@Injectable({ providedIn: 'root' })\nexport class ResizeObserverFactory {\n create(callback: ResizeObserverCallback): ResizeObserver | null {\n return typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(callback);\n }\n}\n","import { ElementRef, Injectable, OnDestroy } from '@angular/core';\nimport { ResizeObserverFactory } from './resize-observer.factory';\n\n@Injectable({ providedIn: 'root' })\nexport class ResizeObserverService implements OnDestroy {\n // IMPORTANT: Keeps track of the existing ResizeObserver so it can be reused for performance.\n // See: https://groups.google.com/a/chromium.org/forum/#!msg/blink-dev/z6ienONUb5A/F5-VcUZtBAAJ\n private observer: ResizeObserver | null;\n private observedElements = new WeakMap<Element, (entry: ResizeObserverEntry) => void>();\n\n constructor(private _resizeObserverFactory: ResizeObserverFactory) {\n this.observer = this._resizeObserverFactory.create((entries) => this.handleResize(entries));\n }\n\n observe(\n elementOrRef: Element | ElementRef<Element>,\n action: (entry: ResizeObserverEntry) => void\n ): void {\n const element = elementOrRef instanceof ElementRef ? elementOrRef.nativeElement : elementOrRef;\n if (!this.observedElements.has(element)) {\n if (this.observer) {\n this.observer.observe(element);\n }\n this.observedElements.set(element, action);\n }\n }\n\n ngOnDestroy() {\n if (this.observer) {\n this.observer.disconnect();\n }\n this.observedElements = null;\n }\n\n unobserve(elementOrRef: Element | ElementRef<Element>) {\n const element = elementOrRef instanceof ElementRef ? elementOrRef.nativeElement : elementOrRef;\n if (this.observedElements.has(element)) {\n if (this.observer) {\n this.observer.unobserve(element);\n }\n this.observedElements.delete(element);\n }\n }\n\n private handleResize(entries: ResizeObserverEntry[]) {\n entries.forEach((entry) => {\n const action = this.observedElements.get(entry.target);\n if (action) {\n action(entry);\n }\n });\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { DesignTokenHelper } from '@kirbydesign/designsystem/helpers';\n\nconst TEXT_RESIZE_THRESHOLD = parseFloat(DesignTokenHelper.textResizeThreshold());\nconst TEXT_RESIZE_CLASS = 'kirby-trt';\nconst BASE_FONT_SIZE_PX = parseInt(DesignTokenHelper.baseFontSizePx());\n\n/**\n * Element width combines both signals: rem scaling (desktop/iOS) and env(preferred-text-scale)\n * (Android). On platforms where env() is unsupported, the fallback `1` makes it a no-op multiplier.\n */\nconst OBSERVER_ELEMENT_STYLES =\n 'position:absolute;width:calc(1rem * env(preferred-text-scale, 1));height:1rem;top:-9999px;visibility:hidden;pointer-events:none';\n\n/**\n * Detects when text is resized above a certain threshold in browser/OS settings and toggles a\n * `kirby-trt` class on the root html element.\n *\n * Uses a `ResizeObserver` on a hidden element sized with `calc(1rem * env(preferred-text-scale, 1))`.\n * This combines two detections into one element:\n *\n * - **rem scaling** — on desktop browsers and iOS, changing text size modifies the root font-size,\n * which changes `1rem` and triggers the observer.\n *\n * - **`env(preferred-text-scale)`** — on platforms that support this CSS environment variable\n * (e.g. Android Chrome/WebView), the multiplier reflects the OS/browser text scale factor.\n * When the user changes font size in system settings, the env value updates and the element resizes.\n *\n * On platforms where `env(preferred-text-scale)` is not supported, the value falls back to `1`,\n * making the width equivalent to `1rem`.\n *\n * @example\n * ```scss\n * @include utils.media('<medium') {\n * :host-context(.kirby-trt) {\n * // Styles for narrow screens with scaled text\n * }\n * }\n * ```\n *\n * @see https://drafts.csswg.org/css-env-1/#preferred-text-scale\n */\n@Injectable({ providedIn: 'root' })\nexport class TextResizeObserverService implements OnDestroy {\n private resizeObserver: ResizeObserver | null = null;\n private textResizeObserverElement: HTMLElement | null = null;\n\n initialize(): void {\n if (typeof window === 'undefined') {\n return;\n }\n\n this.textResizeObserverElement = document.createElement('div');\n this.textResizeObserverElement.style.cssText = OBSERVER_ELEMENT_STYLES;\n document.body.appendChild(this.textResizeObserverElement);\n\n this.resizeObserver = new ResizeObserver(this.onObservedResize);\n this.resizeObserver.observe(this.textResizeObserverElement);\n\n this.onObservedResize();\n }\n\n ngOnDestroy(): void {\n this.resizeObserver?.disconnect();\n this.textResizeObserverElement?.remove();\n }\n\n private onObservedResize = (): void => {\n const widthInPx = this.textResizeObserverElement?.offsetWidth ?? BASE_FONT_SIZE_PX;\n const scale = widthInPx / BASE_FONT_SIZE_PX;\n document.documentElement.classList.toggle(TEXT_RESIZE_CLASS, scale > TEXT_RESIZE_THRESHOLD);\n };\n}\n","import { Directive, HostBinding, Input } from '@angular/core';\n\nimport { ColorHelper } from '@kirbydesign/designsystem/helpers';\nimport { ThemeColor } from '@kirbydesign/core';\n\n@Directive({\n standalone: true,\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: `kirby-avatar[themeColor],\n kirby-card[themeColor],\n kirby-icon[themeColor],\n kirby-progress-circle-ring[themeColor],\n kirby-modal-footer[themeColor],\n kirby-empty-state[themeColor]`,\n})\nexport class ThemeColorDirective {\n private _isDefault = true;\n @HostBinding('class.default')\n get isDefault() {\n return this._isDefault;\n }\n\n private _isPrimary: boolean;\n @HostBinding('class.primary')\n get isPrimary() {\n return this._isPrimary;\n }\n\n private _isSecondary: boolean;\n @HostBinding('class.secondary')\n get isSecondary() {\n return this._isSecondary;\n }\n\n private _isTertiary: boolean;\n @HostBinding('class.tertiary')\n get isTertiary() {\n return this._isTertiary;\n }\n\n private _isSuccess: boolean;\n @HostBinding('class.success')\n get isSuccess() {\n return this._isSuccess;\n }\n\n private _isWarning: boolean;\n @HostBinding('class.warning')\n get isWarning() {\n return this._isWarning;\n }\n\n private _isDanger: boolean;\n @HostBinding('class.danger')\n get isDanger() {\n return this._isDanger;\n }\n\n private _isLight: boolean;\n @HostBinding('class.light')\n get isLight() {\n return this._isLight;\n }\n\n private _isMedium: boolean;\n @HostBinding('class.medium')\n get isMedium() {\n return this._isMedium;\n }\n\n private _isDark: boolean;\n @HostBinding('class.dark')\n get isDark() {\n return this._isDark;\n }\n\n private _isWhite: boolean;\n @HostBinding('class.white')\n get isWhite() {\n return this._isWhite;\n }\n\n private _isBrightnessWhite: boolean;\n @HostBinding('class.kirby-color-brightness-white')\n get isBrightnessWhite() {\n return this._isBrightnessWhite;\n }\n\n private _isBrightnessLight: boolean;\n @HostBinding('class.kirby-color-brightness-light')\n get isBrightnessLight() {\n return this._isBrightnessLight;\n }\n\n private _isBrightnessDark: boolean;\n @HostBinding('class.kirby-color-brightness-dark')\n get isBrightnessDark() {\n return this._isBrightnessDark;\n }\n\n @Input() set themeColor(value: ThemeColor) {\n this._isDefault = !value;\n this._isPrimary = value === 'primary';\n this._isSecondary = value === 'secondary';\n this._isTertiary = value === 'tertiary';\n this._isSuccess = value === 'success';\n this._isWarning = value === 'warning';\n this._isDanger = value === 'danger';\n this._isLight = value === 'light';\n this._isMedium = value === 'medium';\n this._isDark = value === 'dark';\n this._isWhite = value === 'white';\n const colorBrightness = ColorHelper.getColorBrightness(value);\n this._isBrightnessWhite = colorBrightness === 'white';\n this._isBrightnessLight = colorBrightness === 'light';\n this._isBrightnessDark = colorBrightness === 'dark';\n }\n}\n","import {\n ComponentFactoryResolver,\n Directive,\n Input,\n OnInit,\n Renderer2,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { ComponentConfiguration } from './component-configuration';\nimport { DynamicComponent } from './dynamic-component';\n\n@Directive({\n selector: '[kirbyLoadComponent]',\n standalone: true,\n})\nexport class ComponentLoaderDirective implements OnInit {\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('kirbyLoadComponent') configuration: ComponentConfiguration;\n @Input() cssClass: string;\n\n constructor(\n private componentFactoryResolver: ComponentFactoryResolver,\n private viewContainerRef: ViewContainerRef,\n private renderer: Renderer2\n ) {}\n\n ngOnInit() {\n this.loadCard();\n }\n\n loadCard() {\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(\n this.configuration.component\n );\n this.viewContainerRef.clear();\n const componentRef = this.viewContainerRef.createComponent(componentFactory);\n if (componentRef && componentRef.location && componentRef.location.nativeElement) {\n this.renderer.addClass(componentRef.location.nativeElement, this.cssClass);\n }\n (<DynamicComponent>componentRef.instance).data = this.configuration.data;\n }\n}\n","import { Directive, ElementRef, Input, OnDestroy, OnInit, Renderer2 } from '@angular/core';\n\nimport { LineClampHelper } from '@kirbydesign/designsystem/helpers';\nimport { ResizeObserverService } from '../resize-observer/resize-observer.service';\n\ninterface HeadingSize {\n name: string;\n fontSize: string;\n lineHeight: string;\n}\n\nexport interface FitHeadingConfig {\n maxLines: number;\n}\n\n@Directive({\n standalone: true,\n selector: `h1[kirbyFitHeading],h2[kirbyFitHeading],h3[kirbyFitHeading],[kirbyFitHeading]`,\n providers: [LineClampHelper],\n})\nexport class FitHeadingDirective implements OnInit, OnDestroy {\n @Input('kirbyFitHeading') config?: FitHeadingConfig;\n\n private isObservingHostElement: boolean;\n private hostElementClone: Element;\n private isScalingHeader: boolean; // used to prevent resizeObserver to trigger on font scaling by this.scaleHeader()\n\n private originalSize: HeadingSize;\n\n private headingSizes: HeadingSize[] = [\n {\n name: 'h1',\n fontSize: 'var(--kirby-font-size-xl)',\n lineHeight: 'var(--kirby-line-height-xl)',\n },\n {\n name: 'h2',\n fontSize: 'var(--kirby-font-size-l)',\n lineHeight: 'var(--kirby-line-height-l)',\n },\n {\n name: 'h3',\n fontSize: 'var(--kirby-font-size-m)',\n lineHeight: 'var(--kirby-line-height-m)',\n },\n ];\n\n constructor(\n private elementRef: ElementRef,\n private renderer: Renderer2,\n private resizeObserverService: ResizeObserverService,\n private lineClampHelper: LineClampHelper\n ) {}\n\n ngOnInit(): void {\n if (this.config && this.config.maxLines) {\n this.observeResize();\n this.isObservingHostElement = true;\n }\n }\n\n ngOnDestroy(): void {\n if (this.isObservingHostElement) {\n this.resizeObserverService.unobserve(this.elementRef);\n if (this.hostElementClone) {\n this.renderer.removeChild(this.elementRef.nativeElement, this.hostElementClone);\n }\n }\n }\n\n private observeResize(): void {\n this.resizeObserverService.observe(this.elementRef, () => {\n /**\n * setTimeout is used here to avoid repeated size changes\n * while the first size change is still ongoing.\n * This would result in the ResizeObserver being called again,\n * giving 'ResizeObserver loop limit exceeded' types of errors.\n */\n setTimeout(() => {\n this.scaleHeader();\n }, 0);\n });\n }\n\n private scaleHeader(): void {\n if (this.isScalingHeader) return;\n\n this.isScalingHeader = true;\n\n if (!this.hostElementClone) {\n // Capture original CSS size before any scaling\n const computed = getComputedStyle(this.elementRef.nativeElement);\n this.originalSize = {\n name: 'original',\n fontSize: computed.fontSize,\n lineHeight: computed.lineHeight,\n };\n\n // Skip line-clamp for elements with line-height: normal (e.g. key-value) — conflicts with flex layout\n if (computed.lineHeight !== 'normal') {\n this.lineClampHelper.setMaxLines(this.elementRef.nativeElement, this.config.maxLines);\n }\n\n this.hostElementClone = this.generateHostElementClone();\n this.renderer.appendChild(this.elementRef.nativeElement.parentElement, this.hostElementClone);\n }\n\n // Use parent width to avoid feedback loop from shrink-wrapped element width\n const availableWidth = this.elementRef.nativeElement.parentElement.clientWidth;\n this.renderer.setStyle(this.hostElementClone, 'width', `${availableWidth}px`);\n\n // Try original CSS size first, then scale down through heading sizes\n const candidates = [this.originalSize, ...this.headingSizes];\n const fallbackSize = this.headingSizes[this.headingSizes.length - 1];\n const fittedSize = candidates.find(this.canFitHeading.bind(this)) || fallbackSize;\n\n this.setSize(this.elementRef.nativeElement, fittedSize);\n this.lineClampHelper.setLineHeight(this.elementRef.nativeElement, fittedSize.lineHeight);\n this.isScalingHeader = false;\n }\n\n private canFitHeading(size: HeadingSize) {\n this.setSize(this.hostElementClone, size);\n // Resolve line-height to pixels via getComputedStyle (handles unitless ratios)\n const computedLineHeight = parseFloat(\n getComputedStyle(this.hostElementClone as HTMLElement).lineHeight\n );\n // Skip vertical check for line-height: normal (single-line content like values)\n const fitsVertically = isNaN(computedLineHeight)\n ? true\n : Math.round(this.hostElementClone.clientHeight / computedLineHeight) <= this.config.maxLines;\n // Check horizontal overflow for non-wrapping content (e.g. numbers)\n const fitsHorizontally = this.hostElementClone.scrollWidth <= this.hostElementClone.clientWidth;\n return fitsVertically && fitsHorizontally;\n }\n\n private generateHostElementClone(): Element {\n const clone = this.elementRef.nativeElement.cloneNode(true);\n this.renderer.setStyle(clone, 'position', 'absolute');\n this.renderer.setStyle(clone, 'visibility', 'hidden');\n this.lineClampHelper.removeLineClamp(clone);\n return clone;\n }\n\n private setSize(el: Element, size: HeadingSize): void {\n this.renderer.setStyle(el, 'font-size', size.fontSize);\n this.renderer.setStyle(el, 'line-height', size.lineHeight);\n }\n}\n","import { Renderer2 } from '@angular/core';\n\nexport function findItemLabel(element: HTMLElement): HTMLElement {\n const itemEl = element.closest('kirby-item');\n if (itemEl) {\n return itemEl.querySelector('kirby-label');\n }\n\n return null;\n}\n\nexport function setAccessibleLabel(element: HTMLElement): string {\n const label = findItemLabel(element);\n if (label) {\n label.setAttribute('aria-hidden', 'true');\n return label.textContent;\n }\n}\n\nexport function inheritAriaLabelText(element: HTMLElement): string {\n const attribute = 'aria-label';\n if (element.hasAttribute(attribute)) {\n const value = element.getAttribute(attribute);\n element.removeAttribute(attribute);\n return value;\n }\n}\n\n/**\n * Forwards specified attributes from a source element to a target element.\n *\n * @param sourceElement - The HTML element from which attributes will be removed from.\n * @param attributes - An array of attribute names to inherit from the source element.\n * @param renderer - An instance of Angular's Renderer2.\n * @param targetElement - (Optional) The HTML element to which the attributes should be applied.\n * If not provided, the attributes will only be removed from the source element.\n *\n * @returns A record of the inherited attributes and their values. If no attributes are inherited, an empty object is returned.\n */\nexport function forwardAttributes(\n sourceElement: HTMLElement,\n attributes: string[],\n renderer: Renderer2,\n targetElement?: HTMLElement\n): Record<string, any> {\n const inheritedAttributes: Record<string, any> = {};\n\n if (!sourceElement || !attributes || attributes.length === 0) {\n return inheritedAttributes;\n }\n\n attributes.forEach((attribute) => {\n if (sourceElement.hasAttribute(attribute)) {\n const value = sourceElement.getAttribute(attribute);\n inheritedAttributes[attribute] = value;\n\n if (targetElement) {\n renderer.setAttribute(targetElement, attribute, value);\n }\n\n renderer.removeAttribute(sourceElement, attribute);\n }\n });\n\n return inheritedAttributes;\n}\n","import { Translation } from '../translation.interface';\n\nexport const da: Translation = {\n $code: 'da',\n back: 'Tilbage',\n close: 'Luk',\n nextMonth: 'Næste måned',\n nextSlide: 'Næste slide',\n previousMonth: 'Forrige måned',\n previousSlide: 'Forrige slide',\n selectYear: 'Vælg år',\n readMore: 'Læs mere',\n more: 'Mere',\n characters: 'Tegn',\n outOf: 'af',\n entered: 'indtastet',\n};\n","import { Translation } from '../translation.interface';\n\nexport const en: Translation = {\n $code: 'en',\n back: 'Back',\n close: 'Close',\n nextMonth: 'Next month',\n nextSlide: 'Next slide',\n previousMonth: 'Previous month',\n previousSlide: 'Previous slide',\n selectYear: 'Select year',\n readMore: 'Read more',\n more: 'More',\n characters: 'Characters',\n outOf: 'out of',\n entered: 'entered',\n};\n","import { Translation } from '../translation.interface';\n\nexport const de: Translation = {\n $code: 'de',\n back: 'Zurück',\n close: 'Schließen',\n nextMonth: 'Nächsten Monat',\n nextSlide: 'Zur nächsten Folie',\n previousMonth: 'Letzten Monat',\n previousSlide: 'Zur vorherigen Folie',\n selectYear: 'Jahr auswählen',\n readMore: 'Mehr lesen',\n more: 'Mehr',\n characters: 'Zeichen',\n outOf: 'von',\n entered: 'eingegeben',\n};\n","import { Injectable } from '@angular/core';\nimport { Inject, LOCALE_ID } from '@angular/core';\nimport { da } from './translations/da';\nimport { en } from './translations/en';\nimport { de } from './translations/de';\nimport { Translation } from './translation.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TranslationService {\n private activeTranslation: Translation = en;\n private translations: { [key: string]: Translation } = { da, en, de };\n\n constructor(@Inject(LOCALE_ID) private localeId: string) {\n this.setActiveTranslation(localeId);\n }\n\n private setActiveTranslation(localeId: string): string {\n const baseLocaleId = localeId.split('-')[0];\n const translation = this.translations[baseLocaleId];\n\n if (!translation) {\n console.warn(\n `[Kirby] Internal component translations were not found for locale \"${this.localeId}\", falling back to ${this.get('$code')}`\n );\n return;\n }\n\n this.activeTranslation = translation;\n }\n\n get(key: keyof Translation): string {\n return this.activeTranslation[key];\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.ResizeObserverFactory","i1.ResizeObserverService"],"mappings":"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"}
1
+ {"version":3,"file":"kirbydesign-designsystem-shared.mjs","names":[],"sources":["../../shared/src/resize-observer/resize-observer.factory.ts","../../shared/src/resize-observer/resize-observer.service.ts","../../shared/src/text-resize-observer/text-resize-observer.service.ts","../../shared/src/theme-color/theme-color.directive.ts","../../shared/src/component-loader.directive.ts","../../shared/src/fit-heading/fit-heading.directive.ts","../../shared/src/controls/label-helpers.ts","../../shared/src/translation/translations/da.ts","../../shared/src/translation/translations/en.ts","../../shared/src/translation/translations/de.ts","../../shared/src/translation/translation.service.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n/**\n * Factory that creates a new ResizeObserver and allows us to stub it out in unit tests.\n * @docs-private\n */\n@Injectable({ providedIn: 'root' })\nexport class ResizeObserverFactory {\n create(callback: ResizeObserverCallback): ResizeObserver | null {\n return typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(callback);\n }\n}\n","import { ElementRef, Injectable, OnDestroy } from '@angular/core';\nimport { ResizeObserverFactory } from './resize-observer.factory';\n\n@Injectable({ providedIn: 'root' })\nexport class ResizeObserverService implements OnDestroy {\n // IMPORTANT: Keeps track of the existing ResizeObserver so it can be reused for performance.\n // See: https://groups.google.com/a/chromium.org/forum/#!msg/blink-dev/z6ienONUb5A/F5-VcUZtBAAJ\n private observer: ResizeObserver | null;\n private observedElements = new WeakMap<Element, (entry: ResizeObserverEntry) => void>();\n\n constructor(private _resizeObserverFactory: ResizeObserverFactory) {\n this.observer = this._resizeObserverFactory.create((entries) => this.handleResize(entries));\n }\n\n observe(\n elementOrRef: Element | ElementRef<Element>,\n action: (entry: ResizeObserverEntry) => void\n ): void {\n const element = elementOrRef instanceof ElementRef ? elementOrRef.nativeElement : elementOrRef;\n if (!this.observedElements.has(element)) {\n if (this.observer) {\n this.observer.observe(element);\n }\n this.observedElements.set(element, action);\n }\n }\n\n ngOnDestroy() {\n if (this.observer) {\n this.observer.disconnect();\n }\n }\n\n unobserve(elementOrRef: Element | ElementRef<Element>) {\n const element = elementOrRef instanceof ElementRef ? elementOrRef.nativeElement : elementOrRef;\n if (this.observedElements.has(element)) {\n if (this.observer) {\n this.observer.unobserve(element);\n }\n this.observedElements.delete(element);\n }\n }\n\n private handleResize(entries: ResizeObserverEntry[]) {\n entries.forEach((entry) => {\n const action = this.observedElements.get(entry.target);\n if (action) {\n action(entry);\n }\n });\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { DesignTokenHelper } from '@kirbydesign/designsystem/helpers';\n\nconst TEXT_RESIZE_THRESHOLD = parseFloat(DesignTokenHelper.textResizeThreshold());\nconst TEXT_RESIZE_CLASS = 'kirby-trt';\nconst BASE_FONT_SIZE_PX = parseInt(DesignTokenHelper.baseFontSizePx());\n\n/**\n * Element width combines both signals: rem scaling (desktop/iOS) and env(preferred-text-scale)\n * (Android). On platforms where env() is unsupported, the fallback `1` makes it a no-op multiplier.\n */\nconst OBSERVER_ELEMENT_STYLES =\n 'position:absolute;width:calc(1rem * env(preferred-text-scale, 1));height:1rem;top:-9999px;visibility:hidden;pointer-events:none';\n\n/**\n * Detects when text is resized above a certain threshold in browser/OS settings and toggles a\n * `kirby-trt` class on the root html element.\n *\n * Uses a `ResizeObserver` on a hidden element sized with `calc(1rem * env(preferred-text-scale, 1))`.\n * This combines two detections into one element:\n *\n * - **rem scaling** — on desktop browsers and iOS, changing text size modifies the root font-size,\n * which changes `1rem` and triggers the observer.\n *\n * - **`env(preferred-text-scale)`** — on platforms that support this CSS environment variable\n * (e.g. Android Chrome/WebView), the multiplier reflects the OS/browser text scale factor.\n * When the user changes font size in system settings, the env value updates and the element resizes.\n *\n * On platforms where `env(preferred-text-scale)` is not supported, the value falls back to `1`,\n * making the width equivalent to `1rem`.\n *\n * @example\n * ```scss\n * @include utils.media('<medium') {\n * :host-context(.kirby-trt) {\n * // Styles for narrow screens with scaled text\n * }\n * }\n * ```\n *\n * @see https://drafts.csswg.org/css-env-1/#preferred-text-scale\n */\n@Injectable({ providedIn: 'root' })\nexport class TextResizeObserverService implements OnDestroy {\n private resizeObserver: ResizeObserver | null = null;\n private textResizeObserverElement: HTMLElement | null = null;\n\n initialize(): void {\n if (typeof window === 'undefined') {\n return;\n }\n\n this.textResizeObserverElement = document.createElement('div');\n this.textResizeObserverElement.style.cssText = OBSERVER_ELEMENT_STYLES;\n document.body.appendChild(this.textResizeObserverElement);\n\n this.resizeObserver = new ResizeObserver(this.onObservedResize);\n this.resizeObserver.observe(this.textResizeObserverElement);\n\n this.onObservedResize();\n }\n\n ngOnDestroy(): void {\n this.resizeObserver?.disconnect();\n this.textResizeObserverElement?.remove();\n }\n\n private onObservedResize = (): void => {\n const widthInPx = this.textResizeObserverElement?.offsetWidth ?? BASE_FONT_SIZE_PX;\n const scale = widthInPx / BASE_FONT_SIZE_PX;\n document.documentElement.classList.toggle(TEXT_RESIZE_CLASS, scale > TEXT_RESIZE_THRESHOLD);\n };\n}\n","import { Directive, HostBinding, Input } from '@angular/core';\n\nimport { ColorHelper } from '@kirbydesign/designsystem/helpers';\nimport { ThemeColor } from '@kirbydesign/core';\n\n@Directive({\n standalone: true,\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: `kirby-avatar[themeColor],\n kirby-card[themeColor],\n kirby-icon[themeColor],\n kirby-progress-circle-ring[themeColor],\n kirby-modal-footer[themeColor],\n kirby-empty-state[themeColor]`,\n})\nexport class ThemeColorDirective {\n private _isDefault = true;\n @HostBinding('class.default')\n get isDefault() {\n return this._isDefault;\n }\n\n private _isPrimary = false;\n @HostBinding('class.primary')\n get isPrimary() {\n return this._isPrimary;\n }\n\n private _isSecondary = false;\n @HostBinding('class.secondary')\n get isSecondary() {\n return this._isSecondary;\n }\n\n private _isTertiary = false;\n @HostBinding('class.tertiary')\n get isTertiary() {\n return this._isTertiary;\n }\n\n private _isSuccess = false;\n @HostBinding('class.success')\n get isSuccess() {\n return this._isSuccess;\n }\n\n private _isWarning = false;\n @HostBinding('class.warning')\n get isWarning() {\n return this._isWarning;\n }\n\n private _isDanger = false;\n @HostBinding('class.danger')\n get isDanger() {\n return this._isDanger;\n }\n\n private _isLight = false;\n @HostBinding('class.light')\n get isLight() {\n return this._isLight;\n }\n\n private _isMedium = false;\n @HostBinding('class.medium')\n get isMedium() {\n return this._isMedium;\n }\n\n private _isDark = false;\n @HostBinding('class.dark')\n get isDark() {\n return this._isDark;\n }\n\n private _isWhite = false;\n @HostBinding('class.white')\n get isWhite() {\n return this._isWhite;\n }\n\n private _isBrightnessWhite = false;\n @HostBinding('class.kirby-color-brightness-white')\n get isBrightnessWhite() {\n return this._isBrightnessWhite;\n }\n\n private _isBrightnessLight = false;\n @HostBinding('class.kirby-color-brightness-light')\n get isBrightnessLight() {\n return this._isBrightnessLight;\n }\n\n private _isBrightnessDark = false;\n @HostBinding('class.kirby-color-brightness-dark')\n get isBrightnessDark() {\n return this._isBrightnessDark;\n }\n\n @Input() set themeColor(value: ThemeColor) {\n this._isDefault = !value;\n this._isPrimary = value === 'primary';\n this._isSecondary = value === 'secondary';\n this._isTertiary = value === 'tertiary';\n this._isSuccess = value === 'success';\n this._isWarning = value === 'warning';\n this._isDanger = value === 'danger';\n this._isLight = value === 'light';\n this._isMedium = value === 'medium';\n this._isDark = value === 'dark';\n this._isWhite = value === 'white';\n const colorBrightness = ColorHelper.getColorBrightness(value);\n this._isBrightnessWhite = colorBrightness === 'white';\n this._isBrightnessLight = colorBrightness === 'light';\n this._isBrightnessDark = colorBrightness === 'dark';\n }\n}\n","import { Directive, Input, OnInit, Renderer2, ViewContainerRef } from '@angular/core';\n\nimport { ComponentConfiguration } from './component-configuration';\nimport { DynamicComponent } from './dynamic-component';\n\n@Directive({\n selector: '[kirbyLoadComponent]',\n standalone: true,\n})\nexport class ComponentLoaderDirective implements OnInit {\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('kirbyLoadComponent') configuration!: ComponentConfiguration;\n @Input() cssClass = '';\n\n constructor(\n private viewContainerRef: ViewContainerRef,\n private renderer: Renderer2\n ) {}\n\n ngOnInit() {\n this.loadCard();\n }\n\n loadCard() {\n this.viewContainerRef.clear();\n const componentRef = this.viewContainerRef.createComponent(this.configuration.component);\n if (componentRef && componentRef.location && componentRef.location.nativeElement) {\n this.renderer.addClass(componentRef.location.nativeElement, this.cssClass);\n }\n (<DynamicComponent>componentRef.instance).data = this.configuration.data;\n }\n}\n","import { Directive, ElementRef, Input, OnDestroy, OnInit, Renderer2 } from '@angular/core';\n\nimport { LineClampHelper } from '@kirbydesign/designsystem/helpers';\nimport { ResizeObserverService } from '../resize-observer/resize-observer.service';\n\ninterface HeadingSize {\n name: string;\n fontSize: string;\n lineHeight: string;\n}\n\nexport interface FitHeadingConfig {\n maxLines: number;\n}\n\n@Directive({\n standalone: true,\n selector: `h1[kirbyFitHeading],h2[kirbyFitHeading],h3[kirbyFitHeading],[kirbyFitHeading]`,\n providers: [LineClampHelper],\n})\nexport class FitHeadingDirective implements OnInit, OnDestroy {\n @Input('kirbyFitHeading') config?: FitHeadingConfig;\n\n private isObservingHostElement = false;\n private hostElementClone?: Element;\n private isScalingHeader = false; // used to prevent resizeObserver to trigger on font scaling by this.scaleHeader()\n\n private originalSize?: HeadingSize;\n\n private headingSizes: HeadingSize[] = [\n {\n name: 'h1',\n fontSize: 'var(--kirby-font-size-xl)',\n lineHeight: 'var(--kirby-line-height-xl)',\n },\n {\n name: 'h2',\n fontSize: 'var(--kirby-font-size-l)',\n lineHeight: 'var(--kirby-line-height-l)',\n },\n {\n name: 'h3',\n fontSize: 'var(--kirby-font-size-m)',\n lineHeight: 'var(--kirby-line-height-m)',\n },\n ];\n\n constructor(\n private elementRef: ElementRef,\n private renderer: Renderer2,\n private resizeObserverService: ResizeObserverService,\n private lineClampHelper: LineClampHelper\n ) {}\n\n ngOnInit(): void {\n if (this.config && this.config.maxLines) {\n this.observeResize();\n this.isObservingHostElement = true;\n }\n }\n\n ngOnDestroy(): void {\n if (this.isObservingHostElement) {\n this.resizeObserverService.unobserve(this.elementRef);\n if (this.hostElementClone) {\n this.renderer.removeChild(this.elementRef.nativeElement, this.hostElementClone);\n }\n }\n }\n\n private observeResize(): void {\n this.resizeObserverService.observe(this.elementRef, () => {\n /**\n * setTimeout is used here to avoid repeated size changes\n * while the first size change is still ongoing.\n * This would result in the ResizeObserver being called again,\n * giving 'ResizeObserver loop limit exceeded' types of errors.\n */\n setTimeout(() => {\n this.scaleHeader();\n }, 0);\n });\n }\n\n private scaleHeader(): void {\n const maxLines = this.config?.maxLines;\n if (!maxLines || this.isScalingHeader) return;\n\n this.isScalingHeader = true;\n\n if (!this.hostElementClone) {\n // Capture original CSS size before any scaling\n const computed = getComputedStyle(this.elementRef.nativeElement);\n this.originalSize = {\n name: 'original',\n fontSize: computed.fontSize,\n lineHeight: computed.lineHeight,\n };\n\n // Skip line-clamp for elements with line-height: normal (e.g. key-value) — conflicts with flex layout\n if (computed.lineHeight !== 'normal') {\n this.lineClampHelper.setMaxLines(this.elementRef.nativeElement, maxLines);\n }\n\n this.hostElementClone = this.generateHostElementClone();\n this.renderer.appendChild(this.elementRef.nativeElement.parentElement, this.hostElementClone);\n }\n\n // Use parent width to avoid feedback loop from shrink-wrapped element width\n const availableWidth = this.elementRef.nativeElement.parentElement.clientWidth;\n this.renderer.setStyle(this.hostElementClone, 'width', `${availableWidth}px`);\n\n // Try original CSS size first, then scale down through heading sizes\n const candidates = this.originalSize\n ? [this.originalSize, ...this.headingSizes]\n : this.headingSizes;\n const fallbackSize = this.headingSizes[this.headingSizes.length - 1];\n const fittedSize = candidates.find(this.canFitHeading.bind(this)) || fallbackSize;\n\n this.setSize(this.elementRef.nativeElement, fittedSize);\n this.lineClampHelper.setLineHeight(this.elementRef.nativeElement, fittedSize.lineHeight);\n this.isScalingHeader = false;\n }\n\n private canFitHeading(size: HeadingSize) {\n const hostElementClone = this.hostElementClone;\n if (!hostElementClone || !this.config) return false;\n this.setSize(hostElementClone, size);\n // Resolve line-height to pixels via getComputedStyle (handles unitless ratios)\n const computedLineHeight = parseFloat(\n getComputedStyle(hostElementClone as HTMLElement).lineHeight\n );\n // Skip vertical check for line-height: normal (single-line content like values)\n const fitsVertically = isNaN(computedLineHeight)\n ? true\n : Math.round(hostElementClone.clientHeight / computedLineHeight) <= this.config.maxLines;\n // Check horizontal overflow for non-wrapping content (e.g. numbers)\n const fitsHorizontally = hostElementClone.scrollWidth <= hostElementClone.clientWidth;\n return fitsVertically && fitsHorizontally;\n }\n\n private generateHostElementClone(): Element {\n const clone = this.elementRef.nativeElement.cloneNode(true);\n this.renderer.setStyle(clone, 'position', 'absolute');\n this.renderer.setStyle(clone, 'visibility', 'hidden');\n this.lineClampHelper.removeLineClamp(clone);\n return clone;\n }\n\n private setSize(el: Element, size: HeadingSize): void {\n this.renderer.setStyle(el, 'font-size', size.fontSize);\n this.renderer.setStyle(el, 'line-height', size.lineHeight);\n }\n}\n","import { Renderer2 } from '@angular/core';\n\nexport function findItemLabel(element: HTMLElement): HTMLElement | null {\n const itemEl = element.closest('kirby-item');\n if (itemEl) {\n return itemEl.querySelector('kirby-label');\n }\n\n return null;\n}\n\nexport function setAccessibleLabel(element: HTMLElement): string {\n const label = findItemLabel(element);\n if (!label) {\n return '';\n }\n\n label.setAttribute('aria-hidden', 'true');\n return label.textContent ?? '';\n}\n\nexport function inheritAriaLabelText(element: HTMLElement): string {\n const attribute = 'aria-label';\n if (!element.hasAttribute(attribute)) {\n return '';\n }\n\n const value = element.getAttribute(attribute);\n element.removeAttribute(attribute);\n return value ?? '';\n}\n\n/**\n * Forwards specified attributes from a source element to a target element.\n *\n * @param sourceElement - The HTML element from which attributes will be removed from.\n * @param attributes - An array of attribute names to inherit from the source element.\n * @param renderer - An instance of Angular's Renderer2.\n * @param targetElement - (Optional) The HTML element to which the attributes should be applied.\n * If not provided, the attributes will only be removed from the source element.\n *\n * @returns A record of the inherited attributes and their values. If no attributes are inherited, an empty object is returned.\n */\nexport function forwardAttributes(\n sourceElement: HTMLElement,\n attributes: string[],\n renderer: Renderer2,\n targetElement?: HTMLElement\n): Record<string, any> {\n const inheritedAttributes: Record<string, any> = {};\n\n if (!sourceElement || !attributes || attributes.length === 0) {\n return inheritedAttributes;\n }\n\n attributes.forEach((attribute) => {\n if (sourceElement.hasAttribute(attribute)) {\n const value = sourceElement.getAttribute(attribute);\n inheritedAttributes[attribute] = value;\n\n if (targetElement) {\n renderer.setAttribute(targetElement, attribute, value ?? '');\n }\n\n renderer.removeAttribute(sourceElement, attribute);\n }\n });\n\n return inheritedAttributes;\n}\n","import { Translation } from '../translation.interface';\n\nexport const da: Translation = {\n $code: 'da',\n back: 'Tilbage',\n close: 'Luk',\n nextMonth: 'Næste måned',\n nextSlide: 'Næste slide',\n previousMonth: 'Forrige måned',\n previousSlide: 'Forrige slide',\n selectYear: 'Vælg år',\n readMore: 'Læs mere',\n more: 'Mere',\n characters: 'Tegn',\n outOf: 'af',\n entered: 'indtastet',\n};\n","import { Translation } from '../translation.interface';\n\nexport const en: Translation = {\n $code: 'en',\n back: 'Back',\n close: 'Close',\n nextMonth: 'Next month',\n nextSlide: 'Next slide',\n previousMonth: 'Previous month',\n previousSlide: 'Previous slide',\n selectYear: 'Select year',\n readMore: 'Read more',\n more: 'More',\n characters: 'Characters',\n outOf: 'out of',\n entered: 'entered',\n};\n","import { Translation } from '../translation.interface';\n\nexport const de: Translation = {\n $code: 'de',\n back: 'Zurück',\n close: 'Schließen',\n nextMonth: 'Nächsten Monat',\n nextSlide: 'Zur nächsten Folie',\n previousMonth: 'Letzten Monat',\n previousSlide: 'Zur vorherigen Folie',\n selectYear: 'Jahr auswählen',\n readMore: 'Mehr lesen',\n more: 'Mehr',\n characters: 'Zeichen',\n outOf: 'von',\n entered: 'eingegeben',\n};\n","import { Injectable } from '@angular/core';\nimport { Inject, LOCALE_ID } from '@angular/core';\nimport { da } from './translations/da';\nimport { en } from './translations/en';\nimport { de } from './translations/de';\nimport { Translation } from './translation.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TranslationService {\n private activeTranslation: Translation = en;\n private translations: { [key: string]: Translation } = { da, en, de };\n\n constructor(@Inject(LOCALE_ID) private localeId: string) {\n this.setActiveTranslation(localeId);\n }\n\n private setActiveTranslation(localeId: string): void {\n const baseLocaleId = localeId.split('-')[0];\n const translation = this.translations[baseLocaleId];\n\n if (!translation) {\n console.warn(\n `[Kirby] Internal component translations were not found for locale \"${this.localeId}\", falling back to ${this.get('$code')}`\n );\n return;\n }\n\n this.activeTranslation = translation;\n }\n\n get(key: keyof Translation): string {\n return this.activeTranslation[key];\n }\n}\n"],"mappings":"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"}
@@ -1,92 +1,141 @@
1
- import * as i1 from '@angular/common';
2
- import { CommonModule } from '@angular/common';
3
- import * as i0 from '@angular/core';
4
- import { EventEmitter, ElementRef, ViewChild, Output, Input, ChangeDetectionStrategy, Component } from '@angular/core';
5
- import { forwardAttributes } from '@kirbydesign/designsystem/shared';
6
-
7
- class SlideButtonComponent {
8
- get value() {
9
- return this._value;
10
- }
11
- set value(v) {
12
- this._value = v;
13
- this.calculatePctInTens();
14
- }
15
- calculatePctInTens() {
16
- this.pctInTens = Math.ceil(this.value / 10) * 10;
17
- }
18
- constructor(changeDetectionRef, elementRef, renderer) {
19
- this.changeDetectionRef = changeDetectionRef;
20
- this.elementRef = elementRef;
21
- this.renderer = renderer;
22
- this.text = '';
23
- this.slideDone = new EventEmitter();
24
- this.slidingPercentageChanged = new EventEmitter();
25
- this._attributesToForward = ['aria-label', 'aria-labelledby'];
26
- this.slideDoneFadeTime = 500;
27
- this.slideResetTime = 100;
28
- this.isSlideDone = false;
29
- this.pctInTens = 0;
30
- this._value = 0;
31
- }
32
- ngAfterViewInit() {
33
- forwardAttributes(this.elementRef.nativeElement, this._attributesToForward, this.renderer, this.hiddenButton.nativeElement);
34
- }
35
- ngOnDestroy() {
36
- if (this.resetSliderIntervalTimer) {
37
- clearInterval(this.resetSliderIntervalTimer);
38
- }
39
- }
40
- onSliderMouseup() {
41
- if (this.value == 100) {
42
- this.handleSlideDone();
43
- }
44
- else {
45
- // Return slider thumb to beginning of slider button in increments of 2
46
- this.resetSliderIntervalTimer = setInterval(() => {
47
- if (this.value > 0) {
48
- this.value -= 2;
49
- }
50
- else {
51
- clearInterval(this.resetSliderIntervalTimer);
52
- }
53
- this.changeDetectionRef.markForCheck();
54
- }, 1);
55
- }
56
- }
57
- onSliderValueChange(val) {
58
- this.value = +val;
59
- this.slidingPercentageChanged.emit(this.value);
60
- }
61
- onSliderMousedown() {
62
- clearInterval(this.resetSliderIntervalTimer);
63
- }
64
- handleSlideDone() {
65
- this.slideDone.emit();
66
- this.isSlideDone = true;
67
- }
68
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.23", ngImport: i0, type: SlideButtonComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
69
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.23", type: SlideButtonComponent, isStandalone: true, selector: "kirby-slide-button", inputs: { text: "text", expand: "expand" }, outputs: { slideDone: "slideDone", slidingPercentageChanged: "slidingPercentageChanged" }, viewQueries: [{ propertyName: "hiddenButton", first: true, predicate: ["hiddenButton"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"slide-button-container\" [ngClass]=\"{ 'slide-done': isSlideDone }\" [inert]=\"isSlideDone\">\n <input\n tabindex=\"-1\"\n type=\"range\"\n (mouseup)=\"onSliderMouseup()\"\n (touchend)=\"onSliderMouseup()\"\n (input)=\"onSliderValueChange($event.target.value)\"\n (mousedown)=\"onSliderMousedown()\"\n (touchstart)=\"onSliderMousedown()\"\n class=\"slide-button\"\n [value]=\"value\"\n max=\"100\"\n aria-hidden=\"true\"\n />\n <p class=\"slide-button-text slide-{{ pctInTens }}-pct\" aria-hidden=\"true\">{{ text }}</p>\n <button #hiddenButton class=\"kirby-visually-hidden breakout\" (click)=\"handleSlideDone()\">\n {{ text }}\n </button>\n</div>\n", styles: [".kirby-line-clamp{display:-webkit-box;-webkit-line-clamp:var(--line-clamp, none);-webkit-box-orient:vertical;overflow:hidden}:host{position:relative;display:inline-block;width:256px;-webkit-user-select:none;user-select:none}:host[expand=block]{display:block;width:100%}:host .slide-button-container{width:100%;display:flex;justify-content:center;align-items:center;color:var(--kirby-primary-contrast);background-color:var(--kirby-primary);height:56px;border-radius:26px}:host .slide-button-container:has(:focus-visible){transition:all 80ms linear 0ms;box-shadow:var(--kirby-elevation-2),var(--kirby-focus-ring-md-inset)}:host .slide-10-pct{opacity:.9}:host .slide-20-pct{opacity:.8}:host .slide-30-pct{opacity:.7}:host .slide-40-pct{opacity:.6}:host .slide-50-pct{opacity:.5}:host .slide-60-pct{opacity:.4}:host .slide-70-pct{opacity:.3}:host .slide-80-pct{opacity:.2}:host .slide-90-pct{opacity:.1}:host .slide-100-pct{opacity:0}:host .slide-button-text{position:absolute;font-size:var(--kirby-font-size-n);margin:0;line-height:1;z-index:1;width:100%;text-align:center;padding:0 26px 0 56px;pointer-events:none}:host .slide-button{outline:none;width:100%;height:100%;-webkit-appearance:none;appearance:none;background:transparent;z-index:2;pointer-events:none}@media(hover:hover){:host .slide-button::-webkit-slider-thumb:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer;background-color:#ebebeb}}:host .slide-button::-webkit-slider-thumb:active,:host .slide-button::-webkit-slider-thumb .interaction-state-active{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);background-color:#e0e0e0}:host .slide-button::-webkit-slider-thumb{transition:all 80ms linear 0ms;-webkit-appearance:none;appearance:none;border-radius:var(--kirby-border-radius-circle);background-color:var(--kirby-white);background-image:url(/assets/kirby/icons/svg/arrow-more.svg);background-repeat:no-repeat;background-position:center;background-size:var(--kirby-spacing-m);width:52px;height:52px;border:none;pointer-events:all}@media(hover:hover){:host .slide-button::-moz-range-thumb:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer;background-color:#ebebeb}}:host .slide-button::-moz-range-thumb:active,:host .slide-button::-moz-range-thumb .interaction-state-active{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);background-color:#e0e0e0}:host .slide-button::-moz-range-thumb{transition:all 80ms linear 0ms;-webkit-appearance:none;appearance:none;border-radius:var(--kirby-border-radius-circle);background-color:var(--kirby-white);background-image:url(/assets/kirby/icons/svg/arrow-more.svg);background-repeat:no-repeat;background-position:center;background-size:var(--kirby-spacing-m);width:52px;height:52px;border:none;pointer-events:all}:host .slide-done{transition:all .3s ease-in-out;opacity:0;height:0;transform:scale(0);pointer-events:none}.kirby-visually-hidden.breakout{width:100%;height:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
70
- }
71
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.23", ngImport: i0, type: SlideButtonComponent, decorators: [{
72
- type: Component,
73
- args: [{ imports: [CommonModule], selector: 'kirby-slide-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"slide-button-container\" [ngClass]=\"{ 'slide-done': isSlideDone }\" [inert]=\"isSlideDone\">\n <input\n tabindex=\"-1\"\n type=\"range\"\n (mouseup)=\"onSliderMouseup()\"\n (touchend)=\"onSliderMouseup()\"\n (input)=\"onSliderValueChange($event.target.value)\"\n (mousedown)=\"onSliderMousedown()\"\n (touchstart)=\"onSliderMousedown()\"\n class=\"slide-button\"\n [value]=\"value\"\n max=\"100\"\n aria-hidden=\"true\"\n />\n <p class=\"slide-button-text slide-{{ pctInTens }}-pct\" aria-hidden=\"true\">{{ text }}</p>\n <button #hiddenButton class=\"kirby-visually-hidden breakout\" (click)=\"handleSlideDone()\">\n {{ text }}\n </button>\n</div>\n", styles: [".kirby-line-clamp{display:-webkit-box;-webkit-line-clamp:var(--line-clamp, none);-webkit-box-orient:vertical;overflow:hidden}:host{position:relative;display:inline-block;width:256px;-webkit-user-select:none;user-select:none}:host[expand=block]{display:block;width:100%}:host .slide-button-container{width:100%;display:flex;justify-content:center;align-items:center;color:var(--kirby-primary-contrast);background-color:var(--kirby-primary);height:56px;border-radius:26px}:host .slide-button-container:has(:focus-visible){transition:all 80ms linear 0ms;box-shadow:var(--kirby-elevation-2),var(--kirby-focus-ring-md-inset)}:host .slide-10-pct{opacity:.9}:host .slide-20-pct{opacity:.8}:host .slide-30-pct{opacity:.7}:host .slide-40-pct{opacity:.6}:host .slide-50-pct{opacity:.5}:host .slide-60-pct{opacity:.4}:host .slide-70-pct{opacity:.3}:host .slide-80-pct{opacity:.2}:host .slide-90-pct{opacity:.1}:host .slide-100-pct{opacity:0}:host .slide-button-text{position:absolute;font-size:var(--kirby-font-size-n);margin:0;line-height:1;z-index:1;width:100%;text-align:center;padding:0 26px 0 56px;pointer-events:none}:host .slide-button{outline:none;width:100%;height:100%;-webkit-appearance:none;appearance:none;background:transparent;z-index:2;pointer-events:none}@media(hover:hover){:host .slide-button::-webkit-slider-thumb:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer;background-color:#ebebeb}}:host .slide-button::-webkit-slider-thumb:active,:host .slide-button::-webkit-slider-thumb .interaction-state-active{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);background-color:#e0e0e0}:host .slide-button::-webkit-slider-thumb{transition:all 80ms linear 0ms;-webkit-appearance:none;appearance:none;border-radius:var(--kirby-border-radius-circle);background-color:var(--kirby-white);background-image:url(/assets/kirby/icons/svg/arrow-more.svg);background-repeat:no-repeat;background-position:center;background-size:var(--kirby-spacing-m);width:52px;height:52px;border:none;pointer-events:all}@media(hover:hover){:host .slide-button::-moz-range-thumb:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer;background-color:#ebebeb}}:host .slide-button::-moz-range-thumb:active,:host .slide-button::-moz-range-thumb .interaction-state-active{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);background-color:#e0e0e0}:host .slide-button::-moz-range-thumb{transition:all 80ms linear 0ms;-webkit-appearance:none;appearance:none;border-radius:var(--kirby-border-radius-circle);background-color:var(--kirby-white);background-image:url(/assets/kirby/icons/svg/arrow-more.svg);background-repeat:no-repeat;background-position:center;background-size:var(--kirby-spacing-m);width:52px;height:52px;border:none;pointer-events:all}:host .slide-done{transition:all .3s ease-in-out;opacity:0;height:0;transform:scale(0);pointer-events:none}.kirby-visually-hidden.breakout{width:100%;height:100%}\n"] }]
74
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { text: [{
75
- type: Input
76
- }], expand: [{
77
- type: Input
78
- }], slideDone: [{
79
- type: Output
80
- }], slidingPercentageChanged: [{
81
- type: Output
82
- }], hiddenButton: [{
83
- type: ViewChild,
84
- args: ['hiddenButton', { read: ElementRef }]
85
- }] } });
86
-
87
- /**
88
- * Generated bundle index. Do not edit.
89
- */
90
-
1
+ import * as i1 from "@angular/common";
2
+ import { CommonModule } from "@angular/common";
3
+ import * as i0 from "@angular/core";
4
+ import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Input, Output, ViewChild } from "@angular/core";
5
+ import { forwardAttributes } from "@kirbydesign/designsystem/shared";
6
+ var SlideButtonComponent = class SlideButtonComponent {
7
+ get value() {
8
+ return this._value;
9
+ }
10
+ set value(v) {
11
+ this._value = v;
12
+ this.calculatePctInTens();
13
+ }
14
+ calculatePctInTens() {
15
+ this.pctInTens = Math.ceil(this.value / 10) * 10;
16
+ }
17
+ constructor(changeDetectionRef, elementRef, renderer) {
18
+ this.changeDetectionRef = changeDetectionRef;
19
+ this.elementRef = elementRef;
20
+ this.renderer = renderer;
21
+ this.text = "";
22
+ this.slideDone = new EventEmitter();
23
+ this.slidingPercentageChanged = new EventEmitter();
24
+ this._attributesToForward = ["aria-label", "aria-labelledby"];
25
+ this.slideDoneFadeTime = 500;
26
+ this.slideResetTime = 100;
27
+ this.isSlideDone = false;
28
+ this.pctInTens = 0;
29
+ this._value = 0;
30
+ }
31
+ ngAfterViewInit() {
32
+ forwardAttributes(this.elementRef.nativeElement, this._attributesToForward, this.renderer, this.hiddenButton.nativeElement);
33
+ }
34
+ ngOnDestroy() {
35
+ if (this.resetSliderIntervalTimer) clearInterval(this.resetSliderIntervalTimer);
36
+ }
37
+ onSliderMouseup() {
38
+ if (this.value == 100) this.handleSlideDone();
39
+ else this.resetSliderIntervalTimer = setInterval(() => {
40
+ if (this.value > 0) this.value -= 2;
41
+ else clearInterval(this.resetSliderIntervalTimer);
42
+ this.changeDetectionRef.markForCheck();
43
+ }, 1);
44
+ }
45
+ onSliderValueChange(val) {
46
+ this.value = +val;
47
+ this.slidingPercentageChanged.emit(this.value);
48
+ }
49
+ onSliderMousedown() {
50
+ clearInterval(this.resetSliderIntervalTimer);
51
+ }
52
+ handleSlideDone() {
53
+ this.slideDone.emit();
54
+ this.isSlideDone = true;
55
+ }
56
+ static {
57
+ this.ɵfac = i0.ɵɵngDeclareFactory({
58
+ minVersion: "12.0.0",
59
+ version: "22.2.2",
60
+ ngImport: i0,
61
+ type: SlideButtonComponent,
62
+ deps: [
63
+ { token: i0.ChangeDetectorRef },
64
+ { token: i0.ElementRef },
65
+ { token: i0.Renderer2 }
66
+ ],
67
+ target: i0.ɵɵFactoryTarget.Component
68
+ });
69
+ }
70
+ static {
71
+ this.ɵcmp = i0.ɵɵngDeclareComponent({
72
+ minVersion: "14.0.0",
73
+ version: "22.2.2",
74
+ type: SlideButtonComponent,
75
+ isStandalone: true,
76
+ selector: "kirby-slide-button",
77
+ inputs: {
78
+ text: "text",
79
+ expand: "expand"
80
+ },
81
+ outputs: {
82
+ slideDone: "slideDone",
83
+ slidingPercentageChanged: "slidingPercentageChanged"
84
+ },
85
+ viewQueries: [{
86
+ propertyName: "hiddenButton",
87
+ first: true,
88
+ predicate: ["hiddenButton"],
89
+ descendants: true,
90
+ read: ElementRef
91
+ }],
92
+ ngImport: i0,
93
+ template: "<div class=\"slide-button-container\" [ngClass]=\"{ 'slide-done': isSlideDone }\" [inert]=\"isSlideDone\">\n <input\n tabindex=\"-1\"\n type=\"range\"\n (mouseup)=\"onSliderMouseup()\"\n (touchend)=\"onSliderMouseup()\"\n (input)=\"onSliderValueChange($event.target.value)\"\n (mousedown)=\"onSliderMousedown()\"\n (touchstart)=\"onSliderMousedown()\"\n class=\"slide-button\"\n [value]=\"value\"\n max=\"100\"\n aria-hidden=\"true\"\n />\n <p class=\"slide-button-text slide-{{ pctInTens }}-pct\" aria-hidden=\"true\">{{ text }}</p>\n <button #hiddenButton class=\"kirby-visually-hidden breakout\" (click)=\"handleSlideDone()\">\n {{ text }}\n </button>\n</div>\n",
94
+ styles: [".kirby-line-clamp{display:-webkit-box;-webkit-line-clamp:var(--line-clamp, none);-webkit-box-orient:vertical;overflow:hidden}:host{position:relative;display:inline-block;width:256px;-webkit-user-select:none;user-select:none}:host[expand=block]{display:block;width:100%}:host .slide-button-container{width:100%;display:flex;justify-content:center;align-items:center;color:var(--kirby-color-content-brand-loud);background-color:var(--kirby-color-fill-brand-loud);height:56px;border-radius:26px}:host .slide-button-container:has(:focus-visible){transition:all 80ms linear 0ms;box-shadow:var(--kirby-elevation-2),var(--kirby-focus-ring-md-inset)}:host .slide-10-pct{opacity:.9}:host .slide-20-pct{opacity:.8}:host .slide-30-pct{opacity:.7}:host .slide-40-pct{opacity:.6}:host .slide-50-pct{opacity:.5}:host .slide-60-pct{opacity:.4}:host .slide-70-pct{opacity:.3}:host .slide-80-pct{opacity:.2}:host .slide-90-pct{opacity:.1}:host .slide-100-pct{opacity:0}:host .slide-button-text{position:absolute;font-size:var(--kirby-font-size-n);margin:0;line-height:1;z-index:1;width:100%;text-align:center;padding:0 26px 0 56px;pointer-events:none}:host .slide-button{outline:none;width:100%;height:100%;-webkit-appearance:none;appearance:none;background:transparent;z-index:2;pointer-events:none}@media(hover:hover){:host .slide-button::-webkit-slider-thumb:hover{background-color:var(--kirby-color-fill-raised-hover)}}:host .slide-button::-webkit-slider-thumb:active{background-color:var(--kirby-color-fill-raised-active)}:host .slide-button::-webkit-slider-thumb{transition:all 80ms linear 0ms;-webkit-appearance:none;appearance:none;border-radius:var(--kirby-border-radius-circle);background-color:var(--kirby-color-fill-raised);background-image:url(/assets/kirby/icons/svg/arrow-more.svg);background-repeat:no-repeat;background-position:center;background-size:var(--kirby-spacing-m);width:52px;height:52px;border:none;pointer-events:all}@media(hover:hover){:host .slide-button::-moz-range-thumb:hover{background-color:var(--kirby-color-fill-raised-hover)}}:host .slide-button::-moz-range-thumb:active{background-color:var(--kirby-color-fill-raised-active)}:host .slide-button::-moz-range-thumb{transition:all 80ms linear 0ms;-webkit-appearance:none;appearance:none;border-radius:var(--kirby-border-radius-circle);background-color:var(--kirby-color-fill-raised);background-image:url(/assets/kirby/icons/svg/arrow-more.svg);background-repeat:no-repeat;background-position:center;background-size:var(--kirby-spacing-m);width:52px;height:52px;border:none;pointer-events:all}:host .slide-done{transition:all .3s ease-in-out;opacity:0;height:0;transform:scale(0);pointer-events:none}.kirby-visually-hidden.breakout{width:100%;height:100%}\n"],
95
+ dependencies: [{
96
+ kind: "ngmodule",
97
+ type: CommonModule
98
+ }, {
99
+ kind: "directive",
100
+ type: i1.NgClass,
101
+ selector: "[ngClass]",
102
+ inputs: ["class", "ngClass"]
103
+ }],
104
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
105
+ });
106
+ }
107
+ };
108
+ i0.ɵɵngDeclareClassMetadata({
109
+ minVersion: "12.0.0",
110
+ version: "22.2.2",
111
+ ngImport: i0,
112
+ type: SlideButtonComponent,
113
+ decorators: [{
114
+ type: Component,
115
+ args: [{
116
+ imports: [CommonModule],
117
+ selector: "kirby-slide-button",
118
+ changeDetection: ChangeDetectionStrategy.OnPush,
119
+ template: "<div class=\"slide-button-container\" [ngClass]=\"{ 'slide-done': isSlideDone }\" [inert]=\"isSlideDone\">\n <input\n tabindex=\"-1\"\n type=\"range\"\n (mouseup)=\"onSliderMouseup()\"\n (touchend)=\"onSliderMouseup()\"\n (input)=\"onSliderValueChange($event.target.value)\"\n (mousedown)=\"onSliderMousedown()\"\n (touchstart)=\"onSliderMousedown()\"\n class=\"slide-button\"\n [value]=\"value\"\n max=\"100\"\n aria-hidden=\"true\"\n />\n <p class=\"slide-button-text slide-{{ pctInTens }}-pct\" aria-hidden=\"true\">{{ text }}</p>\n <button #hiddenButton class=\"kirby-visually-hidden breakout\" (click)=\"handleSlideDone()\">\n {{ text }}\n </button>\n</div>\n",
120
+ styles: [".kirby-line-clamp{display:-webkit-box;-webkit-line-clamp:var(--line-clamp, none);-webkit-box-orient:vertical;overflow:hidden}:host{position:relative;display:inline-block;width:256px;-webkit-user-select:none;user-select:none}:host[expand=block]{display:block;width:100%}:host .slide-button-container{width:100%;display:flex;justify-content:center;align-items:center;color:var(--kirby-color-content-brand-loud);background-color:var(--kirby-color-fill-brand-loud);height:56px;border-radius:26px}:host .slide-button-container:has(:focus-visible){transition:all 80ms linear 0ms;box-shadow:var(--kirby-elevation-2),var(--kirby-focus-ring-md-inset)}:host .slide-10-pct{opacity:.9}:host .slide-20-pct{opacity:.8}:host .slide-30-pct{opacity:.7}:host .slide-40-pct{opacity:.6}:host .slide-50-pct{opacity:.5}:host .slide-60-pct{opacity:.4}:host .slide-70-pct{opacity:.3}:host .slide-80-pct{opacity:.2}:host .slide-90-pct{opacity:.1}:host .slide-100-pct{opacity:0}:host .slide-button-text{position:absolute;font-size:var(--kirby-font-size-n);margin:0;line-height:1;z-index:1;width:100%;text-align:center;padding:0 26px 0 56px;pointer-events:none}:host .slide-button{outline:none;width:100%;height:100%;-webkit-appearance:none;appearance:none;background:transparent;z-index:2;pointer-events:none}@media(hover:hover){:host .slide-button::-webkit-slider-thumb:hover{background-color:var(--kirby-color-fill-raised-hover)}}:host .slide-button::-webkit-slider-thumb:active{background-color:var(--kirby-color-fill-raised-active)}:host .slide-button::-webkit-slider-thumb{transition:all 80ms linear 0ms;-webkit-appearance:none;appearance:none;border-radius:var(--kirby-border-radius-circle);background-color:var(--kirby-color-fill-raised);background-image:url(/assets/kirby/icons/svg/arrow-more.svg);background-repeat:no-repeat;background-position:center;background-size:var(--kirby-spacing-m);width:52px;height:52px;border:none;pointer-events:all}@media(hover:hover){:host .slide-button::-moz-range-thumb:hover{background-color:var(--kirby-color-fill-raised-hover)}}:host .slide-button::-moz-range-thumb:active{background-color:var(--kirby-color-fill-raised-active)}:host .slide-button::-moz-range-thumb{transition:all 80ms linear 0ms;-webkit-appearance:none;appearance:none;border-radius:var(--kirby-border-radius-circle);background-color:var(--kirby-color-fill-raised);background-image:url(/assets/kirby/icons/svg/arrow-more.svg);background-repeat:no-repeat;background-position:center;background-size:var(--kirby-spacing-m);width:52px;height:52px;border:none;pointer-events:all}:host .slide-done{transition:all .3s ease-in-out;opacity:0;height:0;transform:scale(0);pointer-events:none}.kirby-visually-hidden.breakout{width:100%;height:100%}\n"]
121
+ }]
122
+ }],
123
+ ctorParameters: () => [
124
+ { type: i0.ChangeDetectorRef },
125
+ { type: i0.ElementRef },
126
+ { type: i0.Renderer2 }
127
+ ],
128
+ propDecorators: {
129
+ text: [{ type: Input }],
130
+ expand: [{ type: Input }],
131
+ slideDone: [{ type: Output }],
132
+ slidingPercentageChanged: [{ type: Output }],
133
+ hiddenButton: [{
134
+ type: ViewChild,
135
+ args: ["hiddenButton", { read: ElementRef }]
136
+ }]
137
+ }
138
+ });
91
139
  export { SlideButtonComponent };
92
- //# sourceMappingURL=kirbydesign-designsystem-slide-button.mjs.map
140
+
141
+ //# sourceMappingURL=kirbydesign-designsystem-slide-button.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"kirbydesign-designsystem-slide-button.mjs","sources":["../../slide-button/src/slide-button.component.ts","../../slide-button/src/slide-button.component.html","../../slide-button/src/kirbydesign-designsystem-slide-button.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n Renderer2,\n ViewChild,\n} from '@angular/core';\nimport { forwardAttributes } from '@kirbydesign/designsystem/shared';\n\n@Component({\n imports: [CommonModule],\n selector: 'kirby-slide-button',\n templateUrl: './slide-button.component.html',\n styleUrls: ['./slide-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SlideButtonComponent implements OnDestroy, AfterViewInit {\n @Input() text = '';\n @Input() expand: 'block';\n\n @Output() slideDone = new EventEmitter();\n @Output() slidingPercentageChanged = new EventEmitter<number>();\n\n @ViewChild('hiddenButton', { read: ElementRef })\n hiddenButton!: ElementRef<HTMLButtonElement>;\n\n private _attributesToForward = ['aria-label', 'aria-labelledby'];\n\n readonly slideDoneFadeTime = 500;\n readonly slideResetTime = 100;\n\n isSlideDone = false;\n pctInTens = 0;\n\n get value(): number {\n return this._value;\n }\n set value(v: number) {\n this._value = v;\n this.calculatePctInTens();\n }\n\n private _value: number = 0;\n private resetSliderIntervalTimer: any;\n private calculatePctInTens() {\n this.pctInTens = Math.ceil(this.value / 10) * 10;\n }\n\n constructor(\n private changeDetectionRef: ChangeDetectorRef,\n private elementRef: ElementRef<HTMLElement>,\n private renderer: Renderer2\n ) {}\n\n ngAfterViewInit(): void {\n forwardAttributes(\n this.elementRef.nativeElement,\n this._attributesToForward,\n this.renderer,\n this.hiddenButton.nativeElement\n );\n }\n\n ngOnDestroy(): void {\n if (this.resetSliderIntervalTimer) {\n clearInterval(this.resetSliderIntervalTimer);\n }\n }\n\n onSliderMouseup() {\n if (this.value == 100) {\n this.handleSlideDone();\n } else {\n // Return slider thumb to beginning of slider button in increments of 2\n this.resetSliderIntervalTimer = setInterval(() => {\n if (this.value > 0) {\n this.value -= 2;\n } else {\n clearInterval(this.resetSliderIntervalTimer);\n }\n\n this.changeDetectionRef.markForCheck();\n }, 1);\n }\n }\n\n onSliderValueChange(val: string) {\n this.value = +val;\n this.slidingPercentageChanged.emit(this.value);\n }\n\n onSliderMousedown() {\n clearInterval(this.resetSliderIntervalTimer);\n }\n\n handleSlideDone() {\n this.slideDone.emit();\n this.isSlideDone = true;\n }\n}\n","<div class=\"slide-button-container\" [ngClass]=\"{ 'slide-done': isSlideDone }\" [inert]=\"isSlideDone\">\n <input\n tabindex=\"-1\"\n type=\"range\"\n (mouseup)=\"onSliderMouseup()\"\n (touchend)=\"onSliderMouseup()\"\n (input)=\"onSliderValueChange($event.target.value)\"\n (mousedown)=\"onSliderMousedown()\"\n (touchstart)=\"onSliderMousedown()\"\n class=\"slide-button\"\n [value]=\"value\"\n max=\"100\"\n aria-hidden=\"true\"\n />\n <p class=\"slide-button-text slide-{{ pctInTens }}-pct\" aria-hidden=\"true\">{{ text }}</p>\n <button #hiddenButton class=\"kirby-visually-hidden breakout\" (click)=\"handleSlideDone()\">\n {{ text }}\n </button>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kirbydesign-designsystem-slide-button.mjs","names":[],"sources":["../../slide-button/src/slide-button.component.ts","../../slide-button/src/slide-button.component.html"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n Renderer2,\n ViewChild,\n} from '@angular/core';\nimport { forwardAttributes } from '@kirbydesign/designsystem/shared';\n\n@Component({\n imports: [CommonModule],\n selector: 'kirby-slide-button',\n templateUrl: './slide-button.component.html',\n styleUrls: ['./slide-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SlideButtonComponent implements OnDestroy, AfterViewInit {\n @Input() text = '';\n @Input() expand: 'block';\n\n @Output() slideDone = new EventEmitter();\n @Output() slidingPercentageChanged = new EventEmitter<number>();\n\n @ViewChild('hiddenButton', { read: ElementRef })\n hiddenButton!: ElementRef<HTMLButtonElement>;\n\n private _attributesToForward = ['aria-label', 'aria-labelledby'];\n\n readonly slideDoneFadeTime = 500;\n readonly slideResetTime = 100;\n\n isSlideDone = false;\n pctInTens = 0;\n\n get value(): number {\n return this._value;\n }\n set value(v: number) {\n this._value = v;\n this.calculatePctInTens();\n }\n\n private _value: number = 0;\n private resetSliderIntervalTimer: any;\n private calculatePctInTens() {\n this.pctInTens = Math.ceil(this.value / 10) * 10;\n }\n\n constructor(\n private changeDetectionRef: ChangeDetectorRef,\n private elementRef: ElementRef<HTMLElement>,\n private renderer: Renderer2\n ) {}\n\n ngAfterViewInit(): void {\n forwardAttributes(\n this.elementRef.nativeElement,\n this._attributesToForward,\n this.renderer,\n this.hiddenButton.nativeElement\n );\n }\n\n ngOnDestroy(): void {\n if (this.resetSliderIntervalTimer) {\n clearInterval(this.resetSliderIntervalTimer);\n }\n }\n\n onSliderMouseup() {\n if (this.value == 100) {\n this.handleSlideDone();\n } else {\n // Return slider thumb to beginning of slider button in increments of 2\n this.resetSliderIntervalTimer = setInterval(() => {\n if (this.value > 0) {\n this.value -= 2;\n } else {\n clearInterval(this.resetSliderIntervalTimer);\n }\n\n this.changeDetectionRef.markForCheck();\n }, 1);\n }\n }\n\n onSliderValueChange(val: string) {\n this.value = +val;\n this.slidingPercentageChanged.emit(this.value);\n }\n\n onSliderMousedown() {\n clearInterval(this.resetSliderIntervalTimer);\n }\n\n handleSlideDone() {\n this.slideDone.emit();\n this.isSlideDone = true;\n }\n}\n","<div class=\"slide-button-container\" [ngClass]=\"{ 'slide-done': isSlideDone }\" [inert]=\"isSlideDone\">\n <input\n tabindex=\"-1\"\n type=\"range\"\n (mouseup)=\"onSliderMouseup()\"\n (touchend)=\"onSliderMouseup()\"\n (input)=\"onSliderValueChange($event.target.value)\"\n (mousedown)=\"onSliderMousedown()\"\n (touchstart)=\"onSliderMousedown()\"\n class=\"slide-button\"\n [value]=\"value\"\n max=\"100\"\n aria-hidden=\"true\"\n />\n <p class=\"slide-button-text slide-{{ pctInTens }}-pct\" aria-hidden=\"true\">{{ text }}</p>\n <button #hiddenButton class=\"kirby-visually-hidden breakout\" (click)=\"handleSlideDone()\">\n {{ text }}\n </button>\n</div>\n"],"mappings":";;;;;AAuBA,IAAa,uBAAb,MAAa,qBAAoB;CAkB/B,IAAI,QAAK;EACP,OAAO,KAAK;CACd;CACA,IAAI,MAAM,GAAS;EACjB,KAAK,SAAS;EACd,KAAK,mBAAkB;CACzB;CAIQ,qBAAkB;EACxB,KAAK,YAAY,KAAK,KAAK,KAAK,QAAQ,EAAE,IAAI;CAChD;CAEA,YACU,oBACA,YACA,UAAmB;EAFnB,KAAA,qBAAA;EACA,KAAA,aAAA;EACA,KAAA,WAAA;EAlCD,KAAA,OAAO;EAGN,KAAA,YAAY,IAAI,aAAY;EAC5B,KAAA,2BAA2B,IAAI,aAAY;EAK7C,KAAA,uBAAuB,CAAC,cAAc,iBAAiB;EAEtD,KAAA,oBAAoB;EACpB,KAAA,iBAAiB;EAE1B,KAAA,cAAc;EACd,KAAA,YAAY;EAUJ,KAAA,SAAiB;CAUtB;CAEH,kBAAe;EACb,kBACE,KAAK,WAAW,eAChB,KAAK,sBACL,KAAK,UACL,KAAK,aAAa,aAAa;CAEnC;CAEA,cAAW;EACT,IAAI,KAAK,0BACP,cAAc,KAAK,wBAAwB;CAE/C;CAEA,kBAAe;EACb,IAAI,KAAK,SAAS,KAChB,KAAK,gBAAe;OAGpB,KAAK,2BAA2B,kBAAiB;GAC/C,IAAI,KAAK,QAAQ,GACf,KAAK,SAAS;QAEd,cAAc,KAAK,wBAAwB;GAG7C,KAAK,mBAAmB,aAAY;EACtC,GAAG,CAAC;CAER;CAEA,oBAAoB,KAAW;EAC7B,KAAK,QAAQ,CAAC;EACd,KAAK,yBAAyB,KAAK,KAAK,KAAK;CAC/C;CAEA,oBAAiB;EACf,cAAc,KAAK,wBAAwB;CAC7C;CAEA,kBAAe;EACb,KAAK,UAAU,KAAI;EACnB,KAAK,cAAc;CACrB;CAlFW;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAoB,MAAA;IAAA,EAAA,OAAA,GAAA,kBAAA;IAAA,EAAA,OAAA,GAAA,WAAA;IAAA,EAAA,OAAA,GAAA,UAAA;GAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAApB;EAAA,KAAA,OAAA,GAAA,qBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,MAAA;GAAoB,cAAA;GAAA,UAAA;GAAA,QAAA;IAAA,MAAA;IAAA,QAAA;GAAA;GAAA,SAAA;IAAA,WAAA;IAAA,0BAAA;GAAA;GAAA,aAAA,CAAA;IAAA,cAAA;IAAA,OAAA;IAAA,WAAA,CAAA,cAAA;IAAA,aAAA;IAAA,MAOI;GAAU,CAAA;GAAA,UAAA;GAAA,UC9B/C;GAmBA,QAAA,CAAA,uqFAAA;GAAA,cAAA,CAAA;IAAA,MAAA;IAAA,MDFY;GAAY,GAAA;IAAA,MAAA;IAAA,MAAA,GAAA;IAAA,UAAA;IAAA,QAAA,CAAA,SAAA,SAAA;GAAA,CAAA;GAAA,iBAAA,GAAA,wBAAA;EAAA,CAAA;CAAA;;AAMX,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAoB,YAAA,CAAA;EAPhC,MAAA;EACU,MAAA,CAAA;GAAA,SAAA,CAAC,YAAY;GAAC,UACb;GAAoB,iBAGb,wBAAwB;GAAM,UAAA;GAAA,QAAA,CAAA,uqFAAA;EAAA,CAAA;;;;;;;;EAG9C,MAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EACA,QAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EAEA,WAAA,CAAA,EAAA,MAAA,OAAA,CAAA;EACA,0BAAA,CAAA,EAAA,MAAA,OAAA,CAAA;;GAEA,MAAA;GAAU,MAAA,CAAA,gBAAgB,EAAE,MAAM,WAAU,CAAE"}