{"version":3,"file":"acorex-platform-layout-widget-core-contracts.mjs","sources":["../../../../libs/platform/layout/widget-core-contracts/src/lib/types/widget-group.types.ts","../../../../libs/platform/layout/widget-core-contracts/src/lib/types/widget-status.types.ts","../../../../libs/platform/layout/widget-core-contracts/src/lib/types/widget.types.ts","../../../../libs/platform/layout/widget-core-contracts/src/lib/types/index.ts","../../../../libs/platform/layout/widget-core-contracts/src/lib/index.ts","../../../../libs/platform/layout/widget-core-contracts/src/acorex-platform-layout-widget-core-contracts.ts"],"sourcesContent":["export type AXPWidgetGroup =\n  'form-element' |\n  'dashboard-widget' |\n  'form-template' |\n  'property-editor' |\n  'meta-data' |\n  'setting-widget' |\n  'entity-widget' |\n  'utility-widget' |\n  'base-widget';\n\nexport enum AXPWidgetGroupEnum {\n  FormElement = 'form-element',\n  DashboardWidget = 'dashboard-widget',\n  FormTemplate = 'form-template',\n  PropertyEditor = 'property-editor',\n  MetaData = 'meta-data',\n  SettingWidget = 'setting-widget',\n  EntityWidget = 'entity-widget',\n  UtilityWidget = 'utility-widget',\n  BaseWidget = 'base-widget',\n}\n","export enum AXPPageStatus {\n    // Idle statuses\n    Idle = 'idle',                 // The page is idle.\n\n    // Rendering statuses\n    Rendering = 'rendering',       // The page is being rendered.\n    Rendered = 'rendered',         // The rendering process is complete.\n\n    // Processing statuses\n    Processing = 'processing',     // The page is performing a task or interaction.\n\n    // Submission statuses\n    Submitting = 'submitting',   // The form is being submitted.\n    Submitted = 'submitted',     // Submission is completed.\n\n    // Validation statuses\n    Validating = 'validating',     // The form is being validated.\n    Validated = 'validated',       // Validation is completed.\n\n    // Error handling\n    Error = 'error',\n}\n\nexport enum AXPWidgetStatus {\n    // Rendering statuses\n    Rendering = 'rendering',       // The widget is being mounted and bound.\n    Rendered = 'rendered',         // The widget shell is ready (async hydration may still run).\n\n    // Error handling\n    Error = 'error',               // An error occurred during render or hydration.\n}\n","\n\n\n\nexport type { AXPWidgetNode, AXPWidgetRenderMode };\nimport { AXPDataType, AXPDefinitionCategory, AXPExpression, AXPMetaData, AXPMultiLanguageString, AXPOptionsData, AXPPartialNested, AXPValidationRules, type AXPWidgetNode, type AXPWidgetRenderMode, AXPWidgetsCatalog } from '@acorex/platform/contracts';\nimport { InjectionToken } from '@angular/core';\nimport { cloneDeep, isNil, merge } from 'lodash-es';\n\nimport { AXPWidgetGroup } from './widget-group.types';\nimport { AXPWidgetTypesMap } from './widget-types-map.types';\nimport { AXPPageStatus } from './widget-status.types';\n\nexport interface AXPWidgetPropertyGroup {\n  name: string;\n  title: string;\n  order: number;\n}\n\nexport interface AXPWidgetProperty {\n  name: string;\n  title: string;\n  description?: string;\n  group: AXPWidgetPropertyGroup;\n  order?: number;\n  /**\n   * Controls whether the property title label is shown in the property viewer panel.\n   * Defaults to true when omitted.\n   */\n  showLabel?: boolean;\n  schema: {\n    dataType: AXPDataType;\n    nullable?: boolean;\n    defaultValue?: any | string | ((context: any | null) => any);\n    interface: Required<Pick<AXPWidgetNode, 'path'>> & Omit<AXPWidgetNode, 'path'>;\n  };\n  //options?: AXPOptionsData;\n  validations?: AXPValidationRules;\n  visible: boolean | AXPExpression;\n  binding?: {\n    enabled: boolean;\n    /** When set, the expression is edited at path + '.' + optionKey (e.g. options.visibility). */\n    optionKey?: string;\n  };\n}\n\nexport function cloneProperty(\n  property: AXPWidgetProperty,\n  values: AXPPartialNested<AXPWidgetProperty>,\n): AXPWidgetProperty {\n  return merge(cloneDeep(property), values);\n}\n\nexport function createStringProperty(ctor: {\n  defaultValue?: string;\n  name: string;\n  title: string;\n  path?: string;\n  group: AXPWidgetPropertyGroup;\n  visible?: boolean | AXPExpression;\n}): AXPWidgetProperty {\n  return {\n    name: ctor.name,\n    title: ctor.title,\n    group: ctor.group,\n    schema: {\n      dataType: 'string',\n      defaultValue: ctor.defaultValue,\n      interface: {\n        name: ctor.name,\n        path: ctor.path ?? ctor.name,\n        type: AXPWidgetsCatalog.text,\n      },\n    },\n    visible: !isNil(ctor.visible) ? ctor.visible : true,\n  };\n}\n\nexport function createNumberProperty(ctor: {\n  defaultValue?: number;\n  name: string;\n  title: string;\n  path?: string;\n  group: AXPWidgetPropertyGroup;\n  visible?: boolean | AXPExpression;\n  options?: {\n    minValue?: number;\n    maxValue?: number;\n    decimals?: number;\n  };\n}): AXPWidgetProperty {\n  return {\n    name: ctor.name,\n    title: ctor.title,\n    group: ctor.group,\n    schema: {\n      dataType: 'number',\n      defaultValue: ctor.defaultValue,\n      interface: {\n        name: ctor.name,\n        path: ctor.path ?? ctor.name,\n        type: AXPWidgetsCatalog.number,\n        options: ctor.options,\n      },\n    },\n    visible: !isNil(ctor.visible) ? ctor.visible : true,\n  };\n}\n\nexport function createBooleanProperty(ctor: {\n  defaultValue?: boolean;\n  name: string;\n  title: string;\n  path?: string;\n  group: AXPWidgetPropertyGroup;\n  visible?: boolean | AXPExpression;\n}): AXPWidgetProperty {\n  return {\n    name: ctor.name,\n    title: ctor.title,\n    group: ctor.group,\n    schema: {\n      dataType: 'boolean',\n      defaultValue: ctor.defaultValue ?? false,\n      interface: {\n        name: ctor.name,\n        path: ctor.path ?? ctor.name,\n        type: AXPWidgetsCatalog.toggle,\n      },\n    },\n    visible: !isNil(ctor.visible) ? ctor.visible : true,\n    binding: {\n      enabled: true,\n    },\n  };\n}\n\nexport function createSelectProperty<T = string | { id: string; title: string }>(ctor: {\n  defaultValue: T | T[] | any;\n  dataSource: T[];\n  name: string;\n  title: string;\n  path?: string;\n  group: AXPWidgetPropertyGroup;\n  visible?: boolean | AXPExpression;\n}): AXPWidgetProperty {\n  return {\n    name: ctor.name,\n    title: ctor.title,\n    group: ctor.group,\n    schema: {\n      dataType: 'string',\n      defaultValue: Array.isArray(ctor.defaultValue)\n        ? ctor.defaultValue.map((item) => (typeof item === 'string' ? { id: item } : item))\n        : typeof ctor.defaultValue === 'string'\n          ? { id: ctor.defaultValue, title: ctor.defaultValue }\n          : ctor.defaultValue,\n      interface: {\n        name: ctor.name,\n        path: ctor.path ?? ctor.name,\n        type: AXPWidgetsCatalog.select,\n        options: {\n          dataSource: ctor.dataSource.map((item) => (typeof item === 'string' ? { id: item, title: item } : item)),\n        },\n      },\n    },\n    visible: !isNil(ctor.visible) ? ctor.visible : true,\n  };\n}\n\nexport interface AXPWidgetNodeToken<TOptions extends AXPOptionsData = AXPOptionsData> {\n  defaultValue?: any;\n  config: AXPWidgetConfig;\n  node: AXPWidgetNode;\n  options?: TOptions;\n}\n\nexport interface AXPWidgetColumnNode {\n  type: string;\n  path: string;\n  options?: AXPOptionsData;\n  /** Column header caption from data-table (`title || name`); often an i18n key. */\n  caption?: string;\n}\n\nexport interface AXPWidgetColumnNodeToken extends AXPWidgetColumnNode {\n  config: AXPWidgetConfig;\n}\n\nexport const AXP_WIDGET_TOKEN = new InjectionToken<AXPWidgetNodeToken>('AXP_WIDGET_TOKEN');\nexport const AXP_WIDGET_COLUMN_TOKEN = new InjectionToken<AXPWidgetColumnNodeToken>('AXP_WIDGET_COLUMN_TOKEN');\n\nexport interface AXPWidgetComponentConfig {\n  component: () => Promise<any>;\n  properties?: AXPWidgetProperty[];\n}\n\nexport interface AXPWidgetConfigComponents {\n  designer?: AXPWidgetComponentConfig;\n  view?: AXPWidgetComponentConfig;\n  edit?: AXPWidgetComponentConfig;\n  print?: AXPWidgetComponentConfig;\n  column?: AXPWidgetComponentConfig;\n  filter?: AXPWidgetComponentConfig;\n}\n\nexport type AXPWidgetViewType = 'container' | 'editor' | 'action' | 'view' | 'filter' | 'validation' | 'dashboard';\n\nexport type AXPWidgetDesignerOptionsMap = {\n  container: { canInsert: boolean };\n  editor: {\n    needLabel: boolean;\n  };\n  action: {};\n  view: {};\n};\n\nexport type AXPExtractWidgetConfig<T> = {\n  type: AXPWidgetViewType;\n  designer: T extends { type: infer V }\n  ? V extends keyof AXPWidgetDesignerOptionsMap\n  ? AXPWidgetDesignerOptionsMap[V]\n  : any\n  : any;\n};\n\nexport interface AXPWidgetConfig<T = any> {\n  name: AXPWidgetTypesMap[keyof AXPWidgetTypesMap] | keyof AXPWidgetTypesMap | string;\n  alias?: string | string[];\n  title: AXPMultiLanguageString;\n  icon?: string;\n  description?: AXPMultiLanguageString;\n  /**\n   * Picker tabs and section headings in the widget gallery (when the widget is included in the picker list).\n   */\n  categories?: AXPDefinitionCategory | AXPDefinitionCategory[];\n  /**\n   * Optional sub-group within a parent category tab in the widget picker.\n   * Ignored on the \"All\" tab (widgets are grouped by parent category only).\n   */\n  subCategory?: AXPDefinitionCategory;\n  /**\n   * Which surfaces may offer this widget. The designer widget picker includes a widget only when this list\n   * intersects the requested groups (e.g. the layout designer requests `AXPWidgetGroupEnum.FormElement`).\n   * Use `AXPWidgetGroupEnum.BaseWidget` alone for types that must stay registered (filters, renderers, AI tools)\n   * but must not appear in form or dashboard pickers.\n   */\n  groups?: AXPWidgetGroup[];\n  properties?: AXPWidgetProperty[];\n  components: AXPWidgetConfigComponents;\n  meta?: AXPMetaData;\n  type: AXPExtractWidgetConfig<T>['type'];\n  designer?: AXPExtractWidgetConfig<T>['designer'];\n  options?: Record<string, any>;\n  defaultFilterWidgetName?:\n  | 'string-filter'\n  | 'number-filter'\n  | 'datetime-filter'\n  | 'boolean-filter'\n  | 'select-filter'\n  | 'lookup-filter'\n  | 'time-duration-filter'\n  | string;\n  /**\n   * Optional layout for Change History. When set, this AXPWidgetNode is rendered for\n   * changes of this widget type instead of the default fieldKey/actionKey text.\n   * Context passed to renderer: the AXPActivityLogChange object.\n   * If omitted, the default display is used.\n   */\n  historyLayout?: AXPWidgetNode;\n}\nexport interface AXPExtendedWidget {\n  widget: AXPWidgetConfig;\n  parentName: string;\n}\n\nexport interface AXPLayoutBuilderStatusChangedEvent {\n  status: AXPPageStatus;\n}\n","//#region ---- Types barrel ----\n\nexport * from './widget-group.types';\nexport * from './widget-status.types';\nexport * from './widget-types-map.types';\nexport * from './widget.types';\n\n//#endregion\n","//#region ---- Barrel ----\n\nexport * from './types';\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}