@acorex/platform 19.4.13 → 19.4.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. package/common/lib/utils/regional.types.d.ts +3 -1
  2. package/core/lib/data/datasource-definition-provider.service.d.ts +8 -2
  3. package/fesm2022/acorex-platform-core.mjs.map +1 -1
  4. package/fesm2022/acorex-platform-layout-builder.mjs +4 -1
  5. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  6. package/fesm2022/acorex-platform-layout-designer.mjs +6 -4
  7. package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
  8. package/fesm2022/acorex-platform-layout-entity.mjs +4 -4
  9. package/fesm2022/{acorex-platform-themes-default-entity-master-list-view.component-b5e_ccLv.mjs → acorex-platform-themes-default-entity-master-list-view.component-BupuLA5U.mjs} +16 -4
  10. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-BupuLA5U.mjs.map +1 -0
  11. package/fesm2022/acorex-platform-themes-default.mjs +4 -4
  12. package/fesm2022/acorex-platform-themes-shared.mjs +84 -89
  13. package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
  14. package/fesm2022/acorex-platform-widgets.mjs +258 -185
  15. package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
  16. package/layout/builder/lib/builder/widget-map.d.ts +3 -0
  17. package/package.json +1 -1
  18. package/widgets/lib/widgets/layout/grid/grid-widget-designer.component.d.ts +1 -0
  19. package/widgets/lib/widgets/layout/grid/grid-widget-view.component.d.ts +1 -0
  20. package/widgets/lib/widgets/layout/grid-item/grid-item-widget-designer.component.d.ts +4 -9
  21. package/widgets/lib/widgets/layout/grid-item/grid-item-widget-view.component.d.ts +3 -0
  22. package/widgets/lib/widgets/property-editors/border/border-widget-editor.component.d.ts +1 -0
  23. package/widgets/lib/widgets/property-editors/direction/direction-widget-editor.component.d.ts +0 -1
  24. package/widgets/lib/widgets/property-editors/spacing/spacing-widget-editor.component.d.ts +1 -0
  25. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-b5e_ccLv.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-themes-shared.mjs","sources":["../../../../libs/platform/themes/shared/src/lib/settings.keys.ts","../../../../libs/platform/themes/shared/src/lib/theme.types.ts","../../../../libs/platform/themes/shared/src/lib/theme.service.ts","../../../../libs/platform/themes/shared/src/lib/slots/theme-slot.component.ts","../../../../libs/platform/themes/shared/src/lib/palette.provider.ts","../../../../libs/platform/themes/shared/src/lib/widgets/theme-palette-chooser/theme-palette-chooser-widget.component.ts","../../../../libs/platform/themes/shared/src/lib/widgets/theme-palette-chooser/theme-palette-chooser-widget.config.ts","../../../../libs/platform/themes/shared/src/lib/widgets/theme-mode-chooser/theme-mode-chooser-widget.component.ts","../../../../libs/platform/themes/shared/src/lib/widgets/theme-mode-chooser/theme-mode-chooser-widget.config.ts","../../../../libs/platform/themes/shared/src/lib/widgets/menu-orientation-chooser/menu-orientation-chooser-widget.component.ts","../../../../libs/platform/themes/shared/src/lib/widgets/menu-orientation-chooser/menu-orientation-chooser-widget.config.ts","../../../../libs/platform/themes/shared/src/lib/widgets/font-style-chooser/font-style-chooser-widget.component.ts","../../../../libs/platform/themes/shared/src/lib/widgets/font-style-chooser/font-style-chooser-widget.config.ts","../../../../libs/platform/themes/shared/src/lib/widgets/font-size-chooser/font-size-chooser-widget.component.ts","../../../../libs/platform/themes/shared/src/lib/widgets/font-size-chooser/font-size-chooser-widget.config.ts","../../../../libs/platform/themes/shared/src/lib/shared.module.ts","../../../../libs/platform/themes/shared/src/acorex-platform-themes-shared.ts"],"sourcesContent":["export enum AXPThemeLayoutSetting {\n Name = 'layout:theme:name',\n Layout = 'layout:theme:layout',\n Font = 'layout:theme:font:family',\n FontSize = 'layout:theme:font:size',\n Palette = 'layout:theme:palette',\n Mode = 'layout:theme:mode',\n SideMenuStatus = 'layout:theme:sidemenu:status',\n SideMenuWidth = 'layout:theme:sidemenu:width',\n MenuOrientation = 'layout:theme:root-menu:direction',\n MenuBadgeVisible = 'layout:theme:root-menu:badge',\n}","export interface AXPThemePaletteColors {\n primary: string;\n secondary: string;\n success: string;\n warning: string;\n danger: string;\n accents: string[];\n dark: string;\n light: string;\n}\n\nexport interface AXPThemePalette {\n name: string;\n title: string;\n colors: AXPThemePaletteColors\n}\n\n// Theme Enum\nexport enum AXPThemeMode {\n Light = 'light',\n Dark = 'dark',\n System = 'system',\n}\n\n// Screen Size Enum\nexport enum AXPScreenSize {\n Small = 'small',\n Medium = 'medium',\n Large = 'large',\n}\n\n// Device Type Enum\nexport enum AXPDeviceType {\n Mobile = 'mobile',\n Tablet = 'tablet',\n Desktop = 'desktop',\n}\n\n// Side Menu State Enum\nexport enum AXPSideMenuState {\n Opened = 'opened',\n Closed = 'closed',\n}\n\n// Menu Orientation Enum\nexport enum AXPMenuOrientation {\n Vertical = 'vertical',\n Horizontal = 'horizontal',\n}\n","import { AXPSettingService } from '@acorex/platform/common';\nimport { computed, inject } from '@angular/core';\nimport { patchState, signalStore, withComputed, withHooks, withMethods, withState } from '@ngrx/signals';\nimport { filter, firstValueFrom, timer, fromEvent, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { AXPThemeLayoutSetting } from './settings.keys';\nimport { AXPThemeMode, AXPScreenSize, AXPDeviceType, AXPSideMenuState, AXPMenuOrientation } from './theme.types';\nimport { HttpClient } from '@angular/common/http';\nimport { AXPPlatformScope } from '@acorex/platform/core';\nimport { AXPSessionService, AXPSessionStatus } from '@acorex/platform/auth';\n// ThemeStore - Manages theme settings, system changes, and loading states\nexport const AXPLayoutThemeService = signalStore(\n { providedIn: 'root' },\n\n // Initial State\n withState(() => {\n\n const isSystemDark = window.matchMedia('(prefers-color-scheme: dark)').matches;\n\n // Helper function to get the initial screen size\n const getScreenSize = (): AXPScreenSize => {\n const width = window.innerWidth;\n if (width <= 600) return AXPScreenSize.Small;\n if (width <= 1024) return AXPScreenSize.Medium;\n return AXPScreenSize.Large;\n };\n\n // Helper function to determine device type\n const getDeviceType = (): AXPDeviceType => {\n const userAgent = navigator.userAgent.toLowerCase();\n if (/mobile|android|iphone|ipad/.test(userAgent)) {\n return AXPDeviceType.Mobile;\n } else if (/tablet/.test(userAgent)) {\n return AXPDeviceType.Tablet;\n }\n return AXPDeviceType.Desktop;\n };\n\n // Helper function to determine if the device supports touch\n const isTouchDevice = (): boolean => {\n return 'ontouchstart' in window || navigator.maxTouchPoints > 0;\n };\n\n const state = {\n currentMode: AXPThemeMode.System,\n currentPalette: 'default',\n systemThemeMode: (isSystemDark ? AXPThemeMode.Dark : AXPThemeMode.Light) as AXPThemeMode,\n font: {\n family: 'system-ui',\n size: 'medium'\n },\n screenSize: getScreenSize(),\n deviceType: getDeviceType(),\n isTouchDevice: isTouchDevice(),\n overlayLoading: false,\n navigationLoading: false,\n overlayLoadingTaskCount: 0,\n navigationLoadingTaskCount: 0,\n sideMenuState: (getScreenSize() === AXPScreenSize.Large ? AXPSideMenuState.Opened : AXPSideMenuState.Closed) as AXPSideMenuState,\n sideMenuWidth: 288,\n menuOrientation: 'vertical' as AXPMenuOrientation,\n _listener: null as ((e: MediaQueryListEvent) => void) | null,\n _resizeListener: null as Subscription | null,\n };\n\n return state;\n }),\n\n // Computed Signals\n withComputed(({ currentMode: currentTheme, systemThemeMode: systemTheme, screenSize, deviceType, isTouchDevice, sideMenuState, overlayLoading, navigationLoading, menuOrientation }) => ({\n isDarkMode: computed(\n () =>\n currentTheme() === AXPThemeMode.Dark ||\n (currentTheme() === AXPThemeMode.System && systemTheme() === AXPThemeMode.Dark)\n ),\n isLightMode: computed(\n () =>\n currentTheme() === AXPThemeMode.Light ||\n (currentTheme() === AXPThemeMode.System && systemTheme() === AXPThemeMode.Light)\n ),\n isSystemMode: computed(() => currentTheme() === AXPThemeMode.System),\n isSideMenuOpen: computed(() => sideMenuState() === AXPSideMenuState.Opened),\n isSideMenuOverlay: computed(() => screenSize() === AXPScreenSize.Small || screenSize() === AXPScreenSize.Medium),\n isSmall: computed(() => screenSize() === AXPScreenSize.Small),\n isMedium: computed(() => screenSize() === AXPScreenSize.Medium),\n isLarge: computed(() => screenSize() === AXPScreenSize.Large),\n isMobileDevice: computed(() => deviceType() === AXPDeviceType.Mobile),\n isTabletDevice: computed(() => deviceType() === AXPDeviceType.Tablet),\n isDesktopDevice: computed(() => deviceType() === AXPDeviceType.Desktop),\n isTouchScreen: computed(() => isTouchDevice()),\n isOverlayLoading: computed(() => overlayLoading()),\n isNavigationLoading: computed(() => navigationLoading()),\n isMenuHorizontal: computed(() => menuOrientation() === AXPMenuOrientation.Horizontal),\n })),\n\n // Methods for State Management\n withMethods((store, http = inject(HttpClient), settingService = inject(AXPSettingService)) => {\n\n const _applySettings = async () => {\n console.log('apply settings');\n\n // Initialize theme and side menu setting from storage\n const settingThemeMode = ((await settingService.get(AXPThemeLayoutSetting.Mode)) as AXPThemeMode) ?? AXPThemeMode.Light;\n patchState(store, { currentMode: settingThemeMode });\n //\n const settingThemePallete = ((await settingService.get(AXPThemeLayoutSetting.Palette)) as string) ?? 'default';\n patchState(store, { currentPalette: settingThemePallete });\n //\n const settingSideMenu = ((await settingService.get(AXPThemeLayoutSetting.SideMenuStatus)) as AXPSideMenuState) ?? store.sideMenuState();\n patchState(store, { sideMenuState: settingSideMenu });\n //\n const settingMenuOrientation = ((await settingService.get(AXPThemeLayoutSetting.MenuOrientation)) as AXPMenuOrientation) ?? store.menuOrientation();\n patchState(store, { menuOrientation: settingMenuOrientation });\n // \n const fontFamily = await settingService.get(AXPThemeLayoutSetting.Font);\n const fontSize = await settingService.get(AXPThemeLayoutSetting.FontSize);\n patchState(store, { font: { family: fontFamily, size: fontSize } });\n //\n const sideMenuWidth = await settingService.get(AXPThemeLayoutSetting.SideMenuWidth);\n patchState(store, { sideMenuWidth });\n\n await _updateHtmlClass();\n }\n\n // Update HTML class based on theme\n const _updateHtmlClass = async () => {\n const html = document.getElementsByTagName('html')[0];\n //\n store.isDarkMode() ? html.classList.add('ax-dark') : html.classList.remove('ax-dark');\n //\n html.style.fontFamily = store.font().family;\n html.style.fontSize = store.font().size;\n //\n await _applyThemePalette(store.currentPalette())\n };\n\n // Update screen size based on window width\n const _updateScreenSize = () => {\n const width = window.innerWidth;\n let newScreenSize: AXPScreenSize;\n\n if (width <= 600) {\n newScreenSize = AXPScreenSize.Small;\n } else if (width <= 1024) {\n newScreenSize = AXPScreenSize.Medium;\n } else {\n newScreenSize = AXPScreenSize.Large;\n }\n\n if (newScreenSize !== store.screenSize()) {\n patchState(store, { screenSize: newScreenSize });\n if (!store.isLarge()) {\n patchState(store, { sideMenuState: AXPSideMenuState.Closed });\n settingService.scope(AXPPlatformScope.User).set(AXPThemeLayoutSetting.SideMenuStatus, store.sideMenuState());\n }\n }\n };\n\n const _setOverlayLoading = async (value: boolean, delay: number = 0): Promise<void> => {\n if (value) {\n let timeoutId: number | null = null;\n\n if (delay > 0) {\n timeoutId = window.setTimeout(() => {\n patchState(store, { overlayLoadingTaskCount: store.overlayLoadingTaskCount() + 1 });\n patchState(store, { overlayLoading: true });\n }, delay);\n } else {\n patchState(store, { overlayLoadingTaskCount: store.overlayLoadingTaskCount() + 1 });\n patchState(store, { overlayLoading: true });\n }\n\n // Store timeout ID to clear it if the loading ends before delay\n (store as any)._loadingTimeoutId = timeoutId;\n } else {\n if (store.overlayLoadingTaskCount() > 0) {\n patchState(store, { overlayLoadingTaskCount: store.overlayLoadingTaskCount() - 1 });\n }\n\n if (store.overlayLoadingTaskCount() === 0) {\n const timeoutId = (store as any)._loadingTimeoutId;\n if (timeoutId) {\n clearTimeout(timeoutId);\n (store as any)._loadingTimeoutId = null;\n }\n\n timer(minimumDisplayTime).subscribe(() => {\n if (store.overlayLoadingTaskCount() === 0) {\n patchState(store, { overlayLoading: false });\n }\n });\n }\n }\n };\n\n\n const _setNavigationLoading = (value: boolean, delay?: number) => {\n if (value) {\n patchState(store, { navigationLoadingTaskCount: store.navigationLoadingTaskCount() + 1 });\n patchState(store, { navigationLoading: true });\n } else {\n if (store.navigationLoadingTaskCount() > 0) {\n patchState(store, { navigationLoadingTaskCount: store.navigationLoadingTaskCount() - 1 });\n }\n if (store.navigationLoadingTaskCount() === 0) {\n timer(minimumDisplayTime).subscribe(() => {\n if (store.navigationLoadingTaskCount() === 0) {\n patchState(store, { navigationLoading: false });\n }\n });\n }\n }\n }\n\n\n\n // Helper method to apply a cached theme palette\n const _applyThemePalette = async (name: string): Promise<void> => {\n // TODO: Get the path from the palette provider token\n const path = `/assets/themes/palettes/css/${name}.css`;\n // Check if the current theme is already applied\n const existingStyle = document.querySelector<HTMLStyleElement>(`style[data-theme=\"${name}\"]`);\n if (existingStyle) {\n return; // Theme is already applied, no need to reapply\n }\n\n _setNavigationLoading(true);\n\n try {\n // Fetch the CSS file via HttpClient\n const cssText = await firstValueFrom(http.get(path!, { responseType: 'text' }));\n\n // Create a new <style> tag and apply the CSS\n const style = document.createElement('style');\n style.setAttribute('data-theme', name);\n style.textContent = cssText!;\n document.head.appendChild(style);\n\n // Remove any other outdated theme styles\n document.querySelectorAll<HTMLStyleElement>('style[data-theme]').forEach(existing => {\n if (existing !== style) {\n existing.remove();\n }\n });\n\n } catch (error) {\n console.error(`Error loading theme CSS:`, error);\n } finally {\n _setNavigationLoading(false);\n }\n };\n\n\n const minimumDisplayTime = 500; // milliseconds\n\n return {\n // Change theme and update HTML class\n changeThemeMode(theme: AXPThemeMode) {\n settingService.scope(AXPPlatformScope.User).set(AXPThemeLayoutSetting.Mode, theme);\n patchState(store, { currentMode: theme });\n _updateHtmlClass();\n },\n\n // Open side menu\n openSideMenu() {\n patchState(store, { sideMenuState: AXPSideMenuState.Opened });\n settingService.scope(AXPPlatformScope.User).set(AXPThemeLayoutSetting.SideMenuStatus, AXPSideMenuState.Opened);\n },\n\n // Close side menu\n closeSideMenu() {\n patchState(store, { sideMenuState: AXPSideMenuState.Closed });\n settingService.scope(AXPPlatformScope.User).set(AXPThemeLayoutSetting.SideMenuStatus, AXPSideMenuState.Closed);\n },\n\n // Set side menu width\n setSideMenuWidth(width: number) {\n patchState(store, { sideMenuWidth: width });\n settingService.scope(AXPPlatformScope.User).set(AXPThemeLayoutSetting.SideMenuWidth, width);\n },\n\n // Toggle side menu state\n toggleSideMenu() {\n const newSideMenuState = store.sideMenuState() === AXPSideMenuState.Opened ? AXPSideMenuState.Closed : AXPSideMenuState.Opened;\n patchState(store, { sideMenuState: newSideMenuState });\n settingService.scope(AXPPlatformScope.User).set(AXPThemeLayoutSetting.SideMenuStatus, newSideMenuState);\n },\n\n // Set navigation loading state with a task counter\n setNavigationLoading(value: boolean, delay?: number) {\n _setNavigationLoading(value, delay);\n },\n\n // Set overlay loading state with a task counter\n setOverlayLoading(value: boolean, delay?: number) {\n _setOverlayLoading(value, delay);\n },\n\n async loadSettings() {\n await _applySettings();\n },\n\n // Set up event listener for system theme changes\n _setupSystemColorListener() {\n const mediaQueryList = window.matchMedia('(prefers-color-scheme: dark)');\n const listener = (e: MediaQueryListEvent) => {\n patchState(store, { systemThemeMode: e.matches ? AXPThemeMode.Dark : AXPThemeMode.Light });\n _updateHtmlClass();\n };\n mediaQueryList.addEventListener('change', listener);\n return listener;\n },\n\n // Remove event listener for system theme changes\n _removeSystemColorListener(listener: (e: MediaQueryListEvent) => void) {\n const mediaQueryList = window.matchMedia('(prefers-color-scheme: dark)');\n mediaQueryList.removeEventListener('change', listener);\n },\n\n // Set up event listener for window resize\n _setupResizeListener(): Subscription {\n const subscription = fromEvent(window, 'resize')\n .pipe(\n debounceTime(250) // 250ms debounce delay\n )\n .subscribe(() => {\n _updateScreenSize();\n });\n return subscription;\n },\n\n // Remove event listener for window resize\n _removeResizeListener(subscription: Subscription) {\n if (subscription) {\n subscription.unsubscribe();\n }\n },\n\n };\n }),\n\n // Lifecycle Hooks\n withHooks((store, settingService = inject(AXPSettingService)) => ({\n onInit() {\n //\n settingService.onChanged.pipe(filter(c => c.scope == AXPPlatformScope.User)).subscribe(async (changes) => {\n const keys = Object.values(AXPThemeLayoutSetting);\n if (changes.keys.some((key) => keys.includes(key as any))) {\n await store.loadSettings();\n }\n });\n //\n settingService.onLoaded.subscribe(async () => {\n await store.loadSettings();\n });\n\n // Set up event listener for system theme changes\n const listener = store._setupSystemColorListener();\n patchState(store, { _listener: listener });\n\n // Set up event listener for window resize\n const resizeSubscription = store._setupResizeListener();\n patchState(store, { _resizeListener: resizeSubscription });\n },\n\n onDestroy() {\n // Clean up event listeners when store is destroyed\n const { _listener: listener, _resizeListener: resizeListener } = store;\n if (listener) {\n store._removeSystemColorListener(listener);\n }\n if (resizeListener instanceof Subscription) {\n store._removeResizeListener(resizeListener);\n }\n },\n }))\n);\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { CommonModule } from '@angular/common';\nimport { Component, inject } from '@angular/core';\nimport { AXPLayoutThemeService } from '../theme.service';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPThemeMode } from '../theme.types';\n\n@Component({\n template: `\n <ax-button color=\"primary\">\n <ax-icon\n class=\"fa-regular \"\n [ngClass]=\"{\n 'fa-desktop':store.isSystemMode(),\n 'fa-moon':!store.isSystemMode() && store.isDarkMode(),\n 'fa-brightness':!store.isSystemMode() && !store.isDarkMode(),\n }\"\n >\n </ax-icon>\n <ax-dropdown-panel *translate=\"let t\">\n <ax-button-item-list>\n <ax-button-item\n (onClick)=\"store.changeThemeMode(variants.Light)\"\n [text]=\"(t('theme-modes.light',{scope:'layout'}) | async)!\"\n [selected]=\"!store.isSystemMode() && !store.isDarkMode()\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-brightness\"> </ax-icon>\n </ax-prefix>\n </ax-button-item>\n <ax-button-item\n (onClick)=\"store.changeThemeMode(variants.Dark)\"\n [text]=\"(t('theme-modes.dark',{scope:'layout'}) | async)!\"\n [selected]=\"!store.isSystemMode() && store.isDarkMode()\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-moon\"> </ax-icon>\n </ax-prefix>\n </ax-button-item>\n <ax-button-item\n (onClick)=\"store.changeThemeMode(variants.System)\"\n [text]=\"(t('theme-modes.system',{scope:'layout'}) | async)!\"\n [selected]=\"store.isSystemMode()\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-desktop\"> </ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n `,\n imports: [CommonModule, AXButtonModule, AXDecoratorModule, AXDropdownModule, AXTranslationModule]\n})\nexport class AXPThemeSlotComponent {\n protected store = inject(AXPLayoutThemeService);\n\n protected variants = AXPThemeMode;\n}\n","import { InjectionToken } from '@angular/core';\nimport { AXPThemePalette } from './theme.types';\n\nexport interface AXPThemePaletteProvider {\n getList(): Promise<AXPThemePalette[]>;\n}\n\nexport const AXP_THEME_PALETTE_PROVIDER = new InjectionToken<Promise<AXPThemePaletteProvider>>('AXP_THEME_PALETTE_PROVIDER', {\n providedIn: 'root',\n factory: async () => {\n return new AXPThemePaletteProviderDefault();\n },\n});\n\nexport class AXPThemePaletteProviderDefault implements AXPThemePaletteProvider {\n getList(): Promise<AXPThemePalette[]> {\n return Promise.resolve([\n {\n name: 'default',\n title: 'Default',\n path: '/assets/themes/palletes/default.css',\n colors: {\n primary: '#113b53',\n secondary: '#1a6ab1',\n neutral: '#606c76',\n success: '#2d9c67',\n warning: '#e9a01b',\n danger: '#c02f1d',\n accents: ['#d6a7a6', '#a0897e', '#8bf4d9'],\n dark: '#2a2d30',\n light: '#ffffff',\n },\n },\n ]);\n }\n}\n","import { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, inject, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXSelectionModule } from '@acorex/cdk/selection';\nimport { AXP_THEME_PALETTE_PROVIDER } from '../../palette.provider';\nimport { AXPThemePalette } from '../../theme.types';\n\n@Component({\n template: ` \n @for (palette of palettes(); track palette.name) {\n <div (click)=\"onPaletteClick(palette)\" \n [class.--selected]=\"palette.name === selectedPalette()?.name\">\n <span>{{ palette.title }}</span>\n <div >\n <div [style.background-color]=\"palette.colors.primary\" class=\"ax-end-7 ax-z-[2]\"></div>\n <div [style.background-color]=\"palette.colors.secondary\" class=\"ax-end-3.5 ax-z-[1]\"></div>\n <div [style.background-color]=\"palette.colors.accents[0]\" class=\"ax-end-0 ax-z-0\"></div>\n </div>\n </div>\n }\n `,\n styleUrl: './theme-palette-chooser-widget.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, FormsModule, AXSelectionModule],\n})\nexport class AXPThemePaletteChooserWidgetComponent extends AXPValueWidgetComponent<string> {\n\n private readonly paletteService = inject(AXP_THEME_PALETTE_PROVIDER);\n protected readonly palettes = signal<AXPThemePalette[]>([]);\n protected selectedPalette = signal<AXPThemePalette | null>(null);\n\n\n #eff = effect(() => {\n if (this.getValue()) {\n this.selectedPalette.set(this.palettes().find(p => p.name === this.getValue()) ?? this.palettes().find(p => p.name === 'default') ?? this.palettes()[0]);\n }\n });\n\n override async ngOnInit(): Promise<void> {\n super.ngOnInit();\n const palletsProviderInstance = await this.paletteService;\n this.palettes.set(await palletsProviderInstance.getList());\n }\n\n protected onPaletteClick(palette: AXPThemePalette) {\n this.setValue(palette.name);\n }\n}","import { AXP_WIDGETS_LAYOUT_CATEGORY, AXPWidgetConfig } from '@acorex/platform/layout/builder';\nimport { AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY } from '@acorex/platform/widgets';\n\nexport const AXPThemePaletteChooserWidget: AXPWidgetConfig = {\n name: \"theme-palette-chooser\",\n title: \"Theme Palette Chooser\",\n icon: \"fa-solid fa-square\",\n type: 'editor',\n categories: AXP_WIDGETS_LAYOUT_CATEGORY,\n properties: [\n AXP_NAME_PROPERTY,\n AXP_DATA_PATH_PROPERTY,\n AXP_DISABLED_PROPERTY,\n ],\n components: {\n edit: {\n component: () => import('./theme-palette-chooser-widget.component').then((c) => c.AXPThemePaletteChooserWidgetComponent),\n },\n }\n}\n\ndeclare module '@acorex/platform/layout/builder' {\n interface AXPWidgetTypesMap {\n themePaletteChooser: 'theme-palette-chooser';\n }\n}","import { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXSelectionModule } from '@acorex/cdk/selection';\nimport { AXPThemeMode } from '../../theme.types';\nimport { AXTranslationModule } from '@acorex/core/translation';\n\ninterface ThemeModeOption {\n id: AXPThemeMode;\n icon: string;\n}\n\n@Component({\n template: ` \n @for (mode of modes(); track mode.id) {\n <div (click)=\"onModeClick(mode)\" \n [class.--selected]=\"mode.id === selectedMode()?.id\">\n <div>\n <i [class]=\"mode.icon\"></i>\n </div>\n <span>{{ ('theme-modes.' + mode.id) | translate: { scope: 'layout' } | async}}</span>\n </div>\n }\n `,\n styleUrl: './theme-mode-chooser-widget.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, FormsModule, AXSelectionModule, AXTranslationModule],\n})\nexport class AXPThemeModeChooserWidgetComponent extends AXPValueWidgetComponent<string> {\n protected readonly modes = signal<ThemeModeOption[]>([\n { id: AXPThemeMode.Light, icon: 'fa-light fa-brightness' },\n { id: AXPThemeMode.Dark, icon: 'fa-light fa-moon' },\n { id: AXPThemeMode.System, icon: 'fa-light fa-desktop' },\n ]);\n\n protected selectedMode = signal<ThemeModeOption | null>(null);\n\n #eff = effect(() => {\n if (this.getValue()) {\n this.selectedMode.set(this.modes().find(m => m.id === this.getValue()) ?? this.modes()[0]);\n }\n });\n\n protected onModeClick(mode: ThemeModeOption) {\n this.setValue(mode.id);\n }\n} ","import { AXP_WIDGETS_LAYOUT_CATEGORY, AXPWidgetConfig } from '@acorex/platform/layout/builder';\nimport { AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY } from '@acorex/platform/widgets';\n\nexport const AXPThemeModeChooserWidget: AXPWidgetConfig = {\n name: \"theme-mode-chooser\",\n title: \"Theme Mode Chooser\",\n icon: \"fa-solid fa-square\",\n type: 'editor',\n categories: AXP_WIDGETS_LAYOUT_CATEGORY,\n properties: [\n AXP_NAME_PROPERTY,\n AXP_DATA_PATH_PROPERTY,\n AXP_DISABLED_PROPERTY,\n ],\n components: {\n edit: {\n component: () => import('./theme-mode-chooser-widget.component').then((c) => c.AXPThemeModeChooserWidgetComponent),\n },\n }\n}\n\ndeclare module '@acorex/platform/layout/builder' {\n interface AXPWidgetTypesMap {\n themeModeChooser: 'theme-mode-chooser';\n }\n}","import { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXSelectionModule } from '@acorex/cdk/selection';\nimport { AXTranslationModule } from '@acorex/core/translation';\n\ninterface MenuOrientationOption {\n id: string;\n icon: string;\n}\n\n@Component({\n template: ` \n @for (orientation of orientations(); track orientation.id) {\n <div (click)=\"onOrientationClick(orientation)\" \n [class.--selected]=\"orientation.id === selectedOrientation()?.id\">\n <div>\n <i [class]=\"orientation.icon\"></i>\n </div>\n <span>{{ ('menu-modes.' + orientation.id) | translate: { scope: 'layout' } | async}}</span>\n </div>\n }\n `,\n styleUrl: './menu-orientation-chooser-widget.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, FormsModule, AXSelectionModule, AXTranslationModule],\n})\nexport class AXPMenuOrientationChooserWidgetComponent extends AXPValueWidgetComponent<string> {\n protected readonly orientations = signal<MenuOrientationOption[]>([\n { id: 'vertical', icon: 'fa-regular fa-square-ellipsis-vertical' },\n { id: 'horizontal', icon: 'fa-regular fa-square-ellipsis' },\n ]);\n\n protected selectedOrientation = signal<MenuOrientationOption | null>(null);\n\n #eff = effect(() => {\n if (this.getValue()) {\n this.selectedOrientation.set(this.orientations().find(o => o.id === this.getValue()) ?? this.orientations()[0]);\n }\n });\n\n protected onOrientationClick(orientation: MenuOrientationOption) {\n this.setValue(orientation.id);\n }\n} ","import { AXP_WIDGETS_LAYOUT_CATEGORY, AXPWidgetConfig } from '@acorex/platform/layout/builder';\nimport { AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY } from '@acorex/platform/widgets';\n\nexport const AXPMenuOrientationChooserWidget: AXPWidgetConfig = {\n name: \"menu-orientation-chooser\",\n title: \"Menu Orientation Chooser\",\n icon: \"fa-light fa-bars-staggered\",\n type: 'editor',\n categories: AXP_WIDGETS_LAYOUT_CATEGORY,\n properties: [\n AXP_NAME_PROPERTY,\n AXP_DATA_PATH_PROPERTY,\n AXP_DISABLED_PROPERTY,\n ],\n components: {\n edit: {\n component: () => import('./menu-orientation-chooser-widget.component').then((c) => c.AXPMenuOrientationChooserWidgetComponent),\n },\n }\n}\n\ndeclare module '@acorex/platform/layout/builder' {\n interface AXPWidgetTypesMap {\n menuOrientationChooser: 'menu-orientation-chooser';\n }\n} ","import { AXSelectionModule } from '@acorex/cdk/selection';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\ninterface FontStyleOption {\n id: string;\n title: string;\n}\n\n@Component({\n template: `\n @for (font of fonts(); track font.id) {\n <div (click)=\"onFontClick(font)\" [class.--selected]=\"font.id === selectedFont()?.id\" [style.font-family]=\"font.id\">\n <div>\n <span>{{ font.title }}</span>\n </div>\n </div>\n }\n `,\n styleUrl: './font-style-chooser-widget.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, FormsModule, AXSelectionModule],\n})\nexport class AXPFontStyleChooserWidgetComponent extends AXPValueWidgetComponent<string> {\n protected readonly fonts = signal<FontStyleOption[]>([\n { id: 'system-ui', title: 'Default' },\n { id: 'serif', title: 'Serif' },\n { id: 'sans-serif', title: 'Sans-serif' },\n { id: 'monospace', title: 'Monospace' },\n { id: 'arial', title: 'Arial' },\n { id: 'verdana', title: 'Verdana' },\n { id: 'tahoma', title: 'Tahoma' },\n { id: 'times-new-roman', title: 'Times New Roman' },\n { id: 'georgia', title: 'Georgia' },\n { id: 'helvetica', title: 'Helvetica' },\n { id: 'calibri', title: 'Calibri' },\n { id: 'cursive', title: 'Cursive' },\n { id: 'vazirmatn', title: 'Vazir وزیر' },\n ]);\n\n protected selectedFont = signal<FontStyleOption | null>(null);\n\n #eff = effect(() => {\n if (this.getValue()) {\n this.selectedFont.set(this.fonts().find((f) => f.id === this.getValue()) ?? this.fonts()[0]);\n }\n });\n\n protected onFontClick(font: FontStyleOption) {\n this.setValue(font.id);\n }\n}\n","import { AXP_WIDGETS_LAYOUT_CATEGORY, AXPWidgetConfig } from '@acorex/platform/layout/builder';\nimport { AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY } from '@acorex/platform/widgets';\n\nexport const AXPFontStyleChooserWidget: AXPWidgetConfig = {\n name: \"font-style-chooser\",\n title: \"Font Style Chooser\",\n icon: \"fa-light fa-font\",\n type: 'editor',\n categories: AXP_WIDGETS_LAYOUT_CATEGORY,\n properties: [\n AXP_NAME_PROPERTY,\n AXP_DATA_PATH_PROPERTY,\n AXP_DISABLED_PROPERTY,\n ],\n components: {\n edit: {\n component: () => import('./font-style-chooser-widget.component').then((c) => c.AXPFontStyleChooserWidgetComponent),\n },\n }\n}\n\ndeclare module '@acorex/platform/layout/builder' {\n interface AXPWidgetTypesMap {\n fontStyleChooser: 'font-style-chooser';\n }\n} ","import { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXSelectionModule } from '@acorex/cdk/selection';\nimport { AXTranslationModule } from '@acorex/core/translation';\n\n@Component({\n template: ` \n @for (size of sizes(); track size) {\n <div (click)=\"onSizeClick(size)\" \n [style.font-size]=\"size\"\n [class.--selected]=\"size === selectedSize()\">\n <div>\n <span >{{ ('font-sizes.' + size) | translate: { scope: 'layout' } | async}}</span>\n </div>\n </div>\n }\n `,\n styleUrl: './font-size-chooser-widget.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, FormsModule, AXSelectionModule, AXTranslationModule],\n})\nexport class AXPFontSizeChooserWidgetComponent extends AXPValueWidgetComponent<string> {\n protected readonly sizes = signal<string[]>([\n 'small',\n 'medium',\n 'large',\n 'x-large',\n ]);\n\n protected selectedSize = signal<string | null>(null);\n\n #eff = effect(() => {\n if (this.getValue()) {\n this.selectedSize.set(this.sizes().find(s => s === this.getValue()) ?? this.sizes()[0]);\n }\n });\n\n protected onSizeClick(size: string) {\n this.setValue(size);\n }\n} ","import { AXP_WIDGETS_LAYOUT_CATEGORY, AXPWidgetConfig } from '@acorex/platform/layout/builder';\nimport { AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY } from '@acorex/platform/widgets';\n\nexport const AXPFontSizeChooserWidget: AXPWidgetConfig = {\n name: \"font-size-chooser\",\n title: \"Font Size Chooser\",\n icon: \"fa-light fa-text-size\",\n type: 'editor',\n categories: AXP_WIDGETS_LAYOUT_CATEGORY,\n properties: [\n AXP_NAME_PROPERTY,\n AXP_DATA_PATH_PROPERTY,\n AXP_DISABLED_PROPERTY,\n ],\n components: {\n edit: {\n component: () => import('./font-size-chooser-widget.component').then((c) => c.AXPFontSizeChooserWidgetComponent),\n },\n }\n}\n\ndeclare module '@acorex/platform/layout/builder' {\n interface AXPWidgetTypesMap {\n fontSizeChooser: 'font-size-chooser';\n }\n} ","import { AXP_SETTING_DEFINITION_PROVIDER } from '@acorex/platform/common';\nimport { inject, Injector, NgModule } from '@angular/core';\nimport { AXPThemeSlotComponent } from './slots/theme-slot.component';\nimport { AXPLayoutThemeService } from './theme.service';\nimport { AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';\nimport { AXPThemePaletteChooserWidget } from './widgets/theme-palette-chooser';\nimport { AXPThemeModeChooserWidget } from './widgets/theme-mode-chooser';\nimport { AXPMenuOrientationChooserWidget } from './widgets/menu-orientation-chooser';\nimport { AXPFontStyleChooserWidget } from './widgets/font-style-chooser';\nimport { AXPFontSizeChooserWidget } from './widgets/font-size-chooser';\nimport { AXPAppStartUpService } from '@acorex/platform/core';\nimport { AXPComponentSlotModule } from '@acorex/platform/layout/components';\n@NgModule({\n imports: [\n AXPComponentSlotModule.forRoot({\n 'root-header-end': [\n {\n priority: 50,\n name: 'theme',\n component: AXPThemeSlotComponent,\n },\n ],\n }),\n AXPLayoutBuilderModule.forChild({\n widgets: [\n AXPThemePaletteChooserWidget,\n AXPThemeModeChooserWidget,\n AXPMenuOrientationChooserWidget,\n AXPFontSizeChooserWidget,\n AXPFontStyleChooserWidget\n ]\n })\n ],\n exports: [],\n declarations: [],\n providers: [\n {\n provide: AXP_SETTING_DEFINITION_PROVIDER,\n useFactory: async () => {\n const injector = inject(Injector);\n const provider = (await import('./settings.provider')).AXPThemeSettingProvider;\n return new provider(injector);\n },\n multi: true\n }\n ],\n})\nexport class AXPThemesSharedModule {\n constructor(\n appInitService: AXPAppStartUpService,\n injector: Injector\n ) {\n const service = injector.get(AXPLayoutThemeService);\n appInitService.registerTask({\n name: 'layout-theme',\n statusText: 'Applying layout theme settings ...',\n priority: 100,\n run: async () => {\n await service.loadSettings();\n }\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i5","i2","i1","i3"],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-themes-shared.mjs","sources":["../../../../libs/platform/themes/shared/src/lib/settings.keys.ts","../../../../libs/platform/themes/shared/src/lib/theme.types.ts","../../../../libs/platform/themes/shared/src/lib/theme.service.ts","../../../../libs/platform/themes/shared/src/lib/slots/theme-slot.component.ts","../../../../libs/platform/themes/shared/src/lib/palette.provider.ts","../../../../libs/platform/themes/shared/src/lib/widgets/theme-palette-chooser/theme-palette-chooser-widget.component.ts","../../../../libs/platform/themes/shared/src/lib/widgets/theme-palette-chooser/theme-palette-chooser-widget.config.ts","../../../../libs/platform/themes/shared/src/lib/widgets/theme-mode-chooser/theme-mode-chooser-widget.component.ts","../../../../libs/platform/themes/shared/src/lib/widgets/theme-mode-chooser/theme-mode-chooser-widget.config.ts","../../../../libs/platform/themes/shared/src/lib/widgets/menu-orientation-chooser/menu-orientation-chooser-widget.component.ts","../../../../libs/platform/themes/shared/src/lib/widgets/menu-orientation-chooser/menu-orientation-chooser-widget.config.ts","../../../../libs/platform/themes/shared/src/lib/widgets/font-style-chooser/font-style-chooser-widget.component.ts","../../../../libs/platform/themes/shared/src/lib/widgets/font-style-chooser/font-style-chooser-widget.config.ts","../../../../libs/platform/themes/shared/src/lib/widgets/font-size-chooser/font-size-chooser-widget.component.ts","../../../../libs/platform/themes/shared/src/lib/widgets/font-size-chooser/font-size-chooser-widget.config.ts","../../../../libs/platform/themes/shared/src/lib/shared.module.ts","../../../../libs/platform/themes/shared/src/acorex-platform-themes-shared.ts"],"sourcesContent":["export enum AXPThemeLayoutSetting {\n Name = 'layout:theme:name',\n Layout = 'layout:theme:layout',\n Font = 'layout:theme:font:family',\n FontSize = 'layout:theme:font:size',\n Palette = 'layout:theme:palette',\n Mode = 'layout:theme:mode',\n SideMenuStatus = 'layout:theme:sidemenu:status',\n SideMenuWidth = 'layout:theme:sidemenu:width',\n MenuOrientation = 'layout:theme:root-menu:direction',\n MenuBadgeVisible = 'layout:theme:root-menu:badge',\n}","export interface AXPThemePaletteColors {\n primary: string;\n secondary: string;\n success: string;\n warning: string;\n danger: string;\n accents: string[];\n dark: string;\n light: string;\n}\n\nexport interface AXPThemePalette {\n name: string;\n title: string;\n colors: AXPThemePaletteColors\n}\n\n// Theme Enum\nexport enum AXPThemeMode {\n Light = 'light',\n Dark = 'dark',\n System = 'system',\n}\n\n// Screen Size Enum\nexport enum AXPScreenSize {\n Small = 'small',\n Medium = 'medium',\n Large = 'large',\n}\n\n// Device Type Enum\nexport enum AXPDeviceType {\n Mobile = 'mobile',\n Tablet = 'tablet',\n Desktop = 'desktop',\n}\n\n// Side Menu State Enum\nexport enum AXPSideMenuState {\n Opened = 'opened',\n Closed = 'closed',\n}\n\n// Menu Orientation Enum\nexport enum AXPMenuOrientation {\n Vertical = 'vertical',\n Horizontal = 'horizontal',\n}\n","import { AXPSettingService } from '@acorex/platform/common';\nimport { computed, inject } from '@angular/core';\nimport { patchState, signalStore, withComputed, withHooks, withMethods, withState } from '@ngrx/signals';\nimport { filter, firstValueFrom, timer, fromEvent, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { AXPThemeLayoutSetting } from './settings.keys';\nimport { AXPThemeMode, AXPScreenSize, AXPDeviceType, AXPSideMenuState, AXPMenuOrientation } from './theme.types';\nimport { HttpClient } from '@angular/common/http';\nimport { AXPPlatformScope } from '@acorex/platform/core';\nimport { AXPSessionService, AXPSessionStatus } from '@acorex/platform/auth';\n// ThemeStore - Manages theme settings, system changes, and loading states\nexport const AXPLayoutThemeService = signalStore(\n { providedIn: 'root' },\n\n // Initial State\n withState(() => {\n\n const isSystemDark = window.matchMedia('(prefers-color-scheme: dark)').matches;\n\n // Helper function to get the initial screen size\n const getScreenSize = (): AXPScreenSize => {\n const width = window.innerWidth;\n if (width <= 600) return AXPScreenSize.Small;\n if (width <= 1024) return AXPScreenSize.Medium;\n return AXPScreenSize.Large;\n };\n\n // Helper function to determine device type\n const getDeviceType = (): AXPDeviceType => {\n const userAgent = navigator.userAgent.toLowerCase();\n if (/mobile|android|iphone|ipad/.test(userAgent)) {\n return AXPDeviceType.Mobile;\n } else if (/tablet/.test(userAgent)) {\n return AXPDeviceType.Tablet;\n }\n return AXPDeviceType.Desktop;\n };\n\n // Helper function to determine if the device supports touch\n const isTouchDevice = (): boolean => {\n return 'ontouchstart' in window || navigator.maxTouchPoints > 0;\n };\n\n const state = {\n currentMode: AXPThemeMode.System,\n currentPalette: 'default',\n systemThemeMode: (isSystemDark ? AXPThemeMode.Dark : AXPThemeMode.Light) as AXPThemeMode,\n font: {\n family: 'system-ui',\n size: 'medium'\n },\n screenSize: getScreenSize(),\n deviceType: getDeviceType(),\n isTouchDevice: isTouchDevice(),\n overlayLoading: false,\n navigationLoading: false,\n overlayLoadingTaskCount: 0,\n navigationLoadingTaskCount: 0,\n sideMenuState: (getScreenSize() === AXPScreenSize.Large ? AXPSideMenuState.Opened : AXPSideMenuState.Closed) as AXPSideMenuState,\n sideMenuWidth: 288,\n menuOrientation: 'vertical' as AXPMenuOrientation,\n _listener: null as ((e: MediaQueryListEvent) => void) | null,\n _resizeListener: null as Subscription | null,\n };\n\n return state;\n }),\n\n // Computed Signals\n withComputed(({ currentMode: currentTheme, systemThemeMode: systemTheme, screenSize, deviceType, isTouchDevice, sideMenuState, overlayLoading, navigationLoading, menuOrientation }) => ({\n isDarkMode: computed(\n () =>\n currentTheme() === AXPThemeMode.Dark ||\n (currentTheme() === AXPThemeMode.System && systemTheme() === AXPThemeMode.Dark)\n ),\n isLightMode: computed(\n () =>\n currentTheme() === AXPThemeMode.Light ||\n (currentTheme() === AXPThemeMode.System && systemTheme() === AXPThemeMode.Light)\n ),\n isSystemMode: computed(() => currentTheme() === AXPThemeMode.System),\n isSideMenuOpen: computed(() => sideMenuState() === AXPSideMenuState.Opened),\n isSideMenuOverlay: computed(() => screenSize() === AXPScreenSize.Small || screenSize() === AXPScreenSize.Medium),\n isSmall: computed(() => screenSize() === AXPScreenSize.Small),\n isMedium: computed(() => screenSize() === AXPScreenSize.Medium),\n isLarge: computed(() => screenSize() === AXPScreenSize.Large),\n isMobileDevice: computed(() => deviceType() === AXPDeviceType.Mobile),\n isTabletDevice: computed(() => deviceType() === AXPDeviceType.Tablet),\n isDesktopDevice: computed(() => deviceType() === AXPDeviceType.Desktop),\n isTouchScreen: computed(() => isTouchDevice()),\n isOverlayLoading: computed(() => overlayLoading()),\n isNavigationLoading: computed(() => navigationLoading()),\n isMenuHorizontal: computed(() => menuOrientation() === AXPMenuOrientation.Horizontal),\n })),\n\n // Methods for State Management\n withMethods((store, http = inject(HttpClient), settingService = inject(AXPSettingService)) => {\n\n const _applySettings = async () => {\n console.log('apply settings');\n\n // Initialize theme and side menu setting from storage\n const settingThemeMode = ((await settingService.get(AXPThemeLayoutSetting.Mode)) as AXPThemeMode) ?? AXPThemeMode.Light;\n patchState(store, { currentMode: settingThemeMode });\n //\n const settingThemePallete = ((await settingService.get(AXPThemeLayoutSetting.Palette)) as string) ?? 'default';\n patchState(store, { currentPalette: settingThemePallete });\n //\n const settingSideMenu = ((await settingService.get(AXPThemeLayoutSetting.SideMenuStatus)) as AXPSideMenuState) ?? store.sideMenuState();\n patchState(store, { sideMenuState: settingSideMenu });\n //\n const settingMenuOrientation = ((await settingService.get(AXPThemeLayoutSetting.MenuOrientation)) as AXPMenuOrientation) ?? store.menuOrientation();\n patchState(store, { menuOrientation: settingMenuOrientation });\n // \n const fontFamily = await settingService.get(AXPThemeLayoutSetting.Font);\n const fontSize = await settingService.get(AXPThemeLayoutSetting.FontSize);\n patchState(store, { font: { family: fontFamily, size: fontSize } });\n //\n const sideMenuWidth = await settingService.get(AXPThemeLayoutSetting.SideMenuWidth);\n patchState(store, { sideMenuWidth });\n\n await _updateHtmlClass();\n }\n\n // Update HTML class based on theme\n const _updateHtmlClass = async () => {\n const html = document.getElementsByTagName('html')[0];\n //\n store.isDarkMode() ? html.classList.add('ax-dark') : html.classList.remove('ax-dark');\n //\n html.style.fontFamily = store.font().family;\n html.style.fontSize = store.font().size;\n //\n await _applyThemePalette(store.currentPalette())\n };\n\n // Update screen size based on window width\n const _updateScreenSize = () => {\n const width = window.innerWidth;\n let newScreenSize: AXPScreenSize;\n\n if (width <= 600) {\n newScreenSize = AXPScreenSize.Small;\n } else if (width <= 1024) {\n newScreenSize = AXPScreenSize.Medium;\n } else {\n newScreenSize = AXPScreenSize.Large;\n }\n\n if (newScreenSize !== store.screenSize()) {\n patchState(store, { screenSize: newScreenSize });\n if (!store.isLarge()) {\n patchState(store, { sideMenuState: AXPSideMenuState.Closed });\n settingService.scope(AXPPlatformScope.User).set(AXPThemeLayoutSetting.SideMenuStatus, store.sideMenuState());\n }\n }\n };\n\n const _setOverlayLoading = async (value: boolean, delay: number = 0): Promise<void> => {\n if (value) {\n let timeoutId: number | null = null;\n\n if (delay > 0) {\n timeoutId = window.setTimeout(() => {\n patchState(store, { overlayLoadingTaskCount: store.overlayLoadingTaskCount() + 1 });\n patchState(store, { overlayLoading: true });\n }, delay);\n } else {\n patchState(store, { overlayLoadingTaskCount: store.overlayLoadingTaskCount() + 1 });\n patchState(store, { overlayLoading: true });\n }\n\n // Store timeout ID to clear it if the loading ends before delay\n (store as any)._loadingTimeoutId = timeoutId;\n } else {\n if (store.overlayLoadingTaskCount() > 0) {\n patchState(store, { overlayLoadingTaskCount: store.overlayLoadingTaskCount() - 1 });\n }\n\n if (store.overlayLoadingTaskCount() === 0) {\n const timeoutId = (store as any)._loadingTimeoutId;\n if (timeoutId) {\n clearTimeout(timeoutId);\n (store as any)._loadingTimeoutId = null;\n }\n\n timer(minimumDisplayTime).subscribe(() => {\n if (store.overlayLoadingTaskCount() === 0) {\n patchState(store, { overlayLoading: false });\n }\n });\n }\n }\n };\n\n\n const _setNavigationLoading = (value: boolean, delay?: number) => {\n if (value) {\n patchState(store, { navigationLoadingTaskCount: store.navigationLoadingTaskCount() + 1 });\n patchState(store, { navigationLoading: true });\n } else {\n if (store.navigationLoadingTaskCount() > 0) {\n patchState(store, { navigationLoadingTaskCount: store.navigationLoadingTaskCount() - 1 });\n }\n if (store.navigationLoadingTaskCount() === 0) {\n timer(minimumDisplayTime).subscribe(() => {\n if (store.navigationLoadingTaskCount() === 0) {\n patchState(store, { navigationLoading: false });\n }\n });\n }\n }\n }\n\n\n\n // Helper method to apply a cached theme palette\n const _applyThemePalette = async (name: string): Promise<void> => {\n // TODO: Get the path from the palette provider token\n const path = `/assets/themes/palettes/css/${name}.css`;\n // Check if the current theme is already applied\n const existingStyle = document.querySelector<HTMLStyleElement>(`style[data-theme=\"${name}\"]`);\n if (existingStyle) {\n return; // Theme is already applied, no need to reapply\n }\n\n _setNavigationLoading(true);\n\n try {\n // Fetch the CSS file via HttpClient\n const cssText = await firstValueFrom(http.get(path!, { responseType: 'text' }));\n\n // Create a new <style> tag and apply the CSS\n const style = document.createElement('style');\n style.setAttribute('data-theme', name);\n style.textContent = cssText!;\n document.head.appendChild(style);\n\n // Remove any other outdated theme styles\n document.querySelectorAll<HTMLStyleElement>('style[data-theme]').forEach(existing => {\n if (existing !== style) {\n existing.remove();\n }\n });\n\n } catch (error) {\n console.error(`Error loading theme CSS:`, error);\n } finally {\n _setNavigationLoading(false);\n }\n };\n\n\n const minimumDisplayTime = 500; // milliseconds\n\n return {\n // Change theme and update HTML class\n changeThemeMode(theme: AXPThemeMode) {\n settingService.scope(AXPPlatformScope.User).set(AXPThemeLayoutSetting.Mode, theme);\n patchState(store, { currentMode: theme });\n _updateHtmlClass();\n },\n\n // Open side menu\n openSideMenu() {\n patchState(store, { sideMenuState: AXPSideMenuState.Opened });\n settingService.scope(AXPPlatformScope.User).set(AXPThemeLayoutSetting.SideMenuStatus, AXPSideMenuState.Opened);\n },\n\n // Close side menu\n closeSideMenu() {\n patchState(store, { sideMenuState: AXPSideMenuState.Closed });\n settingService.scope(AXPPlatformScope.User).set(AXPThemeLayoutSetting.SideMenuStatus, AXPSideMenuState.Closed);\n },\n\n // Set side menu width\n setSideMenuWidth(width: number) {\n patchState(store, { sideMenuWidth: width });\n settingService.scope(AXPPlatformScope.User).set(AXPThemeLayoutSetting.SideMenuWidth, width);\n },\n\n // Toggle side menu state\n toggleSideMenu() {\n const newSideMenuState = store.sideMenuState() === AXPSideMenuState.Opened ? AXPSideMenuState.Closed : AXPSideMenuState.Opened;\n patchState(store, { sideMenuState: newSideMenuState });\n settingService.scope(AXPPlatformScope.User).set(AXPThemeLayoutSetting.SideMenuStatus, newSideMenuState);\n },\n\n // Set navigation loading state with a task counter\n setNavigationLoading(value: boolean, delay?: number) {\n _setNavigationLoading(value, delay);\n },\n\n // Set overlay loading state with a task counter\n setOverlayLoading(value: boolean, delay?: number) {\n _setOverlayLoading(value, delay);\n },\n\n async loadSettings() {\n await _applySettings();\n },\n\n // Set up event listener for system theme changes\n _setupSystemColorListener() {\n const mediaQueryList = window.matchMedia('(prefers-color-scheme: dark)');\n const listener = (e: MediaQueryListEvent) => {\n patchState(store, { systemThemeMode: e.matches ? AXPThemeMode.Dark : AXPThemeMode.Light });\n _updateHtmlClass();\n };\n mediaQueryList.addEventListener('change', listener);\n return listener;\n },\n\n // Remove event listener for system theme changes\n _removeSystemColorListener(listener: (e: MediaQueryListEvent) => void) {\n const mediaQueryList = window.matchMedia('(prefers-color-scheme: dark)');\n mediaQueryList.removeEventListener('change', listener);\n },\n\n // Set up event listener for window resize\n _setupResizeListener(): Subscription {\n const subscription = fromEvent(window, 'resize')\n .pipe(\n debounceTime(250) // 250ms debounce delay\n )\n .subscribe(() => {\n _updateScreenSize();\n });\n return subscription;\n },\n\n // Remove event listener for window resize\n _removeResizeListener(subscription: Subscription) {\n if (subscription) {\n subscription.unsubscribe();\n }\n },\n\n };\n }),\n\n // Lifecycle Hooks\n withHooks((store, settingService = inject(AXPSettingService)) => ({\n onInit() {\n //\n settingService.onChanged.pipe(filter(c => c.scope == AXPPlatformScope.User)).subscribe(async (changes) => {\n const keys = Object.values(AXPThemeLayoutSetting);\n if (changes.keys.some((key) => keys.includes(key as any))) {\n await store.loadSettings();\n }\n });\n //\n settingService.onLoaded.subscribe(async () => {\n await store.loadSettings();\n });\n\n // Set up event listener for system theme changes\n const listener = store._setupSystemColorListener();\n patchState(store, { _listener: listener });\n\n // Set up event listener for window resize\n const resizeSubscription = store._setupResizeListener();\n patchState(store, { _resizeListener: resizeSubscription });\n },\n\n onDestroy() {\n // Clean up event listeners when store is destroyed\n const { _listener: listener, _resizeListener: resizeListener } = store;\n if (listener) {\n store._removeSystemColorListener(listener);\n }\n if (resizeListener instanceof Subscription) {\n store._removeResizeListener(resizeListener);\n }\n },\n }))\n);\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { CommonModule } from '@angular/common';\nimport { Component, inject } from '@angular/core';\nimport { AXPLayoutThemeService } from '../theme.service';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPThemeMode } from '../theme.types';\n\n@Component({\n template: `\n <ax-button color=\"primary\">\n <ax-icon\n class=\"fa-regular \"\n [ngClass]=\"{\n 'fa-desktop':store.isSystemMode(),\n 'fa-moon':!store.isSystemMode() && store.isDarkMode(),\n 'fa-brightness':!store.isSystemMode() && !store.isDarkMode(),\n }\"\n >\n </ax-icon>\n <ax-dropdown-panel *translate=\"let t\">\n <ax-button-item-list>\n <ax-button-item\n (onClick)=\"store.changeThemeMode(variants.Light)\"\n [text]=\"(t('theme-modes.light',{scope:'layout'}) | async)!\"\n [selected]=\"!store.isSystemMode() && !store.isDarkMode()\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-brightness\"> </ax-icon>\n </ax-prefix>\n </ax-button-item>\n <ax-button-item\n (onClick)=\"store.changeThemeMode(variants.Dark)\"\n [text]=\"(t('theme-modes.dark',{scope:'layout'}) | async)!\"\n [selected]=\"!store.isSystemMode() && store.isDarkMode()\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-moon\"> </ax-icon>\n </ax-prefix>\n </ax-button-item>\n <ax-button-item\n (onClick)=\"store.changeThemeMode(variants.System)\"\n [text]=\"(t('theme-modes.system',{scope:'layout'}) | async)!\"\n [selected]=\"store.isSystemMode()\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-desktop\"> </ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n `,\n imports: [CommonModule, AXButtonModule, AXDecoratorModule, AXDropdownModule, AXTranslationModule]\n})\nexport class AXPThemeSlotComponent {\n protected store = inject(AXPLayoutThemeService);\n\n protected variants = AXPThemeMode;\n}\n","import { InjectionToken } from '@angular/core';\nimport { AXPThemePalette } from './theme.types';\n\nexport interface AXPThemePaletteProvider {\n getList(): Promise<AXPThemePalette[]>;\n}\n\nexport const AXP_THEME_PALETTE_PROVIDER = new InjectionToken<Promise<AXPThemePaletteProvider>>('AXP_THEME_PALETTE_PROVIDER', {\n providedIn: 'root',\n factory: async () => {\n return new AXPThemePaletteProviderDefault();\n },\n});\n\nexport class AXPThemePaletteProviderDefault implements AXPThemePaletteProvider {\n getList(): Promise<AXPThemePalette[]> {\n return Promise.resolve([\n {\n name: 'default',\n title: 'Default',\n path: '/assets/themes/palletes/default.css',\n colors: {\n primary: '#113b53',\n secondary: '#1a6ab1',\n neutral: '#606c76',\n success: '#2d9c67',\n warning: '#e9a01b',\n danger: '#c02f1d',\n accents: ['#d6a7a6', '#a0897e', '#8bf4d9'],\n dark: '#2a2d30',\n light: '#ffffff',\n },\n },\n ]);\n }\n}\n","import { AXSelectionCdkModule } from '@acorex/cdk/selection';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, inject, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXP_THEME_PALETTE_PROVIDER } from '../../palette.provider';\nimport { AXPThemePalette } from '../../theme.types';\n\n@Component({\n template: `\n @for (palette of palettes(); track palette.name) {\n <div (click)=\"onPaletteClick(palette)\" [class.--selected]=\"palette.name === selectedPalette()?.name\">\n <span>{{ palette.title }}</span>\n <div>\n <div [style.background-color]=\"palette.colors.primary\" class=\"ax-end-7 ax-z-[2]\"></div>\n <div [style.background-color]=\"palette.colors.secondary\" class=\"ax-end-3.5 ax-z-[1]\"></div>\n <div [style.background-color]=\"palette.colors.accents[0]\" class=\"ax-end-0 ax-z-0\"></div>\n </div>\n </div>\n }\n `,\n styleUrl: './theme-palette-chooser-widget.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, FormsModule, AXSelectionCdkModule],\n})\nexport class AXPThemePaletteChooserWidgetComponent extends AXPValueWidgetComponent<string> {\n private readonly paletteService = inject(AXP_THEME_PALETTE_PROVIDER);\n protected readonly palettes = signal<AXPThemePalette[]>([]);\n protected selectedPalette = signal<AXPThemePalette | null>(null);\n\n #eff = effect(() => {\n if (this.getValue()) {\n this.selectedPalette.set(\n this.palettes().find((p) => p.name === this.getValue()) ??\n this.palettes().find((p) => p.name === 'default') ??\n this.palettes()[0],\n );\n }\n });\n\n override async ngOnInit(): Promise<void> {\n super.ngOnInit();\n const palletsProviderInstance = await this.paletteService;\n this.palettes.set(await palletsProviderInstance.getList());\n }\n\n protected onPaletteClick(palette: AXPThemePalette) {\n this.setValue(palette.name);\n }\n}\n","import { AXP_WIDGETS_LAYOUT_CATEGORY, AXPWidgetConfig } from '@acorex/platform/layout/builder';\nimport { AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY } from '@acorex/platform/widgets';\n\nexport const AXPThemePaletteChooserWidget: AXPWidgetConfig = {\n name: \"theme-palette-chooser\",\n title: \"Theme Palette Chooser\",\n icon: \"fa-solid fa-square\",\n type: 'editor',\n categories: AXP_WIDGETS_LAYOUT_CATEGORY,\n properties: [\n AXP_NAME_PROPERTY,\n AXP_DATA_PATH_PROPERTY,\n AXP_DISABLED_PROPERTY,\n ],\n components: {\n edit: {\n component: () => import('./theme-palette-chooser-widget.component').then((c) => c.AXPThemePaletteChooserWidgetComponent),\n },\n }\n}\n\ndeclare module '@acorex/platform/layout/builder' {\n interface AXPWidgetTypesMap {\n themePaletteChooser: 'theme-palette-chooser';\n }\n}","import { AXSelectionCdkModule } from '@acorex/cdk/selection';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXPThemeMode } from '../../theme.types';\n\ninterface ThemeModeOption {\n id: AXPThemeMode;\n icon: string;\n}\n\n@Component({\n template: `\n @for (mode of modes(); track mode.id) {\n <div (click)=\"onModeClick(mode)\" [class.--selected]=\"mode.id === selectedMode()?.id\">\n <div>\n <i [class]=\"mode.icon\"></i>\n </div>\n <span>{{ 'theme-modes.' + mode.id | translate: { scope: 'layout' } | async }}</span>\n </div>\n }\n `,\n styleUrl: './theme-mode-chooser-widget.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, FormsModule, AXSelectionCdkModule, AXTranslationModule],\n})\nexport class AXPThemeModeChooserWidgetComponent extends AXPValueWidgetComponent<string> {\n protected readonly modes = signal<ThemeModeOption[]>([\n { id: AXPThemeMode.Light, icon: 'fa-light fa-brightness' },\n { id: AXPThemeMode.Dark, icon: 'fa-light fa-moon' },\n { id: AXPThemeMode.System, icon: 'fa-light fa-desktop' },\n ]);\n\n protected selectedMode = signal<ThemeModeOption | null>(null);\n\n #eff = effect(() => {\n if (this.getValue()) {\n this.selectedMode.set(this.modes().find((m) => m.id === this.getValue()) ?? this.modes()[0]);\n }\n });\n\n protected onModeClick(mode: ThemeModeOption) {\n this.setValue(mode.id);\n }\n}\n","import { AXP_WIDGETS_LAYOUT_CATEGORY, AXPWidgetConfig } from '@acorex/platform/layout/builder';\nimport { AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY } from '@acorex/platform/widgets';\n\nexport const AXPThemeModeChooserWidget: AXPWidgetConfig = {\n name: \"theme-mode-chooser\",\n title: \"Theme Mode Chooser\",\n icon: \"fa-solid fa-square\",\n type: 'editor',\n categories: AXP_WIDGETS_LAYOUT_CATEGORY,\n properties: [\n AXP_NAME_PROPERTY,\n AXP_DATA_PATH_PROPERTY,\n AXP_DISABLED_PROPERTY,\n ],\n components: {\n edit: {\n component: () => import('./theme-mode-chooser-widget.component').then((c) => c.AXPThemeModeChooserWidgetComponent),\n },\n }\n}\n\ndeclare module '@acorex/platform/layout/builder' {\n interface AXPWidgetTypesMap {\n themeModeChooser: 'theme-mode-chooser';\n }\n}","import { AXSelectionCdkModule } from '@acorex/cdk/selection';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\ninterface MenuOrientationOption {\n id: string;\n icon: string;\n}\n\n@Component({\n template: `\n @for (orientation of orientations(); track orientation.id) {\n <div (click)=\"onOrientationClick(orientation)\" [class.--selected]=\"orientation.id === selectedOrientation()?.id\">\n <div>\n <i [class]=\"orientation.icon\"></i>\n </div>\n <span>{{ 'menu-modes.' + orientation.id | translate: { scope: 'layout' } | async }}</span>\n </div>\n }\n `,\n styleUrl: './menu-orientation-chooser-widget.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, FormsModule, AXSelectionCdkModule, AXTranslationModule],\n})\nexport class AXPMenuOrientationChooserWidgetComponent extends AXPValueWidgetComponent<string> {\n protected readonly orientations = signal<MenuOrientationOption[]>([\n { id: 'vertical', icon: 'fa-regular fa-square-ellipsis-vertical' },\n { id: 'horizontal', icon: 'fa-regular fa-square-ellipsis' },\n ]);\n\n protected selectedOrientation = signal<MenuOrientationOption | null>(null);\n\n #eff = effect(() => {\n if (this.getValue()) {\n this.selectedOrientation.set(this.orientations().find((o) => o.id === this.getValue()) ?? this.orientations()[0]);\n }\n });\n\n protected onOrientationClick(orientation: MenuOrientationOption) {\n this.setValue(orientation.id);\n }\n}\n","import { AXP_WIDGETS_LAYOUT_CATEGORY, AXPWidgetConfig } from '@acorex/platform/layout/builder';\nimport { AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY } from '@acorex/platform/widgets';\n\nexport const AXPMenuOrientationChooserWidget: AXPWidgetConfig = {\n name: \"menu-orientation-chooser\",\n title: \"Menu Orientation Chooser\",\n icon: \"fa-light fa-bars-staggered\",\n type: 'editor',\n categories: AXP_WIDGETS_LAYOUT_CATEGORY,\n properties: [\n AXP_NAME_PROPERTY,\n AXP_DATA_PATH_PROPERTY,\n AXP_DISABLED_PROPERTY,\n ],\n components: {\n edit: {\n component: () => import('./menu-orientation-chooser-widget.component').then((c) => c.AXPMenuOrientationChooserWidgetComponent),\n },\n }\n}\n\ndeclare module '@acorex/platform/layout/builder' {\n interface AXPWidgetTypesMap {\n menuOrientationChooser: 'menu-orientation-chooser';\n }\n} ","import { AXSelectionCdkModule } from '@acorex/cdk/selection';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\ninterface FontStyleOption {\n id: string;\n title: string;\n}\n\n@Component({\n template: `\n @for (font of fonts(); track font.id) {\n <div\n (click)=\"onFontClick(font)\"\n [class.--selected]=\"font.id === selectedFont()?.id\"\n [style.font-family]=\"font.id\"\n >\n <div>\n <span>{{ font.title }}</span>\n </div>\n </div>\n }\n `,\n styleUrl: './font-style-chooser-widget.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, FormsModule, AXSelectionCdkModule],\n})\nexport class AXPFontStyleChooserWidgetComponent extends AXPValueWidgetComponent<string> {\n protected readonly fonts = signal<FontStyleOption[]>([\n { id: 'system-ui', title: 'Default' },\n { id: 'serif', title: 'Serif' },\n { id: 'sans-serif', title: 'Sans-serif' },\n { id: 'monospace', title: 'Monospace' },\n { id: 'arial', title: 'Arial' },\n { id: 'verdana', title: 'Verdana' },\n { id: 'tahoma', title: 'Tahoma' },\n { id: 'times-new-roman', title: 'Times New Roman' },\n { id: 'georgia', title: 'Georgia' },\n { id: 'helvetica', title: 'Helvetica' },\n { id: 'calibri', title: 'Calibri' },\n { id: 'cursive', title: 'Cursive' },\n { id: 'vazirmatn', title: 'Vazir وزیر' },\n ]);\n\n protected selectedFont = signal<FontStyleOption | null>(null);\n\n #eff = effect(() => {\n if (this.getValue()) {\n this.selectedFont.set(this.fonts().find((f) => f.id === this.getValue()) ?? this.fonts()[0]);\n }\n });\n\n protected onFontClick(font: FontStyleOption) {\n this.setValue(font.id);\n }\n}\n","import { AXP_WIDGETS_LAYOUT_CATEGORY, AXPWidgetConfig } from '@acorex/platform/layout/builder';\nimport { AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY } from '@acorex/platform/widgets';\n\nexport const AXPFontStyleChooserWidget: AXPWidgetConfig = {\n name: \"font-style-chooser\",\n title: \"Font Style Chooser\",\n icon: \"fa-light fa-font\",\n type: 'editor',\n categories: AXP_WIDGETS_LAYOUT_CATEGORY,\n properties: [\n AXP_NAME_PROPERTY,\n AXP_DATA_PATH_PROPERTY,\n AXP_DISABLED_PROPERTY,\n ],\n components: {\n edit: {\n component: () => import('./font-style-chooser-widget.component').then((c) => c.AXPFontStyleChooserWidgetComponent),\n },\n }\n}\n\ndeclare module '@acorex/platform/layout/builder' {\n interface AXPWidgetTypesMap {\n fontStyleChooser: 'font-style-chooser';\n }\n} ","import { AXSelectionCdkModule } from '@acorex/cdk/selection';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n template: `\n @for (size of sizes(); track size) {\n <div (click)=\"onSizeClick(size)\" [style.font-size]=\"size\" [class.--selected]=\"size === selectedSize()\">\n <div>\n <span>{{ 'font-sizes.' + size | translate: { scope: 'layout' } | async }}</span>\n </div>\n </div>\n }\n `,\n styleUrl: './font-size-chooser-widget.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, FormsModule, AXSelectionCdkModule, AXTranslationModule],\n})\nexport class AXPFontSizeChooserWidgetComponent extends AXPValueWidgetComponent<string> {\n protected readonly sizes = signal<string[]>(['small', 'medium', 'large', 'x-large']);\n\n protected selectedSize = signal<string | null>(null);\n\n #eff = effect(() => {\n if (this.getValue()) {\n this.selectedSize.set(this.sizes().find((s) => s === this.getValue()) ?? this.sizes()[0]);\n }\n });\n\n protected onSizeClick(size: string) {\n this.setValue(size);\n }\n}\n","import { AXP_WIDGETS_LAYOUT_CATEGORY, AXPWidgetConfig } from '@acorex/platform/layout/builder';\nimport { AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY } from '@acorex/platform/widgets';\n\nexport const AXPFontSizeChooserWidget: AXPWidgetConfig = {\n name: \"font-size-chooser\",\n title: \"Font Size Chooser\",\n icon: \"fa-light fa-text-size\",\n type: 'editor',\n categories: AXP_WIDGETS_LAYOUT_CATEGORY,\n properties: [\n AXP_NAME_PROPERTY,\n AXP_DATA_PATH_PROPERTY,\n AXP_DISABLED_PROPERTY,\n ],\n components: {\n edit: {\n component: () => import('./font-size-chooser-widget.component').then((c) => c.AXPFontSizeChooserWidgetComponent),\n },\n }\n}\n\ndeclare module '@acorex/platform/layout/builder' {\n interface AXPWidgetTypesMap {\n fontSizeChooser: 'font-size-chooser';\n }\n} ","import { AXP_SETTING_DEFINITION_PROVIDER } from '@acorex/platform/common';\nimport { inject, Injector, NgModule } from '@angular/core';\nimport { AXPThemeSlotComponent } from './slots/theme-slot.component';\nimport { AXPLayoutThemeService } from './theme.service';\nimport { AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';\nimport { AXPThemePaletteChooserWidget } from './widgets/theme-palette-chooser';\nimport { AXPThemeModeChooserWidget } from './widgets/theme-mode-chooser';\nimport { AXPMenuOrientationChooserWidget } from './widgets/menu-orientation-chooser';\nimport { AXPFontStyleChooserWidget } from './widgets/font-style-chooser';\nimport { AXPFontSizeChooserWidget } from './widgets/font-size-chooser';\nimport { AXPAppStartUpService } from '@acorex/platform/core';\nimport { AXPComponentSlotModule } from '@acorex/platform/layout/components';\n@NgModule({\n imports: [\n AXPComponentSlotModule.forRoot({\n 'root-header-end': [\n {\n priority: 50,\n name: 'theme',\n component: AXPThemeSlotComponent,\n },\n ],\n }),\n AXPLayoutBuilderModule.forChild({\n widgets: [\n AXPThemePaletteChooserWidget,\n AXPThemeModeChooserWidget,\n AXPMenuOrientationChooserWidget,\n AXPFontSizeChooserWidget,\n AXPFontStyleChooserWidget\n ]\n })\n ],\n exports: [],\n declarations: [],\n providers: [\n {\n provide: AXP_SETTING_DEFINITION_PROVIDER,\n useFactory: async () => {\n const injector = inject(Injector);\n const provider = (await import('./settings.provider')).AXPThemeSettingProvider;\n return new provider(injector);\n },\n multi: true\n }\n ],\n})\nexport class AXPThemesSharedModule {\n constructor(\n appInitService: AXPAppStartUpService,\n injector: Injector\n ) {\n const service = injector.get(AXPLayoutThemeService);\n appInitService.registerTask({\n name: 'layout-theme',\n statusText: 'Applying layout theme settings ...',\n priority: 100,\n run: async () => {\n await service.loadSettings();\n }\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i5","i2","i1","i3"],"mappings":"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"}