mis-crystal-design-system 18.1.0-signal-test-1 → 18.1.0

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 (145) hide show
  1. package/async-search-dropdown/async-dropdown.component.d.ts +3 -3
  2. package/button/button.component.d.ts +0 -2
  3. package/button/button.directive.scss +71 -0
  4. package/datepicker_v2/tz-dp-container/tz-dp-container.component.d.ts +4 -0
  5. package/daterangepicker_v2/tz-drp-container/tz-drp-container.component.d.ts +9 -5
  6. package/drawer/drawer.scss +20 -0
  7. package/dropdown/dropdown.component.d.ts +1 -1
  8. package/dynamic-theme/branding.types.d.ts +84 -0
  9. package/dynamic-theme/dynamic-theme.module.d.ts +9 -0
  10. package/dynamic-theme/dynamic-theme.service.d.ts +89 -0
  11. package/dynamic-theme/index.d.ts +1 -0
  12. package/dynamic-theme/public_api.d.ts +3 -0
  13. package/esm2022/action-list/action-list.component.mjs +2 -2
  14. package/esm2022/async-search-dropdown/async-dropdown.component.mjs +10 -10
  15. package/esm2022/button/button.component.mjs +8 -16
  16. package/esm2022/checkbox/checkbox.component.mjs +4 -4
  17. package/esm2022/chip/chip.component.mjs +4 -4
  18. package/esm2022/datepicker_v2/tz-datepicker.directive.mjs +17 -10
  19. package/esm2022/datepicker_v2/tz-dp-container/tz-dp-container.component.mjs +89 -34
  20. package/esm2022/daterangepicker_v2/tz-daterangepicker.directive.mjs +6 -3
  21. package/esm2022/daterangepicker_v2/tz-drp-container/tz-drp-container.component.mjs +317 -142
  22. package/esm2022/drawer/drawer-body/drawer-body.component.mjs +4 -4
  23. package/esm2022/dropdown/dropdown.component.mjs +3 -3
  24. package/esm2022/dynamic-form/dynamic-form.component.mjs +2 -2
  25. package/esm2022/dynamic-theme/branding.types.mjs +93 -0
  26. package/esm2022/dynamic-theme/dynamic-theme.module.mjs +25 -0
  27. package/esm2022/dynamic-theme/dynamic-theme.service.mjs +193 -0
  28. package/esm2022/dynamic-theme/index.mjs +2 -0
  29. package/esm2022/dynamic-theme/mis-crystal-design-system-dynamic-theme.mjs +5 -0
  30. package/esm2022/dynamic-theme/public_api.mjs +4 -0
  31. package/esm2022/fab/fab.component.mjs +6 -6
  32. package/esm2022/filter/filter-panel/filter-panel.component.mjs +30 -29
  33. package/esm2022/input/directives/input/input.directive.mjs +28 -10
  34. package/esm2022/input/mis-input.component.mjs +19 -13
  35. package/esm2022/input-stepper/input-stepper/input-stepper.component.mjs +5 -5
  36. package/esm2022/loader/loader.component.mjs +13 -7
  37. package/esm2022/mobile-filter/mobile-filter.component.mjs +2 -2
  38. package/esm2022/modal/module-wrapper/module-wrapper.component.mjs +4 -4
  39. package/esm2022/multi-select-dropdown/multi-select-dropdown.component.mjs +12 -7
  40. package/esm2022/nested-multi-select-dropdown/nested-multi-select-dropdown.component.mjs +2 -2
  41. package/esm2022/phone-input/phone-input.component.mjs +4 -4
  42. package/esm2022/public-api.mjs +1 -1
  43. package/esm2022/radio-button/radio-button.component.mjs +4 -4
  44. package/esm2022/ske-loader/ske-loader.component.mjs +4 -4
  45. package/esm2022/slider/slider.component.mjs +4 -4
  46. package/esm2022/snackbar/snackbar/snackbar.component.mjs +4 -4
  47. package/esm2022/specificdatepicker/tz-sdp-container/tz-sdp-container.component.mjs +25 -21
  48. package/esm2022/star-rating/star-rating.component.mjs +2 -2
  49. package/esm2022/switch/switch.component.mjs +4 -6
  50. package/esm2022/table/actions-cell/actions-cell.component.mjs +2 -2
  51. package/esm2022/table/filter/filter.component.mjs +2 -2
  52. package/esm2022/table/sub-table/sub-table.component.mjs +19 -6
  53. package/esm2022/table/table.component.mjs +53 -29
  54. package/esm2022/timepicker/timepicker.component.mjs +2 -2
  55. package/esm2022/toast/toast.component.mjs +6 -6
  56. package/esm2022/tooltip/tooltip-container/tooltip.component.mjs +4 -4
  57. package/esm2022/virtual-scroll/virtual-scroll.component.mjs +4 -4
  58. package/fesm2022/mis-crystal-design-system-action-list.mjs +2 -2
  59. package/fesm2022/mis-crystal-design-system-action-list.mjs.map +1 -1
  60. package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs +9 -9
  61. package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs.map +1 -1
  62. package/fesm2022/mis-crystal-design-system-button.mjs +7 -15
  63. package/fesm2022/mis-crystal-design-system-button.mjs.map +1 -1
  64. package/fesm2022/mis-crystal-design-system-checkbox.mjs +3 -3
  65. package/fesm2022/mis-crystal-design-system-checkbox.mjs.map +1 -1
  66. package/fesm2022/mis-crystal-design-system-chip.mjs +3 -3
  67. package/fesm2022/mis-crystal-design-system-chip.mjs.map +1 -1
  68. package/fesm2022/mis-crystal-design-system-datepicker_v2.mjs +103 -41
  69. package/fesm2022/mis-crystal-design-system-datepicker_v2.mjs.map +1 -1
  70. package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs +321 -143
  71. package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs.map +1 -1
  72. package/fesm2022/mis-crystal-design-system-drawer.mjs +3 -3
  73. package/fesm2022/mis-crystal-design-system-drawer.mjs.map +1 -1
  74. package/fesm2022/mis-crystal-design-system-dropdown.mjs +2 -2
  75. package/fesm2022/mis-crystal-design-system-dropdown.mjs.map +1 -1
  76. package/fesm2022/mis-crystal-design-system-dynamic-form.mjs +2 -2
  77. package/fesm2022/mis-crystal-design-system-dynamic-form.mjs.map +1 -1
  78. package/fesm2022/mis-crystal-design-system-dynamic-theme.mjs +313 -0
  79. package/fesm2022/mis-crystal-design-system-dynamic-theme.mjs.map +1 -0
  80. package/fesm2022/mis-crystal-design-system-fab.mjs +5 -5
  81. package/fesm2022/mis-crystal-design-system-fab.mjs.map +1 -1
  82. package/fesm2022/mis-crystal-design-system-filter.mjs +29 -28
  83. package/fesm2022/mis-crystal-design-system-filter.mjs.map +1 -1
  84. package/fesm2022/mis-crystal-design-system-input-stepper.mjs +4 -4
  85. package/fesm2022/mis-crystal-design-system-input-stepper.mjs.map +1 -1
  86. package/fesm2022/mis-crystal-design-system-input.mjs +45 -21
  87. package/fesm2022/mis-crystal-design-system-input.mjs.map +1 -1
  88. package/fesm2022/mis-crystal-design-system-loader.mjs +12 -6
  89. package/fesm2022/mis-crystal-design-system-loader.mjs.map +1 -1
  90. package/fesm2022/mis-crystal-design-system-mobile-filter.mjs +2 -2
  91. package/fesm2022/mis-crystal-design-system-mobile-filter.mjs.map +1 -1
  92. package/fesm2022/mis-crystal-design-system-modal.mjs +3 -3
  93. package/fesm2022/mis-crystal-design-system-modal.mjs.map +1 -1
  94. package/fesm2022/mis-crystal-design-system-multi-select-dropdown.mjs +11 -6
  95. package/fesm2022/mis-crystal-design-system-multi-select-dropdown.mjs.map +1 -1
  96. package/fesm2022/mis-crystal-design-system-nested-multi-select-dropdown.mjs +2 -2
  97. package/fesm2022/mis-crystal-design-system-nested-multi-select-dropdown.mjs.map +1 -1
  98. package/fesm2022/mis-crystal-design-system-phone-input.mjs +3 -3
  99. package/fesm2022/mis-crystal-design-system-phone-input.mjs.map +1 -1
  100. package/fesm2022/mis-crystal-design-system-radio-button.mjs +3 -3
  101. package/fesm2022/mis-crystal-design-system-radio-button.mjs.map +1 -1
  102. package/fesm2022/mis-crystal-design-system-ske-loader.mjs +3 -3
  103. package/fesm2022/mis-crystal-design-system-ske-loader.mjs.map +1 -1
  104. package/fesm2022/mis-crystal-design-system-slider.mjs +3 -3
  105. package/fesm2022/mis-crystal-design-system-slider.mjs.map +1 -1
  106. package/fesm2022/mis-crystal-design-system-snackbar.mjs +3 -3
  107. package/fesm2022/mis-crystal-design-system-snackbar.mjs.map +1 -1
  108. package/fesm2022/mis-crystal-design-system-specificdatepicker.mjs +24 -20
  109. package/fesm2022/mis-crystal-design-system-specificdatepicker.mjs.map +1 -1
  110. package/fesm2022/mis-crystal-design-system-star-rating.mjs +2 -2
  111. package/fesm2022/mis-crystal-design-system-star-rating.mjs.map +1 -1
  112. package/fesm2022/mis-crystal-design-system-switch.mjs +3 -5
  113. package/fesm2022/mis-crystal-design-system-switch.mjs.map +1 -1
  114. package/fesm2022/mis-crystal-design-system-table.mjs +74 -38
  115. package/fesm2022/mis-crystal-design-system-table.mjs.map +1 -1
  116. package/fesm2022/mis-crystal-design-system-timepicker.mjs +2 -2
  117. package/fesm2022/mis-crystal-design-system-timepicker.mjs.map +1 -1
  118. package/fesm2022/mis-crystal-design-system-toast.mjs +5 -5
  119. package/fesm2022/mis-crystal-design-system-toast.mjs.map +1 -1
  120. package/fesm2022/mis-crystal-design-system-tooltip.mjs +3 -3
  121. package/fesm2022/mis-crystal-design-system-tooltip.mjs.map +1 -1
  122. package/fesm2022/mis-crystal-design-system-virtual-scroll.mjs +3 -3
  123. package/fesm2022/mis-crystal-design-system-virtual-scroll.mjs.map +1 -1
  124. package/fesm2022/mis-crystal-design-system.mjs.map +1 -1
  125. package/filter/filter-panel/filter-panel.component.d.ts +1 -1
  126. package/input/directives/input/input.directive.d.ts +3 -4
  127. package/input/mis-input.component.d.ts +3 -6
  128. package/input/mis-input.component.scss +188 -0
  129. package/loader/loader.component.d.ts +7 -1
  130. package/modal/modal.scss +9 -0
  131. package/package.json +13 -7
  132. package/specificdatepicker/tz-sdp-container/tz-sdp-container.component.d.ts +2 -2
  133. package/styles/fonts/icomoon.eot +0 -0
  134. package/styles/fonts/icomoon.svg +315 -0
  135. package/styles/fonts/icomoon.ttf +0 -0
  136. package/styles/fonts/icomoon.woff +0 -0
  137. package/styles/mis-borders-backgrounds.scss +764 -0
  138. package/styles/mis-color-constants.scss +353 -0
  139. package/styles/mis-flex.scss +321 -0
  140. package/styles/mis-fonts.scss +124 -0
  141. package/styles/mis-icons.scss +1054 -0
  142. package/styles/mis-mixins.scss +46 -0
  143. package/styles/mis-old-icon-styles.scss +498 -0
  144. package/styles/mis-spacing-sizing.scss +2590 -0
  145. package/styles/mis-typography.scss +462 -0
@@ -0,0 +1,313 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Injectable, NgModule } from '@angular/core';
3
+ import { BehaviorSubject } from 'rxjs';
4
+
5
+ var BrandingTypes;
6
+ (function (BrandingTypes) {
7
+ BrandingTypes.defaultTheme = {
8
+ // Brand
9
+ brandPrimary: "#0937B2",
10
+ brandPrimaryLight: "#3C68D0",
11
+ brandPrimaryDark: "#062A99",
12
+ brandPrimaryDarker: "#041F80",
13
+ brandPrimaryLighter: "#638FE7",
14
+ brandPrimaryLightest: "#CBDDFB",
15
+ brandPrimaryHover: "#F0F3FA",
16
+ brandPrimaryActive: "#DAE1F3",
17
+ brandSecondary: "#ED711C",
18
+ brandSecondaryLight: "#F09E65",
19
+ brandSecondaryDark: "#B23600",
20
+ brandSecondaryLighter: "#FFC6F2",
21
+ brandAccent: "#10ADAE",
22
+ brandAccentLight: "#16CBBC",
23
+ brandAccentDark: "#035F6B",
24
+ brandAccentLighter: "#ACDADA",
25
+ // Semantic
26
+ brandSuccess: "#38AF49",
27
+ brandSuccessLight: "#4CAF50",
28
+ brandSuccessDark: "#216531",
29
+ brandSuccessLighter: "#E4F5E9",
30
+ brandSuccessLightest: "#F1FFF3",
31
+ brandError: "#B00020",
32
+ brandErrorLight: "#F04E4E",
33
+ brandErrorDark: "#A60060",
34
+ brandErrorLighter: "#FAE1EA",
35
+ brandErrorLightest: "#FDF2F2",
36
+ brandWarning: "#FF9D00",
37
+ brandWarningLight: "#D4900C",
38
+ brandWarningDark: "#624000",
39
+ brandWarningLighter: "#F4E7C3",
40
+ brandWarningLightest: "#FAEFED",
41
+ brandInfo: "#0091FF",
42
+ brandInfoLight: "#35A1FF",
43
+ brandInfoDark: "#0087B2",
44
+ brandInfoLighter: "#CFECF9",
45
+ // Text
46
+ textPrimary: "#181F33",
47
+ textSecondary: "#6A737D",
48
+ textTertiary: "#929DAB",
49
+ textDisabled: "#C8CDD3",
50
+ textPrimary87: "rgba(24, 31, 51, 0.87)",
51
+ textPrimary60: "rgba(24, 31, 51, 0.60)",
52
+ textPrimary38: "rgba(24, 31, 51, 0.38)",
53
+ textPrimary12: "rgba(24, 31, 51, 0.12)",
54
+ // Background
55
+ bgPrimary: "#FFFFFF",
56
+ bgSecondary: "#FAFAFA",
57
+ bgTertiary: "#F5F5F5",
58
+ bgOverlay: "rgba(0, 0, 0, 0.32)",
59
+ bgOverlayLight: "rgba(0, 0, 0, 0.12)",
60
+ bgOverlayLighter: "rgba(0, 0, 0, 0.08)",
61
+ bgOverlayLightest: "rgba(0, 0, 0, 0.04)",
62
+ // Border
63
+ borderPrimary: "#E0E0E0",
64
+ borderSecondary: "#D6DCE2",
65
+ borderTertiary: "#C8CDD3",
66
+ borderLight: "#F1F4F8",
67
+ borderPrimary12: "rgba(0, 0, 0, 0.12)",
68
+ borderPrimary08: "rgba(0, 0, 0, 0.08)",
69
+ borderPrimary06: "rgba(0, 0, 0, 0.06)",
70
+ // Shadows
71
+ shadowPrimary: "rgba(0, 0, 0, 0.12)",
72
+ shadowSecondary: "rgba(0, 0, 0, 0.08)",
73
+ shadowTertiary: "rgba(0, 0, 0, 0.04)",
74
+ shadowLight: "rgba(0, 0, 0, 0.06)",
75
+ // Status
76
+ statusAvailable: "#929DAB",
77
+ statusUnavailable: "#CCD3DA",
78
+ statusHotseat: "#857BFF",
79
+ statusMultiteam: "#10ADAE",
80
+ statusSelected: "#10ADAE",
81
+ statusUpcoming: "#D4900C",
82
+ statusRoom: "#38AF49",
83
+ statusRoomBooked: "#B23600",
84
+ statusRoomUnavailable: "#181F33",
85
+ // Team
86
+ teamColor1: "#F8C52E",
87
+ teamColor2: "#FA8E20",
88
+ teamColor3: "#987CDD",
89
+ teamColor4: "#16CBBC",
90
+ teamColor5: "#E65010",
91
+ teamColor6: "#A60060",
92
+ teamColor7: "#ED323B",
93
+ teamColor8: "#35A1FF",
94
+ teamColor9: "#80D348",
95
+ };
96
+ })(BrandingTypes || (BrandingTypes = {}));
97
+
98
+ class DynamicThemeService {
99
+ constructor() {
100
+ this.currentThemeSubject = new BehaviorSubject(BrandingTypes.defaultTheme);
101
+ this.currentTheme$ = this.currentThemeSubject.asObservable();
102
+ // Initialize with default theme on service creation
103
+ this.applyTheme(BrandingTypes.defaultTheme);
104
+ }
105
+ /**
106
+ * Apply a complete theme configuration to the root element
107
+ * @param theme - ThemeColors object containing all color values
108
+ */
109
+ applyTheme(theme) {
110
+ const root = document.documentElement;
111
+ Object.entries(theme).forEach(([camelName, value]) => {
112
+ const cssVar = `--${this.camelToKebabCase(camelName)}`;
113
+ root.style.setProperty(cssVar, String(value));
114
+ });
115
+ // Update the current theme subject
116
+ this.currentThemeSubject.next(theme);
117
+ }
118
+ /**
119
+ * Apply partial theme updates (only specified colors will be updated)
120
+ * @param partialTheme - Partial ThemeColors object with only the colors to update
121
+ */
122
+ applyPartialTheme(partialTheme) {
123
+ const root = document.documentElement;
124
+ Object.entries(partialTheme).forEach(([camelName, value]) => {
125
+ if (value !== undefined) {
126
+ const cssVar = `--${this.camelToKebabCase(camelName)}`;
127
+ root.style.setProperty(cssVar, String(value));
128
+ }
129
+ });
130
+ // Update the current theme with merged values
131
+ const currentTheme = this.currentThemeSubject.value;
132
+ const updatedTheme = { ...currentTheme, ...partialTheme };
133
+ this.currentThemeSubject.next(updatedTheme);
134
+ }
135
+ /**
136
+ * Set a single color property
137
+ * @param colorKey - The camelCase key of the color property
138
+ * @param colorValue - The color value (hex, rgb, rgba, etc.)
139
+ */
140
+ setColorProperty(colorKey, colorValue) {
141
+ const root = document.documentElement;
142
+ const cssVar = `--${this.camelToKebabCase(colorKey)}`;
143
+ root.style.setProperty(cssVar, colorValue);
144
+ // Update the current theme
145
+ const currentTheme = this.currentThemeSubject.value;
146
+ const updatedTheme = { ...currentTheme, [colorKey]: colorValue };
147
+ this.currentThemeSubject.next(updatedTheme);
148
+ }
149
+ /**
150
+ * Get the current theme colors
151
+ * @returns Current ThemeColors object
152
+ */
153
+ getCurrentTheme() {
154
+ return this.currentThemeSubject.value;
155
+ }
156
+ /**
157
+ * Get a specific color value from the current theme
158
+ * @param colorKey - The camelCase key of the color property
159
+ * @returns The color value as string
160
+ */
161
+ getColorProperty(colorKey) {
162
+ return this.currentThemeSubject.value[colorKey];
163
+ }
164
+ /**
165
+ * Reset theme to default values
166
+ */
167
+ resetToDefault() {
168
+ this.applyTheme(BrandingTypes.defaultTheme);
169
+ }
170
+ /**
171
+ * Remove a specific CSS custom property from the root element
172
+ * @param colorKey - The camelCase key of the color property to remove
173
+ */
174
+ removeColorProperty(colorKey) {
175
+ const root = document.documentElement;
176
+ const cssVar = `--${this.camelToKebabCase(colorKey)}`;
177
+ root.style.removeProperty(cssVar);
178
+ }
179
+ /**
180
+ * Get all CSS custom properties currently set on the root element
181
+ * @returns Object with CSS variable names as keys and their values
182
+ */
183
+ getAllCSSVariables() {
184
+ const root = document.documentElement;
185
+ const computedStyle = getComputedStyle(root);
186
+ const cssVars = {};
187
+ // Get all CSS custom properties that start with our prefix
188
+ for (let i = 0; i < computedStyle.length; i++) {
189
+ const property = computedStyle[i];
190
+ if (property.startsWith('--brand-') ||
191
+ property.startsWith('--text-') ||
192
+ property.startsWith('--bg-') ||
193
+ property.startsWith('--border-') ||
194
+ property.startsWith('--shadow-') ||
195
+ property.startsWith('--status-') ||
196
+ property.startsWith('--team-color-')) {
197
+ cssVars[property] = computedStyle.getPropertyValue(property).trim();
198
+ }
199
+ }
200
+ return cssVars;
201
+ }
202
+ /**
203
+ * Apply theme with validation
204
+ * @param theme - ThemeColors object to validate and apply
205
+ * @returns boolean indicating if the theme was successfully applied
206
+ */
207
+ applyThemeWithValidation(theme) {
208
+ try {
209
+ // Basic validation - check if all required properties exist
210
+ const requiredKeys = Object.keys(BrandingTypes.defaultTheme);
211
+ const themeKeys = Object.keys(theme);
212
+ const missingKeys = requiredKeys.filter(key => !themeKeys.includes(key));
213
+ if (missingKeys.length > 0) {
214
+ console.warn('DynamicThemeService: Missing theme properties:', missingKeys);
215
+ // Apply with default values for missing keys
216
+ const completeTheme = { ...BrandingTypes.defaultTheme, ...theme };
217
+ this.applyTheme(completeTheme);
218
+ return false;
219
+ }
220
+ this.applyTheme(theme);
221
+ return true;
222
+ }
223
+ catch (error) {
224
+ console.error('DynamicThemeService: Error applying theme:', error);
225
+ return false;
226
+ }
227
+ }
228
+ /**
229
+ * Convert camelCase to kebab-case for CSS custom properties
230
+ * @param camelCase - The camelCase string to convert
231
+ * @returns kebab-case string
232
+ */
233
+ camelToKebabCase(camelCase) {
234
+ return camelCase.replace(/([A-Z])/g, '-$1').toLowerCase();
235
+ }
236
+ /**
237
+ * Convert kebab-case to camelCase
238
+ * @param kebabCase - The kebab-case string to convert
239
+ * @returns camelCase string
240
+ */
241
+ kebabToCamelCase(kebabCase) {
242
+ return kebabCase.replace(/-([a-z])/g, (match, letter) => letter.toUpperCase());
243
+ }
244
+ /**
245
+ * Create a theme preset from current applied theme
246
+ * @param presetName - Name for the theme preset
247
+ * @returns Theme preset object
248
+ */
249
+ createThemePreset(presetName) {
250
+ return {
251
+ name: presetName,
252
+ theme: { ...this.getCurrentTheme() }
253
+ };
254
+ }
255
+ /**
256
+ * Export current theme as JSON string
257
+ * @returns JSON string representation of current theme
258
+ */
259
+ exportThemeAsJSON() {
260
+ return JSON.stringify(this.getCurrentTheme(), null, 2);
261
+ }
262
+ /**
263
+ * Import theme from JSON string
264
+ * @param jsonString - JSON string representation of theme
265
+ * @returns boolean indicating success
266
+ */
267
+ importThemeFromJSON(jsonString) {
268
+ try {
269
+ const theme = JSON.parse(jsonString);
270
+ return this.applyThemeWithValidation(theme);
271
+ }
272
+ catch (error) {
273
+ console.error('DynamicThemeService: Error importing theme from JSON:', error);
274
+ return false;
275
+ }
276
+ }
277
+ static { this.ɵfac = function DynamicThemeService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || DynamicThemeService)(); }; }
278
+ static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: DynamicThemeService, factory: DynamicThemeService.ɵfac, providedIn: 'root' }); }
279
+ }
280
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DynamicThemeService, [{
281
+ type: Injectable,
282
+ args: [{
283
+ providedIn: 'root'
284
+ }]
285
+ }], () => [], null); })();
286
+
287
+ class DynamicThemeModule {
288
+ constructor(themeService) {
289
+ this.themeService = themeService;
290
+ // Initialize the theme service when module is loaded
291
+ // This ensures the default theme is applied
292
+ }
293
+ static { this.ɵfac = function DynamicThemeModule_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || DynamicThemeModule)(i0.ɵɵinject(DynamicThemeService)); }; }
294
+ static { this.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: DynamicThemeModule }); }
295
+ static { this.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ providers: [
296
+ DynamicThemeService
297
+ ] }); }
298
+ }
299
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DynamicThemeModule, [{
300
+ type: NgModule,
301
+ args: [{
302
+ providers: [
303
+ DynamicThemeService
304
+ ]
305
+ }]
306
+ }], () => [{ type: DynamicThemeService }], null); })();
307
+
308
+ /**
309
+ * Generated bundle index. Do not edit.
310
+ */
311
+
312
+ export { BrandingTypes, DynamicThemeModule, DynamicThemeService };
313
+ //# sourceMappingURL=mis-crystal-design-system-dynamic-theme.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mis-crystal-design-system-dynamic-theme.mjs","sources":["../../../projects/mis-components/dynamic-theme/branding.types.ts","../../../projects/mis-components/dynamic-theme/dynamic-theme.service.ts","../../../projects/mis-components/dynamic-theme/dynamic-theme.module.ts","../../../projects/mis-components/dynamic-theme/mis-crystal-design-system-dynamic-theme.ts"],"sourcesContent":["export namespace BrandingTypes {\n\n export interface ThemeColors {\n // Brand\n brandPrimary: string;\n brandPrimaryLight: string;\n brandPrimaryDark: string;\n brandPrimaryDarker: string;\n brandPrimaryLighter: string;\n brandPrimaryLightest: string;\n brandPrimaryHover: string;\n brandPrimaryActive: string;\n\n brandSecondary: string;\n brandSecondaryLight: string;\n brandSecondaryDark: string;\n brandSecondaryLighter: string;\n\n brandAccent: string;\n brandAccentLight: string;\n brandAccentDark: string;\n brandAccentLighter: string;\n\n // Semantic\n brandSuccess: string;\n brandSuccessLight: string;\n brandSuccessDark: string;\n brandSuccessLighter: string;\n brandSuccessLightest: string;\n\n brandError: string;\n brandErrorLight: string;\n brandErrorDark: string;\n brandErrorLighter: string;\n brandErrorLightest: string;\n\n brandWarning: string;\n brandWarningLight: string;\n brandWarningDark: string;\n brandWarningLighter: string;\n brandWarningLightest: string;\n\n brandInfo: string;\n brandInfoLight: string;\n brandInfoDark: string;\n brandInfoLighter: string;\n\n // Text\n textPrimary: string;\n textSecondary: string;\n textTertiary: string;\n textDisabled: string;\n\n textPrimary87: string;\n textPrimary60: string;\n textPrimary38: string;\n textPrimary12: string;\n\n // Background\n bgPrimary: string;\n bgSecondary: string;\n bgTertiary: string;\n bgOverlay: string;\n bgOverlayLight: string;\n bgOverlayLighter: string;\n bgOverlayLightest: string;\n\n // Border\n borderPrimary: string;\n borderSecondary: string;\n borderTertiary: string;\n borderLight: string;\n borderPrimary12: string;\n borderPrimary08: string;\n borderPrimary06: string;\n\n // Shadows\n shadowPrimary: string;\n shadowSecondary: string;\n shadowTertiary: string;\n shadowLight: string;\n\n // Status\n statusAvailable: string;\n statusUnavailable: string;\n statusHotseat: string;\n statusMultiteam: string;\n statusSelected: string;\n statusUpcoming: string;\n statusRoom: string;\n statusRoomBooked: string;\n statusRoomUnavailable: string;\n\n // Team\n teamColor1: string;\n teamColor2: string;\n teamColor3: string;\n teamColor4: string;\n teamColor5: string;\n teamColor6: string;\n teamColor7: string;\n teamColor8: string;\n teamColor9: string;\n }\n \n export const defaultTheme: ThemeColors = {\n // Brand\n brandPrimary: \"#0937B2\",\n brandPrimaryLight: \"#3C68D0\",\n brandPrimaryDark: \"#062A99\",\n brandPrimaryDarker: \"#041F80\",\n brandPrimaryLighter: \"#638FE7\",\n brandPrimaryLightest: \"#CBDDFB\",\n brandPrimaryHover: \"#F0F3FA\",\n brandPrimaryActive: \"#DAE1F3\",\n \n brandSecondary: \"#ED711C\",\n brandSecondaryLight: \"#F09E65\",\n brandSecondaryDark: \"#B23600\",\n brandSecondaryLighter: \"#FFC6F2\",\n \n brandAccent: \"#10ADAE\",\n brandAccentLight: \"#16CBBC\",\n brandAccentDark: \"#035F6B\",\n brandAccentLighter: \"#ACDADA\",\n \n // Semantic\n brandSuccess: \"#38AF49\",\n brandSuccessLight: \"#4CAF50\",\n brandSuccessDark: \"#216531\",\n brandSuccessLighter: \"#E4F5E9\",\n brandSuccessLightest: \"#F1FFF3\",\n \n brandError: \"#B00020\",\n brandErrorLight: \"#F04E4E\",\n brandErrorDark: \"#A60060\",\n brandErrorLighter: \"#FAE1EA\",\n brandErrorLightest: \"#FDF2F2\",\n \n brandWarning: \"#FF9D00\",\n brandWarningLight: \"#D4900C\",\n brandWarningDark: \"#624000\",\n brandWarningLighter: \"#F4E7C3\",\n brandWarningLightest: \"#FAEFED\",\n \n brandInfo: \"#0091FF\",\n brandInfoLight: \"#35A1FF\",\n brandInfoDark: \"#0087B2\",\n brandInfoLighter: \"#CFECF9\",\n \n // Text\n textPrimary: \"#181F33\",\n textSecondary: \"#6A737D\",\n textTertiary: \"#929DAB\",\n textDisabled: \"#C8CDD3\",\n \n textPrimary87: \"rgba(24, 31, 51, 0.87)\",\n textPrimary60: \"rgba(24, 31, 51, 0.60)\",\n textPrimary38: \"rgba(24, 31, 51, 0.38)\",\n textPrimary12: \"rgba(24, 31, 51, 0.12)\",\n \n // Background\n bgPrimary: \"#FFFFFF\",\n bgSecondary: \"#FAFAFA\",\n bgTertiary: \"#F5F5F5\",\n bgOverlay: \"rgba(0, 0, 0, 0.32)\",\n bgOverlayLight: \"rgba(0, 0, 0, 0.12)\",\n bgOverlayLighter: \"rgba(0, 0, 0, 0.08)\",\n bgOverlayLightest: \"rgba(0, 0, 0, 0.04)\",\n \n // Border\n borderPrimary: \"#E0E0E0\",\n borderSecondary: \"#D6DCE2\",\n borderTertiary: \"#C8CDD3\",\n borderLight: \"#F1F4F8\",\n borderPrimary12: \"rgba(0, 0, 0, 0.12)\",\n borderPrimary08: \"rgba(0, 0, 0, 0.08)\",\n borderPrimary06: \"rgba(0, 0, 0, 0.06)\",\n \n // Shadows\n shadowPrimary: \"rgba(0, 0, 0, 0.12)\",\n shadowSecondary: \"rgba(0, 0, 0, 0.08)\",\n shadowTertiary: \"rgba(0, 0, 0, 0.04)\",\n shadowLight: \"rgba(0, 0, 0, 0.06)\",\n \n // Status\n statusAvailable: \"#929DAB\",\n statusUnavailable: \"#CCD3DA\",\n statusHotseat: \"#857BFF\",\n statusMultiteam: \"#10ADAE\",\n statusSelected: \"#10ADAE\",\n statusUpcoming: \"#D4900C\",\n statusRoom: \"#38AF49\",\n statusRoomBooked: \"#B23600\",\n statusRoomUnavailable: \"#181F33\",\n \n // Team\n teamColor1: \"#F8C52E\",\n teamColor2: \"#FA8E20\",\n teamColor3: \"#987CDD\",\n teamColor4: \"#16CBBC\",\n teamColor5: \"#E65010\",\n teamColor6: \"#A60060\",\n teamColor7: \"#ED323B\",\n teamColor8: \"#35A1FF\",\n teamColor9: \"#80D348\",\n };\n}","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { BrandingTypes } from './branding.types';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DynamicThemeService {\n private currentThemeSubject = new BehaviorSubject<BrandingTypes.ThemeColors>(BrandingTypes.defaultTheme);\n public currentTheme$: Observable<BrandingTypes.ThemeColors> = this.currentThemeSubject.asObservable();\n\n constructor() {\n // Initialize with default theme on service creation\n this.applyTheme(BrandingTypes.defaultTheme);\n }\n\n /**\n * Apply a complete theme configuration to the root element\n * @param theme - ThemeColors object containing all color values\n */\n applyTheme(theme: BrandingTypes.ThemeColors): void {\n const root = document.documentElement;\n \n Object.entries(theme).forEach(([camelName, value]) => {\n const cssVar = `--${this.camelToKebabCase(camelName)}`;\n root.style.setProperty(cssVar, String(value));\n });\n\n // Update the current theme subject\n this.currentThemeSubject.next(theme);\n }\n\n /**\n * Apply partial theme updates (only specified colors will be updated)\n * @param partialTheme - Partial ThemeColors object with only the colors to update\n */\n applyPartialTheme(partialTheme: Partial<BrandingTypes.ThemeColors>): void {\n const root = document.documentElement;\n \n Object.entries(partialTheme).forEach(([camelName, value]) => {\n if (value !== undefined) {\n const cssVar = `--${this.camelToKebabCase(camelName)}`;\n root.style.setProperty(cssVar, String(value));\n }\n });\n\n // Update the current theme with merged values\n const currentTheme = this.currentThemeSubject.value;\n const updatedTheme = { ...currentTheme, ...partialTheme };\n this.currentThemeSubject.next(updatedTheme);\n }\n\n /**\n * Set a single color property\n * @param colorKey - The camelCase key of the color property\n * @param colorValue - The color value (hex, rgb, rgba, etc.)\n */\n setColorProperty(colorKey: keyof BrandingTypes.ThemeColors, colorValue: string): void {\n const root = document.documentElement;\n const cssVar = `--${this.camelToKebabCase(colorKey)}`;\n root.style.setProperty(cssVar, colorValue);\n\n // Update the current theme\n const currentTheme = this.currentThemeSubject.value;\n const updatedTheme = { ...currentTheme, [colorKey]: colorValue };\n this.currentThemeSubject.next(updatedTheme);\n }\n\n /**\n * Get the current theme colors\n * @returns Current ThemeColors object\n */\n getCurrentTheme(): BrandingTypes.ThemeColors {\n return this.currentThemeSubject.value;\n }\n\n /**\n * Get a specific color value from the current theme\n * @param colorKey - The camelCase key of the color property\n * @returns The color value as string\n */\n getColorProperty(colorKey: keyof BrandingTypes.ThemeColors): string {\n return this.currentThemeSubject.value[colorKey];\n }\n\n /**\n * Reset theme to default values\n */\n resetToDefault(): void {\n this.applyTheme(BrandingTypes.defaultTheme);\n }\n\n /**\n * Remove a specific CSS custom property from the root element\n * @param colorKey - The camelCase key of the color property to remove\n */\n removeColorProperty(colorKey: keyof BrandingTypes.ThemeColors): void {\n const root = document.documentElement;\n const cssVar = `--${this.camelToKebabCase(colorKey)}`;\n root.style.removeProperty(cssVar);\n }\n\n /**\n * Get all CSS custom properties currently set on the root element\n * @returns Object with CSS variable names as keys and their values\n */\n getAllCSSVariables(): Record<string, string> {\n const root = document.documentElement;\n const computedStyle = getComputedStyle(root);\n const cssVars: Record<string, string> = {};\n\n // Get all CSS custom properties that start with our prefix\n for (let i = 0; i < computedStyle.length; i++) {\n const property = computedStyle[i];\n if (property.startsWith('--brand-') || \n property.startsWith('--text-') || \n property.startsWith('--bg-') || \n property.startsWith('--border-') || \n property.startsWith('--shadow-') || \n property.startsWith('--status-') || \n property.startsWith('--team-color-')) {\n cssVars[property] = computedStyle.getPropertyValue(property).trim();\n }\n }\n\n return cssVars;\n }\n\n /**\n * Apply theme with validation\n * @param theme - ThemeColors object to validate and apply\n * @returns boolean indicating if the theme was successfully applied\n */\n applyThemeWithValidation(theme: BrandingTypes.ThemeColors): boolean {\n try {\n // Basic validation - check if all required properties exist\n const requiredKeys = Object.keys(BrandingTypes.defaultTheme) as (keyof BrandingTypes.ThemeColors)[];\n const themeKeys = Object.keys(theme) as (keyof BrandingTypes.ThemeColors)[];\n \n const missingKeys = requiredKeys.filter(key => !themeKeys.includes(key));\n \n if (missingKeys.length > 0) {\n console.warn('DynamicThemeService: Missing theme properties:', missingKeys);\n // Apply with default values for missing keys\n const completeTheme = { ...BrandingTypes.defaultTheme, ...theme };\n this.applyTheme(completeTheme);\n return false;\n }\n\n this.applyTheme(theme);\n return true;\n } catch (error) {\n console.error('DynamicThemeService: Error applying theme:', error);\n return false;\n }\n }\n\n /**\n * Convert camelCase to kebab-case for CSS custom properties\n * @param camelCase - The camelCase string to convert\n * @returns kebab-case string\n */\n private camelToKebabCase(camelCase: string): string {\n return camelCase.replace(/([A-Z])/g, '-$1').toLowerCase();\n }\n\n /**\n * Convert kebab-case to camelCase\n * @param kebabCase - The kebab-case string to convert\n * @returns camelCase string\n */\n private kebabToCamelCase(kebabCase: string): string {\n return kebabCase.replace(/-([a-z])/g, (match, letter) => letter.toUpperCase());\n }\n\n /**\n * Create a theme preset from current applied theme\n * @param presetName - Name for the theme preset\n * @returns Theme preset object\n */\n createThemePreset(presetName: string): { name: string; theme: BrandingTypes.ThemeColors } {\n return {\n name: presetName,\n theme: { ...this.getCurrentTheme() }\n };\n }\n\n /**\n * Export current theme as JSON string\n * @returns JSON string representation of current theme\n */\n exportThemeAsJSON(): string {\n return JSON.stringify(this.getCurrentTheme(), null, 2);\n }\n\n /**\n * Import theme from JSON string\n * @param jsonString - JSON string representation of theme\n * @returns boolean indicating success\n */\n importThemeFromJSON(jsonString: string): boolean {\n try {\n const theme = JSON.parse(jsonString) as BrandingTypes.ThemeColors;\n return this.applyThemeWithValidation(theme);\n } catch (error) {\n console.error('DynamicThemeService: Error importing theme from JSON:', error);\n return false;\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { DynamicThemeService } from './dynamic-theme.service';\n\n@NgModule({\n providers: [\n DynamicThemeService\n ]\n})\nexport class DynamicThemeModule {\n constructor(private themeService: DynamicThemeService) {\n // Initialize the theme service when module is loaded\n // This ensures the default theme is applied\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.DynamicThemeService"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { input, signal, computed, Component, ChangeDetectionStrategy, HostListener, NgModule } from '@angular/core';
2
+ import { input, signal, computed, Component, HostListener, NgModule } from '@angular/core';
3
3
  import { trigger, transition, style, animate, state } from '@angular/animations';
4
4
  import * as i1 from '@angular/common';
5
5
  import { CommonModule } from '@angular/common';
@@ -102,7 +102,7 @@ class FabComponent {
102
102
  i0.ɵɵtemplate(0, FabComponent_div_0_Template, 5, 5, "div", 0);
103
103
  } if (rf & 2) {
104
104
  i0.ɵɵproperty("ngIf", ctx.show());
105
- } }, dependencies: [i1.NgForOf, i1.NgIf, i1.NgStyle], styles: [".fab-wrapper[_ngcontent-%COMP%]{position:fixed;right:24px;bottom:24px;z-index:1000}.fab-wrapper[_ngcontent-%COMP%] .fab-item[_ngcontent-%COMP%]{position:relative;padding:0 0 16px 8px}.fab-wrapper[_ngcontent-%COMP%] .fab-item[_ngcontent-%COMP%] .fab-tooltip[_ngcontent-%COMP%]{position:absolute;background-color:#181f33;border-radius:4px;color:#fff;padding:8px;display:flex;justify-content:center;align-items:center;white-space:nowrap;right:100%;top:calc(50% - 8px);transform:translateY(-50%)}.fab-wrapper[_ngcontent-%COMP%] .fab-item[_ngcontent-%COMP%] .fab-button[_ngcontent-%COMP%]{width:40px;height:40px;cursor:pointer;border-radius:50%;display:flex;justify-content:center;align-items:center}.fab-wrapper[_ngcontent-%COMP%] .fab-container[_ngcontent-%COMP%]{border-radius:50%;cursor:pointer;display:flex;justify-content:center;align-items:center;width:56px;height:56px}.add-img[_ngcontent-%COMP%]{height:24px;width:24px}"], data: { animation: [
105
+ } }, dependencies: [i1.NgForOf, i1.NgIf, i1.NgStyle], styles: ["[_ngcontent-%COMP%]:root{--pmry-200: #99BAF7;--pmry-100: #CBDDFB;--pmry-500: #0937B2;--pmry-400: #3C68D0;--pmry-600: #062A99;--pmry-700: #041F80;--pmry-300: #638FE7;--pmry-800: #021567;--pmry-900: #010F55;--sec-d-purple: #40447F;--sec-maroon: #6B034E;--sec-mud-red: #B23600;--sec-orange: #ED711C;--sec-purple: #815FD5;--sec-teal: #10ADAE;--sec-yellow: #D4900C;--sec-green: #547F40;--sec-bright-green: #27D22E;--sec-dark-teal: #035F6B;--sec-chocolate: #7C2F33;--sec-rube-pink: #C13D6D;--sec-cerulean: #0087B2;--sem-error: #B00020;--sem-info: #0091FF;--sem-warning: #FF9D00;--sem-success: #38AF49;--grey-bg-1: #FAFAFA;--grey-bg: #F5F5F5;--grey-seperators: #E0E0E0;--grey-disabled: #C8CDD3;--grey-hover: #F5F7FC;--grey-pressed: #E6EBF7;--grey-row: #F5F7FC;--dec-light-yellow: #F4E7C3;--dec-light-purple: #DACFF9;--dec-light-green: #E4F5E9;--dec-light-green2: #F1FFF3;--dec-light-pink: #FAE1EA;--dec-: #F4CBC1;--dec-lt-orange: #FAEFED;--dec-light-blue: #CFECF9;--dec-row-selection: #F1FDF8;--dec-row-selection2: #F2FBFF;--dec-row-lines: #D3E1E9;--text-white: #FFFFFF;--text-muted: #6A737D;--text-black: #181F33;--MR-solid-blue2:#C8D5F6;--MR-solid-purple:#C9C3FB;--MR-solid-orange:#EEAC9F;--MR-solid-green:#ACDADA;--MR-solid-brown:#E8C8AF;--MR-solid-yellow:#FFEFC7;--MR-solid-blue:#BBE6FF;--MR-solid-pink:#FFC6F2;--tr-hover:#F0F3FA;--tr-pressed:#DAE1F3;--brand-primary: #0937B2;--brand-primary-light: #3C68D0;--brand-primary-dark: #062A99;--brand-primary-darker: #041F80;--brand-primary-lighter: #638FE7;--brand-primary-lightest: #CBDDFB;--brand-primary-hover: #F0F3FA;--brand-primary-active: #DAE1F3;--brand-secondary: #ED711C;--brand-secondary-light: #F09E65;--brand-secondary-dark: #B23600;--brand-secondary-lighter: #FFC6F2;--brand-accent: #10ADAE;--brand-accent-light: #16CBBC;--brand-accent-dark: #035F6B;--brand-accent-lighter: #ACDADA;--brand-success: #38AF49;--brand-success-light: #4CAF50;--brand-success-dark: #216531;--brand-success-lighter: #E4F5E9;--brand-success-lightest: #F1FFF3;--brand-error: #B00020;--brand-error-light: #F04E4E;--brand-error-dark: #A60060;--brand-error-lighter: #FAE1EA;--brand-error-lightest: #FDF2F2;--brand-warning: #FF9D00;--brand-warning-light: #D4900C;--brand-warning-dark: #624000;--brand-warning-lighter: #F4E7C3;--brand-warning-lightest: #FAEFED;--brand-info: #0091FF;--brand-info-light: #35A1FF;--brand-info-dark: #0087B2;--brand-info-lighter: #CFECF9;--text-primary: #181F33;--text-secondary: #6A737D;--text-tertiary: #929DAB;--text-disabled: #929DAB;--text-primary-87: rgba(24, 31, 51, .87);--text-primary-60: rgba(24, 31, 51, .6);--text-primary-38: rgba(24, 31, 51, .38);--text-primary-12: rgba(24, 31, 51, .12);--bg-primary: #FFFFFF;--bg-secondary: #FAFAFA;--bg-tertiary: #F5F5F5;--bg-overlay: rgba(0, 0, 0, .32);--bg-overlay-light: rgba(0, 0, 0, .12);--bg-overlay-lighter: rgba(0, 0, 0, .08);--bg-overlay-lightest: rgba(0, 0, 0, .04);--border-primary: #E0E0E0;--border-secondary: #D6DCE2;--border-tertiary: #C8CDD3;--border-light: #F1F4F8;--border-primary-12: rgba(0, 0, 0, .12);--border-primary-08: rgba(0, 0, 0, .08);--border-primary-06: rgba(0, 0, 0, .06);--shadow-primary: rgba(0, 0, 0, .12);--shadow-secondary: rgba(0, 0, 0, .08);--shadow-tertiary: rgba(0, 0, 0, .04);--shadow-light: rgba(0, 0, 0, .06);--status-available: #929DAB;--status-unavailable: #CCD3DA;--status-hotseat: #857BFF;--status-multiteam: #10ADAE;--status-selected: #10ADAE;--status-upcoming: #D4900C;--status-room: #38AF49;--status-room-booked: #B23600;--status-room-unavailable: #181F33;--team-color-1: #F8C52E;--team-color-2: #FA8E20;--team-color-3: #987CDD;--team-color-4: #16CBBC;--team-color-5: #E65010;--team-color-6: #A60060;--team-color-7: #ED323B;--team-color-8: #35A1FF;--team-color-9: #80D348}.fab-wrapper[_ngcontent-%COMP%]{position:fixed;right:24px;bottom:24px;z-index:1000}.fab-wrapper[_ngcontent-%COMP%] .fab-item[_ngcontent-%COMP%]{position:relative;padding:0 0 16px 8px}.fab-wrapper[_ngcontent-%COMP%] .fab-item[_ngcontent-%COMP%] .fab-tooltip[_ngcontent-%COMP%]{position:absolute;background-color:var(--text-primary, #181F33);border-radius:4px;color:var(--bg-primary, #FFFFFF);padding:8px;display:flex;justify-content:center;align-items:center;white-space:nowrap;right:100%;top:calc(50% - 8px);transform:translateY(-50%)}.fab-wrapper[_ngcontent-%COMP%] .fab-item[_ngcontent-%COMP%] .fab-button[_ngcontent-%COMP%]{width:40px;height:40px;cursor:pointer;border-radius:50%;display:flex;justify-content:center;align-items:center}.fab-wrapper[_ngcontent-%COMP%] .fab-container[_ngcontent-%COMP%]{border-radius:50%;cursor:pointer;display:flex;justify-content:center;align-items:center;width:56px;height:56px}.add-img[_ngcontent-%COMP%]{height:24px;width:24px}"], data: { animation: [
106
106
  trigger("slideUpFab", [
107
107
  transition(":enter", [
108
108
  style({ transform: "translateY(50px)", opacity: 0 }),
@@ -116,11 +116,11 @@ class FabComponent {
116
116
  transition("rotated => default", animate("300ms ease-out")),
117
117
  transition("default => rotated", animate("200ms ease-in"))
118
118
  ])
119
- ] }, changeDetection: 0 }); }
119
+ ] } }); }
120
120
  }
121
121
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FabComponent, [{
122
122
  type: Component,
123
- args: [{ selector: "mis-fab", changeDetection: ChangeDetectionStrategy.OnPush, animations: [
123
+ args: [{ selector: "mis-fab", animations: [
124
124
  trigger("slideUpFab", [
125
125
  transition(":enter", [
126
126
  style({ transform: "translateY(50px)", opacity: 0 }),
@@ -134,7 +134,7 @@ class FabComponent {
134
134
  transition("rotated => default", animate("300ms ease-out")),
135
135
  transition("default => rotated", animate("200ms ease-in"))
136
136
  ])
137
- ], template: "<div class=\"fab-wrapper\" *ngIf=\"show()\">\n <div class=\"fab-items\" *ngIf=\"isOpen()\" @slideUpFab>\n <div class=\"fab-item\" *ngFor=\"let item of items().reverse(); let i = index\" (click)=\"clickItem(item)\">\n <div *ngIf=\"item.label\" class=\"fab-tooltip\">\n {{ item.label }}\n </div>\n <div\n class=\"fab-button\"\n [ngStyle]=\"{\n backgroundColor: item.backgroundColor || '#0937B2'\n }\"\n >\n <img [src]=\"item.icon\" class=\"add-img\" />\n </div>\n </div>\n </div>\n <div\n class=\"fab-container\"\n [ngStyle]=\"{\n backgroundColor: isOpen() ? computedOptions().backgroundColorOpened : computedOptions().backgroundColorClosed\n }\"\n (click)=\"toogleFab()\"\n >\n <svg\n [@rotateButton]=\"isOpen() ? 'rotated' : 'default'\"\n class=\"add-img\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M13.1424 5.15607C13.1424 4.51759 12.6313 4 12.0009 4C11.3704 4 10.8594 4.51759 10.8594 5.15607V10.8421H5.14149C4.51106 10.8421 4 11.3597 4 11.9982C4 12.6367 4.51106 13.1543 5.14149 13.1543H10.8594V18.8439C10.8594 19.4824 11.3704 20 12.0009 20C12.6313 20 13.1424 19.4824 13.1424 18.8439V13.1543H18.8585C19.4889 13.1543 20 12.6367 20 11.9982C20 11.3597 19.4889 10.8421 18.8585 10.8421H13.1424V5.15607Z\"\n fill=\"white\"\n />\n </svg>\n </div>\n</div>\n", styles: [".fab-wrapper{position:fixed;right:24px;bottom:24px;z-index:1000}.fab-wrapper .fab-item{position:relative;padding:0 0 16px 8px}.fab-wrapper .fab-item .fab-tooltip{position:absolute;background-color:#181f33;border-radius:4px;color:#fff;padding:8px;display:flex;justify-content:center;align-items:center;white-space:nowrap;right:100%;top:calc(50% - 8px);transform:translateY(-50%)}.fab-wrapper .fab-item .fab-button{width:40px;height:40px;cursor:pointer;border-radius:50%;display:flex;justify-content:center;align-items:center}.fab-wrapper .fab-container{border-radius:50%;cursor:pointer;display:flex;justify-content:center;align-items:center;width:56px;height:56px}.add-img{height:24px;width:24px}\n"] }]
137
+ ], template: "<div class=\"fab-wrapper\" *ngIf=\"show()\">\n <div class=\"fab-items\" *ngIf=\"isOpen()\" @slideUpFab>\n <div class=\"fab-item\" *ngFor=\"let item of items().reverse(); let i = index\" (click)=\"clickItem(item)\">\n <div *ngIf=\"item.label\" class=\"fab-tooltip\">\n {{ item.label }}\n </div>\n <div\n class=\"fab-button\"\n [ngStyle]=\"{\n backgroundColor: item.backgroundColor || '#0937B2'\n }\"\n >\n <img [src]=\"item.icon\" class=\"add-img\" />\n </div>\n </div>\n </div>\n <div\n class=\"fab-container\"\n [ngStyle]=\"{\n backgroundColor: isOpen() ? computedOptions().backgroundColorOpened : computedOptions().backgroundColorClosed\n }\"\n (click)=\"toogleFab()\"\n >\n <svg\n [@rotateButton]=\"isOpen() ? 'rotated' : 'default'\"\n class=\"add-img\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M13.1424 5.15607C13.1424 4.51759 12.6313 4 12.0009 4C11.3704 4 10.8594 4.51759 10.8594 5.15607V10.8421H5.14149C4.51106 10.8421 4 11.3597 4 11.9982C4 12.6367 4.51106 13.1543 5.14149 13.1543H10.8594V18.8439C10.8594 19.4824 11.3704 20 12.0009 20C12.6313 20 13.1424 19.4824 13.1424 18.8439V13.1543H18.8585C19.4889 13.1543 20 12.6367 20 11.9982C20 11.3597 19.4889 10.8421 18.8585 10.8421H13.1424V5.15607Z\"\n fill=\"white\"\n />\n </svg>\n </div>\n</div>\n", styles: [":root{--pmry-200: #99BAF7;--pmry-100: #CBDDFB;--pmry-500: #0937B2;--pmry-400: #3C68D0;--pmry-600: #062A99;--pmry-700: #041F80;--pmry-300: #638FE7;--pmry-800: #021567;--pmry-900: #010F55;--sec-d-purple: #40447F;--sec-maroon: #6B034E;--sec-mud-red: #B23600;--sec-orange: #ED711C;--sec-purple: #815FD5;--sec-teal: #10ADAE;--sec-yellow: #D4900C;--sec-green: #547F40;--sec-bright-green: #27D22E;--sec-dark-teal: #035F6B;--sec-chocolate: #7C2F33;--sec-rube-pink: #C13D6D;--sec-cerulean: #0087B2;--sem-error: #B00020;--sem-info: #0091FF;--sem-warning: #FF9D00;--sem-success: #38AF49;--grey-bg-1: #FAFAFA;--grey-bg: #F5F5F5;--grey-seperators: #E0E0E0;--grey-disabled: #C8CDD3;--grey-hover: #F5F7FC;--grey-pressed: #E6EBF7;--grey-row: #F5F7FC;--dec-light-yellow: #F4E7C3;--dec-light-purple: #DACFF9;--dec-light-green: #E4F5E9;--dec-light-green2: #F1FFF3;--dec-light-pink: #FAE1EA;--dec-: #F4CBC1;--dec-lt-orange: #FAEFED;--dec-light-blue: #CFECF9;--dec-row-selection: #F1FDF8;--dec-row-selection2: #F2FBFF;--dec-row-lines: #D3E1E9;--text-white: #FFFFFF;--text-muted: #6A737D;--text-black: #181F33;--MR-solid-blue2:#C8D5F6;--MR-solid-purple:#C9C3FB;--MR-solid-orange:#EEAC9F;--MR-solid-green:#ACDADA;--MR-solid-brown:#E8C8AF;--MR-solid-yellow:#FFEFC7;--MR-solid-blue:#BBE6FF;--MR-solid-pink:#FFC6F2;--tr-hover:#F0F3FA;--tr-pressed:#DAE1F3;--brand-primary: #0937B2;--brand-primary-light: #3C68D0;--brand-primary-dark: #062A99;--brand-primary-darker: #041F80;--brand-primary-lighter: #638FE7;--brand-primary-lightest: #CBDDFB;--brand-primary-hover: #F0F3FA;--brand-primary-active: #DAE1F3;--brand-secondary: #ED711C;--brand-secondary-light: #F09E65;--brand-secondary-dark: #B23600;--brand-secondary-lighter: #FFC6F2;--brand-accent: #10ADAE;--brand-accent-light: #16CBBC;--brand-accent-dark: #035F6B;--brand-accent-lighter: #ACDADA;--brand-success: #38AF49;--brand-success-light: #4CAF50;--brand-success-dark: #216531;--brand-success-lighter: #E4F5E9;--brand-success-lightest: #F1FFF3;--brand-error: #B00020;--brand-error-light: #F04E4E;--brand-error-dark: #A60060;--brand-error-lighter: #FAE1EA;--brand-error-lightest: #FDF2F2;--brand-warning: #FF9D00;--brand-warning-light: #D4900C;--brand-warning-dark: #624000;--brand-warning-lighter: #F4E7C3;--brand-warning-lightest: #FAEFED;--brand-info: #0091FF;--brand-info-light: #35A1FF;--brand-info-dark: #0087B2;--brand-info-lighter: #CFECF9;--text-primary: #181F33;--text-secondary: #6A737D;--text-tertiary: #929DAB;--text-disabled: #929DAB;--text-primary-87: rgba(24, 31, 51, .87);--text-primary-60: rgba(24, 31, 51, .6);--text-primary-38: rgba(24, 31, 51, .38);--text-primary-12: rgba(24, 31, 51, .12);--bg-primary: #FFFFFF;--bg-secondary: #FAFAFA;--bg-tertiary: #F5F5F5;--bg-overlay: rgba(0, 0, 0, .32);--bg-overlay-light: rgba(0, 0, 0, .12);--bg-overlay-lighter: rgba(0, 0, 0, .08);--bg-overlay-lightest: rgba(0, 0, 0, .04);--border-primary: #E0E0E0;--border-secondary: #D6DCE2;--border-tertiary: #C8CDD3;--border-light: #F1F4F8;--border-primary-12: rgba(0, 0, 0, .12);--border-primary-08: rgba(0, 0, 0, .08);--border-primary-06: rgba(0, 0, 0, .06);--shadow-primary: rgba(0, 0, 0, .12);--shadow-secondary: rgba(0, 0, 0, .08);--shadow-tertiary: rgba(0, 0, 0, .04);--shadow-light: rgba(0, 0, 0, .06);--status-available: #929DAB;--status-unavailable: #CCD3DA;--status-hotseat: #857BFF;--status-multiteam: #10ADAE;--status-selected: #10ADAE;--status-upcoming: #D4900C;--status-room: #38AF49;--status-room-booked: #B23600;--status-room-unavailable: #181F33;--team-color-1: #F8C52E;--team-color-2: #FA8E20;--team-color-3: #987CDD;--team-color-4: #16CBBC;--team-color-5: #E65010;--team-color-6: #A60060;--team-color-7: #ED323B;--team-color-8: #35A1FF;--team-color-9: #80D348}.fab-wrapper{position:fixed;right:24px;bottom:24px;z-index:1000}.fab-wrapper .fab-item{position:relative;padding:0 0 16px 8px}.fab-wrapper .fab-item .fab-tooltip{position:absolute;background-color:var(--text-primary, #181F33);border-radius:4px;color:var(--bg-primary, #FFFFFF);padding:8px;display:flex;justify-content:center;align-items:center;white-space:nowrap;right:100%;top:calc(50% - 8px);transform:translateY(-50%)}.fab-wrapper .fab-item .fab-button{width:40px;height:40px;cursor:pointer;border-radius:50%;display:flex;justify-content:center;align-items:center}.fab-wrapper .fab-container{border-radius:50%;cursor:pointer;display:flex;justify-content:center;align-items:center;width:56px;height:56px}.add-img{height:24px;width:24px}\n"] }]
138
138
  }], () => [{ type: i0.ElementRef }], { clickout: [{
139
139
  type: HostListener,
140
140
  args: ["document:click", ["$event"]]
@@ -1 +1 @@
1
- {"version":3,"file":"mis-crystal-design-system-fab.mjs","sources":["../../../projects/mis-components/fab/fab.component.ts","../../../projects/mis-components/fab/fab.component.html","../../../projects/mis-components/fab/fab.module.ts","../../../projects/mis-components/fab/mis-crystal-design-system-fab.ts"],"sourcesContent":["/** @format */\n\nimport { Component, ElementRef, HostListener, OnDestroy, ChangeDetectionStrategy, input, signal, WritableSignal, computed } from \"@angular/core\";\nimport { trigger, transition, style, animate, state } from \"@angular/animations\";\n\nexport type FabOptions = {\n backgroundColorClosed?: string;\n backgroundColorOpened?: string;\n size?: number;\n};\n\nexport type FabItem = {\n label?: string;\n icon: string;\n backgroundColor?: string;\n id?: string;\n click?: () => any;\n};\n\nexport type FabItems = FabItem[];\n\n@Component({\n selector: \"mis-fab\",\n templateUrl: \"./fab.component.html\",\n styleUrls: [\"./fab.component.scss\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger(\"slideUpFab\", [\n transition(\":enter\", [\n style({ transform: \"translateY(50px)\", opacity: 0 }),\n animate(\"300ms ease-out\", style({ transform: \"translateY(0px)\", opacity: 1 }))\n ]),\n transition(\":leave\", [animate(\"200ms ease-out\", style({ transform: \"translateY(70px)\", opacity: 0 }))])\n ]),\n trigger(\"rotateButton\", [\n state(\"default\", style({ transform: \"rotate(0)\" })),\n state(\"rotated\", style({ transform: \"rotate(45deg)\" })),\n transition(\"rotated => default\", animate(\"300ms ease-out\")),\n transition(\"default => rotated\", animate(\"200ms ease-in\"))\n ])\n ]\n})\nexport class FabComponent implements OnDestroy {\n show = input<boolean>(false);\n options = input<FabOptions>({});\n items = input<FabItems>([]);\n\n isOpen: WritableSignal<boolean> = signal(false);\n\n // Computed signal for options with defaults\n computedOptions = computed(() => {\n const currentOptions = this.options();\n return {\n size: 56,\n backgroundColorClosed: \"#0937B2\",\n backgroundColorOpened: \"#3a5fc1\",\n ...currentOptions\n };\n });\n\n constructor(private eRef: ElementRef) {}\n\n @HostListener(\"document:click\", [\"$event\"])\n clickout(event: any) {\n if (!this.eRef.nativeElement.contains(event.target)) {\n this.closeFab();\n }\n }\n\n ngOnDestroy(): void {}\n\n clickItem(item: FabItem) {\n this.closeFab();\n item.click?.();\n }\n\n closeFab() {\n this.isOpen.set(false);\n }\n\n toogleFab() {\n this.isOpen.set(!this.isOpen());\n }\n}\n","<div class=\"fab-wrapper\" *ngIf=\"show()\">\n <div class=\"fab-items\" *ngIf=\"isOpen()\" @slideUpFab>\n <div class=\"fab-item\" *ngFor=\"let item of items().reverse(); let i = index\" (click)=\"clickItem(item)\">\n <div *ngIf=\"item.label\" class=\"fab-tooltip\">\n {{ item.label }}\n </div>\n <div\n class=\"fab-button\"\n [ngStyle]=\"{\n backgroundColor: item.backgroundColor || '#0937B2'\n }\"\n >\n <img [src]=\"item.icon\" class=\"add-img\" />\n </div>\n </div>\n </div>\n <div\n class=\"fab-container\"\n [ngStyle]=\"{\n backgroundColor: isOpen() ? computedOptions().backgroundColorOpened : computedOptions().backgroundColorClosed\n }\"\n (click)=\"toogleFab()\"\n >\n <svg\n [@rotateButton]=\"isOpen() ? 'rotated' : 'default'\"\n class=\"add-img\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M13.1424 5.15607C13.1424 4.51759 12.6313 4 12.0009 4C11.3704 4 10.8594 4.51759 10.8594 5.15607V10.8421H5.14149C4.51106 10.8421 4 11.3597 4 11.9982C4 12.6367 4.51106 13.1543 5.14149 13.1543H10.8594V18.8439C10.8594 19.4824 11.3704 20 12.0009 20C12.6313 20 13.1424 19.4824 13.1424 18.8439V13.1543H18.8585C19.4889 13.1543 20 12.6367 20 11.9982C20 11.3597 19.4889 10.8421 18.8585 10.8421H13.1424V5.15607Z\"\n fill=\"white\"\n />\n </svg>\n </div>\n</div>\n","import { NgModule, ModuleWithProviders } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { FabComponent } from \"./fab.component\";\n\n@NgModule({\n declarations: [FabComponent],\n imports: [CommonModule],\n exports: [FabComponent]\n})\nexport class FabModule {\n static forRoot(): ModuleWithProviders<FabModule> {\n return { ngModule: FabModule, providers: [] };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mis-crystal-design-system-fab.mjs","sources":["../../../projects/mis-components/fab/fab.component.ts","../../../projects/mis-components/fab/fab.component.html","../../../projects/mis-components/fab/fab.module.ts","../../../projects/mis-components/fab/mis-crystal-design-system-fab.ts"],"sourcesContent":["/** @format */\n\nimport { Component, ElementRef, HostListener, OnDestroy, ChangeDetectionStrategy, input, signal, WritableSignal, computed } from \"@angular/core\";\nimport { trigger, transition, style, animate, state } from \"@angular/animations\";\n\nexport type FabOptions = {\n backgroundColorClosed?: string;\n backgroundColorOpened?: string;\n size?: number;\n};\n\nexport type FabItem = {\n label?: string;\n icon: string;\n backgroundColor?: string;\n id?: string;\n click?: () => any;\n};\n\nexport type FabItems = FabItem[];\n\n@Component({\n selector: \"mis-fab\",\n templateUrl: \"./fab.component.html\",\n styleUrls: [\"./fab.component.scss\"],\n animations: [\n trigger(\"slideUpFab\", [\n transition(\":enter\", [\n style({ transform: \"translateY(50px)\", opacity: 0 }),\n animate(\"300ms ease-out\", style({ transform: \"translateY(0px)\", opacity: 1 }))\n ]),\n transition(\":leave\", [animate(\"200ms ease-out\", style({ transform: \"translateY(70px)\", opacity: 0 }))])\n ]),\n trigger(\"rotateButton\", [\n state(\"default\", style({ transform: \"rotate(0)\" })),\n state(\"rotated\", style({ transform: \"rotate(45deg)\" })),\n transition(\"rotated => default\", animate(\"300ms ease-out\")),\n transition(\"default => rotated\", animate(\"200ms ease-in\"))\n ])\n ]\n})\nexport class FabComponent implements OnDestroy {\n show = input<boolean>(false);\n options = input<FabOptions>({});\n items = input<FabItems>([]);\n\n isOpen: WritableSignal<boolean> = signal(false);\n\n // Computed signal for options with defaults\n computedOptions = computed(() => {\n const currentOptions = this.options();\n return {\n size: 56,\n backgroundColorClosed: \"#0937B2\",\n backgroundColorOpened: \"#3a5fc1\",\n ...currentOptions\n };\n });\n\n constructor(private eRef: ElementRef) {}\n\n @HostListener(\"document:click\", [\"$event\"])\n clickout(event: any) {\n if (!this.eRef.nativeElement.contains(event.target)) {\n this.closeFab();\n }\n }\n\n ngOnDestroy(): void {}\n\n clickItem(item: FabItem) {\n this.closeFab();\n item.click?.();\n }\n\n closeFab() {\n this.isOpen.set(false);\n }\n\n toogleFab() {\n this.isOpen.set(!this.isOpen());\n }\n}\n","<div class=\"fab-wrapper\" *ngIf=\"show()\">\n <div class=\"fab-items\" *ngIf=\"isOpen()\" @slideUpFab>\n <div class=\"fab-item\" *ngFor=\"let item of items().reverse(); let i = index\" (click)=\"clickItem(item)\">\n <div *ngIf=\"item.label\" class=\"fab-tooltip\">\n {{ item.label }}\n </div>\n <div\n class=\"fab-button\"\n [ngStyle]=\"{\n backgroundColor: item.backgroundColor || '#0937B2'\n }\"\n >\n <img [src]=\"item.icon\" class=\"add-img\" />\n </div>\n </div>\n </div>\n <div\n class=\"fab-container\"\n [ngStyle]=\"{\n backgroundColor: isOpen() ? computedOptions().backgroundColorOpened : computedOptions().backgroundColorClosed\n }\"\n (click)=\"toogleFab()\"\n >\n <svg\n [@rotateButton]=\"isOpen() ? 'rotated' : 'default'\"\n class=\"add-img\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M13.1424 5.15607C13.1424 4.51759 12.6313 4 12.0009 4C11.3704 4 10.8594 4.51759 10.8594 5.15607V10.8421H5.14149C4.51106 10.8421 4 11.3597 4 11.9982C4 12.6367 4.51106 13.1543 5.14149 13.1543H10.8594V18.8439C10.8594 19.4824 11.3704 20 12.0009 20C12.6313 20 13.1424 19.4824 13.1424 18.8439V13.1543H18.8585C19.4889 13.1543 20 12.6367 20 11.9982C20 11.3597 19.4889 10.8421 18.8585 10.8421H13.1424V5.15607Z\"\n fill=\"white\"\n />\n </svg>\n </div>\n</div>\n","import { NgModule, ModuleWithProviders } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { FabComponent } from \"./fab.component\";\n\n@NgModule({\n declarations: [FabComponent],\n imports: [CommonModule],\n exports: [FabComponent]\n})\nexport class FabModule {\n static forRoot(): ModuleWithProviders<FabModule> {\n return { ngModule: FabModule, providers: [] };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAAA;;;ICGM,EAA4C,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAC1C,EACF,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAM,CAAA,YAAA,EAAA,CAAA;;;IADJ,EACF,CAAA,SAAA,EAAA,CAAA;IADE,EACF,CAAA,kBAAA,CAAA,GAAA,EAAA,OAAA,CAAA,KAAA,EAAA,GAAA,CAAA,CAAA;;;;IAHF,EAAsG,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;AAA1B,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,4DAAA,GAAA,EAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,SAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAS,yBAAe,CAAC,CAAA,EAAA,CAAA,CAAA;IACnG,EAA4C,CAAA,UAAA,CAAA,CAAA,EAAA,6CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAG5C,EAKC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACC,EAAyC,CAAA,SAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;AAE7C,IADE,iBAAM,EACF,CAAA;;;IAXE,EAAgB,CAAA,SAAA,EAAA,CAAA;IAAhB,EAAgB,CAAA,UAAA,CAAA,MAAA,EAAA,OAAA,CAAA,KAAA,CAAA,CAAA;IAKpB,EAEE,CAAA,SAAA,EAAA,CAAA;IAFF,EAEE,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA,GAAA,EAAA,OAAA,CAAA,eAAA,IAAA,SAAA,CAAA,CAAA,CAAA;IAEG,EAAiB,CAAA,SAAA,EAAA,CAAA;IAAjB,EAAiB,CAAA,UAAA,CAAA,KAAA,EAAA,OAAA,CAAA,IAAA,EAAA,EAAA,CAAA,aAAA,CAAA,CAAA;;;IAX5B,EAAoD,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAClD,EAAsG,CAAA,UAAA,CAAA,CAAA,EAAA,uCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAaxG,EAAM,CAAA,YAAA,EAAA,CAAA;;;IAdkC,EAAW,CAAA,UAAA,CAAA,aAAA,EAAA,SAAA,CAAA,CAAA;IACV,EAAsB,CAAA,SAAA,EAAA,CAAA;IAAtB,EAAsB,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,KAAA,EAAA,CAAA,OAAA,EAAA,CAAA,CAAA;;;;IAFjE,EAAwC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IACtC,EAAoD,CAAA,UAAA,CAAA,CAAA,EAAA,iCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAepD,EAMC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;AADC,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,gDAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAS,kBAAW,CAAC,CAAA,EAAA,CAAA,CAAA;;IAErB,EAQC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IACC,EAKE,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IACJ,EAAM,CAAA,YAAA,EAAA,EACF,EACF,CAAA;;;IAvCoB,EAAc,CAAA,SAAA,EAAA,CAAA;IAAd,EAAc,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,MAAA,EAAA,CAAA,CAAA;IAiBpC,EAEE,CAAA,SAAA,EAAA,CAAA;IAFF,EAEE,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA,GAAA,EAAA,MAAA,CAAA,MAAA,EAAA,GAAA,MAAA,CAAA,eAAA,EAAA,CAAA,qBAAA,GAAA,MAAA,CAAA,eAAA,EAAA,CAAA,qBAAA,CAAA,CAAA,CAAA;IAIA,EAAkD,CAAA,SAAA,EAAA,CAAA;IAAlD,EAAkD,CAAA,UAAA,CAAA,eAAA,EAAA,MAAA,CAAA,MAAA,EAAA,GAAA,SAAA,GAAA,SAAA,CAAA,CAAA;;MDiB3C,YAAY,CAAA;AAkBvB,IAAA,WAAA,CAAoB,IAAgB,EAAA;QAAhB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;AAjBpC,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAU,KAAK,CAAC,CAAC;AAC7B,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAa,EAAE,CAAC,CAAC;AAChC,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAW,EAAE,CAAC,CAAC;AAE5B,QAAA,IAAA,CAAA,MAAM,GAA4B,MAAM,CAAC,KAAK,CAAC,CAAC;;AAGhD,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AAC9B,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YACtC,OAAO;AACL,gBAAA,IAAI,EAAE,EAAE;AACR,gBAAA,qBAAqB,EAAE,SAAS;AAChC,gBAAA,qBAAqB,EAAE,SAAS;AAChC,gBAAA,GAAG,cAAc;aAClB,CAAC;AACJ,SAAC,CAAC,CAAC;KAEqC;AAGxC,IAAA,QAAQ,CAAC,KAAU,EAAA;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;YACnD,IAAI,CAAC,QAAQ,EAAE,CAAC;SACjB;KACF;AAED,IAAA,WAAW,MAAW;AAEtB,IAAA,SAAS,CAAC,IAAa,EAAA;QACrB,IAAI,CAAC,QAAQ,EAAE,CAAC;AAChB,QAAA,IAAI,CAAC,KAAK,IAAI,CAAC;KAChB;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KACxB;IAED,SAAS,GAAA;QACP,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;KACjC;6GAxCU,YAAY,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,UAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA;oEAAZ,YAAY,EAAA,SAAA,EAAA,CAAA,CAAA,SAAA,CAAA,CAAA,EAAA,YAAA,EAAA,SAAA,yBAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;AAAZ,YAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,qCAAA,CAAA,MAAA,EAAA,EAAA,OAAA,oBAAgB,CAAJ,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,CAAA;;YCzCzB,EAAwC,CAAA,UAAA,CAAA,CAAA,EAAA,2BAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;;YAAd,EAAY,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,IAAA,EAAA,CAAA,CAAA;ADyBxB,SAAA,EAAA,EAAA,YAAA,EAAA,CAAA,EAAA,CAAA,OAAA,EAAA,EAAA,CAAA,IAAA,EAAA,EAAA,CAAA,OAAA,CAAA,EAAA,MAAA,EAAA,CAAA,imJAAA,CAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA;gBACV,OAAO,CAAC,YAAY,EAAE;oBACpB,UAAU,CAAC,QAAQ,EAAE;wBACnB,KAAK,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AACpD,wBAAA,OAAO,CAAC,gBAAgB,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;qBAC/E,CAAC;oBACF,UAAU,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,gBAAgB,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;iBACxG,CAAC;gBACF,OAAO,CAAC,cAAc,EAAE;oBACtB,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC;oBACnD,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC;AACvD,oBAAA,UAAU,CAAC,oBAAoB,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAC3D,oBAAA,UAAU,CAAC,oBAAoB,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;iBAC3D,CAAC;AACH,aAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;iFAEU,YAAY,EAAA,CAAA;cApBxB,SAAS;AACE,QAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,EAGP,UAAA,EAAA;oBACV,OAAO,CAAC,YAAY,EAAE;wBACpB,UAAU,CAAC,QAAQ,EAAE;4BACnB,KAAK,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AACpD,4BAAA,OAAO,CAAC,gBAAgB,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;yBAC/E,CAAC;wBACF,UAAU,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,gBAAgB,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;qBACxG,CAAC;oBACF,OAAO,CAAC,cAAc,EAAE;wBACtB,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC;wBACnD,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC;AACvD,wBAAA,UAAU,CAAC,oBAAoB,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAC3D,wBAAA,UAAU,CAAC,oBAAoB,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;qBAC3D,CAAC;AACH,iBAAA,EAAA,QAAA,EAAA,6hDAAA,EAAA,MAAA,EAAA,CAAA,g2IAAA,CAAA,EAAA,CAAA;2CAuBD,QAAQ,EAAA,CAAA;kBADP,YAAY;mBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,CAAA;;kFApB/B,YAAY,EAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;MEhCZ,SAAS,CAAA;AACpB,IAAA,OAAO,OAAO,GAAA;QACZ,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;KAC/C;0GAHU,SAAS,GAAA,CAAA,EAAA,CAAA,EAAA;mEAAT,SAAS,EAAA,CAAA,CAAA,EAAA;uEAHV,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;iFAGX,SAAS,EAAA,CAAA;cALrB,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;gBACR,YAAY,EAAE,CAAC,YAAY,CAAC;gBAC5B,OAAO,EAAE,CAAC,YAAY,CAAC;gBACvB,OAAO,EAAE,CAAC,YAAY,CAAC;AACxB,aAAA,CAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,SAAS,EAJL,EAAA,YAAA,EAAA,CAAA,YAAY,CACjB,EAAA,OAAA,EAAA,CAAA,YAAY,aACZ,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;ACPxB;;AAEG;;;;"}