{"version":3,"file":"laserfiche-lf-ui-components-lf-metadata.mjs","sources":["../../../projects/ui-components/lf-metadata/lf-field-adhoc-container/lf-field-adhoc-connector.service.ts","../../../projects/ui-components/lf-metadata/lf-field-adhoc-container/lf-field-add-remove/get-field-type.pipe.ts","../../../projects/ui-components/lf-metadata/lf-field-adhoc-container/lf-field-add-remove/lf-field-add-remove.component.ts","../../../projects/ui-components/lf-metadata/lf-field-adhoc-container/lf-field-add-remove/lf-field-add-remove.component.html","../../../projects/ui-components/lf-metadata/field-components/field-base-parts/lf-field-base/lf-field-validation-utils.ts","../../../projects/ui-components/lf-metadata/field-components/utils/metadata-utils.ts","../../../projects/ui-components/lf-metadata/field-components/field-base-parts/lf-field-base/lf-field-token.service.ts","../../../projects/ui-components/lf-metadata/field-components/field-base-parts/lf-field-base/base-field/base-field.directive.ts","../../../projects/ui-components/lf-metadata/field-components/field-base-parts/lf-field-base/base-field/datetime-base-field.directives.ts","../../../projects/ui-components/lf-metadata/field-components/field-base-parts/lf-token-picker/lf-token-picker.component.ts","../../../projects/ui-components/lf-metadata/field-components/field-base-parts/lf-token-picker/lf-token-picker.component.html","../../../projects/ui-components/lf-metadata/lf-date-time-picker/uni-date-time.common.ts","../../../projects/ui-components/lf-metadata/lf-date-time-picker/uni-date-time.locales.ts","../../../projects/ui-components/lf-metadata/lf-date-time-picker/flatpickr-locales.ts","../../../projects/ui-components/lf-metadata/lf-date-time-picker/uni-date-time.service.ts","../../../projects/ui-components/lf-metadata/lf-date-time-picker/plugin-lfTimePicker.ts","../../../projects/ui-components/lf-metadata/lf-date-time-picker/plugin-lfDatePicker.ts","../../../projects/ui-components/lf-metadata/lf-date-time-picker/uni-date-time.component.ts","../../../projects/ui-components/lf-metadata/lf-date-time-picker/uni-date-time.component.html","../../../projects/ui-components/lf-metadata/field-components/field-base-parts/lf-field-base/dynamic-field/dynamic-field.component.ts","../../../projects/ui-components/lf-metadata/field-components/field-base-parts/lf-field-base/dynamic-field/dynamic-field.component.html","../../../projects/ui-components/lf-metadata/field-components/field-base-parts/lf-field-base/date-field/date-field.component.ts","../../../projects/ui-components/lf-metadata/field-components/field-base-parts/lf-field-base/date-field/date-field.component.html","../../../projects/ui-components/lf-metadata/field-components/field-base-parts/lf-field-base/date-time-field/date-time-field.component.ts","../../../projects/ui-components/lf-metadata/field-components/field-base-parts/lf-field-base/date-time-field/date-time-field.component.html","../../../projects/ui-components/lf-metadata/field-components/field-base-parts/lf-field-base/list-field/list-field.component.ts","../../../projects/ui-components/lf-metadata/field-components/field-base-parts/lf-field-base/list-field/list-field.component.html","../../../projects/ui-components/lf-metadata/field-components/field-base-parts/lf-field-base/number-field/number-field.component.ts","../../../projects/ui-components/lf-metadata/field-components/field-base-parts/lf-field-base/number-field/number-field.component.html","../../../projects/ui-components/lf-metadata/field-components/field-base-parts/lf-field-base/text-field/text-field.component.ts","../../../projects/ui-components/lf-metadata/field-components/field-base-parts/lf-field-base/text-field/text-field.component.html","../../../projects/ui-components/lf-metadata/field-components/field-base-parts/lf-field-base/time-field/time-field.component.ts","../../../projects/ui-components/lf-metadata/field-components/field-base-parts/lf-field-base/time-field/time-field.component.html","../../../projects/ui-components/lf-metadata/field-components/field-base-parts/lf-field-base/lf-field-base/lf-field-base.component.ts","../../../projects/ui-components/lf-metadata/field-components/field-base-parts/lf-field-base/lf-field-base/lf-field-base.component.html","../../../projects/ui-components/lf-metadata/field-components/lf-field/lf-field.component.ts","../../../projects/ui-components/lf-metadata/field-components/lf-field/lf-field.component.html","../../../projects/ui-components/lf-metadata/field-components/lf-field-multivalue/lf-field-multivalue.component.ts","../../../projects/ui-components/lf-metadata/field-components/lf-field-multivalue/lf-field-multivalue.component.html","../../../projects/ui-components/lf-metadata/lf-field-view.directive.ts","../../../projects/ui-components/lf-metadata/lf-field-metadata-connector.service.ts","../../../projects/ui-components/lf-metadata/lf-field-container.directive.ts","../../../projects/ui-components/lf-metadata/lf-field-adhoc-container/lf-field-adhoc-container.component.ts","../../../projects/ui-components/lf-metadata/lf-field-adhoc-container/lf-field-adhoc-container.component.html","../../../projects/ui-components/lf-metadata/field-components/lf-field-group/lf-field-group-index-display.pipe.ts","../../../projects/ui-components/lf-metadata/field-components/lf-field-group/lf-field-group.component.ts","../../../projects/ui-components/lf-metadata/field-components/lf-field-group/lf-field-group.component.html","../../../projects/ui-components/lf-metadata/lf-field-template-container/lf-field-template-container-states.ts","../../../projects/ui-components/lf-metadata/lf-field-template-container/lf-field-template-container.component.ts","../../../projects/ui-components/lf-metadata/lf-field-template-container/lf-field-template-container.component.html","../../../projects/ui-components/lf-metadata/lf-field-container/lf-field-container.component.ts","../../../projects/ui-components/lf-metadata/lf-field-container/lf-field-container.component.html","../../../projects/ui-components/lf-metadata/lf-field-container/lf-field-container.service.ts","../../../projects/ui-components/lf-metadata/lf-field-container/public-api.ts","../../../projects/ui-components/lf-metadata/lf-field-adhoc-container/lf-field-adhoc-container.service.ts","../../../projects/ui-components/lf-metadata/lf-field-adhoc-container/public-api.ts","../../../projects/ui-components/lf-metadata/lf-field-template-container/lf-field-template-container-types.ts","../../../projects/ui-components/lf-metadata/lf-field-template-container/lf-field-template-container.service.ts","../../../projects/ui-components/lf-metadata/lf-field-template-container/public-api.ts","../../../projects/ui-components/lf-metadata/field-components/field-base-parts/lf-token-picker/lf-token-picker.module.ts","../../../projects/ui-components/lf-metadata/lf-date-time-picker/uni-date-time.module.ts","../../../projects/ui-components/lf-metadata/field-components/field-base-parts/lf-field-base/lf-field-base.module.ts","../../../projects/ui-components/lf-metadata/field-components/field-components.module.ts","../../../projects/ui-components/lf-metadata/lf-metadata.module.ts","../../../projects/ui-components/lf-metadata/lf-metadata-public-api.ts","../../../projects/ui-components/lf-metadata/laserfiche-lf-ui-components-lf-metadata.ts"],"sourcesContent":["// Copyright (c) Laserfiche.\r\n// Licensed under the MIT License. See LICENSE in the project root for license information.\r\n\r\nimport { Injectable } from '@angular/core';\r\nimport { AdhocFieldInfo } from './lf-field-adhoc-container-types';\r\n\r\n/** @internal */\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class AdhocFieldConnectorService {\r\n\r\n  private selectedFieldIds = new Set<number>();\r\n  private allFieldInfos: AdhocFieldInfo[] = [];\r\n  constructor() { }\r\n\r\n  setSelectedFieldIds(selectedFields: Set<number>) {\r\n    this.selectedFieldIds = selectedFields;\r\n  }\r\n\r\n  getSelectedFieldIds(): Set<number> {\r\n    return new Set<number>(this.selectedFieldIds);\r\n  }\r\n\r\n  setAllFieldInfos(fieldInfos: AdhocFieldInfo[]) {\r\n    this.allFieldInfos = fieldInfos;\r\n  }\r\n\r\n  getAllFieldInfos(): AdhocFieldInfo[] {\r\n    return this.allFieldInfos;\r\n  }\r\n}\r\n","// Copyright (c) Laserfiche.\r\n// Licensed under the MIT License. See LICENSE in the project root for license information.\r\n\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\nimport { FieldType } from '@laserfiche/lf-ui-components/shared';\r\nimport { Observable } from 'rxjs';\r\nimport { LfFieldInfo } from './../../field-components/utils/lf-field-types';\r\n\r\n/**\r\n * Pipe that returns the localized field type, given a fieldInfo and a set of localized strings\r\n */\r\n@Pipe({\r\n  name: 'getFieldType'\r\n})\r\nexport class GetFieldTypePipe implements PipeTransform {\r\n\r\n  constructor() { }\r\n\r\n  private localizedFieldTypes?: Map<string, Observable<string>>;\r\n\r\n  /**\r\n   * Returns the Localized Field type, given an LfFieldInfo\r\n   * @param fieldInfo the current LfFieldInfo\r\n   * @param localizedFieldTypes A Map of various localized strings that correspond to different FieldTypes, (i.e. 'FIELD_TYPE_STRING')\r\n   * @returns The localized field type\r\n   */\r\n  transform(fieldInfo: LfFieldInfo, localizedFieldTypes: Map<string, Observable<string>>): Observable<string> | undefined {\r\n    this.localizedFieldTypes = localizedFieldTypes;\r\n    return this.getFieldType(fieldInfo);\r\n  }\r\n\r\n  private getFieldType(field: LfFieldInfo): Observable<string> | undefined {\r\n    switch (field.fieldType) {\r\n      case FieldType.Blob: {\r\n        return this.localizedFieldTypes?.get('DATA');\r\n      }\r\n      case FieldType.Date: {\r\n        return this.localizedFieldTypes?.get('DATE');\r\n      }\r\n      case FieldType.DateTime: {\r\n        return this.localizedFieldTypes?.get('DATE_TIME');\r\n      }\r\n      case FieldType.List: {\r\n        return this.localizedFieldTypes?.get('LIST');\r\n      }\r\n      case FieldType.LongInteger: {\r\n        return this.localizedFieldTypes?.get('LONG_INTEGER');\r\n      }\r\n      case FieldType.Number: {\r\n        return this.localizedFieldTypes?.get('NUMBER');\r\n      }\r\n      case FieldType.ShortInteger: {\r\n        return this.localizedFieldTypes?.get('INTEGER');\r\n      }\r\n      case FieldType.String: {\r\n        return this.localizedFieldTypes?.get('TEXT');\r\n      }\r\n      case FieldType.Time: {\r\n        return this.localizedFieldTypes?.get('TIME');\r\n      }\r\n      default:\r\n        return undefined;\r\n    }\r\n  }\r\n}\r\n","// Copyright (c) Laserfiche.\r\n// Licensed under the MIT License. See LICENSE in the project root for license information.\r\n\r\nimport { Component, EventEmitter, Output, Input, ChangeDetectorRef, AfterViewInit, ViewChild, TemplateRef } from '@angular/core';\r\nimport { AdhocFieldConnectorService } from '../lf-field-adhoc-connector.service';\r\nimport { MatCheckboxChange } from '@angular/material/checkbox';\r\nimport { AdhocFieldInfo } from '../lf-field-adhoc-container-types';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { FormControl } from '@angular/forms';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { LfFieldAdhocContainerService } from '../lf-field-adhoc-container.service';\r\nimport { FieldType } from '@laserfiche/lf-ui-components/shared';\r\nimport { LfFieldInfo } from '../../field-components/utils/lf-field-types';\r\nimport { Observable } from 'rxjs';\r\nimport { PopupModalResult, AppLocalizationService, filterObjectsByName, PopupModalData } from '@laserfiche/lf-ui-components/internal-shared';\r\nimport { CoreUtils } from '@laserfiche/lf-js-utils';\r\n\r\n/**\r\n * @internal\r\n */\r\nexport enum AddRemoveState {\r\n  DEFAULT = 'default',\r\n  LOADING = 'isLoading',\r\n  HAS_ERROR = 'hasError',\r\n  DISPLAY_FIELD = 'displayField'\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\n@Component({\r\n  selector: 'lf-field-add-remove-component',\r\n  templateUrl: './lf-field-add-remove.component.html',\r\n  styleUrls: ['./lf-field-add-remove.component.css']\r\n})\r\nexport class LfFieldAddRemoveComponent implements AfterViewInit {\r\n  private readonly APPLY_CHANGES = this.localizationService.getStringLaserficheObservable('APPLY_CHANGES');\r\n  private readonly DO_YOU_WANT_TO_APPLY_YOUR_FIELD_CHANGES = this.localizationService.getStringLaserficheObservable('DO_YOU_WANT_TO_APPLY_YOUR_FIELD_CHANGES');\r\n  private readonly YES = this.localizationService.getStringLaserficheObservable('YES');\r\n  private readonly NO = this.localizationService.getStringLaserficheObservable('NO');\r\n  readonly CANCEL: Observable<string> = this.localizationService.getStringLaserficheObservable('CANCEL');\r\n  readonly APPLY: Observable<string> = this.localizationService.getStringLaserficheObservable('APPLY');\r\n  readonly ADD_REMOVE_FIELDS: Observable<string> = this.localizationService.getStringLaserficheObservable('ADD_REMOVE_FIELDS');\r\n  readonly NO_MATCHING_FIELDS_FOUND: Observable<string> = this.localizationService.getStringLaserficheObservable('NO_MATCHING_FIELDS_FOUND');\r\n  readonly SEARCH_FIELDS: Observable<string> = this.localizationService.getStringLaserficheObservable('SEARCH_FIELDS');\r\n  readonly AN_ERROR_OCCURED = this.localizationService.getStringLaserficheObservable('AN_ERROR_OCCURED');\r\n\r\n  readonly LOCALIZED_FIELD_TYPES: Map<string, Observable<string>> = new Map<string, Observable<string>>([\r\n    ['DATA', this.localizationService.getStringLaserficheObservable('DATA')],\r\n    ['DATE', this.localizationService.getStringLaserficheObservable('DATE')],\r\n    ['DATE_TIME', this.localizationService.getStringLaserficheObservable('DATE_TIME')],\r\n    ['LIST', this.localizationService.getStringLaserficheObservable('LIST')],\r\n    ['LONG_INTEGER', this.localizationService.getStringLaserficheObservable('LONG_INTEGER')],\r\n    ['NUMBER', this.localizationService.getStringLaserficheObservable('NUMBER')],\r\n    ['INTEGER', this.localizationService.getStringLaserficheObservable('INTEGER')],\r\n    ['TEXT', this.localizationService.getStringLaserficheObservable('TEXT')],\r\n    ['TIME', this.localizationService.getStringLaserficheObservable('TIME')],\r\n  ]);\r\n\r\n  allFieldInfos: AdhocFieldInfo[] = [];\r\n  displayFieldInfos: AdhocFieldInfo[] = [];\r\n  selectedFieldIds: Set<number> = new Set<number>();\r\n  areCheckboxChanges: boolean = false;\r\n  filterFieldsControl: FormControl = new FormControl();\r\n  fieldFilterText: string = '';\r\n\r\n  state: AddRemoveState = AddRemoveState.DEFAULT;\r\n  adhocFieldContainerService!: LfFieldAdhocContainerService;\r\n\r\n  dialogRef?: MatDialogRef<any>;\r\n  @ViewChild('addRemoveConfirmModal') popupModal?: TemplateRef<any>;\r\n\r\n  @Output() checkboxUpdate = new EventEmitter<void>();\r\n  @Output() clickBack = new EventEmitter<void>();\r\n\r\n  constructor(\r\n    private adHocConnectorService: AdhocFieldConnectorService,\r\n    public ref: ChangeDetectorRef,\r\n    public popupDialog: MatDialog,\r\n    private localizationService: AppLocalizationService,\r\n  ) { }\r\n\r\n  ngAfterViewInit() {\r\n    this.filterFieldsControl.valueChanges.pipe(debounceTime(200)).subscribe((value) => {\r\n      this.fieldFilterText = value;\r\n      this.filterDisplayedFields();\r\n    });\r\n  }\r\n\r\n  @Input()\r\n  initAsync = async (adhocContainerService: LfFieldAdhocContainerService): Promise<void> => {\r\n    this.adhocFieldContainerService = CoreUtils.validateDefined(adhocContainerService, 'adhocContainerService');\r\n    try {\r\n      this.state = AddRemoveState.LOADING;\r\n      await this.loadFieldDefinitionsInOrderAsync();\r\n      this.state = AddRemoveState.DISPLAY_FIELD;\r\n    }\r\n    catch (error) {\r\n      this.state = AddRemoveState.HAS_ERROR;\r\n      console.error(error);\r\n    }\r\n  };\r\n\r\n  /** @internal */\r\n  get shouldShowErrorMessage(): boolean {\r\n    return this.state === AddRemoveState.HAS_ERROR;\r\n  }\r\n\r\n  /** @internal */\r\n  get isLoading(): boolean {\r\n    return this.state === AddRemoveState.LOADING;\r\n  }\r\n\r\n  async onClickBack() {\r\n    if (this.areCheckboxChanges) {\r\n      const popupModalData: PopupModalData = {\r\n        popupTitle: this.APPLY_CHANGES,\r\n        popupMessage: this.DO_YOU_WANT_TO_APPLY_YOUR_FIELD_CHANGES,\r\n        cancelButtonText: this.CANCEL,\r\n        confirmButtonText: this.YES,\r\n        noButtonText: this.NO\r\n      };\r\n      this.dialogRef = this.popupDialog.open(\r\n        this.popupModal!,\r\n        {\r\n          width: '280px',\r\n          maxWidth: 'none',\r\n          data: popupModalData\r\n        }\r\n      );\r\n\r\n      const result = await this.dialogRef.afterClosed().toPromise();\r\n      if (result === PopupModalResult.CONFIRM) {\r\n        this.onClickApply();\r\n      }\r\n      else if (result === PopupModalResult.NO) {\r\n        this.onConfirmNo();\r\n      }\r\n    }\r\n    else {\r\n      this.state = AddRemoveState.DEFAULT;\r\n      this.clickBack.emit();\r\n    }\r\n  }\r\n\r\n  onModalButtonClick(event: string) {\r\n    const buttonClicked: string = event;\r\n    this.dialogRef?.close(buttonClicked);\r\n  }\r\n\r\n  onClickApply() {\r\n    this.areCheckboxChanges = false;\r\n    this.adHocConnectorService.setSelectedFieldIds(this.selectedFieldIds);\r\n    this.state = AddRemoveState.DEFAULT;\r\n    this.clickBack.emit();\r\n  }\r\n\r\n  onClickCancel() {\r\n    this.getAppliedFields();\r\n    this.areCheckboxChanges = false;\r\n  }\r\n\r\n  onConfirmNo() {\r\n    this.areCheckboxChanges = false;\r\n    this.state = AddRemoveState.DEFAULT;\r\n    this.clickBack.emit();\r\n  }\r\n\r\n  private filterDisplayedFields() {\r\n    this.displayFieldInfos = filterObjectsByName(this.allFieldInfos, this.fieldFilterText) ?? [];\r\n  }\r\n\r\n  onClearFields() {\r\n    this.fieldFilterText = '';\r\n    this.filterDisplayedFields();\r\n  }\r\n\r\n  onUpdateCheckbox(changeEvent: MatCheckboxChange, field: LfFieldInfo) {\r\n    this.areCheckboxChanges = true;\r\n    this.updateSelectedOptions(changeEvent.checked, field);\r\n    this.checkboxUpdate.emit();\r\n  }\r\n\r\n  ignoreEscapeKeydown(event: KeyboardEvent) {\r\n    event.stopPropagation();\r\n  }\r\n\r\n  private updateSelectedOptions(checked: boolean, field: LfFieldInfo) {\r\n    if (checked) {\r\n      this.selectedFieldIds.add(field.id);\r\n    }\r\n    else {\r\n      this.selectedFieldIds.delete(field.id);\r\n    }\r\n  }\r\n\r\n  async updateSortedFieldInfos() {\r\n    this.getAppliedFields();\r\n    this.areCheckboxChanges = false;\r\n    this.allFieldInfos = this.partitionFieldInfos(this.allFieldInfos);\r\n    this.filterDisplayedFields();\r\n    this.ref.detectChanges();\r\n  }\r\n\r\n  private partitionFieldInfos(fieldDefinitions: AdhocFieldInfo[]) {\r\n    const selectedFieldInfos: AdhocFieldInfo[] = fieldDefinitions?.filter(\r\n      (fieldInfo) => (this.selectedFieldIds.has(fieldInfo.id) && !fieldInfo.inTemplateSelected)) ?? [];\r\n    const unselectedFieldInfos: LfFieldInfo[] = fieldDefinitions?.filter(\r\n      (fieldInfo) => !(this.selectedFieldIds.has(fieldInfo.id) || fieldInfo.inTemplateSelected)) ?? [];\r\n    const disabledFields: AdhocFieldInfo[] = fieldDefinitions?.filter(\r\n      (fieldInfo) => fieldInfo.inTemplateSelected) ?? [];\r\n\r\n    const allOrderedFields = selectedFieldInfos.concat(unselectedFieldInfos).concat(disabledFields);\r\n    return allOrderedFields;\r\n  }\r\n\r\n  isFieldSelected(field: AdhocFieldInfo): boolean {\r\n    const selectedItemExists: boolean = this.selectedFieldIds ? this.selectedFieldIds.has(field.id) : false;\r\n    const isSelected: boolean = field.inTemplateSelected ?? false;\r\n    return selectedItemExists || isSelected;\r\n  }\r\n\r\n\r\n  getAppliedFields() {\r\n    this.selectedFieldIds = this.adHocConnectorService.getSelectedFieldIds();\r\n  }\r\n\r\n  private async loadFieldDefinitionsInOrderAsync(): Promise<void> {\r\n  const fieldInfos: LfFieldInfo[] = await this.getCurrentFieldOptionsAsync();\r\n  this.allFieldInfos = this.orderFieldInfosByName(fieldInfos);\r\n  this.adHocConnectorService.setAllFieldInfos(this.allFieldInfos);\r\n}\r\n\r\n  private async getCurrentFieldOptionsAsync(): Promise<LfFieldInfo[]> {\r\n      const fieldInfos: AdhocFieldInfo[] = await this.adhocFieldContainerService.getAllFieldDefinitionsAsync();\r\n      const fieldDefinitions = fieldInfos.filter((val) => {\r\n        const validFieldType: boolean = val.fieldType in FieldType && val.fieldType !== FieldType.Blob;\r\n        if (!validFieldType) {\r\n          console.warn(`Invalid FieldType: ${val.fieldType}. Will not display field with name: ${val.name}`);\r\n        }\r\n        return validFieldType;\r\n      });\r\n      this.adHocConnectorService.setAllFieldInfos(fieldDefinitions);\r\n\r\n      if (fieldDefinitions?.length === 0) {\r\n        console.warn('getAllFieldDefinitionsAsync returned no definitions');\r\n      }\r\n      return fieldDefinitions;\r\n  }\r\n\r\n    /** @internal */\r\n    private orderFieldInfosByName(fieldInfos: LfFieldInfo[]): LfFieldInfo[] {\r\n      if (fieldInfos) {\r\n        const sortSelectedFieldInfosAlphabetically = fieldInfos?.sort((a, b) => {\r\n          const aName = a.name?.toLowerCase() ?? '';\r\n          const bName = b.name?.toLowerCase() ?? '';\r\n          return aName < bName ? -1 : 1;\r\n        });\r\n        return sortSelectedFieldInfosAlphabetically;\r\n      }\r\n      else {\r\n        return [];\r\n      }\r\n    }\r\n\r\n}\r\n","<!--Copyright (c) Laserfiche.\r\nLicensed under the MIT License. See LICENSE in the project root for license information.-->\r\n\r\n<div id=\"add-remove-container\" class=\"add-remove-container\" cdkTrapFocus tabindex=\"0\" (keydown.escape)=\"ignoreEscapeKeydown($event)\">\r\n  <div id=\"adhoc-back-button\" class=\"back-button-overlay\">\r\n    <button class=\"adhoc-back-button-container\" (click)=\"onClickBack()\" >\r\n      <span class=\"material-icons adhoc-back-button\" id=\"arrow-left-18\" aria-label=\"back\"> arrow_back_ios_new </span>\r\n    </button>    \r\n    <div class=\"ms-font-m back-button-text\">{{ ADD_REMOVE_FIELDS | async }}</div>\r\n  </div>\r\n  <div class=\"add-remove-content\">\r\n    <ng-container *ngIf=\"isLoading; else checkIfError\">\r\n      <lf-loader-component class=\"lf-adhoc-state-message\"></lf-loader-component>\r\n    </ng-container>\r\n    <ng-template #checkIfError>\r\n      <ng-container *ngIf=\"shouldShowErrorMessage; else showFieldPicker\">\r\n        <div class=\"lf-adhoc-state-message error-entries-text\">{{ AN_ERROR_OCCURED | async }}</div>\r\n      </ng-container>\r\n      <ng-template #showFieldPicker>\r\n        <div class=\"field-picker-container\" [ngClass]=\"{ 'has-changes': areCheckboxChanges }\">\r\n          <div class=\"search\">\r\n            <input\r\n              [value]=\"fieldFilterText\"\r\n              [formControl]=\"filterFieldsControl\"\r\n              placeholder=\"{{ SEARCH_FIELDS | async }}\"\r\n              class=\"searchBox\"\r\n            />\r\n            <div class=\"icon icon-search\"></div>\r\n            <div\r\n              *ngIf=\"fieldFilterText && fieldFilterText.length > 0\"\r\n              (click)=\"onClearFields()\"\r\n              class=\"icon icon-clear\"\r\n            ></div>\r\n          </div>\r\n          <ng-container *ngIf=\"displayFieldInfos && displayFieldInfos.length > 0; else noField\">\r\n            <cdk-virtual-scroll-viewport itemSize=\"25\" class=\"pick-field\">\r\n              <div *cdkVirtualFor=\"let field of displayFieldInfos; let i = index\">\r\n                <mat-checkbox\r\n                  color=\"primary\"\r\n                  class=\"lf-checkbox\"\r\n                  (change)=\"onUpdateCheckbox($event, field)\"\r\n                  id=\"`add-remove-checkbox-{{ i }}`\"\r\n                  [checked]=\"isFieldSelected(field)\"\r\n                  title=\"{{ field.displayName }}\"\r\n                  [disabled]=\"field.inTemplateSelected\"\r\n                >\r\n                  {{ field.displayName }} ({{ field | getFieldType: LOCALIZED_FIELD_TYPES | async }})\r\n                </mat-checkbox>\r\n              </div>\r\n            </cdk-virtual-scroll-viewport>\r\n          </ng-container>\r\n          <ng-template #noField>\r\n            <div class=\"lf-adhoc-state-message fields-empty\">\r\n              {{ NO_MATCHING_FIELDS_FOUND | async }}\r\n            </div>\r\n          </ng-template>\r\n        </div>\r\n      </ng-template>\r\n    </ng-template>\r\n  </div>\r\n  <div class=\"button-container\" *ngIf=\"areCheckboxChanges\">\r\n    <div class=\"button-padding-container\">\r\n      <button id=\"adhoc-apply-button\" class=\"primary-button lf-button adhoc-field-button\" (click)=\"onClickApply()\">\r\n        {{ APPLY | async }}\r\n      </button>\r\n      <button id=\"adhoc-cancel-button\" class=\"sec-button lf-button adhoc-field-button\" (click)=\"onClickCancel()\">\r\n        {{ CANCEL | async }}\r\n      </button>\r\n    </div>\r\n  </div>\r\n</div>\r\n\r\n<ng-template #addRemoveConfirmModal let-data>\r\n  <lf-popup-modal-component [data]=\"data\" (buttonClick)=\"onModalButtonClick($event)\"></lf-popup-modal-component>\r\n</ng-template>\r\n","// Copyright (c) Laserfiche.\r\n// Licensed under the MIT License. See LICENSE in the project root for license information.\r\n\r\nimport { ValidatorFn, Validators } from '@angular/forms';\r\nimport { FieldType } from '@laserfiche/lf-ui-components/shared';\r\nimport { ValidationUtils } from '@laserfiche/lf-ui-components/internal-shared';\r\nimport { LfMetadataValidationUtils } from '@laserfiche/lf-js-utils';\r\nimport { LfFieldInfo } from '../../utils/lf-field-types';\r\n\r\nexport class LfFieldValidationUtils extends ValidationUtils {\r\n    static getDefaultValidators(lfFieldInfo: LfFieldInfo): ValidatorFn[] {\r\n        const validators: ValidatorFn[] = [];\r\n        if (lfFieldInfo.isRequired) {\r\n            const requiredRegexValidator = ValidationUtils.requiredValidator();\r\n            validators.push(requiredRegexValidator);\r\n        }\r\n        if (lfFieldInfo.length) {\r\n            validators.push(Validators.maxLength(lfFieldInfo.length));\r\n        }\r\n        if (lfFieldInfo.constraint) {\r\n            if (\r\n                lfFieldInfo.fieldType === FieldType.Number ||\r\n                lfFieldInfo.fieldType === FieldType.LongInteger ||\r\n                lfFieldInfo.fieldType === FieldType.ShortInteger\r\n            ) {\r\n                validators.push(this.numericValidator(lfFieldInfo.constraint));\r\n            }\r\n            else {\r\n                const cleanedConstraint: string = LfMetadataValidationUtils.formatTextConstraint(lfFieldInfo.constraint);\r\n                validators.push(this.generalRegexValidator(new RegExp(cleanedConstraint)));\r\n            }\r\n        }\r\n        return validators;\r\n    }\r\n}\r\n\r\n","// Copyright (c) Laserfiche.\r\n// Licensed under the MIT License. See LICENSE in the project root for license information.\r\n\r\nimport { LfFieldInfo, TemplateFieldInfo } from './lf-field-types';\r\n\r\nexport function isDynamicField(fieldInfo: LfFieldInfo): boolean {\r\n  const fieldInfoAsTemplateInfo = fieldInfo as TemplateFieldInfo;\r\n  return fieldInfoAsTemplateInfo.rule?.ancestors !== undefined;\r\n}\r\n","// Copyright (c) Laserfiche.\r\n// Licensed under the MIT License. See LICENSE in the project root for license information.\r\n\r\nimport { Injectable } from '@angular/core';\r\nimport { AppLocalizationService } from '@laserfiche/lf-ui-components/internal-shared';\r\nimport { FieldType } from '@laserfiche/lf-ui-components/shared';\r\nimport { Observable } from 'rxjs';\r\nimport { LfToken, LfTokenService } from '../lf-token-picker/lf-token.service';\r\n\r\n/** @internal */\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class LfFieldTokenService implements LfTokenService {\r\n\r\n  private readonly defaultStringTokens: LfFieldTokenId[] = [\r\n    LfFieldTokenId.DATE,\r\n    LfFieldTokenId.TIME,\r\n    LfFieldTokenId.DATETIME,\r\n    // LfFieldTokenId.SESSION_COUNT,\r\n    LfFieldTokenId.REPOSITORY_COUNT,\r\n    LfFieldTokenId.USER_NAME,\r\n    LfFieldTokenId.ENTRY_NAME,\r\n    LfFieldTokenId.PARENT_NAME,\r\n    LfFieldTokenId.ENTRY_ID,\r\n    LfFieldTokenId.PARENT_ID,\r\n    LfFieldTokenId.PARENT_FIELD\r\n  ];\r\n\r\n  private readonly defaultNumberTokens: LfFieldTokenId[] = [\r\n    LfFieldTokenId.SESSION_COUNT,\r\n    LfFieldTokenId.REPOSITORY_COUNT,\r\n    LfFieldTokenId.ENTRY_ID,\r\n    LfFieldTokenId.PARENT_ID,\r\n    LfFieldTokenId.PARENT_FIELD\r\n  ];\r\n\r\n  private readonly DATE = this.localizationService.getStringLaserficheObservable('DATE');\r\n  private readonly TIME = this.localizationService.getStringLaserficheObservable('TIME');\r\n  private readonly DATE_TIME = this.localizationService.getStringLaserficheObservable('DATE_TIME');\r\n  private readonly SESSION_COUNT = this.localizationService.getStringLaserficheObservable('SESSION_COUNT');\r\n  private readonly REPOSITORY_COUNT = this.localizationService.getStringLaserficheObservable('REPOSITORY_COUNT');\r\n  private readonly USER_NAME = this.localizationService.getStringLaserficheObservable('USER_NAME');\r\n  private readonly ENTRY_NAME = this.localizationService.getStringLaserficheObservable('ENTRY_NAME');\r\n  private readonly PARENT_NAME = this.localizationService.getStringLaserficheObservable('PARENT_NAME');\r\n  private readonly ENTRY_ID = this.localizationService.getStringLaserficheObservable('ENTRY_ID');\r\n  private readonly PARENT_ID = this.localizationService.getStringLaserficheObservable('PARENT_ID');\r\n  private readonly PARENT_FIELD = this.localizationService.getStringLaserficheObservable('PARENT_FIELD');\r\n  private readonly FILE_NAME = this.localizationService.getStringLaserficheObservable('FILE_NAME');\r\n  private readonly FILE_EXTENSION = this.localizationService.getStringLaserficheObservable('FILE_EXTENSION');\r\n  private readonly FILE_MODIFIED = this.localizationService.getStringLaserficheObservable('FILE_MODIFIED');\r\n\r\n  private readonly defaultDateTokens: LfFieldTokenId[] = [LfFieldTokenId.DATE];\r\n\r\n  private readonly defaultDateTimeTokens: LfFieldTokenId[] = [LfFieldTokenId.DATETIME];\r\n\r\n  private readonly defaultTimeTokens: LfFieldTokenId[] = [LfFieldTokenId.TIME];\r\n\r\n  private readonly fieldTokenTexts: Map<LfFieldTokenId, string> = new Map([\r\n    [LfFieldTokenId.DATE, 'date'],\r\n    [LfFieldTokenId.TIME, 'time'],\r\n    [LfFieldTokenId.DATETIME, 'datetime'],\r\n    [LfFieldTokenId.SESSION_COUNT, 'count'],\r\n    [LfFieldTokenId.REPOSITORY_COUNT, 'gcount'],\r\n    [LfFieldTokenId.USER_NAME, 'username'],\r\n    [LfFieldTokenId.ENTRY_NAME, 'name'],\r\n    [LfFieldTokenId.PARENT_NAME, 'parentname'],\r\n    [LfFieldTokenId.ENTRY_ID, 'id'],\r\n    [LfFieldTokenId.PARENT_ID, 'parentid'],\r\n    [LfFieldTokenId.PARENT_FIELD, 'parent'],\r\n    [LfFieldTokenId.FILE_NAME, 'filename'],\r\n    [LfFieldTokenId.FILE_EXTENSION, 'fileextension'],\r\n    [LfFieldTokenId.FILE_MODIFIED, 'filemodified']\r\n  ]);\r\n\r\n  constructor(\r\n    private localizationService: AppLocalizationService\r\n  ) { }\r\n\r\n  async getTokensAsync(lfFieldTokenData: LfFieldTokenData): Promise<LfToken[]> {\r\n    if (lfFieldTokenData?.fieldType === undefined) {\r\n      throw new Error('getTokensAsync() parameter lfFieldTokenData must be of type LfFieldTokenData');\r\n    }\r\n    let tokenIds: LfFieldTokenId[] = [];\r\n    switch (lfFieldTokenData.fieldType) {\r\n      case FieldType.Date:\r\n        tokenIds = this.defaultDateTokens;\r\n        break;\r\n      case FieldType.DateTime:\r\n        tokenIds = this.defaultDateTimeTokens;\r\n        break;\r\n      case FieldType.Time:\r\n        tokenIds = this.defaultTimeTokens;\r\n        break;\r\n      case FieldType.LongInteger:\r\n      case FieldType.Number:\r\n      case FieldType.ShortInteger:\r\n        tokenIds = this.defaultNumberTokens;\r\n        break;\r\n      case FieldType.String:\r\n        tokenIds = this.defaultStringTokens;\r\n        break;\r\n      default:\r\n        tokenIds = [];\r\n        break;\r\n    }\r\n\r\n    return this.convertTokenIdsToTokens(tokenIds);\r\n  }\r\n\r\n  private convertTokenIdsToTokens(tokenIds: LfFieldTokenId[]): LfToken[] {\r\n    return tokenIds.map((tokenId: LfFieldTokenId) => {\r\n      const LfToken: LfToken = {\r\n        id: tokenId,\r\n        friendlyName: this.getTokenFriendlyName(tokenId),\r\n        text: this.fieldTokenTexts.get(tokenId) ?? ''\r\n      };\r\n      return LfToken;\r\n    });\r\n  }\r\n\r\n  private getTokenFriendlyName(tokenId: LfFieldTokenId): Observable<string> {\r\n    switch (tokenId) {\r\n      case LfFieldTokenId.DATE: {\r\n        return this.DATE;\r\n      }\r\n      case LfFieldTokenId.TIME: {\r\n        return this.TIME;\r\n      }\r\n      case LfFieldTokenId.DATETIME: {\r\n        return this.DATE_TIME;\r\n      }\r\n      case LfFieldTokenId.SESSION_COUNT: {\r\n        return this.SESSION_COUNT;\r\n      }\r\n      case LfFieldTokenId.REPOSITORY_COUNT: {\r\n        return this.REPOSITORY_COUNT;\r\n      }\r\n      case LfFieldTokenId.USER_NAME: {\r\n        return this.USER_NAME;\r\n      }\r\n      case LfFieldTokenId.ENTRY_NAME: {\r\n        return this.ENTRY_NAME;\r\n      }\r\n      case LfFieldTokenId.PARENT_NAME: {\r\n        return this.PARENT_NAME;\r\n      }\r\n      case LfFieldTokenId.ENTRY_ID: {\r\n        return this.ENTRY_ID;\r\n      }\r\n      case LfFieldTokenId.PARENT_ID: {\r\n        return this.PARENT_ID;\r\n      }\r\n      case LfFieldTokenId.PARENT_FIELD: {\r\n        return this.PARENT_FIELD;\r\n      }\r\n      case LfFieldTokenId.FILE_NAME: {\r\n        return this.FILE_NAME;\r\n      }\r\n      case LfFieldTokenId.FILE_EXTENSION: {\r\n        return this.FILE_EXTENSION;\r\n      }\r\n      case LfFieldTokenId.FILE_MODIFIED: {\r\n        return this.FILE_MODIFIED;\r\n      }\r\n    }\r\n  }\r\n\r\n  getTokenText(token: LfFieldTokenId): string | undefined {\r\n    return this.fieldTokenTexts.get(token);\r\n  }\r\n\r\n  getTokensForFieldType(fieldType: FieldType, isImport: boolean): LfFieldTokenId[] {\r\n    switch (fieldType) {\r\n      case FieldType.Date:\r\n        return isImport ? this.defaultDateTokens.concat(LfFieldTokenId.FILE_MODIFIED) : this.defaultDateTokens;\r\n      case FieldType.DateTime:\r\n        return isImport ? this.defaultDateTimeTokens.concat(LfFieldTokenId.FILE_MODIFIED) : this.defaultDateTimeTokens;\r\n      case FieldType.Time:\r\n        return isImport ? this.defaultTimeTokens.concat(LfFieldTokenId.FILE_MODIFIED) : this.defaultTimeTokens;\r\n      case FieldType.LongInteger:\r\n      case FieldType.Number:\r\n      case FieldType.ShortInteger:\r\n        return this.defaultNumberTokens;\r\n      case FieldType.String:\r\n        return isImport ? this.defaultStringTokens.concat([\r\n          LfFieldTokenId.FILE_NAME,\r\n          LfFieldTokenId.FILE_EXTENSION,\r\n          LfFieldTokenId.FILE_MODIFIED\r\n        ]) : this.defaultStringTokens;\r\n      default:\r\n        return [];\r\n    }\r\n  }\r\n\r\n  containsTokenForFieldType(fieldValue: string, fieldType: FieldType, isImport: boolean): boolean {\r\n    if (!fieldValue || fieldValue === '') {\r\n      return false;\r\n    }\r\n    const validTokens: LfFieldTokenId[] = this.getTokensForFieldType(fieldType, isImport);\r\n    const lowercaseFieldValue: string = fieldValue.toString().toLowerCase();\r\n    for (const validToken of validTokens) {\r\n      const tokenText = this.getTokenText(validToken)?.toLowerCase();\r\n      if (tokenText) {\r\n        if (fieldType === FieldType.String) {\r\n          if (this.fieldIsToken(lowercaseFieldValue, tokenText)) {\r\n            return true;\r\n          }\r\n        }\r\n        else {\r\n          if (this.fieldIsOnlyToken(lowercaseFieldValue, tokenText)) {\r\n            return true;\r\n          }\r\n        }\r\n      }\r\n    }\r\n    return false;\r\n  }\r\n\r\n  private fieldIsToken(fieldVal: string, token: string): boolean {\r\n    const trimmedFieldVal = fieldVal.trim();\r\n    const tokenRegExp: RegExp = new RegExp(`%\\\\(${token}(:.*)?\\\\)`);\r\n    const matches = trimmedFieldVal.match(tokenRegExp);\r\n    return (matches !== null);\r\n  }\r\n\r\n  private fieldIsOnlyToken(fieldVal: string, token: string): boolean {\r\n    const trimmedFieldVal = fieldVal.trim();\r\n    const tokenRegExp: RegExp = new RegExp(`^%\\\\(${token}(:.*)?\\\\)$`);\r\n    const matches = trimmedFieldVal.match(tokenRegExp);\r\n    return (matches !== null && trimmedFieldVal === matches[0]);\r\n  }\r\n}\r\n\r\nexport enum LfFieldTokenId {\r\n  DATE,\r\n  TIME,\r\n  DATETIME,\r\n  SESSION_COUNT,\r\n  REPOSITORY_COUNT,\r\n  USER_NAME,\r\n  ENTRY_NAME,\r\n  PARENT_NAME,\r\n  ENTRY_ID,\r\n  PARENT_ID,\r\n  PARENT_FIELD,\r\n  FILE_NAME,\r\n  FILE_EXTENSION,\r\n  FILE_MODIFIED\r\n}\r\n\r\nexport interface LfFieldTokenData {\r\n  fieldType: FieldType;\r\n}\r\n","// Copyright (c) Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport {\n  OnInit,\n  Output,\n  EventEmitter,\n  Input,\n  Directive,\n  ViewChild,\n  ElementRef,\n  ChangeDetectorRef,\n} from '@angular/core';\nimport { LfFieldInfo, LfFieldValue } from '../../../utils/lf-field-types';\nimport { FormControl, ValidatorFn, FormGroup } from '@angular/forms';\nimport { LfFieldTokenData, LfFieldTokenService } from '../lf-field-token.service';\nimport { LfFieldValidationUtils } from '../lf-field-validation-utils';\nimport { AppLocalizationService, ValidationRule } from '@laserfiche/lf-ui-components/internal-shared';\nimport { isDynamicField } from '../../../utils/metadata-utils';\nimport { Observable, of } from 'rxjs';\nimport { map, mergeMap, startWith } from 'rxjs/operators';\nimport { CoreUtils } from '@laserfiche/lf-js-utils';\n\n\n/** @internal */\n@Directive()\nexport abstract class BaseFieldDirective implements OnInit {\n  @Input() lf_field_info!: LfFieldInfo;\n  @Input() lf_field_form_control!: FormControl;\n  @Input() lf_field_value: LfFieldValue | undefined;\n  @Input() parent_form: FormGroup | undefined;\n  @Input() is_import_mode: boolean = false;\n  @Output() fieldValueChange = new EventEmitter<LfFieldValue>();\n  @ViewChild('tokenTarget') tokenTarget?: ElementRef;\n  @Input() dynamic_field_value_options: string[] | undefined;\n\n  showTokenTextBox: boolean = false;\n\n  private readonly CHARACTER_COUNT = this.localizationService.getStringLaserficheObservable('CHARACTER_COUNT');\n  private readonly NOT_AVAILABLE_WITH_TOKENS =\n    this.localizationService.getStringLaserficheObservable('NOT_AVAILABLE_WITH_TOKENS');\n\n  private readonly REQUIRED_FIELD_IS_EMPTY =\n    this.localizationService.getStringLaserficheObservable('REQUIRED_FIELD_IS_EMPTY');\n  private THIS_FIELD_HAS_MAXIMUM_ALLOWED_LENGTH_0_CHARACTERS?: Observable<string>;\n\n  get containsToken(): boolean {\n    return this.tokenService.containsTokenForFieldType(\n      this.lf_field_form_control.value ?? '',\n      this.lf_field_info.fieldType,\n      this.is_import_mode\n    );\n  }\n\n  get lfFieldTokenData(): LfFieldTokenData {\n    return {\n      fieldType: this.lf_field_info?.fieldType,\n    };\n  }\n\n  get isDynamic(): boolean {\n    return isDynamicField(this.lf_field_info);\n  }\n\n  readonly tokenCharacterCountHint = this.getTokenCharacterCountHint();\n\n  readonly noTokenCharacterCountHint = this.getNoTokenCharacterCountHint();\n\n  private getConcatenatedTokenLabel(firstVal: string): Observable<string> {\n    return this.NOT_AVAILABLE_WITH_TOKENS.pipe(map((value) => firstVal.concat(` ${value}`)));\n  }\n\n  private getTokenCharacterCountHint(): Observable<string> {\n    return this.CHARACTER_COUNT.pipe(mergeMap((value) => this.getConcatenatedTokenLabel(value)));\n  }\n\n  private getNoTokenCharacterCountHint(): Observable<string> {\n    const obs = this.CHARACTER_COUNT.pipe(\n      mergeMap((value) => {\n        const startValue = `${value}\n      ${this.lf_field_form_control.value ? this.lf_field_form_control.value.length : 0}\n      / ${this.lf_field_info?.length}`;\n        return this.getFieldLengthRatio(value).pipe(startWith(startValue));\n      })\n    );\n    return obs;\n  }\n\n  private getFieldLengthRatio(value: string): Observable<string> {\n    return this.lf_field_form_control.valueChanges.pipe(\n      map((thisVal) => {\n        return `${value}\n      ${thisVal ? this.lf_field_form_control.value.length : 0}\n      / ${this.lf_field_info?.length}`;\n      })\n    );\n  }\n\n  constructor(\n    public tokenService: LfFieldTokenService,\n    public ref: ChangeDetectorRef,\n    public localizationService: AppLocalizationService\n  ) {}\n\n  fieldValidationErrorMsg!: Observable<string | undefined>;\n\n  async ngOnInit(): Promise<void> {\n    this.lf_field_info = CoreUtils.validateDefined(this.lf_field_info, 'LfFieldInfo');\n    this.lf_field_form_control = CoreUtils.validateDefined(this.lf_field_form_control, 'lfFieldFormControl');\n    this.setLfFieldFormControlValue(this.lf_field_value);\n\n    this.THIS_FIELD_HAS_MAXIMUM_ALLOWED_LENGTH_0_CHARACTERS = this.localizationService.getStringLaserficheObservable(\n      'THIS_FIELD_HAS_MAXIMUM_ALLOWED_LENGTH_0_CHARACTERS',\n      [this.lf_field_info?.length?.toString() ?? '0']\n    );\n\n    this.fieldValidationErrorMsg = this.lf_field_form_control.valueChanges.pipe(\n      mergeMap((value) => {\n        const validationRuleName = this.getBrokenValidationRule();\n        return this.getValidationErrorMsg(validationRuleName) ?? of(undefined);\n      })\n    );\n\n    if (\n      this.tokenService.containsTokenForFieldType(\n        this.lf_field_value ?? '',\n        this.lf_field_info.fieldType,\n        this.is_import_mode\n      )\n    ) {\n      this.showTokenTextBox = true;\n    } else {\n      this.resetToDefaultValidators();\n    }\n  }\n\n  abstract deserializeLfFieldValue(): string;\n\n  abstract serializeFieldFormControlValue(): string;\n\n  abstract getAdditionalValidatorsForFieldType(): ValidatorFn[];\n\n  abstract getValidationTextForFieldType(validationRuleName: ValidationRule): Observable<string> | undefined;\n\n  protected fieldOnValueChanged(): void {\n    // do nothing\n    // derived classes will implement\n  }\n\n  getLfFieldFormControlValue(): string {\n    return this.lf_field_form_control.value;\n  }\n\n  setLfFieldFormControlValue(newValue: string | undefined) {\n    this.lf_field_value = newValue;\n    const deserializedValue: string = this.lf_field_value ? this.deserializeLfFieldValue() : '';\n    this.lf_field_form_control.setValue(deserializedValue);\n  }\n\n  onValueChanged(emitEvent: boolean = true) {\n    if (this.lf_field_form_control.valid) {\n      const currentValue = this.serializeFieldFormControlValue();\n      this.lf_field_value = currentValue;\n    } else {\n      this.lf_field_value = '';\n      this.fieldOnValueChanged();\n    }\n    if (emitEvent) {\n      this.fieldValueChange.emit(this.lf_field_value);\n    }\n  }\n\n  getBrokenValidationRule(): ValidationRule | undefined {\n    for (const validationRuleName of LfFieldValidationUtils.validationRulesInPriorityOrder) {\n      if (this.lf_field_form_control?.hasError(validationRuleName)) {\n        return validationRuleName;\n      }\n    }\n    return undefined;\n  }\n\n  onDateOrTimeTokenValueChanged() {\n    this.onFocusOutTokenInput();\n    this.onValueChanged();\n  }\n\n  onFocusOutTokenInput() {\n    if (this.containsToken) {\n      this.showTokenTextBox = true;\n      this.setLfFieldFormControlValue(this.lf_field_value);\n    } else {\n      this.showTokenTextBox = false;\n      this.setLfFieldFormControlValue('');\n      this.resetToDefaultValidators();\n    }\n  }\n\n  protected getValidationErrorMsg(validationRuleName: ValidationRule | undefined): Observable<string> | undefined {\n    if (validationRuleName === undefined) {\n      return undefined;\n    } else {\n      switch (validationRuleName) {\n        case ValidationRule.REQUIRED:\n          return this.REQUIRED_FIELD_IS_EMPTY;\n        case ValidationRule.MAX_LENGTH:\n          return this.THIS_FIELD_HAS_MAXIMUM_ALLOWED_LENGTH_0_CHARACTERS;\n        case ValidationRule.PATTERN:\n          return this.lf_field_info.constraintError ? of(this.lf_field_info.constraintError) : undefined;\n      }\n      return this.getValidationTextForFieldType(validationRuleName);\n    }\n  }\n\n\n  onTokenChosen(token: string) {\n    if (this.tokenTarget) {\n      const newFieldVal: string = this.createNewFieldValueWithToken(token);\n      this.showTokenTextBox = true;\n      this.ref.detectChanges();\n      this.setLfFieldFormControlValue(newFieldVal);\n      this.fieldValueChange.emit(newFieldVal);\n    }\n  }\n  createNewFieldValueWithToken(token: string): string {\n    return `%(${token})`;\n  }\n\n  resetToDefaultValidators() {\n    const defaultValidators = LfFieldValidationUtils.getDefaultValidators(this.lf_field_info);\n    const additionalValidators = this.getAdditionalValidatorsForFieldType();\n    this.lf_field_form_control.setValidators(defaultValidators.concat(additionalValidators));\n  }\n}\n","// Copyright Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport { Directive, OnInit } from \"@angular/core\";\nimport { BaseFieldDirective } from \"./base-field.directive\";\nimport {\n  UniComponentConfig,\n  UniComponentSettings,\n  UniDateTimeComponent,\n} from '../../../../lf-date-time-picker/uni-date-time.module';\nimport { ValidationRule } from \"@laserfiche/lf-ui-components/internal-shared\";\nimport { of } from \"rxjs\";\n\n@Directive()\nexport abstract class DateTimeBaseFieldDirective extends BaseFieldDirective implements OnInit {\n  protected readonly internalDateFormat: string = 'YYYY-MM-DD';\n  protected readonly internalTimeFormat: string = 'HH:mm:ss';\n  uniDateTimeConfig!: UniComponentConfig;\n  uniDateTimeSettings!: UniComponentSettings;\n\n  onUniDateOrTimeChanged(dateTimeObject: { component: UniDateTimeComponent }) {\n    if (dateTimeObject?.component) {\n      this.ref.detectChanges();\n      this.setLfDateTimeFieldControl(dateTimeObject);\n      this.showTokenTextBox = false;\n      this.onValueChanged(true);\n    }\n  }\n\n  private setLfDateTimeFieldControl(dateTimeObject: { component: UniDateTimeComponent }) {\n    if (dateTimeObject.component.dateTimeControl?.value) {\n      this.setLfFieldFormControlValue(dateTimeObject.component.dateTimeControl?.value);\n      this.lf_field_form_control.updateValueAndValidity();\n    } else if (!!dateTimeObject.component.settings.showTimeOnly) {\n      this.setLfFieldFormControlValue(undefined);\n      this.lf_field_form_control.updateValueAndValidity();\n    } else {\n      this.setDateOrDateTimeValidationErrors(dateTimeObject);\n    }\n  }\n\n  private setDateOrDateTimeValidationErrors(dateTimeObject: { component: UniDateTimeComponent }) {\n    if (dateTimeObject.component.dateControl?.value && dateTimeObject.component.dateControl?.value.trim() !== '') {\n      this.setLfFieldFormControlValue(dateTimeObject.component.dateControl?.value);\n      if (!!dateTimeObject.component.settings.combinedDateTime) {\n        var dateTimeFormat: string =\n          dateTimeObject.component.settings.dateFormat + ' ' + dateTimeObject.component.settings.timeFormat;\n        this.lf_field_form_control.setErrors({\n          [ValidationRule.DATETIME_PICKER_PARSE]: {\n            text: dateTimeObject.component.dateControl?.value,\n            dateTimeFormat: dateTimeFormat,\n          },\n        });\n      } else {\n        this.lf_field_form_control.setErrors({\n          [ValidationRule.DATEPICKER_PARSE]: {\n            text: dateTimeObject.component.dateControl?.value,\n            dateTimeFormat: dateTimeObject.component.settings.dateFormat,\n          },\n        });\n      }\n    } else {\n      this.setLfFieldFormControlValue(undefined);\n      this.lf_field_form_control.updateValueAndValidity();\n    }\n    const validationRuleName = this.getBrokenValidationRule();\n    this.fieldValidationErrorMsg = this.getValidationErrorMsg(validationRuleName) ?? of(undefined);\n  }\n\n  protected getDateTimePickerDefaultDateValue(): string | undefined {\n    var initialDate: string | undefined;\n    if (!!this.containsToken) {\n      this.showTokenTextBox = true;\n      return (initialDate = undefined);\n    } else {\n      return (initialDate = this.lf_field_value);\n    }\n  }\n}\n","// Copyright Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { LfFieldTokenService } from '../lf-field-base/lf-field-token.service';\nimport { LfToken } from './lf-token.service';\n\n@Component({\n  selector: 'lf-token-picker-component',\n  templateUrl: './lf-token-picker.component.html',\n  styleUrls: ['./lf-token-picker.component.css'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LfTokenPickerComponent implements OnInit {\n\n  @Input() data: any;\n  @Output() tokenPicked: EventEmitter<string> = new EventEmitter();\n  tokens: LfToken[] = [];\n\n  constructor(public tokenService: LfFieldTokenService) { }\n\n  async ngOnInit() {\n    this.tokens = await this.tokenService.getTokensAsync(this.data);\n  }\n\n  async onTokenChosen(token: LfToken) {\n    if (token) {\n      this.tokenPicked.emit(token.text);\n    }\n  }\n}\n","<!--Copyright (c) Laserfiche.\r\nLicensed under the MIT License. See LICENSE in the project root for license information.-->\r\n\r\n<button class=\"token-picker-button\" [matMenuTriggerFor]=\"tokenMenu\">\r\n  <span class=\"material-icons token-picker-icon\">\r\n    navigate_next\r\n  </span>\r\n</button>\r\n<mat-menu #tokenMenu=\"matMenu\" class=\"token-picker-dropdown\">\r\n  <button class=\"token-picker-option\" *ngFor=\"let token of tokens\" mat-menu-item\r\n      (click)=\"onTokenChosen(token)\">{{token.friendlyName | async}}</button>\r\n</mat-menu>\r\n","// Copyright Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport { AbstractControl } from \"@angular/forms\";\n\nexport enum UniControlType {\n    \"DateTime_date\" = \"dateTime-date\",\n    \"DateTime_time\" = \"dateTime-time\",\n    \"Time\" = \"time\",\n    \"DateTime\" = \"dateTime\"\n}\n\nexport enum FormatType {\n    DATE_FORMAT = 1,\n    TIME_FORMAT = 2,\n    DATETIME_FORMAT = 3\n}\n\nexport type StateDataDateTime = {\n    dateStr?: string | null;\n    timeStr?: string | null;\n    dateTimeObj?: Date | null;\n};\nexport type StateDataTime = {\n    timeStr: string;\n    dateTimeObj?: Date;\n};\nexport type StateData = StateDataDateTime;\n\nexport enum FormChangeEvent {  // Revise, remove unused\n    Blur = \"Blur\", // when source is User\n    Input = \"Input\", // when source is User\n    DateChange = \"DateChange\",\n    DateBlur = \"DateBlur\",\n    DateClose = \"DateClose\",\n    DateIconClick = \"DateIconClick\",\n    TimeIconClick = \"TimeIconClick\",\n    TimeChange = \"TimeChange\",\n    TimeBlur = \"TimeBlur\",\n    TimeClose = \"TimeClose\"\n}\n\nexport enum FormChangeSource { // Revise, remove unused\n    User = \"User\",\n    InitializeComponent = \"InitializeComponent\"\n}\n\nexport interface UniState {\n    data?: StateData;\n    hidden?: boolean;\n    disabled?: boolean;\n    readonly?: boolean;\n    disableUseCurrentDateTime?: boolean;\n    settings?: UniComponentSettings;\n}\n\nexport interface UniComponentSettings { // Revise, remove unused\n    fieldId?: string;\n    required?: boolean;\n    readOnly?: boolean;\n    default?: unknown;\n    acceptTokens?: boolean;\n    label?: string;\n    showLabel?: boolean;\n\n    abstractControl?: AbstractControl;\n    dateControlName?: string;\n    timeControlName?: string;\n    dateTimeControlName?: string;\n\n    width?: number;\n    maxWidth?: number;\n    height?: number;\n    maxHeight?: number;\n    padding?: number;\n    minWidth?: number;\n    minHeight?: number;\n\n    combinedDateTime?: boolean;\n    capturedInBackend?: boolean;\n\n    min?: string;\n    max?: string;\n\n    defaultDate?: string;\n    defaultTimeOfDate?: string;\n    dateFormat?: string;\n    timeFormat?: string;\n    isAMPM?: boolean;\n    isTwentyfour?: boolean;\n    useCurrentTime?: boolean;\n    showTime?: boolean;\n    showTimeOnly?: boolean;\n    useCurrentDate?: boolean;\n    datePlaceholder?: string;\n    timePlaceholder?: string;\n\n    customErrorMessages?: any;\n    errorTokens?: { value: string; settingName: string }[];\n}\n\nexport interface UniComponentConfig {\n    defaultDateFormat?: string;\n    defaultTimeFormat?: string;\n    defaultDateTimeFormat?: string;\n    storedValueDateFormat?: string;\n    storedValueTimeFormat?: string;\n    storedValueDateTimeFormat?: string;\n    storedValueLocale?: string;\n    storedValueLanguage?: string;\n    tokensPatternRegex?: string;\n    useBackendDateTimeForCurrentDateTime?: boolean;\n    locale?: string;\n    language?: string;\n    defaultDateLocale?: string;\n    defaultDateLanguage?: string;\n    setDisplayFormatByLocale?: boolean;\n    setDisplayFormatByLocaleSeconds?: boolean;\n    isDisplayOnly?: boolean;\n    errorsPriorityOrder?: any;\n    fieldIdPrefix?: string;\n\n    formGroupValidators?: any;\n    dateControlValidators?: any;\n    timeControlValidators?: any;\n    dateTimeControlValidators?: any;\n\n    silent?: boolean;\n};\n","// Copyright Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nexport class uniLocalizedFormat {\n  DateFormat!: string;\n  TimeFormat!:string;\n  TimeFormatWithSeconds!: string;\n}\nexport const uniLocalizedFormats: Record<string, uniLocalizedFormat> = {\n    \"ar-AE\": {\n        \"DateFormat\": \"D/M/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"ar-BH\": {\n        \"DateFormat\": \"D/M/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"ar-DZ\": {\n        \"DateFormat\": \"D/M/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"ar-EG\": {\n        \"DateFormat\": \"D/M/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"ar-IQ\": {\n        \"DateFormat\": \"D/M/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"ar-JO\": {\n        \"DateFormat\": \"D/M/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"ar-KW\": {\n        \"DateFormat\": \"D/M/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"ar-LB\": {\n        \"DateFormat\": \"D/M/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"ar-LY\": {\n        \"DateFormat\": \"D/M/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"ar-MA\": {\n        \"DateFormat\": \"D/M/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"ar-MR\": {\n        \"DateFormat\": \"D/M/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"ar-OM\": {\n        \"DateFormat\": \"D/M/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"ar-QA\": {\n        \"DateFormat\": \"D/M/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"ar-SA\": {\n        \"DateFormat\": \"D/M/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"ar-SD\": {\n        \"DateFormat\": \"D/M/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"ar-SO\": {\n        \"DateFormat\": \"D/M/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"ar-SS\": {\n        \"DateFormat\": \"D/M/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"ar-SY\": {\n        \"DateFormat\": \"D/M/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"ar-TD\": {\n        \"DateFormat\": \"D/M/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"ar-TN\": {\n        \"DateFormat\": \"D/M/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"ar-YE\": {\n        \"DateFormat\": \"D/M/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-AE\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-AG\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-AI\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"en-AS\": {\n        \"DateFormat\": \"M/D/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-AT\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"en-AU\": {\n        \"DateFormat\": \"D/M/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-BB\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-BE\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"en-BI\": {\n        \"DateFormat\": \"M/D/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"en-BM\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-BS\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-BW\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"en-BZ\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"en-CA\": {\n        \"DateFormat\": \"YYYY-MM-DD\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-CC\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"en-CH\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"en-CK\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"en-CM\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"en-CX\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"en-CY\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-DE\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"en-DK\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH.mm\",\n        \"TimeFormatWithSeconds\": \"HH.mm:ss\",\n    },\n    \"en-DM\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-ER\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-FI\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"H.mm\",\n        \"TimeFormatWithSeconds\": \"H.mm:ss\",\n    },\n    \"en-FJ\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-FK\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"en-FM\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-GB\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"en-GD\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-GG\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"en-GH\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-GI\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"en-GM\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-GU\": {\n        \"DateFormat\": \"M/D/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-GY\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-HK\": {\n        \"DateFormat\": \"D/M/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-IE\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"en-IL\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"H:mm\",\n        \"TimeFormatWithSeconds\": \"H:mm:ss\",\n    },\n    \"en-IM\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"en-IN\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-IO\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"en-JE\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"en-JM\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-KE\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"en-KI\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-KN\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-KY\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-LC\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-LR\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-LS\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-MG\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"en-MH\": {\n        \"DateFormat\": \"M/D/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-MO\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-MP\": {\n        \"DateFormat\": \"M/D/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-MS\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"en-MT\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"en-MU\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"en-MW\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-MY\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-NA\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-NF\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"en-NG\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"en-NL\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"en-NR\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"en-NU\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"en-NZ\": {\n        \"DateFormat\": \"D/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-PG\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-PH\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-PK\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-PN\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"en-PR\": {\n        \"DateFormat\": \"M/D/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-PW\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-RW\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"en-SB\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-SC\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"en-SD\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-SE\": {\n        \"DateFormat\": \"YYYY-MM-DD\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"en-SG\": {\n        \"DateFormat\": \"D/M/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-SH\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"en-SI\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"en-SL\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-SS\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-SX\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"en-SZ\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-TC\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-TK\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"en-TO\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-TT\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-TV\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"en-TZ\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"en-UG\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"en-UM\": {\n        \"DateFormat\": \"M/D/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-US\": {\n        \"DateFormat\": \"M/D/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-VC\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-VG\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-VI\": {\n        \"DateFormat\": \"M/D/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-VU\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-WS\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-ZA\": {\n        \"DateFormat\": \"YYYY/MM/DD\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"en-ZM\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"en-ZW\": {\n        \"DateFormat\": \"D/M/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"es-AR\": {\n        \"DateFormat\": \"D/M/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"es-BO\": {\n        \"DateFormat\": \"D/M/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"es-BR\": {\n        \"DateFormat\": \"D/M/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"es-BZ\": {\n        \"DateFormat\": \"D/M/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"es-CL\": {\n        \"DateFormat\": \"DD-MM-YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"es-CO\": {\n        \"DateFormat\": \"D/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"es-CR\": {\n        \"DateFormat\": \"D/M/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"es-CU\": {\n        \"DateFormat\": \"D/M/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"es-DO\": {\n        \"DateFormat\": \"D/M/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"es-EC\": {\n        \"DateFormat\": \"D/M/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"es-ES\": {\n        \"DateFormat\": \"D/M/YYYY\",\n        \"TimeFormat\": \"H:mm\",\n        \"TimeFormatWithSeconds\": \"H:mm:ss\",\n    },\n    \"es-GQ\": {\n        \"DateFormat\": \"D/M/YYYY\",\n        \"TimeFormat\": \"H:mm\",\n        \"TimeFormatWithSeconds\": \"H:mm:ss\",\n    },\n    \"es-GT\": {\n        \"DateFormat\": \"D/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"es-HN\": {\n        \"DateFormat\": \"D/M/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"es-MX\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"H:mm\",\n        \"TimeFormatWithSeconds\": \"H:mm:ss\",\n    },\n    \"es-NI\": {\n        \"DateFormat\": \"D/M/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"es-PA\": {\n        \"DateFormat\": \"MM/DD/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"es-PE\": {\n        \"DateFormat\": \"D/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"es-PH\": {\n        \"DateFormat\": \"D/M/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"es-PR\": {\n        \"DateFormat\": \"MM/DD/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"es-PY\": {\n        \"DateFormat\": \"D/M/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"es-SV\": {\n        \"DateFormat\": \"D/M/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"es-US\": {\n        \"DateFormat\": \"D/M/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"es-UY\": {\n        \"DateFormat\": \"D/M/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"es-VE\": {\n        \"DateFormat\": \"D/M/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"fr-BE\": {\n        \"DateFormat\": \"D/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"fr-BF\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"fr-BI\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"fr-BJ\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"fr-BL\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"fr-CA\": {\n        \"DateFormat\": \"YYYY-MM-DD\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"fr-CD\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"fr-CF\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"fr-CG\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"fr-CH\": {\n        \"DateFormat\": \"DD.MM.YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"fr-CI\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"fr-CM\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"fr-DJ\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"fr-DZ\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"fr-FR\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"fr-GA\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"fr-GF\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"fr-GN\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"fr-GP\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"fr-GQ\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"fr-HT\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"fr-KM\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"fr-LU\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"fr-MA\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"fr-MC\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"fr-MF\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"fr-MG\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"fr-ML\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"fr-MQ\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"fr-MR\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"fr-MU\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"fr-NC\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"fr-NE\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"fr-PF\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"fr-PM\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"fr-RE\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"fr-RW\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"fr-SC\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"fr-SN\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"fr-SY\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"fr-TD\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"fr-TG\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"fr-TN\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"fr-VU\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"fr-WF\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"fr-YT\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"pt-AO\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"pt-BR\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"pt-CH\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"pt-CV\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"pt-GQ\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"pt-GW\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"pt-LU\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"pt-MO\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\",\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\",\n    },\n    \"pt-MZ\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"pt-PT\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"pt-ST\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"pt-TL\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"HH:mm\",\n        \"TimeFormatWithSeconds\": \"HH:mm:ss\",\n    },\n    \"zh-CN\": {\n        \"DateFormat\": \"YYYY/M/D\",\n        \"TimeFormat\": \"h:mm A\", // Adjusted for time picker\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\" // Adjusted for time picker\n    },\n    \"zh-HK\": {\n        \"DateFormat\": \"D/M/YYYY\",\n        \"TimeFormat\": \"h:mm A\", // Adjusted for time picker\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\" // Adjusted for time picker\n    },\n    \"zh-Hans-HK\": {\n        \"DateFormat\": \"D/M/YYYY\",\n        \"TimeFormat\": \"h:mm A\", // Adjusted for time picker\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\" // Adjusted for time picker\n    },\n    \"zh-Hans-MO\": {\n        \"DateFormat\": \"D/M/YYYY\",\n        \"TimeFormat\": \"h:mm A\", // Adjusted for time picker\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\" // Adjusted for time picker\n    },\n    \"zh-MO\": {\n        \"DateFormat\": \"D/M/YYYY\",\n        \"TimeFormat\": \"h:mm A\", // Adjusted for time picker\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\" // Adjusted for time picker\n    },\n    \"zh-SG\": {\n        \"DateFormat\": \"DD/MM/YYYY\",\n        \"TimeFormat\": \"h:mm A\", // Adjusted for time picker\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\" // Adjusted for time picker\n    },\n    \"zh-TW\": {\n        \"DateFormat\": \"YYYY/M/D\",\n        \"TimeFormat\": \"h:mm A\", // Adjusted for time picker\n        \"TimeFormatWithSeconds\": \"h:mm:ss A\" // Adjusted for time picker\n    },\n};\n","// Copyright Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport Flatpickr from \"flatpickr\";\nimport { Arabic } from 'flatpickr/dist/l10n/ar.js';\nimport { Spanish } from 'flatpickr/dist/l10n/es.js';\nimport { French } from 'flatpickr/dist/l10n/fr.js';\nimport { Portuguese } from 'flatpickr/dist/l10n/pt.js';\nimport { Mandarin } from 'flatpickr/dist/l10n/zh.js';\nimport { MandarinTraditional } from 'flatpickr/dist/l10n/zh-tw.js';\n\nexport const FlatpickrLocales = {\n  en: Flatpickr.l10ns.en,\n  ar: Arabic,\n  es: Spanish,\n  fr: French,\n  pt: Portuguese,\n  zhHans: Mandarin,\n  zhHant: MandarinTraditional\n};\n","// Copyright Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport { Injectable } from '@angular/core';\nimport {\n  parse,\n  parseISO,\n  format,\n  isValid,\n  isBefore,\n  isAfter,\n  isEqual,\n  isWithinInterval,\n  add,\n  addDays,\n  addMonths,\n  addMilliseconds,\n  milliseconds,\n  isMatch,\n  isLeapYear,\n  startOfDay,\n  endOfMonth,\n  getWeek,\n  getISOWeek,\n  differenceInYears,\n  differenceInMonths,\n  differenceInDays,\n  Duration,\n} from 'date-fns';\n\nimport { StateDataDateTime, UniComponentSettings, UniComponentConfig, FormatType } from './uni-date-time.common';\nimport { uniLocalizedFormats } from './uni-date-time.locales';\n\nimport { DateOption } from 'flatpickr/dist/types/options';\nimport { CustomLocale } from 'flatpickr/dist/types/locale';\nimport flatpickr from 'flatpickr';\nimport { FlatpickrLocales } from './flatpickr-locales';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class UniDateTimeService {\n  public defaultErrorMessages = {\n    ['required']: () => 'Value is required.',\n    ['max']: (params: { min?: string | number; max?: string | number }) =>\n      `Value must be less than or equal to ${params.max}.`,\n    ['min']: (params: { min?: string | number; max?: string | number }) =>\n      `Value must be greater than or equal to ${params.min}.`,\n    ['range']: (params: { min?: string | number; max?: string | number }) =>\n      `Value must be between ${params.min} and ${params.max}.`,\n    ['invalidformat']: () => `Invalid input.`,\n  };\n\n  public fromDisplayDateTimeFormatToUnicodeTokens(displayFormat: string): string {\n    let newFormat = displayFormat;\n    newFormat = newFormat.replace(/Y/g, 'y');\n    newFormat = newFormat.replace(/D/g, 'd');\n    newFormat = newFormat.replace(/A/g, 'a');\n    return newFormat;\n  }\n\n  public isInDisplayDateTimeFormat(format: string): boolean {\n    const dsSymbols = ['YYYY', 'MMM', 'YY', 'DD', 'MM', 'hh', 'HH', 'mm', 'ss', 'A'];\n    for (let i = 0; i < dsSymbols.length; i++) {\n      if (format.indexOf(dsSymbols[i]) > -1) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  public fromDisplayDateTimeFormatToFlatpickrFormat(displayFormat: string, checkFirst: boolean = false): string {\n    if (checkFirst) {\n      if (!this.isInDisplayDateTimeFormat(displayFormat)) {\n        return displayFormat; // already converted or not convertable\n      }\n    }\n    const cFormats = ['YYYY', 'MMM', 'YY', 'DD', 'MM', 'hh', 'HH', 'mm', 'ss', 'A', 'D', 'M'];\n    const fFormats = ['Y', 'M', 'y', 'd', 'm', 'G', 'H', 'i', 'S', 'K', 'j', 'n'];\n    let newFormat = displayFormat;\n    for (let i = 0; i < cFormats.length; i++) {\n      newFormat = newFormat.replace(new RegExp(cFormats[i], 'g'), '{' + i + '}');\n    }\n    for (let i = 0; i < cFormats.length; i++) {\n      newFormat = newFormat.replace(new RegExp('\\\\{' + i + '\\\\}', 'g'), fFormats[i]);\n    }\n    return newFormat;\n  }\n\n  // public timezone: string = Intl.DateTimeFormat().resolvedOptions().timeZone;\n  private referenceDate: Date;\n  private TokensPatternRegex: string = '{/[^{}]+}';\n  public supportedLanguages = [\n    'ar',\n    'at',\n    'az',\n    'be',\n    'bg',\n    'bn',\n    'bs',\n    'cs',\n    'cy',\n    'da',\n    'de',\n    'eo',\n    'en',\n    'es',\n    'et',\n    'fa',\n    'fi',\n    'fo',\n    'fr',\n    'ga',\n    'gr',\n    'he',\n    'hi',\n    'hr',\n    'hu',\n    'hy',\n    'id',\n    'is',\n    'it',\n    'ja',\n    'ka',\n    'km',\n    'ko',\n    'kz',\n    'lt',\n    'lv',\n    'mk',\n    'mn',\n    'ms',\n    'my',\n    'nl',\n    'nn',\n    'no',\n    'pa',\n    'pl',\n    'pt',\n    'ro',\n    'ru',\n    'si',\n    'sk',\n    'sl',\n    'sq',\n    'sr',\n    'sv',\n    'th',\n    'tr',\n    'uk',\n    'uz',\n    'vn',\n    'zh-hans',\n    'zh-hant',\n  ];\n\n  constructor() {\n    const today = new Date();\n    this.referenceDate = new Date(today.getFullYear(), today.getMonth(), today.getDate());\n    this.TokensPatternRegex =\n      'TokenPatternRegex' in window ? (window['TokenPatternRegex'] as string) : this.TokensPatternRegex;\n  }\n\n  public parse(info: {\n    dateStr?: string | null;\n    timeStr?: string | null;\n    dateTimeStr?: string | null;\n    dateFormat?: string | null;\n    timeFormat?: string;\n    dateTimeFormat?: string;\n    language?: string;\n    locale?: string;\n  }): Date | null {\n    // Parse datetime if present\n    if (info.dateTimeStr && info.dateTimeFormat) {\n      const obj = parse(\n        info.dateTimeStr,\n        this.fromDisplayDateTimeFormatToUnicodeTokens(info.dateTimeFormat) || info.dateTimeFormat,\n        this.referenceDate\n      );\n\n      const format = info.dateTimeFormat;\n\n      return info.language || info.locale\n        ? this.tryLocalizedParse(info.dateTimeStr, format, info.language, info.locale)\n        : isValid(obj)\n        ? obj\n        : null;\n    }\n\n    if (!info.dateStr && !info.timeStr) {\n      return null;\n    }\n\n    let input = '',\n      dateTimeFormat = '',\n      timeless = true;\n    // Construct dateTime: add date format\n    if (info.dateStr && info.dateFormat) {\n      input += info.dateStr;\n      dateTimeFormat += info.dateFormat;\n    }\n    // construct dateTime: add time format\n    if (info.timeStr && info.timeFormat) {\n      if (info.timeStr.indexOf('-') > -1) {\n        input = info.timeStr.substring(info.timeStr.indexOf(' ') + 1);\n      } else {\n        input += input ? ' ' + info.timeStr : info.timeStr;\n      }\n      dateTimeFormat += (dateTimeFormat ? ' ' : '') + info.timeFormat;\n      timeless = false;\n    }\n\n    // Parse constructed dateTime\n    if (input && dateTimeFormat) {\n      const obj = parse(input, this.fromDisplayDateTimeFormatToUnicodeTokens(dateTimeFormat), this.referenceDate);\n\n      return info.language || info.locale\n        ? this.tryLocalizedParse(input, dateTimeFormat, info.language, info.locale, timeless)\n        : isValid(obj)\n        ? obj\n        : null;\n    }\n    return null;\n  }\n\n  public tryLocalizedParse(\n    dateTime: string,\n    format: string,\n    language?: string,\n    locale?: string,\n    timeless?: boolean\n  ): Date | null {\n    if (language) {\n      // flatpickr.localize(this.getFlatpickrLocale(language));\n      let dateObj = this.flatpickrParseDate(\n        dateTime,\n        this.fromDisplayDateTimeFormatToFlatpickrFormat(format),\n        timeless,\n        language\n      );\n      if (locale && !dateObj) {\n        // flatpickr.localize(this.getFlatpickrLocale(locale));\n        dateObj = this.flatpickrParseDate(\n          dateTime,\n          this.fromDisplayDateTimeFormatToFlatpickrFormat(format),\n          timeless,\n          locale\n        );\n        // flatpickr.localize(this.getFlatpickrLocale(language)); // set UI language back\n      }\n      return dateObj ? dateObj : null;\n    }\n    return null;\n  }\n\n  public format(info: {\n    dateTimeObj: Date | null;\n    dateFormat?: string | null;\n    timeFormat?: string | null;\n    dateTimeFormat?: string;\n    language?: string;\n  }): string {\n    if (!info || !info.dateTimeObj) {\n      return '';\n    }\n\n    if (info.dateTimeFormat) {\n      if (info.dateTimeFormat.indexOf('s') === -1) {\n        info.dateTimeObj.setSeconds(0);\n      }\n      return info.language\n        ? this.flatpickrFormatDate(\n            info.dateTimeObj,\n            this.fromDisplayDateTimeFormatToFlatpickrFormat(info.dateTimeFormat),\n            info.language\n          )\n        : format(info.dateTimeObj, info.dateTimeFormat);\n    }\n\n    let dateTimeFormat = '';\n    if (info.dateFormat) {\n      dateTimeFormat += info.dateFormat;\n    }\n    if (info.timeFormat) {\n      dateTimeFormat += (dateTimeFormat ? ' ' : '') + info.timeFormat;\n      if (info.timeFormat.indexOf('s') === -1) {\n        info.dateTimeObj.setSeconds(0);\n      }\n    }\n    return dateTimeFormat\n      ? info.language\n        ? this.flatpickrFormatDate(\n            info.dateTimeObj,\n            this.fromDisplayDateTimeFormatToFlatpickrFormat(dateTimeFormat),\n            info.language\n          )\n        : format(info.dateTimeObj, this.fromDisplayDateTimeFormatToUnicodeTokens(dateTimeFormat))\n      : '';\n  }\n\n  public flatpickrParseDate(\n    date: DateOption,\n    format?: string | undefined,\n    timeless?: boolean | undefined,\n    customLocaleOrLanguageStr?: CustomLocale | string\n  ): Date | undefined {\n    const customLocale: CustomLocale =\n      typeof customLocaleOrLanguageStr == 'string'\n        ? this.getFlatpickrLocale(customLocaleOrLanguageStr)\n        : customLocaleOrLanguageStr;\n    flatpickr.localize(customLocale);\n    return flatpickr.parseDate.apply(flatpickr, [date, format, timeless]);\n  }\n\n  public flatpickrFormatDate(date: Date, format: string, customLocaleOrLanguageStr?: CustomLocale | string): string {\n    const customLocale: CustomLocale =\n      typeof customLocaleOrLanguageStr == 'string'\n        ? this.getFlatpickrLocale(customLocaleOrLanguageStr)\n        : customLocaleOrLanguageStr;\n    flatpickr.localize(customLocale);\n    return flatpickr.formatDate.apply(flatpickr, [date, format]);\n  }\n\n  public isValid(date: Date): boolean {\n    return isValid(date);\n  }\n  public isBefore(input1: Date, input2: Date): boolean {\n    return isBefore(input1, input2);\n  }\n  public isAfter(input1: Date, input2: Date): boolean {\n    return isAfter(input1, input2);\n  }\n  public isBetween(date: Date, start: Date, end: Date): boolean {\n    return isWithinInterval(date, { start, end });\n  }\n  public isEqual(input1: Date, input2: Date): boolean {\n    return isEqual(input1, input2);\n  }\n  public add(date: Date, duration: Duration) {\n    return add(date, duration);\n  }\n  public addDays(date: Date, amount: number): Date {\n    return addDays(date, amount);\n  }\n  public addMonths(date: Date, amount: number): Date {\n    return addMonths(date, amount);\n  }\n  public addMilliseconds(date: Date, amount: number): Date {\n    return addMilliseconds(date, amount);\n  }\n  public getMilliseconds(duration: Duration): number {\n    return milliseconds(duration);\n  }\n  public isLeapYear(date: Date): boolean {\n    return isLeapYear(date);\n  }\n  public tryParse(dateTimeStr: string, formats: string[]): Date | null {\n    let date: Date | null = null;\n    let returnedDate: Date | null = null;\n    formats.forEach((f) => {\n      if (f === 'ISO_8601') {\n        date = parseISO(dateTimeStr);\n      } else if (isMatch(dateTimeStr, this.fromDisplayDateTimeFormatToUnicodeTokens(f) || f)) {\n        date = parse(dateTimeStr, this.fromDisplayDateTimeFormatToUnicodeTokens(f) || f, this.referenceDate);\n      }\n      if (date && isValid(date)) {\n        returnedDate = date;\n      }\n    });\n    return returnedDate;\n  }\n  public createDateTimeWithOffset(tzOffset: number, date?: Date): Date {\n    const d: Date = date ? date : new Date();\n    const offset: number = d.getTimezoneOffset();\n    if (tzOffset !== offset) {\n      d.setTime(d.getTime() + (offset - tzOffset) * 60000);\n    }\n    return d;\n  }\n  public startOfDay(date: Date): Date {\n    return startOfDay(date);\n  }\n  public endOfMonth(date: Date): Date {\n    return endOfMonth(date);\n  }\n\n  public getISOWeek(date: Date): number {\n    return getISOWeek(date);\n  }\n  public differenceInYears(endDate: Date, startDate: Date) {\n    return differenceInYears(endDate, startDate);\n  }\n  public differenceInMonths(endDate: Date, startDate: Date) {\n    return differenceInMonths(endDate, startDate);\n  }\n  public differenceInDays(endDate: Date, startDate: Date) {\n    return differenceInDays(endDate, startDate);\n  }\n\n  //-----------------\n  createDateTimeObject(\n    dateStr: string | undefined | null,\n    dateFormat: string | undefined | null,\n    timeStr?: string | null,\n    timeFormat?: string\n  ): Date | null {\n    return this.parse({ dateStr, dateFormat, timeStr, timeFormat });\n  }\n\n  generateDateTimeData(\n    dateStr: string | null,\n    dateFormat: string | null | undefined,\n    dateTimeObj?: Date | null,\n    timeStr?: string | null,\n    timeFormat?: string | null\n  ): StateDataDateTime {\n    const result = { dateStr: '', timeStr: '', dateTimeObj };\n    if (dateStr) {\n      result.dateStr = dateTimeObj ? this.format({ dateTimeObj, dateFormat }) : dateStr;\n    }\n    if (timeStr) {\n      result.timeStr = dateTimeObj ? this.format({ dateTimeObj, timeFormat }) : timeStr;\n    }\n    return result;\n  }\n  public createDataForDateTime(\n    dataValue: string | null,\n    settings: UniComponentSettings,\n    config: UniComponentConfig,\n    format?: string | null,\n    defaultDateFormat?: string,\n    defaultTimeFormat?: string\n  ): StateDataDateTime {\n    const fromDefault: boolean = typeof dataValue === 'string';\n    if (fromDefault) {\n      // TO-REFACTOR:\n      const { dateFormat, timeFormat, showTime, useCurrentDate, defaultDate, defaultTimeOfDate } = settings;\n      let dateStr,\n        timeStr = '';\n      if (useCurrentDate) {\n        // format using config.language\n        const dateTimeObj = new Date();\n        return {\n          dateStr: this.format({ dateTimeObj, dateFormat, language: config.language }),\n          timeStr: showTime ? this.format({ dateTimeObj, timeFormat, language: config.language }) : '',\n          dateTimeObj,\n        };\n      } else {\n        // parse using config.defaultDateLanguage\n        const dateTimeObj = this.parse({\n          dateStr: defaultDate,\n          dateFormat: defaultDateFormat,\n          timeStr: defaultTimeOfDate,\n          timeFormat: defaultTimeFormat,\n          language: config.defaultDateLanguage,\n          locale: config.defaultDateLocale,\n        });\n\n        // format using current language\n        dateStr = settings.defaultDate\n          ? this.format({\n              dateTimeObj,\n              dateFormat,\n              language: config.language,\n            })\n          : '';\n        timeStr = settings.defaultTimeOfDate\n          ? this.format({\n              dateTimeObj: dateTimeObj,\n              timeFormat,\n              language: config.language,\n            })\n          : '';\n\n        return {\n          dateStr,\n          timeStr,\n          dateTimeObj,\n        };\n      }\n    } else {\n      // parse using current language\n      const dateTimeObj = this.parse({\n        dateTimeStr: dataValue,\n        dateTimeFormat: format\n          ? format\n          : settings.showTime\n          ? `${settings.dateFormat} ${settings.timeFormat}`\n          : settings.dateFormat,\n        language: config.language,\n        locale: config.locale,\n      });\n\n      // format using current language\n      return dateTimeObj\n        ? {\n            dateStr: this.format({\n              dateTimeObj,\n              dateFormat: settings.dateFormat,\n              language: config.language,\n            }),\n            timeStr: settings.showTime\n              ? this.format({\n                  dateTimeObj,\n                  timeFormat: settings.timeFormat,\n                  language: config.language,\n                })\n              : '',\n            dateTimeObj,\n          }\n        : { dateStr: '', timeStr: '', dateTimeObj: null };\n    }\n  }\n\n  public generateGUID(): string {\n    // Creating fake (but still pretty good) guid based on date\n    let d = new Date().getTime();\n    if (window.performance && typeof window.performance.now === 'function') {\n      d += window.performance.now(); //use high-precision timer if available\n    }\n    const uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n      const randomValues = new Uint8Array(1);\n      window.crypto.getRandomValues(randomValues);\n      const r = (d + (randomValues[0] % 16)) % 16 | 0;\n      d = Math.floor(d / 16);\n      return (c === 'x' ? r : (r & 0x3) | 0x8).toString(16);\n    });\n    return uuid;\n  }\n\n  //----\n\n  public getSupportedLanguages() {\n    return this.supportedLanguages; // Add other supported/enabled languages here\n  }\n\n  public getDefaultSettings(): UniComponentSettings {\n    return {\n      // Input\n      required: false, // * Common setting\n      readOnly: false, // * Common setting\n      fieldId: '',\n      label: '',\n      showLabel: true,\n\n      // Options\n      showTime: false, // * Common setting\n      showTimeOnly: false, // * Common setting\n      combinedDateTime: false,\n\n      // Data\n      acceptTokens: false, // * Common setting, default = false\n      defaultDate: '', // * Common setting\n      defaultTimeOfDate: '', // * Common setting\n      dateFormat: 'YYYY-MM-DD', // * Common setting\n      timeFormat: 'hh:mm:ss A', // * Common setting\n      useCurrentDate: false, // * Common setting\n      useCurrentTime: false, // * Common setting\n      datePlaceholder: 'YYYY-MM-DD',\n      timePlaceholder: 'hh:mm:ss A',\n\n      // ReadOnly\n      isAMPM: true, // auto set\n      isTwentyfour: false, // auto set\n      capturedInBackend: false,\n\n      // Style and Display\n      minWidth: 440,\n      minHeight: 26,\n      padding: 0,\n\n      // Validation\n      min: '', // Revise\n      max: '', // Revise\n      customErrorMessages: {},\n      errorTokens: [\n        { value: '{_field_label}', settingName: 'label' },\n        { value: '{_max}', settingName: 'max' },\n        { value: '{_min}', settingName: 'min' },\n      ],\n    };\n  }\n\n  public getDefaultConfig(): UniComponentConfig {\n    return {\n      // Input\n      fieldIdPrefix: 'DATE_TIME',\n      isDisplayOnly: false, // * Common setting\n      silent: false,\n\n      // Data\n      defaultDateFormat: 'YYYY-MM-DD',\n      defaultTimeFormat: 'hh:mm:ss A',\n      defaultDateTimeFormat: 'YYYY-MM-DD hh:mm:ss A',\n      storedValueDateFormat: 'YYYY-MM-DD',\n      storedValueTimeFormat: 'hh:mm:ss A',\n      storedValueDateTimeFormat: '{DATE}T{TIME}',\n      tokensPatternRegex: '{/[^{}]+}', // Forms style tokens, or %\\([^\\(\\)]+\\) for Workflow style tokens\n\n      // Globalization\n      locale: 'en-US', // * Common setting\n      language: 'en', // * Common setting\n      setDisplayFormatByLocale: false, // * Common setting\n      setDisplayFormatByLocaleSeconds: true,\n      defaultDateLocale: 'en-US',\n      defaultDateLanguage: 'en',\n      storedValueLanguage: 'en',\n      storedValueLocale: 'en-US',\n\n      // Validation\n      errorsPriorityOrder: [\n        { errorType: 'required', mappedErrorType: 'required' },\n        { errorType: 'invalidformat', mappedErrorType: 'invalidformat' },\n        { errorType: 'min', mappedErrorType: 'range' },\n        { errorType: 'max', mappedErrorType: 'range' },\n        { errorType: 'range', mappedErrorType: 'range' },\n      ],\n    };\n  }\n\n  public getDefaultStrings(silent?: boolean) {\n    if (!silent) {\n      return {\n        dateTimeCapturedInBackend: 'Date/Time is captured on submission',\n        dateCapturedInBackend: 'Date is captured on submission',\n        timeCapturedInBackend: 'Time is captured on submission',\n        currentDate: 'Current Date',\n        selectDate: 'Select date',\n        currentTime: 'Current Time',\n        selectTime: 'Select time',\n      };\n    } else {\n      return {\n        dateTimeCapturedInBackend: '',\n        dateCapturedInBackend: '',\n        timeCapturedInBackend: '',\n        currentDate: '',\n        selectDate: '',\n        currentTime: '',\n        selectTime: '',\n      };\n    }\n  }\n\n  private fixLocaleCase = function (locale: string, extractLanguageOnly: boolean = false): string {\n    locale = locale.toLowerCase();\n\n    const parts = locale.split('-');\n    if (extractLanguageOnly) {\n      return parts.length == 2 && parts[1] != 'hans' && parts[1] != 'hant'\n        ? parts[0]\n        : parts.length == 3\n        ? parts[0] + '-' + parts[1].substring(0, 1).toUpperCase() + parts[1].substring(1)\n        : locale;\n    } else {\n      return parts.length == 1\n        ? locale\n        : parts.length == 2 && parts[1] != 'hans' && parts[1] != 'hant'\n        ? parts[0] + '-' + parts[1].toUpperCase()\n        : parts.length == 3\n        ? parts[0] + '-' + parts[1].substring(0, 1).toUpperCase() + parts[1].substring(1) + '-' + parts[2].toUpperCase()\n        : 'hans' || parts[1] != 'hant'\n        ? parts[0] + '-' + parts[1].substring(0, 1).toUpperCase() + parts[1].substring(1)\n        : locale;\n    }\n  };\n\n  public getFormatByLocale(locale: string | undefined, formatType: FormatType, withSeconds: boolean = false): string {\n    if (!locale) {\n      locale = 'en-US';\n    }\n    locale = this.fixLocaleCase(locale);\n    const localizedFormats = uniLocalizedFormats[locale] ? uniLocalizedFormats[locale] : uniLocalizedFormats['en-US'];\n    switch (formatType) {\n      case FormatType.DATE_FORMAT:\n        return localizedFormats['DateFormat'];\n      case FormatType.TIME_FORMAT:\n        return withSeconds ? localizedFormats['TimeFormatWithSeconds'] : localizedFormats['TimeFormat'];\n      case FormatType.DATETIME_FORMAT:\n        return withSeconds\n          ? localizedFormats['DateFormat'] + ' ' + localizedFormats['TimeFormatWithSeconds']\n          : localizedFormats['DateFormat'] + ' ' + localizedFormats['TimeFormat'];\n    }\n  }\n\n  public applyLocaleCorrections(language: string, locale: any) {\n    locale.amPM = locale.amPM ? locale.amPM : FlatpickrLocales?.en?.amPM;\n    // Add other corrections if any\n    return locale;\n  }\n\n  public getFlatpickrLocale(localeString: string): any {\n    const language = this.fixLocaleCase(localeString, true);\n    switch (language) {\n      case 'ar':\n        return this.applyLocaleCorrections(language, FlatpickrLocales.ar);\n      case 'es':\n        return this.applyLocaleCorrections(language, FlatpickrLocales.es);\n      case 'fr':\n        return this.applyLocaleCorrections(language, FlatpickrLocales.fr);\n      case 'pt':\n        return this.applyLocaleCorrections(language, FlatpickrLocales.pt);\n      case 'zh-hans':\n        return this.applyLocaleCorrections(language, FlatpickrLocales.zhHans);\n      case 'zh-hant':\n        return this.applyLocaleCorrections(language, FlatpickrLocales.zhHant);\n      case 'en':\n      default:\n        return FlatpickrLocales.en;\n    }\n  }\n\n  public formatDateTimeForStoredValue(\n    dateTime: Date | undefined | null,\n    dateStr: string | undefined | null,\n    timeStr: string | undefined | null,\n    config: UniComponentConfig,\n    combinedDateTime: boolean | undefined\n  ): string | undefined | null {\n    const storedValueDateFormat = config.storedValueDateFormat\n      ? config.storedValueDateFormat\n      : this.getFormatByLocale(config.storedValueLocale, FormatType.DATE_FORMAT, true);\n    const storedValueTimeFormat = config.storedValueTimeFormat\n      ? config.storedValueTimeFormat\n      : this.getFormatByLocale(config.storedValueLocale, FormatType.TIME_FORMAT, true);\n    const flatpickrLocale: any = config.storedValueLanguage\n      ? this.getFlatpickrLocale(config.storedValueLanguage)\n      : undefined;\n    if (this.isToken(dateStr) || this.isToken(timeStr)) {\n      if (!this.isToken(dateStr) && dateTime) {\n        dateStr = this.flatpickrFormatDate(\n          dateTime,\n          this.fromDisplayDateTimeFormatToFlatpickrFormat(storedValueDateFormat),\n          flatpickrLocale\n        );\n      }\n      if (!this.isToken(timeStr) && !combinedDateTime && dateTime) {\n        timeStr = this.flatpickrFormatDate(\n          dateTime,\n          this.fromDisplayDateTimeFormatToFlatpickrFormat(storedValueTimeFormat),\n          flatpickrLocale\n        );\n      }\n\n      if (combinedDateTime && !timeStr) {\n        return dateStr;\n      } else {\n        return config.storedValueDateTimeFormat\n          ? config.storedValueDateTimeFormat\n              .replace('{DATE}', dateStr ? dateStr : '')\n              .replace('{TIME}', timeStr ? timeStr : '')\n          : dateStr + ' ' + timeStr; // default to \"{DATE} {TIME}\" for backend if tokens are present\n      }\n    } else {\n      if (!dateTime) {\n        return '';\n      }\n      const storedValueFormat = config.storedValueDateTimeFormat\n        ? config.storedValueDateTimeFormat\n            .replace('{DATE}', storedValueDateFormat)\n            .replace('{TIME}', storedValueTimeFormat)\n        : this.getFormatByLocale(config.storedValueLocale, FormatType.DATETIME_FORMAT, true);\n      return this.flatpickrFormatDate(\n        dateTime,\n        this.fromDisplayDateTimeFormatToFlatpickrFormat(storedValueFormat),\n        flatpickrLocale\n      );\n    }\n  }\n\n  public setTokensPatternRegex(newPatternRegex: string) {\n    this.TokensPatternRegex = newPatternRegex;\n    (window as { [key: string]: any })['TokenPatternRegex'] = newPatternRegex;\n  }\n\n  public isToken(value: string | null | undefined) {\n    const tokenRegex: RegExp = new RegExp(this.TokensPatternRegex, 'g');\n    return value && tokenRegex.test(value);\n  }\n\n  public removeTokens(value: string) {\n    const tokenRegex: RegExp = new RegExp(this.TokensPatternRegex, 'g');\n    return value.replace(tokenRegex, '');\n  }\n\n  public hasTimeFormat(format: string) {\n    return format.indexOf('G') == -1 && format.indexOf('H') == -1 && format.indexOf('h') == -1;\n  }\n}\n","// Copyright Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport { Plugin } from \"flatpickr/dist/types/options\";\nimport { Instance } from \"flatpickr/dist/types/instance\";\nimport { UniDateTimeService } from \"./uni-date-time.service\";\n\nvar dateTimeService = new UniDateTimeService;\n\nexport function LFTimePickerPlugin(): Plugin {\n\treturn function (fp: Instance) {\n    const flatpickerKey: keyof typeof window = 'flatpickr' as keyof typeof window;\n\t\tfp.config.parseDate = function (date: string, format: string, locale?: any) {\n\t\t\tif (!dateTimeService.isToken(date)) {\n        const dateFormat = dateTimeService.fromDisplayDateTimeFormatToFlatpickrFormat(format, true);\n        try {\n          /*\n\t\t\t\t\tif (isCustomFormat(fp.config.dateFormat)) {\n\t\t\t\t\t\tdateFormat = format === \"H:mm:ss\" ? \"H:i:S\" : \"H:i\";\n          }\n          */\n          locale = locale ? locale : fp.config.locale;\n\t\t\t\t\treturn window[flatpickerKey].parseDate(date, dateFormat, false, locale);\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn new Date();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn new Date();\n\t\t\t}\n\t\t};\n\t\tfp.config.formatDate = function (date: Date, format: string, locale?: any) {\n\t\t\tif (!dateTimeService.isToken(fp.input?.value)) {\n        try {\n          locale = locale ? locale : fp.config.locale;\n\t\t\t\t\t// if (isCustomFormat(fp.config.dateFormat)) {\n            const time = window[flatpickerKey].formatDate(date, dateTimeService.fromDisplayDateTimeFormatToFlatpickrFormat(format, true), locale);\n\t\t\t\t\t\treturn time.replace(/^0?/, \"\");  // Not sure why? Revise\n\t\t\t\t\t// }\n\t\t\t\t\t// else {\n\t\t\t\t\t//\treturn window[\"flatpickr\"].formatDate(date, format, locale);\n\t\t\t\t\t//}\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn fp.input.value;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn fp.input.value;\n\t\t\t}\n    };\n\n\t\t// force onChange event listener on time field when value is programtically changed with flatpickr\n    // This may be specific to forms-layout // Revise\n\t\tfp.config.onValueUpdate.push(function () {\n\t\t\tif (!fp.calendarContainer.classList.contains(\"open\")) {\n\t\t\t\tconst parsedDate = fp.parseDate(parseTimeFromPicker(fp), fp.config.dateFormat); // Revise\n\t\t\t\tfp.input.value = window[flatpickerKey].formatDate(parsedDate, fp.config.dateFormat, fp.config.locale);\n\t\t\t\tconst timeField = fp.input?.parentElement?.parentElement;\n\t\t\t\tif (timeField) {\n\t\t\t\t\tconst event = new Event(\"change\");\n\t\t\t\t\ttimeField.dispatchEvent(event);\n\t\t\t\t}\n\t\t\t}\n    });\n\n\t\tfunction handleMouseDown(e: any) {\n\t\t\tif (e.target !== fp.input && !fp.timeContainer?.contains(e.target)) {\n\t\t\t\tlet value = fp.input.value;\n\t\t\t\tif (fp.timeContainer?.contains(document.activeElement)) {\n\t\t\t\t\tvalue = parseTimeFromPicker(fp);\n\t\t\t\t}\n\t\t\t\tfp.setDate(value);\n\t\t\t\tfp.close();\n\t\t\t}\n\t\t}\n\n\t\tfunction handleKeyDown(e: any) {\n\t\t\tif (e.key === \"Tab\" && document.activeElement === fp.input) {\n\t\t\t\tfp.setDate(fp.input.value);\n\t\t\t\tfp.close();\n\t\t\t}\n\t\t}\n\n\t\tfunction getRidOffNumTooltip() {\n\t\t\tfp.minuteElement?.setAttribute(\"title\", \"\");\n\t\t\tfp.secondElement?.setAttribute(\"title\", \"\");\n\t\t}\n\n\t\treturn {\n\t\t\tonOpen() {\n\t\t\t\tgetRidOffNumTooltip();\n\t\t\t\tdocument.addEventListener(\"mousedown\", handleMouseDown, { capture: true });\n\t\t\t\tdocument.addEventListener(\"keydown\", handleKeyDown, { capture: true });\n\t\t\t},\n\t\t\tonClose() {\n\t\t\t\tdocument.removeEventListener(\"mousedown\", handleMouseDown, { capture: true });\n\t\t\t\tdocument.removeEventListener(\"keydown\", handleKeyDown, { capture: true });\n\t\t\t}\n\t\t};\n\t};\n}\n\nfunction parseTimeFromPicker(fp: Instance): string {\n  let value;\n  if (fp.amPM && fp.amPM.innerText) {\n    value = formatTime12HourTo24Hour(fp);\n  }\n  else{\n    value = fp.hourElement?.value + ':' + fp.minuteElement?.value;\n    if (fp.config.enableSeconds) {\n      value += ':' + fp.secondElement?.value;\n    }\n  }\n  return value;\n}\n\nfunction formatTime12HourTo24Hour(fp: Instance): string {\n  const localeSet = fp.config.locale as any;\n  const localizedAM = localeSet.amPM ? (localeSet.amPM[0] ? localeSet.amPM[0] : 'AM') : '';\n  const localizedPM = localeSet.amPM ? (localeSet.amPM[1] ? localeSet.amPM[1] : 'PM') : '';\n  let hour: number;\n  if (fp.hourElement?.value)\n  {\n    hour = parseInt(fp.hourElement.value, 10);\n  }\n  else{\n    hour = 0;\n  }\n\n  if (fp.amPM?.innerText === localizedPM && hour !== 12) {\n    hour += 12;\n  } else if (fp.amPM?.innerText === localizedAM && hour === 12) {\n    hour = 0;\n  }\n  let value: string = hour + ':' + fp.minuteElement?.value;\n  if (fp.config.enableSeconds) {\n    value += ':' + fp.secondElement?.value;\n  }\n  return value;\n}\n\n/*\nfunction isCustomFormat(dateFormat: string) {\n\treturn dateFormat === \"H:mm:ss\" || dateFormat === \"H:mm\";\n}\n*/\n","// Copyright Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport { Plugin } from 'flatpickr/dist/types/options';\nimport { Instance } from 'flatpickr/dist/types/instance';\nimport { UniDateTimeService } from './uni-date-time.service';\n\nvar dateTimeService = new UniDateTimeService();\n\nexport function LFDatePickerPlugin(): Plugin {\n  return function (fp: Instance) {\n    const flatpickerKey: keyof typeof window = 'flatpickr' as keyof typeof window;\n    fp.config.parseDate = function (date: string, format: string, locale?: any) {\n      if (!dateTimeService.isToken(date)) {\n        const dateFormat = dateTimeService.fromDisplayDateTimeFormatToFlatpickrFormat(format, true);\n        try {\n          locale = locale ? locale : fp.config.locale;\n          const timeless = dateTimeService.hasTimeFormat(dateFormat);\n          if (flatpickerKey in window) {\n            return window[flatpickerKey].parseDate(date, dateFormat, timeless, locale);\n          } else {\n            return new Date();\n          }\n        } catch (e) {\n          return new Date();\n        }\n      } else {\n        return new Date();\n      }\n    };\n    fp.config.formatDate = function (date: Date, format: string, locale?: any) {\n      if (!dateTimeService.isToken(fp.input?.value)) {\n        try {\n          locale = locale ? locale : fp.config.locale;\n          return window[flatpickerKey].formatDate(date, format, locale);\n        } catch (e) {\n          return fp.input.value;\n        }\n      } else {\n        return fp.input.value;\n      }\n    };\n    function dateHandleMouseDown(event: any) {\n      if (event.target !== fp.input && !fp.calendarContainer.contains(event.target)) {\n        const value = fp.input.value;\n        fp.setDate(value);\n        fp.close();\n      } else if (dateTimeService.isToken(fp.input?.value) && event.target.dateObj) {\n        //if token, replace input with selected date value\n        fp.input.value = window[flatpickerKey].formatDate(event.target.dateObj, fp.config.dateFormat, fp.config.locale);\n      }\n    }\n\n    return {\n      onOpen() {\n        document.addEventListener('mousedown', dateHandleMouseDown, { capture: true });\n      },\n      onClose() {\n        document.removeEventListener('mousedown', dateHandleMouseDown, { capture: true });\n      },\n    };\n  };\n}\n","// Copyright Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\n// Core and essentials\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  OnInit,\n  AfterViewInit,\n  HostBinding,\n  Input,\n  AfterContentInit,\n  EventEmitter,\n  Output,\n} from '@angular/core';\nimport forEach from 'lodash/forEach';\nimport isNil from 'lodash/isNil';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { FormGroup, FormControl, AbstractControl } from '@angular/forms';\n\n// Component dependencies\nimport {\n  StateData,\n  UniState,\n  StateDataDateTime,\n  StateDataTime,\n  UniControlType,\n  UniComponentSettings,\n  UniComponentConfig,\n  FormChangeEvent,\n  FormChangeSource,\n  FormatType,\n} from './uni-date-time.common';\nimport { UniDateTimeService } from './uni-date-time.service';\n\n// Flaticker\nimport flatpickr from 'flatpickr';\nimport { Instance } from 'flatpickr/dist/types/instance';\nimport { LFTimePickerPlugin } from './plugin-lfTimePicker';\nimport { LFDatePickerPlugin } from './plugin-lfDatePicker';\n\n@Component({\n  selector: 'lf-uni-date-time',\n  templateUrl: './uni-date-time.component.html',\n  styleUrls: ['./uni-date-time.component.less'],\n})\nexport class UniDateTimeComponent implements OnInit, AfterViewInit, AfterContentInit {\n  @HostBinding('class.required') isRequired = false;\n  @HostBinding('class.readonly') isReadonly = false;\n  @HostBinding('class.disabled') isDisabled = false;\n\n  @Input() config!: UniComponentConfig;\n  @Input() settings!: UniComponentSettings;\n  @Input() customStrings?: {\n    // Revise\n    dateTimeCapturedInBackend?: string; // if useBackendDateTimeForCurrentDateTime=true, useCurrentDate: true, readOnly: true, showTime: true\n    dateCapturedInBackend?: string; // if useBackendDateTimeForCurrentDateTime=true, useCurrentDate: true, readOnly: true\n    timeCapturedInBackend?: string; // if useBackendDateTimeForCurrentDateTime=true, useCurrentTime: true, readOnly: true, showTimeOnly: true\n    currentDate?: string; // if useCurrentDate: true, readOnly: true, isDisplayOnly: true\n    selectDate?: string; // Date Icon tool tip\n    currentTime?: string; // if useCurrentTime: true, readOnly: true, isDisplayOnly: true\n    selectTime?: string; // Time Icon tool tip\n  };\n\n  // Copied from base\n  @Input() componentId?: string;\n  @Input() abstractControl?: AbstractControl;\n  @Input() dateControlName?: string;\n  @Input() timeControlName?: string;\n  @Input() dateTimeControlName?: string;\n\n  // Events // Revise\n  @Output() valueChangedEventHandler: EventEmitter<{\n    newValue: StateData;\n    newState: UniState;\n    controlType: UniControlType;\n    source: FormChangeSource;\n    event: FormChangeEvent;\n    component: UniDateTimeComponent;\n  }> = new EventEmitter();\n  @Output() blurEventHandler: EventEmitter<{\n    state: UniState;\n    source: FormChangeSource;\n    event: FormChangeEvent;\n    component: UniDateTimeComponent;\n  }> = new EventEmitter();\n  @Output() dateIconClickEventHandler: EventEmitter<{\n    state: UniState;\n    event: FormChangeEvent;\n    component: UniDateTimeComponent;\n  }> = new EventEmitter();\n  @Output() timeIconClickEventHandler: EventEmitter<{\n    state: UniState;\n    event: FormChangeEvent;\n    component: UniDateTimeComponent;\n  }> = new EventEmitter();\n\n  // Revise\n  state: UniState = {\n    data: {\n      dateStr: null,\n      timeStr: null,\n      dateTimeObj: null,\n    },\n    readonly: false,\n    disabled: false,\n    settings: {},\n  };\n\n  errorMessage = '';\n  customErrorMessages: { [errorType: string]: string } = {};\n\n  strings?: {\n    dateTimeCapturedInBackend?: string;\n    dateCapturedInBackend?: string;\n    timeCapturedInBackend?: string;\n    currentDate?: string;\n    selectDate?: string;\n    currentTime?: string;\n    selectTime?: string;\n  };\n\n  showLoadingSpinner = false;\n\n  date?: Instance;\n  time?: Instance;\n  defaultDateFormat: string = 'YYYY-MM-DD';\n  defaultTimeFormat: string = 'hh:mm:ss A';\n  defaultDateTimeFormat: string = 'YYYY-MM-DD hh:mm:ss A';\n\n  dateControl?: FormControl<string | null>;\n  timeControl?: FormControl<string | null>;\n  dateTimeControl?: FormControl<string | null>;\n  controls: {\n    date?: FormControl<string | null>;\n    time?: FormControl<string | null>;\n    dateTime?: FormControl<string | null>;\n  } = {};\n  errorMessages?: { date?: string; time?: string; dateTime?: string }; // Revise\n  showDateTimeErrorMessage = false; // Revise\n  prevSettings!: UniComponentSettings;\n  useBackendDateTimeForCurrentDateTime = false;\n  minDateTime?: Date;\n  minDateTimeStr?: string;\n  minTime?: string; // HH:mm\n  maxDateTime?: Date;\n  maxDateTimeStr?: string;\n  maxTime?: string; // HH:mm\n\n  @ViewChild('dateDiv') dateDiv!: ElementRef;\n  @ViewChild('timedateDiv') timedateDiv!: ElementRef;\n  @ViewChild('dateTimeInput') dateTimeInput?: ElementRef;\n  supportedLanguage = 'en';\n\n  constructor(public dateTimeService: UniDateTimeService) {}\n\n  ngOnInit() {\n    this.populateConfig();\n    this.populateStrings();\n    this.populateSettings();\n    this.state.settings = this.settings;\n\n    if (!this.config.isDisplayOnly) {\n      this.customErrorMessages = this.settings.customErrorMessages; // revise\n    } else {\n      const dateTimeData = this.dateTimeService.createDataForDateTime(\n        null,\n        this.settings,\n        this.config,\n        null,\n        this.defaultDateFormat,\n        this.defaultTimeFormat\n      );\n      const dateStr =\n        dateTimeData.dateStr !== ''\n          ? dateTimeData.dateStr\n          : this.settings.defaultDate\n          ? this.settings.defaultDate\n          : null;\n      const timeStr = dateTimeData.timeStr !== '' ? dateTimeData.timeStr : this.settings.defaultTimeOfDate;\n      this.dateControl?.setValue(dateStr ?? null);\n      this.timeControl?.setValue(timeStr ?? null);\n      const formattedDateTime = this.dateTimeService.formatDateTimeForStoredValue(\n        dateTimeData.dateTimeObj,\n        dateStr,\n        timeStr,\n        this.config,\n        this.settings.combinedDateTime\n      );\n      this.dateTimeControl?.setValue(formattedDateTime ? formattedDateTime : null);\n    }\n  }\n\n  ngAfterViewInit() {\n    if (!this.config.isDisplayOnly && !this.state.readonly) {\n      this.localize(); // Also sets this.supportedLanguage\n\n      //-- Setting up date\n      let defaultDateToSet = '';\n      if (this.settings.useCurrentDate) {\n        defaultDateToSet = 'today';\n      } else if (this.settings.defaultDate) {\n        // Parse defaultDateformat using defaultDate language\n        defaultDateToSet = this.settings.defaultDate;\n        const parsedDefaultDate = this.dateTimeService.parse({\n          dateStr: defaultDateToSet,\n          dateFormat: this.config.defaultDateFormat,\n          language: this.config.defaultDateLanguage,\n        });\n        // Format using current language\n        defaultDateToSet = parsedDefaultDate\n          ? this.dateTimeService.format({\n              dateTimeObj: parsedDefaultDate,\n              dateFormat: this.settings.dateFormat,\n              language: this.config.language,\n            })\n          : defaultDateToSet;\n      }\n      const dateTimeData = this.state.data as StateDataDateTime;\n\n      //-- Setting up time\n      let defaultTimeToSet = '';\n      this.prevSettings.showTime = this.settings.showTime;\n      this.prevSettings.timeFormat = this.settings.timeFormat;\n\n      if (this.settings.useCurrentTime) {\n        if (!this.config.isDisplayOnly) {\n          // format using current language\n          defaultTimeToSet = this.dateTimeService.format({\n            dateTimeObj: new Date(),\n            timeFormat: this.settings.timeFormat,\n            language: this.config.language,\n          });\n        }\n      } else if (this.settings.defaultTimeOfDate) {\n        // format using current language\n        defaultTimeToSet = this.dateTimeService.format({\n          // Parse using defaultDate language\n          dateTimeObj: this.dateTimeService.parse({\n            timeStr: this.settings.defaultTimeOfDate,\n            timeFormat: this.defaultTimeFormat,\n            language: this.config.defaultDateLanguage,\n          }),\n          timeFormat: this.settings.timeFormat,\n          language: this.config.language,\n        });\n      }\n      const timeData = this.state.data as StateDataTime;\n      const defaultDate = isNil(dateTimeData?.dateStr) ? defaultDateToSet : dateTimeData.dateStr;\n      const defaultTime = isNil(timeData?.timeStr) ? defaultTimeToSet : timeData?.timeStr;\n      const timeFormatContainsSecond: boolean =\n        !!this.settings.timeFormat && this.settings.timeFormat.indexOf('s') > -1;\n      const timeFormatContainsHour: boolean = !!this.settings.timeFormat && this.settings.timeFormat.indexOf('H') > -1;\n      //-- Setting up flatpickr elements\n      if (!this.settings.showTimeOnly && this.dateDiv.nativeElement) {\n        this.date = flatpickr(this.dateDiv.nativeElement, {\n          locale: this.dateTimeService.getFlatpickrLocale(this.supportedLanguage),\n\n          enableTime: this.settings.combinedDateTime, // if combined\n          enableSeconds: this.settings.combinedDateTime && timeFormatContainsSecond,\n          time_24hr: this.settings.combinedDateTime && timeFormatContainsHour,\n\n          allowInput: true,\n          allowInvalidPreload: true,\n          dateFormat: this.dateTimeService.fromDisplayDateTimeFormatToFlatpickrFormat(\n            this.settings.dateFormat + (this.settings.combinedDateTime ? ' ' + this.settings.timeFormat : '')\n          ),\n          defaultDate:\n            defaultDate +\n            (this.settings.combinedDateTime && defaultDate != 'today' && defaultTime ? ' ' + defaultTime : ''),\n          plugins: [LFDatePickerPlugin()],\n          onClose: (selectedDates: Date[], dateStr: string, instance: Instance) => {\n            setTimeout(() => {\n              this.onDateTimeChange(selectedDates[0], true, FormChangeEvent.DateClose);\n              if (this.settings.combinedDateTime) {\n                this.onDateTimeChange(selectedDates[0], true, FormChangeEvent.TimeClose);\n              }\n            }, 0);\n          },\n          onOpen: (selectedDates: Date[], dateStr: string, instance: Instance) => {\n            this.onCalendarOpen(instance);\n          },\n          onReady: (selectedDates: Date[], dateStr: string, instance: Instance) => {\n            this.addDaysContainerKeyboardHandler(selectedDates, instance);\n          },\n          wrap: true,\n          minDate: this.minDateTime,\n          maxDate: this.maxDateTime,\n        });\n      }\n\n      if (this.settings.showTime && !this.settings.combinedDateTime && this.timedateDiv.nativeElement) {\n        const flatpickrConfig = {\n          locale: this.dateTimeService.getFlatpickrLocale(this.supportedLanguage),\n          allowInput: true,\n          enableTime: true,\n          enableSeconds: timeFormatContainsSecond,\n          noCalendar: true,\n          time_24hr: timeFormatContainsHour,\n          defaultDate: defaultTime,\n          plugins: [LFTimePickerPlugin()],\n          onClose: (selectedDates: Date[], dateStr: string, instance: Instance) => {\n            this.onDateTimeChange(selectedDates[0], false, FormChangeEvent.TimeClose);\n          },\n          onOpen: (selectedDates: Date[], dateStr: string, instance: Instance) => {\n            this.onCalendarOpen(instance);\n          },\n          dateFormat: this.dateTimeService.fromDisplayDateTimeFormatToFlatpickrFormat(this.settings.timeFormat ?? ''),\n          wrap: true,\n          minTime: this.minTime,\n          maxTime: this.maxTime,\n        };\n\n        this.time = flatpickr(this.timedateDiv.nativeElement, flatpickrConfig);\n      }\n\n      // Update stored value\n      setTimeout(() => {\n        if (this.date) {\n          this.dateControl?.setValue(this.date.input.value);\n        }\n        if (this.time) {\n          this.timeControl?.setValue(this.time.input.value);\n        }\n        if (!this.settings.showTimeOnly) {\n          this.processDateTimeValues(this.date?.input.value, true);\n        } else {\n          this.processDateTimeValues(this.time?.input.value, false);\n        }\n        this.state.readonly = this.settings.readOnly; // Revise\n        this.isReadonly = this.settings.readOnly ? this.settings.readOnly : this.isReadonly;\n        this.isRequired = this.settings.required ? this.settings.required : this.isRequired;\n      }, 0);\n    }\n  }\n\n  private onCalendarOpen(instance: Instance): void {\n    setTimeout(() => {\n      if (instance.daysContainer) {\n        instance.monthElements[0].focus();\n      } else if (instance.timeContainer) {\n        instance.hourElement?.focus();\n      } else {\n        instance.input.focus();\n      }\n    }, 0);\n  }\n\n  private addDaysContainerKeyboardHandler(selectedDates: Date[], instance: Instance) {\n    instance.calendarContainer?.addEventListener('keydown', function (event) {\n      var currentDate = selectedDates[0] || instance.selectedDates[0] || new Date();\n      if (event.target === instance.monthElements[0]) {\n        monthsKeyDownHandler(currentDate, instance, event);\n      } else if (event.target === instance.daysContainer) {\n        daysContainerKeyDownHandler(currentDate, instance, event);\n      } else if (instance.hourElement && event.target === instance.hourElement) {\n        handleTabKeyPress(event, instance.daysContainer, instance.minuteElement);\n      } else if (instance.minuteElement && event.target === instance.minuteElement) {\n        handleTabKeyPress(event, instance.hourElement, instance.secondElement);\n      } else if (instance.secondElement && event.target === instance.secondElement) {\n        handleTabKeyPress(event, instance.minuteElement, instance.amPM);\n      } else if (instance.amPM && event.target === instance.amPM) {\n        handleTabKeyPress(event, instance.secondElement, instance.input);\n        if (event.key === 'Tab') {\n          instance.close();\n        }\n      }\n    });\n\n    const closePickerWithInputFocus = function (instance: Instance) {\n      instance.input.focus();\n      instance.close();\n    };\n    const addDaysToSelect = function (instance: Instance, currentDate: Date, daysToAdd: number) {\n      currentDate.setDate(currentDate.getDate() + daysToAdd);\n      instance.setDate(currentDate);\n      instance.daysContainer?.focus();\n    };\n    const addMonthsToSelect = function (instance: Instance, currentDate: Date, monthsToAdd: number) {\n      currentDate.setMonth(currentDate.getMonth() + monthsToAdd);\n      instance.setDate(currentDate);\n      instance.monthElements[0]?.focus();\n    };\n    const daysContainerKeyDownHandler = function (currentDate: Date, instance: Instance, daysKeyEvent: any) {\n      if (daysKeyEvent.key === 'Tab') {\n        daysKeyEvent.preventDefault();\n        daysKeyEvent.stopPropagation();\n        if (daysKeyEvent.shiftKey) {\n          instance.monthElements[0]?.focus();\n        } else {\n          if (instance.hourElement) {\n            instance.hourElement.focus();\n          } else {\n            closePickerWithInputFocus(instance);\n          }\n        }\n      } else if (daysKeyEvent.key === 'ArrowLeft') {\n        daysKeyEvent.preventDefault();\n        addDaysToSelect(instance, currentDate, -1);\n      } else if (daysKeyEvent.key === 'ArrowRight') {\n        daysKeyEvent.preventDefault();\n        addDaysToSelect(instance, currentDate, 1);\n      } else if (daysKeyEvent.key === 'ArrowDown') {\n        daysKeyEvent.preventDefault();\n        addDaysToSelect(instance, currentDate, 7);\n      } else if (daysKeyEvent.key === 'ArrowUp') {\n        daysKeyEvent.preventDefault();\n        addDaysToSelect(instance, currentDate, -7);\n      } else if (daysKeyEvent.key === 'Shift') {\n        daysKeyEvent.preventDefault();\n        instance.daysContainer?.focus();\n      } else if (daysKeyEvent.key === 'Enter') {\n        daysKeyEvent.preventDefault();\n        closePickerWithInputFocus(instance);\n      }\n    };\n\n    const monthsKeyDownHandler = function (currentDate: Date, instance: Instance, monthsKeyEvent: any) {\n      if (monthsKeyEvent.key === 'Tab') {\n        monthsKeyEvent.preventDefault();\n        monthsKeyEvent.stopPropagation();\n        if (monthsKeyEvent.shiftKey) {\n          closePickerWithInputFocus(instance);\n        } else {\n          setTimeout(() => instance.daysContainer?.focus());\n        }\n      } else if (monthsKeyEvent.key === 'ArrowDown' || monthsKeyEvent.key === 'ArrowRight') {\n        monthsKeyEvent.preventDefault();\n        addMonthsToSelect(instance, currentDate, 1);\n      } else if (monthsKeyEvent.key === 'ArrowUp' || monthsKeyEvent.key === 'ArrowLeft') {\n        monthsKeyEvent.preventDefault();\n        addMonthsToSelect(instance, currentDate, -1);\n      } else if (monthsKeyEvent.key === 'Enter') {\n        monthsKeyEvent.preventDefault();\n        closePickerWithInputFocus(instance);\n      }\n    };\n\n    const handleTabKeyPress = function (\n      event: KeyboardEvent,\n      previousElement?: HTMLElement,\n      nextElement?: HTMLElement\n    ) {\n      if (event.key === 'Tab') {\n        event.preventDefault();\n        event.stopPropagation();\n        if (event.shiftKey) {\n          previousElement?.focus();\n        } else {\n          nextElement?.focus();\n        }\n      }\n    };\n  }\n\n  ngAfterContentInit() {\n    if (!this.config.isDisplayOnly) {\n      this.assignMinMaxForPicker(this.state); // Revise\n    }\n  }\n\n  private populateSettings() {\n    if (!this.settings) {\n      // Default Settings\n      this.settings = this.dateTimeService.getDefaultSettings();\n      this.prevSettings = this.settings;\n    } else {\n      if (!this.prevSettings) {\n        this.prevSettings = this.settings; // initially prevSetting = settings from input\n      }\n      this.settings = { ...this.dateTimeService.getDefaultSettings(), ...this.settings };\n    }\n\n    if (!this.componentId) {\n      this.componentId = this.dateTimeService.generateGUID(); // Revise\n    }\n\n    if (!this.settings.fieldId) {\n      this.settings.fieldId = this.config.fieldIdPrefix + this.componentId;\n    }\n\n    if (this.settings.abstractControl instanceof AbstractControl && !this.abstractControl) {\n      this.abstractControl = this.settings.abstractControl;\n      if (this.settings.dateControlName) {\n        this.dateControlName = this.settings.dateControlName;\n      }\n      if (this.settings.timeControlName) {\n        this.timeControlName = this.settings.timeControlName;\n      }\n      if (this.settings.dateTimeControlName) {\n        this.dateTimeControlName = this.settings.dateTimeControlName;\n      }\n    }\n\n    this.assignSubAbstractControl();\n    if (this.config.isDisplayOnly) {\n      this.dateControl?.disable();\n      this.timeControl?.disable();\n    }\n\n    if (this.config.setDisplayFormatByLocale == true) {\n      this.localizeFormat();\n    }\n\n    // this.state.readonly = this.settings.readOnly; // Revise\n\n    this.autoCorrectSettings();\n    this.settings.capturedInBackend =\n      (this.settings.useCurrentDate || this.settings.useCurrentTime) &&\n      this.useBackendDateTimeForCurrentDateTime &&\n      !this.state.disableUseCurrentDateTime &&\n      (this.settings.readOnly || this.state.readonly);\n  }\n\n  private autoCorrectSettings() {\n    //-- auto correct and override settings\n\n    // This is useful for Forms where field is readonly and value should be captured on submission\n    this.settings.capturedInBackend =\n      (this.settings.useCurrentDate || this.settings.useCurrentTime) &&\n      this.useBackendDateTimeForCurrentDateTime &&\n      !this.state.disableUseCurrentDateTime &&\n      ((this.config.isDisplayOnly && this.settings.readOnly) || this.state.readonly);\n\n    // showTimeOnly overrides showTime if true\n    if (this.settings.showTimeOnly) {\n      this.settings.showTime = true;\n    }\n\n    // combinedDateTime overrides showTime and showTimeOnly if true\n    if (this.settings.combinedDateTime) {\n      this.settings.showTime = true;\n      this.settings.showTimeOnly = false;\n    }\n\n    // placeholders are copied from display date/time format settings\n    if (this.settings.datePlaceholder == this.prevSettings.datePlaceholder) {\n      this.settings.datePlaceholder = this.settings.dateFormat;\n    }\n\n    if (this.settings.timePlaceholder == this.prevSettings.timePlaceholder) {\n      this.settings.timePlaceholder = this.settings.timeFormat;\n    }\n\n    if (this.settings.combinedDateTime && this.settings.datePlaceholder == 'YYYY-MM-DD') {\n      this.settings.datePlaceholder = this.settings.dateFormat + ' ' + this.settings.timeFormat;\n    }\n\n    // For information only\n    // Adjust 24h\n    if (this.settings.timeFormat && this.settings.timeFormat.indexOf('H') > -1) {\n      this.settings.isAMPM = false;\n      this.settings.isTwentyfour = true;\n    }\n  }\n\n  private populateConfig() {\n    this.config = !this.config\n      ? this.dateTimeService.getDefaultConfig()\n      : { ...this.dateTimeService.getDefaultConfig(), ...this.config };\n    if (this.config.defaultDateFormat) {\n      this.defaultDateFormat = this.config.defaultDateFormat;\n    }\n    if (this.config.defaultTimeFormat) {\n      this.defaultTimeFormat = this.config.defaultTimeFormat;\n    }\n    if (this.config.defaultDateTimeFormat) {\n      this.defaultDateTimeFormat = this.config.defaultDateTimeFormat;\n    }\n\n    if (this.config.tokensPatternRegex) {\n      this.dateTimeService.setTokensPatternRegex(this.config.tokensPatternRegex);\n    }\n\n    this.useBackendDateTimeForCurrentDateTime = this.config.useBackendDateTimeForCurrentDateTime\n      ? this.config.useBackendDateTimeForCurrentDateTime\n      : false;\n  }\n\n  public populateStrings() {\n    this.strings =\n      !this.strings || this.config.silent\n        ? this.dateTimeService.getDefaultStrings(this.config.silent)\n        : { ...this.dateTimeService.getDefaultStrings(this.config.silent), ...this.strings };\n    this.strings =\n      !this.customStrings || this.config.silent ? this.strings : { ...this.strings, ...this.customStrings };\n  }\n\n  // Revise\n  processInternalTokens(message: string, options?: { min?: string; max?: string }): string {\n    forEach(this.settings.errorTokens, (token) => {\n      const regex = new RegExp(token.value, 'g');\n      let strToReplace = '';\n      if (!this.settings.showTimeOnly) {\n        if (options && options.min && options.max) {\n          if (token.settingName === 'min') {\n            strToReplace = options.min;\n          } else if (token.settingName === 'max') {\n            strToReplace = options.max;\n          } else {\n            strToReplace = (this.settings as any)[token.settingName];\n          }\n        } else {\n          strToReplace = (this.settings as any)[token.settingName];\n        }\n      } else {\n        strToReplace = (this.settings as any)[token.settingName];\n      }\n      message = message.replace(regex, strToReplace);\n    });\n    return message;\n  }\n\n  // validate external tokens in values, remove if not accepted\n  substituteTokens(value: string, keepIfAccepted: boolean): string {\n    const isToken = this.dateTimeService.isToken(value);\n    value =\n      isToken && keepIfAccepted\n        ? this.settings.acceptTokens\n          ? value\n          : this.dateTimeService.removeTokens(value) // keep token string only if we accept tokens\n        : isToken && !keepIfAccepted\n        ? this.dateTimeService.removeTokens(value) // remove tokens if not accepted\n        : value; // keep value as-is if no tokens\n    return value ? value.trim() : '';\n  }\n  // Revise\n  onBlurWithKey(key: string) {\n    setTimeout(() => {\n      this.markAsTouched(key);\n      this.updateErrorDisplay();\n      const picker = key === 'date' ? this.date : this.time;\n      this.onDateTimeChange(\n        picker ? picker.latestSelectedDateObj : (this.state.data as StateDataDateTime).dateTimeObj,\n        key === 'date',\n        key === 'date' ? FormChangeEvent.DateBlur : FormChangeEvent.TimeBlur\n      );\n      this.blurEventHandler.emit({\n        state: this.state,\n        source: FormChangeSource.User,\n        event: key === 'date' ? FormChangeEvent.DateBlur : FormChangeEvent.TimeBlur,\n        component: this,\n      });\n    });\n  }\n\n  onIconClick(iconType: string) {\n    switch (iconType) {\n      case 'date':\n        this.dateIconClickEventHandler.emit({\n          state: this.state,\n          event: FormChangeEvent.DateIconClick,\n          component: this,\n        });\n        break;\n      case 'time':\n        this.timeIconClickEventHandler.emit({\n          state: this.state,\n          event: FormChangeEvent.TimeIconClick,\n          component: this,\n        });\n        break;\n    }\n  }\n\n  processDateTimeValues(value: string | Date | undefined | null, isDate: boolean) {\n    let v = value ? value : null;\n\n    if (this.settings.acceptTokens) {\n      if (this.config.tokensPatternRegex) {\n        this.dateTimeService.setTokensPatternRegex(this.config.tokensPatternRegex);\n      }\n      if (isDate && this.date) {\n        if (this.dateTimeService.isToken(this.date.input.value)) {\n          v = this.date.input.value;\n        }\n      } else if (this.time) {\n        if (this.dateTimeService.isToken(this.time.input.value)) {\n          v = this.time.input.value;\n        }\n      }\n    }\n\n    let result: { dateStr: string; timeStr: string; dateTimeObj: Date | undefined | null },\n      dateStr: string | undefined | null,\n      timeStr: string | undefined | null,\n      dateTimeObj: Date | undefined | null;\n    const { timeFormat, dateFormat, showTime, combinedDateTime } = this.settings;\n    const { dateStr: oldDateStr, timeStr: oldTimeStr } = this.state.data as StateDataDateTime;\n\n    if (showTime) {\n      if (typeof v === 'string') {\n        dateStr = isDate ? v : oldDateStr;\n        timeStr = isDate ? oldTimeStr : v;\n      } else {\n        // format using current language\n        dateStr = isDate\n          ? this.dateTimeService.format({ dateTimeObj: v, dateFormat, language: this.config.language })\n          : oldDateStr;\n        timeStr =\n          isDate && !combinedDateTime\n            ? oldTimeStr\n            : this.dateTimeService.format({ dateTimeObj: v, timeFormat, language: this.config.language });\n      }\n\n      if (combinedDateTime) {\n        // parse using current language\n        dateTimeObj =\n          dateStr || timeStr\n            ? this.dateTimeService.parse({\n                dateTimeStr:\n                  (dateStr ? this.substituteTokens(dateStr, false) : '') +\n                  (timeStr ? ' ' + this.substituteTokens(timeStr, false) : ''),\n                dateTimeFormat: dateFormat + (timeStr ? ' ' + timeFormat : ''),\n                language: this.config.language,\n              })\n            : null;\n      } else {\n        // parse using current language\n        dateTimeObj =\n          dateStr || timeStr\n            ? this.dateTimeService.parse({\n                dateStr: dateStr ? this.substituteTokens(dateStr, false) : '',\n                timeStr: timeStr ? this.substituteTokens(timeStr, false) : '',\n                dateFormat,\n                timeFormat,\n                language: this.config.language,\n              })\n            : null;\n      }\n\n      dateStr = dateStr ? this.substituteTokens(dateStr, true) : '';\n      timeStr = timeStr ? this.substituteTokens(timeStr, true) : '';\n      const formatDateStr = dateTimeObj && dateStr && !this.dateTimeService.isToken(dateStr);\n      const formatTimeStr =\n        combinedDateTime && this.dateTimeService.isToken(dateStr)\n          ? false\n          : dateTimeObj && timeStr && !this.dateTimeService.isToken(timeStr);\n\n      // format using current language\n      result = {\n        dateTimeObj,\n        dateStr: formatDateStr\n          ? this.dateTimeService.format({ dateTimeObj, dateFormat, language: this.config.language })\n          : this.dateTimeService.isToken(dateStr)\n          ? dateStr\n          : '',\n        timeStr: formatTimeStr\n          ? this.dateTimeService.format({ dateTimeObj, timeFormat, language: this.config.language })\n          : this.dateTimeService.isToken(timeStr)\n          ? timeStr\n          : '',\n      };\n    } else {\n      // isDate must be true\n      if (typeof v === 'string') {\n        // parse using current language\n        dateTimeObj =\n          v && !this.dateTimeService.isToken(dateStr)\n            ? this.dateTimeService.parse({ dateStr: v, dateFormat, language: this.config.language })\n            : null;\n      } else {\n        dateTimeObj = v;\n      }\n      dateStr = dateStr ? this.substituteTokens(dateStr, true) : '';\n      // format using current language\n      result = {\n        dateStr:\n          dateTimeObj && !this.dateTimeService.isToken(dateStr)\n            ? this.dateTimeService.format({ dateTimeObj, dateFormat, language: this.config.language })\n            : this.dateTimeService.isToken(dateStr)\n            ? dateStr\n            : '',\n        timeStr: '',\n        dateTimeObj,\n      };\n    }\n    const formattedDateTime = this.dateTimeService.formatDateTimeForStoredValue(\n      result.dateTimeObj,\n      result.dateStr,\n      result.timeStr,\n      this.config,\n      this.settings.combinedDateTime\n    );\n    this.dateTimeControl?.setValue(formattedDateTime ? formattedDateTime : null);\n\n    return result;\n  }\n\n  // Revise\n  onDateTimeChange(value: string | Date | undefined | null, isDate: boolean, event: FormChangeEvent) {\n    if (this.state.readonly || this.state.disabled) {\n      return;\n    }\n\n    const result = this.processDateTimeValues(value, isDate);\n\n    // emit event?\n    const controlType = this.settings.combinedDateTime\n      ? UniControlType.DateTime\n      : isDate\n      ? UniControlType.DateTime_date\n      : this.settings.showTimeOnly\n      ? UniControlType.Time\n      : UniControlType.DateTime_time;\n\n    const newState = cloneDeep(this.state);\n    newState.data = result;\n    this.updateErrorDisplay();\n    this.state.data = result;\n    this.valueChangedEventHandler.emit({\n      newValue: result,\n      newState: newState,\n      controlType: controlType,\n      source: FormChangeSource.User,\n      event: event,\n      component: this,\n    });\n  }\n\n  // Revise\n  assignSubAbstractControl() {\n    this.dateControlName = this.dateControlName\n      ? this.dateControlName\n      : `${this.componentId}-${UniControlType.DateTime_date}`;\n    this.timeControlName = this.timeControlName\n      ? this.timeControlName\n      : `${this.componentId}-${UniControlType.DateTime_time}`;\n    this.dateTimeControlName = this.dateTimeControlName\n      ? this.dateTimeControlName\n      : `${this.componentId}-${UniControlType.DateTime}`;\n\n    if (!this.abstractControl) {\n      const defaultControls = {};\n      (defaultControls as any)[this.dateControlName] = new FormControl();\n      (defaultControls as any)[this.timeControlName] = new FormControl();\n      (defaultControls as any)[this.dateTimeControlName] = new FormControl();\n\n      this.abstractControl = new FormGroup(defaultControls);\n    }\n\n    this.dateControl = this.getControl(this.dateControlName) as FormControl<string | null>;\n    this.timeControl = this.getControl(this.timeControlName) as FormControl<string | null>;\n    this.dateTimeControl = this.getControl(this.dateTimeControlName) as FormControl<string | null>;\n\n    this.controls.date = this.dateControl;\n    this.controls.time = this.timeControl;\n    this.controls.dateTime = this.dateTimeControl;\n\n    // ToDo: add default self-validators\n\n    if (this.config.formGroupValidators) {\n      this.abstractControl.setValidators(this.config.formGroupValidators);\n      this.abstractControl.updateValueAndValidity();\n    }\n\n    if (this.config.dateControlValidators) {\n      this.controls.date.setValidators(this.config.dateControlValidators);\n      this.controls.date.updateValueAndValidity();\n    }\n    if (this.config.timeControlValidators) {\n      this.controls.time.setValidators(this.config.timeControlValidators);\n      this.controls.time.updateValueAndValidity();\n    }\n    if (this.config.dateTimeControlValidators) {\n      this.controls.dateTime.setValidators(this.config.dateTimeControlValidators);\n      this.controls.dateTime.updateValueAndValidity();\n    }\n  }\n\n  private getControl(controlName: string) {\n    let control: any;\n    try {\n      control = this.abstractControl?.get(controlName) as FormControl<string | null>;\n    } catch (ex) {\n      console.log('Could not locate control ' + controlName);\n    }\n    if (!control) {\n      control = new FormControl();\n    }\n    return control;\n  }\n\n  private assignMinMaxForPicker(state: UniState) {\n    // Revise\n    if (state.settings?.min) {\n      if (this.minDateTimeStr !== state.settings.min) {\n        const minDateTimeObj = this.dateTimeService.tryParse(state.settings.min as string, [\n          this.defaultDateTimeFormat,\n          this.defaultDateFormat,\n          this.defaultTimeFormat,\n        ]);\n        // const minTimeObj = this.dateTimeService.tryParse(state.settings.min as string, [this.defaultTimeFormat]);\n        if (minDateTimeObj && !state.settings.showTimeOnly) {\n          if (this.date) {\n            this.date.set('minDate', minDateTimeObj);\n          }\n          if (state.settings.showTime && !state.settings.combinedDateTime) {\n            // Known limitation: time min/max is not validated if split pickers\n            // ToDo: enforce time limit when pickers are split!\n          }\n          this.minDateTime = minDateTimeObj;\n          this.minDateTimeStr = state.settings.min as string;\n        }\n        if (minDateTimeObj && state.settings.showTimeOnly) {\n          if (this.time) {\n            this.time.set('minTime', minDateTimeObj);\n          }\n          this.minTime = this.dateTimeService.format({ dateTimeObj: minDateTimeObj, timeFormat: 'HH:mm' });\n        }\n      }\n    } else {\n      if (this.date && this.minDateTimeStr) {\n        this.date.set('minDate', '');\n      }\n      if (this.time && this.minDateTimeStr) {\n        this.time.set('minTime', '');\n      }\n      this.minDateTime = undefined;\n      this.minDateTimeStr = '';\n      this.minTime = '';\n    }\n    if (state.settings?.max) {\n      if (this.maxDateTimeStr !== state.settings.max) {\n        const maxDateTimeObj = this.dateTimeService.tryParse(state.settings.max as string, [\n          this.defaultDateTimeFormat,\n          this.defaultDateFormat,\n          this.defaultTimeFormat,\n        ]);\n        if (maxDateTimeObj && !state.settings.showTimeOnly) {\n          if (this.date) {\n            this.date.set('maxDate', maxDateTimeObj);\n          }\n          if (state.settings.showTime && !state.settings.combinedDateTime) {\n            // Known limitation: time min/max is not validated if split pickers\n            // ToDo: enforce time limit when pickers are split!\n          }\n          this.maxDateTime = maxDateTimeObj;\n          this.maxDateTimeStr = state.settings.max as string;\n        }\n        if (maxDateTimeObj && state.settings.showTimeOnly) {\n          if (this.time) {\n            this.time.set('maxTime', maxDateTimeObj);\n          }\n          this.maxTime = this.dateTimeService.format({ dateTimeObj: maxDateTimeObj, timeFormat: 'HH:mm' });\n        }\n      }\n    } else {\n      if (this.date && this.maxDateTimeStr) {\n        this.date.set('maxDate', '');\n      }\n      if (this.time && this.maxDateTimeStr) {\n        this.time.set('maxTime', '');\n      }\n      this.maxDateTime = undefined;\n      this.maxDateTimeStr = '';\n      this.maxTime = '';\n    }\n  }\n\n  //--\n  getErrorTypeWithHighestPriority(abstractControl: AbstractControl): string {\n    // Revise\n    const errorsPriority = this.config.errorsPriorityOrder;\n    if (abstractControl.errors) {\n      const errorTypes = Object.keys(abstractControl.errors);\n      if (errorTypes.length > 1) {\n        for (let orderIndex = 0; orderIndex < errorsPriority.length; orderIndex++) {\n          const errorType = errorsPriority[orderIndex].errorType;\n          const mappedErrorType = errorsPriority[orderIndex].mappedErrorType;\n          if (abstractControl.errors[errorType]) {\n            return mappedErrorType;\n          }\n        }\n      }\n      return errorTypes[0];\n    }\n    return '';\n  }\n\n  getDefaultErrorMessage(errorType: string, settings: UniComponentSettings) {\n    let message = '';\n    const params = {\n      min: settings.min,\n      max: settings.max,\n    };\n    const errorTypeKey = errorType as keyof typeof this.dateTimeService.defaultErrorMessages;\n    if (errorTypeKey in this.dateTimeService.defaultErrorMessages) {\n      message = this.dateTimeService.defaultErrorMessages[errorTypeKey](params);\n    }\n    return message;\n  }\n\n  updateErrorDisplay() {\n    // Revise\n    this.errorMessages = { date: '', time: '', dateTime: '' };\n    if (!this.config.silent) {\n      forEach(this.controls, (control?: FormControl<string | null>, key?: string) => {\n        if (control && control.touched && control.invalid) {\n          const errorType = this.getErrorTypeWithHighestPriority(control);\n          let message = errorType ? this.customErrorMessages[errorType] : '';\n          if (!message) {\n            message = this.getDefaultErrorMessage(errorType, this.settings);\n          } else {\n            const min = this.settings.min?.trim();\n            const max = this.settings.max?.trim();\n            message = this.processInternalTokens(message, { min, max });\n          }\n          if (this.errorMessages && key && key in this.errorMessages) {\n            this.errorMessages[key as keyof typeof this.errorMessages] = message;\n          }\n        }\n      });\n    }\n  }\n\n  markAsTouched(key?: string) {\n    if (key && this.controls[key as keyof typeof this.controls]) {\n      this.controls[key as keyof typeof this.controls]?.markAsTouched();\n      this.controls.dateTime?.markAsTouched();\n    } else {\n      forEach(this.controls, (control?: FormControl<string | null>, key?: string) => {\n        if (control) {\n          control.markAsTouched();\n        }\n      });\n    }\n  }\n\n  // Set flatpickr UI language\n  private localize() {\n    // en is default\n    const supportedLanguages = this.dateTimeService.getSupportedLanguages();\n    const langLCase = this.config.language?.toLowerCase();\n    let langShort = langLCase?.substring(0, 2);\n\n    langShort = langShort == 'zh' && langLCase && langLCase.length > 2 ? langLCase.substring(0, 7) : langShort;\n\n    this.supportedLanguage =\n      langLCase && supportedLanguages.indexOf(langLCase) > -1\n        ? langLCase\n        : langShort && supportedLanguages.indexOf(langShort) > -1\n        ? langShort\n        : 'en';\n    flatpickr.localize(this.dateTimeService.getFlatpickrLocale(this.supportedLanguage));\n  }\n\n  // Set flatpickr date/time format based on locale\n  public localizeFormat(locale?: string, withSeconds?: boolean) {\n    locale = locale ? locale : this.config.locale;\n    withSeconds = withSeconds ? withSeconds : this.config.setDisplayFormatByLocaleSeconds;\n\n    const dateFormat = this.dateTimeService.getFormatByLocale(locale, FormatType.DATE_FORMAT, withSeconds);\n    const timeFormat = this.dateTimeService.getFormatByLocale(locale, FormatType.TIME_FORMAT, withSeconds);\n    // const dateTimeFormat = this.dateTimeService.getFormatByLocale(locale, FormatType.DATETIME_FORMAT, withSeconds);\n\n    // ToDo?: convert from old to new\n\n    // Set new format\n    this.settings.dateFormat = dateFormat;\n    this.settings.timeFormat = timeFormat;\n    this.settings.datePlaceholder = dateFormat;\n    this.settings.timePlaceholder = timeFormat;\n\n    // Adjust 24h\n    if (timeFormat.indexOf('H') > -1) {\n      this.settings.isAMPM = false;\n      this.settings.isTwentyfour = true;\n    }\n\n    // Apply on existing controls // Revise\n    if (this.date && this.config.isDisplayOnly) {\n      this.dateDiv.nativeElement.flatpickr({\n        enableSeconds: this.settings.combinedDateTime && timeFormat.indexOf('s') > -1,\n        time_24hr: this.settings.combinedDateTime && timeFormat.indexOf('H') > -1, // Revise\n        dateFormat: this.dateTimeService.fromDisplayDateTimeFormatToFlatpickrFormat(dateFormat),\n        locale: this.dateTimeService.getFlatpickrLocale(this.supportedLanguage),\n      });\n    }\n\n    if (this.time && this.config.isDisplayOnly) {\n      this.timedateDiv.nativeElement.flatpickr({\n        enableSeconds: timeFormat.indexOf('s') > -1,\n        time_24hr: timeFormat.indexOf('H') > -1, // Revise\n        dateFormat: timeFormat,\n        locale: this.dateTimeService.getFlatpickrLocale(this.supportedLanguage),\n      });\n    }\n  }\n\n  // Helpers\n  getCombinedStyles(settings: UniComponentSettings | undefined) {\n    settings = settings ? settings : this.settings;\n    let style = '';\n\n    style += settings.padding ? 'padding: ' + settings.padding + 'px; ' : '';\n    style += settings.height ? 'height: ' + settings.height + 'px; ' : '';\n    style += settings.width ? 'width:  ' + settings.width + 'px;' : '';\n    style += settings.maxHeight ? 'max-height: ' + settings.maxHeight + 'px; ' : '';\n    style += settings.maxWidth ? 'max-width:  ' + settings.maxWidth + 'px;' : '';\n\n    return style;\n  }\n}\n","<!-- Copyright Laserfiche.\nLicensed under the MIT License. See LICENSE in the project root for license information. -->\n\n<div class=\"fl-component\">\n  <div *ngIf=\"settings.showLabel && settings.label\" class=\"lib-datetime-label\">{{settings.label}}</div>\n  <div [formGroup]=\"abstractControl\" class=\"fl-datetime-inputs\" [style]=\"this.getCombinedStyles(this.settings)\">\n    <input type=\"text\" #dateTimeInput [formControlName]=\"dateTimeControlName\" hidden />\n    <br />\n    <span *ngIf=\"settings.capturedInBackend else datePickerView\">\n      {{settings.showTimeOnly ? strings?.timeCapturedInBackend : settings.showTime ? strings?.dateTimeCapturedInBackend\n      : strings?.dateCapturedInBackend}}\n    </span>\n    <ng-template #datePickerView>\n      <div class=\"fl-date-container\" [ngClass]=\"settings.combinedDateTime ? 'combined-datetime' : ''\"\n        *ngIf=\"settings.showTimeOnly!==true\">\n        <div class=\"lib-datetime-picker\" #dateDiv>\n          <input *ngIf=\"settings.useCurrentDate && config.isDisplayOnly\" class=\"fl-datetime-input-date\" type=\"text\"\n            id=\"{{settings.fieldId}}\" value=\"{{strings?.currentDate}}\" disabled />\n          <mat-form-field class=\"lf-field lf-date-field lf-datepicker-input-box\" appearance=\"outline\">\n            <input matInput class=\"fl-datetime-input-date\" id=\"{{settings.fieldId}}\" type=\"text\" data-input\n              [readonly]=\"state.readonly || state.disabled\" (blur)=\"onBlurWithKey('date')\"\n              [hidden]=\"settings.useCurrentDate && config.isDisplayOnly\" [placeholder]=\"settings.datePlaceholder\"\n              [formControlName]=\"dateControlName\" [ngClass]=\"{\n                  'ng-wrapper-invalid': dateTimeControl?.invalid,\n                  'ng-wrapper-touched': dateTimeControl?.touched}\" />\n            <a *ngIf=\"!state.readonly\" class=\"datetime-icon\" title=\"{{strings?.selectDate}}\"\n              [ngClass]=\"{'isDisabled': config.isDisplayOnly || state.disabled, 'hidden': showLoadingSpinner}\"\n              [attr.disabled]=\"config.isDisplayOnly\" data-toggle (click)=\"onIconClick('date')\">\n\n              <div style=\"box-sizing: border-box;\">\n                <svg class=\"lf-icon-16\">\n                  <symbol xmlns=\"http://www.w3.org/2000/svg\" id=\"date\" viewBox=\"0 0 24 24\">\n                    <path\n                      d=\"M19,3h-1V1h-2v2H8V1H6v2H5C3.9,3,3,3.9,3,5l0,14c0,1.1,0.9,2,2,2h14c1.1,0,2-0.9,2-2V5C21,3.9,20.1,3,19,3z M19,19H5V8h14V19z\">\n                    </path>\n                    <rect x=\"7\" y=\"10\" width=\"5\" height=\"5\"></rect>\n                  </symbol>\n                  <use xlink:href=\"#date\"></use>\n                </svg>\n              </div>\n\n            </a>\n          </mat-form-field>\n\n          <div *ngIf=\"showLoadingSpinner\">\n            <ng-content select=\"[loading-spinner]\"></ng-content>\n          </div>\n        </div>\n        <div class=\"error-message\" *ngIf=\"dateControl?.invalid && dateControl?.touched && errorMessages\">\n          {{errorMessages.date}}</div>\n      </div>\n\n      <ng-content select=\"[between-pickers]\"></ng-content>\n\n      <div class=\"fl-time-container\" *ngIf=\"settings.showTime && !settings.combinedDateTime\">\n        <div class=\"lib-datetime-picker\" #timedateDiv>\n          <input *ngIf=\"settings.useCurrentDate && config.isDisplayOnly\" class=\"fl-datetime-input-time\" type=\"text\"\n            value=\"{{strings?.currentTime}}\" disabled />\n          <mat-form-field class=\"lf-field lf-date-field lf-datepicker-input-box\" appearance=\"outline\">\n            <input matInput class=\"fl-datetime-input-time\" id=\"DateTime{{settings.fieldId}}\" type=\"text\" data-input\n              [hidden]=\"settings.useCurrentDate && config.isDisplayOnly\" [readonly]=\"state.readonly || state.disabled\"\n              (blur)=\"onBlurWithKey('time')\" [placeholder]=\"settings.timePlaceholder\"\n              [formControlName]=\"timeControlName\" [ngClass]=\"{\n              'ng-wrapper-invalid': dateTimeControl?.invalid,\n              'ng-wrapper-touched': dateTimeControl?.touched}\" />\n            <a *ngIf=\"!state.readonly\" class=\"datetime-icon\" title=\"{{strings?.selectTime}}\"\n              [ngClass]=\"{'isDisabled': config.isDisplayOnly || state.disabled, 'hidden': showLoadingSpinner}\"\n              data-toggle (click)=\"onIconClick('time')\">\n\n              <div style=\"box-sizing: border-box;\">\n                <svg class=\"lf-icon-16\">\n                  <symbol xmlns=\"http://www.w3.org/2000/svg\" id=\"clock\" viewBox=\"0 0 24 24\">\n                    <path\n                      d=\"M12,2C6.5,2,2,6.5,2,12s4.5,10,10,10c5.5,0,10-4.5,10-10S17.5,2,12,2z M12,20c-4.4,0-8-3.6-8-8s3.6-8,8-8c4.4,0,8,3.6,8,8S16.4,20,12,20z\">\n                    </path>\n                    <polygon points=\"12.5,7 11,7 11,13 16.2,16.2 17,14.9 12.5,12.3 \"></polygon>\n                  </symbol>\n                  <use xlink:href=\"#clock\"></use>\n                </svg>\n              </div>\n\n            </a>\n          </mat-form-field>\n          <div *ngIf=\"showLoadingSpinner\">\n            <ng-content select=\"[loading-spinner]\"></ng-content>\n          </div>\n        </div>\n        <div class=\"error-message\" *ngIf=\"timeControl?.invalid && timeControl?.touched\">{{errorMessages?.time}}</div>\n      </div>\n\n      <ng-content></ng-content>\n\n    </ng-template>\n  </div>\n  <div class=\"error-message\" *ngIf=\"dateTimeControl?.invalid && dateTimeControl?.touched && errorMessages?.dateTime\">\n    {{errorMessages?.dateTime}}\n  </div>\n</div>\n","// Copyright (c) Laserfiche.\r\n// Licensed under the MIT License. See LICENSE in the project root for license information.\r\n\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { ValidationRule } from '@laserfiche/lf-ui-components/internal-shared';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n  selector: 'lf-dynamic-field-component',\r\n  templateUrl: './dynamic-field.component.html',\r\n  styleUrls: ['./dynamic-field.component.css', './../lf-field-base/lf-field-base.component.css'],\r\n})\r\nexport class DynamicFieldComponent {\r\n  @Input() options: string[] = [];\r\n  @Input() formControl!: FormControl;\r\n  @Input() title: string | undefined;\r\n  @Input() fieldValidationErrorMsg!: Observable<string> | undefined;\r\n  @Input() getBrokenValidationRule!: () => ValidationRule | undefined;\r\n  @Output() valueChange = new EventEmitter();\r\n\r\n  /**\r\n   * Default compare implementation, can be overrided by @Input\r\n   */\r\n  @Input() compareWith = (first: string, second: string) => {\r\n    return first === second;\r\n  };\r\n\r\n  constructor() {}\r\n\r\n  onValueChanged() {\r\n    this.valueChange.emit();\r\n  }\r\n}\r\n","<!--Copyright (c) Laserfiche.\r\nLicensed under the MIT License. See LICENSE in the project root for license information.-->\r\n\r\n<mat-form-field [title]=\"title\" appearance=\"outline\" class=\"lf-field\">\r\n  <mat-select panelClass=\"lf-dropdown-overlay\" [formControl]=\"formControl\" [title]=\"formControl.value\"\r\n    (selectionChange)=\"onValueChanged()\" [compareWith]=\"compareWith\" >\r\n    <mat-option>--</mat-option>\r\n    <mat-option *ngFor=\"let listOption of options\" [value]=\"listOption\">\r\n      {{listOption}}\r\n    </mat-option>\r\n  </mat-select>\r\n  <mat-error *ngIf=\"getBrokenValidationRule()\">{{fieldValidationErrorMsg | async}}</mat-error>\r\n</mat-form-field>\r\n","// Copyright Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport { Component, OnInit } from '@angular/core';\nimport { ErrorStateMatcher, ShowOnDirtyErrorStateMatcher } from '@angular/material/core';\nimport { ValidatorFn } from '@angular/forms';\nimport { LfFieldTokenService } from '../lf-field-token.service';\nimport { AppLocalizationService, ValidationRule } from '@laserfiche/lf-ui-components/internal-shared';\nimport { LfMetadataDatetimeUtils } from '@laserfiche/lf-js-utils';\nimport { Observable, of } from 'rxjs';\nimport { DateTimeBaseFieldDirective } from '../base-field/datetime-base-field.directives';\n\n@Component({\n  selector: 'lf-date-field-component',\n  templateUrl: './date-field.component.html',\n  styleUrls: ['./date-field.component.css', './../lf-field-base/lf-field-base.component.css'],\n  providers: [\n    { provide: DateTimeBaseFieldDirective, useExisting: DateFieldComponent },\n    { provide: ErrorStateMatcher, useClass: ShowOnDirtyErrorStateMatcher },\n  ],\n})\nexport class DateFieldComponent extends DateTimeBaseFieldDirective implements OnInit {\n  private LOCALE_DATE: Observable<string> | undefined;\n\n  async ngOnInit(): Promise<void> {\n    super.ngOnInit();\n\n    this.uniDateTimeSettings = {\n      showLabel: false,\n      readOnly: false,\n      combinedDateTime: false,\n      showTime: false,\n      defaultDate: this.getDateTimePickerDefaultDateValue(),\n    };\n    this.uniDateTimeConfig = {\n      storedValueDateFormat: this.internalDateFormat,\n      storedValueDateTimeFormat: '{DATE}T00:00:00',\n      language: navigator.language,\n      locale: navigator.language,\n      setDisplayFormatByLocale: true,\n      silent: false, // no internal strings and no custom error messages\n    };\n  }\n\n  compareDateStrings = LfMetadataDatetimeUtils.compareDateStrings;\n\n  serializeFieldFormControlValue(): string {\n    return this.getLfFieldFormControlValue();\n  }\n\n  deserializeLfFieldValue(): string {\n    return this.lf_field_value ?? '';\n  }\n\n  getAdditionalValidatorsForFieldType(): ValidatorFn[] {\n    return [];\n  }\n\n  getValidationTextForFieldType(validationRuleName: ValidationRule): Observable<string> | undefined {\n    switch (validationRuleName) {\n      case ValidationRule.DATEPICKER_PARSE:\n        if (\n          this.lf_field_form_control.errors &&\n          ValidationRule.DATEPICKER_PARSE in this.lf_field_form_control.errors\n        ) {\n          this.LOCALE_DATE = of(this.lf_field_form_control.errors[ValidationRule.DATEPICKER_PARSE].dateTimeFormat);\n          var errorMessage = this.localizationService.getStringLaserficheWithObservableParams(\n            'DATE_FIELDS_MUST_BE_IN_FORMAT_0',\n            [this.LOCALE_DATE]\n          );\n          return errorMessage;\n        }\n    }\n    return undefined;\n  }\n}\n","<!--Copyright (c) Laserfiche.\nLicensed under the MIT License. See LICENSE in the project root for license information.-->\n\n<span class=\"token-picker-field-box\" *ngIf=\"!isDynamic else dynamic\" [ngClass]=\"{'extra-space': !getBrokenValidationRule()}\">\n  <mat-form-field *ngIf=\"showTokenTextBox\" title=\"{{lf_field_info.displayName}}\" appearance=\"outline\"\n    class=\"lf-field lf-date-field\">\n    <input #tokenTarget matInput [formControl]=\"lf_field_form_control\" title=\"{{lf_field_form_control.value}}\"\n      (change)=\"onDateOrTimeTokenValueChanged()\">\n  </mat-form-field>\n\n  <lf-uni-date-time #tokenTarget class=\"lf-field\" *ngIf=\"!showTokenTextBox\" [config]=\"uniDateTimeConfig\"\n    [settings]=\"uniDateTimeSettings\" (valueChangedEventHandler)=\"onUniDateOrTimeChanged($event)\">\n  </lf-uni-date-time>\n  <lf-token-picker-component class=\"lf-field-token-picker\" (tokenPicked)=\"onTokenChosen($event)\"\n    [data]=\"lfFieldTokenData\"></lf-token-picker-component>\n</span>\n<mat-error *ngIf=\"getBrokenValidationRule()\">{{fieldValidationErrorMsg | async}}</mat-error>\n\n\n<ng-template #dynamic>\n  <lf-dynamic-field-component ngDefaultControl [options]=\"dynamic_field_value_options\"\n    [formControl]=\"lf_field_form_control\" [title]=\"lf_field_info.displayName\"\n    [fieldValidationErrorMsg]=\"fieldValidationErrorMsg\" [getBrokenValidationRule]=\"getBrokenValidationRule.bind(this)\"\n    (valueChange)=\"onValueChanged()\" [compareWith]=\"compareDateStrings\">\n  </lf-dynamic-field-component>\n</ng-template>\n","// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport { Component, OnInit } from '@angular/core';\nimport { ValidatorFn } from '@angular/forms';\nimport { ErrorStateMatcher, ShowOnDirtyErrorStateMatcher } from '@angular/material/core';\nimport { ValidationRule } from '@laserfiche/lf-ui-components/internal-shared';\nimport { LfMetadataDatetimeUtils } from '@laserfiche/lf-js-utils';\nimport { Observable, of } from 'rxjs';\nimport { DateTimeBaseFieldDirective } from '../base-field/datetime-base-field.directives';\n\n@Component({\n  selector: 'lf-date-time-field-component',\n  templateUrl: './date-time-field.component.html',\n  styleUrls: ['./date-time-field.component.css', './../lf-field-base/lf-field-base.component.css'],\n  providers: [\n    { provide: DateTimeBaseFieldDirective, useExisting: DateTimeFieldComponent },\n    { provide: ErrorStateMatcher, useClass: ShowOnDirtyErrorStateMatcher },\n  ],\n})\nexport class DateTimeFieldComponent extends DateTimeBaseFieldDirective implements OnInit {\n  private LOCALE_DATE_TIME: Observable<string> | undefined;\n\n  async ngOnInit(): Promise<void> {\n    super.ngOnInit();\n    const defaultDateTime: string | undefined = this.getDateTimePickerDefaultDateValue();\n    var defaultDateString: string | undefined = undefined;\n    var defaultTimeString: string | undefined = undefined;\n    const dateTimeSeparator = 'T';\n    const dateTimeElements = defaultDateTime?.split(dateTimeSeparator);\n    if (dateTimeElements && dateTimeElements.length == 2) {\n      [defaultDateString, defaultTimeString] = dateTimeElements;\n    }\n\n    this.uniDateTimeSettings = {\n      showLabel: false,\n      readOnly: false,\n      combinedDateTime: true,\n      defaultDate: defaultDateString,\n      defaultTimeOfDate: defaultTimeString,\n    };\n    this.uniDateTimeConfig = {\n      storedValueDateFormat: this.internalDateFormat,\n      storedValueTimeFormat: this.internalTimeFormat,\n      storedValueDateTimeFormat: `{DATE}${dateTimeSeparator}{TIME}`,\n      language: navigator.language,\n      locale: navigator.language,\n      setDisplayFormatByLocale: true,\n      silent: false, // no internal strings and no custom error messages\n    };\n  }\n\n  compareDateStrings = LfMetadataDatetimeUtils.compareDateStrings;\n\n  serializeFieldFormControlValue(): string {\n    return this.getLfFieldFormControlValue();\n  }\n\n  deserializeLfFieldValue(): string {\n    return this.lf_field_value ?? '';\n  }\n\n  getAdditionalValidatorsForFieldType(): ValidatorFn[] {\n    return [];\n  }\n\n  getValidationTextForFieldType(validationRuleName: ValidationRule): Observable<string> | undefined {\n    if (\n      this.lf_field_form_control.errors &&\n      (ValidationRule.DATETIME_PICKER_PARSE in this.lf_field_form_control.errors ||\n        ValidationRule.DATEPICKER_PARSE in this.lf_field_form_control.errors)\n    ) {\n      this.LOCALE_DATE_TIME = of(this.lf_field_form_control.errors[validationRuleName].dateTimeFormat);\n      var errorMessage = this.localizationService.getStringLaserficheWithObservableParams(\n        'DATE_TIME_FIELDS_MUST_BE_IN_FORMAT_0',\n        [this.LOCALE_DATE_TIME]\n      );\n      switch (validationRuleName) {\n        case ValidationRule.DATETIME_PICKER_PARSE:\n          return errorMessage;\n        case ValidationRule.DATEPICKER_PARSE:\n          return errorMessage;\n      }\n    }\n    return undefined;\n  }\n}\n","<!--Copyright Laserfiche.\nLicensed under the MIT License. See LICENSE in the project root for license information.-->\n\n<span class=\"token-picker-field-box\" *ngIf=\"!isDynamic else dynamic\" [ngClass]=\"{'extra-space': !getBrokenValidationRule()}\">\n  <mat-form-field *ngIf=\"showTokenTextBox\" title=\"{{lf_field_info.displayName}}\" appearance=\"outline\" class=\"lf-field\">\n    <input #tokenTarget matInput [formControl]=\"lf_field_form_control\" title=\"{{lf_field_form_control.value}}\"\n      (change)=\"onDateOrTimeTokenValueChanged()\">\n  </mat-form-field>\n\n  <lf-uni-date-time #tokenTarget class=\"lf-field\" *ngIf=\"!showTokenTextBox\" [config]=\"uniDateTimeConfig\"\n    [settings]=\"uniDateTimeSettings\" (valueChangedEventHandler)=\"onUniDateOrTimeChanged($event)\">\n  </lf-uni-date-time>\n  <lf-token-picker-component class=\"lf-field-token-picker\" (tokenPicked)=\"onTokenChosen($event)\"\n    [data]=\"lfFieldTokenData\"></lf-token-picker-component>\n</span>\n<mat-error *ngIf=\"getBrokenValidationRule()\">{{fieldValidationErrorMsg | async}}</mat-error>\n\n<ng-template #dynamic>\n  <lf-dynamic-field-component ngDefaultControl [options]=\"dynamic_field_value_options\"\n    [formControl]=\"lf_field_form_control\" [title]=\"lf_field_info.displayName\"\n    [fieldValidationErrorMsg]=\"fieldValidationErrorMsg\" [getBrokenValidationRule]=\"getBrokenValidationRule.bind(this)\"\n    (valueChange)=\"onValueChanged()\" [compareWith]=\"compareDateStrings\">\n  </lf-dynamic-field-component>\n</ng-template>\n","// Copyright (c) Laserfiche.\r\n// Licensed under the MIT License. See LICENSE in the project root for license information.\r\n\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { BaseFieldDirective } from '../base-field/base-field.directive';\r\nimport { ValidatorFn } from '@angular/forms';\r\nimport { ErrorStateMatcher, ShowOnDirtyErrorStateMatcher } from '@angular/material/core';\r\nimport { ValidationRule } from '@laserfiche/lf-ui-components/internal-shared';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n  selector: 'lf-list-field-component',\r\n  templateUrl: './list-field.component.html',\r\n  styleUrls: ['./list-field.component.css', './../lf-field-base/lf-field-base.component.css'],\r\n  providers: [\r\n    { provide: BaseFieldDirective, useExisting: ListFieldComponent },\r\n    { provide: ErrorStateMatcher, useClass: ShowOnDirtyErrorStateMatcher }\r\n  ]\r\n})\r\nexport class ListFieldComponent extends BaseFieldDirective implements OnInit {\r\n  getValidationTextForFieldType(validationRuleName: ValidationRule): Observable<string> | undefined {\r\n    return undefined;\r\n  }\r\n\r\n  serializeFieldFormControlValue(): string {\r\n    return this.getLfFieldFormControlValue(); // TODO: undo locale stuff before saving\r\n  }\r\n\r\n  deserializeLfFieldValue(): string {\r\n    return this.lf_field_value ?? ''; // TODO: get locale and do stuff\r\n  }\r\n\r\n  getAdditionalValidatorsForFieldType(): ValidatorFn[] {\r\n    return [];\r\n  }\r\n\r\n  protected override fieldOnValueChanged(): void {\r\n    const currentValue = this.lf_field_form_control.value;\r\n    this.lf_field_form_control.setValue(currentValue ?? '');\r\n  }\r\n}\r\n","<!--Copyright (c) Laserfiche.\r\nLicensed under the MIT License. See LICENSE in the project root for license information.-->\r\n\r\n<mat-form-field title=\"{{lf_field_info.displayName}}\" appearance=\"outline\" class=\"lf-field lf-dropdown\">\r\n  <mat-select panelClass=\"lf-dropdown-overlay\" [formControl]=\"lf_field_form_control\" title=\"{{lf_field_form_control.value}}\"\r\n      (selectionChange)=\"onValueChanged()\">\r\n      <mat-option>--</mat-option>\r\n      <mat-option *ngFor=\"let listOption of lf_field_info.listValues\" [value]=\"listOption\">\r\n          {{listOption}}\r\n      </mat-option>\r\n  </mat-select>\r\n  <mat-error *ngIf=\"getBrokenValidationRule()\">{{fieldValidationErrorMsg | async}}</mat-error>\r\n</mat-form-field>\r\n","// Copyright (c) Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport { Component, OnInit, AfterViewInit, ChangeDetectorRef } from '@angular/core';\nimport { BaseFieldDirective } from '../base-field/base-field.directive';\nimport { ValidatorFn } from '@angular/forms';\nimport { ErrorStateMatcher, ShowOnDirtyErrorStateMatcher } from '@angular/material/core';\nimport { FieldFormat, FieldType } from '@laserfiche/lf-ui-components/shared';\nimport { AppLocalizationService, ValidationRule, ValidationUtils } from '@laserfiche/lf-ui-components/internal-shared';\nimport { Observable, of } from 'rxjs';\nimport { LfFieldTokenService } from '../lf-field-token.service';\n\n@Component({\n  selector: 'lf-number-field-component',\n  templateUrl: './number-field.component.html',\n  styleUrls: ['./number-field.component.css', './../lf-field-base/lf-field-base.component.css'],\n  providers: [\n    { provide: BaseFieldDirective, useExisting: NumberFieldComponent },\n    { provide: ErrorStateMatcher, useClass: ShowOnDirtyErrorStateMatcher }\n  ]\n})\nexport class NumberFieldComponent extends BaseFieldDirective implements OnInit, AfterViewInit {\n  private readonly NUMBER_FIELD_MUST_BE_VALID_NUMBER = this.localizationService.getStringLaserficheObservable('NUMBER_FIELD_MUST_BE_VALID_NUMBER');\n  private readonly SHORT_FIELDS_MUST_BE_INTEGERS_BETWEEN_0_64999 = this.localizationService.getStringLaserficheObservable('SHORT_FIELDS_MUST_BE_INTEGERS_BETWEEN_0_64999');\n  private readonly LONG_FIELDS_MUST_BE_INTEGERS_BETWEEN_0_3999999999 = this.localizationService.getStringLaserficheObservable('LONG_FIELDS_MUST_BE_INTEGERS_BETWEEN_0_3999999999');\n\n  prefix: string | undefined;\n  suffix: string | undefined;\n  mask: string | undefined;\n  thousandSeparator: string | undefined;\n  decimalMarker: string | undefined;\n  separatorLimit: string | undefined;\n  focusState: boolean | undefined;\n\n  constructor(\n    public tokenService: LfFieldTokenService,\n    public ref: ChangeDetectorRef,\n    public localizationService: AppLocalizationService) {\n    super(tokenService, ref, localizationService);\n  }\n\n  ngAfterViewInit() {\n    this.setMaskForNumber();\n  }\n\n  onFocusIn() {\n    this.focusState = true;\n    this.ref.detectChanges();\n  }\n\n  onFocusOut() {\n    this.focusState = false;\n    this.ref.detectChanges();\n  }\n\n  onEveryInputChange() {\n    this.ref.detectChanges();\n    super.onValueChanged(false);\n  }\n\n  protected override fieldOnValueChanged(): void {\n    const currentValue = this.lf_field_form_control.value;\n    this.lf_field_form_control.setValue(currentValue ?? '');\n  }\n\n\n  getAdditionalValidatorsForFieldType(): ValidatorFn[] {\n    const validators: ValidatorFn[] = [];\n    validators.push(this.getNumericValidator());\n    return validators;\n  }\n\n  getValidationTextForFieldType(rule: ValidationRule): Observable<string> | undefined {\n    switch(rule) {\n      case ValidationRule.NUMERIC:\n        return this.lf_field_info.constraintError ? of(this.lf_field_info.constraintError) : undefined;\n      case ValidationRule.NUMBER:\n        return this.NUMBER_FIELD_MUST_BE_VALID_NUMBER;\n      case ValidationRule.SHORT_INT:\n        return this.SHORT_FIELDS_MUST_BE_INTEGERS_BETWEEN_0_64999;\n      case ValidationRule.LONG_INT:\n        return this.LONG_FIELDS_MUST_BE_INTEGERS_BETWEEN_0_3999999999;\n    }\n    return undefined;\n  }\n\n  private getNumericValidator(): ValidatorFn {\n    const tokenRegexString = ''; // TODO: token stuff\n    const decimalSeparator = '.';\n    switch (this.lf_field_info.fieldType) {\n      case FieldType.ShortInteger:\n        const shortIntPattern = new RegExp(`^(|[0-9]{0,4}|[0-5][0-9]{4}|[6][0-4][0-9]{3}${tokenRegexString})$`, 'i');\n        return ValidationUtils.generalRegexValidator(shortIntPattern, ValidationRule.SHORT_INT);\n      case FieldType.LongInteger:\n        const longIntPattern = new RegExp(`^(|[0-9]{0,9}|[0-3][0-9]{9}${tokenRegexString})$`, 'i');\n        return ValidationUtils.generalRegexValidator(longIntPattern, ValidationRule.LONG_INT);\n      default:\n        const numberPattern = new RegExp(`^(|[-](\\\\d{0,12}(\\\\` + decimalSeparator + `\\\\d{0,5})?|\\\\d{13}(\\\\` +\n          decimalSeparator + `\\\\d{0,4})?)|[\\\\+]?\\\\d{0,13}(\\\\` + decimalSeparator + `\\\\d{0,5})?${tokenRegexString})$`, 'i');\n        return ValidationUtils.generalRegexValidator(numberPattern, ValidationRule.NUMBER);\n    }\n  }\n\n  numberOnly(event: KeyboardEvent) {\n    if (this.lf_field_info.fieldType === FieldType.ShortInteger || this.lf_field_info.fieldType === FieldType.LongInteger) {\n      if (['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'].indexOf(event.key) === -1) {\n        event.preventDefault();\n      }\n    }\n  }\n\n  serializeFieldFormControlValue(): string {\n    const currentValue = this.getLfFieldFormControlValue();\n    if (currentValue === '-') {\n      this.setLfFieldFormControlValue('0');\n      return '0';\n    }\n    if (this.lf_field_info.fieldType === FieldType.Number) {\n      const parsedNumber = Number.parseFloat(currentValue);\n      if (!isNaN(parsedNumber)) {\n        return parsedNumber.toString();\n      }\n    }\n    if (this.lf_field_info.fieldType === FieldType.ShortInteger || this.lf_field_info.fieldType === FieldType.LongInteger) {\n      const parsedNumber = Number.parseInt(currentValue, 10);\n      if (!isNaN(parsedNumber)) {\n        return parsedNumber.toString();\n      }\n    }\n    return currentValue;\n  }\n\n  deserializeLfFieldValue(): string {\n    return this.lf_field_value ?? '';\n  }\n\n  private getSeparator(separatorType?: string): string {\n    const numberWithGroupAndDecimalSeparator: number = 11111.1;\n    const numberString = numberWithGroupAndDecimalSeparator.toLocaleString(navigator.language);\n    const separators = numberString.replace(/1/g, '');\n    if (separatorType === 'group') {\n      return separators.slice(0, 1);\n    }\n    else {\n      return separators.slice(1, 2);\n    }\n  }\n\n  private setMaskForNumber() {\n    if (this.lf_field_info.fieldType === FieldType.Number) {\n      this.mask = 'separator.5';\n      this.separatorLimit = '10000000000000'; // 10,000,000,000,000\n      this.thousandSeparator = '';\n      this.decimalMarker = this.getSeparator();\n      if (this.lf_field_info.format === FieldFormat.Currency && this.lf_field_info.currency) {\n        this.prefix = `${this.lf_field_info.currency} `;\n        this.mask = 'separator.2';\n        this.thousandSeparator = this.getSeparator('group');\n      }\n      if (this.lf_field_info.format === FieldFormat.Percent) {\n        this.suffix = ' %';\n      }\n      this.ref.detectChanges();\n    }\n  }\n}\n","<!--Copyright (c) Laserfiche.\nLicensed under the MIT License. See LICENSE in the project root for license information.-->\n\n<span class=\"token-picker-field-box\" *ngIf=\"!isDynamic else dynamic\">\n  <mat-form-field *ngIf=\"!containsToken\" title=\"{{lf_field_info.displayName}}\" appearance=\"outline\" class=\"lf-field\">\n    <input #tokenTarget mask=\"{{mask}}\" thousandSeparator=\"{{thousandSeparator}}\" decimalMarker=\"{{decimalMarker}}\"\n      prefix=\"{{prefix}}\" suffix=\"{{suffix}}\" [allowNegativeNumbers]=\"true\" separatorLimit=\"{{separatorLimit}}\" matInput\n      type=\"text\" [formControl]=\"lf_field_form_control\" title=\"{{lf_field_form_control.value}}\"\n      (keypress)=\"numberOnly($event)\" (change)=\"onValueChanged()\" (focus)=\"onFocusIn()\" (focusout)=\"onFocusOut()\"\n      (input)=\"onEveryInputChange()\">\n    <mat-hint *ngIf=\"focusState && this.lf_field_info?.length\" align=\"end\">\n      {{(noTokenCharacterCountHint | async)}}\n    </mat-hint>\n    <mat-error *ngIf=\"getBrokenValidationRule()\">{{fieldValidationErrorMsg | async}}</mat-error>\n  </mat-form-field>\n</span>\n<ng-template #dynamic>\n  <lf-dynamic-field-component ngDefaultControl [options]=\"dynamic_field_value_options\"\n    [formControl]=\"lf_field_form_control\" [title]=\"lf_field_info.displayName\" [fieldValidationErrorMsg]=\"fieldValidationErrorMsg\"\n    [getBrokenValidationRule]=\"getBrokenValidationRule.bind(this)\" (valueChange)=\"onValueChanged()\">\n  </lf-dynamic-field-component>\n</ng-template>\n","// Copyright (c) Laserfiche.\r\n// Licensed under the MIT License. See LICENSE in the project root for license information.\r\n\r\nimport { ChangeDetectorRef, Component, OnInit } from '@angular/core';\r\nimport { BaseFieldDirective } from '../base-field/base-field.directive';\r\nimport { ValidatorFn } from '@angular/forms';\r\nimport { ErrorStateMatcher, ShowOnDirtyErrorStateMatcher } from '@angular/material/core';\r\nimport { LfFieldTokenService } from '../lf-field-token.service';\r\nimport { AppLocalizationService, ValidationRule } from '@laserfiche/lf-ui-components/internal-shared';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n  selector: 'lf-text-field-component',\r\n  templateUrl: './text-field.component.html',\r\n  styleUrls: ['./text-field.component.css', './../lf-field-base/lf-field-base.component.css'],\r\n  providers: [\r\n    { provide: BaseFieldDirective, useExisting: TextFieldComponent },\r\n    { provide: ErrorStateMatcher, useClass: ShowOnDirtyErrorStateMatcher }\r\n  ]\r\n})\r\nexport class TextFieldComponent extends BaseFieldDirective implements OnInit {\r\n  getValidationTextForFieldType(validationRuleName: ValidationRule): Observable<string> | undefined {\r\n    return undefined;\r\n  }\r\n\r\n  focusState: boolean | undefined;\r\n  get isShortField(): boolean {\r\n    return (!this.lf_field_info.length || this.lf_field_info.length <= 40);\r\n  }\r\n\r\n  constructor(\r\n    public tokenService: LfFieldTokenService,\r\n    public ref: ChangeDetectorRef,\r\n    public localizationService: AppLocalizationService) {\r\n    super(tokenService, ref, localizationService);\r\n  }\r\n\r\n  serializeFieldFormControlValue(): string {\r\n    return this.getLfFieldFormControlValue()?.trim();\r\n  }\r\n\r\n  deserializeLfFieldValue(): string {\r\n    return this.lf_field_value?.trim() ?? '';\r\n  }\r\n\r\n  getAdditionalValidatorsForFieldType(): ValidatorFn[] {\r\n    return [];\r\n  }\r\n\r\n  createNewFieldValueWithToken(token: string): string {\r\n    let newValue: string = '';\r\n    if (this.tokenTarget) {\r\n      const originalFieldVal: string = this.tokenTarget.nativeElement.value;\r\n      const selectionStart: number = this.tokenTarget.nativeElement.selectionStart;\r\n      const selectionEnd: number = this.tokenTarget.nativeElement.selectionEnd;\r\n      const formattedToken: string = `%(${token})`;\r\n      const textBeforeToken: string = originalFieldVal.substring(0, selectionStart);\r\n      const textAfterToken: string = originalFieldVal.substring(selectionEnd);\r\n      newValue = textBeforeToken + formattedToken + textAfterToken;\r\n    }\r\n    return newValue;\r\n  }\r\n\r\n  onFocusIn() {\r\n    this.focusState = true;\r\n    this.ref.detectChanges();\r\n  }\r\n\r\n  onFocusOut() {\r\n    this.focusState = false;\r\n    this.ref.detectChanges();\r\n  }\r\n\r\n  onEveryInputChange() {\r\n    this.ref.detectChanges();\r\n    if (this.containsToken) {\r\n      this.lf_field_form_control.clearValidators();\r\n    }\r\n    else {\r\n      this.resetToDefaultValidators();\r\n    }\r\n    this.lf_field_form_control.updateValueAndValidity();\r\n    super.onValueChanged(false);\r\n  }\r\n\r\n  protected override fieldOnValueChanged(): void {\r\n    const currentValue = this.lf_field_form_control.value;\r\n    this.lf_field_form_control.setValue(currentValue ?? '');\r\n  }\r\n\r\n  onTextValueChanged() {\r\n    if (this.containsToken) {\r\n      this.lf_field_form_control.clearValidators();\r\n    }\r\n    else {\r\n      this.resetToDefaultValidators();\r\n    }\r\n    this.lf_field_form_control.updateValueAndValidity();\r\n    super.onValueChanged();\r\n  }\r\n\r\n  onTextTokenChosen(token: string) {\r\n    const newFieldVal: string = this.createNewFieldValueWithToken(token);\r\n    if (this.tokenService.containsTokenForFieldType(newFieldVal, this.lf_field_info.fieldType, this.is_import_mode)) {\r\n      this.lf_field_form_control.clearValidators();\r\n      this.lf_field_form_control.updateValueAndValidity();\r\n    }\r\n    this.onTokenChosen(token);\r\n  }\r\n}\r\n","<!--Copyright (c) Laserfiche.\r\nLicensed under the MIT License. See LICENSE in the project root for license information.-->\r\n\r\n<span class=\"token-picker-field-box\" *ngIf=\"!isDynamic else dynamic\">\r\n  <mat-form-field *ngIf=\"isShortField\" title=\"{{lf_field_info.displayName}}\" appearance=\"outline\" class=\"lf-field\">\r\n    <input #tokenTarget matInput type=\"text\" [formControl]=\"lf_field_form_control\" title=\"{{lf_field_form_control.value}}\"\r\n      (change)=\"onTextValueChanged()\" (focus)=\"onFocusIn()\" (focusout)=\"onFocusOut()\"\r\n      (input)=\"onEveryInputChange()\">\r\n    <mat-hint *ngIf=\"focusState && this.lf_field_info.length\" align=\"end\">\r\n      {{containsToken ? (tokenCharacterCountHint | async) : (noTokenCharacterCountHint | async)}}\r\n    </mat-hint>\r\n    <mat-error *ngIf=\"getBrokenValidationRule()\">{{fieldValidationErrorMsg | async}}</mat-error>\r\n  </mat-form-field>\r\n  <mat-form-field *ngIf=\"!isShortField\" title=\"{{lf_field_info.displayName}}\" appearance=\"outline\" class=\"lf-textarea\">\r\n    <textarea #tokenTarget matInput type=\"text\" [formControl]=\"lf_field_form_control\" title=\"{{lf_field_form_control.value}}\"\r\n      (change)=\"onTextValueChanged()\" (focus)=\"onFocusIn()\" (focusout)=\"onFocusOut()\"\r\n      (input)=\"onEveryInputChange()\"></textarea>\r\n    <mat-hint *ngIf=\"focusState && this.lf_field_info?.length\" align=\"end\">\r\n      {{containsToken ? (tokenCharacterCountHint | async) : (noTokenCharacterCountHint | async)}}\r\n    </mat-hint>\r\n    <mat-error *ngIf=\"getBrokenValidationRule()\">{{fieldValidationErrorMsg | async}}</mat-error>\r\n  </mat-form-field>\r\n  <lf-token-picker-component class=\"lf-field-token-picker\" (tokenPicked)=\"onTextTokenChosen($event)\" [data]=\"lfFieldTokenData\">\r\n  </lf-token-picker-component>\r\n</span>\r\n<ng-template #dynamic>\r\n  <lf-dynamic-field-component ngDefaultControl [options]=\"dynamic_field_value_options\" [formControl]=\"lf_field_form_control\"\r\n    [title]=\"lf_field_info.displayName\" [fieldValidationErrorMsg]=\"fieldValidationErrorMsg\"\r\n    [getBrokenValidationRule]=\"getBrokenValidationRule.bind(this)\" (valueChange)=\"onTextValueChanged()\">\r\n  </lf-dynamic-field-component>\r\n</ng-template>\r\n","// Copyright Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport { Component, OnInit } from '@angular/core';\nimport { ValidatorFn } from '@angular/forms';\nimport { ErrorStateMatcher, ShowOnDirtyErrorStateMatcher } from '@angular/material/core';\nimport { FieldFormat } from '@laserfiche/lf-ui-components/shared';\nimport { ValidationRule, ValidationUtils } from '@laserfiche/lf-ui-components/internal-shared';\nimport { Observable, of } from 'rxjs';\nimport { DateTimeBaseFieldDirective } from '../base-field/datetime-base-field.directives';\n\n@Component({\n  selector: 'lf-time-field-component',\n  templateUrl: './time-field.component.html',\n  styleUrls: ['./time-field.component.css', './../lf-field-base/lf-field-base.component.css'],\n  providers: [\n    { provide: DateTimeBaseFieldDirective, useExisting: TimeFieldComponent },\n    { provide: ErrorStateMatcher, useClass: ShowOnDirtyErrorStateMatcher },\n  ],\n})\nexport class TimeFieldComponent extends DateTimeBaseFieldDirective implements OnInit {\n  private timeDisplayFormat: string | undefined;\n  private TIME_FIELDS_MUST_BE_IN_THE_FORMAT_0: Observable<string> | undefined;\n\n  async ngOnInit(): Promise<void> {\n    super.ngOnInit();\n    this.timeDisplayFormat = this.getTimeFormat();\n    this.TIME_FIELDS_MUST_BE_IN_THE_FORMAT_0 = this.localizationService.getStringLaserficheWithObservableParams(\n      'TIME_FIELDS_MUST_BE_IN_FORMAT_0',\n      [of(this.timeDisplayFormat)]\n    );\n    this.uniDateTimeSettings = {\n      showLabel: false,\n      readOnly: false,\n      combinedDateTime: false,\n      showTimeOnly: true,\n      timeFormat: this.timeDisplayFormat,\n      timePlaceholder: this.timeDisplayFormat,\n      defaultTimeOfDate: this.lf_field_value,\n    };\n\n    this.uniDateTimeConfig = {\n      storedValueTimeFormat: this.internalTimeFormat,\n      storedValueDateTimeFormat: '{TIME}',\n      language: navigator.language,\n      silent: false, // no internal strings and no custom error messages\n    };\n  }\n\n  deserializeLfFieldValue(): string {\n    return this.lf_field_value ?? ''; // TODO: check what format the API gives us Time in\n  }\n\n  serializeFieldFormControlValue(): string {\n    return this.getLfFieldFormControlValue();\n  }\n\n  getAdditionalValidatorsForFieldType(): ValidatorFn[] {\n    const validators: ValidatorFn[] = [];\n    validators.push(ValidationUtils.createTimeValidator());\n    return validators;\n  }\n\n  getValidationTextForFieldType(validationRuleName: ValidationRule): Observable<string> | undefined {\n    switch (validationRuleName) {\n      case ValidationRule.TIME:\n        return this.TIME_FIELDS_MUST_BE_IN_THE_FORMAT_0;\n    }\n    return undefined;\n  }\n\n  private getTimeFormat(): string {\n    if (this.timeDisplayFormat)\n    {\n      return this.timeDisplayFormat;\n    }\n    switch (this.lf_field_info?.format) {\n      case FieldFormat.ShortTime:\n        return 'hh:mm A';\n      case FieldFormat.LongTime:\n        return 'hh:mm:ss A';\n      default:\n        return 'hh:mm:ss A';\n    }\n  }\n  async onTimeValueChangedAsync() {\n    if (this.containsToken) {\n      this.lf_field_form_control.clearValidators();\n    } else {\n      this.resetToDefaultValidators();\n    }\n    super.onDateOrTimeTokenValueChanged();\n    this.lf_field_form_control.updateValueAndValidity();\n  }\n\n  onTimeTokenChosen(token: string) {\n    const newFieldVal: string = this.createNewFieldValueWithToken(token);\n    if (this.tokenService.containsTokenForFieldType(newFieldVal, this.lf_field_info.fieldType, this.is_import_mode)) {\n      this.lf_field_form_control.clearValidators();\n      this.lf_field_form_control.updateValueAndValidity();\n    }\n    this.onTokenChosen(token);\n  }\n}\n","<!--Copyright Laserfiche.\nLicensed under the MIT License. See LICENSE in the project root for license information.-->\n\n<span class=\"token-picker-field-box\" *ngIf=\"!isDynamic else dynamic\" [ngClass]=\"{'extra-space': !getBrokenValidationRule()}\">\n  <mat-form-field *ngIf=\"showTokenTextBox\" title=\"{{lf_field_info.displayName}}\" appearance=\"outline\" class=\"lf-field\">\n    <input #tokenTarget matInput type=\"text\" [formControl]=\"lf_field_form_control\"\n      title=\"{{lf_field_form_control.value}}\" (change)=\"onTimeValueChangedAsync()\">\n  </mat-form-field>\n  <lf-uni-date-time #tokenTarget class=\"lf-field\" *ngIf=\"!showTokenTextBox\" [config]=\"uniDateTimeConfig\"\n    [settings]=\"uniDateTimeSettings\" (valueChangedEventHandler)=\"onUniDateOrTimeChanged($event)\">\n  </lf-uni-date-time>\n  <lf-token-picker-component class=\"lf-field-token-picker\" (tokenPicked)=\"onTimeTokenChosen($event)\"\n    [data]=\"lfFieldTokenData\">\n  </lf-token-picker-component>\n</span>\n<mat-error *ngIf=\"getBrokenValidationRule()\">{{fieldValidationErrorMsg | async}}</mat-error>\n\n<ng-template #dynamic>\n  <lf-dynamic-field-component ngDefaultControl [options]=\"dynamic_field_value_options\"\n    [formControl]=\"lf_field_form_control\" [title]=\"lf_field_info.displayName\"\n    [fieldValidationErrorMsg]=\"fieldValidationErrorMsg\" [getBrokenValidationRule]=\"getBrokenValidationRule.bind(this)\"\n    (valueChange)=\"onValueChanged()\">\n  </lf-dynamic-field-component>\n</ng-template>\n","// Copyright (c) Laserfiche.\r\n// Licensed under the MIT License. See LICENSE in the project root for license information.\r\n\r\nimport { Component, Input, Output, EventEmitter } from '@angular/core';\r\nimport { FormGroup, FormControl } from '@angular/forms';\r\nimport { FieldType } from '@laserfiche/lf-ui-components/shared';\r\nimport { LfFieldInfo, LfFieldValue } from '../../../utils/lf-field-types';\r\n\r\n@Component({\r\n  selector: 'lf-field-base-component',\r\n  templateUrl: './lf-field-base.component.html',\r\n  styleUrls: ['./lf-field-base.component.css']\r\n})\r\nexport class LfFieldBaseComponent {\r\n  @Input() lfFieldInfo!: LfFieldInfo;\r\n  @Input() lfFieldFormControl!: FormControl;\r\n  @Input() lfFieldValue: LfFieldValue | undefined;\r\n  @Input() parentForm: FormGroup | undefined;\r\n  @Input() isImportMode: boolean = false;\r\n  @Input() dynamicFieldValueOptions: string[] | undefined;\r\n  @Output() fieldValueChange = new EventEmitter<LfFieldValue>();\r\n\r\n  constructor() { }\r\n\r\n  onChange(event: LfFieldValue) {\r\n    this.fieldValueChange.emit(event);\r\n  }\r\n\r\n  get fieldTypeString() {\r\n    return FieldType.String;\r\n  }\r\n\r\n  get fieldTypeDate() {\r\n    return FieldType.Date;\r\n  }\r\n\r\n  get fieldTypeDateTime() {\r\n    return FieldType.DateTime;\r\n  }\r\n\r\n  get fieldTypeList() {\r\n    return FieldType.List;\r\n  }\r\n\r\n  get fieldTypeLongInteger() {\r\n    return FieldType.LongInteger;\r\n  }\r\n\r\n  get fieldTypeNumber() {\r\n    return FieldType.Number;\r\n  }\r\n\r\n  get fieldTypeShortInteger() {\r\n    return FieldType.ShortInteger;\r\n  }\r\n\r\n  get fieldTypeTime() {\r\n    return FieldType.Time;\r\n  }\r\n}\r\n","<!--Copyright (c) Laserfiche.\r\nLicensed under the MIT License. See LICENSE in the project root for license information.-->\r\n\r\n<span class=\"field-box\" [ngSwitch]=\"lfFieldInfo?.fieldType\">\r\n    <lf-date-time-field-component *ngSwitchCase=\"fieldTypeDateTime\" [parent_form]=\"parentForm\"\r\n        [lf_field_form_control]=\"lfFieldFormControl\" [lf_field_info]=\"lfFieldInfo\" [lf_field_value]=\"lfFieldValue\"\r\n        [dynamic_field_value_options]=\"dynamicFieldValueOptions\" (fieldValueChange)=\"onChange($event)\">\r\n    </lf-date-time-field-component>\r\n    <lf-text-field-component *ngSwitchCase=\"fieldTypeString\" [parent_form]=\"parentForm\"\r\n        [lf_field_form_control]=\"lfFieldFormControl\" [lf_field_info]=\"lfFieldInfo\" [lf_field_value]=\"lfFieldValue\"\r\n        [dynamic_field_value_options]=\"dynamicFieldValueOptions\" (fieldValueChange)=\"onChange($event)\">\r\n    </lf-text-field-component>\r\n    <lf-date-field-component *ngSwitchCase=\"fieldTypeDate\" [parent_form]=\"parentForm\" [lf_field_form_control]=\"lfFieldFormControl\"\r\n        [lf_field_info]=\"lfFieldInfo\" [lf_field_value]=\"lfFieldValue\"\r\n        [dynamic_field_value_options]=\"dynamicFieldValueOptions\" (fieldValueChange)=\"onChange($event)\">\r\n    </lf-date-field-component>\r\n    <lf-number-field-component *ngSwitchCase=\"fieldTypeShortInteger\" [parent_form]=\"parentForm\"\r\n        [lf_field_form_control]=\"lfFieldFormControl\" [lf_field_info]=\"lfFieldInfo\" [lf_field_value]=\"lfFieldValue\"\r\n        [dynamic_field_value_options]=\"dynamicFieldValueOptions\" (fieldValueChange)=\"onChange($event)\">\r\n    </lf-number-field-component>\r\n    <lf-number-field-component *ngSwitchCase=\"fieldTypeLongInteger\" [parent_form]=\"parentForm\"\r\n        [lf_field_form_control]=\"lfFieldFormControl\" [lf_field_info]=\"lfFieldInfo\" [lf_field_value]=\"lfFieldValue\"\r\n        [dynamic_field_value_options]=\"dynamicFieldValueOptions\" (fieldValueChange)=\"onChange($event)\">\r\n    </lf-number-field-component>\r\n    <lf-list-field-component *ngSwitchCase=\"fieldTypeList\" [parent_form]=\"parentForm\" [lf_field_form_control]=\"lfFieldFormControl\"\r\n        [lf_field_info]=\"lfFieldInfo\" [lf_field_value]=\"lfFieldValue\"\r\n        [dynamic_field_value_options]=\"dynamicFieldValueOptions\" (fieldValueChange)=\"onChange($event)\">\r\n    </lf-list-field-component>\r\n    <lf-number-field-component *ngSwitchCase=\"fieldTypeNumber\" [parent_form]=\"parentForm\"\r\n        [lf_field_form_control]=\"lfFieldFormControl\" [lf_field_info]=\"lfFieldInfo\" [lf_field_value]=\"lfFieldValue\"\r\n        [dynamic_field_value_options]=\"dynamicFieldValueOptions\" (fieldValueChange)=\"onChange($event)\">\r\n    </lf-number-field-component>\r\n    <lf-time-field-component *ngSwitchCase=\"fieldTypeTime\" [parent_form]=\"parentForm\" [lf_field_form_control]=\"lfFieldFormControl\"\r\n        [lf_field_info]=\"lfFieldInfo\" [lf_field_value]=\"lfFieldValue\"\r\n        [dynamic_field_value_options]=\"dynamicFieldValueOptions\" (fieldValueChange)=\"onChange($event)\">\r\n    </lf-time-field-component>\r\n</span>\r\n","// Copyright Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';\nimport { FormControl, FormGroup, FormBuilder } from '@angular/forms';\nimport { CoreUtils } from '@laserfiche/lf-js-utils';\nimport { FieldType } from '@laserfiche/lf-ui-components/shared';\nimport { FieldValue, LfFieldInfo, LfFieldValue } from '../utils/lf-field-types';\n\n@Component({\n  selector: 'lf-field-component',\n  templateUrl: './lf-field.component.html',\n  styleUrls: ['./lf-field.component.css'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LfFieldComponent {\n\n  /** @internal */\n  lfFieldInfo!: LfFieldInfo;\n  /** @internal */\n  lfFieldValue: LfFieldValue = '';\n  /** @internal */\n  singleFieldParentForm: FormGroup;\n  /** @internal */\n  showLoader: boolean = false;\n\n  /** @internal */\n  @Output() fieldValueChanged = new EventEmitter<string>();\n  /** @internal */\n  dynamicFieldValueOptions: string[] | undefined;\n  /** @internal */\n  showField: boolean = false;\n\n  /** @internal */\n  constructor(\n    /** @internal */\n    private fb: FormBuilder,\n    /** @internal */\n    private cdr: ChangeDetectorRef) {\n    this.singleFieldParentForm = this.fb.group({\n      singleField: [this.lfFieldValue]\n    });\n  }\n\n  /** @internal */\n  getSingleField(): FormControl {\n    return this.singleFieldParentForm.get('singleField') as FormControl;\n  }\n\n  /** @internal */\n  isValid(): boolean {\n    return this.singleFieldParentForm.valid;\n  }\n\n  /** @internal */\n  @Input()\n  forceValidation = (): boolean => {\n    this.getSingleField().markAsDirty();\n    this.getSingleField().updateValueAndValidity();\n    return this.isValid();\n  };\n\n  /** @internal */\n  getOptions() {\n    const options = this.dynamicFieldValueOptions;\n    return options;\n  }\n\n  /** @internal */\n  @Input()\n  initAsync = async (field: LfFieldInfo, fieldValue: LfFieldValue = '', dynamicFieldValueOptions?: string[]): Promise<void> => {\n    this.lfFieldInfo = CoreUtils.validateDefined(field, 'field');\n    this.lfFieldValue = this.getInitialValue(fieldValue);\n    if(this.lfFieldInfo.fieldType === FieldType.Blob) {\n      console.warn('Blob field not supported');\n    }\n    else if(!(this.lfFieldInfo.fieldType in FieldType)) {\n      throw new Error('FieldType not supported.');\n    }\n    else {\n      this.showField = true;\n    }\n    this.dynamicFieldValueOptions = dynamicFieldValueOptions;\n    this.cdr.detectChanges();\n    this.removeInvalidFieldValues(this.lfFieldValue);\n  };\n\n  /** @internal */\n  private removeInvalidFieldValues(fieldValue: string) {\n    const isValid = this.isValid();\n    if (!isValid) {\n      this.getSingleField().setValue('');\n      fieldValue = '';\n      this.lfFieldValue = fieldValue;\n      this.cdr.detectChanges();\n    }\n  }\n\n  /** @internal */\n  private getInitialValue(fieldValue: string): string {\n    if (!fieldValue || fieldValue.length === 0) {\n      const defaultValue = this.lfFieldInfo.defaultValue;\n      if (defaultValue) {\n        fieldValue = defaultValue;\n      }\n    }\n    return fieldValue ?? '';\n  }\n\n  /** @internal */\n  @Input()\n  getFieldValue = (): FieldValue => {\n    const fieldVal: FieldValue = {\n      fieldName: this.lfFieldInfo.name,\n      fieldId: this.lfFieldInfo.id,\n      fieldType: this.lfFieldInfo.fieldType,\n      values: [\n        {\n          value: this.lfFieldValue,\n          position: '1'\n        }\n      ]\n    };\n    return fieldVal;\n  };\n\n  /** @internal */\n  fieldDataChange(value: LfFieldValue) {\n    this.lfFieldValue = value;\n    this.fieldValueChanged.emit(value);\n    this.cdr.detectChanges();\n  }\n\n  /** @internal */\n  get isLoading(): boolean {\n    return this.showLoader;\n  }\n\n  /** @internal */\n  set isLoading(val: boolean) {\n    this.showLoader = val;\n    this.cdr.detectChanges();\n  }\n}\n","<!--Copyright (c) Laserfiche.\r\nLicensed under the MIT License. See LICENSE in the project root for license information.-->\r\n\r\n<span *ngIf=\"showField\" class=\"lf-field-container\" id=\"lf-field-container\">\r\n  <span *ngIf=\"lfFieldInfo?.name\" class=\"lf-field-title-container\">\r\n      <span class=\"lf-field-title\" title=\"{{lfFieldInfo?.displayName }}\">{{lfFieldInfo?.displayName }}</span>\r\n      <span class=\"lf-field-is-required\" *ngIf=\"lfFieldInfo?.isRequired\">*</span>\r\n      <lf-loader-component *ngIf=\"isLoading\"></lf-loader-component>\r\n  </span>\r\n  <form class=\"lf-field-form\" [formGroup]=\"singleFieldParentForm\">\r\n      <lf-field-base-component [parentForm]=\"singleFieldParentForm\" [lfFieldFormControl]=\"getSingleField()\" [dynamicFieldValueOptions]=\"getOptions()\"\r\n          [lfFieldInfo]=\"lfFieldInfo\" [lfFieldValue]=\"lfFieldValue\" (fieldValueChange)=\"fieldDataChange($event)\"></lf-field-base-component>\r\n  </form>\r\n</span>\r\n","// Copyright Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';\nimport { FormGroup, FormBuilder, FormArray, FormControl } from '@angular/forms';\nimport { CoreUtils } from '@laserfiche/lf-js-utils';\nimport { FieldType } from '@laserfiche/lf-ui-components/shared';\nimport { FieldValue, LfFieldInfo, LfFieldValue } from '../utils/lf-field-types';\n\n@Component({\n  selector: 'lf-field-multivalue-component',\n  templateUrl: './lf-field-multivalue.component.html',\n  styleUrls: ['./lf-field-multivalue.component.css'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LfFieldMultivalueComponent {\n\n  /** @internal */\n  lfFieldInfo!: LfFieldInfo;\n  /** @internal */\n  lfFieldValues: LfFieldValue[] = [];\n  /** @internal */\n  multiValueFieldParentForm: FormGroup;\n  /** @internal */\n  showLoader: boolean = false;\n\n  /** @internal */\n  @Output() fieldValuesChanged = new EventEmitter<{ fieldValues: LfFieldValue[]; indexChanged: number }>();\n  /** @internal */\n  dynamicFieldOptions: string[][] | undefined;\n  /** @internal */\n  showField: boolean = false;\n\n  /** @internal */\n  constructor(\n    /** @internal */\n    private fb: FormBuilder,\n    /** @internal */\n    private cdr: ChangeDetectorRef) {\n    this.multiValueFieldParentForm = this.fb.group({\n      fieldArray: new FormArray([])\n    });\n  }\n\n  /** @internal */\n  private getArray(): FormArray {\n    return this.multiValueFieldParentForm.get('fieldArray') as FormArray;\n  }\n\n  /** @internal */\n  getSingleField(index: number): FormControl {\n    return this.getArray().controls[index] as FormControl;\n  }\n\n  /** @internal */\n  getLfFieldInfo(currentIndex: number): LfFieldInfo {\n    if (currentIndex === 0) {\n      return this.lfFieldInfo;\n    }\n    else {\n      const optional = Object.assign({}, this.lfFieldInfo);\n      optional.isRequired = false;\n      return optional;\n    }\n  }\n\n  /** @internal */\n  isValid(): boolean {\n    return this.multiValueFieldParentForm.valid;\n  }\n\n  /** @internal */\n  @Input()\n  initAsync = async (fieldDefinition: LfFieldInfo, fieldValues: LfFieldValue[] = [], dynamicFieldOptions?: string[][]): Promise<void> => {\n    this.lfFieldInfo = CoreUtils.validateDefined(fieldDefinition, 'fieldDefinition');\n    this.dynamicFieldOptions = dynamicFieldOptions;\n    if(this.lfFieldInfo.fieldType === FieldType.Blob) {\n      console.warn('Blob field not supported');\n    }\n    else if(!(this.lfFieldInfo.fieldType in FieldType)) {\n      throw new Error('FieldType not supported.');\n    }\n    else {\n      this.showField = true;\n    }\n    if ((!fieldValues || fieldValues.length === 0) && this.lfFieldInfo.defaultValue) {\n      this.lfFieldValues = [this.lfFieldInfo.defaultValue];\n    }\n    else {\n      this.lfFieldValues = fieldValues.filter(val => val !== undefined && val.trim().length > 0);\n    }\n    this.syncFormControlDataToFieldValues();\n\n    if (!this.isValid()) {\n      this.removeInvalidFieldValues();\n    }\n  };\n\n  /** @internal */\n  @Input()\n  forceValidation: () => boolean = () => {\n    this.getArray().controls.forEach(control => {\n      control.markAsDirty();\n      control.updateValueAndValidity();\n    });\n    return this.isValid();\n  };\n\n  /** @internal */\n  private removeInvalidFieldValues() {\n    this.getArray().controls.forEach((control, index) => {\n      const value = control.value;\n      if (!control.valid && value && value.trim().length > 0) {\n        control.setValue('');\n        this.lfFieldValues[index] = '';\n      }\n    });\n    if (this.isValid()) {\n      this.lfFieldValues = this.lfFieldValues.filter(value => value && value.trim().length > 0);\n      this.syncFormControlDataToFieldValues();\n    }\n  }\n\n  /** @internal */\n  getOptions() {\n    const options = (this.dynamicFieldOptions && this.dynamicFieldOptions.length > 0) ? this.dynamicFieldOptions[0] : undefined;\n    return options;\n  }\n\n  /** @internal */\n  syncFormControlDataToFieldValues() {\n    this.getArray().clear();\n    if (this.lfFieldValues) {\n      this.lfFieldValues.forEach(val => {\n        this.getArray().push(new FormControl(val));\n      });\n      if (this.lfFieldValues.length === 0 || this.lfFieldValues[this.lfFieldValues.length - 1] !== undefined) {\n        this.addNewBlankField();\n      }\n    }\n    this.cdr.detectChanges();\n  }\n\n  /** @internal */\n  @Input()\n  getFieldValue: () => FieldValue = () => {\n    // Clean up blank inputs if valid\n    if (this.isValid()) {\n      this.lfFieldValues = this.lfFieldValues.filter(value => value && value.trim().length > 0);\n      this.syncFormControlDataToFieldValues();\n    }\n\n    let fieldValues = this.lfFieldValues.filter(value => value && value.trim().length > 0).map((lfFieldValue, index) => {\n      return {\n        value: lfFieldValue,\n        position: (index + 1).toString()\n      };\n    });\n\n    if (fieldValues?.length === 0) {\n      fieldValues = [{ value: '', position: '1' }];\n    }\n\n    const fieldVal: FieldValue = {\n      fieldName: this.lfFieldInfo.name,\n      fieldId: this.lfFieldInfo.id,\n      fieldType: this.lfFieldInfo?.fieldType,\n      values: fieldValues\n    };\n\n    return fieldVal;\n  };\n\n  /** @internal */\n  onChange(value: LfFieldValue, indexChanged: number) {\n    this.lfFieldValues[indexChanged] = value;\n    const isValidMultiValueFieldValue = this.isLastInArray(indexChanged) && this.fieldHasValue(value) && this.lastValueIsValid();\n    if (isValidMultiValueFieldValue) {\n      this.addNewBlankField();\n    }\n    this.fieldValuesChanged.emit({ fieldValues: this.lfFieldValues, indexChanged });\n    this.cdr.detectChanges();\n  }\n\n  /** @internal */\n  private lastValueIsValid() {\n    const lastIndex: number = this.getArray().length - 1;\n    return this.getArray().controls[lastIndex].valid;\n  }\n\n  /** @internal */\n  private fieldHasValue(value: string) {\n    return value?.trim().length > 0;\n  }\n\n  /** @internal */\n  private isLastInArray(index: number) {\n    return index === this.getArray().length - 1;\n  }\n\n  /** @internal */\n  private addNewBlankField() {\n    this.lfFieldValues.push('');\n    this.getArray().push(new FormControl(''));\n\n    // Hack: if the field is required, and the value above is deleted,\n    // this one will immediately show required error even if not touched by user\n    const lastIndex: number = this.getArray().length - 1;\n    if (lastIndex !== 0) {\n      this.getArray().controls[lastIndex].markAsDirty();\n    }\n    this.cdr.detectChanges();\n  }\n\n  /** @internal */\n  removeField(indexChanged: number) {\n    this.lfFieldValues.splice(indexChanged, 1);\n    this.getArray().removeAt(indexChanged);\n    this.cdr.detectChanges();\n    this.fieldValuesChanged.emit({ fieldValues: this.lfFieldValues, indexChanged });\n  }\n\n  /** @internal */\n  trackByIndex(index: number, option: string) {\n    const res = `${index}${option}`;\n    return res;\n  }\n\n  /** @internal */\n  get isLoading(): boolean {\n    return this.showLoader;\n  }\n\n  /** @internal */\n  set isLoading(val: boolean) {\n    this.showLoader = val;\n    this.cdr.detectChanges();\n  }\n}\n","<!--Copyright (c) Laserfiche.\r\nLicensed under the MIT License. See LICENSE in the project root for license information.-->\r\n\r\n<ng-container *ngIf=\"showField\">\r\n  <span class=\"lf-field-title-container\">\r\n    <span class=\"lf-field-title\" title=\"{{lfFieldInfo?.displayName }}\">{{lfFieldInfo?.displayName}}</span>\r\n    <span class=\"lf-field-is-required\" *ngIf=\"lfFieldInfo?.isRequired\">*</span>\r\n    <lf-loader-component *ngIf=\"isLoading\"></lf-loader-component>\r\n  </span>\r\n  <form class=\"lf-field-form\" [formGroup]=\"multiValueFieldParentForm\">\r\n    <span class=\"single-field-container\"\r\n        *ngFor=\"let lfFieldValue of lfFieldValues; index as currentIndex; last as isLast; trackBy: trackByIndex\">\r\n        <lf-field-base-component [parentForm]=\"multiValueFieldParentForm\" [lfFieldFormControl]=\"getSingleField(currentIndex)\"\r\n            [lfFieldInfo]=\"getLfFieldInfo(currentIndex)\" [lfFieldValue]=\"lfFieldValue\" [dynamicFieldValueOptions]=\"getOptions()\"\r\n            (fieldValueChange)=\"onChange($event, currentIndex)\">\r\n        </lf-field-base-component>\r\n        <button class=\"lf-multivalue-remove-button\" *ngIf=\"!isLast && lfFieldValues?.length > 1\"\r\n            (click)=\"removeField(currentIndex)\">\r\n            <span class=\"material-icons\" id=\"lf-multivalue-remove-icon\" >\r\n              close\r\n            </span>\r\n        </button>\r\n        <span class=\"lf-multivalue-remove-span\" *ngIf=\"isLast && lfFieldValues?.length > 1\"></span>\r\n    </span>\r\n  </form>\r\n</ng-container>\r\n","// Copyright (c) Laserfiche.\r\n// Licensed under the MIT License. See LICENSE in the project root for license information.\r\n\r\nimport { Directive, ViewContainerRef } from '@angular/core';\r\n\r\n/** @internal */\r\n@Directive({\r\n  selector: '[lfFieldView]',\r\n})\r\nexport class LfFieldViewDirective {\r\n  constructor(public viewContainerRef: ViewContainerRef) { }\r\n}\r\n","// Copyright (c) Laserfiche.\r\n// Licensed under the MIT License. See LICENSE in the project root for license information.\r\n\r\nimport { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\r\nimport { FieldValue, FieldValues } from './field-components/utils/lf-field-types';\r\n\r\n/** @internal */\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class LfFieldMetadataConnectorService {\r\n\r\n  private allFieldValues: FieldValues = {};\r\n  private readonly templateFields = new BehaviorSubject<number[]>([]);\r\n  private readonly adhocFieldsRefresh = new Subject<void>();\r\n  private readonly adhocDialogOpened = new Subject<boolean>();\r\n\r\n  constructor() { }\r\n\r\n  setFieldValue(fieldValue: FieldValue) {\r\n    this.allFieldValues[fieldValue.fieldId] = fieldValue;\r\n  }\r\n\r\n  setAllFieldValues(fieldValues: FieldValues) {\r\n    this.allFieldValues = fieldValues;\r\n  }\r\n\r\n  getAllFieldValues(): FieldValues {\r\n    return this.allFieldValues;\r\n  }\r\n\r\n  clearAllFieldValues(): void {\r\n    this.allFieldValues = {};\r\n    this.selectTemplateFields([]);\r\n  }\r\n\r\n  selectTemplateFields(newFields: number[]) {\r\n    this.templateFields.next(newFields);\r\n  }\r\n\r\n  getTemplateFields(): Observable<number[]> {\r\n    return this.templateFields;\r\n  }\r\n\r\n  adhocFieldDataUpdated(): Observable<void>{\r\n    return this.adhocFieldsRefresh;\r\n  }\r\n\r\n  updatedAdhocFieldData() {\r\n    this.adhocFieldsRefresh.next();\r\n  }\r\n\r\n  setAddRemoveContainerToggled(open: boolean) {\r\n    this.adhocDialogOpened.next(open);\r\n  }\r\n\r\n  getAddRemoveContainerToggled() {\r\n    return this.adhocDialogOpened;\r\n  }\r\n}\r\n","// Copyright (c) Laserfiche.\r\n// Licensed under the MIT License. See LICENSE in the project root for license information.\r\n\r\nimport { ComponentRef, Directive, EventEmitter, Input, Output, ViewChild } from '@angular/core';\r\nimport { LfFieldMetadataConnectorService } from './lf-field-metadata-connector.service';\r\nimport { AdhocFieldInfo } from './lf-field-adhoc-container/lf-field-adhoc-container-types';\r\nimport { LfFieldViewDirective } from './lf-field-view.directive';\r\nimport { LfFieldComponent } from './field-components/lf-field/lf-field.component';\r\nimport { LfFieldMultivalueComponent } from './field-components/lf-field-multivalue/lf-field-multivalue.component';\r\nimport { LfFieldGroupComponent } from './field-components/lf-field-group/lf-field-group.component';\r\nimport { FieldValue, FieldValues, LfFieldInfo, LfFieldValue, TemplateFieldInfo } from './field-components/utils/lf-field-types';\r\n\r\n@Directive()\r\nexport abstract class LfFieldContainerDirective {\r\n\r\n  @Output() fieldValuesChanged = new EventEmitter<boolean>();\r\n\r\n  /** @internal */\r\n  @ViewChild(LfFieldViewDirective) lfFieldView!: LfFieldViewDirective;\r\n  /** @internal */\r\n  componentRefs: ComponentRef<LfFieldComponent | LfFieldMultivalueComponent>[] = [];\r\n  /** @internal */\r\n  groupComponentRefs: ComponentRef<LfFieldGroupComponent>[] = [];\r\n  /** @internal */\r\n  allFieldInfos: (TemplateFieldInfo | LfFieldInfo | AdhocFieldInfo)[] = [];\r\n  /** @internal */\r\n  allFieldValues: FieldValues = {};\r\n  /** @internal */\r\n  private readonly VALUE_ACCESSOR = 'value';\r\n\r\n  /** @internal */\r\n  constructor(\r\n    /** @internal */\r\n    public metadataConnectorService: LfFieldMetadataConnectorService) { }\r\n\r\n  /** @internal */\r\n  abstract clearAsync(): Promise<void>;\r\n  /** @internal */\r\n  abstract onFieldValueChangedAsync(fieldValues: string[], lfFieldInfo: LfFieldInfo, indicesChanged?: number[]): Promise<void>;\r\n  /** @internal */\r\n  abstract renderFieldsAsync(fieldInfos: (TemplateFieldInfo | LfFieldInfo | AdhocFieldInfo)[]): Promise<void>;\r\n  /** @internal */\r\n  abstract multivalueComponentInitAsync(componentRef: ComponentRef<LfFieldMultivalueComponent>, fieldInfo: LfFieldInfo, stringValues: LfFieldValue[]): Promise<void>;\r\n  /** @internal */\r\n  abstract fieldComponentInitAsync(componentRef: ComponentRef<LfFieldComponent>, fieldInfo: LfFieldInfo, stringValues: LfFieldValue): Promise<void>;\r\n\r\n  @Input()\r\n  forceValidation = (): boolean => {\r\n    let valid: boolean = true;\r\n    this.componentRefs?.forEach((componentRef) => {\r\n      if (!componentRef.instance.forceValidation()) {\r\n        valid = false;\r\n      }\r\n    });\r\n    this.groupComponentRefs?.forEach((componentRef) => {\r\n      if (!componentRef.instance.forceValidation()) {\r\n        valid = false;\r\n      }\r\n    });\r\n    return valid;\r\n  };\r\n\r\n  /**\r\n   * @internal\r\n   * Returns whether container is valid without forcing validation\r\n   */\r\n  isValid(): boolean {\r\n    const valid: boolean = this.componentRefs?.every((component) => component.instance.isValid()) ?? true;\r\n    const groupsValid = this.groupComponentRefs?.every((component) => component.instance.isValid()) ?? true;\r\n    return valid && groupsValid;\r\n  }\r\n\r\n  /** @internal */\r\n  setFieldValue(fieldId: number, values: string[]): void {\r\n    const fieldValue = this.getOrCreateFieldValue(fieldId);\r\n    const formattedValues: { position: string; value: string }[] = values?.map((value, index) => {\r\n      return { value, position: (index + 1).toString() };\r\n    }) ?? [];\r\n    if (formattedValues?.length > 0) {\r\n      fieldValue.values = formattedValues;\r\n    }\r\n    this.allFieldValues[fieldId] = fieldValue;\r\n    this.metadataConnectorService.setFieldValue(fieldValue);\r\n  }\r\n\r\n  /** @internal */\r\n  getOrCreateFieldValue(fieldId: number): FieldValue {\r\n    if (!(fieldId in this.allFieldValues)) {\r\n      const val = this.createDefaultFieldValue(fieldId);\r\n      this.allFieldValues[fieldId] = val;\r\n      this.metadataConnectorService.setFieldValue(val);\r\n    }\r\n    return this.allFieldValues[fieldId];\r\n  }\r\n\r\n  /** @internal */\r\n  protected async initializeFieldComponentAsync(\r\n    fieldComponentRef: ComponentRef<LfFieldComponent>,\r\n    fieldInfo: LfFieldInfo,\r\n    value: string\r\n  ) {\r\n    await this.fieldComponentInitAsync(fieldComponentRef, fieldInfo, value);\r\n    fieldComponentRef.instance.fieldValueChanged.subscribe(async (updatedValue: string) => {\r\n      await this.onFieldValueChangedAsync([updatedValue], fieldComponentRef.instance.lfFieldInfo);\r\n    });\r\n  }\r\n\r\n  /** @internal */\r\n  protected async initializeMultivalueComponentAsync(\r\n    multivalueComponentRef: ComponentRef<LfFieldMultivalueComponent>,\r\n    fieldInfo: LfFieldInfo,\r\n    stringValues: string[]\r\n  ): Promise<void> {\r\n    await this.multivalueComponentInitAsync(multivalueComponentRef, fieldInfo, stringValues);\r\n    multivalueComponentRef.instance.fieldValuesChanged.subscribe(async (fieldChange: { fieldValues: string[]; indexChanged: number }) => {\r\n      await this.onFieldValueChangedAsync(fieldChange.fieldValues, multivalueComponentRef.instance.lfFieldInfo, [fieldChange.indexChanged]);\r\n    });\r\n  }\r\n\r\n  /** @internal */\r\n  protected getValuesById(fieldId: number): string[] {\r\n    const fieldValue: FieldValue = this.getOrCreateFieldValue(fieldId);\r\n    const stringValues = fieldValue.values?.map((value) => {\r\n      return value[this.VALUE_ACCESSOR];\r\n    }) ?? [];\r\n    return stringValues;\r\n  }\r\n\r\n  /** @internal */\r\n  private createDefaultFieldValue(fieldId: number): FieldValue {\r\n    const templateFieldInfo = this.allFieldInfos?.find((fieldInfo) => fieldInfo?.id === fieldId);\r\n    if (!templateFieldInfo) {\r\n      throw new Error(`createDefaultFieldValue: Field ${fieldId} not found`);\r\n    }\r\n    const defaultFieldValue = this.createFieldValueFromFieldInfo(templateFieldInfo);\r\n    return defaultFieldValue;\r\n  }\r\n\r\n  /** @internal */\r\n  private createFieldValueFromFieldInfo(field: LfFieldInfo): FieldValue {\r\n    return { fieldName: field.name, fieldId: field.id, fieldType: field.fieldType };\r\n  }\r\n\r\n}\r\n","// Copyright (c) Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport { Component, ChangeDetectorRef, Input, ViewChild, OnDestroy, ComponentRef, AfterViewInit, EventEmitter, Output, NgZone, ElementRef } from '@angular/core';\nimport { LfFieldAdhocContainerService as LfFieldAdhocContainerService } from './lf-field-adhoc-container.service';\nimport { AdhocFieldConnectorService } from './lf-field-adhoc-connector.service';\nimport { AdhocFieldInfo } from './lf-field-adhoc-container-types';\nimport { Subscription } from 'rxjs';\nimport { LfFieldAddRemoveComponent } from './lf-field-add-remove/lf-field-add-remove.component';\nimport { AppLocalizationService } from '@laserfiche/lf-ui-components/internal-shared';\nimport { FieldValue, FieldValues, LfFieldInfo } from '../field-components/utils/lf-field-types';\nimport { LfFieldComponent } from '../field-components/lf-field/lf-field.component';\nimport { LfFieldMultivalueComponent } from '../field-components/lf-field-multivalue/lf-field-multivalue.component';\nimport { LfFieldMetadataConnectorService } from '../lf-field-metadata-connector.service';\nimport { LfFieldContainerDirective } from '../lf-field-container.directive';\nimport { CoreUtils } from '@laserfiche/lf-js-utils';\n\n@Component({\n  selector: 'lf-field-adhoc-container-component',\n  templateUrl: './lf-field-adhoc-container.component.html',\n  styleUrls: ['./lf-field-adhoc-container.component.css'],\n  providers: [AdhocFieldConnectorService]\n})\nexport class LfFieldAdhocContainerComponent extends LfFieldContainerDirective implements OnDestroy, AfterViewInit {\n  /** @internal */\n  @ViewChild(LfFieldAddRemoveComponent) addRemoveComponent!: LfFieldAddRemoveComponent;\n  /** @internal */\n  @ViewChild('adhocPanel') adhocPanel?: ElementRef<HTMLElement>;\n  @Output() dialogOpened = new EventEmitter<void>();\n  @Output() dialogClosed = new EventEmitter<void>();\n\n  /** @internal */\n  readonly ADD_REMOVE_FIELDS = this.localizationService.getStringLaserficheObservable('ADD_REMOVE_FIELDS');\n\n  /** @internal */\n  readonly NO_ADDITIONAL_FIELDS_ASSIGNED = this.localizationService.getStringLaserficheObservable('NO_ADDITIONAL_FIELDS_ASSIGNED');\n\n  /** @internal */\n  showAdhocModal: boolean = false;\n  /** @internal */\n  adhocFieldContainerService!: LfFieldAdhocContainerService;\n  /** @internal */\n  templateFields: number[] = [];\n  /** @internal */\n  private selectedFieldIds: Set<number> = new Set<number>();\n  /** @internal */\n  private templateFieldsSub: Subscription | undefined;\n\n  /** @internal */\n  constructor(\n    /** @internal */\n    private ref: ChangeDetectorRef,\n    /** @internal */\n    private adhocFieldConnectorService: AdhocFieldConnectorService,\n    /** @internal */\n    public metadataFieldConnectorService: LfFieldMetadataConnectorService,\n    /** @internal */\n    private zone: NgZone,\n    /** @internal */\n    private localizationService: AppLocalizationService\n  ) {\n    super(metadataFieldConnectorService);\n  }\n\n  /** @internal */\n  ngAfterViewInit() {\n    this.templateFieldsSub = this.metadataFieldConnectorService.getTemplateFields().subscribe(async (currentTemplateFields) => {\n      this.templateFields = currentTemplateFields;\n      await this.refreshFieldsAsync();\n    });\n  }\n\n  /** @internal */\n  ngOnDestroy() {\n    this.templateFieldsSub?.unsubscribe();\n    this.resetComponentValues();\n  }\n\n  @Input()\n  getFieldValues = (): { [fieldName: string]: FieldValue } => {\n    return this.zone.run(() => {\n      const fieldValues: { [fieldName: string]: FieldValue } = {};\n      this.componentRefs?.forEach((componentRef) => {\n        const fieldValue = componentRef.instance.getFieldValue();\n        const fieldName = fieldValue.fieldName ?? undefined;\n        if (fieldName !== undefined) {\n          fieldValues[fieldName] = fieldValue;\n        } else {\n          console.warn('FieldValue.fieldName is undefined, skipping.');\n        }\n      });\n      return fieldValues;\n    });\n  };\n\n  @Input()\n  clearAsync = async (): Promise<void> => {\n    await this.zone.run(async () => {\n      this.resetComponentValues();\n      this.metadataFieldConnectorService.clearAllFieldValues();\n      await this.resetFieldDataAsync([]);\n    });\n  };\n\n  @Input()\n  initAsync = async (adhocFieldContainerService: LfFieldAdhocContainerService): Promise<void> => {\n    this.zone.run(() => {\n      this.resetComponentValues();\n      this.adhocFieldContainerService = CoreUtils.validateDefined(adhocFieldContainerService, 'adhocFieldContainerService');\n    });\n  };\n\n  @Input()\n  resetFieldDataAsync = async (fields: { value: FieldValue; definition: LfFieldInfo }[]): Promise<void> => {\n    await this.zone.run(async () => {\n      this.loadSelectedFieldValues(fields);\n      await this.refreshFieldsAsync();\n      this.metadataFieldConnectorService.updatedAdhocFieldData();\n    });\n  };\n\n  @Input()\n  updateFieldValuesAsync = async (values: FieldValue[]): Promise<void> => {\n    await this.zone.run(async () => {\n      values.forEach((field) => {\n        this.allFieldValues[field.fieldId] = field;\n      });\n\n      this.metadataFieldConnectorService.setAllFieldValues(this.allFieldValues);\n      await this.refreshFieldsAsync();\n      this.metadataFieldConnectorService.updatedAdhocFieldData();\n    });\n  };\n\n  /** @internal */\n  private resetComponentValues() {\n    this.templateFields = [];\n    this.metadataConnectorService.setAllFieldValues({});\n    this.adhocFieldConnectorService.setSelectedFieldIds(new Set<number>());\n  }\n\n  /** @internal */\n  async renderFieldsAsync(fieldInfos: (LfFieldInfo | AdhocFieldInfo)[]): Promise<void> {\n    const vf = this.lfFieldView.viewContainerRef;\n    vf.clear();\n    this.componentRefs = [];\n    this.groupComponentRefs = [];\n\n    for (const fieldInfo of fieldInfos) {\n      const values = this.getValuesById(fieldInfo.id) ?? [];\n      if (fieldInfo.isMultiValue) {\n        const multivalueComponentRef = vf.createComponent(LfFieldMultivalueComponent);\n        this.componentRefs.push(multivalueComponentRef);\n        await this.initializeMultivalueComponentAsync(multivalueComponentRef, fieldInfo, values);\n      }\n      else {\n        const fieldComponentRef = vf.createComponent(LfFieldComponent);\n        this.componentRefs.push(fieldComponentRef);\n        await this.initializeFieldComponentAsync(fieldComponentRef, fieldInfo, (values?.length > 0) ? values[0] : '');\n      }\n    }\n  }\n\n  /** @internal */\n  async fieldComponentInitAsync(fieldComponentRef: ComponentRef<LfFieldComponent>, fieldInfo: LfFieldInfo, value: string) {\n    await fieldComponentRef.instance.initAsync(fieldInfo, value);\n  }\n\n  /** @internal */\n  async multivalueComponentInitAsync(multivalueFieldComponentRef: ComponentRef<LfFieldMultivalueComponent>, fieldInfo: LfFieldInfo, values: string[]) {\n    await multivalueFieldComponentRef.instance.initAsync(fieldInfo, values);\n  }\n\n  /** @internal */\n  private loadSelectedFieldValues(fields: { value: FieldValue; definition: LfFieldInfo }[]): void {\n    this.getInitialSelectedOptions(fields);\n    this.adhocFieldConnectorService.setSelectedFieldIds(this.selectedFieldIds);\n  }\n\n  /** @internal */\n  getMappedFieldValues(fieldValues: FieldValue[]): FieldValues {\n    const mappedFields: FieldValues = {};\n    fieldValues.forEach((fieldValue) => {\n      mappedFields[fieldValue.fieldId] = fieldValue;\n    });\n    return mappedFields;\n  }\n\n  /** @internal */\n  getFieldIds(fieldValues: FieldValue[]): Set<number> {\n    const fieldsSet = new Set<number>();\n    fieldValues.forEach((fieldValue) => {\n      fieldsSet.add(fieldValue.fieldId);\n    });\n    return fieldsSet;\n  }\n\n\n  /** @internal */\n  private getInitialSelectedOptions(fields: { value: FieldValue; definition: LfFieldInfo }[]): void {\n    const mappedFields = fields ?? [];\n\n    const fieldInfos: LfFieldInfo[] = [];\n    const fieldValues: FieldValue[] = [];\n    mappedFields.forEach((field) => {\n      if (field.value && field.definition) {\n        fieldInfos.push(field.definition);\n        fieldValues.push(field.value);\n      }\n      else {\n        // skip field\n      }\n    });\n\n    this.allFieldInfos = fieldInfos;\n    this.allFieldValues = this.getMappedFieldValues(fieldValues);\n    this.adhocFieldConnectorService.setAllFieldInfos(this.allFieldInfos);\n    this.selectedFieldIds = this.getFieldIds(fieldValues);\n    this.metadataFieldConnectorService.setAllFieldValues(this.allFieldValues);\n  }\n\n  /** @internal */\n  fieldsEmpty() {\n    const isEmpty = !this.componentRefs || this.componentRefs?.length === 0;\n    return isEmpty;\n  }\n\n  /** @internal */\n  async addRemoveFieldsAsync(): Promise<void> {\n    this.toggleAdhocModal(true);\n    await this.addRemoveComponent.initAsync(this.adhocFieldContainerService);\n    const fieldDefinitions = this.adhocFieldConnectorService.getAllFieldInfos();\n    this.updateTemplateFields(fieldDefinitions);\n    await this.addRemoveComponent.updateSortedFieldInfos();\n  }\n\n  /** @internal */\n  async onClickBackAsync(): Promise<void> {\n    this.toggleAdhocModal(false);\n    await this.refreshFieldsAsync();\n  }\n\n  /** @internal */\n  private toggleAdhocModal(open: boolean) {\n    this.showAdhocModal = open;\n    this.metadataConnectorService.setAddRemoveContainerToggled(open);\n    if (open) {\n      this.dialogOpened.emit();\n      setTimeout(() => this.adhocPanel?.nativeElement.focus());\n    }\n    else {\n      this.dialogClosed.emit();\n    }\n  }\n\n  /** @internal */\n  async refreshFieldsAsync(): Promise<void> {\n    const fieldValues = this.metadataFieldConnectorService.getAllFieldValues() ?? {};\n    this.allFieldValues = { ...this.allFieldValues, ...fieldValues };\n    this.selectedFieldIds = this.adhocFieldConnectorService.getSelectedFieldIds();\n    const fieldInfosToRender = this.getSelectedFieldInfos();\n    await this.renderFieldsAsync(fieldInfosToRender);\n  }\n\n  /** @internal */\n  getSelectedFieldInfos(): LfFieldInfo[] {\n    this.allFieldInfos = this.adhocFieldConnectorService.getAllFieldInfos();\n    this.updateTemplateFields(this.allFieldInfos);\n    const fieldInfos: LfFieldInfo[] = this.allFieldInfos?.filter((fieldInfo) =>\n      (this.selectedFieldIds.has(fieldInfo.id) && !(fieldInfo as AdhocFieldInfo).inTemplateSelected)\n    );\n    return fieldInfos ?? [];\n  }\n\n  /** @internal */\n  private updateTemplateFields(fieldInfos: AdhocFieldInfo[]) {\n    fieldInfos?.forEach((fieldInfo) => {\n      if (this.templateFields?.includes(fieldInfo.id)) {\n        fieldInfo.inTemplateSelected = true;\n      }\n      else {\n        fieldInfo.inTemplateSelected = false;\n      }\n    });\n  }\n\n\n  /** @internal */\n  async onFieldValueChangedAsync(values: string[], fieldInfo: LfFieldInfo): Promise<void> {\n    this.fieldValuesChanged.emit(this.isValid());\n    this.setFieldValue(fieldInfo.id, values);\n  }\n}\n","<!--Copyright (c) Laserfiche.\r\nLicensed under the MIT License. See LICENSE in the project root for license information.-->\r\n\r\n<div class=\"adhoc-container\" [hidden]=\"showAdhocModal\">\r\n  <div>\r\n    <button\r\n      title=\"{{ ADD_REMOVE_FIELDS | async }}\"\r\n      id=\"adhoc-add-remove-button\"\r\n      class=\"lf-ellipsis-label sec-button lf-button adhoc-add-remove-button\"\r\n      (click)=\"addRemoveFieldsAsync()\"\r\n    >\r\n      {{ ADD_REMOVE_FIELDS | async }}\r\n    </button>\r\n    <div\r\n      class=\"fields-empty lf-ellipsis-label\"\r\n      title=\"{{ NO_ADDITIONAL_FIELDS_ASSIGNED | async }}\"\r\n      *ngIf=\"fieldsEmpty()\"\r\n    >\r\n      {{ NO_ADDITIONAL_FIELDS_ASSIGNED | async }}\r\n    </div>\r\n    <div class=\"responsive-form-container\">\r\n      <ng-template lfFieldView></ng-template>\r\n    </div>\r\n  </div>\r\n</div>\r\n<div [hidden]=\"!showAdhocModal\" class=\"addRemoveModal\" class=\"adhoc-modal\" >\r\n  <div class=\"adhoc-modal-content\" #adhocPanel tabindex=\"0\">\r\n    <lf-field-add-remove-component (clickBack)=\"onClickBackAsync()\"></lf-field-add-remove-component>\r\n  </div>\r\n</div>\r\n","// Copyright (c) Laserfiche.\r\n// Licensed under the MIT License. See LICENSE in the project root for license information.\r\n\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\nimport { StringUtils } from '@laserfiche/lf-js-utils';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\n/**\r\n * Pipe that formats a string '{0} of {1}' with the given parameters\r\n */\r\n@Pipe({\r\n  name: 'lfFieldGroupIndexDisplay'\r\n})\r\nexport class LfFieldGroupIndexDisplayPipe implements PipeTransform {\r\n\r\n  constructor() { }\r\n\r\n  /**\r\n   * Formats the given string with the two expected params\r\n   * @param res_0_of_1 Localized string in the form '{0} of {1}'\r\n   * @param currentIndex The current index of the group (0-indexed)\r\n   * @param totalNumber The total number of groups\r\n   * @returns The string formatted with the given numbers. Adds one to the current index.\r\n   * Returns undefined if the string does not contain 2 params\r\n   */\r\n  transform(res_0_of_1: Observable<string>, currentIndex: number, totalNumber: number,): Observable<string> {\r\n    const stringObservable = res_0_of_1.pipe(map((stringToFormat) => {\r\n      try {\r\n        return StringUtils.formatString(stringToFormat, [(currentIndex + 1).toString(), totalNumber.toString()]);\r\n      }\r\n      catch (err: any) {\r\n        console.warn('Unable to format string', err.message);\r\n        return stringToFormat;\r\n      }\r\n    }));\r\n    return stringObservable;\r\n  }\r\n\r\n}\r\n","// Copyright Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  Input,\n  Output\n} from '@angular/core';\nimport { AbstractControl, FormArray, FormBuilder, FormControl, FormGroup } from '@angular/forms';\nimport { FieldType } from '@laserfiche/lf-ui-components/shared';\nimport { AppLocalizationService } from '@laserfiche/lf-ui-components/internal-shared';\nimport { FieldDefinition } from '../utils/lf-field-internal-types';\nimport { FieldValue, TemplateFieldInfo } from '../utils/lf-field-types';\nimport { isDynamicField } from '../utils/metadata-utils';\n\n@Component({\n  selector: 'lf-field-group-component',\n  templateUrl: './lf-field-group.component.html',\n  styleUrls: ['./lf-field-group.component.css'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LfFieldGroupComponent {\n  /** @internal */\n  fieldDefinitions: FieldDefinition[] = [];\n  /** @internal */\n  fieldGroups: FormArray;\n  /** @internal */\n  fieldValues: Map<number, FieldValue> = new Map<number, FieldValue>();\n  /** @internal */\n  groupId: number = 0;\n  /** @internal */\n  dynamicFieldOptions: Map<number, string[][]> | undefined;\n\n  /** @internal */\n  @Output() fieldValuesChanged = new EventEmitter<{ fieldValue: FieldValue; indicesChanged?: number[] }>();\n  /** @internal */\n  showLoaderIndex: number | undefined = undefined;\n\n  /** @internal */\n  readonly res_0_of_1 = this.localizationService.getStringLaserficheObservable('0_OF_1', ['{0}', '{1}']);\n\n  /** @internal */\n  constructor(\n    /** @internal */\n    private fb: FormBuilder,\n    /** @internal */\n    private cdr: ChangeDetectorRef,\n    /** @internal */\n    public localizationService: AppLocalizationService\n  ) {\n    this.fieldGroups = this.fb.array([]);\n  }\n\n  /** @internal */\n  @Input()\n  getFieldValues = (): Map<number, FieldValue> => {\n    return this.fieldValues;\n  };\n\n  /** @internal */\n  @Input()\n  initAsync = async (\n    fieldDefinitions: FieldDefinition[],\n    dynamicFieldOptions?: Map<number, string[][]>\n  ): Promise<void> => {\n    this.fieldDefinitions = fieldDefinitions ?? [];\n    this.groupId = fieldDefinitions[0]?.fieldInfo?.groupId ?? 0;\n    this.dynamicFieldOptions = dynamicFieldOptions;\n    this.setFieldGroups(fieldDefinitions);\n    this.cdr.detectChanges();\n  };\n\n  /** @internal */\n  getOptions(fieldInfo: TemplateFieldInfo, index: number) {\n    const optionsForFieldInfo = this.dynamicFieldOptions?.get(fieldInfo.id);\n    const options = optionsForFieldInfo ? optionsForFieldInfo[index] : undefined;\n    return options;\n  }\n\n  /** @internal */\n  @Input()\n  forceValidation: () => boolean = () => {\n    let isValid: boolean = true;\n    const groups = this.fieldGroupControlsArray();\n    groups.forEach((group) => {\n      this.fieldDefinitions.forEach((definition) => {\n        const fieldInfo = definition.fieldInfo;\n        const control = group.get(fieldInfo.id.toString());\n        control?.markAsDirty();\n        control?.updateValueAndValidity();\n        const valid = control?.valid;\n        if (!valid) {\n          isValid = false;\n        }\n      });\n    });\n    return isValid;\n  };\n\n  /** @internal */\n  isLoading(fieldInfo: TemplateFieldInfo, currentIndex: number): boolean {\n    if (this.showLoaderIndex !== undefined) {\n      if (currentIndex === this.showLoaderIndex && isDynamicField(fieldInfo)) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  /** @internal */\n  @Input()\n  showLoader(index: number) {\n    this.showLoaderIndex = index;\n    this.cdr.detectChanges();\n  }\n\n  /** @internal */\n  private setFieldGroups(fieldDefinitions: FieldDefinition[]) {\n    this.fieldGroups.clear();\n    const numGroups = fieldDefinitions[0].fieldValues?.length ?? 1;\n    for (let fieldNumber = 0; fieldNumber < numGroups; fieldNumber++) {\n      const formGroup: FormGroup = new FormGroup({});\n      fieldDefinitions.forEach((fieldDef) => {\n        if (fieldDef.fieldValues && fieldDef.fieldValues.length !== numGroups) {\n          // TODO localize\n          throw new Error('Number of fieldValues is not ' + numGroups + ' for fieldId: ' + fieldDef.fieldInfo.id);\n        }\n        if (fieldDef.fieldInfo.fieldType === FieldType.Blob) {\n          console.warn('Blob field not supported');\n        } else if (!(fieldDef.fieldInfo.fieldType in FieldType)) {\n          throw new Error('FieldType not supported.');\n        } else {\n          this.addFieldFormControl(fieldDef, fieldNumber, formGroup);\n        }\n      });\n      this.fieldGroups.push(formGroup);\n    }\n  }\n\n  /** @internal */\n  private addFieldFormControl(fieldDef: FieldDefinition, fieldNumber: number, formGroup: FormGroup) {\n    const fieldValues = fieldDef.fieldValues;\n    const fieldValue = fieldValues ? fieldValues[fieldNumber] : '';\n    const fieldInfo = fieldDef.fieldInfo;\n\n    let initialValue: string | undefined;\n    if (fieldValue && fieldValue.length > 0) {\n      initialValue = fieldValue;\n    } else if (fieldInfo.defaultValue) {\n      initialValue = fieldInfo.defaultValue;\n    }\n\n    this.updateFieldValues(fieldInfo, initialValue, fieldNumber);\n    const formControl = new FormControl(initialValue ?? '');\n    formGroup.addControl(fieldInfo.id.toString(), formControl);\n  }\n\n  /** @internal */\n  private updateFieldValues(fieldInfo: TemplateFieldInfo, initialValue: string | undefined, fieldNumber: number) {\n    const prevValues = this.fieldValues.get(fieldInfo.id);\n    const newValue = { value: initialValue ?? '', position: (fieldNumber + 1).toString() };\n    if (prevValues) {\n      prevValues.values?.push(newValue);\n    } else {\n      const newConfig: FieldValue = {\n        fieldName: fieldInfo.name,\n        fieldId: fieldInfo.id,\n        fieldType: fieldInfo.fieldType,\n        groupId: fieldInfo.groupId ?? 0,\n        values: [newValue],\n      };\n      this.fieldValues.set(fieldInfo.id, newConfig);\n    }\n  }\n\n  /** @internal */\n  fieldDataChange(event: string, fieldInfo: TemplateFieldInfo, indexChanged: number) {\n    const fieldValue = this.fieldValues.get(fieldInfo.id);\n    if (fieldValue?.values) {\n      fieldValue.values[indexChanged]['value'] = event;\n    }\n    if (fieldValue) {\n      this.fieldValuesChanged.emit({ fieldValue, indicesChanged: [indexChanged] });\n    }\n  }\n\n  /** @internal */\n  getSingleField(index: number, fieldId: number): AbstractControl | null {\n    const group = this.fieldGroupControlsArray()[index];\n    const field = group.get(fieldId.toString());\n    return field;\n  }\n\n  /** @internal */\n  isValid(): boolean {\n    let isValid: boolean = true;\n    const groups = this.fieldGroupControlsArray();\n    groups.forEach((group) => {\n      this.fieldDefinitions.forEach((definition) => {\n        const fieldInfo = definition.fieldInfo;\n        const control = group.get(fieldInfo.id.toString());\n        const valid = control?.valid;\n        if (!valid) {\n          isValid = false;\n        }\n      });\n    });\n    return isValid;\n  }\n\n  /** @internal */\n  onDragAndDrop(event: CdkDragDrop<string[]>) {\n    const first: number = Math.min(event.previousIndex, event.currentIndex);\n    const last: number = Math.max(event.previousIndex, event.currentIndex);\n    const indicesChanged: number[] = [];\n    for (let tracker = first; tracker <= last; tracker++) {\n      indicesChanged.push(tracker);\n    }\n    moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\n    this.fieldDefinitions.forEach((fieldDef) => {\n      const fieldInfo = fieldDef.fieldInfo;\n      const fieldValue = this.fieldValues.get(fieldInfo.id);\n      moveItemInArray(fieldValue?.values ?? [], event.previousIndex, event.currentIndex);\n      this.resetPositionValues(fieldValue);\n      if (fieldValue) {\n        this.fieldValuesChanged.emit({ fieldValue, indicesChanged });\n      }\n    });\n  }\n\n  /** @internal */\n  fieldGroupControlsArray() {\n    return this.fieldGroups.controls;\n  }\n\n  /** @internal */\n  onClickDelete(index: number) {\n    this.fieldGroups.removeAt(index);\n    const numIndices = this.fieldGroupControlsArray().length;\n    const indicesChanged: number[] = [];\n    for (let tracker = index; tracker <= numIndices; tracker++) {\n      indicesChanged.push(tracker);\n    }\n    this.fieldValues.forEach((fieldValue) => {\n      fieldValue.values?.splice(index, 1);\n      this.resetPositionValues(fieldValue);\n      if (fieldValue) {\n        this.fieldValuesChanged.emit({ fieldValue, indicesChanged });\n      }\n    });\n  }\n\n  /** @internal */\n  private resetPositionValues(fieldValue: FieldValue | undefined) {\n    fieldValue?.values?.forEach((value, currIndex) => {\n      value['position'] = (currIndex + 1).toString();\n    });\n  }\n\n  /** @internal */\n  onClickAdd(currentIndex: number) {\n    const formGroup: FormGroup = new FormGroup({});\n    const numIndices = this.fieldGroupControlsArray().length + 1;\n    const indicesChanged: number[] = [];\n    for (let tracker = currentIndex + 1; tracker <= numIndices; tracker++) {\n      indicesChanged.push(tracker);\n    }\n    this.fieldDefinitions.forEach((fieldDef) => {\n      const fieldInfo = fieldDef.fieldInfo;\n      const fieldValue = this.fieldValues.get(fieldInfo.id);\n      let val: string | undefined;\n      if (fieldInfo.defaultValue) {\n        val = fieldInfo.defaultValue;\n      }\n      const newValue = {\n        value: val ?? '',\n        position: (currentIndex + 2).toString(),\n      };\n      fieldValue?.values?.splice(currentIndex + 1, 0, newValue);\n      this.resetPositionValues(fieldValue);\n      const formControl = new FormControl(val ?? '');\n      formGroup.addControl(fieldInfo.id.toString(), formControl);\n      if (fieldValue) {\n        this.fieldValuesChanged.emit({ fieldValue, indicesChanged });\n      }\n    });\n    this.fieldGroups.insert(currentIndex + 1, formGroup);\n    this.cdr.detectChanges();\n  }\n\n  /** @internal */\n  onClickUp(currentIndex: number) {\n    moveItemInArray(this.fieldGroupControlsArray(), currentIndex, currentIndex - 1);\n    this.fieldDefinitions.forEach((fieldDef) => {\n      const fieldInfo = fieldDef.fieldInfo;\n      const fieldValue = this.fieldValues.get(fieldInfo.id);\n      const prevOne = fieldValue?.values ? fieldValue.values[currentIndex - 1] : {};\n      prevOne['position'] = (Number.parseInt(prevOne['position']) + 1).toString();\n      const thisOne = fieldValue?.values ? fieldValue.values[currentIndex] : {};\n      thisOne['position'] = (Number.parseInt(thisOne['position']) - 1).toString();\n      moveItemInArray(fieldValue?.values ?? [], currentIndex, currentIndex - 1);\n      if (fieldValue) {\n        this.fieldValuesChanged.emit({ fieldValue, indicesChanged: [currentIndex, currentIndex - 1] });\n      }\n    });\n  }\n\n  /** @internal */\n  onClickDown(currentIndex: number) {\n    moveItemInArray(this.fieldGroupControlsArray(), currentIndex, currentIndex + 1);\n    this.fieldDefinitions.forEach((fieldDef) => {\n      const fieldInfo = fieldDef.fieldInfo;\n      const fieldValue = this.fieldValues.get(fieldInfo.id);\n      const nextOne = fieldValue?.values ? fieldValue.values[currentIndex + 1] : {};\n      nextOne['position'] = (Number.parseInt(nextOne['position']) - 1).toString();\n      const thisOne = fieldValue?.values ? fieldValue.values[currentIndex] : {};\n      thisOne['position'] = (Number.parseInt(thisOne['position']) + 1).toString();\n      moveItemInArray(fieldValue?.values ?? [], currentIndex, currentIndex + 1);\n      if (fieldValue) {\n        this.fieldValuesChanged.emit({ fieldValue, indicesChanged: [currentIndex, currentIndex + 1] });\n      }\n    });\n  }\n}\n","<!--Copyright (c) Laserfiche.\nLicensed under the MIT License. See LICENSE in the project root for license information.-->\n\n<div cdkDropList [cdkDropListData]=\"fieldGroupControlsArray()\" (cdkDropListDropped)=\"onDragAndDrop($event)\">\n    <div *ngFor=\"let group of fieldGroupControlsArray(); index as currentIndex\" cdkDrag class=\"lf-field-group\">\n        <div class=\"field-group-top-bar\">\n            <span class=\"drag-index-section\">\n                <span class=\"material-icons field-group-button field-group-drag-handle\" cdkDragHandle>\n                  drag_indicator\n                </span>\n                <span class=\"index-display\">{{res_0_of_1 | lfFieldGroupIndexDisplay: currentIndex :\n                    fieldGroupControlsArray().length | async}}</span>\n            </span>\n            <span class=\"field-group-buttons\">\n                <button class=\"field-group-button\" (click)=\"onClickAdd(currentIndex)\">\n                    <span class=\"material-icons\">\n                      add\n                    </span>\n                </button>\n                <button class=\"field-group-button\" [disabled]=\"currentIndex === 0\" (click)=\"onClickUp(currentIndex)\">\n                    <span class=\"material-icons\">\n                      arrow_upward\n                    </span>\n                </button>\n                <button class=\"field-group-button\" [disabled]=\"currentIndex >= (fieldGroupControlsArray().length - 1)\"\n                    (click)=\"onClickDown(currentIndex)\">\n                    <span class=\"material-icons\">\n                      arrow_downward\n                    </span>\n                </button>\n                <button class=\"field-group-button\" [disabled]=\"fieldGroupControlsArray().length <= 1\"\n                    (click)=\"onClickDelete(currentIndex)\">\n                    <span class=\"material-icons-outlined\">\n                      delete\n                    </span>\n                </button>\n            </span>\n        </div>\n        <div *ngFor=\"let fieldDef of fieldDefinitions\">\n            <span class=\"lf-field-container\" id=\"lf-field-container\">\n                <span *ngIf=\"fieldDef?.fieldInfo.name\" class=\"lf-field-title-container\">\n                    <span class=\"lf-field-title\" title=\"{{fieldDef?.fieldInfo.displayName}}\">{{fieldDef?.fieldInfo.displayName }}</span>\n                    <span class=\"lf-field-is-required\" *ngIf=\"fieldDef?.fieldInfo.isRequired\">*</span>\n                    <lf-loader-component *ngIf=\"isLoading(fieldDef.fieldInfo, currentIndex)\"></lf-loader-component>\n                </span>\n                <lf-field-base-component id=\"{{fieldDef.fieldInfo.name}}{{currentIndex}}\" [parentForm]=\"group\"\n                    [lfFieldFormControl]=\"getSingleField(currentIndex, fieldDef.fieldInfo.id)\"\n                    [lfFieldValue]=\"getSingleField(currentIndex, fieldDef.fieldInfo.id)?.value\"\n                    [lfFieldInfo]=\"fieldDef.fieldInfo\"\n                    [dynamicFieldValueOptions]=\"getOptions(fieldDef.fieldInfo, currentIndex)\"\n                    (fieldValueChange)=\"fieldDataChange($event, fieldDef.fieldInfo, currentIndex)\">\n                </lf-field-base-component>\n            </span>\n        </div>\n    </div>\n</div>\n","// Copyright (c) Laserfiche.\r\n// Licensed under the MIT License. See LICENSE in the project root for license information.\r\n\r\n/**\r\n * @internal\r\n */\r\nexport enum DropDownState {\r\n  DEFAULT = 'default',\r\n  LOADING = 'isLoading',\r\n  HAS_ERROR = 'hasError'\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nexport enum TemplateState {\r\n  DEFAULT = 'default',\r\n  LOADING = 'isLoading',\r\n  HAS_ERROR = 'hasError',\r\n  SHOW_TEMPLATE = 'showTemplate'\r\n}\r\n","// Copyright Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  OnDestroy,\n  ComponentRef,\n  ViewContainerRef,\n  AfterViewInit,\n  NgZone,\n  ChangeDetectorRef,\n} from '@angular/core';\nimport { MatSelectChange } from '@angular/material/select';\nimport { Observable, Subscription } from 'rxjs';\nimport { LfFieldMetadataConnectorService } from '../lf-field-metadata-connector.service';\nimport { LfFieldContainerDirective } from '../lf-field-container.directive';\nimport { LfFieldTemplateContainerService } from './lf-field-template-container.service';\nimport { LfFieldTemplateProviders } from './lf-field-template-container-types';\nimport {\n  FieldValue,\n  FieldValues,\n  LfFieldInfo,\n  TemplateFieldInfo,\n  TemplateInfo,\n  TemplateValue,\n} from '../field-components/utils/lf-field-types';\nimport { LfFieldComponent } from '../field-components/lf-field/lf-field.component';\nimport { LfFieldMultivalueComponent } from '../field-components/lf-field-multivalue/lf-field-multivalue.component';\nimport { LfFieldGroupComponent } from '../field-components/lf-field-group/lf-field-group.component';\nimport { FieldDefinition } from '../field-components/utils/lf-field-internal-types';\nimport { isDynamicField } from '../field-components/utils/metadata-utils';\nimport { FieldType } from '@laserfiche/lf-ui-components/shared';\nimport { AppLocalizationService } from '@laserfiche/lf-ui-components/internal-shared';\nimport { CoreUtils } from '@laserfiche/lf-js-utils';\nimport { DropDownState, TemplateState } from './lf-field-template-container-states';\n\n@Component({\n  selector: 'lf-field-template-container-component',\n  templateUrl: './lf-field-template-container.component.html',\n  styleUrls: ['./lf-field-template-container.component.css'],\n})\nexport class LfFieldTemplateContainerComponent extends LfFieldContainerDirective implements AfterViewInit, OnDestroy {\n  @Output() templateSelectedChange = new EventEmitter<number>();\n\n  /** @internal */\n  hideTemplate: boolean = false;\n  /** @internal */\n  availableTemplates: TemplateInfo[] = [];\n  /** @internal */\n  loadedTemplates: boolean = false;\n  /** @internal */\n  templateFieldContainerService!: LfFieldTemplateContainerService;\n  /** @internal */\n  templateErrorMessage: Observable<string> | undefined;\n  /** @internal */\n  readonly emptyTemplateName: Observable<string> = this.localizationService.getStringLaserficheObservable('NO_TEMPLATE_ASSIGNED');\n  /** @internal */\n  templateSelected: TemplateInfo | undefined;\n  /** @internal */\n  dynamicOptions: Map<number, string[][]> = new Map<number, string[][]>();\n  /** @internal */\n  private adhocFieldsSub: Subscription | undefined;\n  /** @internal */\n  private adhocDialogOpenedSub: Subscription | undefined;\n  /** @internal */\n  readonly AN_ERROR_OCCURED = this.localizationService.getStringLaserficheObservable('AN_ERROR_OCCURED');\n  /** @internal */\n  dropdownState: DropDownState = DropDownState.DEFAULT;\n  /** @internal */\n  templateState: TemplateState = TemplateState.DEFAULT;\n\n  /** @internal */\n  private readonly TEMPLATE_HAS_FAILED_TO_LOAD =\n    this.localizationService.getStringLaserficheObservable('TEMPLATE_HAS_FAILED_TO_LOAD');\n\n  /** @internal */\n  constructor(\n    /** @internal */\n    public metadataConnectorService: LfFieldMetadataConnectorService,\n    /** @internal */\n    private zone: NgZone,\n    /** @internal */\n    private localizationService: AppLocalizationService,\n    /** @internal */\n    private ref: ChangeDetectorRef\n  ) {\n    super(metadataConnectorService);\n  }\n\n  /** @internal */\n  ngAfterViewInit() {\n    this.adhocFieldsSub = this.metadataConnectorService.adhocFieldDataUpdated().subscribe(async () => {\n      if (this.templateFieldContainerService) {\n        await this.updateTemplateFieldsAsync();\n      }\n    });\n    this.adhocDialogOpenedSub = this.metadataConnectorService\n      .getAddRemoveContainerToggled()\n      .subscribe(async (addRemovedOpened) => {\n        this.hideTemplate = addRemovedOpened;\n      });\n  }\n\n  /** @internal */\n  ngOnDestroy(): void {\n    this.adhocFieldsSub?.unsubscribe();\n    this.adhocDialogOpenedSub?.unsubscribe();\n    this.resetComponentValues();\n  }\n\n  @Input()\n  initAsync = async (providers: LfFieldTemplateProviders, templateIdentifier?: number | string): Promise<void> => {\n    await this.zone.run(async () => {\n      this.resetComponentValues();\n      this.templateFieldContainerService = CoreUtils.validateDefined(\n        providers.templateFieldContainerService,\n        'templateFieldContainerService'\n      );\n      await this.selectTemplateAsync(templateIdentifier);\n      await this.updateTemplateFieldsAsync();\n      this.ref.detectChanges();\n    });\n  };\n\n  @Input()\n  clearAsync = async (): Promise<void> => {\n    await this.zone.run(async () => {\n      this.resetComponentValues();\n      this.metadataConnectorService.clearAllFieldValues();\n      await this.renderFieldsAsync(this.allFieldInfos);\n    });\n  };\n\n  @Input()\n  getTemplateValue: () => TemplateValue | undefined = () => {\n    return this.zone.run(() => {\n      if (!this.templateSelected) {\n        return undefined;\n      }\n\n      const fieldValues: { [key: string]: FieldValue } = {};\n      this.componentRefs?.forEach((componentRef) => {\n        const fieldValue = componentRef.instance.getFieldValue();\n        // TODO: should key by id, not name?\n        fieldValues[fieldValue.fieldName as string] = fieldValue;\n      });\n      this.groupComponentRefs?.forEach((componentRef) => {\n        const mappedFieldValues = componentRef.instance.getFieldValues();\n        mappedFieldValues.forEach((fieldValue) => {\n          // TODO: should key by id, not name?\n          fieldValues[fieldValue.fieldName as string] = fieldValue;\n        });\n      });\n      return { name: this.templateSelected.name as string, id: this.templateSelected.id, fieldValues };\n    });\n  };\n\n  /** @internal */\n  get isDropdownError(): boolean {\n    return this.dropdownState === DropDownState.HAS_ERROR;\n  }\n\n  /** @internal */\n  get isDropdownLoading(): boolean {\n    return this.dropdownState === DropDownState.LOADING;\n  }\n\n  /** @internal */\n  get isDropdownDefault(): boolean {\n    return this.dropdownState === DropDownState.DEFAULT;\n  }\n\n  /** @internal */\n  get isTemplateLoading(): boolean {\n    return this.templateState === TemplateState.LOADING;\n  }\n\n  /** @internal */\n  get isTemplateError(): boolean {\n    return this.templateState === TemplateState.HAS_ERROR;\n  }\n\n  /** @internal */\n  get isTemplateDisplay(): boolean {\n    return this.templateState === TemplateState.SHOW_TEMPLATE;\n  }\n\n  /** @internal */\n  private resetComponentValues() {\n    this.templateSelected = undefined;\n    this.allFieldInfos = [];\n    this.templateErrorMessage = undefined;\n    this.loadedTemplates = false;\n    this.availableTemplates = [];\n    this.allFieldValues = {};\n    this.metadataConnectorService.setAllFieldValues({});\n    this.templateState = TemplateState.DEFAULT;\n  }\n\n  /** @internal */\n  async renderFieldsAsync(fieldInfos: (TemplateFieldInfo | LfFieldInfo)[]): Promise<void> {\n    if (this.templateState === TemplateState.SHOW_TEMPLATE) {\n      const vf = this.lfFieldView.viewContainerRef;\n      vf.clear();\n      this.componentRefs = [];\n      this.groupComponentRefs = [];\n\n      const fieldGroups: Map<number, FieldDefinition[]> = new Map<number, FieldDefinition[]>();\n      for (const fieldInfo of fieldInfos) {\n        const values = this.getValuesById(fieldInfo.id) ?? [];\n        const templateFieldInfo: TemplateFieldInfo = fieldInfo as TemplateFieldInfo;\n        if (templateFieldInfo?.groupId && fieldInfo.isMultiValue) {\n          const groupCurrentFieldDefinitions = fieldGroups.get(templateFieldInfo.groupId);\n          const newDef: FieldDefinition = {\n            fieldInfo: templateFieldInfo,\n            fieldValues: values.length > 0 ? values : [''],\n          };\n          if (groupCurrentFieldDefinitions) {\n            this.addDefinitionToExistingGroup(groupCurrentFieldDefinitions, newDef);\n          } else {\n            this.createAndAddNewGroupRef(vf, templateFieldInfo.groupId, fieldGroups, newDef);\n          }\n        } else if (fieldInfo.isMultiValue) {\n          const multivalueComponentRef = vf.createComponent(LfFieldMultivalueComponent);\n          this.componentRefs.push(multivalueComponentRef);\n          await this.initializeMultivalueComponentAsync(multivalueComponentRef, fieldInfo, values);\n        } else {\n          const fieldComponentRef = vf.createComponent(LfFieldComponent);\n          this.componentRefs.push(fieldComponentRef);\n          await this.initializeFieldComponentAsync(fieldComponentRef, fieldInfo, values?.length > 0 ? values[0] : '');\n        }\n      }\n      for (const mapItem of fieldGroups) {\n        await this.initializeFieldGroupAsync(mapItem);\n      }\n    }\n    else {\n      console.warn(`Fields not displayed in current template state: ${this.templateState}.`);\n    }\n  }\n\n  /** @internal */\n  private async initializeFieldGroupAsync(mapItem: [number, FieldDefinition[]]) {\n    const groupId = mapItem[0];\n    const group = mapItem[1];\n    const fieldGroupComponentRef = this.groupComponentRefs?.find((component) => component.instance.groupId === groupId);\n    if (fieldGroupComponentRef) {\n      await this.initializeFieldGroupComponentAsync(fieldGroupComponentRef, group);\n    } else {\n      console.warn('Unable to initialize fieldGroup', groupId);\n    }\n  }\n\n  /** @internal */\n  private addDefinitionToExistingGroup(groupCurrentFieldDefinitions: FieldDefinition[], newDef: FieldDefinition) {\n    groupCurrentFieldDefinitions.push(newDef);\n  }\n\n  /** @internal */\n  private createAndAddNewGroupRef(\n    vf: ViewContainerRef,\n    groupId: number,\n    fieldGroups: Map<number, FieldDefinition[]>,\n    newDef: FieldDefinition\n  ) {\n    const fieldGroupComponentRef = vf.createComponent(LfFieldGroupComponent);\n    fieldGroupComponentRef.instance.groupId = groupId;\n    this.groupComponentRefs.push(fieldGroupComponentRef);\n    fieldGroups.set(groupId, [newDef]);\n  }\n\n  /** @internal */\n  private async initializeFieldGroupComponentAsync(\n    fieldGroupComponentRef: ComponentRef<LfFieldGroupComponent>,\n    group: FieldDefinition[]\n  ) {\n    const firstLength = group[0]?.fieldValues?.length ?? 1;\n    const sameSizeGroups = group.every((def) => (def.fieldValues?.length ?? 1) === firstLength);\n    if (sameSizeGroups) {\n      await fieldGroupComponentRef.instance.initAsync(group, this.dynamicOptions);\n      fieldGroupComponentRef.instance.fieldValuesChanged.subscribe(\n        async (fieldChange: { fieldValue: FieldValue; indicesChanged: number[] }) => {\n          const fieldValue = fieldChange.fieldValue;\n          const id = fieldValue.fieldId;\n          const vals: string[] = fieldValue.values ? fieldValue.values?.map((value) => value['value'] ?? '') : [''];\n          const fieldInfo = this.allFieldInfos.find((fieldInfo) => fieldInfo.id === id) as TemplateFieldInfo;\n          await this.onFieldValueChangedAsync(vals, fieldInfo, fieldChange.indicesChanged);\n        }\n      );\n    }\n  }\n\n  /** @internal */\n  async fieldComponentInitAsync(\n    fieldComponentRef: ComponentRef<LfFieldComponent>,\n    fieldInfo: LfFieldInfo,\n    value: string\n  ) {\n    const optionsForFieldInfo = this.dynamicOptions.get(fieldInfo.id);\n    await fieldComponentRef.instance.initAsync(\n      fieldInfo,\n      value,\n      optionsForFieldInfo ? optionsForFieldInfo[0] : undefined\n    );\n  }\n\n  /** @internal */\n  async multivalueComponentInitAsync(\n    multivalueFieldComponentRef: ComponentRef<LfFieldMultivalueComponent>,\n    fieldInfo: LfFieldInfo,\n    values: string[]\n  ) {\n    await multivalueFieldComponentRef.instance.initAsync(fieldInfo, values, this.dynamicOptions.get(fieldInfo.id));\n  }\n\n  /** @internal */\n  compareTemplateInfoFunc(object1: TemplateInfo, object2: TemplateInfo) {\n    return object1 && object2 && object1.id == object2.id;\n  }\n\n  /** @internal */\n  async onToggleDropdownAsync(open: boolean): Promise<void> {\n    if (open && !this.loadedTemplates) {\n      try {\n        this.dropdownState = DropDownState.LOADING;\n        this.availableTemplates = await this.templateFieldContainerService.getAvailableTemplatesAsync();\n        this.dropdownState = DropDownState.DEFAULT;\n        this.loadedTemplates = true;\n        if (this.availableTemplates.length === 0) {\n          this.templateState = TemplateState.DEFAULT;\n        }\n      }\n      catch (err) {\n        this.dropdownState = DropDownState.HAS_ERROR;\n        this.templateSelected = undefined;\n        this.templateState = TemplateState.DEFAULT;\n        this.ref.detectChanges();\n        console.error('getAvailableTemplatesAsync', err);\n      }\n    }\n  }\n\n  /** @internal */\n  async onTemplateChangedAsync(event: MatSelectChange): Promise<void> {\n    this.templateSelected = (event.value as TemplateInfo) ?? undefined;\n    await this.updateTemplateFieldsAsync();\n    this.templateSelectedChange.emit(this.templateSelected?.id);\n  }\n\n  /** @internal */\n  private async selectTemplateAsync(id: number | string | undefined): Promise<void> {\n    if (id === undefined) {\n      this.templateSelected = undefined;\n    } else {\n      try {\n        this.templateState = TemplateState.LOADING;\n        this.templateSelected = (await this.templateFieldContainerService.getTemplateDefinitionAsync(id)) as TemplateInfo;\n        if (!this.loadedTemplates && this.templateSelected) {\n          this.availableTemplates = [this.templateSelected];\n        }\n        this.templateState = TemplateState.SHOW_TEMPLATE;\n      }\n      catch (error: any) {\n        this.templateErrorMessage = this.AN_ERROR_OCCURED;\n        console.error('getTemplateDefinitionAsync failed: ' + error.message);\n        this.templateState = TemplateState.HAS_ERROR;\n      }\n    }\n  }\n\n  /** @internal */\n  private async updateTemplateFieldsAsync(): Promise<void> {\n    await this.updateTemplateFieldInfoAsync();\n    this.allFieldValues = this.metadataConnectorService.getAllFieldValues() ?? {};\n    const newFieldIds: number[] = this.allFieldInfos.map((fieldInfo) => fieldInfo.id);\n    this.metadataConnectorService.selectTemplateFields(newFieldIds);\n    await this.renderFieldsAsync(this.allFieldInfos);\n  }\n\n  /** @internal */\n  private async updateTemplateFieldInfoAsync(): Promise<void> {\n    await this.updateAllFieldInfosFromServiceAsync();\n\n    for (const fieldInfo of this.allFieldInfos) {\n      const fieldInfoAsTemplateFieldInfo: TemplateFieldInfo = fieldInfo as TemplateFieldInfo;\n      const dynamicOptions = this.getOrCreateDynamicOptions(fieldInfo);\n      const isBaseDynamicField = isDynamicField(fieldInfo) && fieldInfoAsTemplateFieldInfo.rule?.ancestors.length === 0;\n      if (isBaseDynamicField) {\n        try {\n          const fieldValue = this.getOrCreateFieldValue(fieldInfo.id);\n          const numValues = fieldValue.values?.length ?? 1;\n          const dynamicFieldValueOptions = await this.getDynamicFieldValueOptionsAsync(0);\n          for (let index = 0; index < numValues; index++) {\n            dynamicOptions[index] = dynamicFieldValueOptions[fieldInfo.id];\n            if (dynamicOptions[index] === undefined) {\n              console.warn(`Could not get dynamic field options of field ${fieldInfo.name} id ${fieldInfo.id}`);\n              continue;\n            }\n            const values: string[] = this.getValueIfSingleOption(dynamicOptions[index]);\n            await this.updateDynamicFieldsAsync(fieldInfo, values, index);\n          }\n        } catch (err: unknown) {\n          this.templateState = TemplateState.HAS_ERROR;\n          this.templateErrorMessage = this.TEMPLATE_HAS_FAILED_TO_LOAD;\n          var consoleErrMsg: string = 'getDynamicFieldValueOptionsAsync failed';\n          if (err instanceof Error)\n          {\n            consoleErrMsg = consoleErrMsg + ': ' + err.message;\n          }\n          console.error(consoleErrMsg);\n          throw err;\n        }\n      }\n    }\n  }\n\n  /** @internal */\n  private getValueIfSingleOption(dynamicOptions: string[]) {\n    const values: string[] = [];\n    if (dynamicOptions?.length === 1) {\n      values.push(dynamicOptions[0]);\n    }\n    return values;\n  }\n\n  /** @internal */\n  private async updateAllFieldInfosFromServiceAsync() {\n    this.allFieldInfos = [];\n    if (this.templateSelected) {\n      try {\n        this.templateState = TemplateState.LOADING;\n        const fieldInfos = await this.templateFieldContainerService.getTemplateFieldsAsync(this.templateSelected.id);\n        this.allFieldInfos = fieldInfos.filter((val) => {\n          const validFieldType: boolean = val.fieldType in FieldType && val.fieldType !== FieldType.Blob;\n          if (!validFieldType) {\n            console.warn(`Invalid FieldType: ${val.fieldType}. Will not display field with name: ${val.name}`);\n          }\n          return validFieldType;\n        });\n        this.templateState = TemplateState.SHOW_TEMPLATE;\n      }\n      catch (err: unknown) {\n        this.templateErrorMessage = this.TEMPLATE_HAS_FAILED_TO_LOAD;\n        var consoleErrMsg = 'getTemplateFieldsAsync failed';\n        if (err instanceof Error)\n        {\n          consoleErrMsg = consoleErrMsg + ': ' + err.message;\n        }\n        console.error(consoleErrMsg);\n        this.templateState = TemplateState.HAS_ERROR;\n      }\n      finally {\n        this.ref.detectChanges();\n      }\n    }\n  }\n\n  /** @internal */\n  private getOrCreateDynamicOptions(fieldInfo: TemplateFieldInfo | LfFieldInfo) {\n    let dynamicOptions = this.dynamicOptions.get(fieldInfo.id);\n    if (!dynamicOptions) {\n      const defaultNone = [[]];\n      this.dynamicOptions.set(fieldInfo.id, defaultNone);\n      dynamicOptions = this.dynamicOptions.get(fieldInfo.id) ?? defaultNone;\n    }\n    return dynamicOptions;\n  }\n\n  /** @internal */\n  async onFieldValueChangedAsync(\n    fieldValues: string[],\n    lfFieldInfo: TemplateFieldInfo,\n    indicesChanged?: number[]\n  ): Promise<void> {\n    this.fieldValuesChanged.emit(this.isValid());\n    let indicesOfValueChanged = indicesChanged;\n    if (!indicesOfValueChanged) {\n      indicesOfValueChanged = [...Array(fieldValues.length).keys()];\n    }\n    if (isDynamicField(lfFieldInfo)) {\n      this.setFieldValue(lfFieldInfo.id, fieldValues);\n      for (const indexChanged of indicesOfValueChanged) {\n        this.showLoader(indexChanged);\n        const fieldInfoOptions = this.getOrCreateDynamicOptions(lfFieldInfo);\n        await CoreUtils.yieldAsync();\n        const fieldOptions = fieldInfoOptions[indexChanged];\n        if (!fieldOptions) {\n          const isBaseDynamicField = isDynamicField(lfFieldInfo) && lfFieldInfo.rule?.ancestors.length === 0;\n          if (isBaseDynamicField) {\n            await this.addFieldOptionsForIndexAsync(indexChanged, fieldInfoOptions, lfFieldInfo);\n          }\n        }\n        await this.updateDynamicFieldsAsync(lfFieldInfo, fieldValues, indexChanged);\n      }\n      await this.renderFieldsAsync(this.allFieldInfos);\n    } else {\n      this.setFieldValue(lfFieldInfo.id, fieldValues);\n    }\n  }\n\n  /** @internal */\n  private async addFieldOptionsForIndexAsync(\n    indexChanged: number,\n    fieldInfoOptions: string[][],\n    lfFieldInfo: TemplateFieldInfo\n  ) {\n    try {\n      const dynamicFieldValueOptions = await this.getDynamicFieldValueOptionsAsync(indexChanged);\n      fieldInfoOptions[indexChanged] = dynamicFieldValueOptions[lfFieldInfo.id];\n      if (fieldInfoOptions[indexChanged] === undefined) {\n        console.warn(\n          `Could not get dynamic field options of field ${lfFieldInfo.name} id ${lfFieldInfo.id}, index ${indexChanged}`\n        );\n      }\n    }\n    catch (error) {\n      this.templateState = TemplateState.HAS_ERROR;\n      console.error('getDynamicFieldValueOptionsAsync failed:', error);\n    }\n  }\n\n  /** @internal */\n  private showLoader(indexChanged: number) {\n    for (const fieldComponent of this.componentRefs) {\n      if (isDynamicField(fieldComponent.instance.lfFieldInfo)) {\n        fieldComponent.instance.isLoading = true;\n      }\n    }\n    this.groupComponentRefs.forEach((component) => {\n      component.instance.showLoader(indexChanged);\n    });\n  }\n\n  /** @internal */\n  private async updateDynamicFieldsAsync(\n    fieldInfo: TemplateFieldInfo,\n    values: string[],\n    indexChanged: number\n  ): Promise<void> {\n    this.setFieldValue(fieldInfo.id, values);\n    const children = this.getDynamicFieldChildren(fieldInfo);\n    if (!children || children.length === 0) {\n      return;\n    }\n    try {\n      const dynamicFieldValueOptions = await this.getDynamicFieldValueOptionsAsync(indexChanged);\n      for (const childFieldInfo of children) {\n        const childId = childFieldInfo.id;\n        if (!(childId in dynamicFieldValueOptions)) {\n          console.warn(`Could not get dynamic field options of field ${childFieldInfo.name} id ${childFieldInfo.id}`);\n          continue;\n        }\n\n        const dynamicFieldOptions = this.getOrCreateDynamicOptions(childFieldInfo);\n        dynamicFieldOptions[indexChanged] = dynamicFieldValueOptions[childId] ?? [];\n\n        const childFieldValue: FieldValue = this.getUpdatedChildValue(childFieldInfo, dynamicFieldOptions, indexChanged);\n        const stringValues = childFieldValue.values?.map((val) => val['value']) ?? [''];\n        await this.updateDynamicFieldsAsync(childFieldInfo, stringValues, indexChanged);\n      }\n    }\n    catch (error) {\n      this.templateState = TemplateState.HAS_ERROR;\n      console.error('getDynamicFieldValueOptionsAsync:', error);\n    }\n  }\n\n  /** @internal */\n  private getUpdatedChildValue(\n    childFieldInfo: TemplateFieldInfo,\n    dynamicFieldOptions: string[][],\n    indexChanged: number\n  ) {\n    const childFieldValues: FieldValue = this.getOrCreateFieldValue(childFieldInfo.id);\n    const optionsForIndex = dynamicFieldOptions[indexChanged];\n    if (optionsForIndex?.length === 1) {\n      if (childFieldValues.values) {\n        childFieldValues.values[indexChanged] = { value: optionsForIndex[0], position: (indexChanged + 1).toString() };\n      } else {\n        childFieldValues.values = [{ value: optionsForIndex[0], position: '1' }];\n      }\n    } else {\n      if (childFieldValues.values) {\n        childFieldValues.values[indexChanged] = { value: '', position: (indexChanged + 1).toString() };\n      } else {\n        childFieldValues.values = [{ value: '', position: '1' }];\n      }\n    }\n    return childFieldValues;\n  }\n\n  /** @internal */\n  private async getDynamicFieldValueOptionsAsync(indexChanged: number): Promise<{ [fieldId: number]: string[] }> {\n    const relevantValues: FieldValues = this.getRelevantValuesForIndex(indexChanged);\n    if (!this.templateSelected?.id) {\n      throw new Error('Unexpected: templateSelected is undefined');\n    }\n    this.templateState = TemplateState.LOADING;\n    const dynamicFieldValueOptions = await this.templateFieldContainerService.getDynamicFieldValueOptionsAsync(\n      this.templateSelected.id,\n      relevantValues\n    );\n    this.templateState = TemplateState.SHOW_TEMPLATE;\n    this.ref.detectChanges();\n    return dynamicFieldValueOptions;\n  }\n\n  /** @internal */\n  private getRelevantValuesForIndex(indexChanged: number) {\n    const dynamicFieldValues: FieldValues = this.getDynamicFieldValues();\n    const relevantValues: FieldValues = {};\n    for (const id in dynamicFieldValues) {\n      const value = dynamicFieldValues[id];\n      const newVal: FieldValue = {\n        fieldId: value.fieldId,\n        fieldName: value.fieldName,\n        fieldType: value.fieldType,\n        groupId: value.groupId,\n      };\n      if (value.values) {\n        newVal.values = [value.values[indexChanged]];\n      }\n      relevantValues[value.fieldId] = newVal;\n    }\n    return relevantValues;\n  }\n\n  /** @internal */\n  private getDynamicFieldChildren(fieldInfo: TemplateFieldInfo): TemplateFieldInfo[] | undefined {\n    if (!isDynamicField(fieldInfo)) {\n      return undefined;\n    }\n\n    const parentId = fieldInfo.id;\n    const children = this.allFieldInfos.filter((templateFieldInfo) =>\n      (templateFieldInfo as TemplateFieldInfo).rule?.ancestors.includes(parentId)\n    );\n    return children;\n  }\n\n  /** @internal */\n  private getDynamicFieldValues(): FieldValues {\n    const result: FieldValues = {};\n    for (const fieldInfo of this.allFieldInfos) {\n      const fieldId = fieldInfo.id;\n      if (isDynamicField(fieldInfo) && fieldId in this.allFieldValues) {\n        result[fieldId] = this.allFieldValues[fieldId];\n      }\n    }\n    return result;\n  }\n}\n","<!--Copyright (c) Laserfiche.\r\nLicensed under the MIT License. See LICENSE in the project root for license information.-->\r\n\r\n<div [hidden]=\"hideTemplate\">\r\n  <mat-form-field class=\"lf-field lf-template-picker lf-dropdown\">\r\n    <ng-template #showDefaultEmptyTemplate>\r\n      <mat-label class=\"lf-dropdown-label\">\r\n        {{ emptyTemplateName | async }}\r\n      </mat-label>\r\n    </ng-template>\r\n    <mat-select\r\n      panelClass=\"lf-dropdown-overlay\" \r\n      [placeholder]=\"emptyTemplateName | async\"\r\n      name=\"template-dropdown\"\r\n      id=\"template-dropdown\"\r\n      class=\"lf-dropdown\"\r\n      (selectionChange)=\"onTemplateChangedAsync($event)\"\r\n      (openedChange)=\"onToggleDropdownAsync($event)\"\r\n      [(value)]=\"templateSelected\"\r\n      [compareWith]=\"compareTemplateInfoFunc\"\r\n    >\r\n      <mat-option selected *ngIf=\"isDropdownDefault\">{{ emptyTemplateName | async }}</mat-option>\r\n      <mat-option selected *ngIf=\"isDropdownError\" class=\"dropdown-error-message\">{{ AN_ERROR_OCCURED | async }}</mat-option>\r\n      <div *ngIf=\"isDropdownDefault\">\r\n        <mat-option *ngFor=\"let template of availableTemplates\" [value]=\"template\"\r\n          >{{template.displayName}}\r\n        </mat-option>\r\n      </div>\r\n    </mat-select>\r\n  </mat-form-field>\r\n  <ng-container *ngIf=\"isTemplateLoading; else checkIfHasError\">\r\n    <lf-loader-component></lf-loader-component>\r\n  </ng-container>\r\n  <ng-template #checkIfHasError>\r\n    <ng-container *ngIf=\"isTemplateError; else checkIfDisplay\">\r\n      <div class=\"error-message\">{{ templateErrorMessage | async }}</div>\r\n    </ng-container>\r\n    <ng-template #checkIfDisplay>\r\n      <ng-container *ngIf=\"isTemplateDisplay; else emptyFieldView\">\r\n        <div class=\"responsive-form-container\">\r\n          <ng-template lfFieldView></ng-template>\r\n        </div>\r\n      </ng-container>\r\n    <ng-template #emptyFieldView></ng-template>\r\n    </ng-template>\r\n  </ng-template>\r\n</div>\r\n","// Copyright (c) Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport {\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  Input,\n  NgZone,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport { LfFieldContainerService } from './lf-field-container.service';\nimport { LfFieldAdhocContainerComponent } from '../lf-field-adhoc-container/lf-field-adhoc-container.component';\nimport { LfFieldTemplateContainerComponent } from '../lf-field-template-container/lf-field-template-container.component';\nimport { FieldValue, LfFieldInfo, TemplateValue } from '../field-components/utils/lf-field-types';\nimport { AppLocalizationService } from '@laserfiche/lf-ui-components/internal-shared';\nimport { Observable, of } from 'rxjs';\nimport { CoreUtils } from '@laserfiche/lf-js-utils';\n\n@Component({\n  selector: 'lf-field-container-component',\n  templateUrl: './lf-field-container.component.html',\n  styleUrls: ['./lf-field-container.component.css']\n})\nexport class LfFieldContainerComponent {\n  @Input() collapsible: boolean = false;\n  @Input() start_collapsed: boolean = false;\n\n  @Output() fieldValuesChanged = new EventEmitter<boolean>();\n  @Output() templateSelectedChanged = new EventEmitter<number>();\n  @Output() dialogOpened = new EventEmitter<void>();\n  @Output() dialogClosed = new EventEmitter<void>();\n\n  /** @internal */\n  @ViewChild(LfFieldTemplateContainerComponent) templateContainer!: LfFieldTemplateContainerComponent;\n  /** @internal */\n  @ViewChild(LfFieldAdhocContainerComponent) adhocContainer!: LfFieldAdhocContainerComponent;\n\n  /** @internal */\n  private lfFieldContainerService!: LfFieldContainerService;\n\n  /** @internal */\n  panelOpenState: boolean = this.start_collapsed;\n  /** @internal */\n  readonly FIELDS = this.localizationService.getStringLaserficheObservable('FIELDS');\n\n  /** @internal */\n  readonly TEMPLATE = this.localizationService.getStringLaserficheObservable('TEMPLATE');\n\n  /** @internal */\n  SELECTED_TEMPLATE_NAME = this.getSelectedTemplateName();\n\n  /** @internal */\n  getSelectedTemplateName(): Observable<string> {\n    const templateSelected = this.templateContainer?.templateSelected;\n    if (templateSelected) {\n      return of(templateSelected.displayName);\n    }\n    else {\n      return this.templateContainer?.emptyTemplateName;\n    }\n  }\n\n  /** @internal */\n  constructor(\n    /** @internal */\n    private ref: ChangeDetectorRef,\n    /** @internal */\n    private zone: NgZone,\n    /** @internal */\n    public localizationService: AppLocalizationService\n  ) { }\n\n  @Input()\n  initAsync = async (\n    lfFieldContainerService: LfFieldContainerService,\n    templateIdentifier?: number | string\n  ): Promise<void> => {\n    this.ref.detectChanges();\n    this.lfFieldContainerService = CoreUtils.validateDefined(\n      lfFieldContainerService,\n      'lfFieldContainerService'\n    );\n    await this.zone.run(async () => {\n      await this.adhocContainer.initAsync(this.lfFieldContainerService);\n      await this.templateContainer.initAsync(\n        { templateFieldContainerService: this.lfFieldContainerService },\n        templateIdentifier\n      );\n      this.SELECTED_TEMPLATE_NAME = this.getSelectedTemplateName();\n    });\n\n  };\n\n  @Input()\n  forceValidation = (): boolean => {\n    const templateIsValid: boolean = this.templateContainer.forceValidation();\n    const adhocIsValid: boolean = this.adhocContainer.forceValidation();\n    return templateIsValid && adhocIsValid;\n  };\n\n  @Input()\n  clearAsync = async (): Promise<void> => {\n    await this.templateContainer.clearAsync();\n    await this.adhocContainer.clearAsync();\n  };\n\n  @Input()\n  getFieldValues = (): { [fieldName: string]: FieldValue } => {\n    return this.zone.run(() => {\n      const adhocFieldValues: { [fieldName: string]: FieldValue } =\n        this.adhocContainer.getFieldValues();\n      const templateFieldValues: { [fieldName: string]: FieldValue } =\n        this.templateContainer.getTemplateValue()?.fieldValues ?? {};\n      return { ...adhocFieldValues, ...templateFieldValues };\n    });\n  };\n\n  @Input()\n  getNumAdhocFields = (): number => {\n    const adhocFields = Object.keys(this.adhocContainer.getFieldValues() ?? {}).length;\n    return adhocFields ?? 0;\n  };\n\n  @Input()\n  resetFieldDataAsync = async (\n    fields: { value: FieldValue; definition: LfFieldInfo }[]\n  ): Promise<void> => {\n    await this.zone.run(async () => {\n      await this.adhocContainer.resetFieldDataAsync(fields);\n    });\n  };\n\n  @Input()\n  updateFieldValuesAsync = async (values: FieldValue[]): Promise<void> => {\n    await this.zone.run(async () => {\n      await this.adhocContainer.updateFieldValuesAsync(values);\n    });\n  };\n\n  @Input()\n  getTemplateValue = (): TemplateValue | undefined => {\n    return this.templateContainer.getTemplateValue();\n  };\n\n  /** @internal */\n  onFieldValuesChanged(): void {\n    const templateIsValid: boolean = this.templateContainer.isValid();\n    const adhocIsValid: boolean = this.adhocContainer.isValid();\n    this.fieldValuesChanged.emit(templateIsValid && adhocIsValid);\n  }\n\n  /** @internal */\n  onTemplateSelectedChange(selectedTemplateId: number) {\n    this.templateSelectedChanged.emit(selectedTemplateId);\n    this.SELECTED_TEMPLATE_NAME = this.getSelectedTemplateName();\n  }\n\n  /** @internal */\n  onDialogOpened() {\n    this.dialogOpened.emit();\n  }\n\n  /** @internal */\n  onDialogClosed() {\n    this.dialogClosed.emit();\n  }\n}\n","<!--Copyright (c) Laserfiche.\nLicensed under the MIT License. See LICENSE in the project root for license information.-->\n\n<div class=\"lf-template-and-adhoc-container\">\n  <mat-expansion-panel [hideToggle]=\"!collapsible\" [expanded]=\"!collapsible || !start_collapsed\" [disabled]=\"!collapsible\"\n      (opened)=\"panelOpenState = true\" (closed)=\"panelOpenState = false\" class=\"template-adhoc-expansion-panel\">\n    <mat-expansion-panel-header class=\"template-adhoc-expansion-panel\">\n        <mat-panel-title>\n            <p title=\"{{TEMPLATE | async}}\" class=\"lf-text-label lf-ellipsis-label field-label\">{{TEMPLATE | async}}</p>\n            <p title=\"{{SELECTED_TEMPLATE_NAME | async}}\" *ngIf=\"!panelOpenState && collapsible\"\n                class=\"lf-sub-label lf-text-body field-sub-label lf-ellipsis-label\">\n                &nbsp;&nbsp;&nbsp;&nbsp;{{SELECTED_TEMPLATE_NAME | async}}</p>\n        </mat-panel-title>\n    </mat-expansion-panel-header>\n    <lf-field-template-container-component (fieldValuesChanged)=\"onFieldValuesChanged()\"\n        (templateSelectedChange)=\"onTemplateSelectedChange($event)\"></lf-field-template-container-component>\n    </mat-expansion-panel>\n  <hr class=\"combo-container-separater\">\n  <mat-expansion-panel [expanded]=\"!collapsible || !start_collapsed\" class=\"template-adhoc-expansion-panel\"\n      [hideToggle]=\"!collapsible\" [disabled]=\"!collapsible\">\n    <mat-expansion-panel-header class=\"template-adhoc-expansion-panel\">\n        <mat-panel-title>\n            <p title=\"{{FIELDS | async}}\" class=\"lf-text-label field-label lf-ellipsis-label\">{{FIELDS | async}}</p>\n        </mat-panel-title>\n    </mat-expansion-panel-header>\n    <lf-field-adhoc-container-component (fieldValuesChanged)=\"onFieldValuesChanged()\"\n    (dialogOpened)=\"onDialogOpened()\" (dialogClosed)=\"onDialogClosed()\"></lf-field-adhoc-container-component>\n  </mat-expansion-panel>\n  </div>\n","// Copyright (c) Laserfiche.\r\n// Licensed under the MIT License. See LICENSE in the project root for license information.\r\n\r\nimport { LfFieldAdhocContainerService } from '../lf-field-adhoc-container/lf-field-adhoc-container.service';\r\nimport { LfFieldTemplateContainerService } from '../lf-field-template-container/lf-field-template-container.service';\r\n\r\nexport interface LfFieldContainerService extends LfFieldAdhocContainerService, LfFieldTemplateContainerService {\r\n\r\n}\r\n","// Copyright (c) Laserfiche.\r\n// Licensed under the MIT License. See LICENSE in the project root for license information.\r\n\r\nexport * from './lf-field-container.component';\r\nexport * from './lf-field-container.service';\r\n","// Copyright (c) Laserfiche.\r\n// Licensed under the MIT License. See LICENSE in the project root for license information.\r\n\r\nimport { LfFieldInfo } from '../field-components/utils/lf-field-types';\r\n\r\nexport interface LfFieldAdhocContainerService {\r\n  getAllFieldDefinitionsAsync(): Promise<LfFieldInfo[]>;\r\n}\r\n","// Copyright (c) Laserfiche.\r\n// Licensed under the MIT License. See LICENSE in the project root for license information.\r\n\r\nexport * from './lf-field-adhoc-container.component';\r\nexport * from './lf-field-adhoc-container.service';\r\n","// Copyright (c) Laserfiche.\r\n// Licensed under the MIT License. See LICENSE in the project root for license information.\r\n\r\nimport { LfFieldTemplateContainerService } from './lf-field-template-container.service';\r\n\r\nexport interface LfFieldTemplateProviders {\r\n  templateFieldContainerService: LfFieldTemplateContainerService;\r\n}\r\n","// Copyright (c) Laserfiche.\r\n// Licensed under the MIT License. See LICENSE in the project root for license information.\r\n\r\nimport { FieldValues, TemplateFieldInfo, TemplateInfo } from '../field-components/utils/lf-field-types';\r\n\r\nexport interface LfFieldTemplateContainerService {\r\n  getAvailableTemplatesAsync(): Promise<TemplateInfo[]>;\r\n  getTemplateFieldsAsync(templateIdentifier: number | string): Promise<TemplateFieldInfo[]>;\r\n  getTemplateDefinitionAsync(templateIdentifier: string | number): Promise<TemplateInfo | undefined>;\r\n  getDynamicFieldValueOptionsAsync(\r\n    templateId: number,\r\n    currentValues: FieldValues\r\n  ): Promise<{ [fieldId: number]: string[] }>;\r\n}\r\n","// Copyright (c) Laserfiche.\r\n// Licensed under the MIT License. See LICENSE in the project root for license information.\r\n\r\nexport * from './lf-field-template-container.component';\r\nexport * from './lf-field-template-container-types';\r\nexport * from './lf-field-template-container.service';\r\n","// Copyright (c) Laserfiche.\r\n// Licensed under the MIT License. See LICENSE in the project root for license information.\r\n\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { LfTokenPickerComponent } from './lf-token-picker.component';\r\n\r\n@NgModule({\r\n  declarations: [LfTokenPickerComponent],\r\n  imports: [\r\n    CommonModule,\r\n    MatMenuModule\r\n  ],\r\n  exports: [LfTokenPickerComponent]\r\n})\r\nexport class LfTokenPickerModule { }\r\n","// Copyright Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { UniDateTimeComponent } from './uni-date-time.component';\nimport { MatInputModule } from '@angular/material/input';\nimport {\n  UniComponentConfig,\n  UniComponentSettings,\n} from './uni-date-time.common';\n\n@NgModule({\n  declarations: [\n    UniDateTimeComponent\n  ],\n    imports: [\n        CommonModule,\n        ReactiveFormsModule,\n        MatInputModule,\n  ],\n  exports: [\n    UniDateTimeComponent,\n  ]\n})\nexport class LfUniDateTimeModule { }\nexport { UniDateTimeComponent, UniComponentSettings, UniComponentConfig };\n","// Copyright (c) Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport { NgModule} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DateFieldComponent } from './date-field/date-field.component';\nimport { DateTimeFieldComponent } from './date-time-field/date-time-field.component';\nimport { DynamicFieldComponent } from './dynamic-field/dynamic-field.component';\nimport { LfFieldBaseComponent } from './lf-field-base/lf-field-base.component';\nimport { ListFieldComponent } from './list-field/list-field.component';\nimport { NumberFieldComponent } from './number-field/number-field.component';\nimport { TextFieldComponent } from './text-field/text-field.component';\nimport { TimeFieldComponent } from './time-field/time-field.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { LfFieldTokenService } from './lf-field-token.service';\nimport { NgxMaskDirective, NgxMaskPipe, provideNgxMask } from 'ngx-mask';\nimport { LfTokenPickerModule } from '../lf-token-picker/lf-token-picker.module';\nimport { LfUniDateTimeModule, UniDateTimeComponent } from \"../../../lf-date-time-picker/uni-date-time.module\";\n\n@NgModule({\n  declarations: [\n    DateFieldComponent,\n    DateTimeFieldComponent,\n    DynamicFieldComponent,\n    LfFieldBaseComponent,\n    ListFieldComponent,\n    NumberFieldComponent,\n    TextFieldComponent,\n    TimeFieldComponent,\n  ],\n  imports: [\n    CommonModule,\n    FormsModule,\n    ReactiveFormsModule,\n    MatFormFieldModule,\n    MatInputModule,\n    BrowserAnimationsModule,\n    MatSelectModule,\n    MatIconModule,\n    LfTokenPickerModule,\n    NgxMaskDirective,\n    NgxMaskPipe,\n    LfUniDateTimeModule,\n],\n  providers: [\n    LfFieldTokenService,\n    provideNgxMask()\n  ],\n  exports: [\n    LfFieldBaseComponent,\n    DateFieldComponent,\n    DateTimeFieldComponent,\n    ListFieldComponent,\n    NumberFieldComponent,\n    TextFieldComponent,\n    TimeFieldComponent,\n    UniDateTimeComponent,\n  ]\n})\nexport class LfFieldBaseModule { }\n","// Copyright (c) Laserfiche.\r\n// Licensed under the MIT License. See LICENSE in the project root for license information.\r\n\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LfFieldComponent } from './lf-field/lf-field.component';\r\nimport { LfFieldMultivalueComponent } from './lf-field-multivalue/lf-field-multivalue.component';\r\nimport { LfFieldGroupComponent } from './lf-field-group/lf-field-group.component';\r\nimport { LfFieldBaseModule } from './field-base-parts/lf-field-base/lf-field-base.module';\r\nimport { LfLoaderModule } from '@laserfiche/lf-ui-components/internal-shared';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { LfFieldGroupIndexDisplayPipe } from './lf-field-group/lf-field-group-index-display.pipe';\r\n\r\n@NgModule({\r\n  declarations: [\r\n    LfFieldComponent,\r\n    LfFieldMultivalueComponent,\r\n    LfFieldGroupComponent,\r\n    LfFieldGroupIndexDisplayPipe\r\n  ],\r\n  imports: [\r\n    CommonModule,\r\n    ReactiveFormsModule,\r\n    LfFieldBaseModule,\r\n    LfLoaderModule,\r\n    DragDropModule,\r\n    MatIconModule,\r\n  ],\r\n  bootstrap: [\r\n    LfFieldComponent,\r\n    LfFieldMultivalueComponent,\r\n    LfFieldGroupComponent\r\n  ],\r\n  exports: [\r\n    LfFieldComponent,\r\n    LfFieldMultivalueComponent,\r\n    LfFieldGroupComponent\r\n  ]\r\n})\r\nexport class FieldComponentsModule { }\r\n","// Copyright (c) Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport { CUSTOM_ELEMENTS_SCHEMA, Injector, NgModule } from '@angular/core';\nimport { LfFieldContainerComponent } from './lf-field-container/lf-field-container.component';\nimport { LfFieldAddRemoveComponent } from './lf-field-adhoc-container/lf-field-add-remove/lf-field-add-remove.component';\nimport { LfFieldAdhocContainerComponent } from './lf-field-adhoc-container/lf-field-adhoc-container.component';\nimport { LfFieldTemplateContainerComponent } from './lf-field-template-container/lf-field-template-container.component';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatSelectModule } from '@angular/material/select';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { createCustomElement } from '@angular/elements';\nimport { LfLoaderModule, LfModalsModule } from '@laserfiche/lf-ui-components/internal-shared';\nimport { FieldComponentsModule } from './field-components/field-components.module';\nimport { GetFieldTypePipe } from './lf-field-adhoc-container/lf-field-add-remove/get-field-type.pipe';\nimport { LfFieldViewDirective } from './lf-field-view.directive';\nimport {ScrollingModule} from '@angular/cdk/scrolling';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { LfUniDateTimeModule } from './lf-date-time-picker/uni-date-time.module';\nimport { A11yModule } from '@angular/cdk/a11y';\n\n@NgModule({\n  declarations: [\n    LfFieldAdhocContainerComponent,\n    LfFieldTemplateContainerComponent,\n    LfFieldAddRemoveComponent,\n    LfFieldContainerComponent,\n    GetFieldTypePipe,\n    LfFieldViewDirective\n  ],\n  imports: [\n    A11yModule,\n    CommonModule,\n    BrowserAnimationsModule,\n    MatSelectModule,\n    MatCheckboxModule,\n    MatExpansionModule,\n    FieldComponentsModule,\n    ReactiveFormsModule,\n    LfModalsModule,\n    LfLoaderModule,\n    ScrollingModule,\n    MatDialogModule,\n  ],\n  bootstrap: [\n    LfFieldAdhocContainerComponent,\n    LfFieldTemplateContainerComponent,\n    LfFieldContainerComponent\n  ],\n  exports: [\n    LfFieldAdhocContainerComponent,\n    LfFieldTemplateContainerComponent,\n    LfFieldContainerComponent,\n  ],\n  schemas: [CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class LfMetadataModule {\n  /** @internal */\n  constructor(\n    /** @internal */ injector: Injector\n  ) {\n    const templateElementName: string = 'lf-field-template-container';\n    if (window.customElements && !customElements.get(templateElementName)) {\n      // Convert component to a custom element.\n      const LfFieldTemplateContainerElement = createCustomElement(LfFieldTemplateContainerComponent, { injector });\n\n      // Register the custom element with the browser.\n      customElements.define(templateElementName, LfFieldTemplateContainerElement);\n    }\n\n    const adhocElementName: string = 'lf-field-adhoc-container';\n    if (window.customElements && !customElements.get(adhocElementName)) {\n      const newElement = createCustomElement(LfFieldAdhocContainerComponent, { injector });\n      customElements.define(adhocElementName, newElement);\n    }\n\n    const fieldContainerElementName: string = 'lf-field-container';\n    if (window.customElements && !customElements.get(fieldContainerElementName)) {\n      const lfFieldContainerElement = createCustomElement(LfFieldContainerComponent, { injector });\n      customElements.define(fieldContainerElementName, lfFieldContainerElement);\n    }\n  }\n}\n","// Copyright (c) Laserfiche.\r\n// Licensed under the MIT License. See LICENSE in the project root for license information.\r\n\r\nexport * from './lf-field-container/public-api';\r\nexport * from './lf-field-adhoc-container/public-api';\r\nexport * from './lf-field-template-container/public-api';\r\n\r\nexport * from './lf-metadata.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './lf-metadata-public-api';\n"],"names":["i1.AdhocFieldConnectorService","i3","i5","i7","i9.GetFieldTypePipe","i1","i1.LfFieldTokenService","i2","Flatpickr","dateTimeService","i1.UniDateTimeService","i4","i5.LfTokenPickerComponent","i6.UniDateTimeComponent","i7.DynamicFieldComponent","i6","i8.DynamicFieldComponent","i7.LfTokenPickerComponent","i2.DateFieldComponent","i3.DateTimeFieldComponent","i4.ListFieldComponent","i5.NumberFieldComponent","i6.TextFieldComponent","i7.TimeFieldComponent","i3.LfFieldBaseComponent","i1.LfFieldMetadataConnectorService","i2.LfFieldMetadataConnectorService","i5.LfFieldAddRemoveComponent","i6.LfFieldViewDirective","i4.LfFieldBaseComponent","i6.LfFieldGroupIndexDisplayPipe","i7.LfFieldViewDirective","i4.LfFieldAdhocContainerComponent","i5.LfFieldTemplateContainerComponent"],"mappings":"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"}