@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,91 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, Renderer2, ElementRef, input, numberAttribute, effect, afterNextRender, Component } from '@angular/core';
3
+ import { signalStore, withState, withMethods, patchState, getState } from '@ngrx/signals';
4
+ import { filter } from 'rxjs';
5
+ import { Router, NavigationEnd } from '@angular/router';
6
+
7
+ const initialState = {
8
+ visible: true
9
+ };
10
+ const SplashScreenStore = signalStore({ providedIn: 'root' }, withState(initialState), withMethods((store) => ({
11
+ show() {
12
+ patchState(store, {
13
+ visible: true
14
+ });
15
+ },
16
+ hide() {
17
+ patchState(store, {
18
+ visible: false
19
+ });
20
+ }
21
+ })));
22
+
23
+ class SplashScreenComponent {
24
+ _store = inject(SplashScreenStore);
25
+ _renderer = inject(Renderer2);
26
+ _elementRef = inject(ElementRef);
27
+ _router = inject(Router);
28
+ animationDuration = input(500, ...(ngDevMode ? [{ debugName: "animationDuration", transform: numberAttribute }] : [{
29
+ transform: numberAttribute
30
+ }])); // in milliseconds
31
+ hideDelay = input(1000, ...(ngDevMode ? [{ debugName: "hideDelay", transform: numberAttribute }] : [{
32
+ transform: numberAttribute
33
+ }])); // in milliseconds
34
+ constructor() {
35
+ const initialState = getState(this._store);
36
+ effect(() => {
37
+ const currentState = getState(this._store);
38
+ if (initialState.visible === currentState.visible) {
39
+ return;
40
+ }
41
+ if (currentState.visible) {
42
+ this._show();
43
+ }
44
+ else {
45
+ this._hide();
46
+ }
47
+ });
48
+ afterNextRender(() => {
49
+ const subscription = this._router.events
50
+ .pipe(filter(event => event instanceof NavigationEnd))
51
+ .subscribe(() => {
52
+ subscription.unsubscribe();
53
+ setTimeout(() => {
54
+ this._hide();
55
+ subscription.unsubscribe();
56
+ }, this.hideDelay());
57
+ });
58
+ });
59
+ }
60
+ ngOnInit() {
61
+ this._renderer.setProperty(this._elementRef.nativeElement, '--emr-splash-screen-hide-animation-duration', (this.animationDuration() / 1000) + 's');
62
+ }
63
+ _show() {
64
+ const loaderEl = this._elementRef.nativeElement;
65
+ this._renderer.setStyle(loaderEl, 'visibility', 'visible');
66
+ this._renderer.setStyle(loaderEl, 'zIndex', '9999999');
67
+ }
68
+ _hide() {
69
+ const loaderEl = this._elementRef.nativeElement;
70
+ this._renderer.addClass(loaderEl, 'hide');
71
+ setTimeout(() => {
72
+ this._renderer.setStyle(loaderEl, 'visibility', 'hidden');
73
+ this._renderer.setStyle(loaderEl, 'zIndex', '-9999999');
74
+ }, this.animationDuration());
75
+ }
76
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: SplashScreenComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
77
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.10", type: SplashScreenComponent, isStandalone: true, selector: "emr-splash-screen", inputs: { animationDuration: { classPropertyName: "animationDuration", publicName: "animationDuration", isSignal: true, isRequired: false, transformFunction: null }, hideDelay: { classPropertyName: "hideDelay", publicName: "hideDelay", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "emr-splash-screen" }, exportAs: ["emrSplashScreen"], ngImport: i0, template: "<div>\r\n <ng-content select=\"emr-text-logo,emr-image-logo\"/>\r\n</div>\r\n", styles: [":host{--emr-splash-screen-bg: var(--color-background);-webkit-user-select:none;user-select:none;position:fixed;inset:0;z-index:9999999;display:flex;align-items:center;justify-content:center;flex-direction:column;visibility:visible;background:var(--emr-splash-screen-bg);--emr-splash-screen-hide-animation-duration: .5s}:host.hide{opacity:0;transition:opacity var(--emr-splash-screen-hide-animation-duration) ease-in-out}\n/*! tailwindcss v4.1.14 | MIT License | https://tailwindcss.com */\n"] });
78
+ }
79
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: SplashScreenComponent, decorators: [{
80
+ type: Component,
81
+ args: [{ selector: 'emr-splash-screen', exportAs: 'emrSplashScreen', imports: [], host: {
82
+ 'class': 'emr-splash-screen',
83
+ }, template: "<div>\r\n <ng-content select=\"emr-text-logo,emr-image-logo\"/>\r\n</div>\r\n", styles: [":host{--emr-splash-screen-bg: var(--color-background);-webkit-user-select:none;user-select:none;position:fixed;inset:0;z-index:9999999;display:flex;align-items:center;justify-content:center;flex-direction:column;visibility:visible;background:var(--emr-splash-screen-bg);--emr-splash-screen-hide-animation-duration: .5s}:host.hide{opacity:0;transition:opacity var(--emr-splash-screen-hide-animation-duration) ease-in-out}\n/*! tailwindcss v4.1.14 | MIT License | https://tailwindcss.com */\n"] }]
84
+ }], ctorParameters: () => [], propDecorators: { animationDuration: [{ type: i0.Input, args: [{ isSignal: true, alias: "animationDuration", required: false }] }], hideDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideDelay", required: false }] }] } });
85
+
86
+ /**
87
+ * Generated bundle index. Do not edit.
88
+ */
89
+
90
+ export { SplashScreenComponent, SplashScreenStore };
91
+ //# sourceMappingURL=elementar-rt-components-splash-screen.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elementar-rt-components-splash-screen.mjs","sources":["../../../projects/components/splash-screen/src/splash-screen.store.ts","../../../projects/components/splash-screen/src/splash-screen/splash-screen.component.ts","../../../projects/components/splash-screen/src/splash-screen/splash-screen.component.html","../../../projects/components/splash-screen/elementar-rt-components-splash-screen.ts"],"sourcesContent":["import { patchState, signalStore, withMethods, withState } from '@ngrx/signals';\r\n\r\nexport interface SplashScreenState {\r\n visible: boolean;\r\n}\r\n\r\nconst initialState: SplashScreenState = {\r\n visible: true\r\n};\r\n\r\nexport const SplashScreenStore = signalStore(\r\n { providedIn: 'root' },\r\n withState(initialState),\r\n withMethods((store) => ({\r\n show(): void {\r\n patchState(store, {\r\n visible: true\r\n });\r\n },\r\n hide(): void {\r\n patchState(store, {\r\n visible: false\r\n });\r\n }\r\n }))\r\n);\r\n","import {\r\n afterNextRender,\r\n Component,\r\n effect,\r\n ElementRef,\r\n inject,\r\n input,\r\n numberAttribute,\r\n Renderer2\r\n} from '@angular/core';\r\nimport { getState } from '@ngrx/signals';\r\nimport { SplashScreenState, SplashScreenStore } from '../splash-screen.store';\r\nimport { filter } from 'rxjs';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'emr-splash-screen',\r\n exportAs: 'emrSplashScreen',\r\n imports: [],\r\n templateUrl: './splash-screen.component.html',\r\n styleUrl: './splash-screen.component.scss',\r\n host: {\r\n 'class': 'emr-splash-screen',\r\n }\r\n})\r\nexport class SplashScreenComponent {\r\n private _store = inject(SplashScreenStore);\r\n private _renderer = inject(Renderer2);\r\n private _elementRef = inject(ElementRef);\r\n private _router = inject(Router);\r\n\r\n animationDuration = input(500, {\r\n transform: numberAttribute\r\n }); // in milliseconds\r\n hideDelay = input(1000, {\r\n transform: numberAttribute\r\n }); // in milliseconds\r\n\r\n constructor() {\r\n const initialState = getState<SplashScreenState>(this._store);\r\n\r\n effect(() => {\r\n const currentState = getState<SplashScreenState>(this._store);\r\n\r\n if (initialState.visible === currentState.visible) {\r\n return;\r\n }\r\n\r\n if (currentState.visible) {\r\n this._show();\r\n } else {\r\n this._hide();\r\n }\r\n });\r\n\r\n afterNextRender(() => {\r\n const subscription = this._router.events\r\n .pipe(\r\n filter(event=> event instanceof NavigationEnd)\r\n )\r\n .subscribe(() => {\r\n subscription.unsubscribe();\r\n setTimeout(() => {\r\n this._hide();\r\n subscription.unsubscribe();\r\n }, this.hideDelay());\r\n })\r\n ;\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this._renderer.setProperty(\r\n this._elementRef.nativeElement, '--emr-splash-screen-hide-animation-duration', (this.animationDuration() / 1000) + 's'\r\n );\r\n }\r\n\r\n private _show(): void {\r\n const loaderEl = this._elementRef.nativeElement as HTMLElement;\r\n this._renderer.setStyle(loaderEl, 'visibility', 'visible');\r\n this._renderer.setStyle(loaderEl, 'zIndex', '9999999');\r\n }\r\n\r\n private _hide(): void {\r\n const loaderEl = this._elementRef.nativeElement as HTMLElement;\r\n this._renderer.addClass(loaderEl, 'hide');\r\n setTimeout(() => {\r\n this._renderer.setStyle(loaderEl, 'visibility', 'hidden');\r\n this._renderer.setStyle(loaderEl, 'zIndex', '-9999999');\r\n }, this.animationDuration());\r\n }\r\n}\r\n","<div>\r\n <ng-content select=\"emr-text-logo,emr-image-logo\"/>\r\n</div>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,194 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, signal, inject, DestroyRef, effect, computed, ChangeDetectionStrategy, Component, model, contentChildren } from '@angular/core';
3
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
+ import { startWith } from 'rxjs/operators';
5
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
6
+
7
+ class StepComponent {
8
+ /** Form control associated with this step */
9
+ stepControl = input(undefined, ...(ngDevMode ? [{ debugName: "stepControl" }] : []));
10
+ /** Whether the step is optional */
11
+ optional = input(false, ...(ngDevMode ? [{ debugName: "optional" }] : []));
12
+ /** Whether the user has interacted with this step (writable signal) */
13
+ interacted = signal(false, ...(ngDevMode ? [{ debugName: "interacted" }] : []));
14
+ /** Whether this step is currently active (writable signal, controlled by Stepper) */
15
+ isActive = signal(false, ...(ngDevMode ? [{ debugName: "isActive" }] : []));
16
+ /** Internal writable signal tracking the validity of the stepControl */
17
+ _isValid = signal(true, ...(ngDevMode ? [{ debugName: "_isValid" }] : [])); // Default to true if no control
18
+ _destroyRef = inject(DestroyRef); // Inject DestroyRef for automatic cleanup
19
+ constructor() {
20
+ effect(() => {
21
+ const control = this.stepControl(); // Read the input signal
22
+ if (control) {
23
+ // Set initial validity based on the control's current state when the effect runs
24
+ this._isValid.set(control.valid);
25
+ // Subscribe to statusChanges and update the _isValid signal
26
+ // Use takeUntilDestroyed for automatic cleanup when the component is destroyed
27
+ control.statusChanges.pipe(startWith(control.status), // Emit initial status immediately to sync _isValid
28
+ takeUntilDestroyed(this._destroyRef) // Automatically unsubscribe on component destroy
29
+ ).subscribe(() => {
30
+ // Update the internal validity signal whenever the control's status changes
31
+ this._isValid.set(control.valid);
32
+ });
33
+ }
34
+ else {
35
+ // If no control is provided, consider the step inherently valid for completion
36
+ this._isValid.set(true);
37
+ }
38
+ });
39
+ }
40
+ /** Computed signal indicating if the step is completed */
41
+ completed = computed(() => {
42
+ // A step is completed if it doesn't have a stepControl or
43
+ // if the internal _isValid signal (reflecting the control's validity) is true.
44
+ return !this.stepControl() || this._isValid();
45
+ }, ...(ngDevMode ? [{ debugName: "completed" }] : []));
46
+ /**
47
+ * Checks if the step is currently valid.
48
+ * Considers the validity of the associated stepControl if provided.
49
+ * @returns boolean True if the step is valid, false otherwise.
50
+ */
51
+ isValid() {
52
+ return this._isValid(); // Directly return the tracked validity state
53
+ }
54
+ /** Resets the step's interacted state */
55
+ reset() {
56
+ this.interacted.set(false);
57
+ }
58
+ /** Sets the active state of the step */
59
+ setActive(active) {
60
+ this.isActive.set(active);
61
+ }
62
+ /** Sets the interacted state of the step */
63
+ setInteracted(interacted) {
64
+ this.interacted.set(interacted);
65
+ }
66
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: StepComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
67
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.10", type: StepComponent, isStandalone: true, selector: "emr-step", inputs: { stepControl: { classPropertyName: "stepControl", publicName: "stepControl", isSignal: true, isRequired: false, transformFunction: null }, optional: { classPropertyName: "optional", publicName: "optional", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style.display": "isActive() ? \"block\" : \"none\"" }, classAttribute: "emr-step" }, exportAs: ["emrStep"], ngImport: i0, template: `<ng-content/>`, isInline: true, styles: [":host{display:block}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
68
+ }
69
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: StepComponent, decorators: [{
70
+ type: Component,
71
+ args: [{ selector: 'emr-step', exportAs: 'emrStep', template: `<ng-content/>`, changeDetection: ChangeDetectionStrategy.OnPush, host: {
72
+ 'class': 'emr-step',
73
+ '[style.display]': 'isActive() ? "block" : "none"',
74
+ }, styles: [":host{display:block}\n"] }]
75
+ }], ctorParameters: () => [], propDecorators: { stepControl: [{ type: i0.Input, args: [{ isSignal: true, alias: "stepControl", required: false }] }], optional: [{ type: i0.Input, args: [{ isSignal: true, alias: "optional", required: false }] }] } });
76
+
77
+ class StepperComponent {
78
+ /** Whether the stepper should operate in linear mode. */
79
+ linear = input(false, ...(ngDevMode ? [{ debugName: "linear", transform: coerceBooleanProperty }] : [{
80
+ transform: coerceBooleanProperty
81
+ }]));
82
+ /** The index of the active step (two-way bound). */
83
+ selectedIndex = model(0, ...(ngDevMode ? [{ debugName: "selectedIndex" }] : []));
84
+ /** Collection of child StepComponent instances. */
85
+ steps = contentChildren(StepComponent, ...(ngDevMode ? [{ debugName: "steps" }] : []));
86
+ /** Computed signal for the total number of steps. */
87
+ stepsCount = computed(() => {
88
+ return this.steps()?.length ?? 0;
89
+ }, ...(ngDevMode ? [{ debugName: "stepsCount" }] : []));
90
+ /** The currently selected StepComponent instance. */
91
+ selected = computed(() => {
92
+ const index = this.selectedIndex();
93
+ const stepList = this.steps();
94
+ // Use the stepsCount() computed signal for checking length
95
+ return stepList && index >= 0 && index < this.stepsCount() ? stepList[index] : undefined;
96
+ }, ...(ngDevMode ? [{ debugName: "selected" }] : []));
97
+ /** Checks if the user can navigate to the next step. */
98
+ canMoveNext = computed(() => {
99
+ const index = this.selectedIndex();
100
+ // Use stepsCount() signal
101
+ const totalSteps = this.stepsCount();
102
+ const currentSelected = this.selected();
103
+ const isLinear = this.linear();
104
+ // Cannot move next if there are no steps or already on the last step
105
+ if (totalSteps === 0 || index >= totalSteps - 1) {
106
+ return false;
107
+ }
108
+ if (!isLinear || !currentSelected) {
109
+ return true;
110
+ }
111
+ return currentSelected.completed() || currentSelected.optional();
112
+ }, ...(ngDevMode ? [{ debugName: "canMoveNext" }] : []));
113
+ /** Computed signal indicating if the current step is the first step. */
114
+ isFirstStep = computed(() => {
115
+ const index = this.selectedIndex();
116
+ // Use stepsCount() signal
117
+ return index === 0 && this.stepsCount() > 0;
118
+ }, ...(ngDevMode ? [{ debugName: "isFirstStep" }] : []));
119
+ /** Computed signal indicating if the current step is the last step. */
120
+ isLastStep = computed(() => {
121
+ const index = this.selectedIndex();
122
+ // Use stepsCount() signal
123
+ const totalSteps = this.stepsCount();
124
+ return totalSteps > 0 && index === totalSteps - 1;
125
+ }, ...(ngDevMode ? [{ debugName: "isLastStep" }] : []));
126
+ /** Computed signal calculating the progress percentage. */
127
+ progressPercent = computed(() => {
128
+ const totalSteps = this.stepsCount();
129
+ const index = this.selectedIndex();
130
+ if (totalSteps === 0) {
131
+ return 0;
132
+ }
133
+ const progress = (100 / totalSteps) * (index + 1);
134
+ return Math.max(0, Math.min(100, progress));
135
+ }, ...(ngDevMode ? [{ debugName: "progressPercent" }] : []));
136
+ constructor() {
137
+ effect(() => {
138
+ const currentSteps = this.steps();
139
+ const currentIndex = this.selectedIndex();
140
+ currentSteps.forEach((step, index) => step.setActive(index === currentIndex));
141
+ });
142
+ effect((onCleanup) => {
143
+ const currentSelected = this.selected();
144
+ if (currentSelected && !currentSelected.interacted()) {
145
+ currentSelected.setInteracted(true);
146
+ }
147
+ });
148
+ effect(() => {
149
+ const totalSteps = this.stepsCount();
150
+ const currentIndex = this.selectedIndex();
151
+ if (totalSteps > 0) {
152
+ const newIndex = Math.max(0, Math.min(currentIndex, totalSteps - 1));
153
+ if (newIndex !== currentIndex)
154
+ this.selectedIndex.set(newIndex);
155
+ }
156
+ else if (currentIndex !== 0) {
157
+ this.selectedIndex.set(0);
158
+ }
159
+ });
160
+ }
161
+ /** Navigates to the next step if possible. */
162
+ next() {
163
+ if (this.canMoveNext()) {
164
+ this.selectedIndex.update(i => i + 1);
165
+ }
166
+ }
167
+ /** Navigates to the previous step if possible. */
168
+ previous() {
169
+ // Use renamed computed signal for check
170
+ if (!this.isFirstStep()) {
171
+ this.selectedIndex.update(i => i - 1);
172
+ }
173
+ }
174
+ /** Resets the stepper to the first step. */
175
+ reset() {
176
+ this.steps().forEach(step => step.reset());
177
+ this.selectedIndex.set(0);
178
+ }
179
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: StepperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
180
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.10", type: StepperComponent, isStandalone: true, selector: "emr-stepper", inputs: { linear: { classPropertyName: "linear", publicName: "linear", isSignal: true, isRequired: false, transformFunction: null }, selectedIndex: { classPropertyName: "selectedIndex", publicName: "selectedIndex", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedIndex: "selectedIndexChange" }, host: { classAttribute: "emr-stepper" }, queries: [{ propertyName: "steps", predicate: StepComponent, isSignal: true }], exportAs: ["emrStepper"], ngImport: i0, template: `<ng-content select="emr-step"/>`, isInline: true, styles: [":host{display:block}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
181
+ }
182
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: StepperComponent, decorators: [{
183
+ type: Component,
184
+ args: [{ selector: 'emr-stepper', exportAs: 'emrStepper', standalone: true, template: `<ng-content select="emr-step"/>`, changeDetection: ChangeDetectionStrategy.OnPush, host: {
185
+ 'class': 'emr-stepper',
186
+ }, styles: [":host{display:block}\n"] }]
187
+ }], ctorParameters: () => [], propDecorators: { linear: [{ type: i0.Input, args: [{ isSignal: true, alias: "linear", required: false }] }], selectedIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedIndex", required: false }] }, { type: i0.Output, args: ["selectedIndexChange"] }], steps: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => StepComponent), { isSignal: true }] }] } });
188
+
189
+ /**
190
+ * Generated bundle index. Do not edit.
191
+ */
192
+
193
+ export { StepComponent, StepperComponent };
194
+ //# sourceMappingURL=elementar-rt-components-stepper.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elementar-rt-components-stepper.mjs","sources":["../../../projects/components/stepper/src/step.component.ts","../../../projects/components/stepper/src/stepper.component.ts","../../../projects/components/stepper/elementar-rt-components-stepper.ts"],"sourcesContent":["import {\r\n Component,\r\n ChangeDetectionStrategy,\r\n input,\r\n signal,\r\n computed,\r\n effect,\r\n inject,\r\n DestroyRef\r\n} from '@angular/core';\r\nimport { AbstractControl } from '@angular/forms';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { startWith } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'emr-step',\r\n exportAs: 'emrStep',\r\n template: `<ng-content/>`,\r\n styles: [`\r\n :host {\r\n display: block;\r\n }\r\n `],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n 'class': 'emr-step',\r\n '[style.display]': 'isActive() ? \"block\" : \"none\"',\r\n }\r\n})\r\nexport class StepComponent {\r\n /** Form control associated with this step */\r\n stepControl = input<AbstractControl | undefined>(undefined);\r\n /** Whether the step is optional */\r\n optional = input(false);\r\n\r\n /** Whether the user has interacted with this step (writable signal) */\r\n readonly interacted = signal(false);\r\n /** Whether this step is currently active (writable signal, controlled by Stepper) */\r\n readonly isActive = signal(false);\r\n /** Internal writable signal tracking the validity of the stepControl */\r\n private readonly _isValid = signal(true); // Default to true if no control\r\n\r\n private _destroyRef = inject(DestroyRef); // Inject DestroyRef for automatic cleanup\r\n\r\n constructor() {\r\n effect(() => {\r\n const control = this.stepControl(); // Read the input signal\r\n\r\n if (control) {\r\n // Set initial validity based on the control's current state when the effect runs\r\n this._isValid.set(control.valid);\r\n\r\n // Subscribe to statusChanges and update the _isValid signal\r\n // Use takeUntilDestroyed for automatic cleanup when the component is destroyed\r\n control.statusChanges.pipe(\r\n startWith(control.status), // Emit initial status immediately to sync _isValid\r\n takeUntilDestroyed(this._destroyRef) // Automatically unsubscribe on component destroy\r\n ).subscribe(() => {\r\n // Update the internal validity signal whenever the control's status changes\r\n this._isValid.set(control.valid);\r\n });\r\n\r\n } else {\r\n // If no control is provided, consider the step inherently valid for completion\r\n this._isValid.set(true);\r\n }\r\n });\r\n }\r\n\r\n /** Computed signal indicating if the step is completed */\r\n readonly completed = computed(() => {\r\n // A step is completed if it doesn't have a stepControl or\r\n // if the internal _isValid signal (reflecting the control's validity) is true.\r\n return !this.stepControl() || this._isValid();\r\n });\r\n\r\n /**\r\n * Checks if the step is currently valid.\r\n * Considers the validity of the associated stepControl if provided.\r\n * @returns boolean True if the step is valid, false otherwise.\r\n */\r\n public isValid(): boolean {\r\n return this._isValid(); // Directly return the tracked validity state\r\n }\r\n\r\n /** Resets the step's interacted state */\r\n reset(): void {\r\n this.interacted.set(false);\r\n }\r\n\r\n /** Sets the active state of the step */\r\n setActive(active: boolean): void {\r\n this.isActive.set(active);\r\n }\r\n\r\n /** Sets the interacted state of the step */\r\n setInteracted(interacted: boolean): void {\r\n this.interacted.set(interacted);\r\n }\r\n}\r\n","import {\r\n Component,\r\n ChangeDetectionStrategy,\r\n effect,\r\n computed,\r\n input,\r\n model,\r\n contentChildren,\r\n} from '@angular/core';\r\nimport { StepComponent } from './step.component';\r\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\r\n\r\n@Component({\r\n selector: 'emr-stepper',\r\n exportAs: 'emrStepper',\r\n standalone: true,\r\n template: `<ng-content select=\"emr-step\"/>`,\r\n styles: [`\r\n :host {\r\n display: block;\r\n }\r\n `],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n 'class': 'emr-stepper',\r\n },\r\n})\r\nexport class StepperComponent {\r\n /** Whether the stepper should operate in linear mode. */\r\n readonly linear = input(false, {\r\n transform: coerceBooleanProperty\r\n });\r\n /** The index of the active step (two-way bound). */\r\n readonly selectedIndex = model(0);\r\n\r\n /** Collection of child StepComponent instances. */\r\n readonly steps = contentChildren(StepComponent);\r\n\r\n /** Computed signal for the total number of steps. */\r\n readonly stepsCount = computed(() => {\r\n return this.steps()?.length ?? 0;\r\n });\r\n\r\n /** The currently selected StepComponent instance. */\r\n readonly selected = computed(() => {\r\n const index = this.selectedIndex();\r\n const stepList = this.steps();\r\n // Use the stepsCount() computed signal for checking length\r\n return stepList && index >= 0 && index < this.stepsCount() ? stepList[index] : undefined;\r\n });\r\n\r\n /** Checks if the user can navigate to the next step. */\r\n readonly canMoveNext = computed(() => {\r\n const index = this.selectedIndex();\r\n // Use stepsCount() signal\r\n const totalSteps = this.stepsCount();\r\n const currentSelected = this.selected();\r\n const isLinear = this.linear();\r\n\r\n // Cannot move next if there are no steps or already on the last step\r\n if (totalSteps === 0 || index >= totalSteps - 1) {\r\n return false;\r\n }\r\n if (!isLinear || !currentSelected) {\r\n return true;\r\n }\r\n return currentSelected.completed() || currentSelected.optional();\r\n });\r\n\r\n /** Computed signal indicating if the current step is the first step. */\r\n readonly isFirstStep = computed(() => {\r\n const index = this.selectedIndex();\r\n // Use stepsCount() signal\r\n return index === 0 && this.stepsCount() > 0;\r\n });\r\n\r\n /** Computed signal indicating if the current step is the last step. */\r\n readonly isLastStep = computed(() => {\r\n const index = this.selectedIndex();\r\n // Use stepsCount() signal\r\n const totalSteps = this.stepsCount();\r\n return totalSteps > 0 && index === totalSteps - 1;\r\n });\r\n\r\n /** Computed signal calculating the progress percentage. */\r\n readonly progressPercent = computed(() => {\r\n const totalSteps = this.stepsCount();\r\n const index = this.selectedIndex();\r\n\r\n if (totalSteps === 0) {\r\n return 0;\r\n }\r\n\r\n const progress = (100 / totalSteps) * (index + 1);\r\n return Math.max(0, Math.min(100, progress));\r\n });\r\n\r\n constructor() {\r\n effect(() => {\r\n const currentSteps = this.steps();\r\n const currentIndex = this.selectedIndex();\r\n currentSteps.forEach((step, index) => step.setActive(index === currentIndex));\r\n });\r\n\r\n effect((onCleanup) => { // Mark as interacted\r\n const currentSelected = this.selected();\r\n if (currentSelected && !currentSelected.interacted()) {\r\n currentSelected.setInteracted(true);\r\n }\r\n });\r\n\r\n effect(() => { // Validate index\r\n const totalSteps = this.stepsCount();\r\n const currentIndex = this.selectedIndex();\r\n\r\n if (totalSteps > 0) {\r\n const newIndex = Math.max(0, Math.min(currentIndex, totalSteps - 1));\r\n if (newIndex !== currentIndex) this.selectedIndex.set(newIndex);\r\n } else if (currentIndex !== 0) {\r\n this.selectedIndex.set(0);\r\n }\r\n });\r\n }\r\n\r\n /** Navigates to the next step if possible. */\r\n next(): void {\r\n if (this.canMoveNext()) {\r\n this.selectedIndex.update(i => i + 1);\r\n }\r\n }\r\n\r\n /** Navigates to the previous step if possible. */\r\n previous(): void {\r\n // Use renamed computed signal for check\r\n if (!this.isFirstStep()) {\r\n this.selectedIndex.update(i => i - 1);\r\n }\r\n }\r\n\r\n /** Resets the stepper to the first step. */\r\n reset(): void {\r\n this.steps().forEach(step => step.reset());\r\n this.selectedIndex.set(0);\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,76 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Component, input, booleanAttribute, Directive } from '@angular/core';
3
+ import * as i1 from '@angular/material/core';
4
+ import { MatRipple } from '@angular/material/core';
5
+ import { MatDivider } from '@angular/material/divider';
6
+
7
+ class SuggestionsComponent {
8
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: SuggestionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
9
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.10", type: SuggestionsComponent, isStandalone: true, selector: "emr-suggestions", host: { classAttribute: "emr-suggestions" }, exportAs: ["emrSuggestions"], ngImport: i0, template: "<ng-content></ng-content>\r\n", styles: [":host{--emr-suggestions-bg: var(--color-surface-container-lowest);--emr-suggestion-block-heading-color: var(--color-on-surface);--emr-suggestion-block-font-size: var(--text-xs);--emr-suggestion-block-font-weight: 600;--emr-suggestion-block-content-padding: calc(var(--spacing) * 2) 0;--emr-suggestion-height: calc(var(--spacing) * 11);--emr-suggestion-padding: 0 calc(var(--spacing) * 2);--emr-suggestion-hover-bg: var(--color-surface-container-low);--emr-suggestion-border-radius: calc(infinity * 1px);display:block;overflow-y:auto;background-color:var(--emr-suggestions-bg)}:host-context(html.dark){--emr-suggestions-bg: var(--color-surface-container-high);--emr-suggestion-hover-bg: var(--color-surface-bright)}\n/*! tailwindcss v4.1.14 | MIT License | https://tailwindcss.com */\n"] });
10
+ }
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: SuggestionsComponent, decorators: [{
12
+ type: Component,
13
+ args: [{ selector: 'emr-suggestions', exportAs: 'emrSuggestions', imports: [], host: {
14
+ 'class': 'emr-suggestions'
15
+ }, template: "<ng-content></ng-content>\r\n", styles: [":host{--emr-suggestions-bg: var(--color-surface-container-lowest);--emr-suggestion-block-heading-color: var(--color-on-surface);--emr-suggestion-block-font-size: var(--text-xs);--emr-suggestion-block-font-weight: 600;--emr-suggestion-block-content-padding: calc(var(--spacing) * 2) 0;--emr-suggestion-height: calc(var(--spacing) * 11);--emr-suggestion-padding: 0 calc(var(--spacing) * 2);--emr-suggestion-hover-bg: var(--color-surface-container-low);--emr-suggestion-border-radius: calc(infinity * 1px);display:block;overflow-y:auto;background-color:var(--emr-suggestions-bg)}:host-context(html.dark){--emr-suggestions-bg: var(--color-surface-container-high);--emr-suggestion-hover-bg: var(--color-surface-bright)}\n/*! tailwindcss v4.1.14 | MIT License | https://tailwindcss.com */\n"] }]
16
+ }] });
17
+
18
+ class SuggestionComponent {
19
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: SuggestionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
20
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.10", type: SuggestionComponent, isStandalone: true, selector: "emr-suggestion,[emr-suggestion]", exportAs: ["emrSuggestion"], hostDirectives: [{ directive: i1.MatRipple }], ngImport: i0, template: "<div class=\"figure\">\r\n <div class=\"icon\">\r\n <ng-content select=\"[emrSuggestionIcon]\"/>\r\n </div>\r\n <div class=\"thumb\">\r\n <ng-content select=\"[emrSuggestionThumb]\"/>\r\n </div>\r\n</div>\r\n<div class=\"content\">\r\n <ng-content/>\r\n</div>\r\n", styles: [":host{display:flex;align-items:center;width:100%;gap:calc(var(--spacing) * 2.5);height:var(--emr-suggestion-height);padding:var(--emr-suggestion-padding);border-radius:var(--emr-suggestion-border-radius)}:host:hover{background:var(--emr-suggestion-hover-bg);cursor:pointer}:host .figure{line-height:0}:host .icon,:host .thumb{line-height:0;display:inline-flex;align-items:center;justify-content:center;--emr-avatar-size: calc(var(--spacing) * 8);border-radius:calc(infinity * 1px)}:host .icon:empty,:host .thumb:empty{display:none}:host .content{display:flex;align-items:center;gap:calc(var(--spacing) * 2.5);font-size:.875rem}\n/*! tailwindcss v4.1.14 | MIT License | https://tailwindcss.com */\n"] });
21
+ }
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: SuggestionComponent, decorators: [{
23
+ type: Component,
24
+ args: [{ selector: 'emr-suggestion,[emr-suggestion]', exportAs: 'emrSuggestion', imports: [], hostDirectives: [
25
+ MatRipple
26
+ ], template: "<div class=\"figure\">\r\n <div class=\"icon\">\r\n <ng-content select=\"[emrSuggestionIcon]\"/>\r\n </div>\r\n <div class=\"thumb\">\r\n <ng-content select=\"[emrSuggestionThumb]\"/>\r\n </div>\r\n</div>\r\n<div class=\"content\">\r\n <ng-content/>\r\n</div>\r\n", styles: [":host{display:flex;align-items:center;width:100%;gap:calc(var(--spacing) * 2.5);height:var(--emr-suggestion-height);padding:var(--emr-suggestion-padding);border-radius:var(--emr-suggestion-border-radius)}:host:hover{background:var(--emr-suggestion-hover-bg);cursor:pointer}:host .figure{line-height:0}:host .icon,:host .thumb{line-height:0;display:inline-flex;align-items:center;justify-content:center;--emr-avatar-size: calc(var(--spacing) * 8);border-radius:calc(infinity * 1px)}:host .icon:empty,:host .thumb:empty{display:none}:host .content{display:flex;align-items:center;gap:calc(var(--spacing) * 2.5);font-size:.875rem}\n/*! tailwindcss v4.1.14 | MIT License | https://tailwindcss.com */\n"] }]
27
+ }] });
28
+
29
+ class SuggestionBlockComponent {
30
+ heading = input(...(ngDevMode ? [undefined, { debugName: "heading" }] : []));
31
+ showDivider = input(false, ...(ngDevMode ? [{ debugName: "showDivider", transform: booleanAttribute }] : [{
32
+ transform: booleanAttribute,
33
+ }]));
34
+ inline = input(false, ...(ngDevMode ? [{ debugName: "inline", transform: booleanAttribute }] : [{
35
+ transform: booleanAttribute,
36
+ }]));
37
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: SuggestionBlockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
38
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.10", type: SuggestionBlockComponent, isStandalone: true, selector: "emr-suggestion-block", inputs: { heading: { classPropertyName: "heading", publicName: "heading", isSignal: true, isRequired: false, transformFunction: null }, showDivider: { classPropertyName: "showDivider", publicName: "showDivider", isSignal: true, isRequired: false, transformFunction: null }, inline: { classPropertyName: "inline", publicName: "inline", isSignal: true, isRequired: false, transformFunction: null } }, exportAs: ["emrSuggestionBlock"], ngImport: i0, template: "@if (showDivider()) {\r\n <div class=\"my-4 px-2\">\r\n <mat-divider/>\r\n </div>\r\n}\r\n\r\n@if (heading()) {\r\n <div class=\"heading\">{{ heading() }}</div>\r\n}\r\n\r\n<div class=\"content\" [class.is-inline]=\"inline()\">\r\n <ng-content/>\r\n</div>\r\n", styles: [":host{display:block}:host .heading{color:var(--emr-suggestion-block-heading-color);font-size:var(--emr-suggestion-block-font-size);font-weight:var(--emr-suggestion-block-font-weight);padding:var(--emr-suggestion-padding)}:host .content{padding:var(--emr-suggestion-block-content-padding)}:host .content.is-inline{display:flex;gap:calc(var(--spacing) * 3)}\n/*! tailwindcss v4.1.14 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "component", type: MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }] });
39
+ }
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: SuggestionBlockComponent, decorators: [{
41
+ type: Component,
42
+ args: [{ selector: 'emr-suggestion-block', exportAs: 'emrSuggestionBlock', imports: [
43
+ MatDivider
44
+ ], template: "@if (showDivider()) {\r\n <div class=\"my-4 px-2\">\r\n <mat-divider/>\r\n </div>\r\n}\r\n\r\n@if (heading()) {\r\n <div class=\"heading\">{{ heading() }}</div>\r\n}\r\n\r\n<div class=\"content\" [class.is-inline]=\"inline()\">\r\n <ng-content/>\r\n</div>\r\n", styles: [":host{display:block}:host .heading{color:var(--emr-suggestion-block-heading-color);font-size:var(--emr-suggestion-block-font-size);font-weight:var(--emr-suggestion-block-font-weight);padding:var(--emr-suggestion-padding)}:host .content{padding:var(--emr-suggestion-block-content-padding)}:host .content.is-inline{display:flex;gap:calc(var(--spacing) * 3)}\n/*! tailwindcss v4.1.14 | MIT License | https://tailwindcss.com */\n"] }]
45
+ }], propDecorators: { heading: [{ type: i0.Input, args: [{ isSignal: true, alias: "heading", required: false }] }], showDivider: [{ type: i0.Input, args: [{ isSignal: true, alias: "showDivider", required: false }] }], inline: [{ type: i0.Input, args: [{ isSignal: true, alias: "inline", required: false }] }] } });
46
+
47
+ class SuggestionIconDirective {
48
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: SuggestionIconDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
49
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.10", type: SuggestionIconDirective, isStandalone: true, selector: "[emrSuggestionIcon]", ngImport: i0 });
50
+ }
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: SuggestionIconDirective, decorators: [{
52
+ type: Directive,
53
+ args: [{
54
+ selector: '[emrSuggestionIcon]',
55
+ standalone: true
56
+ }]
57
+ }] });
58
+
59
+ class SuggestionThumbDirective {
60
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: SuggestionThumbDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
61
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.10", type: SuggestionThumbDirective, isStandalone: true, selector: "[emrSuggestionThumb]", ngImport: i0 });
62
+ }
63
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: SuggestionThumbDirective, decorators: [{
64
+ type: Directive,
65
+ args: [{
66
+ selector: '[emrSuggestionThumb]',
67
+ standalone: true
68
+ }]
69
+ }] });
70
+
71
+ /**
72
+ * Generated bundle index. Do not edit.
73
+ */
74
+
75
+ export { SuggestionBlockComponent, SuggestionComponent, SuggestionIconDirective, SuggestionThumbDirective, SuggestionsComponent };
76
+ //# sourceMappingURL=elementar-rt-components-suggestions.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elementar-rt-components-suggestions.mjs","sources":["../../../projects/components/suggestions/src/suggestions/suggestions.component.ts","../../../projects/components/suggestions/src/suggestions/suggestions.component.html","../../../projects/components/suggestions/src/suggestion/suggestion.component.ts","../../../projects/components/suggestions/src/suggestion/suggestion.component.html","../../../projects/components/suggestions/src/suggestion-block/suggestion-block.component.ts","../../../projects/components/suggestions/src/suggestion-block/suggestion-block.component.html","../../../projects/components/suggestions/src/suggestion-icon.directive.ts","../../../projects/components/suggestions/src/suggestion-thumb.directive.ts","../../../projects/components/suggestions/elementar-rt-components-suggestions.ts"],"sourcesContent":["import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'emr-suggestions',\r\n exportAs: 'emrSuggestions',\r\n imports: [],\r\n templateUrl: './suggestions.component.html',\r\n styleUrl: './suggestions.component.scss',\r\n host: {\r\n 'class': 'emr-suggestions'\r\n }\r\n})\r\nexport class SuggestionsComponent {\r\n\r\n}\r\n","<ng-content></ng-content>\r\n","import { Component } from '@angular/core';\r\nimport { MatRipple } from '@angular/material/core';\r\n\r\n@Component({\r\n selector: 'emr-suggestion,[emr-suggestion]',\r\n exportAs: 'emrSuggestion',\r\n imports: [],\r\n templateUrl: './suggestion.component.html',\r\n styleUrl: './suggestion.component.scss',\r\n hostDirectives: [\r\n MatRipple\r\n ]\r\n})\r\nexport class SuggestionComponent {\r\n\r\n}\r\n","<div class=\"figure\">\r\n <div class=\"icon\">\r\n <ng-content select=\"[emrSuggestionIcon]\"/>\r\n </div>\r\n <div class=\"thumb\">\r\n <ng-content select=\"[emrSuggestionThumb]\"/>\r\n </div>\r\n</div>\r\n<div class=\"content\">\r\n <ng-content/>\r\n</div>\r\n","import { booleanAttribute, Component, input, Input } from '@angular/core';\r\nimport { MatDivider } from '@angular/material/divider';\r\n\r\n@Component({\r\n selector: 'emr-suggestion-block',\r\n exportAs: 'emrSuggestionBlock',\r\n imports: [\r\n MatDivider\r\n ],\r\n templateUrl: './suggestion-block.component.html',\r\n styleUrl: './suggestion-block.component.scss'\r\n})\r\nexport class SuggestionBlockComponent {\r\n heading = input();\r\n showDivider = input(false, {\r\n transform: booleanAttribute,\r\n });\r\n inline = input(false, {\r\n transform: booleanAttribute,\r\n });\r\n}\r\n","@if (showDivider()) {\r\n <div class=\"my-4 px-2\">\r\n <mat-divider/>\r\n </div>\r\n}\r\n\r\n@if (heading()) {\r\n <div class=\"heading\">{{ heading() }}</div>\r\n}\r\n\r\n<div class=\"content\" [class.is-inline]=\"inline()\">\r\n <ng-content/>\r\n</div>\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[emrSuggestionIcon]',\r\n standalone: true\r\n})\r\nexport class SuggestionIconDirective {\r\n}\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[emrSuggestionThumb]',\r\n standalone: true\r\n})\r\nexport class SuggestionThumbDirective {\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;MAYa,oBAAoB,CAAA;wGAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,sJCZjC,+BACA,EAAA,MAAA,EAAA,CAAA,kxBAAA,CAAA,EAAA,CAAA;;4FDWa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAVhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,QAAA,EACjB,gBAAgB,EAAA,OAAA,EACjB,EAAE,EAAA,IAAA,EAGL;AACJ,wBAAA,OAAO,EAAE;AACV,qBAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,kxBAAA,CAAA,EAAA;;;MEGU,mBAAmB,CAAA;wGAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,uKCbhC,oRAWA,EAAA,MAAA,EAAA,CAAA,2rBAAA,CAAA,EAAA,CAAA;;4FDEa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAV/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iCAAiC,EAAA,QAAA,EACjC,eAAe,EAAA,OAAA,EAChB,EAAE,EAAA,cAAA,EAGK;wBACd;AACD,qBAAA,EAAA,QAAA,EAAA,oRAAA,EAAA,MAAA,EAAA,CAAA,2rBAAA,CAAA,EAAA;;;MECU,wBAAwB,CAAA;IACnC,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAE;IACjB,WAAW,GAAG,KAAK,CAAC,KAAK,+CACvB,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CADF;AACzB,YAAA,SAAS,EAAE,gBAAgB;AAC5B,SAAA,CAAA,CAAA,CAAC;IACF,MAAM,GAAG,KAAK,CAAC,KAAK,0CAClB,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CADP;AACpB,YAAA,SAAS,EAAE,gBAAgB;AAC5B,SAAA,CAAA,CAAA,CAAC;wGAPS,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZrC,4QAaA,EAAA,MAAA,EAAA,CAAA,2aAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDNI,UAAU,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAKD,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBATpC,SAAS;+BACE,sBAAsB,EAAA,QAAA,EACtB,oBAAoB,EAAA,OAAA,EACrB;wBACP;AACD,qBAAA,EAAA,QAAA,EAAA,4QAAA,EAAA,MAAA,EAAA,CAAA,2aAAA,CAAA,EAAA;;;MEFU,uBAAuB,CAAA;wGAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCCY,wBAAwB,CAAA;wGAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAJpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACLD;;AAEG;;;;"}