{"version":3,"file":"form.mjs","sources":["../../../../packages/form/src/config.ts","../../../../packages/form/src/const.ts","../../../../packages/form/src/utils.ts","../../../../packages/form/src/model/form.property.ts","../../../../packages/form/src/model/object.property.ts","../../../../packages/form/src/model/array.property.ts","../../../../packages/form/src/model/atomic.property.ts","../../../../packages/form/src/model/boolean.property.ts","../../../../packages/form/src/model/number.property.ts","../../../../packages/form/src/model/string.property.ts","../../../../packages/form/src/model/form.property.factory.ts","../../../../packages/form/src/terminator.service.ts","../../../../packages/form/src/validator.factory.ts","../../../../packages/form/src/widget.factory.ts","../../../../packages/form/src/sf-item.component.ts","../../../../packages/form/src/sf-fixed.directive.ts","../../../../packages/form/src/sf.component.ts","../../../../packages/form/src/sf.component.html","../../../../packages/form/src/sf-item-wrap.component.ts","../../../../packages/form/src/sf-item-wrap.component.html","../../../../packages/form/src/widgets/custom/sf-template.directive.ts","../../../../packages/form/src/widget.ts","../../../../packages/form/src/widgets/array/array.widget.ts","../../../../packages/form/src/widgets/boolean/boolean.widget.ts","../../../../packages/form/src/widgets/checkbox/checkbox.widget.ts","../../../../packages/form/src/widgets/custom/custom.widget.ts","../../../../packages/form/src/widgets/date/date.widget.ts","../../../../packages/form/src/widgets/number/number.widget.ts","../../../../packages/form/src/widgets/object/object.widget.ts","../../../../packages/form/src/widgets/radio/radio.widget.ts","../../../../packages/form/src/widgets/select/select.widget.ts","../../../../packages/form/src/widgets/string/string.widget.ts","../../../../packages/form/src/widgets/text/text.widget.ts","../../../../packages/form/src/widgets/textarea/textarea.widget.ts","../../../../packages/form/src/widgets/nz-widget.registry.ts","../../../../packages/form/src/module.ts","../../../../packages/form/src/errors.ts","../../../../packages/form/src/provide.ts","../../../../packages/form/form.ts"],"sourcesContent":["import { AlainConfigService, AlainSFConfig } from '@delon/util/config';\n\nimport { SFButton } from './interface';\nimport { SFUISchemaItem } from './schema/ui';\n\nexport const SF_DEFAULT_CONFIG: AlainSFConfig = {\n  formatMap: {\n    'date-time': {\n      widget: 'date',\n      showTime: true,\n      format: `yyyy-MM-dd'T'HH:mm:ss.SSSxxx`\n    },\n    date: { widget: 'date', format: 'yyyy-MM-dd' },\n    'full-date': { widget: 'date', format: 'yyyy-MM-dd' },\n    time: { widget: 'time', format: 'HH:mm:ss.SSSxxx' },\n    'full-time': { widget: 'time' },\n    week: { widget: 'date', mode: 'week', format: 'yyyy-ww' },\n    month: { widget: 'date', mode: 'month', format: 'yyyy-MM' },\n    uri: { widget: 'upload' },\n    email: { widget: 'autocomplete', type: 'email' },\n    color: { widget: 'string', type: 'color' },\n    '': { widget: 'string' }\n  },\n  ingoreKeywords: ['type', 'enum'],\n  liveValidate: true,\n  autocomplete: null,\n  firstVisual: false,\n  onlyVisual: false,\n  errors: {},\n  ui: {} as SFUISchemaItem,\n  button: { submit_type: 'primary', reset_type: 'default' } as SFButton,\n  uiDateStringFormat: 'yyyy-MM-dd HH:mm:ss',\n  uiDateNumberFormat: 'T',\n  uiTimeStringFormat: 'HH:mm:ss',\n  uiTimeNumberFormat: 'T',\n  uiEmailSuffixes: ['qq.com', '163.com', 'gmail.com', '126.com', 'aliyun.com'],\n  delay: false\n};\n\nexport function mergeConfig(srv: AlainConfigService): AlainSFConfig {\n  return srv.merge('sf', SF_DEFAULT_CONFIG)!;\n}\n","export const SF_SEQ = '/';\n","import { Observable, of, map } from 'rxjs';\n\nimport { deepCopy } from '@delon/util/other';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { NzI18nService } from 'ng-zorro-antd/i18n';\n\nimport { SF_SEQ } from './const';\nimport type { SFValue } from './interface';\nimport type { SFSchema, SFSchemaDefinition, SFSchemaEnum } from './schema';\nimport type { SFUISchema, SFUISchemaItem, SFUISchemaItemRun, SFVisibleIf } from './schema/ui';\n\nexport function isBlank(o: NzSafeAny): boolean {\n  return o == null;\n}\n\nexport function toBool(value: NzSafeAny, defaultValue: boolean): boolean {\n  return value == null ? defaultValue : `${value}` !== 'false';\n}\n\nexport function di(ui: SFUISchema, ...args: NzSafeAny[]): void {\n  if (typeof ngDevMode === 'undefined' || ngDevMode) {\n    if (ui.debug) {\n      console.warn(...args);\n    }\n  }\n}\n\n/** 根据 `$ref` 查找 `definitions` */\nfunction findSchemaDefinition($ref: string, definitions: SFSchemaDefinition): NzSafeAny {\n  const match = /^#\\/definitions\\/(.*)$/.exec($ref);\n  if (match && match[1]) {\n    // parser JSON Pointer\n    const parts = match[1].split(SF_SEQ);\n    let current: NzSafeAny = definitions;\n    for (let part of parts) {\n      part = part.replace(/~1/g, SF_SEQ).replace(/~0/g, '~');\n      if (Object.prototype.hasOwnProperty.call(current, part)) {\n        current = current[part];\n      } else {\n        throw new Error(`Could not find a definition for ${$ref}.`);\n      }\n    }\n    return current;\n  }\n  throw new Error(`Could not find a definition for ${$ref}.`);\n}\n\n/**\n * 取回Schema，并处理 `$ref` 的关系\n */\nexport function retrieveSchema(schema: SFSchema, definitions: SFSchemaDefinition = {}): SFSchema {\n  if (Object.prototype.hasOwnProperty.call(schema, '$ref')) {\n    const $refSchema = findSchemaDefinition(schema.$ref!, definitions);\n    // remove $ref property\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    const { $ref, ...localSchema } = schema;\n    return retrieveSchema({ ...$refSchema, ...localSchema }, definitions);\n  }\n\n  return schema;\n}\n\nexport function resolveIfSchema(_schema: SFSchema, _ui: SFUISchemaItemRun): void {\n  const fn = (schema: SFSchema, ui: SFUISchemaItemRun): void => {\n    resolveIf(schema, ui);\n\n    Object.keys(schema.properties!).forEach(key => {\n      const property = schema.properties![key];\n      const uiKey = `$${key}`;\n      if (property.items) {\n        fn(property.items, ui[uiKey].$items);\n      }\n      if (property.properties) {\n        fn(property, ui[uiKey]);\n      }\n    });\n  };\n  fn(_schema, _ui);\n}\n\nfunction resolveIf(schema: SFSchema, ui: SFUISchemaItemRun): SFSchema | null {\n  if (!(Object.prototype.hasOwnProperty.call(schema, 'if') && Object.prototype.hasOwnProperty.call(schema, 'then')))\n    return null;\n  if (!schema.if!.properties) throw new Error(`if: does not contain 'properties'`);\n\n  const allKeys = Object.keys(schema.properties!);\n  const ifKeys = Object.keys(schema.if!.properties!);\n  detectKey(allKeys, ifKeys);\n  detectKey(allKeys, schema.then!.required!);\n  schema.required = schema.required!.concat(schema.then!.required!);\n  const hasElse = Object.prototype.hasOwnProperty.call(schema, 'else');\n  if (hasElse) {\n    detectKey(allKeys, schema.else!.required!);\n    schema.required = schema.required.concat(schema.else!.required!);\n  }\n\n  const visibleIf: SFVisibleIf = {};\n  const visibleElse: SFVisibleIf = {};\n  ifKeys.forEach(key => {\n    const cond = schema.if!.properties![key].enum;\n    visibleIf[key] = cond!;\n    if (hasElse) visibleElse[key] = (value: SFValue) => !cond!.includes(value);\n  });\n\n  schema.then!.required!.forEach(key => (ui[`$${key}`].visibleIf = visibleIf));\n  if (hasElse) {\n    schema.else!.required!.forEach(key => (ui[`$${key}`].visibleIf = visibleElse));\n  }\n\n  return schema;\n}\n\nfunction detectKey(keys: string[], detectKeys: string[]): void {\n  detectKeys.forEach(key => {\n    if (!keys.includes(key)) {\n      throw new Error(`if: properties does not contain '${key}'`);\n    }\n  });\n}\n\nexport function orderProperties(properties: string[], order: string[]): string[] {\n  if (!Array.isArray(order)) return properties;\n  const arrayToHash = (arr: NzSafeAny): NzSafeAny =>\n    arr.reduce((prev: NzSafeAny, curr: NzSafeAny) => {\n      prev[curr] = true;\n      return prev;\n    }, {});\n  const errorPropList = (arr: NzSafeAny): string => `property [${arr.join(`', '`)}]`;\n\n  const propertyHash = arrayToHash(properties);\n  const orderHash = arrayToHash(order);\n  const extraneous = order.filter(prop => prop !== '*' && !propertyHash[prop]);\n  if (extraneous.length) {\n    throw new Error(`ui schema order list contains extraneous ${errorPropList(extraneous)}`);\n  }\n  const rest = properties.filter(prop => !orderHash[prop]);\n  const restIndex = order.indexOf('*');\n  if (restIndex === -1) {\n    if (rest.length) {\n      throw new Error(`ui schema order list does not contain ${errorPropList(rest)}`);\n    }\n    return order;\n  }\n  if (restIndex !== order.lastIndexOf('*')) {\n    throw new Error('ui schema order list contains more than one wildcard item');\n  }\n  const complete = [...order];\n  complete.splice(restIndex, 1, ...rest);\n  return complete;\n}\n\nexport function getEnum(list: NzSafeAny[], formData: NzSafeAny, readOnly: boolean): SFSchemaEnum[] {\n  if (isBlank(list) || !Array.isArray(list) || list.length === 0) return [];\n  if (typeof list[0] !== 'object') {\n    list = list.map((item: NzSafeAny) => {\n      return { label: item, value: item } as SFSchemaEnum;\n    });\n  }\n  if (formData) {\n    if (!Array.isArray(formData)) formData = [formData];\n    list.forEach((item: SFSchemaEnum) => {\n      if (~formData.indexOf(item.value)) item.checked = true;\n    });\n  }\n  // fix disabled status\n  if (readOnly) {\n    list.forEach((item: SFSchemaEnum) => (item.disabled = true));\n  }\n  return list;\n}\n\nexport function getCopyEnum(list: NzSafeAny[], formData: NzSafeAny, readOnly: boolean): SFSchemaEnum[] {\n  return getEnum(deepCopy(list ?? []), formData, readOnly);\n}\n\nexport function getData(\n  schema: SFSchema,\n  ui: SFUISchemaItem,\n  formData: NzSafeAny,\n  asyncArgs?: NzSafeAny\n): Observable<SFSchemaEnum[]> {\n  if (typeof ui.asyncData === 'function') {\n    return ui.asyncData(asyncArgs).pipe(map((list: SFSchemaEnum[]) => getCopyEnum(list, formData, schema.readOnly!)));\n  }\n  return of(getCopyEnum(schema.enum!, formData, schema.readOnly!));\n}\n\n/**\n * Whether to using date-fns to format a date\n */\nexport function isDateFns(srv: NzI18nService): boolean {\n  if (!srv) return false;\n  const data = srv.getDateLocale();\n  // Compatible date-fns v1.x & v2.x\n  return data != null && !!data.formatDistance; // (!!data.distanceInWords || !!data.formatDistance);\n}\n","import { afterNextRender, Injector, NgZone, ɵNoopNgZone } from '@angular/core';\nimport { BehaviorSubject, combineLatest, Observable, distinctUntilChanged, map, take } from 'rxjs';\n\nimport { AlainSFConfig } from '@delon/util/config';\nimport { NzFormStatusService } from 'ng-zorro-antd/core/form';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport type { NzFormControlStatusType } from 'ng-zorro-antd/form';\n\nimport { SF_SEQ } from '../const';\nimport type { ErrorData } from '../errors';\nimport type { SFFormValueChange, SFUpdateValueAndValidity, SFValue } from '../interface';\nimport type { SFSchema, SFSchemaType } from '../schema';\nimport type { SFUISchema, SFUISchemaItem, SFUISchemaItemRun, SFVisibleIfReturn } from '../schema/ui';\nimport { isBlank } from '../utils';\nimport { SchemaValidatorFactory } from '../validator.factory';\nimport type { Widget } from '../widget';\n\nexport abstract class FormProperty {\n  private _errors: ErrorData[] | null = null;\n  private _valueChanges = new BehaviorSubject<SFFormValueChange>({ path: null, pathValue: null, value: null });\n  private _errorsChanges = new BehaviorSubject<ErrorData[] | null>(null);\n  private _visible = true;\n  private _visibilityChanges = new BehaviorSubject<boolean>(true);\n  private _root: PropertyGroup;\n  private _parent: PropertyGroup | null;\n  _objErrors: Record<string, ErrorData[]> = {};\n  schemaValidator: (value: SFValue) => ErrorData[];\n  schema: SFSchema;\n  ui: SFUISchema | SFUISchemaItemRun;\n  formData: Record<string, unknown>;\n  _value: SFValue = null;\n  widget!: Widget<FormProperty, SFUISchemaItem>;\n  path: string;\n  propertyId?: string;\n\n  constructor(\n    private injector: Injector,\n    schemaValidatorFactory: SchemaValidatorFactory,\n    schema: SFSchema,\n    ui: SFUISchema | SFUISchemaItem,\n    formData: Record<string, unknown>,\n    parent: PropertyGroup | null,\n    path: string,\n    private _options: AlainSFConfig\n  ) {\n    this.schema = schema;\n    this.ui = ui;\n    this.schemaValidator = schemaValidatorFactory.createValidatorFn(schema, {\n      ingoreKeywords: this.ui.ingoreKeywords as string[],\n      debug: (ui as SFUISchemaItem)!.debug!\n    });\n    this.formData = formData ?? schema.default;\n    this._parent = parent;\n    if (parent) {\n      this._root = parent.root;\n    } else {\n      this._root = this as NzSafeAny;\n    }\n    this.path = path;\n  }\n\n  get valueChanges(): BehaviorSubject<SFFormValueChange> {\n    return this._valueChanges;\n  }\n\n  get errorsChanges(): BehaviorSubject<ErrorData[] | null> {\n    return this._errorsChanges;\n  }\n\n  get type(): SFSchemaType {\n    return this.schema.type!;\n  }\n\n  get parent(): PropertyGroup | null {\n    return this._parent;\n  }\n\n  get root(): PropertyGroup {\n    return this._root;\n  }\n\n  get value(): SFValue {\n    return this._value;\n  }\n\n  get errors(): ErrorData[] | null {\n    return this._errors;\n  }\n\n  get visible(): boolean {\n    return this._visible;\n  }\n\n  get valid(): boolean {\n    return this._errors === null || this._errors.length === 0;\n  }\n\n  get options(): AlainSFConfig {\n    return this._options;\n  }\n\n  /**\n   * 设置值\n   *\n   * @param onlySelf `true` 只对当前字段更新值和校验；`false` 包含上级字段\n   */\n  abstract setValue(value: SFValue, onlySelf: boolean): void;\n\n  /**\n   * 重置值，默认值为 `schema.default`\n   *\n   * @param onlySelf `true` 只对当前字段更新值和校验；`false` 包含上级字段\n   */\n  abstract resetValue(value: SFValue, onlySelf: boolean): void;\n\n  /**\n   * @internal\n   */\n  abstract _hasValue(): boolean;\n\n  /**\n   *  @internal\n   */\n  abstract _updateValue(): void;\n\n  cd(onlySelf: boolean = false): void {\n    this.widget?.detectChanges(onlySelf);\n  }\n\n  /**\n   * 更新值且校验数据\n   */\n  updateValueAndValidity(options?: SFUpdateValueAndValidity): void {\n    options = {\n      onlySelf: false,\n      emitValidator: true,\n      emitValueEvent: true,\n      updateValue: null,\n      ...options\n    };\n    this._updateValue();\n\n    if (options.emitValueEvent) {\n      options.updatePath = options.updatePath ?? this.path ?? '';\n\n      this.valueChanges.next({ value: this.value, path: options.updatePath, pathValue: options.updateValue });\n\n      options.updateValue = options.updateValue == null ? this.value : options.updateValue;\n    }\n\n    // `emitValidator` 每一次数据变更已经包含完整错误链路，后续父节点数据变更无须再触发校验\n    if (options.emitValidator && this.ui.liveValidate === true) {\n      this._runValidation();\n    }\n\n    if (this.parent && !options.onlySelf) {\n      this.parent.updateValueAndValidity({ ...options, emitValidator: false });\n    }\n  }\n\n  /** 根据路径搜索表单属性 */\n  searchProperty(path: string): FormProperty | null {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    let prop: FormProperty = this;\n    let base: PropertyGroup | null = null;\n\n    let result = null;\n    if (path[0] === SF_SEQ) {\n      base = this.findRoot();\n      result = base.getProperty(path.substring(1));\n    } else {\n      while (result === null && prop.parent !== null) {\n        prop = base = prop.parent;\n        result = base.getProperty(path);\n      }\n    }\n    return result!;\n  }\n\n  /** 查找根表单属性 */\n  findRoot(): PropertyGroup {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    let property: FormProperty = this;\n    while (property.parent !== null) {\n      property = property.parent;\n    }\n    return property as PropertyGroup;\n  }\n\n  // #region process errors\n\n  private isEmptyData(value: Record<string, unknown>): boolean {\n    if (isBlank(value)) return true;\n    switch (this.type) {\n      case 'string':\n        return `${value}`.length === 0;\n    }\n    return false;\n  }\n\n  /**\n   * @internal\n   */\n  _runValidation(): void {\n    let errors: ErrorData[];\n    // The definition of some rules:\n    // 1. Should not ajv validator when is empty data and required fields\n    // 2. Should not ajv validator when is empty data\n    const isEmpty = this.isEmptyData(this._value);\n    if (isEmpty && this.ui._required) {\n      errors = [{ keyword: 'required' }];\n    } else if (isEmpty) {\n      errors = [];\n    } else {\n      errors = this.schemaValidator(this._value) ?? [];\n    }\n    const customValidator = (this.ui as SFUISchemaItemRun).validator;\n    if (typeof customValidator === 'function') {\n      const customErrors = customValidator(this.value, this, this.findRoot());\n      if (customErrors instanceof Observable) {\n        customErrors.subscribe(res => {\n          this.setCustomErrors(errors, res);\n          this.cd(false);\n        });\n        return;\n      }\n      this.setCustomErrors(errors, customErrors);\n      return;\n    }\n\n    this._errors = errors;\n    this.setErrors(this._errors);\n  }\n\n  private setCustomErrors(errors: ErrorData[], list: ErrorData[]): void {\n    const hasCustomError = Array.isArray(list) && list.length > 0;\n    if (hasCustomError) {\n      list.forEach(err => {\n        if (!err.message) {\n          throw new Error(`The custom validator must contain a 'message' attribute to viewed error text`);\n        }\n        err.keyword = null;\n      });\n    }\n    this._errors = hasCustomError ? errors.concat(...list) : errors;\n    this.setErrors(this._errors);\n  }\n\n  /**\n   * Set the current error message\n   *\n   * 设置当前错误消息\n   *\n   * @param emitFormat 若提供的消息带有 `{xx}` 会自动根据参数进行转化，包含自定义函数\n   *\n   * @example\n   *\n   * this.sf.getProperty('/name')?.setErrors({ keyword: 'required' });\n   * this.sf.getProperty('/name')?.setErrors({ message: 'Please input your username!' });\n   * this.sf.getProperty('/name')?.setErrors(); // Clean error\n   */\n  setErrors(errors: ErrorData | ErrorData[] = [], emitFormat: boolean = true): void {\n    let arrErrs = Array.isArray(errors) ? errors : [errors];\n\n    if (emitFormat && arrErrs && !this.ui.onlyVisual) {\n      const l = (this.widget && this.widget.l.error) ?? {};\n      arrErrs = arrErrs.map((err: ErrorData) => {\n        let message: string | ((err: ErrorData) => string) =\n          err.keyword == null && err.message\n            ? err.message\n            : ((this.ui.errors ?? {})[err.keyword!] ?? this._options.errors![err.keyword!] ?? l[err.keyword!] ?? ``);\n\n        if (message && typeof message === 'function') {\n          message = message(err);\n        }\n\n        if (message) {\n          if (~message.indexOf('{') && err.params) {\n            message = message.replace(/{([.a-zA-Z0-9]+)}/g, (_v: string, key: string) => err.params![key] ?? '');\n          }\n          err.message = message;\n        }\n        return err;\n      });\n    }\n    this._errors = arrErrs;\n    this._errorsChanges.next(arrErrs);\n    // Should send errors to parent field\n    if (this._parent) {\n      this._parent.setParentAndPlatErrors(arrErrs, this.path);\n    }\n  }\n\n  setParentAndPlatErrors(errors: ErrorData[], path: string): void {\n    this._objErrors[path] = errors;\n    const platErrors: ErrorData[] = [];\n    Object.keys(this._objErrors).forEach(p => {\n      const property = this.searchProperty(p);\n      if (property && !property.visible) return;\n      platErrors.push(...this._objErrors[p]);\n    });\n    this.setErrors(platErrors, false);\n  }\n\n  // #endregion\n\n  // #region condition\n\n  /**\n   * Set the hide or display of widget\n   * 设置小部件的隐藏或显示\n   */\n  setVisible(visible: boolean): this {\n    this._visible = visible;\n    this._visibilityChanges.next(visible);\n    // 渲染时需要重新触发 reset\n    if (visible) {\n      const ngZone = this.injector.get(NgZone, null);\n      if (ngZone instanceof ɵNoopNgZone) {\n        afterNextRender(\n          () => {\n            this.resetValue(this.value, true);\n          },\n          { injector: this.injector }\n        );\n      } else {\n        ngZone?.onStable.pipe(take(1)).subscribe(() => {\n          this.resetValue(this.value, true);\n        });\n      }\n    }\n    return this;\n  }\n\n  _bindVisibility(): void {\n    const visibleIf = (this.ui as SFUISchemaItem).visibleIf;\n    if (typeof visibleIf === 'object' && Object.keys(visibleIf).length === 0) {\n      this.setVisible(false);\n    } else if (visibleIf != null) {\n      const propertiesBinding: Array<Observable<boolean>> = [];\n      for (const dependencyPath in visibleIf) {\n        if (Object.prototype.hasOwnProperty.call(visibleIf, dependencyPath)) {\n          const property = this.searchProperty(dependencyPath);\n          if (property) {\n            const valueCheck = property.valueChanges.pipe(\n              map(res => {\n                const vi = visibleIf[dependencyPath];\n                if (typeof vi === 'function') {\n                  const viFnRes = vi(res.value, property);\n                  // 同步更新 required\n                  if (typeof viFnRes === 'object') {\n                    const fixViFnRes = { show: false, required: false, ...viFnRes } as SFVisibleIfReturn;\n                    const parentRequired = this.parent?.schema.required;\n                    if (parentRequired && this.propertyId) {\n                      const idx = parentRequired.findIndex(w => w === this.propertyId);\n                      if (fixViFnRes.required) {\n                        if (idx === -1) parentRequired.push(this.propertyId);\n                      } else {\n                        if (idx !== -1) parentRequired.splice(idx, 1);\n                      }\n                      this.ui._required = fixViFnRes.required;\n                    }\n                    return fixViFnRes.show;\n                  }\n                  return viFnRes;\n                }\n                if (vi.indexOf('$ANY$') !== -1) {\n                  return res.value && res.value.length > 0;\n                } else {\n                  return vi.indexOf(res.value) !== -1;\n                }\n              })\n            );\n            const visibilityCheck = property._visibilityChanges;\n            const and = combineLatest([valueCheck, visibilityCheck]).pipe(map(results => results[0] && results[1]));\n            propertiesBinding.push(and);\n          } else {\n            if (typeof ngDevMode === 'undefined' || ngDevMode) {\n              console.warn(`Can't find property ${dependencyPath} for visibility check of ${this.path}`);\n            }\n          }\n        }\n      }\n\n      combineLatest(propertiesBinding)\n        .pipe(\n          map(values => (this.ui.visibleIfLogical === 'and' ? values.every(v => v) : values.some(v => v))),\n          distinctUntilChanged()\n        )\n        .subscribe(visible => this.setVisible(visible));\n    }\n  }\n\n  // #endregion\n\n  updateFeedback(status: NzFormControlStatusType = ''): void {\n    this.ui.feedback = status;\n    this.widget?.injector.get(NzFormStatusService).formStatusChanges.next({ status, hasFeedback: !!status });\n    this.cd(true);\n  }\n}\n\nexport abstract class PropertyGroup extends FormProperty {\n  properties: Record<string, FormProperty> | FormProperty[] | null = null;\n\n  getProperty(path: string): FormProperty | undefined {\n    const subPathIdx = path.indexOf(SF_SEQ);\n    const propertyId = subPathIdx !== -1 ? path.substring(0, subPathIdx) : path;\n\n    let property = (this.properties as Record<string, FormProperty>)[propertyId];\n    if (property !== null && subPathIdx !== -1 && property instanceof PropertyGroup) {\n      const subPath = path.substring(subPathIdx + 1);\n      property = (property as PropertyGroup).getProperty(subPath)!;\n    }\n    return property;\n  }\n\n  forEachChild(fn: (formProperty: FormProperty, str: string) => void): void {\n    // eslint-disable-next-line @typescript-eslint/no-for-in-array\n    for (const propertyId in this.properties) {\n      if (Object.prototype.hasOwnProperty.call(this.properties, propertyId)) {\n        const property = (this.properties as Record<string, FormProperty>)[propertyId];\n        fn(property, propertyId);\n      }\n    }\n  }\n\n  forEachChildRecursive(fn: (formProperty: FormProperty) => void): void {\n    this.forEachChild(child => {\n      fn(child);\n      if (child instanceof PropertyGroup) {\n        (child as PropertyGroup).forEachChildRecursive(fn);\n      }\n    });\n  }\n\n  _bindVisibility(): void {\n    super._bindVisibility();\n    this._bindVisibilityRecursive();\n  }\n\n  private _bindVisibilityRecursive(): void {\n    this.forEachChildRecursive(property => {\n      property._bindVisibility();\n    });\n  }\n\n  isRoot(): boolean {\n    return this === this.root;\n  }\n}\n","import { Injector } from '@angular/core';\n\nimport { AlainSFConfig } from '@delon/util/config';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport { SFValue } from '../interface';\nimport { FormProperty, PropertyGroup } from './form.property';\nimport { FormPropertyFactory } from './form.property.factory';\nimport { SFSchema } from '../schema/index';\nimport { SFUISchema, SFUISchemaItem } from '../schema/ui';\nimport { orderProperties } from '../utils';\nimport { SchemaValidatorFactory } from '../validator.factory';\n\nexport class ObjectProperty extends PropertyGroup {\n  private _propertiesId: string[] = [];\n\n  get propertiesId(): string[] {\n    return this._propertiesId;\n  }\n\n  constructor(\n    injector: Injector,\n    private formPropertyFactory: FormPropertyFactory,\n    schemaValidatorFactory: SchemaValidatorFactory,\n    schema: SFSchema,\n    ui: SFUISchema | SFUISchemaItem,\n    formData: NzSafeAny,\n    parent: PropertyGroup | null,\n    path: string,\n    options: AlainSFConfig\n  ) {\n    super(injector, schemaValidatorFactory, schema, ui, formData, parent, path, options);\n    this.createProperties();\n  }\n\n  private createProperties(): void {\n    this.properties = {};\n    this._propertiesId = [];\n    let orderedProperties: string[];\n    try {\n      orderedProperties = orderProperties(Object.keys(this.schema.properties!), this.ui.order as string[]);\n    } catch (e) {\n      console.error(`Invalid ${this.schema.title ?? 'root'} object field configuration:`, e);\n    }\n    orderedProperties!.forEach(propertyId => {\n      (this.properties as Record<string, FormProperty>)[propertyId] = this.formPropertyFactory.createProperty(\n        this.schema.properties![propertyId],\n        this.ui[`$${propertyId}`],\n        ((this.formData ?? {}) as NzSafeAny)[propertyId],\n        this,\n        propertyId\n      );\n      this._propertiesId.push(propertyId);\n    });\n  }\n\n  setValue(value: SFValue, onlySelf: boolean): void {\n    const properties = this.properties as Record<string, FormProperty>;\n    for (const propertyId in value) {\n      if (Object.prototype.hasOwnProperty.call(value, propertyId) && properties[propertyId]) {\n        (properties[propertyId] as FormProperty).setValue(value[propertyId], true);\n      }\n    }\n    this.cd(onlySelf);\n    this.updateValueAndValidity({ onlySelf, emitValueEvent: true });\n  }\n\n  resetValue(value: SFValue, onlySelf: boolean): void {\n    value = value ?? this.schema.default ?? {};\n    const properties = this.properties as Record<string, FormProperty>;\n    for (const propertyId in this.schema.properties) {\n      if (Object.prototype.hasOwnProperty.call(this.schema.properties, propertyId)) {\n        properties[propertyId].resetValue(value[propertyId], true);\n      }\n    }\n    this.cd(onlySelf);\n    this.updateValueAndValidity({ onlySelf, emitValueEvent: true });\n  }\n\n  _hasValue(): boolean {\n    return this.value != null && !!Object.keys(this.value).length;\n  }\n\n  _updateValue(): void {\n    const value: SFValue = {};\n    this.forEachChild((property, propertyId) => {\n      if (property.visible && property._hasValue()) {\n        value[propertyId] = property.value;\n      }\n    });\n    this._value = value;\n  }\n}\n","import { Injector } from '@angular/core';\n\nimport { AlainSFConfig } from '@delon/util/config';\nimport { deepCopy } from '@delon/util/other';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport { SF_SEQ } from '../const';\nimport { SFValue } from '../interface';\nimport { SFSchema } from '../schema/index';\nimport { SFUISchema, SFUISchemaItem } from '../schema/ui';\nimport { SchemaValidatorFactory } from '../validator.factory';\nimport { FormProperty, PropertyGroup } from './form.property';\nimport { FormPropertyFactory } from './form.property.factory';\nimport { ObjectProperty } from './object.property';\n\nexport class ArrayProperty extends PropertyGroup {\n  constructor(\n    injector: Injector,\n    private formPropertyFactory: FormPropertyFactory,\n    schemaValidatorFactory: SchemaValidatorFactory,\n    schema: SFSchema,\n    ui: SFUISchema | SFUISchemaItem,\n    formData: Record<string, unknown>,\n    parent: PropertyGroup | null,\n    path: string,\n    options: AlainSFConfig\n  ) {\n    super(injector, schemaValidatorFactory, schema, ui, formData, parent, path, options);\n    this.properties = [];\n  }\n\n  getProperty(path: string): FormProperty | undefined {\n    const subPathIdx = path.indexOf(SF_SEQ);\n    const pos = +(subPathIdx !== -1 ? path.substring(0, subPathIdx) : path);\n    const list = this.properties as PropertyGroup[];\n    if (isNaN(pos) || pos >= list.length) {\n      return undefined;\n    }\n    const subPath = path.substring(subPathIdx + 1);\n    return list[pos].getProperty(subPath);\n  }\n\n  setValue(value: SFValue, onlySelf: boolean): void {\n    this.properties = [];\n    this.clearErrors();\n    this.resetProperties(value);\n    this.cd(onlySelf);\n    this.updateValueAndValidity({ onlySelf, emitValueEvent: true });\n  }\n\n  resetValue(value: SFValue, onlySelf: boolean): void {\n    this._value = value ?? this.schema.default ?? [];\n    this.setValue(this._value, onlySelf);\n  }\n\n  _hasValue(): boolean {\n    return true;\n  }\n\n  _updateValue(): void {\n    const value: NzSafeAny[] = [];\n    this.forEachChild((property: FormProperty) => {\n      if (property.visible) {\n        value.push({ ...(this.widget?.cleanValue ? null : property.formData), ...property.value });\n      }\n    });\n    this._value = value;\n  }\n\n  private addProperty(formData: Record<string, unknown>): FormProperty {\n    const newProperty = this.formPropertyFactory.createProperty(\n      deepCopy(this.schema.items!),\n      deepCopy(this.ui.$items),\n      formData,\n      this as PropertyGroup\n    ) as ObjectProperty;\n    (this.properties as FormProperty[]).push(newProperty);\n    return newProperty;\n  }\n\n  private resetProperties(formDatas: Array<Record<string, unknown>>): void {\n    for (const item of formDatas) {\n      const property = this.addProperty(item);\n      property.resetValue(item, true);\n    }\n  }\n\n  private clearErrors(property?: FormProperty): void {\n    (property ?? this)._objErrors = {};\n  }\n\n  // #region actions\n\n  add(formData: Record<string, unknown>): FormProperty {\n    const newProperty = this.addProperty(formData);\n    newProperty.resetValue(formData, false);\n    return newProperty;\n  }\n\n  remove(index: number): void {\n    const list = this.properties as FormProperty[];\n    this.clearErrors();\n    list.splice(index, 1);\n    list.forEach((property, idx) => {\n      property.path = [property.parent!.path, idx].join(SF_SEQ);\n      this.clearErrors(property);\n      // TODO: 受限于 sf 的设计思路，对于移除数组项需要重新对每个子项进行校验，防止错误被父级合并后引起始终是错误的现象\n      if (property instanceof ObjectProperty) {\n        property.forEachChild(p => {\n          p.updateValueAndValidity({ emitValueEvent: false });\n        });\n      }\n    });\n    if (list.length === 0) {\n      this.updateValueAndValidity();\n    }\n  }\n\n  // #endregion\n}\n","import { SFValue } from '../interface';\nimport { FormProperty } from './form.property';\n\nexport abstract class AtomicProperty extends FormProperty {\n  abstract fallbackValue(): SFValue;\n\n  setValue(value: SFValue, onlySelf: boolean): void {\n    this._value = value;\n    this.cd(onlySelf);\n    this.updateValueAndValidity({ onlySelf, emitValueEvent: true });\n  }\n\n  resetValue(value: SFValue, onlySelf: boolean): void {\n    if (value == null) {\n      value = this.schema.default !== undefined ? this.schema.default : this.fallbackValue();\n    }\n    this._value = value;\n\n    this.updateValueAndValidity({ onlySelf, emitValueEvent: true });\n\n    if (this.widget) {\n      this.widget.reset(value);\n      this.cd(onlySelf);\n    }\n  }\n\n  _hasValue(): boolean {\n    return this.fallbackValue() !== this.value;\n  }\n\n  _updateValue(): void {}\n}\n","import { SFValue } from '../interface';\nimport { AtomicProperty } from './atomic.property';\n\nexport class BooleanProperty extends AtomicProperty {\n  fallbackValue(): SFValue {\n    return null;\n  }\n}\n","import { SFValue } from '../interface';\nimport { AtomicProperty } from './atomic.property';\n\nexport class NumberProperty extends AtomicProperty {\n  fallbackValue(): null {\n    return null;\n  }\n\n  setValue(value: SFValue, onlySelf: boolean): void {\n    if (typeof value === 'string') {\n      if (value.length) {\n        value = value.indexOf('.') > -1 ? parseFloat(value) : parseInt(value, 10);\n      } else {\n        value = undefined;\n      }\n    }\n    this._value = value;\n    this.cd(onlySelf);\n    this.updateValueAndValidity({ onlySelf, emitValueEvent: true });\n  }\n}\n","import { SFValue } from '../interface';\nimport { AtomicProperty } from './atomic.property';\n\nexport class StringProperty extends AtomicProperty {\n  fallbackValue(): null {\n    return null;\n  }\n\n  setValue(value: SFValue, onlySelf: boolean): void {\n    this._value = value == null ? '' : value;\n    this.cd(onlySelf);\n    this.updateValueAndValidity({ onlySelf, emitValueEvent: true });\n  }\n}\n","import { Injector } from '@angular/core';\n\nimport { AlainConfigService, AlainSFConfig } from '@delon/util/config';\n\nimport { mergeConfig } from '../config';\nimport { SF_SEQ } from '../const';\nimport { SFSchema } from '../schema/index';\nimport { SFUISchema, SFUISchemaItem } from '../schema/ui';\nimport { retrieveSchema } from '../utils';\nimport { SchemaValidatorFactory } from '../validator.factory';\nimport { ArrayProperty } from './array.property';\nimport { BooleanProperty } from './boolean.property';\nimport { FormProperty, PropertyGroup } from './form.property';\nimport { NumberProperty } from './number.property';\nimport { ObjectProperty } from './object.property';\nimport { StringProperty } from './string.property';\n\nexport class FormPropertyFactory {\n  private options: AlainSFConfig;\n  constructor(\n    private injector: Injector,\n    private schemaValidatorFactory: SchemaValidatorFactory,\n    cogSrv: AlainConfigService\n  ) {\n    this.options = mergeConfig(cogSrv);\n  }\n\n  createProperty(\n    schema: SFSchema,\n    ui: SFUISchema | SFUISchemaItem,\n    formData: Record<string, unknown>,\n    parent: PropertyGroup | null = null,\n    propertyId?: string\n  ): FormProperty {\n    let newProperty: FormProperty | null = null;\n    let path = '';\n    if (parent) {\n      path += parent.path;\n      if (parent.parent !== null) {\n        path += SF_SEQ;\n      }\n      switch (parent.type) {\n        case 'object':\n          path += propertyId;\n          break;\n        case 'array':\n          path += ((parent as ArrayProperty).properties as PropertyGroup[]).length;\n          break;\n        default:\n          throw new Error(`Instanciation of a FormProperty with an unknown parent type: ${parent.type}`);\n      }\n    } else {\n      path = SF_SEQ;\n    }\n\n    if (schema.$ref) {\n      const refSchema = retrieveSchema(schema, parent!.root.schema.definitions);\n      newProperty = this.createProperty(refSchema, ui, formData, parent, path);\n    } else {\n      // fix required\n      if (\n        (propertyId && parent!.schema.required!.indexOf(propertyId.split(SF_SEQ).pop()!) !== -1) ||\n        ui.showRequired === true\n      ) {\n        ui._required = true;\n      }\n      // fix title\n      if (schema.title == null) {\n        schema.title = propertyId;\n      }\n      // fix date\n      if ((schema.type === 'string' || schema.type === 'number') && !schema.format && !(ui as SFUISchemaItem).format) {\n        if ((ui as SFUISchemaItem).widget === 'date')\n          ui._format = schema.type === 'string' ? this.options.uiDateStringFormat : this.options.uiDateNumberFormat;\n        else if ((ui as SFUISchemaItem).widget === 'time')\n          ui._format = schema.type === 'string' ? this.options.uiTimeStringFormat : this.options.uiTimeNumberFormat;\n      } else {\n        ui._format = ui.format;\n      }\n      switch (schema.type) {\n        case 'integer':\n        case 'number':\n          newProperty = new NumberProperty(\n            this.injector,\n            this.schemaValidatorFactory,\n            schema,\n            ui,\n            formData,\n            parent,\n            path,\n            this.options\n          );\n          break;\n        case 'string':\n          newProperty = new StringProperty(\n            this.injector,\n            this.schemaValidatorFactory,\n            schema,\n            ui,\n            formData,\n            parent,\n            path,\n            this.options\n          );\n          break;\n        case 'boolean':\n          newProperty = new BooleanProperty(\n            this.injector,\n            this.schemaValidatorFactory,\n            schema,\n            ui,\n            formData,\n            parent,\n            path,\n            this.options\n          );\n          break;\n        case 'object':\n          newProperty = new ObjectProperty(\n            this.injector,\n            this,\n            this.schemaValidatorFactory,\n            schema,\n            ui,\n            formData,\n            parent,\n            path,\n            this.options\n          );\n          break;\n        case 'array':\n          newProperty = new ArrayProperty(\n            this.injector,\n            this,\n            this.schemaValidatorFactory,\n            schema,\n            ui,\n            formData,\n            parent,\n            path,\n            this.options\n          );\n          break;\n        default:\n          throw new TypeError(`Undefined type ${schema.type}`);\n      }\n    }\n\n    newProperty.propertyId = propertyId;\n\n    if (newProperty instanceof PropertyGroup) {\n      this.initializeRoot(newProperty);\n    }\n\n    return newProperty;\n  }\n\n  private initializeRoot(rootProperty: PropertyGroup): void {\n    // rootProperty.init();\n    rootProperty._bindVisibility();\n  }\n}\n","import { Subject } from 'rxjs';\n\nexport class TerminatorService {\n  onDestroy: Subject<boolean>;\n\n  constructor() {\n    this.onDestroy = new Subject();\n  }\n\n  destroy(): void {\n    this.onDestroy.next(true);\n  }\n}\n","import { Injectable, NgZone, inject } from '@angular/core';\n\nimport Ajv from 'ajv';\nimport addFormats from 'ajv-formats';\n\nimport { AlainConfigService, AlainSFConfig } from '@delon/util/config';\nimport { REGEX } from '@delon/util/format';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport { mergeConfig } from './config';\nimport { ErrorData } from './errors';\nimport { SFValue } from './interface';\nimport { SFSchema } from './schema';\n\n@Injectable()\nexport abstract class SchemaValidatorFactory {\n  abstract createValidatorFn(\n    schema: SFSchema,\n    extraOptions: { ingoreKeywords: string[]; debug: boolean }\n  ): (value: SFValue) => ErrorData[];\n}\n\n@Injectable()\nexport class AjvSchemaValidatorFactory extends SchemaValidatorFactory {\n  private readonly ngZone = inject(NgZone);\n  private readonly cogSrv = inject(AlainConfigService);\n\n  protected ajv!: Ajv;\n  protected options!: AlainSFConfig;\n\n  constructor() {\n    super();\n    if (!(typeof document === 'object' && !!document)) {\n      return;\n    }\n    this.options = mergeConfig(this.cogSrv);\n    const customOptions = this.options.ajv ?? {};\n    this.ngZone.runOutsideAngular(() => {\n      this.ajv = new Ajv({\n        allErrors: true,\n        loopEnum: 50,\n        ...customOptions,\n        formats: {\n          'data-url': /^data:([a-z]+\\/[a-z0-9-+.]+)?;name=(.*);base64,(.*)$/,\n          color: REGEX.color,\n          mobile: REGEX.mobile,\n          'id-card': REGEX.idCard,\n          ...customOptions.formats\n        }\n      });\n      addFormats(this.ajv as NzSafeAny);\n    });\n  }\n\n  createValidatorFn(\n    schema: SFSchema,\n    extraOptions: { ingoreKeywords: string[]; debug: boolean }\n  ): (value: SFValue) => ErrorData[] {\n    const ingoreKeywords: string[] = [\n      ...(this.options.ingoreKeywords as string[]),\n      ...((extraOptions.ingoreKeywords as string[]) ?? [])\n    ];\n\n    return (value: SFValue): ErrorData[] => {\n      try {\n        this.ngZone.runOutsideAngular(() => this.ajv.validate(schema, value));\n      } catch (e) {\n        if (typeof ngDevMode === 'undefined' || ngDevMode) {\n          // swallow errors thrown in ajv due to invalid schemas, these\n          // still get displayed\n          if (extraOptions.debug) {\n            console.warn(e);\n          }\n        }\n      }\n      let errors = this.ajv.errors;\n      if (this.options && ingoreKeywords && errors) {\n        errors = errors.filter(w => ingoreKeywords.indexOf(w.keyword) === -1);\n      }\n      return errors as ErrorData[];\n    };\n  }\n}\n","import { ComponentRef, Injectable, ViewContainerRef, inject } from '@angular/core';\n\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport { FormProperty } from './model/form.property';\nimport { SFUISchemaItem } from './schema/ui';\nimport type { Widget } from './widget';\n\nexport class WidgetRegistry {\n  private _widgets: Record<string, Widget<FormProperty, SFUISchemaItem>> = {};\n\n  private defaultWidget!: Widget<FormProperty, SFUISchemaItem>;\n\n  get widgets(): Record<string, Widget<FormProperty, SFUISchemaItem>> {\n    return this._widgets;\n  }\n\n  setDefault(widget: NzSafeAny): void {\n    this.defaultWidget = widget;\n  }\n\n  register(type: string, widget: NzSafeAny): void {\n    this._widgets[type] = widget;\n  }\n\n  has(type: string): boolean {\n    return Object.prototype.hasOwnProperty.call(this._widgets, type);\n  }\n\n  getType(type: string): Widget<FormProperty, SFUISchemaItem> {\n    if (this.has(type)) {\n      return this._widgets[type];\n    }\n    return this.defaultWidget;\n  }\n}\n\n@Injectable()\nexport class WidgetFactory {\n  private readonly registry = inject(WidgetRegistry);\n\n  createWidget(container: ViewContainerRef, type: string): ComponentRef<Widget<FormProperty, SFUISchemaItem>> {\n    if (!this.registry.has(type)) {\n      if (typeof ngDevMode === 'undefined' || ngDevMode) {\n        console.warn(`No widget for type \"${type}\"`);\n      }\n    }\n\n    const componentClass = this.registry.getType(type) as NzSafeAny;\n    return container.createComponent(componentClass);\n  }\n}\n","import {\n  Component,\n  ComponentRef,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  TemplateRef,\n  ViewChild,\n  ViewContainerRef,\n  ViewEncapsulation,\n  inject\n} from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { NzFormStatusService } from 'ng-zorro-antd/core/form';\n\nimport { FormProperty } from './model/form.property';\nimport { SFUISchemaItem } from './schema/ui';\nimport { TerminatorService } from './terminator.service';\nimport type { Widget } from './widget';\nimport { WidgetFactory } from './widget.factory';\n\nlet nextUniqueId = 0;\n\n@Component({\n  selector: 'sf-item',\n  exportAs: 'sfItem',\n  host: { '[class.sf__item]': 'true' },\n  template: `\n    <ng-template #target />\n    <ng-container *ngTemplateOutlet=\"footer\" />\n  `,\n  encapsulation: ViewEncapsulation.None,\n  providers: [NzFormStatusService],\n  // eslint-disable-next-line @angular-eslint/prefer-standalone\n  standalone: false\n})\nexport class SFItemComponent implements OnInit, OnChanges, OnDestroy {\n  private readonly widgetFactory = inject(WidgetFactory);\n  private readonly terminator = inject(TerminatorService);\n\n  private ref!: ComponentRef<Widget<FormProperty, SFUISchemaItem>>;\n  readonly destroy$ = new Subject<void>();\n  widget: Widget<FormProperty, SFUISchemaItem> | null = null;\n\n  @Input() formProperty!: FormProperty;\n  @Input() footer: TemplateRef<void> | null = null;\n\n  @ViewChild('target', { read: ViewContainerRef, static: true })\n  private container!: ViewContainerRef;\n\n  onWidgetInstanciated(widget: Widget<FormProperty, SFUISchemaItem>): void {\n    this.widget = widget;\n    const id = `_sf-${nextUniqueId++}`;\n\n    const ui = this.formProperty.ui as SFUISchemaItem;\n    this.widget.formProperty = this.formProperty;\n    this.widget.schema = this.formProperty.schema;\n    this.widget.ui = ui;\n    this.widget.id = id;\n    this.formProperty.widget = widget;\n  }\n\n  ngOnInit(): void {\n    this.terminator.onDestroy.subscribe(() => this.ngOnDestroy());\n  }\n\n  ngOnChanges(): void {\n    const p = this.formProperty;\n    this.ref = this.widgetFactory.createWidget(this.container, (p.ui.widget ?? p.schema.type) as string);\n    this.onWidgetInstanciated(this.ref.instance);\n  }\n\n  ngOnDestroy(): void {\n    const { destroy$ } = this;\n    destroy$.next();\n    destroy$.complete();\n    this.ref.destroy();\n  }\n}\n","import {\n  AfterViewInit,\n  Directive,\n  ElementRef,\n  Input,\n  OnChanges,\n  Renderer2,\n  inject,\n  numberAttribute\n} from '@angular/core';\n\n@Directive({\n  selector: '[fixed-label]',\n  // eslint-disable-next-line @angular-eslint/prefer-standalone\n  standalone: false\n})\nexport class SFFixedDirective implements AfterViewInit, OnChanges {\n  private readonly el: HTMLElement = inject(ElementRef).nativeElement;\n  private readonly render = inject(Renderer2);\n\n  private _inited = false;\n\n  @Input({ alias: 'fixed-label', transform: (v: unknown) => numberAttribute(v, 0) }) num?: number | null;\n\n  private init(): void {\n    if (!this._inited || this.num == null || this.num <= 0) return;\n    const el = this.el;\n    const widgetEl = el.querySelector<HTMLElement>('.ant-row') ?? el;\n    this.render.addClass(widgetEl, 'sf__fixed');\n    const labelEl = widgetEl.querySelector('.ant-form-item-label');\n    const controlEl = widgetEl.querySelector('.ant-form-item-control-wrapper,.ant-form-item-control');\n    const unit = `${this.num}px`;\n    if (labelEl) {\n      this.render.setStyle(labelEl, 'flex', `0 0 ${unit}`);\n      this.render.setStyle(controlEl, 'max-width', `calc(100% - ${unit})`);\n    } else {\n      this.render.setStyle(controlEl, 'margin-left', unit);\n    }\n  }\n\n  ngAfterViewInit(): void {\n    this._inited = true;\n    this.init();\n  }\n\n  ngOnChanges(): void {\n    if (this._inited) this.init();\n  }\n}\n","import { Platform } from '@angular/cdk/platform';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  Injector,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  SimpleChange,\n  SimpleChanges,\n  TemplateRef,\n  ViewEncapsulation,\n  booleanAttribute,\n  inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { merge, filter } from 'rxjs';\n\nimport { ACLService } from '@delon/acl';\nimport { ALAIN_I18N_TOKEN, DelonLocaleService, LocaleData } from '@delon/theme';\nimport { AlainConfigService, AlainSFConfig } from '@delon/util/config';\nimport { deepCopy } from '@delon/util/other';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport type { NzFormControlStatusType } from 'ng-zorro-antd/form';\n\nimport { mergeConfig } from './config';\nimport { SF_SEQ } from './const';\nimport type { ErrorData } from './errors';\nimport type { SFButton, SFLayout, SFMode, SFValueChange } from './interface';\nimport { FormProperty, PropertyGroup } from './model/form.property';\nimport { FormPropertyFactory } from './model/form.property.factory';\nimport type { SFSchema } from './schema/index';\nimport type { SFOptionalHelp, SFUISchema, SFUISchemaItem, SFUISchemaItemRun } from './schema/ui';\nimport { TerminatorService } from './terminator.service';\nimport { di, resolveIfSchema, retrieveSchema } from './utils';\nimport { SchemaValidatorFactory } from './validator.factory';\nimport { WidgetFactory } from './widget.factory';\n\nexport function useFactory(\n  injector: Injector,\n  schemaValidatorFactory: SchemaValidatorFactory,\n  cogSrv: AlainConfigService\n): FormPropertyFactory {\n  return new FormPropertyFactory(injector, schemaValidatorFactory, cogSrv);\n}\n\n@Component({\n  selector: 'sf, [sf]',\n  exportAs: 'sf',\n  templateUrl: './sf.component.html',\n  providers: [\n    WidgetFactory,\n    {\n      provide: FormPropertyFactory,\n      useFactory,\n      deps: [Injector, SchemaValidatorFactory, AlainConfigService]\n    },\n    TerminatorService\n  ],\n  host: {\n    '[class.sf]': 'true',\n    '[class.sf__inline]': `layout === 'inline'`,\n    '[class.sf__horizontal]': `layout === 'horizontal'`,\n    '[class.sf__search]': `mode === 'search'`,\n    '[class.sf__edit]': `mode === 'edit'`,\n    '[class.sf__no-error]': `onlyVisual`,\n    '[class.sf__no-colon]': `noColon`,\n    '[class.sf__compact]': `compact`\n  },\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  // eslint-disable-next-line @angular-eslint/prefer-standalone\n  standalone: false\n})\nexport class SFComponent implements OnInit, OnChanges, OnDestroy {\n  private readonly formPropertyFactory = inject(FormPropertyFactory);\n  private readonly terminator = inject(TerminatorService);\n  private readonly dom = inject(DomSanitizer);\n  private readonly cdr = inject(ChangeDetectorRef);\n  private readonly localeSrv = inject(DelonLocaleService);\n  private readonly aclSrv = inject(ACLService);\n  private readonly i18nSrv = inject(ALAIN_I18N_TOKEN);\n  private readonly platform = inject(Platform);\n  private readonly cogSrv = inject(AlainConfigService);\n\n  private _renders = new Map<string, TemplateRef<void>>();\n  private _item!: Record<string, unknown>;\n  private _valid = true;\n  private _defUi!: SFUISchemaItem;\n  readonly options: AlainSFConfig;\n\n  _inited = false;\n  locale: LocaleData = {};\n  rootProperty: FormProperty | null = null;\n  _formData!: Record<string, unknown>;\n  _btn!: SFButton;\n  _schema!: SFSchema;\n  _ui!: SFUISchema;\n  get btnGrid(): NzSafeAny {\n    return this._btn.render!.grid;\n  }\n\n  // #region fields\n\n  /** 表单布局，等同 `nzLayout`，默认：horizontal */\n  @Input() layout: SFLayout = 'horizontal';\n  /** JSON Schema */\n  @Input() schema!: SFSchema;\n  /** UI Schema */\n  @Input() ui!: SFUISchema;\n  /** 表单默认值 */\n  @Input() formData?: Record<string, NzSafeAny>;\n  /**\n   * 按钮\n   * - 值为 `null` 或 `undefined` 表示手动添加按钮，但保留容器\n   * - 值为 `none` 表示手动添加按钮，且不保留容器\n   * - 使用 `spanLabelFixed` 固定标签宽度时，若无 `render.class` 则默认为居中状态\n   */\n  @Input() button?: SFButton | 'none' | null = {};\n  /**\n   * 是否实时校验，默认：`true`\n   * - `true` 每一次都校验\n   * - `false` 提交时校验\n   */\n  @Input({ transform: booleanAttribute }) liveValidate = true;\n  /** 指定表单 `autocomplete` 值 */\n  @Input() autocomplete: 'on' | 'off';\n  /**\n   * Whether to display error visuals immediately\n   *\n   * 是否立即显示错误视觉\n   */\n  @Input({ transform: booleanAttribute }) firstVisual = true;\n  /**\n   * Whether to only display error visuals but not error text\n   *\n   * 是否只展示错误视觉不显示错误文本\n   */\n  @Input({ transform: booleanAttribute }) onlyVisual = false;\n  @Input({ transform: booleanAttribute }) compact = false;\n  /**\n   * Form default mode, will force override `layout`, `firstVisual`, `liveValidate` parameters\n   *\n   * 表单预设模式，会强制覆盖 `layout`，`firstVisual`，`liveValidate` 参数\n   */\n  @Input()\n  set mode(value: SFMode) {\n    switch (value) {\n      case 'search':\n        this.layout = 'inline';\n        this.firstVisual = false;\n        this.liveValidate = false;\n        if (this._btn) {\n          this._btn.submit = this._btn.search;\n        }\n        break;\n      case 'edit':\n        this.layout = 'horizontal';\n        this.firstVisual = false;\n        this.liveValidate = true;\n        if (this._btn) {\n          this._btn.submit = this._btn.edit;\n        }\n        break;\n    }\n    this._mode = value;\n  }\n  get mode(): SFMode {\n    return this._mode;\n  }\n  private _mode!: SFMode;\n  /**\n   * Whether to load status，when `true` reset button is disabled status, submit button is loading status\n   */\n  @Input({ transform: booleanAttribute }) loading = false;\n  @Input({ transform: booleanAttribute }) disabled = false;\n  @Input({ transform: booleanAttribute }) noColon = false;\n  @Input({ transform: booleanAttribute }) cleanValue = false;\n  @Input({ transform: booleanAttribute }) delay = false;\n  @Output() readonly formValueChange = new EventEmitter<SFValueChange>();\n  @Output() readonly formChange = new EventEmitter<Record<string, unknown>>();\n  @Output() readonly formSubmit = new EventEmitter<Record<string, unknown>>();\n  @Output() readonly formReset = new EventEmitter<Record<string, unknown>>();\n  @Output() readonly formError = new EventEmitter<ErrorData[]>();\n  // #endregion\n\n  /**\n   * Whether the form is valid\n   *\n   * 表单是否有效\n   */\n  get valid(): boolean {\n    return this._valid;\n  }\n\n  /**\n   * The value of the form\n   *\n   * 表单值\n   */\n  get value(): Record<string, NzSafeAny> {\n    return this._item;\n  }\n\n  /**\n   * Get form element property based on [path](https://ng-alain.com/form/qa#path)\n   *\n   * 根据[路径](https://ng-alain.com/form/qa#path)获取表单元素属性\n   */\n  getProperty(path: string): FormProperty | null | undefined {\n    return this.rootProperty?.searchProperty(path);\n  }\n\n  /**\n   * Get element value based on [path](https://ng-alain.com/form/qa#path)\n   *\n   * 根据[路径](https://ng-alain.com/form/qa#path)获取表单元素值\n   */\n  getValue(path: string): NzSafeAny {\n    return this.getProperty(path)?.value;\n  }\n\n  /**\n   * Set form element new value based on [path](https://ng-alain.com/form/qa#path)\n   *\n   * 根据[路径](https://ng-alain.com/form/qa#path)设置某个表单元素属性值\n   */\n  setValue(path: string, value: NzSafeAny): this {\n    const item = this.getProperty(path);\n    if (!item) {\n      throw new Error(`Invalid path: ${path}`);\n    }\n    item.resetValue(value, false);\n    return this;\n  }\n\n  /**\n   * Set form element new `disabled` based on [path](https://ng-alain.com/form/qa#path)\n   *\n   * 根据[路径](https://ng-alain.com/form/qa#path)设置某个表单元素 `disabled` 状态\n   */\n  setDisabled(path: string, status: boolean): this {\n    const property = this.getProperty(path);\n    if (!property) {\n      throw new Error(`Invalid path: ${path}`);\n    }\n    property.schema.readOnly = status;\n    property.widget.detectChanges();\n    return this;\n  }\n\n  /**\n   * Set form element new `required` based on [path](https://ng-alain.com/form/qa#path)\n   *\n   * 根据[路径](https://ng-alain.com/form/qa#path)设置某个表单元素 `required` 状态\n   */\n  setRequired(path: string, status: boolean): this {\n    const property = this.getProperty(path);\n    if (!property) {\n      throw new Error(`Invalid path: ${path}`);\n    }\n\n    const key = path.split(SF_SEQ).pop()!;\n    const parentRequired = property.parent?.schema.required ?? [];\n    const idx = parentRequired.findIndex(w => w === key);\n    if (status) {\n      if (idx === -1) parentRequired.push(key);\n    } else {\n      if (idx !== -1) parentRequired.splice(idx, 1);\n    }\n    property.parent!.schema.required = parentRequired;\n    property.ui._required = status;\n    property.widget.detectChanges();\n    this.validator({ onlyRoot: false });\n    return this;\n  }\n\n  /**\n   * Update the feedback status of the widget\n   *\n   * 更新小部件的反馈状态\n   *\n   * ```ts\n   * // Validate status of the widget\n   * this.sf.updateFeedback('/name', 'validating');\n   * // Clean validate status of the widget\n   * this.sf.updateFeedback('/name');\n   * ```\n   */\n  updateFeedback(path: string, status: NzFormControlStatusType = ''): this {\n    this.getProperty(path)?.updateFeedback(status);\n    return this;\n  }\n\n  onSubmit(e: Event): void {\n    e.preventDefault();\n    e.stopPropagation();\n    if (!this.liveValidate) this.validator();\n    if (!this.valid) return;\n    this.formSubmit.emit(this.value);\n  }\n\n  constructor() {\n    this.options = mergeConfig(this.cogSrv);\n    this.liveValidate = this.options.liveValidate as boolean;\n    this.firstVisual = this.options.firstVisual as boolean;\n    this.autocomplete = this.options.autocomplete as 'on' | 'off';\n    this.delay = this.options.delay as boolean;\n    this.localeSrv.change.pipe(takeUntilDestroyed()).subscribe(() => {\n      this.locale = this.localeSrv.getData('sf');\n      if (this._inited) {\n        this.validator({ emitError: false, onlyRoot: false });\n        this.coverButtonProperty();\n        this.cdr.markForCheck();\n      }\n    });\n    merge(this.aclSrv.change, this.i18nSrv.change)\n      .pipe(\n        filter(() => this._inited),\n        takeUntilDestroyed()\n      )\n      .subscribe(() => this.refreshSchema());\n  }\n\n  protected fanyi(key: string): string {\n    return this.i18nSrv.fanyi(key) ?? key;\n  }\n\n  private inheritUI(ui: SFUISchemaItemRun): void {\n    ['optionalHelp'].filter(key => !!this._defUi[key]).forEach(key => (ui[key] = { ...this._defUi[key], ...ui[key] }));\n  }\n\n  private coverProperty(): void {\n    const isHorizontal = this.layout === 'horizontal';\n    const _schema = deepCopy(this.schema);\n    const { definitions } = _schema;\n\n    const inFn = (\n      schema: SFSchema,\n      _parentSchema: SFSchema,\n      uiSchema: SFUISchemaItemRun,\n      parentUiSchema: SFUISchemaItemRun,\n      uiRes: SFUISchemaItemRun\n    ): void => {\n      if (!Array.isArray(schema.required)) schema.required = [];\n\n      Object.keys(schema.properties!).forEach(key => {\n        const uiKeyPrefix = '$';\n        const uiKey = uiKeyPrefix + key;\n        const property = retrieveSchema(schema.properties![key] as SFSchema, definitions);\n        const curUi = {\n          ...(property.ui as SFUISchemaItem),\n          ...uiSchema[uiKey]\n        };\n        const ui = {\n          ...this._defUi,\n          ...parentUiSchema,\n          // 忽略部分会引起呈现的属性\n          visibleIf: undefined,\n          hidden: undefined,\n          optional: undefined,\n          optionalHelp: undefined,\n          widget: property.type,\n          ...(property.format && (this.options.formatMap as NzSafeAny)[property.format]),\n          ...(typeof property.ui === 'string' ? { widget: property.ui } : null),\n          ...(!property.format && !property.ui && Array.isArray(property.enum) && property.enum.length > 0\n            ? { widget: 'select' }\n            : null),\n          ...curUi\n        } as SFUISchemaItemRun;\n        Object.keys(ui)\n          .filter(key => key.startsWith(uiKeyPrefix))\n          .forEach(key => delete ui[key]);\n        // 继承父节点布局属性\n        if (isHorizontal) {\n          if (parentUiSchema.spanLabelFixed) {\n            if (!curUi.spanLabelFixed) {\n              ui.spanLabelFixed = parentUiSchema.spanLabelFixed;\n            }\n          } else {\n            if (!ui.spanLabel)\n              ui.spanLabel = typeof parentUiSchema.spanLabel === 'undefined' ? 5 : parentUiSchema.spanLabel;\n            if (!ui.spanControl)\n              ui.spanControl = typeof parentUiSchema.spanControl === 'undefined' ? 19 : parentUiSchema.spanControl;\n            if (!ui.offsetControl)\n              ui.offsetControl =\n                typeof parentUiSchema.offsetControl === 'undefined' ? null : parentUiSchema.offsetControl;\n          }\n        } else {\n          ui.spanLabel = null;\n          ui.spanControl = null;\n          ui.offsetControl = null;\n        }\n        // 内联强制清理 `grid` 参数\n        if (this.layout === 'inline') {\n          delete ui.grid;\n        }\n        // 非水平布局强制清理 `spanLabelFixed` 值\n        if (this.layout !== 'horizontal') {\n          ui.spanLabelFixed = null;\n        }\n        // 当指定标签为固定宽度时无须指定 `spanLabel`，`spanControl`\n        if (ui.spanLabelFixed != null && ui.spanLabelFixed > 0) {\n          ui.spanLabel = null;\n          ui.spanControl = null;\n        }\n        if (ui.widget === 'date' && ui.end != null) {\n          const dateEndProperty = schema.properties![ui.end];\n          if (dateEndProperty) {\n            dateEndProperty.ui = {\n              ...(dateEndProperty.ui as SFUISchemaItem),\n              widget: ui.widget,\n              hidden: true\n            };\n          } else {\n            ui.end = null;\n          }\n        }\n        this.inheritUI(ui);\n        if (ui.optionalHelp) {\n          if (typeof ui.optionalHelp === 'string') {\n            ui.optionalHelp = {\n              text: ui.optionalHelp\n            } as SFOptionalHelp;\n          }\n          const oh = (ui.optionalHelp = {\n            text: '',\n            icon: 'question-circle',\n            placement: 'top',\n            trigger: 'hover',\n            mouseEnterDelay: 0.15,\n            mouseLeaveDelay: 0.1,\n            ...ui.optionalHelp\n          });\n          if (oh.i18n) {\n            oh.text = this.fanyi(oh.i18n);\n          }\n          if (!oh.text) {\n            ui.optionalHelp = undefined;\n          }\n        }\n        if (ui.i18n) {\n          property.title = this.fanyi(ui.i18n);\n        }\n        if (ui.descriptionI18n) {\n          property.description = this.fanyi(ui.descriptionI18n);\n        }\n        if (property.description) {\n          ui._description = this.dom.bypassSecurityTrustHtml(property.description);\n        }\n        ui.hidden = typeof ui.hidden === 'boolean' ? ui.hidden : false;\n        if (ui.hidden === false && ui.acl && this.aclSrv && !this.aclSrv.can(ui.acl)) {\n          ui.hidden = true;\n        }\n\n        uiRes[uiKey] = ui;\n        delete property.ui;\n\n        if (ui.hidden === true) {\n          const idx = schema.required!.indexOf(key);\n          if (idx !== -1) {\n            schema.required!.splice(idx, 1);\n          }\n        }\n\n        if (property.items) {\n          ui.$items = {\n            ...(property.items.ui as SFUISchemaItem),\n            ...uiSchema[uiKey],\n            ...ui.$items\n          };\n          inFn(property.items, property.items, uiSchema[uiKey]?.$items ?? {}, ui.$items, ui.$items);\n          delete property.items.ui;\n        }\n\n        if (property.properties && Object.keys(property.properties).length) {\n          inFn(property, schema, uiSchema[uiKey] ?? {}, ui, ui);\n        }\n      });\n    };\n\n    if (this.ui == null) this.ui = {};\n    this._defUi = {\n      onlyVisual: this.options.onlyVisual,\n      size: this.options.size,\n      liveValidate: this.liveValidate,\n      ...this.options.ui,\n      ...(_schema as NzSafeAny).ui,\n      ...this.ui['*']\n    };\n    if (this.onlyVisual === true) {\n      this._defUi.onlyVisual = true;\n    }\n    // 内联强制清理 `grid` 参数\n    if (this.layout === 'inline') {\n      delete this._defUi.grid;\n    }\n\n    // root\n    this._ui = { ...this._defUi };\n\n    inFn(_schema, _schema, this.ui, this.ui, this._ui);\n\n    // cond\n    resolveIfSchema(_schema, this._ui);\n\n    this._schema = _schema;\n    delete _schema.ui;\n\n    di(this._ui, 'cover schema & ui', this._ui, _schema);\n  }\n\n  private coverButtonProperty(): void {\n    this._btn = {\n      render: { size: 'default' },\n      ...this.locale,\n      ...this.options.button,\n      ...(this.button as SFButton)\n    };\n    const firstKey = Object.keys(this._ui).find(w => w.startsWith('$'));\n    const btnRender = this._btn.render!;\n    if (this.layout === 'horizontal') {\n      const btnUi = firstKey ? this._ui[firstKey] : this._defUi;\n      if (!btnRender.grid) {\n        btnRender.grid = {\n          offset: btnUi.spanLabel,\n          span: btnUi.spanControl\n        };\n      }\n      // fixed label\n      if (btnRender.spanLabelFixed == null) {\n        btnRender.spanLabelFixed = btnUi.spanLabelFixed;\n      }\n      // 固定标签宽度时，若不指定样式，则默认居中\n      if (!btnRender.class && typeof btnUi.spanLabelFixed === 'number' && btnUi.spanLabelFixed > 0) {\n        btnRender.class = 'text-center';\n      }\n    } else {\n      btnRender.grid = {};\n    }\n    if (this._mode) {\n      this.mode = this._mode;\n    }\n\n    di(this._ui, 'button property', this._btn);\n  }\n\n  ngOnInit(): void {\n    if (!this.platform.isBrowser) {\n      return;\n    }\n    this.validator();\n    this._inited = true;\n  }\n\n  ngOnChanges(changes: { [P in keyof this]?: SimpleChange } & SimpleChanges): void {\n    if (!this.platform.isBrowser) {\n      return;\n    }\n    const ingoreRender = ['disabled', 'loading'];\n    if (Object.keys(changes).every(key => ingoreRender.includes(key))) {\n      this.cdr.detectChanges();\n      return;\n    }\n    if (!this.delay) {\n      this.refreshSchema();\n    }\n  }\n\n  /** @internal */\n  _addTpl(path: string, templateRef: TemplateRef<void>): void {\n    if (!this._inited) {\n      return;\n    }\n    if (this._renders.has(path)) {\n      if (typeof ngDevMode === 'undefined' || ngDevMode) {\n        console.warn(`Duplicate definition \"${path}\" custom widget`);\n      }\n      return;\n    }\n    this._renders.set(path, templateRef);\n    this.attachCustomRender();\n  }\n\n  private attachCustomRender(): void {\n    this._renders.forEach((tpl, path) => {\n      const property = this.rootProperty?.searchProperty(path);\n      if (property == null) {\n        return;\n      }\n      property.ui._render = tpl;\n    });\n  }\n\n  /**\n   * Validator the form is valid\n   *\n   * 校验表单是否有效\n   * - `emitError` 当表单无效时是否触发 `formError` 事件，默认：`true`\n   * - `onlyRoot` 只对根进行检验，不进行向下逐个递归，根已经包含整个 Json Schema，默认：`true`\n   */\n  validator(options: { emitError?: boolean; onlyRoot?: boolean } = { emitError: true, onlyRoot: true }): boolean {\n    if (this.rootProperty == null || !this.platform.isBrowser) {\n      return false;\n    }\n    const fn = (property: FormProperty): void => {\n      property._runValidation();\n      if (!(property instanceof PropertyGroup) || !property.properties) return;\n      if (Array.isArray(property.properties)) {\n        property.properties.forEach(p => fn(p));\n      } else {\n        Object.keys(property.properties).forEach(key => fn((property.properties as Record<string, FormProperty>)[key]));\n      }\n    };\n    if (options.onlyRoot) {\n      this.rootProperty!._runValidation();\n    } else {\n      fn(this.rootProperty!);\n    }\n\n    const errors = this.rootProperty!.errors;\n    this._valid = !(errors && errors.length);\n    if (options.emitError && !this._valid) this.formError.emit(errors!);\n    this.cdr.detectChanges();\n    return this._valid;\n  }\n\n  /**\n   * Refresh the form Schema, when specifying `newSchema` means to replace the current Schema\n   *\n   * 刷新 Schema，当指定 `newSchema` 表示替换当前的 Schema\n   *\n   * 可以针对某个表单元素进行刷新，例如：\n   * ```\n   * // 获取某个元素\n   * const statusProperty = this.sf.getProperty('/status')!;\n   * // 重置 `schema` 或 `ui` 参数\n   * statusProperty.schema.enum = ['1', '2', '3'];\n   * // 调用 `reset` 重置初始值\n   * statusProperty.widget.reset('2');\n   * ```\n   */\n  refreshSchema(newSchema?: SFSchema, newUI?: SFUISchema): this {\n    if (!this.platform.isBrowser) {\n      return this;\n    }\n    if (newSchema) this.schema = newSchema;\n    if (newUI) this.ui = newUI;\n\n    if (!this.schema || typeof this.schema.properties === 'undefined') throw new Error(`Invalid Schema`);\n    if (this.schema.ui && typeof this.schema.ui === 'string')\n      throw new Error(`Don't support string with root ui property`);\n\n    this.schema.type = 'object';\n\n    this._formData = { ...this.formData };\n\n    if (this._inited) this.terminator.destroy();\n\n    this.cleanRootSub();\n\n    this.coverProperty();\n    this.coverButtonProperty();\n\n    this.rootProperty = this.formPropertyFactory.createProperty(this._schema, this._ui, this.formData!);\n    this.attachCustomRender();\n    this.cdr.detectChanges();\n    this.reset();\n\n    let isFirst = true;\n    this.rootProperty.valueChanges.subscribe(res => {\n      this._item = { ...(this.cleanValue ? null : this.formData), ...res.value };\n      if (isFirst) {\n        isFirst = false;\n        return;\n      }\n      this.formChange.emit(this._item);\n      this.formValueChange.emit({ value: this._item, path: res.path, pathValue: res.pathValue });\n    });\n    this.rootProperty.errorsChanges.subscribe(errors => {\n      this._valid = !(errors && errors.length);\n      this.formError.emit(errors!);\n      this.cdr.detectChanges();\n    });\n\n    return this;\n  }\n\n  /**\n   * Reset form\n   *\n   * 重置表单\n   *\n   * @param [emit] 是否触发 `formReset` 事件，默认：`false`\n   */\n  reset(emit: boolean = false): this {\n    if (this.rootProperty == null || !this.platform.isBrowser) {\n      return this;\n    }\n    this.rootProperty.resetValue(this.formData, false);\n    Promise.resolve().then(() => this.cdr.detectChanges());\n    if (emit) {\n      this.formReset.emit(this.value);\n    }\n    return this;\n  }\n\n  private cleanRootSub(): void {\n    if (!this.rootProperty) return;\n    this.rootProperty.errorsChanges.unsubscribe();\n    this.rootProperty.valueChanges.unsubscribe();\n  }\n\n  ngOnDestroy(): void {\n    this.cleanRootSub();\n    this.terminator.destroy();\n  }\n}\n","<ng-template #con>\n  <ng-content />\n</ng-template>\n<ng-template #btnTpl>\n  @if (button !== 'none') {\n    @let btnRender = _btn.render;\n    @if (btnRender) {\n      <nz-form-item [class]=\"btnRender.class!\" class=\"sf-btns\" [fixed-label]=\"btnRender.spanLabelFixed!\">\n        <div\n          nz-col\n          class=\"ant-form-item-control\"\n          [nzSpan]=\"btnGrid.span\"\n          [nzOffset]=\"btnGrid.offset\"\n          [nzXs]=\"btnGrid.xs\"\n          [nzSm]=\"btnGrid.sm\"\n          [nzMd]=\"btnGrid.md\"\n          [nzLg]=\"btnGrid.lg\"\n          [nzXl]=\"btnGrid.xl\"\n          [nzXXl]=\"btnGrid.xxl\"\n        >\n          <div class=\"ant-form-item-control-input\">\n            <div class=\"ant-form-item-control-input-content\">\n              @if (button) {\n                <button\n                  type=\"submit\"\n                  nz-button\n                  data-type=\"submit\"\n                  [nzType]=\"_btn.submit_type!\"\n                  [nzSize]=\"btnRender.size!\"\n                  [nzLoading]=\"loading\"\n                  [disabled]=\"liveValidate && !valid\"\n                >\n                  @if (_btn.submit_icon) {\n                    <nz-icon\n                      [nzType]=\"_btn.submit_icon.type!\"\n                      [nzTheme]=\"_btn.submit_icon.theme!\"\n                      [nzTwotoneColor]=\"_btn.submit_icon.twoToneColor!\"\n                      [nzIconfont]=\"_btn.submit_icon.iconfont!\"\n                    />\n                  }\n                  {{ _btn.submit }}\n                </button>\n                @if (_btn.reset) {\n                  <button\n                    type=\"button\"\n                    nz-button\n                    data-type=\"reset\"\n                    [nzType]=\"_btn.reset_type!\"\n                    [nzSize]=\"btnRender.size!\"\n                    [disabled]=\"loading\"\n                    (click)=\"reset(true)\"\n                  >\n                    @let resetIcon = _btn.reset_icon;\n                    @if (resetIcon) {\n                      <nz-icon\n                        [nzType]=\"resetIcon.type!\"\n                        [nzTheme]=\"resetIcon.theme!\"\n                        [nzTwotoneColor]=\"resetIcon.twoToneColor!\"\n                        [nzIconfont]=\"resetIcon.iconfont!\"\n                      />\n                    }\n                    {{ _btn.reset }}\n                  </button>\n                }\n              } @else {\n                <ng-template [ngTemplateOutlet]=\"con\" />\n              }\n            </div>\n          </div>\n        </div>\n      </nz-form-item>\n    }\n  } @else {\n    <ng-template [ngTemplateOutlet]=\"con\" />\n  }\n</ng-template>\n<form nz-form [nzLayout]=\"layout\" (submit)=\"onSubmit($event)\" [attr.autocomplete]=\"autocomplete\">\n  @if (rootProperty) {\n    <sf-item [formProperty]=\"rootProperty\" [footer]=\"btnTpl\" />\n  }\n</form>\n","import { Component, Input, OnChanges, ViewEncapsulation, inject } from '@angular/core';\n\nimport { withAnimationCheck } from 'ng-zorro-antd/core/animation';\nimport { NzFormStatusService } from 'ng-zorro-antd/core/form';\n\nimport type { SFSchema } from './schema/index';\nimport type { SFOptionalHelp, SFUISchemaItem } from './schema/ui';\n\n@Component({\n  selector: 'sf-item-wrap',\n  templateUrl: './sf-item-wrap.component.html',\n  encapsulation: ViewEncapsulation.None,\n  // eslint-disable-next-line @angular-eslint/prefer-standalone\n  standalone: false\n})\nexport class SFItemWrapComponent implements OnChanges {\n  private readonly statusSrv = inject(NzFormStatusService);\n\n  _showTitle: boolean = false;\n  @Input() id?: string;\n  @Input() schema!: SFSchema;\n  @Input() ui!: SFUISchemaItem;\n  @Input() showError?: boolean;\n  @Input() error?: string;\n  @Input()\n  set showTitle(val: boolean | string | null | undefined) {\n    this._showTitle = !!val;\n  }\n  @Input() title: string | null = null;\n\n  get t(): string {\n    return this.title === null ? this.schema.title! : this.title;\n  }\n\n  get oh(): SFOptionalHelp {\n    return this.ui.optionalHelp as SFOptionalHelp;\n  }\n\n  protected readonly nzValidateAnimationEnter = withAnimationCheck(() => 'ant-form-validate_animation-enter');\n  protected readonly nzValidateAnimationLeave = withAnimationCheck(() => 'ant-form-validate_animation-leave');\n\n  ngOnChanges(): void {\n    const hasError = !!this.error;\n    this.statusSrv.formStatusChanges.next({ status: hasError ? 'error' : '', hasFeedback: !!this.ui.feedback });\n  }\n}\n","<nz-form-item\n  [style.width.px]=\"ui.width\"\n  [class.ant-form-item-has-error]=\"showError\"\n  [class.ant-form-item-with-help]=\"showError\"\n  [class.ant-form-item-has-success]=\"ui.feedback === 'success'\"\n  [class.ant-form-item-has-warning]=\"ui.feedback === 'warning'\"\n  [class.ant-form-item-has-error]=\"ui.feedback === 'error'\"\n  [class.ant-form-item-is-validating]=\"ui.feedback === 'validating'\"\n  [class.ant-form-item-has-feedback]=\"ui.feedback\"\n>\n  @if (_showTitle) {\n    <div nz-col [nzSpan]=\"ui.spanLabel!\" class=\"ant-form-item-label\">\n      @if (t) {\n        <label [attr.for]=\"id\" [class.ant-form-item-required]=\"ui._required\">\n          <span class=\"sf__label-text\">{{ t }}</span>\n          @if (ui.optional || oh) {\n            <span class=\"sf__optional\">\n              {{ ui.optional }}\n              @if (oh) {\n                <nz-icon\n                  nz-tooltip\n                  [nzTooltipTitle]=\"oh.text\"\n                  [nzTooltipPlacement]=\"oh.placement\"\n                  [nzTooltipTrigger]=\"oh.trigger\"\n                  [nzTooltipColor]=\"oh.bgColor\"\n                  [nzTooltipOverlayClassName]=\"oh.overlayClassName\"\n                  [nzTooltipOverlayStyle]=\"oh.overlayStyle\"\n                  [nzTooltipMouseEnterDelay]=\"oh.mouseEnterDelay\"\n                  [nzTooltipMouseLeaveDelay]=\"oh.mouseLeaveDelay\"\n                  [nzType]=\"oh.icon!\"\n                />\n              }\n            </span>\n          }\n        </label>\n      }\n    </div>\n  }\n  <div nz-col class=\"ant-form-item-control\" [nzSpan]=\"ui.spanControl!\" [nzOffset]=\"ui.offsetControl!\">\n    <div class=\"ant-form-item-control-input\">\n      <div class=\"ant-form-item-control-input-content\">\n        <ng-content />\n      </div>\n    </div>\n    @if (!ui.onlyVisual && showError) {\n      <div\n        [animate.enter]=\"nzValidateAnimationEnter()\"\n        [animate.leave]=\"nzValidateAnimationLeave()\"\n        class=\"ant-form-item-explain ant-form-item-explain-connected\"\n      >\n        <div role=\"alert\" class=\"ant-form-item-explain-error\">\n          {{ error }}\n        </div>\n      </div>\n    }\n    @if (schema.description) {\n      <div class=\"ant-form-item-extra\" [innerHTML]=\"ui._description\"></div>\n    }\n  </div>\n</nz-form-item>\n","import { Directive, Input, OnInit, TemplateRef, inject } from '@angular/core';\n\nimport { SF_SEQ } from '../../const';\nimport { SFComponent } from '../../sf.component';\n\n@Directive({\n  selector: '[sf-template]',\n  // eslint-disable-next-line @angular-eslint/prefer-standalone\n  standalone: false\n})\nexport class SFTemplateDirective implements OnInit {\n  private readonly table = inject(SFComponent);\n  private readonly templateRef = inject(TemplateRef);\n\n  @Input('sf-template') path!: string;\n\n  ngOnInit(): void {\n    this.table._addTpl(this.path.startsWith(SF_SEQ) ? this.path : SF_SEQ + this.path, this.templateRef);\n  }\n}\n","import { AfterViewInit, ChangeDetectorRef, Directive, HostBinding, Injector, inject } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { takeUntil } from 'rxjs';\n\nimport { LocaleData } from '@delon/theme';\nimport type { NgClassType, NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport type { ErrorData } from './errors';\nimport type { SFValue } from './interface';\nimport { ArrayProperty } from './model/array.property';\nimport { FormProperty } from './model/form.property';\nimport { ObjectProperty } from './model/object.property';\nimport type { SFSchema } from './schema';\nimport type { SFOptionalHelp, SFUISchemaItem } from './schema/ui';\nimport { SFItemComponent } from './sf-item.component';\nimport { SFComponent } from './sf.component';\nimport { di } from './utils';\nimport type { SFArrayWidgetSchema, SFObjectWidgetSchema } from './widgets';\n\n@Directive()\nexport abstract class Widget<T extends FormProperty, UIT extends SFUISchemaItem> implements AfterViewInit {\n  readonly cd = inject(ChangeDetectorRef);\n  readonly injector = inject(Injector);\n  readonly sfItemComp = inject(SFItemComponent);\n  readonly sfComp = inject(SFComponent);\n\n  formProperty!: T;\n  error?: string;\n  showError = false;\n  id = '';\n  schema!: SFSchema;\n  ui!: UIT;\n\n  @HostBinding('class')\n  get cls(): NgClassType {\n    return this.ui.class ?? '';\n  }\n\n  get disabled(): boolean {\n    if (this.schema.readOnly === true || this.sfComp!.disabled) {\n      return true;\n    }\n\n    return false;\n  }\n\n  get l(): LocaleData {\n    return this.formProperty.root.widget!.sfComp!.locale;\n  }\n\n  get oh(): SFOptionalHelp {\n    return this.ui.optionalHelp as SFOptionalHelp;\n  }\n\n  get dom(): DomSanitizer {\n    return this.injector.get(DomSanitizer);\n  }\n\n  get cleanValue(): boolean {\n    return this.sfComp!.cleanValue!;\n  }\n\n  ngAfterViewInit(): void {\n    this.formProperty.errorsChanges\n      .pipe(takeUntil(this.sfItemComp!.destroy$))\n      .subscribe((errors: ErrorData[] | null) => {\n        if (errors == null) return;\n\n        di(this.ui, 'errorsChanges', this.formProperty.path, errors);\n\n        // 不显示首次校验视觉\n        const firstVisual = this.sfComp?.firstVisual;\n        if (firstVisual || (!firstVisual && this.sfComp?._inited)) {\n          this.showError = errors.length > 0;\n          this.error = this.showError ? (errors[0].message as string) : '';\n\n          this.cd.detectChanges();\n        }\n      });\n    this.afterViewInit();\n  }\n\n  setValue(value: SFValue): void {\n    this.formProperty.setValue(value, false);\n    di(this.ui, 'valueChanges', this.formProperty.path, this.formProperty);\n  }\n\n  get value(): NzSafeAny {\n    return this.formProperty.value;\n  }\n\n  detectChanges(onlySelf: boolean = false): void {\n    if (onlySelf) {\n      this.cd.markForCheck();\n    } else {\n      this.formProperty.root.widget?.cd.markForCheck();\n    }\n  }\n\n  abstract reset(value: SFValue): void;\n\n  abstract afterViewInit(): void;\n}\n\n@Directive()\nexport class ControlWidget extends Widget<FormProperty, SFUISchemaItem> {\n  reset(_value: SFValue): void {}\n  afterViewInit(): void {}\n}\n\n@Directive()\nexport class ControlUIWidget<UIT extends SFUISchemaItem> extends Widget<FormProperty, UIT> {\n  reset(_value: SFValue): void {}\n  afterViewInit(): void {}\n}\n\n@Directive()\nexport class ArrayLayoutWidget extends Widget<ArrayProperty, SFArrayWidgetSchema> implements AfterViewInit {\n  reset(_value: SFValue): void {}\n  afterViewInit(): void {}\n\n  ngAfterViewInit(): void {\n    this.formProperty.errorsChanges.pipe(takeUntil(this.sfItemComp!.destroy$)).subscribe(() => this.cd.detectChanges());\n  }\n}\n\n@Directive()\nexport class ObjectLayoutWidget extends Widget<ObjectProperty, SFObjectWidgetSchema> implements AfterViewInit {\n  reset(_value: SFValue): void {}\n  afterViewInit(): void {}\n\n  ngAfterViewInit(): void {\n    this.formProperty.errorsChanges.pipe(takeUntil(this.sfItemComp!.destroy$)).subscribe(() => this.cd.detectChanges());\n  }\n}\n","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport { SafeHtml } from '@angular/platform-browser';\n\nimport { NzButtonType } from 'ng-zorro-antd/button';\n\nimport { SFUpdateValueAndValidity } from '../../interface';\nimport type { FormProperty } from '../../model/form.property';\nimport { ArrayLayoutWidget } from '../../widget';\n\n@Component({\n  selector: 'sf-array',\n  template: `<nz-form-item [class.ant-form-item-with-help]=\"showError\">\n    @if (schema.title) {\n      <div nz-col [nzSpan]=\"ui.spanLabel!\" class=\"ant-form-item-label\">\n        <label [class.ant-form-item-required]=\"ui.required\">\n          {{ schema.title }}\n          <span class=\"sf__optional\">\n            {{ ui.optional }}\n            @if (oh) {\n              <nz-icon\n                nz-tooltip\n                [nzTooltipTitle]=\"oh.text\"\n                [nzTooltipPlacement]=\"oh.placement\"\n                [nzTooltipTrigger]=\"oh.trigger\"\n                [nzTooltipOverlayClassName]=\"oh.overlayClassName\"\n                [nzTooltipOverlayStyle]=\"oh.overlayStyle\"\n                [nzTooltipMouseEnterDelay]=\"oh.mouseEnterDelay\"\n                [nzTooltipMouseLeaveDelay]=\"oh.mouseLeaveDelay\"\n                [nzType]=\"oh.icon!\"\n              />\n            }\n          </span>\n        </label>\n        <div class=\"sf__array-add\">\n          <button\n            type=\"button\"\n            nz-button\n            [nzType]=\"addType\"\n            [disabled]=\"addDisabled\"\n            (click)=\"addItem()\"\n            [innerHTML]=\"addTitle\"\n          ></button>\n        </div>\n      </div>\n    }\n    <div nz-col class=\"ant-form-item-control-wrapper\" [nzSpan]=\"ui.spanControl!\" [nzOffset]=\"ui.offsetControl!\">\n      <div class=\"ant-form-item-control\" [class.has-error]=\"showError\">\n        <div nz-row class=\"sf__array-container\">\n          @for (i of $any(formProperty).properties; track i) {\n            @if (i.visible && !i.ui.hidden) {\n              <div nz-col [nzSpan]=\"arraySpan\" [attr.data-index]=\"$index\" class=\"sf__array-item\">\n                <nz-card>\n                  <sf-item [formProperty]=\"i\" />\n                  @if (showRemove) {\n                    <span class=\"sf__array-remove\" (click)=\"removeItem($index)\" [attr.title]=\"removeTitle\">\n                      <nz-icon nzType=\"delete\" />\n                    </span>\n                  }\n                </nz-card>\n              </div>\n            }\n          }\n        </div>\n        @if (!ui.onlyVisual && showError) {\n          <div class=\"ant-form-explain\">{{ error }}</div>\n        }\n        @if (schema.description) {\n          <div [innerHTML]=\"ui._description\" class=\"ant-form-extra\"></div>\n        }\n      </div>\n    </div>\n  </nz-form-item>`,\n  host: { '[class.sf__array]': 'true' },\n  encapsulation: ViewEncapsulation.None,\n  // eslint-disable-next-line @angular-eslint/prefer-standalone\n  standalone: false\n})\nexport class ArrayWidget extends ArrayLayoutWidget implements OnInit {\n  addTitle!: SafeHtml;\n  addType!: NzButtonType;\n  removeTitle?: string | null;\n  arraySpan = 8;\n\n  get addDisabled(): boolean {\n    return (\n      this.disabled ||\n      (this.schema.maxItems != null && (this.formProperty.properties as FormProperty[]).length >= this.schema.maxItems!)\n    );\n  }\n\n  get showRemove(): boolean {\n    if (this.disabled || !this.removeTitle) return false;\n    if (\n      this.schema.minItems != null &&\n      (this.formProperty.properties as FormProperty[]).length <= this.schema.minItems!\n    )\n      return false;\n    return true;\n  }\n\n  ngOnInit(): void {\n    const { grid, addTitle, addType, removable, removeTitle } = this.ui;\n    if (grid && grid.arraySpan) {\n      this.arraySpan = grid.arraySpan;\n    }\n\n    this.addTitle = this.dom.bypassSecurityTrustHtml(addTitle ?? this.l.addText);\n    this.addType = addType ?? 'dashed';\n    this.removeTitle = removable === false ? null : (removeTitle ?? this.l.removeText);\n  }\n\n  private reValid(options?: SFUpdateValueAndValidity): void {\n    this.formProperty.updateValueAndValidity({\n      onlySelf: false,\n      emitValueEvent: false,\n      emitValidator: true,\n      ...options\n    });\n  }\n\n  addItem(): void {\n    const property = this.formProperty.add({});\n    this.reValid();\n    this.ui.add?.(property);\n  }\n\n  removeItem(index: number): void {\n    const updatePath = (this.formProperty.properties as FormProperty[])[index].path;\n    this.formProperty.remove(index);\n    this.reValid({ updatePath, emitValueEvent: true });\n    this.ui.remove?.(index);\n  }\n}\n","import { Component, ViewEncapsulation } from '@angular/core';\n\nimport { SFBooleanWidgetSchema } from './schema';\nimport { ControlUIWidget } from '../../widget';\n\n@Component({\n  selector: 'sf-boolean',\n  template: `<sf-item-wrap\n    [id]=\"id\"\n    [schema]=\"schema\"\n    [ui]=\"ui\"\n    [showError]=\"showError\"\n    [error]=\"error\"\n    [showTitle]=\"schema.title\"\n  >\n    <nz-switch\n      [ngModel]=\"value\"\n      (ngModelChange)=\"setValue($event)\"\n      [nzDisabled]=\"disabled\"\n      [nzSize]=\"ui.size!\"\n      [nzCheckedChildren]=\"ui.checkedChildren!\"\n      [nzUnCheckedChildren]=\"ui.unCheckedChildren!\"\n      [nzLoading]=\"ui.loading\"\n    />\n  </sf-item-wrap>`,\n  encapsulation: ViewEncapsulation.None,\n  // eslint-disable-next-line @angular-eslint/prefer-standalone\n  standalone: false\n})\nexport class BooleanWidget extends ControlUIWidget<SFBooleanWidgetSchema> {}\n","import { Component, ViewEncapsulation } from '@angular/core';\n\nimport { SFCheckboxWidgetSchema } from './schema';\nimport { SFValue } from '../../interface';\nimport { SFSchemaEnum } from '../../schema';\nimport { getData } from '../../utils';\nimport { ControlUIWidget } from '../../widget';\n\n@Component({\n  selector: 'sf-checkbox',\n  template: `\n    <ng-template #all>\n      @if (ui.checkAll) {\n        <label\n          nz-checkbox\n          class=\"sf__checkbox-all mr-sm\"\n          [(ngModel)]=\"allChecked\"\n          (ngModelChange)=\"onAllChecked()\"\n          [nzIndeterminate]=\"indeterminate\"\n        >\n          {{ ui.checkAllText ?? l.checkAllText }}\n        </label>\n      }\n    </ng-template>\n    <sf-item-wrap\n      [id]=\"id\"\n      [schema]=\"schema\"\n      [ui]=\"ui\"\n      [showError]=\"showError\"\n      [error]=\"error\"\n      [showTitle]=\"true\"\n      [title]=\"labelTitle\"\n    >\n      @if (inited) {\n        @if (data.length === 0) {\n          <label nz-checkbox [nzDisabled]=\"disabled\" [ngModel]=\"value\" (ngModelChange)=\"_setValue($event)\">\n            {{ schema.title }}\n            <span class=\"sf__optional\">\n              {{ ui.optional }}\n              @if (oh) {\n                <nz-icon\n                  nz-tooltip\n                  [nzTooltipTitle]=\"oh.text\"\n                  [nzTooltipPlacement]=\"oh.placement\"\n                  [nzTooltipTrigger]=\"oh.trigger\"\n                  [nzTooltipOverlayClassName]=\"oh.overlayClassName\"\n                  [nzTooltipOverlayStyle]=\"oh.overlayStyle\"\n                  [nzTooltipMouseEnterDelay]=\"oh.mouseEnterDelay\"\n                  [nzTooltipMouseLeaveDelay]=\"oh.mouseLeaveDelay\"\n                  [nzType]=\"oh.icon!\"\n                />\n              }\n            </span>\n          </label>\n        } @else {\n          @if (grid_span === 0) {\n            <ng-template [ngTemplateOutlet]=\"all\" />\n            <nz-checkbox-group [ngModel]=\"value\" [nzOptions]=\"$any(data)\" (ngModelChange)=\"groupInGridChange($event)\" />\n          } @else {\n            <nz-checkbox-group class=\"sf__checkbox-list\" [ngModel]=\"value\" (ngModelChange)=\"groupInGridChange($event)\">\n              <div nz-row>\n                @if (ui.checkAll) {\n                  <div nz-col [nzSpan]=\"grid_span\">\n                    <ng-template [ngTemplateOutlet]=\"all\" />\n                  </div>\n                }\n                @for (i of data; track $index) {\n                  <div nz-col [nzSpan]=\"grid_span\">\n                    <label nz-checkbox [nzValue]=\"i.value\" [ngModel]=\"i.checked\" [nzDisabled]=\"i.disabled\">\n                      {{ i.label }}\n                    </label>\n                  </div>\n                }\n              </div>\n            </nz-checkbox-group>\n          }\n        }\n      }\n    </sf-item-wrap>\n  `,\n  encapsulation: ViewEncapsulation.None,\n  // eslint-disable-next-line @angular-eslint/prefer-standalone\n  standalone: false\n})\nexport class CheckboxWidget extends ControlUIWidget<SFCheckboxWidgetSchema> {\n  data: SFSchemaEnum[] = [];\n  allChecked = false;\n  indeterminate = false;\n  grid_span!: number;\n  labelTitle: string = ``;\n  inited = false;\n\n  reset(value: SFValue): void {\n    this.inited = false;\n    getData(this.schema, this.ui, value).subscribe(list => {\n      this.data = list;\n      this.allChecked = false;\n      this.indeterminate = false;\n      this.labelTitle = list.length === 0 ? '' : (this.schema.title as string);\n      const { span } = this.ui;\n      this.grid_span = span && span > 0 ? span : 0;\n\n      this.updateAllChecked();\n      this.inited = true;\n      this.detectChanges();\n    });\n  }\n\n  _setValue(value: SFValue): void {\n    this.setValue(value);\n    this.detectChanges();\n    this.notifyChange(value);\n  }\n\n  notifySet(): void {\n    const checkList = this.data.filter(w => w.checked);\n    this.updateAllChecked().setValue(checkList.map(item => item.value));\n    this.notifyChange(checkList);\n  }\n\n  groupInGridChange(values: SFValue[]): void {\n    this.data.forEach(item => (item.checked = values.indexOf(item.value) !== -1));\n    this.notifySet();\n  }\n\n  onAllChecked(): void {\n    this.data.forEach(item => (item.checked = this.allChecked));\n    this.notifySet();\n  }\n\n  updateAllChecked(): this {\n    if (this.data.every(item => item.checked !== true)) {\n      this.allChecked = false;\n      this.indeterminate = false;\n    } else if (this.data.every(item => item.checked === true)) {\n      this.allChecked = true;\n      this.indeterminate = false;\n    } else {\n      this.indeterminate = true;\n    }\n    this.detectChanges();\n    return this;\n  }\n\n  private notifyChange(res: boolean | SFSchemaEnum[]): void {\n    if (this.ui.change) this.ui.change(res);\n  }\n}\n","import { Component, ViewEncapsulation } from '@angular/core';\n\nimport { SFCustomWidgetSchema } from './schema';\nimport { ControlUIWidget } from '../../widget';\n\n@Component({\n  selector: 'sf-custom',\n  template: `\n    <sf-item-wrap\n      [id]=\"id\"\n      [schema]=\"schema\"\n      [ui]=\"ui\"\n      [showError]=\"showError\"\n      [error]=\"error\"\n      [showTitle]=\"schema.title\"\n    >\n      <ng-template\n        [ngTemplateOutlet]=\"$any(ui)._render\"\n        [ngTemplateOutletContext]=\"{ $implicit: this, schema: schema, ui: ui }\"\n      />\n    </sf-item-wrap>\n  `,\n  encapsulation: ViewEncapsulation.None,\n  // eslint-disable-next-line @angular-eslint/prefer-standalone\n  standalone: false\n})\nexport class CustomWidget extends ControlUIWidget<SFCustomWidgetSchema> {}\n","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\n\nimport { format } from 'date-fns';\n\nimport { toDate } from '@delon/util/date-time';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport { SFDateWidgetSchema } from './schema';\nimport { SFValue } from '../../interface';\nimport { FormProperty } from '../../model/form.property';\nimport { toBool } from '../../utils';\nimport { ControlUIWidget } from '../../widget';\n\n@Component({\n  selector: 'sf-date',\n  template: `<sf-item-wrap\n    [id]=\"id\"\n    [schema]=\"schema\"\n    [ui]=\"ui\"\n    [showError]=\"showError\"\n    [error]=\"error\"\n    [showTitle]=\"schema.title\"\n  >\n    @switch (mode) {\n      @case ('year') {\n        <nz-year-picker\n          [nzId]=\"id\"\n          [nzDisabled]=\"disabled\"\n          [nzSize]=\"ui.size!\"\n          [nzFormat]=\"displayFormat\"\n          [(ngModel)]=\"displayValue\"\n          (ngModelChange)=\"_change($event)\"\n          [nzAllowClear]=\"i.allowClear\"\n          [class]=\"ui.className!\"\n          [nzDisabledDate]=\"ui.disabledDate\"\n          [nzLocale]=\"ui.locale!\"\n          [nzPlaceHolder]=\"ui.placeholder!\"\n          [nzPopupStyle]=\"ui.popupStyle!\"\n          [nzDropdownClassName]=\"ui.dropdownClassName\"\n          (nzOnOpenChange)=\"_openChange($event)\"\n          [nzRenderExtraFooter]=\"ui.renderExtraFooter\"\n          [nzInputReadOnly]=\"ui.inputReadOnly\"\n          [nzInline]=\"ui.inline!\"\n        />\n      }\n      @case ('month') {\n        <nz-month-picker\n          [nzId]=\"id\"\n          [nzDisabled]=\"disabled\"\n          [nzSize]=\"ui.size!\"\n          [nzFormat]=\"displayFormat\"\n          [(ngModel)]=\"displayValue\"\n          (ngModelChange)=\"_change($event)\"\n          [nzAllowClear]=\"i.allowClear\"\n          [class]=\"ui.className!\"\n          [nzDisabledDate]=\"ui.disabledDate\"\n          [nzLocale]=\"ui.locale!\"\n          [nzPlaceHolder]=\"ui.placeholder!\"\n          [nzPopupStyle]=\"ui.popupStyle!\"\n          [nzDropdownClassName]=\"ui.dropdownClassName\"\n          (nzOnOpenChange)=\"_openChange($event)\"\n          [nzRenderExtraFooter]=\"ui.renderExtraFooter\"\n          [nzInputReadOnly]=\"ui.inputReadOnly\"\n          [nzInline]=\"ui.inline!\"\n        />\n      }\n      @case ('week') {\n        <nz-week-picker\n          [nzId]=\"id\"\n          [nzDisabled]=\"disabled\"\n          [nzSize]=\"ui.size!\"\n          [nzFormat]=\"displayFormat\"\n          [(ngModel)]=\"displayValue\"\n          (ngModelChange)=\"_change($event)\"\n          [nzAllowClear]=\"i.allowClear\"\n          [class]=\"ui.className!\"\n          [nzDisabledDate]=\"ui.disabledDate\"\n          [nzLocale]=\"ui.locale!\"\n          [nzPlaceHolder]=\"ui.placeholder!\"\n          [nzPopupStyle]=\"ui.popupStyle!\"\n          [nzDropdownClassName]=\"ui.dropdownClassName\"\n          [nzInputReadOnly]=\"ui.inputReadOnly\"\n          [nzInline]=\"ui.inline!\"\n          (nzOnOpenChange)=\"_openChange($event)\"\n        />\n      }\n      @case ('range') {\n        <nz-range-picker\n          [nzId]=\"id\"\n          [nzDisabled]=\"disabled\"\n          [nzSize]=\"ui.size!\"\n          [nzFormat]=\"displayFormat\"\n          [(ngModel)]=\"displayValue\"\n          (ngModelChange)=\"_change($event)\"\n          [nzAllowClear]=\"i.allowClear\"\n          [class]=\"ui.className!\"\n          [nzDisabledDate]=\"ui.disabledDate\"\n          [nzLocale]=\"ui.locale!\"\n          [nzPlaceHolder]=\"ui.placeholder!\"\n          [nzPopupStyle]=\"ui.popupStyle!\"\n          [nzDropdownClassName]=\"ui.dropdownClassName\"\n          (nzOnOpenChange)=\"_openChange($event)\"\n          [nzDisabledTime]=\"ui.disabledTime\"\n          [nzRenderExtraFooter]=\"ui.renderExtraFooter\"\n          [nzRanges]=\"ui.ranges\"\n          [nzShowTime]=\"ui.showTime\"\n          [nzSeparator]=\"ui.separator\"\n          [nzShowWeekNumber]=\"ui.showWeekNumber ?? false\"\n          [nzMode]=\"$any(ui.rangeMode)\"\n          [nzInputReadOnly]=\"ui.inputReadOnly\"\n          [nzInline]=\"ui.inline!\"\n          (nzOnOk)=\"_ok($event)\"\n        />\n      }\n      @default {\n        <nz-date-picker\n          [nzId]=\"id\"\n          [nzDisabled]=\"disabled\"\n          [nzSize]=\"ui.size!\"\n          [nzFormat]=\"displayFormat\"\n          [(ngModel)]=\"displayValue\"\n          (ngModelChange)=\"_change($event)\"\n          [nzAllowClear]=\"i.allowClear\"\n          [class]=\"ui.className!\"\n          [nzDisabledDate]=\"ui.disabledDate\"\n          [nzLocale]=\"ui.locale!\"\n          [nzPlaceHolder]=\"ui.placeholder!\"\n          [nzPopupStyle]=\"ui.popupStyle!\"\n          [nzDropdownClassName]=\"ui.dropdownClassName\"\n          (nzOnOpenChange)=\"_openChange($event)\"\n          [nzDisabledTime]=\"ui.disabledTime\"\n          [nzRenderExtraFooter]=\"ui.renderExtraFooter\"\n          [nzShowTime]=\"ui.showTime\"\n          [nzShowToday]=\"i.showToday\"\n          [nzShowWeekNumber]=\"ui.showWeekNumber ?? false\"\n          [nzInputReadOnly]=\"ui.inputReadOnly\"\n          [nzInline]=\"ui.inline!\"\n          (nzOnOk)=\"_ok($event)\"\n        />\n      }\n    }\n  </sf-item-wrap>`,\n  encapsulation: ViewEncapsulation.None,\n  // eslint-disable-next-line @angular-eslint/prefer-standalone\n  standalone: false\n})\nexport class DateWidget extends ControlUIWidget<SFDateWidgetSchema> implements OnInit {\n  private startFormat!: string;\n  private endFormat?: string;\n  private flatRange = false;\n  mode!: string;\n  displayValue: Date | Date[] | null = null;\n  displayFormat!: string;\n  i!: { allowClear: boolean; showToday: boolean };\n\n  ngOnInit(): void {\n    const { mode, end, displayFormat, allowClear, showToday } = this.ui;\n    this.mode = mode ?? 'date';\n    this.flatRange = end != null;\n    // 构建属性对象时会对默认值进行校验，因此可以直接使用 format 作为格式化属性\n    this.startFormat = this.ui._format!;\n    if (this.flatRange) {\n      this.mode = 'range';\n      const endUi = this.endProperty.ui as SFDateWidgetSchema;\n      this.endFormat = endUi.format ? endUi._format : this.startFormat;\n    }\n    if (!displayFormat) {\n      switch (this.mode) {\n        case 'year':\n          this.displayFormat = `yyyy`;\n          break;\n        case 'month':\n          this.displayFormat = `yyyy-MM`;\n          break;\n        case 'week':\n          this.displayFormat = `yyyy-ww`;\n          break;\n      }\n    } else {\n      this.displayFormat = displayFormat;\n    }\n    this.i = {\n      allowClear: toBool(allowClear, true),\n      // nz-date-picker\n      showToday: toBool(showToday, true)\n    };\n  }\n\n  reset(value: SFValue): void {\n    const toDateOptions = { formatString: this.startFormat, defaultValue: null };\n    if (Array.isArray(value)) {\n      value = value.map(v => toDate(v, toDateOptions));\n    } else {\n      value = toDate(value, toDateOptions);\n    }\n    if (this.flatRange) {\n      const endValue = toDate(this.endProperty.formData as NzSafeAny, {\n        formatString: this.endFormat ?? this.startFormat,\n        defaultValue: null\n      });\n      this.displayValue = value == null || endValue == null ? [] : [value, endValue];\n    } else {\n      this.displayValue = value;\n    }\n    this.detectChanges();\n    // TODO: Need to wait for the rendering to complete, otherwise it will be overwritten of end widget\n    if (this.displayValue) {\n      setTimeout(() => this._change(this.displayValue, false));\n    }\n  }\n\n  _change(value: Date | Date[] | null, emitModelChange: boolean = true): void {\n    if (emitModelChange && this.ui.change) {\n      this.ui.change(value);\n    }\n    if (value == null || (Array.isArray(value) && value.length < 2)) {\n      this.setValue(null);\n      this.setEnd(null);\n      return;\n    }\n\n    const res = Array.isArray(value)\n      ? [format(value[0], this.startFormat), format(value[1], this.endFormat ?? this.startFormat)]\n      : format(value, this.startFormat);\n\n    if (this.flatRange) {\n      this.setValue(res[0]);\n      this.setEnd(res[1]);\n    } else {\n      this.setValue(res);\n    }\n  }\n\n  _openChange(status: boolean): void {\n    if (this.ui.onOpenChange) this.ui.onOpenChange(status);\n  }\n\n  _ok(value: NzSafeAny): void {\n    if (this.ui.onOk) this.ui.onOk(value);\n  }\n\n  private get endProperty(): FormProperty {\n    return (this.formProperty.parent!.properties as Record<string, FormProperty>)[this.ui.end!];\n  }\n\n  private setEnd(value: string | null): void {\n    if (!this.flatRange) return;\n\n    this.endProperty.setValue(value, true);\n    this.endProperty.updateValueAndValidity();\n  }\n}\n","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\n\nimport { SFNumberWidgetSchema } from './schema';\nimport { ControlUIWidget } from '../../widget';\n\n@Component({\n  selector: 'sf-number',\n  template: `<sf-item-wrap\n    [id]=\"id\"\n    [schema]=\"schema\"\n    [ui]=\"ui\"\n    [showError]=\"showError\"\n    [error]=\"error\"\n    [showTitle]=\"schema.title\"\n  >\n    <nz-input-number\n      [nzId]=\"id\"\n      [ngModel]=\"value\"\n      (ngModelChange)=\"_setValue($event)\"\n      [nzDisabled]=\"disabled\"\n      [nzSize]=\"ui.size!\"\n      [nzMin]=\"min\"\n      [nzMax]=\"max\"\n      [nzStep]=\"step\"\n      [nzFormatter]=\"formatter\"\n      [nzParser]=\"parser\"\n      [nzPrecision]=\"ui.precision ?? null\"\n      [nzPlaceHolder]=\"ui.placeholder ?? ''\"\n      [style.width]=\"width\"\n      [class.ant-input-number__hide-step]=\"ui.hideStep\"\n    />\n  </sf-item-wrap>`,\n  encapsulation: ViewEncapsulation.None,\n  // eslint-disable-next-line @angular-eslint/prefer-standalone\n  standalone: false\n})\nexport class NumberWidget extends ControlUIWidget<SFNumberWidgetSchema> implements OnInit {\n  min = Number.MIN_SAFE_INTEGER;\n  max = Number.MAX_SAFE_INTEGER;\n  step!: number;\n  formatter?: ((value: number) => string) | null;\n  parser?: ((value: string) => number) | null;\n  width = '';\n\n  ngOnInit(): void {\n    const { minimum, exclusiveMinimum, maximum, exclusiveMaximum, multipleOf, type } = this.schema;\n    this.step = multipleOf ?? 1;\n    if (typeof minimum !== 'undefined') {\n      this.min = exclusiveMinimum ? minimum + this.step : minimum;\n    }\n    if (typeof maximum !== 'undefined') {\n      this.max = exclusiveMaximum ? maximum - this.step : maximum;\n    }\n    if (type === 'integer') {\n      this.min = Math.trunc(this.min);\n      this.max = Math.trunc(this.max);\n      this.step = Math.trunc(this.step);\n    }\n\n    const ui = this.ui;\n    if (ui.prefix != null) {\n      ui.formatter = value => (value == null ? '' : `${ui.prefix} ${value}`);\n      ui.parser = value => +value.replace(`${ui.prefix} `, '');\n    }\n    if (ui.unit != null) {\n      ui.formatter = value => (value == null ? '' : `${value} ${ui.unit}`);\n      ui.parser = value => +value.replace(` ${ui.unit}`, '');\n    }\n    if (ui.formatter) this.formatter = ui.formatter;\n    if (ui.parser) this.parser = ui.parser;\n    this.width = typeof ui.widgetWidth === 'number' ? `${ui.widgetWidth}px` : (ui.widgetWidth ?? '90px');\n  }\n\n  _setValue(val: number): void {\n    this.setValue(this.schema.type === 'integer' ? Math.floor(val) : val);\n    this.ui.change?.(this.value);\n  }\n}\n","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\n\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport type { SFObjectWidgetRenderType } from './schema';\nimport { ArrayProperty } from '../../model/array.property';\nimport { FormProperty } from '../../model/form.property';\nimport type { SFGridSchema } from '../../schema/ui';\nimport { toBool } from '../../utils';\nimport { ObjectLayoutWidget } from '../../widget';\n\n@Component({\n  selector: 'sf-object',\n  template: `<ng-template #default let-noTitle>\n      @if (!noTitle && title) {\n        <div class=\"sf__title\">{{ title }}</div>\n      }\n      @if (grid) {\n        <div nz-row [nzGutter]=\"grid.gutter\">\n          @for (i of list; track $index) {\n            @if (i.property.visible && i.show) {\n              <div\n                nz-col\n                [nzSpan]=\"i.grid.span\"\n                [nzOffset]=\"i.grid.offset\"\n                [nzXs]=\"i.grid.xs\"\n                [nzSm]=\"i.grid.sm\"\n                [nzMd]=\"i.grid.md\"\n                [nzLg]=\"i.grid.lg\"\n                [nzXl]=\"i.grid.xl\"\n                [nzXXl]=\"i.grid.xxl\"\n              >\n                <sf-item [formProperty]=\"i.property\" [fixed-label]=\"i.spanLabelFixed\" />\n              </div>\n            }\n          }\n        </div>\n      } @else {\n        @for (i of list; track $index) {\n          @if (i.property.visible && i.show) {\n            <sf-item [formProperty]=\"i.property\" [fixed-label]=\"i.spanLabelFixed\" />\n          }\n        }\n      }\n    </ng-template>\n    @if (type === 'card') {\n      <nz-card\n        [nzTitle]=\"cardTitleTpl\"\n        [nzExtra]=\"ui.cardExtra\"\n        [nzSize]=\"ui.cardSize ?? 'small'\"\n        [nzActions]=\"ui.cardActions ?? []\"\n        [nzBodyStyle]=\"ui.cardBodyStyle!\"\n        [nzBordered]=\"ui.cardBordered ?? true\"\n        class=\"sf__object-card\"\n        [class.sf__object-card-fold]=\"!expand\"\n      >\n        <ng-template #cardTitleTpl>\n          <div [class.point]=\"showExpand\" (click)=\"changeExpand()\">\n            @if (showExpand) {\n              <nz-icon [nzType]=\"expand ? 'down' : 'up'\" class=\"mr-xs text-xs\" />\n            }\n            {{ title }}\n            @if (ui.optional || oh) {\n              <span class=\"sf__optional\">\n                {{ ui.optional }}\n                @if (oh) {\n                  <nz-icon\n                    nz-tooltip\n                    [nzTooltipTitle]=\"oh.text\"\n                    [nzTooltipPlacement]=\"oh.placement\"\n                    [nzTooltipTrigger]=\"oh.trigger\"\n                    [nzTooltipColor]=\"oh.bgColor\"\n                    [nzTooltipOverlayClassName]=\"oh.overlayClassName\"\n                    [nzTooltipOverlayStyle]=\"oh.overlayStyle\"\n                    [nzTooltipMouseEnterDelay]=\"oh.mouseEnterDelay\"\n                    [nzTooltipMouseLeaveDelay]=\"oh.mouseLeaveDelay\"\n                    [nzType]=\"oh.icon!\"\n                  />\n                }\n              </span>\n            }\n          </div>\n        </ng-template>\n        <ng-template [ngTemplateOutlet]=\"default\" [ngTemplateOutletContext]=\"{ $implicit: true }\" />\n      </nz-card>\n    } @else {\n      <ng-template [ngTemplateOutlet]=\"default\" />\n    }`,\n  encapsulation: ViewEncapsulation.None,\n  // eslint-disable-next-line @angular-eslint/prefer-standalone\n  standalone: false\n})\nexport class ObjectWidget extends ObjectLayoutWidget implements OnInit {\n  grid: NzSafeAny;\n  type: SFObjectWidgetRenderType = 'default';\n  list: NzSafeAny[] = [];\n  title?: string;\n  showExpand = true;\n  expand = true;\n\n  ngOnInit(): void {\n    const { formProperty, ui } = this;\n    const { grid, showTitle, type } = ui;\n    this.showExpand = toBool(ui.showExpand, true);\n    this.expand = toBool(ui.expand, true);\n    this.type = type ?? 'default';\n    if (\n      this.type === 'card' ||\n      (!formProperty.isRoot() && !(formProperty.parent instanceof ArrayProperty) && showTitle === true)\n    ) {\n      this.title = this.schema.title as string;\n    }\n    this.grid = grid as SFGridSchema;\n    const list: NzSafeAny[] = [];\n    for (const key of formProperty.propertiesId) {\n      const property = (formProperty.properties as Record<string, FormProperty>)[key] as FormProperty;\n      const item = {\n        property,\n        grid: property.ui.grid ?? grid ?? {},\n        spanLabelFixed: property.ui.spanLabelFixed,\n        show: property.ui.hidden === false\n      };\n      list.push(item);\n    }\n    this.list = list;\n  }\n\n  changeExpand(): void {\n    if (!this.showExpand) {\n      return;\n    }\n    this.expand = !this.expand;\n    this.detectChanges(true);\n  }\n}\n","import { Component, ViewEncapsulation } from '@angular/core';\n\nimport { SFRadioWidgetSchema } from './schema';\nimport { SFValue } from '../../interface';\nimport { SFSchemaEnum } from '../../schema/index';\nimport { getData } from '../../utils';\nimport { ControlUIWidget } from '../../widget';\n\n@Component({\n  selector: 'sf-radio',\n  template: `<sf-item-wrap\n    [id]=\"id\"\n    [schema]=\"schema\"\n    [ui]=\"ui\"\n    [showError]=\"showError\"\n    [error]=\"error\"\n    [showTitle]=\"schema.title\"\n  >\n    <nz-radio-group\n      [nzSize]=\"ui.size!\"\n      [nzName]=\"id\"\n      [ngModel]=\"value\"\n      (ngModelChange)=\"_setValue($event)\"\n      [nzButtonStyle]=\"ui.buttonStyle ?? 'outline'\"\n    >\n      @if (styleType) {\n        @for (option of data; track $index) {\n          <label nz-radio [nzValue]=\"option.value\" [nzDisabled]=\"disabled || option.disabled\">\n            <span [innerHTML]=\"option.label\"></span>\n          </label>\n        }\n      } @else {\n        @for (option of data; track $index) {\n          <label nz-radio-button [nzValue]=\"option.value\" [nzDisabled]=\"disabled || option.disabled\">\n            <span [innerHTML]=\"option.label\"></span>\n          </label>\n        }\n      }\n    </nz-radio-group>\n  </sf-item-wrap>`,\n  encapsulation: ViewEncapsulation.None,\n  // eslint-disable-next-line @angular-eslint/prefer-standalone\n  standalone: false\n})\nexport class RadioWidget extends ControlUIWidget<SFRadioWidgetSchema> {\n  data: SFSchemaEnum[] = [];\n  styleType!: boolean;\n\n  reset(value: SFValue): void {\n    this.styleType = (this.ui.styleType ?? 'default') === 'default';\n    getData(this.schema, this.ui, value).subscribe(list => {\n      this.data = list;\n      this.detectChanges();\n    });\n  }\n\n  _setValue(value: SFValue): void {\n    this.setValue(value);\n    if (this.ui.change) this.ui.change(value);\n  }\n}\n","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport { Subject, catchError, debounceTime, distinctUntilChanged, switchMap, takeUntil } from 'rxjs';\n\nimport { ArrayService } from '@delon/util/array';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport { SFSelectWidgetSchema } from './schema';\nimport { SFValue } from '../../interface';\nimport { SFSchemaEnum } from '../../schema';\nimport { getData, toBool } from '../../utils';\nimport { ControlUIWidget } from '../../widget';\n\n@Component({\n  selector: 'sf-select',\n  template: `<sf-item-wrap\n    [id]=\"id\"\n    [schema]=\"schema\"\n    [ui]=\"ui\"\n    [showError]=\"showError\"\n    [error]=\"error\"\n    [showTitle]=\"schema.title\"\n  >\n    <nz-select\n      [nzId]=\"id\"\n      [nzDisabled]=\"disabled\"\n      [(ngModel)]=\"_value\"\n      (ngModelChange)=\"change($event)\"\n      [nzSize]=\"ui.size!\"\n      [nzPlaceHolder]=\"ui.placeholder!\"\n      [nzNotFoundContent]=\"ui.notFoundContent\"\n      [nzDropdownClassName]=\"ui.dropdownClassName!\"\n      [nzAllowClear]=\"ui.allowClear\"\n      [nzDropdownStyle]=\"ui.dropdownStyle!\"\n      [nzCustomTemplate]=\"ui.customTemplate!\"\n      [nzSuffixIcon]=\"ui.suffixIcon!\"\n      [nzRemoveIcon]=\"ui.removeIcon!\"\n      [nzClearIcon]=\"ui.clearIcon!\"\n      [nzMenuItemSelectedIcon]=\"ui.menuItemSelectedIcon!\"\n      [nzMaxTagPlaceholder]=\"ui.maxTagPlaceholder!\"\n      [nzDropdownRender]=\"ui.dropdownRender!\"\n      [nzAutoClearSearchValue]=\"i.autoClearSearchValue\"\n      [nzVariant]=\"ui.variant ?? 'outlined'\"\n      [nzAutoFocus]=\"i.autoFocus\"\n      [nzDropdownMatchSelectWidth]=\"i.dropdownMatchSelectWidth!\"\n      [nzServerSearch]=\"i.serverSearch\"\n      [nzMaxMultipleCount]=\"i.maxMultipleCount!\"\n      [nzMode]=\"i.mode!\"\n      [nzShowSearch]=\"i.showSearch\"\n      [nzShowArrow]=\"i.showArrow!\"\n      [nzTokenSeparators]=\"i.tokenSeparators!\"\n      [nzMaxTagCount]=\"i.maxTagCount!\"\n      [compareWith]=\"i.compareWith!\"\n      [nzOptionHeightPx]=\"i.optionHeightPx!\"\n      [nzOptionOverflowSize]=\"i.optionOverflowSize!\"\n      (nzOpenChange)=\"openChange($event)\"\n      (nzOnSearch)=\"onSearch($event)\"\n      (nzScrollToBottom)=\"scrollToBottom()\"\n    >\n      @if (!loading && !hasGroup) {\n        @for (o of data; track $index) {\n          <nz-option [nzLabel]=\"o.label\" [nzValue]=\"o.value\" [nzHide]=\"o.hide\" [nzDisabled]=\"o.disabled\" />\n        }\n      }\n      @if (!loading && hasGroup) {\n        @for (i of data; track $index) {\n          <nz-option-group [nzLabel]=\"i.label\">\n            @for (o of i.children; track $index) {\n              <nz-option [nzLabel]=\"o.label\" [nzValue]=\"o.value\" [nzDisabled]=\"o.disabled\" [nzHide]=\"o.hide\" />\n            }\n          </nz-option-group>\n        }\n      }\n      @if (loading) {\n        <nz-option nzDisabled nzCustomContent>\n          <nz-icon nzType=\"loading\" />\n          {{ ui.searchLoadingText }}\n        </nz-option>\n      }\n    </nz-select>\n  </sf-item-wrap>`,\n  encapsulation: ViewEncapsulation.None,\n  // eslint-disable-next-line @angular-eslint/prefer-standalone\n  standalone: false\n})\nexport class SelectWidget extends ControlUIWidget<SFSelectWidgetSchema> implements OnInit {\n  private search$ = new Subject<string>();\n  i!: SFSelectWidgetSchema;\n  data: SFSchemaEnum[] = [];\n  _value: NzSafeAny;\n  hasGroup = false;\n  loading = false;\n\n  private checkGroup(list: SFSchemaEnum[]): void {\n    this.hasGroup = (list ?? []).filter(w => w.group === true).length > 0;\n  }\n\n  ngOnInit(): void {\n    const {\n      autoClearSearchValue,\n      autoFocus,\n      dropdownMatchSelectWidth,\n      serverSearch,\n      maxMultipleCount,\n      mode,\n      showSearch,\n      tokenSeparators,\n      maxTagCount,\n      compareWith,\n      optionHeightPx,\n      optionOverflowSize,\n      showArrow\n    } = this.ui;\n    this.i = {\n      autoClearSearchValue: toBool(autoClearSearchValue, true),\n      autoFocus: toBool(autoFocus, false),\n      dropdownMatchSelectWidth: toBool(dropdownMatchSelectWidth, true),\n      serverSearch: toBool(serverSearch, false),\n      maxMultipleCount: maxMultipleCount ?? Infinity,\n      mode: mode ?? 'default',\n      showSearch: toBool(showSearch, true),\n      tokenSeparators: tokenSeparators ?? [],\n      maxTagCount: maxTagCount ?? Infinity,\n      optionHeightPx: optionHeightPx ?? 32,\n      optionOverflowSize: optionOverflowSize ?? 8,\n      showArrow: toBool(showArrow, true),\n      compareWith: compareWith ?? ((o1: NzSafeAny, o2: NzSafeAny) => o1 === o2)\n    };\n\n    const onSearch = this.ui.onSearch!;\n    if (onSearch) {\n      this.search$\n        .pipe(\n          takeUntil(this.sfItemComp!.destroy$),\n          distinctUntilChanged(),\n          debounceTime(this.ui.searchDebounceTime ?? 300),\n          switchMap(text => onSearch(text)),\n          catchError(() => [])\n        )\n        .subscribe(list => {\n          this.data = list;\n          this.checkGroup(list);\n          this.loading = false;\n          this.detectChanges();\n        });\n    }\n  }\n\n  reset(value: SFValue): void {\n    const onSearch = this.ui.onSearch!;\n    getData(this.schema, this.ui, value).subscribe(list => {\n      this._value = value;\n      if (onSearch == null) this.data = list;\n      this.checkGroup(list);\n      this.detectChanges();\n    });\n    if (value && onSearch != null) this.search$.next(value);\n  }\n\n  change(values: SFValue): void {\n    if (this.ui.change) {\n      this.ui.change(values, this.getOrgData(values));\n    }\n    this.setValue(values == null ? this.ui.clearValue : values);\n  }\n\n  private getOrgData(values: SFValue): SFSchemaEnum | SFSchemaEnum[] {\n    const srv = this.injector.get(ArrayService);\n    if (!Array.isArray(values)) {\n      return srv.findTree(this.data, (item: SFSchemaEnum) => item.value === values)!;\n    }\n    return values.map(value => srv.findTree(this.data, (item: SFSchemaEnum) => item.value === value));\n  }\n\n  openChange(status: boolean): void {\n    if (this.ui.openChange) {\n      this.ui.openChange(status);\n    }\n  }\n\n  scrollToBottom(): void {\n    if (this.ui.scrollToBottom) {\n      this.ui.scrollToBottom();\n    }\n  }\n\n  onSearch(value: string): void {\n    if (this.ui.onSearch) {\n      this.loading = true;\n      this.search$.next(value);\n    }\n  }\n}\n","import { Component, ElementRef, OnInit, ViewEncapsulation } from '@angular/core';\nimport { BehaviorSubject, debounceTime, switchMap, takeUntil } from 'rxjs';\n\nimport { SFStringWidgetSchema } from './schema';\nimport { SFValue } from '../../interface';\nimport { ControlUIWidget } from '../../widget';\n\n@Component({\n  selector: 'sf-string',\n  template: `\n    <sf-item-wrap\n      [id]=\"id\"\n      [schema]=\"schema\"\n      [ui]=\"ui\"\n      [showError]=\"showError\"\n      [error]=\"error\"\n      [showTitle]=\"schema.title\"\n    >\n      @if (type === 'addon') {\n        <nz-input-wrapper\n          [nzAddonBefore]=\"ui.addOnBefore\"\n          [nzAddonAfter]=\"ui.addOnAfter\"\n          [nzPrefix]=\"ui.prefix\"\n          [nzSuffix]=\"ui.suffix\"\n        >\n          <input\n            nz-input\n            [attr.id]=\"id\"\n            [disabled]=\"disabled\"\n            [attr.disabled]=\"disabled\"\n            [nzSize]=\"ui.size!\"\n            [nzVariant]=\"ui.variant ?? 'outlined'\"\n            [ngModel]=\"value\"\n            (ngModelChange)=\"change($event)\"\n            [attr.maxLength]=\"schema.maxLength ?? null\"\n            [attr.type]=\"ui.type ?? 'text'\"\n            [attr.placeholder]=\"ui.placeholder\"\n            [attr.autocomplete]=\"ui.autocomplete\"\n            [attr.autoFocus]=\"ui.autofocus\"\n            (keyup.enter)=\"enter($event)\"\n            (focus)=\"focus($event)\"\n            (blur)=\"blur($event)\"\n          />\n        </nz-input-wrapper>\n      } @else {\n        <input\n          nz-input\n          [attr.id]=\"id\"\n          [disabled]=\"disabled\"\n          [attr.disabled]=\"disabled\"\n          [nzSize]=\"ui.size!\"\n          [nzVariant]=\"ui.variant!\"\n          [ngModel]=\"value\"\n          (ngModelChange)=\"change($event)\"\n          [attr.maxLength]=\"schema.maxLength ?? null\"\n          [attr.type]=\"ui.type ?? 'text'\"\n          [attr.placeholder]=\"ui.placeholder\"\n          [attr.autocomplete]=\"ui.autocomplete\"\n          [attr.autoFocus]=\"ui.autofocus\"\n          (keyup.enter)=\"enter($event)\"\n          (focus)=\"focus($event)\"\n          (blur)=\"blur($event)\"\n        />\n      }\n    </sf-item-wrap>\n  `,\n  encapsulation: ViewEncapsulation.None,\n  // eslint-disable-next-line @angular-eslint/prefer-standalone\n  standalone: false\n})\nexport class StringWidget extends ControlUIWidget<SFStringWidgetSchema> implements OnInit {\n  type!: string;\n  private change$: BehaviorSubject<string> | null = null;\n\n  ngOnInit(): void {\n    const {\n      addOnAfter,\n      addOnAfterIcon,\n      addOnBefore,\n      addOnBeforeIcon,\n      prefix,\n      prefixIcon,\n      suffix,\n      suffixIcon,\n      autofocus\n    } = this.ui;\n    this.type =\n      addOnAfter || addOnBefore || addOnAfterIcon || addOnBeforeIcon || prefix || prefixIcon || suffix || suffixIcon\n        ? 'addon'\n        : '';\n    if (autofocus === true) {\n      setTimeout(() => {\n        (\n          (this.injector.get(ElementRef).nativeElement as HTMLElement).querySelector(`#${this.id}`) as HTMLElement\n        ).focus();\n      }, 20);\n    }\n    this.initChange();\n  }\n\n  reset(value: SFValue): void {\n    if (!value && this.schema.format === 'color') {\n      this.setValue('#000000');\n    }\n  }\n\n  private initChange(): void {\n    const dueTime = this.ui.changeDebounceTime;\n    const changeFn = this.ui.change;\n    if (dueTime == null || dueTime <= 0 || changeFn == null) return;\n\n    this.change$ = new BehaviorSubject<string>(this.value);\n    let obs = this.change$.asObservable().pipe(debounceTime(dueTime), takeUntil(this.sfItemComp!.destroy$));\n    if (this.ui.changeMap != null) {\n      obs = obs.pipe(switchMap(this.ui.changeMap));\n    }\n    obs.subscribe(val => changeFn(val));\n  }\n\n  change(val: string): void {\n    this.setValue(val);\n    if (this.change$ != null) {\n      this.change$.next(val);\n      return;\n    }\n    if (this.ui.change) this.ui.change(val);\n  }\n\n  focus(e: FocusEvent): void {\n    if (this.ui.focus) this.ui.focus(e);\n  }\n\n  blur(e: FocusEvent): void {\n    if (this.ui.blur) this.ui.blur(e);\n  }\n\n  enter(e: Event): void {\n    if (this.ui.enter) this.ui.enter(e);\n  }\n}\n","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\n\nimport { SFTextWidgetSchema } from './schema';\nimport { SFValue } from '../../interface';\nimport { toBool } from '../../utils';\nimport { ControlUIWidget } from '../../widget';\n\n@Component({\n  selector: 'sf-text',\n  template: `<sf-item-wrap\n    [id]=\"id\"\n    [schema]=\"schema\"\n    [ui]=\"ui\"\n    [showError]=\"showError\"\n    [error]=\"error\"\n    [showTitle]=\"schema.title\"\n    [class.sf__text-html]=\"ui.html\"\n  >\n    @if (ui.html) {\n      <span [innerHTML]=\"text\"></span>\n    } @else {\n      <span [innerText]=\"text\"></span>\n    }\n  </sf-item-wrap>`,\n  encapsulation: ViewEncapsulation.None,\n  // eslint-disable-next-line @angular-eslint/prefer-standalone\n  standalone: false\n})\nexport class TextWidget extends ControlUIWidget<SFTextWidgetSchema> implements OnInit {\n  text: string = '';\n  ngOnInit(): void {\n    this.ui._required = false;\n    this.ui.html = toBool(this.ui.html, true);\n  }\n\n  reset(value: SFValue): void {\n    this.text = value ?? this.ui.defaultText ?? '-';\n  }\n}\n","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\n\nimport { SFTextareaWidgetSchema } from './schema';\nimport { ControlUIWidget } from '../../widget';\n\n@Component({\n  selector: 'sf-textarea',\n  template: ` <sf-item-wrap\n    [id]=\"id\"\n    [schema]=\"schema\"\n    [ui]=\"ui\"\n    [showError]=\"showError\"\n    [error]=\"error\"\n    [showTitle]=\"schema.title\"\n  >\n    @let minRows = autosize?.minRows ?? 1;\n    @let maxRows = autosize?.maxRows ?? 0;\n    <ng-template #ipt>\n      <textarea\n        nz-input\n        [attr.id]=\"id\"\n        [disabled]=\"disabled\"\n        [attr.disabled]=\"disabled\"\n        [nzSize]=\"ui.size!\"\n        [ngModel]=\"value\"\n        (ngModelChange)=\"change($event)\"\n        [attr.maxLength]=\"schema.maxLength ?? null\"\n        [attr.placeholder]=\"ui.placeholder\"\n        cdkTextareaAutosize\n        [cdkAutosizeMinRows]=\"minRows\"\n        [cdkAutosizeMaxRows]=\"maxRows\"\n        [nzVariant]=\"ui.variant ?? 'outlined'\"\n        (focus)=\"focus($event)\"\n        (blur)=\"blur($event)\"\n      >\n      </textarea>\n    </ng-template>\n\n    @if (ui.maxCharacterCount) {\n      <nz-textarea-count\n        [nzMaxCharacterCount]=\"ui.maxCharacterCount\"\n        [nzComputeCharacterCount]=\"ui.computeCharacterCount!\"\n      >\n        <textarea\n          nz-input\n          [attr.id]=\"id\"\n          [disabled]=\"disabled\"\n          [attr.disabled]=\"disabled\"\n          [nzSize]=\"ui.size!\"\n          [ngModel]=\"value\"\n          (ngModelChange)=\"change($event)\"\n          [attr.maxLength]=\"schema.maxLength ?? null\"\n          [attr.placeholder]=\"ui.placeholder\"\n          cdkTextareaAutosize\n          [cdkAutosizeMinRows]=\"minRows\"\n          [cdkAutosizeMaxRows]=\"maxRows\"\n          [nzVariant]=\"ui.variant ?? 'outlined'\"\n          (focus)=\"focus($event)\"\n          (blur)=\"blur($event)\"\n        >\n        </textarea>\n      </nz-textarea-count>\n    } @else {\n      <ng-template [ngTemplateOutlet]=\"ipt\" />\n    }\n  </sf-item-wrap>`,\n  encapsulation: ViewEncapsulation.None,\n  // eslint-disable-next-line @angular-eslint/prefer-standalone\n  standalone: false\n})\nexport class TextareaWidget extends ControlUIWidget<SFTextareaWidgetSchema> implements OnInit {\n  autosize?: {\n    minRows?: number;\n    maxRows?: number;\n  };\n\n  ngOnInit(): void {\n    if (this.ui.autosize != null) {\n      this.autosize = this.ui.autosize;\n    }\n    if (this.ui.computeCharacterCount == null) {\n      this.ui.computeCharacterCount = v => v.length;\n    }\n  }\n\n  change(val: string): void {\n    this.setValue(val);\n    if (this.ui.change) this.ui.change(val);\n  }\n\n  focus(e: FocusEvent): void {\n    if (this.ui.focus) this.ui.focus(e);\n  }\n\n  blur(e: FocusEvent): void {\n    if (this.ui.blur) this.ui.blur(e);\n  }\n}\n","import { WidgetRegistry } from '../widget.factory';\nimport { ArrayWidget } from './array/array.widget';\nimport { BooleanWidget } from './boolean/boolean.widget';\nimport { CheckboxWidget } from './checkbox/checkbox.widget';\nimport { CustomWidget } from './custom/custom.widget';\nimport { DateWidget } from './date/date.widget';\nimport { NumberWidget } from './number/number.widget';\nimport { ObjectWidget } from './object/object.widget';\nimport { RadioWidget } from './radio/radio.widget';\nimport { SelectWidget } from './select/select.widget';\nimport { StringWidget } from './string/string.widget';\nimport { TextWidget } from './text/text.widget';\nimport { TextareaWidget } from './textarea/textarea.widget';\n\nexport class NzWidgetRegistry extends WidgetRegistry {\n  constructor() {\n    super();\n\n    this.register('object', ObjectWidget);\n    this.register('array', ArrayWidget);\n\n    this.register('text', TextWidget);\n    this.register('string', StringWidget);\n    this.register('number', NumberWidget);\n    this.register('integer', NumberWidget);\n    this.register('date', DateWidget);\n    this.register('radio', RadioWidget);\n    this.register('checkbox', CheckboxWidget);\n    this.register('boolean', BooleanWidget);\n    this.register('textarea', TextareaWidget);\n    this.register('select', SelectWidget);\n    this.register('custom', CustomWidget);\n\n    this.setDefault(StringWidget);\n  }\n}\n","/* eslint-disable import/order */\nimport { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule, NgZone } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { NzButtonModule } from 'ng-zorro-antd/button';\nimport { NzCardModule } from 'ng-zorro-antd/card';\nimport { NzCheckboxModule } from 'ng-zorro-antd/checkbox';\nimport { NzDatePickerModule } from 'ng-zorro-antd/date-picker';\nimport { NzFormModule } from 'ng-zorro-antd/form';\nimport { NzGridModule } from 'ng-zorro-antd/grid';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzInputModule } from 'ng-zorro-antd/input';\nimport { NzInputNumberModule } from 'ng-zorro-antd/input-number';\nimport { NzModalModule } from 'ng-zorro-antd/modal';\nimport { NzRadioModule } from 'ng-zorro-antd/radio';\nimport { NzSelectModule } from 'ng-zorro-antd/select';\nimport { NzSwitchModule } from 'ng-zorro-antd/switch';\nimport { NzTooltipModule } from 'ng-zorro-antd/tooltip';\nimport { CdkTextareaAutosize } from '@angular/cdk/text-field';\n\nimport { DelonLocaleModule } from '@delon/theme';\nimport { AlainConfigService } from '@delon/util/config';\n\nconst ZORROS = [\n  NzButtonModule,\n  NzCardModule,\n  NzCheckboxModule,\n  NzDatePickerModule,\n  NzFormModule,\n  NzGridModule,\n  NzIconModule,\n  NzInputModule,\n  NzInputNumberModule,\n  NzModalModule,\n  NzRadioModule,\n  NzSelectModule,\n  NzSwitchModule,\n  NzTooltipModule\n];\n\nimport { SFFixedDirective } from './sf-fixed.directive';\nimport { SFItemWrapComponent } from './sf-item-wrap.component';\nimport { SFItemComponent } from './sf-item.component';\nimport { SFComponent } from './sf.component';\nimport { AjvSchemaValidatorFactory, SchemaValidatorFactory } from './validator.factory';\nimport { SFTemplateDirective } from './widgets/custom/sf-template.directive';\n\nconst COMPONENTS = [SFComponent, SFItemComponent, SFItemWrapComponent, SFTemplateDirective, SFFixedDirective];\n\n// #region widgets\n\nimport { WidgetRegistry } from './widget.factory';\nimport { ArrayWidget } from './widgets/array/array.widget';\nimport { BooleanWidget } from './widgets/boolean/boolean.widget';\nimport { CheckboxWidget } from './widgets/checkbox/checkbox.widget';\nimport { CustomWidget } from './widgets/custom/custom.widget';\nimport { DateWidget } from './widgets/date/date.widget';\nimport { NumberWidget } from './widgets/number/number.widget';\nimport { NzWidgetRegistry } from './widgets/nz-widget.registry';\nimport { ObjectWidget } from './widgets/object/object.widget';\nimport { RadioWidget } from './widgets/radio/radio.widget';\nimport { SelectWidget } from './widgets/select/select.widget';\nimport { StringWidget } from './widgets/string/string.widget';\nimport { TextWidget } from './widgets/text/text.widget';\nimport { TextareaWidget } from './widgets/textarea/textarea.widget';\n\nconst WIDGETS = [\n  ObjectWidget,\n  ArrayWidget,\n  StringWidget,\n  NumberWidget,\n  DateWidget,\n  RadioWidget,\n  CheckboxWidget,\n  BooleanWidget,\n  TextareaWidget,\n  SelectWidget,\n  CustomWidget,\n  TextWidget\n];\n\n// #endregion\n\n@NgModule({\n  imports: [CommonModule, FormsModule, DelonLocaleModule, CdkTextareaAutosize, ...ZORROS],\n  declarations: [...COMPONENTS, ...WIDGETS],\n  exports: COMPONENTS\n})\nexport class DelonFormModule {\n  static forRoot(): ModuleWithProviders<DelonFormModule> {\n    return {\n      ngModule: DelonFormModule,\n      providers: [\n        {\n          provide: SchemaValidatorFactory,\n          useClass: AjvSchemaValidatorFactory,\n          deps: [AlainConfigService, NgZone]\n        },\n        { provide: WidgetRegistry, useClass: NzWidgetRegistry }\n      ]\n    };\n  }\n}\n","import { Observable } from 'rxjs';\n\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport type { NzFormControlStatusType } from 'ng-zorro-antd/form';\n\nimport type { SFValue } from './interface';\nimport type { FormProperty, PropertyGroup } from './model/form.property';\n\nexport const ERRORSDEFAULT = {\n  'false schema': `布尔模式出错`,\n  $ref: `无法找到引用{ref}`,\n  additionalItems: `不允许超过{ref}`,\n  additionalProperties: `不允许有额外的属性`,\n  anyOf: `数据应为 anyOf 所指定的其中一个`,\n  dependencies: `应当拥有属性{property}的依赖属性{deps}`,\n  enum: `应当是预设定的枚举值之一`,\n  format: `格式不正确`, // `应当匹配格式 \"{format}\"`,\n  type: `类型应当是 {type}`,\n  required: `必填项`,\n  maxLength: `至多 {limit} 个字符`,\n  minLength: `至少 {limit} 个字符以上`,\n  minimum: `必须 {comparison}{limit}`,\n  formatMinimum: `必须 {comparison}{limit}`,\n  maximum: `必须 {comparison}{limit}`,\n  formatMaximum: `必须 {comparison}{limit}`,\n  maxItems: `不应多于 {limit} 个项`,\n  minItems: `不应少于 {limit} 个项`,\n  maxProperties: `不应多于 {limit} 个属性`,\n  minProperties: `不应少于 {limit} 个属性`,\n  multipleOf: `应当是 {multipleOf} 的整数倍`,\n  not: `不应当匹配 \"not\" schema`,\n  oneOf: `只能匹配一个 \"oneOf\" 中的 schema`,\n  pattern: `数据格式不正确`,\n  uniqueItems: `不应当含有重复项 (第 {j} 项与第 {i} 项是重复的)`,\n  custom: `格式不正确`,\n  propertyNames: `属性名 \"{propertyName}\" 无效`,\n  patternRequired: `应当有属性匹配模式 {missingPattern}`,\n  switch: `由于 {caseIndex} 失败，未通过 \"switch\" 校验`,\n  const: `应当等于常量`,\n  contains: `应当包含一个有效项`,\n  formatExclusiveMaximum: `formatExclusiveMaximum 应当是布尔值`,\n  formatExclusiveMinimum: `formatExclusiveMinimum 应当是布尔值`,\n  if: `应当匹配模式 \"{failingKeyword}\"`\n};\n\nexport interface ErrorData {\n  [key: string]: NzSafeAny;\n\n  /**\n   * When specifying `keyword`, you can use `sf` built-in some common types [ERRORSDEFAULT](https://github.com/ng-alain/delon/blob/master/packages/form/src/errors.ts#L4) , direct conversion. Or use the `message` parameter to specify an error message.\n   *\n   * 当指定 `keyword` 时，可以利用 `sf` 内置一些常见类型 [ERRORSDEFAULT](https://github.com/ng-alain/delon/blob/master/packages/form/src/errors.ts#L4)，直接转化。或者使用 `message` 参数来指定错误消息。\n   */\n  keyword?: string | null;\n  dataPath?: string;\n  data?: unknown;\n  schemaPath?: string;\n  instancePath?: string;\n  /**\n   * Parameters required for template parsing\n   *\n   * 指定模板解析所需要的参数\n   */\n  params?: Record<string, NzSafeAny>;\n  /**\n   * Specify error message\n   *\n   * 指定错误消息\n   */\n  message?: string | ((err: ErrorData) => string);\n}\n\nexport interface ErrorSchema {\n  /**\n   * 是否实时校验，默认：`true`\n   * - `true` 每一次都校验\n   * - `false` 提交时校验\n   */\n  liveValidate?: boolean;\n  /**\n   * 自定义错误信息文本，键名赞同 `ErrorData.keyword` 值\n   */\n  errors?: Record<string, string | ((obj: ErrorData) => string)>;\n  /**\n   * 是否只展示错误视觉不显示错误文本，默认：`false`\n   */\n  onlyVisual?: boolean;\n  /**\n   * 是否忽略某些数据类型校验 `ERRORSDEFAULT`\n   * - 值始终包含 `DelonSchemaFormConfig.ingoreKeywords`\n   */\n  ingoreKeywords?: string[];\n\n  /**\n   * Whether to force to display `*` on the label to indicate that it is required\n   *\n   * 是否强制在标签上显示 `*` 来表示必填，一般在当使用自定义校验 `validator` 可能需要必填项处理\n   */\n  showRequired?: boolean;\n\n  /**\n   * Custom verification, the final result will be merged with Ajv verification results\n   *\n   * 自定义校验，最后结果会与 Ajv 校验结果进行合并显示\n   */\n  validator?: (\n    value: SFValue,\n    formProperty: FormProperty,\n    form: PropertyGroup\n  ) => ErrorData[] | Observable<ErrorData[]>;\n\n  /**\n   * Form status value, only supports `this.sf.getProperty('/department')?.updateFeedback('validating')` calling method\n   *\n   * 表单状态值，只支持 `this.sf.getProperty('/department')?.updateFeedback('validating')` 调用方式\n   *\n   * > 注：若遇到出现校验时失焦，可尝试取消\n   */\n  feedback?: NzFormControlStatusType;\n}\n","import {\n  EnvironmentProviders,\n  NgZone,\n  Provider,\n  inject,\n  makeEnvironmentProviders,\n  provideEnvironmentInitializer\n} from '@angular/core';\n\nimport { AlainConfigService } from '@delon/util/config';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport { AjvSchemaValidatorFactory, SchemaValidatorFactory } from './validator.factory';\nimport { WidgetRegistry } from './widget.factory';\nimport { NzWidgetRegistry } from './widgets/nz-widget.registry';\n\nexport interface SFWidgetProvideConfig {\n  KEY: string;\n  type: NzSafeAny;\n}\n\n/**\n * Just only using Standalone widgets\n */\nexport function provideSFConfig(options?: { widgets?: SFWidgetProvideConfig[] }): EnvironmentProviders {\n  const provides: Array<Provider | EnvironmentProviders> = [\n    {\n      provide: SchemaValidatorFactory,\n      useClass: AjvSchemaValidatorFactory,\n      deps: [AlainConfigService, NgZone]\n    },\n    { provide: WidgetRegistry, useClass: NzWidgetRegistry }\n  ];\n  if (options?.widgets) {\n    provides.push(\n      provideEnvironmentInitializer(() => {\n        const srv = inject(WidgetRegistry);\n        options?.widgets?.forEach(widget => srv.register(widget.KEY, widget.type));\n      })\n    );\n  }\n  return makeEnvironmentProviders(provides);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["ɵNoopNgZone","i2","i4","i6","i9.SFItemComponent","i10.SFFixedDirective","i1","i3","i5","i7","i8","i3.SFItemWrapComponent","i8.SFItemWrapComponent","i2.SFItemWrapComponent","i7.SFItemComponent","i8.SFFixedDirective","i5.SFItemWrapComponent","i1.SFItemWrapComponent"],"mappings":"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"}