@acorex/platform 21.0.0-next.34 → 21.0.0-next.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/acorex-platform-common.mjs +19 -1
- package/fesm2022/acorex-platform-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-core.mjs +11 -172
- package/fesm2022/acorex-platform-core.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-builder.mjs +7 -8
- package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-components.mjs +39 -29
- package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-designer.mjs +8 -9
- package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-entity.mjs +468 -255
- package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-views.mjs +171 -86
- package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-widget-core.mjs +36 -13
- package/fesm2022/acorex-platform-layout-widget-core.mjs.map +1 -1
- package/fesm2022/{acorex-platform-layout-widgets-file-list-popup.component-9uCkMxcc.mjs → acorex-platform-layout-widgets-file-list-popup.component-CDYAGBku.mjs} +5 -60
- package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-CDYAGBku.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-widgets.mjs +101 -128
- package/fesm2022/acorex-platform-layout-widgets.mjs.map +1 -1
- package/fesm2022/acorex-platform-themes-default.mjs +16 -4
- package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
- package/fesm2022/acorex-platform-workflow.mjs +25 -5
- package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
- package/package.json +1 -1
- package/types/acorex-platform-common.d.ts +11 -6
- package/types/acorex-platform-core.d.ts +56 -101
- package/types/acorex-platform-layout-builder.d.ts +0 -1
- package/types/acorex-platform-layout-components.d.ts +4 -3
- package/types/acorex-platform-layout-designer.d.ts +1 -1
- package/types/acorex-platform-layout-entity.d.ts +36 -30
- package/types/acorex-platform-layout-views.d.ts +31 -29
- package/types/acorex-platform-layout-widget-core.d.ts +30 -14
- package/types/acorex-platform-layout-widgets.d.ts +17 -11
- package/types/acorex-platform-themes-default.d.ts +1 -0
- package/types/acorex-platform-workflow.d.ts +28 -51
- package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-9uCkMxcc.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-core.mjs","sources":["../../../../libs/platform/core/src/lib/activity-log/activity-log.service.ts","../../../../libs/platform/core/src/lib/activity-log/activity-log.provider.ts","../../../../libs/platform/core/src/lib/color-palette/color-palette.provider.ts","../../../../libs/platform/core/src/lib/color-palette/color-palette.service.ts","../../../../libs/platform/core/src/lib/color-palette/color-palette.types.ts","../../../../libs/platform/core/src/lib/color-palette/default-palettes.provider.ts","../../../../libs/platform/core/src/lib/column-width/column-width.provider.ts","../../../../libs/platform/core/src/lib/column-width/column-width.service.ts","../../../../libs/platform/core/src/lib/column-width/column-width.types.ts","../../../../libs/platform/core/src/lib/column-width/default-column-width.provider.ts","../../../../libs/platform/core/src/lib/component-slot/component-slot.types.ts","../../../../libs/platform/core/src/lib/utils/object-util.ts","../../../../libs/platform/core/src/lib/context/context-store.service.ts","../../../../libs/platform/core/src/lib/expression-evaluator/expression-evaluator-scope-provider.service.ts","../../../../libs/platform/core/src/lib/expression-evaluator/expression-evaluator.service.ts","../../../../libs/platform/core/src/lib/component-slot/component-slot-placeholder.component.ts","../../../../libs/platform/core/src/lib/component-slot/component-slot-registery.service.ts","../../../../libs/platform/core/src/lib/component-slot/component-slot.directive.ts","../../../../libs/platform/core/src/lib/component-slot/component-slot.module.ts","../../../../libs/platform/core/src/lib/data/data-generator.ts","../../../../libs/platform/core/src/lib/data/value-transformer.ts","../../../../libs/platform/core/src/lib/data/datasource-definition-provider.service.ts","../../../../libs/platform/core/src/lib/directives/content-checker.directive.ts","../../../../libs/platform/core/src/lib/directives/dbl-click.directive.ts","../../../../libs/platform/core/src/lib/directives/element-data.directive.ts","../../../../libs/platform/core/src/lib/directives/grid-layout.directive.ts","../../../../libs/platform/core/src/lib/distributed-events/distributed-event-listener.provider.ts","../../../../libs/platform/core/src/lib/distributed-events/distributed-event-listener.service.ts","../../../../libs/platform/core/src/lib/event-service/event.service.ts","../../../../libs/platform/core/src/lib/hook/utill.service.ts","../../../../libs/platform/core/src/lib/module-manifest/module-manifest.types.ts","../../../../libs/platform/core/src/lib/module-manifest/provider-interfaces.ts","../../../../libs/platform/core/src/lib/module-manifest/feature-definition.provider.ts","../../../../libs/platform/core/src/lib/module-manifest/module-manifest.registry.ts","../../../../libs/platform/core/src/lib/module-manifest/module-manifests.datasource.ts","../../../../libs/platform/core/src/lib/startup/app-startup.service.ts","../../../../libs/platform/core/src/lib/module-manifest/module-manifest.module.ts","../../../../libs/platform/core/src/lib/multi-language-string/resolve-axp-multi-language-string.ts","../../../../libs/platform/core/src/lib/multi-language-string/axp-multi-language-string-resolver.service.ts","../../../../libs/platform/core/src/lib/multi-language-string/axp-resolve-multi-language-string.pipe.ts","../../../../libs/platform/core/src/lib/multi-language-string/compare-axp-multi-language-string.ts","../../../../libs/platform/core/src/lib/tags/tag.types.ts","../../../../libs/platform/core/src/lib/tags/tag.provider.ts","../../../../libs/platform/core/src/lib/tags/tag.service.ts","../../../../libs/platform/core/src/lib/types/actions.types.ts","../../../../libs/platform/core/src/lib/types/core.types.ts","../../../../libs/platform/core/src/lib/types/data.types.ts","../../../../libs/platform/core/src/lib/types/interactive.types.ts","../../../../libs/platform/core/src/lib/types/logo.types.ts","../../../../libs/platform/core/src/lib/types/scope.types.ts","../../../../libs/platform/core/src/lib/types/export.types.ts","../../../../libs/platform/core/src/lib/utils/countdown-timer.ts","../../../../libs/platform/core/src/lib/utils/data-conditioner.ts","../../../../libs/platform/core/src/lib/utils/device.service.ts","../../../../libs/platform/core/src/lib/utils/highlighter.ts","../../../../libs/platform/core/src/lib/utils/provider.util.ts","../../../../libs/platform/core/src/lib/utils/string.ts","../../../../libs/platform/core/src/acorex-platform-core.ts"],"sourcesContent":["import { inject, Injectable, InjectionToken } from '@angular/core';\nimport { AXPActivityLogProvider } from './activity-log.provider';\nimport { AXPActivityLog } from './activity-log.types';\n\nexport const AXP_ACTIVITY_LOG_PROVIDER = new InjectionToken<AXPActivityLogProvider[]>('AXP_ACTIVITY_LOGS_PROVIDER');\n\n@Injectable({ providedIn: 'root' })\nexport class AXPActivityLogService {\n private providers = inject(AXP_ACTIVITY_LOG_PROVIDER, { optional: true });\n\n async getHistory(refId: string, refType: string, options?: { from?: Date; to?: Date; limit?: number; offset?: number }): Promise<AXPActivityLog[]> {\n return (await Promise.all(this.providers?.map((p) => p.getHistory(refId, refType, options)) ?? [])).flat();\n\n }\n\n async getHistoryByIds(refId: string, refType: string, ids: string[]): Promise<AXPActivityLog[]> {\n return (await Promise.all(this.providers?.map((p) => p.getHistoryByIds(refId, refType, ids)) ?? [])).flat();\n }\n}","import { AXPActivityLog } from './activity-log.types';\n\nexport abstract class AXPActivityLogProvider {\n abstract getHistory(refId: string, refType: string, options?: { from?: Date; to?: Date; limit?: number; offset?: number }): Promise<AXPActivityLog[]>;\n abstract getHistoryByIds(refId: string, refType: string, ids: string[]): Promise<AXPActivityLog[]>;\n}","import { InjectionToken } from '@angular/core';\nimport { AXPColorPalette } from './color-palette.types';\n\n//#region ---- Color Palette Provider ----\n\n/**\n * Abstract class for color palette providers\n * Implement this to provide palettes from different sources (system, app, module, etc.)\n */\nexport abstract class AXPColorPaletteProvider {\n /**\n * Unique name for this provider (e.g., 'system', 'app', 'module')\n */\n abstract name: string;\n\n /**\n * Provide color palettes from this source\n * @returns Promise of palettes\n */\n abstract provide(): Promise<AXPColorPalette[]>;\n}\n\n/**\n * Injection token for color palette providers\n * Use this to register multiple palette providers\n */\nexport const AXP_COLOR_PALETTE_PROVIDER = new InjectionToken<AXPColorPaletteProvider[]>(\n 'AXP_COLOR_PALETTE_PROVIDER',\n);\n\n//#endregion\n\n","import { inject, Injectable } from '@angular/core';\nimport { AXP_COLOR_PALETTE_PROVIDER, AXPColorPaletteProvider } from './color-palette.provider';\nimport { AXPColorPalette, AXPColorPaletteFilterOptions } from './color-palette.types';\n\n//#region ---- Color Palette Service ----\n\n/**\n * Service for managing color palettes from multiple providers\n * Aggregates palettes from all registered providers\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class AXPColorPaletteService {\n //#region ---- Dependencies ----\n\n private providers: AXPColorPaletteProvider[] = inject(AXP_COLOR_PALETTE_PROVIDER, { optional: true }) ?? [];\n\n //#endregion\n\n //#region ---- State ----\n\n private cache: AXPColorPalette[] | null = null;\n\n //#endregion\n\n //#region ---- Public API ----\n\n /**\n * Get all palettes from all providers\n * @param options Filter options\n * @returns Promise of palettes\n */\n async getPalettes(options?: AXPColorPaletteFilterOptions): Promise<AXPColorPalette[]> {\n if (!this.cache) {\n await this.loadPalettes();\n }\n\n let palettes = this.cache!;\n\n // Apply category filter\n if (options?.category) {\n palettes = palettes.filter((palette) => palette.category === options.category);\n }\n\n // Apply search filter\n if (options?.search) {\n const searchLower = options.search.toLowerCase();\n palettes = palettes.filter(\n (palette) =>\n palette.name.toLowerCase().includes(searchLower) ||\n palette.title.toLowerCase().includes(searchLower) ||\n palette.description?.toLowerCase().includes(searchLower),\n );\n }\n\n return palettes;\n }\n\n /**\n * Get a palette by name\n * @param name The unique name of the palette\n * @returns Promise of palette or undefined if not found\n */\n async getPalette(name: string): Promise<AXPColorPalette | undefined> {\n if (!this.cache) {\n await this.loadPalettes();\n }\n\n return this.cache!.find((p) => p.name === name);\n }\n\n /**\n * Get palettes by category\n * @param category The category to filter by\n * @returns Promise of palettes in the specified category\n */\n async getByCategory(category: string): Promise<AXPColorPalette[]> {\n return this.getPalettes({ category });\n }\n\n /**\n * Check if a palette exists\n * @param name The unique name of the palette\n * @returns Promise of true if the palette exists\n */\n async has(name: string): Promise<boolean> {\n const palette = await this.getPalette(name);\n return palette !== undefined;\n }\n\n /**\n * Reload palettes from all providers\n */\n async reload(): Promise<void> {\n this.cache = null;\n await this.loadPalettes();\n }\n\n /**\n * Get the default palette (material-design) or fallback colors\n * @returns Promise of default palette, never returns undefined\n */\n async getDefaultPalette(): Promise<AXPColorPalette> {\n const defaultPalette = await this.getPalette('material-design');\n if (defaultPalette) {\n return defaultPalette;\n }\n\n // Fallback to hardcoded material design colors if provider fails\n return {\n name: 'material-design',\n title: 'Material Design',\n category: 'material',\n description: 'Google Material Design color palette',\n colors: [\n '#F44336', // Red\n '#E91E63', // Pink\n '#9C27B0', // Purple\n '#673AB7', // Deep Purple\n '#3F51B5', // Indigo\n '#2196F3', // Blue\n '#03A9F4', // Light Blue\n '#00BCD4', // Cyan\n '#009688', // Teal\n '#4CAF50', // Green\n '#8BC34A', // Light Green\n '#CDDC39', // Lime\n '#FFEB3B', // Yellow\n '#FFC107', // Amber\n '#FF9800', // Orange\n '#FF5722', // Deep Orange\n ],\n };\n }\n\n //#endregion\n\n //#region ---- Private Methods ----\n\n /**\n * Load palettes from all providers\n */\n private async loadPalettes(): Promise<void> {\n const allPalettes: AXPColorPalette[] = [];\n\n for (const provider of this.providers) {\n try {\n const palettes = await provider.provide();\n allPalettes.push(...palettes);\n } catch (error) {\n console.error(`Error loading palettes from provider ${provider.name}:`, error);\n }\n }\n\n // Remove duplicates based on name\n const uniquePalettes = allPalettes.filter(\n (palette, index, self) => index === self.findIndex((p) => p.name === palette.name),\n );\n\n this.cache = uniquePalettes;\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- Color Palette Types ----\n\n/**\n * Represents a color palette with a unique identifier and collection of colors\n */\nexport interface AXPColorPalette {\n /**\n * Unique identifier for the palette\n * @example 'material-design', 'brand-colors', 'pastel-theme'\n */\n name: string;\n\n /**\n * Display title for the palette\n * @example 'Material Design', 'Brand Colors', 'Pastel Theme'\n */\n title: string;\n\n /**\n * Array of color codes in any valid CSS color format\n * @example ['#FF6B6B', '#4ECDC4', 'rgb(255, 107, 107)']\n */\n colors: string[];\n\n /**\n * Optional description of the palette\n */\n description?: string;\n\n /**\n * Optional category for grouping palettes\n * @example 'brand', 'material', 'theme', 'custom'\n */\n category?: string;\n}\n\n/**\n * Options for filtering color palettes\n */\nexport interface AXPColorPaletteFilterOptions {\n category?: string;\n search?: string;\n}\n\n//#endregion\n\n","import { Injectable } from '@angular/core';\nimport { AXPColorPaletteProvider } from './color-palette.provider';\nimport { AXPColorPalette } from './color-palette.types';\n\n//#region ---- Default System Palettes Provider ----\n\n/**\n * Default system color palette provider\n * Provides built-in color palettes\n */\n@Injectable()\nexport class AXPDefaultColorPalettesProvider extends AXPColorPaletteProvider {\n name = 'system';\n\n async provide(): Promise<AXPColorPalette[]> {\n return [\n {\n name: 'material-design',\n title: 'Material Design',\n category: 'material',\n description: 'Google Material Design color palette',\n colors: [\n '#F44336', // Red\n '#E91E63', // Pink\n '#9C27B0', // Purple\n '#673AB7', // Deep Purple\n '#3F51B5', // Indigo\n '#2196F3', // Blue\n '#03A9F4', // Light Blue\n '#00BCD4', // Cyan\n '#009688', // Teal\n '#4CAF50', // Green\n '#8BC34A', // Light Green\n '#CDDC39', // Lime\n '#FFEB3B', // Yellow\n '#FFC107', // Amber\n '#FF9800', // Orange\n '#FF5722', // Deep Orange\n ],\n },\n {\n name: 'pastel',\n title: 'Pastel Colors',\n category: 'theme',\n description: 'Soft pastel color palette',\n colors: [\n '#FFB3BA', // Light Pink\n '#FFDFBA', // Light Peach\n '#FFFFBA', // Light Yellow\n '#BAFFC9', // Light Green\n '#BAE1FF', // Light Blue\n '#E0BBE4', // Light Purple\n '#FFDFD3', // Light Coral\n '#D4F1F4', // Light Cyan\n ],\n },\n {\n name: 'vibrant',\n title: 'Vibrant Colors',\n category: 'theme',\n description: 'Bold and vibrant color palette',\n colors: [\n '#FF6B6B', // Vibrant Red\n '#4ECDC4', // Vibrant Teal\n '#45B7D1', // Vibrant Blue\n '#FFA07A', // Vibrant Salmon\n '#98D8C8', // Vibrant Mint\n '#F7DC6F', // Vibrant Yellow\n '#BB8FCE', // Vibrant Purple\n '#85C1E2', // Vibrant Sky Blue\n ],\n },\n {\n name: 'earth-tones',\n title: 'Earth Tones',\n category: 'theme',\n description: 'Natural earth tone color palette',\n colors: [\n '#8B4513', // Saddle Brown\n '#A0522D', // Sienna\n '#D2691E', // Chocolate\n '#CD853F', // Peru\n '#DEB887', // Burlywood\n '#F5DEB3', // Wheat\n '#556B2F', // Dark Olive Green\n '#6B8E23', // Olive Drab\n ],\n },\n {\n name: 'monochrome',\n title: 'Monochrome',\n category: 'theme',\n description: 'Grayscale color palette',\n colors: [\n '#000000', // Black\n '#262626', // Very Dark Gray\n '#404040', // Dark Gray\n '#595959', // Medium Dark Gray\n '#737373', // Medium Gray\n '#8C8C8C', // Light Medium Gray\n '#A6A6A6', // Light Gray\n '#BFBFBF', // Very Light Gray\n '#D9D9D9', // Lighter Gray\n '#F2F2F2', // Almost White\n '#FFFFFF', // White\n ],\n },\n ];\n }\n}\n\n//#endregion\n\n","import { InjectionToken } from '@angular/core';\nimport { AXPColumnWidthProvider } from './column-width.types';\n\n//#region ---- Column Width Provider ----\n\n/**\n * Injection token for column width providers\n * Use this to register multiple column width providers with multi: true\n *\n * @example\n * ```typescript\n * providers: [\n * {\n * provide: AXP_COLUMN_WIDTH_PROVIDER,\n * useValue: {\n * matchers: [\n * { name: 'title', width: '300px', priority: 10 },\n * { widgetType: /text-box/i, width: '200px' }\n * ],\n * priority: 150\n * },\n * multi: true\n * }\n * ]\n * ```\n */\nexport const AXP_COLUMN_WIDTH_PROVIDER = new InjectionToken<AXPColumnWidthProvider[]>(\n 'AXP_COLUMN_WIDTH_PROVIDER'\n);\n\n//#endregion\n","import { inject, Injectable } from '@angular/core';\nimport { AXP_COLUMN_WIDTH_PROVIDER } from './column-width.provider';\nimport {\n AXPColumnWidthMatcher,\n AXPColumnWidthProvider,\n ColumnWidthValue,\n IColumnWithWidth,\n} from './column-width.types';\n\n//#region ---- Column Width Service ----\n\n/**\n * Service for resolving column widths based on registered providers\n * Supports matching by column name (priority) and widget type (fallback)\n * Uses multi-provider pattern for extensibility\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class AXPColumnWidthService {\n //#region ---- Services & Dependencies ----\n\n private readonly providers: AXPColumnWidthProvider[] = inject(AXP_COLUMN_WIDTH_PROVIDER, {\n optional: true,\n }) ?? [];\n\n //#region ---- Public Methods ----\n\n /**\n * Resolve width for a column based on registered providers\n * Only returns a width if column doesn't already have one set\n *\n * @param column Column to resolve width for\n * @returns Resolved width string (normalized) or undefined if no match or column already has width\n */\n resolveWidth(column: IColumnWithWidth): string | undefined {\n // If column already has a width set, don't override\n const existingWidth = column.width || column.options?.width;\n if (existingWidth) {\n return undefined;\n }\n\n // Get widget type from column (support both widget.type and showAs.type)\n const widgetType = column.widget?.type || column.showAs?.type;\n\n // Collect all matchers from all providers\n const allMatchers = this.collectMatchers();\n\n // Try name-based matches first (higher priority)\n const nameMatch = this.findNameMatch(column.name, allMatchers);\n if (nameMatch) {\n return this.normalizeWidth(nameMatch.width);\n }\n\n // Fallback to widget-type matches (case-insensitive)\n if (widgetType) {\n const widgetMatch = this.findWidgetTypeMatch(widgetType, allMatchers);\n if (widgetMatch) {\n return this.normalizeWidth(widgetMatch.width);\n }\n }\n\n return undefined;\n }\n\n /**\n * Apply resolved width to a column (mutates the column)\n * Only applies if column doesn't already have a width\n *\n * @param column Column to apply width to\n * @returns true if width was applied, false if column already had width or no match found\n */\n applyWidth(column: IColumnWithWidth): boolean {\n const width = this.resolveWidth(column);\n if (!width) {\n return false;\n }\n\n // Apply to the appropriate property\n if (column.options) {\n column.options.width = width;\n } else {\n column.width = width;\n }\n\n return true;\n }\n\n //#endregion\n\n //#region ---- Private Methods ----\n\n /**\n * Collect all matchers from all providers, sorted by provider priority and matcher priority\n */\n private collectMatchers(): Array<{ matcher: AXPColumnWidthMatcher; providerPriority: number }> {\n const allMatchers: Array<{ matcher: AXPColumnWidthMatcher; providerPriority: number }> = [];\n\n for (const provider of this.providers) {\n const providerPriority = provider.priority ?? 100;\n for (const matcher of provider.matchers) {\n allMatchers.push({\n matcher,\n providerPriority,\n });\n }\n }\n\n // Sort by provider priority (descending), then by matcher priority (descending)\n allMatchers.sort((a, b) => {\n if (a.providerPriority !== b.providerPriority) {\n return b.providerPriority - a.providerPriority; // Higher priority first\n }\n const priorityA = a.matcher.priority ?? 0;\n const priorityB = b.matcher.priority ?? 0;\n return priorityB - priorityA; // Higher priority first\n });\n\n return allMatchers;\n }\n\n /**\n * Find first matching matcher by column name\n * Name matches take precedence over widget type matches\n */\n private findNameMatch(\n columnName: string,\n allMatchers: Array<{ matcher: AXPColumnWidthMatcher; providerPriority: number }>,\n ): AXPColumnWidthMatcher | undefined {\n for (const { matcher } of allMatchers) {\n if (!matcher.name) {\n continue; // Skip if no name matcher\n }\n\n if (typeof matcher.name === 'string') {\n // Exact string match (case-sensitive for names)\n if (matcher.name === columnName) {\n return matcher;\n }\n } else if (matcher.name instanceof RegExp) {\n // RegExp match\n if (matcher.name.test(columnName)) {\n return matcher;\n }\n }\n }\n\n return undefined;\n }\n\n /**\n * Find first matching matcher by widget type (case-insensitive)\n */\n private findWidgetTypeMatch(\n widgetType: string,\n allMatchers: Array<{ matcher: AXPColumnWidthMatcher; providerPriority: number }>,\n ): AXPColumnWidthMatcher | undefined {\n const widgetTypeLower = widgetType.toLowerCase();\n\n for (const { matcher } of allMatchers) {\n if (!matcher.widgetType) {\n continue; // Skip if no widget type matcher\n }\n\n if (typeof matcher.widgetType === 'string') {\n // Case-insensitive string match\n if (matcher.widgetType.toLowerCase() === widgetTypeLower) {\n return matcher;\n }\n } else if (matcher.widgetType instanceof RegExp) {\n // RegExp match (should already be case-insensitive if needed, but we'll test case-insensitively)\n // Create a new regex with case-insensitive flag if not already present\n let regex = matcher.widgetType;\n if (!regex.flags.includes('i')) {\n regex = new RegExp(regex.source, regex.flags + 'i');\n }\n if (regex.test(widgetType)) {\n return matcher;\n }\n }\n }\n\n return undefined;\n }\n\n /**\n * Normalize width value to string format\n * Numbers are converted to pixels (e.g., 150 -> '150px')\n * Strings are preserved as-is (supports any CSS unit)\n */\n private normalizeWidth(width: ColumnWidthValue): string {\n if (typeof width === 'number') {\n return `${width}px`;\n }\n return width;\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- Column Width Types ----\n\n/**\n * Column width value can be a number (converted to pixels) or a string with any CSS unit\n * @example 150 (becomes '150px'), '300px', '50%', '2rem', '20ch'\n */\nexport type ColumnWidthValue = string | number;\n\n/**\n * Matcher for column name - can be exact string match or RegExp pattern\n * @example 'title', /^user/, /.*name$/i\n */\nexport type ColumnNameMatcher = string | RegExp;\n\n/**\n * Matcher for widget type - can be exact string match or RegExp pattern (case-insensitive)\n * @example 'text-box', /^date/, /.*editor$/i\n */\nexport type WidgetTypeMatcher = string | RegExp;\n\n/**\n * Defines a single width matching rule\n */\nexport interface AXPColumnWidthMatcher {\n /**\n * Match by column name (exact string or RegExp pattern)\n * Takes precedence over widgetType matching\n * @example 'title', /^user/, /.*name$/i\n */\n name?: ColumnNameMatcher;\n\n /**\n * Match by widget type (exact string or RegExp pattern, case-insensitive)\n * Used as fallback when name doesn't match\n * @example 'text-box', /^date/, /.*editor$/i\n */\n widgetType?: WidgetTypeMatcher;\n\n /**\n * Width value to apply if this matcher matches\n * Numbers are converted to pixels (e.g., 150 -> '150px')\n * Strings can include any CSS unit (e.g., '300px', '50%', '2rem')\n */\n width: ColumnWidthValue;\n\n /**\n * Priority for this matcher within the provider (higher = more specific, applied first)\n * Default: 0\n */\n priority?: number;\n}\n\n/**\n * Provider configuration for column width rules\n */\nexport interface AXPColumnWidthProvider {\n /**\n * Array of matchers to evaluate\n * Evaluated in priority order (highest first), then by match type (name before widgetType)\n */\n matchers: AXPColumnWidthMatcher[];\n\n /**\n * Priority for this provider relative to other providers (higher = applied first)\n * Default: 100\n */\n priority?: number;\n}\n\n/**\n * Generic column interface for width resolution\n * Works with any column type that has these properties\n */\nexport interface IColumnWithWidth {\n /**\n * Column name\n */\n name: string;\n\n /**\n * Current width (if already set)\n */\n width?: string;\n\n /**\n * Widget type information (optional)\n */\n widget?: {\n type: string;\n };\n\n /**\n * Additional options that might contain width\n */\n options?: {\n width?: string;\n };\n\n /**\n * For entity columns - showAs configuration\n */\n showAs?: {\n type: string;\n };\n}\n\n//#endregion\n","import { AXPColumnWidthProvider } from './column-width.types';\n\n//#region ---- Default Column Width Provider ----\n\n/**\n * Default column width configuration\n * Migrated from DEFAULT_COLUMN_WIDTHS in column-width.middleware.ts\n * Provides sensible defaults for common column names\n */\nexport const defaultColumnWidthProvider: AXPColumnWidthProvider = {\n priority: 100,\n matchers: [\n // Priority: name-based matches (higher priority = more specific)\n { name: 'code', width: '150px', priority: 10 },\n { name: 'name', width: '250px', priority: 10 },\n { name: 'title', width: '250px', priority: 10 },\n { name: 'description', width: '350px', priority: 10 },\n { name: 'note', width: '350px', priority: 10 },\n { name: 'notes', width: '350px', priority: 10 },\n { name: 'content', width: '500px', priority: 10 },\n { name: 'level', width: '100px', priority: 10 },\n { name: 'order', width: '100px', priority: 10 },\n { name: 'phones', width: '300px', priority: 10 },\n { name: 'emails', width: '300px', priority: 10 },\n ],\n};\n\n//#endregion\n","import { Directive, Type } from '@angular/core';\nimport { AXPContextData } from '../context/context-store.service';\nimport { AXPOptionsData } from '../types';\n\nexport interface AXPComponentSlotConfig {\n name: string;\n priority?: number;\n component?: Type<any>;\n condition?: ((context?: AXPContextData) => boolean | Promise<boolean>) | string;\n features?: string[];\n loadComponent?: () => Type<any> | Promise<Type<any>>;\n options?: AXPOptionsData | (() => AXPOptionsData) | (() => Promise<AXPOptionsData>);\n}\n\nexport interface AXPComponentSlotModuleConfigs {\n [slotName: string]: AXPComponentSlotConfig[];\n}\n\n@Directive()\nexport abstract class AXPComponentSlot {\n host: any;\n}\n","import {\n differenceWith,\n get,\n isArray,\n isEmpty,\n isEqual,\n isNil,\n isObjectLike,\n isPlainObject,\n merge,\n set,\n transform,\n union,\n} from 'lodash-es';\n\nexport function extractNestedFieldsWildcard(obj: any, basePath: string, fields: string[]): any {\n const result: any = {};\n\n if (fields.length === 1 && fields[0] === '*') {\n const fullObj = get(obj, basePath);\n return isPlainObject(fullObj) ? fullObj : {};\n }\n\n for (const field of fields) {\n const fullPath = basePath ? `${basePath}.${field}` : field;\n const value = get(obj, fullPath);\n set(result, field, value);\n }\n\n return result;\n}\n\nexport function setSmart(obj: any, smartPath: string, value: any): any {\n const pathParts = smartPath.split('.');\n const lastPart = pathParts[pathParts.length - 1];\n const fieldMatch = lastPart.match(/^\\{(.+)\\}$/);\n\n if (!fieldMatch) {\n // Fix: If value is undefined and we're setting a nested property,\n // check if the parent object exists and if setting this would result in\n // all properties being undefined. If so, set the parent to null instead.\n if (isNil(value) && pathParts.length > 1) {\n const parentPath = pathParts.slice(0, -1).join('.');\n const parentObj = get(obj, parentPath);\n\n // If parent is already null/undefined, don't recreate the object structure\n if (isNil(parentObj)) {\n return obj;\n }\n\n // Check if parent is a plain object (not array, not null)\n if (isPlainObject(parentObj)) {\n const existingKeys = Object.keys(parentObj);\n // Check if all existing properties are null/undefined using lodash\n const allNil = isEmpty(existingKeys) || existingKeys.every((key) => isNil(parentObj[key]));\n\n if (allNil) {\n // Set parent to null instead of creating/keeping an object with all undefined properties\n set(obj, parentPath, null);\n return obj;\n }\n }\n }\n\n set(obj, smartPath, value);\n\n // After setting, check again if parent should be null using lodash\n if (isNil(value) && pathParts.length > 1) {\n const parentPath = pathParts.slice(0, -1).join('.');\n const parentObj = get(obj, parentPath);\n\n if (isPlainObject(parentObj)) {\n // Use lodash to check if all properties are null/undefined\n const allNil = Object.keys(parentObj).every((key) => isNil(parentObj[key]));\n if (allNil) {\n set(obj, parentPath, null);\n }\n }\n }\n\n return obj;\n }\n\n const fields = fieldMatch[1].split(',').map((f) => f.trim());\n const basePath = pathParts.slice(0, -1).join('.');\n const [arrayKey, ...restPath] = basePath.split('.');\n\n // Make sure the array exists\n if (!obj[arrayKey]) obj[arrayKey] = [];\n\n // 🟡 Case A: value is array (normal set)\n if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n const item = value[i];\n const targetItem = obj[arrayKey][i] ?? {};\n const nested = {};\n\n if (restPath.length > 0) {\n const picked = extractNestedFieldsWildcard(item, restPath.join('.'), fields);\n set(nested, restPath.join('.'), picked);\n } else {\n const picked = extractNestedFieldsWildcard(item, '', fields);\n Object.assign(nested, picked);\n }\n\n obj[arrayKey][i] = merge({}, targetItem, nested);\n }\n }\n\n // 🟢 Case B: value is a single value → broadcast\n else {\n for (let i = 0; i < obj[arrayKey].length; i++) {\n const targetItem = obj[arrayKey][i] ?? {};\n const nested = {};\n\n if (restPath.length > 0) {\n for (const field of fields) {\n set(nested, `${restPath.join('.')}.${field}`, value);\n }\n } else {\n for (const field of fields) {\n set(nested, field, value);\n }\n }\n\n obj[arrayKey][i] = merge({}, targetItem, nested);\n }\n }\n\n return obj;\n}\n\nfunction extractFieldsFromPath(obj: any, basePath: string, fields: string[]): any {\n if (fields.length === 1 && fields[0] === '*') {\n const fullObj = basePath ? get(obj, basePath) : obj;\n return isPlainObject(fullObj) ? fullObj : {};\n }\n\n const result: any = {};\n for (const field of fields) {\n const fullPath = basePath ? `${basePath}.${field}` : field;\n const val = get(obj, fullPath);\n if (val !== undefined) {\n result[field] = val;\n }\n }\n return result;\n}\n\nexport function getSmart(obj: any, smartPath: string): any {\n const pathParts = smartPath.split('.');\n const lastPart = pathParts[pathParts.length - 1];\n const fieldMatch = lastPart.match(/^\\{(.+)\\}$/);\n\n // Simple get (no fields)\n if (!fieldMatch) {\n return get(obj, smartPath);\n }\n\n const fields = fieldMatch[1].split(',').map((f) => f.trim());\n const basePath = pathParts.slice(0, -1).join('.');\n const items = get(obj, basePath);\n\n if (!isArray(items)) return [];\n\n const nestedPath = basePath.includes('.') ? basePath.split('.').slice(1).join('.') : '';\n\n return items.map((item) => {\n return extractFieldsFromPath(item, nestedPath, fields);\n });\n}\n\nexport function extractValue<T = any>(value: any, key: string = 'id'): T | null {\n if (isNil(value)) {\n return null;\n }\n return isObjectLike(value) ? get(value, key) : value;\n}\n\nexport function cleanDeep(obj: any) {\n return transform(obj, (result: any, value: any, key: string) => {\n if (isObjectLike(value)) {\n const cleaned = cleanDeep(value);\n if (!isEmpty(cleaned)) {\n result[key] = cleaned;\n }\n } else if (\n !isNil(value) && // not null or undefined\n !(typeof value === 'string' && value.trim() === '') && // not empty string\n !(Array.isArray(value) && value.length === 0) // not empty array\n ) {\n result[key] = value;\n }\n });\n}\n\ntype ChangeEntry = {\n path: string;\n oldValue: any;\n newValue: any;\n arrayDiff?: {\n added: any[];\n removed: any[];\n };\n};\n\nfunction getDeepChanges(obj1: any, obj2: any): ChangeEntry[] {\n const changes: ChangeEntry[] = [];\n\n function walk(o1: any, o2: any, currentPath: string[] = []) {\n // If both values are deeply equal, skip\n if (isEqual(o1, o2)) return;\n\n const isObj1Nil = o1 === null || o1 === undefined;\n const isObj2Nil = o2 === null || o2 === undefined;\n\n // If obj1 is null/undefined and obj2 is not, treat entire obj2 as added\n if (isObj1Nil && !isObj2Nil) {\n if (isPlainObject(o2)) {\n for (const key of Object.keys(o2)) {\n walk(undefined, o2[key], [...currentPath, key]);\n }\n } else if (Array.isArray(o2)) {\n changes.push({\n path: currentPath.join('.'),\n oldValue: undefined,\n newValue: o2,\n arrayDiff: {\n added: o2,\n removed: [],\n },\n });\n } else {\n changes.push({\n path: currentPath.join('.'),\n oldValue: undefined,\n newValue: o2,\n });\n }\n return;\n }\n\n // If obj2 is null/undefined and obj1 is not, treat entire obj1 as removed\n if (!isObj1Nil && isObj2Nil) {\n if (isPlainObject(o1)) {\n for (const key of Object.keys(o1)) {\n walk(o1[key], undefined, [...currentPath, key]);\n }\n } else if (Array.isArray(o1)) {\n changes.push({\n path: currentPath.join('.'),\n oldValue: o1,\n newValue: undefined,\n arrayDiff: {\n added: [],\n removed: o1,\n },\n });\n } else {\n changes.push({\n path: currentPath.join('.'),\n oldValue: o1,\n newValue: undefined,\n });\n }\n return;\n }\n\n // If both are arrays, compare items\n if (Array.isArray(o1) && Array.isArray(o2)) {\n if (!isEqual(o1, o2)) {\n const added = differenceWith(o2, o1, isEqual);\n const removed = differenceWith(o1, o2, isEqual);\n\n changes.push({\n path: currentPath.join('.'),\n oldValue: o1,\n newValue: o2,\n arrayDiff: {\n added,\n removed,\n },\n });\n }\n return;\n }\n\n // If both are plain objects, walk each key\n if (isPlainObject(o1) && isPlainObject(o2)) {\n const allKeys = union(Object.keys(o1), Object.keys(o2));\n for (const key of allKeys) {\n walk(o1[key], o2[key], [...currentPath, key]);\n }\n return;\n }\n\n // Primitive values or mismatched types\n changes.push({\n path: currentPath.join('.'),\n oldValue: o1,\n newValue: o2,\n });\n }\n\n walk(obj1, obj2);\n return changes;\n}\n\n// Method 1: Returns only changed paths\nexport function getChangedPaths(obj1: any, obj2: any): string[] {\n return getDeepChanges(obj1, obj2).map((change) => change.path);\n}\n\n// Method 2: Returns full change entries\nexport function getDetailedChanges(obj1: any, obj2: any): ChangeEntry[] {\n return getDeepChanges(obj1, obj2);\n}\n\nexport function getEnumValues(enumType: any): { id: string; title: string }[] {\n return Object.entries(enumType).map(([key, value]) => ({ id: value as string, title: key as string }));\n}\n","import { signalStore, withState, withComputed, withMethods, patchState } from '@ngrx/signals';\nimport { cloneDeep, has, isEqual } from 'lodash-es';\nimport { computed } from '@angular/core';\nimport { getSmart, setSmart } from '../utils/object-util';\n\n//#region ---- Types ----\n\nexport type AXPContextState = 'initiated' | 'restored' | 'changed' | 'patch';\n\nexport type AXPContextData = {\n [key: string]: any;\n};\n\nexport class AXPContextChangeEvent {\n oldValue?: any;\n newValue?: any;\n path?: string;\n state: AXPContextState;\n data: any;\n}\n\n//#endregion\n\n//#region ---- Context signal store ----\n\n// Shared reactive context: root injector has a default instance; widget/layout trees\n\nexport const AXPContextStore = signalStore(\n // Initial State\n withState(() => ({\n data: {} as AXPContextData, // Shared context data\n state: 'initiated' as AXPContextState, // Current state\n initialSnapshot: {}, // Snapshot of the first initialized state\n previousSnapshot: {}, // Snapshot of the previous state\n lastChange: {\n state: 'initiated',\n } as AXPContextChangeEvent, // Last change event\n })),\n\n // Computed Signals\n withComputed(({ data, state, lastChange, initialSnapshot, previousSnapshot }) => ({\n isChanged: computed(() => state() === 'changed'),\n isReset: computed(() => state() === 'restored'),\n isInitiated: computed(() => state() === 'initiated'),\n isEmpty: computed(() => Object.keys(data()).length === 0),\n isDirty: computed(() => !isEqual(data(), previousSnapshot())),\n snapshot: computed(() => cloneDeep(data())), // Current data snapshot\n initial: computed(() => cloneDeep(initialSnapshot())), // Initial snapshot\n previous: computed(() => cloneDeep(previousSnapshot())), // Previous snapshot\n changeEvent: computed(() => lastChange()), // Reactive last change event\n })),\n\n // Methods for State Management\n withMethods((store) => ({\n // Update a specific value\n update(path: string, value: any) {\n const currentData = cloneDeep(store.data());\n const oldValue = getSmart(currentData, path);\n\n // Skip if the value hasn't changed\n if (isEqual(oldValue, value)) {\n return;\n }\n\n // Update the value and prepare the change event\n const updatedData = setSmart(currentData, path, value);\n const changeEvent: AXPContextChangeEvent = {\n oldValue,\n newValue: value,\n path,\n state: 'changed',\n data: updatedData,\n };\n\n // Patch the state\n patchState(store, {\n previousSnapshot: store.snapshot(), // Save the previous state\n data: updatedData,\n state: 'changed',\n lastChange: changeEvent,\n });\n },\n\n patch(context: Record<string, any>, skipDirtyTracking = false) {\n const currentData = cloneDeep(store.data());\n // Update the value and prepare the change event\n const updatedData = { ...currentData, ...context };\n const changeEvent: AXPContextChangeEvent = {\n state: 'patch',\n data: updatedData,\n };\n\n // Patch the state\n patchState(store, {\n ...(skipDirtyTracking ? {} : { previousSnapshot: store.snapshot() }),\n data: updatedData,\n state: 'changed',\n lastChange: changeEvent,\n });\n },\n\n // Reset to the initial state\n reset() {\n const initialData = store.initial();\n const changeEvent: AXPContextChangeEvent = {\n oldValue: cloneDeep(store.data()), // Current data becomes old value\n newValue: cloneDeep(initialData), // Reset to the initial state\n path: '',\n state: 'restored',\n data: initialData,\n };\n\n patchState(store, {\n previousSnapshot: store.snapshot(), // Save the previous state\n data: initialData,\n state: 'restored',\n lastChange: changeEvent,\n });\n },\n\n // Initialize the state\n set(initialData: any) {\n const currentData = store.data();\n if (isEqual(currentData, initialData)) {\n return; // Skip if the current state matches the initial state\n }\n\n const changeEvent: AXPContextChangeEvent = {\n oldValue: null,\n newValue: cloneDeep(initialData),\n path: '',\n state: 'initiated',\n data: initialData,\n };\n\n patchState(store, {\n initialSnapshot: cloneDeep(initialData), // Save the initial state\n previousSnapshot: store.snapshot(), // Save the current state as the previous\n data: initialData,\n state: 'initiated',\n lastChange: changeEvent,\n });\n },\n\n // Get a specific value\n getValue(path: string) {\n return getSmart(store.data(), path);\n },\n\n // Check if a path exists in the context\n hasValue(path: string) {\n return has(store.data(), path);\n },\n }))\n);\n\n//#endregion\n","import { Injectable, InjectionToken, Injector, inject } from '@angular/core';\nimport { AXPExpressionEvaluatorScope } from './expression-evaluator.service';\n\nexport interface AXPExpressionEvaluatorScopeProvider {\n provide(context: AXPExpressionEvaluatorScopeProviderContext): Promise<void>;\n}\n\nexport class AXPExpressionEvaluatorScopeProviderContext {\n private scopes: AXPExpressionEvaluatorScope = {};\n addScope(namespace: string, functions: { [name: string]: Function }) {\n this.scopes[namespace] = { ...this.scopes[namespace], ...functions };\n }\n getScopes(): AXPExpressionEvaluatorScope {\n return this.scopes;\n }\n}\nexport type AXPExpressionEvaluatorScopeProviders = AXPExpressionEvaluatorScopeProvider[] | (() => AXPExpressionEvaluatorScopeProvider[]);\n\nexport const AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER = new InjectionToken<AXPExpressionEvaluatorScopeProviders>(\n 'AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER'\n);\n\n@Injectable({ providedIn: 'root' })\nexport class AXPExpressionEvaluatorScopeProviderService {\n private readonly injector = inject(Injector);\n private cache: AXPExpressionEvaluatorScope | null = null;\n\n private async load(): Promise<void> {\n if (this.cache) return;\n const raw = this.injector.get(AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER, [], { optional: true });\n const providers: AXPExpressionEvaluatorScopeProvider[] = Array.isArray(raw)\n ? raw\n : typeof raw === 'function'\n ? raw()\n : [];\n const context = new AXPExpressionEvaluatorScopeProviderContext();\n for (const provider of providers) {\n await provider.provide(context);\n }\n this.cache = context.getScopes();\n }\n\n public async getScopesAsync(): Promise<AXPExpressionEvaluatorScope> {\n await this.load();\n return this.cache || {};\n }\n} ","import { Injectable, inject } from '@angular/core';\nimport { AXPExpressionEvaluatorScopeProviderService } from './expression-evaluator-scope-provider.service';\n\nexport type AXPExpressionEvaluatorScope = { [name: string]: { [name: string]: Function } };\n\n@Injectable({ providedIn: 'root' })\nexport class AXPExpressionEvaluatorService {\n // Memoization cache for compiled expressions\n private expressionCache = new Map<string, Function>();\n private providerService = inject(AXPExpressionEvaluatorScopeProviderService);\n\n private getOrCompileFunction(expression: string): Function {\n if (!this.expressionCache.has(expression)) {\n // Check if expression contains multiple statements (has semicolons or newlines)\n const hasMultipleStatements = expression.includes(';') || expression.includes('\\n');\n\n let fn: Function;\n if (hasMultipleStatements) {\n // For multiple statements, execute them in sequence and return the last expression\n fn = new Function('scope', `with (scope) { return (async function() { ${expression} })(); }`);\n } else {\n // For single expressions, use return\n fn = new Function('scope', `with (scope) { return (async function() { return ${expression}; })(); }`);\n }\n\n this.expressionCache.set(expression, fn);\n }\n return this.expressionCache.get(expression)!;\n }\n\n private async getMergedScope(userScope: AXPExpressionEvaluatorScope): Promise<AXPExpressionEvaluatorScope> {\n const pluginScopes = await this.providerService.getScopesAsync();\n // Merge pluginScopes and userScope (userScope takes precedence)\n return { ...pluginScopes, ...userScope };\n }\n\n public async evaluate(source: any | any[], scope: AXPExpressionEvaluatorScope = {}): Promise<any> {\n try {\n const mergedScope = await this.getMergedScope(scope);\n if (typeof source === 'string' && source.includes('{{')) {\n return await this.evaluateStringExpression(source, mergedScope);\n } else if (Array.isArray(source)) {\n const evaluatedArray = [];\n for (const item of source) {\n evaluatedArray.push(await this.evaluate(item, mergedScope));\n }\n return evaluatedArray;\n } else if (typeof source === 'object' && source !== null) {\n const evaluatedObject: any = {};\n for (const key in source) {\n if (source.hasOwnProperty(key)) {\n evaluatedObject[key] = await this.evaluate(source[key], mergedScope);\n }\n }\n return evaluatedObject;\n } else {\n return source;\n }\n } catch (error: unknown) {\n console.error('Expression evaluator - Error evaluating expression:', source, error);\n return false;\n }\n }\n\n private async evaluateStringExpression(templateExpression: string, scope: AXPExpressionEvaluatorScope): Promise<any> {\n // Check if the input is exactly a single {{ ... }} expression (handle multiline)\n const exactMatch = templateExpression.match(/^\\s*\\{\\{\\s*([\\s\\S]*?)\\s*\\}\\}\\s*$/);\n if (exactMatch) {\n const expression = exactMatch[1];\n const sandbox = this.getOrCompileFunction(expression);\n const result = await sandbox(scope);\n return result;\n }\n // Otherwise, interpolate all {{ ... }} expressions in the string\n const regex = /\\{\\{\\s*([\\s\\S]*?)\\s*\\}\\}/g;\n // Collect all matches and their positions\n const matches = [];\n let match;\n while ((match = regex.exec(templateExpression)) !== null) {\n matches.push({\n expression: match[1],\n start: match.index,\n end: regex.lastIndex,\n raw: match[0],\n });\n }\n // Evaluate all expressions in parallel\n const values = await Promise.all(\n matches.map((m) => {\n const sandbox = this.getOrCompileFunction(m.expression);\n return sandbox(scope);\n }),\n );\n // Reconstruct the string with evaluated values\n let result = '';\n let lastIndex = 0;\n matches.forEach((m, i) => {\n result += templateExpression.slice(lastIndex, m.start);\n const value = values[i];\n result += value !== undefined && value !== null ? value : '';\n lastIndex = m.end;\n });\n result += templateExpression.slice(lastIndex);\n return result;\n }\n\n public isExpression(expression: string): boolean {\n if (typeof expression === 'string') {\n return expression.trim().startsWith('{{') && expression.trim().endsWith('}}');\n }\n return false;\n }\n}\n","import { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'axp-component-slot-placeholder',\n template: `<div>\n <ax-skeleton class=\"ax-w-full ax-h-10 ax-rounded-md\"></ax-skeleton>\n </div>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXSkeletonModule],\n standalone: true,\n})\nexport class AXPComponentSlotPlaceholderComponent {}\n\n","import { Injectable, Injector } from \"@angular/core\";\nimport { AXPComponentSlotConfig } from \"./component-slot.types\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AXPComponentSlotRegistryService {\n\n private registry = new Map<string, AXPComponentSlotConfig[]>();\n\n register(slotName: string, config: AXPComponentSlotConfig) {\n let configs = this.registry.get(slotName) || [];\n\n // Check if the component is already registered in this slot\n const isDuplicate = configs.some(existingConfig => existingConfig.name === config.name);\n\n if (!isDuplicate) {\n configs = [...configs, config]; // Add the new configuration\n this.registry.set(slotName, configs);\n }\n }\n\n get(slotName: string): AXPComponentSlotConfig[] {\n return this.registry.get(slotName) || [];\n }\n}","import {\n ComponentRef,\n computed,\n Directive,\n effect,\n ElementRef,\n inject,\n Injector,\n input,\n OnInit,\n runInInjectionContext,\n signal,\n Type,\n ViewContainerRef,\n} from '@angular/core';\nimport { sortBy } from 'lodash-es';\nimport { AXPContextData, AXPContextStore } from '../context/context-store.service';\nimport { AXPExpressionEvaluatorService } from '../expression-evaluator';\nimport { AXPComponentSlotPlaceholderComponent } from './component-slot-placeholder.component';\nimport { AXPComponentSlotRegistryService } from './component-slot-registery.service';\n\n@Directive({\n selector: 'axp-component-slot',\n standalone: false,\n exportAs: 'slot',\n})\nexport class AXPComponentSlotDirective implements OnInit {\n name = input.required<string>();\n host = input<any>();\n context = input<any>();\n\n private elementRef = inject(ElementRef);\n private registryService = inject(AXPComponentSlotRegistryService);\n private injector = inject(Injector);\n private evaluator = inject(AXPExpressionEvaluatorService);\n public viewContainerRef = inject(ViewContainerRef);\n public contextStore = inject(AXPContextStore);\n\n public isEmpty = computed(() => this._viewCount() === 0);\n\n // Create a signal to store the count of children\n private _viewCount = signal(0);\n\n // Track component references for updates\n private componentRefs: ComponentRef<any>[] = [];\n\n // Track placeholder references for replacement\n private placeholderRefs: Map<number, ComponentRef<AXPComponentSlotPlaceholderComponent>> = new Map();\n\n constructor() {\n // Watch for context changes and update component instances\n effect(() => {\n const currentContext = this.context();\n const currentHost = this.host();\n\n // Update all component references with new context and host\n this.componentRefs.forEach((componentRef) => {\n if (componentRef.instance) {\n Object.assign(componentRef.instance, {\n host: currentHost,\n context: currentContext,\n });\n }\n });\n });\n }\n\n async ngOnInit() {\n await this.loadComponents();\n // Update the signal after loading\n this._viewCount.set(this.viewContainerRef.length);\n }\n\n async loadComponents() {\n this.viewContainerRef.clear();\n // Clear previous component references\n this.componentRefs = [];\n this.placeholderRefs.clear();\n\n const configs = sortBy(this.registryService.get(this.name()), (c) => c.priority ?? 0);\n if (!configs) {\n console.error(`No component found for slot ${this.name()}`);\n return;\n }\n\n // Evaluate conditions and check features in parallel for performance\n const results = await Promise.all(\n configs.map(async (c) => {\n // Check condition if provided\n const conditionPassed = c.condition ? await this.evaluateCondition(c.condition) : true;\n\n // Check features if provided\n // const featuresPassed =\n // c.features && c.features.length > 0 ? this.sessionService.isFeatureEnabled(...c.features) : true;\n\n return {\n config: c,\n // visible: conditionPassed && featuresPassed,\n visible: conditionPassed,\n };\n }),\n );\n\n // Filter visible components while preserving priority order\n const slots = results.filter((r) => r.visible).map((r) => r.config);\n\n // Create skeleton placeholders immediately in priority order\n slots.forEach((config, index) => {\n const placeholderRef = this.viewContainerRef.createComponent(AXPComponentSlotPlaceholderComponent);\n this.placeholderRefs.set(index, placeholderRef);\n });\n\n // Load all components in parallel and replace placeholders as they become ready\n const loadPromises = slots.map(async (config, index) => {\n let component!: Type<any> | null | undefined;\n let options: { [key: string]: unknown } = {};\n\n // load component\n if (typeof config.loadComponent === 'function') {\n await runInInjectionContext(this.injector, async () => {\n component = await config.loadComponent?.();\n });\n } else if (config.component) {\n component = config.component;\n }\n\n // load options\n if (typeof config.options === 'function') {\n await runInInjectionContext(this.injector, async () => {\n const fun = config.options as Function;\n options = await fun();\n });\n } else if (config.options) {\n options = await this.evaluator.evaluate(config.options, {});\n }\n\n // Replace placeholder with actual component as soon as it's ready\n if (!component) {\n console.warn(`Component failed to load for slot ${this.name()} at index ${index}`);\n // Remove placeholder if component failed to load\n const placeholderRef = this.placeholderRefs.get(index);\n if (placeholderRef) {\n placeholderRef.destroy();\n this.placeholderRefs.delete(index);\n }\n return;\n }\n\n // Get the placeholder reference at this index\n const placeholderRef = this.placeholderRefs.get(index);\n if (!placeholderRef) {\n console.warn(`Placeholder not found for index ${index}`);\n return;\n }\n\n // Get the index of the placeholder in the view container\n const placeholderIndex = this.viewContainerRef.indexOf(placeholderRef.hostView);\n\n // Remove the placeholder\n placeholderRef.destroy();\n this.placeholderRefs.delete(index);\n\n // Create the actual component at the same position\n const componentRef = this.viewContainerRef.createComponent(component, { index: placeholderIndex });\n\n // Store the component reference for future updates\n this.componentRefs.push(componentRef);\n\n Object.assign(componentRef.instance, {\n host: this.host(),\n context: this.context(),\n ...options,\n });\n });\n\n // Wait for all components to finish loading (they render as they become ready)\n await Promise.all(loadPromises);\n }\n\n private async evaluateCondition(condition: string | ((context?: AXPContextData) => boolean | Promise<boolean>)) {\n if (typeof condition === 'string') {\n const result = await this.evaluator.evaluate(condition, {});\n return result;\n }\n return condition(this.contextStore.data());\n //return condition(this.context());\n }\n}\n","import { Inject, ModuleWithProviders, NgModule, Optional } from '@angular/core';\nimport { AXPComponentSlotModuleConfigs } from './component-slot.types';\nimport { AXPComponentSlotRegistryService } from './component-slot-registery.service';\nimport { AXPComponentSlotDirective } from './component-slot.directive';\n\n@NgModule({\n declarations: [AXPComponentSlotDirective],\n exports: [AXPComponentSlotDirective]\n})\nexport class AXPComponentSlotModule {\n\n static forRoot(configs?: AXPComponentSlotModuleConfigs): ModuleWithProviders<AXPComponentSlotModule> {\n return {\n ngModule: AXPComponentSlotModule,\n providers: [\n {\n provide: 'AXPComponentSlotModuleFactory',\n useFactory: (registry: AXPComponentSlotRegistryService) => () => {\n if (configs) {\n for (const [key, value] of Object.entries(configs)) {\n value.forEach(v => {\n registry.register(key, v);\n })\n }\n }\n },\n deps: [AXPComponentSlotRegistryService],\n multi: true\n }\n ]\n };\n }\n\n static forChild(configs?: AXPComponentSlotModuleConfigs): ModuleWithProviders<AXPComponentSlotModule> {\n return {\n ngModule: AXPComponentSlotModule,\n providers: [\n {\n provide: 'AXPComponentSlotModuleFactory',\n useFactory: (registry: AXPComponentSlotRegistryService) => () => {\n if (configs) {\n for (const [key, value] of Object.entries(configs)) {\n value.forEach(v => {\n registry.register(key, v);\n })\n }\n }\n },\n deps: [AXPComponentSlotRegistryService],\n multi: true\n }\n\n ]\n };\n }\n\n /**\n * @ignore\n */\n constructor(@Optional() @Inject('AXPComponentSlotModuleFactory') instances: any[]) {\n instances?.forEach(f => {\n f();\n });\n }\n\n}\n","\nexport class AXPDataGenerator {\n static uuid(): string {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (char) => {\n const random = (Math.random() * 16) | 0;\n const value = char === 'x' ? random : (random & 0x3) | 0x8;\n return value.toString(16);\n });\n }\n\n static number(max: number): number;\n static number(min: number, max: number): number;\n static number(...args: number[]): number {\n let min = 0;\n let max = 100;\n if (args.length == 1) max = args[0];\n if (args.length == 2) {\n min = args[0];\n max = args[1];\n }\n return Math.floor(Math.random() * (max - min + 1)) + min;\n }\n\n static date(): Date;\n static date(start: Date): Date;\n static date(start: Date, end: Date): Date;\n static date(...args: any[]): Date {\n let start = new Date(2000, 0, 1);\n let end = new Date();\n\n if (args.length === 1) {\n start = args[0];\n } else if (args.length === 2) {\n start = args[0];\n end = args[1];\n }\n\n const startTime = start.getTime();\n const endTime = end.getTime();\n return new Date(startTime + Math.random() * (endTime - startTime));\n }\n\n static array<T>(length: number = 5, generator: () => T): T[] {\n return Array.from({ length }, generator);\n }\n\n static pick<T>(items: T[]): T;\n static pick<T>(items: T[], count: number): T[];\n static pick<T>(...args: any[]): T | T[] {\n if (args.length < 1) {\n throw new Error('Invalid parameters');\n }\n const items: T[] = args[0];\n const count: number = args[1] ?? 1;\n if (count < 1) {\n throw new Error('Count must be at least 1');\n }\n\n // If the count is greater than the number of items, just return a shuffled copy of the array\n if (count >= items.length) {\n return [...items].sort(() => Math.random() - 0.5);\n }\n\n // Shuffle the array and slice the first 'count' elements\n const shuffled = items.slice();\n for (let i = shuffled.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n [shuffled[i], shuffled[j]] = [shuffled[j], shuffled[i]]; // Swap elements\n }\n return count == 1 ? shuffled.slice(0, count)[0] : shuffled.slice(0, count);\n }\n\n static string(length: number = 10): string {\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n return Array.from({ length }, () => chars.charAt(Math.floor(Math.random() * chars.length))).join('');\n }\n\n static boolean(): boolean {\n return Math.random() >= 0.5;\n }\n\n static item<T>(array: T[] = []): T | undefined {\n return array.length > 0 ? array[Math.floor(Math.random() * array.length)] : undefined;\n }\n\n static color(format: 'hsl' | 'rgb' | 'hex' = 'hex'): string {\n // Generate HSL values with safe ranges for good contrast\n const h = Math.floor(Math.random() * 360);\n const s = Math.floor(Math.random() * 20) + 60; // 60% - 80%\n const l = Math.floor(Math.random() * 20) + 40; // 40% - 60%\n\n if (format === 'hsl') {\n return `hsl(${h}, ${s}%, ${l}%)`;\n }\n\n // Convert HSL to RGB\n const { r, g, b } = this.hslToRgb(h, s / 100, l / 100);\n\n if (format === 'rgb') {\n return `rgb(${r}, ${g}, ${b})`;\n }\n\n // Convert RGB to HEX\n const toHex = (val: number) => val.toString(16).padStart(2, '0');\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`;\n }\n\n //TODO: move or read from utils\n private static hslToRgb(h: number, s: number, l: number): { r: number; g: number; b: number } {\n const c = (1 - Math.abs(2 * l - 1)) * s;\n const x = c * (1 - Math.abs((h / 60) % 2 - 1));\n const m = l - c / 2;\n let r = 0, g = 0, b = 0;\n\n if (h < 60) [r, g, b] = [c, x, 0];\n else if (h < 120) [r, g, b] = [x, c, 0];\n else if (h < 180) [r, g, b] = [0, c, x];\n else if (h < 240) [r, g, b] = [0, x, c];\n else if (h < 300) [r, g, b] = [x, 0, c];\n else[r, g, b] = [c, 0, x];\n\n return {\n r: Math.round((r + m) * 255),\n g: Math.round((g + m) * 255),\n b: Math.round((b + m) * 255)\n };\n }\n\n static alphanumeric(length: number = 10): string {\n const chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';\n return Array.from({ length }, () => chars.charAt(Math.floor(Math.random() * chars.length))).join('');\n }\n static alphabet(length: number = 10): string {\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';\n return Array.from({ length }, () => chars.charAt(Math.floor(Math.random() * chars.length))).join('');\n }\n\n static phone(): string {\n const areaCode = this.number(100, 999);\n const exchangeCode = this.number(100, 999);\n const lineNumber = this.number(1000, 9999);\n return `${areaCode}-${exchangeCode}-${lineNumber}`;\n }\n\n static firstName(): string {\n const firstNames = ['John', 'Allen', 'Jak', 'Rose', 'Kate', 'Liam', 'Olivia', 'Noah', 'Emma', 'Ava'];\n return this.pick(firstNames);\n }\n\n static lastName(): string {\n const lastNames = ['Gates', 'Jonsen', 'Smith', 'Ford', 'Jakson', 'Brown', 'Johnson', 'Williams', 'Jones', 'Garcia'];\n return this.pick(lastNames);\n }\n\n static email(): string;\n static email(firstName: string, lastName: string): string;\n static email(...args: any[]): string {\n const domains = ['gmail.com', 'yahoo.com', 'outlook.com', 'example.com'];\n const domain = this.pick(domains);\n const separator = this.pick(['.', '_', '']);\n const randomSuffix = this.boolean() ? this.number(1, 99).toString() : '';\n\n if (args.length === 2) {\n const firstName = args[0].toLowerCase();\n const lastName = args[1].toLowerCase();\n return `${firstName}${separator}${lastName}${randomSuffix}@${domain}`;\n } else {\n const firstName = this.firstName().toLowerCase();\n const lastName = this.lastName().toLowerCase();\n return `${firstName}${separator}${lastName}${randomSuffix}@${domain}`;\n }\n }\n\n static country(): string {\n const countries = ['USA', 'Canada', 'Mexico', 'Germany', 'France', 'Japan', 'Australia'];\n return this.pick(countries);\n }\n\n static city(): string {\n const cities = ['Los Angeles', 'Toronto', 'Vancouver', 'Berlin', 'Paris', 'Tokyo', 'Sydney'];\n return this.pick(cities);\n }\n\n static state(): string {\n const states = ['NY', 'CA', 'TX', 'ON', 'BC', 'NSW', 'BER', 'IDF', 'TYO'];\n return this.pick(states);\n }\n\n static address(): string {\n const streets = ['Main St', 'High St', 'Maple Ave', 'Oak St', 'Pine St', 'Cedar St'];\n const streetNumber = this.number(100, 9999);\n const street = this.pick(streets);\n const city = this.city();\n const state = this.state();\n const zip = this.number(10000, 99999);\n const country = this.country();\n return `${streetNumber} ${street}, ${city}, ${state} ${zip}, ${country}`;\n }\n\n static avatar(): string {\n return `https://avatar.iran.liara.run/public/${this.pick([35, 22, 16, 6, 31])}`;\n //return `https://i.pravatar.cc/300?u=${this.uuid()}`;\n }\n}\n","import { extractValue } from \"../utils/object-util\";\nexport type AXPValueTransformerFunction = (value: any) => any;\n\nexport type AXPValueTransformerFunctions = {\n getter?: AXPValueTransformerFunction;\n setter?: AXPValueTransformerFunction;\n};\n\nexport function objectKeyValueTransforms(keyName: string): AXPValueTransformerFunctions {\n return {\n getter: (value: any) => {\n return extractValue(value, keyName);\n },\n setter: (value: any) => {\n return extractValue(value, keyName);\n },\n };\n}","import { AXDataSource } from '@acorex/cdk/common';\nimport { inject, Injectable, InjectionToken } from '@angular/core';\nimport { set } from 'lodash-es';\nimport { AXPFilterDefinition, AXPMaybePromise, AXPOptionsData } from '../types';\n\nexport interface AXPDataSourceDataFieldDefinition {\n name: string;\n title: string;\n datatype: string;\n type: string;\n options?: AXPOptionsData;\n}\n\nexport type AXPLazyDataSource<T = unknown> = AXPMaybePromise<AXDataSource<T>>;\nexport type AXPDataSourceArray<T = unknown> = AXPMaybePromise<Array<T>>;\nexport type AXPDataSourceValue<T = unknown> = AXPMaybePromise<T>;\nexport type AXPDataSourceType<T = any> = AXPLazyDataSource<T> | AXPDataSourceArray<T> | AXPDataSourceValue<T>;\nexport type AXPDataSourceSample<T = any> = AXPDataSourceArray<T> | AXPDataSourceValue<T>;\nexport interface AXPDataSourceDefinition<T = any> {\n name: string;\n title: string;\n valueField?: {\n name: string;\n title: string;\n };\n textField?: {\n name: string;\n title: string;\n };\n columns: AXPDataSourceDataFieldDefinition[];\n filters: AXPFilterDefinition[];\n samples?: AXPDataSourceSample<T>;\n visible?: boolean;\n source: () => AXPDataSourceType<T>;\n}\n\nexport interface AXPDataSourceDefinitionProvider {\n items(): Promise<AXPDataSourceDefinition[]>;\n}\n\nexport const AXP_DATASOURCE_DEFINITION_PROVIDER = new InjectionToken<AXPDataSourceDefinitionProvider[]>(\n 'AXP_DATASOURCE_TYPE_PROVIDER',\n);\n\n@Injectable({ providedIn: 'root' })\nexport class AXPDataSourceDefinitionProviderService implements AXPDataSourceDefinitionProvider {\n private providers = inject(AXP_DATASOURCE_DEFINITION_PROVIDER, { optional: true });\n\n async items(): Promise<AXPDataSourceDefinition[]> {\n const items: AXPDataSourceDefinition[] = [];\n\n // Load from DI tokens; resolve lazy providers (provideLazyProvider uses useFactory that returns Promise<T>)\n if (Array.isArray(this.providers)) {\n for (const raw of this.providers) {\n const provider = await Promise.resolve(raw);\n if (provider && typeof provider.items === 'function') {\n set(provider, '__parent__', this);\n items.push(...(await provider.items()));\n }\n }\n }\n\n return items;\n }\n\n async get<T = any>(name: string): Promise<AXPDataSourceDefinition<T> | undefined> {\n return (await this.items()).find((c) => c.name == name);\n }\n}\n","// src/app/directives/grid-layout.directive.ts\n\nimport { Directive, ElementRef, ViewContainerRef, computed, inject } from '@angular/core';\n\n@Directive({\n selector: '[axp-content-checker]',\n standalone: true,\n exportAs: 'checker'\n})\nexport class AXPContentCheckerDirective {\n\n public viewContainerRef = inject(ViewContainerRef);\n public elementRef: ElementRef<HTMLDivElement> = inject(ElementRef<HTMLDivElement>);\n\n public isEmpty = computed(() => this.viewContainerRef.length === 0);\n}\n","import { Directive, HostListener, Output, EventEmitter } from '@angular/core';\n\n@Directive({\n selector: '[onDblClick]'\n})\nexport class AXPDblClickDirective {\n @Output() onDblClick = new EventEmitter<Event>();\n\n private lastTap = 0;\n private readonly doubleTapThreshold = 300; // milliseconds\n\n // Listen for the native dblclick event (desktop)\n @HostListener('dblclick', ['$event'])\n handleOnDblClick(event: Event): void {\n this.onDblClick.emit(event);\n }\n\n // Listen for touchend events (mobile)\n @HostListener('touchend', ['$event'])\n onTouchEnd(event: TouchEvent): void {\n const currentTime = new Date().getTime();\n const tapGap = currentTime - this.lastTap;\n\n if (tapGap > 0 && tapGap < this.doubleTapThreshold) {\n // Detected a double-tap\n this.onDblClick.emit(event);\n event.preventDefault(); // Optionally prevent further default actions\n }\n this.lastTap = currentTime;\n }\n}\n","import { Directive, ElementRef, input, OnInit, effect } from '@angular/core';\nimport { set, get } from 'lodash-es';\n\n@Directive({\n selector: '[axp-data]',\n standalone: true\n})\nexport class AXPElementDataDirective implements OnInit {\n\n data = input<any>(null, { alias: 'axp-data' });\n path = input<string>('__data__', { alias: 'axp-data-path' });\n\n constructor(private elementRef: ElementRef<HTMLElement>) { }\n\n ngOnInit() {\n // Initial data setup\n set(this.elementRef.nativeElement, this.path(), this.data());\n }\n\n // Effect to update element data when inputs change\n private updateEffect = effect(() => {\n const currentData = this.data();\n const currentPath = this.path();\n set(this.elementRef.nativeElement, currentPath, currentData);\n });\n\n /**\n * Get data from the element\n */\n getData(): any {\n return get(this.elementRef.nativeElement, this.path());\n }\n\n /**\n * Update data at runtime\n */\n setData(data: any) {\n set(this.elementRef.nativeElement, this.path(), data);\n }\n} ","// src/app/directives/grid-layout.directive.ts\n\nimport { Directive, ElementRef, Renderer2, OnChanges, SimpleChanges, input } from '@angular/core';\nimport { AXPGridLayoutOptions, AXPGridPlacement } from '../types';\n\n@Directive({\n selector: '[axp-grid-layout]',\n standalone: true,\n})\nexport class AXPGridLayoutDirective implements OnChanges {\n options = input.required<AXPGridLayoutOptions>({ alias: 'axp-grid-layout' });\n\n constructor(private el: ElementRef, private renderer: Renderer2) { }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['options']) {\n this.applyTailwindClasses();\n }\n }\n\n private applyTailwindClasses(): void {\n const placement = this.options()?.positions;\n if (!placement) return;\n // Clear existing grid classes\n this.clearClasses();\n\n // Apply new grid classes based on the input options\n this.setClasses(placement.sm, '');\n this.setClasses(placement.md, 'md:');\n this.setClasses(placement.lg, 'lg:');\n this.setClasses(placement.xl, 'xl:');\n this.setClasses(placement.xxl, '2xl:');\n }\n\n private setClasses(placement: AXPGridPlacement | undefined, prefix: string): void {\n if (placement == null) return;\n\n const colStart = placement.colStart ? `${prefix}ax-col-start-${placement.colStart}` : '';\n const colEnd = placement.colEnd ? `${prefix}ax-col-end-${placement.colEnd}` : '';\n const colSpan = placement.colSpan ? `${prefix}ax-col-span-${placement.colSpan}` : '';\n const rowStart = placement.rowStart ? `${prefix}ax-row-start-${placement.rowStart}` : '';\n const rowEnd = placement.rowEnd ? `${prefix}ax-row-end-${placement.rowEnd}` : '';\n const rowSpan = placement.rowSpan ? `${prefix}ax-row-span-${placement.rowSpan}` : '';\n const order = placement.order ? `${prefix}ax-order-${placement.order}` : ''; // Handling order\n\n [colStart, colEnd, colSpan, rowStart, rowEnd, rowSpan, order].forEach(cls => {\n if (cls) {\n this.renderer.addClass(this.el.nativeElement, cls);\n }\n });\n }\n\n private clearClasses(): void {\n const currentClasses = this.el.nativeElement.className.split(' ');\n currentClasses.forEach((className: string) => {\n if (className.startsWith('ax-col-') || className.startsWith('ax-row-') || className.startsWith('ax-order-')) {\n this.renderer.removeClass(this.el.nativeElement, className);\n }\n });\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport type AXPDistributedEventListenerProviderToken<T> =\n | AXPDistributedEventListenerProvider<T>\n | Promise<AXPDistributedEventListenerProvider<T>>;\n\nexport const AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER = new InjectionToken<AXPDistributedEventListenerProviderToken<any>[]>(\n 'AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER'\n);\n\nexport interface AXPDistributedEventListenerProvider<TInput = any, TOutput = void> {\n key: string;\n execute(data: TInput): Promise<TOutput> | TOutput;\n\n priority?: number;\n}","//#region ---- Imports ----\n\nimport { inject, Injectable, Injector, runInInjectionContext } from '@angular/core';\nimport { AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER, AXPDistributedEventListenerProvider } from './distributed-event-listener.provider';\n\n//#endregion\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXPDistributedEventListenerService {\n //#region ---- Providers & Caches ----\n\n private readonly listenerProviders = inject(AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER, { optional: true }) || [];\n private readonly injector = inject(Injector);\n\n /** Cache for listeners by key. */\n private listenersByKey: Map<string, AXPDistributedEventListenerProvider<any>[]> = new Map();\n \n /** Flag to track if providers have been loaded */\n private providersLoaded = false;\n \n //#endregion\n\n //#region ---- Public API ----\n\n /**\n * Dispatches an event to all registered listeners for the given key.\n * @param key The event key.\n * @param data The event data to pass to listeners.\n */\n async dispatch(key: string, data?: any): Promise<void> {\n const providers = await this.resolveProviders();\n const matched = providers.filter(p => p.key === key);\n\n if (!matched.length) {\n return;\n }\n\n for (const provider of matched) {\n try {\n await Promise.resolve(\n runInInjectionContext(this.injector, () => provider.execute(data))\n );\n } catch (err) {\n console.error(`[AXPDistributedEventListenerService] Provider for key='${key}' failed`, err);\n }\n }\n }\n\n/**\n * Dispatch with async response (first matching provider, with retry/timeout)\n */\npublic async dispatchAsync<T, R>(\n key: string,\n data: T,\n options: { timeout: number; retries: number; retryDelay: number } = {\n timeout: 60_000,\n retries: 3,\n retryDelay: 1000,\n }\n): Promise<R> {\n const providers = await this.resolveProviders();\n const matched = providers.filter(p => p.key === key);\n\n if (!matched.length) {\n throw new Error(`No provider found for key='${key}'`);\n }\n\n const attempt = (n: number): Promise<R> => {\n return new Promise<R>((resolve, reject) => {\n let finished = false;\n\n const timer = setTimeout(() => {\n if (!finished) {\n if (n < options.retries) { \n resolve(attempt(n + 1));\n } else {\n reject(\n new Error(`Timeout: no response for key='${key}' after ${options.retries} attempts.`)\n );\n }\n }\n }, options.timeout);\n\n try {\n const provider = matched[0];\n const result = runInInjectionContext(this.injector, () =>\n provider.execute(data)\n );\n\n Promise.resolve(result)\n .then((r: any) => {\n finished = true;\n clearTimeout(timer);\n resolve(r);\n })\n .catch(err => {\n finished = true;\n clearTimeout(timer);\n reject(err);\n });\n } catch (err) {\n clearTimeout(timer);\n reject(err);\n }\n });\n };\n\n return attempt(0);\n}\n\n /**\n * Resolve all providers (handle both direct provider and Promise<provider>)\n */\n private async resolveProviders(): Promise<AXPDistributedEventListenerProvider<any>[]> {\n return Promise.all(\n this.listenerProviders.map(p =>\n p instanceof Promise ? p : Promise.resolve(p)\n )\n );\n}\n\n\n /**\n * Returns all listeners for a specific event key.\n * @param key The event key.\n * @returns Array of listeners for the key.\n */\n async getListeners(key: string): Promise<AXPDistributedEventListenerProvider<any>[]> {\n await this.ensureProvidersLoaded();\n return this.listenersByKey.get(key) || [];\n }\n\n /**\n * Returns all registered event keys.\n * @returns Array of all event keys that have listeners.\n */\n async getRegisteredKeys(): Promise<string[]> {\n await this.ensureProvidersLoaded();\n return Array.from(this.listenersByKey.keys());\n }\n\n //#endregion\n\n //#region ---- Private Methods ----\n\n /**\n * Ensures that all providers have been loaded and cached.\n */\n private async ensureProvidersLoaded(): Promise<void> {\n if (this.providersLoaded) {\n return;\n }\n\n // Resolve all providers\n const resolvedProviders = await Promise.all(this.listenerProviders);\n\n // Group listeners by key\n for (const provider of resolvedProviders) {\n if (provider) {\n const existingListeners = this.listenersByKey.get(provider.key) || [];\n existingListeners.push(provider);\n this.listenersByKey.set(provider.key, existingListeners);\n }\n }\n\n this.providersLoaded = true;\n }\n\n //#endregion\n\n //#region ---- Cache Management ----\n\n /** Clears the listeners cache and forces reload on next access. */\n clearListenersCache(): void {\n this.listenersByKey.clear();\n this.providersLoaded = false;\n }\n\n //#endregion\n}","import { Injectable, OnDestroy } from '@angular/core';\nimport { isUndefined } from 'lodash-es';\nimport { Observable, Subject } from 'rxjs';\nimport { AXPDataGenerator } from '../data/data-generator';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXPBroadcastEventService implements OnDestroy {\n private channel: BroadcastChannel;\n private eventSubjects = new Map<string, Subject<{ data: any; requestId?: string }>>();\n private pendingRequests = new Map<string, (response: any) => void>();\n private multiTabEventHistory = new Set<string>(); // Prevent duplicate processing of the same event\n private readonly instanceId = AXPDataGenerator.uuid();\n\n constructor() {\n this.channel = new BroadcastChannel('platform_global_events');\n\n // Handle incoming messages\n this.channel.onmessage = (event) => {\n const { type, payload, requestId, response, sourceId } = event.data;\n // Prevent processing the same event multiple times (multi-tab synchronization)\n if (requestId && this.multiTabEventHistory.has(requestId)) {\n return;\n }\n\n if (requestId) {\n this.multiTabEventHistory.add(requestId); // Store processed requestId\n setTimeout(() => this.multiTabEventHistory.delete(requestId), 10000); // Cleanup after 10 sec\n }\n\n // Handle responses to pending requests\n if (requestId && !isUndefined(response) && this.pendingRequests.has(requestId)) {\n this.pendingRequests.get(requestId)!(response);\n this.pendingRequests.delete(requestId);\n return;\n }\n\n // Handle normal broadcast events\n // Ignore events originating from this same instance to avoid double-delivery\n if (sourceId && sourceId === this.instanceId) {\n return;\n }\n if (type && this.eventSubjects.has(type)) {\n this.eventSubjects.get(type)!.next({ data: payload, requestId });\n }\n };\n }\n\n /**\n * Publish an event without expecting a response\n */\n public publish<T>(type: string, payload?: T): void {\n this.channel.postMessage({ type, payload, sourceId: this.instanceId });\n // Local echo so same-tab listeners receive the event as well\n if (this.eventSubjects.has(type)) {\n this.eventSubjects.get(type)!.next({ data: payload });\n }\n }\n\n /**\n * Subscribe to an event\n */\n public listen<T>(type: string): Observable<{ data: T; requestId?: string }> {\n if (!this.eventSubjects.has(type)) {\n this.eventSubjects.set(type, new Subject<{ data: T; requestId?: string }>());\n }\n return this.eventSubjects.get(type)!.asObservable();\n }\n\n /**\n * Unsubscribe from an event\n */\n public unsubscribe(type: string): void {\n if (this.eventSubjects.has(type)) {\n this.eventSubjects.get(type)!.complete();\n this.eventSubjects.delete(type);\n }\n }\n\n /**\n * Send a message and wait for a response with retry logic\n */\n public async sendAndWaitForResponse<T, R>(\n type: string,\n payload?: T,\n options: { timeout: number; retries: number; retryDelay: number } = {\n timeout: 60 * 60 * 1000,\n retries: 3,\n retryDelay: 1000,\n },\n ): Promise<R> {\n const requestId = AXPDataGenerator.uuid();\n\n const attemptRequest = (attempt: number): Promise<R> => {\n return new Promise<R>((resolve, reject) => {\n this.pendingRequests.set(requestId, resolve);\n\n this.channel.postMessage({ type, payload, requestId });\n\n setTimeout(() => {\n if (this.pendingRequests.has(requestId)) {\n this.pendingRequests.delete(requestId);\n if (attempt < options.retries) {\n console.warn(`Retrying request '${type}' (${attempt + 1}/${options.retries})...`);\n resolve(attemptRequest(attempt + 1)); // Retry request\n } else {\n reject(new Error(`Timeout: No response received for event '${type}' after ${options.retries} attempts.`));\n }\n }\n }, options.timeout);\n });\n };\n\n return attemptRequest(0);\n }\n\n /**\n * Respond to a request\n */\n public respondToRequest(requestId: string, response: any): void {\n if (!requestId) {\n console.warn('Invalid requestId. Cannot send response.');\n return;\n }\n this.channel.postMessage({ requestId, response });\n }\n\n /**\n * Cleanup when the service is destroyed\n */\n ngOnDestroy(): void {\n this.channel.close();\n\n // Complete all subjects\n this.eventSubjects.forEach((subject) => subject.complete());\n this.eventSubjects.clear();\n\n // Reject all pending requests to avoid dangling promises\n this.pendingRequests.forEach((resolve, requestId) => {\n resolve(Promise.reject(new Error(`Service destroyed. Request ${requestId} was not completed.`)));\n });\n this.pendingRequests.clear();\n\n // Cleanup multi-tab event history\n this.multiTabEventHistory.clear();\n }\n}\n","import { Injectable, Injector, inject, runInInjectionContext } from '@angular/core';\nimport {\n AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER,\n AXPDistributedEventListenerProvider,\n} from '../distributed-events/distributed-event-listener.provider';\n\n@Injectable({ providedIn: 'root' })\nexport class AXPHookService {\n private readonly listenerProviders =\n inject(AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER, { optional: true }) || [];\n private readonly injector = inject(Injector);\n\n /**\n * Resolve all providers (handle both direct providers and Promise<provider>)\n */\n private async resolveProviders(): Promise<AXPDistributedEventListenerProvider<any, any>[]> {\n return Promise.all(\n this.listenerProviders.map(p =>\n p instanceof Promise ? p : Promise.resolve(p)\n )\n );\n }\n\n /**\n * Fire sync hooks (fire-and-forget).\n * All providers with the given key will be executed.\n * Execution is not awaited.\n */\n public fire<T>(key: string, data: T): void {\n this.resolveProviders().then(providers => {\n providers\n .filter(p => p.key === key)\n .sort((a, b) => (a.priority ?? 0) - (b.priority ?? 0))\n .forEach(p => {\n try {\n runInInjectionContext(this.injector, () => p.execute(data));\n } catch (err) {\n console.error(`[AXPHookService] Hook '${key}' failed`, err);\n }\n });\n });\n }\n\n /**\n * Run async hooks sequentially (waterfall).\n * The output of each hook is passed as input to the next hook.\n * Returns the final merged data after all hooks are executed.\n */\n public async runAsync<T>(key: string, initialData: T): Promise<T> {\n const providers = (await this.resolveProviders())\n .filter(p => p.key === key)\n .sort((a, b) => (a.priority ?? 0) - (b.priority ?? 0));\n\n let data = initialData;\n for (const p of providers) {\n data = await Promise.resolve(\n runInInjectionContext(this.injector, () => p.execute(data))\n );\n }\n return data;\n }\n}\n","//#region ---- Imports ----\n\n\n//#endregion\n\n//#region ---- Feature Definition Types ----\n\n/**\n * Feature definition in module manifest.\n * Defines available features with default values.\n */\nexport interface AXPModuleFeatureDefinition {\n /**\n * Feature title (translation key or literal)\n */\n title: string;\n\n /**\n * Feature description (translation key or literal)\n */\n description?: string;\n\n /**\n * Default value for the feature.\n * Used when user doesn't have explicit feature value.\n */\n defaultValue: boolean | number | string | string[] | null;\n\n /**\n * Type hint for validation and UI rendering\n */\n type?: 'boolean' | 'number' | 'string' | 'array';\n\n /**\n * Widget interface for feature configuration UI (optional)\n */\n interface?: {\n type: string;\n options?: Record<string, any>;\n };\n}\n\n/**\n * Feature definition in array format (with key).\n * Used when features are defined as an array in manifest.\n */\nexport interface AXPModuleFeatureDefinitionWithKey extends AXPModuleFeatureDefinition {\n /**\n * Full feature key (ModuleName.FeatureKey format).\n * When using array format, this must be provided.\n */\n key: string;\n}\n\n//#endregion\n\n//#region ---- Manifest Types ----\n\n/**\n * Module manifest structure.\n * Defines module metadata and dependencies.\n * Features are provided via AXP_FEATURE_DEFINITION_PROVIDER token.\n */\nexport interface AXPModuleManifest {\n /**\n * Module name (must match RootConfig.module.name)\n */\n name: string;\n\n /**\n * Module version\n */\n version: string;\n\n /**\n * Module title (can reference const.ts or be translation key)\n */\n title: string;\n\n /**\n * Module description (optional)\n */\n description?: string;\n\n /**\n * Module icon (can reference const.ts)\n */\n icon?: string;\n\n /**\n * i18n scope name (can reference const.ts)\n */\n i18n?: string;\n\n /**\n * Module dependencies.\n * Simple array format: module names (e.g., \"MeasurementCore\") or feature keys (e.g., \"DataManagement.MetaDataDefinitions\").\n * Features use ModuleName.FeatureKey format (dot separator).\n */\n dependencies?: string[];\n\n /**\n * Whether this module is required (always enabled, cannot be disabled).\n * Required modules like 'auth' and 'common' are always available.\n */\n required?: boolean;\n\n /**\n * Additional metadata\n */\n metadata?: {\n [key: string]: any;\n };\n}\n\n/**\n * Full feature name with module prefix.\n * Format: ModuleName.FeatureKey\n */\nexport type AXPFeatureName = string;\n\n/**\n * Feature definition with full name.\n */\nexport interface AXPFeatureDefinition extends AXPModuleFeatureDefinition {\n /**\n * Full feature name (ModuleName.FeatureKey)\n */\n name: AXPFeatureName;\n\n /**\n * Module name\n */\n module: string;\n\n /**\n * Feature key (short name)\n */\n key: string;\n}\n\n//#endregion\n\n","//#region ---- Provider Interfaces ----\n\nimport { InjectionToken } from '@angular/core';\nimport { AXPModuleManifest } from './module-manifest.types';\n\n/**\n * Session service interface for module provider operations.\n * Implementation: @acorex/platform/auth\n */\nexport interface AXPISessionService {\n isLoading$: any;\n status$: any;\n tenant: any | null;\n application: any | null;\n user: any | null;\n}\n\n/**\n * Injection token for session service.\n * Implementation: @acorex/platform/auth\n */\nexport const AXP_SESSION_SERVICE = new InjectionToken<AXPISessionService>(\n 'AXP_SESSION_SERVICE'\n);\n\n/**\n * Injection token for module manifest providers.\n * Modules register their manifest providers using this token.\n */\nexport const AXP_MODULE_MANIFEST_PROVIDER = new InjectionToken<AXPModuleManifest[]>(\n 'AXP_MODULE_MANIFEST_PROVIDER'\n);\n\n//#endregion\n\n\n\n\n","//#region ---- Imports ----\n\nimport { InjectionToken } from '@angular/core';\nimport { AXPModuleFeatureDefinition } from './module-manifest.types';\n\n//#endregion\n\n//#region ---- Feature Definition Provider Interface ----\n\n/**\n * Context for feature definition providers.\n * Allows providers to add additional feature definitions dynamically.\n */\nexport class AXPFeatureDefinitionProviderContext {\n private readonly features: Map<string, AXPModuleFeatureDefinition> = new Map();\n\n /**\n * Add a feature definition.\n * @param key Full feature key (ModuleName:FeatureKey format with colon separator)\n * @param definition Feature definition\n */\n addFeature(key: string, definition: AXPModuleFeatureDefinition): void {\n this.features.set(key, definition);\n }\n\n /**\n * Get all feature definitions.\n */\n getFeatures(): Map<string, AXPModuleFeatureDefinition> {\n return this.features;\n }\n}\n\n/**\n * Interface for feature definition providers.\n * Used to dynamically provide feature definitions for modules.\n */\nexport interface AXPFeatureDefinitionProvider {\n /**\n * Provide feature definitions.\n * @param context Context for adding feature definitions\n */\n provide(context: AXPFeatureDefinitionProviderContext): Promise<void>;\n}\n\n/**\n * Injection token for feature definition providers.\n */\nexport const AXP_FEATURE_DEFINITION_PROVIDER = new InjectionToken<AXPFeatureDefinitionProvider[]>(\n 'AXP_FEATURE_DEFINITION_PROVIDER',\n {\n providedIn: 'root',\n factory: () => [],\n }\n);\n\n//#endregion\n\n","//#region ---- Imports ----\n\nimport { Injectable, inject, Injector } from '@angular/core';\nimport { AXPModuleManifest, AXPFeatureDefinition, AXPFeatureName } from './module-manifest.types';\nimport { AXP_MODULE_MANIFEST_PROVIDER } from './provider-interfaces';\nimport { AXP_FEATURE_DEFINITION_PROVIDER, AXPFeatureDefinitionProviderContext } from './feature-definition.provider';\n\n//#endregion\n\n//#region ---- Registry Service ----\n\n/**\n * Registry service for module manifests.\n * Collects and manages all registered module manifests.\n */\n@Injectable({ providedIn: 'root' })\nexport class AXPModuleManifestRegistry {\n //#region ---- Fields ----\n\n private readonly manifests = new Map<string, AXPModuleManifest>();\n private readonly featureDefinitions = new Map<AXPFeatureName, AXPFeatureDefinition>();\n private readonly injector = inject(Injector);\n private initializationPromise: Promise<void> | null = null;\n private isInitialized = false;\n\n //#endregion\n\n //#region ---- Initialization ----\n\n /**\n * Initialize registry by loading all manifest providers.\n * Should be called during app startup.\n * Safe to call multiple times - will only initialize once.\n */\n async initialize(): Promise<void> {\n // If already initialized, return immediately\n if (this.isInitialized) {\n return;\n }\n\n // If initialization is in progress, wait for it\n if (this.initializationPromise) {\n return this.initializationPromise;\n }\n\n // Start initialization\n this.initializationPromise = this._doInitialize();\n await this.initializationPromise;\n }\n\n /**\n * Internal initialization logic.\n */\n private async _doInitialize(): Promise<void> {\n // Get manifests from injector (using useValue, they are provided directly)\n let manifests: AXPModuleManifest[];\n try {\n const injectedManifests = this.injector.get(AXP_MODULE_MANIFEST_PROVIDER, []);\n manifests = Array.isArray(injectedManifests) ? injectedManifests : injectedManifests ? [injectedManifests] : [];\n } catch (error) {\n console.error('Failed to get manifest providers from injector:', error);\n manifests = [];\n }\n\n // Register all manifests directly\n const registerPromises = manifests.map(async (manifest: AXPModuleManifest) => {\n try {\n // Validate manifest\n if (!manifest) {\n console.error('Invalid manifest:', manifest);\n return;\n }\n await this.register(manifest);\n } catch (error) {\n console.error(`Failed to register manifest:`, error);\n }\n });\n\n await Promise.all(registerPromises);\n\n // Load and register features from all feature definition providers\n await this.loadFeatureDefinitions();\n\n this.isInitialized = true;\n }\n\n //#endregion\n\n //#region ---- Manifest Management ----\n\n /**\n * Register a module manifest.\n */\n async register(manifest: AXPModuleManifest): Promise<void> {\n // Validate manifest\n if (!manifest.name) {\n throw new Error('Manifest must have a name');\n }\n\n if (!manifest.version) {\n throw new Error(`Manifest for module '${manifest.name}' must have a version`);\n }\n\n // Register manifest\n this.manifests.set(manifest.name, manifest);\n }\n\n /**\n * Get manifest for a module.\n */\n get(moduleName: string): AXPModuleManifest | undefined {\n return this.manifests.get(moduleName);\n }\n\n /**\n * Get all registered manifests.\n */\n getAll(): AXPModuleManifest[] {\n return Array.from(this.manifests.values());\n }\n\n /**\n * Check if a module manifest is registered.\n */\n has(moduleName: string): boolean {\n return this.manifests.has(moduleName);\n }\n\n /**\n * Load feature definitions from all registered feature definition providers.\n * Features are automatically associated with modules based on the module name in the feature key.\n */\n private async loadFeatureDefinitions(): Promise<void> {\n try {\n const featureProviders = this.injector.get(AXP_FEATURE_DEFINITION_PROVIDER, []);\n if (!featureProviders || featureProviders.length === 0) {\n return;\n }\n\n const context = new AXPFeatureDefinitionProviderContext();\n\n // Call all providers to collect features\n for (const provider of featureProviders) {\n if (provider instanceof Promise) {\n // If provider is a promise, resolve it\n const resolvedProvider = await provider;\n await resolvedProvider.provide(context);\n } else {\n // If provider is a direct instance, use it directly\n await provider.provide(context);\n }\n }\n\n // Register all features and associate them with their modules\n const features = context.getFeatures();\n for (const [key, definition] of features.entries()) {\n // Extract module name from key (format: ModuleName:FeatureKey)\n const [moduleName, ...keyParts] = key.split(':');\n const shortKey = keyParts.join(':');\n\n // Verify that the module exists\n if (!this.has(moduleName)) {\n console.warn(`Feature '${key}' references unknown module '${moduleName}'. Skipping.`);\n continue;\n }\n\n // Register feature definition\n this.registerFeatureDefinition({\n ...definition,\n name: key,\n module: moduleName,\n key: shortKey,\n });\n }\n } catch (error) {\n console.error('Failed to load feature definitions:', error);\n }\n }\n\n //#endregion\n\n //#region ---- Feature Definition Management ----\n\n /**\n * Get all feature definitions from all manifests.\n */\n getAllFeatureDefinitions(): AXPFeatureDefinition[] {\n return Array.from(this.featureDefinitions.values());\n }\n\n /**\n * Get feature definition by full name.\n */\n getFeatureDefinition(featureName: AXPFeatureName): AXPFeatureDefinition | undefined {\n return this.featureDefinitions.get(featureName);\n }\n\n /**\n * Check if a feature is defined in any manifest.\n */\n isFeatureDefined(featureName: AXPFeatureName): boolean {\n return this.featureDefinitions.has(featureName);\n }\n\n /**\n * Get default value for a feature.\n * Returns undefined if feature is not defined.\n */\n getFeatureDefault(featureName: AXPFeatureName): any {\n const definition = this.getFeatureDefinition(featureName);\n return definition?.defaultValue;\n }\n\n /**\n * Get all feature definitions for a specific module.\n */\n getModuleFeatures(moduleName: string): AXPFeatureDefinition[] {\n return Array.from(this.featureDefinitions.values()).filter((def) => def.module === moduleName);\n }\n\n /**\n * Register a feature definition dynamically (e.g., from feature definition provider).\n * Used to add features that are defined at runtime via AXP_FEATURE_DEFINITION_PROVIDER.\n */\n registerFeatureDefinition(definition: AXPFeatureDefinition): void {\n this.featureDefinitions.set(definition.name, definition);\n }\n\n //#endregion\n\n //#region ---- Dependency Checking ----\n\n /**\n * Check if module dependencies are satisfied.\n * Returns array of missing dependencies.\n * Dependencies can be module names or feature keys (ModuleName.FeatureKey format).\n */\n checkDependencies(moduleName: string): {\n missingModules: string[];\n missingFeatures: string[];\n } {\n const manifest = this.get(moduleName);\n if (!manifest?.dependencies || manifest.dependencies.length === 0) {\n return { missingModules: [], missingFeatures: [] };\n }\n\n const missingModules: string[] = [];\n const missingFeatures: string[] = [];\n\n for (const dependency of manifest.dependencies) {\n // If dependency contains a dot, it's a feature (ModuleName.FeatureKey)\n if (dependency.includes('.')) {\n // Convert dependency format (ModuleName.FeatureKey) to feature name format (ModuleName:Feature:FeatureKey)\n const [moduleName, featureKey] = dependency.split('.');\n const featureName = `${moduleName}:Feature:${featureKey}`;\n if (!this.isFeatureDefined(featureName)) {\n missingFeatures.push(dependency);\n }\n } else {\n // Otherwise, it's a module name\n if (!this.has(dependency)) {\n missingModules.push(dependency);\n }\n }\n }\n\n return { missingModules, missingFeatures };\n }\n\n //#endregion\n}\n\n//#endregion\n\n","//#region ---- Imports ----\n\nimport { AXDataSource } from '@acorex/cdk/common';\nimport {\n AXPDataSourceDefinition,\n AXPDataSourceDefinitionProvider,\n} from '../data/datasource-definition-provider.service';\nimport { AXPFilterDefinition } from '../types/filter.types';\nimport { inject } from '@angular/core';\nimport { AXPModuleManifestRegistry } from './module-manifest.registry';\n\n//#endregion\n\n//#region ---- Module manifests data source ----\n\n/**\n * Registered module manifests for select widgets via dataSource name {@link MODULE_MANIFESTS_DATASOURCE_NAME}.\n */\nexport const MODULE_MANIFESTS_DATASOURCE_NAME = 'platform-module-manifests';\n\n/**\n * Data source definition for module names/titles from {@link AXPModuleManifestRegistry}.\n */\nexport class AXPModuleManifestsDataSourceDefinition implements AXPDataSourceDefinitionProvider {\n //#region ---- Services & Dependencies ----\n\n private readonly manifestRegistry = inject(AXPModuleManifestRegistry);\n\n //#endregion\n\n //#region ---- Public API ----\n\n async items(): Promise<AXPDataSourceDefinition[]> {\n return [\n {\n name: MODULE_MANIFESTS_DATASOURCE_NAME,\n title: 'Module manifests',\n source: () =>\n new AXDataSource({\n key: 'id',\n load: async () => {\n await this.manifestRegistry.initialize();\n const list = this.manifestRegistry.getAll().map((m) => ({\n id: m.name,\n title: m.title || m.name,\n }));\n return { items: list, total: list.length };\n },\n byKey: async (key: unknown) => {\n await this.manifestRegistry.initialize();\n const m = this.manifestRegistry.getAll().find((x) => x.name === key);\n return m ? { id: m.name, title: m.title || m.name } : undefined;\n },\n pageSize: 1000,\n }),\n columns: [\n {\n name: 'id',\n title: 'ID',\n datatype: 'string',\n type: 'text-editor',\n },\n {\n name: 'title',\n title: 'Title',\n datatype: 'string',\n type: 'text-editor',\n },\n ],\n filters: [\n {\n field: 'title',\n title: 'Title',\n operator: { type: 'equal' },\n widget: { type: 'text-editor' },\n filterType: { advance: true, inline: true },\n } as AXPFilterDefinition,\n ],\n textField: { name: 'title', title: 'Title' },\n valueField: { name: 'id', title: 'ID' },\n },\n ];\n }\n\n //#endregion\n}\n\n//#endregion\n","import { Injectable, inject, provideAppInitializer } from '@angular/core';\nimport { AXPStartUpTask } from './app-startup.types';\n\n\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXPAppStartUpService {\n private tasks: AXPStartUpTask[] = [];\n\n registerTask(task: AXPStartUpTask) {\n this.tasks.push(task);\n }\n\n async runAllTasks() {\n for (const task of this.tasks.sort((a, b) => a.priority - b.priority)) {\n this.updateStatus(task.statusText);\n await task.run();\n }\n }\n\n private updateStatus(status: string) {\n const loadingText = document.querySelector('#loadingText');\n if (loadingText) {\n loadingText.innerHTML = status;\n }\n }\n}\n\nfunction initAppFactory(appInitService: AXPAppStartUpService) {\n return () => appInitService.runAllTasks();\n}\n\nexport const AXPAppStartUpProvider = provideAppInitializer(() => {\n const initializerFn = initAppFactory(inject(AXPAppStartUpService));\n return initializerFn();\n});\n","//#region ---- Imports ----\n\nimport { Injector, NgModule } from '@angular/core';\nimport { AXPAppStartUpService } from '../startup/app-startup.service';\nimport { AXPModuleManifestRegistry } from './module-manifest.registry';\n\n//#endregion\n\n//#region ---- Module ----\n\n/**\n * Module for managing module manifests initialization.\n * Handles the registration of manifest startup tasks.\n */\n@NgModule({\n providers: [],\n})\nexport class AXPModuleManifestModule {\n /**\n * @ignore\n * Initializes module manifest tasks on module construction.\n */\n constructor(\n appInitService: AXPAppStartUpService,\n injector: Injector,\n ) {\n const manifestRegistry = injector.get(AXPModuleManifestRegistry);\n\n // Register manifest initialization task\n appInitService.registerTask(\n {\n name: 'ModuleManifests',\n statusText: 'Loading module manifests...',\n priority: 1, // Load early, before features/permissions\n run: async () => {\n await manifestRegistry.initialize();\n },\n }\n );\n }\n}\n\n//#endregion\n\n","//#region ---- Imports ----\n\nimport type { AXPMultiLanguageString } from '../types/core.types';\n\n//#endregion\n\n//#region ---- Public API ----\n\nconst LOCALE_KEY_REGEX = /^(\\*-\\*|[a-z]{2}-[A-Z]{2})$/;\n\n/**\n * Checks whether value is a valid locale map (`xx-XX` or `*-*` keys, string values).\n */\nexport function isValidMultiLanguageObject(value: unknown): value is Record<string, string> {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n return false;\n }\n\n const entries = Object.entries(value);\n if (!entries.length) {\n return false;\n }\n\n return entries.every(([key, entryValue]) => LOCALE_KEY_REGEX.test(key) && typeof entryValue === 'string');\n}\n\n/**\n * Resolves {@link AXPMultiLanguageString} to a single string for the given locale.\n * Fallback order: `currentLocale` → `en-US` → first map value.\n */\nexport function resolveMultiLanguageString(\n content: AXPMultiLanguageString | null | undefined,\n currentLocale: string,\n): string {\n if (content == null || content === '') {\n return '';\n }\n if (typeof content === 'string') {\n return content;\n }\n if (!isValidMultiLanguageObject(content)) {\n return String(content);\n }\n\n const record = content;\n const pick =\n record[currentLocale] ??\n record['en-US'] ??\n Object.values(record).find((v) => v != null);\n if (pick == null || pick === '') {\n return '';\n }\n if (typeof pick === 'string') {\n return pick;\n }\n return String(pick);\n}\n\n/**\n * Creates an {@link AXPMultiLanguageString} with `en-US` and `fa-IR` entries.\n * Use for seed data, tests, and demos that supply English and Persian copy explicitly.\n */\nexport function createMultiLanguageString(enUs: string, faIr: string): AXPMultiLanguageString {\n return { 'en-US': enUs, 'fa-IR': faIr };\n}\n\n/**\n * True when there is no displayable text in any locale (plain string or ML map).\n * Pure helper for predicates (e.g. default section detection); prefer widgets / pipes for display.\n */\nexport function isEffectivelyEmptyLocalizedValue(value: unknown): boolean {\n if (value == null) return true;\n if (typeof value === 'string') return value.trim() === '';\n if (typeof value !== 'object' || Array.isArray(value)) return false;\n const record = value as Record<string, unknown>;\n return Object.values(record).every((v) => v == null || String(v).trim() === '');\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { inject, Injectable } from '@angular/core';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { merge, Observable, of } from 'rxjs';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\nimport type { AXPMultiLanguageString } from '../types/core.types';\nimport { isValidMultiLanguageObject, resolveMultiLanguageString } from './resolve-axp-multi-language-string';\n\n//#endregion\n\n//#region ---- AXPMultiLanguageStringResolverService ----\n\n/**\n * Resolves {@link AXPMultiLanguageString} using the active app locale, and exposes\n * {@link currentLocale$} for code that prefers an observable (e.g. manual subscriptions).\n * Templates usually use {@link AXPResolveMultiLanguageStringPipe} instead.\n */\n@Injectable({ providedIn: 'root' })\nexport class AXPMultiLanguageStringResolverService {\n //#region ---- Services & Dependencies ----\n\n private readonly translation = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Locale stream ----\n\n /**\n * Emits the active locale on subscribe and whenever the language changes.\n */\n readonly currentLocale$: Observable<string> = merge(\n of(this.translation.getActiveLang()),\n this.translation.langChanges$,\n ).pipe(\n map(() => this.translation.getActiveLang()),\n distinctUntilChanged(),\n );\n\n //#endregion\n\n //#region ---- Resolve ----\n\n /**\n * Resolves multi-language content for an optional locale (defaults to active).\n */\n resolve(content: AXPMultiLanguageString | null | undefined, locale?: string): string {\n if (content && typeof content === 'object' && !isValidMultiLanguageObject(content)) {\n return '';\n }\n return resolveMultiLanguageString(content, locale ?? this.translation.getActiveLang());\n }\n\n /**\n * Checks if a value is a valid multi-language object map.\n * Key format must be `xx-XX` (e.g. en-US, fa-IR) or fallback `*-*`.\n * All values must be strings.\n */\n isValidMultiLanguageObject(value: unknown): value is Record<string, string> {\n return isValidMultiLanguageObject(value);\n }\n\n /**\n * Normalizes multi-language content to a locale map for editors (e.g. multi-language popup `values`).\n * If `content` is already a locale-to-string map, returns a shallow copy.\n * If it is a plain string or empty, wraps it as `{ [activeLocale]: text }`.\n */\n toLocaleMap(\n content: AXPMultiLanguageString | null | undefined,\n activeLocale: string,\n ): Record<string, string> {\n if (this.isValidMultiLanguageObject(content)) {\n return { ...content };\n }\n const txt = typeof content === 'string' ? content : '';\n return { [activeLocale]: txt };\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { ChangeDetectorRef, inject, OnDestroy, Pipe, PipeTransform } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport type { AXPMultiLanguageString } from '../types/core.types';\nimport { AXPMultiLanguageStringResolverService } from './axp-multi-language-string-resolver.service';\n\n//#endregion\n\n//#region ---- AXPResolveMultiLanguageStringPipe ----\n\n/**\n * Resolves {@link AXPMultiLanguageString} via {@link AXPMultiLanguageStringResolverService}.\n * Impure and subscribes to {@link AXPMultiLanguageStringResolverService#currentLocale$} so\n * OnPush hosts (e.g. grid cells) still refresh when the language changes.\n *\n * Optional second argument: explicit locale (e.g. from a host `locale` input). When omitted or null/empty,\n * the active language is used.\n *\n * @example\n * ```html\n * {{ value | axpResolveMultiLanguageString }}\n * {{ value | axpResolveMultiLanguageString: locale() }}\n * ```\n */\n@Pipe({\n name: 'axpResolveMultiLanguageString',\n standalone: true,\n pure: false,\n})\nexport class AXPResolveMultiLanguageStringPipe implements PipeTransform, OnDestroy {\n private readonly resolver = inject(AXPMultiLanguageStringResolverService);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly localeSubscription: Subscription = this.resolver.currentLocale$.subscribe(() =>\n this.cdr.markForCheck(),\n );\n\n transform(value: AXPMultiLanguageString | null | undefined, locale?: string | null): string {\n const explicitLocale = locale != null && locale !== '' ? locale : undefined;\n return this.resolver.resolve(value, explicitLocale);\n }\n\n ngOnDestroy(): void {\n this.localeSubscription.unsubscribe();\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport type { AXPMultiLanguageString } from '../types/core.types';\nimport { resolveMultiLanguageString } from './resolve-axp-multi-language-string';\n\n//#endregion\n\n//#region ---- Compare & sort ----\n\nconst DEFAULT_COLLATOR_OPTIONS: Intl.CollatorOptions = { sensitivity: 'base' };\n\n/**\n * Locale-aware comparison of {@link AXPMultiLanguageString} values (plain string, `@scope:key`, or locale map).\n * Resolves each side with {@link resolveMultiLanguageString} for `locale`, then compares with `String#localeCompare`.\n */\nexport function compareMultiLanguageStrings(\n a: AXPMultiLanguageString | null | undefined,\n b: AXPMultiLanguageString | null | undefined,\n locale: string,\n collatorOptions: Intl.CollatorOptions = DEFAULT_COLLATOR_OPTIONS,\n): number {\n const sa = resolveMultiLanguageString(a ?? '', locale);\n const sb = resolveMultiLanguageString(b ?? '', locale);\n return sa.localeCompare(sb, locale, collatorOptions);\n}\n\n/**\n * Stable sort copy: orders items by resolved string for `getValue(item)` using the active `locale`.\n */\nexport function sortByMultiLanguageString<T>(\n items: readonly T[],\n getValue: (item: T) => AXPMultiLanguageString | null | undefined,\n locale: string,\n collatorOptions?: Intl.CollatorOptions,\n): T[] {\n return [...items].sort((x, y) =>\n compareMultiLanguageStrings(getValue(x), getValue(y), locale, collatorOptions),\n );\n}\n\n//#endregion\n","//#region ---- Tag Types ----\n\n/**\n * Represents a tag with text, color, and metadata\n */\nexport interface AXPTag {\n id?: string;\n title: string;\n color: string;\n description?: string;\n scope?: 'system' | 'tenant' | 'user';\n}\n\n/**\n * Options for filtering tags\n */\nexport interface AXPTagFilterOptions {\n scope?: ('system' | 'tenant' | 'user')[];\n search?: string;\n}\n\n//#endregion\n\n","import { InjectionToken } from '@angular/core';\nimport { AXPTag } from './tag.types';\n\n//#region ---- Tag Provider ----\n\n/**\n * Abstract class for tag providers\n * Implement this to provide tags from different sources (system, tenant, user, etc.)\n */\nexport abstract class AXPTagProvider {\n /**\n * Unique name for this provider (e.g., 'system', 'tenant', 'user')\n */\n abstract name: string;\n\n /**\n * Provide tags from this source\n * @returns Promise of tags\n */\n abstract provide(): Promise<AXPTag[]>;\n\n /**\n * Create a new tag (optional - not all providers support creation)\n * @param tag Tag to create\n * @returns Created tag with id\n */\n async create?(tag: Omit<AXPTag, 'id'>): Promise<AXPTag> {\n throw new Error(`Provider ${this.name} does not support tag creation`);\n }\n\n /**\n * Update an existing tag (optional)\n * @param tag Tag to update\n * @returns Updated tag\n */\n async update?(tag: AXPTag): Promise<AXPTag> {\n throw new Error(`Provider ${this.name} does not support tag updates`);\n }\n\n /**\n * Delete a tag (optional)\n * @param id Tag id to delete\n */\n async delete?(id: string): Promise<void> {\n throw new Error(`Provider ${this.name} does not support tag deletion`);\n }\n}\n\n/**\n * Injection token for tag providers\n * Use this to register multiple tag providers\n */\nexport const AXP_TAG_PROVIDER = new InjectionToken<AXPTagProvider[]>('AXP_TAG_PROVIDER');\n\n//#endregion\n\n","import { inject, Injectable } from '@angular/core';\nimport { AXPTag, AXPTagFilterOptions } from './tag.types';\nimport { AXP_TAG_PROVIDER, AXPTagProvider } from './tag.provider';\n\n//#region ---- Tag Service ----\n\n/**\n * Service for managing tags from multiple providers\n * Aggregates tags from all registered providers\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class AXPTagService {\n\n //#region ---- Dependencies ----\n\n private providers: AXPTagProvider[] = inject(AXP_TAG_PROVIDER, { optional: true }) ?? [];\n\n //#endregion\n\n //#region ---- State ----\n\n private cache: AXPTag[] | null = null;\n\n //#endregion\n\n //#region ---- Public API ----\n\n /**\n * Get all tags from all providers\n * @param options Filter options\n * @returns Promise of tags\n */\n async getTags(options?: AXPTagFilterOptions): Promise<AXPTag[]> {\n if (!this.cache) {\n await this.loadTags();\n }\n\n let tags = this.cache!;\n\n // Apply scope filter\n if (options?.scope && options.scope.length > 0) {\n tags = tags.filter((tag) => tag.scope && options.scope!.includes(tag.scope));\n }\n\n // Apply search filter\n if (options?.search) {\n const searchLower = options.search.toLowerCase();\n tags = tags.filter(\n (tag) =>\n tag.title.toLowerCase().includes(searchLower) ||\n tag.description?.toLowerCase().includes(searchLower),\n );\n }\n\n return tags;\n }\n\n /**\n * Create a new tag using the appropriate provider\n * @param tag Tag to create\n * @param providerName Provider to use (defaults to first writable provider)\n * @returns Created tag\n */\n async createTag(tag: Omit<AXPTag, 'id'>, providerName?: string): Promise<AXPTag> {\n const provider = providerName\n ? this.providers.find((p) => p.name === providerName)\n : this.providers.find((p) => p.create);\n\n if (!provider || !provider.create) {\n throw new Error('No writable tag provider available');\n }\n\n const createdTag = await provider.create(tag);\n\n // Invalidate cache\n this.cache = null;\n\n return createdTag;\n }\n\n /**\n * Update an existing tag\n * @param tag Tag to update\n * @returns Updated tag\n */\n async updateTag(tag: AXPTag): Promise<AXPTag> {\n const provider = this.providers.find((p) => p.name === tag.scope && p.update);\n\n if (!provider || !provider.update) {\n throw new Error(`No provider found for updating tag with scope: ${tag.scope}`);\n }\n\n const updatedTag = await provider.update(tag);\n\n // Invalidate cache\n this.cache = null;\n\n return updatedTag;\n }\n\n /**\n * Delete a tag\n * @param tagId Tag id to delete\n * @param scope Tag scope\n */\n async deleteTag(tagId: string, scope: string): Promise<void> {\n const provider = this.providers.find((p) => p.name === scope && p.delete);\n\n if (!provider || !provider.delete) {\n throw new Error(`No provider found for deleting tag with scope: ${scope}`);\n }\n\n await provider.delete(tagId);\n\n // Invalidate cache\n this.cache = null;\n }\n\n /**\n * Reload tags from all providers\n */\n async reload(): Promise<void> {\n this.cache = null;\n await this.loadTags();\n }\n\n //#endregion\n\n //#region ---- Private Methods ----\n\n /**\n * Load tags from all providers\n */\n private async loadTags(): Promise<void> {\n const allTags: AXPTag[] = [];\n\n for (const provider of this.providers) {\n try {\n const tags = await provider.provide();\n allTags.push(...tags);\n } catch (error) {\n console.error(`Error loading tags from provider ${provider.name}:`, error);\n }\n }\n\n // Remove duplicates based on title (case-insensitive)\n const uniqueTags = allTags.filter(\n (tag, index, self) =>\n index === self.findIndex((t) => t.title.toLowerCase() === tag.title.toLowerCase()),\n );\n\n this.cache = uniqueTags;\n }\n\n //#endregion\n}\n\n//#endregion\n\n","import { AXStyleColorType } from '@acorex/cdk/common';\n\n/**\n * Additional suggested generic actions for future consideration:\n * \n * Data & Content Actions:\n * - Search = 'search' - Search functionality\n * - Filter = 'filter' - Apply filters\n * - Sort = 'sort' - Sort data\n * - Group = 'group' - Group data\n * - Expand = 'expand' - Expand details\n * - Collapse = 'collapse' - Collapse details\n * - Pin = 'pin' - Pin to favorites\n * - Bookmark = 'bookmark' - Bookmark item\n * - Favorite = 'favorite' - Mark as favorite\n * - Star = 'star' - Star rating\n * \n * Workflow Actions:\n * - Start = 'start' - Start process/workflow\n * - Stop = 'stop' - Stop process\n * - Pause = 'pause' - Pause process\n * - Resume = 'resume' - Resume process\n * - Cancel = 'cancel' - Cancel operation\n * - Complete = 'complete' - Mark as complete\n * - Close = 'close' - Close item\n * - Reopen = 'reopen' - Reopen closed item\n * - Forward = 'forward' - Forward to next step\n * - Back = 'back' - Go back\n * \n * Communication Actions:\n * - Reply = 'reply' - Reply to message\n * - Forward = 'forward' - Forward message\n * - Notify = 'notify' - Send notification\n * - Invite = 'invite' - Invite user\n * - Join = 'join' - Join group/meeting\n * - Leave = 'leave' - Leave group/meeting\n * \n * Security Actions:\n * - Login = 'login' - User login\n * - Logout = 'logout' - User logout\n * - Block = 'block' - Block user/content\n * - Unblock = 'unblock' - Unblock user/content\n * - Ban = 'ban' - Ban user\n * - Unban = 'unban' - Unban user\n * - Verify = 'verify' - Verify identity\n * - Authenticate = 'authenticate' - Authenticate\n * \n * File & Media Actions:\n * - Open = 'open' - Open file\n * - Save = 'save' - Save file\n * - SaveAs = 'save-as' - Save as new file\n * - Attach = 'attach' - Attach file\n * - Detach = 'detach' - Detach file\n * - Compress = 'compress' - Compress files\n * - Extract = 'extract' - Extract archive\n * - Convert = 'convert' - Convert format\n * - Crop = 'crop' - Crop image\n * - Resize = 'resize' - Resize image\n * \n * System Actions:\n * - Sync = 'sync' - Synchronize data\n * - Backup = 'backup' - Create backup\n * - Restore = 'restore' - Restore from backup\n * - Reset = 'reset' - Reset to defaults\n * - Clear = 'clear' - Clear data\n * - Optimize = 'optimize' - Optimize performance\n * - Update = 'update' - Update system\n * - Install = 'install' - Install component\n * - Uninstall = 'uninstall' - Uninstall component\n * - Enable = 'enable' - Enable feature\n * - Disable = 'disable' - Disable feature\n * \n * Analytics & Monitoring:\n * - Monitor = 'monitor' - Monitor activity\n * - Track = 'track' - Track progress\n * - Analyze = 'analyze' - Analyze data\n * - Debug = 'debug' - Debug issue\n * - Log = 'log' - View logs\n * - Alert = 'alert' - Set alert\n * - Dashboard = 'dashboard' - View dashboard\n * - Metrics = 'metrics' - View metrics\n * \n * Collaboration Actions:\n * - Collaborate = 'collaborate' - Start collaboration\n * - Share = 'share' - Share content\n * - Comment = 'comment' - Add comment\n * - Like = 'like' - Like content\n * - Follow = 'follow' - Follow user/content\n * - Subscribe = 'subscribe' - Subscribe to updates\n * - Unsubscribe = 'unsubscribe' - Unsubscribe\n * - Rate = 'rate' - Rate content\n * - Review = 'review' - Review content\n * - Recommend = 'recommend' - Recommend content\n */\n\nexport enum AXPSystemActionType {\n View = 'view',\n Create = 'create',\n Update = 'update',\n Delete = 'delete',\n Approve = 'approve',\n Reject = 'reject',\n Submit = 'submit',\n Export = 'export',\n Import = 'import',\n Print = 'print',\n Assign = 'assign',\n Lock = 'lock',\n Unlock = 'unlock',\n Share = 'share',\n Configure = 'configure',\n Reorder = 'reorder',\n Preview = 'preview',\n Duplicate = 'duplicate',\n Archive = 'archive',\n Publish = 'publish',\n Unpublish = 'unpublish',\n Upload = 'upload',\n Download = 'download',\n Copy = 'copy',\n Move = 'move',\n Rename = 'rename',\n Restore = 'restore',\n Manage = 'manage',\n Info = 'info',\n Confirm = 'confirm',\n Design = 'design',\n VersionHistory = 'version-history',\n Compare = 'compare',\n Comments = 'comments',\n Sign = 'sign',\n Setup = 'setup',\n Send = 'send',\n Report = 'report',\n Sent = 'sent',\n Review = 'review',\n Generate = 'generate',\n Refresh = 'refresh',\n Reload = 'reload',\n Search = 'search',\n Filter = 'filter',\n Sort = 'sort',\n Start = 'start',\n Stop = 'stop',\n Pause = 'pause',\n Cancel = 'cancel',\n Close = 'close',\n Complete = 'complete',\n Save = 'save',\n SaveAs = 'save-as',\n Sync = 'sync',\n Reset = 'reset',\n Clear = 'clear',\n Distribution = 'distribution',\n}\nexport interface AXPSystemAction {\n key: string;\n title: string;\n icon?: string;\n color?: string;\n critical?: boolean;\n descriptions: {\n title: string;\n tooltip: string;\n permission: string;\n audit: string;\n };\n}\n\nconst i18n = (key: string) => `@general:actions.${key}`;\n\nexport const AXPSystemActions = Object.freeze({\n View: {\n key: AXPSystemActionType.View,\n title: i18n('view.title'),\n icon: 'fa-light fa-eye',\n color: 'primary',\n descriptions: {\n title: i18n('view.title'),\n tooltip: i18n('view.description'),\n permission: i18n('view.permission'),\n audit: i18n('view.audit')\n }\n },\n Create: {\n key: AXPSystemActionType.Create,\n title: i18n('create.title'),\n icon: 'fa-light fa-plus',\n color: 'primary',\n descriptions: {\n title: i18n('create.title'),\n tooltip: i18n('create.description'),\n permission: i18n('create.permission'),\n audit: i18n('create.audit')\n }\n },\n Edit: {\n key: AXPSystemActionType.Update,\n title: i18n('edit.title'),\n icon: 'fa-light fa-pen',\n color: 'default',\n descriptions: {\n title: i18n('edit.title'),\n tooltip: i18n('edit.description'),\n permission: i18n('edit.permission'),\n audit: i18n('edit.audit')\n }\n },\n Delete: {\n key: AXPSystemActionType.Delete,\n title: i18n('delete.title'),\n icon: 'fa-light fa-trash',\n color: 'danger',\n critical: true,\n descriptions: {\n title: i18n('delete.title'),\n tooltip: i18n('delete.description'),\n permission: i18n('delete.permission'),\n audit: i18n('delete.audit')\n }\n },\n Approve: {\n key: AXPSystemActionType.Approve,\n title: i18n('approve.title'),\n icon: 'fa-light fa-circle-check',\n color: 'success',\n critical: true,\n descriptions: {\n title: i18n('approve.title'),\n tooltip: i18n('approve.description'),\n permission: i18n('approve.permission'),\n audit: i18n('approve.audit')\n }\n },\n Submit: {\n key: AXPSystemActionType.Submit,\n title: i18n('submit.title'),\n icon: 'fa-light fa-paper-plane',\n color: 'primary',\n descriptions: {\n title: i18n('submit.title'),\n tooltip: i18n('submit.description'),\n permission: i18n('submit.permission'),\n audit: i18n('submit.audit')\n }\n },\n Reject: {\n key: AXPSystemActionType.Reject,\n title: i18n('reject.title'),\n icon: 'fa-light fa-ban',\n color: 'danger',\n critical: true,\n descriptions: {\n title: i18n('reject.title'),\n tooltip: i18n('reject.description'),\n permission: i18n('reject.permission'),\n audit: i18n('reject.audit')\n }\n },\n Export: {\n key: AXPSystemActionType.Export,\n title: i18n('export.title'),\n icon: 'fa-light fa-download',\n color: 'default',\n descriptions: {\n title: i18n('export.title'),\n tooltip: i18n('export.description'),\n permission: i18n('export.permission'),\n audit: i18n('export.audit')\n }\n },\n Import: {\n key: AXPSystemActionType.Import,\n title: i18n('import.title'),\n icon: 'fa-light fa-upload',\n color: 'default',\n descriptions: {\n title: i18n('import.title'),\n tooltip: i18n('import.description'),\n permission: i18n('import.permission'),\n audit: i18n('import.audit')\n }\n },\n Print: {\n key: AXPSystemActionType.Print,\n title: i18n('print.title'),\n icon: 'fa-light fa-print',\n color: 'default',\n descriptions: {\n title: i18n('print.title'),\n tooltip: i18n('print.description'),\n permission: i18n('print.permission'),\n audit: i18n('print.audit')\n }\n },\n Duplicate: {\n key: AXPSystemActionType.Duplicate,\n title: i18n('duplicate.title'),\n icon: 'fa-light fa-clone',\n color: 'warning',\n descriptions: {\n title: i18n('duplicate.title'),\n tooltip: i18n('duplicate.description'),\n permission: i18n('duplicate.permission'),\n audit: i18n('duplicate.audit')\n }\n },\n Archive: {\n key: AXPSystemActionType.Archive,\n title: i18n('archive.title'),\n icon: 'fa-light fa-box-archive',\n color: 'default',\n descriptions: {\n title: i18n('archive.title'),\n tooltip: i18n('archive.description'),\n permission: i18n('archive.permission'),\n audit: i18n('archive.audit')\n }\n },\n Restore: {\n key: AXPSystemActionType.Restore,\n title: i18n('restore.title'),\n icon: 'fa-light fa-arrow-rotate-left',\n color: 'default',\n descriptions: {\n title: i18n('restore.title'),\n tooltip: i18n('restore.description'),\n permission: i18n('restore.permission'),\n audit: i18n('restore.audit')\n }\n },\n Assign: {\n key: AXPSystemActionType.Assign,\n title: i18n('assign.title'),\n icon: 'fa-light fa-user-plus',\n color: 'primary',\n descriptions: {\n title: i18n('assign.title'),\n tooltip: i18n('assign.description'),\n permission: i18n('assign.permission'),\n audit: i18n('assign.audit')\n }\n },\n Lock: {\n key: AXPSystemActionType.Lock,\n title: i18n('lock.title'),\n icon: 'fa-light fa-lock',\n color: 'warning',\n descriptions: {\n title: i18n('lock.title'),\n tooltip: i18n('lock.description'),\n permission: i18n('lock.permission'),\n audit: i18n('lock.audit')\n }\n },\n Unlock: {\n key: AXPSystemActionType.Unlock,\n title: i18n('unlock.title'),\n icon: 'fa-light fa-unlock',\n color: 'success',\n descriptions: {\n title: i18n('unlock.title'),\n tooltip: i18n('unlock.description'),\n permission: i18n('unlock.permission'),\n audit: i18n('unlock.audit')\n }\n },\n Share: {\n key: AXPSystemActionType.Share,\n title: i18n('share.title'),\n icon: 'fa-light fa-share-nodes',\n color: 'info',\n descriptions: {\n title: i18n('share.title'),\n tooltip: i18n('share.description'),\n permission: i18n('share.permission'),\n audit: i18n('share.audit')\n }\n },\n Configure: {\n key: AXPSystemActionType.Configure,\n title: i18n('configure.title'),\n icon: 'fa-light fa-sliders',\n color: 'primary',\n descriptions: {\n title: i18n('configure.title'),\n tooltip: i18n('configure.description'),\n permission: i18n('configure.permission'),\n audit: i18n('configure.audit')\n }\n },\n Reorder: {\n key: AXPSystemActionType.Reorder,\n title: i18n('reorder.title'),\n icon: 'fa-light fa-arrow-down-up-across-line',\n color: 'default',\n descriptions: {\n title: i18n('reorder.title'),\n tooltip: i18n('reorder.description'),\n permission: i18n('reorder.permission'),\n audit: i18n('reorder.audit')\n }\n },\n Preview: {\n key: AXPSystemActionType.Preview,\n title: i18n('preview.title'),\n icon: 'fa-light fa-magnifying-glass',\n color: 'default',\n descriptions: {\n title: i18n('preview.title'),\n tooltip: i18n('preview.description'),\n permission: i18n('preview.permission'),\n audit: i18n('preview.audit')\n }\n },\n Publish: {\n key: AXPSystemActionType.Publish,\n title: i18n('publish.title'),\n icon: 'fa-light fa-globe',\n color: 'success',\n descriptions: {\n title: i18n('publish.title'),\n tooltip: i18n('publish.description'),\n permission: i18n('publish.permission'),\n audit: i18n('publish.audit')\n }\n },\n Unpublish: {\n key: AXPSystemActionType.Unpublish,\n title: i18n('unpublish.title'),\n icon: 'fa-light fa-globe-slash',\n color: 'danger',\n descriptions: {\n title: i18n('unpublish.title'),\n tooltip: i18n('unpublish.description'),\n permission: i18n('unpublish.permission'),\n audit: i18n('unpublish.audit')\n }\n },\n Upload: {\n key: AXPSystemActionType.Upload,\n title: i18n('upload.title'),\n icon: 'fa-light fa-upload',\n color: 'default',\n descriptions: {\n title: i18n('upload.title'),\n tooltip: i18n('upload.description'),\n permission: i18n('upload.permission'),\n audit: i18n('upload.audit')\n }\n },\n Download: {\n key: AXPSystemActionType.Download,\n title: i18n('download.title'),\n icon: 'fa-light fa-download',\n color: 'default',\n descriptions: {\n title: i18n('download.title'),\n tooltip: i18n('download.description'),\n permission: i18n('download.permission'),\n audit: i18n('download.audit')\n }\n },\n Copy: {\n key: AXPSystemActionType.Copy,\n title: i18n('copy.title'),\n icon: 'fa-light fa-copy',\n color: 'default',\n descriptions: {\n title: i18n('copy.title'),\n tooltip: i18n('copy.description'),\n permission: i18n('copy.permission'),\n audit: i18n('copy.audit')\n }\n },\n Move: {\n key: AXPSystemActionType.Move,\n title: i18n('move.title'),\n icon: 'fa-light fa-arrow-right-arrow-left',\n color: 'default',\n descriptions: {\n title: i18n('move.title'),\n tooltip: i18n('move.description'),\n permission: i18n('move.permission'),\n audit: i18n('move.audit')\n }\n },\n Rename: {\n key: AXPSystemActionType.Rename,\n title: i18n('rename.title'),\n icon: 'fa-light fa-pen',\n color: 'default',\n descriptions: {\n title: i18n('rename.title'),\n tooltip: i18n('rename.description'),\n permission: i18n('rename.permission'),\n audit: i18n('rename.audit')\n }\n },\n Manage: {\n key: AXPSystemActionType.Manage,\n title: i18n('manage.title'),\n icon: 'fa-light fa-gear',\n color: 'default',\n descriptions: {\n title: i18n('manage.title'),\n tooltip: i18n('manage.description'),\n permission: i18n('manage.permission'),\n audit: i18n('manage.audit')\n }\n },\n Info: {\n key: AXPSystemActionType.Info,\n title: i18n('info.title'),\n icon: 'fa-light fa-info',\n color: 'default',\n descriptions: {\n title: i18n('info.title'),\n tooltip: i18n('info.description'),\n permission: i18n('info.permission'),\n audit: i18n('info.audit')\n }\n },\n Confirm: {\n key: AXPSystemActionType.Confirm,\n title: i18n('confirm.title'),\n icon: 'fa-light fa-check',\n color: 'success',\n descriptions: {\n title: i18n('confirm.title'),\n tooltip: i18n('confirm.description'),\n permission: i18n('confirm.permission'),\n audit: i18n('confirm.audit')\n }\n },\n Design: {\n key: AXPSystemActionType.Design,\n title: i18n('design.title'),\n icon: 'fa-light fa-paintbrush',\n color: 'default',\n descriptions: {\n title: i18n('design.title'),\n tooltip: i18n('design.description'),\n permission: i18n('design.permission'),\n audit: i18n('design.audit')\n }\n },\n VersionHistory: {\n key: AXPSystemActionType.VersionHistory,\n title: i18n('version-history.title'),\n icon: 'fa-light fa-history',\n color: 'default',\n descriptions: {\n title: i18n('version-history.title'),\n tooltip: i18n('version-history.description'),\n permission: i18n('version-history.permission'),\n audit: i18n('version-history.audit')\n }\n },\n Compare: {\n key: AXPSystemActionType.Compare,\n title: i18n('compare.title'),\n icon: 'fa-light fa-code-compare',\n color: 'default',\n descriptions: {\n title: i18n('compare.title'),\n tooltip: i18n('compare.description'),\n permission: i18n('compare.permission'),\n audit: i18n('compare.audit')\n }\n },\n Comments: {\n key: AXPSystemActionType.Comments,\n title: i18n('comments.title'),\n icon: 'fa-light fa-comments',\n color: 'default',\n descriptions: {\n title: i18n('comments.title'),\n tooltip: i18n('comments.description'),\n permission: i18n('comments.permission'),\n audit: i18n('comments.audit')\n }\n },\n Sign: {\n key: AXPSystemActionType.Sign,\n title: i18n('sign.title'),\n icon: 'fa-light fa-signature',\n color: 'default',\n descriptions: {\n title: i18n('sign.title'),\n tooltip: i18n('sign.description'),\n permission: i18n('sign.permission'),\n audit: i18n('sign.audit')\n }\n },\n Setup: {\n key: AXPSystemActionType.Setup,\n title: i18n('setup.title'),\n icon: 'fa-light fa-cog',\n color: 'default',\n descriptions: {\n title: i18n('setup.title'),\n tooltip: i18n('setup.description'),\n permission: i18n('setup.permission'),\n audit: i18n('setup.audit')\n }\n },\n Send: {\n key: AXPSystemActionType.Send,\n title: i18n('send.title'),\n icon: 'fa-light fa-envelope',\n color: 'default',\n descriptions: {\n title: i18n('send.title'),\n tooltip: i18n('send.description'),\n permission: i18n('send.permission'),\n audit: i18n('send.audit')\n }\n },\n Report: {\n key: AXPSystemActionType.Report,\n title: i18n('report.title'),\n icon: 'fa-light fa-chart-line',\n color: 'default',\n descriptions: {\n title: i18n('report.title'),\n tooltip: i18n('report.description'),\n permission: i18n('report.permission'),\n audit: i18n('report.audit')\n }\n },\n Sent: {\n key: AXPSystemActionType.Sent,\n title: i18n('sent.title'),\n icon: 'fa-light fa-paper-plane',\n color: 'default',\n descriptions: {\n title: i18n('sent.title'),\n tooltip: i18n('sent.description'),\n permission: i18n('sent.permission'),\n audit: i18n('sent.audit')\n }\n },\n Review: {\n key: AXPSystemActionType.Review,\n title: i18n('review.title'),\n icon: 'fa-light fa-eye',\n color: 'default',\n descriptions: {\n title: i18n('review.title'),\n tooltip: i18n('review.description'),\n permission: i18n('review.permission'),\n audit: i18n('review.audit')\n }\n },\n Generate: {\n key: AXPSystemActionType.Generate,\n title: i18n('generate.title'),\n icon: 'fa-light fa-wand-magic-sparkles',\n color: 'primary',\n descriptions: {\n title: i18n('generate.title'),\n tooltip: i18n('generate.description'),\n permission: i18n('generate.permission'),\n audit: i18n('generate.audit')\n }\n },\n Refresh: {\n key: AXPSystemActionType.Refresh,\n title: i18n('refresh.title'),\n icon: 'fa-light fa-arrows-rotate',\n color: 'default',\n descriptions: {\n title: i18n('refresh.title'),\n tooltip: i18n('refresh.description'),\n permission: i18n('refresh.permission'),\n audit: i18n('refresh.audit')\n }\n },\n Reload: {\n key: AXPSystemActionType.Reload,\n title: i18n('reload.title'),\n icon: 'fa-light fa-arrows-rotate',\n color: 'default',\n descriptions: {\n title: i18n('reload.title'),\n tooltip: i18n('reload.description'),\n permission: i18n('reload.permission'),\n audit: i18n('reload.audit')\n }\n },\n Search: {\n key: AXPSystemActionType.Search,\n title: i18n('search.title'),\n icon: 'fa-light fa-magnifying-glass',\n color: 'default',\n descriptions: {\n title: i18n('search.title'),\n tooltip: i18n('search.description'),\n permission: i18n('search.permission'),\n audit: i18n('search.audit')\n }\n },\n Filter: {\n key: AXPSystemActionType.Filter,\n title: i18n('filter.title'),\n icon: 'fa-light fa-filter',\n color: 'default',\n descriptions: {\n title: i18n('filter.title'),\n tooltip: i18n('filter.description'),\n permission: i18n('filter.permission'),\n audit: i18n('filter.audit')\n }\n },\n Sort: {\n key: AXPSystemActionType.Sort,\n title: i18n('sort.title'),\n icon: 'fa-light fa-arrow-down-up-across-line',\n color: 'default',\n descriptions: {\n title: i18n('sort.title'),\n tooltip: i18n('sort.description'),\n permission: i18n('sort.permission'),\n audit: i18n('sort.audit')\n }\n },\n Start: {\n key: AXPSystemActionType.Start,\n title: i18n('start.title'),\n icon: 'fa-light fa-play',\n color: 'success',\n descriptions: {\n title: i18n('start.title'),\n tooltip: i18n('start.description'),\n permission: i18n('start.permission'),\n audit: i18n('start.audit')\n }\n },\n Stop: {\n key: AXPSystemActionType.Stop,\n title: i18n('stop.title'),\n icon: 'fa-light fa-stop',\n color: 'danger',\n critical: true,\n descriptions: {\n title: i18n('stop.title'),\n tooltip: i18n('stop.description'),\n permission: i18n('stop.permission'),\n audit: i18n('stop.audit')\n }\n },\n Pause: {\n key: AXPSystemActionType.Pause,\n title: i18n('pause.title'),\n icon: 'fa-light fa-pause',\n color: 'warning',\n descriptions: {\n title: i18n('pause.title'),\n tooltip: i18n('pause.description'),\n permission: i18n('pause.permission'),\n audit: i18n('pause.audit')\n }\n },\n Cancel: {\n key: AXPSystemActionType.Cancel,\n title: i18n('cancel.title'),\n icon: 'fa-light fa-xmark',\n critical: true,\n descriptions: {\n title: i18n('cancel.title'),\n tooltip: i18n('cancel.description'),\n permission: i18n('cancel.permission'),\n audit: i18n('cancel.audit')\n }\n },\n Close: {\n key: AXPSystemActionType.Close,\n title: i18n('close.title'),\n icon: 'fa-light fa-xmark',\n color: 'default',\n descriptions: {\n title: i18n('close.title'),\n tooltip: i18n('close.description'),\n permission: i18n('close.permission'),\n audit: i18n('close.audit')\n }\n },\n Complete: {\n key: AXPSystemActionType.Complete,\n title: i18n('complete.title'),\n icon: 'fa-light fa-check',\n color: 'success',\n descriptions: {\n title: i18n('complete.title'),\n tooltip: i18n('complete.description'),\n permission: i18n('complete.permission'),\n audit: i18n('complete.audit')\n }\n },\n Save: {\n key: AXPSystemActionType.Save,\n title: i18n('save.title'),\n icon: 'fa-light fa-floppy-disk',\n color: 'primary',\n descriptions: {\n title: i18n('save.title'),\n tooltip: i18n('save.description'),\n permission: i18n('save.permission'),\n audit: i18n('save.audit')\n }\n },\n SaveAs: {\n key: AXPSystemActionType.SaveAs,\n title: i18n('save-as.title'),\n icon: 'fa-light fa-floppy-disk',\n color: 'default',\n descriptions: {\n title: i18n('save-as.title'),\n tooltip: i18n('save-as.description'),\n permission: i18n('save-as.permission'),\n audit: i18n('save-as.audit')\n }\n },\n Sync: {\n key: AXPSystemActionType.Sync,\n title: i18n('sync.title'),\n icon: 'fa-light fa-arrows-rotate',\n color: 'default',\n descriptions: {\n title: i18n('sync.title'),\n tooltip: i18n('sync.description'),\n permission: i18n('sync.permission'),\n audit: i18n('sync.audit')\n }\n },\n Reset: {\n key: AXPSystemActionType.Reset,\n title: i18n('reset.title'),\n icon: 'fa-light fa-arrow-rotate-left',\n color: 'warning',\n critical: true,\n descriptions: {\n title: i18n('reset.title'),\n tooltip: i18n('reset.description'),\n permission: i18n('reset.permission'),\n audit: i18n('reset.audit')\n }\n },\n Clear: {\n key: AXPSystemActionType.Clear,\n title: i18n('clear.title'),\n icon: 'fa-light fa-eraser',\n color: 'default',\n descriptions: {\n title: i18n('clear.title'),\n tooltip: i18n('clear.description'),\n permission: i18n('clear.permission'),\n audit: i18n('clear.audit')\n }\n },\n Distribution: {\n key: AXPSystemActionType.Distribution,\n title: i18n('distribution.title'),\n icon: 'fa-light fa-share-nodes',\n color: 'default',\n descriptions: {\n title: i18n('distribution.title'),\n tooltip: i18n('distribution.description'),\n permission: i18n('distribution.permission'),\n audit: i18n('distribution.audit')\n }\n },\n\n} as const satisfies Record<string, AXPSystemAction>);\n\n\n\nexport function getSystemActions(type: AXPSystemActionType): AXPSystemAction {\n return Object.values(AXPSystemActions).find(action => action.key === type) as AXPSystemAction;\n}\n\n/**\n * Resolves the visual appearance (color and icon) for entity actions\n * using the system actions from the core module.\n */\nexport function resolveActionLook(actionType: string): { color: AXStyleColorType; icon: string } {\n // Try to get system action first\n const systemActionType = actionType as AXPSystemActionType;\n if (systemActionType) {\n const systemAction = getSystemActions(systemActionType);\n if (systemAction) {\n return {\n color: (systemAction.color || 'default') as AXStyleColorType,\n icon: systemAction.icon || ''\n };\n }\n }\n\n // Fallback for unknown actions\n return {\n color: 'default' as AXStyleColorType,\n icon: ''\n };\n}\n\n/**\n * Resolves the title, description, icon and color for button actions\n * using the system actions from the core module.\n * @param actionType \n * @returns \n */\nexport function getActionButton(actionType: string): { name: string; title: string; description: string, icon: string, color: string } {\n const systemActionType = actionType as AXPSystemActionType;\n if (systemActionType) {\n const systemAction = getSystemActions(systemActionType);\n if (systemAction) {\n return {\n name: actionType,\n icon: systemAction.icon || '',\n color: systemAction.color || 'default',\n title: systemAction.title,\n description: systemAction.descriptions.title\n };\n }\n }\n\n // Fallback for unknown actions\n return {\n name: actionType,\n title: actionType,\n description: `Perform ${actionType} action`,\n icon: '',\n color: 'default'\n };\n}\n","export type AXPPartialNested<T> = {\n [K in keyof T]?: T[K] extends object ? AXPPartialNested<T[K]> : T[K];\n};\n\nexport function getNestedKeys(obj: any, prefix: string = ''): string[] {\n let keys: string[] = [];\n for (const key in obj) {\n if (typeof obj[key] === 'object' && obj[key] !== null && !Array.isArray(obj[key])) {\n keys = [...keys, ...getNestedKeys(obj[key], prefix + key + '.')];\n } else {\n keys.push(prefix + key);\n }\n }\n return keys;\n}\n\nexport type AXPExpression = string;\n\n/**\n * Plain or rich text that may be localized: a single string or a map of locale code to string.\n * Use when multi-language editing stores `Record<locale, string>` instead of one string.\n *\n * @example Single value (one locale or shared text)\n * `\"<p>Pick one</p>\"`\n *\n * @example Per-locale map (e.g. after multi-language editor save)\n * `{ \"en-US\": \"<p>Pick one</p>\", \"fa-IR\": \"<p>یکی را انتخاب کنید</p>\" }`\n */\nexport type AXPMultiLanguageString = string | Record<string, string>;\n\nexport type AXPMetaData = Record<string, any>;\n\nexport type AXPOptionsData<T extends Record<string, unknown> = Record<string, any>> = T;\n\nexport interface AXPValueUnit {\n name: string;\n title: string;\n ratio: number;\n order: number;\n}\n\nexport interface AXPValueUnits {\n name: string;\n title: string;\n items: AXPValueUnit[];\n default: string;\n}\n\nexport interface AXPEntityReference {\n id: string;\n type: string;\n title?: string;\n metadata?: AXPMetaData;\n}\n\nexport interface AXPUserReference {\n id: string;\n type?: 'user';\n fullName?: string;\n username?: string;\n}\n\nexport interface AXPApplicationUserReference {\n id: string;\n name: string;\n title: string;\n}\n\nexport type AXPContentType = 'text' | 'image' | 'file' | 'video' | 'link';\n\nexport interface AXPContent {\n content: string;\n contentType: AXPContentType;\n}\n\nexport type AXPMaybePromise<T = unknown> = T | Promise<T>;\n","//#region ---- Imports ----\n\nimport { AXDataSource, AXDataSourceFilterOption, AXDataSourceSortOption } from '@acorex/cdk/common';\n\nimport type { AXPMultiLanguageString } from './core.types';\n\n//#endregion\n\n//#region ---- Data Source Types ----\n\nexport type AXPDataSource = string | AXDataSource | any[];\n\nexport type AXPDataType = 'string' | 'number' | 'boolean' | 'date' | 'object' | 'array' | 'blob';\n\n//#endregion\n\n//#region ---- Query Types ----\n\nexport interface AXPPagedListResult<T = any> {\n items: T[];\n total: number;\n}\n\nexport interface AXPQueryRequest {\n skip: number;\n take: number;\n sort?: AXDataSourceSortOption[];\n filter?: AXDataSourceFilterOption;\n params?: {\n [key: string]: string;\n };\n}\n\n//#endregion\n\n//#region ---- Category Entity Types ----\n\n/**\n * Category Entity - Base interface for hierarchical category structures\n * \n * This interface provides a standardized data model for category entities across the platform.\n * All category entities (e.g., ReportCategory, ActivityCategory, WorkflowCategory) extend this interface\n * to ensure consistency in data structure and field names.\n * \n * @template TKey - The type of the identifier key (default: string)\n * \n * @example\n * ```typescript\n * const category: AXPCategoryEntity = {\n * id: 'cat-001',\n * title: 'Electronics',\n * description: 'Electronic products',\n * parentId: undefined, // Root category\n * childrenCount: 2, // Has 2 direct child categories\n * itemsCount: 5, // Has 5 items directly in this category\n * totalChildrenCount: 6, // Total of 6 nested categories (including grandchildren)\n * totalItemsCount: 23 // Total of 23 items in entire category tree\n * };\n * ```\n */\nexport interface AXPCategoryEntity<TKey = string> {\n /** Unique identifier for the category */\n id: TKey;\n\n /** Display name of the category (required) */\n title: AXPMultiLanguageString;\n\n /** Optional description of the category */\n description?: AXPMultiLanguageString;\n\n /** Parent category ID (undefined for root categories) */\n parentId?: TKey;\n\n /**\n * Count of direct child categories only (not recursive)\n * \n * Used by UI components to determine if a category has children and should show an expand icon.\n * This enables efficient lazy loading - components can check this property without querying the API.\n * \n * @example\n * - Category with 2 direct children: `childrenCount: 2`\n * - Leaf category (no children): `childrenCount: 0`\n * \n * @remarks\n * - Always set to `0` for leaf categories\n * - Does not include grandchildren or nested descendants\n * - Automatically maintained by middleware for category entities\n */\n childrenCount: number;\n\n /**\n * Count of items directly assigned to this category (not recursive)\n * \n * Represents the number of items (e.g., reports, activities, workflows) that are directly\n * assigned to this category. Does not include items from child categories.\n * \n * Useful for:\n * - Displaying item counts per category in UI (e.g., \"5 reports\" badge)\n * - Optimizing queries (skip API call if itemsCount === 0)\n * - Showing category statistics\n * \n * @example\n * - Category with 5 reports directly assigned: `itemsCount: 5`\n * - Category with no direct items: `itemsCount: 0` or `undefined`\n * \n * @remarks\n * - Does not include items from child categories\n * - Can be calculated dynamically or stored\n * - Optional - may be undefined if not needed\n */\n itemsCount?: number;\n\n /**\n * Recursive count of all nested child categories (includes all descendants)\n * \n * Represents the total number of categories in the entire subtree starting from this category.\n * Includes children, grandchildren, and all nested descendants.\n * \n * Useful for:\n * - Analytics and summary displays\n * - Showing complete category tree scope\n * - Performance metrics\n * \n * @example\n * Root category with:\n * - 2 direct children\n * - Each child has 2 children (4 grandchildren)\n * Result: `totalChildrenCount: 6` (2 + 4)\n * \n * @remarks\n * - Optional - typically used for analytics\n * - Includes all nested levels (recursive)\n * - Can be expensive to calculate for large trees\n */\n totalChildrenCount?: number;\n\n /**\n * Recursive count of all items in this category and all descendants\n * \n * Represents the total number of items (e.g., reports, activities, workflows) in the entire\n * category tree, including items from this category and all nested child categories.\n * \n * Useful for:\n * - Analytics and summary displays\n * - Showing complete scope of a category branch\n * - Dashboard statistics\n * \n * @example\n * Category with:\n * - 5 items directly assigned\n * - 1 child category with 3 items\n * Result: `totalItemsCount: 8` (5 + 3)\n * \n * @remarks\n * - Optional - typically used for analytics\n * - Includes items from all nested categories (recursive)\n * - Can be expensive to calculate for large trees\n */\n totalItemsCount?: number;\n}\n\nexport interface AXPCategoryEntityWithItems<T> extends AXPCategoryEntity {\n items: T[];\n children?: AXPCategoryEntityWithItems<T>[];\n}\n\n//#endregion\n\n//#region ---- Categorized Entity Types ----\n\n/**\n * Denormalized category row on entities and DTOs (id + localized display title).\n * Use for `categories` arrays expanded from {@link AXPCategoryEntity} assignments.\n */\nexport interface AXPCategoryListItem<TKey extends string = string> {\n id: TKey;\n title: AXPMultiLanguageString;\n}\n\nexport interface AXPCategorizedEntity {\n categoryIds: string[];\n}\n\nexport interface AXPCategorizedEntityDto {\n categoryIds: string[];\n categories: AXPCategoryListItem[];\n}\n\n//#endregion\n\n//#region ---- Entity Operation Types ----\n\nexport type AXPEntityOp = 'initial' | 'create' | 'update' | 'delete' | 'getOne' | 'getAll' | 'query';\n\n//#endregion\n","import { Type } from '@angular/core';\nimport { NavigationExtras } from '@angular/router';\nimport { AXPSystemActionType, getSystemActions } from './actions.types';\nimport { AXPMetaData } from './core.types';\n\nexport type AXPActionMenuItem = {\n name?: string;\n title: string;\n icon?: string;\n iconOnly?: boolean;\n color?: string;\n break?: boolean;\n items?: AXPActionMenuItem[];\n command?: AXPExecuteCommand;\n disabled?: boolean | string;\n visible?: boolean | string;\n policy?: string;\n};\n\n\n\nexport type AXPBackButton = {\n title: string;\n};\n\nexport type AXPBreadcrumbItem = {\n name?: string;\n title: string;\n icon?: string;\n command?: AXPExecuteCommand;\n};\n\nexport type AXPBadge = {\n title: string;\n description?: string;\n color?: 'primary' | 'success' | 'warning' | 'danger';\n};\n\nexport type AXPPageStatus = {\n definitionKey: string;\n value: string;\n dataPath?: string;\n readonly?: boolean;\n};\n\nexport interface AXPCommandMessage {\n type?: 'info' | 'success' | 'warning' | 'error';\n code?: string;\n text: string;\n details?: unknown;\n}\n\nexport type AXPExecuteCommand = {\n name: string;\n options?: AXPMetaData;\n metadata?: AXPMetaData;\n};\n\nexport interface AXPExecuteCommandResult<T = any> {\n success: boolean;\n data?: T;\n message?: AXPCommandMessage;\n metadata?: AXPMetaData;\n}\n\nexport interface AXPQueryFetchResult<T = any> {\n success: boolean;\n data?: {\n items?: T[];\n total?: number;\n };\n message?: {\n code?: string;\n text?: string;\n details?: any;\n };\n}\n\nexport type AXPNavigateActionOptions = {\n router: {\n path: string;\n extras?: NavigationExtras & { target?: string };\n };\n modal: {\n component: Type<any>;\n title: string;\n options?: any;\n };\n};\n\nexport interface AXPNavigateActionCommand<T extends keyof AXPNavigateActionOptions> {\n type: T;\n options: AXPNavigateActionOptions[T];\n}\n\nexport function applySystemActionDefault(action: AXPActionMenuItem, type: AXPSystemActionType): AXPActionMenuItem {\n const systemAction = getSystemActions(type);\n return {\n name: systemAction.key,\n title: systemAction.title,\n icon: systemAction.icon,\n color: systemAction.color,\n };\n}\n","import { Type } from '@angular/core';\n\nexport interface AXPLogoConfig { }\n\nexport class AXPImageUrlLogoConfig implements AXPLogoConfig {\n constructor(public url: string, public width?: number, public height?: number) { }\n}\nexport class AXPComponentLogoConfig implements AXPLogoConfig {\n height?: number | undefined;\n width?: number | undefined;\n constructor(public component: Type<any>) { }\n}\n\nexport class AXPIconLogoConfig implements AXPLogoConfig {\n constructor(public icon: string, public color?: string) { }\n}\n\n\n\n","export type AXPPlatformScopeKey = 'P' | 'T' | 'U';\nexport enum AXPPlatformScope {\n Platform = 'P',\n Tenant = 'T',\n User = 'U'\n};\n\nexport function resolvePlatformScopeKey(name: string): AXPPlatformScopeKey {\n const scopeMap: Record<string, AXPPlatformScopeKey> = {\n platform: AXPPlatformScope.Platform,\n tenant: AXPPlatformScope.Tenant,\n user: AXPPlatformScope.User,\n };\n return scopeMap[name.toLowerCase()] ?? AXPPlatformScope.User;\n}\n\nexport function resolvePlatformScopeName(scope: AXPPlatformScopeKey): string {\n const scopeMap: Record<AXPPlatformScopeKey, string> = {\n P: 'platform',\n T: 'tenant',\n U: 'user',\n };\n return scopeMap[scope] ?? 'user';\n}","\nexport interface AXPExportOptions {\n fileNameTemplate?: string; // مثال: \"Report_{date}_{user}\"\n\n pdf?: AXPExportPdfOptions;\n excel?: AXPExportExcelOptions;\n csv?: AXPExportCsvOptions;\n print?: AXPExportPrintOptions;\n}\n\n\nexport interface AXPExportPdfOptions {\n enabled: boolean;\n\n pageSize?: 'A4' | 'A3' | 'Letter' | 'Legal';\n orientation?: 'portrait' | 'landscape';\n\n margin?: number | {\n top: number;\n bottom: number;\n left: number;\n right: number;\n };\n\n font?: string;\n fontSize?: number;\n\n headerEnabled?: boolean;\n footerEnabled?: boolean;\n showPageNumbers?: boolean;\n\n watermarkText?: string;\n watermarkOpacity?: number;\n\n compression?: boolean;\n embedImages?: boolean;\n}\n\n\nexport interface AXPExportExcelOptions {\n enabled: boolean;\n\n sheetName?: string;\n includeFilters?: boolean;\n freezeHeader?: boolean;\n autoFitColumns?: boolean;\n\n style?: {\n headerColor?: string;\n font?: string;\n fontSize?: number;\n numberFormat?: 'auto' | 'currency' | 'percent' | 'decimal';\n };\n\n summaryRowEnabled?: boolean;\n exportHiddenColumns?: boolean;\n}\n\n\nexport interface AXPExportCsvOptions {\n enabled: boolean;\n\n delimiter?: ',' | ';' | '\\t';\n includeHeaders?: boolean;\n quoteValues?: boolean;\n encoding?: 'utf-8' | 'utf-16' | 'iso-8859-1';\n}\n\n\nexport interface AXPExportPrintOptions {\n enabled: boolean;\n\n includeHeader?: boolean;\n includeFooter?: boolean;\n showPageBreaks?: boolean;\n customCssUrl?: string;\n}\n\n\nexport enum AXPExportTemplateToken {\n Date = '{date}',\n Time = '{time}',\n User = '{user}',\n ReportTitle = '{title}',\n UUID = '{uuid}',\n}\n","import { AXCalendarService } from '@acorex/core/date-time';\nimport { inject, Pipe, PipeTransform, signal } from '@angular/core';\nimport { interval, Observable } from 'rxjs';\nimport { map, startWith } from 'rxjs/operators';\n\n@Pipe({\n name: 'countdown',\n pure: false,\n standalone: true,\n})\nexport class AXPCountdownPipe implements PipeTransform {\n private calendarService = inject(AXCalendarService);\n\n private countdownSignal = signal(this.setupTimer());\n\n private targetDate: number = 0;\n private prevValue = 0;\n\n transform(value: number): Observable<string> {\n if (this.prevValue != value) {\n this.prevValue = value;\n const expireTime = this.calendarService.calendar.add(new Date(), 'second', value).date;\n this.updateTargetDate(expireTime.toISOString());\n }\n return this.countdownSignal();\n }\n\n private setupTimer() {\n return interval(1000).pipe(\n startWith(0),\n map(() => {\n const diff = this.targetDate - new Date().getTime();\n if (diff < 0) {\n return \"Time's up!\";\n }\n\n const times = [86400, 3600, 60, 1].map((seconds) => Math.floor((diff / 1000 / seconds) % (seconds === 1 ? 60 : 24)));\n const labels = ['d', 'h', 'm', 's'];\n return times\n .map((t, i) => (t > 0 || i === 3 ? `${t}${labels[i]}` : ''))\n .join(' ')\n .trim();\n })\n );\n }\n\n private updateTargetDate(value: string) {\n this.targetDate = new Date(value).getTime();\n }\n}\n","import {\n AXDataSourceCallbackResult,\n AXDataSourceFilterOption,\n AXDataSourceLoadCallback,\n AXDataSourceQuery,\n AXDataSourceSortOption,\n} from '@acorex/cdk/common';\nimport { endsWith, get, gt, gte, includes, isEmpty, isEqual, isNil, lt, lte, orderBy, startsWith } from 'lodash-es';\n\nconst loggingEnabled = false; // Set to true to enable logging, false to disable\n\nfunction applyCondition(item: any, condition: AXDataSourceFilterOption) {\n const rawValue = condition.field ? get(item, condition.field) : null;\n const itemValue = typeof rawValue === 'string' ? rawValue.toLowerCase() : rawValue;\n const conditionValue = typeof condition.value === 'string' ? condition.value.toLowerCase() : condition.value;\n\n // Conditional Logging for debugging\n if (loggingEnabled) {\n console.log('Condition:', condition);\n console.log('Item Value:', itemValue);\n console.log('Condition Value:', conditionValue);\n }\n\n let result: boolean;\n const valueToCompare = isNil(condition.field) || condition.field === '' ? conditionValue : itemValue;\n const conditionType = condition?.operator?.type;\n if (!conditionType) {\n return true;\n }\n\n const op = String(conditionType);\n\n switch (op) {\n case 'equal':\n case 'eq':\n result = isEqual(valueToCompare, conditionValue);\n if (loggingEnabled) {\n console.log('Equal check result:', result);\n }\n break;\n case 'notEqual':\n case 'ne':\n case 'neq':\n result = !isEqual(valueToCompare, conditionValue);\n if (loggingEnabled) {\n console.log('Not equal check result:', result);\n }\n break;\n case 'greaterThan':\n case 'gt':\n result = gt(valueToCompare, conditionValue);\n if (loggingEnabled) {\n console.log('Greater than check result:', result);\n }\n break;\n case 'lessThan':\n case 'lt':\n result = lt(valueToCompare, conditionValue);\n if (loggingEnabled) {\n console.log('Less than check result:', result);\n }\n break;\n case 'greaterThanOrEqual':\n case 'gte':\n result = gte(valueToCompare, conditionValue);\n if (loggingEnabled) {\n console.log('Greater than or equal check result:', result);\n }\n break;\n case 'lessThanOrEqual':\n case 'lte':\n result = lte(valueToCompare, conditionValue);\n if (loggingEnabled) {\n console.log('Less than or equal check result:', result);\n }\n break;\n case 'contains':\n if (typeof valueToCompare === 'string') {\n result = includes(valueToCompare, conditionValue);\n } else if (Array.isArray(valueToCompare)) {\n result = includes(\n valueToCompare.map((val) => val.toString().toLowerCase()),\n conditionValue,\n );\n } else {\n result = false;\n }\n if (loggingEnabled) {\n console.log('Contains check result:', result);\n }\n break;\n case 'in':\n if (Array.isArray(conditionValue)) {\n if (typeof valueToCompare === 'string') {\n result = conditionValue.some(val =>\n typeof val === 'string' ? val.toLowerCase() === valueToCompare : val === valueToCompare\n );\n } else if (Array.isArray(valueToCompare)) {\n result = valueToCompare.some(val =>\n conditionValue.some(condVal =>\n typeof val === 'string' && typeof condVal === 'string'\n ? val.toLowerCase() === condVal.toLowerCase()\n : val === condVal\n )\n );\n } else {\n result = conditionValue.includes(valueToCompare);\n }\n } else {\n result = false;\n }\n if (loggingEnabled) {\n console.log('In check result:', result);\n }\n break;\n case 'notContains':\n if (typeof valueToCompare === 'string') {\n result = !includes(valueToCompare, conditionValue);\n } else if (Array.isArray(valueToCompare)) {\n result = !includes(\n valueToCompare.map((val) => val.toString().toLowerCase()),\n conditionValue,\n );\n } else {\n result = false;\n }\n if (loggingEnabled) {\n console.log('Not contains check result:', result);\n }\n break;\n case 'startsWith':\n result = typeof valueToCompare === 'string' && startsWith(valueToCompare, conditionValue as string);\n if (loggingEnabled) {\n console.log('Starts with check result:', result);\n }\n break;\n case 'endsWith':\n result = typeof valueToCompare === 'string' && endsWith(valueToCompare, conditionValue as string);\n if (loggingEnabled) {\n console.log('Ends with check result:', result);\n }\n break;\n case 'isEmpty':\n result = isEmpty(valueToCompare);\n if (loggingEnabled) {\n console.log('Is empty check result:', result);\n }\n break;\n case 'isNull':\n result = isNil(valueToCompare);\n if (loggingEnabled) {\n console.log('Is null check result:', result);\n }\n break;\n case 'isNotEmpty':\n result = !isEmpty(valueToCompare);\n if (loggingEnabled) {\n console.log('Is not empty check result:', result);\n }\n break;\n case 'between':\n result = !isNil(valueToCompare) && valueToCompare >= (condition.value as { from: number; to: number }).from && valueToCompare <= (condition.value as { from: number; to: number }).to;\n if (loggingEnabled) {\n console.log('Between check result:', result);\n }\n break;\n default:\n result = true;\n if (loggingEnabled) {\n console.log('Default case, returning true');\n }\n }\n\n // Apply negative flag if present on operator (invert the result)\n const isNegative = !!condition?.operator?.negative;\n return isNegative ? !result : result;\n}\n\nexport function applyFilterArray(\n dataArray: any[],\n filters?: AXDataSourceFilterOption[],\n logic: 'and' | 'or' = 'and',\n): any[] {\n if (filters && filters.length) {\n return dataArray.filter((item) => {\n if (logic === 'and') {\n return filters.every((f) => {\n return f.filters ? applyFilterArray([item], f.filters, f.logic).length > 0 : applyCondition(item, f);\n });\n } else {\n // logic === 'or'\n return filters.some((f) => {\n return f.filters ? applyFilterArray([item], f.filters, f.logic).length > 0 : applyCondition(item, f);\n });\n }\n });\n } else {\n return dataArray;\n }\n}\n\nexport function applySortArray(dataArray: any, sorts: AXDataSourceSortOption[]) {\n if (sorts && sorts.length > 0) {\n const sortFields = sorts.map((s) => s.field);\n const sortOrders = sorts.map((s) => s.dir);\n return orderBy(dataArray, sortFields, sortOrders);\n } else return dataArray;\n}\n\nexport function applyPagination<T>(dataArray: T[], skip: number, take: number): T[] {\n return dataArray.slice(skip, skip + take);\n}\n\nexport async function applyQueryArray<T>(\n dataArray: T[],\n query: AXDataSourceQuery,\n): Promise<AXDataSourceCallbackResult<T>> {\n let result = [...dataArray];\n\n // Apply filtering\n if (query.filter) {\n result = applyFilterArray(result, [query.filter], query.filter.logic ?? 'and');\n }\n\n // Store total count before pagination\n const total = result.length;\n\n // Apply sorting\n if (query.sort && query.sort.length > 0) {\n result = applySortArray(result, query.sort);\n }\n\n // Apply pagination\n result = applyPagination(result, query.skip, query.take);\n\n return {\n items: result,\n total,\n };\n}\n","import { computed, Injectable, signal } from '@angular/core';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n//#region ---- Type Definitions ----\n\n/**\n * Screen Size Enum\n */\nexport enum AXPScreenSize {\n Small = 'small',\n Medium = 'medium',\n Large = 'large',\n}\n\n/**\n * Device Type Enum\n */\nexport enum AXPDeviceType {\n Mobile = 'mobile',\n Tablet = 'tablet',\n Desktop = 'desktop',\n}\n\n//#endregion\n\n//#region ---- Helper Functions ----\n\n/**\n * Get the initial screen size based on window width\n */\nconst 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/**\n * Determine device type based on viewport width\n */\nconst getDeviceType = (): AXPDeviceType => {\n const width = window.innerWidth;\n if (width <= 600) {\n return AXPDeviceType.Mobile;\n } else if (width <= 1024) {\n return AXPDeviceType.Tablet;\n }\n return AXPDeviceType.Desktop;\n};\n\n/**\n * Determine if the device supports touch\n */\nconst isTouchDevice = (): boolean => {\n return 'ontouchstart' in window || navigator.maxTouchPoints > 0;\n};\n\n//#endregion\n\n//#region ---- Device Service ----\n\n/**\n * Injectable service that provides reactive device and screen size information.\n * Monitors window resize events and updates signals accordingly.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class AXPDeviceService {\n //#region ---- State Signals ----\n\n /**\n * Current screen size (Small, Medium, Large)\n */\n readonly screenSize = signal<AXPScreenSize>(getScreenSize());\n\n /**\n * Current device type (Mobile, Tablet, Desktop)\n */\n readonly deviceType = signal<AXPDeviceType>(getDeviceType());\n\n /**\n * Whether the device supports touch input\n */\n readonly isTouchDevice = signal<boolean>(isTouchDevice());\n\n //#endregion\n\n //#region ---- Computed Signals ----\n\n /**\n * Whether the screen size is Small\n */\n readonly isSmall = computed(() => this.screenSize() === AXPScreenSize.Small);\n\n /**\n * Whether the screen size is Medium\n */\n readonly isMedium = computed(() => this.screenSize() === AXPScreenSize.Medium);\n\n /**\n * Whether the screen size is Large\n */\n readonly isLarge = computed(() => this.screenSize() === AXPScreenSize.Large);\n\n /**\n * Whether the device is Mobile\n */\n readonly isMobileDevice = computed(() => this.deviceType() === AXPDeviceType.Mobile);\n\n /**\n * Whether the device is Tablet\n */\n readonly isTabletDevice = computed(() => this.deviceType() === AXPDeviceType.Tablet);\n\n /**\n * Whether the device is Desktop\n */\n readonly isDesktopDevice = computed(() => this.deviceType() === AXPDeviceType.Desktop);\n\n /**\n * Whether the device supports touch (alias for isTouchDevice)\n */\n readonly isTouchScreen = computed(() => this.isTouchDevice());\n\n //#endregion\n\n //#region ---- Private Properties ----\n\n private _resizeListener: Subscription | null = null;\n\n //#endregion\n\n //#region ---- Constructor & Lifecycle ----\n\n constructor() {\n this._setupResizeListener();\n }\n\n //#endregion\n\n //#region ---- Private Methods ----\n\n /**\n * Update screen size and device type based on window width\n */\n private _updateScreenSize(): void {\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 // Determine device type based on width to keep it reactive to devtools emulation\n let newDeviceType: AXPDeviceType;\n if (width <= 600) {\n newDeviceType = AXPDeviceType.Mobile;\n } else if (width <= 1024) {\n newDeviceType = AXPDeviceType.Tablet;\n } else {\n newDeviceType = AXPDeviceType.Desktop;\n }\n\n if (newScreenSize !== this.screenSize() || newDeviceType !== this.deviceType()) {\n this.screenSize.set(newScreenSize);\n this.deviceType.set(newDeviceType);\n }\n }\n\n /**\n * Set up event listener for window resize\n */\n private _setupResizeListener(): void {\n this._resizeListener = fromEvent(window, 'resize')\n .pipe(debounceTime(250)) // 250ms debounce delay\n .subscribe(() => {\n this._updateScreenSize();\n });\n }\n\n /**\n * Remove event listener for window resize\n */\n private _removeResizeListener(): void {\n if (this._resizeListener) {\n this._resizeListener.unsubscribe();\n this._resizeListener = null;\n }\n }\n\n //#endregion\n\n //#region ---- Public Methods ----\n\n /**\n * Clean up resources when service is destroyed\n */\n destroy(): void {\n this._removeResizeListener();\n }\n\n //#endregion\n}\n\n//#endregion\n","import { Injectable } from '@angular/core';\n\n/**\n * Service for applying and resetting text highlighting within specified HTML elements.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class AXHighlightService {\n private querySelector: string | null;\n private searchValue: string | null;\n\n constructor() { }\n\n /**\n * Highlights all occurrences of a search value within the elements matching the provided query selector.\n *\n * @param querySelector - CSS selector to identify target elements.\n * @param searchValue - Text to search and highlight.\n */\n highlight(querySelector: string, searchValue: string): void {\n this.clear();\n if (!querySelector || !searchValue) {\n return;\n }\n this.querySelector = querySelector;\n this.searchValue = searchValue;\n const elements = document.querySelectorAll(querySelector);\n elements.forEach((element) => {\n this.applyHighlight(element as HTMLElement);\n });\n }\n\n /**\n * Resets all highlighted text within the elements matching the previously used query selector.\n */\n public clear(): void {\n const elements = document.querySelectorAll(`${this.querySelector} .ax-highlight-text`);\n elements.forEach((element) => {\n let combinedText = '';\n element.querySelectorAll('span').forEach((span) => {\n combinedText += span.textContent;\n });\n\n const mergedSpan = document.createElement('span');\n mergedSpan.textContent = combinedText;\n\n element?.parentNode?.replaceChild(mergedSpan, element);\n });\n }\n\n /**\n * Applies highlighting to a specific element by matching text against the search value.\n *\n * @param element - The HTML element to apply highlights to.\n */\n private applyHighlight(element: HTMLElement): void {\n const searchRegex = new RegExp(`(${this.searchValue})`, 'gi');\n this.recursivelyHighlight(element, searchRegex);\n }\n\n /**\n * Recursively applies highlighting to text nodes within an element.\n *\n * @param element - The current node being processed.\n * @param searchRegex - Regular expression for matching text to highlight.\n */\n private recursivelyHighlight(element: Node, searchRegex: RegExp): void {\n const childNodes = Array.from(element.childNodes);\n\n childNodes.forEach((node) => {\n if (node.nodeType === Node.TEXT_NODE) {\n const textContent = node.textContent || '';\n if (textContent.match(searchRegex)) {\n const highlightedHTML = this.createHighlightedHTML(textContent, searchRegex);\n const tempContainer = document.createElement('div');\n tempContainer.innerHTML = highlightedHTML;\n\n const fragment = document.createDocumentFragment();\n Array.from(tempContainer.childNodes).forEach((child) => fragment.appendChild(child));\n\n node.replaceWith(fragment);\n }\n } else if (node.nodeType === Node.ELEMENT_NODE) {\n this.recursivelyHighlight(node, searchRegex);\n }\n });\n }\n\n /**\n * Generates the HTML structure for highlighted text.\n *\n * @param textContent - The original text content to process.\n * @param searchRegex - Regular expression for matching text to highlight.\n * @returns A string of HTML with highlighted portions wrapped in span elements.\n */\n private createHighlightedHTML(textContent: string, searchRegex: RegExp): string {\n let parts: string[] = [];\n let match;\n let lastIndex = 0;\n let resultHTML = '<span class=\"ax-highlight-text\">';\n\n while ((match = searchRegex.exec(textContent)) !== null) {\n if (match.index > lastIndex) {\n resultHTML += `<span>${textContent.slice(lastIndex, match.index)}</span>`;\n }\n resultHTML += `<span class=\"ax-highlight\">${match[0]}</span>`;\n lastIndex = searchRegex.lastIndex;\n }\n\n if (lastIndex < textContent.length) {\n resultHTML += `<span>${textContent.slice(lastIndex)}</span>`;\n }\n\n resultHTML += '</span>';\n\n return resultHTML;\n }\n}\n","import { inject, Injector, InjectionToken, Provider, runInInjectionContext } from '@angular/core';\n\n/**\n * Creates a provider instance within an injection context.\n * Handles dynamic import, injector resolution, and provider instantiation.\n * \n * @param loader - Function that returns a promise resolving to the provider class\n * @returns Promise that resolves to the provider instance\n * \n * @example\n * ```typescript\n * useFactory: () => createProviderWithInjectionContext(() => \n * import('./settings.provider').then(m => m.AXMSettingProvider)\n * )\n * ```\n */\nexport async function createProviderWithInjectionContext<T>(\n loader: () => Promise<new () => T>\n): Promise<T> {\n const injector = inject(Injector);\n const ProviderClass = await loader();\n return runInInjectionContext(injector, () => new ProviderClass());\n}\n\n/**\n * Creates a provider configuration for lazy-loaded providers with injection context.\n * Simplifies provider registration in NgModule providers array.\n *\n * @param token - The injection token to provide\n * @param loader - Function that returns a promise resolving to the provider class\n * @param multi - Optional. Whether the provider is a multi-provider (array of values). Defaults to `true`. Pass `false` for a single provider.\n * @returns Provider configuration object\n *\n * @example\n * ```typescript\n * // Multi-provider (default)\n * provideLazyProvider(\n * AXP_DATASOURCE_DEFINITION_PROVIDER,\n * () => import('./datasource.provider').then(m => m.AXMDataSourceProvider)\n * )\n *\n * // Single provider\n * provideLazyProvider(\n * SOME_TOKEN,\n * () => import('./my.provider').then(m => m.MyProvider),\n * false\n * )\n * ```\n */\nexport function provideLazyProvider<TProvider>(\n token: InjectionToken<any>,\n loader: () => Promise<new () => TProvider>,\n multi: boolean = true\n): Provider {\n return {\n provide: token,\n useFactory: () => createProviderWithInjectionContext(loader),\n multi,\n };\n}\n\n","export function extractTextFromHtml(value: string) {\n const div = document.createElement('div');\n div.innerHTML = value;\n return div.textContent || div.innerText || '';\n}\n\n/**\n * True when the string likely contains HTML markup (e.g. `<p>`, `<ul>`), as opposed to plain text.\n * Used to choose innerHTML vs text interpolation for multilingual fields.\n */\nexport function containsHtmlMarkup(value: string | null | undefined): boolean {\n if (value == null) {\n return false;\n }\n const t = value.trim();\n if (!t) {\n return false;\n }\n return /<\\/?[a-z][\\s\\S]*?>/i.test(t);\n}\n\n/**\n * Generate kebab-case group name from title\n */\nexport function generateKebabCase(title: string): string {\n return title\n .toLowerCase()\n .trim()\n .replace(/[^a-z0-9\\s-]/g, '') // Remove special characters\n .replace(/\\s+/g, '-') // Replace spaces with hyphens\n .replace(/-+/g, '-') // Replace multiple hyphens with single\n .replace(/^-+|-+$/g, ''); // Remove leading/trailing hyphens\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.AXPAppStartUpService","merge"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-platform-core.mjs","sources":["../../../../libs/platform/core/src/lib/activity-log/activity-log.service.ts","../../../../libs/platform/core/src/lib/activity-log/activity-log.provider.ts","../../../../libs/platform/core/src/lib/color-palette/color-palette.provider.ts","../../../../libs/platform/core/src/lib/color-palette/color-palette.service.ts","../../../../libs/platform/core/src/lib/color-palette/color-palette.types.ts","../../../../libs/platform/core/src/lib/color-palette/default-palettes.provider.ts","../../../../libs/platform/core/src/lib/column-width/column-width.provider.ts","../../../../libs/platform/core/src/lib/column-width/column-width.service.ts","../../../../libs/platform/core/src/lib/column-width/column-width.types.ts","../../../../libs/platform/core/src/lib/column-width/default-column-width.provider.ts","../../../../libs/platform/core/src/lib/component-slot/component-slot.types.ts","../../../../libs/platform/core/src/lib/utils/object-util.ts","../../../../libs/platform/core/src/lib/context/context-store.service.ts","../../../../libs/platform/core/src/lib/expression-evaluator/expression-evaluator-scope-provider.service.ts","../../../../libs/platform/core/src/lib/expression-evaluator/expression-evaluator.service.ts","../../../../libs/platform/core/src/lib/component-slot/component-slot-placeholder.component.ts","../../../../libs/platform/core/src/lib/component-slot/component-slot-registery.service.ts","../../../../libs/platform/core/src/lib/component-slot/component-slot.directive.ts","../../../../libs/platform/core/src/lib/component-slot/component-slot.module.ts","../../../../libs/platform/core/src/lib/data/data-generator.ts","../../../../libs/platform/core/src/lib/data/value-transformer.ts","../../../../libs/platform/core/src/lib/data/datasource-definition-provider.service.ts","../../../../libs/platform/core/src/lib/directives/content-checker.directive.ts","../../../../libs/platform/core/src/lib/directives/dbl-click.directive.ts","../../../../libs/platform/core/src/lib/directives/element-data.directive.ts","../../../../libs/platform/core/src/lib/directives/grid-layout.directive.ts","../../../../libs/platform/core/src/lib/distributed-events/distributed-event-listener.provider.ts","../../../../libs/platform/core/src/lib/distributed-events/distributed-event-listener.service.ts","../../../../libs/platform/core/src/lib/event-service/event.service.ts","../../../../libs/platform/core/src/lib/hook/utill.service.ts","../../../../libs/platform/core/src/lib/module-manifest/module-manifest.types.ts","../../../../libs/platform/core/src/lib/module-manifest/provider-interfaces.ts","../../../../libs/platform/core/src/lib/module-manifest/feature-definition.provider.ts","../../../../libs/platform/core/src/lib/module-manifest/module-manifest.registry.ts","../../../../libs/platform/core/src/lib/module-manifest/module-manifests.datasource.ts","../../../../libs/platform/core/src/lib/startup/app-startup.service.ts","../../../../libs/platform/core/src/lib/module-manifest/module-manifest.module.ts","../../../../libs/platform/core/src/lib/multi-language-string/compare-axp-multi-language-string.ts","../../../../libs/platform/core/src/lib/tags/tag.types.ts","../../../../libs/platform/core/src/lib/tags/tag.provider.ts","../../../../libs/platform/core/src/lib/tags/tag.service.ts","../../../../libs/platform/core/src/lib/types/actions.types.ts","../../../../libs/platform/core/src/lib/types/core.types.ts","../../../../libs/platform/core/src/lib/types/data.types.ts","../../../../libs/platform/core/src/lib/types/interactive.types.ts","../../../../libs/platform/core/src/lib/types/logo.types.ts","../../../../libs/platform/core/src/lib/types/scope.types.ts","../../../../libs/platform/core/src/lib/types/export.types.ts","../../../../libs/platform/core/src/lib/utils/countdown-timer.ts","../../../../libs/platform/core/src/lib/utils/data-conditioner.ts","../../../../libs/platform/core/src/lib/utils/device.service.ts","../../../../libs/platform/core/src/lib/utils/highlighter.ts","../../../../libs/platform/core/src/lib/utils/provider.util.ts","../../../../libs/platform/core/src/lib/utils/string.ts","../../../../libs/platform/core/src/acorex-platform-core.ts"],"sourcesContent":["import { inject, Injectable, InjectionToken } from '@angular/core';\nimport { AXPActivityLogProvider } from './activity-log.provider';\nimport { AXPActivityLog } from './activity-log.types';\n\nexport const AXP_ACTIVITY_LOG_PROVIDER = new InjectionToken<AXPActivityLogProvider[]>('AXP_ACTIVITY_LOGS_PROVIDER');\n\n@Injectable({ providedIn: 'root' })\nexport class AXPActivityLogService {\n private providers = inject(AXP_ACTIVITY_LOG_PROVIDER, { optional: true });\n\n async getHistory(refId: string, refType: string, options?: { from?: Date; to?: Date; limit?: number; offset?: number }): Promise<AXPActivityLog[]> {\n return (await Promise.all(this.providers?.map((p) => p.getHistory(refId, refType, options)) ?? [])).flat();\n\n }\n\n async getHistoryByIds(refId: string, refType: string, ids: string[]): Promise<AXPActivityLog[]> {\n return (await Promise.all(this.providers?.map((p) => p.getHistoryByIds(refId, refType, ids)) ?? [])).flat();\n }\n}","import { AXPActivityLog } from './activity-log.types';\n\nexport abstract class AXPActivityLogProvider {\n abstract getHistory(refId: string, refType: string, options?: { from?: Date; to?: Date; limit?: number; offset?: number }): Promise<AXPActivityLog[]>;\n abstract getHistoryByIds(refId: string, refType: string, ids: string[]): Promise<AXPActivityLog[]>;\n}","import { InjectionToken } from '@angular/core';\nimport { AXPColorPalette } from './color-palette.types';\n\n//#region ---- Color Palette Provider ----\n\n/**\n * Abstract class for color palette providers\n * Implement this to provide palettes from different sources (system, app, module, etc.)\n */\nexport abstract class AXPColorPaletteProvider {\n /**\n * Unique name for this provider (e.g., 'system', 'app', 'module')\n */\n abstract name: string;\n\n /**\n * Provide color palettes from this source\n * @returns Promise of palettes\n */\n abstract provide(): Promise<AXPColorPalette[]>;\n}\n\n/**\n * Injection token for color palette providers\n * Use this to register multiple palette providers\n */\nexport const AXP_COLOR_PALETTE_PROVIDER = new InjectionToken<AXPColorPaletteProvider[]>(\n 'AXP_COLOR_PALETTE_PROVIDER',\n);\n\n//#endregion\n\n","import { inject, Injectable } from '@angular/core';\nimport { AXP_COLOR_PALETTE_PROVIDER, AXPColorPaletteProvider } from './color-palette.provider';\nimport { AXPColorPalette, AXPColorPaletteFilterOptions } from './color-palette.types';\n\n//#region ---- Color Palette Service ----\n\n/**\n * Service for managing color palettes from multiple providers\n * Aggregates palettes from all registered providers\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class AXPColorPaletteService {\n //#region ---- Dependencies ----\n\n private providers: AXPColorPaletteProvider[] = inject(AXP_COLOR_PALETTE_PROVIDER, { optional: true }) ?? [];\n\n //#endregion\n\n //#region ---- State ----\n\n private cache: AXPColorPalette[] | null = null;\n\n //#endregion\n\n //#region ---- Public API ----\n\n /**\n * Get all palettes from all providers\n * @param options Filter options\n * @returns Promise of palettes\n */\n async getPalettes(options?: AXPColorPaletteFilterOptions): Promise<AXPColorPalette[]> {\n if (!this.cache) {\n await this.loadPalettes();\n }\n\n let palettes = this.cache!;\n\n // Apply category filter\n if (options?.category) {\n palettes = palettes.filter((palette) => palette.category === options.category);\n }\n\n // Apply search filter\n if (options?.search) {\n const searchLower = options.search.toLowerCase();\n palettes = palettes.filter(\n (palette) =>\n palette.name.toLowerCase().includes(searchLower) ||\n palette.title.toLowerCase().includes(searchLower) ||\n palette.description?.toLowerCase().includes(searchLower),\n );\n }\n\n return palettes;\n }\n\n /**\n * Get a palette by name\n * @param name The unique name of the palette\n * @returns Promise of palette or undefined if not found\n */\n async getPalette(name: string): Promise<AXPColorPalette | undefined> {\n if (!this.cache) {\n await this.loadPalettes();\n }\n\n return this.cache!.find((p) => p.name === name);\n }\n\n /**\n * Get palettes by category\n * @param category The category to filter by\n * @returns Promise of palettes in the specified category\n */\n async getByCategory(category: string): Promise<AXPColorPalette[]> {\n return this.getPalettes({ category });\n }\n\n /**\n * Check if a palette exists\n * @param name The unique name of the palette\n * @returns Promise of true if the palette exists\n */\n async has(name: string): Promise<boolean> {\n const palette = await this.getPalette(name);\n return palette !== undefined;\n }\n\n /**\n * Reload palettes from all providers\n */\n async reload(): Promise<void> {\n this.cache = null;\n await this.loadPalettes();\n }\n\n /**\n * Get the default palette (material-design) or fallback colors\n * @returns Promise of default palette, never returns undefined\n */\n async getDefaultPalette(): Promise<AXPColorPalette> {\n const defaultPalette = await this.getPalette('material-design');\n if (defaultPalette) {\n return defaultPalette;\n }\n\n // Fallback to hardcoded material design colors if provider fails\n return {\n name: 'material-design',\n title: 'Material Design',\n category: 'material',\n description: 'Google Material Design color palette',\n colors: [\n '#F44336', // Red\n '#E91E63', // Pink\n '#9C27B0', // Purple\n '#673AB7', // Deep Purple\n '#3F51B5', // Indigo\n '#2196F3', // Blue\n '#03A9F4', // Light Blue\n '#00BCD4', // Cyan\n '#009688', // Teal\n '#4CAF50', // Green\n '#8BC34A', // Light Green\n '#CDDC39', // Lime\n '#FFEB3B', // Yellow\n '#FFC107', // Amber\n '#FF9800', // Orange\n '#FF5722', // Deep Orange\n ],\n };\n }\n\n //#endregion\n\n //#region ---- Private Methods ----\n\n /**\n * Load palettes from all providers\n */\n private async loadPalettes(): Promise<void> {\n const allPalettes: AXPColorPalette[] = [];\n\n for (const provider of this.providers) {\n try {\n const palettes = await provider.provide();\n allPalettes.push(...palettes);\n } catch (error) {\n console.error(`Error loading palettes from provider ${provider.name}:`, error);\n }\n }\n\n // Remove duplicates based on name\n const uniquePalettes = allPalettes.filter(\n (palette, index, self) => index === self.findIndex((p) => p.name === palette.name),\n );\n\n this.cache = uniquePalettes;\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- Color Palette Types ----\n\n/**\n * Represents a color palette with a unique identifier and collection of colors\n */\nexport interface AXPColorPalette {\n /**\n * Unique identifier for the palette\n * @example 'material-design', 'brand-colors', 'pastel-theme'\n */\n name: string;\n\n /**\n * Display title for the palette\n * @example 'Material Design', 'Brand Colors', 'Pastel Theme'\n */\n title: string;\n\n /**\n * Array of color codes in any valid CSS color format\n * @example ['#FF6B6B', '#4ECDC4', 'rgb(255, 107, 107)']\n */\n colors: string[];\n\n /**\n * Optional description of the palette\n */\n description?: string;\n\n /**\n * Optional category for grouping palettes\n * @example 'brand', 'material', 'theme', 'custom'\n */\n category?: string;\n}\n\n/**\n * Options for filtering color palettes\n */\nexport interface AXPColorPaletteFilterOptions {\n category?: string;\n search?: string;\n}\n\n//#endregion\n\n","import { Injectable } from '@angular/core';\nimport { AXPColorPaletteProvider } from './color-palette.provider';\nimport { AXPColorPalette } from './color-palette.types';\n\n//#region ---- Default System Palettes Provider ----\n\n/**\n * Default system color palette provider\n * Provides built-in color palettes\n */\n@Injectable()\nexport class AXPDefaultColorPalettesProvider extends AXPColorPaletteProvider {\n name = 'system';\n\n async provide(): Promise<AXPColorPalette[]> {\n return [\n {\n name: 'material-design',\n title: 'Material Design',\n category: 'material',\n description: 'Google Material Design color palette',\n colors: [\n '#F44336', // Red\n '#E91E63', // Pink\n '#9C27B0', // Purple\n '#673AB7', // Deep Purple\n '#3F51B5', // Indigo\n '#2196F3', // Blue\n '#03A9F4', // Light Blue\n '#00BCD4', // Cyan\n '#009688', // Teal\n '#4CAF50', // Green\n '#8BC34A', // Light Green\n '#CDDC39', // Lime\n '#FFEB3B', // Yellow\n '#FFC107', // Amber\n '#FF9800', // Orange\n '#FF5722', // Deep Orange\n ],\n },\n {\n name: 'pastel',\n title: 'Pastel Colors',\n category: 'theme',\n description: 'Soft pastel color palette',\n colors: [\n '#FFB3BA', // Light Pink\n '#FFDFBA', // Light Peach\n '#FFFFBA', // Light Yellow\n '#BAFFC9', // Light Green\n '#BAE1FF', // Light Blue\n '#E0BBE4', // Light Purple\n '#FFDFD3', // Light Coral\n '#D4F1F4', // Light Cyan\n ],\n },\n {\n name: 'vibrant',\n title: 'Vibrant Colors',\n category: 'theme',\n description: 'Bold and vibrant color palette',\n colors: [\n '#FF6B6B', // Vibrant Red\n '#4ECDC4', // Vibrant Teal\n '#45B7D1', // Vibrant Blue\n '#FFA07A', // Vibrant Salmon\n '#98D8C8', // Vibrant Mint\n '#F7DC6F', // Vibrant Yellow\n '#BB8FCE', // Vibrant Purple\n '#85C1E2', // Vibrant Sky Blue\n ],\n },\n {\n name: 'earth-tones',\n title: 'Earth Tones',\n category: 'theme',\n description: 'Natural earth tone color palette',\n colors: [\n '#8B4513', // Saddle Brown\n '#A0522D', // Sienna\n '#D2691E', // Chocolate\n '#CD853F', // Peru\n '#DEB887', // Burlywood\n '#F5DEB3', // Wheat\n '#556B2F', // Dark Olive Green\n '#6B8E23', // Olive Drab\n ],\n },\n {\n name: 'monochrome',\n title: 'Monochrome',\n category: 'theme',\n description: 'Grayscale color palette',\n colors: [\n '#000000', // Black\n '#262626', // Very Dark Gray\n '#404040', // Dark Gray\n '#595959', // Medium Dark Gray\n '#737373', // Medium Gray\n '#8C8C8C', // Light Medium Gray\n '#A6A6A6', // Light Gray\n '#BFBFBF', // Very Light Gray\n '#D9D9D9', // Lighter Gray\n '#F2F2F2', // Almost White\n '#FFFFFF', // White\n ],\n },\n ];\n }\n}\n\n//#endregion\n\n","import { InjectionToken } from '@angular/core';\nimport { AXPColumnWidthProvider } from './column-width.types';\n\n//#region ---- Column Width Provider ----\n\n/**\n * Injection token for column width providers\n * Use this to register multiple column width providers with multi: true\n *\n * @example\n * ```typescript\n * providers: [\n * {\n * provide: AXP_COLUMN_WIDTH_PROVIDER,\n * useValue: {\n * matchers: [\n * { name: 'title', width: '300px', priority: 10 },\n * { widgetType: /text-box/i, width: '200px' }\n * ],\n * priority: 150\n * },\n * multi: true\n * }\n * ]\n * ```\n */\nexport const AXP_COLUMN_WIDTH_PROVIDER = new InjectionToken<AXPColumnWidthProvider[]>(\n 'AXP_COLUMN_WIDTH_PROVIDER'\n);\n\n//#endregion\n","import { inject, Injectable } from '@angular/core';\nimport { AXP_COLUMN_WIDTH_PROVIDER } from './column-width.provider';\nimport {\n AXPColumnWidthMatcher,\n AXPColumnWidthProvider,\n ColumnWidthValue,\n IColumnWithWidth,\n} from './column-width.types';\n\n//#region ---- Column Width Service ----\n\n/**\n * Service for resolving column widths based on registered providers\n * Supports matching by column name (priority) and widget type (fallback)\n * Uses multi-provider pattern for extensibility\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class AXPColumnWidthService {\n //#region ---- Services & Dependencies ----\n\n private readonly providers: AXPColumnWidthProvider[] = inject(AXP_COLUMN_WIDTH_PROVIDER, {\n optional: true,\n }) ?? [];\n\n //#region ---- Public Methods ----\n\n /**\n * Resolve width for a column based on registered providers\n * Only returns a width if column doesn't already have one set\n *\n * @param column Column to resolve width for\n * @returns Resolved width string (normalized) or undefined if no match or column already has width\n */\n resolveWidth(column: IColumnWithWidth): string | undefined {\n // If column already has a width set, don't override\n const existingWidth = column.width || column.options?.width;\n if (existingWidth) {\n return undefined;\n }\n\n // Get widget type from column (support both widget.type and showAs.type)\n const widgetType = column.widget?.type || column.showAs?.type;\n\n // Collect all matchers from all providers\n const allMatchers = this.collectMatchers();\n\n // Try name-based matches first (higher priority)\n const nameMatch = this.findNameMatch(column.name, allMatchers);\n if (nameMatch) {\n return this.normalizeWidth(nameMatch.width);\n }\n\n // Fallback to widget-type matches (case-insensitive)\n if (widgetType) {\n const widgetMatch = this.findWidgetTypeMatch(widgetType, allMatchers);\n if (widgetMatch) {\n return this.normalizeWidth(widgetMatch.width);\n }\n }\n\n return undefined;\n }\n\n /**\n * Apply resolved width to a column (mutates the column)\n * Only applies if column doesn't already have a width\n *\n * @param column Column to apply width to\n * @returns true if width was applied, false if column already had width or no match found\n */\n applyWidth(column: IColumnWithWidth): boolean {\n const width = this.resolveWidth(column);\n if (!width) {\n return false;\n }\n\n // Apply to the appropriate property\n if (column.options) {\n column.options.width = width;\n } else {\n column.width = width;\n }\n\n return true;\n }\n\n //#endregion\n\n //#region ---- Private Methods ----\n\n /**\n * Collect all matchers from all providers, sorted by provider priority and matcher priority\n */\n private collectMatchers(): Array<{ matcher: AXPColumnWidthMatcher; providerPriority: number }> {\n const allMatchers: Array<{ matcher: AXPColumnWidthMatcher; providerPriority: number }> = [];\n\n for (const provider of this.providers) {\n const providerPriority = provider.priority ?? 100;\n for (const matcher of provider.matchers) {\n allMatchers.push({\n matcher,\n providerPriority,\n });\n }\n }\n\n // Sort by provider priority (descending), then by matcher priority (descending)\n allMatchers.sort((a, b) => {\n if (a.providerPriority !== b.providerPriority) {\n return b.providerPriority - a.providerPriority; // Higher priority first\n }\n const priorityA = a.matcher.priority ?? 0;\n const priorityB = b.matcher.priority ?? 0;\n return priorityB - priorityA; // Higher priority first\n });\n\n return allMatchers;\n }\n\n /**\n * Find first matching matcher by column name\n * Name matches take precedence over widget type matches\n */\n private findNameMatch(\n columnName: string,\n allMatchers: Array<{ matcher: AXPColumnWidthMatcher; providerPriority: number }>,\n ): AXPColumnWidthMatcher | undefined {\n for (const { matcher } of allMatchers) {\n if (!matcher.name) {\n continue; // Skip if no name matcher\n }\n\n if (typeof matcher.name === 'string') {\n // Exact string match (case-sensitive for names)\n if (matcher.name === columnName) {\n return matcher;\n }\n } else if (matcher.name instanceof RegExp) {\n // RegExp match\n if (matcher.name.test(columnName)) {\n return matcher;\n }\n }\n }\n\n return undefined;\n }\n\n /**\n * Find first matching matcher by widget type (case-insensitive)\n */\n private findWidgetTypeMatch(\n widgetType: string,\n allMatchers: Array<{ matcher: AXPColumnWidthMatcher; providerPriority: number }>,\n ): AXPColumnWidthMatcher | undefined {\n const widgetTypeLower = widgetType.toLowerCase();\n\n for (const { matcher } of allMatchers) {\n if (!matcher.widgetType) {\n continue; // Skip if no widget type matcher\n }\n\n if (typeof matcher.widgetType === 'string') {\n // Case-insensitive string match\n if (matcher.widgetType.toLowerCase() === widgetTypeLower) {\n return matcher;\n }\n } else if (matcher.widgetType instanceof RegExp) {\n // RegExp match (should already be case-insensitive if needed, but we'll test case-insensitively)\n // Create a new regex with case-insensitive flag if not already present\n let regex = matcher.widgetType;\n if (!regex.flags.includes('i')) {\n regex = new RegExp(regex.source, regex.flags + 'i');\n }\n if (regex.test(widgetType)) {\n return matcher;\n }\n }\n }\n\n return undefined;\n }\n\n /**\n * Normalize width value to string format\n * Numbers are converted to pixels (e.g., 150 -> '150px')\n * Strings are preserved as-is (supports any CSS unit)\n */\n private normalizeWidth(width: ColumnWidthValue): string {\n if (typeof width === 'number') {\n return `${width}px`;\n }\n return width;\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- Column Width Types ----\n\n/**\n * Column width value can be a number (converted to pixels) or a string with any CSS unit\n * @example 150 (becomes '150px'), '300px', '50%', '2rem', '20ch'\n */\nexport type ColumnWidthValue = string | number;\n\n/**\n * Matcher for column name - can be exact string match or RegExp pattern\n * @example 'title', /^user/, /.*name$/i\n */\nexport type ColumnNameMatcher = string | RegExp;\n\n/**\n * Matcher for widget type - can be exact string match or RegExp pattern (case-insensitive)\n * @example 'text-box', /^date/, /.*editor$/i\n */\nexport type WidgetTypeMatcher = string | RegExp;\n\n/**\n * Defines a single width matching rule\n */\nexport interface AXPColumnWidthMatcher {\n /**\n * Match by column name (exact string or RegExp pattern)\n * Takes precedence over widgetType matching\n * @example 'title', /^user/, /.*name$/i\n */\n name?: ColumnNameMatcher;\n\n /**\n * Match by widget type (exact string or RegExp pattern, case-insensitive)\n * Used as fallback when name doesn't match\n * @example 'text-box', /^date/, /.*editor$/i\n */\n widgetType?: WidgetTypeMatcher;\n\n /**\n * Width value to apply if this matcher matches\n * Numbers are converted to pixels (e.g., 150 -> '150px')\n * Strings can include any CSS unit (e.g., '300px', '50%', '2rem')\n */\n width: ColumnWidthValue;\n\n /**\n * Priority for this matcher within the provider (higher = more specific, applied first)\n * Default: 0\n */\n priority?: number;\n}\n\n/**\n * Provider configuration for column width rules\n */\nexport interface AXPColumnWidthProvider {\n /**\n * Array of matchers to evaluate\n * Evaluated in priority order (highest first), then by match type (name before widgetType)\n */\n matchers: AXPColumnWidthMatcher[];\n\n /**\n * Priority for this provider relative to other providers (higher = applied first)\n * Default: 100\n */\n priority?: number;\n}\n\n/**\n * Generic column interface for width resolution\n * Works with any column type that has these properties\n */\nexport interface IColumnWithWidth {\n /**\n * Column name\n */\n name: string;\n\n /**\n * Current width (if already set)\n */\n width?: string;\n\n /**\n * Widget type information (optional)\n */\n widget?: {\n type: string;\n };\n\n /**\n * Additional options that might contain width\n */\n options?: {\n width?: string;\n };\n\n /**\n * For entity columns - showAs configuration\n */\n showAs?: {\n type: string;\n };\n}\n\n//#endregion\n","import { AXPColumnWidthProvider } from './column-width.types';\n\n//#region ---- Default Column Width Provider ----\n\n/**\n * Default column width configuration\n * Migrated from DEFAULT_COLUMN_WIDTHS in column-width.middleware.ts\n * Provides sensible defaults for common column names\n */\nexport const defaultColumnWidthProvider: AXPColumnWidthProvider = {\n priority: 100,\n matchers: [\n // Priority: name-based matches (higher priority = more specific)\n { name: 'code', width: '150px', priority: 10 },\n { name: 'name', width: '250px', priority: 10 },\n { name: 'title', width: '250px', priority: 10 },\n { name: 'description', width: '350px', priority: 10 },\n { name: 'note', width: '350px', priority: 10 },\n { name: 'notes', width: '350px', priority: 10 },\n { name: 'content', width: '500px', priority: 10 },\n { name: 'level', width: '100px', priority: 10 },\n { name: 'order', width: '100px', priority: 10 },\n { name: 'phones', width: '300px', priority: 10 },\n { name: 'emails', width: '300px', priority: 10 },\n ],\n};\n\n//#endregion\n","import { Directive, Type } from '@angular/core';\nimport { AXPContextData } from '../context/context-store.service';\nimport { AXPOptionsData } from '../types';\n\nexport interface AXPComponentSlotConfig {\n name: string;\n priority?: number;\n component?: Type<any>;\n condition?: ((context?: AXPContextData) => boolean | Promise<boolean>) | string;\n features?: string[];\n loadComponent?: () => Type<any> | Promise<Type<any>>;\n options?: AXPOptionsData | (() => AXPOptionsData) | (() => Promise<AXPOptionsData>);\n}\n\nexport interface AXPComponentSlotModuleConfigs {\n [slotName: string]: AXPComponentSlotConfig[];\n}\n\n@Directive()\nexport abstract class AXPComponentSlot {\n host: any;\n}\n","import {\n differenceWith,\n get,\n isArray,\n isEmpty,\n isEqual,\n isNil,\n isObjectLike,\n isPlainObject,\n merge,\n set,\n transform,\n union,\n} from 'lodash-es';\n\nexport function extractNestedFieldsWildcard(obj: any, basePath: string, fields: string[]): any {\n const result: any = {};\n\n if (fields.length === 1 && fields[0] === '*') {\n const fullObj = get(obj, basePath);\n return isPlainObject(fullObj) ? fullObj : {};\n }\n\n for (const field of fields) {\n const fullPath = basePath ? `${basePath}.${field}` : field;\n const value = get(obj, fullPath);\n set(result, field, value);\n }\n\n return result;\n}\n\nexport function setSmart(obj: any, smartPath: string, value: any): any {\n const pathParts = smartPath.split('.');\n const lastPart = pathParts[pathParts.length - 1];\n const fieldMatch = lastPart.match(/^\\{(.+)\\}$/);\n\n if (!fieldMatch) {\n // Fix: If value is undefined and we're setting a nested property,\n // check if the parent object exists and if setting this would result in\n // all properties being undefined. If so, set the parent to null instead.\n if (isNil(value) && pathParts.length > 1) {\n const parentPath = pathParts.slice(0, -1).join('.');\n const parentObj = get(obj, parentPath);\n\n // If parent is already null/undefined, don't recreate the object structure\n if (isNil(parentObj)) {\n return obj;\n }\n\n // Check if parent is a plain object (not array, not null)\n if (isPlainObject(parentObj)) {\n const existingKeys = Object.keys(parentObj);\n // Check if all existing properties are null/undefined using lodash\n const allNil = isEmpty(existingKeys) || existingKeys.every((key) => isNil(parentObj[key]));\n\n if (allNil) {\n // Set parent to null instead of creating/keeping an object with all undefined properties\n set(obj, parentPath, null);\n return obj;\n }\n }\n }\n\n set(obj, smartPath, value);\n\n // After setting, check again if parent should be null using lodash\n if (isNil(value) && pathParts.length > 1) {\n const parentPath = pathParts.slice(0, -1).join('.');\n const parentObj = get(obj, parentPath);\n\n if (isPlainObject(parentObj)) {\n // Use lodash to check if all properties are null/undefined\n const allNil = Object.keys(parentObj).every((key) => isNil(parentObj[key]));\n if (allNil) {\n set(obj, parentPath, null);\n }\n }\n }\n\n return obj;\n }\n\n const fields = fieldMatch[1].split(',').map((f) => f.trim());\n const basePath = pathParts.slice(0, -1).join('.');\n const [arrayKey, ...restPath] = basePath.split('.');\n\n // Make sure the array exists\n if (!obj[arrayKey]) obj[arrayKey] = [];\n\n // 🟡 Case A: value is array (normal set)\n if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n const item = value[i];\n const targetItem = obj[arrayKey][i] ?? {};\n const nested = {};\n\n if (restPath.length > 0) {\n const picked = extractNestedFieldsWildcard(item, restPath.join('.'), fields);\n set(nested, restPath.join('.'), picked);\n } else {\n const picked = extractNestedFieldsWildcard(item, '', fields);\n Object.assign(nested, picked);\n }\n\n obj[arrayKey][i] = merge({}, targetItem, nested);\n }\n }\n\n // 🟢 Case B: value is a single value → broadcast\n else {\n for (let i = 0; i < obj[arrayKey].length; i++) {\n const targetItem = obj[arrayKey][i] ?? {};\n const nested = {};\n\n if (restPath.length > 0) {\n for (const field of fields) {\n set(nested, `${restPath.join('.')}.${field}`, value);\n }\n } else {\n for (const field of fields) {\n set(nested, field, value);\n }\n }\n\n obj[arrayKey][i] = merge({}, targetItem, nested);\n }\n }\n\n return obj;\n}\n\nfunction extractFieldsFromPath(obj: any, basePath: string, fields: string[]): any {\n if (fields.length === 1 && fields[0] === '*') {\n const fullObj = basePath ? get(obj, basePath) : obj;\n return isPlainObject(fullObj) ? fullObj : {};\n }\n\n const result: any = {};\n for (const field of fields) {\n const fullPath = basePath ? `${basePath}.${field}` : field;\n const val = get(obj, fullPath);\n if (val !== undefined) {\n result[field] = val;\n }\n }\n return result;\n}\n\nexport function getSmart(obj: any, smartPath: string): any {\n const pathParts = smartPath.split('.');\n const lastPart = pathParts[pathParts.length - 1];\n const fieldMatch = lastPart.match(/^\\{(.+)\\}$/);\n\n // Simple get (no fields)\n if (!fieldMatch) {\n return get(obj, smartPath);\n }\n\n const fields = fieldMatch[1].split(',').map((f) => f.trim());\n const basePath = pathParts.slice(0, -1).join('.');\n const items = get(obj, basePath);\n\n if (!isArray(items)) return [];\n\n const nestedPath = basePath.includes('.') ? basePath.split('.').slice(1).join('.') : '';\n\n return items.map((item) => {\n return extractFieldsFromPath(item, nestedPath, fields);\n });\n}\n\nexport function extractValue<T = any>(value: any, key: string = 'id'): T | null {\n if (isNil(value)) {\n return null;\n }\n return isObjectLike(value) ? get(value, key) : value;\n}\n\nexport function cleanDeep(obj: any) {\n return transform(obj, (result: any, value: any, key: string) => {\n if (isObjectLike(value)) {\n const cleaned = cleanDeep(value);\n if (!isEmpty(cleaned)) {\n result[key] = cleaned;\n }\n } else if (\n !isNil(value) && // not null or undefined\n !(typeof value === 'string' && value.trim() === '') && // not empty string\n !(Array.isArray(value) && value.length === 0) // not empty array\n ) {\n result[key] = value;\n }\n });\n}\n\ntype ChangeEntry = {\n path: string;\n oldValue: any;\n newValue: any;\n arrayDiff?: {\n added: any[];\n removed: any[];\n };\n};\n\nfunction getDeepChanges(obj1: any, obj2: any): ChangeEntry[] {\n const changes: ChangeEntry[] = [];\n\n function walk(o1: any, o2: any, currentPath: string[] = []) {\n // If both values are deeply equal, skip\n if (isEqual(o1, o2)) return;\n\n const isObj1Nil = o1 === null || o1 === undefined;\n const isObj2Nil = o2 === null || o2 === undefined;\n\n // If obj1 is null/undefined and obj2 is not, treat entire obj2 as added\n if (isObj1Nil && !isObj2Nil) {\n if (isPlainObject(o2)) {\n for (const key of Object.keys(o2)) {\n walk(undefined, o2[key], [...currentPath, key]);\n }\n } else if (Array.isArray(o2)) {\n changes.push({\n path: currentPath.join('.'),\n oldValue: undefined,\n newValue: o2,\n arrayDiff: {\n added: o2,\n removed: [],\n },\n });\n } else {\n changes.push({\n path: currentPath.join('.'),\n oldValue: undefined,\n newValue: o2,\n });\n }\n return;\n }\n\n // If obj2 is null/undefined and obj1 is not, treat entire obj1 as removed\n if (!isObj1Nil && isObj2Nil) {\n if (isPlainObject(o1)) {\n for (const key of Object.keys(o1)) {\n walk(o1[key], undefined, [...currentPath, key]);\n }\n } else if (Array.isArray(o1)) {\n changes.push({\n path: currentPath.join('.'),\n oldValue: o1,\n newValue: undefined,\n arrayDiff: {\n added: [],\n removed: o1,\n },\n });\n } else {\n changes.push({\n path: currentPath.join('.'),\n oldValue: o1,\n newValue: undefined,\n });\n }\n return;\n }\n\n // If both are arrays, compare items\n if (Array.isArray(o1) && Array.isArray(o2)) {\n if (!isEqual(o1, o2)) {\n const added = differenceWith(o2, o1, isEqual);\n const removed = differenceWith(o1, o2, isEqual);\n\n changes.push({\n path: currentPath.join('.'),\n oldValue: o1,\n newValue: o2,\n arrayDiff: {\n added,\n removed,\n },\n });\n }\n return;\n }\n\n // If both are plain objects, walk each key\n if (isPlainObject(o1) && isPlainObject(o2)) {\n const allKeys = union(Object.keys(o1), Object.keys(o2));\n for (const key of allKeys) {\n walk(o1[key], o2[key], [...currentPath, key]);\n }\n return;\n }\n\n // Primitive values or mismatched types\n changes.push({\n path: currentPath.join('.'),\n oldValue: o1,\n newValue: o2,\n });\n }\n\n walk(obj1, obj2);\n return changes;\n}\n\n// Method 1: Returns only changed paths\nexport function getChangedPaths(obj1: any, obj2: any): string[] {\n return getDeepChanges(obj1, obj2).map((change) => change.path);\n}\n\n// Method 2: Returns full change entries\nexport function getDetailedChanges(obj1: any, obj2: any): ChangeEntry[] {\n return getDeepChanges(obj1, obj2);\n}\n\nexport function getEnumValues(enumType: any): { id: string; title: string }[] {\n return Object.entries(enumType).map(([key, value]) => ({ id: value as string, title: key as string }));\n}\n","import { signalStore, withState, withComputed, withMethods, patchState } from '@ngrx/signals';\nimport { cloneDeep, has, isEqual } from 'lodash-es';\nimport { computed } from '@angular/core';\nimport { getSmart, setSmart } from '../utils/object-util';\n\n//#region ---- Types ----\n\nexport type AXPContextState = 'initiated' | 'restored' | 'changed' | 'patch';\n\nexport type AXPContextData = {\n [key: string]: any;\n};\n\nexport class AXPContextChangeEvent {\n oldValue?: any;\n newValue?: any;\n path?: string;\n state: AXPContextState;\n data: any;\n}\n\n//#endregion\n\n//#region ---- Context signal store ----\n\n// Shared reactive context: root injector has a default instance; widget/layout trees\n\nexport const AXPContextStore = signalStore(\n // Initial State\n withState(() => ({\n data: {} as AXPContextData, // Shared context data\n state: 'initiated' as AXPContextState, // Current state\n initialSnapshot: {}, // Snapshot of the first initialized state\n previousSnapshot: {}, // Snapshot of the previous state\n lastChange: {\n state: 'initiated',\n } as AXPContextChangeEvent, // Last change event\n })),\n\n // Computed Signals\n withComputed(({ data, state, lastChange, initialSnapshot, previousSnapshot }) => ({\n isChanged: computed(() => state() === 'changed'),\n isReset: computed(() => state() === 'restored'),\n isInitiated: computed(() => state() === 'initiated'),\n isEmpty: computed(() => Object.keys(data()).length === 0),\n isDirty: computed(() => !isEqual(data(), previousSnapshot())),\n snapshot: computed(() => cloneDeep(data())), // Current data snapshot\n initial: computed(() => cloneDeep(initialSnapshot())), // Initial snapshot\n previous: computed(() => cloneDeep(previousSnapshot())), // Previous snapshot\n changeEvent: computed(() => lastChange()), // Reactive last change event\n })),\n\n // Methods for State Management\n withMethods((store) => ({\n // Update a specific value\n update(path: string, value: any) {\n const currentData = cloneDeep(store.data());\n const oldValue = getSmart(currentData, path);\n\n // Skip if the value hasn't changed\n if (isEqual(oldValue, value)) {\n return;\n }\n\n // Update the value and prepare the change event\n const updatedData = setSmart(currentData, path, value);\n const changeEvent: AXPContextChangeEvent = {\n oldValue,\n newValue: value,\n path,\n state: 'changed',\n data: updatedData,\n };\n\n // Patch the state\n patchState(store, {\n previousSnapshot: store.snapshot(), // Save the previous state\n data: updatedData,\n state: 'changed',\n lastChange: changeEvent,\n });\n },\n\n patch(context: Record<string, any>, skipDirtyTracking = false) {\n const currentData = cloneDeep(store.data());\n // Update the value and prepare the change event\n const updatedData = { ...currentData, ...context };\n const changeEvent: AXPContextChangeEvent = {\n state: 'patch',\n data: updatedData,\n };\n\n // Patch the state\n patchState(store, {\n ...(skipDirtyTracking ? {} : { previousSnapshot: store.snapshot() }),\n data: updatedData,\n state: 'changed',\n lastChange: changeEvent,\n });\n },\n\n // Reset to the initial state\n reset() {\n const initialData = store.initial();\n const changeEvent: AXPContextChangeEvent = {\n oldValue: cloneDeep(store.data()), // Current data becomes old value\n newValue: cloneDeep(initialData), // Reset to the initial state\n path: '',\n state: 'restored',\n data: initialData,\n };\n\n patchState(store, {\n previousSnapshot: store.snapshot(), // Save the previous state\n data: initialData,\n state: 'restored',\n lastChange: changeEvent,\n });\n },\n\n // Initialize the state\n set(initialData: any) {\n const currentData = store.data();\n if (isEqual(currentData, initialData)) {\n return; // Skip if the current state matches the initial state\n }\n\n const changeEvent: AXPContextChangeEvent = {\n oldValue: null,\n newValue: cloneDeep(initialData),\n path: '',\n state: 'initiated',\n data: initialData,\n };\n\n patchState(store, {\n initialSnapshot: cloneDeep(initialData), // Save the initial state\n previousSnapshot: store.snapshot(), // Save the current state as the previous\n data: initialData,\n state: 'initiated',\n lastChange: changeEvent,\n });\n },\n\n // Get a specific value\n getValue(path: string) {\n return getSmart(store.data(), path);\n },\n\n // Check if a path exists in the context\n hasValue(path: string) {\n return has(store.data(), path);\n },\n }))\n);\n\n//#endregion\n","import { Injectable, InjectionToken, Injector, inject } from '@angular/core';\nimport { AXPExpressionEvaluatorScope } from './expression-evaluator.service';\n\nexport interface AXPExpressionEvaluatorScopeProvider {\n provide(context: AXPExpressionEvaluatorScopeProviderContext): Promise<void>;\n}\n\nexport class AXPExpressionEvaluatorScopeProviderContext {\n private scopes: AXPExpressionEvaluatorScope = {};\n addScope(namespace: string, functions: { [name: string]: Function }) {\n this.scopes[namespace] = { ...this.scopes[namespace], ...functions };\n }\n getScopes(): AXPExpressionEvaluatorScope {\n return this.scopes;\n }\n}\nexport type AXPExpressionEvaluatorScopeProviders = AXPExpressionEvaluatorScopeProvider[] | (() => AXPExpressionEvaluatorScopeProvider[]);\n\nexport const AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER = new InjectionToken<AXPExpressionEvaluatorScopeProviders>(\n 'AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER'\n);\n\n@Injectable({ providedIn: 'root' })\nexport class AXPExpressionEvaluatorScopeProviderService {\n private readonly injector = inject(Injector);\n private cache: AXPExpressionEvaluatorScope | null = null;\n\n private async load(): Promise<void> {\n if (this.cache) return;\n const raw = this.injector.get(AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER, [], { optional: true });\n const providers: AXPExpressionEvaluatorScopeProvider[] = Array.isArray(raw)\n ? raw\n : typeof raw === 'function'\n ? raw()\n : [];\n const context = new AXPExpressionEvaluatorScopeProviderContext();\n for (const provider of providers) {\n // Resolve lazy-loaded providers (provideLazyProvider useFactory returns Promise<Provider>)\n const resolved = await Promise.resolve(provider);\n if (!resolved || typeof resolved.provide !== 'function') {\n continue;\n }\n await resolved.provide(context);\n }\n this.cache = context.getScopes();\n }\n\n public async getScopesAsync(): Promise<AXPExpressionEvaluatorScope> {\n await this.load();\n return this.cache || {};\n }\n} ","import { Injectable, inject } from '@angular/core';\nimport { AXPExpressionEvaluatorScopeProviderService } from './expression-evaluator-scope-provider.service';\n\nexport type AXPExpressionEvaluatorScope = { [name: string]: { [name: string]: Function } };\n\n@Injectable({ providedIn: 'root' })\nexport class AXPExpressionEvaluatorService {\n // Memoization cache for compiled expressions\n private expressionCache = new Map<string, Function>();\n private providerService = inject(AXPExpressionEvaluatorScopeProviderService);\n\n private getOrCompileFunction(expression: string): Function {\n if (!this.expressionCache.has(expression)) {\n // Check if expression contains multiple statements (has semicolons or newlines)\n const hasMultipleStatements = expression.includes(';') || expression.includes('\\n');\n\n let fn: Function;\n if (hasMultipleStatements) {\n // For multiple statements, execute them in sequence and return the last expression\n fn = new Function('scope', `with (scope) { return (async function() { ${expression} })(); }`);\n } else {\n // For single expressions, use return\n fn = new Function('scope', `with (scope) { return (async function() { return ${expression}; })(); }`);\n }\n\n this.expressionCache.set(expression, fn);\n }\n return this.expressionCache.get(expression)!;\n }\n\n private async getMergedScope(userScope: AXPExpressionEvaluatorScope): Promise<AXPExpressionEvaluatorScope> {\n const pluginScopes = await this.providerService.getScopesAsync();\n // Merge pluginScopes and userScope (userScope takes precedence)\n return { ...pluginScopes, ...userScope };\n }\n\n public async evaluate(source: any | any[], scope: AXPExpressionEvaluatorScope = {}): Promise<any> {\n try {\n const mergedScope = await this.getMergedScope(scope);\n if (typeof source === 'string' && source.includes('{{')) {\n return await this.evaluateStringExpression(source, mergedScope);\n } else if (Array.isArray(source)) {\n const evaluatedArray = [];\n for (const item of source) {\n evaluatedArray.push(await this.evaluate(item, mergedScope));\n }\n return evaluatedArray;\n } else if (typeof source === 'object' && source !== null) {\n const evaluatedObject: any = {};\n for (const key in source) {\n if (source.hasOwnProperty(key)) {\n evaluatedObject[key] = await this.evaluate(source[key], mergedScope);\n }\n }\n return evaluatedObject;\n } else {\n return source;\n }\n } catch (error: unknown) {\n console.error('Expression evaluator - Error evaluating expression:', source, error);\n return false;\n }\n }\n\n private async evaluateStringExpression(templateExpression: string, scope: AXPExpressionEvaluatorScope): Promise<any> {\n // Check if the input is exactly a single {{ ... }} expression (handle multiline)\n const exactMatch = templateExpression.match(/^\\s*\\{\\{\\s*([\\s\\S]*?)\\s*\\}\\}\\s*$/);\n if (exactMatch) {\n const expression = exactMatch[1];\n const sandbox = this.getOrCompileFunction(expression);\n const result = await sandbox(scope);\n return result;\n }\n // Otherwise, interpolate all {{ ... }} expressions in the string\n const regex = /\\{\\{\\s*([\\s\\S]*?)\\s*\\}\\}/g;\n // Collect all matches and their positions\n const matches = [];\n let match;\n while ((match = regex.exec(templateExpression)) !== null) {\n matches.push({\n expression: match[1],\n start: match.index,\n end: regex.lastIndex,\n raw: match[0],\n });\n }\n // Evaluate all expressions in parallel\n const values = await Promise.all(\n matches.map((m) => {\n const sandbox = this.getOrCompileFunction(m.expression);\n return sandbox(scope);\n }),\n );\n // Reconstruct the string with evaluated values\n let result = '';\n let lastIndex = 0;\n matches.forEach((m, i) => {\n result += templateExpression.slice(lastIndex, m.start);\n const value = values[i];\n result += value !== undefined && value !== null ? value : '';\n lastIndex = m.end;\n });\n result += templateExpression.slice(lastIndex);\n return result;\n }\n\n public isExpression(expression: string): boolean {\n if (typeof expression === 'string') {\n return expression.trim().startsWith('{{') && expression.trim().endsWith('}}');\n }\n return false;\n }\n}\n","import { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'axp-component-slot-placeholder',\n template: `<div>\n <ax-skeleton class=\"ax-w-full ax-h-10 ax-rounded-md\"></ax-skeleton>\n </div>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXSkeletonModule],\n standalone: true,\n})\nexport class AXPComponentSlotPlaceholderComponent {}\n\n","import { Injectable, Injector } from \"@angular/core\";\nimport { AXPComponentSlotConfig } from \"./component-slot.types\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AXPComponentSlotRegistryService {\n\n private registry = new Map<string, AXPComponentSlotConfig[]>();\n\n register(slotName: string, config: AXPComponentSlotConfig) {\n let configs = this.registry.get(slotName) || [];\n\n // Check if the component is already registered in this slot\n const isDuplicate = configs.some(existingConfig => existingConfig.name === config.name);\n\n if (!isDuplicate) {\n configs = [...configs, config]; // Add the new configuration\n this.registry.set(slotName, configs);\n }\n }\n\n get(slotName: string): AXPComponentSlotConfig[] {\n return this.registry.get(slotName) || [];\n }\n}","import {\n ComponentRef,\n computed,\n Directive,\n effect,\n ElementRef,\n inject,\n Injector,\n input,\n OnInit,\n runInInjectionContext,\n signal,\n Type,\n ViewContainerRef,\n} from '@angular/core';\nimport { sortBy } from 'lodash-es';\nimport { AXPContextData, AXPContextStore } from '../context/context-store.service';\nimport { AXPExpressionEvaluatorService } from '../expression-evaluator';\nimport { AXPComponentSlotPlaceholderComponent } from './component-slot-placeholder.component';\nimport { AXPComponentSlotRegistryService } from './component-slot-registery.service';\n\n@Directive({\n selector: 'axp-component-slot',\n standalone: false,\n exportAs: 'slot',\n})\nexport class AXPComponentSlotDirective implements OnInit {\n name = input.required<string>();\n host = input<any>();\n context = input<any>();\n\n private elementRef = inject(ElementRef);\n private registryService = inject(AXPComponentSlotRegistryService);\n private injector = inject(Injector);\n private evaluator = inject(AXPExpressionEvaluatorService);\n public viewContainerRef = inject(ViewContainerRef);\n public contextStore = inject(AXPContextStore);\n\n public isEmpty = computed(() => this._viewCount() === 0);\n\n // Create a signal to store the count of children\n private _viewCount = signal(0);\n\n // Track component references for updates\n private componentRefs: ComponentRef<any>[] = [];\n\n // Track placeholder references for replacement\n private placeholderRefs: Map<number, ComponentRef<AXPComponentSlotPlaceholderComponent>> = new Map();\n\n constructor() {\n // Watch for context changes and update component instances\n effect(() => {\n const currentContext = this.context();\n const currentHost = this.host();\n\n // Update all component references with new context and host\n this.componentRefs.forEach((componentRef) => {\n if (componentRef.instance) {\n Object.assign(componentRef.instance, {\n host: currentHost,\n context: currentContext,\n });\n }\n });\n });\n }\n\n async ngOnInit() {\n await this.loadComponents();\n // Update the signal after loading\n this._viewCount.set(this.viewContainerRef.length);\n }\n\n async loadComponents() {\n this.viewContainerRef.clear();\n // Clear previous component references\n this.componentRefs = [];\n this.placeholderRefs.clear();\n\n const configs = sortBy(this.registryService.get(this.name()), (c) => c.priority ?? 0);\n if (!configs) {\n console.error(`No component found for slot ${this.name()}`);\n return;\n }\n\n // Evaluate conditions and check features in parallel for performance\n const results = await Promise.all(\n configs.map(async (c) => {\n // Check condition if provided\n const conditionPassed = c.condition ? await this.evaluateCondition(c.condition) : true;\n\n // Check features if provided\n // const featuresPassed =\n // c.features && c.features.length > 0 ? this.sessionService.isFeatureEnabled(...c.features) : true;\n\n return {\n config: c,\n // visible: conditionPassed && featuresPassed,\n visible: conditionPassed,\n };\n }),\n );\n\n // Filter visible components while preserving priority order\n const slots = results.filter((r) => r.visible).map((r) => r.config);\n\n // Create skeleton placeholders immediately in priority order\n slots.forEach((config, index) => {\n const placeholderRef = this.viewContainerRef.createComponent(AXPComponentSlotPlaceholderComponent);\n this.placeholderRefs.set(index, placeholderRef);\n });\n\n // Load all components in parallel and replace placeholders as they become ready\n const loadPromises = slots.map(async (config, index) => {\n let component!: Type<any> | null | undefined;\n let options: { [key: string]: unknown } = {};\n\n // load component\n if (typeof config.loadComponent === 'function') {\n await runInInjectionContext(this.injector, async () => {\n component = await config.loadComponent?.();\n });\n } else if (config.component) {\n component = config.component;\n }\n\n // load options\n if (typeof config.options === 'function') {\n await runInInjectionContext(this.injector, async () => {\n const fun = config.options as Function;\n options = await fun();\n });\n } else if (config.options) {\n options = await this.evaluator.evaluate(config.options, {});\n }\n\n // Replace placeholder with actual component as soon as it's ready\n if (!component) {\n console.warn(`Component failed to load for slot ${this.name()} at index ${index}`);\n // Remove placeholder if component failed to load\n const placeholderRef = this.placeholderRefs.get(index);\n if (placeholderRef) {\n placeholderRef.destroy();\n this.placeholderRefs.delete(index);\n }\n return;\n }\n\n // Get the placeholder reference at this index\n const placeholderRef = this.placeholderRefs.get(index);\n if (!placeholderRef) {\n console.warn(`Placeholder not found for index ${index}`);\n return;\n }\n\n // Get the index of the placeholder in the view container\n const placeholderIndex = this.viewContainerRef.indexOf(placeholderRef.hostView);\n\n // Remove the placeholder\n placeholderRef.destroy();\n this.placeholderRefs.delete(index);\n\n // Create the actual component at the same position\n const componentRef = this.viewContainerRef.createComponent(component, { index: placeholderIndex });\n\n // Store the component reference for future updates\n this.componentRefs.push(componentRef);\n\n Object.assign(componentRef.instance, {\n host: this.host(),\n context: this.context(),\n ...options,\n });\n });\n\n // Wait for all components to finish loading (they render as they become ready)\n await Promise.all(loadPromises);\n }\n\n private async evaluateCondition(condition: string | ((context?: AXPContextData) => boolean | Promise<boolean>)) {\n if (typeof condition === 'string') {\n const result = await this.evaluator.evaluate(condition, {});\n return result;\n }\n return condition(this.contextStore.data());\n //return condition(this.context());\n }\n}\n","import { Inject, ModuleWithProviders, NgModule, Optional } from '@angular/core';\nimport { AXPComponentSlotModuleConfigs } from './component-slot.types';\nimport { AXPComponentSlotRegistryService } from './component-slot-registery.service';\nimport { AXPComponentSlotDirective } from './component-slot.directive';\n\n@NgModule({\n declarations: [AXPComponentSlotDirective],\n exports: [AXPComponentSlotDirective]\n})\nexport class AXPComponentSlotModule {\n\n static forRoot(configs?: AXPComponentSlotModuleConfigs): ModuleWithProviders<AXPComponentSlotModule> {\n return {\n ngModule: AXPComponentSlotModule,\n providers: [\n {\n provide: 'AXPComponentSlotModuleFactory',\n useFactory: (registry: AXPComponentSlotRegistryService) => () => {\n if (configs) {\n for (const [key, value] of Object.entries(configs)) {\n value.forEach(v => {\n registry.register(key, v);\n })\n }\n }\n },\n deps: [AXPComponentSlotRegistryService],\n multi: true\n }\n ]\n };\n }\n\n static forChild(configs?: AXPComponentSlotModuleConfigs): ModuleWithProviders<AXPComponentSlotModule> {\n return {\n ngModule: AXPComponentSlotModule,\n providers: [\n {\n provide: 'AXPComponentSlotModuleFactory',\n useFactory: (registry: AXPComponentSlotRegistryService) => () => {\n if (configs) {\n for (const [key, value] of Object.entries(configs)) {\n value.forEach(v => {\n registry.register(key, v);\n })\n }\n }\n },\n deps: [AXPComponentSlotRegistryService],\n multi: true\n }\n\n ]\n };\n }\n\n /**\n * @ignore\n */\n constructor(@Optional() @Inject('AXPComponentSlotModuleFactory') instances: any[]) {\n instances?.forEach(f => {\n f();\n });\n }\n\n}\n","\nexport class AXPDataGenerator {\n static uuid(): string {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (char) => {\n const random = (Math.random() * 16) | 0;\n const value = char === 'x' ? random : (random & 0x3) | 0x8;\n return value.toString(16);\n });\n }\n\n static number(max: number): number;\n static number(min: number, max: number): number;\n static number(...args: number[]): number {\n let min = 0;\n let max = 100;\n if (args.length == 1) max = args[0];\n if (args.length == 2) {\n min = args[0];\n max = args[1];\n }\n return Math.floor(Math.random() * (max - min + 1)) + min;\n }\n\n static date(): Date;\n static date(start: Date): Date;\n static date(start: Date, end: Date): Date;\n static date(...args: any[]): Date {\n let start = new Date(2000, 0, 1);\n let end = new Date();\n\n if (args.length === 1) {\n start = args[0];\n } else if (args.length === 2) {\n start = args[0];\n end = args[1];\n }\n\n const startTime = start.getTime();\n const endTime = end.getTime();\n return new Date(startTime + Math.random() * (endTime - startTime));\n }\n\n static array<T>(length: number = 5, generator: () => T): T[] {\n return Array.from({ length }, generator);\n }\n\n static pick<T>(items: T[]): T;\n static pick<T>(items: T[], count: number): T[];\n static pick<T>(...args: any[]): T | T[] {\n if (args.length < 1) {\n throw new Error('Invalid parameters');\n }\n const items: T[] = args[0];\n const count: number = args[1] ?? 1;\n if (count < 1) {\n throw new Error('Count must be at least 1');\n }\n\n // If the count is greater than the number of items, just return a shuffled copy of the array\n if (count >= items.length) {\n return [...items].sort(() => Math.random() - 0.5);\n }\n\n // Shuffle the array and slice the first 'count' elements\n const shuffled = items.slice();\n for (let i = shuffled.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n [shuffled[i], shuffled[j]] = [shuffled[j], shuffled[i]]; // Swap elements\n }\n return count == 1 ? shuffled.slice(0, count)[0] : shuffled.slice(0, count);\n }\n\n static string(length: number = 10): string {\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n return Array.from({ length }, () => chars.charAt(Math.floor(Math.random() * chars.length))).join('');\n }\n\n static boolean(): boolean {\n return Math.random() >= 0.5;\n }\n\n static item<T>(array: T[] = []): T | undefined {\n return array.length > 0 ? array[Math.floor(Math.random() * array.length)] : undefined;\n }\n\n static color(format: 'hsl' | 'rgb' | 'hex' = 'hex'): string {\n // Generate HSL values with safe ranges for good contrast\n const h = Math.floor(Math.random() * 360);\n const s = Math.floor(Math.random() * 20) + 60; // 60% - 80%\n const l = Math.floor(Math.random() * 20) + 40; // 40% - 60%\n\n if (format === 'hsl') {\n return `hsl(${h}, ${s}%, ${l}%)`;\n }\n\n // Convert HSL to RGB\n const { r, g, b } = this.hslToRgb(h, s / 100, l / 100);\n\n if (format === 'rgb') {\n return `rgb(${r}, ${g}, ${b})`;\n }\n\n // Convert RGB to HEX\n const toHex = (val: number) => val.toString(16).padStart(2, '0');\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`;\n }\n\n //TODO: move or read from utils\n private static hslToRgb(h: number, s: number, l: number): { r: number; g: number; b: number } {\n const c = (1 - Math.abs(2 * l - 1)) * s;\n const x = c * (1 - Math.abs((h / 60) % 2 - 1));\n const m = l - c / 2;\n let r = 0, g = 0, b = 0;\n\n if (h < 60) [r, g, b] = [c, x, 0];\n else if (h < 120) [r, g, b] = [x, c, 0];\n else if (h < 180) [r, g, b] = [0, c, x];\n else if (h < 240) [r, g, b] = [0, x, c];\n else if (h < 300) [r, g, b] = [x, 0, c];\n else[r, g, b] = [c, 0, x];\n\n return {\n r: Math.round((r + m) * 255),\n g: Math.round((g + m) * 255),\n b: Math.round((b + m) * 255)\n };\n }\n\n static alphanumeric(length: number = 10): string {\n const chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';\n return Array.from({ length }, () => chars.charAt(Math.floor(Math.random() * chars.length))).join('');\n }\n static alphabet(length: number = 10): string {\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';\n return Array.from({ length }, () => chars.charAt(Math.floor(Math.random() * chars.length))).join('');\n }\n\n static phone(): string {\n const areaCode = this.number(100, 999);\n const exchangeCode = this.number(100, 999);\n const lineNumber = this.number(1000, 9999);\n return `${areaCode}-${exchangeCode}-${lineNumber}`;\n }\n\n static firstName(): string {\n const firstNames = ['John', 'Allen', 'Jak', 'Rose', 'Kate', 'Liam', 'Olivia', 'Noah', 'Emma', 'Ava'];\n return this.pick(firstNames);\n }\n\n static lastName(): string {\n const lastNames = ['Gates', 'Jonsen', 'Smith', 'Ford', 'Jakson', 'Brown', 'Johnson', 'Williams', 'Jones', 'Garcia'];\n return this.pick(lastNames);\n }\n\n static email(): string;\n static email(firstName: string, lastName: string): string;\n static email(...args: any[]): string {\n const domains = ['gmail.com', 'yahoo.com', 'outlook.com', 'example.com'];\n const domain = this.pick(domains);\n const separator = this.pick(['.', '_', '']);\n const randomSuffix = this.boolean() ? this.number(1, 99).toString() : '';\n\n if (args.length === 2) {\n const firstName = args[0].toLowerCase();\n const lastName = args[1].toLowerCase();\n return `${firstName}${separator}${lastName}${randomSuffix}@${domain}`;\n } else {\n const firstName = this.firstName().toLowerCase();\n const lastName = this.lastName().toLowerCase();\n return `${firstName}${separator}${lastName}${randomSuffix}@${domain}`;\n }\n }\n\n static country(): string {\n const countries = ['USA', 'Canada', 'Mexico', 'Germany', 'France', 'Japan', 'Australia'];\n return this.pick(countries);\n }\n\n static city(): string {\n const cities = ['Los Angeles', 'Toronto', 'Vancouver', 'Berlin', 'Paris', 'Tokyo', 'Sydney'];\n return this.pick(cities);\n }\n\n static state(): string {\n const states = ['NY', 'CA', 'TX', 'ON', 'BC', 'NSW', 'BER', 'IDF', 'TYO'];\n return this.pick(states);\n }\n\n static address(): string {\n const streets = ['Main St', 'High St', 'Maple Ave', 'Oak St', 'Pine St', 'Cedar St'];\n const streetNumber = this.number(100, 9999);\n const street = this.pick(streets);\n const city = this.city();\n const state = this.state();\n const zip = this.number(10000, 99999);\n const country = this.country();\n return `${streetNumber} ${street}, ${city}, ${state} ${zip}, ${country}`;\n }\n\n static avatar(): string {\n return `https://avatar.iran.liara.run/public/${this.pick([35, 22, 16, 6, 31])}`;\n //return `https://i.pravatar.cc/300?u=${this.uuid()}`;\n }\n}\n","import { extractValue } from \"../utils/object-util\";\nexport type AXPValueTransformerFunction = (value: any) => any;\n\nexport type AXPValueTransformerFunctions = {\n getter?: AXPValueTransformerFunction;\n setter?: AXPValueTransformerFunction;\n};\n\nexport function objectKeyValueTransforms(keyName: string): AXPValueTransformerFunctions {\n return {\n getter: (value: any) => {\n return extractValue(value, keyName);\n },\n setter: (value: any) => {\n return extractValue(value, keyName);\n },\n };\n}","import { AXDataSource } from '@acorex/cdk/common';\nimport { inject, Injectable, InjectionToken } from '@angular/core';\nimport { set } from 'lodash-es';\nimport { AXPFilterDefinition, AXPMaybePromise, AXPOptionsData } from '../types';\n\nexport interface AXPDataSourceDataFieldDefinition {\n name: string;\n title: string;\n datatype: string;\n type: string;\n options?: AXPOptionsData;\n}\n\nexport type AXPLazyDataSource<T = unknown> = AXPMaybePromise<AXDataSource<T>>;\nexport type AXPDataSourceArray<T = unknown> = AXPMaybePromise<Array<T>>;\nexport type AXPDataSourceValue<T = unknown> = AXPMaybePromise<T>;\nexport type AXPDataSourceType<T = any> = AXPLazyDataSource<T> | AXPDataSourceArray<T> | AXPDataSourceValue<T>;\nexport type AXPDataSourceSample<T = any> = AXPDataSourceArray<T> | AXPDataSourceValue<T>;\nexport interface AXPDataSourceDefinition<T = any> {\n name: string;\n title: string;\n valueField?: {\n name: string;\n title: string;\n };\n textField?: {\n name: string;\n title: string;\n };\n columns: AXPDataSourceDataFieldDefinition[];\n filters: AXPFilterDefinition[];\n samples?: AXPDataSourceSample<T>;\n visible?: boolean;\n source: () => AXPDataSourceType<T>;\n}\n\nexport interface AXPDataSourceDefinitionProvider {\n items(): Promise<AXPDataSourceDefinition[]>;\n}\n\nexport const AXP_DATASOURCE_DEFINITION_PROVIDER = new InjectionToken<AXPDataSourceDefinitionProvider[]>(\n 'AXP_DATASOURCE_TYPE_PROVIDER',\n);\n\n@Injectable({ providedIn: 'root' })\nexport class AXPDataSourceDefinitionProviderService implements AXPDataSourceDefinitionProvider {\n private providers = inject(AXP_DATASOURCE_DEFINITION_PROVIDER, { optional: true });\n\n async items(): Promise<AXPDataSourceDefinition[]> {\n const items: AXPDataSourceDefinition[] = [];\n\n // Load from DI tokens; resolve lazy providers (provideLazyProvider uses useFactory that returns Promise<T>)\n if (Array.isArray(this.providers)) {\n for (const raw of this.providers) {\n const provider = await Promise.resolve(raw);\n if (provider && typeof provider.items === 'function') {\n set(provider, '__parent__', this);\n items.push(...(await provider.items()));\n }\n }\n }\n\n return items;\n }\n\n async get<T = any>(name: string): Promise<AXPDataSourceDefinition<T> | undefined> {\n return (await this.items()).find((c) => c.name == name);\n }\n}\n","// src/app/directives/grid-layout.directive.ts\n\nimport { Directive, ElementRef, ViewContainerRef, computed, inject } from '@angular/core';\n\n@Directive({\n selector: '[axp-content-checker]',\n standalone: true,\n exportAs: 'checker'\n})\nexport class AXPContentCheckerDirective {\n\n public viewContainerRef = inject(ViewContainerRef);\n public elementRef: ElementRef<HTMLDivElement> = inject(ElementRef<HTMLDivElement>);\n\n public isEmpty = computed(() => this.viewContainerRef.length === 0);\n}\n","import { Directive, HostListener, Output, EventEmitter } from '@angular/core';\n\n@Directive({\n selector: '[onDblClick]'\n})\nexport class AXPDblClickDirective {\n @Output() onDblClick = new EventEmitter<Event>();\n\n private lastTap = 0;\n private readonly doubleTapThreshold = 300; // milliseconds\n\n // Listen for the native dblclick event (desktop)\n @HostListener('dblclick', ['$event'])\n handleOnDblClick(event: Event): void {\n this.onDblClick.emit(event);\n }\n\n // Listen for touchend events (mobile)\n @HostListener('touchend', ['$event'])\n onTouchEnd(event: TouchEvent): void {\n const currentTime = new Date().getTime();\n const tapGap = currentTime - this.lastTap;\n\n if (tapGap > 0 && tapGap < this.doubleTapThreshold) {\n // Detected a double-tap\n this.onDblClick.emit(event);\n event.preventDefault(); // Optionally prevent further default actions\n }\n this.lastTap = currentTime;\n }\n}\n","import { Directive, ElementRef, input, OnInit, effect } from '@angular/core';\nimport { set, get } from 'lodash-es';\n\n@Directive({\n selector: '[axp-data]',\n standalone: true\n})\nexport class AXPElementDataDirective implements OnInit {\n\n data = input<any>(null, { alias: 'axp-data' });\n path = input<string>('__data__', { alias: 'axp-data-path' });\n\n constructor(private elementRef: ElementRef<HTMLElement>) { }\n\n ngOnInit() {\n // Initial data setup\n set(this.elementRef.nativeElement, this.path(), this.data());\n }\n\n // Effect to update element data when inputs change\n private updateEffect = effect(() => {\n const currentData = this.data();\n const currentPath = this.path();\n set(this.elementRef.nativeElement, currentPath, currentData);\n });\n\n /**\n * Get data from the element\n */\n getData(): any {\n return get(this.elementRef.nativeElement, this.path());\n }\n\n /**\n * Update data at runtime\n */\n setData(data: any) {\n set(this.elementRef.nativeElement, this.path(), data);\n }\n} ","// src/app/directives/grid-layout.directive.ts\n\nimport { Directive, ElementRef, Renderer2, OnChanges, SimpleChanges, input } from '@angular/core';\nimport { AXPGridLayoutOptions, AXPGridPlacement } from '../types';\n\n@Directive({\n selector: '[axp-grid-layout]',\n standalone: true,\n})\nexport class AXPGridLayoutDirective implements OnChanges {\n options = input.required<AXPGridLayoutOptions>({ alias: 'axp-grid-layout' });\n\n constructor(private el: ElementRef, private renderer: Renderer2) { }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['options']) {\n this.applyTailwindClasses();\n }\n }\n\n private applyTailwindClasses(): void {\n const placement = this.options()?.positions;\n if (!placement) return;\n // Clear existing grid classes\n this.clearClasses();\n\n // Apply new grid classes based on the input options\n this.setClasses(placement.sm, '');\n this.setClasses(placement.md, 'md:');\n this.setClasses(placement.lg, 'lg:');\n this.setClasses(placement.xl, 'xl:');\n this.setClasses(placement.xxl, '2xl:');\n }\n\n private setClasses(placement: AXPGridPlacement | undefined, prefix: string): void {\n if (placement == null) return;\n\n const colStart = placement.colStart ? `${prefix}ax-col-start-${placement.colStart}` : '';\n const colEnd = placement.colEnd ? `${prefix}ax-col-end-${placement.colEnd}` : '';\n const colSpan = placement.colSpan ? `${prefix}ax-col-span-${placement.colSpan}` : '';\n const rowStart = placement.rowStart ? `${prefix}ax-row-start-${placement.rowStart}` : '';\n const rowEnd = placement.rowEnd ? `${prefix}ax-row-end-${placement.rowEnd}` : '';\n const rowSpan = placement.rowSpan ? `${prefix}ax-row-span-${placement.rowSpan}` : '';\n const order = placement.order ? `${prefix}ax-order-${placement.order}` : ''; // Handling order\n\n [colStart, colEnd, colSpan, rowStart, rowEnd, rowSpan, order].forEach(cls => {\n if (cls) {\n this.renderer.addClass(this.el.nativeElement, cls);\n }\n });\n }\n\n private clearClasses(): void {\n const currentClasses = this.el.nativeElement.className.split(' ');\n currentClasses.forEach((className: string) => {\n if (className.startsWith('ax-col-') || className.startsWith('ax-row-') || className.startsWith('ax-order-')) {\n this.renderer.removeClass(this.el.nativeElement, className);\n }\n });\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport type AXPDistributedEventListenerProviderToken<T> =\n | AXPDistributedEventListenerProvider<T>\n | Promise<AXPDistributedEventListenerProvider<T>>;\n\nexport const AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER = new InjectionToken<AXPDistributedEventListenerProviderToken<any>[]>(\n 'AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER'\n);\n\nexport interface AXPDistributedEventListenerProvider<TInput = any, TOutput = void> {\n key: string;\n execute(data: TInput): Promise<TOutput> | TOutput;\n\n priority?: number;\n}","//#region ---- Imports ----\n\nimport { inject, Injectable, Injector, runInInjectionContext } from '@angular/core';\nimport { AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER, AXPDistributedEventListenerProvider } from './distributed-event-listener.provider';\n\n//#endregion\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXPDistributedEventListenerService {\n //#region ---- Providers & Caches ----\n\n private readonly listenerProviders = inject(AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER, { optional: true }) || [];\n private readonly injector = inject(Injector);\n\n /** Cache for listeners by key. */\n private listenersByKey: Map<string, AXPDistributedEventListenerProvider<any>[]> = new Map();\n \n /** Flag to track if providers have been loaded */\n private providersLoaded = false;\n \n //#endregion\n\n //#region ---- Public API ----\n\n /**\n * Dispatches an event to all registered listeners for the given key.\n * @param key The event key.\n * @param data The event data to pass to listeners.\n */\n async dispatch(key: string, data?: any): Promise<void> {\n const providers = await this.resolveProviders();\n const matched = providers.filter(p => p.key === key);\n\n if (!matched.length) {\n return;\n }\n\n for (const provider of matched) {\n try {\n await Promise.resolve(\n runInInjectionContext(this.injector, () => provider.execute(data))\n );\n } catch (err) {\n console.error(`[AXPDistributedEventListenerService] Provider for key='${key}' failed`, err);\n }\n }\n }\n\n/**\n * Dispatch with async response (first matching provider, with retry/timeout)\n */\npublic async dispatchAsync<T, R>(\n key: string,\n data: T,\n options: { timeout: number; retries: number; retryDelay: number } = {\n timeout: 60_000,\n retries: 3,\n retryDelay: 1000,\n }\n): Promise<R> {\n const providers = await this.resolveProviders();\n const matched = providers.filter(p => p.key === key);\n\n if (!matched.length) {\n throw new Error(`No provider found for key='${key}'`);\n }\n\n const attempt = (n: number): Promise<R> => {\n return new Promise<R>((resolve, reject) => {\n let finished = false;\n\n const timer = setTimeout(() => {\n if (!finished) {\n if (n < options.retries) { \n resolve(attempt(n + 1));\n } else {\n reject(\n new Error(`Timeout: no response for key='${key}' after ${options.retries} attempts.`)\n );\n }\n }\n }, options.timeout);\n\n try {\n const provider = matched[0];\n const result = runInInjectionContext(this.injector, () =>\n provider.execute(data)\n );\n\n Promise.resolve(result)\n .then((r: any) => {\n finished = true;\n clearTimeout(timer);\n resolve(r);\n })\n .catch(err => {\n finished = true;\n clearTimeout(timer);\n reject(err);\n });\n } catch (err) {\n clearTimeout(timer);\n reject(err);\n }\n });\n };\n\n return attempt(0);\n}\n\n /**\n * Resolve all providers (handle both direct provider and Promise<provider>)\n */\n private async resolveProviders(): Promise<AXPDistributedEventListenerProvider<any>[]> {\n return Promise.all(\n this.listenerProviders.map(p =>\n p instanceof Promise ? p : Promise.resolve(p)\n )\n );\n}\n\n\n /**\n * Returns all listeners for a specific event key.\n * @param key The event key.\n * @returns Array of listeners for the key.\n */\n async getListeners(key: string): Promise<AXPDistributedEventListenerProvider<any>[]> {\n await this.ensureProvidersLoaded();\n return this.listenersByKey.get(key) || [];\n }\n\n /**\n * Returns all registered event keys.\n * @returns Array of all event keys that have listeners.\n */\n async getRegisteredKeys(): Promise<string[]> {\n await this.ensureProvidersLoaded();\n return Array.from(this.listenersByKey.keys());\n }\n\n //#endregion\n\n //#region ---- Private Methods ----\n\n /**\n * Ensures that all providers have been loaded and cached.\n */\n private async ensureProvidersLoaded(): Promise<void> {\n if (this.providersLoaded) {\n return;\n }\n\n // Resolve all providers\n const resolvedProviders = await Promise.all(this.listenerProviders);\n\n // Group listeners by key\n for (const provider of resolvedProviders) {\n if (provider) {\n const existingListeners = this.listenersByKey.get(provider.key) || [];\n existingListeners.push(provider);\n this.listenersByKey.set(provider.key, existingListeners);\n }\n }\n\n this.providersLoaded = true;\n }\n\n //#endregion\n\n //#region ---- Cache Management ----\n\n /** Clears the listeners cache and forces reload on next access. */\n clearListenersCache(): void {\n this.listenersByKey.clear();\n this.providersLoaded = false;\n }\n\n //#endregion\n}","import { Injectable, OnDestroy } from '@angular/core';\nimport { isUndefined } from 'lodash-es';\nimport { Observable, Subject } from 'rxjs';\nimport { AXPDataGenerator } from '../data/data-generator';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXPBroadcastEventService implements OnDestroy {\n private channel: BroadcastChannel;\n private eventSubjects = new Map<string, Subject<{ data: any; requestId?: string }>>();\n private pendingRequests = new Map<string, (response: any) => void>();\n private multiTabEventHistory = new Set<string>(); // Prevent duplicate processing of the same event\n private readonly instanceId = AXPDataGenerator.uuid();\n\n constructor() {\n this.channel = new BroadcastChannel('platform_global_events');\n\n // Handle incoming messages\n this.channel.onmessage = (event) => {\n const { type, payload, requestId, response, sourceId } = event.data;\n // Prevent processing the same event multiple times (multi-tab synchronization)\n if (requestId && this.multiTabEventHistory.has(requestId)) {\n return;\n }\n\n if (requestId) {\n this.multiTabEventHistory.add(requestId); // Store processed requestId\n setTimeout(() => this.multiTabEventHistory.delete(requestId), 10000); // Cleanup after 10 sec\n }\n\n // Handle responses to pending requests\n if (requestId && !isUndefined(response) && this.pendingRequests.has(requestId)) {\n this.pendingRequests.get(requestId)!(response);\n this.pendingRequests.delete(requestId);\n return;\n }\n\n // Handle normal broadcast events\n // Ignore events originating from this same instance to avoid double-delivery\n if (sourceId && sourceId === this.instanceId) {\n return;\n }\n if (type && this.eventSubjects.has(type)) {\n this.eventSubjects.get(type)!.next({ data: payload, requestId });\n }\n };\n }\n\n /**\n * Publish an event without expecting a response\n */\n public publish<T>(type: string, payload?: T): void {\n this.channel.postMessage({ type, payload, sourceId: this.instanceId });\n // Local echo so same-tab listeners receive the event as well\n if (this.eventSubjects.has(type)) {\n this.eventSubjects.get(type)!.next({ data: payload });\n }\n }\n\n /**\n * Subscribe to an event\n */\n public listen<T>(type: string): Observable<{ data: T; requestId?: string }> {\n if (!this.eventSubjects.has(type)) {\n this.eventSubjects.set(type, new Subject<{ data: T; requestId?: string }>());\n }\n return this.eventSubjects.get(type)!.asObservable();\n }\n\n /**\n * Unsubscribe from an event\n */\n public unsubscribe(type: string): void {\n if (this.eventSubjects.has(type)) {\n this.eventSubjects.get(type)!.complete();\n this.eventSubjects.delete(type);\n }\n }\n\n /**\n * Send a message and wait for a response with retry logic\n */\n public async sendAndWaitForResponse<T, R>(\n type: string,\n payload?: T,\n options: { timeout: number; retries: number; retryDelay: number } = {\n timeout: 60 * 60 * 1000,\n retries: 3,\n retryDelay: 1000,\n },\n ): Promise<R> {\n const requestId = AXPDataGenerator.uuid();\n\n const attemptRequest = (attempt: number): Promise<R> => {\n return new Promise<R>((resolve, reject) => {\n this.pendingRequests.set(requestId, resolve);\n\n this.channel.postMessage({ type, payload, requestId });\n\n setTimeout(() => {\n if (this.pendingRequests.has(requestId)) {\n this.pendingRequests.delete(requestId);\n if (attempt < options.retries) {\n console.warn(`Retrying request '${type}' (${attempt + 1}/${options.retries})...`);\n resolve(attemptRequest(attempt + 1)); // Retry request\n } else {\n reject(new Error(`Timeout: No response received for event '${type}' after ${options.retries} attempts.`));\n }\n }\n }, options.timeout);\n });\n };\n\n return attemptRequest(0);\n }\n\n /**\n * Respond to a request\n */\n public respondToRequest(requestId: string, response: any): void {\n if (!requestId) {\n console.warn('Invalid requestId. Cannot send response.');\n return;\n }\n this.channel.postMessage({ requestId, response });\n }\n\n /**\n * Cleanup when the service is destroyed\n */\n ngOnDestroy(): void {\n this.channel.close();\n\n // Complete all subjects\n this.eventSubjects.forEach((subject) => subject.complete());\n this.eventSubjects.clear();\n\n // Reject all pending requests to avoid dangling promises\n this.pendingRequests.forEach((resolve, requestId) => {\n resolve(Promise.reject(new Error(`Service destroyed. Request ${requestId} was not completed.`)));\n });\n this.pendingRequests.clear();\n\n // Cleanup multi-tab event history\n this.multiTabEventHistory.clear();\n }\n}\n","import { Injectable, Injector, inject, runInInjectionContext } from '@angular/core';\nimport {\n AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER,\n AXPDistributedEventListenerProvider,\n} from '../distributed-events/distributed-event-listener.provider';\n\n@Injectable({ providedIn: 'root' })\nexport class AXPHookService {\n private readonly listenerProviders =\n inject(AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER, { optional: true }) || [];\n private readonly injector = inject(Injector);\n\n /**\n * Resolve all providers (handle both direct providers and Promise<provider>)\n */\n private async resolveProviders(): Promise<AXPDistributedEventListenerProvider<any, any>[]> {\n return Promise.all(\n this.listenerProviders.map(p =>\n p instanceof Promise ? p : Promise.resolve(p)\n )\n );\n }\n\n /**\n * Fire sync hooks (fire-and-forget).\n * All providers with the given key will be executed.\n * Execution is not awaited.\n */\n public fire<T>(key: string, data: T): void {\n this.resolveProviders().then(providers => {\n providers\n .filter(p => p.key === key)\n .sort((a, b) => (a.priority ?? 0) - (b.priority ?? 0))\n .forEach(p => {\n try {\n runInInjectionContext(this.injector, () => p.execute(data));\n } catch (err) {\n console.error(`[AXPHookService] Hook '${key}' failed`, err);\n }\n });\n });\n }\n\n /**\n * Run async hooks sequentially (waterfall).\n * The output of each hook is passed as input to the next hook.\n * Returns the final merged data after all hooks are executed.\n */\n public async runAsync<T>(key: string, initialData: T): Promise<T> {\n const providers = (await this.resolveProviders())\n .filter(p => p.key === key)\n .sort((a, b) => (a.priority ?? 0) - (b.priority ?? 0));\n\n let data = initialData;\n for (const p of providers) {\n data = await Promise.resolve(\n runInInjectionContext(this.injector, () => p.execute(data))\n );\n }\n return data;\n }\n}\n","//#region ---- Imports ----\n\n\n//#endregion\n\n//#region ---- Feature Definition Types ----\n\n/**\n * Feature definition in module manifest.\n * Defines available features with default values.\n */\nexport interface AXPModuleFeatureDefinition {\n /**\n * Feature title (translation key or literal)\n */\n title: string;\n\n /**\n * Feature description (translation key or literal)\n */\n description?: string;\n\n /**\n * Default value for the feature.\n * Used when user doesn't have explicit feature value.\n */\n defaultValue: boolean | number | string | string[] | null;\n\n /**\n * Type hint for validation and UI rendering\n */\n type?: 'boolean' | 'number' | 'string' | 'array';\n\n /**\n * Widget interface for feature configuration UI (optional)\n */\n interface?: {\n type: string;\n options?: Record<string, any>;\n };\n}\n\n/**\n * Feature definition in array format (with key).\n * Used when features are defined as an array in manifest.\n */\nexport interface AXPModuleFeatureDefinitionWithKey extends AXPModuleFeatureDefinition {\n /**\n * Full feature key (ModuleName.FeatureKey format).\n * When using array format, this must be provided.\n */\n key: string;\n}\n\n//#endregion\n\n//#region ---- Manifest Types ----\n\n/**\n * Module manifest structure.\n * Defines module metadata and dependencies.\n * Features are provided via AXP_FEATURE_DEFINITION_PROVIDER token.\n */\nexport interface AXPModuleManifest {\n /**\n * Module name (must match RootConfig.module.name)\n */\n name: string;\n\n /**\n * Module version\n */\n version: string;\n\n /**\n * Module title (can reference const.ts or be translation key)\n */\n title: string;\n\n /**\n * Module description (optional)\n */\n description?: string;\n\n /**\n * Module icon (can reference const.ts)\n */\n icon?: string;\n\n /**\n * i18n scope name (can reference const.ts)\n */\n i18n?: string;\n\n /**\n * Module dependencies.\n * Simple array format: module names (e.g., \"MeasurementCore\") or feature keys (e.g., \"DataManagement.MetaDataDefinitions\").\n * Features use ModuleName.FeatureKey format (dot separator).\n */\n dependencies?: string[];\n\n /**\n * Whether this module is required (always enabled, cannot be disabled).\n * Required modules like 'auth' and 'common' are always available.\n */\n required?: boolean;\n\n /**\n * Additional metadata\n */\n metadata?: {\n [key: string]: any;\n };\n}\n\n/**\n * Full feature name with module prefix.\n * Format: ModuleName.FeatureKey\n */\nexport type AXPFeatureName = string;\n\n/**\n * Feature definition with full name.\n */\nexport interface AXPFeatureDefinition extends AXPModuleFeatureDefinition {\n /**\n * Full feature name (ModuleName.FeatureKey)\n */\n name: AXPFeatureName;\n\n /**\n * Module name\n */\n module: string;\n\n /**\n * Feature key (short name)\n */\n key: string;\n}\n\n//#endregion\n\n","//#region ---- Provider Interfaces ----\n\nimport { InjectionToken } from '@angular/core';\nimport { AXPModuleManifest } from './module-manifest.types';\n\n/**\n * Session service interface for module provider operations.\n * Implementation: @acorex/platform/auth\n */\nexport interface AXPISessionService {\n isLoading$: any;\n status$: any;\n tenant: any | null;\n application: any | null;\n user: any | null;\n}\n\n/**\n * Injection token for session service.\n * Implementation: @acorex/platform/auth\n */\nexport const AXP_SESSION_SERVICE = new InjectionToken<AXPISessionService>(\n 'AXP_SESSION_SERVICE'\n);\n\n/**\n * Injection token for module manifest providers.\n * Modules register their manifest providers using this token.\n */\nexport const AXP_MODULE_MANIFEST_PROVIDER = new InjectionToken<AXPModuleManifest[]>(\n 'AXP_MODULE_MANIFEST_PROVIDER'\n);\n\n//#endregion\n\n\n\n\n","//#region ---- Imports ----\n\nimport { InjectionToken } from '@angular/core';\nimport { AXPModuleFeatureDefinition } from './module-manifest.types';\n\n//#endregion\n\n//#region ---- Feature Definition Provider Interface ----\n\n/**\n * Context for feature definition providers.\n * Allows providers to add additional feature definitions dynamically.\n */\nexport class AXPFeatureDefinitionProviderContext {\n private readonly features: Map<string, AXPModuleFeatureDefinition> = new Map();\n\n /**\n * Add a feature definition.\n * @param key Full feature key (ModuleName:FeatureKey format with colon separator)\n * @param definition Feature definition\n */\n addFeature(key: string, definition: AXPModuleFeatureDefinition): void {\n this.features.set(key, definition);\n }\n\n /**\n * Get all feature definitions.\n */\n getFeatures(): Map<string, AXPModuleFeatureDefinition> {\n return this.features;\n }\n}\n\n/**\n * Interface for feature definition providers.\n * Used to dynamically provide feature definitions for modules.\n */\nexport interface AXPFeatureDefinitionProvider {\n /**\n * Provide feature definitions.\n * @param context Context for adding feature definitions\n */\n provide(context: AXPFeatureDefinitionProviderContext): Promise<void>;\n}\n\n/**\n * Injection token for feature definition providers.\n */\nexport const AXP_FEATURE_DEFINITION_PROVIDER = new InjectionToken<AXPFeatureDefinitionProvider[]>(\n 'AXP_FEATURE_DEFINITION_PROVIDER',\n {\n providedIn: 'root',\n factory: () => [],\n }\n);\n\n//#endregion\n\n","//#region ---- Imports ----\n\nimport { Injectable, inject, Injector } from '@angular/core';\nimport { AXPModuleManifest, AXPFeatureDefinition, AXPFeatureName } from './module-manifest.types';\nimport { AXP_MODULE_MANIFEST_PROVIDER } from './provider-interfaces';\nimport { AXP_FEATURE_DEFINITION_PROVIDER, AXPFeatureDefinitionProviderContext } from './feature-definition.provider';\n\n//#endregion\n\n//#region ---- Registry Service ----\n\n/**\n * Registry service for module manifests.\n * Collects and manages all registered module manifests.\n */\n@Injectable({ providedIn: 'root' })\nexport class AXPModuleManifestRegistry {\n //#region ---- Fields ----\n\n private readonly manifests = new Map<string, AXPModuleManifest>();\n private readonly featureDefinitions = new Map<AXPFeatureName, AXPFeatureDefinition>();\n private readonly injector = inject(Injector);\n private initializationPromise: Promise<void> | null = null;\n private isInitialized = false;\n\n //#endregion\n\n //#region ---- Initialization ----\n\n /**\n * Initialize registry by loading all manifest providers.\n * Should be called during app startup.\n * Safe to call multiple times - will only initialize once.\n */\n async initialize(): Promise<void> {\n // If already initialized, return immediately\n if (this.isInitialized) {\n return;\n }\n\n // If initialization is in progress, wait for it\n if (this.initializationPromise) {\n return this.initializationPromise;\n }\n\n // Start initialization\n this.initializationPromise = this._doInitialize();\n await this.initializationPromise;\n }\n\n /**\n * Internal initialization logic.\n */\n private async _doInitialize(): Promise<void> {\n // Get manifests from injector (using useValue, they are provided directly)\n let manifests: AXPModuleManifest[];\n try {\n const injectedManifests = this.injector.get(AXP_MODULE_MANIFEST_PROVIDER, []);\n manifests = Array.isArray(injectedManifests) ? injectedManifests : injectedManifests ? [injectedManifests] : [];\n } catch (error) {\n console.error('Failed to get manifest providers from injector:', error);\n manifests = [];\n }\n\n // Register all manifests directly\n const registerPromises = manifests.map(async (manifest: AXPModuleManifest) => {\n try {\n // Validate manifest\n if (!manifest) {\n console.error('Invalid manifest:', manifest);\n return;\n }\n await this.register(manifest);\n } catch (error) {\n console.error(`Failed to register manifest:`, error);\n }\n });\n\n await Promise.all(registerPromises);\n\n // Load and register features from all feature definition providers\n await this.loadFeatureDefinitions();\n\n this.isInitialized = true;\n }\n\n //#endregion\n\n //#region ---- Manifest Management ----\n\n /**\n * Register a module manifest.\n */\n async register(manifest: AXPModuleManifest): Promise<void> {\n // Validate manifest\n if (!manifest.name) {\n throw new Error('Manifest must have a name');\n }\n\n if (!manifest.version) {\n throw new Error(`Manifest for module '${manifest.name}' must have a version`);\n }\n\n // Register manifest\n this.manifests.set(manifest.name, manifest);\n }\n\n /**\n * Get manifest for a module.\n */\n get(moduleName: string): AXPModuleManifest | undefined {\n return this.manifests.get(moduleName);\n }\n\n /**\n * Get all registered manifests.\n */\n getAll(): AXPModuleManifest[] {\n return Array.from(this.manifests.values());\n }\n\n /**\n * Check if a module manifest is registered.\n */\n has(moduleName: string): boolean {\n return this.manifests.has(moduleName);\n }\n\n /**\n * Load feature definitions from all registered feature definition providers.\n * Features are automatically associated with modules based on the module name in the feature key.\n */\n private async loadFeatureDefinitions(): Promise<void> {\n try {\n const featureProviders = this.injector.get(AXP_FEATURE_DEFINITION_PROVIDER, []);\n if (!featureProviders || featureProviders.length === 0) {\n return;\n }\n\n const context = new AXPFeatureDefinitionProviderContext();\n\n // Call all providers to collect features\n for (const provider of featureProviders) {\n if (provider instanceof Promise) {\n // If provider is a promise, resolve it\n const resolvedProvider = await provider;\n await resolvedProvider.provide(context);\n } else {\n // If provider is a direct instance, use it directly\n await provider.provide(context);\n }\n }\n\n // Register all features and associate them with their modules\n const features = context.getFeatures();\n for (const [key, definition] of features.entries()) {\n // Extract module name from key (format: ModuleName:FeatureKey)\n const [moduleName, ...keyParts] = key.split(':');\n const shortKey = keyParts.join(':');\n\n // Verify that the module exists\n if (!this.has(moduleName)) {\n console.warn(`Feature '${key}' references unknown module '${moduleName}'. Skipping.`);\n continue;\n }\n\n // Register feature definition\n this.registerFeatureDefinition({\n ...definition,\n name: key,\n module: moduleName,\n key: shortKey,\n });\n }\n } catch (error) {\n console.error('Failed to load feature definitions:', error);\n }\n }\n\n //#endregion\n\n //#region ---- Feature Definition Management ----\n\n /**\n * Get all feature definitions from all manifests.\n */\n getAllFeatureDefinitions(): AXPFeatureDefinition[] {\n return Array.from(this.featureDefinitions.values());\n }\n\n /**\n * Get feature definition by full name.\n */\n getFeatureDefinition(featureName: AXPFeatureName): AXPFeatureDefinition | undefined {\n return this.featureDefinitions.get(featureName);\n }\n\n /**\n * Check if a feature is defined in any manifest.\n */\n isFeatureDefined(featureName: AXPFeatureName): boolean {\n return this.featureDefinitions.has(featureName);\n }\n\n /**\n * Get default value for a feature.\n * Returns undefined if feature is not defined.\n */\n getFeatureDefault(featureName: AXPFeatureName): any {\n const definition = this.getFeatureDefinition(featureName);\n return definition?.defaultValue;\n }\n\n /**\n * Get all feature definitions for a specific module.\n */\n getModuleFeatures(moduleName: string): AXPFeatureDefinition[] {\n return Array.from(this.featureDefinitions.values()).filter((def) => def.module === moduleName);\n }\n\n /**\n * Register a feature definition dynamically (e.g., from feature definition provider).\n * Used to add features that are defined at runtime via AXP_FEATURE_DEFINITION_PROVIDER.\n */\n registerFeatureDefinition(definition: AXPFeatureDefinition): void {\n this.featureDefinitions.set(definition.name, definition);\n }\n\n //#endregion\n\n //#region ---- Dependency Checking ----\n\n /**\n * Check if module dependencies are satisfied.\n * Returns array of missing dependencies.\n * Dependencies can be module names or feature keys (ModuleName.FeatureKey format).\n */\n checkDependencies(moduleName: string): {\n missingModules: string[];\n missingFeatures: string[];\n } {\n const manifest = this.get(moduleName);\n if (!manifest?.dependencies || manifest.dependencies.length === 0) {\n return { missingModules: [], missingFeatures: [] };\n }\n\n const missingModules: string[] = [];\n const missingFeatures: string[] = [];\n\n for (const dependency of manifest.dependencies) {\n // If dependency contains a dot, it's a feature (ModuleName.FeatureKey)\n if (dependency.includes('.')) {\n // Convert dependency format (ModuleName.FeatureKey) to feature name format (ModuleName:Feature:FeatureKey)\n const [moduleName, featureKey] = dependency.split('.');\n const featureName = `${moduleName}:Feature:${featureKey}`;\n if (!this.isFeatureDefined(featureName)) {\n missingFeatures.push(dependency);\n }\n } else {\n // Otherwise, it's a module name\n if (!this.has(dependency)) {\n missingModules.push(dependency);\n }\n }\n }\n\n return { missingModules, missingFeatures };\n }\n\n //#endregion\n}\n\n//#endregion\n\n","//#region ---- Imports ----\n\nimport { AXDataSource } from '@acorex/cdk/common';\nimport {\n AXPDataSourceDefinition,\n AXPDataSourceDefinitionProvider,\n} from '../data/datasource-definition-provider.service';\nimport { AXPFilterDefinition } from '../types/filter.types';\nimport { inject } from '@angular/core';\nimport { AXPModuleManifestRegistry } from './module-manifest.registry';\n\n//#endregion\n\n//#region ---- Module manifests data source ----\n\n/**\n * Registered module manifests for select widgets via dataSource name {@link MODULE_MANIFESTS_DATASOURCE_NAME}.\n */\nexport const MODULE_MANIFESTS_DATASOURCE_NAME = 'platform-module-manifests';\n\n/**\n * Data source definition for module names/titles from {@link AXPModuleManifestRegistry}.\n */\nexport class AXPModuleManifestsDataSourceDefinition implements AXPDataSourceDefinitionProvider {\n //#region ---- Services & Dependencies ----\n\n private readonly manifestRegistry = inject(AXPModuleManifestRegistry);\n\n //#endregion\n\n //#region ---- Public API ----\n\n async items(): Promise<AXPDataSourceDefinition[]> {\n return [\n {\n name: MODULE_MANIFESTS_DATASOURCE_NAME,\n title: 'Module manifests',\n source: () =>\n new AXDataSource({\n key: 'id',\n load: async () => {\n await this.manifestRegistry.initialize();\n const list = this.manifestRegistry.getAll().map((m) => ({\n id: m.name,\n title: m.title || m.name,\n }));\n return { items: list, total: list.length };\n },\n byKey: async (key: unknown) => {\n await this.manifestRegistry.initialize();\n const m = this.manifestRegistry.getAll().find((x) => x.name === key);\n return m ? { id: m.name, title: m.title || m.name } : undefined;\n },\n pageSize: 1000,\n }),\n columns: [\n {\n name: 'id',\n title: 'ID',\n datatype: 'string',\n type: 'text-editor',\n },\n {\n name: 'title',\n title: 'Title',\n datatype: 'string',\n type: 'text-editor',\n },\n ],\n filters: [\n {\n field: 'title',\n title: 'Title',\n operator: { type: 'equal' },\n widget: { type: 'text-editor' },\n filterType: { advance: true, inline: true },\n } as AXPFilterDefinition,\n ],\n textField: { name: 'title', title: 'Title' },\n valueField: { name: 'id', title: 'ID' },\n },\n ];\n }\n\n //#endregion\n}\n\n//#endregion\n","import { Injectable, inject, provideAppInitializer } from '@angular/core';\nimport { AXPStartUpTask } from './app-startup.types';\n\n\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXPAppStartUpService {\n private tasks: AXPStartUpTask[] = [];\n\n registerTask(task: AXPStartUpTask) {\n this.tasks.push(task);\n }\n\n async runAllTasks() {\n for (const task of this.tasks.sort((a, b) => a.priority - b.priority)) {\n this.updateStatus(task.statusText);\n await task.run();\n }\n }\n\n private updateStatus(status: string) {\n const loadingText = document.querySelector('#loadingText');\n if (loadingText) {\n loadingText.innerHTML = status;\n }\n }\n}\n\nfunction initAppFactory(appInitService: AXPAppStartUpService) {\n return () => appInitService.runAllTasks();\n}\n\nexport const AXPAppStartUpProvider = provideAppInitializer(() => {\n const initializerFn = initAppFactory(inject(AXPAppStartUpService));\n return initializerFn();\n});\n","//#region ---- Imports ----\n\nimport { Injector, NgModule } from '@angular/core';\nimport { AXPAppStartUpService } from '../startup/app-startup.service';\nimport { AXPModuleManifestRegistry } from './module-manifest.registry';\n\n//#endregion\n\n//#region ---- Module ----\n\n/**\n * Module for managing module manifests initialization.\n * Handles the registration of manifest startup tasks.\n */\n@NgModule({\n providers: [],\n})\nexport class AXPModuleManifestModule {\n /**\n * @ignore\n * Initializes module manifest tasks on module construction.\n */\n constructor(\n appInitService: AXPAppStartUpService,\n injector: Injector,\n ) {\n const manifestRegistry = injector.get(AXPModuleManifestRegistry);\n\n // Register manifest initialization task\n appInitService.registerTask(\n {\n name: 'ModuleManifests',\n statusText: 'Loading module manifests...',\n priority: 1, // Load early, before features/permissions\n run: async () => {\n await manifestRegistry.initialize();\n },\n }\n );\n }\n}\n\n//#endregion\n\n","//#region ---- Imports ----\n\nimport { resolveMultiLanguageString } from '@acorex/core/translation';\nimport type { AXPMultiLanguageString } from '../types/core.types';\n\n//#endregion\n\n//#region ---- Compare & sort ----\n\nconst DEFAULT_COLLATOR_OPTIONS: Intl.CollatorOptions = { sensitivity: 'base' };\n\n/**\n * Locale-aware comparison of {@link AXPMultiLanguageString} values (plain string, `@scope:key`, or locale map).\n * Resolves each side with {@link resolveMultiLanguageString} for `locale`, then compares with `String#localeCompare`.\n */\nexport function compareMultiLanguageStrings(\n a: AXPMultiLanguageString | null | undefined,\n b: AXPMultiLanguageString | null | undefined,\n locale: string,\n collatorOptions: Intl.CollatorOptions = DEFAULT_COLLATOR_OPTIONS,\n): number {\n const sa = resolveMultiLanguageString(a ?? '', locale);\n const sb = resolveMultiLanguageString(b ?? '', locale);\n return sa.localeCompare(sb, locale, collatorOptions);\n}\n\n/**\n * Stable sort copy: orders items by resolved string for `getValue(item)` using the active `locale`.\n */\nexport function sortByMultiLanguageString<T>(\n items: readonly T[],\n getValue: (item: T) => AXPMultiLanguageString | null | undefined,\n locale: string,\n collatorOptions?: Intl.CollatorOptions,\n): T[] {\n return [...items].sort((x, y) => compareMultiLanguageStrings(getValue(x), getValue(y), locale, collatorOptions));\n}\n\n//#endregion\n","//#region ---- Tag Types ----\n\n/**\n * Represents a tag with text, color, and metadata\n */\nexport interface AXPTag {\n id?: string;\n title: string;\n color: string;\n description?: string;\n scope?: 'system' | 'tenant' | 'user';\n}\n\n/**\n * Options for filtering tags\n */\nexport interface AXPTagFilterOptions {\n scope?: ('system' | 'tenant' | 'user')[];\n search?: string;\n}\n\n//#endregion\n\n","import { InjectionToken } from '@angular/core';\nimport { AXPTag } from './tag.types';\n\n//#region ---- Tag Provider ----\n\n/**\n * Abstract class for tag providers\n * Implement this to provide tags from different sources (system, tenant, user, etc.)\n */\nexport abstract class AXPTagProvider {\n /**\n * Unique name for this provider (e.g., 'system', 'tenant', 'user')\n */\n abstract name: string;\n\n /**\n * Provide tags from this source\n * @returns Promise of tags\n */\n abstract provide(): Promise<AXPTag[]>;\n\n /**\n * Create a new tag (optional - not all providers support creation)\n * @param tag Tag to create\n * @returns Created tag with id\n */\n async create?(tag: Omit<AXPTag, 'id'>): Promise<AXPTag> {\n throw new Error(`Provider ${this.name} does not support tag creation`);\n }\n\n /**\n * Update an existing tag (optional)\n * @param tag Tag to update\n * @returns Updated tag\n */\n async update?(tag: AXPTag): Promise<AXPTag> {\n throw new Error(`Provider ${this.name} does not support tag updates`);\n }\n\n /**\n * Delete a tag (optional)\n * @param id Tag id to delete\n */\n async delete?(id: string): Promise<void> {\n throw new Error(`Provider ${this.name} does not support tag deletion`);\n }\n}\n\n/**\n * Injection token for tag providers\n * Use this to register multiple tag providers\n */\nexport const AXP_TAG_PROVIDER = new InjectionToken<AXPTagProvider[]>('AXP_TAG_PROVIDER');\n\n//#endregion\n\n","import { inject, Injectable } from '@angular/core';\nimport { AXPTag, AXPTagFilterOptions } from './tag.types';\nimport { AXP_TAG_PROVIDER, AXPTagProvider } from './tag.provider';\n\n//#region ---- Tag Service ----\n\n/**\n * Service for managing tags from multiple providers\n * Aggregates tags from all registered providers\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class AXPTagService {\n\n //#region ---- Dependencies ----\n\n private providers: AXPTagProvider[] = inject(AXP_TAG_PROVIDER, { optional: true }) ?? [];\n\n //#endregion\n\n //#region ---- State ----\n\n private cache: AXPTag[] | null = null;\n\n //#endregion\n\n //#region ---- Public API ----\n\n /**\n * Get all tags from all providers\n * @param options Filter options\n * @returns Promise of tags\n */\n async getTags(options?: AXPTagFilterOptions): Promise<AXPTag[]> {\n if (!this.cache) {\n await this.loadTags();\n }\n\n let tags = this.cache!;\n\n // Apply scope filter\n if (options?.scope && options.scope.length > 0) {\n tags = tags.filter((tag) => tag.scope && options.scope!.includes(tag.scope));\n }\n\n // Apply search filter\n if (options?.search) {\n const searchLower = options.search.toLowerCase();\n tags = tags.filter(\n (tag) =>\n tag.title.toLowerCase().includes(searchLower) ||\n tag.description?.toLowerCase().includes(searchLower),\n );\n }\n\n return tags;\n }\n\n /**\n * Create a new tag using the appropriate provider\n * @param tag Tag to create\n * @param providerName Provider to use (defaults to first writable provider)\n * @returns Created tag\n */\n async createTag(tag: Omit<AXPTag, 'id'>, providerName?: string): Promise<AXPTag> {\n const provider = providerName\n ? this.providers.find((p) => p.name === providerName)\n : this.providers.find((p) => p.create);\n\n if (!provider || !provider.create) {\n throw new Error('No writable tag provider available');\n }\n\n const createdTag = await provider.create(tag);\n\n // Invalidate cache\n this.cache = null;\n\n return createdTag;\n }\n\n /**\n * Update an existing tag\n * @param tag Tag to update\n * @returns Updated tag\n */\n async updateTag(tag: AXPTag): Promise<AXPTag> {\n const provider = this.providers.find((p) => p.name === tag.scope && p.update);\n\n if (!provider || !provider.update) {\n throw new Error(`No provider found for updating tag with scope: ${tag.scope}`);\n }\n\n const updatedTag = await provider.update(tag);\n\n // Invalidate cache\n this.cache = null;\n\n return updatedTag;\n }\n\n /**\n * Delete a tag\n * @param tagId Tag id to delete\n * @param scope Tag scope\n */\n async deleteTag(tagId: string, scope: string): Promise<void> {\n const provider = this.providers.find((p) => p.name === scope && p.delete);\n\n if (!provider || !provider.delete) {\n throw new Error(`No provider found for deleting tag with scope: ${scope}`);\n }\n\n await provider.delete(tagId);\n\n // Invalidate cache\n this.cache = null;\n }\n\n /**\n * Reload tags from all providers\n */\n async reload(): Promise<void> {\n this.cache = null;\n await this.loadTags();\n }\n\n //#endregion\n\n //#region ---- Private Methods ----\n\n /**\n * Load tags from all providers\n */\n private async loadTags(): Promise<void> {\n const allTags: AXPTag[] = [];\n\n for (const provider of this.providers) {\n try {\n const tags = await provider.provide();\n allTags.push(...tags);\n } catch (error) {\n console.error(`Error loading tags from provider ${provider.name}:`, error);\n }\n }\n\n // Remove duplicates based on title (case-insensitive)\n const uniqueTags = allTags.filter(\n (tag, index, self) =>\n index === self.findIndex((t) => t.title.toLowerCase() === tag.title.toLowerCase()),\n );\n\n this.cache = uniqueTags;\n }\n\n //#endregion\n}\n\n//#endregion\n\n","import { AXStyleColorType } from '@acorex/cdk/common';\n\n/**\n * Additional suggested generic actions for future consideration:\n * \n * Data & Content Actions:\n * - Search = 'search' - Search functionality\n * - Filter = 'filter' - Apply filters\n * - Sort = 'sort' - Sort data\n * - Group = 'group' - Group data\n * - Expand = 'expand' - Expand details\n * - Collapse = 'collapse' - Collapse details\n * - Pin = 'pin' - Pin to favorites\n * - Bookmark = 'bookmark' - Bookmark item\n * - Favorite = 'favorite' - Mark as favorite\n * - Star = 'star' - Star rating\n * \n * Workflow Actions:\n * - Start = 'start' - Start process/workflow\n * - Stop = 'stop' - Stop process\n * - Pause = 'pause' - Pause process\n * - Resume = 'resume' - Resume process\n * - Cancel = 'cancel' - Cancel operation\n * - Complete = 'complete' - Mark as complete\n * - Close = 'close' - Close item\n * - Reopen = 'reopen' - Reopen closed item\n * - Forward = 'forward' - Forward to next step\n * - Back = 'back' - Go back\n * \n * Communication Actions:\n * - Reply = 'reply' - Reply to message\n * - Forward = 'forward' - Forward message\n * - Notify = 'notify' - Send notification\n * - Invite = 'invite' - Invite user\n * - Join = 'join' - Join group/meeting\n * - Leave = 'leave' - Leave group/meeting\n * \n * Security Actions:\n * - Login = 'login' - User login\n * - Logout = 'logout' - User logout\n * - Block = 'block' - Block user/content\n * - Unblock = 'unblock' - Unblock user/content\n * - Ban = 'ban' - Ban user\n * - Unban = 'unban' - Unban user\n * - Verify = 'verify' - Verify identity\n * - Authenticate = 'authenticate' - Authenticate\n * \n * File & Media Actions:\n * - Open = 'open' - Open file\n * - Save = 'save' - Save file\n * - SaveAs = 'save-as' - Save as new file\n * - Attach = 'attach' - Attach file\n * - Detach = 'detach' - Detach file\n * - Compress = 'compress' - Compress files\n * - Extract = 'extract' - Extract archive\n * - Convert = 'convert' - Convert format\n * - Crop = 'crop' - Crop image\n * - Resize = 'resize' - Resize image\n * \n * System Actions:\n * - Sync = 'sync' - Synchronize data\n * - Backup = 'backup' - Create backup\n * - Restore = 'restore' - Restore from backup\n * - Reset = 'reset' - Reset to defaults\n * - Clear = 'clear' - Clear data\n * - Optimize = 'optimize' - Optimize performance\n * - Update = 'update' - Update system\n * - Install = 'install' - Install component\n * - Uninstall = 'uninstall' - Uninstall component\n * - Enable = 'enable' - Enable feature\n * - Disable = 'disable' - Disable feature\n * \n * Analytics & Monitoring:\n * - Monitor = 'monitor' - Monitor activity\n * - Track = 'track' - Track progress\n * - Analyze = 'analyze' - Analyze data\n * - Debug = 'debug' - Debug issue\n * - Log = 'log' - View logs\n * - Alert = 'alert' - Set alert\n * - Dashboard = 'dashboard' - View dashboard\n * - Metrics = 'metrics' - View metrics\n * \n * Collaboration Actions:\n * - Collaborate = 'collaborate' - Start collaboration\n * - Share = 'share' - Share content\n * - Comment = 'comment' - Add comment\n * - Like = 'like' - Like content\n * - Follow = 'follow' - Follow user/content\n * - Subscribe = 'subscribe' - Subscribe to updates\n * - Unsubscribe = 'unsubscribe' - Unsubscribe\n * - Rate = 'rate' - Rate content\n * - Review = 'review' - Review content\n * - Recommend = 'recommend' - Recommend content\n */\n\nexport enum AXPSystemActionType {\n View = 'view',\n Create = 'create',\n Update = 'update',\n Delete = 'delete',\n Approve = 'approve',\n Reject = 'reject',\n Submit = 'submit',\n Export = 'export',\n Import = 'import',\n Print = 'print',\n Assign = 'assign',\n Lock = 'lock',\n Unlock = 'unlock',\n Share = 'share',\n Configure = 'configure',\n Reorder = 'reorder',\n Preview = 'preview',\n Duplicate = 'duplicate',\n Archive = 'archive',\n Publish = 'publish',\n Unpublish = 'unpublish',\n Upload = 'upload',\n Download = 'download',\n Copy = 'copy',\n Move = 'move',\n Rename = 'rename',\n Restore = 'restore',\n Manage = 'manage',\n Info = 'info',\n Confirm = 'confirm',\n Design = 'design',\n VersionHistory = 'version-history',\n Compare = 'compare',\n Comments = 'comments',\n Sign = 'sign',\n Setup = 'setup',\n Send = 'send',\n Report = 'report',\n Sent = 'sent',\n Review = 'review',\n Generate = 'generate',\n Refresh = 'refresh',\n Reload = 'reload',\n Search = 'search',\n Filter = 'filter',\n Sort = 'sort',\n Start = 'start',\n Stop = 'stop',\n Pause = 'pause',\n Cancel = 'cancel',\n Close = 'close',\n Complete = 'complete',\n Save = 'save',\n SaveAs = 'save-as',\n Sync = 'sync',\n Reset = 'reset',\n Clear = 'clear',\n Distribution = 'distribution',\n}\nexport interface AXPSystemAction {\n key: string;\n title: string;\n icon?: string;\n color?: string;\n critical?: boolean;\n descriptions: {\n title: string;\n tooltip: string;\n permission: string;\n audit: string;\n };\n}\n\nconst i18n = (key: string) => `@general:actions.${key}`;\n\nexport const AXPSystemActions = Object.freeze({\n View: {\n key: AXPSystemActionType.View,\n title: i18n('view.title'),\n icon: 'fa-light fa-eye',\n color: 'primary',\n descriptions: {\n title: i18n('view.title'),\n tooltip: i18n('view.description'),\n permission: i18n('view.permission'),\n audit: i18n('view.audit')\n }\n },\n Create: {\n key: AXPSystemActionType.Create,\n title: i18n('create.title'),\n icon: 'fa-light fa-plus',\n color: 'primary',\n descriptions: {\n title: i18n('create.title'),\n tooltip: i18n('create.description'),\n permission: i18n('create.permission'),\n audit: i18n('create.audit')\n }\n },\n Edit: {\n key: AXPSystemActionType.Update,\n title: i18n('edit.title'),\n icon: 'fa-light fa-pen',\n color: 'default',\n descriptions: {\n title: i18n('edit.title'),\n tooltip: i18n('edit.description'),\n permission: i18n('edit.permission'),\n audit: i18n('edit.audit')\n }\n },\n Delete: {\n key: AXPSystemActionType.Delete,\n title: i18n('delete.title'),\n icon: 'fa-light fa-trash',\n color: 'danger',\n critical: true,\n descriptions: {\n title: i18n('delete.title'),\n tooltip: i18n('delete.description'),\n permission: i18n('delete.permission'),\n audit: i18n('delete.audit')\n }\n },\n Approve: {\n key: AXPSystemActionType.Approve,\n title: i18n('approve.title'),\n icon: 'fa-light fa-circle-check',\n color: 'success',\n critical: true,\n descriptions: {\n title: i18n('approve.title'),\n tooltip: i18n('approve.description'),\n permission: i18n('approve.permission'),\n audit: i18n('approve.audit')\n }\n },\n Submit: {\n key: AXPSystemActionType.Submit,\n title: i18n('submit.title'),\n icon: 'fa-light fa-paper-plane',\n color: 'primary',\n descriptions: {\n title: i18n('submit.title'),\n tooltip: i18n('submit.description'),\n permission: i18n('submit.permission'),\n audit: i18n('submit.audit')\n }\n },\n Reject: {\n key: AXPSystemActionType.Reject,\n title: i18n('reject.title'),\n icon: 'fa-light fa-ban',\n color: 'danger',\n critical: true,\n descriptions: {\n title: i18n('reject.title'),\n tooltip: i18n('reject.description'),\n permission: i18n('reject.permission'),\n audit: i18n('reject.audit')\n }\n },\n Export: {\n key: AXPSystemActionType.Export,\n title: i18n('export.title'),\n icon: 'fa-light fa-download',\n color: 'default',\n descriptions: {\n title: i18n('export.title'),\n tooltip: i18n('export.description'),\n permission: i18n('export.permission'),\n audit: i18n('export.audit')\n }\n },\n Import: {\n key: AXPSystemActionType.Import,\n title: i18n('import.title'),\n icon: 'fa-light fa-upload',\n color: 'default',\n descriptions: {\n title: i18n('import.title'),\n tooltip: i18n('import.description'),\n permission: i18n('import.permission'),\n audit: i18n('import.audit')\n }\n },\n Print: {\n key: AXPSystemActionType.Print,\n title: i18n('print.title'),\n icon: 'fa-light fa-print',\n color: 'default',\n descriptions: {\n title: i18n('print.title'),\n tooltip: i18n('print.description'),\n permission: i18n('print.permission'),\n audit: i18n('print.audit')\n }\n },\n Duplicate: {\n key: AXPSystemActionType.Duplicate,\n title: i18n('duplicate.title'),\n icon: 'fa-light fa-clone',\n color: 'warning',\n descriptions: {\n title: i18n('duplicate.title'),\n tooltip: i18n('duplicate.description'),\n permission: i18n('duplicate.permission'),\n audit: i18n('duplicate.audit')\n }\n },\n Archive: {\n key: AXPSystemActionType.Archive,\n title: i18n('archive.title'),\n icon: 'fa-light fa-box-archive',\n color: 'default',\n descriptions: {\n title: i18n('archive.title'),\n tooltip: i18n('archive.description'),\n permission: i18n('archive.permission'),\n audit: i18n('archive.audit')\n }\n },\n Restore: {\n key: AXPSystemActionType.Restore,\n title: i18n('restore.title'),\n icon: 'fa-light fa-arrow-rotate-left',\n color: 'default',\n descriptions: {\n title: i18n('restore.title'),\n tooltip: i18n('restore.description'),\n permission: i18n('restore.permission'),\n audit: i18n('restore.audit')\n }\n },\n Assign: {\n key: AXPSystemActionType.Assign,\n title: i18n('assign.title'),\n icon: 'fa-light fa-user-plus',\n color: 'primary',\n descriptions: {\n title: i18n('assign.title'),\n tooltip: i18n('assign.description'),\n permission: i18n('assign.permission'),\n audit: i18n('assign.audit')\n }\n },\n Lock: {\n key: AXPSystemActionType.Lock,\n title: i18n('lock.title'),\n icon: 'fa-light fa-lock',\n color: 'warning',\n descriptions: {\n title: i18n('lock.title'),\n tooltip: i18n('lock.description'),\n permission: i18n('lock.permission'),\n audit: i18n('lock.audit')\n }\n },\n Unlock: {\n key: AXPSystemActionType.Unlock,\n title: i18n('unlock.title'),\n icon: 'fa-light fa-unlock',\n color: 'success',\n descriptions: {\n title: i18n('unlock.title'),\n tooltip: i18n('unlock.description'),\n permission: i18n('unlock.permission'),\n audit: i18n('unlock.audit')\n }\n },\n Share: {\n key: AXPSystemActionType.Share,\n title: i18n('share.title'),\n icon: 'fa-light fa-share-nodes',\n color: 'info',\n descriptions: {\n title: i18n('share.title'),\n tooltip: i18n('share.description'),\n permission: i18n('share.permission'),\n audit: i18n('share.audit')\n }\n },\n Configure: {\n key: AXPSystemActionType.Configure,\n title: i18n('configure.title'),\n icon: 'fa-light fa-sliders',\n color: 'primary',\n descriptions: {\n title: i18n('configure.title'),\n tooltip: i18n('configure.description'),\n permission: i18n('configure.permission'),\n audit: i18n('configure.audit')\n }\n },\n Reorder: {\n key: AXPSystemActionType.Reorder,\n title: i18n('reorder.title'),\n icon: 'fa-light fa-arrow-down-up-across-line',\n color: 'default',\n descriptions: {\n title: i18n('reorder.title'),\n tooltip: i18n('reorder.description'),\n permission: i18n('reorder.permission'),\n audit: i18n('reorder.audit')\n }\n },\n Preview: {\n key: AXPSystemActionType.Preview,\n title: i18n('preview.title'),\n icon: 'fa-light fa-magnifying-glass',\n color: 'default',\n descriptions: {\n title: i18n('preview.title'),\n tooltip: i18n('preview.description'),\n permission: i18n('preview.permission'),\n audit: i18n('preview.audit')\n }\n },\n Publish: {\n key: AXPSystemActionType.Publish,\n title: i18n('publish.title'),\n icon: 'fa-light fa-globe',\n color: 'success',\n descriptions: {\n title: i18n('publish.title'),\n tooltip: i18n('publish.description'),\n permission: i18n('publish.permission'),\n audit: i18n('publish.audit')\n }\n },\n Unpublish: {\n key: AXPSystemActionType.Unpublish,\n title: i18n('unpublish.title'),\n icon: 'fa-light fa-globe-slash',\n color: 'danger',\n descriptions: {\n title: i18n('unpublish.title'),\n tooltip: i18n('unpublish.description'),\n permission: i18n('unpublish.permission'),\n audit: i18n('unpublish.audit')\n }\n },\n Upload: {\n key: AXPSystemActionType.Upload,\n title: i18n('upload.title'),\n icon: 'fa-light fa-upload',\n color: 'default',\n descriptions: {\n title: i18n('upload.title'),\n tooltip: i18n('upload.description'),\n permission: i18n('upload.permission'),\n audit: i18n('upload.audit')\n }\n },\n Download: {\n key: AXPSystemActionType.Download,\n title: i18n('download.title'),\n icon: 'fa-light fa-download',\n color: 'default',\n descriptions: {\n title: i18n('download.title'),\n tooltip: i18n('download.description'),\n permission: i18n('download.permission'),\n audit: i18n('download.audit')\n }\n },\n Copy: {\n key: AXPSystemActionType.Copy,\n title: i18n('copy.title'),\n icon: 'fa-light fa-copy',\n color: 'default',\n descriptions: {\n title: i18n('copy.title'),\n tooltip: i18n('copy.description'),\n permission: i18n('copy.permission'),\n audit: i18n('copy.audit')\n }\n },\n Move: {\n key: AXPSystemActionType.Move,\n title: i18n('move.title'),\n icon: 'fa-light fa-arrow-right-arrow-left',\n color: 'default',\n descriptions: {\n title: i18n('move.title'),\n tooltip: i18n('move.description'),\n permission: i18n('move.permission'),\n audit: i18n('move.audit')\n }\n },\n Rename: {\n key: AXPSystemActionType.Rename,\n title: i18n('rename.title'),\n icon: 'fa-light fa-pen',\n color: 'default',\n descriptions: {\n title: i18n('rename.title'),\n tooltip: i18n('rename.description'),\n permission: i18n('rename.permission'),\n audit: i18n('rename.audit')\n }\n },\n Manage: {\n key: AXPSystemActionType.Manage,\n title: i18n('manage.title'),\n icon: 'fa-light fa-gear',\n color: 'default',\n descriptions: {\n title: i18n('manage.title'),\n tooltip: i18n('manage.description'),\n permission: i18n('manage.permission'),\n audit: i18n('manage.audit')\n }\n },\n Info: {\n key: AXPSystemActionType.Info,\n title: i18n('info.title'),\n icon: 'fa-light fa-info',\n color: 'default',\n descriptions: {\n title: i18n('info.title'),\n tooltip: i18n('info.description'),\n permission: i18n('info.permission'),\n audit: i18n('info.audit')\n }\n },\n Confirm: {\n key: AXPSystemActionType.Confirm,\n title: i18n('confirm.title'),\n icon: 'fa-light fa-check',\n color: 'success',\n descriptions: {\n title: i18n('confirm.title'),\n tooltip: i18n('confirm.description'),\n permission: i18n('confirm.permission'),\n audit: i18n('confirm.audit')\n }\n },\n Design: {\n key: AXPSystemActionType.Design,\n title: i18n('design.title'),\n icon: 'fa-light fa-paintbrush',\n color: 'default',\n descriptions: {\n title: i18n('design.title'),\n tooltip: i18n('design.description'),\n permission: i18n('design.permission'),\n audit: i18n('design.audit')\n }\n },\n VersionHistory: {\n key: AXPSystemActionType.VersionHistory,\n title: i18n('version-history.title'),\n icon: 'fa-light fa-history',\n color: 'default',\n descriptions: {\n title: i18n('version-history.title'),\n tooltip: i18n('version-history.description'),\n permission: i18n('version-history.permission'),\n audit: i18n('version-history.audit')\n }\n },\n Compare: {\n key: AXPSystemActionType.Compare,\n title: i18n('compare.title'),\n icon: 'fa-light fa-code-compare',\n color: 'default',\n descriptions: {\n title: i18n('compare.title'),\n tooltip: i18n('compare.description'),\n permission: i18n('compare.permission'),\n audit: i18n('compare.audit')\n }\n },\n Comments: {\n key: AXPSystemActionType.Comments,\n title: i18n('comments.title'),\n icon: 'fa-light fa-comments',\n color: 'default',\n descriptions: {\n title: i18n('comments.title'),\n tooltip: i18n('comments.description'),\n permission: i18n('comments.permission'),\n audit: i18n('comments.audit')\n }\n },\n Sign: {\n key: AXPSystemActionType.Sign,\n title: i18n('sign.title'),\n icon: 'fa-light fa-signature',\n color: 'default',\n descriptions: {\n title: i18n('sign.title'),\n tooltip: i18n('sign.description'),\n permission: i18n('sign.permission'),\n audit: i18n('sign.audit')\n }\n },\n Setup: {\n key: AXPSystemActionType.Setup,\n title: i18n('setup.title'),\n icon: 'fa-light fa-cog',\n color: 'default',\n descriptions: {\n title: i18n('setup.title'),\n tooltip: i18n('setup.description'),\n permission: i18n('setup.permission'),\n audit: i18n('setup.audit')\n }\n },\n Send: {\n key: AXPSystemActionType.Send,\n title: i18n('send.title'),\n icon: 'fa-light fa-envelope',\n color: 'default',\n descriptions: {\n title: i18n('send.title'),\n tooltip: i18n('send.description'),\n permission: i18n('send.permission'),\n audit: i18n('send.audit')\n }\n },\n Report: {\n key: AXPSystemActionType.Report,\n title: i18n('report.title'),\n icon: 'fa-light fa-chart-line',\n color: 'default',\n descriptions: {\n title: i18n('report.title'),\n tooltip: i18n('report.description'),\n permission: i18n('report.permission'),\n audit: i18n('report.audit')\n }\n },\n Sent: {\n key: AXPSystemActionType.Sent,\n title: i18n('sent.title'),\n icon: 'fa-light fa-paper-plane',\n color: 'default',\n descriptions: {\n title: i18n('sent.title'),\n tooltip: i18n('sent.description'),\n permission: i18n('sent.permission'),\n audit: i18n('sent.audit')\n }\n },\n Review: {\n key: AXPSystemActionType.Review,\n title: i18n('review.title'),\n icon: 'fa-light fa-eye',\n color: 'default',\n descriptions: {\n title: i18n('review.title'),\n tooltip: i18n('review.description'),\n permission: i18n('review.permission'),\n audit: i18n('review.audit')\n }\n },\n Generate: {\n key: AXPSystemActionType.Generate,\n title: i18n('generate.title'),\n icon: 'fa-light fa-wand-magic-sparkles',\n color: 'primary',\n descriptions: {\n title: i18n('generate.title'),\n tooltip: i18n('generate.description'),\n permission: i18n('generate.permission'),\n audit: i18n('generate.audit')\n }\n },\n Refresh: {\n key: AXPSystemActionType.Refresh,\n title: i18n('refresh.title'),\n icon: 'fa-light fa-arrows-rotate',\n color: 'default',\n descriptions: {\n title: i18n('refresh.title'),\n tooltip: i18n('refresh.description'),\n permission: i18n('refresh.permission'),\n audit: i18n('refresh.audit')\n }\n },\n Reload: {\n key: AXPSystemActionType.Reload,\n title: i18n('reload.title'),\n icon: 'fa-light fa-arrows-rotate',\n color: 'default',\n descriptions: {\n title: i18n('reload.title'),\n tooltip: i18n('reload.description'),\n permission: i18n('reload.permission'),\n audit: i18n('reload.audit')\n }\n },\n Search: {\n key: AXPSystemActionType.Search,\n title: i18n('search.title'),\n icon: 'fa-light fa-magnifying-glass',\n color: 'default',\n descriptions: {\n title: i18n('search.title'),\n tooltip: i18n('search.description'),\n permission: i18n('search.permission'),\n audit: i18n('search.audit')\n }\n },\n Filter: {\n key: AXPSystemActionType.Filter,\n title: i18n('filter.title'),\n icon: 'fa-light fa-filter',\n color: 'default',\n descriptions: {\n title: i18n('filter.title'),\n tooltip: i18n('filter.description'),\n permission: i18n('filter.permission'),\n audit: i18n('filter.audit')\n }\n },\n Sort: {\n key: AXPSystemActionType.Sort,\n title: i18n('sort.title'),\n icon: 'fa-light fa-arrow-down-up-across-line',\n color: 'default',\n descriptions: {\n title: i18n('sort.title'),\n tooltip: i18n('sort.description'),\n permission: i18n('sort.permission'),\n audit: i18n('sort.audit')\n }\n },\n Start: {\n key: AXPSystemActionType.Start,\n title: i18n('start.title'),\n icon: 'fa-light fa-play',\n color: 'success',\n descriptions: {\n title: i18n('start.title'),\n tooltip: i18n('start.description'),\n permission: i18n('start.permission'),\n audit: i18n('start.audit')\n }\n },\n Stop: {\n key: AXPSystemActionType.Stop,\n title: i18n('stop.title'),\n icon: 'fa-light fa-stop',\n color: 'danger',\n critical: true,\n descriptions: {\n title: i18n('stop.title'),\n tooltip: i18n('stop.description'),\n permission: i18n('stop.permission'),\n audit: i18n('stop.audit')\n }\n },\n Pause: {\n key: AXPSystemActionType.Pause,\n title: i18n('pause.title'),\n icon: 'fa-light fa-pause',\n color: 'warning',\n descriptions: {\n title: i18n('pause.title'),\n tooltip: i18n('pause.description'),\n permission: i18n('pause.permission'),\n audit: i18n('pause.audit')\n }\n },\n Cancel: {\n key: AXPSystemActionType.Cancel,\n title: i18n('cancel.title'),\n icon: 'fa-light fa-xmark',\n critical: true,\n descriptions: {\n title: i18n('cancel.title'),\n tooltip: i18n('cancel.description'),\n permission: i18n('cancel.permission'),\n audit: i18n('cancel.audit')\n }\n },\n Close: {\n key: AXPSystemActionType.Close,\n title: i18n('close.title'),\n icon: 'fa-light fa-xmark',\n color: 'default',\n descriptions: {\n title: i18n('close.title'),\n tooltip: i18n('close.description'),\n permission: i18n('close.permission'),\n audit: i18n('close.audit')\n }\n },\n Complete: {\n key: AXPSystemActionType.Complete,\n title: i18n('complete.title'),\n icon: 'fa-light fa-check',\n color: 'success',\n descriptions: {\n title: i18n('complete.title'),\n tooltip: i18n('complete.description'),\n permission: i18n('complete.permission'),\n audit: i18n('complete.audit')\n }\n },\n Save: {\n key: AXPSystemActionType.Save,\n title: i18n('save.title'),\n icon: 'fa-light fa-floppy-disk',\n color: 'primary',\n descriptions: {\n title: i18n('save.title'),\n tooltip: i18n('save.description'),\n permission: i18n('save.permission'),\n audit: i18n('save.audit')\n }\n },\n SaveAs: {\n key: AXPSystemActionType.SaveAs,\n title: i18n('save-as.title'),\n icon: 'fa-light fa-floppy-disk',\n color: 'default',\n descriptions: {\n title: i18n('save-as.title'),\n tooltip: i18n('save-as.description'),\n permission: i18n('save-as.permission'),\n audit: i18n('save-as.audit')\n }\n },\n Sync: {\n key: AXPSystemActionType.Sync,\n title: i18n('sync.title'),\n icon: 'fa-light fa-arrows-rotate',\n color: 'default',\n descriptions: {\n title: i18n('sync.title'),\n tooltip: i18n('sync.description'),\n permission: i18n('sync.permission'),\n audit: i18n('sync.audit')\n }\n },\n Reset: {\n key: AXPSystemActionType.Reset,\n title: i18n('reset.title'),\n icon: 'fa-light fa-arrow-rotate-left',\n color: 'warning',\n critical: true,\n descriptions: {\n title: i18n('reset.title'),\n tooltip: i18n('reset.description'),\n permission: i18n('reset.permission'),\n audit: i18n('reset.audit')\n }\n },\n Clear: {\n key: AXPSystemActionType.Clear,\n title: i18n('clear.title'),\n icon: 'fa-light fa-eraser',\n color: 'default',\n descriptions: {\n title: i18n('clear.title'),\n tooltip: i18n('clear.description'),\n permission: i18n('clear.permission'),\n audit: i18n('clear.audit')\n }\n },\n Distribution: {\n key: AXPSystemActionType.Distribution,\n title: i18n('distribution.title'),\n icon: 'fa-light fa-share-nodes',\n color: 'default',\n descriptions: {\n title: i18n('distribution.title'),\n tooltip: i18n('distribution.description'),\n permission: i18n('distribution.permission'),\n audit: i18n('distribution.audit')\n }\n },\n\n} as const satisfies Record<string, AXPSystemAction>);\n\n\n\nexport function getSystemActions(type: AXPSystemActionType): AXPSystemAction {\n return Object.values(AXPSystemActions).find(action => action.key === type) as AXPSystemAction;\n}\n\n/**\n * Resolves the visual appearance (color and icon) for entity actions\n * using the system actions from the core module.\n */\nexport function resolveActionLook(actionType: string): { color: AXStyleColorType; icon: string } {\n // Try to get system action first\n const systemActionType = actionType as AXPSystemActionType;\n if (systemActionType) {\n const systemAction = getSystemActions(systemActionType);\n if (systemAction) {\n return {\n color: (systemAction.color || 'default') as AXStyleColorType,\n icon: systemAction.icon || ''\n };\n }\n }\n\n // Fallback for unknown actions\n return {\n color: 'default' as AXStyleColorType,\n icon: ''\n };\n}\n\n/**\n * Resolves the title, description, icon and color for button actions\n * using the system actions from the core module.\n * @param actionType \n * @returns \n */\nexport function getActionButton(actionType: string): { name: string; title: string; description: string, icon: string, color: string } {\n const systemActionType = actionType as AXPSystemActionType;\n if (systemActionType) {\n const systemAction = getSystemActions(systemActionType);\n if (systemAction) {\n return {\n name: actionType,\n icon: systemAction.icon || '',\n color: systemAction.color || 'default',\n title: systemAction.title,\n description: systemAction.descriptions.title\n };\n }\n }\n\n // Fallback for unknown actions\n return {\n name: actionType,\n title: actionType,\n description: `Perform ${actionType} action`,\n icon: '',\n color: 'default'\n };\n}\n","import { AXMultiLanguageString } from \"@acorex/core/translation\";\n\nexport type AXPPartialNested<T> = {\n [K in keyof T]?: T[K] extends object ? AXPPartialNested<T[K]> : T[K];\n};\n\nexport function getNestedKeys(obj: any, prefix: string = ''): string[] {\n let keys: string[] = [];\n for (const key in obj) {\n if (typeof obj[key] === 'object' && obj[key] !== null && !Array.isArray(obj[key])) {\n keys = [...keys, ...getNestedKeys(obj[key], prefix + key + '.')];\n } else {\n keys.push(prefix + key);\n }\n }\n return keys;\n}\n\nexport type AXPExpression = string;\n\n/**\n * Plain or rich text that may be localized: a single string or a map of locale code to string.\n * Use when multi-language editing stores `Record<locale, string>` instead of one string.\n *\n * @example Single value (one locale or shared text)\n * `\"<p>Pick one</p>\"`\n *\n * @example Per-locale map (e.g. after multi-language editor save)\n * `{ \"en-US\": \"<p>Pick one</p>\", \"fa-IR\": \"<p>یکی را انتخاب کنید</p>\" }`\n */\nexport type AXPMultiLanguageString = AXMultiLanguageString;\n\nexport type AXPMetaData = Record<string, any>;\n\nexport type AXPOptionsData<T extends Record<string, unknown> = Record<string, any>> = T;\n\nexport interface AXPValueUnit {\n name: string;\n title: string;\n ratio: number;\n order: number;\n}\n\nexport interface AXPValueUnits {\n name: string;\n title: string;\n items: AXPValueUnit[];\n default: string;\n}\n\nexport interface AXPEntityReference {\n id: string;\n type: string;\n title?: string;\n metadata?: AXPMetaData;\n}\n\nexport interface AXPUserReference {\n id: string;\n type?: 'user';\n fullName?: string;\n username?: string;\n}\n\nexport interface AXPApplicationUserReference {\n id: string;\n name: string;\n title: string;\n}\n\nexport type AXPContentType = 'text' | 'image' | 'file' | 'video' | 'link';\n\nexport interface AXPContent {\n content: string;\n contentType: AXPContentType;\n}\n\nexport type AXPMaybePromise<T = unknown> = T | Promise<T>;\n","//#region ---- Imports ----\n\nimport { AXDataSource, AXDataSourceFilterOption, AXDataSourceSortOption } from '@acorex/cdk/common';\n\nimport type { AXPMultiLanguageString } from './core.types';\n\n//#endregion\n\n//#region ---- Data Source Types ----\n\nexport type AXPDataSource = string | AXDataSource | any[];\n\nexport type AXPDataType = 'string' | 'number' | 'boolean' | 'date' | 'object' | 'array' | 'blob';\n\n//#endregion\n\n//#region ---- Query Types ----\n\nexport interface AXPPagedListResult<T = any> {\n items: T[];\n total: number;\n}\n\nexport interface AXPQueryRequest {\n skip: number;\n take: number;\n sort?: AXDataSourceSortOption[];\n filter?: AXDataSourceFilterOption;\n params?: {\n [key: string]: string;\n };\n}\n\n//#endregion\n\n//#region ---- Category Entity Types ----\n\n/**\n * Category Entity - Base interface for hierarchical category structures\n * \n * This interface provides a standardized data model for category entities across the platform.\n * All category entities (e.g., ReportCategory, ActivityCategory, WorkflowCategory) extend this interface\n * to ensure consistency in data structure and field names.\n * \n * @template TKey - The type of the identifier key (default: string)\n * \n * @example\n * ```typescript\n * const category: AXPCategoryEntity = {\n * id: 'cat-001',\n * title: 'Electronics',\n * description: 'Electronic products',\n * parentId: undefined, // Root category\n * childrenCount: 2, // Has 2 direct child categories\n * itemsCount: 5, // Has 5 items directly in this category\n * totalChildrenCount: 6, // Total of 6 nested categories (including grandchildren)\n * totalItemsCount: 23 // Total of 23 items in entire category tree\n * };\n * ```\n */\nexport interface AXPCategoryEntity<TKey = string> {\n /** Unique identifier for the category */\n id: TKey;\n\n /** Display name of the category (required) */\n title: AXPMultiLanguageString;\n\n /** Optional description of the category */\n description?: AXPMultiLanguageString;\n\n /** Parent category ID (undefined for root categories) */\n parentId?: TKey;\n\n /**\n * Count of direct child categories only (not recursive)\n * \n * Used by UI components to determine if a category has children and should show an expand icon.\n * This enables efficient lazy loading - components can check this property without querying the API.\n * \n * @example\n * - Category with 2 direct children: `childrenCount: 2`\n * - Leaf category (no children): `childrenCount: 0`\n * \n * @remarks\n * - Always set to `0` for leaf categories\n * - Does not include grandchildren or nested descendants\n * - Automatically maintained by middleware for category entities\n */\n childrenCount: number;\n\n /**\n * Count of items directly assigned to this category (not recursive)\n * \n * Represents the number of items (e.g., reports, activities, workflows) that are directly\n * assigned to this category. Does not include items from child categories.\n * \n * Useful for:\n * - Displaying item counts per category in UI (e.g., \"5 reports\" badge)\n * - Optimizing queries (skip API call if itemsCount === 0)\n * - Showing category statistics\n * \n * @example\n * - Category with 5 reports directly assigned: `itemsCount: 5`\n * - Category with no direct items: `itemsCount: 0` or `undefined`\n * \n * @remarks\n * - Does not include items from child categories\n * - Can be calculated dynamically or stored\n * - Optional - may be undefined if not needed\n */\n itemsCount?: number;\n\n /**\n * Recursive count of all nested child categories (includes all descendants)\n * \n * Represents the total number of categories in the entire subtree starting from this category.\n * Includes children, grandchildren, and all nested descendants.\n * \n * Useful for:\n * - Analytics and summary displays\n * - Showing complete category tree scope\n * - Performance metrics\n * \n * @example\n * Root category with:\n * - 2 direct children\n * - Each child has 2 children (4 grandchildren)\n * Result: `totalChildrenCount: 6` (2 + 4)\n * \n * @remarks\n * - Optional - typically used for analytics\n * - Includes all nested levels (recursive)\n * - Can be expensive to calculate for large trees\n */\n totalChildrenCount?: number;\n\n /**\n * Recursive count of all items in this category and all descendants\n * \n * Represents the total number of items (e.g., reports, activities, workflows) in the entire\n * category tree, including items from this category and all nested child categories.\n * \n * Useful for:\n * - Analytics and summary displays\n * - Showing complete scope of a category branch\n * - Dashboard statistics\n * \n * @example\n * Category with:\n * - 5 items directly assigned\n * - 1 child category with 3 items\n * Result: `totalItemsCount: 8` (5 + 3)\n * \n * @remarks\n * - Optional - typically used for analytics\n * - Includes items from all nested categories (recursive)\n * - Can be expensive to calculate for large trees\n */\n totalItemsCount?: number;\n}\n\nexport interface AXPCategoryEntityWithItems<T> extends AXPCategoryEntity {\n items: T[];\n children?: AXPCategoryEntityWithItems<T>[];\n}\n\n//#endregion\n\n//#region ---- Categorized Entity Types ----\n\n/**\n * Denormalized category row on entities and DTOs (id + localized display title).\n * Use for `categories` arrays expanded from {@link AXPCategoryEntity} assignments.\n */\nexport interface AXPCategoryListItem<TKey extends string = string> {\n id: TKey;\n title: AXPMultiLanguageString;\n}\n\nexport interface AXPCategorizedEntity {\n categoryIds: string[];\n}\n\nexport interface AXPCategorizedEntityDto {\n categoryIds: string[];\n categories: AXPCategoryListItem[];\n}\n\n//#endregion\n\n//#region ---- Entity Operation Types ----\n\nexport type AXPEntityOp = 'initial' | 'create' | 'update' | 'delete' | 'getOne' | 'getAll' | 'query';\n\n//#endregion\n","import { Type } from '@angular/core';\nimport { NavigationExtras } from '@angular/router';\nimport { AXPSystemActionType, getSystemActions } from './actions.types';\nimport { AXPMetaData, AXPMultiLanguageString } from './core.types';\n\nexport type AXPActionMenuItem = {\n name?: string;\n title: AXPMultiLanguageString;\n icon?: string;\n iconOnly?: boolean;\n color?: string;\n break?: boolean;\n items?: AXPActionMenuItem[];\n command?: AXPExecuteCommand;\n disabled?: boolean | string;\n visible?: boolean | string;\n policy?: string;\n};\n\n\n\nexport type AXPBackButton = {\n title: AXPMultiLanguageString;\n};\n\nexport type AXPBreadcrumbItem = {\n name?: string;\n title: AXPMultiLanguageString;\n icon?: string;\n command?: AXPExecuteCommand;\n};\n\nexport type AXPBadge = {\n title: string;\n description?: string;\n color?: 'primary' | 'success' | 'warning' | 'danger';\n};\n\nexport type AXPPageStatus = {\n definitionKey: string;\n value: string;\n dataPath?: string;\n readonly?: boolean;\n};\n\nexport interface AXPCommandMessage {\n type?: 'info' | 'success' | 'warning' | 'error';\n code?: string;\n text: AXPMultiLanguageString;\n details?: unknown;\n}\n\nexport type AXPExecuteCommand = {\n name: string;\n options?: AXPMetaData;\n metadata?: AXPMetaData;\n};\n\nexport interface AXPExecuteCommandResult<T = any> {\n success: boolean;\n data?: T;\n message?: AXPCommandMessage;\n metadata?: AXPMetaData;\n}\n\nexport interface AXPQueryFetchResult<T = any> {\n success: boolean;\n data?: {\n items?: T[];\n total?: number;\n };\n message?: {\n code?: string;\n text?: AXPMultiLanguageString;\n details?: any;\n };\n}\n\nexport type AXPNavigateActionOptions = {\n router: {\n path: string;\n extras?: NavigationExtras & { target?: string };\n };\n modal: {\n component: Type<any>;\n title: AXPMultiLanguageString;\n options?: any;\n };\n};\n\nexport interface AXPNavigateActionCommand<T extends keyof AXPNavigateActionOptions> {\n type: T;\n options: AXPNavigateActionOptions[T];\n}\n\nexport function applySystemActionDefault(action: AXPActionMenuItem, type: AXPSystemActionType): AXPActionMenuItem {\n const systemAction = getSystemActions(type);\n return {\n name: systemAction.key,\n title: systemAction.title,\n icon: systemAction.icon,\n color: systemAction.color,\n };\n}\n","import { Type } from '@angular/core';\n\nexport interface AXPLogoConfig { }\n\nexport class AXPImageUrlLogoConfig implements AXPLogoConfig {\n constructor(public url: string, public width?: number, public height?: number) { }\n}\nexport class AXPComponentLogoConfig implements AXPLogoConfig {\n height?: number | undefined;\n width?: number | undefined;\n constructor(public component: Type<any>) { }\n}\n\nexport class AXPIconLogoConfig implements AXPLogoConfig {\n constructor(public icon: string, public color?: string) { }\n}\n\n\n\n","export type AXPPlatformScopeKey = 'P' | 'T' | 'U';\nexport enum AXPPlatformScope {\n Platform = 'P',\n Tenant = 'T',\n User = 'U'\n};\n\nexport function resolvePlatformScopeKey(name: string): AXPPlatformScopeKey {\n const scopeMap: Record<string, AXPPlatformScopeKey> = {\n platform: AXPPlatformScope.Platform,\n tenant: AXPPlatformScope.Tenant,\n user: AXPPlatformScope.User,\n };\n return scopeMap[name.toLowerCase()] ?? AXPPlatformScope.User;\n}\n\nexport function resolvePlatformScopeName(scope: AXPPlatformScopeKey): string {\n const scopeMap: Record<AXPPlatformScopeKey, string> = {\n P: 'platform',\n T: 'tenant',\n U: 'user',\n };\n return scopeMap[scope] ?? 'user';\n}","\nexport interface AXPExportOptions {\n fileNameTemplate?: string; // مثال: \"Report_{date}_{user}\"\n\n pdf?: AXPExportPdfOptions;\n excel?: AXPExportExcelOptions;\n csv?: AXPExportCsvOptions;\n print?: AXPExportPrintOptions;\n}\n\n\nexport interface AXPExportPdfOptions {\n enabled: boolean;\n\n pageSize?: 'A4' | 'A3' | 'Letter' | 'Legal';\n orientation?: 'portrait' | 'landscape';\n\n margin?: number | {\n top: number;\n bottom: number;\n left: number;\n right: number;\n };\n\n font?: string;\n fontSize?: number;\n\n headerEnabled?: boolean;\n footerEnabled?: boolean;\n showPageNumbers?: boolean;\n\n watermarkText?: string;\n watermarkOpacity?: number;\n\n compression?: boolean;\n embedImages?: boolean;\n}\n\n\nexport interface AXPExportExcelOptions {\n enabled: boolean;\n\n sheetName?: string;\n includeFilters?: boolean;\n freezeHeader?: boolean;\n autoFitColumns?: boolean;\n\n style?: {\n headerColor?: string;\n font?: string;\n fontSize?: number;\n numberFormat?: 'auto' | 'currency' | 'percent' | 'decimal';\n };\n\n summaryRowEnabled?: boolean;\n exportHiddenColumns?: boolean;\n}\n\n\nexport interface AXPExportCsvOptions {\n enabled: boolean;\n\n delimiter?: ',' | ';' | '\\t';\n includeHeaders?: boolean;\n quoteValues?: boolean;\n encoding?: 'utf-8' | 'utf-16' | 'iso-8859-1';\n}\n\n\nexport interface AXPExportPrintOptions {\n enabled: boolean;\n\n includeHeader?: boolean;\n includeFooter?: boolean;\n showPageBreaks?: boolean;\n customCssUrl?: string;\n}\n\n\nexport enum AXPExportTemplateToken {\n Date = '{date}',\n Time = '{time}',\n User = '{user}',\n ReportTitle = '{title}',\n UUID = '{uuid}',\n}\n","import { AXCalendarService } from '@acorex/core/date-time';\nimport { inject, Pipe, PipeTransform, signal } from '@angular/core';\nimport { interval, Observable } from 'rxjs';\nimport { map, startWith } from 'rxjs/operators';\n\n@Pipe({\n name: 'countdown',\n pure: false,\n standalone: true,\n})\nexport class AXPCountdownPipe implements PipeTransform {\n private calendarService = inject(AXCalendarService);\n\n private countdownSignal = signal(this.setupTimer());\n\n private targetDate: number = 0;\n private prevValue = 0;\n\n transform(value: number): Observable<string> {\n if (this.prevValue != value) {\n this.prevValue = value;\n const expireTime = this.calendarService.calendar.add(new Date(), 'second', value).date;\n this.updateTargetDate(expireTime.toISOString());\n }\n return this.countdownSignal();\n }\n\n private setupTimer() {\n return interval(1000).pipe(\n startWith(0),\n map(() => {\n const diff = this.targetDate - new Date().getTime();\n if (diff < 0) {\n return \"Time's up!\";\n }\n\n const times = [86400, 3600, 60, 1].map((seconds) => Math.floor((diff / 1000 / seconds) % (seconds === 1 ? 60 : 24)));\n const labels = ['d', 'h', 'm', 's'];\n return times\n .map((t, i) => (t > 0 || i === 3 ? `${t}${labels[i]}` : ''))\n .join(' ')\n .trim();\n })\n );\n }\n\n private updateTargetDate(value: string) {\n this.targetDate = new Date(value).getTime();\n }\n}\n","import {\n AXDataSourceCallbackResult,\n AXDataSourceFilterOption,\n AXDataSourceLoadCallback,\n AXDataSourceQuery,\n AXDataSourceSortOption,\n} from '@acorex/cdk/common';\nimport { endsWith, get, gt, gte, includes, isEmpty, isEqual, isNil, lt, lte, orderBy, startsWith } from 'lodash-es';\n\nconst loggingEnabled = false; // Set to true to enable logging, false to disable\n\nfunction applyCondition(item: any, condition: AXDataSourceFilterOption) {\n const rawValue = condition.field ? get(item, condition.field) : null;\n const itemValue = typeof rawValue === 'string' ? rawValue.toLowerCase() : rawValue;\n const conditionValue = typeof condition.value === 'string' ? condition.value.toLowerCase() : condition.value;\n\n // Conditional Logging for debugging\n if (loggingEnabled) {\n console.log('Condition:', condition);\n console.log('Item Value:', itemValue);\n console.log('Condition Value:', conditionValue);\n }\n\n let result: boolean;\n const valueToCompare = isNil(condition.field) || condition.field === '' ? conditionValue : itemValue;\n const conditionType = condition?.operator?.type;\n if (!conditionType) {\n return true;\n }\n\n const op = String(conditionType);\n\n switch (op) {\n case 'equal':\n case 'eq':\n result = isEqual(valueToCompare, conditionValue);\n if (loggingEnabled) {\n console.log('Equal check result:', result);\n }\n break;\n case 'notEqual':\n case 'ne':\n case 'neq':\n result = !isEqual(valueToCompare, conditionValue);\n if (loggingEnabled) {\n console.log('Not equal check result:', result);\n }\n break;\n case 'greaterThan':\n case 'gt':\n result = gt(valueToCompare, conditionValue);\n if (loggingEnabled) {\n console.log('Greater than check result:', result);\n }\n break;\n case 'lessThan':\n case 'lt':\n result = lt(valueToCompare, conditionValue);\n if (loggingEnabled) {\n console.log('Less than check result:', result);\n }\n break;\n case 'greaterThanOrEqual':\n case 'gte':\n result = gte(valueToCompare, conditionValue);\n if (loggingEnabled) {\n console.log('Greater than or equal check result:', result);\n }\n break;\n case 'lessThanOrEqual':\n case 'lte':\n result = lte(valueToCompare, conditionValue);\n if (loggingEnabled) {\n console.log('Less than or equal check result:', result);\n }\n break;\n case 'contains':\n if (typeof valueToCompare === 'string') {\n result = includes(valueToCompare, conditionValue);\n } else if (Array.isArray(valueToCompare)) {\n result = includes(\n valueToCompare.map((val) => val.toString().toLowerCase()),\n conditionValue,\n );\n } else {\n result = false;\n }\n if (loggingEnabled) {\n console.log('Contains check result:', result);\n }\n break;\n case 'in':\n if (Array.isArray(conditionValue)) {\n if (typeof valueToCompare === 'string') {\n result = conditionValue.some(val =>\n typeof val === 'string' ? val.toLowerCase() === valueToCompare : val === valueToCompare\n );\n } else if (Array.isArray(valueToCompare)) {\n result = valueToCompare.some(val =>\n conditionValue.some(condVal =>\n typeof val === 'string' && typeof condVal === 'string'\n ? val.toLowerCase() === condVal.toLowerCase()\n : val === condVal\n )\n );\n } else {\n result = conditionValue.includes(valueToCompare);\n }\n } else {\n result = false;\n }\n if (loggingEnabled) {\n console.log('In check result:', result);\n }\n break;\n case 'notContains':\n if (typeof valueToCompare === 'string') {\n result = !includes(valueToCompare, conditionValue);\n } else if (Array.isArray(valueToCompare)) {\n result = !includes(\n valueToCompare.map((val) => val.toString().toLowerCase()),\n conditionValue,\n );\n } else {\n result = false;\n }\n if (loggingEnabled) {\n console.log('Not contains check result:', result);\n }\n break;\n case 'startsWith':\n result = typeof valueToCompare === 'string' && startsWith(valueToCompare, conditionValue as string);\n if (loggingEnabled) {\n console.log('Starts with check result:', result);\n }\n break;\n case 'endsWith':\n result = typeof valueToCompare === 'string' && endsWith(valueToCompare, conditionValue as string);\n if (loggingEnabled) {\n console.log('Ends with check result:', result);\n }\n break;\n case 'isEmpty':\n result = isEmpty(valueToCompare);\n if (loggingEnabled) {\n console.log('Is empty check result:', result);\n }\n break;\n case 'isNull':\n result = isNil(valueToCompare);\n if (loggingEnabled) {\n console.log('Is null check result:', result);\n }\n break;\n case 'isNotEmpty':\n result = !isEmpty(valueToCompare);\n if (loggingEnabled) {\n console.log('Is not empty check result:', result);\n }\n break;\n case 'between':\n result = !isNil(valueToCompare) && valueToCompare >= (condition.value as { from: number; to: number }).from && valueToCompare <= (condition.value as { from: number; to: number }).to;\n if (loggingEnabled) {\n console.log('Between check result:', result);\n }\n break;\n default:\n result = true;\n if (loggingEnabled) {\n console.log('Default case, returning true');\n }\n }\n\n // Apply negative flag if present on operator (invert the result)\n const isNegative = !!condition?.operator?.negative;\n return isNegative ? !result : result;\n}\n\nexport function applyFilterArray(\n dataArray: any[],\n filters?: AXDataSourceFilterOption[],\n logic: 'and' | 'or' = 'and',\n): any[] {\n if (filters && filters.length) {\n return dataArray.filter((item) => {\n if (logic === 'and') {\n return filters.every((f) => {\n return f.filters ? applyFilterArray([item], f.filters, f.logic).length > 0 : applyCondition(item, f);\n });\n } else {\n // logic === 'or'\n return filters.some((f) => {\n return f.filters ? applyFilterArray([item], f.filters, f.logic).length > 0 : applyCondition(item, f);\n });\n }\n });\n } else {\n return dataArray;\n }\n}\n\nexport function applySortArray(dataArray: any, sorts: AXDataSourceSortOption[]) {\n if (sorts && sorts.length > 0) {\n const sortFields = sorts.map((s) => s.field);\n const sortOrders = sorts.map((s) => s.dir);\n return orderBy(dataArray, sortFields, sortOrders);\n } else return dataArray;\n}\n\nexport function applyPagination<T>(dataArray: T[], skip: number, take: number): T[] {\n return dataArray.slice(skip, skip + take);\n}\n\nexport async function applyQueryArray<T>(\n dataArray: T[],\n query: AXDataSourceQuery,\n): Promise<AXDataSourceCallbackResult<T>> {\n let result = [...dataArray];\n\n // Apply filtering\n if (query.filter) {\n result = applyFilterArray(result, [query.filter], query.filter.logic ?? 'and');\n }\n\n // Store total count before pagination\n const total = result.length;\n\n // Apply sorting\n if (query.sort && query.sort.length > 0) {\n result = applySortArray(result, query.sort);\n }\n\n // Apply pagination\n result = applyPagination(result, query.skip, query.take);\n\n return {\n items: result,\n total,\n };\n}\n","import { computed, Injectable, signal } from '@angular/core';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n//#region ---- Type Definitions ----\n\n/**\n * Screen Size Enum\n */\nexport enum AXPScreenSize {\n Small = 'small',\n Medium = 'medium',\n Large = 'large',\n}\n\n/**\n * Device Type Enum\n */\nexport enum AXPDeviceType {\n Mobile = 'mobile',\n Tablet = 'tablet',\n Desktop = 'desktop',\n}\n\n//#endregion\n\n//#region ---- Helper Functions ----\n\n/**\n * Get the initial screen size based on window width\n */\nconst 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/**\n * Determine device type based on viewport width\n */\nconst getDeviceType = (): AXPDeviceType => {\n const width = window.innerWidth;\n if (width <= 600) {\n return AXPDeviceType.Mobile;\n } else if (width <= 1024) {\n return AXPDeviceType.Tablet;\n }\n return AXPDeviceType.Desktop;\n};\n\n/**\n * Determine if the device supports touch\n */\nconst isTouchDevice = (): boolean => {\n return 'ontouchstart' in window || navigator.maxTouchPoints > 0;\n};\n\n//#endregion\n\n//#region ---- Device Service ----\n\n/**\n * Injectable service that provides reactive device and screen size information.\n * Monitors window resize events and updates signals accordingly.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class AXPDeviceService {\n //#region ---- State Signals ----\n\n /**\n * Current screen size (Small, Medium, Large)\n */\n readonly screenSize = signal<AXPScreenSize>(getScreenSize());\n\n /**\n * Current device type (Mobile, Tablet, Desktop)\n */\n readonly deviceType = signal<AXPDeviceType>(getDeviceType());\n\n /**\n * Whether the device supports touch input\n */\n readonly isTouchDevice = signal<boolean>(isTouchDevice());\n\n //#endregion\n\n //#region ---- Computed Signals ----\n\n /**\n * Whether the screen size is Small\n */\n readonly isSmall = computed(() => this.screenSize() === AXPScreenSize.Small);\n\n /**\n * Whether the screen size is Medium\n */\n readonly isMedium = computed(() => this.screenSize() === AXPScreenSize.Medium);\n\n /**\n * Whether the screen size is Large\n */\n readonly isLarge = computed(() => this.screenSize() === AXPScreenSize.Large);\n\n /**\n * Whether the device is Mobile\n */\n readonly isMobileDevice = computed(() => this.deviceType() === AXPDeviceType.Mobile);\n\n /**\n * Whether the device is Tablet\n */\n readonly isTabletDevice = computed(() => this.deviceType() === AXPDeviceType.Tablet);\n\n /**\n * Whether the device is Desktop\n */\n readonly isDesktopDevice = computed(() => this.deviceType() === AXPDeviceType.Desktop);\n\n /**\n * Whether the device supports touch (alias for isTouchDevice)\n */\n readonly isTouchScreen = computed(() => this.isTouchDevice());\n\n //#endregion\n\n //#region ---- Private Properties ----\n\n private _resizeListener: Subscription | null = null;\n\n //#endregion\n\n //#region ---- Constructor & Lifecycle ----\n\n constructor() {\n this._setupResizeListener();\n }\n\n //#endregion\n\n //#region ---- Private Methods ----\n\n /**\n * Update screen size and device type based on window width\n */\n private _updateScreenSize(): void {\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 // Determine device type based on width to keep it reactive to devtools emulation\n let newDeviceType: AXPDeviceType;\n if (width <= 600) {\n newDeviceType = AXPDeviceType.Mobile;\n } else if (width <= 1024) {\n newDeviceType = AXPDeviceType.Tablet;\n } else {\n newDeviceType = AXPDeviceType.Desktop;\n }\n\n if (newScreenSize !== this.screenSize() || newDeviceType !== this.deviceType()) {\n this.screenSize.set(newScreenSize);\n this.deviceType.set(newDeviceType);\n }\n }\n\n /**\n * Set up event listener for window resize\n */\n private _setupResizeListener(): void {\n this._resizeListener = fromEvent(window, 'resize')\n .pipe(debounceTime(250)) // 250ms debounce delay\n .subscribe(() => {\n this._updateScreenSize();\n });\n }\n\n /**\n * Remove event listener for window resize\n */\n private _removeResizeListener(): void {\n if (this._resizeListener) {\n this._resizeListener.unsubscribe();\n this._resizeListener = null;\n }\n }\n\n //#endregion\n\n //#region ---- Public Methods ----\n\n /**\n * Clean up resources when service is destroyed\n */\n destroy(): void {\n this._removeResizeListener();\n }\n\n //#endregion\n}\n\n//#endregion\n","import { Injectable } from '@angular/core';\n\n/**\n * Service for applying and resetting text highlighting within specified HTML elements.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class AXHighlightService {\n private querySelector: string | null;\n private searchValue: string | null;\n\n constructor() { }\n\n /**\n * Highlights all occurrences of a search value within the elements matching the provided query selector.\n *\n * @param querySelector - CSS selector to identify target elements.\n * @param searchValue - Text to search and highlight.\n */\n highlight(querySelector: string, searchValue: string): void {\n this.clear();\n if (!querySelector || !searchValue) {\n return;\n }\n this.querySelector = querySelector;\n this.searchValue = searchValue;\n const elements = document.querySelectorAll(querySelector);\n elements.forEach((element) => {\n this.applyHighlight(element as HTMLElement);\n });\n }\n\n /**\n * Resets all highlighted text within the elements matching the previously used query selector.\n */\n public clear(): void {\n const elements = document.querySelectorAll(`${this.querySelector} .ax-highlight-text`);\n elements.forEach((element) => {\n let combinedText = '';\n element.querySelectorAll('span').forEach((span) => {\n combinedText += span.textContent;\n });\n\n const mergedSpan = document.createElement('span');\n mergedSpan.textContent = combinedText;\n\n element?.parentNode?.replaceChild(mergedSpan, element);\n });\n }\n\n /**\n * Applies highlighting to a specific element by matching text against the search value.\n *\n * @param element - The HTML element to apply highlights to.\n */\n private applyHighlight(element: HTMLElement): void {\n const searchRegex = new RegExp(`(${this.searchValue})`, 'gi');\n this.recursivelyHighlight(element, searchRegex);\n }\n\n /**\n * Recursively applies highlighting to text nodes within an element.\n *\n * @param element - The current node being processed.\n * @param searchRegex - Regular expression for matching text to highlight.\n */\n private recursivelyHighlight(element: Node, searchRegex: RegExp): void {\n const childNodes = Array.from(element.childNodes);\n\n childNodes.forEach((node) => {\n if (node.nodeType === Node.TEXT_NODE) {\n const textContent = node.textContent || '';\n if (textContent.match(searchRegex)) {\n const highlightedHTML = this.createHighlightedHTML(textContent, searchRegex);\n const tempContainer = document.createElement('div');\n tempContainer.innerHTML = highlightedHTML;\n\n const fragment = document.createDocumentFragment();\n Array.from(tempContainer.childNodes).forEach((child) => fragment.appendChild(child));\n\n node.replaceWith(fragment);\n }\n } else if (node.nodeType === Node.ELEMENT_NODE) {\n this.recursivelyHighlight(node, searchRegex);\n }\n });\n }\n\n /**\n * Generates the HTML structure for highlighted text.\n *\n * @param textContent - The original text content to process.\n * @param searchRegex - Regular expression for matching text to highlight.\n * @returns A string of HTML with highlighted portions wrapped in span elements.\n */\n private createHighlightedHTML(textContent: string, searchRegex: RegExp): string {\n let parts: string[] = [];\n let match;\n let lastIndex = 0;\n let resultHTML = '<span class=\"ax-highlight-text\">';\n\n while ((match = searchRegex.exec(textContent)) !== null) {\n if (match.index > lastIndex) {\n resultHTML += `<span>${textContent.slice(lastIndex, match.index)}</span>`;\n }\n resultHTML += `<span class=\"ax-highlight\">${match[0]}</span>`;\n lastIndex = searchRegex.lastIndex;\n }\n\n if (lastIndex < textContent.length) {\n resultHTML += `<span>${textContent.slice(lastIndex)}</span>`;\n }\n\n resultHTML += '</span>';\n\n return resultHTML;\n }\n}\n","import { inject, Injector, InjectionToken, Provider, runInInjectionContext } from '@angular/core';\n\n/**\n * Creates a provider instance within an injection context.\n * Handles dynamic import, injector resolution, and provider instantiation.\n * \n * @param loader - Function that returns a promise resolving to the provider class\n * @returns Promise that resolves to the provider instance\n * \n * @example\n * ```typescript\n * useFactory: () => createProviderWithInjectionContext(() => \n * import('./settings.provider').then(m => m.AXMSettingProvider)\n * )\n * ```\n */\nexport async function createProviderWithInjectionContext<T>(\n loader: () => Promise<new () => T>\n): Promise<T> {\n const injector = inject(Injector);\n const ProviderClass = await loader();\n return runInInjectionContext(injector, () => new ProviderClass());\n}\n\n/**\n * Creates a provider configuration for lazy-loaded providers with injection context.\n * Simplifies provider registration in NgModule providers array.\n *\n * @param token - The injection token to provide\n * @param loader - Function that returns a promise resolving to the provider class\n * @param multi - Optional. Whether the provider is a multi-provider (array of values). Defaults to `true`. Pass `false` for a single provider.\n * @returns Provider configuration object\n *\n * @example\n * ```typescript\n * // Multi-provider (default)\n * provideLazyProvider(\n * AXP_DATASOURCE_DEFINITION_PROVIDER,\n * () => import('./datasource.provider').then(m => m.AXMDataSourceProvider)\n * )\n *\n * // Single provider\n * provideLazyProvider(\n * SOME_TOKEN,\n * () => import('./my.provider').then(m => m.MyProvider),\n * false\n * )\n * ```\n */\nexport function provideLazyProvider<TProvider>(\n token: InjectionToken<any>,\n loader: () => Promise<new () => TProvider>,\n multi: boolean = true\n): Provider {\n return {\n provide: token,\n useFactory: () => createProviderWithInjectionContext(loader),\n multi,\n };\n}\n\n","export function extractTextFromHtml(value: string) {\n const div = document.createElement('div');\n div.innerHTML = value;\n return div.textContent || div.innerText || '';\n}\n\n/**\n * True when the string likely contains HTML markup (e.g. `<p>`, `<ul>`), as opposed to plain text.\n * Used to choose innerHTML vs text interpolation for multilingual fields.\n */\nexport function containsHtmlMarkup(value: string | null | undefined): boolean {\n if (value == null) {\n return false;\n }\n const t = value.trim();\n if (!t) {\n return false;\n }\n return /<\\/?[a-z][\\s\\S]*?>/i.test(t);\n}\n\n/**\n * Generate kebab-case group name from title\n */\nexport function generateKebabCase(title: string): string {\n return title\n .toLowerCase()\n .trim()\n .replace(/[^a-z0-9\\s-]/g, '') // Remove special characters\n .replace(/\\s+/g, '-') // Replace spaces with hyphens\n .replace(/-+/g, '-') // Replace multiple hyphens with single\n .replace(/^-+|-+$/g, ''); // Remove leading/trailing hyphens\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.AXPAppStartUpService"],"mappings":"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"}
|