cmat 0.0.78 → 0.0.80

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 (211) hide show
  1. package/fesm2022/cmat-components-adapter.mjs +9 -46
  2. package/fesm2022/cmat-components-adapter.mjs.map +1 -1
  3. package/fesm2022/cmat-components-breadcrumb.mjs +104 -205
  4. package/fesm2022/cmat-components-breadcrumb.mjs.map +1 -1
  5. package/fesm2022/cmat-components-card.mjs +4 -8
  6. package/fesm2022/cmat-components-card.mjs.map +1 -1
  7. package/fesm2022/cmat-components-carousel.mjs +21 -21
  8. package/fesm2022/cmat-components-carousel.mjs.map +1 -1
  9. package/fesm2022/cmat-components-cascade.mjs +18 -24
  10. package/fesm2022/cmat-components-cascade.mjs.map +1 -1
  11. package/fesm2022/cmat-components-chip-input.mjs +21 -21
  12. package/fesm2022/cmat-components-chip-input.mjs.map +1 -1
  13. package/fesm2022/cmat-components-code-editor.mjs +4 -22
  14. package/fesm2022/cmat-components-code-editor.mjs.map +1 -1
  15. package/fesm2022/cmat-components-custom-formly.mjs +181 -245
  16. package/fesm2022/cmat-components-custom-formly.mjs.map +1 -1
  17. package/fesm2022/cmat-components-date-range.mjs +12 -184
  18. package/fesm2022/cmat-components-date-range.mjs.map +1 -1
  19. package/fesm2022/cmat-components-date-time-display.mjs +3 -15
  20. package/fesm2022/cmat-components-date-time-display.mjs.map +1 -1
  21. package/fesm2022/cmat-components-drawer.mjs +10 -100
  22. package/fesm2022/cmat-components-drawer.mjs.map +1 -1
  23. package/fesm2022/cmat-components-empty-state.mjs +4 -25
  24. package/fesm2022/cmat-components-empty-state.mjs.map +1 -1
  25. package/fesm2022/cmat-components-file-preview.mjs +3 -21
  26. package/fesm2022/cmat-components-file-preview.mjs.map +1 -1
  27. package/fesm2022/cmat-components-filter-toolbar.mjs +7 -50
  28. package/fesm2022/cmat-components-filter-toolbar.mjs.map +1 -1
  29. package/fesm2022/cmat-components-form-actions.mjs +3 -9
  30. package/fesm2022/cmat-components-form-actions.mjs.map +1 -1
  31. package/fesm2022/cmat-components-fullscreen.mjs +4 -4
  32. package/fesm2022/cmat-components-fullscreen.mjs.map +1 -1
  33. package/fesm2022/cmat-components-highlight.mjs +6 -32
  34. package/fesm2022/cmat-components-highlight.mjs.map +1 -1
  35. package/fesm2022/cmat-components-image-viewer.mjs +12 -24
  36. package/fesm2022/cmat-components-image-viewer.mjs.map +1 -1
  37. package/fesm2022/cmat-components-inline-loading.mjs +3 -12
  38. package/fesm2022/cmat-components-inline-loading.mjs.map +1 -1
  39. package/fesm2022/cmat-components-json-editor.mjs +11 -16
  40. package/fesm2022/cmat-components-json-editor.mjs.map +1 -1
  41. package/fesm2022/cmat-components-knob-input.mjs +24 -18
  42. package/fesm2022/cmat-components-knob-input.mjs.map +1 -1
  43. package/fesm2022/cmat-components-masonry.mjs +8 -17
  44. package/fesm2022/cmat-components-masonry.mjs.map +1 -1
  45. package/fesm2022/cmat-components-material-color-picker.mjs +13 -34
  46. package/fesm2022/cmat-components-material-color-picker.mjs.map +1 -1
  47. package/fesm2022/cmat-components-material-datetimepicker.mjs +80 -436
  48. package/fesm2022/cmat-components-material-datetimepicker.mjs.map +1 -1
  49. package/fesm2022/cmat-components-navigation.mjs +266 -816
  50. package/fesm2022/cmat-components-navigation.mjs.map +1 -1
  51. package/fesm2022/cmat-components-opt-input.mjs +7 -10
  52. package/fesm2022/cmat-components-opt-input.mjs.map +1 -1
  53. package/fesm2022/cmat-components-org-chart.mjs +11 -11
  54. package/fesm2022/cmat-components-org-chart.mjs.map +1 -1
  55. package/fesm2022/cmat-components-page-header.mjs +8 -19
  56. package/fesm2022/cmat-components-page-header.mjs.map +1 -1
  57. package/fesm2022/cmat-components-pagination.mjs +113 -108
  58. package/fesm2022/cmat-components-pagination.mjs.map +1 -1
  59. package/fesm2022/cmat-components-password-strength.mjs +13 -16
  60. package/fesm2022/cmat-components-password-strength.mjs.map +1 -1
  61. package/fesm2022/cmat-components-popover.mjs +15 -151
  62. package/fesm2022/cmat-components-popover.mjs.map +1 -1
  63. package/fesm2022/cmat-components-progress-bar.mjs +16 -26
  64. package/fesm2022/cmat-components-progress-bar.mjs.map +1 -1
  65. package/fesm2022/cmat-components-qrcode.mjs +5 -11
  66. package/fesm2022/cmat-components-qrcode.mjs.map +1 -1
  67. package/fesm2022/cmat-components-rating.mjs +14 -14
  68. package/fesm2022/cmat-components-rating.mjs.map +1 -1
  69. package/fesm2022/cmat-components-rich-text-editor.mjs +4 -25
  70. package/fesm2022/cmat-components-rich-text-editor.mjs.map +1 -1
  71. package/fesm2022/cmat-components-select-search.mjs +51 -79
  72. package/fesm2022/cmat-components-select-search.mjs.map +1 -1
  73. package/fesm2022/cmat-components-select-table.mjs +204 -162
  74. package/fesm2022/cmat-components-select-table.mjs.map +1 -1
  75. package/fesm2022/cmat-components-select-tree.mjs +142 -97
  76. package/fesm2022/cmat-components-select-tree.mjs.map +1 -1
  77. package/fesm2022/cmat-components-skeleton.mjs +4 -22
  78. package/fesm2022/cmat-components-skeleton.mjs.map +1 -1
  79. package/fesm2022/cmat-components-speed-dial.mjs +14 -19
  80. package/fesm2022/cmat-components-speed-dial.mjs.map +1 -1
  81. package/fesm2022/cmat-components-status-tag.mjs +3 -18
  82. package/fesm2022/cmat-components-status-tag.mjs.map +1 -1
  83. package/fesm2022/cmat-components-table-toolbar.mjs +3 -15
  84. package/fesm2022/cmat-components-table-toolbar.mjs.map +1 -1
  85. package/fesm2022/cmat-components-timeline.mjs +18 -21
  86. package/fesm2022/cmat-components-timeline.mjs.map +1 -1
  87. package/fesm2022/cmat-components-toast.mjs +20 -20
  88. package/fesm2022/cmat-components-toast.mjs.map +1 -1
  89. package/fesm2022/cmat-components-transfer-picker.mjs +159 -123
  90. package/fesm2022/cmat-components-transfer-picker.mjs.map +1 -1
  91. package/fesm2022/cmat-components-treetable.mjs +17 -19
  92. package/fesm2022/cmat-components-treetable.mjs.map +1 -1
  93. package/fesm2022/cmat-components-upload.mjs +35 -57
  94. package/fesm2022/cmat-components-upload.mjs.map +1 -1
  95. package/fesm2022/cmat-components-x6-angular-shape.mjs +0 -4
  96. package/fesm2022/cmat-components-x6-angular-shape.mjs.map +1 -1
  97. package/fesm2022/cmat-directives-animate-on-scroll.mjs +6 -27
  98. package/fesm2022/cmat-directives-animate-on-scroll.mjs.map +1 -1
  99. package/fesm2022/cmat-directives-arrow-cursor.mjs +7 -9
  100. package/fesm2022/cmat-directives-arrow-cursor.mjs.map +1 -1
  101. package/fesm2022/cmat-directives-autofocus.mjs +3 -3
  102. package/fesm2022/cmat-directives-data-exporter.mjs +24 -33
  103. package/fesm2022/cmat-directives-data-exporter.mjs.map +1 -1
  104. package/fesm2022/cmat-directives-debounce.mjs +14 -17
  105. package/fesm2022/cmat-directives-debounce.mjs.map +1 -1
  106. package/fesm2022/cmat-directives-digit-only.mjs +6 -23
  107. package/fesm2022/cmat-directives-digit-only.mjs.map +1 -1
  108. package/fesm2022/cmat-directives-equal-validator.mjs +3 -3
  109. package/fesm2022/cmat-directives-seamless-auto-scroll.mjs +4 -11
  110. package/fesm2022/cmat-directives-seamless-auto-scroll.mjs.map +1 -1
  111. package/fesm2022/cmat-lib-mock-api.mjs +6 -43
  112. package/fesm2022/cmat-lib-mock-api.mjs.map +1 -1
  113. package/fesm2022/cmat-pipes-bytes.mjs +3 -3
  114. package/fesm2022/cmat-pipes-date-format.mjs +3 -3
  115. package/fesm2022/cmat-pipes-find-by-key.mjs +3 -5
  116. package/fesm2022/cmat-pipes-find-by-key.mjs.map +1 -1
  117. package/fesm2022/cmat-pipes-group-by.mjs +3 -3
  118. package/fesm2022/cmat-pipes-keys.mjs +3 -3
  119. package/fesm2022/cmat-pipes-secure.mjs +8 -12
  120. package/fesm2022/cmat-pipes-secure.mjs.map +1 -1
  121. package/fesm2022/cmat-pipes-uppercase.mjs +3 -3
  122. package/fesm2022/cmat-services-alert.mjs +3 -3
  123. package/fesm2022/cmat-services-config.mjs +50 -26
  124. package/fesm2022/cmat-services-config.mjs.map +1 -1
  125. package/fesm2022/cmat-services-confirmation.mjs +9 -11
  126. package/fesm2022/cmat-services-confirmation.mjs.map +1 -1
  127. package/fesm2022/cmat-services-data.mjs +56 -101
  128. package/fesm2022/cmat-services-data.mjs.map +1 -1
  129. package/fesm2022/cmat-services-export-as.mjs +4 -32
  130. package/fesm2022/cmat-services-export-as.mjs.map +1 -1
  131. package/fesm2022/cmat-services-loading.mjs +49 -40
  132. package/fesm2022/cmat-services-loading.mjs.map +1 -1
  133. package/fesm2022/cmat-services-local-storage.mjs +3 -3
  134. package/fesm2022/cmat-services-media-watcher.mjs +19 -25
  135. package/fesm2022/cmat-services-media-watcher.mjs.map +1 -1
  136. package/fesm2022/cmat-services-platform.mjs +3 -10
  137. package/fesm2022/cmat-services-platform.mjs.map +1 -1
  138. package/fesm2022/cmat-services-splash-screen.mjs +8 -13
  139. package/fesm2022/cmat-services-splash-screen.mjs.map +1 -1
  140. package/fesm2022/cmat-services-title.mjs +8 -12
  141. package/fesm2022/cmat-services-title.mjs.map +1 -1
  142. package/fesm2022/cmat-services-translation.mjs +3 -3
  143. package/fesm2022/cmat-services-utils.mjs +5 -27
  144. package/fesm2022/cmat-services-utils.mjs.map +1 -1
  145. package/fesm2022/cmat-validators.mjs +0 -8
  146. package/fesm2022/cmat-validators.mjs.map +1 -1
  147. package/fesm2022/cmat.mjs +3477 -3795
  148. package/fesm2022/cmat.mjs.map +1 -1
  149. package/package.json +1 -1
  150. package/tailwind/plugins/helpers.js +1 -10
  151. package/tailwind/plugins/scrollbar/index.js +0 -1
  152. package/tailwind/plugins/scrollbar/typedefs.js +1 -7
  153. package/tailwind/plugins/scrollbar/utilities.js +9 -58
  154. package/tailwind/plugins/scrollbar/variants.js +2 -17
  155. package/tailwind/plugins/theming.js +1 -57
  156. package/tailwind/utils/generate-contrasts.js +1 -12
  157. package/tailwind/utils/generate-palette.js +1 -32
  158. package/types/cmat-components-adapter.d.ts +0 -25
  159. package/types/cmat-components-breadcrumb.d.ts +25 -175
  160. package/types/cmat-components-carousel.d.ts +2 -20
  161. package/types/cmat-components-cascade.d.ts +4 -4
  162. package/types/cmat-components-chip-input.d.ts +4 -3
  163. package/types/cmat-components-code-editor.d.ts +0 -18
  164. package/types/cmat-components-custom-formly.d.ts +30 -37
  165. package/types/cmat-components-date-range.d.ts +1 -72
  166. package/types/cmat-components-date-time-display.d.ts +0 -15
  167. package/types/cmat-components-drawer.d.ts +2 -44
  168. package/types/cmat-components-empty-state.d.ts +0 -21
  169. package/types/cmat-components-file-preview.d.ts +0 -18
  170. package/types/cmat-components-filter-toolbar.d.ts +3 -43
  171. package/types/cmat-components-form-actions.d.ts +0 -6
  172. package/types/cmat-components-image-viewer.d.ts +5 -18
  173. package/types/cmat-components-inline-loading.d.ts +0 -9
  174. package/types/cmat-components-json-editor.d.ts +0 -1
  175. package/types/cmat-components-knob-input.d.ts +3 -3
  176. package/types/cmat-components-masonry.d.ts +1 -2
  177. package/types/cmat-components-material-color-picker.d.ts +1 -2
  178. package/types/cmat-components-material-datetimepicker.d.ts +6 -272
  179. package/types/cmat-components-navigation.d.ts +34 -171
  180. package/types/cmat-components-opt-input.d.ts +1 -1
  181. package/types/cmat-components-page-header.d.ts +2 -16
  182. package/types/cmat-components-pagination.d.ts +26 -27
  183. package/types/cmat-components-password-strength.d.ts +1 -2
  184. package/types/cmat-components-popover.d.ts +1 -110
  185. package/types/cmat-components-progress-bar.d.ts +9 -11
  186. package/types/cmat-components-rating.d.ts +6 -7
  187. package/types/cmat-components-rich-text-editor.d.ts +0 -21
  188. package/types/cmat-components-select-search.d.ts +4 -20
  189. package/types/cmat-components-select-table.d.ts +24 -12
  190. package/types/cmat-components-select-tree.d.ts +29 -29
  191. package/types/cmat-components-skeleton.d.ts +0 -18
  192. package/types/cmat-components-speed-dial.d.ts +1 -2
  193. package/types/cmat-components-status-tag.d.ts +0 -15
  194. package/types/cmat-components-table-toolbar.d.ts +0 -12
  195. package/types/cmat-components-timeline.d.ts +3 -4
  196. package/types/cmat-components-toast.d.ts +2 -2
  197. package/types/cmat-components-transfer-picker.d.ts +42 -36
  198. package/types/cmat-components-treetable.d.ts +3 -4
  199. package/types/cmat-components-upload.d.ts +12 -17
  200. package/types/cmat-components-x6-angular-shape.d.ts +0 -1
  201. package/types/cmat-directives-arrow-cursor.d.ts +1 -1
  202. package/types/cmat-directives-debounce.d.ts +3 -4
  203. package/types/cmat-pipes-secure.d.ts +3 -4
  204. package/types/cmat-services-config.d.ts +35 -13
  205. package/types/cmat-services-data.d.ts +13 -12
  206. package/types/cmat-services-export-as.d.ts +0 -22
  207. package/types/cmat-services-loading.d.ts +15 -10
  208. package/types/cmat-services-media-watcher.d.ts +10 -13
  209. package/types/cmat-services-splash-screen.d.ts +2 -4
  210. package/types/cmat-services-title.d.ts +3 -5
  211. package/types/cmat.d.ts +733 -1391
@@ -1,70 +1,84 @@
1
- import { HttpClient } from '@angular/common/http';
2
1
  import * as i0 from '@angular/core';
3
- import { inject, Injectable } from '@angular/core';
4
- import { BehaviorSubject, finalize } from 'rxjs';
2
+ import { signal, Injectable, inject } from '@angular/core';
3
+ import { toObservable } from '@angular/core/rxjs-interop';
4
+ import { finalize } from 'rxjs';
5
5
 
6
6
  class CmatLoadingService {
7
7
  constructor() {
8
- this._httpClient = inject(HttpClient);
9
- this._auto$ = new BehaviorSubject(true);
10
- this._mode$ = new BehaviorSubject('indeterminate');
11
- this._progress$ = new BehaviorSubject(0);
12
- this._show$ = new BehaviorSubject(false);
13
- this._urlMap = new Map();
8
+ this._auto$ = signal(true, ...(ngDevMode ? [{ debugName: "_auto$" }] : /* istanbul ignore next */ []));
9
+ this._mode$ = signal('indeterminate', ...(ngDevMode ? [{ debugName: "_mode$" }] : /* istanbul ignore next */ []));
10
+ this._progress$ = signal(0, ...(ngDevMode ? [{ debugName: "_progress$" }] : /* istanbul ignore next */ []));
11
+ this._show$ = signal(false, ...(ngDevMode ? [{ debugName: "_show$" }] : /* istanbul ignore next */ []));
12
+ this._autoObservable$ = toObservable(this._auto$);
13
+ this._modeObservable$ = toObservable(this._mode$);
14
+ this._progressObservable$ = toObservable(this._progress$);
15
+ this._showObservable$ = toObservable(this._show$);
16
+ this._urlSet = new Set();
14
17
  }
15
18
  get auto$() {
16
- return this._auto$.asObservable();
19
+ return this._autoObservable$;
20
+ }
21
+ get isAuto() {
22
+ return this._auto$();
17
23
  }
18
24
  get mode$() {
19
- return this._mode$.asObservable();
25
+ return this._modeObservable$;
26
+ }
27
+ get currentMode() {
28
+ return this._mode$();
20
29
  }
21
30
  get progress$() {
22
- return this._progress$.asObservable();
31
+ return this._progressObservable$;
32
+ }
33
+ get currentProgress() {
34
+ return this._progress$();
23
35
  }
24
36
  get show$() {
25
- return this._show$.asObservable();
37
+ return this._showObservable$;
38
+ }
39
+ get isShowing() {
40
+ return this._show$();
26
41
  }
27
42
  show() {
28
- this._show$.next(true);
43
+ this._show$.set(true);
29
44
  }
30
45
  hide() {
31
- this._show$.next(false);
46
+ this._show$.set(false);
32
47
  }
33
48
  setAutoMode(value) {
34
- this._auto$.next(value);
49
+ this._auto$.set(value);
35
50
  }
36
51
  setMode(value) {
37
- this._mode$.next(value);
52
+ this._mode$.set(value);
38
53
  }
39
54
  setProgress(value) {
40
55
  if (value < 0 || value > 100) {
41
56
  console.error('Progress value must be between 0 and 100!');
42
57
  return;
43
58
  }
44
- this._progress$.next(value);
59
+ this._progress$.set(value);
45
60
  }
46
61
  setLoadingStatus(status, url) {
47
- // Return if the url was not provided
48
62
  if (!url) {
49
63
  console.error('The request URL must be provided!');
50
64
  return;
51
65
  }
52
- if (status === true) {
53
- this._urlMap.set(url, status);
54
- this._show$.next(true);
66
+ if (status) {
67
+ this._urlSet.add(url);
68
+ this._show$.set(true);
69
+ return;
55
70
  }
56
- else if (status === false && this._urlMap.has(url)) {
57
- this._urlMap.delete(url);
71
+ if (this._urlSet.has(url)) {
72
+ this._urlSet.delete(url);
58
73
  }
59
- // Only set the status to 'false' if all outgoing requests are completed
60
- if (this._urlMap.size === 0) {
61
- this._show$.next(false);
74
+ if (this._urlSet.size === 0) {
75
+ this._show$.set(false);
62
76
  }
63
77
  }
64
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.7", ngImport: i0, type: CmatLoadingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
65
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.7", ngImport: i0, type: CmatLoadingService, providedIn: 'root' }); }
78
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CmatLoadingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
79
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CmatLoadingService, providedIn: 'root' }); }
66
80
  }
67
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.7", ngImport: i0, type: CmatLoadingService, decorators: [{
81
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CmatLoadingService, decorators: [{
68
82
  type: Injectable,
69
83
  args: [{
70
84
  providedIn: 'root'
@@ -74,27 +88,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.7", ngImpor
74
88
  class CmatLoadingInterceptor {
75
89
  constructor() {
76
90
  this._cmatLoadingService = inject(CmatLoadingService);
77
- this._cmatLoadingService.auto$
78
- .subscribe((value) => {
79
- this.handleRequestsAutomatically = value;
80
- });
81
91
  }
82
92
  intercept(req, next) {
83
- if (!this.handleRequestsAutomatically || req.url.includes('file/download/')) {
93
+ if (!this._cmatLoadingService.isAuto || req.url.includes('file/download/')) {
84
94
  return next.handle(req);
85
95
  }
86
96
  this._cmatLoadingService.setLoadingStatus(true, req.url);
87
97
  return next.handle(req).pipe(finalize(() => {
88
- // Set the status to false if there are any errors or the request is completed
89
98
  this._cmatLoadingService.setLoadingStatus(false, req.url);
90
99
  }));
91
100
  }
92
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.7", ngImport: i0, type: CmatLoadingInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
93
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.7", ngImport: i0, type: CmatLoadingInterceptor }); }
101
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CmatLoadingInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
102
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CmatLoadingInterceptor }); }
94
103
  }
95
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.7", ngImport: i0, type: CmatLoadingInterceptor, decorators: [{
104
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CmatLoadingInterceptor, decorators: [{
96
105
  type: Injectable
97
- }], ctorParameters: () => [] });
106
+ }] });
98
107
 
99
108
  /**
100
109
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"cmat-services-loading.mjs","sources":["../../../projects/cmat/services/loading/loading.service.ts","../../../projects/cmat/services/loading/loading.interceptor.ts","../../../projects/cmat/services/loading/cmat-services-loading.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CmatLoadingService {\r\n private _httpClient = inject(HttpClient);\r\n\r\n private _auto$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\r\n private _mode$: BehaviorSubject<'determinate' | 'indeterminate'> = new BehaviorSubject<'determinate' | 'indeterminate'>('indeterminate');\r\n private _progress$: BehaviorSubject<number | null> = new BehaviorSubject<number | null>(0);\r\n private _show$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\r\n private _urlMap: Map<string, boolean> = new Map<string, boolean>();\r\n\r\n get auto$(): Observable<boolean> {\r\n return this._auto$.asObservable();\r\n }\r\n\r\n get mode$(): Observable<'determinate' | 'indeterminate'> {\r\n return this._mode$.asObservable();\r\n }\r\n\r\n get progress$(): Observable<number | null> {\r\n return this._progress$.asObservable();\r\n }\r\n\r\n get show$(): Observable<boolean> {\r\n return this._show$.asObservable();\r\n }\r\n\r\n show(): void {\r\n this._show$.next(true);\r\n }\r\n\r\n hide(): void {\r\n this._show$.next(false);\r\n }\r\n\r\n setAutoMode(value: boolean): void {\r\n this._auto$.next(value);\r\n }\r\n\r\n setMode(value: 'determinate' | 'indeterminate'): void {\r\n this._mode$.next(value);\r\n }\r\n\r\n setProgress(value: number): void {\r\n if (value < 0 || value > 100) {\r\n console.error('Progress value must be between 0 and 100!');\r\n return;\r\n }\r\n\r\n this._progress$.next(value);\r\n }\r\n\r\n setLoadingStatus(status: boolean, url: string): void {\r\n // Return if the url was not provided\r\n if (!url) {\r\n console.error('The request URL must be provided!');\r\n return;\r\n }\r\n\r\n if (status === true) {\r\n this._urlMap.set(url, status);\r\n this._show$.next(true);\r\n }\r\n else if (status === false && this._urlMap.has(url)) {\r\n this._urlMap.delete(url);\r\n }\r\n\r\n // Only set the status to 'false' if all outgoing requests are completed\r\n if (this._urlMap.size === 0) {\r\n this._show$.next(false);\r\n }\r\n }\r\n}\r\n\r\n","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { finalize, Observable } from 'rxjs';\r\nimport { CmatLoadingService } from './loading.service';\r\n\r\n@Injectable()\r\nexport class CmatLoadingInterceptor implements HttpInterceptor {\r\n\r\n handleRequestsAutomatically: boolean;\r\n\r\n private _cmatLoadingService = inject(CmatLoadingService);\r\n constructor() {\r\n this._cmatLoadingService.auto$\r\n .subscribe((value: boolean) => {\r\n this.handleRequestsAutomatically = value;\r\n });\r\n }\r\n\r\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n if (!this.handleRequestsAutomatically || req.url.includes('file/download/')) {\r\n return next.handle(req);\r\n }\r\n\r\n this._cmatLoadingService.setLoadingStatus(true, req.url);\r\n\r\n return next.handle(req).pipe(\r\n finalize(() => {\r\n // Set the status to false if there are any errors or the request is completed\r\n this._cmatLoadingService.setLoadingStatus(false, req.url);\r\n }));\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cmat-services-loading.mjs","sources":["../../../projects/cmat/services/loading/loading.service.ts","../../../projects/cmat/services/loading/loading.interceptor.ts","../../../projects/cmat/services/loading/cmat-services-loading.ts"],"sourcesContent":["import { Injectable, signal } from '@angular/core';\r\nimport { toObservable } from '@angular/core/rxjs-interop';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CmatLoadingService {\r\n private readonly _auto$ = signal<boolean>(true);\r\n private readonly _mode$ = signal<'determinate' | 'indeterminate'>('indeterminate');\r\n private readonly _progress$ = signal<number | null>(0);\r\n private readonly _show$ = signal<boolean>(false);\r\n private readonly _autoObservable$ = toObservable(this._auto$);\r\n private readonly _modeObservable$ = toObservable(this._mode$);\r\n private readonly _progressObservable$ = toObservable(this._progress$);\r\n private readonly _showObservable$ = toObservable(this._show$);\r\n private readonly _urlSet = new Set<string>();\r\n\r\n get auto$(): Observable<boolean> {\r\n return this._autoObservable$;\r\n }\r\n\r\n get isAuto(): boolean {\r\n return this._auto$();\r\n }\r\n\r\n get mode$(): Observable<'determinate' | 'indeterminate'> {\r\n return this._modeObservable$;\r\n }\r\n\r\n get currentMode(): 'determinate' | 'indeterminate' {\r\n return this._mode$();\r\n }\r\n\r\n get progress$(): Observable<number | null> {\r\n return this._progressObservable$;\r\n }\r\n\r\n get currentProgress(): number | null {\r\n return this._progress$();\r\n }\r\n\r\n get show$(): Observable<boolean> {\r\n return this._showObservable$;\r\n }\r\n\r\n get isShowing(): boolean {\r\n return this._show$();\r\n }\r\n\r\n show(): void {\r\n this._show$.set(true);\r\n }\r\n\r\n hide(): void {\r\n this._show$.set(false);\r\n }\r\n\r\n setAutoMode(value: boolean): void {\r\n this._auto$.set(value);\r\n }\r\n\r\n setMode(value: 'determinate' | 'indeterminate'): void {\r\n this._mode$.set(value);\r\n }\r\n\r\n setProgress(value: number): void {\r\n if (value < 0 || value > 100) {\r\n console.error('Progress value must be between 0 and 100!');\r\n return;\r\n }\r\n\r\n this._progress$.set(value);\r\n }\r\n\r\n setLoadingStatus(status: boolean, url: string): void {\r\n if (!url) {\r\n console.error('The request URL must be provided!');\r\n return;\r\n }\r\n\r\n if (status) {\r\n this._urlSet.add(url);\r\n this._show$.set(true);\r\n return;\r\n }\r\n\r\n if (this._urlSet.has(url)) {\r\n this._urlSet.delete(url);\r\n }\r\n\r\n if (this._urlSet.size === 0) {\r\n this._show$.set(false);\r\n }\r\n }\r\n}\r\n\r\n","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { finalize, Observable } from 'rxjs';\r\nimport { CmatLoadingService } from './loading.service';\r\n\r\n@Injectable()\r\nexport class CmatLoadingInterceptor implements HttpInterceptor {\r\n private readonly _cmatLoadingService = inject(CmatLoadingService);\r\n\r\n intercept(req: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\r\n if (!this._cmatLoadingService.isAuto || req.url.includes('file/download/')) {\r\n return next.handle(req);\r\n }\r\n\r\n this._cmatLoadingService.setLoadingStatus(true, req.url);\r\n\r\n return next.handle(req).pipe(\r\n finalize(() => {\r\n this._cmatLoadingService.setLoadingStatus(false, req.url);\r\n }));\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;MAOa,kBAAkB,CAAA;AAH/B,IAAA,WAAA,GAAA;AAIqB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAU,IAAI,6EAAC;AAC9B,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAkC,eAAe,6EAAC;AACjE,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAgB,CAAC,iFAAC;AACrC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAU,KAAK,6EAAC;AAC/B,QAAA,IAAA,CAAA,gBAAgB,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;AAC5C,QAAA,IAAA,CAAA,gBAAgB,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;AAC5C,QAAA,IAAA,CAAA,oBAAoB,GAAG,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;AACpD,QAAA,IAAA,CAAA,gBAAgB,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;AAC5C,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,GAAG,EAAU;AA+E/C,IAAA;AA7EG,IAAA,IAAI,KAAK,GAAA;QACL,OAAO,IAAI,CAAC,gBAAgB;IAChC;AAEA,IAAA,IAAI,MAAM,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE;IACxB;AAEA,IAAA,IAAI,KAAK,GAAA;QACL,OAAO,IAAI,CAAC,gBAAgB;IAChC;AAEA,IAAA,IAAI,WAAW,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE;IACxB;AAEA,IAAA,IAAI,SAAS,GAAA;QACT,OAAO,IAAI,CAAC,oBAAoB;IACpC;AAEA,IAAA,IAAI,eAAe,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE;IAC5B;AAEA,IAAA,IAAI,KAAK,GAAA;QACL,OAAO,IAAI,CAAC,gBAAgB;IAChC;AAEA,IAAA,IAAI,SAAS,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE;IACxB;IAEA,IAAI,GAAA;AACA,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;IACzB;IAEA,IAAI,GAAA;AACA,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;IAC1B;AAEA,IAAA,WAAW,CAAC,KAAc,EAAA;AACtB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;IAC1B;AAEA,IAAA,OAAO,CAAC,KAAsC,EAAA;AAC1C,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;IAC1B;AAEA,IAAA,WAAW,CAAC,KAAa,EAAA;QACrB,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,GAAG,EAAE;AAC1B,YAAA,OAAO,CAAC,KAAK,CAAC,2CAA2C,CAAC;YAC1D;QACJ;AAEA,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;IAC9B;IAEA,gBAAgB,CAAC,MAAe,EAAE,GAAW,EAAA;QACzC,IAAI,CAAC,GAAG,EAAE;AACN,YAAA,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC;YAClD;QACJ;QAEA,IAAI,MAAM,EAAE;AACR,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;AACrB,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;YACrB;QACJ;QAEA,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACvB,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;QAC5B;QAEA,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE;AACzB,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;QAC1B;IACJ;8GAvFS,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cAFf,MAAM,EAAA,CAAA,CAAA;;2FAET,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCAY,sBAAsB,CAAA;AADnC,IAAA,WAAA,GAAA;AAEqB,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAcpE,IAAA;IAZG,SAAS,CAAC,GAAyB,EAAE,IAAiB,EAAA;AAClD,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE;AACxE,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;QAC3B;QAEA,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC;AAExD,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CACxB,QAAQ,CAAC,MAAK;YACV,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC;QAC7D,CAAC,CAAC,CAAC;IACX;8GAdS,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAtB,sBAAsB,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC;;;ACLD;;AAEG;;;;"}
@@ -11,10 +11,10 @@ class CmatLocalStorageService {
11
11
  removeItem(key) {
12
12
  localStorage.removeItem(key);
13
13
  }
14
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.7", ngImport: i0, type: CmatLocalStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
15
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.7", ngImport: i0, type: CmatLocalStorageService, providedIn: 'root' }); }
14
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CmatLocalStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
15
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CmatLocalStorageService, providedIn: 'root' }); }
16
16
  }
17
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.7", ngImport: i0, type: CmatLocalStorageService, decorators: [{
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CmatLocalStorageService, decorators: [{
18
18
  type: Injectable,
19
19
  args: [{
20
20
  providedIn: 'root'
@@ -2,57 +2,51 @@ import { BreakpointObserver } from '@angular/cdk/layout';
2
2
  import * as i0 from '@angular/core';
3
3
  import { inject, Injectable } from '@angular/core';
4
4
  import { CmatConfigService } from 'cmat/services/config';
5
- import { fromPairs } from 'lodash-es';
6
- import { ReplaySubject, Subject } from 'rxjs';
7
- import { takeUntil, map, switchMap } from 'rxjs/operators';
5
+ import { map, distinctUntilChanged, switchMap, shareReplay } from 'rxjs/operators';
8
6
 
9
7
  class CmatMediaWatcherService {
10
8
  constructor() {
11
9
  this._breakpointObserver = inject(BreakpointObserver);
12
10
  this._cmatConfigService = inject(CmatConfigService);
13
- this._onMediaChange = new ReplaySubject(1);
14
- this._unsubscribeAll = new Subject();
15
- this._cmatConfigService.config$.pipe(takeUntil(this._unsubscribeAll), map(config => fromPairs(Object.entries(config.screens).map(([alias, screen]) => ([alias, `(min-width: ${screen})`])))), switchMap(screens => this._breakpointObserver.observe(Object.values(screens)).pipe(map((state) => {
16
- // Prepare the observable values and set their defaults
11
+ }
12
+ get onMediaChange$() {
13
+ return this._cmatConfigService.config$.pipe(map(config => config.screens), distinctUntilChanged((previous, current) => this._screensAreEqual(previous, current)), map(screens => Object.fromEntries(Object.entries(screens).map(([alias, screen]) => [alias, `(min-width: ${screen})`]))), switchMap(screens => this._breakpointObserver.observe(Object.values(screens)).pipe(map((state) => {
17
14
  const matchingAliases = [];
18
15
  const matchingQueries = {};
19
- // Get the matching breakpoints and use them to fill the subject
20
16
  const matchingBreakpoints = Object.entries(state.breakpoints).filter(([, matches]) => matches) ?? [];
21
17
  for (const [query] of matchingBreakpoints) {
22
- // Find the alias of the matching query
23
18
  const matchingAlias = Object.entries(screens).find(([, q]) => q === query)?.[0];
24
- // Add the matching query to the observable values
25
19
  if (matchingAlias) {
26
20
  matchingAliases.push(matchingAlias);
27
21
  matchingQueries[matchingAlias] = query;
28
22
  }
29
23
  }
30
- // Execute the observable
31
- this._onMediaChange.next({
24
+ return {
32
25
  matchingAliases,
33
26
  matchingQueries
34
- });
35
- })))).subscribe();
36
- }
37
- get onMediaChange$() {
38
- return this._onMediaChange.asObservable();
39
- }
40
- ngOnDestroy() {
41
- this._unsubscribeAll.next(void 0);
42
- this._unsubscribeAll.complete();
27
+ };
28
+ }))), shareReplay({ bufferSize: 1, refCount: true }));
43
29
  }
44
30
  onMediaQueryChange$(query) {
45
31
  return this._breakpointObserver.observe(query);
46
32
  }
47
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.7", ngImport: i0, type: CmatMediaWatcherService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
48
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.7", ngImport: i0, type: CmatMediaWatcherService, providedIn: 'root' }); }
33
+ _screensAreEqual(previous, current) {
34
+ const previousKeys = Object.keys(previous);
35
+ const currentKeys = Object.keys(current);
36
+ if (previousKeys.length !== currentKeys.length) {
37
+ return false;
38
+ }
39
+ return previousKeys.every(key => previous[key] === current[key]);
40
+ }
41
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CmatMediaWatcherService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
42
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CmatMediaWatcherService, providedIn: 'root' }); }
49
43
  }
50
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.7", ngImport: i0, type: CmatMediaWatcherService, decorators: [{
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CmatMediaWatcherService, decorators: [{
51
45
  type: Injectable,
52
46
  args: [{
53
47
  providedIn: 'root'
54
48
  }]
55
- }], ctorParameters: () => [] });
49
+ }] });
56
50
 
57
51
  /**
58
52
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"cmat-services-media-watcher.mjs","sources":["../../../projects/cmat/services/media-watcher/media-watcher.service.ts","../../../projects/cmat/services/media-watcher/cmat-services-media-watcher.ts"],"sourcesContent":["import { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\nimport { Injectable, OnDestroy, inject } from '@angular/core';\r\nimport { CmatConfigService } from 'cmat/services/config';\r\nimport { fromPairs } from 'lodash-es';\r\nimport { Observable, ReplaySubject, Subject } from 'rxjs';\r\nimport { map, switchMap, takeUntil } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CmatMediaWatcherService implements OnDestroy {\r\n private _breakpointObserver = inject(BreakpointObserver);\r\n private _cmatConfigService = inject(CmatConfigService);\r\n\r\n private _onMediaChange: ReplaySubject<{ matchingAliases: string[]; matchingQueries: any }> = new ReplaySubject<{ matchingAliases: string[]; matchingQueries: any }>(1);\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n \r\n\r\n constructor() {\r\n this._cmatConfigService.config$.pipe(\r\n takeUntil(this._unsubscribeAll),\r\n map(config => fromPairs(Object.entries(config.screens).map(([alias, screen]) => ([alias, `(min-width: ${screen as string})`])))),\r\n switchMap(screens => this._breakpointObserver.observe(Object.values(screens)).pipe(\r\n map((state) => {\r\n // Prepare the observable values and set their defaults\r\n const matchingAliases: string[] = [];\r\n const matchingQueries: any = {};\r\n\r\n // Get the matching breakpoints and use them to fill the subject\r\n const matchingBreakpoints = Object.entries(state.breakpoints).filter(([, matches]) => matches) ?? [];\r\n for (const [query] of matchingBreakpoints) {\r\n // Find the alias of the matching query\r\n const matchingAlias = Object.entries(screens).find(([, q]) => q === query)?.[0];\r\n\r\n // Add the matching query to the observable values\r\n if (matchingAlias) {\r\n matchingAliases.push(matchingAlias);\r\n matchingQueries[matchingAlias] = query;\r\n }\r\n }\r\n\r\n // Execute the observable\r\n this._onMediaChange.next({\r\n matchingAliases,\r\n matchingQueries\r\n });\r\n })\r\n ))\r\n ).subscribe();\r\n }\r\n\r\n get onMediaChange$(): Observable<{ matchingAliases: string[]; matchingQueries: any }> {\r\n return this._onMediaChange.asObservable();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n\r\n onMediaQueryChange$(query: string | string[]): Observable<BreakpointState> {\r\n return this._breakpointObserver.observe(query);\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;MAUa,uBAAuB,CAAA;AAShC,IAAA,WAAA,GAAA;AARQ,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAChD,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAE9C,QAAA,IAAA,CAAA,cAAc,GAAuE,IAAI,aAAa,CAAsD,CAAC,CAAC;AAC9J,QAAA,IAAA,CAAA,eAAe,GAAkB,IAAI,OAAO,EAAQ;AAKxD,QAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAChC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,EAC/B,GAAG,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA,YAAA,EAAe,MAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAChI,SAAS,CAAC,OAAO,IAAI,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAC9E,GAAG,CAAC,CAAC,KAAK,KAAI;;YAEV,MAAM,eAAe,GAAa,EAAE;YACpC,MAAM,eAAe,GAAQ,EAAE;;YAG/B,MAAM,mBAAmB,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,EAAE;AACpG,YAAA,KAAK,MAAM,CAAC,KAAK,CAAC,IAAI,mBAAmB,EAAE;;gBAEvC,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC;;gBAG/E,IAAI,aAAa,EAAE;AACf,oBAAA,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC;AACnC,oBAAA,eAAe,CAAC,aAAa,CAAC,GAAG,KAAK;gBAC1C;YACJ;;AAGA,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;gBACrB,eAAe;gBACf;AACH,aAAA,CAAC;AACN,QAAA,CAAC,CAAC,CACL,CAAC,CACL,CAAC,SAAS,EAAE;IACjB;AAEA,IAAA,IAAI,cAAc,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;IAC7C;IAEA,WAAW,GAAA;QACP,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACjC,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;IACnC;AAEA,IAAA,mBAAmB,CAAC,KAAwB,EAAA;QACxC,OAAO,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC;IAClD;8GArDS,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cAFpB,MAAM,EAAA,CAAA,CAAA;;2FAET,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE;AACf,iBAAA;;;ACTD;;AAEG;;;;"}
1
+ {"version":3,"file":"cmat-services-media-watcher.mjs","sources":["../../../projects/cmat/services/media-watcher/media-watcher.service.ts","../../../projects/cmat/services/media-watcher/cmat-services-media-watcher.ts"],"sourcesContent":["import { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { CmatConfigService } from 'cmat/services/config';\r\nimport { Observable } from 'rxjs';\r\nimport { distinctUntilChanged, map, shareReplay, switchMap } from 'rxjs/operators';\r\n\r\ninterface CmatMediaChange {\r\n matchingAliases: string[];\r\n matchingQueries: Record<string, string>;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CmatMediaWatcherService {\r\n private readonly _breakpointObserver = inject(BreakpointObserver);\r\n private readonly _cmatConfigService = inject(CmatConfigService);\r\n\r\n get onMediaChange$(): Observable<CmatMediaChange> {\r\n return this._cmatConfigService.config$.pipe(\r\n map(config => config.screens),\r\n distinctUntilChanged((previous, current) => this._screensAreEqual(previous, current)),\r\n map(screens => Object.fromEntries(Object.entries(screens).map(([alias, screen]) => [alias, `(min-width: ${screen})`]))),\r\n switchMap(screens => this._breakpointObserver.observe(Object.values(screens)).pipe(\r\n map((state) => {\r\n const matchingAliases: string[] = [];\r\n const matchingQueries: Record<string, string> = {};\r\n const matchingBreakpoints = Object.entries(state.breakpoints).filter(([, matches]) => matches) ?? [];\r\n\r\n for (const [query] of matchingBreakpoints) {\r\n const matchingAlias = Object.entries(screens).find(([, q]) => q === query)?.[0];\r\n if (matchingAlias) {\r\n matchingAliases.push(matchingAlias);\r\n matchingQueries[matchingAlias] = query;\r\n }\r\n }\r\n\r\n return {\r\n matchingAliases,\r\n matchingQueries\r\n };\r\n })\r\n )),\r\n shareReplay({ bufferSize: 1, refCount: true })\r\n );\r\n }\r\n\r\n onMediaQueryChange$(query: string | string[]): Observable<BreakpointState> {\r\n return this._breakpointObserver.observe(query);\r\n }\r\n\r\n private _screensAreEqual(previous: Record<string, string>, current: Record<string, string>): boolean {\r\n const previousKeys = Object.keys(previous);\r\n const currentKeys = Object.keys(current);\r\n\r\n if (previousKeys.length !== currentKeys.length) {\r\n return false;\r\n }\r\n\r\n return previousKeys.every(key => previous[key] === current[key]);\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -6,39 +6,32 @@ class CmatPlatformService {
6
6
  constructor() {
7
7
  this.osName = 'os-unknown';
8
8
  this._platform = inject(Platform);
9
- // If the platform is not a browser, return immediately
10
9
  if (!this._platform.isBrowser) {
11
10
  return;
12
11
  }
13
- // Windows
14
12
  if (navigator.userAgent.includes('Win')) {
15
13
  this.osName = 'os-windows';
16
14
  }
17
- // Mac OS
18
15
  if (navigator.userAgent.includes('Mac')) {
19
16
  this.osName = 'os-mac';
20
17
  }
21
- // Unix
22
18
  if (navigator.userAgent.includes('X11')) {
23
19
  this.osName = 'os-unix';
24
20
  }
25
- // Linux
26
21
  if (navigator.userAgent.includes('Linux')) {
27
22
  this.osName = 'os-linux';
28
23
  }
29
- // iOS
30
24
  if (this._platform.IOS) {
31
25
  this.osName = 'os-ios';
32
26
  }
33
- // Android
34
27
  if (this._platform.ANDROID) {
35
28
  this.osName = 'os-android';
36
29
  }
37
30
  }
38
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.7", ngImport: i0, type: CmatPlatformService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
39
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.7", ngImport: i0, type: CmatPlatformService, providedIn: 'root' }); }
31
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CmatPlatformService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
32
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CmatPlatformService, providedIn: 'root' }); }
40
33
  }
41
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.7", ngImport: i0, type: CmatPlatformService, decorators: [{
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CmatPlatformService, decorators: [{
42
35
  type: Injectable,
43
36
  args: [{
44
37
  providedIn: 'root'
@@ -1 +1 @@
1
- {"version":3,"file":"cmat-services-platform.mjs","sources":["../../../projects/cmat/services/platform/platform.service.ts","../../../projects/cmat/services/platform/cmat-services-platform.ts"],"sourcesContent":["import { Platform } from '@angular/cdk/platform';\r\nimport { Injectable, inject } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CmatPlatformService {\r\n\r\n osName = 'os-unknown';\r\n\r\n private _platform = inject(Platform);\r\n constructor() {\r\n // If the platform is not a browser, return immediately\r\n if (!this._platform.isBrowser) {\r\n return;\r\n }\r\n\r\n // Windows\r\n if (navigator.userAgent.includes('Win')) {\r\n this.osName = 'os-windows';\r\n }\r\n\r\n // Mac OS\r\n if (navigator.userAgent.includes('Mac')) {\r\n this.osName = 'os-mac';\r\n }\r\n\r\n // Unix\r\n if (navigator.userAgent.includes('X11')) {\r\n this.osName = 'os-unix';\r\n }\r\n\r\n // Linux\r\n if (navigator.userAgent.includes('Linux')) {\r\n this.osName = 'os-linux';\r\n }\r\n\r\n // iOS\r\n if (this._platform.IOS) {\r\n this.osName = 'os-ios';\r\n }\r\n\r\n // Android\r\n if (this._platform.ANDROID) {\r\n this.osName = 'os-android';\r\n }\r\n }\r\n\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;MAMa,mBAAmB,CAAA;AAK5B,IAAA,WAAA,GAAA;QAHA,IAAA,CAAA,MAAM,GAAG,YAAY;AAEb,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;;AAGhC,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;YAC3B;QACJ;;QAGA,IAAI,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACrC,YAAA,IAAI,CAAC,MAAM,GAAG,YAAY;QAC9B;;QAGA,IAAI,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACrC,YAAA,IAAI,CAAC,MAAM,GAAG,QAAQ;QAC1B;;QAGA,IAAI,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACrC,YAAA,IAAI,CAAC,MAAM,GAAG,SAAS;QAC3B;;QAGA,IAAI,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AACvC,YAAA,IAAI,CAAC,MAAM,GAAG,UAAU;QAC5B;;AAGA,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE;AACpB,YAAA,IAAI,CAAC,MAAM,GAAG,QAAQ;QAC1B;;AAGA,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;AACxB,YAAA,IAAI,CAAC,MAAM,GAAG,YAAY;QAC9B;IACJ;8GAxCS,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFhB,MAAM,EAAA,CAAA,CAAA;;2FAET,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE;AACf,iBAAA;;;ACLD;;AAEG;;;;"}
1
+ {"version":3,"file":"cmat-services-platform.mjs","sources":["../../../projects/cmat/services/platform/platform.service.ts","../../../projects/cmat/services/platform/cmat-services-platform.ts"],"sourcesContent":["import { Platform } from '@angular/cdk/platform';\r\nimport { Injectable, inject } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CmatPlatformService {\r\n\r\n osName = 'os-unknown';\r\n\r\n private _platform = inject(Platform);\r\n constructor() {\r\n if (!this._platform.isBrowser) {\r\n return;\r\n }\r\n if (navigator.userAgent.includes('Win')) {\r\n this.osName = 'os-windows';\r\n }\r\n if (navigator.userAgent.includes('Mac')) {\r\n this.osName = 'os-mac';\r\n }\r\n if (navigator.userAgent.includes('X11')) {\r\n this.osName = 'os-unix';\r\n }\r\n if (navigator.userAgent.includes('Linux')) {\r\n this.osName = 'os-linux';\r\n }\r\n if (this._platform.IOS) {\r\n this.osName = 'os-ios';\r\n }\r\n if (this._platform.ANDROID) {\r\n this.osName = 'os-android';\r\n }\r\n }\r\n\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;MAMa,mBAAmB,CAAA;AAK5B,IAAA,WAAA,GAAA;QAHA,IAAA,CAAA,MAAM,GAAG,YAAY;AAEb,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AAEhC,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;YAC3B;QACJ;QACA,IAAI,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACrC,YAAA,IAAI,CAAC,MAAM,GAAG,YAAY;QAC9B;QACA,IAAI,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACrC,YAAA,IAAI,CAAC,MAAM,GAAG,QAAQ;QAC1B;QACA,IAAI,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACrC,YAAA,IAAI,CAAC,MAAM,GAAG,SAAS;QAC3B;QACA,IAAI,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AACvC,YAAA,IAAI,CAAC,MAAM,GAAG,UAAU;QAC5B;AACA,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE;AACpB,YAAA,IAAI,CAAC,MAAM,GAAG,QAAQ;QAC1B;AACA,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;AACxB,YAAA,IAAI,CAAC,MAAM,GAAG,YAAY;QAC9B;IACJ;8GA3BS,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFhB,MAAM,EAAA,CAAA,CAAA;;2FAET,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE;AACf,iBAAA;;;ACLD;;AAEG;;;;"}
@@ -1,35 +1,30 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, DOCUMENT, Injectable } from '@angular/core';
2
+ import { inject, DOCUMENT, DestroyRef, Injectable } from '@angular/core';
3
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
3
4
  import { Router, NavigationEnd } from '@angular/router';
4
- import { Subject } from 'rxjs';
5
- import { takeUntil, filter, take } from 'rxjs/operators';
5
+ import { filter, take } from 'rxjs/operators';
6
6
 
7
7
  class CmatSplashScreenService {
8
8
  constructor() {
9
9
  this._document = inject(DOCUMENT);
10
10
  this._router = inject(Router);
11
- this._unsubscribeAll = new Subject();
12
- // Hide it on the first NavigationEnd event
11
+ this._destroyRef = inject(DestroyRef);
13
12
  this._router.events
14
- .pipe(takeUntil(this._unsubscribeAll), filter(event => event instanceof NavigationEnd), take(1))
13
+ .pipe(takeUntilDestroyed(this._destroyRef), filter(event => event instanceof NavigationEnd), take(1))
15
14
  .subscribe(() => {
16
15
  this.hide();
17
16
  });
18
17
  }
19
- ngOnDestroy() {
20
- this._unsubscribeAll.next(void 0);
21
- this._unsubscribeAll.complete();
22
- }
23
18
  show() {
24
19
  this._document.body.classList.remove('cmat-splash-screen-hidden');
25
20
  }
26
21
  hide() {
27
22
  this._document.body.classList.add('cmat-splash-screen-hidden');
28
23
  }
29
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.7", ngImport: i0, type: CmatSplashScreenService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
30
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.7", ngImport: i0, type: CmatSplashScreenService, providedIn: 'root' }); }
24
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CmatSplashScreenService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
25
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CmatSplashScreenService, providedIn: 'root' }); }
31
26
  }
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.7", ngImport: i0, type: CmatSplashScreenService, decorators: [{
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CmatSplashScreenService, decorators: [{
33
28
  type: Injectable,
34
29
  args: [{
35
30
  providedIn: 'root'
@@ -1 +1 @@
1
- {"version":3,"file":"cmat-services-splash-screen.mjs","sources":["../../../projects/cmat/services/splash-screen/splash-screen.service.ts","../../../projects/cmat/services/splash-screen/cmat-services-splash-screen.ts"],"sourcesContent":["import { Injectable, OnDestroy, DOCUMENT, inject } from '@angular/core';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { filter, take, takeUntil } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CmatSplashScreenService implements OnDestroy {\r\n private _document = inject(DOCUMENT);\r\n private _router = inject(Router);\r\n\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n \r\n\r\n constructor() {\r\n // Hide it on the first NavigationEnd event\r\n this._router.events\r\n .pipe(\r\n takeUntil(this._unsubscribeAll),\r\n filter(event => event instanceof NavigationEnd),\r\n take(1)\r\n )\r\n .subscribe(() => {\r\n this.hide();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n\r\n show(): void {\r\n this._document.body.classList.remove('cmat-splash-screen-hidden');\r\n }\r\n\r\n hide(): void {\r\n this._document.body.classList.add('cmat-splash-screen-hidden');\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;MAQa,uBAAuB,CAAA;AAQhC,IAAA,WAAA,GAAA;AAPQ,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC5B,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;AAExB,QAAA,IAAA,CAAA,eAAe,GAAkB,IAAI,OAAO,EAAQ;;QAMxD,IAAI,CAAC,OAAO,CAAC;aACR,IAAI,CACD,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,EAC/B,MAAM,CAAC,KAAK,IAAI,KAAK,YAAY,aAAa,CAAC,EAC/C,IAAI,CAAC,CAAC,CAAC;aAEV,SAAS,CAAC,MAAK;YACZ,IAAI,CAAC,IAAI,EAAE;AACf,QAAA,CAAC,CAAC;IACV;IAEA,WAAW,GAAA;QACP,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACjC,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;IACnC;IAEA,IAAI,GAAA;QACA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,2BAA2B,CAAC;IACrE;IAEA,IAAI,GAAA;QACA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,2BAA2B,CAAC;IAClE;8GAhCS,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cAFpB,MAAM,EAAA,CAAA,CAAA;;2FAET,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE;AACf,iBAAA;;;ACPD;;AAEG;;;;"}
1
+ {"version":3,"file":"cmat-services-splash-screen.mjs","sources":["../../../projects/cmat/services/splash-screen/splash-screen.service.ts","../../../projects/cmat/services/splash-screen/cmat-services-splash-screen.ts"],"sourcesContent":["import { DestroyRef, Injectable, DOCUMENT, inject } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { filter, take } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CmatSplashScreenService {\r\n private _document = inject(DOCUMENT);\r\n private _router = inject(Router);\r\n private readonly _destroyRef = inject(DestroyRef);\r\n\r\n constructor() {\r\n this._router.events\r\n .pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n filter(event => event instanceof NavigationEnd),\r\n take(1)\r\n )\r\n .subscribe(() => {\r\n this.hide();\r\n });\r\n }\r\n\r\n show(): void {\r\n this._document.body.classList.remove('cmat-splash-screen-hidden');\r\n }\r\n\r\n hide(): void {\r\n this._document.body.classList.add('cmat-splash-screen-hidden');\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;MAQa,uBAAuB,CAAA;AAKhC,IAAA,WAAA,GAAA;AAJQ,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC5B,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;AACf,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;QAG7C,IAAI,CAAC,OAAO,CAAC;aACR,IAAI,CACD,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,EACpC,MAAM,CAAC,KAAK,IAAI,KAAK,YAAY,aAAa,CAAC,EAC/C,IAAI,CAAC,CAAC,CAAC;aAEV,SAAS,CAAC,MAAK;YACZ,IAAI,CAAC,IAAI,EAAE;AACf,QAAA,CAAC,CAAC;IACV;IAEA,IAAI,GAAA;QACA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,2BAA2B,CAAC;IACrE;IAEA,IAAI,GAAA;QACA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,2BAA2B,CAAC;IAClE;8GAvBS,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cAFpB,MAAM,EAAA,CAAA,CAAA;;2FAET,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE;AACf,iBAAA;;;ACPD;;AAEG;;;;"}
@@ -1,5 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, Injectable } from '@angular/core';
2
+ import { inject, DestroyRef, Injectable } from '@angular/core';
3
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
3
4
  import { Title } from '@angular/platform-browser';
4
5
  import { Router, NavigationEnd } from '@angular/router';
5
6
  import { CmatUtilsService } from 'cmat/services/utils';
@@ -7,9 +8,10 @@ import { filter, map, mergeMap } from 'rxjs/operators';
7
8
 
8
9
  class CmatTitleService {
9
10
  constructor() {
10
- this._titleService = inject(Title);
11
+ this._destroyRef = inject(DestroyRef);
11
12
  this._router = inject(Router);
12
- this.sub = this._router.events.pipe(filter((event) => event instanceof NavigationEnd), map(() => this._router.routerState.root), map((route) => {
13
+ this._titleService = inject(Title);
14
+ this._router.events.pipe(filter((event) => event instanceof NavigationEnd), takeUntilDestroyed(this._destroyRef), map(() => this._router.routerState.root), map((route) => {
13
15
  while (route.firstChild) {
14
16
  route = route.firstChild;
15
17
  }
@@ -23,21 +25,15 @@ class CmatTitleService {
23
25
  title += ' | ' + CmatUtilsService.toTitleCase(fragment);
24
26
  }
25
27
  }
26
- if (title && this.appName) {
27
- title += ' - ' + this.appName;
28
- }
29
- else if (this.appName) {
30
- title = this.appName;
31
- }
32
28
  if (title) {
33
29
  this._titleService.setTitle(title);
34
30
  }
35
31
  });
36
32
  }
37
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.7", ngImport: i0, type: CmatTitleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
38
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.7", ngImport: i0, type: CmatTitleService, providedIn: 'root' }); }
33
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CmatTitleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
34
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CmatTitleService, providedIn: 'root' }); }
39
35
  }
40
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.7", ngImport: i0, type: CmatTitleService, decorators: [{
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CmatTitleService, decorators: [{
41
37
  type: Injectable,
42
38
  args: [{
43
39
  providedIn: 'root'
@@ -1 +1 @@
1
- {"version":3,"file":"cmat-services-title.mjs","sources":["../../../projects/cmat/services/title/title.service.ts","../../../projects/cmat/services/title/cmat-services-title.ts"],"sourcesContent":["import { Injectable, inject } from '@angular/core';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { CmatUtilsService } from 'cmat/services/utils';\r\nimport { Subscription } from 'rxjs';\r\nimport { filter, map, mergeMap } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CmatTitleService {\r\n sub: Subscription;\r\n appName: string;\r\n\r\n\r\n private _titleService = inject(Title);\r\n private _router = inject(Router);\r\n\r\n constructor() {\r\n this.sub = this._router.events.pipe(\r\n filter((event: any) => event instanceof NavigationEnd),\r\n map(() => this._router.routerState.root),\r\n map((route) => {\r\n\r\n while (route.firstChild) {\r\n route = route.firstChild;\r\n }\r\n\r\n return route;\r\n }),\r\n\r\n mergeMap(route => route.data))\r\n .subscribe((data: Record<string, any>) => {\r\n let title = data['title'];\r\n\r\n if (title) {\r\n const fragment = this._router.url.split('#')[1];\r\n\r\n if (fragment) {\r\n title += ' | ' + CmatUtilsService.toTitleCase(fragment);\r\n }\r\n }\r\n\r\n if (title && this.appName) {\r\n title += ' - ' + this.appName;\r\n } else if (this.appName) {\r\n title = this.appName;\r\n }\r\n\r\n if (title) {\r\n this._titleService.setTitle(title);\r\n }\r\n });\r\n }\r\n\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;MAUa,gBAAgB,CAAA;AAQzB,IAAA,WAAA,GAAA;AAHQ,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC;AAC7B,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;AAG5B,QAAA,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAC/B,MAAM,CAAC,CAAC,KAAU,KAAK,KAAK,YAAY,aAAa,CAAC,EACtD,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,EACxC,GAAG,CAAC,CAAC,KAAK,KAAI;AAEV,YAAA,OAAO,KAAK,CAAC,UAAU,EAAE;AACrB,gBAAA,KAAK,GAAG,KAAK,CAAC,UAAU;YAC5B;AAEA,YAAA,OAAO,KAAK;AAChB,QAAA,CAAC,CAAC,EAEF,QAAQ,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC;AAC5B,aAAA,SAAS,CAAC,CAAC,IAAyB,KAAI;AACrC,YAAA,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;YAEzB,IAAI,KAAK,EAAE;AACP,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAE/C,IAAI,QAAQ,EAAE;oBACV,KAAK,IAAI,KAAK,GAAG,gBAAgB,CAAC,WAAW,CAAC,QAAQ,CAAC;gBAC3D;YACJ;AAEA,YAAA,IAAI,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE;AACvB,gBAAA,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO;YACjC;AAAO,iBAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACrB,gBAAA,KAAK,GAAG,IAAI,CAAC,OAAO;YACxB;YAEA,IAAI,KAAK,EAAE;AACP,gBAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC;YACtC;AACJ,QAAA,CAAC,CAAC;IACV;8GA3CS,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cAFb,MAAM,EAAA,CAAA,CAAA;;2FAET,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE;AACf,iBAAA;;;ACTD;;AAEG;;;;"}
1
+ {"version":3,"file":"cmat-services-title.mjs","sources":["../../../projects/cmat/services/title/title.service.ts","../../../projects/cmat/services/title/cmat-services-title.ts"],"sourcesContent":["import { DestroyRef, Injectable, inject } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { CmatUtilsService } from 'cmat/services/utils';\r\nimport { filter, map, mergeMap } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CmatTitleService {\r\n private readonly _destroyRef = inject(DestroyRef);\r\n private readonly _router = inject(Router);\r\n private readonly _titleService = inject(Title);\r\n\r\n constructor() {\r\n this._router.events.pipe(\r\n filter((event): event is NavigationEnd => event instanceof NavigationEnd),\r\n takeUntilDestroyed(this._destroyRef),\r\n map(() => this._router.routerState.root),\r\n map((route) => {\r\n while (route.firstChild) {\r\n route = route.firstChild;\r\n }\r\n\r\n return route;\r\n }),\r\n mergeMap(route => route.data))\r\n .subscribe((data: Record<string, any>) => {\r\n let title = data['title'];\r\n\r\n if (title) {\r\n const fragment = this._router.url.split('#')[1];\r\n\r\n if (fragment) {\r\n title += ' | ' + CmatUtilsService.toTitleCase(fragment);\r\n }\r\n }\r\n\r\n if (title) {\r\n this._titleService.setTitle(title);\r\n }\r\n });\r\n }\r\n\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;MAUa,gBAAgB,CAAA;AAKzB,IAAA,WAAA,GAAA;AAJiB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAChC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;AACxB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC;QAG1C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CACpB,MAAM,CAAC,CAAC,KAAK,KAA6B,KAAK,YAAY,aAAa,CAAC,EACzE,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,EACpC,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,EACxC,GAAG,CAAC,CAAC,KAAK,KAAI;AACV,YAAA,OAAO,KAAK,CAAC,UAAU,EAAE;AACrB,gBAAA,KAAK,GAAG,KAAK,CAAC,UAAU;YAC5B;AAEA,YAAA,OAAO,KAAK;AAChB,QAAA,CAAC,CAAC,EACF,QAAQ,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC;AAC5B,aAAA,SAAS,CAAC,CAAC,IAAyB,KAAI;AACrC,YAAA,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;YAEzB,IAAI,KAAK,EAAE;AACP,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAE/C,IAAI,QAAQ,EAAE;oBACV,KAAK,IAAI,KAAK,GAAG,gBAAgB,CAAC,WAAW,CAAC,QAAQ,CAAC;gBAC3D;YACJ;YAEA,IAAI,KAAK,EAAE;AACP,gBAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC;YACtC;AACJ,QAAA,CAAC,CAAC;IACV;8GAjCS,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cAFb,MAAM,EAAA,CAAA,CAAA;;2FAET,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE;AACf,iBAAA;;;ACTD;;AAEG;;;;"}
@@ -51,10 +51,10 @@ class CmatTranslationService {
51
51
  getTranslationAsync(key, interpolateParams) {
52
52
  return this._translate.get(key, interpolateParams);
53
53
  }
54
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.7", ngImport: i0, type: CmatTranslationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
55
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.7", ngImport: i0, type: CmatTranslationService, providedIn: 'root' }); }
54
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CmatTranslationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
55
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CmatTranslationService, providedIn: 'root' }); }
56
56
  }
57
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.7", ngImport: i0, type: CmatTranslationService, decorators: [{
57
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CmatTranslationService, decorators: [{
58
58
  type: Injectable,
59
59
  args: [{
60
60
  providedIn: 'root'