@skyux/theme 12.0.0-alpha.9 → 12.0.0-beta.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.
- package/css/sky.css +14 -3
- package/css/themes/modern/styles.css +53 -59
- package/fesm2022/skyux-theme.mjs +203 -87
- package/fesm2022/skyux-theme.mjs.map +1 -1
- package/index.d.ts +1 -0
- package/lib/theming/theme-brand.d.ts +18 -0
- package/lib/theming/theme-settings.d.ts +3 -1
- package/package.json +13 -16
- package/scss/_compat/_variables.scss +2 -2
- package/documentation.json +0 -4610
package/fesm2022/skyux-theme.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Injectable, Optional, Input, Directive, NgModule, inject, ChangeDetectorRef, HostBinding, DestroyRef, makeEnvironmentProviders, provideAppInitializer, RendererFactory2 } from '@angular/core';
|
|
2
|
+
import { Injectable, Optional, Input, Directive, NgModule, inject, ChangeDetectorRef, HostBinding, NgZone, DestroyRef, makeEnvironmentProviders, provideAppInitializer, RendererFactory2 } from '@angular/core';
|
|
3
3
|
import { getIconManifest } from '@skyux/icons';
|
|
4
4
|
import FontFaceObserver from 'fontfaceobserver';
|
|
5
5
|
import { take, takeUntil } from 'rxjs/operators';
|
|
@@ -28,6 +28,52 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImpor
|
|
|
28
28
|
}]
|
|
29
29
|
}] });
|
|
30
30
|
|
|
31
|
+
/**
|
|
32
|
+
* Defines properties of a SKY UX theme mode.
|
|
33
|
+
*/
|
|
34
|
+
class SkyThemeMode {
|
|
35
|
+
/**
|
|
36
|
+
* The preset themes available in SKY UX.
|
|
37
|
+
*/
|
|
38
|
+
static { this.presets = {
|
|
39
|
+
light: new SkyThemeMode('light', 'sky-theme-mode-light'),
|
|
40
|
+
dark: new SkyThemeMode('dark', 'sky-theme-mode-dark'),
|
|
41
|
+
}; }
|
|
42
|
+
/**
|
|
43
|
+
* Creates a new theme mode.
|
|
44
|
+
* @param name The name of the theme mode.
|
|
45
|
+
* @param hostClass The class on the host element which child components should reference when
|
|
46
|
+
* adjusting for a specified theme mode.
|
|
47
|
+
*/
|
|
48
|
+
constructor(name, hostClass) {
|
|
49
|
+
this.name = name;
|
|
50
|
+
this.hostClass = hostClass;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Defines properties of SKY UX theme spacing.
|
|
56
|
+
*/
|
|
57
|
+
class SkyThemeSpacing {
|
|
58
|
+
/**
|
|
59
|
+
* The preset spacing available in SKY UX.
|
|
60
|
+
*/
|
|
61
|
+
static { this.presets = {
|
|
62
|
+
standard: new SkyThemeSpacing('standard', 'sky-theme-spacing-standard'),
|
|
63
|
+
compact: new SkyThemeSpacing('compact', 'sky-theme-spacing-compact'),
|
|
64
|
+
}; }
|
|
65
|
+
/**
|
|
66
|
+
* Creates a new theme spacing.
|
|
67
|
+
* @param name The name of the theme spacing.
|
|
68
|
+
* @param hostClass The class on the host element which child components should reference when
|
|
69
|
+
* adjusting for a specified theme spacing.
|
|
70
|
+
*/
|
|
71
|
+
constructor(name, hostClass) {
|
|
72
|
+
this.name = name;
|
|
73
|
+
this.hostClass = hostClass;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
31
77
|
/**
|
|
32
78
|
* Provides methods for updating and handling changes to the current theme.
|
|
33
79
|
*/
|
|
@@ -39,6 +85,7 @@ class SkyThemeService {
|
|
|
39
85
|
return this.#_settingsObs;
|
|
40
86
|
}
|
|
41
87
|
#current;
|
|
88
|
+
#brandLinkElement;
|
|
42
89
|
#hostEl;
|
|
43
90
|
#renderer;
|
|
44
91
|
#settings;
|
|
@@ -76,6 +123,7 @@ class SkyThemeService {
|
|
|
76
123
|
this.#applyThemeClass(previous, settings, 'theme');
|
|
77
124
|
this.#applyThemeClass(previous, settings, 'mode', 'supportedModes');
|
|
78
125
|
this.#applyThemeClass(previous, settings, 'spacing', 'supportedSpacing');
|
|
126
|
+
this.#applyThemeClass(previous, settings, 'brand');
|
|
79
127
|
this.#settings.next({
|
|
80
128
|
currentSettings: settings,
|
|
81
129
|
previousSettings: previous,
|
|
@@ -84,24 +132,77 @@ class SkyThemeService {
|
|
|
84
132
|
}
|
|
85
133
|
#applyThemeClass(previous, current, prop, supportedProp) {
|
|
86
134
|
const currentSetting = current[prop];
|
|
87
|
-
const previousClass = previous?.[prop]
|
|
88
|
-
const currentClass = currentSetting
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
if (
|
|
92
|
-
this.#
|
|
135
|
+
const previousClass = previous?.[prop]?.hostClass;
|
|
136
|
+
const currentClass = currentSetting?.hostClass;
|
|
137
|
+
if (!previousClass || previousClass !== currentClass) {
|
|
138
|
+
this.#updateHostClass(prop, previousClass, currentClass, currentSetting, current, supportedProp);
|
|
139
|
+
if (prop === 'brand') {
|
|
140
|
+
this.#updateBrandStylesheet(current.brand, previous?.brand);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
#updateBrandStylesheet(currentBrand, previousBrand) {
|
|
145
|
+
if (currentBrand &&
|
|
146
|
+
currentBrand.name !== 'blackbaud' &&
|
|
147
|
+
previousBrand !== currentBrand) {
|
|
148
|
+
this.#addBrandStylesheet(currentBrand);
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
this.#removeBrandStylesheet();
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
#updateHostClass(prop, previousClass, currentClass, currentSetting, current, supportedProp) {
|
|
155
|
+
if (previousClass) {
|
|
156
|
+
this.#removeHostClass(previousClass);
|
|
157
|
+
}
|
|
158
|
+
if (prop === 'brand') {
|
|
159
|
+
if (currentClass && !previousClass) {
|
|
160
|
+
this.#addHostClass('sky-theme-brand-base');
|
|
93
161
|
}
|
|
94
|
-
if (!
|
|
95
|
-
|
|
96
|
-
this.#addHostClass(currentClass);
|
|
162
|
+
else if (!currentClass && previousClass) {
|
|
163
|
+
this.#removeHostClass('sky-theme-brand-base');
|
|
97
164
|
}
|
|
98
165
|
}
|
|
166
|
+
if (currentClass &&
|
|
167
|
+
this.#isSupportedProperty(currentSetting, current, supportedProp)) {
|
|
168
|
+
this.#addHostClass(currentClass);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
#addBrandStylesheet(brand) {
|
|
172
|
+
if (brand.name !== 'blackbaud') {
|
|
173
|
+
const cssPath = `https://sky.blackbaudcdn.net/static/skyux-brand-${brand.name}/${brand.version}/assets/scss/${brand.name}.css`;
|
|
174
|
+
// Create a link element via Angular's renderer to avoid SSR troubles
|
|
175
|
+
this.#brandLinkElement = this.#getRenderer().createElement('link');
|
|
176
|
+
// Add the style to the head section
|
|
177
|
+
this.#getRenderer().appendChild(this.#hostEl, this.#brandLinkElement);
|
|
178
|
+
// Set type of the link item and path to the css file
|
|
179
|
+
this.#getRenderer().setProperty(this.#brandLinkElement, 'rel', 'stylesheet');
|
|
180
|
+
this.#getRenderer().setProperty(this.#brandLinkElement, 'href', cssPath);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
#removeBrandStylesheet() {
|
|
184
|
+
if (this.#brandLinkElement) {
|
|
185
|
+
this.#getRenderer().removeChild(this.#hostEl, this.#brandLinkElement);
|
|
186
|
+
this.#brandLinkElement = undefined;
|
|
187
|
+
}
|
|
99
188
|
}
|
|
100
189
|
#addHostClass(className) {
|
|
101
|
-
this.#
|
|
190
|
+
this.#getRenderer().addClass(this.#hostEl, className);
|
|
102
191
|
}
|
|
103
192
|
#removeHostClass(className) {
|
|
104
|
-
this.#
|
|
193
|
+
this.#getRenderer().removeClass(this.#hostEl, className);
|
|
194
|
+
}
|
|
195
|
+
#getRenderer() {
|
|
196
|
+
if (!this.#renderer) {
|
|
197
|
+
throw new Error('Renderer is not initialized. Have you called the theme service `init` method?');
|
|
198
|
+
}
|
|
199
|
+
return this.#renderer;
|
|
200
|
+
}
|
|
201
|
+
#isSupportedProperty(currentSetting, current, supportedProp) {
|
|
202
|
+
return (!supportedProp ||
|
|
203
|
+
((currentSetting instanceof SkyThemeMode ||
|
|
204
|
+
currentSetting instanceof SkyThemeSpacing) &&
|
|
205
|
+
current.theme[supportedProp].includes(currentSetting)));
|
|
105
206
|
}
|
|
106
207
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: SkyThemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
107
208
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: SkyThemeService }); }
|
|
@@ -347,52 +448,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImpor
|
|
|
347
448
|
type: Input
|
|
348
449
|
}] } });
|
|
349
450
|
|
|
350
|
-
/**
|
|
351
|
-
* Defines properties of a SKY UX theme mode.
|
|
352
|
-
*/
|
|
353
|
-
class SkyThemeMode {
|
|
354
|
-
/**
|
|
355
|
-
* The preset themes available in SKY UX.
|
|
356
|
-
*/
|
|
357
|
-
static { this.presets = {
|
|
358
|
-
light: new SkyThemeMode('light', 'sky-theme-mode-light'),
|
|
359
|
-
dark: new SkyThemeMode('dark', 'sky-theme-mode-dark'),
|
|
360
|
-
}; }
|
|
361
|
-
/**
|
|
362
|
-
* Creates a new theme mode.
|
|
363
|
-
* @param name The name of the theme mode.
|
|
364
|
-
* @param hostClass The class on the host element which child components should reference when
|
|
365
|
-
* adjusting for a specified theme mode.
|
|
366
|
-
*/
|
|
367
|
-
constructor(name, hostClass) {
|
|
368
|
-
this.name = name;
|
|
369
|
-
this.hostClass = hostClass;
|
|
370
|
-
}
|
|
371
|
-
}
|
|
372
|
-
|
|
373
|
-
/**
|
|
374
|
-
* Defines properties of SKY UX theme spacing.
|
|
375
|
-
*/
|
|
376
|
-
class SkyThemeSpacing {
|
|
377
|
-
/**
|
|
378
|
-
* The preset spacing available in SKY UX.
|
|
379
|
-
*/
|
|
380
|
-
static { this.presets = {
|
|
381
|
-
standard: new SkyThemeSpacing('standard', 'sky-theme-spacing-standard'),
|
|
382
|
-
compact: new SkyThemeSpacing('compact', 'sky-theme-spacing-compact'),
|
|
383
|
-
}; }
|
|
384
|
-
/**
|
|
385
|
-
* Creates a new theme spacing.
|
|
386
|
-
* @param name The name of the theme spacing.
|
|
387
|
-
* @param hostClass The class on the host element which child components should reference when
|
|
388
|
-
* adjusting for a specified theme spacing.
|
|
389
|
-
*/
|
|
390
|
-
constructor(name, hostClass) {
|
|
391
|
-
this.name = name;
|
|
392
|
-
this.hostClass = hostClass;
|
|
393
|
-
}
|
|
394
|
-
}
|
|
395
|
-
|
|
396
451
|
/**
|
|
397
452
|
* Defines properties of a SKY UX theme.
|
|
398
453
|
*/
|
|
@@ -429,10 +484,11 @@ class SkyThemeSettings {
|
|
|
429
484
|
* @param theme The theme configuration.
|
|
430
485
|
* @param mode The theme mode.
|
|
431
486
|
*/
|
|
432
|
-
constructor(theme, mode, spacing = SkyThemeSpacing.presets.standard) {
|
|
487
|
+
constructor(theme, mode, spacing = SkyThemeSpacing.presets.standard, brand) {
|
|
433
488
|
this.theme = theme;
|
|
434
489
|
this.mode = mode;
|
|
435
490
|
this.spacing = spacing;
|
|
491
|
+
this.brand = brand;
|
|
436
492
|
}
|
|
437
493
|
}
|
|
438
494
|
|
|
@@ -499,6 +555,34 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImpor
|
|
|
499
555
|
}]
|
|
500
556
|
}] });
|
|
501
557
|
|
|
558
|
+
/**
|
|
559
|
+
* @internal
|
|
560
|
+
* Defines properties of SKY UX theme branding.
|
|
561
|
+
*/
|
|
562
|
+
class SkyThemeBrand {
|
|
563
|
+
get hostClass() {
|
|
564
|
+
return this.#hostClass || `sky-theme-brand-${this.name}`;
|
|
565
|
+
}
|
|
566
|
+
set hostClass(value) {
|
|
567
|
+
this.#hostClass = value;
|
|
568
|
+
}
|
|
569
|
+
#hostClass;
|
|
570
|
+
/**
|
|
571
|
+
* Creates a new theme brand.
|
|
572
|
+
* @param name The name of the theme brand.
|
|
573
|
+
* @param hostClass The class on the host element which child components should reference when
|
|
574
|
+
* adjusting for a specified theme brand. This defaults to `sky-theme-brand-<name>
|
|
575
|
+
*/
|
|
576
|
+
constructor(name, version, hostClass) {
|
|
577
|
+
this.name = name;
|
|
578
|
+
this.version = version;
|
|
579
|
+
this.hostClass = hostClass;
|
|
580
|
+
if (!/\d+\.\d+\.\d+(?:-(?:alpha|beta|rc)\.\d)*$/.test(version)) {
|
|
581
|
+
throw new Error(`Invalid version format "${version}" for theme brand "${name}".`);
|
|
582
|
+
}
|
|
583
|
+
}
|
|
584
|
+
}
|
|
585
|
+
|
|
502
586
|
class SkyThemeComponentClassDirective {
|
|
503
587
|
#changeDetector;
|
|
504
588
|
#themeService;
|
|
@@ -537,7 +621,10 @@ class SkyAppViewportService {
|
|
|
537
621
|
#reserveItems;
|
|
538
622
|
#conditionallyReserveItems;
|
|
539
623
|
#document;
|
|
624
|
+
#ngZone;
|
|
625
|
+
// Observe elements crossing the browser's viewport boundaries.
|
|
540
626
|
#intersectionObserver;
|
|
627
|
+
#reservedSpaces;
|
|
541
628
|
constructor() {
|
|
542
629
|
/**
|
|
543
630
|
* Updated when the viewport becomes visible. While the page is rendered, the
|
|
@@ -552,18 +639,15 @@ class SkyAppViewportService {
|
|
|
552
639
|
this.#reserveItems = new Map();
|
|
553
640
|
this.#conditionallyReserveItems = new Map();
|
|
554
641
|
this.#document = inject(DOCUMENT);
|
|
555
|
-
this.#
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
}
|
|
564
|
-
root: this.#document,
|
|
565
|
-
threshold: Array.from({ length: 11 }, (_, i) => i / 10),
|
|
566
|
-
});
|
|
642
|
+
this.#ngZone = inject(NgZone);
|
|
643
|
+
// Observe elements crossing the browser's viewport boundaries.
|
|
644
|
+
this.#intersectionObserver = this.#ngZone.runOutsideAngular(() => new IntersectionObserver(() => this.#ngZone.run(() => this.#updateViewportArea()), { threshold: Array.from({ length: 101 }, (_, i) => i / 100) }));
|
|
645
|
+
this.#reservedSpaces = {
|
|
646
|
+
bottom: 0,
|
|
647
|
+
left: 0,
|
|
648
|
+
right: 0,
|
|
649
|
+
top: 0,
|
|
650
|
+
};
|
|
567
651
|
const onScroll = () => {
|
|
568
652
|
if (this.#conditionallyReserveItems.size > 0) {
|
|
569
653
|
this.#updateViewportArea();
|
|
@@ -571,6 +655,10 @@ class SkyAppViewportService {
|
|
|
571
655
|
};
|
|
572
656
|
this.#document.addEventListener('scroll', onScroll);
|
|
573
657
|
inject(DestroyRef).onDestroy(() => {
|
|
658
|
+
/* istanbul ignore next */
|
|
659
|
+
if (this.#updateRequest !== undefined) {
|
|
660
|
+
cancelAnimationFrame(this.#updateRequest);
|
|
661
|
+
}
|
|
574
662
|
this.#intersectionObserver.disconnect();
|
|
575
663
|
this.#document.removeEventListener('scroll', onScroll);
|
|
576
664
|
});
|
|
@@ -582,8 +670,7 @@ class SkyAppViewportService {
|
|
|
582
670
|
reserveSpace(args) {
|
|
583
671
|
const item = {
|
|
584
672
|
...args,
|
|
585
|
-
active:
|
|
586
|
-
this.#isElementVisible(args.reserveForElement),
|
|
673
|
+
active: this.#isElementVisible({ ...args, active: false }),
|
|
587
674
|
};
|
|
588
675
|
this.#reserveItems.set(args.id, item);
|
|
589
676
|
this.#watchVisibility(item);
|
|
@@ -604,23 +691,24 @@ class SkyAppViewportService {
|
|
|
604
691
|
}
|
|
605
692
|
#updateViewportArea() {
|
|
606
693
|
this.#updateRequest ??= requestAnimationFrame(() => {
|
|
694
|
+
this.#updateRequest = undefined;
|
|
607
695
|
const reservedSpaces = {
|
|
608
696
|
bottom: 0,
|
|
609
697
|
left: 0,
|
|
610
698
|
right: 0,
|
|
611
699
|
top: 0,
|
|
612
700
|
};
|
|
613
|
-
for (const
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
reservedSpaces[position] += size;
|
|
701
|
+
for (const args of this.#reserveItems.values()) {
|
|
702
|
+
args.active = this.#isElementVisible(args, reservedSpaces);
|
|
703
|
+
if (args.active) {
|
|
704
|
+
reservedSpaces[args.position] += args.size;
|
|
617
705
|
}
|
|
618
706
|
}
|
|
707
|
+
this.#reservedSpaces = reservedSpaces;
|
|
619
708
|
const documentElementStyle = this.#document.documentElement.style;
|
|
620
709
|
for (const [position, size] of Object.entries(reservedSpaces)) {
|
|
621
710
|
documentElementStyle.setProperty(`--sky-viewport-${position}`, size + 'px');
|
|
622
711
|
}
|
|
623
|
-
this.#updateRequest = undefined;
|
|
624
712
|
});
|
|
625
713
|
}
|
|
626
714
|
#watchVisibility(item) {
|
|
@@ -629,17 +717,45 @@ class SkyAppViewportService {
|
|
|
629
717
|
this.#intersectionObserver.observe(item.reserveForElement);
|
|
630
718
|
}
|
|
631
719
|
}
|
|
632
|
-
#isElementVisible(
|
|
633
|
-
|
|
634
|
-
|
|
720
|
+
#isElementVisible(args, reservedSpaces = this
|
|
721
|
+
.#reservedSpaces) {
|
|
722
|
+
if (!args.reserveForElement) {
|
|
723
|
+
return true;
|
|
724
|
+
}
|
|
725
|
+
const rect = args.reserveForElement.getBoundingClientRect();
|
|
726
|
+
if (!rect || !rect.height || !rect.width) {
|
|
727
|
+
return false;
|
|
728
|
+
}
|
|
729
|
+
const midpoint = {
|
|
730
|
+
x: rect.x + Math.floor(rect.width / 2),
|
|
731
|
+
y: rect.y + Math.floor(rect.height / 2),
|
|
732
|
+
};
|
|
733
|
+
if (
|
|
635
734
|
// Vertically in view
|
|
636
|
-
|
|
637
|
-
|
|
735
|
+
midpoint.y <= window.innerHeight &&
|
|
736
|
+
midpoint.y >= 0 &&
|
|
638
737
|
// Horizontally in view
|
|
639
|
-
|
|
640
|
-
|
|
738
|
+
midpoint.x <= window.innerWidth &&
|
|
739
|
+
midpoint.x >= 0) {
|
|
641
740
|
// Element is not hidden by another element
|
|
642
|
-
|
|
741
|
+
if (args.reserveForElement.contains(this.#document.elementFromPoint(midpoint.x, midpoint.y))) {
|
|
742
|
+
return true;
|
|
743
|
+
}
|
|
744
|
+
// Check if the item's midpoint is visible based on current reserved spaces.
|
|
745
|
+
// Assumes reserved spaces are intended to be additive and not overlapping.
|
|
746
|
+
const threshold = reservedSpaces[args.position];
|
|
747
|
+
switch (args.position) {
|
|
748
|
+
case 'top':
|
|
749
|
+
return midpoint.y >= threshold;
|
|
750
|
+
case 'right':
|
|
751
|
+
return midpoint.x <= window.innerWidth - threshold;
|
|
752
|
+
case 'bottom':
|
|
753
|
+
return midpoint.y <= window.innerHeight - threshold;
|
|
754
|
+
case 'left':
|
|
755
|
+
return midpoint.x >= threshold;
|
|
756
|
+
}
|
|
757
|
+
}
|
|
758
|
+
return false;
|
|
643
759
|
}
|
|
644
760
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: SkyAppViewportService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
645
761
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: SkyAppViewportService, providedIn: 'root' }); }
|
|
@@ -669,5 +785,5 @@ function provideInitialTheme(name = 'default', options) {
|
|
|
669
785
|
* Generated bundle index. Do not edit.
|
|
670
786
|
*/
|
|
671
787
|
|
|
672
|
-
export { SkyAppStyleLoader, SkyAppViewportService, SkyTheme, SkyThemeComponentClassDirective, SkyThemeIconManifestService, SkyThemeMode, SkyThemeModule, SkyThemeService, SkyThemeSettings, SkyThemeSpacing, provideInitialTheme, SkyThemeDirective as λ1, SkyThemeClassDirective as λ2, SkyThemeIfDirective as λ3 };
|
|
788
|
+
export { SkyAppStyleLoader, SkyAppViewportService, SkyTheme, SkyThemeBrand, SkyThemeComponentClassDirective, SkyThemeIconManifestService, SkyThemeMode, SkyThemeModule, SkyThemeService, SkyThemeSettings, SkyThemeSpacing, provideInitialTheme, SkyThemeDirective as λ1, SkyThemeClassDirective as λ2, SkyThemeIfDirective as λ3 };
|
|
673
789
|
//# sourceMappingURL=skyux-theme.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skyux-theme.mjs","sources":["../../../../../libs/components/theme/src/lib/icons/icon-manifest.service.ts","../../../../../libs/components/theme/src/lib/theming/theme.service.ts","../../../../../libs/components/theme/src/lib/style-loader.ts","../../../../../libs/components/theme/src/lib/theming/theme-class.directive.ts","../../../../../libs/components/theme/src/lib/theming/theme-if.directive.ts","../../../../../libs/components/theme/src/lib/theming/theme-mode.ts","../../../../../libs/components/theme/src/lib/theming/theme-spacing.ts","../../../../../libs/components/theme/src/lib/theming/theme.ts","../../../../../libs/components/theme/src/lib/theming/theme-settings.ts","../../../../../libs/components/theme/src/lib/theming/theme.directive.ts","../../../../../libs/components/theme/src/lib/theme.module.ts","../../../../../libs/components/theme/src/lib/theming/theme-component-class.directive.ts","../../../../../libs/components/theme/src/lib/viewport/viewport.service.ts","../../../../../libs/components/theme/src/lib/providers/provide-initial-theme.ts","../../../../../libs/components/theme/src/skyux-theme.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { getIconManifest } from '@skyux/icons';\n\nimport { SkyThemeIconManifest } from './icon-manifest';\n\n/**\n * Provides a method for retrieving metadata about the SKY UX icon font.\n * @internal\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyThemeIconManifestService {\n /**\n * Gets metadata about the SKY UX icon font.\n */\n public getManifest(): SkyThemeIconManifest {\n return getIconManifest();\n }\n}\n","import { Injectable, Renderer2 } from '@angular/core';\n\nimport { Observable, ReplaySubject } from 'rxjs';\n\nimport { SkyThemeSettings } from './theme-settings';\nimport { SkyThemeSettingsChange } from './theme-settings-change';\n\n/**\n * Provides methods for updating and handling changes to the current theme.\n */\n@Injectable()\nexport class SkyThemeService {\n /**\n * Notifies consumers when the current theme settings have changed.\n */\n public get settingsChange(): Observable<SkyThemeSettingsChange> {\n return this.#_settingsObs;\n }\n\n #current: SkyThemeSettings | undefined;\n\n #hostEl: any | undefined;\n\n #renderer: Renderer2 | undefined;\n\n #settings: ReplaySubject<SkyThemeSettingsChange>;\n\n #_settingsObs: Observable<SkyThemeSettingsChange>;\n\n constructor() {\n this.#settings = new ReplaySubject<SkyThemeSettingsChange>(1);\n this.#_settingsObs = this.#settings.asObservable();\n }\n\n /**\n * Initializes the theme service with the specified parameters. This should only be called\n * from a host component that provides its own theme to child components.\n * @param hostEl The host element under which themed components are rendered.\n * @param renderer A Renderer2 instance for updating the host element with theme changes.\n * @param theme The initial theme.\n */\n public init(hostEl: any, renderer: Renderer2, theme: SkyThemeSettings): void {\n this.#hostEl = hostEl;\n this.#renderer = renderer;\n\n this.setTheme(theme);\n }\n\n /**\n * Destroys the current theme service. This should only be called from a host component that\n * provides its own theme to child components.\n */\n public destroy(): void {\n this.#settings.complete();\n\n this.#hostEl = this.#renderer = undefined;\n }\n\n /**\n * Updates the current theme settings.\n * @param settings The new theme settings to apply.\n */\n public setTheme(settings: SkyThemeSettings): void {\n const previous = this.#current;\n\n this.#applyThemeClass(previous, settings, 'theme');\n this.#applyThemeClass(previous, settings, 'mode', 'supportedModes');\n this.#applyThemeClass(previous, settings, 'spacing', 'supportedSpacing');\n\n this.#settings.next({\n currentSettings: settings,\n previousSettings: previous,\n });\n\n this.#current = settings;\n }\n\n #applyThemeClass(\n previous: SkyThemeSettings | undefined,\n current: SkyThemeSettings,\n prop: 'theme' | 'mode' | 'spacing',\n supportedProp?: 'supportedModes' | 'supportedSpacing',\n ): void {\n const currentSetting = current[prop];\n\n const previousClass = previous?.[prop].hostClass;\n const currentClass = currentSetting.hostClass;\n\n const classChanged = !previous || previousClass !== currentClass;\n\n if (classChanged) {\n if (previousClass) {\n this.#removeHostClass(previousClass);\n }\n\n if (\n !supportedProp ||\n current.theme[supportedProp].indexOf(currentSetting) >= 0\n ) {\n this.#addHostClass(currentClass);\n }\n }\n }\n\n #addHostClass(className: string): void {\n this.#renderer!.addClass(this.#hostEl, className);\n }\n\n #removeHostClass(className: string): void {\n this.#renderer!.removeClass(this.#hostEl, className);\n }\n}\n","import { Injectable, Optional } from '@angular/core';\n\nimport FontFaceObserver from 'fontfaceobserver';\nimport { take } from 'rxjs/operators';\n\nimport { SkyThemeService } from './theming/theme.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyAppStyleLoader {\n public static readonly LOAD_TIMEOUT = 3000;\n public isLoaded = false;\n\n #themeSvc: SkyThemeService | undefined;\n\n constructor(@Optional() themeSvc?: SkyThemeService) {\n this.#themeSvc = themeSvc;\n }\n\n public loadStyles(): Promise<any> {\n if (this.isLoaded) {\n return Promise.resolve();\n }\n\n let themePromise: Promise<any>;\n\n if (this.#themeSvc) {\n themePromise = this.#themeSvc.settingsChange.pipe(take(1)).toPromise();\n } else {\n themePromise = Promise.resolve();\n }\n\n const fontAwesome = new FontFaceObserver('FontAwesome');\n const skyuxIcons = new FontFaceObserver('skyux-icons');\n const blackbaudSans = new FontFaceObserver('BLKB Sans');\n\n return Promise.all([\n // Specify a character for FontAwesome since some browsers will fail to detect\n // when the font is loaded unless a known character with a different width\n // than the default is not specified.\n fontAwesome.load('\\uf0fc', SkyAppStyleLoader.LOAD_TIMEOUT),\n skyuxIcons.load('\\ue999', SkyAppStyleLoader.LOAD_TIMEOUT),\n blackbaudSans.load(undefined, SkyAppStyleLoader.LOAD_TIMEOUT),\n themePromise,\n ])\n .then(() => {\n this.isLoaded = true;\n })\n .catch((error) => {\n // Errors loading the font should not stop the page from rendering.\n // Passing the error along in case the client wants to do something with it.\n return Promise.resolve({\n error,\n });\n });\n }\n}\n","import {\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n Optional,\n Renderer2,\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyThemeSettings } from './theme-settings';\nimport { SkyThemeService } from './theme.service';\n\ntype SkyThemeClassMap = Record<string, string>;\n\n/**\n * Component to add classes conditionally based on the current theme.\n *\n * If the directive is within a `skyTheme` directive, it uses settings from that directive.\n */\n@Directive({\n selector: '[skyThemeClass]',\n standalone: false,\n})\nexport class SkyThemeClassDirective implements OnDestroy {\n /**\n * The HTML class attribute.\n *\n * @param value\n */\n @Input()\n public set class(value: string | undefined) {\n this.#removeInitialClasses(this.#initialClasses);\n this.#initialClasses = typeof value === 'string' ? value.split(/\\s+/) : [];\n this.#applyInitialClasses(this.#initialClasses);\n this.#applySkyThemeClassMap(this.#skyThemeClassMap);\n }\n\n /**\n * An object with class names in a string for keys, and theme names (e.g. 'default' or 'modern') as values.\n *\n * @param value\n */\n @Input()\n public set skyThemeClass(value: SkyThemeClassMap | undefined) {\n this.#removeSkyThemeClassMap(this.#skyThemeClassMap);\n this.#applyInitialClasses(this.#initialClasses);\n\n this.#skyThemeClassMap = value as SkyThemeClassMap;\n\n /* istanbul ignore else */\n if (this.#skyThemeClassMap) {\n this.#applySkyThemeClassMap(this.#skyThemeClassMap);\n }\n }\n\n set #themeSettings(settings: SkyThemeSettings) {\n this.#currentTheme = settings;\n this.#removeSkyThemeClassMap(this.#skyThemeClassMap);\n this.#applyInitialClasses(this.#initialClasses);\n this.#applySkyThemeClassMap(this.#skyThemeClassMap);\n }\n\n #currentTheme: SkyThemeSettings | undefined;\n #ngUnsubscribe = new Subject<void>();\n #initialClasses: string[] = [];\n #skyThemeClassMap: SkyThemeClassMap | undefined;\n\n #ngEl: ElementRef;\n #renderer: Renderer2;\n\n constructor(\n ngEl: ElementRef,\n renderer: Renderer2,\n @Optional() themeSvc?: SkyThemeService,\n ) {\n this.#ngEl = ngEl;\n this.#renderer = renderer;\n if (themeSvc) {\n themeSvc.settingsChange\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((settingsChange) => {\n this.#themeSettings = settingsChange.currentSettings;\n });\n }\n }\n\n public ngOnDestroy(): void {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n\n #applyInitialClasses(classes: string[]): void {\n /* istanbul ignore else */\n if (classes) {\n classes.forEach((className) => this.#toggleClass(className, true));\n }\n }\n\n #applySkyThemeClassMap(skyThemeClassMap: SkyThemeClassMap | undefined): void {\n if (skyThemeClassMap) {\n const themeName = this.#currentTheme?.theme.name || 'default';\n Object.keys(skyThemeClassMap).forEach((className) => {\n const enabled = themeName === skyThemeClassMap[className];\n this.#toggleClass(className, enabled);\n });\n }\n }\n\n #removeInitialClasses(classes: string[]): void {\n /* istanbul ignore else */\n if (classes) {\n classes.forEach((className) => this.#toggleClass(className, false));\n }\n }\n\n #removeSkyThemeClassMap(\n skyThemeClassMap: SkyThemeClassMap | undefined,\n ): void {\n if (skyThemeClassMap) {\n Object.keys(skyThemeClassMap).forEach((className) =>\n this.#toggleClass(className, false),\n );\n }\n }\n\n #toggleClass(className: string, enabled: boolean): void {\n className = className.trim();\n /* istanbul ignore else */\n if (className) {\n className.split(/\\s+/g).forEach((classNameItem) => {\n if (enabled) {\n this.#renderer.addClass(this.#ngEl.nativeElement, classNameItem);\n } else {\n this.#renderer.removeClass(this.#ngEl.nativeElement, classNameItem);\n }\n });\n }\n }\n}\n","import {\n ChangeDetectorRef,\n Directive,\n Input,\n OnDestroy,\n Optional,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyThemeSettings } from './theme-settings';\nimport { SkyThemeService } from './theme.service';\n\n/**\n * Component that works like `ngIf` to show markup for matching theme.\n *\n * If the directive is within a `skyTheme` directive, it uses settings from that directive.\n */\n@Directive({\n selector: '[skyThemeIf]',\n standalone: false,\n})\nexport class SkyThemeIfDirective implements OnDestroy {\n /**\n * A string that should match the name of a theme, `'default'` or `'modern'`.\n *\n * @param value\n */\n @Input()\n public set skyThemeIf(value: 'default' | 'modern' | undefined) {\n this.#context = value;\n this.#updateView();\n }\n\n #context: string | undefined;\n #currentTheme: SkyThemeSettings | undefined;\n #ngUnsubscribe = new Subject<void>();\n #hasView = false;\n\n #templateRef: TemplateRef<unknown>;\n #viewContainer: ViewContainerRef;\n\n constructor(\n templateRef: TemplateRef<unknown>,\n viewContainer: ViewContainerRef,\n changeDetector: ChangeDetectorRef,\n @Optional() themeSvc?: SkyThemeService,\n ) {\n this.#templateRef = templateRef;\n this.#viewContainer = viewContainer;\n if (themeSvc) {\n themeSvc.settingsChange\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((settingsChange) => {\n this.#currentTheme = settingsChange.currentSettings;\n this.#updateView();\n\n // Components that use OnPush change detection will not automatically\n // check for changes when created as a result of a theme change if\n // it happens outside of an Angular change detection cycle. This\n // ensures change detection runs on those components.\n changeDetector.markForCheck();\n });\n }\n }\n\n public ngOnDestroy(): void {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n\n #updateView(): void {\n const themeName = this.#currentTheme?.theme.name || 'default';\n const condition = this.#context && themeName === this.#context;\n if (condition && !this.#hasView) {\n this.#viewContainer.createEmbeddedView(this.#templateRef);\n this.#hasView = true;\n } else if (!condition && this.#hasView) {\n this.#viewContainer.clear();\n this.#hasView = false;\n }\n }\n}\n","/**\n * Defines properties of a SKY UX theme mode.\n */\nexport class SkyThemeMode {\n /**\n * The preset themes available in SKY UX.\n */\n public static readonly presets = {\n light: new SkyThemeMode('light', 'sky-theme-mode-light'),\n dark: new SkyThemeMode('dark', 'sky-theme-mode-dark'),\n };\n\n /**\n * Creates a new theme mode.\n * @param name The name of the theme mode.\n * @param hostClass The class on the host element which child components should reference when\n * adjusting for a specified theme mode.\n */\n constructor(\n public readonly name: string,\n public readonly hostClass: string,\n ) {}\n}\n","/**\n * Defines properties of SKY UX theme spacing.\n */\nexport class SkyThemeSpacing {\n /**\n * The preset spacing available in SKY UX.\n */\n public static readonly presets = {\n standard: new SkyThemeSpacing('standard', 'sky-theme-spacing-standard'),\n compact: new SkyThemeSpacing('compact', 'sky-theme-spacing-compact'),\n };\n\n /**\n * Creates a new theme spacing.\n * @param name The name of the theme spacing.\n * @param hostClass The class on the host element which child components should reference when\n * adjusting for a specified theme spacing.\n */\n constructor(\n public readonly name: string,\n public readonly hostClass: string,\n ) {}\n}\n","import { SkyThemeMode } from './theme-mode';\nimport { SkyThemeSpacing } from './theme-spacing';\n\n/**\n * Defines properties of a SKY UX theme.\n */\nexport class SkyTheme {\n /**\n * The preset themes available in SKY UX.\n */\n public static readonly presets = {\n default: new SkyTheme(\n 'default',\n 'sky-theme-default',\n [SkyThemeMode.presets.light],\n [SkyThemeSpacing.presets.standard],\n ),\n modern: new SkyTheme(\n 'modern',\n 'sky-theme-modern',\n [SkyThemeMode.presets.light, SkyThemeMode.presets.dark],\n [SkyThemeSpacing.presets.standard, SkyThemeSpacing.presets.compact],\n ),\n };\n\n /**\n * Creates a new theme.\n * @param name The name of the theme.\n * @param hostClass The class on the host element which child components should reference when\n * adjusting for a specified theme.\n * @param supportedModes An array of modes supported by the theme.\n * @param supportedSpacing An array of spacing modes supported by the theme.\n */\n constructor(\n public readonly name: string,\n public readonly hostClass: string,\n public readonly supportedModes: SkyThemeMode[],\n public readonly supportedSpacing = [SkyThemeSpacing.presets.standard],\n ) {}\n}\n","import { SkyTheme } from './theme';\nimport { SkyThemeMode } from './theme-mode';\nimport { SkyThemeSpacing } from './theme-spacing';\n\n/**\n * Specifies the theme and mode to be applied to a host element.\n */\nexport class SkyThemeSettings {\n /**\n * Creates a new SkyThemeSettings instance.\n * @param theme The theme configuration.\n * @param mode The theme mode.\n */\n constructor(\n public readonly theme: SkyTheme,\n public readonly mode: SkyThemeMode,\n public readonly spacing = SkyThemeSpacing.presets.standard,\n ) {}\n}\n","import {\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n Renderer2,\n} from '@angular/core';\n\nimport { SkyTheme } from './theme';\nimport { SkyThemeMode } from './theme-mode';\nimport { SkyThemeSettings } from './theme-settings';\nimport { SkyThemeService } from './theme.service';\n\nconst defaultTheme = new SkyThemeSettings(\n SkyTheme.presets.default,\n SkyThemeMode.presets.light,\n);\n\n/**\n * Creates a new instance of `SkyThemeService` to allow a container\n * to have its own theme.\n */\n@Directive({\n selector: '[skyTheme]',\n providers: [SkyThemeService],\n standalone: false,\n})\nexport class SkyThemeDirective implements OnInit, OnDestroy {\n @Input()\n public set skyTheme(value: SkyThemeSettings | undefined) {\n this.skyThemeOrDefault = value || defaultTheme;\n\n if (this.#initialized) {\n this.#themeSvc.setTheme(this.skyThemeOrDefault);\n }\n }\n\n public skyThemeOrDefault = defaultTheme;\n\n #initialized = false;\n\n #elRef: ElementRef;\n #renderer: Renderer2;\n #themeSvc: SkyThemeService;\n\n constructor(\n elRef: ElementRef,\n renderer: Renderer2,\n themeSvc: SkyThemeService,\n ) {\n this.#elRef = elRef;\n this.#renderer = renderer;\n this.#themeSvc = themeSvc;\n }\n\n public ngOnInit(): void {\n this.#themeSvc.init(\n this.#elRef.nativeElement,\n this.#renderer,\n this.skyThemeOrDefault,\n );\n\n this.#initialized = true;\n }\n\n public ngOnDestroy(): void {\n this.#themeSvc.destroy();\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { SkyThemeClassDirective } from './theming/theme-class.directive';\nimport { SkyThemeIfDirective } from './theming/theme-if.directive';\nimport { SkyThemeDirective } from './theming/theme.directive';\n\n@NgModule({\n declarations: [\n SkyThemeClassDirective,\n SkyThemeDirective,\n SkyThemeIfDirective,\n ],\n exports: [SkyThemeClassDirective, SkyThemeDirective, SkyThemeIfDirective],\n})\nexport class SkyThemeModule {}\n","import {\n ChangeDetectorRef,\n Directive,\n HostBinding,\n inject,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { SkyThemeService } from '../theming/theme.service';\n\n@Directive({\n selector: '[skyThemeClass]',\n standalone: true,\n})\nexport class SkyThemeComponentClassDirective {\n @HostBinding('class')\n public theme = 'sky-cmp-theme-default';\n\n #changeDetector = inject(ChangeDetectorRef);\n #themeService = inject(SkyThemeService, { optional: true });\n\n constructor() {\n this.#themeService?.settingsChange\n .pipe(takeUntilDestroyed())\n .subscribe((change) => {\n this.theme = `sky-cmp-theme-${change.currentSettings.theme.name}`;\n this.#changeDetector.markForCheck();\n });\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { DestroyRef, Injectable, inject } from '@angular/core';\n\nimport { ReplaySubject } from 'rxjs';\n\nimport { SkyAppViewportReserveArgs } from './viewport-reserve-args';\nimport { SkyAppViewportReservedPositionType } from './viewport-reserve-position-type';\n\ntype ReserveItemType = SkyAppViewportReserveArgs & {\n active: boolean;\n};\n\n/**\n * Provides information about the state of the application's viewport.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyAppViewportService {\n /**\n * Updated when the viewport becomes visible. While the page is rendered, the\n * viewport may remain hidden as fonts and styles are loaded asynchronously;\n * this is done to avoid a FOUC (Flash Of Unstyled Content) before the fonts\n * and styles are ready.\n */\n public visible = new ReplaySubject<boolean>(1);\n\n // ESLint doesn't recognize how this is used.\n // eslint-disable-next-line no-unused-private-class-members\n #updateRequest: number | undefined = undefined;\n readonly #reserveItems = new Map<string, ReserveItemType>();\n readonly #conditionallyReserveItems = new Map<Element, ReserveItemType>();\n readonly #document = inject(DOCUMENT);\n readonly #intersectionObserver = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n const item = this.#conditionallyReserveItems.get(entry.target);\n if (item) {\n item.active = entry.isIntersecting;\n }\n });\n this.#updateViewportArea();\n },\n {\n root: this.#document,\n threshold: Array.from({ length: 11 }, (_, i) => i / 10),\n },\n );\n\n constructor() {\n const onScroll = (): void => {\n if (this.#conditionallyReserveItems.size > 0) {\n this.#updateViewportArea();\n }\n };\n this.#document.addEventListener('scroll', onScroll);\n inject(DestroyRef).onDestroy(() => {\n this.#intersectionObserver.disconnect();\n this.#document.removeEventListener('scroll', onScroll);\n });\n }\n\n /**\n * Reserves space for components docked to the left, top, right, or bottom of the viewport.\n * @param args\n */\n public reserveSpace(args: SkyAppViewportReserveArgs): void {\n const item = {\n ...args,\n active:\n !args.reserveForElement ||\n this.#isElementVisible(args.reserveForElement),\n };\n this.#reserveItems.set(args.id, item);\n this.#watchVisibility(item);\n this.#updateViewportArea();\n }\n\n /**\n * Removes reserved space for a component by the ID provided when it was reserved.\n * @param id\n */\n public unreserveSpace(id: string): void {\n const args = this.#reserveItems.get(id);\n if (args?.reserveForElement) {\n this.#intersectionObserver.unobserve(args.reserveForElement);\n this.#conditionallyReserveItems.delete(args.reserveForElement);\n }\n this.#reserveItems.delete(id);\n this.#updateViewportArea();\n }\n\n #updateViewportArea(): void {\n this.#updateRequest ??= requestAnimationFrame(() => {\n const reservedSpaces: {\n [key in SkyAppViewportReservedPositionType]: number;\n } = {\n bottom: 0,\n left: 0,\n right: 0,\n top: 0,\n };\n\n for (const {\n position,\n size,\n active,\n reserveForElement,\n } of this.#reserveItems.values()) {\n if (\n active &&\n (!reserveForElement || this.#isElementVisible(reserveForElement))\n ) {\n reservedSpaces[position] += size;\n }\n }\n\n const documentElementStyle = this.#document.documentElement.style;\n\n for (const [position, size] of Object.entries(reservedSpaces)) {\n documentElementStyle.setProperty(\n `--sky-viewport-${position}`,\n size + 'px',\n );\n }\n\n this.#updateRequest = undefined;\n });\n }\n\n #watchVisibility(item: ReserveItemType): void {\n if (item.reserveForElement) {\n this.#conditionallyReserveItems.set(item.reserveForElement, item);\n this.#intersectionObserver.observe(item.reserveForElement);\n }\n }\n\n #isElementVisible(element: HTMLElement): boolean {\n const rect = element.getBoundingClientRect();\n return (\n // Vertically in view\n rect.y <= window.innerHeight &&\n rect.y >= 0 &&\n // Horizontally in view\n rect.x <= window.innerWidth &&\n rect.x >= 0 &&\n // Element is not hidden by another element\n element.contains(this.#document.elementFromPoint(rect.x + 1, rect.y + 1))\n );\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n EnvironmentProviders,\n RendererFactory2,\n inject,\n makeEnvironmentProviders,\n provideAppInitializer,\n} from '@angular/core';\n\nimport { SkyTheme } from '../theming/theme';\nimport { SkyThemeMode } from '../theming/theme-mode';\nimport { SkyThemeSettings } from '../theming/theme-settings';\nimport { SkyThemeSpacing } from '../theming/theme-spacing';\nimport { SkyThemeService } from '../theming/theme.service';\n\nexport function provideInitialTheme(\n name: keyof typeof SkyTheme.presets = 'default',\n options?: {\n mode?: keyof typeof SkyThemeMode.presets;\n spacing?: keyof typeof SkyThemeSpacing.presets;\n },\n): EnvironmentProviders {\n return makeEnvironmentProviders([\n SkyThemeService,\n provideAppInitializer(() => {\n const initializerFn = ((\n themeService: SkyThemeService,\n doc: Document,\n rendererFactory: RendererFactory2,\n ) => {\n return () => {\n themeService.init(\n doc.body,\n rendererFactory.createRenderer(null, null),\n new SkyThemeSettings(\n SkyTheme.presets[name],\n SkyThemeMode.presets[options?.mode ?? 'light'],\n SkyThemeSpacing.presets[options?.spacing ?? 'standard'],\n ),\n );\n };\n })(inject(SkyThemeService), inject(DOCUMENT), inject(RendererFactory2));\n return initializerFn();\n }),\n ]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.SkyThemeService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"skyux-theme.mjs","sources":["../../../../../libs/components/theme/src/lib/icons/icon-manifest.service.ts","../../../../../libs/components/theme/src/lib/theming/theme-mode.ts","../../../../../libs/components/theme/src/lib/theming/theme-spacing.ts","../../../../../libs/components/theme/src/lib/theming/theme.service.ts","../../../../../libs/components/theme/src/lib/style-loader.ts","../../../../../libs/components/theme/src/lib/theming/theme-class.directive.ts","../../../../../libs/components/theme/src/lib/theming/theme-if.directive.ts","../../../../../libs/components/theme/src/lib/theming/theme.ts","../../../../../libs/components/theme/src/lib/theming/theme-settings.ts","../../../../../libs/components/theme/src/lib/theming/theme.directive.ts","../../../../../libs/components/theme/src/lib/theme.module.ts","../../../../../libs/components/theme/src/lib/theming/theme-brand.ts","../../../../../libs/components/theme/src/lib/theming/theme-component-class.directive.ts","../../../../../libs/components/theme/src/lib/viewport/viewport.service.ts","../../../../../libs/components/theme/src/lib/providers/provide-initial-theme.ts","../../../../../libs/components/theme/src/skyux-theme.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { getIconManifest } from '@skyux/icons';\n\nimport { SkyThemeIconManifest } from './icon-manifest';\n\n/**\n * Provides a method for retrieving metadata about the SKY UX icon font.\n * @internal\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyThemeIconManifestService {\n /**\n * Gets metadata about the SKY UX icon font.\n */\n public getManifest(): SkyThemeIconManifest {\n return getIconManifest();\n }\n}\n","/**\n * Defines properties of a SKY UX theme mode.\n */\nexport class SkyThemeMode {\n /**\n * The preset themes available in SKY UX.\n */\n public static readonly presets = {\n light: new SkyThemeMode('light', 'sky-theme-mode-light'),\n dark: new SkyThemeMode('dark', 'sky-theme-mode-dark'),\n };\n\n /**\n * Creates a new theme mode.\n * @param name The name of the theme mode.\n * @param hostClass The class on the host element which child components should reference when\n * adjusting for a specified theme mode.\n */\n constructor(\n public readonly name: string,\n public readonly hostClass: string,\n ) {}\n}\n","/**\n * Defines properties of SKY UX theme spacing.\n */\nexport class SkyThemeSpacing {\n /**\n * The preset spacing available in SKY UX.\n */\n public static readonly presets = {\n standard: new SkyThemeSpacing('standard', 'sky-theme-spacing-standard'),\n compact: new SkyThemeSpacing('compact', 'sky-theme-spacing-compact'),\n };\n\n /**\n * Creates a new theme spacing.\n * @param name The name of the theme spacing.\n * @param hostClass The class on the host element which child components should reference when\n * adjusting for a specified theme spacing.\n */\n constructor(\n public readonly name: string,\n public readonly hostClass: string,\n ) {}\n}\n","import { Injectable, Renderer2 } from '@angular/core';\n\nimport { Observable, ReplaySubject } from 'rxjs';\n\nimport { SkyTheme } from './theme';\nimport { SkyThemeBrand } from './theme-brand';\nimport { SkyThemeMode } from './theme-mode';\nimport { SkyThemeSettings } from './theme-settings';\nimport { SkyThemeSettingsChange } from './theme-settings-change';\nimport { SkyThemeSpacing } from './theme-spacing';\n\n/**\n * Provides methods for updating and handling changes to the current theme.\n */\n@Injectable()\nexport class SkyThemeService {\n /**\n * Notifies consumers when the current theme settings have changed.\n */\n public get settingsChange(): Observable<SkyThemeSettingsChange> {\n return this.#_settingsObs;\n }\n\n #current: SkyThemeSettings | undefined;\n\n #brandLinkElement: HTMLLinkElement | undefined;\n\n #hostEl: any | undefined;\n\n #renderer: Renderer2 | undefined;\n\n #settings: ReplaySubject<SkyThemeSettingsChange>;\n\n #_settingsObs: Observable<SkyThemeSettingsChange>;\n\n constructor() {\n this.#settings = new ReplaySubject<SkyThemeSettingsChange>(1);\n this.#_settingsObs = this.#settings.asObservable();\n }\n\n /**\n * Initializes the theme service with the specified parameters. This should only be called\n * from a host component that provides its own theme to child components.\n * @param hostEl The host element under which themed components are rendered.\n * @param renderer A Renderer2 instance for updating the host element with theme changes.\n * @param theme The initial theme.\n */\n public init(hostEl: any, renderer: Renderer2, theme: SkyThemeSettings): void {\n this.#hostEl = hostEl;\n this.#renderer = renderer;\n\n this.setTheme(theme);\n }\n\n /**\n * Destroys the current theme service. This should only be called from a host component that\n * provides its own theme to child components.\n */\n public destroy(): void {\n this.#settings.complete();\n\n this.#hostEl = this.#renderer = undefined;\n }\n\n /**\n * Updates the current theme settings.\n * @param settings The new theme settings to apply.\n */\n public setTheme(settings: SkyThemeSettings): void {\n const previous = this.#current;\n\n this.#applyThemeClass(previous, settings, 'theme');\n this.#applyThemeClass(previous, settings, 'mode', 'supportedModes');\n this.#applyThemeClass(previous, settings, 'spacing', 'supportedSpacing');\n this.#applyThemeClass(previous, settings, 'brand');\n\n this.#settings.next({\n currentSettings: settings,\n previousSettings: previous,\n });\n\n this.#current = settings;\n }\n\n #applyThemeClass(\n previous: SkyThemeSettings | undefined,\n current: SkyThemeSettings,\n prop: 'theme' | 'mode' | 'spacing' | 'brand',\n supportedProp?: 'supportedModes' | 'supportedSpacing',\n ): void {\n const currentSetting = current[prop];\n const previousClass = previous?.[prop]?.hostClass;\n const currentClass = currentSetting?.hostClass;\n\n if (!previousClass || previousClass !== currentClass) {\n this.#updateHostClass(\n prop,\n previousClass,\n currentClass,\n currentSetting,\n current,\n supportedProp,\n );\n\n if (prop === 'brand') {\n this.#updateBrandStylesheet(current.brand, previous?.brand);\n }\n }\n }\n\n #updateBrandStylesheet(\n currentBrand: SkyThemeBrand | undefined,\n previousBrand: SkyThemeBrand | undefined,\n ): void {\n if (\n currentBrand &&\n currentBrand.name !== 'blackbaud' &&\n previousBrand !== currentBrand\n ) {\n this.#addBrandStylesheet(currentBrand);\n } else {\n this.#removeBrandStylesheet();\n }\n }\n\n #updateHostClass(\n prop: 'theme' | 'mode' | 'spacing' | 'brand',\n previousClass: string | undefined,\n currentClass: string | undefined,\n currentSetting:\n | SkyTheme\n | SkyThemeMode\n | SkyThemeSpacing\n | SkyThemeBrand\n | undefined,\n current: SkyThemeSettings,\n supportedProp?: 'supportedModes' | 'supportedSpacing',\n ): void {\n if (previousClass) {\n this.#removeHostClass(previousClass);\n }\n\n if (prop === 'brand') {\n if (currentClass && !previousClass) {\n this.#addHostClass('sky-theme-brand-base');\n } else if (!currentClass && previousClass) {\n this.#removeHostClass('sky-theme-brand-base');\n }\n }\n\n if (\n currentClass &&\n this.#isSupportedProperty(currentSetting, current, supportedProp)\n ) {\n this.#addHostClass(currentClass);\n }\n }\n\n #addBrandStylesheet(brand: SkyThemeBrand): void {\n if (brand.name !== 'blackbaud') {\n const cssPath = `https://sky.blackbaudcdn.net/static/skyux-brand-${brand.name}/${brand.version}/assets/scss/${brand.name}.css`;\n\n // Create a link element via Angular's renderer to avoid SSR troubles\n this.#brandLinkElement = this.#getRenderer().createElement(\n 'link',\n ) as HTMLLinkElement;\n\n // Add the style to the head section\n this.#getRenderer().appendChild(this.#hostEl, this.#brandLinkElement);\n\n // Set type of the link item and path to the css file\n this.#getRenderer().setProperty(\n this.#brandLinkElement,\n 'rel',\n 'stylesheet',\n );\n this.#getRenderer().setProperty(this.#brandLinkElement, 'href', cssPath);\n }\n }\n\n #removeBrandStylesheet(): void {\n if (this.#brandLinkElement) {\n this.#getRenderer().removeChild(this.#hostEl, this.#brandLinkElement);\n this.#brandLinkElement = undefined;\n }\n }\n\n #addHostClass(className: string): void {\n this.#getRenderer().addClass(this.#hostEl, className);\n }\n\n #removeHostClass(className: string): void {\n this.#getRenderer().removeClass(this.#hostEl, className);\n }\n\n #getRenderer(): Renderer2 {\n if (!this.#renderer) {\n throw new Error(\n 'Renderer is not initialized. Have you called the theme service `init` method?',\n );\n }\n return this.#renderer;\n }\n\n #isSupportedProperty(\n currentSetting:\n | SkyTheme\n | SkyThemeMode\n | SkyThemeSpacing\n | SkyThemeBrand\n | undefined,\n current: SkyThemeSettings,\n supportedProp?: 'supportedModes' | 'supportedSpacing',\n ): boolean {\n return (\n !supportedProp ||\n ((currentSetting instanceof SkyThemeMode ||\n currentSetting instanceof SkyThemeSpacing) &&\n current.theme[supportedProp].includes(currentSetting))\n );\n }\n}\n","import { Injectable, Optional } from '@angular/core';\n\nimport FontFaceObserver from 'fontfaceobserver';\nimport { take } from 'rxjs/operators';\n\nimport { SkyThemeService } from './theming/theme.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyAppStyleLoader {\n public static readonly LOAD_TIMEOUT = 3000;\n public isLoaded = false;\n\n #themeSvc: SkyThemeService | undefined;\n\n constructor(@Optional() themeSvc?: SkyThemeService) {\n this.#themeSvc = themeSvc;\n }\n\n public loadStyles(): Promise<any> {\n if (this.isLoaded) {\n return Promise.resolve();\n }\n\n let themePromise: Promise<any>;\n\n if (this.#themeSvc) {\n themePromise = this.#themeSvc.settingsChange.pipe(take(1)).toPromise();\n } else {\n themePromise = Promise.resolve();\n }\n\n const fontAwesome = new FontFaceObserver('FontAwesome');\n const skyuxIcons = new FontFaceObserver('skyux-icons');\n const blackbaudSans = new FontFaceObserver('BLKB Sans');\n\n return Promise.all([\n // Specify a character for FontAwesome since some browsers will fail to detect\n // when the font is loaded unless a known character with a different width\n // than the default is not specified.\n fontAwesome.load('\\uf0fc', SkyAppStyleLoader.LOAD_TIMEOUT),\n skyuxIcons.load('\\ue999', SkyAppStyleLoader.LOAD_TIMEOUT),\n blackbaudSans.load(undefined, SkyAppStyleLoader.LOAD_TIMEOUT),\n themePromise,\n ])\n .then(() => {\n this.isLoaded = true;\n })\n .catch((error) => {\n // Errors loading the font should not stop the page from rendering.\n // Passing the error along in case the client wants to do something with it.\n return Promise.resolve({\n error,\n });\n });\n }\n}\n","import {\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n Optional,\n Renderer2,\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyThemeSettings } from './theme-settings';\nimport { SkyThemeService } from './theme.service';\n\ntype SkyThemeClassMap = Record<string, string>;\n\n/**\n * Component to add classes conditionally based on the current theme.\n *\n * If the directive is within a `skyTheme` directive, it uses settings from that directive.\n */\n@Directive({\n selector: '[skyThemeClass]',\n standalone: false,\n})\nexport class SkyThemeClassDirective implements OnDestroy {\n /**\n * The HTML class attribute.\n *\n * @param value\n */\n @Input()\n public set class(value: string | undefined) {\n this.#removeInitialClasses(this.#initialClasses);\n this.#initialClasses = typeof value === 'string' ? value.split(/\\s+/) : [];\n this.#applyInitialClasses(this.#initialClasses);\n this.#applySkyThemeClassMap(this.#skyThemeClassMap);\n }\n\n /**\n * An object with class names in a string for keys, and theme names (e.g. 'default' or 'modern') as values.\n *\n * @param value\n */\n @Input()\n public set skyThemeClass(value: SkyThemeClassMap | undefined) {\n this.#removeSkyThemeClassMap(this.#skyThemeClassMap);\n this.#applyInitialClasses(this.#initialClasses);\n\n this.#skyThemeClassMap = value as SkyThemeClassMap;\n\n /* istanbul ignore else */\n if (this.#skyThemeClassMap) {\n this.#applySkyThemeClassMap(this.#skyThemeClassMap);\n }\n }\n\n set #themeSettings(settings: SkyThemeSettings) {\n this.#currentTheme = settings;\n this.#removeSkyThemeClassMap(this.#skyThemeClassMap);\n this.#applyInitialClasses(this.#initialClasses);\n this.#applySkyThemeClassMap(this.#skyThemeClassMap);\n }\n\n #currentTheme: SkyThemeSettings | undefined;\n #ngUnsubscribe = new Subject<void>();\n #initialClasses: string[] = [];\n #skyThemeClassMap: SkyThemeClassMap | undefined;\n\n #ngEl: ElementRef;\n #renderer: Renderer2;\n\n constructor(\n ngEl: ElementRef,\n renderer: Renderer2,\n @Optional() themeSvc?: SkyThemeService,\n ) {\n this.#ngEl = ngEl;\n this.#renderer = renderer;\n if (themeSvc) {\n themeSvc.settingsChange\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((settingsChange) => {\n this.#themeSettings = settingsChange.currentSettings;\n });\n }\n }\n\n public ngOnDestroy(): void {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n\n #applyInitialClasses(classes: string[]): void {\n /* istanbul ignore else */\n if (classes) {\n classes.forEach((className) => this.#toggleClass(className, true));\n }\n }\n\n #applySkyThemeClassMap(skyThemeClassMap: SkyThemeClassMap | undefined): void {\n if (skyThemeClassMap) {\n const themeName = this.#currentTheme?.theme.name || 'default';\n Object.keys(skyThemeClassMap).forEach((className) => {\n const enabled = themeName === skyThemeClassMap[className];\n this.#toggleClass(className, enabled);\n });\n }\n }\n\n #removeInitialClasses(classes: string[]): void {\n /* istanbul ignore else */\n if (classes) {\n classes.forEach((className) => this.#toggleClass(className, false));\n }\n }\n\n #removeSkyThemeClassMap(\n skyThemeClassMap: SkyThemeClassMap | undefined,\n ): void {\n if (skyThemeClassMap) {\n Object.keys(skyThemeClassMap).forEach((className) =>\n this.#toggleClass(className, false),\n );\n }\n }\n\n #toggleClass(className: string, enabled: boolean): void {\n className = className.trim();\n /* istanbul ignore else */\n if (className) {\n className.split(/\\s+/g).forEach((classNameItem) => {\n if (enabled) {\n this.#renderer.addClass(this.#ngEl.nativeElement, classNameItem);\n } else {\n this.#renderer.removeClass(this.#ngEl.nativeElement, classNameItem);\n }\n });\n }\n }\n}\n","import {\n ChangeDetectorRef,\n Directive,\n Input,\n OnDestroy,\n Optional,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyThemeSettings } from './theme-settings';\nimport { SkyThemeService } from './theme.service';\n\n/**\n * Component that works like `ngIf` to show markup for matching theme.\n *\n * If the directive is within a `skyTheme` directive, it uses settings from that directive.\n */\n@Directive({\n selector: '[skyThemeIf]',\n standalone: false,\n})\nexport class SkyThemeIfDirective implements OnDestroy {\n /**\n * A string that should match the name of a theme, `'default'` or `'modern'`.\n *\n * @param value\n */\n @Input()\n public set skyThemeIf(value: 'default' | 'modern' | undefined) {\n this.#context = value;\n this.#updateView();\n }\n\n #context: string | undefined;\n #currentTheme: SkyThemeSettings | undefined;\n #ngUnsubscribe = new Subject<void>();\n #hasView = false;\n\n #templateRef: TemplateRef<unknown>;\n #viewContainer: ViewContainerRef;\n\n constructor(\n templateRef: TemplateRef<unknown>,\n viewContainer: ViewContainerRef,\n changeDetector: ChangeDetectorRef,\n @Optional() themeSvc?: SkyThemeService,\n ) {\n this.#templateRef = templateRef;\n this.#viewContainer = viewContainer;\n if (themeSvc) {\n themeSvc.settingsChange\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((settingsChange) => {\n this.#currentTheme = settingsChange.currentSettings;\n this.#updateView();\n\n // Components that use OnPush change detection will not automatically\n // check for changes when created as a result of a theme change if\n // it happens outside of an Angular change detection cycle. This\n // ensures change detection runs on those components.\n changeDetector.markForCheck();\n });\n }\n }\n\n public ngOnDestroy(): void {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n\n #updateView(): void {\n const themeName = this.#currentTheme?.theme.name || 'default';\n const condition = this.#context && themeName === this.#context;\n if (condition && !this.#hasView) {\n this.#viewContainer.createEmbeddedView(this.#templateRef);\n this.#hasView = true;\n } else if (!condition && this.#hasView) {\n this.#viewContainer.clear();\n this.#hasView = false;\n }\n }\n}\n","import { SkyThemeMode } from './theme-mode';\nimport { SkyThemeSpacing } from './theme-spacing';\n\n/**\n * Defines properties of a SKY UX theme.\n */\nexport class SkyTheme {\n /**\n * The preset themes available in SKY UX.\n */\n public static readonly presets = {\n default: new SkyTheme(\n 'default',\n 'sky-theme-default',\n [SkyThemeMode.presets.light],\n [SkyThemeSpacing.presets.standard],\n ),\n modern: new SkyTheme(\n 'modern',\n 'sky-theme-modern',\n [SkyThemeMode.presets.light, SkyThemeMode.presets.dark],\n [SkyThemeSpacing.presets.standard, SkyThemeSpacing.presets.compact],\n ),\n };\n\n /**\n * Creates a new theme.\n * @param name The name of the theme.\n * @param hostClass The class on the host element which child components should reference when\n * adjusting for a specified theme.\n * @param supportedModes An array of modes supported by the theme.\n * @param supportedSpacing An array of spacing modes supported by the theme.\n */\n constructor(\n public readonly name: string,\n public readonly hostClass: string,\n public readonly supportedModes: SkyThemeMode[],\n public readonly supportedSpacing = [SkyThemeSpacing.presets.standard],\n ) {}\n}\n","import { SkyTheme } from './theme';\nimport { SkyThemeBrand } from './theme-brand';\nimport { SkyThemeMode } from './theme-mode';\nimport { SkyThemeSpacing } from './theme-spacing';\n\n/**\n * Specifies the theme and mode to be applied to a host element.\n */\nexport class SkyThemeSettings {\n /**\n * Creates a new SkyThemeSettings instance.\n * @param theme The theme configuration.\n * @param mode The theme mode.\n */\n constructor(\n public readonly theme: SkyTheme,\n public readonly mode: SkyThemeMode,\n public readonly spacing = SkyThemeSpacing.presets.standard,\n public readonly brand?: SkyThemeBrand,\n ) {}\n}\n","import {\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n Renderer2,\n} from '@angular/core';\n\nimport { SkyTheme } from './theme';\nimport { SkyThemeMode } from './theme-mode';\nimport { SkyThemeSettings } from './theme-settings';\nimport { SkyThemeService } from './theme.service';\n\nconst defaultTheme = new SkyThemeSettings(\n SkyTheme.presets.default,\n SkyThemeMode.presets.light,\n);\n\n/**\n * Creates a new instance of `SkyThemeService` to allow a container\n * to have its own theme.\n */\n@Directive({\n selector: '[skyTheme]',\n providers: [SkyThemeService],\n standalone: false,\n})\nexport class SkyThemeDirective implements OnInit, OnDestroy {\n @Input()\n public set skyTheme(value: SkyThemeSettings | undefined) {\n this.skyThemeOrDefault = value || defaultTheme;\n\n if (this.#initialized) {\n this.#themeSvc.setTheme(this.skyThemeOrDefault);\n }\n }\n\n public skyThemeOrDefault = defaultTheme;\n\n #initialized = false;\n\n #elRef: ElementRef;\n #renderer: Renderer2;\n #themeSvc: SkyThemeService;\n\n constructor(\n elRef: ElementRef,\n renderer: Renderer2,\n themeSvc: SkyThemeService,\n ) {\n this.#elRef = elRef;\n this.#renderer = renderer;\n this.#themeSvc = themeSvc;\n }\n\n public ngOnInit(): void {\n this.#themeSvc.init(\n this.#elRef.nativeElement,\n this.#renderer,\n this.skyThemeOrDefault,\n );\n\n this.#initialized = true;\n }\n\n public ngOnDestroy(): void {\n this.#themeSvc.destroy();\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { SkyThemeClassDirective } from './theming/theme-class.directive';\nimport { SkyThemeIfDirective } from './theming/theme-if.directive';\nimport { SkyThemeDirective } from './theming/theme.directive';\n\n@NgModule({\n declarations: [\n SkyThemeClassDirective,\n SkyThemeDirective,\n SkyThemeIfDirective,\n ],\n exports: [SkyThemeClassDirective, SkyThemeDirective, SkyThemeIfDirective],\n})\nexport class SkyThemeModule {}\n","/**\n * @internal\n * Defines properties of SKY UX theme branding.\n */\nexport class SkyThemeBrand {\n public get hostClass(): string {\n return this.#hostClass || `sky-theme-brand-${this.name}`;\n }\n\n private set hostClass(value: string | undefined) {\n this.#hostClass = value;\n }\n\n #hostClass: string | undefined;\n /**\n * Creates a new theme brand.\n * @param name The name of the theme brand.\n * @param hostClass The class on the host element which child components should reference when\n * adjusting for a specified theme brand. This defaults to `sky-theme-brand-<name>\n */\n constructor(\n public readonly name: string,\n public readonly version: string,\n hostClass?: string,\n ) {\n this.hostClass = hostClass;\n\n if (!/\\d+\\.\\d+\\.\\d+(?:-(?:alpha|beta|rc)\\.\\d)*$/.test(version)) {\n throw new Error(\n `Invalid version format \"${version}\" for theme brand \"${name}\".`,\n );\n }\n }\n}\n","import {\n ChangeDetectorRef,\n Directive,\n HostBinding,\n inject,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { SkyThemeService } from '../theming/theme.service';\n\n@Directive({\n selector: '[skyThemeClass]',\n standalone: true,\n})\nexport class SkyThemeComponentClassDirective {\n @HostBinding('class')\n public theme = 'sky-cmp-theme-default';\n\n #changeDetector = inject(ChangeDetectorRef);\n #themeService = inject(SkyThemeService, { optional: true });\n\n constructor() {\n this.#themeService?.settingsChange\n .pipe(takeUntilDestroyed())\n .subscribe((change) => {\n this.theme = `sky-cmp-theme-${change.currentSettings.theme.name}`;\n this.#changeDetector.markForCheck();\n });\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { DestroyRef, Injectable, NgZone, inject } from '@angular/core';\n\nimport { ReplaySubject } from 'rxjs';\n\nimport { SkyAppViewportReserveArgs } from './viewport-reserve-args';\nimport { SkyAppViewportReservedPositionType } from './viewport-reserve-position-type';\n\ntype ReserveItemType = SkyAppViewportReserveArgs & {\n active: boolean;\n};\n\n/**\n * Provides information about the state of the application's viewport.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyAppViewportService {\n /**\n * Updated when the viewport becomes visible. While the page is rendered, the\n * viewport may remain hidden as fonts and styles are loaded asynchronously;\n * this is done to avoid a FOUC (Flash Of Unstyled Content) before the fonts\n * and styles are ready.\n */\n public visible = new ReplaySubject<boolean>(1);\n\n // ESLint doesn't recognize how this is used.\n // eslint-disable-next-line no-unused-private-class-members\n #updateRequest: number | undefined = undefined;\n readonly #reserveItems = new Map<string, ReserveItemType>();\n readonly #conditionallyReserveItems = new Map<Element, ReserveItemType>();\n readonly #document = inject(DOCUMENT);\n readonly #ngZone = inject(NgZone);\n // Observe elements crossing the browser's viewport boundaries.\n readonly #intersectionObserver = this.#ngZone.runOutsideAngular(\n () =>\n new IntersectionObserver(\n () => this.#ngZone.run(() => this.#updateViewportArea()),\n { threshold: Array.from({ length: 101 }, (_, i) => i / 100) },\n ),\n );\n #reservedSpaces: Record<SkyAppViewportReservedPositionType, number> = {\n bottom: 0,\n left: 0,\n right: 0,\n top: 0,\n };\n\n constructor() {\n const onScroll = (): void => {\n if (this.#conditionallyReserveItems.size > 0) {\n this.#updateViewportArea();\n }\n };\n this.#document.addEventListener('scroll', onScroll);\n inject(DestroyRef).onDestroy(() => {\n /* istanbul ignore next */\n if (this.#updateRequest !== undefined) {\n cancelAnimationFrame(this.#updateRequest);\n }\n this.#intersectionObserver.disconnect();\n this.#document.removeEventListener('scroll', onScroll);\n });\n }\n\n /**\n * Reserves space for components docked to the left, top, right, or bottom of the viewport.\n * @param args\n */\n public reserveSpace(args: SkyAppViewportReserveArgs): void {\n const item = {\n ...args,\n active: this.#isElementVisible({ ...args, active: false }),\n };\n this.#reserveItems.set(args.id, item);\n this.#watchVisibility(item);\n this.#updateViewportArea();\n }\n\n /**\n * Removes reserved space for a component by the ID provided when it was reserved.\n * @param id\n */\n public unreserveSpace(id: string): void {\n const args = this.#reserveItems.get(id);\n if (args?.reserveForElement) {\n this.#intersectionObserver.unobserve(args.reserveForElement);\n this.#conditionallyReserveItems.delete(args.reserveForElement);\n }\n this.#reserveItems.delete(id);\n this.#updateViewportArea();\n }\n\n #updateViewportArea(): void {\n this.#updateRequest ??= requestAnimationFrame(() => {\n this.#updateRequest = undefined;\n const reservedSpaces: Record<SkyAppViewportReservedPositionType, number> =\n {\n bottom: 0,\n left: 0,\n right: 0,\n top: 0,\n };\n\n for (const args of this.#reserveItems.values()) {\n args.active = this.#isElementVisible(args, reservedSpaces);\n if (args.active) {\n reservedSpaces[args.position] += args.size;\n }\n }\n\n this.#reservedSpaces = reservedSpaces;\n const documentElementStyle = this.#document.documentElement.style;\n\n for (const [position, size] of Object.entries(reservedSpaces)) {\n documentElementStyle.setProperty(\n `--sky-viewport-${position}`,\n size + 'px',\n );\n }\n });\n }\n\n #watchVisibility(item: ReserveItemType): void {\n if (item.reserveForElement) {\n this.#conditionallyReserveItems.set(item.reserveForElement, item);\n this.#intersectionObserver.observe(item.reserveForElement);\n }\n }\n\n #isElementVisible(\n args: ReserveItemType,\n reservedSpaces: Record<SkyAppViewportReservedPositionType, number> = this\n .#reservedSpaces,\n ): boolean {\n if (!args.reserveForElement) {\n return true;\n }\n const rect = args.reserveForElement.getBoundingClientRect();\n if (!rect || !rect.height || !rect.width) {\n return false;\n }\n const midpoint = {\n x: rect.x + Math.floor(rect.width / 2),\n y: rect.y + Math.floor(rect.height / 2),\n };\n if (\n // Vertically in view\n midpoint.y <= window.innerHeight &&\n midpoint.y >= 0 &&\n // Horizontally in view\n midpoint.x <= window.innerWidth &&\n midpoint.x >= 0\n ) {\n // Element is not hidden by another element\n if (\n args.reserveForElement.contains(\n this.#document.elementFromPoint(midpoint.x, midpoint.y),\n )\n ) {\n return true;\n }\n\n // Check if the item's midpoint is visible based on current reserved spaces.\n // Assumes reserved spaces are intended to be additive and not overlapping.\n const threshold = reservedSpaces[args.position];\n switch (args.position) {\n case 'top':\n return midpoint.y >= threshold;\n case 'right':\n return midpoint.x <= window.innerWidth - threshold;\n case 'bottom':\n return midpoint.y <= window.innerHeight - threshold;\n case 'left':\n return midpoint.x >= threshold;\n }\n }\n return false;\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n EnvironmentProviders,\n RendererFactory2,\n inject,\n makeEnvironmentProviders,\n provideAppInitializer,\n} from '@angular/core';\n\nimport { SkyTheme } from '../theming/theme';\nimport { SkyThemeMode } from '../theming/theme-mode';\nimport { SkyThemeSettings } from '../theming/theme-settings';\nimport { SkyThemeSpacing } from '../theming/theme-spacing';\nimport { SkyThemeService } from '../theming/theme.service';\n\nexport function provideInitialTheme(\n name: keyof typeof SkyTheme.presets = 'default',\n options?: {\n mode?: keyof typeof SkyThemeMode.presets;\n spacing?: keyof typeof SkyThemeSpacing.presets;\n },\n): EnvironmentProviders {\n return makeEnvironmentProviders([\n SkyThemeService,\n provideAppInitializer(() => {\n const initializerFn = ((\n themeService: SkyThemeService,\n doc: Document,\n rendererFactory: RendererFactory2,\n ) => {\n return () => {\n themeService.init(\n doc.body,\n rendererFactory.createRenderer(null, null),\n new SkyThemeSettings(\n SkyTheme.presets[name],\n SkyThemeMode.presets[options?.mode ?? 'light'],\n SkyThemeSpacing.presets[options?.spacing ?? 'standard'],\n ),\n );\n };\n })(inject(SkyThemeService), inject(DOCUMENT), inject(RendererFactory2));\n return initializerFn();\n }),\n ]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.SkyThemeService"],"mappings":"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"}
|