{"version":3,"file":"forty-cdk-toggle.mjs","sources":["../../../projects/forty-cdk/toggle/src/toggle.ts","../../../projects/forty-cdk/toggle/src/toggle-defaults.ts","../../../projects/forty-cdk/toggle/src/toggle-group-context.ts","../../../projects/forty-cdk/toggle/src/toggle-group.ts","../../../projects/forty-cdk/toggle/src/toggle-group-item.ts","../../../projects/forty-cdk/toggle/src/toggle-host-directive.ts","../../../projects/forty-cdk/toggle/src/toggle-group-host-directive.ts","../../../projects/forty-cdk/toggle/src/forty-cdk-toggle.ts"],"sourcesContent":["import { computed, Directive, model } from '@angular/core';\nimport type { FormCheckboxControl } from '@angular/forms/signals';\n\nimport { hostButtonType, FormUiControlBase, injectHiddenInput } from 'forty-cdk/core';\n\n/**\n * Headless implementation of the [WAI-ARIA Toggle Button pattern](https://www.w3.org/WAI/ARIA/apg/patterns/button/) —\n * a single-purpose `<button>` whose pressed state is reflected via\n * `aria-pressed`. Implements Angular's `FormCheckboxControl` from\n * `@angular/forms/signals` so a single toggle auto-wires with `[formField]`\n * (bold / italic, mute, favourite — the common `aria-pressed` form inputs).\n *\n * Apply on a native `<button>` so Enter / Space and disabled handling come\n * from the platform. The directive toggles its state on click and reflects\n * ARIA + `data-state` for styling.\n *\n * For a set of toggles with arrow-key navigation and single / multiple\n * selection semantics, use `[forToggleGroup]` + `[forToggleGroupItem]`.\n *\n * A read-only toggle is reflected as the boolean `data-readonly` styling hook\n * only: `aria-readonly` is not a supported property of `role=\"button\"`, so\n * there is no ARIA channel for the state on a toggle button. Click stays a\n * no-op and the button stays focusable. `required` is reflected the same way,\n * as `data-required`, for the same reason.\n *\n * @example\n * ```html\n * <button forToggle [(checked)]=\"bold\">B</button>\n *\n * <!-- With Signal Forms: -->\n * <button forToggle [formField]=\"prefs.bold\">B</button>\n * ```\n */\n@Directive({\n  selector: 'button[forToggle]',\n  exportAs: 'forToggle',\n  host: {\n    '[attr.type]': 'buttonType()',\n    '[attr.aria-pressed]': 'checked() ? \"true\" : \"false\"',\n    '[attr.aria-disabled]': 'effectiveDisabled() ? \"true\" : null',\n    '[attr.aria-invalid]': 'invalid() ? \"true\" : null',\n    '[attr.aria-busy]': 'pending() ? \"true\" : null',\n    '[attr.name]': 'name() || null',\n    '[attr.data-state]': 'checked() ? \"checked\" : \"unchecked\"',\n    '[attr.data-disabled]': 'effectiveDisabled() ? \"\" : null',\n    '[attr.data-required]': 'required() ? \"\" : null',\n    '[attr.data-readonly]': 'readonly() ? \"\" : null',\n    '(click)': 'onClick()',\n    '(blur)': 'markTouched()',\n  },\n})\nexport class ForToggle extends FormUiControlBase implements FormCheckboxControl {\n  protected readonly buttonType = hostButtonType();\n\n  /**\n   * Two-way bindable on/off state. Required by `FormCheckboxControl`, so the\n   * toggle auto-wires with `[formField]`; the host reflects it through\n   * `aria-pressed` and `data-state` (still a toggle button — only the value's\n   * name is `checked`). The `model()` change emitter (`(checkedChange)`) fires\n   * only on internal transitions (user click), never on consumer writes via\n   * `[(checked)]`.\n   */\n  readonly checked = model<boolean>(false);\n\n  constructor() {\n    super();\n    injectHiddenInput({\n      name: this.name,\n      values: computed(() => (this.checked() ? ['on'] : [])),\n      disabled: this.effectiveDisabled,\n    });\n  }\n\n  protected onClick(): void {\n    if (this.effectiveDisabled() || this.readonly()) {\n      return;\n    }\n    this.checked.update((v) => !v);\n  }\n}\n","import { type Provider } from '@angular/core';\n\nimport { createDefaults } from 'forty-cdk/core';\n\n/**\n * Defaults inherited by descendant toggle groups in the surrounding injector\n * scope. Configure with `provideForToggleDefaults` either at the application\n * root or in any component's `providers` array; partial overrides merge with\n * the parent scope.\n */\nexport interface ForToggleDefaults {\n  /**\n   * Whether arrow navigation wraps around past the first / last enabled\n   * toggle-group item. Mirrors `ForRadioGroup`'s `loop` default.\n   */\n  loop: boolean;\n}\n\n/**\n * Library fallback for toggle defaults, read at the root injector when no\n * consumer has called `provideForToggleDefaults`. Exported for the shared defaults\n * contract spec; not re-exported from the primitive's public entry.\n */\nexport const FOR_TOGGLE_FALLBACK_DEFAULTS: ForToggleDefaults = {\n  loop: true,\n};\n\nconst { token, provideDefaults } = createDefaults<ForToggleDefaults>(\n  'FOR_TOGGLE_DEFAULTS',\n  FOR_TOGGLE_FALLBACK_DEFAULTS,\n);\n\n/** Token holding the resolved toggle defaults for the current scope. */\nexport const FOR_TOGGLE_DEFAULTS = token;\n\n/**\n * Configures forty-cdk toggle defaults for this injector scope. Partial\n * overrides inherit unspecified keys from the parent scope (or library\n * defaults at the root).\n */\nexport function provideForToggleDefaults(defaults: Partial<ForToggleDefaults> = {}): Provider[] {\n  return provideDefaults(defaults);\n}\n","import { inject, InjectionToken, type Signal } from '@angular/core';\n\nimport {\n  type CollectionHandle,\n  type ListNavigationAction,\n  orphanContextError,\n  type RovingTabindex,\n  type WritingDirection,\n} from 'forty-cdk/core';\n\n/**\n * Per-item handle stored in the group's `Collection`. The directive\n * registers itself on construction so the group can compute selection,\n * roving tabindex, and arrow-key navigation in DOM order.\n */\nexport interface ForToggleGroupItemHandle extends CollectionHandle {\n  /**\n   * Narrowed from {@link CollectionHandle}'s `Node`: the group focuses the item\n   * and queries it against the roving-tabindex tracker.\n   */\n  readonly host: HTMLElement;\n  readonly value: Signal<string>;\n  readonly disabled: Signal<boolean>;\n}\n\n/**\n * Coordination contract owned by `ForToggleGroup`. Items read selection\n * and navigation policy from here and call back through `toggle` and\n * `navigate` to drive state changes.\n */\nexport interface ForToggleGroupContext {\n  /**\n   * The current selection, as a read-only signal. Mutate it through `toggle`\n   * or the root's `[(value)]` binding — a direct write would bypass the group's\n   * disabled guard and single/multiple mode rules.\n   */\n  readonly value: Signal<readonly string[]>;\n  readonly multiple: Signal<boolean>;\n  /**\n   * The group's effective disabled — its own `disabled` input OR'd with a\n   * surrounding disabled `[forFieldset]`. Each item ORs this into its own\n   * `effectiveDisabled`, so a disabled group (or fieldset) disables every item.\n   */\n  readonly effectiveDisabled: Signal<boolean>;\n  readonly orientation: Signal<'horizontal' | 'vertical'>;\n  readonly dir: Signal<WritingDirection>;\n  readonly loop: Signal<boolean>;\n\n  /**\n   * Roving-tabindex tracker. Items call `setActive` on `(focus)` and prefer\n   * `active()` in their tabindex computed so the tab stop follows the last\n   * focused item (APG re-entry), matching Tabs / Tree.\n   */\n  readonly roving: RovingTabindex;\n\n  isSelected(value: string): boolean;\n  toggle(value: string): void;\n\n  navigate(currentItem: HTMLElement, action: ListNavigationAction): void;\n  isFirstFocusableItem(el: HTMLElement): boolean;\n\n  registerItem(handle: ForToggleGroupItemHandle): void;\n  unregisterItem(handle: ForToggleGroupItemHandle): void;\n}\n\nexport const FOR_TOGGLE_GROUP_CONTEXT = new InjectionToken<ForToggleGroupContext>(\n  'FOR_TOGGLE_GROUP_CONTEXT',\n);\n\nexport function injectToggleGroupContext(piece: string): ForToggleGroupContext {\n  const ctx = inject(FOR_TOGGLE_GROUP_CONTEXT, { optional: true });\n  if (!ctx) {\n    throw orphanContextError({\n      code: 'FORCDK-TOGGLE-001',\n      piece,\n      root: '[forToggleGroup]',\n      token: 'FOR_TOGGLE_GROUP_CONTEXT',\n    });\n  }\n  return ctx;\n}\n","import {\n  booleanAttribute,\n  computed,\n  Directive,\n  ElementRef,\n  inject,\n  input,\n  model,\n} from '@angular/core';\nimport type { FormValueControl } from '@angular/forms/signals';\n\nimport {\n  Collection,\n  firstEnabledHost,\n  FormUiControlBase,\n  injectHiddenInput,\n  type ListNavigationAction,\n  moveIndex,\n  type WritingDirection,\n  RovingTabindex,\n  injectTextDirection,\n} from 'forty-cdk/core';\nimport { FOR_TOGGLE_DEFAULTS } from './toggle-defaults';\nimport {\n  FOR_TOGGLE_GROUP_CONTEXT,\n  type ForToggleGroupContext,\n  type ForToggleGroupItemHandle,\n} from './toggle-group-context';\n\n/**\n * Headless group of toggle buttons: a `role=\"group\"` container whose items\n * each carry `aria-pressed`, modelled on the\n * [WAI-ARIA Button pattern](https://www.w3.org/WAI/ARIA/apg/patterns/button/)\n * (toggle-button variant). Owns the\n * selected-values set, navigation policy, and the registry of\n * `[forToggleGroupItem]` children. Implements\n * `FormValueControl<readonly string[]>` from `@angular/forms/signals` for\n * `[formField]` auto-wiring. (The Toolbar pattern applies only when a group is\n * nested inside `[forToolbar]`; see the composition note on\n * `ForToggleGroupItem`.)\n *\n * Two selection modes:\n * - multiple (`multiple=true`): clicking an item flips its presence in\n *   `value`. Matches a \"formatting toolbar\" (Bold, Italic, Underline).\n * - single (`multiple=false`, default): clicking selects exclusively;\n *   clicking an already-selected item de-selects it (you can land on `[]`).\n *   Matches an \"alignment toolbar\" (Left, Center, Right) where users may\n *   want to clear the choice.\n *\n * `value` is always `readonly string[]` so consumers can flip `multiple`\n * without re-typing their state. In single mode the array carries 0 or\n * 1 entries.\n *\n * Roving tabindex: only one item is in the Tab sequence at a time. With\n * a non-empty selection, the first selected item; otherwise the first\n * enabled item in DOM order. Arrow keys move focus (no\n * selection-on-focus — toggles always require an explicit click).\n *\n * `ForToggle` (the standalone single-button toggle) is also a form\n * control, but a `FormCheckboxControl` carrying a single boolean value.\n * Use `ForToggleGroup` (in single or multiple mode) when you need a set\n * of pressed values as the form value.\n *\n * A read-only group is reflected as the boolean `data-readonly` styling hook\n * on this root only: `aria-readonly` is a supported property of neither\n * `role=\"group\"` nor the items' `role=\"button\"`, so there is no ARIA channel\n * for the state. Clicks stay no-ops and the items stay focusable.\n *\n * `required` is reflected the same way, as `data-required` on the root.\n */\n@Directive({\n  selector: '[forToggleGroup]',\n  exportAs: 'forToggleGroup',\n  host: {\n    role: 'group',\n    '[attr.aria-disabled]': 'effectiveDisabled() ? \"true\" : null',\n    '[attr.aria-invalid]': 'invalid() ? \"true\" : null',\n    '[attr.aria-busy]': 'pending() ? \"true\" : null',\n    '[attr.data-orientation]': 'orientation()',\n    '[attr.data-disabled]': 'effectiveDisabled() ? \"\" : null',\n    '[attr.data-required]': 'required() ? \"\" : null',\n    '[attr.data-readonly]': 'readonly() ? \"\" : null',\n    '[attr.dir]': 'dir()',\n    '(focusout)': 'onFocusOut($event)',\n  },\n  providers: [{ provide: FOR_TOGGLE_GROUP_CONTEXT, useExisting: ForToggleGroup }],\n})\nexport class ForToggleGroup\n  extends FormUiControlBase\n  implements FormValueControl<readonly string[]>, ForToggleGroupContext\n{\n  readonly #host = inject<ElementRef<HTMLElement>>(ElementRef);\n  readonly #defaults = inject(FOR_TOGGLE_DEFAULTS);\n\n  /**\n   * Two-way bindable. The currently pressed values, in arbitrary order.\n   * In single mode the array holds 0 or 1 entries. The `model()` change\n   * emitter (`(valueChange)`) fires only on internal transitions (item\n   * click), never on consumer writes via `[(value)]`. Required by\n   * `FormValueControl<readonly string[]>`.\n   */\n  readonly value = model<readonly string[]>([]);\n\n  /**\n   * When false (default), only one item can be pressed at a time. Clicking\n   * an already-pressed item clears the selection. When true, clicks toggle\n   * each item independently.\n   */\n  readonly multiple = input(false, { transform: booleanAttribute });\n\n  /** Layout direction for keyboard navigation. */\n  readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\n\n  /**\n   * Reading direction. RTL swaps ArrowLeft/ArrowRight. When unset (default\n   * `null`), the inherited ambient direction is resolved from the nearest\n   * ancestor carrying a `dir` attribute (or `<html dir>`), defaulting to\n   * `'ltr'`. An explicit `[dir]` always wins and the resolved value is\n   * reflected to the host `dir` attribute.\n   */\n  readonly _dirInput = input<WritingDirection | null>(null, { alias: 'dir' });\n  readonly dir = injectTextDirection(this._dirInput);\n\n  /**\n   * When true (default), arrow nav wraps at the ends. The default is read\n   * from `provideForToggleDefaults` for the surrounding scope.\n   */\n  readonly loop = input(this.#defaults.loop, { transform: booleanAttribute });\n\n  /**\n   * Roving-tabindex tracker. Items promote themselves to active on `(focus)`\n   * and read `active()` in their tabindex computed, so re-entry (Shift+Tab\n   * back into the group) restores the last focused item — matching Tabs /\n   * Tree. Before any focus, `active()` is `null` and the tabindex falls back\n   * to the first-selected / first-enabled entry point.\n   */\n  readonly roving = new RovingTabindex(() => this.#items.items());\n\n  readonly #items = new Collection<ForToggleGroupItemHandle>();\n\n  readonly #firstSelectedHost = computed<HTMLElement | null>(() => {\n    const selected = this.value();\n    if (selected.length === 0) {\n      return null;\n    }\n    for (const item of this.#items.items()) {\n      if (!item.disabled() && selected.includes(item.value())) {\n        return item.host;\n      }\n    }\n    return null;\n  });\n\n  readonly #firstEnabledHost = computed(() => firstEnabledHost(this.#items.items()));\n\n  constructor() {\n    super();\n    injectHiddenInput({\n      name: this.name,\n      values: this.value,\n      disabled: this.effectiveDisabled,\n    });\n  }\n\n  /**\n   * Move focus to a toggle item, implementing `FormValueControl.focus` from\n   * `@angular/forms/signals`. Without this override Signal Forms would focus the\n   * host `role=\"group\"` wrapper — which is not focusable — so focus-on-error\n   * would silently go nowhere. Targets the first selected item's host when one\n   * is pressed, else the first enabled item's host; no-op when disabled or when\n   * no enabled item exists.\n   */\n  override focus(options?: FocusOptions): void {\n    if (this.effectiveDisabled()) {\n      return;\n    }\n    const target = this.#firstSelectedHost() ?? this.#firstEnabledHost();\n    target?.focus(options);\n  }\n\n  isSelected(v: string): boolean {\n    return this.value().includes(v);\n  }\n\n  toggle(v: string): void {\n    if (this.effectiveDisabled() || this.readonly()) {\n      return;\n    }\n    const current = this.value();\n    const isSelected = current.includes(v);\n    if (this.multiple()) {\n      this.value.set(isSelected ? current.filter((x) => x !== v) : [...current, v]);\n      return;\n    }\n    // Single: clicking the pressed item clears, otherwise replace.\n    this.value.set(isSelected ? [] : [v]);\n  }\n\n  navigate(currentItem: HTMLElement, action: ListNavigationAction): void {\n    if (this.effectiveDisabled()) {\n      return;\n    }\n    const items = this.#items.items();\n    if (items.length === 0) {\n      return;\n    }\n    const currentIndex = items.findIndex((item) => item.host === currentItem);\n    const next = moveIndex(currentIndex < 0 ? 0 : currentIndex, items.length, action, {\n      loop: this.loop(),\n      isDisabled: (i) => items[i]!.disabled(),\n    });\n    if (next === null) {\n      return;\n    }\n    items[next]?.host.focus();\n  }\n\n  /**\n   * Tabindex policy: with at least one selection, the first selected item\n   * is the entry point; otherwise the first enabled item in DOM order.\n   */\n  isFirstFocusableItem(el: HTMLElement): boolean {\n    const firstSelected = this.#firstSelectedHost();\n    if (firstSelected) {\n      return firstSelected === el;\n    }\n    return this.#firstEnabledHost() === el;\n  }\n\n  registerItem(handle: ForToggleGroupItemHandle): void {\n    this.#items.register(handle);\n  }\n\n  unregisterItem(handle: ForToggleGroupItemHandle): void {\n    this.#items.unregister(handle);\n    this.roving.unregister(handle.host);\n  }\n\n  protected onFocusOut(event: FocusEvent): void {\n    const next = event.relatedTarget as HTMLElement | null;\n    if (next && this.#host.nativeElement.contains(next)) {\n      return;\n    }\n    this.markTouched();\n  }\n}\n","import { booleanAttribute, computed, Directive, ElementRef, inject, input } from '@angular/core';\n\nimport {\n  hostButtonType,\n  registerHandle,\n  resolveListNavigation,\n  FOR_HOST_ROVING_CONTEXT,\n} from 'forty-cdk/core';\nimport { injectToggleGroupContext } from './toggle-group-context';\n\n/**\n * One toggle button inside a `[forToggleGroup]`. Apply on a `<button>`.\n *\n * Pressed state is derived from the group's `value`. Click goes through\n * `group.toggle(value())` so single-vs-multiple semantics live in the\n * group, not the item.\n *\n * Roving tabindex: only one item is in the Tab sequence at a time\n * (the first selected, or the first enabled when nothing is pressed).\n * Arrow keys move focus inside the group; the consumer never has to\n * wire keyboard navigation manually.\n *\n * **Composition with [forToolbar]:** when the group is nested inside a\n * `[forToolbar]`, focus management is delegated to the toolbar — the\n * tabindex policy and arrow-key navigation flow across all toolbar items\n * (buttons, links, toggle items) instead of staying confined to the\n * group. Selection still lives on the group; only focus is shared.\n */\n@Directive({\n  selector: 'button[forToggleGroupItem]',\n  exportAs: 'forToggleGroupItem',\n  host: {\n    '[attr.type]': 'buttonType()',\n    '[attr.aria-pressed]': 'pressed() ? \"true\" : \"false\"',\n    '[attr.aria-disabled]': 'effectiveDisabled() ? \"true\" : null',\n    '[attr.tabindex]': 'tabindex()',\n    '[attr.data-state]': 'pressed() ? \"checked\" : \"unchecked\"',\n    '[attr.data-disabled]': 'effectiveDisabled() ? \"\" : null',\n    '[attr.data-orientation]': 'group.orientation()',\n    '(click)': 'onClick()',\n    '(focus)': 'onFocus()',\n    '(keydown)': 'onKeyDown($event)',\n  },\n})\nexport class ForToggleGroupItem {\n  protected readonly buttonType = hostButtonType();\n\n  protected readonly group = injectToggleGroupContext('ForToggleGroupItem');\n  readonly #rovingHost = inject(FOR_HOST_ROVING_CONTEXT, { optional: true, skipSelf: true });\n  readonly #host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n  /** Identifier added to / removed from the group's `value`. Required. */\n  readonly value = input.required<string>();\n\n  /** Per-item disabled (in addition to the group's `disabled`). */\n  readonly disabled = input(false, { transform: booleanAttribute });\n\n  readonly pressed = computed(() => this.group.isSelected(this.value()));\n\n  readonly effectiveDisabled = computed(\n    () =>\n      this.disabled() || this.group.effectiveDisabled() || (this.#rovingHost?.disabled() ?? false),\n  );\n\n  /**\n   * Tabindex per APG: once any item has been focused, the roving tracker owns\n   * the tab stop so re-entry restores the last focused item; before that, fall\n   * back to the entry point (first selected / first enabled). The roving host\n   * is the toolbar when nested inside one, otherwise the group. Disabled items\n   * are always -1.\n   */\n  readonly tabindex = computed<-1 | 0>(() => {\n    if (this.effectiveDisabled()) {\n      return -1;\n    }\n    const owner = this.#rovingHost ?? this.group;\n    if (owner.roving.hasActive()) {\n      return owner.roving.tabindexFor(this.#host.nativeElement);\n    }\n    return owner.isFirstFocusableItem(this.#host.nativeElement) ? 0 : -1;\n  });\n\n  constructor() {\n    const groupHandle = {\n      host: this.#host.nativeElement,\n      value: this.value,\n      disabled: this.effectiveDisabled,\n    };\n    registerHandle(\n      groupHandle,\n      (h) => this.group.registerItem(h),\n      (h) => this.group.unregisterItem(h),\n    );\n\n    const rovingHost = this.#rovingHost;\n    if (rovingHost) {\n      const rovingHandle = {\n        host: this.#host.nativeElement,\n        disabled: this.effectiveDisabled,\n      };\n      registerHandle(\n        rovingHandle,\n        (h) => rovingHost.registerItem(h),\n        (h) => rovingHost.unregisterItem(h),\n      );\n    }\n  }\n\n  protected onClick(): void {\n    if (this.effectiveDisabled()) {\n      return;\n    }\n    this.group.toggle(this.value());\n  }\n\n  protected onFocus(): void {\n    if (this.effectiveDisabled()) {\n      return;\n    }\n    const owner = this.#rovingHost ?? this.group;\n    owner.roving.setActive(this.#host.nativeElement);\n  }\n\n  protected onKeyDown(event: KeyboardEvent): void {\n    if (this.effectiveDisabled()) {\n      return;\n    }\n    const owner = this.#rovingHost ?? this.group;\n    const action = resolveListNavigation(event, {\n      orientation: owner.orientation(),\n      dir: owner.dir(),\n    });\n    if (!action) {\n      return;\n    }\n    event.preventDefault();\n    owner.navigate(this.#host.nativeElement, action);\n  }\n}\n","/**\n * Exact public names of every `ForToggle` input, its models included. Spread it into the\n * `inputs` array of a `hostDirectives` entry so a wrapper component re-exposes the\n * primitive's full surface — the Signal Forms members `[formField]` binds among them —\n * without hand-maintaining the list. Always spread into an inline object literal as shown\n * below: the literal is what keeps the entry statically analyzable for consumers compiling\n * against the published package. An anti-drift spec fails when this list no longer matches\n * the directive's actual API. See `docs/wrapping-form-primitives.md` for both supported\n * wrapping patterns.\n *\n * @example\n * ```ts\n * @Component({\n *   selector: 'button[myToggle]',\n *   template: '',\n *   hostDirectives: [\n *     {\n *       directive: ForToggle,\n *       inputs: [...FOR_TOGGLE_HOST_DIRECTIVE_INPUTS],\n *       outputs: [...FOR_TOGGLE_HOST_DIRECTIVE_OUTPUTS],\n *     },\n *   ],\n * })\n * export class MyToggle {}\n * ```\n */\nexport const FOR_TOGGLE_HOST_DIRECTIVE_INPUTS = [\n  'checked',\n  'dirty',\n  'disabled',\n  'errors',\n  'invalid',\n  'name',\n  'pending',\n  'readonly',\n  'required',\n  'touched',\n] as const;\n\n/**\n * Exact public names of every `ForToggle` output, the Signal Forms `touch` output\n * included. Spread it into the `outputs` array of the same `hostDirectives` entry as\n * {@link FOR_TOGGLE_HOST_DIRECTIVE_INPUTS}.\n */\nexport const FOR_TOGGLE_HOST_DIRECTIVE_OUTPUTS = [\n  'checkedChange',\n  'touchedChange',\n  'touch',\n] as const;\n","/**\n * Exact public names of every `ForToggleGroup` input, its models included. Spread it into the\n * `inputs` array of a `hostDirectives` entry so a wrapper component re-exposes the\n * primitive's full surface — the Signal Forms members `[formField]` binds among them —\n * without hand-maintaining the list. Always spread into an inline object literal as shown\n * below: the literal is what keeps the entry statically analyzable for consumers compiling\n * against the published package. An anti-drift spec fails when this list no longer matches\n * the directive's actual API. See `docs/wrapping-form-primitives.md` for both supported\n * wrapping patterns.\n *\n * @example\n * ```ts\n * @Component({\n *   selector: 'div[myToggleGroup]',\n *   template: '',\n *   hostDirectives: [\n *     {\n *       directive: ForToggleGroup,\n *       inputs: [...FOR_TOGGLE_GROUP_HOST_DIRECTIVE_INPUTS],\n *       outputs: [...FOR_TOGGLE_GROUP_HOST_DIRECTIVE_OUTPUTS],\n *     },\n *   ],\n * })\n * export class MyToggleGroup {}\n * ```\n */\nexport const FOR_TOGGLE_GROUP_HOST_DIRECTIVE_INPUTS = [\n  'value',\n  'dir',\n  'dirty',\n  'disabled',\n  'errors',\n  'invalid',\n  'loop',\n  'multiple',\n  'name',\n  'orientation',\n  'pending',\n  'readonly',\n  'required',\n  'touched',\n] as const;\n\n/**\n * Exact public names of every `ForToggleGroup` output, the Signal Forms `touch` output\n * included. Spread it into the `outputs` array of the same `hostDirectives` entry as\n * {@link FOR_TOGGLE_GROUP_HOST_DIRECTIVE_INPUTS}.\n */\nexport const FOR_TOGGLE_GROUP_HOST_DIRECTIVE_OUTPUTS = [\n  'valueChange',\n  'touchedChange',\n  'touch',\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;AAKA;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BG;AAmBG,MAAO,SAAU,SAAQ,iBAAiB,CAAA;IAC3B,UAAU,GAAG,cAAc,EAAE;AAEhD;;;;;;;AAOG;IACM,OAAO,GAAG,KAAK,CAAU,KAAK;gFAAC;AAExC,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;AACP,QAAA,iBAAiB,CAAC;YAChB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,QAAQ,CAAC,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YACtD,QAAQ,EAAE,IAAI,CAAC,iBAAiB;AACjC,SAAA,CAAC;IACJ;IAEU,OAAO,GAAA;QACf,IAAI,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YAC/C;QACF;AACA,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAChC;uGA3BW,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAT,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,MAAA,EAAA,eAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,kCAAA,EAAA,oBAAA,EAAA,uCAAA,EAAA,mBAAA,EAAA,6BAAA,EAAA,gBAAA,EAAA,6BAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,yCAAA,EAAA,oBAAA,EAAA,mCAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAT,SAAS,EAAA,UAAA,EAAA,CAAA;kBAlBrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,IAAI,EAAE;AACJ,wBAAA,aAAa,EAAE,cAAc;AAC7B,wBAAA,qBAAqB,EAAE,8BAA8B;AACrD,wBAAA,sBAAsB,EAAE,qCAAqC;AAC7D,wBAAA,qBAAqB,EAAE,2BAA2B;AAClD,wBAAA,kBAAkB,EAAE,2BAA2B;AAC/C,wBAAA,aAAa,EAAE,gBAAgB;AAC/B,wBAAA,mBAAmB,EAAE,qCAAqC;AAC1D,wBAAA,sBAAsB,EAAE,iCAAiC;AACzD,wBAAA,sBAAsB,EAAE,wBAAwB;AAChD,wBAAA,sBAAsB,EAAE,wBAAwB;AAChD,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,QAAQ,EAAE,eAAe;AAC1B,qBAAA;AACF,iBAAA;;;AChCD;;;;AAIG;AACI,MAAM,4BAA4B,GAAsB;AAC7D,IAAA,IAAI,EAAE,IAAI;CACX;AAED,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,cAAc,CAC/C,qBAAqB,EACrB,4BAA4B,CAC7B;AAED;AACO,MAAM,mBAAmB,GAAG;AAEnC;;;;AAIG;AACG,SAAU,wBAAwB,CAAC,QAAA,GAAuC,EAAE,EAAA;AAChF,IAAA,OAAO,eAAe,CAAC,QAAQ,CAAC;AAClC;;MCuBa,wBAAwB,GAAG,IAAI,cAAc,CACxD,0BAA0B;AAGtB,SAAU,wBAAwB,CAAC,KAAa,EAAA;AACpD,IAAA,MAAM,GAAG,GAAG,MAAM,CAAC,wBAAwB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAChE,IAAI,CAAC,GAAG,EAAE;AACR,QAAA,MAAM,kBAAkB,CAAC;AACvB,YAAA,IAAI,EAAE,mBAAmB;YACzB,KAAK;AACL,YAAA,IAAI,EAAE,kBAAkB;AACxB,YAAA,KAAK,EAAE,0BAA0B;AAClC,SAAA,CAAC;IACJ;AACA,IAAA,OAAO,GAAG;AACZ;;ACnDA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCG;AAkBG,MAAO,cACX,SAAQ,iBAAiB,CAAA;AAGhB,IAAA,KAAK,GAAG,MAAM,CAA0B,UAAU,CAAC;AACnD,IAAA,SAAS,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAEhD;;;;;;AAMG;IACM,KAAK,GAAG,KAAK,CAAoB,EAAE;8EAAC;AAE7C;;;;AAIG;IACM,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;IAGxD,WAAW,GAAG,KAAK,CAA4B,YAAY;oFAAC;AAErE;;;;;;AAMG;IACM,SAAS,GAAG,KAAK,CAA0B,IAAI,iFAAI,KAAK,EAAE,KAAK,EAAA,CAAG;AAClE,IAAA,GAAG,GAAG,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC;AAElD;;;AAGG;AACM,IAAA,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,MAAA,EAAA,8BAAA,EAAA,CAAA,EAAI,SAAS,EAAE,gBAAgB,GAAG;AAE3E;;;;;;AAMG;AACM,IAAA,MAAM,GAAG,IAAI,cAAc,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;AAEtD,IAAA,MAAM,GAAG,IAAI,UAAU,EAA4B;AAEnD,IAAA,kBAAkB,GAAG,QAAQ,CAAqB,MAAK;AAC9D,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE;AAC7B,QAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AACzB,YAAA,OAAO,IAAI;QACb;QACA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE;AACtC,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE;gBACvD,OAAO,IAAI,CAAC,IAAI;YAClB;QACF;AACA,QAAA,OAAO,IAAI;IACb,CAAC;2FAAC;AAEO,IAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAM,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;0FAAC;AAElF,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;AACP,QAAA,iBAAiB,CAAC;YAChB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,KAAK;YAClB,QAAQ,EAAE,IAAI,CAAC,iBAAiB;AACjC,SAAA,CAAC;IACJ;AAEA;;;;;;;AAOG;AACM,IAAA,KAAK,CAAC,OAAsB,EAAA;AACnC,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;YAC5B;QACF;QACA,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,EAAE,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACpE,QAAA,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IACxB;AAEA,IAAA,UAAU,CAAC,CAAS,EAAA;QAClB,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IACjC;AAEA,IAAA,MAAM,CAAC,CAAS,EAAA;QACd,IAAI,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YAC/C;QACF;AACA,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE;QAC5B,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;AACtC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnB,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC;YAC7E;QACF;;AAEA,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACvC;IAEA,QAAQ,CAAC,WAAwB,EAAE,MAA4B,EAAA;AAC7D,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;YAC5B;QACF;QACA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;AACjC,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YACtB;QACF;AACA,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC;QACzE,MAAM,IAAI,GAAG,SAAS,CAAC,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,YAAY,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE;AAChF,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AACjB,YAAA,UAAU,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAE,CAAC,QAAQ,EAAE;AACxC,SAAA,CAAC;AACF,QAAA,IAAI,IAAI,KAAK,IAAI,EAAE;YACjB;QACF;QACA,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE;IAC3B;AAEA;;;AAGG;AACH,IAAA,oBAAoB,CAAC,EAAe,EAAA;AAClC,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,EAAE;QAC/C,IAAI,aAAa,EAAE;YACjB,OAAO,aAAa,KAAK,EAAE;QAC7B;AACA,QAAA,OAAO,IAAI,CAAC,iBAAiB,EAAE,KAAK,EAAE;IACxC;AAEA,IAAA,YAAY,CAAC,MAAgC,EAAA;AAC3C,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC9B;AAEA,IAAA,cAAc,CAAC,MAAgC,EAAA;AAC7C,QAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC;IACrC;AAEU,IAAA,UAAU,CAAC,KAAiB,EAAA;AACpC,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,aAAmC;AACtD,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YACnD;QACF;QACA,IAAI,CAAC,WAAW,EAAE;IACpB;uGA7JW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,uCAAA,EAAA,mBAAA,EAAA,6BAAA,EAAA,gBAAA,EAAA,6BAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,mCAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,UAAA,EAAA,OAAA,EAAA,EAAA,EAAA,SAAA,EAFd,CAAC,EAAE,OAAO,EAAE,wBAAwB,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAEpE,cAAc,EAAA,UAAA,EAAA,CAAA;kBAjB1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,IAAI,EAAE,OAAO;AACb,wBAAA,sBAAsB,EAAE,qCAAqC;AAC7D,wBAAA,qBAAqB,EAAE,2BAA2B;AAClD,wBAAA,kBAAkB,EAAE,2BAA2B;AAC/C,wBAAA,yBAAyB,EAAE,eAAe;AAC1C,wBAAA,sBAAsB,EAAE,iCAAiC;AACzD,wBAAA,sBAAsB,EAAE,wBAAwB;AAChD,wBAAA,sBAAsB,EAAE,wBAAwB;AAChD,wBAAA,YAAY,EAAE,OAAO;AACrB,wBAAA,YAAY,EAAE,oBAAoB;AACnC,qBAAA;oBACD,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,wBAAwB,EAAE,WAAW,EAAA,cAAgB,EAAE,CAAC;AAChF,iBAAA;;;AC5ED;;;;;;;;;;;;;;;;;AAiBG;MAiBU,kBAAkB,CAAA;IACV,UAAU,GAAG,cAAc,EAAE;AAE7B,IAAA,KAAK,GAAG,wBAAwB,CAAC,oBAAoB,CAAC;AAChE,IAAA,WAAW,GAAG,MAAM,CAAC,uBAAuB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACjF,IAAA,KAAK,GAAG,MAAM,CAA0B,UAAU,CAAC;;IAGnD,KAAK,GAAG,KAAK,CAAC,QAAQ;8EAAU;;IAGhC,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAExD,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gFAAC;IAE7D,iBAAiB,GAAG,QAAQ,CACnC,MACE,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,IAAI,KAAK,CAAC;0FAC/F;AAED;;;;;;AAMG;AACM,IAAA,QAAQ,GAAG,QAAQ,CAAS,MAAK;AACxC,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;YAC5B,OAAO,CAAC,CAAC;QACX;QACA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK;AAC5C,QAAA,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE;AAC5B,YAAA,OAAO,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;QAC3D;AACA,QAAA,OAAO,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACtE,CAAC;iFAAC;AAEF,IAAA,WAAA,GAAA;AACE,QAAA,MAAM,WAAW,GAAG;AAClB,YAAA,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa;YAC9B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,IAAI,CAAC,iBAAiB;SACjC;AACD,QAAA,cAAc,CACZ,WAAW,EACX,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,EACjC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CACpC;AAED,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW;QACnC,IAAI,UAAU,EAAE;AACd,YAAA,MAAM,YAAY,GAAG;AACnB,gBAAA,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa;gBAC9B,QAAQ,EAAE,IAAI,CAAC,iBAAiB;aACjC;YACD,cAAc,CACZ,YAAY,EACZ,CAAC,CAAC,KAAK,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,EACjC,CAAC,CAAC,KAAK,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,CACpC;QACH;IACF;IAEU,OAAO,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;YAC5B;QACF;QACA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IACjC;IAEU,OAAO,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;YAC5B;QACF;QACA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK;QAC5C,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;IAClD;AAEU,IAAA,SAAS,CAAC,KAAoB,EAAA;AACtC,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;YAC5B;QACF;QACA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK;AAC5C,QAAA,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,EAAE;AAC1C,YAAA,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE;AAChC,YAAA,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE;AACjB,SAAA,CAAC;QACF,IAAI,CAAC,MAAM,EAAE;YACX;QACF;QACA,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,MAAM,CAAC;IAClD;uGA7FW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,OAAA,EAAA,WAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,kCAAA,EAAA,oBAAA,EAAA,uCAAA,EAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,yCAAA,EAAA,oBAAA,EAAA,mCAAA,EAAA,uBAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAhB9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,4BAA4B;AACtC,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,IAAI,EAAE;AACJ,wBAAA,aAAa,EAAE,cAAc;AAC7B,wBAAA,qBAAqB,EAAE,8BAA8B;AACrD,wBAAA,sBAAsB,EAAE,qCAAqC;AAC7D,wBAAA,iBAAiB,EAAE,YAAY;AAC/B,wBAAA,mBAAmB,EAAE,qCAAqC;AAC1D,wBAAA,sBAAsB,EAAE,iCAAiC;AACzD,wBAAA,yBAAyB,EAAE,qBAAqB;AAChD,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,WAAW,EAAE,mBAAmB;AACjC,qBAAA;AACF,iBAAA;;;AC3CD;;;;;;;;;;;;;;;;;;;;;;;;;AAyBG;AACI,MAAM,gCAAgC,GAAG;IAC9C,SAAS;IACT,OAAO;IACP,UAAU;IACV,QAAQ;IACR,SAAS;IACT,MAAM;IACN,SAAS;IACT,UAAU;IACV,UAAU;IACV,SAAS;;AAGX;;;;AAIG;AACI,MAAM,iCAAiC,GAAG;IAC/C,eAAe;IACf,eAAe;IACf,OAAO;;;AC/CT;;;;;;;;;;;;;;;;;;;;;;;;;AAyBG;AACI,MAAM,sCAAsC,GAAG;IACpD,OAAO;IACP,KAAK;IACL,OAAO;IACP,UAAU;IACV,QAAQ;IACR,SAAS;IACT,MAAM;IACN,UAAU;IACV,MAAM;IACN,aAAa;IACb,SAAS;IACT,UAAU;IACV,UAAU;IACV,SAAS;;AAGX;;;;AAIG;AACI,MAAM,uCAAuC,GAAG;IACrD,aAAa;IACb,eAAe;IACf,OAAO;;;ACnDT;;AAEG;;;;"}