{"version":3,"file":"js-smart-ng-kit.mjs","sources":["../../../projects/ng-kit/src/lib/components/alert/alert.component.ts","../../../projects/ng-kit/src/lib/components/alert/alert.component.html","../../../projects/ng-kit/src/lib/components/spinner/spinner.component.ts","../../../projects/ng-kit/src/lib/components/spinner/spinner.component.html","../../../projects/ng-kit/src/lib/components/autocomplete/create-filter-options.ts","../../../projects/ng-kit/src/lib/components/autocomplete/autocomplete-state.ts","../../../projects/ng-kit/src/lib/components/autocomplete/autocomplete-templates.ts","../../../projects/ng-kit/src/lib/components/autocomplete/autocomplete.types.ts","../../../projects/ng-kit/src/lib/components/autocomplete/autocomplete.component.ts","../../../projects/ng-kit/src/lib/components/autocomplete/autocomplete.component.html","../../../projects/ng-kit/src/lib/directives/autocomplete-suffix/autocomplete-clear-button.component.ts","../../../projects/ng-kit/src/lib/directives/autocomplete-suffix/autocomplete-dropdown-button.component.ts","../../../projects/ng-kit/src/lib/directives/autocomplete-suffix/autocomplete-suffix.directive.ts","../../../projects/ng-kit/src/lib/directives/link-icon/link-icon.directive.ts","../../../projects/ng-kit/src/lib/directives/ngx-print/print-options.ts","../../../projects/ng-kit/src/lib/directives/ngx-print/ngx-print.directive.ts","../../../projects/ng-kit/src/lib/directives/prevent-multiple-clicks/prevent-multiple-clicks.directive.ts","../../../projects/ng-kit/src/lib/components/buttons/base-button/base-button.directive.ts","../../../projects/ng-kit/src/lib/components/buttons/bs-link-button/bs-link-button.directive.ts","../../../projects/ng-kit/src/lib/components/buttons/close-button/close-button.directive.ts","../../../projects/ng-kit/src/lib/components/buttons/delete-button/delete-button.directive.ts","../../../projects/ng-kit/src/lib/svg-icons/edit-solid-svg/edit-solid-svg-icon.registry.ts","../../../projects/ng-kit/src/lib/svg-icons/edit-solid-svg/edit-solid-svg.component.ts","../../../projects/ng-kit/src/lib/svg-icons/edit-solid-svg/append-edit-solid-svg-icon.util.ts","../../../projects/ng-kit/src/lib/components/buttons/edit-bs-button/edit-bs-button.directive.ts","../../../projects/ng-kit/src/lib/components/buttons/edit-button/edit-button.directive.ts","../../../projects/ng-kit/src/lib/components/buttons/edit-svg-icon-button/edit-svg-icon-button.directive.ts","../../../projects/ng-kit/src/lib/components/buttons/excel-export-button/excel-export-button.directive.ts","../../../projects/ng-kit/src/lib/components/buttons/manage-button/manage-button.directive.ts","../../../projects/ng-kit/src/lib/components/buttons/pdf-export-button/pdf-export-button.directive.ts","../../../projects/ng-kit/src/lib/components/buttons/primary-button/primary-button.directive.ts","../../../projects/ng-kit/src/lib/components/buttons/save-primary-button/save-primary-button.directive.ts","../../../projects/ng-kit/src/lib/components/buttons/search-button/search-button.directive.ts","../../../projects/ng-kit/src/lib/components/buttons/success-button/success-button.directive.ts","../../../projects/ng-kit/src/lib/components/buttons/view-button/view-button.directive.ts","../../../projects/ng-kit/src/lib/components/buttons/view-primary-button/view-primary-button.directive.ts","../../../projects/ng-kit/src/lib/components/confirm-dialog/confirm-dialog.component.ts","../../../projects/ng-kit/src/lib/components/snack-bar/error-snack-bar/error-snack-bar.component.ts","../../../projects/ng-kit/src/lib/components/snack-bar/success-snack-bar/success-snack-bar.component.ts","../../../projects/ng-kit/src/lib/services/mat-snack-bar.service.ts","../../../projects/ng-kit/src/lib/store/entity-store.ts","../../../projects/ng-kit/src/lib/store/store.ts","../../../projects/ng-kit/src/lib/util/progress-util.ts","../../../projects/ng-kit/src/lib/query/query-client.token.ts","../../../projects/ng-kit/src/lib/query/inject-mutation.ts","../../../projects/ng-kit/src/lib/query/inject-query.ts","../../../projects/ng-kit/src/js-smart-ng-kit.ts"],"sourcesContent":["import { ChangeDetectionStrategy, ChangeDetectorRef, Component, effect, inject, input, type OnInit, output, signal } from '@angular/core';\n\nexport type AlertType = 'info' | 'primary' | 'secondary' | 'success' | 'warning' | 'danger' | 'dark' | 'light';\n\n/**\n * Boostrap Alert component that can be used to alert messages to the user\n *\n * @author Pavan Kumar Jadda\n * @since 12.0.0\n */\n@Component({\n\tselector: 'lib-alert, alert',\n\ttemplateUrl: './alert.component.html',\n\tstyleUrls: ['./alert.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AlertComponent implements OnInit {\n\tcdr = inject(ChangeDetectorRef);\n\t/**\n\t * Type of the BootStrap Alert. Following values are supported. See BootStrap docs for more information\n\t */\n\ttype = input<AlertType>('info');\n\n\t/**\n\t *  Is alert visible or open\n\t */\n\tisOpen = input(true);\n\n\t/**\n\t *  Writable signal for isOpen\n\t */\n\topen = signal(this.isOpen());\n\n\t/**\n\t * If set, displays an inline “Close” button\n\t */\n\tdismissible = input(true);\n\n\t/**\n\t * If set, dismisses the alert after Dismiss Timeout\n\t */\n\tdismissOnTimeout = input(true);\n\n\t/**\n\t * Number in milliseconds, after which alert will be closed. Default value is 5000 ms\n\t */\n\tdismissTimeout = input(5000);\n\n\t/**\n\t * Additional classes to be added to the alert. This can be used to add custom styles to the alert\n\t */\n\tclass = input('');\n\n\t/**\n\t * Emits when the alert is closed.\n\t */\n\tclosed = output<void>();\n\n\tconstructor() {\n\t\t// React to isOpen input changes\n\t\teffect(() => {\n\t\t\tthis.open.set(this.isOpen());\n\t\t});\n\t}\n\n\t/**\n\t * Initialize the component and settings\n\t *\n\t * @author Pavan Kumar Jadda\n\t * @since 12.0.0\n\t */\n\tngOnInit(): void {\n\t\tif (this.dismissOnTimeout()) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.closeAlert();\n\t\t\t\tthis.cdr.markForCheck();\n\t\t\t}, this.dismissTimeout());\n\t\t}\n\t}\n\n\t/**\n\t * Closes BootStrap Alert if not open\n\t *\n\t * @author Pavan Kumar Jadda\n\t * @since 12.0.0\n\t */\n\tcloseAlert(): void {\n\t\tif (!this.open()) {\n\t\t\treturn;\n\t\t}\n\t\tthis.open.set(false);\n\t\tthis.closed.emit();\n\t}\n}\n","@if (open()) {\n\t<div class=\"row {{ class() }}\">\n\t\t<div class=\"col-xs-12 col-sm-12 col-md-auto mx-auto\">\n\t\t\t<div class=\"alert alert-{{ type() }} alert-dismissible alert_div\" role=\"alert\" aria-live=\"polite\">\n\t\t\t\t<ng-content></ng-content>\n\t\t\t\t@if (dismissible()) {\n\t\t\t\t\t<button (click)=\"closeAlert()\" aria-label=\"Close\" class=\"btn-close\" data-bs-dismiss=\"alert\" type=\"button\"></button>\n\t\t\t\t}\n\t\t\t</div>\n\t\t</div>\n\t</div>\n}\n","import { Component, input, ChangeDetectionStrategy } from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\n@Component({\n\tselector: 'spinner,lib-spinner',\n\timports: [MatProgressSpinnerModule],\n\ttemplateUrl: './spinner.component.html',\n\tchangeDetection: ChangeDetectionStrategy.Eager,\n\tstyleUrls: ['./spinner.component.scss'],\n})\nexport class SpinnerComponent {\n\t/**\n\t *  Use Boostrap Spinner. Default `true`\n\t */\n\tbootstrapSpinner = input(true);\n\n\t/**\n\t * Diameter of the Angular Material spinner\n\t */\n\tdiameter = input(50);\n\n\t/**\n\t *  Color of the Angular Material spinner\n\t */\n\tcolor = input<ThemePalette>('primary');\n\n\t/**\n\t *  Stroke Width of the Angular Material spinner\n\t */\n\tstrokeWidth = input(5);\n}\n","<!-- Angular Material Spinner -->\n@if (!bootstrapSpinner()) {\n\t<mat-spinner [color]=\"color()\" [diameter]=\"diameter()\" [strokeWidth]=\"strokeWidth()\" class=\"mx-auto\"> </mat-spinner>\n}\n\n<!-- Bootstrap Spinner -->\n@if (bootstrapSpinner()) {\n\t<div class=\"d-flex justify-content-center\">\n\t\t<div class=\"spinner-border bs-spinner\" role=\"status\"></div>\n\t</div>\n}\n","import type { FilterOptionsFn, FilterOptionsState } from './autocomplete.types';\n\nexport interface CreateFilterOptionsConfig<T> {\n\t/** Strip diacritics before comparing. Default `true`. */\n\tignoreAccents?: boolean;\n\t/** Lowercase both sides before comparing. Default `true`. */\n\tignoreCase?: boolean;\n\t/** Cap the number of suggestions returned. Default `null` (no cap). */\n\tlimit?: number | null;\n\t/** Match anywhere in the string, or only at the start. Default `'any'`. */\n\tmatchFrom?: 'any' | 'start';\n\t/** Turn an option into the string that gets matched. Defaults to the label. */\n\tstringify?: (option: T) => string;\n\t/** Trim trailing whitespace off the query. Default `false`. */\n\ttrim?: boolean;\n}\n\nconst stripDiacritics = (value: string): string => value.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n\n/**\n * Builds a `filterOptions` function. Same knobs as MUI's `createFilterOptions`.\n *\n *   filterOptions = createFilterOptions({ matchFrom: 'start', limit: 100 })\n */\nexport function createFilterOptions<T>(config: CreateFilterOptionsConfig<T> = {}): FilterOptionsFn<T> {\n\tconst { ignoreAccents = true, ignoreCase = true, limit = null, matchFrom = 'any', stringify, trim = false } = config;\n\n\treturn (options: readonly T[], state: FilterOptionsState<T>): T[] => {\n\t\tlet query = trim ? state.inputValue.trim() : state.inputValue;\n\t\tif (ignoreCase) {\n\t\t\tquery = query.toLowerCase();\n\t\t}\n\t\tif (ignoreAccents) {\n\t\t\tquery = stripDiacritics(query);\n\t\t}\n\n\t\tconst filtered = query\n\t\t\t? options.filter((option) => {\n\t\t\t\t\tlet candidate = String((stringify ?? state.getOptionLabel)(option));\n\t\t\t\t\tif (ignoreCase) {\n\t\t\t\t\t\tcandidate = candidate.toLowerCase();\n\t\t\t\t\t}\n\t\t\t\t\tif (ignoreAccents) {\n\t\t\t\t\t\tcandidate = stripDiacritics(candidate);\n\t\t\t\t\t}\n\t\t\t\t\treturn matchFrom === 'start' ? candidate.startsWith(query) : candidate.includes(query);\n\t\t\t\t})\n\t\t\t: [...options];\n\n\t\treturn limit == null ? filtered : filtered.slice(0, limit);\n\t};\n}\n\n/** The filter used when none is supplied — matches MUI's default. */\nexport const defaultFilterOptions = createFilterOptions<never>();\n\n/** Pass this as `filterOptions` when the server already filtered (search-as-you-type). */\nexport const passThroughFilter = <T>(options: readonly T[]): T[] => [...options];\n","import { computed, linkedSignal, signal, untracked, type Signal, type WritableSignal } from '@angular/core';\nimport type {\n\tChangeReason,\n\tCloseReason,\n\tHighlightChangeReason,\n\tInputChangeReason,\n\tNgAutocompleteConfig,\n\tOpenReason,\n\tOptionGroup,\n\tRenderedOption,\n} from './autocomplete.types';\nimport { defaultFilterOptions } from './create-filter-options';\n\nexport interface NgAutocompleteStateEvents<T> {\n\tchange?(value: T | readonly T[] | null, reason: ChangeReason, option?: T): void;\n\tinputChange?(value: string, reason: InputChangeReason): void;\n\topened?(reason: OpenReason): void;\n\tclosed?(reason: CloseReason): void;\n\thighlightChange?(option: T | null, reason: HighlightChangeReason): void;\n\t/** State has decided the input should lose focus (`blurOnSelect`). */\n\trequestBlur?(): void;\n}\n\nexport interface NgAutocompleteStateDeps<T> {\n\t/** The full, unfiltered option list. */\n\toptions: Signal<readonly T[]>;\n\t/** Two-way selected value. `T | null` when single, `T[]` when multiple. */\n\tvalue: WritableSignal<T | readonly T[] | null>;\n\t/** Two-way text in the box. Deliberately independent of `value`, as in MUI. */\n\tinputValue: WritableSignal<string>;\n\t/** Two-way open state (controllable from the host). */\n\topen: WritableSignal<boolean>;\n\t/** All behavioural flags, already resolved with defaults. */\n\tconfig: Signal<NgAutocompleteConfig<T>>;\n\tevents?: NgAutocompleteStateEvents<T>;\n}\n\n/**\n * The whole combobox behaviour, with zero rendering opinions.\n *\n * Every piece of derived data is a `computed`, so filtering, grouping and\n * highlight bookkeeping all stay consistent without manual invalidation —\n * and unlike React you never need to memoise the value you pass in.\n */\nexport class NgAutocompleteState<T> {\n\tprivate readonly deps: NgAutocompleteStateDeps<T>;\n\treadonly inputValue: WritableSignal<string>;\n\treadonly value: WritableSignal<T | readonly T[] | null>;\n\t/** Two-way open state, delegated to the host's dep. */\n\treadonly open: WritableSignal<boolean>;\n\n\tconstructor(deps: NgAutocompleteStateDeps<T>) {\n\t\tthis.deps = deps;\n\t\tthis.inputValue = deps.inputValue;\n\t\tthis.value = deps.value;\n\t\tthis.open = deps.open;\n\t}\n\n\t// ── raw state ────────────────────────────────────────────────────────────\n\treadonly focused = signal(false);\n\t/** Index of the focused chip in multiple mode, or -1 for the text input. */\n\treadonly focusedItemIndex = signal(-1);\n\t/** True from open until the first real keystroke. useAutocomplete:241 */\n\treadonly inputPristine = signal(true);\n\n\t/**\n\t * Touch-interaction tracking (useAutocomplete \"compat\" touch handling,\n\t * simplified — see `handleOptionTouchStart`/`notifyScroll`). MUI tracks a\n\t * synthetic compat mouse event that browsers fire after a real touch and\n\t * suppresses it; reproducing that exactly is impractical under jsdom, so\n\t * here we keep the two externally-observable behaviours it protects:\n\t * (1) a highlight set by touch, then invalidated by a scroll before the\n\t * user lifts their finger, must not be selected on a stray Enter, and\n\t * (2) `blurOnSelect: 'touch' | 'mouse'` resolves against how the option\n\t * was actually activated.\n\t */\n\treadonly isTouch = signal(false);\n\t/** Set once a touch-highlighted option's list has scrolled underneath it. */\n\treadonly touchScrolled = signal(false);\n\n\treadonly cfg = computed(() => this.deps.config());\n\n\t/** MUI `dirty` (useAutocomplete:1365-1366): freeSolo typed text OR a selected value. */\n\treadonly dirty = computed(() => {\n\t\tconst c = this.cfg();\n\t\tif (c.freeSolo && this.deps.inputValue().length > 0) {\n\t\t\treturn true;\n\t\t}\n\t\treturn this.hasValue();\n\t});\n\n\t// ── derived: selection ───────────────────────────────────────────────────\n\t/** Current selection normalised to an array, whatever the mode. */\n\treadonly selectedValues = computed<readonly T[]>(() => {\n\t\tconst v = this.deps.value();\n\t\tif (v == null) {\n\t\t\treturn [];\n\t\t}\n\t\treturn Array.isArray(v) ? (v as readonly T[]) : [v as T];\n\t});\n\n\treadonly hasValue = computed(() => this.selectedValues().length > 0);\n\n\treadonly clearVisible = computed(() => {\n\t\tconst c = this.cfg();\n\t\treturn !c.disableClearable && !c.disabled && !c.readOnly && this.dirty();\n\t});\n\n\t// ── derived: option list ─────────────────────────────────────────────────\n\t/**\n\t * The text actually used for filtering. In single-select, once a value is\n\t * chosen and the box shows its label, MUI stops filtering so reopening the\n\t * popup shows the whole list again.\n\t */\n\tprivate readonly filterQuery = computed(() => {\n\t\tconst c = this.cfg();\n\t\tconst input = this.deps.inputValue();\n\t\tif (c.multiple) {\n\t\t\treturn input;\n\t\t}\n\t\tconst selected = this.selectedValues()[0];\n\t\tconst isSelectedLabel = selected !== undefined && input === c.getOptionLabel(selected);\n\t\tif (isSelectedLabel && this.inputPristine()) {\n\t\t\treturn '';\n\t\t}\n\t\treturn input;\n\t});\n\n\tprivate readonly filtered = computed<readonly T[]>(() => {\n\t\tconst c = this.cfg();\n\t\tconst filter = c.filterOptions ?? (defaultFilterOptions as never);\n\t\tconst source = c.filterSelectedOptions\n\t\t\t? this.deps.options().filter((o) => !this.selectedValues().some((v) => c.isOptionEqualToValue(o, v)))\n\t\t\t: this.deps.options();\n\n\t\treturn filter(source, {\n\t\t\tinputValue: this.filterQuery(),\n\t\t\tgetOptionLabel: c.getOptionLabel,\n\t\t});\n\t});\n\n\t/** Flat list — the single source of truth for indices and `aria-activedescendant`. */\n\treadonly flatOptions = computed<readonly RenderedOption<T>[]>(() => {\n\t\tconst c = this.cfg();\n\t\treturn this.filtered().map((option, index) => ({\n\t\t\toption,\n\t\t\tindex,\n\t\t\tkey: c.getOptionKey(option),\n\t\t\tlabel: c.getOptionLabel(option),\n\t\t\tdisabled: c.getOptionDisabled(option),\n\t\t\tselected: this.selectedValues().some((v) => c.isOptionEqualToValue(option, v)),\n\t\t}));\n\t});\n\n\t/** Grouped view. Options must already be sorted by the group key, same as MUI. */\n\treadonly groups = computed<readonly OptionGroup<T>[]>(() => {\n\t\tconst groupBy = this.cfg().groupBy;\n\t\tif (!groupBy) {\n\t\t\treturn [];\n\t\t}\n\t\tconst out: OptionGroup<T>[] = [];\n\t\tfor (const item of this.flatOptions()) {\n\t\t\tconst group = groupBy(item.option);\n\t\t\tconst last = out.at(-1);\n\t\t\tif (last && last.group === group) {\n\t\t\t\t(last.options as RenderedOption<T>[]).push(item);\n\t\t\t} else {\n\t\t\t\tout.push({ key: item.index, group, options: [item] });\n\t\t\t}\n\t\t}\n\t\treturn out;\n\t});\n\n\treadonly isEmpty = computed(() => this.flatOptions().length === 0);\n\n\t/** Whether the listbox should actually be on screen. */\n\treadonly listboxVisible = computed(() => {\n\t\tconst c = this.cfg();\n\t\tif (!this.open() || c.disabled) {\n\t\t\treturn false;\n\t\t}\n\t\tif (c.readOnly) {\n\t\t\treturn false;\n\t\t}\n\t\tif (!this.isEmpty()) {\n\t\t\treturn true;\n\t\t}\n\t\treturn c.loading || !c.freeSolo; // show \"no options\" unless free solo\n\t});\n\n\t// ── derived: highlight ───────────────────────────────────────────────────\n\t/**\n\t * Resets whenever the filtered list changes, but keeps pointing at the same\n\t * option when that option survived the change. `linkedSignal` gives us the\n\t * previous value for free — no effect, no manual sync.\n\t */\n\treadonly highlightedIndex = linkedSignal<readonly RenderedOption<T>[], number>({\n\t\tsource: () => this.flatOptions(),\n\t\tcomputation: (options, previous) => {\n\t\t\tif (options.length === 0) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tconst c = untracked(() => this.cfg());\n\t\t\tconst prevOption = previous?.source?.[previous.value];\n\t\t\tif (prevOption) {\n\t\t\t\tconst stillThere = options.findIndex((o) => c.isOptionEqualToValue(o.option, prevOption.option));\n\t\t\t\tif (stillThere !== -1) {\n\t\t\t\t\treturn stillThere;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (c.autoHighlight) {\n\t\t\t\treturn this.firstEnabled(options, c);\n\t\t\t}\n\t\t\treturn -1;\n\t\t},\n\t});\n\n\treadonly highlightedOption = computed<RenderedOption<T> | null>(() => this.flatOptions()[this.highlightedIndex()] ?? null);\n\n\t/**\n\t * Inline completion text for `autoComplete` — the highlighted label when it\n\t * extends what the user typed. The component writes it into the DOM input\n\t * and selects the appended part.\n\t */\n\treadonly inlineCompletion = computed<string | null>(() => {\n\t\tconst c = this.cfg();\n\t\tif (!c.autoComplete || !this.open()) {\n\t\t\treturn null;\n\t\t}\n\t\tconst highlighted = this.highlightedOption();\n\t\tconst typed = this.deps.inputValue();\n\t\tif (!highlighted || !typed) {\n\t\t\treturn null;\n\t\t}\n\t\tconst label = highlighted.label;\n\t\treturn label.toLowerCase().startsWith(typed.toLowerCase()) && label !== typed ? label : null;\n\t});\n\n\t// ── open / close ─────────────────────────────────────────────────────────\n\topenPopup(reason: OpenReason): void {\n\t\tconst c = this.cfg();\n\t\tif (this.open() || c.disabled || c.readOnly) {\n\t\t\treturn;\n\t\t}\n\t\tthis.open.set(true);\n\t\tthis.inputPristine.set(true);\n\t\t// Point the highlight at the current value before anyone observes the open\n\t\t// popup, so the list scrolls to the selection instead of opening at the top.\n\t\tthis.syncHighlightedIndex();\n\t\tthis.deps.events?.opened?.(reason);\n\t}\n\n\tclosePopup(reason: CloseReason): void {\n\t\tif (!this.open()) {\n\t\t\treturn;\n\t\t}\n\t\tthis.open.set(false);\n\t\tthis.deps.events?.closed?.(reason);\n\t}\n\n\ttogglePopup(): void {\n\t\tif (this.open()) {\n\t\t\tthis.closePopup('toggleInput');\n\t\t} else {\n\t\t\tthis.openPopup('toggleInput');\n\t\t}\n\t}\n\n\t// ── highlight movement ───────────────────────────────────────────────────\n\t/** Last highlight cause; null = programmatic (autoHighlight / value sync). useAutocomplete:174 */\n\treadonly highlightReason = signal<HighlightChangeReason | null>(null);\n\n\tsetHighlight(index: number, reason: HighlightChangeReason | null): void {\n\t\tthis.highlightedIndex.set(index);\n\t\tthis.highlightReason.set(reason);\n\t\t// useAutocomplete:461 — only user interactions notify.\n\t\tif (reason === 'mouse' || reason === 'keyboard' || reason === 'touch') {\n\t\t\tthis.deps.events?.highlightChange?.(this.flatOptions()[index]?.option ?? null, reason);\n\t\t}\n\t}\n\n\t/** A finger touched down on an option row: highlight it as a touch highlight. */\n\thandleOptionTouchStart(index: number): void {\n\t\tthis.touchScrolled.set(false);\n\t\tthis.setHighlight(index, 'touch');\n\t\tthis.isTouch.set(true);\n\t}\n\n\t/** The listbox scrolled — any touch-highlight in flight is now stale. */\n\tnotifyScroll(): void {\n\t\tif (this.isTouch()) {\n\t\t\tthis.touchScrolled.set(true);\n\t\t}\n\t}\n\n\t/**\n\t * `diff` is a step (±1, ±5) or a landmark. Honours `disableListWrap`,\n\t * `includeInputInList` and `disabledItemsFocusable`.\n\t */\n\tmoveHighlight(diff: number | 'start' | 'end' | 'reset'): void {\n\t\tif (!this.open()) {\n\t\t\tthis.openPopup('keyboard');\n\t\t}\n\t\tconst options = this.flatOptions();\n\t\tconst c = this.cfg();\n\t\tif (options.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (diff === 'reset') {\n\t\t\tthis.setHighlight(c.autoHighlight ? this.firstEnabled(options, c) : -1, null);\n\t\t\treturn;\n\t\t}\n\t\tif (diff === 'start') {\n\t\t\tthis.setHighlight(this.firstEnabled(options, c), 'keyboard');\n\t\t\treturn;\n\t\t}\n\t\tif (diff === 'end') {\n\t\t\tthis.setHighlight(this.lastEnabled(options, c), 'keyboard');\n\t\t\treturn;\n\t\t}\n\n\t\tconst min = c.includeInputInList ? -1 : 0;\n\t\tconst max = options.length - 1;\n\t\tconst current = this.highlightedIndex();\n\t\tlet next = current + diff;\n\n\t\tif (next > max) {\n\t\t\tnext = c.disableListWrap ? max : min;\n\t\t} else if (next < min) {\n\t\t\tnext = c.disableListWrap ? min : max;\n\t\t}\n\n\t\t// Skip disabled entries in the direction of travel.\n\t\tconst step = diff > 0 ? 1 : -1;\n\t\tlet guard = options.length + 1;\n\t\twhile (guard-- > 0 && next >= 0 && options[next]?.disabled && !c.disabledItemsFocusable) {\n\t\t\tnext += step;\n\t\t\tif (next > max) {\n\t\t\t\tnext = c.disableListWrap ? current : min;\n\t\t\t} else if (next < min) {\n\t\t\t\tnext = c.disableListWrap ? current : max;\n\t\t\t}\n\t\t}\n\t\tthis.setHighlight(next, 'keyboard');\n\t}\n\n\t/**\n\t * Align the highlight with the selected value when the popup opens — MUI's\n\t * `syncHighlightedIndex`, which it runs from an effect gated on `popupOpen`.\n\t * Without this the index stays at -1 and the listbox opens scrolled to the\n\t * top, hiding the current value.\n\t *\n\t * MUI's \"previously highlighted option survived the re-filter\" branch has no\n\t * equivalent here: `highlightedIndex` is a `linkedSignal` that already keeps\n\t * pointing at the same option when the filtered list changes.\n\t *\n\t * The highlight is programmatic here (`null` reason), so it never emits\n\t * `highlightChange` — that stays reserved for real user interaction.\n\t */\n\tprivate syncHighlightedIndex(): void {\n\t\tconst c = this.cfg();\n\t\tconst options = this.flatOptions();\n\t\tconst valueItem = this.selectedValues()[0];\n\n\t\tif (options.length === 0 || valueItem === undefined) {\n\t\t\tthis.setHighlight(c.autoHighlight ? this.firstEnabled(options, c) : -1, null);\n\t\t\treturn;\n\t\t}\n\n\t\t// Multiple: a highlight already sitting on one of the selected values is\n\t\t// kept, so reopening the panel does not jump back to the first chip.\n\t\tif (c.multiple) {\n\t\t\tconst current = options[this.highlightedIndex()];\n\t\t\tif (current && this.selectedValues().some((v) => c.isOptionEqualToValue(current.option, v))) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tconst index = options.findIndex((o) => c.isOptionEqualToValue(o.option, valueItem));\n\t\tthis.setHighlight(index === -1 ? (c.autoHighlight ? this.firstEnabled(options, c) : -1) : index, null);\n\t}\n\n\tprivate firstEnabled(options: readonly RenderedOption<T>[], c: NgAutocompleteConfig<T>): number {\n\t\tif (c.disabledItemsFocusable) {\n\t\t\treturn options.length ? 0 : -1;\n\t\t}\n\t\tconst i = options.findIndex((o) => !o.disabled);\n\t\treturn i;\n\t}\n\n\tprivate lastEnabled(options: readonly RenderedOption<T>[], c: NgAutocompleteConfig<T>): number {\n\t\tif (c.disabledItemsFocusable) {\n\t\t\treturn options.length - 1;\n\t\t}\n\t\tfor (let i = options.length - 1; i >= 0; i--) {\n\t\t\tif (!options[i].disabled) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t}\n\n\t// ── value mutation ───────────────────────────────────────────────────────\n\tisSelected(option: T): boolean {\n\t\tconst c = this.cfg();\n\t\treturn this.selectedValues().some((v) => c.isOptionEqualToValue(option, v));\n\t}\n\n\tisFixed(option: T): boolean {\n\t\tconst c = this.cfg();\n\t\treturn c.fixedOptions.some((v) => c.isOptionEqualToValue(option, v));\n\t}\n\n\tselectOption(option: T, reason: ChangeReason = 'selectOption'): void {\n\t\tconst c = this.cfg();\n\t\tif (c.disabled || c.readOnly) {\n\t\t\treturn;\n\t\t}\n\t\tif (c.getOptionDisabled(option) && reason !== 'createOption') {\n\t\t\treturn;\n\t\t}\n\n\t\tif (c.multiple) {\n\t\t\tconst current = [...this.selectedValues()];\n\t\t\tconst at = current.findIndex((v) => c.isOptionEqualToValue(option, v));\n\t\t\tif (at === -1) {\n\t\t\t\tcurrent.push(option);\n\t\t\t\tthis.commit(current, reason, option);\n\t\t\t} else if (!this.isFixed(current[at])) {\n\t\t\t\tcurrent.splice(at, 1);\n\t\t\t\tthis.commit(current, 'removeOption', option);\n\t\t\t}\n\t\t\tthis.setInputValue('', 'selectOption');\n\t\t} else {\n\t\t\tthis.commit(option, reason, option);\n\t\t\tthis.setInputValue(c.getOptionLabel(option), 'selectOption');\n\t\t}\n\n\t\tif (!c.disableCloseOnSelect) {\n\t\t\tthis.closePopup('selectOption');\n\t\t}\n\n\t\tconst blur = c.blurOnSelect;\n\t\tif (blur === true || (blur === 'touch' && this.isTouch()) || (blur === 'mouse' && !this.isTouch())) {\n\t\t\tthis.deps.events?.requestBlur?.();\n\t\t}\n\t\tthis.isTouch.set(false);\n\t}\n\n\tremoveValueAt(index: number): void {\n\t\tconst c = this.cfg();\n\t\tif (c.disabled || c.readOnly) {\n\t\t\treturn;\n\t\t}\n\t\tconst current = [...this.selectedValues()];\n\t\tconst removed = current[index];\n\t\tif (removed === undefined || this.isFixed(removed)) {\n\t\t\treturn;\n\t\t}\n\t\tcurrent.splice(index, 1);\n\t\tthis.commit(current, 'removeOption', removed);\n\t\tthis.focusedItemIndex.set(-1);\n\t}\n\n\tclear(): void {\n\t\tconst c = this.cfg();\n\t\tif (c.disabled || c.readOnly) {\n\t\t\treturn;\n\t\t}\n\t\t// Fixed options survive a clear.\n\t\tconst next = c.multiple ? [...c.fixedOptions] : null;\n\t\tthis.commit(next, 'clear');\n\t\tthis.setInputValue('', 'clear');\n\t\tthis.focusedItemIndex.set(-1);\n\t}\n\n\tprivate commit(next: T | readonly T[] | null, reason: ChangeReason, option?: T): void {\n\t\tthis.deps.value.set(next);\n\t\tthis.deps.events?.change?.(next, reason, option);\n\t}\n\n\t// ── input handling ───────────────────────────────────────────────────────\n\tsetInputValue(text: string, reason: InputChangeReason): void {\n\t\tif (untracked(this.deps.inputValue) === text && reason !== 'input') {\n\t\t\treturn;\n\t\t}\n\t\tthis.deps.inputValue.set(text);\n\t\tthis.deps.events?.inputChange?.(text, reason);\n\t}\n\n\thandleInput(text: string): void {\n\t\tconst c = this.cfg();\n\t\tconst changed = untracked(this.deps.inputValue) !== text;\n\t\tthis.setInputValue(text, 'input');\n\t\tif (text === '') {\n\t\t\tif (!c.multiple && !c.disableClearable && !c.freeSolo) {\n\t\t\t\tthis.commit(null, 'clear');\n\t\t\t}\n\t\t} else {\n\t\t\tthis.openPopup('input');\n\t\t}\n\t\tthis.focusedItemIndex.set(-1);\n\t\tif (changed) {\n\t\t\tthis.inputPristine.set(false);\n\t\t}\n\t}\n\n\t/** Push the input text back in sync with the current selection. */\n\tresetInputValue(reason: InputChangeReason = 'reset'): void {\n\t\tconst c = this.cfg();\n\t\tif (c.multiple) {\n\t\t\tthis.setInputValue('', reason);\n\t\t\treturn;\n\t\t}\n\t\tconst selected = this.selectedValues()[0];\n\t\tthis.setInputValue(selected === undefined ? '' : c.getOptionLabel(selected), reason);\n\t}\n\n\t// ── focus / blur ─────────────────────────────────────────────────────────\n\t/** Set when the whole browser window (not just this control) lost focus. */\n\tprivate readonly windowLostFocus = signal(false);\n\t/** VoiceOver re-dispatches a synthetic Backspace right after a chip delete; ignore one. */\n\tprivate ignoreNextBackspace = false;\n\n\t/** Call from a `window` `blur` listener. Suppresses the next `openOnFocus`. */\n\tnoteWindowBlur(): void {\n\t\tthis.windowLostFocus.set(true);\n\t}\n\n\thandleFocus(): void {\n\t\tconst c = this.cfg();\n\t\tthis.focused.set(true);\n\t\t// A focus that immediately follows the whole window losing and regaining\n\t\t// focus (e.g. alt-tabbing back) is not a user-initiated focus of this\n\t\t// control, so it must not trigger `openOnFocus`. useAutocomplete's\n\t\t// `handleFocus` skips its open-on-focus branch under the same condition.\n\t\tif (this.windowLostFocus()) {\n\t\t\tthis.windowLostFocus.set(false);\n\t\t\treturn;\n\t\t}\n\t\tif (c.openOnFocus) {\n\t\t\tthis.openPopup('focus');\n\t\t}\n\t}\n\n\thandleBlur(): void {\n\t\tconst c = this.cfg();\n\t\tthis.focused.set(false);\n\t\tthis.focusedItemIndex.set(-1);\n\n\t\tif (\n\t\t\tc.autoSelect &&\n\t\t\tthis.highlightedIndex() >= 0 &&\n\t\t\tthis.open() &&\n\t\t\tthis.highlightReason() !== 'mouse' &&\n\t\t\tthis.highlightReason() !== 'touch'\n\t\t) {\n\t\t\tconst highlighted = this.highlightedOption();\n\t\t\tif (highlighted) {\n\t\t\t\tthis.selectOption(highlighted.option, 'blur');\n\t\t\t}\n\t\t} else if (c.autoSelect && c.freeSolo && this.deps.inputValue() !== '') {\n\t\t\tthis.createFreeSoloValue('blur');\n\t\t} else if (c.clearOnBlur) {\n\t\t\tthis.resetInputValue('blur');\n\t\t}\n\t\tthis.closePopup('blur');\n\t}\n\n\tprivate createFreeSoloValue(reason: ChangeReason = 'createOption'): void {\n\t\tconst c = this.cfg();\n\t\tconst text = this.deps.inputValue();\n\t\tif (!text) {\n\t\t\treturn;\n\t\t}\n\t\tconst created = text as unknown as T;\n\t\tif (c.multiple) {\n\t\t\tthis.commit([...this.selectedValues(), created], reason, created);\n\t\t\tthis.setInputValue('', 'selectOption');\n\t\t} else {\n\t\t\tthis.commit(created, reason, created);\n\t\t}\n\t}\n\n\t// ── keyboard ─────────────────────────────────────────────────────────────\n\t/**\n\t * Full WAI-ARIA combobox key handling. Returns `true` when the event was\n\t * consumed, so the caller can `preventDefault()`.\n\t */\n\thandleKeyDown(event: KeyboardEvent): boolean {\n\t\tconst c = this.cfg();\n\t\tif (c.disabled) {\n\t\t\treturn false;\n\t\t}\n\n\t\tswitch (event.key) {\n\t\t\tcase 'ArrowDown':\n\t\t\t\tif (c.readOnly) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (!this.open()) {\n\t\t\t\t\tthis.openPopup('keyboard');\n\t\t\t\t} else {\n\t\t\t\t\tthis.moveHighlight(1);\n\t\t\t\t}\n\t\t\t\treturn true;\n\n\t\t\tcase 'ArrowUp':\n\t\t\t\tif (c.readOnly) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (!this.open()) {\n\t\t\t\t\tthis.openPopup('keyboard');\n\t\t\t\t\tthis.moveHighlight('end');\n\t\t\t\t} else {\n\t\t\t\t\tthis.moveHighlight(-1);\n\t\t\t\t}\n\t\t\t\treturn true;\n\n\t\t\tcase 'PageDown':\n\t\t\t\tif (!this.open()) {\n\t\t\t\t\tthis.openPopup('keyboard');\n\t\t\t\t}\n\t\t\t\tthis.moveHighlight(5);\n\t\t\t\treturn true;\n\n\t\t\tcase 'PageUp':\n\t\t\t\tif (!this.open()) {\n\t\t\t\t\tthis.openPopup('keyboard');\n\t\t\t\t}\n\t\t\t\tthis.moveHighlight(-5);\n\t\t\t\treturn true;\n\n\t\t\tcase 'Home':\n\t\t\t\tif (!this.open() || !c.handleHomeEndKeys) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tthis.moveHighlight('start');\n\t\t\t\treturn true;\n\n\t\t\tcase 'End':\n\t\t\t\tif (!this.open() || !c.handleHomeEndKeys) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tthis.moveHighlight('end');\n\t\t\t\treturn true;\n\n\t\t\tcase 'Enter': {\n\t\t\t\tif (c.readOnly) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (this.open() && this.touchScrolled()) {\n\t\t\t\t\tthis.closePopup('escape');\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tconst idx = this.highlightedIndex();\n\t\t\t\tconst highlighted = this.highlightedOption();\n\t\t\t\tconst inputValueIsSelectedValue =\n\t\t\t\t\t!c.multiple && this.selectedValues()[0] !== undefined && this.deps.inputValue() === c.getOptionLabel(this.selectedValues()[0]);\n\n\t\t\t\tconst hasProgrammaticHighlight = this.open() && idx !== -1 && this.highlightReason() === null;\n\t\t\t\tconst shouldSelectHighlighted = !c.freeSolo || this.inputPristine() || !hasProgrammaticHighlight;\n\n\t\t\t\tif (idx !== -1 && this.open() && shouldSelectHighlighted && highlighted && !highlighted.disabled) {\n\t\t\t\t\tthis.selectOption(highlighted.option, 'selectOption');\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tif (c.freeSolo && this.deps.inputValue() !== '' && !inputValueIsSelectedValue) {\n\t\t\t\t\tthis.createFreeSoloValue('createOption');\n\t\t\t\t\tif (!c.disableCloseOnSelect) {\n\t\t\t\t\t\tthis.closePopup('selectOption');\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tcase 'Escape':\n\t\t\t\tif (this.open()) {\n\t\t\t\t\tthis.closePopup('escape');\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tif (c.clearOnEscape && this.hasValue()) {\n\t\t\t\t\tthis.clear();\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tif (!c.multiple && !c.freeSolo) {\n\t\t\t\t\tthis.resetInputValue();\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\n\t\t\tcase 'Backspace':\n\t\t\tcase 'Delete': {\n\t\t\t\tif (c.readOnly) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t// VoiceOver re-dispatches a synthetic Backspace immediately after its\n\t\t\t\t// own chip-delete gesture; without this guard it would delete a\n\t\t\t\t// second chip the user never asked to remove. useAutocomplete:1092.\n\t\t\t\tif (event.key === 'Backspace' && this.ignoreNextBackspace) {\n\t\t\t\t\tthis.ignoreNextBackspace = false;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (!c.multiple) {\n\t\t\t\t\t// Single-select chip mode: empty input + a value -> clear it.\n\t\t\t\t\tif (c.singleChip && this.deps.inputValue() === '' && this.hasValue()) {\n\t\t\t\t\t\tthis.commit(null, 'removeOption', this.selectedValues()[0]);\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tconst focusedItem = this.focusedItemIndex();\n\t\t\t\tif (focusedItem !== -1) {\n\t\t\t\t\tthis.removeValueAt(focusedItem);\n\t\t\t\t\tthis.ignoreNextBackspace = true;\n\t\t\t\t\tqueueMicrotask(() => {\n\t\t\t\t\t\tthis.ignoreNextBackspace = false;\n\t\t\t\t\t});\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tif (this.deps.inputValue() === '' && event.key === 'Backspace') {\n\t\t\t\t\tconst values = this.selectedValues();\n\t\t\t\t\tfor (let i = values.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tif (!this.isFixed(values[i])) {\n\t\t\t\t\t\t\tthis.removeValueAt(i);\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tcase 'ArrowLeft':\n\t\t\t\tif (this.deps.inputValue() !== '') {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (c.multiple) {\n\t\t\t\t\tthis.moveItemFocus(-1);\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tif (c.singleChip && this.hasValue()) {\n\t\t\t\t\tthis.focusedItemIndex.set(0);\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\n\t\t\tcase 'ArrowRight':\n\t\t\t\tif (!c.multiple || this.focusedItemIndex() === -1) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tthis.moveItemFocus(1);\n\t\t\t\treturn true;\n\n\t\t\tdefault:\n\t\t\t\treturn false;\n\t\t}\n\t}\n\n\tprivate moveItemFocus(step: number): void {\n\t\tconst count = this.selectedValues().length;\n\t\tif (count === 0) {\n\t\t\treturn;\n\t\t}\n\t\tconst current = this.focusedItemIndex();\n\t\tlet next: number;\n\t\tif (current === -1) {\n\t\t\tnext = step < 0 ? count - 1 : -1;\n\t\t} else {\n\t\t\tnext = current + step;\n\t\t}\n\t\tif (next >= count) {\n\t\t\tnext = -1;\n\t\t} // back to the text input\n\t\tif (next < -1) {\n\t\t\tnext = -1;\n\t\t}\n\t\tthis.focusedItemIndex.set(next);\n\t}\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\nimport type { RenderedOption } from './autocomplete.types';\n\n/**\n * Angular's answer to MUI's `renderOption` / `renderGroup` / `renderValue`\n * render props: content-projected templates with a typed context.\n */\n\nexport interface OptionTemplateContext<T> {\n\t$implicit: T;\n\toption: RenderedOption<T>;\n\thighlighted: boolean;\n\tselected: boolean;\n\t/** The current query, for building your own <mark> highlighting. */\n\tquery: string;\n}\n\n@Directive({ selector: '[ngOption]' })\nexport class NgOptionDef<T = unknown> {\n\treadonly template = inject<TemplateRef<OptionTemplateContext<T>>>(TemplateRef);\n\tstatic ngTemplateContextGuard<T>(_dir: NgOptionDef<T>, _ctx: unknown): _ctx is OptionTemplateContext<T> {\n\t\treturn true;\n\t}\n}\n\nexport interface GroupTemplateContext {\n\t$implicit: string;\n\tcount: number;\n}\n\n@Directive({ selector: '[ngGroupHeader]' })\nexport class NgGroupHeaderDef {\n\treadonly template = inject<TemplateRef<GroupTemplateContext>>(TemplateRef);\n\tstatic ngTemplateContextGuard(_dir: NgGroupHeaderDef, _ctx: unknown): _ctx is GroupTemplateContext {\n\t\treturn true;\n\t}\n}\n\nexport interface ValueTemplateContext<T> {\n\t$implicit: T;\n\tindex: number;\n\tlabel: string;\n\tdisabled: boolean;\n\tfixed: boolean;\n\tfocused: boolean;\n\tremove: () => void;\n}\n\n/** Renders one chip (multiple) or the selected value (single). */\n@Directive({ selector: '[ngValue]' })\nexport class NgValueDef<T = unknown> {\n\treadonly template = inject<TemplateRef<ValueTemplateContext<T>>>(TemplateRef);\n\tstatic ngTemplateContextGuard<T>(_dir: NgValueDef<T>, _ctx: unknown): _ctx is ValueTemplateContext<T> {\n\t\treturn true;\n\t}\n}\n\n@Directive({ selector: '[ngEmpty]' })\nexport class NgEmptyDef {\n\treadonly template = inject<TemplateRef<void>>(TemplateRef);\n}\n\n@Directive({ selector: '[ngLoading]' })\nexport class NgLoadingDef {\n\treadonly template = inject<TemplateRef<void>>(TemplateRef);\n}\n\n@Directive({ selector: '[ngPopupIcon]' })\nexport class NgPopupIconDef {\n\treadonly template = inject<TemplateRef<void>>(TemplateRef);\n}\n\n@Directive({ selector: '[ngClearIcon]' })\nexport class NgClearIconDef {\n\treadonly template = inject<TemplateRef<void>>(TemplateRef);\n}\n\nexport interface PaperTemplateContext {\n\t/** The default listbox template to project inside your surface. */\n\t$implicit: TemplateRef<unknown>;\n}\n\n@Directive({ selector: '[ngPaper]' })\nexport class NgPaperDef {\n\treadonly template = inject<TemplateRef<PaperTemplateContext>>(TemplateRef);\n\tstatic ngTemplateContextGuard(_d: NgPaperDef, _c: unknown): _c is PaperTemplateContext {\n\t\treturn true;\n\t}\n}\n","/**\n * Type surface for the Angular signal-based Autocomplete.\n * Mirrors MUI's `useAutocomplete` / `<Autocomplete />` API.\n */\n\nexport interface FilterOptionsState<T> {\n\treadonly inputValue: string;\n\treadonly getOptionLabel: (option: T) => string;\n}\n\nexport type FilterOptionsFn<T> = (options: readonly T[], state: FilterOptionsState<T>) => T[];\n\n/** Why the selected value changed. */\nexport type ChangeReason = 'createOption' | 'selectOption' | 'removeOption' | 'clear' | 'blur';\n\n/** Why the text in the box changed. */\nexport type InputChangeReason = 'input' | 'reset' | 'clear' | 'blur' | 'selectOption' | 'removeOption';\n\nexport type CloseReason = 'toggleInput' | 'escape' | 'selectOption' | 'removeOption' | 'blur';\n\nexport type OpenReason = 'toggleInput' | 'focus' | 'input' | 'keyboard';\n\n/** Visual style of the field. */\nexport type NgAutocompleteAppearance = 'fill' | 'outline';\n\nexport type HighlightChangeReason = 'keyboard' | 'mouse' | 'auto' | 'touch';\n\nexport interface NgAutocompleteChange<T> {\n\treadonly value: T | readonly T[] | null;\n\treadonly reason: ChangeReason;\n\treadonly option?: T;\n}\n\nexport interface NgAutocompleteInputChange {\n\treadonly value: string;\n\treadonly reason: InputChangeReason;\n}\n\n/** A group header plus the flat indices of the options beneath it. */\nexport interface OptionGroup<T> {\n\treadonly key: number;\n\treadonly group: string;\n\treadonly options: readonly RenderedOption<T>[];\n}\n\n/**\n * An option paired with its index in the *flat* filtered list.\n * The flat index is what `highlightedIndex` and `aria-activedescendant` refer to,\n * so grouping never desynchronises keyboard navigation.\n */\nexport interface RenderedOption<T> {\n\treadonly option: T;\n\treadonly index: number;\n\treadonly key: string | number;\n\treadonly label: string;\n\treadonly disabled: boolean;\n\treadonly selected: boolean;\n}\n\n/**\n * Every behavioural flag MUI exposes. The component resolves its `input()`\n * signals into one of these and hands it to the headless state as a computed.\n */\nexport interface NgAutocompleteConfig<T> {\n\t// identity & labels\n\tgetOptionLabel: (option: T) => string;\n\tgetOptionKey: (option: T) => string | number;\n\tgetOptionDisabled: (option: T) => boolean;\n\tisOptionEqualToValue: (option: T, value: T) => boolean;\n\tgroupBy: ((option: T) => string) | null;\n\tfilterOptions: FilterOptionsFn<T>;\n\n\t// modes\n\tmultiple: boolean;\n\tfreeSolo: boolean;\n\tdisabled: boolean;\n\treadOnly: boolean;\n\tloading: boolean;\n\n\t// behaviour flags (all default to MUI's defaults)\n\tautoComplete: boolean;\n\tautoHighlight: boolean;\n\tautoSelect: boolean;\n\tblurOnSelect: boolean | 'mouse' | 'touch';\n\tclearOnBlur: boolean;\n\tclearOnEscape: boolean;\n\tdisableClearable: boolean;\n\tdisableCloseOnSelect: boolean;\n\tdisabledItemsFocusable: boolean;\n\tdisableListWrap: boolean;\n\tfilterSelectedOptions: boolean;\n\thandleHomeEndKeys: boolean;\n\tincludeInputInList: boolean;\n\topenOnFocus: boolean;\n\tresetHighlightOnMouseLeave: boolean;\n\tselectOnFocus: boolean;\n\n\t/** Options that cannot be removed while `multiple` is on. */\n\tfixedOptions: readonly T[];\n\n\t/**\n\t * Single-select + a projected `ngValue` template + a selected value: render\n\t * one chip in place of the text mirror (MUI's single-value custom render).\n\t */\n\tsingleChip: boolean;\n}\n\n/** Arbitrary `class` + attribute pass-through for one slot element. */\nexport type NgSlotProp = { class?: string } & Record<string, string | number | boolean>;\n\n/**\n * Per-element `class`/attribute overrides, mirroring MUI's `slotProps`.\n * `class` is merged into the element's class list; every other key is\n * applied as an attribute (e.g. `data-*`, `aria-*`).\n */\nexport interface NgAutocompleteSlotProps {\n\troot?: NgSlotProp;\n\tinput?: NgSlotProp;\n\tlistbox?: NgSlotProp;\n\tpaper?: NgSlotProp;\n\tclearIndicator?: NgSlotProp;\n\tpopupIndicator?: NgSlotProp;\n}\n\n// Angular track expressions require keys to be unique within a collection.\n// Unlike MUI's label-based default, use reference identity for objects and\n// value identity for primitives so distinct options may safely share a label.\n// Consumers should still provide a domain key when object instances are\n// recreated or the options contain the same primitive more than once.\nconst optionIds = new WeakMap<object, number>();\nlet nextOptionId = 0;\n\nconst identityOptionKey = (option: unknown): string | number => {\n\tif (option !== null && (typeof option === 'object' || typeof option === 'function')) {\n\t\tlet id = optionIds.get(option as object);\n\t\tif (id === undefined) {\n\t\t\tid = nextOptionId++;\n\t\t\toptionIds.set(option as object, id);\n\t\t}\n\t\treturn `object:${id}`;\n\t}\n\treturn `${typeof option}:${String(option)}`;\n};\n\nexport const DEFAULT_CONFIG: NgAutocompleteConfig<unknown> = {\n\tgetOptionLabel: (option: unknown) => {\n\t\tif (typeof option === 'string') {\n\t\t\treturn option;\n\t\t}\n\t\tconst label = (option as { label?: unknown } | null)?.label;\n\t\tif (typeof label === 'string') {\n\t\t\treturn label;\n\t\t}\n\t\treturn label != null ? String(label) : option != null ? String(option) : '';\n\t},\n\tgetOptionKey: identityOptionKey,\n\tgetOptionDisabled: () => false,\n\tisOptionEqualToValue: (a: unknown, b: unknown) => a === b,\n\tgroupBy: null,\n\tfilterOptions: null as unknown as FilterOptionsFn<unknown>, // filled by the state\n\tmultiple: false,\n\tfreeSolo: false,\n\tdisabled: false,\n\treadOnly: false,\n\tloading: false,\n\tautoComplete: false,\n\tautoHighlight: false,\n\tautoSelect: false,\n\tblurOnSelect: false,\n\tclearOnBlur: false, // MUI: !freeSolo — resolved at runtime\n\tclearOnEscape: false,\n\tdisableClearable: false,\n\tdisableCloseOnSelect: false,\n\tdisabledItemsFocusable: false,\n\tdisableListWrap: false,\n\tfilterSelectedOptions: false,\n\thandleHomeEndKeys: false, // MUI: !freeSolo — resolved at runtime\n\tincludeInputInList: false,\n\topenOnFocus: false,\n\tresetHighlightOnMouseLeave: false,\n\tselectOnFocus: false,\n\tfixedOptions: [],\n\tsingleChip: false,\n};\n","import type { ConnectedPosition } from '@angular/cdk/overlay';\nimport { CdkConnectedOverlay, OverlayModule } from '@angular/cdk/overlay';\nimport { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n\tComponent,\n\tDestroyRef,\n\tElementRef,\n\tTemplateRef,\n\tcomputed,\n\tcontentChild,\n\teffect,\n\tforwardRef,\n\tinject,\n\tinput,\n\tmodel,\n\toutput,\n\tsignal,\n\tuntracked,\n\tviewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatFormField, MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { NgAutocompleteState } from './autocomplete-state';\nimport {\n\tNgClearIconDef,\n\tNgEmptyDef,\n\tNgGroupHeaderDef,\n\tNgLoadingDef,\n\tNgOptionDef,\n\tNgPaperDef,\n\tNgPopupIconDef,\n\tNgValueDef,\n} from './autocomplete-templates';\nimport {\n\tDEFAULT_CONFIG,\n\ttype ChangeReason,\n\ttype CloseReason,\n\ttype FilterOptionsFn,\n\ttype HighlightChangeReason,\n\ttype InputChangeReason,\n\ttype NgAutocompleteAppearance,\n\ttype NgAutocompleteConfig,\n\ttype NgAutocompleteSlotProps,\n\ttype OpenReason,\n\ttype RenderedOption,\n} from './autocomplete.types';\nimport { defaultFilterOptions } from './create-filter-options';\n\nlet nextId = 0;\n\n@Component({\n\tselector: 'autocomplete, lib-autocomplete',\n\timports: [\n\t\tNgTemplateOutlet,\n\t\tOverlayModule,\n\t\tScrollingModule,\n\t\tMatFormFieldModule,\n\t\tMatInputModule,\n\t\tMatChipsModule,\n\t\tMatIconModule,\n\t\tMatButtonModule,\n\t],\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef(() => AutocompleteComponent),\n\t\t\tmulti: true,\n\t\t},\n\t],\n\thost: {\n\t\tclass: 'ng-autocomplete',\n\t\t'[class.ng-disabled]': 'disabled()',\n\t\t'[class.ng-readonly]': 'readOnly()',\n\t\t'[class.ng-fullwidth]': 'fullWidth()',\n\t\t'[attr.data-size]': 'size()',\n\t},\n\tstyleUrl: './autocomplete.component.scss',\n\ttemplateUrl: './autocomplete.component.html',\n})\nexport class AutocompleteComponent<T> implements ControlValueAccessor {\n\tprivate readonly uid = nextId++;\n\treadonly id = input<string | null>(null);\n\tprivate base(): string {\n\t\treturn this.id() ?? `ng-${this.uid}`;\n\t}\n\tget inputId(): string {\n\t\treturn this.base();\n\t}\n\tget listboxId(): string {\n\t\treturn `${this.base()}-listbox`;\n\t}\n\toptionId = (index: number): string => `${this.base()}-option-${index}`;\n\n\t// ── data ─────────────────────────────────────────────────────────────────\n\treadonly options = input.required<readonly T[]>();\n\treadonly value = model<T | readonly T[] | null>(null);\n\treadonly inputValue = model<string>('');\n\treadonly open = model<boolean>(false);\n\n\t// ── identity & labels ────────────────────────────────────────────────────\n\treadonly getOptionLabel = input<(option: T) => string>(DEFAULT_CONFIG.getOptionLabel as (option: T) => string);\n\treadonly getOptionKey = input<(option: T) => string | number>(DEFAULT_CONFIG.getOptionKey as (option: T) => string | number);\n\treadonly getOptionDisabled = input<(option: T) => boolean>(() => false);\n\treadonly isOptionEqualToValue = input<(option: T, value: T) => boolean>((a, b) => a === b);\n\treadonly groupBy = input<((option: T) => string) | null>(null);\n\treadonly filterOptions = input<FilterOptionsFn<T>>(defaultFilterOptions as unknown as FilterOptionsFn<T>);\n\n\t// ── modes ────────────────────────────────────────────────────────────────\n\treadonly multiple = input(false);\n\treadonly freeSolo = input(false);\n\treadonly disabled = model(false);\n\treadonly readOnly = input(false);\n\treadonly loading = input(false);\n\treadonly required = input(false);\n\treadonly invalid = input(false);\n\n\t// ── behaviour flags ──────────────────────────────────────────────────────\n\treadonly autoComplete = input(false);\n\treadonly autoHighlight = input(false);\n\treadonly autoSelect = input(false);\n\treadonly blurOnSelect = input<boolean | 'mouse' | 'touch'>(false);\n\treadonly clearOnBlur = input<boolean | undefined>(undefined); // default: !freeSolo\n\treadonly clearOnEscape = input(false);\n\treadonly disableClearable = input(false);\n\treadonly disableCloseOnSelect = input(false);\n\treadonly disabledItemsFocusable = input(false);\n\treadonly disableListWrap = input(false);\n\treadonly disablePortal = input(false);\n\treadonly filterSelectedOptions = input(false);\n\treadonly handleHomeEndKeys = input<boolean | undefined>(undefined); // default: !freeSolo\n\treadonly includeInputInList = input(false);\n\treadonly openOnFocus = input(false);\n\treadonly resetHighlightOnMouseLeave = input(false);\n\treadonly selectOnFocus = input<boolean | undefined>(undefined); // default: !freeSolo (useAutocomplete:125)\n\treadonly fixedOptions = input<readonly T[]>([]);\n\n\t// ── presentation ─────────────────────────────────────────────────────────\n\treadonly label = input<string | null>(null);\n\treadonly ariaLabel = input<string | null>(null);\n\treadonly placeholder = input<string | null>(null);\n\treadonly size = input<'small' | 'medium'>('medium');\n\treadonly limitTags = input<number>(-1);\n\treadonly showCheckboxes = input(false);\n\treadonly noOptionsText = input('No options');\n\treadonly loadingText = input('Loading…');\n\treadonly virtualize = input(false);\n\treadonly itemSize = input(48);\n\treadonly maxVisibleItems = input(8);\n\treadonly forcePopupIcon = input<boolean | 'auto'>('auto');\n\treadonly openText = input('Open');\n\treadonly closeText = input('Close');\n\treadonly clearText = input('Clear');\n\treadonly getLimitTagsText = input<(more: number) => string>((more) => `+${more}`);\n\treadonly fullWidth = input(false);\n\treadonly appearance = input<NgAutocompleteAppearance>('fill');\n\n\t/** Per-element class/attribute pass-through, mirroring MUI's `slotProps`. */\n\treadonly slotProps = input<NgAutocompleteSlotProps>({});\n\n\tprivate slotClass(key: keyof NgAutocompleteSlotProps): string {\n\t\treturn this.slotProps()[key]?.class ?? '';\n\t}\n\tprivate slotAttrs(key: keyof NgAutocompleteSlotProps): Record<string, string | number | boolean> {\n\t\tconst { class: _class, ...rest } = this.slotProps()[key] ?? {};\n\t\treturn rest;\n\t}\n\n\t// ── outputs ──────────────────────────────────────────────────────────────\n\treadonly valueChanged = output<{ value: T | readonly T[] | null; reason: ChangeReason; option?: T }>();\n\treadonly inputChanged = output<{ value: string; reason: InputChangeReason }>();\n\treadonly opened = output<OpenReason>();\n\treadonly closed = output<CloseReason>();\n\treadonly highlightChanged = output<{ option: T | null; reason: HighlightChangeReason }>();\n\n\t// ── content templates ────────────────────────────────────────────────────\n\treadonly optionTpl = contentChild(NgOptionDef<T>);\n\treadonly groupTpl = contentChild(NgGroupHeaderDef);\n\treadonly valueTpl = contentChild(NgValueDef<T>);\n\treadonly emptyTpl = contentChild(NgEmptyDef);\n\treadonly loadingTpl = contentChild(NgLoadingDef);\n\treadonly popupIconTpl = contentChild(NgPopupIconDef);\n\treadonly clearIconTpl = contentChild(NgClearIconDef);\n\treadonly paperTpl = contentChild(NgPaperDef);\n\n\tprivate readonly inputEl = viewChild<ElementRef<HTMLInputElement>>('inputEl');\n\tprivate readonly listEl = viewChild<ElementRef<HTMLElement>>('listEl');\n\tprivate readonly viewport = viewChild(CdkVirtualScrollViewport);\n\tprotected readonly formField = viewChild(MatFormField);\n\tprotected readonly listboxRef = viewChild<TemplateRef<unknown>>('listbox');\n\tprivate readonly connectedOverlay = viewChild(CdkConnectedOverlay);\n\tprivate readonly host = inject(ElementRef<HTMLElement>);\n\n\t/** What `slotProps` last applied to each target, so changes can be undone. */\n\tprivate readonly slotState = new Map<\n\t\tkeyof NgAutocompleteSlotProps,\n\t\t{ element: HTMLElement; classes: Set<string>; attrs: Map<string, string | null> }\n\t>();\n\n\tprotected readonly overlayPositions: ConnectedPosition[] = [\n\t\t{ originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 0 },\n\t\t{ originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: 0 },\n\t];\n\n\t// ── the headless core ────────────────────────────────────────────────────\n\tprivate readonly config = computed<NgAutocompleteConfig<T>>(() => ({\n\t\tgetOptionLabel: this.getOptionLabel(),\n\t\tgetOptionKey: this.getOptionKey(),\n\t\tgetOptionDisabled: this.getOptionDisabled(),\n\t\tisOptionEqualToValue: this.isOptionEqualToValue(),\n\t\tgroupBy: this.groupBy(),\n\t\tfilterOptions: this.filterOptions(),\n\t\tmultiple: this.multiple(),\n\t\tfreeSolo: this.freeSolo(),\n\t\tdisabled: this.disabled(),\n\t\treadOnly: this.readOnly(),\n\t\tloading: this.loading(),\n\t\tautoComplete: this.autoComplete(),\n\t\tautoHighlight: this.autoHighlight(),\n\t\tautoSelect: this.autoSelect(),\n\t\tblurOnSelect: this.blurOnSelect(),\n\t\tclearOnBlur: this.clearOnBlur() ?? !this.freeSolo(),\n\t\tclearOnEscape: this.clearOnEscape(),\n\t\tdisableClearable: this.disableClearable(),\n\t\tdisableCloseOnSelect: this.disableCloseOnSelect(),\n\t\tdisabledItemsFocusable: this.disabledItemsFocusable(),\n\t\tdisableListWrap: this.disableListWrap(),\n\t\tfilterSelectedOptions: this.filterSelectedOptions(),\n\t\thandleHomeEndKeys: this.handleHomeEndKeys() ?? !this.freeSolo(),\n\t\tincludeInputInList: this.includeInputInList(),\n\t\topenOnFocus: this.openOnFocus(),\n\t\tresetHighlightOnMouseLeave: this.resetHighlightOnMouseLeave(),\n\t\tselectOnFocus: this.selectOnFocus() ?? !this.freeSolo(),\n\t\tfixedOptions: this.fixedOptions(),\n\t\tsingleChip: !this.multiple() && !!this.valueTpl(),\n\t}));\n\n\treadonly state = new NgAutocompleteState<T>({\n\t\toptions: this.options,\n\t\tvalue: this.value,\n\t\tinputValue: this.inputValue,\n\t\topen: this.open,\n\t\tconfig: this.config,\n\t\tevents: {\n\t\t\tchange: (value, reason, option) => {\n\t\t\t\tthis.onChangeFn(value);\n\t\t\t\tthis.valueChanged.emit({ value, reason, option });\n\t\t\t},\n\t\t\tinputChange: (value, reason) => this.inputChanged.emit({ value, reason }),\n\t\t\topened: (reason) => this.opened.emit(reason),\n\t\t\tclosed: (reason) => this.closed.emit(reason),\n\t\t\thighlightChange: (option, reason) => this.highlightChanged.emit({ option, reason }),\n\t\t\trequestBlur: () => this.inputEl()?.nativeElement.blur(),\n\t\t},\n\t});\n\n\t// ── derived view data ────────────────────────────────────────────────────\n\tprotected readonly activeDescendant = computed(() => {\n\t\tconst i = this.state.highlightedIndex();\n\t\treturn this.state.open() && i >= 0 ? this.optionId(i) : null;\n\t});\n\n\t// Autocomplete:557\n\tprotected readonly hasPopupIcon = computed(() => (!this.freeSolo() || this.forcePopupIcon() === true) && this.forcePopupIcon() !== false);\n\n\t/** Single mode + a projected `ngValue` template + a value -> render a chip, not text. */\n\tprotected readonly showSingleChip = computed(() => !this.multiple() && !!this.valueTpl() && this.state.hasValue());\n\n\tprivate readonly valueContexts = computed(() =>\n\t\tthis.state.selectedValues().map((item, index) => ({\n\t\t\tkey: this.getOptionKey()(item),\n\t\t\tcontext: {\n\t\t\t\t$implicit: item,\n\t\t\t\tindex,\n\t\t\t\tlabel: this.getOptionLabel()(item),\n\t\t\t\tdisabled: this.disabled(),\n\t\t\t\tfixed: this.state.isFixed(item),\n\t\t\t\tfocused: this.state.focusedItemIndex() === index,\n\t\t\t\tremove: () => this.state.removeValueAt(index),\n\t\t\t},\n\t\t})),\n\t);\n\n\tprotected readonly visibleValues = computed(() => {\n\t\tconst all = this.valueContexts();\n\t\tconst limit = this.limitTags();\n\t\tif (limit < 0 || this.state.focused()) {\n\t\t\treturn all;\n\t\t}\n\t\treturn all.slice(0, limit);\n\t});\n\n\tprotected readonly hiddenCount = computed(() => this.valueContexts().length - this.visibleValues().length);\n\n\tprotected readonly viewportHeight = computed(() => Math.min(this.state.flatOptions().length, this.maxVisibleItems()) * this.itemSize());\n\n\tprotected readonly fieldWidth = signal<number | null>(null);\n\n\t/**\n\t * Width the chip input needs before it may share the chip row — enough for the\n\t * whole placeholder, so it wraps to its own line instead of being clipped.\n\t */\n\tprotected readonly chipInputMinWidth = computed(() => {\n\t\tconst placeholder = this.placeholder();\n\t\treturn placeholder ? `${placeholder.length + 1}ch` : '30px';\n\t});\n\n\tconstructor() {\n\t\t// Window losing focus (e.g. alt-tab) is not a user-initiated focus of\n\t\t// this control; note it so the next `focus` event skips `openOnFocus`.\n\t\tconst onWindowBlur = () => this.state.noteWindowBlur();\n\t\twindow.addEventListener('blur', onWindowBlur);\n\t\tinject(DestroyRef).onDestroy(() => window.removeEventListener('blur', onWindowBlur));\n\n\t\t// Apply `slotProps` class/attribute pass-through to the input and host root,\n\t\t// diffing against what was last applied so removed props are cleaned up.\n\t\teffect(() => {\n\t\t\tconst targets: [keyof NgAutocompleteSlotProps, HTMLElement | null | undefined][] = [\n\t\t\t\t['input', this.inputEl()?.nativeElement],\n\t\t\t\t['root', this.host.nativeElement],\n\t\t\t];\n\t\t\tfor (const [key, el] of targets) {\n\t\t\t\tif (!el) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tlet applied = this.slotState.get(key);\n\t\t\t\tif (!applied || applied.element !== el) {\n\t\t\t\t\tapplied = { element: el, classes: new Set<string>(), attrs: new Map<string, string | null>() };\n\t\t\t\t\tthis.slotState.set(key, applied);\n\t\t\t\t}\n\n\t\t\t\tconst attrs = this.slotAttrs(key);\n\t\t\t\tconst attrNames = new Set(Object.keys(attrs));\n\t\t\t\tfor (const [name, originalValue] of applied.attrs) {\n\t\t\t\t\tif (!attrNames.has(name)) {\n\t\t\t\t\t\tif (originalValue === null) {\n\t\t\t\t\t\t\tel.removeAttribute(name);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tel.setAttribute(name, originalValue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tapplied.attrs.delete(name);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor (const [name, val] of Object.entries(attrs)) {\n\t\t\t\t\tif (!applied.attrs.has(name)) {\n\t\t\t\t\t\tapplied.attrs.set(name, el.getAttribute(name));\n\t\t\t\t\t}\n\t\t\t\t\tel.setAttribute(name, String(val));\n\t\t\t\t}\n\n\t\t\t\tconst classes = new Set(this.slotClass(key).split(/\\s+/).filter(Boolean));\n\t\t\t\tfor (const cls of applied.classes) {\n\t\t\t\t\tif (!classes.has(cls)) {\n\t\t\t\t\t\tel.classList.remove(cls);\n\t\t\t\t\t\tapplied.classes.delete(cls);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor (const cls of classes) {\n\t\t\t\t\tif (!el.classList.contains(cls)) {\n\t\t\t\t\t\tel.classList.add(cls);\n\t\t\t\t\t\tapplied.classes.add(cls);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// Keep the text box in sync when the value is changed from the outside\n\t\t// (patchValue, another component, a reset).\n\t\teffect(() => {\n\t\t\tconst selected = this.state.selectedValues();\n\t\t\tuntracked(() => {\n\t\t\t\tif (this.state.focused()) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this.multiple()) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this.showSingleChip()) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst current = this.inputValue();\n\t\t\t\tconst expected = selected[0] === undefined ? '' : this.getOptionLabel()(selected[0]);\n\t\t\t\tif (current !== expected && !this.freeSolo()) {\n\t\t\t\t\tthis.state.setInputValue(expected, 'reset');\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\t// Scroll the highlighted option into view — plain list or virtual.\n\t\teffect(() => {\n\t\t\tconst index = this.state.highlightedIndex();\n\t\t\tif (index < 0 || !this.state.open()) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst viewport = this.viewport();\n\t\t\tif (viewport) {\n\t\t\t\tconst range = viewport.getRenderedRange();\n\t\t\t\tif (index < range.start || index >= range.end) {\n\t\t\t\t\tviewport.scrollToIndex(index, 'smooth');\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst list = this.listEl()?.nativeElement;\n\t\t\tqueueMicrotask(() => {\n\t\t\t\tconst option = list?.querySelector(`[data-index=\"${index}\"]`) as HTMLElement | null;\n\t\t\t\toption?.scrollIntoView?.({ block: 'nearest' });\n\t\t\t});\n\t\t});\n\n\t\t// Inline completion (`autoComplete`): write the full label into the input\n\t\t// and select the part the user has not typed yet.\n\t\teffect(() => {\n\t\t\tconst completion = this.state.inlineCompletion();\n\t\t\tconst el = this.inputEl()?.nativeElement;\n\t\t\tif (!el || completion == null) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst typedLength = untracked(this.inputValue).length;\n\t\t\tqueueMicrotask(() => {\n\t\t\t\tel.value = completion;\n\t\t\t\tel.setSelectionRange(typedLength, completion.length);\n\t\t\t});\n\t\t});\n\n\t\t// Match the overlay to the field, and keep it anchored: a connected overlay\n\t\t// positions itself only on open, but chips resize the field under it.\n\t\teffect((onCleanup) => {\n\t\t\tif (!this.state.open()) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst field = this.host.nativeElement.querySelector('.ng-field') as HTMLElement | null;\n\t\t\tif (!field) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst sync = (): void => {\n\t\t\t\tthis.fieldWidth.set(field.getBoundingClientRect().width);\n\t\t\t\tthis.connectedOverlay()?.overlayRef?.updatePosition();\n\t\t\t};\n\t\t\tsync();\n\n\t\t\t// Non-browser/test environments keep just the initial sync above.\n\t\t\tif (typeof ResizeObserver === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst observer = new ResizeObserver(sync);\n\t\t\tobserver.observe(field);\n\t\t\tonCleanup(() => observer.disconnect());\n\t\t});\n\t}\n\n\t// ── event handlers ───────────────────────────────────────────────────────\n\tprotected onInput(event: Event): void {\n\t\tthis.state.handleInput((event.target as HTMLInputElement).value);\n\t}\n\n\tprotected onFocus(): void {\n\t\tthis.state.handleFocus();\n\t\tconst selectOnFocus = this.selectOnFocus() ?? !this.freeSolo();\n\t\tif (selectOnFocus) {\n\t\t\tqueueMicrotask(() => this.inputEl()?.nativeElement.select());\n\t\t}\n\t}\n\n\tprotected onBlur(): void {\n\t\tthis.state.handleBlur();\n\t\tthis.onTouchedFn();\n\t}\n\n\tprotected onKeyDown(event: KeyboardEvent): void {\n\t\tif (this.state.handleKeyDown(event)) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\tprotected onFieldMouseDown(event: MouseEvent): void {\n\t\tif ((event.target as HTMLElement).closest('button')) {\n\t\t\treturn;\n\t\t}\n\t\tif (event.target !== this.inputEl()?.nativeElement) {\n\t\t\tevent.preventDefault();\n\t\t\tthis.focusInput();\n\t\t}\n\t\tif (!this.state.open() && !this.readOnly()) {\n\t\t\tthis.state.openPopup('toggleInput');\n\t\t}\n\t}\n\n\tprotected onOptionHover(item: RenderedOption<T>): void {\n\t\tif (item.disabled && !this.disabledItemsFocusable()) {\n\t\t\treturn;\n\t\t}\n\t\tif (this.state.highlightedIndex() !== item.index) {\n\t\t\tthis.state.setHighlight(item.index, 'mouse');\n\t\t}\n\t}\n\n\tprotected onListMouseLeave(): void {\n\t\tif (this.resetHighlightOnMouseLeave()) {\n\t\t\tthis.state.moveHighlight('reset');\n\t\t}\n\t}\n\n\tprotected onOptionClick(item: RenderedOption<T>, event: MouseEvent): void {\n\t\tevent.preventDefault();\n\t\tif (item.disabled) {\n\t\t\treturn;\n\t\t}\n\t\t// `selectOption` now owns the blurOnSelect decision (touch/mouse resolved\n\t\t// against `state.isTouch`) and fires `requestBlur` synchronously when a\n\t\t// blur is due, which re-enters `onBlur()` -> `state.handleBlur()` before\n\t\t// `selectOption` returns. So `state.focused()` already reflects whether\n\t\t// that happened, and re-focusing here only when it did NOT keeps a plain\n\t\t// click's \"stay focused\" behaviour without fighting an intentional blur.\n\t\tthis.state.selectOption(item.option, 'selectOption');\n\t\tthis.state.isTouch.set(false);\n\t\tif (this.state.focused()) {\n\t\t\tthis.focusInput();\n\t\t}\n\t}\n\n\tprotected onOutsideClick(event: MouseEvent): void {\n\t\tif (this.host.nativeElement.contains(event.target as Node)) {\n\t\t\treturn;\n\t\t}\n\t\tthis.state.closePopup('blur');\n\t}\n\n\tprotected trackOption = (_: number, item: RenderedOption<T>) => item.key;\n\n\tfocusInput(): void {\n\t\tthis.inputEl()?.nativeElement.focus();\n\t}\n\n\t// ── ControlValueAccessor ─────────────────────────────────────────────────\n\tprivate onChangeFn: (value: unknown) => void = () => {};\n\tprivate onTouchedFn: () => void = () => {};\n\n\twriteValue(value: T | readonly T[] | null): void {\n\t\tthis.value.set(value ?? (this.multiple() ? [] : null));\n\t\tthis.state.resetInputValue('reset');\n\t}\n\tregisterOnChange(fn: (value: unknown) => void): void {\n\t\tthis.onChangeFn = fn;\n\t}\n\tregisterOnTouched(fn: () => void): void {\n\t\tthis.onTouchedFn = fn;\n\t}\n\tsetDisabledState(isDisabled: boolean): void {\n\t\tthis.disabled.set(isDisabled);\n\t}\n}\n","<!--\n  The field renders with Angular Material (M2) components: a `mat-form-field`\n  hosts either a plain `matInput` (single) or a `mat-chip-grid` (multiple /\n  single-chip). The headless behaviour (state machine, keyboard, ARIA) is\n  unchanged — only the field chrome is Material now. The wrapper `div` handles\n  field mousedown-to-focus/open behaviour and provides a fallback overlay\n  origin until the Material form field is available.\n-->\n<div #origin=\"cdkOverlayOrigin\" (mousedown)=\"onFieldMouseDown($event)\" cdkOverlayOrigin class=\"ng-field-origin\">\n\t@if (!multiple() && !showSingleChip()) {\n\t\t<!-- Single-select: a plain input as the form-field control. -->\n\t\t<mat-form-field [appearance]=\"appearance()\" class=\"ng-field\">\n\t\t\t@if (label(); as text) {\n\t\t\t\t<mat-label>{{ text }}</mat-label>\n\t\t\t}\n\n\t\t\t<input\n\t\t\t\t#inputEl\n\t\t\t\t(blur)=\"onBlur()\"\n\t\t\t\t(focus)=\"onFocus()\"\n\t\t\t\t(input)=\"onInput($event)\"\n\t\t\t\t(keydown)=\"onKeyDown($event)\"\n\t\t\t\t[attr.aria-activedescendant]=\"activeDescendant()\"\n\t\t\t\t[attr.aria-autocomplete]=\"freeSolo() ? 'both' : 'list'\"\n\t\t\t\t[attr.aria-controls]=\"state.open() ? listboxId : null\"\n\t\t\t\t[attr.aria-expanded]=\"state.open()\"\n\t\t\t\t[attr.aria-invalid]=\"invalid() || null\"\n\t\t\t\t[attr.aria-label]=\"ariaLabel()\"\n\t\t\t\t[attr.aria-required]=\"required() || null\"\n\t\t\t\t[attr.placeholder]=\"placeholder()\"\n\t\t\t\t[disabled]=\"disabled()\"\n\t\t\t\t[id]=\"inputId\"\n\t\t\t\t[readOnly]=\"readOnly()\"\n\t\t\t\t[value]=\"inputValue()\"\n\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\tclass=\"ng-input\"\n\t\t\t\tmatInput\n\t\t\t\trole=\"combobox\"\n\t\t\t\tspellcheck=\"false\"\n\t\t\t\ttype=\"text\" />\n\n\t\t\t@if (loading()) {\n\t\t\t\t<span aria-hidden=\"true\" class=\"ng-spinner\" matSuffix></span>\n\t\t\t}\n\t\t\t<!-- Always rendered (kept in the suffix slot) and only hidden when not\n           applicable, so the input doesn't resize/reflow as the clear button\n           appears and disappears. -->\n\t\t\t<button\n\t\t\t\t(click)=\"state.clear(); focusInput()\"\n\t\t\t\t[attr.aria-hidden]=\"!state.clearVisible() || null\"\n\t\t\t\t[attr.aria-label]=\"clearText()\"\n\t\t\t\t[attr.title]=\"clearText()\"\n\t\t\t\t[class.ng-hidden]=\"!state.clearVisible()\"\n\t\t\t\tclass=\"ng-clear\"\n\t\t\t\tmat-icon-button\n\t\t\t\tmatSuffix\n\t\t\t\ttabindex=\"-1\"\n\t\t\t\ttype=\"button\">\n\t\t\t\t<ng-container [ngTemplateOutlet]=\"clearIconTpl()?.template ?? defaultClearIcon\" />\n\t\t\t</button>\n\t\t\t@if (hasPopupIcon()) {\n\t\t\t\t<button\n\t\t\t\t\t(click)=\"state.togglePopup(); focusInput()\"\n\t\t\t\t\t[attr.aria-label]=\"state.open() ? closeText() : openText()\"\n\t\t\t\t\t[attr.title]=\"state.open() ? closeText() : openText()\"\n\t\t\t\t\t[class.ng-open]=\"state.open()\"\n\t\t\t\t\t[disabled]=\"disabled() || readOnly()\"\n\t\t\t\t\tclass=\"ng-toggle\"\n\t\t\t\t\tmat-icon-button\n\t\t\t\t\tmatSuffix\n\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\ttype=\"button\">\n\t\t\t\t\t<ng-container [ngTemplateOutlet]=\"popupIconTpl()?.template ?? defaultPopupIcon\" />\n\t\t\t\t</button>\n\t\t\t}\n\t\t</mat-form-field>\n\t} @else {\n\t\t<!-- Multiple (chips) or single-chip: a mat-chip-grid as the control. -->\n\t\t<mat-form-field [appearance]=\"appearance()\" class=\"ng-field\">\n\t\t\t@if (label(); as text) {\n\t\t\t\t<mat-label>{{ text }}</mat-label>\n\t\t\t}\n\n\t\t\t<mat-chip-grid #chipGrid [disabled]=\"disabled()\" [required]=\"required()\">\n\t\t\t\t@for (item of visibleValues(); track item.key) {\n\t\t\t\t\t<mat-chip-row\n\t\t\t\t\t\t(removed)=\"item.context.remove()\"\n\t\t\t\t\t\t[editable]=\"false\"\n\t\t\t\t\t\t[removable]=\"!item.context.fixed && !readOnly() && !disabled()\"\n\t\t\t\t\t\tclass=\"ng-chip\">\n\t\t\t\t\t\t@if (valueTpl(); as vt) {\n\t\t\t\t\t\t\t<ng-container [ngTemplateOutletContext]=\"item.context\" [ngTemplateOutlet]=\"vt.template\" />\n\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t{{ item.context.label }}\n\t\t\t\t\t\t\t@if (!item.context.fixed && !readOnly() && !disabled()) {\n\t\t\t\t\t\t\t\t<button [attr.aria-label]=\"'Remove ' + item.context.label\" matChipRemove type=\"button\">\n\t\t\t\t\t\t\t\t\t<span aria-hidden=\"true\">&times;</span>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t</mat-chip-row>\n\t\t\t\t}\n\t\t\t\t@if (multiple() && hiddenCount() > 0) {\n\t\t\t\t\t<span class=\"ng-more\">{{ getLimitTagsText()(hiddenCount()) }}</span>\n\t\t\t\t}\n\n\t\t\t\t<!-- Inside the grid, so the input is a flex item on the chip row; as a\n\t\t\t\t     sibling it would be a block in the infix and wrap to its own line. -->\n\t\t\t\t<input\n\t\t\t\t\t#inputEl\n\t\t\t\t\t(blur)=\"onBlur()\"\n\t\t\t\t\t(focus)=\"onFocus()\"\n\t\t\t\t\t(input)=\"onInput($event)\"\n\t\t\t\t\t(keydown)=\"onKeyDown($event)\"\n\t\t\t\t\t[attr.aria-activedescendant]=\"activeDescendant()\"\n\t\t\t\t\t[attr.aria-autocomplete]=\"freeSolo() ? 'both' : 'list'\"\n\t\t\t\t\t[attr.aria-controls]=\"state.open() ? listboxId : null\"\n\t\t\t\t\t[attr.aria-expanded]=\"state.open()\"\n\t\t\t\t\t[attr.aria-label]=\"ariaLabel()\"\n\t\t\t\t\t[disabled]=\"disabled()\"\n\t\t\t\t\t[id]=\"inputId\"\n\t\t\t\t\t[matChipInputFor]=\"chipGrid\"\n\t\t\t\t\t[placeholder]=\"placeholder() ?? ''\"\n\t\t\t\t\t[readOnly]=\"readOnly()\"\n\t\t\t\t\t[style.--ng-chip-input-min]=\"chipInputMinWidth()\"\n\t\t\t\t\t[value]=\"showSingleChip() ? '' : inputValue()\"\n\t\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t\tclass=\"ng-input\"\n\t\t\t\t\trole=\"combobox\"\n\t\t\t\t\tspellcheck=\"false\"\n\t\t\t\t\ttype=\"text\" />\n\t\t\t</mat-chip-grid>\n\n\t\t\t@if (loading()) {\n\t\t\t\t<span aria-hidden=\"true\" class=\"ng-spinner\" matSuffix></span>\n\t\t\t}\n\t\t\t<!-- Always rendered (kept in the suffix slot) and only hidden when not\n           applicable, so the input doesn't resize/reflow as the clear button\n           appears and disappears. -->\n\t\t\t<button\n\t\t\t\t(click)=\"state.clear(); focusInput()\"\n\t\t\t\t[attr.aria-hidden]=\"!state.clearVisible() || null\"\n\t\t\t\t[attr.aria-label]=\"clearText()\"\n\t\t\t\t[attr.title]=\"clearText()\"\n\t\t\t\t[class.ng-hidden]=\"!state.clearVisible()\"\n\t\t\t\tclass=\"ng-clear\"\n\t\t\t\tmat-icon-button\n\t\t\t\tmatSuffix\n\t\t\t\ttabindex=\"-1\"\n\t\t\t\ttype=\"button\">\n\t\t\t\t<ng-container [ngTemplateOutlet]=\"clearIconTpl()?.template ?? defaultClearIcon\" />\n\t\t\t</button>\n\t\t\t@if (hasPopupIcon()) {\n\t\t\t\t<button\n\t\t\t\t\t(click)=\"state.togglePopup(); focusInput()\"\n\t\t\t\t\t[attr.aria-label]=\"state.open() ? closeText() : openText()\"\n\t\t\t\t\t[attr.title]=\"state.open() ? closeText() : openText()\"\n\t\t\t\t\t[class.ng-open]=\"state.open()\"\n\t\t\t\t\t[disabled]=\"disabled() || readOnly()\"\n\t\t\t\t\tclass=\"ng-toggle\"\n\t\t\t\t\tmat-icon-button\n\t\t\t\t\tmatSuffix\n\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\ttype=\"button\">\n\t\t\t\t\t<ng-container [ngTemplateOutlet]=\"popupIconTpl()?.template ?? defaultPopupIcon\" />\n\t\t\t\t</button>\n\t\t\t}\n\t\t</mat-form-field>\n\t}\n</div>\n\n<!-- Listbox, rendered either inline (disablePortal) or in an overlay. -->\n<ng-template #listbox>\n\t@if (paperTpl(); as paper) {\n\t\t<ng-container [ngTemplateOutletContext]=\"{ $implicit: surfaceBody }\" [ngTemplateOutlet]=\"paper.template\" />\n\t} @else {\n\t\t<div (mousedown)=\"$event.preventDefault()\" [style.width.px]=\"disablePortal() ? null : fieldWidth()\" class=\"ng-popup\">\n\t\t\t<ng-container [ngTemplateOutlet]=\"surfaceBody\" />\n\t\t</div>\n\t}\n</ng-template>\n\n<ng-template #surfaceBody>\n\t@if (loading() && state.isEmpty()) {\n\t\t<div class=\"ng-status\" role=\"status\">\n\t\t\t<ng-container [ngTemplateOutlet]=\"loadingTpl()?.template ?? defaultLoading\" />\n\t\t</div>\n\t} @else if (state.isEmpty()) {\n\t\t<div class=\"ng-status\" role=\"status\">\n\t\t\t<ng-container [ngTemplateOutlet]=\"emptyTpl()?.template ?? defaultEmpty\" />\n\t\t</div>\n\t} @else if (virtualize() && !groupBy()) {\n\t\t<cdk-virtual-scroll-viewport\n\t\t\t(scroll)=\"state.notifyScroll()\"\n\t\t\t[attr.aria-multiselectable]=\"multiple() || null\"\n\t\t\t[id]=\"listboxId\"\n\t\t\t[itemSize]=\"itemSize()\"\n\t\t\t[style.--ng-row]=\"itemSize() + 'px'\"\n\t\t\t[style.height.px]=\"viewportHeight()\"\n\t\t\t[style.max-height.px]=\"viewportHeight()\"\n\t\t\tclass=\"ng-listbox\"\n\t\t\trole=\"listbox\">\n\t\t\t<ng-container *cdkVirtualFor=\"let item of state.flatOptions(); trackBy: trackOption\">\n\t\t\t\t<ng-container [ngTemplateOutletContext]=\"{ item }\" [ngTemplateOutlet]=\"optionRow\" />\n\t\t\t</ng-container>\n\t\t</cdk-virtual-scroll-viewport>\n\t} @else {\n\t\t<ul\n\t\t\t#listEl\n\t\t\t(mouseleave)=\"onListMouseLeave()\"\n\t\t\t(scroll)=\"state.notifyScroll()\"\n\t\t\t[attr.aria-multiselectable]=\"multiple() || null\"\n\t\t\t[id]=\"listboxId\"\n\t\t\tclass=\"ng-listbox\"\n\t\t\trole=\"listbox\">\n\t\t\t@if (groupBy()) {\n\t\t\t\t@for (group of state.groups(); track group.key) {\n\t\t\t\t\t<li class=\"ng-group\" role=\"presentation\">\n\t\t\t\t\t\t<div class=\"ng-group-header\" role=\"presentation\">\n\t\t\t\t\t\t\t<ng-container\n\t\t\t\t\t\t\t\t[ngTemplateOutletContext]=\"{\n\t\t\t\t\t\t\t\t\t$implicit: group.group,\n\t\t\t\t\t\t\t\t\tcount: group.options.length,\n\t\t\t\t\t\t\t\t}\"\n\t\t\t\t\t\t\t\t[ngTemplateOutlet]=\"groupTpl()?.template ?? defaultGroup\" />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<ul class=\"ng-group-items\" role=\"group\">\n\t\t\t\t\t\t\t@for (item of group.options; track item.key) {\n\t\t\t\t\t\t\t\t<ng-container [ngTemplateOutletContext]=\"{ item }\" [ngTemplateOutlet]=\"optionRow\" />\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</li>\n\t\t\t\t}\n\t\t\t} @else {\n\t\t\t\t@for (item of state.flatOptions(); track item.key) {\n\t\t\t\t\t<ng-container [ngTemplateOutletContext]=\"{ item }\" [ngTemplateOutlet]=\"optionRow\" />\n\t\t\t\t}\n\t\t\t}\n\t\t</ul>\n\t}\n</ng-template>\n\n<ng-template #optionRow let-item=\"item\">\n\t<li\n\t\t(click)=\"onOptionClick(item, $event)\"\n\t\t(mousemove)=\"onOptionHover(item)\"\n\t\t(touchstart)=\"state.handleOptionTouchStart(item.index)\"\n\t\t[attr.aria-disabled]=\"item.disabled || null\"\n\t\t[attr.aria-selected]=\"item.selected\"\n\t\t[attr.data-index]=\"item.index\"\n\t\t[class.ng-highlighted]=\"state.highlightedIndex() === item.index\"\n\t\t[class.ng-selected]=\"item.selected\"\n\t\t[id]=\"optionId(item.index)\"\n\t\tclass=\"ng-option\"\n\t\trole=\"option\">\n\t\t<ng-container\n\t\t\t[ngTemplateOutletContext]=\"{\n\t\t\t\t$implicit: item.option,\n\t\t\t\toption: item,\n\t\t\t\thighlighted: state.highlightedIndex() === item.index,\n\t\t\t\tselected: item.selected,\n\t\t\t\tquery: inputValue(),\n\t\t\t}\"\n\t\t\t[ngTemplateOutlet]=\"optionTpl()?.template ?? defaultOption\" />\n\t</li>\n</ng-template>\n\n<!-- Defaults, all overridable via the *ng… template directives. -->\n<ng-template #defaultOption let-item=\"option\">\n\t@if (multiple() && showCheckboxes()) {\n\t\t<span [class.ng-checked]=\"item.selected\" aria-hidden=\"true\" class=\"ng-check\"></span>\n\t}\n\t<span class=\"ng-option-label\">{{ item.label }}</span>\n</ng-template>\n\n<ng-template #defaultGroup let-name>{{ name }}</ng-template>\n<ng-template #defaultEmpty>{{ noOptionsText() }}</ng-template>\n<ng-template #defaultLoading>{{ loadingText() }}</ng-template>\n<ng-template #defaultPopupIcon\n\t><svg aria-hidden=\"true\" viewBox=\"0 0 24 24\"><path d=\"M7 10l5 5 5-5z\" /></svg\n></ng-template>\n<ng-template #defaultClearIcon\n\t><svg aria-hidden=\"true\" viewBox=\"0 0 24 24\">\n\t\t<path d=\"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\" /></svg\n></ng-template>\n\n@if (state.listboxVisible()) {\n\t@if (disablePortal()) {\n\t\t<ng-container [ngTemplateOutlet]=\"listboxRef()!\" />\n\t} @else {\n\t\t<ng-template\n\t\t\t(overlayOutsideClick)=\"onOutsideClick($event)\"\n\t\t\t[cdkConnectedOverlayOpen]=\"true\"\n\t\t\t[cdkConnectedOverlayOrigin]=\"formField()?.getConnectedOverlayOrigin() ?? origin\"\n\t\t\t[cdkConnectedOverlayPositions]=\"overlayPositions\"\n\t\t\t[cdkConnectedOverlayViewportMargin]=\"8\"\n\t\t\tcdkConnectedOverlay>\n\t\t\t<ng-container [ngTemplateOutlet]=\"listboxRef()!\" />\n\t\t</ng-template>\n\t}\n}\n","import { Component, output, ChangeDetectionStrategy } from '@angular/core';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\n\n@Component({\n\tselector: 'autocomplete-clear-button',\n\tstandalone: true,\n\timports: [MatIconButton, MatIcon],\n\tchangeDetection: ChangeDetectionStrategy.Eager,\n\ttemplate: `\n\t\t<button\n\t\t\tmat-icon-button\n\t\t\ttype=\"button\"\n\t\t\taria-label=\"Clear value\"\n\t\t\tstyle=\"padding: 0 !important; width: 32px; height: 32px;\"\n\t\t\t(click)=\"clicked.emit($event)\">\n\t\t\t<mat-icon>close</mat-icon>\n\t\t</button>\n\t`,\n})\nexport class AutocompleteClearButtonComponent {\n\treadonly clicked = output<MouseEvent>();\n}\n","import { Component, output, signal, ChangeDetectionStrategy } from '@angular/core';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\n\n@Component({\n\tselector: 'autocomplete-dropdown-button',\n\tstandalone: true,\n\timports: [MatIconButton, MatIcon],\n\tchangeDetection: ChangeDetectionStrategy.Eager,\n\ttemplate: `\n\t\t<button\n\t\t\tmat-icon-button\n\t\t\ttype=\"button\"\n\t\t\tstyle=\"padding: 0 !important; width: 32px; height: 32px;\"\n\t\t\t[attr.aria-label]=\"expanded() ? 'Close options' : 'Open options'\"\n\t\t\t(click)=\"clicked.emit($event)\">\n\t\t\t<mat-icon>{{ expanded() ? 'arrow_drop_up' : 'arrow_drop_down' }}</mat-icon>\n\t\t</button>\n\t`,\n})\nexport class AutocompleteDropdownButtonComponent {\n\treadonly expanded = signal(false);\n\treadonly clicked = output<MouseEvent>();\n}\n","import {\n\tAfterViewInit,\n\tApplicationRef,\n\tComponentRef,\n\tcreateComponent,\n\tDestroyRef,\n\tDirective,\n\tElementRef,\n\tEnvironmentInjector,\n\tinject,\n\tRenderer2,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { MatAutocompleteTrigger } from '@angular/material/autocomplete';\nimport { AutocompleteClearButtonComponent } from './autocomplete-clear-button.component';\nimport { AutocompleteDropdownButtonComponent } from './autocomplete-dropdown-button.component';\n\n/**\n * Single directive that adds clear and dropdown-toggle icon buttons to a\n * Material autocomplete input. Unlike {@link LibAutocompleteActionsDirective},\n * this directive is applied directly to the `input` element and does not require\n * an anchor directive or a separate suffix component.\n *\n * Usage:\n * ```html\n * <mat-form-field appearance=\"outline\">\n *   <mat-label>City</mat-label>\n *   <input matInput [matAutocomplete]=\"auto\" formControlName=\"city\" autocompleteSuffix />\n *   <mat-autocomplete #auto=\"matAutocomplete\"> … </mat-autocomplete>\n * </mat-form-field>\n * ```\n *\n * @author Pavan Kumar Jadda\n * @since 21.8.0\n */\n@Directive({\n\tselector: 'input[matAutocomplete][autocompleteSuffix]',\n\tstandalone: true,\n})\nexport class AutocompleteSuffixDirective implements AfterViewInit {\n\tprivate readonly trigger = inject(MatAutocompleteTrigger);\n\tprivate readonly el = inject(ElementRef<HTMLInputElement>);\n\tprivate readonly renderer = inject(Renderer2);\n\tprivate readonly destroyRef = inject(DestroyRef);\n\tprivate readonly ngControl = inject(NgControl, { optional: true, self: true });\n\tprivate readonly appRef = inject(ApplicationRef);\n\tprivate readonly envInjector = inject(EnvironmentInjector);\n\n\tprivate clearRef: ComponentRef<AutocompleteClearButtonComponent> | null = null;\n\tprivate dropdownRef: ComponentRef<AutocompleteDropdownButtonComponent> | null = null;\n\tprivate isExpanded = false;\n\tprivate readonly unlisten: (() => void)[] = [];\n\n\tngAfterViewInit(): void {\n\t\tthis.createSuffixElements();\n\t\tthis.setupListeners();\n\t\tthis.updateClearButtonVisibility();\n\t}\n\n\tprivate createSuffixElements(): void {\n\t\tconst formField = this.el.nativeElement.closest('mat-form-field');\n\t\tif (!formField) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst flexContainer = formField.querySelector('.mat-mdc-form-field-flex');\n\t\tif (!flexContainer) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet suffixWrapper = flexContainer.querySelector('.mat-mdc-form-field-icon-suffix');\n\t\tif (!suffixWrapper) {\n\t\t\tsuffixWrapper = this.renderer.createElement('div');\n\t\t\tthis.renderer.addClass(suffixWrapper, 'mat-mdc-form-field-icon-suffix');\n\t\t\tthis.renderer.setAttribute(suffixWrapper, 'data-mat-icon-type', 'font');\n\t\t\tthis.renderer.appendChild(flexContainer, suffixWrapper);\n\t\t}\n\n\t\tconst container = this.renderer.createElement('div');\n\t\tthis.renderer.setStyle(container, 'display', 'flex');\n\t\tthis.renderer.setStyle(container, 'align-items', 'center');\n\n\t\tthis.clearRef = createComponent(AutocompleteClearButtonComponent, { environmentInjector: this.envInjector });\n\t\tthis.appRef.attachView(this.clearRef.hostView);\n\t\tthis.clearRef.instance.clicked.subscribe((e) => this.clearInput(e));\n\t\tthis.renderer.setStyle(this.clearRef.location.nativeElement, 'visibility', 'hidden');\n\n\t\tthis.dropdownRef = createComponent(AutocompleteDropdownButtonComponent, { environmentInjector: this.envInjector });\n\t\tthis.appRef.attachView(this.dropdownRef.hostView);\n\t\tthis.dropdownRef.instance.clicked.subscribe((e) => this.togglePanel(e));\n\n\t\tthis.renderer.appendChild(container, this.clearRef.location.nativeElement);\n\t\tthis.renderer.appendChild(container, this.dropdownRef.location.nativeElement);\n\t\tthis.renderer.appendChild(suffixWrapper, container);\n\n\t\tthis.destroyRef.onDestroy(() => {\n\t\t\tthis.clearRef?.destroy();\n\t\t\tthis.dropdownRef?.destroy();\n\t\t});\n\t}\n\n\tprivate setupListeners(): void {\n\t\tthis.unlisten.push(this.renderer.listen(this.el.nativeElement, 'input', () => this.updateClearButtonVisibility()));\n\n\t\tconst autocomplete = this.trigger.autocomplete;\n\n\t\tconst openedSub = autocomplete.opened.subscribe(() => {\n\t\t\tthis.isExpanded = true;\n\t\t\tthis.updateDropdownIcon();\n\t\t\tthis.scrollSelectedOptionIntoView();\n\t\t});\n\t\tconst closedSub = autocomplete.closed.subscribe(() => {\n\t\t\tthis.isExpanded = false;\n\t\t\tthis.updateDropdownIcon();\n\t\t\tthis.updateClearButtonVisibility();\n\t\t});\n\n\t\tconst selectedSub = autocomplete.optionSelected.subscribe(() => this.updateClearButtonVisibility());\n\n\t\tlet valueChangesSub: { unsubscribe(): void } | null = null;\n\t\tif (this.ngControl?.control) {\n\t\t\tvalueChangesSub = this.ngControl.control.valueChanges.subscribe(() => this.updateClearButtonVisibility());\n\t\t}\n\n\t\tthis.destroyRef.onDestroy(() => {\n\t\t\tthis.unlisten.forEach((fn) => fn());\n\t\t\topenedSub.unsubscribe();\n\t\t\tclosedSub.unsubscribe();\n\t\t\tselectedSub.unsubscribe();\n\t\t\tvalueChangesSub?.unsubscribe();\n\t\t});\n\t}\n\n\tprivate clearInput(event: Event): void {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\tthis.trigger.closePanel();\n\t\tthis.el.nativeElement.value = '';\n\n\t\tif (this.ngControl?.control) {\n\t\t\tthis.ngControl.control.setValue(null, { emitEvent: true });\n\t\t\tthis.ngControl.control.markAsTouched();\n\t\t}\n\n\t\tthis.updateClearButtonVisibility();\n\t\tqueueMicrotask(() => this.el.nativeElement.focus());\n\t}\n\n\tprivate togglePanel(event: Event): void {\n\t\tevent.stopPropagation();\n\t\tif (this.trigger.panelOpen) {\n\t\t\tthis.trigger.closePanel();\n\t\t} else {\n\t\t\tthis.trigger.openPanel();\n\t\t}\n\t}\n\n\tprivate updateClearButtonVisibility(): void {\n\t\tconst hasValue = !!(this.el.nativeElement.value || this.ngControl?.control?.value);\n\t\tif (this.clearRef) {\n\t\t\tthis.renderer.setStyle(this.clearRef.location.nativeElement, 'visibility', hasValue ? 'visible' : 'hidden');\n\t\t}\n\t}\n\n\tprivate scrollSelectedOptionIntoView(): void {\n\t\trequestAnimationFrame(() => {\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tconst panelEl = this.trigger.autocomplete.panel?.nativeElement as HTMLElement | undefined;\n\t\t\t\tif (!panelEl) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst selected = panelEl.querySelector('.mat-mdc-option.mdc-list-item--selected') as HTMLElement | null;\n\t\t\t\tselected?.scrollIntoView({ block: 'nearest', inline: 'nearest' });\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate updateDropdownIcon(): void {\n\t\tif (this.dropdownRef) {\n\t\t\tthis.dropdownRef.instance.expanded.set(this.isExpanded);\n\t\t}\n\t}\n}\n","import {\n\tApplicationRef,\n\tcreateComponent,\n\tDirective,\n\teffect,\n\tElementRef,\n\tEnvironmentInjector,\n\tinject,\n\tinput,\n\tOnDestroy,\n} from '@angular/core';\nimport { MatIcon } from '@angular/material/icon';\n\n/**\n * A directive that adds an icon to a link.\n *\n * @example\n * <a linkIcon=\"home\">Home</a>\n *\n * @author Pavan Kumar Jadda\n * @since 22.5.0\n */\n@Directive({\n\tselector: 'a[linkIcon]',\n\thost: {\n\t\tclass: 'app-link-icon',\n\t},\n})\nexport class LinkIconDirective implements OnDestroy {\n\treadonly linkIcon = input.required<string>();\n\n\tprivate readonly host = inject(ElementRef<HTMLAnchorElement>);\n\tprivate readonly environmentInjector = inject(EnvironmentInjector);\n\tprivate readonly appRef = inject(ApplicationRef);\n\tprivate readonly iconRef = createComponent(MatIcon, { environmentInjector: this.environmentInjector });\n\n\tconstructor() {\n\t\tthis.iconRef.setInput('inline', true);\n\t\tthis.iconRef.location.nativeElement.setAttribute('aria-hidden', 'true');\n\t\tthis.host.nativeElement.prepend(this.iconRef.location.nativeElement);\n\t\tthis.appRef.attachView(this.iconRef.hostView);\n\n\t\teffect(() => {\n\t\t\tthis.iconRef.location.nativeElement.textContent = this.linkIcon();\n\t\t\tthis.iconRef.changeDetectorRef.detectChanges();\n\t\t});\n\t}\n\n\t/**\n\t * Destroy the dynamically created icon when the host link is destroyed\n\t *\n\t * @author Pavan Kumar Jadda\n\t * @since 22.5.0\n\t */\n\tngOnDestroy(): void {\n\t\tthis.appRef.detachView(this.iconRef.hostView);\n\t\tthis.iconRef.destroy();\n\t}\n}\n","export class PrintOptions {\n\tprintSectionId = '';\n\tprintTitle = '';\n\tuseExistingCss = false;\n\tbodyClass = '';\n\topenNewTab = false;\n\tpreviewOnly = false;\n\tcloseWindow = true;\n\tprintDelay = 0;\n\n\tconstructor(options?: Partial<PrintOptions>) {\n\t\tif (options) {\n\t\t\tObject.assign(this, options);\n\t\t}\n\t}\n}\n","import { Directive, DOCUMENT, HostListener, inject, Input } from '@angular/core';\nimport { MatPaginator } from '@angular/material/paginator';\nimport { MatTableDataSource } from '@angular/material/table';\nimport { PrintOptions } from './print-options';\n\n/**\n * Reusable Angular directory that prints given contents of HTML element\n *\n * @since 12.0.0\n * @author Pavan Kumar Jadda\n */\n@Directive({\n\tselector: 'button[ngxPrint], button[print]',\n\tstandalone: true,\n})\nexport class NgxPrintDirective<T = unknown> {\n\tdocument = inject(DOCUMENT);\n\t/**\n\t * ID of the HTML element those contents need to be printed\n\t *\n\t * @since 12.0.0\n\t * @author Pavan Kumar Jadda\n\t */\n\t@Input() printSectionId: string | undefined;\n\t/**\n\t * Title of the HTML element those contents need to be printed\n\t *\n\t * @since 12.0.0\n\t * @author Pavan Kumar Jadda\n\t */\n\t@Input() printTitle: string | undefined;\n\t/**\n\t * If `true`, uses CSS of HTMl element, otherwise no CSS applied\n\t *\n\t * @since 12.0.0\n\t * @author Pavan Kumar Jadda\n\t */\n\t@Input() useExistingCss = false;\n\t/**\n\t * A delay in milliseconds to force the print dialog to wait before opened. Default: 0\n\t *\n\t * @since 12.0.0\n\t * @author Pavan Kumar Jadda\n\t */\n\t@Input() printDelay = 0;\n\t/**\n\t * Instance of the Mat Table Data Source\n\t *\n\t * @since 12.0.0\n\t * @author Pavan Kumar Jadda\n\t */\n\t@Input() matTableDataSource!: MatTableDataSource<T>;\n\t/**\n\t * Instance of the Mat Paginator\n\t *\n\t * @since 12.0.0\n\t * @author Pavan Kumar Jadda\n\t */\n\t@Input() paginator!: MatPaginator;\n\t/**\n\t * ID of the Mat Paginator\n\t *\n\t * @since 12.0.0\n\t * @author Pavan Kumar Jadda\n\t */\n\t@Input() paginatorId = '';\n\t/**\n\t * HTML tag ID of the Mat-Table Input Filter\n\t *\n\t * @since 12.0.0\n\t * @author Pavan Kumar Jadda\n\t */\n\t@Input() inputFilterId = '';\n\t/**\n\t * If `true`, referenced table is Mat-Table\n\t *\n\t * @since 12.0.0\n\t * @author Pavan Kumar Jadda\n\t */\n\t@Input() isMatTable = false;\n\t/**\n\t * If `true` Mat-Table paginator will be hidden\n\t *\n\t * @since 12.0.0\n\t * @author Pavan Kumar Jadda\n\t */\n\t@Input() hideMatTablePaginator = false;\n\n\tpublic printStyleArray: string[] = [];\n\tprintOptions = new PrintOptions();\n\n\t/**\n\t * List of Style sheet files\n\t *\n\t * @since 12.0.0\n\t * @author Pavan Kumar Jadda\n\t */\n\tprivate styleSheetFileArray = '';\n\n\t/**\n\t * Prevents the print dialog from opening on the window\n\t *\n\t * @memberof NgxPrintDirective\n\t */\n\t@Input() set previewOnly(value: boolean) {\n\t\tthis.printOptions = { ...this.printOptions, previewOnly: value };\n\t}\n\n\t/**\n\t * List of CSS properties that needs to be applied while printing the document\n\t *\n\t * @since 12.0.0\n\t * @author Pavan Kumar Jadda\n\t */\n\t@Input()\n\tset printStyle({ values }: PrintStyleParams) {\n\t\tfor (const key in values) {\n\t\t\tif (Object.prototype.hasOwnProperty.call(values, key)) {\n\t\t\t\tthis.printStyleArray.push((key + JSON.stringify(values[key])).replace(/['\"]+/g, ''));\n\t\t\t}\n\t\t}\n\t\tthis.returnStyleValues();\n\t}\n\n\t/**\n\t * Sets given style sheet files to print document\n\t *\n\t * @param cssList Comma separated value of CSS file names\n\t *\n\t * @since 12.0.0\n\t * @author Pavan Kumar Jadda\n\t */\n\t@Input()\n\tset styleSheetFile(cssList: string) {\n\t\tif (cssList.indexOf(',') !== -1) {\n\t\t\tconst cssFileArray = cssList.split(',');\n\t\t\tfor (const cssFileName of cssFileArray) {\n\t\t\t\tthis.styleSheetFileArray = this.styleSheetFileArray + NgxPrintDirective.linkTagFn(cssFileName);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.styleSheetFileArray = NgxPrintDirective.linkTagFn(cssList);\n\t\t}\n\t}\n\n\t/**\n\t * Build link HTMl tag based on given file name\n\t *\n\t * @since 12.0.0\n\t * @author Pavan Kumar Jadda\n\t */\n\tprivate static linkTagFn(cssFileName: string): string {\n\t\treturn `<link rel=\"stylesheet\" type=\"text/css\" href=\"${cssFileName}\">`;\n\t}\n\n\t/**\n\t * Gets HTML element by tag name\n\t *\n\t * @since 12.0.0\n\t * @author Pavan Kumar Jadda\n\t */\n\tprivate static getElementTag(tag: keyof HTMLElementTagNameMap): string {\n\t\tconst html: string[] = [];\n\t\tconst elements = document.getElementsByTagName(tag);\n\t\t// @ts-ignore\n\t\tfor (const element of elements) {\n\t\t\thtml.push(element.outerHTML);\n\t\t}\n\t\treturn html.join('\\r\\n');\n\t}\n\n\t/**\n\t * Print the element upon clicking the button\n\t *\n\t * @since 12.0.0\n\t * @author Pavan Kumar Jadda\n\t */\n\t@HostListener('click')\n\tpublic print(): void {\n\t\t//Hide paginator for Material table\n\t\tif (this.isMatTable && this.hideMatTablePaginator && this.matTableDataSource) {\n\t\t\tthis.matTableDataSource.paginator = null;\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tif (this.isMatTable) {\n\t\t\t\tthis.hideMatPaginatorBeforePrinting();\n\t\t\t}\n\n\t\t\t// Do something after\n\t\t\tlet printContents;\n\t\t\tlet popupWin;\n\t\t\tlet styles = '';\n\t\t\tlet links = '';\n\n\t\t\tif (this.useExistingCss) {\n\t\t\t\tstyles = NgxPrintDirective.getElementTag('style');\n\t\t\t\tlinks = NgxPrintDirective.getElementTag('link');\n\t\t\t}\n\t\t\tif (this.printSectionId) {\n\t\t\t\tprintContents = this.document.getElementById(this.printSectionId)?.innerHTML;\n\t\t\t\tpopupWin = window.open('', '_blank', 'top=0,left=0,height=auto,width=auto');\n\t\t\t\tpopupWin?.document.open();\n\t\t\t\tpopupWin?.document.write(`\n      <html lang=\"en-us\">\n        <head>\n          <title>${this.printTitle ? this.printTitle : ''}</title>\n          ${this.returnStyleValues()}\n          ${this.styleSheetFileArray}\n          ${styles}\n          ${links}\n        </head>\n        <body>\n          ${printContents}\n          <script defer>\n            function triggerPrint() {\n              window.removeEventListener('load', triggerPrint, false);\n              setTimeout(() => {\n                window.print();\n                setTimeout(function() { window.close(); }, 0);\n              }, ${this.printDelay});\n            }\n            window.addEventListener('load', triggerPrint, false);\n          </script>\n        </body>\n      </html>`);\n\n\t\t\t\tpopupWin?.document.close();\n\n\t\t\t\t//Revert back the mat-paginator after printing\n\t\t\t\tif (this.isMatTable) {\n\t\t\t\t\tthis.showMatPaginatorAfterPrinting();\n\t\t\t\t}\n\t\t\t}\n\t\t}, 1000); //1 second timeout to hide paginator\n\t}\n\n\t/**\n\t * Hide Mat Paginator before Printing\n\t *\n\t * @since 12.0.1\n\t * @author Pavan Kumar Jadda\n\t */\n\tprivate hideMatPaginatorBeforePrinting(): void {\n\t\t// @ts-ignore\n\t\tthis.document.getElementById(this.paginatorId).style.display = 'none';\n\t\tif (this.document.getElementById(this.inputFilterId) != null) {\n\t\t\t// @ts-ignore\n\t\t\tthis.document.getElementById(this.inputFilterId).style.display = 'none';\n\t\t}\n\t}\n\n\t/**\n\t * Show Mat Paginator after Printing\n\t *\n\t * @since 12.0.1\n\t * @author Pavan Kumar Jadda\n\t */\n\tprivate showMatPaginatorAfterPrinting(): void {\n\t\tthis.matTableDataSource.paginator = this.paginator;\n\t\t// @ts-ignore\n\t\tthis.document.getElementById(this.paginatorId).style.display = 'block';\n\t\tif (this.document.getElementById(this.inputFilterId) != null) {\n\t\t\t// @ts-ignore\n\t\t\tthis.document.getElementById(this.inputFilterId).style.display = 'block';\n\t\t}\n\t}\n\n\t/**\n\t * @returns the string that create the stylesheet which will be injected later within <style></style> tag. Join/replace to transform an array objects to css-styled string\n\t *\n\t * @since 12.0.0\n\t * @author Pavan Kumar Jadda\n\t */\n\tprivate returnStyleValues(): string {\n\t\treturn `<style> ${this.printStyleArray.join(' ').replace(/,/g, ';')} </style>`;\n\t}\n}\n\ninterface PrintStyleParams {\n\tvalues: Record<string, Record<string, string>>;\n}\n","import { Directive, HostListener, input, OnDestroy, OnInit, output } from '@angular/core';\nimport { Subject, Subscription, throttleTime } from 'rxjs';\n\n@Directive({\n\tselector: '[preventMultipleClicks]',\n\tstandalone: true,\n})\nexport class PreventMultipleClicksDirective implements OnInit, OnDestroy {\n\tthrottleTime = input(2000);\n\tthrottleClick = output<Event>();\n\tprivate readonly clicks = new Subject<Event>();\n\tprivate subscription: Subscription | undefined;\n\n\t/**\n\t * Intercepts click event and stops default navigation. After first click set {@link throttleTime} to 2000 to prevent duplicate clicks\n\t *\n\t * @param event DOM event\n\t *\n\t * @author Pavan Kumar Jadda\n\t * @since 2.3.27\n\t */\n\t@HostListener('click', ['$event'])\n\tclickEvent(event: Event): void {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\tthis.clicks.next(event);\n\t}\n\n\tngOnInit(): void {\n\t\tthis.subscription = this.clicks.pipe(throttleTime(this.throttleTime())).subscribe((e) => this.throttleClick.emit(e));\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.subscription?.unsubscribe();\n\t}\n}\n","import { booleanAttribute, computed, Directive, DOCUMENT, effect, ElementRef, inject, input, OnInit, signal } from '@angular/core';\n\n@Directive({\n\thost: {\n\t\t'[attr.disabled]': 'isDisabled() ? \"\" : null',\n\t\t'[attr.aria-disabled]': 'isDisabled() ? \"true\" : null',\n\t\t'[attr.aria-busy]': 'loading() ? \"true\" : null',\n\t},\n})\nexport abstract class BaseButtonDirective implements OnInit {\n\ticon = input<string>('');\n\tlabel = input<string>('');\n\tloadingLabel = input<string>('Loading...');\n\tloading = input<boolean>(false);\n\tdisabled = input(false, { transform: booleanAttribute });\n\telementRef = inject(ElementRef);\n\tdocument = inject(DOCUMENT);\n\treadonly isDisabled = computed(() => this.disabled() || this.loading());\n\n\tprotected originalText = signal('');\n\tprotected iconSpan = signal<HTMLElement | null>(null);\n\n\tconstructor() {\n\t\tthis.elementRef.nativeElement.classList.add('btn');\n\n\t\teffect(() => {\n\t\t\t// If a consumer provides a label input, always use it. Otherwise, fall back to the initially captured host text.\n\t\t\tconst nextText = this.label() || this.originalText();\n\t\t\tthis.originalText.set(nextText);\n\n\t\t\t// Keep the icon element in sync with [icon]\n\t\t\tthis.createIcon();\n\n\t\t\t// Re-render on any relevant signal change\n\t\t\tthis.updateContent();\n\t\t});\n\t}\n\n\tngOnInit(): void {\n\t\t// Capture original text before creating icon\n\t\tthis.originalText.set(this.elementRef.nativeElement.textContent?.trim() || 'Button');\n\n\t\t// Create icon after capturing text\n\t\tthis.createIcon();\n\t}\n\n\tprotected createIcon(): void {\n\t\tif (this.icon()) {\n\t\t\tconst iconElement = this.document.createElement('mat-icon');\n\t\t\ticonElement.classList.add('mat-icon', 'material-icons', 'pe-2');\n\t\t\ticonElement.textContent = this.icon();\n\t\t\tthis.iconSpan.set(iconElement);\n\t\t} else {\n\t\t\tthis.iconSpan.set(null);\n\t\t}\n\t}\n\n\tprotected updateContent(): void {\n\t\tconst element = this.elementRef.nativeElement;\n\t\telement.innerHTML = '';\n\n\t\tif (this.loading()) {\n\t\t\tthis.showLoadingState(element);\n\t\t} else {\n\t\t\tthis.showNormalState(element);\n\t\t}\n\t}\n\n\tprotected showLoadingState(element: HTMLElement): void {\n\t\tconst newSpan = this.document.createElement('span');\n\t\tnewSpan.classList.add('spinner-border', 'spinner-border-sm', 'me-2');\n\t\tnewSpan.setAttribute('role', 'status');\n\n\t\telement.appendChild(newSpan);\n\t\telement.appendChild(this.document.createTextNode(this.loadingLabel()));\n\t}\n\n\tprotected showNormalState(element: HTMLElement): void {\n\t\tconst iconElement = this.iconSpan();\n\t\tif (iconElement) {\n\t\t\telement.appendChild(iconElement);\n\t\t}\n\n\t\telement.appendChild(this.document.createTextNode(this.originalText()));\n\t}\n}\n","import { Directive, DOCUMENT, effect, ElementRef, inject, input } from '@angular/core';\n\n@Directive({\n\tselector: '[bsLinkButton]',\n})\nexport class BsLinkButtonDirective {\n\t/** Material icon name rendered before the link label. */\n\treadonly icon = input<string>('search');\n\n\tprivate readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\tprivate readonly document = inject(DOCUMENT);\n\tprivate readonly iconElement = this.document.createElement('span');\n\n\tconstructor() {\n\t\tconst element = this.elementRef.nativeElement;\n\t\telement.classList.add('btn', 'text-primary');\n\t\tthis.iconElement.classList.add('material-icons', 'pe-2');\n\t\tthis.iconElement.setAttribute('aria-hidden', 'true');\n\n\t\teffect(() => {\n\t\t\tconst icon = this.icon();\n\n\t\t\tif (!icon) {\n\t\t\t\tthis.iconElement.remove();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.iconElement.textContent = icon;\n\t\t\tconst label = element.querySelector<HTMLElement>('.mdc-button__label');\n\t\t\telement.insertBefore(this.iconElement, label ?? element.firstChild);\n\t\t});\n\t}\n}\n","import { Directive, ElementRef, inject } from '@angular/core';\n\n@Directive({\n\tselector: '[closeButton]',\n})\nexport class CloseButtonDirective {\n\telementRef = inject(ElementRef);\n\n\tconstructor() {\n\t\tthis.elementRef.nativeElement.classList.add('secondary-button');\n\t}\n}\n","import { Directive, input } from '@angular/core';\nimport { BaseButtonDirective } from '../base-button/base-button.directive';\n\n@Directive({\n\tselector: '[deleteButton]',\n})\nexport class DeleteButtonDirective extends BaseButtonDirective {\n\toverride icon = input<string>('delete');\n\toverride loadingLabel = input<string>('Deleting...');\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.elementRef.nativeElement.classList.add('delete-button');\n\t}\n}\n","import { inject, Injectable } from '@angular/core';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nexport const EDIT_SOLID_SVG_ICON_NAME = 'edit-solid';\n\nconst EDIT_ICON = `\n<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 512 512\">\n  <path d=\"M471.6 21.7c-21.9-21.9-57.3-21.9-79.2 0L368 46.1 465.9 144 490.3 119.6c21.9-21.9 21.9-57.3 0-79.2L471.6 21.7zm-299.2 220c-6.1 6.1-10.8 13.6-13.5 21.9l-29.6 88.8c-2.9 8.6-.6 18.1 5.8 24.6s15.9 8.7 24.6 5.8l88.8-29.6c8.2-2.7 15.7-7.4 21.9-13.5L432 177.9 334.1 80 172.4 241.7zM96 64C43 64 0 107 0 160L0 416c0 53 43 96 96 96l256 0c53 0 96-43 96-96l0-96c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 96c0 17.7-14.3 32-32 32L96 448c-17.7 0-32-14.3-32-32l0-256c0-17.7 14.3-32 32-32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L96 64z\"/>\n</svg>\n`;\n\n/** Registers the edit-solid SVG icon once for the application. */\n@Injectable({ providedIn: 'root' })\nexport class EditSolidSvgIconRegistry {\n\tconstructor() {\n\t\tconst iconRegistry = inject(MatIconRegistry);\n\t\tconst sanitizer = inject(DomSanitizer);\n\n\t\ticonRegistry.addSvgIconLiteral(EDIT_SOLID_SVG_ICON_NAME, sanitizer.bypassSecurityTrustHtml(EDIT_ICON));\n\t}\n}\n","import { ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { EDIT_SOLID_SVG_ICON_NAME, EditSolidSvgIconRegistry } from './edit-solid-svg-icon.registry';\n\n@Component({\n\tselector: 'edit-solid-svg',\n\timports: [MatIconModule],\n\ttemplate: ` <mat-icon [class]=\"iconClass()\" [style.font-size]=\"size()\" aria-hidden=\"true\" [svgIcon]=\"svgIconName\" /> `,\n\tstyles: [\n\t\t`\n\t\t\t:host {\n\t\t\t\tdisplay: contents;\n\t\t\t}\n\n\t\t\tmat-icon {\n\t\t\t\tdisplay: inline-flex;\n\t\t\t\talign-items: center;\n\t\t\t\tjustify-content: center;\n\t\t\t\tflex-shrink: 0;\n\t\t\t\twidth: 1em;\n\t\t\t\theight: 1em;\n\t\t\t\tline-height: 1;\n\t\t\t\toverflow: visible;\n\t\t\t\tvertical-align: middle;\n\t\t\t}\n\n\t\t\tmat-icon svg {\n\t\t\t\tdisplay: block;\n\t\t\t}\n\t\t`,\n\t],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EditSolidSvgComponent {\n\tprotected readonly svgIconName = EDIT_SOLID_SVG_ICON_NAME;\n\ticonClass = input('');\n\tsize = input('1rem');\n\n\t// Ensure the SVG icon is registered once per application.\n\tprivate readonly _ = inject(EditSolidSvgIconRegistry);\n}\n","import { ComponentRef, ViewContainerRef } from '@angular/core';\nimport { EditSolidSvgComponent } from './edit-solid-svg.component';\n\n/**\n * Mounts {@link EditSolidSvgComponent} into a host element with a text label.\n * Destroys any previously mounted icon component reference.\n */\nexport function mountEditSolidSvgIcon(\n\tviewContainerRef: ViewContainerRef,\n\tdocument: Document,\n\thost: HTMLElement,\n\tlabel: string,\n\ticonComponentRef: ComponentRef<EditSolidSvgComponent> | null,\n): ComponentRef<EditSolidSvgComponent> {\n\ticonComponentRef?.destroy();\n\n\tconst componentRef = viewContainerRef.createComponent(EditSolidSvgComponent);\n\n\thost.textContent = '';\n\thost.appendChild(componentRef.location.nativeElement);\n\thost.appendChild(document.createTextNode(' ' + label));\n\n\treturn componentRef;\n}\n","import { ComponentRef, Directive, DOCUMENT, ElementRef, inject, OnDestroy, OnInit, signal, ViewContainerRef } from '@angular/core';\nimport { mountEditSolidSvgIcon } from '../../../svg-icons/edit-solid-svg/append-edit-solid-svg-icon.util';\nimport { EditSolidSvgComponent } from '../../../svg-icons/edit-solid-svg/edit-solid-svg.component';\n\n@Directive({\n\tselector: '[editBsButton]',\n})\nexport class EditBsButtonDirective implements OnInit, OnDestroy {\n\telementRef = inject(ElementRef);\n\tviewContainerRef = inject(ViewContainerRef);\n\tdocument = inject(DOCUMENT);\n\n\tprotected originalText = signal('');\n\tprivate iconComponentRef: ComponentRef<EditSolidSvgComponent> | null = null;\n\n\tngOnInit(): void {\n\t\tthis.elementRef.nativeElement.classList.add('btn', 'text-primary', 'gap-1');\n\t\tthis.originalText.set(this.elementRef.nativeElement.textContent?.trim() || 'Edit');\n\t\tthis.updateContent();\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.iconComponentRef?.destroy();\n\t}\n\n\tprivate updateContent(): void {\n\t\tthis.iconComponentRef = mountEditSolidSvgIcon(\n\t\t\tthis.viewContainerRef,\n\t\t\tthis.document,\n\t\t\tthis.elementRef.nativeElement,\n\t\t\tthis.originalText(),\n\t\t\tthis.iconComponentRef,\n\t\t);\n\t}\n}\n","import { Directive, input } from '@angular/core';\nimport { BaseButtonDirective } from '../base-button/base-button.directive';\n\n@Directive({\n\tselector: '[editButton]',\n})\nexport class EditButtonDirective extends BaseButtonDirective {\n\toverride icon = input<string>('edit');\n\toverride loadingLabel = input<string>('Editing...');\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.elementRef.nativeElement.classList.add('primary-button');\n\t}\n}\n","import { ComponentRef, Directive, DOCUMENT, ElementRef, inject, OnDestroy, OnInit, signal, ViewContainerRef } from '@angular/core';\nimport { mountEditSolidSvgIcon } from '../../../svg-icons/edit-solid-svg/append-edit-solid-svg-icon.util';\nimport { EditSolidSvgComponent } from '../../../svg-icons/edit-solid-svg/edit-solid-svg.component';\n\n@Directive({\n\tselector: '[editSvgIconButton]',\n})\nexport class EditSvgIconButtonDirective implements OnInit, OnDestroy {\n\telementRef = inject(ElementRef);\n\tviewContainerRef = inject(ViewContainerRef);\n\tdocument = inject(DOCUMENT);\n\n\tprotected originalText = signal('');\n\tprivate iconComponentRef: ComponentRef<EditSolidSvgComponent> | null = null;\n\n\tngOnInit(): void {\n\t\tthis.elementRef.nativeElement.classList.add('mat-raised-button', 'primary-button', 'gap-1');\n\t\tthis.originalText.set(this.elementRef.nativeElement.textContent?.trim() || 'Edit');\n\t\tthis.elementRef.nativeElement.setAttribute('data-cy', 'edit-svg-icon-button');\n\t\tthis.updateContent();\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.iconComponentRef?.destroy();\n\t}\n\n\tprivate updateContent(): void {\n\t\tthis.iconComponentRef = mountEditSolidSvgIcon(\n\t\t\tthis.viewContainerRef,\n\t\t\tthis.document,\n\t\t\tthis.elementRef.nativeElement,\n\t\t\tthis.originalText(),\n\t\t\tthis.iconComponentRef,\n\t\t);\n\t}\n}\n","import { Directive } from '@angular/core';\nimport { BaseButtonDirective } from '../base-button/base-button.directive';\n\n@Directive({\n\tselector: '[excelExportButton]',\n})\nexport class ExcelExportButtonDirective extends BaseButtonDirective {\n\tconstructor() {\n\t\tsuper();\n\t\tconst styles = [\n\t\t\t{ property: 'margin-left', value: '20px' },\n\t\t\t{ property: 'margin-right', value: '20px' },\n\t\t\t{ property: 'width', value: '100px' },\n\t\t\t{ property: 'color', value: 'white' },\n\t\t\t{ property: 'background-color', value: 'darkgreen' },\n\t\t\t{ property: 'border-radius', value: '24px' },\n\t\t];\n\n\t\tstyles.forEach((style) => {\n\t\t\tthis.elementRef.nativeElement.style[style.property] = style.value;\n\t\t});\n\t}\n}\n","import { Directive, input } from '@angular/core';\nimport { BaseButtonDirective } from '../base-button/base-button.directive';\n\n@Directive({\n\tselector: '[manageButton]',\n})\nexport class ManageButtonDirective extends BaseButtonDirective {\n\toverride icon = input<string>('settings');\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.elementRef.nativeElement.classList.add('mr-3');\n\t\tthis.elementRef.nativeElement.classList.add('secondary-button');\n\t}\n}\n","import { Directive } from '@angular/core';\nimport { BaseButtonDirective } from '../base-button/base-button.directive';\n\n@Directive({\n\tselector: '[pdfExportButton]',\n})\nexport class PdfExportButtonDirective extends BaseButtonDirective {\n\tconstructor() {\n\t\tsuper();\n\t\tconst styles = [\n\t\t\t{ property: 'margin-left', value: '20px' },\n\t\t\t{ property: 'width', value: '100px' },\n\t\t\t{ property: 'color', value: 'white' },\n\t\t\t{ property: 'background-color', value: '#a3071b' },\n\t\t\t{ property: 'border-radius', value: '24px' },\n\t\t];\n\n\t\tstyles.forEach((style) => {\n\t\t\tthis.elementRef.nativeElement.style[style.property] = style.value;\n\t\t});\n\t}\n}\n","import { Directive, input } from '@angular/core';\nimport { BaseButtonDirective } from '../base-button/base-button.directive';\n\n@Directive({\n\tselector: '[primaryButton]',\n})\nexport class PrimaryButtonDirective extends BaseButtonDirective {\n\toverride icon = input<string>('save');\n\toverride loadingLabel = input<string>('Saving...');\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.elementRef.nativeElement.classList.add('btn-primary');\n\t\tthis.elementRef.nativeElement.classList.add('primary-button');\n\t}\n}\n","import { Directive, input } from '@angular/core';\nimport { BaseButtonDirective } from '../base-button/base-button.directive';\n\n@Directive({\n\tselector: '[savePrimaryButton]',\n})\nexport class SavePrimaryButtonDirective extends BaseButtonDirective {\n\toverride icon = input<string>('save');\n\toverride loadingLabel = input<string>('Saving...');\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.elementRef.nativeElement.classList.add('btn-primary');\n\t\tthis.elementRef.nativeElement.classList.add('primary-button');\n\t}\n}\n","import { Directive, input } from '@angular/core';\nimport { BaseButtonDirective } from '../base-button/base-button.directive';\n\n@Directive({\n\tselector: '[searchButton]',\n})\nexport class SearchButtonDirective extends BaseButtonDirective {\n\toverride icon = input<string>('search');\n\toverride loadingLabel = input<string>('Searching...');\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.elementRef.nativeElement.classList.add('btn-primary');\n\t\tthis.elementRef.nativeElement.classList.add('primary-button');\n\t}\n}\n","import { Directive, input } from '@angular/core';\nimport { BaseButtonDirective } from '../base-button/base-button.directive';\n\n@Directive({\n\tselector: '[successButton]',\n})\nexport class SuccessButtonDirective extends BaseButtonDirective {\n\toverride icon = input<string>('save');\n\toverride label = input<string>('Update');\n\toverride loadingLabel = input<string>('Updating...');\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.elementRef.nativeElement.classList.add('success-button');\n\t}\n}\n","import { Directive, input } from '@angular/core';\nimport { BaseButtonDirective } from '../base-button/base-button.directive';\n\n@Directive({\n\tselector: '[viewButton]',\n})\nexport class ViewButtonDirective extends BaseButtonDirective {\n\toverride icon = input<string>('visibility');\n\toverride loadingLabel = input<string>('Loading...');\n\n\tconstructor() {\n\t\tsuper();\n\t}\n}\n","import { Directive, input } from '@angular/core';\nimport { BaseButtonDirective } from '../base-button/base-button.directive';\n\n@Directive({\n\tselector: '[viewPrimaryButton]',\n})\nexport class ViewPrimaryButtonDirective extends BaseButtonDirective {\n\toverride icon = input<string>('visibility');\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.elementRef.nativeElement.classList.add('btn-primary');\n\t\tthis.elementRef.nativeElement.classList.add('primary-button');\n\t}\n}\n","import { Component, Inject, ChangeDetectionStrategy } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDividerModule } from '@angular/material/divider';\n\n@Component({\n\tselector: 'app-confirm-dialog',\n\timports: [MatButtonModule, MatDividerModule, MatDialogModule],\n\ttemplate: `\n\t\t<div class=\"mat-dialog-title\" style=\"text-align: center\">\n\t\t\t<h3 class=\"m-3 mat-headline-5\t\">{{ title }}</h3>\n\t\t</div>\n\n\t\t<mat-divider></mat-divider>\n\t\t<div mat-dialog-content style=\"margin: 20px\">\n\t\t\t<p>{{ message }}</p>\n\t\t</div>\n\n\t\t<div align=\"end\" class=\"modal-footer\" mat-dialog-actions>\n\t\t\t<button (click)=\"onDismiss()\" mat-raised-button>No</button>\n\t\t\t<button (click)=\"onConfirm()\" class=\"primary-button\" mat-raised-button>Yes</button>\n\t\t</div>\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.Eager,\n\tstyles: [],\n})\nexport class ConfirmDialogComponent {\n\ttitle: string;\n\tmessage: string;\n\n\tconstructor(\n\t\t@Inject(MAT_DIALOG_DATA) public data: ConfirmDialogData,\n\t\tpublic dialogRef: MatDialogRef<ConfirmDialogComponent>,\n\t) {\n\t\t// Update view with given values\n\t\tthis.title = data.title;\n\t\tthis.message = data.message;\n\t}\n\n\tonDismiss() {\n\t\t// Close the dialog, return true\n\t\tthis.dialogRef.close(false);\n\t}\n\n\tonConfirm() {\n\t\t// Close the dialog, return true\n\t\tthis.dialogRef.close(true);\n\t}\n}\n\n/**\n * Class to represent confirm dialog model.\n */\nexport interface ConfirmDialogData {\n\ttitle: string;\n\tmessage: string;\n}\n","import { Component, Inject, ChangeDetectionStrategy } from '@angular/core';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MAT_SNACK_BAR_DATA, MatSnackBarRef } from '@angular/material/snack-bar';\n\n@Component({\n\tselector: 'app-error-snack-bar',\n\timports: [MatIconModule, MatButtonModule],\n\ttemplate: `\n\t\t<div class=\"app-flex-center error-snackbar\">\n\t\t\t<mat-icon style=\"font-size:1.3rem\">error</mat-icon>\n\t\t\t<label>{{ data.message }}</label>\n\t\t\t<button style=\"margin-left: auto\" (click)=\"close()\" mat-icon-button>\n\t\t\t\t<mat-icon>close</mat-icon>\n\t\t\t</button>\n\t\t</div>\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.Eager,\n\tstyleUrls: ['../../../../assets/app-mat-snack-bar.css'],\n})\nexport class ErrorSnackBarComponent {\n\tconstructor(\n\t\tpublic msb: MatSnackBarRef<ErrorSnackBarComponent>,\n\t\t@Inject(MAT_SNACK_BAR_DATA) public data: { message: string; action?: string },\n\t) {}\n\n\t/**\n\t * Close the Snack Bar\n\t *\n\t * @author Pavan Kumar Jadda\n\t * @since 2.7.18\n\t */\n\tclose(): void {\n\t\tthis.msb.dismissWithAction();\n\t}\n}\n","import { Component, Inject, ChangeDetectionStrategy } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MAT_SNACK_BAR_DATA, MatSnackBarRef } from '@angular/material/snack-bar';\n\n@Component({\n\tselector: 'app-success-snack-bar',\n\timports: [MatButtonModule, MatIconModule],\n\ttemplate: `\n\t\t<div class=\"app-flex-center success-snackbar\">\n\t\t\t<mat-icon style=\"font-size:1.3rem\">check_circle</mat-icon>\n\t\t\t<label>{{ data.message }}</label>\n\t\t\t<button style=\"margin-left: auto\" (click)=\"close()\" mat-icon-button>\n\t\t\t\t<mat-icon>close</mat-icon>\n\t\t\t</button>\n\t\t</div>\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.Eager,\n\tstyleUrls: ['../../../../assets/app-mat-snack-bar.css'],\n})\nexport class SuccessSnackBarComponent {\n\tconstructor(\n\t\tpublic msb: MatSnackBarRef<SuccessSnackBarComponent>,\n\t\t@Inject(MAT_SNACK_BAR_DATA) public data: { message: string; action?: string },\n\t) {}\n\n\t/**\n\t * Close the Snack Bar\n\t *\n\t * @author Pavan Kumar Jadda\n\t * @since 2.7.18\n\t */\n\tclose(): void {\n\t\tthis.msb.dismissWithAction();\n\t}\n}\n","import { inject, Injectable } from '@angular/core';\nimport { MatSnackBar, MatSnackBarHorizontalPosition, MatSnackBarVerticalPosition } from '@angular/material/snack-bar';\nimport { ErrorSnackBarComponent } from '../components/snack-bar/error-snack-bar/error-snack-bar.component';\nimport { SuccessSnackBarComponent } from '../components/snack-bar/success-snack-bar/success-snack-bar.component';\n\n@Injectable({\n\tprovidedIn: 'root',\n})\nexport class MatSnackBarService {\n\tsnackBar = inject(MatSnackBar);\n\t/**\n\t * Duration (in milliseconds) of the Snack Bar to be open. Defaults to 5 seconds (5000 milliseconds)\n\t */\n\tduration = 5000;\n\n\t/**\n\t * Horizontal Position of the MatSnackBar. Defaults to right side\n\t */\n\thorizontalPosition: MatSnackBarHorizontalPosition = 'right';\n\n\t/**\n\t * Vertical Position of the MatSnackBar. Defaults to top of the page\n\t */\n\tverticalPosition: MatSnackBarVerticalPosition = 'top';\n\n\t/**\n\t * Opens Success Snack Bar\n\t *\n\t * @param message Message to display on Snack Bar\n\t * @param options Options of the Snack Bar\n\t *\n\t * @author Pavan Kumar Jadda\n\t * @since 2.2.3\n\t */\n\tsuccess(message: string, options?: MatSnackBarOptions): void {\n\t\tthis.snackBar.openFromComponent(SuccessSnackBarComponent, {\n\t\t\tdata: { message },\n\t\t\tduration: options?.duration ?? this.duration,\n\t\t\tpanelClass: options?.panelClass ?? 'success-snackbar',\n\t\t\thorizontalPosition: options?.horizontalPosition ?? this.horizontalPosition,\n\t\t\tverticalPosition: options?.verticalPosition ?? this.verticalPosition,\n\t\t});\n\t}\n\n\t/**\n\t * Opens Error Snack Bar\n\t *\n\t * @param message Message to display on Snack Bar\n\t * @param options Options of the Snack Bar\n\t *\n\t * @author Pavan Kumar Jadda\n\t * @since 2.2.3\n\t */\n\terror(message: string, options?: MatSnackBarOptions): void {\n\t\tthis.snackBar.openFromComponent(ErrorSnackBarComponent, {\n\t\t\tdata: { message },\n\t\t\tduration: options?.duration ?? this.duration,\n\t\t\tpanelClass: options?.panelClass ?? 'error-snackbar',\n\t\t\thorizontalPosition: options?.horizontalPosition ?? this.horizontalPosition,\n\t\t\tverticalPosition: options?.verticalPosition ?? this.verticalPosition,\n\t\t});\n\t}\n\n\t/**\n\t * Opens Generic Snack Bar\n\t *\n\t * @param message Message to display on Snack Bar\n\t *\n\t * @author Pavan Kumar Jadda\n\t * @since 2.2.3\n\t */\n\topen(message: string): void {\n\t\tthis.snackBar.open(message, 'Close', {\n\t\t\tduration: this.duration,\n\t\t\thorizontalPosition: this.horizontalPosition,\n\t\t\tverticalPosition: this.verticalPosition,\n\t\t});\n\t}\n}\n\n/**\n * MatSnackBarOptions for Snack Bar\n *\n * Available panelClass options:\n * - 'success-snackbar': Green background (default for success)\n * - 'error-snackbar': Red background (default for error)\n * - 'light-success-snackbar': Light green background\n * - 'light-error-snackbar': Light red background\n * - 'primary-snackbar': Primary theme color\n * - 'info-snackbar': Blue background\n * - 'warning-snackbar': Yellow background\n * - Custom CSS class names for additional styling\n *\n * @author Pavan Kumar Jadda\n * @since 2.7.19\n */\nexport interface MatSnackBarOptions {\n\tduration?: number;\n\thorizontalPosition?: MatSnackBarHorizontalPosition;\n\tverticalPosition?: MatSnackBarVerticalPosition;\n\tpanelClass?: string | string[];\n}\n","import { computed, Injectable, signal } from '@angular/core';\nimport { IdType } from '../types/id-type';\n\n/**\n * A core entity store class that stores a list of objects. This has list of methods to perform CRUD operations on the list of objects.\n *\n * @author Pavan Kumar Jadda\n * @since 17.1.0\n */\n@Injectable({\n\tprovidedIn: 'root',\n})\nexport class EntityStore<T extends IdType> {\n\t_data = signal<T[]>([]);\n\n\t// The data property is a computed property that returns the value of the _data signal\n\tdata = computed(() => this._data());\n\n\t/**\n\t * Find an item in the store by id\n\t *\n\t * @param id The id of the item to be found\n\t *\n\t * @returns The item if found, undefined otherwise\n\t *\n\t * @author Pavan Kumar Jadda\n\t * @since 17.1.0\n\t */\n\tfindById(id: number): T | undefined {\n\t\treturn this._data().find((item) => item.id === id);\n\t}\n\n\t/**\n\t * Set the list of items in the store with the new data\n\t *\n\t * @param data The new list of items to be stored\n\t *\n\t * @author Pavan Kumar Jadda\n\t * @since 17.1.0\n\t */\n\tsetData(data: T[]): void {\n\t\tthis._data.set(data);\n\t}\n\n\t/**\n\t * Update an item in the store. If the item does not exist in new list, add it. Otherwise, update it.\n\t *\n\t * @param data The item to added or updated\n\t *\n\t * @author Pavan Kumar Jadda\n\t * @since 17.1.0\n\t */\n\tupsert(data: T): void {\n\t\tthis._data.update((currentData) => {\n\t\t\tconst dataMap = new Map(currentData.map((item) => [item.id, item]));\n\t\t\tdataMap.set(data.id, data);\n\t\t\treturn Array.from(dataMap.values());\n\t\t});\n\t}\n\n\t/**\n\t * Update or insert the given list of items in the store\n\t *\n\t * @param newData The list of items to be updated or inserted\n\t *\n\t * @author Pavan Kumar Jadda\n\t * @since 17.1.0\n\t */\n\tupsertMulti(newData: T[]): void {\n\t\tthis._data.update((currentData) => {\n\t\t\tconst dataMap = new Map(currentData.map((item) => [item.id, item]));\n\t\t\tnewData.forEach((newItem: T) => dataMap.set(newItem.id, newItem));\n\t\t\treturn Array.from(dataMap.values());\n\t\t});\n\t}\n\n\t/**\n\t * Remove an item from the store\n\t *\n\t * @param id The id of the item to be removed\n\t *\n\t * @author Pavan Kumar Jadda\n\t * @since 17.1.0\n\t */\n\tremove(id: number): void {\n\t\tthis._data.update((currentData) => currentData.filter((item) => item.id !== id));\n\t}\n}\n","import { computed, Injectable, signal } from '@angular/core';\n\n/**\n * A core store class that can be used to store any object\n *\n * @author Pavan Kumar Jadda\n * @since 17.1.0\n */\n@Injectable({\n\tprovidedIn: 'root',\n})\nexport class Store<T extends object> {\n\t_data = signal<T | null>(null);\n\n\t// The data property is a computed property that returns the value of the _data signal\n\tdata = computed(() => this._data());\n\n\t// Add initialization method\n\tinitialize(initialData: T): void {\n\t\tthis._data.set(initialData);\n\t}\n\n\t/**\n\t * Update the data in the store with the new data\n\t *\n\t * @param newData The new data to be stored/updated\n\t *\n\t * @author Pavan Kumar Jadda\n\t * @since 17.1.0\n\t */\n\tupdate(newData: T): void {\n\t\tthis._data.set(newData);\n\t}\n\n\t// Add clear method\n\tclear(): void {\n\t\tthis._data.set(null);\n\t}\n\n\t// Add getter with null check\n\tgetData(): T | null {\n\t\treturn this._data();\n\t}\n}\n","import { ProgressState } from '../types/progress-state';\nimport { signal, WritableSignal } from '@angular/core';\n\n/**\n * Initialize Loading or Update ProgressState\n *\n * @return Updated State Object\n *\n * @author Pavan Kumar Jadda\n * @since 2.7.16\n */\nexport const initializeState = (): WritableSignal<ProgressState> => {\n\treturn signal<ProgressState>({\n\t\tisLoading: false,\n\t\tisSuccess: false,\n\t\tisError: false,\n\t\tisComplete: false,\n\t\tmessage: '',\n\t});\n};\n\n/**\n * Initialize Loading or Update ProgressState\n *\n * @param progressState Object to initialize\n * @return ProgressState Updated State Object\n *\n * @author Pavan Kumar Jadda\n * @since 2.7.16\n */\nexport const markLoading = (progressState: WritableSignal<ProgressState>) => {\n\tprogressState.update((state) => {\n\t\treturn {\n\t\t\t...state,\n\t\t\tisLoading: true,\n\t\t\tisSuccess: false,\n\t\t\tisError: false,\n\t\t\tisComplete: false,\n\t\t\tmessage: '',\n\t\t};\n\t});\n};\n\n/**\n * Update state as isSuccess\n *\n * @return ProgressState Updated State Object\n *\n * @author Pavan Kumar Jadda\n * @since 2.7.16\n */\nexport const markSuccess = (progressState: WritableSignal<ProgressState>, message?: string) => {\n\tprogressState.update((state) => {\n\t\treturn {\n\t\t\t...state,\n\t\t\tisLoading: false,\n\t\t\tisSuccess: true,\n\t\t\tisError: false,\n\t\t\tisComplete: true,\n\t\t\tmessage: message || '',\n\t\t};\n\t});\n};\n\n/**\n * Update state as failure or isError\n *\n * @return ProgressState Updated State Object\n *\n * @author Pavan Kumar Jadda\n * @since 2.7.16\n */\nexport const markError = (progressState: WritableSignal<ProgressState>, message?: string) => {\n\tprogressState.update((state) => {\n\t\treturn {\n\t\t\t...state,\n\t\t\tisLoading: false,\n\t\t\tisSuccess: false,\n\t\t\tisError: true,\n\t\t\tisComplete: true,\n\t\t\tmessage: message || '',\n\t\t};\n\t});\n};\n","import { EnvironmentProviders, InjectionToken, makeEnvironmentProviders } from '@angular/core';\nimport { QueryClient, QueryClientConfig } from '@tanstack/query-core';\n\n/**\n * Injection token for the TanStack {@link QueryClient}.\n *\n * Provide it in your application root using {@link provideQueryClient}.\n *\n * @author Pavan Kumar Jadda\n * @since 22.0.0\n */\nexport const QUERY_CLIENT = new InjectionToken<QueryClient>('QueryClient');\n\n/**\n * Registers a {@link QueryClient} with Angular's dependency injection system.\n *\n * Accepts either an existing {@link QueryClient} instance or a {@link QueryClientConfig}\n * object from which a new client will be created automatically.\n *\n * @param clientOrConfig - An existing `QueryClient` or a `QueryClientConfig` options object.\n *   Omit to create a client with default settings.\n * @returns `EnvironmentProviders` to be passed to `bootstrapApplication` or `provideRouter`.\n *\n * @example\n * ```ts\n * // main.ts\n * bootstrapApplication(AppComponent, {\n *   providers: [\n *     provideQueryClient({ defaultOptions: { queries: { staleTime: 30_000 } } }),\n *   ],\n * });\n * ```\n *\n * @author Pavan Kumar Jadda\n * @since 22.0.0\n */\nexport function provideQueryClient(clientOrConfig?: QueryClient | QueryClientConfig): EnvironmentProviders {\n\tconst client = clientOrConfig instanceof QueryClient ? clientOrConfig : new QueryClient(clientOrConfig);\n\treturn makeEnvironmentProviders([{ provide: QUERY_CLIENT, useValue: client }]);\n}\n","import { DestroyRef, effect, inject, Signal, signal, untracked } from '@angular/core';\nimport { MutateOptions, MutationObserver, MutationObserverOptions, MutationObserverResult } from '@tanstack/query-core';\nimport { QUERY_CLIENT } from './query-client.token';\n\n/**\n * Return value from {@link injectMutation}.\n *\n * @template TData - The type of data returned by the mutation function\n * @template TError - The type of error thrown by the mutation function\n * @template TVariables - The type of variables passed to the mutation function\n * @template TContext - The type of context returned by `onMutate`\n */\nexport interface InjectMutationResult<TData, TError, TVariables, TContext> {\n\t/**\n\t * Reactive mutation state.\n\t */\n\tresult: Signal<MutationObserverResult<TData, TError, TVariables, TContext>>;\n\n\t/**\n\t * Triggers the mutation without returning a promise.\n\t *\n\t * Use `mutateAsync` when the caller needs to await success or handle errors directly.\n\t *\n\t * @param variables - Variables passed to the mutation function.\n\t * @param options - Optional per-call mutation callbacks.\n\t */\n\tmutate: (variables: TVariables, options?: MutateOptions<TData, TError, TVariables, TContext>) => void;\n\n\t/**\n\t * Triggers the mutation and returns a promise for imperative async flows.\n\t *\n\t * @param variables - Variables passed to the mutation function.\n\t * @param options - Optional per-call mutation callbacks.\n\t * @returns Promise resolving with mutation data or rejecting with the mutation error.\n\t */\n\tmutateAsync: (variables: TVariables, options?: MutateOptions<TData, TError, TVariables, TContext>) => Promise<TData>;\n\n\t/**\n\t * Resets the mutation observer state.\n\t */\n\treset: () => void;\n}\n\n/**\n * Angular adapter for TanStack Query's MutationObserver.\n *\n * Creates a mutation and returns a reactive {@link Signal} alongside `mutate` and\n * `mutateAsync` functions. The signal updates whenever the mutation state changes\n * (idle, pending, success, error).\n *\n * The `optionsFn` is re-evaluated inside an `effect`, so any Angular signals read\n * inside it will automatically update the observer options when they change.\n *\n * @template TData - The type of data returned by the mutation function\n * @template TError - The type of error thrown by the mutation function (defaults to `Error`)\n * @template TVariables - The type of variables passed to the mutation function (defaults to `void`)\n * @template TContext - The type of context returned by `onMutate` for optimistic updates (defaults to `unknown`)\n *\n * @param optionsFn - A function returning {@link MutationObserverOptions}. May read Angular signals.\n * @returns An object containing:\n *   - `result` — a read-only {@link Signal} with the current {@link MutationObserverResult}\n *   - `mutate` — fire-and-forget trigger; does not return a Promise\n *   - `mutateAsync` — returns a `Promise<TData>` that resolves or rejects with the mutation outcome\n *\n * @example\n * ```ts\n * const mutation = injectMutation(() => ({\n *   mutationFn: (user: User) => saveUser(user),\n *   onSuccess: () => queryClient.invalidateQueries({ queryKey: ['users'] }),\n * }));\n *\n * mutation.mutate(newUser);\n * await mutation.mutateAsync(newUser);\n * ```\n *\n * @author Pavan Kumar Jadda\n * @since 22.0.0\n */\nexport function injectMutation<TData, TError = Error, TVariables = void, TContext = unknown>(\n\toptionsFn: () => MutationObserverOptions<TData, TError, TVariables, TContext>,\n): InjectMutationResult<TData, TError, TVariables, TContext> {\n\tconst client = inject(QUERY_CLIENT);\n\tconst destroyRef = inject(DestroyRef);\n\n\tconst observer = new MutationObserver<TData, TError, TVariables, TContext>(client, untracked(optionsFn));\n\n\tconst result = signal<MutationObserverResult<TData, TError, TVariables, TContext>>(observer.getCurrentResult());\n\n\tconst unsubscribe = observer.subscribe((newResult) => {\n\t\tresult.set(newResult);\n\t});\n\n\teffect(() => {\n\t\tobserver.setOptions(optionsFn());\n\t});\n\n\tdestroyRef.onDestroy(unsubscribe);\n\n\tconst mutateAsync = (variables: TVariables, options?: MutateOptions<TData, TError, TVariables, TContext>): Promise<TData> =>\n\t\tobserver.mutate(variables, options);\n\n\t// Return both the reactive result AND a mutate function\n\treturn {\n\t\tresult,\n\t\tmutate: (variables, options) => {\n\t\t\tvoid mutateAsync(variables, options).catch(() => {\n\t\t\t\t// Errors are reflected through the mutation result signal.\n\t\t\t});\n\t\t},\n\t\tmutateAsync,\n\t\treset: () => observer.reset(),\n\t};\n}\n","import { DestroyRef, effect, inject, Signal, signal, untracked } from '@angular/core';\nimport { QueryKey, QueryObserver, QueryObserverOptions, QueryObserverResult } from '@tanstack/query-core';\nimport { QUERY_CLIENT } from './query-client.token';\n\n/**\n * Angular adapter for TanStack Query's QueryObserver.\n *\n * Subscribes to a query and returns a reactive {@link Signal} that updates whenever\n * the query state changes (loading, success, error, refetch, etc.).\n *\n * The `optionsFn` is re-evaluated inside an `effect`, so any Angular signals read\n * inside it (e.g. a signal-based `queryKey`) will automatically trigger a re-fetch\n * when they change.\n *\n * @template TQueryFnData - The type of data returned by the query function\n * @template TError - The type of error thrown by the query function (defaults to `Error`)\n * @template TData - The type of data returned after optional `select` transformation\n * @template TQueryData - The type of data stored in the query cache\n * @template TQueryKey - The type of the query key\n *\n * @param optionsFn - A function returning {@link QueryObserverOptions}. May read Angular signals.\n * @returns A read-only {@link Signal} containing the current {@link QueryObserverResult}\n *\n * @example\n * ```ts\n * const id = signal(1);\n * const query = injectQuery(() => ({\n *   queryKey: ['user', id()],\n *   queryFn: () => fetchUser(id()),\n * }));\n * ```\n *\n * @author Pavan Kumar Jadda\n * @since 22.0.0\n */\nexport function injectQuery<\n\tTQueryFnData = unknown,\n\tTError = Error,\n\tTData = TQueryFnData,\n\tTQueryData = TQueryFnData,\n\tTQueryKey extends QueryKey = QueryKey,\n>(optionsFn: () => QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>): Signal<QueryObserverResult<TData, TError>> {\n\tconst client = inject(QUERY_CLIENT);\n\tconst destroyRef = inject(DestroyRef);\n\n\t// Create the observer with initial options\n\tconst observer = new QueryObserver<TQueryFnData, TError, TData, TQueryData, TQueryKey>(client, untracked(optionsFn));\n\n\t// Store query result in a signal (observer defaults options in its constructor)\n\tconst result = signal<QueryObserverResult<TData, TError>>(observer.getCurrentResult());\n\n\t// Subscribe to observer — pushes new state into the signal\n\tconst unsubscribe = observer.subscribe((newResult) => {\n\t\tresult.set(newResult);\n\t});\n\n\t// Re-run options when signals inside optionsFn() change (e.g. a signal-based queryKey)\n\teffect(() => {\n\t\tobserver.setOptions(optionsFn());\n\t});\n\n\t// Clean up when the injection context is destroyed\n\tdestroyRef.onDestroy(unsubscribe);\n\n\treturn result;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i5","i2","i3"],"mappings":"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"}