@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,837 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, ElementRef, Directive, input, booleanAttribute, output, DestroyRef, afterNextRender, ViewContainerRef, Renderer2, PLATFORM_ID, ChangeDetectorRef, contentChildren, EventEmitter, forwardRef, Output, numberAttribute, Pipe, InjectionToken, Injectable, DOCUMENT, isDevMode } from '@angular/core';
3
+ import { FocusMonitor } from '@angular/cdk/a11y';
4
+ import { fromEvent, Subject, defer, merge, switchMap, filter, debounceTime } from 'rxjs';
5
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
6
+ import { MatProgressSpinner } from '@angular/material/progress-spinner';
7
+ import { MatButton } from '@angular/material/button';
8
+ import { isPlatformServer } from '@angular/common';
9
+ import { MAT_OPTION_PARENT_COMPONENT } from '@angular/material/core';
10
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
11
+ import { MatOption } from '@angular/material/select';
12
+ import { SelectionModel } from '@angular/cdk/collections';
13
+ import { DomSanitizer, Title, Meta } from '@angular/platform-browser';
14
+ import { Router, NavigationEnd, TitleStrategy } from '@angular/router';
15
+ import { signalStore, withState, withMethods, patchState } from '@ngrx/signals';
16
+
17
+ class AutoFocusDirective {
18
+ _elementRef = inject(ElementRef);
19
+ ngAfterViewInit() {
20
+ this._elementRef.nativeElement.focus();
21
+ }
22
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: AutoFocusDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
23
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.10", type: AutoFocusDirective, isStandalone: true, selector: "[emrAutoFocus]", exportAs: ["emrAutoFocus"], ngImport: i0 });
24
+ }
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: AutoFocusDirective, decorators: [{
26
+ type: Directive,
27
+ args: [{
28
+ selector: '[emrAutoFocus]',
29
+ exportAs: 'emrAutoFocus',
30
+ standalone: true
31
+ }]
32
+ }] });
33
+
34
+ class FocusElementDirective {
35
+ _elementRef = inject(ElementRef);
36
+ _focusMonitor = inject(FocusMonitor);
37
+ checkChildren = input(true, ...(ngDevMode ? [{ debugName: "checkChildren", transform: booleanAttribute }] : [{
38
+ transform: booleanAttribute
39
+ }]));
40
+ elementFocused = output();
41
+ elementBlurred = output();
42
+ ngAfterViewInit() {
43
+ this._focusMonitor
44
+ .monitor(this._elementRef.nativeElement, this.checkChildren())
45
+ .subscribe(origin => {
46
+ this._emitFocusEvent(origin);
47
+ });
48
+ }
49
+ ngOnDestroy() {
50
+ this._focusMonitor.stopMonitoring(this._elementRef.nativeElement);
51
+ }
52
+ _emitFocusEvent(origin) {
53
+ if (origin) {
54
+ this.elementFocused.emit();
55
+ }
56
+ else {
57
+ this.elementBlurred.emit();
58
+ }
59
+ }
60
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: FocusElementDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
61
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.10", type: FocusElementDirective, isStandalone: true, selector: "[emrFocusElement]", inputs: { checkChildren: { classPropertyName: "checkChildren", publicName: "checkChildren", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { elementFocused: "elementFocused", elementBlurred: "elementBlurred" }, exportAs: ["emrFocusElement"], ngImport: i0 });
62
+ }
63
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: FocusElementDirective, decorators: [{
64
+ type: Directive,
65
+ args: [{
66
+ selector: '[emrFocusElement]',
67
+ exportAs: 'emrFocusElement',
68
+ standalone: true
69
+ }]
70
+ }], propDecorators: { checkChildren: [{ type: i0.Input, args: [{ isSignal: true, alias: "checkChildren", required: false }] }], elementFocused: [{ type: i0.Output, args: ["elementFocused"] }], elementBlurred: [{ type: i0.Output, args: ["elementBlurred"] }] } });
71
+
72
+ class SoundEffectDirective {
73
+ soundSrc = input('assets/sound-effects/mouse-click.ogg', ...(ngDevMode ? [{ debugName: "soundSrc" }] : []));
74
+ _elementRef = inject(ElementRef);
75
+ _destroyRef = inject(DestroyRef);
76
+ constructor() {
77
+ afterNextRender(() => {
78
+ this._init();
79
+ });
80
+ }
81
+ _init() {
82
+ const audio = new Audio(this.soundSrc());
83
+ audio.volume = 0.15;
84
+ fromEvent(this._elementRef.nativeElement, 'click')
85
+ .pipe(takeUntilDestroyed(this._destroyRef))
86
+ .subscribe(async (e) => {
87
+ await audio.play();
88
+ });
89
+ }
90
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: SoundEffectDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
91
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.10", type: SoundEffectDirective, isStandalone: true, selector: "[emrSoundEffect]", inputs: { soundSrc: { classPropertyName: "soundSrc", publicName: "soundSrc", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
92
+ }
93
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: SoundEffectDirective, decorators: [{
94
+ type: Directive,
95
+ args: [{
96
+ selector: '[emrSoundEffect]',
97
+ standalone: true
98
+ }]
99
+ }], ctorParameters: () => [], propDecorators: { soundSrc: [{ type: i0.Input, args: [{ isSignal: true, alias: "soundSrc", required: false }] }] } });
100
+
101
+ class ButtonDirective {
102
+ _matButton = inject(MatButton);
103
+ _viewContainerRef = inject(ViewContainerRef);
104
+ _renderer = inject(Renderer2);
105
+ _spinner;
106
+ _platformId = inject(PLATFORM_ID);
107
+ loading = input(false, ...(ngDevMode ? [{ debugName: "loading", alias: 'emrButtonLoading',
108
+ transform: booleanAttribute }] : [{
109
+ alias: 'emrButtonLoading',
110
+ transform: booleanAttribute
111
+ }]));
112
+ disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled", transform: booleanAttribute }] : [{
113
+ transform: booleanAttribute
114
+ }]));
115
+ color = input(...(ngDevMode ? [undefined, { debugName: "color" }] : []));
116
+ ngOnChanges(changes) {
117
+ if (!changes['loading']) {
118
+ return;
119
+ }
120
+ if (isPlatformServer(this._platformId)) {
121
+ return;
122
+ }
123
+ if (changes['loading'].currentValue) {
124
+ this._matButton._elementRef.nativeElement.classList.add('emr-button-loading');
125
+ this._matButton.disabled = true;
126
+ this.createSpinner();
127
+ }
128
+ else if (!changes['loading'].firstChange) {
129
+ this._matButton._elementRef.nativeElement.classList.remove('emr-button-loading');
130
+ this._matButton.disabled = this.disabled();
131
+ this.destroySpinner();
132
+ }
133
+ }
134
+ createSpinner() {
135
+ if (!this._spinner) {
136
+ this._spinner = this._viewContainerRef.createComponent(MatProgressSpinner);
137
+ this._spinner.instance.color = this.color();
138
+ this._spinner.instance.diameter = 20;
139
+ this._spinner.instance.mode = 'indeterminate';
140
+ this._renderer.appendChild(this._matButton._elementRef.nativeElement, this._spinner.instance._elementRef.nativeElement);
141
+ }
142
+ }
143
+ destroySpinner() {
144
+ if (this._spinner) {
145
+ this._spinner.destroy();
146
+ this._spinner = null;
147
+ }
148
+ }
149
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: ButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
150
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.10", type: ButtonDirective, isStandalone: true, selector: "[emrButtonLoading]", inputs: { loading: { classPropertyName: "loading", publicName: "emrButtonLoading", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, exportAs: ["emrButtonLoading"], usesOnChanges: true, ngImport: i0 });
151
+ }
152
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: ButtonDirective, decorators: [{
153
+ type: Directive,
154
+ args: [{
155
+ selector: '[emrButtonLoading]',
156
+ exportAs: 'emrButtonLoading'
157
+ }]
158
+ }], propDecorators: { loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "emrButtonLoading", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }] } });
159
+
160
+ class MenuOptionGroupDirective {
161
+ _changeDetectorRef = inject(ChangeDetectorRef);
162
+ _destroyRef = inject(DestroyRef);
163
+ disableRipple = false;
164
+ multiple = false;
165
+ inertGroups = false;
166
+ hideSingleSelectionIndicator = false;
167
+ _selectionModel;
168
+ _value;
169
+ options = contentChildren(MatOption, ...(ngDevMode ? [{ debugName: "options", descendants: true }] : [{ descendants: true }]));
170
+ _initialized = new Subject();
171
+ valueChange = new EventEmitter();
172
+ optionSelectionChanges = defer(() => {
173
+ const options = this.options();
174
+ if (options) {
175
+ return merge(...options.map(option => option.onSelectionChange));
176
+ }
177
+ return this._initialized.pipe(switchMap(() => this.optionSelectionChanges));
178
+ });
179
+ onChange = () => { };
180
+ onTouched = () => { };
181
+ ngOnInit() {
182
+ this._selectionModel = new SelectionModel(this.multiple);
183
+ }
184
+ registerOnChange(fn) {
185
+ this.onChange = fn;
186
+ }
187
+ registerOnTouched(fn) {
188
+ this.onTouched = fn;
189
+ }
190
+ ngAfterContentInit() {
191
+ this._selectOptionByValue();
192
+ this.optionSelectionChanges
193
+ .pipe(takeUntilDestroyed(this._destroyRef))
194
+ .subscribe((res) => {
195
+ this._value = res.source.value;
196
+ this.options().forEach(option => {
197
+ if (option.value !== this._value) {
198
+ option.setInactiveStyles();
199
+ option.deselect(false);
200
+ }
201
+ });
202
+ this.onChange(this._value);
203
+ this._changeDetectorRef.markForCheck();
204
+ });
205
+ }
206
+ _selectOptionByValue() {
207
+ const options = this.options();
208
+ if (!options) {
209
+ return;
210
+ }
211
+ options.forEach(option => option.setInactiveStyles());
212
+ options.forEach(option => {
213
+ option.deselect(false);
214
+ if (option.value === this._value) {
215
+ option.select(false);
216
+ this._changeDetectorRef.markForCheck();
217
+ }
218
+ });
219
+ }
220
+ writeValue(newValue) {
221
+ if (newValue !== this._value) {
222
+ this._value = newValue;
223
+ this._selectOptionByValue();
224
+ }
225
+ }
226
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: MenuOptionGroupDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
227
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "20.3.10", type: MenuOptionGroupDirective, isStandalone: true, selector: "[emrMenuOptionGroup]", outputs: { valueChange: "valueChange" }, providers: [
228
+ {
229
+ provide: MAT_OPTION_PARENT_COMPONENT,
230
+ useExisting: MenuOptionGroupDirective
231
+ },
232
+ {
233
+ provide: NG_VALUE_ACCESSOR,
234
+ useExisting: forwardRef(() => MenuOptionGroupDirective),
235
+ multi: true
236
+ }
237
+ ], queries: [{ propertyName: "options", predicate: MatOption, descendants: true, isSignal: true }], ngImport: i0 });
238
+ }
239
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: MenuOptionGroupDirective, decorators: [{
240
+ type: Directive,
241
+ args: [{
242
+ selector: '[emrMenuOptionGroup]',
243
+ standalone: true,
244
+ providers: [
245
+ {
246
+ provide: MAT_OPTION_PARENT_COMPONENT,
247
+ useExisting: MenuOptionGroupDirective
248
+ },
249
+ {
250
+ provide: NG_VALUE_ACCESSOR,
251
+ useExisting: forwardRef(() => MenuOptionGroupDirective),
252
+ multi: true
253
+ }
254
+ ]
255
+ }]
256
+ }], propDecorators: { options: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => MatOption), { ...{ descendants: true }, isSignal: true }] }], valueChange: [{
257
+ type: Output
258
+ }] } });
259
+
260
+ class DebounceTimeDirective {
261
+ elementRef;
262
+ renderer;
263
+ debounceTimer;
264
+ debounceTime = input(300, ...(ngDevMode ? [{ debugName: "debounceTime", transform: numberAttribute }] : [{ transform: numberAttribute }]));
265
+ onChange = () => { };
266
+ onTouched = () => { };
267
+ constructor(elementRef, renderer) {
268
+ this.elementRef = elementRef;
269
+ this.renderer = renderer;
270
+ }
271
+ writeValue(value) {
272
+ this.renderer.setProperty(this.elementRef.nativeElement, 'value', value ?? '');
273
+ }
274
+ registerOnChange(fn) {
275
+ this.onChange = fn;
276
+ }
277
+ registerOnTouched(fn) {
278
+ this.onTouched = fn;
279
+ }
280
+ setDisabledState(isDisabled) {
281
+ this.renderer.setProperty(this.elementRef.nativeElement, 'disabled', isDisabled);
282
+ }
283
+ handleInput(event) {
284
+ clearTimeout(this.debounceTimer);
285
+ const target = event.target;
286
+ const value = target?.value ?? '';
287
+ if (!this.debounceTime()) {
288
+ this.onChange(value);
289
+ }
290
+ else {
291
+ this.debounceTimer = setTimeout(() => {
292
+ this.onChange(value);
293
+ }, this.debounceTime());
294
+ }
295
+ }
296
+ handleBlur() {
297
+ this.onTouched();
298
+ }
299
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: DebounceTimeDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
300
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.10", type: DebounceTimeDirective, isStandalone: true, selector: "[emrDebounceTime][ngModel]", inputs: { debounceTime: { classPropertyName: "debounceTime", publicName: "debounceTime", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "input": "handleInput($event)", "blur": "handleBlur()" } }, providers: [
301
+ {
302
+ provide: NG_VALUE_ACCESSOR,
303
+ useExisting: forwardRef(() => DebounceTimeDirective),
304
+ multi: true,
305
+ },
306
+ ], ngImport: i0 });
307
+ }
308
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: DebounceTimeDirective, decorators: [{
309
+ type: Directive,
310
+ args: [{
311
+ selector: '[emrDebounceTime][ngModel]',
312
+ providers: [
313
+ {
314
+ provide: NG_VALUE_ACCESSOR,
315
+ useExisting: forwardRef(() => DebounceTimeDirective),
316
+ multi: true,
317
+ },
318
+ ],
319
+ host: {
320
+ '(input)': 'handleInput($event)',
321
+ '(blur)': 'handleBlur()'
322
+ }
323
+ }]
324
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { debounceTime: [{ type: i0.Input, args: [{ isSignal: true, alias: "debounceTime", required: false }] }] } });
325
+
326
+ class InitialsPipe {
327
+ transform(value) {
328
+ if (!value) {
329
+ return '';
330
+ }
331
+ const initials = [...value.toString().matchAll(/(\p{L}{1})\p{L}+/gu)];
332
+ const result = ((initials.shift()?.[1] || '') + (initials.pop()?.[1] || '')).toUpperCase();
333
+ return result ? result : value[0];
334
+ }
335
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: InitialsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
336
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.10", ngImport: i0, type: InitialsPipe, isStandalone: true, name: "initials" });
337
+ }
338
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: InitialsPipe, decorators: [{
339
+ type: Pipe,
340
+ args: [{
341
+ name: 'initials',
342
+ standalone: true
343
+ }]
344
+ }] });
345
+
346
+ class FormatFileSizePipe {
347
+ transform(bytes, decimalPoint = 2) {
348
+ if (bytes == 0) {
349
+ return '0 Bytes';
350
+ }
351
+ const k = 1000;
352
+ const dm = decimalPoint || 2;
353
+ const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
354
+ const index = Math.floor(Math.log(bytes) / Math.log(k));
355
+ return parseFloat((bytes / Math.pow(k, index)).toFixed(dm)) + ' ' + sizes[index];
356
+ }
357
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: FormatFileSizePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
358
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.10", ngImport: i0, type: FormatFileSizePipe, isStandalone: true, name: "formatFileSize" });
359
+ }
360
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: FormatFileSizePipe, decorators: [{
361
+ type: Pipe,
362
+ args: [{
363
+ name: 'formatFileSize',
364
+ standalone: true
365
+ }]
366
+ }] });
367
+
368
+ class OrderByPipe {
369
+ transform(value, property, direction = 'asc') {
370
+ if (!Array.isArray(value)) {
371
+ throw new Error('Order By value should be an array');
372
+ }
373
+ const sorted = value.sort((a, b) => {
374
+ if (a[property] < b[property]) {
375
+ return -1;
376
+ }
377
+ else if (a[property] > b[property]) {
378
+ return 1;
379
+ }
380
+ else {
381
+ return 0;
382
+ }
383
+ });
384
+ if (direction === 'asc') {
385
+ return sorted;
386
+ }
387
+ else if (direction === 'desc') {
388
+ return sorted.reverse();
389
+ }
390
+ }
391
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: OrderByPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
392
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.10", ngImport: i0, type: OrderByPipe, isStandalone: true, name: "orderBy" });
393
+ }
394
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: OrderByPipe, decorators: [{
395
+ type: Pipe,
396
+ args: [{
397
+ name: 'orderBy',
398
+ standalone: true
399
+ }]
400
+ }] });
401
+
402
+ class SafeHtmlPipe {
403
+ _domSanitizer = inject(DomSanitizer);
404
+ transform(value) {
405
+ return this._domSanitizer.bypassSecurityTrustHtml(value);
406
+ }
407
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: SafeHtmlPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
408
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.10", ngImport: i0, type: SafeHtmlPipe, isStandalone: true, name: "safeHtml" });
409
+ }
410
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: SafeHtmlPipe, decorators: [{
411
+ type: Pipe,
412
+ args: [{
413
+ name: 'safeHtml',
414
+ standalone: true
415
+ }]
416
+ }] });
417
+
418
+ class SafeResourceUrlPipe {
419
+ _domSanitizer = inject(DomSanitizer);
420
+ transform(value) {
421
+ return this._domSanitizer.bypassSecurityTrustResourceUrl(value);
422
+ }
423
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: SafeResourceUrlPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
424
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.10", ngImport: i0, type: SafeResourceUrlPipe, isStandalone: true, name: "safeResourceUrl" });
425
+ }
426
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: SafeResourceUrlPipe, decorators: [{
427
+ type: Pipe,
428
+ args: [{
429
+ name: 'safeResourceUrl',
430
+ standalone: true
431
+ }]
432
+ }] });
433
+
434
+ class FilterByPropertyPipe {
435
+ getNestedValue(obj, path) {
436
+ return path.split('.').reduce((acc, part) => acc && acc[part], obj);
437
+ }
438
+ transform(items, propPath, value, strict = false) {
439
+ if (!items) {
440
+ return [];
441
+ }
442
+ if (value === undefined || typeof value === 'undefined') {
443
+ return items;
444
+ }
445
+ if (!strict && (value === null || value === '')) {
446
+ return items;
447
+ }
448
+ return items.filter(item => {
449
+ const propertyValue = this.getNestedValue(item, propPath);
450
+ return propertyValue === value;
451
+ });
452
+ }
453
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: FilterByPropertyPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
454
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.10", ngImport: i0, type: FilterByPropertyPipe, isStandalone: true, name: "filterByProperty" });
455
+ }
456
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: FilterByPropertyPipe, decorators: [{
457
+ type: Pipe,
458
+ args: [{
459
+ name: 'filterByProperty',
460
+ }]
461
+ }] });
462
+
463
+ class SearchByPropertyPipe {
464
+ getNestedValue(obj, path) {
465
+ return path.split('.').reduce((acc, part) => acc && acc[part], obj);
466
+ }
467
+ transform(items, propPath, searchValue) {
468
+ if (!items) {
469
+ return [];
470
+ }
471
+ if (!searchValue) {
472
+ return items;
473
+ }
474
+ const lowercasedSearchValue = searchValue.toLowerCase();
475
+ return items.filter(item => {
476
+ const propertyValue = this.getNestedValue(item, propPath);
477
+ if (typeof propertyValue === 'string') {
478
+ return propertyValue.toLowerCase().includes(lowercasedSearchValue);
479
+ }
480
+ return false;
481
+ });
482
+ }
483
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: SearchByPropertyPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
484
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.10", ngImport: i0, type: SearchByPropertyPipe, isStandalone: true, name: "searchByProperty" });
485
+ }
486
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: SearchByPropertyPipe, decorators: [{
487
+ type: Pipe,
488
+ args: [{
489
+ name: 'searchByProperty',
490
+ }]
491
+ }] });
492
+
493
+ const ENVIRONMENT = new InjectionToken('ENVIRONMENT');
494
+ class EnvironmentService {
495
+ _environment = inject(ENVIRONMENT, {
496
+ optional: true
497
+ }) || {};
498
+ getValue(key, defaultValue) {
499
+ return this._environment[key] || defaultValue;
500
+ }
501
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: EnvironmentService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
502
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: EnvironmentService, providedIn: 'root' });
503
+ }
504
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: EnvironmentService, decorators: [{
505
+ type: Injectable,
506
+ args: [{
507
+ providedIn: 'root'
508
+ }]
509
+ }] });
510
+
511
+ class AnalyticsService {
512
+ _platformId = inject(PLATFORM_ID);
513
+ _router = inject(Router);
514
+ _document = inject(DOCUMENT);
515
+ _environmentService = inject(EnvironmentService);
516
+ trackPageViews() {
517
+ const googleAnalyticsId = this._environmentService.getValue('googleAnalyticsId');
518
+ if (isDevMode() || !googleAnalyticsId) {
519
+ return;
520
+ }
521
+ try {
522
+ const url = 'https://www.googletagmanager.com/gtag/js?id=';
523
+ const gTagScript = this._document.createElement('script');
524
+ gTagScript.async = true;
525
+ gTagScript.src = `${url}${googleAnalyticsId}`;
526
+ this._document.head.appendChild(gTagScript);
527
+ const dataLayerScript = this._document.createElement('script');
528
+ dataLayerScript.innerHTML = `
529
+ window.dataLayer = window.dataLayer || [];
530
+ function gtag(){dataLayer.push(arguments);}
531
+ gtag('js', new Date());
532
+ gtag('config', '${googleAnalyticsId}');`;
533
+ this._document.head.appendChild(dataLayerScript);
534
+ if (isPlatformServer(this._platformId)) {
535
+ return;
536
+ }
537
+ this._router.events.pipe(filter((event) => event instanceof NavigationEnd)).subscribe((event) => {
538
+ gtag('event', 'page_view', {
539
+ page_title: this._document.head.title,
540
+ page_path: event.urlAfterRedirects,
541
+ page_location: this._document.location.href
542
+ });
543
+ });
544
+ }
545
+ catch (e) {
546
+ }
547
+ }
548
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: AnalyticsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
549
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: AnalyticsService, providedIn: 'root' });
550
+ }
551
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: AnalyticsService, decorators: [{
552
+ type: Injectable,
553
+ args: [{
554
+ providedIn: 'root'
555
+ }]
556
+ }] });
557
+
558
+ class InactivityTrackerService {
559
+ _destroyRef = inject(DestroyRef);
560
+ _document = inject(DOCUMENT);
561
+ _interval = 10000 * 60; // 5 minutes
562
+ _timeout;
563
+ _interactionEvents$ = merge(fromEvent(this._document, 'click'), fromEvent(this._document, 'keydown'), fromEvent(this._document, 'mousemove'), fromEvent(this._document, 'scroll')).pipe(debounceTime(250));
564
+ _noInteraction = new EventEmitter();
565
+ setupInactivityTimer(interval) {
566
+ if (interval) {
567
+ this._interval = interval;
568
+ }
569
+ this._setupTimer();
570
+ this._interactionEvents$.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {
571
+ this._setupTimer();
572
+ });
573
+ return this._noInteraction.pipe(takeUntilDestroyed(this._destroyRef));
574
+ }
575
+ reset() {
576
+ this._setupTimer();
577
+ }
578
+ _setupTimer() {
579
+ clearTimeout(this._timeout);
580
+ this._timeout = setTimeout(() => {
581
+ this._noInteraction.emit();
582
+ }, this._interval);
583
+ }
584
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: InactivityTrackerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
585
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: InactivityTrackerService, providedIn: 'root' });
586
+ }
587
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: InactivityTrackerService, decorators: [{
588
+ type: Injectable,
589
+ args: [{
590
+ providedIn: 'root'
591
+ }]
592
+ }] });
593
+
594
+ const initialGlobalState = {
595
+ screenLoading: true,
596
+ sidebarHidden: false,
597
+ pageTitle: ''
598
+ };
599
+ const GlobalStore = signalStore({ providedIn: 'root' }, withState(initialGlobalState), withMethods((store) => ({
600
+ setScreenLoading(isLoading) {
601
+ patchState(store, {
602
+ screenLoading: isLoading
603
+ });
604
+ },
605
+ setPageTitle(pageTitle) {
606
+ patchState(store, {
607
+ pageTitle
608
+ });
609
+ }
610
+ })));
611
+
612
+ class PageTitleStrategyService extends TitleStrategy {
613
+ _title = inject(Title);
614
+ _globalStore = inject(GlobalStore);
615
+ updateTitle(routerState) {
616
+ const title = this.buildTitle(routerState);
617
+ if (title !== undefined) {
618
+ this._title.setTitle(`${title} | ${this._globalStore.pageTitle()}`);
619
+ }
620
+ else {
621
+ this._title.setTitle(this._globalStore.pageTitle());
622
+ }
623
+ }
624
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: PageTitleStrategyService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
625
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: PageTitleStrategyService, providedIn: 'root' });
626
+ }
627
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: PageTitleStrategyService, decorators: [{
628
+ type: Injectable,
629
+ args: [{
630
+ providedIn: 'root'
631
+ }]
632
+ }] });
633
+
634
+ class ScreenLoaderService {
635
+ _globalStore = inject(GlobalStore);
636
+ show() {
637
+ this._globalStore.setScreenLoading(true);
638
+ }
639
+ hide() {
640
+ this._globalStore.setScreenLoading(false);
641
+ }
642
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: ScreenLoaderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
643
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: ScreenLoaderService, providedIn: 'root' });
644
+ }
645
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: ScreenLoaderService, decorators: [{
646
+ type: Injectable,
647
+ args: [{
648
+ providedIn: 'root'
649
+ }]
650
+ }] });
651
+
652
+ class SeoService {
653
+ _router = inject(Router);
654
+ _destroyRef = inject(DestroyRef);
655
+ _document = inject(DOCUMENT);
656
+ _platformId = inject(PLATFORM_ID);
657
+ _linkCanonical;
658
+ _title = inject(Title);
659
+ _meta = inject(Meta);
660
+ _globalStore = inject(GlobalStore);
661
+ get meta() {
662
+ return this._meta;
663
+ }
664
+ updateDescription(content) {
665
+ if (!content) {
666
+ return;
667
+ }
668
+ this.meta.updateTag({
669
+ name: 'description',
670
+ content
671
+ });
672
+ this.meta.updateTag({
673
+ name: 'og:description',
674
+ content
675
+ });
676
+ }
677
+ updateOgUrl(content) {
678
+ if (!content) {
679
+ return;
680
+ }
681
+ this.meta.updateTag({
682
+ name: 'og:url',
683
+ content
684
+ });
685
+ }
686
+ updateOgImage(content) {
687
+ if (!content) {
688
+ return;
689
+ }
690
+ this.meta.updateTag({
691
+ name: 'og:image',
692
+ content
693
+ });
694
+ }
695
+ trackCanonicalChanges(siteUrl) {
696
+ this._createCanonicalTag(siteUrl);
697
+ if (isPlatformServer(this._platformId)) {
698
+ return;
699
+ }
700
+ this._router.events
701
+ .pipe(filter((event) => event instanceof NavigationEnd), takeUntilDestroyed(this._destroyRef))
702
+ .subscribe(() => {
703
+ const href = this.getCanonicalUrl(siteUrl);
704
+ this._linkCanonical?.setAttribute('href', href);
705
+ this.updateOgUrl(href);
706
+ });
707
+ }
708
+ updateTitle(title) {
709
+ this._title.setTitle(`${title} | ${this._globalStore.pageTitle()}`);
710
+ this.meta.updateTag({
711
+ name: 'og:title',
712
+ content: title
713
+ });
714
+ }
715
+ getCanonicalUrl(siteUrl) {
716
+ if (this._document.URL.startsWith('http')) {
717
+ return this._document.URL;
718
+ }
719
+ return siteUrl + this._document.URL;
720
+ }
721
+ _createCanonicalTag(siteUrl) {
722
+ this._linkCanonical = this._document.querySelector('link[rel="canonical"]');
723
+ if (!this._linkCanonical) {
724
+ this._linkCanonical = this._document.createElement('link');
725
+ this._linkCanonical.setAttribute('rel', 'canonical');
726
+ this._document.head.appendChild(this._linkCanonical);
727
+ }
728
+ this._linkCanonical.setAttribute('href', this.getCanonicalUrl(siteUrl));
729
+ }
730
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: SeoService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
731
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: SeoService, providedIn: 'root' });
732
+ }
733
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: SeoService, decorators: [{
734
+ type: Injectable,
735
+ args: [{
736
+ providedIn: 'root'
737
+ }]
738
+ }] });
739
+
740
+ const LOCAL_STORAGE_KEY = 'emr-admin';
741
+ class ThemeManagerService {
742
+ _document = inject(DOCUMENT);
743
+ _window = this._document.defaultView;
744
+ _colorScheme;
745
+ constructor() {
746
+ afterNextRender(() => {
747
+ if (this._window !== null && this._window.matchMedia) {
748
+ this._window
749
+ .matchMedia('(prefers-color-scheme: dark)')
750
+ .addEventListener('change', () => {
751
+ const storedColorScheme = this._getStoredColorScheme();
752
+ if (storedColorScheme !== 'light' && storedColorScheme !== 'dark') {
753
+ this.setColorScheme(this.getPreferredColorScheme());
754
+ }
755
+ });
756
+ }
757
+ });
758
+ }
759
+ getColorScheme() {
760
+ return this._colorScheme;
761
+ }
762
+ toggleColorScheme() {
763
+ if (this._getStoredColorScheme() === 'dark') {
764
+ this.changeColorScheme('light');
765
+ }
766
+ else {
767
+ this.changeColorScheme('dark');
768
+ }
769
+ }
770
+ changeColorScheme(colorScheme) {
771
+ this._colorScheme = colorScheme;
772
+ this._setStoredColorScheme(colorScheme);
773
+ this.setColorScheme(colorScheme);
774
+ }
775
+ _getStoredColorScheme() {
776
+ if (typeof localStorage === 'undefined') {
777
+ return;
778
+ }
779
+ return JSON.parse(localStorage.getItem(LOCAL_STORAGE_KEY) ?? '{}').colorScheme;
780
+ }
781
+ ;
782
+ _setStoredColorScheme(colorScheme) {
783
+ if (typeof localStorage === 'undefined') {
784
+ return;
785
+ }
786
+ const meta = JSON.parse(localStorage.getItem(LOCAL_STORAGE_KEY) ?? '{}');
787
+ meta.colorScheme = colorScheme;
788
+ localStorage.setItem(LOCAL_STORAGE_KEY, JSON.stringify(meta));
789
+ }
790
+ ;
791
+ getPreferredColorScheme() {
792
+ const storedTheme = this._getStoredColorScheme();
793
+ if (storedTheme) {
794
+ return storedTheme;
795
+ }
796
+ if (this._window !== null && this._window.matchMedia) {
797
+ return this._window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
798
+ }
799
+ return 'light';
800
+ }
801
+ ;
802
+ setColorScheme(colorScheme) {
803
+ if (this._window !== null && this._window.matchMedia) {
804
+ if (colorScheme === 'auto' &&
805
+ this._window.matchMedia('(prefers-color-scheme: dark)').matches) {
806
+ this._colorScheme = 'dark';
807
+ this._document.documentElement.classList.add('dark');
808
+ }
809
+ else {
810
+ if (colorScheme === 'dark') {
811
+ this._colorScheme = 'dark';
812
+ this._document.documentElement.classList.add('dark');
813
+ }
814
+ else {
815
+ this._colorScheme = 'light';
816
+ this._document.documentElement.classList.remove('dark');
817
+ }
818
+ }
819
+ }
820
+ }
821
+ ;
822
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: ThemeManagerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
823
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: ThemeManagerService, providedIn: 'root' });
824
+ }
825
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: ThemeManagerService, decorators: [{
826
+ type: Injectable,
827
+ args: [{
828
+ providedIn: 'root'
829
+ }]
830
+ }], ctorParameters: () => [] });
831
+
832
+ /**
833
+ * Generated bundle index. Do not edit.
834
+ */
835
+
836
+ export { AnalyticsService, AutoFocusDirective, ButtonDirective, DebounceTimeDirective, ENVIRONMENT, EnvironmentService, FilterByPropertyPipe, FocusElementDirective, FormatFileSizePipe, GlobalStore, InactivityTrackerService, InitialsPipe, MenuOptionGroupDirective, OrderByPipe, PageTitleStrategyService, SafeHtmlPipe, SafeResourceUrlPipe, ScreenLoaderService, SearchByPropertyPipe, SeoService, SoundEffectDirective, ThemeManagerService };
837
+ //# sourceMappingURL=elementar-rt-components-core.mjs.map