{"version":3,"file":"fluent-form-core.mjs","sources":["../../../packages/core/src/lib/directives/template-ref-holder.directive.ts","../../../packages/core/src/lib/components/form-content.ts","../../../packages/core/src/lib/tokens.ts","../../../packages/core/src/lib/utils/is.utils.ts","../../../packages/core/src/lib/services/evaluator.service.ts","../../../packages/core/src/lib/services/value-transformer.service.ts","../../../packages/core/src/lib/errors/runtime.ts","../../../packages/core/src/lib/patcher/provider.ts","../../../packages/core/src/lib/schemas/interfaces.ts","../../../packages/core/src/lib/utils/schema.utils.ts","../../../packages/core/src/lib/utils/value.utils.ts","../../../packages/core/src/lib/utils/form.utils.ts","../../../packages/core/src/lib/utils/model.utils.ts","../../../packages/core/src/lib/components/form/form.component.ts","../../../packages/core/src/lib/components/form/form.component.html","../../../packages/core/src/lib/components/widget-wrapper.ts","../../../packages/core/src/lib/compose/builder.ts","../../../packages/core/src/lib/compose/component-container.ts","../../../packages/core/src/lib/compose/control.ts","../../../packages/core/src/lib/compose/control-container.ts","../../../packages/core/src/lib/services/destroyed.service.ts","../../../packages/core/src/lib/services/widget-template-registry.service.ts","../../../packages/core/src/lib/services/widget-wrapper-template-registry.service.ts","../../../packages/core/src/lib/directives/binding.directive.ts","../../../packages/core/src/lib/directives/context-guard.directive.ts","../../../packages/core/src/lib/directives/control-wrapper.directive.ts","../../../packages/core/src/lib/breakpoints.ts","../../../packages/core/src/lib/directives/grid/col/col.component.ts","../../../packages/core/src/lib/directives/grid/row/row.component.ts","../../../packages/core/src/lib/directives/grid/module.ts","../../../packages/core/src/lib/directives/render/models/control-container.ts","../../../packages/core/src/lib/directives/render/form.directive.ts","../../../packages/core/src/lib/directives/render/outlet.directive.ts","../../../packages/core/src/lib/directives/render/module.ts","../../../packages/core/src/lib/directives/template-outlet.ts","../../../packages/core/src/lib/directives/template.directive.ts","../../../packages/core/src/lib/directives/with-injector.directive.ts","../../../packages/core/src/lib/pipes/shared.ts","../../../packages/core/src/lib/pipes/class.pipe.ts","../../../packages/core/src/lib/pipes/col.pipe.ts","../../../packages/core/src/lib/pipes/control.pipe.ts","../../../packages/core/src/lib/pipes/inject.pipe.ts","../../../packages/core/src/lib/pipes/invoke.pipe.ts","../../../packages/core/src/lib/pipes/new.pipe.ts","../../../packages/core/src/lib/pipes/reactive.pipe.ts","../../../packages/core/src/lib/pipes/renderable.pipe.ts","../../../packages/core/src/lib/pipes/schema-type.pipe.ts","../../../packages/core/src/lib/pipes/schema.pipe.ts","../../../packages/core/src/lib/pipes/style.pipe.ts","../../../packages/core/src/lib/pipes/template.pipe.ts","../../../packages/core/src/lib/pipes/widget-template.pipe.ts","../../../packages/core/src/lib/directives/wrapper/next-widget-wrapper-outlet.directive.ts","../../../packages/core/src/lib/directives/wrapper/widget-wrapper-outlet.directive.ts","../../../packages/core/src/lib/features/interface.ts","../../../packages/core/src/lib/features/helper.ts","../../../packages/core/src/lib/features/preloading.feature.ts","../../../packages/core/src/lib/features/schema-patcher.feature.ts","../../../packages/core/src/lib/features/static-expression.feature.ts","../../../packages/core/src/lib/widgets/widget.ts","../../../packages/core/src/lib/widgets/row/row.widget.ts","../../../packages/core/src/lib/widgets/row/row.widget.html","../../../packages/core/src/lib/widgets/use.ts","../../../packages/core/src/lib/features/widget-configs.feature.ts","../../../packages/core/src/lib/module.ts","../../../packages/core/src/lib/provider.ts","../../../packages/core/src/fluent-form-core.ts"],"sourcesContent":["import { Directive, TemplateRef, ViewChild } from '@angular/core';\n\n@Directive()\nexport abstract class TemplateRefHolder<C> {\n  @ViewChild(TemplateRef, { static: true }) templateRef!: TemplateRef<C>;\n}\n","import { Directive } from '@angular/core';\nimport type { FormGroup } from '@angular/forms';\nimport type { AnyObject } from '@ngify/core';\nimport { TemplateRefHolder } from '../directives/template-ref-holder.directive';\nimport type { AbstractSchema } from '../schemas';\n\nexport interface FormContentTemplateContext {\n  form: FormGroup;\n  model: AnyObject;\n  schema: AbstractSchema;\n  onSubmit: (event: SubmitEvent) => boolean;\n}\n\n@Directive()\nexport abstract class AbstractFormContentComponent extends TemplateRefHolder<FormContentTemplateContext> { }\n","import { InjectionToken, type TemplateRef, type Type } from '@angular/core';\nimport type { SafeAny } from '@ngify/core';\nimport type { AbstractFormContentComponent, AbstractWidgetWrapper } from './components';\nimport type { SchemaConfig } from './interfaces';\nimport type { AbstractWidget } from './widgets/widget';\n\ndeclare const ngDevMode: boolean | undefined;\n\nexport const WIDGET_MAP = new InjectionToken<Map<string, () => Promise<Type<AbstractWidget<unknown>>>>>(\n  typeof ngDevMode !== 'undefined' && ngDevMode ? 'WIDGET_MAP' : ''\n);\n\nexport const SCHEMA_MAP = new InjectionToken<Map<string, SchemaConfig<SafeAny>>>(\n  typeof ngDevMode !== 'undefined' && ngDevMode ? 'SCHEMA_MAP' : ''\n);\n\nexport const NAMED_TEMPLATES = new InjectionToken<{ name: string, templateRef: TemplateRef<SafeAny> }[]>(\n  typeof ngDevMode !== 'undefined' && ngDevMode ? 'NAMED_TEMPLATES' : ''\n);\n\nexport const FLUENT_FORM_CONTENT = new InjectionToken<Type<AbstractFormContentComponent>>(\n  typeof ngDevMode !== 'undefined' && ngDevMode ? 'FLUENT_FORM_CONTENT' : ''\n);\nexport const FLUENT_WIDGET_WRAPPERS = new InjectionToken<Type<AbstractWidgetWrapper>[]>(\n  typeof ngDevMode !== 'undefined' && ngDevMode ? 'FLUENT_WIDGET_WRAPPERS' : ''\n);\n","import type { SafeAny } from '@ngify/core';\n\nexport const isObject = (o: unknown): o is object => typeof o === 'object';\nexport const isNumber = (o: unknown): o is number => typeof o === 'number';\nexport const isString = (o: unknown): o is string => typeof o === 'string';\nexport const isFunction = (o: unknown): o is (...args: SafeAny) => SafeAny => typeof o === 'function';\nexport const isBoolean = (o: unknown): o is boolean => typeof o === 'boolean';\nexport const isUndefined = (o: unknown): o is undefined => o === undefined;\nexport const isArray = (o: unknown): o is SafeAny[] => Array.isArray(o);\n","import { Injectable } from '@angular/core';\nimport type { AnyObject, SafeAny } from '@ngify/core';\n\nconst RETURN_STR = 'return ';\nconst STATIC_EXPRESSION_PATTERN = /^{{.+}}$/;\nconst INTERPOLATION_PATTERN = /^{{|}}$/g;\n\nexport abstract class CodeEvaluator {\n  abstract evaluate(code: string, context: AnyObject): SafeAny;\n}\n\nexport function isStaticExpression(str: string) {\n  return STATIC_EXPRESSION_PATTERN.test(str);\n}\n\n@Injectable({ providedIn: 'root' })\nexport class DynamicCodeEvaluator implements CodeEvaluator {\n  evaluate(code: string, context: AnyObject) {\n    code = RETURN_STR + code.replace(INTERPOLATION_PATTERN, '');\n\n    // TODO: This doesn't work with `unsafe-eval` enabled in CSP.\n    const fn = new Function('o', `with(o){${code}}`);\n    const proxy = new Proxy(Object.freeze(context), {\n      // Intercept all properties to prevent lookup beyond the `Proxy` object's scope chain.\n      has() {\n        return true;\n      },\n      get(target, key, receiver) {\n        if (key === Symbol.unscopables) {\n          return undefined;\n        }\n        return Reflect.get(target, key, receiver);\n      }\n    });\n\n    return fn(proxy);\n  }\n}\n","import { inject, Injectable } from '@angular/core';\nimport type { AnyObject, SafeAny } from '@ngify/core';\nimport { isFunction, isString } from '../utils/is.utils';\nimport { CodeEvaluator, isStaticExpression } from './evaluator.service';\n\n/**\n * @internal\n */\n@Injectable({\n  providedIn: 'root'\n})\nexport class ValueTransformer {\n  private readonly evaluator = inject(CodeEvaluator, { optional: true });\n\n  transform(value: SafeAny, context: AnyObject = {}): SafeAny {\n    if (isFunction(value)) {\n      return value(context);\n    }\n\n    if (isString(value) && this.evaluator && isStaticExpression(value)) {\n      return this.evaluator.evaluate(value, context);\n    }\n\n    return value;\n  }\n}\n","export function throwWidgetNotFoundError(name: string | number): never {\n  throw new Error(`The '${name}' widget was not found`);\n}\n\nexport function throwCustomTemplateNotFoundError(name: string): never {\n  throw new Error(`The custom '${name}' template was not found`);\n}\n","import { InjectionToken, type Provider } from '@angular/core';\nimport type { SchemaPatcher } from './interfaces';\n\ndeclare const ngDevMode: boolean | undefined;\n\nexport const SCHEMA_PATCHERS = new InjectionToken<SchemaPatcher[]>(\n  typeof ngDevMode !== 'undefined' && ngDevMode ? 'SchemaPatchers' : ''\n);\n\nexport function provideSchemaPatcher(patcher: SchemaPatcher): Provider {\n  return {\n    provide: SCHEMA_PATCHERS,\n    useValue: patcher,\n    multi: true\n  };\n}\n","import { AbstractControl } from '@angular/forms';\nimport type { SafeAny } from '@ngify/core';\nimport type { AbstractSchema } from './abstract.schema';\nimport type { SchemaKey } from './types';\n\n/**\n * @public\n */\nexport enum SchemaType {\n  Control,\n  ControlGroup,\n  ControlArray,\n  ControlWrapper,\n  Component,\n  ComponentContainer,\n  ComponentWrapper\n}\n\nexport const enum SchemaKind {\n  Headless = 'headless',\n  Headful = 'headful',\n  Template = 'template',\n  Row = 'row'\n}\n\nexport interface SchemaLike<Key extends SchemaKey = SchemaKey> {\n  kind: string;\n  key?: Key;\n}\n\nexport interface SchemaContext<S extends SchemaLike = AbstractSchema> {\n  schema: S;\n  /**\n   * If there is no corresponding control, the parent control will be returned,\n   * usually a `FormGroup` or `FormArray`.\n   */\n  control: AbstractControl;\n  model: SafeAny;\n}\n\nexport type Length = number | { max?: number, min?: number };\n\nexport type SchemaReactiveFn<S extends AbstractSchema, R> = (ctx: SchemaContext<S>) => R;\n\nexport type MaybeSchemaReactiveFn<S extends AbstractSchema, R> = R | SchemaReactiveFn<S, R>;\n\nexport type WithoutSchemaReactiveFn<T extends MaybeSchemaReactiveFn<AbstractSchema, SafeAny>> = Exclude<T, SchemaReactiveFn<SafeAny, SafeAny>>;\n","import { inject, Injectable } from '@angular/core';\nimport { type ValidatorFn, Validators } from '@angular/forms';\nimport { throwWidgetNotFoundError } from '../errors';\nimport { SCHEMA_PATCHERS } from '../patcher';\nimport type {\n  AbstractBranchSchema,\n  AbstractComponentContainerSchema,\n  AbstractComponentWrapperSchema,\n  AbstractControlContainerSchema,\n  AbstractControlSchema,\n  AbstractControlWrapperSchema,\n  AbstractSchema,\n  SchemaKey,\n  SingleSchemaKey\n} from '../schemas';\nimport { type SchemaLike, SchemaType } from '../schemas/interfaces';\nimport { SCHEMA_MAP } from '../tokens';\nimport type { Indexable } from '../types';\nimport { isArray, isString } from './is.utils';\n\ndeclare const ngDevMode: boolean | undefined;\n\nconst ANY_SCHEMA_SELECTOR = '*';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class SchemaUtil {\n  private readonly schemaMap = inject(SCHEMA_MAP);\n  private readonly schemaPatchers = inject(SCHEMA_PATCHERS, { optional: true }) ?? [];\n\n  patch<T extends Indexable<AbstractSchema>>(schema: T): T {\n    if (\n      this.isControlWrapper(schema) ||\n      this.isComponentWrapper(schema) ||\n      this.isControlContainer(schema) ||\n      this.isComponentContainer(schema)\n    ) {\n      schema.schemas = schema.schemas.map(schema => this.patch(schema));\n    }\n\n    const config = this.schemaMap.get(schema.kind);\n\n    if (typeof ngDevMode !== 'undefined' && ngDevMode && !config) {\n      throwWidgetNotFoundError(schema.kind);\n    }\n\n    const { type } = config!;\n\n    return this.schemaPatchers\n      .filter(patcher => {\n        // Convert selector to an array for unified processing.\n        const selector = isArray(patcher.selector) ? patcher.selector : [patcher.selector];\n\n        return selector.some(kindOrType => {\n          if (isString(kindOrType)) {\n            return kindOrType === ANY_SCHEMA_SELECTOR || kindOrType === schema.kind;\n          }\n\n          return kindOrType === type;\n        });\n      })\n      .reduce((patchedSchema, patcher) => {\n        return patcher.patch(patchedSchema) as T;\n      }, schema);\n  }\n\n  /**\n   * Filter out top-level control/control container schemas.\n   */\n  filterControls(schemas: Indexable<AbstractSchema>[]) {\n    return schemas.reduce((schemas, schema) => {\n      if (this.isControlWrapper(schema) || this.isComponentContainer(schema)) {\n        schemas = schemas.concat(this.filterControls(schema.schemas));\n      } else if (this.isControl(schema) || this.isControlContainer(schema)) {\n        schemas.push(schema);\n      }\n\n      return schemas;\n    }, [] as (AbstractControlSchema | AbstractControlContainerSchema)[]);\n  }\n\n  isControlGroup(schema: SchemaLike): schema is AbstractControlContainerSchema {\n    return this.typeOf(schema) === SchemaType.ControlGroup;\n  }\n\n  isControlArray(schema: SchemaLike): schema is AbstractControlContainerSchema {\n    return this.typeOf(schema) === SchemaType.ControlArray;\n  }\n\n  isControlContainer(schema: SchemaLike): schema is AbstractControlContainerSchema {\n    return this.isControlGroup(schema) || this.isControlArray(schema);\n  }\n\n  isControlWrapper(schema: SchemaLike): schema is AbstractControlWrapperSchema {\n    return this.typeOf(schema) === SchemaType.ControlWrapper;\n  }\n\n  isControl(schema: SchemaLike): schema is AbstractControlSchema {\n    return this.typeOf(schema) === SchemaType.Control;\n  }\n\n  isComponentContainer(schema: SchemaLike): schema is AbstractComponentContainerSchema {\n    return this.typeOf(schema) === SchemaType.ComponentContainer;\n  }\n\n  isComponentWrapper(schema: SchemaLike): schema is AbstractComponentWrapperSchema {\n    return this.typeOf(schema) === SchemaType.ComponentWrapper;\n  }\n\n  isComponent(schema: SchemaLike): schema is AbstractSchema {\n    return this.typeOf(schema) === SchemaType.Component;\n  }\n\n  /**\n   * Whether it is a multi-field schema.\n   */\n  isMultiKeySchema(schema: SchemaLike) {\n    return isArray(schema.key);\n  }\n\n  /**\n   * Whether it is a path field schema.\n   */\n  isPathKeySchema(schema: SchemaLike) {\n    return isString(schema.key) && schema.key.includes('.');\n  }\n\n  /**\n   * Non-control schema, indicating that it or its child nodes\n   * do not contain any control schemas.\n   */\n  isNonControl(schema: SchemaLike): schema is AbstractSchema {\n    return this.isComponent(schema) || this.isComponentWrapper(schema);\n  }\n\n  typeOf(schema: SchemaLike) {\n    return this.schemaMap.get(schema.kind)?.type;\n  }\n\n  validatorsOf(schema: AbstractControlSchema) {\n    const validators: ValidatorFn[] = this.schemaMap.get(schema.kind)?.validators?.(schema) ?? [];\n\n    if (schema.required === true) {\n      validators.push(Validators.required);\n    }\n\n    return validators;\n  }\n\n  parsePathKey(key: string) {\n    return key.split('.');\n  }\n\n  norimalizePaths(paths: SingleSchemaKey | SchemaKey[]) {\n    return (isArray(paths) ? paths : [paths]).map(o => o.toString());\n  }\n\n  find(schema: Indexable<AbstractBranchSchema>, key: SingleSchemaKey): AbstractSchema | null;\n  find(schema: Indexable<AbstractBranchSchema>, key: SchemaKey[]): AbstractSchema | null;\n  find(schema: Indexable<AbstractBranchSchema>, paths: SingleSchemaKey | SchemaKey[]): AbstractSchema | null;\n  find(schema: Indexable<AbstractBranchSchema>, paths: SingleSchemaKey | SchemaKey[]): AbstractSchema | null {\n    let currentSchema: Indexable<AbstractSchema> | null = schema;\n\n    for (const path of this.norimalizePaths(paths)) {\n      currentSchema = currentSchema['schemas'].find((o: AbstractSchema) => o.key?.toString() === path) ?? null;\n\n      if (currentSchema === null) {\n        return currentSchema;\n      }\n    }\n\n    return currentSchema;\n  }\n}\n","import { inject, Injectable } from '@angular/core';\nimport type { AbstractControl } from '@angular/forms';\nimport type { AnyArray, AnyObject } from '@ngify/core';\nimport type { AbstractControlSchema } from '../schemas';\nimport { isUndefined } from './is.utils';\nimport { SchemaUtil } from './schema.utils';\n\n/**\n * @internal\n */\n@Injectable({\n  providedIn: 'root'\n})\nexport class ValueUtil {\n  private readonly schemaUtil = inject(SchemaUtil);\n\n  valueOfModel<M extends AnyObject | AnyArray>(model: M, schema: AbstractControlSchema): unknown {\n    let value: unknown;\n    // If the value read from the model is undefined, it means the model did\n    // not provide a value, so take the default value from the schema here.\n    // If it is a multi-key schema, the values of these keys need to be retrieved\n    // separately from the model and combined into an array.\n    if (this.schemaUtil.isMultiKeySchema(schema)) {\n      value = (schema.key as string[]).map((key, index) => {\n        const val = model[key as keyof M];\n        return isUndefined(val) ? schema.defaultValue?.[index] ?? null : val;\n      });\n      // If all elements in the array are `null`, assign `null` directly.\n      if ((value as []).every(o => o === null)) {\n        value = null;\n      }\n    } else if (this.schemaUtil.isPathKeySchema(schema)) {\n      const paths = this.schemaUtil.parsePathKey(schema.key as string);\n      value = paths.reduce((obj, key) => obj?.[key as keyof M] as M, model);\n    } else {\n      value = model[schema.key as keyof M];\n    }\n\n    if (isUndefined(value)) {\n      value = schema.defaultValue ?? null;\n    }\n\n    if (schema.mapper) {\n      return schema.mapper.parser(value, schema);\n    }\n\n    return value;\n  }\n\n  valueOfControl(control: AbstractControl, schema: AbstractControlSchema): unknown {\n    const value = control.value;\n\n    if (schema.mapper) {\n      return schema.mapper.formatter(value, schema);\n    }\n\n    return value;\n  }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { AbstractControl, type AbstractControlOptions, FormArray, FormControl, FormGroup, type ValidatorFn, Validators } from '@angular/forms';\nimport type { AnyArray, AnyObject, SafeAny } from '@ngify/core';\nimport type { AbstractControlSchema, AbstractFormArraySchema, AbstractFormGroupSchema, AbstractSchema, SchemaKey } from '../schemas';\nimport { ValueTransformer } from '../services/value-transformer.service';\nimport type { Indexable } from '../types';\nimport { isArray, isNumber, isUndefined } from './is.utils';\nimport { SchemaUtil } from './schema.utils';\nimport { ValueUtil } from './value.utils';\n\ndeclare const ngDevMode: boolean | undefined;\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class FormUtil {\n  private readonly schemaUtil = inject(SchemaUtil);\n  private readonly valueUtil = inject(ValueUtil);\n  private readonly valueTransformer = inject(ValueTransformer);\n\n  createFormControl(schema: AbstractControlSchema, model: AnyObject): FormControl {\n    const validators: ValidatorFn[] = this.schemaUtil.validatorsOf(schema);\n    const modalValue = this.valueUtil.valueOfModel(model, schema);\n\n    const control = new FormControl(schema.defaultValue ?? null, {\n      nonNullable: !isUndefined(schema.defaultValue),\n      validators: schema.validators ? validators.concat(schema.validators) : validators,\n      asyncValidators: schema.asyncValidators,\n      updateOn: schema.config?.updateOn\n    });\n\n    if (modalValue !== null) {\n      control.setValue(modalValue, { emitEvent: false });\n    }\n\n    return control;\n  }\n\n  createFormGroup(schema: AbstractFormGroupSchema, model: AnyObject): FormGroup;\n  createFormGroup(schemas: Indexable<AbstractSchema>[], model: AnyObject): FormGroup;\n  createFormGroup(schemaOrSchemas: AbstractFormGroupSchema | Indexable<AbstractSchema>[], model: AnyObject): FormGroup;\n  createFormGroup(schemaOrSchemas: AbstractFormGroupSchema | Indexable<AbstractSchema>[], model: AnyObject): FormGroup {\n    let schemas: Indexable<AbstractSchema>[];\n    let options: AbstractControlOptions = {};\n\n    if (isArray(schemaOrSchemas)) {\n      schemas = schemaOrSchemas;\n    } else {\n      schemas = schemaOrSchemas.schemas;\n      options = {\n        validators: schemaOrSchemas.validators,\n        asyncValidators: schemaOrSchemas.asyncValidators,\n        updateOn: schemaOrSchemas.config?.updateOn\n      };\n    }\n\n    return new FormGroup(\n      this.createControlMap(schemas, model),\n      options\n    );\n  }\n\n  private createControlMap(schemas: Indexable<AbstractSchema>[], model: AnyObject) {\n    return schemas.reduce((controls, schema) => {\n      if (this.schemaUtil.isControlGroup(schema)) {\n        const key = schema.key!.toString();\n        controls[key] = this.createFormGroup(schema, model[key] ?? {});\n      } else if (this.schemaUtil.isControlArray(schema)) {\n        const key = schema.key!.toString();\n        controls[key] = this.createFormArray(schema, model[key] ?? []);\n      } else if (this.schemaUtil.isControlWrapper(schema) || this.schemaUtil.isComponentContainer(schema)) {\n        Object.assign(controls, this.createControlMap(schema.schemas, model));\n      } else if (this.schemaUtil.isControl(schema)) {\n        if (this.schemaUtil.isPathKeySchema(schema)) {\n          const paths = this.schemaUtil.parsePathKey(schema.key as string);\n          const key = paths.pop()!;\n\n          const parent: FormGroup = paths.reduce((previousGroup, path) => {\n            let group = previousGroup.get(path) as FormGroup;\n\n            if (!group) {\n              group = new FormGroup({});\n              previousGroup.addControl(path, group);\n            }\n\n            return group;\n          }, (controls[paths.shift()!] ??= new FormGroup({})) as FormGroup);\n          parent.addControl(key, this.createFormControl(schema, model));\n        } else {\n          controls[schema.key!.toString()] = this.createFormControl(schema, model);\n        }\n      }\n\n      return controls;\n    }, {} as Record<string, AbstractControl>);\n  }\n\n  createFormArray(schema: AbstractFormArraySchema, model: AnyArray): FormArray {\n    const controls = this.createFormArrayElements(schema.schemas, model);\n    const validators: ValidatorFn[] = schema.validators ?? [];\n\n    if (schema.length) {\n      validators.push(Validators.required);\n      if (isNumber(schema.length)) {\n        validators.push(\n          Validators.minLength(schema.length),\n          Validators.maxLength(schema.length)\n        );\n      } else {\n        if (schema.length.min) {\n          validators.push(Validators.minLength(schema.length.min));\n        }\n        if (schema.length.max) {\n          validators.push(Validators.maxLength(schema.length.max));\n        }\n      }\n    }\n\n    return new FormArray<SafeAny>(controls, {\n      validators,\n      asyncValidators: schema.asyncValidators,\n      updateOn: schema.config?.updateOn\n    });\n  }\n\n  createFormArrayElements(schemas: Indexable<AbstractSchema>[], model: AnyArray) {\n    // Only take the first one, ignore the rest.\n    const [schema] = this.schemaUtil.filterControls(schemas);\n\n    if (typeof ngDevMode !== 'undefined' && ngDevMode && !schema) {\n      throw Error('FormArray element control schema not found');\n    }\n\n    return model.map((_, index) => {\n      return this.createAnyControl({ ...schema, key: index }, model);\n    });\n  }\n\n  createAnyControl(schema: AbstractControlSchema, model: AnyObject | AnyArray): AbstractControl {\n    if (this.schemaUtil.isControlGroup(schema)) {\n      return this.createFormGroup(schema, (model as AnyObject)[schema.key!] ?? {});\n    }\n\n    if (this.schemaUtil.isControlArray(schema)) {\n      return this.createFormArray(schema, (model as AnyArray)[schema.key as number] ?? []);\n    }\n\n    return this.createFormControl(schema, model);\n  }\n\n  /**\n   * Update the form state, currently includes:\n   * - Updating validators\n   * - Updating status - enabled / disabled\n   * - Updating value\n   * @param form\n   * @param model\n   * @param schemas\n   */\n  updateForm(form: FormGroup, model: AnyObject, schemas: AbstractSchema[]): void;\n  updateForm(form: FormArray, model: AnyArray, schemas: AbstractSchema[]): void;\n  updateForm(form: FormGroup | FormArray, model: AnyObject, schemas: AbstractSchema[]): void {\n    for (const schema of schemas) {\n      if (this.schemaUtil.isControlGroup(schema)) {\n        const key = schema.key!;\n        const formGroup = getChildControl(form, key) as FormGroup;\n\n        this.updateForm(formGroup, model[key], schema.schemas);\n        continue;\n      }\n\n      if (this.schemaUtil.isControlArray(schema)) {\n        const key = schema.key!;\n        const formArray = getChildControl(form, key) as FormArray;\n        const [elementSchema] = this.schemaUtil.filterControls(schema.schemas);\n        const elementSchemas = formArray.controls.map((_, index) => ({ ...elementSchema, key: index }));\n\n        this.updateForm(formArray, model[schema.key!], elementSchemas);\n        continue;\n      }\n\n      if (this.schemaUtil.isControlWrapper(schema) || this.schemaUtil.isComponentContainer(schema)) {\n        this.updateForm(form as FormGroup, model, schema.schemas);\n        continue;\n      }\n\n      if (this.schemaUtil.isControl(schema)) {\n        const control = getChildControl(form, schema.key!)!;\n\n        if (schema.value) {\n          const value = this.valueTransformer.transform(schema.value, { model, schema, control });\n          control.setValue(value, { onlySelf: true });\n        }\n        // update disabled\n        const disabled = this.valueTransformer.transform(schema.disabled, { model, schema, control });\n        if (control.enabled !== !disabled) { // Update only if inconsistent\n          if (disabled) {\n            // Using `onlySelf: true` here instead of `emitEvent: false` because the\n            // control's own value/statusChanges events need to trigger properly.\n            control.disable({ onlySelf: true });\n          } else {\n            control.enable({ onlySelf: true });\n          }\n        }\n        // update required validator\n        const required = this.valueTransformer.transform(schema.required, { model, schema, control });\n        if (required) {\n          control.addValidators(Validators.required);\n        } else {\n          control.removeValidators(Validators.required);\n        }\n\n        control.updateValueAndValidity({ emitEvent: false });\n      }\n    }\n  }\n\n  /**\n   * Assign value from form to model\n   * @param model\n   * @param form\n   * @param schemas\n   */\n  updateModel(model: AnyObject, form: FormGroup, schemas: AbstractSchema[]): AnyObject;\n  updateModel(model: AnyArray, form: FormArray, schemas: AbstractSchema[]): AnyArray;\n  updateModel(model: AnyObject, form: FormGroup | FormArray, schemas: AbstractSchema[]): AnyObject | AnyArray {\n    for (const schema of schemas) {\n      if (this.schemaUtil.isControlGroup(schema)) {\n        const key = schema.key!;\n        const formGroup = getChildControl(form, key) as FormGroup;\n\n        this.updateModel(model[key] = {}, formGroup, schema.schemas);\n        continue;\n      }\n\n      if (this.schemaUtil.isControlArray(schema)) {\n        const key = schema.key!;\n        const formArray = getChildControl(form, key) as FormArray;\n        const [elementSchema] = this.schemaUtil.filterControls(schema.schemas);\n        const elementSchemas = formArray.controls.map((_, index) => ({ ...elementSchema, key: index }));\n\n        this.updateModel(model[key] = [], formArray, elementSchemas);\n        continue;\n      }\n\n      if (this.schemaUtil.isControlWrapper(schema) || this.schemaUtil.isComponentContainer(schema)) {\n        this.updateModel(model, form as FormGroup, schema.schemas);\n        continue;\n      }\n\n      if (this.schemaUtil.isControl(schema)) {\n        const key = schema.key!.toString();\n        const control = getChildControl(form, key)!;\n        const value = this.valueUtil.valueOfControl(control, schema);\n\n        // Multi-field case.\n        if (this.schemaUtil.isMultiKeySchema(schema)) {\n          (schema.key as string[]).map((prop, idx) => {\n            model[prop] = (value as [unknown, unknown])?.[idx] ?? null;\n          });\n        } else if (this.schemaUtil.isPathKeySchema(schema)) {\n          const paths = this.schemaUtil.parsePathKey(schema.key as string);\n          let _model = model;\n          for (let i = 0; i < paths.length - 1; i++) {\n            const path = paths[i];\n            _model = _model[path] ??= {};\n          }\n          _model[paths.pop()!] = value;\n        } else {\n          model[key] = value;\n        }\n      }\n    }\n\n    return model;\n  }\n}\n\n/**\n * Automatically choose to use `.get()` or `.at()` to get a child control\n * based on the type of the form.\n * @param form\n * @param key\n * @returns\n */\nexport function getChildControl(form: FormGroup | FormArray, key: SchemaKey): AbstractControl | null {\n  return form instanceof FormArray ? form.at(key as number) : form.get(key.toString() as string);\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FormArray, FormGroup } from '@angular/forms';\nimport type { AnyArray, AnyObject } from '@ngify/core';\nimport type { AbstractSchema } from '../schemas';\nimport type { Indexable } from '../types';\nimport { FormUtil, getChildControl } from './form.utils';\nimport { SchemaUtil } from './schema.utils';\nimport { ValueUtil } from './value.utils';\n\n/**\n * @internal\n */\n@Injectable({\n  providedIn: 'root'\n})\nexport class ModelUtil {\n  private readonly schemaUtil = inject(SchemaUtil);\n  private readonly valueUtil = inject(ValueUtil);\n  private readonly formUtil = inject(FormUtil);\n\n  /**\n   * 从 model 赋值到 form\n   * @param form\n   * @param model\n   * @param schemas\n   * @param completed\n   */\n  updateForm(form: FormGroup, model: AnyObject, schemas: Indexable<AbstractSchema>[], completed?: boolean): FormGroup;\n  updateForm(form: FormArray, model: AnyArray, schemas: Indexable<AbstractSchema>[], completed?: boolean): FormArray;\n  updateForm(form: FormGroup | FormArray, model: AnyObject, schemas: Indexable<AbstractSchema>[], completed = true): FormGroup | FormArray {\n    for (const schema of schemas) {\n      if (this.schemaUtil.isControlGroup(schema)) {\n        const key = schema.key!;\n        const formGroup = getChildControl(form, key) as FormGroup;\n\n        this.updateForm(formGroup, model[key] ??= {}, schema.schemas, false);\n        continue;\n      }\n\n      if (this.schemaUtil.isControlArray(schema)) {\n        const key = schema.key!;\n        const array: AnyArray = model[key] ??= [];\n        const formArray = getChildControl(form, key) as FormArray;\n\n        // / If the model array length matches the form array length, update the\n        // form values in place; otherwise, rebuild the form array.\n        if (array.length === formArray.length) {\n          const [elementSchema] = this.schemaUtil.filterControls(schema.schemas);\n          const elementSchemas = array.map((_, index) => ({ ...elementSchema, key: index }));\n\n          this.updateForm(formArray, array, elementSchemas, false);\n        } else {\n          const controls = this.formUtil.createFormArrayElements(schema.schemas, array);\n\n          formArray.clear({ emitEvent: false });\n          for (const control of controls) {\n            formArray.push(control, { emitEvent: false });\n          }\n          formArray.updateValueAndValidity({ onlySelf: true });\n        }\n        continue;\n      }\n\n      if (this.schemaUtil.isComponentContainer(schema) || this.schemaUtil.isControlWrapper(schema)) {\n        this.updateForm(form as FormGroup, model, schema.schemas, false);\n        continue;\n      }\n\n      if (this.schemaUtil.isControl(schema)) {\n        const value = this.valueUtil.valueOfModel(model, schema);\n        const control = getChildControl(form, schema.key!)!;\n\n        control.setValue(value, { onlySelf: true });\n      }\n    }\n\n    // Only disable `onlySelf` after all child updates are complete.\n    form.updateValueAndValidity({ onlySelf: !completed });\n\n    return form;\n  }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  DestroyRef,\n  EnvironmentInjector,\n  Injector,\n  computed,\n  createComponent,\n  effect,\n  inject,\n  input,\n  model,\n  output,\n  untracked\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { type FormControlStatus, FormGroup } from '@angular/forms';\nimport type { AnyObject } from '@ngify/core';\nimport type { AbstractFormGroupSchema } from '../../schemas';\nimport { FLUENT_FORM_CONTENT, NAMED_TEMPLATES } from '../../tokens';\nimport { FormUtil, ModelUtil, SchemaUtil } from '../../utils';\n\n@Component({\n  selector: 'fluent-form',\n  imports: [NgTemplateOutlet],\n  templateUrl: './form.component.html',\n  providers: [\n    {\n      provide: NAMED_TEMPLATES,\n      useFactory: () => []\n    }\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FluentForm<T extends AnyObject> {\n  private readonly formUtil = inject(FormUtil);\n  private readonly modelUtil = inject(ModelUtil);\n  private readonly schemaUtil = inject(SchemaUtil);\n  private internalModel!: T;\n\n  protected readonly formContentRef = createComponent(\n    inject(FLUENT_FORM_CONTENT),\n    {\n      environmentInjector: inject(EnvironmentInjector),\n      elementInjector: inject(Injector)\n    }\n  );\n\n  readonly schema = input.required<AbstractFormGroupSchema>();\n  readonly model = model.required<T>();\n\n  readonly patchedSchema = computed(() => this.schemaUtil.patch(this.schema()));\n  readonly form = computed<FormGroup>(() =>\n    this.formUtil.createFormGroup(this.patchedSchema(), untracked(this.model)));\n\n  readonly formChange = output<FormGroup>();\n  readonly valueChanges = output<T>();\n  readonly statusChanges = output<FormControlStatus>();\n  // eslint-disable-next-line @angular-eslint/no-output-native\n  readonly submit = output<SubmitEvent>();\n\n  readonly onSubmit = (event: SubmitEvent) => {\n    event.stopPropagation();\n    this.submit.emit(event);\n    // Forms with `method=\"dialog\"` have some special behavior that won't reload the page and that\n    // shouldn't be prevented. Note that we need to null check the `event` and the `target`, because\n    // some internal apps call this method directly with the wrong arguments.\n    return (event?.target as HTMLFormElement | null)?.method === 'dialog';\n  };\n\n  constructor() {\n    const destroyRef = inject(DestroyRef);\n\n    effect(() => {\n      const form = this.form();\n      untracked(() => {\n        this.formChange.emit(form);\n        this.onValueChanges();\n\n        form.valueChanges.pipe(takeUntilDestroyed(destroyRef)).subscribe(value => {\n          this.onValueChanges();\n          this.valueChanges.emit(value);\n        });\n\n        form.statusChanges.pipe(takeUntilDestroyed(destroyRef)).subscribe(status =>\n          this.statusChanges.emit(status));\n      });\n    });\n\n    let modelChangeCounter = 0;\n    effect(() => {\n      const model = this.model();\n      untracked(() => {\n        // If the change comes from outside, assign the value to the form.\n        if (modelChangeCounter++ > 0 && model !== this.internalModel) {\n          this.modelUtil.updateForm(\n            this.form(),\n            model,\n            this.patchedSchema().schemas\n          );\n        }\n      });\n    });\n\n    destroyRef.onDestroy(() => this.formContentRef.destroy());\n  }\n\n  private onValueChanges() {\n    const form = this.form();\n    const { schemas } = this.patchedSchema();\n\n    this.formUtil.updateForm(\n      form,\n      this.internalModel = this.formUtil.updateModel(\n        {} as T,\n        form,\n        schemas\n      ),\n      schemas\n    );\n    this.model.set(this.internalModel);\n  }\n}\n\n/**\n * @deprecated\n * This component will be removed in future versions. Please use {@link FluentForm} instead.\n */\nexport const FluentFormComponent = FluentForm;\n","<ng-container\n  [ngTemplateOutlet]=\"formContentRef.instance.templateRef\"\n  [ngTemplateOutletContext]=\"{ schema: patchedSchema(), model: model(), form: form(), onSubmit }\" />\n","import { Directive, TemplateRef } from '@angular/core';\nimport type { AbstractControl } from '@angular/forms';\nimport type { AnyObject } from '@ngify/core';\nimport { TemplateRefHolder } from '../directives/template-ref-holder.directive';\nimport type { AbstractSchema } from '../schemas';\n\nexport interface WidgetWrapperContext {\n  control: AbstractControl;\n  model: AnyObject;\n  schema: AbstractSchema;\n  templateRef: TemplateRef<WidgetWrapperContext>;\n  next?: WidgetWrapperContext;\n}\n\n@Directive()\nexport abstract class AbstractWidgetWrapper extends TemplateRefHolder<WidgetWrapperContext> { }\n","import type { AnyObject, SafeAny } from '@ngify/core';\n\ninterface Schema {\n  [k: string]: SafeAny;\n  schemas?: Schema[];\n}\n\nconst COMPOSE_KEY = 'schemas';\nconst SCHEMA_STACK: Schema[] = [];\n\nexport function getCurrentSchema(): Schema | undefined {\n  return SCHEMA_STACK[SCHEMA_STACK.length - 1];\n}\n\nfunction enterSchema(schema: Schema) {\n  SCHEMA_STACK.push(schema);\n}\n\nfunction leaveSchema() {\n  SCHEMA_STACK.pop();\n}\n\nfunction joinSchema(schema: Schema) {\n  const currentSchema = getCurrentSchema();\n  // If a schema already exists, just push it in as a subschema.\n  currentSchema?.schemas!.push(schema);\n}\n\nconst IS_BUILDER = Symbol();\nconst BUILD_KEY = 'build';\n\nexport function composeBuilder<T extends Record<string, SafeAny>>(target: AnyObject = {}, append = true): Builder<T> {\n  append && joinSchema(target);\n\n  const builder = new Proxy(target, {\n    get(target, property) {\n      switch (property) {\n        case IS_BUILDER: return true;\n        case BUILD_KEY: return () => target;\n\n        case COMPOSE_KEY:\n          return (composeFn: (...args: SafeAny) => SafeAny): unknown => {\n            target[COMPOSE_KEY] = [];\n\n            enterSchema(target);\n\n            try {\n              composeFn(builder);\n            } finally {\n              leaveSchema();\n            }\n\n            return builder;\n          };\n      }\n\n      return (value: unknown): unknown => {\n        if (value !== target[property]) {\n          target[property] = value;\n        }\n        return builder;\n      };\n    }\n  });\n\n  return builder as Builder<T>;\n}\n\n/**\n * Determines whether the value is a builder.\n */\nexport function isBuilder<T = unknown>(value: SafeAny): value is StableBuilder<T> {\n  return value[IS_BUILDER] ?? false;\n}\n\ntype ComposeKey = typeof COMPOSE_KEY;\ntype BuildKey = typeof BUILD_KEY;\n\ntype RequiredKey<T> = {\n  [K in keyof T]-?: undefined extends T[K] ? never : K\n}[keyof T];\n\ntype ComposeFn<T extends Record<string, SafeAny>> = (it: Builder<T>) => SafeAny;\n\n/**\n * @template T 原型\n * @template TCandidateKey 候选\n * @template TRequiredKey 必填字段\n * @template TSelectedKey 已选字段\n */\nexport type Builder<\n  T extends Record<string, SafeAny>,\n  TCandidateKey extends keyof T = keyof T,\n  TRequiredKey extends keyof T = RequiredKey<T>,\n  TSelectedKey extends keyof T = never\n> =\n  {\n    [K in keyof Pick<T, Exclude<TCandidateKey, TSelectedKey>>]-?: (\n      (val: K extends ComposeKey ? ComposeFn<T> : T[K]) => Builder<\n        T,\n        TCandidateKey,\n        TRequiredKey,\n        TSelectedKey | K\n      >\n    )\n  }\n  &\n  Record<[TRequiredKey] extends [TSelectedKey] ? BuildKey : never, () => Pick<T, TSelectedKey>>;\n\nexport type StableBuilder<T> = Record<BuildKey, () => T>;\n\n/**\n * @template T 原型\n * @template TRequiredKey 必填字段\n * @template TSelectedKey 已选字段\n */\nexport type UnstableBuilder<\n  T extends Record<string, SafeAny>,\n  TSelectedKey extends keyof T,\n  TRequiredKey extends keyof T = RequiredKey<T>\n> = Builder<\n  T,\n  keyof T,\n  TRequiredKey,\n  TSelectedKey\n>;\n","import type { RowComponentSchema, SingleSchemaKey } from '../schemas';\nimport { type UnstableBuilder, composeBuilder } from './builder';\nimport type { KindOrKey } from './helper';\n\nexport function row<Key extends SingleSchemaKey>(key?: Key): UnstableBuilder<RowComponentSchema<Key>, KindOrKey> {\n  return composeBuilder<RowComponentSchema<Key>>().kind('row').key(key);\n}\n","import type { HeadlessControlSchema, SingleSchemaKey } from '../schemas';\nimport { type UnstableBuilder, composeBuilder } from './builder';\nimport type { KindOrKey } from './helper';\n\nexport function headless<Key extends SingleSchemaKey>(key?: Key): UnstableBuilder<HeadlessControlSchema<Key>, KindOrKey> {\n  return composeBuilder<HeadlessControlSchema<Key>>().kind('headless').key(key);\n}\n","import { type Signal, computed } from '@angular/core';\nimport type { AbstractFormGroupSchema, AbstractSchema } from '../schemas';\nimport type { Indexable } from '../types';\nimport { isArray } from '../utils';\nimport { composeBuilder } from './builder';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype SafeAny = any;\ntype ComposeFn = () => SafeAny;\n\nexport function form(composeFn: ComposeFn): Signal<AbstractFormGroupSchema>;\nexport function form(schemas: Indexable<AbstractSchema>[]): AbstractFormGroupSchema;\nexport function form(schemasOrComposeFn: Indexable<AbstractSchema>[] | ComposeFn): AbstractFormGroupSchema | Signal<AbstractFormGroupSchema> {\n  if (isArray(schemasOrComposeFn)) {\n    return {\n      kind: 'group',\n      key: 'root',\n      schemas: schemasOrComposeFn\n    };\n  }\n\n  return computed(() =>\n    composeBuilder<AbstractFormGroupSchema>()\n      .kind('group')\n      .key('root')\n      .schemas(schemasOrComposeFn)\n      .build());\n}\n","import { DestroyRef, inject, Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class DestroyedSubject extends Subject<void> {\n  constructor() {\n    super();\n\n    inject(DestroyRef).onDestroy(() => {\n      this.next();\n      this.complete();\n    });\n  }\n}\n","import { createComponent, EnvironmentInjector, inject, Injectable, TemplateRef } from '@angular/core';\nimport { throwWidgetNotFoundError } from '../errors';\nimport { WIDGET_MAP } from '../tokens';\n\ndeclare const ngDevMode: boolean | undefined;\n\n@Injectable({ providedIn: 'root' })\nexport class WidgetTemplateRegistry extends Map<string, Promise<TemplateRef<unknown>>> {\n  private readonly envInjector = inject(EnvironmentInjector);\n  private readonly widgetMap = inject(WIDGET_MAP);\n\n  override get(kind: string): Promise<TemplateRef<unknown>> {\n    return super.get(kind) ?? this.register(kind);\n  }\n\n  register(kind: string) {\n    const component = this.widgetMap.get(kind);\n\n    if (typeof ngDevMode !== 'undefined' && ngDevMode && !component) {\n      throwWidgetNotFoundError(kind);\n    }\n\n    const tmpl = component!().then(comp => {\n      const { instance } = createComponent(comp, {\n        environmentInjector: this.envInjector\n      });\n      return instance.templateRef;\n    });\n\n    this.set(kind, tmpl);\n    return tmpl;\n  }\n}\n","import { createComponent, EnvironmentInjector, inject, Injectable, TemplateRef, Type } from '@angular/core';\nimport type { AbstractWidgetWrapper, WidgetWrapperContext } from '../components';\n\n@Injectable({ providedIn: 'root' })\nexport class WidgetWrapperTemplateRegistry extends Map<Type<AbstractWidgetWrapper>, TemplateRef<WidgetWrapperContext>> {\n  private readonly envInjector = inject(EnvironmentInjector);\n\n  override get(type: Type<AbstractWidgetWrapper>): TemplateRef<WidgetWrapperContext> {\n    return super.get(type) ?? this.register(type);\n  }\n\n  register(type: Type<AbstractWidgetWrapper>) {\n    const { templateRef } = createComponent(type, {\n      environmentInjector: this.envInjector\n    }).instance;\n\n    this.set(type, templateRef);\n\n    return templateRef;\n  }\n}\n","import {\n  DestroyRef,\n  Directive,\n  ElementRef,\n  Injector,\n  type OnInit,\n  type OutputRef,\n  Type,\n  computed,\n  effect,\n  inject,\n  input,\n  isSignal,\n  reflectComponentType,\n  runInInjectionContext,\n  untracked\n} from '@angular/core';\nimport { SIGNAL, type SignalNode, signalSetFn } from '@angular/core/primitives/signals';\nimport { outputToObservable } from '@angular/core/rxjs-interop';\nimport { AbstractControl } from '@angular/forms';\nimport type { AnyObject, SafeAny } from '@ngify/core';\nimport { Observable, fromEvent, map, takeUntil } from 'rxjs';\nimport type { AbstractSchema, EventListenerHolder, EventObserverHolder, HooksHolder, ListenerContext, PropertyHolder, SchemaContext } from '../schemas';\nimport { DestroyedSubject } from '../services';\n\nfunction isHookHolder(value: SafeAny): value is Required<HooksHolder> {\n  return 'hooks' in value;\n}\n\nfunction isListenerHolder(value: SafeAny): value is Required<EventListenerHolder> {\n  return 'listeners' in value;\n}\n\nfunction isPropertyHolder(value: SafeAny): value is Required<PropertyHolder> {\n  return 'properties' in value;\n}\n\nfunction isObserverHolder(value: SafeAny): value is Required<EventObserverHolder> {\n  return 'observers' in value;\n}\n\n/**\n * @internal\n */\n@Directive({\n  selector: '[fluentBinding]',\n  providers: [DestroyedSubject]\n})\nexport class FluentBindingDirective<E extends HTMLElement, C extends object, S extends AbstractSchema> implements OnInit {\n  private readonly destroyRef = inject(DestroyRef);\n  private readonly injector = inject(Injector);\n\n  readonly fluentBinding = input.required<{ component?: C, schema: S, control: AbstractControl, model: AnyObject }>();\n\n  private readonly schema = computed(() => this.fluentBinding().schema);\n  private readonly model = computed(() => this.fluentBinding().model);\n  private readonly control = computed(() => this.fluentBinding().control);\n  private readonly component = computed(() => this.fluentBinding().component);\n\n  constructor() {\n    const elementRef: ElementRef<E> = inject(ElementRef);\n    const destroyed = inject(DestroyedSubject);\n\n    effect(() => {\n      const component = this.component();\n      const schema = this.schema();\n      const control = this.control();\n      const element = elementRef.nativeElement;\n      const outputs = component\n        ? reflectComponentType(component.constructor as Type<unknown>)?.outputs.map(output => output.propName) ?? []\n        : [];\n\n      untracked(() => {\n        const context = (): ListenerContext => ({ control, schema, model: this.model(), element, component });\n        destroyed.next();\n\n        if (isPropertyHolder(schema)) {\n          const host = component ?? element;\n\n          for (const [property, value] of Object.entries(schema.properties)) {\n            const prop = host[property as keyof (C | E)];\n            if (isSignal(prop)) {\n              signalSetFn(prop[SIGNAL] as SignalNode<SafeAny>, value);\n            } else {\n              host[property as keyof (C | E)] = value;\n            }\n          }\n        }\n\n        if (isListenerHolder(schema)) {\n          for (const [eventName, listener] of Object.entries(schema.listeners)) {\n            if (eventName === 'valueChange') {\n              control.valueChanges.pipe(\n                takeUntil(destroyed)\n              ).subscribe(value => {\n                listener!(value, context());\n              });\n            } else if (eventName === 'statusChange') {\n              control.statusChanges.pipe(\n                takeUntil(destroyed)\n              ).subscribe(status => {\n                listener!(status, context());\n              });\n            } else {\n              // First try to bind to the component's output, then fallback to DOM event binding\n              if (component) {\n                if (outputs.includes(eventName)) {\n                  const output = component[eventName as keyof C] as Observable<SafeAny> | OutputRef<SafeAny>;\n                  const observable = output instanceof Observable ? output : outputToObservable(output);\n\n                  observable.pipe(\n                    takeUntil(destroyed)\n                  ).subscribe(event => {\n                    listener!(event, context());\n                  });\n\n                  continue;\n                }\n              }\n\n              fromEvent(element, eventName).pipe(\n                takeUntil(destroyed)\n              ).subscribe(event => {\n                listener!(event, context());\n              });\n            }\n          }\n        }\n\n        if (isObserverHolder(schema)) {\n          for (const [eventName, observer] of Object.entries(schema.observers)) {\n            if (eventName === 'valueChange') {\n              control.valueChanges.pipe(\n                map(event => ({ event, context: context() })),\n                observer!,\n                takeUntil(destroyed)\n              ).subscribe();\n            } else if (eventName === 'statusChange') {\n              control.statusChanges.pipe(\n                map(event => ({ event, context: context() })),\n                observer!,\n                takeUntil(destroyed)\n              ).subscribe();\n            } else {\n              // First try to bind to the component's output, then fallback to DOM event binding\n              if (component) {\n                if (outputs.includes(eventName)) {\n                  const output = component[eventName as keyof C] as Observable<SafeAny> | OutputRef<SafeAny>;\n                  const observable = output instanceof Observable ? output : outputToObservable(output);\n\n                  observable.pipe(\n                    map(event => ({ event, context: context() })),\n                    observer!,\n                    takeUntil(destroyed)\n                  ).subscribe();\n                  continue;\n                }\n              }\n\n              fromEvent(element, eventName).pipe(\n                map(event => ({ event, context: context() })),\n                observer!,\n                takeUntil(destroyed)\n              ).subscribe();\n            }\n          }\n        }\n      });\n    });\n  }\n\n  ngOnInit() {\n    const schema = this.schema();\n    const control = this.control();\n    const context = (): SchemaContext => ({ control, schema, model: this.model() });\n\n    if (isHookHolder(schema)) {\n      runInInjectionContext(this.injector, () => schema.hooks.onInit?.(context()));\n      this.destroyRef.onDestroy(() =>\n        runInInjectionContext(this.injector, () => schema.hooks.onDestroy?.(context())));\n    }\n  }\n}\n","import { Directive, Input } from '@angular/core';\n\n/**\n * @internal\n */\n@Directive({\n  selector: 'ng-template[fluentContextGuard]'\n})\nexport class FluentContextGuardDirective<T> {\n  @Input() fluentContextGuard!: T;\n\n  /**\n   * @internal\n   */\n  static ngTemplateContextGuard<T>(_: FluentContextGuardDirective<T>, context: unknown): context is T {\n    return true;\n  }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n  selector: '[fluentControlWrapper]'\n})\nexport class FluentControlWrapperDirective { }\n","export const Breakpoints = {\n  xs: '(max-width:575px)',\n  sm: '(min-width:576px)',\n  md: '(min-width:768px)',\n  lg: '(min-width:992px)',\n  xl: '(min-width:1200px)',\n  xxl: '(min-width:1400px)'\n} as const;\n\nexport type Breakpoints = typeof Breakpoints;\n\nexport function createBreakpointInfix(breakpoint?: keyof Breakpoints) {\n  return breakpoint !== 'xs' ? `-${breakpoint}` : '';\n}\n","import { _CdkPrivateStyleLoader } from '@angular/cdk/private';\nimport { ChangeDetectionStrategy, Component, Directive, ViewEncapsulation, booleanAttribute, computed, inject, input } from '@angular/core';\nimport { Breakpoints, createBreakpointInfix } from '../../../breakpoints';\nimport type { Stringify } from '../../../types';\nimport { isObject } from '../../../utils';\n\ntype Cell = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;\ntype Span = Cell | 'fill' | null;\ntype Offset = Cell | 'auto' | null;\n\n@Component({\n  selector: 'fluent-col',\n  template: '',\n  styleUrl: './col.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None\n})\nclass FluentColComponent { }\n\n@Directive({\n  selector: 'fluent-col,[fluentCol]',\n  host: {\n    '[class]': 'fluentCol() ? classes() : null',\n    '[style.flex]': 'fluentCol() ? flex() : null'\n  },\n  exportAs: 'fluentCol'\n})\nexport class FluentColDirective {\n  readonly fluentCol = input(true, { transform: booleanAttribute });\n  readonly span = input<Span | Stringify<Span> | Partial<Record<keyof Breakpoints, Span>>>();\n  readonly flex = input<string | number | null>();\n  readonly offset = input<Offset | Stringify<Offset> | Partial<Record<keyof Breakpoints, Offset>>>();\n\n  protected readonly classes = computed(() => {\n    const span = this.span();\n    const offset = this.offset();\n    const classes = ['fluent-column'];\n\n    if (span) {\n      if (isObject(span)) {\n        for (const [breakpoint, _span] of Object.entries(span)) {\n          classes.push(columnClassOf(_span, breakpoint as keyof Breakpoints));\n        }\n      } else {\n        classes.push(columnClassOf(span));\n      }\n    }\n\n    if (offset) {\n      if (isObject(offset)) {\n        for (const [breakpoint, _offset] of Object.entries(offset)) {\n          classes.push(columnOffsetClassOf(_offset, breakpoint as keyof Breakpoints));\n        }\n      } else {\n        classes.push(columnOffsetClassOf(offset));\n      }\n    }\n\n    return classes;\n  });\n\n  constructor() {\n    inject(_CdkPrivateStyleLoader).load(FluentColComponent);\n  }\n}\n\nfunction columnClassOf(span: Span | Stringify<Span>, breakpoint?: keyof Breakpoints) {\n  let clazz = `fluent-column`;\n\n  if (breakpoint) {\n    clazz += createBreakpointInfix(breakpoint);\n  }\n\n  if (span) {\n    clazz += `-${span}`;\n  }\n\n  return clazz;\n}\n\nfunction columnOffsetClassOf(offset: Offset | Stringify<Offset>, breakpoint?: keyof Breakpoints) {\n  let clazz = `fluent-column-offset`;\n\n  if (breakpoint) {\n    clazz += createBreakpointInfix(breakpoint);\n  }\n\n  clazz += `-${offset}`;\n\n  return clazz;\n}\n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport { _CdkPrivateStyleLoader } from '@angular/cdk/private';\nimport { ChangeDetectionStrategy, Component, Directive, ViewEncapsulation, computed, inject, input } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { map } from 'rxjs';\nimport { Breakpoints } from '../../../breakpoints';\nimport type { Stringify } from '../../../types';\nimport { isArray, isNumber, isString } from '../../../utils';\n\ntype Gap = 0 | 1 | 2 | 3 | 4 | 5 | 6;\ntype Justify = 'start' | 'end' | 'center' | 'space-around' | 'space-between' | 'space-evenly';\ntype Align = 'start' | 'end' | 'center';\n\nconst SPACER = 16;\nconst GAPS = {\n  0: 0,\n  1: SPACER * 0.25, // 4\n  2: SPACER * 0.5, // 8\n  3: SPACER, // 16\n  4: SPACER * 1.5, // 24\n  5: SPACER * 2, // 32\n  6: SPACER * 3 // 48\n};\nconst DEFAULT_GAP: Partial<Record<keyof Breakpoints, Gap | [x: Gap, y: Gap]>> = { xs: 1, sm: 2, md: 3, lg: 4, xl: 5 };\n\nconst BREAKPOINTS: string[] = [\n  Breakpoints.xs,\n  Breakpoints.sm,\n  Breakpoints.md,\n  Breakpoints.lg,\n  Breakpoints.xl,\n  Breakpoints.xxl\n];\n\n@Component({\n  selector: 'fluent-row',\n  template: '',\n  styleUrl: './row.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None\n})\nclass FluentRowComponent { }\n\n@Directive({\n  selector: 'fluent-row,[fluentRow]',\n  host: {\n    class: 'fluent-row',\n    '[style.--gap-x.px]': 'gapPx()[0]',\n    '[style.--gap-y.px]': 'gapPx()[1]',\n    '[style.justify-content]': 'justifyContent()',\n    '[style.align-items]': 'alignItems()'\n  },\n  exportAs: 'fluentRow'\n})\nexport class FluentRowDirective {\n  readonly gap = input<Gap | Stringify<Gap> | [x: Gap, y: Gap] | Partial<Record<keyof Breakpoints, Gap | [x: Gap, y: Gap]>> | null>();\n  readonly justify = input<Justify | null>();\n  readonly align = input<Align | null>();\n  /** Currently matched breakpoints. */\n  private readonly breakpoints = toSignal(\n    inject(BreakpointObserver).observe(BREAKPOINTS).pipe(\n      map(state =>\n        Object.keys(state.breakpoints)\n          .filter(breakpoint => state.breakpoints[breakpoint])\n          .sort((a, b) => BREAKPOINTS.indexOf(b) - BREAKPOINTS.indexOf(a)))\n    ),\n    { initialValue: [] }\n  );\n\n  protected readonly gapPx = computed(() => {\n    if (this.gap() === null) {\n      return getGapPixel(0);\n    }\n\n    const breakpoints = this.breakpoints();\n    const gap = this.gap() ?? DEFAULT_GAP;\n\n    if (isArray(gap) || isNumber(gap) || isString(gap)) {\n      return getGapPixel(gap);\n    }\n\n    for (const breakpointValue of breakpoints) {\n      for (const breakpointName of Object.keys(gap)) {\n        if (Breakpoints[breakpointName as keyof Breakpoints] === breakpointValue) {\n          return getGapPixel(gap[breakpointName as keyof Breakpoints]!);\n        }\n      }\n    }\n\n    return getGapPixel(0);\n  });\n\n  protected readonly justifyContent = computed(() => parseJustifyOrAlign(this.justify()));\n  protected readonly alignItems = computed(() => parseJustifyOrAlign(this.align()));\n\n  constructor() {\n    inject(_CdkPrivateStyleLoader).load(FluentRowComponent);\n  }\n}\n\nfunction getGapPixel(level: Gap | Stringify<Gap> | [x: Gap, y: Gap]): [number, number?] {\n  if (isArray(level)) {\n    return [GAPS[level[0]], GAPS[level[1]]];\n  }\n\n  return [GAPS[level], 0];\n}\n\nfunction parseJustifyOrAlign(value?: Justify | Align | null) {\n  if (value === 'start' || value === 'end') {\n    return `flex-${value}`;\n  }\n\n  return value;\n}\n","import { NgModule } from '@angular/core';\nimport { FluentColDirective } from './col/col.component';\nimport { FluentRowDirective } from './row/row.component';\n\n@NgModule({\n  imports: [FluentRowDirective, FluentColDirective],\n  exports: [FluentRowDirective, FluentColDirective]\n})\nexport class FluentGridModule { }\n","import { type Signal } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport type { AnyArray, AnyObject } from '@ngify/core';\nimport type { AbstractControlContainerSchema } from '../../../schemas';\n\nexport abstract class FluentControlContainer<T extends AnyObject | AnyArray> {\n  abstract readonly schema: Signal<AbstractControlContainerSchema>;\n  abstract readonly patchedSchema: Signal<AbstractControlContainerSchema>;\n  abstract readonly form: Signal<FormGroup>;\n  abstract readonly model: Signal<T>;\n}\n","import {\n  computed,\n  DestroyRef,\n  Directive,\n  effect,\n  forwardRef,\n  HostListener,\n  inject,\n  input,\n  model,\n  output,\n  untracked\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { type FormControlStatus, FormGroup } from '@angular/forms';\nimport type { AnyArray, AnyObject } from '@ngify/core';\nimport type { AbstractFormGroupSchema } from '../../schemas';\nimport { NAMED_TEMPLATES } from '../../tokens';\nimport { FormUtil, ModelUtil, SchemaUtil } from '../../utils';\nimport { FluentControlContainer } from './models/control-container';\n\n@Directive({\n  selector: '[fluentSchema]',\n  providers: [\n    {\n      provide: FluentControlContainer,\n      useExisting: forwardRef(() => FluentFormDirective)\n    },\n    {\n      provide: NAMED_TEMPLATES,\n      useFactory: () => []\n    }\n  ],\n  exportAs: 'fluentForm'\n})\nexport class FluentFormDirective<T extends AnyObject | AnyArray> implements FluentControlContainer<T> {\n  private readonly formUtil = inject(FormUtil);\n  private readonly schemaUtil = inject(SchemaUtil);\n  private readonly modelUtil = inject(ModelUtil);\n  private internalModel!: T;\n\n  readonly schema = input.required<AbstractFormGroupSchema>({ alias: 'fluentSchema' });\n  readonly model = model.required<T>({ alias: 'fluentModel' });\n\n  readonly patchedSchema = computed(() => this.schemaUtil.patch(this.schema()));\n  readonly form = computed<FormGroup>(() =>\n    this.formUtil.createFormGroup(this.patchedSchema(), untracked(() => this.model())));\n\n  readonly formChange = output<FormGroup>({ alias: 'fluentFormChange' });\n  readonly valueChanges = output<T>({ alias: 'fluentValueChanges' });\n  readonly statusChanges = output<FormControlStatus>({ alias: 'fluentStatusChanges' });\n  /** The submit event will only be triggered when the host element is a form element */\n  // eslint-disable-next-line @angular-eslint/no-output-native\n  readonly submit = output<SubmitEvent>({ alias: 'fluentSubmit' });\n\n  constructor() {\n    const destroyRef = inject(DestroyRef);\n\n    effect(() => {\n      const form = this.form();\n      untracked(() => {\n        this.formChange.emit(form);\n        this.onValueChanges();\n\n        form.valueChanges.pipe(takeUntilDestroyed(destroyRef)).subscribe(value => {\n          this.onValueChanges();\n          this.valueChanges.emit(value);\n        });\n\n        form.statusChanges.pipe(takeUntilDestroyed(destroyRef)).subscribe(status =>\n          this.statusChanges.emit(status));\n      });\n    });\n\n    let modelChangeCounter = 0;\n    effect(() => {\n      const model = this.model();\n      untracked(() => {\n        // If the change comes from outside, assign the value to the form.\n        if (modelChangeCounter++ > 0 && model !== this.internalModel) {\n          this.modelUtil.updateForm(\n            this.form(),\n            model,\n            this.patchedSchema().schemas\n          );\n        }\n      });\n    });\n  }\n\n  @HostListener('submit', ['$event'])\n  onSubmit(event: SubmitEvent) {\n    this.submit.emit(event);\n    return (event?.target as HTMLFormElement | null)?.method === 'dialog';\n  }\n\n  private onValueChanges() {\n    const form = this.form();\n    const { schemas } = this.patchedSchema();\n\n    this.formUtil.updateForm(\n      form,\n      this.internalModel = this.formUtil.updateModel(\n        {} as T,\n        form,\n        schemas\n      ),\n      schemas\n    );\n    this.model.set(this.internalModel);\n  }\n}\n","import { computed, Directive, effect, inject, input, untracked, ViewContainerRef } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\nimport type { AnyArray, AnyObject } from '@ngify/core';\nimport type { AbstractSchema, SchemaKey, SingleSchemaKey } from '../../schemas';\nimport { WidgetTemplateRegistry } from '../../services';\nimport { SchemaUtil } from '../../utils';\nimport type { WidgetTemplateContext } from '../../widgets';\nimport { FluentControlContainer } from './models/control-container';\n\n@Directive({\n  selector: 'fluent-outlet,[fluentOutlet]',\n  exportAs: 'fluentOutlet'\n})\nexport class FluentOutletDirective<T extends AnyObject | AnyArray> implements WidgetTemplateContext<AbstractSchema, AbstractControl> {\n  private readonly schemaUtil = inject(SchemaUtil);\n  private readonly registry = inject(WidgetTemplateRegistry);\n  private readonly viewContainerRef = inject(ViewContainerRef);\n  private readonly controlContainer: FluentControlContainer<T> = inject(FluentControlContainer<T>, { host: true, skipSelf: true });\n  private readonly _schema = computed(() => {\n    return this.schemaUtil.find(this.controlContainer.patchedSchema(), this.key())!;\n  });\n\n  private readonly _control = computed(() => {\n    const form = this.controlContainer.form();\n    const paths = this.schemaUtil.norimalizePaths(this.key());\n    return form.get(paths) ?? form;\n  });\n\n  private readonly _model = computed(() => {\n    const rootModel = this.controlContainer.model();\n    const paths = this.schemaUtil.norimalizePaths(this.key());\n    // Delete the last key to get the parent model\n    return paths\n      .map(path => this.schemaUtil.parsePathKey(path))\n      .flat()\n      .slice(0, -1)\n      .reduce((obj, key) => obj?.[key as keyof T] as T, rootModel);\n  });\n\n  get control(): AbstractControl {\n    return this._control();\n  }\n\n  get schema() {\n    return this._schema();\n  }\n\n  get model() {\n    return this._model();\n  }\n\n  readonly key = input.required<SingleSchemaKey | SchemaKey[]>();\n\n  constructor() {\n    effect(() => {\n      const schema = this.schema;\n\n      untracked(() => {\n        this.viewContainerRef.length && this.viewContainerRef.clear();\n        this.registry.get(schema.kind).then(tmpl => {\n          this.viewContainerRef.createEmbeddedView(tmpl, this);\n        });\n      });\n    });\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { FluentFormDirective } from './form.directive';\nimport { FluentOutletDirective } from './outlet.directive';\n\n@NgModule({\n  imports: [\n    FluentFormDirective,\n    FluentOutletDirective\n  ],\n  exports: [\n    FluentFormDirective,\n    FluentOutletDirective\n  ]\n})\nexport class FluentFormRenderModule { }\n","import { Directive, effect, EmbeddedViewRef, inject, input, TemplateRef, untracked, ViewContainerRef } from '@angular/core';\n\n@Directive({\n  selector: '[fluentTemplateOutlet]'\n})\nexport class FluentTemplateOutlet<C = unknown> {\n  readonly fluentTemplateOutlet = input.required<TemplateRef<C> | string | undefined | null>();\n  readonly fluentTemplateOutletContext = input<C | null>(null);\n\n  constructor() {\n    const viewContainerRef = inject(ViewContainerRef);\n    const templateRef = inject(TemplateRef);\n    let viewRef: EmbeddedViewRef<C> | null = null;\n\n    effect(() => {\n      const textOrTemplate = this.fluentTemplateOutlet();\n      untracked(() => {\n        if (viewRef) {\n          viewContainerRef.remove(viewContainerRef.indexOf(viewRef));\n        }\n        const viewContext = this.createContextProxy();\n        if (textOrTemplate instanceof TemplateRef) {\n          viewRef = viewContainerRef.createEmbeddedView(textOrTemplate, viewContext);\n        } else {\n          viewRef = viewContainerRef.createEmbeddedView(templateRef, viewContext);\n        }\n      });\n    });\n  }\n\n  /**\n   * For a given outlet instance, we create a proxy object that delegates\n   * to the user-specified context. This allows changing, or swapping out\n   * the context object completely without having to destroy/re-create the view.\n   */\n  private createContextProxy(): C {\n    return new Proxy(\n      {},\n      {\n        set: (_target, prop, newValue) => {\n          const context = this.fluentTemplateOutletContext();\n          if (!context) {\n            return false;\n          }\n          return Reflect.set(context, prop, newValue);\n        },\n        get: (_target, prop, receiver) => {\n          const context = this.fluentTemplateOutletContext();\n          if (!context) {\n            return undefined;\n          }\n          return Reflect.get(context, prop, receiver);\n        }\n      }\n    ) as C;\n  }\n}\n","import { DestroyRef, Directive, TemplateRef, inject, input, type OnInit } from '@angular/core';\nimport { NAMED_TEMPLATES } from '../tokens';\n\n@Directive({\n  selector: '[fluentTemplate]'\n})\nexport class FluentTemplate implements OnInit {\n  private readonly templateRef = inject(TemplateRef);\n  private readonly templates = inject(NAMED_TEMPLATES);\n\n  readonly fluentTemplate = input.required<string>();\n\n  constructor() {\n    inject(DestroyRef).onDestroy(() => {\n      this.templates.splice(\n        this.templates.findIndex(item => item.templateRef === this.templateRef),\n        1\n      );\n    });\n  }\n\n  ngOnInit() {\n    this.templates.push({\n      name: this.fluentTemplate(),\n      templateRef: this.templateRef\n    });\n  }\n}\n\n/**\n * @deprecated\n * This will be removed in the next major version. Use {@link FluentTemplate} instead.\n */\nexport const FluentTemplateDirective = FluentTemplate;\n","import { NgTemplateOutlet } from '@angular/common';\nimport { Directive, inject, Injector } from '@angular/core';\n\n/**\n * @internal\n */\n@Directive({\n  selector: '[ngTemplateOutlet][fluentWithInjector]'\n})\nexport class FluentWithInjectorDirective {\n  constructor() {\n    const outlet = inject(NgTemplateOutlet);\n    outlet.ngTemplateOutletInjector = Injector.create({\n      providers: [],\n      parent: inject(Injector)\n    });\n  }\n}\n","import type { SafeAny } from '@ngify/core';\nimport type { ElementType } from '../schemas';\n\nexport function isElementConfig(value: unknown): value is Partial<Record<ElementType, SafeAny>> {\n  return typeof value === 'object' && value !== null && ('host' in value || 'wrapper' in value);\n}\n","import { Pipe, type PipeTransform } from '@angular/core';\nimport type { AbstractSchema, ClassType, ElementType, WithoutSchemaReactiveFn } from '../schemas';\nimport { isElementConfig } from './shared';\n\n@Pipe({\n  name: 'class'\n})\nexport class ClassPipe implements PipeTransform {\n  transform(value: WithoutSchemaReactiveFn<AbstractSchema['class']>, type: ElementType = 'host'): ClassType {\n    const normalizedValue = isElementConfig(value) ? value : { host: value };\n    return normalizedValue[type];\n  }\n}\n","import { Pipe, type PipeTransform } from '@angular/core';\nimport type { AbstractSchema, Column } from '../schemas';\nimport { isObject } from '../utils';\n\nfunction isColumn(value: object): value is Column {\n  return 'span' in value || 'flex' in value || 'offset' in value;\n}\n\n/**\n * @internal\n */\n@Pipe({\n  name: 'col'\n})\nexport class FluentColumnPipe implements PipeTransform {\n  transform<T extends keyof Column>(value: AbstractSchema['col'], type: T): Column[T] {\n    if (!value) {\n      return null;\n    }\n\n    if (isObject(value) && isColumn(value)) {\n      return value[type] ?? null;\n    }\n\n    return type === 'span' ? (value as Column[T]) : null;\n  }\n}\n","import { Pipe, type PipeTransform } from '@angular/core';\nimport { AbstractControl, FormArray, FormControl, FormGroup } from '@angular/forms';\nimport type { SchemaKey } from '../schemas';\nimport { getChildControl, isUndefined } from '../utils';\n\n/**\n * @internal\n */\n@Pipe({\n  name: 'control'\n})\nexport class FluentControlPipe implements PipeTransform {\n  /**\n   * Use value as a key to get the instance from the form.\n   * @param value\n   * @param form\n   * @param type Used to overload the method's return type.\n   */\n  transform(value: SchemaKey | undefined, form: FormGroup | FormArray, type: 'control'): FormControl;\n  transform(value: SchemaKey | undefined, form: FormGroup | FormArray, type: 'group'): FormGroup;\n  transform(value: SchemaKey | undefined, form: FormGroup | FormArray, type: 'array'): FormArray;\n  transform(value: SchemaKey | undefined, form: FormGroup | FormArray): AbstractControl;\n  transform(value: SchemaKey | undefined, form: FormGroup | FormArray): AbstractControl {\n    if (isUndefined(value)) return form;\n\n    return getChildControl(form, value) ?? form;\n    // When the corresponding control instance cannot be found, it usually\n    // means the current schema is not a control schema.\n    // In this case, return the parent form instance directly ☝️\n  }\n}\n","import { inject, type InjectOptions, Injector, Pipe, type PipeTransform, type ProviderToken } from '@angular/core';\n\n/**\n * @internal\n */\n@Pipe({\n  name: 'inject'\n})\nexport class FluentInjectPipe implements PipeTransform {\n  private readonly injector = inject(Injector);\n\n  transform<T>(value: ProviderToken<T>, options?: InjectOptions): T | null {\n    return this.injector.get(value, null, options);\n  }\n}\n","import { Pipe, type PipeTransform } from '@angular/core';\n\n/**\n * @internal\n */\n@Pipe({\n  name: 'invoke'\n})\nexport class InvokePipe implements PipeTransform {\n  transform<A extends unknown[], R>(value: (...args: A) => R, ...args: A): R {\n    return value(...args);\n  }\n}\n","import { inject, Injector, Pipe, type PipeTransform, runInInjectionContext, Type } from '@angular/core';\nimport type { SafeAny } from '@ngify/core';\n\n/**\n * @internal\n */\n@Pipe({\n  name: 'new'\n})\nexport class FluentNewPipe implements PipeTransform {\n  private readonly injector = inject(Injector);\n\n  transform<T>(clazz: Type<T>, ...args: SafeAny[]): T {\n    return runInInjectionContext(this.injector, () => new clazz(...args));\n  }\n}\n","import { inject, Pipe, type PipeTransform } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\nimport type { SafeAny } from '@ngify/core';\nimport type { AbstractSchema, MaybeSchemaReactiveFn } from '../schemas';\nimport { ValueTransformer } from '../services';\n\n/**\n * @internal\n */\n@Pipe({\n  name: 'reactive'\n})\nexport class FluentReactivePipe implements PipeTransform {\n  private readonly transformer = inject(ValueTransformer);\n\n  transform<T>(\n    value: MaybeSchemaReactiveFn<SafeAny, T>,\n    model: unknown,\n    schema: AbstractSchema,\n    control: AbstractControl\n  ): T {\n    return this.transformer.transform(value, { model, schema, control });\n  }\n}\n","import { Pipe, type PipeTransform } from '@angular/core';\nimport { type AbstractSchema, SchemaKind } from '../schemas';\n\n@Pipe({\n  name: 'renderable'\n})\nexport class RenderablePipe implements PipeTransform {\n  transform(schema: AbstractSchema): boolean {\n    return schema.kind !== SchemaKind.Headless;\n  }\n}\n","import { inject, Pipe, type PipeTransform } from '@angular/core';\nimport { SchemaType } from '../schemas/interfaces';\nimport { SCHEMA_MAP } from '../tokens';\n\n/**\n * @internal\n */\n@Pipe({\n  name: 'schemaType'\n})\nexport class FluentSchemaTypePipe implements PipeTransform {\n  private readonly schemaMap = inject(SCHEMA_MAP);\n\n  transform(value: string): SchemaType {\n    return this.schemaMap.get(value)!.type;\n  }\n}\n","import { inject, Pipe, type PipeTransform } from '@angular/core';\nimport type { AbstractBranchSchema, AbstractControlContainerSchema, AbstractControlSchema, SchemaKey, SingleSchemaKey } from '../schemas';\nimport type { Indexable } from '../types';\nimport { SchemaUtil } from '../utils';\n\n/**\n * @internal\n */\n@Pipe({\n  name: 'schema'\n})\nexport class FluentSchemaPipe implements PipeTransform {\n  private readonly schemaUtil = inject(SchemaUtil);\n\n  /**\n   * Use value as a key to get the schema from schemas.\n   * @param value\n   * @param schemas\n   * @param type Used to overload the method's return type\n   */\n  transform(value: SingleSchemaKey | SchemaKey[], schema: Indexable<AbstractBranchSchema>, type: 'control'): AbstractControlSchema | null;\n  transform(value: SingleSchemaKey | SchemaKey[], schema: Indexable<AbstractBranchSchema>, type: 'group'): AbstractControlContainerSchema | null;\n  transform(value: SingleSchemaKey | SchemaKey[], schema: Indexable<AbstractBranchSchema>, type: 'array'): AbstractControlContainerSchema | null;\n  transform(value: SingleSchemaKey | SchemaKey[], schema: Indexable<AbstractBranchSchema>): AbstractControlSchema | AbstractControlContainerSchema | null;\n  transform(value: SingleSchemaKey | SchemaKey[], schema: Indexable<AbstractBranchSchema>): AbstractControlSchema | AbstractControlContainerSchema | null {\n    return this.schemaUtil.find(schema, value) as AbstractControlSchema | AbstractControlContainerSchema | null;\n  }\n}\n","import { Pipe, type PipeTransform } from '@angular/core';\nimport type { AbstractSchema, ElementType, StyleType, WithoutSchemaReactiveFn } from '../schemas';\nimport { isElementConfig } from './shared';\n\n@Pipe({\n  name: 'style'\n})\nexport class StylePipe implements PipeTransform {\n  transform(value: WithoutSchemaReactiveFn<AbstractSchema['style']>, type: ElementType = 'host'): StyleType {\n    const normalizedValue = isElementConfig(value) ? value : { host: value };\n    return normalizedValue[type];\n  }\n}\n","import { inject, Pipe, type PipeTransform, TemplateRef } from '@angular/core';\nimport type { SafeAny } from '@ngify/core';\nimport { NAMED_TEMPLATES } from '../tokens';\nimport { isString } from '../utils';\n\nconst NAMED_TEMPLATE_PREFIX = '#' as const;\n\n/**\n * @internal\n */\n@Pipe({\n  name: 'template'\n})\nexport class FluentTemplatePipe implements PipeTransform {\n  private readonly templates = inject(NAMED_TEMPLATES, { optional: true });\n\n  transform<T>(value: T): T | TemplateRef<SafeAny>;\n  transform<T, U>(value: T, defaultValue: U): NonNullable<T> | U | TemplateRef<SafeAny>;\n  transform<T, U>(value: T, defaultValue?: U): T | U | TemplateRef<SafeAny> {\n    // If the string starts with '#', try to find the externally registered\n    // template and return it.\n    if (isString(value) && value[0] === NAMED_TEMPLATE_PREFIX) {\n      const name = value.slice(1); // remove the '#'\n      const dir = this.templates?.find(o => o.name === name);\n\n      if (dir) {\n        return dir.templateRef;\n      }\n    }\n\n    return value ?? defaultValue!;\n  }\n}\n","import { inject, Pipe, type PipeTransform, TemplateRef } from '@angular/core';\nimport { throwCustomTemplateNotFoundError } from '../errors';\nimport type { AbstractSchema } from '../schemas';\nimport { SchemaKind } from '../schemas/interfaces';\nimport { WidgetTemplateRegistry } from '../services';\nimport { NAMED_TEMPLATES } from '../tokens';\nimport type { Indexable } from '../types';\n\ndeclare const ngDevMode: boolean | undefined;\n\n@Pipe({\n  name: 'widgetTemplate'\n})\nexport class FluentWidgetTemplatePipe implements PipeTransform {\n  private readonly registry = inject(WidgetTemplateRegistry);\n  private readonly templates = inject(NAMED_TEMPLATES, { optional: true });\n\n  transform(value: Indexable<AbstractSchema>): Promise<TemplateRef<unknown>> {\n    switch (value.kind) {\n      case SchemaKind.Template: {\n        const dir = this.templates?.find(o => o.name === value.key);\n\n        if (typeof ngDevMode !== 'undefined' && ngDevMode && !dir) {\n          throwCustomTemplateNotFoundError(value.key as string);\n        }\n\n        return Promise.resolve(dir!.templateRef);\n      }\n\n      case SchemaKind.Headful: {\n        const dir = this.templates?.find(o => o.name === value['template']);\n\n        if (typeof ngDevMode !== 'undefined' && ngDevMode && !dir) {\n          throwCustomTemplateNotFoundError(value['template']);\n        }\n\n        return Promise.resolve(dir!.templateRef);\n      }\n\n      default:\n        return this.registry.get(value.kind);\n    }\n  }\n}\n","import { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Directive, inject, Injector } from '@angular/core';\nimport type { SafeAny } from '@ngify/core';\nimport { AbstractWidgetWrapper } from '../../components/widget-wrapper';\nimport { FluentWidgetTemplatePipe } from '../../pipes';\nimport { WidgetWrapperTemplateRegistry } from '../../services';\nimport { FluentWithInjectorDirective } from '../with-injector.directive';\n\n@Directive({\n  selector: '[fluentNextWidgetWrapperOutlet]',\n  hostDirectives: [\n    {\n      directive: NgTemplateOutlet,\n      inputs: ['ngTemplateOutletContext: fluentNextWidgetWrapperOutlet']\n    }\n  ]\n})\nexport class FluentNextWidgetWrapperOutlet {\n  constructor() {\n    const outlet = inject(NgTemplateOutlet);\n    const injector = inject(Injector);\n    const wrapperMap = inject(WidgetWrapperTemplateRegistry);\n\n    outlet.ngTemplateOutlet = wrapperMap.get(FluentNextWidgetWrapper);\n    outlet.ngTemplateOutletInjector = Injector.create({\n      providers: [],\n      parent: injector\n    });\n    outlet.ngOnChanges({ ngTemplateOutlet: {} as SafeAny });\n  }\n}\n\n@Component({\n  imports: [\n    AsyncPipe,\n    NgTemplateOutlet,\n    FluentWidgetTemplatePipe,\n    FluentWithInjectorDirective\n  ],\n  template: `\n    <ng-template let-control=\"control\" let-schema=\"schema\" let-model=\"model\" let-next=\"next\">\n      @if (next) {\n        <ng-container\n          fluentWithInjector\n          [ngTemplateOutlet]=\"next.templateRef\"\n          [ngTemplateOutletContext]=\"next\" />\n      } @else {\n        <ng-container\n          fluentWithInjector\n          [ngTemplateOutlet]=\"schema | widgetTemplate | async\"\n          [ngTemplateOutletContext]=\"{ control, schema, model }\" />\n      }\n    </ng-template>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FluentNextWidgetWrapper extends AbstractWidgetWrapper { }\n","import { NgTemplateOutlet } from '@angular/common';\nimport { Directive, Injector, TemplateRef, Type, computed, effect, inject, input, untracked } from '@angular/core';\nimport type { SafeAny } from '@ngify/core';\nimport type { AbstractWidgetWrapper, WidgetWrapperContext } from '../../components';\nimport { throwCustomTemplateNotFoundError } from '../../errors';\nimport type { AbstractSchema, SchemaContext } from '../../schemas';\nimport { WidgetWrapperTemplateRegistry } from '../../services';\nimport { FLUENT_WIDGET_WRAPPERS, NAMED_TEMPLATES } from '../../tokens';\nimport { FluentNextWidgetWrapper } from './next-widget-wrapper-outlet.directive';\n\n@Directive({\n  selector: '[fluentWidgetWrapperOutlet]',\n  hostDirectives: [NgTemplateOutlet]\n})\nexport class FluentWidgetWrapperOutlet<C extends SchemaContext> {\n  readonly context = input.required<C>({ alias: 'fluentWidgetWrapperOutlet' });\n  readonly wrappers = input<Type<AbstractWidgetWrapper>[]>(undefined, { alias: 'fluentWidgetWrapperOutletWrappers' });\n\n  readonly schema = computed(() => this.context().schema);\n\n  constructor() {\n    const outlet = inject(NgTemplateOutlet);\n    const injector = inject(Injector);\n    const wrappers = inject(FLUENT_WIDGET_WRAPPERS, { optional: true });\n    const wrapperMap = inject(WidgetWrapperTemplateRegistry);\n    const namedTemplates = inject(NAMED_TEMPLATES, { optional: true });\n    const namedTemplateMap = new Map<string, TemplateRef<WidgetWrapperContext>>(\n      namedTemplates?.map(o => [o.name, o.templateRef])\n    );\n\n    const finalWrappersOf = (schema: AbstractSchema) => {\n      const finalWrappers = schema.wrappers?.flat() || this.wrappers() || wrappers;\n      return finalWrappers?.length ? finalWrappers : [FluentNextWidgetWrapper];\n    };\n\n    function resolveWrapperTemplate(wrapper: Type<AbstractWidgetWrapper> | string) {\n      if (typeof wrapper === 'string') {\n        const tmpl = namedTemplateMap.get(wrapper);\n\n        if (typeof ngDevMode !== 'undefined' && ngDevMode && !tmpl) {\n          throwCustomTemplateNotFoundError(wrapper);\n        }\n\n        return tmpl;\n      }\n\n      return wrapperMap.get(wrapper)!;\n    }\n\n    // Initialize wrapper components and cache their templateRefs\n    effect(() => {\n      const schema = this.schema();\n\n      untracked(() => {\n        const finalWrappers = finalWrappersOf(schema);\n\n        outlet.ngTemplateOutlet = resolveWrapperTemplate(finalWrappers[0]);\n        outlet.ngTemplateOutletInjector = Injector.create({\n          providers: [],\n          parent: injector\n        });\n        outlet.ngOnChanges({ ngTemplateOutlet: {} as SafeAny });\n      });\n    });\n\n    // Update the outlet context when context change\n    effect(() => {\n      const baseContext = this.context();\n\n      untracked(() => {\n        const finalWrappers = finalWrappersOf(baseContext.schema);\n        // Build the chained context\n        const context = finalWrappers.reduceRight<WidgetWrapperContext | undefined>(\n          (nextContext, wrapper) => {\n            return {\n              ...baseContext,\n              templateRef: resolveWrapperTemplate(wrapper)!,\n              next: nextContext\n            };\n          },\n          undefined\n        );\n\n        outlet.ngTemplateOutletContext = context;\n      });\n    });\n  }\n}\n","import type { Provider } from '@angular/core';\n\nexport const enum FluentFormFeatureKind {\n  UIAdapter,\n  StaticExpression,\n  SchemaPatcher,\n  Preloading\n}\n\nexport interface FluentFormFeature<K extends FluentFormFeatureKind> {\n  kind: K;\n  providers: Provider[];\n}\n","import type { Provider } from '@angular/core';\nimport { type FluentFormFeature, FluentFormFeatureKind } from './interface';\n\nexport function makeFluentFeature<K extends FluentFormFeatureKind>(kind: K, providers: Provider[]): FluentFormFeature<K> {\n  return { kind, providers };\n}\n","import { APP_BOOTSTRAP_LISTENER, ApplicationRef, ComponentRef, inject, Injector } from '@angular/core';\nimport { WidgetTemplateRegistry } from '../services';\nimport { SCHEMA_MAP, WIDGET_MAP } from '../tokens';\nimport { makeFluentFeature } from './helper';\nimport { FluentFormFeatureKind, type FluentFormFeature } from './interface';\n\nexport function withPreloading(): FluentFormFeature<FluentFormFeatureKind.Preloading> {\n  return makeFluentFeature(FluentFormFeatureKind.Preloading, [\n    {\n      provide: APP_BOOTSTRAP_LISTENER,\n      multi: true,\n      useFactory: () => {\n        const injector = inject(Injector);\n        return (bootstrappedComponentRef: ComponentRef<unknown>) => {\n          const ref = injector.get(ApplicationRef);\n\n          if (bootstrappedComponentRef !== ref.components[0]) {\n            return;\n          }\n\n          const callbackRunner = typeof requestIdleCallback !== 'undefined' ? requestIdleCallback : setTimeout;\n          callbackRunner(() => {\n            const schemaMap = injector.get(SCHEMA_MAP);\n            const widgetMap = injector.get(WIDGET_MAP);\n            const widgetTemplateRegistry = injector.get(WidgetTemplateRegistry);\n            for (const [kind] of schemaMap.entries()) {\n              if (widgetMap.get(kind)) {\n                widgetTemplateRegistry.register(kind);\n              }\n            }\n          });\n        };\n      }\n    }\n  ]);\n}\n","import type { Provider } from '@angular/core';\nimport { type SchemaPatcher, provideSchemaPatcher } from '../patcher';\nimport { makeFluentFeature } from './helper';\nimport { type FluentFormFeature, FluentFormFeatureKind } from './interface';\n\nexport function withSchemaPatchers(patchers: (SchemaPatcher | SchemaPatcher[])[]): FluentFormFeature<FluentFormFeatureKind.SchemaPatcher> {\n  return makeFluentFeature(\n    FluentFormFeatureKind.SchemaPatcher,\n    patchers.flat().map<Provider>(patcher => provideSchemaPatcher(patcher))\n  );\n}\n","import { CodeEvaluator, DynamicCodeEvaluator } from '../services';\nimport { makeFluentFeature } from './helper';\nimport { type FluentFormFeature, FluentFormFeatureKind } from './interface';\n\nexport function withStaticExpression(): FluentFormFeature<FluentFormFeatureKind.StaticExpression> {\n  return makeFluentFeature(FluentFormFeatureKind.StaticExpression, [\n    {\n      provide: CodeEvaluator,\n      useExisting: DynamicCodeEvaluator\n    }\n  ]);\n}\n","import { Directive } from '@angular/core';\nimport { AbstractControl, FormControl } from '@angular/forms';\nimport type { AnyObject } from '@ngify/core';\nimport { TemplateRefHolder } from '../directives';\nimport type { AbstractSchema } from '../schemas';\n\nexport interface WidgetTemplateContext<S extends AbstractSchema, C extends AbstractControl = FormControl> {\n  schema: S;\n  control: C;\n  model: AnyObject;\n}\n\n@Directive()\nexport abstract class AbstractWidget<C> extends TemplateRefHolder<C> {\n  protected readonly contextGuard!: C;\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { FluentBindingDirective, FluentContextGuardDirective, FluentGridModule, FluentWidgetWrapperOutlet } from '../../directives';\nimport { ClassPipe, FluentColumnPipe, FluentControlPipe, FluentReactivePipe, RenderablePipe, StylePipe } from '../../pipes';\nimport type { RowComponentSchema } from '../../schemas';\nimport { AbstractWidget, type WidgetTemplateContext } from '../widget';\n\ntype RowWidgetTemplateContext = WidgetTemplateContext<RowComponentSchema, FormGroup>;\n\n/**\n * @internal\n */\n@Component({\n  imports: [\n    NgTemplateOutlet,\n    FluentGridModule,\n    FluentWidgetWrapperOutlet,\n    FluentBindingDirective,\n    FluentReactivePipe,\n    FluentContextGuardDirective,\n    FluentColumnPipe,\n    FluentControlPipe,\n    RenderablePipe,\n    StylePipe,\n    ClassPipe\n  ],\n  templateUrl: './row.widget.html'\n})\nexport class RowWidget extends AbstractWidget<RowWidgetTemplateContext> { }\n","<ng-template let-control=\"control\" let-schema=\"schema\" let-model=\"model\" [fluentContextGuard]=\"contextGuard\">\n  <fluent-row\n    [class]=\"schema.class | reactive: model : schema : control | class\"\n    [style]=\"schema.style | reactive: model : schema : control | style\"\n    [align]=\"schema.align\"\n    [justify]=\"schema.justify\"\n    [gap]=\"schema.gap\"\n    [fluentBinding]=\"{ schema, control, model }\">\n    <ng-template #colTemplate let-schema=\"schema\" let-control=\"control\" let-model=\"model\">\n      <fluent-col\n        [span]=\"schema.col | col: 'span'\"\n        [flex]=\"schema.col | col: 'flex'\"\n        [offset]=\"schema.col | col: 'offset'\"\n        [hidden]=\"schema.hidden | reactive: model : schema : control\">\n        <ng-container [fluentWidgetWrapperOutlet]=\"{ schema, control, model }\" />\n      </fluent-col>\n    </ng-template>\n\n    @for (subschema of schema.schemas; track subschema) {\n      @if (subschema | renderable) {\n        <ng-container\n          [ngTemplateOutlet]=\"colTemplate\"\n          [ngTemplateOutletContext]=\"{\n            control: (subschema.key | control: control),\n            schema: subschema,\n            model: model\n          }\" />\n      } @else {\n        <ng-container [fluentBinding]=\"{ schema: subschema, control: subschema.key | control: control, model }\" />\n      }\n    }\n  </fluent-row>\n</ng-template>\n","import type { FluentFormWidgetConfig } from '../features';\nimport { type RowComponentSchema, SchemaType } from '../schemas';\nimport { RowWidget } from './row/row.widget';\n\nexport function useRowWidget(): FluentFormWidgetConfig<RowComponentSchema> {\n  return {\n    kind: 'row',\n    type: SchemaType.ComponentContainer,\n    widget: RowWidget\n  };\n}\n","import type { Provider, Type } from '@angular/core';\nimport type { SafeAny } from '@ngify/core';\nimport type { SchemaConfig } from '../interfaces';\nimport { type SchemaPatchFn, provideSchemaPatcher } from '../patcher';\nimport type { AbstractSchema } from '../schemas';\nimport { SchemaKind, SchemaType } from '../schemas/interfaces';\nimport { SCHEMA_MAP, WIDGET_MAP } from '../tokens';\nimport { AbstractWidget, useRowWidget } from '../widgets';\n\ninterface DefaultExport<T> {\n  default: T;\n}\ntype MaybeDefaultExport<T> = T | DefaultExport<T>;\n\nexport interface FluentFormWidgetConfig<S extends AbstractSchema> extends SchemaConfig<S> {\n  kind: S['kind'];\n  widget?: Type<AbstractWidget<unknown>>;\n  loadWidget?: () => Promise<MaybeDefaultExport<Type<AbstractWidget<unknown>>>>;\n  /** Patch the schema, called when normalizing the schema. */\n  patch?: SchemaPatchFn<S>;\n}\n\nfunction isWrappedDefaultExport<T>(value: T | DefaultExport<T>): value is DefaultExport<T> {\n  // We use `in` here with a string key `'default'`, because we expect `DefaultExport` objects to be\n  // dynamically imported ES modules with a spec-mandated `default` key. Thus we don't expect that\n  // `default` will be a renamed property.\n  return value && typeof value === 'object' && 'default' in value;\n}\n\nfunction maybeUnwrapDefaultExport<T>(input: T | DefaultExport<T>): T {\n  return isWrappedDefaultExport(input) ? input.default : input;\n}\n\nexport function provideWidgetConfigs(configs: (FluentFormWidgetConfig<SafeAny> | FluentFormWidgetConfig<SafeAny>[])[]): Provider[] {\n  const _configs = configs.flat();\n  // Add built-in widgets.\n  _configs.push(useRowWidget());\n\n  return [\n    {\n      provide: WIDGET_MAP,\n      useFactory: () => {\n        const map = new Map<string, () => Promise<Type<AbstractWidget<unknown>>>>(\n          _configs.filter(config => config.widget || config.loadWidget).map(feature => [\n            feature.kind,\n            () => feature.widget\n              ? Promise.resolve(feature.widget!)\n              : feature.loadWidget!().then(maybeUnwrapDefaultExport)\n          ])\n        );\n\n        return map;\n      }\n    },\n    {\n      provide: SCHEMA_MAP,\n      useFactory: () => {\n        const map = new Map<string, SchemaConfig<SafeAny>>(\n          _configs.map(config => [\n            config.kind,\n            config\n          ])\n        );\n\n        // Add built-in schemas.\n        map.set(SchemaKind.Headless, { type: SchemaType.Control });\n        map.set(SchemaKind.Headful, { type: SchemaType.Control });\n        map.set(SchemaKind.Template, { type: SchemaType.Component });\n\n        return map;\n      }\n    },\n    // Component's built-in patcher.\n    _configs.filter(config => config.patch).map<Provider>(config =>\n      provideSchemaPatcher({\n        selector: config.kind,\n        patch: config.patch!\n      }))\n  ];\n}\n","import { NgModule } from '@angular/core';\nimport { FluentForm } from './components';\nimport { FluentNextWidgetWrapperOutlet, FluentTemplate } from './directives';\n\n@NgModule({\n  imports: [\n    FluentForm,\n    FluentTemplate,\n    FluentNextWidgetWrapperOutlet\n  ],\n  exports: [\n    FluentForm,\n    FluentTemplate,\n    FluentNextWidgetWrapperOutlet\n  ]\n})\nexport class FluentFormModule { }\n","import { makeEnvironmentProviders } from '@angular/core';\nimport { type FluentFormFeature, FluentFormFeatureKind } from './features';\n\nexport function provideFluentForm(...features: FluentFormFeature<FluentFormFeatureKind>[]) {\n  return makeEnvironmentProviders([features.map(feature => feature.providers)]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.FluentRowDirective","i2.FluentColDirective"],"mappings":"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"}