@filip.mazev/blocks 1.4.17 → 1.4.18

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.
@@ -622,6 +622,23 @@ var BxOverlayPositionService = class BxOverlayPositionService {
622
622
  getElementStrategy(element, placement, offset = 8) {
623
623
  return this.overlay.position().flexibleConnectedTo(element).withPositions(this.getPositions(placement, offset)).withPush(true).withViewportMargin(8);
624
624
  }
625
+ getSubmenuStrategy(element, side, offset = 4) {
626
+ const left = new ConnectionPositionPair({
627
+ originX: "start",
628
+ originY: "top"
629
+ }, {
630
+ overlayX: "end",
631
+ overlayY: "top"
632
+ }, -offset, 0);
633
+ const right = new ConnectionPositionPair({
634
+ originX: "end",
635
+ originY: "top"
636
+ }, {
637
+ overlayX: "start",
638
+ overlayY: "top"
639
+ }, offset, 0);
640
+ return this.overlay.position().flexibleConnectedTo(element).withPositions(side === "left" ? [left, right] : [right, left]).withFlexibleDimensions(false).withPush(true).withViewportMargin(8);
641
+ }
625
642
  getCoordinateStrategy(x, y) {
626
643
  return this.overlay.position().flexibleConnectedTo({
627
644
  x,
@@ -1212,6 +1229,7 @@ function inheritOverlayTheme(source, pane) {
1212
1229
  current.forEach((property) => copied.add(property));
1213
1230
  pane.classList.toggle("bx-high-contrast-scope", !!source.closest(".high-contrast, .bx-high-contrast-scope"));
1214
1231
  pane.style.fontFamily = styles.fontFamily;
1232
+ pane.style.direction = styles.direction;
1215
1233
  pane.style.colorScheme = styles.colorScheme;
1216
1234
  };
1217
1235
  refresh();
@@ -1230,14 +1248,32 @@ function inheritOverlayTheme(source, pane) {
1230
1248
  });
1231
1249
  return () => observer.disconnect();
1232
1250
  }
1251
+ function isOverlayOriginVisible(origin) {
1252
+ const view = origin.ownerDocument.defaultView;
1253
+ if (!view || !origin.isConnected) return false;
1254
+ const bounds = origin.getBoundingClientRect();
1255
+ if (!bounds.width || !bounds.height || bounds.bottom <= 0 || bounds.top >= view.innerHeight || bounds.right <= 0 || bounds.left >= view.innerWidth) return false;
1256
+ for (let parent = origin.parentElement; parent; parent = parent.parentElement) {
1257
+ const style = view.getComputedStyle(parent);
1258
+ const clipsX = /auto|scroll|hidden|clip/.test(style.overflowX);
1259
+ const clipsY = /auto|scroll|hidden|clip/.test(style.overflowY);
1260
+ if (!clipsX && !clipsY) continue;
1261
+ const viewport = parent.getBoundingClientRect();
1262
+ const top = viewport.top + parent.clientTop;
1263
+ const left = viewport.left + parent.clientLeft;
1264
+ if (clipsY && (bounds.bottom <= top || bounds.top >= top + parent.clientHeight)) return false;
1265
+ if (clipsX && (bounds.right <= left || bounds.left >= left + parent.clientWidth)) return false;
1266
+ }
1267
+ return true;
1268
+ }
1233
1269
  let nextAnchor = 0;
1234
- function trackOverlayOrigin(overlay, origin) {
1270
+ function trackOverlayOrigin(overlay, origin, options = {}) {
1235
1271
  const view = origin.ownerDocument.defaultView;
1236
1272
  const strategy = overlay.getConfig().positionStrategy;
1237
- if (!view || !(strategy instanceof FlexibleConnectedPositionStrategy)) return () => {};
1273
+ if (!view || !(strategy instanceof FlexibleConnectedPositionStrategy)) return Object.assign(() => {}, { reposition: () => {} });
1238
1274
  const host = overlay.hostElement;
1239
1275
  host.classList.add("bx-overlay-tracked");
1240
- const anchor = view.CSS?.supports("position-anchor", "--bx-origin") && !!(origin.compareDocumentPosition(host) & Node.DOCUMENT_POSITION_FOLLOWING) ? `--bx-overlay-origin-${++nextAnchor}` : null;
1276
+ const anchor = options.nativeAnchoring !== false && view.CSS?.supports("position-anchor", "--bx-origin") && !!(origin.compareDocumentPosition(host) & Node.DOCUMENT_POSITION_FOLLOWING) ? `--bx-overlay-origin-${++nextAnchor}` : null;
1241
1277
  const originalAnchor = origin.style.getPropertyValue("anchor-name");
1242
1278
  const originalPriority = origin.style.getPropertyPriority("anchor-name");
1243
1279
  const parent = host.parentElement;
@@ -1268,8 +1304,13 @@ function trackOverlayOrigin(overlay, origin) {
1268
1304
  }
1269
1305
  const reposition = () => {
1270
1306
  if (!overlay.hasAttached()) return;
1307
+ if (options.onOriginHidden && !isOverlayOriginVisible(origin)) {
1308
+ options.onOriginHidden();
1309
+ return;
1310
+ }
1271
1311
  if (!anchor) {
1272
1312
  strategy.reapplyLastPosition();
1313
+ options.onPosition?.();
1273
1314
  return;
1274
1315
  }
1275
1316
  host.classList.remove("bx-overlay-anchored");
@@ -1291,6 +1332,7 @@ function trackOverlayOrigin(overlay, origin) {
1291
1332
  const zero = host.getBoundingClientRect();
1292
1333
  host.style.setProperty("--bx-overlay-anchor-top", `${target.top - zero.top}px`);
1293
1334
  host.style.setProperty("--bx-overlay-anchor-left", `${target.left - zero.left}px`);
1335
+ options.onPosition?.();
1294
1336
  return;
1295
1337
  }
1296
1338
  const source = origin.getBoundingClientRect();
@@ -1298,12 +1340,16 @@ function trackOverlayOrigin(overlay, origin) {
1298
1340
  host.style.setProperty("--bx-overlay-anchor-top", `calc(anchor(top) + ${target.top - source.top}px)`);
1299
1341
  host.style.setProperty("--bx-overlay-anchor-left", `calc(anchor(left) + ${target.left - source.left}px)`);
1300
1342
  host.classList.add("bx-overlay-anchored");
1343
+ options.onPosition?.();
1301
1344
  };
1302
1345
  const onScroll = (event) => {
1303
1346
  const target = event.target;
1304
- if (target === view || target instanceof Node && target.contains(origin)) reposition();
1347
+ if (target !== view && !(target instanceof Node && target.contains(origin))) return;
1348
+ if (!anchor) reposition();
1349
+ else if (options.onOriginHidden && !isOverlayOriginVisible(origin)) options.onOriginHidden();
1305
1350
  };
1306
- if (!anchor) view.addEventListener("scroll", onScroll, {
1351
+ const observeScroll = !anchor || !!options.onOriginHidden;
1352
+ if (observeScroll) view.addEventListener("scroll", onScroll, {
1307
1353
  capture: true,
1308
1354
  passive: true
1309
1355
  });
@@ -1312,11 +1358,11 @@ function trackOverlayOrigin(overlay, origin) {
1312
1358
  resize.observe(origin);
1313
1359
  resize.observe(overlay.overlayElement);
1314
1360
  reposition();
1315
- return () => {
1361
+ const disconnect = () => {
1316
1362
  resize.disconnect();
1317
1363
  view.removeEventListener("resize", reposition);
1318
- if (!anchor) view.removeEventListener("scroll", onScroll, true);
1319
- else {
1364
+ if (observeScroll) view.removeEventListener("scroll", onScroll, true);
1365
+ if (anchor) {
1320
1366
  host.classList.remove("bx-overlay-anchored");
1321
1367
  host.style.removeProperty("position-anchor");
1322
1368
  host.style.removeProperty("--bx-overlay-anchor-top");
@@ -1330,12 +1376,13 @@ function trackOverlayOrigin(overlay, origin) {
1330
1376
  }
1331
1377
  host.classList.remove("bx-overlay-tracked");
1332
1378
  };
1379
+ return Object.assign(disconnect, { reposition });
1333
1380
  }
1334
1381
  function resolveText(text, adapter, params) {
1335
1382
  adapter?.version?.();
1336
1383
  if (text === void 0) return "";
1337
1384
  return isTextWithKey(text) ? adapter?.translate(text.key, params) ?? text.key : text;
1338
1385
  }
1339
- export { BREAKPOINTS, BX_I18N, BxA11yService, BxBaseControl, BxOverlayPositionService, BxShortcutService, DEFAULT_APPEARANCE_CONFIG, DEFAULT_DEBOUNCE_TIME, DesktopOS, DeviceTypeService, FALLBACK_COLOR, MobileOS, PALETTE_NAMES, SCROLL_LOCK_INSTANCE_IDENTIFIER, SEMANTIC_PAIRS, SHADE_NUMBERS, ScrollLockService, THEME_PALETTES, TOKEN_COLOR_DELIMITER, TOKEN_DELIMITER, TOKEN_PREFIX, ThemingService, WindowDimensionsService, getComplementaryToken, inheritOverlayTheme, invertPaletteToken, isOSShortcut, isPaletteToken, isTextWithKey, isThemedColor, resolveText, resolveThemeId, resolveTokenToCssVar, trackOverlayOrigin, uuidv4 };
1386
+ export { BREAKPOINTS, BX_I18N, BxA11yService, BxBaseControl, BxOverlayPositionService, BxShortcutService, DEFAULT_APPEARANCE_CONFIG, DEFAULT_DEBOUNCE_TIME, DesktopOS, DeviceTypeService, FALLBACK_COLOR, MobileOS, PALETTE_NAMES, SCROLL_LOCK_INSTANCE_IDENTIFIER, SEMANTIC_PAIRS, SHADE_NUMBERS, ScrollLockService, THEME_PALETTES, TOKEN_COLOR_DELIMITER, TOKEN_DELIMITER, TOKEN_PREFIX, ThemingService, WindowDimensionsService, getComplementaryToken, inheritOverlayTheme, invertPaletteToken, isOSShortcut, isOverlayOriginVisible, isPaletteToken, isTextWithKey, isThemedColor, resolveText, resolveThemeId, resolveTokenToCssVar, trackOverlayOrigin, uuidv4 };
1340
1387
 
1341
1388
  //# sourceMappingURL=filip.mazev-blocks-core.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"filip.mazev-blocks-core.mjs","names":[],"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/types/appearance.types.ts","../../../projects/blocks/core/helpers/theme-functions.ts","../../../projects/blocks/core/services/bx-a11y.service.ts","../../../projects/blocks/core/services/theming.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/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/helpers/overlay-theme.ts","../../../projects/blocks/core/helpers/overlay-origin.ts","../../../projects/blocks/core/helpers/resolve-text.helpers.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 (Screen & { mozOrientation?: string; msOrientation?: string }) | undefined;\n\n const orientation = screenObj?.orientation?.type ?? screenObj?.mozOrientation ?? screenObj?.msOrientation;\n this.screenOrientation =\n this.toDeviceOrientation(orientation) ?? (win?.matchMedia('(orientation: portrait)').matches ? 'portrait-primary' : 'landscape-primary');\n\n if (screenObj?.orientation) {\n screenObj.orientation.addEventListener('change', (ev: Event) => {\n const eventOrientation = (ev.target as ScreenOrientation | null)?.type;\n const supportedOrientation = this.toDeviceOrientation(eventOrientation);\n if (supportedOrientation) this.screenOrientation = supportedOrientation;\n });\n }\n }\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 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 toDeviceOrientation(value: string | undefined): DeviceOrientationType | undefined {\n return value === 'portrait-primary' || value === 'landscape-primary' || value === 'portrait-secondary' || value === 'landscape-secondary'\n ? value\n : undefined;\n }\n\n private get isDesktopDevice(): boolean {\n return !this.isMobileDevice() && !this.isTabletDevice();\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 const view = this.document.defaultView as (Window & { MSStream?: unknown }) | null;\n if (/iPad|iPhone|iPod/.test(ua) && !view?.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}\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","/** Application-wide material preferences, inherited by components and overlays. */\nexport interface BxAppearanceConfig {\n /** 0 is lightly blurred and nearly clear; 1 is richly tinted, retaining translucency. */\n glassiness: number;\n quality: 'auto' | 'baseline' | 'enhanced';\n reducedTransparency: boolean;\n}\n\nexport const DEFAULT_APPEARANCE_CONFIG: Readonly<BxAppearanceConfig> = Object.freeze({\n glassiness: 0.5,\n quality: 'auto',\n reducedTransparency: false\n});\n\nexport type BxThemeId = 'carbon-cobalt' | 'azure-ember' | 'violet-teal' | 'tangerine-indigo' | 'brick-rose-cyan' | 'lime-violet' | 'cyberpunk';\n\nexport const THEME_PALETTES: ReadonlyArray<{ id: BxThemeId; label: string; className: string; colors: readonly [string, string] }> = [\n { id: 'carbon-cobalt', label: 'Carbon / Cobalt', className: 'theme-carbon-cobalt', colors: ['#292a2d', '#356fe8'] },\n { id: 'azure-ember', label: 'Azure / Ember', className: 'theme-azure-ember', colors: ['#217eff', '#d85a1a'] },\n { id: 'violet-teal', label: 'Violet / Teal', className: 'theme-violet-teal', colors: ['#6d00ff', '#0d9488'] },\n { id: 'tangerine-indigo', label: 'Tangerine / Indigo', className: 'theme-tangerine-indigo', colors: ['#ff6900', '#4f78f5'] },\n { id: 'brick-rose-cyan', label: 'Brick Rose / Cyan', className: 'theme-brick-rose-cyan', colors: ['#b64a50', '#0891b2'] },\n { id: 'lime-violet', label: 'Lime / Violet', className: 'theme-lime-violet', colors: ['#c4f53d', '#6842a6'] },\n { id: 'cyberpunk', label: 'Cyberpunk', className: 'theme-cyberpunk', colors: ['#3e5669', '#e6da00'] }\n];\n","import { BxThemeId, THEME_PALETTES } from '../types/appearance.types';\n\n/** Accept only current palette IDs when restoring a saved selection. */\nexport function resolveThemeId(value: string | null | undefined): BxThemeId | undefined {\n return THEME_PALETTES.find((item) => item.id === value)?.id;\n}\n","import { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { Injectable, PLATFORM_ID, computed, DestroyRef, 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 const listener = (e: MediaQueryListEvent) => this.osPrefersReducedMotion.set(e.matches);\n mediaQuery.addEventListener('change', listener);\n inject(DestroyRef).onDestroy(() => mediaQuery.removeEventListener('change', listener));\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}\n","import { Injectable, OnDestroy, inject, signal, PLATFORM_ID, computed, DOCUMENT, effect } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { DeviceTheme } from '../types/core.types';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { configureAppearance } from '@filip.mazev/blocks/effects/runtime';\nimport { BxAppearanceConfig, DEFAULT_APPEARANCE_CONFIG, THEME_PALETTES, BxThemeId } from '../types/appearance.types';\nimport { resolveThemeId } from '../helpers/theme-functions';\nimport { BxA11yService } from './bx-a11y.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ThemingService implements OnDestroy {\n private readonly document = inject(DOCUMENT);\n private readonly a11y = inject(BxA11yService);\n private readonly _appearance = signal<BxAppearanceConfig>({ ...DEFAULT_APPEARANCE_CONFIG });\n public readonly appearance = this._appearance.asReadonly();\n public readonly palettes = THEME_PALETTES;\n private readonly _palette = signal<BxThemeId>('carbon-cobalt');\n public readonly palette = this._palette.asReadonly();\n public readonly paletteLabel = computed(() => this.palettes.find((item) => item.id === this.palette())?.label ?? this.palettes[0].label);\n private readonly _highContrast = signal(false);\n public readonly highContrast = this._highContrast.asReadonly();\n private readonly platformId = inject(PLATFORM_ID);\n private readonly isBrowser = isPlatformBrowser(this.platformId);\n private readonly _systemTheme = signal<DeviceTheme>('light');\n private readonly _applicationTheme = signal<DeviceTheme | null>(null);\n public readonly systemTheme = this._systemTheme.asReadonly();\n public readonly applicationTheme = this._applicationTheme.asReadonly();\n public readonly activeTheme = computed(() => this.applicationTheme() ?? this.systemTheme());\n private readonly systemTheme$ = toObservable(this._systemTheme);\n private readonly applicationTheme$ = toObservable(this._applicationTheme);\n private appearanceController?: ReturnType<typeof configureAppearance>;\n\n private mediaQueryList?: MediaQueryList;\n private mediaQueryListener?: (event: MediaQueryListEvent) => void;\n\n constructor() {\n effect(() => {\n const reducedMotion = this.a11y.isReducedMotion();\n this.appearanceController?.update({ reducedMotion });\n });\n if (this.isBrowser) {\n this._systemTheme.set(this.detectInitialSystemTheme());\n\n const storedTheme = this.readStored('theme') as DeviceTheme | null;\n this.restoreAppearance();\n const palette = this.readStored('theme-palette');\n const storedHighContrast = this.readStored('theme-high-contrast');\n this.setPalette(resolveThemeId(palette) ?? 'carbon-cobalt');\n this.setHighContrast(storedHighContrast === null ? palette === 'high-contrast' : storedHighContrast === 'true');\n this.appearanceController = configureAppearance(this.document.documentElement, { ...this.appearance(), reducedMotion: this.a11y.isReducedMotion() });\n if (storedTheme === 'dark' || storedTheme === 'light') {\n this._applicationTheme.set(storedTheme);\n }\n\n this.initSystemThemeListener();\n }\n }\n\n public ngOnDestroy(): void {\n this.appearanceController?.destroy();\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 this.writeStored('theme', theme);\n }\n }\n\n public setPalette(palette: BxThemeId): void {\n const id = resolveThemeId(palette);\n if (!id) return;\n this._palette.set(id);\n for (const item of this.palettes) this.document.documentElement.classList.toggle(item.className, item.id === id);\n if (this.isBrowser) this.writeStored('theme-palette', id);\n }\n\n public setHighContrast(enabled: boolean): void {\n this._highContrast.set(enabled);\n if (!this.isBrowser) return;\n this.document.documentElement.classList.toggle('high-contrast', enabled);\n this.writeStored('theme-high-contrast', String(enabled));\n }\n\n public setAppearance(settings: Partial<BxAppearanceConfig>): void {\n const current = this.appearance();\n const glassiness = settings.glassiness ?? current.glassiness;\n const next: BxAppearanceConfig = {\n glassiness: Number.isFinite(glassiness) ? Math.min(1, Math.max(0, glassiness)) : DEFAULT_APPEARANCE_CONFIG.glassiness,\n quality: settings.quality ?? current.quality,\n reducedTransparency: (settings.reducedTransparency ?? current.reducedTransparency) === true\n };\n if (!['auto', 'baseline', 'enhanced'].includes(next.quality)) next.quality = 'auto';\n\n this._appearance.set(next);\n this.appearanceController?.update(next);\n if (this.isBrowser) this.writeStored('blocks-appearance', JSON.stringify(next));\n }\n\n public resetAppearance(): void {\n this.setAppearance({ ...DEFAULT_APPEARANCE_CONFIG });\n }\n\n public getSystemTheme$() {\n return this.systemTheme$;\n }\n\n public getApplicationTheme$() {\n return this.applicationTheme$;\n }\n\n private restoreAppearance(): void {\n try {\n const stored = this.readStored('blocks-appearance');\n if (stored) {\n const saved = JSON.parse(stored) as Partial<BxAppearanceConfig> & { tint?: number; material?: string };\n if (!saved || typeof saved !== 'object') return;\n // Migrate old preferences once; only the new configuration is persisted.\n this.setAppearance({\n glassiness: saved.glassiness ?? saved.tint ?? DEFAULT_APPEARANCE_CONFIG.glassiness,\n quality: saved.quality ?? DEFAULT_APPEARANCE_CONFIG.quality,\n reducedTransparency: saved.reducedTransparency === true || saved.material === 'solid'\n });\n }\n } catch {\n /* A stale or malformed preference uses the defaults. */\n }\n }\n\n private readStored(key: string): string | null {\n try {\n return this.document.defaultView?.localStorage.getItem(key) ?? null;\n } catch {\n return null;\n }\n }\n\n private writeStored(key: string, value: string): void {\n try {\n this.document.defaultView?.localStorage.setItem(key, value);\n } catch {\n /* Private browsing and storage policies must not break rendering. */\n }\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 { 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().flexibleConnectedTo(element).withPositions(this.getPositions(placement, offset)).withPush(true).withViewportMargin(8);\n }\n\n public getCoordinateStrategy(x: number, y: number): FlexibleConnectedPositionStrategy {\n return this.overlay.position().flexibleConnectedTo({ x, y }).withPositions(this.getPositions('bottom', 2)).withPush(true).withViewportMargin(8);\n }\n\n private getPositions(placement: BxPlacement, offset: number): ConnectionPositionPair[] {\n const top = new ConnectionPositionPair({ originX: 'center', originY: 'top' }, { overlayX: 'center', overlayY: 'bottom' }, 0, -offset, [\n 'bx-overlay-pos-top'\n ]);\n\n const bottom = new ConnectionPositionPair({ originX: 'center', originY: 'bottom' }, { overlayX: 'center', overlayY: 'top' }, 0, offset, [\n 'bx-overlay-pos-bottom'\n ]);\n\n const left = new ConnectionPositionPair({ originX: 'start', originY: 'center' }, { overlayX: 'end', overlayY: 'center' }, -offset, 0, [\n 'bx-overlay-pos-left'\n ]);\n\n const right = new ConnectionPositionPair({ originX: 'end', originY: 'center' }, { overlayX: 'start', overlayY: 'center' }, offset, 0, [\n 'bx-overlay-pos-right'\n ]);\n\n switch (placement) {\n case 'top':\n return [top, bottom, right, left];\n case 'bottom':\n return [bottom, top, right, left];\n case 'left':\n return [left, right, top, bottom];\n case 'right':\n return [right, left, top, bottom];\n }\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 typeof val === 'object' && val !== null && !Array.isArray(val) && 'default' in val;\n}\n\nexport type DefaultValidatorKey = 'required' | 'minlength' | 'maxlength' | 'email' | 'pattern' | 'min' | 'max';\n\nexport type ValidatorKey = DefaultValidatorKey | keyof BxCustomValidators;\n","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}\n","import {\n afterNextRender,\n DestroyRef,\n Directive,\n ElementRef,\n inject,\n input,\n signal,\n OnInit,\n isDevMode,\n effect,\n computed,\n booleanAttribute\n} from '@angular/core';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, NgControl, Validators } from '@angular/forms';\nimport { ResolvableText, ValidatorKey } from '../types/core.types';\n\n@Directive({ host: { '[class.bx-readonly]': 'isReadonly()', '(pointerdown)': 'onControlPointerDown()' } })\nexport abstract class BxBaseControl<T> implements ControlValueAccessor, OnInit {\n private readonly focusMonitor = inject(FocusMonitor);\n private readonly focusElement = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n private readonly destroyRef = inject(DestroyRef);\n protected readonly internalValue = signal<T | null>(null);\n protected readonly isTouched = signal<boolean>(false);\n protected readonly isDisabled = signal<boolean>(false);\n protected readonly keyboardFocused = signal(false);\n public readonly ngControl = inject(NgControl, { optional: true, self: true });\n\n public readonly label = input<ResolvableText | undefined>(undefined);\n\n public readonly placeholder = input<ResolvableText | undefined>(undefined);\n\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 readonly = input(false, { transform: booleanAttribute });\n public readonly readOnly = input(false, { transform: booleanAttribute });\n public readonly isReadonly = computed(() => this.readonly() || this.readOnly());\n public readonly loading = input<boolean>(false);\n public readonly disabled = input<boolean>(false);\n\n protected onChange: (value: T | null) => void = () => {};\n protected onTouched: () => void = () => {};\n\n constructor() {\n afterNextRender(() => {\n this.focusMonitor\n .monitor(this.focusElement, true)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((origin) => this.keyboardFocused.set(origin === 'keyboard'));\n this.destroyRef.onDestroy(() => this.focusMonitor.stopMonitoring(this.focusElement));\n });\n effect(() => {\n this.isDisabled.set(this.disabled() || this.ngControl?.disabled === true);\n });\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n public ngOnInit(): void {\n // Forms may call setDisabledState before ngOnInit. Preserve that state.\n this.isDisabled.set(this.disabled() || this.ngControl?.disabled === true);\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() || this.isReadonly()) return;\n this.internalValue.set(value);\n this.onChange(value);\n }\n\n protected markAsTouched(): void {\n this.isTouched.set(true);\n this.onTouched();\n }\n\n protected onControlPointerDown(): void {\n if (this.isReadonly()) this.keyboardFocused.set(false);\n }\n\n protected isFieldRequired(): boolean {\n const control = this.ngControl?.control;\n\n return this.required() || !!control?.hasValidator?.(Validators.required) || !!control?.hasValidator?.(Validators.requiredTrue);\n }\n\n //#region Helpers\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 const error: unknown = errors[firstKey as string];\n\n if (typeof error === 'string') return error;\n if (error && typeof error === 'object' && 'message' in error && typeof error.message === 'string') return error.message;\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 //#endregion\n}\n","export const DEFAULT_DEBOUNCE_TIME = 300;\n","export const SCROLL_LOCK_INSTANCE_IDENTIFIER = 'scroll_lock_instance_';\n","import { SemanticColorToken } from '../types/theme.types';\n\nexport const PALETTE_NAMES = [\n 'primary',\n 'accent',\n 'carbon',\n 'cobalt',\n 'ember',\n 'brick-rose',\n 'azure',\n 'violet',\n 'teal',\n 'tangerine',\n 'indigo',\n 'cyan',\n 'lime',\n 'cool-violet',\n 'cyber-yellow',\n 'cyber-slate',\n 'blue',\n 'orange',\n 'purple',\n 'red',\n 'green',\n 'danger',\n 'warn',\n 'success',\n 'information',\n 'neutral'\n] 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 'on-primary-hover': 'primary-hover',\n 'on-primary-active': 'primary-active',\n\n accent: 'accent-subtle',\n 'accent-hover': 'on-accent-hover',\n 'accent-active': 'on-accent-active',\n 'accent-subtle': 'text-accent',\n 'on-accent': 'accent',\n 'on-accent-hover': 'accent-hover',\n 'on-accent-active': 'accent-active',\n 'text-accent': 'accent-subtle',\n 'border-accent': 'bg-surface',\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","import { InjectionToken } from '@angular/core';\nimport { IBxI18nAdapter } from '../interfaces/ibx-i18n-adapter.interface';\n\nexport const BX_I18N = new InjectionToken<IBxI18nAdapter>('BX_I18N');\n","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}\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","export function inheritOverlayTheme(source: HTMLElement, pane: HTMLElement): () => void {\n const win = source.ownerDocument.defaultView;\n\n if (!win) return () => {};\n const copied = new Set<string>();\n const refresh = () => {\n const styles = win.getComputedStyle(source);\n const inherited = win.getComputedStyle(pane.parentElement ?? pane);\n const current = new Set<string>();\n for (let index = 0; index < styles.length; index++) {\n const property = styles.item(index);\n if (property.startsWith('--')) {\n const value = styles.getPropertyValue(property);\n if (value !== inherited.getPropertyValue(property)) {\n pane.style.setProperty(property, value);\n current.add(property);\n }\n }\n }\n\n for (const property of copied) if (!current.has(property)) pane.style.removeProperty(property);\n\n copied.clear();\n current.forEach((property) => copied.add(property));\n pane.classList.toggle('bx-high-contrast-scope', !!source.closest('.high-contrast, .bx-high-contrast-scope'));\n pane.style.fontFamily = styles.fontFamily;\n pane.style.colorScheme = styles.colorScheme;\n };\n refresh();\n const observer = new MutationObserver(refresh);\n observer.observe(source, { attributes: true, attributeFilter: ['class', 'data-theme'] });\n for (let scope = source.parentElement; scope; scope = scope.parentElement) {\n observer.observe(scope, { attributes: true, attributeFilter: ['class', 'style', 'data-theme'] });\n }\n return () => observer.disconnect();\n}\n","import { FlexibleConnectedPositionStrategy, OverlayRef } from '@angular/cdk/overlay';\n\nlet nextAnchor = 0;\n\nexport function trackOverlayOrigin(overlay: OverlayRef, origin: HTMLElement): () => void {\n const view = origin.ownerDocument.defaultView;\n const strategy = overlay.getConfig().positionStrategy;\n if (!view || !(strategy instanceof FlexibleConnectedPositionStrategy)) return () => {};\n\n const host = overlay.hostElement;\n host.classList.add('bx-overlay-tracked');\n const native = view.CSS?.supports('position-anchor', '--bx-origin') && !!(origin.compareDocumentPosition(host) & Node.DOCUMENT_POSITION_FOLLOWING);\n const anchor = native ? `--bx-overlay-origin-${++nextAnchor}` : null;\n const originalAnchor = origin.style.getPropertyValue('anchor-name');\n const originalPriority = origin.style.getPropertyPriority('anchor-name');\n const parent = host.parentElement;\n let documentLayer: HTMLElement | undefined;\n if (anchor && !overlay.getConfig().usePopover && !overlay.getConfig().hasBackdrop && parent?.classList.contains('cdk-overlay-container')) {\n let documentOrigin = true;\n for (let element: HTMLElement | null = origin; element; element = element.parentElement) {\n const style = view.getComputedStyle(element);\n const nestedScroller = element !== origin && element !== origin.ownerDocument.body && /auto|scroll|hidden/.test(`${style.overflowX} ${style.overflowY}`);\n if (style.position === 'fixed' || style.position === 'sticky' || nestedScroller) {\n documentOrigin = false;\n break;\n }\n }\n if (documentOrigin) {\n // Keep page menus in the document's scrolling layer. A fixed ancestor\n // requires WebKit to counter-scroll the menu during iOS toolbar changes\n // and rubber-banding, which can lag behind the trigger's scroll layer.\n documentLayer = origin.ownerDocument.createElement('div');\n documentLayer.className = parent.className;\n documentLayer.classList.add('bx-overlay-document-layer');\n documentLayer.style.setProperty('--bx-overlay-layer-z-index', view.getComputedStyle(parent).zIndex);\n parent.after(documentLayer);\n documentLayer.append(host);\n }\n }\n if (anchor && !documentLayer) {\n const names = view.getComputedStyle(origin).getPropertyValue('anchor-name').trim();\n origin.style.setProperty('anchor-name', names && names !== 'none' ? `${names}, ${anchor}` : anchor);\n host.style.setProperty('position-anchor', anchor);\n }\n\n const reposition = () => {\n if (!overlay.hasAttached()) return;\n if (!anchor) {\n strategy.reapplyLastPosition();\n return;\n }\n host.classList.remove('bx-overlay-anchored');\n // CDK measures in viewport coordinates. Temporarily use its fixed containing\n // block without reparenting the pane (which would blur a focused search).\n documentLayer?.classList.remove('bx-overlay-document-layer');\n const display = parent?.style.getPropertyValue('display');\n const displayPriority = parent?.style.getPropertyPriority('display');\n // CDK still measures its original container, which may now match :empty.\n // Keep that viewport measurement valid, including iOS fixed-layer offsets.\n if (documentLayer) parent?.style.setProperty('display', 'block');\n overlay.updatePosition();\n if (documentLayer && parent) {\n if (display) parent.style.setProperty('display', display, displayPriority);\n else parent.style.removeProperty('display');\n }\n if (documentLayer) {\n const target = overlay.overlayElement.getBoundingClientRect();\n documentLayer.classList.add('bx-overlay-document-layer');\n host.style.setProperty('--bx-overlay-anchor-top', '0px');\n host.style.setProperty('--bx-overlay-anchor-left', '0px');\n host.classList.add('bx-overlay-anchored');\n // Measure the absolute containing block, including positioned bodies and\n // document scroll. No anchor counter-scroll or scroll-time writes are\n // needed when the trigger and menu already share the root scroller.\n const zero = host.getBoundingClientRect();\n host.style.setProperty('--bx-overlay-anchor-top', `${target.top - zero.top}px`);\n host.style.setProperty('--bx-overlay-anchor-left', `${target.left - zero.left}px`);\n return;\n }\n const source = origin.getBoundingClientRect();\n const target = host.getBoundingClientRect();\n host.style.setProperty('--bx-overlay-anchor-top', `calc(anchor(top) + ${target.top - source.top}px)`);\n host.style.setProperty('--bx-overlay-anchor-left', `calc(anchor(left) + ${target.left - source.left}px)`);\n host.classList.add('bx-overlay-anchored');\n };\n const onScroll = (event: Event) => {\n const target = event.target;\n if (target === view || (target instanceof Node && target.contains(origin))) reposition();\n };\n if (!anchor) view.addEventListener('scroll', onScroll, { capture: true, passive: true });\n view.addEventListener('resize', reposition, { passive: true });\n const resize = new view.ResizeObserver(reposition);\n resize.observe(origin);\n resize.observe(overlay.overlayElement);\n reposition();\n\n return () => {\n resize.disconnect();\n view.removeEventListener('resize', reposition);\n if (!anchor) view.removeEventListener('scroll', onScroll, true);\n else {\n host.classList.remove('bx-overlay-anchored');\n host.style.removeProperty('position-anchor');\n host.style.removeProperty('--bx-overlay-anchor-top');\n host.style.removeProperty('--bx-overlay-anchor-left');\n if (originalAnchor) origin.style.setProperty('anchor-name', originalAnchor, originalPriority);\n else origin.style.removeProperty('anchor-name');\n }\n if (documentLayer) {\n // Restore CDK's parent before detach so its cached host can reopen.\n if (host.parentElement === documentLayer) parent?.append(host);\n documentLayer.remove();\n }\n host.classList.remove('bx-overlay-tracked');\n };\n}\n","import { IBxI18nAdapter } from '../interfaces/ibx-i18n-adapter.interface';\nimport { ResolvableText } from '../types/core.types';\nimport { isTextWithKey } from './core-functions';\n\n/** Resolves text and tracks the adapter's language signal in the calling computation. */\nexport function resolveText(text: ResolvableText | undefined, adapter: IBxI18nAdapter | null, params?: Record<string, unknown>): string {\n adapter?.version?.();\n\n if (text === undefined) return '';\n\n return isTextWithKey(text) ? (adapter?.translate(text.key, params) ?? text.key) : text;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"filip.mazev-blocks-core.mjs","names":[],"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/types/appearance.types.ts","../../../projects/blocks/core/helpers/theme-functions.ts","../../../projects/blocks/core/services/bx-a11y.service.ts","../../../projects/blocks/core/services/theming.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/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/helpers/overlay-theme.ts","../../../projects/blocks/core/helpers/overlay-origin-visibility.helpers.ts","../../../projects/blocks/core/helpers/overlay-origin.ts","../../../projects/blocks/core/helpers/resolve-text.helpers.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 (Screen & { mozOrientation?: string; msOrientation?: string }) | undefined;\n\n const orientation = screenObj?.orientation?.type ?? screenObj?.mozOrientation ?? screenObj?.msOrientation;\n this.screenOrientation =\n this.toDeviceOrientation(orientation) ?? (win?.matchMedia('(orientation: portrait)').matches ? 'portrait-primary' : 'landscape-primary');\n\n if (screenObj?.orientation) {\n screenObj.orientation.addEventListener('change', (ev: Event) => {\n const eventOrientation = (ev.target as ScreenOrientation | null)?.type;\n const supportedOrientation = this.toDeviceOrientation(eventOrientation);\n if (supportedOrientation) this.screenOrientation = supportedOrientation;\n });\n }\n }\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 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 toDeviceOrientation(value: string | undefined): DeviceOrientationType | undefined {\n return value === 'portrait-primary' || value === 'landscape-primary' || value === 'portrait-secondary' || value === 'landscape-secondary'\n ? value\n : undefined;\n }\n\n private get isDesktopDevice(): boolean {\n return !this.isMobileDevice() && !this.isTabletDevice();\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 const view = this.document.defaultView as (Window & { MSStream?: unknown }) | null;\n if (/iPad|iPhone|iPod/.test(ua) && !view?.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}\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","/** Application-wide material preferences, inherited by components and overlays. */\nexport interface BxAppearanceConfig {\n /** 0 is lightly blurred and nearly clear; 1 is richly tinted, retaining translucency. */\n glassiness: number;\n quality: 'auto' | 'baseline' | 'enhanced';\n reducedTransparency: boolean;\n}\n\nexport const DEFAULT_APPEARANCE_CONFIG: Readonly<BxAppearanceConfig> = Object.freeze({\n glassiness: 0.5,\n quality: 'auto',\n reducedTransparency: false\n});\n\nexport type BxThemeId = 'carbon-cobalt' | 'azure-ember' | 'violet-teal' | 'tangerine-indigo' | 'brick-rose-cyan' | 'lime-violet' | 'cyberpunk';\n\nexport const THEME_PALETTES: ReadonlyArray<{ id: BxThemeId; label: string; className: string; colors: readonly [string, string] }> = [\n { id: 'carbon-cobalt', label: 'Carbon / Cobalt', className: 'theme-carbon-cobalt', colors: ['#292a2d', '#356fe8'] },\n { id: 'azure-ember', label: 'Azure / Ember', className: 'theme-azure-ember', colors: ['#217eff', '#d85a1a'] },\n { id: 'violet-teal', label: 'Violet / Teal', className: 'theme-violet-teal', colors: ['#6d00ff', '#0d9488'] },\n { id: 'tangerine-indigo', label: 'Tangerine / Indigo', className: 'theme-tangerine-indigo', colors: ['#ff6900', '#4f78f5'] },\n { id: 'brick-rose-cyan', label: 'Brick Rose / Cyan', className: 'theme-brick-rose-cyan', colors: ['#b64a50', '#0891b2'] },\n { id: 'lime-violet', label: 'Lime / Violet', className: 'theme-lime-violet', colors: ['#c4f53d', '#6842a6'] },\n { id: 'cyberpunk', label: 'Cyberpunk', className: 'theme-cyberpunk', colors: ['#3e5669', '#e6da00'] }\n];\n","import { BxThemeId, THEME_PALETTES } from '../types/appearance.types';\n\n/** Accept only current palette IDs when restoring a saved selection. */\nexport function resolveThemeId(value: string | null | undefined): BxThemeId | undefined {\n return THEME_PALETTES.find((item) => item.id === value)?.id;\n}\n","import { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { Injectable, PLATFORM_ID, computed, DestroyRef, 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 const listener = (e: MediaQueryListEvent) => this.osPrefersReducedMotion.set(e.matches);\n mediaQuery.addEventListener('change', listener);\n inject(DestroyRef).onDestroy(() => mediaQuery.removeEventListener('change', listener));\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}\n","import { Injectable, OnDestroy, inject, signal, PLATFORM_ID, computed, DOCUMENT, effect } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { DeviceTheme } from '../types/core.types';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { configureAppearance } from '@filip.mazev/blocks/effects/runtime';\nimport { BxAppearanceConfig, DEFAULT_APPEARANCE_CONFIG, THEME_PALETTES, BxThemeId } from '../types/appearance.types';\nimport { resolveThemeId } from '../helpers/theme-functions';\nimport { BxA11yService } from './bx-a11y.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ThemingService implements OnDestroy {\n private readonly document = inject(DOCUMENT);\n private readonly a11y = inject(BxA11yService);\n private readonly _appearance = signal<BxAppearanceConfig>({ ...DEFAULT_APPEARANCE_CONFIG });\n public readonly appearance = this._appearance.asReadonly();\n public readonly palettes = THEME_PALETTES;\n private readonly _palette = signal<BxThemeId>('carbon-cobalt');\n public readonly palette = this._palette.asReadonly();\n public readonly paletteLabel = computed(() => this.palettes.find((item) => item.id === this.palette())?.label ?? this.palettes[0].label);\n private readonly _highContrast = signal(false);\n public readonly highContrast = this._highContrast.asReadonly();\n private readonly platformId = inject(PLATFORM_ID);\n private readonly isBrowser = isPlatformBrowser(this.platformId);\n private readonly _systemTheme = signal<DeviceTheme>('light');\n private readonly _applicationTheme = signal<DeviceTheme | null>(null);\n public readonly systemTheme = this._systemTheme.asReadonly();\n public readonly applicationTheme = this._applicationTheme.asReadonly();\n public readonly activeTheme = computed(() => this.applicationTheme() ?? this.systemTheme());\n private readonly systemTheme$ = toObservable(this._systemTheme);\n private readonly applicationTheme$ = toObservable(this._applicationTheme);\n private appearanceController?: ReturnType<typeof configureAppearance>;\n\n private mediaQueryList?: MediaQueryList;\n private mediaQueryListener?: (event: MediaQueryListEvent) => void;\n\n constructor() {\n effect(() => {\n const reducedMotion = this.a11y.isReducedMotion();\n this.appearanceController?.update({ reducedMotion });\n });\n if (this.isBrowser) {\n this._systemTheme.set(this.detectInitialSystemTheme());\n\n const storedTheme = this.readStored('theme') as DeviceTheme | null;\n this.restoreAppearance();\n const palette = this.readStored('theme-palette');\n const storedHighContrast = this.readStored('theme-high-contrast');\n this.setPalette(resolveThemeId(palette) ?? 'carbon-cobalt');\n this.setHighContrast(storedHighContrast === null ? palette === 'high-contrast' : storedHighContrast === 'true');\n this.appearanceController = configureAppearance(this.document.documentElement, { ...this.appearance(), reducedMotion: this.a11y.isReducedMotion() });\n if (storedTheme === 'dark' || storedTheme === 'light') {\n this._applicationTheme.set(storedTheme);\n }\n\n this.initSystemThemeListener();\n }\n }\n\n public ngOnDestroy(): void {\n this.appearanceController?.destroy();\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 this.writeStored('theme', theme);\n }\n }\n\n public setPalette(palette: BxThemeId): void {\n const id = resolveThemeId(palette);\n if (!id) return;\n this._palette.set(id);\n for (const item of this.palettes) this.document.documentElement.classList.toggle(item.className, item.id === id);\n if (this.isBrowser) this.writeStored('theme-palette', id);\n }\n\n public setHighContrast(enabled: boolean): void {\n this._highContrast.set(enabled);\n if (!this.isBrowser) return;\n this.document.documentElement.classList.toggle('high-contrast', enabled);\n this.writeStored('theme-high-contrast', String(enabled));\n }\n\n public setAppearance(settings: Partial<BxAppearanceConfig>): void {\n const current = this.appearance();\n const glassiness = settings.glassiness ?? current.glassiness;\n const next: BxAppearanceConfig = {\n glassiness: Number.isFinite(glassiness) ? Math.min(1, Math.max(0, glassiness)) : DEFAULT_APPEARANCE_CONFIG.glassiness,\n quality: settings.quality ?? current.quality,\n reducedTransparency: (settings.reducedTransparency ?? current.reducedTransparency) === true\n };\n if (!['auto', 'baseline', 'enhanced'].includes(next.quality)) next.quality = 'auto';\n\n this._appearance.set(next);\n this.appearanceController?.update(next);\n if (this.isBrowser) this.writeStored('blocks-appearance', JSON.stringify(next));\n }\n\n public resetAppearance(): void {\n this.setAppearance({ ...DEFAULT_APPEARANCE_CONFIG });\n }\n\n public getSystemTheme$() {\n return this.systemTheme$;\n }\n\n public getApplicationTheme$() {\n return this.applicationTheme$;\n }\n\n private restoreAppearance(): void {\n try {\n const stored = this.readStored('blocks-appearance');\n if (stored) {\n const saved = JSON.parse(stored) as Partial<BxAppearanceConfig> & { tint?: number; material?: string };\n if (!saved || typeof saved !== 'object') return;\n // Migrate old preferences once; only the new configuration is persisted.\n this.setAppearance({\n glassiness: saved.glassiness ?? saved.tint ?? DEFAULT_APPEARANCE_CONFIG.glassiness,\n quality: saved.quality ?? DEFAULT_APPEARANCE_CONFIG.quality,\n reducedTransparency: saved.reducedTransparency === true || saved.material === 'solid'\n });\n }\n } catch {\n /* A stale or malformed preference uses the defaults. */\n }\n }\n\n private readStored(key: string): string | null {\n try {\n return this.document.defaultView?.localStorage.getItem(key) ?? null;\n } catch {\n return null;\n }\n }\n\n private writeStored(key: string, value: string): void {\n try {\n this.document.defaultView?.localStorage.setItem(key, value);\n } catch {\n /* Private browsing and storage policies must not break rendering. */\n }\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 { 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().flexibleConnectedTo(element).withPositions(this.getPositions(placement, offset)).withPush(true).withViewportMargin(8);\n }\n\n public getSubmenuStrategy(element: HTMLElement, side: 'left' | 'right', offset = 4): FlexibleConnectedPositionStrategy {\n const left = new ConnectionPositionPair({ originX: 'start', originY: 'top' }, { overlayX: 'end', overlayY: 'top' }, -offset, 0);\n const right = new ConnectionPositionPair({ originX: 'end', originY: 'top' }, { overlayX: 'start', overlayY: 'top' }, offset, 0);\n\n return this.overlay\n .position()\n .flexibleConnectedTo(element)\n .withPositions(side === 'left' ? [left, right] : [right, left])\n .withFlexibleDimensions(false)\n .withPush(true)\n .withViewportMargin(8);\n }\n\n public getCoordinateStrategy(x: number, y: number): FlexibleConnectedPositionStrategy {\n return this.overlay.position().flexibleConnectedTo({ x, y }).withPositions(this.getPositions('bottom', 2)).withPush(true).withViewportMargin(8);\n }\n\n private getPositions(placement: BxPlacement, offset: number): ConnectionPositionPair[] {\n const top = new ConnectionPositionPair({ originX: 'center', originY: 'top' }, { overlayX: 'center', overlayY: 'bottom' }, 0, -offset, [\n 'bx-overlay-pos-top'\n ]);\n\n const bottom = new ConnectionPositionPair({ originX: 'center', originY: 'bottom' }, { overlayX: 'center', overlayY: 'top' }, 0, offset, [\n 'bx-overlay-pos-bottom'\n ]);\n\n const left = new ConnectionPositionPair({ originX: 'start', originY: 'center' }, { overlayX: 'end', overlayY: 'center' }, -offset, 0, [\n 'bx-overlay-pos-left'\n ]);\n\n const right = new ConnectionPositionPair({ originX: 'end', originY: 'center' }, { overlayX: 'start', overlayY: 'center' }, offset, 0, [\n 'bx-overlay-pos-right'\n ]);\n\n switch (placement) {\n case 'top':\n return [top, bottom, right, left];\n case 'bottom':\n return [bottom, top, right, left];\n case 'left':\n return [left, right, top, bottom];\n case 'right':\n return [right, left, top, bottom];\n }\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 typeof val === 'object' && val !== null && !Array.isArray(val) && 'default' in val;\n}\n\nexport type DefaultValidatorKey = 'required' | 'minlength' | 'maxlength' | 'email' | 'pattern' | 'min' | 'max';\n\nexport type ValidatorKey = DefaultValidatorKey | keyof BxCustomValidators;\n","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}\n","import {\n afterNextRender,\n DestroyRef,\n Directive,\n ElementRef,\n inject,\n input,\n signal,\n OnInit,\n isDevMode,\n effect,\n computed,\n booleanAttribute\n} from '@angular/core';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, NgControl, Validators } from '@angular/forms';\nimport { ResolvableText, ValidatorKey } from '../types/core.types';\n\n@Directive({ host: { '[class.bx-readonly]': 'isReadonly()', '(pointerdown)': 'onControlPointerDown()' } })\nexport abstract class BxBaseControl<T> implements ControlValueAccessor, OnInit {\n private readonly focusMonitor = inject(FocusMonitor);\n private readonly focusElement = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n private readonly destroyRef = inject(DestroyRef);\n protected readonly internalValue = signal<T | null>(null);\n protected readonly isTouched = signal<boolean>(false);\n protected readonly isDisabled = signal<boolean>(false);\n protected readonly keyboardFocused = signal(false);\n public readonly ngControl = inject(NgControl, { optional: true, self: true });\n\n public readonly label = input<ResolvableText | undefined>(undefined);\n\n public readonly placeholder = input<ResolvableText | undefined>(undefined);\n\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 readonly = input(false, { transform: booleanAttribute });\n public readonly readOnly = input(false, { transform: booleanAttribute });\n public readonly isReadonly = computed(() => this.readonly() || this.readOnly());\n public readonly loading = input<boolean>(false);\n public readonly disabled = input<boolean>(false);\n\n protected onChange: (value: T | null) => void = () => {};\n protected onTouched: () => void = () => {};\n\n constructor() {\n afterNextRender(() => {\n this.focusMonitor\n .monitor(this.focusElement, true)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((origin) => this.keyboardFocused.set(origin === 'keyboard'));\n this.destroyRef.onDestroy(() => this.focusMonitor.stopMonitoring(this.focusElement));\n });\n effect(() => {\n this.isDisabled.set(this.disabled() || this.ngControl?.disabled === true);\n });\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n public ngOnInit(): void {\n // Forms may call setDisabledState before ngOnInit. Preserve that state.\n this.isDisabled.set(this.disabled() || this.ngControl?.disabled === true);\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() || this.isReadonly()) return;\n this.internalValue.set(value);\n this.onChange(value);\n }\n\n protected markAsTouched(): void {\n this.isTouched.set(true);\n this.onTouched();\n }\n\n protected onControlPointerDown(): void {\n if (this.isReadonly()) this.keyboardFocused.set(false);\n }\n\n protected isFieldRequired(): boolean {\n const control = this.ngControl?.control;\n\n return this.required() || !!control?.hasValidator?.(Validators.required) || !!control?.hasValidator?.(Validators.requiredTrue);\n }\n\n //#region Helpers\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 const error: unknown = errors[firstKey as string];\n\n if (typeof error === 'string') return error;\n if (error && typeof error === 'object' && 'message' in error && typeof error.message === 'string') return error.message;\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 //#endregion\n}\n","export const DEFAULT_DEBOUNCE_TIME = 300;\n","export const SCROLL_LOCK_INSTANCE_IDENTIFIER = 'scroll_lock_instance_';\n","import { SemanticColorToken } from '../types/theme.types';\n\nexport const PALETTE_NAMES = [\n 'primary',\n 'accent',\n 'carbon',\n 'cobalt',\n 'ember',\n 'brick-rose',\n 'azure',\n 'violet',\n 'teal',\n 'tangerine',\n 'indigo',\n 'cyan',\n 'lime',\n 'cool-violet',\n 'cyber-yellow',\n 'cyber-slate',\n 'blue',\n 'orange',\n 'purple',\n 'red',\n 'green',\n 'danger',\n 'warn',\n 'success',\n 'information',\n 'neutral'\n] 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 'on-primary-hover': 'primary-hover',\n 'on-primary-active': 'primary-active',\n\n accent: 'accent-subtle',\n 'accent-hover': 'on-accent-hover',\n 'accent-active': 'on-accent-active',\n 'accent-subtle': 'text-accent',\n 'on-accent': 'accent',\n 'on-accent-hover': 'accent-hover',\n 'on-accent-active': 'accent-active',\n 'text-accent': 'accent-subtle',\n 'border-accent': 'bg-surface',\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","import { InjectionToken } from '@angular/core';\nimport { IBxI18nAdapter } from '../interfaces/ibx-i18n-adapter.interface';\n\nexport const BX_I18N = new InjectionToken<IBxI18nAdapter>('BX_I18N');\n","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}\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","export function inheritOverlayTheme(source: HTMLElement, pane: HTMLElement): () => void {\n const win = source.ownerDocument.defaultView;\n\n if (!win) return () => {};\n const copied = new Set<string>();\n const refresh = () => {\n const styles = win.getComputedStyle(source);\n const inherited = win.getComputedStyle(pane.parentElement ?? pane);\n const current = new Set<string>();\n for (let index = 0; index < styles.length; index++) {\n const property = styles.item(index);\n if (property.startsWith('--')) {\n const value = styles.getPropertyValue(property);\n if (value !== inherited.getPropertyValue(property)) {\n pane.style.setProperty(property, value);\n current.add(property);\n }\n }\n }\n\n for (const property of copied) if (!current.has(property)) pane.style.removeProperty(property);\n\n copied.clear();\n current.forEach((property) => copied.add(property));\n pane.classList.toggle('bx-high-contrast-scope', !!source.closest('.high-contrast, .bx-high-contrast-scope'));\n pane.style.fontFamily = styles.fontFamily;\n pane.style.direction = styles.direction;\n pane.style.colorScheme = styles.colorScheme;\n };\n refresh();\n const observer = new MutationObserver(refresh);\n observer.observe(source, { attributes: true, attributeFilter: ['class', 'data-theme'] });\n for (let scope = source.parentElement; scope; scope = scope.parentElement) {\n observer.observe(scope, { attributes: true, attributeFilter: ['class', 'style', 'data-theme'] });\n }\n return () => observer.disconnect();\n}\n","/** Whether an overlay origin still intersects the viewport and every ancestor that clips its contents. */\nexport function isOverlayOriginVisible(origin: HTMLElement): boolean {\n const view = origin.ownerDocument.defaultView;\n if (!view || !origin.isConnected) return false;\n\n const bounds = origin.getBoundingClientRect();\n if (!bounds.width || !bounds.height || bounds.bottom <= 0 || bounds.top >= view.innerHeight || bounds.right <= 0 || bounds.left >= view.innerWidth)\n return false;\n\n for (let parent = origin.parentElement; parent; parent = parent.parentElement) {\n const style = view.getComputedStyle(parent);\n const clipsX = /auto|scroll|hidden|clip/.test(style.overflowX);\n const clipsY = /auto|scroll|hidden|clip/.test(style.overflowY);\n if (!clipsX && !clipsY) continue;\n\n const viewport = parent.getBoundingClientRect();\n const top = viewport.top + parent.clientTop;\n const left = viewport.left + parent.clientLeft;\n if (clipsY && (bounds.bottom <= top || bounds.top >= top + parent.clientHeight)) return false;\n if (clipsX && (bounds.right <= left || bounds.left >= left + parent.clientWidth)) return false;\n }\n return true;\n}\n","import { FlexibleConnectedPositionStrategy, OverlayRef } from '@angular/cdk/overlay';\nimport { OverlayOriginTracker } from '../types/overlay-origin.types';\nimport { IOverlayOriginOptions } from '../interfaces/ioverlay-origin-options.interface';\nimport { isOverlayOriginVisible } from './overlay-origin-visibility.helpers';\n\nlet nextAnchor = 0;\n\nexport function trackOverlayOrigin(overlay: OverlayRef, origin: HTMLElement, options: IOverlayOriginOptions = {}): OverlayOriginTracker {\n const view = origin.ownerDocument.defaultView;\n const strategy = overlay.getConfig().positionStrategy;\n if (!view || !(strategy instanceof FlexibleConnectedPositionStrategy)) return Object.assign(() => {}, { reposition: () => {} });\n\n const host = overlay.hostElement;\n host.classList.add('bx-overlay-tracked');\n const native =\n options.nativeAnchoring !== false &&\n view.CSS?.supports('position-anchor', '--bx-origin') &&\n !!(origin.compareDocumentPosition(host) & Node.DOCUMENT_POSITION_FOLLOWING);\n const anchor = native ? `--bx-overlay-origin-${++nextAnchor}` : null;\n const originalAnchor = origin.style.getPropertyValue('anchor-name');\n const originalPriority = origin.style.getPropertyPriority('anchor-name');\n const parent = host.parentElement;\n let documentLayer: HTMLElement | undefined;\n if (anchor && !overlay.getConfig().usePopover && !overlay.getConfig().hasBackdrop && parent?.classList.contains('cdk-overlay-container')) {\n let documentOrigin = true;\n for (let element: HTMLElement | null = origin; element; element = element.parentElement) {\n const style = view.getComputedStyle(element);\n const nestedScroller = element !== origin && element !== origin.ownerDocument.body && /auto|scroll|hidden/.test(`${style.overflowX} ${style.overflowY}`);\n if (style.position === 'fixed' || style.position === 'sticky' || nestedScroller) {\n documentOrigin = false;\n break;\n }\n }\n if (documentOrigin) {\n // Keep page menus in the document's scrolling layer. A fixed ancestor\n // requires WebKit to counter-scroll the menu during iOS toolbar changes\n // and rubber-banding, which can lag behind the trigger's scroll layer.\n documentLayer = origin.ownerDocument.createElement('div');\n documentLayer.className = parent.className;\n documentLayer.classList.add('bx-overlay-document-layer');\n documentLayer.style.setProperty('--bx-overlay-layer-z-index', view.getComputedStyle(parent).zIndex);\n parent.after(documentLayer);\n documentLayer.append(host);\n }\n }\n if (anchor && !documentLayer) {\n const names = view.getComputedStyle(origin).getPropertyValue('anchor-name').trim();\n origin.style.setProperty('anchor-name', names && names !== 'none' ? `${names}, ${anchor}` : anchor);\n host.style.setProperty('position-anchor', anchor);\n }\n\n const reposition = () => {\n if (!overlay.hasAttached()) return;\n\n if (options.onOriginHidden && !isOverlayOriginVisible(origin)) {\n options.onOriginHidden();\n return;\n }\n\n if (!anchor) {\n strategy.reapplyLastPosition();\n options.onPosition?.();\n return;\n }\n host.classList.remove('bx-overlay-anchored');\n // CDK measures in viewport coordinates. Temporarily use its fixed containing\n // block without reparenting the pane (which would blur a focused search).\n documentLayer?.classList.remove('bx-overlay-document-layer');\n const display = parent?.style.getPropertyValue('display');\n const displayPriority = parent?.style.getPropertyPriority('display');\n // CDK still measures its original container, which may now match :empty.\n // Keep that viewport measurement valid, including iOS fixed-layer offsets.\n if (documentLayer) parent?.style.setProperty('display', 'block');\n overlay.updatePosition();\n if (documentLayer && parent) {\n if (display) parent.style.setProperty('display', display, displayPriority);\n else parent.style.removeProperty('display');\n }\n if (documentLayer) {\n const target = overlay.overlayElement.getBoundingClientRect();\n documentLayer.classList.add('bx-overlay-document-layer');\n host.style.setProperty('--bx-overlay-anchor-top', '0px');\n host.style.setProperty('--bx-overlay-anchor-left', '0px');\n host.classList.add('bx-overlay-anchored');\n // Measure the absolute containing block, including positioned bodies and\n // document scroll. No anchor counter-scroll or scroll-time writes are\n // needed when the trigger and menu already share the root scroller.\n const zero = host.getBoundingClientRect();\n host.style.setProperty('--bx-overlay-anchor-top', `${target.top - zero.top}px`);\n host.style.setProperty('--bx-overlay-anchor-left', `${target.left - zero.left}px`);\n options.onPosition?.();\n return;\n }\n const source = origin.getBoundingClientRect();\n const target = host.getBoundingClientRect();\n host.style.setProperty('--bx-overlay-anchor-top', `calc(anchor(top) + ${target.top - source.top}px)`);\n host.style.setProperty('--bx-overlay-anchor-left', `calc(anchor(left) + ${target.left - source.left}px)`);\n host.classList.add('bx-overlay-anchored');\n options.onPosition?.();\n };\n const onScroll = (event: Event) => {\n const target = event.target;\n if (target !== view && !(target instanceof Node && target.contains(origin))) return;\n\n if (!anchor) reposition();\n else if (options.onOriginHidden && !isOverlayOriginVisible(origin)) options.onOriginHidden();\n };\n const observeScroll = !anchor || !!options.onOriginHidden;\n if (observeScroll) view.addEventListener('scroll', onScroll, { capture: true, passive: true });\n view.addEventListener('resize', reposition, { passive: true });\n const resize = new view.ResizeObserver(reposition);\n resize.observe(origin);\n resize.observe(overlay.overlayElement);\n reposition();\n\n const disconnect = () => {\n resize.disconnect();\n view.removeEventListener('resize', reposition);\n if (observeScroll) view.removeEventListener('scroll', onScroll, true);\n if (anchor) {\n host.classList.remove('bx-overlay-anchored');\n host.style.removeProperty('position-anchor');\n host.style.removeProperty('--bx-overlay-anchor-top');\n host.style.removeProperty('--bx-overlay-anchor-left');\n if (originalAnchor) origin.style.setProperty('anchor-name', originalAnchor, originalPriority);\n else origin.style.removeProperty('anchor-name');\n }\n if (documentLayer) {\n // Restore CDK's parent before detach so its cached host can reopen.\n if (host.parentElement === documentLayer) parent?.append(host);\n documentLayer.remove();\n }\n host.classList.remove('bx-overlay-tracked');\n };\n return Object.assign(disconnect, { reposition });\n}\n","import { IBxI18nAdapter } from '../interfaces/ibx-i18n-adapter.interface';\nimport { ResolvableText } from '../types/core.types';\nimport { isTextWithKey } from './core-functions';\n\n/** Resolves text and tracks the adapter's language signal in the calling computation. */\nexport function resolveText(text: ResolvableText | undefined, adapter: IBxI18nAdapter | null, params?: Record<string, unknown>): string {\n adapter?.version?.();\n\n if (text === undefined) return '';\n\n return isTextWithKey(text) ? (adapter?.translate(text.key, params) ?? text.key) : text;\n}\n"],"mappings":"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"}
@@ -4662,6 +4662,7 @@ var Select = class Select extends BxSelectBase {
4662
4662
  type: Tag,
4663
4663
  selector: "bx-tag",
4664
4664
  inputs: [
4665
+ "opaque",
4665
4666
  "text",
4666
4667
  "config",
4667
4668
  "color",
@@ -5577,6 +5578,7 @@ var MultiSelect = class MultiSelect extends BxSelectBase {
5577
5578
  type: Tag,
5578
5579
  selector: "bx-tag",
5579
5580
  inputs: [
5581
+ "opaque",
5580
5582
  "text",
5581
5583
  "config",
5582
5584
  "color",