@skyux/theme 12.23.0 → 13.0.0-alpha.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.
@@ -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-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-brand.ts","../../../../../libs/components/theme/src/lib/theming/theme-settings.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.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 { SkyThemeModeData } from './theme-serialization-types';\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 * @internal\n * Serializes the theme mode to a JSON-compatible object.\n */\n public serialize(): SkyThemeModeData {\n // Check if this instance is a preset\n const presetEntry = Object.entries(SkyThemeMode.presets).find(\n ([, preset]) => preset === this,\n );\n\n if (presetEntry) {\n return {\n name: this.name,\n isPreset: true,\n };\n }\n\n return {\n name: this.name,\n hostClass: this.hostClass,\n };\n }\n\n /**\n * @internal\n * Deserializes a JSON object to a SkyThemeMode instance.\n */\n public static deserialize(data: SkyThemeModeData): SkyThemeMode {\n if (data.isPreset) {\n const preset =\n SkyThemeMode.presets[data.name as keyof typeof SkyThemeMode.presets];\n\n if (preset) {\n return preset;\n }\n\n throw new Error(`Unknown theme mode preset: ${data.name}`);\n }\n\n if (!data.hostClass) {\n throw new Error('hostClass is required for non-preset theme modes');\n }\n\n return new SkyThemeMode(data.name, data.hostClass);\n }\n}\n","import { SkyThemeSpacingData } from './theme-serialization-types';\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 /**\n * @internal\n * Serializes the theme spacing to a JSON-compatible object.\n */\n public serialize(): SkyThemeSpacingData {\n // Check if this instance is a preset\n const presetEntry = Object.entries(SkyThemeSpacing.presets).find(\n ([, preset]) => preset === this,\n );\n\n if (presetEntry) {\n return {\n name: this.name,\n isPreset: true,\n };\n }\n\n return {\n name: this.name,\n hostClass: this.hostClass,\n };\n }\n\n /**\n * @internal\n * Deserializes a JSON object to a SkyThemeSpacing instance.\n */\n public static deserialize(data: SkyThemeSpacingData): SkyThemeSpacing {\n if (data.isPreset) {\n const preset =\n SkyThemeSpacing.presets[\n data.name as keyof typeof SkyThemeSpacing.presets\n ];\n\n if (preset) {\n return preset;\n }\n\n throw new Error(`Unknown theme spacing preset: ${data.name}`);\n }\n\n if (!data.hostClass) {\n throw new Error('hostClass is required for non-preset theme spacing');\n }\n\n return new SkyThemeSpacing(data.name, data.hostClass);\n }\n}\n","import { SkyThemeMode } from './theme-mode';\nimport { SkyThemeData } from './theme-serialization-types';\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 true,\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 public readonly supportsBranding = false,\n ) {}\n\n /**\n * @internal\n * Serializes the theme to a JSON-compatible object.\n */\n public serialize(): SkyThemeData {\n // Check if this instance is a preset\n const presetEntry = Object.entries(SkyTheme.presets).find(\n ([, preset]) => preset === this,\n );\n\n if (presetEntry) {\n return {\n name: this.name,\n supportedModes: this.supportedModes.map((mode) => mode.serialize()),\n isPreset: true,\n };\n }\n\n const result: SkyThemeData = {\n name: this.name,\n hostClass: this.hostClass,\n supportedModes: this.supportedModes.map((mode) => mode.serialize()),\n };\n\n // Only include supportedSpacing if it's not the default\n if (\n this.supportedSpacing.length !== 1 ||\n this.supportedSpacing[0] !== SkyThemeSpacing.presets.standard\n ) {\n result.supportedSpacing = this.supportedSpacing.map((spacing) =>\n spacing.serialize(),\n );\n }\n\n // Only include supportsBranding if it's true\n if (this.supportsBranding) {\n result.supportsBranding = this.supportsBranding;\n }\n\n return result;\n }\n\n /**\n * @internal\n * Deserializes a JSON object to a SkyTheme instance.\n */\n public static deserialize(data: SkyThemeData): SkyTheme {\n if (data.isPreset) {\n const preset =\n SkyTheme.presets[data.name as keyof typeof SkyTheme.presets];\n\n if (preset) {\n return preset;\n }\n\n throw new Error(`Unknown theme preset: ${data.name}`);\n }\n\n if (!data.hostClass) {\n throw new Error('hostClass is required for non-preset themes');\n }\n\n const supportedModes = data.supportedModes.map((modeData) =>\n SkyThemeMode.deserialize(modeData),\n );\n\n const supportedSpacing = data.supportedSpacing\n ? data.supportedSpacing.map((spacingData) =>\n SkyThemeSpacing.deserialize(spacingData),\n )\n : [SkyThemeSpacing.presets.standard];\n\n return new SkyTheme(\n data.name,\n data.hostClass,\n supportedModes,\n supportedSpacing,\n data.supportsBranding ?? false,\n );\n }\n}\n","import { SkyThemeBrandData } from './theme-serialization-types';\n\n/**\n * @internal\n * Defines properties of SKY UX theme branding.\n */\nexport class SkyThemeBrand {\n public get hostClass(): string {\n return this.#hostClass || this.#buildDefaultHostClassName();\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 /**\n * @internal\n * Serializes the theme brand to a JSON-compatible object.\n */\n public serialize(): SkyThemeBrandData {\n const result: SkyThemeBrandData = {\n name: this.name,\n version: this.version,\n };\n\n // Only include hostClass if it's different from the default\n const defaultHostClass = this.#buildDefaultHostClassName();\n\n if (this.hostClass !== defaultHostClass) {\n result.hostClass = this.hostClass;\n }\n\n return result;\n }\n\n /**\n * @internal\n * Deserializes a JSON object to a SkyThemeBrand instance.\n */\n public static deserialize(data: SkyThemeBrandData): SkyThemeBrand {\n return new SkyThemeBrand(data.name, data.version, data.hostClass);\n }\n\n #buildDefaultHostClassName(): string {\n return `sky-theme-brand-${this.name}`;\n }\n}\n","import { SkyTheme } from './theme';\nimport { SkyThemeBrand } from './theme-brand';\nimport { SkyThemeMode } from './theme-mode';\nimport { SkyThemeSettingsData } from './theme-serialization-types';\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 /**\n * Serializes the theme settings to a string.\n */\n public serialize(): string {\n const result: SkyThemeSettingsData = {\n theme: this.theme.serialize(),\n mode: this.mode.serialize(),\n };\n\n // Only include spacing if it's not the default\n if (this.spacing !== SkyThemeSpacing.presets.standard) {\n result.spacing = this.spacing.serialize();\n }\n\n // Only include brand if it exists\n if (this.brand) {\n result.brand = this.brand.serialize();\n }\n\n return JSON.stringify(result);\n }\n\n /**\n * Deserializes a string to a SkyThemeSettings instance.\n */\n public static deserialize(value: string): SkyThemeSettings {\n const settingsData = JSON.parse(value) as SkyThemeSettingsData;\n\n const theme = SkyTheme.deserialize(settingsData.theme);\n const mode = SkyThemeMode.deserialize(settingsData.mode);\n const spacing = settingsData.spacing\n ? SkyThemeSpacing.deserialize(settingsData.spacing)\n : SkyThemeSpacing.presets.standard;\n const brand = settingsData.brand\n ? SkyThemeBrand.deserialize(settingsData.brand)\n : undefined;\n\n return new SkyThemeSettings(theme, mode, spacing, brand);\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\nfunction assertCurrentSettings(\n currentSettings: SkyThemeSettings | undefined,\n): asserts currentSettings is SkyThemeSettings {\n if (!currentSettings) {\n throw new Error('Theme service is not initialized. Call init() first.');\n }\n}\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 mode.\n * @param mode The new theme mode to apply.\n */\n public setThemeMode(mode: SkyThemeMode): void {\n this.#updateThemeProperty('mode', mode);\n }\n\n /**\n * Updates the current theme spacing.\n * @param spacing The new theme spacing to apply.\n */\n public setThemeSpacing(spacing: SkyThemeSpacing): void {\n this.#updateThemeProperty('spacing', spacing);\n }\n\n /**\n * Updates the current theme brand.\n * @param brand The new theme brand to apply.\n */\n public setThemeBrand(brand: SkyThemeBrand): void {\n this.#updateThemeProperty('brand', brand);\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\n /**\n * Updates the current theme.\n * @param theme The new theme to apply.\n */\n public setTheme(theme: SkyTheme): void;\n\n public setTheme(settingsOrTheme: SkyThemeSettings | SkyTheme): void {\n let settings: SkyThemeSettings;\n\n if (settingsOrTheme instanceof SkyThemeSettings) {\n settings = settingsOrTheme;\n } else {\n const current = this.#current;\n\n assertCurrentSettings(current);\n\n settings = new SkyThemeSettings(\n settingsOrTheme,\n current.mode,\n current.spacing,\n settingsOrTheme.supportsBranding ? current.brand : undefined,\n );\n }\n\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 #updateThemeProperty(\n property: 'mode' | 'spacing' | 'brand',\n value: SkyThemeMode | SkyThemeSpacing | SkyThemeBrand,\n ): void {\n const current = this.#current;\n\n assertCurrentSettings(current);\n\n const currentTheme = current.theme;\n\n let supportedValues: SkyThemeMode[] | SkyThemeSpacing[] | undefined =\n undefined;\n\n switch (property) {\n case 'mode':\n supportedValues = currentTheme.supportedModes;\n break;\n case 'spacing':\n supportedValues = currentTheme.supportedSpacing;\n break;\n default:\n }\n\n if (supportedValues && !supportedValues.includes(value)) {\n throw new Error(\n `The current theme does not support the specified ${property}.`,\n );\n }\n\n const updatedSettings = {\n theme: current.theme,\n mode: current.mode,\n spacing: current.spacing,\n brand: current.brand,\n [property]: value,\n };\n\n this.setTheme(\n new SkyThemeSettings(\n updatedSettings.theme,\n updatedSettings.mode,\n updatedSettings.spacing,\n updatedSettings.brand,\n ),\n );\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 if (!current.theme.supportsBranding && currentSetting) {\n throw new Error('Branding is not supported for the given theme.');\n }\n\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 {\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, 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 #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 (): void => {\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":["../tmp-esm2022/lib/icons/icon-manifest.service.js","../tmp-esm2022/lib/theming/theme-mode.js","../tmp-esm2022/lib/theming/theme-spacing.js","../tmp-esm2022/lib/theming/theme.js","../tmp-esm2022/lib/theming/theme-brand.js","../tmp-esm2022/lib/theming/theme-settings.js","../tmp-esm2022/lib/theming/theme.service.js","../tmp-esm2022/lib/style-loader.js","../tmp-esm2022/lib/theming/theme-class.directive.js","../tmp-esm2022/lib/theming/theme-if.directive.js","../tmp-esm2022/lib/theming/theme.directive.js","../tmp-esm2022/lib/theme.module.js","../tmp-esm2022/lib/theming/theme-component-class.directive.js","../tmp-esm2022/lib/viewport/viewport.service.js","../tmp-esm2022/lib/providers/provide-initial-theme.js","../tmp-esm2022/skyux-theme.js"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { getIconManifest } from '@skyux/icons';\nimport * as i0 from \"@angular/core\";\n/**\n * Provides a method for retrieving metadata about the SKY UX icon font.\n * @internal\n */\nexport class SkyThemeIconManifestService {\n /**\n * Gets metadata about the SKY UX icon font.\n */\n getManifest() {\n return getIconManifest();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyThemeIconManifestService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyThemeIconManifestService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyThemeIconManifestService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi1tYW5pZmVzdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3RoZW1lL3NyYy9saWIvaWNvbnMvaWNvbi1tYW5pZmVzdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFJL0M7OztHQUdHO0FBSUgsTUFBTSxPQUFPLDJCQUEyQjtJQUN0Qzs7T0FFRztJQUNJLFdBQVc7UUFDaEIsT0FBTyxlQUFlLEVBQUUsQ0FBQztJQUMzQixDQUFDOzhHQU5VLDJCQUEyQjtrSEFBM0IsMkJBQTJCLGNBRjFCLE1BQU07OzJGQUVQLDJCQUEyQjtrQkFIdkMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBnZXRJY29uTWFuaWZlc3QgfSBmcm9tICdAc2t5dXgvaWNvbnMnO1xuXG5pbXBvcnQgeyBTa3lUaGVtZUljb25NYW5pZmVzdCB9IGZyb20gJy4vaWNvbi1tYW5pZmVzdCc7XG5cbi8qKlxuICogUHJvdmlkZXMgYSBtZXRob2QgZm9yIHJldHJpZXZpbmcgbWV0YWRhdGEgYWJvdXQgdGhlIFNLWSBVWCBpY29uIGZvbnQuXG4gKiBAaW50ZXJuYWxcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNreVRoZW1lSWNvbk1hbmlmZXN0U2VydmljZSB7XG4gIC8qKlxuICAgKiBHZXRzIG1ldGFkYXRhIGFib3V0IHRoZSBTS1kgVVggaWNvbiBmb250LlxuICAgKi9cbiAgcHVibGljIGdldE1hbmlmZXN0KCk6IFNreVRoZW1lSWNvbk1hbmlmZXN0IHtcbiAgICByZXR1cm4gZ2V0SWNvbk1hbmlmZXN0KCk7XG4gIH1cbn1cbiJdfQ==","/**\n * Defines properties of a SKY UX theme mode.\n */\nexport class SkyThemeMode {\n /**\n * The preset themes available in SKY UX.\n */\n static { this.presets = {\n light: new SkyThemeMode('light', 'sky-theme-mode-light'),\n dark: new SkyThemeMode('dark', 'sky-theme-mode-dark'),\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(name, hostClass) {\n this.name = name;\n this.hostClass = hostClass;\n }\n /**\n * @internal\n * Serializes the theme mode to a JSON-compatible object.\n */\n serialize() {\n // Check if this instance is a preset\n const presetEntry = Object.entries(SkyThemeMode.presets).find(([, preset]) => preset === this);\n if (presetEntry) {\n return {\n name: this.name,\n isPreset: true,\n };\n }\n return {\n name: this.name,\n hostClass: this.hostClass,\n };\n }\n /**\n * @internal\n * Deserializes a JSON object to a SkyThemeMode instance.\n */\n static deserialize(data) {\n if (data.isPreset) {\n const preset = SkyThemeMode.presets[data.name];\n if (preset) {\n return preset;\n }\n throw new Error(`Unknown theme mode preset: ${data.name}`);\n }\n if (!data.hostClass) {\n throw new Error('hostClass is required for non-preset theme modes');\n }\n return new SkyThemeMode(data.name, data.hostClass);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUtbW9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90aGVtZS9zcmMvbGliL3RoZW1pbmcvdGhlbWUtbW9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7R0FFRztBQUNILE1BQU0sT0FBTyxZQUFZO0lBQ3ZCOztPQUVHO2FBQ29CLFlBQU8sR0FBRztRQUMvQixLQUFLLEVBQUUsSUFBSSxZQUFZLENBQUMsT0FBTyxFQUFFLHNCQUFzQixDQUFDO1FBQ3hELElBQUksRUFBRSxJQUFJLFlBQVksQ0FBQyxNQUFNLEVBQUUscUJBQXFCLENBQUM7S0FDdEQsQ0FBQztJQUVGOzs7OztPQUtHO0lBQ0gsWUFDa0IsSUFBWSxFQUNaLFNBQWlCO1FBRGpCLFNBQUksR0FBSixJQUFJLENBQVE7UUFDWixjQUFTLEdBQVQsU0FBUyxDQUFRO0lBQ2hDLENBQUM7SUFFSjs7O09BR0c7SUFDSSxTQUFTO1FBQ2QscUNBQXFDO1FBQ3JDLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDM0QsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQ2hDLENBQUM7UUFFRixJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ2hCLE9BQU87Z0JBQ0wsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO2dCQUNmLFFBQVEsRUFBRSxJQUFJO2FBQ2YsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPO1lBQ0wsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1NBQzFCLENBQUM7SUFDSixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFzQjtRQUM5QyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixNQUFNLE1BQU0sR0FDVixZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUF5QyxDQUFDLENBQUM7WUFFdkUsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDWCxPQUFPLE1BQU0sQ0FBQztZQUNoQixDQUFDO1lBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDN0QsQ0FBQztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO1FBQ3RFLENBQUM7UUFFRCxPQUFPLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3JELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTa3lUaGVtZU1vZGVEYXRhIH0gZnJvbSAnLi90aGVtZS1zZXJpYWxpemF0aW9uLXR5cGVzJztcblxuLyoqXG4gKiBEZWZpbmVzIHByb3BlcnRpZXMgb2YgYSBTS1kgVVggdGhlbWUgbW9kZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFNreVRoZW1lTW9kZSB7XG4gIC8qKlxuICAgKiBUaGUgcHJlc2V0IHRoZW1lcyBhdmFpbGFibGUgaW4gU0tZIFVYLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBwcmVzZXRzID0ge1xuICAgIGxpZ2h0OiBuZXcgU2t5VGhlbWVNb2RlKCdsaWdodCcsICdza3ktdGhlbWUtbW9kZS1saWdodCcpLFxuICAgIGRhcms6IG5ldyBTa3lUaGVtZU1vZGUoJ2RhcmsnLCAnc2t5LXRoZW1lLW1vZGUtZGFyaycpLFxuICB9O1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IHRoZW1lIG1vZGUuXG4gICAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSB0aGVtZSBtb2RlLlxuICAgKiBAcGFyYW0gaG9zdENsYXNzIFRoZSBjbGFzcyBvbiB0aGUgaG9zdCBlbGVtZW50IHdoaWNoIGNoaWxkIGNvbXBvbmVudHMgc2hvdWxkIHJlZmVyZW5jZSB3aGVuXG4gICAqIGFkanVzdGluZyBmb3IgYSBzcGVjaWZpZWQgdGhlbWUgbW9kZS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSBuYW1lOiBzdHJpbmcsXG4gICAgcHVibGljIHJlYWRvbmx5IGhvc3RDbGFzczogc3RyaW5nLFxuICApIHt9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBTZXJpYWxpemVzIHRoZSB0aGVtZSBtb2RlIHRvIGEgSlNPTi1jb21wYXRpYmxlIG9iamVjdC5cbiAgICovXG4gIHB1YmxpYyBzZXJpYWxpemUoKTogU2t5VGhlbWVNb2RlRGF0YSB7XG4gICAgLy8gQ2hlY2sgaWYgdGhpcyBpbnN0YW5jZSBpcyBhIHByZXNldFxuICAgIGNvbnN0IHByZXNldEVudHJ5ID0gT2JqZWN0LmVudHJpZXMoU2t5VGhlbWVNb2RlLnByZXNldHMpLmZpbmQoXG4gICAgICAoWywgcHJlc2V0XSkgPT4gcHJlc2V0ID09PSB0aGlzLFxuICAgICk7XG5cbiAgICBpZiAocHJlc2V0RW50cnkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgICAgaXNQcmVzZXQ6IHRydWUsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICBob3N0Q2xhc3M6IHRoaXMuaG9zdENsYXNzLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIERlc2VyaWFsaXplcyBhIEpTT04gb2JqZWN0IHRvIGEgU2t5VGhlbWVNb2RlIGluc3RhbmNlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBkZXNlcmlhbGl6ZShkYXRhOiBTa3lUaGVtZU1vZGVEYXRhKTogU2t5VGhlbWVNb2RlIHtcbiAgICBpZiAoZGF0YS5pc1ByZXNldCkge1xuICAgICAgY29uc3QgcHJlc2V0ID1cbiAgICAgICAgU2t5VGhlbWVNb2RlLnByZXNldHNbZGF0YS5uYW1lIGFzIGtleW9mIHR5cGVvZiBTa3lUaGVtZU1vZGUucHJlc2V0c107XG5cbiAgICAgIGlmIChwcmVzZXQpIHtcbiAgICAgICAgcmV0dXJuIHByZXNldDtcbiAgICAgIH1cblxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHRoZW1lIG1vZGUgcHJlc2V0OiAke2RhdGEubmFtZX1gKTtcbiAgICB9XG5cbiAgICBpZiAoIWRhdGEuaG9zdENsYXNzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2hvc3RDbGFzcyBpcyByZXF1aXJlZCBmb3Igbm9uLXByZXNldCB0aGVtZSBtb2RlcycpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgU2t5VGhlbWVNb2RlKGRhdGEubmFtZSwgZGF0YS5ob3N0Q2xhc3MpO1xuICB9XG59XG4iXX0=","/**\n * Defines properties of SKY UX theme spacing.\n */\nexport class SkyThemeSpacing {\n /**\n * The preset spacing available in SKY UX.\n */\n static { this.presets = {\n standard: new SkyThemeSpacing('standard', 'sky-theme-spacing-standard'),\n compact: new SkyThemeSpacing('compact', 'sky-theme-spacing-compact'),\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(name, hostClass) {\n this.name = name;\n this.hostClass = hostClass;\n }\n /**\n * @internal\n * Serializes the theme spacing to a JSON-compatible object.\n */\n serialize() {\n // Check if this instance is a preset\n const presetEntry = Object.entries(SkyThemeSpacing.presets).find(([, preset]) => preset === this);\n if (presetEntry) {\n return {\n name: this.name,\n isPreset: true,\n };\n }\n return {\n name: this.name,\n hostClass: this.hostClass,\n };\n }\n /**\n * @internal\n * Deserializes a JSON object to a SkyThemeSpacing instance.\n */\n static deserialize(data) {\n if (data.isPreset) {\n const preset = SkyThemeSpacing.presets[data.name];\n if (preset) {\n return preset;\n }\n throw new Error(`Unknown theme spacing preset: ${data.name}`);\n }\n if (!data.hostClass) {\n throw new Error('hostClass is required for non-preset theme spacing');\n }\n return new SkyThemeSpacing(data.name, data.hostClass);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUtc3BhY2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90aGVtZS9zcmMvbGliL3RoZW1pbmcvdGhlbWUtc3BhY2luZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7R0FFRztBQUNILE1BQU0sT0FBTyxlQUFlO0lBQzFCOztPQUVHO2FBQ29CLFlBQU8sR0FBRztRQUMvQixRQUFRLEVBQUUsSUFBSSxlQUFlLENBQUMsVUFBVSxFQUFFLDRCQUE0QixDQUFDO1FBQ3ZFLE9BQU8sRUFBRSxJQUFJLGVBQWUsQ0FBQyxTQUFTLEVBQUUsMkJBQTJCLENBQUM7S0FDckUsQ0FBQztJQUVGOzs7OztPQUtHO0lBQ0gsWUFDa0IsSUFBWSxFQUNaLFNBQWlCO1FBRGpCLFNBQUksR0FBSixJQUFJLENBQVE7UUFDWixjQUFTLEdBQVQsU0FBUyxDQUFRO0lBQ2hDLENBQUM7SUFFSjs7O09BR0c7SUFDSSxTQUFTO1FBQ2QscUNBQXFDO1FBQ3JDLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDOUQsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQ2hDLENBQUM7UUFFRixJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ2hCLE9BQU87Z0JBQ0wsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO2dCQUNmLFFBQVEsRUFBRSxJQUFJO2FBQ2YsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPO1lBQ0wsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1NBQzFCLENBQUM7SUFDSixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUF5QjtRQUNqRCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixNQUFNLE1BQU0sR0FDVixlQUFlLENBQUMsT0FBTyxDQUNyQixJQUFJLENBQUMsSUFBNEMsQ0FDbEQsQ0FBQztZQUVKLElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQ1gsT0FBTyxNQUFNLENBQUM7WUFDaEIsQ0FBQztZQUVELE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2hFLENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQztRQUN4RSxDQUFDO1FBRUQsT0FBTyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN4RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2t5VGhlbWVTcGFjaW5nRGF0YSB9IGZyb20gJy4vdGhlbWUtc2VyaWFsaXphdGlvbi10eXBlcyc7XG5cbi8qKlxuICogRGVmaW5lcyBwcm9wZXJ0aWVzIG9mIFNLWSBVWCB0aGVtZSBzcGFjaW5nLlxuICovXG5leHBvcnQgY2xhc3MgU2t5VGhlbWVTcGFjaW5nIHtcbiAgLyoqXG4gICAqIFRoZSBwcmVzZXQgc3BhY2luZyBhdmFpbGFibGUgaW4gU0tZIFVYLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBwcmVzZXRzID0ge1xuICAgIHN0YW5kYXJkOiBuZXcgU2t5VGhlbWVTcGFjaW5nKCdzdGFuZGFyZCcsICdza3ktdGhlbWUtc3BhY2luZy1zdGFuZGFyZCcpLFxuICAgIGNvbXBhY3Q6IG5ldyBTa3lUaGVtZVNwYWNpbmcoJ2NvbXBhY3QnLCAnc2t5LXRoZW1lLXNwYWNpbmctY29tcGFjdCcpLFxuICB9O1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IHRoZW1lIHNwYWNpbmcuXG4gICAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSB0aGVtZSBzcGFjaW5nLlxuICAgKiBAcGFyYW0gaG9zdENsYXNzIFRoZSBjbGFzcyBvbiB0aGUgaG9zdCBlbGVtZW50IHdoaWNoIGNoaWxkIGNvbXBvbmVudHMgc2hvdWxkIHJlZmVyZW5jZSB3aGVuXG4gICAqIGFkanVzdGluZyBmb3IgYSBzcGVjaWZpZWQgdGhlbWUgc3BhY2luZy5cbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSBuYW1lOiBzdHJpbmcsXG4gICAgcHVibGljIHJlYWRvbmx5IGhvc3RDbGFzczogc3RyaW5nLFxuICApIHt9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBTZXJpYWxpemVzIHRoZSB0aGVtZSBzcGFjaW5nIHRvIGEgSlNPTi1jb21wYXRpYmxlIG9iamVjdC5cbiAgICovXG4gIHB1YmxpYyBzZXJpYWxpemUoKTogU2t5VGhlbWVTcGFjaW5nRGF0YSB7XG4gICAgLy8gQ2hlY2sgaWYgdGhpcyBpbnN0YW5jZSBpcyBhIHByZXNldFxuICAgIGNvbnN0IHByZXNldEVudHJ5ID0gT2JqZWN0LmVudHJpZXMoU2t5VGhlbWVTcGFjaW5nLnByZXNldHMpLmZpbmQoXG4gICAgICAoWywgcHJlc2V0XSkgPT4gcHJlc2V0ID09PSB0aGlzLFxuICAgICk7XG5cbiAgICBpZiAocHJlc2V0RW50cnkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgICAgaXNQcmVzZXQ6IHRydWUsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICBob3N0Q2xhc3M6IHRoaXMuaG9zdENsYXNzLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIERlc2VyaWFsaXplcyBhIEpTT04gb2JqZWN0IHRvIGEgU2t5VGhlbWVTcGFjaW5nIGluc3RhbmNlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBkZXNlcmlhbGl6ZShkYXRhOiBTa3lUaGVtZVNwYWNpbmdEYXRhKTogU2t5VGhlbWVTcGFjaW5nIHtcbiAgICBpZiAoZGF0YS5pc1ByZXNldCkge1xuICAgICAgY29uc3QgcHJlc2V0ID1cbiAgICAgICAgU2t5VGhlbWVTcGFjaW5nLnByZXNldHNbXG4gICAgICAgICAgZGF0YS5uYW1lIGFzIGtleW9mIHR5cGVvZiBTa3lUaGVtZVNwYWNpbmcucHJlc2V0c1xuICAgICAgICBdO1xuXG4gICAgICBpZiAocHJlc2V0KSB7XG4gICAgICAgIHJldHVybiBwcmVzZXQ7XG4gICAgICB9XG5cbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biB0aGVtZSBzcGFjaW5nIHByZXNldDogJHtkYXRhLm5hbWV9YCk7XG4gICAgfVxuXG4gICAgaWYgKCFkYXRhLmhvc3RDbGFzcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdob3N0Q2xhc3MgaXMgcmVxdWlyZWQgZm9yIG5vbi1wcmVzZXQgdGhlbWUgc3BhY2luZycpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgU2t5VGhlbWVTcGFjaW5nKGRhdGEubmFtZSwgZGF0YS5ob3N0Q2xhc3MpO1xuICB9XG59XG4iXX0=","import { SkyThemeMode } from './theme-mode';\nimport { SkyThemeSpacing } from './theme-spacing';\n/**\n * Defines properties of a SKY UX theme.\n */\nexport class SkyTheme {\n /**\n * The preset themes available in SKY UX.\n */\n static { this.presets = {\n default: new SkyTheme('default', 'sky-theme-default', [SkyThemeMode.presets.light], [SkyThemeSpacing.presets.standard]),\n modern: new SkyTheme('modern', 'sky-theme-modern', [SkyThemeMode.presets.light, SkyThemeMode.presets.dark], [SkyThemeSpacing.presets.standard, SkyThemeSpacing.presets.compact], true),\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(name, hostClass, supportedModes, supportedSpacing = [SkyThemeSpacing.presets.standard], supportsBranding = false) {\n this.name = name;\n this.hostClass = hostClass;\n this.supportedModes = supportedModes;\n this.supportedSpacing = supportedSpacing;\n this.supportsBranding = supportsBranding;\n }\n /**\n * @internal\n * Serializes the theme to a JSON-compatible object.\n */\n serialize() {\n // Check if this instance is a preset\n const presetEntry = Object.entries(SkyTheme.presets).find(([, preset]) => preset === this);\n if (presetEntry) {\n return {\n name: this.name,\n supportedModes: this.supportedModes.map((mode) => mode.serialize()),\n isPreset: true,\n };\n }\n const result = {\n name: this.name,\n hostClass: this.hostClass,\n supportedModes: this.supportedModes.map((mode) => mode.serialize()),\n };\n // Only include supportedSpacing if it's not the default\n if (this.supportedSpacing.length !== 1 ||\n this.supportedSpacing[0] !== SkyThemeSpacing.presets.standard) {\n result.supportedSpacing = this.supportedSpacing.map((spacing) => spacing.serialize());\n }\n // Only include supportsBranding if it's true\n if (this.supportsBranding) {\n result.supportsBranding = this.supportsBranding;\n }\n return result;\n }\n /**\n * @internal\n * Deserializes a JSON object to a SkyTheme instance.\n */\n static deserialize(data) {\n if (data.isPreset) {\n const preset = SkyTheme.presets[data.name];\n if (preset) {\n return preset;\n }\n throw new Error(`Unknown theme preset: ${data.name}`);\n }\n if (!data.hostClass) {\n throw new Error('hostClass is required for non-preset themes');\n }\n const supportedModes = data.supportedModes.map((modeData) => SkyThemeMode.deserialize(modeData));\n const supportedSpacing = data.supportedSpacing\n ? data.supportedSpacing.map((spacingData) => SkyThemeSpacing.deserialize(spacingData))\n : [SkyThemeSpacing.presets.standard];\n return new SkyTheme(data.name, data.hostClass, supportedModes, supportedSpacing, data.supportsBranding ?? false);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGhlbWUvc3JjL2xpYi90aGVtaW5nL3RoZW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWxEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFFBQVE7SUFDbkI7O09BRUc7YUFDb0IsWUFBTyxHQUFHO1FBQy9CLE9BQU8sRUFBRSxJQUFJLFFBQVEsQ0FDbkIsU0FBUyxFQUNULG1CQUFtQixFQUNuQixDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQzVCLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FDbkM7UUFDRCxNQUFNLEVBQUUsSUFBSSxRQUFRLENBQ2xCLFFBQVEsRUFDUixrQkFBa0IsRUFDbEIsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUN2RCxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLGVBQWUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQ25FLElBQUksQ0FDTDtLQUNGLENBQUM7SUFFRjs7Ozs7OztPQU9HO0lBQ0gsWUFDa0IsSUFBWSxFQUNaLFNBQWlCLEVBQ2pCLGNBQThCLEVBQzlCLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQ3JELG1CQUFtQixLQUFLO1FBSnhCLFNBQUksR0FBSixJQUFJLENBQVE7UUFDWixjQUFTLEdBQVQsU0FBUyxDQUFRO1FBQ2pCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXFDO1FBQ3JELHFCQUFnQixHQUFoQixn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QUFJLEtBQUssQ0FDL0IsQ0FBQztJQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTa3lUaGVtZU1vZGUgfSBmcm9tICcuL3RoZW1lLW1vZGUnO1xuaW1wb3J0IHsgU2t5VGhlbWVEYXRhIH0gZnJvbSAnLi90aGVtZS1zZXJpYWxpemF0aW9uLXR5cGVzJztcbmltcG9ydCB7IFNreVRoZW1lU3BhY2luZyB9IGZyb20gJy4vdGhlbWUtc3BhY2luZyc7XG5cbi8qKlxuICogRGVmaW5lcyBwcm9wZXJ0aWVzIG9mIGEgU0tZIFVYIHRoZW1lLlxuICovXG5leHBvcnQgY2xhc3MgU2t5VGhlbWUge1xuICAvKipcbiAgICogVGhlIHByZXNldCB0aGVtZXMgYXZhaWxhYmxlIGluIFNLWSBVWC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgcHJlc2V0cyA9IHtcbiAgICBkZWZhdWx0OiBuZXcgU2t5VGhlbWUoXG4gICAgICAnZGVmYXVsdCcsXG4gICAgICAnc2t5LXRoZW1lLWRlZmF1bHQnLFxuICAgICAgW1NreVRoZW1lTW9kZS5wcmVzZXRzLmxpZ2h0XSxcbiAgICAgIFtTa3lUaGVtZVNwYWNpbmcucHJlc2V0cy5zdGFuZGFyZF0sXG4gICAgKSxcbiAgICBtb2Rlcm46IG5ldyBTa3lUaGVtZShcbiAgICAgICdtb2Rlcm4nLFxuICAgICAgJ3NreS10aGVtZS1tb2Rlcm4nLFxuICAgICAgW1NreVRoZW1lTW9kZS5wcmVzZXRzLmxpZ2h0LCBTa3lUaGVtZU1vZGUucHJlc2V0cy5kYXJrXSxcbiAgICAgIFtTa3lUaGVtZVNwYWNpbmcucHJlc2V0cy5zdGFuZGFyZCwgU2t5VGhlbWVTcGFjaW5nLnByZXNldHMuY29tcGFjdF0sXG4gICAgICB0cnVlLFxuICAgICksXG4gIH07XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgdGhlbWUuXG4gICAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSB0aGVtZS5cbiAgICogQHBhcmFtIGhvc3RDbGFzcyBUaGUgY2xhc3Mgb24gdGhlIGhvc3QgZWxlbWVudCB3aGljaCBjaGlsZCBjb21wb25lbnRzIHNob3VsZCByZWZlcmVuY2Ugd2hlblxuICAgKiBhZGp1c3RpbmcgZm9yIGEgc3BlY2lmaWVkIHRoZW1lLlxuICAgKiBAcGFyYW0gc3VwcG9ydGVkTW9kZXMgQW4gYXJyYXkgb2YgbW9kZXMgc3VwcG9ydGVkIGJ5IHRoZSB0aGVtZS5cbiAgICogQHBhcmFtIHN1cHBvcnRlZFNwYWNpbmcgQW4gYXJyYXkgb2Ygc3BhY2luZyBtb2RlcyBzdXBwb3J0ZWQgYnkgdGhlIHRoZW1lLlxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IG5hbWU6IHN0cmluZyxcbiAgICBwdWJsaWMgcmVhZG9ubHkgaG9zdENsYXNzOiBzdHJpbmcsXG4gICAgcHVibGljIHJlYWRvbmx5IHN1cHBvcnRlZE1vZGVzOiBTa3lUaGVtZU1vZGVbXSxcbiAgICBwdWJsaWMgcmVhZG9ubHkgc3VwcG9ydGVkU3BhY2luZyA9IFtTa3lUaGVtZVNwYWNpbmcucHJlc2V0cy5zdGFuZGFyZF0sXG4gICAgcHVibGljIHJlYWRvbmx5IHN1cHBvcnRzQnJhbmRpbmcgPSBmYWxzZSxcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogU2VyaWFsaXplcyB0aGUgdGhlbWUgdG8gYSBKU09OLWNvbXBhdGlibGUgb2JqZWN0LlxuICAgKi9cbiAgcHVibGljIHNlcmlhbGl6ZSgpOiBTa3lUaGVtZURhdGEge1xuICAgIC8vIENoZWNrIGlmIHRoaXMgaW5zdGFuY2UgaXMgYSBwcmVzZXRcbiAgICBjb25zdCBwcmVzZXRFbnRyeSA9IE9iamVjdC5lbnRyaWVzKFNreVRoZW1lLnByZXNldHMpLmZpbmQoXG4gICAgICAoWywgcHJlc2V0XSkgPT4gcHJlc2V0ID09PSB0aGlzLFxuICAgICk7XG5cbiAgICBpZiAocHJlc2V0RW50cnkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgICAgc3VwcG9ydGVkTW9kZXM6IHRoaXMuc3VwcG9ydGVkTW9kZXMubWFwKChtb2RlKSA9PiBtb2RlLnNlcmlhbGl6ZSgpKSxcbiAgICAgICAgaXNQcmVzZXQ6IHRydWUsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdDogU2t5VGhlbWVEYXRhID0ge1xuICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgaG9zdENsYXNzOiB0aGlzLmhvc3RDbGFzcyxcbiAgICAgIHN1cHBvcnRlZE1vZGVzOiB0aGlzLnN1cHBvcnRlZE1vZGVzLm1hcCgobW9kZSkgPT4gbW9kZS5zZXJpYWxpemUoKSksXG4gICAgfTtcblxuICAgIC8vIE9ubHkgaW5jbHVkZSBzdXBwb3J0ZWRTcGFjaW5nIGlmIGl0J3Mgbm90IHRoZSBkZWZhdWx0XG4gICAgaWYgKFxuICAgICAgdGhpcy5zdXBwb3J0ZWRTcGFjaW5nLmxlbmd0aCAhPT0gMSB8fFxuICAgICAgdGhpcy5zdXBwb3J0ZWRTcGFjaW5nWzBdICE9PSBTa3lUaGVtZVNwYWNpbmcucHJlc2V0cy5zdGFuZGFyZFxuICAgICkge1xuICAgICAgcmVzdWx0LnN1cHBvcnRlZFNwYWNpbmcgPSB0aGlzLnN1cHBvcnRlZFNwYWNpbmcubWFwKChzcGFjaW5nKSA9PlxuICAgICAgICBzcGFjaW5nLnNlcmlhbGl6ZSgpLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBPbmx5IGluY2x1ZGUgc3VwcG9ydHNCcmFuZGluZyBpZiBpdCdzIHRydWVcbiAgICBpZiAodGhpcy5zdXBwb3J0c0JyYW5kaW5nKSB7XG4gICAgICByZXN1bHQuc3VwcG9ydHNCcmFuZGluZyA9IHRoaXMuc3VwcG9ydHNCcmFuZGluZztcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBEZXNlcmlhbGl6ZXMgYSBKU09OIG9iamVjdCB0byBhIFNreVRoZW1lIGluc3RhbmNlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBkZXNlcmlhbGl6ZShkYXRhOiBTa3lUaGVtZURhdGEpOiBTa3lUaGVtZSB7XG4gICAgaWYgKGRhdGEuaXNQcmVzZXQpIHtcbiAgICAgIGNvbnN0IHByZXNldCA9XG4gICAgICAgIFNreVRoZW1lLnByZXNldHNbZGF0YS5uYW1lIGFzIGtleW9mIHR5cGVvZiBTa3lUaGVtZS5wcmVzZXRzXTtcblxuICAgICAgaWYgKHByZXNldCkge1xuICAgICAgICByZXR1cm4gcHJlc2V0O1xuICAgICAgfVxuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gdGhlbWUgcHJlc2V0OiAke2RhdGEubmFtZX1gKTtcbiAgICB9XG5cbiAgICBpZiAoIWRhdGEuaG9zdENsYXNzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2hvc3RDbGFzcyBpcyByZXF1aXJlZCBmb3Igbm9uLXByZXNldCB0aGVtZXMnKTtcbiAgICB9XG5cbiAgICBjb25zdCBzdXBwb3J0ZWRNb2RlcyA9IGRhdGEuc3VwcG9ydGVkTW9kZXMubWFwKChtb2RlRGF0YSkgPT5cbiAgICAgIFNreVRoZW1lTW9kZS5kZXNlcmlhbGl6ZShtb2RlRGF0YSksXG4gICAgKTtcblxuICAgIGNvbnN0IHN1cHBvcnRlZFNwYWNpbmcgPSBkYXRhLnN1cHBvcnRlZFNwYWNpbmdcbiAgICAgID8gZGF0YS5zdXBwb3J0ZWRTcGFjaW5nLm1hcCgoc3BhY2luZ0RhdGEpID0+XG4gICAgICAgICAgU2t5VGhlbWVTcGFjaW5nLmRlc2VyaWFsaXplKHNwYWNpbmdEYXRhKSxcbiAgICAgICAgKVxuICAgICAgOiBbU2t5VGhlbWVTcGFjaW5nLnByZXNldHMuc3RhbmRhcmRdO1xuXG4gICAgcmV0dXJuIG5ldyBTa3lUaGVtZShcbiAgICAgIGRhdGEubmFtZSxcbiAgICAgIGRhdGEuaG9zdENsYXNzLFxuICAgICAgc3VwcG9ydGVkTW9kZXMsXG4gICAgICBzdXBwb3J0ZWRTcGFjaW5nLFxuICAgICAgZGF0YS5zdXBwb3J0c0JyYW5kaW5nID8/IGZhbHNlLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==","/**\n * @internal\n * Defines properties of SKY UX theme branding.\n */\nexport class SkyThemeBrand {\n get hostClass() {\n return this.#hostClass || this.#buildDefaultHostClassName();\n }\n set hostClass(value) {\n this.#hostClass = value;\n }\n #hostClass;\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(name, version, hostClass) {\n this.name = name;\n this.version = version;\n this.hostClass = hostClass;\n if (!/\\d+\\.\\d+\\.\\d+(?:-(?:alpha|beta|rc)\\.\\d)*$/.test(version)) {\n throw new Error(`Invalid version format \"${version}\" for theme brand \"${name}\".`);\n }\n }\n /**\n * @internal\n * Serializes the theme brand to a JSON-compatible object.\n */\n serialize() {\n const result = {\n name: this.name,\n version: this.version,\n };\n // Only include hostClass if it's different from the default\n const defaultHostClass = this.#buildDefaultHostClassName();\n if (this.hostClass !== defaultHostClass) {\n result.hostClass = this.hostClass;\n }\n return result;\n }\n /**\n * @internal\n * Deserializes a JSON object to a SkyThemeBrand instance.\n */\n static deserialize(data) {\n return new SkyThemeBrand(data.name, data.version, data.hostClass);\n }\n #buildDefaultHostClassName() {\n return `sky-theme-brand-${this.name}`;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUtYnJhbmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGhlbWUvc3JjL2xpYi90aGVtaW5nL3RoZW1lLWJyYW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOzs7R0FHRztBQUNILE1BQU0sT0FBTyxhQUFhO0lBQ3hCLElBQVcsU0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7SUFDOUQsQ0FBQztJQUVELElBQVksU0FBUyxDQUFDLEtBQXlCO1FBQzdDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQzFCLENBQUM7SUFFRCxVQUFVLENBQXFCO0lBQy9COzs7OztPQUtHO0lBQ0gsWUFDa0IsSUFBWSxFQUNaLE9BQWUsRUFDL0IsU0FBa0I7UUFGRixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ1osWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUcvQixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUUzQixJQUFJLENBQUMsMkNBQTJDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDL0QsTUFBTSxJQUFJLEtBQUssQ0FDYiwyQkFBMkIsT0FBTyxzQkFBc0IsSUFBSSxJQUFJLENBQ2pFLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNJLFNBQVM7UUFDZCxNQUFNLE1BQU0sR0FBc0I7WUFDaEMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1NBQ3RCLENBQUM7UUFFRiw0REFBNEQ7UUFDNUQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztRQUUzRCxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssZ0JBQWdCLEVBQUUsQ0FBQztZQUN4QyxNQUFNLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDcEMsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxNQUFNLENBQUMsV0FBVyxDQUFDLElBQXVCO1FBQy9DLE9BQU8sSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsMEJBQTBCO1FBQ3hCLE9BQU8sbUJBQW1CLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTa3lUaGVtZUJyYW5kRGF0YSB9IGZyb20gJy4vdGhlbWUtc2VyaWFsaXphdGlvbi10eXBlcyc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKiBEZWZpbmVzIHByb3BlcnRpZXMgb2YgU0tZIFVYIHRoZW1lIGJyYW5kaW5nLlxuICovXG5leHBvcnQgY2xhc3MgU2t5VGhlbWVCcmFuZCB7XG4gIHB1YmxpYyBnZXQgaG9zdENsYXNzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuI2hvc3RDbGFzcyB8fCB0aGlzLiNidWlsZERlZmF1bHRIb3N0Q2xhc3NOYW1lKCk7XG4gIH1cblxuICBwcml2YXRlIHNldCBob3N0Q2xhc3ModmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI2hvc3RDbGFzcyA9IHZhbHVlO1xuICB9XG5cbiAgI2hvc3RDbGFzczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyB0aGVtZSBicmFuZC5cbiAgICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIHRoZW1lIGJyYW5kLlxuICAgKiBAcGFyYW0gaG9zdENsYXNzIFRoZSBjbGFzcyBvbiB0aGUgaG9zdCBlbGVtZW50IHdoaWNoIGNoaWxkIGNvbXBvbmVudHMgc2hvdWxkIHJlZmVyZW5jZSB3aGVuXG4gICAqIGFkanVzdGluZyBmb3IgYSBzcGVjaWZpZWQgdGhlbWUgYnJhbmQuIFRoaXMgZGVmYXVsdHMgdG8gYHNreS10aGVtZS1icmFuZC08bmFtZT5cbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSBuYW1lOiBzdHJpbmcsXG4gICAgcHVibGljIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZyxcbiAgICBob3N0Q2xhc3M/OiBzdHJpbmcsXG4gICkge1xuICAgIHRoaXMuaG9zdENsYXNzID0gaG9zdENsYXNzO1xuXG4gICAgaWYgKCEvXFxkK1xcLlxcZCtcXC5cXGQrKD86LSg/OmFscGhhfGJldGF8cmMpXFwuXFxkKSokLy50ZXN0KHZlcnNpb24pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBJbnZhbGlkIHZlcnNpb24gZm9ybWF0IFwiJHt2ZXJzaW9ufVwiIGZvciB0aGVtZSBicmFuZCBcIiR7bmFtZX1cIi5gLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIFNlcmlhbGl6ZXMgdGhlIHRoZW1lIGJyYW5kIHRvIGEgSlNPTi1jb21wYXRpYmxlIG9iamVjdC5cbiAgICovXG4gIHB1YmxpYyBzZXJpYWxpemUoKTogU2t5VGhlbWVCcmFuZERhdGEge1xuICAgIGNvbnN0IHJlc3VsdDogU2t5VGhlbWVCcmFuZERhdGEgPSB7XG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICB2ZXJzaW9uOiB0aGlzLnZlcnNpb24sXG4gICAgfTtcblxuICAgIC8vIE9ubHkgaW5jbHVkZSBob3N0Q2xhc3MgaWYgaXQncyBkaWZmZXJlbnQgZnJvbSB0aGUgZGVmYXVsdFxuICAgIGNvbnN0IGRlZmF1bHRIb3N0Q2xhc3MgPSB0aGlzLiNidWlsZERlZmF1bHRIb3N0Q2xhc3NOYW1lKCk7XG5cbiAgICBpZiAodGhpcy5ob3N0Q2xhc3MgIT09IGRlZmF1bHRIb3N0Q2xhc3MpIHtcbiAgICAgIHJlc3VsdC5ob3N0Q2xhc3MgPSB0aGlzLmhvc3RDbGFzcztcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBEZXNlcmlhbGl6ZXMgYSBKU09OIG9iamVjdCB0byBhIFNreVRoZW1lQnJhbmQgaW5zdGFuY2UuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGRlc2VyaWFsaXplKGRhdGE6IFNreVRoZW1lQnJhbmREYXRhKTogU2t5VGhlbWVCcmFuZCB7XG4gICAgcmV0dXJuIG5ldyBTa3lUaGVtZUJyYW5kKGRhdGEubmFtZSwgZGF0YS52ZXJzaW9uLCBkYXRhLmhvc3RDbGFzcyk7XG4gIH1cblxuICAjYnVpbGREZWZhdWx0SG9zdENsYXNzTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgc2t5LXRoZW1lLWJyYW5kLSR7dGhpcy5uYW1lfWA7XG4gIH1cbn1cbiJdfQ==","import { SkyTheme } from './theme';\nimport { SkyThemeBrand } from './theme-brand';\nimport { SkyThemeMode } from './theme-mode';\nimport { SkyThemeSpacing } from './theme-spacing';\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(theme, mode, spacing = SkyThemeSpacing.presets.standard, brand) {\n this.theme = theme;\n this.mode = mode;\n this.spacing = spacing;\n this.brand = brand;\n }\n /**\n * Serializes the theme settings to a string.\n */\n serialize() {\n const result = {\n theme: this.theme.serialize(),\n mode: this.mode.serialize(),\n };\n // Only include spacing if it's not the default\n if (this.spacing !== SkyThemeSpacing.presets.standard) {\n result.spacing = this.spacing.serialize();\n }\n // Only include brand if it exists\n if (this.brand) {\n result.brand = this.brand.serialize();\n }\n return JSON.stringify(result);\n }\n /**\n * Deserializes a string to a SkyThemeSettings instance.\n */\n static deserialize(value) {\n const settingsData = JSON.parse(value);\n const theme = SkyTheme.deserialize(settingsData.theme);\n const mode = SkyThemeMode.deserialize(settingsData.mode);\n const spacing = settingsData.spacing\n ? SkyThemeSpacing.deserialize(settingsData.spacing)\n : SkyThemeSpacing.presets.standard;\n const brand = settingsData.brand\n ? SkyThemeBrand.deserialize(settingsData.brand)\n : undefined;\n return new SkyThemeSettings(theme, mode, spacing, brand);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUtc2V0dGluZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGhlbWUvc3JjL2xpYi90aGVtaW5nL3RoZW1lLXNldHRpbmdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDbkMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTVDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVsRDs7R0FFRztBQUNILE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0I7Ozs7T0FJRztJQUNILFlBQ2tCLEtBQWUsRUFDZixJQUFrQixFQUNsQixVQUFVLGVBQWUsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUMxQyxLQUFxQjtRQUhyQixVQUFLLEdBQUwsS0FBSyxDQUFVO1FBQ2YsU0FBSSxHQUFKLElBQUksQ0FBYztRQUNsQixZQUFPLEdBQVAsT0FBTyxDQUFtQztRQUMxQyxVQUFLLEdBQUwsS0FBSyxDQUFnQjtJQUNwQyxDQUFDO0lBRUo7O09BRUc7SUFDSSxTQUFTO1FBQ2QsTUFBTSxNQUFNLEdBQXlCO1lBQ25DLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRTtZQUM3QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7U0FDNUIsQ0FBQztRQUVGLCtDQUErQztRQUMvQyxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssZUFBZSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN0RCxNQUFNLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDNUMsQ0FBQztRQUVELGtDQUFrQztRQUNsQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN4QyxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBYTtRQUNyQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBeUIsQ0FBQztRQUUvRCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2RCxNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6RCxNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsT0FBTztZQUNsQyxDQUFDLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDO1lBQ25ELENBQUMsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztRQUNyQyxNQUFNLEtBQUssR0FBRyxZQUFZLENBQUMsS0FBSztZQUM5QixDQUFDLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO1lBQy9DLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFFZCxPQUFPLElBQUksZ0JBQWdCLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDM0QsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2t5VGhlbWUgfSBmcm9tICcuL3RoZW1lJztcbmltcG9ydCB7IFNreVRoZW1lQnJhbmQgfSBmcm9tICcuL3RoZW1lLWJyYW5kJztcbmltcG9ydCB7IFNreVRoZW1lTW9kZSB9IGZyb20gJy4vdGhlbWUtbW9kZSc7XG5pbXBvcnQgeyBTa3lUaGVtZVNldHRpbmdzRGF0YSB9IGZyb20gJy4vdGhlbWUtc2VyaWFsaXphdGlvbi10eXBlcyc7XG5pbXBvcnQgeyBTa3lUaGVtZVNwYWNpbmcgfSBmcm9tICcuL3RoZW1lLXNwYWNpbmcnO1xuXG4vKipcbiAqIFNwZWNpZmllcyB0aGUgdGhlbWUgYW5kIG1vZGUgdG8gYmUgYXBwbGllZCB0byBhIGhvc3QgZWxlbWVudC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNreVRoZW1lU2V0dGluZ3Mge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBTa3lUaGVtZVNldHRpbmdzIGluc3RhbmNlLlxuICAgKiBAcGFyYW0gdGhlbWUgVGhlIHRoZW1lIGNvbmZpZ3VyYXRpb24uXG4gICAqIEBwYXJhbSBtb2RlIFRoZSB0aGVtZSBtb2RlLlxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IHRoZW1lOiBTa3lUaGVtZSxcbiAgICBwdWJsaWMgcmVhZG9ubHkgbW9kZTogU2t5VGhlbWVNb2RlLFxuICAgIHB1YmxpYyByZWFkb25seSBzcGFjaW5nID0gU2t5VGhlbWVTcGFjaW5nLnByZXNldHMuc3RhbmRhcmQsXG4gICAgcHVibGljIHJlYWRvbmx5IGJyYW5kPzogU2t5VGhlbWVCcmFuZCxcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBTZXJpYWxpemVzIHRoZSB0aGVtZSBzZXR0aW5ncyB0byBhIHN0cmluZy5cbiAgICovXG4gIHB1YmxpYyBzZXJpYWxpemUoKTogc3RyaW5nIHtcbiAgICBjb25zdCByZXN1bHQ6IFNreVRoZW1lU2V0dGluZ3NEYXRhID0ge1xuICAgICAgdGhlbWU6IHRoaXMudGhlbWUuc2VyaWFsaXplKCksXG4gICAgICBtb2RlOiB0aGlzLm1vZGUuc2VyaWFsaXplKCksXG4gICAgfTtcblxuICAgIC8vIE9ubHkgaW5jbHVkZSBzcGFjaW5nIGlmIGl0J3Mgbm90IHRoZSBkZWZhdWx0XG4gICAgaWYgKHRoaXMuc3BhY2luZyAhPT0gU2t5VGhlbWVTcGFjaW5nLnByZXNldHMuc3RhbmRhcmQpIHtcbiAgICAgIHJlc3VsdC5zcGFjaW5nID0gdGhpcy5zcGFjaW5nLnNlcmlhbGl6ZSgpO1xuICAgIH1cblxuICAgIC8vIE9ubHkgaW5jbHVkZSBicmFuZCBpZiBpdCBleGlzdHNcbiAgICBpZiAodGhpcy5icmFuZCkge1xuICAgICAgcmVzdWx0LmJyYW5kID0gdGhpcy5icmFuZC5zZXJpYWxpemUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkocmVzdWx0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXNlcmlhbGl6ZXMgYSBzdHJpbmcgdG8gYSBTa3lUaGVtZVNldHRpbmdzIGluc3RhbmNlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBkZXNlcmlhbGl6ZSh2YWx1ZTogc3RyaW5nKTogU2t5VGhlbWVTZXR0aW5ncyB7XG4gICAgY29uc3Qgc2V0dGluZ3NEYXRhID0gSlNPTi5wYXJzZSh2YWx1ZSkgYXMgU2t5VGhlbWVTZXR0aW5nc0RhdGE7XG5cbiAgICBjb25zdCB0aGVtZSA9IFNreVRoZW1lLmRlc2VyaWFsaXplKHNldHRpbmdzRGF0YS50aGVtZSk7XG4gICAgY29uc3QgbW9kZSA9IFNreVRoZW1lTW9kZS5kZXNlcmlhbGl6ZShzZXR0aW5nc0RhdGEubW9kZSk7XG4gICAgY29uc3Qgc3BhY2luZyA9IHNldHRpbmdzRGF0YS5zcGFjaW5nXG4gICAgICA/IFNreVRoZW1lU3BhY2luZy5kZXNlcmlhbGl6ZShzZXR0aW5nc0RhdGEuc3BhY2luZylcbiAgICAgIDogU2t5VGhlbWVTcGFjaW5nLnByZXNldHMuc3RhbmRhcmQ7XG4gICAgY29uc3QgYnJhbmQgPSBzZXR0aW5nc0RhdGEuYnJhbmRcbiAgICAgID8gU2t5VGhlbWVCcmFuZC5kZXNlcmlhbGl6ZShzZXR0aW5nc0RhdGEuYnJhbmQpXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIHJldHVybiBuZXcgU2t5VGhlbWVTZXR0aW5ncyh0aGVtZSwgbW9kZSwgc3BhY2luZywgYnJhbmQpO1xuICB9XG59XG4iXX0=","import { Injectable } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\nimport { SkyThemeMode } from './theme-mode';\nimport { SkyThemeSettings } from './theme-settings';\nimport { SkyThemeSpacing } from './theme-spacing';\nimport * as i0 from \"@angular/core\";\nfunction assertCurrentSettings(currentSettings) {\n if (!currentSettings) {\n throw new Error('Theme service is not initialized. Call init() first.');\n }\n}\n/**\n * Provides methods for updating and handling changes to the current theme.\n */\nexport class SkyThemeService {\n /**\n * Notifies consumers when the current theme settings have changed.\n */\n get settingsChange() {\n return this.#_settingsObs;\n }\n #current;\n #brandLinkElement;\n #hostEl;\n #renderer;\n #settings;\n #_settingsObs;\n constructor() {\n this.#settings = new ReplaySubject(1);\n this.#_settingsObs = this.#settings.asObservable();\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 init(hostEl, renderer, theme) {\n this.#hostEl = hostEl;\n this.#renderer = renderer;\n this.setTheme(theme);\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 destroy() {\n this.#settings.complete();\n this.#hostEl = this.#renderer = undefined;\n }\n /**\n * Updates the current theme mode.\n * @param mode The new theme mode to apply.\n */\n setThemeMode(mode) {\n this.#updateThemeProperty('mode', mode);\n }\n /**\n * Updates the current theme spacing.\n * @param spacing The new theme spacing to apply.\n */\n setThemeSpacing(spacing) {\n this.#updateThemeProperty('spacing', spacing);\n }\n /**\n * Updates the current theme brand.\n * @param brand The new theme brand to apply.\n */\n setThemeBrand(brand) {\n this.#updateThemeProperty('brand', brand);\n }\n setTheme(settingsOrTheme) {\n let settings;\n if (settingsOrTheme instanceof SkyThemeSettings) {\n settings = settingsOrTheme;\n }\n else {\n const current = this.#current;\n assertCurrentSettings(current);\n settings = new SkyThemeSettings(settingsOrTheme, current.mode, current.spacing, settingsOrTheme.supportsBranding ? current.brand : undefined);\n }\n const previous = this.#current;\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 this.#settings.next({\n currentSettings: settings,\n previousSettings: previous,\n });\n this.#current = settings;\n }\n #updateThemeProperty(property, value) {\n const current = this.#current;\n assertCurrentSettings(current);\n const currentTheme = current.theme;\n let supportedValues = undefined;\n switch (property) {\n case 'mode':\n supportedValues = currentTheme.supportedModes;\n break;\n case 'spacing':\n supportedValues = currentTheme.supportedSpacing;\n break;\n default:\n }\n if (supportedValues && !supportedValues.includes(value)) {\n throw new Error(`The current theme does not support the specified ${property}.`);\n }\n const updatedSettings = {\n theme: current.theme,\n mode: current.mode,\n spacing: current.spacing,\n brand: current.brand,\n [property]: value,\n };\n this.setTheme(new SkyThemeSettings(updatedSettings.theme, updatedSettings.mode, updatedSettings.spacing, updatedSettings.brand));\n }\n #applyThemeClass(previous, current, prop, supportedProp) {\n const currentSetting = current[prop];\n const previousClass = previous?.[prop]?.hostClass;\n const currentClass = currentSetting?.hostClass;\n if (!previousClass || previousClass !== currentClass) {\n this.#updateHostClass(prop, previousClass, currentClass, currentSetting, current, supportedProp);\n if (prop === 'brand') {\n if (!current.theme.supportsBranding && currentSetting) {\n throw new Error('Branding is not supported for the given theme.');\n }\n this.#updateBrandStylesheet(current.brand, previous?.brand);\n }\n }\n }\n #updateBrandStylesheet(currentBrand, previousBrand) {\n if (currentBrand &&\n currentBrand.name !== 'blackbaud' &&\n previousBrand !== currentBrand) {\n this.#addBrandStylesheet(currentBrand);\n }\n else {\n this.#removeBrandStylesheet();\n }\n }\n #updateHostClass(prop, previousClass, currentClass, currentSetting, current, supportedProp) {\n if (previousClass) {\n this.#removeHostClass(previousClass);\n }\n if (prop === 'brand') {\n if (currentClass && !previousClass) {\n this.#addHostClass('sky-theme-brand-base');\n }\n else if (!currentClass && previousClass) {\n this.#removeHostClass('sky-theme-brand-base');\n }\n }\n if (currentClass &&\n this.#isSupportedProperty(currentSetting, current, supportedProp)) {\n this.#addHostClass(currentClass);\n }\n }\n #addBrandStylesheet(brand) {\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 // Create a link element via Angular's renderer to avoid SSR troubles\n this.#brandLinkElement = this.#getRenderer().createElement('link');\n // Add the style to the head section\n this.#getRenderer().appendChild(this.#hostEl, this.#brandLinkElement);\n // Set type of the link item and path to the css file\n this.#getRenderer().setProperty(this.#brandLinkElement, 'rel', 'stylesheet');\n this.#getRenderer().setProperty(this.#brandLinkElement, 'href', cssPath);\n }\n }\n #removeBrandStylesheet() {\n if (this.#brandLinkElement) {\n this.#getRenderer().removeChild(this.#hostEl, this.#brandLinkElement);\n this.#brandLinkElement = undefined;\n }\n }\n #addHostClass(className) {\n this.#getRenderer().addClass(this.#hostEl, className);\n }\n #removeHostClass(className) {\n this.#getRenderer().removeClass(this.#hostEl, className);\n }\n #getRenderer() {\n if (!this.#renderer) {\n throw new Error('Renderer is not initialized. Have you called the theme service `init` method?');\n }\n return this.#renderer;\n }\n #isSupportedProperty(currentSetting, current, supportedProp) {\n return (!supportedProp ||\n ((currentSetting instanceof SkyThemeMode ||\n currentSetting instanceof SkyThemeSpacing) &&\n current.theme[supportedProp].includes(currentSetting)));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyThemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyThemeService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyThemeService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90aGVtZS9zcmMvbGliL3RoZW1pbmcvdGhlbWUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRXRELE9BQU8sRUFBYyxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM1QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBRWxELFNBQVMscUJBQXFCLENBQzVCLGVBQTZDO0lBRTdDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLHNEQUFzRCxDQUFDLENBQUM7SUFDMUUsQ0FBQztBQUNILENBQUM7QUFFRDs7R0FFRztBQUVILE1BQU0sT0FBTyxlQUFlO0lBQzFCOztPQUVHO0lBQ0gsSUFBVyxjQUFjO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBRUQsUUFBUSxDQUErQjtJQUV2QyxpQkFBaUIsQ0FBOEI7SUFFL0MsT0FBTyxDQUFrQjtJQUV6QixTQUFTLENBQXdCO0lBRWpDLFNBQVMsQ0FBd0M7SUFFakQsYUFBYSxDQUFxQztJQUVsRDtRQUNFLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxhQUFhLENBQXlCLENBQUMsQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNyRCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksSUFBSSxDQUFDLE1BQVcsRUFBRSxRQUFtQixFQUFFLEtBQXVCO1FB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QUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNwQixNQUFNLElBQUksS0FBSyxDQUNiLCtFQUErRSxDQUNoRixDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQsb0JBQW9CLENBQ2xCLGNBS2EsRUFDYixPQUF5QixFQUN6QixhQUFxRDtRQUVyRCxPQUFPLENBQ0wsQ0FBQyxhQUFhO1lBQ2QsQ0FBQyxDQUFDLGNBQWMsWUFBWSxZQUFZO2dCQUN0QyxjQUFjLFlBQVksZUFBZSxDQUFDO2dCQUMxQyxPQUFPLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUN6RCxDQUFDO0lBQ0osQ0FBQzs4R0FqVFUsZUFBZTtrSEFBZixlQUFlOzsyRkFBZixlQUFlO2tCQUQzQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2t5VGhlbWUgfSBmcm9tICcuL3RoZW1lJztcbmltcG9ydCB7IFNreVRoZW1lQnJhbmQgfSBmcm9tICcuL3RoZW1lLWJyYW5kJztcbmltcG9ydCB7IFNreVRoZW1lTW9kZSB9IGZyb20gJy4vdGhlbWUtbW9kZSc7XG5pbXBvcnQgeyBTa3lUaGVtZVNldHRpbmdzIH0gZnJvbSAnLi90aGVtZS1zZXR0aW5ncyc7XG5pbXBvcnQgeyBTa3lUaGVtZVNldHRpbmdzQ2hhbmdlIH0gZnJvbSAnLi90aGVtZS1zZXR0aW5ncy1jaGFuZ2UnO1xuaW1wb3J0IHsgU2t5VGhlbWVTcGFjaW5nIH0gZnJvbSAnLi90aGVtZS1zcGFjaW5nJztcblxuZnVuY3Rpb24gYXNzZXJ0Q3VycmVudFNldHRpbmdzKFxuICBjdXJyZW50U2V0dGluZ3M6IFNreVRoZW1lU2V0dGluZ3MgfCB1bmRlZmluZWQsXG4pOiBhc3NlcnRzIGN1cnJlbnRTZXR0aW5ncyBpcyBTa3lUaGVtZVNldHRpbmdzIHtcbiAgaWYgKCFjdXJyZW50U2V0dGluZ3MpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZW1lIHNlcnZpY2UgaXMgbm90IGluaXRpYWxpemVkLiBDYWxsIGluaXQoKSBmaXJzdC4nKTtcbiAgfVxufVxuXG4vKipcbiAqIFByb3ZpZGVzIG1ldGhvZHMgZm9yIHVwZGF0aW5nIGFuZCBoYW5kbGluZyBjaGFuZ2VzIHRvIHRoZSBjdXJyZW50IHRoZW1lLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU2t5VGhlbWVTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIE5vdGlmaWVzIGNvbnN1bWVycyB3aGVuIHRoZSBjdXJyZW50IHRoZW1lIHNldHRpbmdzIGhhdmUgY2hhbmdlZC5cbiAgICovXG4gIHB1YmxpYyBnZXQgc2V0dGluZ3NDaGFuZ2UoKTogT2JzZXJ2YWJsZTxTa3lUaGVtZVNldHRpbmdzQ2hhbmdlPiB7XG4gICAgcmV0dXJuIHRoaXMuI19zZXR0aW5nc09icztcbiAgfVxuXG4gICNjdXJyZW50OiBTa3lUaGVtZVNldHRpbmdzIHwgdW5kZWZpbmVkO1xuXG4gICNicmFuZExpbmtFbGVtZW50OiBIVE1MTGlua0VsZW1lbnQgfCB1bmRlZmluZWQ7XG5cbiAgI2hvc3RFbDogYW55IHwgdW5kZWZpbmVkO1xuXG4gICNyZW5kZXJlcjogUmVuZGVyZXIyIHwgdW5kZWZpbmVkO1xuXG4gICNzZXR0aW5nczogUmVwbGF5U3ViamVjdDxTa3lUaGVtZVNldHRpbmdzQ2hhbmdlPjtcblxuICAjX3NldHRpbmdzT2JzOiBPYnNlcnZhYmxlPFNreVRoZW1lU2V0dGluZ3NDaGFuZ2U+O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuI3NldHRpbmdzID0gbmV3IFJlcGxheVN1YmplY3Q8U2t5VGhlbWVTZXR0aW5nc0NoYW5nZT4oMSk7XG4gICAgdGhpcy4jX3NldHRpbmdzT2JzID0gdGhpcy4jc2V0dGluZ3MuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIHRoZW1lIHNlcnZpY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIHBhcmFtZXRlcnMuIFRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkXG4gICAqIGZyb20gYSBob3N0IGNvbXBvbmVudCB0aGF0IHByb3ZpZGVzIGl0cyBvd24gdGhlbWUgdG8gY2hpbGQgY29tcG9uZW50cy5cbiAgICogQHBhcmFtIGhvc3RFbCBUaGUgaG9zdCBlbGVtZW50IHVuZGVyIHdoaWNoIHRoZW1lZCBjb21wb25lbnRzIGFyZSByZW5kZXJlZC5cbiAgICogQHBhcmFtIHJlbmRlcmVyIEEgUmVuZGVyZXIyIGluc3RhbmNlIGZvciB1cGRhdGluZyB0aGUgaG9zdCBlbGVtZW50IHdpdGggdGhlbWUgY2hhbmdlcy5cbiAgICogQHBhcmFtIHRoZW1lIFRoZSBpbml0aWFsIHRoZW1lLlxuICAgKi9cbiAgcHVibGljIGluaXQoaG9zdEVsOiBhbnksIHJlbmRlcmVyOiBSZW5kZXJlcjIsIHRoZW1lOiBTa3lUaGVtZVNldHRpbmdzKTogdm9pZCB7XG4gICAgdGhpcy4jaG9zdEVsID0gaG9zdEVsO1xuICAgIHRoaXMuI3JlbmRlcmVyID0gcmVuZGVyZXI7XG5cbiAgICB0aGlzLnNldFRoZW1lKHRoZW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXN0cm95cyB0aGUgY3VycmVudCB0aGVtZSBzZXJ2aWNlLiBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBmcm9tIGEgaG9zdCBjb21wb25lbnQgdGhhdFxuICAgKiBwcm92aWRlcyBpdHMgb3duIHRoZW1lIHRvIGNoaWxkIGNvbXBvbmVudHMuXG4gICAqL1xuICBwdWJsaWMgZGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNzZXR0aW5ncy5jb21wbGV0ZSgpO1xuXG4gICAgdGhpcy4jaG9zdEVsID0gdGhpcy4jcmVuZGVyZXIgPSB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgY3VycmVudCB0aGVtZSBtb2RlLlxuICAgKiBAcGFyYW0gbW9kZSBUaGUgbmV3IHRoZW1lIG1vZGUgdG8gYXBwbHkuXG4gICAqL1xuICBwdWJsaWMgc2V0VGhlbWVNb2RlKG1vZGU6IFNreVRoZW1lTW9kZSk6IHZvaWQge1xuICAgIHRoaXMuI3VwZGF0ZVRoZW1lUHJvcGVydHkoJ21vZGUnLCBtb2RlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBjdXJyZW50IHRoZW1lIHNwYWNpbmcuXG4gICAqIEBwYXJhbSBzcGFjaW5nIFRoZSBuZXcgdGhlbWUgc3BhY2luZyB0byBhcHBseS5cbiAgICovXG4gIHB1YmxpYyBzZXRUaGVtZVNwYWNpbmcoc3BhY2luZzogU2t5VGhlbWVTcGFjaW5nKTogdm9pZCB7XG4gICAgdGhpcy4jdXBkYXRlVGhlbWVQcm9wZXJ0eSgnc3BhY2luZycsIHNwYWNpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIGN1cnJlbnQgdGhlbWUgYnJhbmQuXG4gICAqIEBwYXJhbSBicmFuZCBUaGUgbmV3IHRoZW1lIGJyYW5kIHRvIGFwcGx5LlxuICAgKi9cbiAgcHVibGljIHNldFRoZW1lQnJhbmQoYnJhbmQ6IFNreVRoZW1lQnJhbmQpOiB2b2lkIHtcbiAgICB0aGlzLiN1cGRhdGVUaGVtZVByb3BlcnR5KCdicmFuZCcsIGJyYW5kKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBjdXJyZW50IHRoZW1lIHNldHRpbmdzLlxuICAgKiBAcGFyYW0gc2V0dGluZ3MgVGhlIG5ldyB0aGVtZSBzZXR0aW5ncyB0byBhcHBseS5cbiAgICovXG4gIHB1YmxpYyBzZXRUaGVtZShzZXR0aW5nczogU2t5VGhlbWVTZXR0aW5ncyk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIGN1cnJlbnQgdGhlbWUuXG4gICAqIEBwYXJhbSB0aGVtZSBUaGUgbmV3IHRoZW1lIHRvIGFwcGx5LlxuICAgKi9cbiAgcHVibGljIHNldFRoZW1lKHRoZW1lOiBTa3lUaGVtZSk6IHZvaWQ7XG5cbiAgcHVibGljIHNldFRoZW1lKHNldHRpbmdzT3JUaGVtZTogU2t5VGhlbWVTZXR0aW5ncyB8IFNreVRoZW1lKTogdm9pZCB7XG4gICAgbGV0IHNldHRpbmdzOiBTa3lUaGVtZVNldHRpbmdzO1xuXG4gICAgaWYgKHNldHRpbmdzT3JUaGVtZSBpbnN0YW5jZW9mIFNreVRoZW1lU2V0dGluZ3MpIHtcbiAgICAgIHNldHRpbmdzID0gc2V0dGluZ3NPclRoZW1lO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjdXJyZW50ID0gdGhpcy4jY3VycmVudDtcblxuICAgICAgYXNzZXJ0Q3VycmVudFNldHRpbmdzKGN1cnJlbnQpO1xuXG4gICAgICBzZXR0aW5ncyA9IG5ldyBTa3lUaGVtZVNldHRpbmdzKFxuICAgICAgICBzZXR0aW5nc09yVGhlbWUsXG4gICAgICAgIGN1cnJlbnQubW9kZSxcbiAgICAgICAgY3VycmVudC5zcGFjaW5nLFxuICAgICAgICBzZXR0aW5nc09yVGhlbWUuc3VwcG9ydHNCcmFuZGluZyA/IGN1cnJlbnQuYnJhbmQgOiB1bmRlZmluZWQsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHByZXZpb3VzID0gdGhpcy4jY3VycmVudDtcblxuICAgIHRoaXMuI2FwcGx5VGhlbWVDbGFzcyhwcmV2aW91cywgc2V0dGluZ3MsICd0aGVtZScpO1xuICAgIHRoaXMuI2FwcGx5VGhlbWVDbGFzcyhwcmV2aW91cywgc2V0dGluZ3MsICdtb2RlJywgJ3N1cHBvcnRlZE1vZGVzJyk7XG4gICAgdGhpcy4jYXBwbHlUaGVtZUNsYXNzKHByZXZpb3VzLCBzZXR0aW5ncywgJ3NwYWNpbmcnLCAnc3VwcG9ydGVkU3BhY2luZycpO1xuICAgIHRoaXMuI2FwcGx5VGhlbWVDbGFzcyhwcmV2aW91cywgc2V0dGluZ3MsICdicmFuZCcpO1xuXG4gICAgdGhpcy4jc2V0dGluZ3MubmV4dCh7XG4gICAgICBjdXJyZW50U2V0dGluZ3M6IHNldHRpbmdzLFxuICAgICAgcHJldmlvdXNTZXR0aW5nczogcHJldmlvdXMsXG4gICAgfSk7XG5cbiAgICB0aGlzLiNjdXJyZW50ID0gc2V0dGluZ3M7XG4gIH1cblxuICAjdXBkYXRlVGhlbWVQcm9wZXJ0eShcbiAgICBwcm9wZXJ0eTogJ21vZGUnIHwgJ3NwYWNpbmcnIHwgJ2JyYW5kJyxcbiAgICB2YWx1ZTogU2t5VGhlbWVNb2RlIHwgU2t5VGhlbWVTcGFjaW5nIHwgU2t5VGhlbWVCcmFuZCxcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMuI2N1cnJlbnQ7XG5cbiAgICBhc3NlcnRDdXJyZW50U2V0dGluZ3MoY3VycmVudCk7XG5cbiAgICBjb25zdCBjdXJyZW50VGhlbWUgPSBjdXJyZW50LnRoZW1lO1xuXG4gICAgbGV0IHN1cHBvcnRlZFZhbHVlczogU2t5VGhlbWVNb2RlW10gfCBTa3lUaGVtZVNwYWNpbmdbXSB8IHVuZGVmaW5lZCA9XG4gICAgICB1bmRlZmluZWQ7XG5cbiAgICBzd2l0Y2ggKHByb3BlcnR5KSB7XG4gICAgICBjYXNlICdtb2RlJzpcbiAgICAgICAgc3VwcG9ydGVkVmFsdWVzID0gY3VycmVudFRoZW1lLnN1cHBvcnRlZE1vZGVzO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3NwYWNpbmcnOlxuICAgICAgICBzdXBwb3J0ZWRWYWx1ZXMgPSBjdXJyZW50VGhlbWUuc3VwcG9ydGVkU3BhY2luZztcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgIH1cblxuICAgIGlmIChzdXBwb3J0ZWRWYWx1ZXMgJiYgIXN1cHBvcnRlZFZhbHVlcy5pbmNsdWRlcyh2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFRoZSBjdXJyZW50IHRoZW1lIGRvZXMgbm90IHN1cHBvcnQgdGhlIHNwZWNpZmllZCAke3Byb3BlcnR5fS5gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCB1cGRhdGVkU2V0dGluZ3MgPSB7XG4gICAgICB0aGVtZTogY3VycmVudC50aGVtZSxcbiAgICAgIG1vZGU6IGN1cnJlbnQubW9kZSxcbiAgICAgIHNwYWNpbmc6IGN1cnJlbnQuc3BhY2luZyxcbiAgICAgIGJyYW5kOiBjdXJyZW50LmJyYW5kLFxuICAgICAgW3Byb3BlcnR5XTogdmFsdWUsXG4gICAgfTtcblxuICAgIHRoaXMuc2V0VGhlbWUoXG4gICAgICBuZXcgU2t5VGhlbWVTZXR0aW5ncyhcbiAgICAgICAgdXBkYXRlZFNldHRpbmdzLnRoZW1lLFxuICAgICAgICB1cGRhdGVkU2V0dGluZ3MubW9kZSxcbiAgICAgICAgdXBkYXRlZFNldHRpbmdzLnNwYWNpbmcsXG4gICAgICAgIHVwZGF0ZWRTZXR0aW5ncy5icmFuZCxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gICNhcHBseVRoZW1lQ2xhc3MoXG4gICAgcHJldmlvdXM6IFNreVRoZW1lU2V0dGluZ3MgfCB1bmRlZmluZWQsXG4gICAgY3VycmVudDogU2t5VGhlbWVTZXR0aW5ncyxcbiAgICBwcm9wOiAndGhlbWUnIHwgJ21vZGUnIHwgJ3NwYWNpbmcnIHwgJ2JyYW5kJyxcbiAgICBzdXBwb3J0ZWRQcm9wPzogJ3N1cHBvcnRlZE1vZGVzJyB8ICdzdXBwb3J0ZWRTcGFjaW5nJyxcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFNldHRpbmcgPSBjdXJyZW50W3Byb3BdO1xuICAgIGNvbnN0IHByZXZpb3VzQ2xhc3MgPSBwcmV2aW91cz8uW3Byb3BdPy5ob3N0Q2xhc3M7XG4gICAgY29uc3QgY3VycmVudENsYXNzID0gY3VycmVudFNldHRpbmc/Lmhvc3RDbGFzcztcblxuICAgIGlmICghcHJldmlvdXNDbGFzcyB8fCBwcmV2aW91c0NsYXNzICE9PSBjdXJyZW50Q2xhc3MpIHtcbiAgICAgIHRoaXMuI3VwZGF0ZUhvc3RDbGFzcyhcbiAgICAgICAgcHJvcCxcbiAgICAgICAgcHJldmlvdXNDbGFzcyxcbiAgICAgICAgY3VycmVudENsYXNzLFxuICAgICAgICBjdXJyZW50U2V0dGluZyxcbiAgICAgICAgY3VycmVudCxcbiAgICAgICAgc3VwcG9ydGVkUHJvcCxcbiAgICAgICk7XG5cbiAgICAgIGlmIChwcm9wID09PSAnYnJhbmQnKSB7XG4gICAgICAgIGlmICghY3VycmVudC50aGVtZS5zdXBwb3J0c0JyYW5kaW5nICYmIGN1cnJlbnRTZXR0aW5nKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdCcmFuZGluZyBpcyBub3Qgc3VwcG9ydGVkIGZvciB0aGUgZ2l2ZW4gdGhlbWUuJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLiN1cGRhdGVCcmFuZFN0eWxlc2hlZXQoY3VycmVudC5icmFuZCwgcHJldmlvdXM/LmJyYW5kKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAjdXBkYXRlQnJhbmRTdHlsZXNoZWV0KFxuICAgIGN1cnJlbnRCcmFuZDogU2t5VGhlbWVCcmFuZCB8IHVuZGVmaW5lZCxcbiAgICBwcmV2aW91c0JyYW5kOiBTa3lUaGVtZUJyYW5kIHwgdW5kZWZpbmVkLFxuICApOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICBjdXJyZW50QnJhbmQgJiZcbiAgICAgIGN1cnJlbnRCcmFuZC5uYW1lICE9PSAnYmxhY2tiYXVkJyAmJlxuICAgICAgcHJldmlvdXNCcmFuZCAhPT0gY3VycmVudEJyYW5kXG4gICAgKSB7XG4gICAgICB0aGlzLiNhZGRCcmFuZFN0eWxlc2hlZXQoY3VycmVudEJyYW5kKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4jcmVtb3ZlQnJhbmRTdHlsZXNoZWV0KCk7XG4gICAgfVxuICB9XG5cbiAgI3VwZGF0ZUhvc3RDbGFzcyhcbiAgICBwcm9wOiAndGhlbWUnIHwgJ21vZGUnIHwgJ3NwYWNpbmcnIHwgJ2JyYW5kJyxcbiAgICBwcmV2aW91c0NsYXNzOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgY3VycmVudENsYXNzOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgY3VycmVudFNldHRpbmc6XG4gICAgICB8IFNreVRoZW1lXG4gICAgICB8IFNreVRoZW1lTW9kZVxuICAgICAgfCBTa3lUaGVtZVNwYWNpbmdcbiAgICAgIHwgU2t5VGhlbWVCcmFuZFxuICAgICAgfCB1bmRlZmluZWQsXG4gICAgY3VycmVudDogU2t5VGhlbWVTZXR0aW5ncyxcbiAgICBzdXBwb3J0ZWRQcm9wPzogJ3N1cHBvcnRlZE1vZGVzJyB8ICdzdXBwb3J0ZWRTcGFjaW5nJyxcbiAgKTogdm9pZCB7XG4gICAgaWYgKHByZXZpb3VzQ2xhc3MpIHtcbiAgICAgIHRoaXMuI3JlbW92ZUhvc3RDbGFzcyhwcmV2aW91c0NsYXNzKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcCA9PT0gJ2JyYW5kJykge1xuICAgICAgaWYgKGN1cnJlbnRDbGFzcyAmJiAhcHJldmlvdXNDbGFzcykge1xuICAgICAgICB0aGlzLiNhZGRIb3N0Q2xhc3MoJ3NreS10aGVtZS1icmFuZC1iYXNlJyk7XG4gICAgICB9IGVsc2UgaWYgKCFjdXJyZW50Q2xhc3MgJiYgcHJldmlvdXNDbGFzcykge1xuICAgICAgICB0aGlzLiNyZW1vdmVIb3N0Q2xhc3MoJ3NreS10aGVtZS1icmFuZC1iYXNlJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgY3VycmVudENsYXNzICYmXG4gICAgICB0aGlzLiNpc1N1cHBvcnRlZFByb3BlcnR5KGN1cnJlbnRTZXR0aW5nLCBjdXJyZW50LCBzdXBwb3J0ZWRQcm9wKVxuICAgICkge1xuICAgICAgdGhpcy4jYWRkSG9zdENsYXNzKGN1cnJlbnRDbGFzcyk7XG4gICAgfVxuICB9XG5cbiAgI2FkZEJyYW5kU3R5bGVzaGVldChicmFuZDogU2t5VGhlbWVCcmFuZCk6IHZvaWQge1xuICAgIGlmIChicmFuZC5uYW1lICE9PSAnYmxhY2tiYXVkJykge1xuICAgICAgY29uc3QgY3NzUGF0aCA9IGBodHRwczovL3NreS5ibGFja2JhdWRjZG4ubmV0L3N0YXRpYy9za3l1eC1icmFuZC0ke2JyYW5kLm5hbWV9LyR7YnJhbmQudmVyc2lvbn0vYXNzZXRzL3Njc3MvJHticmFuZC5uYW1lfS5jc3NgO1xuXG4gICAgICAvLyBDcmVhdGUgYSBsaW5rIGVsZW1lbnQgdmlhIEFuZ3VsYXIncyByZW5kZXJlciB0byBhdm9pZCBTU1IgdHJvdWJsZXNcbiAgICAgIHRoaXMuI2JyYW5kTGlua0VsZW1lbnQgPSB0aGlzLiNnZXRSZW5kZXJlcigpLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICdsaW5rJyxcbiAgICAgICkgYXMgSFRNTExpbmtFbGVtZW50O1xuXG4gICAgICAvLyBBZGQgdGhlIHN0eWxlIHRvIHRoZSBoZWFkIHNlY3Rpb25cbiAgICAgIHRoaXMuI2dldFJlbmRlcmVyKCkuYXBwZW5kQ2hpbGQodGhpcy4jaG9zdEVsLCB0aGlzLiNicmFuZExpbmtFbGVtZW50KTtcblxuICAgICAgLy8gU2V0IHR5cGUgb2YgdGhlIGxpbmsgaXRlbSBhbmQgcGF0aCB0byB0aGUgY3NzIGZpbGVcbiAgICAgIHRoaXMuI2dldFJlbmRlcmVyKCkuc2V0UHJvcGVydHkoXG4gICAgICAgIHRoaXMuI2JyYW5kTGlua0VsZW1lbnQsXG4gICAgICAgICdyZWwnLFxuICAgICAgICAnc3R5bGVzaGVldCcsXG4gICAgICApO1xuICAgICAgdGhpcy4jZ2V0UmVuZGVyZXIoKS5zZXRQcm9wZXJ0eSh0aGlzLiNicmFuZExpbmtFbGVtZW50LCAnaHJlZicsIGNzc1BhdGgpO1xuICAgIH1cbiAgfVxuXG4gICNyZW1vdmVCcmFuZFN0eWxlc2hlZXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI2JyYW5kTGlua0VsZW1lbnQpIHtcbiAgICAgIHRoaXMuI2dldFJlbmRlcmVyKCkucmVtb3ZlQ2hpbGQodGhpcy4jaG9zdEVsLCB0aGlzLiNicmFuZExpbmtFbGVtZW50KTtcbiAgICAgIHRoaXMuI2JyYW5kTGlua0VsZW1lbnQgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgI2FkZEhvc3RDbGFzcyhjbGFzc05hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuI2dldFJlbmRlcmVyKCkuYWRkQ2xhc3ModGhpcy4jaG9zdEVsLCBjbGFzc05hbWUpO1xuICB9XG5cbiAgI3JlbW92ZUhvc3RDbGFzcyhjbGFzc05hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuI2dldFJlbmRlcmVyKCkucmVtb3ZlQ2xhc3ModGhpcy4jaG9zdEVsLCBjbGFzc05hbWUpO1xuICB9XG5cbiAgI2dldFJlbmRlcmVyKCk6IFJlbmRlcmVyMiB7XG4gICAgaWYgKCF0aGlzLiNyZW5kZXJlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnUmVuZGVyZXIgaXMgbm90IGluaXRpYWxpemVkLiBIYXZlIHlvdSBjYWxsZWQgdGhlIHRoZW1lIHNlcnZpY2UgYGluaXRgIG1ldGhvZD8nLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuI3JlbmRlcmVyO1xuICB9XG5cbiAgI2lzU3VwcG9ydGVkUHJvcGVydHkoXG4gICAgY3VycmVudFNldHRpbmc6XG4gICAgICB8IFNreVRoZW1lXG4gICAgICB8IFNreVRoZW1lTW9kZVxuICAgICAgfCBTa3lUaGVtZVNwYWNpbmdcbiAgICAgIHwgU2t5VGhlbWVCcmFuZFxuICAgICAgfCB1bmRlZmluZWQsXG4gICAgY3VycmVudDogU2t5VGhlbWVTZXR0aW5ncyxcbiAgICBzdXBwb3J0ZWRQcm9wPzogJ3N1cHBvcnRlZE1vZGVzJyB8ICdzdXBwb3J0ZWRTcGFjaW5nJyxcbiAgKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgICFzdXBwb3J0ZWRQcm9wIHx8XG4gICAgICAoKGN1cnJlbnRTZXR0aW5nIGluc3RhbmNlb2YgU2t5VGhlbWVNb2RlIHx8XG4gICAgICAgIGN1cnJlbnRTZXR0aW5nIGluc3RhbmNlb2YgU2t5VGhlbWVTcGFjaW5nKSAmJlxuICAgICAgICBjdXJyZW50LnRoZW1lW3N1cHBvcnRlZFByb3BdLmluY2x1ZGVzKGN1cnJlbnRTZXR0aW5nKSlcbiAgICApO1xuICB9XG59XG4iXX0=","import { Injectable, Optional } from '@angular/core';\nimport FontFaceObserver from 'fontfaceobserver';\nimport { take } from 'rxjs/operators';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./theming/theme.service\";\nexport class SkyAppStyleLoader {\n static { this.LOAD_TIMEOUT = 3000; }\n #themeSvc;\n constructor(themeSvc) {\n this.isLoaded = false;\n this.#themeSvc = themeSvc;\n }\n loadStyles() {\n if (this.isLoaded) {\n return Promise.resolve();\n }\n let themePromise;\n if (this.#themeSvc) {\n themePromise = this.#themeSvc.settingsChange.pipe(take(1)).toPromise();\n }\n else {\n themePromise = Promise.resolve();\n }\n const fontAwesome = new FontFaceObserver('FontAwesome');\n const skyuxIcons = new FontFaceObserver('skyux-icons');\n const blackbaudSans = new FontFaceObserver('BLKB Sans');\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 static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyAppStyleLoader, deps: [{ token: i1.SkyThemeService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyAppStyleLoader, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyAppStyleLoader, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [{ type: i1.SkyThemeService, decorators: [{\n type: Optional\n }] }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGUtbG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3RoZW1lL3NyYy9saWIvc3R5bGUtbG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJELE9BQU8sZ0JBQWdCLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFPdEMsTUFBTSxPQUFPLGlCQUFpQjthQUNMLGlCQUFZLEdBQUcsSUFBSSxBQUFQLENBQVE7SUFHM0MsU0FBUyxDQUE4QjtJQUV2QyxZQUF3QixRQUEwQjtRQUozQyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBS3RCLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO0lBQzVCLENBQUM7SUFFTSxVQUFVO1FBQ2YsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDM0IsQ0FBQztRQUVELElBQUksWUFBMEIsQ0FBQztRQUUvQixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3pFLENBQUM7YUFBTSxDQUFDO1lBQ04sWUFBWSxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNuQyxDQUFDO1FBRUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN4RCxNQUFNLFVBQVUsR0FBRyxJQUFJLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sYUFBYSxHQUFHLElBQUksZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFeEQsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDO1lBQ2pCLDhFQUE4RTtZQUM5RSwwRUFBMEU7WUFDMUUscUNBQXFDO1lBQ3JDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLGlCQUFpQixDQUFDLFlBQVksQ0FBQztZQUMxRCxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxZQUFZLENBQUM7WUFDekQsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsaUJBQWlCLENBQUMsWUFBWSxDQUFDO1lBQzdELFlBQVk7U0FDYixDQUFDO2FBQ0MsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNULElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2YsbUVBQW1FO1lBQ25FLDRFQUE0RTtZQUM1RSxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUM7Z0JBQ3JCLEtBQUs7YUFDTixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OEdBOUNVLGlCQUFpQjtrSEFBakIsaUJBQWlCLGNBRmhCLE1BQU07OzJGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQU9jLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgRm9udEZhY2VPYnNlcnZlciBmcm9tICdmb250ZmFjZW9ic2VydmVyJztcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreVRoZW1lU2VydmljZSB9IGZyb20gJy4vdGhlbWluZy90aGVtZS5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNreUFwcFN0eWxlTG9hZGVyIHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBMT0FEX1RJTUVPVVQgPSAzMDAwO1xuICBwdWJsaWMgaXNMb2FkZWQgPSBmYWxzZTtcblxuICAjdGhlbWVTdmM6IFNreVRoZW1lU2VydmljZSB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSB0aGVtZVN2Yz86IFNreVRoZW1lU2VydmljZSkge1xuICAgIHRoaXMuI3RoZW1lU3ZjID0gdGhlbWVTdmM7XG4gIH1cblxuICBwdWJsaWMgbG9hZFN0eWxlcygpOiBQcm9taXNlPGFueT4ge1xuICAgIGlmICh0aGlzLmlzTG9hZGVkKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxuXG4gICAgbGV0IHRoZW1lUHJvbWlzZTogUHJvbWlzZTxhbnk+O1xuXG4gICAgaWYgKHRoaXMuI3RoZW1lU3ZjKSB7XG4gICAgICB0aGVtZVByb21pc2UgPSB0aGlzLiN0aGVtZVN2Yy5zZXR0aW5nc0NoYW5nZS5waXBlKHRha2UoMSkpLnRvUHJvbWlzZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGVtZVByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9XG5cbiAgICBjb25zdCBmb250QXdlc29tZSA9IG5ldyBGb250RmFjZU9ic2VydmVyKCdGb250QXdlc29tZScpO1xuICAgIGNvbnN0IHNreXV4SWNvbnMgPSBuZXcgRm9udEZhY2VPYnNlcnZlcignc2t5dXgtaWNvbnMnKTtcbiAgICBjb25zdCBibGFja2JhdWRTYW5zID0gbmV3IEZvbnRGYWNlT2JzZXJ2ZXIoJ0JMS0IgU2FucycpO1xuXG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFtcbiAgICAgIC8vIFNwZWNpZnkgYSBjaGFyYWN0ZXIgZm9yIEZvbnRBd2Vzb21lIHNpbmNlIHNvbWUgYnJvd3NlcnMgd2lsbCBmYWlsIHRvIGRldGVjdFxuICAgICAgLy8gd2hlbiB0aGUgZm9udCBpcyBsb2FkZWQgdW5sZXNzIGEga25vd24gY2hhcmFjdGVyIHdpdGggYSBkaWZmZXJlbnQgd2lkdGhcbiAgICAgIC8vIHRoYW4gdGhlIGRlZmF1bHQgaXMgbm90IHNwZWNpZmllZC5cbiAgICAgIGZvbnRBd2Vzb21lLmxvYWQoJ1xcdWYwZmMnLCBTa3lBcHBTdHlsZUxvYWRlci5MT0FEX1RJTUVPVVQpLFxuICAgICAgc2t5dXhJY29ucy5sb2FkKCdcXHVlOTk5JywgU2t5QXBwU3R5bGVMb2FkZXIuTE9BRF9USU1FT1VUKSxcbiAgICAgIGJsYWNrYmF1ZFNhbnMubG9hZCh1bmRlZmluZWQsIFNreUFwcFN0eWxlTG9hZGVyLkxPQURfVElNRU9VVCksXG4gICAgICB0aGVtZVByb21pc2UsXG4gICAgXSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5pc0xvYWRlZCA9IHRydWU7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAvLyBFcnJvcnMgbG9hZGluZyB0aGUgZm9udCBzaG91bGQgbm90IHN0b3AgdGhlIHBhZ2UgZnJvbSByZW5kZXJpbmcuXG4gICAgICAgIC8vIFBhc3NpbmcgdGhlIGVycm9yIGFsb25nIGluIGNhc2UgdGhlIGNsaWVudCB3YW50cyB0byBkbyBzb21ldGhpbmcgd2l0aCBpdC5cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7XG4gICAgICAgICAgZXJyb3IsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cbn1cbiJdfQ==","import { Directive, Input, Optional, } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./theme.service\";\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 */\nexport class SkyThemeClassDirective {\n /**\n * The HTML class attribute.\n *\n * @param value\n */\n set class(value) {\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 * 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 set skyThemeClass(value) {\n this.#removeSkyThemeClassMap(this.#skyThemeClassMap);\n this.#applyInitialClasses(this.#initialClasses);\n this.#skyThemeClassMap = value;\n /* istanbul ignore else */\n if (this.#skyThemeClassMap) {\n this.#applySkyThemeClassMap(this.#skyThemeClassMap);\n }\n }\n set #themeSettings(settings) {\n this.#currentTheme = settings;\n this.#removeSkyThemeClassMap(this.#skyThemeClassMap);\n this.#applyInitialClasses(this.#initialClasses);\n this.#applySkyThemeClassMap(this.#skyThemeClassMap);\n }\n #currentTheme;\n #ngUnsubscribe = new Subject();\n #initialClasses = [];\n #skyThemeClassMap;\n #ngEl;\n #renderer;\n constructor(ngEl, renderer, themeSvc) {\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 ngOnDestroy() {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n #applyInitialClasses(classes) {\n /* istanbul ignore else */\n if (classes) {\n classes.forEach((className) => this.#toggleClass(className, true));\n }\n }\n #applySkyThemeClassMap(skyThemeClassMap) {\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 #removeInitialClasses(classes) {\n /* istanbul ignore else */\n if (classes) {\n classes.forEach((className) => this.#toggleClass(className, false));\n }\n }\n #removeSkyThemeClassMap(skyThemeClassMap) {\n if (skyThemeClassMap) {\n Object.keys(skyThemeClassMap).forEach((className) => this.#toggleClass(className, false));\n }\n }\n #toggleClass(className, enabled) {\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 }\n else {\n this.#renderer.removeClass(this.#ngEl.nativeElement, classNameItem);\n }\n });\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyThemeClassDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.SkyThemeService, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.5\", type: SkyThemeClassDirective, isStandalone: false, selector: \"[skyThemeClass]\", inputs: { class: \"class\", skyThemeClass: \"skyThemeClass\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyThemeClassDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[skyThemeClass]',\n standalone: false,\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.SkyThemeService, decorators: [{\n type: Optional\n }] }], propDecorators: { class: [{\n type: Input\n }], skyThemeClass: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUtY2xhc3MuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3RoZW1lL3NyYy9saWIvdGhlbWluZy90aGVtZS1jbGFzcy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxLQUFLLEVBRUwsUUFBUSxHQUVULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFPM0M7Ozs7R0FJRztBQUtILE1BQU0sT0FBTyxzQkFBc0I7SUFDakM7Ozs7T0FJRztJQUNILElBQ1csS0FBSyxDQUFDLEtBQXlCO1FBQ3hDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUMzRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQ1csYUFBYSxDQUFDLEtBQW1DO1FBQzFELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRWhELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUF5QixDQUFDO1FBRW5ELDBCQUEwQjtRQUMxQixJ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QyxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRCxZQUFZLENBQUMsU0FBaUIsRUFBRSxPQUFnQjtRQUM5QyxTQUFTLEdBQUcsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzdCLDBCQUEwQjtRQUMxQixJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2QsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRTtnQkFDaEQsSUFBSSxPQUFPLEVBQUUsQ0FBQztvQkFDWixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsQ0FBQztnQkFDbkUsQ0FBQztxQkFBTSxDQUFDO29CQUNOLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLGFBQWEsQ0FBQyxDQUFDO2dCQUN0RSxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQzs4R0FsSFUsc0JBQXNCO2tHQUF0QixzQkFBc0I7OzJGQUF0QixzQkFBc0I7a0JBSmxDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsVUFBVSxFQUFFLEtBQUs7aUJBQ2xCOzswQkFtREksUUFBUTt5Q0EzQ0EsS0FBSztzQkFEZixLQUFLO2dCQWNLLGFBQWE7c0JBRHZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9wdGlvbmFsLFxuICBSZW5kZXJlcjIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreVRoZW1lU2V0dGluZ3MgfSBmcm9tICcuL3RoZW1lLXNldHRpbmdzJztcbmltcG9ydCB7IFNreVRoZW1lU2VydmljZSB9IGZyb20gJy4vdGhlbWUuc2VydmljZSc7XG5cbnR5cGUgU2t5VGhlbWVDbGFzc01hcCA9IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbi8qKlxuICogQ29tcG9uZW50IHRvIGFkZCBjbGFzc2VzIGNvbmRpdGlvbmFsbHkgYmFzZWQgb24gdGhlIGN1cnJlbnQgdGhlbWUuXG4gKlxuICogSWYgdGhlIGRpcmVjdGl2ZSBpcyB3aXRoaW4gYSBgc2t5VGhlbWVgIGRpcmVjdGl2ZSwgaXQgdXNlcyBzZXR0aW5ncyBmcm9tIHRoYXQgZGlyZWN0aXZlLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbc2t5VGhlbWVDbGFzc10nLFxuICBzdGFuZGFsb25lOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5VGhlbWVDbGFzc0RpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBUaGUgSFRNTCBjbGFzcyBhdHRyaWJ1dGUuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBjbGFzcyh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jcmVtb3ZlSW5pdGlhbENsYXNzZXModGhpcy4jaW5pdGlhbENsYXNzZXMpO1xuICAgIHRoaXMuI2luaXRpYWxDbGFzc2VzID0gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlLnNwbGl0KC9cXHMrLykgOiBbXTtcbiAgICB0aGlzLiNhcHBseUluaXRpYWxDbGFzc2VzKHRoaXMuI2luaXRpYWxDbGFzc2VzKTtcbiAgICB0aGlzLiNhcHBseVNreVRoZW1lQ2xhc3NNYXAodGhpcy4jc2t5VGhlbWVDbGFzc01hcCk7XG4gIH1cblxuICAvKipcbiAgICogQW4gb2JqZWN0IHdpdGggY2xhc3MgbmFtZXMgaW4gYSBzdHJpbmcgZm9yIGtleXMsIGFuZCB0aGVtZSBuYW1lcyAoZS5nLiAnZGVmYXVsdCcgb3IgJ21vZGVybicpIGFzIHZhbHVlcy5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHNreVRoZW1lQ2xhc3ModmFsdWU6IFNreVRoZW1lQ2xhc3NNYXAgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNyZW1vdmVTa3lUaGVtZUNsYXNzTWFwKHRoaXMuI3NreVRoZW1lQ2xhc3NNYXApO1xuICAgIHRoaXMuI2FwcGx5SW5pdGlhbENsYXNzZXModGhpcy4jaW5pdGlhbENsYXNzZXMpO1xuXG4gICAgdGhpcy4jc2t5VGhlbWVDbGFzc01hcCA9IHZhbHVlIGFzIFNreVRoZW1lQ2xhc3NNYXA7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLiNza3lUaGVtZUNsYXNzTWFwKSB7XG4gICAgICB0aGlzLiNhcHBseVNreVRoZW1lQ2xhc3NNYXAodGhpcy4jc2t5VGhlbWVDbGFzc01hcCk7XG4gICAgfVxuICB9XG5cbiAgc2V0ICN0aGVtZVNldHRpbmdzKHNldHRpbmdzOiBTa3lUaGVtZVNldHRpbmdzKSB7XG4gICAgdGhpcy4jY3VycmVudFRoZW1lID0gc2V0dGluZ3M7XG4gICAgdGhpcy4jcmVtb3ZlU2t5VGhlbWVDbGFzc01hcCh0aGlzLiNza3lUaGVtZUNsYXNzTWFwKTtcbiAgICB0aGlzLiNhcHBseUluaXRpYWxDbGFzc2VzKHRoaXMuI2luaXRpYWxDbGFzc2VzKTtcbiAgICB0aGlzLiNhcHBseVNreVRoZW1lQ2xhc3NNYXAodGhpcy4jc2t5VGhlbWVDbGFzc01hcCk7XG4gIH1cblxuICAjY3VycmVudFRoZW1lOiBTa3lUaGVtZVNldHRpbmdzIHwgdW5kZWZpbmVkO1xuICAjbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICNpbml0aWFsQ2xhc3Nlczogc3RyaW5nW10gPSBbXTtcbiAgI3NreVRoZW1lQ2xhc3NNYXA6IFNreVRoZW1lQ2xhc3NNYXAgfCB1bmRlZmluZWQ7XG5cbiAgI25nRWw6IEVsZW1lbnRSZWY7XG4gICNyZW5kZXJlcjogUmVuZGVyZXIyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIG5nRWw6IEVsZW1lbnRSZWYsXG4gICAgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBAT3B0aW9uYWwoKSB0aGVtZVN2Yz86IFNreVRoZW1lU2VydmljZSxcbiAgKSB7XG4gICAgdGhpcy4jbmdFbCA9IG5nRWw7XG4gICAgdGhpcy4jcmVuZGVyZXIgPSByZW5kZXJlcjtcbiAgICBpZiAodGhlbWVTdmMpIHtcbiAgICAgIHRoZW1lU3ZjLnNldHRpbmdzQ2hhbmdlXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSgoc2V0dGluZ3NDaGFuZ2UpID0+IHtcbiAgICAgICAgICB0aGlzLiN0aGVtZVNldHRpbmdzID0gc2V0dGluZ3NDaGFuZ2UuY3VycmVudFNldHRpbmdzO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgI2FwcGx5SW5pdGlhbENsYXNzZXMoY2xhc3Nlczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChjbGFzc2VzKSB7XG4gICAgICBjbGFzc2VzLmZvckVhY2goKGNsYXNzTmFtZSkgPT4gdGhpcy4jdG9nZ2xlQ2xhc3MoY2xhc3NOYW1lLCB0cnVlKSk7XG4gICAgfVxuICB9XG5cbiAgI2FwcGx5U2t5VGhlbWVDbGFzc01hcChza3lUaGVtZUNsYXNzTWFwOiBTa3lUaGVtZUNsYXNzTWFwIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgaWYgKHNreVRoZW1lQ2xhc3NNYXApIHtcbiAgICAgIGNvbnN0IHRoZW1lTmFtZSA9IHRoaXMuI2N1cnJlbnRUaGVtZT8udGhlbWUubmFtZSB8fCAnZGVmYXVsdCc7XG4gICAgICBPYmplY3Qua2V5cyhza3lUaGVtZUNsYXNzTWFwKS5mb3JFYWNoKChjbGFzc05hbWUpID0+IHtcbiAgICAgICAgY29uc3QgZW5hYmxlZCA9IHRoZW1lTmFtZSA9PT0gc2t5VGhlbWVDbGFzc01hcFtjbGFzc05hbWVdO1xuICAgICAgICB0aGlzLiN0b2dnbGVDbGFzcyhjbGFzc05hbWUsIGVuYWJsZWQpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgI3JlbW92ZUluaXRpYWxDbGFzc2VzKGNsYXNzZXM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoY2xhc3Nlcykge1xuICAgICAgY2xhc3Nlcy5mb3JFYWNoKChjbGFzc05hbWUpID0+IHRoaXMuI3RvZ2dsZUNsYXNzKGNsYXNzTmFtZSwgZmFsc2UpKTtcbiAgICB9XG4gIH1cblxuICAjcmVtb3ZlU2t5VGhlbWVDbGFzc01hcChcbiAgICBza3lUaGVtZUNsYXNzTWFwOiBTa3lUaGVtZUNsYXNzTWFwIHwgdW5kZWZpbmVkLFxuICApOiB2b2lkIHtcbiAgICBpZiAoc2t5VGhlbWVDbGFzc01hcCkge1xuICAgICAgT2JqZWN0LmtleXMoc2t5VGhlbWVDbGFzc01hcCkuZm9yRWFjaCgoY2xhc3NOYW1lKSA9PlxuICAgICAgICB0aGlzLiN0b2dnbGVDbGFzcyhjbGFzc05hbWUsIGZhbHNlKSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgI3RvZ2dsZUNsYXNzKGNsYXNzTmFtZTogc3RyaW5nLCBlbmFibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgY2xhc3NOYW1lID0gY2xhc3NOYW1lLnRyaW0oKTtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChjbGFzc05hbWUpIHtcbiAgICAgIGNsYXNzTmFtZS5zcGxpdCgvXFxzKy9nKS5mb3JFYWNoKChjbGFzc05hbWVJdGVtKSA9PiB7XG4gICAgICAgIGlmIChlbmFibGVkKSB7XG4gICAgICAgICAgdGhpcy4jcmVuZGVyZXIuYWRkQ2xhc3ModGhpcy4jbmdFbC5uYXRpdmVFbGVtZW50LCBjbGFzc05hbWVJdGVtKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLiNyZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLiNuZ0VsLm5hdGl2ZUVsZW1lbnQsIGNsYXNzTmFtZUl0ZW0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==","import { Directive, Input, Optional, } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./theme.service\";\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 */\nexport class SkyThemeIfDirective {\n /**\n * A string that should match the name of a theme, `'default'` or `'modern'`.\n *\n * @param value\n */\n set skyThemeIf(value) {\n this.#context = value;\n this.#updateView();\n }\n #context;\n #currentTheme;\n #ngUnsubscribe = new Subject();\n #hasView = false;\n #templateRef;\n #viewContainer;\n constructor(templateRef, viewContainer, changeDetector, themeSvc) {\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 // 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 ngOnDestroy() {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n #updateView() {\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 }\n else if (!condition && this.#hasView) {\n this.#viewContainer.clear();\n this.#hasView = false;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyThemeIfDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }, { token: i1.SkyThemeService, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.5\", type: SkyThemeIfDirective, isStandalone: false, selector: \"[skyThemeIf]\", inputs: { skyThemeIf: \"skyThemeIf\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyThemeIfDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[skyThemeIf]',\n standalone: false,\n }]\n }], ctorParameters: () => [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }, { type: i1.SkyThemeService, decorators: [{\n type: Optional\n }] }], propDecorators: { skyThemeIf: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUtaWYuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3RoZW1lL3NyYy9saWIvdGhlbWluZy90aGVtZS1pZi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxLQUFLLEVBRUwsUUFBUSxHQUdULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFLM0M7Ozs7R0FJRztBQUtILE1BQU0sT0FBTyxtQkFBbUI7SUFDOUI7Ozs7T0FJRztJQUNILElBQ1csVUFBVSxDQUFDLEtBQXVDO1FBQzNELElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsUUFBUSxDQUFxQjtJQUM3QixhQUFhLENBQStCO0lBQzVDLGNBQWMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBQ3JDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFFakIsWUFBWSxDQUF1QjtJQUNuQyxjQUFjLENBQW1CO0lBRWpDLFlBQ0UsV0FBaUMsRUFDakMsYUFBK0IsRUFDL0IsY0FBaUMsRUFDckIsUUFBMEI7UUFFdEMsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUM7UUFDaEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxhQUFhLENBQUM7UUFDcEMsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLFFBQVEsQ0FBQyxjQUFjO2lCQUNwQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztpQkFDcEMsU0FBUyxDQUFDLENBQUMsY0FBYyxFQUFFLEVBQUU7Z0JBQzVCLElBQUksQ0FBQyxhQUFhLEdBQUcsY0FBYyxDQUFDLGVBQWUsQ0FBQztnQkFDcEQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUVuQixxRUFBcUU7Z0JBQ3JFLGtFQUFrRTtnQkFDbEUsZ0VBQWdFO2dCQUNoRSxxREFBcUQ7Z0JBQ3JELGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNoQyxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7SUFDSCxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELFdBQVc7UUFDVCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxJQUFJLElBQUksU0FBUyxDQUFDO1FBQzlELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLElBQUksU0FBUyxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDL0QsSUFBSSxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDMUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDdkIsQ0FBQzthQUFNLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDeEIsQ0FBQztJQUNILENBQUM7OEdBM0RVLG1CQUFtQjtrR0FBbkIsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUovQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxjQUFjO29CQUN4QixVQUFVLEVBQUUsS0FBSztpQkFDbEI7OzBCQXlCSSxRQUFRO3lDQWpCQSxVQUFVO3NCQURwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIERpcmVjdGl2ZSxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3B0aW9uYWwsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lUaGVtZVNldHRpbmdzIH0gZnJvbSAnLi90aGVtZS1zZXR0aW5ncyc7XG5pbXBvcnQgeyBTa3lUaGVtZVNlcnZpY2UgfSBmcm9tICcuL3RoZW1lLnNlcnZpY2UnO1xuXG4vKipcbiAqIENvbXBvbmVudCB0aGF0IHdvcmtzIGxpa2UgYG5nSWZgIHRvIHNob3cgbWFya3VwIGZvciBtYXRjaGluZyB0aGVtZS5cbiAqXG4gKiBJZiB0aGUgZGlyZWN0aXZlIGlzIHdpdGhpbiBhIGBza3lUaGVtZWAgZGlyZWN0aXZlLCBpdCB1c2VzIHNldHRpbmdzIGZyb20gdGhhdCBkaXJlY3RpdmUuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tza3lUaGVtZUlmXScsXG4gIHN0YW5kYWxvbmU6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lUaGVtZUlmRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIEEgc3RyaW5nIHRoYXQgc2hvdWxkIG1hdGNoIHRoZSBuYW1lIG9mIGEgdGhlbWUsIGAnZGVmYXVsdCdgIG9yIGAnbW9kZXJuJ2AuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBza3lUaGVtZUlmKHZhbHVlOiAnZGVmYXVsdCcgfCAnbW9kZXJuJyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI2NvbnRleHQgPSB2YWx1ZTtcbiAgICB0aGlzLiN1cGRhdGVWaWV3KCk7XG4gIH1cblxuICAjY29udGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAjY3VycmVudFRoZW1lOiBTa3lUaGVtZVNldHRpbmdzIHwgdW5kZWZpbmVkO1xuICAjbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICNoYXNWaWV3ID0gZmFsc2U7XG5cbiAgI3RlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcbiAgI3ZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPHVua25vd24+LFxuICAgIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsXG4gICAgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIEBPcHRpb25hbCgpIHRoZW1lU3ZjPzogU2t5VGhlbWVTZXJ2aWNlLFxuICApIHtcbiAgICB0aGlzLiN0ZW1wbGF0ZVJlZiA9IHRlbXBsYXRlUmVmO1xuICAgIHRoaXMuI3ZpZXdDb250YWluZXIgPSB2aWV3Q29udGFpbmVyO1xuICAgIGlmICh0aGVtZVN2Yykge1xuICAgICAgdGhlbWVTdmMuc2V0dGluZ3NDaGFuZ2VcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgICAuc3Vic2NyaWJlKChzZXR0aW5nc0NoYW5nZSkgPT4ge1xuICAgICAgICAgIHRoaXMuI2N1cnJlbnRUaGVtZSA9IHNldHRpbmdzQ2hhbmdlLmN1cnJlbnRTZXR0aW5ncztcbiAgICAgICAgICB0aGlzLiN1cGRhdGVWaWV3KCk7XG5cbiAgICAgICAgICAvLyBDb21wb25lbnRzIHRoYXQgdXNlIE9uUHVzaCBjaGFuZ2UgZGV0ZWN0aW9uIHdpbGwgbm90IGF1dG9tYXRpY2FsbHlcbiAgICAgICAgICAvLyBjaGVjayBmb3IgY2hhbmdlcyB3aGVuIGNyZWF0ZWQgYXMgYSByZXN1bHQgb2YgYSB0aGVtZSBjaGFuZ2UgaWZcbiAgICAgICAgICAvLyBpdCBoYXBwZW5zIG91dHNpZGUgb2YgYW4gQW5ndWxhciBjaGFuZ2UgZGV0ZWN0aW9uIGN5Y2xlLiBUaGlzXG4gICAgICAgICAgLy8gZW5zdXJlcyBjaGFuZ2UgZGV0ZWN0aW9uIHJ1bnMgb24gdGhvc2UgY29tcG9uZW50cy5cbiAgICAgICAgICBjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxuXG4gICN1cGRhdGVWaWV3KCk6IHZvaWQge1xuICAgIGNvbnN0IHRoZW1lTmFtZSA9IHRoaXMuI2N1cnJlbnRUaGVtZT8udGhlbWUubmFtZSB8fCAnZGVmYXVsdCc7XG4gICAgY29uc3QgY29uZGl0aW9uID0gdGhpcy4jY29udGV4dCAmJiB0aGVtZU5hbWUgPT09IHRoaXMuI2NvbnRleHQ7XG4gICAgaWYgKGNvbmRpdGlvbiAmJiAhdGhpcy4jaGFzVmlldykge1xuICAgICAgdGhpcy4jdmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy4jdGVtcGxhdGVSZWYpO1xuICAgICAgdGhpcy4jaGFzVmlldyA9IHRydWU7XG4gICAgfSBlbHNlIGlmICghY29uZGl0aW9uICYmIHRoaXMuI2hhc1ZpZXcpIHtcbiAgICAgIHRoaXMuI3ZpZXdDb250YWluZXIuY2xlYXIoKTtcbiAgICAgIHRoaXMuI2hhc1ZpZXcgPSBmYWxzZTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==","import { Directive, Input, } from '@angular/core';\nimport { SkyTheme } from './theme';\nimport { SkyThemeMode } from './theme-mode';\nimport { SkyThemeSettings } from './theme-settings';\nimport { SkyThemeService } from './theme.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./theme.service\";\nconst defaultTheme = new SkyThemeSettings(SkyTheme.presets.default, SkyThemeMode.presets.light);\n/**\n * Creates a new instance of `SkyThemeService` to allow a container\n * to have its own theme.\n */\nexport class SkyThemeDirective {\n set skyTheme(value) {\n this.skyThemeOrDefault = value || defaultTheme;\n if (this.#initialized) {\n this.#themeSvc.setTheme(this.skyThemeOrDefault);\n }\n }\n #initialized;\n #elRef;\n #renderer;\n #themeSvc;\n constructor(elRef, renderer, themeSvc) {\n this.skyThemeOrDefault = defaultTheme;\n this.#initialized = false;\n this.#elRef = elRef;\n this.#renderer = renderer;\n this.#themeSvc = themeSvc;\n }\n ngOnInit() {\n this.#themeSvc.init(this.#elRef.nativeElement, this.#renderer, this.skyThemeOrDefault);\n this.#initialized = true;\n }\n ngOnDestroy() {\n this.#themeSvc.destroy();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyThemeDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.SkyThemeService }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.5\", type: SkyThemeDirective, isStandalone: false, selector: \"[skyTheme]\", inputs: { skyTheme: \"skyTheme\" }, providers: [SkyThemeService], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyThemeDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[skyTheme]',\n providers: [SkyThemeService],\n standalone: false,\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.SkyThemeService }], propDecorators: { skyTheme: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3RoZW1lL3NyYy9saWIvdGhlbWluZy90aGVtZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxLQUFLLEdBSU4sTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNuQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBRWxELE1BQU0sWUFBWSxHQUFHLElBQUksZ0JBQWdCLENBQ3ZDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUN4QixZQUFZLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FDM0IsQ0FBQztBQUVGOzs7R0FHRztBQU1ILE1BQU0sT0FBTyxpQkFBaUI7SUFDNUIsSUFDVyxRQUFRLENBQUMsS0FBbUM7UUFDckQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssSUFBSSxZQUFZLENBQUM7UUFFL0MsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDbEQsQ0FBQztJQUNILENBQUM7SUFJRCxZQUFZLENBQVM7SUFFckIsTUFBTSxDQUFhO0lBQ25CLFNBQVMsQ0FBWTtJQUNyQixTQUFTLENBQWtCO0lBRTNCLFlBQ0UsS0FBaUIsRUFDakIsUUFBbUIsRUFDbkIsUUFBeUI7UUFYcEIsc0JBQWlCLEdBQUcsWUFBWSxDQUFDO1FBRXhDLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBV25CLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzFCLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO0lBQzVCLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUN6QixJQUFJLENBQUMsU0FBUyxFQUNkLElBQUksQ0FBQyxpQkFBaUIsQ0FDdkIsQ0FBQztRQUVGLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0lBQzNCLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDM0IsQ0FBQzs4R0F4Q1UsaUJBQWlCO2tHQUFqQixpQkFBaUIsNEZBSGpCLENBQUMsZUFBZSxDQUFDOzsyRkFHakIsaUJBQWlCO2tCQUw3QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxZQUFZO29CQUN0QixTQUFTLEVBQUUsQ0FBQyxlQUFlLENBQUM7b0JBQzVCLFVBQVUsRUFBRSxLQUFLO2lCQUNsQjtxSUFHWSxRQUFRO3NCQURsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFJlbmRlcmVyMixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreVRoZW1lIH0gZnJvbSAnLi90aGVtZSc7XG5pbXBvcnQgeyBTa3lUaGVtZU1vZGUgfSBmcm9tICcuL3RoZW1lLW1vZGUnO1xuaW1wb3J0IHsgU2t5VGhlbWVTZXR0aW5ncyB9IGZyb20gJy4vdGhlbWUtc2V0dGluZ3MnO1xuaW1wb3J0IHsgU2t5VGhlbWVTZXJ2aWNlIH0gZnJvbSAnLi90aGVtZS5zZXJ2aWNlJztcblxuY29uc3QgZGVmYXVsdFRoZW1lID0gbmV3IFNreVRoZW1lU2V0dGluZ3MoXG4gIFNreVRoZW1lLnByZXNldHMuZGVmYXVsdCxcbiAgU2t5VGhlbWVNb2RlLnByZXNldHMubGlnaHQsXG4pO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgYFNreVRoZW1lU2VydmljZWAgdG8gYWxsb3cgYSBjb250YWluZXJcbiAqIHRvIGhhdmUgaXRzIG93biB0aGVtZS5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3NreVRoZW1lXScsXG4gIHByb3ZpZGVyczogW1NreVRoZW1lU2VydmljZV0sXG4gIHN0YW5kYWxvbmU6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lUaGVtZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBza3lUaGVtZSh2YWx1ZTogU2t5VGhlbWVTZXR0aW5ncyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuc2t5VGhlbWVPckRlZmF1bHQgPSB2YWx1ZSB8fCBkZWZhdWx0VGhlbWU7XG5cbiAgICBpZiAodGhpcy4jaW5pdGlhbGl6ZWQpIHtcbiAgICAgIHRoaXMuI3RoZW1lU3ZjLnNldFRoZW1lKHRoaXMuc2t5VGhlbWVPckRlZmF1bHQpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBza3lUaGVtZU9yRGVmYXVsdCA9IGRlZmF1bHRUaGVtZTtcblxuICAjaW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICAjZWxSZWY6IEVsZW1lbnRSZWY7XG4gICNyZW5kZXJlcjogUmVuZGVyZXIyO1xuICAjdGhlbWVTdmM6IFNreVRoZW1lU2VydmljZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBlbFJlZjogRWxlbWVudFJlZixcbiAgICByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHRoZW1lU3ZjOiBTa3lUaGVtZVNlcnZpY2UsXG4gICkge1xuICAgIHRoaXMuI2VsUmVmID0gZWxSZWY7XG4gICAgdGhpcy4jcmVuZGVyZXIgPSByZW5kZXJlcjtcbiAgICB0aGlzLiN0aGVtZVN2YyA9IHRoZW1lU3ZjO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuI3RoZW1lU3ZjLmluaXQoXG4gICAgICB0aGlzLiNlbFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgdGhpcy4jcmVuZGVyZXIsXG4gICAgICB0aGlzLnNreVRoZW1lT3JEZWZhdWx0LFxuICAgICk7XG5cbiAgICB0aGlzLiNpbml0aWFsaXplZCA9IHRydWU7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jdGhlbWVTdmMuZGVzdHJveSgpO1xuICB9XG59XG4iXX0=","import { NgModule } from '@angular/core';\nimport { SkyThemeClassDirective } from './theming/theme-class.directive';\nimport { SkyThemeIfDirective } from './theming/theme-if.directive';\nimport { SkyThemeDirective } from './theming/theme.directive';\nimport * as i0 from \"@angular/core\";\nexport class SkyThemeModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyThemeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyThemeModule, declarations: [SkyThemeClassDirective,\n SkyThemeDirective,\n SkyThemeIfDirective], exports: [SkyThemeClassDirective, SkyThemeDirective, SkyThemeIfDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyThemeModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyThemeModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n SkyThemeClassDirective,\n SkyThemeDirective,\n SkyThemeIfDirective,\n ],\n exports: [SkyThemeClassDirective, SkyThemeDirective, SkyThemeIfDirective],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3RoZW1lL3NyYy9saWIvdGhlbWUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBVTlELE1BQU0sT0FBTyxjQUFjOzhHQUFkLGNBQWM7K0dBQWQsY0FBYyxpQkFOdkIsc0JBQXNCO1lBQ3RCLGlCQUFpQjtZQUNqQixtQkFBbUIsYUFFWCxzQkFBc0IsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUI7K0dBRTdELGNBQWM7OzJGQUFkLGNBQWM7a0JBUjFCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLHNCQUFzQjt3QkFDdEIsaUJBQWlCO3dCQUNqQixtQkFBbUI7cUJBQ3BCO29CQUNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixDQUFDO2lCQUMxRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreVRoZW1lQ2xhc3NEaXJlY3RpdmUgfSBmcm9tICcuL3RoZW1pbmcvdGhlbWUtY2xhc3MuZGlyZWN0aXZlJztcbmltcG9ydCB7IFNreVRoZW1lSWZEaXJlY3RpdmUgfSBmcm9tICcuL3RoZW1pbmcvdGhlbWUtaWYuZGlyZWN0aXZlJztcbmltcG9ydCB7IFNreVRoZW1lRGlyZWN0aXZlIH0gZnJvbSAnLi90aGVtaW5nL3RoZW1lLmRpcmVjdGl2ZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIFNreVRoZW1lQ2xhc3NEaXJlY3RpdmUsXG4gICAgU2t5VGhlbWVEaXJlY3RpdmUsXG4gICAgU2t5VGhlbWVJZkRpcmVjdGl2ZSxcbiAgXSxcbiAgZXhwb3J0czogW1NreVRoZW1lQ2xhc3NEaXJlY3RpdmUsIFNreVRoZW1lRGlyZWN0aXZlLCBTa3lUaGVtZUlmRGlyZWN0aXZlXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5VGhlbWVNb2R1bGUge31cbiJdfQ==","import { ChangeDetectorRef, Directive, HostBinding, inject, } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { SkyThemeService } from '../theming/theme.service';\nimport * as i0 from \"@angular/core\";\nexport class SkyThemeComponentClassDirective {\n #changeDetector;\n #themeService;\n constructor() {\n this.theme = 'sky-cmp-theme-default';\n this.#changeDetector = inject(ChangeDetectorRef);\n this.#themeService = inject(SkyThemeService, { optional: true });\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 static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyThemeComponentClassDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.5\", type: SkyThemeComponentClassDirective, isStandalone: true, selector: \"[skyThemeClass]\", host: { properties: { \"class\": \"this.theme\" } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyThemeComponentClassDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[skyThemeClass]',\n standalone: true,\n }]\n }], ctorParameters: () => [], propDecorators: { theme: [{\n type: HostBinding,\n args: ['class']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUtY29tcG9uZW50LWNsYXNzLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90aGVtZS9zcmMvbGliL3RoZW1pbmcvdGhlbWUtY29tcG9uZW50LWNsYXNzLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFNM0QsTUFBTSxPQUFPLCtCQUErQjtJQUkxQyxlQUFlLENBQTZCO0lBQzVDLGFBQWEsQ0FBK0M7SUFFNUQ7UUFMTyxVQUFLLEdBQUcsdUJBQXVCLENBQUM7UUFFdkMsb0JBQWUsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUM1QyxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxlQUFlLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUcxRCxJQUFJLENBQUMsYUFBYSxFQUFFLGNBQWM7YUFDL0IsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7YUFDMUIsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEtBQUssR0FBRyxpQkFBaUIsTUFBTSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbEUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN0QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OEdBZFUsK0JBQStCO2tHQUEvQiwrQkFBK0I7OzJGQUEvQiwrQkFBK0I7a0JBSjNDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsVUFBVSxFQUFFLElBQUk7aUJBQ2pCO3dEQUdRLEtBQUs7c0JBRFgsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIERpcmVjdGl2ZSxcbiAgSG9zdEJpbmRpbmcsXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbmltcG9ydCB7IFNreVRoZW1lU2VydmljZSB9IGZyb20gJy4uL3RoZW1pbmcvdGhlbWUuc2VydmljZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tza3lUaGVtZUNsYXNzXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFNreVRoZW1lQ29tcG9uZW50Q2xhc3NEaXJlY3RpdmUge1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgcHVibGljIHRoZW1lID0gJ3NreS1jbXAtdGhlbWUtZGVmYXVsdCc7XG5cbiAgI2NoYW5nZURldGVjdG9yID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgI3RoZW1lU2VydmljZSA9IGluamVjdChTa3lUaGVtZVNlcnZpY2UsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy4jdGhlbWVTZXJ2aWNlPy5zZXR0aW5nc0NoYW5nZVxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAuc3Vic2NyaWJlKChjaGFuZ2UpID0+IHtcbiAgICAgICAgdGhpcy50aGVtZSA9IGBza3ktY21wLXRoZW1lLSR7Y2hhbmdlLmN1cnJlbnRTZXR0aW5ncy50aGVtZS5uYW1lfWA7XG4gICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gIH1cbn1cbiJdfQ==","import { DOCUMENT, DestroyRef, Injectable, NgZone, inject, } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\nimport * as i0 from \"@angular/core\";\n/**\n * Provides information about the state of the application's viewport.\n */\nexport class SkyAppViewportService {\n // ESLint doesn't recognize how this is used.\n #updateRequest;\n #reserveItems;\n #conditionallyReserveItems;\n #document;\n #ngZone;\n // Observe elements crossing the browser's viewport boundaries.\n #intersectionObserver;\n #reservedSpaces;\n constructor() {\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 this.visible = new ReplaySubject(1);\n // ESLint doesn't recognize how this is used.\n this.#updateRequest = undefined;\n this.#reserveItems = new Map();\n this.#conditionallyReserveItems = new Map();\n this.#document = inject(DOCUMENT);\n this.#ngZone = inject(NgZone);\n // Observe elements crossing the browser's viewport boundaries.\n this.#intersectionObserver = this.#ngZone.runOutsideAngular(() => new IntersectionObserver(() => this.#ngZone.run(() => this.#updateViewportArea()), { threshold: Array.from({ length: 101 }, (_, i) => i / 100) }));\n this.#reservedSpaces = {\n bottom: 0,\n left: 0,\n right: 0,\n top: 0,\n };\n const onScroll = () => {\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 * Reserves space for components docked to the left, top, right, or bottom of the viewport.\n * @param args\n */\n reserveSpace(args) {\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 * Removes reserved space for a component by the ID provided when it was reserved.\n * @param id\n */\n unreserveSpace(id) {\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 #updateViewportArea() {\n this.#updateRequest ??= requestAnimationFrame(() => {\n this.#updateRequest = undefined;\n const reservedSpaces = {\n bottom: 0,\n left: 0,\n right: 0,\n top: 0,\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 this.#reservedSpaces = reservedSpaces;\n const documentElementStyle = this.#document.documentElement.style;\n for (const [position, size] of Object.entries(reservedSpaces)) {\n documentElementStyle.setProperty(`--sky-viewport-${position}`, size + 'px');\n }\n });\n }\n #watchVisibility(item) {\n if (item.reserveForElement) {\n this.#conditionallyReserveItems.set(item.reserveForElement, item);\n this.#intersectionObserver.observe(item.reserveForElement);\n }\n }\n #isElementVisible(args, reservedSpaces = this\n .#reservedSpaces) {\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 // Element is not hidden by another element\n if (args.reserveForElement.contains(this.#document.elementFromPoint(midpoint.x, midpoint.y))) {\n return true;\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 static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyAppViewportService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyAppViewportService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyAppViewportService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90aGVtZS9zcmMvbGliL3ZpZXdwb3J0L3ZpZXdwb3J0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFFBQVEsRUFDUixVQUFVLEVBQ1YsVUFBVSxFQUNWLE1BQU0sRUFDTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFTckM7O0dBRUc7QUFJSCxNQUFNLE9BQU8scUJBQXFCO0lBU2hDLDZDQUE2QztJQUM3QyxjQUFjLENBQWlDO0lBQ3RDLGFBQWEsQ0FBc0M7SUFDbkQsMEJBQTBCLENBQXVDO0lBQ2pFLFNBQVMsQ0FBb0I7SUFDN0IsT0FBTyxDQUFrQjtJQUNsQywrREFBK0Q7SUFDdEQscUJBQXFCLENBTTVCO0lBQ0YsZUFBZSxDQUtiO0lBRUY7UUE3QkE7Ozs7O1dBS0c7UUFDSSxZQUFPLEdBQUcsSUFBSSxhQUFhLENBQVUsQ0FBQyxDQUFDLENBQUM7UUFFL0MsNkNBQTZDO1FBQzdDLG1CQUFjLEdBQXVCLFNBQVMsQ0FBQztRQUN0QyxrQkFBYSxHQUFHLElBQUksR0FBRyxFQUEyQixDQUFDO1FBQ25ELCtCQUEwQixHQUFHLElBQUksR0FBRyxFQUE0QixDQUFDO1FBQ2pFLGNBQVMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0IsWUFBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQywrREFBK0Q7UUFDdEQsMEJBQXFCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FDN0QsR0FBRyxFQUFFLENBQ0gsSUFBSSxvQkFBb0IsQ0FDdEIsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMs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LFFBQVE7b0JBQ1gsT0FBTyxRQUFRLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDO2dCQUN0RCxLQUFLLE1BQU07b0JBQ1QsT0FBTyxRQUFRLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQztZQUNuQyxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs4R0FoS1UscUJBQXFCO2tIQUFyQixxQkFBcUIsY0FGcEIsTUFBTTs7MkZBRVAscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERPQ1VNRU5ULFxuICBEZXN0cm95UmVmLFxuICBJbmplY3RhYmxlLFxuICBOZ1pvbmUsXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2t5QXBwVmlld3BvcnRSZXNlcnZlQXJncyB9IGZyb20gJy4vdmlld3BvcnQtcmVzZXJ2ZS1hcmdzJztcbmltcG9ydCB7IFNreUFwcFZpZXdwb3J0UmVzZXJ2ZWRQb3NpdGlvblR5cGUgfSBmcm9tICcuL3ZpZXdwb3J0LXJlc2VydmUtcG9zaXRpb24tdHlwZSc7XG5cbnR5cGUgUmVzZXJ2ZUl0ZW1UeXBlID0gU2t5QXBwVmlld3BvcnRSZXNlcnZlQXJncyAmIHtcbiAgYWN0aXZlOiBib29sZWFuO1xufTtcblxuLyoqXG4gKiBQcm92aWRlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc3RhdGUgb2YgdGhlIGFwcGxpY2F0aW9uJ3Mgdmlld3BvcnQuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lBcHBWaWV3cG9ydFNlcnZpY2Uge1xuICAvKipcbiAgICogVXBkYXRlZCB3aGVuIHRoZSB2aWV3cG9ydCBiZWNvbWVzIHZpc2libGUuICBXaGlsZSB0aGUgcGFnZSBpcyByZW5kZXJlZCwgdGhlXG4gICAqIHZpZXdwb3J0IG1heSByZW1haW4gaGlkZGVuIGFzIGZvbnRzIGFuZCBzdHlsZXMgYXJlIGxvYWRlZCBhc3luY2hyb25vdXNseTtcbiAgICogdGhpcyBpcyBkb25lIHRvIGF2b2lkIGEgRk9VQyAoRmxhc2ggT2YgVW5zdHlsZWQgQ29udGVudCkgYmVmb3JlIHRoZSBmb250c1xuICAgKiBhbmQgc3R5bGVzIGFyZSByZWFkeS5cbiAgICovXG4gIHB1YmxpYyB2aXNpYmxlID0gbmV3IFJlcGxheVN1YmplY3Q8Ym9vbGVhbj4oMSk7XG5cbiAgLy8gRVNMaW50IGRvZXNuJ3QgcmVjb2duaXplIGhvdyB0aGlzIGlzIHVzZWQuXG4gICN1cGRhdGVSZXF1ZXN0OiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5ICNyZXNlcnZlSXRlbXMgPSBuZXcgTWFwPHN0cmluZywgUmVzZXJ2ZUl0ZW1UeXBlPigpO1xuICByZWFkb25seSAjY29uZGl0aW9uYWxseVJlc2VydmVJdGVtcyA9IG5ldyBNYXA8RWxlbWVudCwgUmVzZXJ2ZUl0ZW1UeXBlPigpO1xuICByZWFkb25seSAjZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuICByZWFkb25seSAjbmdab25lID0gaW5qZWN0KE5nWm9uZSk7XG4gIC8vIE9ic2VydmUgZWxlbWVudHMgY3Jvc3NpbmcgdGhlIGJyb3dzZXIncyB2aWV3cG9ydCBib3VuZGFyaWVzLlxuICByZWFkb25seSAjaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPSB0aGlzLiNuZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoXG4gICAgKCkgPT5cbiAgICAgIG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihcbiAgICAgICAgKCkgPT4gdGhpcy4jbmdab25lLnJ1bigoKSA9PiB0aGlzLiN1cGRhdGVWaWV3cG9ydEFyZWEoKSksXG4gICAgICAgIHsgdGhyZXNob2xkOiBBcnJheS5mcm9tKHsgbGVuZ3RoOiAxMDEgfSwgKF8sIGkpID0+IGkgLyAxMDApIH0sXG4gICAgICApLFxuICApO1xuICAjcmVzZXJ2ZWRTcGFjZXM6IFJlY29yZDxTa3lBcHBWaWV3cG9ydFJlc2VydmVkUG9zaXRpb25UeXBlLCBudW1iZXI+ID0ge1xuICAgIGJvdHRvbTogMCxcbiAgICBsZWZ0OiAwLFxuICAgIHJpZ2h0OiAwLFxuICAgIHRvcDogMCxcbiAgfTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBjb25zdCBvblNjcm9sbCA9ICgpOiB2b2lkID0+IHtcbiAgICAgIGlmICh0aGlzLiNjb25kaXRpb25hbGx5UmVzZXJ2ZUl0ZW1zLnNpemUgPiAwKSB7XG4gICAgICAgIHRoaXMuI3VwZGF0ZVZpZXdwb3J0QXJlYSgpO1xuICAgICAgfVxuICAgIH07XG4gICAgdGhpcy4jZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgb25TY3JvbGwpO1xuICAgIGluamVjdChEZXN0cm95UmVmKS5vbkRlc3Ryb3koKCkgPT4ge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIGlmICh0aGlzLiN1cGRhdGVSZXF1ZXN0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy4jdXBkYXRlUmVxdWVzdCk7XG4gICAgICB9XG4gICAgICB0aGlzLiNpbnRlcnNlY3Rpb25PYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICB0aGlzLiNkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBvblNjcm9sbCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXJ2ZXMgc3BhY2UgZm9yIGNvbXBvbmVudHMgZG9ja2VkIHRvIHRoZSBsZWZ0LCB0b3AsIHJpZ2h0LCBvciBib3R0b20gb2YgdGhlIHZpZXdwb3J0LlxuICAgKiBAcGFyYW0gYXJnc1xuICAgKi9cbiAgcHVibGljIHJlc2VydmVTcGFjZShhcmdzOiBTa3lBcHBWaWV3cG9ydFJlc2VydmVBcmdzKTogdm9pZCB7XG4gICAgY29uc3QgaXRlbSA9IHtcbiAgICAgIC4uLmFyZ3MsXG4gICAgICBhY3RpdmU6IHRoaXMuI2lzRWxlbWVudFZpc2libGUoeyAuLi5hcmdzLCBhY3RpdmU6IGZhbHNlIH0pLFxuICAgIH07XG4gICAgdGhpcy4jcmVzZXJ2ZUl0ZW1zLnNldChhcmdzLmlkLCBpdGVtKTtcbiAgICB0aGlzLiN3YXRjaFZpc2liaWxpdHkoaXRlbSk7XG4gICAgdGhpcy4jdXBkYXRlVmlld3BvcnRBcmVhKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyByZXNlcnZlZCBzcGFjZSBmb3IgYSBjb21wb25lbnQgYnkgdGhlIElEIHByb3ZpZGVkIHdoZW4gaXQgd2FzIHJlc2VydmVkLlxuICAgKiBAcGFyYW0gaWRcbiAgICovXG4gIHB1YmxpYyB1bnJlc2VydmVTcGFjZShpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgYXJncyA9IHRoaXMuI3Jlc2VydmVJdGVtcy5nZXQoaWQpO1xuICAgIGlmIChhcmdzPy5yZXNlcnZlRm9yRWxlbWVudCkge1xuICAgICAgdGhpcy4jaW50ZXJzZWN0aW9uT2JzZXJ2ZXIudW5vYnNlcnZlKGFyZ3MucmVzZXJ2ZUZvckVsZW1lbnQpO1xuICAgICAgdGhpcy4jY29uZGl0aW9uYWxseVJlc2VydmVJdGVtcy5kZWxldGUoYXJncy5yZXNlcnZlRm9yRWxlbWVudCk7XG4gICAgfVxuICAgIHRoaXMuI3Jlc2VydmVJdGVtcy5kZWxldGUoaWQpO1xuICAgIHRoaXMuI3VwZGF0ZVZpZXdwb3J0QXJlYSgpO1xuICB9XG5cbiAgI3VwZGF0ZVZpZXdwb3J0QXJlYSgpOiB2b2lkIHtcbiAgICB0aGlzLiN1cGRhdGVSZXF1ZXN0ID8/PSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgdGhpcy4jdXBkYXRlUmVxdWVzdCA9IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IHJlc2VydmVkU3BhY2VzOiBSZWNvcmQ8U2t5QXBwVmlld3BvcnRSZXNlcnZlZFBvc2l0aW9uVHlwZSwgbnVtYmVyPiA9XG4gICAgICAgIHtcbiAgICAgICAgICBib3R0b206IDAsXG4gICAgICAgICAgbGVmdDogMCxcbiAgICAgICAgICByaWdodDogMCxcbiAgICAgICAgICB0b3A6IDAsXG4gICAgICAgIH07XG5cbiAgICAgIGZvciAoY29uc3QgYXJncyBvZiB0aGlzLiNyZXNlcnZlSXRlbXMudmFsdWVzKCkpIHtcbiAgICAgICAgYXJncy5hY3RpdmUgPSB0aGlzLiNpc0VsZW1lbnRWaXNpYmxlKGFyZ3MsIHJlc2VydmVkU3BhY2VzKTtcbiAgICAgICAgaWYgKGFyZ3MuYWN0aXZlKSB7XG4gICAgICAgICAgcmVzZXJ2ZWRTcGFjZXNbYXJncy5wb3NpdGlvbl0gKz0gYXJncy5zaXplO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuI3Jlc2VydmVkU3BhY2VzID0gcmVzZXJ2ZWRTcGFjZXM7XG4gICAgICBjb25zdCBkb2N1bWVudEVsZW1lbnRTdHlsZSA9IHRoaXMuI2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZTtcblxuICAgICAgZm9yIChjb25zdCBbcG9zaXRpb24sIHNpemVdIG9mIE9iamVjdC5lbnRyaWVzKHJlc2VydmVkU3BhY2VzKSkge1xuICAgICAgICBkb2N1bWVudEVsZW1lbnRTdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgICAgICBgLS1za3ktdmlld3BvcnQtJHtwb3NpdGlvbn1gLFxuICAgICAgICAgIHNpemUgKyAncHgnLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgI3dhdGNoVmlzaWJpbGl0eShpdGVtOiBSZXNlcnZlSXRlbVR5cGUpOiB2b2lkIHtcbiAgICBpZiAoaXRlbS5yZXNlcnZlRm9yRWxlbWVudCkge1xuICAgICAgdGhpcy4jY29uZGl0aW9uYWxseVJlc2VydmVJdGVtcy5zZXQoaXRlbS5yZXNlcnZlRm9yRWxlbWVudCwgaXRlbSk7XG4gICAgICB0aGlzLiNpbnRlcnNlY3Rpb25PYnNlcnZlci5vYnNlcnZlKGl0ZW0ucmVzZXJ2ZUZvckVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gICNpc0VsZW1lbnRWaXNpYmxlKFxuICAgIGFyZ3M6IFJlc2VydmVJdGVtVHlwZSxcbiAgICByZXNlcnZlZFNwYWNlczogUmVjb3JkPFNreUFwcFZpZXdwb3J0UmVzZXJ2ZWRQb3NpdGlvblR5cGUsIG51bWJlcj4gPSB0aGlzXG4gICAgICAuI3Jlc2VydmVkU3BhY2VzLFxuICApOiBib29sZWFuIHtcbiAgICBpZiAoIWFyZ3MucmVzZXJ2ZUZvckVsZW1lbnQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjb25zdCByZWN0ID0gYXJncy5yZXNlcnZlRm9yRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBpZiAoIXJlY3QgfHwgIXJlY3QuaGVpZ2h0IHx8ICFyZWN0LndpZHRoKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IG1pZHBvaW50ID0ge1xuICAgICAgeDogcmVjdC54ICsgTWF0aC5mbG9vcihyZWN0LndpZHRoIC8gMiksXG4gICAgICB5OiByZWN0LnkgKyBNYXRoLmZsb29yKHJlY3QuaGVpZ2h0IC8gMiksXG4gICAgfTtcbiAgICBpZiAoXG4gICAgICAvLyBWZXJ0aWNhbGx5IGluIHZpZXdcbiAgICAgIG1pZHBvaW50LnkgPD0gd2luZG93LmlubmVySGVpZ2h0ICYmXG4gICAgICBtaWRwb2ludC55ID49IDAgJiZcbiAgICAgIC8vIEhvcml6b250YWxseSBpbiB2aWV3XG4gICAgICBtaWRwb2ludC54IDw9IHdpbmRvdy5pbm5lcldpZHRoICYmXG4gICAgICBtaWRwb2ludC54ID49IDBcbiAgICApIHtcbiAgICAgIC8vIEVsZW1lbnQgaXMgbm90IGhpZGRlbiBieSBhbm90aGVyIGVsZW1lbnRcbiAgICAgIGlmIChcbiAgICAgICAgYXJncy5yZXNlcnZlRm9yRWxlbWVudC5jb250YWlucyhcbiAgICAgICAgICB0aGlzLiNkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KG1pZHBvaW50LngsIG1pZHBvaW50LnkpLFxuICAgICAgICApXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGlmIHRoZSBpdGVtJ3MgbWlkcG9pbnQgaXMgdmlzaWJsZSBiYXNlZCBvbiBjdXJyZW50IHJlc2VydmVkIHNwYWNlcy5cbiAgICAgIC8vIEFzc3VtZXMgcmVzZXJ2ZWQgc3BhY2VzIGFyZSBpbnRlbmRlZCB0byBiZSBhZGRpdGl2ZSBhbmQgbm90IG92ZXJsYXBwaW5nLlxuICAgICAgY29uc3QgdGhyZXNob2xkID0gcmVzZXJ2ZWRTcGFjZXNbYXJncy5wb3NpdGlvbl07XG4gICAgICBzd2l0Y2ggKGFyZ3MucG9zaXRpb24pIHtcbiAgICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgICByZXR1cm4gbWlkcG9pbnQueSA+PSB0aHJlc2hvbGQ7XG4gICAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgICByZXR1cm4gbWlkcG9pbnQueCA8PSB3aW5kb3cuaW5uZXJXaWR0aCAtIHRocmVzaG9sZDtcbiAgICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgICByZXR1cm4gbWlkcG9pbnQueSA8PSB3aW5kb3cuaW5uZXJIZWlnaHQgLSB0aHJlc2hvbGQ7XG4gICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgIHJldHVybiBtaWRwb2ludC54ID49IHRocmVzaG9sZDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iXX0=","import { DOCUMENT, RendererFactory2, inject, makeEnvironmentProviders, provideAppInitializer, } from '@angular/core';\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';\nexport function provideInitialTheme(name = 'default', options) {\n return makeEnvironmentProviders([\n SkyThemeService,\n provideAppInitializer(() => {\n const initializerFn = ((themeService, doc, rendererFactory) => {\n return () => {\n themeService.init(doc.body, rendererFactory.createRenderer(null, null), new SkyThemeSettings(SkyTheme.presets[name], SkyThemeMode.presets[options?.mode ?? 'light'], SkyThemeSpacing.presets[options?.spacing ?? 'standard']));\n };\n })(inject(SkyThemeService), inject(DOCUMENT), inject(RendererFactory2));\n return initializerFn();\n }),\n ]);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZS1pbml0aWFsLXRoZW1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3RoZW1lL3NyYy9saWIvcHJvdmlkZXJzL3Byb3ZpZGUtaW5pdGlhbC10aGVtZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsUUFBUSxFQUVSLGdCQUFnQixFQUNoQixNQUFNLEVBQ04sd0JBQXdCLEVBQ3hCLHFCQUFxQixHQUN0QixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsTUFBTSxVQUFVLG1CQUFtQixDQUNqQyxPQUFzQyxTQUFTLEVBQy9DLE9BR0M7SUFFRCxPQUFPLHdCQUF3QixDQUFDO1FBQzlCLGVBQWU7UUFDZixxQkFBcUIsQ0FBQyxHQUFHLEVBQUU7WUFDekIsTUFBTSxhQUFhLEdBQUcsQ0FBQyxDQUNyQixZQUE2QixFQUM3QixHQUFhLEVBQ2IsZUFBaUMsRUFDakMsRUFBRTtnQkFDRixPQUFPLEdBQVMsRUFBRTtvQkFDaEIsWUFBWSxDQUFDLElBQUksQ0FDZixHQUFHLENBQUMsSUFBSSxFQUNSLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUMxQyxJQUFJLGdCQUFnQixDQUNsQixRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUN0QixZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLElBQUksT0FBTyxDQUFDLEVBQzlDLGVBQWUsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sSUFBSSxVQUFVLENBQUMsQ0FDeEQsQ0FDRixDQUFDO2dCQUNKLENBQUMsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztZQUN4RSxPQUFPLGFBQWEsRUFBRSxDQUFDO1FBQ3pCLENBQUMsQ0FBQztLQUNILENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBET0NVTUVOVCxcbiAgRW52aXJvbm1lbnRQcm92aWRlcnMsXG4gIFJlbmRlcmVyRmFjdG9yeTIsXG4gIGluamVjdCxcbiAgbWFrZUVudmlyb25tZW50UHJvdmlkZXJzLFxuICBwcm92aWRlQXBwSW5pdGlhbGl6ZXIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTa3lUaGVtZSB9IGZyb20gJy4uL3RoZW1pbmcvdGhlbWUnO1xuaW1wb3J0IHsgU2t5VGhlbWVNb2RlIH0gZnJvbSAnLi4vdGhlbWluZy90aGVtZS1tb2RlJztcbmltcG9ydCB7IFNreVRoZW1lU2V0dGluZ3MgfSBmcm9tICcuLi90aGVtaW5nL3RoZW1lLXNldHRpbmdzJztcbmltcG9ydCB7IFNreVRoZW1lU3BhY2luZyB9IGZyb20gJy4uL3RoZW1pbmcvdGhlbWUtc3BhY2luZyc7XG5pbXBvcnQgeyBTa3lUaGVtZVNlcnZpY2UgfSBmcm9tICcuLi90aGVtaW5nL3RoZW1lLnNlcnZpY2UnO1xuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUluaXRpYWxUaGVtZShcbiAgbmFtZToga2V5b2YgdHlwZW9mIFNreVRoZW1lLnByZXNldHMgPSAnZGVmYXVsdCcsXG4gIG9wdGlvbnM/OiB7XG4gICAgbW9kZT86IGtleW9mIHR5cGVvZiBTa3lUaGVtZU1vZGUucHJlc2V0cztcbiAgICBzcGFjaW5nPzoga2V5b2YgdHlwZW9mIFNreVRoZW1lU3BhY2luZy5wcmVzZXRzO1xuICB9LFxuKTogRW52aXJvbm1lbnRQcm92aWRlcnMge1xuICByZXR1cm4gbWFrZUVudmlyb25tZW50UHJvdmlkZXJzKFtcbiAgICBTa3lUaGVtZVNlcnZpY2UsXG4gICAgcHJvdmlkZUFwcEluaXRpYWxpemVyKCgpID0+IHtcbiAgICAgIGNvbnN0IGluaXRpYWxpemVyRm4gPSAoKFxuICAgICAgICB0aGVtZVNlcnZpY2U6IFNreVRoZW1lU2VydmljZSxcbiAgICAgICAgZG9jOiBEb2N1bWVudCxcbiAgICAgICAgcmVuZGVyZXJGYWN0b3J5OiBSZW5kZXJlckZhY3RvcnkyLFxuICAgICAgKSA9PiB7XG4gICAgICAgIHJldHVybiAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgdGhlbWVTZXJ2aWNlLmluaXQoXG4gICAgICAgICAgICBkb2MuYm9keSxcbiAgICAgICAgICAgIHJlbmRlcmVyRmFjdG9yeS5jcmVhdGVSZW5kZXJlcihudWxsLCBudWxsKSxcbiAgICAgICAgICAgIG5ldyBTa3lUaGVtZVNldHRpbmdzKFxuICAgICAgICAgICAgICBTa3lUaGVtZS5wcmVzZXRzW25hbWVdLFxuICAgICAgICAgICAgICBTa3lUaGVtZU1vZGUucHJlc2V0c1tvcHRpb25zPy5tb2RlID8/ICdsaWdodCddLFxuICAgICAgICAgICAgICBTa3lUaGVtZVNwYWNpbmcucHJlc2V0c1tvcHRpb25zPy5zcGFjaW5nID8/ICdzdGFuZGFyZCddLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApO1xuICAgICAgICB9O1xuICAgICAgfSkoaW5qZWN0KFNreVRoZW1lU2VydmljZSksIGluamVjdChET0NVTUVOVCksIGluamVjdChSZW5kZXJlckZhY3RvcnkyKSk7XG4gICAgICByZXR1cm4gaW5pdGlhbGl6ZXJGbigpO1xuICAgIH0pLFxuICBdKTtcbn1cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2t5dXgtdGhlbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGhlbWUvc3JjL3NreXV4LXRoZW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":["i1.SkyThemeService"],"mappings":"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"}