{"version":3,"file":"acorex-platform-layout-widget-core.mjs","sources":["../../../../libs/platform/layout/widget-core/src/lib/widget-core.service.ts","../../../../libs/platform/layout/widget-core/src/lib/widget-base.component.ts","../../../../libs/platform/layout/widget-core/src/lib/base-widget/box-model-widget.component.ts","../../../../libs/platform/layout/widget-core/src/lib/base-widget/block-base-widget.component.ts","../../../../libs/platform/layout/widget-core/src/lib/base-widget/flex-base-widget.component.ts","../../../../libs/platform/layout/widget-core/src/lib/base-widget/inline-base-widget.component.ts","../../../../libs/platform/layout/widget-core/src/lib/base-widget/flex-item-base-widget.component.ts","../../../../libs/platform/layout/widget-core/src/lib/base-widget/grid-base-widget.component.ts","../../../../libs/platform/layout/widget-core/src/lib/base-widget/grid-item-base-widget.component.ts","../../../../libs/platform/layout/widget-core/src/lib/base-widget/table-base-widget.component.ts","../../../../libs/platform/layout/widget-core/src/lib/base-widget/table-item-ops-base-widget.component.ts","../../../../libs/platform/layout/widget-core/src/lib/base-widget/table-item-base-widget.component.ts","../../../../libs/platform/layout/widget-core/src/lib/widget-definition.provider.ts","../../../../libs/platform/layout/widget-core/src/lib/widget-registery.service.ts","../../../../libs/platform/layout/widget-core/src/lib/widget-column-renderer.ts","../../../../libs/platform/layout/widget-core/src/lib/widget-container.component.ts","../../../../libs/platform/layout/widget-core/src/lib/widget-placeholder.component.ts","../../../../libs/platform/layout/widget-core/src/lib/widget-cascade-trace.constants.ts","../../../../libs/platform/layout/widget-core/src/lib/widget-renderer.directive.ts","../../../../libs/platform/layout/widget-core/src/lib/widget-core.module.ts","../../../../libs/platform/layout/widget-core/src/lib/helper/map-property-to-widget-property.helper.ts","../../../../libs/platform/layout/widget-core/src/lib/helper/property-editor.helper.ts","../../../../libs/platform/layout/widget-core/src/lib/helper/widget-serialization.helper.ts","../../../../libs/platform/layout/widget-core/src/lib/widget-categories.ts","../../../../libs/platform/layout/widget-core/src/lib/widget-column-cell.component.ts","../../../../libs/platform/layout/widget-core/src/lib/properties/groups.ts","../../../../libs/platform/layout/widget-core/src/lib/properties/data-source.props.ts","../../../../libs/platform/layout/widget-core/src/lib/properties/general.props.ts","../../../../libs/platform/layout/widget-core/src/lib/properties/editors.props.ts","../../../../libs/platform/layout/widget-core/src/lib/properties/layout.props.ts","../../../../libs/platform/layout/widget-core/src/lib/properties/table-column.props.ts","../../../../libs/platform/layout/widget-core/src/lib/properties/validation.props.ts","../../../../libs/platform/layout/widget-core/src/acorex-platform-layout-widget-core.ts"],"sourcesContent":["import { computed, effect, Injectable, Signal, signal, untracked } from '@angular/core';\nimport { set } from 'lodash-es';\nimport { Subject } from 'rxjs';\nimport { AXPPageStatus, AXPWidgetStatus } from '@acorex/platform/layout/widget-core-contracts';\n\nexport type AXPWidgetCoreElementAPI = { [name: string]: Subject<any> | Function };\n\nexport type AXPWidgetCoreElementAction = {\n  title: string;\n  command: string;\n  icon?: string;\n  color?: string;\n  disabled?: boolean | string;\n  hidden?: boolean | string;\n  zone?: 'header' | 'footer';\n  placement?: 'prefix' | 'suffix';\n  scope?: 'primary' | 'secondary';\n  shortcuts?: string[];\n  predicateApiWidgetName?: string;\n  items?: AXPWidgetCoreElementAction[];\n};\n\nexport abstract class AXPWidgetCoreElement {\n  abstract get id(): string | null;\n  abstract get status(): Signal<AXPWidgetStatus>;\n  abstract get isHydrating(): Signal<boolean>;\n\n  api(): AXPWidgetCoreElementAPI {\n    return {};\n  }\n\n  actions(): AXPWidgetCoreElementAction[] {\n    return [];\n  }\n}\n\n@Injectable()\nexport class AXPWidgetCoreService {\n  private readonly variables$ = signal<any>({});\n  private readonly functions$ = signal<{ [key: string]: Function }>({});\n\n  public readonly onRefresh: Subject<void> = new Subject<void>();\n\n  private widgets = new Map<string, AXPWidgetCoreElement>();\n  private readonly onWidgetRegistered = new Subject<{ id: string; widget: AXPWidgetCoreElement }>();\n\n  /** Fires whenever a widget registers, including re-registration after remount (same id, new instance). */\n  readonly widgetRegistered$ = this.onWidgetRegistered.asObservable();\n\n  /** Bumps when widget render/hydration state changes so aggregate computeds re-evaluate. */\n  private readonly widgetsRevision = signal(0);\n\n  private readonly status$ = signal<AXPPageStatus>(AXPPageStatus.Rendered);\n  public readonly status = this.status$.asReadonly();\n\n  public readonly registeredWidgetsCount = signal<number>(0);\n\n  public readonly isRendering = computed(() => {\n    this.widgetsRevision();\n    return Array.from(this.widgets.values()).some((widget) => widget.status() === AXPWidgetStatus.Rendering);\n  });\n\n  public readonly isHydrating = computed(() => {\n    this.widgetsRevision();\n    return Array.from(this.widgets.values()).some((widget) => widget.isHydrating());\n  });\n\n  public readonly isBusy = computed(() => this.isRendering() || this.isHydrating());\n\n  public readonly isStructureReady = computed(() => {\n    this.widgetsRevision();\n    const widgets = Array.from(this.widgets.values());\n    if (!widgets.length) {\n      return false;\n    }\n    return widgets.every((widget) => widget.status() === AXPWidgetStatus.Rendered);\n  });\n\n  private readonly dirtyWidgetsRevision = signal(0);\n  readonly dirtyWidgetsRevisionSignal = this.dirtyWidgetsRevision.asReadonly();\n\n  constructor() {\n    effect(() => {\n      this.widgetsRevision();\n      this.registeredWidgetsCount();\n      untracked(() => {\n        this.status$.set(this.detectAggregateStatus());\n      });\n    });\n  }\n\n  get variables() {\n    return this.variables$();\n  }\n\n  get functions(): { [key: string]: Function } {\n    return this.functions$();\n  }\n\n  /** Recomputes aggregate container state after a widget registers or changes status/hydration. */\n  public notifyWidgetStateChanged(): void {\n    this.registeredWidgetsCount.set(this.widgets.size);\n    this.widgetsRevision.update((value) => value + 1);\n  }\n\n  /** @deprecated Prefer {@link notifyWidgetStateChanged}. */\n  public updateStatus(): void {\n    this.notifyWidgetStateChanged();\n  }\n\n  /** Debug snapshot of registered widget render/hydration state. */\n  public getWidgetStateSnapshot(): {\n    count: number;\n    isRendering: boolean;\n    isHydrating: boolean;\n    isStructureReady: boolean;\n    isBusy: boolean;\n    widgets: Array<{ id: string; status: AXPWidgetStatus; isHydrating: boolean }>;\n  } {\n    const widgets = Array.from(this.widgets.entries()).map(([id, widget]) => ({\n      id,\n      status: widget.status(),\n      isHydrating: widget.isHydrating(),\n    }));\n\n    return {\n      count: widgets.length,\n      isRendering: this.isRendering(),\n      isHydrating: this.isHydrating(),\n      isStructureReady: this.isStructureReady(),\n      isBusy: this.isBusy(),\n      widgets,\n    };\n  }\n\n  private detectAggregateStatus(): AXPPageStatus {\n    const widgets = Array.from(this.widgets.values());\n    if (!widgets.length) {\n      return AXPPageStatus.Rendered;\n    }\n\n    const statuses = widgets.map((widget) => widget.status());\n\n    if (statuses.some((status) => status === AXPWidgetStatus.Rendering)) {\n      return AXPPageStatus.Rendering;\n    }\n    if (statuses.some((status) => status === AXPWidgetStatus.Error)) {\n      return AXPPageStatus.Error;\n    }\n    if (widgets.some((widget) => widget.isHydrating())) {\n      return AXPPageStatus.Rendering;\n    }\n    if (statuses.every((status) => status === AXPWidgetStatus.Rendered)) {\n      return AXPPageStatus.Rendered;\n    }\n\n    return AXPPageStatus.Rendered;\n  }\n\n  refresh() {\n    setTimeout(() => {\n      this.onRefresh.next();\n    }, 0);\n  }\n\n  setStatus(status: AXPPageStatus) {\n    this.status$.set(status);\n  }\n\n  setVariables(keysValues: any): void;\n  setVariables(key: string, value: any): void;\n  setVariables(...args: any[]): void {\n    if (args.length == 0) return;\n    else if (args.length == 1) 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  setFunctions(keysValues: any): void;\n  setFunctions(key: string, value: any): void;\n  setFunctions(...args: any[]): void {\n    if (args.length == 0) return;\n    else if (args.length == 1) 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  registerWidget(id: string, widget: AXPWidgetCoreElement) {\n    this.widgets.set(id, widget);\n    this.onWidgetRegistered.next({ id, widget });\n    this.notifyWidgetStateChanged();\n  }\n\n  unregisterWidget(id: string) {\n    if (this.widgets.delete(id)) {\n      this.notifyWidgetStateChanged();\n    }\n  }\n\n  clearWidgets() {\n    if (this.widgets.size === 0) {\n      return;\n    }\n    this.widgets.clear();\n    this.notifyWidgetStateChanged();\n  }\n\n  getWidget(id: string): AXPWidgetCoreElement | undefined {\n    return this.widgets.get(id);\n  }\n\n  async waitForWidget(id: string, timeoutMs?: number): Promise<AXPWidgetCoreElement | undefined> {\n    const existing = this.widgets.get(id);\n    if (existing) {\n      return existing;\n    }\n\n    return new Promise<AXPWidgetCoreElement | undefined>((resolve) => {\n      let resolved = false;\n      let timer: ReturnType<typeof setTimeout> | null = null;\n      const sub = this.onWidgetRegistered.subscribe(({ id: registeredId, widget }) => {\n        if (registeredId === id && !resolved) {\n          resolved = true;\n          sub.unsubscribe();\n          if (timer) {\n            clearTimeout(timer);\n          }\n          resolve(widget);\n        }\n      });\n\n      if (timeoutMs != null && timeoutMs > 0) {\n        timer = setTimeout(() => {\n          if (!resolved) {\n            resolved = true;\n            sub.unsubscribe();\n            resolve(undefined);\n          }\n        }, timeoutMs);\n      }\n    });\n  }\n\n  listRegisteredWidgetNames(): string[] {\n    return Array.from(this.widgets.keys());\n  }\n\n  notifyWidgetDirtyChanged(): void {\n    this.dirtyWidgetsRevision.update((value) => value + 1);\n  }\n\n  ngOnDestroy(): void {}\n}\n","import { AXPOptionsData, AXPValidationRule, AXPValidationRules, extractValue, isFormValueEqual, isSelectionValueEqual } from '@acorex/platform/contracts';\nimport { AXP_WIDGET_COLUMN_TOKEN, AXP_WIDGET_TOKEN, AXPWidgetNode, AXPWidgetNodeToken, AXPWidgetRenderMode, AXPWidgetStatus } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXDataSource, AXValueChangedEvent, convertArrayToDataSource } from '@acorex/cdk/common';\n\nimport { AXPContextStore, AXPDataSourceQueryService, AXPDebugService, FORM_DIRTY_TRACE_NS } from '@acorex/platform/core';\nimport {\n  ComponentRef,\n  computed,\n  DestroyRef,\n  effect,\n  ElementRef,\n  inject,\n  Injectable,\n  OnInit,\n  signal,\n  untracked,\n} from '@angular/core';\nimport { cloneDeep, get, isEqual, isNil, isObjectLike, isUndefined } from 'lodash-es';\nimport { BehaviorSubject, Subject } from 'rxjs';\n\nimport { AXPWidgetCoreElement, AXPWidgetCoreService } from './widget-core.service';\n\nexport type AXPClassMap = Readonly<Record<string, boolean>>;\nexport type AXPStyleMap = Readonly<Record<string, string | number>>;\n\n@Injectable()\nexport abstract class AXPBaseWidgetComponent<\n  TOptions extends Record<string, unknown> = AXPOptionsData,\n> extends AXPWidgetCoreElement implements OnInit {\n  protected readonly token: AXPWidgetNodeToken<TOptions> = inject(AXP_WIDGET_TOKEN) as AXPWidgetNodeToken<TOptions>;\n  public readonly host = inject(ElementRef).nativeElement as HTMLDivElement;\n\n  protected readonly layoutService = inject(AXPWidgetCoreService);\n  protected readonly contextService = inject(AXPContextStore);\n\n  /** Unregisters this widget from the container registry when the instance is destroyed. */\n  readonly #unregisterFromLayoutOnDestroy = inject(DestroyRef).onDestroy(() => {\n    const registrationId = this._id ?? this.name;\n    if (registrationId) {\n      this.layoutService.unregisterWidget(registrationId);\n    }\n    if (this.hydrationDepth > 0) {\n      this.hydrationDepth = 0;\n      this._isHydrating.set(false);\n      this.layoutService.notifyWidgetStateChanged();\n    }\n  });\n\n  public readonly config = this.token.config;\n  public readonly node = this.token.node;\n\n  protected readonly name = this.token.node.name;\n\n  protected component = this;\n\n  protected _id: string | null;\n  public get id(): string | null {\n    return this._id;\n  }\n\n  protected _options = signal<TOptions>(this.token.options ?? ({} as TOptions));\n  public options = this._options.asReadonly();\n\n  public onOptionsChanged = new Subject<{ sender: AXPBaseWidgetComponent }>();\n\n  private _status = signal<AXPWidgetStatus>(AXPWidgetStatus.Rendering);\n  public status = this._status.asReadonly();\n\n  public readonly onStatusChanged = new BehaviorSubject<AXPWidgetStatus>(this._status());\n\n  /** Depth counter so nested async hydration calls share one busy state. */\n  private hydrationDepth = 0;\n  private _isHydrating = signal(false);\n  public isHydrating = this._isHydrating.asReadonly();\n\n  #statusEffect = effect(() => {\n    this.onStatusChanged.next(this.status());\n  });\n\n  public isBusy = computed(\n    () => this.status() === AXPWidgetStatus.Rendering || this.isHydrating(),\n  );\n\n  parent: AXPLayoutBaseWidgetComponent<any> | null | undefined;\n  parentComponent: ComponentRef<any> | null | undefined;\n\n  parentElement: HTMLElement | null | undefined;\n  index: number | null | undefined;\n  mode: AXPWidgetRenderMode;\n  locked: boolean;\n\n  protected outputs(): (string | { [name: string]: unknown })[] {\n    return [];\n  }\n\n  ngOnInit(): void {\n    if (get(this.node, '__meta__.added')) {\n      this.onAdded();\n    }\n    this.setStatus(AXPWidgetStatus.Rendered);\n  }\n\n  public setStatus(status: AXPWidgetStatus) {\n    this._status.set(status);\n    this.layoutService.notifyWidgetStateChanged();\n  }\n\n  /** Marks async data loading (lookup, select, file fetch, etc.). */\n  protected beginHydration(): void {\n    this.hydrationDepth += 1;\n    if (this.hydrationDepth === 1) {\n      this._isHydrating.set(true);\n      this.layoutService.notifyWidgetStateChanged();\n    }\n  }\n\n  /** Clears hydration started by {@link beginHydration}. */\n  protected endHydration(): void {\n    if (this.hydrationDepth <= 0) {\n      return;\n    }\n    this.hydrationDepth -= 1;\n    if (this.hydrationDepth === 0) {\n      this._isHydrating.set(false);\n      this.layoutService.notifyWidgetStateChanged();\n    }\n  }\n\n  public setOptions(values: Partial<TOptions>): void {\n    const oldValue = this.options();\n    const value = cloneDeep(values);\n    this._options.set({ ...oldValue, ...value } as TOptions);\n    this.onOptionsChanged.next({ sender: this });\n  }\n\n  output<T = any>(name: string): T {\n    const outputs = this.outputs().map((c) => (typeof c == 'string' ? { name: c, value: c } : c)) as {\n      name: string;\n      value: unknown;\n    }[];\n\n    if (outputs.some((c) => c.name == name)) {\n      const opt = outputs.find((c) => c.name == name)?.value;\n      if (typeof opt == 'function') {\n        return opt();\n      }\n      return opt as T;\n    }\n    return null as T;\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  protected readonly _children = signal(this.token.node.children ?? []);\n  protected children = this._children.asReadonly();\n\n  setChildren(children: AXPWidgetNode[]) {\n    this._children.set([...children]);\n  }\n\n  onAdded() { }\n\n  hostClass?(): AXPClassMap;\n  hostStyle?(): AXPStyleMap;\n}\n\n@Injectable()\nexport abstract class AXPLayoutBaseWidgetComponent<\n  TOptions extends AXPOptionsData = AXPOptionsData,\n> extends AXPBaseWidgetComponent<TOptions> {\n  //TODO change this approach\n  override ngOnInit(): void {\n    if (this.name && !(this instanceof AXPValueWidgetComponent)) {\n      this.layoutService.registerWidget(this.name, this);\n    }\n\n    super.ngOnInit();\n  }\n}\n\n@Injectable()\nexport abstract class AXPValueWidgetComponent<T = any | null, TOptions extends AXPOptionsData = AXPOptionsData>\n  extends AXPLayoutBaseWidgetComponent<TOptions>\n  implements OnInit {\n  protected readonly path = this.token.node.path;\n  protected readonly defaultValue = this.token.defaultValue ?? this.token.node.defaultValue;\n\n  private _isValueWidget = false;\n  private isValueWidget = () => this._isValueWidget;\n\n  public onValueChanged = new Subject<{ sender: AXPBaseWidgetComponent }>();\n\n  public fullPath = signal<string | null>(null);\n  public parentPath = signal<string | null>(null);\n\n  override ngOnInit() {\n    this._isValueWidget = this.config.properties?.some((c) => c.name == 'path') ?? false;\n    if (this.isValueWidget()) {\n      this.detectFullPath();\n      // Set defaultValue if it exists and the path doesn't exist in context\n      if (!isNil(this.defaultValue) && this.fullPath() && !this.contextService.hasValue(this.fullPath()!)) {\n        this.applyDefaultValue(this.defaultValue);\n      }\n    }\n    //\n    super.ngOnInit();\n  }\n\n  public getValue = computed<T>(\n    () => {\n      return this.fullPath() ? this.extractValue(this.fullPath()!) : null;\n    },\n    { equal: isEqual },\n  );\n\n  protected validationRules = computed<AXPValidationRules>(() => {\n    const validationsRaw = this.options()['validations'];\n    if (validationsRaw == null) {\n      return [];\n    }\n    return Object.values(this.options()['validations'])\n      .filter((c) => c != null)\n      .map(\n        (c: any) =>\n          ({\n            rule: c.rule,\n            message: c.message,\n            options: c.options,\n          }) as AXPValidationRule,\n      );\n  });\n\n  protected extractValue(path: string): any {\n    const rawValue = this.contextService.getValue(path);\n    if (this.node.valueTransforms?.getter) {\n      return this.node.valueTransforms?.getter(rawValue);\n    }\n    return rawValue;\n  }\n\n  /** Applies schema default without marking the form as user-edited. */\n  protected applyDefaultValue(value: T | null | undefined) {\n    if (this.node.valueTransforms?.setter) {\n      value = this.node.valueTransforms?.setter(value);\n    }\n    const path = this.fullPath();\n    if (!path) {\n      return;\n    }\n\n    value = isUndefined(value) ? null : value;\n    if (isNil(value)) {\n      return;\n    }\n\n    this.contextService.update(path, value, { origin: 'system' });\n    this.onValueChanged.next({ sender: this });\n  }\n\n  setValue(value: T | null | undefined) {\n    if (this.node.valueTransforms?.setter) {\n      value = this.node.valueTransforms?.setter(value);\n    }\n    const path = this.fullPath();\n    if (!path) {\n      return;\n    }\n\n    const oldValue = this.getValue();\n    value = isUndefined(value) ? null : value;\n    if (isNil(value) && isNil(oldValue)) {\n      return;\n    }\n\n    const savedAtPath = this.contextService.getSavedValue(path);\n    const widgetName = this.name ?? this._id ?? 'value-widget';\n\n    if (\n      this.contextService.isSavedCommitted() &&\n      isSelectionValueEqual(value, savedAtPath) &&\n      !isFormValueEqual(value, savedAtPath)\n    ) {\n      AXPDebugService.instance?.trace(FORM_DIRTY_TRACE_NS, widgetName, 'setValue restore saved shape', () => ({\n        path,\n        widget: widgetName,\n        incomingValue: value,\n        savedAtPath,\n        oldValue,\n      }));\n      this.contextService.update(path, cloneDeep(savedAtPath), { origin: 'system' });\n      this.onValueChanged.next({ sender: this });\n      return;\n    }\n\n    // Reordered arrays must persist even when items are deep-equal (e.g. empty row objects).\n    const isArrayReorder =\n      Array.isArray(oldValue) &&\n      Array.isArray(value) &&\n      oldValue.length === value.length &&\n      oldValue.some((v, i) => v !== value[i]);\n\n    const isArrayLengthChange =\n      Array.isArray(value) && (!Array.isArray(oldValue) || value.length !== oldValue.length);\n\n    if (!isArrayReorder && !isArrayLengthChange && isFormValueEqual(oldValue, value)) {\n      AXPDebugService.instance?.trace(FORM_DIRTY_TRACE_NS, widgetName, 'setValue skipped (isFormValueEqual)', () => ({\n        path,\n        widget: widgetName,\n        value,\n        oldValue,\n        savedAtPath,\n        selectionEqualToSaved: this.contextService.isSavedCommitted()\n          ? isSelectionValueEqual(value, savedAtPath)\n          : null,\n      }));\n      return;\n    }\n\n    AXPDebugService.instance?.trace(FORM_DIRTY_TRACE_NS, widgetName, 'setValue user update', () => ({\n      path,\n      widget: widgetName,\n      value,\n      oldValue,\n      savedAtPath,\n      selectionEqualToSaved: this.contextService.isSavedCommitted()\n        ? isSelectionValueEqual(value, savedAtPath)\n        : null,\n      formValueEqualToSaved: this.contextService.isSavedCommitted()\n        ? isFormValueEqual(value, savedAtPath)\n        : null,\n    }));\n\n    this.contextService.update(path, value, { origin: 'user' });\n    this.onValueChanged.next({ sender: this });\n  }\n\n  protected detectFullPath() {\n    const sections = [];\n    const ids = [];\n    //\n    let parent: AXPLayoutBaseWidgetComponent<any> | null | undefined = this as AXPLayoutBaseWidgetComponent<any>;\n    //\n    while (parent) {\n      const isValueWidget = parent instanceof AXPValueWidgetComponent && parent.isValueWidget();\n      const valueParent = parent as AXPValueWidgetComponent<any, any>;\n      const path = valueParent.path ?? (isValueWidget ? valueParent.name : null);\n      const id = valueParent.name;\n      //\n      if (path) {\n        sections.push(path);\n      }\n      if (parent.index != null && isValueWidget) {\n        sections.push(`[${parent.index}]`);\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.set(sections.reverse().join('.'));\n    this.parentPath.set(sections.slice(0, sections.length - 1).join('.'));\n    this._id = this.name || this.parent ? ids.reverse().join('_') : null;\n    if (this._id) {\n      this.layoutService.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\nexport abstract class AXPDataListWidgetComponent extends AXPValueWidgetComponent<any> {\n  protected readonly registryDataSourceQuery = inject(AXPDataSourceQueryService);\n\n  protected textField = computed<string>(() => this.options()['textField'] ?? 'title');\n  protected valueField = computed<string>(() => (this.options()['valueField'] as string) ?? 'id');\n  protected textTemplate = computed<string | undefined>(() =>\n    isNil(this.options()['textTemplate'])\n      ? undefined\n      : (this.options()['textTemplate'] as string).replace(/{/g, '{{').replace(/}/g, '}}'),\n  );\n\n  protected dataSource = signal<AXDataSource<any>>(convertArrayToDataSource<any>([]));\n\n  /** Registry datasource name from options, when options.dataSource is a string or `{ id }` object. */\n  protected registryDataSourceName = computed<string | null>(() => {\n    const rawValue = this.options()['dataSource'];\n    if (typeof rawValue === 'string') {\n      return rawValue;\n    }\n    if (rawValue && typeof rawValue === 'object' && 'id' in (rawValue as Record<string, unknown>)) {\n      return String((rawValue as Record<string, unknown>)['id']);\n    }\n    return null;\n  });\n\n  public selectedItems = signal<any[]>([]);\n\n  /** Reactive flag: registry datasource finished resolving (success or failure). */\n  protected registryDataSourceReady = signal(false);\n\n  /** Reactive bump to reload registry-backed datasources (e.g. after locale change). */\n  protected readonly registryRefreshEpoch = signal(0);\n\n  //#region ----   DataSource Loading Effect   ----\n\n  /**\n   * Track the last loaded string dataSource reference to prevent infinite loops\n   * Only used for string-based datasources (not arrays or AXDataSource instances)\n   */\n  private lastStringDataSourceRef: string | null = null;\n\n  private buildRegistryQueryOptions() {\n    return {\n      valueField: this.valueField(),\n      useSamples: this.mode === 'designer',\n    };\n  }\n\n  private rf = effect(async () => {\n    const rawValue = this.options()['dataSource'];\n    const registryId = this.registryDataSourceName();\n    this.registryRefreshEpoch();\n\n    // For string datasources: prevent infinite loop by checking reference\n    if (typeof rawValue === 'string') {\n      if (rawValue === this.lastStringDataSourceRef) {\n        if (registryId) {\n          this.registryDataSourceReady.set(true);\n        }\n        return;\n      }\n      this.lastStringDataSourceRef = rawValue;\n    } else {\n      // Reset string reference when dataSource changes to non-string\n      this.lastStringDataSourceRef = null;\n    }\n\n    if (registryId) {\n      this.registryDataSourceReady.set(false);\n    }\n\n    this.beginHydration();\n    try {\n      // Process dataSource creation in untracked context\n      await untracked(async () => {\n        if (rawValue instanceof AXDataSource) {\n          // For AXDataSource instances, check if config changed\n          if (!isEqual(rawValue.config, this.dataSource().config)) {\n            this.dataSource.set(rawValue);\n          }\n          this.registryDataSourceReady.set(true);\n        }\n        // static array datasource - always recreate when options change\n        else if (Array.isArray(rawValue)) {\n          const ds = new AXDataSource({\n            key: this.valueField(),\n            pageSize: 10,\n            load: async (e: any) => {\n              const raw = this.options()['dataSource'];\n              const skip = e.skip ?? 0;\n              const take = e.take ?? raw.length;\n              return {\n                items: raw.slice(skip, skip + take),\n                total: raw.length,\n              };\n            },\n            byKey: (key: unknown) => {\n              const raw = this.options()['dataSource'];\n              const item = raw.filter((c: any) => c[this.valueField()] == key);\n              return Promise.resolve(item[0]) as any;\n            },\n          });\n          this.dataSource.set(ds);\n          this.registryDataSourceReady.set(true);\n        }\n        // resolve data source by name (string or object with id)\n        else if (registryId) {\n          const queryOptions = this.buildRegistryQueryOptions();\n          const result = await this.registryDataSourceQuery.resolve(registryId, queryOptions);\n          if (result.dataSource) {\n            this.dataSource.set(this.isolateRegistryDataSource(result.dataSource));\n          } else {\n            this.dataSource.set(convertArrayToDataSource<any>([]));\n          }\n          this.registryDataSourceReady.set(true);\n        }\n        // empty datasource\n        else {\n          this.dataSource.set(convertArrayToDataSource<any>([]));\n          this.registryDataSourceReady.set(true);\n        }\n      });\n    } finally {\n      this.endHydration();\n    }\n  });\n\n  //#endregion\n\n  /**\n   * Registry datasources are cached globally; each widget needs its own {@link AXDataSource}\n   * instance so per-widget filters (e.g. cascade parent id) do not leak across fields.\n   */\n  private isolateRegistryDataSource(source: AXDataSource<any>): AXDataSource<any> {\n    const config = source.config;\n    if (!config?.load) {\n      return source;\n    }\n\n    const originalLoad = config.load.bind(source);\n    const originalByKey = config.byKey?.bind(source);\n\n    return new AXDataSource({\n      pageSize: config.pageSize,\n      key: config.key,\n      load: (event) => originalLoad(event),\n      byKey: originalByKey ? (key) => originalByKey(key) : undefined,\n    });\n  }\n\n  /** Invalidates cached registry datasource and forces a reload on the next effect run. */\n  protected refreshRegistryDataSource(): void {\n    const registryId = this.registryDataSourceName();\n    if (!registryId) {\n      return;\n    }\n    this.registryDataSourceQuery.invalidate(registryId);\n    this.lastStringDataSourceRef = null;\n    this.registryDataSourceReady.set(false);\n    this.registryRefreshEpoch.update((epoch) => epoch + 1);\n  }\n\n  protected async extractItem(item: unknown): Promise<any> {\n    if (isNil(item)) {\n      return null;\n    }\n    if (isObjectLike(item) && get(item, this.textField()) != null) {\n      return item;\n    }\n    const key = extractValue(item, this.valueField());\n    const registryName = this.registryDataSourceName();\n    if (registryName) {\n      const found = await this.registryDataSourceQuery.queryByKey(registryName, key, this.buildRegistryQueryOptions());\n      if (found) {\n        return found;\n      }\n    }\n    const ds = this.dataSource();\n    if (ds.config?.byKey) {\n      const found = await ds.config?.byKey(key);\n      if (found) {\n        return found;\n      }\n    }\n    return isObjectLike(item)\n      ? item\n      : {\n        [this.valueField()]: item,\n        [this.textField()]: item,\n      };\n  }\n\n  /**\n   * Value used to resolve `selectedItems`. Defaults to the stored value, but\n   * widgets that wrap their value (e.g. filter mode) can override this to expose\n   * the unwrapped scalar/array so item resolution receives a real key.\n   */\n  protected resolveSelectedItemsValue(): any {\n    return this.getValue();\n  }\n\n  private effect2 = effect(() => {\n    const registryName = this.registryDataSourceName();\n    const value = this.resolveSelectedItemsValue();\n    const registryReady = this.registryDataSourceReady();\n    this.dataSource();\n\n    if (registryName && !registryReady) {\n      return;\n    }\n\n    const resolveSelectedItems = async () => {\n      this.beginHydration();\n      try {\n        const items: any[] = [];\n        if (Array.isArray(value)) {\n          items.push(...(await Promise.all(value.map((item: any) => this.extractItem(item)))));\n        } else {\n          items.push(await this.extractItem(value));\n        }\n        this.selectedItems.set(items.filter((c) => c != null));\n      } finally {\n        this.endHydration();\n      }\n    };\n\n    void resolveSelectedItems();\n  });\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  /** Column header caption when rendered inside `axp-widget-column-renderer`. */\n  protected readonly columnCaption = this.token.caption;\n  protected readonly rawValue: T = null as T;\n  protected readonly rowData: any;\n  protected readonly nullText: any = this.options['nullText'] as string;\n  protected readonly nullValue: T = this.options['nullValue'] as T;\n\n  protected value = () => {\n    if (isNil(this.rawValue) && !isNil(this.nullValue)) {\n      return this.nullValue;\n    }\n    return this.rawValue;\n  };\n}\n","import { computed, Injectable } from '@angular/core';\nimport { AXPBorderBoxString, AXPSpacingBoxString } from '../helper';\nimport { AXPClassMap, AXPLayoutBaseWidgetComponent, AXPStyleMap } from '../widget-base.component';\n\n@Injectable()\nexport abstract class AXPBoxModelLayoutWidgetComponent extends AXPLayoutBaseWidgetComponent {\n  public hostBoxStyle = computed<AXPStyleMap>(() => {\n    const options = this.options();\n\n    const style: Record<string, string | number> = {};\n\n    const spacing = options?.['spacing'] as AXPSpacingBoxString | undefined;\n    const border = options?.['border'] as AXPBorderBoxString | undefined;\n\n    const backgroundColor = options?.['backgroundColor'] as string | undefined;\n    const direction = options?.['direction'] as string | undefined;\n\n    const overflow = options?.['overflow'] as string | undefined;\n    const overflowX = options?.['overflowX'] as string | undefined;\n    const overflowY = options?.['overflowY'] as string | undefined;\n\n    style['background-color'] = backgroundColor ?? '';\n    style['padding'] = spacing?.padding ?? '';\n    style['margin'] = spacing?.margin ?? '';\n\n    style['border-radius'] = border?.radius ?? '';\n    style['border-width'] = border?.width ?? '';\n    style['border-color'] = border?.color ?? '';\n    style['border-style'] = border?.style ?? '';\n\n    style['overflow'] = overflow ?? '';\n    style['overflow-x'] = overflowX ?? '';\n    style['overflow-y'] = overflowY ?? '';\n\n    style['direction'] = direction ?? '';\n\n    return style;\n  });\n\n  protected blockStyle = computed<AXPStyleMap>(() => {\n    const options = this.options();\n\n    const style: Record<string, string | number> = { ...this.hostBoxStyle() };\n\n    const width = options?.['width'] as string | undefined;\n    const minWidth = options?.['minWidth'] as string | undefined;\n    const maxWidth = options?.['maxWidth'] as string | undefined;\n\n    const height = options?.['height'] as string | undefined;\n    const minHeight = options?.['minHeight'] as string | undefined;\n    const maxHeight = options?.['maxHeight'] as string | undefined;\n\n    style['min-width'] = minWidth ?? '';\n    style['width'] = width ?? '';\n    style['max-width'] = maxWidth ?? '';\n\n    style['min-height'] = minHeight ?? '';\n    style['height'] = height ?? '';\n    style['max-height'] = maxHeight ?? '';\n\n    return style;\n  });\n\n  protected inlineStyle = computed<AXPStyleMap>(() => {\n    return { ...this.hostBoxStyle() };\n  });\n\n  protected blockClass = computed<AXPClassMap>(() => {\n    return {\n      'ax-block': true,\n      'ax-w-full': true,\n      // 'ax-widget-outline': true,\n    };\n  });\n\n  protected inlineClass = computed<AXPClassMap>(() => {\n    return {\n      'ax-inline-block': true,\n    };\n  });\n}\n","import { Injectable, computed } from '@angular/core';\nimport { AXPBoxModelLayoutWidgetComponent } from './box-model-widget.component';\n\n@Injectable()\nexport abstract class AXPBlockBaseLayoutWidgetComponent extends AXPBoxModelLayoutWidgetComponent {\n  public override hostClass = computed(() => this.blockClass());\n  public override hostStyle = computed(() => this.blockStyle());\n}\n","import { Injectable, computed } from '@angular/core';\nimport { isNil } from 'lodash-es';\nimport { AXPFlexBoxString } from '../helper';\nimport { AXPBlockBaseLayoutWidgetComponent } from './block-base-widget.component';\n\n@Injectable()\nexport abstract class AXPFlexBaseLayoutWidgetComponent extends AXPBlockBaseLayoutWidgetComponent {\n  protected flex = computed(() => this.options() as AXPFlexBoxString | undefined);\n\n  public hostFlexStyle = computed(() => {\n    const blockStyle = this.blockStyle();\n    const style: Record<string, string | number> = { ...blockStyle };\n    const flex = this.flex();\n    if (isNil(flex?.flexDirection)) {\n      style['flex-direction'] = '';\n    } else {\n      style['flex-direction'] = flex.flexDirection;\n    }\n    if (isNil(flex?.flexWrap)) {\n      style['flex-wrap'] = '';\n    } else {\n      style['flex-wrap'] = flex.flexWrap;\n    }\n    //TODO NEED TO FIX LATER\n    style['overflow'] = flex?.flexWrap === 'nowrap' ? 'auto' : '';\n    //END\n    if (isNil(flex?.justifyContent)) {\n      style['justify-content'] = '';\n    } else {\n      style['justify-content'] = flex.justifyContent;\n    }\n    if (isNil(flex?.alignItems)) {\n      style['align-items'] = '';\n    } else {\n      style['align-items'] = flex.alignItems;\n    }\n    if (isNil(flex?.gap)) {\n      style['gap'] = '';\n    } else {\n      style['gap'] = flex.gap;\n    }\n    return style;\n  });\n\n  public hostFlexClass = computed<Record<string, boolean>>(() => {\n    return {\n      ...this.blockClass(),\n      'ax-flex': true,\n      'ax-h-full': true,\n    };\n  });\n\n  public override hostClass = computed(() => {\n    return this.hostFlexClass();\n  });\n\n  public override hostStyle = computed(() => {\n    return this.hostFlexStyle();\n  });\n}\n","import { computed, Injectable } from '@angular/core';\nimport { AXPBoxModelLayoutWidgetComponent } from './box-model-widget.component';\n\n@Injectable()\nexport abstract class AXPInlineBaseLayoutWidgetComponent extends AXPBoxModelLayoutWidgetComponent {\n  public override hostClass = computed(() => this.inlineClass());\n  public override hostStyle = computed(() => this.inlineStyle());\n}\n","import { Injectable, computed } from '@angular/core';\nimport { isNil } from 'lodash-es';\nimport { AXPFlexItemBoxString } from '../helper';\nimport { AXPInlineBaseLayoutWidgetComponent } from './inline-base-widget.component';\n\n@Injectable()\nexport abstract class AXPFlexItemBaseLayoutWidgetComponent extends AXPInlineBaseLayoutWidgetComponent {\n  protected flexItem = computed(() => this.options() as AXPFlexItemBoxString | undefined);\n\n  public hostFlexItemStyle = computed(() => {\n    const inlineStyle = this.blockStyle();\n    const style: Record<string, string | number> = { ...inlineStyle };\n    const fi = this.flexItem();\n    if (isNil(fi?.order)) {\n      style['order'] = '';\n    } else {\n      style['order'] = fi.order;\n    }\n    if (isNil(fi?.grow)) {\n      style['flex-grow'] = '';\n    } else {\n      style['flex-grow'] = fi.grow;\n    }\n    if (isNil(fi?.shrink)) {\n      style['flex-shrink'] = '';\n    } else {\n      style['flex-shrink'] = fi.shrink;\n    }\n    if (isNil(fi?.basis)) {\n      style['flex-basis'] = '';\n    } else {\n      style['flex-basis'] = fi.basis;\n    }\n    if (isNil(fi?.alignSelf)) {\n      style['align-self'] = '';\n    } else {\n      style['align-self'] = fi.alignSelf;\n    }\n    return style;\n  });\n\n  public hostFlexItemClass = computed(() => {\n    return {\n      ...this.blockClass(),\n    };\n  });\n\n  public override hostClass = computed(() => {\n    return this.hostFlexItemClass();\n  });\n\n  public override hostStyle = computed(() => {\n    return this.hostFlexItemStyle();\n  });\n}\n","import { Injectable, computed } from '@angular/core';\nimport { AXPGridBreakpointValues } from '../helper';\nimport { AXPBlockBaseLayoutWidgetComponent } from './block-base-widget.component';\n\n@Injectable()\nexport abstract class AXPGridBaseLayoutWidgetComponent extends AXPBlockBaseLayoutWidgetComponent {\n  private grid = computed(() => this.options()?.['grid'] as AXPGridBreakpointValues | undefined);\n\n  public hostGridStyle = computed(() => {\n    const style: Record<string, string | number> = { ...this.inlineStyle() };\n    const g = this.grid()?.default;\n\n    if (g?.gap) style['gap'] = g.gap;\n\n    return style;\n  });\n\n  public hostGridClass = computed(() => {\n    const cls: Record<string, boolean> = {\n      ...this.inlineClass(),\n      'ax-grid': true,\n    };\n\n    const g = this.grid()?.default;\n\n    if (g?.columns) cls[`lg:ax-grid-cols-${g.columns}`] = true;\n    // if (g?.rows) cls[`lg:ax-grid-rows-${g.rows}`] = true;\n    if (g?.justifyItems) cls[`lg:ax-justify-items-${g.justifyItems}`] = true;\n    if (g?.alignItems) cls[`lg:ax-align-items-${g.alignItems}`] = true;\n    if (g?.autoFlow) cls[`lg:ax-grid-flow-${g.autoFlow}`] = true;\n\n    return cls;\n  });\n\n  public override hostClass = computed(() => this.hostGridClass());\n  public override hostStyle = computed(() => this.hostGridStyle());\n}\n","import { Injectable, computed } from '@angular/core';\nimport { AXPGridItemBoxString } from '../helper/property-editor.type';\nimport { AXPFlexBaseLayoutWidgetComponent } from './flex-base-widget.component';\n\n@Injectable()\nexport abstract class AXPGridItemBaseLayoutWidgetComponent extends AXPFlexBaseLayoutWidgetComponent {\n  private gridItem = computed(() => this.options() as AXPGridItemBoxString | undefined);\n\n  public hostGridItemStyle = computed(() => {\n    const style: Record<string, string | number> = { ...this.hostFlexStyle() };\n    const g = this.gridItem();\n\n    if (g?.alignSelf) style['align-self'] = g.alignSelf;\n    if (g?.justifySelf) style['justify-self'] = g.justifySelf;\n\n    return style;\n  });\n\n  public hostGridItemClass = computed(() => {\n    const cls: Record<string, boolean> = { ...this.hostFlexClass() };\n    const g = this.gridItem();\n\n    // Mobile-first: full width on small screens so items stack vertically and don't overflow\n    cls['ax-col-span-12'] = true;\n    // Large screens: apply defined placement so multi-column layout works on desktop\n    if (g?.colSpan) cls[`lg:ax-col-span-${g.colSpan}`] = true;\n    if (g?.colStart) cls[`lg:ax-col-start-${g.colStart}`] = true;\n    if (g?.colEnd) cls[`lg:ax-col-end-${g.colEnd}`] = true;\n\n    if (g?.rowSpan) cls[`lg:ax-row-span-${g.rowSpan}`] = true;\n    if (g?.rowStart) cls[`lg:ax-row-start-${g.rowStart}`] = true;\n    if (g?.rowEnd) cls[`lg:ax-row-end-${g.rowEnd}`] = true;\n\n    return cls;\n  });\n\n  public override hostClass = computed(() => this.hostGridItemClass());\n  public override hostStyle = computed(() => this.hostGridItemStyle());\n}\n","import { Injectable, computed } from '@angular/core';\nimport { AXPBlockBaseLayoutWidgetComponent } from './block-base-widget.component';\n\n@Injectable()\nexport abstract class AXPTableBaseLayoutWidgetComponent extends AXPBlockBaseLayoutWidgetComponent {\n  public hostTableClass = computed(() => ({\n    ...this.blockClass(),\n  }));\n\n  public hostTableStyle = computed(() => {\n    const style: Record<string, string | number> = { ...this.blockStyle() };\n    style['overflow-x'] = 'auto';\n    return style;\n  });\n\n  public override hostClass = computed(() => this.hostTableClass());\n  public override hostStyle = computed(() => this.hostTableStyle());\n}\n","import { Injectable } from '@angular/core';\nimport { AXPBlockBaseLayoutWidgetComponent } from './block-base-widget.component';\n\n@Injectable()\nexport abstract class AXPTableItemOpsBaseLayoutWidgetComponent extends AXPBlockBaseLayoutWidgetComponent {\n  // Columns (relative to current cell)\n  abstract insertColumnLeft(): void;\n  abstract insertColumnRight(): void;\n\n  // Rows relative to current cell\n  abstract insertRowAbove(): void;\n  abstract insertRowBelow(): void;\n\n  // Cell-level insert operations (relative to current cell)\n  abstract insertCellShiftRight(): void; // insert to the left of target, shift right, increase columns\n  abstract insertCellShiftDown(): void; // insert above target row, shift down, increase rows\n}\n","import { Injectable, computed } from '@angular/core';\nimport { AXPTableItemOpsBaseLayoutWidgetComponent } from './table-item-ops-base-widget.component';\n\n@Injectable()\nexport abstract class AXPTableItemBaseLayoutWidgetComponent extends AXPTableItemOpsBaseLayoutWidgetComponent {\n  protected colSpan = computed<number>(() => {\n    const v = (this.options() as any)?.colSpan as number | undefined;\n    return v ? Math.max(1, v) : 1;\n  });\n  protected rowSpan = computed<number>(() => {\n    const v = (this.options() as any)?.rowSpan as number | undefined;\n    return v ? Math.max(1, v) : 1;\n  });\n\n  public override hostClass = computed(() => this.blockClass());\n  public override hostStyle = computed(() => this.blockStyle());\n}\n","//#region ----   Imports   ----\n\nimport { InjectionToken } from '@angular/core';\nimport type { AXPExtendedWidget, AXPWidgetConfig } from '@acorex/platform/layout/widget-core-contracts';\n\n//#endregion\n\n//#region ----   Token & Interface   ----\n\n/**\n * Provider interface for widget definitions.\n * Implement this interface and register via AXP_WIDGET_DEFINITION_PROVIDER to contribute widgets.\n */\nexport interface AXPWidgetDefinitionProvider {\n  getWidgets(): AXPWidgetConfig[];\n  getExtendedWidgets?(): AXPExtendedWidget[];\n}\n\n/**\n * Injection token for widget definition providers.\n * Modules register their widget providers using this token (multi: true).\n */\nexport const AXP_WIDGET_DEFINITION_PROVIDER = new InjectionToken<AXPWidgetDefinitionProvider[]>(\n  'AXP_WIDGET_DEFINITION_PROVIDER',\n  {\n    factory: () => [],\n  }\n);\n\n//#endregion\n","import { inject, Injectable } from '@angular/core';\nimport { merge } from 'lodash-es';\nimport type { AXPExtendedWidget, AXPWidgetConfig } from '@acorex/platform/layout/widget-core-contracts';\nimport type { AXPWidgetDefinitionProvider } from './widget-definition.provider';\nimport { AXP_WIDGET_DEFINITION_PROVIDER } from './widget-definition.provider';\n\n//#region ----   Build widget map (shared with tooling / snapshot scripts)   ----\n\n//TODO RECHECK THIS FUNCTION s.hosseini\n\n/**\n * Merges core + extended widgets the same way as AXPWidgetRegistryService.ensureBuilt().\n * Use with concrete providers (e.g. AXPCoreWidgetsProvider, AXPEntityWidgetsProvider) in Node scripts without DI.\n */\nexport function buildWidgetRegistryMapFromProviders(\n  providers: AXPWidgetDefinitionProvider[]\n): Map<string, AXPWidgetConfig> {\n  const types = new Map<string, AXPWidgetConfig>();\n  const AXPExtendedWidgets: AXPExtendedWidget[] = [];\n\n  for (const provider of providers) {\n    const widgets = provider.getWidgets?.() ?? [];\n    for (const w of widgets) {\n      types.set(w.name, w);\n    }\n    const extended = provider.getExtendedWidgets?.() ?? [];\n    AXPExtendedWidgets.push(...extended);\n  }\n\n  for (const { parentName, widget } of AXPExtendedWidgets) {\n    const parent = types.get(parentName);\n    if (parent) {\n      const merged = merge({}, parent, widget);\n      merged.name = widget.name;\n      types.set(merged.name, merged);\n    }\n  }\n\n  return types;\n}\n\n//#endregion\n\n//#region ----   Widget Registry Service (Token-Based)   ----\n\n/**\n * Aggregates widgets from all AXP_WIDGET_DEFINITION_PROVIDER instances.\n * Token-based like AXP_MENU_PROVIDER / AXP_PERMISSION_DEFINITION_PROVIDER / AXP_SETTING_DEFINITION_PROVIDER.\n * No separate registry - widgets come solely from providers.\n */\n@Injectable({\n  providedIn: 'root',\n})\nexport class AXPWidgetRegistryService {\n  private readonly _providers = inject(AXP_WIDGET_DEFINITION_PROVIDER, { optional: true }) ?? [];\n  private _types: Map<string, AXPWidgetConfig> | null = null;\n\n  /**\n   * Lazy-build widget map from all providers.\n   */\n  private ensureBuilt(): Map<string, AXPWidgetConfig> {\n    if (this._types) return this._types;\n\n    this._types = buildWidgetRegistryMapFromProviders(this._providers);\n    return this._types;\n  }\n\n  resolve(name: string): AXPWidgetConfig {\n    const widget = this.ensureBuilt().get(name);\n    if (!widget) {\n      throw new Error(`Widget with name \"${name}\" does not exist.`);\n    }\n    return widget;\n  }\n\n  /**\n   * Registered widget config when present; otherwise `undefined`. Does not throw — use when\n   * {@link resolve}'s value may be a non-widget id (e.g. data-source row id in dynamic field configurator).\n   */\n  getOptional(name: string): AXPWidgetConfig | undefined {\n    return this.ensureBuilt().get(name);\n  }\n\n  all(): AXPWidgetConfig[] {\n    return Array.from(this.ensureBuilt().values());\n  }\n}\n\n//#endregion\n","import { AXBaseDataTable, AXDataTableColumnComponent } from '@acorex/components/data-table';\nimport { getSmart } from '@acorex/platform/contracts';\nimport { AXPExpressionEvaluatorService, AXPExpressionEvaluatorScope } from '@acorex/platform/core';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  Injector,\n  Input,\n  OnChanges,\n  Output,\n  TemplateRef,\n  ViewChild,\n  inject,\n  signal,\n} from '@angular/core';\nimport { merge, get } from 'lodash-es';\nimport { AXPWidgetCoreService } from './widget-core.service';\nimport { AXPWidgetRegistryService } from './widget-registery.service';\nimport { AXP_WIDGET_COLUMN_TOKEN, AXPWidgetColumnNode } from '@acorex/platform/layout/widget-core-contracts';\n\n@Component({\n  selector: 'axp-widget-column-renderer',\n  styleUrls: ['./widget-column-renderer.scss'],\n  template: `\n    <ng-template #header>\n      <div\n        class=\"axp-widget-column-header ax-w-full ax-flex ax-items-center ax-select-none\"\n        [class.axp-widget-column-header--sortable]=\"sortEnabled\"\n        [class.axp-widget-column-header--sort-active]=\"headerSortDirection === 'asc' || headerSortDirection === 'desc'\"\n        [class.ax-gap-1]=\"!sortEnabled\"\n        [style.justify-content]=\"sortEnabled ? 'flex-start' : getHeaderJustifyContent()\"\n        (click)=\"onHeaderClick($event)\"\n      >\n        <span\n          class=\"axp-widget-column-header__caption ax-truncate\"\n          [class.axp-widget-column-header__caption--with-sort]=\"sortEnabled\"\n          [style.text-align]=\"sortEnabled ? getHeaderTextAlign() : null\"\n        >{{ caption | translate | async }}</span>\n        @if (sortEnabled) {\n          <span class=\"axp-widget-column-header__sort ax-flex ax-items-center ax-gap-0.5 ax-shrink-0\">\n            @if (headerSortPriority !== undefined && headerSortPriority > 1) {\n              <span class=\"axp-widget-column-header__sort-priority ax-text-xs ax-opacity-70\">{{ headerSortPriority }}</span>\n            }\n            <i\n              class=\"fa-solid fa-arrow-up-long ax-text-neutral-400\"\n              [class.ax-text-primary]=\"headerSortDirection === 'asc'\"\n            ></i>\n            <i\n              class=\"fa-solid fa-arrow-down-long ax-text-neutral-400\"\n              [class.ax-text-primary]=\"headerSortDirection === 'desc'\"\n            ></i>\n          </span>\n        }\n      </div>\n    </ng-template>\n    <ng-template #cell let-row>\n      <div\n        class=\"ax-w-full\"\n        [class.ax-flex]=\"getCellUseFlexLayout()\"\n        [class.ax-gap-2]=\"expandHandler\"\n        [class.ax-items-center]=\"getCellUseFlexLayout()\"\n        [style.justify-content]=\"getCellJustifyContent()\"\n      >\n        @if (expandHandler) {\n          <div\n            (click)=\"handleExpandRow(row)\"\n            class=\"ax-expand-handler\"\n            [class.ax-invisible]=\"!hasExpandableRow(row)\"\n            id=\"ax-expand-handler-container\"\n            [style.padding-inline-start.rem]=\"row.data?.__meta__?.level * 2\"\n          >\n            @if (loadingRow() === row) {\n              <i class=\"fas fa-spinner-third ax-animate-twSpin ax-animate-infinite\"></i>\n            } @else {\n              @if (row.data?.__meta__?.expanded) {\n                <i [class]=\"customCollapseIcon || 'far fa-minus-square ax-text-md ax-opacity-75'\"></i>\n              } @else {\n                <i [class]=\"customExpandIcon || 'far fa-plus-square ax-text-md  ax-opacity-75'\"></i>\n              }\n            }\n          </div>\n        }\n        @if (component && row?.data) {\n          <ng-container\n            *ngComponentOutlet=\"component; injector: getRowInjector(row.data); inputs: getInputs(row.data)\"\n          ></ng-container>\n        }\n      </div>\n    </ng-template>\n    <ng-template #footer></ng-template>\n  `,\n  providers: [\n    AXPWidgetCoreService,\n    { provide: AXDataTableColumnComponent, useExisting: AXPWidgetColumnRendererComponent },\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: ['caption'],\n  standalone: false,\n})\nexport class AXPWidgetColumnRendererComponent extends AXDataTableColumnComponent implements OnChanges {\n  protected widgetRegistery = inject(AXPWidgetRegistryService);\n  private grid = inject(AXBaseDataTable);\n  private expressionEvaluator = inject(AXPExpressionEvaluatorService);\n\n  @Input() customExpandIcon: string;\n  @Input() customCollapseIcon: string;\n\n  @Input() customWidth: string;\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  protected loadingRow = signal(null);\n  private rowInjectorsCache = new Map<string, Injector>();\n  private hasExpressions = false;\n  private pendingEvaluations = new Set<string>();\n  private changeDetectionScheduled = false;\n  private readonly MAX_CACHE_SIZE = 1000; // Limit cache size to prevent memory leaks\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 expandHandler: boolean;\n\n  /** When true, header click cycles sort (handled by parent; synced with list sort state). */\n  @Input()\n  public sortEnabled = false;\n\n  @Input()\n  public headerSortDirection?: 'asc' | 'desc';\n\n  /** 1-based order when multiple columns are sorted (shown when priority &gt; 1). */\n  @Input()\n  public headerSortPriority?: number;\n\n  /** Pins column to table edge (`start` / `end`). Passed to the underlying data-table column. */\n  @Input()\n  public columnFixed?: 'start' | 'end';\n\n  @Output()\n  public readonly sortToggle = new EventEmitter<MouseEvent>();\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  /**\n   * True when the row should show the expand icon: either hasChild is true (from server/initial load)\n   * or the row has loaded children (e.g. after refreshItemChildren when children go from 0 to 1).\n   */\n  protected hasExpandableRow(row: { data?: Record<string, unknown> }): boolean {\n    const data = row?.data;\n    if (!data) return false;\n    if (data['hasChild'] === true) return true;\n    const children = (data['__meta__'] as Record<string, unknown> | undefined)?.['children'];\n    return Array.isArray(children) && children.length > 0;\n  }\n\n  protected async handleExpandRow(row: any) {\n    this.loadingRow.set(row);\n    await this.grid.expandRow(row);\n    this.loadingRow.set(null);\n    // if (row.data?.__meta__?.expanded === undefined) {\n    //   this.width = `${parseInt(this.width as string) + 24}px`;\n    // }\n  }\n\n  get renderHeaderTemplate(): TemplateRef<unknown> {\n    return this.headerTemplate ?? this._contentHeaderTemplate;\n  }\n\n  //#region ---- Column alignment (header / cell) ----\n\n  /**\n   * Resolves `options.align`: string applies to header and cell; object uses optional `header` / `cell` (default start).\n   * Supports designer select values `{ id: 'center' }`.\n   */\n  protected getHeaderTextAlign(): 'start' | 'center' | 'end' {\n    return this.resolveAlignForSide('header');\n  }\n\n  protected getHeaderJustifyContent(): 'flex-start' | 'center' | 'flex-end' {\n    const align = this.getHeaderTextAlign();\n    if (align === 'center') {\n      return 'center';\n    }\n    if (align === 'end') {\n      return 'flex-end';\n    }\n    return 'flex-start';\n  }\n\n  protected onHeaderClick(event: MouseEvent): void {\n    if (!this.sortEnabled) {\n      return;\n    }\n    event.stopPropagation();\n    this.sortToggle.emit(event);\n  }\n\n  /**\n   * When true, the cell body uses flex so `justify-content` can place content on the main axis.\n   */\n  protected getCellUseFlexLayout(): boolean {\n    return !!this.expandHandler || this.resolveAlignForSide('cell') !== 'start';\n  }\n\n  /**\n   * Flex `justify-content` for the cell wrapper; omit when not using flex layout.\n   */\n  protected getCellJustifyContent(): 'start' | 'center' | 'end' | null {\n    if (!this.getCellUseFlexLayout()) {\n      return null;\n    }\n    return this.resolveAlignForSide('cell');\n  }\n\n  private resolveAlignForSide(side: 'header' | 'cell'): 'start' | 'center' | 'end' {\n    const align = this.mergedOptions().align as unknown;\n    if (align == null || align === '') {\n      return 'start';\n    }\n    if (typeof align === 'string') {\n      return this.normalizeColumnAlignment(align);\n    }\n    if (typeof align === 'object' && !Array.isArray(align)) {\n      const raw = side === 'header' ? (align as { header?: unknown }).header : (align as { cell?: unknown }).cell;\n      return this.normalizeColumnAlignment(raw);\n    }\n    return 'start';\n  }\n\n  private normalizeColumnAlignment(value: unknown): 'start' | 'center' | 'end' {\n    if (value === 'center' || value === 'end' || value === 'start') {\n      return value;\n    }\n    if (value && typeof value === 'object' && 'id' in value) {\n      const id = (value as { id: unknown }).id;\n      if (id === 'center' || id === 'end' || id === 'start') {\n        return id;\n      }\n    }\n    return 'start';\n  }\n\n  //#endregion\n\n  get loadingEnabled(): boolean {\n    return true;\n  }\n\n  get name(): string {\n    return `col-${this.node.path}`;\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\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\n    // Check if options contain expressions (performance optimization)\n    this.hasExpressions = this.checkForExpressions(this.mergedOptions());\n\n    const tokenValue = {\n      path: this.node.path,\n      options: this.mergedOptions(),\n      caption: this.caption,\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    this.width = this.mergedOptions().width === 'auto' ? 'auto' : this.customWidth ? this.customWidth : (this.mergedOptions().width ?? '200px');\n    this.allowResizing = this.mergedOptions().allowResizing || true;\n    this.allowSorting = this.sortEnabled;\n    this.cdr.detectChanges();\n    this.fixed = this.columnFixed;\n  }\n\n  ngOnChanges(): void {\n    this.allowSorting = this.sortEnabled;\n    this.sortOrder = this.headerSortDirection;\n    this.sortIndex = this.headerSortPriority;\n    this.fixed = this.columnFixed;\n    if (this.customWidth) {\n      this.width = this.customWidth;\n    }\n  }\n\n  //#region ----   Performance Optimization Methods   ----\n\n  /**\n   * Check if options contain any expressions that need evaluation\n   */\n  private checkForExpressions(obj: any): boolean {\n    if (typeof obj === 'string') {\n      return this.expressionEvaluator.isExpression(obj);\n    }\n    if (Array.isArray(obj)) {\n      return obj.some((item) => this.checkForExpressions(item));\n    }\n    if (obj && typeof obj === 'object') {\n      return Object.values(obj).some((value) => this.checkForExpressions(value));\n    }\n    return false;\n  }\n\n  /**\n   * Get cache key for row data - optimized to avoid JSON.stringify when possible\n   */\n  private getCacheKey(data: any): string {\n    if (data?.id) {\n      return `row-${data.id}`;\n    }\n    // Use a hash of key properties instead of full JSON.stringify\n    // This is much faster for large objects\n    const keyProps = ['id', 'code', 'name', 'title'];\n    const keyValues = keyProps.map((prop) => data?.[prop]).filter((v) => v != null);\n    if (keyValues.length > 0) {\n      return `row-${keyValues.join('-')}`;\n    }\n    // Fallback to JSON.stringify only if no key properties exist\n    // But limit the stringified size to prevent performance issues\n    try {\n      const str = JSON.stringify(data);\n      return str.length > 1000 ? `row-${str.substring(0, 1000)}` : `row-${str}`;\n    } catch {\n      // If JSON.stringify fails, use a simple hash\n      return `row-${Object.keys(data || {}).length}`;\n    }\n  }\n\n  /**\n   * Schedule change detection (debounced to batch multiple updates)\n   */\n  private scheduleChangeDetection(): void {\n    if (this.changeDetectionScheduled) {\n      return;\n    }\n    this.changeDetectionScheduled = true;\n    // Use requestAnimationFrame for better performance\n    requestAnimationFrame(() => {\n      this.cdr.detectChanges();\n      this.changeDetectionScheduled = false;\n    });\n  }\n\n  /**\n   * Limit cache size using simple FIFO eviction\n   */\n  private evictCacheIfNeeded(): void {\n    if (this.rowInjectorsCache.size >= this.MAX_CACHE_SIZE) {\n      // Remove oldest entries (first 25% of cache)\n      const entriesToRemove = Math.floor(this.MAX_CACHE_SIZE * 0.25);\n      const keysToRemove = Array.from(this.rowInjectorsCache.keys()).slice(0, entriesToRemove);\n      keysToRemove.forEach((key) => this.rowInjectorsCache.delete(key));\n    }\n  }\n\n  //#endregion\n\n  getInputs(data: any): any {\n    return {\n      rawValue: get(data, this.node.path!),\n      rowData: data,\n    };\n  }\n\n  getRowInjector(data: any): Injector {\n    // Optimized cache key generation\n    const cacheKey = this.getCacheKey(data);\n\n    // Check if we have a cached injector for this row\n    let rowInjector = this.rowInjectorsCache.get(cacheKey);\n\n    if (!rowInjector) {\n      // If no expressions in options, use original options directly (performance optimization)\n      if (!this.hasExpressions) {\n        const tokenValue = {\n          path: this.node.path,\n          options: this.mergedOptions(),\n          caption: this.caption,\n        };\n\n        rowInjector = Injector.create({\n          parent: this.injector,\n          providers: [\n            {\n              provide: AXP_WIDGET_COLUMN_TOKEN,\n              useValue: tokenValue,\n            },\n          ],\n        });\n\n        this.evictCacheIfNeeded();\n        this.rowInjectorsCache.set(cacheKey, rowInjector);\n        return rowInjector;\n      }\n\n      // Check if evaluation is already pending for this row\n      if (!this.pendingEvaluations.has(cacheKey)) {\n        this.pendingEvaluations.add(cacheKey);\n\n        // Evaluate expressions in options based on row data\n        const scope: AXPExpressionEvaluatorScope = {\n          ...(data ?? {}),\n          context: {\n            eval: (path: string) => {\n              return getSmart(data, path);\n            },\n          },\n        };\n\n        // Start async evaluation - will update injector when complete\n        this.expressionEvaluator.evaluate(this.mergedOptions(), scope).then((evaluatedOptions) => {\n          // Create injector with evaluated options\n          const tokenValue = {\n            path: this.node.path,\n            options: evaluatedOptions,\n            caption: this.caption,\n          };\n\n          const newInjector = Injector.create({\n            parent: this.injector,\n            providers: [\n              {\n                provide: AXP_WIDGET_COLUMN_TOKEN,\n                useValue: tokenValue,\n              },\n            ],\n          });\n\n          // Replace cached injector to force component recreation on next render\n          this.rowInjectorsCache.delete(cacheKey);\n          this.evictCacheIfNeeded();\n          this.rowInjectorsCache.set(cacheKey, newInjector);\n          this.pendingEvaluations.delete(cacheKey);\n\n          // Schedule batched change detection (performance optimization)\n          this.scheduleChangeDetection();\n        }).catch(() => {\n          // If evaluation fails, keep using the fallback injector\n          this.pendingEvaluations.delete(cacheKey);\n        });\n      }\n\n      // Create injector with original options as fallback (will be updated when evaluation completes)\n      const tokenValue = {\n        path: this.node.path,\n        options: this.mergedOptions(),\n        caption: this.caption,\n      };\n\n      rowInjector = Injector.create({\n        parent: this.injector,\n        providers: [\n          {\n            provide: AXP_WIDGET_COLUMN_TOKEN,\n            useValue: tokenValue,\n          },\n        ],\n      });\n\n      // Cache the initial injector\n      this.evictCacheIfNeeded();\n      this.rowInjectorsCache.set(cacheKey, rowInjector);\n    }\n\n    return rowInjector;\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  Input,\n  Output,\n  computed,\n  effect,\n  inject,\n  untracked,\n} from '@angular/core';\nimport { AXPContextChangeEvent, summarizeFormContextDirtyDiff } from '@acorex/platform/contracts';\nimport { AXPContextStore, AXPDebugService, FORM_DIRTY_TRACE_NS, OVERLAY_WIDGET_SETTLE_TRACE_NS } from '@acorex/platform/core';\nimport { cloneDeep, isEqual } from 'lodash-es';\nimport { AXPWidgetCoreService } from './widget-core.service';\n\n/** Continuous idle period required after widgets settle before committing baseline. */\nconst FORM_SAVED_BASELINE_IDLE_MS = 500;\n/** Poll interval while waiting for widgets to settle (~20s max). */\nconst FORM_SAVED_BASELINE_POLL_MS = 250;\n/** Max poll attempts for settle / ready (~20s); applies even when widgets are registered. */\nconst FORM_SAVED_BASELINE_MAX_SETTLE_POLLS = 80;\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: [AXPWidgetCoreService, AXPContextStore],\n  standalone: false,\n})\nexport class AXPWidgetContainerComponent {\n  public readonly contextService = inject(AXPContextStore);\n  public readonly builderService = inject(AXPWidgetCoreService);\n  private readonly debug = inject(AXPDebugService);\n\n  @Output()\n  public readonly onContextChanged = new EventEmitter<AXPContextChangeEvent>();\n\n  private lastEmittedFormDirty: boolean | undefined;\n  private savedBaselineTimer?: ReturnType<typeof setTimeout>;\n  private settlePromise?: Promise<void>;\n  private wasHydrating = false;\n\n  @Input()\n  set context(value: any) {\n    this.syncExternalContext(value);\n  }\n\n  @Input()\n  public set functions(v: any) {\n    this.builderService.setFunctions(v);\n  }\n\n  readonly isSavedCommitted = computed(() => this.contextService.isSavedCommitted());\n\n  readonly isFormDirty = computed(() => {\n    if (!this.contextService.isSavedCommitted()) {\n      return false;\n    }\n    this.contextService.data();\n    return this.contextService.isDirty();\n  });\n\n  constructor() {\n    effect(() => {\n      const isDirty = this.isFormDirty();\n      const data = this.contextService.data();\n      const changeEvent = this.contextService.changeEvent();\n\n      if (!this.contextService.isChanged() && this.lastEmittedFormDirty === isDirty) {\n        return;\n      }\n\n      this.lastEmittedFormDirty = isDirty;\n\n      this.debug.trace(FORM_DIRTY_TRACE_NS, 'widget-container', 'isFormDirty changed', () => ({\n        isFormDirty: isDirty,\n        userEditedSinceCommit: this.contextService.hasUserEditedSinceCommit(),\n        isSavedCommitted: this.contextService.isSavedCommitted(),\n        changePath: changeEvent.path,\n        changeOrigin: changeEvent.origin,\n        dirtyPaths: this.contextService.isSavedCommitted()\n          ? summarizeFormContextDirtyDiff(\n              this.contextService.data() as Record<string, unknown>,\n              this.contextService.saved() as Record<string, unknown>,\n            )\n          : [],\n      }));\n\n      this.onContextChanged.emit({\n        ...changeEvent,\n        data: cloneDeep(data),\n        isFormDirty: isDirty,\n      });\n    });\n\n    effect(() => {\n      if (this.contextService.isSavedCommitted()) {\n        return;\n      }\n      this.builderService.registeredWidgetsCount();\n      this.builderService.isHydrating();\n      this.builderService.isStructureReady();\n      if (this.builderService.registeredWidgetsCount() === 0) {\n        return;\n      }\n      untracked(() => void this.settleSavedBaseline());\n    });\n\n    effect(() => {\n      const hydrating = this.builderService.isHydrating();\n      const savedCommitted = this.contextService.isSavedCommitted();\n\n      if (!savedCommitted) {\n        this.wasHydrating = hydrating;\n        return;\n      }\n\n      if (this.wasHydrating && !hydrating) {\n        untracked(() => this.scheduleRebaselineAfterHydration());\n      }\n\n      this.wasHydrating = hydrating;\n    });\n  }\n\n  public status = computed(() => this.builderService.status());\n\n  public isBusy = computed(() => this.builderService.isBusy());\n\n  public isHydrating = computed(() => this.builderService.isHydrating());\n\n  /** True when registered widgets exist and none are rendering or hydrating. */\n  public isWidgetsReady = computed(() => {\n    const count = this.builderService.registeredWidgetsCount();\n    if (count === 0) {\n      return false;\n    }\n    return this.builderService.isStructureReady() && !this.builderService.isBusy();\n  });\n\n  public refresh() {\n    this.builderService.refresh();\n  }\n\n  public find(name: string) {\n    return this.builderService.waitForWidget(name);\n  }\n\n  private syncExternalContext(value: unknown): void {\n    const next = cloneDeep(value ?? {});\n    const current = this.contextService.data();\n\n    if (isEqual(current, next)) {\n      return;\n    }\n\n    if (this.contextService.isSavedCommitted() && this.isFormDirty()) {\n      const identityPatch = extractPersistedRootIdentityPatch(\n        current as Record<string, unknown>,\n        next as Record<string, unknown>,\n      );\n      if (identityPatch) {\n        this.contextService.patch(identityPatch, { updateSaved: true });\n      }\n      return;\n    }\n\n    if (this.contextService.isSavedCommitted()) {\n      this.builderService.clearWidgets();\n      this.contextService.set(next);\n      void this.settleSavedBaseline();\n      return;\n    }\n\n    if (this.contextService.isChanged()) {\n      return;\n    }\n\n    this.builderService.clearWidgets();\n    this.contextService.set(next);\n    void this.settleSavedBaseline();\n  }\n\n  /** Commits the current data as saved after widget hydration settles. */\n  settleSavedBaseline(): Promise<void> {\n    if (this.settlePromise) {\n      return this.settlePromise;\n    }\n\n    this.clearSavedBaselineTimer();\n\n    this.settlePromise = this.waitUntilSettled()\n      .then(() => {\n        this.contextService.commitSaved();\n        this.lastEmittedFormDirty = undefined;\n      })\n      .finally(() => {\n        this.settlePromise = undefined;\n      });\n\n    return this.settlePromise;\n  }\n\n  /** Resolves when widgets stay registered, structure-ready, and idle for {@link FORM_SAVED_BASELINE_IDLE_MS}. */\n  waitUntilSettled(): Promise<void> {\n    return new Promise((resolve) => {\n      let idleRetries = 0;\n      let stableTimer: ReturnType<typeof setTimeout> | undefined;\n      let pollTimer: ReturnType<typeof setTimeout> | undefined;\n\n      const finish = (reason: string) => {\n        const snapshot = this.builderService.getWidgetStateSnapshot();\n        this.debug.trace(OVERLAY_WIDGET_SETTLE_TRACE_NS, 'settle', 'Completed', () => ({\n          reason,\n          idleRetries,\n          ...snapshot,\n        }));\n        if (pollTimer) {\n          clearTimeout(pollTimer);\n        }\n        if (stableTimer) {\n          clearTimeout(stableTimer);\n        }\n        resolve();\n      };\n\n      this.debug.trace(OVERLAY_WIDGET_SETTLE_TRACE_NS, 'settle', 'Started');\n\n      const poll = () => {\n        const snapshot = this.builderService.getWidgetStateSnapshot();\n        const isSettled =\n          snapshot.count > 0 &&\n          snapshot.isStructureReady &&\n          !snapshot.isHydrating &&\n          !snapshot.isRendering;\n\n        if (isSettled) {\n          if (!stableTimer) {\n            stableTimer = setTimeout(() => finish('stable-idle'), FORM_SAVED_BASELINE_IDLE_MS);\n          }\n          return;\n        }\n\n        if (stableTimer) {\n          clearTimeout(stableTimer);\n          stableTimer = undefined;\n        }\n\n        idleRetries += 1;\n        if (idleRetries >= FORM_SAVED_BASELINE_MAX_SETTLE_POLLS) {\n          finish('max-polls');\n          return;\n        }\n\n        pollTimer = setTimeout(poll, FORM_SAVED_BASELINE_POLL_MS);\n      };\n\n      pollTimer = setTimeout(poll, FORM_SAVED_BASELINE_POLL_MS);\n    });\n  }\n\n  async replaceContext(value: unknown): Promise<void> {\n    this.clearSavedBaselineTimer();\n    this.settlePromise = undefined;\n    this.contextService.set(cloneDeep(value));\n    // Commit immediately so save/replace is clean even when `set()` no-ops (data already matches).\n    this.contextService.commitSaved();\n    this.lastEmittedFormDirty = undefined;\n    await this.settleSavedBaseline();\n  }\n\n  revertAndSettle(): void {\n    this.clearSavedBaselineTimer();\n    this.settlePromise = undefined;\n    this.debug.trace(FORM_DIRTY_TRACE_NS, 'widget-container', 'revertAndSettle');\n    this.contextService.revertToSaved();\n    this.lastEmittedFormDirty = undefined;\n  }\n\n  /** Re-commits baseline after post-load hydration when the user has not edited the form. */\n  private scheduleRebaselineAfterHydration(): void {\n    this.clearSavedBaselineTimer();\n\n    this.savedBaselineTimer = setTimeout(() => {\n      this.savedBaselineTimer = undefined;\n\n      if (this.contextService.hasUserEditedSinceCommit()) {\n        return;\n      }\n\n      void this.waitUntilSettled().then(() => {\n        if (this.contextService.hasUserEditedSinceCommit()) {\n          return;\n        }\n        this.contextService.commitSaved();\n        this.lastEmittedFormDirty = undefined;\n      });\n    }, FORM_SAVED_BASELINE_IDLE_MS);\n  }\n\n  private clearSavedBaselineTimer(): void {\n    if (this.savedBaselineTimer) {\n      clearTimeout(this.savedBaselineTimer);\n      this.savedBaselineTimer = undefined;\n    }\n  }\n}\n\nfunction hasPersistedRootIdentity(value: unknown): boolean {\n  return (\n    (typeof value === 'string' && value.length > 0) || (typeof value === 'number' && !Number.isNaN(value))\n  );\n}\n\n/** Injects `id` / `_id` from an external context sync when the live form is dirty but lacks a persisted root id. */\nfunction extractPersistedRootIdentityPatch(\n  current: Record<string, unknown>,\n  next: Record<string, unknown>,\n): Record<string, unknown> | null {\n  const nextId = next['id'] ?? next['_id'];\n  const currentId = current['id'] ?? current['_id'];\n\n  if (!hasPersistedRootIdentity(nextId) || hasPersistedRootIdentity(currentId)) {\n    return null;\n  }\n\n  const patch: Record<string, unknown> = { id: nextId };\n  if (next['_id'] !== undefined) {\n    patch['_id'] = next['_id'];\n  }\n  return patch;\n}\n","import { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n  selector: 'axp-widget-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 AXPWidgetPlaceholderComponent {}\n","/** Trace namespace for lookup cascade / widget trigger diagnostics (Debug Mode only). */\nexport const WIDGET_CASCADE_TRACE_NS = 'widget-cascade';\n","import { AXP_WIDGET_TOKEN, AXPWidgetConfig, AXPWidgetNode, AXPWidgetNodeToken, AXPWidgetRenderMode, AXPWidgetStatus } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXTranslateOptions, AXTranslationService } from '@acorex/core/translation';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { AXPContextChangeEvent, AXPMetaData, AXPWidgetTrigger, getSmart } from '@acorex/platform/contracts';\nimport {\n  AXPContextStore,\n  AXPDebugService,\n  AXPExpressionEvaluatorScope,\n  AXPExpressionEvaluatorService,\n} from '@acorex/platform/core';\nimport {\n  ComponentRef,\n  Directive,\n  Injector,\n  SimpleChanges,\n  ViewContainerRef,\n  WritableSignal,\n  effect,\n  inject,\n  input,\n  output,\n  signal,\n} from '@angular/core';\nimport { cloneDeep, get, isEmpty, isEqual, isString, merge, set, sum } from 'lodash-es';\nimport { Observable, Subject, filter } from 'rxjs';\nimport { AXPBaseWidgetComponent, AXPLayoutBaseWidgetComponent, AXPValueWidgetComponent } from './widget-base.component';\nimport { AXPWidgetCoreService } from './widget-core.service';\nimport { AXPWidgetPlaceholderComponent } from './widget-placeholder.component';\nimport { AXPWidgetRegistryService } from './widget-registery.service';\n\nimport { WIDGET_CASCADE_TRACE_NS } from './widget-cascade-trace.constants';\n\nexport type AXPWidgetRendererDirectiveOptions = AXPMetaData;\n\n@Directive({\n  selector: '[axp-widget-renderer]',\n  exportAs: 'widgetRenderer',\n  providers: [\n    {\n      provide: AXUnsubscriber,\n    },\n  ],\n  standalone: false,\n})\nexport class AXPWidgetRendererDirective {\n  parentNode = input<AXPLayoutBaseWidgetComponent | null>();\n\n  index = input<number | null>();\n\n  mode = input.required<AXPWidgetRenderMode>();\n  node = input.required<AXPWidgetNode>();\n\n  private _options = signal<AXPWidgetRendererDirectiveOptions>({});\n  public options = this._options.asReadonly();\n\n  public onOptionsChanged = output<{ sender: AXPWidgetRendererDirective; widget: AXPBaseWidgetComponent }>();\n  public onValueChanged = output<{ sender: AXPWidgetRendererDirective; widget: AXPValueWidgetComponent }>();\n  public onLoad = output<{ sender: AXPWidgetRendererDirective; widget: AXPBaseWidgetComponent }>();\n\n  //#region ----   Public API   ----\n\n  /**\n   * Signal that emits the component reference when it's ready\n   */\n  private _componentRefSignal = signal<ComponentRef<any> | null>(null);\n  public componentRefSignal = this._componentRefSignal.asReadonly();\n\n  //#endregion\n\n  //#region ----   Properties   ----\n\n  protected mergedOptions: WritableSignal<any> = signal<any>({});\n\n  private injector = inject(Injector);\n  protected builderService = inject(AXPWidgetCoreService);\n  protected contextService = inject(AXPContextStore);\n  protected widgetRegistery = inject(AXPWidgetRegistryService);\n  protected unsubscriber = inject(AXUnsubscriber);\n  protected translateService = inject(AXTranslationService);\n  protected widgetService = inject(AXPWidgetRegistryService);\n  protected expressionEvaluator = inject(AXPExpressionEvaluatorService);\n  private viewContainerRef = inject(ViewContainerRef);\n\n  protected isLoading = signal(false);\n  protected isVisible = signal(true);\n  //TODO check if instance cannot be public change it:\n  public instance!: AXPValueWidgetComponent;\n  private expressionEvaluators: Map<string, () => Promise<any>> = new Map();\n  /** Original `{{ ... }}` templates, kept even after evaluated values overwrite `node.options`. */\n  private expressionTemplates = new Map<string, string>();\n  private componentRef: ComponentRef<any>;\n  private renderTimeoutId: any = null;\n  private renderGeneration = 0;\n  private hasInitialRender = false;\n\n  private onContextChanged = new Subject<{ path: string }>();\n  private onLoadEvent = new Subject<{ sender: AXPWidgetRendererDirective; widget: AXPBaseWidgetComponent }>();\n\n  //#region ----   Performance Optimization Properties   ----\n\n  private contextUpdateQueue = new Set<string>();\n  private contextUpdateTimeout: any = null;\n  private readonly CONTEXT_UPDATE_DEBOUNCE_MS = 4; // ~250fps for large forms\n\n  // Removed visibility detection - not needed for current implementation\n\n  // Expression result caching\n  private expressionCache = new Map<string, { value: any; timestamp: number }>();\n  private readonly EXPRESSION_CACHE_TTL = 500; // Cache for 500ms (increased for better hit rate)\n\n  // Options change tracking\n  private lastAppliedOptions: any = null;\n\n  // Expression result tracking\n  private lastExpressionResults = new Map<string, any>();\n\n  // Buffer for context changes that happen before initial render completes\n  private preRenderContextQueue = new Set<string>();\n\n  /** Increments on each trigger subscription callback (diagnostics for duplicate refresh). */\n  private triggerFireSeq = 0;\n\n  /** Active trigger subscriptions registered by {@link assignTriggers}. */\n  private triggerSubscriptionCount = 0;\n\n  /**\n   * Last context {@link AXPContextChangeEvent} handled by this renderer.\n   * Prevents re-queueing when the effect re-runs while `lastChange` in the store is unchanged\n   * (e.g. cascade refresh clears an already-empty dependent lookup).\n   */\n  private lastProcessedContextChangeRef: AXPContextChangeEvent | null = null;\n\n  //#endregion\n\n  //#endregion\n\n  constructor() {\n    effect(async () => {\n      const changed = this.contextService.changeEvent();\n\n      // Don't trigger re-render during initial setup\n      if (!this.hasInitialRender) {\n        // Handle initial context set (state: 'initiated' with empty path means full context update)\n        if (changed.state === 'initiated' && (!changed.path || changed.path === '')) {\n          // Mark that we need to re-evaluate all expressions when initial render completes\n          // This handles the case where context is set before/during widget initialization\n          this.preRenderContextQueue.add('*'); // Use '*' as a marker for full context initialization\n          // console.log(`📝 [${this.node().type}] Buffered initial context set`);\n        } else if (changed.path) {\n          this.preRenderContextQueue.add(changed.path);\n          // console.log(`📝 [${this.node().type}] Buffered pre-render context change: ${changed.path}`);\n        }\n        return;\n      }\n\n      // CRITICAL PERFORMANCE FIX: Only respond to relevant context changes\n      // Handle initial context set (full context update)\n      if (changed.state === 'initiated' && (!changed.path || changed.path === '')) {\n        // Full context initialization - trigger re-evaluation of all expressions\n        if (this.markContextChangeHandled(changed)) {\n          this.clearExpressionCache();\n          if (this.expressionEvaluators.size > 0) {\n            await this.updateOptionsBasedOnContext();\n            this.applyOptions();\n          }\n        }\n      } else if (changed.path && this.isRelevantContextChange(changed.path)) {\n        const changedPath = changed.path;\n        if (this.markContextChangeHandled(changed)) {\n          AXPDebugService.instance?.trace(WIDGET_CASCADE_TRACE_NS, 'context-effect', 'Relevant context change', () => ({\n            widgetPath: this.node().path,\n            widgetType: this.node().type,\n            changedPath,\n            hasTriggerDependency: this.hasTriggerDependency(changedPath),\n            hasExpressionDependency: this.hasExpressionDependency(changedPath),\n          }));\n          this.queueContextUpdate(changedPath);\n        }\n      }\n      await this.updateVisibility();\n    });\n\n    this.builderService.onRefresh.pipe(this.unsubscriber.takeUntilDestroy).subscribe(async () => {\n      await this.processBatchedUpdates();\n    });\n  }\n\n  //#region ----   Expression Caching Methods   ----\n\n  /**\n   * Returns a cache hit only when an entry exists and is still within TTL.\n   * Must not use `value !== null` as the hit check: a cached `undefined` would look like a hit\n   * while a cached `null` would look like a miss (`getCachedExpressionResult` used to return `null` for both).\n   */\n  private getCachedExpressionResult(expressionKey: string): { hit: true; value: unknown } | { hit: false } {\n    const cached = this.expressionCache.get(expressionKey);\n    if (cached && performance.now() - cached.timestamp < this.EXPRESSION_CACHE_TTL) {\n      return { hit: true, value: cached.value };\n    }\n    return { hit: false };\n  }\n\n  /**\n   * Skip caching nullish results so a late-arriving value (e.g. options.node going from null to a widget)\n   * is re-evaluated on the next updateOptionsBasedOnContext pass instead of being frozen for TTL.\n   */\n  private setCachedExpressionResult(expressionKey: string, value: unknown): void {\n    if (value == null) {\n      this.expressionCache.delete(expressionKey);\n      return;\n    }\n    this.expressionCache.set(expressionKey, {\n      value,\n      timestamp: performance.now(),\n    });\n  }\n\n  private clearExpressionCache(): void {\n    this.expressionCache.clear();\n  }\n\n  private isPathAffectingExpressions(changedPath: string): boolean {\n    // console.log(\n    //   `🔍 [${this.node().type}] Checking if path '${changedPath}' affects expressions. Expression count: ${this.expressionEvaluators.size}`,\n    // );\n\n    // If widget has no expressions, no need to clear cache\n    if (this.expressionEvaluators.size === 0) {\n      // console.log(`🔍 [${this.node().type}] Path '${changedPath}' - no expressions, keeping cache`);\n      return false;\n    }\n\n    // Use the same logic as hasExpressionDependency to check for actual dependencies\n    if (this.hasExpressionDependency(changedPath)) {\n      // console.log(`🔍 [${this.node().type}] Path '${changedPath}' affects expressions - clearing cache`);\n      return true;\n    }\n\n    // console.log(`🔍 [${this.node().type}] Path '${changedPath}' does not affect expressions - keeping cache`);\n    return false;\n  }\n\n  //#endregion\n\n  //#region ----   Context Batching Methods   ----\n\n  /**\n   * Returns false when this renderer already handled the same store change event.\n   * Angular effects can re-run after async work while `changeEvent()` still references\n   * the previous `lastChange` object.\n   */\n  private markContextChangeHandled(changed: AXPContextChangeEvent): boolean {\n    if (this.lastProcessedContextChangeRef === changed) {\n      AXPDebugService.instance?.trace(WIDGET_CASCADE_TRACE_NS, 'context-effect', 'Skipped duplicate changeEvent', () => ({\n        widgetPath: this.node().path,\n        widgetType: this.node().type,\n        changedPath: changed.path,\n        state: changed.state,\n      }));\n      return false;\n    }\n\n    this.lastProcessedContextChangeRef = changed;\n    return true;\n  }\n\n  private queueContextUpdate(path: string) {\n    if (path) {\n      // console.log(`🔄 [${this.node().type}] Queueing context update for path: ${path}`);\n      this.contextUpdateQueue.add(path);\n\n      // Clear existing timeout\n      if (this.contextUpdateTimeout) {\n        clearTimeout(this.contextUpdateTimeout);\n      }\n\n      // Debounce updates\n      this.contextUpdateTimeout = setTimeout(() => {\n        // console.log(`⚡ [${this.node().type}] Processing batched updates for ${this.contextUpdateQueue.size} paths`);\n        this.processBatchedUpdates();\n      }, this.CONTEXT_UPDATE_DEBOUNCE_MS);\n    }\n  }\n\n  private async processBatchedUpdates() {\n    if (this.contextUpdateQueue.size === 0) return;\n\n    const startTime = performance.now();\n    const paths = Array.from(this.contextUpdateQueue);\n    this.contextUpdateQueue.clear();\n\n    // console.log(`📊 [${this.node().type}] Processing ${paths.length} paths:`, paths);\n\n    // Clear expression cache only if changed paths affect this widget's expressions\n    const shouldClearCache = paths.some((path) => this.isPathAffectingExpressions(path));\n    if (shouldClearCache) {\n      // console.log(`🗑️ [${this.node().type}] Clearing expression cache due to expression-affecting path change`);\n      this.clearExpressionCache();\n    }\n\n    // Process updates in batches\n    const optionsStartTime = performance.now();\n    const hasOptionsUpdate = await this.updateOptionsBasedOnContext();\n    const optionsTime = performance.now() - optionsStartTime;\n\n    if (typeof hasOptionsUpdate === 'number' && hasOptionsUpdate > 0) {\n      // console.log(`🔧 [${this.node().type}] Options updated (${optionsTime.toFixed(2)}ms)`);\n      this.applyOptions();\n    }\n\n    // Check visibility for any of the changed paths\n    const visibilityStartTime = performance.now();\n    const visibilityNeedsUpdate = paths.some((path) => this.hasVisibilityDependency(path));\n\n    if (visibilityNeedsUpdate) {\n      // console.log(`👁️ [${this.node().type}] Visibility needs update`);\n      await this.updateVisibility();\n    }\n    const visibilityTime = performance.now() - visibilityStartTime;\n\n    // Emit context changes\n    paths.forEach((path) => {\n      AXPDebugService.instance?.trace(WIDGET_CASCADE_TRACE_NS, 'context-batch', 'Emit onContextChanged', () => ({\n        widgetPath: this.node().path,\n        widgetType: this.node().type,\n        changedPath: path,\n        batchPaths: paths,\n        triggerSubscriptionCount: this.triggerSubscriptionCount,\n      }));\n      this.onContextChanged.next({ path });\n    });\n\n    const totalTime = performance.now() - startTime;\n    // console.log(\n    //   `✅ [${this.node().type}] Batch processing completed in ${totalTime.toFixed(2)}ms (options: ${optionsTime.toFixed(2)}ms, visibility: ${visibilityTime.toFixed(2)}ms)`,\n    // );\n  }\n\n  //#endregion\n\n  //#region ----   Context Relevance Filtering   ----\n\n  private isRelevantContextChange(changedPath: string): boolean {\n    const node = this.node();\n\n    // 1. Direct path match - widget's own field\n    if (node.path === changedPath) {\n      return true;\n    }\n\n    // 2. Parent path match - widget is inside the changed container\n    if (node.path && changedPath.startsWith(node.path + '.')) {\n      return true;\n    }\n\n    // 3. Child path match - changed field is inside this widget's container\n    if (node.path && node.path.startsWith(changedPath + '.')) {\n      return true;\n    }\n\n    // 4. Expression dependency check - if widget has expressions that depend on this path\n    if (this.hasExpressionDependency(changedPath)) {\n      return true;\n    }\n\n    // 5. Trigger dependency check - if widget has triggers that depend on this path\n    if (this.hasTriggerDependency(changedPath)) {\n      return true;\n    }\n\n    // 7. Visibility dependency check - if widget's visibility depends on this path\n    if (this.hasVisibilityDependency(changedPath)) {\n      return true;\n    }\n\n    return false;\n  }\n\n  /**\n   * True when a context store path used in an expression (`context.eval`, `context.options`) is\n   * affected by `changedPath`.\n   */\n  private contextStorePathDependsOnChangedPath(evalPath: string, changedPath: string): boolean {\n    const normalizePath = (p: string): string => {\n      if (!p) return p;\n      const parts = p.split('.');\n      const last = parts[parts.length - 1];\n      if (last && last.endsWith('Id')) {\n        parts.splice(parts.length - 1, 1, last.slice(0, -2), 'id');\n      }\n      return parts.join('.');\n    };\n\n    const isSegmentSuffix = (a: string, b: string): boolean => {\n      if (!a || !b) return false;\n      const pa = a.split('.');\n      const pb = b.split('.');\n      if (pb.length > pa.length) return false;\n      for (let i = 1; i <= pb.length; i++) {\n        if (pa[pa.length - i] !== pb[pb.length - i]) return false;\n      }\n      return true;\n    };\n\n    const evalNorm = normalizePath(evalPath);\n    const changedNorm = normalizePath(changedPath);\n\n    const rawMatch =\n      evalPath === changedPath ||\n      evalPath.startsWith(changedPath + '.') ||\n      changedPath.startsWith(evalPath + '.') ||\n      isSegmentSuffix(evalPath, changedPath) ||\n      isSegmentSuffix(changedPath, evalPath);\n\n    const normMatch =\n      evalNorm === changedNorm ||\n      evalNorm.startsWith(changedNorm + '.') ||\n      changedNorm.startsWith(evalNorm + '.') ||\n      isSegmentSuffix(evalNorm, changedNorm) ||\n      isSegmentSuffix(changedNorm, evalNorm);\n\n    if (rawMatch || normMatch) {\n      return true;\n    }\n\n    return this.isPathAlias(evalPath, changedPath);\n  }\n\n  /**\n   * Whether an expression template string reads context store paths affected by `changedPath`.\n   */\n  private expressionTextDependsOnContextPath(expressionValue: string, changedPath: string): boolean {\n    const contextEvalRegex = /context\\.eval\\(['\"]([^'\\\"]+)['\"]\\)/g;\n    let match;\n    while ((match = contextEvalRegex.exec(expressionValue)) !== null) {\n      if (this.contextStorePathDependsOnChangedPath(match[1], changedPath)) {\n        return true;\n      }\n    }\n    const contextOptionsQuoted = /context\\.options\\(\\s*['\"]([^'\"]*)['\"]\\s*\\)/g;\n    while ((match = contextOptionsQuoted.exec(expressionValue)) !== null) {\n      const sub = match[1];\n      const evalPath = sub === '' ? 'options' : `options.${sub}`;\n      if (this.contextStorePathDependsOnChangedPath(evalPath, changedPath)) {\n        return true;\n      }\n    }\n    const contextOptionsEmpty = /context\\.options\\(\\s*\\)/g;\n    while ((match = contextOptionsEmpty.exec(expressionValue)) !== null) {\n      if (this.contextStorePathDependsOnChangedPath('options', changedPath)) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  private hasExpressionDependency(changedPath: string): boolean {\n    for (const [path] of this.expressionEvaluators) {\n      if (path.includes(changedPath)) {\n        return true;\n      }\n      const expressionValue =\n        this.expressionTemplates.get(path) ?? this.getExpressionValueFromNode(this.node(), path);\n      if (expressionValue && typeof expressionValue === 'string') {\n        if (this.expressionTextDependsOnContextPath(expressionValue, changedPath)) {\n          return true;\n        }\n      }\n    }\n    return false;\n  }\n\n  private isPathAlias(evalPath: string, changedPath: string): boolean {\n    // Dynamic path alias detection based on 'Id' suffix pattern\n    // Examples: typeId.id <-> type.id, categoryId.name <-> category.name\n\n    // Check if evalPath ends with 'Id' and has a property\n    if (evalPath.endsWith('Id') && evalPath.includes('.')) {\n      const basePath = evalPath.substring(0, evalPath.lastIndexOf('Id'));\n      const property = evalPath.substring(evalPath.lastIndexOf('.') + 1);\n      const mappedPath = `${basePath}.${property}`;\n\n      if (changedPath === mappedPath) {\n        // console.log(`🔍 [${this.node().type}] Path alias detected: '${evalPath}' <-> '${changedPath}'`);\n        return true;\n      }\n    }\n\n    // Check if changedPath ends with 'Id' and has a property\n    if (changedPath.endsWith('Id') && changedPath.includes('.')) {\n      const basePath = changedPath.substring(0, changedPath.lastIndexOf('Id'));\n      const property = changedPath.substring(changedPath.lastIndexOf('.') + 1);\n      const mappedPath = `${basePath}.${property}`;\n\n      if (evalPath === mappedPath) {\n        // console.log(`🔍 [${this.node().type}] Path alias detected: '${evalPath}' <-> '${changedPath}'`);\n        return true;\n      }\n    }\n\n    // Check for direct 'Id' suffix mapping (e.g., typeId <-> type.id)\n    if (evalPath.endsWith('Id') && !evalPath.includes('.')) {\n      const basePath = evalPath.substring(0, evalPath.lastIndexOf('Id'));\n      const mappedPath = `${basePath}.id`;\n\n      if (changedPath === mappedPath) {\n        // console.log(`🔍 [${this.node().type}] Path alias detected: '${evalPath}' <-> '${changedPath}'`);\n        return true;\n      }\n    }\n\n    if (changedPath.endsWith('Id') && !changedPath.includes('.')) {\n      const basePath = changedPath.substring(0, changedPath.lastIndexOf('Id'));\n      const mappedPath = `${basePath}.id`;\n\n      if (evalPath === mappedPath) {\n        // console.log(`🔍 [${this.node().type}] Path alias detected: '${evalPath}' <-> '${changedPath}'`);\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  private getExpressionValueFromNode(node: AXPWidgetNode, path: string): string | null {\n    try {\n      // Navigate through the node structure to find the expression value\n      const pathParts = path.split('.');\n      let current: any = node.options || {};\n\n      // Navigate through the path parts\n      for (const part of pathParts) {\n        if (current && typeof current === 'object' && part in current) {\n          current = current[part];\n        } else {\n          return null;\n        }\n      }\n\n      return typeof current === 'string' ? current : null;\n    } catch (error) {\n      // console.error('Error extracting expression value from node:', error);\n      return null;\n    }\n  }\n\n  private hasTriggerDependency(changedPath: string): boolean {\n    const node = this.node();\n    const triggers = node.triggers || node.options?.['triggers'] || this.mergedOptions()?.triggers;\n\n    if (!triggers) return false;\n\n    // Check if any trigger event depends on the changed path\n    for (const trigger of triggers) {\n      if (trigger.event && trigger.event.includes(changedPath)) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  private hasVisibilityDependency(changedPath: string): boolean {\n    const node = this.node();\n    const visibility = node.options?.['visible'] || this.mergedOptions()?.visible;\n\n    if (!visibility || typeof visibility !== 'string') return false;\n\n    if (this.expressionEvaluator.isExpression(visibility)) {\n      return this.expressionTextDependsOnContextPath(visibility, changedPath);\n    }\n\n    return false;\n  }\n\n  //#endregion\n\n  // Removed visibility detection methods - not needed for current implementation\n\n  // Detect input changes\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes['mode'] || changes['node']) {\n      // Check if either 'mode' or 'node' has changed\n      this.rerenderComponent();\n    }\n  }\n\n  private rerenderComponent() {\n    if (this.renderTimeoutId) {\n      clearTimeout(this.renderTimeoutId);\n      this.renderTimeoutId = null;\n    }\n\n    const generation = ++this.renderGeneration;\n    this.renderTimeoutId = setTimeout(async () => {\n      this.renderTimeoutId = null;\n      if (generation !== this.renderGeneration) {\n        return;\n      }\n      await this.loadComponent();\n    }, 0);\n  }\n\n  ngOnDestroy() {\n    if (this.renderTimeoutId) {\n      clearTimeout(this.renderTimeoutId);\n    }\n    if (this.contextUpdateTimeout) {\n      clearTimeout(this.contextUpdateTimeout);\n    }\n    if (this.componentRef) {\n      this.componentRef.destroy();\n    }\n    this.onLoadEvent.complete();\n  }\n\n  private async loadComponent() {\n    if (this.isLoading()) {\n      return;\n    }\n    this.isLoading.set(true);\n    this.lastProcessedContextChangeRef = null;\n\n    try {\n      // Destroy the existing component if it exists\n      if (this.componentRef) {\n        this.componentRef.destroy();\n      }\n      this.viewContainerRef.clear();\n\n      // Reset the component ref signal\n      this._componentRefSignal.set(null);\n      //\n      const widget = this.widgetRegistery.resolve(this.node().type);\n      //\n      const propertiesToProcess = [\n        ...(widget?.properties ?? []),\n        ...(widget?.components[this.mode()]?.properties ?? []),\n      ]?.filter((c) => c.schema.defaultValue != null);\n\n      // Process default values (evaluate expressions if needed)\n      const props: { [key: string]: any } = {};\n      for (const property of propertiesToProcess) {\n        const defaultValue = property.schema.defaultValue;\n        if (typeof defaultValue === 'string' && this.expressionEvaluator.isExpression(defaultValue)) {\n          // Evaluate expression for default value\n          try {\n            const evaluatedValue = await this.evaluateExpression(defaultValue);\n            props[property.name] = evaluatedValue;\n          } catch (error) {\n            // console.error(`Error evaluating default value expression for property ${property.name}:`, error);\n            props[property.name] = cloneDeep(defaultValue); // Fallback to original value\n          }\n        } else {\n          // Use static default value\n          props[property.name] = cloneDeep(defaultValue);\n        }\n      }\n      //\n      this.mergedOptions.set(merge(props, widget?.options, this.node().options) || {});\n\n      this.expressionEvaluators.clear();\n      this.expressionTemplates.clear();\n      // Register expressions from widget defaults and node options to cover related-entity cases\n      this.preprocessAndInitialOptions(cloneDeep(widget?.options));\n      this.preprocessAndInitialOptions(cloneDeep(this.node().options));\n\n      // Check if context is available before evaluating expressions\n      // If context is empty, expressions will be re-evaluated after initial render\n      const contextData = this.contextService.data();\n      const hasContextData = contextData && Object.keys(contextData).length > 0;\n\n      if (hasContextData) {\n        await this.updateOptionsBasedOnContext();\n      } else {\n        // Context not yet available - expressions will be evaluated after initial render\n        // when context is set (handled by the effect and preRenderContextQueue)\n      }\n      //\n      this._options.update((val) => ({ ...val, ...this.mergedOptions() }));\n      // Evaluate default value\n      let defaultValue = this.node().defaultValue;\n      if (typeof defaultValue === 'string' && this.expressionEvaluator.isExpression(defaultValue)) {\n        defaultValue = await this.evaluateExpression(defaultValue);\n      }\n      //\n      const tokenValue = {\n        node: this.node(),\n        defaultValue: defaultValue,\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      const loadingRef = this.viewContainerRef.createComponent(AXPWidgetPlaceholderComponent);\n      //\n      const com = await widget?.components[this.mode()]?.component();\n      if (!com) {\n        // console.error(`${this.node().type} widget component not found with mode: ${this.mode()}`);\n        return;\n      }\n      this.componentRef = this.viewContainerRef.createComponent<AXPValueWidgetComponent<any>>(com, { injector: token });\n      this.instance = this.componentRef.instance;\n      this.instance.setStatus(AXPWidgetStatus.Rendering);\n      this.instance.parent = this.parentNode();\n      this.instance.index = this.index();\n      this.instance.mode = this.mode();\n\n      // Update the component ref signal for reactive access\n      this._componentRefSignal.set(this.componentRef);\n      this.instance?.onOptionsChanged?.pipe(this.unsubscriber.takeUntilDestroy).subscribe((c) => {\n        this.onOptionsChanged.emit({ sender: this, widget: c.sender });\n      });\n      this.instance?.onValueChanged?.pipe(this.unsubscriber.takeUntilDestroy).subscribe((c) => {\n        this.onValueChanged.emit({ sender: this, widget: c.sender as AXPValueWidgetComponent });\n      });\n      await this.updateVisibility();\n      await this.assignTriggers();\n      //\n      loadingRef.destroy();\n\n      // Mark that initial render is complete\n      this.hasInitialRender = true;\n\n      // Re-evaluate expressions after initial render to catch late-arriving related context\n      if (this.expressionEvaluators.size > 0) {\n        // console.log(`🔄 [${this.node().type}] Re-evaluating expressions after initial render`);\n        await this.updateOptionsBasedOnContext();\n        this.applyOptions();\n      }\n\n      // Re-evaluate visibility after initial render\n      await this.updateVisibility();\n\n      // Process any buffered pre-render context changes now that the component is ready\n      if (this.preRenderContextQueue.size > 0) {\n        // Check if we have a full context initialization marker\n        const hasFullContextInit = this.preRenderContextQueue.has('*');\n\n        if (hasFullContextInit) {\n          // Full context was initialized - clear cache and re-evaluate all expressions\n          // console.log(`🚀 [${this.node().type}] Processing initial context set - full re-evaluation`);\n          this.clearExpressionCache();\n          this.preRenderContextQueue.clear();\n          // Re-evaluate all expressions since context is now available\n          if (this.expressionEvaluators.size > 0) {\n            await this.updateOptionsBasedOnContext();\n            this.applyOptions();\n          }\n          await this.updateVisibility();\n        } else {\n          // console.log(\n          //   `🚀 [${this.node().type}] Processing ${this.preRenderContextQueue.size} buffered pre-render changes`,\n          // );\n          this.preRenderContextQueue.forEach((p) => this.contextUpdateQueue.add(p));\n          this.preRenderContextQueue.clear();\n          await this.processBatchedUpdates();\n        }\n      }\n\n      // Emit load event after widget is fully loaded\n      const loadEvent = { sender: this, widget: this.instance };\n      this.onLoadEvent.next(loadEvent);\n      this.onLoad.emit(loadEvent);\n    } catch (error) {\n      // console.error('Error loading component:', error);\n    } finally {\n      this.isLoading.set(false);\n    }\n  }\n\n  private applyOptions() {\n    if (!this.instance) return;\n\n    const currentOptions = this.mergedOptions();\n\n    // Check if options have actually changed\n    if (this.hasOptionsChanged(currentOptions)) {\n      // console.log('applyOptions', this.node().path, '- options changed');\n      this._options.update((val) => ({ ...val, ...currentOptions }));\n      this.instance.setOptions(currentOptions);\n      this.lastAppliedOptions = cloneDeep(currentOptions); // Deep clone using Lodash\n    } else {\n      // console.log('applyOptions', this.node().path, '- no changes, skipping');\n    }\n  }\n\n  private hasOptionsChanged(newOptions: any): boolean {\n    if (!this.lastAppliedOptions) {\n      return true; // First time, always apply\n    }\n\n    // Deep comparison of options using Lodash isEqual\n    return !isEqual(newOptions, this.lastAppliedOptions);\n  }\n\n  // Removed deepCloneValue method - now using Lodash cloneDeep\n\n  preprocessAndInitialOptions(obj: any, pathPrefix: string = ''): void {\n    if (!obj) {\n      return;\n    }\n    Object.entries(obj).forEach(([key, value]) => {\n      const currentPath = pathPrefix ? `${pathPrefix}.${key}` : key;\n\n      // CRITICAL FIX: Skip trigger actions during options processing\n      //\n      // PROBLEM: Trigger actions were being evaluated immediately during widget setup/options processing,\n      // causing them to execute before the actual trigger event occurred. This meant triggers would fire\n      // during initialization instead of when the specified context path actually changed.\n      //\n      // ROOT CAUSE: The expression evaluator was processing trigger action expressions (like console.log\n      // or widget.setValue calls) as part of the normal options preprocessing, treating them as dynamic\n      // expressions that needed immediate evaluation.\n      //\n      // SOLUTION: Detect when we're processing trigger actions and store them as static values without\n      // expression evaluation. This ensures trigger actions are only evaluated when the trigger's\n      // subscription callback actually fires (when the event condition is met).\n      //\n      // RESULT: Triggers now only execute when their event filters pass (e.g., when the specified\n      // context path changes), not during widget initialization.\n      if (currentPath.includes('triggers') && (key === 'action' || currentPath.endsWith('.action'))) {\n        // Apply static values directly without expression evaluation\n        this.mergedOptions.update((currentOptions) => {\n          return set(currentOptions, currentPath, value);\n        });\n        return;\n      }\n\n      if (typeof value === 'string' && this.expressionEvaluator.isExpression(value)) {\n        this.expressionTemplates.set(currentPath, value);\n        this.expressionEvaluators.set(currentPath, () => this.evaluateExpression(value));\n      } else if (\n        typeof value === 'object' &&\n        value !== null &&\n        (value.constructor === Object || Array.isArray(value))\n      ) {\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    // Early return if no expressions to evaluate\n    if (this.expressionEvaluators.size === 0) {\n      return 0;\n    }\n\n    // console.log(`🔍 [${this.node().type}] Evaluating ${this.expressionEvaluators.size} expressions`);\n\n    const updatePromises = Array.from(this.expressionEvaluators).map(async ([path, evaluator]) => {\n      const cached = this.getCachedExpressionResult(path);\n      if (cached.hit) {\n        const hasLastValue = this.lastExpressionResults.has(path);\n        const hasChanged = !hasLastValue || !isEqual(cached.value, this.lastExpressionResults.get(path));\n        return { path, newValue: cached.value, fromCache: true, hasChanged };\n      }\n\n      // Evaluate expression if not cached\n      const evalStartTime = performance.now();\n      const newValue = await evaluator();\n      const evalTime = performance.now() - evalStartTime;\n\n      // Check if result has actually changed using Lodash isEqual\n      // Important: We must check if the key exists in the map, not just compare values\n      // This handles the case where the expression evaluates to `undefined` for the first time\n      // Without this check, `undefined` would be incorrectly treated as \"no change\"\n      // because Map.get() returns `undefined` for non-existent keys\n      const hasLastValue = this.lastExpressionResults.has(path);\n      const lastValue = this.lastExpressionResults.get(path);\n      const hasChanged = !hasLastValue || !isEqual(newValue, lastValue);\n\n      if (hasChanged) {\n        // console.log(\n        //   `📝 [${this.node().type}] Expression '${path}' evaluated in ${evalTime.toFixed(2)}ms - value changed`,\n        // );\n        // Cache the result and track it\n        this.setCachedExpressionResult(path, newValue);\n        this.lastExpressionResults.set(path, cloneDeep(newValue));\n        return { path, newValue, fromCache: false, hasChanged: true };\n      } else {\n        // console.log(\n        //   `📝 [${this.node().type}] Expression '${path}' evaluated in ${evalTime.toFixed(2)}ms - value unchanged, skipping update`,\n        // );\n        // Cache the result but don't update\n        this.setCachedExpressionResult(path, newValue);\n        this.lastExpressionResults.set(path, cloneDeep(newValue));\n        return { path, newValue, fromCache: false, hasChanged: false };\n      }\n    });\n\n    // Wait for all evaluators to complete\n    const updates = await Promise.all(updatePromises);\n\n    // Filter updates to only include those that have actually changed\n    const changedUpdates = updates.filter((update) => update.hasChanged !== false);\n\n    // Apply updates to mergedOptions only for changed values\n    if (changedUpdates.length > 0) {\n      this.mergedOptions.update((o) => {\n        const updatedOptions = { ...o };\n        changedUpdates.forEach(({ path, newValue }) => {\n          set(updatedOptions, path, newValue);\n        });\n        return updatedOptions;\n      });\n    }\n\n    const cacheHits = updates.filter((update) => update.fromCache).length;\n    const skippedUpdates = updates.length - changedUpdates.length;\n\n    // console.log(\n    //   `📋 [${this.node().type}] Applied ${changedUpdates.length} expression updates (${cacheHits} cache hits, ${skippedUpdates} skipped)`,\n    // );\n    return changedUpdates.length;\n  }\n\n  async updateVisibility() {\n    const node = this.node();\n    const visibility = node.options?.['visible'] || this.mergedOptions()?.visible;\n\n    if (visibility === undefined || visibility === null) {\n      // Default to visible if no visibility option is set\n      this.show();\n      return;\n    }\n\n    let shouldBeVisible: boolean;\n\n    if (typeof visibility === 'boolean') {\n      shouldBeVisible = visibility;\n    } else if (typeof visibility === 'string' && this.expressionEvaluator.isExpression(visibility)) {\n      // Evaluate expression for visibility\n      try {\n        const result = await this.evaluateExpression(visibility);\n        shouldBeVisible = Boolean(result);\n      } catch (error) {\n        // console.error('Error evaluating visibility expression:', error);\n        shouldBeVisible = true; // Default to visible on error\n      }\n    } else {\n      // Treat other values as truthy/falsy\n      shouldBeVisible = Boolean(visibility);\n    }\n\n    if (shouldBeVisible) {\n      this.show();\n    } else {\n      this.hide();\n    }\n  }\n\n  private show() {\n    if (!this.isVisible()) {\n      this.isVisible.set(true);\n      if (this.componentRef && this.componentRef.location) {\n        this.loadComponent();\n        // this.componentRef.location.nativeElement.style.display = '';\n      }\n    }\n  }\n\n  private hide() {\n    if (this.isVisible()) {\n      this.isVisible.set(false);\n      if (this.componentRef && this.componentRef.location) {\n        this.componentRef.destroy();\n        // this.componentRef.location.nativeElement.style.display = 'none';\n      }\n    }\n  }\n\n  private async evaluateExpression(templateExpression: string): Promise<any> {\n    try {\n      const scope = this.buildExpressionScope();\n      return await this.expressionEvaluator.evaluate(templateExpression, scope);\n    } catch (error) {\n      // console.error('Error evaluating expression:', error);\n      return false;\n    }\n  }\n\n  private buildExpressionScope(): AXPExpressionEvaluatorScope {\n    return {\n      context: this.getContextScope(),\n      events: this.getEventScope(),\n      widget: this.getWidgetScope(),\n      methods: this.getFunctionScope(),\n      vars: this.getVariablesScope(),\n    };\n  }\n\n  private getContextScope(): { [name: string]: Function } {\n    return {\n      eval: (path: string) => {\n        //TODO: Handle array index\n        const fullPath = path.startsWith('>') ? `${this.instance?.parentPath()}.${path.substring(1)}` : path;\n        const value = this.contextService.getValue(fullPath);\n        return value;\n      },\n      set: (path: string, value: any) => {\n        this.contextService.update(path, value, { origin: 'user' });\n      },\n      data: () => {\n        return this.contextService.data();\n      },\n      isDirty: () => {\n        if (!this.contextService.isSavedCommitted()) {\n          return false;\n        }\n        return this.contextService.isDirty();\n      },\n      /**\n       * Host/widget-under-edit `options` from the shared context store (same values as\n       * `context.eval('options' + (path ? '.' + path : ''))`), not `widget.options` on the nested\n       * property field instance. Uses one `getValue` so smart-path behavior matches `context.eval`.\n       */\n      options: (path?: string) => {\n        if (path == null || path === '') {\n          return this.contextService.getValue('options');\n        }\n        return this.contextService.getValue(`options.${path}`);\n      },\n    };\n  }\n\n  private getEventScope(): { [name: string]: Function } {\n    return {\n      context: (...paths: (string | undefined)[]) => {\n        return this.onContextChanged.pipe(\n          filter((c) => {\n            const activePaths = paths.filter((p): p is string => !!p && p.trim().length > 0);\n            // If no path filters specified, pass all events\n            if (activePaths.length === 0) {\n              return true;\n            }\n            // Ensure c.path exists\n            if (!c.path) {\n              return false;\n            }\n            return activePaths.some((path) => {\n              // Pattern: \"prefix*\" - matches paths that start with prefix\n              if (path.endsWith('*')) {\n                const prefix = path.substring(0, path.length - 1);\n                return c.path!.startsWith(prefix);\n              }\n              // Pattern: \"*suffix\" - matches paths that end with suffix\n              if (path.startsWith('*')) {\n                const suffix = path.substring(1);\n                return c.path!.endsWith(suffix);\n              }\n              // Exact match\n              return c.path === path;\n            });\n          }),\n        );\n      },\n      from: (event: string) => get(this.instance.api(), event),\n      load: () => {\n        return this.onLoadEvent.asObservable();\n      },\n    };\n  }\n\n  private getWidgetScope(): { [name: string]: Function } {\n    return {\n      /** Resolved options for this renderer's widget instance (not the host / property-viewer target). */\n      options: (path?: string) => {\n        const opts =\n          this.instance && typeof this.instance.options === 'function'\n            ? this.instance.options()\n            : this.mergedOptions();\n        if (path == null || path === '') {\n          return opts;\n        }\n        return getSmart(opts, path);\n      },\n      call: (name: string, ...args: any[]) => {\n        this.instance.call(name, ...args);\n      },\n      setValue: (value: any) => {\n        this.instance.setValue(value);\n      },\n      clear: () => {\n        this.instance.setValue(undefined);\n      },\n      refresh: () => {\n        AXPDebugService.instance?.trace(WIDGET_CASCADE_TRACE_NS, 'widget.refresh', 'refresh() invoked', () => ({\n          widgetPath: this.node().path,\n          widgetType: this.node().type,\n          hasInstanceRefresh: typeof (this.instance as { refresh?: () => void })?.refresh === 'function',\n        }));\n        const refresh = (this.instance as any)?.['refresh'];\n        if (refresh && typeof refresh === 'function') {\n          refresh.bind(this.instance)();\n        } else {\n          this.updateOptionsBasedOnContext();\n          this.applyOptions();\n        }\n      },\n      output: (name: any) => {\n        return this.instance.output(name);\n      },\n      find: (id: string) => {\n        return this.builderService.getWidget(id);\n      },\n    };\n  }\n\n  private getFunctionScope(): { [name: string]: Function } {\n    const scope: { [name: string]: Function } = {\n      sum: (values: any) => {\n        return sum(values);\n      },\n      translate: (text: string, options?: AXTranslateOptions) => {\n        return this.translateService.translateAsync(text, options);\n      },\n      widgetInfo: (name: string): AXPWidgetConfig | undefined => {\n        return this.widgetService.resolve(name);\n      },\n    };\n\n    // Add custom functions from builder service\n    Object.entries(this.builderService.functions).forEach(([key, fn]) => {\n      scope[key] = (...args: any[]) => {\n        return fn(...args);\n      };\n    });\n\n    return scope;\n  }\n\n  private getVariablesScope(): { [name: string]: Function } {\n    return {\n      eval: (path: string) => get(this.builderService.variables, path),\n    };\n  }\n\n  private async assignTriggers() {\n    const node = this.node();\n    // Check multiple possible locations for triggers\n    const triggers = node.triggers || node.options?.['triggers'] || this.mergedOptions()?.triggers;\n\n    if (!triggers) {\n      return;\n    }\n\n    AXPDebugService.instance?.trace(WIDGET_CASCADE_TRACE_NS, 'assign-triggers', 'Registering triggers', () => ({\n      widgetPath: node.path,\n      widgetType: node.type,\n      triggerCount: triggers.length,\n      triggers: triggers.map((t: AXPWidgetTrigger) => ({ event: t.event, action: t.action, disabled: t.disabled })),\n      existingSubscriptionCount: this.triggerSubscriptionCount,\n    }));\n\n    for (const trigger of triggers) {\n      try {\n        const event = await this.evaluateTrigger(trigger.event);\n        if (event) {\n          this.triggerSubscriptionCount += 1;\n          event.pipe(this.unsubscriber.takeUntilDestroy).subscribe(() => {\n            const seq = ++this.triggerFireSeq;\n            AXPDebugService.instance?.trace(WIDGET_CASCADE_TRACE_NS, 'trigger-fire', 'Trigger subscription fired', () => ({\n              seq,\n              widgetPath: node.path,\n              widgetType: node.type,\n              event: trigger.event,\n              action: trigger.action,\n              triggerSubscriptionCount: this.triggerSubscriptionCount,\n            }));\n            const exec = async (action: string) => {\n              if (!isEmpty(action) && isString(action)) {\n                await this.evaluateAction(action);\n              }\n            };\n            const actions = Array.isArray(trigger.action) ? trigger.action : [trigger.action];\n            actions.forEach(async (a: string) => await exec(a));\n          });\n        }\n      } catch (error) {\n        // console.error('Error assigning trigger:', error);\n      }\n    }\n  }\n\n  private async evaluateTrigger(templateExpression: string): Promise<Observable<any> | null> {\n    try {\n      const scope = this.buildExpressionScope();\n      const result = await this.expressionEvaluator.evaluate(templateExpression, scope);\n\n      // Check if result is an Observable\n      if (result && typeof result.subscribe === 'function') {\n        return result;\n      } else {\n        return null;\n      }\n    } catch (error) {\n      // console.error('Error evaluating trigger expression:', error);\n      return null;\n    }\n  }\n\n  private async evaluateAction(templateExpression: string) {\n    try {\n      AXPDebugService.instance?.trace(WIDGET_CASCADE_TRACE_NS, 'trigger-action', 'Evaluating trigger action', () => ({\n        widgetPath: this.node().path,\n        widgetType: this.node().type,\n        action: templateExpression,\n      }));\n      const scope = this.buildExpressionScope();\n      await this.expressionEvaluator.evaluate(templateExpression, scope);\n    } catch (error) {\n      // console.error('Error evaluating action expression:', templateExpression, error);\n    }\n  }\n}\n","import { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXPWidgetColumnRendererComponent } from './widget-column-renderer';\nimport { AXPWidgetContainerComponent } from './widget-container.component';\nimport { AXPWidgetRendererDirective } from './widget-renderer.directive';\nimport type { AXPExtendedWidget, AXPWidgetConfig } from '@acorex/platform/layout/widget-core-contracts';\n\nexport interface AXPWidgetCoreModuleConfigs {\n  widgets?: AXPWidgetConfig[];\n  AXPExtendedWidgets?: AXPExtendedWidget[];\n}\n\nconst COMPONENTS = [AXPWidgetContainerComponent, AXPWidgetColumnRendererComponent, AXPWidgetRendererDirective];\n\n@NgModule({\n  imports: [CommonModule, PortalModule, AXSkeletonModule, AXTranslationModule],\n  exports: [...COMPONENTS],\n  declarations: [...COMPONENTS],\n  providers: [],\n})\nexport class AXPWidgetCoreModule { }\n","import { AXPProperty } from '@acorex/platform/contracts';\n\nimport { AXPWidgetProperty, AXPWidgetPropertyGroup } from '@acorex/platform/layout/widget-core-contracts';\n\n//#region ---- Types ----\n\n/**\n * Maps a platform {@link AXPProperty} to a property viewer row model ({@link AXPWidgetProperty}).\n * Kept in widget-core (not platform/core) to avoid a dependency cycle: widget-core already depends on platform/core.\n */\nexport interface MapAXPPropertyToWidgetPropertyOptions {\n  group: AXPWidgetPropertyGroup;\n  order: number;\n  /**\n   * Dot path prefix for {@link AXPWidgetProperty.schema.interface.path}.\n   * Example: `input` → `input.requestId`; `properties` → `properties.message`.\n   */\n  valuePathPrefix: string;\n  /**\n   * Resolves a display title (supports multi-language strings on the source property).\n   */\n  resolveTitle: (property: AXPProperty) => string;\n  /**\n   * Optional description line for the viewer row.\n   */\n  resolveDescription?: (property: AXPProperty) => string | undefined;\n}\n\n//#endregion\n\n//#region ---- Mapping ----\n\n/**\n * Converts a domain {@link AXPProperty} into a {@link AXPWidgetProperty} row for\n * the layout property viewer (`AXPPropertyViewerService` and `buildPropertyViewerTabsFromProperties`).\n */\nexport function mapAXPPropertyToWidgetProperty(\n  property: AXPProperty,\n  options: MapAXPPropertyToWidgetPropertyOptions,\n): AXPWidgetProperty {\n  const { group, order, valuePathPrefix, resolveTitle, resolveDescription } = options;\n  const path = valuePathPrefix ? `${valuePathPrefix}.${property.name}` : property.name;\n  const iface = property.interface;\n  const widgetType = iface?.type ?? 'text-editor';\n  const description = resolveDescription?.(property);\n\n  return {\n    name: property.name,\n    title: resolveTitle(property),\n    ...(description !== undefined && description !== '' ? { description } : {}),\n    group,\n    order,\n    schema: {\n      dataType: property.dataType,\n      interface: {\n        path,\n        name: property.name,\n        type: widgetType,\n        options: iface?.options ?? {},\n        ...(iface?.triggers ? { triggers: iface.triggers } : {}),\n      },\n    },\n    validations: property.validations,\n    visible: true,\n  };\n}\n\n//#endregion\n","import {\n  AXPBorderBox,\n  AXPBorderBoxString,\n  AXPBreakpoints,\n  AXPBreakpointValues,\n  AXPPropertyCorners,\n  AXPPropertySides,\n  AXPSpacingBox,\n  AXPSpacingBoxString,\n} from './property-editor.type';\n\nexport class AXPPropertyEditorHelper {\n  private static expandShorthand<T extends string>(values: T[]): T[] {\n    switch (values.length) {\n      case 1:\n        return [values[0], values[0], values[0], values[0]];\n      case 2:\n        return [values[0], values[1], values[0], values[1]];\n      case 3:\n        return [values[0], values[1], values[2], values[1]];\n      case 4:\n        return values;\n      default:\n        throw new Error(`Invalid shorthand value count. Input: ${values}`);\n    }\n  }\n\n  private static condenseShorthand<T>(values: T[]): string {\n    if (values.length !== 4) {\n      throw new Error('Expected 4 values for condensation.');\n    }\n\n    if (values[0] === values[1] && values[1] === values[2] && values[2] === values[3]) {\n      return `${values[0]}`;\n    } else if (values[0] === values[2] && values[1] === values[3]) {\n      return `${values[0]} ${values[1]}`;\n    } else if (values[1] === values[3]) {\n      return `${values[0]} ${values[1]} ${values[2]}`;\n    } else {\n      return `${values[0]} ${values[1]} ${values[2]} ${values[3]}`;\n    }\n  }\n\n  private static parseSides(input: string): AXPPropertySides {\n    const values = this.expandShorthand(input.match(/(?:rgb\\([^)]+\\)|[^ ]+)/g)?.map((value) => value.trim()) || []);\n    return { top: values[0], right: values[1], bottom: values[2], left: values[3] };\n  }\n\n  private static parseSidesWithUnits(input: string): AXPPropertySides<number> {\n    const values = this.expandShorthand(input.match(/(?:rgb\\([^)]+\\)|[^ ]+)/g)?.map((value) => value.trim()) || []);\n    return {\n      top: AXPPropertyEditorHelper.getValueWithUnit(values[0]).value,\n      right: AXPPropertyEditorHelper.getValueWithUnit(values[1]).value,\n      bottom: AXPPropertyEditorHelper.getValueWithUnit(values[2]).value,\n      left: AXPPropertyEditorHelper.getValueWithUnit(values[3]).value,\n    };\n  }\n\n  private static parseCorners(input: string): AXPPropertyCorners<number> {\n    const values = this.expandShorthand(input.split(' ').map((value) => value.trim()));\n    return {\n      'top-left': AXPPropertyEditorHelper.getValueWithUnit(values[0]).value,\n      'top-right': AXPPropertyEditorHelper.getValueWithUnit(values[1]).value,\n      'bottom-left': AXPPropertyEditorHelper.getValueWithUnit(values[2]).value,\n      'bottom-right': AXPPropertyEditorHelper.getValueWithUnit(values[3]).value,\n    };\n  }\n\n  public static parseSpacingBox(input: AXPSpacingBoxString): AXPSpacingBox<number> {\n    return {\n      margin: this.parseSidesWithUnits(input.margin),\n      padding: this.parseSidesWithUnits(input.padding),\n    };\n  }\n\n  public static parseBorderBox(input: AXPBorderBoxString): AXPBorderBox<number | string> {\n    return {\n      width: this.parseSidesWithUnits(input.width),\n      radius: this.parseCorners(input.radius),\n      color: this.parseSides(input.color),\n      style: this.parseSides(input.style),\n    };\n  }\n\n  public static parseSpacingBoxReverse(\n    input: AXPSpacingBox<number>,\n    units: AXPSpacingBox<string>,\n  ): AXPSpacingBoxString {\n    const format = (value: number, unit: string) => `${value}${unit}`;\n    return {\n      margin: AXPPropertyEditorHelper.condenseShorthand([\n        format(input.margin.top, units.margin.top),\n        format(input.margin.right, units.margin.right),\n        format(input.margin.bottom, units.margin.bottom),\n        format(input.margin.left, units.margin.left),\n      ]),\n      padding: AXPPropertyEditorHelper.condenseShorthand([\n        format(input.padding.top, units.padding.top),\n        format(input.padding.right, units.padding.right),\n        format(input.padding.bottom, units.padding.bottom),\n        format(input.padding.left, units.padding.left),\n      ]),\n    };\n  }\n\n  public static parseBorderBoxReverse(\n    input: AXPBorderBox<number | string>,\n    units: AXPBorderBox<string>,\n  ): AXPBorderBoxString {\n    const format = (value: number | string, unit: string) => `${value}${unit}`;\n\n    return {\n      width: AXPPropertyEditorHelper.condenseShorthand([\n        format(input.width.top, units.width.top),\n        format(input.width.right, units.width.right),\n        format(input.width.bottom, units.width.bottom),\n        format(input.width.left, units.width.left),\n      ]),\n      radius: AXPPropertyEditorHelper.condenseShorthand([\n        format(input.radius['top-left'], units.radius['top-left']),\n        format(input.radius['top-right'], units.radius['top-right']),\n        format(input.radius['bottom-right'], units.radius['bottom-right']),\n        format(input.radius['bottom-left'], units.radius['bottom-left']),\n      ]),\n      color: AXPPropertyEditorHelper.condenseShorthand([\n        `${input.color.top}${units.color.top}`,\n        `${input.color.right}${units.color.right}`,\n        `${input.color.bottom}${units.color.bottom}`,\n        `${input.color.left}${units.color.left}`,\n      ]),\n      style: AXPPropertyEditorHelper.condenseShorthand([\n        `${input.style.top}${units.style.top}`,\n        `${input.style.right}${units.style.right}`,\n        `${input.style.bottom}${units.style.bottom}`,\n        `${input.style.left}${units.style.left}`,\n      ]),\n    };\n  }\n\n  public static getValueWithUnit(input: string | number): { value: number; unit: string } {\n    if (typeof input === 'number') return { value: input, unit: 'px' };\n    if (input === 'auto') return { value: 0, unit: 'px' };\n\n    const match = input.match(/^([0-9.]+)([a-z%]*)$/i);\n    if (!match) throw new Error(`Invalid unit format: ${input}`);\n\n    return { value: parseFloat(match[1]), unit: match[2] || '' };\n  }\n\n  public static getValueFromUnit(value: number, unit: string): string {\n    return unit ? `${value}${unit}` : `${value}`;\n  }\n\n  public static parseGap(gap: string): { values: Record<'x' | 'y', number>; unit: string } {\n    const parts = gap.split(/\\s+/);\n    const match = parts[0].match(/^(\\d+\\.?\\d*)([a-z%]+)$/);\n    if (!match) {\n      throw new Error('Invalid gap format');\n    }\n\n    const [, xValue, unit] = match;\n    let yValue = parseFloat(xValue);\n    if (parts.length === 2) {\n      const secondMatch = parts[1].match(/^(\\d+\\.?\\d*)[a-z%]+$/);\n      if (!secondMatch) {\n        throw new Error('Invalid gap format');\n      }\n      yValue = parseFloat(secondMatch[1]);\n    }\n\n    return {\n      values: {\n        x: parseFloat(xValue),\n        y: yValue,\n      },\n      unit,\n    };\n  }\n\n  public static parseGridTemplate(gridTemplate: string): number {\n    const match = gridTemplate.match(/^repeat\\((\\d+),\\s*(?:1fr|auto|minmax\\([^)]*\\))\\)$/);\n    if (!match) {\n      throw new Error(\"Invalid grid template format. Expected 'repeat(N, 1fr|auto|minmax(...))'.\");\n    }\n    return parseInt(match[1], 10);\n  }\n\n  public static createGridTemplate(repetitionCount: number): string {\n    if (repetitionCount <= 0) {\n      throw new Error('Repetition count must be a positive integer.');\n    }\n    return `repeat(${repetitionCount}, 1fr)`;\n  }\n}\n\nexport function findNonEmptyBreakpoints<T>(values: AXPBreakpointValues<T>): AXPBreakpoints[] {\n  const breakpoints: AXPBreakpoints[] = ['default', 'sm', 'md', 'lg', 'xl', '2xl', '3xl'];\n  const nonEmptyBreakpoints: AXPBreakpoints[] = [];\n\n  for (const breakpoint of breakpoints) {\n    if (values[breakpoint] !== undefined) {\n      nonEmptyBreakpoints.push(breakpoint);\n    }\n  }\n\n  return nonEmptyBreakpoints;\n}\n","//#region ----   Imports   ----\n\nimport { AXPWidgetNode } from '@acorex/platform/layout/widget-core-contracts';\nimport { cloneDeep } from 'lodash-es';\n\n//#endregion\n\n//#region ----   Helper Class   ----\n\n/**\n * Helper class for serializing and deserializing AXPWidgetNode to/from JSON\n */\nexport class AXPWidgetSerializationHelper {\n  /**\n   * Removes non-serializable properties from widget node\n   * @param node - The widget node to clean\n   * @param options - Serialization options\n   * @returns Cleaned widget node ready for JSON serialization\n   */\n  private static cleanNode(\n    node: AXPWidgetNode,\n    options: { removeMeta?: boolean; removeFunctions?: boolean } = {},\n  ): AXPWidgetNode {\n    const { removeMeta = true, removeFunctions = true } = options;\n\n    // Deep clone to avoid mutating original\n    const cleaned = cloneDeep(node);\n\n    // Remove meta property if requested\n    if (removeMeta && 'meta' in cleaned) {\n      delete (cleaned as any).meta;\n    }\n\n    // Remove functions from options, triggers, and valueTransforms\n    if (removeFunctions) {\n      this.removeFunctions(cleaned);\n    }\n\n    // Recursively clean children\n    if (cleaned.children && Array.isArray(cleaned.children)) {\n      cleaned.children = cleaned.children.map((child) => this.cleanNode(child, options));\n    }\n\n    return cleaned;\n  }\n\n  /**\n   * Recursively removes functions from object properties\n   */\n  private static removeFunctions(obj: any): void {\n    if (obj === null || obj === undefined) {\n      return;\n    }\n\n    if (Array.isArray(obj)) {\n      obj.forEach((item) => this.removeFunctions(item));\n      return;\n    }\n\n    if (typeof obj === 'object') {\n      for (const key in obj) {\n        if (typeof obj[key] === 'function') {\n          delete obj[key];\n        } else if (typeof obj[key] === 'object') {\n          this.removeFunctions(obj[key]);\n        }\n      }\n    }\n  }\n\n  /**\n   * Converts AXPWidgetNode to JSON string\n   * @param node - The widget node to serialize\n   * @param options - Serialization options\n   * @returns JSON string representation of the widget node\n   */\n  public static toJson(\n    node: AXPWidgetNode,\n    options: {\n      removeMeta?: boolean;\n      removeFunctions?: boolean;\n      pretty?: boolean;\n    } = {},\n  ): string {\n    const { pretty = false, ...cleanOptions } = options;\n    const cleaned = this.cleanNode(node, cleanOptions);\n\n    if (pretty) {\n      return JSON.stringify(cleaned, null, 2);\n    }\n\n    return JSON.stringify(cleaned);\n  }\n\n  /**\n   * Converts JSON string to AXPWidgetNode\n   * @param json - JSON string to deserialize\n   * @returns Parsed AXPWidgetNode object\n   * @throws Error if JSON is invalid or doesn't match AXPWidgetNode structure\n   */\n  public static fromJson(json: string): AXPWidgetNode {\n    try {\n      const parsed = JSON.parse(json);\n\n      // Basic validation - ensure it has at least a type property\n      if (!parsed || typeof parsed !== 'object') {\n        throw new Error('Invalid JSON: Expected an object');\n      }\n\n      if (!parsed.type) {\n        throw new Error('Invalid AXPWidgetNode: Missing required property \"type\"');\n      }\n\n      // Recursively validate and parse children if they exist\n      if (parsed.children && Array.isArray(parsed.children)) {\n        parsed.children = parsed.children.map((child: any) => this.fromJson(JSON.stringify(child)));\n      }\n\n      return parsed as AXPWidgetNode;\n    } catch (error) {\n      if (error instanceof SyntaxError) {\n        throw new Error(`Invalid JSON string: ${error.message}`);\n      }\n      throw error;\n    }\n  }\n\n  /**\n   * Removes meta property from widget node (similar to designer service)\n   * @param node - The widget node to process\n   * @returns Widget node without meta property\n   */\n  public static removeMeta(node: AXPWidgetNode): AXPWidgetNode {\n    return this.cleanNode(node, { removeMeta: true, removeFunctions: false });\n  }\n}\n\n//#endregion\n\n","import type { AXPDefinitionCategory } from '@acorex/platform/contracts';\n\n//#region ---- Editor sub-categories (widget picker) ----\n\nexport const AXP_WIDGETS_EDITOR_SUB_TEXT_INPUTS: AXPDefinitionCategory = {\n  name: 'editor-text-inputs',\n  order: 1,\n  title: '@platform-layout-widgets:subcategories.editor-text-inputs.title',\n};\n\nexport const AXP_WIDGETS_EDITOR_SUB_NUMERIC: AXPDefinitionCategory = {\n  name: 'editor-numeric',\n  order: 2,\n  title: '@platform-layout-widgets:subcategories.editor-numeric.title',\n};\n\nexport const AXP_WIDGETS_EDITOR_SUB_DATETIME: AXPDefinitionCategory = {\n  name: 'editor-datetime',\n  order: 3,\n  title: '@platform-layout-widgets:subcategories.editor-datetime.title',\n};\n\nexport const AXP_WIDGETS_EDITOR_SUB_CHOICE: AXPDefinitionCategory = {\n  name: 'editor-choice',\n  order: 4,\n  title: '@platform-layout-widgets:subcategories.editor-choice.title',\n};\n\nexport const AXP_WIDGETS_EDITOR_SUB_RICH: AXPDefinitionCategory = {\n  name: 'editor-rich',\n  order: 5,\n  title: '@platform-layout-widgets:subcategories.editor-rich.title',\n};\n\nexport const AXP_WIDGETS_EDITOR_SUB_VISUAL: AXPDefinitionCategory = {\n  name: 'editor-visual',\n  order: 6,\n  title: '@platform-layout-widgets:subcategories.editor-visual.title',\n};\n\nexport const AXP_WIDGETS_EDITOR_SUB_COMPOSITE: AXPDefinitionCategory = {\n  name: 'editor-composite',\n  order: 7,\n  title: '@platform-layout-widgets:subcategories.editor-composite.title',\n};\n\nexport const AXP_WIDGETS_EDITOR_SUB_CONFIG: AXPDefinitionCategory = {\n  name: 'editor-config',\n  order: 8,\n  title: '@platform-layout-widgets:subcategories.editor-config.title',\n};\n\n//#endregion\n\n//#region ---- Layout sub-categories (widget picker) ----\n\nexport const AXP_WIDGETS_LAYOUT_SUB_SHELL: AXPDefinitionCategory = {\n  name: 'layout-shell',\n  order: 1,\n  title: '@platform-layout-widgets:subcategories.layout-shell.title',\n};\n\nexport const AXP_WIDGETS_LAYOUT_SUB_GRID: AXPDefinitionCategory = {\n  name: 'layout-grid',\n  order: 2,\n  title: '@platform-layout-widgets:subcategories.layout-grid.title',\n};\n\nexport const AXP_WIDGETS_LAYOUT_SUB_SURFACES: AXPDefinitionCategory = {\n  name: 'layout-surfaces',\n  order: 3,\n  title: '@platform-layout-widgets:subcategories.layout-surfaces.title',\n};\n\nexport const AXP_WIDGETS_LAYOUT_SUB_TABS: AXPDefinitionCategory = {\n  name: 'layout-tabs',\n  order: 4,\n  title: '@platform-layout-widgets:subcategories.layout-tabs.title',\n};\n\nexport const AXP_WIDGETS_LAYOUT_SUB_LISTS: AXPDefinitionCategory = {\n  name: 'layout-lists',\n  order: 5,\n  title: '@platform-layout-widgets:subcategories.layout-lists.title',\n};\n\nexport const AXP_WIDGETS_LAYOUT_SUB_UTILITY: AXPDefinitionCategory = {\n  name: 'layout-utility',\n  order: 6,\n  title: '@platform-layout-widgets:subcategories.layout-utility.title',\n};\n\n//#endregion\n\n//#region ---- Action sub-categories (widget picker) ----\n\nexport const AXP_WIDGETS_ACTION_SUB_CONTROLS: AXPDefinitionCategory = {\n  name: 'action-controls',\n  order: 1,\n  title: '@platform-layout-widgets:subcategories.action-controls.title',\n};\n\n//#endregion\n\n//#region ---- Advance sub-categories (widget picker) ----\n\nexport const AXP_WIDGETS_ADVANCE_SUB_MEDIA: AXPDefinitionCategory = {\n  name: 'advance-media',\n  order: 1,\n  title: '@platform-layout-widgets:subcategories.advance-media.title',\n};\n\nexport const AXP_WIDGETS_ADVANCE_SUB_INPUT: AXPDefinitionCategory = {\n  name: 'advance-input',\n  order: 2,\n  title: '@platform-layout-widgets:subcategories.advance-input.title',\n};\n\nexport const AXP_WIDGETS_ADVANCE_SUB_DATA: AXPDefinitionCategory = {\n  name: 'advance-data',\n  order: 3,\n  title: '@platform-layout-widgets:subcategories.advance-data.title',\n};\n\nexport const AXP_WIDGETS_ADVANCE_SUB_TOOLS: AXPDefinitionCategory = {\n  name: 'advance-tools',\n  order: 4,\n  title: '@platform-layout-widgets:subcategories.advance-tools.title',\n};\n\n//#endregion\n\n/** Normalizes widget categories to an array for iteration and serialization. */\nexport function normalizeWidgetCategories(\n  categories?: AXPDefinitionCategory | AXPDefinitionCategory[],\n): AXPDefinitionCategory[] {\n  if (categories == null) {\n    return [];\n  }\n  return Array.isArray(categories) ? categories : [categories];\n}\n\nexport const AXP_WIDGETS_LAYOUT_CATEGORY: AXPDefinitionCategory = {\n  name: 'layout',\n  order: 1,\n  title: '@platform-layout-widgets:categories.layout.title',\n};\n\nexport const AXP_WIDGETS_EDITOR_CATEGORY: AXPDefinitionCategory = {\n  name: 'editor',\n  order: 2,\n  title: '@platform-layout-widgets:categories.editor.title',\n};\n\nexport const AXP_WIDGETS_ACTION_CATEGORY: AXPDefinitionCategory = {\n  name: 'action',\n  order: 3,\n  title: '@platform-layout-widgets:categories.action.title',\n};\n\nexport const AXP_WIDGETS_ADVANCE_CATEGORY: AXPDefinitionCategory = {\n  name: 'advance',\n  order: 4,\n  title: '@platform-layout-widgets:categories.advance.title',\n};\n\n/** AI category tab in the widget picker (metadata); unrelated to Widgets:GetForAI listing scope. */\nexport const AXP_WIDGETS_AI_CATEGORY: AXPDefinitionCategory = {\n  name: 'ai',\n  order: 5,\n  title: '@platform-layout-widgets:categories.ai.title',\n};\n\nexport const AXP_WIDGETS_CATEGORIES: AXPDefinitionCategory[] = [\n  AXP_WIDGETS_LAYOUT_CATEGORY,\n  AXP_WIDGETS_EDITOR_CATEGORY,\n  AXP_WIDGETS_ACTION_CATEGORY,\n  AXP_WIDGETS_ADVANCE_CATEGORY,\n  AXP_WIDGETS_AI_CATEGORY,\n];\n","import { getSmart } from '@acorex/platform/contracts';\nimport { AXPExpressionEvaluatorScope, AXPExpressionEvaluatorService } from '@acorex/platform/core';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  Injector,\n  Input,\n  OnChanges,\n  OnInit,\n  SimpleChanges,\n  Type,\n  inject,\n  signal,\n} from '@angular/core';\nimport { NgComponentOutlet } from '@angular/common';\nimport { get, merge } from 'lodash-es';\nimport { AXPWidgetRegistryService } from './widget-registery.service';\nimport { AXP_WIDGET_COLUMN_TOKEN, AXPWidgetColumnNode } from '@acorex/platform/layout/widget-core-contracts';\n\n/**\n * Standalone cell renderer using the same column-mode widget pipeline as {@link AXPWidgetColumnRendererComponent}.\n */\n@Component({\n  selector: 'axp-widget-column-cell',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [NgComponentOutlet],\n  template: `\n    @if (component && rowData) {\n      <ng-container\n        *ngComponentOutlet=\"component; injector: getRowInjector(rowData); inputs: getInputs(rowData)\"\n      ></ng-container>\n    }\n  `,\n})\nexport class AXPWidgetColumnCellComponent implements OnInit, OnChanges {\n  @Input({ required: true }) node!: AXPWidgetColumnNode;\n\n  @Input({ required: true }) rowData!: Record<string, unknown>;\n\n  @Input() caption = '';\n\n  protected component!: Type<unknown>;\n\n  private mergedOptions = signal<Record<string, unknown>>({});\n\n  private rowInjectorsCache = new Map<string, Injector>();\n\n  private hasExpressions = false;\n\n  private pendingEvaluations = new Set<string>();\n\n  private changeDetectionScheduled = false;\n\n  private readonly injector = inject(Injector);\n\n  private readonly cdr = inject(ChangeDetectorRef);\n\n  private readonly widgetRegistry = inject(AXPWidgetRegistryService);\n\n  private readonly expressionEvaluator = inject(AXPExpressionEvaluatorService);\n\n  async ngOnInit(): Promise<void> {\n    await this.resolveComponent();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['node'] && !changes['node'].firstChange) {\n      void this.resolveComponent();\n    }\n    if (changes['rowData'] && !changes['rowData'].firstChange) {\n      this.rowInjectorsCache.clear();\n      this.cdr.markForCheck();\n    }\n  }\n\n  getInputs(data: Record<string, unknown>): { rawValue: unknown; rowData: Record<string, unknown> } {\n    return {\n      rawValue: get(data, this.node.path!),\n      rowData: data,\n    };\n  }\n\n  getRowInjector(data: Record<string, unknown>): Injector {\n    const cacheKey = this.getCacheKey(data);\n    let rowInjector = this.rowInjectorsCache.get(cacheKey);\n\n    if (!rowInjector) {\n      if (!this.hasExpressions) {\n        rowInjector = this.createRowInjector(this.mergedOptions());\n        this.rowInjectorsCache.set(cacheKey, rowInjector);\n        return rowInjector;\n      }\n\n      if (!this.pendingEvaluations.has(cacheKey)) {\n        this.pendingEvaluations.add(cacheKey);\n        const scope: AXPExpressionEvaluatorScope = {\n          ...(data ?? {}),\n          context: {\n            eval: (path: string) => getSmart(data, path),\n          },\n        };\n\n        void this.expressionEvaluator.evaluate(this.mergedOptions(), scope).then((evaluatedOptions) => {\n          const newInjector = this.createRowInjector(evaluatedOptions as Record<string, unknown>);\n          this.rowInjectorsCache.delete(cacheKey);\n          this.rowInjectorsCache.set(cacheKey, newInjector);\n          this.pendingEvaluations.delete(cacheKey);\n          this.scheduleChangeDetection();\n        }).catch(() => {\n          this.pendingEvaluations.delete(cacheKey);\n        });\n      }\n\n      rowInjector = this.createRowInjector(this.mergedOptions());\n      this.rowInjectorsCache.set(cacheKey, rowInjector);\n    }\n\n    return rowInjector;\n  }\n\n  private async resolveComponent(): Promise<void> {\n    const widget = this.widgetRegistry.resolve(this.node.type);\n    const mode = 'column';\n    this.component = await widget?.components[mode]?.component();\n\n    const props = widget?.components[mode]?.properties\n      ?.filter((c) => c.schema.defaultValue)\n      .map((c) => ({ [c.name]: c.schema.defaultValue }))\n      .reduce((acc, curr) => ({ ...acc, ...curr }), {});\n\n    this.mergedOptions.set(merge(props, this.node.options) || {});\n    this.hasExpressions = this.checkForExpressions(this.mergedOptions());\n    this.rowInjectorsCache.clear();\n    this.cdr.markForCheck();\n  }\n\n  private createRowInjector(options: Record<string, unknown>): Injector {\n    return Injector.create({\n      parent: this.injector,\n      providers: [\n        {\n          provide: AXP_WIDGET_COLUMN_TOKEN,\n          useValue: {\n            path: this.node.path,\n            options,\n            caption: this.caption,\n          },\n        },\n      ],\n    });\n  }\n\n  private getCacheKey(data: Record<string, unknown>): string {\n    const id = data['id'];\n    if (id != null) {\n      return `row-${String(id)}`;\n    }\n    return `row-${Object.keys(data).length}`;\n  }\n\n  private checkForExpressions(obj: unknown): boolean {\n    if (typeof obj === 'string') {\n      return this.expressionEvaluator.isExpression(obj);\n    }\n    if (Array.isArray(obj)) {\n      return obj.some((item) => this.checkForExpressions(item));\n    }\n    if (obj && typeof obj === 'object') {\n      return Object.values(obj).some((value) => this.checkForExpressions(value));\n    }\n    return false;\n  }\n\n  private scheduleChangeDetection(): void {\n    if (this.changeDetectionScheduled) {\n      return;\n    }\n    this.changeDetectionScheduled = true;\n    requestAnimationFrame(() => {\n      this.cdr.markForCheck();\n      this.changeDetectionScheduled = false;\n    });\n  }\n}\n","import { AXPWidgetPropertyGroup } from '@acorex/platform/layout/widget-core-contracts';\n\nexport const AXP_STYLING_PROPERTY_GROUP: AXPWidgetPropertyGroup = {\n  name: 'styling',\n  order: 1,\n  title: 'Styling',\n};\n\nexport const AXP_DATA_PROPERTY_GROUP: AXPWidgetPropertyGroup = {\n  name: 'data',\n  order: 7,\n  title: 'Data',\n};\n\nexport const AXP_BEHAVIOR_PROPERTY_GROUP: AXPWidgetPropertyGroup = {\n  name: 'behavior',\n  order: 2,\n  title: 'Behavior',\n};\n\nexport const AXP_WIDGET_PROPERTY_GROUP: AXPWidgetPropertyGroup = {\n  name: 'widget',\n  order: 0,\n  title: 'Widget',\n};\n\nexport const AXP_VALIDATION_PROPERTY_GROUP: AXPWidgetPropertyGroup = {\n  name: 'validation',\n  order: 4,\n  title: 'Validation',\n};\n\nexport const AXP_APPEARANCE_PROPERTY_GROUP: AXPWidgetPropertyGroup = {\n  name: 'appearance',\n  order: 2,\n  title: 'Appearance',\n};\n\nexport const AXP_ANIMATION_PROPERTY_GROUP: AXPWidgetPropertyGroup = {\n  name: 'animation',\n  order: 5,\n  title: 'Animation',\n};\n\nexport const AXP_TRIGGERS_PROPERTY_GROUP: AXPWidgetPropertyGroup = {\n  name: 'triggers',\n  order: 3,\n  title: 'Triggers',\n};","import { objectKeyValueTransforms } from '@acorex/platform/core';\nimport { AXPWidgetsCatalog } from '@acorex/platform/contracts';\nimport { AXPWidgetProperty } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_DATA_PROPERTY_GROUP } from './groups';\n\n/**\n * Single property that edits all data-source-related options (dataSource, valueField, textField, filters)\n * in one dedicated widget. Uses path: 'options' and setValue with merge (same pattern as flex-options).\n */\nexport const AXP_DATA_SOURCE_OPTIONS_PROPERTY: AXPWidgetProperty = {\n  name: 'dataSourceOptions',\n  title: 'Data Source',\n  group: AXP_DATA_PROPERTY_GROUP,\n  showLabel: false,\n  schema: {\n    dataType: 'object',\n    interface: {\n      name: 'dataSourceOptions',\n      path: 'options',\n      type: 'data-source-options',\n      options: {},\n    },\n  },\n  visible: true,\n};\n\n// export const AXP_DATA_SOURCE_PROPERTY: AXPWidgetProperty = {\n//   name: 'dataSource',\n//   title: 'Data Source',\n//   group: AXP_DATA_PROPERTY_GROUP,\n//   schema: {\n//     dataType: 'object',\n//     interface: {\n//       name: 'dataSource',\n//       path: 'options.dataSource',\n//       type: AXPWidgetsCatalog.select,\n//       valueTransforms: objectKeyValueTransforms('name'),\n//       options: {\n//         valueField: 'name',\n//         textField: 'title',\n//         dataSource: 'dataSources',\n//         hasClearButton: true,\n//         allowSearch: true,\n//       },\n//     },\n//   },\n//   visible: true,\n// };\n\n// export const AXP_DATA_SOURCE_VALUE_FIELD: AXPWidgetProperty = {\n//   name: 'valueField',\n//   title: 'Value Field',\n//   group: AXP_DATA_PROPERTY_GROUP,\n//   schema: {\n//     dataType: 'string',\n//     interface: {\n//       name: 'valueField',\n//       path: 'options.valueField',\n//       type: AXPWidgetsCatalog.text,\n//       options: {\n//         hasClearButton: true,\n//       },\n//       triggers: [\n//         {\n//           event: `{{ events.context('options.dataSource') }}`,\n//           action: `{{ context.set('options.valueField',widget.find('dataSource').output('item').valueField?.name);  }}`,\n//         },\n//       ],\n//     },\n//   },\n//   visible: true,\n// };\n\n// export const AXP_DATA_SOURCE_TEXT_FIELD: AXPWidgetProperty = {\n//   name: 'textField',\n//   title: 'Text Field',\n//   group: AXP_DATA_PROPERTY_GROUP,\n//   schema: {\n//     dataType: 'string',\n//     interface: {\n//       name: 'textField',\n//       path: 'options.textField',\n//       type: AXPWidgetsCatalog.text,\n//       options: {\n//         hasClearButton: true,\n//       },\n//       triggers: [\n//         {\n//           event: `{{ events.context('options.dataSource') }}`,\n//           action: `{{ context.set('options.textField',widget.find('dataSource').output('item').textField?.name);  }}`,\n//         },\n//       ],\n//     },\n//   },\n//   visible: true,\n// };\n\n// /** Use AXP_DATA_SOURCE_OPTIONS_PROPERTY for a single unified data-source editor, or the three below for separate fields. */\n// export const AXP_DATA_SOURCE_PROPERTIES = [\n//   AXP_DATA_SOURCE_PROPERTY,\n//   AXP_DATA_SOURCE_VALUE_FIELD,\n//   AXP_DATA_SOURCE_TEXT_FIELD,\n// ];","import { AXPWidgetsCatalog } from '@acorex/platform/contracts';\nimport { AXPWidgetProperty, createStringProperty } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_STYLING_PROPERTY_GROUP, AXP_WIDGET_PROPERTY_GROUP } from './groups';\n\nexport const AXP_NAME_PROPERTY = createStringProperty({\n  name: 'name',\n  title: 'Name',\n  group: AXP_WIDGET_PROPERTY_GROUP,\n});\n\nexport const AXP_THEME_PROPERTY: AXPWidgetProperty = {\n  name: 'theme',\n  title: 'Theme',\n  group: AXP_STYLING_PROPERTY_GROUP,\n  schema: {\n    dataType: 'string',\n    defaultValue: { id: 'default', title: 'Default' },\n    interface: {\n      name: 'theme',\n      path: 'options.theme',\n      type: AXPWidgetsCatalog.select,\n      options: {\n\n        dataSource: [\n          {\n            id: 'default',\n            title: 'Default',\n          },\n          {\n            id: 'light',\n            title: 'Light',\n          },\n          {\n            id: 'dark',\n            title: 'Dark',\n          },\n        ],\n      },\n    },\n  },\n  visible: true,\n};\n\nexport const AXP_DIRECTION_PROPERTY: AXPWidgetProperty = {\n  name: 'direction',\n  title: 'Direction',\n  group: AXP_STYLING_PROPERTY_GROUP,\n  schema: {\n    dataType: 'string',\n    defaultValue: { id: 'horizontal' },\n    interface: {\n      name: 'direction',\n      path: 'options.direction',\n      type: AXPWidgetsCatalog.select,\n      options: {\n        dataSource: [\n          {\n            id: 'horizontal',\n            title: 'Horizontal',\n          },\n          {\n            id: 'vertical',\n            title: 'Vertical',\n          },\n        ],\n      },\n    },\n  },\n  visible: true,\n};\n\nexport const AXP_COLOR_PROPERTY: AXPWidgetProperty = {\n  name: 'color',\n  title: 'Color',\n  group: AXP_STYLING_PROPERTY_GROUP,\n  schema: {\n    dataType: 'string',\n    interface: {\n      path: 'options.color',\n      options: {\n        hasClearButton: true,\n      },\n      type: AXPWidgetsCatalog.color,\n    },\n  },\n  visible: true,\n};\n\nexport const AXP_FONT_SIZE_PROPERTY: AXPWidgetProperty = {\n  name: 'fontSize',\n  title: 'Font Size',\n  group: AXP_STYLING_PROPERTY_GROUP,\n  schema: {\n    dataType: 'string',\n    defaultValue: '12px',\n    interface: {\n      name: 'fontSize',\n      path: 'options.fontSize',\n      type: AXPWidgetsCatalog.text,\n    },\n  },\n  visible: true,\n};\n\nexport const AXP_BG_COLOR_PROPERTY: AXPWidgetProperty = {\n  name: 'backgroundColor',\n  title: 'Background Color',\n  group: AXP_STYLING_PROPERTY_GROUP,\n  schema: {\n    dataType: 'string',\n    interface: {\n      path: 'options.backgroundColor',\n      options: {\n        hasClearButton: true,\n      },\n      type: AXPWidgetsCatalog.color,\n    },\n  },\n  visible: true,\n};\n","import { AX_STYLE_COLOR_TYPES, AX_STYLE_LOOK_TYPES } from '@acorex/cdk/common';\nimport { AXPWidgetsCatalog } from '@acorex/platform/contracts';\nimport { AXPWidgetProperty, createBooleanProperty, createNumberProperty, createSelectProperty, createStringProperty } from '@acorex/platform/layout/widget-core-contracts';\nimport {\n  AXP_BEHAVIOR_PROPERTY_GROUP,\n  AXP_DATA_PROPERTY_GROUP,\n  AXP_STYLING_PROPERTY_GROUP,\n  AXP_TRIGGERS_PROPERTY_GROUP,\n} from './groups';\n\nexport const AXP_CONTENT_PROPERTY = createStringProperty({\n  name: 'content',\n  title: 'Content',\n  path: 'options.content',\n  group: AXP_DATA_PROPERTY_GROUP,\n});\n\nexport const AXP_PLACEHOLDER_PROPERTY = createStringProperty({\n  name: 'placeholder',\n  title: 'Placeholder',\n  path: 'options.placeholder',\n  group: AXP_BEHAVIOR_PROPERTY_GROUP,\n});\n\nexport const AXP_DATA_PATH_PROPERTY = createStringProperty({\n  name: 'path',\n  title: 'Data Path',\n  group: AXP_DATA_PROPERTY_GROUP,\n});\n\nexport const AXP_DISABLED_PROPERTY = createBooleanProperty({\n  name: 'disabled',\n  title: 'Disabled',\n  path: 'options.disabled',\n  group: AXP_BEHAVIOR_PROPERTY_GROUP,\n});\n\nexport const AXP_READONLY_PROPERTY = createBooleanProperty({\n  name: 'readonly',\n  title: 'Readonly',\n  path: 'options.readonly',\n  group: AXP_BEHAVIOR_PROPERTY_GROUP,\n});\n\nexport const AXP_ALLOW_MULTIPLE_PROPERTY = createBooleanProperty({\n  name: 'multiple',\n  title: 'Multiple',\n  path: 'options.multiple',\n  group: AXP_BEHAVIOR_PROPERTY_GROUP,\n});\n\nexport const AXP_ALLOW_CLEAR_PROPERTY = createBooleanProperty({\n  name: 'allowClear',\n  title: 'Allow Clear',\n  path: 'options.allowClear',\n  group: AXP_BEHAVIOR_PROPERTY_GROUP,\n});\n\nexport const AXP_HAS_LABEL_PROPERTY = createBooleanProperty({\n  name: 'hasLabel',\n  title: 'Label',\n  path: 'options.hasLabel',\n  group: AXP_BEHAVIOR_PROPERTY_GROUP,\n  defaultValue: true,\n});\n\nexport const AXP_HAS_ICON_PROPERTY = createBooleanProperty({\n  name: 'hasIcon',\n  title: 'Icon',\n  path: 'options.hasIcon',\n  group: AXP_BEHAVIOR_PROPERTY_GROUP,\n  defaultValue: true,\n});\n\nexport const AXP_ICON_PROPERTY = createStringProperty({\n  name: 'icon',\n  title: 'Icon Name',\n  group: AXP_BEHAVIOR_PROPERTY_GROUP,\n  path: 'options.icon',\n});\n\nexport const AXP_IS_LOADING_PROPERTY = createBooleanProperty({\n  name: 'loading',\n  title: 'Is Loading',\n  group: AXP_BEHAVIOR_PROPERTY_GROUP,\n  path: 'options.loading',\n});\n\nexport const AXP_HAS_CLEAR_BUTTON_PROPERTY = createBooleanProperty({\n  name: 'hasClearButton',\n  title: 'Clear Button',\n  path: 'options.hasClearButton',\n  group: AXP_BEHAVIOR_PROPERTY_GROUP,\n  defaultValue: false,\n});\n\nexport const AXP_ALLOW_SEARCH_PROPERTY = createBooleanProperty({\n  name: 'allowSearch',\n  title: 'Allow Search',\n  path: 'options.allowSearch',\n  group: AXP_BEHAVIOR_PROPERTY_GROUP,\n  defaultValue: false,\n});\n\nexport const AXP_HAS_COPY_ICON_PROPERTY = createBooleanProperty({\n  name: 'hasCopyIcon',\n  title: 'Copy Icon',\n  path: 'options.hasCopyIcon',\n  group: AXP_BEHAVIOR_PROPERTY_GROUP,\n  defaultValue: true,\n});\n\nexport const AXP_HAS_EYE_ICON_PROPERTY = createBooleanProperty({\n  name: 'hasEyeIcon',\n  title: 'Eye Icon',\n  path: 'options.hasEyeIcon',\n  group: AXP_BEHAVIOR_PROPERTY_GROUP,\n  defaultValue: true,\n});\n\nexport const AXP_DOWNLOADABLE_PROPERTY = createBooleanProperty({\n  name: 'downloadable',\n  title: 'Downloadable',\n  path: 'options.downloadable',\n  group: AXP_BEHAVIOR_PROPERTY_GROUP,\n  defaultValue: true,\n});\n\n// Converted with createStringProperty\nexport const AXP_TRULY_TEXT_PROPERTY = createStringProperty({\n  name: 'trulyText',\n  title: 'Truly Text',\n  path: 'options.trulyText',\n  group: AXP_BEHAVIOR_PROPERTY_GROUP,\n});\n\nexport const AXP_FALSY_TEXT_PROPERTY = createStringProperty({\n  name: 'falsyText',\n  title: 'Falsy Text',\n  path: 'options.falsyText',\n  group: AXP_BEHAVIOR_PROPERTY_GROUP,\n});\n\nexport const AXP_TEXT_PROPERTY = createStringProperty({\n  name: 'text',\n  title: 'Text',\n  path: 'options.text',\n  group: AXP_BEHAVIOR_PROPERTY_GROUP,\n});\n\nexport const AXP_TITLE_PROPERTY = createStringProperty({\n  name: 'title',\n  title: 'Title',\n  path: 'options.title',\n  group: AXP_BEHAVIOR_PROPERTY_GROUP,\n});\n\nexport const AXP_LABEL_PROPERTY = createStringProperty({\n  name: 'label',\n  title: 'Label',\n  path: 'options.label',\n  group: AXP_BEHAVIOR_PROPERTY_GROUP,\n  defaultValue: '',\n});\n\nexport const AXP_VALUE_FIELD_PROPERTY = createStringProperty({\n  name: 'valueField',\n  title: 'Value Field',\n  path: 'options.valueField',\n  group: AXP_DATA_PROPERTY_GROUP,\n  defaultValue: 'id',\n});\n\nexport const AXP_TEXT_FIELD_PROPERTY = createStringProperty({\n  name: 'textField',\n  title: 'Text Field',\n  path: 'options.textField',\n  group: AXP_DATA_PROPERTY_GROUP,\n  defaultValue: 'title',\n});\n\nexport const AXP_DESCRIPTION_PROPERTY = createStringProperty({\n  name: 'description',\n  title: 'Description',\n  path: 'options.description',\n  group: AXP_BEHAVIOR_PROPERTY_GROUP,\n});\n\nexport const AXP_STYLE_COLOR_PROPERTY = createSelectProperty({\n  name: 'color',\n  title: 'Color',\n  dataSource: AX_STYLE_COLOR_TYPES,\n  defaultValue: 'primary',\n  path: 'options.color',\n  group: AXP_STYLING_PROPERTY_GROUP,\n});\n\nexport const AXP_STYLE_LOOK_PROPERTY = createSelectProperty({\n  name: 'look',\n  title: 'Look',\n  dataSource: AX_STYLE_LOOK_TYPES,\n  defaultValue: 'solid',\n  path: 'options.look',\n  group: AXP_STYLING_PROPERTY_GROUP,\n});\n\nexport const AXP_TEXT_ALIGN_PROPERTY = createSelectProperty({\n  name: 'textAlign',\n  title: 'Text Align',\n  path: 'options.textAlign',\n  group: AXP_STYLING_PROPERTY_GROUP,\n  defaultValue: { id: 'left', title: 'Left' },\n  dataSource: [\n    { id: 'left', title: 'Left' },\n    { id: 'center', title: 'Center' },\n    { id: 'right', title: 'Right' },\n    { id: 'justify', title: 'Justify' },\n  ],\n});\n\nexport const AXP_VERTICAL_ALIGN_PROPERTY = createSelectProperty({\n  name: 'verticalAlign',\n  title: 'Vertical Align',\n  path: 'options.verticalAlign',\n  group: AXP_STYLING_PROPERTY_GROUP,\n  defaultValue: { id: 'top', title: 'Top' },\n  dataSource: [\n    { id: 'top', title: 'Top' },\n    { id: 'middle', title: 'Middle' },\n    { id: 'bottom', title: 'Bottom' },\n    { id: 'baseline', title: 'Baseline' },\n  ],\n});\n\nexport const AXP_DATE_FORMAT_PROPERTY = createSelectProperty({\n  name: 'format',\n  title: 'Format',\n  dataSource: [\n    { id: 'date', title: 'Date' },\n    { id: 'datetime', title: 'DateTime' },\n    { id: 'time', title: 'Time' },\n  ],\n  defaultValue: { id: 'date', title: 'Date' },\n  path: 'options.format',\n  group: AXP_BEHAVIOR_PROPERTY_GROUP,\n});\n\nexport const AXP_DATE_DEPTH_PROPERTY = createSelectProperty({\n  name: 'depth',\n  title: 'Input Depth',\n  dataSource: [\n    { id: 'year', title: 'Year' },\n    { id: 'month', title: 'Month' },\n    { id: 'day', title: 'Day' },\n  ],\n  path: 'options.depth',\n  group: AXP_BEHAVIOR_PROPERTY_GROUP,\n  defaultValue: { id: 'day', title: 'Day' },\n});\n\n/** Max span in days between from/to when filter operation is `between`. */\nexport const AXP_DATE_RANGE_LIMIT_PROPERTY = createNumberProperty({\n  name: 'limit',\n  title: 'Range Limit (Days)',\n  path: 'options.limit',\n  group: AXP_BEHAVIOR_PROPERTY_GROUP,\n});\n\nexport function booleanDefaultProperty(defaultValue: boolean = false): AXPWidgetProperty {\n  return {\n    name: 'defaultValue',\n    title: 'Default Value',\n    group: AXP_DATA_PROPERTY_GROUP,\n    schema: {\n      dataType: 'boolean',\n      defaultValue: defaultValue,\n      interface: {\n        name: 'defaultValue',\n        path: 'defaultValue',\n        type: AXPWidgetsCatalog.toggle,\n      },\n    },\n    visible: true,\n  };\n}\n\nexport function plainTextDefaultProperty(): AXPWidgetProperty {\n  return {\n    name: 'defaultValue',\n    title: 'Default Value',\n    group: AXP_DATA_PROPERTY_GROUP,\n    schema: {\n      dataType: 'string',\n      interface: {\n        name: 'defaultValue',\n        path: 'defaultValue',\n        type: AXPWidgetsCatalog.text,\n        options: {\n          placeholder: '@layout-designer:property-editor.placeholders.default-value-plain-text',\n        },\n      },\n    },\n    visible: true,\n  };\n}\n\nexport function largeTextDefaultProperty(): AXPWidgetProperty {\n  return {\n    name: 'defaultValue',\n    title: 'Default Value',\n    group: AXP_DATA_PROPERTY_GROUP,\n    schema: {\n      dataType: 'string',\n      interface: {\n        name: 'defaultValue',\n        path: 'defaultValue',\n        type: AXPWidgetsCatalog.largeText,\n        options: {\n          placeholder: '@layout-designer:property-editor.placeholders.default-value-large-text',\n        },\n      },\n    },\n    visible: true,\n  };\n}\n\nexport function richTextDefaultProperty(): AXPWidgetProperty {\n  return {\n    name: 'defaultValue',\n    title: 'Default Value',\n    group: AXP_DATA_PROPERTY_GROUP,\n    schema: {\n      dataType: 'string',\n      interface: {\n        name: 'defaultValue',\n        path: 'defaultValue',\n        type: AXPWidgetsCatalog.richText,\n        options: {\n          placeholder: '@layout-designer:property-editor.placeholders.default-value-rich-text',\n        },\n      },\n    },\n    visible: true,\n  };\n}\n\n/**\n * Default value editor for select-editor: uses `context.options(key)` so the default picker reads\n * the **host** widget's options from the shared context (not the nested property field's `widget`).\n */\nexport function selectEditorDefaultValueProperty(): AXPWidgetProperty {\n  return {\n    name: 'defaultValue',\n    title: 'Default Value',\n    group: AXP_DATA_PROPERTY_GROUP,\n    schema: {\n      dataType: 'object',\n      interface: {\n        name: 'defaultValue',\n        path: 'defaultValue',\n        type: AXPWidgetsCatalog.select,\n        options: {\n          placeholder: '@layout-designer:property-editor.placeholders.default-value-select',\n          dataSource: '{{ context.options(\"dataSource\") }}',\n          valueField: '{{ context.options(\"valueField\") }}',\n          textField: '{{ context.options(\"textField\") }}',\n          multiple: '{{ context.options(\"multiple\") }}',\n          hasClearButton: true,\n        },\n      },\n    },\n    visible: true,\n  };\n}\n\n/**\n * Default value editor for selection-list-editor: uses the select widget in the designer so picking\n * a default matches select UX while still binding to the host's dataSource / fields via `context.options`.\n */\nexport function selectionListEditorDefaultValueProperty(): AXPWidgetProperty {\n  return {\n    name: 'defaultValue',\n    title: 'Default Value',\n    group: AXP_DATA_PROPERTY_GROUP,\n    schema: {\n      dataType: 'object',\n      interface: {\n        name: 'defaultValue',\n        path: 'defaultValue',\n        type: AXPWidgetsCatalog.select,\n        options: {\n          placeholder: '@layout-designer:property-editor.placeholders.default-value-select',\n          dataSource: '{{ context.options(\"dataSource\") }}',\n          valueField: '{{ context.options(\"valueField\") }}',\n          textField: '{{ context.options(\"textField\") }}',\n          multiple: '{{ context.options(\"multiple\") }}',\n          hasClearButton: true,\n        },\n      },\n    },\n    visible: true,\n  };\n}\n\nexport function numberDefaultProperty(): AXPWidgetProperty {\n  return {\n    name: 'defaultValue',\n    title: 'Default Value',\n    group: AXP_DATA_PROPERTY_GROUP,\n    schema: {\n      dataType: 'number',\n      interface: {\n        name: 'defaultValue',\n        path: 'defaultValue',\n        type: AXPWidgetsCatalog.number,\n        options: {\n          placeholder: '@layout-designer:property-editor.placeholders.default-value-number',\n        },\n      },\n    },\n    visible: true,\n  };\n}\n\nexport function numberMinValueProperty(value?: number | null): AXPWidgetProperty {\n  return {\n    name: 'minValue',\n    title: 'Min Value',\n    group: AXP_BEHAVIOR_PROPERTY_GROUP,\n    order: 9,\n    schema: {\n      dataType: 'number',\n      defaultValue: value,\n      interface: {\n        name: 'minValue',\n        path: 'options.minValue',\n        type: AXPWidgetsCatalog.number,\n        options: {\n          placeholder: '@layout-designer:property-editor.placeholders.number-min-value',\n        },\n      },\n    },\n    visible: true,\n  };\n}\n\nexport function numberMaxValueProperty(value?: number | null): AXPWidgetProperty {\n  return {\n    name: 'maxValue',\n    title: 'Max Value',\n    group: AXP_BEHAVIOR_PROPERTY_GROUP,\n    order: 10,\n    schema: {\n      dataType: 'number',\n      defaultValue: value,\n      interface: {\n        name: 'maxValue',\n        path: 'options.maxValue',\n        type: AXPWidgetsCatalog.number,\n        options: {\n          placeholder: '@layout-designer:property-editor.placeholders.number-max-value',\n        },\n      },\n    },\n    visible: true,\n  };\n}\n\nexport const AXP_MULTI_LANGUAGE_PROPERTY = createBooleanProperty({\n  name: 'multiLanguage',\n  title: 'Multi Language',\n  path: 'options.multiLanguage',\n  group: AXP_BEHAVIOR_PROPERTY_GROUP,\n  defaultValue: false,\n});\n\nexport const AXP_SPIN_BUTTON_PROPERTY = createBooleanProperty({\n  name: 'spinButton',\n  title: 'Spin Button',\n  path: 'options.spinButton',\n  group: AXP_BEHAVIOR_PROPERTY_GROUP,\n});\n\nexport const AXP_NUMBER_SEPARATOR_PROPERTY = createStringProperty({\n  name: 'seprator',\n  title: 'Thousands Separator',\n  path: 'options.seprator',\n  group: AXP_BEHAVIOR_PROPERTY_GROUP,\n});\n\nexport const AXP_DEFAULT_ROW_COUNT_PROPERTY = createNumberProperty({\n  name: 'defaultRowCount',\n  title: 'Default Row Count',\n  path: 'options.defaultRowCount',\n  group: AXP_BEHAVIOR_PROPERTY_GROUP,\n});\n\nexport const AXP_MIN_LINE_COUNT_PROPERTY = createNumberProperty({\n  name: 'minLineCount',\n  title: 'Min Line Count',\n  path: 'options.minLineCount',\n  group: AXP_BEHAVIOR_PROPERTY_GROUP,\n});\n\nexport const AXP_MAX_LINE_COUNT_PROPERTY = createNumberProperty({\n  name: 'maxLineCount',\n  title: 'Max Line Count',\n  path: 'options.maxLineCount',\n  group: AXP_BEHAVIOR_PROPERTY_GROUP,\n});\n\nexport const AXP_FIT_LINE_COUNT_PROPERTY = createBooleanProperty({\n  name: 'fitLineCount',\n  title: 'Fit Line Count',\n  path: 'options.fitLineCount',\n  group: AXP_BEHAVIOR_PROPERTY_GROUP,\n});\n\nexport const AXP_SHOW_PASSWORD_PROPERTY = createBooleanProperty({\n  name: 'showPassword',\n  title: 'Show Password',\n  path: 'options.showPassword',\n  group: AXP_BEHAVIOR_PROPERTY_GROUP,\n});\n\nexport const AXP_TRIGGERS_PROPERTY: AXPWidgetProperty = {\n  name: 'triggers',\n  title: 'Triggers',\n  group: AXP_TRIGGERS_PROPERTY_GROUP,\n  showLabel: false,\n  schema: {\n    dataType: 'object',\n    interface: {\n      name: 'triggers',\n      path: 'triggers',\n      type: 'triggers-editor',\n    },\n  },\n  visible: true,\n};\n","import { AXPWidgetsCatalog } from '@acorex/platform/contracts';\nimport { AXPWidgetProperty, AXPWidgetPropertyGroup, cloneProperty, createBooleanProperty } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_BEHAVIOR_PROPERTY_GROUP } from './groups';\n\nexport const AXP_LAYOUT_GRID_PROPERTY_GROUP: AXPWidgetPropertyGroup = {\n  name: 'grid',\n  order: 1,\n  title: 'Grid Layout',\n};\n\nexport const AXP_LAYOUT_FLEX_PROPERTY_GROUP: AXPWidgetPropertyGroup = {\n  name: 'flex',\n  order: 1,\n  title: 'Flex Layout',\n};\n\nexport const AXP_BOX_MODEL_PROPERTY_GROUP: AXPWidgetPropertyGroup = {\n  name: 'box',\n  order: 1,\n  title: 'Box Model',\n};\n\nexport const AXP_LAYOUT_TABLE_PROPERTY_GROUP: AXPWidgetPropertyGroup = {\n  name: 'table',\n  order: 1,\n  title: 'Table Layout',\n};\n\nexport const AXP_LAYOUT_GAP_PROPERTY: AXPWidgetProperty = {\n  name: 'gap',\n  title: 'Gap',\n  group: AXP_LAYOUT_GRID_PROPERTY_GROUP,\n  schema: {\n    dataType: 'number',\n    defaultValue: 2,\n    interface: {\n      name: 'gap',\n      path: 'options.gap',\n      type: AXPWidgetsCatalog.number,\n      options: {\n        minValue: 0,\n        maxValue: 12,\n      },\n    },\n  },\n  visible: true,\n};\n\nexport const AXP_LAYOUT_COLUMNS_PROPERTY: AXPWidgetProperty = {\n  name: 'cols',\n  title: 'Columns',\n  group: AXP_LAYOUT_GRID_PROPERTY_GROUP,\n  schema: {\n    dataType: 'number',\n    defaultValue: 1,\n    interface: {\n      name: 'cols',\n      path: 'options.cols',\n      type: AXPWidgetsCatalog.number,\n      options: {\n        minValue: 1,\n        maxValue: 12,\n      },\n    },\n  },\n  visible: true,\n};\n\nexport const AXP_LAYOUT_ROWS_PROPERTY: AXPWidgetProperty = {\n  name: 'rows',\n  title: 'Rows',\n  group: AXP_LAYOUT_GRID_PROPERTY_GROUP,\n  schema: {\n    dataType: 'number',\n    defaultValue: 1,\n    interface: {\n      name: 'rows',\n      path: 'options.rows',\n      type: AXPWidgetsCatalog.number,\n      options: {\n        minValue: 1,\n        maxValue: 100,\n      },\n    },\n  },\n  visible: true,\n};\n\nexport const AXP_LAYOUT_GRID_PROPERTIES = [\n  AXP_LAYOUT_GAP_PROPERTY,\n  AXP_LAYOUT_COLUMNS_PROPERTY,\n  AXP_LAYOUT_ROWS_PROPERTY,\n];\n\nexport const AXP_LAYOUT_GRID_ROW_PROPERTIES = [\n  AXP_LAYOUT_GAP_PROPERTY,\n  cloneProperty(AXP_LAYOUT_COLUMNS_PROPERTY, { schema: { defaultValue: 12 } }),\n];\n\nexport const AXP_LAYOUT_GRID_ITEM_PROPERTY: AXPWidgetProperty = {\n  name: 'gridItem',\n  title: 'Grid Item',\n  group: AXP_LAYOUT_GRID_PROPERTY_GROUP,\n  schema: {\n    dataType: 'object',\n    interface: {\n      name: 'gridItem',\n      path: 'options',\n      type: AXPWidgetsCatalog.gridItemOptions,\n      options: {},\n    },\n  },\n  visible: true,\n};\n\nexport const AXP_LAYOUT_SPACING_PROPERTY: AXPWidgetProperty = {\n  name: 'spacing',\n  title: 'Spacing',\n  group: AXP_BOX_MODEL_PROPERTY_GROUP,\n  schema: {\n    dataType: 'object',\n    interface: {\n      name: 'spacing',\n      path: 'options.spacing',\n      type: AXPWidgetsCatalog.spacing,\n      options: {},\n    },\n  },\n  visible: true,\n};\n\nexport const AXP_LAYOUT_BORDER_PROPERTY: AXPWidgetProperty = {\n  name: 'border',\n  title: 'Border',\n  group: AXP_BOX_MODEL_PROPERTY_GROUP,\n  schema: {\n    dataType: 'object',\n    interface: {\n      name: 'border',\n      path: 'options.border',\n      type: AXPWidgetsCatalog.border,\n      options: {},\n    },\n  },\n  visible: true,\n};\n\nexport const AXP_LAYOUT_FLEX_PROPERTY: AXPWidgetProperty = {\n  name: 'flex',\n  title: 'Flex',\n  group: AXP_LAYOUT_FLEX_PROPERTY_GROUP,\n  schema: {\n    dataType: 'object',\n    interface: {\n      name: 'flex',\n      path: 'options',\n      type: AXPWidgetsCatalog.flexOptions,\n      options: {},\n    },\n  },\n  visible: true,\n};\n\nexport const AXP_LAYOUT_FLEX_ITEM_PROPERTY: AXPWidgetProperty = {\n  name: 'flexItem',\n  title: 'Flex Item',\n  group: AXP_LAYOUT_FLEX_PROPERTY_GROUP,\n  schema: {\n    dataType: 'object',\n    interface: {\n      name: 'flexItem',\n      path: 'options',\n      type: AXPWidgetsCatalog.flexItemOptions,\n      options: {},\n    },\n  },\n  visible: true,\n};\n\nexport const AXP_LAYOUT_GRID_PROPERTY: AXPWidgetProperty = {\n  name: 'grid',\n  title: 'Grid',\n  group: AXP_LAYOUT_GRID_PROPERTY_GROUP,\n  schema: {\n    dataType: 'object',\n    interface: {\n      name: 'grid',\n      path: 'options.grid',\n      type: AXPWidgetsCatalog.gridOptions,\n      options: {},\n    },\n  },\n  visible: true,\n};\n\nexport const AXP_TABLE_COLUMNS_PROPERTY: AXPWidgetProperty = {\n  name: 'columns',\n  title: 'Columns',\n  group: AXP_LAYOUT_TABLE_PROPERTY_GROUP,\n  schema: {\n    dataType: 'number',\n    defaultValue: 3,\n    interface: {\n      name: 'columns',\n      path: 'options.columns',\n      type: AXPWidgetsCatalog.number,\n      options: {\n        minValue: 1,\n        maxValue: 12,\n      },\n    },\n  },\n  visible: true,\n};\n\n// Removed rowHeight/rows from table properties\n\nexport const AXP_TABLE_ITEM_COLSPAN_PROPERTY: AXPWidgetProperty = {\n  name: 'colSpan',\n  title: 'Column Span',\n  group: AXP_LAYOUT_TABLE_PROPERTY_GROUP,\n  schema: {\n    dataType: 'number',\n    defaultValue: 1,\n    interface: {\n      name: 'colSpan',\n      path: 'options.colSpan',\n      type: AXPWidgetsCatalog.number,\n      options: {\n        minValue: 1,\n        maxValue: 24,\n      },\n    },\n  },\n  visible: true,\n};\n\nexport const AXP_TABLE_ITEM_ROWSPAN_PROPERTY: AXPWidgetProperty = {\n  name: 'rowSpan',\n  title: 'Row Span',\n  group: AXP_LAYOUT_TABLE_PROPERTY_GROUP,\n  schema: {\n    dataType: 'number',\n    defaultValue: 1,\n    interface: {\n      name: 'rowSpan',\n      path: 'options.rowSpan',\n      type: AXPWidgetsCatalog.number,\n      options: {\n        minValue: 1,\n        maxValue: 100,\n      },\n    },\n  },\n  visible: true,\n};\n\n// Removed header/footer/sticky related table properties\n\nexport const AXP_LAYOUT_ADVANCED_GRID_PROPERTY: AXPWidgetProperty = {\n  name: 'advancedGrid',\n  title: 'Advanced Grid',\n  group: AXP_LAYOUT_GRID_PROPERTY_GROUP,\n  schema: {\n    dataType: 'object',\n    interface: {\n      name: 'advancedGrid',\n      path: 'options.advancedGrid',\n      type: AXPWidgetsCatalog.advancedGridOptions,\n      options: {},\n    },\n  },\n  visible: true,\n};\n\nexport const AXP_LAYOUT_SHOW_HEADER_PROPERTY = createBooleanProperty({\n  name: 'showHeader',\n  title: 'Show Header',\n  group: AXP_BEHAVIOR_PROPERTY_GROUP,\n  path: 'options.showHeader',\n  defaultValue: true,\n});\n\nexport const AXP_LAYOUT_DIRECTION_PROPERTY: AXPWidgetProperty = {\n  name: 'direction',\n  title: 'Direction',\n  group: AXP_BOX_MODEL_PROPERTY_GROUP,\n  order: 99,\n  schema: {\n    dataType: 'string',\n    interface: {\n      name: 'direction',\n      path: 'options.direction',\n      type: AXPWidgetsCatalog.direction,\n      options: {},\n    },\n  },\n  visible: true,\n};\n","import { AXPWidgetsCatalog } from '@acorex/platform/contracts';\nimport { AXPWidgetProperty } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_STYLING_PROPERTY_GROUP } from './groups';\n\nconst TABLE_COLUMN_ALIGN_DATA_SOURCE = [\n  { id: 'start', title: 'Start' },\n  { id: 'center', title: 'Center' },\n  { id: 'end', title: 'End' },\n] as const;\n\nexport const AXP_TABLE_COLUMN_HEADER_ALIGN_PROPERTY: AXPWidgetProperty = {\n  name: 'alignHeader',\n  title: 'Header alignment',\n  group: AXP_STYLING_PROPERTY_GROUP,\n  schema: {\n    dataType: 'string',\n    defaultValue: 'start',\n    interface: {\n      name: 'alignHeader',\n      path: 'options.align.header',\n      type: AXPWidgetsCatalog.select,\n      options: {\n        dataSource: [...TABLE_COLUMN_ALIGN_DATA_SOURCE],\n      },\n    },\n  },\n  visible: true,\n};\n\nexport const AXP_TABLE_COLUMN_CELL_ALIGN_PROPERTY: AXPWidgetProperty = {\n  name: 'alignCell',\n  title: 'Cell alignment',\n  group: AXP_STYLING_PROPERTY_GROUP,\n  schema: {\n    dataType: 'string',\n    defaultValue: 'start',\n    interface: {\n      name: 'alignCell',\n      path: 'options.align.cell',\n      type: AXPWidgetsCatalog.select,\n      options: {\n        dataSource: [...TABLE_COLUMN_ALIGN_DATA_SOURCE],\n      },\n    },\n  },\n  visible: true,\n};\n\n/** Optional column designer fields; spread next to `AXP_TABLE_COLUMN_WIDTH_PROPERTY` where needed. */\nexport const AXP_TABLE_COLUMN_ALIGNMENT_PROPERTIES: AXPWidgetProperty[] = [\n  AXP_TABLE_COLUMN_HEADER_ALIGN_PROPERTY,\n  AXP_TABLE_COLUMN_CELL_ALIGN_PROPERTY,\n];\n\nexport const AXP_TABLE_COLUMN_WIDTH_PROPERTY: AXPWidgetProperty = {\n  name: 'width',\n  title: 'Width',\n  group: AXP_STYLING_PROPERTY_GROUP,\n  schema: {\n    dataType: 'string',\n    defaultValue: '300px',\n    interface: {\n      name: 'width',\n      path: 'options.width',\n      type: AXPWidgetsCatalog.text,\n    },\n  },\n  visible: true,\n};\nexport const AXP_TABLE_COLUMN_HEIGHT_PROPERTY: AXPWidgetProperty = {\n  name: 'height',\n  title: 'Height',\n  group: AXP_STYLING_PROPERTY_GROUP,\n  schema: {\n    dataType: 'string',\n    defaultValue: '300px',\n    interface: {\n      name: 'height',\n      path: 'options.height',\n      type: AXPWidgetsCatalog.text,\n    },\n  },\n  visible: true,\n};\n","import { AXPWidgetsCatalog } from '@acorex/platform/contracts';\nimport { AXPWidgetProperty } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_VALIDATION_PROPERTY_GROUP } from './groups';\n\nexport const AXP_REQUIRED_VALIDATION_PROPERTY: AXPWidgetProperty = {\n  name: 'requiredValidation',\n  title: 'Required',\n  group: AXP_VALIDATION_PROPERTY_GROUP,\n  schema: {\n    dataType: 'object',\n    interface: {\n      name: 'requiredValidation',\n      path: 'options.validations.required',\n      type: AXPWidgetsCatalog.requiredValidation,\n      defaultValue: false,\n    },\n  },\n  visible: true,\n};\n\nexport const AXP_MIN_LENGTH_VALIDATION_PROPERTY: AXPWidgetProperty = {\n  name: 'minLengthValidation',\n  title: 'Minimum Length',\n  group: AXP_VALIDATION_PROPERTY_GROUP,\n  schema: {\n    dataType: 'object',\n    interface: {\n      name: 'minLengthValidation',\n      path: 'options.validations.minLength',\n      type: AXPWidgetsCatalog.minLengthValidation,\n      defaultValue: null,\n    },\n  },\n  visible: true,\n};\n\nexport const AXP_MAX_LENGTH_VALIDATION_PROPERTY: AXPWidgetProperty = {\n  name: 'maxLengthValidation',\n  title: 'Maximum Length',\n  group: AXP_VALIDATION_PROPERTY_GROUP,\n  schema: {\n    dataType: 'object',\n    interface: {\n      name: 'maxLengthValidation',\n      path: 'options.validations.maxLength',\n      type: AXPWidgetsCatalog.maxLengthValidation,\n      defaultValue: null,\n    },\n  },\n  visible: true,\n};\n\nexport const AXP_REGULAR_EXPRESSION_VALIDATION_PROPERTY: AXPWidgetProperty = {\n  name: 'regularExpressionValidation',\n  title: 'Regular Expression',\n  group: AXP_VALIDATION_PROPERTY_GROUP,\n  schema: {\n    dataType: 'object',\n    interface: {\n      name: 'regularExpressionValidation',\n      path: 'options.validations.regex',\n      type: AXPWidgetsCatalog.regularExpressionValidation,\n      defaultValue: false,\n    },\n  },\n  visible: true,\n};\n\nexport const AXP_LESS_THAN_VALIDATION_PROPERTY: AXPWidgetProperty = {\n  name: 'lessThanValidation',\n  title: 'Less Than',\n  group: AXP_VALIDATION_PROPERTY_GROUP,\n  schema: {\n    dataType: 'object',\n    interface: {\n      name: 'lessThanValidation',\n      path: 'options.validations.lessThan',\n      type: AXPWidgetsCatalog.lessThanValidation,\n      defaultValue: false,\n    },\n  },\n  visible: true,\n};\n\nexport const AXP_GREATER_THAN_VALIDATION_PROPERTY: AXPWidgetProperty = {\n  name: 'greaterThanValidation',\n  title: 'Greater Than',\n  group: AXP_VALIDATION_PROPERTY_GROUP,\n  schema: {\n    dataType: 'object',\n    interface: {\n      name: 'greaterThanValidation',\n      path: 'options.validations.greaterThan',\n      type: AXPWidgetsCatalog.greaterThanValidation,\n      defaultValue: false,\n    },\n  },\n  visible: true,\n};\n\nexport const AXP_BETWEEN_VALIDATION_PROPERTY: AXPWidgetProperty = {\n  name: 'betweenValidation',\n  title: 'Between',\n  group: AXP_VALIDATION_PROPERTY_GROUP,\n  schema: {\n    dataType: 'object',\n    interface: {\n      name: 'betweenValidation',\n      path: 'options.validations.between',\n      type: AXPWidgetsCatalog.betweenValidation,\n      defaultValue: false,\n    },\n  },\n  visible: true,\n};\n\nexport const AXP_EQUAL_VALIDATION_PROPERTY: AXPWidgetProperty = {\n  name: 'equalValidation',\n  title: 'Equal',\n  group: AXP_VALIDATION_PROPERTY_GROUP,\n  schema: {\n    dataType: 'object',\n    interface: {\n      name: 'equalValidation',\n      path: 'options.validations.equal',\n      type: AXPWidgetsCatalog.equalValidation,\n      defaultValue: false,\n    },\n  },\n  visible: true,\n};\n\nexport const AXP_CALLBACK_VALIDATION_PROPERTY: AXPWidgetProperty = {\n  name: 'callbackValidation',\n  title: 'Callback',\n  group: AXP_VALIDATION_PROPERTY_GROUP,\n  schema: {\n    dataType: 'object',\n    interface: {\n      name: 'callbackValidation',\n      path: 'options.validations.callback',\n      type: AXPWidgetsCatalog.callbackValidation,\n      defaultValue: false,\n    },\n  },\n  visible: true,\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}