{"version":3,"file":"ngx-histaff-alpha-design-wrapper.component-DMB0jKgD.mjs","sources":["../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/current-header/current-header.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/current-header/current-header.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-basic-info/wf-basic-info.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-basic-info/wf-basic-info.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-insert-menu/wf-insert-menu.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-insert-menu/wf-insert-menu.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-bottom-v-insert/wf-bottom-v-insert.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-bottom-v-insert/wf-bottom-v-insert.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-step-config-shell/wf-actor-selector/wf-actor-selector.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-step-config-shell/wf-actor-selector/wf-actor-selector.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-step-config-shell/wf-approver-config/wf-approver-config.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-step-config-shell/wf-approver-config/wf-approver-config.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-step-config-shell/wf-cc-config/wf-cc-config.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-step-config-shell/wf-cc-config/wf-cc-config.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-step-config-shell/wf-end-config/wf-end-config.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-step-config-shell/wf-end-config/wf-end-config.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-step-config-shell/wf-handler-config/wf-handler-config.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-step-config-shell/wf-handler-config/wf-handler-config.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-step-config-shell/wf-submit-config/wf-submit-config.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-step-config-shell/wf-submit-config/wf-submit-config.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-gpt-assistant/wf-gpt-assistant.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-gpt-assistant/wf-gpt-assistant.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/rule-config-shell/rule-config-shell.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/rule-config-shell/rule-config-shell.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-step-config-shell/wf-formui-config/wf-formui-config.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-step-config-shell/wf-formui-config/wf-formui-config.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-step-config-shell/wf-execution-config/wf-execution-config.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-step-config-shell/wf-execution-config/wf-execution-config.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-step-config-shell/wf-step-config-shell.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-step-config-shell/wf-step-config-shell.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/enums/EnumWorkflowBranch.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/bridge-line.service.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/bridge-line.directive.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/pipes/wf-node-label.pipe.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-node/wf-node.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-node/wf-node.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-steps-preview/wf-steps-preview.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-steps-preview/wf-steps-preview.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-workflow-canvas.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-workflow-canvas.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-process-design.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-process-design.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-delegation/wf-delegation.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-delegation/wf-delegation.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-email-templates/wf-email-templates.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-email-templates/wf-email-templates.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/design-wrapper/design-wrapper.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/design-wrapper/design-wrapper.component.html"],"sourcesContent":["import { Component, inject } from '@angular/core';\r\nimport { CoreWorkflowService } from '../../core-workflow.service';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { TooltipDirective } from '../../../tooltip/tooltip.directive';\r\nimport { BaseComponent } from '../../../base-component/base/base.component';\r\nimport { TranslatePipe } from '../../../../app-pipes/translate.pipe';\r\nimport { MultiLanguageService } from '../../../../services/multi-language.service';\r\nimport { AlertService } from '../../../alert/alert.service';\r\nimport { alertOptions } from '../../../../constants/alertOptions';\r\nimport { CoreFormDesignService } from '../../../core-form-design/core-form-design.service';\r\nimport { catchError, of } from 'rxjs';\r\nimport { IStep } from '../../interfaces/IStep';\r\nimport { IStepRuleConfig } from '../../interfaces/IStepConfig';\r\nimport { EnumWorkflowStepType } from '../../enums/EnumWorkflowStepType';\r\nimport { EnumFormBaseContolType } from '../../../../enum/EnumFormBaseContolType';\r\nimport { IUiDelegation } from '../../interfaces/IUiDelegation';\r\n\r\n@Component({\r\n  selector: 'current-header',\r\n  imports: [\r\n    TooltipDirective,\r\n    TranslatePipe\r\n  ],\r\n  templateUrl: './current-header.component.html',\r\n  styleUrl: './current-header.component.scss'\r\n})\r\nexport class CurrentHeaderComponent extends BaseComponent {\r\n\r\n  public wfs = inject(CoreWorkflowService);\r\n  fds = inject(CoreFormDesignService);\r\n  router = inject(Router);\r\n  route = inject(ActivatedRoute);\r\n  alertService = inject(AlertService);\r\n\r\n  $activeTab = this.wfs.$designActiveTab;\r\n  $loading = this.wfs.$loading;\r\n\r\n  steps = [\r\n    { index: 1, label: 'Basic Info', changed: this.wfs.$basicInfoChanged, onClick: () => this.goToBasicInfo() },\r\n    { index: 2, label: 'Form Design', changed: this.wfs.$formDesignChanged, onClick: () => this.goToFormDesign() },\r\n    { index: 3, label: 'Process Design', changed: this.wfs.$processDesignChanged, onClick: () => this.goToProcessDesign() },\r\n    { index: 4, label: 'Delegation', changed: this.wfs.$processDesignChanged, onClick: () => this.goToDelegation() },\r\n    { index: 5, label: 'Email Templates', changed: this.wfs.$moreChanged, onClick: () => this.goToEmailTemplates() }\r\n  ];\r\n\r\n  constructor(\r\n    public override mls: MultiLanguageService\r\n  ) {\r\n    super(mls);\r\n    //this.wfs.$delegationFinalPayload.set(null);\r\n  }\r\n\r\n  findStepMissingFallback(steps: IStep[]): IStep | undefined {\r\n    for (const step of steps) {\r\n      const config = step.config as IStepRuleConfig | undefined;\r\n\r\n      if (\r\n        step.type !== EnumWorkflowStepType.ConditionalBranch &&\r\n        step.type !== EnumWorkflowStepType.BranchCard &&\r\n        config?.ruleTree &&\r\n        !config?.fallbackType\r\n      ) {\r\n        return step;\r\n      }\r\n\r\n      // 🧠 Recursively check children or branches\r\n      if (Array.isArray((step as any).children)) {\r\n        const found = this.findStepMissingFallback((step as any).children);\r\n        if (found) return found;\r\n      }\r\n    }\r\n\r\n    return undefined;\r\n  }\r\n\r\n\r\n  publish(): void {\r\n\r\n    if (this.wfs.basicInfoForm.invalid) {\r\n      this.alertService.warn('Invalid Basic Info', alertOptions);\r\n      this.wfs.basicInfoFormCheckError$.next(true);\r\n      setTimeout(() => this.wfs.basicInfoFormCheckError$.next(false), 5000)\r\n      this.$activeTab.set(1); // Jump to Basic Info tab\r\n      return;\r\n    }\r\n    if (this.wfs.delegationForm.invalid) {\r\n      this.alertService.warn('Invalid Delegation', alertOptions);\r\n      this.wfs.delegationFormCheckError$.next(true);\r\n      setTimeout(() => this.wfs.delegationFormCheckError$.next(false), 5000)\r\n      this.$activeTab.set(4); // Jump to Basic Info tab\r\n      return;\r\n    }\r\n    if (this.wfs.emailTemplatesForm.invalid) {\r\n      this.alertService.warn('Invalid Email Templates', alertOptions);\r\n      this.wfs.emailTemplatesFormCheckError$.next(true);\r\n      setTimeout(() => this.wfs.emailTemplatesFormCheckError$.next(false), 5000)\r\n      this.$activeTab.set(5); // Jump to Email Templates tab\r\n      return;\r\n    }\r\n\r\n    if (this.fds.$placeholderSections().some(x => x.rows.some(r => r?.cells.some(c => !c.control)))) {\r\n      this.alertService.warn('Invalid Form Design: no control added', alertOptions);\r\n      this.$activeTab.set(2); // Jump to Form Design tab\r\n      return;\r\n    }\r\n\r\n    if (this.fds.$placeholderSections().some(x => x.rows.some(r => r?.cells.some(c => !!c.control && c.control.controlType === EnumFormBaseContolType.DATEPICKER && !c.control.$rangePoint )))) {\r\n      this.alertService.warn('Invalid Form Design: DatePicker must have $rangePoint set', alertOptions);\r\n      this.$activeTab.set(2); // Jump to Form Design tab\r\n      return;\r\n    }\r\n\r\n    if (this.fds.formMetadata.invalid) {\r\n      this.alertService.warn('Invalid Form Metadata', alertOptions);\r\n      this.fds.$showFormMetadata.set(true);\r\n      this.$activeTab.set(2); // Jump to Metadata tab\r\n      return;\r\n    }\r\n\r\n    const unSafes = this.fds.$afInstance().sections\r\n      .flatMap(section =>\r\n        section.rows.flatMap(row =>\r\n          row\r\n            .filter(control =>\r\n              control?.controlType === EnumFormBaseContolType.CALCULATED && control.isUnsafe\r\n            )\r\n        )\r\n      );\r\n\r\n    if (unSafes.length > 0) {\r\n      this.fds.$control.set(unSafes[0]);\r\n      this.$activeTab.set(2);\r\n      this.alertService.warn(\r\n        `Field ${unSafes[0].field} script is unsafe!`,\r\n        alertOptions\r\n      );\r\n      return;\r\n    }\r\n\r\n\r\n    if (!!unSafes.length) {\r\n      this.fds.$control.set(unSafes[0]);\r\n      this.$activeTab.set(2);\r\n      this.alertService.warn(\r\n        `Field ${unSafes[0].field} script is unsafe!`,\r\n        alertOptions\r\n      );\r\n      return;\r\n    }\r\n\r\n    const steps = this.wfs.$currentSteps() ?? [];\r\n    const stepWithMissingFallback = this.findStepMissingFallback(steps);\r\n\r\n    if (stepWithMissingFallback) {\r\n      this.wfs.$currentStep.set(stepWithMissingFallback);\r\n      this.wfs.$showStepConfig.set(true);\r\n      this.$activeTab.set(3);\r\n      this.alertService.warn(\r\n        'One of steps has a condition but no fallback type is set.',\r\n        alertOptions\r\n      );\r\n      return;\r\n    }\r\n\r\n    const afInstanceDTO = this.fds.mapToAfInstanceDTO(this.fds.$afInstance());\r\n    const currentFlow = this.wfs.$currentFlow();\r\n\r\n    if (!currentFlow) {\r\n      this.alertService.warn('No workflow selected', alertOptions);\r\n      return;\r\n    }\r\n\r\n    // Update the currentFlow signal reactively\r\n    this.wfs.$currentFlow.update(flow => {\r\n      if (flow) {\r\n        flow.afInstanceDTO = afInstanceDTO;\r\n        //const rawDelegation: IUiDelegation | null = this.wfs.$delegationFinalPayload();\r\n\r\n        // rawDelegation?.delegationRows\r\n        //   ?.filter(x => !x.delegationId)\r\n        //   .forEach(row => {\r\n        //     row.vfUtc = this.normalizeToStartOfDay(row.vfUtc);\r\n        //     row.vtUtc = this.normalizeToStartOfDay(row.vtUtc);\r\n        //   });\r\n\r\n        // flow.delegationJson = JSON.stringify(rawDelegation);\r\n\r\n        const templates = this.wfs.emailTemplatesForm.getRawValue();\r\n        const {\r\n          submitSubject,\r\n          submitBody,\r\n          reactSubject,\r\n          reactBody,\r\n          delegatedReactSubject,\r\n          delegatedReactBody,\r\n          fullyApproveSubject,\r\n          fullyApproveBody,\r\n          rejectSubject,\r\n          rejectBody,\r\n          cancelSubject,\r\n          cancelBody,\r\n          terminateSubject,\r\n          terminateBody,\r\n          revokeSubject,\r\n          revokeBody,\r\n          ccSubject,\r\n          ccBody\r\n        } = templates;\r\n\r\n        flow.submitSubject = submitSubject;\r\n        flow.submitBody = submitBody;\r\n        flow.reactSubject = reactSubject;\r\n        flow.reactBody = reactBody;\r\n        flow.delegatedReactSubject = delegatedReactSubject;\r\n        flow.delegatedReactBody = delegatedReactBody;\r\n        flow.fullyApproveSubject = fullyApproveSubject;\r\n        flow.fullyApproveBody = fullyApproveBody;\r\n        flow.rejectSubject = rejectSubject;\r\n        flow.rejectBody = rejectBody;\r\n        flow.cancelSubject = cancelSubject;\r\n        flow.cancelBody = cancelBody;\r\n        flow.terminateSubject = terminateSubject;\r\n        flow.terminateBody = terminateBody;\r\n        flow.revokeSubject = revokeSubject;\r\n        flow.revokeBody = revokeBody;\r\n        flow.ccSubject = ccSubject;\r\n        flow.ccBody = ccBody;\r\n      }\r\n      return flow;\r\n    });\r\n\r\n\r\n    this.$loading.set(true);\r\n    this.subscriptions.push(\r\n      this.wfs.publish()\r\n        .pipe(\r\n          catchError(err => {\r\n            this.$loading.set(false);\r\n            const msg =\r\n              err?.error?.message ||       // API-defined message\r\n              err?.message ||              // Native JS or HttpErrorResponse\r\n              err?.statusText ||           // Fallback\r\n              'An unknown error occurred.';\r\n            return of({ ok: false, status: 500, body: { messageCode: msg } });\r\n          })\r\n        )\r\n        .subscribe(x => {\r\n          this.$loading.set(false);\r\n          if (x.ok && x.status === 200 && x.body?.statusCode === 200) {\r\n            this.wfs.$initialBasicInfoJson.set(this.wfs.$currentBasicInfoJson());\r\n            this.wfs.$initialFormDesignJson.set(this.wfs.$currentFormDesignJson());\r\n            this.wfs.$initialProcessDesignJson.set(this.wfs.$currentProcessDesignJson());\r\n            this.wfs.$initialDelegationJson.set(this.wfs.$currentDelegationJson());\r\n\r\n            this.router.navigate(['design', x.body.innerBody.id], { relativeTo: this.route.parent?.parent })\r\n            this.wfs.basicInfoForm.get('id')?.patchValue(x.body.innerBody.id);\r\n          }\r\n        })\r\n    )\r\n  }\r\n\r\n  private normalizeToStartOfDay(date?: Date | null): Date | null {\r\n    if (date === null) return date;\r\n    if (date === undefined) return null;\r\n\r\n    const d = new Date(date);\r\n    d.setHours(0, 0, 0, 0);\r\n    return d;\r\n  }\r\n\r\n\r\n  preview(): void {\r\n\r\n    if (!!this.fds.$afInstance().normalMode) {\r\n      this.router.navigate(\r\n        [this.wfs.$currentFlow()?.afInstanceId],\r\n        {\r\n          relativeTo: this.route.parent,\r\n          queryParams: { preview: true },\r\n          queryParamsHandling: 'merge'\r\n        },\r\n      )\r\n    } else {\r\n      this.router.navigate(\r\n        [\r\n          {\r\n            outlets: {\r\n              preview: [this.wfs.$currentFlow()?.afInstanceId],\r\n            },\r\n          },\r\n        ],\r\n        {\r\n          relativeTo: this.route.parent,\r\n          queryParams: { preview: true },\r\n          queryParamsHandling: 'merge'\r\n        },\r\n      )\r\n    }\r\n  }\r\n\r\n  backToList(): void {\r\n    this.router.navigateByUrl('/root/workflow/workflow-list');\r\n  }\r\n\r\n  goToBasicInfo(): void {\r\n    this.$activeTab.set(1);\r\n  }\r\n\r\n  goToFormDesign(): void {\r\n    this.$activeTab.set(2);\r\n  }\r\n\r\n  goToProcessDesign(): void {\r\n    this.$activeTab.set(3);\r\n  }\r\n\r\n  goToDelegation(): void {\r\n    this.$activeTab.set(4);\r\n  }\r\n\r\n  goToEmailTemplates(): void {\r\n    this.$activeTab.set(5);\r\n  }\r\n}\r\n","<div class=\"current-header-container\">\r\n    <div class=\"left pointer\" (click)=\"backToList()\">\r\n\r\n        <div class=\"icon-wrapper\" [appTooltip]=\"'Back to list' | translate : lang\" [showAnyway]=\"true\">\r\n            <i class=\"feather-chevron-left\"></i>\r\n        </div>\r\n        <div class=\"current-flow-name\" [appTooltip]=\"wfs.$currentFlow()?.name || ''\">\r\n            {{ wfs.$currentFlow()?.name || 'New Workflow' }}\r\n        </div>\r\n\r\n    </div>\r\n\r\n    <div class=\"stages\">\r\n        @for (step of steps; track step.index) {\r\n        <div\r\n            class=\"step-wrapper\"\r\n            [class.active]=\"$activeTab() === step.index\"\r\n            [class.changed]=\"step.changed()\"\r\n            (click)=\"step.onClick()\"\r\n            (keydown.enter)=\"step.onClick()\"\r\n        >\r\n            <div class=\"order\">{{ step.index }}</div>\r\n            <div class=\"step\">{{ step.label }}</div>\r\n        </div>\r\n        }\r\n    </div>\r\n\r\n    <div class=\"right\">\r\n        <button type=\"button\" class=\"btn preview\" (click)=\"preview()\">Preview</button>\r\n        <button type=\"button\" class=\"btn publish\" (click)=\"publish()\">Save</button>\r\n    </div>\r\n  </div>\r\n  ","import { AfterViewInit, ChangeDetectionStrategy, Component, effect, inject, Injector, Input, runInInjectionContext } from '@angular/core';\r\nimport { CorePageEditComponent } from '../../core-page-edit/core-page-edit.component';\r\nimport { BaseEditComponent } from '../../base-edit/base-edit/base-edit.component';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { BehaviorSubject, Subscription } from 'rxjs';\r\nimport { ICorePageEditCRUD } from '../../core-page-edit/ICorePageEditCRUD';\r\nimport { ICoreFormSection } from '../../core-form/core-form/enum-interfaces';\r\nimport { EnumFormBaseContolType } from '../../../enum/EnumFormBaseContolType';\r\nimport { FormGroup, Validators } from '@angular/forms';\r\nimport { EnumTranslateKey } from 'alpha-global-constants';\r\nimport { DialogService } from '../../../services/dialog.service';\r\nimport { AppService } from '../../../services/app.service';\r\nimport { FullscreenModalLoaderComponent } from '../../fullscreen-modal-loader/fullscreen-modal-loader.component';\r\nimport { ICoreDropdownOption } from '../../../interfaces/ICoreDropdownOption';\r\nimport { CoreWorkflowService } from '../core-workflow.service';\r\nimport { AlertService } from '../../alert/alert.service';\r\nimport { alertOptions } from '../../../constants/alertOptions';\r\nimport { CoreFormDesignService } from '../../core-form-design/core-form-design.service';\r\n\r\n@Component({\r\n  selector: 'wf-basic-info',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  imports: [\r\n    CorePageEditComponent,\r\n    FullscreenModalLoaderComponent\r\n  ],\r\n  templateUrl: './wf-basic-info.component.html',\r\n  styleUrl: './wf-basic-info.component.scss'\r\n})\r\nexport class WfBasicInfoComponent extends BaseEditComponent implements AfterViewInit {\r\n\r\n  @Input() captionCode!: string;\r\n  public wfs = inject(CoreWorkflowService);\r\n  alertService = inject(AlertService);\r\n  fds = inject(CoreFormDesignService);\r\n\r\n  private injector = inject(Injector);\r\n\r\n  constructor(\r\n    public override dialogService: DialogService,\r\n    private appService: AppService,\r\n  ) {\r\n\r\n    super(dialogService);\r\n\r\n    if (!this.captionCode) {\r\n      this.captionCode = \"UI_COMPONENT_TITLE_WF_WORKFLOW_GROUP\";\r\n    }\r\n\r\n    this.crud = {\r\n      c: '/api/WfWorkflow/Create',\r\n      r: '/api/WfWorkflow/GetById',\r\n      u: '/api/WfWorkflow/Update',\r\n      d: '/api/WfWorkflow/Delete',\r\n    };\r\n\r\n    const groupIdString = this.route.snapshot.queryParamMap.get('groupId');\r\n    if (!!groupIdString) {\r\n      const groupId = Number(groupIdString);\r\n      if (this.wfs.$allGroups().length) {\r\n        this.wfs.$currentGroup.set(this.wfs.$allGroups().filter(g => g.id === groupId)[0])\r\n      } else {\r\n        //this.wfs.refresh('/api/WfWorkflowGroup/GetAllWithWorkflows', '', groupId);\r\n      }\r\n    } else if (this.wfs.$designActiveTab() === 1) {\r\n      this.alertService.warn(\"The Query Params lack of groupId\", alertOptions);\r\n    }\r\n\r\n  }\r\n\r\n  router = inject(Router);\r\n  route = inject(ActivatedRoute);\r\n\r\n  loading: boolean = false;\r\n  override entityTable = \"WF_WORKFLOW\";\r\n  subscriptions: Subscription[] = [];\r\n\r\n  groupOptions$ = new BehaviorSubject<ICoreDropdownOption[]>([]);\r\n\r\n  crud!: ICorePageEditCRUD;\r\n  sections: ICoreFormSection[] =\r\n    [\r\n      {\r\n        rows: [\r\n          [\r\n            {\r\n              flexSize: 0,\r\n              label: \"UI_ENTITY_FIELD_CAPTION_COMMON_ID\",\r\n              field: 'id',\r\n              value: null,\r\n              hidden: true,\r\n              controlType: EnumFormBaseContolType.TEXTBOX,\r\n            },\r\n            {\r\n              flexSize: 0,\r\n              label: \"UI_ENTITY_FIELD_CAPTION_WF_WORKFLOW_GROUP_ID\",\r\n              field: 'groupId',\r\n              disabled: true,\r\n              hidden: true,\r\n              value: this.wfs.$currentGroup()?.id,\r\n              controlType: EnumFormBaseContolType.DROPDOWN,\r\n              type: 'number',\r\n              dropdownOptions$: this.groupOptions$,\r\n              getByIdObject$: new BehaviorSubject<any>({}),\r\n              getByIdApi: '/api/WfWorkflowGroup/GetById',\r\n              shownFrom: 'name',\r\n              validators: [\r\n                {\r\n                  name: 'required',\r\n                  validator: Validators.required,\r\n                  errorMessage: EnumTranslateKey.UI_FORM_CONTROL_ERROR_REQUIRED\r\n                },\r\n              ]\r\n            },\r\n            {\r\n              flexSize: 6,\r\n              label: \"UI_ENTITY_FIELD_CAPTION_WF_WORKFLOW_CODE\",\r\n              field: 'code',\r\n              value: '',\r\n              controlType: EnumFormBaseContolType.TEXTBOX,\r\n              type: 'string',\r\n              validators: [\r\n                {\r\n                  name: 'required',\r\n                  validator: Validators.required,\r\n                  errorMessage: EnumTranslateKey.UI_FORM_CONTROL_ERROR_REQUIRED\r\n                },\r\n                {\r\n                  name: 'minLength',\r\n                  validator: Validators.minLength(4),\r\n                  errorMessage: EnumTranslateKey.UI_FORM_CONTROL_ERROR_MIN_LENGTH\r\n                }\r\n              ]\r\n            },\r\n            {\r\n              flexSize: 6,\r\n              label: \"UI_ENTITY_FIELD_CAPTION_WF_WORKFLOW_NAME\",\r\n              field: 'name',\r\n              value: '',\r\n              controlType: EnumFormBaseContolType.TEXTBOX,\r\n              type: 'string',\r\n              validators: [\r\n                {\r\n                  name: 'required',\r\n                  validator: Validators.required,\r\n                  errorMessage: EnumTranslateKey.UI_FORM_CONTROL_ERROR_REQUIRED\r\n                },\r\n                {\r\n                  name: 'minLength',\r\n                  validator: Validators.minLength(4),\r\n                  errorMessage: EnumTranslateKey.UI_FORM_CONTROL_ERROR_MIN_LENGTH\r\n                }\r\n              ]\r\n            },\r\n          ],\r\n          [\r\n            {\r\n              flexSize: 12,\r\n              label: \"UI_ENTITY_FIELD_CAPTION_WF_WORKFLOW_DESCRIPTION\",\r\n              field: 'description',\r\n              value: '',\r\n              controlType: EnumFormBaseContolType.TEXTAREA,\r\n              textareaRows: 5,\r\n              type: 'string',\r\n              validators: [\r\n                {\r\n                  name: 'minLength',\r\n                  validator: Validators.minLength(20),\r\n                  errorMessage: EnumTranslateKey.UI_FORM_CONTROL_ERROR_MIN_LENGTH,\r\n                }\r\n              ]\r\n            },\r\n          ],\r\n          [\r\n            {\r\n              flexSize: 12,\r\n              label: \"UI_ENTITY_FIELD_CAPTION_WF_WORKFLOW_ALLOW_ON_BEHALF\",\r\n              field: 'allowOnBehalf',\r\n              value: false,\r\n              controlType: EnumFormBaseContolType.CHECKBOX,\r\n              type: 'boolean',\r\n              hint: 'If enabled, users can submit this workflow request on behalf of other employees.'\r\n            },\r\n          ],\r\n          [\r\n            {\r\n              flexSize: 12,\r\n              label: \"UI_ENTITY_FIELD_CAPTION_WF_WORKFLOW_ALLOW_CUSTOM_CC\",\r\n              field: 'allowCustomCc',\r\n              value: false,\r\n              controlType: EnumFormBaseContolType.CHECKBOX,\r\n              type: 'boolean',\r\n              hint: 'If enabled, submitter can add custom cc emails.'\r\n            },\r\n          ],\r\n          /*\r\n          [\r\n            {\r\n              field: 'afInstanceId',\r\n              label: 'Form template',\r\n              flexSize: 12,\r\n              value: '',\r\n              controlType: EnumFormBaseContolType.SEEKER,\r\n              seekerSourceType: EnumCoreFormControlSeekerSourceType.FORM_SEEK,\r\n              getByIdObject$: new BehaviorSubject<any>(null),\r\n              getByIdApi: '/api/AfInstance/GetById',\r\n              shownFrom: 'name',\r\n              boundFrom: 'id'\r\n            }\r\n          ]\r\n          */\r\n        ]\r\n      }\r\n    ];\r\n\r\n  ngAfterViewInit(): void {\r\n    setTimeout(() => {\r\n\r\n      this.subscriptions.push(\r\n        this.appService.get('/api/WfWorkflowGroup/GetAllAsc')\r\n          .subscribe(x => {\r\n            if (x.ok && x.status === 200 && x.body?.statusCode === 200) {\r\n              const newGroupOptions: ICoreDropdownOption[] = [];\r\n              x.body?.innerBody.forEach((e: any) => {\r\n                newGroupOptions.push({\r\n                  value: e.id,\r\n                  text: e.name\r\n                })\r\n              });\r\n              this.groupOptions$.next(newGroupOptions)\r\n            }\r\n          })\r\n      )\r\n    })\r\n  }\r\n\r\n  private updateCurrentFlow(values: any) {\r\n    if (!values) return;\r\n    this.wfs.$currentFlow.update(currentFlow => {\r\n      if (!currentFlow) {\r\n        return null\r\n      } else {\r\n        Object.keys(values).forEach((key: string) => {\r\n          (currentFlow as any)[key] = values[key]\r\n        })\r\n        return { ...currentFlow }\r\n      }\r\n    })\r\n  }\r\n  private updateCurrentFlowByKey(key: string, value: any) {\r\n    this.wfs.$currentFlow.update(currentFlow => {\r\n      if (!currentFlow) {\r\n        return null\r\n      } else {\r\n        (currentFlow as any)[key] = value\r\n        return { ...currentFlow }\r\n      }\r\n    })\r\n  }\r\n\r\n  private updateCurrentAfInstance(formValue: any): void {\r\n    console.log(\"[WfBasicInfoComponent][updateCurrentAfInstance]: $afInstance is being updated\");\r\n    this.fds.$afInstance.update(current => {\r\n      if (!current) return current;\r\n      return {\r\n        ...current,\r\n        name: formValue.name,\r\n        code: formValue.code\r\n      };\r\n    });\r\n  }\r\n\r\n  onFormCreated(e: FormGroup): void {\r\n    this.wfs.basicInfoForm = e;\r\n\r\n    e.valueChanges.subscribe(x => {\r\n      this.wfs.$currentBasicInfoJson.set(JSON.stringify(x));\r\n\r\n      this.updateCurrentFlow(x);\r\n      this.updateCurrentAfInstance(x);\r\n\r\n    });\r\n\r\n    runInInjectionContext(this.injector, () => {\r\n      effect(() => {\r\n        const form = this.wfs.basicInfoForm;\r\n        const groupId = this.wfs.$currentGroup()?.id;\r\n\r\n        if (form && groupId) {\r\n          form.get('groupId')?.patchValue(groupId, { emitEvent: false });\r\n          this.updateCurrentFlowByKey('groupId', groupId);\r\n          this.wfs.$currentBasicInfoJson.set(JSON.stringify(form.getRawValue()));\r\n        }\r\n      });\r\n    });\r\n\r\n  }\r\n\r\n\r\n  /* To allow form to be deactivated */\r\n  onFormReinit(e: string): void {\r\n    this.wfs.$initialBasicInfoJson.set(e);\r\n    this.formInitStringValue = e;\r\n  }\r\n\r\n  onSubmitSuccess(e: any) {\r\n    //this.wfs.refresh(undefined, '');\r\n    this.router.navigate(\r\n      [{ outlets: { workflowAux: null } }],\r\n      { relativeTo: this.route.parent }\r\n    );\r\n  }\r\n\r\n  onGotById(e: any) {\r\n    this.wfs.emailTemplatesForm.patchValue(e);\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.wfs.$initialBasicInfoJson.set('{}');\r\n    this.subscriptions.map(x => x?.unsubscribe())\r\n  }\r\n}","<div class=\"wf-basic-info-container\">\r\n\r\n    <div class=\"container container-fluid\">\r\n\r\n        <core-page-edit\r\n            [normalMode]=\"true\"\r\n            [captionCode]=\"''\"\r\n            [sections]=\"sections\" [crud]=\"crud\" [entityTable]=\"entityTable\" [hasIdOfStringType]=\"true\"\r\n            [stayAfterSubmit]=\"true\" (onFormCreated)=\"onFormCreated($event)\"\r\n            [idAsInput]=\"true\"\r\n            [id]=\"wfs.$currentFlow()?.id\"\r\n            [hideButtons]=\"true\"\r\n            [checkError$]=\"wfs.basicInfoFormCheckError$\"\r\n            (onGotById)=\"onGotById($event)\"\r\n            (onInitialValueStringReady)=\"onFormReinit($event)\"\r\n            (onSubmitSuccess)=\"onSubmitSuccess($event)\">\r\n        </core-page-edit>\r\n\r\n    </div>\r\n\r\n</div>\r\n\r\n@if (loading) {\r\n<app-fullscreen-modal-loader></app-fullscreen-modal-loader>\r\n}","import { AfterViewInit, Component, ElementRef, EventEmitter, inject, Input, Output, Renderer2, ViewChild } from '@angular/core';\r\nimport { EnumWorkflowStepType } from '../../enums/EnumWorkflowStepType';\r\nimport { BaseComponent } from '../../../base-component/base/base.component';\r\nimport { MultiLanguageService } from '../../../../services/multi-language.service';\r\nimport { CoreWorkflowService } from '../../core-workflow.service';\r\nimport { DomService } from '../../../services/dom.service';\r\n\r\n@Component({\r\n  selector: 'wf-insert-menu',\r\n  imports: [],\r\n  templateUrl: './wf-insert-menu.component.html',\r\n  styleUrl: './wf-insert-menu.component.scss'\r\n})\r\nexport class WfInsertMenuComponent extends BaseComponent implements AfterViewInit  {\r\n\r\n  @Output() insert = new EventEmitter<{ type: EnumWorkflowStepType; index: number; branchId: string }>();\r\n\r\n  @ViewChild('container') container!: ElementRef;\r\n\r\n  coreWorkflowService = inject(CoreWorkflowService);\r\n  elRef = inject(ElementRef);\r\n\r\n  listenerFn!: () => void;\r\n\r\n  enumType = EnumWorkflowStepType;\r\n\r\n  constructor(\r\n    public override mls: MultiLanguageService,\r\n    private renderer: Renderer2,\r\n    private domService: DomService\r\n  ) {\r\n    super(mls);\r\n  }\r\n  \r\n  onInsert(type: EnumWorkflowStepType): void {\r\n    this.insert.emit({\r\n      type,\r\n      index: this.coreWorkflowService.insertContext$.value!.index,\r\n      branchId: this.coreWorkflowService.insertContext$.value!.branchId ?? 'root'\r\n    });\r\n    this.coreWorkflowService.insertContext$.next(null);\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    setTimeout(() => {\r\n\r\n      this.listenerFn = this.renderer.listen('window', 'click', (e: Event) => {\r\n\t\t\t\r\n        e.stopPropagation();\r\n        \r\n        if (this.container && !!!this.container.nativeElement.contains(e.target)) {\r\n          this.coreWorkflowService.insertContext$.next(null);\r\n        }\r\n      });\r\n\r\n      const rect = this.coreWorkflowService.insertAnchorPoint$.value;\r\n      const menuEl = this.elRef.nativeElement as HTMLElement;\r\n  \r\n      if (!rect) return;\r\n\r\n      const menuHeight = menuEl.offsetHeight;\r\n      const zIndex = this.domService.getMaxZIndex() + 1;\r\n\r\n      menuEl.style.position = 'fixed';\r\n      menuEl.style.left = `${rect.right + 8}px`;\r\n      menuEl.style.top = `${rect.top}px`;\r\n      menuEl.style.zIndex = `${zIndex}`;\r\n\r\n\r\n    })\r\n  }\r\n\r\n  onCancelClicked(): void {\r\n    this.coreWorkflowService.insertContext$.next(null);\r\n  }\r\n\r\n  override ngOnDestroy(): void {\r\n    this.subscriptions.forEach(x => x?.unsubscribe());\r\n    if (this.listenerFn) this.listenerFn();\r\n  }\r\n}\r\n","<div class=\"wf-insert-menu-container\" #container>\r\n\r\n    <div class=\"menu-item\" (click)=\"onInsert(enumType.Approval)\">\r\n        <div class=\"menu-item-icon-wrapper\">\r\n            <div class=\"menu-item-icon\">🟧</div>\r\n        </div>\r\n        <div class=\"menu-item-text\">\r\n            <div>Approver</div>\r\n        </div>\r\n    </div>\r\n    <div class=\"menu-item\" (click)=\"onInsert(enumType.CC)\">\r\n        <div class=\"menu-item-icon-wrapper\">\r\n            <div class=\"menu-item-icon\">🟦</div>\r\n        </div>\r\n        <div class=\"menu-item-text\">\r\n            <div>CC</div>\r\n        </div>\r\n    </div>\r\n    <div class=\"menu-item\" (click)=\"onInsert(enumType.Handle)\">\r\n        <div class=\"menu-item-icon-wrapper\">\r\n            <div class=\"menu-item-icon\">🟪</div>\r\n        </div>\r\n        <div class=\"menu-item-text\">\r\n            <div>Handler</div>\r\n        </div>\r\n    </div>\r\n    <div class=\"menu-item\" (click)=\"onInsert(enumType.ConditionalBranch)\">\r\n        <div class=\"menu-item-icon-wrapper\">\r\n            <div class=\"menu-item-icon\">🌿</div>\r\n        </div>\r\n        <div class=\"menu-item-text\">\r\n            <div>Conditional Branch</div>\r\n        </div>\r\n    </div>\r\n    <div class=\"menu-item\" (click)=\"onCancelClicked()\">\r\n        <div class=\"menu-item-icon-wrapper\">\r\n            <div class=\"menu-item-icon\">❌</div>\r\n        </div>\r\n        <div class=\"menu-item-text\">\r\n            <div>Cancel</div>\r\n        </div>\r\n    </div>\r\n</div>","import { AfterViewInit, Component, ElementRef, EventEmitter, inject, Input, OnChanges, Output, Renderer2, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { WfInsertMenuComponent } from '../wf-insert-menu/wf-insert-menu.component';\r\nimport { IWorkflowInsertPoint } from '../../interfaces/IWorkflowInsertPoint';\r\nimport { IInsertStepEvent } from '../../interfaces/IInsertStepEvent';\r\nimport { CoreWorkflowService } from '../../core-workflow.service';\r\nimport { BaseComponent } from '../../../base-component/base/base.component';\r\nimport { IStep } from '../../interfaces/IStep';\r\nimport { AsyncPipe } from '@angular/common';\r\n\r\n@Component({\r\n  selector: 'wf-bottom-v-insert',\r\n  imports: [\r\n    AsyncPipe,\r\n    WfInsertMenuComponent\r\n  ],\r\n  templateUrl: './wf-bottom-v-insert.component.html',\r\n  styleUrls: ['../wf-workflow-canvas.component.scss']\r\n})\r\nexport class WfBottomVInsertComponent extends BaseComponent implements AfterViewInit {\r\n  @Input({ required: true }) currentContext!: IWorkflowInsertPoint;\r\n  @Input({ required: true }) currentStep!: IStep;\r\n\r\n  @Output() insertStep = new EventEmitter<IInsertStepEvent>();\r\n\r\n  @ViewChild('plusContainer') plusContainer!: ElementRef;\r\n\r\n  shouldShowInsert = false;\r\n\r\n  public coreWorkflowService = inject(CoreWorkflowService);\r\n  el = inject(ElementRef);\r\n  renderer = inject(Renderer2);\r\n\r\n  private observer: MutationObserver | null = null;\r\n\r\n  override ngOnInit(): void {\r\n    this.subscriptions.push(\r\n      this.mls.lang$.subscribe(x => this.lang = x)\r\n    );\r\n    this.subscriptions.push(\r\n      this.coreWorkflowService.insertContext$\r\n      .subscribe(ctx => {\r\n        this.shouldShowInsert = !!ctx &&\r\n          ctx.branchId === this.currentContext.branchId &&\r\n          ctx.index === this.currentContext.index;\r\n      })\r\n    );\r\n\r\n  }\r\n\r\n  onShowInsert(e: MouseEvent): void {\r\n    const insertContext = {\r\n      branchId: this.currentContext.branchId,\r\n      index: this.currentContext.index\r\n    };\r\n\r\n    const triggerEl = e.currentTarget as HTMLElement;\r\n    const rect = triggerEl.getBoundingClientRect();\r\n  \r\n    this.coreWorkflowService.insertContext$.next(insertContext);\r\n    this.coreWorkflowService.insertAnchorPoint$.next(rect);\r\n\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    setTimeout(() => {\r\n\r\n    });\r\n  }\r\n\r\n  override ngOnDestroy(): void {\r\n    this.subscriptions.forEach(x => x?.unsubscribe());\r\n    this.observer?.disconnect();\r\n  }\r\n\r\n}\r\n","<div class=\"wf-bottom-v-insert-container\" \r\n    [class.shorter]=\"(!!currentStep.isPseudo && !!currentStep.isInFallbackBranch!) || !!currentStep.config\"\r\n    [class.insert-context]=\"(coreWorkflowService.insertContext$ | async)?.branchId === currentContext.branchId && (coreWorkflowService.insertContext$ | async)?.index === currentContext.index\"\r\n>\r\n    <div class=\"vertical-line\"></div>\r\n\r\n    <div class=\"plus-container\" #plusContainer>\r\n        <button class=\"plus-btn\" (click)=\"onShowInsert($event)\">＋</button>\r\n    </div>\r\n\r\n    <div class=\"arrow-down-container\">\r\n        <div class=\"arrow-down\"></div>\r\n    </div>\r\n\r\n</div>","import { ChangeDetectionStrategy, Component, computed, effect, inject, output, WritableSignal } from '@angular/core';\r\nimport { BaseComponent } from '../../../../base-component/base/base.component';\r\nimport { EnumActorSourceType } from '../../../enums/EnumActorSourceType';\r\nimport { CoreRadioGroupComponent, ICoreRadioOption } from '../../../../core-radio-group/core-radio-group/core-radio-group.component';\r\nimport { BehaviorSubject, } from 'rxjs';\r\nimport { TranslatePipe } from '../../../../../app-pipes/translate.pipe';\r\nimport { IActorAssignment } from '../../../interfaces/IActorAssignment';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { ICoreDropdownOption } from '../../../../../interfaces/ICoreDropdownOption';\r\nimport { CoreParamControlComponent } from '../../../../core-param-control/core-param-control/core-param-control.component';\r\nimport { ICoreParamControl } from '../../../../core-header-params/enum-and-interfaces';\r\nimport { EnumFormBaseContolType } from '../../../../../enum/EnumFormBaseContolType';\r\nimport { EnumCoreFormControlSeekerSourceType } from '../../../../core-form-control-seeker/EnumCoreFormControlSeekerSourceType';\r\nimport { CoreWorkflowService } from '../../../core-workflow.service';\r\nimport { TooltipDirective } from '../../../../tooltip/tooltip.directive';\r\nimport { MultiLanguageService } from '../../../../../services/multi-language.service';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { AlertService } from '../../../../alert/alert.service';\r\nimport { AppService } from '../../../../../services/app.service';\r\nimport { IIdsRequest } from '../../../../../interfaces/IIdsRequest';\r\n\r\n@Component({\r\n  selector: 'wf-actor-selector',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  imports: [\r\n    FormsModule,\r\n    CoreParamControlComponent,\r\n    CoreRadioGroupComponent,\r\n    TranslatePipe,\r\n    TooltipDirective,\r\n  ],\r\n  templateUrl: './wf-actor-selector.component.html',\r\n  styleUrl: './wf-actor-selector.component.scss'\r\n})\r\nexport class WfActorSelectorComponent extends BaseComponent {\r\n\r\n  public wfs = inject(CoreWorkflowService);\r\n  http = inject(HttpClient);\r\n  as = inject(AlertService);\r\n  appService = inject(AppService);\r\n\r\n  $value = this.wfs.$selectedActorAssignment;\r\n  $valueChange = output<IActorAssignment | null>();\r\n  levelSpecificOptions$: BehaviorSubject<ICoreDropdownOption[]> = new BehaviorSubject<ICoreDropdownOption[]>([]);\r\n  levelNgModel$ = new BehaviorSubject<number | undefined>(undefined);\r\n\r\n  employeeObjectList$ = new BehaviorSubject<any[]>([]);\r\n  positionObjectList$ = new BehaviorSubject<any[]>([]);\r\n\r\n  $selectedActorAssignmentJson = computed(() => JSON.stringify(this.wfs.$selectedActorAssignment(), null, 2));\r\n\r\n  onNgModelChange = (ngModel: string, value: any) => {\r\n    switch (ngModel) {\r\n      case 'level':\r\n        this.onLevelChanged(value);\r\n        break;\r\n      case 'employeeIds':\r\n      case 'positionIds':\r\n        this.onStaticValueSelected(value)\r\n        break;\r\n    }\r\n  }\r\n\r\n  levelSpecificControl: ICoreParamControl = {\r\n    controlType: EnumFormBaseContolType.DROPDOWN,\r\n    name: 'level',\r\n    dropdownOptions$: this.levelSpecificOptions$,\r\n    ngModel: this.$value()?.level,\r\n    ngModel$: this.levelNgModel$,\r\n    flexSize: 12,\r\n    label: '',\r\n    ngModelChange: this.onNgModelChange,\r\n    getByIdApi: '/api/HuEmployee/GetById'\r\n  }\r\n\r\n  employeeIdsControl: ICoreParamControl = {\r\n    controlType: EnumFormBaseContolType.SEEKER,\r\n    seekerSourceType: EnumCoreFormControlSeekerSourceType.EMPLOYEE_SEEK,\r\n    multiMode: true,\r\n    objectList$: this.employeeObjectList$,\r\n    disabledDoubleClick: true,\r\n    name: 'employeeIds',\r\n    ngModel: this.$value()?.staticValueIds,\r\n    flexSize: 12,\r\n    label: '',\r\n    ngModelChange: this.onNgModelChange,\r\n    shownFrom: 'fullname',\r\n    getByIdApi: '/api/HuEmployee/GetById'\r\n  }\r\n\r\n  positionIdsControl: ICoreParamControl = {\r\n    controlType: EnumFormBaseContolType.SEEKER,\r\n    seekerSourceType: EnumCoreFormControlSeekerSourceType.POSITION_SEEK,\r\n    multiMode: true,\r\n    objectList$: this.positionObjectList$,\r\n    name: 'positionIds',\r\n    ngModel: this.$value()?.staticValueIds,\r\n    flexSize: 12,\r\n    label: '',\r\n    ngModelChange: this.onNgModelChange,\r\n    shownFrom: 'name',\r\n    getByIdApi: '/api/HuPosition/GetById'\r\n  }\r\n\r\n  readonly AVAILABLE_SOURCES = Object.values(EnumActorSourceType);\r\n\r\n  constructor(public override mls: MultiLanguageService) {\r\n    super(mls);\r\n    effect(() => {\r\n      const _ = this.wfs.$currentStep();\r\n      const assignment = this.wfs.$selectedActorAssignment();\r\n      const source = assignment?.source;\r\n      const ids = assignment?.staticValueIds;\r\n      switch (source) {\r\n        case EnumActorSourceType.Manager:\r\n        case EnumActorSourceType.DepartmentSupervisor:\r\n          this.updateLevelOptions(source);\r\n          this.levelNgModel$.next(this.$value()?.level);\r\n          break;\r\n        case EnumActorSourceType.Employee:\r\n          if (!!ids) {\r\n            this.appService.post('/api/HuEmployee/ReadAllByIds', { ids: ids } as IIdsRequest).subscribe(x => {\r\n              if (x.ok && x.status === 200 && x.body?.statusCode === 200) {\r\n                this.employeeIdsControl.objectList$?.next(x.body.innerBody);\r\n              }\r\n            })\r\n          } else {\r\n            this.employeeIdsControl.objectList$?.next([]);\r\n          }\r\n          break;\r\n        case EnumActorSourceType.Position:\r\n          if (!!ids) {\r\n            this.appService.post('/api/HuPosition/ReadAllByIds', { ids: ids } as IIdsRequest).subscribe(x => {\r\n              if (x.ok && x.status === 200 && x.body?.statusCode === 200) {\r\n                this.positionIdsControl.objectList$?.next(x.body.innerBody);\r\n              }\r\n            })\r\n          } else {\r\n            this.positionIdsControl.objectList$?.next([]);\r\n          }\r\n          break;\r\n      }\r\n\r\n    })\r\n  }\r\n\r\n  override ngOnInit(): void {\r\n    this.subscriptions.push(\r\n      this.mls.lang$.subscribe(x => this.lang = x)\r\n    )\r\n    const current = this.$value()?.source;\r\n    if (\r\n      current === EnumActorSourceType.Manager ||\r\n      current === EnumActorSourceType.DepartmentSupervisor\r\n    ) {\r\n      this.updateLevelOptions(current);\r\n    }\r\n  }\r\n\r\n  updateLevelOptions(source: EnumActorSourceType) {\r\n    const prefix = source === EnumActorSourceType.Manager ? 'Direct manager' : 'Direct supervisor';\r\n    const options = Array.from({ length: 10 }, (_, i) => ({\r\n      value: i,\r\n      text: i === 0 ? `${prefix}` : `${prefix} + ${i}`\r\n    }));\r\n    this.levelSpecificOptions$.next(options);\r\n  }\r\n\r\n  actorSourceOptions$ = new BehaviorSubject<ICoreRadioOption[]>(\r\n    Object.values(EnumActorSourceType)\r\n      .filter(val => ['Employee', 'Manager', 'DepartmentSupervisor', 'Position'].includes(val))\r\n      .map(val => ({\r\n        value: val,\r\n        text: val\r\n      }))\r\n  );\r\n\r\n\r\n  unsupportedYetactorSourceOptions$ = new BehaviorSubject<ICoreRadioOption[]>(\r\n    Object.values(EnumActorSourceType)\r\n      .filter(val => !['Employee', 'Manager', 'DepartmentSupervisor', 'Position'].includes(val))\r\n      .map(val => ({\r\n        value: val,\r\n        text: val\r\n      }))\r\n  );\r\n\r\n  $showEmployeeSeeker = computed(() =>\r\n    this.$value()?.source === EnumActorSourceType.Employee\r\n  );\r\n\r\n  $showPositionSeeker = computed(() =>\r\n    this.$value()?.source === EnumActorSourceType.Position\r\n  );\r\n\r\n  $showLevel = computed(() =>\r\n    [EnumActorSourceType.Manager, EnumActorSourceType.DepartmentSupervisor].includes(this.$value()!.source)\r\n  );\r\n\r\n  $showStepKey = computed(() =>\r\n    this.$value()?.source === EnumActorSourceType.StepRecipient\r\n  );\r\n\r\n  onSourceChanged(newSource: EnumActorSourceType): void {\r\n    let newValue = this.$value();\r\n    if (!newValue) return;\r\n\r\n    // Optionally reset level\r\n    if (\r\n      newSource === EnumActorSourceType.Manager ||\r\n      newSource === EnumActorSourceType.DepartmentSupervisor\r\n    ) {\r\n      newValue.level = undefined;\r\n      delete newValue.staticValueIds;\r\n      //delete newValue.stepKey;\r\n    } else {\r\n      delete newValue.level\r\n    }\r\n\r\n    this.$value.set({ ...newValue });\r\n\r\n    this.updateLevelOptions(newSource);\r\n    this.$valueChange.emit({ source: newSource });\r\n\r\n    this.wfs.updateCurrentStepConfig({\r\n      actors: { source: newSource },\r\n    });\r\n\r\n  }\r\n\r\n  onStaticValueSelected(value: number[]): void {\r\n    if (!this.$value()) return;\r\n    const next = { ...this.$value()!, staticValueIds: value };\r\n    this.$valueChange.emit(next);\r\n\r\n    const prev = this.$value();\r\n    if (!prev) return;\r\n    this.wfs.updateCurrentStepConfig({\r\n      actors: { ...prev, staticValueIds: value }\r\n    });\r\n  }\r\n\r\n  onLevelChanged(level: number): void {\r\n    if (!this.$value()) return;\r\n    const next = { ...this.$value()!, level };\r\n    this.$valueChange.emit(next);\r\n    const prev = this.$value();\r\n    if (!prev) return;\r\n    this.wfs.updateCurrentStepConfig({\r\n      actors: { ...prev, level }\r\n    });\r\n  }\r\n\r\n  onStepKeyChanged(key: string): void {\r\n    if (!this.$value()) return;\r\n    const next = { ...this.$value()!, stepKey: key };\r\n    this.$valueChange.emit(next);\r\n  }\r\n\r\n}\r\n","<div class=\"wf-actor-selector-container\">\r\n    <div class=\"soure-options\"\r\n      [appTooltip]=\"'This version currently supports: Manager | Supervisor | Employee | Position | Requester'\"\r\n      [showAnyway]=\"true\"\r\n      [position]=\"'above'\"    \r\n    >\r\n      <pre>{{ $selectedActorAssignmentJson() }}</pre>\r\n      <core-radio-group\r\n        [options$]=\"actorSourceOptions$\"\r\n        [vertical]=\"true\"\r\n        [columnCount]=\"2\"\r\n        [gapY]=\"8\"\r\n        [(ngModel)]=\"$value()!.source\"\r\n        (ngModelChange)=\"onSourceChanged($event)\">\r\n      </core-radio-group>\r\n    </div>\r\n\r\n    <div class=\"soure-options form-control-disabled\"\r\n      [appTooltip]=\"'Not supported yet in this version'\"\r\n      [showAnyway]=\"true\"\r\n    >\r\n      <core-radio-group\r\n        [options$]=\"unsupportedYetactorSourceOptions$\"\r\n        [vertical]=\"true\"\r\n        [columnCount]=\"2\"\r\n        [gapY]=\"8\"\r\n        [disabled]=\"true\"\r\n        [(ngModel)]=\"$value()!.source\"\r\n        (ngModelChange)=\"onSourceChanged($event)\">\r\n      </core-radio-group>\r\n    </div>\r\n  \r\n    <!-- Manager / DepartmentSupervisor -->\r\n    @if (!!$value() && $showLevel()) {\r\n      <div class=\"manager-level\">\r\n        <label>\r\n          {{ $value()!.source === 'Manager' ? 'Manager level' : 'Supervisor level' }}\r\n        </label>\r\n        <core-param-control\r\n          [control]=\"levelSpecificControl\"\r\n        ></core-param-control>\r\n      </div>\r\n    }\r\n  \r\n    <!-- Employee / Position / UserGroup (choose static entities) -->\r\n    @if (!!$value() && $value()!.source === 'Employee' || $value()!.source === 'Position' || $value()!.source === 'UserGroup') {\r\n      <div class=\"static-selector\">\r\n        <label>Select {{ $value()!.source }}</label>\r\n        <!-- Choose component based on source -->\r\n        @switch ($value()!.source) {\r\n          @case('Employee') {\r\n            <core-param-control\r\n              [control]=\"employeeIdsControl\"\r\n            ></core-param-control>\r\n          }\r\n          @case('Position') {\r\n            <core-param-control\r\n              [control]=\"positionIdsControl\"\r\n            ></core-param-control>\r\n          }\r\n          @case('UserGroup') {\r\n            <div>Not supported yet in this version</div>\r\n          }\r\n        }\r\n      </div>\r\n    }\r\n  \r\n    @if (!!$value() && $value()!.source === 'StepRecipient') {\r\n        <div>Not supported yet in this version</div>\r\n    }\r\n \r\n</div>\r\n  ","import { ChangeDetectionStrategy, Component, computed, inject, Signal, signal } from '@angular/core';\r\nimport { WfActorSelectorComponent } from '../wf-actor-selector/wf-actor-selector.component';\r\nimport { BaseComponent } from '../../../../base-component/base/base.component';\r\nimport { CoreRadioGroupComponent, ICoreRadioOption } from '../../../../core-radio-group/core-radio-group/core-radio-group.component';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { CoreWorkflowService } from '../../../core-workflow.service';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TranslatePipe } from '../../../../../app-pipes/translate.pipe';\r\nimport { RoutingStepLogic } from '../../../types/RoutingStepLogic';\r\n\r\n@Component({\r\n  selector: 'wf-approver-config',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  imports: [\r\n    FormsModule,\r\n    TranslatePipe,\r\n    WfActorSelectorComponent,\r\n    CoreRadioGroupComponent\r\n  ],\r\n  templateUrl: './wf-approver-config.component.html',\r\n  styleUrl: './wf-approver-config.component.scss'\r\n})\r\nexport class WfApproverConfigComponent extends BaseComponent {\r\n\r\n  public wfs = inject(CoreWorkflowService);\r\n\r\n  $routingLogic: Signal<RoutingStepLogic> = computed<RoutingStepLogic>(() => (this.wfs.$currentStep()?.config as any)?.routingLogic || 'parallel');\r\n\r\n  $actorSource = computed(() => this.wfs.$selectedActorAssignment()?.source || 'Unknown');\r\n\r\n  actorSourceOptions$ = new BehaviorSubject<ICoreRadioOption[]>(\r\n      [['parallel', 'Everyone assigned (all must approve)'], ['short-circuit', 'Anyone assigned (one must approve)']]\r\n      .map(val => ({\r\n        value: val[0],\r\n        text: val[1],\r\n      }))\r\n  );\r\n\r\n  onSourceChanged(e: any): void {\r\n    this.wfs.updateCurrentStepConfig({\r\n      routingLogic: e\r\n    });\r\n  }\r\n\r\n}\r\n","<div class=\"wf-approver-config-container\">\r\n    <wf-actor-selector></wf-actor-selector>\r\n    \r\n\r\n    @if (['Employee', 'Position', 'UserGroup'].includes($actorSource())) {\r\n\r\n        <div class=\"routing-logic\">\r\n\r\n            <div class=\"routing-logic-caption\">{{ 'When there are multiple actors, use the method' | translate : lang }}</div>\r\n            \r\n            <core-radio-group\r\n                [options$]=\"actorSourceOptions$\"\r\n                [vertical]=\"true\"\r\n                [gapY]=\"8\"\r\n                [defaultValue]=\"'parallel'\"\r\n                [ngModel]=\"$routingLogic()\"\r\n                (ngModelChange)=\"onSourceChanged($event)\">\r\n            </core-radio-group>\r\n    \r\n        </div>\r\n\r\n    }\r\n\r\n</div>","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\nimport { WfActorSelectorComponent } from '../wf-actor-selector/wf-actor-selector.component';\r\n\r\n@Component({\r\n  selector: 'wf-cc-config',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  imports: [\r\n    WfActorSelectorComponent\r\n  ],\r\n  templateUrl: './wf-cc-config.component.html',\r\n  styleUrl: './wf-cc-config.component.scss'\r\n})\r\nexport class WfCcConfigComponent {\r\n\r\n}\r\n","<div class=\"wf-cc-config-container\">\r\n    <wf-actor-selector></wf-actor-selector>\r\n</div>","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'wf-end-config',\r\n  imports: [],\r\n  templateUrl: './wf-end-config.component.html',\r\n  styleUrl: './wf-end-config.component.scss'\r\n})\r\nexport class WfEndConfigComponent {\r\n\r\n}\r\n","<div class=\"wf-submit-config-container\">\r\n    <div class=\"submit-config-box\">\r\n        <span class=\"icon\"><i class=\"feather-mail\"></i></span>\r\n        <span class=\"message\">\r\n            In this version, an email will be sent the <strong>requester</strong> by default.\r\n        </span>\r\n    </div>\r\n    <div class=\"submit-config-box\">Press ESC to hide</div>\r\n</div>","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\nimport { WfActorSelectorComponent } from '../wf-actor-selector/wf-actor-selector.component';\r\n\r\n@Component({\r\n  selector: 'wf-handler-config',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  imports: [\r\n    WfActorSelectorComponent\r\n  ],\r\n  templateUrl: './wf-handler-config.component.html',\r\n  styleUrl: './wf-handler-config.component.scss'\r\n})\r\nexport class WfHandlerConfigComponent {\r\n\r\n}\r\n","<div class=\"wf-handler-config\">\r\n    <wf-actor-selector></wf-actor-selector>\r\n</div>","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'wf-submit-config',\r\n  imports: [],\r\n  templateUrl: './wf-submit-config.component.html',\r\n  styleUrl: './wf-submit-config.component.scss'\r\n})\r\nexport class WfSubmitConfigComponent {\r\n\r\n}\r\n","<div class=\"wf-submit-config-container\">\r\n    <div class=\"submit-config-box\">\r\n        <span class=\"icon\"><i class=\"feather-check-square\"></i></span>\r\n        <span class=\"message\">\r\n            In this version, <strong>all members</strong> are allowed to submit.\r\n        </span>\r\n    </div>\r\n    <div class=\"submit-config-box\">Press ESC to hide</div>\r\n</div>","import { ChangeDetectionStrategy, Component, computed, inject, signal } from '@angular/core';\r\nimport { CoreWorkflowService } from '../core-workflow.service';\r\nimport { catchError, of } from 'rxjs';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { GptService } from '../../../services/gpt.service';\r\n\r\n@Component({\r\n  selector: 'wf-gpt-assistant',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  imports: [\r\n    FormsModule,\r\n  ],\r\n  templateUrl: './wf-gpt-assistant.component.html',\r\n  styleUrl: './wf-gpt-assistant.component.scss'\r\n})\r\nexport class WfGptAssistantComponent {\r\n  $gptReply = signal('');\r\n  gptInput: string = \"leaveDays > 5 and region != 'VN'\";\r\n  \r\n  wfs = inject(CoreWorkflowService);\r\n  gpt = inject(GptService);\r\n\r\n  askGpt(): void {\r\n    const input = this.gptInput?.trim();\r\n    if (!input) return;\r\n\r\n    this.wfs.$loading.set(true);\r\n\r\n    this.gpt.askGpt({\r\n      input,\r\n      context: []\r\n    }).pipe(\r\n      catchError(err => {\r\n        this.wfs.$loading.set(false);\r\n        console.error('ChatGPT error:', err);\r\n        return of({ ok: false, body: { innerBody: 'Error: Unable to process request.' } });\r\n      })\r\n    ).subscribe(x => {\r\n      this.wfs.$loading.set(false);\r\n\r\n      if (x.ok && x.status === 200 && x.body?.statusCode === 200) {\r\n        this.$gptReply.set(x.body.innerBody);\r\n      } else {\r\n        this.$gptReply.set('GPT could not generate a response.');\r\n      }\r\n    });\r\n  }\r\n}\r\n","<div class=\"wf-gpt-assistant-container\">\r\n\r\n    <div class=\"ask-gpt\">\r\n        <label class=\"gpt-label\">💬 Ask ChatGPT for a condition</label>\r\n\r\n        <textarea [(ngModel)]=\"gptInput\" class=\"gpt-textarea\" placeholder=\"e.g. Amount > 1000 and Region != 'CN'\">\r\n                </textarea>\r\n\r\n        <button (click)=\"askGpt()\" class=\"gpt-button\">Ask ChatGPT</button>\r\n\r\n        @if ($gptReply()) {\r\n        <div class=\"gpt-reply\">\r\n            <strong>ChatGPT says:</strong>\r\n            <pre>{{ $gptReply() }}</pre>\r\n        </div>\r\n        <small class=\"gpt-disclaimer\">\r\n            💡 This is a demo preview. GPT-generated logic will be integrated into the system in future versions.\r\n        </small>\r\n        }\r\n    </div>\r\n\r\n</div>","import { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';\r\nimport { CoreRuleTreeComponent } from '../../../core-rule-tree/core-rule-tree.component';\r\nimport { CoreWorkflowService } from '../../core-workflow.service';\r\nimport { CoreRuleTreeService } from '../../../core-rule-tree/core-rule-tree.service';\r\nimport { FormGroup, FormsModule } from '@angular/forms';\r\nimport { CoreRadioGroupComponent, ICoreRadioOption } from '../../../core-radio-group/core-radio-group/core-radio-group.component';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { EnumWorkflowStepType } from '../../enums/EnumWorkflowStepType';\r\n\r\n@Component({\r\n  selector: 'rule-config-shell',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  imports: [\r\n    FormsModule,\r\n    CoreRuleTreeComponent,\r\n    CoreRadioGroupComponent,\r\n  ],\r\n  templateUrl: './rule-config-shell.component.html',\r\n  styleUrl: './rule-config-shell.component.scss'\r\n})\r\nexport class RuleConfigShellComponent {\r\n  wfs = inject(CoreWorkflowService);\r\n  crts = inject(CoreRuleTreeService);\r\n\r\n  enumType = EnumWorkflowStepType;\r\n\r\n  $stepType = computed(() => this.wfs.$currentStep()?.type);\r\n  $fallbackType = computed(() => (this.wfs.$currentStep()?.config as any)?.fallbackType);\r\n  $fallbackMessage = computed(() => (this.wfs.$currentStep()?.config as any)?.fallbackMessage);\r\n\r\n  fallbackTypeOptions$ = new BehaviorSubject<ICoreRadioOption[]>([\r\n    {\r\n      value: 'hard-block',\r\n      text: 'Hard Block'\r\n    },\r\n    {\r\n      value: 'soft-warn',\r\n      text: 'Soft Warning'\r\n    }\r\n  ])\r\n\r\n  $stepFormGroup = computed<FormGroup>(() => {\r\n    const step = this.wfs.$currentStep();\r\n    if (!step) return this.crts.buildFormGroupFromStep(); // fallback\r\n\r\n    const raw = (step.config as any)?.ruleTree;\r\n\r\n    let parsed: any = undefined;\r\n\r\n    try {\r\n      parsed = typeof raw === 'string' ? JSON.parse(raw) : raw;\r\n    } catch (e) {\r\n      console.warn('Failed to parse ruleTree:', raw, e);\r\n      parsed = undefined;\r\n    }\r\n\r\n    const form = this.crts.buildFormGroupFromStep(parsed);\r\n    return form;\r\n  });\r\n\r\n  onRuleTreeJsonChange(e: any): void {\r\n    this.wfs.updateCurrentStepConfig({\r\n      ruleTree: e,\r\n      //conditionExpression: this.crts.$filterFormJsonString(),\r\n    });\r\n  }\r\n\r\n  onFallbackTypeChanged(e: any): void {\r\n    this.wfs.updateCurrentStepConfig({\r\n      fallbackType: e\r\n    });\r\n  }\r\n\r\n  onFallbackMessageChanged(e: string): void {\r\n    this.wfs.updateCurrentStepConfig({\r\n      fallbackMessage: e\r\n    });\r\n  }\r\n\r\n}\r\n","<div class=\"rule-config-shell-container\">\r\n\r\n    <div class=\"rule-tree-header\">\r\n        <div class=\"title\">Rule Conditions</div>\r\n        <div class=\"subtitle\">\r\n            Define logic that must be satisfied for this step to proceed. These conditions will be evaluated\r\n            automatically.\r\n        </div>\r\n    </div>\r\n\r\n    <div class=\"fallback-type-header\">\r\n        <div class=\"title\">Fallback Behavior</div>\r\n        <div class=\"subtitle\">\r\n\r\n        @if ($stepType() !== enumType.BranchCard) {\r\n            Choose what happens when the rule condition evaluates to <strong>false (0)</strong> at runtime:\r\n            <ul>\r\n            <li><strong>Hard Block</strong> Step will be auto-rejected.</li>\r\n            <li><strong>Soft Warn</strong> User will see a warning but may continue.</li>\r\n            </ul>\r\n\r\n        } @else {\r\n            When the condition evaluates to <strong>false (0)</strong>, the next branch (by order) will be triggered automatically.\r\n        }\r\n        </div>\r\n        @if ($stepType() !== enumType.BranchCard) {\r\n        <core-radio-group\r\n            [options$]=\"fallbackTypeOptions$\"\r\n            [vertical]=\"true\"\r\n            [gapY]=\"8\"\r\n            [ngModel]=\"$fallbackType()\"\r\n            (ngModelChange)=\"onFallbackTypeChanged($event)\" \r\n        />\r\n        }\r\n\r\n    </div>\r\n\r\n    @if ($stepType() !== enumType.BranchCard) {\r\n    <div class=\"fallback-message-wrapper\">\r\n        <label for=\"fallback-message\" class=\"form-label\">Optional Warning Message</label>\r\n        <textarea\r\n            id=\"fallback-message\"\r\n            class=\"form-control\"\r\n            placeholder=\"Enter a message to show when this fallback is triggered...\"\r\n            rows=\"3\"\r\n            [ngModel]=\"$fallbackMessage()\"\r\n            (ngModelChange)=\"onFallbackMessageChanged($event)\"\r\n        ></textarea>\r\n    </div>\r\n    }\r\n\r\n    <div class=\"rule-tree-wrapper\">\r\n\r\n        <core-rule-tree [$totalCols]=\"wfs.$availableCols()\" [$mainForm]=\"$stepFormGroup()\"\r\n            ($jsonEmitter)=\"onRuleTreeJsonChange($event)\" />\r\n\r\n    </div>\r\n</div>","import { Component, inject, computed } from '@angular/core';\r\nimport { CoreStickerCollectionComponent } from '../../../../core-sticker-collection/core-sticker-collection.component';\r\nimport { CoreWorkflowService } from '../../../core-workflow.service';\r\nimport { IFormBaseControl } from '../../../../core-form/core-form/enum-interfaces';\r\n\r\n@Component({\r\n  selector: 'wf-formui-config',\r\n  imports: [CoreStickerCollectionComponent],\r\n  templateUrl: './wf-formui-config.component.html',\r\n  styleUrl: './wf-formui-config.component.scss'\r\n})\r\nexport class WfFormuiConfigComponent {\r\n\r\n  private readonly systemFields = [\"initialRequesterEmployeeId\"];\r\n\r\n  wfs = inject(CoreWorkflowService);\r\n\r\n  $availableCols = computed(() =>\r\n    this.$fields().filter(f =>\r\n      !this.systemFields.includes(f.field)\r\n    ) ?? []\r\n  );\r\n\r\n  /** All AF fields */\r\n  $fields = computed<IFormBaseControl[]>(() => this.wfs.$availableCols());\r\n\r\n  /** Current step */\r\n  $step = computed(() => this.wfs.$currentStep());\r\n\r\n  /** Initial checklists */\r\n  $initialHidden = computed(() =>\r\n    Object.keys(this.$step()?.config?.formUi?.hidden ?? {})\r\n  );\r\n\r\n  $initialReadonly = computed(() =>\r\n    Object.keys(this.$step()?.config?.formUi?.readonly ?? {})\r\n  );\r\n\r\n  $initialRequired = computed(() =>\r\n    Object.keys(this.$step()?.config?.formUi?.required ?? {})\r\n  );\r\n\r\n  $initialReset = computed(() =>\r\n    Object.keys(this.$step()?.config?.formUi?.reset ?? {})\r\n  );\r\n\r\n  /** Toggle handler */\r\n  onToggle(mode: 'hidden' | 'readonly' | 'required' | 'reset', list: string[]) {\r\n    const step = this.$step();\r\n    if (!step) return;\r\n\r\n    const formUi = step.config?.formUi ?? {};\r\n\r\n    formUi[mode] = list.reduce((acc, k) => {\r\n      acc[k] = true;\r\n      return acc;\r\n    }, {} as Record<string, true>);\r\n\r\n    this.wfs.updateStep({\r\n      ...step,\r\n      config: {\r\n        ...(step.config ?? {}),\r\n        formUi: { ...formUi }\r\n      }\r\n    });\r\n  }\r\n}\r\n","<div class=\"formui-config-container\">\r\n\r\n    <div class=\"formui-config-header\">\r\n        <div class=\"title\">Form UI Configuration</div>\r\n        <div class=\"subtitle\">Control field visibility and behavior for this step</div>\r\n    </div>\r\n\r\n    <div class=\"formui-body\">\r\n\r\n        <!-- Hidden Fields -->\r\n        <div class=\"formui-block\">\r\n            <div class=\"label\">Hidden Fields</div>\r\n\r\n            <core-sticker-collection [$items]=\"$availableCols()\" [$shownFrom]=\"'field'\" [$initialChecked]=\"$initialHidden()\"\r\n                ($checkedChange)=\"onToggle('hidden', $event)\" [$enableFilter]=\"true\"></core-sticker-collection>\r\n        </div>\r\n\r\n        <!-- Readonly Fields -->\r\n        <div class=\"formui-block\">\r\n            <div class=\"label\">Readonly Fields</div>\r\n\r\n            <core-sticker-collection [$items]=\"$availableCols()\" [$shownFrom]=\"'field'\" [$initialChecked]=\"$initialReadonly()\"\r\n                ($checkedChange)=\"onToggle('readonly', $event)\" [$enableFilter]=\"true\"></core-sticker-collection>\r\n        </div>\r\n\r\n        <!-- Required Overrides -->\r\n        <div class=\"formui-block\">\r\n            <div class=\"label\">Required Overrides</div>\r\n\r\n            <core-sticker-collection [$items]=\"$availableCols()\" [$shownFrom]=\"'field'\" [$initialChecked]=\"$initialRequired()\"\r\n                ($checkedChange)=\"onToggle('required', $event)\" [$enableFilter]=\"true\"></core-sticker-collection>\r\n        </div>\r\n\r\n        <!-- Reset on Enter -->\r\n        <div class=\"formui-block\">\r\n            <div class=\"label\">Reset on Enter Step</div>\r\n\r\n            <core-sticker-collection [$items]=\"$availableCols()\" [$shownFrom]=\"'field'\" [$initialChecked]=\"$initialReset()\"\r\n                ($checkedChange)=\"onToggle('reset', $event)\" [$enableFilter]=\"true\"></core-sticker-collection>\r\n        </div>\r\n\r\n    </div>\r\n\r\n</div>","import { Component, computed, effect, ElementRef, inject, signal, TemplateRef, viewChild } from '@angular/core';\r\nimport { CoreCheckboxComponent } from '../../../../core-checkbox/core-checkbox/core-checkbox.component';\r\nimport { CoreRadioGroupComponent, ICoreRadioOption } from '../../../../core-radio-group/core-radio-group/core-radio-group.component';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TranslatePipe } from '../../../../../app-pipes/translate.pipe';\r\nimport { MultiLanguageService } from '../../../../../services/multi-language.service';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { CoreWorkflowService } from '../../../core-workflow.service';\r\nimport { ExecutionConfig } from '../../../interfaces/IStepConfig';\r\n\r\n@Component({\r\n  selector: 'wf-execution-config',\r\n  imports: [\r\n    FormsModule,\r\n    CoreRadioGroupComponent,\r\n    CoreCheckboxComponent,\r\n    TranslatePipe,\r\n  ],\r\n  templateUrl: './wf-execution-config.component.html',\r\n  styleUrl: './wf-execution-config.component.scss'\r\n})\r\nexport class WfExecutionConfigComponent {\r\n\r\n  $normalExecutionTooltip = viewChild<TemplateRef<any>>('normalExecutionTooltip');\r\n  $automaticApprovalTooltip = viewChild<TemplateRef<any>>('automaticApprovalTooltip');\r\n\r\n  mls = inject(MultiLanguageService);\r\n  $lang = toSignal(this.mls.lang$)\r\n\r\n  options$ = new BehaviorSubject<ICoreRadioOption[]>([]);\r\n\r\n  public wfs = inject(CoreWorkflowService);\r\n  $executionConfig = computed<ExecutionConfig>(() => {\r\n    const step = this.wfs.$currentStep();\r\n    return step?.config?.executionConfig ?? {\r\n      executionMode: 'NORMAL',\r\n      notifyActorsOnAutoExecution: false,\r\n      //notifyDelegatedActorsOnAutoExecution: false\r\n    } as ExecutionConfig;\r\n  });\r\n\r\n  constructor() {\r\n    effect(() => {\r\n      const normal = this.$normalExecutionTooltip();\r\n      const auto = this.$automaticApprovalTooltip();\r\n\r\n      if (!normal || !auto) return;\r\n\r\n      this.options$.next([\r\n        {\r\n          value: 'NORMAL',\r\n          text: 'Normal Execution',\r\n          htmlTooltip: normal\r\n        },\r\n        {\r\n          value: 'AUTO',\r\n          text: 'Automatic Approval',\r\n          htmlTooltip: auto\r\n        }\r\n      ]);\r\n    });\r\n\r\n  }\r\n\r\n  onSourceChanged<K extends keyof ExecutionConfig>(\r\n    field: K,\r\n    value: ExecutionConfig[K]\r\n  ) {\r\n    const current = this.$executionConfig();\r\n\r\n    const updated: ExecutionConfig = {\r\n      executionMode: current.executionMode,\r\n      notifyActorsOnAutoExecution: current.executionMode === 'AUTO' ? current.notifyActorsOnAutoExecution : false,\r\n    };\r\n\r\n    updated[field] = value;\r\n\r\n    if (current.executionMode === 'NORMAL') {\r\n      delete updated.notifyActorsOnAutoExecution;\r\n    }\r\n\r\n    this.wfs.updateCurrentStepConfig({\r\n      executionConfig: updated\r\n    });\r\n  }\r\n\r\n}\r\n","<div class=\"panel-header\">\r\n    <div class=\"panel-title\">Execution Configuration</div>\r\n    <p>Configure execution parameters for this workflow step.</p>\r\n\r\n    <core-radio-group [options$]=\"options$\" [vertical]=\"true\" [gapY]=\"8\" name=\"executionMode\" [ngModel]=\"$executionConfig().executionMode\"\r\n        (ngModelChange)=\"onSourceChanged('executionMode', $event)\" />\r\n\r\n    @if ($executionConfig().executionMode === 'AUTO') {\r\n    <core-checkbox [text]=\"'Notify Actors on Automatic Execution' | translate : $lang()!\" [tooltipPosition]=\"'right'\"\r\n        [ngModel]=\"$executionConfig().notifyActorsOnAutoExecution\" (ngModelChange)=\"onSourceChanged('notifyActorsOnAutoExecution', $event)\" />\r\n    <!-- <core-checkbox [text]=\"'Notify Delegated Actors on Automatic Execution' | translate : $lang()!\" [tooltipPosition]=\"'right'\"\r\n        [ngModel]=\"$executionConfig().notifyDelegatedActorsOnAutoExecution\" (ngModelChange)=\"onSourceChanged('notifyDelegatedActorsOnAutoExecution', $event)\" />         -->\r\n    }\r\n</div>\r\n\r\n<ng-template #normalExecutionTooltip>\r\n    <p>\r\n        In Normal Execution mode, assigned actors are required to take action.\r\n        The workflow will pause at this step until the approval conditions are satisfied.\r\n    </p>\r\n</ng-template>\r\n\r\n<ng-template #automaticApprovalTooltip>\r\n    <p>\r\n        In Automatic Approval mode, this step is completed automatically by the system.\r\n        Assigned actors are not required to take action, but can still be notified for awareness.\r\n    </p>\r\n</ng-template>","import { ChangeDetectionStrategy, Component, viewChild, effect, ElementRef, computed, inject, Renderer2, ChangeDetectorRef, signal } from '@angular/core';\r\nimport { FormGroup, FormsModule } from '@angular/forms';\r\nimport { CoreWorkflowService } from '../../core-workflow.service';\r\nimport { EnumWorkflowStepType } from '../../enums/EnumWorkflowStepType';\r\nimport { CoreRuleTreeComponent } from '../../../core-rule-tree/core-rule-tree.component';\r\nimport { DomService } from '../../../services/dom.service';\r\nimport { WfApproverConfigComponent } from './wf-approver-config/wf-approver-config.component';\r\nimport { WfCcConfigComponent } from './wf-cc-config/wf-cc-config.component';\r\nimport { WfEndConfigComponent } from './wf-end-config/wf-end-config.component';\r\nimport { WfHandlerConfigComponent } from './wf-handler-config/wf-handler-config.component';\r\nimport { WfSubmitConfigComponent } from './wf-submit-config/wf-submit-config.component';\r\nimport { WfGptAssistantComponent } from '../../wf-gpt-assistant/wf-gpt-assistant.component';\r\nimport { CoreRuleTreeService } from '../../../core-rule-tree/core-rule-tree.service';\r\nimport { RuleConfigShellComponent } from '../rule-config-shell/rule-config-shell.component';\r\nimport { WfFormuiConfigComponent } from './wf-formui-config/wf-formui-config.component';\r\nimport { WfExecutionConfigComponent } from './wf-execution-config/wf-execution-config.component';\r\n\r\n@Component({\r\n  selector: 'wf-step-config-shell',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  imports: [\r\n    FormsModule,\r\n    CoreRuleTreeComponent,\r\n    WfApproverConfigComponent,\r\n    WfExecutionConfigComponent,\r\n    WfCcConfigComponent,\r\n    WfEndConfigComponent,\r\n    WfHandlerConfigComponent,\r\n    WfSubmitConfigComponent,\r\n    WfFormuiConfigComponent,\r\n    RuleConfigShellComponent,\r\n    WfGptAssistantComponent\r\n  ],\r\n  templateUrl: './wf-step-config-shell.component.html',\r\n  styleUrls: ['./wf-step-config-shell.component.scss']\r\n})\r\nexport class WfStepConfigShellComponent {\r\n\r\n  $container = viewChild<ElementRef>('container');\r\n\r\n  // listenerFn!: () => void;\r\n  renderer = inject(Renderer2);\r\n  cdr = inject(ChangeDetectorRef);\r\n  crts = inject(CoreRuleTreeService);\r\n  enumType = EnumWorkflowStepType;\r\n\r\n  constructor(\r\n    public wfs: CoreWorkflowService,\r\n    private domService: DomService,\r\n  ) {\r\n    effect(() => {\r\n      const containerRef = this.$container();\r\n      if (containerRef) {\r\n        containerRef.nativeElement.style.zIndex = this.domService.getMaxZIndex() + 1;\r\n      }\r\n    });\r\n  }\r\n\r\n  $stepFormGroup = computed<FormGroup>(() => {\r\n    const step = this.wfs.$currentStep();\r\n    if (!step) return this.crts.buildFormGroupFromStep(); // fallback\r\n\r\n    const raw = (step.config as any)?.ruleTree;\r\n\r\n    let parsed: any = undefined;\r\n\r\n    try {\r\n      parsed = typeof raw === 'string' ? JSON.parse(raw) : raw;\r\n    } catch (e) {\r\n      console.warn('Failed to parse ruleTree:', raw, e);\r\n      parsed = undefined;\r\n    }\r\n\r\n    const form = this.crts.buildFormGroupFromStep(parsed);\r\n    return form;\r\n  });\r\n\r\n  $isBranchCard = computed<boolean>(() => {\r\n    const step = this.wfs.$currentStep();\r\n    console.log(step?.type)\r\n    console.log(step?.type === EnumWorkflowStepType.BranchCard)\r\n\r\n    return !!step && step.type === EnumWorkflowStepType.BranchCard;\r\n  })\r\n\r\n  $canRenderRuleTree = computed(() => {\r\n    const form = this.$stepFormGroup();\r\n    const cols = this.wfs.$availableCols();\r\n    const isBranchCard = this.$isBranchCard();\r\n\r\n    if (!form || !cols || !isBranchCard) return false;\r\n    if (cols.length === 0) return false;\r\n\r\n    return form.valid;\r\n  });\r\n\r\n  close() {\r\n    this.wfs.$showStepConfig.set(false); // example method\r\n  }\r\n\r\n  onRuleTreeJsonChange(e: any): void {\r\n    this.wfs.updateCurrentStepConfig({\r\n      ruleTree: e,\r\n      //conditionExpression: this.crts.$filterFormJsonString(),\r\n    });\r\n  }\r\n\r\n}","<div class=\"wf-step-config-shell-container\" #container [class.shown]=\"wfs.$showStepConfig()\">\r\n  \r\n    <div class=\"wf-step-config-header\">\r\n      <div class=\"panel-title\">\r\n        {{ wfs.$currentStep()?.type || 'Step' }} Configuration\r\n      </div>\r\n      <div class=\"close-wrapper\" (click)=\"close()\">\r\n        <i class=\"feather-x\"></i>\r\n      </div>\r\n    </div>\r\n  \r\n    <div class=\"wf-step-config-content\">\r\n\r\n\r\n        @switch (wfs.$currentStep()?.type) {\r\n\r\n          @case (enumType.BranchCard) {\r\n            <rule-config-shell />\r\n          }\r\n          \r\n          @case (enumType.Approval) {\r\n            <wf-approver-config/>\r\n            <hr />\r\n            <wf-execution-config />\r\n            <hr />\r\n            <wf-formui-config />\r\n            <hr />\r\n            <rule-config-shell />\r\n          }\r\n      \r\n          @case (enumType.Handle) {\r\n            <wf-handler-config/>\r\n            <hr />\r\n            <wf-formui-config />\r\n          }\r\n      \r\n          @case (enumType.CC) {\r\n            <wf-cc-config/>\r\n          }\r\n      \r\n          @case (enumType.Submit) {\r\n            <wf-submit-config/>\r\n            <hr />\r\n            <wf-formui-config />\r\n            <hr />\r\n            <rule-config-shell />\r\n          }\r\n      \r\n          @case (enumType.End) {\r\n            <wf-end-config/>\r\n            <hr />\r\n            <rule-config-shell />\r\n          }\r\n      \r\n          @default {\r\n            <div class=\"unsupported-type\">\r\n              Unsupported type\r\n            </div>\r\n          }\r\n      \r\n        }\r\n      \r\n    </div>\r\n  \r\n</div>","export const ROOT_BRANCH_ID = 'root';","import { inject, Injectable } from '@angular/core';\r\nimport { CoreWorkflowService } from '../core-workflow.service';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class BridgeLineService {\r\n\r\n  coreWorkflowService = inject(CoreWorkflowService);\r\n\r\n  colorRadius: number = 10;\r\n\r\n  adjustBridgeLines(\r\n    branchGroupEl: HTMLElement,\r\n    topBridgeLineEl: HTMLElement,\r\n    bottomBridgeLineEl: HTMLElement,\r\n    branchColumnEls: HTMLElement[],\r\n  ): void {\r\n    const columns = Array.from(\r\n      branchGroupEl.querySelectorAll(':scope > .branch-column')\r\n    ) as HTMLElement[];\r\n\r\n    if (columns.length < 2) return;\r\n\r\n    // Helper: get the last .arrow-down inside a column\r\n    // ':scope > .arrow-down' only works if .arrow-down is a direct child of col.\r\n    // Safely queries only arrows inside wf-bottom-v-insert\r\n    // Uses .pop() to grab the last one, if any (safe fallback if there's more than one).\r\n    // Ensures type safety with instanceof HTMLElement.\r\n    const getLastArrow = (col: HTMLElement): HTMLElement | null => {\r\n      const arrow = Array.from(col.querySelectorAll('wf-bottom-v-insert .arrow-down')).pop() as HTMLElement;\r\n      return arrow instanceof HTMLElement ? arrow : null;\r\n    };\r\n\r\n    const allArrows = columns\r\n      .map(getLastArrow)\r\n      .filter((el): el is HTMLElement => !!el);\r\n\r\n    if (allArrows.length < 2) return;\r\n\r\n    const r1 = allArrows[0].getBoundingClientRect();\r\n    const r2 = allArrows[allArrows.length - 1].getBoundingClientRect();\r\n    const containerRect = branchGroupEl.getBoundingClientRect();\r\n\r\n    const left = r1.left + r1.width / 2 - containerRect.left;\r\n    const right = r2.left + r2.width / 2 - containerRect.left;\r\n\r\n    const maxArrowBottom = allArrows.reduce((max, el) => {\r\n      const bottom = el.getBoundingClientRect().bottom;\r\n      return Math.max(max, bottom);\r\n    }, 0);\r\n\r\n    const top = maxArrowBottom - containerRect.top - 1;\r\n\r\n    // TOP bridge line\r\n    topBridgeLineEl.style.top = `17.5px`;\r\n    topBridgeLineEl.style.left = `${left}px`;\r\n    topBridgeLineEl.style.width = `${right - left}px`;\r\n\r\n    // BOTTOM bridge line\r\n    bottomBridgeLineEl.style.top = `${top}px`;\r\n    bottomBridgeLineEl.style.left = `${left}px`;\r\n    bottomBridgeLineEl.style.width = `${right - left}px`;\r\n\r\n    // Vertical lines\r\n    branchColumnEls.forEach(col => {\r\n      const lastArrow = getLastArrow(col);\r\n      const vertical = col.querySelector(':scope > .vertical-bridge-line') as HTMLElement;\r\n\r\n      if (!lastArrow || !vertical) return;\r\n\r\n      const arrowRect = lastArrow.getBoundingClientRect();\r\n      const colRect = col.getBoundingClientRect();\r\n\r\n      const startY = arrowRect.bottom - colRect.top;\r\n      const height = top - startY - this.coreWorkflowService.standardConnectorHeight - 17.5;\r\n\r\n      vertical.style.top = `${startY}px`;\r\n      vertical.style.left = `calc(50% - 1px)`;\r\n      vertical.style.height = `${height}px`;\r\n      vertical.style.display = height > 0 ? 'block' : 'none';\r\n      //vertical.style.backgroundColor = `hsl(${this.colorRadius}, 100%, 50%)`;\r\n      this.colorRadius += 10;\r\n    });\r\n    \r\n  }\r\n\r\n}\r\n","import { Directive, ElementRef, EventEmitter, Input, NgZone, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { BridgeLineService } from './bridge-line.service';\r\nimport { take } from 'rxjs';\r\n\r\n@Directive({\r\n  selector: '[bridgeLine]'\r\n})\r\nexport class BridgeLineDirective implements OnInit, OnDestroy {\r\n\r\n  @Output() bridgeLinesAdjusted = new EventEmitter<void>();\r\n\r\n  private resizeObserver!: ResizeObserver;\r\n  private mutationObserver!: MutationObserver;\r\n\r\n  constructor(\r\n    private elRef: ElementRef<HTMLElement>,\r\n    private bridgeLineService: BridgeLineService,\r\n    private zone: NgZone\r\n  ) {}\r\n\r\n  ngOnInit(): void {\r\n    this.zone.runOutsideAngular(() => {\r\n      this.resizeObserver = new ResizeObserver(() => {\r\n        requestAnimationFrame(() => this.adjustBridgeLines());\r\n      });\r\n      this.resizeObserver.observe(this.elRef.nativeElement);\r\n\r\n      this.mutationObserver = new MutationObserver(() => {\r\n        this.adjustBridgeLines();\r\n      });\r\n  \r\n      this.mutationObserver.observe(this.elRef.nativeElement, {\r\n        childList: true,\r\n        subtree: true\r\n      });\r\n\r\n    });\r\n\r\n    // First adjustment\r\n    requestAnimationFrame(() => this.adjustBridgeLines());\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.resizeObserver?.disconnect();\r\n    this.mutationObserver?.disconnect();\r\n  }\r\n\r\n  private adjustBridgeLines(): void {\r\n\r\n    const branchGroupEl = this.elRef.nativeElement;\r\n\r\n    const bridgeLines = branchGroupEl.querySelectorAll('.horizontal-bridge-line');\r\n    const topBridgeLineEl = bridgeLines[0] as HTMLElement | null;\r\n    const bottomBridgeLineEl = bridgeLines[1] as HTMLElement | null;\r\n\r\n    const branchColumnEls = Array.from(branchGroupEl.querySelectorAll(':scope > .branch-column')) as HTMLElement[];\r\n\r\n    if (!topBridgeLineEl || !bottomBridgeLineEl || !branchColumnEls) return;\r\n\r\n    this.bridgeLineService.adjustBridgeLines(\r\n      this.elRef.nativeElement,\r\n      topBridgeLineEl,\r\n      bottomBridgeLineEl,\r\n      branchColumnEls,\r\n    );\r\n    this.bridgeLinesAdjusted.emit();\r\n  }\r\n\r\n\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { IStep } from '../interfaces/IStep';\r\nimport { EnumWorkflowStepType } from '../enums/EnumWorkflowStepType';\r\nimport { EnumActorSourceType } from '../enums/EnumActorSourceType';\r\n\r\n@Pipe({\r\n  name: 'wfNodeLabel'\r\n})\r\nexport class WfNodeLabelPipe implements PipeTransform {\r\n\r\n  transform(value: IStep): string {\r\n\r\n    let result: string = '';\r\n\r\n    if (value.type === EnumWorkflowStepType.Approval || value.type === EnumWorkflowStepType.CC || value.type === EnumWorkflowStepType.Handle) {\r\n      if (!!value.config?.actors) {\r\n        switch (value.config?.actors.source) {\r\n          case EnumActorSourceType.Manager:\r\n            if (value.config?.actors.level !== undefined) {\r\n              result += `${value.config?.actors.source} level ${value.config?.actors.level}`;\r\n            }\r\n            break;\r\n          case EnumActorSourceType.DepartmentSupervisor:\r\n            if (value.config?.actors.level !== undefined) {\r\n              result += `${value.config?.actors.source} level ${value.config?.actors.level}`;\r\n            }\r\n            break;\r\n          case EnumActorSourceType.Position:\r\n            if (!!value.config?.actors.staticValueIds) {\r\n              result += `${value.config?.actors.staticValueIds.length} ${value.config?.actors.source.toLowerCase()}(s) selected`;\r\n            }\r\n            break;\r\n          case EnumActorSourceType.Employee:\r\n            if (!!value.config?.actors.staticValueIds) {\r\n              result += `${value.config?.actors.staticValueIds.length} ${value.config?.actors.source.toLowerCase()}(s) selected`;\r\n            }\r\n            break;\r\n          default:\r\n            result += value.label;\r\n        }\r\n      }\r\n\r\n      if (!!value.config?.actors?.staticValueIds && value.config?.actors?.staticValueIds?.length > 1) {\r\n        result += `; routing logic: ${value.config?.routingLogic}`\r\n      }\r\n\r\n      if (!!value.config?.ruleTree) {\r\n        result += `; has pre-filter condition; fallback type: ${value.config.fallbackType}`;\r\n      }\r\n\r\n    } else {\r\n      result = value.label;\r\n    }\r\n\r\n    return result;\r\n  }\r\n\r\n}\r\n","import { AfterViewInit, Component, ElementRef, inject, Input, QueryList, Renderer2, ViewChild, ViewChildren } from '@angular/core';\r\nimport { LowerCasePipe } from '@angular/common';\r\nimport { IStep } from '../../interfaces/IStep';\r\nimport { BaseComponent } from '../../../base-component/base/base.component';\r\nimport { CoreWorkflowService } from '../../core-workflow.service';\r\nimport { WfBottomVInsertComponent } from '../wf-bottom-v-insert/wf-bottom-v-insert.component';\r\nimport { EnumWorkflowStepType } from '../../enums/EnumWorkflowStepType';\r\nimport { TooltipDirective } from '../../../tooltip/tooltip.directive';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { IWorkflowBranch } from '../../interfaces/IWorkflowBranch';\r\nimport { BridgeLineService } from '../bridge-line.service';\r\nimport { BridgeLineDirective } from '../bridge-line.directive';\r\nimport { WfNodeLabelPipe } from '../../pipes/wf-node-label.pipe';\r\n\r\n@Component({\r\n  selector: 'wf-node',\r\n  imports: [\r\n    FormsModule,\r\n    WfNodeLabelPipe,\r\n    BridgeLineDirective,\r\n    LowerCasePipe,\r\n    WfBottomVInsertComponent,\r\n    TooltipDirective,\r\n  ],\r\n  templateUrl: './wf-node.component.html',\r\n  styleUrls: [\r\n    '../wf-workflow-canvas.component.scss',\r\n    './wf-node.component.scss'\r\n  ]\r\n})\r\nexport class WfNodeComponent extends BaseComponent implements AfterViewInit {\r\n  @Input({ required: true }) branchId!: string;\r\n  @Input({ required: true }) step!: IStep;\r\n  @Input({ required: true }) index!: number;\r\n  @Input({ required: true }) branchPriority!: number;\r\n  @Input({ required: true }) stepGroup: IStep[] = []; // array that holds 'step'\r\n  @Input() conditionalBranches!: IWorkflowBranch[];\r\n  @Input() isRootLevelStepGroup: boolean = false;\r\n\r\n  @Input() grandParentSteps: IStep[] | null = null; // The step array that owns the parent step of type ConditionalBranch\r\n  @Input() isInFallbackBranch: boolean = false;\r\n\r\n  @ViewChild('branchHeader') branchHeader!: ElementRef;\r\n  @ViewChild('branchName') branchName!: ElementRef;\r\n  @ViewChild('input') input!: ElementRef;\r\n\r\n  @ViewChild('branchGroup') branchGroupRef!: ElementRef<HTMLElement>;\r\n  @ViewChild('topBridgeLine') topBridgeLineRef!: ElementRef<HTMLElement>;\r\n  @ViewChild('bottomBridgeLine') bottomBridgeLineRef!: ElementRef<HTMLElement>;\r\n  @ViewChildren('branchColumn') branchColumnRefs!: QueryList<ElementRef<HTMLElement>>;\r\n\r\n  listenerFn!: (() => void) | null;\r\n\r\n  //private observer!: MutationObserver;\r\n\r\n  enumType = EnumWorkflowStepType;\r\n\r\n  public coreWorkflowService = inject(CoreWorkflowService);\r\n  renderer = inject(Renderer2);\r\n  bridgeLineService = inject(BridgeLineService);\r\n\r\n  stepNameEditMode: boolean = false;\r\n\r\n  onInputBlur(): void {\r\n    this.stepNameEditMode = false;\r\n  }\r\n\r\n  onStepNameChanged(newName: string): void {\r\n    if (this.isRootLevelStepGroup) {\r\n      const cloned = structuredClone(this.coreWorkflowService.$currentSteps());\r\n      const stepInCloned = cloned.find(s => s.id === this.step.id);\r\n      if (stepInCloned) {\r\n        stepInCloned.name = newName;\r\n        this.coreWorkflowService.$currentSteps.set(cloned);\r\n      }\r\n    }\r\n  }\r\n\r\n  getBranchColumnElements(): HTMLElement[] {\r\n    return this.branchColumnRefs?.map(ref => ref?.nativeElement);\r\n  }\r\n\r\n  private setupClickOutsideListener(): void {\r\n    // Clean up any existing listener\r\n    if (this.listenerFn) {\r\n      this.listenerFn();\r\n      this.listenerFn = null;\r\n    }\r\n\r\n    // Delay to ensure DOM has rendered\r\n    setTimeout(() => {\r\n      this.listenerFn = this.renderer.listen('document', 'click', (event: Event) => {\r\n        const clickedInside = this.branchHeader?.nativeElement.contains(event.target);\r\n        if (!clickedInside) {\r\n          this.stepNameEditMode = false;\r\n          this.removeClickOutsideListener(); // optional: remove after 1 toggle\r\n        }\r\n      });\r\n    });\r\n  }\r\n\r\n  private removeClickOutsideListener(): void {\r\n    if (this.listenerFn) {\r\n      this.listenerFn();\r\n      this.listenerFn = null;\r\n    }\r\n  }\r\n\r\n  onLabelClicked(): void {\r\n    this.coreWorkflowService.$showStepConfig.set(true);\r\n  }\r\n\r\n  switchToNameEditMode(): void {\r\n    if (!!this.step.isPseudo && !!this.isInFallbackBranch) return;\r\n    this.stepNameEditMode = true;\r\n    setTimeout(() => this.input?.nativeElement.focus());\r\n    this.setupClickOutsideListener();\r\n  }\r\n\r\n\r\n  adjustBridgeLines(): void {\r\n\r\n    setTimeout(() => {\r\n\r\n      if (!this.branchGroupRef || !this.topBridgeLineRef || !this.bottomBridgeLineRef) {\r\n        console.warn('[DEBUG] Some ref was null');\r\n        return;\r\n      }\r\n\r\n      console.log('[DEBUG] Triggering BridgeLineService');\r\n\r\n      this.bridgeLineService.adjustBridgeLines(\r\n        this.branchGroupRef.nativeElement,\r\n        this.topBridgeLineRef.nativeElement,\r\n        this.bottomBridgeLineRef.nativeElement,\r\n        this.branchColumnRefs.map(ref => ref.nativeElement)\r\n      );\r\n\r\n    }, 50)\r\n\r\n  }\r\n\r\n  onDeleteBranch(branchId: string): void {\r\n    if (!this.conditionalBranches) return;\r\n\r\n    const index = this.conditionalBranches.findIndex(b => b.id === branchId);\r\n    if (index === -1) return;\r\n\r\n    // ⚠️ Remove selected branch (in-place is okay, but needs re-signal)\r\n    this.conditionalBranches.splice(index, 1);\r\n\r\n    const onlyFallbackLeft = this.conditionalBranches.length === 1 && this.conditionalBranches[0].isFallback;\r\n\r\n    if (onlyFallbackLeft) {\r\n      if (!this.grandParentSteps) return;\r\n\r\n      const fallbackBranchId = this.conditionalBranches[0].id;\r\n\r\n      const stepIndex = this.grandParentSteps.findIndex(step =>\r\n        step.branches?.some(branch => branch.id === fallbackBranchId)\r\n      );\r\n      if (stepIndex === -1) return;\r\n\r\n      if (this.isRootLevelStepGroup) {\r\n        // ✅ Deep clone and reassign to trigger reactivity\r\n        const updated = structuredClone(this.grandParentSteps);\r\n        updated.splice(stepIndex, 1);\r\n        this.coreWorkflowService.$currentSteps.set(updated);\r\n      } else {\r\n        // ✅ In-place mutation is fine for nested groups\r\n        this.grandParentSteps.splice(stepIndex, 1);\r\n        this.coreWorkflowService.$currentSteps.set(structuredClone(this.coreWorkflowService.$currentSteps()));\r\n      }\r\n\r\n      return;\r\n    }\r\n\r\n    // 🧠 Still re-trigger signal to reflect nested change in UI\r\n    this.coreWorkflowService.autoReassignPriorities(this.conditionalBranches);\r\n    this.coreWorkflowService.$currentSteps.set(structuredClone(this.coreWorkflowService.$currentSteps()));\r\n  }\r\n\r\n  onDeleteStep(): void {\r\n    if (!this.stepGroup) return;\r\n\r\n    const index = this.stepGroup.findIndex(s => s.id === this.step.id);\r\n    if (index === -1) return;\r\n\r\n    if (this.isRootLevelStepGroup) {\r\n      this.coreWorkflowService.updateStepsSignalAfterNestedChange(this.coreWorkflowService.$currentSteps, draft => {\r\n        draft.splice(index, 1);\r\n      });\r\n    } else {\r\n      this.stepGroup.splice(index, 1); // nested mutation still allowed (e.g., in branch)\r\n      this.coreWorkflowService.updateStepsSignalAfterNestedChange(this.coreWorkflowService.$currentSteps, _ => { }); // triggers reactivity\r\n    }\r\n  }\r\n\r\n\r\n  ngAfterViewInit(): void {\r\n    setTimeout(() => {\r\n\r\n    })\r\n  }\r\n\r\n  override ngOnDestroy(): void {\r\n    this.subscriptions.forEach(x => x?.unsubscribe());\r\n\r\n  }\r\n\r\n  openConditionEditor(): void {\r\n    this.coreWorkflowService.$currentStep.set(this.step);\r\n    this.coreWorkflowService.$showStepConfig.set(true);\r\n  }\r\n\r\n  /*\r\n  openNoneBranchRelatedEditor(): void {\r\n    this.coreWorkflowService.$currentStep.set(this.step);\r\n    this.coreWorkflowService.$showStepConfig.set(true);\r\n  }    \r\n  */\r\n\r\n  /*\r\n  openNoneBranchRelatedEditor(): void {\r\n\r\n    const steps = this.coreWorkflowService.$currentSteps();\r\n    console.log(\"$currentSteps\", steps);\r\n    console.log('🧪 Raw step found:', JSON.stringify(steps.find(s => s.id === this.step.id), null, 2));\r\n\r\n\r\n    const filter = this.coreWorkflowService.$currentSteps().filter(x => x.id === this.step.id);\r\n    if (filter.length === 1) {\r\n      const step = filter[0];\r\n      this.coreWorkflowService.$currentStep.set(step);\r\n      this.coreWorkflowService.$showStepConfig.set(true);\r\n    }\r\n  }\r\n  */\r\n\r\n  openNoneBranchRelatedEditor(): void {\r\n    const steps = this.coreWorkflowService.$currentSteps();\r\n\r\n    const found = this.coreWorkflowService.findStepRecursive(steps, this.step.id);\r\n\r\n    console.log(\"🧪 Step found:\", found);\r\n\r\n    if (found) {\r\n      this.coreWorkflowService.$currentStep.set(found);\r\n      this.coreWorkflowService.$showStepConfig.set(true);\r\n    } else {\r\n      console.warn(`Step with id=${this.step.id} not found in workflow tree`);\r\n    }\r\n  }\r\n\r\n}\r\n","@switch (step.type) {\r\n\r\n    @case (enumType.ConditionalBranch) {\r\n      <div class=\"wf-branch-group-container\">\r\n        <div \r\n        class=\"branch-group\" \r\n        #branchGroup \r\n        bridgeLine\r\n        (bridgeLinesAdjusted)=\"adjustBridgeLines()\"\r\n        >\r\n          <!-- 🔹 Top Bridge Line -->\r\n          <div class=\"horizontal-bridge-line\" #topBridgeLine></div>\r\n\r\n          <div class=\"add-branch-inline\" [appTooltip]=\"'All conditional branches are checked from Left to Right in a strict order'\" [showAnyway]=\"true\">\r\n            <button class=\"add-branch-btn\" (click)=\"coreWorkflowService.addBranchToStep(step.id)\">\r\n                ＋ Add New Branch\r\n            </button>\r\n          </div>\r\n\r\n  \r\n          @for (branch of step.branches; track $index; let j = $index) {\r\n            <div class=\"branch-column\" #branchColumn>\r\n              <div class=\"branch-column-inner\">\r\n  \r\n                @for (bstep of branch.steps; track $index; let k = $index) {\r\n                  <wf-node\r\n                    [branchId]=\"branch.id\"\r\n                    [branchPriority]=\"branch.priority\"\r\n                    [step]=\"bstep\"\r\n                    [conditionalBranches]=\"step.branches || []\"\r\n                    [stepGroup]=\"branch.steps\"\r\n                    [grandParentSteps]=\"stepGroup\"\r\n                    [index]=\"k\"\r\n                    [isInFallbackBranch]=\"!!branch.isFallback\"\r\n                  ></wf-node>\r\n                }\r\n  \r\n              </div>\r\n  \r\n              <div class=\"vertical-bridge-line\"></div>\r\n            </div>\r\n          }\r\n  \r\n          <!-- 🔹 Bottom Bridge Line -->\r\n          <div class=\"horizontal-bridge-line\" #bottomBridgeLine></div>\r\n        </div>\r\n      </div>\r\n    }\r\n  \r\n    @case (enumType.BranchCard) {\r\n      <div class=\"wf-step-container wf-branch-card-container workflow-box\">\r\n        <div class=\"step-wrapper branch-card-wrapper\" [class.fallback]=\"!!isInFallbackBranch\">\r\n          <div class=\"arrow-down-container\">\r\n            <div class=\"arrow-down\"></div>\r\n          </div>\r\n  \r\n          <div class=\"step-header branch-header\" [class.edit-mode]=\"stepNameEditMode\" #branchHeader>\r\n            @if (stepNameEditMode) {\r\n              <div class=\"input-wrapper\">\r\n                <input class=\"form-control\" \r\n                  (blur)=\"onInputBlur()\" \r\n                  [(ngModel)]=\"step.name\"\r\n                  (ngModelChange)=\"onStepNameChanged($event)\" \r\n                  #input>\r\n              </div>\r\n            } @else {\r\n              <div class=\"step-name-wrapper branch-name-wrapper\">\r\n                <div\r\n                  class=\"step-name branch-name\"\r\n                  [class.pointer]=\"!isInFallbackBranch\"\r\n                  (click)=\"switchToNameEditMode()\"\r\n                  #branchName>\r\n                  {{ step.name }}\r\n                </div>\r\n  \r\n                @if (!!isInFallbackBranch) {\r\n                  <i class=\"ti-info-alt\"\r\n                     [appTooltip]=\"'This branch is created by default and will only be activated if none of the other branches can be executed.'\"\r\n                     [showAnyway]=\"true\" [position]=\"'above'\"></i>\r\n                }\r\n              </div>\r\n  \r\n              <div class=\"branch-priority\">Priority {{ branchPriority }}</div>\r\n              <div class=\"step-delete branch-delete pointer\" (click)=\"onDeleteBranch(branchId)\">\r\n                <i class=\"feather-x\"></i>\r\n              </div>\r\n            }\r\n          </div>\r\n  \r\n          <div class=\"step-set-config branch-set-condition\" [class.pointer]=\"!isInFallbackBranch\">\r\n            @if (!!isInFallbackBranch) {\r\n              <div class=\"branch-subtext fallback\"\r\n                   [appTooltip]=\"'If other branches are not met, the alternative branch will be executed'\"\r\n                   [showAnyway]=\"true\" [position]=\"'above'\">\r\n                If other branches are not met, the alternative branch will be executed\r\n              </div>\r\n            } @else {\r\n              <div class=\"step-subtext branch-subtext\" (click)=\"openConditionEditor()\">Set conditions</div>\r\n              <div><i class=\"feather-chevron-right\"></i></div>\r\n            }\r\n          </div>\r\n        </div>\r\n      </div>\r\n    }\r\n\r\n    <!-- The handler node applies to the situation where no approval is required, but a member needs to process something:\r\n💰 Financial payment,\r\n📎 Stamping,\r\n🗂 Document filing, and so on. -->\r\n  \r\n    @default() {\r\n      <div class=\"wf-step-container workflow-box {{ step.type.toLowerCase() }}\">\r\n\r\n          <div class=\"step-wrapper\">\r\n    \r\n            <div class=\"step-header\" [class.edit-mode]=\"stepNameEditMode\">\r\n              @if (stepNameEditMode) {\r\n                <div class=\"input-wrapper\">\r\n                  <input class=\"form-control\" \r\n                    (blur)=\"onInputBlur()\" \r\n                    [(ngModel)]=\"step.name\" \r\n                    (ngModelChange)=\"onStepNameChanged($event)\"                     \r\n                    #input>\r\n                </div>\r\n              } @else {\r\n                <div class=\"step-name-wrapper\">\r\n                  <div\r\n                    class=\"step-name pointer\"\r\n                    (click)=\"switchToNameEditMode()\"\r\n                    #stepName>\r\n                    {{ step.name }}\r\n                  </div>\r\n                  @if (step.type === enumType.Handle) {\r\n                    <i class=\"ti-info-alt pointer\"\r\n                      [appTooltip]=\"'The handler node applies to the situation where no approval is required, but a member needs to process something (Financial payment, Stamping, Document filing, and so on.)'\"\r\n                      [showAnyway]=\"true\" [position]=\"'above'\"></i>\r\n                  }\r\n                </div>\r\n    \r\n                <div class=\"step-delete pointer\" (click)=\"onDeleteStep()\" [class.d-none]=\"step.type === enumType.Submit || step.type === enumType.End\">\r\n                  <i class=\"feather-x\" ></i>\r\n                </div>\r\n              }\r\n            </div>\r\n    \r\n            <div class=\"step-set-config pointer\" (click)=\"openNoneBranchRelatedEditor()\">\r\n              <div class=\"step-subtext pointer\" [class.configurated]=\"!!step.config\" [appTooltip]=\"step | wfNodeLabel\">{{ step | wfNodeLabel }}</div>\r\n              <div><i class=\"feather-chevron-right\"></i></div>\r\n            </div>\r\n          </div>\r\n      </div>\r\n    }\r\n}\r\n  \r\n@if (step.type !== enumType.End) {\r\n    <wf-bottom-v-insert\r\n        [currentContext]=\"{ branchId: step.branchId, index: index + 1 }\"\r\n        [currentStep]=\"step\"\r\n    ></wf-bottom-v-insert>\r\n}\r\n  ","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\r\nimport { CoreWorkflowService } from '../../core-workflow.service';\r\nimport { BaseComponent } from '../../../base-component/base/base.component';\r\n\r\n@Component({\r\n  selector: 'wf-steps-preview',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  imports: [],\r\n  templateUrl: './wf-steps-preview.component.html',\r\n  styleUrl: './wf-steps-preview.component.scss'\r\n})\r\nexport class WfStepsPreviewComponent extends BaseComponent {\r\n\r\n  public wfs = inject(CoreWorkflowService);\r\n\r\n  close(): void {\r\n    this.wfs.$showCurrentStepsPreview.set(false);\r\n  }\r\n\r\n}\r\n","<div class=\"wf-steps-preview-container\">\r\n\r\n    <div class=\"wf-steps-preview-header\">\r\n        <div class=\"panel-title\">\r\n          All Steps Json\r\n        </div>\r\n        <div class=\"close-wrapper\" (click)=\"close()\">\r\n          <i class=\"feather-x\"></i>\r\n        </div>\r\n    </div>\r\n\r\n    @if (wfs.$stepsJsonPreview()) {\r\n        <pre class=\"json-preview\">{{ wfs.$stepsJsonPreview() }}</pre>\r\n    } @else {\r\n        <div class=\"empty-preview\">No steps to preview</div>\r\n    }\r\n\r\n</div>","import { AsyncPipe, LowerCasePipe, NgStyle, NgTemplateOutlet } from '@angular/common';\r\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, effect, ElementRef, inject, input, OnDestroy, signal, viewChild, WritableSignal } from '@angular/core';\r\nimport { IStep } from '../interfaces/IStep';\r\nimport { CoreWorkflowService } from '../core-workflow.service';\r\nimport { EnumWorkflowStepType } from '../enums/EnumWorkflowStepType';\r\nimport { WfInsertMenuComponent } from './wf-insert-menu/wf-insert-menu.component';\r\nimport { WfBottomVInsertComponent } from './wf-bottom-v-insert/wf-bottom-v-insert.component';\r\nimport { WfStepConfigShellComponent } from './wf-step-config-shell/wf-step-config-shell.component';\r\nimport { IInsertStepEvent } from '../interfaces/IInsertStepEvent';\r\nimport { IWorkflowInsertPoint } from '../interfaces/IWorkflowInsertPoint';\r\nimport { ROOT_BRANCH_ID } from '../enums/EnumWorkflowBranch';\r\nimport { IWorkflowBranch } from '../interfaces/IWorkflowBranch';\r\nimport { WfNodeComponent } from './wf-node/wf-node.component';\r\nimport { BaseComponent } from '../../base-component/base/base.component';\r\nimport { MultiLanguageService } from '../../../services/multi-language.service';\r\nimport { HotKeysDirective } from '../../../directives/hot-keys.directive';\r\nimport { ApplicationHelpService } from '../../../services/application-help.service';\r\nimport { distinctUntilChanged } from 'rxjs';\r\nimport { WfStepsPreviewComponent } from './wf-steps-preview/wf-steps-preview.component';\r\nimport { DomService } from '../../services/dom.service';\r\nimport { TooltipDirective } from '../../tooltip/tooltip.directive';\r\n\r\n@Component({\r\n  selector: 'wf-workflow-canvas',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  imports: [\r\n    AsyncPipe,\r\n    NgStyle,\r\n    HotKeysDirective,\r\n    TooltipDirective,\r\n    NgTemplateOutlet,\r\n    LowerCasePipe,\r\n    WfInsertMenuComponent,\r\n    WfBottomVInsertComponent,\r\n    WfInsertMenuComponent,\r\n    WfStepConfigShellComponent,\r\n    WfNodeComponent,\r\n    WfStepsPreviewComponent\r\n  ],\r\n  templateUrl: './wf-workflow-canvas.component.html',\r\n  styleUrl: './wf-workflow-canvas.component.scss'\r\n})\r\nexport class WfWorkflowCanvasComponent extends BaseComponent implements AfterViewInit, OnDestroy {\r\n\r\n  $width: WritableSignal<number> = signal(0);\r\n  $height: WritableSignal<number> = signal(0);\r\n\r\n  $container = viewChild<ElementRef>('container');\r\n  $printArea = viewChild<ElementRef>('printArea');\r\n  $zoomTools = viewChild<ElementRef>('zoomTools');\r\n  $parent = viewChild<ElementRef>('parent');\r\n\r\n  hotKeys: string[] = ['F3', 'Escape']\r\n\r\n  enumType = EnumWorkflowStepType;\r\n  ROOT_BRANCH_ID = ROOT_BRANCH_ID;\r\n\r\n  public wfs = inject(CoreWorkflowService);\r\n  $steps = this.wfs.$currentSteps;\r\n  applicationHelpService = inject(ApplicationHelpService);\r\n  domService = inject(DomService);\r\n\r\n  insertIndex: number | null = null;\r\n\r\n  $previewZIndex: WritableSignal<number> = signal(this.domService.getMaxZIndex() + 1);\r\n\r\n  $scale: WritableSignal<number> = signal(1);\r\n  $scalePercent = computed(() => `${Math.round(this.$scale() * 100)}%`);\r\n  cdr = inject(ChangeDetectorRef);\r\n\r\n  $mouseDown = signal(false);\r\n  $isDragging = computed(() => this.$mouseDown())\r\n  $startX: WritableSignal<any> = signal(undefined);\r\n  $scrollLeft: WritableSignal<any> = signal(undefined);\r\n  $startY: WritableSignal<any> = signal(undefined);\r\n  $scrollTop: WritableSignal<any> = signal(undefined);\r\n\r\n  constructor(public override mls: MultiLanguageService) {\r\n    super(mls);\r\n    effect(() => {\r\n      this.$container()?.nativeElement.style.setProperty('--standard-connector-height', this.wfs.standardConnectorHeight + 'px');\r\n    })\r\n    this.subscriptions.push(\r\n      this.applicationHelpService.activeKey$\r\n        .pipe(\r\n          distinctUntilChanged()\r\n        )\r\n        .subscribe(x => {\r\n          console.log(\"x\", x)\r\n          switch (x) {\r\n            case 'F3':\r\n              this.wfs.$showCurrentStepsPreview.set(true);\r\n              break;\r\n            case 'Escape':\r\n              this.wfs.$currentStep.set(null);\r\n              this.wfs.$showCurrentStepsPreview.set(false);\r\n              this.wfs.$showStepConfig.set(false)\r\n              break;\r\n          }\r\n        })\r\n    )\r\n  }\r\n\r\n  startDragging(e: any, flag: any) {\r\n    this.$mouseDown.set(true);\r\n    this.$startX.set(e.pageX - this.$parent()?.nativeElement.offsetLeft);\r\n    this.$scrollLeft.set(this.$parent()?.nativeElement.scrollLeft);\r\n    this.$startY.set(e.pageY - this.$parent()?.nativeElement.offsetTop);\r\n    this.$scrollTop.set(this.$parent()?.nativeElement.scrollTop);\r\n  }\r\n\r\n  stopDragging(e: any, flag: any) {\r\n    this.$mouseDown.set(false);\r\n  }\r\n\r\n  moveEvent(e: any) {\r\n    e.preventDefault();\r\n    if (!this.$mouseDown()) {\r\n      return;\r\n    }\r\n    const x = e.pageX - this.$parent()?.nativeElement.offsetLeft;\r\n    const scrollX = x - this.$startX();\r\n    this.$parent()!.nativeElement.scrollLeft = this.$scrollLeft() - scrollX;\r\n    const y = e.pageY - this.$parent()?.nativeElement.offsetTop;\r\n    const scrollY = y - this.$startY();\r\n    this.$parent()!.nativeElement.scrollTop = this.$scrollTop() - scrollY;\r\n\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    this.wfs.$showStepConfig.set(false);\r\n    this.wfs.$showCurrentStepsPreview.set(false);\r\n    setTimeout(() => {\r\n      this.wfs.$initialProcessDesignJson.set(this.wfs.$stepsJsonPreview());\r\n    }, 1000)\r\n  }\r\n\r\n  findBranchById(branchId: string, steps: IStep[] = this.wfs.$currentSteps()): IWorkflowBranch | undefined {\r\n    for (const step of steps) {\r\n      if (step.type === EnumWorkflowStepType.ConditionalBranch && step.branches) {\r\n        // ✅ step.branches is now just an array\r\n        const found = step.branches.find(b => b.id === branchId);\r\n        if (found) return found;\r\n\r\n        // 🔁 Recurse into steps of each branch\r\n        for (const branch of step.branches) {\r\n          const deep = this.findBranchById(branchId, branch.steps);\r\n          if (deep) return deep;\r\n        }\r\n      }\r\n    }\r\n    return undefined;\r\n  }\r\n\r\n\r\n  // safeInsertStep(\r\n  //   branchId: string | null,\r\n  //   index: number,\r\n  //   newStep: IStep\r\n  // ): void {\r\n  //   if (branchId === null || branchId === ROOT_BRANCH_ID) {\r\n  //     this.$steps.update(steps => {\r\n  //       const copy = [...steps];\r\n  //       copy.splice(index, 0, newStep);\r\n  //       return copy;\r\n  //     })\r\n  //     return;\r\n  //   }\r\n\r\n  //   const branch = this.findBranchById(branchId);\r\n  //   if (!branch) {\r\n  //     console.warn(`❗ Cannot insert: Branch with ID \"${branchId}\" not found.`);\r\n  //     return;\r\n  //   }\r\n\r\n  //   branch.steps.splice(index, 0, newStep);\r\n\r\n  //   // ✅ now update $steps based on branch changes\r\n  //   this.$steps.update(steps => {\r\n  //     const copy = structuredClone(steps);              // deep clone of old tree\r\n  //     const targetBranch = this.findBranchById(branchId, copy);\r\n  //     if (!targetBranch) {\r\n  //       console.warn(`❗ Cannot insert: Branch with ID \"${branchId}\" not found.`);\r\n  //       return steps;\r\n  //     }\r\n\r\n  //     targetBranch.steps.splice(index, 0, newStep);     // mutate clone only\r\n  //     return copy;                                      // return fresh tree\r\n  //   });\r\n\r\n\r\n  // }\r\n\r\n\r\n  safeInsertStep(\r\n    branchId: string | null,\r\n    index: number,\r\n    newStep: IStep\r\n  ): void {\r\n    \r\n    if (branchId === null || branchId === ROOT_BRANCH_ID) {\r\n      this.$steps.update(steps => {\r\n        const copy = [...steps];\r\n        copy.splice(index, 0, newStep);\r\n        return copy;\r\n      });\r\n      return;\r\n    }\r\n\r\n    this.$steps.update(steps => {\r\n      const copy = structuredClone(steps);\r\n      const targetBranch = this.findBranchById(branchId, copy);\r\n      if (!targetBranch) {\r\n        console.warn(`❗ Cannot insert: Branch with ID \"${branchId}\" not found.`);\r\n        return steps;\r\n      }\r\n\r\n      const safeIndex = Math.min(Math.max(index, 0), targetBranch.steps.length);\r\n      const stepToInsert = structuredClone(newStep);\r\n\r\n      targetBranch.steps.splice(safeIndex, 0, stepToInsert);\r\n      return copy;\r\n    });\r\n\r\n  }\r\n\r\n\r\n  insertStep(event: IInsertStepEvent) {\r\n    const { type, index, branchId } = event;\r\n\r\n    if (!branchId) {\r\n      console.error(`insertStep error: without branchId`)\r\n      return;\r\n    };\r\n\r\n    let newStep: IStep;\r\n\r\n    switch (type) {\r\n      case EnumWorkflowStepType.Approval:\r\n        newStep = this.wfs.createStep(type, branchId, 'Set approver');\r\n        break;\r\n      case EnumWorkflowStepType.CC:\r\n        newStep = this.wfs.createStep(type, branchId, 'Set cc recipients');\r\n        break;\r\n      case EnumWorkflowStepType.Handle:\r\n        newStep = this.wfs.createStep(type, branchId, 'Set handler');\r\n        break;\r\n      case EnumWorkflowStepType.ConditionalBranch:\r\n        newStep = this.wfs.createConditionalBranchStep(branchId);\r\n        break;\r\n      default:\r\n        return;\r\n    }\r\n\r\n    this.safeInsertStep(branchId, index, newStep);\r\n\r\n    this.wfs.insertContext$.next(null);\r\n  }\r\n\r\n  showInsertInBranch(context: IWorkflowInsertPoint): void {\r\n    this.wfs.insertContext$.next(context);\r\n  }\r\n\r\n  insertIntoBranch(event: IInsertStepEvent): void {\r\n    const { branchId, type, index } = event;\r\n\r\n    if (!branchId) {\r\n      console.error(`insertStep error: missing branchId`);\r\n      return;\r\n    }\r\n\r\n    // 🔍 Find the branch that matches the given ID\r\n    const branch = this.findBranchById(branchId);\r\n    if (!branch) {\r\n      console.warn(`Branch not found: ${branchId}`);\r\n      return;\r\n    }\r\n\r\n    let newStep: IStep;\r\n\r\n    switch (type) {\r\n      case EnumWorkflowStepType.Approval:\r\n        newStep = this.wfs.createStep(type, branchId, 'Set approver');\r\n        break;\r\n      case EnumWorkflowStepType.CC:\r\n        newStep = this.wfs.createStep(type, branchId, 'Set cc recipients');\r\n        break;\r\n      case EnumWorkflowStepType.Handle:\r\n        newStep = this.wfs.createStep(type, branchId, 'Set handler');\r\n        break;\r\n      case EnumWorkflowStepType.ConditionalBranch:\r\n        newStep = this.wfs.createConditionalBranchStep(branchId);\r\n        break;\r\n      default:\r\n        console.warn(`Unsupported step type: ${type}`);\r\n        return;\r\n    }\r\n\r\n    // ✅ Insert into the correct step list\r\n    branch.steps.splice(index, 0, newStep);\r\n\r\n    // 🧹 Clear insert state\r\n    this.wfs.insertContext$.next(null);\r\n  }\r\n\r\n  private findStepRecursive(steps: IStep[], targetId: string): IStep | null {\r\n    for (const step of steps) {\r\n      if (step.id === targetId) return step;\r\n\r\n      // ✅ New model: step.branches is directly an array\r\n      if (step.type === EnumWorkflowStepType.ConditionalBranch && step.branches) {\r\n        for (const branch of step.branches) {\r\n          const found = this.findStepRecursive(branch.steps, targetId);\r\n          if (found) return found;\r\n        }\r\n      }\r\n    }\r\n    return null;\r\n  }\r\n\r\n  addBranchToConditional(conditionalStepId: string) {\r\n    const conditional = this.findStepRecursive(this.wfs.$currentSteps(), conditionalStepId);\r\n\r\n    if (!conditional || conditional.type !== EnumWorkflowStepType.ConditionalBranch || !conditional.branches) return;\r\n\r\n    const branches = conditional.branches;\r\n\r\n    const newBranchId = crypto.randomUUID();\r\n    const name = `Condition ${branches.length}`;\r\n\r\n    const newBranch: IWorkflowBranch = {\r\n      id: newBranchId,\r\n      name,\r\n      priority: branches.length + 1,\r\n      steps: [\r\n        {\r\n          id: `pseudo-${newBranchId}`,\r\n          name: `pseudo-${newBranchId}`,\r\n          branchId: newBranchId,\r\n          type: EnumWorkflowStepType.BranchCard,\r\n          label: name,\r\n          isPseudo: true\r\n        },\r\n        {\r\n          id: crypto.randomUUID(),\r\n          name: `default-approval-${branches.length + 1}`,\r\n          branchId: newBranchId,\r\n          type: EnumWorkflowStepType.Approval,\r\n          label: `Approve ${branches.length + 1}`\r\n        }\r\n      ]\r\n    };\r\n\r\n    const fallbackIndex = branches.findIndex(b => b.isFallback);\r\n\r\n    if (fallbackIndex !== -1) {\r\n      branches.splice(fallbackIndex, 0, newBranch);\r\n    } else {\r\n      branches.push(newBranch);\r\n    }\r\n\r\n    this.wfs.autoReassignPriorities(branches);\r\n  }\r\n\r\n  deleteBranchGroup(stepId: string): void {\r\n    const step = this.wfs.$currentSteps().find(s => s.id === stepId);\r\n\r\n    if (step?.type === EnumWorkflowStepType.ConditionalBranch) {\r\n      const index = this.wfs.$currentSteps().indexOf(step);\r\n      if (index !== -1) {\r\n        this.$steps.update(steps => {\r\n          const copy = [...steps];\r\n          copy.splice(index, 1);\r\n          return copy;\r\n        })\r\n      }\r\n    }\r\n  }\r\n\r\n  tempOnLabelClicked(): void {\r\n    this.wfs.$showStepConfig.set(true);\r\n  }\r\n\r\n  onInsert(event: IInsertStepEvent): void {\r\n    // Delegate to CoreWorkflowService or your working tree logic\r\n    this.insertStep(event);\r\n    this.clearInsertContext(); // clean up\r\n  }\r\n\r\n  clearInsertContext(): void {\r\n    this.wfs.insertContext$.next(null);\r\n  }\r\n\r\n  showStepsJSON(): void {\r\n    this.wfs.$showCurrentStepsPreview.set(true);\r\n  }\r\n\r\n  zoonIn(): void {\r\n    this.$scale.set(this.$scale() * 1.1);\r\n    this.$container()!.nativeElement.style.setProperty('--print-area-scale', this.$scale())\r\n  }\r\n\r\n  zoonOut(): void {\r\n    this.$scale.set(this.$scale() / 1.1);\r\n    this.$container()!.nativeElement.style.setProperty('--print-area-scale', this.$scale())\r\n  }\r\n\r\n  zoonFeat(): void {\r\n    this.$scale.set(1);\r\n    this.$container()!.nativeElement.style.setProperty('--print-area-scale', this.$scale())\r\n  }\r\n\r\n  override ngOnDestroy(): void {\r\n    this.subscriptions.forEach(x => x?.unsubscribe());\r\n  }\r\n\r\n}\r\n","<div class=\"wf-workflow-canvas-container\" #container [hotKeys]=\"hotKeys\"\r\n    (mousedown)=\"startDragging($event, false)\"\r\n    (mouseup)=\"stopDragging($event, false)\" \r\n    (mouseleave)=\"stopDragging($event, false)\" \r\n    (mousemove)=\"moveEvent($event)\"\r\n>\r\n\r\n  <div class=\"canvas-top-tool\">\r\n    <button type=\"button\" class=\"btn btn-secondary\"\r\n      [appTooltip]=\"'Press F3 to show, Escape to hide'\"\r\n      [showAnyway]=\"true\"\r\n      (click)=\"showStepsJSON()\"\r\n    >Show JSON</button>\r\n  </div>  \r\n\r\n  <div class=\"zoom-tools\" #zoomTools>\r\n    <div class=\"tools-wrapper\">\r\n      <button type=\"button\" class=\"zoom-btn\" (click)=\"zoonOut()\">\r\n        <span class=\"universe-icon\"><i class=\"feather-zoom-out\"></i></span>\r\n      </button>\r\n      <button type=\"button\" class=\"zoom-label\">\r\n        {{ $scalePercent() }}\r\n      </button>\r\n      <button type=\"button\" class=\"zoom-btn\" (click)=\"zoonIn()\">\r\n        <span class=\"universe-icon\"><i class=\"feather-zoom-in\"></i></span>\r\n      </button>\r\n      <button type=\"button\" class=\"zoom-btn\" (click)=\"zoonFeat()\">\r\n        <span class=\"universe-icon\"><i class=\"feather-zap\"></i></span>\r\n      </button>\r\n    </div>\r\n  </div>\r\n\r\n  <div class=\"scroll-container\" #parent [ngStyle]=\"{ cursor: $mouseDown() ? 'all-scroll' : 'unset', width: $width() ? $width() + 'px' : '100%', height: $height() ? $height() + 'px' : 'unset'}\">\r\n\r\n    <div class=\"canvas print-area\" #printArea [class.is-dragging]=\"$isDragging()\">\r\n\r\n      @for (step of wfs.$currentSteps(); track $index; let i = $index) {\r\n        <div class=\"step\">\r\n          <wf-node\r\n            [branchId]=\"'root'\"\r\n            [branchPriority]=\"1\"\r\n            [step]=\"step\"\r\n            [stepGroup]=\"wfs.$currentSteps()\"\r\n            [index]=\"i\"\r\n            [isRootLevelStepGroup]=\"true\"\r\n          ></wf-node>\r\n        </div>\r\n      }\r\n\r\n    </div>\r\n\r\n  </div>\r\n\r\n  @if (!!(wfs.insertContext$ | async)) {\r\n    <wf-insert-menu (insert)=\"insertStep($event)\"></wf-insert-menu>\r\n  }\r\n\r\n  <wf-step-config-shell></wf-step-config-shell>\r\n\r\n  <div class=\"steps-preview\" [class.shown]=\"wfs.$showCurrentStepsPreview()\"\r\n    [ngStyle]=\"{\r\n      zIndex: $previewZIndex()\r\n    }\"\r\n  >\r\n    <wf-steps-preview></wf-steps-preview>\r\n  </div>\r\n  \r\n\r\n</div>","import { AfterViewInit, ChangeDetectionStrategy, Component, inject, OnDestroy } from '@angular/core';\r\nimport { CoreWorkflowService } from '../core-workflow.service';\r\nimport { AsyncPipe } from '@angular/common';\r\nimport { WfWorkflowCanvasComponent } from './wf-workflow-canvas.component'\r\nimport { BaseComponent } from '../../base-component/base/base.component';\r\nimport { MultiLanguageService } from '../../../services/multi-language.service';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { CoreToastLoadingComponent } from '../../core-toast-loading/core-toast-loading.component';\r\n\r\n@Component({\r\n  selector: 'wf-process-design',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  imports: [\r\n    AsyncPipe,\r\n    WfWorkflowCanvasComponent,\r\n    CoreToastLoadingComponent\r\n  ],\r\n  templateUrl: './wf-process-design.component.html',\r\n  styleUrl: './wf-process-design.component.scss'\r\n})\r\nexport class WfProcessDesignComponent extends BaseComponent {\r\n\r\n  wfs = inject(CoreWorkflowService);\r\n  $loading = this.wfs.$loading;\r\n  \r\n\r\n  constructor(\r\n    public override mls: MultiLanguageService,\r\n    private route: ActivatedRoute,\r\n  ) {\r\n    super(mls);\r\n  }\r\n\r\n}\r\n","<div class=\"wf-process-design-container\">\r\n\r\n     @if (!!wfs.$currentFlow()) {\r\n        <wf-workflow-canvas></wf-workflow-canvas>\r\n    }\r\n\r\n    @if ($loading()) {\r\n        <core-toast-loading></core-toast-loading>\r\n    }\r\n</div>","import { ChangeDetectorRef, Component, effect, inject, Injector, runInInjectionContext } from '@angular/core';\r\nimport { CorePageEditComponent } from '../../core-page-edit/core-page-edit.component';\r\nimport { BaseEditComponent } from '../../base-edit/base-edit/base-edit.component';\r\nimport { CoreWorkflowService } from '../core-workflow.service';\r\nimport { AlertService } from '../../alert/alert.service';\r\nimport { CoreFormDesignService } from '../../core-form-design/core-form-design.service';\r\nimport { DialogService } from '../../../services/dialog.service';\r\nimport { AppService } from '../../../services/app.service';\r\nimport { FormGroup, Validators } from '@angular/forms';\r\nimport { BehaviorSubject, Subscription } from 'rxjs';\r\nimport { ICorePageEditCRUD } from '../../core-page-edit/ICorePageEditCRUD';\r\nimport { ICoreFormSection } from '../../core-form/core-form/enum-interfaces';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { EnumFormBaseContolType } from '../../../enum/EnumFormBaseContolType';\r\nimport { ICoreDropdownOption } from '../../../interfaces/ICoreDropdownOption';\r\nimport { EnumCoreFormControlSeekerSourceType } from '../../core-form-control-seeker/EnumCoreFormControlSeekerSourceType';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { CoreRuleTreeComponent } from '../../core-rule-tree/core-rule-tree.component';\r\nimport { CoreDatetimeService } from '../../services/core-datetime.service';\r\nimport { EnumTranslateKey } from 'alpha-global-constants';\r\nimport { CoreFormService } from '../../core-form/core-form.service';\r\nimport { AppConfigService } from '../../../services/app-config.service';\r\nimport { IUiDelegation } from '../interfaces/IUiDelegation';\r\nimport { JsonPipe } from '@angular/common';\r\nimport { EnumCoreTablePipeType } from '../../core-table/EnumCoreTablePipeType';\r\n\r\n@Component({\r\n  selector: 'wf-delegation',\r\n  imports: [\r\n    CorePageEditComponent,\r\n    NgTemplateOutlet,\r\n    JsonPipe,\r\n    CoreRuleTreeComponent\r\n  ],\r\n  templateUrl: './wf-delegation.component.html',\r\n  styleUrl: './wf-delegation.component.scss'\r\n})\r\nexport class WfDelegationComponent extends BaseEditComponent {\r\n\r\n  captionCode!: string;\r\n\r\n  public wfs = inject(CoreWorkflowService);\r\n  alertService = inject(AlertService);\r\n  fds = inject(CoreFormDesignService);\r\n  cdr = inject(ChangeDetectorRef);\r\n  cdts = inject(CoreDatetimeService);\r\n  appService = inject(AppService);\r\n  acs = inject(AppConfigService);\r\n\r\n  timezoneOptions$ = new BehaviorSubject<ICoreDropdownOption[]>([]);\r\n  private injector = inject(Injector);\r\n  cfs = inject(CoreFormService);\r\n\r\n  finalPayload!: IUiDelegation;\r\n\r\n  constructor(\r\n    public override dialogService: DialogService,\r\n  ) {\r\n\r\n    super(dialogService);\r\n\r\n    if (!this.captionCode) {\r\n      this.captionCode = \"UI_COMPONENT_TITLE_WF_WORKFLOW_GROUP\";\r\n    }\r\n\r\n    this.crud = {\r\n      c: '/api/WfWorkflow/Create',\r\n      r: '/api/WfWorkflow/GetByIdWithAfInstance',\r\n      u: '/api/WfWorkflow/Update',\r\n      d: '/api/WfWorkflow/Delete',\r\n    };\r\n\r\n    effect(() => {\r\n      const tzs = this.acs.CANONICAL_IANA_TIMEZONES;\r\n      const ops: ICoreDropdownOption[] = [];\r\n      tzs.forEach(tz => {\r\n        ops.push({\r\n          value: tz, text: tz\r\n        })\r\n      })\r\n      this.timezoneOptions$.next(ops);\r\n    })\r\n\r\n  }\r\n\r\n  router = inject(Router);\r\n  route = inject(ActivatedRoute);\r\n\r\n  loading: boolean = false;\r\n  override entityTable = \"WF_WORKFLOW\";\r\n  subscriptions: Subscription[] = [];\r\n\r\n  crud!: ICorePageEditCRUD;\r\n\r\n  //Angular rule (rất quan trọng)\r\n  //form.value KHÔNG bao gồm disabled controls\r\n  //form.getRawValue() MỚI bao gồm disabled controls\r\n  sections: ICoreFormSection[] =\r\n    [\r\n      {\r\n        rows: [\r\n          [\r\n            {\r\n              flexSize: 0,\r\n              label: \"UI_ENTITY_FIELD_CAPTION_COMMON_ID\",\r\n              field: 'id',\r\n              value: null,\r\n              hidden: true,\r\n              controlType: EnumFormBaseContolType.TEXTBOX,\r\n            },\r\n            {\r\n              flexSize: 12,\r\n              label: \"Delegation rows\",\r\n              field: 'delegationRows',\r\n              value: [],\r\n              controlType: EnumFormBaseContolType.FORM_ARRAY,\r\n              type: 'object',\r\n              removeDisabledIf: {\r\n                field: 'lastUsedAtUtc',\r\n                notNull: true\r\n              },\r\n              removeDisabledIfMessage: 'This delegation has been used and cannot be removed.',\r\n              formArrayIdentityField: 'delegationId',\r\n              formArraySections: [\r\n                {\r\n                  rows: [\r\n                    [\r\n                      {\r\n                        field: 'conditionJson',\r\n                        label: 'Condition',\r\n                        value: \"\",\r\n                        flexSize: 4,\r\n                        controlType: EnumFormBaseContolType.RULE_SET,\r\n                      },\r\n                    ],\r\n                    [\r\n                      {\r\n                        field: 'delegationId',\r\n                        label: 'delegationId',\r\n                        value: '',\r\n                        flexSize: 0,\r\n                        controlType: EnumFormBaseContolType.TEXTBOX,\r\n                        hidden: true,\r\n                        //disabled: true\r\n                      },\r\n                      {\r\n                        field: 'formArrayItemDeleted',\r\n                        label: 'FormArrayItemDeleted',\r\n                        value: false,\r\n                        flexSize: 0,\r\n                        controlType: EnumFormBaseContolType.CHECKBOX,\r\n                        hidden: true,\r\n                        //disabled: true\r\n                      },\r\n                      {\r\n                        field: 'lastUsedAtUtc',\r\n                        label: 'lastUsedAtUtc',\r\n                        value: null,\r\n                        flexSize: 0,\r\n                        controlType: EnumFormBaseContolType.TEXTBOX,\r\n                        hidden: true,\r\n                        //disabled: true\r\n                      },\r\n                    ],\r\n                    [\r\n                      {\r\n                        field: 'fromPositionId',\r\n                        label: 'From position',\r\n                        boundFrom: 'id',\r\n                        shownFrom: 'name',\r\n                        seekerVerifyIgnore: true,\r\n                        value: null,\r\n                        flexSize: 6,\r\n                        controlType: EnumFormBaseContolType.SEEKER,\r\n                        seekerSourceType: EnumCoreFormControlSeekerSourceType.POSITION_SEEK,\r\n                        selfEnrichmentApiDriven: true,\r\n                        selfEnrichmentApi: '/api/BaseHuPosition/GetById',\r\n                        selfEnrichmentHttpVerb: 'HttpGet',\r\n                        selfEnrichmentShownFrom: 'name',\r\n                        alsoBindTo: [\r\n                          {\r\n                            takeFrom: 'masterName',\r\n                            bindTo: 'fromPositionHolder'\r\n                          }\r\n                        ],\r\n                        validators: [\r\n                          {\r\n                            name: 'required',\r\n                            validator: Validators.required,\r\n                            errorMessage: EnumTranslateKey.UI_FORM_CONTROL_ERROR_REQUIRED\r\n                          }\r\n                        ]\r\n                      },\r\n                      {\r\n                        field: 'fromPositionHolder',\r\n                        label: '-',\r\n                        value: '',\r\n                        flexSize: 6,\r\n                        disabled: true,\r\n                        pipe: EnumCoreTablePipeType.UNDEFINED_TO_EMPTY_STRING,\r\n                        controlType: EnumFormBaseContolType.TEXTBOX,\r\n                      },\r\n                    ],\r\n                    [\r\n                      {\r\n                        field: 'toPositionId',\r\n                        label: 'To position',\r\n                        boundFrom: 'id',\r\n                        shownFrom: 'name',\r\n                        seekerVerifyIgnore: true,\r\n                        value: null,\r\n                        flexSize: 6,\r\n                        controlType: EnumFormBaseContolType.SEEKER,\r\n                        seekerSourceType: EnumCoreFormControlSeekerSourceType.POSITION_SEEK,\r\n                        selfEnrichmentApiDriven: true,\r\n                        selfEnrichmentApi: '/api/BaseHuPosition/GetById',\r\n                        selfEnrichmentHttpVerb: 'HttpGet',\r\n                        selfEnrichmentShownFrom: 'name',\r\n                        alsoBindTo: [\r\n                          {\r\n                            takeFrom: 'masterName',\r\n                            bindTo: 'toPositionHolder'\r\n                          }\r\n                        ],\r\n                        validators: [\r\n                          {\r\n                            name: 'required',\r\n                            validator: Validators.required,\r\n                            errorMessage: EnumTranslateKey.UI_FORM_CONTROL_ERROR_REQUIRED\r\n                          }\r\n                        ]\r\n                      },\r\n                      {\r\n                        field: 'toPositionHolder',\r\n                        label: '-',\r\n                        value: '',\r\n                        flexSize: 6,\r\n                        disabled: true,\r\n                        pipe: EnumCoreTablePipeType.UNDEFINED_TO_EMPTY_STRING,\r\n                        controlType: EnumFormBaseContolType.TEXTBOX,\r\n                      },\r\n                    ],\r\n                    [\r\n                      {\r\n                        field: 'vfUtc',\r\n                        label: 'Valid from',\r\n                        value: null,\r\n                        flexSize: 4,\r\n                        controlType: EnumFormBaseContolType.DATEPICKER,\r\n                        $rangePoint: 'start',\r\n                        validators: [\r\n                          {\r\n                            name: 'required',\r\n                            validator: Validators.required,\r\n                            errorMessage: EnumTranslateKey.UI_FORM_CONTROL_ERROR_REQUIRED\r\n                          }\r\n                        ]\r\n                      },\r\n                      {\r\n                        field: 'vtUtc',\r\n                        label: 'Valid to (not included)',\r\n                        value: new Date(9999, 11, 31),\r\n                        flexSize: 4,\r\n                        controlType: EnumFormBaseContolType.DATEPICKER,\r\n                        $rangePoint: 'start',\r\n                        validators: [\r\n                          {\r\n                            name: 'required',\r\n                            validator: Validators.required,\r\n                            errorMessage: EnumTranslateKey.UI_FORM_CONTROL_ERROR_REQUIRED\r\n                          }\r\n                        ]\r\n                      },\r\n                      {\r\n                        field: 'timezoneId',\r\n                        label: 'Timezone',\r\n                        value: this.acs.DEFAULT_IANA_TIMEZONE_ID ?? Intl.DateTimeFormat().resolvedOptions().timeZone,\r\n                        flexSize: 4,\r\n                        controlType: EnumFormBaseContolType.DROPDOWN,\r\n                        dropdownOptions$: this.timezoneOptions$,\r\n                        getByIdObject$: new BehaviorSubject<any>({}),\r\n                        shownFrom: 'text',\r\n                        validators: [\r\n                          {\r\n                            name: 'required',\r\n                            validator: Validators.required,\r\n                            errorMessage: EnumTranslateKey.UI_FORM_CONTROL_ERROR_REQUIRED\r\n                          }\r\n                        ]\r\n                      },\r\n                    ],\r\n                    [\r\n                      {\r\n                        field: 'sameOrgRequired',\r\n                        label: 'UI_ENTITY_FIELD_CAPTION_WF_DELEGATION_SAME_ORG_REQUIRED',\r\n                        value: false,\r\n                        flexSize: 4,\r\n                        controlType: EnumFormBaseContolType.CHECKBOX,\r\n                      }\r\n                    ]\r\n                  ]\r\n                }\r\n              ]\r\n            },\r\n          ]\r\n        ]\r\n      }\r\n    ];\r\n\r\n  ngAfterViewInit(): void {\r\n    setTimeout(() => {\r\n    })\r\n  }\r\n\r\n  onFormCreated(e: FormGroup): void {\r\n    this.wfs.delegationForm = e;\r\n\r\n    this.subscriptions.push(\r\n      e.valueChanges.subscribe((current: IUiDelegation) => {\r\n\r\n        // Debug / preview (giữ nguyên nếu anh cần)\r\n        this.wfs.$currentDelegationJson.set(JSON.stringify(current));\r\n\r\n      })\r\n    );\r\n\r\n    runInInjectionContext(this.injector, () => {\r\n      effect(() => {\r\n        const form = this.wfs.delegationForm;\r\n\r\n        if (form) {\r\n          this.wfs.$currentDelegationJson.set(JSON.stringify(form.getRawValue()));\r\n        }\r\n      });\r\n    });\r\n\r\n  }\r\n\r\n  /* To allow form to be deactivated */\r\n  onFormReinit(e: string): void {\r\n    this.wfs.$initialDelegationJson.set(e);\r\n    this.formInitStringValue = e;\r\n  }\r\n\r\n  onSubmitSuccess(e: any) {\r\n    this.router.navigate(\r\n      [{ outlets: { workflowAux: null } }],\r\n      { relativeTo: this.route.parent }\r\n    );\r\n  }\r\n\r\n  onGotById(e: any) {\r\n    if (e.uiDelegation) {\r\n      this.cfs.syncAllFormArraysBeforePatch(this.wfs.delegationForm, e.uiDelegation);\r\n      this.wfs.delegationForm.patchValue(e.uiDelegation);\r\n      queueMicrotask(() => {\r\n        this.wfs.delegationForm\r\n          .get('delegationRows')\r\n          ?.value?.forEach((_: any, i: number) => {\r\n            const group = this.wfs.delegationForm\r\n              .get('delegationRows')\r\n              ?.get(i.toString()) as FormGroup;\r\n\r\n            if (group) {\r\n              this.disableRowExceptVT(group);\r\n            }\r\n          });\r\n      });\r\n    }\r\n  }\r\n\r\n  disableRowExceptVT(group: FormGroup): void {\r\n    const lastUsedAt = group.get('lastUsedAtUtc')?.value;\r\n\r\n    if (lastUsedAt != null) {\r\n      Object.keys(group.controls).forEach(key => {\r\n        if (key === 'vtUtc') {\r\n          group.get(key)?.enable({ emitEvent: false });\r\n        } else {\r\n          group.get(key)?.disable({ emitEvent: false });\r\n        }\r\n      });\r\n    } else {\r\n      Object.keys(group.controls).forEach(key => {\r\n        group.get(key)?.enable({ emitEvent: false });\r\n      });\r\n    }\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.wfs.$initialDelegationJson.set('{}');\r\n    this.subscriptions.map(x => x?.unsubscribe())\r\n  }\r\n}","<div class=\"wf-delegation-container\">\r\n\r\n    <div class=\"container container-fluid\">\r\n\r\n        <core-page-edit\r\n            [normalMode]=\"true\"\r\n            [captionCode]=\"''\"\r\n            [sections]=\"sections\" [crud]=\"crud\" [entityTable]=\"entityTable\" [hasIdOfStringType]=\"true\"\r\n            [stayAfterSubmit]=\"true\" (onFormCreated)=\"onFormCreated($event)\"\r\n            [idAsInput]=\"true\"\r\n            [id]=\"wfs.$currentFlow()?.id\"\r\n            [hideButtons]=\"true\"\r\n            [checkError$]=\"wfs.basicInfoFormCheckError$\"\r\n            (onGotById)=\"onGotById($event)\"\r\n            (onInitialValueStringReady)=\"onFormReinit($event)\"\r\n            (onSubmitSuccess)=\"onSubmitSuccess($event)\">\r\n        </core-page-edit>\r\n\r\n    </div>\r\n\r\n</div>\r\n\r\n\r\n@if (loading) {\r\n<app-fullscreen-modal-loader></app-fullscreen-modal-loader>\r\n}","import { ChangeDetectionStrategy, Component, computed, inject, Input, OnInit } from '@angular/core';\r\nimport { BaseEditComponent } from '../../base-edit/base-edit/base-edit.component';\r\nimport { CoreFormDesignService } from '../../core-form-design/core-form-design.service';\r\nimport { CoreWorkflowService } from '../core-workflow.service';\r\nimport { AlertService } from '../../alert/alert.service';\r\nimport { DialogService } from '../../../services/dialog.service';\r\nimport { BehaviorSubject, Subscription } from 'rxjs';\r\nimport { CoreFormComponent, IDynamicFormEmitOnFormCreated } from '../../core-form/core-form/core-form.component';\r\nimport { Validators } from '@angular/forms';\r\nimport { EnumTranslateKey } from 'alpha-global-constants';\r\nimport { EnumFormBaseContolType } from '../../../enum/EnumFormBaseContolType';\r\nimport { ICoreFormSection } from '../../core-form/core-form/enum-interfaces';\r\nimport { EnumCorePageEditMode } from '../../core-page-edit/EnumCorePageEditMode';\r\nimport { MultiLanguageService } from '../../../services/multi-language.service';\r\nimport { alertOptions } from '../../../constants/alertOptions';\r\n\r\nconst EMAIL_ICON = '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-mail\"><path d=\"M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z\"/><polyline points=\"22,6 12,13 2,6\"/></svg>'\r\nconst TEMPLATE_TYPES = [\r\n  { key: 'submit', caption: 'UI_WORKFLOW_EMAIL_TEMPLATE_SECTION_SUBMIT' },\r\n  { key: 'react', caption: 'UI_WORKFLOW_EMAIL_TEMPLATE_SECTION_REACT' },\r\n  { key: 'delegatedReact', caption: 'UI_WORKFLOW_EMAIL_TEMPLATE_SECTION_DELEGATED_REACT' },\r\n  { key: 'selfReact', caption: 'UI_WORKFLOW_EMAIL_TEMPLATE_SECTION_SELF_REACT' },\r\n  { key: 'fullyApprove', caption: 'UI_WORKFLOW_EMAIL_TEMPLATE_SECTION_FULLY_APPROVE' },\r\n  { key: 'reject', caption: 'UI_WORKFLOW_EMAIL_TEMPLATE_SECTION_REJECT' },\r\n  { key: 'cancel', caption: 'UI_WORKFLOW_EMAIL_TEMPLATE_SECTION_CANCEL' },\r\n  { key: 'terminate', caption: 'UI_WORKFLOW_EMAIL_TEMPLATE_SECTION_TERMINATE' },\r\n  { key: 'revoke', caption: 'UI_WORKFLOW_EMAIL_TEMPLATE_SECTION_REVOKE' },\r\n  { key: 'cc', caption: 'UI_WORKFLOW_EMAIL_TEMPLATE_SECTION_CC' }\r\n]\r\n\r\n@Component({\r\n  selector: 'wf-email-templates',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  imports: [\r\n    CoreFormComponent,\r\n  ],\r\n  templateUrl: './wf-email-templates.component.html',\r\n  styleUrl: './wf-email-templates.component.scss'\r\n})\r\nexport class WfEmailTemplatesComponent extends BaseEditComponent implements OnInit {\r\n  @Input() captionCode!: string;\r\n  public wfs = inject(CoreWorkflowService);\r\n  alertService = inject(AlertService);\r\n  fds = inject(CoreFormDesignService);\r\n  mls = inject(MultiLanguageService);\r\n  as = inject(AlertService);\r\n\r\n  lang!: string;\r\n\r\n  $wysGroups = computed(() => this.fds.extractWysGroups(this.fds.$placeholderSections()))\r\n\r\n  mode$ = new BehaviorSubject<EnumCorePageEditMode>(EnumCorePageEditMode.CREATE)\r\n\r\n  availableTokens: string[] = ['webappStatusUrl','portalStatusUrl','webappReactUrl','portalReactUrl','workflowName' , 'firstActorFullName', 'firstActorManagerFullName', 'submitterFullName','actorFullName']\r\n\r\n  constructor(\r\n    public override dialogService: DialogService,\r\n  ) {\r\n\r\n    super(dialogService);\r\n\r\n    if (!this.captionCode) {\r\n      this.captionCode = \"UI_COMPONENT_TITLE_WF_WORKFLOW_EMAIL_TEMPLATES\";\r\n    }\r\n\r\n    this.subscriptions.push(\r\n      this.mls.lang$.subscribe(x => this.lang = x)\r\n    )\r\n\r\n  }\r\n\r\n  loading: boolean = false;\r\n  override entityTable = \"WF_WORKFLOW\";\r\n  subscriptions: Subscription[] = [];\r\n\r\n  sections!: ICoreFormSection[];\r\n\r\n  ngOnInit(): void {\r\n    this.sections = TEMPLATE_TYPES.map(type => ({\r\n      caption: type.caption,\r\n      iconSvg: EMAIL_ICON,\r\n      rows: [\r\n        [\r\n          {\r\n            flexSize: 12,\r\n            label: \"UI_WORKFLOW_EMAIL_TEMPLATE_SECTION_SUBJECT\",\r\n            field: `${type.key}Subject`,\r\n            value: '',\r\n            controlType: EnumFormBaseContolType.TEXTAREA,\r\n            textareaRows: 2,\r\n            type: 'string',\r\n            validators: [\r\n              {\r\n                name: 'minLength',\r\n                validator: Validators.minLength(4),\r\n                errorMessage: EnumTranslateKey.UI_FORM_CONTROL_ERROR_MIN_LENGTH\r\n              }\r\n            ]\r\n          }\r\n        ],\r\n        [\r\n          {\r\n            flexSize: 12,\r\n            label: \"UI_WORKFLOW_EMAIL_TEMPLATE_SECTION_BODY\",\r\n            field: `${type.key}Body`,\r\n            value: '',\r\n            controlType: EnumFormBaseContolType.LIQUID_WYSIWYG,\r\n            textareaRows: 5,\r\n            type: 'string',\r\n            showLiquidSourceOnly: true,\r\n            isForWorkflowEmail: true,\r\n            validators: [\r\n              {\r\n                name: 'minLength',\r\n                validator: Validators.minLength(4),\r\n                errorMessage: EnumTranslateKey.UI_FORM_CONTROL_ERROR_MIN_LENGTH\r\n              }\r\n            ]\r\n          }\r\n        ]\r\n      ]\r\n    }));\r\n\r\n    // for compatibility\r\n    this.sections[0].rows[0].push(\r\n      {\r\n        field: \"id\",\r\n        label: '',\r\n        type: 'string',\r\n        value: '',\r\n        controlType: EnumFormBaseContolType.TEXTBOX,\r\n        hidden: true,\r\n        flexSize: 0\r\n      }\r\n    )\r\n\r\n  }\r\n\r\n  copyToken(event: any, value: string, isParent: boolean = false): void {\r\n    event.preventDefault();\r\n    if (isParent) return;\r\n    navigator.clipboard.writeText(value).then(() => {\r\n      this.as.success(`\"${value}\" copied!`, alertOptions);\r\n    });\r\n  }\r\n\r\n  onFormCreated(e: IDynamicFormEmitOnFormCreated): void {\r\n    this.wfs.emailTemplatesForm = e.formGroup;\r\n  }\r\n\r\n  /* To allow form to be deactivated */\r\n  onFormReinit(e: string): void {\r\n    this.wfs.$initialEmailTemplatesJson.set(e);\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.subscriptions.map(x => x?.unsubscribe())\r\n  }\r\n}\r\n","<div style=\"height: 50px;\"></div>\r\n\r\n<label class=\"mb-2\">\r\n  @if (lang==='vi') {\r\n    <span>Ngữ cảnh ngoài biểu mẫu</span>\r\n  } @else {\r\n    <span>Non-form instance context</span>\r\n  }\r\n</label>\r\n<ul class=\"tokens\">\r\n  @for (token of availableTokens; track $index) {\r\n    <li (click)=\"copyToken($event, token, false)\">{{ token }}</li>\r\n  }\r\n</ul>\r\n<label class=\"mb-2\">\r\n  @if (lang==='vi') {\r\n    <span>Ngữ cảnh trong biểu mẫu</span>\r\n  } @else {\r\n    <span>Form instance context</span>\r\n  }\r\n</label>\r\n<ul class=\"tokens\">\r\n  @for (group of $wysGroups(); track $index) {\r\n    <li data-level=\"parent\" [class.system-injected]=\"group.parent?.trim()?.startsWith('___')\" data-label=\"Parent\" (click)=\"copyToken($event, group.parent, !!group.children && !!group.children.length)\">\r\n      {{ group.parent }}\r\n\r\n      @if (!!group.children && !!group.children.length) {\r\n        <ul>\r\n          @for (child of group.children; track $index) {\r\n            <li data-level=\"child\" data-label=\"Child\"  (click)=\"copyToken($event, child, false)\">\r\n              {{ child }}\r\n            </li>\r\n          }\r\n        </ul>\r\n      }\r\n    </li>\r\n  }\r\n</ul>\r\n<!-- <div ngNonBindable>\r\n  Example array usage:\r\n  <code>\r\n    &#123;% for c in contracts___wys %&#125;\r\n        &#123;&#123; c.jobName___wys &#125;&#125; - &#123;&#123; c.email___wys &#125;&#125; \r\n    &#123;% endfor %&#125;\r\n  </code>\r\n</div> -->\r\n\r\n<div style=\"height: 50px;\"></div>\r\n\r\n<core-form [inputSections]=\"sections\" [mode$]=\"mode$\" [hideButtons]=\"true\" [wrapEachSectionInAccordion]=\"true\"\r\n    [checkError$]=\"wfs.emailTemplatesFormCheckError$\" (onFormCreated)=\"onFormCreated($event)\" />\r\n","import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, OnInit, signal } from '@angular/core';\r\nimport { CurrentHeaderComponent } from '../wf-process-design/current-header/current-header.component';\r\nimport { Observable } from 'rxjs';\r\nimport { DialogService } from '../../../services/dialog.service';\r\nimport { EnumTranslateKey } from 'alpha-global-constants';\r\nimport { CoreWorkflowService } from '../core-workflow.service';\r\nimport { HotKeysDirective } from '../../../directives/hot-keys.directive';\r\nimport { ApplicationHelpService } from '../../../services/application-help.service';\r\nimport { NavigatorService } from '../../../services/navigator.service';\r\nimport { AsyncPipe, NgStyle } from '@angular/common';\r\n\r\nimport { WfBasicInfoComponent } from '../wf-basic-info/wf-basic-info.component';\r\nimport { CoreFormDesignComponent } from '../../core-form-design/core-form-design.component';\r\nimport { WfProcessDesignComponent } from '../wf-process-design/wf-process-design.component';\r\nimport { WfDelegationComponent } from '../wf-delegation/wf-delegation.component';\r\nimport { WfEmailTemplatesComponent } from '../wf-email-templates/wf-email-templates.component';\r\nimport { ActivatedRoute, RouterOutlet } from '@angular/router';\r\nimport { JsonService } from '../../../services/json.service';\r\nimport { CoreFormDesignService } from '../../core-form-design/core-form-design.service';\r\n\r\nimport { RoutingPreviewPanelComponent } from '../../core-workflow-builder/routing-preview-panel/routing-preview-panel.component';\r\nimport { AlertService } from '../../alert/alert.service';\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\r\n\r\n@Component({\r\n  selector: 'design-wrapper',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  imports: [\r\n    RouterOutlet,\r\n    RoutingPreviewPanelComponent,\r\n    WfBasicInfoComponent,\r\n    CoreFormDesignComponent,\r\n    WfProcessDesignComponent,\r\n    WfDelegationComponent,\r\n    WfEmailTemplatesComponent,\r\n    NgStyle,\r\n    AsyncPipe,\r\n    HotKeysDirective,\r\n    CurrentHeaderComponent\r\n  ],\r\n  templateUrl: './design-wrapper.component.html',\r\n  styleUrl: './design-wrapper.component.scss',\r\n  animations: [\r\n    trigger('fadeSwitch', [\r\n      state('visible', style({ opacity: 1 })),\r\n      state('hidden', style({ opacity: 0 })),\r\n      transition('hidden => visible', [animate('250ms ease-in')]),\r\n      transition('visible => hidden', [animate('150ms ease-out')]),\r\n    ])\r\n  ]\r\n})\r\nexport class DesignWrapperComponent implements OnInit, AfterViewInit {\r\n\r\n  $showInitialState = signal(false);\r\n\r\n  dialogService = inject(DialogService);\r\n  public wfs = inject(CoreWorkflowService);\r\n  fds = inject(CoreFormDesignService);\r\n  hs = inject(ApplicationHelpService);\r\n  public ns = inject(NavigatorService);\r\n  route = inject(ActivatedRoute);\r\n  js = inject(JsonService);\r\n  cdr = inject(ChangeDetectorRef);\r\n  as = inject(AlertService);\r\n\r\n  id!: string | undefined;\r\n\r\n  constructor() {\r\n    this.hs.activeKey$.subscribe(x => {\r\n      switch (x) {\r\n        case 'F7':\r\n          this.$showInitialState.set(true);\r\n          break;\r\n        case 'Escape':\r\n          this.$showInitialState.set(false);\r\n          break;\r\n      }\r\n    })\r\n\r\n    const id = this.route.snapshot.paramMap.get('id');\r\n    if (!!id) {\r\n      this.id = id;\r\n    } else {\r\n      this.id = undefined;\r\n    }\r\n\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.wfs.loadByIdWithAfInstance(this.id!)\r\n    this.fds.$isInWorkflowDesign.set(true);\r\n  }\r\n\r\n  debugClick(): void {\r\n    let obj1;\r\n    let obj2;\r\n    try {\r\n      obj1 = JSON.parse(this.wfs.$initialFormDesignJson());\r\n      obj2 = JSON.parse(this.wfs.$currentFormDesignJson());\r\n    } catch {\r\n      alert(\"error\")\r\n    }\r\n    const string1 = this.wfs.$initialFormDesignJson();\r\n    const string2 = this.wfs.$currentFormDesignJson();\r\n    const isDifferent = string1 !== string2;\r\n    if (isDifferent) {\r\n      const ignoredKeys = ['selected'];\r\n      const found = this.js.findFirstStringDifference(\r\n        this.wfs.$initialFormDesignJson(),\r\n        this.wfs.$currentFormDesignJson(),\r\n        ignoredKeys,\r\n        500\r\n      );\r\n\r\n      if (found) {\r\n        const { index, htmlA, htmlB } = found;\r\n        this.js.showDiffModal(`💥 Difference at index ${index}`, htmlA, htmlB);\r\n\r\n      } else {\r\n        alert(\"Nigntmare!\")\r\n      }\r\n\r\n    } else {\r\n      alert(\"There is no diffs\")\r\n    }\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    setTimeout(() => {\r\n      if (!this.wfs.$currentFlow()) {\r\n        this.wfs.$currentFlow.set(this.wfs.newWorkflow())\r\n      }\r\n    })\r\n  }\r\n\r\n  canDeactivate(): Observable<boolean> | boolean {\r\n\r\n    if (!this.wfs.$basicInfoChanged() && !this.wfs.$formDesignChanged() && !this.wfs.$processDesignChanged() && !this.wfs.$moreChanged()) {\r\n      return true;\r\n    } else {\r\n      this.dialogService.busy = true;\r\n      this.dialogService.showConfirmDialog$.next(true);\r\n      this.dialogService.title$.next(EnumTranslateKey.UI_CORE_CONFIRM_DIALOG_TITLE);\r\n      this.dialogService.body$.next(EnumTranslateKey.UI_CORE_CONFIRM_DIALOG_BODY_CHANGES_WILL_BE_LOST);\r\n      this.dialogService.okButtonText$.next(EnumTranslateKey.UI_CORE_CONFIRM_DIALOG_BUTTON_CONFIRM);\r\n      this.dialogService.cancelButtonText$.next(EnumTranslateKey.UI_CORE_CONFIRM_DIALOG_BUTTON_GO_BACK_TO_EDIT_FORM);\r\n      const observable = this.dialogService.canDeactivate$.asObservable();\r\n      return observable;\r\n    }\r\n  }\r\n\r\n}\r\n","<current-header></current-header>\r\n\r\n<div class=\"all-tabs\" [hotKeys]=\"['F7', 'Escape']\">\r\n\r\n    <div class=\"tab-content basic-info\" [class.d-none]=\"wfs.$designActiveTab() !== 1\"\r\n        [@fadeSwitch]=\"wfs.$designActiveTab() === 1 ? 'visible' : 'hidden'\"\r\n    >\r\n        <wf-basic-info></wf-basic-info>\r\n    </div>\r\n\r\n    <div class=\"tab-content form-design\" [class.d-none]=\"wfs.$designActiveTab() !== 2\"\r\n        [@fadeSwitch]=\"wfs.$designActiveTab() === 2 ? 'visible' : 'hidden'\"\r\n    >\r\n        <core-form-design [$idAsInput]=\"true\" [$id]=\"wfs.$currentFlow()?.afInstanceId\" />\r\n    </div>\r\n\r\n    <div class=\"tab-content process-design\" [class.d-none]=\"wfs.$designActiveTab() !== 3\"\r\n        [@fadeSwitch]=\"wfs.$designActiveTab() === 3 ? 'visible' : 'hidden'\"\r\n    >\r\n        <wf-process-design></wf-process-design>\r\n    </div>\r\n\r\n    <div class=\"tab-content delegation\" [class.d-none]=\"wfs.$designActiveTab() !== 4\"\r\n        [@fadeSwitch]=\"wfs.$designActiveTab() === 4 ? 'visible' : 'hidden'\"\r\n    >\r\n        <wf-delegation />\r\n    </div>\r\n\r\n    <div class=\"tab-content more\" [class.d-none]=\"wfs.$designActiveTab() !== 5\"\r\n        [@fadeSwitch]=\"wfs.$designActiveTab() === 5 ? 'visible' : 'hidden'\"\r\n    >\r\n        <wf-email-templates></wf-email-templates>\r\n    </div>\r\n\r\n\r\n</div>\r\n\r\n<router-outlet name=\"preview\" [hotKeys]=\"['Escape']\"></router-outlet>\r\n\r\n<div class=\"state\" [class.shown]=\"$showInitialState()\"\r\n    [ngStyle]=\"{ width: !!(ns.wideMode$ | async) ? 'calc(100vw - 280px - 15px)' : 'calc(100vw - 66px - 15px)' }\">\r\n\r\n    <div class=\"scroll-container\">\r\n\r\n        <button type=\"button\" class=\"btn btn-secondary\" (click)=\"debugClick()\">FormDesign Compare</button>\r\n\r\n        <div class=\"tab-info\">\r\n\r\n            <div class=\"value-caption\">initialBasicInfoJson:</div>\r\n            <pre [class.d-none]=\"!wfs.$initialBasicInfoJson()\">{{ wfs.$initialBasicInfoJson() }}</pre>\r\n\r\n            <div class=\"value-caption\">currentBasicInfoJson:</div>\r\n            <pre [class.d-none]=\"!wfs.$currentBasicInfoJson()\">{{ wfs.$currentBasicInfoJson() }}</pre>\r\n\r\n        </div>\r\n\r\n        <div class=\"tab-info\">\r\n            <div class=\"value-caption\">initialFormDesignJson:</div>\r\n            <pre><code class=\"lang-json\">{{ wfs.$initialFormDesignJson() }}</code></pre>\r\n\r\n            <div class=\"value-caption\">currentFormDesignJson:</div>\r\n            <pre><code class=\"lang-json\">{{ wfs.$currentFormDesignJson() }}</code></pre>\r\n        </div>\r\n\r\n        <div class=\"tab-info\">\r\n            <div class=\"value-caption\">initialProcessDesignJson:</div>\r\n            <pre>{{ wfs.$initialProcessDesignJson() }}</pre>\r\n\r\n            <div class=\"value-caption\">currentProcessDesignJson:</div>\r\n            <pre>{{ wfs.$currentProcessDesignJson() }}</pre>\r\n        </div>\r\n\r\n        <div class=\"tab-info\">\r\n            <div class=\"value-caption\">initialEmailTemplatesJson:</div>\r\n            <pre>{{ wfs.$initialEmailTemplatesJson() }}</pre>\r\n        </div>\r\n\r\n    </div>\r\n\r\n</div>"],"names":["i1.MultiLanguageService","i1.DialogService","i2.AppService","i2.DomService","i1.CoreWorkflowService","i1.BridgeLineService","i2"],"mappings":"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"}