@acorex/platform 18.1.0 → 18.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/esm2022/layout/builder/lib/builder/builder.module.mjs +4 -3
  2. package/esm2022/layout/builder/lib/builder/index.mjs +2 -1
  3. package/esm2022/layout/builder/lib/builder/widget-renderer.component.directive.mjs +280 -0
  4. package/esm2022/layout/designer/lib/designer/components/board/board.component.mjs +3 -3
  5. package/esm2022/layout/designer/lib/designer/components/header-menu/header-menu.component.mjs +3 -3
  6. package/esm2022/layout/designer/lib/designer/designer.component.mjs +9 -5
  7. package/esm2022/layout/designer/lib/designer/shared/designer.service.mjs +21 -21
  8. package/esm2022/layout/designer/lib/designer/shared/designer.typs.mjs +6 -2
  9. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-single-view/overview/entity-single-overview.component.mjs +3 -3
  10. package/esm2022/widgets/lib/widgets/actions/button/button-widget-designer.component.mjs +3 -3
  11. package/esm2022/widgets/lib/widgets/actions/button/button-widget-view.component.mjs +3 -3
  12. package/esm2022/widgets/lib/widgets/advance/map/map-box-widget-view.component.mjs +3 -3
  13. package/esm2022/widgets/lib/widgets/editors/contact/contact-widget-edit.component.mjs +9 -9
  14. package/esm2022/widgets/lib/widgets/editors/contact/contact-widget-view.component.mjs +6 -6
  15. package/esm2022/widgets/lib/widgets/editors/rich-text/rich-text-widget-view.component.mjs +5 -3
  16. package/esm2022/widgets/lib/widgets/editors/select/select-box-widget-column.component.mjs +36 -6
  17. package/esm2022/widgets/lib/widgets/editors/selection-list/selection-list-widget-column.component.mjs +2 -1
  18. package/esm2022/widgets/lib/widgets/layout/block/block-widget-view.component.mjs +4 -4
  19. package/esm2022/widgets/lib/widgets/layout/form-field/form-field-widget-view.component.mjs +28 -16
  20. package/esm2022/widgets/lib/widgets/layout/grid/grid-widget-designer.component.mjs +37 -31
  21. package/esm2022/widgets/lib/widgets/layout/grid/grid-widget-view.component.mjs +27 -6
  22. package/esm2022/widgets/lib/widgets/layout/grid-item/grid-item-widget-designer.component.mjs +32 -26
  23. package/esm2022/widgets/lib/widgets/layout/grid-item/grid-item-widget-view.component.mjs +82 -8
  24. package/esm2022/widgets/lib/widgets/layout/grid-row/grid-row-widget-view.component.mjs +27 -6
  25. package/esm2022/widgets/lib/widgets/layout/page/page-widget-view.component.mjs +6 -4
  26. package/fesm2022/acorex-platform-layout-builder.mjs +276 -4
  27. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  28. package/fesm2022/acorex-platform-layout-designer.mjs +36 -28
  29. package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
  30. package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-CGhOE3jO.mjs → acorex-platform-themes-default-entity-master-single-view.component-B9lGgO_u.mjs} +3 -3
  31. package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-CGhOE3jO.mjs.map → acorex-platform-themes-default-entity-master-single-view.component-B9lGgO_u.mjs.map} +1 -1
  32. package/fesm2022/acorex-platform-themes-default.mjs +2 -2
  33. package/fesm2022/{acorex-platform-widgets-button-widget-designer.component-COvuxaTt.mjs → acorex-platform-widgets-button-widget-designer.component-Oxpdaz9P.mjs} +3 -3
  34. package/fesm2022/{acorex-platform-widgets-button-widget-designer.component-COvuxaTt.mjs.map → acorex-platform-widgets-button-widget-designer.component-Oxpdaz9P.mjs.map} +1 -1
  35. package/fesm2022/acorex-platform-widgets.mjs +277 -107
  36. package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
  37. package/layout/builder/lib/builder/builder.module.d.ts +5 -4
  38. package/layout/builder/lib/builder/index.d.ts +1 -0
  39. package/layout/builder/lib/builder/widget-renderer.component.directive.d.ts +42 -0
  40. package/layout/designer/lib/designer/designer.component.d.ts +1 -0
  41. package/layout/designer/lib/designer/shared/designer.service.d.ts +2 -1
  42. package/layout/designer/lib/designer/shared/designer.typs.d.ts +15 -0
  43. package/package.json +7 -7
  44. package/widgets/lib/widgets/actions/button/button-widget-designer.component.d.ts +1 -1
  45. package/widgets/lib/widgets/actions/button/button-widget-view.component.d.ts +1 -1
  46. package/widgets/lib/widgets/editors/select/select-box-widget-column.component.d.ts +5 -0
  47. package/widgets/lib/widgets/layout/form-field/form-field-widget-view.component.d.ts +2 -1
  48. package/widgets/lib/widgets/layout/grid/grid-widget-view.component.d.ts +3 -0
  49. package/widgets/lib/widgets/layout/grid-item/grid-item-widget-view.component.d.ts +11 -2
  50. package/widgets/lib/widgets/layout/grid-row/grid-row-widget-view.component.d.ts +3 -0
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-layout-builder.mjs","sources":["../../../../libs/platform/layout/builder/src/lib/builder/builder.service.ts","../../../../libs/platform/layout/builder/src/lib/builder/widget-registery.service.ts","../../../../libs/platform/layout/builder/src/lib/builder/widget.types.ts","../../../../libs/platform/layout/builder/src/lib/builder/widget-renderer.component.ts","../../../../libs/platform/layout/builder/src/lib/builder/widget-container.component.ts","../../../../libs/platform/layout/builder/src/lib/builder/widget-column-renderer.ts","../../../../libs/platform/layout/builder/src/lib/builder/builder.module.ts","../../../../libs/platform/layout/builder/src/lib/builder/widget-catalog.ts","../../../../libs/platform/layout/builder/src/lib/builder/widget-groups.ts","../../../../libs/platform/layout/builder/src/acorex-platform-layout-builder.ts"],"sourcesContent":["import { Injectable, signal } from '@angular/core';\nimport { clone, get, isEqual, set } from 'lodash-es';\nimport { Subject, Subscription, debounceTime } from 'rxjs';\nimport { AXPLayoutContextEvent } from './widget.types';\n\n\nexport type AXPLayoutElementAPI = { [name: string]: Subject<any> | Function }\n\nexport abstract class AXPLayoutElement {\n abstract get id(): string | null;\n\n api(): AXPLayoutElementAPI {\n return {}\n }\n}\n\n@Injectable()\nexport class AXPLayoutBuilderService {\n private readonly context$ = signal<any>({});\n private readonly variables$ = signal<any>({});\n private readonly functions$ = signal<{ [key: string]: Function }>({});\n\n public readonly onChanged: Subject<AXPLayoutContextEvent> = new Subject<AXPLayoutContextEvent>();\n private debouncers: { [key: string]: Subject<{ path: string; value: any, init: boolean }> } = {};\n private debouncerSubscriptions: { [key: string]: Subscription } = {};\n\n private widgets = new Map<string, AXPLayoutElement>();;\n\n get context() {\n return this.context$();\n }\n\n get variables() {\n return this.variables$();\n }\n\n get functions(): { [key: string]: Function } {\n return this.functions$();\n }\n\n initial(value: any) {\n this.context$.set(value);\n }\n\n\n setVariables(keysValues: any): void;\n setVariables(key: string, value: any): void;\n setVariables(...args: any[]): void {\n if (args.length == 0)\n return;\n else if (args.length == 1)\n this.variables$.set(args[0]);\n else if (args.length == 2) {\n this.variables$.update(v => set(v, args[0], args[1]));\n }\n }\n\n\n setFunctions(keysValues: any): void;\n setFunctions(key: string, value: any): void;\n setFunctions(...args: any[]): void {\n if (args.length == 0)\n return;\n else if (args.length == 1)\n this.functions$.set(args[0]);\n else if (args.length == 2) {\n this.functions$.update(v => set(v, args[0], args[1]));\n }\n }\n\n\n setValue(path: string, value: any, init: boolean = false) {\n const oldValue = get(this.context$(), path);\n if (isEqual(oldValue, value))\n return;\n if (!this.debouncers[path]) {\n // Create a new Subject for debouncing if it doesn't exist\n this.debouncers[path] = new Subject<{ path: string; value: any, init: boolean }>();\n\n // Subscribe to the subject with debounceTime\n this.debouncerSubscriptions[path] =\n this.debouncers[path]\n .pipe(debounceTime(150))\n .subscribe(({ value, init }) => {\n // Only emit onChanged event after debounce time\n this.onChanged.next({\n oldValue: oldValue,\n newValue: value,\n data: this.context,\n path,\n init\n });\n });\n }\n\n // Update context immediately\n this.context$.update((ctx) => set(clone(ctx), path, value));\n // Emit value through the debouncer subject\n this.debouncers[path].next({ path, value, init });\n }\n\n getValue(path: string) {\n return get(this.context, path);\n }\n\n registerWidget(id: string, widget: AXPLayoutElement) {\n this.widgets.set(id, widget);\n }\n\n getWidget(id: string): AXPLayoutElement | undefined {\n return this.widgets.get(id);\n }\n\n private unsubscribeDebouncers() {\n Object.keys(this.debouncerSubscriptions).forEach((path) => {\n this.debouncerSubscriptions[path].unsubscribe();\n delete this.debouncerSubscriptions[path]; // Clean up the reference\n delete this.debouncers[path]; // Also clean up the debouncer subject\n });\n }\n\n ngOnDestroy(): void {\n this.unsubscribeDebouncers();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { merge } from 'lodash-es';\nimport { AXPWidgetConfig } from './widget.types';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXPWidgetRegistryService {\n private types: Map<string, AXPWidgetConfig> = new Map();\n\n register(widget: AXPWidgetConfig) {\n this.types.set(widget.name, widget);\n }\n\n extend(parentName: string, widget: AXPWidgetConfig) {\n const parentWidget = this.resolve(parentName);\n const newWidget = merge({}, parentWidget, widget);\n newWidget.name = widget.name;\n this.register(newWidget);\n }\n\n resolve(name: string): AXPWidgetConfig | undefined {\n const widget = this.types.get(name);\n if (!widget) {\n throw new Error(`Widget with name \"${name}\" does not exist.`);\n }\n return widget;\n }\n\n public all(): AXPWidgetConfig[] {\n return Array.from(this.types.values());\n }\n}\n","import { AXDataSource, AXValueChangedEvent } from '@acorex/components/common';\nimport { AXPMetaData, AXPOptionsData, AXPPartialNested, AXPValidationRules } from '@acorex/platform/core';\nimport { ElementRef, Injectable, InjectionToken, afterNextRender, computed, inject, signal } from '@angular/core';\nimport { cloneDeep, get, isUndefined, merge } from 'lodash-es';\nimport { Subject } from 'rxjs';\nimport { AXPLayoutBuilderService, AXPLayoutElement } from './builder.service';\n\nexport type AXPWidgetTrigger = { event: string; action: string; disabled?: boolean };\nexport type AXPWidgetTriggers = AXPWidgetTrigger[];\n\nexport interface AXPWidgetDataSource {\n name: string;\n columns: {\n name: string;\n title: string;\n // dataType: string;\n // nullable?: boolean;\n // interface?: Partial<AXEntityPropertyWidget>;\n }[];\n source: AXDataSource;\n}\n\nexport interface AXPWidgetPropertyGroup {\n name: string;\n title: string;\n order: number;\n}\n\nexport interface AXPWidgetGroup {\n name: string;\n title: string;\n order: number;\n}\n\nexport interface AXPWidgetProperty {\n name: string;\n title: string;\n description?: string;\n group: AXPWidgetPropertyGroup;\n schema: {\n dataType: 'string' | 'number' | 'object' | 'boolean' | 'array';\n nullable?: boolean;\n defaultValue?: any | string | ((context: any | null) => any);\n interface: Required<Pick<AXPWidgetNode, 'path'>> & Omit<AXPWidgetNode, 'path'>;\n };\n options?: AXPOptionsData;\n validations?: AXPValidationRules;\n visible: boolean;\n}\n\nexport function cloneProperty(\n property: AXPWidgetProperty,\n values: AXPPartialNested<AXPWidgetProperty>\n): AXPWidgetProperty {\n return merge(cloneDeep(property), values);\n}\n\nexport interface AXPWidgetNode {\n type: AXPWidgetTypesMap[keyof AXPWidgetTypesMap];\n path?: string;\n name?: string;\n defaultValue?: any;\n formula?: string;\n children?: AXPWidgetNode[];\n options?: AXPOptionsData;\n triggers?: AXPWidgetTriggers;\n}\n\nexport interface AXPWidgetTypesMap {\n checkbox: 'checkbox-editor';\n color: 'color-editor';\n contact: 'contact-editor';\n dateTime: 'date-time-editor';\n email: 'email-editor';\n largeText: 'large-text-editor';\n link: 'link-editor';\n number: 'number-editor';\n password: 'password-editor';\n phone: 'phone-editor';\n richText: 'rich-text-editor';\n select: 'select-editor';\n selectionList: 'selection-list-editor';\n text: 'text-editor';\n toggle: 'toggle-editor';\n blockLayout: 'block-layout';\n pageLayout: 'page-layout';\n repeaterLayout: 'repeater-layout';\n textBlockLayout: 'text-block-layout';\n file: 'file';\n map: 'map';\n gallery: 'gallery';\n signature: 'signature';\n buttonAction: 'button-action';\n document: 'document-layout';\n lookup: 'lookup-editor';\n formField: 'form-field';\n grid: 'grid-layout';\n gridRow: 'grid-row-layout';\n gridItem: 'grid-item-layout';\n qrcode: 'qrcode';\n}\n\nexport interface AXPWidgetNodeToken {\n config: AXPWidgetConfig;\n node: AXPWidgetNode;\n options?: AXPOptionsData;\n}\n\nexport interface AXPWidgetColumnNode {\n type: string;\n path: string;\n options?: AXPOptionsData;\n}\n\nexport interface AXPWidgetColumnNodeToken extends AXPWidgetColumnNode {\n config: AXPWidgetConfig;\n}\n\nexport const AXP_WIDGET_TOKEN = new InjectionToken<AXPWidgetNodeToken>('AXP_WIDGET_TOKEN');\nexport const AXP_WIDGET_COLUMN_TOKEN = new InjectionToken<AXPWidgetColumnNodeToken>('AXP_WIDGET_COLUMN_TOKEN');\n\nexport interface AXPWidgetComponentConfig {\n component: () => Promise<any>;\n properties?: AXPWidgetProperty[];\n}\n\nexport interface AXPWidgetConfigComponents {\n designer?: AXPWidgetComponentConfig;\n view?: AXPWidgetComponentConfig;\n edit?: AXPWidgetComponentConfig;\n print?: AXPWidgetComponentConfig;\n column?: AXPWidgetComponentConfig;\n filter?: AXPWidgetComponentConfig;\n}\n\nexport type AXPWidgetType = 'container' | 'editor' | 'action' | 'view';\n\nexport interface AXPWidgetConfig {\n name: AXPWidgetTypesMap[keyof AXPWidgetTypesMap];\n title: string;\n icon?: string;\n description?: string;\n group: AXPWidgetGroup;\n properties?: AXPWidgetProperty[];\n components: AXPWidgetConfigComponents;\n meta?: AXPMetaData;\n type: AXPWidgetType;\n visible?: boolean;\n}\n\nexport type AXPWidgetRenderMode = keyof AXPWidgetConfigComponents;\n\nexport interface AXPLayoutContextEvent {\n oldValue: any;\n newValue: any;\n path?: string | null;\n data: any;\n init: boolean;\n}\n\n@Injectable()\nexport abstract class AXPWidgetComponent<T = any | null | void> extends AXPLayoutElement {\n protected readonly token = inject(AXP_WIDGET_TOKEN);\n public readonly host = inject(ElementRef).nativeElement as HTMLDivElement;\n\n protected readonly config = this.token.config;\n\n protected readonly name = this.token.node.name;\n protected readonly path = this.token.node.path ?? (this.config.type == 'editor' ? this.name : null);\n protected readonly defaultValue = this.token.node.defaultValue;\n\n protected readonly _children = signal(this.token.node.children ?? []);\n protected children = this._children.asReadonly();\n\n protected _options = signal<any>(this.token.options ?? {});\n protected options = this._options.asReadonly();\n\n private readonly contextService = inject(AXPLayoutBuilderService);\n\n protected readonly rawValue = computed<T>(() =>\n this._fullPath ? get(this.contextService.context, this._fullPath) : null\n );\n\n public readonly onReady = new Subject<void>();\n\n private isRendered = false;\n\n private _id: string | null;\n public get id(): string | null {\n return this._id;\n }\n\n parent: AXPWidgetComponent | null | undefined;\n index: number | null | undefined;\n mode: AXPWidgetRenderMode;\n\n private _fullPath: string;\n\n ngOnInit() {\n this.initRender();\n }\n\n private nextRender = afterNextRender(() => {\n //\n if (!this.isRendered) {\n //this.detectFullPath();\n //\n this.onReady.next();\n //\n this.isRendered = true;\n }\n });\n\n private initRender() {\n if (this.config.type == 'editor') {\n this.detectFullPath();\n if (this.defaultValue != null) {\n this.setValue(this.defaultValue, true);\n }\n }\n }\n\n getValue<T>() {\n return this.rawValue();\n }\n\n setValue(value: T | null, init: boolean = false) {\n const oldValue = this.rawValue();\n value = isUndefined(value) ? null : value;\n if (this._fullPath) {\n this.contextService.setValue(this._fullPath, value, init);\n this.onValueChanged(oldValue, value);\n }\n }\n\n setOptions(values: any): void {\n this._options.set({ ...this.options(), ...values });\n }\n\n call(name: string, ...args: any[]): void {\n const fn = get(this, name) as Function;\n if (fn && typeof fn == 'function') {\n fn.bind(this)(...args);\n }\n }\n\n setChildren(children: AXPWidgetNode[]) {\n this._children.set([...children]);\n }\n\n onValueChanged(oldValue: T | null, newValue: T | null) {}\n\n private detectFullPath() {\n let sections = [];\n let ids = [];\n //\n let parent: AXPWidgetComponent | null | undefined = this;\n //\n while (parent) {\n const path = parent.path; //?? parent.name;\n const id = parent.name;\n //\n if (path) {\n sections.push(path);\n if (parent.index != null) {\n sections.push(`[${parent.index}]`);\n }\n }\n if (id) {\n ids.push(id);\n if (parent.index != null) {\n ids.push(`${parent.index}`);\n }\n }\n parent = parent.parent;\n }\n //\n this._fullPath = sections.reverse().join('.');\n this._id = this.name || this.parent ? ids.reverse().join('_') : null;\n if (this._id) {\n this.contextService.registerWidget(this._id, this);\n }\n }\n\n protected handleValueChanged(e: AXValueChangedEvent<T>) {\n if (e.isUserInteraction) {\n this.setValue(e.value!);\n }\n }\n}\n\n@Injectable()\nexport abstract class AXPContainerWidgetComponent<T> extends AXPWidgetComponent<T> {\n public readonly node = this.token.node;\n}\n\n@Injectable()\nexport abstract class AXPColumnWidgetComponent<T = any | null | void> {\n private readonly token = inject(AXP_WIDGET_COLUMN_TOKEN);\n\n protected readonly path = this.token.path;\n protected readonly options = this.token.options ?? {};\n protected readonly rawValue: any = null;\n}\n","import { AXUnsubscriber } from '@acorex/core/utils';\nimport { CdkPortalOutletAttachedRef, ComponentPortal } from '@angular/cdk/portal';\nimport { ChangeDetectionStrategy, Component, ComponentRef, Injector, Input, WritableSignal, inject, signal } from '@angular/core';\nimport { cloneDeep, get, merge, set, sum } from 'lodash-es';\nimport { Observable, filter } from 'rxjs';\nimport { AXPLayoutBuilderService } from './builder.service';\nimport { AXPWidgetRegistryService } from './widget-registery.service';\nimport { AXPWidgetComponent, AXPWidgetNode, AXPWidgetNodeToken, AXPWidgetRenderMode, AXP_WIDGET_TOKEN } from './widget.types';\n\n@Component({\n selector: 'axp-widget-renderer',\n template: `\n @if(mergedOptions().isVisible!=false) { @if(isLoading()){\n <ax-skeleton [animated]=\"true\" class=\"ax-w-full lg:ax-w-[50%] ax-h-8 ax-rounded\"></ax-skeleton>\n } @else {\n <ng-container *ngTemplateOutlet=\"tt\"></ng-container>\n } }\n <ng-template #tt>\n <ng-template [cdkPortalOutlet]=\"portal\" (attached)=\"handleAttached($event)\"></ng-template>\n </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXUnsubscriber,\n },\n ],\n})\nexport class AXPWidgetRendererComponent {\n private _node: AXPWidgetNode;\n @Input({ required: true })\n public get node(): AXPWidgetNode {\n return this._node;\n }\n public set node(v: AXPWidgetNode) {\n this._node = v;\n this.loadComponent();\n }\n\n private _mode: AXPWidgetRenderMode = 'edit';\n @Input()\n public get mode(): AXPWidgetRenderMode {\n return this._mode;\n }\n public set mode(v: AXPWidgetRenderMode) {\n this._mode = v;\n }\n\n @Input()\n parentNode: AXPWidgetComponent | null;\n\n @Input()\n index: number | null;\n\n protected mergedOptions: WritableSignal<any> = signal<any>({});\n\n private injector = inject(Injector);\n protected builderService = inject(AXPLayoutBuilderService);\n protected widgetRegistery = inject(AXPWidgetRegistryService);\n protected unsubscriber = inject(AXUnsubscriber);\n\n protected isLoading = signal(true);\n private instance!: AXPWidgetComponent;\n protected portal!: ComponentPortal<any>;\n private expressionCache: Map<string, () => Promise<any>> = new Map();\n private expressionEvaluators: Map<string, () => Promise<any>> = new Map();\n private scope: any = null;\n\n constructor() {\n this.builderService.onChanged.pipe(this.unsubscriber.takeUntilDestroy).subscribe(async (e) => {\n if ((await this.updateOptionsBasedOnContext()) > 0) {\n this.applyOptions();\n }\n if (this.checkFormulaForUpdate(this.node.formula, e.path)) {\n await this.updateValueBasedOnFormula();\n }\n });\n }\n\n private async loadComponent() {\n this.isLoading.set(true);\n const widget = this.widgetRegistery.resolve(this.node.type);\n //\n const props = widget?.components[this.mode]?.properties\n ?.filter((c) => c.schema.defaultValue)\n .map((c) => ({ [c.name]: c.schema.defaultValue }))\n .reduce((acc, curr) => {\n return { ...acc, ...curr };\n }, {});\n //\n this.mergedOptions.set(merge(props, this.node.options) || {});\n this.preprocessAndInitialOptions(cloneDeep(this.node.options));\n await this.updateOptionsBasedOnContext();\n const tokenValue = {\n node: this.node,\n options: this.mergedOptions(),\n config: widget,\n } as AXPWidgetNodeToken;\n const token = Injector.create({\n parent: this.injector,\n providers: [\n {\n provide: AXP_WIDGET_TOKEN,\n useValue: tokenValue,\n },\n ],\n });\n var com = await widget?.components[this.mode]?.component();\n this.portal = new ComponentPortal(com, null, token);\n this.isLoading.set(false);\n }\n\n protected async handleAttached(portalOutletRef: CdkPortalOutletAttachedRef) {\n portalOutletRef = portalOutletRef as ComponentRef<AXPWidgetComponent>;\n this.instance = portalOutletRef.instance as AXPWidgetComponent;\n this.instance.parent = this.parentNode;\n this.instance.index = this.index;\n this.instance.mode = this.mode;\n await this.updateValueBasedOnFormula();\n await this.assignTriggers();\n }\n\n private applyOptions() {\n if (!this.instance) return;\n this.instance.setOptions(this.mergedOptions());\n }\n\n private checkFormulaForUpdate(formula: string | undefined, path?: string | null): boolean {\n if (formula) {\n const regex = /context\\.eval\\('([^']+)'\\)/g;\n const matches = formula.match(regex);\n const nodes = matches ? matches.map((match: any) => match.match(/'([^']+)'/)[1]) : [];\n return nodes.includes(path);\n } else return false;\n }\n\n preprocessAndInitialOptions(obj: any, pathPrefix: string = ''): void {\n if (!obj) return;\n Object.entries(obj).forEach(([key, value]) => {\n const currentPath = pathPrefix ? `${pathPrefix}.${key}` : key;\n if (typeof value === 'string' && value.includes('{{')) {\n // Cache dynamic expression for later evaluation\n this.expressionEvaluators.set(currentPath, () => this.evaluateExpression(value));\n } else if (typeof value === 'object' && value !== null && (value.constructor === Object || Array.isArray(value))) {\n // Recursively handle nested objects\n this.preprocessAndInitialOptions(value, currentPath);\n } else {\n // Apply static values directly\n this.mergedOptions.update((currentOptions) => {\n return set(currentOptions, currentPath, value);\n });\n }\n });\n }\n\n async updateOptionsBasedOnContext() {\n const updates: any[] = [];\n for (let [path, evaluator] of this.expressionEvaluators) {\n const newValue = await evaluator();\n updates.push({ path, newValue });\n }\n // Apply updates to mergedOptions\n if (updates.length > 0) {\n this.mergedOptions.update((o) => {\n const updatedOptions = { ...o };\n updates.forEach(({ path, newValue }) => {\n // Set the new value in the updatedOptions object by path\n set(updatedOptions, path, newValue); // Assuming 'set' can handle paths like 'property.subproperty'\n });\n return updatedOptions;\n });\n }\n return updates.length;\n }\n\n async updateValueBasedOnFormula() {\n if (this.node.formula) {\n const value = await this.evaluateExpression(this.node.formula);\n this.instance.setValue(value);\n }\n }\n\n private async evaluateExpression(templateExpression: string): Promise<any> {\n try {\n // Check cache first, but cache the function for evaluation, not the evaluated value\n if (!this.expressionCache.has(templateExpression)) {\n const expressionMatch = templateExpression.match(/\\{\\{\\s*(.*?)\\s*\\}\\}/);\n if (!expressionMatch) {\n throw Error(`No valid expression found in \"${templateExpression}\"`);\n }\n const expression = expressionMatch[1];\n\n // Cache the evaluation function instead of the result\n const scope = this.getGlobalScope();\n const evaluationFunction = async () => {\n const sandbox = new Function('scope', `with (scope) { return (async function() { return ${expression}; })(); }`);\n return await sandbox(scope);\n };\n\n this.expressionCache.set(templateExpression, evaluationFunction);\n }\n\n // Retrieve the function from the cache and call it to evaluate the expression\n const evaluate = this.expressionCache.get(templateExpression);\n if (evaluate) {\n const result = await evaluate();\n return result;\n } else {\n throw Error(`Failed to retrieve evaluation function for expression: \"${templateExpression}\"`);\n }\n } catch (error) {\n console.error('Error evaluating expression:', error);\n return false;\n }\n }\n\n private getGlobalScope() {\n if (this.scope) return this.scope;\n this.scope = {};\n set(this.scope, 'context', this.getContextScope());\n set(this.scope, 'events', this.getEventScope());\n set(this.scope, 'widget', this.getWidgetScope());\n set(this.scope, 'methods', this.getFunctionScope());\n set(this.scope, 'vars', this.getVariablesScope());\n return this.scope;\n }\n\n private getContextScope(): any {\n const scope: any = {};\n set(scope, 'eval', (path: string) => this.builderService.getValue(path));\n return scope;\n }\n\n private getEventScope(): any {\n const scope: any = {};\n set(scope, 'context', (path: string) => this.builderService.onChanged.pipe(filter((c) => c.path == path)));\n set(scope, 'from', (event: string) => get(this.instance.api(), event));\n return scope;\n }\n\n private getWidgetScope(): any {\n const scope: any = {};\n set(scope, 'call', (name: string, ...args: any[]) => {\n this.instance.call(name, ...args);\n });\n set(scope, 'find', (id: string) => {\n return this.builderService.getWidget(id)?.api();\n });\n return scope;\n }\n\n private getFunctionScope(): any {\n const scope: any = {};\n set(scope, 'sum', (values: any) => {\n return sum(values);\n });\n Object.entries(this.builderService.functions).forEach((i) => {\n set(scope, i[0], (...args: any[]) => {\n return i[1](...args);\n });\n });\n return scope;\n }\n\n private getVariablesScope(): any {\n const scope: any = {};\n set(scope, 'eval', (path: string) => get(this.builderService.variables, path));\n return scope;\n }\n\n private async assignTriggers() {\n this.node.triggers?.forEach((t) => {\n const event = this.evaluateTrigger(t.event);\n event?.pipe(this.unsubscriber.takeUntilDestroy).subscribe((c) => {\n this.evaluateAction(t.action);\n });\n });\n }\n\n private evaluateTrigger(templateExpression: string): Observable<any> | null {\n try {\n const expressionMatch = templateExpression.match(/\\{\\{\\s*(.*?)\\s*\\}\\}/);\n if (!expressionMatch) {\n throw Error(`No valid expression found in \"${templateExpression}\"`);\n }\n const expression = expressionMatch[1];\n\n // Cache the evaluation function instead of the result\n const scope = this.getGlobalScope();\n const sandbox = new Function('scope', `with (scope) { return ( function() { return ${expression}; })(); }`);\n return sandbox(scope);\n } catch (error) {\n console.error('Error evaluating expression:', error);\n return null;\n }\n }\n\n private evaluateAction(templateExpression: string) {\n try {\n const expressionMatch = templateExpression.match(/\\{\\{\\s*(.*?)\\s*\\}\\}/);\n if (!expressionMatch) {\n throw Error(`No valid expression found in \"${templateExpression}\"`);\n }\n const expression = expressionMatch[1];\n\n // Cache the evaluation function instead of the result\n const scope: any = this.getGlobalScope();\n const sandbox = new Function('scope', `with (scope) { ${expression} }`);\n sandbox(scope);\n } catch (error) {\n console.error('Error evaluating expression:', error);\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, effect, inject, model } from \"@angular/core\";\nimport { AXPLayoutBuilderService } from \"./builder.service\";\nimport { AXUnsubscriber } from \"@acorex/core/utils\";\nimport { cloneDeep } from \"lodash-es\";\nimport { AXPLayoutContextEvent } from \"./widget.types\";\n\n\n@Component({\n selector: 'axp-widgets-container',\n template: `<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { style: 'display: contents;' },\n providers: [AXPLayoutBuilderService, AXUnsubscriber],\n})\nexport class AXPWidgetContainerComponent {\n\n @Output()\n public readonly onChanged = new EventEmitter<AXPLayoutContextEvent>();\n\n public context = model<any>({});\n\n @Input()\n public set variables(v: any) {\n this.builderService.setVariables(v);\n }\n\n @Input()\n public set functions(v: any) {\n this.builderService.setFunctions(v);\n }\n\n\n private unsubscriber = inject(AXUnsubscriber);\n private builderService = inject(AXPLayoutBuilderService);\n\n private ef = effect(() => {\n this.builderService.initial(this.context());\n }, { allowSignalWrites: true })\n\n ngOnInit() {\n this.builderService\n .onChanged\n .pipe(this.unsubscriber.takeUntilDestroy)\n .subscribe(e => {\n this.context.set(e.data);\n this.onChanged.emit(e);\n });\n }\n}","import { AXDataTableColumnComponent } from '@acorex/components/data-table';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Injector, Input, TemplateRef, ViewChild, inject, signal } from '@angular/core';\nimport { AXPWidgetColumnNode, AXP_WIDGET_COLUMN_TOKEN } from './widget.types';\nimport { AXPLayoutBuilderService } from './builder.service';\nimport { AXPWidgetRegistryService } from './widget-registery.service';\nimport { get, merge } from 'lodash-es';\n\n@Component({\n selector: 'axp-widget-column-renderer',\n template: `\n <ng-template #header>{{ caption }}</ng-template>\n <ng-template #cell let-row>\n @if(component && widgetInjector && row?.data) {\n <ng-container *ngComponentOutlet=\"component; injector: widgetInjector; inputs: getInputs(row.data)\"></ng-container>\n }\n </ng-template>\n <ng-template #footer></ng-template>\n `,\n providers: [AXPLayoutBuilderService, { provide: AXDataTableColumnComponent, useExisting: AXPWidgetColumnRendererComponent }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n inputs: ['caption'],\n})\nexport class AXPWidgetColumnRendererComponent extends AXDataTableColumnComponent {\n\n protected widgetRegistery = inject(AXPWidgetRegistryService);\n\n private _node: AXPWidgetColumnNode;\n @Input({ required: true })\n public get node(): AXPWidgetColumnNode {\n return this._node;\n }\n public set node(v: AXPWidgetColumnNode) {\n this._node = v;\n }\n\n private mergedOptions = signal<any>({});\n\n @Input()\n public footerTemplate: TemplateRef<unknown>;\n\n @ViewChild('footer')\n private _contentFooterTemplate: TemplateRef<unknown>;\n\n get renderFooterTemplate(): TemplateRef<unknown> {\n return this.footerTemplate ?? this._contentFooterTemplate;\n }\n\n @Input()\n public cellTemplate: TemplateRef<unknown>;\n\n @ViewChild('cell')\n private _contentCellTemplate: TemplateRef<unknown>;\n\n get renderCellTemplate(): TemplateRef<unknown> {\n return this.cellTemplate ?? this._contentCellTemplate;\n }\n\n @Input()\n public headerTemplate: TemplateRef<unknown>;\n\n @ViewChild('header')\n private _contentHeaderTemplate: TemplateRef<unknown>;\n\n get renderHeaderTemplate(): TemplateRef<unknown> {\n return this.headerTemplate ?? this._contentHeaderTemplate;\n }\n\n get loadingEnabled(): boolean {\n return true;\n }\n\n get name(): string {\n return `col-${this.node.path}`;\n }\n\n\n private injector = inject(Injector);\n private cdr = inject(ChangeDetectorRef);\n protected widgetInjector!: Injector;\n protected component!: any;\n\n async ngOnInit() {\n const widget = this.widgetRegistery.resolve(this.node.type);\n const mode = 'column'\n this.component = await widget?.components[mode]?.component();\n //\n const props = widget?.components[mode]?.properties?.filter(c => c.schema.defaultValue)\n .map(c => ({ [c.name]: c.schema.defaultValue }))\n .reduce((acc, curr) => {\n return { ...acc, ...curr };\n }, {});\n //\n this.mergedOptions.set(\n merge(props, this.node.options) || {}\n );\n\n const tokenValue = {\n path: this.node.path,\n options: this.mergedOptions()\n };\n this.widgetInjector = Injector.create({\n parent: this.injector,\n providers: [\n {\n provide: AXP_WIDGET_COLUMN_TOKEN,\n useValue: tokenValue,\n },\n ],\n });\n\n this.width = this.mergedOptions().width ?? '200px';\n this.allowResizing = this.mergedOptions().allowResizing || true;\n this.cdr.detectChanges();\n }\n\n getInputs(data: any): any {\n return { rawValue: get(data, this.node.path!) };\n }\n}\n","import { AXSkeletonModule } from \"@acorex/components/skeleton\";\nimport { PortalModule } from \"@angular/cdk/portal\";\nimport { CommonModule } from \"@angular/common\";\nimport { Inject, ModuleWithProviders, NgModule, Optional } from \"@angular/core\";\nimport { AXPWidgetRendererComponent } from \"./widget-renderer.component\";\nimport { AXPWidgetContainerComponent } from \"./widget-container.component\";\nimport { AXPWidgetRegistryService } from \"./widget-registery.service\";\nimport { AXPWidgetConfig } from \"./widget.types\";\nimport { AXPWidgetColumnRendererComponent } from \"./widget-column-renderer\";\n\nexport interface AXPLayoutBuilderModuleConfigs {\n widgets: AXPWidgetConfig[]\n}\n\nconst COMPONENTS = [AXPWidgetContainerComponent, AXPWidgetRendererComponent, AXPWidgetColumnRendererComponent];\n\n@NgModule({\n imports: [CommonModule, PortalModule, AXSkeletonModule, CommonModule],\n exports: [...COMPONENTS],\n declarations: [...COMPONENTS],\n})\nexport class AXPLayoutBuilderModule {\n static forRoot(config?: AXPLayoutBuilderModuleConfigs): ModuleWithProviders<AXPLayoutBuilderModule> {\n return {\n ngModule: AXPLayoutBuilderModule,\n providers: [\n {\n provide: 'AXPLayoutBuilderModuleFactory',\n useFactory: (registry: AXPWidgetRegistryService) => () => {\n config?.widgets?.forEach(w => registry.register(w));\n },\n deps: [AXPWidgetRegistryService],\n multi: true\n },\n ]\n };\n }\n\n static forChild(config?: AXPLayoutBuilderModuleConfigs): ModuleWithProviders<AXPLayoutBuilderModule> {\n return {\n ngModule: AXPLayoutBuilderModule,\n providers: [\n {\n provide: 'AXPLayoutBuilderModuleFactory',\n useFactory: (registry: AXPWidgetRegistryService) => () => {\n config?.widgets?.forEach(w => registry.register(w));\n },\n deps: [AXPWidgetRegistryService],\n multi: true\n }\n ]\n };\n }\n\n /**\n * @ignore\n */\n constructor(@Optional() @Inject('AXPLayoutBuilderModuleFactory') instances: any[]) {\n instances?.forEach(f => {\n f();\n });\n }\n}\n","import { AXPWidgetTypesMap } from './widget.types';\n\nconst AXPWidgetsCatalog: AXPWidgetTypesMap = {\n checkbox: 'checkbox-editor',\n color: 'color-editor',\n contact: 'contact-editor',\n dateTime: 'date-time-editor',\n email: 'email-editor',\n largeText: 'large-text-editor',\n link: 'link-editor',\n number: 'number-editor',\n password: 'password-editor',\n phone: 'phone-editor',\n richText: 'rich-text-editor',\n select: 'select-editor',\n selectionList: 'selection-list-editor',\n text: 'text-editor',\n toggle: 'toggle-editor',\n blockLayout: 'block-layout',\n pageLayout: 'page-layout',\n repeaterLayout: 'repeater-layout',\n textBlockLayout: 'text-block-layout',\n file: 'file',\n map: 'map',\n gallery: 'gallery',\n signature: 'signature',\n buttonAction: 'button-action',\n document: 'document-layout',\n lookup: 'lookup-editor',\n formField: 'form-field',\n qrcode: 'qrcode',\n grid: 'grid-layout',\n gridItem: 'grid-item-layout',\n gridRow: 'grid-row-layout',\n};\n\nexport { AXPWidgetsCatalog };\n","import { AXPWidgetGroup } from './widget.types';\n\nexport const AXP_WIDGETS_EDITOR_GROUP: AXPWidgetGroup = {\n name: 'editor',\n order: 2,\n title: 'Editors',\n};\n\nexport const AXP_WIDGETS_ACTION_GROUP: AXPWidgetGroup = {\n name: 'action',\n order: 3,\n title: 'Action',\n};\n\nexport const AXP_WIDGETS_LAYOUT_GROUP: AXPWidgetGroup = {\n name: 'layout',\n order: 1,\n title: 'Layout',\n};\n\nexport const AXP_WIDGETS_ADVANCE_GROUP: AXPWidgetGroup = {\n name: 'advance',\n order: 4,\n title: 'Advance',\n};\n\nexport const AXP_WIDGETS_GROUPS: AXPWidgetGroup[] = [\n AXP_WIDGETS_EDITOR_GROUP,\n AXP_WIDGETS_ACTION_GROUP,\n AXP_WIDGETS_LAYOUT_GROUP,\n AXP_WIDGETS_ADVANCE_GROUP,\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-layout-builder.mjs","sources":["../../../../libs/platform/layout/builder/src/lib/builder/builder.service.ts","../../../../libs/platform/layout/builder/src/lib/builder/widget-registery.service.ts","../../../../libs/platform/layout/builder/src/lib/builder/widget.types.ts","../../../../libs/platform/layout/builder/src/lib/builder/widget-renderer.component.ts","../../../../libs/platform/layout/builder/src/lib/builder/widget-container.component.ts","../../../../libs/platform/layout/builder/src/lib/builder/widget-column-renderer.ts","../../../../libs/platform/layout/builder/src/lib/builder/widget-renderer.component.directive.ts","../../../../libs/platform/layout/builder/src/lib/builder/builder.module.ts","../../../../libs/platform/layout/builder/src/lib/builder/widget-catalog.ts","../../../../libs/platform/layout/builder/src/lib/builder/widget-groups.ts","../../../../libs/platform/layout/builder/src/acorex-platform-layout-builder.ts"],"sourcesContent":["import { Injectable, signal } from '@angular/core';\nimport { clone, get, isEqual, set } from 'lodash-es';\nimport { Subject, Subscription, debounceTime } from 'rxjs';\nimport { AXPLayoutContextEvent } from './widget.types';\n\n\nexport type AXPLayoutElementAPI = { [name: string]: Subject<any> | Function }\n\nexport abstract class AXPLayoutElement {\n abstract get id(): string | null;\n\n api(): AXPLayoutElementAPI {\n return {}\n }\n}\n\n@Injectable()\nexport class AXPLayoutBuilderService {\n private readonly context$ = signal<any>({});\n private readonly variables$ = signal<any>({});\n private readonly functions$ = signal<{ [key: string]: Function }>({});\n\n public readonly onChanged: Subject<AXPLayoutContextEvent> = new Subject<AXPLayoutContextEvent>();\n private debouncers: { [key: string]: Subject<{ path: string; value: any, init: boolean }> } = {};\n private debouncerSubscriptions: { [key: string]: Subscription } = {};\n\n private widgets = new Map<string, AXPLayoutElement>();;\n\n get context() {\n return this.context$();\n }\n\n get variables() {\n return this.variables$();\n }\n\n get functions(): { [key: string]: Function } {\n return this.functions$();\n }\n\n initial(value: any) {\n this.context$.set(value);\n }\n\n\n setVariables(keysValues: any): void;\n setVariables(key: string, value: any): void;\n setVariables(...args: any[]): void {\n if (args.length == 0)\n return;\n else if (args.length == 1)\n this.variables$.set(args[0]);\n else if (args.length == 2) {\n this.variables$.update(v => set(v, args[0], args[1]));\n }\n }\n\n\n setFunctions(keysValues: any): void;\n setFunctions(key: string, value: any): void;\n setFunctions(...args: any[]): void {\n if (args.length == 0)\n return;\n else if (args.length == 1)\n this.functions$.set(args[0]);\n else if (args.length == 2) {\n this.functions$.update(v => set(v, args[0], args[1]));\n }\n }\n\n\n setValue(path: string, value: any, init: boolean = false) {\n const oldValue = get(this.context$(), path);\n if (isEqual(oldValue, value))\n return;\n if (!this.debouncers[path]) {\n // Create a new Subject for debouncing if it doesn't exist\n this.debouncers[path] = new Subject<{ path: string; value: any, init: boolean }>();\n\n // Subscribe to the subject with debounceTime\n this.debouncerSubscriptions[path] =\n this.debouncers[path]\n .pipe(debounceTime(150))\n .subscribe(({ value, init }) => {\n // Only emit onChanged event after debounce time\n this.onChanged.next({\n oldValue: oldValue,\n newValue: value,\n data: this.context,\n path,\n init\n });\n });\n }\n\n // Update context immediately\n this.context$.update((ctx) => set(clone(ctx), path, value));\n // Emit value through the debouncer subject\n this.debouncers[path].next({ path, value, init });\n }\n\n getValue(path: string) {\n return get(this.context, path);\n }\n\n registerWidget(id: string, widget: AXPLayoutElement) {\n this.widgets.set(id, widget);\n }\n\n getWidget(id: string): AXPLayoutElement | undefined {\n return this.widgets.get(id);\n }\n\n private unsubscribeDebouncers() {\n Object.keys(this.debouncerSubscriptions).forEach((path) => {\n this.debouncerSubscriptions[path].unsubscribe();\n delete this.debouncerSubscriptions[path]; // Clean up the reference\n delete this.debouncers[path]; // Also clean up the debouncer subject\n });\n }\n\n ngOnDestroy(): void {\n this.unsubscribeDebouncers();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { merge } from 'lodash-es';\nimport { AXPWidgetConfig } from './widget.types';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXPWidgetRegistryService {\n private types: Map<string, AXPWidgetConfig> = new Map();\n\n register(widget: AXPWidgetConfig) {\n this.types.set(widget.name, widget);\n }\n\n extend(parentName: string, widget: AXPWidgetConfig) {\n const parentWidget = this.resolve(parentName);\n const newWidget = merge({}, parentWidget, widget);\n newWidget.name = widget.name;\n this.register(newWidget);\n }\n\n resolve(name: string): AXPWidgetConfig | undefined {\n const widget = this.types.get(name);\n if (!widget) {\n throw new Error(`Widget with name \"${name}\" does not exist.`);\n }\n return widget;\n }\n\n public all(): AXPWidgetConfig[] {\n return Array.from(this.types.values());\n }\n}\n","import { AXDataSource, AXValueChangedEvent } from '@acorex/components/common';\nimport { AXPMetaData, AXPOptionsData, AXPPartialNested, AXPValidationRules } from '@acorex/platform/core';\nimport { ElementRef, Injectable, InjectionToken, afterNextRender, computed, inject, signal } from '@angular/core';\nimport { cloneDeep, get, isUndefined, merge } from 'lodash-es';\nimport { Subject } from 'rxjs';\nimport { AXPLayoutBuilderService, AXPLayoutElement } from './builder.service';\n\nexport type AXPWidgetTrigger = { event: string; action: string; disabled?: boolean };\nexport type AXPWidgetTriggers = AXPWidgetTrigger[];\n\nexport interface AXPWidgetDataSource {\n name: string;\n columns: {\n name: string;\n title: string;\n // dataType: string;\n // nullable?: boolean;\n // interface?: Partial<AXEntityPropertyWidget>;\n }[];\n source: AXDataSource;\n}\n\nexport interface AXPWidgetPropertyGroup {\n name: string;\n title: string;\n order: number;\n}\n\nexport interface AXPWidgetGroup {\n name: string;\n title: string;\n order: number;\n}\n\nexport interface AXPWidgetProperty {\n name: string;\n title: string;\n description?: string;\n group: AXPWidgetPropertyGroup;\n schema: {\n dataType: 'string' | 'number' | 'object' | 'boolean' | 'array';\n nullable?: boolean;\n defaultValue?: any | string | ((context: any | null) => any);\n interface: Required<Pick<AXPWidgetNode, 'path'>> & Omit<AXPWidgetNode, 'path'>;\n };\n options?: AXPOptionsData;\n validations?: AXPValidationRules;\n visible: boolean;\n}\n\nexport function cloneProperty(\n property: AXPWidgetProperty,\n values: AXPPartialNested<AXPWidgetProperty>\n): AXPWidgetProperty {\n return merge(cloneDeep(property), values);\n}\n\nexport interface AXPWidgetNode {\n type: AXPWidgetTypesMap[keyof AXPWidgetTypesMap];\n path?: string;\n name?: string;\n defaultValue?: any;\n formula?: string;\n children?: AXPWidgetNode[];\n options?: AXPOptionsData;\n triggers?: AXPWidgetTriggers;\n}\n\nexport interface AXPWidgetTypesMap {\n checkbox: 'checkbox-editor';\n color: 'color-editor';\n contact: 'contact-editor';\n dateTime: 'date-time-editor';\n email: 'email-editor';\n largeText: 'large-text-editor';\n link: 'link-editor';\n number: 'number-editor';\n password: 'password-editor';\n phone: 'phone-editor';\n richText: 'rich-text-editor';\n select: 'select-editor';\n selectionList: 'selection-list-editor';\n text: 'text-editor';\n toggle: 'toggle-editor';\n blockLayout: 'block-layout';\n pageLayout: 'page-layout';\n repeaterLayout: 'repeater-layout';\n textBlockLayout: 'text-block-layout';\n file: 'file';\n map: 'map';\n gallery: 'gallery';\n signature: 'signature';\n buttonAction: 'button-action';\n document: 'document-layout';\n lookup: 'lookup-editor';\n formField: 'form-field';\n grid: 'grid-layout';\n gridRow: 'grid-row-layout';\n gridItem: 'grid-item-layout';\n qrcode: 'qrcode';\n}\n\nexport interface AXPWidgetNodeToken {\n config: AXPWidgetConfig;\n node: AXPWidgetNode;\n options?: AXPOptionsData;\n}\n\nexport interface AXPWidgetColumnNode {\n type: string;\n path: string;\n options?: AXPOptionsData;\n}\n\nexport interface AXPWidgetColumnNodeToken extends AXPWidgetColumnNode {\n config: AXPWidgetConfig;\n}\n\nexport const AXP_WIDGET_TOKEN = new InjectionToken<AXPWidgetNodeToken>('AXP_WIDGET_TOKEN');\nexport const AXP_WIDGET_COLUMN_TOKEN = new InjectionToken<AXPWidgetColumnNodeToken>('AXP_WIDGET_COLUMN_TOKEN');\n\nexport interface AXPWidgetComponentConfig {\n component: () => Promise<any>;\n properties?: AXPWidgetProperty[];\n}\n\nexport interface AXPWidgetConfigComponents {\n designer?: AXPWidgetComponentConfig;\n view?: AXPWidgetComponentConfig;\n edit?: AXPWidgetComponentConfig;\n print?: AXPWidgetComponentConfig;\n column?: AXPWidgetComponentConfig;\n filter?: AXPWidgetComponentConfig;\n}\n\nexport type AXPWidgetType = 'container' | 'editor' | 'action' | 'view';\n\nexport interface AXPWidgetConfig {\n name: AXPWidgetTypesMap[keyof AXPWidgetTypesMap];\n title: string;\n icon?: string;\n description?: string;\n group: AXPWidgetGroup;\n properties?: AXPWidgetProperty[];\n components: AXPWidgetConfigComponents;\n meta?: AXPMetaData;\n type: AXPWidgetType;\n visible?: boolean;\n}\n\nexport type AXPWidgetRenderMode = keyof AXPWidgetConfigComponents;\n\nexport interface AXPLayoutContextEvent {\n oldValue: any;\n newValue: any;\n path?: string | null;\n data: any;\n init: boolean;\n}\n\n@Injectable()\nexport abstract class AXPWidgetComponent<T = any | null | void> extends AXPLayoutElement {\n protected readonly token = inject(AXP_WIDGET_TOKEN);\n public readonly host = inject(ElementRef).nativeElement as HTMLDivElement;\n\n protected readonly config = this.token.config;\n\n protected readonly name = this.token.node.name;\n protected readonly path = this.token.node.path ?? (this.config.type == 'editor' ? this.name : null);\n protected readonly defaultValue = this.token.node.defaultValue;\n\n protected readonly _children = signal(this.token.node.children ?? []);\n protected children = this._children.asReadonly();\n\n protected _options = signal<any>(this.token.options ?? {});\n protected options = this._options.asReadonly();\n\n private readonly contextService = inject(AXPLayoutBuilderService);\n\n protected readonly rawValue = computed<T>(() =>\n this._fullPath ? get(this.contextService.context, this._fullPath) : null\n );\n\n public readonly onReady = new Subject<void>();\n\n private isRendered = false;\n\n private _id: string | null;\n public get id(): string | null {\n return this._id;\n }\n\n parent: AXPWidgetComponent | null | undefined;\n index: number | null | undefined;\n mode: AXPWidgetRenderMode;\n\n private _fullPath: string;\n\n ngOnInit() {\n this.initRender();\n }\n\n private nextRender = afterNextRender(() => {\n //\n if (!this.isRendered) {\n //this.detectFullPath();\n //\n this.onReady.next();\n //\n this.isRendered = true;\n }\n });\n\n private initRender() {\n if (this.config.type == 'editor') {\n this.detectFullPath();\n if (this.defaultValue != null) {\n this.setValue(this.defaultValue, true);\n }\n }\n }\n\n getValue<T>() {\n return this.rawValue();\n }\n\n setValue(value: T | null, init: boolean = false) {\n const oldValue = this.rawValue();\n value = isUndefined(value) ? null : value;\n if (this._fullPath) {\n this.contextService.setValue(this._fullPath, value, init);\n this.onValueChanged(oldValue, value);\n }\n }\n\n setOptions(values: any): void {\n this._options.set({ ...this.options(), ...values });\n }\n\n call(name: string, ...args: any[]): void {\n const fn = get(this, name) as Function;\n if (fn && typeof fn == 'function') {\n fn.bind(this)(...args);\n }\n }\n\n setChildren(children: AXPWidgetNode[]) {\n this._children.set([...children]);\n }\n\n onValueChanged(oldValue: T | null, newValue: T | null) {}\n\n private detectFullPath() {\n let sections = [];\n let ids = [];\n //\n let parent: AXPWidgetComponent | null | undefined = this;\n //\n while (parent) {\n const path = parent.path; //?? parent.name;\n const id = parent.name;\n //\n if (path) {\n sections.push(path);\n if (parent.index != null) {\n sections.push(`[${parent.index}]`);\n }\n }\n if (id) {\n ids.push(id);\n if (parent.index != null) {\n ids.push(`${parent.index}`);\n }\n }\n parent = parent.parent;\n }\n //\n this._fullPath = sections.reverse().join('.');\n this._id = this.name || this.parent ? ids.reverse().join('_') : null;\n if (this._id) {\n this.contextService.registerWidget(this._id, this);\n }\n }\n\n protected handleValueChanged(e: AXValueChangedEvent<T>) {\n if (e.isUserInteraction) {\n this.setValue(e.value!);\n }\n }\n}\n\n@Injectable()\nexport abstract class AXPContainerWidgetComponent<T> extends AXPWidgetComponent<T> {\n public readonly node = this.token.node;\n}\n\n@Injectable()\nexport abstract class AXPColumnWidgetComponent<T = any | null | void> {\n private readonly token = inject(AXP_WIDGET_COLUMN_TOKEN);\n\n protected readonly path = this.token.path;\n protected readonly options = this.token.options ?? {};\n protected readonly rawValue: any = null;\n}\n","import { AXUnsubscriber } from '@acorex/core/utils';\nimport { CdkPortalOutletAttachedRef, ComponentPortal } from '@angular/cdk/portal';\nimport { ChangeDetectionStrategy, Component, ComponentRef, Injector, Input, WritableSignal, inject, signal } from '@angular/core';\nimport { cloneDeep, get, merge, set, sum } from 'lodash-es';\nimport { Observable, filter } from 'rxjs';\nimport { AXPLayoutBuilderService } from './builder.service';\nimport { AXPWidgetRegistryService } from './widget-registery.service';\nimport { AXPWidgetComponent, AXPWidgetNode, AXPWidgetNodeToken, AXPWidgetRenderMode, AXP_WIDGET_TOKEN } from './widget.types';\n\n@Component({\n selector: 'axp-widget-renderer',\n template: `\n @if(mergedOptions().isVisible!=false) { @if(isLoading()){\n <ax-skeleton [animated]=\"true\" class=\"ax-w-full lg:ax-w-[50%] ax-h-8 ax-rounded\"></ax-skeleton>\n } @else {\n <ng-container *ngTemplateOutlet=\"tt\"></ng-container>\n } }\n <ng-template #tt>\n <ng-template [cdkPortalOutlet]=\"portal\" (attached)=\"handleAttached($event)\"></ng-template>\n </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXUnsubscriber,\n },\n ],\n})\nexport class AXPWidgetRendererComponent {\n private _node: AXPWidgetNode;\n @Input({ required: true })\n public get node(): AXPWidgetNode {\n return this._node;\n }\n public set node(v: AXPWidgetNode) {\n this._node = v;\n this.loadComponent();\n }\n\n private _mode: AXPWidgetRenderMode = 'edit';\n @Input()\n public get mode(): AXPWidgetRenderMode {\n return this._mode;\n }\n public set mode(v: AXPWidgetRenderMode) {\n this._mode = v;\n }\n\n @Input()\n parentNode: AXPWidgetComponent | null;\n\n @Input()\n index: number | null;\n\n protected mergedOptions: WritableSignal<any> = signal<any>({});\n\n private injector = inject(Injector);\n protected builderService = inject(AXPLayoutBuilderService);\n protected widgetRegistery = inject(AXPWidgetRegistryService);\n protected unsubscriber = inject(AXUnsubscriber);\n\n protected isLoading = signal(true);\n private instance!: AXPWidgetComponent;\n protected portal!: ComponentPortal<any>;\n private expressionCache: Map<string, () => Promise<any>> = new Map();\n private expressionEvaluators: Map<string, () => Promise<any>> = new Map();\n private scope: any = null;\n\n constructor() {\n this.builderService.onChanged.pipe(this.unsubscriber.takeUntilDestroy).subscribe(async (e) => {\n if ((await this.updateOptionsBasedOnContext()) > 0) {\n this.applyOptions();\n }\n if (this.checkFormulaForUpdate(this.node.formula, e.path)) {\n await this.updateValueBasedOnFormula();\n }\n });\n }\n\n private async loadComponent() {\n this.isLoading.set(true);\n const widget = this.widgetRegistery.resolve(this.node.type);\n //\n const props = widget?.components[this.mode]?.properties\n ?.filter((c) => c.schema.defaultValue)\n .map((c) => ({ [c.name]: c.schema.defaultValue }))\n .reduce((acc, curr) => {\n return { ...acc, ...curr };\n }, {});\n //\n this.mergedOptions.set(merge(props, this.node.options) || {});\n this.preprocessAndInitialOptions(cloneDeep(this.node.options));\n await this.updateOptionsBasedOnContext();\n const tokenValue = {\n node: this.node,\n options: this.mergedOptions(),\n config: widget,\n } as AXPWidgetNodeToken;\n const token = Injector.create({\n parent: this.injector,\n providers: [\n {\n provide: AXP_WIDGET_TOKEN,\n useValue: tokenValue,\n },\n ],\n });\n var com = await widget?.components[this.mode]?.component();\n this.portal = new ComponentPortal(com, null, token);\n this.isLoading.set(false);\n }\n\n protected async handleAttached(portalOutletRef: CdkPortalOutletAttachedRef) {\n portalOutletRef = portalOutletRef as ComponentRef<AXPWidgetComponent>;\n this.instance = portalOutletRef.instance as AXPWidgetComponent;\n this.instance.parent = this.parentNode;\n this.instance.index = this.index;\n this.instance.mode = this.mode;\n await this.updateValueBasedOnFormula();\n await this.assignTriggers();\n }\n\n private applyOptions() {\n if (!this.instance) return;\n this.instance.setOptions(this.mergedOptions());\n }\n\n private checkFormulaForUpdate(formula: string | undefined, path?: string | null): boolean {\n if (formula) {\n const regex = /context\\.eval\\('([^']+)'\\)/g;\n const matches = formula.match(regex);\n const nodes = matches ? matches.map((match: any) => match.match(/'([^']+)'/)[1]) : [];\n return nodes.includes(path);\n } else return false;\n }\n\n preprocessAndInitialOptions(obj: any, pathPrefix: string = ''): void {\n if (!obj) return;\n Object.entries(obj).forEach(([key, value]) => {\n const currentPath = pathPrefix ? `${pathPrefix}.${key}` : key;\n if (typeof value === 'string' && value.includes('{{')) {\n // Cache dynamic expression for later evaluation\n this.expressionEvaluators.set(currentPath, () => this.evaluateExpression(value));\n } else if (typeof value === 'object' && value !== null && (value.constructor === Object || Array.isArray(value))) {\n // Recursively handle nested objects\n this.preprocessAndInitialOptions(value, currentPath);\n } else {\n // Apply static values directly\n this.mergedOptions.update((currentOptions) => {\n return set(currentOptions, currentPath, value);\n });\n }\n });\n }\n\n async updateOptionsBasedOnContext() {\n const updates: any[] = [];\n for (let [path, evaluator] of this.expressionEvaluators) {\n const newValue = await evaluator();\n updates.push({ path, newValue });\n }\n // Apply updates to mergedOptions\n if (updates.length > 0) {\n this.mergedOptions.update((o) => {\n const updatedOptions = { ...o };\n updates.forEach(({ path, newValue }) => {\n // Set the new value in the updatedOptions object by path\n set(updatedOptions, path, newValue); // Assuming 'set' can handle paths like 'property.subproperty'\n });\n return updatedOptions;\n });\n }\n return updates.length;\n }\n\n async updateValueBasedOnFormula() {\n if (this.node.formula) {\n const value = await this.evaluateExpression(this.node.formula);\n this.instance.setValue(value);\n }\n }\n\n private async evaluateExpression(templateExpression: string): Promise<any> {\n try {\n // Check cache first, but cache the function for evaluation, not the evaluated value\n if (!this.expressionCache.has(templateExpression)) {\n const expressionMatch = templateExpression.match(/\\{\\{\\s*(.*?)\\s*\\}\\}/);\n if (!expressionMatch) {\n throw Error(`No valid expression found in \"${templateExpression}\"`);\n }\n const expression = expressionMatch[1];\n\n // Cache the evaluation function instead of the result\n const scope = this.getGlobalScope();\n const evaluationFunction = async () => {\n const sandbox = new Function('scope', `with (scope) { return (async function() { return ${expression}; })(); }`);\n return await sandbox(scope);\n };\n\n this.expressionCache.set(templateExpression, evaluationFunction);\n }\n\n // Retrieve the function from the cache and call it to evaluate the expression\n const evaluate = this.expressionCache.get(templateExpression);\n if (evaluate) {\n const result = await evaluate();\n return result;\n } else {\n throw Error(`Failed to retrieve evaluation function for expression: \"${templateExpression}\"`);\n }\n } catch (error) {\n console.error('Error evaluating expression:', error);\n return false;\n }\n }\n\n private getGlobalScope() {\n if (this.scope) return this.scope;\n this.scope = {};\n set(this.scope, 'context', this.getContextScope());\n set(this.scope, 'events', this.getEventScope());\n set(this.scope, 'widget', this.getWidgetScope());\n set(this.scope, 'methods', this.getFunctionScope());\n set(this.scope, 'vars', this.getVariablesScope());\n return this.scope;\n }\n\n private getContextScope(): any {\n const scope: any = {};\n set(scope, 'eval', (path: string) => this.builderService.getValue(path));\n return scope;\n }\n\n private getEventScope(): any {\n const scope: any = {};\n set(scope, 'context', (path: string) => this.builderService.onChanged.pipe(filter((c) => c.path == path)));\n set(scope, 'from', (event: string) => get(this.instance.api(), event));\n return scope;\n }\n\n private getWidgetScope(): any {\n const scope: any = {};\n set(scope, 'call', (name: string, ...args: any[]) => {\n this.instance.call(name, ...args);\n });\n set(scope, 'find', (id: string) => {\n return this.builderService.getWidget(id)?.api();\n });\n return scope;\n }\n\n private getFunctionScope(): any {\n const scope: any = {};\n set(scope, 'sum', (values: any) => {\n return sum(values);\n });\n Object.entries(this.builderService.functions).forEach((i) => {\n set(scope, i[0], (...args: any[]) => {\n return i[1](...args);\n });\n });\n return scope;\n }\n\n private getVariablesScope(): any {\n const scope: any = {};\n set(scope, 'eval', (path: string) => get(this.builderService.variables, path));\n return scope;\n }\n\n private async assignTriggers() {\n this.node.triggers?.forEach((t) => {\n const event = this.evaluateTrigger(t.event);\n event?.pipe(this.unsubscriber.takeUntilDestroy).subscribe((c) => {\n this.evaluateAction(t.action);\n });\n });\n }\n\n private evaluateTrigger(templateExpression: string): Observable<any> | null {\n try {\n const expressionMatch = templateExpression.match(/\\{\\{\\s*(.*?)\\s*\\}\\}/);\n if (!expressionMatch) {\n throw Error(`No valid expression found in \"${templateExpression}\"`);\n }\n const expression = expressionMatch[1];\n\n // Cache the evaluation function instead of the result\n const scope = this.getGlobalScope();\n const sandbox = new Function('scope', `with (scope) { return ( function() { return ${expression}; })(); }`);\n return sandbox(scope);\n } catch (error) {\n console.error('Error evaluating expression:', error);\n return null;\n }\n }\n\n private evaluateAction(templateExpression: string) {\n try {\n const expressionMatch = templateExpression.match(/\\{\\{\\s*(.*?)\\s*\\}\\}/);\n if (!expressionMatch) {\n throw Error(`No valid expression found in \"${templateExpression}\"`);\n }\n const expression = expressionMatch[1];\n\n // Cache the evaluation function instead of the result\n const scope: any = this.getGlobalScope();\n const sandbox = new Function('scope', `with (scope) { ${expression} }`);\n sandbox(scope);\n } catch (error) {\n console.error('Error evaluating expression:', error);\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, effect, inject, model } from \"@angular/core\";\nimport { AXPLayoutBuilderService } from \"./builder.service\";\nimport { AXUnsubscriber } from \"@acorex/core/utils\";\nimport { cloneDeep } from \"lodash-es\";\nimport { AXPLayoutContextEvent } from \"./widget.types\";\n\n\n@Component({\n selector: 'axp-widgets-container',\n template: `<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { style: 'display: contents;' },\n providers: [AXPLayoutBuilderService, AXUnsubscriber],\n})\nexport class AXPWidgetContainerComponent {\n\n @Output()\n public readonly onChanged = new EventEmitter<AXPLayoutContextEvent>();\n\n public context = model<any>({});\n\n @Input()\n public set variables(v: any) {\n this.builderService.setVariables(v);\n }\n\n @Input()\n public set functions(v: any) {\n this.builderService.setFunctions(v);\n }\n\n\n private unsubscriber = inject(AXUnsubscriber);\n private builderService = inject(AXPLayoutBuilderService);\n\n private ef = effect(() => {\n this.builderService.initial(this.context());\n }, { allowSignalWrites: true })\n\n ngOnInit() {\n this.builderService\n .onChanged\n .pipe(this.unsubscriber.takeUntilDestroy)\n .subscribe(e => {\n this.context.set(e.data);\n this.onChanged.emit(e);\n });\n }\n}","import { AXDataTableColumnComponent } from '@acorex/components/data-table';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Injector, Input, TemplateRef, ViewChild, inject, signal } from '@angular/core';\nimport { AXPWidgetColumnNode, AXP_WIDGET_COLUMN_TOKEN } from './widget.types';\nimport { AXPLayoutBuilderService } from './builder.service';\nimport { AXPWidgetRegistryService } from './widget-registery.service';\nimport { get, merge } from 'lodash-es';\n\n@Component({\n selector: 'axp-widget-column-renderer',\n template: `\n <ng-template #header>{{ caption }}</ng-template>\n <ng-template #cell let-row>\n @if(component && widgetInjector && row?.data) {\n <ng-container *ngComponentOutlet=\"component; injector: widgetInjector; inputs: getInputs(row.data)\"></ng-container>\n }\n </ng-template>\n <ng-template #footer></ng-template>\n `,\n providers: [AXPLayoutBuilderService, { provide: AXDataTableColumnComponent, useExisting: AXPWidgetColumnRendererComponent }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n inputs: ['caption'],\n})\nexport class AXPWidgetColumnRendererComponent extends AXDataTableColumnComponent {\n\n protected widgetRegistery = inject(AXPWidgetRegistryService);\n\n private _node: AXPWidgetColumnNode;\n @Input({ required: true })\n public get node(): AXPWidgetColumnNode {\n return this._node;\n }\n public set node(v: AXPWidgetColumnNode) {\n this._node = v;\n }\n\n private mergedOptions = signal<any>({});\n\n @Input()\n public footerTemplate: TemplateRef<unknown>;\n\n @ViewChild('footer')\n private _contentFooterTemplate: TemplateRef<unknown>;\n\n get renderFooterTemplate(): TemplateRef<unknown> {\n return this.footerTemplate ?? this._contentFooterTemplate;\n }\n\n @Input()\n public cellTemplate: TemplateRef<unknown>;\n\n @ViewChild('cell')\n private _contentCellTemplate: TemplateRef<unknown>;\n\n get renderCellTemplate(): TemplateRef<unknown> {\n return this.cellTemplate ?? this._contentCellTemplate;\n }\n\n @Input()\n public headerTemplate: TemplateRef<unknown>;\n\n @ViewChild('header')\n private _contentHeaderTemplate: TemplateRef<unknown>;\n\n get renderHeaderTemplate(): TemplateRef<unknown> {\n return this.headerTemplate ?? this._contentHeaderTemplate;\n }\n\n get loadingEnabled(): boolean {\n return true;\n }\n\n get name(): string {\n return `col-${this.node.path}`;\n }\n\n\n private injector = inject(Injector);\n private cdr = inject(ChangeDetectorRef);\n protected widgetInjector!: Injector;\n protected component!: any;\n\n async ngOnInit() {\n const widget = this.widgetRegistery.resolve(this.node.type);\n const mode = 'column'\n this.component = await widget?.components[mode]?.component();\n //\n const props = widget?.components[mode]?.properties?.filter(c => c.schema.defaultValue)\n .map(c => ({ [c.name]: c.schema.defaultValue }))\n .reduce((acc, curr) => {\n return { ...acc, ...curr };\n }, {});\n //\n this.mergedOptions.set(\n merge(props, this.node.options) || {}\n );\n\n const tokenValue = {\n path: this.node.path,\n options: this.mergedOptions()\n };\n this.widgetInjector = Injector.create({\n parent: this.injector,\n providers: [\n {\n provide: AXP_WIDGET_COLUMN_TOKEN,\n useValue: tokenValue,\n },\n ],\n });\n\n this.width = this.mergedOptions().width ?? '200px';\n this.allowResizing = this.mergedOptions().allowResizing || true;\n this.cdr.detectChanges();\n }\n\n getInputs(data: any): any {\n return { rawValue: get(data, this.node.path!) };\n }\n}\n","import { AXUnsubscriber } from '@acorex/core/utils';\nimport { Directive, Injector, ViewContainerRef, WritableSignal, effect, inject, input, signal } from '@angular/core';\nimport { cloneDeep, get, merge, set, sum } from 'lodash-es';\nimport { Observable, filter } from 'rxjs';\nimport { AXPLayoutBuilderService } from './builder.service';\nimport { AXPWidgetRegistryService } from './widget-registery.service';\nimport { AXPWidgetComponent, AXPWidgetNode, AXPWidgetNodeToken, AXPWidgetRenderMode, AXP_WIDGET_TOKEN } from './widget.types';\n\n\n@Directive({\n selector: '[axp-widget-renderer]',\n providers: [\n {\n provide: AXUnsubscriber,\n },\n ],\n})\nexport class AXPWidgetRendererDirective {\n\n\n parentNode = input<AXPWidgetComponent | null>();\n\n index = input<number | null>();\n\n mode = input.required<AXPWidgetRenderMode>();\n node = input.required<AXPWidgetNode>();\n\n protected mergedOptions: WritableSignal<any> = signal<any>({});\n\n private injector = inject(Injector);\n protected builderService = inject(AXPLayoutBuilderService);\n protected widgetRegistery = inject(AXPWidgetRegistryService);\n protected unsubscriber = inject(AXUnsubscriber);\n private viewContainerRef = inject(ViewContainerRef);\n\n protected isLoading = signal(true);\n private instance!: AXPWidgetComponent;\n private expressionCache: Map<string, () => Promise<any>> = new Map();\n private expressionEvaluators: Map<string, () => Promise<any>> = new Map();\n private scope: any = null;\n\n constructor() {\n this.builderService.onChanged.pipe(this.unsubscriber.takeUntilDestroy).subscribe(async (e) => {\n if ((await this.updateOptionsBasedOnContext()) > 0) {\n this.applyOptions();\n }\n if (this.checkFormulaForUpdate(this.node().formula, e.path)) {\n await this.updateValueBasedOnFormula();\n }\n });\n //\n effect(\n async () => {\n await this.loadComponent();\n },\n { allowSignalWrites: true }\n );\n }\n\n private async loadComponent() {\n this.isLoading.set(true);\n this.viewContainerRef.clear();\n const widget = this.widgetRegistery.resolve(this.node().type);\n //\n const props = widget?.components[this.mode()]?.properties\n ?.filter((c) => c.schema.defaultValue)\n .map((c) => ({ [c.name]: c.schema.defaultValue }))\n .reduce((acc, curr) => {\n return { ...acc, ...curr };\n }, {});\n //\n this.mergedOptions.set(merge(props, this.node().options) || {});\n this.preprocessAndInitialOptions(cloneDeep(this.node().options));\n await this.updateOptionsBasedOnContext();\n //\n const tokenValue = {\n node: this.node(),\n options: this.mergedOptions(),\n config: widget,\n } as AXPWidgetNodeToken;\n const token = Injector.create({\n parent: this.injector,\n providers: [\n {\n provide: AXP_WIDGET_TOKEN,\n useValue: tokenValue,\n },\n ],\n });\n //\n var com = await widget?.components[this.mode()]?.component();\n this.instance = this.viewContainerRef.createComponent<AXPWidgetComponent<any>>(com, { injector: token }).instance;\n this.instance.parent = this.parentNode();\n this.instance.index = this.index();\n this.instance.mode = this.mode();\n await this.updateValueBasedOnFormula();\n await this.assignTriggers();\n //\n this.isLoading.set(false);\n }\n\n private applyOptions() {\n if (!this.instance) return;\n this.instance.setOptions(this.mergedOptions());\n }\n\n private checkFormulaForUpdate(formula: string | undefined, path?: string | null): boolean {\n if (formula) {\n const regex = /context\\.eval\\('([^']+)'\\)/g;\n const matches = formula.match(regex);\n const nodes = matches ? matches.map((match: any) => match.match(/'([^']+)'/)[1]) : [];\n return nodes.includes(path);\n } else return false;\n }\n\n preprocessAndInitialOptions(obj: any, pathPrefix: string = ''): void {\n if (!obj) return;\n Object.entries(obj).forEach(([key, value]) => {\n const currentPath = pathPrefix ? `${pathPrefix}.${key}` : key;\n if (typeof value === 'string' && value.includes('{{')) {\n // Cache dynamic expression for later evaluation\n this.expressionEvaluators.set(currentPath, () => this.evaluateExpression(value));\n } else if (typeof value === 'object' && value !== null && (value.constructor === Object || Array.isArray(value))) {\n // Recursively handle nested objects\n this.preprocessAndInitialOptions(value, currentPath);\n } else {\n // Apply static values directly\n this.mergedOptions.update((currentOptions) => {\n return set(currentOptions, currentPath, value);\n });\n }\n });\n }\n\n async updateOptionsBasedOnContext() {\n const updates: any[] = [];\n for (let [path, evaluator] of this.expressionEvaluators) {\n const newValue = await evaluator();\n updates.push({ path, newValue });\n }\n // Apply updates to mergedOptions\n if (updates.length > 0) {\n this.mergedOptions.update((o) => {\n const updatedOptions = { ...o };\n updates.forEach(({ path, newValue }) => {\n // Set the new value in the updatedOptions object by path\n set(updatedOptions, path, newValue); // Assuming 'set' can handle paths like 'property.subproperty'\n });\n return updatedOptions;\n });\n }\n return updates.length;\n }\n\n async updateValueBasedOnFormula() {\n if (this.node().formula) {\n const value = await this.evaluateExpression(this.node().formula!);\n this.instance.setValue(value);\n }\n }\n\n private async evaluateExpression(templateExpression: string): Promise<any> {\n try {\n // Check cache first, but cache the function for evaluation, not the evaluated value\n if (!this.expressionCache.has(templateExpression)) {\n const expressionMatch = templateExpression.match(/\\{\\{\\s*(.*?)\\s*\\}\\}/);\n if (!expressionMatch) {\n throw Error(`No valid expression found in \"${templateExpression}\"`);\n }\n const expression = expressionMatch[1];\n\n // Cache the evaluation function instead of the result\n const scope = this.getGlobalScope();\n const evaluationFunction = async () => {\n const sandbox = new Function('scope', `with (scope) { return (async function() { return ${expression}; })(); }`);\n return await sandbox(scope);\n };\n\n this.expressionCache.set(templateExpression, evaluationFunction);\n }\n\n // Retrieve the function from the cache and call it to evaluate the expression\n const evaluate = this.expressionCache.get(templateExpression);\n if (evaluate) {\n const result = await evaluate();\n return result;\n } else {\n throw Error(`Failed to retrieve evaluation function for expression: \"${templateExpression}\"`);\n }\n } catch (error) {\n console.error('Error evaluating expression:', error);\n return false;\n }\n }\n\n private getGlobalScope() {\n if (this.scope) return this.scope;\n this.scope = {};\n set(this.scope, 'context', this.getContextScope());\n set(this.scope, 'events', this.getEventScope());\n set(this.scope, 'widget', this.getWidgetScope());\n set(this.scope, 'methods', this.getFunctionScope());\n set(this.scope, 'vars', this.getVariablesScope());\n return this.scope;\n }\n\n private getContextScope(): any {\n const scope: any = {};\n set(scope, 'eval', (path: string) => this.builderService.getValue(path));\n return scope;\n }\n\n private getEventScope(): any {\n const scope: any = {};\n set(scope, 'context', (path: string) => this.builderService.onChanged.pipe(filter((c) => c.path == path)));\n set(scope, 'from', (event: string) => get(this.instance.api(), event));\n return scope;\n }\n\n private getWidgetScope(): any {\n const scope: any = {};\n set(scope, 'call', (name: string, ...args: any[]) => {\n this.instance.call(name, ...args);\n });\n set(scope, 'find', (id: string) => {\n return this.builderService.getWidget(id)?.api();\n });\n return scope;\n }\n\n private getFunctionScope(): any {\n const scope: any = {};\n set(scope, 'sum', (values: any) => {\n return sum(values);\n });\n Object.entries(this.builderService.functions).forEach((i) => {\n set(scope, i[0], (...args: any[]) => {\n return i[1](...args);\n });\n });\n return scope;\n }\n\n private getVariablesScope(): any {\n const scope: any = {};\n set(scope, 'eval', (path: string) => get(this.builderService.variables, path));\n return scope;\n }\n\n private async assignTriggers() {\n this.node().triggers?.forEach((t) => {\n const event = this.evaluateTrigger(t.event);\n event?.pipe(this.unsubscriber.takeUntilDestroy).subscribe((c) => {\n this.evaluateAction(t.action);\n });\n });\n }\n\n private evaluateTrigger(templateExpression: string): Observable<any> | null {\n try {\n const expressionMatch = templateExpression.match(/\\{\\{\\s*(.*?)\\s*\\}\\}/);\n if (!expressionMatch) {\n throw Error(`No valid expression found in \"${templateExpression}\"`);\n }\n const expression = expressionMatch[1];\n\n // Cache the evaluation function instead of the result\n const scope = this.getGlobalScope();\n const sandbox = new Function('scope', `with (scope) { return ( function() { return ${expression}; })(); }`);\n return sandbox(scope);\n } catch (error) {\n console.error('Error evaluating expression:', error);\n return null;\n }\n }\n\n private evaluateAction(templateExpression: string) {\n try {\n const expressionMatch = templateExpression.match(/\\{\\{\\s*(.*?)\\s*\\}\\}/);\n if (!expressionMatch) {\n throw Error(`No valid expression found in \"${templateExpression}\"`);\n }\n const expression = expressionMatch[1];\n\n // Cache the evaluation function instead of the result\n const scope: any = this.getGlobalScope();\n const sandbox = new Function('scope', `with (scope) { ${expression} }`);\n sandbox(scope);\n } catch (error) {\n console.error('Error evaluating expression:', error);\n }\n }\n}\n","import { AXSkeletonModule } from \"@acorex/components/skeleton\";\nimport { PortalModule } from \"@angular/cdk/portal\";\nimport { CommonModule } from \"@angular/common\";\nimport { Inject, ModuleWithProviders, NgModule, Optional } from \"@angular/core\";\nimport { AXPWidgetRendererComponent } from \"./widget-renderer.component\";\nimport { AXPWidgetContainerComponent } from \"./widget-container.component\";\nimport { AXPWidgetRegistryService } from \"./widget-registery.service\";\nimport { AXPWidgetConfig } from \"./widget.types\";\nimport { AXPWidgetColumnRendererComponent } from \"./widget-column-renderer\";\nimport { AXPWidgetRendererDirective } from \"./widget-renderer.component.directive\";\n\nexport interface AXPLayoutBuilderModuleConfigs {\n widgets: AXPWidgetConfig[]\n}\n\nconst COMPONENTS = [AXPWidgetContainerComponent, AXPWidgetRendererComponent, AXPWidgetColumnRendererComponent, AXPWidgetRendererDirective];\n\n@NgModule({\n imports: [CommonModule, PortalModule, AXSkeletonModule, CommonModule],\n exports: [...COMPONENTS],\n declarations: [...COMPONENTS],\n})\nexport class AXPLayoutBuilderModule {\n static forRoot(config?: AXPLayoutBuilderModuleConfigs): ModuleWithProviders<AXPLayoutBuilderModule> {\n return {\n ngModule: AXPLayoutBuilderModule,\n providers: [\n {\n provide: 'AXPLayoutBuilderModuleFactory',\n useFactory: (registry: AXPWidgetRegistryService) => () => {\n config?.widgets?.forEach(w => registry.register(w));\n },\n deps: [AXPWidgetRegistryService],\n multi: true\n },\n ]\n };\n }\n\n static forChild(config?: AXPLayoutBuilderModuleConfigs): ModuleWithProviders<AXPLayoutBuilderModule> {\n return {\n ngModule: AXPLayoutBuilderModule,\n providers: [\n {\n provide: 'AXPLayoutBuilderModuleFactory',\n useFactory: (registry: AXPWidgetRegistryService) => () => {\n config?.widgets?.forEach(w => registry.register(w));\n },\n deps: [AXPWidgetRegistryService],\n multi: true\n }\n ]\n };\n }\n\n /**\n * @ignore\n */\n constructor(@Optional() @Inject('AXPLayoutBuilderModuleFactory') instances: any[]) {\n instances?.forEach(f => {\n f();\n });\n }\n}\n","import { AXPWidgetTypesMap } from './widget.types';\n\nconst AXPWidgetsCatalog: AXPWidgetTypesMap = {\n checkbox: 'checkbox-editor',\n color: 'color-editor',\n contact: 'contact-editor',\n dateTime: 'date-time-editor',\n email: 'email-editor',\n largeText: 'large-text-editor',\n link: 'link-editor',\n number: 'number-editor',\n password: 'password-editor',\n phone: 'phone-editor',\n richText: 'rich-text-editor',\n select: 'select-editor',\n selectionList: 'selection-list-editor',\n text: 'text-editor',\n toggle: 'toggle-editor',\n blockLayout: 'block-layout',\n pageLayout: 'page-layout',\n repeaterLayout: 'repeater-layout',\n textBlockLayout: 'text-block-layout',\n file: 'file',\n map: 'map',\n gallery: 'gallery',\n signature: 'signature',\n buttonAction: 'button-action',\n document: 'document-layout',\n lookup: 'lookup-editor',\n formField: 'form-field',\n qrcode: 'qrcode',\n grid: 'grid-layout',\n gridItem: 'grid-item-layout',\n gridRow: 'grid-row-layout',\n};\n\nexport { AXPWidgetsCatalog };\n","import { AXPWidgetGroup } from './widget.types';\n\nexport const AXP_WIDGETS_EDITOR_GROUP: AXPWidgetGroup = {\n name: 'editor',\n order: 2,\n title: 'Editors',\n};\n\nexport const AXP_WIDGETS_ACTION_GROUP: AXPWidgetGroup = {\n name: 'action',\n order: 3,\n title: 'Action',\n};\n\nexport const AXP_WIDGETS_LAYOUT_GROUP: AXPWidgetGroup = {\n name: 'layout',\n order: 1,\n title: 'Layout',\n};\n\nexport const AXP_WIDGETS_ADVANCE_GROUP: AXPWidgetGroup = {\n name: 'advance',\n order: 4,\n title: 'Advance',\n};\n\nexport const AXP_WIDGETS_GROUPS: AXPWidgetGroup[] = [\n AXP_WIDGETS_EDITOR_GROUP,\n AXP_WIDGETS_ACTION_GROUP,\n AXP_WIDGETS_LAYOUT_GROUP,\n AXP_WIDGETS_ADVANCE_GROUP,\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}