@elementar-rt/components 0.6.56 → 0.6.58

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 (345) hide show
  1. package/README.md +49 -49
  2. package/badge/index.d.ts +18 -0
  3. package/bottom-sheet/index.d.ts +32 -0
  4. package/button-toggle/index.d.ts +33 -0
  5. package/calendar/index.d.ts +44 -0
  6. package/card/index.d.ts +32 -0
  7. package/chips/index.d.ts +23 -0
  8. package/clipboard-copy/index.d.ts +28 -0
  9. package/code-highlighter/index.d.ts +5 -1
  10. package/combobox/index.d.ts +38 -0
  11. package/content-editor/index.d.ts +18 -0
  12. package/dashboard/index.d.ts +1 -1
  13. package/data-grid/index.d.ts +64 -0
  14. package/datepicker/index.d.ts +32 -0
  15. package/dialog/index.d.ts +48 -0
  16. package/digit-roller/index.d.ts +18 -0
  17. package/empty-state/index.d.ts +17 -0
  18. package/expansion-panel/index.d.ts +12 -0
  19. package/fesm2022/elementar-rt-components-action-required.mjs +4 -4
  20. package/fesm2022/elementar-rt-components-action-required.mjs.map +1 -1
  21. package/fesm2022/elementar-rt-components-alert.mjs +18 -17
  22. package/fesm2022/elementar-rt-components-alert.mjs.map +1 -1
  23. package/fesm2022/elementar-rt-components-announcement.mjs +8 -8
  24. package/fesm2022/elementar-rt-components-announcement.mjs.map +1 -1
  25. package/fesm2022/elementar-rt-components-avatar.mjs +22 -22
  26. package/fesm2022/elementar-rt-components-avatar.mjs.map +1 -1
  27. package/fesm2022/elementar-rt-components-badge.mjs +38 -0
  28. package/fesm2022/elementar-rt-components-badge.mjs.map +1 -0
  29. package/fesm2022/elementar-rt-components-block-loader.mjs +7 -7
  30. package/fesm2022/elementar-rt-components-block-loader.mjs.map +1 -1
  31. package/fesm2022/elementar-rt-components-block-state.mjs +24 -24
  32. package/fesm2022/elementar-rt-components-block-state.mjs.map +1 -1
  33. package/fesm2022/elementar-rt-components-bottom-sheet.mjs +71 -0
  34. package/fesm2022/elementar-rt-components-bottom-sheet.mjs.map +1 -0
  35. package/fesm2022/elementar-rt-components-brand-colors.mjs +5 -5
  36. package/fesm2022/elementar-rt-components-brand-colors.mjs.map +1 -1
  37. package/fesm2022/elementar-rt-components-breadcrumbs.mjs +41 -41
  38. package/fesm2022/elementar-rt-components-breadcrumbs.mjs.map +1 -1
  39. package/fesm2022/elementar-rt-components-button-toggle.mjs +89 -0
  40. package/fesm2022/elementar-rt-components-button-toggle.mjs.map +1 -0
  41. package/fesm2022/elementar-rt-components-calendar.mjs +130 -0
  42. package/fesm2022/elementar-rt-components-calendar.mjs.map +1 -0
  43. package/fesm2022/elementar-rt-components-card-overlay.mjs +7 -7
  44. package/fesm2022/elementar-rt-components-card-overlay.mjs.map +1 -1
  45. package/fesm2022/elementar-rt-components-card.mjs +60 -0
  46. package/fesm2022/elementar-rt-components-card.mjs.map +1 -0
  47. package/fesm2022/elementar-rt-components-carousel.mjs +22 -22
  48. package/fesm2022/elementar-rt-components-carousel.mjs.map +1 -1
  49. package/fesm2022/elementar-rt-components-chips.mjs +54 -0
  50. package/fesm2022/elementar-rt-components-chips.mjs.map +1 -0
  51. package/fesm2022/elementar-rt-components-clipboard-copy.mjs +115 -0
  52. package/fesm2022/elementar-rt-components-clipboard-copy.mjs.map +1 -0
  53. package/fesm2022/elementar-rt-components-code-highlighter.mjs +19 -6
  54. package/fesm2022/elementar-rt-components-code-highlighter.mjs.map +1 -1
  55. package/fesm2022/elementar-rt-components-color-picker.mjs +27 -27
  56. package/fesm2022/elementar-rt-components-color-picker.mjs.map +1 -1
  57. package/fesm2022/elementar-rt-components-color-scheme.mjs +10 -10
  58. package/fesm2022/elementar-rt-components-color-scheme.mjs.map +1 -1
  59. package/fesm2022/elementar-rt-components-combobox.mjs +70 -0
  60. package/fesm2022/elementar-rt-components-combobox.mjs.map +1 -0
  61. package/fesm2022/elementar-rt-components-command-bar.mjs +12 -12
  62. package/fesm2022/elementar-rt-components-command-bar.mjs.map +1 -1
  63. package/fesm2022/elementar-rt-components-comment-editor.mjs +86 -84
  64. package/fesm2022/elementar-rt-components-comment-editor.mjs.map +1 -1
  65. package/fesm2022/elementar-rt-components-comparison-slider.mjs +10 -10
  66. package/fesm2022/elementar-rt-components-comparison-slider.mjs.map +1 -1
  67. package/fesm2022/elementar-rt-components-confirm.mjs +7 -7
  68. package/fesm2022/elementar-rt-components-confirm.mjs.map +1 -1
  69. package/fesm2022/elementar-rt-components-content-editor.mjs +121 -0
  70. package/fesm2022/elementar-rt-components-content-editor.mjs.map +1 -0
  71. package/fesm2022/elementar-rt-components-content-fade.mjs +4 -4
  72. package/fesm2022/elementar-rt-components-content-fade.mjs.map +1 -1
  73. package/fesm2022/elementar-rt-components-cookie-popup.mjs +13 -13
  74. package/fesm2022/elementar-rt-components-cookie-popup.mjs.map +1 -1
  75. package/fesm2022/elementar-rt-components-core.mjs +64 -64
  76. package/fesm2022/elementar-rt-components-core.mjs.map +1 -1
  77. package/fesm2022/elementar-rt-components-country-select.mjs +5 -5
  78. package/fesm2022/elementar-rt-components-country-select.mjs.map +1 -1
  79. package/fesm2022/elementar-rt-components-crop.mjs +4 -4
  80. package/fesm2022/elementar-rt-components-crop.mjs.map +1 -1
  81. package/fesm2022/elementar-rt-components-currency-select.mjs +5 -5
  82. package/fesm2022/elementar-rt-components-currency-select.mjs.map +1 -1
  83. package/fesm2022/elementar-rt-components-dashboard.mjs +9 -9
  84. package/fesm2022/elementar-rt-components-dashboard.mjs.map +1 -1
  85. package/fesm2022/elementar-rt-components-data-grid.mjs +120 -0
  86. package/fesm2022/elementar-rt-components-data-grid.mjs.map +1 -0
  87. package/fesm2022/elementar-rt-components-data-view.mjs +17 -17
  88. package/fesm2022/elementar-rt-components-data-view.mjs.map +1 -1
  89. package/fesm2022/elementar-rt-components-date-format-select.mjs +5 -5
  90. package/fesm2022/elementar-rt-components-date-format-select.mjs.map +1 -1
  91. package/fesm2022/elementar-rt-components-datepicker.mjs +81 -0
  92. package/fesm2022/elementar-rt-components-datepicker.mjs.map +1 -0
  93. package/fesm2022/elementar-rt-components-dialog.mjs +97 -0
  94. package/fesm2022/elementar-rt-components-dialog.mjs.map +1 -0
  95. package/fesm2022/elementar-rt-components-digit-roller.mjs +41 -0
  96. package/fesm2022/elementar-rt-components-digit-roller.mjs.map +1 -0
  97. package/fesm2022/elementar-rt-components-divider.mjs +8 -8
  98. package/fesm2022/elementar-rt-components-divider.mjs.map +1 -1
  99. package/fesm2022/elementar-rt-components-drawer.mjs +8 -8
  100. package/fesm2022/elementar-rt-components-drawer.mjs.map +1 -1
  101. package/fesm2022/elementar-rt-components-emoji-picker.mjs +7 -7
  102. package/fesm2022/elementar-rt-components-emoji-picker.mjs.map +1 -1
  103. package/fesm2022/elementar-rt-components-empty-state.mjs +35 -0
  104. package/fesm2022/elementar-rt-components-empty-state.mjs.map +1 -0
  105. package/fesm2022/elementar-rt-components-expand.mjs +4 -4
  106. package/fesm2022/elementar-rt-components-expand.mjs.map +1 -1
  107. package/fesm2022/elementar-rt-components-expansion-panel.mjs +32 -0
  108. package/fesm2022/elementar-rt-components-expansion-panel.mjs.map +1 -0
  109. package/fesm2022/elementar-rt-components-filter-builder.mjs +13 -13
  110. package/fesm2022/elementar-rt-components-filter-builder.mjs.map +1 -1
  111. package/fesm2022/elementar-rt-components-filter-select.mjs +126 -0
  112. package/fesm2022/elementar-rt-components-filter-select.mjs.map +1 -0
  113. package/fesm2022/elementar-rt-components-form-renderer-autocomplete-many-field.component-C2Ai6F2X.mjs +123 -0
  114. package/fesm2022/elementar-rt-components-form-renderer-autocomplete-many-field.component-C2Ai6F2X.mjs.map +1 -0
  115. package/fesm2022/elementar-rt-components-form-renderer-checkbox-field.component-a0XAs0-_.mjs +22 -0
  116. package/fesm2022/elementar-rt-components-form-renderer-checkbox-field.component-a0XAs0-_.mjs.map +1 -0
  117. package/fesm2022/elementar-rt-components-form-renderer-datepicker-field.component-CTVrrf43.mjs +40 -0
  118. package/fesm2022/elementar-rt-components-form-renderer-datepicker-field.component-CTVrrf43.mjs.map +1 -0
  119. package/fesm2022/{elementar-rt-components-form-renderer-divider-content.component-CjlGcU3B.mjs → elementar-rt-components-form-renderer-divider-content.component-CkYa0MOQ.mjs} +5 -5
  120. package/fesm2022/elementar-rt-components-form-renderer-divider-content.component-CkYa0MOQ.mjs.map +1 -0
  121. package/fesm2022/{elementar-rt-components-form-renderer-image-content.component-0pL2Fk0H.mjs → elementar-rt-components-form-renderer-image-content.component-B5uj3hoV.mjs} +5 -5
  122. package/fesm2022/elementar-rt-components-form-renderer-image-content.component-B5uj3hoV.mjs.map +1 -0
  123. package/fesm2022/elementar-rt-components-form-renderer-input-field.component-DnaWJIK9.mjs +33 -0
  124. package/fesm2022/elementar-rt-components-form-renderer-input-field.component-DnaWJIK9.mjs.map +1 -0
  125. package/fesm2022/elementar-rt-components-form-renderer-radio-group-field.component-9BLv1MsP.mjs +38 -0
  126. package/fesm2022/elementar-rt-components-form-renderer-radio-group-field.component-9BLv1MsP.mjs.map +1 -0
  127. package/fesm2022/elementar-rt-components-form-renderer-select-field.component-C97pIEdh.mjs +39 -0
  128. package/fesm2022/elementar-rt-components-form-renderer-select-field.component-C97pIEdh.mjs.map +1 -0
  129. package/fesm2022/{elementar-rt-components-form-renderer-text-content.component-BmFyUG06.mjs → elementar-rt-components-form-renderer-text-content.component-CJxCc5vX.mjs} +5 -5
  130. package/fesm2022/elementar-rt-components-form-renderer-text-content.component-CJxCc5vX.mjs.map +1 -0
  131. package/fesm2022/elementar-rt-components-form-renderer-textarea-field.component-CCtWiJOk.mjs +37 -0
  132. package/fesm2022/elementar-rt-components-form-renderer-textarea-field.component-CCtWiJOk.mjs.map +1 -0
  133. package/fesm2022/elementar-rt-components-form-renderer-timezone-field.component-GvZgdvUX.mjs +35 -0
  134. package/fesm2022/elementar-rt-components-form-renderer-timezone-field.component-GvZgdvUX.mjs.map +1 -0
  135. package/fesm2022/elementar-rt-components-form-renderer-toggle-field.component-DBiIiV-9.mjs +22 -0
  136. package/fesm2022/elementar-rt-components-form-renderer-toggle-field.component-DBiIiV-9.mjs.map +1 -0
  137. package/fesm2022/elementar-rt-components-form-renderer.mjs +29 -29
  138. package/fesm2022/elementar-rt-components-form-renderer.mjs.map +1 -1
  139. package/fesm2022/elementar-rt-components-gauge.mjs +8 -8
  140. package/fesm2022/elementar-rt-components-gauge.mjs.map +1 -1
  141. package/fesm2022/elementar-rt-components-grid.mjs +37 -0
  142. package/fesm2022/elementar-rt-components-grid.mjs.map +1 -0
  143. package/fesm2022/elementar-rt-components-guided-tour.mjs +161 -0
  144. package/fesm2022/elementar-rt-components-guided-tour.mjs.map +1 -0
  145. package/fesm2022/elementar-rt-components-headless-stepper.mjs +72 -0
  146. package/fesm2022/elementar-rt-components-headless-stepper.mjs.map +1 -0
  147. package/fesm2022/elementar-rt-components-icon.mjs +4 -4
  148. package/fesm2022/elementar-rt-components-icon.mjs.map +1 -1
  149. package/fesm2022/elementar-rt-components-image-placeholder.mjs +30 -0
  150. package/fesm2022/elementar-rt-components-image-placeholder.mjs.map +1 -0
  151. package/fesm2022/elementar-rt-components-image-resizer.mjs +10 -10
  152. package/fesm2022/elementar-rt-components-image-resizer.mjs.map +1 -1
  153. package/fesm2022/elementar-rt-components-image-viewer.mjs +19 -19
  154. package/fesm2022/elementar-rt-components-image-viewer.mjs.map +1 -1
  155. package/fesm2022/elementar-rt-components-image-zoom-viewer.mjs +97 -0
  156. package/fesm2022/elementar-rt-components-image-zoom-viewer.mjs.map +1 -0
  157. package/fesm2022/elementar-rt-components-incidents.mjs +49 -49
  158. package/fesm2022/elementar-rt-components-incidents.mjs.map +1 -1
  159. package/fesm2022/elementar-rt-components-inline-text-edit.mjs +4 -4
  160. package/fesm2022/elementar-rt-components-inline-text-edit.mjs.map +1 -1
  161. package/fesm2022/elementar-rt-components-input-mask.mjs +9 -9
  162. package/fesm2022/elementar-rt-components-input-mask.mjs.map +1 -1
  163. package/fesm2022/elementar-rt-components-input-validator.mjs.map +1 -1
  164. package/fesm2022/elementar-rt-components-kanban-board.mjs +7 -7
  165. package/fesm2022/elementar-rt-components-kanban-board.mjs.map +1 -1
  166. package/fesm2022/elementar-rt-components-keyboard.mjs +63 -0
  167. package/fesm2022/elementar-rt-components-keyboard.mjs.map +1 -0
  168. package/fesm2022/elementar-rt-components-layout.mjs +43 -38
  169. package/fesm2022/elementar-rt-components-layout.mjs.map +1 -1
  170. package/fesm2022/elementar-rt-components-list.mjs +43 -0
  171. package/fesm2022/elementar-rt-components-list.mjs.map +1 -0
  172. package/fesm2022/elementar-rt-components-logo.mjs +12 -12
  173. package/fesm2022/elementar-rt-components-logo.mjs.map +1 -1
  174. package/fesm2022/elementar-rt-components-marquee.mjs +7 -7
  175. package/fesm2022/elementar-rt-components-marquee.mjs.map +1 -1
  176. package/fesm2022/elementar-rt-components-menu.mjs +94 -0
  177. package/fesm2022/elementar-rt-components-menu.mjs.map +1 -0
  178. package/fesm2022/elementar-rt-components-micro-chart.mjs +24 -24
  179. package/fesm2022/elementar-rt-components-micro-chart.mjs.map +1 -1
  180. package/fesm2022/elementar-rt-components-multi-select.mjs +66 -0
  181. package/fesm2022/elementar-rt-components-multi-select.mjs.map +1 -0
  182. package/fesm2022/elementar-rt-components-navigation.mjs +39 -39
  183. package/fesm2022/elementar-rt-components-navigation.mjs.map +1 -1
  184. package/fesm2022/elementar-rt-components-notifications.mjs +40 -40
  185. package/fesm2022/elementar-rt-components-notifications.mjs.map +1 -1
  186. package/fesm2022/elementar-rt-components-number-input.mjs +17 -17
  187. package/fesm2022/elementar-rt-components-number-input.mjs.map +1 -1
  188. package/fesm2022/elementar-rt-components-overlay-scrollbar.mjs +4 -4
  189. package/fesm2022/elementar-rt-components-overlay-scrollbar.mjs.map +1 -1
  190. package/fesm2022/elementar-rt-components-overlay.mjs.map +1 -1
  191. package/fesm2022/elementar-rt-components-page-loading-bar.mjs +4 -4
  192. package/fesm2022/elementar-rt-components-page-loading-bar.mjs.map +1 -1
  193. package/fesm2022/elementar-rt-components-paginator.mjs +50 -0
  194. package/fesm2022/elementar-rt-components-paginator.mjs.map +1 -0
  195. package/fesm2022/elementar-rt-components-panel.mjs +24 -24
  196. package/fesm2022/elementar-rt-components-panel.mjs.map +1 -1
  197. package/fesm2022/elementar-rt-components-password-strength.mjs +13 -13
  198. package/fesm2022/elementar-rt-components-password-strength.mjs.map +1 -1
  199. package/fesm2022/elementar-rt-components-phone-input.mjs +11 -11
  200. package/fesm2022/elementar-rt-components-phone-input.mjs.map +1 -1
  201. package/fesm2022/elementar-rt-components-pin-input.mjs +13 -13
  202. package/fesm2022/elementar-rt-components-pin-input.mjs.map +1 -1
  203. package/fesm2022/elementar-rt-components-popover.mjs +10 -10
  204. package/fesm2022/elementar-rt-components-popover.mjs.map +1 -1
  205. package/fesm2022/elementar-rt-components-progress-bar.mjs +32 -0
  206. package/fesm2022/elementar-rt-components-progress-bar.mjs.map +1 -0
  207. package/fesm2022/elementar-rt-components-progress-spinner.mjs +94 -0
  208. package/fesm2022/elementar-rt-components-progress-spinner.mjs.map +1 -0
  209. package/fesm2022/elementar-rt-components-radio-card.mjs +17 -17
  210. package/fesm2022/elementar-rt-components-radio-card.mjs.map +1 -1
  211. package/fesm2022/elementar-rt-components-rail-nav.mjs +12 -12
  212. package/fesm2022/elementar-rt-components-rail-nav.mjs.map +1 -1
  213. package/fesm2022/elementar-rt-components-rating.mjs +84 -0
  214. package/fesm2022/elementar-rt-components-rating.mjs.map +1 -0
  215. package/fesm2022/elementar-rt-components-resizable-container.mjs +4 -4
  216. package/fesm2022/elementar-rt-components-resizable-container.mjs.map +1 -1
  217. package/fesm2022/elementar-rt-components-screen-loader.mjs +4 -4
  218. package/fesm2022/elementar-rt-components-screen-loader.mjs.map +1 -1
  219. package/fesm2022/elementar-rt-components-scroll-spy.mjs +16 -16
  220. package/fesm2022/elementar-rt-components-scroll-spy.mjs.map +1 -1
  221. package/fesm2022/elementar-rt-components-segmented.mjs +15 -12
  222. package/fesm2022/elementar-rt-components-segmented.mjs.map +1 -1
  223. package/fesm2022/elementar-rt-components-side-panel.mjs +8 -8
  224. package/fesm2022/elementar-rt-components-side-panel.mjs.map +1 -1
  225. package/fesm2022/elementar-rt-components-sidebar.mjs +61 -61
  226. package/fesm2022/elementar-rt-components-sidebar.mjs.map +1 -1
  227. package/fesm2022/elementar-rt-components-sidenav.mjs +72 -0
  228. package/fesm2022/elementar-rt-components-sidenav.mjs.map +1 -0
  229. package/fesm2022/elementar-rt-components-signature-pad.mjs +4 -4
  230. package/fesm2022/elementar-rt-components-signature-pad.mjs.map +1 -1
  231. package/fesm2022/elementar-rt-components-skeleton.mjs +16 -16
  232. package/fesm2022/elementar-rt-components-skeleton.mjs.map +1 -1
  233. package/fesm2022/elementar-rt-components-slider.mjs +64 -0
  234. package/fesm2022/elementar-rt-components-slider.mjs.map +1 -0
  235. package/fesm2022/elementar-rt-components-snackbar.mjs +81 -0
  236. package/fesm2022/elementar-rt-components-snackbar.mjs.map +1 -0
  237. package/fesm2022/elementar-rt-components-sort.mjs +69 -0
  238. package/fesm2022/elementar-rt-components-sort.mjs.map +1 -0
  239. package/fesm2022/elementar-rt-components-splash-screen.mjs +15 -7
  240. package/fesm2022/elementar-rt-components-splash-screen.mjs.map +1 -1
  241. package/fesm2022/elementar-rt-components-split-pane.mjs +70 -0
  242. package/fesm2022/elementar-rt-components-split-pane.mjs.map +1 -0
  243. package/fesm2022/elementar-rt-components-stat-card.mjs +27 -0
  244. package/fesm2022/elementar-rt-components-stat-card.mjs.map +1 -0
  245. package/fesm2022/elementar-rt-components-step-tracker.mjs +30 -0
  246. package/fesm2022/elementar-rt-components-step-tracker.mjs.map +1 -0
  247. package/fesm2022/elementar-rt-components-stepper.mjs +6 -6
  248. package/fesm2022/elementar-rt-components-stepper.mjs.map +1 -1
  249. package/fesm2022/elementar-rt-components-suggestions.mjs +18 -18
  250. package/fesm2022/elementar-rt-components-suggestions.mjs.map +1 -1
  251. package/fesm2022/elementar-rt-components-tab-panel.mjs +48 -48
  252. package/fesm2022/elementar-rt-components-tab-panel.mjs.map +1 -1
  253. package/fesm2022/elementar-rt-components-table.mjs +84 -0
  254. package/fesm2022/elementar-rt-components-table.mjs.map +1 -0
  255. package/fesm2022/elementar-rt-components-tabs.mjs +59 -0
  256. package/fesm2022/elementar-rt-components-tabs.mjs.map +1 -0
  257. package/fesm2022/elementar-rt-components-tag.mjs +28 -0
  258. package/fesm2022/elementar-rt-components-tag.mjs.map +1 -0
  259. package/fesm2022/elementar-rt-components-text-editor.mjs +89 -87
  260. package/fesm2022/elementar-rt-components-text-editor.mjs.map +1 -1
  261. package/fesm2022/elementar-rt-components-thumbnail-maker.mjs +7 -7
  262. package/fesm2022/elementar-rt-components-thumbnail-maker.mjs.map +1 -1
  263. package/fesm2022/elementar-rt-components-tiles.mjs +35 -0
  264. package/fesm2022/elementar-rt-components-tiles.mjs.map +1 -0
  265. package/fesm2022/elementar-rt-components-timeline.mjs +39 -39
  266. package/fesm2022/elementar-rt-components-timeline.mjs.map +1 -1
  267. package/fesm2022/elementar-rt-components-timepicker.mjs +75 -0
  268. package/fesm2022/elementar-rt-components-timepicker.mjs.map +1 -0
  269. package/fesm2022/elementar-rt-components-timezone-select.mjs +8 -8
  270. package/fesm2022/elementar-rt-components-timezone-select.mjs.map +1 -1
  271. package/fesm2022/elementar-rt-components-toast.mjs +98 -0
  272. package/fesm2022/elementar-rt-components-toast.mjs.map +1 -0
  273. package/fesm2022/elementar-rt-components-toolbar.mjs +24 -0
  274. package/fesm2022/elementar-rt-components-toolbar.mjs.map +1 -0
  275. package/fesm2022/elementar-rt-components-tooltip.mjs +119 -0
  276. package/fesm2022/elementar-rt-components-tooltip.mjs.map +1 -0
  277. package/fesm2022/elementar-rt-components-tree.mjs +77 -0
  278. package/fesm2022/elementar-rt-components-tree.mjs.map +1 -0
  279. package/fesm2022/elementar-rt-components-upload.mjs +60 -58
  280. package/fesm2022/elementar-rt-components-upload.mjs.map +1 -1
  281. package/fesm2022/elementar-rt-components-video-player.mjs +144 -0
  282. package/fesm2022/elementar-rt-components-video-player.mjs.map +1 -0
  283. package/fesm2022/elementar-rt-components-video-viewer.mjs +98 -0
  284. package/fesm2022/elementar-rt-components-video-viewer.mjs.map +1 -0
  285. package/fesm2022/elementar-rt-components.mjs.map +1 -1
  286. package/filter-select/index.d.ts +40 -0
  287. package/grid/index.d.ts +24 -0
  288. package/guided-tour/index.d.ts +45 -0
  289. package/headless-stepper/index.d.ts +30 -0
  290. package/image-placeholder/index.d.ts +18 -0
  291. package/image-zoom-viewer/index.d.ts +33 -0
  292. package/keyboard/index.d.ts +13 -0
  293. package/layout/index.d.ts +3 -1
  294. package/list/index.d.ts +18 -0
  295. package/menu/index.d.ts +38 -0
  296. package/multi-select/index.d.ts +36 -0
  297. package/package.json +225 -33
  298. package/paginator/index.d.ts +26 -0
  299. package/progress-bar/index.d.ts +17 -0
  300. package/progress-spinner/index.d.ts +19 -0
  301. package/rating/index.d.ts +30 -0
  302. package/sidenav/index.d.ts +31 -0
  303. package/slider/index.d.ts +26 -0
  304. package/snackbar/index.d.ts +36 -0
  305. package/sort/index.d.ts +27 -0
  306. package/split-pane/index.d.ts +25 -0
  307. package/stat-card/index.d.ts +16 -0
  308. package/step-tracker/index.d.ts +21 -0
  309. package/styles/_common.scss +777 -776
  310. package/styles/themes/cyan-orange.scss +41 -41
  311. package/styles/themes/default.scss +5 -5
  312. package/styles/themes/magenta-violet.scss +41 -41
  313. package/styles/themes/rose-red.scss +41 -41
  314. package/table/index.d.ts +44 -0
  315. package/tabs/index.d.ts +26 -0
  316. package/tag/index.d.ts +17 -0
  317. package/tiles/index.d.ts +14 -0
  318. package/timepicker/index.d.ts +29 -0
  319. package/toast/index.d.ts +48 -0
  320. package/toolbar/index.d.ts +10 -0
  321. package/tooltip/index.d.ts +30 -0
  322. package/tree/index.d.ts +42 -0
  323. package/video-player/index.d.ts +49 -0
  324. package/video-viewer/index.d.ts +33 -0
  325. package/fesm2022/elementar-rt-components-form-renderer-autocomplete-many-field.component-AqEghjO_.mjs +0 -123
  326. package/fesm2022/elementar-rt-components-form-renderer-autocomplete-many-field.component-AqEghjO_.mjs.map +0 -1
  327. package/fesm2022/elementar-rt-components-form-renderer-checkbox-field.component-CUKmZGFq.mjs +0 -22
  328. package/fesm2022/elementar-rt-components-form-renderer-checkbox-field.component-CUKmZGFq.mjs.map +0 -1
  329. package/fesm2022/elementar-rt-components-form-renderer-datepicker-field.component-DihIRWMt.mjs +0 -40
  330. package/fesm2022/elementar-rt-components-form-renderer-datepicker-field.component-DihIRWMt.mjs.map +0 -1
  331. package/fesm2022/elementar-rt-components-form-renderer-divider-content.component-CjlGcU3B.mjs.map +0 -1
  332. package/fesm2022/elementar-rt-components-form-renderer-image-content.component-0pL2Fk0H.mjs.map +0 -1
  333. package/fesm2022/elementar-rt-components-form-renderer-input-field.component-X2sKvj6J.mjs +0 -33
  334. package/fesm2022/elementar-rt-components-form-renderer-input-field.component-X2sKvj6J.mjs.map +0 -1
  335. package/fesm2022/elementar-rt-components-form-renderer-radio-group-field.component-DWXZAA3F.mjs +0 -38
  336. package/fesm2022/elementar-rt-components-form-renderer-radio-group-field.component-DWXZAA3F.mjs.map +0 -1
  337. package/fesm2022/elementar-rt-components-form-renderer-select-field.component-Cx9DZoD6.mjs +0 -39
  338. package/fesm2022/elementar-rt-components-form-renderer-select-field.component-Cx9DZoD6.mjs.map +0 -1
  339. package/fesm2022/elementar-rt-components-form-renderer-text-content.component-BmFyUG06.mjs.map +0 -1
  340. package/fesm2022/elementar-rt-components-form-renderer-textarea-field.component-D9KmE049.mjs +0 -37
  341. package/fesm2022/elementar-rt-components-form-renderer-textarea-field.component-D9KmE049.mjs.map +0 -1
  342. package/fesm2022/elementar-rt-components-form-renderer-timezone-field.component-BroP_Q4P.mjs +0 -35
  343. package/fesm2022/elementar-rt-components-form-renderer-timezone-field.component-BroP_Q4P.mjs.map +0 -1
  344. package/fesm2022/elementar-rt-components-form-renderer-toggle-field.component-nGbtVi1_.mjs +0 -22
  345. package/fesm2022/elementar-rt-components-form-renderer-toggle-field.component-nGbtVi1_.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"elementar-rt-components-carousel.mjs","sources":["../../../projects/components/carousel/src/types.ts","../../../projects/components/carousel/src/draggable-carousel.directive.ts","../../../projects/components/carousel/src/carousel/carousel.component.ts","../../../projects/components/carousel/src/carousel/carousel.component.html","../../../projects/components/carousel/src/carousel-card/carousel-card.component.ts","../../../projects/components/carousel/src/carousel-card/carousel-card.component.html","../../../projects/components/carousel/src/carousel-controls.directive.ts","../../../projects/components/carousel/src/carousel-previous.directive.ts","../../../projects/components/carousel/src/carousel-next.directive.ts","../../../projects/components/carousel/elementar-rt-components-carousel.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\n\r\nexport interface CarouselApiInterface {\r\n previous: () => void;\r\n next: () => void;\r\n isPreviousDisabled: () => boolean;\r\n isNextDisabled: () => boolean;\r\n selectedIndex: () => number;\r\n}\r\n\r\nexport interface CarouselInterface {\r\n api: CarouselApiInterface\r\n}\r\n\r\nexport interface CarouselCardInterface {\r\n element: HTMLElement;\r\n}\r\n\r\nexport const CAROUSEL = new InjectionToken('CAROUSEL');\r\nexport const CAROUSEL_CARD = new InjectionToken('CAROUSEL_CARD');\r\n","import {\r\n Directive,\r\n ElementRef,\r\n Renderer2,\r\n OnInit,\r\n OnDestroy,\r\n NgZone,\r\n AfterContentInit,\r\n signal,\r\n input,\r\n inject,\r\n output\r\n} from '@angular/core';\r\n\r\nfunction easeOutQuad(t: number): number {\r\n return t * (2 - t);\r\n}\r\n\r\n@Directive({\r\n selector: '[emrDraggableCarousel]',\r\n standalone: true,\r\n host: {\r\n '(scroll)': 'onScroll($event)',\r\n '(mousedown)': 'onMouseDown($event)',\r\n '(mouseleave)': 'onMouseLeaveElement($event)',\r\n '(document:mousemove)': 'onMouseMove($event)',\r\n '(document:mouseup)': 'onMouseUpOrLeave($event)',\r\n '(document:mouseleave)': 'onMouseUpOrLeave($event)',\r\n '[class.dragging-active]': 'isDragging()'\r\n }\r\n})\r\nexport class DraggableCarouselDirective implements OnInit, AfterContentInit, OnDestroy {\r\n cardSelector = input<string>('.emr-carousel-card');\r\n snapToCenter = input<boolean>(true);\r\n snapDebounceTime = input<number>(50);\r\n snapDuration = input<number>(300);\r\n resistanceFactor = input<number>(0.5);\r\n velocityThreshold = input<number>(0.5);\r\n visibilityDebounceTime = input<number>(100);\r\n\r\n indexChange = output<number>();\r\n\r\n isDragging = signal(false);\r\n private startX = signal(0);\r\n private scrollLeftStart = signal(0);\r\n private currentTranslateX = signal(0);\r\n private lastMoveX = signal<number | null>(null);\r\n private lastMoveTime = signal<number | null>(null);\r\n private currentVelocityX = signal(0);\r\n private lastEmittedIndex = signal<number | null>(null);\r\n\r\n private snapTimeoutId: ReturnType<typeof setTimeout> | null = null;\r\n private scrollAnimationId: number | null = null;\r\n private transformAnimationId: number | null = null;\r\n private visibilityDebounceTimeoutId: ReturnType<typeof setTimeout> | null = null;\r\n\r\n private el = inject(ElementRef<HTMLElement>);\r\n private renderer = inject(Renderer2);\r\n private zone = inject(NgZone);\r\n\r\n private hostElement!: HTMLElement;\r\n private cards: HTMLElement[] = [];\r\n\r\n constructor() {\r\n // Effect remains the same\r\n }\r\n\r\n ngOnInit(): void {\r\n this.hostElement = this.el.nativeElement;\r\n this.renderer.setStyle(this.hostElement, 'cursor', 'grab');\r\n this.hostElement.style.scrollBehavior = 'auto';\r\n }\r\n\r\n ngAfterContentInit(): void { // <<< Renamed from ngAfterViewInit\r\n this.cards = Array.from(this.hostElement.querySelectorAll<HTMLElement>(this.cardSelector()));\r\n\r\n // Initial state calculation after content is initialized and layout is stable\r\n setTimeout(() => {\r\n const actualInitialIndex = this.findCurrentCenterIndex();\r\n this.emitActiveIndex(actualInitialIndex);\r\n this.updateCardVisibilityClasses();\r\n }, 0);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.clearSnapTimeout();\r\n this.cancelScrollAnimation();\r\n this.cancelTransformAnimation();\r\n clearTimeout(this.visibilityDebounceTimeoutId as any);\r\n }\r\n\r\n onScroll(event: Event): void {\r\n if (this.isDragging() || this.scrollAnimationId !== null || this.transformAnimationId !== null) {\r\n return;\r\n }\r\n\r\n if (this.visibilityDebounceTimeoutId !== null) {\r\n clearTimeout(this.visibilityDebounceTimeoutId);\r\n }\r\n this.visibilityDebounceTimeoutId = setTimeout(() => {\r\n this.updateCardVisibilityClasses();\r\n const currentIndex = this.findCurrentCenterIndex();\r\n this.emitActiveIndex(currentIndex);\r\n this.visibilityDebounceTimeoutId = null;\r\n }, this.visibilityDebounceTime());\r\n }\r\n\r\n onMouseDown(event: MouseEvent): void {\r\n clearTimeout(this.visibilityDebounceTimeoutId as any);\r\n this.clearSnapTimeout();\r\n this.cancelScrollAnimation();\r\n this.cancelTransformAnimation();\r\n\r\n if (this.currentTranslateX() !== 0) {\r\n this.currentTranslateX.set(0);\r\n this.renderer.setStyle(this.hostElement, 'transform', '');\r\n }\r\n this.hostElement.style.scrollBehavior = 'auto';\r\n\r\n if (event.button !== 0) return;\r\n\r\n this.isDragging.set(true);\r\n this.startX.set(event.pageX - this.hostElement.offsetLeft);\r\n this.scrollLeftStart.set(this.hostElement.scrollLeft);\r\n\r\n this.lastMoveX.set(event.pageX);\r\n this.lastMoveTime.set(event.timeStamp);\r\n this.currentVelocityX.set(0);\r\n\r\n this.renderer.setStyle(this.hostElement, 'cursor', 'grabbing');\r\n event.preventDefault();\r\n }\r\n\r\n onMouseMove(event: MouseEvent): void {\r\n if (!this.isDragging()) return;\r\n event.preventDefault();\r\n\r\n const currentX = event.pageX;\r\n const currentTime = event.timeStamp;\r\n const lastMoveTime = this.lastMoveTime();\r\n const lastMoveX = this.lastMoveX();\r\n\r\n if (lastMoveTime !== null && lastMoveX !== null && currentTime > lastMoveTime) {\r\n const deltaX = currentX - lastMoveX;\r\n const deltaTime = currentTime - lastMoveTime;\r\n if (deltaTime > 0) {\r\n this.currentVelocityX.set(-deltaX / deltaTime);\r\n }\r\n }\r\n this.lastMoveX.set(currentX);\r\n this.lastMoveTime.set(currentTime);\r\n\r\n const dragDeltaX = currentX - (this.startX() + this.hostElement.offsetLeft);\r\n const intendedScrollLeft = this.scrollLeftStart() - dragDeltaX;\r\n const maxScrollLeft = this.hostElement.scrollWidth - this.hostElement.clientWidth;\r\n let targetScrollLeft = intendedScrollLeft;\r\n let translateX = 0;\r\n\r\n if (intendedScrollLeft < 0) {\r\n targetScrollLeft = 0;\r\n const overpull = -intendedScrollLeft;\r\n translateX = Math.min(overpull * this.resistanceFactor(), this.hostElement.clientWidth * 0.4);\r\n } else if (intendedScrollLeft > maxScrollLeft) {\r\n targetScrollLeft = maxScrollLeft;\r\n const overpull = intendedScrollLeft - maxScrollLeft;\r\n translateX = -Math.min(overpull * this.resistanceFactor(), this.hostElement.clientWidth * 0.4);\r\n }\r\n\r\n if (this.hostElement.scrollLeft !== targetScrollLeft) {\r\n this.hostElement.scrollLeft = targetScrollLeft;\r\n }\r\n\r\n if (this.currentTranslateX() !== translateX) {\r\n this.currentTranslateX.set(translateX);\r\n if (Math.abs(translateX) > 0.1) {\r\n this.renderer.setStyle(this.hostElement, 'transform', `translateX(${translateX}px)`);\r\n } else {\r\n this.currentTranslateX.set(0);\r\n this.renderer.setStyle(this.hostElement, 'transform', '');\r\n }\r\n }\r\n }\r\n\r\n onMouseUpOrLeave(event: MouseEvent): void {\r\n if (!this.isDragging()) return;\r\n this.stopDragging();\r\n }\r\n\r\n onMouseLeaveElement(event: MouseEvent): void {\r\n if (!this.isDragging()) {\r\n this.renderer.setStyle(this.hostElement, 'cursor', 'grab');\r\n }\r\n }\r\n\r\n private stopDragging(): void {\r\n if (!this.isDragging()) return;\r\n\r\n this.isDragging.set(false);\r\n this.renderer.setStyle(this.hostElement, 'cursor', 'grab');\r\n this.clearSnapTimeout();\r\n\r\n const wasPulled = Math.abs(this.currentTranslateX()) > 0.1;\r\n\r\n if (wasPulled) {\r\n this.snapTimeoutId = setTimeout(() => {\r\n this.animateTransformReset();\r\n this.snapTimeoutId = null;\r\n }, this.snapDebounceTime() / 2);\r\n } else if (this.snapToCenter()) {\r\n this.snapTimeoutId = setTimeout(() => {\r\n this.initiateSnap();\r\n this.snapTimeoutId = null;\r\n }, this.snapDebounceTime());\r\n } else {\r\n this.updateCardVisibilityClasses();\r\n const currentIndex = this.findCurrentCenterIndex();\r\n this.emitActiveIndex(currentIndex);\r\n }\r\n }\r\n\r\n private initiateSnap(): void {\r\n this.cards = Array.from(this.hostElement.querySelectorAll<HTMLElement>(this.cardSelector()));\r\n if (!this.cards.length) return;\r\n\r\n let targetCardIndex = -1;\r\n const currentScroll = this.hostElement.scrollLeft;\r\n const containerCenter = currentScroll + this.hostElement.clientWidth / 2;\r\n\r\n let currentNearestCardIndex = this.findNearestCardIndex(this.cards, containerCenter);\r\n if (currentNearestCardIndex < 0) return;\r\n\r\n const absVelocity = Math.abs(this.currentVelocityX());\r\n const threshold = this.velocityThreshold();\r\n\r\n if (absVelocity > threshold) {\r\n if (this.currentVelocityX() < 0) {\r\n targetCardIndex = currentNearestCardIndex - 1;\r\n } else {\r\n targetCardIndex = currentNearestCardIndex + 1;\r\n }\r\n targetCardIndex = Math.max(0, Math.min(targetCardIndex, this.cards.length - 1));\r\n } else {\r\n targetCardIndex = currentNearestCardIndex;\r\n }\r\n\r\n if (targetCardIndex >= 0 && targetCardIndex < this.cards.length) {\r\n this.scrollToCard(targetCardIndex, false);\r\n } else {\r\n this.updateCardVisibilityClasses();\r\n }\r\n }\r\n\r\n private scrollToCard(index: number, immediate: boolean = false): void {\r\n if (index < 0 || index >= this.cards.length) {\r\n return;\r\n }\r\n const targetCard = this.cards[index];\r\n if (!targetCard) return;\r\n\r\n const container = this.hostElement;\r\n const containerWidth = container.clientWidth;\r\n const targetCardLeft = targetCard.offsetLeft;\r\n const targetCardWidth = targetCard.offsetWidth;\r\n let targetScrollLeft = targetCardLeft + targetCardWidth / 2 - containerWidth / 2;\r\n const maxScrollLeft = container.scrollWidth - containerWidth;\r\n targetScrollLeft = Math.max(0, Math.min(targetScrollLeft, maxScrollLeft));\r\n\r\n this.cancelScrollAnimation();\r\n\r\n if (immediate) {\r\n container.scrollLeft = targetScrollLeft;\r\n this.updateCardVisibilityClasses();\r\n this.emitActiveIndex(index);\r\n } else {\r\n this.animateScroll(targetScrollLeft);\r\n }\r\n }\r\n\r\n private findNearestCardIndex(cards: HTMLElement[], position: number): number {\r\n let nearestIndex = -1;\r\n let minDistance = Infinity;\r\n cards.forEach((card, index) => {\r\n if (card instanceof HTMLElement) {\r\n const cardLeft = card.offsetLeft;\r\n const cardWidth = card.offsetWidth;\r\n const cardCenter = cardLeft + cardWidth / 2;\r\n const distance = Math.abs(cardCenter - position);\r\n if (distance < minDistance) {\r\n minDistance = distance;\r\n nearestIndex = index;\r\n }\r\n }\r\n });\r\n return nearestIndex;\r\n }\r\n\r\n private animateTransformReset(): void {\r\n this.cancelTransformAnimation();\r\n const startTranslateX = this.currentTranslateX();\r\n const distance = 0 - startTranslateX;\r\n if (Math.abs(distance) < 1) {\r\n if (startTranslateX !== 0) {\r\n this.currentTranslateX.set(0);\r\n this.renderer.setStyle(this.hostElement, 'transform', '');\r\n const finalIndex = this.findCurrentCenterIndex();\r\n this.emitActiveIndex(finalIndex);\r\n this.updateCardVisibilityClasses();\r\n }\r\n return;\r\n }\r\n const duration = this.snapDuration();\r\n let startTime: number | null = null;\r\n const step = (timestamp: number) => {\r\n if (startTime === null) startTime = timestamp;\r\n const elapsed = timestamp - startTime;\r\n const progress = Math.min(1, elapsed / duration);\r\n const easedProgress = easeOutQuad(progress);\r\n const newTranslateX = startTranslateX + distance * easedProgress;\r\n this.currentTranslateX.set(newTranslateX);\r\n this.renderer.setStyle(this.hostElement, 'transform', `translateX(${newTranslateX}px)`);\r\n if (progress < 1) {\r\n this.transformAnimationId = requestAnimationFrame(step);\r\n } else {\r\n this.currentTranslateX.set(0);\r\n this.renderer.setStyle(this.hostElement, 'transform', '');\r\n this.transformAnimationId = null;\r\n const finalIndex = this.findCurrentCenterIndex();\r\n this.emitActiveIndex(finalIndex);\r\n this.updateCardVisibilityClasses();\r\n }\r\n };\r\n this.zone.runOutsideAngular(() => {\r\n this.transformAnimationId = requestAnimationFrame(step);\r\n });\r\n }\r\n\r\n private animateScroll(targetScrollLeft: number): void {\r\n this.cancelScrollAnimation();\r\n const container = this.hostElement;\r\n const startScrollLeft = container.scrollLeft;\r\n const distance = targetScrollLeft - startScrollLeft;\r\n if (Math.abs(distance) < 1) {\r\n const finalIndex = this.findCurrentCenterIndex();\r\n this.emitActiveIndex(finalIndex);\r\n this.updateCardVisibilityClasses();\r\n return;\r\n }\r\n const duration = this.snapDuration();\r\n let startTime: number | null = null;\r\n const step = (timestamp: number) => {\r\n if (startTime === null) startTime = timestamp;\r\n const elapsed = timestamp - startTime;\r\n const progress = Math.min(1, elapsed / duration);\r\n const easedProgress = easeOutQuad(progress);\r\n container.scrollLeft = startScrollLeft + distance * easedProgress;\r\n if (progress < 1) {\r\n this.scrollAnimationId = requestAnimationFrame(step);\r\n } else {\r\n container.scrollLeft = targetScrollLeft;\r\n this.scrollAnimationId = null;\r\n const finalIndex = this.findCurrentCenterIndex();\r\n this.emitActiveIndex(finalIndex);\r\n this.updateCardVisibilityClasses();\r\n }\r\n };\r\n this.zone.runOutsideAngular(() => {\r\n this.scrollAnimationId = requestAnimationFrame(step);\r\n });\r\n }\r\n\r\n private findCurrentCenterIndex(): number {\r\n this.cards = Array.from(this.hostElement.querySelectorAll<HTMLElement>(this.cardSelector()));\r\n if (!this.cards.length) return -1;\r\n const currentScroll = this.hostElement.scrollLeft;\r\n const containerCenter = currentScroll + this.hostElement.clientWidth / 2;\r\n return this.findNearestCardIndex(this.cards, containerCenter);\r\n }\r\n\r\n private emitActiveIndex(index: number): void {\r\n if (index >= 0 && index !== this.lastEmittedIndex()) {\r\n this.lastEmittedIndex.set(index);\r\n this.zone.run(() => {\r\n this.indexChange.emit(index);\r\n });\r\n }\r\n }\r\n\r\n private updateCardVisibilityClasses(): void {\r\n this.cards = Array.from(this.hostElement.querySelectorAll<HTMLElement>(this.cardSelector()));\r\n if (!this.cards.length || !this.hostElement.clientWidth) return;\r\n\r\n const viewportStart = this.hostElement.scrollLeft;\r\n const viewportWidth = this.hostElement.clientWidth;\r\n const viewportEnd = viewportStart + viewportWidth;\r\n const tolerance = 1;\r\n\r\n this.cards.forEach(card => {\r\n if (card instanceof HTMLElement) {\r\n const cardStart = card.offsetLeft;\r\n const cardEnd = cardStart + card.offsetWidth;\r\n const isSpanned = cardStart >= viewportStart - tolerance && cardEnd <= viewportEnd + tolerance;\r\n const isInView = cardEnd > viewportStart + tolerance && cardStart < viewportEnd - tolerance;\r\n\r\n if (isSpanned) {\r\n this.renderer.addClass(card, 'is-spanned');\r\n } else {\r\n this.renderer.removeClass(card, 'is-spanned');\r\n }\r\n\r\n if (isInView) {\r\n this.renderer.addClass(card, 'is-in-view');\r\n } else {\r\n this.renderer.removeClass(card, 'is-in-view');\r\n }\r\n }\r\n });\r\n }\r\n\r\n private cancelScrollAnimation(): void {\r\n if (this.scrollAnimationId !== null) {\r\n cancelAnimationFrame(this.scrollAnimationId);\r\n this.scrollAnimationId = null;\r\n }\r\n }\r\n\r\n private cancelTransformAnimation(): void {\r\n if (this.transformAnimationId !== null) {\r\n cancelAnimationFrame(this.transformAnimationId);\r\n this.transformAnimationId = null;\r\n }\r\n }\r\n\r\n private clearSnapTimeout(): void {\r\n if (this.snapTimeoutId !== null) {\r\n clearTimeout(this.snapTimeoutId);\r\n this.snapTimeoutId = null;\r\n }\r\n }\r\n}\r\n","import {\r\n booleanAttribute,\r\n Component,\r\n contentChildren,\r\n ElementRef, input,\r\n output, signal,\r\n viewChild\r\n} from '@angular/core';\r\nimport { CAROUSEL, CAROUSEL_CARD, CarouselApiInterface, CarouselCardInterface } from '../types';\r\nimport { DraggableCarouselDirective } from '../draggable-carousel.directive';\r\n\r\n@Component({\r\n selector: 'emr-carousel',\r\n exportAs: 'emrCarousel',\r\n providers: [\r\n {\r\n provide: CAROUSEL,\r\n useExisting: CarouselComponent\r\n }\r\n ],\r\n templateUrl: './carousel.component.html',\r\n styleUrl: './carousel.component.scss',\r\n hostDirectives: [],\r\n imports: [\r\n DraggableCarouselDirective\r\n ],\r\n host: {\r\n 'class': 'emr-carousel',\r\n '[class.fade]': 'fade()',\r\n }\r\n})\r\nexport class CarouselComponent {\r\n private _content = viewChild.required<ElementRef>('content');\r\n private _cards = contentChildren<CarouselCardInterface>(CAROUSEL_CARD);\r\n\r\n fade = input(false, {\r\n transform: booleanAttribute\r\n });\r\n snapToCenter = input<boolean>(true);\r\n snapDebounceTime = input<number>(50);\r\n snapDuration = input<number>(300);\r\n resistanceFactor = input<number>(0.5);\r\n velocityThreshold = input<number>(0.5);\r\n visibilityDebounceTime = input<number>(100);\r\n\r\n readonly indexChange = output<number>();\r\n\r\n protected _index = signal(0);\r\n\r\n get api(): CarouselApiInterface {\r\n return {\r\n isNextDisabled: () => this._isNextDisabled,\r\n isPreviousDisabled: () => this._isPreviousDisabled,\r\n previous: () => this._previous(),\r\n next: () => this._next(),\r\n selectedIndex: () => this._index()\r\n }\r\n }\r\n\r\n protected onIndexChanged(index: number): void {\r\n if (this._index() === index) {\r\n return;\r\n }\r\n\r\n this._index.set(index);\r\n this.indexChange.emit(index);\r\n }\r\n\r\n private _previous(): void {\r\n const contentElement = this._content()?.nativeElement as HTMLElement;\r\n\r\n for (let index = this._cards().length - 1; index >= 0; index--) {\r\n if (index >= this._index()) {\r\n continue;\r\n }\r\n\r\n const card = this._cards().at(index) as CarouselCardInterface;\r\n\r\n if (!this._visibleInParentViewport(contentElement, card.element)) {\r\n this._scrollToCard(card);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n private _next(): void {\r\n const contentElement = this._content().nativeElement as HTMLElement;\r\n const notVisibleCard = this._cards().find(\r\n (card: CarouselCardInterface, index: number) =>\r\n !this._visibleInParentViewport(contentElement, card.element) && index > this._index()\r\n );\r\n\r\n if (notVisibleCard) {\r\n this._scrollToCard(notVisibleCard);\r\n }\r\n }\r\n\r\n private _scrollToCard(notVisibleCard: CarouselCardInterface): void {\r\n this._index.set(this._cards().findIndex(card => card === notVisibleCard));\r\n this.indexChange.emit(this._index());\r\n notVisibleCard.element.scrollIntoView({\r\n block: 'nearest',\r\n behavior: 'smooth',\r\n inline: 'center'\r\n });\r\n }\r\n\r\n private _visibleInParentViewport = (parent: HTMLElement, el: HTMLElement) => {\r\n const parentRect = parent.getBoundingClientRect();\r\n const elementRect = el.getBoundingClientRect();\r\n\r\n return (\r\n elementRect.right <= parentRect.right &&\r\n elementRect.left >= parentRect.left\r\n );\r\n }\r\n\r\n private get _isPreviousDisabled(): boolean {\r\n return this._index() === 0;\r\n }\r\n\r\n private get _isNextDisabled(): boolean {\r\n return this._index() === this._cards().length - 1;\r\n }\r\n}\r\n","<div #content class=\"content\"\r\n emrDraggableCarousel\r\n [snapToCenter]=\"snapToCenter()\"\r\n [snapDebounceTime]=\"snapDebounceTime()\"\r\n [snapDuration]=\"snapDuration()\"\r\n [resistanceFactor]=\"resistanceFactor()\"\r\n [velocityThreshold]=\"velocityThreshold()\"\r\n [visibilityDebounceTime]=\"visibilityDebounceTime()\"\r\n (indexChange)=\"onIndexChanged($event)\">\r\n <ng-content select=\"emr-carousel-card,[emr-carousel-card]\"></ng-content>\r\n</div>\r\n<div class=\"controls\">\r\n <ng-content select=\"[emrCarouselControls]\"></ng-content>\r\n</div>\r\n","import { Component, ElementRef, inject } from '@angular/core';\r\nimport { CAROUSEL_CARD } from '../types';\r\n\r\n@Component({\r\n selector: 'emr-carousel-card,[emr-carousel-card]',\r\n exportAs: 'emrCarouselCard',\r\n imports: [],\r\n providers: [\r\n {\r\n provide: CAROUSEL_CARD,\r\n useExisting: CarouselCardComponent\r\n }\r\n ],\r\n templateUrl: './carousel-card.component.html',\r\n styleUrl: './carousel-card.component.scss',\r\n host: {\r\n 'class': 'emr-carousel-card',\r\n }\r\n})\r\nexport class CarouselCardComponent {\r\n private _elementRef = inject(ElementRef);\r\n\r\n get element(): HTMLElement {\r\n return this._elementRef.nativeElement;\r\n }\r\n}\r\n","<ng-content></ng-content>\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[emrCarouselControls]',\r\n standalone: true,\r\n host: {\r\n 'class': 'emr-carousel-controls',\r\n }\r\n})\r\nexport class CarouselControlsDirective {\r\n\r\n}\r\n","import { Directive, inject, input, OnInit } from '@angular/core';\r\nimport { CAROUSEL, CarouselInterface } from './types';\r\n\r\n@Directive({\r\n selector: '[emrCarouselPrevious]',\r\n exportAs: 'emrCarouselPrevious',\r\n standalone: true,\r\n host: {\r\n 'class': 'emr-carousel-previous',\r\n '[attr.disabled]': '_carousel?.api?.isPreviousDisabled() ? true : null',\r\n '(click)': '_handleClick()'\r\n }\r\n})\r\nexport class CarouselPreviousDirective implements OnInit {\r\n protected _carousel = inject<CarouselInterface>(CAROUSEL, {\r\n optional: true\r\n });\r\n\r\n carousel = input<CarouselInterface | null>(null);\r\n\r\n ngOnInit(): void {\r\n if (this.carousel() && !this._carousel) {\r\n this._carousel = this.carousel();\r\n }\r\n }\r\n\r\n _handleClick(): void {\r\n this._carousel?.api.previous();\r\n }\r\n}\r\n","import { Directive, inject, input, OnInit } from '@angular/core';\r\nimport { CAROUSEL, CarouselInterface } from './types';\r\n\r\n@Directive({\r\n selector: '[emrCarouselNext]',\r\n exportAs: 'emrCarouselNext',\r\n standalone: true,\r\n host: {\r\n 'class': 'emr-carousel-next',\r\n '[attr.disabled]': '_carousel?.api?.isNextDisabled() ? true : null',\r\n '(click)': '_handleClick()'\r\n }\r\n})\r\nexport class CarouselNextDirective implements OnInit {\r\n protected _carousel = inject<CarouselInterface>(CAROUSEL, {\r\n optional: true\r\n });\r\n\r\n carousel = input<CarouselInterface | null>(null);\r\n\r\n ngOnInit(): void {\r\n if (this.carousel() && !this._carousel) {\r\n this._carousel = this.carousel();\r\n }\r\n }\r\n\r\n _handleClick(): void {\r\n this._carousel?.api.next();\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"elementar-rt-components-carousel.mjs","sources":["../../../projects/components/carousel/src/types.ts","../../../projects/components/carousel/src/draggable-carousel.directive.ts","../../../projects/components/carousel/src/carousel/carousel.component.ts","../../../projects/components/carousel/src/carousel/carousel.component.html","../../../projects/components/carousel/src/carousel-card/carousel-card.component.ts","../../../projects/components/carousel/src/carousel-card/carousel-card.component.html","../../../projects/components/carousel/src/carousel-controls.directive.ts","../../../projects/components/carousel/src/carousel-previous.directive.ts","../../../projects/components/carousel/src/carousel-next.directive.ts","../../../projects/components/carousel/elementar-rt-components-carousel.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport interface CarouselApiInterface {\n previous: () => void;\n next: () => void;\n isPreviousDisabled: () => boolean;\n isNextDisabled: () => boolean;\n selectedIndex: () => number;\n}\n\nexport interface CarouselInterface {\n api: CarouselApiInterface\n}\n\nexport interface CarouselCardInterface {\n element: HTMLElement;\n}\n\nexport const CAROUSEL = new InjectionToken('CAROUSEL');\nexport const CAROUSEL_CARD = new InjectionToken('CAROUSEL_CARD');\n","import {\n Directive,\n ElementRef,\n Renderer2,\n OnInit,\n OnDestroy,\n NgZone,\n AfterContentInit,\n signal,\n input,\n inject,\n output\n} from '@angular/core';\n\nfunction easeOutQuad(t: number): number {\n return t * (2 - t);\n}\n\n@Directive({\n selector: '[emrDraggableCarousel]',\n standalone: true,\n host: {\n '(scroll)': 'onScroll($event)',\n '(mousedown)': 'onMouseDown($event)',\n '(mouseleave)': 'onMouseLeaveElement($event)',\n '(document:mousemove)': 'onMouseMove($event)',\n '(document:mouseup)': 'onMouseUpOrLeave($event)',\n '(document:mouseleave)': 'onMouseUpOrLeave($event)',\n '[class.dragging-active]': 'isDragging()'\n }\n})\nexport class DraggableCarouselDirective implements OnInit, AfterContentInit, OnDestroy {\n cardSelector = input<string>('.emr-carousel-card');\n snapToCenter = input<boolean>(true);\n snapDebounceTime = input<number>(50);\n snapDuration = input<number>(300);\n resistanceFactor = input<number>(0.5);\n velocityThreshold = input<number>(0.5);\n visibilityDebounceTime = input<number>(100);\n\n indexChange = output<number>();\n\n isDragging = signal(false);\n private startX = signal(0);\n private scrollLeftStart = signal(0);\n private currentTranslateX = signal(0);\n private lastMoveX = signal<number | null>(null);\n private lastMoveTime = signal<number | null>(null);\n private currentVelocityX = signal(0);\n private lastEmittedIndex = signal<number | null>(null);\n\n private snapTimeoutId: ReturnType<typeof setTimeout> | null = null;\n private scrollAnimationId: number | null = null;\n private transformAnimationId: number | null = null;\n private visibilityDebounceTimeoutId: ReturnType<typeof setTimeout> | null = null;\n\n private el = inject(ElementRef<HTMLElement>);\n private renderer = inject(Renderer2);\n private zone = inject(NgZone);\n\n private hostElement!: HTMLElement;\n private cards: HTMLElement[] = [];\n\n constructor() {\n // Effect remains the same\n }\n\n ngOnInit(): void {\n this.hostElement = this.el.nativeElement;\n this.renderer.setStyle(this.hostElement, 'cursor', 'grab');\n this.hostElement.style.scrollBehavior = 'auto';\n }\n\n ngAfterContentInit(): void { // <<< Renamed from ngAfterViewInit\n this.cards = Array.from(this.hostElement.querySelectorAll<HTMLElement>(this.cardSelector()));\n\n // Initial state calculation after content is initialized and layout is stable\n setTimeout(() => {\n const actualInitialIndex = this.findCurrentCenterIndex();\n this.emitActiveIndex(actualInitialIndex);\n this.updateCardVisibilityClasses();\n }, 0);\n }\n\n ngOnDestroy(): void {\n this.clearSnapTimeout();\n this.cancelScrollAnimation();\n this.cancelTransformAnimation();\n clearTimeout(this.visibilityDebounceTimeoutId as any);\n }\n\n onScroll(event: Event): void {\n if (this.isDragging() || this.scrollAnimationId !== null || this.transformAnimationId !== null) {\n return;\n }\n\n if (this.visibilityDebounceTimeoutId !== null) {\n clearTimeout(this.visibilityDebounceTimeoutId);\n }\n this.visibilityDebounceTimeoutId = setTimeout(() => {\n this.updateCardVisibilityClasses();\n const currentIndex = this.findCurrentCenterIndex();\n this.emitActiveIndex(currentIndex);\n this.visibilityDebounceTimeoutId = null;\n }, this.visibilityDebounceTime());\n }\n\n onMouseDown(event: MouseEvent): void {\n clearTimeout(this.visibilityDebounceTimeoutId as any);\n this.clearSnapTimeout();\n this.cancelScrollAnimation();\n this.cancelTransformAnimation();\n\n if (this.currentTranslateX() !== 0) {\n this.currentTranslateX.set(0);\n this.renderer.setStyle(this.hostElement, 'transform', '');\n }\n this.hostElement.style.scrollBehavior = 'auto';\n\n if (event.button !== 0) return;\n\n this.isDragging.set(true);\n this.startX.set(event.pageX - this.hostElement.offsetLeft);\n this.scrollLeftStart.set(this.hostElement.scrollLeft);\n\n this.lastMoveX.set(event.pageX);\n this.lastMoveTime.set(event.timeStamp);\n this.currentVelocityX.set(0);\n\n this.renderer.setStyle(this.hostElement, 'cursor', 'grabbing');\n event.preventDefault();\n }\n\n onMouseMove(event: MouseEvent): void {\n if (!this.isDragging()) return;\n event.preventDefault();\n\n const currentX = event.pageX;\n const currentTime = event.timeStamp;\n const lastMoveTime = this.lastMoveTime();\n const lastMoveX = this.lastMoveX();\n\n if (lastMoveTime !== null && lastMoveX !== null && currentTime > lastMoveTime) {\n const deltaX = currentX - lastMoveX;\n const deltaTime = currentTime - lastMoveTime;\n if (deltaTime > 0) {\n this.currentVelocityX.set(-deltaX / deltaTime);\n }\n }\n this.lastMoveX.set(currentX);\n this.lastMoveTime.set(currentTime);\n\n const dragDeltaX = currentX - (this.startX() + this.hostElement.offsetLeft);\n const intendedScrollLeft = this.scrollLeftStart() - dragDeltaX;\n const maxScrollLeft = this.hostElement.scrollWidth - this.hostElement.clientWidth;\n let targetScrollLeft = intendedScrollLeft;\n let translateX = 0;\n\n if (intendedScrollLeft < 0) {\n targetScrollLeft = 0;\n const overpull = -intendedScrollLeft;\n translateX = Math.min(overpull * this.resistanceFactor(), this.hostElement.clientWidth * 0.4);\n } else if (intendedScrollLeft > maxScrollLeft) {\n targetScrollLeft = maxScrollLeft;\n const overpull = intendedScrollLeft - maxScrollLeft;\n translateX = -Math.min(overpull * this.resistanceFactor(), this.hostElement.clientWidth * 0.4);\n }\n\n if (this.hostElement.scrollLeft !== targetScrollLeft) {\n this.hostElement.scrollLeft = targetScrollLeft;\n }\n\n if (this.currentTranslateX() !== translateX) {\n this.currentTranslateX.set(translateX);\n if (Math.abs(translateX) > 0.1) {\n this.renderer.setStyle(this.hostElement, 'transform', `translateX(${translateX}px)`);\n } else {\n this.currentTranslateX.set(0);\n this.renderer.setStyle(this.hostElement, 'transform', '');\n }\n }\n }\n\n onMouseUpOrLeave(event: MouseEvent): void {\n if (!this.isDragging()) return;\n this.stopDragging();\n }\n\n onMouseLeaveElement(event: MouseEvent): void {\n if (!this.isDragging()) {\n this.renderer.setStyle(this.hostElement, 'cursor', 'grab');\n }\n }\n\n private stopDragging(): void {\n if (!this.isDragging()) return;\n\n this.isDragging.set(false);\n this.renderer.setStyle(this.hostElement, 'cursor', 'grab');\n this.clearSnapTimeout();\n\n const wasPulled = Math.abs(this.currentTranslateX()) > 0.1;\n\n if (wasPulled) {\n this.snapTimeoutId = setTimeout(() => {\n this.animateTransformReset();\n this.snapTimeoutId = null;\n }, this.snapDebounceTime() / 2);\n } else if (this.snapToCenter()) {\n this.snapTimeoutId = setTimeout(() => {\n this.initiateSnap();\n this.snapTimeoutId = null;\n }, this.snapDebounceTime());\n } else {\n this.updateCardVisibilityClasses();\n const currentIndex = this.findCurrentCenterIndex();\n this.emitActiveIndex(currentIndex);\n }\n }\n\n private initiateSnap(): void {\n this.cards = Array.from(this.hostElement.querySelectorAll<HTMLElement>(this.cardSelector()));\n if (!this.cards.length) return;\n\n let targetCardIndex = -1;\n const currentScroll = this.hostElement.scrollLeft;\n const containerCenter = currentScroll + this.hostElement.clientWidth / 2;\n\n let currentNearestCardIndex = this.findNearestCardIndex(this.cards, containerCenter);\n if (currentNearestCardIndex < 0) return;\n\n const absVelocity = Math.abs(this.currentVelocityX());\n const threshold = this.velocityThreshold();\n\n if (absVelocity > threshold) {\n if (this.currentVelocityX() < 0) {\n targetCardIndex = currentNearestCardIndex - 1;\n } else {\n targetCardIndex = currentNearestCardIndex + 1;\n }\n targetCardIndex = Math.max(0, Math.min(targetCardIndex, this.cards.length - 1));\n } else {\n targetCardIndex = currentNearestCardIndex;\n }\n\n if (targetCardIndex >= 0 && targetCardIndex < this.cards.length) {\n this.scrollToCard(targetCardIndex, false);\n } else {\n this.updateCardVisibilityClasses();\n }\n }\n\n private scrollToCard(index: number, immediate: boolean = false): void {\n if (index < 0 || index >= this.cards.length) {\n return;\n }\n const targetCard = this.cards[index];\n if (!targetCard) return;\n\n const container = this.hostElement;\n const containerWidth = container.clientWidth;\n const targetCardLeft = targetCard.offsetLeft;\n const targetCardWidth = targetCard.offsetWidth;\n let targetScrollLeft = targetCardLeft + targetCardWidth / 2 - containerWidth / 2;\n const maxScrollLeft = container.scrollWidth - containerWidth;\n targetScrollLeft = Math.max(0, Math.min(targetScrollLeft, maxScrollLeft));\n\n this.cancelScrollAnimation();\n\n if (immediate) {\n container.scrollLeft = targetScrollLeft;\n this.updateCardVisibilityClasses();\n this.emitActiveIndex(index);\n } else {\n this.animateScroll(targetScrollLeft);\n }\n }\n\n private findNearestCardIndex(cards: HTMLElement[], position: number): number {\n let nearestIndex = -1;\n let minDistance = Infinity;\n cards.forEach((card, index) => {\n if (card instanceof HTMLElement) {\n const cardLeft = card.offsetLeft;\n const cardWidth = card.offsetWidth;\n const cardCenter = cardLeft + cardWidth / 2;\n const distance = Math.abs(cardCenter - position);\n if (distance < minDistance) {\n minDistance = distance;\n nearestIndex = index;\n }\n }\n });\n return nearestIndex;\n }\n\n private animateTransformReset(): void {\n this.cancelTransformAnimation();\n const startTranslateX = this.currentTranslateX();\n const distance = 0 - startTranslateX;\n if (Math.abs(distance) < 1) {\n if (startTranslateX !== 0) {\n this.currentTranslateX.set(0);\n this.renderer.setStyle(this.hostElement, 'transform', '');\n const finalIndex = this.findCurrentCenterIndex();\n this.emitActiveIndex(finalIndex);\n this.updateCardVisibilityClasses();\n }\n return;\n }\n const duration = this.snapDuration();\n let startTime: number | null = null;\n const step = (timestamp: number) => {\n if (startTime === null) startTime = timestamp;\n const elapsed = timestamp - startTime;\n const progress = Math.min(1, elapsed / duration);\n const easedProgress = easeOutQuad(progress);\n const newTranslateX = startTranslateX + distance * easedProgress;\n this.currentTranslateX.set(newTranslateX);\n this.renderer.setStyle(this.hostElement, 'transform', `translateX(${newTranslateX}px)`);\n if (progress < 1) {\n this.transformAnimationId = requestAnimationFrame(step);\n } else {\n this.currentTranslateX.set(0);\n this.renderer.setStyle(this.hostElement, 'transform', '');\n this.transformAnimationId = null;\n const finalIndex = this.findCurrentCenterIndex();\n this.emitActiveIndex(finalIndex);\n this.updateCardVisibilityClasses();\n }\n };\n this.zone.runOutsideAngular(() => {\n this.transformAnimationId = requestAnimationFrame(step);\n });\n }\n\n private animateScroll(targetScrollLeft: number): void {\n this.cancelScrollAnimation();\n const container = this.hostElement;\n const startScrollLeft = container.scrollLeft;\n const distance = targetScrollLeft - startScrollLeft;\n if (Math.abs(distance) < 1) {\n const finalIndex = this.findCurrentCenterIndex();\n this.emitActiveIndex(finalIndex);\n this.updateCardVisibilityClasses();\n return;\n }\n const duration = this.snapDuration();\n let startTime: number | null = null;\n const step = (timestamp: number) => {\n if (startTime === null) startTime = timestamp;\n const elapsed = timestamp - startTime;\n const progress = Math.min(1, elapsed / duration);\n const easedProgress = easeOutQuad(progress);\n container.scrollLeft = startScrollLeft + distance * easedProgress;\n if (progress < 1) {\n this.scrollAnimationId = requestAnimationFrame(step);\n } else {\n container.scrollLeft = targetScrollLeft;\n this.scrollAnimationId = null;\n const finalIndex = this.findCurrentCenterIndex();\n this.emitActiveIndex(finalIndex);\n this.updateCardVisibilityClasses();\n }\n };\n this.zone.runOutsideAngular(() => {\n this.scrollAnimationId = requestAnimationFrame(step);\n });\n }\n\n private findCurrentCenterIndex(): number {\n this.cards = Array.from(this.hostElement.querySelectorAll<HTMLElement>(this.cardSelector()));\n if (!this.cards.length) return -1;\n const currentScroll = this.hostElement.scrollLeft;\n const containerCenter = currentScroll + this.hostElement.clientWidth / 2;\n return this.findNearestCardIndex(this.cards, containerCenter);\n }\n\n private emitActiveIndex(index: number): void {\n if (index >= 0 && index !== this.lastEmittedIndex()) {\n this.lastEmittedIndex.set(index);\n this.zone.run(() => {\n this.indexChange.emit(index);\n });\n }\n }\n\n private updateCardVisibilityClasses(): void {\n this.cards = Array.from(this.hostElement.querySelectorAll<HTMLElement>(this.cardSelector()));\n if (!this.cards.length || !this.hostElement.clientWidth) return;\n\n const viewportStart = this.hostElement.scrollLeft;\n const viewportWidth = this.hostElement.clientWidth;\n const viewportEnd = viewportStart + viewportWidth;\n const tolerance = 1;\n\n this.cards.forEach(card => {\n if (card instanceof HTMLElement) {\n const cardStart = card.offsetLeft;\n const cardEnd = cardStart + card.offsetWidth;\n const isSpanned = cardStart >= viewportStart - tolerance && cardEnd <= viewportEnd + tolerance;\n const isInView = cardEnd > viewportStart + tolerance && cardStart < viewportEnd - tolerance;\n\n if (isSpanned) {\n this.renderer.addClass(card, 'is-spanned');\n } else {\n this.renderer.removeClass(card, 'is-spanned');\n }\n\n if (isInView) {\n this.renderer.addClass(card, 'is-in-view');\n } else {\n this.renderer.removeClass(card, 'is-in-view');\n }\n }\n });\n }\n\n private cancelScrollAnimation(): void {\n if (this.scrollAnimationId !== null) {\n cancelAnimationFrame(this.scrollAnimationId);\n this.scrollAnimationId = null;\n }\n }\n\n private cancelTransformAnimation(): void {\n if (this.transformAnimationId !== null) {\n cancelAnimationFrame(this.transformAnimationId);\n this.transformAnimationId = null;\n }\n }\n\n private clearSnapTimeout(): void {\n if (this.snapTimeoutId !== null) {\n clearTimeout(this.snapTimeoutId);\n this.snapTimeoutId = null;\n }\n }\n}\n","import {\n booleanAttribute,\n Component,\n contentChildren,\n ElementRef, input,\n output, signal,\n viewChild\n} from '@angular/core';\nimport { CAROUSEL, CAROUSEL_CARD, CarouselApiInterface, CarouselCardInterface } from '../types';\nimport { DraggableCarouselDirective } from '../draggable-carousel.directive';\n\n@Component({\n selector: 'emr-carousel',\n exportAs: 'emrCarousel',\n providers: [\n {\n provide: CAROUSEL,\n useExisting: CarouselComponent\n }\n ],\n templateUrl: './carousel.component.html',\n styleUrl: './carousel.component.scss',\n hostDirectives: [],\n imports: [\n DraggableCarouselDirective\n ],\n host: {\n 'class': 'emr-carousel',\n '[class.fade]': 'fade()',\n }\n})\nexport class CarouselComponent {\n private _content = viewChild.required<ElementRef>('content');\n private _cards = contentChildren<CarouselCardInterface>(CAROUSEL_CARD);\n\n fade = input(false, {\n transform: booleanAttribute\n });\n snapToCenter = input<boolean>(true);\n snapDebounceTime = input<number>(50);\n snapDuration = input<number>(300);\n resistanceFactor = input<number>(0.5);\n velocityThreshold = input<number>(0.5);\n visibilityDebounceTime = input<number>(100);\n\n readonly indexChange = output<number>();\n\n protected _index = signal(0);\n\n get api(): CarouselApiInterface {\n return {\n isNextDisabled: () => this._isNextDisabled,\n isPreviousDisabled: () => this._isPreviousDisabled,\n previous: () => this._previous(),\n next: () => this._next(),\n selectedIndex: () => this._index()\n }\n }\n\n protected onIndexChanged(index: number): void {\n if (this._index() === index) {\n return;\n }\n\n this._index.set(index);\n this.indexChange.emit(index);\n }\n\n private _previous(): void {\n const contentElement = this._content()?.nativeElement as HTMLElement;\n\n for (let index = this._cards().length - 1; index >= 0; index--) {\n if (index >= this._index()) {\n continue;\n }\n\n const card = this._cards().at(index) as CarouselCardInterface;\n\n if (!this._visibleInParentViewport(contentElement, card.element)) {\n this._scrollToCard(card);\n break;\n }\n }\n }\n\n private _next(): void {\n const contentElement = this._content().nativeElement as HTMLElement;\n const notVisibleCard = this._cards().find(\n (card: CarouselCardInterface, index: number) =>\n !this._visibleInParentViewport(contentElement, card.element) && index > this._index()\n );\n\n if (notVisibleCard) {\n this._scrollToCard(notVisibleCard);\n }\n }\n\n private _scrollToCard(notVisibleCard: CarouselCardInterface): void {\n this._index.set(this._cards().findIndex(card => card === notVisibleCard));\n this.indexChange.emit(this._index());\n notVisibleCard.element.scrollIntoView({\n block: 'nearest',\n behavior: 'smooth',\n inline: 'center'\n });\n }\n\n private _visibleInParentViewport = (parent: HTMLElement, el: HTMLElement) => {\n const parentRect = parent.getBoundingClientRect();\n const elementRect = el.getBoundingClientRect();\n\n return (\n elementRect.right <= parentRect.right &&\n elementRect.left >= parentRect.left\n );\n }\n\n private get _isPreviousDisabled(): boolean {\n return this._index() === 0;\n }\n\n private get _isNextDisabled(): boolean {\n return this._index() === this._cards().length - 1;\n }\n}\n","<div #content class=\"content\"\n emrDraggableCarousel\n [snapToCenter]=\"snapToCenter()\"\n [snapDebounceTime]=\"snapDebounceTime()\"\n [snapDuration]=\"snapDuration()\"\n [resistanceFactor]=\"resistanceFactor()\"\n [velocityThreshold]=\"velocityThreshold()\"\n [visibilityDebounceTime]=\"visibilityDebounceTime()\"\n (indexChange)=\"onIndexChanged($event)\">\n <ng-content select=\"emr-carousel-card,[emr-carousel-card]\"></ng-content>\n</div>\n<div class=\"controls\">\n <ng-content select=\"[emrCarouselControls]\"></ng-content>\n</div>\n","import { Component, ElementRef, inject } from '@angular/core';\nimport { CAROUSEL_CARD } from '../types';\n\n@Component({\n selector: 'emr-carousel-card,[emr-carousel-card]',\n exportAs: 'emrCarouselCard',\n imports: [],\n providers: [\n {\n provide: CAROUSEL_CARD,\n useExisting: CarouselCardComponent\n }\n ],\n templateUrl: './carousel-card.component.html',\n styleUrl: './carousel-card.component.scss',\n host: {\n 'class': 'emr-carousel-card',\n }\n})\nexport class CarouselCardComponent {\n private _elementRef = inject(ElementRef);\n\n get element(): HTMLElement {\n return this._elementRef.nativeElement;\n }\n}\n","<ng-content></ng-content>\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[emrCarouselControls]',\n standalone: true,\n host: {\n 'class': 'emr-carousel-controls',\n }\n})\nexport class CarouselControlsDirective {\n\n}\n","import { Directive, inject, input, OnInit } from '@angular/core';\nimport { CAROUSEL, CarouselInterface } from './types';\n\n@Directive({\n selector: '[emrCarouselPrevious]',\n exportAs: 'emrCarouselPrevious',\n standalone: true,\n host: {\n 'class': 'emr-carousel-previous',\n '[attr.disabled]': '_carousel?.api?.isPreviousDisabled() ? true : null',\n '(click)': '_handleClick()'\n }\n})\nexport class CarouselPreviousDirective implements OnInit {\n protected _carousel = inject<CarouselInterface>(CAROUSEL, {\n optional: true\n });\n\n carousel = input<CarouselInterface | null>(null);\n\n ngOnInit(): void {\n if (this.carousel() && !this._carousel) {\n this._carousel = this.carousel();\n }\n }\n\n _handleClick(): void {\n this._carousel?.api.previous();\n }\n}\n","import { Directive, inject, input, OnInit } from '@angular/core';\nimport { CAROUSEL, CarouselInterface } from './types';\n\n@Directive({\n selector: '[emrCarouselNext]',\n exportAs: 'emrCarouselNext',\n standalone: true,\n host: {\n 'class': 'emr-carousel-next',\n '[attr.disabled]': '_carousel?.api?.isNextDisabled() ? true : null',\n '(click)': '_handleClick()'\n }\n})\nexport class CarouselNextDirective implements OnInit {\n protected _carousel = inject<CarouselInterface>(CAROUSEL, {\n optional: true\n });\n\n carousel = input<CarouselInterface | null>(null);\n\n ngOnInit(): void {\n if (this.carousel() && !this._carousel) {\n this._carousel = this.carousel();\n }\n }\n\n _handleClick(): void {\n this._carousel?.api.next();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, booleanAttribute, output, Component } from '@angular/core';
3
+
4
+ class ChipComponent {
5
+ variant = input('input', ...(ngDevMode ? [{ debugName: "variant" }] : []));
6
+ selected = input(false, ...(ngDevMode ? [{ debugName: "selected", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
7
+ disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
8
+ removable = input(true, ...(ngDevMode ? [{ debugName: "removable", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
9
+ removed = output();
10
+ selectedChange = output();
11
+ _onClick() {
12
+ if (this.disabled())
13
+ return;
14
+ if (this.variant() === 'filter') {
15
+ this.selectedChange.emit(!this.selected());
16
+ }
17
+ }
18
+ _onRemove(event) {
19
+ event.stopPropagation();
20
+ if (!this.disabled())
21
+ this.removed.emit();
22
+ }
23
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ChipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
24
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: ChipComponent, isStandalone: true, selector: "emr-chip", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, removable: { classPropertyName: "removable", publicName: "removable", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { removed: "removed", selectedChange: "selectedChange" }, host: { listeners: { "click": "_onClick()" }, properties: { "class.is-selected": "selected()", "class.is-disabled": "disabled()", "attr.data-variant": "variant()" }, classAttribute: "emr-chip" }, exportAs: ["emrChip"], ngImport: i0, template: "<span class=\"chip-leading\">\n <ng-content select=\"[emrChipIcon]\"/>\n</span>\n<span class=\"chip-label\">\n <ng-content/>\n</span>\n@if (removable() && variant() === 'input') {\n <button class=\"chip-remove\" type=\"button\" (click)=\"_onRemove($event)\" aria-label=\"Remove\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"/>\n </svg>\n </button>\n}\n", styles: [":host{--emr-chip-height: calc(var(--spacing, .25rem) * 8);--emr-chip-padding: 0 calc(var(--spacing, .25rem) * 3);--emr-chip-gap: calc(var(--spacing, .25rem) * 1.5);--emr-chip-font-size: .875rem;--emr-chip-font-weight: 500;--emr-chip-border-radius: calc(infinity * 1px);--emr-chip-bg: var(--color-surface-container-high);--emr-chip-color: var(--color-on-surface);--emr-chip-border: 1px solid var(--color-outline-variant);--emr-chip-selected-bg: var(--color-secondary-container);--emr-chip-selected-color: var(--color-on-secondary-container);--emr-chip-disabled-opacity: .38;display:inline-flex;align-items:center;gap:var(--emr-chip-gap);height:var(--emr-chip-height);padding:var(--emr-chip-padding);font-size:var(--emr-chip-font-size);font-weight:var(--emr-chip-font-weight);border-radius:var(--emr-chip-border-radius);background:var(--emr-chip-bg);color:var(--emr-chip-color);border:var(--emr-chip-border);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;transition:background .15s ease,color .15s ease}:host.is-selected{background:var(--emr-chip-selected-bg);color:var(--emr-chip-selected-color);border-color:transparent}:host.is-disabled{opacity:var(--emr-chip-disabled-opacity);pointer-events:none}:host .chip-leading{display:contents}:host .chip-leading:empty{display:none}:host .chip-remove{display:flex;align-items:center;justify-content:center;width:calc(var(--spacing, .25rem) * 4.5);height:calc(var(--spacing, .25rem) * 4.5);border-radius:50%;border:none;background:transparent;color:inherit;cursor:pointer;padding:0;margin-inline-end:calc(var(--spacing, .25rem) * -1)}:host .chip-remove:hover{background:currentColor}@supports (color: color-mix(in lab,red,red)){:host .chip-remove:hover{background:color-mix(in srgb,currentColor 12%,transparent)}}\n/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\n"] });
25
+ }
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ChipComponent, decorators: [{
27
+ type: Component,
28
+ args: [{ selector: 'emr-chip', exportAs: 'emrChip', host: {
29
+ 'class': 'emr-chip',
30
+ '[class.is-selected]': 'selected()',
31
+ '[class.is-disabled]': 'disabled()',
32
+ '[attr.data-variant]': 'variant()',
33
+ '(click)': '_onClick()',
34
+ }, template: "<span class=\"chip-leading\">\n <ng-content select=\"[emrChipIcon]\"/>\n</span>\n<span class=\"chip-label\">\n <ng-content/>\n</span>\n@if (removable() && variant() === 'input') {\n <button class=\"chip-remove\" type=\"button\" (click)=\"_onRemove($event)\" aria-label=\"Remove\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"/>\n </svg>\n </button>\n}\n", styles: [":host{--emr-chip-height: calc(var(--spacing, .25rem) * 8);--emr-chip-padding: 0 calc(var(--spacing, .25rem) * 3);--emr-chip-gap: calc(var(--spacing, .25rem) * 1.5);--emr-chip-font-size: .875rem;--emr-chip-font-weight: 500;--emr-chip-border-radius: calc(infinity * 1px);--emr-chip-bg: var(--color-surface-container-high);--emr-chip-color: var(--color-on-surface);--emr-chip-border: 1px solid var(--color-outline-variant);--emr-chip-selected-bg: var(--color-secondary-container);--emr-chip-selected-color: var(--color-on-secondary-container);--emr-chip-disabled-opacity: .38;display:inline-flex;align-items:center;gap:var(--emr-chip-gap);height:var(--emr-chip-height);padding:var(--emr-chip-padding);font-size:var(--emr-chip-font-size);font-weight:var(--emr-chip-font-weight);border-radius:var(--emr-chip-border-radius);background:var(--emr-chip-bg);color:var(--emr-chip-color);border:var(--emr-chip-border);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;transition:background .15s ease,color .15s ease}:host.is-selected{background:var(--emr-chip-selected-bg);color:var(--emr-chip-selected-color);border-color:transparent}:host.is-disabled{opacity:var(--emr-chip-disabled-opacity);pointer-events:none}:host .chip-leading{display:contents}:host .chip-leading:empty{display:none}:host .chip-remove{display:flex;align-items:center;justify-content:center;width:calc(var(--spacing, .25rem) * 4.5);height:calc(var(--spacing, .25rem) * 4.5);border-radius:50%;border:none;background:transparent;color:inherit;cursor:pointer;padding:0;margin-inline-end:calc(var(--spacing, .25rem) * -1)}:host .chip-remove:hover{background:currentColor}@supports (color: color-mix(in lab,red,red)){:host .chip-remove:hover{background:color-mix(in srgb,currentColor 12%,transparent)}}\n/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\n"] }]
35
+ }], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], selected: [{ type: i0.Input, args: [{ isSignal: true, alias: "selected", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], removable: [{ type: i0.Input, args: [{ isSignal: true, alias: "removable", required: false }] }], removed: [{ type: i0.Output, args: ["removed"] }], selectedChange: [{ type: i0.Output, args: ["selectedChange"] }] } });
36
+
37
+ class ChipListComponent {
38
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ChipListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
39
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: ChipListComponent, isStandalone: true, selector: "emr-chip-list", host: { attributes: { "role": "listbox" }, classAttribute: "emr-chip-list" }, exportAs: ["emrChipList"], ngImport: i0, template: "<ng-content/>\n", styles: [":host{--emr-chip-list-gap: calc(var(--spacing, .25rem) * 2);display:flex;flex-wrap:wrap;gap:var(--emr-chip-list-gap);align-items:center}\n/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\n"] });
40
+ }
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ChipListComponent, decorators: [{
42
+ type: Component,
43
+ args: [{ selector: 'emr-chip-list', exportAs: 'emrChipList', host: {
44
+ 'class': 'emr-chip-list',
45
+ 'role': 'listbox',
46
+ }, template: "<ng-content/>\n", styles: [":host{--emr-chip-list-gap: calc(var(--spacing, .25rem) * 2);display:flex;flex-wrap:wrap;gap:var(--emr-chip-list-gap);align-items:center}\n/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\n"] }]
47
+ }] });
48
+
49
+ /**
50
+ * Generated bundle index. Do not edit.
51
+ */
52
+
53
+ export { ChipComponent, ChipListComponent };
54
+ //# sourceMappingURL=elementar-rt-components-chips.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elementar-rt-components-chips.mjs","sources":["../../../projects/components/chips/src/chip/chip.component.ts","../../../projects/components/chips/src/chip/chip.component.html","../../../projects/components/chips/src/chip-list/chip-list.component.ts","../../../projects/components/chips/src/chip-list/chip-list.component.html","../../../projects/components/chips/elementar-rt-components-chips.ts"],"sourcesContent":["import { booleanAttribute, Component, input, output } from '@angular/core';\n\nexport type ChipVariant = 'input' | 'filter' | 'suggestion';\n\n@Component({\n selector: 'emr-chip',\n exportAs: 'emrChip',\n templateUrl: './chip.component.html',\n styleUrl: './chip.component.scss',\n host: {\n 'class': 'emr-chip',\n '[class.is-selected]': 'selected()',\n '[class.is-disabled]': 'disabled()',\n '[attr.data-variant]': 'variant()',\n '(click)': '_onClick()',\n }\n})\nexport class ChipComponent {\n variant = input<ChipVariant>('input');\n selected = input(false, { transform: booleanAttribute });\n disabled = input(false, { transform: booleanAttribute });\n removable = input(true, { transform: booleanAttribute });\n\n readonly removed = output<void>();\n readonly selectedChange = output<boolean>();\n\n protected _onClick() {\n if (this.disabled()) return;\n if (this.variant() === 'filter') {\n this.selectedChange.emit(!this.selected());\n }\n }\n\n protected _onRemove(event: MouseEvent) {\n event.stopPropagation();\n if (!this.disabled()) this.removed.emit();\n }\n}\n","<span class=\"chip-leading\">\n <ng-content select=\"[emrChipIcon]\"/>\n</span>\n<span class=\"chip-label\">\n <ng-content/>\n</span>\n@if (removable() && variant() === 'input') {\n <button class=\"chip-remove\" type=\"button\" (click)=\"_onRemove($event)\" aria-label=\"Remove\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"/>\n </svg>\n </button>\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'emr-chip-list',\n exportAs: 'emrChipList',\n templateUrl: './chip-list.component.html',\n styleUrl: './chip-list.component.scss',\n host: {\n 'class': 'emr-chip-list',\n 'role': 'listbox',\n }\n})\nexport class ChipListComponent {}\n","<ng-content/>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;MAiBa,aAAa,CAAA;AACxB,IAAA,OAAO,GAAG,KAAK,CAAc,OAAO,mDAAC;AACrC,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,4CAAI,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CAA7B,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAC;AACxD,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,4CAAI,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CAA7B,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAC;AACxD,IAAA,SAAS,GAAG,KAAK,CAAC,IAAI,6CAAI,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CAA7B,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAC;IAE/C,OAAO,GAAG,MAAM,EAAQ;IACxB,cAAc,GAAG,MAAM,EAAW;IAEjC,QAAQ,GAAA;QAChB,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;AACrB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,QAAQ,EAAE;YAC/B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5C;IACF;AAEU,IAAA,SAAS,CAAC,KAAiB,EAAA;QACnC,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAAE,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;IAC3C;wGAnBW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,k3BCjB1B,wgBAaA,EAAA,MAAA,EAAA,CAAA,+zDAAA,CAAA,EAAA,CAAA;;4FDIa,aAAa,EAAA,UAAA,EAAA,CAAA;kBAbzB,SAAS;+BACE,UAAU,EAAA,QAAA,EACV,SAAS,EAAA,IAAA,EAGb;AACJ,wBAAA,OAAO,EAAE,UAAU;AACnB,wBAAA,qBAAqB,EAAE,YAAY;AACnC,wBAAA,qBAAqB,EAAE,YAAY;AACnC,wBAAA,qBAAqB,EAAE,WAAW;AAClC,wBAAA,SAAS,EAAE,YAAY;AACxB,qBAAA,EAAA,QAAA,EAAA,wgBAAA,EAAA,MAAA,EAAA,CAAA,+zDAAA,CAAA,EAAA;;;MEHU,iBAAiB,CAAA;wGAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,kLCZ9B,iBACA,EAAA,MAAA,EAAA,CAAA,+MAAA,CAAA,EAAA,CAAA;;4FDWa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAV7B,SAAS;+BACE,eAAe,EAAA,QAAA,EACf,aAAa,EAAA,IAAA,EAGjB;AACJ,wBAAA,OAAO,EAAE,eAAe;AACxB,wBAAA,MAAM,EAAE,SAAS;AAClB,qBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,+MAAA,CAAA,EAAA;;;AEVH;;AAEG;;;;"}
@@ -0,0 +1,115 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, numberAttribute, output, signal, HostListener, Directive, ChangeDetectionStrategy, Component } from '@angular/core';
3
+
4
+ class CopyToClipboardDirective {
5
+ emrCopyToClipboard = input.required(...(ngDevMode ? [{ debugName: "emrCopyToClipboard" }] : []));
6
+ resetDelay = input(2000, ...(ngDevMode ? [{ debugName: "resetDelay", transform: numberAttribute }] : [{ transform: numberAttribute }]));
7
+ copied = output();
8
+ copyError = output();
9
+ _copied = signal(false, ...(ngDevMode ? [{ debugName: "_copied" }] : []));
10
+ _timer = null;
11
+ async onClick() {
12
+ const text = this.emrCopyToClipboard();
13
+ try {
14
+ await navigator.clipboard.writeText(text);
15
+ this._copied.set(true);
16
+ this.copied.emit(text);
17
+ if (this._timer)
18
+ clearTimeout(this._timer);
19
+ this._timer = setTimeout(() => this._copied.set(false), this.resetDelay());
20
+ }
21
+ catch (err) {
22
+ this.copyError.emit(err);
23
+ }
24
+ }
25
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: CopyToClipboardDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
26
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.25", type: CopyToClipboardDirective, isStandalone: true, selector: "[emrCopyToClipboard]", inputs: { emrCopyToClipboard: { classPropertyName: "emrCopyToClipboard", publicName: "emrCopyToClipboard", isSignal: true, isRequired: true, transformFunction: null }, resetDelay: { classPropertyName: "resetDelay", publicName: "resetDelay", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { copied: "copied", copyError: "copyError" }, host: { listeners: { "click": "onClick()" }, properties: { "attr.data-copied": "_copied() || null" } }, ngImport: i0 });
27
+ }
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: CopyToClipboardDirective, decorators: [{
29
+ type: Directive,
30
+ args: [{
31
+ selector: '[emrCopyToClipboard]',
32
+ standalone: true,
33
+ host: {
34
+ '[attr.data-copied]': '_copied() || null',
35
+ }
36
+ }]
37
+ }], propDecorators: { emrCopyToClipboard: [{ type: i0.Input, args: [{ isSignal: true, alias: "emrCopyToClipboard", required: true }] }], resetDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "resetDelay", required: false }] }], copied: [{ type: i0.Output, args: ["copied"] }], copyError: [{ type: i0.Output, args: ["copyError"] }], onClick: [{
38
+ type: HostListener,
39
+ args: ['click']
40
+ }] } });
41
+
42
+ class CopyButtonComponent {
43
+ text = input.required(...(ngDevMode ? [{ debugName: "text" }] : []));
44
+ copyLabel = input('Copy', ...(ngDevMode ? [{ debugName: "copyLabel" }] : []));
45
+ copiedLabel = input('Copied!', ...(ngDevMode ? [{ debugName: "copiedLabel" }] : []));
46
+ showLabel = input(false, ...(ngDevMode ? [{ debugName: "showLabel" }] : []));
47
+ resetDelay = input(2000, ...(ngDevMode ? [{ debugName: "resetDelay", transform: numberAttribute }] : [{ transform: numberAttribute }]));
48
+ _copied = signal(false, ...(ngDevMode ? [{ debugName: "_copied" }] : []));
49
+ _timer = null;
50
+ async _copy() {
51
+ try {
52
+ await navigator.clipboard.writeText(this.text());
53
+ this._copied.set(true);
54
+ if (this._timer)
55
+ clearTimeout(this._timer);
56
+ this._timer = setTimeout(() => this._copied.set(false), this.resetDelay());
57
+ }
58
+ catch { /* ignore */ }
59
+ }
60
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: CopyButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
61
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: CopyButtonComponent, isStandalone: true, selector: "emr-copy-button", inputs: { text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: true, transformFunction: null }, copyLabel: { classPropertyName: "copyLabel", publicName: "copyLabel", isSignal: true, isRequired: false, transformFunction: null }, copiedLabel: { classPropertyName: "copiedLabel", publicName: "copiedLabel", isSignal: true, isRequired: false, transformFunction: null }, showLabel: { classPropertyName: "showLabel", publicName: "showLabel", isSignal: true, isRequired: false, transformFunction: null }, resetDelay: { classPropertyName: "resetDelay", publicName: "resetDelay", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
62
+ <button
63
+ type="button"
64
+ class="copy-btn"
65
+ [attr.data-copied]="_copied() || null"
66
+ [attr.aria-label]="_copied() ? copiedLabel() : copyLabel()"
67
+ (click)="_copy()"
68
+ >
69
+ @if (_copied()) {
70
+ <svg class="icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
71
+ <polyline points="20 6 9 17 4 12"/>
72
+ </svg>
73
+ @if (showLabel()) { <span>{{ copiedLabel() }}</span> }
74
+ } @else {
75
+ <svg class="icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
76
+ <rect x="9" y="9" width="13" height="13" rx="2"/>
77
+ <path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/>
78
+ </svg>
79
+ @if (showLabel()) { <span>{{ copyLabel() }}</span> }
80
+ }
81
+ </button>
82
+ `, isInline: true, styles: [".copy-btn{display:inline-flex;align-items:center;gap:var(--spacing, .25rem);background:transparent;border:1px solid var(--color-outline-variant);border-radius:.375rem;padding:calc(var(--spacing, .25rem) * 1.5) calc(var(--spacing, .25rem) * 2);cursor:pointer;font-size:.875rem;color:var(--color-on-surface-variant);transition:all .15s ease}.copy-btn:hover{background:var(--color-surface-container);color:var(--color-on-surface)}.copy-btn[data-copied]{color:var(--color-green);border-color:var(--color-green)}.copy-btn .icon{width:calc(var(--spacing, .25rem) * 4);height:calc(var(--spacing, .25rem) * 4);flex-shrink:0}\n/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
83
+ }
84
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: CopyButtonComponent, decorators: [{
85
+ type: Component,
86
+ args: [{ selector: 'emr-copy-button', standalone: true, template: `
87
+ <button
88
+ type="button"
89
+ class="copy-btn"
90
+ [attr.data-copied]="_copied() || null"
91
+ [attr.aria-label]="_copied() ? copiedLabel() : copyLabel()"
92
+ (click)="_copy()"
93
+ >
94
+ @if (_copied()) {
95
+ <svg class="icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
96
+ <polyline points="20 6 9 17 4 12"/>
97
+ </svg>
98
+ @if (showLabel()) { <span>{{ copiedLabel() }}</span> }
99
+ } @else {
100
+ <svg class="icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
101
+ <rect x="9" y="9" width="13" height="13" rx="2"/>
102
+ <path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/>
103
+ </svg>
104
+ @if (showLabel()) { <span>{{ copyLabel() }}</span> }
105
+ }
106
+ </button>
107
+ `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".copy-btn{display:inline-flex;align-items:center;gap:var(--spacing, .25rem);background:transparent;border:1px solid var(--color-outline-variant);border-radius:.375rem;padding:calc(var(--spacing, .25rem) * 1.5) calc(var(--spacing, .25rem) * 2);cursor:pointer;font-size:.875rem;color:var(--color-on-surface-variant);transition:all .15s ease}.copy-btn:hover{background:var(--color-surface-container);color:var(--color-on-surface)}.copy-btn[data-copied]{color:var(--color-green);border-color:var(--color-green)}.copy-btn .icon{width:calc(var(--spacing, .25rem) * 4);height:calc(var(--spacing, .25rem) * 4);flex-shrink:0}\n/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\n"] }]
108
+ }], propDecorators: { text: [{ type: i0.Input, args: [{ isSignal: true, alias: "text", required: true }] }], copyLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "copyLabel", required: false }] }], copiedLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "copiedLabel", required: false }] }], showLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "showLabel", required: false }] }], resetDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "resetDelay", required: false }] }] } });
109
+
110
+ /**
111
+ * Generated bundle index. Do not edit.
112
+ */
113
+
114
+ export { CopyButtonComponent, CopyToClipboardDirective };
115
+ //# sourceMappingURL=elementar-rt-components-clipboard-copy.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elementar-rt-components-clipboard-copy.mjs","sources":["../../../projects/components/clipboard-copy/src/copy-to-clipboard.directive.ts","../../../projects/components/clipboard-copy/src/copy-button.component.ts","../../../projects/components/clipboard-copy/elementar-rt-components-clipboard-copy.ts"],"sourcesContent":["import { Directive, input, output, signal, HostListener, numberAttribute } from '@angular/core';\n\n@Directive({\n selector: '[emrCopyToClipboard]',\n standalone: true,\n host: {\n '[attr.data-copied]': '_copied() || null',\n }\n})\nexport class CopyToClipboardDirective {\n emrCopyToClipboard = input.required<string>();\n resetDelay = input(2000, { transform: numberAttribute });\n\n copied = output<string>();\n copyError = output<Error>();\n\n protected _copied = signal(false);\n\n private _timer: ReturnType<typeof setTimeout> | null = null;\n\n @HostListener('click')\n async onClick(): Promise<void> {\n const text = this.emrCopyToClipboard();\n try {\n await navigator.clipboard.writeText(text);\n this._copied.set(true);\n this.copied.emit(text);\n if (this._timer) clearTimeout(this._timer);\n this._timer = setTimeout(() => this._copied.set(false), this.resetDelay());\n } catch (err) {\n this.copyError.emit(err as Error);\n }\n }\n}\n","import { Component, input, signal, ChangeDetectionStrategy, numberAttribute } from '@angular/core';\n\n@Component({\n selector: 'emr-copy-button',\n standalone: true,\n template: `\n <button\n type=\"button\"\n class=\"copy-btn\"\n [attr.data-copied]=\"_copied() || null\"\n [attr.aria-label]=\"_copied() ? copiedLabel() : copyLabel()\"\n (click)=\"_copy()\"\n >\n @if (_copied()) {\n <svg class=\"icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <polyline points=\"20 6 9 17 4 12\"/>\n </svg>\n @if (showLabel()) { <span>{{ copiedLabel() }}</span> }\n } @else {\n <svg class=\"icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"/>\n <path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"/>\n </svg>\n @if (showLabel()) { <span>{{ copyLabel() }}</span> }\n }\n </button>\n `,\n styles: [`\n @reference 'tailwindcss';\n\n .copy-btn {\n display: inline-flex;\n align-items: center;\n gap: --spacing(1);\n background: transparent;\n border: 1px solid var(--color-outline-variant);\n border-radius: theme(--radius-md);\n padding: --spacing(1.5) --spacing(2);\n cursor: pointer;\n font-size: theme(--text-sm);\n color: var(--color-on-surface-variant);\n transition: all 150ms ease;\n\n &:hover { background: var(--color-surface-container); color: var(--color-on-surface); }\n &[data-copied] { color: var(--color-green); border-color: var(--color-green); }\n\n .icon { width: --spacing(4); height: --spacing(4); flex-shrink: 0; }\n }\n `],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CopyButtonComponent {\n text = input.required<string>();\n copyLabel = input('Copy');\n copiedLabel = input('Copied!');\n showLabel = input(false);\n resetDelay = input(2000, { transform: numberAttribute });\n\n protected _copied = signal(false);\n private _timer: ReturnType<typeof setTimeout> | null = null;\n\n protected async _copy(): Promise<void> {\n try {\n await navigator.clipboard.writeText(this.text());\n this._copied.set(true);\n if (this._timer) clearTimeout(this._timer);\n this._timer = setTimeout(() => this._copied.set(false), this.resetDelay());\n } catch { /* ignore */ }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, input, signal, ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { inject, input, booleanAttribute, signal, ChangeDetectionStrategy, Component } from '@angular/core';
3
3
  import { DomSanitizer } from '@angular/platform-browser';
4
4
  import { codeToHtml } from 'shiki';
5
5
 
@@ -9,8 +9,21 @@ class CodeHighlighter {
9
9
  language = input('bash', ...(ngDevMode ? [{ debugName: "language" }] : []));
10
10
  theme = input('dracula-soft', ...(ngDevMode ? [{ debugName: "theme" }] : []));
11
11
  inline = input(false, ...(ngDevMode ? [{ debugName: "inline" }] : []));
12
+ showCopyButton = input(true, ...(ngDevMode ? [{ debugName: "showCopyButton", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
12
13
  content = signal(null, ...(ngDevMode ? [{ debugName: "content" }] : []));
13
14
  isLoading = signal(false, ...(ngDevMode ? [{ debugName: "isLoading" }] : []));
15
+ _copied = signal(false, ...(ngDevMode ? [{ debugName: "_copied" }] : []));
16
+ _copyTimer = null;
17
+ async _copyCode() {
18
+ try {
19
+ await navigator.clipboard.writeText(this.code());
20
+ this._copied.set(true);
21
+ if (this._copyTimer)
22
+ clearTimeout(this._copyTimer);
23
+ this._copyTimer = setTimeout(() => this._copied.set(false), 2000);
24
+ }
25
+ catch { /* ignore */ }
26
+ }
14
27
  async ngOnChanges(changes) {
15
28
  if (!this.code()) {
16
29
  this.content.set(null);
@@ -38,16 +51,16 @@ class CodeHighlighter {
38
51
  this.isLoading.set(false);
39
52
  }
40
53
  }
41
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: CodeHighlighter, deps: [], target: i0.ɵɵFactoryTarget.Component });
42
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.10", type: CodeHighlighter, isStandalone: true, selector: "emr-code-highlighter", inputs: { code: { classPropertyName: "code", publicName: "code", isSignal: true, isRequired: true, transformFunction: null }, language: { classPropertyName: "language", publicName: "language", isSignal: true, isRequired: false, transformFunction: null }, theme: { classPropertyName: "theme", publicName: "theme", isSignal: true, isRequired: false, transformFunction: null }, inline: { classPropertyName: "inline", publicName: "inline", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.is-inline": "inline()" }, classAttribute: "emr-code-highlighter" }, exportAs: ["emrCodeHighlighter"], usesOnChanges: true, ngImport: i0, template: "@if (content()) {\r\n <div [innerHTML]=\"content()\"></div>\r\n} @else {\r\n <div class=\"loading\">Loading\u2026</div>\r\n}\r\n", styles: [":host{display:block;margin:calc(var(--spacing, .25rem) * 5) 0}:host.inline{display:inline}:host ::ng-deep pre.shiki{padding:calc(var(--spacing, .25rem) * 5);border-radius:1rem;overflow:auto;line-height:1.5;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.875rem}:host ::ng-deep code{white-space:pre}:host.loading{opacity:.6}\n/*! tailwindcss v4.1.14 | MIT License | https://tailwindcss.com */\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
54
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: CodeHighlighter, deps: [], target: i0.ɵɵFactoryTarget.Component });
55
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: CodeHighlighter, isStandalone: true, selector: "emr-code-highlighter", inputs: { code: { classPropertyName: "code", publicName: "code", isSignal: true, isRequired: true, transformFunction: null }, language: { classPropertyName: "language", publicName: "language", isSignal: true, isRequired: false, transformFunction: null }, theme: { classPropertyName: "theme", publicName: "theme", isSignal: true, isRequired: false, transformFunction: null }, inline: { classPropertyName: "inline", publicName: "inline", isSignal: true, isRequired: false, transformFunction: null }, showCopyButton: { classPropertyName: "showCopyButton", publicName: "showCopyButton", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.is-inline": "inline()" }, classAttribute: "emr-code-highlighter" }, exportAs: ["emrCodeHighlighter"], usesOnChanges: true, ngImport: i0, template: "@if (!inline() && showCopyButton()) {\n <button\n type=\"button\"\n class=\"copy-btn\"\n [attr.data-copied]=\"_copied() || null\"\n [attr.aria-label]=\"_copied() ? 'Copied!' : 'Copy code'\"\n (click)=\"_copyCode()\"\n >\n @if (_copied()) {\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\"><polyline points=\"20 6 9 17 4 12\"/></svg>\n } @else {\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"/><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"/></svg>\n }\n </button>\n}\n@if (content()) {\n <div [innerHTML]=\"content()\"></div>\n} @else {\n <div class=\"loading\">Loading\u2026</div>\n}\n", styles: [":host{display:block;position:relative;margin:calc(var(--spacing, .25rem) * 5) 0}:host.inline{display:inline}:host ::ng-deep pre.shiki{padding:calc(var(--spacing, .25rem) * 5);border-radius:1rem;overflow:auto;line-height:1.5;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.875rem}:host ::ng-deep code{white-space:pre}:host.loading{opacity:.6}.copy-btn{position:absolute;top:calc(var(--spacing, .25rem) * 3);right:calc(var(--spacing, .25rem) * 3);z-index:2;width:calc(var(--spacing, .25rem) * 8);height:calc(var(--spacing, .25rem) * 8);display:flex;align-items:center;justify-content:center;background:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-radius:.375rem;cursor:pointer;color:#ffffffb3;transition:all .15s ease;opacity:0}:host:hover .copy-btn{opacity:1}.copy-btn:hover{background:#fff3;color:#fff}.copy-btn[data-copied]{color:#4ade80;border-color:#4ade8066}.copy-btn svg{width:calc(var(--spacing, .25rem) * 4);height:calc(var(--spacing, .25rem) * 4)}\n/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
43
56
  }
44
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: CodeHighlighter, decorators: [{
57
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: CodeHighlighter, decorators: [{
45
58
  type: Component,
46
59
  args: [{ selector: 'emr-code-highlighter', exportAs: 'emrCodeHighlighter', changeDetection: ChangeDetectionStrategy.OnPush, host: {
47
60
  'class': 'emr-code-highlighter',
48
61
  '[class.is-inline]': 'inline()',
49
- }, template: "@if (content()) {\r\n <div [innerHTML]=\"content()\"></div>\r\n} @else {\r\n <div class=\"loading\">Loading\u2026</div>\r\n}\r\n", styles: [":host{display:block;margin:calc(var(--spacing, .25rem) * 5) 0}:host.inline{display:inline}:host ::ng-deep pre.shiki{padding:calc(var(--spacing, .25rem) * 5);border-radius:1rem;overflow:auto;line-height:1.5;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.875rem}:host ::ng-deep code{white-space:pre}:host.loading{opacity:.6}\n/*! tailwindcss v4.1.14 | MIT License | https://tailwindcss.com */\n"] }]
50
- }], propDecorators: { code: [{ type: i0.Input, args: [{ isSignal: true, alias: "code", required: true }] }], language: [{ type: i0.Input, args: [{ isSignal: true, alias: "language", required: false }] }], theme: [{ type: i0.Input, args: [{ isSignal: true, alias: "theme", required: false }] }], inline: [{ type: i0.Input, args: [{ isSignal: true, alias: "inline", required: false }] }] } });
62
+ }, template: "@if (!inline() && showCopyButton()) {\n <button\n type=\"button\"\n class=\"copy-btn\"\n [attr.data-copied]=\"_copied() || null\"\n [attr.aria-label]=\"_copied() ? 'Copied!' : 'Copy code'\"\n (click)=\"_copyCode()\"\n >\n @if (_copied()) {\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\"><polyline points=\"20 6 9 17 4 12\"/></svg>\n } @else {\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"/><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"/></svg>\n }\n </button>\n}\n@if (content()) {\n <div [innerHTML]=\"content()\"></div>\n} @else {\n <div class=\"loading\">Loading\u2026</div>\n}\n", styles: [":host{display:block;position:relative;margin:calc(var(--spacing, .25rem) * 5) 0}:host.inline{display:inline}:host ::ng-deep pre.shiki{padding:calc(var(--spacing, .25rem) * 5);border-radius:1rem;overflow:auto;line-height:1.5;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.875rem}:host ::ng-deep code{white-space:pre}:host.loading{opacity:.6}.copy-btn{position:absolute;top:calc(var(--spacing, .25rem) * 3);right:calc(var(--spacing, .25rem) * 3);z-index:2;width:calc(var(--spacing, .25rem) * 8);height:calc(var(--spacing, .25rem) * 8);display:flex;align-items:center;justify-content:center;background:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-radius:.375rem;cursor:pointer;color:#ffffffb3;transition:all .15s ease;opacity:0}:host:hover .copy-btn{opacity:1}.copy-btn:hover{background:#fff3;color:#fff}.copy-btn[data-copied]{color:#4ade80;border-color:#4ade8066}.copy-btn svg{width:calc(var(--spacing, .25rem) * 4);height:calc(var(--spacing, .25rem) * 4)}\n/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\n"] }]
63
+ }], propDecorators: { code: [{ type: i0.Input, args: [{ isSignal: true, alias: "code", required: true }] }], language: [{ type: i0.Input, args: [{ isSignal: true, alias: "language", required: false }] }], theme: [{ type: i0.Input, args: [{ isSignal: true, alias: "theme", required: false }] }], inline: [{ type: i0.Input, args: [{ isSignal: true, alias: "inline", required: false }] }], showCopyButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showCopyButton", required: false }] }] } });
51
64
 
52
65
  /**
53
66
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"elementar-rt-components-code-highlighter.mjs","sources":["../../../projects/components/code-highlighter/src/code-highlighter/code-highlighter.ts","../../../projects/components/code-highlighter/src/code-highlighter/code-highlighter.html","../../../projects/components/code-highlighter/elementar-rt-components-code-highlighter.ts"],"sourcesContent":["import { Component, ChangeDetectionStrategy, input, OnChanges, SimpleChanges, signal, computed, inject } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { codeToHtml } from 'shiki';\r\n\r\n@Component({\r\n selector: 'emr-code-highlighter',\r\n exportAs: 'emrCodeHighlighter',\r\n templateUrl: './code-highlighter.html',\r\n styleUrl: './code-highlighter.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n 'class': 'emr-code-highlighter',\r\n '[class.is-inline]': 'inline()',\r\n }\r\n})\r\nexport class CodeHighlighter implements OnChanges {\r\n private sanitizer = inject(DomSanitizer);\r\n\r\n code = input.required<string>();\r\n language = input<string>('bash');\r\n theme = input<string>('dracula-soft');\r\n inline = input<boolean>(false);\r\n\r\n readonly content = signal<SafeHtml | null>(null);\r\n readonly isLoading = signal<boolean>(false);\r\n\r\n async ngOnChanges(changes: SimpleChanges) {\r\n if (!this.code()) {\r\n this.content.set(null);\r\n return;\r\n }\r\n this.isLoading.set(true);\r\n try {\r\n const highlighted = await codeToHtml(\r\n this.code(),\r\n {\r\n lang: this.language(),\r\n theme: this.theme(),\r\n }\r\n );\r\n this.content.set(this.sanitizer.bypassSecurityTrustHtml(highlighted));\r\n } catch (e) {\r\n // Fallback: raw code escaped inside pre\r\n const escaped = this.code()\r\n .replace(/&/g, '&amp;')\r\n .replace(/</g, '&lt;')\r\n .replace(/>/g, '&gt;');\r\n const fallback = this.inline() ? `<code>${escaped}</code>` : `<pre class=\"shiki\"><code>${escaped}</code></pre>`;\r\n this.content.set(this.sanitizer.bypassSecurityTrustHtml(fallback));\r\n console.error('CodeHighlighter error:', e);\r\n } finally {\r\n this.isLoading.set(false);\r\n }\r\n }\r\n}\r\n","@if (content()) {\r\n <div [innerHTML]=\"content()\"></div>\r\n} @else {\r\n <div class=\"loading\">Loading…</div>\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;MAea,eAAe,CAAA;AAClB,IAAA,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC;AAExC,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,+CAAU;AAC/B,IAAA,QAAQ,GAAG,KAAK,CAAS,MAAM,oDAAC;AAChC,IAAA,KAAK,GAAG,KAAK,CAAS,cAAc,iDAAC;AACrC,IAAA,MAAM,GAAG,KAAK,CAAU,KAAK,kDAAC;AAErB,IAAA,OAAO,GAAG,MAAM,CAAkB,IAAI,mDAAC;AACvC,IAAA,SAAS,GAAG,MAAM,CAAU,KAAK,qDAAC;IAE3C,MAAM,WAAW,CAAC,OAAsB,EAAA;AACtC,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;YACtB;QACF;AACA,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI;YACF,MAAM,WAAW,GAAG,MAAM,UAAU,CAClC,IAAI,CAAC,IAAI,EAAE,EACX;AACE,gBAAA,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE;AACrB,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACpB,aAAA,CACF;AACD,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;QACvE;QAAE,OAAO,CAAC,EAAE;;AAEV,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI;AACtB,iBAAA,OAAO,CAAC,IAAI,EAAE,OAAO;AACrB,iBAAA,OAAO,CAAC,IAAI,EAAE,MAAM;AACpB,iBAAA,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;AACxB,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAA,MAAA,EAAS,OAAO,SAAS,GAAG,CAAA,yBAAA,EAA4B,OAAO,eAAe;AAC/G,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;AAClE,YAAA,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,CAAC,CAAC;QAC5C;gBAAU;AACR,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;QAC3B;IACF;wGAtCW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,4tBCf5B,oIAKA,EAAA,MAAA,EAAA,CAAA,0cAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FDUa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAX3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,YACtB,oBAAoB,EAAA,eAAA,EAGb,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,OAAO,EAAE,sBAAsB;AAC/B,wBAAA,mBAAmB,EAAE,UAAU;AAChC,qBAAA,EAAA,QAAA,EAAA,oIAAA,EAAA,MAAA,EAAA,CAAA,0cAAA,CAAA,EAAA;;;AEbH;;AAEG;;;;"}
1
+ {"version":3,"file":"elementar-rt-components-code-highlighter.mjs","sources":["../../../projects/components/code-highlighter/src/code-highlighter/code-highlighter.ts","../../../projects/components/code-highlighter/src/code-highlighter/code-highlighter.html","../../../projects/components/code-highlighter/elementar-rt-components-code-highlighter.ts"],"sourcesContent":["import { Component, ChangeDetectionStrategy, input, OnChanges, SimpleChanges, signal, inject, booleanAttribute } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { codeToHtml } from 'shiki';\n\n@Component({\n selector: 'emr-code-highlighter',\n exportAs: 'emrCodeHighlighter',\n templateUrl: './code-highlighter.html',\n styleUrl: './code-highlighter.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'emr-code-highlighter',\n '[class.is-inline]': 'inline()',\n }\n})\nexport class CodeHighlighter implements OnChanges {\n private sanitizer = inject(DomSanitizer);\n\n code = input.required<string>();\n language = input<string>('bash');\n theme = input<string>('dracula-soft');\n inline = input<boolean>(false);\n showCopyButton = input(true, { transform: booleanAttribute });\n\n readonly content = signal<SafeHtml | null>(null);\n readonly isLoading = signal<boolean>(false);\n readonly _copied = signal(false);\n private _copyTimer: ReturnType<typeof setTimeout> | null = null;\n\n protected async _copyCode(): Promise<void> {\n try {\n await navigator.clipboard.writeText(this.code());\n this._copied.set(true);\n if (this._copyTimer) clearTimeout(this._copyTimer);\n this._copyTimer = setTimeout(() => this._copied.set(false), 2000);\n } catch { /* ignore */ }\n }\n\n async ngOnChanges(changes: SimpleChanges) {\n if (!this.code()) {\n this.content.set(null);\n return;\n }\n this.isLoading.set(true);\n try {\n const highlighted = await codeToHtml(\n this.code(),\n {\n lang: this.language(),\n theme: this.theme(),\n }\n );\n this.content.set(this.sanitizer.bypassSecurityTrustHtml(highlighted));\n } catch (e) {\n // Fallback: raw code escaped inside pre\n const escaped = this.code()\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;');\n const fallback = this.inline() ? `<code>${escaped}</code>` : `<pre class=\"shiki\"><code>${escaped}</code></pre>`;\n this.content.set(this.sanitizer.bypassSecurityTrustHtml(fallback));\n console.error('CodeHighlighter error:', e);\n } finally {\n this.isLoading.set(false);\n }\n }\n}\n","@if (!inline() && showCopyButton()) {\n <button\n type=\"button\"\n class=\"copy-btn\"\n [attr.data-copied]=\"_copied() || null\"\n [attr.aria-label]=\"_copied() ? 'Copied!' : 'Copy code'\"\n (click)=\"_copyCode()\"\n >\n @if (_copied()) {\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\"><polyline points=\"20 6 9 17 4 12\"/></svg>\n } @else {\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"/><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"/></svg>\n }\n </button>\n}\n@if (content()) {\n <div [innerHTML]=\"content()\"></div>\n} @else {\n <div class=\"loading\">Loading…</div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}