@filip.mazev/blocks 1.2.36 → 1.2.38

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.
@@ -10,6 +10,9 @@ $required-theme-keys: (
10
10
  'bg-element',
11
11
  'bg-element-hover',
12
12
  'bg-element-active',
13
+ 'bg-neutral',
14
+ 'bg-neutral-hover',
15
+ 'bg-neutral-active',
13
16
 
14
17
  'primary',
15
18
  'primary-hover',
@@ -93,6 +96,9 @@ $required-theme-keys: (
93
96
  'bg-element': get-color-from-palette('neutral', 100),
94
97
  'bg-element-hover': get-color-from-palette($surface-brand, 200),
95
98
  'bg-element-active': get-color-from-palette($surface-brand, 300),
99
+ 'bg-neutral': get-color-from-palette('neutral', 100),
100
+ 'bg-neutral-hover': get-color-from-palette('neutral', 50),
101
+ 'bg-neutral-active': get-color-from-palette('neutral', 200),
96
102
 
97
103
  'primary': get-color-from-palette($accent, 500),
98
104
  'primary-hover': get-color-from-palette($accent, 600),
@@ -163,6 +169,9 @@ $merged-theme: map.merge($base, $overrides);
163
169
  'bg-element': get-color-from-palette('neutral', 800),
164
170
  'bg-element-hover': get-color-from-palette($surface-brand, 700),
165
171
  'bg-element-active': get-color-from-palette($surface-brand, 800),
172
+ 'bg-neutral': get-color-from-palette('neutral', 900),
173
+ 'bg-neutral-hover': get-color-from-palette('neutral', 800),
174
+ 'bg-neutral-active': get-color-from-palette('neutral', 600),
166
175
 
167
176
  'primary': get-color-from-palette($accent, 500),
168
177
  'primary-hover': get-color-from-palette($accent, 400),
@@ -7,6 +7,9 @@ $high-contrast-light-theme: validate-theme(('bg-canvas': $hc-white,
7
7
  'bg-element': $hc-white,
8
8
  'bg-element-hover': $hc-yellow,
9
9
  'bg-element-active': $hc-yellow,
10
+ 'bg-neutral': $hc-white,
11
+ 'bg-neutral-hover': $hc-yellow,
12
+ 'bg-neutral-active': $hc-yellow,
10
13
 
11
14
  'primary': $hc-black,
12
15
  'primary-hover': $hc-black,
@@ -69,6 +72,9 @@ $high-contrast-dark-theme: validate-theme(('bg-canvas': $hc-black,
69
72
  'bg-element': $hc-black,
70
73
  'bg-element-hover': $hc-yellow,
71
74
  'bg-element-active': $hc-yellow,
75
+ 'bg-neutral': $hc-black,
76
+ 'bg-neutral-hover': $hc-yellow,
77
+ 'bg-neutral-active': $hc-yellow,
72
78
 
73
79
  'primary': $hc-white,
74
80
  'primary-hover': $hc-white,
@@ -5,7 +5,7 @@ import { fromEvent } from 'rxjs';
5
5
  import { debounceTime, map, distinctUntilChanged } from 'rxjs/operators';
6
6
  import { toObservable } from '@angular/core/rxjs-interop';
7
7
  import { Overlay, ConnectionPositionPair } from '@angular/cdk/overlay';
8
- import { NgControl } from '@angular/forms';
8
+ import { NgControl, Validators } from '@angular/forms';
9
9
 
10
10
  var DesktopOS;
11
11
  (function (DesktopOS) {
@@ -534,6 +534,12 @@ class BxBaseControl {
534
534
  required = input(false, ...(ngDevMode ? [{ debugName: "required" }] : /* istanbul ignore next */ []));
535
535
  loading = input(false, ...(ngDevMode ? [{ debugName: "loading" }] : /* istanbul ignore next */ []));
536
536
  disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
537
+ isFieldRequired = computed(() => {
538
+ if (this.required && this.required())
539
+ return true;
540
+ const control = this.ngControl?.control;
541
+ return control?.hasValidator ? control.hasValidator(Validators.required) : false;
542
+ }, ...(ngDevMode ? [{ debugName: "isFieldRequired" }] : /* istanbul ignore next */ []));
537
543
  internalValue = signal(null, ...(ngDevMode ? [{ debugName: "internalValue" }] : /* istanbul ignore next */ []));
538
544
  isTouched = signal(false, ...(ngDevMode ? [{ debugName: "isTouched" }] : /* istanbul ignore next */ []));
539
545
  isDisabled = signal(false, ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
@@ -1 +1 @@
1
- {"version":3,"file":"filip.mazev-blocks-core.mjs","sources":["../../../projects/blocks/core/enums/desktop-os.enum.ts","../../../projects/blocks/core/enums/mobile-os.enum.ts","../../../projects/blocks/core/services/device-type.service.ts","../../../projects/blocks/core/constants/window-dimension.constants.ts","../../../projects/blocks/core/services/window-dimension.service.ts","../../../projects/blocks/core/services/scroll-lock.service.ts","../../../projects/blocks/core/services/theming.service.ts","../../../projects/blocks/core/services/bx-a11y.service.ts","../../../projects/blocks/core/services/bx-overlay-position.service.ts","../../../projects/blocks/core/types/core.types.ts","../../../projects/blocks/core/services/bx-shortcut.service.ts","../../../projects/blocks/core/classes/bx-base-control.ts","../../../projects/blocks/core/constants/numeric.constants.ts","../../../projects/blocks/core/constants/scroll-lock.constants.ts","../../../projects/blocks/core/constants/tokens.constants.ts","../../../projects/blocks/core/types/theme.types.ts","../../../projects/blocks/core/tokens/bx-i18n.token.ts","../../../projects/blocks/core/helpers/core-functions.ts","../../../projects/blocks/core/helpers/token-functions.ts","../../../projects/blocks/core/helpers/uui4.ts","../../../projects/blocks/core/public-api.ts","../../../projects/blocks/core/filip.mazev-blocks-core.ts"],"sourcesContent":["export enum DesktopOS {\n Linux = 'linux',\n MacOS = 'mac_os',\n Unix = 'unix',\n Unknown = 'unknown',\n Windows = 'windows'\n}\n","export enum MobileOS {\n Android = 'android',\n iOS = 'ios',\n Unknown = 'unknown',\n WindowsPhone = 'Windows Phone'\n}\n","import { Injectable, inject, PLATFORM_ID } from '@angular/core';\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { DesktopOS } from '../enums/desktop-os.enum';\nimport { MobileOS } from '../enums/mobile-os.enum';\nimport { IDeviceState } from '../interfaces/idevice-state.interface';\nimport { DeviceOrientationType } from '../types/core.types';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DeviceTypeService {\n private readonly document = inject(DOCUMENT);\n private readonly platformId = inject(PLATFORM_ID);\n private readonly isBrowser = isPlatformBrowser(this.platformId);\n private screenOrientation: DeviceOrientationType = 'portrait-primary';\n\n constructor() {\n if (this.isBrowser) {\n const win = this.document.defaultView;\n const screenObj = win?.screen as any;\n \n this.screenOrientation = \n (screenObj?.orientation || {}).type ?? \n screenObj?.mozOrientation ?? \n screenObj?.msOrientation ?? \n (!screenObj?.orientation && win?.matchMedia('(orientation: portrait)').matches ? 'portrait-primary' : 'landscape-primary');\n\n if (screenObj?.orientation) {\n screenObj.orientation.addEventListener('change', (ev: Event) => {\n const orientation = ev.target as ScreenOrientation | null;\n if (orientation?.type) {\n this.screenOrientation = orientation.type;\n }\n });\n }\n }\n }\n\n private get userAgent(): string {\n if (!this.isBrowser) return '';\n const win = this.document.defaultView as Window & { opera?: string };\n return win?.navigator?.userAgent || win?.navigator?.vendor || win?.opera || '';\n }\n\n private get isDesktopDevice(): boolean {\n return !this.isMobileDevice() && !this.isTabletDevice();\n }\n\n public isLandscapeOrientation(): boolean {\n return ['landscape-primary', 'landscape-secondary'].includes(this.screenOrientation);\n }\n\n public isPortraitOrientation(): boolean {\n return ['portrait-primary', 'portrait-secondary'].includes(this.screenOrientation);\n }\n\n public getDeviceState(): IDeviceState {\n const isMobile = this.isMobileDevice();\n const isTablet = this.isTabletDevice();\n const isDesktop = this.isDesktopDevice;\n \n const mobileOS = this.getMobileOS();\n const desktopOS = this.getDesktopOS();\n const deviceOS = mobileOS ?? desktopOS;\n\n return {\n isDesktop,\n desktopOS,\n isWindowsDesktop: deviceOS === DesktopOS.Windows,\n isLinuxOrUnixDesktop: deviceOS === DesktopOS.Linux || deviceOS === DesktopOS.Unix,\n isMobile,\n mobileOS,\n isAndroidDevice: deviceOS === MobileOS.Android,\n isAppleDevice: deviceOS === MobileOS.iOS || deviceOS === DesktopOS.MacOS,\n isUnknownMobileDevice: deviceOS === MobileOS.Unknown,\n isTablet,\n isLandscapeOrientation: () => this.isLandscapeOrientation(),\n isPortraitOrientation: () => this.isPortraitOrientation()\n };\n }\n\n private isMobileDevice(): boolean {\n const regexs = [/(Android)(.+)(Mobile)/i, /BlackBerry/i, /iPhone|iPod/i, /Opera Mini/i, /IEMobile/i];\n return regexs.some((regex) => regex.test(this.userAgent));\n }\n\n private isTabletDevice(): boolean {\n const regex = /(ipad|tablet|(android(?!.*mobile))|(windows(?!.*phone)(.*touch))|kindle|playbook|silk|(puffin(?!.*(IP|AP|WP))))/i;\n return regex.test(this.userAgent);\n }\n\n private getMobileOS(): MobileOS | undefined {\n if (this.isMobileDevice()) {\n const ua = this.userAgent;\n if (/windows phone/i.test(ua)) return MobileOS.WindowsPhone;\n if (/android/i.test(ua)) return MobileOS.Android;\n if (/iPad|iPhone|iPod/.test(ua) && !(this.document.defaultView as any)?.MSStream) return MobileOS.iOS;\n\n return MobileOS.Unknown;\n }\n return undefined;\n }\n\n private getDesktopOS(): DesktopOS | undefined {\n if (this.isDesktopDevice) {\n const ua = this.userAgent;\n if (ua.includes('Win')) return DesktopOS.Windows;\n if (ua.includes('Mac')) return DesktopOS.MacOS;\n if (ua.includes('X11')) return DesktopOS.Unix;\n if (ua.includes('Linux')) return DesktopOS.Linux;\n\n return DesktopOS.Unknown;\n }\n return undefined;\n }\n}","export const BREAKPOINTS = {\n xs: 360,\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n '2xl': 1536,\n '3xl': 1920,\n '4xl': 2560\n} as const;\n","import { Injectable, inject, NgZone, PLATFORM_ID, signal, computed } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { fromEvent } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, map } from 'rxjs/operators';\nimport { BREAKPOINTS } from '../constants/window-dimension.constants';\nimport { IWindowDimensions } from '../interfaces/iwindow-dimensions.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class WindowDimensionsService {\n public readonly ngZone = inject(NgZone);\n public readonly platformId = inject(PLATFORM_ID);\n\n public readonly isBrowser = isPlatformBrowser(this.platformId);\n\n public readonly _dimensions = signal<IWindowDimensions>(this.getCurrentDimensions());\n\n public readonly dimensions = this._dimensions.asReadonly();\n\n public readonly isMobile = computed(() => this.dimensions().width < BREAKPOINTS.md);\n public readonly isTablet = computed(() => this.dimensions().width >= BREAKPOINTS.md && this.dimensions().width < BREAKPOINTS.lg);\n public readonly isDesktop = computed(() => this.dimensions().width >= BREAKPOINTS.lg);\n\n public readonly breakpoints = BREAKPOINTS;\n\n constructor() {\n this.initResizeListener();\n }\n\n private getCurrentDimensions(): IWindowDimensions {\n if (!this.isBrowser) {\n return { width: 0, height: 0 };\n }\n return {\n width: window.innerWidth,\n height: window.innerHeight\n };\n }\n\n private initResizeListener(): void {\n if (!this.isBrowser) return;\n\n this.ngZone.runOutsideAngular(() => {\n fromEvent(window, 'resize')\n .pipe(\n debounceTime(150),\n map(() => this.getCurrentDimensions()),\n distinctUntilChanged((prev, curr) => prev.width === curr.width && prev.height === curr.height)\n )\n .subscribe((dims) => {\n this.ngZone.run(() => {\n this._dimensions.set(dims);\n });\n });\n });\n }\n}\n","import { Injectable, OnDestroy, inject, signal, PLATFORM_ID } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { DeviceTypeService } from './device-type.service';\nimport { WindowDimensionsService } from './window-dimension.service';\nimport { IScrollLockConfig } from '../interfaces/iscroll-lock-config.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class ScrollLockService implements OnDestroy {\n private readonly platformId = inject(PLATFORM_ID);\n private readonly deviceTypeService = inject(DeviceTypeService);\n private readonly windowDimensionsService = inject(WindowDimensionsService);\n\n private readonly isBrowser = isPlatformBrowser(this.platformId);\n private readonly activeLocks = new Map<string, IScrollLockConfig>();\n private readonly boundHandleTouchMove = this.handleTouchMove.bind(this);\n private readonly boundPreventDefault = this.preventDefault.bind(this);\n\n public readonly _isScrollDisabled = signal(false);\n public readonly isScrollDisabled = this._isScrollDisabled.asReadonly();\n\n private previousBodyPadding: string | null = null;\n\n private pendingListenerTimeout: number | null = null;\n\n public ngOnDestroy(): void {\n if (!this.isBrowser) return;\n this.clearPendingTimeout();\n this.forceCleanupAll();\n }\n\n public disableScroll(usageId: string, config: IScrollLockConfig): void {\n if (!this.isBrowser) return;\n\n const wasDisabled = this._isScrollDisabled();\n\n this.activeLocks.set(usageId, config);\n this._isScrollDisabled.set(true);\n\n if (wasDisabled) return;\n\n const documentWidth = document.documentElement.clientWidth;\n const windowWidth = window.innerWidth;\n const scrollBarWidth = windowWidth - documentWidth;\n\n if (scrollBarWidth > 0) {\n this.previousBodyPadding = document.body.style.paddingRight;\n const computedPadding = parseInt(getComputedStyle(document.body).paddingRight, 10) || 0;\n\n document.body.style.setProperty('padding-right', `${computedPadding + scrollBarWidth}px`, 'important');\n }\n\n document.body.style.setProperty('overflow', 'hidden', 'important');\n\n if (config.handleTouchInput !== false) {\n document.body.style.setProperty('touch-action', 'none', 'important');\n }\n\n this.clearPendingTimeout();\n\n this.pendingListenerTimeout = window.setTimeout(\n () => {\n if (!this._isScrollDisabled()) return;\n\n if (config.handleTouchInput === true) {\n document.body.addEventListener('touchmove', this.boundHandleTouchMove, { passive: false });\n }\n\n if (config.handleExtremeOverflow === true) {\n const opt = { passive: false };\n window.addEventListener('wheel', this.boundPreventDefault, opt);\n window.addEventListener('mousewheel', this.boundPreventDefault, opt);\n window.addEventListener('scroll', this.boundPreventDefault, opt);\n window.addEventListener('DOMMouseScroll', this.boundPreventDefault, opt);\n }\n },\n (config.animationDuration ?? 0) + 10\n );\n }\n\n public enableScroll(usageId: string, extremeOverflow?: boolean): void {\n if (!this.isBrowser) return;\n\n if (!this.activeLocks.has(usageId)) return;\n\n this.activeLocks.delete(usageId);\n\n if (this.activeLocks.size > 0) return;\n\n this.updateStateAndCleanup(extremeOverflow);\n }\n\n private getActiveConfig(): IScrollLockConfig | null {\n if (this.activeLocks.size === 0) return null;\n const keys = Array.from(this.activeLocks.keys());\n return this.activeLocks.get(keys[keys.length - 1]) ?? null;\n }\n\n private updateStateAndCleanup(extremeOverflow?: boolean): void {\n if (!this.isBrowser) return;\n\n this.clearPendingTimeout();\n\n this._isScrollDisabled.set(false);\n\n document.body.style.removeProperty('overflow');\n\n if (this.previousBodyPadding !== null) {\n if (this.previousBodyPadding) {\n document.body.style.setProperty('padding-right', this.previousBodyPadding);\n } else {\n document.body.style.removeProperty('padding-right');\n }\n this.previousBodyPadding = null;\n }\n\n document.body.removeEventListener('touchmove', this.boundHandleTouchMove);\n document.body.style.removeProperty('touch-action');\n\n if (extremeOverflow !== false) {\n window.removeEventListener('wheel', this.boundPreventDefault);\n window.removeEventListener('mousewheel', this.boundPreventDefault);\n window.removeEventListener('scroll', this.boundPreventDefault);\n window.removeEventListener('DOMMouseScroll', this.boundPreventDefault);\n }\n }\n\n private forceCleanupAll(): void {\n this.activeLocks.clear();\n this.updateStateAndCleanup(true);\n }\n\n private clearPendingTimeout(): void {\n if (this.pendingListenerTimeout !== null) {\n clearTimeout(this.pendingListenerTimeout);\n this.pendingListenerTimeout = null;\n }\n }\n\n private handleTouchMove(event: Event): void {\n const targetNode = event.target as Node;\n const cfg = this.getActiveConfig();\n\n if (!this.isAllowedToScroll(targetNode) && (cfg === null || cfg.handleTouchInput !== false)) {\n if (\n cfg === null ||\n cfg.mobileOnlyTouchPrevention !== true ||\n (cfg.mobileOnlyTouchPrevention === true &&\n (!this.deviceTypeService.getDeviceState().isMobile || !this.deviceTypeService.getDeviceState().isTablet) &&\n this.windowDimensionsService.dimensions().width < this.windowDimensionsService.breakpoints.sm)\n ) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n }\n\n private isAllowedToScroll(targetNode: Node): boolean {\n const cfg = this.getActiveConfig();\n const allow = cfg?.allowTouchInputOn;\n\n if (!allow) return true;\n\n if (Array.isArray(allow)) {\n if (allow.length === 0) return true;\n return allow.some((el) => el.contains(targetNode));\n }\n\n return false;\n }\n\n private preventDefault(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n }\n}\n","import { Injectable, OnDestroy, inject, signal, PLATFORM_ID, computed } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { DeviceTheme } from '../types/core.types';\nimport { toObservable } from '@angular/core/rxjs-interop';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ThemingService implements OnDestroy {\n private readonly platformId = inject(PLATFORM_ID);\n private readonly isBrowser = isPlatformBrowser(this.platformId);\n\n private readonly _systemTheme = signal<DeviceTheme>('light');\n private readonly _applicationTheme = signal<DeviceTheme | null>(null);\n\n public readonly systemTheme = this._systemTheme.asReadonly();\n public readonly applicationTheme = this._applicationTheme.asReadonly();\n public readonly activeTheme = computed(() => this.applicationTheme() ?? this.systemTheme());\n\n private readonly systemTheme$ = toObservable(this._systemTheme);\n private readonly applicationTheme$ = toObservable(this._applicationTheme);\n\n private mediaQueryList?: MediaQueryList;\n private mediaQueryListener?: (event: MediaQueryListEvent) => void;\n\n constructor() {\n if (this.isBrowser) {\n this._systemTheme.set(this.detectInitialSystemTheme());\n\n const storedTheme = localStorage.getItem('theme') as DeviceTheme | null;\n if (storedTheme === 'dark' || storedTheme === 'light') {\n this._applicationTheme.set(storedTheme);\n }\n\n this.initSystemThemeListener();\n }\n }\n\n public ngOnDestroy(): void {\n if (this.mediaQueryList && this.mediaQueryListener) {\n this.mediaQueryList.removeEventListener('change', this.mediaQueryListener);\n }\n }\n\n public setApplicationTheme(theme: DeviceTheme): void {\n this._applicationTheme.set(theme);\n if (this.isBrowser) {\n localStorage.setItem('theme', theme);\n }\n }\n\n public getSystemTheme$() {\n return this.systemTheme$;\n }\n\n public getApplicationTheme$() {\n return this.applicationTheme$;\n }\n\n private detectInitialSystemTheme(): DeviceTheme {\n if (!this.isBrowser) return 'light';\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n }\n\n private initSystemThemeListener(): void {\n this.mediaQueryList = window.matchMedia('(prefers-color-scheme: dark)');\n this.mediaQueryListener = (event: MediaQueryListEvent) => {\n this._systemTheme.set(event.matches ? 'dark' : 'light');\n };\n this.mediaQueryList.addEventListener('change', this.mediaQueryListener);\n }\n}\n","import { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { Injectable, PLATFORM_ID, computed, effect, inject, signal } from '@angular/core';\n\n@Injectable({ \n providedIn: 'root'\n})\nexport class BxA11yService {\n private readonly document = inject(DOCUMENT);\n private readonly platformId = inject(PLATFORM_ID);\n\n private readonly osPrefersReducedMotion = signal(false);\n private readonly manualOverride = signal<boolean | null>(null);\n\n public readonly isReducedMotion = computed(() => {\n const manual = this.manualOverride();\n if (manual !== null) return manual;\n return this.osPrefersReducedMotion();\n });\n\n constructor() {\n this.initMediaMatcher();\n this.syncWithDOM();\n }\n\n public setReducedMotion(reduce: boolean | null): void {\n this.manualOverride.set(reduce);\n }\n\n //#region Helpers\n\n private initMediaMatcher(): void {\n if (!isPlatformBrowser(this.platformId)) return;\n\n const mediaQuery = window.matchMedia('(prefers-reduced-motion: reduce)');\n this.osPrefersReducedMotion.set(mediaQuery.matches);\n\n mediaQuery.addEventListener('change', (e) => {\n this.osPrefersReducedMotion.set(e.matches);\n });\n }\n\n private syncWithDOM(): void {\n if (!isPlatformBrowser(this.platformId)) return;\n\n effect(() => {\n const isReduced = this.isReducedMotion();\n const root = this.document.documentElement;\n\n if (isReduced) {\n root.classList.add('bx-reduce-motion-forced');\n root.style.setProperty('--bx-reduced-motion', '1');\n } else {\n root.classList.remove('bx-reduce-motion-forced');\n root.style.setProperty('--bx-reduced-motion', '0');\n }\n });\n }\n\n //#endregion\n}","import { Injectable, inject } from '@angular/core';\nimport { ConnectionPositionPair, Overlay, FlexibleConnectedPositionStrategy } from '@angular/cdk/overlay';\nimport { BxPlacement } from '../types/core.types';\n\n@Injectable({ providedIn: 'root' })\nexport class BxOverlayPositionService {\n private readonly overlay = inject(Overlay);\n\n public getElementStrategy(element: HTMLElement, placement: BxPlacement, offset: number = 8): FlexibleConnectedPositionStrategy {\n return this.overlay.position()\n .flexibleConnectedTo(element)\n .withPositions(this.getPositions(placement, offset))\n .withPush(true)\n .withViewportMargin(8);\n }\n\n public getCoordinateStrategy(x: number, y: number): FlexibleConnectedPositionStrategy {\n return this.overlay.position()\n .flexibleConnectedTo({ x, y }) \n .withPositions(this.getPositions('bottom', 2))\n .withPush(true)\n .withViewportMargin(8);\n }\n\n private getPositions(placement: BxPlacement, offset: number): ConnectionPositionPair[] {\n const top = new ConnectionPositionPair(\n { originX: 'center', originY: 'top' }, \n { overlayX: 'center', overlayY: 'bottom' }, \n 0, -offset, ['bx-overlay-pos-top']\n );\n \n const bottom = new ConnectionPositionPair(\n { originX: 'center', originY: 'bottom' }, \n { overlayX: 'center', overlayY: 'top' }, \n 0, offset, ['bx-overlay-pos-bottom']\n );\n \n const left = new ConnectionPositionPair(\n { originX: 'start', originY: 'center' }, \n { overlayX: 'end', overlayY: 'center' }, \n -offset, 0, ['bx-overlay-pos-left']\n );\n \n const right = new ConnectionPositionPair(\n { originX: 'end', originY: 'center' }, \n { overlayX: 'start', overlayY: 'center' }, \n offset, 0, ['bx-overlay-pos-right']\n );\n\n switch (placement) {\n case 'top': return [top, bottom, right, left];\n case 'bottom': return [bottom, top, right, left];\n case 'left': return [left, right, top, bottom];\n case 'right': return [right, left, top, bottom];\n }\n }\n}","import { BxCustomValidators } from \"../interfaces/ibx-custom-validators.interface\";\n\nexport type DeviceTheme = 'light' | 'dark';\nexport type DeviceOrientationType = 'portrait-primary' | 'landscape-primary' | 'portrait-secondary' | 'landscape-secondary';\n\nexport type Strict<T, Expected> = T & {\n [K in keyof T]: K extends keyof Expected ? Expected[K] : never;\n};\n\nexport type ResolvableText = string | { key: string };\n\nexport type BxPlacement = 'top' | 'bottom' | 'left' | 'right';\n\nexport type ShortcutKey = string | string[];\n\nexport interface OSShortcut {\n mac?: ShortcutKey;\n windows?: ShortcutKey;\n linux?: ShortcutKey;\n default: ShortcutKey;\n}\n\nexport type ResolvableShortcut = ShortcutKey | OSShortcut;\n\nexport function isOSShortcut(val: unknown): val is OSShortcut {\n return (\n typeof val === 'object' && \n val !== null && \n !Array.isArray(val) && \n 'default' in val\n );\n}\n\nexport type DefaultValidatorKey = 'required' | 'minlength' | 'maxlength' | 'email' | 'pattern' | 'min' | 'max';\n\nexport type ValidatorKey = DefaultValidatorKey | keyof BxCustomValidators;","import { Injectable, inject } from '@angular/core';\nimport { DeviceTypeService } from './device-type.service';\nimport { ResolvableShortcut, ShortcutKey, isOSShortcut } from '../types/core.types';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BxShortcutService {\n private readonly deviceTypeService = inject(DeviceTypeService);\n\n public resolve(shortcut: ResolvableShortcut | undefined): string[] | undefined {\n if (!shortcut) return undefined;\n\n let resolvedKey: ShortcutKey;\n\n if (isOSShortcut(shortcut)) {\n const state = this.deviceTypeService.getDeviceState();\n\n if (state.isAppleDevice && shortcut.mac) {\n resolvedKey = shortcut.mac;\n } else if (state.isWindowsDesktop && shortcut.windows) {\n resolvedKey = shortcut.windows;\n } else if (state.isLinuxOrUnixDesktop && shortcut.linux) {\n resolvedKey = shortcut.linux;\n } else {\n resolvedKey = shortcut.default;\n }\n } else {\n resolvedKey = shortcut;\n }\n\n return Array.isArray(resolvedKey) ? resolvedKey : [resolvedKey];\n }\n}","import { Directive, inject, input, signal, OnInit, isDevMode } from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { ResolvableText, ValidatorKey } from '../types/core.types';\n\n@Directive()\nexport abstract class BxBaseControl<T> implements ControlValueAccessor, OnInit {\n public readonly ngControl = inject(NgControl, { optional: true, self: true });\n\n public readonly label = input<ResolvableText | undefined>(undefined);\n public readonly placeholder = input<ResolvableText | undefined>(undefined);\n public readonly tooltip = input<ResolvableText | undefined>(undefined);\n public readonly dataTestId = input<string | undefined>(undefined);\n public readonly ariaLabel = input<string | undefined>(undefined);\n \n public readonly errorMessages = input<Partial<Record<ValidatorKey, ResolvableText>>>({});\n\n public readonly required = input<boolean>(false);\n public readonly loading = input<boolean>(false);\n public readonly disabled = input<boolean>(false);\n\n protected readonly internalValue = signal<T | null>(null);\n protected readonly isTouched = signal<boolean>(false);\n protected readonly isDisabled = signal<boolean>(false);\n\n protected onChange: (value: T | null) => void = () => {};\n protected onTouched: () => void = () => {};\n\n constructor() {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n public ngOnInit(): void {\n this.isDisabled.set(this.disabled());\n\n if (isDevMode() && this.ngControl?.control?.validator) {\n const hasMessages = Object.keys(this.errorMessages()).length > 0;\n if (!hasMessages) {\n console.error(`[Blocks UI Strict Mode] The form control for this field has validators, but the [errorMessages] input is empty. You must provide error messages for all applied validators.`);\n }\n }\n }\n\n public writeValue(value: T | null): void {\n this.internalValue.set(value);\n }\n\n public registerOnChange(fn: (value: T | null) => void): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.isDisabled.set(isDisabled);\n }\n\n protected updateValue(value: T | null): void {\n if (this.isDisabled()) return;\n this.internalValue.set(value);\n this.onChange(value);\n }\n\n protected markAsTouched(): void {\n if (!this.isTouched()) {\n this.isTouched.set(true);\n this.onTouched();\n }\n }\n\n protected get errorMessage(): ResolvableText | undefined {\n if (this.ngControl?.invalid && (this.ngControl.touched || this.ngControl.dirty)) {\n const errors = this.ngControl.errors;\n if (!errors) return undefined;\n \n const firstKey = Object.keys(errors)[0] as ValidatorKey;\n const customErrorMap = this.errorMessages();\n\n if (customErrorMap && customErrorMap[firstKey]) {\n return customErrorMap[firstKey];\n }\n\n if (typeof errors[firstKey as string] === 'string') {\n return errors[firstKey as string];\n }\n\n if (isDevMode()) {\n console.error(`[Blocks UI Strict Mode] Validation failed for key '${firstKey}', but no message was provided in [errorMessages].`);\n }\n \n return `[Missing error message: ${firstKey}]`; \n }\n return undefined;\n }\n}","export const DEFAULT_DEBOUNCE_TIME = 300;","export const SCROLL_LOCK_INSTANCE_IDENTIFIER = 'scroll_lock_instance_';\n","import { SemanticColorToken } from '../types/theme.types';\n\nexport const PALETTE_NAMES = ['orange', 'purple', 'red', 'green', 'danger', 'success', 'information', 'neutral'] as const;\nexport const SHADE_NUMBERS = [50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000] as const;\n\nexport const TOKEN_PREFIX = 'bx';\nexport const TOKEN_DELIMITER = '-';\nexport const TOKEN_COLOR_DELIMITER = 'color';\nexport const FALLBACK_COLOR = '#000000';\n\nexport const SEMANTIC_PAIRS: Partial<Record<SemanticColorToken, SemanticColorToken>> = {\n 'bg-canvas': 'text-primary',\n 'bg-surface': 'text-primary',\n 'bg-surface-alt': 'text-primary',\n 'bg-element': 'text-primary',\n 'bg-element-hover': 'text-primary',\n\n 'text-heading': 'bg-element',\n 'text-primary': 'bg-element',\n 'text-secondary': 'bg-element',\n 'text-brand': 'bg-surface',\n 'text-inverse': 'primary',\n 'on-primary': 'primary',\n\n primary: 'primary-subtle',\n 'primary-hover': 'on-primary',\n 'primary-active': 'on-primary',\n 'primary-subtle': 'text-primary',\n\n 'border-subtle': 'bg-surface',\n 'border-default': 'bg-surface',\n 'border-strong': 'bg-surface',\n 'border-brand': 'bg-surface',\n\n 'bg-info': 'text-info',\n 'bg-info-active': 'text-info',\n 'bg-info-hover': 'text-info',\n 'bg-info-disabled': 'border-info',\n 'bg-info-subtle': 'border-info',\n 'border-info': 'bg-info',\n 'text-info': 'bg-info',\n\n 'bg-success': 'text-success',\n 'bg-success-active': 'text-success',\n 'bg-success-hover': 'text-success',\n 'bg-success-disabled': 'border-success',\n 'bg-success-subtle': 'border-success',\n 'border-success': 'bg-success',\n 'text-success': 'bg-success',\n\n 'bg-warn': 'text-warn',\n 'bg-warn-active': 'text-warn',\n 'bg-warn-hover': 'text-warn',\n 'bg-warn-disabled': 'border-warn',\n 'bg-warn-subtle': 'border-warn',\n 'border-warn': 'bg-warn',\n 'text-warn': 'bg-warn',\n\n 'bg-danger': 'text-danger',\n 'bg-danger-active': 'text-danger',\n 'bg-danger-hover': 'text-danger',\n 'bg-danger-disabled': 'border-danger',\n 'bg-danger-subtle': 'border-danger',\n 'border-danger': 'bg-danger',\n 'text-danger': 'bg-danger',\n\n 'scroll-bg': 'bg-surface',\n 'scroll-thumb': 'scroll-bg',\n 'scroll-thumb-hover': 'scroll-bg'\n};\n","// THIS FILE IS AUTO-GENERATED. DO NOT EDIT DIRECTLY.\n// Update the $required-theme-keys in the _theme-engine.scss file instead.\n\nexport type SemanticColorToken =\n | 'bg-canvas'\n | 'bg-surface'\n | 'bg-surface-alt'\n | 'bg-element'\n | 'bg-element-hover'\n | 'bg-element-active'\n | 'primary'\n | 'primary-hover'\n | 'primary-active'\n | 'primary-subtle'\n | 'on-primary'\n | 'text-heading'\n | 'text-primary'\n | 'text-secondary'\n | 'text-brand'\n | 'text-inverse'\n | 'text-info'\n | 'text-warn'\n | 'text-success'\n | 'text-danger'\n | 'border-subtle'\n | 'border-default'\n | 'border-strong'\n | 'border-brand'\n | 'border-info'\n | 'border-success'\n | 'border-warn'\n | 'border-danger'\n | 'bg-info'\n | 'bg-info-hover'\n | 'bg-info-active'\n | 'bg-info-disabled'\n | 'bg-info-subtle'\n | 'bg-success'\n | 'bg-success-hover'\n | 'bg-success-active'\n | 'bg-success-disabled'\n | 'bg-success-subtle'\n | 'bg-warn'\n | 'bg-warn-hover'\n | 'bg-warn-active'\n | 'bg-warn-disabled'\n | 'bg-warn-subtle'\n | 'bg-danger'\n | 'bg-danger-hover'\n | 'bg-danger-active'\n | 'bg-danger-disabled'\n | 'bg-danger-subtle'\n | 'scroll-bg'\n | 'scroll-thumb'\n | 'scroll-thumb-hover'\n | 'meta-brand-palette';\n","import { InjectionToken } from \"@angular/core\";\nimport { IBxI18nAdapter } from \"../interfaces/ibx-i18n-adapter.interface\";\n\nexport const BX_I18N = new InjectionToken<IBxI18nAdapter>('BX_I18N');","import { ResolvableText } from \"../types/core.types\";\n\n/** \n * Type guard to check if a ResolvableText is an object with a 'key' property, indicating it's a translation key rather than a plain string.\n*/\nexport function isTextWithKey(value: ResolvableText): value is { key: string } {\n return typeof value === 'object' && value !== null && 'key' in value;\n}","import { Color, ThemeColorToken, ThemedColor } from '../types/tokens.types';\nimport { SemanticColorToken } from '../types/theme.types';\nimport * as tokenConsts from '../constants/tokens.constants';\n\n/**\n * Type Guard: Detects if a token is a static palette shade (e.g., 'orange-500')\n */\nexport function isPaletteToken(token: Color): token is ThemeColorToken {\n return /-\\d+$/.test(token);\n}\n\n/**\n * Type Guard: Detects if the provided color is a ThemedColor configuration object.\n */\nexport function isThemedColor(color: unknown): color is Extract<ThemedColor, object> {\n return color !== null && typeof color === 'object' && 'light' in color;\n}\n\n/**\n * Returns the correct CSS variable string based on the token type.\n */\nexport function resolveTokenToCssVar(token: Color): string {\n if (isPaletteToken(token)) {\n return `var(--${tokenConsts.TOKEN_PREFIX}${tokenConsts.TOKEN_DELIMITER}${tokenConsts.TOKEN_COLOR_DELIMITER}${tokenConsts.TOKEN_DELIMITER}${token})`;\n } else {\n return `var(--${tokenConsts.TOKEN_PREFIX}${tokenConsts.TOKEN_DELIMITER}${token})`;\n }\n}\n\n/**\n * Smartly resolves the complementary background token.\n */\nexport function getComplementaryToken(token: Color): Color {\n if (!isPaletteToken(token)) {\n return (tokenConsts.SEMANTIC_PAIRS[token as SemanticColorToken] as Color) || 'surface';\n }\n\n const parts = token.split(tokenConsts.TOKEN_DELIMITER);\n const shade = parts.pop();\n const palette = parts.join(tokenConsts.TOKEN_DELIMITER);\n\n const shadeNum = parseInt(shade || '500', 10);\n const bgShade = shadeNum > 400 ? 50 : 900;\n\n return `${palette}-${bgShade}` as Color;\n}\n\n/**\n * Provides the inverted value of a given token color\n */\nexport function invertPaletteToken(token: Color): Color {\n const parts = token.split(tokenConsts.TOKEN_DELIMITER);\n if (parts.length < 2) return token;\n\n const shadeStr = parts.pop();\n const base = parts.join(tokenConsts.TOKEN_DELIMITER);\n const shade = Number(shadeStr);\n\n if (isNaN(shade)) return token;\n\n let invertedShade: number;\n if (shade === 50) invertedShade = 900;\n else if (shade === 1000) invertedShade = 50;\n else invertedShade = 1000 - shade;\n\n const finalShade = (tokenConsts.SHADE_NUMBERS as readonly number[]).includes(invertedShade) ? invertedShade : shade;\n\n return `${base}-${finalShade}` as Color;\n}\n","export function uuidv4() {\n return '10000000-1000-4000-8000-100000000000'.replace(/[018]/g, (c) => (+c ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (+c / 4)))).toString(16));\n}\n","/*\n * Public API Surface of core\n */\n\nexport * from './services/device-type.service';\nexport * from './services/scroll-lock.service';\nexport * from './services/window-dimension.service';\nexport * from './services/theming.service';\nexport * from './services/bx-a11y.service';\nexport * from './services/bx-overlay-position.service';\nexport * from './services/bx-shortcut.service';\n\nexport * from './classes/bx-base-control';\n\nexport * from './enums/desktop-os.enum';\nexport * from './enums/mobile-os.enum';\n\nexport * from './interfaces/ibx-i18n-adapter.interface';\nexport * from './interfaces/ibx-custom-validators.interface';\nexport * from './interfaces/idevice-state.interface';\nexport * from './interfaces/iscroll-lock-config.interface';\nexport * from './interfaces/iwindow-dimensions.interface';\n\nexport * from './constants/numeric.constants';\nexport * from './constants/scroll-lock.constants';\nexport * from './constants/tokens.constants';\nexport * from './constants/window-dimension.constants';\n\nexport * from './types/core.types';\nexport * from './types/tokens.types';\nexport * from './types/theme.types';\n\nexport * from './tokens/bx-i18n.token';\nexport * from './helpers/core-functions';\nexport * from './helpers/token-functions';\nexport * from './helpers/uui4';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["tokenConsts.TOKEN_PREFIX","tokenConsts.TOKEN_DELIMITER","tokenConsts.TOKEN_COLOR_DELIMITER","tokenConsts.SEMANTIC_PAIRS","tokenConsts.SHADE_NUMBERS"],"mappings":"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"}
1
+ {"version":3,"file":"filip.mazev-blocks-core.mjs","sources":["../../../projects/blocks/core/enums/desktop-os.enum.ts","../../../projects/blocks/core/enums/mobile-os.enum.ts","../../../projects/blocks/core/services/device-type.service.ts","../../../projects/blocks/core/constants/window-dimension.constants.ts","../../../projects/blocks/core/services/window-dimension.service.ts","../../../projects/blocks/core/services/scroll-lock.service.ts","../../../projects/blocks/core/services/theming.service.ts","../../../projects/blocks/core/services/bx-a11y.service.ts","../../../projects/blocks/core/services/bx-overlay-position.service.ts","../../../projects/blocks/core/types/core.types.ts","../../../projects/blocks/core/services/bx-shortcut.service.ts","../../../projects/blocks/core/classes/bx-base-control.ts","../../../projects/blocks/core/constants/numeric.constants.ts","../../../projects/blocks/core/constants/scroll-lock.constants.ts","../../../projects/blocks/core/constants/tokens.constants.ts","../../../projects/blocks/core/types/theme.types.ts","../../../projects/blocks/core/tokens/bx-i18n.token.ts","../../../projects/blocks/core/helpers/core-functions.ts","../../../projects/blocks/core/helpers/token-functions.ts","../../../projects/blocks/core/helpers/uui4.ts","../../../projects/blocks/core/public-api.ts","../../../projects/blocks/core/filip.mazev-blocks-core.ts"],"sourcesContent":["export enum DesktopOS {\n Linux = 'linux',\n MacOS = 'mac_os',\n Unix = 'unix',\n Unknown = 'unknown',\n Windows = 'windows'\n}\n","export enum MobileOS {\n Android = 'android',\n iOS = 'ios',\n Unknown = 'unknown',\n WindowsPhone = 'Windows Phone'\n}\n","import { Injectable, inject, PLATFORM_ID } from '@angular/core';\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { DesktopOS } from '../enums/desktop-os.enum';\nimport { MobileOS } from '../enums/mobile-os.enum';\nimport { IDeviceState } from '../interfaces/idevice-state.interface';\nimport { DeviceOrientationType } from '../types/core.types';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DeviceTypeService {\n private readonly document = inject(DOCUMENT);\n private readonly platformId = inject(PLATFORM_ID);\n private readonly isBrowser = isPlatformBrowser(this.platformId);\n private screenOrientation: DeviceOrientationType = 'portrait-primary';\n\n constructor() {\n if (this.isBrowser) {\n const win = this.document.defaultView;\n const screenObj = win?.screen as any;\n \n this.screenOrientation = \n (screenObj?.orientation || {}).type ?? \n screenObj?.mozOrientation ?? \n screenObj?.msOrientation ?? \n (!screenObj?.orientation && win?.matchMedia('(orientation: portrait)').matches ? 'portrait-primary' : 'landscape-primary');\n\n if (screenObj?.orientation) {\n screenObj.orientation.addEventListener('change', (ev: Event) => {\n const orientation = ev.target as ScreenOrientation | null;\n if (orientation?.type) {\n this.screenOrientation = orientation.type;\n }\n });\n }\n }\n }\n\n private get userAgent(): string {\n if (!this.isBrowser) return '';\n const win = this.document.defaultView as Window & { opera?: string };\n return win?.navigator?.userAgent || win?.navigator?.vendor || win?.opera || '';\n }\n\n private get isDesktopDevice(): boolean {\n return !this.isMobileDevice() && !this.isTabletDevice();\n }\n\n public isLandscapeOrientation(): boolean {\n return ['landscape-primary', 'landscape-secondary'].includes(this.screenOrientation);\n }\n\n public isPortraitOrientation(): boolean {\n return ['portrait-primary', 'portrait-secondary'].includes(this.screenOrientation);\n }\n\n public getDeviceState(): IDeviceState {\n const isMobile = this.isMobileDevice();\n const isTablet = this.isTabletDevice();\n const isDesktop = this.isDesktopDevice;\n \n const mobileOS = this.getMobileOS();\n const desktopOS = this.getDesktopOS();\n const deviceOS = mobileOS ?? desktopOS;\n\n return {\n isDesktop,\n desktopOS,\n isWindowsDesktop: deviceOS === DesktopOS.Windows,\n isLinuxOrUnixDesktop: deviceOS === DesktopOS.Linux || deviceOS === DesktopOS.Unix,\n isMobile,\n mobileOS,\n isAndroidDevice: deviceOS === MobileOS.Android,\n isAppleDevice: deviceOS === MobileOS.iOS || deviceOS === DesktopOS.MacOS,\n isUnknownMobileDevice: deviceOS === MobileOS.Unknown,\n isTablet,\n isLandscapeOrientation: () => this.isLandscapeOrientation(),\n isPortraitOrientation: () => this.isPortraitOrientation()\n };\n }\n\n private isMobileDevice(): boolean {\n const regexs = [/(Android)(.+)(Mobile)/i, /BlackBerry/i, /iPhone|iPod/i, /Opera Mini/i, /IEMobile/i];\n return regexs.some((regex) => regex.test(this.userAgent));\n }\n\n private isTabletDevice(): boolean {\n const regex = /(ipad|tablet|(android(?!.*mobile))|(windows(?!.*phone)(.*touch))|kindle|playbook|silk|(puffin(?!.*(IP|AP|WP))))/i;\n return regex.test(this.userAgent);\n }\n\n private getMobileOS(): MobileOS | undefined {\n if (this.isMobileDevice()) {\n const ua = this.userAgent;\n if (/windows phone/i.test(ua)) return MobileOS.WindowsPhone;\n if (/android/i.test(ua)) return MobileOS.Android;\n if (/iPad|iPhone|iPod/.test(ua) && !(this.document.defaultView as any)?.MSStream) return MobileOS.iOS;\n\n return MobileOS.Unknown;\n }\n return undefined;\n }\n\n private getDesktopOS(): DesktopOS | undefined {\n if (this.isDesktopDevice) {\n const ua = this.userAgent;\n if (ua.includes('Win')) return DesktopOS.Windows;\n if (ua.includes('Mac')) return DesktopOS.MacOS;\n if (ua.includes('X11')) return DesktopOS.Unix;\n if (ua.includes('Linux')) return DesktopOS.Linux;\n\n return DesktopOS.Unknown;\n }\n return undefined;\n }\n}","export const BREAKPOINTS = {\n xs: 360,\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n '2xl': 1536,\n '3xl': 1920,\n '4xl': 2560\n} as const;\n","import { Injectable, inject, NgZone, PLATFORM_ID, signal, computed } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { fromEvent } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, map } from 'rxjs/operators';\nimport { BREAKPOINTS } from '../constants/window-dimension.constants';\nimport { IWindowDimensions } from '../interfaces/iwindow-dimensions.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class WindowDimensionsService {\n public readonly ngZone = inject(NgZone);\n public readonly platformId = inject(PLATFORM_ID);\n\n public readonly isBrowser = isPlatformBrowser(this.platformId);\n\n public readonly _dimensions = signal<IWindowDimensions>(this.getCurrentDimensions());\n\n public readonly dimensions = this._dimensions.asReadonly();\n\n public readonly isMobile = computed(() => this.dimensions().width < BREAKPOINTS.md);\n public readonly isTablet = computed(() => this.dimensions().width >= BREAKPOINTS.md && this.dimensions().width < BREAKPOINTS.lg);\n public readonly isDesktop = computed(() => this.dimensions().width >= BREAKPOINTS.lg);\n\n public readonly breakpoints = BREAKPOINTS;\n\n constructor() {\n this.initResizeListener();\n }\n\n private getCurrentDimensions(): IWindowDimensions {\n if (!this.isBrowser) {\n return { width: 0, height: 0 };\n }\n return {\n width: window.innerWidth,\n height: window.innerHeight\n };\n }\n\n private initResizeListener(): void {\n if (!this.isBrowser) return;\n\n this.ngZone.runOutsideAngular(() => {\n fromEvent(window, 'resize')\n .pipe(\n debounceTime(150),\n map(() => this.getCurrentDimensions()),\n distinctUntilChanged((prev, curr) => prev.width === curr.width && prev.height === curr.height)\n )\n .subscribe((dims) => {\n this.ngZone.run(() => {\n this._dimensions.set(dims);\n });\n });\n });\n }\n}\n","import { Injectable, OnDestroy, inject, signal, PLATFORM_ID } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { DeviceTypeService } from './device-type.service';\nimport { WindowDimensionsService } from './window-dimension.service';\nimport { IScrollLockConfig } from '../interfaces/iscroll-lock-config.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class ScrollLockService implements OnDestroy {\n private readonly platformId = inject(PLATFORM_ID);\n private readonly deviceTypeService = inject(DeviceTypeService);\n private readonly windowDimensionsService = inject(WindowDimensionsService);\n\n private readonly isBrowser = isPlatformBrowser(this.platformId);\n private readonly activeLocks = new Map<string, IScrollLockConfig>();\n private readonly boundHandleTouchMove = this.handleTouchMove.bind(this);\n private readonly boundPreventDefault = this.preventDefault.bind(this);\n\n public readonly _isScrollDisabled = signal(false);\n public readonly isScrollDisabled = this._isScrollDisabled.asReadonly();\n\n private previousBodyPadding: string | null = null;\n\n private pendingListenerTimeout: number | null = null;\n\n public ngOnDestroy(): void {\n if (!this.isBrowser) return;\n this.clearPendingTimeout();\n this.forceCleanupAll();\n }\n\n public disableScroll(usageId: string, config: IScrollLockConfig): void {\n if (!this.isBrowser) return;\n\n const wasDisabled = this._isScrollDisabled();\n\n this.activeLocks.set(usageId, config);\n this._isScrollDisabled.set(true);\n\n if (wasDisabled) return;\n\n const documentWidth = document.documentElement.clientWidth;\n const windowWidth = window.innerWidth;\n const scrollBarWidth = windowWidth - documentWidth;\n\n if (scrollBarWidth > 0) {\n this.previousBodyPadding = document.body.style.paddingRight;\n const computedPadding = parseInt(getComputedStyle(document.body).paddingRight, 10) || 0;\n\n document.body.style.setProperty('padding-right', `${computedPadding + scrollBarWidth}px`, 'important');\n }\n\n document.body.style.setProperty('overflow', 'hidden', 'important');\n\n if (config.handleTouchInput !== false) {\n document.body.style.setProperty('touch-action', 'none', 'important');\n }\n\n this.clearPendingTimeout();\n\n this.pendingListenerTimeout = window.setTimeout(\n () => {\n if (!this._isScrollDisabled()) return;\n\n if (config.handleTouchInput === true) {\n document.body.addEventListener('touchmove', this.boundHandleTouchMove, { passive: false });\n }\n\n if (config.handleExtremeOverflow === true) {\n const opt = { passive: false };\n window.addEventListener('wheel', this.boundPreventDefault, opt);\n window.addEventListener('mousewheel', this.boundPreventDefault, opt);\n window.addEventListener('scroll', this.boundPreventDefault, opt);\n window.addEventListener('DOMMouseScroll', this.boundPreventDefault, opt);\n }\n },\n (config.animationDuration ?? 0) + 10\n );\n }\n\n public enableScroll(usageId: string, extremeOverflow?: boolean): void {\n if (!this.isBrowser) return;\n\n if (!this.activeLocks.has(usageId)) return;\n\n this.activeLocks.delete(usageId);\n\n if (this.activeLocks.size > 0) return;\n\n this.updateStateAndCleanup(extremeOverflow);\n }\n\n private getActiveConfig(): IScrollLockConfig | null {\n if (this.activeLocks.size === 0) return null;\n const keys = Array.from(this.activeLocks.keys());\n return this.activeLocks.get(keys[keys.length - 1]) ?? null;\n }\n\n private updateStateAndCleanup(extremeOverflow?: boolean): void {\n if (!this.isBrowser) return;\n\n this.clearPendingTimeout();\n\n this._isScrollDisabled.set(false);\n\n document.body.style.removeProperty('overflow');\n\n if (this.previousBodyPadding !== null) {\n if (this.previousBodyPadding) {\n document.body.style.setProperty('padding-right', this.previousBodyPadding);\n } else {\n document.body.style.removeProperty('padding-right');\n }\n this.previousBodyPadding = null;\n }\n\n document.body.removeEventListener('touchmove', this.boundHandleTouchMove);\n document.body.style.removeProperty('touch-action');\n\n if (extremeOverflow !== false) {\n window.removeEventListener('wheel', this.boundPreventDefault);\n window.removeEventListener('mousewheel', this.boundPreventDefault);\n window.removeEventListener('scroll', this.boundPreventDefault);\n window.removeEventListener('DOMMouseScroll', this.boundPreventDefault);\n }\n }\n\n private forceCleanupAll(): void {\n this.activeLocks.clear();\n this.updateStateAndCleanup(true);\n }\n\n private clearPendingTimeout(): void {\n if (this.pendingListenerTimeout !== null) {\n clearTimeout(this.pendingListenerTimeout);\n this.pendingListenerTimeout = null;\n }\n }\n\n private handleTouchMove(event: Event): void {\n const targetNode = event.target as Node;\n const cfg = this.getActiveConfig();\n\n if (!this.isAllowedToScroll(targetNode) && (cfg === null || cfg.handleTouchInput !== false)) {\n if (\n cfg === null ||\n cfg.mobileOnlyTouchPrevention !== true ||\n (cfg.mobileOnlyTouchPrevention === true &&\n (!this.deviceTypeService.getDeviceState().isMobile || !this.deviceTypeService.getDeviceState().isTablet) &&\n this.windowDimensionsService.dimensions().width < this.windowDimensionsService.breakpoints.sm)\n ) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n }\n\n private isAllowedToScroll(targetNode: Node): boolean {\n const cfg = this.getActiveConfig();\n const allow = cfg?.allowTouchInputOn;\n\n if (!allow) return true;\n\n if (Array.isArray(allow)) {\n if (allow.length === 0) return true;\n return allow.some((el) => el.contains(targetNode));\n }\n\n return false;\n }\n\n private preventDefault(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n }\n}\n","import { Injectable, OnDestroy, inject, signal, PLATFORM_ID, computed } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { DeviceTheme } from '../types/core.types';\nimport { toObservable } from '@angular/core/rxjs-interop';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ThemingService implements OnDestroy {\n private readonly platformId = inject(PLATFORM_ID);\n private readonly isBrowser = isPlatformBrowser(this.platformId);\n\n private readonly _systemTheme = signal<DeviceTheme>('light');\n private readonly _applicationTheme = signal<DeviceTheme | null>(null);\n\n public readonly systemTheme = this._systemTheme.asReadonly();\n public readonly applicationTheme = this._applicationTheme.asReadonly();\n public readonly activeTheme = computed(() => this.applicationTheme() ?? this.systemTheme());\n\n private readonly systemTheme$ = toObservable(this._systemTheme);\n private readonly applicationTheme$ = toObservable(this._applicationTheme);\n\n private mediaQueryList?: MediaQueryList;\n private mediaQueryListener?: (event: MediaQueryListEvent) => void;\n\n constructor() {\n if (this.isBrowser) {\n this._systemTheme.set(this.detectInitialSystemTheme());\n\n const storedTheme = localStorage.getItem('theme') as DeviceTheme | null;\n if (storedTheme === 'dark' || storedTheme === 'light') {\n this._applicationTheme.set(storedTheme);\n }\n\n this.initSystemThemeListener();\n }\n }\n\n public ngOnDestroy(): void {\n if (this.mediaQueryList && this.mediaQueryListener) {\n this.mediaQueryList.removeEventListener('change', this.mediaQueryListener);\n }\n }\n\n public setApplicationTheme(theme: DeviceTheme): void {\n this._applicationTheme.set(theme);\n if (this.isBrowser) {\n localStorage.setItem('theme', theme);\n }\n }\n\n public getSystemTheme$() {\n return this.systemTheme$;\n }\n\n public getApplicationTheme$() {\n return this.applicationTheme$;\n }\n\n private detectInitialSystemTheme(): DeviceTheme {\n if (!this.isBrowser) return 'light';\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n }\n\n private initSystemThemeListener(): void {\n this.mediaQueryList = window.matchMedia('(prefers-color-scheme: dark)');\n this.mediaQueryListener = (event: MediaQueryListEvent) => {\n this._systemTheme.set(event.matches ? 'dark' : 'light');\n };\n this.mediaQueryList.addEventListener('change', this.mediaQueryListener);\n }\n}\n","import { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { Injectable, PLATFORM_ID, computed, effect, inject, signal } from '@angular/core';\n\n@Injectable({ \n providedIn: 'root'\n})\nexport class BxA11yService {\n private readonly document = inject(DOCUMENT);\n private readonly platformId = inject(PLATFORM_ID);\n\n private readonly osPrefersReducedMotion = signal(false);\n private readonly manualOverride = signal<boolean | null>(null);\n\n public readonly isReducedMotion = computed(() => {\n const manual = this.manualOverride();\n if (manual !== null) return manual;\n return this.osPrefersReducedMotion();\n });\n\n constructor() {\n this.initMediaMatcher();\n this.syncWithDOM();\n }\n\n public setReducedMotion(reduce: boolean | null): void {\n this.manualOverride.set(reduce);\n }\n\n //#region Helpers\n\n private initMediaMatcher(): void {\n if (!isPlatformBrowser(this.platformId)) return;\n\n const mediaQuery = window.matchMedia('(prefers-reduced-motion: reduce)');\n this.osPrefersReducedMotion.set(mediaQuery.matches);\n\n mediaQuery.addEventListener('change', (e) => {\n this.osPrefersReducedMotion.set(e.matches);\n });\n }\n\n private syncWithDOM(): void {\n if (!isPlatformBrowser(this.platformId)) return;\n\n effect(() => {\n const isReduced = this.isReducedMotion();\n const root = this.document.documentElement;\n\n if (isReduced) {\n root.classList.add('bx-reduce-motion-forced');\n root.style.setProperty('--bx-reduced-motion', '1');\n } else {\n root.classList.remove('bx-reduce-motion-forced');\n root.style.setProperty('--bx-reduced-motion', '0');\n }\n });\n }\n\n //#endregion\n}","import { Injectable, inject } from '@angular/core';\nimport { ConnectionPositionPair, Overlay, FlexibleConnectedPositionStrategy } from '@angular/cdk/overlay';\nimport { BxPlacement } from '../types/core.types';\n\n@Injectable({ providedIn: 'root' })\nexport class BxOverlayPositionService {\n private readonly overlay = inject(Overlay);\n\n public getElementStrategy(element: HTMLElement, placement: BxPlacement, offset: number = 8): FlexibleConnectedPositionStrategy {\n return this.overlay.position()\n .flexibleConnectedTo(element)\n .withPositions(this.getPositions(placement, offset))\n .withPush(true)\n .withViewportMargin(8);\n }\n\n public getCoordinateStrategy(x: number, y: number): FlexibleConnectedPositionStrategy {\n return this.overlay.position()\n .flexibleConnectedTo({ x, y }) \n .withPositions(this.getPositions('bottom', 2))\n .withPush(true)\n .withViewportMargin(8);\n }\n\n private getPositions(placement: BxPlacement, offset: number): ConnectionPositionPair[] {\n const top = new ConnectionPositionPair(\n { originX: 'center', originY: 'top' }, \n { overlayX: 'center', overlayY: 'bottom' }, \n 0, -offset, ['bx-overlay-pos-top']\n );\n \n const bottom = new ConnectionPositionPair(\n { originX: 'center', originY: 'bottom' }, \n { overlayX: 'center', overlayY: 'top' }, \n 0, offset, ['bx-overlay-pos-bottom']\n );\n \n const left = new ConnectionPositionPair(\n { originX: 'start', originY: 'center' }, \n { overlayX: 'end', overlayY: 'center' }, \n -offset, 0, ['bx-overlay-pos-left']\n );\n \n const right = new ConnectionPositionPair(\n { originX: 'end', originY: 'center' }, \n { overlayX: 'start', overlayY: 'center' }, \n offset, 0, ['bx-overlay-pos-right']\n );\n\n switch (placement) {\n case 'top': return [top, bottom, right, left];\n case 'bottom': return [bottom, top, right, left];\n case 'left': return [left, right, top, bottom];\n case 'right': return [right, left, top, bottom];\n }\n }\n}","import { BxCustomValidators } from \"../interfaces/ibx-custom-validators.interface\";\n\nexport type DeviceTheme = 'light' | 'dark';\nexport type DeviceOrientationType = 'portrait-primary' | 'landscape-primary' | 'portrait-secondary' | 'landscape-secondary';\n\nexport type Strict<T, Expected> = T & {\n [K in keyof T]: K extends keyof Expected ? Expected[K] : never;\n};\n\nexport type ResolvableText = string | { key: string };\n\nexport type BxPlacement = 'top' | 'bottom' | 'left' | 'right';\n\nexport type ShortcutKey = string | string[];\n\nexport interface OSShortcut {\n mac?: ShortcutKey;\n windows?: ShortcutKey;\n linux?: ShortcutKey;\n default: ShortcutKey;\n}\n\nexport type ResolvableShortcut = ShortcutKey | OSShortcut;\n\nexport function isOSShortcut(val: unknown): val is OSShortcut {\n return (\n typeof val === 'object' && \n val !== null && \n !Array.isArray(val) && \n 'default' in val\n );\n}\n\nexport type DefaultValidatorKey = 'required' | 'minlength' | 'maxlength' | 'email' | 'pattern' | 'min' | 'max';\n\nexport type ValidatorKey = DefaultValidatorKey | keyof BxCustomValidators;","import { Injectable, inject } from '@angular/core';\nimport { DeviceTypeService } from './device-type.service';\nimport { ResolvableShortcut, ShortcutKey, isOSShortcut } from '../types/core.types';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BxShortcutService {\n private readonly deviceTypeService = inject(DeviceTypeService);\n\n public resolve(shortcut: ResolvableShortcut | undefined): string[] | undefined {\n if (!shortcut) return undefined;\n\n let resolvedKey: ShortcutKey;\n\n if (isOSShortcut(shortcut)) {\n const state = this.deviceTypeService.getDeviceState();\n\n if (state.isAppleDevice && shortcut.mac) {\n resolvedKey = shortcut.mac;\n } else if (state.isWindowsDesktop && shortcut.windows) {\n resolvedKey = shortcut.windows;\n } else if (state.isLinuxOrUnixDesktop && shortcut.linux) {\n resolvedKey = shortcut.linux;\n } else {\n resolvedKey = shortcut.default;\n }\n } else {\n resolvedKey = shortcut;\n }\n\n return Array.isArray(resolvedKey) ? resolvedKey : [resolvedKey];\n }\n}","import { Directive, inject, input, signal, OnInit, isDevMode, computed } from '@angular/core';\nimport { ControlValueAccessor, NgControl, Validators } from '@angular/forms';\nimport { ResolvableText, ValidatorKey } from '../types/core.types';\n\n@Directive()\nexport abstract class BxBaseControl<T> implements ControlValueAccessor, OnInit {\n public readonly ngControl = inject(NgControl, { optional: true, self: true });\n\n public readonly label = input<ResolvableText | undefined>(undefined);\n public readonly placeholder = input<ResolvableText | undefined>(undefined);\n public readonly tooltip = input<ResolvableText | undefined>(undefined);\n public readonly dataTestId = input<string | undefined>(undefined);\n public readonly ariaLabel = input<string | undefined>(undefined);\n \n public readonly errorMessages = input<Partial<Record<ValidatorKey, ResolvableText>>>({});\n\n public readonly required = input<boolean>(false);\n public readonly loading = input<boolean>(false);\n public readonly disabled = input<boolean>(false);\n\n protected readonly isFieldRequired = computed(() => {\n if (this.required && this.required()) return true;\n \n const control = this.ngControl?.control;\n return control?.hasValidator ? control.hasValidator(Validators.required) : false;\n });\n\n protected readonly internalValue = signal<T | null>(null);\n protected readonly isTouched = signal<boolean>(false);\n protected readonly isDisabled = signal<boolean>(false);\n\n protected onChange: (value: T | null) => void = () => {};\n protected onTouched: () => void = () => {};\n\n constructor() {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n public ngOnInit(): void {\n this.isDisabled.set(this.disabled());\n\n if (isDevMode() && this.ngControl?.control?.validator) {\n const hasMessages = Object.keys(this.errorMessages()).length > 0;\n if (!hasMessages) {\n console.error(`[Blocks UI Strict Mode] The form control for this field has validators, but the [errorMessages] input is empty. You must provide error messages for all applied validators.`);\n }\n }\n }\n\n public writeValue(value: T | null): void {\n this.internalValue.set(value);\n }\n\n public registerOnChange(fn: (value: T | null) => void): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.isDisabled.set(isDisabled);\n }\n\n protected updateValue(value: T | null): void {\n if (this.isDisabled()) return;\n this.internalValue.set(value);\n this.onChange(value);\n }\n\n protected markAsTouched(): void {\n if (!this.isTouched()) {\n this.isTouched.set(true);\n this.onTouched();\n }\n }\n\n protected get errorMessage(): ResolvableText | undefined {\n if (this.ngControl?.invalid && (this.ngControl.touched || this.ngControl.dirty)) {\n const errors = this.ngControl.errors;\n if (!errors) return undefined;\n \n const firstKey = Object.keys(errors)[0] as ValidatorKey;\n const customErrorMap = this.errorMessages();\n\n if (customErrorMap && customErrorMap[firstKey]) {\n return customErrorMap[firstKey];\n }\n\n if (typeof errors[firstKey as string] === 'string') {\n return errors[firstKey as string];\n }\n\n if (isDevMode()) {\n console.error(`[Blocks UI Strict Mode] Validation failed for key '${firstKey}', but no message was provided in [errorMessages].`);\n }\n \n return `[Missing error message: ${firstKey}]`; \n }\n return undefined;\n }\n}","export const DEFAULT_DEBOUNCE_TIME = 300;","export const SCROLL_LOCK_INSTANCE_IDENTIFIER = 'scroll_lock_instance_';\n","import { SemanticColorToken } from '../types/theme.types';\n\nexport const PALETTE_NAMES = ['orange', 'purple', 'red', 'green', 'danger', 'success', 'information', 'neutral'] as const;\nexport const SHADE_NUMBERS = [50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000] as const;\n\nexport const TOKEN_PREFIX = 'bx';\nexport const TOKEN_DELIMITER = '-';\nexport const TOKEN_COLOR_DELIMITER = 'color';\nexport const FALLBACK_COLOR = '#000000';\n\nexport const SEMANTIC_PAIRS: Partial<Record<SemanticColorToken, SemanticColorToken>> = {\n 'bg-canvas': 'text-primary',\n 'bg-surface': 'text-primary',\n 'bg-surface-alt': 'text-primary',\n 'bg-element': 'text-primary',\n 'bg-element-hover': 'text-primary',\n\n 'text-heading': 'bg-element',\n 'text-primary': 'bg-element',\n 'text-secondary': 'bg-element',\n 'text-brand': 'bg-surface',\n 'text-inverse': 'primary',\n 'on-primary': 'primary',\n\n primary: 'primary-subtle',\n 'primary-hover': 'on-primary',\n 'primary-active': 'on-primary',\n 'primary-subtle': 'text-primary',\n\n 'border-subtle': 'bg-surface',\n 'border-default': 'bg-surface',\n 'border-strong': 'bg-surface',\n 'border-brand': 'bg-surface',\n\n 'bg-info': 'text-info',\n 'bg-info-active': 'text-info',\n 'bg-info-hover': 'text-info',\n 'bg-info-disabled': 'border-info',\n 'bg-info-subtle': 'border-info',\n 'border-info': 'bg-info',\n 'text-info': 'bg-info',\n\n 'bg-success': 'text-success',\n 'bg-success-active': 'text-success',\n 'bg-success-hover': 'text-success',\n 'bg-success-disabled': 'border-success',\n 'bg-success-subtle': 'border-success',\n 'border-success': 'bg-success',\n 'text-success': 'bg-success',\n\n 'bg-warn': 'text-warn',\n 'bg-warn-active': 'text-warn',\n 'bg-warn-hover': 'text-warn',\n 'bg-warn-disabled': 'border-warn',\n 'bg-warn-subtle': 'border-warn',\n 'border-warn': 'bg-warn',\n 'text-warn': 'bg-warn',\n\n 'bg-danger': 'text-danger',\n 'bg-danger-active': 'text-danger',\n 'bg-danger-hover': 'text-danger',\n 'bg-danger-disabled': 'border-danger',\n 'bg-danger-subtle': 'border-danger',\n 'border-danger': 'bg-danger',\n 'text-danger': 'bg-danger',\n\n 'scroll-bg': 'bg-surface',\n 'scroll-thumb': 'scroll-bg',\n 'scroll-thumb-hover': 'scroll-bg'\n};\n","// THIS FILE IS AUTO-GENERATED. DO NOT EDIT DIRECTLY.\n// Update the $required-theme-keys in the _theme-engine.scss file instead.\n\nexport type SemanticColorToken =\n | 'bg-canvas'\n | 'bg-surface'\n | 'bg-surface-alt'\n | 'bg-element'\n | 'bg-element-hover'\n | 'bg-element-active'\n | 'bg-neutral'\n | 'bg-neutral-hover'\n | 'bg-neutral-active'\n | 'primary'\n | 'primary-hover'\n | 'primary-active'\n | 'primary-subtle'\n | 'on-primary'\n | 'text-heading'\n | 'text-primary'\n | 'text-secondary'\n | 'text-brand'\n | 'text-inverse'\n | 'text-info'\n | 'text-warn'\n | 'text-success'\n | 'text-danger'\n | 'border-subtle'\n | 'border-default'\n | 'border-strong'\n | 'border-brand'\n | 'border-info'\n | 'border-success'\n | 'border-warn'\n | 'border-danger'\n | 'bg-info'\n | 'bg-info-hover'\n | 'bg-info-active'\n | 'bg-info-disabled'\n | 'bg-info-subtle'\n | 'bg-success'\n | 'bg-success-hover'\n | 'bg-success-active'\n | 'bg-success-disabled'\n | 'bg-success-subtle'\n | 'bg-warn'\n | 'bg-warn-hover'\n | 'bg-warn-active'\n | 'bg-warn-disabled'\n | 'bg-warn-subtle'\n | 'bg-danger'\n | 'bg-danger-hover'\n | 'bg-danger-active'\n | 'bg-danger-disabled'\n | 'bg-danger-subtle'\n | 'scroll-bg'\n | 'scroll-thumb'\n | 'scroll-thumb-hover'\n | 'meta-brand-palette';\n","import { InjectionToken } from \"@angular/core\";\nimport { IBxI18nAdapter } from \"../interfaces/ibx-i18n-adapter.interface\";\n\nexport const BX_I18N = new InjectionToken<IBxI18nAdapter>('BX_I18N');","import { ResolvableText } from \"../types/core.types\";\n\n/** \n * Type guard to check if a ResolvableText is an object with a 'key' property, indicating it's a translation key rather than a plain string.\n*/\nexport function isTextWithKey(value: ResolvableText): value is { key: string } {\n return typeof value === 'object' && value !== null && 'key' in value;\n}","import { Color, ThemeColorToken, ThemedColor } from '../types/tokens.types';\nimport { SemanticColorToken } from '../types/theme.types';\nimport * as tokenConsts from '../constants/tokens.constants';\n\n/**\n * Type Guard: Detects if a token is a static palette shade (e.g., 'orange-500')\n */\nexport function isPaletteToken(token: Color): token is ThemeColorToken {\n return /-\\d+$/.test(token);\n}\n\n/**\n * Type Guard: Detects if the provided color is a ThemedColor configuration object.\n */\nexport function isThemedColor(color: unknown): color is Extract<ThemedColor, object> {\n return color !== null && typeof color === 'object' && 'light' in color;\n}\n\n/**\n * Returns the correct CSS variable string based on the token type.\n */\nexport function resolveTokenToCssVar(token: Color): string {\n if (isPaletteToken(token)) {\n return `var(--${tokenConsts.TOKEN_PREFIX}${tokenConsts.TOKEN_DELIMITER}${tokenConsts.TOKEN_COLOR_DELIMITER}${tokenConsts.TOKEN_DELIMITER}${token})`;\n } else {\n return `var(--${tokenConsts.TOKEN_PREFIX}${tokenConsts.TOKEN_DELIMITER}${token})`;\n }\n}\n\n/**\n * Smartly resolves the complementary background token.\n */\nexport function getComplementaryToken(token: Color): Color {\n if (!isPaletteToken(token)) {\n return (tokenConsts.SEMANTIC_PAIRS[token as SemanticColorToken] as Color) || 'surface';\n }\n\n const parts = token.split(tokenConsts.TOKEN_DELIMITER);\n const shade = parts.pop();\n const palette = parts.join(tokenConsts.TOKEN_DELIMITER);\n\n const shadeNum = parseInt(shade || '500', 10);\n const bgShade = shadeNum > 400 ? 50 : 900;\n\n return `${palette}-${bgShade}` as Color;\n}\n\n/**\n * Provides the inverted value of a given token color\n */\nexport function invertPaletteToken(token: Color): Color {\n const parts = token.split(tokenConsts.TOKEN_DELIMITER);\n if (parts.length < 2) return token;\n\n const shadeStr = parts.pop();\n const base = parts.join(tokenConsts.TOKEN_DELIMITER);\n const shade = Number(shadeStr);\n\n if (isNaN(shade)) return token;\n\n let invertedShade: number;\n if (shade === 50) invertedShade = 900;\n else if (shade === 1000) invertedShade = 50;\n else invertedShade = 1000 - shade;\n\n const finalShade = (tokenConsts.SHADE_NUMBERS as readonly number[]).includes(invertedShade) ? invertedShade : shade;\n\n return `${base}-${finalShade}` as Color;\n}\n","export function uuidv4() {\n return '10000000-1000-4000-8000-100000000000'.replace(/[018]/g, (c) => (+c ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (+c / 4)))).toString(16));\n}\n","/*\n * Public API Surface of core\n */\n\nexport * from './services/device-type.service';\nexport * from './services/scroll-lock.service';\nexport * from './services/window-dimension.service';\nexport * from './services/theming.service';\nexport * from './services/bx-a11y.service';\nexport * from './services/bx-overlay-position.service';\nexport * from './services/bx-shortcut.service';\n\nexport * from './classes/bx-base-control';\n\nexport * from './enums/desktop-os.enum';\nexport * from './enums/mobile-os.enum';\n\nexport * from './interfaces/ibx-i18n-adapter.interface';\nexport * from './interfaces/ibx-custom-validators.interface';\nexport * from './interfaces/idevice-state.interface';\nexport * from './interfaces/iscroll-lock-config.interface';\nexport * from './interfaces/iwindow-dimensions.interface';\n\nexport * from './constants/numeric.constants';\nexport * from './constants/scroll-lock.constants';\nexport * from './constants/tokens.constants';\nexport * from './constants/window-dimension.constants';\n\nexport * from './types/core.types';\nexport * from './types/tokens.types';\nexport * from './types/theme.types';\n\nexport * from './tokens/bx-i18n.token';\nexport * from './helpers/core-functions';\nexport * from './helpers/token-functions';\nexport * from './helpers/uui4';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["tokenConsts.TOKEN_PREFIX","tokenConsts.TOKEN_DELIMITER","tokenConsts.TOKEN_COLOR_DELIMITER","tokenConsts.SEMANTIC_PAIRS","tokenConsts.SHADE_NUMBERS"],"mappings":"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"}