@elementar-rt/components 0.6.55

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 (259) hide show
  1. package/README.md +49 -0
  2. package/action-required/index.d.ts +13 -0
  3. package/alert/index.d.ts +51 -0
  4. package/announcement/index.d.ts +45 -0
  5. package/avatar/index.d.ts +67 -0
  6. package/block-loader/index.d.ts +21 -0
  7. package/block-state/index.d.ts +33 -0
  8. package/brand-colors/index.d.ts +27 -0
  9. package/breadcrumbs/index.d.ts +104 -0
  10. package/card-overlay/index.d.ts +20 -0
  11. package/carousel/index.d.ts +75 -0
  12. package/code-highlighter/index.d.ts +18 -0
  13. package/color-picker/index.d.ts +92 -0
  14. package/color-scheme/index.d.ts +44 -0
  15. package/command-bar/index.d.ts +28 -0
  16. package/comment-editor/index.d.ts +194 -0
  17. package/comparison-slider/index.d.ts +51 -0
  18. package/confirm/index.d.ts +35 -0
  19. package/content-fade/index.d.ts +17 -0
  20. package/cookie-popup/index.d.ts +41 -0
  21. package/core/index.d.ts +252 -0
  22. package/country-select/index.d.ts +76 -0
  23. package/crop/index.d.ts +59 -0
  24. package/currency-select/index.d.ts +78 -0
  25. package/dashboard/index.d.ts +48 -0
  26. package/data-view/index.d.ts +127 -0
  27. package/date-format-select/index.d.ts +56 -0
  28. package/divider/index.d.ts +13 -0
  29. package/drawer/index.d.ts +35 -0
  30. package/emoji-picker/index.d.ts +49 -0
  31. package/expand/index.d.ts +26 -0
  32. package/fesm2022/elementar-rt-components-action-required.mjs +30 -0
  33. package/fesm2022/elementar-rt-components-action-required.mjs.map +1 -0
  34. package/fesm2022/elementar-rt-components-alert.mjs +139 -0
  35. package/fesm2022/elementar-rt-components-alert.mjs.map +1 -0
  36. package/fesm2022/elementar-rt-components-announcement.mjs +73 -0
  37. package/fesm2022/elementar-rt-components-announcement.mjs.map +1 -0
  38. package/fesm2022/elementar-rt-components-avatar.mjs +234 -0
  39. package/fesm2022/elementar-rt-components-avatar.mjs.map +1 -0
  40. package/fesm2022/elementar-rt-components-block-loader.mjs +54 -0
  41. package/fesm2022/elementar-rt-components-block-loader.mjs.map +1 -0
  42. package/fesm2022/elementar-rt-components-block-state.mjs +75 -0
  43. package/fesm2022/elementar-rt-components-block-state.mjs.map +1 -0
  44. package/fesm2022/elementar-rt-components-brand-colors.mjs +78 -0
  45. package/fesm2022/elementar-rt-components-brand-colors.mjs.map +1 -0
  46. package/fesm2022/elementar-rt-components-breadcrumbs.mjs +213 -0
  47. package/fesm2022/elementar-rt-components-breadcrumbs.mjs.map +1 -0
  48. package/fesm2022/elementar-rt-components-card-overlay.mjs +55 -0
  49. package/fesm2022/elementar-rt-components-card-overlay.mjs.map +1 -0
  50. package/fesm2022/elementar-rt-components-carousel.mjs +605 -0
  51. package/fesm2022/elementar-rt-components-carousel.mjs.map +1 -0
  52. package/fesm2022/elementar-rt-components-code-highlighter.mjs +57 -0
  53. package/fesm2022/elementar-rt-components-code-highlighter.mjs.map +1 -0
  54. package/fesm2022/elementar-rt-components-color-picker.mjs +708 -0
  55. package/fesm2022/elementar-rt-components-color-picker.mjs.map +1 -0
  56. package/fesm2022/elementar-rt-components-color-scheme.mjs +106 -0
  57. package/fesm2022/elementar-rt-components-color-scheme.mjs.map +1 -0
  58. package/fesm2022/elementar-rt-components-command-bar.mjs +59 -0
  59. package/fesm2022/elementar-rt-components-command-bar.mjs.map +1 -0
  60. package/fesm2022/elementar-rt-components-comment-editor.mjs +1039 -0
  61. package/fesm2022/elementar-rt-components-comment-editor.mjs.map +1 -0
  62. package/fesm2022/elementar-rt-components-comparison-slider.mjs +193 -0
  63. package/fesm2022/elementar-rt-components-comparison-slider.mjs.map +1 -0
  64. package/fesm2022/elementar-rt-components-confirm.mjs +86 -0
  65. package/fesm2022/elementar-rt-components-confirm.mjs.map +1 -0
  66. package/fesm2022/elementar-rt-components-content-fade.mjs +35 -0
  67. package/fesm2022/elementar-rt-components-content-fade.mjs.map +1 -0
  68. package/fesm2022/elementar-rt-components-cookie-popup.mjs +109 -0
  69. package/fesm2022/elementar-rt-components-cookie-popup.mjs.map +1 -0
  70. package/fesm2022/elementar-rt-components-core.mjs +837 -0
  71. package/fesm2022/elementar-rt-components-core.mjs.map +1 -0
  72. package/fesm2022/elementar-rt-components-country-select.mjs +477 -0
  73. package/fesm2022/elementar-rt-components-country-select.mjs.map +1 -0
  74. package/fesm2022/elementar-rt-components-crop.mjs +183 -0
  75. package/fesm2022/elementar-rt-components-crop.mjs.map +1 -0
  76. package/fesm2022/elementar-rt-components-currency-select.mjs +384 -0
  77. package/fesm2022/elementar-rt-components-currency-select.mjs.map +1 -0
  78. package/fesm2022/elementar-rt-components-dashboard.mjs +96 -0
  79. package/fesm2022/elementar-rt-components-dashboard.mjs.map +1 -0
  80. package/fesm2022/elementar-rt-components-data-view.mjs +302 -0
  81. package/fesm2022/elementar-rt-components-data-view.mjs.map +1 -0
  82. package/fesm2022/elementar-rt-components-date-format-select.mjs +136 -0
  83. package/fesm2022/elementar-rt-components-date-format-select.mjs.map +1 -0
  84. package/fesm2022/elementar-rt-components-divider.mjs +31 -0
  85. package/fesm2022/elementar-rt-components-divider.mjs.map +1 -0
  86. package/fesm2022/elementar-rt-components-drawer.mjs +131 -0
  87. package/fesm2022/elementar-rt-components-drawer.mjs.map +1 -0
  88. package/fesm2022/elementar-rt-components-emoji-picker.mjs +249 -0
  89. package/fesm2022/elementar-rt-components-emoji-picker.mjs.map +1 -0
  90. package/fesm2022/elementar-rt-components-expand.mjs +60 -0
  91. package/fesm2022/elementar-rt-components-expand.mjs.map +1 -0
  92. package/fesm2022/elementar-rt-components-filter-builder.mjs +333 -0
  93. package/fesm2022/elementar-rt-components-filter-builder.mjs.map +1 -0
  94. package/fesm2022/elementar-rt-components-form-renderer-autocomplete-many-field.component-AqEghjO_.mjs +123 -0
  95. package/fesm2022/elementar-rt-components-form-renderer-autocomplete-many-field.component-AqEghjO_.mjs.map +1 -0
  96. package/fesm2022/elementar-rt-components-form-renderer-checkbox-field.component-CUKmZGFq.mjs +22 -0
  97. package/fesm2022/elementar-rt-components-form-renderer-checkbox-field.component-CUKmZGFq.mjs.map +1 -0
  98. package/fesm2022/elementar-rt-components-form-renderer-datepicker-field.component-DihIRWMt.mjs +40 -0
  99. package/fesm2022/elementar-rt-components-form-renderer-datepicker-field.component-DihIRWMt.mjs.map +1 -0
  100. package/fesm2022/elementar-rt-components-form-renderer-divider-content.component-CjlGcU3B.mjs +17 -0
  101. package/fesm2022/elementar-rt-components-form-renderer-divider-content.component-CjlGcU3B.mjs.map +1 -0
  102. package/fesm2022/elementar-rt-components-form-renderer-image-content.component-0pL2Fk0H.mjs +17 -0
  103. package/fesm2022/elementar-rt-components-form-renderer-image-content.component-0pL2Fk0H.mjs.map +1 -0
  104. package/fesm2022/elementar-rt-components-form-renderer-input-field.component-X2sKvj6J.mjs +33 -0
  105. package/fesm2022/elementar-rt-components-form-renderer-input-field.component-X2sKvj6J.mjs.map +1 -0
  106. package/fesm2022/elementar-rt-components-form-renderer-radio-group-field.component-DWXZAA3F.mjs +38 -0
  107. package/fesm2022/elementar-rt-components-form-renderer-radio-group-field.component-DWXZAA3F.mjs.map +1 -0
  108. package/fesm2022/elementar-rt-components-form-renderer-select-field.component-Cx9DZoD6.mjs +39 -0
  109. package/fesm2022/elementar-rt-components-form-renderer-select-field.component-Cx9DZoD6.mjs.map +1 -0
  110. package/fesm2022/elementar-rt-components-form-renderer-text-content.component-BmFyUG06.mjs +24 -0
  111. package/fesm2022/elementar-rt-components-form-renderer-text-content.component-BmFyUG06.mjs.map +1 -0
  112. package/fesm2022/elementar-rt-components-form-renderer-textarea-field.component-D9KmE049.mjs +37 -0
  113. package/fesm2022/elementar-rt-components-form-renderer-textarea-field.component-D9KmE049.mjs.map +1 -0
  114. package/fesm2022/elementar-rt-components-form-renderer-timezone-field.component-BroP_Q4P.mjs +35 -0
  115. package/fesm2022/elementar-rt-components-form-renderer-timezone-field.component-BroP_Q4P.mjs.map +1 -0
  116. package/fesm2022/elementar-rt-components-form-renderer-toggle-field.component-nGbtVi1_.mjs +22 -0
  117. package/fesm2022/elementar-rt-components-form-renderer-toggle-field.component-nGbtVi1_.mjs.map +1 -0
  118. package/fesm2022/elementar-rt-components-form-renderer.mjs +321 -0
  119. package/fesm2022/elementar-rt-components-form-renderer.mjs.map +1 -0
  120. package/fesm2022/elementar-rt-components-gauge.mjs +50 -0
  121. package/fesm2022/elementar-rt-components-gauge.mjs.map +1 -0
  122. package/fesm2022/elementar-rt-components-icon.mjs +62 -0
  123. package/fesm2022/elementar-rt-components-icon.mjs.map +1 -0
  124. package/fesm2022/elementar-rt-components-image-resizer.mjs +159 -0
  125. package/fesm2022/elementar-rt-components-image-resizer.mjs.map +1 -0
  126. package/fesm2022/elementar-rt-components-image-viewer.mjs +349 -0
  127. package/fesm2022/elementar-rt-components-image-viewer.mjs.map +1 -0
  128. package/fesm2022/elementar-rt-components-incidents.mjs +259 -0
  129. package/fesm2022/elementar-rt-components-incidents.mjs.map +1 -0
  130. package/fesm2022/elementar-rt-components-inline-text-edit.mjs +181 -0
  131. package/fesm2022/elementar-rt-components-inline-text-edit.mjs.map +1 -0
  132. package/fesm2022/elementar-rt-components-input-mask.mjs +180 -0
  133. package/fesm2022/elementar-rt-components-input-mask.mjs.map +1 -0
  134. package/fesm2022/elementar-rt-components-input-validator.mjs +24 -0
  135. package/fesm2022/elementar-rt-components-input-validator.mjs.map +1 -0
  136. package/fesm2022/elementar-rt-components-kanban-board.mjs +156 -0
  137. package/fesm2022/elementar-rt-components-kanban-board.mjs.map +1 -0
  138. package/fesm2022/elementar-rt-components-layout.mjs +188 -0
  139. package/fesm2022/elementar-rt-components-layout.mjs.map +1 -0
  140. package/fesm2022/elementar-rt-components-logo.mjs +43 -0
  141. package/fesm2022/elementar-rt-components-logo.mjs.map +1 -0
  142. package/fesm2022/elementar-rt-components-marquee.mjs +79 -0
  143. package/fesm2022/elementar-rt-components-marquee.mjs.map +1 -0
  144. package/fesm2022/elementar-rt-components-micro-chart.mjs +950 -0
  145. package/fesm2022/elementar-rt-components-micro-chart.mjs.map +1 -0
  146. package/fesm2022/elementar-rt-components-navigation.mjs +379 -0
  147. package/fesm2022/elementar-rt-components-navigation.mjs.map +1 -0
  148. package/fesm2022/elementar-rt-components-notifications.mjs +190 -0
  149. package/fesm2022/elementar-rt-components-notifications.mjs.map +1 -0
  150. package/fesm2022/elementar-rt-components-number-input.mjs +288 -0
  151. package/fesm2022/elementar-rt-components-number-input.mjs.map +1 -0
  152. package/fesm2022/elementar-rt-components-overlay-scrollbar.mjs +455 -0
  153. package/fesm2022/elementar-rt-components-overlay-scrollbar.mjs.map +1 -0
  154. package/fesm2022/elementar-rt-components-overlay.mjs +112 -0
  155. package/fesm2022/elementar-rt-components-overlay.mjs.map +1 -0
  156. package/fesm2022/elementar-rt-components-page-loading-bar.mjs +79 -0
  157. package/fesm2022/elementar-rt-components-page-loading-bar.mjs.map +1 -0
  158. package/fesm2022/elementar-rt-components-panel.mjs +105 -0
  159. package/fesm2022/elementar-rt-components-panel.mjs.map +1 -0
  160. package/fesm2022/elementar-rt-components-password-strength.mjs +474 -0
  161. package/fesm2022/elementar-rt-components-password-strength.mjs.map +1 -0
  162. package/fesm2022/elementar-rt-components-phone-input.mjs +637 -0
  163. package/fesm2022/elementar-rt-components-phone-input.mjs.map +1 -0
  164. package/fesm2022/elementar-rt-components-pin-input.mjs +197 -0
  165. package/fesm2022/elementar-rt-components-pin-input.mjs.map +1 -0
  166. package/fesm2022/elementar-rt-components-popover.mjs +262 -0
  167. package/fesm2022/elementar-rt-components-popover.mjs.map +1 -0
  168. package/fesm2022/elementar-rt-components-radio-card.mjs +102 -0
  169. package/fesm2022/elementar-rt-components-radio-card.mjs.map +1 -0
  170. package/fesm2022/elementar-rt-components-rail-nav.mjs +84 -0
  171. package/fesm2022/elementar-rt-components-rail-nav.mjs.map +1 -0
  172. package/fesm2022/elementar-rt-components-resizable-container.mjs +69 -0
  173. package/fesm2022/elementar-rt-components-resizable-container.mjs.map +1 -0
  174. package/fesm2022/elementar-rt-components-screen-loader.mjs +27 -0
  175. package/fesm2022/elementar-rt-components-screen-loader.mjs.map +1 -0
  176. package/fesm2022/elementar-rt-components-scroll-spy.mjs +165 -0
  177. package/fesm2022/elementar-rt-components-scroll-spy.mjs.map +1 -0
  178. package/fesm2022/elementar-rt-components-segmented.mjs +153 -0
  179. package/fesm2022/elementar-rt-components-segmented.mjs.map +1 -0
  180. package/fesm2022/elementar-rt-components-side-panel.mjs +110 -0
  181. package/fesm2022/elementar-rt-components-side-panel.mjs.map +1 -0
  182. package/fesm2022/elementar-rt-components-sidebar.mjs +423 -0
  183. package/fesm2022/elementar-rt-components-sidebar.mjs.map +1 -0
  184. package/fesm2022/elementar-rt-components-signature-pad.mjs +452 -0
  185. package/fesm2022/elementar-rt-components-signature-pad.mjs.map +1 -0
  186. package/fesm2022/elementar-rt-components-skeleton.mjs +56 -0
  187. package/fesm2022/elementar-rt-components-skeleton.mjs.map +1 -0
  188. package/fesm2022/elementar-rt-components-splash-screen.mjs +91 -0
  189. package/fesm2022/elementar-rt-components-splash-screen.mjs.map +1 -0
  190. package/fesm2022/elementar-rt-components-stepper.mjs +194 -0
  191. package/fesm2022/elementar-rt-components-stepper.mjs.map +1 -0
  192. package/fesm2022/elementar-rt-components-suggestions.mjs +76 -0
  193. package/fesm2022/elementar-rt-components-suggestions.mjs.map +1 -0
  194. package/fesm2022/elementar-rt-components-tab-panel.mjs +270 -0
  195. package/fesm2022/elementar-rt-components-tab-panel.mjs.map +1 -0
  196. package/fesm2022/elementar-rt-components-text-editor.mjs +1025 -0
  197. package/fesm2022/elementar-rt-components-text-editor.mjs.map +1 -0
  198. package/fesm2022/elementar-rt-components-thumbnail-maker.mjs +214 -0
  199. package/fesm2022/elementar-rt-components-thumbnail-maker.mjs.map +1 -0
  200. package/fesm2022/elementar-rt-components-timeline.mjs +122 -0
  201. package/fesm2022/elementar-rt-components-timeline.mjs.map +1 -0
  202. package/fesm2022/elementar-rt-components-timezone-select.mjs +351 -0
  203. package/fesm2022/elementar-rt-components-timezone-select.mjs.map +1 -0
  204. package/fesm2022/elementar-rt-components-upload.mjs +340 -0
  205. package/fesm2022/elementar-rt-components-upload.mjs.map +1 -0
  206. package/fesm2022/elementar-rt-components.mjs +6 -0
  207. package/fesm2022/elementar-rt-components.mjs.map +1 -0
  208. package/filter-builder/index.d.ts +107 -0
  209. package/form-renderer/index.d.ts +121 -0
  210. package/gauge/index.d.ts +21 -0
  211. package/icon/index.d.ts +17 -0
  212. package/image-resizer/index.d.ts +35 -0
  213. package/image-viewer/index.d.ts +63 -0
  214. package/incidents/index.d.ts +119 -0
  215. package/index.d.ts +2 -0
  216. package/inline-text-edit/index.d.ts +39 -0
  217. package/input-mask/index.d.ts +36 -0
  218. package/input-validator/index.d.ts +5 -0
  219. package/kanban-board/index.d.ts +68 -0
  220. package/layout/index.d.ts +75 -0
  221. package/logo/index.d.ts +21 -0
  222. package/marquee/index.d.ts +26 -0
  223. package/micro-chart/index.d.ts +193 -0
  224. package/navigation/index.d.ts +119 -0
  225. package/notifications/index.d.ts +84 -0
  226. package/number-input/index.d.ts +93 -0
  227. package/overlay/index.d.ts +12 -0
  228. package/overlay-scrollbar/index.d.ts +66 -0
  229. package/package.json +356 -0
  230. package/page-loading-bar/index.d.ts +20 -0
  231. package/panel/index.d.ts +43 -0
  232. package/password-strength/index.d.ts +109 -0
  233. package/phone-input/index.d.ts +94 -0
  234. package/pin-input/index.d.ts +48 -0
  235. package/popover/index.d.ts +75 -0
  236. package/radio-card/index.d.ts +37 -0
  237. package/rail-nav/index.d.ts +36 -0
  238. package/resizable-container/index.d.ts +21 -0
  239. package/screen-loader/index.d.ts +9 -0
  240. package/scroll-spy/index.d.ts +48 -0
  241. package/segmented/index.d.ts +54 -0
  242. package/side-panel/index.d.ts +42 -0
  243. package/sidebar/index.d.ts +143 -0
  244. package/signature-pad/index.d.ts +49 -0
  245. package/skeleton/index.d.ts +24 -0
  246. package/splash-screen/index.d.ts +31 -0
  247. package/stepper/index.d.ts +65 -0
  248. package/styles/_common.scss +776 -0
  249. package/styles/themes/cyan-orange.scss +41 -0
  250. package/styles/themes/default.scss +5 -0
  251. package/styles/themes/magenta-violet.scss +41 -0
  252. package/styles/themes/rose-red.scss +41 -0
  253. package/suggestions/index.d.ts +32 -0
  254. package/tab-panel/index.d.ts +96 -0
  255. package/text-editor/index.d.ts +191 -0
  256. package/thumbnail-maker/index.d.ts +35 -0
  257. package/timeline/index.d.ts +57 -0
  258. package/timezone-select/index.d.ts +72 -0
  259. package/upload/index.d.ts +134 -0
@@ -0,0 +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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"}
@@ -0,0 +1,57 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, input, signal, ChangeDetectionStrategy, Component } from '@angular/core';
3
+ import { DomSanitizer } from '@angular/platform-browser';
4
+ import { codeToHtml } from 'shiki';
5
+
6
+ class CodeHighlighter {
7
+ sanitizer = inject(DomSanitizer);
8
+ code = input.required(...(ngDevMode ? [{ debugName: "code" }] : []));
9
+ language = input('bash', ...(ngDevMode ? [{ debugName: "language" }] : []));
10
+ theme = input('dracula-soft', ...(ngDevMode ? [{ debugName: "theme" }] : []));
11
+ inline = input(false, ...(ngDevMode ? [{ debugName: "inline" }] : []));
12
+ content = signal(null, ...(ngDevMode ? [{ debugName: "content" }] : []));
13
+ isLoading = signal(false, ...(ngDevMode ? [{ debugName: "isLoading" }] : []));
14
+ async ngOnChanges(changes) {
15
+ if (!this.code()) {
16
+ this.content.set(null);
17
+ return;
18
+ }
19
+ this.isLoading.set(true);
20
+ try {
21
+ const highlighted = await codeToHtml(this.code(), {
22
+ lang: this.language(),
23
+ theme: this.theme(),
24
+ });
25
+ this.content.set(this.sanitizer.bypassSecurityTrustHtml(highlighted));
26
+ }
27
+ catch (e) {
28
+ // Fallback: raw code escaped inside pre
29
+ const escaped = this.code()
30
+ .replace(/&/g, '&amp;')
31
+ .replace(/</g, '&lt;')
32
+ .replace(/>/g, '&gt;');
33
+ const fallback = this.inline() ? `<code>${escaped}</code>` : `<pre class="shiki"><code>${escaped}</code></pre>`;
34
+ this.content.set(this.sanitizer.bypassSecurityTrustHtml(fallback));
35
+ console.error('CodeHighlighter error:', e);
36
+ }
37
+ finally {
38
+ this.isLoading.set(false);
39
+ }
40
+ }
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 });
43
+ }
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: CodeHighlighter, decorators: [{
45
+ type: Component,
46
+ args: [{ selector: 'emr-code-highlighter', exportAs: 'emrCodeHighlighter', changeDetection: ChangeDetectionStrategy.OnPush, host: {
47
+ 'class': 'emr-code-highlighter',
48
+ '[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 }] }] } });
51
+
52
+ /**
53
+ * Generated bundle index. Do not edit.
54
+ */
55
+
56
+ export { CodeHighlighter };
57
+ //# sourceMappingURL=elementar-rt-components-code-highlighter.mjs.map
@@ -0,0 +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;;;;"}