{"version":3,"file":"verben-workflow-ui-src-lib-components-workflows.mjs","sources":["../../../projects/verben-workflow-ui/src/lib/components/workflows/workflows.columns.ts","../../../projects/verben-workflow-ui/src/lib/components/workflows/workflows.config.ts","../../../projects/verben-workflow-ui/src/lib/components/workflows/workflows.state.ts","../../../projects/verben-workflow-ui/src/lib/components/workflows/workflows.api.ts","../../../projects/verben-workflow-ui/src/lib/components/workflows/workflows.service.ts","../../../projects/verben-workflow-ui/src/lib/components/workflows/workflows.facade.ts","../../../projects/verben-workflow-ui/src/lib/components/workflows/workflow-form/workflow-form.component.ts","../../../projects/verben-workflow-ui/src/lib/components/workflows/workflow-form/workflow-form.component.html","../../../projects/verben-workflow-ui/src/lib/components/workflows/workflows.component.ts","../../../projects/verben-workflow-ui/src/lib/components/workflows/workflows.component.html","../../../projects/verben-workflow-ui/src/lib/components/workflows/workflows.module.ts","../../../projects/verben-workflow-ui/src/lib/components/workflows/verben-workflow-ui-src-lib-components-workflows.ts"],"sourcesContent":["import { ColumnDefinition } from 'verben-ng-ui';\nimport { Workflow } from 'verben-workflow-ui/src/lib/models';\n\nexport const columns: ColumnDefinition<Workflow>[] = [\n  {\n    id: 'name',\n    header: 'Name',\n    accessorKey: 'Name',\n  },\n  {\n    id: 'description',\n    header: 'Description',\n    accessorKey: 'Description',\n  },\n  {\n    id: 'assignment-type',\n    header: 'Assignment Type',\n    accessorKey: 'AssignmentType',\n  },\n  {\n    id: 'operation',\n    header: 'Operation',\n    accessorKey: 'Operation',\n  },\n  {\n    id: 'stage-entry-rule',\n    header: 'StageEntryRule',\n    accessorKey: 'StageEntryRule',\n  },\n  {\n    id: 'status',\n    header: 'Status',\n    accessorKey: 'Status',\n  },\n  { id: 'actions', header: 'Actions', accessorKey: 'Code' },\n];\n","import { FormBuilder, Validators } from '@angular/forms';\nimport { CardData } from 'verben-ng-ui';\nimport { BasePageConfig } from 'verben-workflow-ui/src/lib/base';\nimport { Workflow } from 'verben-workflow-ui/src/lib/models';\nimport { columns } from './workflows.columns';\n\nconst fb = new FormBuilder();\n\n/**\n * Page configuration for workflows.\n *\n * This is the one page with a real POST search endpoint (`SearchWorkflow`), so\n * `enableFilter` is on. Export and create are additionally gated at runtime by\n * the component's `permissionConfig` input.\n */\nexport const WORKFLOW_CONFIG: BasePageConfig<Workflow> = {\n  endpoint: 'Workflows',\n  // UI identifier (matches the host's UIs value) — drives persistence of saved\n  // filters / column arrangement / last view.\n  ui: 'Workflows',\n  pageSize: 20,\n  columns,\n  defaultSortParam: 'CreatedAt',\n  searchDebounceTime: 500,\n\n  cardDataMapper: (workflow: Workflow): CardData => ({\n    selected: false,\n    title: workflow.Name,\n    data: workflow,\n    body: [\n      { title: 'Name', value: workflow.Name },\n      { title: 'Status', value: workflow.Status },\n      { title: 'AssignmentType', value: workflow.AssignmentType },\n    ],\n    children: [],\n  }),\n\n  formGroupConfig: () => ({\n    controls: {\n      Name: fb.control('', [Validators.required]),\n      Description: fb.control('', [Validators.required]),\n      AssignmentType: fb.control('', [Validators.required]),\n      Operation: fb.control(''),\n      Status: fb.control('', [Validators.required]),\n    },\n  }),\n\n  enableCreate: true,\n  enableImport: false,\n  enableExport: true,\n  enableFilter: true,\n  enableSort: true,\n  enableSearch: true,\n  enableCardView: true,\n  enableTableRowEdit: true,\n  enableDelete: true,\n};\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { BaseDataPageState } from 'verben-workflow-ui/src/lib/base';\nimport { Workflow, WorkflowOperation } from 'verben-workflow-ui/src/lib/models';\n\n/**\n * State for the workflows page.\n * Adds the operations lookup used by the form and the inline-edit dropdown.\n */\n@Injectable()\nexport class WorkflowsState extends BaseDataPageState<Workflow> {\n  private operations$ = new BehaviorSubject<WorkflowOperation[]>([]);\n\n  getOperations$(): Observable<WorkflowOperation[]> {\n    return this.operations$.asObservable();\n  }\n\n  setOperations(operations: WorkflowOperation[]): void {\n    this.operations$.next(operations);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport {\n  ErrorResponse,\n  FormEntity,\n  Paged,\n  SortDirection,\n  Tag,\n  Workflow,\n  WorkflowOperation,\n} from 'verben-workflow-ui/src/lib/models';\nimport {\n  EnvironmentService,\n  HttpWebRequestService,\n} from 'verben-workflow-ui/src/lib/services';\n\n/**\n * Raw workflow endpoint access, independent of any page.\n *\n * `WorkflowsService` is provided **per component** (it carries the list page's\n * base-page plumbing), so it cannot be injected by root-provided consumers. The\n * workflow designer needs the same endpoints without any of the paging, filter\n * or card state, so those calls live here and this service stays root-provided.\n *\n * `WorkflowsService` delegates its lookups here rather than duplicating them.\n */\n@Injectable({\n  providedIn: 'root',\n})\nexport class WorkflowApiService {\n  private static readonly LOOKUP_SORT = 'CreatedDate';\n\n  constructor(\n    private httpService: HttpWebRequestService,\n    private envSvc: EnvironmentService,\n  ) {}\n\n  /**\n   * Fetch workflows. `limit = 0` means \"all\" to this API.\n   */\n  getWorkflows(\n    skip = 0,\n    limit = 0,\n    sortParam: string = WorkflowApiService.LOOKUP_SORT,\n    sortOrder: string = SortDirection.Desc,\n  ): Promise<Paged<Workflow> | ErrorResponse> {\n    return this.httpService.get<Paged<Workflow>>(\n      `GetWorkflows/${skip}/${limit}/${sortParam}/${sortOrder}`,\n    );\n  }\n\n  /** Look a workflow up by code. Returns a paged result with at most one row. */\n  getWorkflowWithParam(\n    param: string,\n    skip = 0,\n    limit = 1,\n    sortParam: string = 'CreatedAt',\n    sortOrder: string = SortDirection.Asc,\n  ): Promise<Paged<Workflow> | ErrorResponse> {\n    return this.httpService.get<Paged<Workflow>>(\n      `GetWorkflowsWithParam/${param}/${skip}/${limit}/${sortParam}/${sortOrder}`,\n    );\n  }\n\n  /**\n   * NOTE: post() is (url, body, overrideToken?, baseUrl?) — baseUrl is the\n   * fourth argument, unlike get()/delete() where it is the second.\n   */\n  saveWorkflows(requests: Partial<Workflow>[]): Promise<Workflow[] | ErrorResponse> {\n    return this.httpService.post<Workflow[]>('SaveWorkflows', requests);\n  }\n\n  /** Approve or reject workflows. Returns the updated records. */\n  processWorkflows(\n    requests: Workflow[],\n    isApproval: boolean,\n  ): Promise<Workflow[] | ErrorResponse> {\n    return this.httpService.post<Workflow[]>(\n      `WorkflowAction/${isApproval}`,\n      requests,\n    );\n  }\n\n  getWorkflowOperations(\n    skip = 0,\n    limit = 0,\n    sortParam: string = WorkflowApiService.LOOKUP_SORT,\n    sortOrder: string = SortDirection.Desc,\n  ): Promise<Paged<WorkflowOperation> | ErrorResponse> {\n    return this.httpService.get<Paged<WorkflowOperation>>(\n      `GetWorkflowOperations/${skip}/${limit}/${sortParam}/${sortOrder}`,\n    );\n  }\n\n  getForms(\n    skip = 0,\n    limit = 0,\n    sortParam: string = WorkflowApiService.LOOKUP_SORT,\n    sortOrder: string = SortDirection.Desc,\n  ): Promise<Paged<FormEntity> | ErrorResponse> {\n    return this.httpService.get<Paged<FormEntity>>(\n      `GetFormEntities/${skip}/${limit}/${sortParam}/${sortOrder}`,\n    );\n  }\n\n  /** Tags live on the Authentication API; `get()` takes baseUrl second. */\n  getTags(\n    skip = 0,\n    limit = 0,\n    sortParam: string = WorkflowApiService.LOOKUP_SORT,\n    sortOrder: string = SortDirection.Desc,\n  ): Promise<Paged<Tag> | ErrorResponse> {\n    return this.httpService.get<Paged<Tag>>(\n      `GetTags/${skip}/${limit}/${sortParam}/${sortOrder}`,\n      this.envSvc.environment.AuthAPI,\n    );\n  }\n}\n","import { Injectable } from '@angular/core';\nimport {\n  BaseDataPageService,\n  FilterHandlerService,\n  SortHandlerService,\n} from 'verben-workflow-ui/src/lib/base';\nimport {\n  ErrorResponse,\n  FormEntity,\n  Tag,\n  Workflow,\n  WorkflowOperation,\n} from 'verben-workflow-ui/src/lib/models';\nimport { HttpWebRequestService } from 'verben-workflow-ui/src/lib/services';\nimport { WorkflowApiService } from './workflows.api';\n\n/**\n * Service for workflow API operations.\n *\n * `GetWorkflows`, `GetWorkflowsWithParam` and `SaveWorkflows` follow the base's\n * conventions for endpoint `Workflows`. Two do not, and are overridden below:\n * the search endpoint is **singular** (`SearchWorkflow`), and delete takes a\n * query string rather than a path segment.\n */\n@Injectable()\nexport class WorkflowsService extends BaseDataPageService<Workflow> {\n  constructor(\n    server: HttpWebRequestService,\n    filterHandler: FilterHandlerService,\n    sortHandler: SortHandlerService,\n    private api: WorkflowApiService,\n  ) {\n    super(server, filterHandler, sortHandler);\n  }\n\n  getEndpoint(): string {\n    return 'Workflows';\n  }\n\n  // ===== URL seams =====\n\n  /** Singular, unlike every other workflow endpoint. */\n  protected override filterSearchUrl(\n    skip: number,\n    limit: number,\n    sortParam: string,\n    sortOrder: string,\n  ): string {\n    return `SearchWorkflow/${skip}/${limit}/${sortParam}/${sortOrder}`;\n  }\n\n  /** Query string, not a path segment. */\n  protected override deleteUrl(itemIds: string[]): string {\n    return `DeleteWorkflows?data=${itemIds.join(',')}`;\n  }\n\n  // ===== Divergent operations =====\n\n  /**\n   * Approve or reject workflows. Distinct from save: it posts to\n   * `WorkflowAction/{isApproval}` and returns the updated records.\n   */\n  async processWorkflows(\n    requests: Workflow[],\n    isApproval: boolean,\n  ): Promise<Workflow[] | ErrorResponse> {\n    return this.api.processWorkflows(requests, isApproval);\n  }\n\n  // ===== Lookups =====\n  // Delegated to the root-provided WorkflowApiService so the workflow designer,\n  // which cannot inject this per-component service, shares one definition.\n\n  async getOperations(): Promise<WorkflowOperation[]> {\n    const res = await this.api.getWorkflowOperations();\n    return res instanceof ErrorResponse ? [] : res.Result ?? [];\n  }\n\n  async getForms(): Promise<FormEntity[]> {\n    const res = await this.api.getForms();\n    return res instanceof ErrorResponse ? [] : res.Result ?? [];\n  }\n\n  async getTags(): Promise<Tag[]> {\n    const res = await this.api.getTags();\n    return res instanceof ErrorResponse ? [] : res.Result ?? [];\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport {\n  BaseDataPageFacade,\n  SearchHandlerService,\n} from 'verben-workflow-ui/src/lib/base';\nimport {\n  ErrorResponse,\n  ObjectState,\n  Status,\n  TaskAssignmentType,\n  Workflow,\n  WorkflowOperation,\n} from 'verben-workflow-ui/src/lib/models';\nimport { UtilService } from 'verben-workflow-ui/src/lib/services';\nimport { WORKFLOW_CONFIG } from './workflows.config';\nimport { WorkflowsService } from './workflows.service';\nimport { WorkflowsState } from './workflows.state';\n\n/**\n * Facade for the workflows page.\n */\n@Injectable()\nexport class WorkflowFacade extends BaseDataPageFacade<Workflow> {\n  private workflowService: WorkflowsService;\n\n  constructor(\n    state: WorkflowsState,\n    service: WorkflowsService,\n    searchHandler: SearchHandlerService,\n    utilService: UtilService,\n  ) {\n    super(state, service, searchHandler, utilService, WORKFLOW_CONFIG);\n    this.workflowService = service;\n  }\n\n  // ===== Lookups =====\n\n  get operations$(): Observable<WorkflowOperation[]> {\n    return (this.state as WorkflowsState).getOperations$();\n  }\n\n  async loadOperations(): Promise<void> {\n    (this.state as WorkflowsState).setOperations(\n      await this.workflowService.getOperations(),\n    );\n  }\n\n  // ===== Save =====\n\n  /**\n   * A brand-new workflow must go up with Id and Code blank: the backend rejects\n   * a client-supplied Id, and the placeholder record carries a locally generated\n   * one. Established records keep theirs so the save lands as an update.\n   */\n  protected override withDataState(item: Workflow): Workflow {\n    const stamped = super.withDataState(item);\n    return stamped.DataState === ObjectState.New\n      ? { ...stamped, Id: '', Code: '' }\n      : stamped;\n  }\n\n  /**\n   * Save the record currently open in the form, merged over whatever the form\n   * did not edit. Insert vs update is decided from the presence of a Code — see\n   * BaseDataPageFacade.withDataState.\n   */\n  async save(edits: Partial<Workflow>): Promise<boolean> {\n    const open = this.currentCardData()?.data as Workflow | undefined;\n    const merged = { ...(open ?? {}), ...edits } as Workflow;\n\n    const saved = await this.saveItems([merged]);\n    if (saved) {\n      this.closeForm();\n    }\n    return saved;\n  }\n\n  /** Commit an inline table-row edit. Does not close the card form. */\n  async saveRow(row: Workflow, edits: Partial<Workflow>): Promise<boolean> {\n    return this.saveItems([{ ...row, ...edits } as Workflow]);\n  }\n\n  // ===== Delete =====\n\n  async deleteWorkflow(code: string): Promise<boolean> {\n    const deleted = await this.deleteItems([code]);\n    if (deleted) {\n      this.closeForm();\n    }\n    return deleted;\n  }\n\n  // ===== Approval =====\n\n  /**\n   * Approve or reject a workflow via `WorkflowAction/{isApproval}`, which\n   * returns the updated records rather than a paged result.\n   */\n  async processWorkflow(workflow: Workflow, isApproval: boolean): Promise<boolean> {\n    this.state.setUpdating(true);\n    const response = await this.workflowService.processWorkflows(\n      [workflow],\n      isApproval,\n    );\n    this.state.setUpdating(false);\n\n    if (response instanceof ErrorResponse) {\n      this.utilService.showError(response.ErrorMsg);\n      return false;\n    }\n\n    const updated = response?.[0];\n    if (updated) {\n      this.state.updateItem(updated);\n    }\n    return true;\n  }\n\n  // ===== Create =====\n\n  /** Prepend a blank workflow and open it in the form. */\n  startCreate(): Workflow {\n    return this.createItem(this.createEmpty());\n  }\n\n  private createEmpty(): Workflow {\n    return {\n      Name: '',\n      Description: '',\n      StageEntryRule: '',\n      AssignmentType: TaskAssignmentType.AutoRoute,\n      TenantId: '',\n      ServiceName: '',\n      id: crypto.randomUUID(),\n      Id: '',\n      CreatedAt: new Date(),\n      UpdatedAt: new Date(),\n      DataState: ObjectState.New,\n      Code: '',\n      Status: Status.Active,\n      Actions: [],\n      Lanes: [],\n      Stages: [],\n    };\n  }\n}\n","import { Component, EventEmitter, input, Input, Output } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { CardData } from 'verben-ng-ui';\nimport { TaskAssignmentType } from 'verben-workflow-ui/src/lib/models';\nimport { Workflow } from 'verben-workflow-ui/src/lib/models';\nimport { WorkflowOperation } from 'verben-workflow-ui/src/lib/models';\nimport { Status } from 'verben-workflow-ui/src/lib/models';\n\n@Component({\n  selector: 'lib-workflow-form',\n  templateUrl: './workflow-form.component.html',\n  styleUrl: './workflow-form.component.css',\n})\nexport class WorkflowFormComponent {\n  @Input() operations: WorkflowOperation[] = [];\n  @Input()\n  get currentData(): CardData | null {\n    return this._currentData;\n  }\n  set currentData(value: CardData | null) {\n    this._currentData = value;\n    if (value?.data) {\n      this.form.patchValue({\n        Name: value.data.Name || '',\n        Description: value.data.Description || '',\n        AssignmentType: value.data.AssignmentType || '',\n        Service: value.data.Service || '',\n        Operation: value.data.Operation || '',\n        Status: value.data.Status || '',\n      });\n    } else {\n      this.form.reset();\n    }\n  }\n  private _currentData: CardData | null = null;\n  designerUrl = input<string>('workflow');\n\n  @Output() switchView = new EventEmitter<undefined>();\n  @Output() onSave = new EventEmitter<Partial<Workflow>>();\n\n  form: FormGroup;\n  assignmentTypes = Object.values(TaskAssignmentType);\n  statuses = Object.values(Status);\n\n  // roles: WritableSignal<Role[]> = signal([]);\n\n  constructor(private fb: FormBuilder) {\n    this.form = this.fb.group({\n      Name: ['', { validators: [Validators.required] }],\n      Description: ['', { validators: [Validators.required] }],\n      AssignmentType: ['', { validators: [Validators.required] }],\n      Service: [''],\n      Operation: [''],\n      Status: ['', { validators: [Validators.required] }],\n    });\n  }\n\n  ngOnInit(): void {\n    // this.userAccessRequestFacade.getRoles$().subscribe((data) => {\n    //   this.roles.set(data);\n    // });\n    // try {\n    //   this.userAccessRequestFacade.loadRoles();\n    // } catch (error) {\n    //   // Handle error\n    // }\n  }\n\n  handleSubmit(): void {\n    if (this.form.valid) {\n      // Emit save event with form value\n      this.onSave.emit(this.form.value);\n    }\n  }\n\n  onDelete(): void {\n    // Emit delete event\n  }\n\n  disableProcessing(): boolean {\n    return !this.form.valid;\n  }\n}\n","<form\n  [formGroup]=\"form\"\n  class=\"flex flex-col px-3 pb-3 rounded-xl h-full w-full relative space-y-4\"\n  (ngSubmit)=\"handleSubmit()\"\n>\n  <verbena-input\n    name=\"Name\"\n    label=\"Name\"\n    formControlName=\"Name\"\n    placeHolder=\"Enter Name\"\n  />\n  <verbena-input\n    name=\"Description\"\n    label=\"Description\"\n    formControlName=\"Description\"\n    placeHolder=\"Enter Description\"\n  />\n\n  <div class=\"space-y-1\">\n    <label for=\"assignment\">Assignment</label>\n\n    <verben-drop-down\n      [showClear]=\"true\"\n      label=\"Assignment\"\n      styleClass=\"w-full\"\n      width=\"100%\"\n      [multiselect]=\"false\"\n      placeholder=\"Select\"\n      [options]=\"assignmentTypes\"\n      id=\"assignment\"\n      formControlName=\"AssignmentType\"\n      class=\"form-control\"\n    >\n    </verben-drop-down>\n  </div>\n\n  <div class=\"space-y-1\">\n    <label for=\"operation\">Operation</label>\n\n    <verben-drop-down\n      [showClear]=\"true\"\n      label=\"Operation\"\n      styleClass=\"w-full\"\n      width=\"100%\"\n      [multiselect]=\"false\"\n      placeholder=\"Select\"\n      [options]=\"operations\"\n      optionLabel=\"Code\"\n      optionValue=\"Code\"\n      id=\"operation\"\n      formControlName=\"Operation\"\n      class=\"form-control\"\n      [filter]=\"true\"\n      [filterBy]=\"'Code'\"\n    >\n    </verben-drop-down>\n  </div>\n\n  <!-- <div class=\"space-y-1\">\n    <label for=\"object\">Object</label>\n\n    <verbena-input\n      id=\"object\"\n      formControlName=\"Operation\"\n      placeHolder=\"Enter Object\"\n    />\n  </div> -->\n\n  <div class=\"space-y-1\">\n    <label for=\"status\">Status</label>\n\n    <verben-drop-down\n      label=\"Status\"\n      styleClass=\"w-full\"\n      width=\"100%\"\n      [multiselect]=\"false\"\n      [showClear]=\"true\"\n      placeholder=\"Null\"\n      [(options)]=\"statuses\"\n      id=\"status\"\n      formControlName=\"Status\"\n      class=\"form-control\"\n    >\n    </verben-drop-down>\n  </div>\n\n  <!-- buttons -->\n  <div class=\"flex justify-between gap-4 my-2\">\n    <!-- <verbena-button\n      width=\"114px\"\n      height=\"39px\"\n      text=\"Delete\"\n      bgColor=\"var(--vbn-color-text-muted)\"\n      textColor=\"var(--vbn-color-on-primary)\"\n      borderRadius=\"10px\"\n      [disable]=\"disableProcessing()\"\n    ></verbena-button> -->\n    @if (currentData?.data?.Code) {\n      <a [routerLink]=\"[designerUrl(), currentData?.data.Code]\" class=\"ml-auto\">\n        <verbena-button text=\"Designer\" styleType=\"ylw-outline\"></verbena-button>\n      </a>\n    }\n    <!-- <a [routerLink]=\"['/designer', currentData?.data.Code]\" class=\"ml-auto\">\n      <verbena-button\n        (click)=\"switchView.emit()\"\n        text=\"Designer\"\n        styleType=\"ylw-outline\"\n      ></verbena-button>\n    </a> -->\n    <verbena-button\n      (click)=\"switchView.emit()\"\n      text=\"Switch To Table\"\n      styleType=\"ylw-outline\"\n      class=\"ml-auto\"\n    ></verbena-button>\n    <verbena-button\n      type=\"submit\"\n      text=\"Save\"\n      bgColor=\"var(--vbn-color-primary)\"\n      textColor=\"var(--vbn-color-on-primary)\"\n      borderRadius=\"10px\"\n      pd=\"10px 20px\"\n      width=\"114px\"\n      height=\"39px\"\n      [disable]=\"disableProcessing()\"\n    ></verbena-button>\n  </div>\n</form>\n","import {\n  ChangeDetectorRef,\n  Component,\n  computed,\n  DestroyRef,\n  inject,\n  input,\n  OnInit,\n  signal,\n  ViewChild,\n  WritableSignal,\n} from '@angular/core';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport {\n  CardData,\n  CardDataViewComponent,\n  ColumnDefinition,\n  DataViewComponent,\n  FilterCondition,\n  SortCondition,\n} from 'verben-ng-ui';\nimport { SearchHandlerService } from 'verben-workflow-ui/src/lib/base';\nimport {\n  PermissionConfig,\n  Status,\n  TaskAssignmentType,\n  Workflow,\n  WorkflowOperation,\n} from 'verben-workflow-ui/src/lib/models';\nimport { baseStyle } from 'verben-workflow-ui/src/lib/shared';\nimport { WORKFLOW_CONFIG } from './workflows.config';\nimport { WorkflowFacade } from './workflows.facade';\nimport { WorkflowsService } from './workflows.service';\nimport { WorkflowsState } from './workflows.state';\n\n@Component({\n  selector: 'lib-workflows',\n  templateUrl: './workflows.component.html',\n  styleUrl: './workflows.component.css',\n  // Per-component providers: a root-provided state would be shared across every\n  // instance of the page. WorkflowFormComponent resolves the facade from here.\n  providers: [WorkflowFacade, WorkflowsState, WorkflowsService, SearchHandlerService],\n})\nexport class WorkflowsComponent implements OnInit {\n  @ViewChild('vdcv') cardDataView!: CardDataViewComponent;\n  @ViewChild('vdv') dataView!: DataViewComponent;\n\n  designerUrl = input<string>('workflow');\n  permissionConfig = input<PermissionConfig | null>(null);\n\n  private facade = inject(WorkflowFacade);\n  private destroyRef = inject(DestroyRef);\n\n  readonly config = WORKFLOW_CONFIG;\n  readonly styles = baseStyle;\n\n  data = toSignal(this.facade.items$, { initialValue: [] as Workflow[] });\n  cardData = this.facade.cardData;\n\n  // Exposed for the data-view/panels so the restored config reaches them.\n  readonly isTableView$ = this.facade.isTableView$;\n  readonly filters$ = this.facade.filters$;\n  readonly restoredColumns$ = this.facade.visibleColumns$;\n  operations = toSignal(this.facade.operations$, {\n    initialValue: [] as WorkflowOperation[],\n  });\n  formGroupConfig = signal(this.config.formGroupConfig!());\n\n  assignmentTypes = Object.values(TaskAssignmentType);\n  statuses = Object.values(Status);\n\n  visibleColumns: WritableSignal<ColumnDefinition<Workflow>[]> = signal(\n    this.config.columns,\n  );\n  selectedColumnCount = this.config.columns.length;\n  selectedSortCount = 0;\n  selectedFilterTableCount = 0;\n\n  /** Workflow queued for deletion, pending confirmation. */\n  pendingDelete = signal<Workflow | null>(null);\n\n  // Export and create are gated by the host's permission config on top of the\n  // page config's own feature flags.\n  canExport = computed(\n    () => !!this.config.enableExport && !!this.permissionConfig()?.Actions?.['Export'],\n  );\n  canCreate = computed(\n    () => !!this.config.enableCreate && !!this.permissionConfig()?.Actions?.['Create'],\n  );\n  canDesign = computed(() => !!this.permissionConfig()?.Actions?.['Design']);\n\n  constructor(private cdr: ChangeDetectorRef) {\n    this.loadData = this.loadData.bind(this);\n  }\n\n  ngOnInit(): void {\n    this.facade.cardSelectionCleared$\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe(() => this.clearCardView());\n\n    // Restore saved filters / column arrangement / last view, then load data.\n    this.facade.restoreSavedConfig().then(() => this.facade.loadOperations());\n  }\n\n  /**\n   * Tear down the card view's own selection.\n   *\n   * Nulling the facade's currentCardData only empties the form's fields — the\n   * CardDataViewComponent keeps a separate `currentItem`, and that is what holds\n   * the right-hand panel open. Without this the form goes blank after a search\n   * but the panel stays on screen.\n   */\n  private clearCardView(): void {\n    const view = this.cardDataView;\n    if (!view) {\n      return;\n    }\n    view.clearData();\n    if (view.rightContent) {\n      view.rightContent.parentData = null as unknown as CardData;\n    }\n  }\n\n  /**\n   * The record open in the detail form. Backed by the facade so a refetch can\n   * close it — loadData() clears the selection before replacing the list.\n   */\n  get currentData(): CardData | null {\n    return this.facade.currentCardData();\n  }\n\n  set currentData(value: CardData | null) {\n    this.facade.selectCard(value);\n  }\n\n  // ===== Data =====\n\n  loadMore(): Promise<void> {\n    return this.facade.loadMore();\n  }\n\n  /** Backs lib-data-xport's dataQueryFunction; bound in the constructor. */\n  async loadData(range: { skip: number; limit: number }): Promise<Workflow[]> {\n    return this.facade.loadRange(range.skip, range.limit);\n  }\n\n  // ===== Search / filter / sort =====\n\n  handleSearch(event: { key: string; value: string }): void {\n    this.facade.onSearch(event.value);\n  }\n\n  onFilterApplied(filters: FilterCondition[]): void {\n    this.selectedFilterTableCount = filters.length;\n    this.facade.applyFilters(filters);\n  }\n\n  onSortUpdated(sorts: SortCondition[]): void {\n    this.selectedSortCount = sorts.length;\n    this.facade.applySorts(sorts);\n  }\n\n  onColumnsUpdated(updatedColumns: ColumnDefinition<Workflow>[]): void {\n    this.visibleColumns.set(updatedColumns);\n    this.selectedColumnCount = updatedColumns.length;\n    this.facade.updateVisibleColumns(updatedColumns);\n  }\n\n  // ===== Save =====\n\n  async onSave(data: Partial<Workflow>): Promise<void> {\n    await this.facade.save(data);\n  }\n\n  /**\n   * Commit an inline table-row edit. The table owns the row's form group (via\n   * config.formGroupConfig) and hands back its value, replacing the old\n   * per-row `editForms` Map.\n   *\n   * The edits must be merged over the row at `index` — not over the record open\n   * in the card form, which is what the old `(rowSave)=\"onSave($event.data)\"`\n   * binding did on the sibling pages.\n   */\n  async onRowSave(event: {\n    index: number;\n    key: number | string;\n    data: Partial<Workflow>;\n  }): Promise<void> {\n    const row = this.data()[event.index];\n    if (!row) {\n      return;\n    }\n    await this.facade.saveRow(row, event.data);\n  }\n\n  // ===== Delete =====\n\n  requestDelete(row: Workflow): void {\n    this.pendingDelete.set(row);\n  }\n\n  cancelDelete(): void {\n    this.pendingDelete.set(null);\n  }\n\n  async confirmDelete(): Promise<void> {\n    const target = this.pendingDelete();\n    if (!target) {\n      return;\n    }\n    this.pendingDelete.set(null);\n    await this.facade.deleteWorkflow(target.Code);\n  }\n\n  // ===== View events =====\n\n  onSelectionChange(_selectedRows: Workflow[]): void {\n    // Selection is not acted on yet; the table still owns the checkbox state.\n  }\n\n  onViewChange(isTableView: boolean): void {\n    this.facade.setView(isTableView);\n  }\n\n  onStateChange(event: { key: string; value: boolean }): void {\n    switch (event.key) {\n      case 'create': {\n        const created = this.facade.startCreate();\n        // A new workflow is only editable in the card form, so force that view.\n        // Non-persisting (transient) and routed through the facade so it flows\n        // back via the [isTableView] binding without desyncing the OnPush view.\n        this.facade.setViewState(false);\n\n        // CardDataViewComponent matches clicks against its cardDataList input,\n        // which only receives the new card after a change-detection pass. Force\n        // one so the freshly added card is resolvable before we open it.\n        this.cdr.detectChanges();\n\n        const card = this.cardData().find((c) => c.data === created);\n        if (card) {\n          this.facade.selectCard(this.cardDataView.onItemClick(card));\n          this.cdr.detectChanges();\n        }\n        break;\n      }\n      default:\n        break;\n    }\n  }\n\n  cardClicked(item: CardData, toggleView = false): void {\n    this.facade.selectCard(this.cardDataView.onItemClick(item));\n    if (toggleView) {\n      this.dataView.toggleView();\n    }\n  }\n\n  /** Open a table row's record in the card view. */\n  goToCardView(code: string): void {\n    const item = this.cardData().find((x) => x.data?.Code === code);\n    if (item) {\n      this.cardClicked(item, true);\n    }\n  }\n\n  // ===== Export =====\n\n  handleExport(exportedData: Partial<Workflow>[]): void {\n    this.downloadCSV(exportedData);\n  }\n\n  handleFetchedExport({ skip, limit }: { skip: number; limit: number }): void {\n    this.facade.loadRange(skip, limit).then((data) => {\n      if (data.length) {\n        this.handleExport(data);\n      }\n    });\n  }\n\n  private downloadCSV(data: Partial<Workflow>[]): void {\n    if (!data.length) {\n      return;\n    }\n    const headers = Object.keys(data[0]);\n    const csvContent = [\n      headers.join(','),\n      ...data.map((row) =>\n        headers.map((header) => (row as Record<string, unknown>)[header]).join(','),\n      ),\n    ].join('\\n');\n    const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });\n    const link = document.createElement('a');\n    if (link.download !== undefined) {\n      const url = URL.createObjectURL(blob);\n      link.setAttribute('href', url);\n      link.setAttribute('download', 'export.csv');\n      link.style.visibility = 'hidden';\n      document.body.appendChild(link);\n      link.click();\n      document.body.removeChild(link);\n    }\n  }\n}\n","<div class=\"space-y-8\">\n  <verben-data-view #vdv [viewState]=\"{\n      isSearch: !!config.enableSearch,\n      isColumn: true,\n      isFilter: !!config.enableFilter,\n      isSort: !!config.enableSort,\n      isExport: canExport(),\n      isSelect: true,\n      isCreate: canCreate(),\n      isToggle: !!config.enableCardView,\n    }\" [buttonClass]=\"'my-custom-button-class'\" [iconClass]=\"'my-icon-class'\"\n    [activeIconClass]=\"'my-active-icon-class'\" [isTableView]=\"(isTableView$ | async) ?? false\"\n    [selectedColumnCount]=\"selectedColumnCount\"\n    [selectedSortCount]=\"selectedSortCount\" [selectedFilterTableCount]=\"selectedFilterTableCount\"\n    (viewChange)=\"onViewChange($event)\"\n    (stateChange)=\"onStateChange($event)\" (onSearchChange)=\"handleSearch($event)\">\n    <div table-content>\n      <lib-data-table [data]=\"data()\" [columns]=\"config.columns\" [styleConfig]=\"styles\"\n        [formGroupConfig]=\"formGroupConfig()\" (rowSave)=\"onRowSave($event)\"\n        (selectionChange)=\"onSelectionChange($event)\">\n        <!-- Inline edit controls come from the table's own row form group, built\n             from config.formGroupConfig. This replaces the per-row `editForms`\n             Map the component used to keep in sync by hand, and matches how the\n             actors and flowable-status tables already worked. -->\n        <ng-container libColumn=\"name\">\n          <ng-template #cellEdit let-control=\"control\">\n            <div class=\"width-max\">\n              <verbena-input [formControl]=\"control\"></verbena-input>\n            </div>\n          </ng-template>\n        </ng-container>\n\n        <ng-container libColumn=\"description\">\n          <ng-template #cellEdit let-control=\"control\">\n            <div class=\"width-max\">\n              <verbena-input [formControl]=\"control\"></verbena-input>\n            </div>\n          </ng-template>\n        </ng-container>\n\n        <ng-container libColumn=\"assignment-type\">\n          <ng-template #cellEdit let-control=\"control\">\n            <verben-drop-down styleClass=\"w-full\" width=\"100%\" [multiselect]=\"false\" placeholder=\"Select\"\n              [options]=\"assignmentTypes\" [formControl]=\"control\"\n              class=\"form-control\">\n            </verben-drop-down>\n          </ng-template>\n        </ng-container>\n\n        <ng-container libColumn=\"operation\">\n          <ng-template #cellEdit let-control=\"control\">\n            <verben-drop-down label=\"Operation\" styleClass=\"w-full\" width=\"100%\" [multiselect]=\"false\"\n              placeholder=\"Select\" [options]=\"operations()\" optionLabel=\"Description\" optionValue=\"Description\"\n              id=\"operation\" [formControl]=\"control\" class=\"form-control\">\n            </verben-drop-down>\n          </ng-template>\n        </ng-container>\n\n        <ng-container libColumn=\"status\">\n          <ng-template #cell let-value>\n            <verbena-badge borderRadius=\"9px\" [bgColor]=\"value == 'Active' ? 'var(--vbn-color-success-bg)' : '#FFDFDF'\"\n              [textColor]=\"value == 'Active' ? 'var(--vbn-color-success)' : 'var(--vbn-color-error)'\" fontSize=\"12px\" [text]=\"value\"\n              [pd]=\"'2px 6px'\"></verbena-badge>\n          </ng-template>\n          <ng-template #cellEdit let-control=\"control\">\n            <verben-drop-down styleClass=\"w-full\" width=\"100%\" [multiselect]=\"false\" placeholder=\"Null\"\n              [options]=\"statuses\" [formControl]=\"control\" class=\"form-control\">\n            </verben-drop-down>\n          </ng-template>\n        </ng-container>\n\n        <ng-container libColumn=\"actions\">\n          <ng-template #cell let-value let-isEditing=\"isEditing\"\n            let-toggleRowEdit=\"toggleRowEdit\" let-row=\"row\" let-rowIndex=\"rowIndex\">\n            <div class=\"flex gap-6\">\n              <verben-svg (click)=\"toggleRowEdit()\" icon=\"edit\" [width]=\"15\" [height]=\"15\"\n                class=\"cursor-pointer\"></verben-svg>\n\n              <!-- Goes through the facade so the delete actually reaches the API.\n                   The previous (click)=\"deleteRow()\" only dropped the row from\n                   the table, so it reappeared on the next refresh. -->\n              @if (config.enableDelete) {\n              <verben-svg icon=\"delete\" [width]=\"15\" [height]=\"15\" (click)=\"requestDelete(row)\"\n                class=\"cursor-pointer\"></verben-svg>\n              }\n\n              @if (canDesign()) {\n              <a [routerLink]=\"[designerUrl(), value]\">\n                <verben-svg icon=\"designer\" [width]=\"15\" [height]=\"15\" class=\"cursor-pointer\"></verben-svg>\n              </a>\n              }\n            </div>\n          </ng-template>\n\n          <ng-template #cellEdit let-value let-isEditing=\"isEditing\"\n            let-toggleRowEdit=\"toggleRowEdit\" let-row=\"row\" let-rowIndex=\"rowIndex\">\n            <div class=\"flex gap-6\">\n              <verben-svg (click)=\"toggleRowEdit()\" icon=\"tick\" [width]=\"15\" [height]=\"15\"\n                class=\"cursor-pointer\"></verben-svg>\n\n              <!-- Cancels the row edit, as before. -->\n              <verben-svg icon=\"delete\" [width]=\"15\" [height]=\"15\" (click)=\"toggleRowEdit()\"\n                class=\"cursor-pointer\"></verben-svg>\n\n              <verben-svg icon=\"cardViewAlt\" [width]=\"15\" [height]=\"15\" class=\"cursor-pointer\"\n                (click)=\"goToCardView(value)\"></verben-svg>\n            </div>\n          </ng-template>\n        </ng-container>\n      </lib-data-table>\n    </div>\n\n    <div card-content>\n      <verben-card-data-view borderRadius=\"12px\" (loadMoreClick)=\"loadMore()\" #vdcv dataId=\"Code\" border=\"5px\"\n        [cardDataList]=\"cardData()\" rbgColor=\"var(--vbn-color-surface-alt)\" mg=\"20px\">\n        <verben-left-card-data-view class=\"space-y-7\">\n          <verben-left-card-data #vlcd [parent]=\"vdcv\" dataId=\"Code\"\n            class=\"bg-secondary-100 rounded-xl border-primary border-[1px]\" [cardDataList]=\"cardData()\">\n            <ng-template #card let-item>\n              <div (click)=\"currentData = vdcv.onItemClick(item)\" class=\"flex\">\n                <div (click)=\"currentData = vdcv.onItemClick(item)\"\n                  class=\"flex cursor-pointer w-full bg-secondary rounded-xl\">\n                  <div class=\"w-3 rounded-xl rounded-tr-none rounded-br-none\" [ngClass]=\"\n                      item.selected ? 'bg-primary' : 'bg-secondary-200'\n                    \"></div>\n                  <div class=\"flex-1 flex justify-between gap-y-2 gap-x-4 p-4\">\n                    <div class=\"flex-1 flex flex-col justify-between space-y-2\">\n                      <span class=\"font-semibold text-[var(--vbn-color-on-primary)] flex-1 truncate line-clamp-1\">{{ item.title }}</span>\n\n                      <span id=\"role\" class=\"text-sm line-clamp-1 truncate\">\n                        {{\n                        item.data?.Operation\n                        }}\n                      </span>\n\n                      <!-- <p class=\"flex items-center my-1\">\n                        <label for=\"phone\" class=\"text-[10px] font-light\"\n                          >Assignment:</label\n                        >\n                        <span id=\"phone\" class=\"text-sm truncate\">{{\n                          item.data.AssignmentType\n                        }}</span>\n                      </p> -->\n                    </div>\n\n                    <div class=\"grid gap-y-1 w-fit justify-items-end\">\n                      <!-- <p class=\"grid\">\n                        <span id=\"role\" class=\"text-sm font-medium line-clamp-1 truncate\">{{\n                          item.data?.Operation\n                        }}</span>\n                      </p> -->\n                      <span id=\"phone\" class=\"text-sm\">\n                        {{ item.data.AssignmentType }}\n                      </span>\n\n                      <div class=\"flex gap-4 items-center\">\n                        @if (canDesign() && item.data?.Code) {\n                        <a [routerLink]=\"[designerUrl(), item.data.Code]\">\n                          <verben-svg icon=\"designer\" [width]=\"15\" [height]=\"15\" class=\"cursor-pointer\"\n                            (click)=\"$event.stopPropagation()\"></verben-svg>\n                        </a>\n                        }\n\n                        <verbena-badge borderRadius=\"9px\" [bgColor]=\"\n                            item.data.Status == 'Active' ? 'var(--vbn-color-success-bg)' : '#FFDFDF'\n                          \" [textColor]=\"\n                            item.data.Status == 'Active' ? 'var(--vbn-color-success)' : 'var(--vbn-color-error)'\n                          \" fontSize=\"12px\" [text]=\"item.data.Status\" [pd]=\"'2px 6px'\"></verbena-badge>\n                      </div>\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </ng-template>\n          </verben-left-card-data>\n        </verben-left-card-data-view>\n\n        <verben-right-card-data-view>\n          <ng-template #parent>\n            <lib-workflow-form [currentData]=\"currentData\" (switchView)=\"vdv.toggleView()\" (onSave)=\"onSave($event)\"\n              [operations]=\"operations()\" [designerUrl]=\"designerUrl()\"></lib-workflow-form>\n          </ng-template>\n        </verben-right-card-data-view>\n\n        <verben-card-data-view-footer class=\"w-full\">\n          <div class=\"flex gap-2 items-center justify-end\">\n            <!-- <verbena-button\n              *ngIf=\"!vdcv.hasCurrentItem()\"\n              [fontWeight]=\"'bold'\"\n              [bgColor]=\"'var(--vbn-color-text-muted)'\"\n              [borderRadius]=\"'4px'\"\n              [textColor]=\"'var(--vbn-color-surface)'\"\n              [pd]=\"'9.79px 37.28px'\"\n              [text]=\"'Delete'\"\n            >\n            </verbena-button> -->\n            <div class=\"flex {{\n                vdcv.hasCurrentItem() ? 'flex-1' : ''\n              }} justify-end items-center gap-5\">\n              <span class=\"paginator-text\">{{ cardData().length }} records loaded</span>\n              <button (click)=\"loadMore()\" class=\"load-more view-links text-[var(--vbn-color-border-focus)] underline\">\n                Load more\n              </button>\n            </div>\n          </div>\n        </verben-card-data-view-footer>\n      </verben-card-data-view>\n    </div>\n\n    <div column-content>\n      <!-- <verben-visible-column\n        (columnsUpdated)=\"onColumnsUpdated($event)\"\n        [border]=\"'1px solid var(--vbn-color-primary)'\"\n        borderRadius=\"10px\"\n        boxShadow=\"2px 2px 2px 0px silver\"\n        bgColor=\"white\"\n        width=\"400px\"\n        textColor=\"black\"\n        pd=\"1rem\"\n        primaryColor=\"var(--vbn-color-primary)\"\n        secondaryColor=\"var(--vbn-color-border-focus)\"\n        [columns]=\"visibleColumns\"\n        [displayedColumns]=\"5\"\n      ></verben-visible-column> -->\n\n      <lib-data-columns [columns]=\"config.columns\"\n        [selectedColumns]=\"(restoredColumns$ | async) ?? []\"\n        (columnsUpdated)=\"onColumnsUpdated($event)\"></lib-data-columns>\n    </div>\n    <div filter-content>\n      <!-- lib-data-filter emits FilterCondition[] (columnId + operator + value),\n           which the base's FilterHandlerService turns into the SearchWorkflow\n           payload. The old verben-table-filter emitted an untyped shape into\n           WorkflowFacade.filter(), which set state but never issued a request. -->\n      <lib-data-filter [columns]=\"config.columns\" [data]=\"data()\"\n        [initialFilters]=\"(filters$ | async) ?? []\"\n        (filterApplied)=\"onFilterApplied($event)\"></lib-data-filter>\n    </div>\n    <div sort-content>\n      <!-- <verben-sort-table\n        (selectedOptions)=\"onSortUpdated($event)\"\n        [border]=\"'1px solid var(--vbn-color-primary)'\"\n        borderRadius=\"10px\"\n        boxShadow=\"2px 2px 2px 0px silver\"\n        bgColor=\"white\"\n        width=\"400px\"\n        textColor=\"black\"\n        pd=\"1rem\"\n        primaryColor=\"var(--vbn-color-primary)\"\n        secondaryColor=\"var(--vbn-color-border-focus)\"\n        tertiaryColor=\"var(--vbn-color-on-primary)\"\n        [enableDragAndDrop]=\"true\"\n        [sortOptions]=\"sortOptions\"\n      ></verben-sort-table> -->\n      <lib-data-sort [columns]=\"config.columns\" [data]=\"data()\" (sortApplied)=\"onSortUpdated($event)\"></lib-data-sort>\n    </div>\n    <div export-content>\n      <lib-data-xport [columns]=\"config.columns\" [data]=\"data()\" [dataQueryFunction]=\"loadData\">\n      </lib-data-xport>\n    </div>\n  </verben-data-view>\n\n  <div *ngIf=\"vdv.isTableView\" class=\"flex gap-2 justify-end\">\n    <!-- <div class=\"message-log-button-container flex justify-between\">\n      <verbena-button\n        [fontWeight]=\"'bold'\"\n        [bgColor]=\"'var(--vbn-color-text-muted)'\"\n        [borderRadius]=\"'4px'\"\n        [textColor]=\"'var(--vbn-color-surface)'\"\n        [pd]=\"'9.79px 37.28px'\"\n        [text]=\"'Delete'\"\n      >\n      </verbena-button>\n    </div> -->\n    <div class=\"flex justify-end items-center gap-5\">\n      <span class=\"paginator-text\">{{ cardData().length }} records loaded</span>\n      <button (click)=\"loadMore()\" class=\"load-more view-links text-[var(--vbn-color-border-focus)] underline\">\n        Load more\n      </button>\n    </div>\n  </div>\n\n  <!-- Deleting a workflow is destructive and irreversible, so it is confirmed\n       before the request goes out. -->\n  <verben-dialogue [showCloseIcon]=\"true\" [dismissOutsideClick]=\"true\" [closeOnEscape]=\"true\" [size]=\"'small'\"\n    [disableFooter]=\"false\" [isVisible]=\"!!pendingDelete()\" [headerTemplate]=\"deleteHeader\"\n    [bodyTemplate]=\"deleteBody\" [footerTemplate]=\"deleteFooter\" (closeModal)=\"cancelDelete()\">\n  </verben-dialogue>\n\n  <ng-template #deleteHeader>\n    <div class=\"p-3 border-b-4 border-[var(--vbn-color-primary)]\">\n      <h2 class=\"text-sm font-medium\">Delete workflow</h2>\n    </div>\n  </ng-template>\n\n  <ng-template #deleteBody>\n    <div class=\"p-4 text-sm\">\n      Delete <span class=\"font-semibold\">{{ pendingDelete()?.Name }}</span>? This cannot be undone.\n    </div>\n  </ng-template>\n\n  <ng-template #deleteFooter>\n    <div class=\"flex justify-between w-full items-center p-4 border-t border-gray-200\">\n      <verbena-button (click)=\"cancelDelete()\" text=\"Cancel\" styleType=\"ylw-outline\"></verbena-button>\n      <verbena-button text=\"Delete\" bgColor=\"var(--vbn-color-error)\" textColor=\"var(--vbn-color-on-primary)\"\n        borderRadius=\"10px\" pd=\"10px 20px\" width=\"114px\" height=\"39px\" (click)=\"confirmDelete()\"></verbena-button>\n    </div>\n  </ng-template>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { WorkflowsComponent } from './workflows.component';\nimport { SharedModule } from 'verben-workflow-ui/src/lib/shared';\nimport { RouterLink } from '@angular/router';\nimport { WorkflowsService } from './workflows.service';\nimport { WorkflowFormComponent } from './workflow-form/workflow-form.component';\n\n@NgModule({\n  declarations: [WorkflowsComponent, WorkflowFormComponent],\n  imports: [CommonModule, SharedModule, RouterLink],\n  exports: [WorkflowsComponent],\n})\nexport class WorkflowsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3.WorkflowApiService","i1.WorkflowsState","i2.WorkflowsService","i3","i4","i1","i2","i5.WorkflowFormComponent"],"mappings":"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"}