@koobiq/components 20.3.0 → 20.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/koobiq-components-core.mjs +10 -7
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-form-field.mjs +13 -7
- package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
- package/fesm2022/koobiq-components-modal.mjs +12 -4
- package/fesm2022/koobiq-components-modal.mjs.map +1 -1
- package/fesm2022/koobiq-components-select.mjs +1 -1
- package/fesm2022/koobiq-components-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-tabs.mjs +4 -6
- package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree-select.mjs +1 -1
- package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
- package/form-field/index.d.ts +1 -3
- package/modal/index.d.ts +1 -1
- package/package.json +3 -3
- package/schematics/ng-add/index.js +1 -1
- package/tabs/index.d.ts +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koobiq-components-core.mjs","sources":["../../../packages/components/core/keycodes/keycodes.ts","../../../packages/components/core/a11y/key-manager/list-key-manager.ts","../../../packages/components/core/a11y/key-manager/activedescendant-key-manager.ts","../../../packages/components/core/a11y/key-manager/focus-key-manager.ts","../../../packages/components/core/animation/animation.ts","../../../packages/components/core/animation/fade-animations.ts","../../../packages/components/core/animation/select-animations.ts","../../../packages/components/core/common-behaviors/autofill.ts","../../../packages/components/core/common-behaviors/checkable.ts","../../../packages/components/core/common-behaviors/clipboard.ts","../../../packages/components/core/common-behaviors/color.ts","../../../packages/components/core/common-behaviors/disabled.ts","../../../packages/components/core/common-behaviors/error-state.ts","../../../packages/components/core/utils/dom.ts","../../../packages/components/core/utils/utils.ts","../../../packages/components/core/common-behaviors/hover.ts","../../../packages/components/core/common-behaviors/read-state.ts","../../../packages/components/core/common-behaviors/tabindex.ts","../../../packages/components/core/common-behaviors/index.ts","../../../packages/components/core/datetime/date-adapter.ts","../../../packages/components/core/datetime/date-formats.ts","../../../packages/components/core/datetime/timezone.ts","../../../packages/components/core/error/error-state-matcher.ts","../../../packages/components/core/tokens/window.ts","../../../packages/components/core/form-field/text-ruler.ts","../../../packages/components/core/form-field/field-sizing-content.ts","../../../packages/components/core/form-field/form-field-ref.ts","../../../packages/components/core/form-field/text-field-selection.ts","../../../packages/components/core/locales/en-US.ts","../../../packages/components/core/locales/es-LA.ts","../../../packages/components/core/locales/formatters.ts","../../../packages/components/core/locales/pt-BR.ts","../../../packages/components/core/locales/ru-RU.ts","../../../packages/components/core/locales/tk-TM.ts","../../../packages/components/core/locales/locale-service.ts","../../../packages/components/core/locales/a11y.ts","../../../packages/components/core/locales/locale-service.module.ts","../../../packages/components/core/formatters/date/formatter.ts","../../../packages/components/core/formatters/date/formatter.pipe.ts","../../../packages/components/core/formatters/filesize/config.ts","../../../packages/components/core/formatters/number/formatter.ts","../../../packages/components/core/formatters/filesize/size.ts","../../../packages/components/core/formatters/filesize/formatter.ts","../../../packages/components/core/formatters/index.ts","../../../packages/components/core/forms/forms.directive.ts","../../../packages/components/core/forms/forms-module.ts","../../../packages/components/core/forms/validators.ts","../../../packages/components/core/search/search-base.ts","../../../packages/components/core/highlight/highlight-base.ts","../../../packages/components/core/highlight/highlight-background.pipe.ts","../../../packages/components/core/highlight/highlight.pipe.ts","../../../packages/components/core/highlight/index.ts","../../../packages/components/core/line/line.ts","../../../packages/components/core/navbar/rectangle-item.ts","../../../packages/components/core/option/action.ts","../../../packages/components/core/option/action-container.ts","../../../packages/components/core/option/optgroup.ts","../../../packages/components/core/option/optgroup.html","../../../packages/components/core/selection/constants.ts","../../../packages/components/core/selection/pseudo-checkbox/pseudo-checkbox.ts","../../../packages/components/core/selection/pseudo-checkbox/pseudo-checkbox.partial.html","../../../packages/components/core/selection/pseudo-checkbox/pseudo-checkbox.module.ts","../../../packages/components/core/selection/select-all.ts","../../../packages/components/core/title/title-text-ref.ts","../../../packages/components/core/option/option.ts","../../../packages/components/core/option/option.html","../../../packages/components/core/option/option-module.ts","../../../packages/components/core/overflow-shadow/overflow-shadow.ts","../../../packages/components/core/overlay/auto-hide-scroll-strategy.ts","../../../packages/components/core/overlay/overlay-position-map.ts","../../../packages/components/core/overlay/panel-height.ts","../../../packages/components/core/overlay/panel-width.ts","../../../packages/components/core/overlay/safe-area.ts","../../../packages/components/core/overlay/shadow-dom-overlay-container.ts","../../../packages/components/core/pop-up/constants.ts","../../../packages/components/core/pop-up/focus-trap-strategy.ts","../../../packages/components/core/pop-up/pop-up.ts","../../../packages/components/core/pop-up/pop-up-styles.ts","../../../packages/components/core/pop-up/pop-up-trigger.ts","../../../packages/components/core/select/constants.ts","../../../packages/components/core/select/common.ts","../../../packages/components/core/select/compare-with.ts","../../../packages/components/core/select/errors.ts","../../../packages/components/core/select/events.ts","../../../packages/components/core/services/measure-scrollbar.service.ts","../../../packages/components/core/services/theme.service.ts","../../../packages/components/core/testing/event-objects.ts","../../../packages/components/core/testing/dispatch-events.ts","../../../packages/components/core/testing/element-focus.ts","../../../packages/components/core/testing/mock-ng-zone.ts","../../../packages/components/core/testing/type-in-element.ts","../../../packages/components/core/testing/wrapped-error-message.ts","../../../packages/components/core/validation/validation.ts","../../../packages/components/core/version.ts","../../../packages/components/core/koobiq-components-core.ts"],"sourcesContent":["import { _getEventTarget } from '@angular/cdk/platform';\n\nexport const MAC_ENTER = 3;\nexport const BACKSPACE = 8;\nexport const TAB = 9;\nexport const NUM_CENTER = 12;\nexport const ENTER = 13;\nexport const SHIFT = 16;\nexport const CONTROL = 17;\nexport const ALT = 18;\nexport const PAUSE = 19;\nexport const CAPS_LOCK = 20;\nexport const ESCAPE = 27;\nexport const SPACE = 32;\nexport const PAGE_UP = 33;\nexport const PAGE_DOWN = 34;\nexport const END = 35;\nexport const HOME = 36;\nexport const LEFT_ARROW = 37;\nexport const UP_ARROW = 38;\nexport const RIGHT_ARROW = 39;\nexport const DOWN_ARROW = 40;\nexport const PLUS_SIGN = 43;\nexport const PRINT_SCREEN = 44;\nexport const INSERT = 45;\nexport const DELETE = 46;\nexport const ZERO = 48;\nexport const ONE = 49;\nexport const TWO = 50;\nexport const THREE = 51;\nexport const FOUR = 52;\nexport const FIVE = 53;\nexport const SIX = 54;\nexport const SEVEN = 55;\nexport const EIGHT = 56;\nexport const NINE = 57;\nexport const FF_SEMICOLON = 59; // Firefox (Gecko) fires this for semicolon instead of 186\nexport const FF_EQUALS = 61; // Firefox (Gecko) fires this for equals instead of 187\nexport const QUESTION_MARK = 63;\nexport const AT_SIGN = 64;\nexport const A = 65;\nexport const B = 66;\nexport const C = 67;\nexport const D = 68;\nexport const E = 69;\nexport const F = 70;\nexport const G = 71;\nexport const H = 72;\nexport const I = 73;\nexport const J = 74;\nexport const K = 75;\nexport const L = 76;\nexport const M = 77;\nexport const N = 78;\nexport const O = 79;\nexport const P = 80;\nexport const Q = 81;\nexport const R = 82;\nexport const S = 83;\nexport const T = 84;\nexport const U = 85;\nexport const V = 86;\nexport const W = 87;\nexport const X = 88;\nexport const Y = 89;\nexport const Z = 90;\nexport const META = 91; // WIN_KEY_LEFT\nexport const MAC_WK_CMD_LEFT = 91;\nexport const MAC_WK_CMD_RIGHT = 93;\nexport const CONTEXT_MENU = 93;\nexport const NUMPAD_ZERO = 96;\nexport const NUMPAD_ONE = 97;\nexport const NUMPAD_TWO = 98;\nexport const NUMPAD_THREE = 99;\nexport const NUMPAD_FOUR = 100;\nexport const NUMPAD_FIVE = 101;\nexport const NUMPAD_SIX = 102;\nexport const NUMPAD_SEVEN = 103;\nexport const NUMPAD_EIGHT = 104;\nexport const NUMPAD_NINE = 105;\nexport const NUMPAD_MULTIPLY = 106;\nexport const NUMPAD_PLUS = 107;\nexport const NUMPAD_MINUS = 109;\nexport const NUMPAD_PERIOD = 110;\nexport const NUMPAD_DIVIDE = 111;\nexport const F1 = 112;\nexport const F2 = 113;\nexport const F3 = 114;\nexport const F4 = 115;\nexport const F5 = 116;\nexport const F6 = 117;\nexport const F7 = 118;\nexport const F8 = 119;\nexport const F9 = 120;\nexport const F10 = 121;\nexport const F11 = 122;\nexport const F12 = 123;\nexport const NUM_LOCK = 144;\nexport const SCROLL_LOCK = 145;\nexport const FIRST_MEDIA = 166;\nexport const FF_MINUS = 173;\nexport const MUTE = 173; // Firefox (Gecko) fires 181 for MUTE\nexport const VOLUME_DOWN = 174; // Firefox (Gecko) fires 182 for VOLUME_DOWN\nexport const VOLUME_UP = 175; // Firefox (Gecko) fires 183 for VOLUME_UP\nexport const FF_MUTE = 181;\nexport const FF_VOLUME_DOWN = 182;\nexport const LAST_MEDIA = 183;\nexport const FF_VOLUME_UP = 183;\nexport const SEMICOLON = 186; // Firefox (Gecko) fires 59 for SEMICOLON\nexport const EQUALS = 187; // Firefox (Gecko) fires 61 for EQUALS\nexport const COMMA = 188;\nexport const DASH = 189; // Firefox (Gecko) fires 173 for DASH/MINUS\nexport const PERIOD = 190;\nexport const SLASH = 191;\nexport const APOSTROPHE = 192;\nexport const TILDE = 192;\nexport const OPEN_SQUARE_BRACKET = 219;\nexport const BACKSLASH = 220;\nexport const CLOSE_SQUARE_BRACKET = 221;\nexport const SINGLE_QUOTE = 222;\nexport const MAC_META = 224;\n\ntype ModifierKey = 'altKey' | 'shiftKey' | 'ctrlKey' | 'metaKey';\n\nexport function hasModifierKey(event: KeyboardEvent | MouseEvent, ...modifiers: ModifierKey[]): boolean {\n if (modifiers.length) {\n return modifiers.some((modifier) => event[modifier]);\n }\n\n return event.altKey || event.shiftKey || event.ctrlKey || event.metaKey;\n}\n\nexport function isControl(event: KeyboardEvent): boolean {\n const keyCode = event.keyCode;\n\n switch (keyCode) {\n case SHIFT:\n case CONTROL:\n case ALT:\n return true;\n default:\n return event.metaKey;\n }\n}\n\nexport function isNumberKey({ keyCode }: KeyboardEvent): boolean {\n return keyCode >= ZERO && keyCode <= NINE;\n}\n\nexport function isNumpadKey({ keyCode }: KeyboardEvent): boolean {\n return keyCode >= NUMPAD_ZERO && keyCode <= NUMPAD_NINE;\n}\nexport function isLetterKey({ keyCode }: KeyboardEvent): boolean {\n return keyCode >= A && keyCode <= Z;\n}\n\nexport function isFunctionKey({ keyCode }: KeyboardEvent): boolean {\n return keyCode >= F1 && keyCode <= F12;\n}\n\nexport function isVerticalMovement({ keyCode }: KeyboardEvent): boolean {\n return [UP_ARROW, DOWN_ARROW, PAGE_DOWN, PAGE_UP, HOME, END].includes(keyCode);\n}\n\nexport function isHorizontalMovement({ keyCode }: KeyboardEvent): boolean {\n return [LEFT_ARROW, RIGHT_ARROW, BACKSPACE, DELETE].includes(keyCode);\n}\n\nexport function isSelectAll(event: KeyboardEvent): boolean {\n return (event.ctrlKey || event.metaKey) && event.keyCode === A;\n}\n\nexport function isCopy(event: KeyboardEvent): boolean {\n return (event.ctrlKey || event.metaKey) && event.keyCode === C;\n}\n\nexport function isInput(event: Event): boolean {\n const target = _getEventTarget<HTMLElement>(event);\n\n return !!target && (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA');\n}\n\nexport function isLeftBracket(event: KeyboardEvent): boolean {\n return event.code === 'BracketLeft';\n}\n\nexport function isRightBracket(event: KeyboardEvent): boolean {\n return event.code === 'BracketRight';\n}\n\nexport function isDigit({ keyCode }: KeyboardEvent): boolean {\n return [ZERO, ONE, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE].includes(keyCode);\n}\n","import { QueryList } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime, filter, map, tap } from 'rxjs/operators';\nimport { A, DOWN_ARROW, END, HOME, LEFT_ARROW, NINE, RIGHT_ARROW, TAB, UP_ARROW, Z, ZERO } from '../../keycodes';\n\n// This interface is for items that can be passed to a ListKeyManager.\nexport interface ListKeyManagerOption {\n // Whether the option is disabled.\n disabled?: boolean;\n\n // Gets the label for this option.\n getLabel?(): string;\n}\n\n/** Modifier keys handled by the ListKeyManager. */\nexport type ListKeyManagerModifierKey = 'altKey' | 'ctrlKey' | 'metaKey' | 'shiftKey';\n\n/**\n * This class manages keyboard events for selectable lists. If you pass it a query list\n * of items, it will set the active item correctly when arrow events occur.\n */\nexport class ListKeyManager<T extends ListKeyManagerOption> {\n /**\n * Stream that emits any time the TAB key is pressed, so components can react\n * when focus is shifted off of the list.\n */\n tabOut: Subject<void> = new Subject<void>();\n\n /** Stream that emits whenever the active item of the list manager changes. */\n change = new Subject<number>();\n\n previousActiveItemIndex = -1;\n\n // Index of the currently active item.\n get activeItemIndex(): number {\n return this._activeItemIndex;\n }\n\n private _activeItemIndex = -1;\n\n // The active item.\n get activeItem(): T | null {\n return this._activeItem;\n }\n\n private _activeItem: T;\n\n private wrap: boolean = false;\n private letterKeyStream = new Subject<string>();\n private typeaheadSubscription = Subscription.EMPTY;\n private vertical = true;\n private horizontal: 'ltr' | 'rtl' | null;\n\n private scrollSize: number = 0;\n\n // Buffer for the letters that the user has pressed when the typeahead option is turned on.\n private pressedLetters: string[] = [];\n\n private homeAndEnd = false;\n\n private allowedModifierKeys: ListKeyManagerModifierKey[] = [];\n\n constructor(private _items: QueryList<T>) {\n if (_items instanceof QueryList) {\n _items.changes.subscribe((newItems: QueryList<T>) => {\n if (this._activeItem) {\n const itemArray = newItems.toArray();\n const newIndex = itemArray.indexOf(this._activeItem);\n\n if (newIndex > -1 && newIndex !== this._activeItemIndex) {\n this._activeItemIndex = newIndex;\n }\n }\n });\n }\n }\n\n /** Gets whether the user is currently typing into the manager using the typeahead feature. */\n isTyping(): boolean {\n return this.pressedLetters.length > 0;\n }\n\n withScrollSize(scrollSize: number): this {\n this.scrollSize = scrollSize;\n\n return this;\n }\n\n /**\n * Modifier keys which are allowed to be held down and whose default actions will be prevented\n * as the user is pressing the arrow keys. Defaults to not allowing any modifier keys.\n */\n withAllowedModifierKeys(keys: ListKeyManagerModifierKey[]): this {\n this.allowedModifierKeys = keys;\n\n return this;\n }\n\n /**\n * Turns on wrapping mode, which ensures that the active item will wrap to\n * the other end of list when there are no more items in the given direction.\n */\n\n withWrap(shouldWrap = true): this {\n this.wrap = shouldWrap;\n\n return this;\n }\n\n /**\n * Sets the predicate function that determines which items should be skipped by the\n * list key manager.\n * @param predicate Function that determines whether the given item should be skipped.\n */\n skipPredicate(predicate: (item: T) => boolean): this {\n this.skipPredicateFn = predicate;\n\n return this;\n }\n\n /**\n * Configures whether the key manager should be able to move the selection vertically.\n * @param enabled Whether vertical selection should be enabled.\n */\n withVerticalOrientation(enabled: boolean = true): this {\n this.vertical = enabled;\n\n return this;\n }\n\n /**\n * Configures the key manager to move the selection horizontally.\n * Passing in `null` will disable horizontal movement.\n * @param direction Direction in which the selection can be moved.\n */\n withHorizontalOrientation(direction: 'ltr' | 'rtl' | null): this {\n this.horizontal = direction;\n\n return this;\n }\n\n /**\n * Turns on typeahead mode which allows users to set the active item by typing.\n * @param searchLetterIndex letter index for incremental search, if is -1 search is disabled\n * @param debounceInterval Time to wait after the last keystroke before setting the active item.\n */\n withTypeAhead(debounceInterval: number = 200, searchLetterIndex: number = 0): this {\n if (this._items.length && this._items.some((item) => typeof item.getLabel !== 'function')) {\n throw Error('ListKeyManager items in typeahead mode must implement the `getLabel` method.');\n }\n\n this.typeaheadSubscription.unsubscribe();\n\n // Debounce the presses of non-navigational keys, collect the ones that correspond to letters and convert those\n // letters back into a string. Afterwards find the first item that starts with that string and select it.\n this.typeaheadSubscription = this.letterKeyStream\n .pipe(\n tap((keyCode) => this.pressedLetters.push(keyCode)),\n debounceTime(debounceInterval),\n filter(() => this.pressedLetters.length > 0),\n map(() => this.pressedLetters.join(''))\n )\n .subscribe((inputString) => {\n if (searchLetterIndex === -1) {\n this.pressedLetters = [];\n\n return;\n }\n\n const items = this._items.toArray();\n\n // Start at 1 because we want to start searching at the item immediately\n // following the current active item.\n for (let i = 1; i < items.length + 1; i++) {\n const index = (this._activeItemIndex + i) % items.length;\n const item = items[index];\n\n if (\n !item.disabled &&\n item.getLabel!().toUpperCase().trim().indexOf(inputString) === searchLetterIndex\n ) {\n this.setActiveItem(index);\n break;\n }\n }\n\n this.pressedLetters = [];\n });\n\n return this;\n }\n\n /**\n * Configures the key manager to activate the first and last items\n * respectively when the Home or End key is pressed.\n * @param enabled Whether pressing the Home or End key activates the first/last item.\n */\n withHomeAndEnd(enabled: boolean = true): this {\n this.homeAndEnd = enabled;\n\n return this;\n }\n\n /**\n * Sets the active item to the item at the index specified.\n * @param index The index of the item to be set as active or item The item to be set as active.\n */\n setActiveItem(index: number | T): void;\n\n /**\n * Sets the active item to the item at the index specified.\n * @param item The index of the item to be set as active.\n */\n setActiveItem(item: any): void {\n this.previousActiveItemIndex = this._activeItemIndex;\n\n this.updateActiveItem(item);\n\n if (this._activeItemIndex !== this.previousActiveItemIndex) {\n this.change.next(this._activeItemIndex);\n }\n }\n\n /**\n * Sets the active item depending on the key event passed in.\n * @param event Keyboard event to be used for determining which element should be active.\n */\n onKeydown(event: KeyboardEvent): void {\n const keyCode = event.keyCode;\n\n const modifiers: ListKeyManagerModifierKey[] = ['altKey', 'ctrlKey', 'metaKey', 'shiftKey'];\n const isModifierAllowed = modifiers.every((modifier) => {\n return !event[modifier] || this.allowedModifierKeys.indexOf(modifier) > -1;\n });\n\n switch (keyCode) {\n case TAB:\n this.tabOut.next();\n\n return;\n\n case DOWN_ARROW:\n if (this.vertical) {\n this.setNextItemActive();\n break;\n } else {\n return;\n }\n\n case UP_ARROW:\n if (this.vertical) {\n this.setPreviousItemActive();\n break;\n } else {\n return;\n }\n\n case RIGHT_ARROW:\n if (this.horizontal === 'ltr') {\n this.setNextItemActive();\n break;\n } else if (this.horizontal === 'rtl') {\n this.setPreviousItemActive();\n break;\n } else {\n return;\n }\n\n case LEFT_ARROW:\n if (this.horizontal === 'ltr') {\n this.setPreviousItemActive();\n break;\n } else if (this.horizontal === 'rtl') {\n this.setNextItemActive();\n break;\n } else {\n return;\n }\n\n case HOME:\n if (this.homeAndEnd && isModifierAllowed) {\n this.setFirstItemActive();\n break;\n } else {\n return;\n }\n\n case END:\n if (this.homeAndEnd && isModifierAllowed) {\n this.setLastItemActive();\n break;\n } else {\n return;\n }\n\n default:\n // Attempt to use the `event.key` which also maps it to the user's keyboard language,\n // otherwise fall back to resolving alphanumeric characters via the keyCode.\n if (event.key && event.key.length === 1) {\n this.letterKeyStream.next(event.key.toLocaleUpperCase());\n } else if ((keyCode >= A && keyCode <= Z) || (keyCode >= ZERO && keyCode <= NINE)) {\n this.letterKeyStream.next(String.fromCharCode(keyCode));\n }\n\n // Note that we return here, in order to avoid preventing\n // the default action of non-navigational keys.\n return;\n }\n\n this.pressedLetters = [];\n event.preventDefault();\n }\n\n // Sets the active item to the first enabled item in the list.\n setFirstItemActive(): void {\n this.setActiveItemByIndex(0, 1);\n }\n\n // Sets the active item to the last enabled item in the list.\n setLastItemActive(): void {\n this.setActiveItemByIndex(this._items.length - 1, -1);\n }\n\n // Sets the active item to the next enabled item in the list.\n setNextItemActive(): void {\n if (this._activeItemIndex < 0) {\n this.setFirstItemActive();\n } else {\n this.setActiveItemByDelta(1);\n }\n }\n\n // Sets the active item to a previous enabled item in the list.\n setPreviousItemActive(): void {\n if (this._activeItemIndex < 0 && this.wrap) {\n this.setLastItemActive();\n } else {\n this.setActiveItemByDelta(-1);\n }\n }\n\n setNextPageItemActive(delta: number = this.scrollSize): void {\n const nextItemIndex = this._activeItemIndex + delta;\n\n if (nextItemIndex >= this._items.length) {\n this.setLastItemActive();\n } else {\n this.setActiveItemByDelta(delta);\n }\n }\n\n setPreviousPageItemActive(delta: number = this.scrollSize): void {\n const nextItemIndex = this._activeItemIndex - delta;\n\n if (nextItemIndex <= 0) {\n this.setFirstItemActive();\n } else {\n this.setActiveItemByDelta(-delta);\n }\n }\n\n /**\n * Allows setting the active without any other effects.\n * @param index Index of the item to be set as active.\n */\n updateActiveItem(index: number): void;\n\n /**\n * Allows setting the active item without any other effects.\n * @param item Item to be set as active or index Index of the item to be set as active..\n */\n updateActiveItem(item: number | T): void;\n\n updateActiveItem(item: any): void {\n const itemArray = this._items.toArray();\n const index = typeof item === 'number' ? item : itemArray.indexOf(item);\n\n this._activeItemIndex = index;\n this._activeItem = itemArray[index];\n }\n\n /**\n * Predicate function that can be used to check whether an item should be skipped\n * by the key manager. By default, disabled items are skipped.\n */\n private skipPredicateFn = (item: T) => item.disabled;\n\n /**\n * This method sets the active item, given a list of items and the delta between the\n * currently active item and the new active item. It will calculate differently\n * depending on whether wrap mode is turned on.\n */\n private setActiveItemByDelta(delta: number): void {\n if (this.wrap) {\n this.setActiveInWrapMode(delta);\n } else {\n this.setActiveInDefaultMode(delta);\n }\n }\n\n /**\n * Sets the active item properly given \"wrap\" mode. In other words, it will continue to move\n * down the list until it finds an item that is not disabled, and it will wrap if it\n * encounters either end of the list.\n */\n private setActiveInWrapMode(delta: number): void {\n const items = this.getItemsArray();\n\n for (let i = 1; i <= items.length; i++) {\n const index = (this._activeItemIndex + delta * i + items.length) % items.length;\n const item = items[index];\n\n if (!this.skipPredicateFn(item)) {\n this.setActiveItem(index);\n\n return;\n }\n }\n }\n\n /**\n * Sets the active item properly given the default mode. In other words, it will\n * continue to move down the list until it finds an item that is not disabled. If\n * it encounters either end of the list, it will stop and not wrap.\n */\n private setActiveInDefaultMode(delta: number): void {\n this.setActiveItemByIndex(this._activeItemIndex + delta, delta);\n }\n\n /**\n * Sets the active item to the first enabled item starting at the index specified. If the\n * item is disabled, it will move in the fallbackDelta direction until it either\n * finds an enabled item or encounters the end of the list.\n */\n private setActiveItemByIndex(index: number, fallbackDelta: number): void {\n const items = this.getItemsArray();\n\n if (!items[index]) {\n return;\n }\n\n let curIndex = index;\n\n while (this.skipPredicateFn(items[curIndex])) {\n curIndex += fallbackDelta;\n\n if (!items[curIndex]) {\n return;\n }\n }\n\n this.setActiveItem(curIndex);\n }\n\n /** Returns the items as an array. */\n private getItemsArray(): T[] {\n return this._items instanceof QueryList ? this._items.toArray() : this._items;\n }\n}\n","import { ListKeyManager, ListKeyManagerOption } from './list-key-manager';\n\n/**\n * This is the interface for highlightable items (used by the ActiveDescendantKeyManager).\n * Each item must know how to style itself as active or inactive and whether or not it is\n * currently disabled.\n */\nexport interface Highlightable extends ListKeyManagerOption {\n // Applies the styles for an active item to this item.\n setActiveStyles(): void;\n\n // Applies the styles for an inactive item to this item.\n setInactiveStyles(): void;\n}\n\nexport class ActiveDescendantKeyManager<T> extends ListKeyManager<Highlightable & T> {\n /**\n * Sets the active item to the item at the specified index and adds the\n * active styles to the newly active item. Also removes active styles\n * from the previously active item.\n * @param index Index of the item to be set as active.\n */\n setActiveItem(index: number): void;\n\n /**\n * Sets the active item to the item to the specified one and adds the\n * active styles to the it. Also removes active styles from the\n * previously active item.\n * @param item Item to be set as active.\n */\n setActiveItem(item: T): void;\n\n /**\n * This method sets the active item to the item at the specified index.\n * It also adds active styles to the newly active item and removes active\n * styles from the previously active item.\n */\n setActiveItem(index: any): void {\n if (this.activeItem) {\n this.activeItem.setInactiveStyles();\n }\n\n super.setActiveItem(index);\n\n if (this.activeItem) {\n this.activeItem.setActiveStyles();\n }\n }\n}\n","import { FocusOrigin } from '@angular/cdk/a11y';\nimport { ListKeyManager, ListKeyManagerOption } from './list-key-manager';\n\n/**\n * This is the interface for focusable items (used by the FocusKeyManager).\n * Each item must know how to focus itself, whether or not it is currently disabled\n * and be able to supply it's label.\n */\nexport interface IFocusableOption extends ListKeyManagerOption {\n // Focuses the `FocusableOption`. */\n focus(origin?: FocusOrigin): void;\n}\n\nexport class FocusKeyManager<T> extends ListKeyManager<IFocusableOption & T> {\n private origin: FocusOrigin = 'program';\n\n /**\n * Sets the active item or index to the item that is specified and focuses it.\n * @param item Item to be set as active.\n */\n setActiveItem(item: number | T): void;\n\n setActiveItem(item: any): void {\n super.setActiveItem(item);\n\n if (this.activeItem) {\n this.activeItem.focus(this.origin);\n }\n }\n\n /**\n * Sets the focus origin that will be passed in to the items for any subsequent `focus` calls.\n * @param origin Focus origin to be used when focusing items.\n */\n setFocusOrigin(origin: FocusOrigin): this {\n this.origin = origin;\n\n return this;\n }\n\n getFocusOrigin(): FocusOrigin {\n return this.origin;\n }\n}\n","/**\n * Koobiq components animation curves\n *\n * @docs-private\n */\nexport enum KbqAnimationCurves {\n StandardCurve = 'cubic-bezier(0.4,0.0,0.2,1)',\n DecelerationCurve = 'cubic-bezier(0.0,0.0,0.2,1)',\n AccelerationCurve = 'cubic-bezier(0.4,0.0,1,1)',\n SharpCurve = 'cubic-bezier(0.4,0.0,0.6,1)',\n EaseInOut = 'ease-in-out',\n EaseInOutQuad = 'cubic-bezier(0.455,0.03,0.515,0.955)'\n}\n\n/**\n * Koobiq components animation durations\n *\n * @docs-private\n */\nexport enum KbqAnimationDurations {\n Long = '300ms',\n Complex = '250ms',\n Entering = '150ms',\n Exiting = '125ms',\n Rapid = '100ms',\n Instant = '50ms'\n}\n","import { animate, AnimationTriggerMetadata, state, style, transition, trigger } from '@angular/animations';\n\nexport const fadeAnimation: AnimationTriggerMetadata = trigger('fadeAnimation', [\n state('void', style({ opacity: 0 })),\n state('true', style({ opacity: 1 })),\n state('false', style({ opacity: 0 })),\n transition('* => true', animate('150ms cubic-bezier(0.0, 0.0, 0.2, 1)')),\n transition('* => void', animate('150ms cubic-bezier(0.4, 0.0, 1, 1)'))\n]);\n","import { animate, AnimationTriggerMetadata, group, state, style, transition, trigger } from '@angular/animations';\n\n/**\n * The following are all the animations for the kbq-select component, with each\n * const containing the metadata for one animation.\n *\n */\nexport const kbqSelectAnimations: {\n readonly transformPanel: AnimationTriggerMetadata;\n readonly fadeInContent: AnimationTriggerMetadata;\n} = {\n /**\n * This animation transforms the select's overlay panel on and off the page.\n *\n * When the panel is attached to the DOM, it expands its width by the amount of padding, scales it\n * up to 100% on the Y axis, fades in its border, and translates slightly up and to the\n * side to ensure the option text correctly overlaps the trigger text.\n *\n * When the panel is removed from the DOM, it simply fades out linearly.\n */\n transformPanel: trigger('transformPanel', [\n state(\n 'void',\n style({\n transform: 'scaleY(0)',\n minWidth: '100%',\n opacity: 0\n })\n ),\n transition(\n 'void => *',\n group([\n animate('0ms cubic-bezier(0.25, 0.8, 0.25, 1)')\n ])\n ),\n transition('* => void', [\n animate('0ms 0ms linear', style({ opacity: 0 }))\n ])\n ]),\n\n /**\n * This animation fades in the background color and text content of the\n * select's options. It is time delayed to occur 100ms after the overlay\n * panel has transformed in.\n */\n fadeInContent: trigger('fadeInContent', [\n state('showing', style({ opacity: 1 })),\n transition('void => showing', [\n style({ opacity: 0 }),\n animate('0ms 0ms cubic-bezier(0.55, 0, 0.55, 0.2)')\n ])\n ])\n};\n\nexport const transformPanel = kbqSelectAnimations.transformPanel;\n\nexport const fadeInContent = kbqSelectAnimations.fadeInContent;\n","import { AutofillMonitor } from '@angular/cdk/text-field';\nimport { DestroyRef, ElementRef, inject, Signal, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n/**\n * Tracks whether the current control's value was filled in by the browser, as a signal.\n *\n * Call it from an injection context on a directive whose host is the element the browser actually\n * fills — a text `<input>` or a `<textarea>`. Every `KbqFormFieldControl` that can be autofilled\n * exposes the result as its `autofilled` member.\n *\n * This is a hook for application code, not the mechanism behind the autofill styling. The styling\n * keys on `:autofill` in CSS, which matches in the same style pass the browser fills the field;\n * detection here goes through a zero-length keyframe animation and an `animationstart` listener, so\n * it lands a frame or two later — too late to paint with, and early enough for anything a component\n * wants to do about it.\n *\n * `monitor()` returns EMPTY off the browser platform, so this needs no `Platform` guard.\n */\nexport const kbqInjectAutofilled = (): Signal<boolean> => {\n const elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n const autofillMonitor = inject(AutofillMonitor);\n const destroyRef = inject(DestroyRef);\n const autofilled = signal(false);\n\n autofillMonitor\n .monitor(elementRef)\n .pipe(takeUntilDestroyed(destroyRef))\n .subscribe(({ isAutofilled }) => autofilled.set(isAutofilled));\n\n // `stopMonitoring()` is the load-bearing teardown, not a duplicate of `takeUntilDestroyed()`\n // above: `AutofillMonitor` is `providedIn: 'root'`, so dropping only the subscription would\n // leave the element registered with the app-lifetime service and its marker classes on the DOM\n // node.\n destroyRef.onDestroy(() => autofillMonitor.stopMonitoring(elementRef));\n\n return autofilled.asReadonly();\n};\n","import { computed, Directive, forwardRef, InjectionToken, model, Provider, signal } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { KbqCheckedState } from './checkbox';\n\n/**\n * Provider Expression that allows `KbqCheckable` to register as a `ControlValueAccessor`, so any host\n * applying it via `hostDirectives` gets `[(ngModel)]`/`formControl` support without wiring up its own.\n * @docs-private\n */\nexport const KBQ_CHECKABLE_CONTROL_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => KbqCheckable),\n multi: true\n};\n\n/**\n * Click action shared by checkable controls (checkbox, toggle, and custom checkbox-like primitives).\n * noop: Do not toggle checked or indeterminate.\n * check: Only toggle checked status, ignore indeterminate.\n * check-indeterminate: Toggle checked status, set indeterminate to false. Default behavior.\n * undefined: Same as `check-indeterminate`.\n */\nexport type KbqCheckableClickAction = 'noop' | 'check' | 'check-indeterminate' | undefined;\n\n/** Injection token that can be used to specify the default click behavior for checkable controls. */\nexport const KBQ_CHECKABLE_CLICK_ACTION = new InjectionToken<KbqCheckableClickAction>('kbq-checkable-click-action');\n\n/**\n * Represents the different states that require custom transitions between them.\n * @docs-private\n */\nexport enum TransitionCheckState {\n /** The initial state of the component before any user interaction. */\n Init = 'init',\n /** The state representing the component when it's becoming checked. */\n Checked = 'checked',\n /** The state representing the component when it's becoming unchecked. */\n Unchecked = 'unchecked',\n /** The state representing the component when it's becoming indeterminate. */\n Indeterminate = 'indeterminate'\n}\n\n/** Result of resolving a click on a checkable control's native input. See {@link KbqCheckable.resolveClick}. */\nexport interface KbqCheckableClickResult {\n /** Whether `checked` should be toggled and a `change` event emitted. */\n readonly shouldToggle: boolean;\n /** Whether `indeterminate` should be cleared and an `indeterminateChange` event emitted. */\n readonly shouldClearIndeterminate: boolean;\n}\n\n/**\n * Shared behavior for checkbox-like controls: checked/disabled/indeterminate/tabIndex state, the click-to-toggle\n * algorithm, ARIA-checked computation, and `ControlValueAccessor` change plumbing.\n *\n * Meant to be applied via `hostDirectives` by components that render their own native `<input type=\"checkbox\">`\n * and markup (e.g. `KbqCheckbox`, `KbqToggleComponent`, or custom checkbox-like primitives). Hosts stay\n * responsible for their own public inputs/outputs, `FocusMonitor` wiring, and emitting their own typed\n * `change` event - this directive only centralizes the state and decisions behind them.\n */\n@Directive({\n selector: '[kbqCheckable]',\n providers: [KBQ_CHECKABLE_CONTROL_VALUE_ACCESSOR],\n exportAs: 'kbqCheckable'\n})\nexport class KbqCheckable implements ControlValueAccessor {\n private controlValueAccessorChangeFn: (value: any) => void = () => {};\n\n /**\n * Called when the control is blurred. Needed to properly implement `ControlValueAccessor`.\n * @docs-private\n */\n onTouched: () => any = () => {};\n\n /** @docs-private */\n readonly currentCheckState = signal<TransitionCheckState>(TransitionCheckState.Init);\n\n readonly checked = model(false);\n\n readonly disabled = model(false);\n\n readonly indeterminate = model(false);\n\n /** Raw tab index as set by the caller, ignoring `disabled`. Use `effectiveTabIndex` to read the applied value. */\n readonly tabIndex = model(0);\n\n /** The tab index actually applied to the native input: forced to `-1` while disabled. */\n readonly effectiveTabIndex = computed(() => (this.disabled() ? -1 : this.tabIndex()));\n\n /** Returns the ARIA-checked value: `'true'`, `'false'`, or `'mixed'` when indeterminate. */\n getAriaChecked(): KbqCheckedState {\n return this.checked() ? 'true' : this.indeterminate() ? 'mixed' : 'false';\n }\n\n /** Toggles the `checked` state and notifies the registered `ControlValueAccessor` change handler. */\n toggle(): void {\n this.checked.update((value) => !value);\n this.notifyFormValueChange(this.checked());\n }\n\n /**\n * Resolves what a click on the native input should do, based on the current state and `clickAction`.\n * Pure - does not mutate state. Callers apply `checked`/`indeterminate` themselves and own emitting\n * their own change events, so timing/order stays identical to a hand-written click handler.\n */\n resolveClick(clickAction: KbqCheckableClickAction): KbqCheckableClickResult {\n if (this.disabled() || clickAction === 'noop') {\n return { shouldToggle: false, shouldClearIndeterminate: false };\n }\n\n return {\n shouldToggle: true,\n shouldClearIndeterminate: this.indeterminate() && clickAction !== 'check'\n };\n }\n\n /** Resets the native input to match the current `checked`/`indeterminate` state (used for the `noop` click action). */\n resetNativeInput(nativeInput: HTMLInputElement): void {\n nativeInput.checked = this.checked();\n nativeInput.indeterminate = this.indeterminate();\n }\n\n /** Transitions the animation state, ignoring no-op transitions. @docs-private */\n transitionCheckState(newState: TransitionCheckState): void {\n if (this.currentCheckState() === newState) return;\n\n this.currentCheckState.set(newState);\n }\n\n // Implemented as part of ControlValueAccessor.\n writeValue(value: any): void {\n this.checked.set(!!value);\n }\n\n /** Stores the `ControlValueAccessor` change handler to be notified by `notifyFormValueChange`. */\n registerOnChange(fn: (value: any) => void): void {\n this.controlValueAccessorChangeFn = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n /** Notifies the registered `ControlValueAccessor` change handler. */\n notifyFormValueChange(value: boolean): void {\n this.controlValueAccessorChangeFn(value);\n }\n}\n","import { Directive, ElementRef, inject } from '@angular/core';\n\n@Directive({\n selector: '[kbqNormalizeWhitespace]',\n host: {\n '(copy)': 'onCopy($event)'\n }\n})\nexport class KbqNormalizeWhitespace {\n /** @docs-private */\n protected readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /**\n * Replace thin-space with space on copy event\n */\n onCopy($event: ClipboardEvent) {\n const value =\n (this.elementRef.nativeElement as HTMLInputElement).value || this.elementRef.nativeElement.textContent;\n\n if ($event.type === 'copy' && value) {\n $event.preventDefault();\n $event.clipboardData?.setData('text', value?.replace(/\\u2009/g, ' '));\n }\n }\n}\n","import { Directive, ElementRef, inject, Input, isDevMode } from '@angular/core';\nimport { AbstractConstructor, Constructor } from './constructor';\n\nexport interface CanColor {\n color: KbqComponentColors | ThemePalette | string;\n}\n\n/** @docs-private */\nexport type CanColorCtor = Constructor<CanColor> & AbstractConstructor<CanColor>;\n\nexport interface HasElementRef {\n elementRef: ElementRef;\n}\n\nexport enum ThemePalette {\n Primary = 'primary',\n Secondary = 'secondary',\n Error = 'error',\n Info = 'info',\n Warning = 'warning',\n Success = 'success',\n\n Default = 'secondary',\n Empty = ''\n}\n\nexport enum KbqComponentColors {\n Theme = 'theme',\n ThemeFade = 'theme-fade',\n Contrast = 'contrast',\n ContrastFade = 'contrast-fade',\n\n Error = 'error',\n Warning = 'warning',\n Success = 'success',\n\n Default = 'contrast',\n Empty = 'empty'\n}\n\n/** Mixin to augment a directive with a `color` property. */\nexport function mixinColor<T extends AbstractConstructor<HasElementRef>>(\n base: T,\n defaultColor?: KbqComponentColors | ThemePalette\n): CanColorCtor & T;\n\nexport function mixinColor<T extends Constructor<HasElementRef>>(\n base: T,\n defaultColor: KbqComponentColors | ThemePalette = KbqComponentColors.Empty\n): CanColorCtor & T {\n return class extends base {\n get color(): KbqComponentColors | ThemePalette {\n return this._color;\n }\n set color(value: KbqComponentColors | ThemePalette) {\n const colorPalette = value || defaultColor;\n\n if (colorPalette !== this._color) {\n if (this._color) {\n this.elementRef.nativeElement.classList.remove(`kbq-${this._color}`);\n }\n\n if (colorPalette) {\n this.elementRef.nativeElement.classList.add(`kbq-${colorPalette}`);\n }\n\n this._color = colorPalette;\n }\n }\n\n private _color: KbqComponentColors | ThemePalette;\n\n constructor(...args: any[]) {\n super(...args);\n\n this.color = defaultColor;\n\n if (isDevMode()) {\n // eslint-disable-next-line no-console\n console.warn('mixinColor deprecated and will be deleted in next major release');\n }\n }\n };\n}\n\n@Directive()\nexport class KbqColorDirective {\n /** @docs-private */\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n /** @docs-private */\n protected defaultColor: KbqComponentColors | ThemePalette | string;\n\n /** current class name of color */\n get colorClassName(): KbqComponentColors | ThemePalette | string {\n return `kbq-${this._color}`;\n }\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get color(): KbqComponentColors | ThemePalette | string {\n return this._color;\n }\n\n set color(value: KbqComponentColors | ThemePalette | string) {\n const color = value || this.defaultColor;\n\n if (color !== this._color) {\n if (this._color) {\n this.elementRef.nativeElement.classList.remove(`kbq-${this._color}`);\n }\n\n if (color) {\n this.elementRef.nativeElement.classList.add(`kbq-${color}`);\n }\n\n this._color = color;\n }\n }\n\n protected _color: KbqComponentColors | ThemePalette | string;\n\n constructor() {\n this.color = KbqComponentColors.Empty;\n }\n\n /** this color will be used as a default value. For example [color]=\"'' | false | undefined | null\". */\n setDefaultColor(color: KbqComponentColors | ThemePalette | string) {\n this.defaultColor = color;\n }\n}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { isDevMode } from '@angular/core';\nimport { AbstractConstructor, Constructor } from './constructor';\n\nexport interface CanDisable {\n disabled: boolean;\n}\n\n/** @docs-private */\nexport type CanDisableCtor = Constructor<CanDisable> & AbstractConstructor<CanDisable>;\n\n/** Mixin to augment a directive with a `disabled` property. */\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport function mixinDisabled<T extends AbstractConstructor<{}>>(base: T): CanDisableCtor & T;\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport function mixinDisabled<T extends Constructor<{}>>(base: T): CanDisableCtor & T {\n return class extends base {\n get disabled() {\n return this._disabled;\n }\n\n set disabled(value: any) {\n this._disabled = coerceBooleanProperty(value);\n }\n\n private _disabled: boolean = false;\n\n constructor(...args: any[]) {\n super(...args);\n\n if (isDevMode()) {\n // eslint-disable-next-line no-console\n console.warn('mixinDisabled deprecated and will be deleted in next major release');\n }\n }\n };\n}\n","import { isDevMode } from '@angular/core';\nimport { AbstractControl, FormGroupDirective, NgControl, NgForm, UntypedFormControl } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { ErrorStateMatcher } from '../error/error-state-matcher';\nimport { AbstractConstructor, Constructor } from './constructor';\n\n/** @docs-private */\nexport interface CanUpdateErrorState {\n /** Whether the component is in an error state. */\n errorState: boolean;\n /** An object used to control the error state of the component. */\n errorStateMatcher: ErrorStateMatcher;\n /** Updates the error state based on the provided error state matcher. */\n updateErrorState(): void;\n}\n\n/** @docs-private */\nexport type CanUpdateErrorStateCtor = Constructor<CanUpdateErrorState>;\n\n/** @docs-private */\nexport interface HasErrorState {\n parentFormGroup: FormGroupDirective | null;\n parentForm: NgForm | null;\n defaultErrorStateMatcher: ErrorStateMatcher;\n\n ngControl: NgControl | null;\n stateChanges: Subject<void>;\n}\n\n/**\n * Mixin to augment a directive with updateErrorState method.\n * For component with `errorState` and need to update `errorState`.\n */\nexport function mixinErrorState<T extends AbstractConstructor<HasErrorState>>(base: T): CanUpdateErrorStateCtor & T;\nexport function mixinErrorState<T extends Constructor<HasErrorState>>(base: T): CanUpdateErrorStateCtor & T {\n return class extends base {\n /** Whether the component is in an error state. */\n errorState: boolean = false;\n\n errorStateMatcher: ErrorStateMatcher;\n\n constructor(...args: any[]) {\n super(...args);\n\n if (isDevMode()) {\n // eslint-disable-next-line no-console\n console.warn('mixinErrorState deprecated and will be deleted in next major release');\n }\n }\n\n updateErrorState() {\n const oldState = this.errorState;\n const parent = this.parentFormGroup || this.parentForm;\n const matcher = this.errorStateMatcher || this.defaultErrorStateMatcher;\n const control = this.ngControl ? (this.ngControl.control as UntypedFormControl) : null;\n const newState = matcher.isErrorState(control, parent);\n\n if (newState !== oldState) {\n this.errorState = newState;\n this.stateChanges.next();\n }\n }\n };\n}\n\n/**\n * Class that tracks the error state of a component.\n * @docs-private\n */\nexport class KbqErrorStateTracker implements CanUpdateErrorState {\n /** Whether the tracker is currently in an error state. */\n errorState = false;\n\n /** User-defined matcher for the error state. */\n errorStateMatcher: ErrorStateMatcher;\n\n constructor(\n private defaultMatcher: ErrorStateMatcher | null,\n public ngControl: NgControl | null,\n private parentFormGroup: FormGroupDirective | null,\n private parentForm: NgForm | null,\n private stateChanges: Subject<void>\n ) {}\n\n /** Updates the error state based on the provided error state matcher. */\n updateErrorState() {\n const oldState = this.errorState;\n const parent = this.parentFormGroup || this.parentForm;\n const matcher = this.errorStateMatcher || this.defaultMatcher;\n const control = this.ngControl ? (this.ngControl.control as AbstractControl) : null;\n const newState = matcher?.isErrorState(control, parent) ?? false;\n\n if (newState !== oldState) {\n this.errorState = newState;\n this.stateChanges.next();\n }\n }\n}\n","import { _getFocusedElementPierceShadowDom } from '@angular/cdk/platform';\nimport { ElementRef, inject } from '@angular/core';\n\n/**\n * Injects the native element for the current component.\n */\nexport const kbqInjectNativeElement = <T extends Element = HTMLElement>(): T => {\n return inject<ElementRef<T>>(ElementRef<T>).nativeElement;\n};\n\n/**\n * Focuses `element` and scrolls it into view by the shortest distance, leaving a visible one alone.\n *\n * The reveal is explicit because the one `focus()` performs implicitly is not portable: WebKit defers it\n * to a later rendering update, where it lands after — and undoes — any scrolling the reader did in the\n * meantime. Letting the element reveal itself keeps every consumer working, whatever it uses as a scroll\n * container, and the browser resolves that container rather than the caller guessing at it.\n *\n * Pass `skipReveal` when the pointer caused the focus: the element is already under the cursor, so\n * revealing it would shift the list out from under it.\n */\nexport const kbqFocusAndReveal = (element: HTMLElement, skipReveal = false): void => {\n if (typeof element.focus !== 'function') return;\n\n // A focus listener calling back into `focus` must not scroll a second time. Read through shadow\n // roots, where `document.activeElement` reports the host instead of the element that holds focus.\n const wasFocused = _getFocusedElementPierceShadowDom() === element;\n\n element.focus({ preventScroll: true });\n\n if (skipReveal || wasFocused) return;\n\n element.scrollIntoView?.({ block: 'nearest', inline: 'nearest' });\n};\n","export function isBoolean(value: unknown): value is boolean {\n return typeof value === 'boolean';\n}\n\n/** Whether the value is undefined. */\nexport const isUndefined = (value: unknown): value is undefined => {\n return value === undefined;\n};\n\n/** Whether the value is null. */\nexport const isNull = (value: unknown): value is null => {\n return value === null;\n};\n\n/** Whether the value is HTMLElement. */\nexport const isHtmlElement = (value: unknown): value is HTMLElement => {\n return value instanceof HTMLElement;\n};\n\n/** Whether the value is Element. */\nexport const isElement = (value: unknown): value is Element => value instanceof Element;\n\n/** Whether the value is HTMLElement or null. */\nexport const isHtmlElementOrNull = (value: unknown): value is HTMLElement | null => {\n return isHtmlElement(value) || isNull(value);\n};\n\nexport const getNodesWithoutComments = (nodes: NodeList): Node[] => {\n const COMMENT_NODE = 8;\n\n return Array.from(nodes).filter((node) => node.nodeType !== COMMENT_NODE);\n};\n\nexport const leftIconClassName = 'kbq-icon_left';\nexport const rightIconClassName = 'kbq-icon_right';\n\n/** Whether the current platform is a Mac. */\nexport function isMac(): boolean {\n // eslint-disable-next-line no-restricted-globals\n return /^mac/i.test(navigator?.platform);\n}\n\n/** Converts an enumeration (enum) type into a string literal type containing\n * all possible string representations of the values. */\nexport type KbqEnumValues<T extends string | number> = `${T}`;\n","import { Directive } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { fromEvent, map, merge } from 'rxjs';\nimport { kbqInjectNativeElement } from '../utils';\n\n/**\n * Directive that adds a `kbq-hovered` class to an element, based on its hover state.\n *\n * @docs-private\n */\n@Directive({\n selector: '[kbqHover]',\n host: {\n class: 'kbq-hover',\n '[class.kbq-hovered]': 'hovered()'\n },\n exportAs: 'kbqHover'\n})\nexport class KbqHover {\n private readonly element = kbqInjectNativeElement();\n\n /**\n * Whether the element is hovered.\n */\n readonly hovered = toSignal(\n merge(\n fromEvent<MouseEvent>(this.element, 'mouseenter'),\n fromEvent<MouseEvent>(this.element, 'mouseleave')\n ).pipe(map(({ type }) => type === 'mouseenter')),\n { initialValue: false }\n );\n}\n","import { ChangeDetectorRef, Directive, inject } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Directive({\n host: {\n '(mouseenter)': 'mouseenterHandler()',\n '(mouseleave)': 'mouseleaveHandler()',\n '(click)': 'read.next(true)'\n }\n})\nexport class KbqReadStateDirective {\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n timestamp: number;\n timeToRead: number = 500;\n\n readonly read = new BehaviorSubject<boolean>(false);\n\n mouseenterHandler() {\n this.timestamp = new Date().getTime();\n }\n\n mouseleaveHandler() {\n if (new Date().getTime() - this.timestamp > this.timeToRead) {\n this.read.next(true);\n }\n\n this.changeDetectorRef.markForCheck();\n }\n}\n","import { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { isDevMode } from '@angular/core';\nimport { AbstractConstructor, Constructor } from './constructor';\nimport { CanDisable } from './disabled';\n\nexport interface HasTabIndex {\n tabIndex: number;\n}\n\nexport type HasTabIndexCtor = Constructor<HasTabIndex> & AbstractConstructor<HasTabIndex>;\n\n/** Mixin to augment a directive with a `tabIndex` property. */\nexport function mixinTabIndex<T extends AbstractConstructor<CanDisable>>(\n base: T,\n defaultTabIndex?: number\n): HasTabIndexCtor & T;\n\nexport function mixinTabIndex<T extends Constructor<CanDisable>>(base: T, defaultTabIndex = 0): HasTabIndexCtor & T {\n return class extends base implements HasTabIndex {\n defaultTabIndex = defaultTabIndex;\n\n get tabIndex(): number {\n return this.disabled ? -1 : this._tabIndex;\n }\n\n set tabIndex(value: number) {\n // If the specified tabIndex value is null or undefined, fall back to the default value.\n\n this._tabIndex = value != null ? coerceNumberProperty(value) : this.defaultTabIndex;\n }\n\n private _tabIndex: number = defaultTabIndex;\n\n constructor(...args: any[]) {\n super(...args);\n\n if (isDevMode()) {\n // eslint-disable-next-line no-console\n console.warn('mixinTabIndex deprecated and will be deleted in next major release');\n }\n }\n };\n}\n","import { InjectionToken } from '@angular/core';\n\nexport * from './autofill';\nexport * from './checkable';\nexport * from './checkbox';\nexport * from './clipboard';\nexport { CanColor, CanColorCtor, KbqColorDirective, KbqComponentColors, mixinColor, ThemePalette } from './color';\nexport { CanDisable, CanDisableCtor, mixinDisabled } from './disabled';\nexport { CanUpdateErrorState, CanUpdateErrorStateCtor, KbqErrorStateTracker, mixinErrorState } from './error-state';\nexport * from './flex';\nexport * from './hover';\nexport * from './orientation';\nexport * from './read-state';\nexport { KbqDefaultSizes } from './size';\nexport { HasTabIndex, HasTabIndexCtor, mixinTabIndex } from './tabindex';\n\nexport const KBQ_PARENT_ANIMATION_COMPONENT = new InjectionToken<any>('kbq-parent-animation-component');\n","import { inject, InjectionToken, LOCALE_ID } from '@angular/core';\nimport { DateAdapter as BaseDateAdapter } from '@koobiq/date-adapter';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n/** InjectionToken for datepicker that can be used to override default locale code. */\nexport const KBQ_DATE_LOCALE = new InjectionToken<string>('KBQ_DATE_LOCALE', {\n providedIn: 'root',\n factory: KBQ_DATE_LOCALE_FACTORY\n});\n\n/** @docs-private */\nexport function KBQ_DATE_LOCALE_FACTORY(): string {\n return inject(LOCALE_ID);\n}\n\nexport abstract class DateAdapter<D> extends BaseDateAdapter<D> {\n /** A stream that emits when the locale changes. */\n abstract get localeChanges(): Observable<any>;\n\n protected abstract _localeChanges: BehaviorSubject<string>;\n}\n","import { InjectionToken } from '@angular/core';\nimport { DateFormats } from '@koobiq/date-adapter';\n\nexport const KBQ_DATE_FORMATS = new InjectionToken<DateFormats>('kbq-date-formats');\nexport type KbqDateFormats = DateFormats;\n","import { inject, Injectable, InjectionToken, isDevMode, Provider, signal, Signal } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n/**\n * Time zone the library renders dates in.\n *\n * Accepts an IANA name (`'Europe/Moscow'`), a fixed offset — in minutes east of UTC (`180`) or as a\n * string (`'+03:00'`, `'UTC+3'`, `'03:00:00'`) — `'utc'`, or `'system'` for the zone of the host the code\n * runs on.\n *\n * The `string & {}` arm keeps IANA names open while still offering the special values as completions.\n */\nexport type KbqTimezoneLike = 'system' | 'utc' | number | (string & {});\n\n/**\n * InjectionToken for the time zone every date the library formats is rendered in.\n *\n * Read once, by the {@link KbqDateTimezoneService} constructor, out of the injector that created the\n * service — call {@link KbqDateTimezoneService.setTimezone} to change the zone afterwards. Defaults to\n * `'system'`, the zone of the host the code runs on.\n */\nexport const KBQ_DATE_TIMEZONE = new InjectionToken<KbqTimezoneLike>('KBQ_DATE_TIMEZONE');\n\nconst MINUTES_PER_HOUR = 60;\nconst SECONDS_PER_MINUTE = 60;\n\n/** The largest offset any zone has ever had; anything beyond it is a typo, not a zone. */\nconst MAX_OFFSET_HOURS = 14;\nconst MAX_OFFSET_MINUTES = MAX_OFFSET_HOURS * MINUTES_PER_HOUR;\n\n/** `UTC`/`GMT` with no offset — a valid input on its own, and what `Intl` reports for zero-offset zones. */\nconst UTC_ALIAS_PATTERN = /^(?:utc|gmt)$/i;\n\n/**\n * A fixed offset written with separators, with or without a `UTC`/`GMT` prefix and with or without a\n * sign: `+03:00`, `UTC+3`, `GMT+05:30`, `03:00:00`. The seconds group matches both the `timeZoneName`\n * `Intl` reports in the `longOffset` style for pre-standard-time instants (`GMT-00:44:30`) and the form\n * `KbqTimezoneZone.offset` is written in.\n */\nconst FIXED_OFFSET_PATTERN = /^(?:utc|gmt)?([+-])?(\\d{1,2})(?::([0-5]\\d)(?::([0-5]\\d))?)?$/i;\n\n/** The same offset written without separators: `-0530`. Kept apart so `+123` fails instead of backtracking. */\nconst COMPACT_OFFSET_PATTERN = /^(?:utc|gmt)?([+-])?(\\d{2})([0-5]\\d)$/i;\n\n/** Offset in minutes east of UTC of a fixed-offset specifier, or `null` when the value is not one. */\nconst parseFixedOffset = (value: string): number | null => {\n if (UTC_ALIAS_PATTERN.test(value)) return 0;\n\n const match = COMPACT_OFFSET_PATTERN.exec(value) ?? FIXED_OFFSET_PATTERN.exec(value);\n\n if (!match) return null;\n\n const [, sign, hours, minutes = '0', seconds = '0'] = match;\n\n if (Number(hours) > MAX_OFFSET_HOURS) return null;\n\n const magnitude = Number(hours) * MINUTES_PER_HOUR + Number(minutes) + Number(seconds) / SECONDS_PER_MINUTE;\n\n // Rounded because both date libraries expect whole minutes; only pre-1900 zones have a seconds part.\n return (sign === '-' ? -1 : 1) * Math.round(magnitude);\n};\n\n/**\n * One `Intl.DateTimeFormat` per IANA zone: building it is the expensive part of resolving an offset, and\n * an application uses a handful of zones at most. A `null` entry marks a name `Intl` rejected, so an\n * invalid zone is reported once instead of throwing on every date.\n *\n * Bounded because the zone can come from unvalidated input — a cookie on the server, a picker in the\n * browser — and this map outlives every request in the process.\n */\nconst MAX_CACHED_FORMATTERS = 32;\nconst offsetFormatters = new Map<string, Intl.DateTimeFormat | null>();\n\nconst getOffsetFormatter = (timeZone: string): Intl.DateTimeFormat | null => {\n if (!offsetFormatters.has(timeZone)) {\n if (offsetFormatters.size >= MAX_CACHED_FORMATTERS) {\n offsetFormatters.delete(offsetFormatters.keys().next().value!);\n }\n\n try {\n offsetFormatters.set(timeZone, new Intl.DateTimeFormat('en-US', { timeZone, timeZoneName: 'longOffset' }));\n } catch {\n if (isDevMode()) {\n // eslint-disable-next-line no-console\n console.warn(`Unknown time zone \"${timeZone}\", dates are left in the host time zone.`);\n }\n\n offsetFormatters.set(timeZone, null);\n }\n }\n\n return offsetFormatters.get(timeZone)!;\n};\n\n/**\n * Offset of `timezone` at `timestamp`, in minutes east of UTC. `null` means \"leave the date in the host\n * zone\" — either because `timezone` is `'system'`, or because it is a name no `Intl` implementation knows.\n *\n * Takes the instant because an IANA zone has no single offset: `'Europe/Berlin'` is +60 in January and\n * +120 in July, and one list of dates can span the change.\n */\nexport const kbqResolveTimezoneOffset = (timezone: KbqTimezoneLike, timestamp: number): number | null => {\n if (timezone === 'system') return null;\n\n // Bounded and rounded like the string form: a numeric offset comes from the same unvalidated places,\n // and neither date library reads a fractional minute or a 99-hour offset as anything sensible.\n if (typeof timezone === 'number') {\n return Number.isFinite(timezone) && Math.abs(timezone) <= MAX_OFFSET_MINUTES ? Math.round(timezone) : null;\n }\n\n const fixedOffset = parseFixedOffset(timezone);\n\n if (fixedOffset !== null) return fixedOffset;\n\n // An invalid date has no offset to resolve, and `Intl` throws rather than saying so.\n if (!Number.isFinite(timestamp)) return null;\n\n const timeZoneName = getOffsetFormatter(timezone)\n ?.formatToParts(new Date(timestamp))\n .find(({ type }) => type === 'timeZoneName')?.value;\n\n return timeZoneName ? parseFixedOffset(timeZoneName) : null;\n};\n\n/**\n * Holds the time zone every date the library creates, parses and formats is rendered in.\n *\n * Provided in root, so {@link KBQ_DATE_TIMEZONE} in the application providers configures the whole\n * application. To scope a zone to one subtree, list {@link kbqDateTimezoneProvider} in that component's\n * `providers` together with the date adapter and the `DateFormatter`: the adapter captures the service of\n * the injector that created it, and keeps using it.\n */\n@Injectable({ providedIn: 'root' })\nexport class KbqDateTimezoneService {\n /** Active time zone. */\n readonly timezone: Signal<KbqTimezoneLike>;\n\n /**\n * Emits when the active time zone changes.\n *\n * The counterpart of `DateAdapter.localeChanges`, for the surfaces that render a date once instead of\n * through an impure pipe — the date inputs and the calendar.\n */\n readonly changes: Observable<KbqTimezoneLike>;\n\n private readonly _timezone = signal<KbqTimezoneLike>(inject(KBQ_DATE_TIMEZONE, { optional: true }) ?? 'system');\n private readonly _changes = new Subject<KbqTimezoneLike>();\n\n constructor() {\n this.timezone = this._timezone.asReadonly();\n this.changes = this._changes.asObservable();\n }\n\n /** Activates a time zone. */\n setTimezone(timezone: KbqTimezoneLike): void {\n this._timezone.set(timezone);\n this._changes.next(timezone);\n }\n\n /**\n * Offset of the active zone at `timestamp`, in minutes east of UTC, or `null` when dates are left in\n * the host zone.\n */\n offsetAt(timestamp: number): number | null {\n return kbqResolveTimezoneOffset(this._timezone(), timestamp);\n }\n}\n\n/**\n * Utility provider for the time zone dates are rendered in.\n *\n * Provides {@link KbqDateTimezoneService} alongside the token, so listing it in a component's `providers`\n * scopes the zone to that subtree instead of resolving the root service and silently doing nothing.\n *\n * @see KBQ_DATE_TIMEZONE\n */\nexport const kbqDateTimezoneProvider = (timezone: KbqTimezoneLike): Provider[] => [\n KbqDateTimezoneService,\n { provide: KBQ_DATE_TIMEZONE, useValue: timezone }\n];\n","import { Injectable, Provider, Type } from '@angular/core';\nimport { AbstractControl, FormGroupDirective, NgForm } from '@angular/forms';\n\n/** Utility provider for `ErrorStateMatcher`. */\nexport const kbqErrorStateMatcherProvider = (\n errorStateMatcher: Type<ErrorStateMatcher> | ErrorStateMatcher\n): Provider => {\n if (errorStateMatcher instanceof Type) {\n return {\n provide: ErrorStateMatcher,\n useClass: errorStateMatcher\n };\n }\n\n return {\n provide: ErrorStateMatcher,\n useValue: errorStateMatcher\n };\n};\n\n/**\n * Error state matcher that matches when a control is invalid and form is submitted.\n * Requires use FormGroupDirective or NgForm.\n */\n@Injectable()\nexport class ShowOnFormSubmitErrorStateMatcher implements ErrorStateMatcher {\n isErrorState(control: AbstractControl | null, form: FormGroupDirective | NgForm | null): boolean {\n return !!(control?.invalid && form?.submitted);\n }\n}\n\n/**\n * Error state matcher with split behavior based on error's type:\n * - `required` errors are shown only after the form is submitted.\n * - All other errors are shown as soon as the control is invalid and touched.\n */\n@Injectable()\nexport class ShowRequiredOnSubmitErrorStateMatcher implements ErrorStateMatcher {\n isErrorState(control: AbstractControl | null, form: FormGroupDirective | NgForm | null): boolean {\n return control?.hasError('required')\n ? !!(control?.invalid && form?.submitted)\n : !!(control?.invalid && control.touched);\n }\n}\n\n/** Error state matcher that matches when a control is invalid and dirty or form is submitted. */\n@Injectable()\nexport class ShowOnControlDirtyErrorStateMatcher implements ErrorStateMatcher {\n isErrorState(control: AbstractControl | null, form: FormGroupDirective | NgForm | null): boolean {\n return !!(control?.invalid && (control.dirty || form?.submitted));\n }\n}\n\n/**\n * Provider that defines how form controls behave with regards to displaying error messages.\n * Error state matcher that matches when a control is invalid and touched or form is submitted.\n */\n@Injectable({ providedIn: 'root' })\nexport class ErrorStateMatcher {\n isErrorState(control: AbstractControl | null, form: FormGroupDirective | NgForm | null): boolean {\n return !!(control?.invalid && (control.touched || form?.submitted));\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { inject, InjectionToken } from '@angular/core';\n\n/**\n * An abstraction over the global `window` object.\n */\nexport const KBQ_WINDOW = new InjectionToken<Window>('[KBQ_WINDOW]', {\n factory: (): Window => {\n const _window =\n inject(DOCUMENT).defaultView ||\n // Backward compatibility for older Angular versions\n // https://github.com/angular/universal/blob/main/docs/gotchas.md#strategy-3-shims\n // eslint-disable-next-line no-restricted-globals\n window;\n\n if (!_window) {\n throw new Error('[KBQ_WINDOW] window is not available.');\n }\n\n return _window;\n }\n});\n","/**\n * Properties that affect the rendered width of the text and have to be mirrored onto the ruler.\n *\n * `font-variant` is deliberately absent: the shorthand does not round-trip through the computed style\n * once a field sets more than one of its longhands, so the longhands are copied instead.\n */\nconst RULER_INHERITED_PROPERTIES = [\n 'font',\n 'fontFamily',\n 'fontFeatureSettings',\n 'fontKerning',\n 'fontOpticalSizing',\n 'fontSize',\n 'fontSizeAdjust',\n 'fontStretch',\n 'fontStyle',\n 'fontSynthesis',\n 'fontVariantCaps',\n 'fontVariantEastAsian',\n 'fontVariantLigatures',\n 'fontVariantNumeric',\n 'fontVariationSettings',\n 'fontWeight',\n 'letterSpacing',\n 'textIndent',\n 'textTransform'\n] as const satisfies Array<keyof CSSStyleDeclaration>;\n\nconst RULER_PROPERTIES = {\n all: 'initial',\n position: 'absolute',\n top: '0px',\n left: '0px',\n width: '0px',\n height: '0px',\n visibility: 'hidden',\n overflow: 'scroll',\n whiteSpace: 'pre',\n pointerEvents: 'none'\n} as const satisfies Partial<CSSStyleDeclaration>;\n\n/**\n * Builds a hidden element that renders text with the typography of the element `computedStyle` was taken\n * from. Append it to the document, measure through {@link kbqMeasureRulerText}, and remove it.\n *\n * @docs-private\n */\nexport const kbqCreateTextRuler = (document: Document, computedStyle: CSSStyleDeclaration): HTMLSpanElement => {\n const ruler: HTMLSpanElement = document.createElement('span');\n\n Object.assign(ruler.style, RULER_PROPERTIES);\n RULER_INHERITED_PROPERTIES.forEach((property) => {\n ruler.style[property] = computedStyle[property];\n });\n\n return ruler;\n};\n\n/**\n * Width of `text` in pixels, in the same coordinate space as `clientWidth` and `scrollLeft`.\n *\n * `scrollWidth`, not `getBoundingClientRect()`: the latter reports the transformed box, which disagrees\n * with the untransformed layout metrics it would be compared against under a scaled ancestor.\n *\n * @docs-private\n */\nexport const kbqMeasureRulerText = (ruler: HTMLSpanElement, text: string): number => {\n ruler.textContent = text;\n\n return ruler.scrollWidth;\n};\n","import { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { DOCUMENT } from '@angular/common';\nimport { afterNextRender, DestroyRef, Directive, inject, Renderer2 } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { fromEvent, merge } from 'rxjs';\nimport { KBQ_WINDOW } from '../tokens';\nimport { kbqInjectNativeElement } from '../utils';\nimport { kbqCreateTextRuler, kbqMeasureRulerText } from './text-ruler';\n\n/**\n * Properties that should be added to the width when `box-sizing: border-box` is applied.\n */\nconst BOX_SIZING_BORDER_BOX_WIDTH_PROPERTIES = [\n 'paddingLeft',\n 'paddingRight',\n 'borderLeftWidth',\n 'borderRightWidth'\n] as const satisfies Array<keyof CSSStyleDeclaration>;\n\nconst FIELD_RESIZE_EVENTS = ['input', 'change', 'focus', 'blur'] as const;\n\n/**\n * Emulates [`field-sizing: content`](https://developer.mozilla.org/en-US/docs/Web/CSS/field-sizing) CSS property for\n * browsers that do not support it natively.\n *\n * @docs-private\n */\n@Directive({\n selector: '[kbqFieldSizingContent]',\n host: {\n class: 'kbq-field-sizing-content'\n },\n exportAs: 'kbqFieldSizingContent'\n})\nexport class KbqFieldSizingContent {\n private readonly element = kbqInjectNativeElement<HTMLInputElement>();\n private readonly renderer = inject(Renderer2);\n private readonly window = inject(KBQ_WINDOW);\n private readonly document = inject(DOCUMENT);\n private readonly destroyRef = inject(DestroyRef);\n\n constructor() {\n afterNextRender(() => this.emulate());\n }\n\n private emulate(): void {\n if (CSS.supports('field-sizing', 'content')) {\n this.renderer.setStyle(this.element, 'fieldSizing', 'content');\n\n return;\n }\n\n merge(...FIELD_RESIZE_EVENTS.map((event) => fromEvent(this.element, event)))\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.setupWidth());\n\n this.setupWidth();\n }\n\n private setupWidth(): void {\n const computedStyle = this.window.getComputedStyle(this.element);\n const ruler = kbqCreateTextRuler(this.document, computedStyle);\n const text = this.element.value || this.element.placeholder || '';\n\n this.renderer.appendChild(this.document.body, ruler);\n\n // We should add space to prevent text truncation in Safari/Firefox\n const width = this.calculateWidth(kbqMeasureRulerText(ruler, text && `${text} `), computedStyle);\n\n this.renderer.setStyle(this.element, 'width', coerceCssPixelValue(width));\n this.renderer.removeChild(this.document.body, ruler);\n }\n\n private calculateWidth(textWidth: number, computedStyle: CSSStyleDeclaration): number {\n if (computedStyle.boxSizing === 'border-box') {\n return BOX_SIZING_BORDER_BOX_WIDTH_PROPERTIES.reduce(\n (width, property) => width + (parseFloat(computedStyle[property]) || 0),\n textWidth\n );\n }\n\n return textWidth;\n }\n}\n","import { ElementRef, InjectionToken, ModelSignal } from '@angular/core';\n\n/**\n * Internal contract for `KbqFormField` used by code that cannot import the form-field\n * class directly because of a circular dependency (e.g. `core/select/common.ts`).\n *\n * @deprecated Use KbqFormField from `@koobiq/components/form-field`.\n *\n * @docs-private\n */\nexport interface KbqFormFieldRef {\n /** @see KbqFormField.control */\n control: any;\n canCleanerClearByEsc: boolean;\n /** Use when KbqFormField is in an overlay container. */\n inOverlay: ModelSignal<boolean>;\n focus(): void;\n}\n\n/**\n * Injection token that can be used to inject an instances of `KbqFormField`. It serves\n * as alternative token to the actual `KbqFormField` class which would cause unnecessary\n * retention of the `KbqFormField` class and its component metadata.\n *\n * @deprecated Use `KBQ_FORM_FIELD` from `@koobiq/components/form-field`.\n *\n * @docs-private\n */\nexport const KBQ_FORM_FIELD_REF = new InjectionToken<KbqFormFieldRef>('KbqFormFieldRef');\n\n/**\n * Contract for an ancestor that wants to override where overlays opened by a nested\n * `KbqFormField`'s control (e.g. a select's dropdown, a datepicker's calendar) are\n * anchored, instead of the form-field's own container.\n */\nexport interface KbqConnectedOverlayOriginProvider {\n /**\n * Element the overlay should be positioned and sized against, or `undefined` to fall\n * back to the form-field's own container.\n */\n getConnectedOverlayOrigin(): ElementRef | undefined;\n}\n\n/**\n * Injection token for `KbqConnectedOverlayOriginProvider`. Provide it on an ancestor\n * component to redirect where a nested `KbqFormField`'s control positions its overlay.\n */\nexport const KBQ_CONNECTED_OVERLAY_ORIGIN = new InjectionToken<KbqConnectedOverlayOriginProvider>(\n 'KbqConnectedOverlayOrigin'\n);\n","import { kbqCreateTextRuler, kbqMeasureRulerText } from './text-ruler';\n\n/**\n * Scrolls a text field horizontally so that its current selection is visible.\n *\n * Browsers scroll a field to the caret only for edits the user makes: a selection set from script leaves\n * the field at whatever offset the last keystroke produced. A masked field re-renders its value and moves\n * the caret between value parts on every keystroke, so without this the field keeps the offset of the part\n * that was edited before and clips the one being edited now.\n *\n * Leaves the field alone when it is not focused, when it renders something other than its value, and in\n * right-to-left text, where the browser's own caret following is already correct.\n */\nexport const kbqRevealSelection = (element: HTMLInputElement): void => {\n const document = element.ownerDocument;\n const window = document.defaultView;\n\n // A field the user has left is the browser's to scroll: it resets the offset on blur, and a write\n // landing after that would park the field mid-value until it is focused again.\n if (!window || document.activeElement !== element) {\n return;\n }\n\n // A password field renders bullets, which are not the widths of the characters behind them.\n if (element.type === 'password') {\n return;\n }\n\n const maxScrollLeft = element.scrollWidth - element.clientWidth;\n\n // The value fits, so any offset the field is left at is an artifact of an earlier, longer value.\n if (maxScrollLeft <= 0) {\n element.scrollLeft = 0;\n\n return;\n }\n\n const computedStyle = window.getComputedStyle(element);\n\n // Every offset below is measured from the left edge, while an RTL field scrolls into negative\n // `scrollLeft`. Mirroring that needs the visual order of a bidi line rather than a prefix of the\n // value, so the browser's own caret following is left in place instead of being overwritten.\n if (computedStyle.direction === 'rtl') {\n return;\n }\n\n const { value, selectionStart, selectionEnd, clientWidth } = element;\n const paddingLeft = parseFloat(computedStyle.paddingLeft) || 0;\n const paddingRight = parseFloat(computedStyle.paddingRight) || 0;\n const ruler = kbqCreateTextRuler(document, computedStyle);\n\n document.body.appendChild(ruler);\n\n // `scrollLeft` is measured from the start of the padding box, the text starts one `padding-left` in.\n const start = paddingLeft + kbqMeasureRulerText(ruler, value.slice(0, selectionStart ?? 0));\n // A caret is the common case on the typing path, and measuring it twice costs a second layout.\n const end =\n selectionEnd === selectionStart\n ? start\n : paddingLeft + kbqMeasureRulerText(ruler, value.slice(0, selectionEnd ?? 0));\n\n ruler.remove();\n\n // The smallest offset that still shows the selection, so that as much as possible of what precedes it\n // stays on screen. Deriving the offset from the selection alone, instead of nudging the current one,\n // keeps the result independent of where the last keystroke happened to leave the field.\n const minimumRevealingEnd = Math.max(end + paddingRight - clientWidth, 0);\n // A selection wider than the field cannot be shown whole; its start is the half worth keeping.\n const maximumKeepingStart = Math.max(start - paddingLeft, 0);\n\n element.scrollLeft = Math.min(minimumRevealingEnd, maximumKeepingStart, maxScrollLeft);\n};\n\n/**\n * Selects the `[start, end]` range of a text field and keeps it visible.\n *\n * @see {@link kbqRevealSelection}\n */\nexport const kbqSetSelectionRange = (element: HTMLInputElement, start: number, end: number): void => {\n element.setSelectionRange(start, end);\n\n kbqRevealSelection(element);\n};\n","import {\n KbqA11yLocaleConfiguration,\n KbqActionsPanelLocaleConfiguration,\n KbqClampedTextLocaleConfig,\n KbqCodeBlockLocaleConfiguration,\n KbqFileUploadLocaleConfig,\n KbqSelectLocaleConfiguration,\n KbqTimeRangeLocaleConfig\n} from './types';\n\nexport const enUSLocaleData = {\n a11y: {\n close: 'Close',\n save: 'Save',\n cancel: 'Cancel',\n removeAll: 'Remove all',\n expandBreadcrumbs: 'Show hidden breadcrumbs',\n previousMonth: 'Previous month',\n currentDate: 'Current date',\n nextMonth: 'Next month',\n clear: 'Clear',\n showPassword: 'Show password',\n hidePassword: 'Hide password',\n resizeColumns: 'Resize columns'\n } satisfies KbqA11yLocaleConfiguration,\n select: { hiddenItemsText: '+{{ number }}', selectAll: 'Select all' } satisfies KbqSelectLocaleConfiguration,\n datepicker: {\n placeholder: 'yyyy-mm-dd',\n dateInput: 'yyyy-MM-dd'\n },\n timepicker: {\n placeholder: {\n full: 'hh:mm:ss',\n short: 'hh:mm'\n }\n },\n fileUpload: {\n single: {\n captionText: 'Drag file here or {{ browseLink }}',\n captionTextOnlyFolder: 'Drag here or {{ browseLinkFolder }}',\n captionTextWithFolder: 'Drag here or {{ browseLink }} or {{ browseLinkFolderMixed }}',\n browseLink: 'choose',\n browseLinkFolder: 'choose folder',\n browseLinkFolderMixed: 'folder'\n },\n multiple: {\n captionText: 'or {{ browseLink }}',\n captionTextOnlyFolder: 'or {{ browseLinkFolder }}',\n captionTextWithFolder: 'or {{ browseLink }} or {{ browseLinkFolderMixed }}',\n captionTextWhenSelected: 'Drag more or {{ browseLink }}',\n captionTextForCompactSize: 'Drag files or {{ browseLink }}',\n browseLink: 'choose files',\n browseLinkFolder: 'choose folder',\n browseLinkFolderMixed: 'folder',\n title: 'Drag here'\n }\n } satisfies KbqFileUploadLocaleConfig,\n codeBlock: {\n softWrapOnTooltip: 'Enable word wrap',\n softWrapOffTooltip: 'Disable word wrap',\n downloadTooltip: 'Download',\n copiedTooltip: '✓ Copied',\n copyTooltip: 'Copy',\n viewAllText: 'Show all',\n viewLessText: 'Show less',\n openExternalSystemTooltip: 'Open in the external system'\n } satisfies KbqCodeBlockLocaleConfiguration,\n timezone: {\n searchPlaceholder: 'City or time zone'\n },\n actionsPanel: {\n closeTooltip: 'Deselect'\n } satisfies KbqActionsPanelLocaleConfiguration,\n filterBar: {\n reset: {\n buttonName: 'Reset'\n },\n search: {\n tooltip: 'Search',\n placeholder: 'Search'\n },\n filters: {\n defaultName: 'Filters',\n saveNewFilterTooltip: 'Save the new filter',\n searchPlaceholder: 'Search',\n searchEmptyResult: 'Nothing found',\n saveAsNewFilter: 'Save as new filter',\n saveChanges: 'Save changes',\n saveAsNew: 'Save as new',\n change: 'Edit',\n resetChanges: 'Reset',\n remove: 'Delete',\n name: 'Name',\n error: 'The search with such name already exists',\n errorHint: 'Could not save the filter. Try again or contact the administrator.',\n saveButton: 'Save',\n cancelButton: 'Cancel',\n actionsTooltip: 'Filter actions'\n },\n add: {\n tooltip: 'Add filter',\n addedAnnouncement: '{{ name }} filter added'\n },\n refresher: {\n refresh: 'Refresh',\n settings: 'Refresh settings'\n },\n pipe: {\n clearButtonTooltip: 'Clear',\n removeButtonTooltip: 'Delete',\n applyButton: 'Apply',\n emptySearchResult: 'Nothing found',\n selectAll: 'Select all'\n },\n datePipe: {\n customPeriod: 'Custom period',\n customPeriodFrom: 'from',\n customPeriodTo: 'to',\n customPeriodErrorHint: 'The period cannot start later than it ends',\n customPeriodMinIntervalErrorHint: 'The period cannot be shorter than {{ value }}',\n customPeriodMaxIntervalErrorHint: 'The period cannot be longer than {{ value }}',\n backToPeriodSelection: 'Back'\n }\n },\n clampedText: {\n openText: 'Expand',\n closeText: 'Collapse',\n showMoreText: 'Show {exceededItemCount} more',\n moreText: 'more'\n } satisfies KbqClampedTextLocaleConfig,\n navbarIc: {\n toggle: {\n pinButton: 'Leave expanded',\n collapseButton: 'Collapse'\n }\n },\n navbar: {\n toggle: {\n expand: 'Expand',\n collapse: 'Collapse'\n }\n },\n searchExpandable: {\n tooltip: 'Search',\n placeholder: 'Search'\n },\n appSwitcher: {\n searchPlaceholder: 'Search',\n searchEmptyResult: 'Nothing found',\n sitesHeader: 'Other sites'\n },\n timeRange: {\n title: {\n for: 'for',\n placeholder: 'Select period'\n },\n editor: {\n from: 'from',\n to: 'to',\n apply: 'Apply',\n cancel: 'Cancel',\n rangeLabel: 'Period',\n allTime: 'for all time',\n currentQuarter: 'for the current quarter',\n currentYear: 'for the current year',\n allTimeOption: 'All time',\n currentQuarterOption: 'Current quarter',\n currentYearOption: 'Current year'\n },\n durationTemplate: {\n title: {\n SEPARATOR: ' ',\n LAST_PART_SEPARATOR: '',\n YEARS: `{years, plural,\n one {# year}\n other {last # years}\n }`,\n MONTHS: `{months, plural,\n one {last month}\n other {last # months}\n }`,\n WEEKS: `{weeks, plural,\n one {last week}\n other {last # weeks}\n }`,\n DAYS: `{days, plural,\n one {last day}\n other {last # days}\n }`,\n HOURS: `{hours, plural,\n one {last hour}\n other {last # hours}\n }`,\n MINUTES: `{minutes, plural,\n one {last minute}\n other {last # minutes}\n }`,\n SECONDS: `{seconds, plural,\n one {last second}\n other {last # seconds}\n }`,\n YEARS_FRACTION: `{years} years`,\n MONTHS_FRACTION: `{months} months`\n },\n option: {\n SEPARATOR: ' ',\n LAST_PART_SEPARATOR: '',\n YEARS: `{years, plural,\n one {# year}\n other {Last # years}\n }`,\n MONTHS: `{months, plural,\n one {Last month}\n other {Last # months}\n }`,\n WEEKS: `{weeks, plural,\n one {Last week}\n other {Last # weeks}\n }`,\n DAYS: `{days, plural,\n one {Last day}\n other {Last # days}\n }`,\n HOURS: `{hours, plural,\n one {Last hour}\n other {Last # hours}\n }`,\n MINUTES: `{minutes, plural,\n one {Last minute}\n other {Last # minutes}\n }`,\n SECONDS: `{seconds, plural,\n one {Last second}\n other {Last # seconds}\n }`,\n YEARS_FRACTION: `{years} years`,\n MONTHS_FRACTION: `{months} months`\n }\n }\n } satisfies KbqTimeRangeLocaleConfig,\n notificationCenter: {\n notifications: 'Notifications',\n remove: 'Remove',\n doNotDisturb: 'Do not disturb',\n showPopUpNotifications: 'Show pop-up notifications',\n noNotifications: 'No notifications',\n failedToLoadNotifications: 'Failed to load notifications',\n repeat: 'Repeat',\n loadingMore: 'Loading more notifications'\n }\n};\n","import {\n KbqA11yLocaleConfiguration,\n KbqActionsPanelLocaleConfiguration,\n KbqClampedTextLocaleConfig,\n KbqCodeBlockLocaleConfiguration,\n KbqFileUploadLocaleConfig,\n KbqSelectLocaleConfiguration,\n KbqTimeRangeLocaleConfig\n} from './types';\n\nexport const esLALocaleData = {\n a11y: {\n close: 'Cerrar',\n save: 'Guardar',\n cancel: 'Cancelar',\n removeAll: 'Eliminar todo',\n expandBreadcrumbs: 'Mostrar elementos ocultos',\n previousMonth: 'Mes anterior',\n currentDate: 'Fecha actual',\n nextMonth: 'Mes siguiente',\n clear: 'Borrar',\n showPassword: 'Mostrar la contraseña',\n hidePassword: 'Ocultar la contraseña',\n resizeColumns: 'Redimensionar columnas'\n } satisfies KbqA11yLocaleConfiguration,\n select: {\n hiddenItemsText: '+{{ number }}',\n selectAll: 'Seleccionar todo'\n } satisfies KbqSelectLocaleConfiguration,\n datepicker: {\n placeholder: 'dd/mm/aaaa'\n },\n timepicker: {\n placeholder: {\n full: 'hh:mm:ss',\n short: 'hh:mm'\n }\n },\n fileUpload: {\n single: {\n captionText: 'Arrastre el archivo aquí o {{ browseLink }}',\n captionTextOnlyFolder: 'Arrastre el archivo aquí o {{ browseLinkFolder }}',\n captionTextWithFolder: 'Arrastre el archivo aquí o {{ browseLink }} o {{ browseLinkFolderMixed }}',\n browseLink: 'elija',\n browseLinkFolder: 'carpeta',\n browseLinkFolderMixed: 'carpeta'\n },\n multiple: {\n captionText: 'Arrastre aquí o {{ browseLink }}',\n captionTextOnlyFolder: 'Arrastre aquí o {{ browseLinkFolder }}',\n captionTextWithFolder: 'Arrastre aquí o {{ browseLink }} o {{ browseLinkFolderMixed }}',\n captionTextWhenSelected: 'Arrastre más archivos aquí o {{ browseLink }}',\n captionTextForCompactSize: 'Arrastre archivos o {{ browseLink }}',\n browseLink: 'elija',\n browseLinkFolder: 'carpeta',\n browseLinkFolderMixed: 'carpeta',\n title: 'Cargue los archivos'\n }\n } satisfies KbqFileUploadLocaleConfig,\n codeBlock: {\n softWrapOnTooltip: 'Activar el ajuste de texto',\n softWrapOffTooltip: 'Desactivar el ajuste de texto',\n downloadTooltip: 'Descargar',\n copiedTooltip: '✓ Copiado',\n copyTooltip: 'Copiar',\n viewAllText: 'Mostrar todo',\n viewLessText: 'Mostrar menos',\n openExternalSystemTooltip: 'Abrir en el sistema externo'\n } satisfies KbqCodeBlockLocaleConfiguration,\n timezone: {\n searchPlaceholder: 'Ciudad o zona horaria'\n },\n actionsPanel: {\n closeTooltip: 'Desmarque'\n } satisfies KbqActionsPanelLocaleConfiguration,\n filterBar: {\n reset: {\n buttonName: 'Restablecer'\n },\n search: {\n tooltip: 'Búsqueda',\n placeholder: 'Búsqueda'\n },\n filters: {\n defaultName: 'Filtros',\n saveNewFilterTooltip: 'Guardar el filtro nuevo',\n searchPlaceholder: 'Búsqueda',\n searchEmptyResult: 'No se encontró nada',\n saveAsNewFilter: 'Guardar como filtro nuevo',\n saveChanges: 'Guardar cambios',\n saveAsNew: 'Guardar como nuevo',\n change: 'Editar',\n resetChanges: 'Restablecer',\n remove: 'Eliminar',\n name: 'Nombre',\n error: 'Ya existe una búsqueda con ese nombre',\n errorHint: 'No se pudo guardar el filtro. Intente de nuevo o comuníquese con el administrador.',\n saveButton: 'Guardar',\n cancelButton: 'Cancelar',\n actionsTooltip: 'Acciones de filtro'\n },\n add: {\n tooltip: 'Agregar filtro',\n addedAnnouncement: 'Filtro {{ name }} agregado'\n },\n refresher: {\n refresh: 'Actualizar',\n settings: 'Configuración de actualización'\n },\n pipe: {\n clearButtonTooltip: 'Borrar',\n removeButtonTooltip: 'Eliminar',\n applyButton: 'Aplicar',\n emptySearchResult: 'No se encontró nada',\n selectAll: 'Seleccionar todo'\n },\n datePipe: {\n customPeriod: 'Personalizar período',\n customPeriodFrom: 'desde',\n customPeriodTo: 'hasta',\n customPeriodErrorHint: 'El inicio del período no puede estar después del fin',\n customPeriodMinIntervalErrorHint: 'El período no puede ser más corto que {{ value }}',\n customPeriodMaxIntervalErrorHint: 'El período no puede ser más largo que {{ value }}',\n backToPeriodSelection: 'Atrás'\n }\n },\n clampedText: {\n openText: 'Expandir',\n closeText: 'Contraer',\n showMoreText: 'Mostrar {exceededItemCount} más',\n moreText: 'más'\n } satisfies KbqClampedTextLocaleConfig,\n navbarIc: {\n toggle: {\n pinButton: 'Expandir el menú',\n collapseButton: 'Colapsar'\n }\n },\n navbar: {\n toggle: {\n expand: 'Expandir',\n collapse: 'Colapsar'\n }\n },\n searchExpandable: {\n tooltip: 'Búsqueda',\n placeholder: 'Búsqueda'\n },\n appSwitcher: {\n searchPlaceholder: 'Búsqueda',\n searchEmptyResult: 'No se encontró nada',\n sitesHeader: 'Otros sitios'\n },\n timeRange: {\n title: {\n for: 'para',\n placeholder: 'Seleccione el período'\n },\n editor: {\n from: 'de',\n to: 'a',\n apply: 'Aplicar',\n cancel: 'Cancelar',\n rangeLabel: 'Período',\n allTime: 'por todo el tiempo',\n currentQuarter: 'por el trimestre actual',\n currentYear: 'por el año actual',\n allTimeOption: 'Todo el tiempo',\n currentQuarterOption: 'Trimestre actual',\n currentYearOption: 'Año actual'\n },\n durationTemplate: {\n title: {\n SEPARATOR: ', ',\n LAST_PART_SEPARATOR: '',\n YEARS: `{years, plural,\n one {# año}\n other {últimos # años}\n }`,\n MONTHS: `{months, plural,\n one {último mes}\n other {últimos # meses}\n }`,\n WEEKS: `{weeks, plural,\n one {última semana}\n other {últimas # semanas}\n }`,\n DAYS: `{days, plural,\n one {último día}\n other {últimos # días}\n }`,\n HOURS: `{hours, plural,\n one {última hora}\n other {últimas # horas}\n }`,\n MINUTES: `{minutes, plural,\n one {último minuto}\n other {últimos # minutos}\n }`,\n SECONDS: `{seconds, plural,\n one {último segundo}\n other {últimos # segundos}\n }`,\n YEARS_FRACTION: `{years} años`,\n MONTHS_FRACTION: `{months} meses`\n },\n option: {\n SEPARATOR: ', ',\n LAST_PART_SEPARATOR: '',\n YEARS: `{years, plural,\n one {# año}\n other {Últimos # años}\n }`,\n MONTHS: `{months, plural,\n one {Último mes}\n other {Últimos # meses}\n }`,\n WEEKS: `{weeks, plural,\n one {Última semana}\n other {Últimas # semanas}\n }`,\n DAYS: `{days, plural,\n one {Último día}\n other {Últimos # días}\n }`,\n HOURS: `{hours, plural,\n one {Última hora}\n other {Últimas # horas}\n }`,\n MINUTES: `{minutes, plural,\n one {Último minuto}\n other {Últimos # minutos}\n }`,\n SECONDS: `{seconds, plural,\n one {Último segundo}\n other {Últimos # segundos}\n }`,\n YEARS_FRACTION: `{years} años`,\n MONTHS_FRACTION: `{months} meses`\n }\n }\n } satisfies KbqTimeRangeLocaleConfig,\n notificationCenter: {\n notifications: 'Notificaciones',\n remove: 'Eliminar',\n doNotDisturb: 'No molestar',\n showPopUpNotifications: 'Mostrar notificaciones emergentes',\n noNotifications: 'Sin notificaciones',\n failedToLoadNotifications: 'Error al cargar las notificaciones',\n repeat: 'Repetir',\n loadingMore: 'Cargando más notificaciones'\n }\n};\n","import { KbqSizeUnitsConfig } from '../formatters';\nimport { KbqNumberFormatOptions, KbqNumberInputLocaleConfig, KbqNumberRoundingLocaleConfig } from './types';\n\nexport const enUSFormattersData = {\n formatters: {\n number: {\n rounding: {\n separator: '',\n groupSeparator: '.',\n thousand: 'K',\n million: 'M',\n billion: 'B',\n trillion: 'T'\n } satisfies KbqNumberRoundingLocaleConfig\n }\n },\n input: {\n number: {\n groupSeparator: [','],\n fractionSeparator: '.'\n } satisfies KbqNumberInputLocaleConfig\n },\n sizeUnits: {\n defaultUnitSystem: 'SI',\n defaultPrecision: 2,\n unitSystems: {\n SI: {\n abbreviations: ['B', 'KB', 'MB', 'GB', 'TB'],\n base: 10,\n power: 3\n },\n IEC: {\n abbreviations: ['B', 'KiB', 'MiB', 'GiB', 'TiB'],\n base: 2,\n power: 10\n }\n }\n } satisfies KbqSizeUnitsConfig\n};\n\nexport const esLAFormattersData = {\n formatters: {\n number: {\n rounding: {\n separator: '',\n groupSeparator: ',',\n thousand: 'K',\n million: 'M',\n billion: 'MRD',\n trillion: 'B'\n } satisfies KbqNumberRoundingLocaleConfig,\n decimal: {\n viewGroupSeparator: '\\u2009'\n } satisfies KbqNumberFormatOptions\n }\n },\n input: {\n number: {\n // nbsp is generated automatically and used by default in spec\n groupSeparator: [' ', ' ', '\\u2009'],\n fractionSeparator: ',',\n viewGroupSeparator: '\\u2009'\n } satisfies KbqNumberInputLocaleConfig\n },\n sizeUnits: {\n defaultUnitSystem: 'SI',\n defaultPrecision: 2,\n unitSystems: {\n SI: {\n abbreviations: ['B', 'KB', 'MB', 'GB', 'TB'],\n base: 10,\n power: 3\n },\n IEC: {\n abbreviations: ['B', 'KiB', 'MiB', 'GiB', 'TiB'],\n base: 2,\n power: 10\n }\n }\n }\n};\n\nexport const ptBRFormattersData = {\n formatters: {\n number: {\n rounding: {\n separator: ' ',\n groupSeparator: ',',\n thousand: 'mil',\n million: 'mi',\n billion: 'bi',\n trillion: 'tri'\n } satisfies KbqNumberRoundingLocaleConfig\n }\n },\n input: {\n number: {\n groupSeparator: ['.'],\n fractionSeparator: ','\n } satisfies KbqNumberInputLocaleConfig\n },\n sizeUnits: {\n defaultUnitSystem: 'SI',\n defaultPrecision: 2,\n unitSystems: {\n SI: {\n abbreviations: ['B', 'KB', 'MB', 'GB', 'TB'],\n base: 10,\n power: 3\n },\n IEC: {\n abbreviations: ['B', 'KiB', 'MiB', 'GiB', 'TiB'],\n base: 2,\n power: 10\n }\n }\n }\n};\n\nexport const ruRUFormattersData = {\n formatters: {\n number: {\n rounding: {\n separator: ' ',\n groupSeparator: ',',\n thousand: 'К',\n million: 'М',\n // Latin `B` (U+0042) according to UX Guidelines.\n billion: 'B',\n trillion: 'Т'\n } satisfies KbqNumberRoundingLocaleConfig,\n decimal: {\n viewGroupSeparator: '\\u2009'\n } satisfies KbqNumberFormatOptions\n }\n },\n input: {\n number: {\n // nbsp is generated automatically and used by default in spec\n groupSeparator: [' ', ' ', '\\u2009'],\n fractionSeparator: ',',\n startFormattingFrom: 4,\n viewGroupSeparator: '\\u2009'\n } satisfies KbqNumberInputLocaleConfig\n },\n sizeUnits: {\n defaultUnitSystem: 'SI',\n defaultPrecision: 2,\n unitSystems: {\n SI: {\n abbreviations: ['Б', 'КБ', 'МБ', 'ГБ', 'ТБ'],\n base: 10,\n power: 3\n },\n IEC: {\n abbreviations: ['Б', 'КиБ', 'МиБ', 'ГиБ', 'ТиБ'],\n base: 2,\n power: 10\n }\n }\n }\n};\n\nexport const tkTMFormattersData = {\n formatters: {\n number: {\n rounding: {\n separator: ' ',\n groupSeparator: '',\n thousand: 'M',\n million: 'Mn',\n billion: 'Mr',\n trillion: 'Tn'\n } satisfies KbqNumberRoundingLocaleConfig\n }\n },\n input: {\n number: {\n groupSeparator: [' ', ' ', '\\u2009'],\n fractionSeparator: ',',\n viewGroupSeparator: '\\u2009'\n } satisfies KbqNumberInputLocaleConfig\n },\n sizeUnits: {\n defaultUnitSystem: 'SI',\n defaultPrecision: 2,\n unitSystems: {\n SI: {\n abbreviations: ['B', 'KB', 'MB', 'GB', 'TB'],\n base: 10,\n power: 3\n },\n IEC: {\n abbreviations: ['B', 'KiB', 'MiB', 'GiB', 'TiB'],\n base: 2,\n power: 10\n }\n }\n }\n};\n","import {\n KbqA11yLocaleConfiguration,\n KbqActionsPanelLocaleConfiguration,\n KbqClampedTextLocaleConfig,\n KbqCodeBlockLocaleConfiguration,\n KbqFileUploadLocaleConfig,\n KbqSelectLocaleConfiguration,\n KbqTimeRangeLocaleConfig\n} from './types';\n\nexport const ptBRLocaleData = {\n a11y: {\n close: 'Fechar',\n save: 'Salvar',\n cancel: 'Cancelar',\n removeAll: 'Remover tudo',\n expandBreadcrumbs: 'Mostrar itens ocultos',\n previousMonth: 'Mês anterior',\n currentDate: 'Data atual',\n nextMonth: 'Próximo mês',\n clear: 'Apagar',\n showPassword: 'Mostrar a senha',\n hidePassword: 'Ocultar a senha',\n resizeColumns: 'Redimensionar colunas'\n } satisfies KbqA11yLocaleConfiguration,\n select: {\n hiddenItemsText: '+{{ number }}',\n selectAll: 'Selecionar tudo'\n } satisfies KbqSelectLocaleConfiguration,\n datepicker: {\n placeholder: 'dd/mm/yyyy'\n },\n timepicker: {\n placeholder: {\n full: 'hh:mm:ss',\n short: 'hh:mm'\n }\n },\n fileUpload: {\n single: {\n captionText: 'Arrastar o arquivo aqui ou {{ browseLink }}',\n captionTextOnlyFolder: 'Arrastar o arquivo aqui ou {{ browseLinkFolder }}',\n captionTextWithFolder: 'Arrastar o arquivo aqui ou {{ browseLink }} ou {{ browseLinkFolderMixed }}',\n browseLink: 'escolher',\n browseLinkFolder: 'pasta',\n browseLinkFolderMixed: 'pasta'\n },\n multiple: {\n captionText: 'Arrastar aqui ou {{ browseLink }}',\n captionTextOnlyFolder: 'Arrastar aqui ou {{ browseLinkFolder }}',\n captionTextWithFolder: 'Arrastar aqui ou {{ browseLink }} ou {{ browseLinkFolderMixed }}',\n captionTextWhenSelected: 'Arrastar mais arquivos aqui ou {{ browseLink }}',\n captionTextForCompactSize: 'Arrastar arquivos ou {{ browseLink }}',\n browseLink: 'escolher',\n browseLinkFolder: 'pasta',\n browseLinkFolderMixed: 'pasta',\n title: 'Carregar arquivos'\n }\n } satisfies KbqFileUploadLocaleConfig,\n codeBlock: {\n softWrapOnTooltip: 'Ativar quebra de linha',\n softWrapOffTooltip: 'Desativar quebra de linha',\n downloadTooltip: 'Baixar',\n copiedTooltip: '✓ Copiado',\n copyTooltip: 'Copiar',\n viewAllText: 'Mostrar todos',\n viewLessText: 'Mostrar menos',\n openExternalSystemTooltip: 'Abrir em sistema externo'\n } satisfies KbqCodeBlockLocaleConfiguration,\n timezone: {\n searchPlaceholder: 'Cidade ou fuso horário'\n },\n actionsPanel: {\n closeTooltip: 'Desmarcar'\n } satisfies KbqActionsPanelLocaleConfiguration,\n filterBar: {\n reset: {\n buttonName: 'Reconfigurar'\n },\n search: {\n tooltip: 'Buscar',\n placeholder: 'Buscar'\n },\n filters: {\n defaultName: 'Filtros',\n saveNewFilterTooltip: 'Salve o filtro novo',\n searchPlaceholder: 'Buscar',\n searchEmptyResult: 'Nada encontrado',\n saveAsNewFilter: 'Salve o filtro novo',\n saveChanges: 'Salve as mudanças',\n saveAsNew: 'Salve como novo',\n change: 'Editar',\n resetChanges: 'Reconfigurar',\n remove: 'Deletar',\n name: 'Nome',\n error: 'A busca com esse nome já existe',\n errorHint: 'O filtro não pôde ser salvo. Tente de novo ou entre em contato com o administrador.',\n saveButton: 'Salvar',\n cancelButton: 'Cancelar',\n actionsTooltip: 'Ações do filtro'\n },\n add: {\n tooltip: 'Adicionar filtros',\n addedAnnouncement: 'Filtro {{ name }} adicionado'\n },\n refresher: {\n refresh: 'Atualizar',\n settings: 'Configurações de atualização'\n },\n pipe: {\n clearButtonTooltip: 'Apagar',\n removeButtonTooltip: 'Deletar',\n applyButton: 'Aplicar',\n emptySearchResult: 'Nada encontrado',\n selectAll: 'Selecionar todos'\n },\n datePipe: {\n customPeriod: 'Selecionar período',\n customPeriodFrom: 'de',\n customPeriodTo: 'até',\n customPeriodErrorHint: 'O período não pode começar depois de quando acaba',\n customPeriodMinIntervalErrorHint: 'O período não pode ser menor que {{ value }}',\n customPeriodMaxIntervalErrorHint: 'O período não pode ser maior que {{ value }}',\n backToPeriodSelection: 'Voltar'\n }\n },\n clampedText: {\n openText: 'Expandir',\n closeText: 'Recolher',\n showMoreText: 'Mostrar mais {exceededItemCount}',\n moreText: 'mais'\n } satisfies KbqClampedTextLocaleConfig,\n navbarIc: {\n toggle: {\n pinButton: 'Deixar expandido',\n collapseButton: 'Recolher'\n }\n },\n navbar: {\n toggle: {\n expand: 'Expandir',\n collapse: 'Colapso'\n }\n },\n searchExpandable: {\n tooltip: 'Pesquisar',\n placeholder: 'Pesquisar'\n },\n appSwitcher: {\n searchPlaceholder: 'Pesquisar',\n searchEmptyResult: 'Nada encontrado',\n sitesHeader: 'Outros sites'\n },\n timeRange: {\n title: {\n for: 'para',\n placeholder: 'Selecione o período'\n },\n editor: {\n from: 'de',\n to: 'até',\n apply: 'Aplicar',\n cancel: 'Cancelar',\n rangeLabel: 'Período',\n allTime: 'por todo o tempo',\n currentQuarter: 'pelo trimestre atual',\n currentYear: 'pelo ano atual',\n allTimeOption: 'Todo o tempo',\n currentQuarterOption: 'Trimestre atual',\n currentYearOption: 'Ano atual'\n },\n durationTemplate: {\n title: {\n SEPARATOR: ' e ',\n LAST_PART_SEPARATOR: '',\n YEARS: `{years, plural,\n one {# ano}\n other {últimos # anos}\n }`,\n MONTHS: `{months, plural,\n one {último mês}\n other {últimos # meses}\n }`,\n WEEKS: `{weeks, plural,\n one {última semana}\n other {últimas # semanas}\n }`,\n DAYS: `{days, plural,\n one {último dia}\n other {últimos # dias}\n }`,\n HOURS: `{hours, plural,\n one {última hora}\n other {últimas # horas}\n }`,\n MINUTES: `{minutes, plural,\n one {último minuto}\n other {últimos # minutos}\n }`,\n SECONDS: `{seconds, plural,\n one {último segundo}\n other {últimos # segundos}\n }`,\n YEARS_FRACTION: `{years} anos`,\n MONTHS_FRACTION: `{months} meses`\n },\n option: {\n SEPARATOR: ' e ',\n LAST_PART_SEPARATOR: '',\n YEARS: `{years, plural,\n one {# ano}\n other {Últimos # anos}\n }`,\n MONTHS: `{months, plural,\n one {Último mês}\n other {Últimos # meses}\n }`,\n WEEKS: `{weeks, plural,\n one {Última semana}\n other {Últimas # semanas}\n }`,\n DAYS: `{days, plural,\n one {Último dia}\n other {Últimos # dias}\n }`,\n HOURS: `{hours, plural,\n one {Última hora}\n other {Últimas # horas}\n }`,\n MINUTES: `{minutes, plural,\n one {Último minuto}\n other {Últimos # minutos}\n }`,\n SECONDS: `{seconds, plural,\n one {Último segundo}\n other {Últimos # segundos}\n }`,\n YEARS_FRACTION: `{years} anos`,\n MONTHS_FRACTION: `{months} meses`\n }\n }\n } satisfies KbqTimeRangeLocaleConfig,\n notificationCenter: {\n notifications: 'Notificações',\n remove: 'Remover',\n doNotDisturb: 'Não perturbe',\n showPopUpNotifications: 'Mostrar notificações pop-up',\n noNotifications: 'Sem notificações',\n failedToLoadNotifications: 'Falha ao carregar notificações',\n repeat: 'Repetir',\n loadingMore: 'Carregando mais notificações'\n }\n};\n","import {\n KbqA11yLocaleConfiguration,\n KbqActionsPanelLocaleConfiguration,\n KbqClampedTextLocaleConfig,\n KbqCodeBlockLocaleConfiguration,\n KbqFileUploadLocaleConfig,\n KbqSelectLocaleConfiguration,\n KbqTimeRangeLocaleConfig\n} from './types';\n\nexport const ruRULocaleData = {\n a11y: {\n close: 'Закрыть',\n save: 'Сохранить',\n cancel: 'Отменить',\n removeAll: 'Удалить все',\n expandBreadcrumbs: 'Показать скрытые элементы',\n previousMonth: 'Предыдущий месяц',\n currentDate: 'Текущая дата',\n nextMonth: 'Следующий месяц',\n clear: 'Очистить',\n showPassword: 'Показать пароль',\n hidePassword: 'Скрыть пароль',\n resizeColumns: 'Изменить ширину колонок'\n } satisfies KbqA11yLocaleConfiguration,\n select: { hiddenItemsText: '+{{ number }}', selectAll: 'Выбрать все' } satisfies KbqSelectLocaleConfiguration,\n datepicker: {\n placeholder: 'дд.мм.гггг',\n dateInput: 'dd.MM.yyyy'\n },\n timepicker: {\n placeholder: {\n full: 'чч:мм:сс',\n short: 'чч:мм'\n }\n },\n fileUpload: {\n single: {\n captionText: 'Перетащите сюда или {{ browseLink }}',\n captionTextOnlyFolder: 'Перетащите сюда или {{ browseLinkFolder }}',\n captionTextWithFolder: 'Перетащите сюда или {{ browseLink }} или {{ browseLinkFolderMixed }}',\n browseLink: 'выберите файл',\n browseLinkFolder: 'выберите папку',\n browseLinkFolderMixed: 'папку'\n },\n multiple: {\n captionText: 'или {{ browseLink }}',\n captionTextOnlyFolder: 'или {{ browseLinkFolder }}',\n captionTextWithFolder: 'или {{ browseLink }} или {{ browseLinkFolderMixed }}',\n captionTextWhenSelected: 'Перетащите еще или {{ browseLink }}',\n captionTextForCompactSize: 'Перетащите сюда или {{ browseLink }}',\n browseLink: 'выберите файлы',\n browseLinkFolder: 'выберите папку',\n browseLinkFolderMixed: 'папку',\n title: 'Перетащите сюда'\n }\n } satisfies KbqFileUploadLocaleConfig,\n codeBlock: {\n softWrapOnTooltip: 'Включить перенос по словам',\n softWrapOffTooltip: 'Выключить перенос по словам',\n downloadTooltip: 'Скачать',\n copiedTooltip: '✓ Скопировано',\n copyTooltip: 'Скопировать',\n viewAllText: 'Показать все',\n viewLessText: 'Свернуть',\n openExternalSystemTooltip: 'Открыть во внешней системе'\n } satisfies KbqCodeBlockLocaleConfiguration,\n timezone: {\n searchPlaceholder: 'Город или часовой пояс'\n },\n actionsPanel: {\n closeTooltip: 'Отменить выбор'\n } satisfies KbqActionsPanelLocaleConfiguration,\n filterBar: {\n reset: {\n buttonName: 'Сбросить'\n },\n search: {\n tooltip: 'Поиск',\n placeholder: 'Поиск'\n },\n filters: {\n defaultName: 'Фильтры',\n saveNewFilterTooltip: 'Сохранить новый фильтр',\n searchPlaceholder: 'Поиск',\n searchEmptyResult: 'Ничего не найдено',\n saveAsNewFilter: 'Сохранить как новый фильтр',\n saveChanges: 'Сохранить изменения',\n saveAsNew: 'Сохранить как новый',\n change: 'Изменить',\n resetChanges: 'Сбросить изменения',\n remove: 'Удалить',\n name: 'Название',\n error: 'Поиск с таким названием уже существует',\n errorHint: 'Не удалось сохранить фильтр. Попробуйте снова или сообщите администратору.',\n saveButton: 'Сохранить',\n cancelButton: 'Отмена',\n actionsTooltip: 'Действия с фильтром'\n },\n add: {\n tooltip: 'Добавить фильтр',\n addedAnnouncement: 'Фильтр {{ name }} добавлен'\n },\n refresher: {\n refresh: 'Обновить',\n settings: 'Настройки обновления'\n },\n pipe: {\n clearButtonTooltip: 'Очистить',\n removeButtonTooltip: 'Удалить',\n applyButton: 'Применить',\n emptySearchResult: 'Ничего не найдено',\n selectAll: 'Выбрать все'\n },\n datePipe: {\n customPeriod: 'Произвольный период',\n customPeriodFrom: 'с',\n customPeriodTo: 'по',\n customPeriodErrorHint: 'Начало периода не может быть позже окончания',\n customPeriodMinIntervalErrorHint: 'Период не может быть короче {{ value }}',\n customPeriodMaxIntervalErrorHint: 'Период не может быть длиннее {{ value }}',\n backToPeriodSelection: 'Назад'\n }\n },\n clampedText: {\n openText: 'Развернуть',\n closeText: 'Свернуть',\n showMoreText: 'Показать еще {exceededItemCount}',\n moreText: 'еще'\n } satisfies KbqClampedTextLocaleConfig,\n navbarIc: {\n toggle: {\n pinButton: 'Оставить развернутым',\n collapseButton: 'Свернуть'\n }\n },\n navbar: {\n toggle: {\n expand: 'Развернуть',\n collapse: 'Свернуть'\n }\n },\n searchExpandable: {\n tooltip: 'Поиск',\n placeholder: 'Поиск'\n },\n appSwitcher: {\n searchPlaceholder: 'Поиск',\n searchEmptyResult: 'Ничего не найдено',\n sitesHeader: 'Другие площадки'\n },\n timeRange: {\n title: {\n for: 'за',\n placeholder: 'Выберите период'\n },\n editor: {\n from: 'с',\n to: 'по',\n apply: 'Применить',\n cancel: 'Отмена',\n rangeLabel: 'Период',\n allTime: 'за все время',\n currentQuarter: 'за текущий квартал',\n currentYear: 'за текущий год',\n allTimeOption: 'Все время',\n currentQuarterOption: 'Текущий квартал',\n currentYearOption: 'Текущий год'\n },\n durationTemplate: {\n title: {\n SEPARATOR: ' ',\n LAST_PART_SEPARATOR: 'и',\n YEARS: `{years, plural,\n one {# год}\n few {последние # года}\n other {последние # лет}\n }`,\n MONTHS: `{months, plural,\n one {последний месяц}\n few {последние # месяца}\n other {последние # месяцев}\n }`,\n WEEKS: `{weeks, plural,\n one {последнюю неделю}\n few {последние # недели}\n other {последние # недель}\n }`,\n DAYS: `{days, plural,\n one {последний день}\n few {последние # дня}\n other {последние # дней}\n }`,\n HOURS: `{hours, plural,\n one {последний час}\n few {последние # часа}\n other {последние # часов}\n }`,\n MINUTES: `{minutes, plural,\n one {последнюю минуту}\n few {последние # минуты}\n other {последние # минут}\n }`,\n SECONDS: `{seconds, plural,\n one {последнюю секунду}\n few {последние # секунды}\n other {последние # секунд}\n }`,\n YEARS_FRACTION: `{years} лет`,\n MONTHS_FRACTION: `{months} месяцев`\n },\n option: {\n SEPARATOR: ' ',\n LAST_PART_SEPARATOR: 'и',\n YEARS: `{years, plural,\n one {Последний год}\n few {Последние # года}\n other {Последние # лет}\n }`,\n MONTHS: `{months, plural,\n one {Последний месяц}\n few {Последние # месяца}\n other {Последние # месяцев}\n }`,\n WEEKS: `{weeks, plural,\n one {Последняя неделя}\n few {Последние # недели}\n other {Последние # недель}\n }`,\n DAYS: `{days, plural,\n one {Последний день}\n few {Последние # дня}\n other {Последние # дней}\n }`,\n HOURS: `{hours, plural,\n one {Последний час}\n few {Последние # часа}\n other {Последние # часов}\n }`,\n MINUTES: `{minutes, plural,\n one {Последняя минута}\n few {Последние # минуты}\n other {Последние # минут}\n }`,\n SECONDS: `{seconds, plural,\n one {Последняя секунда}\n few {Последние # секунды}\n other {Последние # секунд}\n }`,\n YEARS_FRACTION: `{years} лет`,\n MONTHS_FRACTION: `{months} месяцев`\n }\n }\n } satisfies KbqTimeRangeLocaleConfig,\n notificationCenter: {\n notifications: 'Уведомления',\n remove: 'Удалить',\n doNotDisturb: 'Не беспокоить',\n showPopUpNotifications: 'Показывать всплывающие уведомления',\n noNotifications: 'Нет уведомлений',\n failedToLoadNotifications: 'Не удалось загрузить уведомления',\n repeat: 'Повторить',\n loadingMore: 'Загрузка уведомлений'\n }\n};\n","import {\n KbqA11yLocaleConfiguration,\n KbqActionsPanelLocaleConfiguration,\n KbqClampedTextLocaleConfig,\n KbqCodeBlockLocaleConfiguration,\n KbqFileUploadLocaleConfig,\n KbqSelectLocaleConfiguration,\n KbqTimeRangeLocaleConfig\n} from './types';\n\nexport const tkTMLocaleData = {\n a11y: {\n close: 'Ýap',\n save: 'Ýazdyr',\n cancel: 'Ýatyr',\n removeAll: 'Ählisini aýyr',\n expandBreadcrumbs: 'Gizlenen elementleri görkez',\n previousMonth: 'Öňki aý',\n currentDate: 'Şu günki sene',\n nextMonth: 'Indiki aý',\n clear: 'Arassala',\n showPassword: 'Paroly görkez',\n hidePassword: 'Paroly gizle',\n resizeColumns: 'Sütünleriň giňligini üýtget'\n } satisfies KbqA11yLocaleConfiguration,\n select: {\n hiddenItemsText: '+{{ number }}',\n selectAll: 'Ählisini saýla'\n } satisfies KbqSelectLocaleConfiguration,\n datepicker: {\n placeholder: 'gg.aa.ýý.',\n dateInput: 'gg.aa.ýý.'\n },\n timepicker: {\n placeholder: {\n full: 'ss:mm:seksek',\n short: 'ss:mm'\n }\n },\n fileUpload: {\n single: {\n captionText: 'Faýly geçiriň ýa-da {{ browseLink }}',\n captionTextOnlyFolder: 'Faýly geçiriň ýa-da {{ browseLinkFolder }}',\n captionTextWithFolder: 'Faýly geçiriň ýa-da {{ browseLink }} ýa-da {{ browseLinkFolderMixed }}',\n browseLink: 'saýlaň',\n browseLinkFolder: 'bukja',\n browseLinkFolderMixed: 'bukja'\n },\n multiple: {\n captionText: 'Şu ýere geçiriň ýa-da {{ browseLink }}',\n captionTextOnlyFolder: 'Şu ýere geçiriň ýa-da {{ browseLinkFolder }}',\n captionTextWithFolder: 'Şu ýere geçiriň ýa-da {{ browseLink }} ýa-da {{ browseLinkFolderMixed }}',\n captionTextWhenSelected: 'Ýene geçiriň ýa-da {{ browseLink }}',\n captionTextForCompactSize: 'Faýllary geçiriň ýa-da {{ browseLink }}',\n browseLink: 'saýlaň',\n browseLinkFolder: 'bukja',\n browseLinkFolderMixed: 'bukja',\n title: 'Faýl ýükläň'\n }\n } satisfies KbqFileUploadLocaleConfig,\n codeBlock: {\n softWrapOnTooltip: 'Sözler boýunça geçirmäni işjeňleşdirmek',\n softWrapOffTooltip: 'Sözler boýunça geçirmäni öçürmek',\n downloadTooltip: 'Ýüklemek',\n copiedTooltip: '✓ Göçürildi',\n copyTooltip: 'Göçürmek',\n viewAllText: 'Hemmesini görkezmek',\n viewLessText: 'Ýygyrmak',\n openExternalSystemTooltip: 'Daşarky ulgamda açmak'\n } satisfies KbqCodeBlockLocaleConfiguration,\n timezone: {\n searchPlaceholder: 'Şäher ýa-da sagat guşagy'\n },\n actionsPanel: {\n closeTooltip: 'Saýlawy ýatyr'\n } satisfies KbqActionsPanelLocaleConfiguration,\n filterBar: {\n reset: {\n buttonName: 'Täzeden düz'\n },\n search: {\n tooltip: 'Gözleg',\n placeholder: 'Gözleg'\n },\n filters: {\n defaultName: 'Filtrler',\n saveNewFilterTooltip: 'Täze filtri ýazdyr',\n searchPlaceholder: 'Gözleg',\n searchEmptyResult: 'Hiç zat tapylmady',\n saveAsNewFilter: 'Täze filtr hökmünde ýazdyr',\n saveChanges: 'Üýtgetmeleri ýazdyr',\n saveAsNew: 'Täze hökmünde ýazdyr',\n change: 'Düzet',\n resetChanges: 'Täzeden düz',\n remove: 'Poz',\n name: 'At',\n error: 'Şeýle atly gözleg eýýäm bar',\n errorHint: 'Filtri ýazdyryp bolmady. Täzeden synanyň ýa-da administratora ýüz tutuň.',\n saveButton: 'Ýazdyr',\n cancelButton: 'Ýatyr',\n actionsTooltip: 'Filtr amallary'\n },\n add: {\n tooltip: 'Filtr goş',\n addedAnnouncement: '{{ name }} filtri goşuldy'\n },\n refresher: {\n refresh: 'Täzele',\n settings: 'Täzeleme sazlamalary'\n },\n pipe: {\n clearButtonTooltip: 'Arassala',\n removeButtonTooltip: 'Ýokla',\n applyButton: 'Ulan',\n emptySearchResult: 'Hiç zat tapylmady',\n selectAll: 'Ählisini saýla'\n },\n datePipe: {\n customPeriod: 'Laýyk döwür',\n customPeriodFrom: 'başy',\n customPeriodTo: 'soňy',\n customPeriodErrorHint: 'Döwür gutarýan wagtyndan soň başlap bilmeýär',\n customPeriodMinIntervalErrorHint: 'Döwür azyndan {{ value }} bolmaly',\n customPeriodMaxIntervalErrorHint: 'Döwür köpi bilen {{ value }} bolmaly',\n backToPeriodSelection: 'Yzyna'\n }\n },\n clampedText: {\n openText: 'Giňelt',\n closeText: 'Ýap',\n showMoreText: 'Ýene {exceededItemCount} görkeziň',\n moreText: 'has köp'\n } satisfies KbqClampedTextLocaleConfig,\n navbarIc: {\n toggle: {\n pinButton: 'Rugsat giňeldildi',\n collapseButton: 'Apseykylmak'\n }\n },\n navbar: {\n toggle: {\n expand: 'Giňeltmek',\n collapse: 'Ýykmak'\n }\n },\n searchExpandable: {\n tooltip: 'Gözleg',\n placeholder: 'Gözleg'\n },\n appSwitcher: {\n searchPlaceholder: 'Gözleg',\n searchEmptyResult: 'Hiç zat tapylmady',\n sitesHeader: 'Beýleki saýtlar'\n },\n timeRange: {\n title: {\n for: 'soňky',\n placeholder: 'Möhleti saýla'\n },\n editor: {\n from: 'şundan',\n to: 'şuňa',\n apply: 'Ulanmak',\n cancel: 'Ýatyrmak',\n rangeLabel: 'Döwür',\n allTime: 'hemme döwür üçin',\n currentQuarter: 'şu çärýek üçin',\n currentYear: 'şu ýyl üçin',\n allTimeOption: 'Hemme döwür',\n currentQuarterOption: 'Şu çärýek',\n currentYearOption: 'Şu ýyl'\n },\n durationTemplate: {\n title: {\n SEPARATOR: ' ',\n LAST_PART_SEPARATOR: '',\n YEARS: `{years, plural,\n one {# ýyl}\n other {# ýyl}\n }`,\n MONTHS: `{months, plural,\n one {aý}\n other {# aý}\n }`,\n WEEKS: `{weeks, plural,\n one {hepde}\n other {# hepde}\n }`,\n DAYS: `{days, plural,\n one {gün}\n other {# gün}\n }`,\n HOURS: `{hours, plural,\n one {sagat}\n other {# sagat}\n }`,\n MINUTES: `{minutes, plural,\n one {minut}\n other {# minut}\n }`,\n SECONDS: `{seconds, plural,\n one {sekunt}\n other {# sekunt}\n }`,\n YEARS_FRACTION: `{years} ýyl`,\n MONTHS_FRACTION: `{months} aý`\n },\n option: {\n SEPARATOR: ' ',\n LAST_PART_SEPARATOR: '',\n YEARS: `{years, plural,\n one {# ýyl}\n other {# ýyl}\n }`,\n MONTHS: `{months, plural,\n one {Aý}\n other {# aý}\n }`,\n WEEKS: `{weeks, plural,\n one {Hepde}\n other {# hepde}\n }`,\n DAYS: `{days, plural,\n one {Gün}\n other {# gün}\n }`,\n HOURS: `{hours, plural,\n one {Sagat}\n other {# sagat}\n }`,\n MINUTES: `{minutes, plural,\n one {Minut}\n other {# minut}\n }`,\n SECONDS: `{seconds, plural,\n one {Sekunt}\n other {# sekunt}\n }`,\n YEARS_FRACTION: `{years} ýyl`,\n MONTHS_FRACTION: `{months} aý`\n }\n }\n } satisfies KbqTimeRangeLocaleConfig,\n notificationCenter: {\n notifications: 'Duýduryşlar',\n remove: 'Aýyr',\n doNotDisturb: 'Alada etme',\n showPopUpNotifications: 'Açylýan bildirişleri görkeziň',\n noNotifications: 'Duýduryş ýok',\n failedToLoadNotifications: 'Duýduryşlary ýükläp bilmedi',\n repeat: 'Gaýtalama',\n loadingMore: 'Duýduryşlar ýüklenýär'\n }\n};\n","import { DOCUMENT } from '@angular/common';\nimport { inject, Injectable, InjectionToken, Provider } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { enUSLocaleData } from './en-US';\nimport { esLALocaleData } from './es-LA';\nimport {\n enUSFormattersData,\n esLAFormattersData,\n ptBRFormattersData,\n ruRUFormattersData,\n tkTMFormattersData\n} from './formatters';\nimport { ptBRLocaleData } from './pt-BR';\nimport { ruRULocaleData } from './ru-RU';\nimport { tkTMLocaleData } from './tk-TM';\nimport { KbqNumberInputLocaleConfig } from './types';\n\nexport const KBQ_LOCALE_ID = new InjectionToken<string>('KbqLocaleId');\n\nexport const KBQ_DEFAULT_LOCALE_ID = 'ru-RU';\n\nexport function KBQ_DEFAULT_LOCALE_DATA_FACTORY() {\n return {\n items: [\n { id: 'en-US', name: 'English' },\n { id: 'es-LA', name: 'Español' },\n { id: 'pt-BR', name: 'Português' },\n { id: 'ru-RU', name: 'Русский' },\n { id: 'tk-TM', name: 'Türkmen' }\n ],\n 'en-US': { ...enUSLocaleData, ...enUSFormattersData },\n 'es-LA': { ...esLALocaleData, ...esLAFormattersData },\n 'pt-BR': { ...ptBRLocaleData, ...ptBRFormattersData },\n 'ru-RU': { ...ruRULocaleData, ...ruRUFormattersData },\n 'tk-TM': { ...tkTMLocaleData, ...tkTMFormattersData }\n };\n}\nexport const KBQ_LOCALE_DATA = new InjectionToken<any>('KBQ_LOCALE_DATA', {\n providedIn: 'root',\n factory: KBQ_DEFAULT_LOCALE_DATA_FACTORY\n});\n\nexport const KBQ_LOCALE_SERVICE = new InjectionToken<KbqLocaleService>('KBQ_LOCALE_SERVICE');\n\n/**\n * Attribute name to be used to set the locale in the html element.\n *\n * @default 'lang'\n *\n * @docs-private\n */\nexport const KBQ_LOCALE_SERVICE_LANG_ATTR_NAME = new InjectionToken<string>('KBQ_LOCALE_SERVICE_LANG_ATTR_NAME', {\n factory: () => 'lang'\n});\n\n/**\n * Utility provider to configure the attribute name to be used to set the locale in the html element.\n *\n * @see KBQ_LOCALE_SERVICE_LANG_ATTR_NAME\n *\n * @docs-private\n */\nexport const kbqLocaleServiceLangAttrNameProvider = (attrName: string): Provider => ({\n provide: KBQ_LOCALE_SERVICE_LANG_ATTR_NAME,\n useValue: attrName\n});\n\n@Injectable({ providedIn: 'root' })\nexport class KbqLocaleService {\n readonly changes: BehaviorSubject<string>;\n readonly locales: any = {};\n\n private readonly document = inject(DOCUMENT);\n\n id: string;\n current;\n\n private readonly langAttrName = inject(KBQ_LOCALE_SERVICE_LANG_ATTR_NAME);\n\n constructor() {\n const id = inject(KBQ_LOCALE_ID, { optional: true });\n const localeData = inject(KBQ_LOCALE_DATA, { optional: true });\n\n this.locales = localeData;\n\n this.id = id || KBQ_DEFAULT_LOCALE_ID;\n this.current = this.locales[this.id];\n\n this.changes = new BehaviorSubject(this.id);\n }\n\n setLocale(id: string) {\n this.id = id;\n this.current = this.locales[this.id];\n\n this.document.documentElement.setAttribute(this.langAttrName, this.id);\n\n this.changes.next(this.id);\n }\n\n addLocale(id: string, localeData) {\n this.id = id;\n this.changes.next(this.id);\n\n this.locales[this.id] = localeData;\n }\n\n getParams(componentName: string) {\n return this.current[componentName];\n }\n}\n\n// todo code below need refactor or delete in DS-3603\n/** @docs-private */\nexport const KBQ_DEFAULT_PRECISION_SEPARATOR = '.';\n\n/** @docs-private */\nexport function numberByParts(\n value: string,\n customConfig: Pick<KbqNumberInputLocaleConfig, 'fractionSeparator' | 'groupSeparator'>\n): { integer: string; fraction: string } {\n const { groupSeparator, fractionSeparator } = customConfig;\n const result = { integer: '', fraction: '' };\n let parsedValue = value;\n\n // normalize only when '.', ',' are used as fractionSeparators\n if (groupSeparator.includes(' ') && fractionSeparator === ',') {\n parsedValue = parsedValue.replace(/\\./g, ',');\n }\n\n const isNegative = parsedValue.startsWith('-');\n const numberByParts = parsedValue.split(fractionSeparator).filter(Boolean);\n\n if (numberByParts.length > 1) {\n result.fraction = numberByParts.pop() || '';\n result.integer = numberByParts\n .join()\n .replace(groupSeparator.join(''), '')\n .replace(fractionSeparator, '')\n .replace(/\\D/g, '');\n } else {\n result.integer = numberByParts.join().replace(groupSeparator[0], '').replace(/\\D/g, '');\n }\n\n if (isNegative) result.integer = `-${result.integer}`;\n\n return result;\n}\n\n/**\n * Function that returns a string representation of a number without localized separators\n */\nexport function normalizeNumber(\n value: string | null | undefined,\n customConfig: Pick<KbqNumberInputLocaleConfig, 'fractionSeparator' | 'groupSeparator'>\n): string {\n if (value === null || value === undefined) return '';\n\n const { groupSeparator, fractionSeparator } = customConfig;\n const groupSeparatorRegexp = new RegExp(`[${groupSeparator.join('')}]`, 'g');\n const fractionSeparatorRegexp = new RegExp(`\\\\${fractionSeparator}`, 'g');\n\n return value\n .toString()\n .replace(groupSeparatorRegexp, '')\n .replace(fractionSeparatorRegexp, KBQ_DEFAULT_PRECISION_SEPARATOR);\n}\n\n/**\n * Function that parse string and return a number. The string can be in any locale.\n */\nexport function checkAndNormalizeLocalizedNumber(num: string | null | undefined, locale?: string): number | null {\n if (num === null || num === undefined) return null;\n\n const locales = KBQ_DEFAULT_LOCALE_DATA_FACTORY();\n\n if (locale && locales[locale]) {\n const config = locales[locale].input.number;\n let normalized: number;\n\n if (!/\\d/g.test(num)) return +num;\n\n const { integer, fraction } = numberByParts(num, config);\n\n if (fraction) {\n normalized = +[integer, fraction].join('.');\n } else {\n normalized = +normalizeNumber(integer, config);\n }\n\n if (!Number.isNaN(normalized)) {\n return normalized;\n }\n }\n\n /* if some locale input config satisfies pasted number, try to normalise with selected locale config */\n let numberOutput: number | null = null;\n\n for (const config of locales.items.map(({ id }) => locales[id].input.number)) {\n const normalized = +normalizeNumber(num, config);\n\n if (!Number.isNaN(normalized)) {\n numberOutput = normalized;\n break;\n }\n }\n\n return numberOutput;\n}\n\n// todo code above need refactor or delete in DS-3603\n","import { inject, InjectionToken, Provider, Signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { map, of } from 'rxjs';\nimport { KBQ_LOCALE_SERVICE } from './locale-service';\nimport { ruRULocaleData } from './ru-RU';\nimport { KbqA11yLocaleConfiguration } from './types';\n\n/** Localization configuration for the accessible names of the icon-only buttons the library renders itself. */\nexport const KBQ_A11Y_LOCALE_CONFIGURATION = new InjectionToken<KbqA11yLocaleConfiguration>(\n 'KBQ_A11Y_LOCALE_CONFIGURATION',\n { factory: () => ruRULocaleData.a11y }\n);\n\n/** Utility provider for `KBQ_A11Y_LOCALE_CONFIGURATION`. */\nexport const kbqA11yLocaleConfigurationProvider = (configuration: KbqA11yLocaleConfiguration): Provider => ({\n provide: KBQ_A11Y_LOCALE_CONFIGURATION,\n useValue: configuration\n});\n\n/**\n * Reactive accessible names for the icon-only buttons the library renders itself.\n *\n * Follows `KbqLocaleService` when one is provided, and otherwise stays on whatever\n * `KBQ_A11Y_LOCALE_CONFIGURATION` resolves to.\n *\n * @docs-private\n */\nexport function kbqInjectA11yLocaleConfiguration(): Signal<KbqA11yLocaleConfiguration> {\n const localeService = inject(KBQ_LOCALE_SERVICE, { optional: true });\n const initialValue = inject(KBQ_A11Y_LOCALE_CONFIGURATION);\n const configuration = localeService\n ? localeService.changes.pipe(\n map<string, KbqA11yLocaleConfiguration>(\n () => localeService.getParams('a11y') satisfies KbqA11yLocaleConfiguration\n )\n )\n : of(initialValue);\n\n return toSignal(configuration, { initialValue });\n}\n","import { NgModule } from '@angular/core';\nimport { KBQ_LOCALE_SERVICE, KbqLocaleService } from './locale-service';\n\n@NgModule({\n providers: [\n { provide: KBQ_LOCALE_SERVICE, useClass: KbqLocaleService }\n ]\n})\nexport class KbqLocaleServiceModule {}\n","import { inject, Injectable } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DateAdapter } from '@koobiq/date-adapter';\nimport { DateFormatter as BaseDateFormatter } from '@koobiq/date-formatter';\nimport { KBQ_DATE_LOCALE, DateAdapter as KbqDateAdapter } from '../../datetime';\nimport { KBQ_LOCALE_SERVICE, KbqLocaleService } from '../../locales';\n\n@Injectable()\nexport class DateFormatter<D> extends BaseDateFormatter<D> {\n override readonly adapter: DateAdapter<D>;\n\n protected localeService = inject<KbqLocaleService>(KBQ_LOCALE_SERVICE, { optional: true });\n constructor() {\n const adapter = inject<DateAdapter<D>>(KbqDateAdapter);\n const locale = inject(KBQ_DATE_LOCALE);\n\n super(adapter, locale);\n this.adapter = adapter;\n\n this.localeService?.changes.pipe(takeUntilDestroyed()).subscribe((locale) => this.setLocale(locale));\n }\n}\n","import { ChangeDetectorRef, effect, inject, Pipe, PipeTransform } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DurationUnit } from '@koobiq/date-adapter';\nimport { DateTimeOptions } from '@koobiq/date-formatter';\nimport { DateAdapter, KbqDateTimezoneService, KbqTimezoneLike } from '../../datetime';\nimport { KBQ_LOCALE_SERVICE } from '../../locales';\nimport { DateFormatter } from './formatter';\n\n/**\n * Identity comparison with a one-level element-wise fallback for arrays, so an input rebuilt on every\n * change detection cycle — a `[from, to]` tuple returned from a getter or a `computed()`, a `units`\n * array built in a method — still hits the cache of the impure pipes below. Array literals written\n * directly in a template are already memoized by Angular (`ɵɵpureFunction`); this covers the rest.\n *\n * Compares array elements by reference, like the `a === b` fallback it wraps — it has no notion of two\n * dates being \"equal\". Mutating a date already passed to a pipe in place (`Date#setHours`, a Moment\n * instance updated without cloning, …) keeps the same reference, so a `[from, to]` tuple rebuilt around\n * that mutated instance still reads as unchanged and the cached, now-stale string is returned. Replace\n * pipe inputs instead of mutating them — the same requirement Angular's OnPush change detection already\n * places on any object bound to an OnPush view.\n */\nconst shallowEqual = (a: unknown, b: unknown): boolean => {\n if (a === b) return true;\n if (!Array.isArray(a) || !Array.isArray(b) || a.length !== b.length) return false;\n\n return a.every((item, index) => item === b[index]);\n};\n\n/**\n * Deserializes a pipe input into a date, treating a missing value and an unparseable one alike as\n * \"no date\" — `DateAdapter.deserialize()` returns `null` for the former but a truthy *invalid* date\n * for the latter, so a plain truthiness check is not enough.\n */\nconst toValidDate = <D>(adapter: DateAdapter<D>, value: unknown): D | null => {\n const date = adapter.deserialize(value);\n\n return date != null && adapter.isValid(date) ? date : null;\n};\n\n/**\n * A `[from, to]` tuple with both bounds required; `null` when either is missing or invalid.\n *\n * Takes the tuple itself as possibly missing, not just its bounds: a pipe input that has not been\n * populated yet is `null`/`undefined` rather than `[null, null]`, and destructuring that throws.\n */\nconst toClosedRange = <D>(adapter: DateAdapter<D>, value: D[] | string[] | null | undefined): [D, D] | null => {\n const [from, to] = value ?? [];\n const startDate = toValidDate(adapter, from);\n const endDate = toValidDate(adapter, to);\n\n return startDate && endDate ? [startDate, endDate] : null;\n};\n\n/**\n * A `[from, to]` tuple where one bound may be open; `null` only when neither bound is a valid date.\n *\n * The range formatters switch to the opened-range template on their own when a bound is missing, but\n * throw when both are — and a throwing pipe aborts the rendering of the whole view.\n */\nconst toOpenedRange = <D>(\n adapter: DateAdapter<D>,\n value: D[] | string[] | null | undefined\n): [D | null, D | null] | null => {\n const [from, to] = value ?? [];\n const startDate = toValidDate(adapter, from);\n const endDate = toValidDate(adapter, to);\n\n return startDate || endDate ? [startDate, endDate] : null;\n};\n\n/**\n * A `[from, to]` tuple the duration formatters accept: both bounds required and chronologically\n * ordered. `DateFormatter.duration*` throws on anything else.\n */\nconst toDurationRange = <D>(adapter: DateAdapter<D>, value: D[] | string[] | null | undefined): [D, D] | null => {\n const range = toClosedRange(adapter, value);\n\n return range && adapter.compareDateTime(range[0], range[1]) <= 0 ? range : null;\n};\n\nexport class BaseFormatterPipe<D> {\n protected readonly adapter: DateAdapter<D> = inject(DateAdapter<D>);\n protected readonly formatter: DateFormatter<D> = inject(DateFormatter<D>);\n}\n\n/**\n * Base class for impure date-formatter pipes that recompute their result whenever the active locale\n * changes via `KbqLocaleService`, or the active time zone via `KbqDateTimezoneService`.\n *\n * The base class owns:\n * - a subscription to `KbqLocaleService.changes` and an `effect` on the active time zone, each of which\n * invalidates the cache and marks the host for check (the same approach the built-in `AsyncPipe` uses);\n * - caching by `(value, args, localeId, timezone)`, so the impure `transform()` only does\n * real work when an input, the active locale or the active time zone actually changed — see\n * `shallowEqual` for how the comparison works and its limits.\n *\n * Subclasses implement `format()`, which receives the raw pipe input(s) — a\n * single value for absolute/relative pipes, or a `[from, to]` tuple for range\n * pipes — deserializes via `this.adapter` and calls the matching\n * `DateFormatter` method.\n *\n * @docs-private\n */\nexport abstract class BaseLocaleAwareFormatterPipe<\n D,\n Value = D | string | null | undefined,\n Args extends unknown[] = unknown[]\n> extends BaseFormatterPipe<D> {\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n private readonly localeService = inject(KBQ_LOCALE_SERVICE, { optional: true });\n private readonly timezoneService = inject(KbqDateTimezoneService);\n\n private cachedValue: Value | null = null;\n private cachedArgs: Args = [] as unknown as Args;\n private cachedLocaleId: string | null = null;\n private cachedTimezone: KbqTimezoneLike | null = null;\n private cachedResult = '';\n private hasCache = false;\n\n constructor() {\n super();\n\n this.localeService?.changes.pipe(takeUntilDestroyed()).subscribe(() => {\n this.hasCache = false;\n this.changeDetectorRef.markForCheck();\n });\n\n // Only wakes an OnPush host up; the cache is invalidated by comparing the zone in `transform()`,\n // so the run this effect makes on creation costs nothing.\n effect(() => {\n this.timezoneService.timezone();\n\n this.changeDetectorRef.markForCheck();\n });\n }\n\n transform(value: Value, ...args: Args): string {\n const currentLocaleId = this.localeService?.id ?? null;\n const currentTimezone = this.timezoneService.timezone();\n\n if (\n this.hasCache &&\n shallowEqual(value, this.cachedValue) &&\n currentLocaleId === this.cachedLocaleId &&\n currentTimezone === this.cachedTimezone &&\n this.argsEqual(args)\n ) {\n return this.cachedResult;\n }\n\n this.cachedResult = this.format(value, ...args);\n this.cachedValue = value;\n this.cachedArgs = args;\n this.cachedLocaleId = currentLocaleId;\n this.cachedTimezone = currentTimezone;\n this.hasCache = true;\n\n return this.cachedResult;\n }\n\n protected abstract format(value: Value, ...args: Args): string;\n\n private argsEqual(args: Args): boolean {\n if (args.length !== this.cachedArgs.length) return false;\n\n for (let i = 0; i < args.length; i++) {\n if (!shallowEqual(args[i], this.cachedArgs[i])) return false;\n }\n\n return true;\n }\n}\n\n@Pipe({\n name: 'absoluteLongDate'\n})\nexport class AbsoluteDateFormatterPipe<D> extends BaseFormatterPipe<D> implements PipeTransform {\n transform(value: D | string | null | undefined, currYear?: boolean): string {\n const date = toValidDate(this.adapter, value);\n\n return date ? this.formatter.absoluteLongDate(date, currYear) : '';\n }\n}\n\n@Pipe({\n name: 'absoluteLongDateImpurePipe',\n pure: false\n})\n// eslint-disable-next-line @angular-eslint/use-pipe-transform-interface\nexport class AbsoluteDateFormatterImpurePipe<D> extends AbsoluteDateFormatterPipe<D> {\n transform(value: D | string | null | undefined, currYear?: boolean): string {\n return super.transform(value, currYear);\n }\n}\n\n@Pipe({\n name: 'absoluteLongDateTime'\n})\nexport class AbsoluteDateTimeFormatterPipe<D> extends BaseFormatterPipe<D> implements PipeTransform {\n transform(value: D | string | null | undefined, options?: DateTimeOptions): string {\n const date = toValidDate(this.adapter, value);\n\n return date ? this.formatter.absoluteLongDateTime(date, options) : '';\n }\n}\n\n@Pipe({\n name: 'absoluteLongDateTimeImpurePipe',\n pure: false\n})\n// eslint-disable-next-line @angular-eslint/use-pipe-transform-interface\nexport class AbsoluteDateTimeFormatterImpurePipe<D> extends AbsoluteDateTimeFormatterPipe<D> {\n transform(value: D | string | null | undefined, options?: DateTimeOptions): string {\n return super.transform(value, options);\n }\n}\n\n@Pipe({\n name: 'absoluteShortDate'\n})\nexport class AbsoluteDateShortFormatterPipe<D> extends BaseFormatterPipe<D> implements PipeTransform {\n transform(value: D | string | null | undefined, currYear?: boolean): string {\n const date = toValidDate(this.adapter, value);\n\n return date ? this.formatter.absoluteShortDate(date, currYear) : '';\n }\n}\n\n@Pipe({\n name: 'absoluteShortDateImpurePipe',\n pure: false\n})\n// eslint-disable-next-line @angular-eslint/use-pipe-transform-interface\nexport class AbsoluteDateShortFormatterImpurePipe<D> extends AbsoluteDateShortFormatterPipe<D> {\n transform(value: D | string | null | undefined, currYear?: boolean): string {\n return super.transform(value, currYear);\n }\n}\n\n@Pipe({\n name: 'absoluteShortDateTime'\n})\nexport class AbsoluteShortDateTimeFormatterPipe<D> extends BaseFormatterPipe<D> implements PipeTransform {\n transform(value: D | string | null | undefined, options?: DateTimeOptions): string {\n const date = toValidDate(this.adapter, value);\n\n return date ? this.formatter.absoluteShortDateTime(date, options) : '';\n }\n}\n\n@Pipe({\n name: 'absoluteShortDateTimeImpurePipe',\n pure: false\n})\n// eslint-disable-next-line @angular-eslint/use-pipe-transform-interface\nexport class AbsoluteShortDateTimeFormatterImpurePipe<D> extends AbsoluteShortDateTimeFormatterPipe<D> {\n transform(value: D | string | null | undefined, options?: DateTimeOptions): string {\n return super.transform(value, options);\n }\n}\n\n@Pipe({\n name: 'relativeLongDate'\n})\nexport class RelativeDateFormatterPipe<D> extends BaseFormatterPipe<D> implements PipeTransform {\n transform(value: D | string | null | undefined): string {\n const date = toValidDate(this.adapter, value);\n\n return date ? this.formatter.relativeLongDate(date) : '';\n }\n}\n\n@Pipe({\n name: 'relativeLongDateImpurePipe',\n pure: false\n})\n// eslint-disable-next-line @angular-eslint/use-pipe-transform-interface\nexport class RelativeDateFormatterImpurePipe<D> extends RelativeDateFormatterPipe<D> {\n transform(value: D | string | null | undefined): string {\n return super.transform(value);\n }\n}\n\n@Pipe({\n name: 'relativeLongDateTime'\n})\nexport class RelativeDateTimeFormatterPipe<D> extends BaseFormatterPipe<D> implements PipeTransform {\n transform(value: D | string | null | undefined, options?: DateTimeOptions): string {\n const date = toValidDate(this.adapter, value);\n\n return date ? this.formatter.relativeLongDateTime(date, options) : '';\n }\n}\n\n@Pipe({\n name: 'relativeLongDateTimeImpurePipe',\n pure: false\n})\n// eslint-disable-next-line @angular-eslint/use-pipe-transform-interface\nexport class RelativeDateTimeFormatterImpurePipe<D> extends RelativeDateTimeFormatterPipe<D> {\n transform(value: D | string | null | undefined, options?: DateTimeOptions): string {\n return super.transform(value, options);\n }\n}\n\n@Pipe({\n name: 'relativeShortDate'\n})\nexport class RelativeShortDateFormatterPipe<D> extends BaseFormatterPipe<D> implements PipeTransform {\n transform(value: D | string | null | undefined): string {\n const date = toValidDate(this.adapter, value);\n\n return date ? this.formatter.relativeShortDate(date) : '';\n }\n}\n\n@Pipe({\n name: 'relativeShortDateImpurePipe',\n pure: false\n})\n// eslint-disable-next-line @angular-eslint/use-pipe-transform-interface\nexport class RelativeShortDateFormatterImpurePipe<D> extends RelativeShortDateFormatterPipe<D> {\n transform(value: D | string | null | undefined): string {\n return super.transform(value);\n }\n}\n\n@Pipe({\n name: 'relativeShortDateTime'\n})\nexport class RelativeShortDateTimeFormatterPipe<D> extends BaseFormatterPipe<D> implements PipeTransform {\n transform(value: D | string | null | undefined, options?: DateTimeOptions): string {\n const date = toValidDate(this.adapter, value);\n\n return date ? this.formatter.relativeShortDateTime(date, options) : '';\n }\n}\n\n@Pipe({\n name: 'relativeShortDateTimeImpurePipe',\n pure: false\n})\n// eslint-disable-next-line @angular-eslint/use-pipe-transform-interface\nexport class RelativeShortDateTimeFormatterImpurePipe<D> extends RelativeShortDateTimeFormatterPipe<D> {\n transform(value: D | string | null | undefined, options?: DateTimeOptions): string {\n return super.transform(value, options);\n }\n}\n\n@Pipe({\n name: 'rangeLongDate'\n})\nexport class RangeDateFormatterPipe<D> extends BaseFormatterPipe<D> implements PipeTransform {\n transform(value: D[] | string[] | null | undefined): string {\n const range = toOpenedRange(this.adapter, value);\n\n if (!range) return '';\n\n return this.formatter.rangeLongDate(range[0], range[1]);\n }\n}\n\n@Pipe({\n name: 'rangeLongDateImpurePipe',\n pure: false\n})\n// eslint-disable-next-line @angular-eslint/use-pipe-transform-interface\nexport class RangeDateFormatterImpurePipe<D> extends RangeDateFormatterPipe<D> {\n transform(value: D[] | string[] | null | undefined): string {\n return super.transform(value);\n }\n}\n\n@Pipe({\n name: 'rangeShortDate'\n})\nexport class RangeShortDateFormatterPipe<D> extends BaseFormatterPipe<D> implements PipeTransform {\n transform(value: D[] | string[] | null | undefined): string {\n const range = toOpenedRange(this.adapter, value);\n\n if (!range) return '';\n\n return this.formatter.rangeShortDate(range[0], range[1] ?? undefined);\n }\n}\n\n@Pipe({\n name: 'rangeShortDateImpurePipe',\n pure: false\n})\n// eslint-disable-next-line @angular-eslint/use-pipe-transform-interface\nexport class RangeShortDateFormatterImpurePipe<D> extends RangeShortDateFormatterPipe<D> {\n transform(value: D[] | string[] | null | undefined): string {\n return super.transform(value);\n }\n}\n\n@Pipe({\n name: 'rangeLongDateTime'\n})\nexport class RangeDateTimeFormatterPipe<D> extends BaseFormatterPipe<D> implements PipeTransform {\n transform(value: D[] | string[] | null | undefined, options?: DateTimeOptions): string {\n const range = toOpenedRange(this.adapter, value);\n\n if (!range) return '';\n\n return this.formatter.rangeLongDateTime(range[0], range[1] ?? undefined, options);\n }\n}\n\n@Pipe({\n name: 'rangeLongDateTimeImpurePipe',\n pure: false\n})\n// eslint-disable-next-line @angular-eslint/use-pipe-transform-interface\nexport class RangeDateTimeFormatterImpurePipe<D> extends RangeDateTimeFormatterPipe<D> {\n transform(value: D[] | string[] | null | undefined, options?: DateTimeOptions): string {\n return super.transform(value, options);\n }\n}\n\n@Pipe({\n name: 'rangeMiddleDateTime'\n})\nexport class RangeMiddleDateTimeFormatterPipe<D> extends BaseFormatterPipe<D> implements PipeTransform {\n transform(value: D[] | string[] | null | undefined, options?: DateTimeOptions): string {\n // Unlike the other range formats, the middle one has no opened-range template — both bounds required.\n const range = toClosedRange(this.adapter, value);\n\n if (!range) return '';\n\n return this.formatter.rangeMiddleDateTime(range[0], range[1], options);\n }\n}\n\n@Pipe({\n name: 'rangeMiddleDateTimeImpurePipe',\n pure: false\n})\n// eslint-disable-next-line @angular-eslint/use-pipe-transform-interface\nexport class RangeMiddleDateTimeFormatterImpurePipe<D> extends RangeMiddleDateTimeFormatterPipe<D> {\n transform(value: D[] | string[] | null | undefined, options?: DateTimeOptions): string {\n return super.transform(value, options);\n }\n}\n\n@Pipe({\n name: 'rangeShortDateTime'\n})\nexport class RangeShortDateTimeFormatterPipe<D> extends BaseFormatterPipe<D> implements PipeTransform {\n transform(value: D[] | string[] | null | undefined, options?: DateTimeOptions): string {\n const range = toOpenedRange(this.adapter, value);\n\n if (!range) return '';\n\n return this.formatter.rangeShortDateTime(range[0], range[1], options);\n }\n}\n\n@Pipe({\n name: 'rangeShortDateTimeImpurePipe',\n pure: false\n})\n// eslint-disable-next-line @angular-eslint/use-pipe-transform-interface\nexport class RangeShortDateTimeFormatterImpurePipe<D> extends RangeShortDateTimeFormatterPipe<D> {\n transform(value: D[] | string[] | null | undefined, options?: DateTimeOptions): string {\n return super.transform(value, options);\n }\n}\n\n@Pipe({\n name: 'durationShortest'\n})\nexport class DurationShortestFormatterPipe<D> extends BaseFormatterPipe<D> implements PipeTransform {\n transform(value: D[] | string[] | null | undefined, options?: DateTimeOptions): string {\n const range = toDurationRange(this.adapter, value);\n\n if (!range) return '';\n\n return this.formatter.durationShortest(range[0], range[1], options?.seconds, options?.milliseconds);\n }\n}\n\n@Pipe({\n name: 'durationShortestImpurePipe',\n pure: false\n})\n// eslint-disable-next-line @angular-eslint/use-pipe-transform-interface\nexport class DurationShortestFormatterImpurePipe<D> extends DurationShortestFormatterPipe<D> {\n transform(value: D[] | string[] | null | undefined, options?: DateTimeOptions): string {\n return super.transform(value, options);\n }\n}\n\n@Pipe({\n name: 'durationLong'\n})\nexport class DurationLongFormatterPipe<D> extends BaseFormatterPipe<D> implements PipeTransform {\n transform(value: D[] | string[] | null | undefined, units?: DurationUnit[], fraction?: boolean): string {\n const range = toDurationRange(this.adapter, value);\n\n if (!range) return '';\n\n return this.formatter.durationLong(range[0], range[1], units, fraction);\n }\n}\n\n@Pipe({\n name: 'durationLongImpurePipe',\n pure: false\n})\n// eslint-disable-next-line @angular-eslint/use-pipe-transform-interface\nexport class DurationLongFormatterImpurePipe<D> extends DurationLongFormatterPipe<D> {\n transform(value: D[] | string[] | null | undefined, units?: DurationUnit[], fraction?: boolean): string {\n return super.transform(value, units, fraction);\n }\n}\n\n@Pipe({\n name: 'durationShort'\n})\nexport class DurationShortFormatterPipe<D> extends BaseFormatterPipe<D> implements PipeTransform {\n transform(value: D[] | string[] | null | undefined, units?: DurationUnit[], fraction?: boolean): string {\n const range = toDurationRange(this.adapter, value);\n\n if (!range) return '';\n\n return this.formatter.durationShort(range[0], range[1], units, fraction);\n }\n}\n\n@Pipe({\n name: 'durationShortImpurePipe',\n pure: false\n})\n// eslint-disable-next-line @angular-eslint/use-pipe-transform-interface\nexport class DurationShortFormatterImpurePipe<D> extends DurationShortFormatterPipe<D> {\n transform(value: D[] | string[] | null | undefined, units?: DurationUnit[], fraction?: boolean): string {\n return super.transform(value, units, fraction);\n }\n}\n\n// Impure pipes that recompute on `KbqLocaleService` locale changes and on `KbqDateTimezoneService` time\n// zone changes (see `BaseLocaleAwareFormatterPipe`). Prefer these `kbq`-prefixed pipes when either can\n// change at runtime; the pure pipes above are kept for static usages and backward compatibility.\n\n@Pipe({\n name: 'kbqAbsoluteLongDate',\n pure: false\n})\nexport class KbqAbsoluteLongDatePipe<D>\n extends BaseLocaleAwareFormatterPipe<D, D | string | null | undefined, [currYear?: boolean]>\n implements PipeTransform\n{\n override transform(value: D | string | null | undefined, currYear?: boolean): string {\n return super.transform(value, currYear);\n }\n\n protected format(value: D | string | null | undefined, currYear?: boolean): string {\n const date = toValidDate(this.adapter, value);\n\n return date ? this.formatter.absoluteLongDate(date, currYear) : '';\n }\n}\n\n@Pipe({\n name: 'kbqAbsoluteShortDate',\n pure: false\n})\nexport class KbqAbsoluteShortDatePipe<D>\n extends BaseLocaleAwareFormatterPipe<D, D | string | null | undefined, [currYear?: boolean]>\n implements PipeTransform\n{\n override transform(value: D | string | null | undefined, currYear?: boolean): string {\n return super.transform(value, currYear);\n }\n\n protected format(value: D | string | null | undefined, currYear?: boolean): string {\n const date = toValidDate(this.adapter, value);\n\n return date ? this.formatter.absoluteShortDate(date, currYear) : '';\n }\n}\n\n@Pipe({\n name: 'kbqAbsoluteLongDateTime',\n pure: false\n})\nexport class KbqAbsoluteLongDateTimePipe<D>\n extends BaseLocaleAwareFormatterPipe<D, D | string | null | undefined, [options?: DateTimeOptions]>\n implements PipeTransform\n{\n override transform(value: D | string | null | undefined, options?: DateTimeOptions): string {\n return super.transform(value, options);\n }\n\n protected format(value: D | string | null | undefined, options?: DateTimeOptions): string {\n const date = toValidDate(this.adapter, value);\n\n return date ? this.formatter.absoluteLongDateTime(date, options) : '';\n }\n}\n\n@Pipe({\n name: 'kbqAbsoluteShortDateTime',\n pure: false\n})\nexport class KbqAbsoluteShortDateTimePipe<D>\n extends BaseLocaleAwareFormatterPipe<D, D | string | null | undefined, [options?: DateTimeOptions]>\n implements PipeTransform\n{\n override transform(value: D | string | null | undefined, options?: DateTimeOptions): string {\n return super.transform(value, options);\n }\n\n protected format(value: D | string | null | undefined, options?: DateTimeOptions): string {\n const date = toValidDate(this.adapter, value);\n\n return date ? this.formatter.absoluteShortDateTime(date, options) : '';\n }\n}\n\n@Pipe({\n name: 'kbqRelativeLongDate',\n pure: false\n})\nexport class KbqRelativeLongDatePipe<D>\n extends BaseLocaleAwareFormatterPipe<D, D | string | null | undefined, []>\n implements PipeTransform\n{\n override transform(value: D | string | null | undefined): string {\n return super.transform(value);\n }\n\n protected format(value: D | string | null | undefined): string {\n const date = toValidDate(this.adapter, value);\n\n return date ? this.formatter.relativeLongDate(date) : '';\n }\n}\n\n@Pipe({\n name: 'kbqRelativeShortDate',\n pure: false\n})\nexport class KbqRelativeShortDatePipe<D>\n extends BaseLocaleAwareFormatterPipe<D, D | string | null | undefined, []>\n implements PipeTransform\n{\n override transform(value: D | string | null | undefined): string {\n return super.transform(value);\n }\n\n protected format(value: D | string | null | undefined): string {\n const date = toValidDate(this.adapter, value);\n\n return date ? this.formatter.relativeShortDate(date) : '';\n }\n}\n\n@Pipe({\n name: 'kbqRelativeLongDateTime',\n pure: false\n})\nexport class KbqRelativeLongDateTimePipe<D>\n extends BaseLocaleAwareFormatterPipe<D, D | string | null | undefined, [options?: DateTimeOptions]>\n implements PipeTransform\n{\n override transform(value: D | string | null | undefined, options?: DateTimeOptions): string {\n return super.transform(value, options);\n }\n\n protected format(value: D | string | null | undefined, options?: DateTimeOptions): string {\n const date = toValidDate(this.adapter, value);\n\n return date ? this.formatter.relativeLongDateTime(date, options) : '';\n }\n}\n\n@Pipe({\n name: 'kbqRelativeShortDateTime',\n pure: false\n})\nexport class KbqRelativeShortDateTimePipe<D>\n extends BaseLocaleAwareFormatterPipe<D, D | string | null | undefined, [options?: DateTimeOptions]>\n implements PipeTransform\n{\n override transform(value: D | string | null | undefined, options?: DateTimeOptions): string {\n return super.transform(value, options);\n }\n\n protected format(value: D | string | null | undefined, options?: DateTimeOptions): string {\n const date = toValidDate(this.adapter, value);\n\n return date ? this.formatter.relativeShortDateTime(date, options) : '';\n }\n}\n\n@Pipe({\n name: 'kbqRangeLongDate',\n pure: false\n})\nexport class KbqRangeLongDatePipe<D>\n extends BaseLocaleAwareFormatterPipe<D, D[] | string[] | null | undefined, []>\n implements PipeTransform\n{\n override transform(value: D[] | string[] | null | undefined): string {\n return super.transform(value);\n }\n\n protected format(value: D[] | string[] | null | undefined): string {\n const range = toOpenedRange(this.adapter, value);\n\n if (!range) return '';\n\n return this.formatter.rangeLongDate(range[0], range[1]);\n }\n}\n\n@Pipe({\n name: 'kbqRangeShortDate',\n pure: false\n})\nexport class KbqRangeShortDatePipe<D>\n extends BaseLocaleAwareFormatterPipe<D, D[] | string[] | null | undefined, []>\n implements PipeTransform\n{\n override transform(value: D[] | string[] | null | undefined): string {\n return super.transform(value);\n }\n\n protected format(value: D[] | string[] | null | undefined): string {\n const range = toOpenedRange(this.adapter, value);\n\n if (!range) return '';\n\n return this.formatter.rangeShortDate(range[0], range[1] ?? undefined);\n }\n}\n\n@Pipe({\n name: 'kbqRangeLongDateTime',\n pure: false\n})\nexport class KbqRangeLongDateTimePipe<D>\n extends BaseLocaleAwareFormatterPipe<D, D[] | string[] | null | undefined, [options?: DateTimeOptions]>\n implements PipeTransform\n{\n override transform(value: D[] | string[] | null | undefined, options?: DateTimeOptions): string {\n return super.transform(value, options);\n }\n\n protected format(value: D[] | string[] | null | undefined, options?: DateTimeOptions): string {\n const range = toOpenedRange(this.adapter, value);\n\n if (!range) return '';\n\n return this.formatter.rangeLongDateTime(range[0], range[1] ?? undefined, options);\n }\n}\n\n@Pipe({\n name: 'kbqRangeMiddleDateTime',\n pure: false\n})\nexport class KbqRangeMiddleDateTimePipe<D>\n extends BaseLocaleAwareFormatterPipe<D, D[] | string[] | null | undefined, [options?: DateTimeOptions]>\n implements PipeTransform\n{\n override transform(value: D[] | string[] | null | undefined, options?: DateTimeOptions): string {\n return super.transform(value, options);\n }\n\n protected format(value: D[] | string[] | null | undefined, options?: DateTimeOptions): string {\n // Unlike the other range formats, the middle one has no opened-range template — both bounds required.\n const range = toClosedRange(this.adapter, value);\n\n if (!range) return '';\n\n return this.formatter.rangeMiddleDateTime(range[0], range[1], options);\n }\n}\n\n@Pipe({\n name: 'kbqRangeShortDateTime',\n pure: false\n})\nexport class KbqRangeShortDateTimePipe<D>\n extends BaseLocaleAwareFormatterPipe<D, D[] | string[] | null | undefined, [options?: DateTimeOptions]>\n implements PipeTransform\n{\n override transform(value: D[] | string[] | null | undefined, options?: DateTimeOptions): string {\n return super.transform(value, options);\n }\n\n protected format(value: D[] | string[] | null | undefined, options?: DateTimeOptions): string {\n const range = toOpenedRange(this.adapter, value);\n\n if (!range) return '';\n\n return this.formatter.rangeShortDateTime(range[0], range[1], options);\n }\n}\n\n/**\n * Formats the duration between two dates as a digital-clock value, e.g. `48:02:25`.\n *\n * Takes a `[from, to]` tuple, like the range pipes. `options.seconds` defaults to `true` and\n * `options.milliseconds` to `false`; `options.currYear` is not used by this format.\n *\n * Renders an empty string when the tuple itself or one of its bounds is missing or invalid, or when\n * `from` is later than `to`.\n *\n * @example\n * ```html\n * {{ [startedAt, finishedAt] | kbqDurationShortest }}\n * {{ [startedAt, finishedAt] | kbqDurationShortest: { seconds: false } }}\n * ```\n */\n@Pipe({\n name: 'kbqDurationShortest',\n pure: false\n})\nexport class KbqDurationShortestPipe<D>\n extends BaseLocaleAwareFormatterPipe<D, D[] | string[] | null | undefined, [options?: DateTimeOptions]>\n implements PipeTransform\n{\n override transform(value: D[] | string[] | null | undefined, options?: DateTimeOptions): string {\n return super.transform(value, options);\n }\n\n protected format(value: D[] | string[] | null | undefined, options?: DateTimeOptions): string {\n const range = toDurationRange(this.adapter, value);\n\n if (!range) return '';\n\n return this.formatter.durationShortest(range[0], range[1], options?.seconds, options?.milliseconds);\n }\n}\n\n/**\n * Formats the duration between two dates in the long text format, e.g. `2 дня и 4 часа`.\n *\n * Takes a `[from, to]` tuple, like the range pipes. `units` restricts the units to show (the\n * formatter picks them automatically when omitted), `fraction` adds a fractional part for years\n * and months.\n *\n * Renders an empty string when the tuple itself or one of its bounds is missing or invalid, or when\n * `from` is later than `to`.\n *\n * @example\n * ```html\n * {{ [startedAt, finishedAt] | kbqDurationLong }}\n * {{ [startedAt, finishedAt] | kbqDurationLong: ['hours', 'minutes'] }}\n * {{ [startedAt, finishedAt] | kbqDurationLong: ['years'] : true }}\n * ```\n */\n@Pipe({\n name: 'kbqDurationLong',\n pure: false\n})\nexport class KbqDurationLongPipe<D>\n extends BaseLocaleAwareFormatterPipe<\n D,\n D[] | string[] | null | undefined,\n [units?: DurationUnit[], fraction?: boolean]\n >\n implements PipeTransform\n{\n override transform(value: D[] | string[] | null | undefined, units?: DurationUnit[], fraction?: boolean): string {\n return super.transform(value, units, fraction);\n }\n\n protected format(value: D[] | string[] | null | undefined, units?: DurationUnit[], fraction?: boolean): string {\n const range = toDurationRange(this.adapter, value);\n\n if (!range) return '';\n\n return this.formatter.durationLong(range[0], range[1], units, fraction);\n }\n}\n\n/**\n * Formats the duration between two dates in the short text format, e.g. `2 д 4 ч`.\n *\n * Takes a `[from, to]` tuple, like the range pipes. `units` restricts the units to show (the\n * formatter picks them automatically when omitted), `fraction` adds a fractional part for years\n * and months.\n *\n * Renders an empty string when the tuple itself or one of its bounds is missing or invalid, or when\n * `from` is later than `to`.\n *\n * @example\n * ```html\n * {{ [startedAt, finishedAt] | kbqDurationShort }}\n * {{ [startedAt, finishedAt] | kbqDurationShort: ['seconds', 'milliseconds'] }}\n * ```\n */\n@Pipe({\n name: 'kbqDurationShort',\n pure: false\n})\nexport class KbqDurationShortPipe<D>\n extends BaseLocaleAwareFormatterPipe<\n D,\n D[] | string[] | null | undefined,\n [units?: DurationUnit[], fraction?: boolean]\n >\n implements PipeTransform\n{\n override transform(value: D[] | string[] | null | undefined, units?: DurationUnit[], fraction?: boolean): string {\n return super.transform(value, units, fraction);\n }\n\n protected format(value: D[] | string[] | null | undefined, units?: DurationUnit[], fraction?: boolean): string {\n const range = toDurationRange(this.adapter, value);\n\n if (!range) return '';\n\n return this.formatter.durationShort(range[0], range[1], units, fraction);\n }\n}\n","import { InjectionToken, Provider } from '@angular/core';\nimport { enUSFormattersData } from '../../locales';\n\n/**\n * Available unit systems for file size formatting.\n * - SI (Metric): 1 KB = 1000 bytes\n * - IEC (Binary): 1 KiB = 1024 bytes\n */\nexport enum KbqMeasurementSystem {\n SI = 'SI',\n IEC = 'IEC'\n}\n\n/** Unit systems as union type */\nexport type KbqMeasurementSystemType = keyof typeof KbqMeasurementSystem;\n\nexport interface KbqUnitSystem {\n abbreviations: string[];\n base: number;\n power: number;\n}\n\n/**\n * Configuration for file size formatting options.\n * Defines the default unit system, precision, and available unit systems.\n */\nexport interface KbqSizeUnitsConfig {\n /**\n * Default unit system to use (e.g., 'SI' or 'IEC').\n * @see KbqMeasurementSystem\n */\n defaultUnitSystem: KbqMeasurementSystemType;\n /**\n * Default number of decimal places to display in formatted output.\n * @example\n * `2` → \"1.23 KB\"\n */\n defaultPrecision: number;\n /** @see KbqMeasurementSystem */\n unitSystems: {\n [KbqMeasurementSystem.SI]: KbqUnitSystem;\n [KbqMeasurementSystem.IEC]: KbqUnitSystem;\n };\n}\n\nexport const KBQ_SIZE_UNITS_DEFAULT_CONFIG: KbqSizeUnitsConfig = enUSFormattersData.sizeUnits;\n\n/**\n * Configuration for converting sizes in different unit systems.\n */\nexport const KBQ_SIZE_UNITS_CONFIG = new InjectionToken<KbqSizeUnitsConfig>('KbqSizeUnitsConfig');\n\n/** Utility provider for `KBQ_SIZE_UNITS_CONFIG`. */\nexport const kbqFilesizeFormatterConfigurationProvider = (configuration: Partial<KbqSizeUnitsConfig>): Provider => ({\n provide: KBQ_SIZE_UNITS_CONFIG,\n useValue: { ...KBQ_SIZE_UNITS_DEFAULT_CONFIG, ...configuration }\n});\n","import { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { Injectable, InjectionToken, Pipe, PipeTransform, inject } from '@angular/core';\nimport {\n KBQ_DEFAULT_LOCALE_ID,\n KBQ_LOCALE_ID,\n KBQ_LOCALE_SERVICE,\n KbqLocaleService,\n KbqNumberFormatOptions,\n KbqNumberRoundingLocaleConfig\n} from '../../locales';\n\nexport const KBQ_NUMBER_FORMATTER_OPTIONS = new InjectionToken<ParsedDigitsInfo>('KbqNumberFormatterOptions');\n\nexport const KBQ_NUMBER_FORMATTER_DEFAULT_OPTIONS: ParsedDigitsInfo = {\n useGrouping: true,\n minimumIntegerDigits: 1,\n minimumFractionDigits: 0,\n maximumFractionDigits: 3\n};\n\n/** Formats a number value according to locale and formatting options */\nexport function formatNumberWithLocale(\n value: unknown,\n formatter: Intl.NumberFormat,\n options?: KbqNumberFormatOptions\n): string {\n const num = strToNumber(value);\n\n if (!options?.viewGroupSeparator) return formatter.format(num);\n\n const numberFormatParts = formatter.formatToParts(num);\n\n for (const numberFormatPart of numberFormatParts) {\n if (numberFormatPart.type === 'group') {\n numberFormatPart.value = options.viewGroupSeparator;\n }\n }\n\n return numberFormatParts.map(({ value }) => value).join('');\n}\n\n/**\n * Special contract between `KbqDecimalPipe` and `KbqTableNumberPipe`,\n * so they can be interchangeable in the cases of usage\n */\nexport interface KbqNumericPipe {\n transform(value: unknown, digitsInfo?: string, locale?: string): string | null;\n}\n\nfunction isEmpty(value: any): boolean {\n return value == null || value === '' || value !== value;\n}\n\nfunction strToNumber(value: unknown): number {\n const coerced = coerceNumberProperty(value, null);\n\n if (coerced === null) {\n throw new Error(`${value} is not a number`);\n }\n\n return coerced;\n}\n\nexport const NUMBER_FORMAT_REGEXP = /^(\\d+)?\\.((\\d+)(-(\\d+))?(-(true|false))?)?$/;\n\nconst minIntGroupPosition = 1;\nconst minFractionGroupPosition = 3;\nconst maxFractionGroupPosition = 5;\nconst useGroupingPosition = 7;\n\ntype RoundDecimalOptions = KbqNumberRoundingLocaleConfig & {\n /** Label for the ten-thousand unit. */\n tenThousand?: string;\n /** Label for the one-hundred-millions unit. */\n oneHundredMillions?: string;\n rtl?: boolean;\n};\n\nconst ROUNDING_UNITS = {\n thousand: 1e3,\n tenThousand: 10 * 1e3,\n million: 1e6,\n oneHundredMillions: 100 * 1e6,\n billion: 1e9,\n trillion: 1e12\n};\n\n/** Rounding units that carry a localized label in `KbqNumberRoundingLocaleConfig`. */\ntype RoundingUnit = keyof RoundDecimalOptions & keyof typeof ROUNDING_UNITS;\n\nconst intervalsConfig = {\n supportedLanguages: ['ru-RU', 'en-US', 'es-LA', 'pt-BR'],\n intervals: [\n { startRange: 1, endRange: ROUNDING_UNITS.thousand },\n { startRange: ROUNDING_UNITS.thousand, endRange: ROUNDING_UNITS.tenThousand, precision: 1 },\n { startRange: ROUNDING_UNITS.tenThousand, endRange: ROUNDING_UNITS.million },\n { startRange: ROUNDING_UNITS.million, endRange: ROUNDING_UNITS.million * 10, precision: 1 },\n { startRange: ROUNDING_UNITS.million * 10, endRange: ROUNDING_UNITS.billion }\n ]\n};\n\nclass ParsedDigitsInfo {\n useGrouping: boolean;\n minimumIntegerDigits: number;\n minimumFractionDigits: number;\n maximumFractionDigits: number;\n}\n\nconst defaultValueForGroupingInRULocale: number = 10000;\n\nfunction parseDigitsInfo(digitsInfo: string): ParsedDigitsInfo {\n const parts = digitsInfo.match(NUMBER_FORMAT_REGEXP);\n\n if (parts === null) {\n throw new Error(`${digitsInfo} is not a valid digit info`);\n }\n\n const minIntPart = parts[minIntGroupPosition];\n const minFractionPart = parts[minFractionGroupPosition];\n const maxFractionPart = parts[maxFractionGroupPosition];\n const useGroupingPart = parts[useGroupingPosition];\n\n const result = new ParsedDigitsInfo();\n\n if (minIntPart != null) {\n result.minimumIntegerDigits = parseInt(minIntPart);\n }\n\n if (minFractionPart != null) {\n result.minimumFractionDigits = parseInt(minFractionPart);\n }\n\n if (maxFractionPart != null) {\n result.maximumFractionDigits = parseInt(maxFractionPart);\n } else if (minFractionPart != null && result.minimumFractionDigits > result.maximumFractionDigits) {\n result.maximumFractionDigits = result.minimumFractionDigits;\n }\n\n if (useGroupingPart != null) {\n result.useGrouping = useGroupingPart === 'true';\n }\n\n return result;\n}\n\n@Injectable({ providedIn: 'root' })\n@Pipe({\n name: 'kbqNumber',\n pure: false\n})\nexport class KbqDecimalPipe implements KbqNumericPipe, PipeTransform {\n private id = inject(KBQ_LOCALE_ID, { optional: true });\n private localeService = inject<KbqLocaleService>(KBQ_LOCALE_SERVICE, { optional: true });\n private readonly options = inject<ParsedDigitsInfo>(KBQ_NUMBER_FORMATTER_OPTIONS, { optional: true })!;\n constructor() {\n this.options = this.options || KBQ_NUMBER_FORMATTER_DEFAULT_OPTIONS;\n\n this.localeService?.changes.subscribe((newId: string) => (this.id = newId));\n }\n\n /**\n * @param value The number to be formatted.\n * @param digitsInfo Decimal representation options, specified by a string\n * in the following format:<br>\n * <code>{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}</code>.\n * - `minIntegerDigits`: The minimum number of integer digits before the decimal point.\n * Default is `1`.\n * - `minFractionDigits`: The minimum number of digits after the decimal point.\n * Default is `0`.\n * - `maxFractionDigits`: The maximum number of digits after the decimal point.\n * Default is `3`.\n * @param locale A locale code for the locale format rules to use.\n * When not supplied, uses the value of `KBQ_LOCALE_ID`, which is `ru` by default.\n */\n transform(value: any, digitsInfo?: string, locale?: string): string | null {\n if (isEmpty(value)) {\n return null;\n }\n\n const currentLocale = locale || this.id || KBQ_DEFAULT_LOCALE_ID;\n\n let parsedDigitsInfo: ParsedDigitsInfo | undefined;\n\n if (digitsInfo) {\n parsedDigitsInfo = parseDigitsInfo(digitsInfo);\n }\n\n const options: Intl.NumberFormatOptions = {\n ...this.options,\n ...parsedDigitsInfo\n };\n\n if (this.isSpecialFormatForRULocale(currentLocale, value, parsedDigitsInfo?.useGrouping)) {\n options.useGrouping = false;\n }\n\n try {\n const formatter = new Intl.NumberFormat(currentLocale, options);\n\n return formatNumberWithLocale(\n value,\n formatter,\n this.localeService?.locales[currentLocale]?.formatters.number.decimal\n );\n } catch (error: any) {\n throw Error(`InvalidPipeArgument: KbqDecimalPipe for pipe '${JSON.stringify(error.message)}'`);\n }\n }\n\n isSpecialFormatForRULocale(locale: string, value: number, grouping?: boolean): boolean {\n return (\n ['ru', 'ru-RU'].includes(locale) &&\n grouping === undefined &&\n Math.abs(value) < defaultValueForGroupingInRULocale\n );\n }\n}\n\n@Injectable({ providedIn: 'root' })\n@Pipe({\n name: 'kbqTableNumber',\n pure: false\n})\nexport class KbqTableNumberPipe implements KbqNumericPipe, PipeTransform {\n private id = inject(KBQ_LOCALE_ID, { optional: true });\n private localeService = inject<KbqLocaleService>(KBQ_LOCALE_SERVICE, { optional: true });\n private readonly options = inject<ParsedDigitsInfo>(KBQ_NUMBER_FORMATTER_OPTIONS, { optional: true })!;\n constructor() {\n this.options = this.options || KBQ_NUMBER_FORMATTER_DEFAULT_OPTIONS;\n\n this.localeService?.changes.subscribe((newId: string) => (this.id = newId));\n }\n\n /**\n * @param value The number to be formatted.\n * @param digitsInfo Decimal representation options, specified by a string\n * in the following format:<br>\n * <code>{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}</code>.\n * - `minIntegerDigits`: The minimum number of integer digits before the decimal point.\n * Default is `1`.\n * - `minFractionDigits`: The minimum number of digits after the decimal point.\n * Default is `0`.\n * - `maxFractionDigits`: The maximum number of digits after the decimal point.\n * Default is `3`.\n * @param locale A locale code for the locale format rules to use.\n * When not supplied, uses the value of `KBQ_LOCALE_ID`, which is `ru` by default.\n */\n transform(value: any, digitsInfo?: string, locale?: string): string | null {\n if (isEmpty(value)) {\n return null;\n }\n\n const currentLocale = locale || this.id || KBQ_DEFAULT_LOCALE_ID;\n\n let parsedDigitsInfo: ParsedDigitsInfo | undefined;\n\n if (digitsInfo) {\n parsedDigitsInfo = parseDigitsInfo(digitsInfo);\n }\n\n const options: Intl.NumberFormatOptions = {\n ...this.options,\n ...parsedDigitsInfo\n };\n\n try {\n const formatter = new Intl.NumberFormat(currentLocale, options);\n\n return formatNumberWithLocale(\n value,\n formatter,\n this.localeService?.locales[currentLocale]?.formatters.number.decimal\n );\n } catch (error: any) {\n throw Error(`InvalidPipeArgument: KbqTableNumberPipe for pipe '${JSON.stringify(error.message)}'`);\n }\n }\n}\n\nexport function isWithin(startRange: number, endRange: number, valueToCheck: number): boolean {\n return startRange <= valueToCheck && valueToCheck < endRange;\n}\n\n@Injectable({ providedIn: 'root' })\n@Pipe({\n name: 'kbqRoundNumber',\n pure: false\n})\nexport class KbqRoundDecimalPipe implements PipeTransform {\n private id = inject(KBQ_LOCALE_ID, { optional: true });\n private localeService = inject<KbqLocaleService>(KBQ_LOCALE_SERVICE, { optional: true });\n roundingOptions: RoundDecimalOptions;\n\n constructor() {\n this.localeService?.changes.subscribe((newId: string) => (this.id = newId));\n }\n\n // @TODO: update returned type to string | null. Breaking change\n transform(value: any, locale?: string): any {\n if (isEmpty(value)) {\n return null;\n }\n\n const currentLocale: string = locale || this.id || KBQ_DEFAULT_LOCALE_ID;\n\n this.roundingOptions = this.localeService?.locales[currentLocale].formatters.number.rounding;\n\n try {\n const num = strToNumber(value);\n const unit = this.calculateUnit(num);\n\n if (!unit) {\n return Intl.NumberFormat.call(this, currentLocale, { useGrouping: false }).format(num);\n }\n\n let parts: { num?: number; fraction?: number } = {};\n\n if (intervalsConfig.supportedLanguages.includes(currentLocale)) {\n intervalsConfig.intervals.find(({ startRange, endRange, precision }) => {\n const within = isWithin(startRange, endRange, num);\n\n if (within) {\n if (precision) {\n parts =\n unit === 'thousand'\n ? this.calculatePartsForThousands(num)\n : {\n num: Math.trunc(num / ROUNDING_UNITS[unit]),\n fraction: this.calculateDecimal(num, ROUNDING_UNITS[unit])\n };\n } else {\n parts = { num: Math.round(num / ROUNDING_UNITS[unit]) };\n }\n }\n\n return within;\n });\n }\n\n parts = parts.num\n ? parts\n : {\n num: Math.trunc(num / ROUNDING_UNITS[unit]),\n fraction: this.calculateDecimal(num, ROUNDING_UNITS[unit])\n };\n Object.keys(parts).forEach((key) => {\n parts[key] = Intl.NumberFormat.call(this, currentLocale, { useGrouping: false }).format(parts[key]);\n });\n\n const calculatedValue = parts.fraction\n ? `${parts.num}${this.roundingOptions.groupSeparator}${parts.fraction}`\n : `${parts.num}`;\n\n return `${calculatedValue}${this.roundingOptions.separator}${this.roundingOptions[unit]}`;\n } catch (error: any) {\n throw Error(`InvalidPipeArgument: KbqRoundDecimalPipe for pipe '${JSON.stringify(error.message)}'`);\n }\n }\n\n private calculateDecimal(num: number, divider: number) {\n return Math.round(((num / divider) % 1) * 10);\n }\n\n /**\n * 2 * 1000 is a number in the interval of [1500...2500)\n *\n * 2,0 * 1000 is a number in the interval of [1950...2050)\n */\n private calculatePartsForThousands(num: number) {\n const dividedValue = num / ROUNDING_UNITS.thousand;\n const div = Math.round(dividedValue) * ROUNDING_UNITS.thousand;\n const fifty = 50;\n\n return isWithin(div - fifty, div + fifty, num)\n ? { num: Math.round(dividedValue), fraction: 0 }\n : { num: Math.round(dividedValue) };\n }\n\n private calculateUnit(num: number): RoundingUnit | undefined {\n let currentUnit: RoundingUnit | undefined;\n const localizedOptions = Object.keys(this.roundingOptions);\n\n (Object.keys(ROUNDING_UNITS) as RoundingUnit[]).every((key) => {\n if (!localizedOptions.includes(key)) {\n return true;\n }\n\n if (num / ROUNDING_UNITS[key] >= 1) {\n currentUnit = key;\n\n return true;\n }\n\n return false;\n });\n\n return currentUnit;\n }\n}\n","import { KbqUnitSystem } from './config';\n\nexport const KBQ_INVALID_VALUE_ERROR = 'Argument \"value\" must be a finite number!';\n\n/**\n * Converts a byte value into locale-independent file size parts: numeric value and unit abbreviation.\n *\n * @param value - size in bytes.\n * @param system - unit system defining abbreviations and base scaling (SI/IEC).\n * @returns Object with the formatted size info.\n *\n * @example\n * getFormattedSizeParts(1500, 'SI'); // { value: \"1.50\", unit: \"KB\" }\n */\nexport function getFormattedSizeParts(value: number, system: KbqUnitSystem): { value: string; unit: string } {\n const { result, unit } = getHumanizedBytes(value, system);\n\n return {\n value: result.toString(),\n unit\n };\n}\n\n/**\n * Converts bytes to Kb, Mb, Gb\n *\n * @param value the number of bytes\n * @param system the measurement system\n * @param threshold the lower counting threshold\n */\nexport const getHumanizedBytes = (\n value: number,\n system: KbqUnitSystem,\n threshold?: number\n): { result: number; unit: string } => {\n if (!Number.isFinite(value)) {\n throw new Error(KBQ_INVALID_VALUE_ERROR);\n }\n\n const calculatedThreshold = Number.isFinite(threshold) ? threshold : Math.pow(system.base, system.power);\n const orderOfMagnitude: number = Math.pow(system.base, system.power);\n\n let result: number = value;\n let step = 0;\n const len: number = system.abbreviations.length - 1;\n\n while (step < len) {\n if (calculatedThreshold !== undefined && result < calculatedThreshold) {\n break;\n }\n\n step++;\n result = value / Math.pow(orderOfMagnitude, step);\n }\n\n return {\n result,\n unit: system.abbreviations[step]\n };\n};\n","import { inject, Pipe, PipeTransform } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KBQ_DEFAULT_LOCALE_ID, KBQ_LOCALE_SERVICE } from '../../locales';\nimport { KbqDecimalPipe } from '../number/formatter';\nimport {\n KBQ_SIZE_UNITS_CONFIG,\n KBQ_SIZE_UNITS_DEFAULT_CONFIG,\n KbqMeasurementSystem,\n KbqMeasurementSystemType,\n KbqSizeUnitsConfig,\n KbqUnitSystem\n} from './config';\nimport { getFormattedSizeParts } from './size';\n\n@Pipe({\n name: 'kbqDataSize',\n pure: false\n})\nexport class KbqDataSizePipe implements PipeTransform {\n /** Injects the external configuration for size units, if available. */\n readonly externalConfig = inject(KBQ_SIZE_UNITS_CONFIG, { optional: true });\n\n private readonly localeService = inject(KBQ_LOCALE_SERVICE, { optional: true });\n private readonly numberPipe = inject(KbqDecimalPipe, { optional: true });\n private readonly nonBreakingSpace = '\\u00a0';\n private config: KbqSizeUnitsConfig;\n\n constructor() {\n this.localeService?.changes.pipe(takeUntilDestroyed()).subscribe(this.updateLocaleParams);\n\n if (!this.localeService) {\n this.config = this.externalConfig || KBQ_SIZE_UNITS_DEFAULT_CONFIG;\n }\n }\n\n /** Transforms bytes into localized size string */\n transform(\n source: number,\n precision: number = this.config.defaultPrecision,\n unitSystemName: KbqMeasurementSystemType = this.config.defaultUnitSystem,\n locale: string = this.localeService?.id || KBQ_DEFAULT_LOCALE_ID\n ): string {\n const resolvedUnitSystems: Record<KbqMeasurementSystem, KbqUnitSystem> = this.localeService\n ? this.localeService.locales[locale].sizeUnits.unitSystems\n : this.config.unitSystems;\n\n const { value, unit } = getFormattedSizeParts(source, resolvedUnitSystems[unitSystemName]);\n\n const formattedValue = this.numberPipe?.transform(value, `1.0-${precision}`, locale) || value;\n\n return formattedValue ? `${formattedValue}${this.nonBreakingSpace}${unit}` : '';\n }\n\n private updateLocaleParams = () => {\n this.config = this.externalConfig || this.localeService?.getParams('sizeUnits');\n };\n}\n","import { NgModule } from '@angular/core';\nimport { DateFormatter } from './date/formatter';\nimport {\n AbsoluteDateFormatterImpurePipe,\n AbsoluteDateFormatterPipe,\n AbsoluteDateShortFormatterImpurePipe,\n AbsoluteDateShortFormatterPipe,\n AbsoluteDateTimeFormatterImpurePipe,\n AbsoluteDateTimeFormatterPipe,\n AbsoluteShortDateTimeFormatterImpurePipe,\n AbsoluteShortDateTimeFormatterPipe,\n DurationLongFormatterImpurePipe,\n DurationLongFormatterPipe,\n DurationShortestFormatterImpurePipe,\n DurationShortestFormatterPipe,\n DurationShortFormatterImpurePipe,\n DurationShortFormatterPipe,\n KbqAbsoluteLongDatePipe,\n KbqAbsoluteLongDateTimePipe,\n KbqAbsoluteShortDatePipe,\n KbqAbsoluteShortDateTimePipe,\n KbqDurationLongPipe,\n KbqDurationShortestPipe,\n KbqDurationShortPipe,\n KbqRangeLongDatePipe,\n KbqRangeLongDateTimePipe,\n KbqRangeMiddleDateTimePipe,\n KbqRangeShortDatePipe,\n KbqRangeShortDateTimePipe,\n KbqRelativeLongDatePipe,\n KbqRelativeLongDateTimePipe,\n KbqRelativeShortDatePipe,\n KbqRelativeShortDateTimePipe,\n RangeDateFormatterImpurePipe,\n RangeDateFormatterPipe,\n RangeDateTimeFormatterImpurePipe,\n RangeDateTimeFormatterPipe,\n RangeMiddleDateTimeFormatterImpurePipe,\n RangeMiddleDateTimeFormatterPipe,\n RangeShortDateFormatterImpurePipe,\n RangeShortDateFormatterPipe,\n RangeShortDateTimeFormatterImpurePipe,\n RangeShortDateTimeFormatterPipe,\n RelativeDateFormatterImpurePipe,\n RelativeDateFormatterPipe,\n RelativeDateTimeFormatterImpurePipe,\n RelativeDateTimeFormatterPipe,\n RelativeShortDateFormatterImpurePipe,\n RelativeShortDateFormatterPipe,\n RelativeShortDateTimeFormatterImpurePipe,\n RelativeShortDateTimeFormatterPipe\n} from './date/formatter.pipe';\nimport { KbqDataSizePipe } from './filesize';\nimport { KbqDecimalPipe, KbqRoundDecimalPipe, KbqTableNumberPipe } from './number/formatter';\n\n@NgModule({\n imports: [\n AbsoluteDateFormatterPipe,\n AbsoluteDateTimeFormatterPipe,\n AbsoluteDateShortFormatterPipe,\n AbsoluteShortDateTimeFormatterPipe,\n RelativeDateFormatterPipe,\n RelativeDateTimeFormatterPipe,\n RelativeShortDateFormatterPipe,\n RelativeShortDateTimeFormatterPipe,\n RangeDateFormatterPipe,\n RangeShortDateFormatterPipe,\n RangeDateTimeFormatterPipe,\n RangeShortDateTimeFormatterPipe,\n RangeMiddleDateTimeFormatterPipe,\n DurationShortestFormatterPipe,\n DurationLongFormatterPipe,\n DurationShortFormatterPipe,\n AbsoluteDateFormatterImpurePipe,\n AbsoluteDateTimeFormatterImpurePipe,\n AbsoluteDateShortFormatterImpurePipe,\n AbsoluteShortDateTimeFormatterImpurePipe,\n RelativeDateFormatterImpurePipe,\n RelativeDateTimeFormatterImpurePipe,\n RelativeShortDateFormatterImpurePipe,\n RelativeShortDateTimeFormatterImpurePipe,\n RangeDateFormatterImpurePipe,\n RangeShortDateFormatterImpurePipe,\n RangeDateTimeFormatterImpurePipe,\n RangeShortDateTimeFormatterImpurePipe,\n RangeMiddleDateTimeFormatterImpurePipe,\n DurationShortestFormatterImpurePipe,\n DurationLongFormatterImpurePipe,\n DurationShortFormatterImpurePipe,\n KbqAbsoluteLongDatePipe,\n KbqAbsoluteLongDateTimePipe,\n KbqAbsoluteShortDatePipe,\n KbqAbsoluteShortDateTimePipe,\n KbqRelativeLongDatePipe,\n KbqRelativeLongDateTimePipe,\n KbqRelativeShortDatePipe,\n KbqRelativeShortDateTimePipe,\n KbqRangeLongDatePipe,\n KbqRangeLongDateTimePipe,\n KbqRangeMiddleDateTimePipe,\n KbqRangeShortDatePipe,\n KbqRangeShortDateTimePipe,\n KbqDurationShortestPipe,\n KbqDurationLongPipe,\n KbqDurationShortPipe,\n KbqDataSizePipe,\n KbqDecimalPipe,\n KbqRoundDecimalPipe,\n KbqTableNumberPipe\n ],\n providers: [DateFormatter],\n exports: [\n KbqDecimalPipe,\n KbqRoundDecimalPipe,\n KbqTableNumberPipe,\n AbsoluteDateFormatterPipe,\n AbsoluteDateTimeFormatterPipe,\n AbsoluteDateShortFormatterPipe,\n AbsoluteShortDateTimeFormatterPipe,\n RelativeDateFormatterPipe,\n RelativeDateTimeFormatterPipe,\n RelativeShortDateFormatterPipe,\n RelativeShortDateTimeFormatterPipe,\n RangeDateFormatterPipe,\n RangeShortDateFormatterPipe,\n RangeDateTimeFormatterPipe,\n RangeShortDateTimeFormatterPipe,\n RangeMiddleDateTimeFormatterPipe,\n DurationShortestFormatterPipe,\n DurationLongFormatterPipe,\n DurationShortFormatterPipe,\n AbsoluteDateFormatterImpurePipe,\n AbsoluteDateTimeFormatterImpurePipe,\n AbsoluteDateShortFormatterImpurePipe,\n AbsoluteShortDateTimeFormatterImpurePipe,\n RelativeDateFormatterImpurePipe,\n RelativeDateTimeFormatterImpurePipe,\n RelativeShortDateFormatterImpurePipe,\n RelativeShortDateTimeFormatterImpurePipe,\n RangeDateFormatterImpurePipe,\n RangeShortDateFormatterImpurePipe,\n RangeDateTimeFormatterImpurePipe,\n RangeShortDateTimeFormatterImpurePipe,\n RangeMiddleDateTimeFormatterImpurePipe,\n DurationShortestFormatterImpurePipe,\n DurationLongFormatterImpurePipe,\n DurationShortFormatterImpurePipe,\n KbqAbsoluteLongDatePipe,\n KbqAbsoluteLongDateTimePipe,\n KbqAbsoluteShortDatePipe,\n KbqAbsoluteShortDateTimePipe,\n KbqRelativeLongDatePipe,\n KbqRelativeLongDateTimePipe,\n KbqRelativeShortDatePipe,\n KbqRelativeShortDateTimePipe,\n KbqRangeLongDatePipe,\n KbqRangeLongDateTimePipe,\n KbqRangeMiddleDateTimePipe,\n KbqRangeShortDatePipe,\n KbqRangeShortDateTimePipe,\n KbqDurationShortestPipe,\n KbqDurationLongPipe,\n KbqDurationShortPipe,\n KbqDataSizePipe\n ]\n})\nexport class KbqFormattersModule {}\n\nexport * from './date/formatter';\nexport * from './date/formatter.pipe';\nexport * from './filesize/index';\nexport * from './number/formatter';\n","import { AfterContentInit, Directive, ElementRef, contentChildren, inject } from '@angular/core';\n\n@Directive({\n selector: '.kbq-form__row, .kbq-form__fieldset, .kbq-form__legend',\n host: {\n '[class.kbq-form-row_margin]': 'margin'\n },\n exportAs: 'kbqFormElement'\n})\nexport class KbqFormElement implements AfterContentInit {\n private readonly element = inject<ElementRef<HTMLElement>>(ElementRef);\n\n margin = false;\n\n isRow = false;\n isFieldSet = false;\n hasLegend = false;\n isHorizontal = false;\n\n readonly elements = contentChildren(KbqFormElement);\n\n ngAfterContentInit(): void {\n const classList = this.element.nativeElement.classList;\n\n this.isRow = classList.contains('kbq-form__row');\n this.isHorizontal = classList.contains('kbq-horizontal');\n\n this.isFieldSet = classList.contains('kbq-form__fieldset');\n\n if (this.isFieldSet && this.element.nativeElement.firstElementChild) {\n this.hasLegend = this.element.nativeElement.firstElementChild.classList.contains('kbq-form__legend');\n }\n }\n}\n\n@Directive({\n selector: '.kbq-form-vertical, .kbq-form-horizontal',\n host: {\n class: 'kbq-form'\n },\n exportAs: 'kbqForm'\n})\nexport class KbqForm implements AfterContentInit {\n readonly elements = contentChildren(KbqFormElement);\n\n ngAfterContentInit(): void {\n this.handleElements(this.elements());\n }\n\n handleElements(elements: readonly KbqFormElement[]): void {\n elements.forEach((element, index) => {\n const nextElement: KbqFormElement | undefined = elements[index + 1];\n\n if (element.isFieldSet && !element.isHorizontal) {\n this.handleElements(element.elements());\n }\n\n element.margin = !!(nextElement && !nextElement.hasLegend);\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { KbqForm, KbqFormElement } from './forms.directive';\n\n@NgModule({\n imports: [\n KbqForm,\n KbqFormElement\n ],\n exports: [\n KbqForm,\n KbqFormElement\n ]\n})\nexport class KbqFormsModule {}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\n/** Provides a set of validators for password form controls. */\nexport class PasswordValidators {\n /**\n * Validator that requires the control's value length to be at least `min` characters.\n *\n * `min` - number of characters.\n *\n * ## Usage:\n *\n * ```typescript\n * const control = new FormControl('password', PasswordValidators.minLength(10));\n * console.log(control.errors); // {minLength: {min: 10, actual: 8}}\n * ```\n */\n static minLength(min: number): ValidatorFn {\n return ({ value }: AbstractControl): ValidationErrors | null => {\n if (typeof value !== 'string') {\n return null;\n }\n\n return value.length >= min ? null : { minLength: { min, actual: value.length } };\n };\n }\n\n /**\n * Validator that requires the control's value length to be at most `max` characters.\n *\n * `max` - number of characters.\n *\n * ## Usage:\n * ```typescript\n * const control = new FormControl('password', PasswordValidators.maxLength(6));\n * console.log(control.errors); // {maxLength: {max: 6, actual: 8}}\n * ```\n */\n static maxLength(max: number): ValidatorFn {\n return ({ value }: AbstractControl): ValidationErrors | null => {\n if (typeof value !== 'string') {\n return null;\n }\n\n return value.length <= max ? null : { maxLength: { max, actual: value.length } };\n };\n }\n\n /**\n * Validator that requires the control's value to be at least `min` uppercase characters.\n *\n * `min` - number of uppercase characters.\n *\n * ### Usage:\n *\n * ```typescript\n * const control = new FormControl('Password', PasswordValidators.minUppercase(2));\n * console.log(control.errors); // {minUppercase: {min: 2, actual: 1}}\n * ```\n */\n static minUppercase(min: number): ValidatorFn {\n return ({ value }: AbstractControl): ValidationErrors | null => {\n if (typeof value !== 'string') {\n return null;\n }\n\n const matches = (value.match(/[A-Z]/g) || []).length;\n\n return matches >= min ? null : { minUppercase: { min, actual: matches } };\n };\n }\n\n /**\n * Validator that requires the control's value to be at least `min` lowercase characters.\n *\n * `min` - number of lowercase characters.\n *\n * ### Usage:\n *\n * ```typescript\n * const control = new FormControl('PASSWORD', PasswordValidators.minLowercase());\n * console.log(control.errors); // {minLowercase: {min: 1, actual: 0}}\n * ```\n */\n static minLowercase(min: number): ValidatorFn {\n return ({ value }: AbstractControl): ValidationErrors | null => {\n if (typeof value !== 'string') {\n return null;\n }\n\n const matches = (value.match(/[a-z]/g) || []).length;\n\n return matches >= min ? null : { minLowercase: { min, actual: matches } };\n };\n }\n\n /**\n * Validator that requires the control's value to be at least `min` number characters.\n *\n * `min` - number of number characters.\n *\n * ### Usage:\n *\n * ```typescript\n * const control = new FormControl('passw0rd', PasswordValidators.minNumber(2));\n * console.log(control.errors); // {minNumber: {min: 2, actual: 1}}\n * ```\n */\n static minNumber(min: number): ValidatorFn {\n return ({ value }: AbstractControl): ValidationErrors | null => {\n if (typeof value !== 'string') {\n return null;\n }\n\n const matches = (value.match(/[\\d]/g) || []).length;\n\n return matches >= min ? null : { minNumber: { min, actual: matches } };\n };\n }\n\n /**\n * Validator that requires the control's value to be at least `min` special characters.\n *\n * `min` - number of special characters.\n *\n * ### Special characters:\n * ```js\n * ['!','@','#','$','%','^','&','*']\n * ```\n *\n * ### Usage:\n *\n * ```typescript\n * const control = new FormControl('pa$sword', PasswordValidators.minSpecial(2));\n * console.log(control.errors); // {minSpecial: {min: 2, actual: 1}}\n * ```\n */\n static minSpecial(min: number): ValidatorFn {\n return ({ value }: AbstractControl): ValidationErrors | null => {\n if (typeof value !== 'string') {\n return null;\n }\n\n const matches = (value.match(/[!@#$%^&*]/g) || []).length;\n\n return matches >= min ? null : { minSpecial: { min, actual: matches } };\n };\n }\n}\n\n/** Provides a set of validators for file-related form controls. */\nexport class FileValidators {\n /**\n * Validator that checks if the file size is less than or equal to the provided `maxSize`.\n *\n * @param maxSize - The maximum allowed file size in bytes.\n *\n * @returns A ValidatorFn function that checks the file size.\n *\n * ## Usage:\n *\n * ```typescript\n * const control = new FormControl(null, [FileValidators.maxFileSize(1024 * 1024)]); // 1MB\n * control.setValue(FILE_LESS_OR_EQUAL_THAN_1MB);\n * console.log(control.errors); // null\n * control.setValue(FILE_MORE_THAN_1MB);\n * console.log(control.errors); // {maxFileSize: { max: 1048576, actual: FILE_MORE_THAN_1MB.size }}\n * ```\n */\n static maxFileSize(maxSize: number): ValidatorFn {\n return ({ value }: AbstractControl): ValidationErrors | null => {\n if (!value) return null;\n\n const size = value instanceof File ? value.size : value.file.size;\n\n if (size > maxSize) {\n return { maxFileSize: { max: maxSize, actual: size } };\n }\n\n return null;\n };\n }\n\n /**\n * Validator that checks whether file's name or MIME type\n * matches one of the accepted extensions or MIME types.\n *\n * @param accept - Array of allowed file extensions or MIME types.\n * @returns ValidatorFn that returns validation error if file type is not accepted, or null otherwise.\n */\n static isCorrectExtension(accept: (`.${string}` | `${string}/${string}`)[]): ValidatorFn {\n return (control: AbstractControl<{ file: File } | null>): ValidationErrors | null => {\n if (!accept?.length || !control.value) return null;\n const { name, type } = control.value.file;\n\n const isValid = accept.some((acceptedExtensionOrMimeType) => {\n const typeAsRegExp = new RegExp(`${acceptedExtensionOrMimeType}$`);\n\n return typeAsRegExp.test(name) || typeAsRegExp.test(type);\n });\n\n return isValid ? null : { fileExtensionMismatch: { expected: accept, actual: name } };\n };\n }\n}\n\n/**\n * Type helper describing accepted file types, referring to:\n * @link https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/input/file#unique_file_type_specifiers\n */\nexport type KbqFileTypeSpecifier = Parameters<typeof FileValidators.isCorrectExtension>[0];\n","/** Unicode combining marks left behind by NFKD decomposition of accented characters, e.g. `é` → `e` + U+0301. */\nconst COMBINING_MARKS = /[̀-ͯ]/g;\n\n/**\n * `й`/`Й` decompose under NFKD into `и`/`И` + a combining breve, same as any other diacritic. Unlike\n * Latin diacritics, that breve marks a distinct Cyrillic letter rather than an accented variant, so it's\n * re-composed after the generic strip instead of being folded away with the rest.\n */\nconst CYRILLIC_I_BREVE = /[иИ]̆/g;\n\n/** The transformation behind {@link normalizeSearchValue}, minus the end-trimming — see {@link findSearchMatchRanges}. */\nfunction foldDiacritics(value: string): string {\n return value\n .normalize('NFKD')\n .replace(CYRILLIC_I_BREVE, (match) => (match[0] === 'И' ? 'Й' : 'й'))\n .replace(COMBINING_MARKS, '')\n .toLocaleLowerCase();\n}\n\n/**\n * Normalizes a string for case- and diacritic-insensitive search comparison: trims the ends,\n * decomposes accented characters (NFKD), strips the resulting combining marks (while preserving\n * `й`/`Й` as distinct letters), and lowercases using the current locale. Internal whitespace and\n * punctuation are left untouched.\n */\nexport function normalizeSearchValue(value: string): string {\n if (typeof value !== 'string' || !value) return '';\n\n return foldDiacritics(value.trim());\n}\n\n/**\n * Locates every case- and diacritic-insensitive match of `tokens` in `value`, returning `[start, end)`\n * ranges in `value`'s own (unfolded) coordinates — overlapping or adjacent ranges are merged. This is\n * what a highlighter needs to stay in sync with {@link createSearchPredicate}: matching a folded value\n * like `cafe` against `Café` only tells you *that* it matched, not *where* in the original string to\n * mark, since folding can change which letters look alike without changing the string's length.\n */\nexport function findSearchMatchRanges(value: string, tokens: readonly string[]): Array<[number, number]> {\n const normalizedTokens = tokens.map(normalizeSearchValue).filter((token) => token.length > 0);\n\n if (typeof value !== 'string' || !normalizedTokens.length) return [];\n\n // Folding is applied one UTF-16 code unit at a time so every character of the normalized value can be\n // traced back to the original index it came from — this is what makes mapping a match's position back\n // onto `value` possible. Surrogate pairs are folded as two independent units; neither combining-mark\n // stripping nor case-folding depends on cross-surrogate context, so this doesn't affect correctness.\n let normalizedValue = '';\n const originalIndexOf: number[] = [];\n\n for (let index = 0; index < value.length; index++) {\n const folded = foldDiacritics(value[index]);\n\n normalizedValue += folded;\n\n for (let i = 0; i < folded.length; i++) originalIndexOf.push(index);\n }\n\n const ranges: Array<[number, number]> = [];\n\n for (const token of normalizedTokens) {\n let fromIndex = 0;\n let matchIndex: number;\n\n while ((matchIndex = normalizedValue.indexOf(token, fromIndex)) !== -1) {\n ranges.push([originalIndexOf[matchIndex], originalIndexOf[matchIndex + token.length - 1] + 1]);\n fromIndex = matchIndex + token.length;\n }\n }\n\n return mergeRanges(ranges);\n}\n\nfunction mergeRanges(ranges: Array<[number, number]>): Array<[number, number]> {\n if (ranges.length < 2) return ranges;\n\n const sorted = [...ranges].sort(([aStart, aEnd], [bStart, bEnd]) => aStart - bStart || aEnd - bEnd);\n const merged: Array<[number, number]> = [sorted[0]];\n\n for (const [start, end] of sorted.slice(1)) {\n const last = merged[merged.length - 1];\n\n if (start <= last[1]) {\n last[1] = Math.max(last[1], end);\n } else {\n merged.push([start, end]);\n }\n }\n\n return merged;\n}\n\nconst SEARCH_QUERY_TOKEN = /\"([^\"]*)\"|(\\S+)/g;\n\n/**\n * Splits a raw query into tokens, treating whitespace as a separator and `\"quoted phrases\"` as\n * a single token (spaces inside the quotes are preserved). A `\"` with no matching closing quote\n * stays part of its token instead of being dropped, so a half-open quote yields a token no\n * realistic haystack contains — and therefore no results — until the quote is closed.\n */\nexport function tokenizeSearchQuery(query: string): string[] {\n if (typeof query !== 'string' || !query.trim()) return [];\n\n const tokens: string[] = [];\n\n for (const match of query.matchAll(SEARCH_QUERY_TOKEN)) {\n const token = match[1] ?? match[2];\n\n if (token) tokens.push(token);\n }\n\n return tokens;\n}\n\n/**\n * Builds a case- and diacritic-insensitive substring predicate for the given query. The query is\n * tokenized (bare words + `\"quoted phrases\"`) and every token must match (AND) against at least\n * one of the supplied haystacks (OR across fields) — pass a single string for a single-field\n * search, or an array for multi-field rows. An empty/whitespace-only query matches everything.\n */\nexport function createSearchPredicate(query: string): (value: string | readonly string[]) => boolean {\n const tokens = tokenizeSearchQuery(query)\n .map(normalizeSearchValue)\n .filter((token) => token.length > 0);\n\n if (!tokens.length) return () => true;\n\n return (value: string | readonly string[]): boolean => {\n const haystacks = (Array.isArray(value) ? value : [value]).map(normalizeSearchValue);\n\n return tokens.every((token) => haystacks.some((haystack) => haystack.includes(token)));\n };\n}\n","import { findSearchMatchRanges } from '../search/search-base';\n\nconst HTML_ESCAPES = { '&': '&', '<': '<', '>': '>', '\"': '"', \"'\": ''' } as const;\nconst HTML_SPECIAL_CHARS = /[&<>\"']/;\nconst HTML_SPECIAL_CHARS_GLOBAL = new RegExp(HTML_SPECIAL_CHARS.source, 'g');\n\n/** Escapes characters in the specified string that have special meaning in a regular expression. */\nexport function escapeRegExp(value: string): string {\n if (value) {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n }\n\n return value;\n}\n\nfunction escapeHtml(value: string): string {\n if (!HTML_SPECIAL_CHARS.test(value)) return value;\n\n return value.replace(HTML_SPECIAL_CHARS_GLOBAL, (chr) => HTML_ESCAPES[chr] ?? chr);\n}\n\nfunction normalizeKeywords(keyword: unknown): string[] {\n const list = Array.isArray(keyword) ? keyword : [keyword];\n\n // Longest first, so a shorter keyword (e.g. \"a\") can't shadow a longer one that starts\n // with it (e.g. \"all\") within the same regex alternation.\n return list\n .filter((item): item is string => typeof item === 'string' && item.length > 0)\n .sort((a, b) => b.length - a.length);\n}\n\nfunction findLiteralMatchRanges(value: string, keywords: string[]): Array<[number, number]> {\n const pattern = new RegExp(keywords.map(escapeRegExp).join('|'), 'gi');\n const ranges: Array<[number, number]> = [];\n let match: RegExpExecArray | null = pattern.exec(value);\n\n while (match !== null) {\n ranges.push([match.index, match.index + match[0].length]);\n match = pattern.exec(value);\n }\n\n return ranges;\n}\n\n/**\n * @docs-private\n * `keyword` accepts either a single string or an array of strings — every keyword is\n * highlighted independently, which is what multi-token search queries need.\n *\n * By default, matching is literal (case-insensitive substring), same as a plain `.includes`. Pass\n * `foldDiacritics: true` when the keywords were matched with diacritic folding (e.g. via\n * {@link createSearchPredicate} from `@koobiq/components/core`) — otherwise a folded match like\n * `cafe` finding `Café` has nothing in the value for a literal highlighter to mark.\n */\nexport function highlight(\n value: unknown,\n keyword: unknown,\n mark: (text: string) => string,\n foldDiacritics = false\n): string {\n if (typeof value !== 'string') return '';\n\n const keywords = normalizeKeywords(keyword);\n\n if (!keywords.length) return escapeHtml(value);\n\n const ranges = foldDiacritics ? findSearchMatchRanges(value, keywords) : findLiteralMatchRanges(value, keywords);\n\n if (!ranges.length) return escapeHtml(value);\n\n let result = '';\n let cursor = 0;\n\n for (const [start, end] of ranges) {\n result += escapeHtml(value.slice(cursor, start));\n result += mark(escapeHtml(value.slice(start, end)));\n cursor = end;\n }\n\n return result + escapeHtml(value.slice(cursor));\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { highlight } from './highlight-base';\n\n/** @docs-private */\nexport const kbqHighlightBackgroundMark = (text: string): string =>\n `<mark class=\"kbq-highlight-background\">${text}</mark>`;\n\n@Pipe({ name: 'kbqHighlightBackground' })\nexport class KbqHighlightBackgroundPipe implements PipeTransform {\n transform(value: unknown, keyword: unknown, foldDiacritics = false): string {\n return highlight(value, keyword, kbqHighlightBackgroundMark, foldDiacritics);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { highlight } from './highlight-base';\n\n/** @docs-private */\nexport const kbqHighlightMark = (text: string): string => `<mark class=\"kbq-highlight\">${text}</mark>`;\n\n@Pipe({ name: 'mcHighlight' })\nexport class KbqHighlightPipe implements PipeTransform {\n transform(value: unknown, keyword: unknown, foldDiacritics = false): string {\n return highlight(value, keyword, kbqHighlightMark, foldDiacritics);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { KbqHighlightBackgroundPipe } from './highlight-background.pipe';\nimport { KbqHighlightPipe } from './highlight.pipe';\n\n@NgModule({\n imports: [KbqHighlightPipe, KbqHighlightBackgroundPipe],\n exports: [KbqHighlightPipe, KbqHighlightBackgroundPipe]\n})\nexport class KbqHighlightModule {}\n\nexport * from './highlight-background.pipe';\nexport { escapeRegExp } from './highlight-base';\nexport * from './highlight.pipe';\n","import { Directive, ElementRef, QueryList } from '@angular/core';\n\n/**\n * Shared directive to count lines inside a text area, such as a list item.\n * Line elements can be extracted with a @ContentChildren(KbqLine) query, then\n * counted by checking the query list's length.\n */\n@Directive({\n selector: '[kbq-line], [mcLine]',\n host: { class: 'kbq-line' }\n})\nexport class KbqLine {}\n\n/**\n * Helper that takes a query list of lines and sets the correct class on the host.\n * @docs-private\n */\nexport class KbqLineSetter {\n constructor(\n private _lines: QueryList<KbqLine>,\n private _element: ElementRef\n ) {\n this.setLineClass(this._lines.length);\n\n this._lines.changes.subscribe(() => {\n this.setLineClass(this._lines.length);\n });\n }\n\n private setLineClass(count: number): void {\n const minLineClassNumber = 2;\n const maxLineClassNumber = 3;\n\n this.resetClasses();\n\n if (count === minLineClassNumber || count === maxLineClassNumber) {\n this.setClass(`kbq-${count}-line`, true);\n } else if (count > maxLineClassNumber) {\n this.setClass(`kbq-multi-line`, true);\n }\n }\n\n private resetClasses(): void {\n this.setClass('kbq-2-line', false);\n this.setClass('kbq-3-line', false);\n this.setClass('kbq-multi-line', false);\n }\n\n private setClass(className: string, isAdd: boolean): void {\n if (isAdd) {\n this._element.nativeElement.classList.add(className);\n } else {\n this._element.nativeElement.classList.remove(className);\n }\n }\n}\n","import { Platform } from '@angular/cdk/platform';\nimport { Directive, inject } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { KBQ_WINDOW } from '../tokens';\nimport { kbqInjectNativeElement } from '../utils';\n\n@Directive({\n host: {\n '[class.kbq-expanded]': '!collapsed',\n '[class.kbq-collapsed]': 'collapsed'\n }\n})\nexport class KbqRectangleItem {\n protected readonly isBrowser = inject(Platform).isBrowser;\n protected readonly nativeElement = kbqInjectNativeElement();\n private readonly window = inject(KBQ_WINDOW);\n\n readonly state = new Subject<void>();\n\n get collapsed(): boolean {\n return this._collapsed;\n }\n\n set collapsed(value: boolean) {\n this._collapsed = value;\n\n this.state.next();\n }\n\n private _collapsed: boolean;\n\n /**\n * Outer width of the item: its border box plus horizontal margins.\n *\n * `getComputedStyle().width` resolves to the used content-box width whatever `box-sizing` says,\n * so it silently drops padding and borders on the `border-box` elements this measures, and the\n * result would change again under a consuming application's global reset.\n * `getBoundingClientRect()` is always the border box, which makes it host-independent.\n */\n getOuterElementWidth(): number {\n if (!this.isBrowser) return 0;\n\n const { marginLeft, marginRight } = this.window.getComputedStyle(this.nativeElement);\n\n return [marginLeft, marginRight].reduce(\n (acc, item) => acc + (parseFloat(item) || 0),\n this.nativeElement.getBoundingClientRect().width\n );\n }\n}\n","import { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n EventEmitter,\n inject,\n InjectionToken,\n Input,\n OnDestroy,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ENTER, SPACE, TAB } from '../keycodes';\nimport { kbqInjectNativeElement } from '../utils';\n\nexport interface KbqOptionActionParent {\n dropdownTrigger: {\n opened: boolean;\n restoreFocus: boolean;\n dropdownClosed: EventEmitter<void>;\n lastDestroyReason: void | 'click' | 'keydown' | 'tab';\n openedBy: Exclude<FocusOrigin, 'program' | null> | undefined;\n toggle(): void;\n };\n tooltipTrigger: {\n disabled: boolean;\n };\n focus(): void;\n}\n\nexport const KBQ_OPTION_ACTION_PARENT = new InjectionToken<KbqOptionActionParent>('KBQ_OPTION_ACTION_PARENT');\n\n@Component({\n selector: 'kbq-option-action',\n template: `\n <ng-content select=\"[kbq-icon]\">\n <i class=\"kbq kbq-icon kbq-contrast-fade kbq-ellipsis-vertical_16\"></i>\n </ng-content>\n `,\n styleUrls: ['./action.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-option-action',\n '[class.kbq-expanded]': 'false',\n '[class.kbq-disabled]': 'disabled',\n '[attr.disabled]': 'disabled || null',\n '[attr.tabIndex]': '-1',\n '(click)': 'onClick($event)',\n '(keydown)': 'onKeyDown($event)'\n },\n exportAs: 'kbqOptionAction'\n})\nexport class KbqOptionActionComponent implements AfterViewInit, OnDestroy {\n private readonly nativeElement = kbqInjectNativeElement();\n private readonly focusMonitor = inject(FocusMonitor);\n private readonly option = inject(KBQ_OPTION_ACTION_PARENT);\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input({ transform: booleanAttribute })\n get disabled(): boolean {\n return this._disabled;\n }\n\n set disabled(value: boolean) {\n if (value !== this.disabled) {\n this._disabled = value;\n }\n }\n\n private _disabled: boolean = false;\n\n hasFocus: boolean = false;\n\n get active(): boolean {\n return this.hasFocus || !!this.option.dropdownTrigger?.opened;\n }\n\n private readonly destroyRef = inject(DestroyRef);\n\n ngAfterViewInit(): void {\n this.focusMonitor\n .monitor(this.nativeElement, true)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((result) => (this.hasFocus = !!result));\n\n if (!this.option.dropdownTrigger) return;\n\n this.option.dropdownTrigger.restoreFocus = false;\n\n this.option.dropdownTrigger.dropdownClosed.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.preventShowingTooltip();\n\n const lastDestroyReason = this.option.dropdownTrigger.lastDestroyReason;\n\n if (lastDestroyReason) {\n this.focus(lastDestroyReason === 'keydown' ? 'keyboard' : 'program');\n }\n });\n }\n\n ngOnDestroy(): void {\n this.focusMonitor.stopMonitoring(this.nativeElement);\n }\n\n focus(origin?: FocusOrigin, options?: FocusOptions) {\n if (this.focusMonitor && origin) {\n this.focusMonitor.focusVia(this.nativeElement, origin, options);\n } else {\n this.nativeElement.focus();\n }\n\n // The action lives inside `.kbq-action-container`, which is `display: none` until the option\n // is hovered or keyboard-focused. Focusing a hidden element is a no-op, so `hasFocus` has to\n // reflect what actually happened: assuming success would latch `kbq-action-button-focused`\n // on the option forever, since `FocusMonitor` never emits for an element that never got focus.\n this.hasFocus = this.nativeElement.ownerDocument.activeElement === this.nativeElement;\n }\n\n onClick($event) {\n $event.stopPropagation();\n }\n\n onKeyDown($event) {\n if ([SPACE, ENTER].includes($event.keyCode) && this.option.dropdownTrigger) {\n this.option.dropdownTrigger.openedBy = 'keyboard';\n } else if ($event.shiftKey && $event.keyCode === TAB) {\n this.hasFocus = false;\n\n this.option.focus();\n } else if ($event.keyCode === TAB) {\n return;\n }\n\n $event.preventDefault();\n $event.stopPropagation();\n }\n\n private preventShowingTooltip() {\n if (!this.option.tooltipTrigger) {\n return;\n }\n\n this.option.tooltipTrigger.disabled = true;\n\n setTimeout(() => (this.option.tooltipTrigger.disabled = false));\n }\n}\n\n/**\n * Moves focus from an option to its trailing action button on Tab.\n *\n * Shared by `KbqListOption` and `KbqTreeOption` so the two cannot drift apart. Tab is swallowed only\n * when focus actually landed: the action lives in a `display: none` container until the option is\n * hovered or keyboard-focused, and focusing a hidden element is a no-op, so suppressing Tab there\n * would trap focus on the option.\n */\nexport function kbqFocusOptionActionOnTab(\n $event: KeyboardEvent,\n actionButton: KbqOptionActionComponent | undefined\n): void {\n if (!actionButton || $event.keyCode !== TAB || $event.shiftKey || actionButton.hasFocus) {\n return;\n }\n\n actionButton.focus();\n\n if (actionButton.hasFocus) {\n $event.preventDefault();\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'kbq-action-container',\n template: `\n <div class=\"kbq-action-container__gradient\"></div>\n <div class=\"kbq-action-container__box\">\n <ng-content />\n </div>\n `,\n styleUrls: ['./action-container.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-action-container'\n },\n exportAs: 'kbqActionContainer'\n})\nexport class KbqActionContainer {}\n","import { booleanAttribute, ChangeDetectionStrategy, Component, Input, input, ViewEncapsulation } from '@angular/core';\n\nlet uniqueOptgroupIdCounter = 0;\n\n/**\n * Component that is used to group instances of `kbq-option`.\n * When options aren't provided as `ng-content`, used as a Group Header with styling.\n */\n@Component({\n selector: 'kbq-optgroup',\n templateUrl: 'optgroup.html',\n styleUrls: ['./optgroup.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-optgroup',\n role: 'group',\n '[attr.aria-labelledby]': 'labelId',\n '[class.kbq-disabled]': 'disabled'\n },\n exportAs: 'kbqOptgroup'\n})\nexport class KbqOptgroup {\n readonly label = input<string>(undefined!);\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input({ transform: booleanAttribute })\n get disabled(): boolean {\n return this._disabled;\n }\n\n set disabled(value: boolean) {\n if (value !== this.disabled) {\n this._disabled = value;\n }\n }\n\n private _disabled: boolean = false;\n\n /** Unique id for the underlying label. */\n labelId: string = `kbq-optgroup-label-${uniqueOptgroupIdCounter++}`;\n}\n","<label class=\"kbq-optgroup-label\" [id]=\"labelId\">\n {{ label() }}\n</label>\n<ng-content select=\"kbq-option, kbq-list-option, kbq-timezone-option, ng-container\" />\n","export enum MultipleMode {\n CHECKBOX = 'checkbox',\n KEYBOARD = 'keyboard'\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, input } from '@angular/core';\nimport { KbqColorDirective } from '../../common-behaviors';\n\nexport type KbqPseudoCheckboxState = 'unchecked' | 'checked' | 'indeterminate' | boolean;\n\n/**\n * Component that shows a simplified checkbox without including any kind of \"real\" checkbox.\n * Meant to be used when the checkbox is purely decorative and a large number of them will be\n * included, such as for the options in a multi-select. Uses no SVGs or complex animations.\n * Note that theming is meant to be handled by the parent element, e.g.\n * `kbq-primary .kbq-pseudo-checkbox`.\n *\n * Note that this component will be completely invisible to screen-reader users. This is *not*\n * interchangeable with `<kbq-checkbox>` and should *not* be used if the user would directly\n * interact with the checkbox. The pseudo-checkbox should only be used as an implementation detail\n * of more complex components that appropriately handle selected / checked state.\n * @docs-private\n */\n@Component({\n selector: 'kbq-pseudo-checkbox',\n templateUrl: 'pseudo-checkbox.partial.html',\n styleUrls: ['pseudo-checkbox.scss', 'pseudo-checkbox-tokens.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-pseudo-checkbox',\n '[class.kbq-checkbox_big]': 'big()',\n '[class.kbq-indeterminate]': 'state() === \"indeterminate\"',\n '[class.kbq-checked]': 'state() === true || state() === \"checked\"',\n '[class.kbq-disabled]': 'disabled()'\n },\n preserveWhitespaces: false\n})\nexport class KbqPseudoCheckbox extends KbqColorDirective {\n readonly big = input<boolean>(false);\n\n readonly state = input<KbqPseudoCheckboxState>('unchecked');\n\n readonly disabled = input<boolean>(false);\n}\n","<i class=\"kbq-checkbox-checkmark kbq kbq-check-s_16\"></i>\n<i class=\"kbq-checkbox-mixedmark kbq kbq-minus-s_16\"></i>\n","import { NgModule } from '@angular/core';\nimport { KbqPseudoCheckbox } from './pseudo-checkbox';\n\n@NgModule({\n imports: [KbqPseudoCheckbox],\n exports: [KbqPseudoCheckbox]\n})\nexport class KbqPseudoCheckboxModule {}\n","import { KbqPseudoCheckboxState } from './pseudo-checkbox/pseudo-checkbox';\n\n/**\n * Adapter describing how a component reads and writes selection state for a set of items,\n * so the shared select-all logic can operate regardless of how selection is stored\n * (per-option setter, `SelectionModel` on data nodes, etc.).\n */\nexport interface KbqSelectAllAdapter<T> {\n /** All candidate items, in render/model order. */\n items: readonly T[];\n /** Whether the item may participate (e.g. not disabled, and — for tree — `selectable()`). */\n isSelectable: (item: T) => boolean;\n /** Current selected state of the item. */\n isSelected: (item: T) => boolean;\n /**\n * Applies the new selected state to the item. Must be idempotent — a no-op, with no further side\n * effects (no emitted events, no notifications) — when `selected` already matches the item's current\n * state: {@link toggleSelectAll} calls this for every selectable item, not just the ones whose state\n * actually changes, and relies on implementations to absorb the redundant calls silently.\n */\n setSelected: (item: T, selected: boolean) => void;\n}\n\n/** Options for {@link toggleSelectAll}. */\nexport interface KbqToggleSelectAllOptions {\n /**\n * When `true`, a repeated toggle deselects everything once all selectable items are already\n * selected. When `false` (default), the toggle only ever selects.\n */\n allowDeselect?: boolean;\n}\n\n/**\n * Canonical \"select all / deselect all\" toggle shared by the multi-select components (`Ctrl`/`Cmd` + `A`).\n *\n * Considers only selectable items and selects them all. When `allowDeselect` is `true` and every selectable\n * item is already selected, deselects them all instead; otherwise a repeated call is a no-op. No-op when\n * there are no selectable items.\n *\n * @returns the items whose selected state actually flipped, in input order.\n */\nexport function toggleSelectAll<T>(adapter: KbqSelectAllAdapter<T>, options?: KbqToggleSelectAllOptions): T[] {\n const selectable = adapter.items.filter((item) => adapter.isSelectable(item));\n\n if (selectable.length === 0) {\n return [];\n }\n\n const shouldSelect = !options?.allowDeselect || selectable.some((item) => !adapter.isSelected(item));\n const changed = selectable.filter((item) => adapter.isSelected(item) !== shouldSelect);\n\n selectable.forEach((item) => adapter.setSelected(item, shouldSelect));\n\n return changed;\n}\n\n/**\n * State of a \"select all\" master checkbox over the same items {@link toggleSelectAll} would act on.\n *\n * Considers only selectable items, so items the toggle cannot reach (disabled, non-selectable) never\n * pin the checkbox to `indeterminate`. An empty selectable set reads as `unchecked`: there is nothing\n * to select, and `[].every()` being `true` would otherwise report a full selection.\n */\nexport function getSelectAllState<T>(adapter: KbqSelectAllAdapter<T>): KbqPseudoCheckboxState {\n const selectable = adapter.items.filter((item) => adapter.isSelectable(item));\n\n if (selectable.length === 0) {\n return 'unchecked';\n }\n\n const selected = selectable.filter((item) => adapter.isSelected(item)).length;\n\n if (selected === 0) {\n return 'unchecked';\n }\n\n return selected === selectable.length ? 'checked' : 'indeterminate';\n}\n\n/** Event emitted by the `onSelectAll` outputs when the select-all toggle runs. */\nexport class KbqSelectAllEvent<T, S = unknown> {\n constructor(\n /** Component that emitted the event. */\n public readonly source: S,\n /** The selectable options affected by the toggle. */\n public readonly options: T[],\n /** `true` when all options were selected, `false` when all were deselected. */\n public readonly selected: boolean\n ) {}\n}\n\n/**\n * Whether `Ctrl`/`Cmd` + `A` should select the text of a search `<input>` rather than toggle options.\n *\n * Returns `true` only when the input has text that is not already fully selected (nothing selected,\n * a partial selection, or just a caret). Returns `false` for an empty input (so select-all falls\n * straight through to the options) and when the whole value is already selected (a second press\n * then acts on the options).\n */\nexport function shouldSelectSearchText(input: HTMLInputElement | null | undefined): boolean {\n if (!input) {\n return false;\n }\n\n const length = input.value.length;\n\n if (length === 0) {\n return false;\n }\n\n return !(input.selectionStart === 0 && input.selectionEnd === length);\n}\n","import { ElementRef, InjectionToken } from '@angular/core';\n\nexport interface KbqTitleTextRef {\n textElement?: ElementRef;\n parentTextElement?: ElementRef;\n}\n\nexport const KBQ_TITLE_TEXT_REF = new InjectionToken<KbqTitleTextRef>('KbqTitleTextRef');\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n AfterViewChecked,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n inject,\n InjectionToken,\n Input,\n input,\n OnDestroy,\n Output,\n QueryList,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { ActiveDescendantKeyManager } from '../a11y';\nimport { ENTER, hasModifierKey, SPACE } from '../keycodes';\nimport { KbqPseudoCheckboxModule } from '../selection';\nimport { KBQ_TITLE_TEXT_REF, KbqTitleTextRef } from '../title';\nimport { kbqFocusAndReveal } from '../utils';\nimport { KbqOptgroup } from './optgroup';\n\n/**\n * Option IDs need to be unique across components, so this counter exists outside of\n * the component definition.\n */\nlet uniqueIdCounter = 0;\n\n/** Event object emitted by KbqOption when selected or deselected. */\nexport class KbqOptionSelectionChange<T = KbqOption> {\n constructor(\n public source: T,\n public isUserInput = false\n ) {}\n}\n\n/**\n * Describes a parent component that manages a list of options.\n * Contains properties that the options can inherit.\n * @docs-private\n */\nexport interface KbqOptionParentComponent {\n multiple?: boolean;\n multiSelection?: boolean;\n withVirtualScroll?: boolean;\n keyManager?: ActiveDescendantKeyManager<KbqOption>;\n setSelectedOptionsByClick: (option: KbqOption) => void;\n}\n\n/**\n * Handler that will update scroll position of elements inside overlay\n */\nexport interface KeyboardNavigationHandler {\n /** Scrolls the active option into view. */\n scrollActiveOptionIntoView(): void;\n}\n\n/**\n * Injection token used to provide the parent component to options.\n */\nexport const KBQ_OPTION_PARENT_COMPONENT = new InjectionToken<KbqOptionParentComponent>('KBQ_OPTION_PARENT_COMPONENT');\n\nexport abstract class KbqOptionBase {\n value: any;\n abstract get viewValue(): string;\n abstract get disabled(): boolean;\n abstract set disabled(value: any);\n\n abstract readonly onSelectionChange: EventEmitter<KbqOptionSelectionChange<any>>;\n\n abstract select(): void;\n\n abstract deselect(): void;\n\n /** Emits the selection change event. */\n protected emitSelectionChangeEvent(isUserInput = false): void {\n this.onSelectionChange.emit(new KbqOptionSelectionChange(this, isUserInput));\n }\n}\n\nexport class KbqVirtualOption extends KbqOptionBase {\n get disabled() {\n return this._disabled;\n }\n set disabled(value: any) {\n this._disabled = coerceBooleanProperty(value);\n }\n\n get selected(): boolean {\n return this._selected;\n }\n\n private _selected = false;\n\n get viewValue(): string {\n return this._viewValue ?? this.value;\n }\n\n readonly onSelectionChange = new EventEmitter<KbqOptionSelectionChange<KbqVirtualOption>>();\n\n constructor(\n public value: any,\n private _disabled: boolean = false,\n private readonly _viewValue?: string\n ) {\n super();\n }\n\n select(): void {\n if (!this._selected) {\n this._selected = true;\n\n this.emitSelectionChangeEvent();\n }\n }\n\n deselect(): void {\n if (this._selected) {\n this._selected = false;\n\n this.emitSelectionChangeEvent();\n }\n }\n}\n\n/**\n * Single option inside of a `<kbq-select>` element.\n */\n@Component({\n selector: 'kbq-option',\n imports: [\n KbqPseudoCheckboxModule\n ],\n templateUrl: 'option.html',\n /* Component inherits styles from `list`, so `list` variables are imported as the single source of truth. */\n styleUrls: ['option.scss', 'option-tokens.scss'],\n providers: [\n {\n provide: KBQ_TITLE_TEXT_REF,\n useExisting: KbqOption\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.tabindex]': 'getTabIndex()',\n class: 'kbq-option',\n '[class.kbq-selected]': 'selected',\n '[class.kbq-option-multiple]': 'multiple',\n '[class.kbq-active]': 'active',\n '[class.kbq-disabled]': 'disabled',\n '[id]': 'id',\n\n '(click)': 'handleClick($event)',\n '(mouseenter)': 'onMouseenter()',\n '(mouseleave)': 'onMouseleave()',\n '(keydown)': 'handleKeydown($event)'\n },\n exportAs: 'kbqOption'\n})\nexport class KbqOption extends KbqOptionBase implements AfterViewChecked, OnDestroy, KbqTitleTextRef {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n protected readonly parent = inject<KbqOptionParentComponent>(KBQ_OPTION_PARENT_COMPONENT, { optional: true })!;\n readonly group = inject(KbqOptgroup, { optional: true });\n @ViewChild('kbqTitleText', { static: false }) textElement: ElementRef;\n\n /** The form value of the option. */\n // TODO: Skipped for migration because:\n // Your application code writes to the input. This prevents migration.\n @Input() value: any;\n\n readonly selectable = input<boolean, unknown>(true, { transform: booleanAttribute });\n\n // todo this flag will need to be rethought in the future (added for filter panel)\n readonly userSelect = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get showCheckbox() {\n return this._showCheckbox === undefined ? this.multiple : this._showCheckbox;\n }\n\n set showCheckbox(value) {\n this._showCheckbox = coerceBooleanProperty(value);\n }\n\n private _showCheckbox: boolean;\n\n /** Event emitted when the option is selected or deselected. */\n @Output() readonly onSelectionChange = new EventEmitter<KbqOptionSelectionChange>();\n\n /** Emits when the state of the option changes and any parents have to be notified. */\n readonly stateChanges = new Subject<void>();\n\n /**\n * The displayed value of the option. It is necessary to show the selected option in the\n * select's trigger.\n */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get viewValue(): string {\n return this._viewValue || (this.getHostElement().textContent || '').trim();\n }\n\n set viewValue(value: string) {\n this._viewValue = value;\n }\n\n private _viewValue: string;\n\n /** Whether the wrapping component is in multiple selection mode. */\n get multiple(): boolean {\n return !!this.parent?.multiSelection;\n }\n\n get id(): string {\n return this._id;\n }\n\n private _id = `kbq-option-${uniqueIdCounter++}`;\n\n get selected(): boolean {\n return this._selected;\n }\n\n private _selected = false;\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get disabled() {\n return (this.group && this.group.disabled) || this._disabled;\n }\n\n set disabled(value: any) {\n this._disabled = coerceBooleanProperty(value);\n }\n\n private _disabled = false;\n\n /**\n * Whether or not the option is currently active and ready to be selected.\n * An active option displays styles as if it is focused, but the\n * focus is actually retained somewhere else. This comes in handy\n * for components like autocomplete where focus must remain on the input.\n */\n get active(): boolean {\n return this._active;\n }\n\n private _active = false;\n\n private mostRecentViewValue = '';\n\n /**\n * Whether the pointer is currently over this option. Cleared on `mouseleave` rather than when the\n * option is focused: hovering the option that is already active does not move the key manager's\n * index, so no focus follows and a flag cleared only there would stay armed indefinitely.\n */\n private hoveredByPointer = false;\n ngAfterViewChecked() {\n // Since parent components could be using the option's label to display the selected values\n // (e.g. `kbq-select`) and they don't have a way of knowing if the option's label has changed\n // we have to check for changes in the DOM ourselves and dispatch an event. These checks are\n // relatively cheap, however we still limit them only to selected options in order to avoid\n // hitting the DOM too often.\n if (this._selected) {\n const viewValue = this.viewValue;\n\n if (viewValue !== this.mostRecentViewValue) {\n this.mostRecentViewValue = viewValue;\n this.stateChanges.next();\n }\n }\n }\n\n ngOnDestroy() {\n this.stateChanges.complete();\n }\n\n /** @docs-private */\n getHeight(): number {\n return this.elementRef.nativeElement.getClientRects()[0]?.height ?? 0;\n }\n\n select(emitEvent: boolean = true): void {\n if (!this._selected) {\n this._selected = true;\n\n this.changeDetectorRef.markForCheck();\n if (emitEvent) this.emitSelectionChangeEvent();\n }\n }\n\n deselect(emitEvent: boolean = true): void {\n if (this._selected) {\n this._selected = false;\n\n this.changeDetectorRef.markForCheck();\n if (emitEvent) this.emitSelectionChangeEvent();\n }\n }\n\n /** Moves keyboard focus to this option and reveals it — see {@link kbqFocusAndReveal}. */\n focus(): void {\n kbqFocusAndReveal(this.getHostElement(), this.hoveredByPointer);\n }\n\n /**\n * This method sets display styles on the option to make it appear\n * active. This is used by the ActiveDescendantKeyManager so key\n * events will display the proper options as active on arrow key events.\n */\n setActiveStyles(): void {\n if (!this._active) {\n this._active = true;\n this.changeDetectorRef.markForCheck();\n }\n }\n\n /**\n * This method removes display styles on the option that made it appear\n * active. This is used by the ActiveDescendantKeyManager so key\n * events will display the proper options as active on arrow key events.\n */\n setInactiveStyles(): void {\n if (this._active) {\n this._active = false;\n this.changeDetectorRef.markForCheck();\n }\n }\n\n /** Gets the label to be used when determining whether the option should be focused. */\n getLabel(): string {\n return this.viewValue;\n }\n\n /** @docs-private */\n handleClick(event: MouseEvent): void {\n if (hasModifierKey(event, 'shiftKey')) {\n this.parent.setSelectedOptionsByClick(this);\n } else {\n this.selectViaInteraction();\n }\n }\n\n /** Ensures the option is selected when activated from the keyboard. */\n handleKeydown(event: KeyboardEvent): void {\n // Only claim the event when the option is actually going to react to it: a non-selectable\n // or disabled option has nothing to do with ENTER/SPACE, and swallowing the event anyway\n // would stop it from reaching an ancestor that might (e.g. a custom row built on top of a\n // non-selectable option, like a \"select all\" master checkbox).\n if ((event.keyCode === ENTER || event.keyCode === SPACE) && !this.disabled && this.selectable()) {\n this.selectViaInteraction();\n\n // Prevent the page from scrolling down and form submits.\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n /**\n * `Selects the option while indicating the selection came from the user. Used to\n * determine if the select's view -> model callback should be invoked.`\n */\n selectViaInteraction(): void {\n if (this.userSelect()) return;\n\n if (!this.disabled && this.selectable()) {\n this._selected = this.multiple ? !this._selected : true;\n\n this.changeDetectorRef.markForCheck();\n this.emitSelectionChangeEvent(true);\n }\n }\n\n getTabIndex(): string {\n return this.disabled ? '-1' : '0';\n }\n\n getHostElement(): HTMLElement {\n return this.elementRef.nativeElement;\n }\n\n /** @docs-private */\n protected onMouseenter() {\n if (this.disabled) return;\n\n this.hoveredByPointer = true;\n\n this.parent?.keyManager?.setActiveItem(this);\n }\n\n /** @docs-private */\n protected onMouseleave() {\n this.hoveredByPointer = false;\n }\n}\n\n/**\n * Counts the amount of option group labels that precede the specified option.\n * @param optionIndex Index of the option at which to start counting.\n * @param options Flat list of all of the options.\n * @param optionGroups Flat list of all of the option groups.\n * @docs-private\n */\nexport function countGroupLabelsBeforeOption(\n optionIndex: number,\n options: QueryList<KbqOption>,\n optionGroups: QueryList<KbqOptgroup>\n): number {\n if (optionGroups.length) {\n const optionsArray = options.toArray();\n const groups = optionGroups.toArray();\n\n let groupCounter = 0;\n\n for (let i = 0; i < optionIndex + 1; i++) {\n if (optionsArray[i].group && optionsArray[i].group === groups[groupCounter]) {\n groupCounter++;\n }\n }\n\n return groupCounter;\n }\n\n return 0;\n}\n\n/**\n * Determines the position to which to scroll a panel in order for an option to be into view.\n * @param optionIndex Index of the option to be scrolled into the view.\n * @param optionHeight Height of the options.\n * @param currentScrollPosition Current scroll position of the panel.\n * @param panelHeight Height of the panel.\n * @docs-private\n * @deprecated Unused — an option reveals itself on focus through `KbqOption.focus`, which lets the\n * browser resolve the scroll container instead of computing an offset from a uniform row height. Will be\n * removed in the next major release.\n */\nexport function getOptionScrollPosition(\n optionIndex: number,\n optionHeight: number,\n currentScrollPosition: number,\n panelHeight: number\n): number {\n const optionOffset = optionIndex * optionHeight;\n\n if (optionOffset < currentScrollPosition) {\n return optionOffset;\n }\n\n if (optionOffset + optionHeight > currentScrollPosition + panelHeight) {\n return Math.max(0, optionOffset - panelHeight + optionHeight);\n }\n\n return currentScrollPosition;\n}\n","@if (showCheckbox) {\n <ng-content select=\"kbq-pseudo-checkbox\">\n <kbq-pseudo-checkbox [disabled]=\"disabled\" [state]=\"selected ? 'checked' : 'unchecked'\" />\n </ng-content>\n}\n\n<span #kbqTitleText class=\"kbq-option-text\">\n <ng-content />\n</span>\n","import { NgModule } from '@angular/core';\nimport { KbqPseudoCheckbox } from '../selection';\nimport { KbqOptionActionComponent } from './action';\nimport { KbqOptgroup } from './optgroup';\nimport { KbqOption } from './option';\n\n@NgModule({\n imports: [KbqPseudoCheckbox, KbqOption, KbqOptgroup, KbqOptionActionComponent],\n exports: [KbqOption, KbqOptgroup, KbqOptionActionComponent]\n})\nexport class KbqOptionModule {}\n","import { SharedResizeObserver } from '@angular/cdk/observers/private';\nimport {\n afterNextRender,\n DestroyRef,\n Directive,\n inject,\n InjectionToken,\n input,\n numberAttribute,\n OnInit,\n signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { fromEvent, Observable } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { kbqInjectNativeElement } from '../utils';\n\n/** Shadow visibility state — which of the two shadows should be rendered. */\nexport interface KbqOverflowShadowState {\n /** Whether the top (header) shadow should be visible — content is scrolled past the top. */\n top: boolean;\n /** Whether the bottom (footer) shadow should be visible — more content remains below the fold. */\n bottom: boolean;\n}\n\n/**\n * Source of scroll events and scroll metrics. Can be provided by a component that wraps\n * the scrollable element (e.g. `KbqScrollbar`) so that `KbqOverflowShadowContainer` does\n * not have to subscribe to the native `scroll` event directly.\n */\nexport interface KbqOverflowShadowSource {\n /** Emits whenever the wrapped element scrolls. */\n readonly onScroll: Observable<unknown>;\n /** The element whose `scrollTop`/`clientHeight`/`scrollHeight` drive the shadows, or `null` if not ready yet. */\n getScrollElement(): HTMLElement | null;\n}\n\n/**\n * DI token a scrollable wrapper component can provide to expose itself as the scroll source\n * for a co-located `KbqOverflowShadowContainer` (see `KbqScrollbar`).\n */\nexport const KBQ_OVERFLOW_SHADOW_SOURCE = new InjectionToken<KbqOverflowShadowSource>('KBQ_OVERFLOW_SHADOW_SOURCE');\n\n/**\n * Container directive that sits on the scrollable element. Listens for scroll events and\n * keeps the `overflow` signal up to date, which is then read by `KbqOverflowShadowTop` and\n * `KbqOverflowShadowBottom`.\n *\n * The scroll source is auto-detected: if `KBQ_OVERFLOW_SHADOW_SOURCE` is provided in the\n * host's DI, that source is used; otherwise the native `scroll` event on the host element\n * is observed.\n *\n * In addition to scroll events, the directive observes the scroll source's box-size changes\n * via CDK's `SharedResizeObserver` — this covers layout changes that happen without a scroll\n * and alter the viewport size (modal open/close animation, window resize, reflow that resizes\n * the element). Content that only grows `scrollHeight` without changing the element's box size\n * is not detected by the resize observer; call `checkOverflow()` manually for those cases.\n */\n@Directive({\n selector: '[kbqOverflowShadowContainer]',\n exportAs: 'kbqOverflowShadowContainer'\n})\nexport class KbqOverflowShadowContainer implements OnInit {\n private readonly destroyRef = inject(DestroyRef);\n private readonly hostElement = kbqInjectNativeElement();\n private readonly externalSource = inject(KBQ_OVERFLOW_SHADOW_SOURCE, { optional: true, self: true });\n private readonly sharedResizeObserver = inject(SharedResizeObserver);\n\n /** Optional debounce for scroll events, in milliseconds. Default is 0. */\n readonly debounce = input(0, { transform: numberAttribute });\n\n /** Current shadow state. Updated on every scroll event. */\n readonly overflow = signal<KbqOverflowShadowState>({ top: false, bottom: false });\n\n constructor() {\n afterNextRender(() => {\n this.checkOverflow();\n this.observeResize();\n });\n }\n\n ngOnInit(): void {\n const source$ = this.externalSource\n ? this.externalSource.onScroll\n : fromEvent(this.hostElement, 'scroll', { passive: true });\n\n const stream$ = this.debounce() > 0 ? source$.pipe(debounceTime(this.debounce())) : source$;\n\n stream$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.checkOverflow());\n }\n\n /**\n * Force-rechecks overflow and updates the signal. Calling this manually is normally not\n * necessary — scroll events plus `SharedResizeObserver` cover the standard scenarios. Kept\n * for rare cases when external code knows about a layout change more precisely than the\n * browser observers (e.g. content that only grows `scrollHeight`).\n */\n checkOverflow(): void {\n const source = this.getScrollSource();\n\n if (!source) return;\n\n // `clientHeight` (content-box) is the visible scroll-viewport height. `Math.round` on the\n // bottom comparison absorbs sub-pixel scroll metrics (HiDPI / browser zoom) so the bottom\n // shadow reliably clears at the very bottom instead of lingering on a fractional gap.\n const { scrollTop, clientHeight, scrollHeight } = source;\n\n this.overflow.set({\n top: scrollTop > 0,\n bottom: Math.round(scrollTop + clientHeight) < scrollHeight\n });\n }\n\n private getScrollSource(): HTMLElement | null {\n return this.externalSource ? this.externalSource.getScrollElement() : this.hostElement;\n }\n\n private observeResize(): void {\n const source = this.getScrollSource();\n\n if (!source) return;\n\n this.sharedResizeObserver\n .observe(source)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.checkOverflow());\n }\n}\n\n/**\n * Marker directive for the top-shadow indicator. Linked to the container directive via a\n * template ref: `<header [kbqOverflowShadowTop]=\"containerRef\">`.\n *\n * Sets an inline `box-shadow` on the host element using the value from the `shadow` input\n * (the Koobiq token by default). Consumers can override the shadow from the outside by\n * overriding the token `--kbq-shadow-overflow-normal-bottom` (or whichever token is passed\n * via the `shadow` input) in the relevant cascade scope.\n */\n@Directive({\n selector: '[kbqOverflowShadowTop]',\n host: {\n '[style.box-shadow]': 'ref()?.overflow()?.top ? shadow() : null'\n },\n exportAs: 'kbqOverflowShadowTop'\n})\nexport class KbqOverflowShadowTop {\n /**\n * Reference to the container directive. May be `undefined` if the container has not\n * been rendered yet (e.g. the indicator lives in one @if block and the container in\n * another).\n */\n readonly ref = input<KbqOverflowShadowContainer | undefined>(undefined, { alias: 'kbqOverflowShadowTop' });\n\n /** Value of `box-shadow` when the shadow is active. Defaults to the standard Koobiq token. */\n readonly shadow = input<string>('var(--kbq-shadow-overflow-normal-bottom)');\n}\n\n/**\n * Marker directive for the bottom-shadow indicator. Linked to the container directive via a\n * template ref: `<footer [kbqOverflowShadowBottom]=\"containerRef\">`.\n *\n * Sets an inline `box-shadow` on the host element. See {@link KbqOverflowShadowTop}.\n */\n@Directive({\n selector: '[kbqOverflowShadowBottom]',\n host: {\n '[style.box-shadow]': 'ref()?.overflow()?.bottom ? shadow() : null'\n },\n exportAs: 'kbqOverflowShadowBottom'\n})\nexport class KbqOverflowShadowBottom {\n /** Reference to the container directive. See {@link KbqOverflowShadowTop.ref}. */\n readonly ref = input<KbqOverflowShadowContainer | undefined>(undefined, { alias: 'kbqOverflowShadowBottom' });\n\n /** Value of `box-shadow` when the shadow is active. Defaults to the standard Koobiq token. */\n readonly shadow = input<string>('var(--kbq-shadow-overflow-normal-top)');\n}\n","import {\n CdkScrollable,\n FlexibleConnectedPositionStrategy,\n FlexibleConnectedPositionStrategyOrigin,\n OverlayRef,\n ScrollDispatcher,\n ScrollStrategy\n} from '@angular/cdk/overlay';\nimport { ViewportRuler } from '@angular/cdk/scrolling';\nimport { ElementRef, isDevMode, NgZone } from '@angular/core';\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\n/** Configuration options for `KbqAutoHideScrollStrategy`. */\nexport interface KbqAutoHideScrollStrategyConfig {\n /**\n * Element whose position is tracked against ancestor scroll container boundaries.\n * When omitted, the overlay panel is checked against the viewport instead.\n */\n originElement?: HTMLElement;\n /** Scroll event throttle in ms. Defaults to 20. */\n scrollThrottle?: number;\n}\n\n/** Lifecycle hooks for `KbqAutoHideScrollStrategy`, passed via `kbqAutoHideScrollStrategyFactory`. */\nexport interface KbqAutoHideScrollStrategyHooks {\n /** Called (inside Angular zone) when the tracked element scrolls outside its scroll container boundary. */\n onHide?: () => void;\n}\n\n/**\n * Scroll strategy that repositions the overlay on scroll and reports when the tracked element\n * moves outside its boundary:\n *\n * - With `originElement`: tracks the origin against each ancestor `CdkScrollable` container.\n * - Without `originElement`: tracks the overlay panel against the viewport.\n *\n * Two ways to react to the out-of-bounds event, usable independently or together:\n * - Subscribe to `hide` — a handle for callers that don't control how this strategy is\n * constructed (e.g. reaching into an existing component's `overlayRef.getConfig().scrollStrategy`\n * from the outside).\n * - Pass `onHide` via the factory returned by `kbqAutoHideScrollStrategyFactory` — for callers\n * that construct the strategy themselves.\n */\nexport class KbqAutoHideScrollStrategy implements ScrollStrategy {\n private readonly hideSubject = new Subject<void>();\n\n /** Emits once when the tracked element scrolls outside its boundary. */\n readonly hide: Observable<void> = this.hideSubject.asObservable();\n\n private overlayRef: OverlayRef | null = null;\n private scrollSubscription: Subscription | null = null;\n private originElement: HTMLElement | null = null;\n private ancestorScrollContainers: readonly CdkScrollable[] | null = null;\n\n constructor(\n private readonly scrollDispatcher: ScrollDispatcher,\n private readonly viewportRuler: ViewportRuler,\n private readonly ngZone: NgZone,\n private readonly config: KbqAutoHideScrollStrategyConfig = {},\n private hooks?: KbqAutoHideScrollStrategyHooks\n ) {}\n\n /** @docs-private */\n attach(overlayRef: OverlayRef): void {\n if (this.overlayRef && isDevMode()) {\n throw new Error('KbqAutoHideScrollStrategy: attach() has already been called for this instance.');\n }\n\n this.overlayRef = overlayRef;\n }\n\n /** Subscribes to scroll events and starts repositioning / out-of-bounds detection. */\n enable(): void {\n if (this.scrollSubscription) return;\n\n if (!this.overlayRef) {\n throw new Error('KbqAutoHideScrollStrategy: enable() was called before attach(). Call attach() first.');\n }\n\n const overlayRef = this.overlayRef;\n const { scrollThrottle = 20 } = this.config;\n\n this.originElement = this.config.originElement ?? this.resolveOriginElement(overlayRef);\n this.ancestorScrollContainers = this.originElement\n ? this.scrollDispatcher.getAncestorScrollContainers(this.originElement)\n : null;\n\n this.scrollSubscription = this.scrollDispatcher\n .scrolled(scrollThrottle)\n .pipe(\n filter(\n (scrollable) =>\n !scrollable || !overlayRef.overlayElement.contains(scrollable.getElementRef().nativeElement)\n )\n )\n .subscribe(() => {\n const isOutside = this.originElement\n ? this.isOriginOutsideAncestors(this.originElement)\n : this.isOverlayOutsideViewport(overlayRef);\n\n if (isOutside) {\n this.disable();\n this.ngZone.run(() => {\n this.hideSubject.next();\n this.hooks?.onHide?.();\n });\n\n return;\n }\n\n overlayRef.updatePosition();\n });\n }\n\n /** Unsubscribes from scroll events. */\n disable(): void {\n this.scrollSubscription?.unsubscribe();\n this.scrollSubscription = null;\n }\n\n /** Disables the strategy and completes `hide`. */\n detach(): void {\n this.disable();\n this.hideSubject.complete();\n this.hooks = undefined;\n this.overlayRef = null;\n this.originElement = null;\n this.ancestorScrollContainers = null;\n }\n\n private resolveOriginElement(overlayRef: OverlayRef): HTMLElement | null {\n const positionStrategy = overlayRef.getConfig().positionStrategy;\n\n if (positionStrategy instanceof FlexibleConnectedPositionStrategy) {\n return this.coerceOriginElement(positionStrategy._origin);\n }\n\n return null;\n }\n\n private isOriginOutsideAncestors(originElement: HTMLElement): boolean {\n const originRect = originElement.getBoundingClientRect();\n\n return (this.ancestorScrollContainers ?? []).some((scrollable) =>\n this.isOutsideBounds(originRect, scrollable.getElementRef().nativeElement.getBoundingClientRect())\n );\n }\n\n private isOverlayOutsideViewport(overlayRef: OverlayRef): boolean {\n const overlayRect = overlayRef.overlayElement.getBoundingClientRect();\n const { width, height } = this.viewportRuler.getViewportSize();\n\n return this.isOutsideBounds(overlayRect, { top: 0, left: 0, bottom: height, right: width } as DOMRect);\n }\n\n private isOutsideBounds(\n rect: DOMRect,\n containerRect: DOMRect | Pick<DOMRect, 'top' | 'bottom' | 'left' | 'right'>\n ): boolean {\n return (\n rect.bottom < containerRect.top ||\n rect.top > containerRect.bottom ||\n rect.right < containerRect.left ||\n rect.left > containerRect.right\n );\n }\n\n private coerceOriginElement(raw?: FlexibleConnectedPositionStrategyOrigin): HTMLElement | null {\n if (raw instanceof HTMLElement) {\n return raw;\n } else if (raw instanceof ElementRef && raw.nativeElement instanceof HTMLElement) {\n return raw.nativeElement;\n }\n\n return null;\n }\n}\n\n/**\n * Factory function for `KbqAutoHideScrollStrategy`. Use it directly as a `useFactory` value\n * when providing a component-level scroll strategy token (e.g. `KBQ_POPOVER_SCROLL_STRATEGY`).\n *\n * The returned function accepts an optional `hooks` object (see `KbqAutoHideScrollStrategyHooks`)\n * and an optional `config` (see `KbqAutoHideScrollStrategyConfig`).\n *\n * @example\n * ```ts\n * const createScrollStrategy = kbqAutoHideScrollStrategyFactory(scrollDispatcher, viewportRuler, ngZone);\n * const strategy = createScrollStrategy({ onHide: () => this.hide() }, { originElement });\n * ```\n */\nexport function kbqAutoHideScrollStrategyFactory(\n scrollDispatcher: ScrollDispatcher,\n viewportRuler: ViewportRuler,\n ngZone: NgZone\n): (hooks?: KbqAutoHideScrollStrategyHooks, config?: KbqAutoHideScrollStrategyConfig) => KbqAutoHideScrollStrategy {\n return (hooks?, config?) =>\n new KbqAutoHideScrollStrategy(scrollDispatcher, viewportRuler, ngZone, config ?? {}, hooks);\n}\n","import { ConnectionPositionPair, Overlay, ScrollStrategy } from '@angular/cdk/overlay';\nimport { InjectionToken } from '@angular/core';\n\nexport const POSITION_MAP: { [key: string]: ConnectionPositionPair } = {\n top: {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom'\n },\n topCenter: {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom'\n },\n topLeft: {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom'\n },\n topRight: {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom'\n },\n right: {\n originX: 'end',\n originY: 'center',\n overlayX: 'start',\n overlayY: 'center'\n },\n rightTop: {\n originX: 'end',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'top'\n },\n rightBottom: {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'bottom'\n },\n bottom: {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top'\n },\n bottomCenter: {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top'\n },\n bottomLeft: {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n },\n bottomRight: {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top'\n },\n left: {\n originX: 'start',\n originY: 'center',\n overlayX: 'end',\n overlayY: 'center'\n },\n leftTop: {\n originX: 'start',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'top'\n },\n leftBottom: {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'bottom'\n }\n};\n\nexport const EXTENDED_OVERLAY_POSITIONS = objectValues([\n POSITION_MAP.top,\n POSITION_MAP.topLeft,\n POSITION_MAP.topRight,\n POSITION_MAP.right,\n POSITION_MAP.rightTop,\n POSITION_MAP.rightBottom,\n POSITION_MAP.bottom,\n POSITION_MAP.bottomLeft,\n POSITION_MAP.bottomRight,\n POSITION_MAP.left,\n POSITION_MAP.leftTop,\n POSITION_MAP.leftBottom\n]);\n\nexport const TOP_POSITION_PRIORITY = objectValues([\n POSITION_MAP.top,\n POSITION_MAP.bottom,\n POSITION_MAP.right,\n POSITION_MAP.rightBottom,\n POSITION_MAP.leftBottom,\n POSITION_MAP.bottomLeft,\n POSITION_MAP.bottomRight\n]);\n\nexport const BOTTOM_POSITION_PRIORITY = objectValues([\n POSITION_MAP.bottom,\n POSITION_MAP.top,\n POSITION_MAP.topLeft,\n POSITION_MAP.topRight,\n POSITION_MAP.rightBottom,\n POSITION_MAP.leftBottom\n]);\n\nexport const RIGHT_POSITION_PRIORITY = objectValues([\n POSITION_MAP.right,\n POSITION_MAP.left,\n POSITION_MAP.leftTop,\n POSITION_MAP.leftBottom,\n POSITION_MAP.top,\n POSITION_MAP.bottom\n]);\n\nexport const LEFT_POSITION_PRIORITY = objectValues([\n POSITION_MAP.left,\n POSITION_MAP.right,\n POSITION_MAP.rightTop,\n POSITION_MAP.rightBottom,\n POSITION_MAP.top,\n POSITION_MAP.bottom\n]);\n\nexport const RIGHT_TOP_POSITION_PRIORITY = objectValues([\n POSITION_MAP.rightTop,\n POSITION_MAP.leftTop,\n POSITION_MAP.left,\n POSITION_MAP.leftBottom,\n POSITION_MAP.topLeft,\n POSITION_MAP.bottomLeft\n]);\n\nexport const RIGHT_BOTTOM_POSITION_PRIORITY = objectValues([\n POSITION_MAP.rightBottom,\n POSITION_MAP.leftBottom,\n POSITION_MAP.left,\n POSITION_MAP.leftTop,\n POSITION_MAP.topLeft,\n POSITION_MAP.bottomLeft\n]);\n\nexport const LEFT_TOP_POSITION_PRIORITY = objectValues([\n POSITION_MAP.leftTop,\n POSITION_MAP.rightTop,\n POSITION_MAP.right,\n POSITION_MAP.rightBottom,\n POSITION_MAP.topRight,\n POSITION_MAP.bottomRight\n]);\n\nexport const LEFT_BOTTOM_POSITION_PRIORITY = objectValues([\n POSITION_MAP.leftBottom,\n POSITION_MAP.rightBottom,\n POSITION_MAP.right,\n POSITION_MAP.rightTop,\n POSITION_MAP.topRight,\n POSITION_MAP.bottomRight\n]);\n\nexport const TOP_LEFT_POSITION_PRIORITY = objectValues([\n POSITION_MAP.topLeft,\n POSITION_MAP.topRight,\n POSITION_MAP.bottomLeft,\n POSITION_MAP.bottom,\n POSITION_MAP.bottomRight,\n POSITION_MAP.leftBottom,\n POSITION_MAP.rightBottom\n]);\n\nexport const TOP_RIGHT_POSITION_PRIORITY = objectValues([\n POSITION_MAP.topRight,\n POSITION_MAP.topLeft,\n POSITION_MAP.bottomRight,\n POSITION_MAP.bottom,\n POSITION_MAP.bottomLeft,\n POSITION_MAP.leftBottom,\n POSITION_MAP.rightBottom\n]);\n\nexport const BOTTOM_RIGHT_POSITION_PRIORITY = objectValues([\n POSITION_MAP.bottomRight,\n POSITION_MAP.bottomLeft,\n POSITION_MAP.topRight,\n POSITION_MAP.top,\n POSITION_MAP.topLeft,\n POSITION_MAP.leftTop,\n POSITION_MAP.rightTop\n]);\n\nexport const BOTTOM_LEFT_POSITION_PRIORITY = objectValues([\n POSITION_MAP.bottomLeft,\n POSITION_MAP.bottomRight,\n POSITION_MAP.topLeft,\n POSITION_MAP.top,\n POSITION_MAP.topRight,\n POSITION_MAP.rightTop,\n POSITION_MAP.leftTop\n]);\n\nexport const POSITION_PRIORITY_STRATEGY = {\n top: TOP_POSITION_PRIORITY,\n topLeft: TOP_LEFT_POSITION_PRIORITY,\n topRight: TOP_RIGHT_POSITION_PRIORITY,\n bottom: BOTTOM_POSITION_PRIORITY,\n bottomLeft: BOTTOM_LEFT_POSITION_PRIORITY,\n bottomRight: BOTTOM_RIGHT_POSITION_PRIORITY,\n left: LEFT_POSITION_PRIORITY,\n leftTop: LEFT_TOP_POSITION_PRIORITY,\n leftBottom: LEFT_BOTTOM_POSITION_PRIORITY,\n right: RIGHT_POSITION_PRIORITY,\n rightTop: RIGHT_TOP_POSITION_PRIORITY,\n rightBottom: RIGHT_BOTTOM_POSITION_PRIORITY\n};\n\nexport const POSITION_TO_CSS_MAP: { [key: string]: string } = {\n top: 'top',\n topLeft: 'top-left',\n topRight: 'top-right',\n right: 'right',\n rightTop: 'right-top',\n rightBottom: 'right-bottom',\n left: 'left',\n leftTop: 'left-top',\n leftBottom: 'left-bottom',\n bottom: 'bottom',\n bottomLeft: 'bottom-left',\n bottomRight: 'bottom-right'\n};\n\nexport const KBQ_CUSTOM_SCROLL_STRATEGY_PROVIDER = <T>(\n token: InjectionToken<T>,\n factory: (overlay: Overlay) => () => ScrollStrategy\n) => ({\n provide: token,\n deps: [Overlay],\n useFactory: factory\n});\n\nfunction arrayMap<T, S>(array: T[], iteratee: (item: T, index: number, arr: T[]) => S): S[] {\n let index = -1;\n const length = array === null ? 0 : array.length;\n const result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n\n return result;\n}\n\nfunction baseValues<T>(object: T[], props: string[]): T[] {\n return arrayMap(props, (key) => object[key]);\n}\n\nfunction objectValues<T>(object: T[]): T[] {\n return object === null ? [] : baseValues(object, Object.keys(object));\n}\n","import { coerceCssPixelValue } from '@angular/cdk/coercion';\n\n/**\n * Maximum height of an overlay panel's scrollable content, in pixels. `null` falls back to the\n * `--kbq-select-panel-size-max-height` design token.\n *\n * The cap covers the scrollable list only — a search field or a footer rendered beside it adds to the\n * panel's total height. With a `cdk-virtual-scroll-viewport` the value is an exact height rather than a\n * cap, because the viewport pins both its `min-height` and its `max-height` to the token.\n */\nexport type KbqPanelMaxHeight = number | null;\n\n/**\n * Renders `panelMaxHeight` as a CSS length for the `--kbq-select-panel-size-max-height` token.\n *\n * A non-finite value yields `null` so that Angular removes the inline custom property and the stylesheet\n * default applies again. A negative value is clamped to `0` because `max-height` rejects negative lengths\n * at computed-value time, which would drop the declaration and leave the list unbounded rather than at\n * its default height.\n * @docs-private\n */\nexport function kbqResolvePanelMaxHeightToken(panelMaxHeight: KbqPanelMaxHeight | undefined): string | null {\n // `numberAttribute` coerces `null` and other invalid bindings to `NaN`, so guard on finiteness\n // rather than on `null`, which never reaches us from a template binding.\n return Number.isFinite(panelMaxHeight) ? coerceCssPixelValue(Math.max(panelMaxHeight as number, 0)) : null;\n}\n\n/**\n * Default cap of an overlay panel's scrollable content, in pixels. Mirrors the stylesheet default of\n * `--kbq-select-panel-size-max-height` so that the two cannot drift apart.\n * @docs-private\n */\nexport const KBQ_PANEL_DEFAULT_MAX_HEIGHT = 256;\n\n/**\n * Geometry needed to work out how tall an anchored panel's scrollable list may be.\n * @docs-private\n */\nexport interface KbqPanelSpaceContext {\n /** Viewport-relative top of the element the panel is anchored to. */\n triggerTop: number;\n /** Viewport-relative bottom of the element the panel is anchored to. */\n triggerBottom: number;\n /** Height of the viewport the panel has to fit into. */\n viewportHeight: number;\n /** Margin the overlay keeps from the viewport edge, i.e. `cdkConnectedOverlayViewportMargin`. */\n viewportMargin: number;\n /**\n * Everything in the panel that is not the scrollable list and therefore adds to its total height: the\n * trigger gap, the list padding, a search field and a footer.\n */\n chromeHeight: number;\n}\n\n/**\n * How much room the panel's scrollable list has on each side of the trigger. Negative means it does not fit.\n * @docs-private\n */\nexport interface KbqPanelSideSpace {\n above: number;\n below: number;\n}\n\n/**\n * Measures how much room the panel's scrollable list has on either side of the trigger.\n *\n * Returns `null` for geometry that cannot be trusted — a collapsed trigger rect or a zero-height viewport, which\n * is what a DOM without layout reports, on the server and under jsdom.\n * @docs-private\n */\nexport function kbqResolvePanelSideSpace(context: KbqPanelSpaceContext): KbqPanelSideSpace | null {\n const { triggerTop, triggerBottom, viewportHeight, viewportMargin, chromeHeight } = context;\n\n if (![triggerTop, triggerBottom, viewportHeight, viewportMargin, chromeHeight].every(Number.isFinite)) {\n return null;\n }\n\n if (viewportHeight <= 0 || triggerBottom <= triggerTop) return null;\n\n return {\n above: triggerTop - viewportMargin - chromeHeight,\n below: viewportHeight - triggerBottom - viewportMargin - chromeHeight\n };\n}\n\n/**\n * What the DOM reports about the first row of a trigger that lays its content out in rows.\n * @docs-private\n */\nexport interface KbqTriggerFirstRowMeasurements {\n /** Viewport-relative top of the element the overlay is anchored to. */\n originTop: number;\n /** Viewport-relative bottom of the element the overlay is anchored to. */\n originBottom: number;\n /** Border-box top of the row container. */\n listTop: number;\n /** Border-box bottom of the row container. */\n listBottom: number;\n /** Viewport-relative bottom of the lowest element sitting on the first laid-out row. */\n firstRowBottom: number;\n /** Scroll offset of the row container, so that a scrolled container still reports its own first row. */\n listScrollTop: number;\n}\n\n/**\n * Distance from the trigger's top edge down to where a panel would start if the trigger had a single row —\n * equivalently, the trigger's height with rows 2..N removed.\n *\n * Returns `null` for geometry that cannot be trusted: a collapsed rect (the server, a DOM without layout), or\n * a row container that is not what drives the trigger's height, which a result reaching past the trigger's own\n * bottom edge gives away.\n * @docs-private\n */\nexport function kbqResolveTriggerFirstRowOffset(measurements: KbqTriggerFirstRowMeasurements): number | null {\n const { originTop, originBottom, listTop, listBottom, firstRowBottom, listScrollTop } = measurements;\n\n if (![originTop, originBottom, listTop, listBottom, firstRowBottom, listScrollTop].every(Number.isFinite)) {\n return null;\n }\n\n const originHeight = originBottom - originTop;\n\n if (originHeight <= 0) return null;\n\n // The first row measured in the container's own, unscrolled coordinates, plus the chrome the trigger keeps\n // above and below its rows — the matcher's padding and the field's border.\n const firstRowHeight = firstRowBottom + listScrollTop - listTop;\n const offset = listTop - originTop + firstRowHeight + (originBottom - listBottom);\n\n return offset > 0 && offset <= originHeight ? offset : null;\n}\n\n/**\n * Room the panel's scrollable list has when it is anchored to the trigger's first row instead of to the\n * trigger's bottom edge. The same arithmetic as {@link kbqResolvePanelSideSpace}, on a trigger cut to one row.\n * @docs-private\n */\nexport function kbqResolveOverlapPanelSpace(context: KbqPanelSpaceContext, firstRowOffset: number): number | null {\n const space = kbqResolvePanelSideSpace({ ...context, triggerBottom: context.triggerTop + firstRowOffset });\n\n return space && space.below;\n}\n\n/**\n * Everything the first-row anchor decision needs beyond {@link KbqPanelSpaceContext}.\n * @docs-private\n */\nexport interface KbqPanelAnchorOptions {\n /** Result of {@link kbqResolveTriggerFirstRowOffset}; `null` when there is no row to anchor to. */\n firstRowOffset: number | null;\n /** Height the scrollable list takes with no viewport clamp in force. */\n naturalListHeight: number;\n /** Whether the panel is already anchored to the first row, which widens the band it stays in. */\n anchored?: boolean;\n}\n\n/**\n * Whether the panel should be anchored below the trigger's first row and rendered over the rest of it.\n *\n * Three things have to hold. The trigger must have more than one row, or there is nothing to overlap. It must\n * be taller than the panel, or the room beside it is the better trade and the panel belongs on a side. And\n * the panel must fit there at its full height — the caller adds this as a THIRD `ConnectedPosition`,\n * and when no position fits the overlay falls back to whichever goes off-screen the least, so an anchor that\n * does not fit would outrank `above`/`below` on that fallback and move panels that have no business moving.\n * Gating on the fit keeps the fallback ranking exactly as it is without this anchor.\n *\n * `anchored` widens the height test by one row, so that deselecting a single option cannot bounce a panel\n * sitting right on the boundary across several hundred pixels.\n * @docs-private\n */\nexport function kbqShouldAnchorPanelToFirstRow(\n context: KbqPanelSpaceContext,\n { firstRowOffset, naturalListHeight, anchored = false }: KbqPanelAnchorOptions\n): boolean {\n if (firstRowOffset === null) return false;\n\n if (!Number.isFinite(naturalListHeight)) return false;\n\n // Read off the same rect the space calculation uses, so the two can never disagree.\n const triggerHeight = context.triggerBottom - context.triggerTop;\n\n // A single-row trigger has nothing to overlap.\n if (triggerHeight - firstRowOffset <= 1) return false;\n\n const hysteresis = anchored ? firstRowOffset : 0;\n\n if (triggerHeight + hysteresis <= context.chromeHeight + naturalListHeight) return false;\n\n // The overlay rejects a position whose top edge is off the top of the viewport, which a trigger scrolled\n // past the fold produces.\n if (context.triggerTop + firstRowOffset < 0) return false;\n\n const space = kbqResolveOverlapPanelSpace(context, firstRowOffset);\n\n return space !== null && space >= naturalListHeight;\n}\n","import { CdkOverlayOrigin } from '@angular/cdk/overlay';\nimport { ElementRef } from '@angular/core';\n\n/**\n * Default minimum width of an overlay panel, in pixels.\n *\n * Kept in sync by hand with `--kbq-dropdown-size-container-width-min` in `dropdown-tokens.scss`,\n * which expresses the same default for the dropdown's CSS-driven sizing.\n */\nexport const KBQ_PANEL_DEFAULT_MIN_WIDTH = 200;\n\n/**\n * Width of an overlay panel.\n *\n * - `'auto'` — matches the trigger width, but never narrower than `panelMinWidth`.\n * - `number` — an explicit width in pixels. `panelMinWidth` is not applied.\n * - `string` — an explicit CSS width (e.g. `fit-content`, `20rem`). `panelMinWidth` is not applied.\n * - `null`/`''` — the panel sizes to its content, but never narrower than the trigger or `panelMinWidth`.\n */\n// `string & {}` keeps the literal members visible to autocomplete while still allowing any CSS width.\nexport type KbqPanelWidth = 'auto' | number | (string & {}) | null | '';\n\n/** Minimum width of an overlay panel, in pixels. `null` applies no additional minimum. */\nexport type KbqPanelMinWidth = number | null;\n\n/**\n * Maximum width of an overlay panel, in pixels. `null` falls back to the `--kbq-panel-size-width-max`\n * design token.\n *\n * The cap is soft: it limits how far a panel grows with its content, but never makes a panel narrower\n * than its trigger, and never overrides an explicit `panelWidth`.\n */\nexport type KbqPanelMaxWidth = number | null;\n\n/**\n * Anything an overlay panel can be measured against.\n * @docs-private\n */\nexport type KbqPanelWidthOrigin = ElementRef<HTMLElement> | CdkOverlayOrigin | HTMLElement;\n\n/**\n * Resolved size of an overlay pane.\n *\n * Both keys are always present so that the result can be passed straight to `OverlayRef.updateSize()`,\n * which shallow-merges into the existing config — an omitted key would leave a stale value applied.\n * @docs-private\n */\nexport interface KbqResolvedPanelWidth {\n width: number | string;\n minWidth: number | string;\n}\n\n/**\n * Measures the rendered width of a panel's trigger.\n *\n * Uses `getBoundingClientRect()` because `getComputedStyle().width` resolves to the used\n * content-box width regardless of `box-sizing`, so subtracting borders from it double-counts them.\n * @docs-private\n */\nexport function kbqGetPanelWidthOrigin(origin: KbqPanelWidthOrigin): number {\n const element =\n origin instanceof CdkOverlayOrigin\n ? origin.elementRef.nativeElement\n : origin instanceof ElementRef\n ? origin.nativeElement\n : origin;\n\n return element.getBoundingClientRect().width;\n}\n\n/**\n * Resolves `panelWidth` and `panelMinWidth` into the `width` and `minWidth` of the overlay pane.\n *\n * `panelWidth` selects the sizing policy. The \"never narrower than the trigger\" rule belongs to the\n * automatic policies (`null` and `'auto'`); an explicit width is taken at face value.\n * @docs-private\n */\nexport function kbqResolvePanelWidth(\n panelWidth: KbqPanelWidth | undefined,\n panelMinWidth: KbqPanelMinWidth | undefined,\n triggerWidth: number\n): KbqResolvedPanelWidth {\n // `numberAttribute` coerces `null` and other invalid bindings to `NaN`, so guard on finiteness\n // rather than on `null`, which never reaches us from a template binding.\n const min = Number.isFinite(panelMinWidth) ? Math.max(panelMinWidth as number, 0) : 0;\n const floor = Math.max(min, Number.isFinite(triggerWidth) ? triggerWidth : 0);\n\n // Trigger-sized. The floor is resolved here rather than emitted as `minWidth` because\n // `KbqAbstractSelect.setOverlayPosition()` clears `minWidth` on viewport overflow, after having\n // derived the panel offset from the pre-clear width.\n if (panelWidth === 'auto') {\n return { width: floor, minWidth: '' };\n }\n\n // Content-sized. Only `null`/`undefined`/`''` opt in — `0` is an explicit width. A non-finite\n // `panelWidth` (e.g. `NaN` from an upstream computation) is treated the same way rather than\n // reaching the DOM unguarded, mirroring how `panelMinWidth`/`triggerWidth` are handled above.\n if (panelWidth == null || panelWidth === '' || (typeof panelWidth === 'number' && !Number.isFinite(panelWidth))) {\n return { width: '', minWidth: floor };\n }\n\n // Explicit width. `panelMinWidth` is not applied.\n return { width: panelWidth, minWidth: '' };\n}\n","/**\n * A simple (x, y) coordinate. Picked from the DOM's own `DOMPointReadOnly` rather than hand-rolled, so\n * a plain `{ x, y }` literal (e.g. from a `MouseEvent`) satisfies it without constructing a `DOMPoint` —\n * `DOMPoint` isn't implemented in every runtime (e.g. jsdom).\n * @docs-private\n */\nexport type KbqPoint = Pick<DOMPointReadOnly, 'x' | 'y'>;\n\n/**\n * A triangle described by its three vertices.\n * @docs-private\n */\nexport interface KbqTriangle {\n a: KbqPoint;\n b: KbqPoint;\n c: KbqPoint;\n}\n\n/**\n * Whether `point` lies within (or on the edge of) `rect`.\n * @docs-private\n */\nexport function isPointInRect(point: KbqPoint, rect: DOMRect): boolean {\n return point.x >= rect.left && point.x <= rect.right && point.y >= rect.top && point.y <= rect.bottom;\n}\n\n/**\n * Whether `point` lies within (or on the edge of) `triangle`.\n *\n * Uses the sign of the cross product of each triangle edge with the point: the point is inside\n * only if it's consistently on the same side of all three edges.\n * @docs-private\n */\nexport function isPointInTriangle(point: KbqPoint, triangle: KbqTriangle): boolean {\n const { a, b, c } = triangle;\n\n const sign = (p1: KbqPoint, p2: KbqPoint, p3: KbqPoint): number =>\n (p1.x - p3.x) * (p2.y - p3.y) - (p2.x - p3.x) * (p1.y - p3.y);\n\n const d1 = sign(point, a, b);\n const d2 = sign(point, b, c);\n const d3 = sign(point, c, a);\n\n const hasNegative = d1 < 0 || d2 < 0 || d3 < 0;\n const hasPositive = d1 > 0 || d2 > 0 || d3 > 0;\n\n return !(hasNegative && hasPositive);\n}\n\n/**\n * Builds the \"safe triangle\" connecting `origin` (typically the pointer position where it left a\n * trigger) to the top and bottom corners of `targetRect` (typically a submenu panel) that are nearest\n * to `origin` — the submenu can open on either side of its trigger, so the nearest edge is picked by\n * comparing distances rather than assuming a fixed side.\n * @docs-private\n */\nexport function getSafeTriangleVertices(origin: KbqPoint, targetRect: DOMRect): KbqTriangle {\n const nearX =\n Math.abs(targetRect.left - origin.x) <= Math.abs(targetRect.right - origin.x)\n ? targetRect.left\n : targetRect.right;\n\n return { a: origin, b: { x: nearX, y: targetRect.top }, c: { x: nearX, y: targetRect.bottom } };\n}\n","import { OverlayContainer } from '@angular/cdk/overlay';\nimport { ApplicationRef, ElementRef, Injectable, InjectionToken, Provider, inject } from '@angular/core';\n\n/**\n * Reference to the element used to locate the shadow root that should host the CDK overlay container.\n *\n * It can be the shadow host element itself (the common case — the MFE root element) or any element that already\n * lives inside the shadow tree. Provide it directly, as an `ElementRef`, or as a getter (useful when the element is\n * created after the providers are declared, e.g. resolved lazily at bootstrap).\n */\nexport type KbqShadowDomOverlayHost = HTMLElement | ElementRef<HTMLElement> | (() => Element | null | undefined);\n\n/**\n * Element used by {@link KbqShadowDomOverlayContainer} to locate the shadow root that should host overlays.\n *\n * When not provided, the container falls back to the application root component element.\n */\nexport const KBQ_SHADOW_DOM_OVERLAY_HOST = new InjectionToken<KbqShadowDomOverlayHost>('KBQ_SHADOW_DOM_OVERLAY_HOST');\n\n/** Marks the structural overlay stylesheet that {@link KbqShadowDomOverlayContainer} clones into a shadow root. */\nconst overlayStructuralStylesAttribute = 'data-kbq-overlay-structural-styles';\n\n/**\n * `OverlayContainer` that places the `.cdk-overlay-container` inside a shadow root instead of `document.body`.\n *\n * The default CDK `OverlayContainer` always appends its container to `document.body`. When the application is\n * rendered inside a shadow root (e.g. a Module Federation micro-frontend), overlays — toasts, modals, dropdowns,\n * tooltips, etc. — escape the shadow tree into the light DOM. There they lose access to the styles and theme tokens\n * scoped to the shadow root (Koobiq theme tokens are defined on the `.kbq-light` / `.kbq-dark` ancestor), which\n * results in unstyled overlays.\n *\n * This container resolves the target shadow root from {@link KBQ_SHADOW_DOM_OVERLAY_HOST} (or the root component when\n * the token is absent) and relocates the overlay container into it. After relocating, it also clones CDK's own\n * structural overlay stylesheet (`position`/`z-index`/backdrop, `.cdk-overlay-container:empty`) into the shadow root,\n * since those `document.head` styles do not cross the shadow boundary. If no shadow root is found — the common case\n * for an app rendered directly in the light DOM — the container is left on `document.body`, so it is safe to provide\n * unconditionally.\n *\n * Only **open** shadow roots can be resolved: a closed shadow root exposes neither `Element.shadowRoot` nor a\n * `ShadowRoot` from `getRootNode()`, so pass an element that already lives inside the closed tree if you must use one.\n *\n * Note: this fixes the overlay container *placement* and delivers the CDK structural overlay styles. The host\n * application is still responsible for delivering the **Koobiq component/theme styles** (the `.kbq-light` / `.kbq-dark`\n * tokens and component CSS) into the shadow root, since global `document.head` stylesheets do not cascade across a\n * shadow boundary.\n *\n * @see kbqShadowDomOverlayProvider\n */\n@Injectable()\nexport class KbqShadowDomOverlayContainer extends OverlayContainer {\n private readonly host = inject(KBQ_SHADOW_DOM_OVERLAY_HOST, { optional: true });\n private readonly applicationRef = inject(ApplicationRef);\n\n /** @internal CDK lifecycle hook — overridden to relocate the container into a shadow root. */\n protected override _createContainer(): void {\n // Let CDK create the container (and run its test-environment cleanup). It is appended to `document.body`.\n super._createContainer();\n\n const shadowRoot = this.resolveShadowRoot();\n\n if (shadowRoot) {\n // Relocate the container into the shadow root and deliver the structural overlay styles alongside it.\n shadowRoot.appendChild(this._containerElement);\n this.deliverStructuralStyles(shadowRoot);\n } else if (this.host != null) {\n // An explicit host was provided but did not resolve to an open shadow root (wrong element, a closed\n // shadow root, or an element not yet inside a shadow tree). The container stays on `document.body`, so\n // overlays would render unstyled — warn instead of failing silently.\n // eslint-disable-next-line no-console\n console.warn(\n '[KbqShadowDomOverlayContainer] The provided host did not resolve to an open shadow root; the ' +\n 'overlay container stays on document.body. Ensure the host element (or an element inside its ' +\n 'shadow tree) uses an open shadow root.'\n );\n }\n }\n\n /**\n * Clones CDK's structural overlay stylesheet into the shadow root.\n *\n * CDK ships the overlay's structural CSS as a `ViewEncapsulation.None` component, so Angular injects it as a\n * `<style>` in `document.head` synchronously — `OverlayContainer.getContainerElement()` loads it before\n * `_createContainer()` runs. Those rules do not cross the shadow boundary, so a relocated container would\n * otherwise be unpositioned. Cloning the already-injected stylesheet keeps it version-matched to the installed\n * `@angular/cdk` and is idempotent.\n */\n private deliverStructuralStyles(shadowRoot: ShadowRoot): void {\n if (shadowRoot.querySelector(`style[${overlayStructuralStylesAttribute}]`)) {\n return;\n }\n\n const sourceStyle = Array.from(this._document.head.querySelectorAll('style')).find((style) =>\n style.textContent?.includes('.cdk-overlay-pane')\n );\n\n if (sourceStyle) {\n const clone = sourceStyle.cloneNode(true) as HTMLStyleElement;\n\n clone.setAttribute(overlayStructuralStylesAttribute, '');\n shadowRoot.appendChild(clone);\n }\n }\n\n private resolveShadowRoot(): ShadowRoot | null {\n const element = this.resolveHostElement();\n\n if (!element) {\n return null;\n }\n\n // The host can be the shadow host itself (the common case — the MFE root element)...\n const ownShadowRoot = element.shadowRoot;\n\n if (ownShadowRoot) {\n return ownShadowRoot;\n }\n\n // ...or an element that already lives inside the shadow tree.\n const rootNode = element.getRootNode();\n\n return typeof ShadowRoot !== 'undefined' && rootNode instanceof ShadowRoot ? rootNode : null;\n }\n\n private resolveHostElement(): Element | null {\n if (this.host) {\n const resolved = typeof this.host === 'function' ? this.host() : this.host;\n\n if (resolved instanceof ElementRef) {\n return resolved.nativeElement;\n }\n\n return resolved ?? null;\n }\n\n // No explicit host provided — fall back to the application root component element.\n return this.applicationRef.components[0]?.location.nativeElement ?? null;\n }\n}\n\n/**\n * Providers that route all CDK overlays into a shadow root via {@link KbqShadowDomOverlayContainer}.\n *\n * Add it to the bootstrap providers of an application rendered inside a shadow root:\n *\n * ```ts\n * bootstrapApplication(AppComponent, {\n * providers: kbqShadowDomOverlayProvider(() => document.querySelector('my-mfe-root')!)\n * });\n * ```\n *\n * The provider replaces the global `OverlayContainer` token, so it cannot be combined with another custom\n * `OverlayContainer` (e.g. CDK's `FullscreenOverlayContainer`) — the last provider wins. Apps that need both must\n * subclass `KbqShadowDomOverlayContainer`.\n *\n * @param host element (or getter / `ElementRef`) inside the target shadow tree. When omitted, the application root\n * component element is used to resolve the shadow root.\n */\nexport const kbqShadowDomOverlayProvider = (host?: KbqShadowDomOverlayHost): Provider[] => {\n const providers: Provider[] = [{ provide: OverlayContainer, useClass: KbqShadowDomOverlayContainer }];\n\n if (host !== undefined) {\n providers.push({ provide: KBQ_SHADOW_DOM_OVERLAY_HOST, useValue: host });\n }\n\n return providers;\n};\n","import { InjectionToken, Provider, Type } from '@angular/core';\nimport { TooltipSizeArrowSize } from '@koobiq/design-tokens';\nimport { Observable } from 'rxjs';\nimport { KbqEnumValues } from '../utils';\n\nexport interface KbqParentPopup {\n closedStream: Observable<boolean>;\n}\n\n/**\n * InjectionToken for providing component with popup. Used in select and tree-select for tooltip.\n */\nexport const KBQ_PARENT_POPUP = new InjectionToken<KbqParentPopup>('kbq-parent-popup');\n\n/**\n * Contract of a pop-up anchored to the same element as a tooltip — a popover, a dropdown, a select and so on.\n *\n * A tooltip sharing its host with such a pop-up mutes itself while the pop-up is on screen, so the two never\n * compete for the same anchor and the focus restored by the closing pop-up does not re-open the tooltip.\n */\nexport interface KbqSiblingPopup {\n /**\n * Whether the pop-up overlay is currently attached. Unlike a visibility flag it must flip synchronously,\n * both when the overlay is attached and when it is detached.\n */\n readonly isAttached: boolean;\n /** Emits `true` when the pop-up opens and `false` when it closes. */\n readonly openedChange: Observable<boolean>;\n}\n\n/**\n * Element-level token for pop-ups sharing their trigger element with a tooltip. Multi-provided, so a single\n * element can carry several pop-ups at once — for example the filter-bar button with both a popover and a\n * dropdown attached to it.\n */\nexport const KBQ_SIBLING_POPUP = new InjectionToken<readonly KbqSiblingPopup[]>('kbq-sibling-popup');\n\n/**\n * Builds the multi-provider entry a pop-up trigger adds to its own `providers` to announce itself to a\n * tooltip on the same element.\n *\n * Every concrete trigger has to add it on its own: Angular copies `providers` to a subclass only when that\n * subclass has no decorator of its own, so inheriting from an already-announced trigger is not enough.\n */\nexport const kbqSiblingPopupProvider = (popup: Type<KbqSiblingPopup>): Provider => ({\n provide: KBQ_SIBLING_POPUP,\n useExisting: popup,\n multi: true\n});\n\nexport enum PopUpPlacements {\n Top = 'top',\n TopLeft = 'topLeft',\n TopRight = 'topRight',\n Right = 'right',\n RightTop = 'rightTop',\n RightBottom = 'rightBottom',\n Left = 'left',\n LeftTop = 'leftTop',\n LeftBottom = 'leftBottom',\n Bottom = 'bottom',\n BottomLeft = 'bottomLeft',\n BottomRight = 'bottomRight'\n}\n\nexport type KbqPopUpPlacementValues = KbqEnumValues<PopUpPlacements>;\n\nexport type KbqStickToWindowPlacementValues = KbqEnumValues<\n PopUpPlacements.Top | PopUpPlacements.Right | PopUpPlacements.Bottom | PopUpPlacements.Left\n>;\n\nexport enum PopUpVisibility {\n Initial = 'initial',\n Visible = 'visible',\n Hidden = 'hidden'\n}\n\nexport enum PopUpTriggers {\n Click = 'click',\n Focus = 'focus',\n Hover = 'hover',\n Keydown = 'keydown',\n Program = 'program'\n}\n\nexport enum PopUpSizes {\n Small = 'small',\n Medium = 'medium',\n Large = 'large',\n Custom = 'custom'\n}\n\nexport type KbqPopUpSizeValues = KbqEnumValues<PopUpSizes>;\n\n/**\n * Default value when configuring overlay in popups (Autocomplete, Datepicker, Dropdown, Select, Tags Autocomplete,\n * Tags Input, Timezone, TreeSelect).\n */\nexport const defaultOffsetY: number = 4;\n\n/**\n * Pane class applied to a connected overlay whose panel is positioned BELOW its trigger.\n *\n * Used instead of a physical `offsetY` gap: the pane sits flush with the trigger and the visual gap is\n * recreated as transparent `padding-top` inside the pane (see the `kbq-connected-overlay-gap` styles), so the\n * gap is covered by the pane (`pointer-events: auto`) and can no longer be clicked/hovered through.\n */\nexport const KBQ_CONNECTED_OVERLAY_BELOW_CLASS = 'kbq-connected-overlay_below';\n\n/**\n * Pane class applied to a connected overlay whose panel is positioned ABOVE its trigger (flipped).\n *\n * Mirror of {@link KBQ_CONNECTED_OVERLAY_BELOW_CLASS}: the visual gap is recreated as transparent\n * `padding-bottom` inside the pane so the flipped gap is not click/hover-through.\n */\nexport const KBQ_CONNECTED_OVERLAY_ABOVE_CLASS = 'kbq-connected-overlay_above';\n\n/**\n * Pane class applied to a connected overlay whose panel is anchored to the FIRST ROW of a trigger it\n * OVERLAPS — a multiline select whose tag rows have made it taller than the panel itself, with too little\n * room to open on either side of it.\n *\n * The panel ends up where it would for a single-row trigger, so the gap is the same transparent\n * `padding-top` as {@link KBQ_CONNECTED_OVERLAY_BELOW_CLASS}. It is a separate class because the room left\n * for the panel has to be measured from the first row rather than from the trigger's bottom edge, and the\n * class is how the component tells the two apart.\n */\nexport const KBQ_CONNECTED_OVERLAY_OVERLAP_CLASS = 'kbq-connected-overlay_overlap';\n\n/**\n * Variable used for offsetY(X) calculations when applying Angular Overlay\n *\n * @docs-private\n */\nexport const ARROW_BOTTOM_MARGIN_AND_HALF_HEIGHT = Math.round(parseInt(TooltipSizeArrowSize) * Math.sqrt(2));\n","import { FocusTrapInertStrategy } from '@angular/cdk/a11y';\n\n// Need replace EventListenerFocusTrapInertStrategy to EmptyFocusTrapStrategy for focus work correctly with open popover\nexport class EmptyFocusTrapStrategy implements FocusTrapInertStrategy {\n preventFocus(): void {}\n allowFocus(): void {}\n}\n","import { AnimationEvent } from '@angular/animations';\nimport { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport {\n ChangeDetectorRef,\n DestroyRef,\n Directive,\n ElementRef,\n EventEmitter,\n inject,\n OnDestroy,\n Renderer2,\n TemplateRef\n} from '@angular/core';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { PopUpPlacements, PopUpVisibility } from './constants';\nimport { KbqPopUpTrigger } from './pop-up-trigger';\n\n@Directive({\n host: {\n '(mouseenter)': 'hovered.next(true)',\n '(mouseleave)': 'hovered.next(false)'\n }\n})\nexport abstract class KbqPopUp implements OnDestroy {\n protected readonly renderer: Renderer2 = inject(Renderer2);\n protected readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n protected readonly changeDetectorRef: ChangeDetectorRef = inject(ChangeDetectorRef);\n readonly destroyRef = inject(DestroyRef);\n\n /** Stream that emits when the popup item is hovered. */\n readonly hovered = new BehaviorSubject<boolean>(false);\n\n trigger: KbqPopUpTrigger<unknown>;\n header: string | TemplateRef<any>;\n content: string | TemplateRef<any>;\n context: { $implicit: any } | null;\n\n classMap = {};\n\n warning: boolean;\n arrow: boolean;\n defaultPaddings: boolean;\n\n offset: number | null;\n\n visibility = PopUpVisibility.Initial;\n visibleChange = new EventEmitter<boolean>();\n\n protected prefix: string;\n\n /** Subject for notifying that the tooltip has been hidden from the view */\n protected readonly onHideSubject = new Subject<void>();\n\n protected closeOnInteraction: boolean = false;\n\n private showTimeoutId: any;\n private hideTimeoutId: any;\n\n ngOnDestroy() {\n clearTimeout(this.showTimeoutId);\n clearTimeout(this.hideTimeoutId);\n\n this.onHideSubject.complete();\n this.hovered.complete();\n }\n\n isTemplateRef(value: any): boolean {\n return value instanceof TemplateRef;\n }\n\n show(delay: number): void {\n if (this.hideTimeoutId) {\n clearTimeout(this.hideTimeoutId);\n }\n\n this.closeOnInteraction = true;\n\n this.showTimeoutId = setTimeout(() => {\n this.showTimeoutId = undefined;\n\n this.visibility = PopUpVisibility.Visible;\n this.visibleChange.emit(true);\n // Mark for check so if any parent component has set the\n // ChangeDetectionStrategy to OnPush it will be checked anyways\n this.markForCheck();\n\n if (this.trigger.triggerName === 'mouseenter') {\n this.addEventListenerForHide();\n }\n }, delay);\n }\n\n /**\n * Hides the popup after a specified delay.\n *\n * The hide timeout triggers the hiding of the popup by updating visibility and emitting relevant events.\n * Also, it marks for check to ensure proper change detection, especially for parent components with OnPush strategy.\n * @param delay - The delay in milliseconds before hiding the popup.\n */\n hide(delay: number): void {\n if (this.showTimeoutId) {\n clearTimeout(this.showTimeoutId);\n }\n\n this.hideTimeoutId = setTimeout(() => {\n this.hideTimeoutId = undefined;\n this.visibility = PopUpVisibility.Hidden;\n\n this.visibleChange.emit(false);\n this.onHideSubject.next();\n\n // Mark for check so if any parent component has set the\n // ChangeDetectionStrategy to OnPush it will be checked anyways\n this.markForCheck();\n }, delay);\n }\n\n isVisible(): boolean {\n return this.visibility === PopUpVisibility.Visible;\n }\n\n updateClassMap(placement: string, customClass: string, classMap?): void {\n // `customClass` may be a whitespace-separated list of class names; expand it into\n // individual keys so the native `[class]` binding (which doesn't tokenise object keys)\n // applies each class correctly.\n const customClasses: Record<string, boolean> = {};\n\n for (const token of (customClass ?? '').split(/\\s+/).filter(Boolean)) {\n customClasses[token] = true;\n }\n\n this.classMap = {\n [`${this.prefix}_placement-${placement}`]: true,\n ...customClasses,\n ...classMap\n };\n }\n\n /** Returns an observable that notifies when the tooltip has been hidden from view. */\n afterHidden(): Observable<void> {\n return this.onHideSubject.asObservable();\n }\n\n markForCheck(): void {\n this.changeDetectorRef.markForCheck();\n }\n\n detectChanges(): void {\n this.changeDetectorRef.detectChanges();\n }\n\n animationStart() {\n this.closeOnInteraction = false;\n }\n\n animationDone({ toState }: AnimationEvent): void {\n if (toState === PopUpVisibility.Hidden && !this.isVisible()) {\n this.onHideSubject.next();\n }\n\n if (toState === PopUpVisibility.Visible || toState === PopUpVisibility.Hidden) {\n this.closeOnInteraction = true;\n }\n }\n\n handleBodyInteraction(): void {\n if (this.closeOnInteraction) {\n this.hide(0);\n }\n }\n\n protected addEventListenerForHide() {\n this.elementRef.nativeElement.addEventListener('mouseleave', () => this.hide(0));\n }\n\n protected setStickPosition() {\n const oppositeSide = {\n [PopUpPlacements.Top]: PopUpPlacements.Bottom,\n [PopUpPlacements.Bottom]: PopUpPlacements.Top,\n [PopUpPlacements.Right]: PopUpPlacements.Left,\n [PopUpPlacements.Left]: PopUpPlacements.Right\n }[this.trigger.stickToWindow];\n\n if (!this.trigger.stickToWindow || !oppositeSide) return;\n\n this.arrow = false;\n\n if (this.trigger.container) {\n const { width, height } = this.elementRef.nativeElement.getBoundingClientRect();\n const { right, left, top, bottom } = this.trigger.container.getBoundingClientRect();\n\n if (this.trigger.stickToWindow === PopUpPlacements.Right) {\n this.renderer.setStyle(\n this.trigger.overlayRef?.overlayElement,\n 'left',\n coerceCssPixelValue(right - width)\n );\n } else if (this.trigger.stickToWindow === PopUpPlacements.Left) {\n this.renderer.setStyle(this.trigger.overlayRef?.overlayElement, 'left', coerceCssPixelValue(left));\n } else if (this.trigger.stickToWindow === PopUpPlacements.Top) {\n this.renderer.setStyle(this.trigger.overlayRef?.overlayElement, 'top', coerceCssPixelValue(top));\n } else if (this.trigger.stickToWindow === PopUpPlacements.Bottom) {\n this.renderer.setStyle(\n this.trigger.overlayRef?.overlayElement,\n 'top',\n coerceCssPixelValue(bottom - height)\n );\n }\n\n this.renderer.setStyle(this.trigger.overlayRef?.overlayElement, 'right', 'unset');\n this.renderer.setStyle(this.trigger.overlayRef?.overlayElement, 'bottom', 'unset');\n } else {\n this.renderer.setStyle(this.trigger.overlayRef?.overlayElement, this.trigger.stickToWindow, 0);\n this.renderer.setStyle(this.trigger.overlayRef?.overlayElement, oppositeSide, 'unset');\n }\n }\n}\n","import { Renderer2 } from '@angular/core';\n\nexport const applyPopupMargins = (renderer: Renderer2, element: HTMLElement, name: string, value: string) => {\n const classList = element.classList;\n\n if (\n classList.contains(`${name}_placement-top`) ||\n classList.contains(`${name}_placement-top-left`) ||\n classList.contains(`${name}_placement-top-right`)\n ) {\n renderer.setStyle(element, 'margin-bottom', value);\n }\n\n if (\n classList.contains(`${name}_placement-right`) ||\n classList.contains(`${name}_placement-right-top`) ||\n classList.contains(`${name}_placement-right-bottom`)\n ) {\n renderer.setStyle(element, 'margin-left', value);\n }\n\n if (\n classList.contains(`${name}_placement-bottom`) ||\n classList.contains(`${name}_placement-bottom-left`) ||\n classList.contains(`${name}_placement-bottom-right`)\n ) {\n renderer.setStyle(element, 'margin-top', value);\n }\n\n if (\n classList.contains(`${name}_placement-left`) ||\n classList.contains(`${name}_placement-left-top`) ||\n classList.contains(`${name}_placement-left-bottom`)\n ) {\n renderer.setStyle(element, 'margin-right', value);\n }\n};\n","import { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n CdkScrollable,\n ConnectedOverlayPositionChange,\n ConnectionPositionPair,\n FlexibleConnectedPositionStrategy,\n Overlay,\n OverlayConfig,\n OverlayRef,\n ScrollDispatcher,\n ScrollStrategy\n} from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ViewportRuler } from '@angular/cdk/scrolling';\nimport {\n ChangeDetectorRef,\n DestroyRef,\n Directive,\n ElementRef,\n EventEmitter,\n inject,\n NgZone,\n OnDestroy,\n OnInit,\n TemplateRef,\n Type,\n ViewContainerRef\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, interval, Observable, Subscription } from 'rxjs';\nimport { AsyncScheduler } from 'rxjs/internal/scheduler/AsyncScheduler';\nimport { distinctUntilChanged, filter, delay as rxDelay } from 'rxjs/operators';\nimport { ENTER, ESCAPE, SPACE } from '../keycodes';\nimport {\n EXTENDED_OVERLAY_POSITIONS,\n POSITION_MAP,\n POSITION_PRIORITY_STRATEGY,\n POSITION_TO_CSS_MAP\n} from '../overlay/overlay-position-map';\nimport {\n ARROW_BOTTOM_MARGIN_AND_HALF_HEIGHT,\n KbqPopUpPlacementValues,\n KbqSiblingPopup,\n KbqStickToWindowPlacementValues,\n PopUpPlacements,\n PopUpTriggers\n} from './constants';\nimport { KbqPopUp } from './pop-up';\n\ntype KbqPopupTriggerOffset = Pick<ConnectionPositionPair, 'offsetX' | 'offsetY'>;\n\nconst getOffset = (\n { originX, overlayX, originY, overlayY }: ConnectionPositionPair,\n { width, height }: DOMRect\n): KbqPopupTriggerOffset => {\n const offset: KbqPopupTriggerOffset = {};\n const elementWidthHalf = width / 2;\n const elementHeightHalf = height / 2;\n\n // alignment should be applied only if the element is small\n if (ARROW_BOTTOM_MARGIN_AND_HALF_HEIGHT > elementWidthHalf) {\n const PADDING = ARROW_BOTTOM_MARGIN_AND_HALF_HEIGHT - elementWidthHalf;\n\n if (originX === overlayX) {\n if (originX === 'start') {\n offset.offsetX = -PADDING;\n }\n\n if (originX === 'end') {\n offset.offsetX = PADDING;\n }\n }\n }\n\n // alignment should be applied only if the element is small\n if (ARROW_BOTTOM_MARGIN_AND_HALF_HEIGHT > elementHeightHalf) {\n const PADDING = ARROW_BOTTOM_MARGIN_AND_HALF_HEIGHT - elementHeightHalf;\n\n if (originY === overlayY) {\n if (originY === 'top') {\n offset.offsetY = -PADDING;\n }\n\n if (originY === 'bottom') {\n offset.offsetY = PADDING;\n }\n }\n }\n\n return offset;\n};\n\n/**\n * Abstract base directive for hover/focus/click-triggered pop-ups (e.g. tooltip and popover). It manages the\n * CDK overlay lifecycle, binds the trigger event listeners, resolves placement via a flexible connected position\n * strategy, and controls show/hide timing. Concrete subclasses supply the pop-up component type, its content,\n * and the overlay configuration.\n */\n@Directive({\n host: {\n '(mouseenter)': 'hovered.next(true)',\n '(mouseleave)': 'hovered.next(false)'\n }\n})\nexport abstract class KbqPopUpTrigger<T> implements OnInit, OnDestroy, KbqSiblingPopup {\n /** Stream that emits when the popupTrigger is hovered.\n * @docs-private */\n readonly hovered = new BehaviorSubject<boolean>(false);\n\n /** RxJS scheduler that drives the hide timeout; `undefined` falls back to the default async scheduler.\n * @docs-private */\n protected readonly scheduler = inject(AsyncScheduler, { optional: true }) || undefined;\n /** CDK Overlay service used to create and position the pop-up overlay.\n * @docs-private */\n protected readonly overlay: Overlay = inject(Overlay);\n /** Reference to the host element the pop-up is anchored to.\n * @docs-private */\n protected readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n /** Angular zone, used to run the hide timer outside Angular and re-enter when hiding.\n * @docs-private */\n protected readonly ngZone: NgZone = inject(NgZone);\n /** CDK ScrollDispatcher, used to track ancestor scroll containers so the pop-up repositions on scroll.\n * @docs-private */\n protected readonly scrollDispatcher: ScrollDispatcher = inject(ScrollDispatcher);\n /** CDK ViewportRuler, used to re-apply the stick-to-window position on window resize.\n * @docs-private */\n protected readonly viewportRuler: ViewportRuler = inject(ViewportRuler);\n /** View container the pop-up component portal is attached to.\n * @docs-private */\n protected readonly hostView: ViewContainerRef = inject(ViewContainerRef);\n /** Text direction (LTR/RTL) applied to the overlay when a `Directionality` is available.\n * @docs-private */\n protected readonly direction = inject(Directionality, { optional: true });\n /** Destroy reference used to auto-unsubscribe streams when the directive is destroyed.\n * @docs-private */\n protected readonly destroyRef = inject(DestroyRef);\n /** Nearest `CdkScrollable` ancestor, if any.\n * @docs-private */\n protected readonly scrollable = inject(CdkScrollable, { optional: true });\n /** Factory returning the overlay scroll strategy; provided by the concrete subclass.\n * @docs-private */\n protected abstract scrollStrategy: () => ScrollStrategy;\n\n /** Optional element used to anchor and measure the pop-up instead of the host element.\n * @docs-private */\n protected externalNativeElement: HTMLElement;\n\n /** Change detector used to refresh the trigger when its open state changes. */\n private popUpChangeDetectorRef = inject(ChangeDetectorRef);\n\n /** Whether the pop-up overlay is currently open. */\n get isOpen(): boolean {\n return this._isOpen;\n }\n\n set isOpen(value: boolean) {\n this._isOpen = value;\n\n this.popUpChangeDetectorRef.markForCheck();\n }\n\n /** Backing field for `isOpen`. */\n private _isOpen: boolean = false;\n\n /**\n * Whether the pop-up overlay is currently attached.\n *\n * Unlike `isOpen`, which follows the visibility of the pop-up component and therefore lags a task behind\n * `show()`/`hide()`, this flips synchronously — it is the window during which the overlay (and its\n * backdrop) is present in the DOM. Part of the {@link KbqSiblingPopup} contract.\n */\n get isAttached(): boolean {\n return !!this.instance;\n }\n\n /** Emits `true` when the pop-up opens and `false` when it closes. Part of the {@link KbqSiblingPopup} contract. */\n get openedChange(): Observable<boolean> {\n return this.visibleChange;\n }\n\n /** Delay in milliseconds before the pop-up is shown.\n * @docs-private */\n enterDelay: number = 0;\n /** Delay in milliseconds before the pop-up is hidden.\n * @docs-private */\n leaveDelay: number = 0;\n /** Name of the DOM event that last triggered show/hide (e.g. `mouseenter`, `focus`, `click`).\n * @docs-private */\n triggerName: string;\n /** Reference to the created overlay, or `null` when no overlay exists.\n * @docs-private */\n overlayRef: OverlayRef | null;\n /** Placement used to keep the pop-up stuck within the window bounds.\n * @docs-private */\n stickToWindow: KbqStickToWindowPlacementValues;\n /** Host container element of the pop-up.\n * @docs-private */\n container: HTMLElement;\n /** Whether the pop-up is disabled and therefore never shown; implemented by the subclass.\n * @docs-private */\n abstract disabled: boolean;\n /** Whether the arrow/pointer is rendered; implemented by the subclass.\n * @docs-private */\n abstract arrow: boolean;\n /** Space/comma-separated list of trigger events (`hover`, `focus`, `click`, `keydown`); implemented by the subclass.\n * @docs-private */\n abstract trigger: string;\n /** Extra CSS class applied to the pop-up; implemented by the subclass.\n * @docs-private */\n abstract customClass: string;\n /** Pop-up content as a string or template; implemented by the subclass.\n * @docs-private */\n abstract content: string | TemplateRef<any>;\n /** Emits when the resolved placement changes; implemented by the subclass.\n * @docs-private */\n abstract placementChange: EventEmitter<string>;\n /** Emits when the pop-up visibility changes; implemented by the subclass.\n * @docs-private */\n abstract visibleChange: EventEmitter<boolean>;\n /** CSS selector of the element used as the overlay's transform origin; implemented by the subclass.\n * @docs-private */\n protected abstract originSelector: string;\n /** Base overlay configuration (panel classes, etc.); implemented by the subclass.\n * @docs-private */\n protected abstract overlayConfig: OverlayConfig;\n /** Current resolved placement of the pop-up.\n * @docs-private */\n protected placement: KbqPopUpPlacementValues = PopUpPlacements.Top;\n /** Ordered list of fallback placements to try before the default priority.\n * @docs-private */\n protected placementPriority: string | string[] | null = null;\n /** Whether the pop-up is currently visible.\n * @docs-private */\n protected visible = false;\n /** Backing field for the subclass `content` input.\n * @docs-private */\n protected _content: string | TemplateRef<any>;\n /** Backing field for the subclass `disabled` input.\n * @docs-private */\n protected _disabled: boolean;\n /** Backing field for the subclass `customClass` input.\n * @docs-private */\n protected _customClass: string;\n /** Component portal attached to the overlay to render the pop-up.\n * @docs-private */\n protected portal: ComponentPortal<T>;\n /** Currently attached pop-up component instance, or `null` when closed.\n * @docs-private */\n protected instance: any | null;\n /** Map of event name to the handler currently bound on the host element.\n * @docs-private */\n protected listeners = new Map<string, EventListener>();\n /** Subscription to the streams that should close the pop-up.\n * @docs-private */\n protected closingActionsSubscription: Subscription;\n /** Map of placement name to its CDK connected position pair.\n * @docs-private */\n protected readonly availablePositions: { [key: string]: ConnectionPositionPair } = POSITION_MAP;\n /** Last mouse event, used to position the pop-up relative to the cursor.\n * @docs-private */\n protected mouseEvent?: MouseEvent;\n /** Flexible connected position strategy driving the overlay.\n * @docs-private */\n protected strategy: FlexibleConnectedPositionStrategy;\n\n /** Hide pop-up with timeout. Need if you want to show pop-up after leaving trigger\n * @docs-private */\n protected hideWithTimeout: boolean = false;\n\n /** prevents closure by any event\n * @docs-private */\n protected preventClose: boolean = false;\n\n /** Applies the placement (and modifier) CSS classes to the open pop-up; implemented by the subclass.\n * @docs-private */\n abstract updateClassMap(newPlacement?: string): void;\n\n /** Pushes the current inputs (content, arrow, offset, …) into the open pop-up; implemented by the subclass.\n * @docs-private */\n abstract updateData(): void;\n\n /** Returns the stream of events that should close the pop-up; implemented by the subclass.\n * @docs-private */\n abstract closingActions(): Observable<any>;\n\n /** Returns the component type to attach as the pop-up overlay; implemented by the subclass.\n * @docs-private */\n abstract getOverlayHandleComponentType(): Type<T>;\n\n /** Binds the DOM event listeners for the configured triggers. */\n ngOnInit(): void {\n this.initListeners();\n }\n\n /** Disposes the overlay and removes all bound event listeners. */\n ngOnDestroy(): void {\n this.overlayRef?.dispose();\n\n this.listeners.forEach(this.removeEventListener);\n\n this.listeners.clear();\n }\n\n /** Sets the placement (falling back to `Top` on an unknown value) and refreshes the classes and position.\n * @docs-private */\n updatePlacement(value: KbqPopUpPlacementValues) {\n if (POSITION_TO_CSS_MAP[value]) {\n this.placement = value;\n\n this.updateClassMap();\n } else {\n this.placement = PopUpPlacements.Top;\n\n // eslint-disable-next-line no-console\n console.warn(`Unknown position: ${value}. Will used default position: ${this.placement}`);\n }\n\n if (this.visible) {\n this.updatePosition();\n }\n }\n\n /** Sets the ordered list of fallback placements, or clears it when the value is empty.\n * @docs-private */\n updatePlacementPriority(value) {\n if (value && value.length > 0) {\n this.placementPriority = value;\n } else {\n this.placementPriority = null;\n }\n }\n\n /** Coerces and applies an external visibility value by showing or hiding the pop-up when it changes.\n * @docs-private */\n updateVisible(externalValue: boolean) {\n const value = coerceBooleanProperty(externalValue);\n\n if (this.visible !== value) {\n this.visible = value;\n\n if (value) {\n this.show();\n } else {\n this.hide();\n }\n }\n }\n\n /** Closes the pop-up when `Escape` is pressed while it is open. Bound to the host `keydown` event.\n * @docs-private */\n keydownHandler(event: KeyboardEvent) {\n if (this.isOpen && event.keyCode === ESCAPE) {\n this.hide();\n }\n }\n\n /** Hides the pop-up. Bound to the host `touchend` event.\n * @docs-private */\n touchendHandler() {\n this.hide();\n }\n\n /** Creates the overlay (if needed) and shows the pop-up after `delay` ms, wiring its visibility stream.\n * @docs-private */\n show(delay: number = this.enterDelay): void {\n if (this.disabled || this.instance) {\n return;\n }\n\n this.overlayRef = this.createOverlay();\n this.subscribeOnClosingActions();\n this.detach();\n\n this.portal = this.portal || new ComponentPortal(this.getOverlayHandleComponentType(), this.hostView);\n\n this.instance = this.overlayRef.attach(this.portal).instance as KbqPopUp;\n\n this.instance.trigger = this;\n\n this.instance.afterHidden().pipe(takeUntilDestroyed(this.destroyRef)).subscribe(this.detach);\n\n this.updateClassMap();\n\n this.updateData();\n\n this.instance.visibleChange\n .pipe(distinctUntilChanged(), takeUntilDestroyed(this.destroyRef))\n .subscribe((value) => {\n this.visible = value;\n this.visibleChange.emit(value);\n this.isOpen = value;\n });\n\n this.updatePosition();\n\n this.instance.show(delay);\n\n // The position strategy re-applies the overlay position on window resize (its ViewportRuler\n // subscription is created inside OverlayRef.attach(), i.e. before this one), wiping the manual\n // styles written by setStickPosition. Re-apply them after the strategy has run.\n // No-op when stickToWindow is not set.\n this.viewportRuler\n .change()\n .pipe(takeUntilDestroyed(this.instance.destroyRef))\n .subscribe(() => this.instance?.setStickPosition());\n\n if (this.hideWithTimeout && this.trigger.includes(PopUpTriggers.Hover)) {\n this.ngZone.runOutsideAngular(() => {\n interval(this.leaveDelay, this.scheduler)\n .pipe(\n filter(() => this.trigger.includes(PopUpTriggers.Hover)),\n filter(() => !this.hovered.getValue() && !this.instance?.hovered.getValue()),\n takeUntilDestroyed(this.instance?.destroyRef)\n )\n .subscribe(() => this.hide());\n });\n }\n }\n\n /** Hides the pop-up after `delay` ms, honoring `preventClose` and the hover state on mouseleave.\n * @docs-private */\n hide(delay: number = this.leaveDelay) {\n if (this.preventClose) return;\n\n if (\n (this.instance && this.triggerName !== 'mouseleave') ||\n (this.triggerName === 'mouseleave' && !this.instance?.hovered.getValue())\n ) {\n this.ngZone.run(() => this.instance?.hide(delay));\n }\n }\n\n /** Detaches the overlay (if attached) and clears the current pop-up instance.\n * @docs-private */\n detach = (): void => {\n if (this.overlayRef?.hasAttached()) {\n this.overlayRef.detach();\n }\n\n this.instance = null;\n };\n\n /** Create the overlay config and position strategy\n * @docs-private */\n createOverlay(): OverlayRef {\n if (this.overlayRef) {\n return this.overlayRef;\n }\n\n // Create connected position strategy that listens for scroll events to reposition.\n this.strategy = this.overlay\n .position()\n .flexibleConnectedTo(this.getNativeElement())\n .withTransformOriginOn(this.originSelector)\n .withFlexibleDimensions(false)\n .withPositions([...EXTENDED_OVERLAY_POSITIONS])\n .withLockedPosition()\n .withScrollableContainers(this.scrollDispatcher.getAncestorScrollContainers(this.getNativeElement()));\n\n this.strategy.positionChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(this.onPositionChange);\n\n this.overlayRef = this.overlay.create({\n ...this.overlayConfig,\n direction: this.direction || undefined,\n positionStrategy: this.strategy,\n scrollStrategy: this.scrollStrategy()\n });\n\n this.subscribeOnClosingActions();\n\n this.overlayRef.detachments().pipe(takeUntilDestroyed(this.destroyRef)).subscribe(this.detach);\n\n return this.overlayRef;\n }\n\n /** Resets the overlay position origin back to the host element.\n * @docs-private */\n resetOrigin() {\n this.strategy.setOrigin(this.getNativeElement());\n }\n\n /** Maps the CDK connection position back to a placement name, emits `placementChange`, and updates classes.\n * @docs-private */\n onPositionChange = ($event: ConnectedOverlayPositionChange): void => {\n if (!this.instance) return;\n\n let newPlacement = this.placement;\n\n const { originX, originY, overlayX, overlayY } = $event.connectionPair;\n\n Object.keys(this.availablePositions).some((key) => {\n if (\n originX === this.availablePositions[key].originX &&\n originY === this.availablePositions[key].originY &&\n overlayX === this.availablePositions[key].overlayX &&\n overlayY === this.availablePositions[key].overlayY\n ) {\n newPlacement = key as PopUpPlacements;\n\n return true;\n }\n\n return false;\n });\n\n this.placementChange.emit(newPlacement);\n\n this.updateClassMap(newPlacement);\n\n this.instance.detectChanges();\n };\n\n /** Rebinds the host DOM listeners (click/hover/focus/keydown) according to the configured triggers.\n * @docs-private */\n initListeners() {\n this.clearListeners();\n\n if (this.trigger.includes(PopUpTriggers.Click)) {\n this.listeners.set(...this.createListener('click', this.show));\n }\n\n if (this.trigger.includes(PopUpTriggers.Hover)) {\n this.listeners\n .set(...this.createListener('mouseenter', this.show))\n .set(...this.createListener('mouseleave', this.getMouseLeaveListener()));\n }\n\n if (this.trigger.includes(PopUpTriggers.Focus)) {\n this.listeners\n .set(...this.createListener('focus', this.show))\n .set(...this.createListener('blur', this.hide));\n }\n\n if (this.trigger.includes(PopUpTriggers.Keydown)) {\n this.listeners.set('keydown', (event) => {\n if (event instanceof KeyboardEvent && [ENTER, SPACE].includes(event.keyCode)) {\n setTimeout(() => this.show());\n }\n });\n }\n\n this.listeners.forEach(this.addEventListener);\n }\n\n /** Returns the `mouseleave` handler — a delayed hide when `hideWithTimeout` is set, otherwise an immediate hide.\n * @docs-private */\n getMouseLeaveListener() {\n if (this.hideWithTimeout) {\n return () => setTimeout(() => this.hide(), this.leaveDelay);\n }\n\n return this.hide;\n }\n\n /** Updates the position of the current popover.\n * @docs-private */\n updatePosition(reapplyPosition: boolean = false) {\n this.overlayRef = this.createOverlay();\n\n this.subscribeOnClosingActions();\n\n const position = (this.overlayRef.getConfig().positionStrategy as FlexibleConnectedPositionStrategy)\n .withPositions(this.getAdjustedPositions())\n .withPush(true);\n\n if (reapplyPosition) {\n setTimeout(() => position.reapplyLastPosition());\n }\n }\n\n /** Moves browser focus to the pop-up's native element.\n * @docs-private */\n focus() {\n this.getNativeElement().focus();\n }\n\n /** Returns the element the pop-up is bound to: the external element when set, otherwise the host element.\n * @docs-private */\n getNativeElement(): HTMLElement {\n return this.externalNativeElement || this.elementRef.nativeElement;\n }\n\n /** Sets an external element to anchor and measure the pop-up against instead of the host element.\n * @docs-private */\n setExternalNativeElement(value: HTMLElement) {\n this.externalNativeElement = value;\n }\n\n /**\n * Returns a list of positions that are aligned with the element's dimensions and offsets.\n * @docs-private */\n protected getAdjustedPositions(): ConnectionPositionPair[] {\n const res: ConnectionPositionPair[] = [];\n\n for (const pos of this.getPrioritizedPositions()) {\n const offset: KbqPopupTriggerOffset = this.arrow\n ? getOffset(pos, this.getNativeElement().getBoundingClientRect())\n : {};\n\n res.push({\n ...pos,\n ...offset\n });\n }\n\n return res;\n }\n\n /** Maps a priority placement value (or array of values) to the matching connected position pairs.\n * @docs-private */\n protected getPriorityPlacementStrategy(value: string | string[]): ConnectionPositionPair[] {\n const result: ConnectionPositionPair[] = [];\n const possiblePositions = Object.keys(this.availablePositions);\n\n if (Array.isArray(value)) {\n value.forEach((position: string) => {\n if (possiblePositions.includes(position)) {\n result.push(this.availablePositions[position]);\n }\n });\n } else if (possiblePositions.includes(value)) {\n result.push(this.availablePositions[value]);\n }\n\n return result;\n }\n\n /** Returns the positions to try: the custom `placementPriority` when set, otherwise the default strategy.\n * @docs-private */\n protected getPrioritizedPositions() {\n if (this.placementPriority) {\n return this.getPriorityPlacementStrategy(this.placementPriority);\n }\n\n return POSITION_PRIORITY_STRATEGY[this.placement];\n }\n\n /** Removes all bound host event listeners and clears the listener map.\n * @docs-private */\n protected clearListeners() {\n this.listeners.forEach(this.removeEventListener);\n\n this.listeners.clear();\n }\n\n /** Wraps a trigger handler so it records the active trigger name and mouse event before running. */\n private createListener(name: string, listener: () => void): [string, (event: unknown) => void] {\n return [\n name,\n (event: unknown) => {\n this.triggerName = name;\n this.saveMouseEvent(event as MouseEvent);\n\n return listener.call(this);\n }\n ];\n }\n\n /** Remembers the last mouse event on `mouseenter`, used for cursor-relative positioning. */\n private saveMouseEvent(event: MouseEvent) {\n if (this.triggerName === 'mouseenter') {\n this.mouseEvent = event;\n }\n }\n\n /** Binds a single event listener to the pop-up's native element. */\n private addEventListener = (listener: EventListener, event: string) => {\n this.getNativeElement().addEventListener(event, listener);\n };\n\n /** Unbinds a single event listener from the pop-up's native element. */\n private removeEventListener = (listener: EventListener, event: string) => {\n this.getNativeElement().removeEventListener(event, listener);\n };\n\n /** (Re)subscribes to the closing-action streams and hides the pop-up, ignoring prevented click events. */\n private subscribeOnClosingActions() {\n this.closingActionsSubscription?.unsubscribe();\n\n this.closingActionsSubscription = this.closingActions()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .pipe(rxDelay(0))\n .subscribe((event) => {\n if (event?.type === 'click' && event.kbqPopoverPreventHide) {\n return;\n }\n\n this.hide();\n });\n }\n}\n","import { Overlay, RepositionScrollStrategy, ScrollStrategy } from '@angular/cdk/overlay';\nimport { inject, InjectionToken } from '@angular/core';\n\n/**\n * Minimum option count threshold for displaying select search.\n * Search is hidden when fewer options are available.\n */\nexport const KBQ_SELECT_SEARCH_MIN_OPTIONS_THRESHOLD = 10;\n\n/**\n * The select panel will only \"fit\" inside the viewport if it is positioned at\n * this value or more away from the viewport boundary.\n */\nexport const SELECT_PANEL_VIEWPORT_PADDING = 8;\n\n/**\n * Injection token that determines the scroll handling while a select is open.\n *\n * The root default keeps the select usable when it is reached outside `KbqSelectModule`'s injector - imported\n * as a bare standalone component, pulled in through another standalone component (`KbqTimezoneSelect`,\n * `KbqCalendarHeader`), or rendered in a component built from the root injector, as `KbqModalService` does.\n * Providing the token anywhere still wins over this default.\n */\nexport const KBQ_SELECT_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>('kbq-select-scroll-strategy', {\n providedIn: 'root',\n factory: () => kbqSelectScrollStrategyProviderFactory(inject(Overlay))\n});\n\n/** @docs-private */\nexport function kbqSelectScrollStrategyProviderFactory(overlay: Overlay): () => RepositionScrollStrategy {\n return () => overlay.scrollStrategies.reposition();\n}\n\n/** @docs-private */\nexport const KBQ_SELECT_SCROLL_STRATEGY_PROVIDER = {\n provide: KBQ_SELECT_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: kbqSelectScrollStrategyProviderFactory\n};\n","import { CdkConnectedOverlay, ConnectedPosition } from '@angular/cdk/overlay';\nimport {\n AfterContentInit,\n booleanAttribute,\n ChangeDetectorRef,\n Directive,\n ElementRef,\n EventEmitter,\n inject,\n input,\n OnDestroy,\n Signal,\n viewChild\n} from '@angular/core';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { KBQ_FORM_FIELD_REF, KbqFormFieldRef } from '../form-field';\nimport { END, ESCAPE, HOME, SPACE } from '../keycodes';\nimport {\n KBQ_PANEL_DEFAULT_MAX_HEIGHT,\n KbqPanelSpaceContext,\n kbqResolveTriggerFirstRowOffset,\n kbqShouldAnchorPanelToFirstRow\n} from '../overlay/panel-height';\nimport {\n kbqGetPanelWidthOrigin,\n KbqPanelMinWidth,\n KbqPanelWidth,\n KbqPanelWidthOrigin,\n kbqResolvePanelWidth\n} from '../overlay/panel-width';\nimport { KBQ_CONNECTED_OVERLAY_OVERLAP_CLASS } from '../pop-up/constants';\nimport { KBQ_WINDOW } from '../tokens';\nimport { KBQ_SELECT_SEARCH_MIN_OPTIONS_THRESHOLD, SELECT_PANEL_VIEWPORT_PADDING } from './constants';\n\n@Directive({\n selector: 'kbq-select-trigger, [kbq-select-trigger]'\n})\nexport class KbqSelectTrigger {}\n\n@Directive({\n selector: 'kbq-select-matcher, [kbq-select-matcher]'\n})\nexport class KbqSelectMatcher {\n readonly useDefaultHandlers = input<boolean, unknown>(true, { transform: booleanAttribute });\n}\n\n@Directive({\n selector: '[kbq-select-search-empty-result]',\n host: {\n class: 'kbq-select-search-empty-result kbq-select__no-options-message'\n },\n exportAs: 'kbqSelectSearchEmptyResult'\n})\nexport class KbqSelectSearchEmptyResult {}\n\n@Directive({\n selector: 'kbq-select-footer, [kbq-select-footer]',\n host: { class: 'kbq-select__footer' }\n})\nexport class KbqSelectFooter {}\n\n@Directive({\n selector: '[kbqSelectSearch]',\n host: {\n '(keydown)': 'handleKeydown($event)'\n },\n exportAs: 'kbqSelectSearch'\n})\nexport class KbqSelectSearch implements AfterContentInit, OnDestroy {\n protected formField = inject<KbqFormFieldRef>(KBQ_FORM_FIELD_REF, { optional: true })!;\n\n readonly changes: EventEmitter<string> = new EventEmitter<string>();\n\n isSearchChanged: boolean = false;\n\n get ngControl() {\n return this.formField.control().ngControl;\n }\n\n private searchChangesSubscription: Subscription = new Subscription();\n\n constructor() {\n this.formField.canCleanerClearByEsc = false;\n this.formField.inOverlay.set(true);\n }\n\n setPlaceholder(value: string): void {\n this.formField.control().placeholder = value;\n }\n\n hasPlaceholder(): boolean {\n return !!this.formField?.control.placeholder;\n }\n\n focus(): void {\n this.formField.focus();\n }\n\n reset(): void {\n this.ngControl?.reset();\n }\n\n value() {\n return this.formField.control().value;\n }\n\n ngAfterContentInit(): void {\n if (this.formField.control().controlType !== 'input') {\n throw Error('KbqSelectSearch does not work without kbqInput');\n }\n\n if (!this.ngControl) {\n throw Error('KbqSelectSearch does not work without ngControl');\n }\n\n Promise.resolve().then(() => {\n this.searchChangesSubscription = this.ngControl.valueChanges!.subscribe((value) => {\n this.isSearchChanged = true;\n this.changes.next(value);\n });\n });\n }\n\n ngOnDestroy(): void {\n this.searchChangesSubscription.unsubscribe();\n }\n\n handleKeydown(event: KeyboardEvent) {\n if (event.keyCode === ESCAPE) {\n if (this.value()) {\n this.reset();\n event.stopPropagation();\n }\n }\n\n if ([SPACE, HOME, END].includes(event.keyCode)) {\n event.stopPropagation();\n }\n }\n}\n\n/**\n * Abstract class representing a customizable select component with an overlay.\n *\n * This class provides base functionality for handling the overlay positioning.\n * @docs-private\n */\n@Directive()\nexport abstract class KbqAbstractSelect {\n protected overlayDir: CdkConnectedOverlay;\n protected triggerRect: DOMRect;\n\n /** Positions the `cdkConnectedOverlayPositions` input reads. */\n abstract positions: ConnectedPosition[];\n\n /** Whether the trigger lays its selected values out in rows. */\n protected abstract readonly multiline: Signal<boolean>;\n\n /** Scrollable option list inside the panel. */\n protected abstract readonly optionsContainer: Signal<ElementRef<HTMLElement> | undefined>;\n\n /** Margin the overlay keeps from the viewport edge, i.e. `cdkConnectedOverlayViewportMargin`. */\n protected abstract readonly viewportMargin: number;\n\n /**\n * Row container of a multi-selection trigger. Absent for a single value, an empty trigger and a custom\n * matcher or trigger — all of which have no rows for the panel to anchor to.\n */\n protected readonly multilineMatchList = viewChild<ElementRef<HTMLElement>>('multilineMatchList');\n\n protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n protected readonly window = inject(KBQ_WINDOW);\n\n /** Whether the panel is open. Declared as a method because the two selects spell the state differently. */\n protected abstract isPanelOpen(): boolean;\n\n /** Element the overlay is positioned and sized against. */\n protected abstract getOverlayOriginElement(): HTMLElement | undefined;\n\n /** Overlay panel class. */\n protected readonly overlayPanelClass = 'kbq-select-overlay';\n\n /** Width of the overlay panel. */\n protected overlayWidth: string | number = '';\n\n /** Minimum width of the overlay panel. */\n protected overlayMinWidth: string | number = '';\n\n /**\n * Height of everything in the panel that is not the option list — the trigger gap the pane pads itself\n * with, the list padding, a search field and a footer.\n *\n * The same for every anchor: the below and overlap panes pad the top, the above pane pads the bottom, and\n * all three pad by the same gap — which is what keeps the anchor decision from feeding back into itself.\n */\n private panelChromeHeight = 0;\n\n /** Transparent gap the pane pads itself with, which the anchor has to be raised by. */\n private panelGapHeight = 0;\n\n /**\n * Cap the option list is rendered with, in pixels. Measured off the panel rather than derived from\n * `panelMaxHeight`, because `--kbq-select-panel-size-max-height` is what the list actually obeys and a\n * consumer can override it. Seeded with the stylesheet's own default, which is what a DOM that computes\n * no layout — the server, jsdom — leaves in force.\n */\n private panelMaxHeightCap = KBQ_PANEL_DEFAULT_MAX_HEIGHT;\n\n private resizeSubscription = Subscription.EMPTY;\n\n /**\n * Resolves the overlay panel size for the current trigger geometry and stores it for the\n * `cdkConnectedOverlay` width bindings.\n */\n protected updateOverlayWidth(\n panelWidth: KbqPanelWidth,\n panelMinWidth: KbqPanelMinWidth,\n origin: KbqPanelWidthOrigin\n ): void {\n const { width, minWidth } = kbqResolvePanelWidth(panelWidth, panelMinWidth, kbqGetPanelWidthOrigin(origin));\n\n this.overlayWidth = width;\n this.overlayMinWidth = minWidth;\n }\n\n /**\n * Freezes the panel at its rendered width so that filtering the options does not reflow it.\n * Does nothing when the width is already pinned.\n */\n protected lockOverlayWidthForSearch(panel: ElementRef<HTMLElement> | undefined): void {\n // Compare against the unset sentinel rather than a truthy check — `overlayWidth` can\n // legitimately resolve to `0` for an explicit zero-width panel, which is falsy but pinned.\n if (this.overlayWidth !== '') return;\n\n const measuredPanelWidth = panel?.nativeElement.getBoundingClientRect().width;\n\n if (measuredPanelWidth) {\n this.overlayWidth = measuredPanelWidth;\n }\n }\n\n protected setOverlayPosition() {\n if (!this.overlayDir.overlayRef) return;\n\n this.resetOverlay();\n\n const overlayRect = this.getOverlayRect();\n // Window width without scrollbar\n const windowWidth = this.overlayDir.overlayRef?.hostElement.clientWidth;\n let offsetX: number = 0;\n let overlayMaxWidth: number;\n\n // Determine if select overflows on either side.\n const leftOverflow = -overlayRect.left;\n const rightOverflow = overlayRect.right - windowWidth;\n\n // If the element overflows on either side, reduce the offset to allow it to fit.\n if (leftOverflow > 0 || rightOverflow > 0) {\n [offsetX, overlayMaxWidth] = this.calculateOverlayOffsetX(offsetX);\n this.overlayDir.overlayRef.overlayElement.style.maxWidth = `${overlayMaxWidth}px`;\n // reset the minWidth property\n this.overlayDir.overlayRef.overlayElement.style.minWidth = '';\n }\n\n // Set the offset directly in order to avoid having to go through change detection and\n // potentially triggering \"changed after it was checked\" errors. Round the value to avoid\n // blurry content in some browsers.\n this.overlayDir.offsetX = Math.round(offsetX);\n this.overlayDir.overlayRef.updatePosition();\n }\n\n protected calculateOverlayOffsetX(baseOffsetX: number): number[] {\n let offsetX = baseOffsetX;\n const windowWidth = this.overlayDir.overlayRef?.hostElement.clientWidth;\n const { left: leftIndent, right: triggerRight, width: triggerWidth } = this.triggerRect;\n const { width: overlayRectWidth } = this.getOverlayRect();\n const rightIndent = windowWidth - triggerRight;\n // Setting direction of dropdown expansion\n const isRightDirection = leftIndent <= rightIndent;\n\n const indent = isRightDirection ? rightIndent : leftIndent;\n const maxDropdownWidth = indent + triggerWidth - SELECT_PANEL_VIEWPORT_PADDING;\n const overlayMaxWidth = overlayRectWidth < maxDropdownWidth ? overlayRectWidth : maxDropdownWidth;\n\n if (!isRightDirection) {\n const leftOffset = triggerRight - overlayMaxWidth;\n\n offsetX -= leftIndent - leftOffset;\n }\n\n return [offsetX, overlayMaxWidth];\n }\n\n protected getOverlayRect(): DOMRect {\n return this.overlayDir.overlayRef.overlayElement.getBoundingClientRect();\n }\n\n protected resetOverlay(): void {\n this.overlayDir.overlayRef.hostElement.classList.add(this.overlayPanelClass);\n this.overlayDir.offsetX = 0;\n this.overlayDir.overlayRef.overlayElement.style.maxWidth = 'unset';\n this.overlayDir.overlayRef.updatePosition();\n }\n\n /**\n * Returns `positions` with the first-row anchor added, updated or removed, or `null` when the array\n * already says what it should — so that the caller can skip the change detection an edit would need.\n *\n * The anchor goes LAST. The overlay returns on the first position that fits completely, so an entry at the\n * end is reached exactly when neither the below nor the above position works, which is the rule this\n * implements. Pass `null` to drop it again.\n *\n * The result is meant to be assigned to the field the `cdkConnectedOverlayPositions` input reads, NOT\n * handed to `withPositions()` on the strategy: `CdkConnectedOverlay.ngOnChanges` rebuilds the strategy\n * from that field on ANY input change — the width `lockOverlayWidthForSearch` pins is one — so a list\n * applied only to the strategy would be dropped again without a trace.\n */\n protected withOverlapPosition(positions: ConnectedPosition[], offsetY: number | null): ConnectedPosition[] | null {\n // `panelClass` is `string | string[]`, and `positions` is public, so an anchor can come back in a\n // shape a strict comparison would miss — which would append a second anchor on every recompute and\n // leave every one of them behind on close.\n const isOverlap = ({ panelClass }: ConnectedPosition) =>\n Array.isArray(panelClass)\n ? panelClass.includes(KBQ_CONNECTED_OVERLAY_OVERLAP_CLASS)\n : panelClass === KBQ_CONNECTED_OVERLAY_OVERLAP_CLASS;\n const current = positions.find(isOverlap);\n const withoutOverlap = () => positions.filter((position) => !isOverlap(position));\n\n if (offsetY === null) return current ? withoutOverlap() : null;\n\n // Rounded so that sub-pixel layout jitter cannot rebuild the array on every selection change.\n const roundedOffsetY = Math.round(offsetY);\n\n if (current?.offsetY === roundedOffsetY) return null;\n\n return [\n ...withoutOverlap(),\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: roundedOffsetY,\n panelClass: KBQ_CONNECTED_OVERLAY_OVERLAP_CLASS\n }\n ];\n }\n\n /**\n * Re-resolves the panel position with the first-row anchor brought up to date.\n *\n * Never call this from a `positionChange` subscriber: CDK records the position it applied AFTER the\n * subscriber returns, so an anchor resolved from inside that frame is overwritten by the pre-anchor\n * position, and `cdkConnectedOverlayLockPosition` then replays that stale one on the next scroll.\n */\n protected reanchorPanel(): void {\n // `hostElement` is nulled by `OverlayRef.dispose()`, which is what a queued call landing after the\n // component was destroyed has to be told apart by — `overlayRef` itself outlives disposal.\n if (!this.overlayDir?.overlayRef?.hostElement) return;\n\n // Only when the anchor actually moved. `setOverlayPosition()` is a one-shot: it clears the pane's\n // `minWidth` and derives the panel offset from the width it had before that, so a second run over\n // the same open measures a narrower pane. In RTL the pane's x is `documentWidth - (x + paneWidth)`,\n // so that narrower measurement moves the panel; in LTR only `left` is written and nothing moves.\n if (this.updatePanelAnchor()) {\n this.setOverlayPosition();\n }\n }\n\n /**\n * Re-resolves the anchor while the panel is open. A resize rewraps the trigger's rows and changes the\n * room beside it at once, and CDK re-applies the position on its own, so without this the anchor it\n * resolves against is the one measured for the old viewport.\n */\n protected subscribeToPanelResize(): void {\n this.resizeSubscription.unsubscribe();\n\n if (!this.multiline()) return;\n\n this.resizeSubscription = fromEvent(this.window, 'resize')\n .pipe(debounceTime(50))\n .subscribe(() => this.reanchorPanel());\n }\n\n /** Drops the resize subscription the open set up. */\n protected unsubscribeFromPanelResize(): void {\n this.resizeSubscription.unsubscribe();\n }\n\n /**\n * Keeps the first-row anchor in `positions`: a third position that puts the panel just below the\n * trigger's first row and over the rest of it, for a multiline trigger that has grown taller than the\n * panel and fits on neither side of it.\n *\n * The anchor goes last, and the overlay stops at the first position that fits completely, so it is\n * reached exactly when neither `below` nor `above` works. `kbqShouldAnchorPanelToFirstRow` holds the\n * rest of the rule.\n *\n * Returns whether the array changed, so that a caller can skip the reposition an unchanged anchor does\n * not need. Updating the array is all there is to do here — `setOverlayPosition()` rebuilds the strategy\n * and resolves the position again.\n */\n protected updatePanelAnchor(): boolean {\n if (!this.multiline() || !this.isPanelOpen() || !this.overlayDir?.overlayRef) return false;\n\n // A measurement that cannot be trusted would leave the seeds in force, and a zero chrome height\n // overstates the room beside the trigger by the whole of a search field and a footer.\n if (!this.measurePanelChrome()) return false;\n\n const context = this.resolvePanelSpaceContext();\n\n if (!context) return false;\n\n const firstRowOffset = this.resolveFirstRowOffset();\n const anchorToFirstRow = kbqShouldAnchorPanelToFirstRow(context, {\n firstRowOffset,\n naturalListHeight: this.measureNaturalListHeight(),\n anchored: this.isPanelAnchoredToFirstRow()\n });\n // The pane pads the gap inside itself, so the anchor is raised by it: the painted panel then starts\n // where the second row does, instead of leaving the top of that row's tags showing through the band.\n const offsetY = anchorToFirstRow && firstRowOffset !== null ? firstRowOffset - this.panelGapHeight : null;\n const positions = this.withOverlapPosition(this.positions, offsetY);\n\n if (!positions) return false;\n\n this.positions = positions;\n // Pushes the new array into `CdkConnectedOverlay`: the strategy is rebuilt from the directive's\n // input, not from this field, so without this the reposition would resolve against the old list.\n this.changeDetectorRef.detectChanges();\n\n return true;\n }\n\n /**\n * Distance from the origin's top edge to just below the trigger's first row, or `null` when there is no\n * row to anchor to.\n */\n private resolveFirstRowOffset(): number | null {\n const origin = this.getOverlayOriginElement();\n const list = this.multilineMatchList()?.nativeElement;\n\n if (!origin || !list) return null;\n\n // The rows follow document order, so the scan stops at the first child that starts lower. Collapsed\n // children are skipped: a custom tag template can render a hidden node, and its all-zero rect would\n // otherwise be taken for the topmost row and push every real tag out of it.\n let firstRowTop: number | null = null;\n let firstRowBottom = Number.NEGATIVE_INFINITY;\n\n for (const child of Array.from(list.children)) {\n const { top, bottom, width, height } = child.getBoundingClientRect();\n\n // A collapsed child occupies no row and adds nothing to one, so it is skipped whichever way it\n // collapsed — its rect would otherwise be read as a row of its own.\n if (width === 0 || height === 0) continue;\n\n if (firstRowTop === null) {\n firstRowTop = top;\n // Sub-pixel layout only makes the tops of one row equal to within a pixel, and a custom tag\n // template can put several elements on the same row.\n } else if (top - firstRowTop >= 1) {\n break;\n }\n\n firstRowBottom = Math.max(firstRowBottom, bottom);\n }\n\n if (firstRowTop === null) return null;\n\n const originRect = origin.getBoundingClientRect();\n const listRect = list.getBoundingClientRect();\n\n return kbqResolveTriggerFirstRowOffset({\n originTop: originRect.top,\n originBottom: originRect.bottom,\n listTop: listRect.top,\n listBottom: listRect.bottom,\n firstRowBottom,\n // The rows keep their laid-out position while their container scrolls, so the scroll offset is\n // what converts them back into the list's own coordinates.\n listScrollTop: list.scrollTop\n });\n }\n\n /**\n * Height the option list takes with no viewport clamp in force.\n *\n * Read from `scrollHeight`, which reports the whole content rather than what the pane happens to show\n * right now — the anchor decision runs on a pane the overlay may be about to move.\n */\n private measureNaturalListHeight(): number {\n if (this.isListHeightPinnedToCap()) return this.panelMaxHeightCap;\n\n const content = this.optionsContainer()?.nativeElement;\n\n if (!content) return this.panelMaxHeightCap;\n\n // `clientHeight` less the computed content box is the list's own vertical padding, which\n // `scrollHeight` counts and the cap does not.\n const padding = content.clientHeight - parseFloat(this.window.getComputedStyle(content).height);\n\n return Math.min(this.panelMaxHeightCap, content.scrollHeight - (Number.isFinite(padding) ? padding : 0));\n }\n\n /**\n * Whether the option list renders at the cap whatever its content is, which a\n * `cdk-virtual-scroll-viewport` does by pinning both its `min-height` and its `max-height` to the token.\n */\n protected isListHeightPinnedToCap(): boolean {\n return false;\n }\n\n /** Geometry the panel height calculation needs, or `null` when there is nothing to measure against. */\n private resolvePanelSpaceContext(): KbqPanelSpaceContext | null {\n const origin = this.getOverlayOriginElement();\n\n if (!origin) return null;\n\n const { top, bottom } = origin.getBoundingClientRect();\n\n return {\n triggerTop: top,\n triggerBottom: bottom,\n // `clientHeight`, not `innerHeight`: the overlay narrows the viewport the same way, and the two\n // differ by the horizontal scrollbar — enough for a position we think fits to be rejected.\n viewportHeight: this.window.document.documentElement.clientHeight,\n viewportMargin: this.viewportMargin,\n chromeHeight: this.panelChromeHeight\n };\n }\n\n /** Whether the panel is currently drawn over the trigger, read from the class the overlay applies. */\n private isPanelAnchoredToFirstRow(): boolean {\n return this.overlayDir.overlayRef.overlayElement.classList.contains(KBQ_CONNECTED_OVERLAY_OVERLAP_CLASS);\n }\n\n /**\n * Records the part of the panel that is not the option list, the gap the pane pads itself with, and the\n * cap the list is rendered with. Returns `false` when the panel cannot be measured, which is the caller's\n * signal to leave the anchor alone rather than decide against a stale value.\n */\n private measurePanelChrome(): boolean {\n const pane = this.overlayDir.overlayRef.overlayElement;\n const content = this.optionsContainer()?.nativeElement;\n\n if (!content) return false;\n\n // `--kbq-select-panel-size-max-height` caps the list's *content box* — the scroller is `box-sizing:\n // initial` — so its own padding counts as chrome. The computed `height` is that content box, which is\n // exactly what the cap has to be measured against.\n const { height, maxHeight } = this.window.getComputedStyle(content);\n const { paddingTop, paddingBottom } = this.window.getComputedStyle(pane);\n const chromeHeight = pane.getBoundingClientRect().height - parseFloat(height);\n const cap = parseFloat(maxHeight);\n\n if (!Number.isFinite(chromeHeight) || chromeHeight < 0) return false;\n\n this.panelChromeHeight = chromeHeight;\n // Whichever side the current position pads, the gap is the same one the anchored pane will pad.\n this.panelGapHeight = Math.max(parseFloat(paddingTop) || 0, parseFloat(paddingBottom) || 0);\n\n // `none`, `''` and a DOM without layout all yield NaN, which leaves the seed in force.\n if (Number.isFinite(cap) && cap > 0) {\n this.panelMaxHeightCap = cap;\n }\n\n return true;\n }\n\n protected resolveSearchMinOptionsThreshold(value?: 'auto' | number) {\n return value === 'auto' ? KBQ_SELECT_SEARCH_MIN_OPTIONS_THRESHOLD : value;\n }\n}\n","import { isDevMode } from '@angular/core';\n\n/**\n * Runs a consumer-supplied `compareWith` defensively: a comparator that throws is reported in dev mode\n * and treated as \"no match\", so one bad comparison cannot take a whole selection down with it.\n *\n * Callers own the `null` policy — `KbqSelect` refuses to match a `null` option value, `KbqListSelection`\n * lets the comparator decide — so nothing is filtered here.\n *\n * @docs-private\n */\nexport function runCompareWith<T>(compareWith: (o1: T, o2: T) => boolean, first: T, second: T): boolean {\n try {\n return compareWith(first, second);\n } catch (error) {\n if (isDevMode()) {\n // Notify developers of errors in their comparator.\n // eslint-disable-next-line no-console\n console.warn(error);\n }\n\n return false;\n }\n}\n","/**\n * Returns an exception to be thrown when attempting to change a select's `multiple` option\n * after initialization.\n * @docs-private\n */\nexport function getKbqSelectDynamicMultipleError(): Error {\n return Error('Cannot change `multiple` mode of select after initialization.');\n}\n\n/**\n * Returns an exception to be thrown when attempting to assign a non-array value to a select\n * in `multiple` mode. Note that `undefined` and `null` are still valid values to allow for\n * resetting the value.\n * @docs-private\n */\nexport function getKbqSelectNonArrayValueError(): Error {\n return Error('Value must be an array in multiple-selection mode.');\n}\n\n/**\n * Returns an exception to be thrown when assigning a non-function value to the comparator\n * used to determine if a value corresponds to an option. Note that whether the function\n * actually takes two values and returns a boolean is not checked.\n */\nexport function getKbqSelectNonFunctionValueError(): Error {\n return Error('`compareWith` must be a function.');\n}\n","export const selectEvents = 'selectEvents';\n","import { Platform } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport { inject, Injectable } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class KbqMeasureScrollbarService {\n protected readonly document = inject<Document>(DOCUMENT);\n private readonly platform = inject(Platform);\n\n get scrollBarWidth(): number {\n if (this._scrollBarWidth) {\n return this._scrollBarWidth;\n }\n\n this.initScrollBarWidth();\n\n return this._scrollBarWidth;\n }\n\n private _scrollBarWidth: number;\n private scrollbarMeasure = {\n position: 'absolute',\n top: '-9999px',\n width: '50px',\n height: '50px',\n overflow: 'scroll'\n };\n\n constructor() {\n this.initScrollBarWidth();\n }\n\n initScrollBarWidth() {\n if (!this.platform.isBrowser) {\n this._scrollBarWidth = 0;\n\n return;\n }\n\n const scrollDiv = this.document.createElement('div');\n\n for (const scrollProp in this.scrollbarMeasure) {\n if (this.scrollbarMeasure.hasOwnProperty(scrollProp)) {\n scrollDiv.style[scrollProp] = this.scrollbarMeasure[scrollProp];\n }\n }\n\n this.document.body.appendChild(scrollDiv);\n\n const width = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n\n this.document.body.removeChild(scrollDiv);\n this._scrollBarWidth = width;\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { inject, Injectable, OnDestroy, Renderer2, RendererFactory2 } from '@angular/core';\nimport { BehaviorSubject, pairwise, Subscription } from 'rxjs';\n\nexport interface KbqTheme {\n name: string;\n className: string;\n selected: boolean;\n}\n\n/**\n * Enum representing the available themes for the Koobiq design system.\n * This enum is used to manage and switch between different visual themes.\n */\nexport enum KbqThemeSelector {\n /**\n * Represents the default light theme.\n * This is the standard theme that is applied\n * when the application is first loaded if nothing else provided\n */\n Default = 'kbq-light',\n /**\n * This theme is used to provide a darker visual experience, often preferred in low-light environments.\n */\n Dark = 'kbq-dark'\n}\n\nexport const KbqDefaultThemes: KbqTheme[] = [\n {\n name: 'light',\n className: KbqThemeSelector.Default,\n selected: true\n },\n {\n name: 'dark',\n className: KbqThemeSelector.Dark,\n selected: false\n }\n];\n\n@Injectable({ providedIn: 'root' })\nexport class ThemeService<T extends KbqTheme | null = KbqTheme> implements OnDestroy {\n protected readonly document = inject<Document>(DOCUMENT);\n protected readonly rendererFactory = inject(RendererFactory2);\n protected renderer: Renderer2;\n\n current: BehaviorSubject<T> = new BehaviorSubject(null as T);\n\n themes: T[] = KbqDefaultThemes as T[];\n\n protected subscription: Subscription;\n\n constructor() {\n this.renderer = this.rendererFactory.createRenderer(null, null);\n\n this.subscription = this.current.pipe(pairwise()).subscribe(this.update);\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n\n setThemes(items: T[]) {\n this.themes = items;\n }\n\n setTheme(value: T | number) {\n if (typeof value === 'number') {\n this.current.next(this.themes[value]);\n } else if (typeof value === 'object' && this.themes.includes(value)) {\n this.current.next(value);\n } else {\n throw Error(`value has unsupported type: ${typeof value}`);\n }\n }\n\n getTheme(): T {\n return this.current.value;\n }\n\n protected update = ([prev, current]: T[]) => {\n if (prev) {\n prev.selected = false;\n this.renderer.removeClass(this.document.body, prev.className);\n }\n\n if (current) {\n this.renderer.addClass(this.document.body, current.className);\n current.selected = true;\n }\n };\n}\n","/* eslint-disable no-restricted-globals -- testing utilities legitimately use raw `document`/`window` */\n\n/** Creates a browser MouseEvent with the specified options. */\nexport function createMouseEvent(type: string, x = 0, y = 0, button = 0) {\n const event = document.createEvent('MouseEvent');\n\n event.initMouseEvent(\n type,\n false,\n false,\n window /* view */,\n 0,\n x /* screenX */,\n y /* screenY */,\n x /* clientX */,\n y /* clientY */,\n false,\n false,\n false,\n false,\n button /* button */,\n null\n );\n\n return event;\n}\n\n/** Creates a browser TouchEvent with the specified pointer coordinates. */\nexport function createTouchEvent(type: string, pageX = 0, pageY = 0) {\n // In favor of creating events that work for most of the browsers, the event is created\n // as a basic UI Event. The necessary details for the event will be set manually.\n const event = document.createEvent('UIEvent');\n const touchDetails = { pageX, pageY };\n\n (event as any).initUIEvent(type, true, true, window, 0);\n\n // Most of the browsers don't have a \"initTouchEvent\" method that can be used to define\n // the touch details.\n Object.defineProperties(event, {\n touches: { value: [touchDetails] }\n });\n\n return event;\n}\n\n/** Dispatches a keydown event from an element. */\nexport function createKeyboardEvent(type: string, keyCode: number, target?: Element, key?: string) {\n const event = document.createEvent('KeyboardEvent') as any;\n\n // Firefox does not support `initKeyboardEvent`, but supports `initKeyEvent`.\n if (event.initKeyEvent) {\n event.initKeyEvent(type, true, true, window, 0, 0, 0, 0, 0, keyCode);\n } else {\n event.initKeyboardEvent(type, true, true, window, 0, key, 0, '', false);\n }\n\n // Webkit Browsers don't set the keyCode when calling the init function.\n // See related bug https://bugs.webkit.org/show_bug.cgi?id=16735\n Object.defineProperties(event, {\n keyCode: { get: () => keyCode },\n key: { get: () => key }\n });\n\n // Only override `target` when explicitly provided; otherwise let jsdom set it during dispatch.\n if (target !== undefined) {\n Object.defineProperty(event, 'target', { get: () => target });\n }\n\n return event;\n}\n\n/** Creates a fake event object with any desired event type. */\nexport function createFakeEvent(type: string, canBubble = false, cancelable = true) {\n const event = document.createEvent('Event');\n\n event.initEvent(type, canBubble, cancelable);\n\n return event;\n}\n","import { createFakeEvent, createKeyboardEvent, createMouseEvent, createTouchEvent } from './event-objects';\n\n/** Utility to dispatch any event on a Node. */\nexport function dispatchEvent(node: Node | Window, event: Event): Event {\n node.dispatchEvent(event);\n\n return event;\n}\n\n/** Shorthand to dispatch a fake event on a specified node. */\nexport function dispatchFakeEvent(node: Node | Window, type: string, canBubble?: boolean): Event {\n return dispatchEvent(node, createFakeEvent(type, canBubble));\n}\n\n/** Shorthand to dispatch a keyboard event with a specified key code and, optionally, a `KeyboardEvent.key`. */\nexport function dispatchKeyboardEvent(\n node: Node,\n type: string,\n keyCode: number,\n target?: Element,\n key?: string\n): KeyboardEvent {\n return dispatchEvent(node, createKeyboardEvent(type, keyCode, target, key)) as KeyboardEvent;\n}\n\n/** Shorthand to dispatch a mouse event on the specified coordinates. */\nexport function dispatchMouseEvent(\n node: Node,\n type: string,\n x = 0,\n y = 0,\n event = createMouseEvent(type, x, y)\n): MouseEvent {\n return dispatchEvent(node, event) as MouseEvent;\n}\n\n/** Shorthand to dispatch a touch event on the specified coordinates. */\nexport function dispatchTouchEvent(node: Node, type: string, x = 0, y = 0) {\n return dispatchEvent(node, createTouchEvent(type, x, y));\n}\n","import { dispatchFakeEvent } from './dispatch-events';\n\n/**\n * Patches an elements focus and blur methods to emit events consistently and predictably.\n * This is necessary, because some browsers, like IE11, will call the focus handlers asynchronously,\n * while others won't fire them at all if the browser window is not focused.\n */\nexport function patchElementFocus(element: HTMLElement) {\n element.focus = () => dispatchFakeEvent(element, 'focus');\n element.blur = () => dispatchFakeEvent(element, 'blur');\n}\n","import { EventEmitter, Injectable, NgZone } from '@angular/core';\n\n/**\n * Mock synchronous NgZone implementation that can be used\n * to flush out `onStable` subscriptions in tests.\n *\n * via: https://github.com/angular/angular/blob/master/packages/core/testing/src/ng_zone_mock.ts\n * @docs-private\n */\n@Injectable()\nexport class MockNgZone extends NgZone {\n onStable: EventEmitter<any> = new EventEmitter(false);\n\n constructor() {\n super({ enableLongStackTrace: false });\n }\n\n run(fn: () => void): any {\n return fn();\n }\n\n runOutsideAngular(fn: () => void): any {\n return fn();\n }\n\n simulateZoneExit(): void {\n this.onStable.emit(null);\n }\n}\n","import { dispatchFakeEvent } from './dispatch-events';\n\n/**\n * Focuses an input, sets its value and dispatches\n * the `input` event, simulating the user typing.\n * @param value Value to be set on the input.\n * @param element Element onto which to set the value.\n */\nexport function typeInElement(value: string, element: HTMLInputElement) {\n element.focus();\n element.value = value;\n dispatchFakeEvent(element, 'input');\n}\n","export function wrappedErrorMessage(e: Error) {\n const escapedMessage = e.message.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&');\n\n return new RegExp(escapedMessage);\n}\n","/**\n * @docs-private\n */\nexport const validationTooltipShowDelay = 10;\n\n/**\n * @docs-private\n */\nexport const validationTooltipHideDelay = 3000;\n","import { Version } from '@angular/core';\n\nexport const VERSION = new Version('20.3.0+sha-47e0f25');\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["map","BaseDateAdapter","BaseDateFormatter","KbqDateAdapter","i1.KbqPseudoCheckbox","rxDelay"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"koobiq-components-core.mjs","sources":["../../../packages/components/core/keycodes/keycodes.ts","../../../packages/components/core/a11y/key-manager/list-key-manager.ts","../../../packages/components/core/a11y/key-manager/activedescendant-key-manager.ts","../../../packages/components/core/a11y/key-manager/focus-key-manager.ts","../../../packages/components/core/animation/animation.ts","../../../packages/components/core/animation/fade-animations.ts","../../../packages/components/core/animation/select-animations.ts","../../../packages/components/core/common-behaviors/autofill.ts","../../../packages/components/core/common-behaviors/checkable.ts","../../../packages/components/core/common-behaviors/clipboard.ts","../../../packages/components/core/common-behaviors/color.ts","../../../packages/components/core/common-behaviors/disabled.ts","../../../packages/components/core/common-behaviors/error-state.ts","../../../packages/components/core/utils/dom.ts","../../../packages/components/core/utils/utils.ts","../../../packages/components/core/common-behaviors/hover.ts","../../../packages/components/core/common-behaviors/read-state.ts","../../../packages/components/core/common-behaviors/tabindex.ts","../../../packages/components/core/common-behaviors/index.ts","../../../packages/components/core/datetime/date-adapter.ts","../../../packages/components/core/datetime/date-formats.ts","../../../packages/components/core/datetime/timezone.ts","../../../packages/components/core/error/error-state-matcher.ts","../../../packages/components/core/tokens/window.ts","../../../packages/components/core/form-field/text-ruler.ts","../../../packages/components/core/form-field/field-sizing-content.ts","../../../packages/components/core/form-field/form-field-ref.ts","../../../packages/components/core/form-field/text-field-selection.ts","../../../packages/components/core/locales/en-US.ts","../../../packages/components/core/locales/es-LA.ts","../../../packages/components/core/locales/formatters.ts","../../../packages/components/core/locales/pt-BR.ts","../../../packages/components/core/locales/ru-RU.ts","../../../packages/components/core/locales/tk-TM.ts","../../../packages/components/core/locales/locale-service.ts","../../../packages/components/core/locales/a11y.ts","../../../packages/components/core/locales/locale-service.module.ts","../../../packages/components/core/formatters/date/formatter.ts","../../../packages/components/core/formatters/date/formatter.pipe.ts","../../../packages/components/core/formatters/filesize/config.ts","../../../packages/components/core/formatters/number/formatter.ts","../../../packages/components/core/formatters/filesize/size.ts","../../../packages/components/core/formatters/filesize/formatter.ts","../../../packages/components/core/formatters/index.ts","../../../packages/components/core/forms/forms.directive.ts","../../../packages/components/core/forms/forms-module.ts","../../../packages/components/core/forms/validators.ts","../../../packages/components/core/search/search-base.ts","../../../packages/components/core/highlight/highlight-base.ts","../../../packages/components/core/highlight/highlight-background.pipe.ts","../../../packages/components/core/highlight/highlight.pipe.ts","../../../packages/components/core/highlight/index.ts","../../../packages/components/core/line/line.ts","../../../packages/components/core/navbar/rectangle-item.ts","../../../packages/components/core/option/action.ts","../../../packages/components/core/option/action-container.ts","../../../packages/components/core/option/optgroup.ts","../../../packages/components/core/option/optgroup.html","../../../packages/components/core/selection/constants.ts","../../../packages/components/core/selection/pseudo-checkbox/pseudo-checkbox.ts","../../../packages/components/core/selection/pseudo-checkbox/pseudo-checkbox.partial.html","../../../packages/components/core/selection/pseudo-checkbox/pseudo-checkbox.module.ts","../../../packages/components/core/selection/select-all.ts","../../../packages/components/core/title/title-text-ref.ts","../../../packages/components/core/option/option.ts","../../../packages/components/core/option/option.html","../../../packages/components/core/option/option-module.ts","../../../packages/components/core/overflow-shadow/overflow-shadow.ts","../../../packages/components/core/overlay/auto-hide-scroll-strategy.ts","../../../packages/components/core/overlay/overlay-position-map.ts","../../../packages/components/core/overlay/panel-height.ts","../../../packages/components/core/overlay/panel-width.ts","../../../packages/components/core/overlay/safe-area.ts","../../../packages/components/core/overlay/shadow-dom-overlay-container.ts","../../../packages/components/core/pop-up/constants.ts","../../../packages/components/core/pop-up/focus-trap-strategy.ts","../../../packages/components/core/pop-up/pop-up.ts","../../../packages/components/core/pop-up/pop-up-styles.ts","../../../packages/components/core/pop-up/pop-up-trigger.ts","../../../packages/components/core/select/constants.ts","../../../packages/components/core/select/common.ts","../../../packages/components/core/select/compare-with.ts","../../../packages/components/core/select/errors.ts","../../../packages/components/core/select/events.ts","../../../packages/components/core/services/measure-scrollbar.service.ts","../../../packages/components/core/services/theme.service.ts","../../../packages/components/core/testing/event-objects.ts","../../../packages/components/core/testing/dispatch-events.ts","../../../packages/components/core/testing/element-focus.ts","../../../packages/components/core/testing/mock-ng-zone.ts","../../../packages/components/core/testing/type-in-element.ts","../../../packages/components/core/testing/wrapped-error-message.ts","../../../packages/components/core/validation/validation.ts","../../../packages/components/core/version.ts","../../../packages/components/core/koobiq-components-core.ts"],"sourcesContent":["import { _getEventTarget } from '@angular/cdk/platform';\n\nexport const MAC_ENTER = 3;\nexport const BACKSPACE = 8;\nexport const TAB = 9;\nexport const NUM_CENTER = 12;\nexport const ENTER = 13;\nexport const SHIFT = 16;\nexport const CONTROL = 17;\nexport const ALT = 18;\nexport const PAUSE = 19;\nexport const CAPS_LOCK = 20;\nexport const ESCAPE = 27;\nexport const SPACE = 32;\nexport const PAGE_UP = 33;\nexport const PAGE_DOWN = 34;\nexport const END = 35;\nexport const HOME = 36;\nexport const LEFT_ARROW = 37;\nexport const UP_ARROW = 38;\nexport const RIGHT_ARROW = 39;\nexport const DOWN_ARROW = 40;\nexport const PLUS_SIGN = 43;\nexport const PRINT_SCREEN = 44;\nexport const INSERT = 45;\nexport const DELETE = 46;\nexport const ZERO = 48;\nexport const ONE = 49;\nexport const TWO = 50;\nexport const THREE = 51;\nexport const FOUR = 52;\nexport const FIVE = 53;\nexport const SIX = 54;\nexport const SEVEN = 55;\nexport const EIGHT = 56;\nexport const NINE = 57;\nexport const FF_SEMICOLON = 59; // Firefox (Gecko) fires this for semicolon instead of 186\nexport const FF_EQUALS = 61; // Firefox (Gecko) fires this for equals instead of 187\nexport const QUESTION_MARK = 63;\nexport const AT_SIGN = 64;\nexport const A = 65;\nexport const B = 66;\nexport const C = 67;\nexport const D = 68;\nexport const E = 69;\nexport const F = 70;\nexport const G = 71;\nexport const H = 72;\nexport const I = 73;\nexport const J = 74;\nexport const K = 75;\nexport const L = 76;\nexport const M = 77;\nexport const N = 78;\nexport const O = 79;\nexport const P = 80;\nexport const Q = 81;\nexport const R = 82;\nexport const S = 83;\nexport const T = 84;\nexport const U = 85;\nexport const V = 86;\nexport const W = 87;\nexport const X = 88;\nexport const Y = 89;\nexport const Z = 90;\nexport const META = 91; // WIN_KEY_LEFT\nexport const MAC_WK_CMD_LEFT = 91;\nexport const MAC_WK_CMD_RIGHT = 93;\nexport const CONTEXT_MENU = 93;\nexport const NUMPAD_ZERO = 96;\nexport const NUMPAD_ONE = 97;\nexport const NUMPAD_TWO = 98;\nexport const NUMPAD_THREE = 99;\nexport const NUMPAD_FOUR = 100;\nexport const NUMPAD_FIVE = 101;\nexport const NUMPAD_SIX = 102;\nexport const NUMPAD_SEVEN = 103;\nexport const NUMPAD_EIGHT = 104;\nexport const NUMPAD_NINE = 105;\nexport const NUMPAD_MULTIPLY = 106;\nexport const NUMPAD_PLUS = 107;\nexport const NUMPAD_MINUS = 109;\nexport const NUMPAD_PERIOD = 110;\nexport const NUMPAD_DIVIDE = 111;\nexport const F1 = 112;\nexport const F2 = 113;\nexport const F3 = 114;\nexport const F4 = 115;\nexport const F5 = 116;\nexport const F6 = 117;\nexport const F7 = 118;\nexport const F8 = 119;\nexport const F9 = 120;\nexport const F10 = 121;\nexport const F11 = 122;\nexport const F12 = 123;\nexport const NUM_LOCK = 144;\nexport const SCROLL_LOCK = 145;\nexport const FIRST_MEDIA = 166;\nexport const FF_MINUS = 173;\nexport const MUTE = 173; // Firefox (Gecko) fires 181 for MUTE\nexport const VOLUME_DOWN = 174; // Firefox (Gecko) fires 182 for VOLUME_DOWN\nexport const VOLUME_UP = 175; // Firefox (Gecko) fires 183 for VOLUME_UP\nexport const FF_MUTE = 181;\nexport const FF_VOLUME_DOWN = 182;\nexport const LAST_MEDIA = 183;\nexport const FF_VOLUME_UP = 183;\nexport const SEMICOLON = 186; // Firefox (Gecko) fires 59 for SEMICOLON\nexport const EQUALS = 187; // Firefox (Gecko) fires 61 for EQUALS\nexport const COMMA = 188;\nexport const DASH = 189; // Firefox (Gecko) fires 173 for DASH/MINUS\nexport const PERIOD = 190;\nexport const SLASH = 191;\nexport const APOSTROPHE = 192;\nexport const TILDE = 192;\nexport const OPEN_SQUARE_BRACKET = 219;\nexport const BACKSLASH = 220;\nexport const CLOSE_SQUARE_BRACKET = 221;\nexport const SINGLE_QUOTE = 222;\nexport const MAC_META = 224;\n\ntype ModifierKey = 'altKey' | 'shiftKey' | 'ctrlKey' | 'metaKey';\n\nexport function hasModifierKey(event: KeyboardEvent | MouseEvent, ...modifiers: ModifierKey[]): boolean {\n if (modifiers.length) {\n return modifiers.some((modifier) => event[modifier]);\n }\n\n return event.altKey || event.shiftKey || event.ctrlKey || event.metaKey;\n}\n\nexport function isControl(event: KeyboardEvent): boolean {\n const keyCode = event.keyCode;\n\n switch (keyCode) {\n case SHIFT:\n case CONTROL:\n case ALT:\n return true;\n default:\n return event.metaKey;\n }\n}\n\nexport function isNumberKey({ keyCode }: KeyboardEvent): boolean {\n return keyCode >= ZERO && keyCode <= NINE;\n}\n\nexport function isNumpadKey({ keyCode }: KeyboardEvent): boolean {\n return keyCode >= NUMPAD_ZERO && keyCode <= NUMPAD_NINE;\n}\nexport function isLetterKey({ keyCode }: KeyboardEvent): boolean {\n return keyCode >= A && keyCode <= Z;\n}\n\nexport function isFunctionKey({ keyCode }: KeyboardEvent): boolean {\n return keyCode >= F1 && keyCode <= F12;\n}\n\nexport function isVerticalMovement({ keyCode }: KeyboardEvent): boolean {\n return [UP_ARROW, DOWN_ARROW, PAGE_DOWN, PAGE_UP, HOME, END].includes(keyCode);\n}\n\nexport function isHorizontalMovement({ keyCode }: KeyboardEvent): boolean {\n return [LEFT_ARROW, RIGHT_ARROW, BACKSPACE, DELETE].includes(keyCode);\n}\n\nexport function isSelectAll(event: KeyboardEvent): boolean {\n return (event.ctrlKey || event.metaKey) && event.keyCode === A;\n}\n\nexport function isCopy(event: KeyboardEvent): boolean {\n return (event.ctrlKey || event.metaKey) && event.keyCode === C;\n}\n\nexport function isInput(event: Event): boolean {\n const target = _getEventTarget<HTMLElement>(event);\n\n return !!target && (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA');\n}\n\nexport function isLeftBracket(event: KeyboardEvent): boolean {\n return event.code === 'BracketLeft';\n}\n\nexport function isRightBracket(event: KeyboardEvent): boolean {\n return event.code === 'BracketRight';\n}\n\nexport function isDigit({ keyCode }: KeyboardEvent): boolean {\n return [ZERO, ONE, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE].includes(keyCode);\n}\n","import { QueryList } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime, filter, map, tap } from 'rxjs/operators';\nimport { A, DOWN_ARROW, END, HOME, LEFT_ARROW, NINE, RIGHT_ARROW, TAB, UP_ARROW, Z, ZERO } from '../../keycodes';\n\n// This interface is for items that can be passed to a ListKeyManager.\nexport interface ListKeyManagerOption {\n // Whether the option is disabled.\n disabled?: boolean;\n\n // Gets the label for this option.\n getLabel?(): string;\n}\n\n/** Modifier keys handled by the ListKeyManager. */\nexport type ListKeyManagerModifierKey = 'altKey' | 'ctrlKey' | 'metaKey' | 'shiftKey';\n\n/**\n * This class manages keyboard events for selectable lists. If you pass it a query list\n * of items, it will set the active item correctly when arrow events occur.\n */\nexport class ListKeyManager<T extends ListKeyManagerOption> {\n /**\n * Stream that emits any time the TAB key is pressed, so components can react\n * when focus is shifted off of the list.\n */\n tabOut: Subject<void> = new Subject<void>();\n\n /** Stream that emits whenever the active item of the list manager changes. */\n change = new Subject<number>();\n\n previousActiveItemIndex = -1;\n\n // Index of the currently active item.\n get activeItemIndex(): number {\n return this._activeItemIndex;\n }\n\n private _activeItemIndex = -1;\n\n // The active item.\n get activeItem(): T | null {\n return this._activeItem;\n }\n\n private _activeItem: T;\n\n private wrap: boolean = false;\n private letterKeyStream = new Subject<string>();\n private typeaheadSubscription = Subscription.EMPTY;\n private vertical = true;\n private horizontal: 'ltr' | 'rtl' | null;\n\n private scrollSize: number = 0;\n\n // Buffer for the letters that the user has pressed when the typeahead option is turned on.\n private pressedLetters: string[] = [];\n\n private homeAndEnd = false;\n\n private allowedModifierKeys: ListKeyManagerModifierKey[] = [];\n\n constructor(private _items: QueryList<T>) {\n if (_items instanceof QueryList) {\n _items.changes.subscribe((newItems: QueryList<T>) => {\n if (this._activeItem) {\n const itemArray = newItems.toArray();\n const newIndex = itemArray.indexOf(this._activeItem);\n\n if (newIndex > -1 && newIndex !== this._activeItemIndex) {\n this._activeItemIndex = newIndex;\n }\n }\n });\n }\n }\n\n /** Gets whether the user is currently typing into the manager using the typeahead feature. */\n isTyping(): boolean {\n return this.pressedLetters.length > 0;\n }\n\n withScrollSize(scrollSize: number): this {\n this.scrollSize = scrollSize;\n\n return this;\n }\n\n /**\n * Modifier keys which are allowed to be held down and whose default actions will be prevented\n * as the user is pressing the arrow keys. Defaults to not allowing any modifier keys.\n */\n withAllowedModifierKeys(keys: ListKeyManagerModifierKey[]): this {\n this.allowedModifierKeys = keys;\n\n return this;\n }\n\n /**\n * Turns on wrapping mode, which ensures that the active item will wrap to\n * the other end of list when there are no more items in the given direction.\n */\n\n withWrap(shouldWrap = true): this {\n this.wrap = shouldWrap;\n\n return this;\n }\n\n /**\n * Sets the predicate function that determines which items should be skipped by the\n * list key manager.\n * @param predicate Function that determines whether the given item should be skipped.\n */\n skipPredicate(predicate: (item: T) => boolean): this {\n this.skipPredicateFn = predicate;\n\n return this;\n }\n\n /**\n * Configures whether the key manager should be able to move the selection vertically.\n * @param enabled Whether vertical selection should be enabled.\n */\n withVerticalOrientation(enabled: boolean = true): this {\n this.vertical = enabled;\n\n return this;\n }\n\n /**\n * Configures the key manager to move the selection horizontally.\n * Passing in `null` will disable horizontal movement.\n * @param direction Direction in which the selection can be moved.\n */\n withHorizontalOrientation(direction: 'ltr' | 'rtl' | null): this {\n this.horizontal = direction;\n\n return this;\n }\n\n /**\n * Turns on typeahead mode which allows users to set the active item by typing.\n * @param searchLetterIndex letter index for incremental search, if is -1 search is disabled\n * @param debounceInterval Time to wait after the last keystroke before setting the active item.\n */\n withTypeAhead(debounceInterval: number = 200, searchLetterIndex: number = 0): this {\n if (this._items.length && this._items.some((item) => typeof item.getLabel !== 'function')) {\n throw Error('ListKeyManager items in typeahead mode must implement the `getLabel` method.');\n }\n\n this.typeaheadSubscription.unsubscribe();\n\n // Debounce the presses of non-navigational keys, collect the ones that correspond to letters and convert those\n // letters back into a string. Afterwards find the first item that starts with that string and select it.\n this.typeaheadSubscription = this.letterKeyStream\n .pipe(\n tap((keyCode) => this.pressedLetters.push(keyCode)),\n debounceTime(debounceInterval),\n filter(() => this.pressedLetters.length > 0),\n map(() => this.pressedLetters.join(''))\n )\n .subscribe((inputString) => {\n if (searchLetterIndex === -1) {\n this.pressedLetters = [];\n\n return;\n }\n\n const items = this._items.toArray();\n\n // Start at 1 because we want to start searching at the item immediately\n // following the current active item.\n for (let i = 1; i < items.length + 1; i++) {\n const index = (this._activeItemIndex + i) % items.length;\n const item = items[index];\n\n if (\n !item.disabled &&\n item.getLabel!().toUpperCase().trim().indexOf(inputString) === searchLetterIndex\n ) {\n this.setActiveItem(index);\n break;\n }\n }\n\n this.pressedLetters = [];\n });\n\n return this;\n }\n\n /**\n * Configures the key manager to activate the first and last items\n * respectively when the Home or End key is pressed.\n * @param enabled Whether pressing the Home or End key activates the first/last item.\n */\n withHomeAndEnd(enabled: boolean = true): this {\n this.homeAndEnd = enabled;\n\n return this;\n }\n\n /**\n * Sets the active item to the item at the index specified.\n * @param index The index of the item to be set as active or item The item to be set as active.\n */\n setActiveItem(index: number | T): void;\n\n /**\n * Sets the active item to the item at the index specified.\n * @param item The index of the item to be set as active.\n */\n setActiveItem(item: any): void {\n this.previousActiveItemIndex = this._activeItemIndex;\n\n this.updateActiveItem(item);\n\n if (this._activeItemIndex !== this.previousActiveItemIndex) {\n this.change.next(this._activeItemIndex);\n }\n }\n\n /**\n * Sets the active item depending on the key event passed in.\n * @param event Keyboard event to be used for determining which element should be active.\n */\n onKeydown(event: KeyboardEvent): void {\n const keyCode = event.keyCode;\n\n const modifiers: ListKeyManagerModifierKey[] = ['altKey', 'ctrlKey', 'metaKey', 'shiftKey'];\n const isModifierAllowed = modifiers.every((modifier) => {\n return !event[modifier] || this.allowedModifierKeys.indexOf(modifier) > -1;\n });\n\n switch (keyCode) {\n case TAB:\n this.tabOut.next();\n\n return;\n\n case DOWN_ARROW:\n if (this.vertical) {\n this.setNextItemActive();\n break;\n } else {\n return;\n }\n\n case UP_ARROW:\n if (this.vertical) {\n this.setPreviousItemActive();\n break;\n } else {\n return;\n }\n\n case RIGHT_ARROW:\n if (this.horizontal === 'ltr') {\n this.setNextItemActive();\n break;\n } else if (this.horizontal === 'rtl') {\n this.setPreviousItemActive();\n break;\n } else {\n return;\n }\n\n case LEFT_ARROW:\n if (this.horizontal === 'ltr') {\n this.setPreviousItemActive();\n break;\n } else if (this.horizontal === 'rtl') {\n this.setNextItemActive();\n break;\n } else {\n return;\n }\n\n case HOME:\n if (this.homeAndEnd && isModifierAllowed) {\n this.setFirstItemActive();\n break;\n } else {\n return;\n }\n\n case END:\n if (this.homeAndEnd && isModifierAllowed) {\n this.setLastItemActive();\n break;\n } else {\n return;\n }\n\n default:\n // Attempt to use the `event.key` which also maps it to the user's keyboard language,\n // otherwise fall back to resolving alphanumeric characters via the keyCode.\n if (event.key && event.key.length === 1) {\n this.letterKeyStream.next(event.key.toLocaleUpperCase());\n } else if ((keyCode >= A && keyCode <= Z) || (keyCode >= ZERO && keyCode <= NINE)) {\n this.letterKeyStream.next(String.fromCharCode(keyCode));\n }\n\n // Note that we return here, in order to avoid preventing\n // the default action of non-navigational keys.\n return;\n }\n\n this.pressedLetters = [];\n event.preventDefault();\n }\n\n // Sets the active item to the first enabled item in the list.\n setFirstItemActive(): void {\n this.setActiveItemByIndex(0, 1);\n }\n\n // Sets the active item to the last enabled item in the list.\n setLastItemActive(): void {\n this.setActiveItemByIndex(this._items.length - 1, -1);\n }\n\n // Sets the active item to the next enabled item in the list.\n setNextItemActive(): void {\n if (this._activeItemIndex < 0) {\n this.setFirstItemActive();\n } else {\n this.setActiveItemByDelta(1);\n }\n }\n\n // Sets the active item to a previous enabled item in the list.\n setPreviousItemActive(): void {\n if (this._activeItemIndex < 0 && this.wrap) {\n this.setLastItemActive();\n } else {\n this.setActiveItemByDelta(-1);\n }\n }\n\n setNextPageItemActive(delta: number = this.scrollSize): void {\n const nextItemIndex = this._activeItemIndex + delta;\n\n if (nextItemIndex >= this._items.length) {\n this.setLastItemActive();\n } else {\n this.setActiveItemByDelta(delta);\n }\n }\n\n setPreviousPageItemActive(delta: number = this.scrollSize): void {\n const nextItemIndex = this._activeItemIndex - delta;\n\n if (nextItemIndex <= 0) {\n this.setFirstItemActive();\n } else {\n this.setActiveItemByDelta(-delta);\n }\n }\n\n /**\n * Allows setting the active without any other effects.\n * @param index Index of the item to be set as active.\n */\n updateActiveItem(index: number): void;\n\n /**\n * Allows setting the active item without any other effects.\n * @param item Item to be set as active or index Index of the item to be set as active..\n */\n updateActiveItem(item: number | T): void;\n\n updateActiveItem(item: any): void {\n const itemArray = this._items.toArray();\n const index = typeof item === 'number' ? item : itemArray.indexOf(item);\n\n this._activeItemIndex = index;\n this._activeItem = itemArray[index];\n }\n\n /**\n * Predicate function that can be used to check whether an item should be skipped\n * by the key manager. By default, disabled items are skipped.\n */\n private skipPredicateFn = (item: T) => item.disabled;\n\n /**\n * This method sets the active item, given a list of items and the delta between the\n * currently active item and the new active item. It will calculate differently\n * depending on whether wrap mode is turned on.\n */\n private setActiveItemByDelta(delta: number): void {\n if (this.wrap) {\n this.setActiveInWrapMode(delta);\n } else {\n this.setActiveInDefaultMode(delta);\n }\n }\n\n /**\n * Sets the active item properly given \"wrap\" mode. In other words, it will continue to move\n * down the list until it finds an item that is not disabled, and it will wrap if it\n * encounters either end of the list.\n */\n private setActiveInWrapMode(delta: number): void {\n const items = this.getItemsArray();\n\n for (let i = 1; i <= items.length; i++) {\n const index = (this._activeItemIndex + delta * i + items.length) % items.length;\n const item = items[index];\n\n if (!this.skipPredicateFn(item)) {\n this.setActiveItem(index);\n\n return;\n }\n }\n }\n\n /**\n * Sets the active item properly given the default mode. In other words, it will\n * continue to move down the list until it finds an item that is not disabled. If\n * it encounters either end of the list, it will stop and not wrap.\n */\n private setActiveInDefaultMode(delta: number): void {\n this.setActiveItemByIndex(this._activeItemIndex + delta, delta);\n }\n\n /**\n * Sets the active item to the first enabled item starting at the index specified. If the\n * item is disabled, it will move in the fallbackDelta direction until it either\n * finds an enabled item or encounters the end of the list.\n */\n private setActiveItemByIndex(index: number, fallbackDelta: number): void {\n const items = this.getItemsArray();\n\n if (!items[index]) {\n return;\n }\n\n let curIndex = index;\n\n while (this.skipPredicateFn(items[curIndex])) {\n curIndex += fallbackDelta;\n\n if (!items[curIndex]) {\n return;\n }\n }\n\n this.setActiveItem(curIndex);\n }\n\n /** Returns the items as an array. */\n private getItemsArray(): T[] {\n return this._items instanceof QueryList ? this._items.toArray() : this._items;\n }\n}\n","import { ListKeyManager, ListKeyManagerOption } from './list-key-manager';\n\n/**\n * This is the interface for highlightable items (used by the ActiveDescendantKeyManager).\n * Each item must know how to style itself as active or inactive and whether or not it is\n * currently disabled.\n */\nexport interface Highlightable extends ListKeyManagerOption {\n // Applies the styles for an active item to this item.\n setActiveStyles(): void;\n\n // Applies the styles for an inactive item to this item.\n setInactiveStyles(): void;\n}\n\nexport class ActiveDescendantKeyManager<T> extends ListKeyManager<Highlightable & T> {\n /**\n * Sets the active item to the item at the specified index and adds the\n * active styles to the newly active item. Also removes active styles\n * from the previously active item.\n * @param index Index of the item to be set as active.\n */\n setActiveItem(index: number): void;\n\n /**\n * Sets the active item to the item to the specified one and adds the\n * active styles to the it. Also removes active styles from the\n * previously active item.\n * @param item Item to be set as active.\n */\n setActiveItem(item: T): void;\n\n /**\n * This method sets the active item to the item at the specified index.\n * It also adds active styles to the newly active item and removes active\n * styles from the previously active item.\n */\n setActiveItem(index: any): void {\n if (this.activeItem) {\n this.activeItem.setInactiveStyles();\n }\n\n super.setActiveItem(index);\n\n if (this.activeItem) {\n this.activeItem.setActiveStyles();\n }\n }\n}\n","import { FocusOrigin } from '@angular/cdk/a11y';\nimport { ListKeyManager, ListKeyManagerOption } from './list-key-manager';\n\n/**\n * This is the interface for focusable items (used by the FocusKeyManager).\n * Each item must know how to focus itself, whether or not it is currently disabled\n * and be able to supply it's label.\n */\nexport interface IFocusableOption extends ListKeyManagerOption {\n // Focuses the `FocusableOption`. */\n focus(origin?: FocusOrigin): void;\n}\n\nexport class FocusKeyManager<T> extends ListKeyManager<IFocusableOption & T> {\n private origin: FocusOrigin = 'program';\n\n /**\n * Sets the active item or index to the item that is specified and focuses it.\n * @param item Item to be set as active.\n */\n setActiveItem(item: number | T): void;\n\n setActiveItem(item: any): void {\n super.setActiveItem(item);\n\n if (this.activeItem) {\n this.activeItem.focus(this.origin);\n }\n }\n\n /**\n * Sets the focus origin that will be passed in to the items for any subsequent `focus` calls.\n * @param origin Focus origin to be used when focusing items.\n */\n setFocusOrigin(origin: FocusOrigin): this {\n this.origin = origin;\n\n return this;\n }\n\n getFocusOrigin(): FocusOrigin {\n return this.origin;\n }\n}\n","/**\n * Koobiq components animation curves\n *\n * @docs-private\n */\nexport enum KbqAnimationCurves {\n StandardCurve = 'cubic-bezier(0.4,0.0,0.2,1)',\n DecelerationCurve = 'cubic-bezier(0.0,0.0,0.2,1)',\n AccelerationCurve = 'cubic-bezier(0.4,0.0,1,1)',\n SharpCurve = 'cubic-bezier(0.4,0.0,0.6,1)',\n EaseInOut = 'ease-in-out',\n EaseInOutQuad = 'cubic-bezier(0.455,0.03,0.515,0.955)'\n}\n\n/**\n * Koobiq components animation durations\n *\n * @docs-private\n */\nexport enum KbqAnimationDurations {\n Long = '300ms',\n Complex = '250ms',\n Entering = '150ms',\n Exiting = '125ms',\n Rapid = '100ms',\n Instant = '50ms'\n}\n","import { animate, AnimationTriggerMetadata, state, style, transition, trigger } from '@angular/animations';\n\nexport const fadeAnimation: AnimationTriggerMetadata = trigger('fadeAnimation', [\n state('void', style({ opacity: 0 })),\n state('true', style({ opacity: 1 })),\n state('false', style({ opacity: 0 })),\n transition('* => true', animate('150ms cubic-bezier(0.0, 0.0, 0.2, 1)')),\n transition('* => void', animate('150ms cubic-bezier(0.4, 0.0, 1, 1)'))\n]);\n","import { animate, AnimationTriggerMetadata, group, state, style, transition, trigger } from '@angular/animations';\n\n/**\n * The following are all the animations for the kbq-select component, with each\n * const containing the metadata for one animation.\n *\n */\nexport const kbqSelectAnimations: {\n readonly transformPanel: AnimationTriggerMetadata;\n readonly fadeInContent: AnimationTriggerMetadata;\n} = {\n /**\n * This animation transforms the select's overlay panel on and off the page.\n *\n * When the panel is attached to the DOM, it expands its width by the amount of padding, scales it\n * up to 100% on the Y axis, fades in its border, and translates slightly up and to the\n * side to ensure the option text correctly overlaps the trigger text.\n *\n * When the panel is removed from the DOM, it simply fades out linearly.\n */\n transformPanel: trigger('transformPanel', [\n state(\n 'void',\n style({\n transform: 'scaleY(0)',\n minWidth: '100%',\n opacity: 0\n })\n ),\n transition(\n 'void => *',\n group([\n animate('0ms cubic-bezier(0.25, 0.8, 0.25, 1)')\n ])\n ),\n transition('* => void', [\n animate('0ms 0ms linear', style({ opacity: 0 }))\n ])\n ]),\n\n /**\n * This animation fades in the background color and text content of the\n * select's options. It is time delayed to occur 100ms after the overlay\n * panel has transformed in.\n */\n fadeInContent: trigger('fadeInContent', [\n state('showing', style({ opacity: 1 })),\n transition('void => showing', [\n style({ opacity: 0 }),\n animate('0ms 0ms cubic-bezier(0.55, 0, 0.55, 0.2)')\n ])\n ])\n};\n\nexport const transformPanel = kbqSelectAnimations.transformPanel;\n\nexport const fadeInContent = kbqSelectAnimations.fadeInContent;\n","import { AutofillMonitor } from '@angular/cdk/text-field';\nimport { DestroyRef, ElementRef, inject, Signal, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n/**\n * Tracks whether the current control's value was filled in by the browser, as a signal.\n *\n * Call it from an injection context on a directive whose host is the element the browser actually\n * fills — a text `<input>` or a `<textarea>`. Every `KbqFormFieldControl` that can be autofilled\n * exposes the result as its `autofilled` member.\n *\n * This is a hook for application code, not the mechanism behind the autofill styling. The styling\n * keys on `:autofill` in CSS, which matches in the same style pass the browser fills the field;\n * detection here goes through a zero-length keyframe animation and an `animationstart` listener, so\n * it lands a frame or two later — too late to paint with, and early enough for anything a component\n * wants to do about it.\n *\n * `monitor()` returns EMPTY off the browser platform, so this needs no `Platform` guard.\n */\nexport const kbqInjectAutofilled = (): Signal<boolean> => {\n const elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n const autofillMonitor = inject(AutofillMonitor);\n const destroyRef = inject(DestroyRef);\n const autofilled = signal(false);\n\n autofillMonitor\n .monitor(elementRef)\n .pipe(takeUntilDestroyed(destroyRef))\n .subscribe(({ isAutofilled }) => autofilled.set(isAutofilled));\n\n // `stopMonitoring()` is the load-bearing teardown, not a duplicate of `takeUntilDestroyed()`\n // above: `AutofillMonitor` is `providedIn: 'root'`, so dropping only the subscription would\n // leave the element registered with the app-lifetime service and its marker classes on the DOM\n // node.\n destroyRef.onDestroy(() => autofillMonitor.stopMonitoring(elementRef));\n\n return autofilled.asReadonly();\n};\n","import { computed, Directive, forwardRef, InjectionToken, model, Provider, signal } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { KbqCheckedState } from './checkbox';\n\n/**\n * Provider Expression that allows `KbqCheckable` to register as a `ControlValueAccessor`, so any host\n * applying it via `hostDirectives` gets `[(ngModel)]`/`formControl` support without wiring up its own.\n * @docs-private\n */\nexport const KBQ_CHECKABLE_CONTROL_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => KbqCheckable),\n multi: true\n};\n\n/**\n * Click action shared by checkable controls (checkbox, toggle, and custom checkbox-like primitives).\n * noop: Do not toggle checked or indeterminate.\n * check: Only toggle checked status, ignore indeterminate.\n * check-indeterminate: Toggle checked status, set indeterminate to false. Default behavior.\n * undefined: Same as `check-indeterminate`.\n */\nexport type KbqCheckableClickAction = 'noop' | 'check' | 'check-indeterminate' | undefined;\n\n/** Injection token that can be used to specify the default click behavior for checkable controls. */\nexport const KBQ_CHECKABLE_CLICK_ACTION = new InjectionToken<KbqCheckableClickAction>('kbq-checkable-click-action');\n\n/**\n * Represents the different states that require custom transitions between them.\n * @docs-private\n */\nexport enum TransitionCheckState {\n /** The initial state of the component before any user interaction. */\n Init = 'init',\n /** The state representing the component when it's becoming checked. */\n Checked = 'checked',\n /** The state representing the component when it's becoming unchecked. */\n Unchecked = 'unchecked',\n /** The state representing the component when it's becoming indeterminate. */\n Indeterminate = 'indeterminate'\n}\n\n/** Result of resolving a click on a checkable control's native input. See {@link KbqCheckable.resolveClick}. */\nexport interface KbqCheckableClickResult {\n /** Whether `checked` should be toggled and a `change` event emitted. */\n readonly shouldToggle: boolean;\n /** Whether `indeterminate` should be cleared and an `indeterminateChange` event emitted. */\n readonly shouldClearIndeterminate: boolean;\n}\n\n/**\n * Shared behavior for checkbox-like controls: checked/disabled/indeterminate/tabIndex state, the click-to-toggle\n * algorithm, ARIA-checked computation, and `ControlValueAccessor` change plumbing.\n *\n * Meant to be applied via `hostDirectives` by components that render their own native `<input type=\"checkbox\">`\n * and markup (e.g. `KbqCheckbox`, `KbqToggleComponent`, or custom checkbox-like primitives). Hosts stay\n * responsible for their own public inputs/outputs, `FocusMonitor` wiring, and emitting their own typed\n * `change` event - this directive only centralizes the state and decisions behind them.\n */\n@Directive({\n selector: '[kbqCheckable]',\n providers: [KBQ_CHECKABLE_CONTROL_VALUE_ACCESSOR],\n exportAs: 'kbqCheckable'\n})\nexport class KbqCheckable implements ControlValueAccessor {\n private controlValueAccessorChangeFn: (value: any) => void = () => {};\n\n /**\n * Called when the control is blurred. Needed to properly implement `ControlValueAccessor`.\n * @docs-private\n */\n onTouched: () => any = () => {};\n\n /** @docs-private */\n readonly currentCheckState = signal<TransitionCheckState>(TransitionCheckState.Init);\n\n readonly checked = model(false);\n\n readonly disabled = model(false);\n\n readonly indeterminate = model(false);\n\n /** Raw tab index as set by the caller, ignoring `disabled`. Use `effectiveTabIndex` to read the applied value. */\n readonly tabIndex = model(0);\n\n /** The tab index actually applied to the native input: forced to `-1` while disabled. */\n readonly effectiveTabIndex = computed(() => (this.disabled() ? -1 : this.tabIndex()));\n\n /** Returns the ARIA-checked value: `'true'`, `'false'`, or `'mixed'` when indeterminate. */\n getAriaChecked(): KbqCheckedState {\n return this.checked() ? 'true' : this.indeterminate() ? 'mixed' : 'false';\n }\n\n /** Toggles the `checked` state and notifies the registered `ControlValueAccessor` change handler. */\n toggle(): void {\n this.checked.update((value) => !value);\n this.notifyFormValueChange(this.checked());\n }\n\n /**\n * Resolves what a click on the native input should do, based on the current state and `clickAction`.\n * Pure - does not mutate state. Callers apply `checked`/`indeterminate` themselves and own emitting\n * their own change events, so timing/order stays identical to a hand-written click handler.\n */\n resolveClick(clickAction: KbqCheckableClickAction): KbqCheckableClickResult {\n if (this.disabled() || clickAction === 'noop') {\n return { shouldToggle: false, shouldClearIndeterminate: false };\n }\n\n return {\n shouldToggle: true,\n shouldClearIndeterminate: this.indeterminate() && clickAction !== 'check'\n };\n }\n\n /** Resets the native input to match the current `checked`/`indeterminate` state (used for the `noop` click action). */\n resetNativeInput(nativeInput: HTMLInputElement): void {\n nativeInput.checked = this.checked();\n nativeInput.indeterminate = this.indeterminate();\n }\n\n /** Transitions the animation state, ignoring no-op transitions. @docs-private */\n transitionCheckState(newState: TransitionCheckState): void {\n if (this.currentCheckState() === newState) return;\n\n this.currentCheckState.set(newState);\n }\n\n // Implemented as part of ControlValueAccessor.\n writeValue(value: any): void {\n this.checked.set(!!value);\n }\n\n /** Stores the `ControlValueAccessor` change handler to be notified by `notifyFormValueChange`. */\n registerOnChange(fn: (value: any) => void): void {\n this.controlValueAccessorChangeFn = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n /** Notifies the registered `ControlValueAccessor` change handler. */\n notifyFormValueChange(value: boolean): void {\n this.controlValueAccessorChangeFn(value);\n }\n}\n","import { Directive, ElementRef, inject } from '@angular/core';\n\n@Directive({\n selector: '[kbqNormalizeWhitespace]',\n host: {\n '(copy)': 'onCopy($event)'\n }\n})\nexport class KbqNormalizeWhitespace {\n /** @docs-private */\n protected readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /**\n * Replace thin-space with space on copy event\n */\n onCopy($event: ClipboardEvent) {\n const value =\n (this.elementRef.nativeElement as HTMLInputElement).value || this.elementRef.nativeElement.textContent;\n\n if ($event.type === 'copy' && value) {\n $event.preventDefault();\n $event.clipboardData?.setData('text', value?.replace(/\\u2009/g, ' '));\n }\n }\n}\n","import { Directive, ElementRef, inject, Input, isDevMode } from '@angular/core';\nimport { AbstractConstructor, Constructor } from './constructor';\n\nexport interface CanColor {\n color: KbqComponentColors | ThemePalette | string;\n}\n\n/** @docs-private */\nexport type CanColorCtor = Constructor<CanColor> & AbstractConstructor<CanColor>;\n\nexport interface HasElementRef {\n elementRef: ElementRef;\n}\n\nexport enum ThemePalette {\n Primary = 'primary',\n Secondary = 'secondary',\n Error = 'error',\n Info = 'info',\n Warning = 'warning',\n Success = 'success',\n\n Default = 'secondary',\n Empty = ''\n}\n\nexport enum KbqComponentColors {\n Theme = 'theme',\n ThemeFade = 'theme-fade',\n Contrast = 'contrast',\n ContrastFade = 'contrast-fade',\n\n Error = 'error',\n Warning = 'warning',\n Success = 'success',\n\n Default = 'contrast',\n Empty = 'empty'\n}\n\n/** Mixin to augment a directive with a `color` property. */\nexport function mixinColor<T extends AbstractConstructor<HasElementRef>>(\n base: T,\n defaultColor?: KbqComponentColors | ThemePalette\n): CanColorCtor & T;\n\nexport function mixinColor<T extends Constructor<HasElementRef>>(\n base: T,\n defaultColor: KbqComponentColors | ThemePalette = KbqComponentColors.Empty\n): CanColorCtor & T {\n return class extends base {\n get color(): KbqComponentColors | ThemePalette {\n return this._color;\n }\n set color(value: KbqComponentColors | ThemePalette) {\n const colorPalette = value || defaultColor;\n\n if (colorPalette !== this._color) {\n if (this._color) {\n this.elementRef.nativeElement.classList.remove(`kbq-${this._color}`);\n }\n\n if (colorPalette) {\n this.elementRef.nativeElement.classList.add(`kbq-${colorPalette}`);\n }\n\n this._color = colorPalette;\n }\n }\n\n private _color: KbqComponentColors | ThemePalette;\n\n constructor(...args: any[]) {\n super(...args);\n\n this.color = defaultColor;\n\n if (isDevMode()) {\n // eslint-disable-next-line no-console\n console.warn('mixinColor deprecated and will be deleted in next major release');\n }\n }\n };\n}\n\n@Directive()\nexport class KbqColorDirective {\n /** @docs-private */\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n /** @docs-private */\n protected defaultColor: KbqComponentColors | ThemePalette | string;\n\n /** current class name of color */\n get colorClassName(): KbqComponentColors | ThemePalette | string {\n return `kbq-${this._color}`;\n }\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get color(): KbqComponentColors | ThemePalette | string {\n return this._color;\n }\n\n set color(value: KbqComponentColors | ThemePalette | string) {\n const color = value || this.defaultColor;\n\n if (color !== this._color) {\n if (this._color) {\n this.elementRef.nativeElement.classList.remove(`kbq-${this._color}`);\n }\n\n if (color) {\n this.elementRef.nativeElement.classList.add(`kbq-${color}`);\n }\n\n this._color = color;\n }\n }\n\n protected _color: KbqComponentColors | ThemePalette | string;\n\n constructor() {\n this.color = KbqComponentColors.Empty;\n }\n\n /** this color will be used as a default value. For example [color]=\"'' | false | undefined | null\". */\n setDefaultColor(color: KbqComponentColors | ThemePalette | string) {\n this.defaultColor = color;\n }\n}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { isDevMode } from '@angular/core';\nimport { AbstractConstructor, Constructor } from './constructor';\n\nexport interface CanDisable {\n disabled: boolean;\n}\n\n/** @docs-private */\nexport type CanDisableCtor = Constructor<CanDisable> & AbstractConstructor<CanDisable>;\n\n/** Mixin to augment a directive with a `disabled` property. */\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport function mixinDisabled<T extends AbstractConstructor<{}>>(base: T): CanDisableCtor & T;\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport function mixinDisabled<T extends Constructor<{}>>(base: T): CanDisableCtor & T {\n return class extends base {\n get disabled() {\n return this._disabled;\n }\n\n set disabled(value: any) {\n this._disabled = coerceBooleanProperty(value);\n }\n\n private _disabled: boolean = false;\n\n constructor(...args: any[]) {\n super(...args);\n\n if (isDevMode()) {\n // eslint-disable-next-line no-console\n console.warn('mixinDisabled deprecated and will be deleted in next major release');\n }\n }\n };\n}\n","import { isDevMode } from '@angular/core';\nimport { AbstractControl, FormGroupDirective, NgControl, NgForm, UntypedFormControl } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { ErrorStateMatcher } from '../error/error-state-matcher';\nimport { AbstractConstructor, Constructor } from './constructor';\n\n/** @docs-private */\nexport interface CanUpdateErrorState {\n /** Whether the component is in an error state. */\n errorState: boolean;\n /** An object used to control the error state of the component. */\n errorStateMatcher: ErrorStateMatcher;\n /** Updates the error state based on the provided error state matcher. */\n updateErrorState(): void;\n}\n\n/** @docs-private */\nexport type CanUpdateErrorStateCtor = Constructor<CanUpdateErrorState>;\n\n/** @docs-private */\nexport interface HasErrorState {\n parentFormGroup: FormGroupDirective | null;\n parentForm: NgForm | null;\n defaultErrorStateMatcher: ErrorStateMatcher;\n\n ngControl: NgControl | null;\n stateChanges: Subject<void>;\n}\n\n/**\n * Mixin to augment a directive with updateErrorState method.\n * For component with `errorState` and need to update `errorState`.\n */\nexport function mixinErrorState<T extends AbstractConstructor<HasErrorState>>(base: T): CanUpdateErrorStateCtor & T;\nexport function mixinErrorState<T extends Constructor<HasErrorState>>(base: T): CanUpdateErrorStateCtor & T {\n return class extends base {\n /** Whether the component is in an error state. */\n errorState: boolean = false;\n\n errorStateMatcher: ErrorStateMatcher;\n\n constructor(...args: any[]) {\n super(...args);\n\n if (isDevMode()) {\n // eslint-disable-next-line no-console\n console.warn('mixinErrorState deprecated and will be deleted in next major release');\n }\n }\n\n updateErrorState() {\n const oldState = this.errorState;\n const parent = this.parentFormGroup || this.parentForm;\n const matcher = this.errorStateMatcher || this.defaultErrorStateMatcher;\n const control = this.ngControl ? (this.ngControl.control as UntypedFormControl) : null;\n const newState = matcher.isErrorState(control, parent);\n\n if (newState !== oldState) {\n this.errorState = newState;\n this.stateChanges.next();\n }\n }\n };\n}\n\n/**\n * Class that tracks the error state of a component.\n * @docs-private\n */\nexport class KbqErrorStateTracker implements CanUpdateErrorState {\n /** Whether the tracker is currently in an error state. */\n errorState = false;\n\n /** User-defined matcher for the error state. */\n errorStateMatcher: ErrorStateMatcher;\n\n constructor(\n private defaultMatcher: ErrorStateMatcher | null,\n public ngControl: NgControl | null,\n private parentFormGroup: FormGroupDirective | null,\n private parentForm: NgForm | null,\n private stateChanges: Subject<void>\n ) {}\n\n /** Updates the error state based on the provided error state matcher. */\n updateErrorState() {\n const oldState = this.errorState;\n const parent = this.parentFormGroup || this.parentForm;\n const matcher = this.errorStateMatcher || this.defaultMatcher;\n const control = this.ngControl ? (this.ngControl.control as AbstractControl) : null;\n const newState = matcher?.isErrorState(control, parent) ?? false;\n\n if (newState !== oldState) {\n this.errorState = newState;\n this.stateChanges.next();\n }\n }\n}\n","import { _getFocusedElementPierceShadowDom } from '@angular/cdk/platform';\nimport { ElementRef, inject } from '@angular/core';\n\n/**\n * Injects the native element for the current component.\n */\nexport const kbqInjectNativeElement = <T extends Element = HTMLElement>(): T => {\n return inject<ElementRef<T>>(ElementRef<T>).nativeElement;\n};\n\n/**\n * Focuses `element` and scrolls it into view by the shortest distance, leaving a visible one alone.\n *\n * The reveal is explicit because the one `focus()` performs implicitly is not portable: WebKit defers it\n * to a later rendering update, where it lands after — and undoes — any scrolling the reader did in the\n * meantime. Letting the element reveal itself keeps every consumer working, whatever it uses as a scroll\n * container, and the browser resolves that container rather than the caller guessing at it.\n *\n * Pass `skipReveal` when the pointer caused the focus: the element is already under the cursor, so\n * revealing it would shift the list out from under it.\n */\nexport const kbqFocusAndReveal = (element: HTMLElement, skipReveal = false): void => {\n if (typeof element.focus !== 'function') return;\n\n // A focus listener calling back into `focus` must not scroll a second time. Read through shadow\n // roots, where `document.activeElement` reports the host instead of the element that holds focus.\n const wasFocused = _getFocusedElementPierceShadowDom() === element;\n\n element.focus({ preventScroll: true });\n\n if (skipReveal || wasFocused) return;\n\n element.scrollIntoView?.({ block: 'nearest', inline: 'nearest' });\n};\n","export function isBoolean(value: unknown): value is boolean {\n return typeof value === 'boolean';\n}\n\n/** Whether the value is undefined. */\nexport const isUndefined = (value: unknown): value is undefined => {\n return value === undefined;\n};\n\n/** Whether the value is null. */\nexport const isNull = (value: unknown): value is null => {\n return value === null;\n};\n\n/** Whether the value is HTMLElement. */\nexport const isHtmlElement = (value: unknown): value is HTMLElement => {\n return value instanceof HTMLElement;\n};\n\n/** Whether the value is Element. */\nexport const isElement = (value: unknown): value is Element => value instanceof Element;\n\n/** Whether the value is HTMLElement or null. */\nexport const isHtmlElementOrNull = (value: unknown): value is HTMLElement | null => {\n return isHtmlElement(value) || isNull(value);\n};\n\nexport const getNodesWithoutComments = (nodes: NodeList): Node[] => {\n const COMMENT_NODE = 8;\n\n return Array.from(nodes).filter((node) => node.nodeType !== COMMENT_NODE);\n};\n\nexport const leftIconClassName = 'kbq-icon_left';\nexport const rightIconClassName = 'kbq-icon_right';\n\n/** Whether the current platform is a Mac. */\nexport function isMac(): boolean {\n // eslint-disable-next-line no-restricted-globals\n return /^mac/i.test(navigator?.platform);\n}\n\n/** Converts an enumeration (enum) type into a string literal type containing\n * all possible string representations of the values. */\nexport type KbqEnumValues<T extends string | number> = `${T}`;\n","import { Directive } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { fromEvent, map, merge } from 'rxjs';\nimport { kbqInjectNativeElement } from '../utils';\n\n/**\n * Directive that adds a `kbq-hovered` class to an element, based on its hover state.\n *\n * @docs-private\n */\n@Directive({\n selector: '[kbqHover]',\n host: {\n class: 'kbq-hover',\n '[class.kbq-hovered]': 'hovered()'\n },\n exportAs: 'kbqHover'\n})\nexport class KbqHover {\n private readonly element = kbqInjectNativeElement();\n\n /**\n * Whether the element is hovered.\n */\n readonly hovered = toSignal(\n merge(\n fromEvent<MouseEvent>(this.element, 'mouseenter'),\n fromEvent<MouseEvent>(this.element, 'mouseleave')\n ).pipe(map(({ type }) => type === 'mouseenter')),\n { initialValue: false }\n );\n}\n","import { ChangeDetectorRef, Directive, inject } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Directive({\n host: {\n '(mouseenter)': 'mouseenterHandler()',\n '(mouseleave)': 'mouseleaveHandler()',\n '(click)': 'read.next(true)'\n }\n})\nexport class KbqReadStateDirective {\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n timestamp: number;\n timeToRead: number = 500;\n\n readonly read = new BehaviorSubject<boolean>(false);\n\n mouseenterHandler() {\n this.timestamp = new Date().getTime();\n }\n\n mouseleaveHandler() {\n if (new Date().getTime() - this.timestamp > this.timeToRead) {\n this.read.next(true);\n }\n\n this.changeDetectorRef.markForCheck();\n }\n}\n","import { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { isDevMode } from '@angular/core';\nimport { AbstractConstructor, Constructor } from './constructor';\nimport { CanDisable } from './disabled';\n\nexport interface HasTabIndex {\n tabIndex: number;\n}\n\nexport type HasTabIndexCtor = Constructor<HasTabIndex> & AbstractConstructor<HasTabIndex>;\n\n/** Mixin to augment a directive with a `tabIndex` property. */\nexport function mixinTabIndex<T extends AbstractConstructor<CanDisable>>(\n base: T,\n defaultTabIndex?: number\n): HasTabIndexCtor & T;\n\nexport function mixinTabIndex<T extends Constructor<CanDisable>>(base: T, defaultTabIndex = 0): HasTabIndexCtor & T {\n return class extends base implements HasTabIndex {\n defaultTabIndex = defaultTabIndex;\n\n get tabIndex(): number {\n return this.disabled ? -1 : this._tabIndex;\n }\n\n set tabIndex(value: number) {\n // If the specified tabIndex value is null or undefined, fall back to the default value.\n\n this._tabIndex = value != null ? coerceNumberProperty(value) : this.defaultTabIndex;\n }\n\n private _tabIndex: number = defaultTabIndex;\n\n constructor(...args: any[]) {\n super(...args);\n\n if (isDevMode()) {\n // eslint-disable-next-line no-console\n console.warn('mixinTabIndex deprecated and will be deleted in next major release');\n }\n }\n };\n}\n","import { InjectionToken } from '@angular/core';\n\nexport * from './autofill';\nexport * from './checkable';\nexport * from './checkbox';\nexport * from './clipboard';\nexport { CanColor, CanColorCtor, KbqColorDirective, KbqComponentColors, mixinColor, ThemePalette } from './color';\nexport { CanDisable, CanDisableCtor, mixinDisabled } from './disabled';\nexport { CanUpdateErrorState, CanUpdateErrorStateCtor, KbqErrorStateTracker, mixinErrorState } from './error-state';\nexport * from './flex';\nexport * from './hover';\nexport * from './orientation';\nexport * from './read-state';\nexport { KbqDefaultSizes } from './size';\nexport { HasTabIndex, HasTabIndexCtor, mixinTabIndex } from './tabindex';\n\nexport const KBQ_PARENT_ANIMATION_COMPONENT = new InjectionToken<any>('kbq-parent-animation-component');\n","import { inject, InjectionToken, LOCALE_ID } from '@angular/core';\nimport { DateAdapter as BaseDateAdapter } from '@koobiq/date-adapter';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n/** InjectionToken for datepicker that can be used to override default locale code. */\nexport const KBQ_DATE_LOCALE = new InjectionToken<string>('KBQ_DATE_LOCALE', {\n providedIn: 'root',\n factory: KBQ_DATE_LOCALE_FACTORY\n});\n\n/** @docs-private */\nexport function KBQ_DATE_LOCALE_FACTORY(): string {\n return inject(LOCALE_ID);\n}\n\nexport abstract class DateAdapter<D> extends BaseDateAdapter<D> {\n /** A stream that emits when the locale changes. */\n abstract get localeChanges(): Observable<any>;\n\n protected abstract _localeChanges: BehaviorSubject<string>;\n}\n","import { InjectionToken } from '@angular/core';\nimport { DateFormats } from '@koobiq/date-adapter';\n\nexport const KBQ_DATE_FORMATS = new InjectionToken<DateFormats>('kbq-date-formats');\nexport type KbqDateFormats = DateFormats;\n","import { inject, Injectable, InjectionToken, isDevMode, Provider, signal, Signal } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n/**\n * Time zone the library renders dates in.\n *\n * Accepts an IANA name (`'Europe/Moscow'`), a fixed offset — in minutes east of UTC (`180`) or as a\n * string (`'+03:00'`, `'UTC+3'`, `'03:00:00'`) — `'utc'`, or `'system'` for the zone of the host the code\n * runs on.\n *\n * The `string & {}` arm keeps IANA names open while still offering the special values as completions.\n */\nexport type KbqTimezoneLike = 'system' | 'utc' | number | (string & {});\n\n/**\n * InjectionToken for the time zone every date the library formats is rendered in.\n *\n * Read once, by the {@link KbqDateTimezoneService} constructor, out of the injector that created the\n * service — call {@link KbqDateTimezoneService.setTimezone} to change the zone afterwards. Defaults to\n * `'system'`, the zone of the host the code runs on.\n */\nexport const KBQ_DATE_TIMEZONE = new InjectionToken<KbqTimezoneLike>('KBQ_DATE_TIMEZONE');\n\nconst MINUTES_PER_HOUR = 60;\nconst SECONDS_PER_MINUTE = 60;\n\n/** The largest offset any zone has ever had; anything beyond it is a typo, not a zone. */\nconst MAX_OFFSET_HOURS = 14;\nconst MAX_OFFSET_MINUTES = MAX_OFFSET_HOURS * MINUTES_PER_HOUR;\n\n/** `UTC`/`GMT` with no offset — a valid input on its own, and what `Intl` reports for zero-offset zones. */\nconst UTC_ALIAS_PATTERN = /^(?:utc|gmt)$/i;\n\n/**\n * A fixed offset written with separators, with or without a `UTC`/`GMT` prefix and with or without a\n * sign: `+03:00`, `UTC+3`, `GMT+05:30`, `03:00:00`. The seconds group matches both the `timeZoneName`\n * `Intl` reports in the `longOffset` style for pre-standard-time instants (`GMT-00:44:30`) and the form\n * `KbqTimezoneZone.offset` is written in.\n */\nconst FIXED_OFFSET_PATTERN = /^(?:utc|gmt)?([+-])?(\\d{1,2})(?::([0-5]\\d)(?::([0-5]\\d))?)?$/i;\n\n/** The same offset written without separators: `-0530`. Kept apart so `+123` fails instead of backtracking. */\nconst COMPACT_OFFSET_PATTERN = /^(?:utc|gmt)?([+-])?(\\d{2})([0-5]\\d)$/i;\n\n/** Offset in minutes east of UTC of a fixed-offset specifier, or `null` when the value is not one. */\nconst parseFixedOffset = (value: string): number | null => {\n if (UTC_ALIAS_PATTERN.test(value)) return 0;\n\n const match = COMPACT_OFFSET_PATTERN.exec(value) ?? FIXED_OFFSET_PATTERN.exec(value);\n\n if (!match) return null;\n\n const [, sign, hours, minutes = '0', seconds = '0'] = match;\n\n if (Number(hours) > MAX_OFFSET_HOURS) return null;\n\n const magnitude = Number(hours) * MINUTES_PER_HOUR + Number(minutes) + Number(seconds) / SECONDS_PER_MINUTE;\n\n // Rounded because both date libraries expect whole minutes; only pre-1900 zones have a seconds part.\n return (sign === '-' ? -1 : 1) * Math.round(magnitude);\n};\n\n/**\n * One `Intl.DateTimeFormat` per IANA zone: building it is the expensive part of resolving an offset, and\n * an application uses a handful of zones at most. A `null` entry marks a name `Intl` rejected, so an\n * invalid zone is reported once instead of throwing on every date.\n *\n * Bounded because the zone can come from unvalidated input — a cookie on the server, a picker in the\n * browser — and this map outlives every request in the process.\n */\nconst MAX_CACHED_FORMATTERS = 32;\nconst offsetFormatters = new Map<string, Intl.DateTimeFormat | null>();\n\nconst getOffsetFormatter = (timeZone: string): Intl.DateTimeFormat | null => {\n if (!offsetFormatters.has(timeZone)) {\n if (offsetFormatters.size >= MAX_CACHED_FORMATTERS) {\n offsetFormatters.delete(offsetFormatters.keys().next().value!);\n }\n\n try {\n offsetFormatters.set(timeZone, new Intl.DateTimeFormat('en-US', { timeZone, timeZoneName: 'longOffset' }));\n } catch {\n if (isDevMode()) {\n // eslint-disable-next-line no-console\n console.warn(`Unknown time zone \"${timeZone}\", dates are left in the host time zone.`);\n }\n\n offsetFormatters.set(timeZone, null);\n }\n }\n\n return offsetFormatters.get(timeZone)!;\n};\n\n/**\n * Offset of `timezone` at `timestamp`, in minutes east of UTC. `null` means \"leave the date in the host\n * zone\" — either because `timezone` is `'system'`, or because it is a name no `Intl` implementation knows.\n *\n * Takes the instant because an IANA zone has no single offset: `'Europe/Berlin'` is +60 in January and\n * +120 in July, and one list of dates can span the change.\n */\nexport const kbqResolveTimezoneOffset = (timezone: KbqTimezoneLike, timestamp: number): number | null => {\n if (timezone === 'system') return null;\n\n // Bounded and rounded like the string form: a numeric offset comes from the same unvalidated places,\n // and neither date library reads a fractional minute or a 99-hour offset as anything sensible.\n if (typeof timezone === 'number') {\n return Number.isFinite(timezone) && Math.abs(timezone) <= MAX_OFFSET_MINUTES ? Math.round(timezone) : null;\n }\n\n const fixedOffset = parseFixedOffset(timezone);\n\n if (fixedOffset !== null) return fixedOffset;\n\n // An invalid date has no offset to resolve, and `Intl` throws rather than saying so.\n if (!Number.isFinite(timestamp)) return null;\n\n const timeZoneName = getOffsetFormatter(timezone)\n ?.formatToParts(new Date(timestamp))\n .find(({ type }) => type === 'timeZoneName')?.value;\n\n return timeZoneName ? parseFixedOffset(timeZoneName) : null;\n};\n\n/**\n * Holds the time zone every date the library creates, parses and formats is rendered in.\n *\n * Provided in root, so {@link KBQ_DATE_TIMEZONE} in the application providers configures the whole\n * application. To scope a zone to one subtree, list {@link kbqDateTimezoneProvider} in that component's\n * `providers` together with the date adapter and the `DateFormatter`: the adapter captures the service of\n * the injector that created it, and keeps using it.\n */\n@Injectable({ providedIn: 'root' })\nexport class KbqDateTimezoneService {\n /** Active time zone. */\n readonly timezone: Signal<KbqTimezoneLike>;\n\n /**\n * Emits when the active time zone changes.\n *\n * The counterpart of `DateAdapter.localeChanges`, for the surfaces that render a date once instead of\n * through an impure pipe — the date inputs and the calendar.\n */\n readonly changes: Observable<KbqTimezoneLike>;\n\n private readonly _timezone = signal<KbqTimezoneLike>(inject(KBQ_DATE_TIMEZONE, { optional: true }) ?? 'system');\n private readonly _changes = new Subject<KbqTimezoneLike>();\n\n constructor() {\n this.timezone = this._timezone.asReadonly();\n this.changes = this._changes.asObservable();\n }\n\n /** Activates a time zone. */\n setTimezone(timezone: KbqTimezoneLike): void {\n this._timezone.set(timezone);\n this._changes.next(timezone);\n }\n\n /**\n * Offset of the active zone at `timestamp`, in minutes east of UTC, or `null` when dates are left in\n * the host zone.\n */\n offsetAt(timestamp: number): number | null {\n return kbqResolveTimezoneOffset(this._timezone(), timestamp);\n }\n}\n\n/**\n * Utility provider for the time zone dates are rendered in.\n *\n * Provides {@link KbqDateTimezoneService} alongside the token, so listing it in a component's `providers`\n * scopes the zone to that subtree instead of resolving the root service and silently doing nothing.\n *\n * @see KBQ_DATE_TIMEZONE\n */\nexport const kbqDateTimezoneProvider = (timezone: KbqTimezoneLike): Provider[] => [\n KbqDateTimezoneService,\n { provide: KBQ_DATE_TIMEZONE, useValue: timezone }\n];\n","import { Injectable, Provider, Type } from '@angular/core';\nimport { AbstractControl, FormGroupDirective, NgForm } from '@angular/forms';\n\n/** Utility provider for `ErrorStateMatcher`. */\nexport const kbqErrorStateMatcherProvider = (\n errorStateMatcher: Type<ErrorStateMatcher> | ErrorStateMatcher\n): Provider => {\n if (errorStateMatcher instanceof Type) {\n return {\n provide: ErrorStateMatcher,\n useClass: errorStateMatcher\n };\n }\n\n return {\n provide: ErrorStateMatcher,\n useValue: errorStateMatcher\n };\n};\n\n/**\n * Error state matcher that matches when a control is invalid and form is submitted.\n * Requires use FormGroupDirective or NgForm.\n */\n@Injectable()\nexport class ShowOnFormSubmitErrorStateMatcher implements ErrorStateMatcher {\n isErrorState(control: AbstractControl | null, form: FormGroupDirective | NgForm | null): boolean {\n return !!(control?.invalid && form?.submitted);\n }\n}\n\n/**\n * Error state matcher with split behavior based on error's type:\n * - `required` errors are shown only after the form is submitted.\n * - All other errors are shown as soon as the control is invalid and touched.\n */\n@Injectable()\nexport class ShowRequiredOnSubmitErrorStateMatcher implements ErrorStateMatcher {\n isErrorState(control: AbstractControl | null, form: FormGroupDirective | NgForm | null): boolean {\n return control?.hasError('required')\n ? !!(control?.invalid && form?.submitted)\n : !!(control?.invalid && control.touched);\n }\n}\n\n/** Error state matcher that matches when a control is invalid and dirty or form is submitted. */\n@Injectable()\nexport class ShowOnControlDirtyErrorStateMatcher implements ErrorStateMatcher {\n isErrorState(control: AbstractControl | null, form: FormGroupDirective | NgForm | null): boolean {\n return !!(control?.invalid && (control.dirty || form?.submitted));\n }\n}\n\n/**\n * Provider that defines how form controls behave with regards to displaying error messages.\n * Error state matcher that matches when a control is invalid and touched or form is submitted.\n */\n@Injectable({ providedIn: 'root' })\nexport class ErrorStateMatcher {\n isErrorState(control: AbstractControl | null, form: FormGroupDirective | NgForm | null): boolean {\n return !!(control?.invalid && (control.touched || form?.submitted));\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { inject, InjectionToken } from '@angular/core';\n\n/**\n * An abstraction over the global `window` object.\n */\nexport const KBQ_WINDOW = new InjectionToken<Window>('[KBQ_WINDOW]', {\n factory: (): Window => {\n const _window =\n inject(DOCUMENT).defaultView ||\n // Backward compatibility for older Angular versions\n // https://github.com/angular/universal/blob/main/docs/gotchas.md#strategy-3-shims\n // eslint-disable-next-line no-restricted-globals\n window;\n\n if (!_window) {\n throw new Error('[KBQ_WINDOW] window is not available.');\n }\n\n return _window;\n }\n});\n","/**\n * Properties that affect the rendered width of the text and have to be mirrored onto the ruler.\n *\n * `font-variant` is deliberately absent: the shorthand does not round-trip through the computed style\n * once a field sets more than one of its longhands, so the longhands are copied instead.\n */\nconst RULER_INHERITED_PROPERTIES = [\n 'font',\n 'fontFamily',\n 'fontFeatureSettings',\n 'fontKerning',\n 'fontOpticalSizing',\n 'fontSize',\n 'fontSizeAdjust',\n 'fontStretch',\n 'fontStyle',\n 'fontSynthesis',\n 'fontVariantCaps',\n 'fontVariantEastAsian',\n 'fontVariantLigatures',\n 'fontVariantNumeric',\n 'fontVariationSettings',\n 'fontWeight',\n 'letterSpacing',\n 'textIndent',\n 'textTransform'\n] as const satisfies Array<keyof CSSStyleDeclaration>;\n\nconst RULER_PROPERTIES = {\n all: 'initial',\n position: 'absolute',\n top: '0px',\n left: '0px',\n width: '0px',\n height: '0px',\n visibility: 'hidden',\n overflow: 'scroll',\n whiteSpace: 'pre',\n pointerEvents: 'none'\n} as const satisfies Partial<CSSStyleDeclaration>;\n\n/**\n * Builds a hidden element that renders text with the typography of the element `computedStyle` was taken\n * from. Append it to the document, measure through {@link kbqMeasureRulerText}, and remove it.\n *\n * @docs-private\n */\nexport const kbqCreateTextRuler = (document: Document, computedStyle: CSSStyleDeclaration): HTMLSpanElement => {\n const ruler: HTMLSpanElement = document.createElement('span');\n\n Object.assign(ruler.style, RULER_PROPERTIES);\n RULER_INHERITED_PROPERTIES.forEach((property) => {\n ruler.style[property] = computedStyle[property];\n });\n\n return ruler;\n};\n\n/**\n * Width of `text` in pixels, in the same coordinate space as `clientWidth` and `scrollLeft`.\n *\n * `scrollWidth`, not `getBoundingClientRect()`: the latter reports the transformed box, which disagrees\n * with the untransformed layout metrics it would be compared against under a scaled ancestor.\n *\n * @docs-private\n */\nexport const kbqMeasureRulerText = (ruler: HTMLSpanElement, text: string): number => {\n ruler.textContent = text;\n\n return ruler.scrollWidth;\n};\n","import { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { DOCUMENT } from '@angular/common';\nimport { afterNextRender, DestroyRef, Directive, inject, Renderer2 } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { fromEvent, merge } from 'rxjs';\nimport { KBQ_WINDOW } from '../tokens';\nimport { kbqInjectNativeElement } from '../utils';\nimport { kbqCreateTextRuler, kbqMeasureRulerText } from './text-ruler';\n\n/**\n * Properties that should be added to the width when `box-sizing: border-box` is applied.\n */\nconst BOX_SIZING_BORDER_BOX_WIDTH_PROPERTIES = [\n 'paddingLeft',\n 'paddingRight',\n 'borderLeftWidth',\n 'borderRightWidth'\n] as const satisfies Array<keyof CSSStyleDeclaration>;\n\nconst FIELD_RESIZE_EVENTS = ['input', 'change', 'focus', 'blur'] as const;\n\n/**\n * Emulates [`field-sizing: content`](https://developer.mozilla.org/en-US/docs/Web/CSS/field-sizing) CSS property for\n * browsers that do not support it natively.\n *\n * @docs-private\n */\n@Directive({\n selector: '[kbqFieldSizingContent]',\n host: {\n class: 'kbq-field-sizing-content'\n },\n exportAs: 'kbqFieldSizingContent'\n})\nexport class KbqFieldSizingContent {\n private readonly element = kbqInjectNativeElement<HTMLInputElement>();\n private readonly renderer = inject(Renderer2);\n private readonly window = inject(KBQ_WINDOW);\n private readonly document = inject(DOCUMENT);\n private readonly destroyRef = inject(DestroyRef);\n\n constructor() {\n afterNextRender(() => this.emulate());\n }\n\n private emulate(): void {\n if (CSS.supports('field-sizing', 'content')) {\n this.renderer.setStyle(this.element, 'fieldSizing', 'content');\n\n return;\n }\n\n merge(...FIELD_RESIZE_EVENTS.map((event) => fromEvent(this.element, event)))\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.setupWidth());\n\n this.setupWidth();\n }\n\n private setupWidth(): void {\n const computedStyle = this.window.getComputedStyle(this.element);\n const ruler = kbqCreateTextRuler(this.document, computedStyle);\n const text = this.element.value || this.element.placeholder || '';\n\n this.renderer.appendChild(this.document.body, ruler);\n\n // We should add space to prevent text truncation in Safari/Firefox\n const width = this.calculateWidth(kbqMeasureRulerText(ruler, text && `${text} `), computedStyle);\n\n this.renderer.setStyle(this.element, 'width', coerceCssPixelValue(width));\n this.renderer.removeChild(this.document.body, ruler);\n }\n\n private calculateWidth(textWidth: number, computedStyle: CSSStyleDeclaration): number {\n if (computedStyle.boxSizing === 'border-box') {\n return BOX_SIZING_BORDER_BOX_WIDTH_PROPERTIES.reduce(\n (width, property) => width + (parseFloat(computedStyle[property]) || 0),\n textWidth\n );\n }\n\n return textWidth;\n }\n}\n","import { ElementRef, InjectionToken, ModelSignal } from '@angular/core';\n\n/**\n * Internal contract for `KbqFormField` used by code that cannot import the form-field\n * class directly because of a circular dependency (e.g. `core/select/common.ts`).\n *\n * @deprecated Use KbqFormField from `@koobiq/components/form-field`.\n *\n * @docs-private\n */\nexport interface KbqFormFieldRef {\n /** @see KbqFormField.control */\n control: any;\n canCleanerClearByEsc: boolean;\n /** Use when KbqFormField is in an overlay container. */\n inOverlay: ModelSignal<boolean>;\n focus(): void;\n}\n\n/**\n * Injection token that can be used to inject an instances of `KbqFormField`. It serves\n * as alternative token to the actual `KbqFormField` class which would cause unnecessary\n * retention of the `KbqFormField` class and its component metadata.\n *\n * @deprecated Use `KBQ_FORM_FIELD` from `@koobiq/components/form-field`.\n *\n * @docs-private\n */\nexport const KBQ_FORM_FIELD_REF = new InjectionToken<KbqFormFieldRef>('KbqFormFieldRef');\n\n/**\n * Contract for an ancestor that wants to override where overlays opened by a nested\n * `KbqFormField`'s control (e.g. a select's dropdown, a datepicker's calendar) are\n * anchored, instead of the form-field's own container.\n */\nexport interface KbqConnectedOverlayOriginProvider {\n /**\n * Element the overlay should be positioned and sized against, or `undefined` to fall\n * back to the form-field's own container.\n */\n getConnectedOverlayOrigin(): ElementRef | undefined;\n}\n\n/**\n * Injection token for `KbqConnectedOverlayOriginProvider`. Provide it on an ancestor\n * component to redirect where a nested `KbqFormField`'s control positions its overlay.\n */\nexport const KBQ_CONNECTED_OVERLAY_ORIGIN = new InjectionToken<KbqConnectedOverlayOriginProvider>(\n 'KbqConnectedOverlayOrigin'\n);\n","import { kbqCreateTextRuler, kbqMeasureRulerText } from './text-ruler';\n\n/**\n * Scrolls a text field horizontally so that its current selection is visible.\n *\n * Browsers scroll a field to the caret only for edits the user makes: a selection set from script leaves\n * the field at whatever offset the last keystroke produced. A masked field re-renders its value and moves\n * the caret between value parts on every keystroke, so without this the field keeps the offset of the part\n * that was edited before and clips the one being edited now.\n *\n * Leaves the field alone when it is not focused, when it renders something other than its value, and in\n * right-to-left text, where the browser's own caret following is already correct.\n */\nexport const kbqRevealSelection = (element: HTMLInputElement): void => {\n const document = element.ownerDocument;\n const window = document.defaultView;\n\n // A field the user has left is the browser's to scroll: it resets the offset on blur, and a write\n // landing after that would park the field mid-value until it is focused again.\n if (!window || document.activeElement !== element) {\n return;\n }\n\n // A password field renders bullets, which are not the widths of the characters behind them.\n if (element.type === 'password') {\n return;\n }\n\n const maxScrollLeft = element.scrollWidth - element.clientWidth;\n\n // The value fits, so any offset the field is left at is an artifact of an earlier, longer value.\n if (maxScrollLeft <= 0) {\n element.scrollLeft = 0;\n\n return;\n }\n\n const computedStyle = window.getComputedStyle(element);\n\n // Every offset below is measured from the left edge, while an RTL field scrolls into negative\n // `scrollLeft`. Mirroring that needs the visual order of a bidi line rather than a prefix of the\n // value, so the browser's own caret following is left in place instead of being overwritten.\n if (computedStyle.direction === 'rtl') {\n return;\n }\n\n const { value, selectionStart, selectionEnd, clientWidth } = element;\n const paddingLeft = parseFloat(computedStyle.paddingLeft) || 0;\n const paddingRight = parseFloat(computedStyle.paddingRight) || 0;\n const ruler = kbqCreateTextRuler(document, computedStyle);\n\n document.body.appendChild(ruler);\n\n // `scrollLeft` is measured from the start of the padding box, the text starts one `padding-left` in.\n const start = paddingLeft + kbqMeasureRulerText(ruler, value.slice(0, selectionStart ?? 0));\n // A caret is the common case on the typing path, and measuring it twice costs a second layout.\n const end =\n selectionEnd === selectionStart\n ? start\n : paddingLeft + kbqMeasureRulerText(ruler, value.slice(0, selectionEnd ?? 0));\n\n ruler.remove();\n\n // The smallest offset that still shows the selection, so that as much as possible of what precedes it\n // stays on screen. Deriving the offset from the selection alone, instead of nudging the current one,\n // keeps the result independent of where the last keystroke happened to leave the field.\n const minimumRevealingEnd = Math.max(end + paddingRight - clientWidth, 0);\n // A selection wider than the field cannot be shown whole; its start is the half worth keeping.\n const maximumKeepingStart = Math.max(start - paddingLeft, 0);\n\n element.scrollLeft = Math.min(minimumRevealingEnd, maximumKeepingStart, maxScrollLeft);\n};\n\n/**\n * Selects the `[start, end]` range of a text field and keeps it visible.\n *\n * @see {@link kbqRevealSelection}\n */\nexport const kbqSetSelectionRange = (element: HTMLInputElement, start: number, end: number): void => {\n element.setSelectionRange(start, end);\n\n kbqRevealSelection(element);\n};\n","import {\n KbqA11yLocaleConfiguration,\n KbqActionsPanelLocaleConfiguration,\n KbqClampedTextLocaleConfig,\n KbqCodeBlockLocaleConfiguration,\n KbqFileUploadLocaleConfig,\n KbqSelectLocaleConfiguration,\n KbqTimeRangeLocaleConfig\n} from './types';\n\nexport const enUSLocaleData = {\n a11y: {\n close: 'Close',\n save: 'Save',\n cancel: 'Cancel',\n removeAll: 'Remove all',\n expandBreadcrumbs: 'Show hidden breadcrumbs',\n previousMonth: 'Previous month',\n currentDate: 'Current date',\n nextMonth: 'Next month',\n clear: 'Clear',\n showPassword: 'Show password',\n hidePassword: 'Hide password',\n resizeColumns: 'Resize columns'\n } satisfies KbqA11yLocaleConfiguration,\n select: { hiddenItemsText: '+{{ number }}', selectAll: 'Select all' } satisfies KbqSelectLocaleConfiguration,\n datepicker: {\n placeholder: 'yyyy-mm-dd',\n dateInput: 'yyyy-MM-dd'\n },\n timepicker: {\n placeholder: {\n full: 'hh:mm:ss',\n short: 'hh:mm'\n }\n },\n fileUpload: {\n single: {\n captionText: 'Drag file here or {{ browseLink }}',\n captionTextOnlyFolder: 'Drag here or {{ browseLinkFolder }}',\n captionTextWithFolder: 'Drag here or {{ browseLink }} or {{ browseLinkFolderMixed }}',\n browseLink: 'choose',\n browseLinkFolder: 'choose folder',\n browseLinkFolderMixed: 'folder'\n },\n multiple: {\n captionText: 'or {{ browseLink }}',\n captionTextOnlyFolder: 'or {{ browseLinkFolder }}',\n captionTextWithFolder: 'or {{ browseLink }} or {{ browseLinkFolderMixed }}',\n captionTextWhenSelected: 'Drag more or {{ browseLink }}',\n captionTextForCompactSize: 'Drag files or {{ browseLink }}',\n browseLink: 'choose files',\n browseLinkFolder: 'choose folder',\n browseLinkFolderMixed: 'folder',\n title: 'Drag here'\n }\n } satisfies KbqFileUploadLocaleConfig,\n codeBlock: {\n softWrapOnTooltip: 'Enable word wrap',\n softWrapOffTooltip: 'Disable word wrap',\n downloadTooltip: 'Download',\n copiedTooltip: '✓ Copied',\n copyTooltip: 'Copy',\n viewAllText: 'Show all',\n viewLessText: 'Show less',\n openExternalSystemTooltip: 'Open in the external system'\n } satisfies KbqCodeBlockLocaleConfiguration,\n timezone: {\n searchPlaceholder: 'City or time zone'\n },\n actionsPanel: {\n closeTooltip: 'Deselect'\n } satisfies KbqActionsPanelLocaleConfiguration,\n filterBar: {\n reset: {\n buttonName: 'Reset'\n },\n search: {\n tooltip: 'Search',\n placeholder: 'Search'\n },\n filters: {\n defaultName: 'Filters',\n saveNewFilterTooltip: 'Save the new filter',\n searchPlaceholder: 'Search',\n searchEmptyResult: 'Nothing found',\n saveAsNewFilter: 'Save as new filter',\n saveChanges: 'Save changes',\n saveAsNew: 'Save as new',\n change: 'Edit',\n resetChanges: 'Reset',\n remove: 'Delete',\n name: 'Name',\n error: 'The search with such name already exists',\n errorHint: 'Could not save the filter. Try again or contact the administrator.',\n saveButton: 'Save',\n cancelButton: 'Cancel',\n actionsTooltip: 'Filter actions'\n },\n add: {\n tooltip: 'Add filter',\n addedAnnouncement: '{{ name }} filter added'\n },\n refresher: {\n refresh: 'Refresh',\n settings: 'Refresh settings'\n },\n pipe: {\n clearButtonTooltip: 'Clear',\n removeButtonTooltip: 'Delete',\n applyButton: 'Apply',\n emptySearchResult: 'Nothing found',\n selectAll: 'Select all'\n },\n datePipe: {\n customPeriod: 'Custom period',\n customPeriodFrom: 'from',\n customPeriodTo: 'to',\n customPeriodErrorHint: 'The period cannot start later than it ends',\n customPeriodMinIntervalErrorHint: 'The period cannot be shorter than {{ value }}',\n customPeriodMaxIntervalErrorHint: 'The period cannot be longer than {{ value }}',\n backToPeriodSelection: 'Back'\n }\n },\n clampedText: {\n openText: 'Expand',\n closeText: 'Collapse',\n showMoreText: 'Show {exceededItemCount} more',\n moreText: 'more'\n } satisfies KbqClampedTextLocaleConfig,\n navbarIc: {\n toggle: {\n pinButton: 'Leave expanded',\n collapseButton: 'Collapse'\n }\n },\n navbar: {\n toggle: {\n expand: 'Expand',\n collapse: 'Collapse'\n }\n },\n searchExpandable: {\n tooltip: 'Search',\n placeholder: 'Search'\n },\n appSwitcher: {\n searchPlaceholder: 'Search',\n searchEmptyResult: 'Nothing found',\n sitesHeader: 'Other sites'\n },\n timeRange: {\n title: {\n for: 'for',\n placeholder: 'Select period'\n },\n editor: {\n from: 'from',\n to: 'to',\n apply: 'Apply',\n cancel: 'Cancel',\n rangeLabel: 'Period',\n allTime: 'for all time',\n currentQuarter: 'for the current quarter',\n currentYear: 'for the current year',\n allTimeOption: 'All time',\n currentQuarterOption: 'Current quarter',\n currentYearOption: 'Current year'\n },\n durationTemplate: {\n title: {\n SEPARATOR: ' ',\n LAST_PART_SEPARATOR: '',\n YEARS: `{years, plural,\n one {# year}\n other {last # years}\n }`,\n MONTHS: `{months, plural,\n one {last month}\n other {last # months}\n }`,\n WEEKS: `{weeks, plural,\n one {last week}\n other {last # weeks}\n }`,\n DAYS: `{days, plural,\n one {last day}\n other {last # days}\n }`,\n HOURS: `{hours, plural,\n one {last hour}\n other {last # hours}\n }`,\n MINUTES: `{minutes, plural,\n one {last minute}\n other {last # minutes}\n }`,\n SECONDS: `{seconds, plural,\n one {last second}\n other {last # seconds}\n }`,\n YEARS_FRACTION: `{years} years`,\n MONTHS_FRACTION: `{months} months`\n },\n option: {\n SEPARATOR: ' ',\n LAST_PART_SEPARATOR: '',\n YEARS: `{years, plural,\n one {# year}\n other {Last # years}\n }`,\n MONTHS: `{months, plural,\n one {Last month}\n other {Last # months}\n }`,\n WEEKS: `{weeks, plural,\n one {Last week}\n other {Last # weeks}\n }`,\n DAYS: `{days, plural,\n one {Last day}\n other {Last # days}\n }`,\n HOURS: `{hours, plural,\n one {Last hour}\n other {Last # hours}\n }`,\n MINUTES: `{minutes, plural,\n one {Last minute}\n other {Last # minutes}\n }`,\n SECONDS: `{seconds, plural,\n one {Last second}\n other {Last # seconds}\n }`,\n YEARS_FRACTION: `{years} years`,\n MONTHS_FRACTION: `{months} months`\n }\n }\n } satisfies KbqTimeRangeLocaleConfig,\n notificationCenter: {\n notifications: 'Notifications',\n remove: 'Remove',\n doNotDisturb: 'Do not disturb',\n showPopUpNotifications: 'Show pop-up notifications',\n noNotifications: 'No notifications',\n failedToLoadNotifications: 'Failed to load notifications',\n repeat: 'Repeat',\n loadingMore: 'Loading more notifications'\n }\n};\n","import {\n KbqA11yLocaleConfiguration,\n KbqActionsPanelLocaleConfiguration,\n KbqClampedTextLocaleConfig,\n KbqCodeBlockLocaleConfiguration,\n KbqFileUploadLocaleConfig,\n KbqSelectLocaleConfiguration,\n KbqTimeRangeLocaleConfig\n} from './types';\n\nexport const esLALocaleData = {\n a11y: {\n close: 'Cerrar',\n save: 'Guardar',\n cancel: 'Cancelar',\n removeAll: 'Eliminar todo',\n expandBreadcrumbs: 'Mostrar elementos ocultos',\n previousMonth: 'Mes anterior',\n currentDate: 'Fecha actual',\n nextMonth: 'Mes siguiente',\n clear: 'Borrar',\n showPassword: 'Mostrar la contraseña',\n hidePassword: 'Ocultar la contraseña',\n resizeColumns: 'Redimensionar columnas'\n } satisfies KbqA11yLocaleConfiguration,\n select: {\n hiddenItemsText: '+{{ number }}',\n selectAll: 'Seleccionar todo'\n } satisfies KbqSelectLocaleConfiguration,\n datepicker: {\n placeholder: 'dd/mm/aaaa'\n },\n timepicker: {\n placeholder: {\n full: 'hh:mm:ss',\n short: 'hh:mm'\n }\n },\n fileUpload: {\n single: {\n captionText: 'Arrastre el archivo aquí o {{ browseLink }}',\n captionTextOnlyFolder: 'Arrastre el archivo aquí o {{ browseLinkFolder }}',\n captionTextWithFolder: 'Arrastre el archivo aquí o {{ browseLink }} o {{ browseLinkFolderMixed }}',\n browseLink: 'elija',\n browseLinkFolder: 'carpeta',\n browseLinkFolderMixed: 'carpeta'\n },\n multiple: {\n captionText: 'Arrastre aquí o {{ browseLink }}',\n captionTextOnlyFolder: 'Arrastre aquí o {{ browseLinkFolder }}',\n captionTextWithFolder: 'Arrastre aquí o {{ browseLink }} o {{ browseLinkFolderMixed }}',\n captionTextWhenSelected: 'Arrastre más archivos aquí o {{ browseLink }}',\n captionTextForCompactSize: 'Arrastre archivos o {{ browseLink }}',\n browseLink: 'elija',\n browseLinkFolder: 'carpeta',\n browseLinkFolderMixed: 'carpeta',\n title: 'Cargue los archivos'\n }\n } satisfies KbqFileUploadLocaleConfig,\n codeBlock: {\n softWrapOnTooltip: 'Activar el ajuste de texto',\n softWrapOffTooltip: 'Desactivar el ajuste de texto',\n downloadTooltip: 'Descargar',\n copiedTooltip: '✓ Copiado',\n copyTooltip: 'Copiar',\n viewAllText: 'Mostrar todo',\n viewLessText: 'Mostrar menos',\n openExternalSystemTooltip: 'Abrir en el sistema externo'\n } satisfies KbqCodeBlockLocaleConfiguration,\n timezone: {\n searchPlaceholder: 'Ciudad o zona horaria'\n },\n actionsPanel: {\n closeTooltip: 'Desmarque'\n } satisfies KbqActionsPanelLocaleConfiguration,\n filterBar: {\n reset: {\n buttonName: 'Restablecer'\n },\n search: {\n tooltip: 'Búsqueda',\n placeholder: 'Búsqueda'\n },\n filters: {\n defaultName: 'Filtros',\n saveNewFilterTooltip: 'Guardar el filtro nuevo',\n searchPlaceholder: 'Búsqueda',\n searchEmptyResult: 'No se encontró nada',\n saveAsNewFilter: 'Guardar como filtro nuevo',\n saveChanges: 'Guardar cambios',\n saveAsNew: 'Guardar como nuevo',\n change: 'Editar',\n resetChanges: 'Restablecer',\n remove: 'Eliminar',\n name: 'Nombre',\n error: 'Ya existe una búsqueda con ese nombre',\n errorHint: 'No se pudo guardar el filtro. Intente de nuevo o comuníquese con el administrador.',\n saveButton: 'Guardar',\n cancelButton: 'Cancelar',\n actionsTooltip: 'Acciones de filtro'\n },\n add: {\n tooltip: 'Agregar filtro',\n addedAnnouncement: 'Filtro {{ name }} agregado'\n },\n refresher: {\n refresh: 'Actualizar',\n settings: 'Configuración de actualización'\n },\n pipe: {\n clearButtonTooltip: 'Borrar',\n removeButtonTooltip: 'Eliminar',\n applyButton: 'Aplicar',\n emptySearchResult: 'No se encontró nada',\n selectAll: 'Seleccionar todo'\n },\n datePipe: {\n customPeriod: 'Personalizar período',\n customPeriodFrom: 'desde',\n customPeriodTo: 'hasta',\n customPeriodErrorHint: 'El inicio del período no puede estar después del fin',\n customPeriodMinIntervalErrorHint: 'El período no puede ser más corto que {{ value }}',\n customPeriodMaxIntervalErrorHint: 'El período no puede ser más largo que {{ value }}',\n backToPeriodSelection: 'Atrás'\n }\n },\n clampedText: {\n openText: 'Expandir',\n closeText: 'Contraer',\n showMoreText: 'Mostrar {exceededItemCount} más',\n moreText: 'más'\n } satisfies KbqClampedTextLocaleConfig,\n navbarIc: {\n toggle: {\n pinButton: 'Expandir el menú',\n collapseButton: 'Colapsar'\n }\n },\n navbar: {\n toggle: {\n expand: 'Expandir',\n collapse: 'Colapsar'\n }\n },\n searchExpandable: {\n tooltip: 'Búsqueda',\n placeholder: 'Búsqueda'\n },\n appSwitcher: {\n searchPlaceholder: 'Búsqueda',\n searchEmptyResult: 'No se encontró nada',\n sitesHeader: 'Otros sitios'\n },\n timeRange: {\n title: {\n for: 'para',\n placeholder: 'Seleccione el período'\n },\n editor: {\n from: 'de',\n to: 'a',\n apply: 'Aplicar',\n cancel: 'Cancelar',\n rangeLabel: 'Período',\n allTime: 'por todo el tiempo',\n currentQuarter: 'por el trimestre actual',\n currentYear: 'por el año actual',\n allTimeOption: 'Todo el tiempo',\n currentQuarterOption: 'Trimestre actual',\n currentYearOption: 'Año actual'\n },\n durationTemplate: {\n title: {\n SEPARATOR: ', ',\n LAST_PART_SEPARATOR: '',\n YEARS: `{years, plural,\n one {# año}\n other {últimos # años}\n }`,\n MONTHS: `{months, plural,\n one {último mes}\n other {últimos # meses}\n }`,\n WEEKS: `{weeks, plural,\n one {última semana}\n other {últimas # semanas}\n }`,\n DAYS: `{days, plural,\n one {último día}\n other {últimos # días}\n }`,\n HOURS: `{hours, plural,\n one {última hora}\n other {últimas # horas}\n }`,\n MINUTES: `{minutes, plural,\n one {último minuto}\n other {últimos # minutos}\n }`,\n SECONDS: `{seconds, plural,\n one {último segundo}\n other {últimos # segundos}\n }`,\n YEARS_FRACTION: `{years} años`,\n MONTHS_FRACTION: `{months} meses`\n },\n option: {\n SEPARATOR: ', ',\n LAST_PART_SEPARATOR: '',\n YEARS: `{years, plural,\n one {# año}\n other {Últimos # años}\n }`,\n MONTHS: `{months, plural,\n one {Último mes}\n other {Últimos # meses}\n }`,\n WEEKS: `{weeks, plural,\n one {Última semana}\n other {Últimas # semanas}\n }`,\n DAYS: `{days, plural,\n one {Último día}\n other {Últimos # días}\n }`,\n HOURS: `{hours, plural,\n one {Última hora}\n other {Últimas # horas}\n }`,\n MINUTES: `{minutes, plural,\n one {Último minuto}\n other {Últimos # minutos}\n }`,\n SECONDS: `{seconds, plural,\n one {Último segundo}\n other {Últimos # segundos}\n }`,\n YEARS_FRACTION: `{years} años`,\n MONTHS_FRACTION: `{months} meses`\n }\n }\n } satisfies KbqTimeRangeLocaleConfig,\n notificationCenter: {\n notifications: 'Notificaciones',\n remove: 'Eliminar',\n doNotDisturb: 'No molestar',\n showPopUpNotifications: 'Mostrar notificaciones emergentes',\n noNotifications: 'Sin notificaciones',\n failedToLoadNotifications: 'Error al cargar las notificaciones',\n repeat: 'Repetir',\n loadingMore: 'Cargando más notificaciones'\n }\n};\n","import { KbqSizeUnitsConfig } from '../formatters';\nimport { KbqNumberFormatOptions, KbqNumberInputLocaleConfig, KbqNumberRoundingLocaleConfig } from './types';\n\nexport const enUSFormattersData = {\n formatters: {\n number: {\n rounding: {\n separator: '',\n groupSeparator: '.',\n thousand: 'K',\n million: 'M',\n billion: 'B',\n trillion: 'T'\n } satisfies KbqNumberRoundingLocaleConfig\n }\n },\n input: {\n number: {\n groupSeparator: [','],\n fractionSeparator: '.'\n } satisfies KbqNumberInputLocaleConfig\n },\n sizeUnits: {\n defaultUnitSystem: 'SI',\n defaultPrecision: 2,\n unitSystems: {\n SI: {\n abbreviations: ['B', 'KB', 'MB', 'GB', 'TB'],\n base: 10,\n power: 3\n },\n IEC: {\n abbreviations: ['B', 'KiB', 'MiB', 'GiB', 'TiB'],\n base: 2,\n power: 10\n }\n }\n } satisfies KbqSizeUnitsConfig\n};\n\nexport const esLAFormattersData = {\n formatters: {\n number: {\n rounding: {\n separator: '',\n groupSeparator: ',',\n thousand: 'K',\n million: 'M',\n billion: 'MRD',\n trillion: 'B'\n } satisfies KbqNumberRoundingLocaleConfig,\n decimal: {\n viewGroupSeparator: '\\u2009'\n } satisfies KbqNumberFormatOptions\n }\n },\n input: {\n number: {\n // nbsp is generated automatically and used by default in spec\n groupSeparator: [' ', ' ', '\\u2009'],\n fractionSeparator: ',',\n viewGroupSeparator: '\\u2009'\n } satisfies KbqNumberInputLocaleConfig\n },\n sizeUnits: {\n defaultUnitSystem: 'SI',\n defaultPrecision: 2,\n unitSystems: {\n SI: {\n abbreviations: ['B', 'KB', 'MB', 'GB', 'TB'],\n base: 10,\n power: 3\n },\n IEC: {\n abbreviations: ['B', 'KiB', 'MiB', 'GiB', 'TiB'],\n base: 2,\n power: 10\n }\n }\n }\n};\n\nexport const ptBRFormattersData = {\n formatters: {\n number: {\n rounding: {\n separator: ' ',\n groupSeparator: ',',\n thousand: 'mil',\n million: 'mi',\n billion: 'bi',\n trillion: 'tri'\n } satisfies KbqNumberRoundingLocaleConfig\n }\n },\n input: {\n number: {\n groupSeparator: ['.'],\n fractionSeparator: ','\n } satisfies KbqNumberInputLocaleConfig\n },\n sizeUnits: {\n defaultUnitSystem: 'SI',\n defaultPrecision: 2,\n unitSystems: {\n SI: {\n abbreviations: ['B', 'KB', 'MB', 'GB', 'TB'],\n base: 10,\n power: 3\n },\n IEC: {\n abbreviations: ['B', 'KiB', 'MiB', 'GiB', 'TiB'],\n base: 2,\n power: 10\n }\n }\n }\n};\n\nexport const ruRUFormattersData = {\n formatters: {\n number: {\n rounding: {\n separator: ' ',\n groupSeparator: ',',\n thousand: 'К',\n million: 'М',\n // Latin `B` (U+0042) according to UX Guidelines.\n billion: 'B',\n trillion: 'Т'\n } satisfies KbqNumberRoundingLocaleConfig,\n decimal: {\n viewGroupSeparator: '\\u2009'\n } satisfies KbqNumberFormatOptions\n }\n },\n input: {\n number: {\n // nbsp is generated automatically and used by default in spec\n groupSeparator: [' ', ' ', '\\u2009'],\n fractionSeparator: ',',\n startFormattingFrom: 4,\n viewGroupSeparator: '\\u2009'\n } satisfies KbqNumberInputLocaleConfig\n },\n sizeUnits: {\n defaultUnitSystem: 'SI',\n defaultPrecision: 2,\n unitSystems: {\n SI: {\n abbreviations: ['Б', 'КБ', 'МБ', 'ГБ', 'ТБ'],\n base: 10,\n power: 3\n },\n IEC: {\n abbreviations: ['Б', 'КиБ', 'МиБ', 'ГиБ', 'ТиБ'],\n base: 2,\n power: 10\n }\n }\n }\n};\n\nexport const tkTMFormattersData = {\n formatters: {\n number: {\n rounding: {\n separator: ' ',\n groupSeparator: '',\n thousand: 'M',\n million: 'Mn',\n billion: 'Mr',\n trillion: 'Tn'\n } satisfies KbqNumberRoundingLocaleConfig\n }\n },\n input: {\n number: {\n groupSeparator: [' ', ' ', '\\u2009'],\n fractionSeparator: ',',\n viewGroupSeparator: '\\u2009'\n } satisfies KbqNumberInputLocaleConfig\n },\n sizeUnits: {\n defaultUnitSystem: 'SI',\n defaultPrecision: 2,\n unitSystems: {\n SI: {\n abbreviations: ['B', 'KB', 'MB', 'GB', 'TB'],\n base: 10,\n power: 3\n },\n IEC: {\n abbreviations: ['B', 'KiB', 'MiB', 'GiB', 'TiB'],\n base: 2,\n power: 10\n }\n }\n }\n};\n","import {\n KbqA11yLocaleConfiguration,\n KbqActionsPanelLocaleConfiguration,\n KbqClampedTextLocaleConfig,\n KbqCodeBlockLocaleConfiguration,\n KbqFileUploadLocaleConfig,\n KbqSelectLocaleConfiguration,\n KbqTimeRangeLocaleConfig\n} from './types';\n\nexport const ptBRLocaleData = {\n a11y: {\n close: 'Fechar',\n save: 'Salvar',\n cancel: 'Cancelar',\n removeAll: 'Remover tudo',\n expandBreadcrumbs: 'Mostrar itens ocultos',\n previousMonth: 'Mês anterior',\n currentDate: 'Data atual',\n nextMonth: 'Próximo mês',\n clear: 'Apagar',\n showPassword: 'Mostrar a senha',\n hidePassword: 'Ocultar a senha',\n resizeColumns: 'Redimensionar colunas'\n } satisfies KbqA11yLocaleConfiguration,\n select: {\n hiddenItemsText: '+{{ number }}',\n selectAll: 'Selecionar tudo'\n } satisfies KbqSelectLocaleConfiguration,\n datepicker: {\n placeholder: 'dd/mm/yyyy'\n },\n timepicker: {\n placeholder: {\n full: 'hh:mm:ss',\n short: 'hh:mm'\n }\n },\n fileUpload: {\n single: {\n captionText: 'Arrastar o arquivo aqui ou {{ browseLink }}',\n captionTextOnlyFolder: 'Arrastar o arquivo aqui ou {{ browseLinkFolder }}',\n captionTextWithFolder: 'Arrastar o arquivo aqui ou {{ browseLink }} ou {{ browseLinkFolderMixed }}',\n browseLink: 'escolher',\n browseLinkFolder: 'pasta',\n browseLinkFolderMixed: 'pasta'\n },\n multiple: {\n captionText: 'Arrastar aqui ou {{ browseLink }}',\n captionTextOnlyFolder: 'Arrastar aqui ou {{ browseLinkFolder }}',\n captionTextWithFolder: 'Arrastar aqui ou {{ browseLink }} ou {{ browseLinkFolderMixed }}',\n captionTextWhenSelected: 'Arrastar mais arquivos aqui ou {{ browseLink }}',\n captionTextForCompactSize: 'Arrastar arquivos ou {{ browseLink }}',\n browseLink: 'escolher',\n browseLinkFolder: 'pasta',\n browseLinkFolderMixed: 'pasta',\n title: 'Carregar arquivos'\n }\n } satisfies KbqFileUploadLocaleConfig,\n codeBlock: {\n softWrapOnTooltip: 'Ativar quebra de linha',\n softWrapOffTooltip: 'Desativar quebra de linha',\n downloadTooltip: 'Baixar',\n copiedTooltip: '✓ Copiado',\n copyTooltip: 'Copiar',\n viewAllText: 'Mostrar todos',\n viewLessText: 'Mostrar menos',\n openExternalSystemTooltip: 'Abrir em sistema externo'\n } satisfies KbqCodeBlockLocaleConfiguration,\n timezone: {\n searchPlaceholder: 'Cidade ou fuso horário'\n },\n actionsPanel: {\n closeTooltip: 'Desmarcar'\n } satisfies KbqActionsPanelLocaleConfiguration,\n filterBar: {\n reset: {\n buttonName: 'Reconfigurar'\n },\n search: {\n tooltip: 'Buscar',\n placeholder: 'Buscar'\n },\n filters: {\n defaultName: 'Filtros',\n saveNewFilterTooltip: 'Salve o filtro novo',\n searchPlaceholder: 'Buscar',\n searchEmptyResult: 'Nada encontrado',\n saveAsNewFilter: 'Salve o filtro novo',\n saveChanges: 'Salve as mudanças',\n saveAsNew: 'Salve como novo',\n change: 'Editar',\n resetChanges: 'Reconfigurar',\n remove: 'Deletar',\n name: 'Nome',\n error: 'A busca com esse nome já existe',\n errorHint: 'O filtro não pôde ser salvo. Tente de novo ou entre em contato com o administrador.',\n saveButton: 'Salvar',\n cancelButton: 'Cancelar',\n actionsTooltip: 'Ações do filtro'\n },\n add: {\n tooltip: 'Adicionar filtros',\n addedAnnouncement: 'Filtro {{ name }} adicionado'\n },\n refresher: {\n refresh: 'Atualizar',\n settings: 'Configurações de atualização'\n },\n pipe: {\n clearButtonTooltip: 'Apagar',\n removeButtonTooltip: 'Deletar',\n applyButton: 'Aplicar',\n emptySearchResult: 'Nada encontrado',\n selectAll: 'Selecionar todos'\n },\n datePipe: {\n customPeriod: 'Selecionar período',\n customPeriodFrom: 'de',\n customPeriodTo: 'até',\n customPeriodErrorHint: 'O período não pode começar depois de quando acaba',\n customPeriodMinIntervalErrorHint: 'O período não pode ser menor que {{ value }}',\n customPeriodMaxIntervalErrorHint: 'O período não pode ser maior que {{ value }}',\n backToPeriodSelection: 'Voltar'\n }\n },\n clampedText: {\n openText: 'Expandir',\n closeText: 'Recolher',\n showMoreText: 'Mostrar mais {exceededItemCount}',\n moreText: 'mais'\n } satisfies KbqClampedTextLocaleConfig,\n navbarIc: {\n toggle: {\n pinButton: 'Deixar expandido',\n collapseButton: 'Recolher'\n }\n },\n navbar: {\n toggle: {\n expand: 'Expandir',\n collapse: 'Colapso'\n }\n },\n searchExpandable: {\n tooltip: 'Pesquisar',\n placeholder: 'Pesquisar'\n },\n appSwitcher: {\n searchPlaceholder: 'Pesquisar',\n searchEmptyResult: 'Nada encontrado',\n sitesHeader: 'Outros sites'\n },\n timeRange: {\n title: {\n for: 'para',\n placeholder: 'Selecione o período'\n },\n editor: {\n from: 'de',\n to: 'até',\n apply: 'Aplicar',\n cancel: 'Cancelar',\n rangeLabel: 'Período',\n allTime: 'por todo o tempo',\n currentQuarter: 'pelo trimestre atual',\n currentYear: 'pelo ano atual',\n allTimeOption: 'Todo o tempo',\n currentQuarterOption: 'Trimestre atual',\n currentYearOption: 'Ano atual'\n },\n durationTemplate: {\n title: {\n SEPARATOR: ' e ',\n LAST_PART_SEPARATOR: '',\n YEARS: `{years, plural,\n one {# ano}\n other {últimos # anos}\n }`,\n MONTHS: `{months, plural,\n one {último mês}\n other {últimos # meses}\n }`,\n WEEKS: `{weeks, plural,\n one {última semana}\n other {últimas # semanas}\n }`,\n DAYS: `{days, plural,\n one {último dia}\n other {últimos # dias}\n }`,\n HOURS: `{hours, plural,\n one {última hora}\n other {últimas # horas}\n }`,\n MINUTES: `{minutes, plural,\n one {último minuto}\n other {últimos # minutos}\n }`,\n SECONDS: `{seconds, plural,\n one {último segundo}\n other {últimos # segundos}\n }`,\n YEARS_FRACTION: `{years} anos`,\n MONTHS_FRACTION: `{months} meses`\n },\n option: {\n SEPARATOR: ' e ',\n LAST_PART_SEPARATOR: '',\n YEARS: `{years, plural,\n one {# ano}\n other {Últimos # anos}\n }`,\n MONTHS: `{months, plural,\n one {Último mês}\n other {Últimos # meses}\n }`,\n WEEKS: `{weeks, plural,\n one {Última semana}\n other {Últimas # semanas}\n }`,\n DAYS: `{days, plural,\n one {Último dia}\n other {Últimos # dias}\n }`,\n HOURS: `{hours, plural,\n one {Última hora}\n other {Últimas # horas}\n }`,\n MINUTES: `{minutes, plural,\n one {Último minuto}\n other {Últimos # minutos}\n }`,\n SECONDS: `{seconds, plural,\n one {Último segundo}\n other {Últimos # segundos}\n }`,\n YEARS_FRACTION: `{years} anos`,\n MONTHS_FRACTION: `{months} meses`\n }\n }\n } satisfies KbqTimeRangeLocaleConfig,\n notificationCenter: {\n notifications: 'Notificações',\n remove: 'Remover',\n doNotDisturb: 'Não perturbe',\n showPopUpNotifications: 'Mostrar notificações pop-up',\n noNotifications: 'Sem notificações',\n failedToLoadNotifications: 'Falha ao carregar notificações',\n repeat: 'Repetir',\n loadingMore: 'Carregando mais notificações'\n }\n};\n","import {\n KbqA11yLocaleConfiguration,\n KbqActionsPanelLocaleConfiguration,\n KbqClampedTextLocaleConfig,\n KbqCodeBlockLocaleConfiguration,\n KbqFileUploadLocaleConfig,\n KbqSelectLocaleConfiguration,\n KbqTimeRangeLocaleConfig\n} from './types';\n\nexport const ruRULocaleData = {\n a11y: {\n close: 'Закрыть',\n save: 'Сохранить',\n cancel: 'Отменить',\n removeAll: 'Удалить все',\n expandBreadcrumbs: 'Показать скрытые элементы',\n previousMonth: 'Предыдущий месяц',\n currentDate: 'Текущая дата',\n nextMonth: 'Следующий месяц',\n clear: 'Очистить',\n showPassword: 'Показать пароль',\n hidePassword: 'Скрыть пароль',\n resizeColumns: 'Изменить ширину колонок'\n } satisfies KbqA11yLocaleConfiguration,\n select: { hiddenItemsText: '+{{ number }}', selectAll: 'Выбрать все' } satisfies KbqSelectLocaleConfiguration,\n datepicker: {\n placeholder: 'дд.мм.гггг',\n dateInput: 'dd.MM.yyyy'\n },\n timepicker: {\n placeholder: {\n full: 'чч:мм:сс',\n short: 'чч:мм'\n }\n },\n fileUpload: {\n single: {\n captionText: 'Перетащите сюда или {{ browseLink }}',\n captionTextOnlyFolder: 'Перетащите сюда или {{ browseLinkFolder }}',\n captionTextWithFolder: 'Перетащите сюда или {{ browseLink }} или {{ browseLinkFolderMixed }}',\n browseLink: 'выберите файл',\n browseLinkFolder: 'выберите папку',\n browseLinkFolderMixed: 'папку'\n },\n multiple: {\n captionText: 'или {{ browseLink }}',\n captionTextOnlyFolder: 'или {{ browseLinkFolder }}',\n captionTextWithFolder: 'или {{ browseLink }} или {{ browseLinkFolderMixed }}',\n captionTextWhenSelected: 'Перетащите еще или {{ browseLink }}',\n captionTextForCompactSize: 'Перетащите сюда или {{ browseLink }}',\n browseLink: 'выберите файлы',\n browseLinkFolder: 'выберите папку',\n browseLinkFolderMixed: 'папку',\n title: 'Перетащите сюда'\n }\n } satisfies KbqFileUploadLocaleConfig,\n codeBlock: {\n softWrapOnTooltip: 'Включить перенос по словам',\n softWrapOffTooltip: 'Выключить перенос по словам',\n downloadTooltip: 'Скачать',\n copiedTooltip: '✓ Скопировано',\n copyTooltip: 'Скопировать',\n viewAllText: 'Показать все',\n viewLessText: 'Свернуть',\n openExternalSystemTooltip: 'Открыть во внешней системе'\n } satisfies KbqCodeBlockLocaleConfiguration,\n timezone: {\n searchPlaceholder: 'Город или часовой пояс'\n },\n actionsPanel: {\n closeTooltip: 'Отменить выбор'\n } satisfies KbqActionsPanelLocaleConfiguration,\n filterBar: {\n reset: {\n buttonName: 'Сбросить'\n },\n search: {\n tooltip: 'Поиск',\n placeholder: 'Поиск'\n },\n filters: {\n defaultName: 'Фильтры',\n saveNewFilterTooltip: 'Сохранить новый фильтр',\n searchPlaceholder: 'Поиск',\n searchEmptyResult: 'Ничего не найдено',\n saveAsNewFilter: 'Сохранить как новый фильтр',\n saveChanges: 'Сохранить изменения',\n saveAsNew: 'Сохранить как новый',\n change: 'Изменить',\n resetChanges: 'Сбросить изменения',\n remove: 'Удалить',\n name: 'Название',\n error: 'Поиск с таким названием уже существует',\n errorHint: 'Не удалось сохранить фильтр. Попробуйте снова или сообщите администратору.',\n saveButton: 'Сохранить',\n cancelButton: 'Отмена',\n actionsTooltip: 'Действия с фильтром'\n },\n add: {\n tooltip: 'Добавить фильтр',\n addedAnnouncement: 'Фильтр {{ name }} добавлен'\n },\n refresher: {\n refresh: 'Обновить',\n settings: 'Настройки обновления'\n },\n pipe: {\n clearButtonTooltip: 'Очистить',\n removeButtonTooltip: 'Удалить',\n applyButton: 'Применить',\n emptySearchResult: 'Ничего не найдено',\n selectAll: 'Выбрать все'\n },\n datePipe: {\n customPeriod: 'Произвольный период',\n customPeriodFrom: 'с',\n customPeriodTo: 'по',\n customPeriodErrorHint: 'Начало периода не может быть позже окончания',\n customPeriodMinIntervalErrorHint: 'Период не может быть короче {{ value }}',\n customPeriodMaxIntervalErrorHint: 'Период не может быть длиннее {{ value }}',\n backToPeriodSelection: 'Назад'\n }\n },\n clampedText: {\n openText: 'Развернуть',\n closeText: 'Свернуть',\n showMoreText: 'Показать еще {exceededItemCount}',\n moreText: 'еще'\n } satisfies KbqClampedTextLocaleConfig,\n navbarIc: {\n toggle: {\n pinButton: 'Оставить развернутым',\n collapseButton: 'Свернуть'\n }\n },\n navbar: {\n toggle: {\n expand: 'Развернуть',\n collapse: 'Свернуть'\n }\n },\n searchExpandable: {\n tooltip: 'Поиск',\n placeholder: 'Поиск'\n },\n appSwitcher: {\n searchPlaceholder: 'Поиск',\n searchEmptyResult: 'Ничего не найдено',\n sitesHeader: 'Другие площадки'\n },\n timeRange: {\n title: {\n for: 'за',\n placeholder: 'Выберите период'\n },\n editor: {\n from: 'с',\n to: 'по',\n apply: 'Применить',\n cancel: 'Отмена',\n rangeLabel: 'Период',\n allTime: 'за все время',\n currentQuarter: 'за текущий квартал',\n currentYear: 'за текущий год',\n allTimeOption: 'Все время',\n currentQuarterOption: 'Текущий квартал',\n currentYearOption: 'Текущий год'\n },\n durationTemplate: {\n title: {\n SEPARATOR: ' ',\n LAST_PART_SEPARATOR: 'и',\n YEARS: `{years, plural,\n one {# год}\n few {последние # года}\n other {последние # лет}\n }`,\n MONTHS: `{months, plural,\n one {последний месяц}\n few {последние # месяца}\n other {последние # месяцев}\n }`,\n WEEKS: `{weeks, plural,\n one {последнюю неделю}\n few {последние # недели}\n other {последние # недель}\n }`,\n DAYS: `{days, plural,\n one {последний день}\n few {последние # дня}\n other {последние # дней}\n }`,\n HOURS: `{hours, plural,\n one {последний час}\n few {последние # часа}\n other {последние # часов}\n }`,\n MINUTES: `{minutes, plural,\n one {последнюю минуту}\n few {последние # минуты}\n other {последние # минут}\n }`,\n SECONDS: `{seconds, plural,\n one {последнюю секунду}\n few {последние # секунды}\n other {последние # секунд}\n }`,\n YEARS_FRACTION: `{years} лет`,\n MONTHS_FRACTION: `{months} месяцев`\n },\n option: {\n SEPARATOR: ' ',\n LAST_PART_SEPARATOR: 'и',\n YEARS: `{years, plural,\n one {Последний год}\n few {Последние # года}\n other {Последние # лет}\n }`,\n MONTHS: `{months, plural,\n one {Последний месяц}\n few {Последние # месяца}\n other {Последние # месяцев}\n }`,\n WEEKS: `{weeks, plural,\n one {Последняя неделя}\n few {Последние # недели}\n other {Последние # недель}\n }`,\n DAYS: `{days, plural,\n one {Последний день}\n few {Последние # дня}\n other {Последние # дней}\n }`,\n HOURS: `{hours, plural,\n one {Последний час}\n few {Последние # часа}\n other {Последние # часов}\n }`,\n MINUTES: `{minutes, plural,\n one {Последняя минута}\n few {Последние # минуты}\n other {Последние # минут}\n }`,\n SECONDS: `{seconds, plural,\n one {Последняя секунда}\n few {Последние # секунды}\n other {Последние # секунд}\n }`,\n YEARS_FRACTION: `{years} лет`,\n MONTHS_FRACTION: `{months} месяцев`\n }\n }\n } satisfies KbqTimeRangeLocaleConfig,\n notificationCenter: {\n notifications: 'Уведомления',\n remove: 'Удалить',\n doNotDisturb: 'Не беспокоить',\n showPopUpNotifications: 'Показывать всплывающие уведомления',\n noNotifications: 'Нет уведомлений',\n failedToLoadNotifications: 'Не удалось загрузить уведомления',\n repeat: 'Повторить',\n loadingMore: 'Загрузка уведомлений'\n }\n};\n","import {\n KbqA11yLocaleConfiguration,\n KbqActionsPanelLocaleConfiguration,\n KbqClampedTextLocaleConfig,\n KbqCodeBlockLocaleConfiguration,\n KbqFileUploadLocaleConfig,\n KbqSelectLocaleConfiguration,\n KbqTimeRangeLocaleConfig\n} from './types';\n\nexport const tkTMLocaleData = {\n a11y: {\n close: 'Ýap',\n save: 'Ýazdyr',\n cancel: 'Ýatyr',\n removeAll: 'Ählisini aýyr',\n expandBreadcrumbs: 'Gizlenen elementleri görkez',\n previousMonth: 'Öňki aý',\n currentDate: 'Şu günki sene',\n nextMonth: 'Indiki aý',\n clear: 'Arassala',\n showPassword: 'Paroly görkez',\n hidePassword: 'Paroly gizle',\n resizeColumns: 'Sütünleriň giňligini üýtget'\n } satisfies KbqA11yLocaleConfiguration,\n select: {\n hiddenItemsText: '+{{ number }}',\n selectAll: 'Ählisini saýla'\n } satisfies KbqSelectLocaleConfiguration,\n datepicker: {\n placeholder: 'gg.aa.ýý.',\n dateInput: 'gg.aa.ýý.'\n },\n timepicker: {\n placeholder: {\n full: 'ss:mm:seksek',\n short: 'ss:mm'\n }\n },\n fileUpload: {\n single: {\n captionText: 'Faýly geçiriň ýa-da {{ browseLink }}',\n captionTextOnlyFolder: 'Faýly geçiriň ýa-da {{ browseLinkFolder }}',\n captionTextWithFolder: 'Faýly geçiriň ýa-da {{ browseLink }} ýa-da {{ browseLinkFolderMixed }}',\n browseLink: 'saýlaň',\n browseLinkFolder: 'bukja',\n browseLinkFolderMixed: 'bukja'\n },\n multiple: {\n captionText: 'Şu ýere geçiriň ýa-da {{ browseLink }}',\n captionTextOnlyFolder: 'Şu ýere geçiriň ýa-da {{ browseLinkFolder }}',\n captionTextWithFolder: 'Şu ýere geçiriň ýa-da {{ browseLink }} ýa-da {{ browseLinkFolderMixed }}',\n captionTextWhenSelected: 'Ýene geçiriň ýa-da {{ browseLink }}',\n captionTextForCompactSize: 'Faýllary geçiriň ýa-da {{ browseLink }}',\n browseLink: 'saýlaň',\n browseLinkFolder: 'bukja',\n browseLinkFolderMixed: 'bukja',\n title: 'Faýl ýükläň'\n }\n } satisfies KbqFileUploadLocaleConfig,\n codeBlock: {\n softWrapOnTooltip: 'Sözler boýunça geçirmäni işjeňleşdirmek',\n softWrapOffTooltip: 'Sözler boýunça geçirmäni öçürmek',\n downloadTooltip: 'Ýüklemek',\n copiedTooltip: '✓ Göçürildi',\n copyTooltip: 'Göçürmek',\n viewAllText: 'Hemmesini görkezmek',\n viewLessText: 'Ýygyrmak',\n openExternalSystemTooltip: 'Daşarky ulgamda açmak'\n } satisfies KbqCodeBlockLocaleConfiguration,\n timezone: {\n searchPlaceholder: 'Şäher ýa-da sagat guşagy'\n },\n actionsPanel: {\n closeTooltip: 'Saýlawy ýatyr'\n } satisfies KbqActionsPanelLocaleConfiguration,\n filterBar: {\n reset: {\n buttonName: 'Täzeden düz'\n },\n search: {\n tooltip: 'Gözleg',\n placeholder: 'Gözleg'\n },\n filters: {\n defaultName: 'Filtrler',\n saveNewFilterTooltip: 'Täze filtri ýazdyr',\n searchPlaceholder: 'Gözleg',\n searchEmptyResult: 'Hiç zat tapylmady',\n saveAsNewFilter: 'Täze filtr hökmünde ýazdyr',\n saveChanges: 'Üýtgetmeleri ýazdyr',\n saveAsNew: 'Täze hökmünde ýazdyr',\n change: 'Düzet',\n resetChanges: 'Täzeden düz',\n remove: 'Poz',\n name: 'At',\n error: 'Şeýle atly gözleg eýýäm bar',\n errorHint: 'Filtri ýazdyryp bolmady. Täzeden synanyň ýa-da administratora ýüz tutuň.',\n saveButton: 'Ýazdyr',\n cancelButton: 'Ýatyr',\n actionsTooltip: 'Filtr amallary'\n },\n add: {\n tooltip: 'Filtr goş',\n addedAnnouncement: '{{ name }} filtri goşuldy'\n },\n refresher: {\n refresh: 'Täzele',\n settings: 'Täzeleme sazlamalary'\n },\n pipe: {\n clearButtonTooltip: 'Arassala',\n removeButtonTooltip: 'Ýokla',\n applyButton: 'Ulan',\n emptySearchResult: 'Hiç zat tapylmady',\n selectAll: 'Ählisini saýla'\n },\n datePipe: {\n customPeriod: 'Laýyk döwür',\n customPeriodFrom: 'başy',\n customPeriodTo: 'soňy',\n customPeriodErrorHint: 'Döwür gutarýan wagtyndan soň başlap bilmeýär',\n customPeriodMinIntervalErrorHint: 'Döwür azyndan {{ value }} bolmaly',\n customPeriodMaxIntervalErrorHint: 'Döwür köpi bilen {{ value }} bolmaly',\n backToPeriodSelection: 'Yzyna'\n }\n },\n clampedText: {\n openText: 'Giňelt',\n closeText: 'Ýap',\n showMoreText: 'Ýene {exceededItemCount} görkeziň',\n moreText: 'has köp'\n } satisfies KbqClampedTextLocaleConfig,\n navbarIc: {\n toggle: {\n pinButton: 'Rugsat giňeldildi',\n collapseButton: 'Apseykylmak'\n }\n },\n navbar: {\n toggle: {\n expand: 'Giňeltmek',\n collapse: 'Ýykmak'\n }\n },\n searchExpandable: {\n tooltip: 'Gözleg',\n placeholder: 'Gözleg'\n },\n appSwitcher: {\n searchPlaceholder: 'Gözleg',\n searchEmptyResult: 'Hiç zat tapylmady',\n sitesHeader: 'Beýleki saýtlar'\n },\n timeRange: {\n title: {\n for: 'soňky',\n placeholder: 'Möhleti saýla'\n },\n editor: {\n from: 'şundan',\n to: 'şuňa',\n apply: 'Ulanmak',\n cancel: 'Ýatyrmak',\n rangeLabel: 'Döwür',\n allTime: 'hemme döwür üçin',\n currentQuarter: 'şu çärýek üçin',\n currentYear: 'şu ýyl üçin',\n allTimeOption: 'Hemme döwür',\n currentQuarterOption: 'Şu çärýek',\n currentYearOption: 'Şu ýyl'\n },\n durationTemplate: {\n title: {\n SEPARATOR: ' ',\n LAST_PART_SEPARATOR: '',\n YEARS: `{years, plural,\n one {# ýyl}\n other {# ýyl}\n }`,\n MONTHS: `{months, plural,\n one {aý}\n other {# aý}\n }`,\n WEEKS: `{weeks, plural,\n one {hepde}\n other {# hepde}\n }`,\n DAYS: `{days, plural,\n one {gün}\n other {# gün}\n }`,\n HOURS: `{hours, plural,\n one {sagat}\n other {# sagat}\n }`,\n MINUTES: `{minutes, plural,\n one {minut}\n other {# minut}\n }`,\n SECONDS: `{seconds, plural,\n one {sekunt}\n other {# sekunt}\n }`,\n YEARS_FRACTION: `{years} ýyl`,\n MONTHS_FRACTION: `{months} aý`\n },\n option: {\n SEPARATOR: ' ',\n LAST_PART_SEPARATOR: '',\n YEARS: `{years, plural,\n one {# ýyl}\n other {# ýyl}\n }`,\n MONTHS: `{months, plural,\n one {Aý}\n other {# aý}\n }`,\n WEEKS: `{weeks, plural,\n one {Hepde}\n other {# hepde}\n }`,\n DAYS: `{days, plural,\n one {Gün}\n other {# gün}\n }`,\n HOURS: `{hours, plural,\n one {Sagat}\n other {# sagat}\n }`,\n MINUTES: `{minutes, plural,\n one {Minut}\n other {# minut}\n }`,\n SECONDS: `{seconds, plural,\n one {Sekunt}\n other {# sekunt}\n }`,\n YEARS_FRACTION: `{years} ýyl`,\n MONTHS_FRACTION: `{months} aý`\n }\n }\n } satisfies KbqTimeRangeLocaleConfig,\n notificationCenter: {\n notifications: 'Duýduryşlar',\n remove: 'Aýyr',\n doNotDisturb: 'Alada etme',\n showPopUpNotifications: 'Açylýan bildirişleri görkeziň',\n noNotifications: 'Duýduryş ýok',\n failedToLoadNotifications: 'Duýduryşlary ýükläp bilmedi',\n repeat: 'Gaýtalama',\n loadingMore: 'Duýduryşlar ýüklenýär'\n }\n};\n","import { DOCUMENT } from '@angular/common';\nimport { inject, Injectable, InjectionToken, Provider } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { enUSLocaleData } from './en-US';\nimport { esLALocaleData } from './es-LA';\nimport {\n enUSFormattersData,\n esLAFormattersData,\n ptBRFormattersData,\n ruRUFormattersData,\n tkTMFormattersData\n} from './formatters';\nimport { ptBRLocaleData } from './pt-BR';\nimport { ruRULocaleData } from './ru-RU';\nimport { tkTMLocaleData } from './tk-TM';\nimport { KbqNumberInputLocaleConfig } from './types';\n\nexport const KBQ_LOCALE_ID = new InjectionToken<string>('KbqLocaleId');\n\nexport const KBQ_DEFAULT_LOCALE_ID = 'ru-RU';\n\nexport function KBQ_DEFAULT_LOCALE_DATA_FACTORY() {\n return {\n items: [\n { id: 'en-US', name: 'English' },\n { id: 'es-LA', name: 'Español' },\n { id: 'pt-BR', name: 'Português' },\n { id: 'ru-RU', name: 'Русский' },\n { id: 'tk-TM', name: 'Türkmen' }\n ],\n 'en-US': { ...enUSLocaleData, ...enUSFormattersData },\n 'es-LA': { ...esLALocaleData, ...esLAFormattersData },\n 'pt-BR': { ...ptBRLocaleData, ...ptBRFormattersData },\n 'ru-RU': { ...ruRULocaleData, ...ruRUFormattersData },\n 'tk-TM': { ...tkTMLocaleData, ...tkTMFormattersData }\n };\n}\nexport const KBQ_LOCALE_DATA = new InjectionToken<any>('KBQ_LOCALE_DATA', {\n providedIn: 'root',\n factory: KBQ_DEFAULT_LOCALE_DATA_FACTORY\n});\n\nexport const KBQ_LOCALE_SERVICE = new InjectionToken<KbqLocaleService>('KBQ_LOCALE_SERVICE');\n\n/**\n * Attribute name to be used to set the locale in the html element.\n *\n * @default 'lang'\n *\n * @docs-private\n */\nexport const KBQ_LOCALE_SERVICE_LANG_ATTR_NAME = new InjectionToken<string>('KBQ_LOCALE_SERVICE_LANG_ATTR_NAME', {\n factory: () => 'lang'\n});\n\n/**\n * Utility provider to configure the attribute name to be used to set the locale in the html element.\n *\n * @see KBQ_LOCALE_SERVICE_LANG_ATTR_NAME\n *\n * @docs-private\n */\nexport const kbqLocaleServiceLangAttrNameProvider = (attrName: string): Provider => ({\n provide: KBQ_LOCALE_SERVICE_LANG_ATTR_NAME,\n useValue: attrName\n});\n\n@Injectable({ providedIn: 'root' })\nexport class KbqLocaleService {\n readonly changes: BehaviorSubject<string>;\n readonly locales: any = {};\n\n private readonly document = inject(DOCUMENT);\n\n id: string;\n current;\n\n private readonly langAttrName = inject(KBQ_LOCALE_SERVICE_LANG_ATTR_NAME);\n\n constructor() {\n const id = inject(KBQ_LOCALE_ID, { optional: true });\n const localeData = inject(KBQ_LOCALE_DATA, { optional: true });\n\n this.locales = localeData;\n\n this.id = id || KBQ_DEFAULT_LOCALE_ID;\n this.current = this.locales[this.id];\n\n this.changes = new BehaviorSubject(this.id);\n }\n\n setLocale(id: string) {\n this.id = id;\n this.current = this.locales[this.id];\n\n this.document.documentElement.setAttribute(this.langAttrName, this.id);\n\n this.changes.next(this.id);\n }\n\n addLocale(id: string, localeData) {\n this.id = id;\n this.changes.next(this.id);\n\n this.locales[this.id] = localeData;\n }\n\n getParams(componentName: string) {\n return this.current[componentName];\n }\n}\n\n// todo code below need refactor or delete in DS-3603\n/** @docs-private */\nexport const KBQ_DEFAULT_PRECISION_SEPARATOR = '.';\n\n/** @docs-private */\nexport function numberByParts(\n value: string,\n customConfig: Pick<KbqNumberInputLocaleConfig, 'fractionSeparator' | 'groupSeparator'>\n): { integer: string; fraction: string } {\n const { groupSeparator, fractionSeparator } = customConfig;\n const result = { integer: '', fraction: '' };\n let parsedValue = value;\n\n // normalize only when '.', ',' are used as fractionSeparators\n if (groupSeparator.includes(' ') && fractionSeparator === ',') {\n parsedValue = parsedValue.replace(/\\./g, ',');\n }\n\n const isNegative = parsedValue.startsWith('-');\n const numberByParts = parsedValue.split(fractionSeparator).filter(Boolean);\n\n if (numberByParts.length > 1) {\n result.fraction = numberByParts.pop() || '';\n result.integer = numberByParts\n .join()\n .replace(groupSeparator.join(''), '')\n .replace(fractionSeparator, '')\n .replace(/\\D/g, '');\n } else {\n result.integer = numberByParts.join().replace(groupSeparator[0], '').replace(/\\D/g, '');\n }\n\n if (isNegative) result.integer = `-${result.integer}`;\n\n return result;\n}\n\n/**\n * Function that returns a string representation of a number without localized separators\n */\nexport function normalizeNumber(\n value: string | null | undefined,\n customConfig: Pick<KbqNumberInputLocaleConfig, 'fractionSeparator' | 'groupSeparator'>\n): string {\n if (value === null || value === undefined) return '';\n\n const { groupSeparator, fractionSeparator } = customConfig;\n const groupSeparatorRegexp = new RegExp(`[${groupSeparator.join('')}]`, 'g');\n const fractionSeparatorRegexp = new RegExp(`\\\\${fractionSeparator}`, 'g');\n\n return value\n .toString()\n .replace(groupSeparatorRegexp, '')\n .replace(fractionSeparatorRegexp, KBQ_DEFAULT_PRECISION_SEPARATOR);\n}\n\n/**\n * Function that parse string and return a number. The string can be in any locale.\n */\nexport function checkAndNormalizeLocalizedNumber(num: string | null | undefined, locale?: string): number | null {\n if (num === null || num === undefined) return null;\n\n const locales = KBQ_DEFAULT_LOCALE_DATA_FACTORY();\n\n if (locale && locales[locale]) {\n const config = locales[locale].input.number;\n let normalized: number;\n\n if (!/\\d/g.test(num)) return +num;\n\n const { integer, fraction } = numberByParts(num, config);\n\n if (fraction) {\n normalized = +[integer, fraction].join('.');\n } else {\n normalized = +normalizeNumber(integer, config);\n }\n\n if (!Number.isNaN(normalized)) {\n return normalized;\n }\n }\n\n /* if some locale input config satisfies pasted number, try to normalise with selected locale config */\n let numberOutput: number | null = null;\n\n for (const config of locales.items.map(({ id }) => locales[id].input.number)) {\n const normalized = +normalizeNumber(num, config);\n\n if (!Number.isNaN(normalized)) {\n numberOutput = normalized;\n break;\n }\n }\n\n return numberOutput;\n}\n\n// todo code above need refactor or delete in DS-3603\n","import { inject, InjectionToken, Provider, Signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { map, of } from 'rxjs';\nimport { KBQ_LOCALE_SERVICE } from './locale-service';\nimport { ruRULocaleData } from './ru-RU';\nimport { KbqA11yLocaleConfiguration } from './types';\n\n/** Localization configuration for the accessible names of the icon-only buttons the library renders itself. */\nexport const KBQ_A11Y_LOCALE_CONFIGURATION = new InjectionToken<KbqA11yLocaleConfiguration>(\n 'KBQ_A11Y_LOCALE_CONFIGURATION',\n { factory: () => ruRULocaleData.a11y }\n);\n\n/** Utility provider for `KBQ_A11Y_LOCALE_CONFIGURATION`. */\nexport const kbqA11yLocaleConfigurationProvider = (configuration: KbqA11yLocaleConfiguration): Provider => ({\n provide: KBQ_A11Y_LOCALE_CONFIGURATION,\n useValue: configuration\n});\n\n/**\n * Reactive accessible names for the icon-only buttons the library renders itself.\n *\n * Follows `KbqLocaleService` when one is provided, and otherwise stays on whatever\n * `KBQ_A11Y_LOCALE_CONFIGURATION` resolves to.\n *\n * @docs-private\n */\nexport function kbqInjectA11yLocaleConfiguration(): Signal<KbqA11yLocaleConfiguration> {\n const localeService = inject(KBQ_LOCALE_SERVICE, { optional: true });\n const initialValue = inject(KBQ_A11Y_LOCALE_CONFIGURATION);\n const configuration = localeService\n ? localeService.changes.pipe(\n map<string, KbqA11yLocaleConfiguration>(\n () => localeService.getParams('a11y') satisfies KbqA11yLocaleConfiguration\n )\n )\n : of(initialValue);\n\n return toSignal(configuration, { initialValue });\n}\n","import { NgModule } from '@angular/core';\nimport { KBQ_LOCALE_SERVICE, KbqLocaleService } from './locale-service';\n\n@NgModule({\n providers: [\n { provide: KBQ_LOCALE_SERVICE, useClass: KbqLocaleService }\n ]\n})\nexport class KbqLocaleServiceModule {}\n","import { inject, Injectable } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DateAdapter } from '@koobiq/date-adapter';\nimport { DateFormatter as BaseDateFormatter } from '@koobiq/date-formatter';\nimport { KBQ_DATE_LOCALE, DateAdapter as KbqDateAdapter } from '../../datetime';\nimport { KBQ_LOCALE_SERVICE, KbqLocaleService } from '../../locales';\n\n@Injectable()\nexport class DateFormatter<D> extends BaseDateFormatter<D> {\n override readonly adapter: DateAdapter<D>;\n\n protected localeService = inject<KbqLocaleService>(KBQ_LOCALE_SERVICE, { optional: true });\n constructor() {\n const adapter = inject<DateAdapter<D>>(KbqDateAdapter);\n const locale = inject(KBQ_DATE_LOCALE);\n\n super(adapter, locale);\n this.adapter = adapter;\n\n this.localeService?.changes.pipe(takeUntilDestroyed()).subscribe((locale) => this.setLocale(locale));\n }\n}\n","import { ChangeDetectorRef, effect, inject, Pipe, PipeTransform } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DurationUnit } from '@koobiq/date-adapter';\nimport { DateTimeOptions } from '@koobiq/date-formatter';\nimport { DateAdapter, KbqDateTimezoneService, KbqTimezoneLike } from '../../datetime';\nimport { KBQ_LOCALE_SERVICE } from '../../locales';\nimport { DateFormatter } from './formatter';\n\n/**\n * Identity comparison with a one-level element-wise fallback for arrays, so an input rebuilt on every\n * change detection cycle — a `[from, to]` tuple returned from a getter or a `computed()`, a `units`\n * array built in a method — still hits the cache of the impure pipes below. Array literals written\n * directly in a template are already memoized by Angular (`ɵɵpureFunction`); this covers the rest.\n *\n * Compares array elements by reference, like the `a === b` fallback it wraps — it has no notion of two\n * dates being \"equal\". Mutating a date already passed to a pipe in place (`Date#setHours`, a Moment\n * instance updated without cloning, …) keeps the same reference, so a `[from, to]` tuple rebuilt around\n * that mutated instance still reads as unchanged and the cached, now-stale string is returned. Replace\n * pipe inputs instead of mutating them — the same requirement Angular's OnPush change detection already\n * places on any object bound to an OnPush view.\n */\nconst shallowEqual = (a: unknown, b: unknown): boolean => {\n if (a === b) return true;\n if (!Array.isArray(a) || !Array.isArray(b) || a.length !== b.length) return false;\n\n return a.every((item, index) => item === b[index]);\n};\n\n/**\n * Deserializes a pipe input into a date, treating a missing value and an unparseable one alike as\n * \"no date\" — `DateAdapter.deserialize()` returns `null` for the former but a truthy *invalid* date\n * for the latter, so a plain truthiness check is not enough.\n */\nconst toValidDate = <D>(adapter: DateAdapter<D>, value: unknown): D | null => {\n const date = adapter.deserialize(value);\n\n return date != null && adapter.isValid(date) ? date : null;\n};\n\n/**\n * A `[from, to]` tuple with both bounds required; `null` when either is missing or invalid.\n *\n * Takes the tuple itself as possibly missing, not just its bounds: a pipe input that has not been\n * populated yet is `null`/`undefined` rather than `[null, null]`, and destructuring that throws.\n */\nconst toClosedRange = <D>(adapter: DateAdapter<D>, value: D[] | string[] | null | undefined): [D, D] | null => {\n const [from, to] = value ?? [];\n const startDate = toValidDate(adapter, from);\n const endDate = toValidDate(adapter, to);\n\n return startDate && endDate ? [startDate, endDate] : null;\n};\n\n/**\n * A `[from, to]` tuple where one bound may be open; `null` only when neither bound is a valid date.\n *\n * The range formatters switch to the opened-range template on their own when a bound is missing, but\n * throw when both are — and a throwing pipe aborts the rendering of the whole view.\n */\nconst toOpenedRange = <D>(\n adapter: DateAdapter<D>,\n value: D[] | string[] | null | undefined\n): [D | null, D | null] | null => {\n const [from, to] = value ?? [];\n const startDate = toValidDate(adapter, from);\n const endDate = toValidDate(adapter, to);\n\n return startDate || endDate ? [startDate, endDate] : null;\n};\n\n/**\n * A `[from, to]` tuple the duration formatters accept: both bounds required and chronologically\n * ordered. `DateFormatter.duration*` throws on anything else.\n */\nconst toDurationRange = <D>(adapter: DateAdapter<D>, value: D[] | string[] | null | undefined): [D, D] | null => {\n const range = toClosedRange(adapter, value);\n\n return range && adapter.compareDateTime(range[0], range[1]) <= 0 ? range : null;\n};\n\nexport class BaseFormatterPipe<D> {\n protected readonly adapter: DateAdapter<D> = inject(DateAdapter<D>);\n protected readonly formatter: DateFormatter<D> = inject(DateFormatter<D>);\n}\n\n/**\n * Base class for impure date-formatter pipes that recompute their result whenever the active locale\n * changes via `KbqLocaleService`, or the active time zone via `KbqDateTimezoneService`.\n *\n * The base class owns:\n * - a subscription to `KbqLocaleService.changes` and an `effect` on the active time zone, each of which\n * invalidates the cache and marks the host for check (the same approach the built-in `AsyncPipe` uses);\n * - caching by `(value, args, localeId, timezone)`, so the impure `transform()` only does\n * real work when an input, the active locale or the active time zone actually changed — see\n * `shallowEqual` for how the comparison works and its limits.\n *\n * Subclasses implement `format()`, which receives the raw pipe input(s) — a\n * single value for absolute/relative pipes, or a `[from, to]` tuple for range\n * pipes — deserializes via `this.adapter` and calls the matching\n * `DateFormatter` method.\n *\n * @docs-private\n */\nexport abstract class BaseLocaleAwareFormatterPipe<\n D,\n Value = D | string | null | undefined,\n Args extends unknown[] = unknown[]\n> extends BaseFormatterPipe<D> {\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n private readonly localeService = inject(KBQ_LOCALE_SERVICE, { optional: true });\n private readonly timezoneService = inject(KbqDateTimezoneService);\n\n private cachedValue: Value | null = null;\n private cachedArgs: Args = [] as unknown as Args;\n private cachedLocaleId: string | null = null;\n private cachedTimezone: KbqTimezoneLike | null = null;\n private cachedResult = '';\n private hasCache = false;\n\n constructor() {\n super();\n\n this.localeService?.changes.pipe(takeUntilDestroyed()).subscribe(() => {\n this.hasCache = false;\n this.changeDetectorRef.markForCheck();\n });\n\n // Only wakes an OnPush host up; the cache is invalidated by comparing the zone in `transform()`,\n // so the run this effect makes on creation costs nothing.\n effect(() => {\n this.timezoneService.timezone();\n\n this.changeDetectorRef.markForCheck();\n });\n }\n\n transform(value: Value, ...args: Args): string {\n const currentLocaleId = this.localeService?.id ?? null;\n const currentTimezone = this.timezoneService.timezone();\n\n if (\n this.hasCache &&\n shallowEqual(value, this.cachedValue) &&\n currentLocaleId === this.cachedLocaleId &&\n currentTimezone === this.cachedTimezone &&\n this.argsEqual(args)\n ) {\n return this.cachedResult;\n }\n\n this.cachedResult = this.format(value, ...args);\n this.cachedValue = value;\n this.cachedArgs = args;\n this.cachedLocaleId = currentLocaleId;\n this.cachedTimezone = currentTimezone;\n this.hasCache = true;\n\n return this.cachedResult;\n }\n\n protected abstract format(value: Value, ...args: Args): string;\n\n private argsEqual(args: Args): boolean {\n if (args.length !== this.cachedArgs.length) return false;\n\n for (let i = 0; i < args.length; i++) {\n if (!shallowEqual(args[i], this.cachedArgs[i])) return false;\n }\n\n return true;\n }\n}\n\n@Pipe({\n name: 'absoluteLongDate'\n})\nexport class AbsoluteDateFormatterPipe<D> extends BaseFormatterPipe<D> implements PipeTransform {\n transform(value: D | string | null | undefined, currYear?: boolean): string {\n const date = toValidDate(this.adapter, value);\n\n return date ? this.formatter.absoluteLongDate(date, currYear) : '';\n }\n}\n\n@Pipe({\n name: 'absoluteLongDateImpurePipe',\n pure: false\n})\n// eslint-disable-next-line @angular-eslint/use-pipe-transform-interface\nexport class AbsoluteDateFormatterImpurePipe<D> extends AbsoluteDateFormatterPipe<D> {\n transform(value: D | string | null | undefined, currYear?: boolean): string {\n return super.transform(value, currYear);\n }\n}\n\n@Pipe({\n name: 'absoluteLongDateTime'\n})\nexport class AbsoluteDateTimeFormatterPipe<D> extends BaseFormatterPipe<D> implements PipeTransform {\n transform(value: D | string | null | undefined, options?: DateTimeOptions): string {\n const date = toValidDate(this.adapter, value);\n\n return date ? this.formatter.absoluteLongDateTime(date, options) : '';\n }\n}\n\n@Pipe({\n name: 'absoluteLongDateTimeImpurePipe',\n pure: false\n})\n// eslint-disable-next-line @angular-eslint/use-pipe-transform-interface\nexport class AbsoluteDateTimeFormatterImpurePipe<D> extends AbsoluteDateTimeFormatterPipe<D> {\n transform(value: D | string | null | undefined, options?: DateTimeOptions): string {\n return super.transform(value, options);\n }\n}\n\n@Pipe({\n name: 'absoluteShortDate'\n})\nexport class AbsoluteDateShortFormatterPipe<D> extends BaseFormatterPipe<D> implements PipeTransform {\n transform(value: D | string | null | undefined, currYear?: boolean): string {\n const date = toValidDate(this.adapter, value);\n\n return date ? this.formatter.absoluteShortDate(date, currYear) : '';\n }\n}\n\n@Pipe({\n name: 'absoluteShortDateImpurePipe',\n pure: false\n})\n// eslint-disable-next-line @angular-eslint/use-pipe-transform-interface\nexport class AbsoluteDateShortFormatterImpurePipe<D> extends AbsoluteDateShortFormatterPipe<D> {\n transform(value: D | string | null | undefined, currYear?: boolean): string {\n return super.transform(value, currYear);\n }\n}\n\n@Pipe({\n name: 'absoluteShortDateTime'\n})\nexport class AbsoluteShortDateTimeFormatterPipe<D> extends BaseFormatterPipe<D> implements PipeTransform {\n transform(value: D | string | null | undefined, options?: DateTimeOptions): string {\n const date = toValidDate(this.adapter, value);\n\n return date ? this.formatter.absoluteShortDateTime(date, options) : '';\n }\n}\n\n@Pipe({\n name: 'absoluteShortDateTimeImpurePipe',\n pure: false\n})\n// eslint-disable-next-line @angular-eslint/use-pipe-transform-interface\nexport class AbsoluteShortDateTimeFormatterImpurePipe<D> extends AbsoluteShortDateTimeFormatterPipe<D> {\n transform(value: D | string | null | undefined, options?: DateTimeOptions): string {\n return super.transform(value, options);\n }\n}\n\n@Pipe({\n name: 'relativeLongDate'\n})\nexport class RelativeDateFormatterPipe<D> extends BaseFormatterPipe<D> implements PipeTransform {\n transform(value: D | string | null | undefined): string {\n const date = toValidDate(this.adapter, value);\n\n return date ? this.formatter.relativeLongDate(date) : '';\n }\n}\n\n@Pipe({\n name: 'relativeLongDateImpurePipe',\n pure: false\n})\n// eslint-disable-next-line @angular-eslint/use-pipe-transform-interface\nexport class RelativeDateFormatterImpurePipe<D> extends RelativeDateFormatterPipe<D> {\n transform(value: D | string | null | undefined): string {\n return super.transform(value);\n }\n}\n\n@Pipe({\n name: 'relativeLongDateTime'\n})\nexport class RelativeDateTimeFormatterPipe<D> extends BaseFormatterPipe<D> implements PipeTransform {\n transform(value: D | string | null | undefined, options?: DateTimeOptions): string {\n const date = toValidDate(this.adapter, value);\n\n return date ? this.formatter.relativeLongDateTime(date, options) : '';\n }\n}\n\n@Pipe({\n name: 'relativeLongDateTimeImpurePipe',\n pure: false\n})\n// eslint-disable-next-line @angular-eslint/use-pipe-transform-interface\nexport class RelativeDateTimeFormatterImpurePipe<D> extends RelativeDateTimeFormatterPipe<D> {\n transform(value: D | string | null | undefined, options?: DateTimeOptions): string {\n return super.transform(value, options);\n }\n}\n\n@Pipe({\n name: 'relativeShortDate'\n})\nexport class RelativeShortDateFormatterPipe<D> extends BaseFormatterPipe<D> implements PipeTransform {\n transform(value: D | string | null | undefined): string {\n const date = toValidDate(this.adapter, value);\n\n return date ? this.formatter.relativeShortDate(date) : '';\n }\n}\n\n@Pipe({\n name: 'relativeShortDateImpurePipe',\n pure: false\n})\n// eslint-disable-next-line @angular-eslint/use-pipe-transform-interface\nexport class RelativeShortDateFormatterImpurePipe<D> extends RelativeShortDateFormatterPipe<D> {\n transform(value: D | string | null | undefined): string {\n return super.transform(value);\n }\n}\n\n@Pipe({\n name: 'relativeShortDateTime'\n})\nexport class RelativeShortDateTimeFormatterPipe<D> extends BaseFormatterPipe<D> implements PipeTransform {\n transform(value: D | string | null | undefined, options?: DateTimeOptions): string {\n const date = toValidDate(this.adapter, value);\n\n return date ? this.formatter.relativeShortDateTime(date, options) : '';\n }\n}\n\n@Pipe({\n name: 'relativeShortDateTimeImpurePipe',\n pure: false\n})\n// eslint-disable-next-line @angular-eslint/use-pipe-transform-interface\nexport class RelativeShortDateTimeFormatterImpurePipe<D> extends RelativeShortDateTimeFormatterPipe<D> {\n transform(value: D | string | null | undefined, options?: DateTimeOptions): string {\n return super.transform(value, options);\n }\n}\n\n@Pipe({\n name: 'rangeLongDate'\n})\nexport class RangeDateFormatterPipe<D> extends BaseFormatterPipe<D> implements PipeTransform {\n transform(value: D[] | string[] | null | undefined): string {\n const range = toOpenedRange(this.adapter, value);\n\n if (!range) return '';\n\n return this.formatter.rangeLongDate(range[0], range[1]);\n }\n}\n\n@Pipe({\n name: 'rangeLongDateImpurePipe',\n pure: false\n})\n// eslint-disable-next-line @angular-eslint/use-pipe-transform-interface\nexport class RangeDateFormatterImpurePipe<D> extends RangeDateFormatterPipe<D> {\n transform(value: D[] | string[] | null | undefined): string {\n return super.transform(value);\n }\n}\n\n@Pipe({\n name: 'rangeShortDate'\n})\nexport class RangeShortDateFormatterPipe<D> extends BaseFormatterPipe<D> implements PipeTransform {\n transform(value: D[] | string[] | null | undefined): string {\n const range = toOpenedRange(this.adapter, value);\n\n if (!range) return '';\n\n return this.formatter.rangeShortDate(range[0], range[1] ?? undefined);\n }\n}\n\n@Pipe({\n name: 'rangeShortDateImpurePipe',\n pure: false\n})\n// eslint-disable-next-line @angular-eslint/use-pipe-transform-interface\nexport class RangeShortDateFormatterImpurePipe<D> extends RangeShortDateFormatterPipe<D> {\n transform(value: D[] | string[] | null | undefined): string {\n return super.transform(value);\n }\n}\n\n@Pipe({\n name: 'rangeLongDateTime'\n})\nexport class RangeDateTimeFormatterPipe<D> extends BaseFormatterPipe<D> implements PipeTransform {\n transform(value: D[] | string[] | null | undefined, options?: DateTimeOptions): string {\n const range = toOpenedRange(this.adapter, value);\n\n if (!range) return '';\n\n return this.formatter.rangeLongDateTime(range[0], range[1] ?? undefined, options);\n }\n}\n\n@Pipe({\n name: 'rangeLongDateTimeImpurePipe',\n pure: false\n})\n// eslint-disable-next-line @angular-eslint/use-pipe-transform-interface\nexport class RangeDateTimeFormatterImpurePipe<D> extends RangeDateTimeFormatterPipe<D> {\n transform(value: D[] | string[] | null | undefined, options?: DateTimeOptions): string {\n return super.transform(value, options);\n }\n}\n\n@Pipe({\n name: 'rangeMiddleDateTime'\n})\nexport class RangeMiddleDateTimeFormatterPipe<D> extends BaseFormatterPipe<D> implements PipeTransform {\n transform(value: D[] | string[] | null | undefined, options?: DateTimeOptions): string {\n // Unlike the other range formats, the middle one has no opened-range template — both bounds required.\n const range = toClosedRange(this.adapter, value);\n\n if (!range) return '';\n\n return this.formatter.rangeMiddleDateTime(range[0], range[1], options);\n }\n}\n\n@Pipe({\n name: 'rangeMiddleDateTimeImpurePipe',\n pure: false\n})\n// eslint-disable-next-line @angular-eslint/use-pipe-transform-interface\nexport class RangeMiddleDateTimeFormatterImpurePipe<D> extends RangeMiddleDateTimeFormatterPipe<D> {\n transform(value: D[] | string[] | null | undefined, options?: DateTimeOptions): string {\n return super.transform(value, options);\n }\n}\n\n@Pipe({\n name: 'rangeShortDateTime'\n})\nexport class RangeShortDateTimeFormatterPipe<D> extends BaseFormatterPipe<D> implements PipeTransform {\n transform(value: D[] | string[] | null | undefined, options?: DateTimeOptions): string {\n const range = toOpenedRange(this.adapter, value);\n\n if (!range) return '';\n\n return this.formatter.rangeShortDateTime(range[0], range[1], options);\n }\n}\n\n@Pipe({\n name: 'rangeShortDateTimeImpurePipe',\n pure: false\n})\n// eslint-disable-next-line @angular-eslint/use-pipe-transform-interface\nexport class RangeShortDateTimeFormatterImpurePipe<D> extends RangeShortDateTimeFormatterPipe<D> {\n transform(value: D[] | string[] | null | undefined, options?: DateTimeOptions): string {\n return super.transform(value, options);\n }\n}\n\n@Pipe({\n name: 'durationShortest'\n})\nexport class DurationShortestFormatterPipe<D> extends BaseFormatterPipe<D> implements PipeTransform {\n transform(value: D[] | string[] | null | undefined, options?: DateTimeOptions): string {\n const range = toDurationRange(this.adapter, value);\n\n if (!range) return '';\n\n return this.formatter.durationShortest(range[0], range[1], options?.seconds, options?.milliseconds);\n }\n}\n\n@Pipe({\n name: 'durationShortestImpurePipe',\n pure: false\n})\n// eslint-disable-next-line @angular-eslint/use-pipe-transform-interface\nexport class DurationShortestFormatterImpurePipe<D> extends DurationShortestFormatterPipe<D> {\n transform(value: D[] | string[] | null | undefined, options?: DateTimeOptions): string {\n return super.transform(value, options);\n }\n}\n\n@Pipe({\n name: 'durationLong'\n})\nexport class DurationLongFormatterPipe<D> extends BaseFormatterPipe<D> implements PipeTransform {\n transform(value: D[] | string[] | null | undefined, units?: DurationUnit[], fraction?: boolean): string {\n const range = toDurationRange(this.adapter, value);\n\n if (!range) return '';\n\n return this.formatter.durationLong(range[0], range[1], units, fraction);\n }\n}\n\n@Pipe({\n name: 'durationLongImpurePipe',\n pure: false\n})\n// eslint-disable-next-line @angular-eslint/use-pipe-transform-interface\nexport class DurationLongFormatterImpurePipe<D> extends DurationLongFormatterPipe<D> {\n transform(value: D[] | string[] | null | undefined, units?: DurationUnit[], fraction?: boolean): string {\n return super.transform(value, units, fraction);\n }\n}\n\n@Pipe({\n name: 'durationShort'\n})\nexport class DurationShortFormatterPipe<D> extends BaseFormatterPipe<D> implements PipeTransform {\n transform(value: D[] | string[] | null | undefined, units?: DurationUnit[], fraction?: boolean): string {\n const range = toDurationRange(this.adapter, value);\n\n if (!range) return '';\n\n return this.formatter.durationShort(range[0], range[1], units, fraction);\n }\n}\n\n@Pipe({\n name: 'durationShortImpurePipe',\n pure: false\n})\n// eslint-disable-next-line @angular-eslint/use-pipe-transform-interface\nexport class DurationShortFormatterImpurePipe<D> extends DurationShortFormatterPipe<D> {\n transform(value: D[] | string[] | null | undefined, units?: DurationUnit[], fraction?: boolean): string {\n return super.transform(value, units, fraction);\n }\n}\n\n// Impure pipes that recompute on `KbqLocaleService` locale changes and on `KbqDateTimezoneService` time\n// zone changes (see `BaseLocaleAwareFormatterPipe`). Prefer these `kbq`-prefixed pipes when either can\n// change at runtime; the pure pipes above are kept for static usages and backward compatibility.\n\n@Pipe({\n name: 'kbqAbsoluteLongDate',\n pure: false\n})\nexport class KbqAbsoluteLongDatePipe<D>\n extends BaseLocaleAwareFormatterPipe<D, D | string | null | undefined, [currYear?: boolean]>\n implements PipeTransform\n{\n override transform(value: D | string | null | undefined, currYear?: boolean): string {\n return super.transform(value, currYear);\n }\n\n protected format(value: D | string | null | undefined, currYear?: boolean): string {\n const date = toValidDate(this.adapter, value);\n\n return date ? this.formatter.absoluteLongDate(date, currYear) : '';\n }\n}\n\n@Pipe({\n name: 'kbqAbsoluteShortDate',\n pure: false\n})\nexport class KbqAbsoluteShortDatePipe<D>\n extends BaseLocaleAwareFormatterPipe<D, D | string | null | undefined, [currYear?: boolean]>\n implements PipeTransform\n{\n override transform(value: D | string | null | undefined, currYear?: boolean): string {\n return super.transform(value, currYear);\n }\n\n protected format(value: D | string | null | undefined, currYear?: boolean): string {\n const date = toValidDate(this.adapter, value);\n\n return date ? this.formatter.absoluteShortDate(date, currYear) : '';\n }\n}\n\n@Pipe({\n name: 'kbqAbsoluteLongDateTime',\n pure: false\n})\nexport class KbqAbsoluteLongDateTimePipe<D>\n extends BaseLocaleAwareFormatterPipe<D, D | string | null | undefined, [options?: DateTimeOptions]>\n implements PipeTransform\n{\n override transform(value: D | string | null | undefined, options?: DateTimeOptions): string {\n return super.transform(value, options);\n }\n\n protected format(value: D | string | null | undefined, options?: DateTimeOptions): string {\n const date = toValidDate(this.adapter, value);\n\n return date ? this.formatter.absoluteLongDateTime(date, options) : '';\n }\n}\n\n@Pipe({\n name: 'kbqAbsoluteShortDateTime',\n pure: false\n})\nexport class KbqAbsoluteShortDateTimePipe<D>\n extends BaseLocaleAwareFormatterPipe<D, D | string | null | undefined, [options?: DateTimeOptions]>\n implements PipeTransform\n{\n override transform(value: D | string | null | undefined, options?: DateTimeOptions): string {\n return super.transform(value, options);\n }\n\n protected format(value: D | string | null | undefined, options?: DateTimeOptions): string {\n const date = toValidDate(this.adapter, value);\n\n return date ? this.formatter.absoluteShortDateTime(date, options) : '';\n }\n}\n\n@Pipe({\n name: 'kbqRelativeLongDate',\n pure: false\n})\nexport class KbqRelativeLongDatePipe<D>\n extends BaseLocaleAwareFormatterPipe<D, D | string | null | undefined, []>\n implements PipeTransform\n{\n override transform(value: D | string | null | undefined): string {\n return super.transform(value);\n }\n\n protected format(value: D | string | null | undefined): string {\n const date = toValidDate(this.adapter, value);\n\n return date ? this.formatter.relativeLongDate(date) : '';\n }\n}\n\n@Pipe({\n name: 'kbqRelativeShortDate',\n pure: false\n})\nexport class KbqRelativeShortDatePipe<D>\n extends BaseLocaleAwareFormatterPipe<D, D | string | null | undefined, []>\n implements PipeTransform\n{\n override transform(value: D | string | null | undefined): string {\n return super.transform(value);\n }\n\n protected format(value: D | string | null | undefined): string {\n const date = toValidDate(this.adapter, value);\n\n return date ? this.formatter.relativeShortDate(date) : '';\n }\n}\n\n@Pipe({\n name: 'kbqRelativeLongDateTime',\n pure: false\n})\nexport class KbqRelativeLongDateTimePipe<D>\n extends BaseLocaleAwareFormatterPipe<D, D | string | null | undefined, [options?: DateTimeOptions]>\n implements PipeTransform\n{\n override transform(value: D | string | null | undefined, options?: DateTimeOptions): string {\n return super.transform(value, options);\n }\n\n protected format(value: D | string | null | undefined, options?: DateTimeOptions): string {\n const date = toValidDate(this.adapter, value);\n\n return date ? this.formatter.relativeLongDateTime(date, options) : '';\n }\n}\n\n@Pipe({\n name: 'kbqRelativeShortDateTime',\n pure: false\n})\nexport class KbqRelativeShortDateTimePipe<D>\n extends BaseLocaleAwareFormatterPipe<D, D | string | null | undefined, [options?: DateTimeOptions]>\n implements PipeTransform\n{\n override transform(value: D | string | null | undefined, options?: DateTimeOptions): string {\n return super.transform(value, options);\n }\n\n protected format(value: D | string | null | undefined, options?: DateTimeOptions): string {\n const date = toValidDate(this.adapter, value);\n\n return date ? this.formatter.relativeShortDateTime(date, options) : '';\n }\n}\n\n@Pipe({\n name: 'kbqRangeLongDate',\n pure: false\n})\nexport class KbqRangeLongDatePipe<D>\n extends BaseLocaleAwareFormatterPipe<D, D[] | string[] | null | undefined, []>\n implements PipeTransform\n{\n override transform(value: D[] | string[] | null | undefined): string {\n return super.transform(value);\n }\n\n protected format(value: D[] | string[] | null | undefined): string {\n const range = toOpenedRange(this.adapter, value);\n\n if (!range) return '';\n\n return this.formatter.rangeLongDate(range[0], range[1]);\n }\n}\n\n@Pipe({\n name: 'kbqRangeShortDate',\n pure: false\n})\nexport class KbqRangeShortDatePipe<D>\n extends BaseLocaleAwareFormatterPipe<D, D[] | string[] | null | undefined, []>\n implements PipeTransform\n{\n override transform(value: D[] | string[] | null | undefined): string {\n return super.transform(value);\n }\n\n protected format(value: D[] | string[] | null | undefined): string {\n const range = toOpenedRange(this.adapter, value);\n\n if (!range) return '';\n\n return this.formatter.rangeShortDate(range[0], range[1] ?? undefined);\n }\n}\n\n@Pipe({\n name: 'kbqRangeLongDateTime',\n pure: false\n})\nexport class KbqRangeLongDateTimePipe<D>\n extends BaseLocaleAwareFormatterPipe<D, D[] | string[] | null | undefined, [options?: DateTimeOptions]>\n implements PipeTransform\n{\n override transform(value: D[] | string[] | null | undefined, options?: DateTimeOptions): string {\n return super.transform(value, options);\n }\n\n protected format(value: D[] | string[] | null | undefined, options?: DateTimeOptions): string {\n const range = toOpenedRange(this.adapter, value);\n\n if (!range) return '';\n\n return this.formatter.rangeLongDateTime(range[0], range[1] ?? undefined, options);\n }\n}\n\n@Pipe({\n name: 'kbqRangeMiddleDateTime',\n pure: false\n})\nexport class KbqRangeMiddleDateTimePipe<D>\n extends BaseLocaleAwareFormatterPipe<D, D[] | string[] | null | undefined, [options?: DateTimeOptions]>\n implements PipeTransform\n{\n override transform(value: D[] | string[] | null | undefined, options?: DateTimeOptions): string {\n return super.transform(value, options);\n }\n\n protected format(value: D[] | string[] | null | undefined, options?: DateTimeOptions): string {\n // Unlike the other range formats, the middle one has no opened-range template — both bounds required.\n const range = toClosedRange(this.adapter, value);\n\n if (!range) return '';\n\n return this.formatter.rangeMiddleDateTime(range[0], range[1], options);\n }\n}\n\n@Pipe({\n name: 'kbqRangeShortDateTime',\n pure: false\n})\nexport class KbqRangeShortDateTimePipe<D>\n extends BaseLocaleAwareFormatterPipe<D, D[] | string[] | null | undefined, [options?: DateTimeOptions]>\n implements PipeTransform\n{\n override transform(value: D[] | string[] | null | undefined, options?: DateTimeOptions): string {\n return super.transform(value, options);\n }\n\n protected format(value: D[] | string[] | null | undefined, options?: DateTimeOptions): string {\n const range = toOpenedRange(this.adapter, value);\n\n if (!range) return '';\n\n return this.formatter.rangeShortDateTime(range[0], range[1], options);\n }\n}\n\n/**\n * Formats the duration between two dates as a digital-clock value, e.g. `48:02:25`.\n *\n * Takes a `[from, to]` tuple, like the range pipes. `options.seconds` defaults to `true` and\n * `options.milliseconds` to `false`; `options.currYear` is not used by this format.\n *\n * Renders an empty string when the tuple itself or one of its bounds is missing or invalid, or when\n * `from` is later than `to`.\n *\n * @example\n * ```html\n * {{ [startedAt, finishedAt] | kbqDurationShortest }}\n * {{ [startedAt, finishedAt] | kbqDurationShortest: { seconds: false } }}\n * ```\n */\n@Pipe({\n name: 'kbqDurationShortest',\n pure: false\n})\nexport class KbqDurationShortestPipe<D>\n extends BaseLocaleAwareFormatterPipe<D, D[] | string[] | null | undefined, [options?: DateTimeOptions]>\n implements PipeTransform\n{\n override transform(value: D[] | string[] | null | undefined, options?: DateTimeOptions): string {\n return super.transform(value, options);\n }\n\n protected format(value: D[] | string[] | null | undefined, options?: DateTimeOptions): string {\n const range = toDurationRange(this.adapter, value);\n\n if (!range) return '';\n\n return this.formatter.durationShortest(range[0], range[1], options?.seconds, options?.milliseconds);\n }\n}\n\n/**\n * Formats the duration between two dates in the long text format, e.g. `2 дня и 4 часа`.\n *\n * Takes a `[from, to]` tuple, like the range pipes. `units` restricts the units to show (the\n * formatter picks them automatically when omitted), `fraction` adds a fractional part for years\n * and months.\n *\n * Renders an empty string when the tuple itself or one of its bounds is missing or invalid, or when\n * `from` is later than `to`.\n *\n * @example\n * ```html\n * {{ [startedAt, finishedAt] | kbqDurationLong }}\n * {{ [startedAt, finishedAt] | kbqDurationLong: ['hours', 'minutes'] }}\n * {{ [startedAt, finishedAt] | kbqDurationLong: ['years'] : true }}\n * ```\n */\n@Pipe({\n name: 'kbqDurationLong',\n pure: false\n})\nexport class KbqDurationLongPipe<D>\n extends BaseLocaleAwareFormatterPipe<\n D,\n D[] | string[] | null | undefined,\n [units?: DurationUnit[], fraction?: boolean]\n >\n implements PipeTransform\n{\n override transform(value: D[] | string[] | null | undefined, units?: DurationUnit[], fraction?: boolean): string {\n return super.transform(value, units, fraction);\n }\n\n protected format(value: D[] | string[] | null | undefined, units?: DurationUnit[], fraction?: boolean): string {\n const range = toDurationRange(this.adapter, value);\n\n if (!range) return '';\n\n return this.formatter.durationLong(range[0], range[1], units, fraction);\n }\n}\n\n/**\n * Formats the duration between two dates in the short text format, e.g. `2 д 4 ч`.\n *\n * Takes a `[from, to]` tuple, like the range pipes. `units` restricts the units to show (the\n * formatter picks them automatically when omitted), `fraction` adds a fractional part for years\n * and months.\n *\n * Renders an empty string when the tuple itself or one of its bounds is missing or invalid, or when\n * `from` is later than `to`.\n *\n * @example\n * ```html\n * {{ [startedAt, finishedAt] | kbqDurationShort }}\n * {{ [startedAt, finishedAt] | kbqDurationShort: ['seconds', 'milliseconds'] }}\n * ```\n */\n@Pipe({\n name: 'kbqDurationShort',\n pure: false\n})\nexport class KbqDurationShortPipe<D>\n extends BaseLocaleAwareFormatterPipe<\n D,\n D[] | string[] | null | undefined,\n [units?: DurationUnit[], fraction?: boolean]\n >\n implements PipeTransform\n{\n override transform(value: D[] | string[] | null | undefined, units?: DurationUnit[], fraction?: boolean): string {\n return super.transform(value, units, fraction);\n }\n\n protected format(value: D[] | string[] | null | undefined, units?: DurationUnit[], fraction?: boolean): string {\n const range = toDurationRange(this.adapter, value);\n\n if (!range) return '';\n\n return this.formatter.durationShort(range[0], range[1], units, fraction);\n }\n}\n","import { InjectionToken, Provider } from '@angular/core';\nimport { enUSFormattersData } from '../../locales';\n\n/**\n * Available unit systems for file size formatting.\n * - SI (Metric): 1 KB = 1000 bytes\n * - IEC (Binary): 1 KiB = 1024 bytes\n */\nexport enum KbqMeasurementSystem {\n SI = 'SI',\n IEC = 'IEC'\n}\n\n/** Unit systems as union type */\nexport type KbqMeasurementSystemType = keyof typeof KbqMeasurementSystem;\n\nexport interface KbqUnitSystem {\n abbreviations: string[];\n base: number;\n power: number;\n}\n\n/**\n * Configuration for file size formatting options.\n * Defines the default unit system, precision, and available unit systems.\n */\nexport interface KbqSizeUnitsConfig {\n /**\n * Default unit system to use (e.g., 'SI' or 'IEC').\n * @see KbqMeasurementSystem\n */\n defaultUnitSystem: KbqMeasurementSystemType;\n /**\n * Default number of decimal places to display in formatted output.\n * @example\n * `2` → \"1.23 KB\"\n */\n defaultPrecision: number;\n /** @see KbqMeasurementSystem */\n unitSystems: {\n [KbqMeasurementSystem.SI]: KbqUnitSystem;\n [KbqMeasurementSystem.IEC]: KbqUnitSystem;\n };\n}\n\nexport const KBQ_SIZE_UNITS_DEFAULT_CONFIG: KbqSizeUnitsConfig = enUSFormattersData.sizeUnits;\n\n/**\n * Configuration for converting sizes in different unit systems.\n */\nexport const KBQ_SIZE_UNITS_CONFIG = new InjectionToken<KbqSizeUnitsConfig>('KbqSizeUnitsConfig');\n\n/** Utility provider for `KBQ_SIZE_UNITS_CONFIG`. */\nexport const kbqFilesizeFormatterConfigurationProvider = (configuration: Partial<KbqSizeUnitsConfig>): Provider => ({\n provide: KBQ_SIZE_UNITS_CONFIG,\n useValue: { ...KBQ_SIZE_UNITS_DEFAULT_CONFIG, ...configuration }\n});\n","import { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { Injectable, InjectionToken, Pipe, PipeTransform, inject } from '@angular/core';\nimport {\n KBQ_DEFAULT_LOCALE_ID,\n KBQ_LOCALE_ID,\n KBQ_LOCALE_SERVICE,\n KbqLocaleService,\n KbqNumberFormatOptions,\n KbqNumberRoundingLocaleConfig\n} from '../../locales';\n\nexport const KBQ_NUMBER_FORMATTER_OPTIONS = new InjectionToken<ParsedDigitsInfo>('KbqNumberFormatterOptions');\n\nexport const KBQ_NUMBER_FORMATTER_DEFAULT_OPTIONS: ParsedDigitsInfo = {\n useGrouping: true,\n minimumIntegerDigits: 1,\n minimumFractionDigits: 0,\n maximumFractionDigits: 3\n};\n\n/** Formats a number value according to locale and formatting options */\nexport function formatNumberWithLocale(\n value: unknown,\n formatter: Intl.NumberFormat,\n options?: KbqNumberFormatOptions\n): string {\n const num = strToNumber(value);\n\n if (!options?.viewGroupSeparator) return formatter.format(num);\n\n const numberFormatParts = formatter.formatToParts(num);\n\n for (const numberFormatPart of numberFormatParts) {\n if (numberFormatPart.type === 'group') {\n numberFormatPart.value = options.viewGroupSeparator;\n }\n }\n\n return numberFormatParts.map(({ value }) => value).join('');\n}\n\n/**\n * Special contract between `KbqDecimalPipe` and `KbqTableNumberPipe`,\n * so they can be interchangeable in the cases of usage\n */\nexport interface KbqNumericPipe {\n transform(value: unknown, digitsInfo?: string, locale?: string): string | null;\n}\n\nfunction isEmpty(value: any): boolean {\n return value == null || value === '' || value !== value;\n}\n\nfunction strToNumber(value: unknown): number {\n const coerced = coerceNumberProperty(value, null);\n\n if (coerced === null) {\n throw new Error(`${value} is not a number`);\n }\n\n return coerced;\n}\n\nexport const NUMBER_FORMAT_REGEXP = /^(\\d+)?\\.((\\d+)(-(\\d+))?(-(true|false))?)?$/;\n\nconst minIntGroupPosition = 1;\nconst minFractionGroupPosition = 3;\nconst maxFractionGroupPosition = 5;\nconst useGroupingPosition = 7;\n\ntype RoundDecimalOptions = KbqNumberRoundingLocaleConfig & {\n /** Label for the ten-thousand unit. */\n tenThousand?: string;\n /** Label for the one-hundred-millions unit. */\n oneHundredMillions?: string;\n rtl?: boolean;\n};\n\nconst ROUNDING_UNITS = {\n thousand: 1e3,\n tenThousand: 10 * 1e3,\n million: 1e6,\n oneHundredMillions: 100 * 1e6,\n billion: 1e9,\n trillion: 1e12\n};\n\n/** Rounding units that carry a localized label in `KbqNumberRoundingLocaleConfig`. */\ntype RoundingUnit = keyof RoundDecimalOptions & keyof typeof ROUNDING_UNITS;\n\nconst intervalsConfig = {\n supportedLanguages: ['ru-RU', 'en-US', 'es-LA', 'pt-BR'],\n intervals: [\n { startRange: 1, endRange: ROUNDING_UNITS.thousand },\n { startRange: ROUNDING_UNITS.thousand, endRange: ROUNDING_UNITS.tenThousand, precision: 1 },\n { startRange: ROUNDING_UNITS.tenThousand, endRange: ROUNDING_UNITS.million },\n { startRange: ROUNDING_UNITS.million, endRange: ROUNDING_UNITS.million * 10, precision: 1 },\n { startRange: ROUNDING_UNITS.million * 10, endRange: ROUNDING_UNITS.billion }\n ]\n};\n\nclass ParsedDigitsInfo {\n useGrouping: boolean;\n minimumIntegerDigits: number;\n minimumFractionDigits: number;\n maximumFractionDigits: number;\n}\n\nconst defaultValueForGroupingInRULocale: number = 10000;\n\nfunction parseDigitsInfo(digitsInfo: string): ParsedDigitsInfo {\n const parts = digitsInfo.match(NUMBER_FORMAT_REGEXP);\n\n if (parts === null) {\n throw new Error(`${digitsInfo} is not a valid digit info`);\n }\n\n const minIntPart = parts[minIntGroupPosition];\n const minFractionPart = parts[minFractionGroupPosition];\n const maxFractionPart = parts[maxFractionGroupPosition];\n const useGroupingPart = parts[useGroupingPosition];\n\n const result = new ParsedDigitsInfo();\n\n if (minIntPart != null) {\n result.minimumIntegerDigits = parseInt(minIntPart);\n }\n\n if (minFractionPart != null) {\n result.minimumFractionDigits = parseInt(minFractionPart);\n }\n\n if (maxFractionPart != null) {\n result.maximumFractionDigits = parseInt(maxFractionPart);\n } else if (minFractionPart != null && result.minimumFractionDigits > result.maximumFractionDigits) {\n result.maximumFractionDigits = result.minimumFractionDigits;\n }\n\n if (useGroupingPart != null) {\n result.useGrouping = useGroupingPart === 'true';\n }\n\n return result;\n}\n\n@Injectable({ providedIn: 'root' })\n@Pipe({\n name: 'kbqNumber',\n pure: false\n})\nexport class KbqDecimalPipe implements KbqNumericPipe, PipeTransform {\n private id = inject(KBQ_LOCALE_ID, { optional: true });\n private localeService = inject<KbqLocaleService>(KBQ_LOCALE_SERVICE, { optional: true });\n private readonly options = inject<ParsedDigitsInfo>(KBQ_NUMBER_FORMATTER_OPTIONS, { optional: true })!;\n constructor() {\n this.options = this.options || KBQ_NUMBER_FORMATTER_DEFAULT_OPTIONS;\n\n this.localeService?.changes.subscribe((newId: string) => (this.id = newId));\n }\n\n /**\n * @param value The number to be formatted.\n * @param digitsInfo Decimal representation options, specified by a string\n * in the following format:<br>\n * <code>{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}</code>.\n * - `minIntegerDigits`: The minimum number of integer digits before the decimal point.\n * Default is `1`.\n * - `minFractionDigits`: The minimum number of digits after the decimal point.\n * Default is `0`.\n * - `maxFractionDigits`: The maximum number of digits after the decimal point.\n * Default is `3`.\n * @param locale A locale code for the locale format rules to use.\n * When not supplied, uses the value of `KBQ_LOCALE_ID`, which is `ru` by default.\n */\n transform(value: any, digitsInfo?: string, locale?: string): string | null {\n if (isEmpty(value)) {\n return null;\n }\n\n const currentLocale = locale || this.id || KBQ_DEFAULT_LOCALE_ID;\n\n let parsedDigitsInfo: ParsedDigitsInfo | undefined;\n\n if (digitsInfo) {\n parsedDigitsInfo = parseDigitsInfo(digitsInfo);\n }\n\n const options: Intl.NumberFormatOptions = {\n ...this.options,\n ...parsedDigitsInfo\n };\n\n if (this.isSpecialFormatForRULocale(currentLocale, value, parsedDigitsInfo?.useGrouping)) {\n options.useGrouping = false;\n }\n\n try {\n const formatter = new Intl.NumberFormat(currentLocale, options);\n\n return formatNumberWithLocale(\n value,\n formatter,\n this.localeService?.locales[currentLocale]?.formatters.number.decimal\n );\n } catch (error: any) {\n throw Error(`InvalidPipeArgument: KbqDecimalPipe for pipe '${JSON.stringify(error.message)}'`);\n }\n }\n\n isSpecialFormatForRULocale(locale: string, value: number, grouping?: boolean): boolean {\n return (\n ['ru', 'ru-RU'].includes(locale) &&\n grouping === undefined &&\n Math.abs(value) < defaultValueForGroupingInRULocale\n );\n }\n}\n\n@Injectable({ providedIn: 'root' })\n@Pipe({\n name: 'kbqTableNumber',\n pure: false\n})\nexport class KbqTableNumberPipe implements KbqNumericPipe, PipeTransform {\n private id = inject(KBQ_LOCALE_ID, { optional: true });\n private localeService = inject<KbqLocaleService>(KBQ_LOCALE_SERVICE, { optional: true });\n private readonly options = inject<ParsedDigitsInfo>(KBQ_NUMBER_FORMATTER_OPTIONS, { optional: true })!;\n constructor() {\n this.options = this.options || KBQ_NUMBER_FORMATTER_DEFAULT_OPTIONS;\n\n this.localeService?.changes.subscribe((newId: string) => (this.id = newId));\n }\n\n /**\n * @param value The number to be formatted.\n * @param digitsInfo Decimal representation options, specified by a string\n * in the following format:<br>\n * <code>{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}</code>.\n * - `minIntegerDigits`: The minimum number of integer digits before the decimal point.\n * Default is `1`.\n * - `minFractionDigits`: The minimum number of digits after the decimal point.\n * Default is `0`.\n * - `maxFractionDigits`: The maximum number of digits after the decimal point.\n * Default is `3`.\n * @param locale A locale code for the locale format rules to use.\n * When not supplied, uses the value of `KBQ_LOCALE_ID`, which is `ru` by default.\n */\n transform(value: any, digitsInfo?: string, locale?: string): string | null {\n if (isEmpty(value)) {\n return null;\n }\n\n const currentLocale = locale || this.id || KBQ_DEFAULT_LOCALE_ID;\n\n let parsedDigitsInfo: ParsedDigitsInfo | undefined;\n\n if (digitsInfo) {\n parsedDigitsInfo = parseDigitsInfo(digitsInfo);\n }\n\n const options: Intl.NumberFormatOptions = {\n ...this.options,\n ...parsedDigitsInfo\n };\n\n try {\n const formatter = new Intl.NumberFormat(currentLocale, options);\n\n return formatNumberWithLocale(\n value,\n formatter,\n this.localeService?.locales[currentLocale]?.formatters.number.decimal\n );\n } catch (error: any) {\n throw Error(`InvalidPipeArgument: KbqTableNumberPipe for pipe '${JSON.stringify(error.message)}'`);\n }\n }\n}\n\nexport function isWithin(startRange: number, endRange: number, valueToCheck: number): boolean {\n return startRange <= valueToCheck && valueToCheck < endRange;\n}\n\n@Injectable({ providedIn: 'root' })\n@Pipe({\n name: 'kbqRoundNumber',\n pure: false\n})\nexport class KbqRoundDecimalPipe implements PipeTransform {\n private id = inject(KBQ_LOCALE_ID, { optional: true });\n private localeService = inject<KbqLocaleService>(KBQ_LOCALE_SERVICE, { optional: true });\n roundingOptions: RoundDecimalOptions;\n\n constructor() {\n this.localeService?.changes.subscribe((newId: string) => (this.id = newId));\n }\n\n // @TODO: update returned type to string | null. Breaking change\n transform(value: any, locale?: string): any {\n if (isEmpty(value)) {\n return null;\n }\n\n const currentLocale: string = locale || this.id || KBQ_DEFAULT_LOCALE_ID;\n\n this.roundingOptions = this.localeService?.locales[currentLocale].formatters.number.rounding;\n\n try {\n const num = strToNumber(value);\n const unit = this.calculateUnit(num);\n\n if (!unit) {\n return Intl.NumberFormat.call(this, currentLocale, { useGrouping: false }).format(num);\n }\n\n let parts: { num?: number; fraction?: number } = {};\n\n if (intervalsConfig.supportedLanguages.includes(currentLocale)) {\n intervalsConfig.intervals.find(({ startRange, endRange, precision }) => {\n const within = isWithin(startRange, endRange, num);\n\n if (within) {\n if (precision) {\n parts =\n unit === 'thousand'\n ? this.calculatePartsForThousands(num)\n : {\n num: Math.trunc(num / ROUNDING_UNITS[unit]),\n fraction: this.calculateDecimal(num, ROUNDING_UNITS[unit])\n };\n } else {\n parts = { num: Math.round(num / ROUNDING_UNITS[unit]) };\n }\n }\n\n return within;\n });\n }\n\n parts = parts.num\n ? parts\n : {\n num: Math.trunc(num / ROUNDING_UNITS[unit]),\n fraction: this.calculateDecimal(num, ROUNDING_UNITS[unit])\n };\n Object.keys(parts).forEach((key) => {\n parts[key] = Intl.NumberFormat.call(this, currentLocale, { useGrouping: false }).format(parts[key]);\n });\n\n const calculatedValue = parts.fraction\n ? `${parts.num}${this.roundingOptions.groupSeparator}${parts.fraction}`\n : `${parts.num}`;\n\n return `${calculatedValue}${this.roundingOptions.separator}${this.roundingOptions[unit]}`;\n } catch (error: any) {\n throw Error(`InvalidPipeArgument: KbqRoundDecimalPipe for pipe '${JSON.stringify(error.message)}'`);\n }\n }\n\n private calculateDecimal(num: number, divider: number) {\n return Math.round(((num / divider) % 1) * 10);\n }\n\n /**\n * 2 * 1000 is a number in the interval of [1500...2500)\n *\n * 2,0 * 1000 is a number in the interval of [1950...2050)\n */\n private calculatePartsForThousands(num: number) {\n const dividedValue = num / ROUNDING_UNITS.thousand;\n const div = Math.round(dividedValue) * ROUNDING_UNITS.thousand;\n const fifty = 50;\n\n return isWithin(div - fifty, div + fifty, num)\n ? { num: Math.round(dividedValue), fraction: 0 }\n : { num: Math.round(dividedValue) };\n }\n\n private calculateUnit(num: number): RoundingUnit | undefined {\n let currentUnit: RoundingUnit | undefined;\n const localizedOptions = Object.keys(this.roundingOptions);\n\n (Object.keys(ROUNDING_UNITS) as RoundingUnit[]).every((key) => {\n if (!localizedOptions.includes(key)) {\n return true;\n }\n\n if (num / ROUNDING_UNITS[key] >= 1) {\n currentUnit = key;\n\n return true;\n }\n\n return false;\n });\n\n return currentUnit;\n }\n}\n","import { KbqUnitSystem } from './config';\n\nexport const KBQ_INVALID_VALUE_ERROR = 'Argument \"value\" must be a finite number!';\n\n/**\n * Converts a byte value into locale-independent file size parts: numeric value and unit abbreviation.\n *\n * @param value - size in bytes.\n * @param system - unit system defining abbreviations and base scaling (SI/IEC).\n * @returns Object with the formatted size info.\n *\n * @example\n * getFormattedSizeParts(1500, 'SI'); // { value: \"1.50\", unit: \"KB\" }\n */\nexport function getFormattedSizeParts(value: number, system: KbqUnitSystem): { value: string; unit: string } {\n const { result, unit } = getHumanizedBytes(value, system);\n\n return {\n value: result.toString(),\n unit\n };\n}\n\n/**\n * Converts bytes to Kb, Mb, Gb\n *\n * @param value the number of bytes\n * @param system the measurement system\n * @param threshold the lower counting threshold\n */\nexport const getHumanizedBytes = (\n value: number,\n system: KbqUnitSystem,\n threshold?: number\n): { result: number; unit: string } => {\n if (!Number.isFinite(value)) {\n throw new Error(KBQ_INVALID_VALUE_ERROR);\n }\n\n const calculatedThreshold = Number.isFinite(threshold) ? threshold : Math.pow(system.base, system.power);\n const orderOfMagnitude: number = Math.pow(system.base, system.power);\n\n let result: number = value;\n let step = 0;\n const len: number = system.abbreviations.length - 1;\n\n while (step < len) {\n if (calculatedThreshold !== undefined && result < calculatedThreshold) {\n break;\n }\n\n step++;\n result = value / Math.pow(orderOfMagnitude, step);\n }\n\n return {\n result,\n unit: system.abbreviations[step]\n };\n};\n","import { inject, Pipe, PipeTransform } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KBQ_DEFAULT_LOCALE_ID, KBQ_LOCALE_SERVICE } from '../../locales';\nimport { KbqDecimalPipe } from '../number/formatter';\nimport {\n KBQ_SIZE_UNITS_CONFIG,\n KBQ_SIZE_UNITS_DEFAULT_CONFIG,\n KbqMeasurementSystem,\n KbqMeasurementSystemType,\n KbqSizeUnitsConfig,\n KbqUnitSystem\n} from './config';\nimport { getFormattedSizeParts } from './size';\n\n@Pipe({\n name: 'kbqDataSize',\n pure: false\n})\nexport class KbqDataSizePipe implements PipeTransform {\n /** Injects the external configuration for size units, if available. */\n readonly externalConfig = inject(KBQ_SIZE_UNITS_CONFIG, { optional: true });\n\n private readonly localeService = inject(KBQ_LOCALE_SERVICE, { optional: true });\n private readonly numberPipe = inject(KbqDecimalPipe, { optional: true });\n private readonly nonBreakingSpace = '\\u00a0';\n private config: KbqSizeUnitsConfig;\n\n constructor() {\n this.localeService?.changes.pipe(takeUntilDestroyed()).subscribe(this.updateLocaleParams);\n\n if (!this.localeService) {\n this.config = this.externalConfig || KBQ_SIZE_UNITS_DEFAULT_CONFIG;\n }\n }\n\n /** Transforms bytes into localized size string */\n transform(\n source: number,\n precision: number = this.config.defaultPrecision,\n unitSystemName: KbqMeasurementSystemType = this.config.defaultUnitSystem,\n locale: string = this.localeService?.id || KBQ_DEFAULT_LOCALE_ID\n ): string {\n const resolvedUnitSystems: Record<KbqMeasurementSystem, KbqUnitSystem> = this.localeService\n ? this.localeService.locales[locale].sizeUnits.unitSystems\n : this.config.unitSystems;\n\n const { value, unit } = getFormattedSizeParts(source, resolvedUnitSystems[unitSystemName]);\n\n const formattedValue = this.numberPipe?.transform(value, `1.0-${precision}`, locale) || value;\n\n return formattedValue ? `${formattedValue}${this.nonBreakingSpace}${unit}` : '';\n }\n\n private updateLocaleParams = () => {\n this.config = this.externalConfig || this.localeService?.getParams('sizeUnits');\n };\n}\n","import { NgModule } from '@angular/core';\nimport { DateFormatter } from './date/formatter';\nimport {\n AbsoluteDateFormatterImpurePipe,\n AbsoluteDateFormatterPipe,\n AbsoluteDateShortFormatterImpurePipe,\n AbsoluteDateShortFormatterPipe,\n AbsoluteDateTimeFormatterImpurePipe,\n AbsoluteDateTimeFormatterPipe,\n AbsoluteShortDateTimeFormatterImpurePipe,\n AbsoluteShortDateTimeFormatterPipe,\n DurationLongFormatterImpurePipe,\n DurationLongFormatterPipe,\n DurationShortestFormatterImpurePipe,\n DurationShortestFormatterPipe,\n DurationShortFormatterImpurePipe,\n DurationShortFormatterPipe,\n KbqAbsoluteLongDatePipe,\n KbqAbsoluteLongDateTimePipe,\n KbqAbsoluteShortDatePipe,\n KbqAbsoluteShortDateTimePipe,\n KbqDurationLongPipe,\n KbqDurationShortestPipe,\n KbqDurationShortPipe,\n KbqRangeLongDatePipe,\n KbqRangeLongDateTimePipe,\n KbqRangeMiddleDateTimePipe,\n KbqRangeShortDatePipe,\n KbqRangeShortDateTimePipe,\n KbqRelativeLongDatePipe,\n KbqRelativeLongDateTimePipe,\n KbqRelativeShortDatePipe,\n KbqRelativeShortDateTimePipe,\n RangeDateFormatterImpurePipe,\n RangeDateFormatterPipe,\n RangeDateTimeFormatterImpurePipe,\n RangeDateTimeFormatterPipe,\n RangeMiddleDateTimeFormatterImpurePipe,\n RangeMiddleDateTimeFormatterPipe,\n RangeShortDateFormatterImpurePipe,\n RangeShortDateFormatterPipe,\n RangeShortDateTimeFormatterImpurePipe,\n RangeShortDateTimeFormatterPipe,\n RelativeDateFormatterImpurePipe,\n RelativeDateFormatterPipe,\n RelativeDateTimeFormatterImpurePipe,\n RelativeDateTimeFormatterPipe,\n RelativeShortDateFormatterImpurePipe,\n RelativeShortDateFormatterPipe,\n RelativeShortDateTimeFormatterImpurePipe,\n RelativeShortDateTimeFormatterPipe\n} from './date/formatter.pipe';\nimport { KbqDataSizePipe } from './filesize';\nimport { KbqDecimalPipe, KbqRoundDecimalPipe, KbqTableNumberPipe } from './number/formatter';\n\n@NgModule({\n imports: [\n AbsoluteDateFormatterPipe,\n AbsoluteDateTimeFormatterPipe,\n AbsoluteDateShortFormatterPipe,\n AbsoluteShortDateTimeFormatterPipe,\n RelativeDateFormatterPipe,\n RelativeDateTimeFormatterPipe,\n RelativeShortDateFormatterPipe,\n RelativeShortDateTimeFormatterPipe,\n RangeDateFormatterPipe,\n RangeShortDateFormatterPipe,\n RangeDateTimeFormatterPipe,\n RangeShortDateTimeFormatterPipe,\n RangeMiddleDateTimeFormatterPipe,\n DurationShortestFormatterPipe,\n DurationLongFormatterPipe,\n DurationShortFormatterPipe,\n AbsoluteDateFormatterImpurePipe,\n AbsoluteDateTimeFormatterImpurePipe,\n AbsoluteDateShortFormatterImpurePipe,\n AbsoluteShortDateTimeFormatterImpurePipe,\n RelativeDateFormatterImpurePipe,\n RelativeDateTimeFormatterImpurePipe,\n RelativeShortDateFormatterImpurePipe,\n RelativeShortDateTimeFormatterImpurePipe,\n RangeDateFormatterImpurePipe,\n RangeShortDateFormatterImpurePipe,\n RangeDateTimeFormatterImpurePipe,\n RangeShortDateTimeFormatterImpurePipe,\n RangeMiddleDateTimeFormatterImpurePipe,\n DurationShortestFormatterImpurePipe,\n DurationLongFormatterImpurePipe,\n DurationShortFormatterImpurePipe,\n KbqAbsoluteLongDatePipe,\n KbqAbsoluteLongDateTimePipe,\n KbqAbsoluteShortDatePipe,\n KbqAbsoluteShortDateTimePipe,\n KbqRelativeLongDatePipe,\n KbqRelativeLongDateTimePipe,\n KbqRelativeShortDatePipe,\n KbqRelativeShortDateTimePipe,\n KbqRangeLongDatePipe,\n KbqRangeLongDateTimePipe,\n KbqRangeMiddleDateTimePipe,\n KbqRangeShortDatePipe,\n KbqRangeShortDateTimePipe,\n KbqDurationShortestPipe,\n KbqDurationLongPipe,\n KbqDurationShortPipe,\n KbqDataSizePipe,\n KbqDecimalPipe,\n KbqRoundDecimalPipe,\n KbqTableNumberPipe\n ],\n providers: [DateFormatter],\n exports: [\n KbqDecimalPipe,\n KbqRoundDecimalPipe,\n KbqTableNumberPipe,\n AbsoluteDateFormatterPipe,\n AbsoluteDateTimeFormatterPipe,\n AbsoluteDateShortFormatterPipe,\n AbsoluteShortDateTimeFormatterPipe,\n RelativeDateFormatterPipe,\n RelativeDateTimeFormatterPipe,\n RelativeShortDateFormatterPipe,\n RelativeShortDateTimeFormatterPipe,\n RangeDateFormatterPipe,\n RangeShortDateFormatterPipe,\n RangeDateTimeFormatterPipe,\n RangeShortDateTimeFormatterPipe,\n RangeMiddleDateTimeFormatterPipe,\n DurationShortestFormatterPipe,\n DurationLongFormatterPipe,\n DurationShortFormatterPipe,\n AbsoluteDateFormatterImpurePipe,\n AbsoluteDateTimeFormatterImpurePipe,\n AbsoluteDateShortFormatterImpurePipe,\n AbsoluteShortDateTimeFormatterImpurePipe,\n RelativeDateFormatterImpurePipe,\n RelativeDateTimeFormatterImpurePipe,\n RelativeShortDateFormatterImpurePipe,\n RelativeShortDateTimeFormatterImpurePipe,\n RangeDateFormatterImpurePipe,\n RangeShortDateFormatterImpurePipe,\n RangeDateTimeFormatterImpurePipe,\n RangeShortDateTimeFormatterImpurePipe,\n RangeMiddleDateTimeFormatterImpurePipe,\n DurationShortestFormatterImpurePipe,\n DurationLongFormatterImpurePipe,\n DurationShortFormatterImpurePipe,\n KbqAbsoluteLongDatePipe,\n KbqAbsoluteLongDateTimePipe,\n KbqAbsoluteShortDatePipe,\n KbqAbsoluteShortDateTimePipe,\n KbqRelativeLongDatePipe,\n KbqRelativeLongDateTimePipe,\n KbqRelativeShortDatePipe,\n KbqRelativeShortDateTimePipe,\n KbqRangeLongDatePipe,\n KbqRangeLongDateTimePipe,\n KbqRangeMiddleDateTimePipe,\n KbqRangeShortDatePipe,\n KbqRangeShortDateTimePipe,\n KbqDurationShortestPipe,\n KbqDurationLongPipe,\n KbqDurationShortPipe,\n KbqDataSizePipe\n ]\n})\nexport class KbqFormattersModule {}\n\nexport * from './date/formatter';\nexport * from './date/formatter.pipe';\nexport * from './filesize/index';\nexport * from './number/formatter';\n","import { AfterContentInit, Directive, ElementRef, contentChildren, inject } from '@angular/core';\n\n@Directive({\n selector: '.kbq-form__row, .kbq-form__fieldset, .kbq-form__legend',\n host: {\n '[class.kbq-form-row_margin]': 'margin'\n },\n exportAs: 'kbqFormElement'\n})\nexport class KbqFormElement implements AfterContentInit {\n private readonly element = inject<ElementRef<HTMLElement>>(ElementRef);\n\n margin = false;\n\n isRow = false;\n isFieldSet = false;\n hasLegend = false;\n isHorizontal = false;\n\n readonly elements = contentChildren(KbqFormElement);\n\n ngAfterContentInit(): void {\n const classList = this.element.nativeElement.classList;\n\n this.isRow = classList.contains('kbq-form__row');\n this.isHorizontal = classList.contains('kbq-horizontal');\n\n this.isFieldSet = classList.contains('kbq-form__fieldset');\n\n if (this.isFieldSet && this.element.nativeElement.firstElementChild) {\n this.hasLegend = this.element.nativeElement.firstElementChild.classList.contains('kbq-form__legend');\n }\n }\n}\n\n@Directive({\n selector: '.kbq-form-vertical, .kbq-form-horizontal',\n host: {\n class: 'kbq-form'\n },\n exportAs: 'kbqForm'\n})\nexport class KbqForm implements AfterContentInit {\n readonly elements = contentChildren(KbqFormElement);\n\n ngAfterContentInit(): void {\n this.handleElements(this.elements());\n }\n\n handleElements(elements: readonly KbqFormElement[]): void {\n elements.forEach((element, index) => {\n const nextElement: KbqFormElement | undefined = elements[index + 1];\n\n if (element.isFieldSet && !element.isHorizontal) {\n this.handleElements(element.elements());\n }\n\n element.margin = !!(nextElement && !nextElement.hasLegend);\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { KbqForm, KbqFormElement } from './forms.directive';\n\n@NgModule({\n imports: [\n KbqForm,\n KbqFormElement\n ],\n exports: [\n KbqForm,\n KbqFormElement\n ]\n})\nexport class KbqFormsModule {}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\n/** Provides a set of validators for password form controls. */\nexport class PasswordValidators {\n /**\n * Validator that requires the control's value length to be at least `min` characters.\n *\n * `min` - number of characters.\n *\n * ## Usage:\n *\n * ```typescript\n * const control = new FormControl('password', PasswordValidators.minLength(10));\n * console.log(control.errors); // {minLength: {min: 10, actual: 8}}\n * ```\n */\n static minLength(min: number): ValidatorFn {\n return ({ value }: AbstractControl): ValidationErrors | null => {\n if (typeof value !== 'string') {\n return null;\n }\n\n return value.length >= min ? null : { minLength: { min, actual: value.length } };\n };\n }\n\n /**\n * Validator that requires the control's value length to be at most `max` characters.\n *\n * `max` - number of characters.\n *\n * ## Usage:\n * ```typescript\n * const control = new FormControl('password', PasswordValidators.maxLength(6));\n * console.log(control.errors); // {maxLength: {max: 6, actual: 8}}\n * ```\n */\n static maxLength(max: number): ValidatorFn {\n return ({ value }: AbstractControl): ValidationErrors | null => {\n if (typeof value !== 'string') {\n return null;\n }\n\n return value.length <= max ? null : { maxLength: { max, actual: value.length } };\n };\n }\n\n /**\n * Validator that requires the control's value to be at least `min` uppercase characters.\n *\n * `min` - number of uppercase characters.\n *\n * ### Usage:\n *\n * ```typescript\n * const control = new FormControl('Password', PasswordValidators.minUppercase(2));\n * console.log(control.errors); // {minUppercase: {min: 2, actual: 1}}\n * ```\n */\n static minUppercase(min: number): ValidatorFn {\n return ({ value }: AbstractControl): ValidationErrors | null => {\n if (typeof value !== 'string') {\n return null;\n }\n\n const matches = (value.match(/[A-Z]/g) || []).length;\n\n return matches >= min ? null : { minUppercase: { min, actual: matches } };\n };\n }\n\n /**\n * Validator that requires the control's value to be at least `min` lowercase characters.\n *\n * `min` - number of lowercase characters.\n *\n * ### Usage:\n *\n * ```typescript\n * const control = new FormControl('PASSWORD', PasswordValidators.minLowercase());\n * console.log(control.errors); // {minLowercase: {min: 1, actual: 0}}\n * ```\n */\n static minLowercase(min: number): ValidatorFn {\n return ({ value }: AbstractControl): ValidationErrors | null => {\n if (typeof value !== 'string') {\n return null;\n }\n\n const matches = (value.match(/[a-z]/g) || []).length;\n\n return matches >= min ? null : { minLowercase: { min, actual: matches } };\n };\n }\n\n /**\n * Validator that requires the control's value to be at least `min` number characters.\n *\n * `min` - number of number characters.\n *\n * ### Usage:\n *\n * ```typescript\n * const control = new FormControl('passw0rd', PasswordValidators.minNumber(2));\n * console.log(control.errors); // {minNumber: {min: 2, actual: 1}}\n * ```\n */\n static minNumber(min: number): ValidatorFn {\n return ({ value }: AbstractControl): ValidationErrors | null => {\n if (typeof value !== 'string') {\n return null;\n }\n\n const matches = (value.match(/[\\d]/g) || []).length;\n\n return matches >= min ? null : { minNumber: { min, actual: matches } };\n };\n }\n\n /**\n * Validator that requires the control's value to be at least `min` special characters.\n *\n * `min` - number of special characters.\n *\n * ### Special characters:\n * ```js\n * ['!','@','#','$','%','^','&','*']\n * ```\n *\n * ### Usage:\n *\n * ```typescript\n * const control = new FormControl('pa$sword', PasswordValidators.minSpecial(2));\n * console.log(control.errors); // {minSpecial: {min: 2, actual: 1}}\n * ```\n */\n static minSpecial(min: number): ValidatorFn {\n return ({ value }: AbstractControl): ValidationErrors | null => {\n if (typeof value !== 'string') {\n return null;\n }\n\n const matches = (value.match(/[!@#$%^&*]/g) || []).length;\n\n return matches >= min ? null : { minSpecial: { min, actual: matches } };\n };\n }\n}\n\n/** Provides a set of validators for file-related form controls. */\nexport class FileValidators {\n /**\n * Validator that checks if the file size is less than or equal to the provided `maxSize`.\n *\n * @param maxSize - The maximum allowed file size in bytes.\n *\n * @returns A ValidatorFn function that checks the file size.\n *\n * ## Usage:\n *\n * ```typescript\n * const control = new FormControl(null, [FileValidators.maxFileSize(1024 * 1024)]); // 1MB\n * control.setValue(FILE_LESS_OR_EQUAL_THAN_1MB);\n * console.log(control.errors); // null\n * control.setValue(FILE_MORE_THAN_1MB);\n * console.log(control.errors); // {maxFileSize: { max: 1048576, actual: FILE_MORE_THAN_1MB.size }}\n * ```\n */\n static maxFileSize(maxSize: number): ValidatorFn {\n return ({ value }: AbstractControl): ValidationErrors | null => {\n if (!value) return null;\n\n const size = value instanceof File ? value.size : value.file.size;\n\n if (size > maxSize) {\n return { maxFileSize: { max: maxSize, actual: size } };\n }\n\n return null;\n };\n }\n\n /**\n * Validator that checks whether file's name or MIME type\n * matches one of the accepted extensions or MIME types.\n *\n * @param accept - Array of allowed file extensions or MIME types.\n * @returns ValidatorFn that returns validation error if file type is not accepted, or null otherwise.\n */\n static isCorrectExtension(accept: (`.${string}` | `${string}/${string}`)[]): ValidatorFn {\n return (control: AbstractControl<{ file: File } | null>): ValidationErrors | null => {\n if (!accept?.length || !control.value) return null;\n const { name, type } = control.value.file;\n\n const isValid = accept.some((acceptedExtensionOrMimeType) => {\n const typeAsRegExp = new RegExp(`${acceptedExtensionOrMimeType}$`);\n\n return typeAsRegExp.test(name) || typeAsRegExp.test(type);\n });\n\n return isValid ? null : { fileExtensionMismatch: { expected: accept, actual: name } };\n };\n }\n}\n\n/**\n * Type helper describing accepted file types, referring to:\n * @link https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/input/file#unique_file_type_specifiers\n */\nexport type KbqFileTypeSpecifier = Parameters<typeof FileValidators.isCorrectExtension>[0];\n","/** Unicode combining marks left behind by NFKD decomposition of accented characters, e.g. `é` → `e` + U+0301. */\nconst COMBINING_MARKS = /[̀-ͯ]/g;\n\n/**\n * `й`/`Й` decompose under NFKD into `и`/`И` + a combining breve, same as any other diacritic. Unlike\n * Latin diacritics, that breve marks a distinct Cyrillic letter rather than an accented variant, so it's\n * re-composed after the generic strip instead of being folded away with the rest.\n */\nconst CYRILLIC_I_BREVE = /[иИ]̆/g;\n\n/** The transformation behind {@link normalizeSearchValue}, minus the end-trimming — see {@link findSearchMatchRanges}. */\nfunction foldDiacritics(value: string): string {\n return value\n .normalize('NFKD')\n .replace(CYRILLIC_I_BREVE, (match) => (match[0] === 'И' ? 'Й' : 'й'))\n .replace(COMBINING_MARKS, '')\n .toLocaleLowerCase();\n}\n\n/**\n * Normalizes a string for case- and diacritic-insensitive search comparison: trims the ends,\n * decomposes accented characters (NFKD), strips the resulting combining marks (while preserving\n * `й`/`Й` as distinct letters), and lowercases using the current locale. Internal whitespace and\n * punctuation are left untouched.\n */\nexport function normalizeSearchValue(value: string): string {\n if (typeof value !== 'string' || !value) return '';\n\n return foldDiacritics(value.trim());\n}\n\n/**\n * Locates every case- and diacritic-insensitive match of `tokens` in `value`, returning `[start, end)`\n * ranges in `value`'s own (unfolded) coordinates — overlapping or adjacent ranges are merged. This is\n * what a highlighter needs to stay in sync with {@link createSearchPredicate}: matching a folded value\n * like `cafe` against `Café` only tells you *that* it matched, not *where* in the original string to\n * mark, since folding can change which letters look alike without changing the string's length.\n */\nexport function findSearchMatchRanges(value: string, tokens: readonly string[]): Array<[number, number]> {\n const normalizedTokens = tokens.map(normalizeSearchValue).filter((token) => token.length > 0);\n\n if (typeof value !== 'string' || !normalizedTokens.length) return [];\n\n // Folding is applied one UTF-16 code unit at a time so every character of the normalized value can be\n // traced back to the original index it came from — this is what makes mapping a match's position back\n // onto `value` possible. Surrogate pairs are folded as two independent units; neither combining-mark\n // stripping nor case-folding depends on cross-surrogate context, so this doesn't affect correctness.\n let normalizedValue = '';\n const originalIndexOf: number[] = [];\n\n for (let index = 0; index < value.length; index++) {\n const folded = foldDiacritics(value[index]);\n\n normalizedValue += folded;\n\n for (let i = 0; i < folded.length; i++) originalIndexOf.push(index);\n }\n\n const ranges: Array<[number, number]> = [];\n\n for (const token of normalizedTokens) {\n let fromIndex = 0;\n let matchIndex: number;\n\n while ((matchIndex = normalizedValue.indexOf(token, fromIndex)) !== -1) {\n ranges.push([originalIndexOf[matchIndex], originalIndexOf[matchIndex + token.length - 1] + 1]);\n fromIndex = matchIndex + token.length;\n }\n }\n\n return mergeRanges(ranges);\n}\n\nfunction mergeRanges(ranges: Array<[number, number]>): Array<[number, number]> {\n if (ranges.length < 2) return ranges;\n\n const sorted = [...ranges].sort(([aStart, aEnd], [bStart, bEnd]) => aStart - bStart || aEnd - bEnd);\n const merged: Array<[number, number]> = [sorted[0]];\n\n for (const [start, end] of sorted.slice(1)) {\n const last = merged[merged.length - 1];\n\n if (start <= last[1]) {\n last[1] = Math.max(last[1], end);\n } else {\n merged.push([start, end]);\n }\n }\n\n return merged;\n}\n\nconst SEARCH_QUERY_TOKEN = /\"([^\"]*)\"|(\\S+)/g;\n\n/**\n * Splits a raw query into tokens, treating whitespace as a separator and `\"quoted phrases\"` as\n * a single token (spaces inside the quotes are preserved). A `\"` with no matching closing quote\n * stays part of its token instead of being dropped, so a half-open quote yields a token no\n * realistic haystack contains — and therefore no results — until the quote is closed.\n */\nexport function tokenizeSearchQuery(query: string): string[] {\n if (typeof query !== 'string' || !query.trim()) return [];\n\n const tokens: string[] = [];\n\n for (const match of query.matchAll(SEARCH_QUERY_TOKEN)) {\n const token = match[1] ?? match[2];\n\n if (token) tokens.push(token);\n }\n\n return tokens;\n}\n\n/**\n * Builds a case- and diacritic-insensitive substring predicate for the given query. The query is\n * tokenized (bare words + `\"quoted phrases\"`) and every token must match (AND) against at least\n * one of the supplied haystacks (OR across fields) — pass a single string for a single-field\n * search, or an array for multi-field rows. An empty/whitespace-only query matches everything.\n */\nexport function createSearchPredicate(query: string): (value: string | readonly string[]) => boolean {\n const tokens = tokenizeSearchQuery(query)\n .map(normalizeSearchValue)\n .filter((token) => token.length > 0);\n\n if (!tokens.length) return () => true;\n\n return (value: string | readonly string[]): boolean => {\n const haystacks = (Array.isArray(value) ? value : [value]).map(normalizeSearchValue);\n\n return tokens.every((token) => haystacks.some((haystack) => haystack.includes(token)));\n };\n}\n","import { findSearchMatchRanges } from '../search/search-base';\n\nconst HTML_ESCAPES = { '&': '&', '<': '<', '>': '>', '\"': '"', \"'\": ''' } as const;\nconst HTML_SPECIAL_CHARS = /[&<>\"']/;\nconst HTML_SPECIAL_CHARS_GLOBAL = new RegExp(HTML_SPECIAL_CHARS.source, 'g');\n\n/** Escapes characters in the specified string that have special meaning in a regular expression. */\nexport function escapeRegExp(value: string): string {\n if (value) {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n }\n\n return value;\n}\n\nfunction escapeHtml(value: string): string {\n if (!HTML_SPECIAL_CHARS.test(value)) return value;\n\n return value.replace(HTML_SPECIAL_CHARS_GLOBAL, (chr) => HTML_ESCAPES[chr] ?? chr);\n}\n\nfunction normalizeKeywords(keyword: unknown): string[] {\n const list = Array.isArray(keyword) ? keyword : [keyword];\n\n // Longest first, so a shorter keyword (e.g. \"a\") can't shadow a longer one that starts\n // with it (e.g. \"all\") within the same regex alternation.\n return list\n .filter((item): item is string => typeof item === 'string' && item.length > 0)\n .sort((a, b) => b.length - a.length);\n}\n\nfunction findLiteralMatchRanges(value: string, keywords: string[]): Array<[number, number]> {\n const pattern = new RegExp(keywords.map(escapeRegExp).join('|'), 'gi');\n const ranges: Array<[number, number]> = [];\n let match: RegExpExecArray | null = pattern.exec(value);\n\n while (match !== null) {\n ranges.push([match.index, match.index + match[0].length]);\n match = pattern.exec(value);\n }\n\n return ranges;\n}\n\n/**\n * @docs-private\n * `keyword` accepts either a single string or an array of strings — every keyword is\n * highlighted independently, which is what multi-token search queries need.\n *\n * By default, matching is literal (case-insensitive substring), same as a plain `.includes`. Pass\n * `foldDiacritics: true` when the keywords were matched with diacritic folding (e.g. via\n * {@link createSearchPredicate} from `@koobiq/components/core`) — otherwise a folded match like\n * `cafe` finding `Café` has nothing in the value for a literal highlighter to mark.\n */\nexport function highlight(\n value: unknown,\n keyword: unknown,\n mark: (text: string) => string,\n foldDiacritics = false\n): string {\n if (typeof value !== 'string') return '';\n\n const keywords = normalizeKeywords(keyword);\n\n if (!keywords.length) return escapeHtml(value);\n\n const ranges = foldDiacritics ? findSearchMatchRanges(value, keywords) : findLiteralMatchRanges(value, keywords);\n\n if (!ranges.length) return escapeHtml(value);\n\n let result = '';\n let cursor = 0;\n\n for (const [start, end] of ranges) {\n result += escapeHtml(value.slice(cursor, start));\n result += mark(escapeHtml(value.slice(start, end)));\n cursor = end;\n }\n\n return result + escapeHtml(value.slice(cursor));\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { highlight } from './highlight-base';\n\n/** @docs-private */\nexport const kbqHighlightBackgroundMark = (text: string): string =>\n `<mark class=\"kbq-highlight-background\">${text}</mark>`;\n\n@Pipe({ name: 'kbqHighlightBackground' })\nexport class KbqHighlightBackgroundPipe implements PipeTransform {\n transform(value: unknown, keyword: unknown, foldDiacritics = false): string {\n return highlight(value, keyword, kbqHighlightBackgroundMark, foldDiacritics);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { highlight } from './highlight-base';\n\n/** @docs-private */\nexport const kbqHighlightMark = (text: string): string => `<mark class=\"kbq-highlight\">${text}</mark>`;\n\n@Pipe({ name: 'mcHighlight' })\nexport class KbqHighlightPipe implements PipeTransform {\n transform(value: unknown, keyword: unknown, foldDiacritics = false): string {\n return highlight(value, keyword, kbqHighlightMark, foldDiacritics);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { KbqHighlightBackgroundPipe } from './highlight-background.pipe';\nimport { KbqHighlightPipe } from './highlight.pipe';\n\n@NgModule({\n imports: [KbqHighlightPipe, KbqHighlightBackgroundPipe],\n exports: [KbqHighlightPipe, KbqHighlightBackgroundPipe]\n})\nexport class KbqHighlightModule {}\n\nexport * from './highlight-background.pipe';\nexport { escapeRegExp } from './highlight-base';\nexport * from './highlight.pipe';\n","import { Directive, ElementRef, QueryList } from '@angular/core';\n\n/**\n * Shared directive to count lines inside a text area, such as a list item.\n * Line elements can be extracted with a @ContentChildren(KbqLine) query, then\n * counted by checking the query list's length.\n */\n@Directive({\n selector: '[kbq-line], [mcLine]',\n host: { class: 'kbq-line' }\n})\nexport class KbqLine {}\n\n/**\n * Helper that takes a query list of lines and sets the correct class on the host.\n * @docs-private\n */\nexport class KbqLineSetter {\n constructor(\n private _lines: QueryList<KbqLine>,\n private _element: ElementRef\n ) {\n this.setLineClass(this._lines.length);\n\n this._lines.changes.subscribe(() => {\n this.setLineClass(this._lines.length);\n });\n }\n\n private setLineClass(count: number): void {\n const minLineClassNumber = 2;\n const maxLineClassNumber = 3;\n\n this.resetClasses();\n\n if (count === minLineClassNumber || count === maxLineClassNumber) {\n this.setClass(`kbq-${count}-line`, true);\n } else if (count > maxLineClassNumber) {\n this.setClass(`kbq-multi-line`, true);\n }\n }\n\n private resetClasses(): void {\n this.setClass('kbq-2-line', false);\n this.setClass('kbq-3-line', false);\n this.setClass('kbq-multi-line', false);\n }\n\n private setClass(className: string, isAdd: boolean): void {\n if (isAdd) {\n this._element.nativeElement.classList.add(className);\n } else {\n this._element.nativeElement.classList.remove(className);\n }\n }\n}\n","import { Platform } from '@angular/cdk/platform';\nimport { Directive, inject } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { KBQ_WINDOW } from '../tokens';\nimport { kbqInjectNativeElement } from '../utils';\n\n@Directive({\n host: {\n '[class.kbq-expanded]': '!collapsed',\n '[class.kbq-collapsed]': 'collapsed'\n }\n})\nexport class KbqRectangleItem {\n protected readonly isBrowser = inject(Platform).isBrowser;\n protected readonly nativeElement = kbqInjectNativeElement();\n private readonly window = inject(KBQ_WINDOW);\n\n readonly state = new Subject<void>();\n\n get collapsed(): boolean {\n return this._collapsed;\n }\n\n set collapsed(value: boolean) {\n this._collapsed = value;\n\n this.state.next();\n }\n\n private _collapsed: boolean;\n\n /**\n * Outer width of the item: its border box plus horizontal margins.\n *\n * `getComputedStyle().width` resolves to the used content-box width whatever `box-sizing` says,\n * so it silently drops padding and borders on the `border-box` elements this measures, and the\n * result would change again under a consuming application's global reset.\n * `getBoundingClientRect()` is always the border box, which makes it host-independent.\n */\n getOuterElementWidth(): number {\n if (!this.isBrowser) return 0;\n\n const { marginLeft, marginRight } = this.window.getComputedStyle(this.nativeElement);\n\n return [marginLeft, marginRight].reduce(\n (acc, item) => acc + (parseFloat(item) || 0),\n this.nativeElement.getBoundingClientRect().width\n );\n }\n}\n","import { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n EventEmitter,\n inject,\n InjectionToken,\n Input,\n OnDestroy,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ENTER, SPACE, TAB } from '../keycodes';\nimport { kbqInjectNativeElement } from '../utils';\n\nexport interface KbqOptionActionParent {\n dropdownTrigger: {\n opened: boolean;\n restoreFocus: boolean;\n dropdownClosed: EventEmitter<void>;\n lastDestroyReason: void | 'click' | 'keydown' | 'tab';\n openedBy: Exclude<FocusOrigin, 'program' | null> | undefined;\n toggle(): void;\n };\n tooltipTrigger: {\n disabled: boolean;\n };\n focus(): void;\n}\n\nexport const KBQ_OPTION_ACTION_PARENT = new InjectionToken<KbqOptionActionParent>('KBQ_OPTION_ACTION_PARENT');\n\n@Component({\n selector: 'kbq-option-action',\n template: `\n <ng-content select=\"[kbq-icon]\">\n <i class=\"kbq kbq-icon kbq-contrast-fade kbq-ellipsis-vertical_16\"></i>\n </ng-content>\n `,\n styleUrls: ['./action.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-option-action',\n '[class.kbq-expanded]': 'false',\n '[class.kbq-disabled]': 'disabled',\n '[attr.disabled]': 'disabled || null',\n '[attr.tabIndex]': '-1',\n '(click)': 'onClick($event)',\n '(keydown)': 'onKeyDown($event)'\n },\n exportAs: 'kbqOptionAction'\n})\nexport class KbqOptionActionComponent implements AfterViewInit, OnDestroy {\n private readonly nativeElement = kbqInjectNativeElement();\n private readonly focusMonitor = inject(FocusMonitor);\n private readonly option = inject(KBQ_OPTION_ACTION_PARENT);\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input({ transform: booleanAttribute })\n get disabled(): boolean {\n return this._disabled;\n }\n\n set disabled(value: boolean) {\n if (value !== this.disabled) {\n this._disabled = value;\n }\n }\n\n private _disabled: boolean = false;\n\n hasFocus: boolean = false;\n\n get active(): boolean {\n return this.hasFocus || !!this.option.dropdownTrigger?.opened;\n }\n\n private readonly destroyRef = inject(DestroyRef);\n\n ngAfterViewInit(): void {\n this.focusMonitor\n .monitor(this.nativeElement, true)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((result) => (this.hasFocus = !!result));\n\n if (!this.option.dropdownTrigger) return;\n\n this.option.dropdownTrigger.restoreFocus = false;\n\n this.option.dropdownTrigger.dropdownClosed.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.preventShowingTooltip();\n\n const lastDestroyReason = this.option.dropdownTrigger.lastDestroyReason;\n\n if (lastDestroyReason) {\n this.focus(lastDestroyReason === 'keydown' ? 'keyboard' : 'program');\n }\n });\n }\n\n ngOnDestroy(): void {\n this.focusMonitor.stopMonitoring(this.nativeElement);\n }\n\n focus(origin?: FocusOrigin, options?: FocusOptions) {\n if (this.focusMonitor && origin) {\n this.focusMonitor.focusVia(this.nativeElement, origin, options);\n } else {\n this.nativeElement.focus();\n }\n\n // The action lives inside `.kbq-action-container`, which is `display: none` until the option\n // is hovered or keyboard-focused. Focusing a hidden element is a no-op, so `hasFocus` has to\n // reflect what actually happened: assuming success would latch `kbq-action-button-focused`\n // on the option forever, since `FocusMonitor` never emits for an element that never got focus.\n this.hasFocus = this.nativeElement.ownerDocument.activeElement === this.nativeElement;\n }\n\n onClick($event) {\n $event.stopPropagation();\n }\n\n onKeyDown($event) {\n if ([SPACE, ENTER].includes($event.keyCode) && this.option.dropdownTrigger) {\n this.option.dropdownTrigger.openedBy = 'keyboard';\n } else if ($event.shiftKey && $event.keyCode === TAB) {\n this.hasFocus = false;\n\n this.option.focus();\n } else if ($event.keyCode === TAB) {\n return;\n }\n\n $event.preventDefault();\n $event.stopPropagation();\n }\n\n private preventShowingTooltip() {\n if (!this.option.tooltipTrigger) {\n return;\n }\n\n this.option.tooltipTrigger.disabled = true;\n\n setTimeout(() => (this.option.tooltipTrigger.disabled = false));\n }\n}\n\n/**\n * Moves focus from an option to its trailing action button on Tab.\n *\n * Shared by `KbqListOption` and `KbqTreeOption` so the two cannot drift apart. Tab is swallowed only\n * when focus actually landed: the action lives in a `display: none` container until the option is\n * hovered or keyboard-focused, and focusing a hidden element is a no-op, so suppressing Tab there\n * would trap focus on the option.\n */\nexport function kbqFocusOptionActionOnTab(\n $event: KeyboardEvent,\n actionButton: KbqOptionActionComponent | undefined\n): void {\n if (!actionButton || $event.keyCode !== TAB || $event.shiftKey || actionButton.hasFocus) {\n return;\n }\n\n actionButton.focus();\n\n if (actionButton.hasFocus) {\n $event.preventDefault();\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'kbq-action-container',\n template: `\n <div class=\"kbq-action-container__gradient\"></div>\n <div class=\"kbq-action-container__box\">\n <ng-content />\n </div>\n `,\n styleUrls: ['./action-container.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-action-container'\n },\n exportAs: 'kbqActionContainer'\n})\nexport class KbqActionContainer {}\n","import { booleanAttribute, ChangeDetectionStrategy, Component, Input, input, ViewEncapsulation } from '@angular/core';\n\nlet uniqueOptgroupIdCounter = 0;\n\n/**\n * Component that is used to group instances of `kbq-option`.\n * When options aren't provided as `ng-content`, used as a Group Header with styling.\n */\n@Component({\n selector: 'kbq-optgroup',\n templateUrl: 'optgroup.html',\n styleUrls: ['./optgroup.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-optgroup',\n role: 'group',\n '[attr.aria-labelledby]': 'labelId',\n '[class.kbq-disabled]': 'disabled'\n },\n exportAs: 'kbqOptgroup'\n})\nexport class KbqOptgroup {\n readonly label = input<string>(undefined!);\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input({ transform: booleanAttribute })\n get disabled(): boolean {\n return this._disabled;\n }\n\n set disabled(value: boolean) {\n if (value !== this.disabled) {\n this._disabled = value;\n }\n }\n\n private _disabled: boolean = false;\n\n /** Unique id for the underlying label. */\n labelId: string = `kbq-optgroup-label-${uniqueOptgroupIdCounter++}`;\n}\n","<label class=\"kbq-optgroup-label\" [id]=\"labelId\">\n {{ label() }}\n</label>\n<ng-content select=\"kbq-option, kbq-list-option, kbq-timezone-option, ng-container\" />\n","export enum MultipleMode {\n CHECKBOX = 'checkbox',\n KEYBOARD = 'keyboard'\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, input } from '@angular/core';\nimport { KbqColorDirective } from '../../common-behaviors';\n\nexport type KbqPseudoCheckboxState = 'unchecked' | 'checked' | 'indeterminate' | boolean;\n\n/**\n * Component that shows a simplified checkbox without including any kind of \"real\" checkbox.\n * Meant to be used when the checkbox is purely decorative and a large number of them will be\n * included, such as for the options in a multi-select. Uses no SVGs or complex animations.\n * Note that theming is meant to be handled by the parent element, e.g.\n * `kbq-primary .kbq-pseudo-checkbox`.\n *\n * Note that this component will be completely invisible to screen-reader users. This is *not*\n * interchangeable with `<kbq-checkbox>` and should *not* be used if the user would directly\n * interact with the checkbox. The pseudo-checkbox should only be used as an implementation detail\n * of more complex components that appropriately handle selected / checked state.\n * @docs-private\n */\n@Component({\n selector: 'kbq-pseudo-checkbox',\n templateUrl: 'pseudo-checkbox.partial.html',\n styleUrls: ['pseudo-checkbox.scss', 'pseudo-checkbox-tokens.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-pseudo-checkbox',\n '[class.kbq-checkbox_big]': 'big()',\n '[class.kbq-indeterminate]': 'state() === \"indeterminate\"',\n '[class.kbq-checked]': 'state() === true || state() === \"checked\"',\n '[class.kbq-disabled]': 'disabled()'\n },\n preserveWhitespaces: false\n})\nexport class KbqPseudoCheckbox extends KbqColorDirective {\n readonly big = input<boolean>(false);\n\n readonly state = input<KbqPseudoCheckboxState>('unchecked');\n\n readonly disabled = input<boolean>(false);\n}\n","<i class=\"kbq-checkbox-checkmark kbq kbq-check-s_16\"></i>\n<i class=\"kbq-checkbox-mixedmark kbq kbq-minus-s_16\"></i>\n","import { NgModule } from '@angular/core';\nimport { KbqPseudoCheckbox } from './pseudo-checkbox';\n\n@NgModule({\n imports: [KbqPseudoCheckbox],\n exports: [KbqPseudoCheckbox]\n})\nexport class KbqPseudoCheckboxModule {}\n","import { KbqPseudoCheckboxState } from './pseudo-checkbox/pseudo-checkbox';\n\n/**\n * Adapter describing how a component reads and writes selection state for a set of items,\n * so the shared select-all logic can operate regardless of how selection is stored\n * (per-option setter, `SelectionModel` on data nodes, etc.).\n */\nexport interface KbqSelectAllAdapter<T> {\n /** All candidate items, in render/model order. */\n items: readonly T[];\n /** Whether the item may participate (e.g. not disabled, and — for tree — `selectable()`). */\n isSelectable: (item: T) => boolean;\n /** Current selected state of the item. */\n isSelected: (item: T) => boolean;\n /**\n * Applies the new selected state to the item. Must be idempotent — a no-op, with no further side\n * effects (no emitted events, no notifications) — when `selected` already matches the item's current\n * state: {@link toggleSelectAll} calls this for every selectable item, not just the ones whose state\n * actually changes, and relies on implementations to absorb the redundant calls silently.\n */\n setSelected: (item: T, selected: boolean) => void;\n}\n\n/** Options for {@link toggleSelectAll}. */\nexport interface KbqToggleSelectAllOptions {\n /**\n * When `true`, a repeated toggle deselects everything once all selectable items are already\n * selected. When `false` (default), the toggle only ever selects.\n */\n allowDeselect?: boolean;\n}\n\n/**\n * Canonical \"select all / deselect all\" toggle shared by the multi-select components (`Ctrl`/`Cmd` + `A`).\n *\n * Considers only selectable items and selects them all. When `allowDeselect` is `true` and every selectable\n * item is already selected, deselects them all instead; otherwise a repeated call is a no-op. No-op when\n * there are no selectable items.\n *\n * @returns the items whose selected state actually flipped, in input order.\n */\nexport function toggleSelectAll<T>(adapter: KbqSelectAllAdapter<T>, options?: KbqToggleSelectAllOptions): T[] {\n const selectable = adapter.items.filter((item) => adapter.isSelectable(item));\n\n if (selectable.length === 0) {\n return [];\n }\n\n const shouldSelect = !options?.allowDeselect || selectable.some((item) => !adapter.isSelected(item));\n const changed = selectable.filter((item) => adapter.isSelected(item) !== shouldSelect);\n\n selectable.forEach((item) => adapter.setSelected(item, shouldSelect));\n\n return changed;\n}\n\n/**\n * State of a \"select all\" master checkbox over the same items {@link toggleSelectAll} would act on.\n *\n * Considers only selectable items, so items the toggle cannot reach (disabled, non-selectable) never\n * pin the checkbox to `indeterminate`. An empty selectable set reads as `unchecked`: there is nothing\n * to select, and `[].every()` being `true` would otherwise report a full selection.\n */\nexport function getSelectAllState<T>(adapter: KbqSelectAllAdapter<T>): KbqPseudoCheckboxState {\n const selectable = adapter.items.filter((item) => adapter.isSelectable(item));\n\n if (selectable.length === 0) {\n return 'unchecked';\n }\n\n const selected = selectable.filter((item) => adapter.isSelected(item)).length;\n\n if (selected === 0) {\n return 'unchecked';\n }\n\n return selected === selectable.length ? 'checked' : 'indeterminate';\n}\n\n/** Event emitted by the `onSelectAll` outputs when the select-all toggle runs. */\nexport class KbqSelectAllEvent<T, S = unknown> {\n constructor(\n /** Component that emitted the event. */\n public readonly source: S,\n /** The selectable options affected by the toggle. */\n public readonly options: T[],\n /** `true` when all options were selected, `false` when all were deselected. */\n public readonly selected: boolean\n ) {}\n}\n\n/**\n * Whether `Ctrl`/`Cmd` + `A` should select the text of a search `<input>` rather than toggle options.\n *\n * Returns `true` only when the input has text that is not already fully selected (nothing selected,\n * a partial selection, or just a caret). Returns `false` for an empty input (so select-all falls\n * straight through to the options) and when the whole value is already selected (a second press\n * then acts on the options).\n */\nexport function shouldSelectSearchText(input: HTMLInputElement | null | undefined): boolean {\n if (!input) {\n return false;\n }\n\n const length = input.value.length;\n\n if (length === 0) {\n return false;\n }\n\n return !(input.selectionStart === 0 && input.selectionEnd === length);\n}\n","import { ElementRef, InjectionToken } from '@angular/core';\n\nexport interface KbqTitleTextRef {\n textElement?: ElementRef;\n parentTextElement?: ElementRef;\n}\n\nexport const KBQ_TITLE_TEXT_REF = new InjectionToken<KbqTitleTextRef>('KbqTitleTextRef');\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n AfterViewChecked,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n inject,\n InjectionToken,\n Input,\n input,\n OnDestroy,\n Output,\n QueryList,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { ActiveDescendantKeyManager } from '../a11y';\nimport { ENTER, hasModifierKey, SPACE } from '../keycodes';\nimport { KbqPseudoCheckboxModule } from '../selection';\nimport { KBQ_TITLE_TEXT_REF, KbqTitleTextRef } from '../title';\nimport { kbqFocusAndReveal } from '../utils';\nimport { KbqOptgroup } from './optgroup';\n\n/**\n * Option IDs need to be unique across components, so this counter exists outside of\n * the component definition.\n */\nlet uniqueIdCounter = 0;\n\n/** Event object emitted by KbqOption when selected or deselected. */\nexport class KbqOptionSelectionChange<T = KbqOption> {\n constructor(\n public source: T,\n public isUserInput = false\n ) {}\n}\n\n/**\n * Describes a parent component that manages a list of options.\n * Contains properties that the options can inherit.\n * @docs-private\n */\nexport interface KbqOptionParentComponent {\n multiple?: boolean;\n multiSelection?: boolean;\n withVirtualScroll?: boolean;\n keyManager?: ActiveDescendantKeyManager<KbqOption>;\n setSelectedOptionsByClick: (option: KbqOption) => void;\n}\n\n/**\n * Handler that will update scroll position of elements inside overlay\n */\nexport interface KeyboardNavigationHandler {\n /** Scrolls the active option into view. */\n scrollActiveOptionIntoView(): void;\n}\n\n/**\n * Injection token used to provide the parent component to options.\n */\nexport const KBQ_OPTION_PARENT_COMPONENT = new InjectionToken<KbqOptionParentComponent>('KBQ_OPTION_PARENT_COMPONENT');\n\nexport abstract class KbqOptionBase {\n value: any;\n abstract get viewValue(): string;\n abstract get disabled(): boolean;\n abstract set disabled(value: any);\n\n abstract readonly onSelectionChange: EventEmitter<KbqOptionSelectionChange<any>>;\n\n abstract select(): void;\n\n abstract deselect(): void;\n\n /** Emits the selection change event. */\n protected emitSelectionChangeEvent(isUserInput = false): void {\n this.onSelectionChange.emit(new KbqOptionSelectionChange(this, isUserInput));\n }\n}\n\nexport class KbqVirtualOption extends KbqOptionBase {\n get disabled() {\n return this._disabled;\n }\n set disabled(value: any) {\n this._disabled = coerceBooleanProperty(value);\n }\n\n get selected(): boolean {\n return this._selected;\n }\n\n private _selected = false;\n\n get viewValue(): string {\n return this._viewValue ?? this.value;\n }\n\n readonly onSelectionChange = new EventEmitter<KbqOptionSelectionChange<KbqVirtualOption>>();\n\n constructor(\n public value: any,\n private _disabled: boolean = false,\n private readonly _viewValue?: string\n ) {\n super();\n }\n\n select(): void {\n if (!this._selected) {\n this._selected = true;\n\n this.emitSelectionChangeEvent();\n }\n }\n\n deselect(): void {\n if (this._selected) {\n this._selected = false;\n\n this.emitSelectionChangeEvent();\n }\n }\n}\n\n/**\n * Single option inside of a `<kbq-select>` element.\n */\n@Component({\n selector: 'kbq-option',\n imports: [\n KbqPseudoCheckboxModule\n ],\n templateUrl: 'option.html',\n /* Component inherits styles from `list`, so `list` variables are imported as the single source of truth. */\n styleUrls: ['option.scss', 'option-tokens.scss'],\n providers: [\n {\n provide: KBQ_TITLE_TEXT_REF,\n useExisting: KbqOption\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.tabindex]': 'getTabIndex()',\n class: 'kbq-option',\n '[class.kbq-selected]': 'selected',\n '[class.kbq-option-multiple]': 'multiple',\n '[class.kbq-active]': 'active',\n '[class.kbq-disabled]': 'disabled',\n '[id]': 'id',\n\n '(click)': 'handleClick($event)',\n '(mouseenter)': 'onMouseenter()',\n '(mouseleave)': 'onMouseleave()',\n '(keydown)': 'handleKeydown($event)'\n },\n exportAs: 'kbqOption'\n})\nexport class KbqOption extends KbqOptionBase implements AfterViewChecked, OnDestroy, KbqTitleTextRef {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n protected readonly parent = inject<KbqOptionParentComponent>(KBQ_OPTION_PARENT_COMPONENT, { optional: true })!;\n readonly group = inject(KbqOptgroup, { optional: true });\n @ViewChild('kbqTitleText', { static: false }) textElement: ElementRef;\n\n /** The form value of the option. */\n // TODO: Skipped for migration because:\n // Your application code writes to the input. This prevents migration.\n @Input() value: any;\n\n readonly selectable = input<boolean, unknown>(true, { transform: booleanAttribute });\n\n // todo this flag will need to be rethought in the future (added for filter panel)\n readonly userSelect = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get showCheckbox() {\n return this._showCheckbox === undefined ? this.multiple : this._showCheckbox;\n }\n\n set showCheckbox(value) {\n this._showCheckbox = coerceBooleanProperty(value);\n }\n\n private _showCheckbox: boolean;\n\n /** Event emitted when the option is selected or deselected. */\n @Output() readonly onSelectionChange = new EventEmitter<KbqOptionSelectionChange>();\n\n /** Emits when the state of the option changes and any parents have to be notified. */\n readonly stateChanges = new Subject<void>();\n\n /**\n * The displayed value of the option. It is necessary to show the selected option in the\n * select's trigger.\n */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get viewValue(): string {\n return this._viewValue || (this.getHostElement().textContent || '').trim();\n }\n\n set viewValue(value: string) {\n this._viewValue = value;\n }\n\n private _viewValue: string;\n\n /** Whether the wrapping component is in multiple selection mode. */\n get multiple(): boolean {\n return !!this.parent?.multiSelection;\n }\n\n get id(): string {\n return this._id;\n }\n\n private _id = `kbq-option-${uniqueIdCounter++}`;\n\n get selected(): boolean {\n return this._selected;\n }\n\n private _selected = false;\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get disabled() {\n return (this.group && this.group.disabled) || this._disabled;\n }\n\n set disabled(value: any) {\n this._disabled = coerceBooleanProperty(value);\n }\n\n private _disabled = false;\n\n /**\n * Whether or not the option is currently active and ready to be selected.\n * An active option displays styles as if it is focused, but the\n * focus is actually retained somewhere else. This comes in handy\n * for components like autocomplete where focus must remain on the input.\n */\n get active(): boolean {\n return this._active;\n }\n\n private _active = false;\n\n private mostRecentViewValue = '';\n\n /**\n * Whether the pointer is currently over this option. Cleared on `mouseleave` rather than when the\n * option is focused: hovering the option that is already active does not move the key manager's\n * index, so no focus follows and a flag cleared only there would stay armed indefinitely.\n */\n private hoveredByPointer = false;\n ngAfterViewChecked() {\n // Since parent components could be using the option's label to display the selected values\n // (e.g. `kbq-select`) and they don't have a way of knowing if the option's label has changed\n // we have to check for changes in the DOM ourselves and dispatch an event. These checks are\n // relatively cheap, however we still limit them only to selected options in order to avoid\n // hitting the DOM too often.\n if (this._selected) {\n const viewValue = this.viewValue;\n\n if (viewValue !== this.mostRecentViewValue) {\n this.mostRecentViewValue = viewValue;\n this.stateChanges.next();\n }\n }\n }\n\n ngOnDestroy() {\n this.stateChanges.complete();\n }\n\n /** @docs-private */\n getHeight(): number {\n return this.elementRef.nativeElement.getClientRects()[0]?.height ?? 0;\n }\n\n select(emitEvent: boolean = true): void {\n if (!this._selected) {\n this._selected = true;\n\n this.changeDetectorRef.markForCheck();\n if (emitEvent) this.emitSelectionChangeEvent();\n }\n }\n\n deselect(emitEvent: boolean = true): void {\n if (this._selected) {\n this._selected = false;\n\n this.changeDetectorRef.markForCheck();\n if (emitEvent) this.emitSelectionChangeEvent();\n }\n }\n\n /** Moves keyboard focus to this option and reveals it — see {@link kbqFocusAndReveal}. */\n focus(): void {\n kbqFocusAndReveal(this.getHostElement(), this.hoveredByPointer);\n }\n\n /**\n * This method sets display styles on the option to make it appear\n * active. This is used by the ActiveDescendantKeyManager so key\n * events will display the proper options as active on arrow key events.\n */\n setActiveStyles(): void {\n if (!this._active) {\n this._active = true;\n this.changeDetectorRef.markForCheck();\n }\n }\n\n /**\n * This method removes display styles on the option that made it appear\n * active. This is used by the ActiveDescendantKeyManager so key\n * events will display the proper options as active on arrow key events.\n */\n setInactiveStyles(): void {\n if (this._active) {\n this._active = false;\n this.changeDetectorRef.markForCheck();\n }\n }\n\n /** Gets the label to be used when determining whether the option should be focused. */\n getLabel(): string {\n return this.viewValue;\n }\n\n /** @docs-private */\n handleClick(event: MouseEvent): void {\n if (hasModifierKey(event, 'shiftKey')) {\n this.parent.setSelectedOptionsByClick(this);\n } else {\n this.selectViaInteraction();\n }\n }\n\n /** Ensures the option is selected when activated from the keyboard. */\n handleKeydown(event: KeyboardEvent): void {\n // Only claim the event when the option is actually going to react to it: a non-selectable\n // or disabled option has nothing to do with ENTER/SPACE, and swallowing the event anyway\n // would stop it from reaching an ancestor that might (e.g. a custom row built on top of a\n // non-selectable option, like a \"select all\" master checkbox).\n if ((event.keyCode === ENTER || event.keyCode === SPACE) && !this.disabled && this.selectable()) {\n this.selectViaInteraction();\n\n // Prevent the page from scrolling down and form submits.\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n /**\n * `Selects the option while indicating the selection came from the user. Used to\n * determine if the select's view -> model callback should be invoked.`\n */\n selectViaInteraction(): void {\n if (this.userSelect()) return;\n\n if (!this.disabled && this.selectable()) {\n this._selected = this.multiple ? !this._selected : true;\n\n this.changeDetectorRef.markForCheck();\n this.emitSelectionChangeEvent(true);\n }\n }\n\n getTabIndex(): string {\n return this.disabled ? '-1' : '0';\n }\n\n getHostElement(): HTMLElement {\n return this.elementRef.nativeElement;\n }\n\n /** @docs-private */\n protected onMouseenter() {\n if (this.disabled) return;\n\n this.hoveredByPointer = true;\n\n this.parent?.keyManager?.setActiveItem(this);\n }\n\n /** @docs-private */\n protected onMouseleave() {\n this.hoveredByPointer = false;\n }\n}\n\n/**\n * Counts the amount of option group labels that precede the specified option.\n * @param optionIndex Index of the option at which to start counting.\n * @param options Flat list of all of the options.\n * @param optionGroups Flat list of all of the option groups.\n * @docs-private\n */\nexport function countGroupLabelsBeforeOption(\n optionIndex: number,\n options: QueryList<KbqOption>,\n optionGroups: QueryList<KbqOptgroup>\n): number {\n if (optionGroups.length) {\n const optionsArray = options.toArray();\n const groups = optionGroups.toArray();\n\n let groupCounter = 0;\n\n for (let i = 0; i < optionIndex + 1; i++) {\n if (optionsArray[i].group && optionsArray[i].group === groups[groupCounter]) {\n groupCounter++;\n }\n }\n\n return groupCounter;\n }\n\n return 0;\n}\n\n/**\n * Determines the position to which to scroll a panel in order for an option to be into view.\n * @param optionIndex Index of the option to be scrolled into the view.\n * @param optionHeight Height of the options.\n * @param currentScrollPosition Current scroll position of the panel.\n * @param panelHeight Height of the panel.\n * @docs-private\n * @deprecated Unused — an option reveals itself on focus through `KbqOption.focus`, which lets the\n * browser resolve the scroll container instead of computing an offset from a uniform row height. Will be\n * removed in the next major release.\n */\nexport function getOptionScrollPosition(\n optionIndex: number,\n optionHeight: number,\n currentScrollPosition: number,\n panelHeight: number\n): number {\n const optionOffset = optionIndex * optionHeight;\n\n if (optionOffset < currentScrollPosition) {\n return optionOffset;\n }\n\n if (optionOffset + optionHeight > currentScrollPosition + panelHeight) {\n return Math.max(0, optionOffset - panelHeight + optionHeight);\n }\n\n return currentScrollPosition;\n}\n","@if (showCheckbox) {\n <ng-content select=\"kbq-pseudo-checkbox\">\n <kbq-pseudo-checkbox [disabled]=\"disabled\" [state]=\"selected ? 'checked' : 'unchecked'\" />\n </ng-content>\n}\n\n<span #kbqTitleText class=\"kbq-option-text\">\n <ng-content />\n</span>\n","import { NgModule } from '@angular/core';\nimport { KbqPseudoCheckbox } from '../selection';\nimport { KbqOptionActionComponent } from './action';\nimport { KbqOptgroup } from './optgroup';\nimport { KbqOption } from './option';\n\n@NgModule({\n imports: [KbqPseudoCheckbox, KbqOption, KbqOptgroup, KbqOptionActionComponent],\n exports: [KbqOption, KbqOptgroup, KbqOptionActionComponent]\n})\nexport class KbqOptionModule {}\n","import { SharedResizeObserver } from '@angular/cdk/observers/private';\nimport {\n afterNextRender,\n DestroyRef,\n Directive,\n inject,\n InjectionToken,\n input,\n numberAttribute,\n OnInit,\n signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { fromEvent, Observable } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { kbqInjectNativeElement } from '../utils';\n\n/** Shadow visibility state — which of the two shadows should be rendered. */\nexport interface KbqOverflowShadowState {\n /** Whether the top (header) shadow should be visible — content is scrolled past the top. */\n top: boolean;\n /** Whether the bottom (footer) shadow should be visible — more content remains below the fold. */\n bottom: boolean;\n}\n\n/**\n * Source of scroll events and scroll metrics. Can be provided by a component that wraps\n * the scrollable element (e.g. `KbqScrollbar`) so that `KbqOverflowShadowContainer` does\n * not have to subscribe to the native `scroll` event directly.\n */\nexport interface KbqOverflowShadowSource {\n /** Emits whenever the wrapped element scrolls. */\n readonly onScroll: Observable<unknown>;\n /** The element whose `scrollTop`/`clientHeight`/`scrollHeight` drive the shadows, or `null` if not ready yet. */\n getScrollElement(): HTMLElement | null;\n}\n\n/**\n * DI token a scrollable wrapper component can provide to expose itself as the scroll source\n * for a co-located `KbqOverflowShadowContainer` (see `KbqScrollbar`).\n */\nexport const KBQ_OVERFLOW_SHADOW_SOURCE = new InjectionToken<KbqOverflowShadowSource>('KBQ_OVERFLOW_SHADOW_SOURCE');\n\n/**\n * Container directive that sits on the scrollable element. Listens for scroll events and\n * keeps the `overflow` signal up to date, which is then read by `KbqOverflowShadowTop` and\n * `KbqOverflowShadowBottom`.\n *\n * The scroll source is auto-detected: if `KBQ_OVERFLOW_SHADOW_SOURCE` is provided in the\n * host's DI, that source is used; otherwise the native `scroll` event on the host element\n * is observed.\n *\n * In addition to scroll events, the directive observes the scroll source's box-size changes\n * via CDK's `SharedResizeObserver` — this covers layout changes that happen without a scroll\n * and alter the viewport size (modal open/close animation, window resize, reflow that resizes\n * the element). Content that only grows `scrollHeight` without changing the element's box size\n * is not detected by the resize observer; call `checkOverflow()` manually for those cases.\n */\n@Directive({\n selector: '[kbqOverflowShadowContainer]',\n exportAs: 'kbqOverflowShadowContainer'\n})\nexport class KbqOverflowShadowContainer implements OnInit {\n private readonly destroyRef = inject(DestroyRef);\n private readonly hostElement = kbqInjectNativeElement();\n private readonly externalSource = inject(KBQ_OVERFLOW_SHADOW_SOURCE, { optional: true, self: true });\n private readonly sharedResizeObserver = inject(SharedResizeObserver);\n\n /** Optional debounce for scroll events, in milliseconds. Default is 0. */\n readonly debounce = input(0, { transform: numberAttribute });\n\n /** Current shadow state. Updated on every scroll event. */\n readonly overflow = signal<KbqOverflowShadowState>({ top: false, bottom: false });\n\n constructor() {\n afterNextRender(() => {\n this.checkOverflow();\n this.observeResize();\n });\n }\n\n ngOnInit(): void {\n const source$ = this.externalSource\n ? this.externalSource.onScroll\n : fromEvent(this.hostElement, 'scroll', { passive: true });\n\n const stream$ = this.debounce() > 0 ? source$.pipe(debounceTime(this.debounce())) : source$;\n\n stream$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.checkOverflow());\n }\n\n /**\n * Force-rechecks overflow and updates the signal. Calling this manually is normally not\n * necessary — scroll events plus `SharedResizeObserver` cover the standard scenarios. Kept\n * for rare cases when external code knows about a layout change more precisely than the\n * browser observers (e.g. content that only grows `scrollHeight`).\n */\n checkOverflow(): void {\n const source = this.getScrollSource();\n\n if (!source) return;\n\n // `clientHeight` (content-box) is the visible scroll-viewport height. `Math.round` on the\n // bottom comparison absorbs sub-pixel scroll metrics (HiDPI / browser zoom) so the bottom\n // shadow reliably clears at the very bottom instead of lingering on a fractional gap.\n const { scrollTop, clientHeight, scrollHeight } = source;\n\n this.overflow.set({\n top: scrollTop > 0,\n bottom: Math.round(scrollTop + clientHeight) < scrollHeight\n });\n }\n\n private getScrollSource(): HTMLElement | null {\n return this.externalSource ? this.externalSource.getScrollElement() : this.hostElement;\n }\n\n private observeResize(): void {\n const source = this.getScrollSource();\n\n if (!source) return;\n\n this.sharedResizeObserver\n .observe(source)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.checkOverflow());\n }\n}\n\n/**\n * Marker directive for the top-shadow indicator. Linked to the container directive via a\n * template ref: `<header [kbqOverflowShadowTop]=\"containerRef\">`.\n *\n * Sets an inline `box-shadow` on the host element using the value from the `shadow` input\n * (the Koobiq token by default). Consumers can override the shadow from the outside by\n * overriding the token `--kbq-shadow-overflow-normal-bottom` (or whichever token is passed\n * via the `shadow` input) in the relevant cascade scope.\n */\n@Directive({\n selector: '[kbqOverflowShadowTop]',\n host: {\n '[style.box-shadow]': 'ref()?.overflow()?.top ? shadow() : null'\n },\n exportAs: 'kbqOverflowShadowTop'\n})\nexport class KbqOverflowShadowTop {\n /**\n * Reference to the container directive. May be `undefined` if the container has not\n * been rendered yet (e.g. the indicator lives in one @if block and the container in\n * another).\n */\n readonly ref = input<KbqOverflowShadowContainer | undefined>(undefined, { alias: 'kbqOverflowShadowTop' });\n\n /** Value of `box-shadow` when the shadow is active. Defaults to the standard Koobiq token. */\n readonly shadow = input<string>('var(--kbq-shadow-overflow-normal-bottom)');\n}\n\n/**\n * Marker directive for the bottom-shadow indicator. Linked to the container directive via a\n * template ref: `<footer [kbqOverflowShadowBottom]=\"containerRef\">`.\n *\n * Sets an inline `box-shadow` on the host element. See {@link KbqOverflowShadowTop}.\n */\n@Directive({\n selector: '[kbqOverflowShadowBottom]',\n host: {\n '[style.box-shadow]': 'ref()?.overflow()?.bottom ? shadow() : null'\n },\n exportAs: 'kbqOverflowShadowBottom'\n})\nexport class KbqOverflowShadowBottom {\n /** Reference to the container directive. See {@link KbqOverflowShadowTop.ref}. */\n readonly ref = input<KbqOverflowShadowContainer | undefined>(undefined, { alias: 'kbqOverflowShadowBottom' });\n\n /** Value of `box-shadow` when the shadow is active. Defaults to the standard Koobiq token. */\n readonly shadow = input<string>('var(--kbq-shadow-overflow-normal-top)');\n}\n","import {\n CdkScrollable,\n FlexibleConnectedPositionStrategy,\n FlexibleConnectedPositionStrategyOrigin,\n OverlayRef,\n ScrollDispatcher,\n ScrollStrategy\n} from '@angular/cdk/overlay';\nimport { ViewportRuler } from '@angular/cdk/scrolling';\nimport { ElementRef, isDevMode, NgZone } from '@angular/core';\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\n/** Configuration options for `KbqAutoHideScrollStrategy`. */\nexport interface KbqAutoHideScrollStrategyConfig {\n /**\n * Element whose position is tracked against ancestor scroll container boundaries.\n * When omitted, the overlay panel is checked against the viewport instead.\n */\n originElement?: HTMLElement;\n /** Scroll event throttle in ms. Defaults to 20. */\n scrollThrottle?: number;\n}\n\n/** Lifecycle hooks for `KbqAutoHideScrollStrategy`, passed via `kbqAutoHideScrollStrategyFactory`. */\nexport interface KbqAutoHideScrollStrategyHooks {\n /** Called (inside Angular zone) when the tracked element scrolls outside its scroll container boundary. */\n onHide?: () => void;\n}\n\n/**\n * Scroll strategy that repositions the overlay on scroll and reports when the tracked element\n * moves outside its boundary:\n *\n * - With `originElement`: tracks the origin against each ancestor `CdkScrollable` container.\n * - Without `originElement`: tracks the overlay panel against the viewport.\n *\n * Two ways to react to the out-of-bounds event, usable independently or together:\n * - Subscribe to `hide` — a handle for callers that don't control how this strategy is\n * constructed (e.g. reaching into an existing component's `overlayRef.getConfig().scrollStrategy`\n * from the outside).\n * - Pass `onHide` via the factory returned by `kbqAutoHideScrollStrategyFactory` — for callers\n * that construct the strategy themselves.\n */\nexport class KbqAutoHideScrollStrategy implements ScrollStrategy {\n private readonly hideSubject = new Subject<void>();\n\n /** Emits once when the tracked element scrolls outside its boundary. */\n readonly hide: Observable<void> = this.hideSubject.asObservable();\n\n private overlayRef: OverlayRef | null = null;\n private scrollSubscription: Subscription | null = null;\n private originElement: HTMLElement | null = null;\n private ancestorScrollContainers: readonly CdkScrollable[] | null = null;\n\n constructor(\n private readonly scrollDispatcher: ScrollDispatcher,\n private readonly viewportRuler: ViewportRuler,\n private readonly ngZone: NgZone,\n private readonly config: KbqAutoHideScrollStrategyConfig = {},\n private hooks?: KbqAutoHideScrollStrategyHooks\n ) {}\n\n /** @docs-private */\n attach(overlayRef: OverlayRef): void {\n if (this.overlayRef && isDevMode()) {\n throw new Error('KbqAutoHideScrollStrategy: attach() has already been called for this instance.');\n }\n\n this.overlayRef = overlayRef;\n }\n\n /** Subscribes to scroll events and starts repositioning / out-of-bounds detection. */\n enable(): void {\n if (this.scrollSubscription) return;\n\n if (!this.overlayRef) {\n throw new Error('KbqAutoHideScrollStrategy: enable() was called before attach(). Call attach() first.');\n }\n\n const overlayRef = this.overlayRef;\n const { scrollThrottle = 20 } = this.config;\n\n this.originElement = this.config.originElement ?? this.resolveOriginElement(overlayRef);\n this.ancestorScrollContainers = this.originElement\n ? this.scrollDispatcher.getAncestorScrollContainers(this.originElement)\n : null;\n\n this.scrollSubscription = this.scrollDispatcher\n .scrolled(scrollThrottle)\n .pipe(\n filter(\n (scrollable) =>\n !scrollable || !overlayRef.overlayElement.contains(scrollable.getElementRef().nativeElement)\n )\n )\n .subscribe(() => {\n const isOutside = this.originElement\n ? this.isOriginOutsideAncestors(this.originElement)\n : this.isOverlayOutsideViewport(overlayRef);\n\n if (isOutside) {\n this.disable();\n this.ngZone.run(() => {\n this.hideSubject.next();\n this.hooks?.onHide?.();\n });\n\n return;\n }\n\n overlayRef.updatePosition();\n });\n }\n\n /** Unsubscribes from scroll events. */\n disable(): void {\n this.scrollSubscription?.unsubscribe();\n this.scrollSubscription = null;\n }\n\n /** Disables the strategy and completes `hide`. */\n detach(): void {\n this.disable();\n this.hideSubject.complete();\n this.hooks = undefined;\n this.overlayRef = null;\n this.originElement = null;\n this.ancestorScrollContainers = null;\n }\n\n private resolveOriginElement(overlayRef: OverlayRef): HTMLElement | null {\n const positionStrategy = overlayRef.getConfig().positionStrategy;\n\n if (positionStrategy instanceof FlexibleConnectedPositionStrategy) {\n return this.coerceOriginElement(positionStrategy._origin);\n }\n\n return null;\n }\n\n private isOriginOutsideAncestors(originElement: HTMLElement): boolean {\n const originRect = originElement.getBoundingClientRect();\n\n return (this.ancestorScrollContainers ?? []).some((scrollable) =>\n this.isOutsideBounds(originRect, scrollable.getElementRef().nativeElement.getBoundingClientRect())\n );\n }\n\n private isOverlayOutsideViewport(overlayRef: OverlayRef): boolean {\n const overlayRect = overlayRef.overlayElement.getBoundingClientRect();\n const { width, height } = this.viewportRuler.getViewportSize();\n\n return this.isOutsideBounds(overlayRect, { top: 0, left: 0, bottom: height, right: width } as DOMRect);\n }\n\n private isOutsideBounds(\n rect: DOMRect,\n containerRect: DOMRect | Pick<DOMRect, 'top' | 'bottom' | 'left' | 'right'>\n ): boolean {\n return (\n rect.bottom < containerRect.top ||\n rect.top > containerRect.bottom ||\n rect.right < containerRect.left ||\n rect.left > containerRect.right\n );\n }\n\n private coerceOriginElement(raw?: FlexibleConnectedPositionStrategyOrigin): HTMLElement | null {\n if (raw instanceof HTMLElement) {\n return raw;\n } else if (raw instanceof ElementRef && raw.nativeElement instanceof HTMLElement) {\n return raw.nativeElement;\n }\n\n return null;\n }\n}\n\n/**\n * Factory function for `KbqAutoHideScrollStrategy`. Use it directly as a `useFactory` value\n * when providing a component-level scroll strategy token (e.g. `KBQ_POPOVER_SCROLL_STRATEGY`).\n *\n * The returned function accepts an optional `hooks` object (see `KbqAutoHideScrollStrategyHooks`)\n * and an optional `config` (see `KbqAutoHideScrollStrategyConfig`).\n *\n * @example\n * ```ts\n * const createScrollStrategy = kbqAutoHideScrollStrategyFactory(scrollDispatcher, viewportRuler, ngZone);\n * const strategy = createScrollStrategy({ onHide: () => this.hide() }, { originElement });\n * ```\n */\nexport function kbqAutoHideScrollStrategyFactory(\n scrollDispatcher: ScrollDispatcher,\n viewportRuler: ViewportRuler,\n ngZone: NgZone\n): (hooks?: KbqAutoHideScrollStrategyHooks, config?: KbqAutoHideScrollStrategyConfig) => KbqAutoHideScrollStrategy {\n return (hooks?, config?) =>\n new KbqAutoHideScrollStrategy(scrollDispatcher, viewportRuler, ngZone, config ?? {}, hooks);\n}\n","import { ConnectionPositionPair, Overlay, ScrollStrategy } from '@angular/cdk/overlay';\nimport { InjectionToken } from '@angular/core';\n\nexport const POSITION_MAP: { [key: string]: ConnectionPositionPair } = {\n top: {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom'\n },\n topCenter: {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom'\n },\n topLeft: {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom'\n },\n topRight: {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom'\n },\n right: {\n originX: 'end',\n originY: 'center',\n overlayX: 'start',\n overlayY: 'center'\n },\n rightTop: {\n originX: 'end',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'top'\n },\n rightBottom: {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'bottom'\n },\n bottom: {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top'\n },\n bottomCenter: {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top'\n },\n bottomLeft: {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n },\n bottomRight: {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top'\n },\n left: {\n originX: 'start',\n originY: 'center',\n overlayX: 'end',\n overlayY: 'center'\n },\n leftTop: {\n originX: 'start',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'top'\n },\n leftBottom: {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'bottom'\n }\n};\n\nexport const EXTENDED_OVERLAY_POSITIONS = objectValues([\n POSITION_MAP.top,\n POSITION_MAP.topLeft,\n POSITION_MAP.topRight,\n POSITION_MAP.right,\n POSITION_MAP.rightTop,\n POSITION_MAP.rightBottom,\n POSITION_MAP.bottom,\n POSITION_MAP.bottomLeft,\n POSITION_MAP.bottomRight,\n POSITION_MAP.left,\n POSITION_MAP.leftTop,\n POSITION_MAP.leftBottom\n]);\n\nexport const TOP_POSITION_PRIORITY = objectValues([\n POSITION_MAP.top,\n POSITION_MAP.bottom,\n POSITION_MAP.right,\n POSITION_MAP.rightBottom,\n POSITION_MAP.leftBottom,\n POSITION_MAP.bottomLeft,\n POSITION_MAP.bottomRight\n]);\n\nexport const BOTTOM_POSITION_PRIORITY = objectValues([\n POSITION_MAP.bottom,\n POSITION_MAP.top,\n POSITION_MAP.topLeft,\n POSITION_MAP.topRight,\n POSITION_MAP.rightBottom,\n POSITION_MAP.leftBottom\n]);\n\nexport const RIGHT_POSITION_PRIORITY = objectValues([\n POSITION_MAP.right,\n POSITION_MAP.left,\n POSITION_MAP.leftTop,\n POSITION_MAP.leftBottom,\n POSITION_MAP.top,\n POSITION_MAP.bottom\n]);\n\nexport const LEFT_POSITION_PRIORITY = objectValues([\n POSITION_MAP.left,\n POSITION_MAP.right,\n POSITION_MAP.rightTop,\n POSITION_MAP.rightBottom,\n POSITION_MAP.top,\n POSITION_MAP.bottom\n]);\n\nexport const RIGHT_TOP_POSITION_PRIORITY = objectValues([\n POSITION_MAP.rightTop,\n POSITION_MAP.leftTop,\n POSITION_MAP.left,\n POSITION_MAP.leftBottom,\n POSITION_MAP.topLeft,\n POSITION_MAP.bottomLeft\n]);\n\nexport const RIGHT_BOTTOM_POSITION_PRIORITY = objectValues([\n POSITION_MAP.rightBottom,\n POSITION_MAP.leftBottom,\n POSITION_MAP.left,\n POSITION_MAP.leftTop,\n POSITION_MAP.topLeft,\n POSITION_MAP.bottomLeft\n]);\n\nexport const LEFT_TOP_POSITION_PRIORITY = objectValues([\n POSITION_MAP.leftTop,\n POSITION_MAP.rightTop,\n POSITION_MAP.right,\n POSITION_MAP.rightBottom,\n POSITION_MAP.topRight,\n POSITION_MAP.bottomRight\n]);\n\nexport const LEFT_BOTTOM_POSITION_PRIORITY = objectValues([\n POSITION_MAP.leftBottom,\n POSITION_MAP.rightBottom,\n POSITION_MAP.right,\n POSITION_MAP.rightTop,\n POSITION_MAP.topRight,\n POSITION_MAP.bottomRight\n]);\n\nexport const TOP_LEFT_POSITION_PRIORITY = objectValues([\n POSITION_MAP.topLeft,\n POSITION_MAP.topRight,\n POSITION_MAP.bottomLeft,\n POSITION_MAP.bottom,\n POSITION_MAP.bottomRight,\n POSITION_MAP.leftBottom,\n POSITION_MAP.rightBottom\n]);\n\nexport const TOP_RIGHT_POSITION_PRIORITY = objectValues([\n POSITION_MAP.topRight,\n POSITION_MAP.topLeft,\n POSITION_MAP.bottomRight,\n POSITION_MAP.bottom,\n POSITION_MAP.bottomLeft,\n POSITION_MAP.leftBottom,\n POSITION_MAP.rightBottom\n]);\n\nexport const BOTTOM_RIGHT_POSITION_PRIORITY = objectValues([\n POSITION_MAP.bottomRight,\n POSITION_MAP.bottomLeft,\n POSITION_MAP.topRight,\n POSITION_MAP.top,\n POSITION_MAP.topLeft,\n POSITION_MAP.leftTop,\n POSITION_MAP.rightTop\n]);\n\nexport const BOTTOM_LEFT_POSITION_PRIORITY = objectValues([\n POSITION_MAP.bottomLeft,\n POSITION_MAP.bottomRight,\n POSITION_MAP.topLeft,\n POSITION_MAP.top,\n POSITION_MAP.topRight,\n POSITION_MAP.rightTop,\n POSITION_MAP.leftTop\n]);\n\nexport const POSITION_PRIORITY_STRATEGY = {\n top: TOP_POSITION_PRIORITY,\n topLeft: TOP_LEFT_POSITION_PRIORITY,\n topRight: TOP_RIGHT_POSITION_PRIORITY,\n bottom: BOTTOM_POSITION_PRIORITY,\n bottomLeft: BOTTOM_LEFT_POSITION_PRIORITY,\n bottomRight: BOTTOM_RIGHT_POSITION_PRIORITY,\n left: LEFT_POSITION_PRIORITY,\n leftTop: LEFT_TOP_POSITION_PRIORITY,\n leftBottom: LEFT_BOTTOM_POSITION_PRIORITY,\n right: RIGHT_POSITION_PRIORITY,\n rightTop: RIGHT_TOP_POSITION_PRIORITY,\n rightBottom: RIGHT_BOTTOM_POSITION_PRIORITY\n};\n\nexport const POSITION_TO_CSS_MAP: { [key: string]: string } = {\n top: 'top',\n topLeft: 'top-left',\n topRight: 'top-right',\n right: 'right',\n rightTop: 'right-top',\n rightBottom: 'right-bottom',\n left: 'left',\n leftTop: 'left-top',\n leftBottom: 'left-bottom',\n bottom: 'bottom',\n bottomLeft: 'bottom-left',\n bottomRight: 'bottom-right'\n};\n\nexport const KBQ_CUSTOM_SCROLL_STRATEGY_PROVIDER = <T>(\n token: InjectionToken<T>,\n factory: (overlay: Overlay) => () => ScrollStrategy\n) => ({\n provide: token,\n deps: [Overlay],\n useFactory: factory\n});\n\nfunction arrayMap<T, S>(array: T[], iteratee: (item: T, index: number, arr: T[]) => S): S[] {\n let index = -1;\n const length = array === null ? 0 : array.length;\n const result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n\n return result;\n}\n\nfunction baseValues<T>(object: T[], props: string[]): T[] {\n return arrayMap(props, (key) => object[key]);\n}\n\nfunction objectValues<T>(object: T[]): T[] {\n return object === null ? [] : baseValues(object, Object.keys(object));\n}\n","import { coerceCssPixelValue } from '@angular/cdk/coercion';\n\n/**\n * Maximum height of an overlay panel's scrollable content, in pixels. `null` falls back to the\n * `--kbq-select-panel-size-max-height` design token.\n *\n * The cap covers the scrollable list only — a search field or a footer rendered beside it adds to the\n * panel's total height. With a `cdk-virtual-scroll-viewport` the value is an exact height rather than a\n * cap, because the viewport pins both its `min-height` and its `max-height` to the token.\n */\nexport type KbqPanelMaxHeight = number | null;\n\n/**\n * Renders `panelMaxHeight` as a CSS length for the `--kbq-select-panel-size-max-height` token.\n *\n * A non-finite value yields `null` so that Angular removes the inline custom property and the stylesheet\n * default applies again. A negative value is clamped to `0` because `max-height` rejects negative lengths\n * at computed-value time, which would drop the declaration and leave the list unbounded rather than at\n * its default height.\n * @docs-private\n */\nexport function kbqResolvePanelMaxHeightToken(panelMaxHeight: KbqPanelMaxHeight | undefined): string | null {\n // `numberAttribute` coerces `null` and other invalid bindings to `NaN`, so guard on finiteness\n // rather than on `null`, which never reaches us from a template binding.\n return Number.isFinite(panelMaxHeight) ? coerceCssPixelValue(Math.max(panelMaxHeight as number, 0)) : null;\n}\n\n/**\n * Default cap of an overlay panel's scrollable content, in pixels. Mirrors the stylesheet default of\n * `--kbq-select-panel-size-max-height` so that the two cannot drift apart.\n * @docs-private\n */\nexport const KBQ_PANEL_DEFAULT_MAX_HEIGHT = 256;\n\n/**\n * Geometry needed to work out how tall an anchored panel's scrollable list may be.\n * @docs-private\n */\nexport interface KbqPanelSpaceContext {\n /** Viewport-relative top of the element the panel is anchored to. */\n triggerTop: number;\n /** Viewport-relative bottom of the element the panel is anchored to. */\n triggerBottom: number;\n /** Height of the viewport the panel has to fit into. */\n viewportHeight: number;\n /** Margin the overlay keeps from the viewport edge, i.e. `cdkConnectedOverlayViewportMargin`. */\n viewportMargin: number;\n /**\n * Everything in the panel that is not the scrollable list and therefore adds to its total height: the\n * trigger gap, the list padding, a search field and a footer.\n */\n chromeHeight: number;\n}\n\n/**\n * How much room the panel's scrollable list has on each side of the trigger. Negative means it does not fit.\n * @docs-private\n */\nexport interface KbqPanelSideSpace {\n above: number;\n below: number;\n}\n\n/**\n * Measures how much room the panel's scrollable list has on either side of the trigger.\n *\n * Returns `null` for geometry that cannot be trusted — a collapsed trigger rect or a zero-height viewport, which\n * is what a DOM without layout reports, on the server and under jsdom.\n * @docs-private\n */\nexport function kbqResolvePanelSideSpace(context: KbqPanelSpaceContext): KbqPanelSideSpace | null {\n const { triggerTop, triggerBottom, viewportHeight, viewportMargin, chromeHeight } = context;\n\n if (![triggerTop, triggerBottom, viewportHeight, viewportMargin, chromeHeight].every(Number.isFinite)) {\n return null;\n }\n\n if (viewportHeight <= 0 || triggerBottom <= triggerTop) return null;\n\n return {\n above: triggerTop - viewportMargin - chromeHeight,\n below: viewportHeight - triggerBottom - viewportMargin - chromeHeight\n };\n}\n\n/**\n * What the DOM reports about the first row of a trigger that lays its content out in rows.\n * @docs-private\n */\nexport interface KbqTriggerFirstRowMeasurements {\n /** Viewport-relative top of the element the overlay is anchored to. */\n originTop: number;\n /** Viewport-relative bottom of the element the overlay is anchored to. */\n originBottom: number;\n /** Border-box top of the row container. */\n listTop: number;\n /** Border-box bottom of the row container. */\n listBottom: number;\n /** Viewport-relative bottom of the lowest element sitting on the first laid-out row. */\n firstRowBottom: number;\n /** Scroll offset of the row container, so that a scrolled container still reports its own first row. */\n listScrollTop: number;\n}\n\n/**\n * Distance from the trigger's top edge down to where a panel would start if the trigger had a single row —\n * equivalently, the trigger's height with rows 2..N removed.\n *\n * Returns `null` for geometry that cannot be trusted: a collapsed rect (the server, a DOM without layout), or\n * a row container that is not what drives the trigger's height, which a result reaching past the trigger's own\n * bottom edge gives away.\n * @docs-private\n */\nexport function kbqResolveTriggerFirstRowOffset(measurements: KbqTriggerFirstRowMeasurements): number | null {\n const { originTop, originBottom, listTop, listBottom, firstRowBottom, listScrollTop } = measurements;\n\n if (![originTop, originBottom, listTop, listBottom, firstRowBottom, listScrollTop].every(Number.isFinite)) {\n return null;\n }\n\n const originHeight = originBottom - originTop;\n\n if (originHeight <= 0) return null;\n\n // The first row measured in the container's own, unscrolled coordinates, plus the chrome the trigger keeps\n // above and below its rows — the matcher's padding and the field's border.\n const firstRowHeight = firstRowBottom + listScrollTop - listTop;\n const offset = listTop - originTop + firstRowHeight + (originBottom - listBottom);\n\n return offset > 0 && offset <= originHeight ? offset : null;\n}\n\n/**\n * Room the panel's scrollable list has when it is anchored to the trigger's first row instead of to the\n * trigger's bottom edge. The same arithmetic as {@link kbqResolvePanelSideSpace}, on a trigger cut to one row.\n * @docs-private\n */\nexport function kbqResolveOverlapPanelSpace(context: KbqPanelSpaceContext, firstRowOffset: number): number | null {\n const space = kbqResolvePanelSideSpace({ ...context, triggerBottom: context.triggerTop + firstRowOffset });\n\n return space && space.below;\n}\n\n/**\n * Everything the first-row anchor decision needs beyond {@link KbqPanelSpaceContext}.\n * @docs-private\n */\nexport interface KbqPanelAnchorOptions {\n /** Result of {@link kbqResolveTriggerFirstRowOffset}; `null` when there is no row to anchor to. */\n firstRowOffset: number | null;\n /** Height the scrollable list takes with no viewport clamp in force. */\n naturalListHeight: number;\n /** Whether the panel is already anchored to the first row, which widens the band it stays in. */\n anchored?: boolean;\n}\n\n/**\n * Whether the panel should be anchored below the trigger's first row and rendered over the rest of it.\n *\n * Three things have to hold. The trigger must have more than one row, or there is nothing to overlap. It must\n * be taller than the panel, or the room beside it is the better trade and the panel belongs on a side. And\n * the panel must fit there at its full height — the caller adds this as a THIRD `ConnectedPosition`,\n * and when no position fits the overlay falls back to whichever goes off-screen the least, so an anchor that\n * does not fit would outrank `above`/`below` on that fallback and move panels that have no business moving.\n * Gating on the fit keeps the fallback ranking exactly as it is without this anchor.\n *\n * `anchored` widens the height test by one row, so that deselecting a single option cannot bounce a panel\n * sitting right on the boundary across several hundred pixels.\n * @docs-private\n */\nexport function kbqShouldAnchorPanelToFirstRow(\n context: KbqPanelSpaceContext,\n { firstRowOffset, naturalListHeight, anchored = false }: KbqPanelAnchorOptions\n): boolean {\n if (firstRowOffset === null) return false;\n\n if (!Number.isFinite(naturalListHeight)) return false;\n\n // Read off the same rect the space calculation uses, so the two can never disagree.\n const triggerHeight = context.triggerBottom - context.triggerTop;\n\n // A single-row trigger has nothing to overlap.\n if (triggerHeight - firstRowOffset <= 1) return false;\n\n const hysteresis = anchored ? firstRowOffset : 0;\n\n if (triggerHeight + hysteresis <= context.chromeHeight + naturalListHeight) return false;\n\n // The overlay rejects a position whose top edge is off the top of the viewport, which a trigger scrolled\n // past the fold produces.\n if (context.triggerTop + firstRowOffset < 0) return false;\n\n const space = kbqResolveOverlapPanelSpace(context, firstRowOffset);\n\n return space !== null && space >= naturalListHeight;\n}\n","import { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { CdkOverlayOrigin } from '@angular/cdk/overlay';\nimport { ElementRef } from '@angular/core';\n\n/**\n * Default minimum width of an overlay panel, in pixels.\n *\n * Kept in sync by hand with `--kbq-dropdown-size-container-width-min` in `dropdown-tokens.scss`,\n * which expresses the same default for the dropdown's CSS-driven sizing.\n */\nexport const KBQ_PANEL_DEFAULT_MIN_WIDTH = 200;\n\n/**\n * Width of an overlay panel.\n *\n * - `'auto'` — matches the trigger width, but never narrower than `panelMinWidth`.\n * - `number` — an explicit width in pixels. `panelMinWidth` is not applied.\n * - `string` — an explicit CSS width (e.g. `fit-content`, `20rem`). `panelMinWidth` is not applied.\n * - `null`/`''` — the panel sizes to its content, but never narrower than the trigger or `panelMinWidth`.\n */\n// `string & {}` keeps the literal members visible to autocomplete while still allowing any CSS width.\nexport type KbqPanelWidth = 'auto' | number | (string & {}) | null | '';\n\n/** Minimum width of an overlay panel, in pixels. `null` applies no additional minimum. */\nexport type KbqPanelMinWidth = number | null;\n\n/**\n * Maximum width of an overlay panel, in pixels. `null` falls back to the `--kbq-panel-size-width-max`\n * design token.\n *\n * The cap is soft: it limits how far a panel grows with its content, but never makes a panel narrower\n * than its trigger, and never overrides an explicit `panelWidth`.\n */\nexport type KbqPanelMaxWidth = number | null;\n\n/**\n * Anything an overlay panel can be measured against.\n * @docs-private\n */\nexport type KbqPanelWidthOrigin = ElementRef<HTMLElement> | CdkOverlayOrigin | HTMLElement;\n\n/**\n * Resolved size of an overlay pane.\n *\n * Both keys are always present so that the result can be passed straight to `OverlayRef.updateSize()`,\n * which shallow-merges into the existing config — an omitted key would leave a stale value applied.\n * @docs-private\n */\nexport interface KbqResolvedPanelWidth {\n width: number | string;\n minWidth: number | string;\n}\n\n/**\n * Measures the rendered width of a panel's trigger.\n *\n * Uses `getBoundingClientRect()` because `getComputedStyle().width` resolves to the used\n * content-box width regardless of `box-sizing`, so subtracting borders from it double-counts them.\n * @docs-private\n */\nexport function kbqGetPanelWidthOrigin(origin: KbqPanelWidthOrigin): number {\n const element =\n origin instanceof CdkOverlayOrigin\n ? origin.elementRef.nativeElement\n : origin instanceof ElementRef\n ? origin.nativeElement\n : origin;\n\n return element.getBoundingClientRect().width;\n}\n\n/**\n * Resolves `panelWidth` and `panelMinWidth` into the `width` and `minWidth` of the overlay pane.\n *\n * `panelWidth` selects the sizing policy. The \"never narrower than the trigger\" rule belongs to the\n * automatic policies (`null` and `'auto'`); an explicit width is taken at face value.\n * @docs-private\n */\nexport function kbqResolvePanelWidth(\n panelWidth: KbqPanelWidth | undefined,\n panelMinWidth: KbqPanelMinWidth | undefined,\n triggerWidth: number\n): KbqResolvedPanelWidth {\n // `numberAttribute` coerces `null` and other invalid bindings to `NaN`, so guard on finiteness\n // rather than on `null`, which never reaches us from a template binding.\n const min = Number.isFinite(panelMinWidth) ? Math.max(panelMinWidth as number, 0) : 0;\n const floor = Math.max(min, Number.isFinite(triggerWidth) ? triggerWidth : 0);\n\n // Trigger-sized. The floor is resolved here rather than emitted as `minWidth` because\n // `KbqAbstractSelect.setOverlayPosition()` clears `minWidth` on viewport overflow, after having\n // derived the panel offset from the pre-clear width. A floor of `0` means the trigger could not\n // be measured, not that a zero-width panel was asked for, so the width stays unset and the panel\n // sizes to its content.\n if (panelWidth === 'auto') {\n return { width: floor > 0 ? coerceCssPixelValue(floor) : '', minWidth: '' };\n }\n\n // Content-sized. Only `null`/`undefined`/`''` opt in — `0` is an explicit width. A non-finite\n // `panelWidth` (e.g. `NaN` from an upstream computation) is treated the same way rather than\n // reaching the DOM unguarded, mirroring how `panelMinWidth`/`triggerWidth` are handled above.\n if (panelWidth == null || panelWidth === '' || (typeof panelWidth === 'number' && !Number.isFinite(panelWidth))) {\n return { width: '', minWidth: floor };\n }\n\n // Explicit width. `panelMinWidth` is not applied. Rendered as CSS so that a zero survives the\n // truthy check `CdkConnectedOverlay._getWidth()` applies to the width it was given (CDK 22+).\n return { width: coerceCssPixelValue(panelWidth), minWidth: '' };\n}\n","/**\n * A simple (x, y) coordinate. Picked from the DOM's own `DOMPointReadOnly` rather than hand-rolled, so\n * a plain `{ x, y }` literal (e.g. from a `MouseEvent`) satisfies it without constructing a `DOMPoint` —\n * `DOMPoint` isn't implemented in every runtime (e.g. jsdom).\n * @docs-private\n */\nexport type KbqPoint = Pick<DOMPointReadOnly, 'x' | 'y'>;\n\n/**\n * A triangle described by its three vertices.\n * @docs-private\n */\nexport interface KbqTriangle {\n a: KbqPoint;\n b: KbqPoint;\n c: KbqPoint;\n}\n\n/**\n * Whether `point` lies within (or on the edge of) `rect`.\n * @docs-private\n */\nexport function isPointInRect(point: KbqPoint, rect: DOMRect): boolean {\n return point.x >= rect.left && point.x <= rect.right && point.y >= rect.top && point.y <= rect.bottom;\n}\n\n/**\n * Whether `point` lies within (or on the edge of) `triangle`.\n *\n * Uses the sign of the cross product of each triangle edge with the point: the point is inside\n * only if it's consistently on the same side of all three edges.\n * @docs-private\n */\nexport function isPointInTriangle(point: KbqPoint, triangle: KbqTriangle): boolean {\n const { a, b, c } = triangle;\n\n const sign = (p1: KbqPoint, p2: KbqPoint, p3: KbqPoint): number =>\n (p1.x - p3.x) * (p2.y - p3.y) - (p2.x - p3.x) * (p1.y - p3.y);\n\n const d1 = sign(point, a, b);\n const d2 = sign(point, b, c);\n const d3 = sign(point, c, a);\n\n const hasNegative = d1 < 0 || d2 < 0 || d3 < 0;\n const hasPositive = d1 > 0 || d2 > 0 || d3 > 0;\n\n return !(hasNegative && hasPositive);\n}\n\n/**\n * Builds the \"safe triangle\" connecting `origin` (typically the pointer position where it left a\n * trigger) to the top and bottom corners of `targetRect` (typically a submenu panel) that are nearest\n * to `origin` — the submenu can open on either side of its trigger, so the nearest edge is picked by\n * comparing distances rather than assuming a fixed side.\n * @docs-private\n */\nexport function getSafeTriangleVertices(origin: KbqPoint, targetRect: DOMRect): KbqTriangle {\n const nearX =\n Math.abs(targetRect.left - origin.x) <= Math.abs(targetRect.right - origin.x)\n ? targetRect.left\n : targetRect.right;\n\n return { a: origin, b: { x: nearX, y: targetRect.top }, c: { x: nearX, y: targetRect.bottom } };\n}\n","import { OverlayContainer } from '@angular/cdk/overlay';\nimport { ApplicationRef, ElementRef, Injectable, InjectionToken, Provider, inject } from '@angular/core';\n\n/**\n * Reference to the element used to locate the shadow root that should host the CDK overlay container.\n *\n * It can be the shadow host element itself (the common case — the MFE root element) or any element that already\n * lives inside the shadow tree. Provide it directly, as an `ElementRef`, or as a getter (useful when the element is\n * created after the providers are declared, e.g. resolved lazily at bootstrap).\n */\nexport type KbqShadowDomOverlayHost = HTMLElement | ElementRef<HTMLElement> | (() => Element | null | undefined);\n\n/**\n * Element used by {@link KbqShadowDomOverlayContainer} to locate the shadow root that should host overlays.\n *\n * When not provided, the container falls back to the application root component element.\n */\nexport const KBQ_SHADOW_DOM_OVERLAY_HOST = new InjectionToken<KbqShadowDomOverlayHost>('KBQ_SHADOW_DOM_OVERLAY_HOST');\n\n/** Marks the structural overlay stylesheet that {@link KbqShadowDomOverlayContainer} clones into a shadow root. */\nconst overlayStructuralStylesAttribute = 'data-kbq-overlay-structural-styles';\n\n/**\n * `OverlayContainer` that places the `.cdk-overlay-container` inside a shadow root instead of `document.body`.\n *\n * The default CDK `OverlayContainer` always appends its container to `document.body`. When the application is\n * rendered inside a shadow root (e.g. a Module Federation micro-frontend), overlays — toasts, modals, dropdowns,\n * tooltips, etc. — escape the shadow tree into the light DOM. There they lose access to the styles and theme tokens\n * scoped to the shadow root (Koobiq theme tokens are defined on the `.kbq-light` / `.kbq-dark` ancestor), which\n * results in unstyled overlays.\n *\n * This container resolves the target shadow root from {@link KBQ_SHADOW_DOM_OVERLAY_HOST} (or the root component when\n * the token is absent) and relocates the overlay container into it. After relocating, it also clones CDK's own\n * structural overlay stylesheet (`position`/`z-index`/backdrop, `.cdk-overlay-container:empty`) into the shadow root,\n * since those `document.head` styles do not cross the shadow boundary. If no shadow root is found — the common case\n * for an app rendered directly in the light DOM — the container is left on `document.body`, so it is safe to provide\n * unconditionally.\n *\n * Only **open** shadow roots can be resolved: a closed shadow root exposes neither `Element.shadowRoot` nor a\n * `ShadowRoot` from `getRootNode()`, so pass an element that already lives inside the closed tree if you must use one.\n *\n * Note: this fixes the overlay container *placement* and delivers the CDK structural overlay styles. The host\n * application is still responsible for delivering the **Koobiq component/theme styles** (the `.kbq-light` / `.kbq-dark`\n * tokens and component CSS) into the shadow root, since global `document.head` stylesheets do not cascade across a\n * shadow boundary.\n *\n * @see kbqShadowDomOverlayProvider\n */\n@Injectable()\nexport class KbqShadowDomOverlayContainer extends OverlayContainer {\n private readonly host = inject(KBQ_SHADOW_DOM_OVERLAY_HOST, { optional: true });\n private readonly applicationRef = inject(ApplicationRef);\n\n /** @internal CDK lifecycle hook — overridden to relocate the container into a shadow root. */\n protected override _createContainer(): void {\n // Let CDK create the container (and run its test-environment cleanup). It is appended to `document.body`.\n super._createContainer();\n\n const shadowRoot = this.resolveShadowRoot();\n\n if (shadowRoot) {\n // Relocate the container into the shadow root and deliver the structural overlay styles alongside it.\n shadowRoot.appendChild(this._containerElement);\n this.deliverStructuralStyles(shadowRoot);\n } else if (this.host != null) {\n // An explicit host was provided but did not resolve to an open shadow root (wrong element, a closed\n // shadow root, or an element not yet inside a shadow tree). The container stays on `document.body`, so\n // overlays would render unstyled — warn instead of failing silently.\n // eslint-disable-next-line no-console\n console.warn(\n '[KbqShadowDomOverlayContainer] The provided host did not resolve to an open shadow root; the ' +\n 'overlay container stays on document.body. Ensure the host element (or an element inside its ' +\n 'shadow tree) uses an open shadow root.'\n );\n }\n }\n\n /**\n * Clones CDK's structural overlay stylesheet into the shadow root.\n *\n * CDK ships the overlay's structural CSS as a `ViewEncapsulation.None` component, so Angular injects it as a\n * `<style>` in `document.head` synchronously — `OverlayContainer.getContainerElement()` loads it before\n * `_createContainer()` runs. Those rules do not cross the shadow boundary, so a relocated container would\n * otherwise be unpositioned. Cloning the already-injected stylesheet keeps it version-matched to the installed\n * `@angular/cdk` and is idempotent.\n */\n private deliverStructuralStyles(shadowRoot: ShadowRoot): void {\n if (shadowRoot.querySelector(`style[${overlayStructuralStylesAttribute}]`)) {\n return;\n }\n\n const sourceStyle = Array.from(this._document.head.querySelectorAll('style')).find((style) =>\n style.textContent?.includes('.cdk-overlay-pane')\n );\n\n if (sourceStyle) {\n const clone = sourceStyle.cloneNode(true) as HTMLStyleElement;\n\n clone.setAttribute(overlayStructuralStylesAttribute, '');\n shadowRoot.appendChild(clone);\n }\n }\n\n private resolveShadowRoot(): ShadowRoot | null {\n const element = this.resolveHostElement();\n\n if (!element) {\n return null;\n }\n\n // The host can be the shadow host itself (the common case — the MFE root element)...\n const ownShadowRoot = element.shadowRoot;\n\n if (ownShadowRoot) {\n return ownShadowRoot;\n }\n\n // ...or an element that already lives inside the shadow tree.\n const rootNode = element.getRootNode();\n\n return typeof ShadowRoot !== 'undefined' && rootNode instanceof ShadowRoot ? rootNode : null;\n }\n\n private resolveHostElement(): Element | null {\n if (this.host) {\n const resolved = typeof this.host === 'function' ? this.host() : this.host;\n\n if (resolved instanceof ElementRef) {\n return resolved.nativeElement;\n }\n\n return resolved ?? null;\n }\n\n // No explicit host provided — fall back to the application root component element.\n return this.applicationRef.components[0]?.location.nativeElement ?? null;\n }\n}\n\n/**\n * Providers that route all CDK overlays into a shadow root via {@link KbqShadowDomOverlayContainer}.\n *\n * Add it to the bootstrap providers of an application rendered inside a shadow root:\n *\n * ```ts\n * bootstrapApplication(AppComponent, {\n * providers: kbqShadowDomOverlayProvider(() => document.querySelector('my-mfe-root')!)\n * });\n * ```\n *\n * The provider replaces the global `OverlayContainer` token, so it cannot be combined with another custom\n * `OverlayContainer` (e.g. CDK's `FullscreenOverlayContainer`) — the last provider wins. Apps that need both must\n * subclass `KbqShadowDomOverlayContainer`.\n *\n * @param host element (or getter / `ElementRef`) inside the target shadow tree. When omitted, the application root\n * component element is used to resolve the shadow root.\n */\nexport const kbqShadowDomOverlayProvider = (host?: KbqShadowDomOverlayHost): Provider[] => {\n const providers: Provider[] = [{ provide: OverlayContainer, useClass: KbqShadowDomOverlayContainer }];\n\n if (host !== undefined) {\n providers.push({ provide: KBQ_SHADOW_DOM_OVERLAY_HOST, useValue: host });\n }\n\n return providers;\n};\n","import { InjectionToken, Provider, Type } from '@angular/core';\nimport { TooltipSizeArrowSize } from '@koobiq/design-tokens';\nimport { Observable } from 'rxjs';\nimport { KbqEnumValues } from '../utils';\n\nexport interface KbqParentPopup {\n closedStream: Observable<boolean>;\n}\n\n/**\n * InjectionToken for providing component with popup. Used in select and tree-select for tooltip.\n */\nexport const KBQ_PARENT_POPUP = new InjectionToken<KbqParentPopup>('kbq-parent-popup');\n\n/**\n * Contract of a pop-up anchored to the same element as a tooltip — a popover, a dropdown, a select and so on.\n *\n * A tooltip sharing its host with such a pop-up mutes itself while the pop-up is on screen, so the two never\n * compete for the same anchor and the focus restored by the closing pop-up does not re-open the tooltip.\n */\nexport interface KbqSiblingPopup {\n /**\n * Whether the pop-up overlay is currently attached. Unlike a visibility flag it must flip synchronously,\n * both when the overlay is attached and when it is detached.\n */\n readonly isAttached: boolean;\n /** Emits `true` when the pop-up opens and `false` when it closes. */\n readonly openedChange: Observable<boolean>;\n}\n\n/**\n * Element-level token for pop-ups sharing their trigger element with a tooltip. Multi-provided, so a single\n * element can carry several pop-ups at once — for example the filter-bar button with both a popover and a\n * dropdown attached to it.\n */\nexport const KBQ_SIBLING_POPUP = new InjectionToken<readonly KbqSiblingPopup[]>('kbq-sibling-popup');\n\n/**\n * Builds the multi-provider entry a pop-up trigger adds to its own `providers` to announce itself to a\n * tooltip on the same element.\n *\n * Every concrete trigger has to add it on its own: Angular copies `providers` to a subclass only when that\n * subclass has no decorator of its own, so inheriting from an already-announced trigger is not enough.\n */\nexport const kbqSiblingPopupProvider = (popup: Type<KbqSiblingPopup>): Provider => ({\n provide: KBQ_SIBLING_POPUP,\n useExisting: popup,\n multi: true\n});\n\nexport enum PopUpPlacements {\n Top = 'top',\n TopLeft = 'topLeft',\n TopRight = 'topRight',\n Right = 'right',\n RightTop = 'rightTop',\n RightBottom = 'rightBottom',\n Left = 'left',\n LeftTop = 'leftTop',\n LeftBottom = 'leftBottom',\n Bottom = 'bottom',\n BottomLeft = 'bottomLeft',\n BottomRight = 'bottomRight'\n}\n\nexport type KbqPopUpPlacementValues = KbqEnumValues<PopUpPlacements>;\n\nexport type KbqStickToWindowPlacementValues = KbqEnumValues<\n PopUpPlacements.Top | PopUpPlacements.Right | PopUpPlacements.Bottom | PopUpPlacements.Left\n>;\n\nexport enum PopUpVisibility {\n Initial = 'initial',\n Visible = 'visible',\n Hidden = 'hidden'\n}\n\nexport enum PopUpTriggers {\n Click = 'click',\n Focus = 'focus',\n Hover = 'hover',\n Keydown = 'keydown',\n Program = 'program'\n}\n\nexport enum PopUpSizes {\n Small = 'small',\n Medium = 'medium',\n Large = 'large',\n Custom = 'custom'\n}\n\nexport type KbqPopUpSizeValues = KbqEnumValues<PopUpSizes>;\n\n/**\n * Default value when configuring overlay in popups (Autocomplete, Datepicker, Dropdown, Select, Tags Autocomplete,\n * Tags Input, Timezone, TreeSelect).\n */\nexport const defaultOffsetY: number = 4;\n\n/**\n * Pane class applied to a connected overlay whose panel is positioned BELOW its trigger.\n *\n * Used instead of a physical `offsetY` gap: the pane sits flush with the trigger and the visual gap is\n * recreated as transparent `padding-top` inside the pane (see the `kbq-connected-overlay-gap` styles), so the\n * gap is covered by the pane (`pointer-events: auto`) and can no longer be clicked/hovered through.\n */\nexport const KBQ_CONNECTED_OVERLAY_BELOW_CLASS = 'kbq-connected-overlay_below';\n\n/**\n * Pane class applied to a connected overlay whose panel is positioned ABOVE its trigger (flipped).\n *\n * Mirror of {@link KBQ_CONNECTED_OVERLAY_BELOW_CLASS}: the visual gap is recreated as transparent\n * `padding-bottom` inside the pane so the flipped gap is not click/hover-through.\n */\nexport const KBQ_CONNECTED_OVERLAY_ABOVE_CLASS = 'kbq-connected-overlay_above';\n\n/**\n * Pane class applied to a connected overlay whose panel is anchored to the FIRST ROW of a trigger it\n * OVERLAPS — a multiline select whose tag rows have made it taller than the panel itself, with too little\n * room to open on either side of it.\n *\n * The panel ends up where it would for a single-row trigger, so the gap is the same transparent\n * `padding-top` as {@link KBQ_CONNECTED_OVERLAY_BELOW_CLASS}. It is a separate class because the room left\n * for the panel has to be measured from the first row rather than from the trigger's bottom edge, and the\n * class is how the component tells the two apart.\n */\nexport const KBQ_CONNECTED_OVERLAY_OVERLAP_CLASS = 'kbq-connected-overlay_overlap';\n\n/**\n * Variable used for offsetY(X) calculations when applying Angular Overlay\n *\n * @docs-private\n */\nexport const ARROW_BOTTOM_MARGIN_AND_HALF_HEIGHT = Math.round(parseInt(TooltipSizeArrowSize) * Math.sqrt(2));\n","import { FocusTrapInertStrategy } from '@angular/cdk/a11y';\n\n// Need replace EventListenerFocusTrapInertStrategy to EmptyFocusTrapStrategy for focus work correctly with open popover\nexport class EmptyFocusTrapStrategy implements FocusTrapInertStrategy {\n preventFocus(): void {}\n allowFocus(): void {}\n}\n","import { AnimationEvent } from '@angular/animations';\nimport { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport {\n ChangeDetectorRef,\n DestroyRef,\n Directive,\n ElementRef,\n EventEmitter,\n inject,\n OnDestroy,\n Renderer2,\n TemplateRef\n} from '@angular/core';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { PopUpPlacements, PopUpVisibility } from './constants';\nimport { KbqPopUpTrigger } from './pop-up-trigger';\n\n@Directive({\n host: {\n '(mouseenter)': 'hovered.next(true)',\n '(mouseleave)': 'hovered.next(false)'\n }\n})\nexport abstract class KbqPopUp implements OnDestroy {\n protected readonly renderer: Renderer2 = inject(Renderer2);\n protected readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n protected readonly changeDetectorRef: ChangeDetectorRef = inject(ChangeDetectorRef);\n readonly destroyRef = inject(DestroyRef);\n\n /** Stream that emits when the popup item is hovered. */\n readonly hovered = new BehaviorSubject<boolean>(false);\n\n trigger: KbqPopUpTrigger<unknown>;\n header: string | TemplateRef<any>;\n content: string | TemplateRef<any>;\n context: { $implicit: any } | null;\n\n classMap = {};\n\n warning: boolean;\n arrow: boolean;\n defaultPaddings: boolean;\n\n offset: number | null;\n\n visibility = PopUpVisibility.Initial;\n visibleChange = new EventEmitter<boolean>();\n\n protected prefix: string;\n\n /** Subject for notifying that the tooltip has been hidden from the view */\n protected readonly onHideSubject = new Subject<void>();\n\n protected closeOnInteraction: boolean = false;\n\n private showTimeoutId: any;\n private hideTimeoutId: any;\n\n ngOnDestroy() {\n clearTimeout(this.showTimeoutId);\n clearTimeout(this.hideTimeoutId);\n\n this.onHideSubject.complete();\n this.hovered.complete();\n }\n\n isTemplateRef(value: any): boolean {\n return value instanceof TemplateRef;\n }\n\n show(delay: number): void {\n if (this.hideTimeoutId) {\n clearTimeout(this.hideTimeoutId);\n }\n\n this.closeOnInteraction = true;\n\n this.showTimeoutId = setTimeout(() => {\n this.showTimeoutId = undefined;\n\n this.visibility = PopUpVisibility.Visible;\n this.visibleChange.emit(true);\n // Mark for check so if any parent component has set the\n // ChangeDetectionStrategy to OnPush it will be checked anyways\n this.markForCheck();\n\n if (this.trigger.triggerName === 'mouseenter') {\n this.addEventListenerForHide();\n }\n }, delay);\n }\n\n /**\n * Hides the popup after a specified delay.\n *\n * The hide timeout triggers the hiding of the popup by updating visibility and emitting relevant events.\n * Also, it marks for check to ensure proper change detection, especially for parent components with OnPush strategy.\n * @param delay - The delay in milliseconds before hiding the popup.\n */\n hide(delay: number): void {\n if (this.showTimeoutId) {\n clearTimeout(this.showTimeoutId);\n }\n\n this.hideTimeoutId = setTimeout(() => {\n this.hideTimeoutId = undefined;\n this.visibility = PopUpVisibility.Hidden;\n\n this.visibleChange.emit(false);\n this.onHideSubject.next();\n\n // Mark for check so if any parent component has set the\n // ChangeDetectionStrategy to OnPush it will be checked anyways\n this.markForCheck();\n }, delay);\n }\n\n isVisible(): boolean {\n return this.visibility === PopUpVisibility.Visible;\n }\n\n updateClassMap(placement: string, customClass: string, classMap?): void {\n // `customClass` may be a whitespace-separated list of class names; expand it into\n // individual keys so the native `[class]` binding (which doesn't tokenise object keys)\n // applies each class correctly.\n const customClasses: Record<string, boolean> = {};\n\n for (const token of (customClass ?? '').split(/\\s+/).filter(Boolean)) {\n customClasses[token] = true;\n }\n\n this.classMap = {\n [`${this.prefix}_placement-${placement}`]: true,\n ...customClasses,\n ...classMap\n };\n }\n\n /** Returns an observable that notifies when the tooltip has been hidden from view. */\n afterHidden(): Observable<void> {\n return this.onHideSubject.asObservable();\n }\n\n markForCheck(): void {\n this.changeDetectorRef.markForCheck();\n }\n\n detectChanges(): void {\n this.changeDetectorRef.detectChanges();\n }\n\n animationStart() {\n this.closeOnInteraction = false;\n }\n\n animationDone({ toState }: AnimationEvent): void {\n if (toState === PopUpVisibility.Hidden && !this.isVisible()) {\n this.onHideSubject.next();\n }\n\n if (toState === PopUpVisibility.Visible || toState === PopUpVisibility.Hidden) {\n this.closeOnInteraction = true;\n }\n }\n\n handleBodyInteraction(): void {\n if (this.closeOnInteraction) {\n this.hide(0);\n }\n }\n\n protected addEventListenerForHide() {\n this.elementRef.nativeElement.addEventListener('mouseleave', () => this.hide(0));\n }\n\n protected setStickPosition() {\n const oppositeSide = {\n [PopUpPlacements.Top]: PopUpPlacements.Bottom,\n [PopUpPlacements.Bottom]: PopUpPlacements.Top,\n [PopUpPlacements.Right]: PopUpPlacements.Left,\n [PopUpPlacements.Left]: PopUpPlacements.Right\n }[this.trigger.stickToWindow];\n\n if (!this.trigger.stickToWindow || !oppositeSide) return;\n\n this.arrow = false;\n\n if (this.trigger.container) {\n const { width, height } = this.elementRef.nativeElement.getBoundingClientRect();\n const { right, left, top, bottom } = this.trigger.container.getBoundingClientRect();\n\n if (this.trigger.stickToWindow === PopUpPlacements.Right) {\n this.renderer.setStyle(\n this.trigger.overlayRef?.overlayElement,\n 'left',\n coerceCssPixelValue(right - width)\n );\n } else if (this.trigger.stickToWindow === PopUpPlacements.Left) {\n this.renderer.setStyle(this.trigger.overlayRef?.overlayElement, 'left', coerceCssPixelValue(left));\n } else if (this.trigger.stickToWindow === PopUpPlacements.Top) {\n this.renderer.setStyle(this.trigger.overlayRef?.overlayElement, 'top', coerceCssPixelValue(top));\n } else if (this.trigger.stickToWindow === PopUpPlacements.Bottom) {\n this.renderer.setStyle(\n this.trigger.overlayRef?.overlayElement,\n 'top',\n coerceCssPixelValue(bottom - height)\n );\n }\n\n this.renderer.setStyle(this.trigger.overlayRef?.overlayElement, 'right', 'unset');\n this.renderer.setStyle(this.trigger.overlayRef?.overlayElement, 'bottom', 'unset');\n } else {\n this.renderer.setStyle(this.trigger.overlayRef?.overlayElement, this.trigger.stickToWindow, 0);\n this.renderer.setStyle(this.trigger.overlayRef?.overlayElement, oppositeSide, 'unset');\n }\n }\n}\n","import { Renderer2 } from '@angular/core';\n\nexport const applyPopupMargins = (renderer: Renderer2, element: HTMLElement, name: string, value: string) => {\n const classList = element.classList;\n\n if (\n classList.contains(`${name}_placement-top`) ||\n classList.contains(`${name}_placement-top-left`) ||\n classList.contains(`${name}_placement-top-right`)\n ) {\n renderer.setStyle(element, 'margin-bottom', value);\n }\n\n if (\n classList.contains(`${name}_placement-right`) ||\n classList.contains(`${name}_placement-right-top`) ||\n classList.contains(`${name}_placement-right-bottom`)\n ) {\n renderer.setStyle(element, 'margin-left', value);\n }\n\n if (\n classList.contains(`${name}_placement-bottom`) ||\n classList.contains(`${name}_placement-bottom-left`) ||\n classList.contains(`${name}_placement-bottom-right`)\n ) {\n renderer.setStyle(element, 'margin-top', value);\n }\n\n if (\n classList.contains(`${name}_placement-left`) ||\n classList.contains(`${name}_placement-left-top`) ||\n classList.contains(`${name}_placement-left-bottom`)\n ) {\n renderer.setStyle(element, 'margin-right', value);\n }\n};\n","import { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n CdkScrollable,\n ConnectedOverlayPositionChange,\n ConnectionPositionPair,\n FlexibleConnectedPositionStrategy,\n Overlay,\n OverlayConfig,\n OverlayRef,\n ScrollDispatcher,\n ScrollStrategy\n} from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ViewportRuler } from '@angular/cdk/scrolling';\nimport {\n ChangeDetectorRef,\n DestroyRef,\n Directive,\n ElementRef,\n EventEmitter,\n inject,\n NgZone,\n OnDestroy,\n OnInit,\n TemplateRef,\n Type,\n ViewContainerRef\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, interval, Observable, Subscription } from 'rxjs';\nimport { AsyncScheduler } from 'rxjs/internal/scheduler/AsyncScheduler';\nimport { distinctUntilChanged, filter, delay as rxDelay } from 'rxjs/operators';\nimport { ENTER, ESCAPE, SPACE } from '../keycodes';\nimport {\n EXTENDED_OVERLAY_POSITIONS,\n POSITION_MAP,\n POSITION_PRIORITY_STRATEGY,\n POSITION_TO_CSS_MAP\n} from '../overlay/overlay-position-map';\nimport {\n ARROW_BOTTOM_MARGIN_AND_HALF_HEIGHT,\n KbqPopUpPlacementValues,\n KbqSiblingPopup,\n KbqStickToWindowPlacementValues,\n PopUpPlacements,\n PopUpTriggers\n} from './constants';\nimport { KbqPopUp } from './pop-up';\n\ntype KbqPopupTriggerOffset = Pick<ConnectionPositionPair, 'offsetX' | 'offsetY'>;\n\nconst getOffset = (\n { originX, overlayX, originY, overlayY }: ConnectionPositionPair,\n { width, height }: DOMRect\n): KbqPopupTriggerOffset => {\n const offset: KbqPopupTriggerOffset = {};\n const elementWidthHalf = width / 2;\n const elementHeightHalf = height / 2;\n\n // alignment should be applied only if the element is small\n if (ARROW_BOTTOM_MARGIN_AND_HALF_HEIGHT > elementWidthHalf) {\n const PADDING = ARROW_BOTTOM_MARGIN_AND_HALF_HEIGHT - elementWidthHalf;\n\n if (originX === overlayX) {\n if (originX === 'start') {\n offset.offsetX = -PADDING;\n }\n\n if (originX === 'end') {\n offset.offsetX = PADDING;\n }\n }\n }\n\n // alignment should be applied only if the element is small\n if (ARROW_BOTTOM_MARGIN_AND_HALF_HEIGHT > elementHeightHalf) {\n const PADDING = ARROW_BOTTOM_MARGIN_AND_HALF_HEIGHT - elementHeightHalf;\n\n if (originY === overlayY) {\n if (originY === 'top') {\n offset.offsetY = -PADDING;\n }\n\n if (originY === 'bottom') {\n offset.offsetY = PADDING;\n }\n }\n }\n\n return offset;\n};\n\n/**\n * Abstract base directive for hover/focus/click-triggered pop-ups (e.g. tooltip and popover). It manages the\n * CDK overlay lifecycle, binds the trigger event listeners, resolves placement via a flexible connected position\n * strategy, and controls show/hide timing. Concrete subclasses supply the pop-up component type, its content,\n * and the overlay configuration.\n */\n@Directive({\n host: {\n '(mouseenter)': 'hovered.next(true)',\n '(mouseleave)': 'hovered.next(false)'\n }\n})\nexport abstract class KbqPopUpTrigger<T> implements OnInit, OnDestroy, KbqSiblingPopup {\n /** Stream that emits when the popupTrigger is hovered.\n * @docs-private */\n readonly hovered = new BehaviorSubject<boolean>(false);\n\n /** RxJS scheduler that drives the hide timeout; `undefined` falls back to the default async scheduler.\n * @docs-private */\n protected readonly scheduler = inject(AsyncScheduler, { optional: true }) || undefined;\n /** CDK Overlay service used to create and position the pop-up overlay.\n * @docs-private */\n protected readonly overlay: Overlay = inject(Overlay);\n /** Reference to the host element the pop-up is anchored to.\n * @docs-private */\n protected readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n /** Angular zone, used to run the hide timer outside Angular and re-enter when hiding.\n * @docs-private */\n protected readonly ngZone: NgZone = inject(NgZone);\n /** CDK ScrollDispatcher, used to track ancestor scroll containers so the pop-up repositions on scroll.\n * @docs-private */\n protected readonly scrollDispatcher: ScrollDispatcher = inject(ScrollDispatcher);\n /** CDK ViewportRuler, used to re-apply the stick-to-window position on window resize.\n * @docs-private */\n protected readonly viewportRuler: ViewportRuler = inject(ViewportRuler);\n /** View container the pop-up component portal is attached to.\n * @docs-private */\n protected readonly hostView: ViewContainerRef = inject(ViewContainerRef);\n /** Text direction (LTR/RTL) applied to the overlay when a `Directionality` is available.\n * @docs-private */\n protected readonly direction = inject(Directionality, { optional: true });\n /** Destroy reference used to auto-unsubscribe streams when the directive is destroyed.\n * @docs-private */\n protected readonly destroyRef = inject(DestroyRef);\n /** Nearest `CdkScrollable` ancestor, if any.\n * @docs-private */\n protected readonly scrollable = inject(CdkScrollable, { optional: true });\n /** Factory returning the overlay scroll strategy; provided by the concrete subclass.\n * @docs-private */\n protected abstract scrollStrategy: () => ScrollStrategy;\n\n /** Optional element used to anchor and measure the pop-up instead of the host element.\n * @docs-private */\n protected externalNativeElement: HTMLElement;\n\n /** Change detector used to refresh the trigger when its open state changes. */\n private popUpChangeDetectorRef = inject(ChangeDetectorRef);\n\n /** Whether the pop-up overlay is currently open. */\n get isOpen(): boolean {\n return this._isOpen;\n }\n\n set isOpen(value: boolean) {\n this._isOpen = value;\n\n this.popUpChangeDetectorRef.markForCheck();\n }\n\n /** Backing field for `isOpen`. */\n private _isOpen: boolean = false;\n\n /**\n * Whether the pop-up overlay is currently attached.\n *\n * Unlike `isOpen`, which follows the visibility of the pop-up component and therefore lags a task behind\n * `show()`/`hide()`, this flips synchronously — it is the window during which the overlay (and its\n * backdrop) is present in the DOM. Part of the {@link KbqSiblingPopup} contract.\n */\n get isAttached(): boolean {\n return !!this.instance;\n }\n\n /** Emits `true` when the pop-up opens and `false` when it closes. Part of the {@link KbqSiblingPopup} contract. */\n get openedChange(): Observable<boolean> {\n return this.visibleChange;\n }\n\n /** Delay in milliseconds before the pop-up is shown.\n * @docs-private */\n enterDelay: number = 0;\n /** Delay in milliseconds before the pop-up is hidden.\n * @docs-private */\n leaveDelay: number = 0;\n /** Name of the DOM event that last triggered show/hide (e.g. `mouseenter`, `focus`, `click`).\n * @docs-private */\n triggerName: string;\n /** Reference to the created overlay, or `null` when no overlay exists.\n * @docs-private */\n overlayRef: OverlayRef | null;\n /** Placement used to keep the pop-up stuck within the window bounds.\n * @docs-private */\n stickToWindow: KbqStickToWindowPlacementValues;\n /** Host container element of the pop-up.\n * @docs-private */\n container: HTMLElement;\n /** Whether the pop-up is disabled and therefore never shown; implemented by the subclass.\n * @docs-private */\n abstract disabled: boolean;\n /** Whether the arrow/pointer is rendered; implemented by the subclass.\n * @docs-private */\n abstract arrow: boolean;\n /** Space/comma-separated list of trigger events (`hover`, `focus`, `click`, `keydown`); implemented by the subclass.\n * @docs-private */\n abstract trigger: string;\n /** Extra CSS class applied to the pop-up; implemented by the subclass.\n * @docs-private */\n abstract customClass: string;\n /** Pop-up content as a string or template; implemented by the subclass.\n * @docs-private */\n abstract content: string | TemplateRef<any>;\n /** Emits when the resolved placement changes; implemented by the subclass.\n * @docs-private */\n abstract placementChange: EventEmitter<string>;\n /** Emits when the pop-up visibility changes; implemented by the subclass.\n * @docs-private */\n abstract visibleChange: EventEmitter<boolean>;\n /** CSS selector of the element used as the overlay's transform origin; implemented by the subclass.\n * @docs-private */\n protected abstract originSelector: string;\n /** Base overlay configuration (panel classes, etc.); implemented by the subclass.\n * @docs-private */\n protected abstract overlayConfig: OverlayConfig;\n /** Current resolved placement of the pop-up.\n * @docs-private */\n protected placement: KbqPopUpPlacementValues = PopUpPlacements.Top;\n /** Ordered list of fallback placements to try before the default priority.\n * @docs-private */\n protected placementPriority: string | string[] | null = null;\n /** Whether the pop-up is currently visible.\n * @docs-private */\n protected visible = false;\n /** Backing field for the subclass `content` input.\n * @docs-private */\n protected _content: string | TemplateRef<any>;\n /** Backing field for the subclass `disabled` input.\n * @docs-private */\n protected _disabled: boolean;\n /** Backing field for the subclass `customClass` input.\n * @docs-private */\n protected _customClass: string;\n /** Component portal attached to the overlay to render the pop-up.\n * @docs-private */\n protected portal: ComponentPortal<T>;\n /** Currently attached pop-up component instance, or `null` when closed.\n * @docs-private */\n protected instance: any | null;\n /** Map of event name to the handler currently bound on the host element.\n * @docs-private */\n protected listeners = new Map<string, EventListener>();\n /** Subscription to the streams that should close the pop-up.\n * @docs-private */\n protected closingActionsSubscription: Subscription;\n /** Map of placement name to its CDK connected position pair.\n * @docs-private */\n protected readonly availablePositions: { [key: string]: ConnectionPositionPair } = POSITION_MAP;\n /** Last mouse event, used to position the pop-up relative to the cursor.\n * @docs-private */\n protected mouseEvent?: MouseEvent;\n /** Flexible connected position strategy driving the overlay.\n * @docs-private */\n protected strategy: FlexibleConnectedPositionStrategy;\n\n /** Hide pop-up with timeout. Need if you want to show pop-up after leaving trigger\n * @docs-private */\n protected hideWithTimeout: boolean = false;\n\n /** prevents closure by any event\n * @docs-private */\n protected preventClose: boolean = false;\n\n /** Applies the placement (and modifier) CSS classes to the open pop-up; implemented by the subclass.\n * @docs-private */\n abstract updateClassMap(newPlacement?: string): void;\n\n /** Pushes the current inputs (content, arrow, offset, …) into the open pop-up; implemented by the subclass.\n * @docs-private */\n abstract updateData(): void;\n\n /** Returns the stream of events that should close the pop-up; implemented by the subclass.\n * @docs-private */\n abstract closingActions(): Observable<any>;\n\n /** Returns the component type to attach as the pop-up overlay; implemented by the subclass.\n * @docs-private */\n abstract getOverlayHandleComponentType(): Type<T>;\n\n /** Binds the DOM event listeners for the configured triggers. */\n ngOnInit(): void {\n this.initListeners();\n }\n\n /** Disposes the overlay and removes all bound event listeners. */\n ngOnDestroy(): void {\n this.overlayRef?.dispose();\n\n this.listeners.forEach(this.removeEventListener);\n\n this.listeners.clear();\n }\n\n /** Sets the placement (falling back to `Top` on an unknown value) and refreshes the classes and position.\n * @docs-private */\n updatePlacement(value: KbqPopUpPlacementValues) {\n if (POSITION_TO_CSS_MAP[value]) {\n this.placement = value;\n\n this.updateClassMap();\n } else {\n this.placement = PopUpPlacements.Top;\n\n // eslint-disable-next-line no-console\n console.warn(`Unknown position: ${value}. Will used default position: ${this.placement}`);\n }\n\n if (this.visible) {\n this.updatePosition();\n }\n }\n\n /** Sets the ordered list of fallback placements, or clears it when the value is empty.\n * @docs-private */\n updatePlacementPriority(value) {\n if (value && value.length > 0) {\n this.placementPriority = value;\n } else {\n this.placementPriority = null;\n }\n }\n\n /** Coerces and applies an external visibility value by showing or hiding the pop-up when it changes.\n * @docs-private */\n updateVisible(externalValue: boolean) {\n const value = coerceBooleanProperty(externalValue);\n\n if (this.visible !== value) {\n this.visible = value;\n\n if (value) {\n this.show();\n } else {\n this.hide();\n }\n }\n }\n\n /** Closes the pop-up when `Escape` is pressed while it is open. Bound to the host `keydown` event.\n * @docs-private */\n keydownHandler(event: KeyboardEvent) {\n if (this.isOpen && event.keyCode === ESCAPE) {\n this.hide();\n }\n }\n\n /** Hides the pop-up. Bound to the host `touchend` event.\n * @docs-private */\n touchendHandler() {\n this.hide();\n }\n\n /** Creates the overlay (if needed) and shows the pop-up after `delay` ms, wiring its visibility stream.\n * @docs-private */\n show(delay: number = this.enterDelay): void {\n if (this.disabled || this.instance) {\n return;\n }\n\n this.overlayRef = this.createOverlay();\n this.subscribeOnClosingActions();\n this.detach();\n\n this.portal = this.portal || new ComponentPortal(this.getOverlayHandleComponentType(), this.hostView);\n\n this.instance = this.overlayRef.attach(this.portal).instance as KbqPopUp;\n\n this.instance.trigger = this;\n\n this.instance.afterHidden().pipe(takeUntilDestroyed(this.destroyRef)).subscribe(this.detach);\n\n this.updateClassMap();\n\n this.updateData();\n\n this.instance.visibleChange\n .pipe(distinctUntilChanged(), takeUntilDestroyed(this.destroyRef))\n .subscribe((value) => {\n this.visible = value;\n this.visibleChange.emit(value);\n this.isOpen = value;\n });\n\n this.updatePosition();\n\n this.instance.show(delay);\n\n // The position strategy re-applies the overlay position on window resize (its ViewportRuler\n // subscription is created inside OverlayRef.attach(), i.e. before this one), wiping the manual\n // styles written by setStickPosition. Re-apply them after the strategy has run.\n // No-op when stickToWindow is not set.\n this.viewportRuler\n .change()\n .pipe(takeUntilDestroyed(this.instance.destroyRef))\n .subscribe(() => this.instance?.setStickPosition());\n\n if (this.hideWithTimeout && this.trigger.includes(PopUpTriggers.Hover)) {\n this.ngZone.runOutsideAngular(() => {\n interval(this.leaveDelay, this.scheduler)\n .pipe(\n filter(() => this.trigger.includes(PopUpTriggers.Hover)),\n filter(() => !this.hovered.getValue() && !this.instance?.hovered.getValue()),\n takeUntilDestroyed(this.instance?.destroyRef)\n )\n .subscribe(() => this.hide());\n });\n }\n }\n\n /** Hides the pop-up after `delay` ms, honoring `preventClose` and the hover state on mouseleave.\n * @docs-private */\n hide(delay: number = this.leaveDelay) {\n if (this.preventClose) return;\n\n if (\n (this.instance && this.triggerName !== 'mouseleave') ||\n (this.triggerName === 'mouseleave' && !this.instance?.hovered.getValue())\n ) {\n this.ngZone.run(() => this.instance?.hide(delay));\n }\n }\n\n /** Detaches the overlay (if attached) and clears the current pop-up instance.\n * @docs-private */\n detach = (): void => {\n if (this.overlayRef?.hasAttached()) {\n this.overlayRef.detach();\n }\n\n this.instance = null;\n };\n\n /** Create the overlay config and position strategy\n * @docs-private */\n createOverlay(): OverlayRef {\n if (this.overlayRef) {\n return this.overlayRef;\n }\n\n // Create connected position strategy that listens for scroll events to reposition.\n this.strategy = this.overlay\n .position()\n .flexibleConnectedTo(this.getNativeElement())\n .withTransformOriginOn(this.originSelector)\n .withFlexibleDimensions(false)\n .withPositions([...EXTENDED_OVERLAY_POSITIONS])\n .withLockedPosition()\n .withScrollableContainers(this.scrollDispatcher.getAncestorScrollContainers(this.getNativeElement()));\n\n this.strategy.positionChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(this.onPositionChange);\n\n this.overlayRef = this.overlay.create({\n ...this.overlayConfig,\n direction: this.direction || undefined,\n positionStrategy: this.strategy,\n scrollStrategy: this.scrollStrategy()\n });\n\n this.subscribeOnClosingActions();\n\n this.overlayRef.detachments().pipe(takeUntilDestroyed(this.destroyRef)).subscribe(this.detach);\n\n return this.overlayRef;\n }\n\n /** Resets the overlay position origin back to the host element.\n * @docs-private */\n resetOrigin() {\n this.strategy.setOrigin(this.getNativeElement());\n }\n\n /** Maps the CDK connection position back to a placement name, emits `placementChange`, and updates classes.\n * @docs-private */\n onPositionChange = ($event: ConnectedOverlayPositionChange): void => {\n if (!this.instance) return;\n\n let newPlacement = this.placement;\n\n const { originX, originY, overlayX, overlayY } = $event.connectionPair;\n\n Object.keys(this.availablePositions).some((key) => {\n if (\n originX === this.availablePositions[key].originX &&\n originY === this.availablePositions[key].originY &&\n overlayX === this.availablePositions[key].overlayX &&\n overlayY === this.availablePositions[key].overlayY\n ) {\n newPlacement = key as PopUpPlacements;\n\n return true;\n }\n\n return false;\n });\n\n this.placementChange.emit(newPlacement);\n\n this.updateClassMap(newPlacement);\n\n this.instance.detectChanges();\n };\n\n /** Rebinds the host DOM listeners (click/hover/focus/keydown) according to the configured triggers.\n * @docs-private */\n initListeners() {\n this.clearListeners();\n\n if (this.trigger.includes(PopUpTriggers.Click)) {\n this.listeners.set(...this.createListener('click', this.show));\n }\n\n if (this.trigger.includes(PopUpTriggers.Hover)) {\n this.listeners\n .set(...this.createListener('mouseenter', this.show))\n .set(...this.createListener('mouseleave', this.getMouseLeaveListener()));\n }\n\n if (this.trigger.includes(PopUpTriggers.Focus)) {\n this.listeners\n .set(...this.createListener('focus', this.show))\n .set(...this.createListener('blur', this.hide));\n }\n\n if (this.trigger.includes(PopUpTriggers.Keydown)) {\n this.listeners.set('keydown', (event) => {\n if (event instanceof KeyboardEvent && [ENTER, SPACE].includes(event.keyCode)) {\n setTimeout(() => this.show());\n }\n });\n }\n\n this.listeners.forEach(this.addEventListener);\n }\n\n /** Returns the `mouseleave` handler — a delayed hide when `hideWithTimeout` is set, otherwise an immediate hide.\n * @docs-private */\n getMouseLeaveListener() {\n if (this.hideWithTimeout) {\n return () => setTimeout(() => this.hide(), this.leaveDelay);\n }\n\n return this.hide;\n }\n\n /** Updates the position of the current popover.\n * @docs-private */\n updatePosition(reapplyPosition: boolean = false) {\n this.overlayRef = this.createOverlay();\n\n this.subscribeOnClosingActions();\n\n const position = (this.overlayRef.getConfig().positionStrategy as FlexibleConnectedPositionStrategy)\n .withPositions(this.getAdjustedPositions())\n .withPush(true);\n\n if (reapplyPosition) {\n setTimeout(() => position.reapplyLastPosition());\n }\n }\n\n /** Moves browser focus to the pop-up's native element.\n * @docs-private */\n focus() {\n this.getNativeElement().focus();\n }\n\n /** Returns the element the pop-up is bound to: the external element when set, otherwise the host element.\n * @docs-private */\n getNativeElement(): HTMLElement {\n return this.externalNativeElement || this.elementRef.nativeElement;\n }\n\n /** Sets an external element to anchor and measure the pop-up against instead of the host element.\n * @docs-private */\n setExternalNativeElement(value: HTMLElement) {\n this.externalNativeElement = value;\n }\n\n /**\n * Returns a list of positions that are aligned with the element's dimensions and offsets.\n * @docs-private */\n protected getAdjustedPositions(): ConnectionPositionPair[] {\n const res: ConnectionPositionPair[] = [];\n\n for (const pos of this.getPrioritizedPositions()) {\n const offset: KbqPopupTriggerOffset = this.arrow\n ? getOffset(pos, this.getNativeElement().getBoundingClientRect())\n : {};\n\n res.push({\n ...pos,\n ...offset\n });\n }\n\n return res;\n }\n\n /** Maps a priority placement value (or array of values) to the matching connected position pairs.\n * @docs-private */\n protected getPriorityPlacementStrategy(value: string | string[]): ConnectionPositionPair[] {\n const result: ConnectionPositionPair[] = [];\n const possiblePositions = Object.keys(this.availablePositions);\n\n if (Array.isArray(value)) {\n value.forEach((position: string) => {\n if (possiblePositions.includes(position)) {\n result.push(this.availablePositions[position]);\n }\n });\n } else if (possiblePositions.includes(value)) {\n result.push(this.availablePositions[value]);\n }\n\n return result;\n }\n\n /** Returns the positions to try: the custom `placementPriority` when set, otherwise the default strategy.\n * @docs-private */\n protected getPrioritizedPositions() {\n if (this.placementPriority) {\n return this.getPriorityPlacementStrategy(this.placementPriority);\n }\n\n return POSITION_PRIORITY_STRATEGY[this.placement];\n }\n\n /** Removes all bound host event listeners and clears the listener map.\n * @docs-private */\n protected clearListeners() {\n this.listeners.forEach(this.removeEventListener);\n\n this.listeners.clear();\n }\n\n /** Wraps a trigger handler so it records the active trigger name and mouse event before running. */\n private createListener(name: string, listener: () => void): [string, (event: unknown) => void] {\n return [\n name,\n (event: unknown) => {\n this.triggerName = name;\n this.saveMouseEvent(event as MouseEvent);\n\n return listener.call(this);\n }\n ];\n }\n\n /** Remembers the last mouse event on `mouseenter`, used for cursor-relative positioning. */\n private saveMouseEvent(event: MouseEvent) {\n if (this.triggerName === 'mouseenter') {\n this.mouseEvent = event;\n }\n }\n\n /** Binds a single event listener to the pop-up's native element. */\n private addEventListener = (listener: EventListener, event: string) => {\n this.getNativeElement().addEventListener(event, listener);\n };\n\n /** Unbinds a single event listener from the pop-up's native element. */\n private removeEventListener = (listener: EventListener, event: string) => {\n this.getNativeElement().removeEventListener(event, listener);\n };\n\n /** (Re)subscribes to the closing-action streams and hides the pop-up, ignoring prevented click events. */\n private subscribeOnClosingActions() {\n this.closingActionsSubscription?.unsubscribe();\n\n this.closingActionsSubscription = this.closingActions()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .pipe(rxDelay(0))\n .subscribe((event) => {\n if (event?.type === 'click' && event.kbqPopoverPreventHide) {\n return;\n }\n\n this.hide();\n });\n }\n}\n","import { Overlay, RepositionScrollStrategy, ScrollStrategy } from '@angular/cdk/overlay';\nimport { inject, InjectionToken } from '@angular/core';\n\n/**\n * Minimum option count threshold for displaying select search.\n * Search is hidden when fewer options are available.\n */\nexport const KBQ_SELECT_SEARCH_MIN_OPTIONS_THRESHOLD = 10;\n\n/**\n * The select panel will only \"fit\" inside the viewport if it is positioned at\n * this value or more away from the viewport boundary.\n */\nexport const SELECT_PANEL_VIEWPORT_PADDING = 8;\n\n/**\n * Injection token that determines the scroll handling while a select is open.\n *\n * The root default keeps the select usable when it is reached outside `KbqSelectModule`'s injector - imported\n * as a bare standalone component, pulled in through another standalone component (`KbqTimezoneSelect`,\n * `KbqCalendarHeader`), or rendered in a component built from the root injector, as `KbqModalService` does.\n * Providing the token anywhere still wins over this default.\n */\nexport const KBQ_SELECT_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>('kbq-select-scroll-strategy', {\n providedIn: 'root',\n factory: () => kbqSelectScrollStrategyProviderFactory(inject(Overlay))\n});\n\n/** @docs-private */\nexport function kbqSelectScrollStrategyProviderFactory(overlay: Overlay): () => RepositionScrollStrategy {\n return () => overlay.scrollStrategies.reposition();\n}\n\n/** @docs-private */\nexport const KBQ_SELECT_SCROLL_STRATEGY_PROVIDER = {\n provide: KBQ_SELECT_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: kbqSelectScrollStrategyProviderFactory\n};\n","import { CdkConnectedOverlay, ConnectedPosition } from '@angular/cdk/overlay';\nimport {\n AfterContentInit,\n booleanAttribute,\n ChangeDetectorRef,\n Directive,\n ElementRef,\n EventEmitter,\n inject,\n input,\n OnDestroy,\n Signal,\n viewChild\n} from '@angular/core';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { KBQ_FORM_FIELD_REF, KbqFormFieldRef } from '../form-field';\nimport { END, ESCAPE, HOME, SPACE } from '../keycodes';\nimport {\n KBQ_PANEL_DEFAULT_MAX_HEIGHT,\n KbqPanelSpaceContext,\n kbqResolveTriggerFirstRowOffset,\n kbqShouldAnchorPanelToFirstRow\n} from '../overlay/panel-height';\nimport {\n kbqGetPanelWidthOrigin,\n KbqPanelMinWidth,\n KbqPanelWidth,\n KbqPanelWidthOrigin,\n kbqResolvePanelWidth\n} from '../overlay/panel-width';\nimport { KBQ_CONNECTED_OVERLAY_OVERLAP_CLASS } from '../pop-up/constants';\nimport { KBQ_WINDOW } from '../tokens';\nimport { KBQ_SELECT_SEARCH_MIN_OPTIONS_THRESHOLD, SELECT_PANEL_VIEWPORT_PADDING } from './constants';\n\n@Directive({\n selector: 'kbq-select-trigger, [kbq-select-trigger]'\n})\nexport class KbqSelectTrigger {}\n\n@Directive({\n selector: 'kbq-select-matcher, [kbq-select-matcher]'\n})\nexport class KbqSelectMatcher {\n readonly useDefaultHandlers = input<boolean, unknown>(true, { transform: booleanAttribute });\n}\n\n@Directive({\n selector: '[kbq-select-search-empty-result]',\n host: {\n class: 'kbq-select-search-empty-result kbq-select__no-options-message'\n },\n exportAs: 'kbqSelectSearchEmptyResult'\n})\nexport class KbqSelectSearchEmptyResult {}\n\n@Directive({\n selector: 'kbq-select-footer, [kbq-select-footer]',\n host: { class: 'kbq-select__footer' }\n})\nexport class KbqSelectFooter {}\n\n@Directive({\n selector: '[kbqSelectSearch]',\n host: {\n '(keydown)': 'handleKeydown($event)'\n },\n exportAs: 'kbqSelectSearch'\n})\nexport class KbqSelectSearch implements AfterContentInit, OnDestroy {\n protected formField = inject<KbqFormFieldRef>(KBQ_FORM_FIELD_REF, { optional: true })!;\n\n readonly changes: EventEmitter<string> = new EventEmitter<string>();\n\n isSearchChanged: boolean = false;\n\n get ngControl() {\n return this.formField.control().ngControl;\n }\n\n private searchChangesSubscription: Subscription = new Subscription();\n\n constructor() {\n this.formField.canCleanerClearByEsc = false;\n this.formField.inOverlay.set(true);\n }\n\n setPlaceholder(value: string): void {\n this.formField.control().placeholder = value;\n }\n\n hasPlaceholder(): boolean {\n return !!this.formField?.control.placeholder;\n }\n\n focus(): void {\n this.formField.focus();\n }\n\n reset(): void {\n this.ngControl?.reset();\n }\n\n value() {\n return this.formField.control().value;\n }\n\n ngAfterContentInit(): void {\n if (this.formField.control().controlType !== 'input') {\n throw Error('KbqSelectSearch does not work without kbqInput');\n }\n\n if (!this.ngControl) {\n throw Error('KbqSelectSearch does not work without ngControl');\n }\n\n Promise.resolve().then(() => {\n this.searchChangesSubscription = this.ngControl.valueChanges!.subscribe((value) => {\n this.isSearchChanged = true;\n this.changes.next(value);\n });\n });\n }\n\n ngOnDestroy(): void {\n this.searchChangesSubscription.unsubscribe();\n }\n\n handleKeydown(event: KeyboardEvent) {\n if (event.keyCode === ESCAPE) {\n if (this.value()) {\n this.reset();\n event.stopPropagation();\n }\n }\n\n if ([SPACE, HOME, END].includes(event.keyCode)) {\n event.stopPropagation();\n }\n }\n}\n\n/**\n * Abstract class representing a customizable select component with an overlay.\n *\n * This class provides base functionality for handling the overlay positioning.\n * @docs-private\n */\n@Directive()\nexport abstract class KbqAbstractSelect {\n protected overlayDir: CdkConnectedOverlay;\n protected triggerRect: DOMRect;\n\n /** Positions the `cdkConnectedOverlayPositions` input reads. */\n abstract positions: ConnectedPosition[];\n\n /** Whether the trigger lays its selected values out in rows. */\n protected abstract readonly multiline: Signal<boolean>;\n\n /** Scrollable option list inside the panel. */\n protected abstract readonly optionsContainer: Signal<ElementRef<HTMLElement> | undefined>;\n\n /** Margin the overlay keeps from the viewport edge, i.e. `cdkConnectedOverlayViewportMargin`. */\n protected abstract readonly viewportMargin: number;\n\n /**\n * Row container of a multi-selection trigger. Absent for a single value, an empty trigger and a custom\n * matcher or trigger — all of which have no rows for the panel to anchor to.\n */\n protected readonly multilineMatchList = viewChild<ElementRef<HTMLElement>>('multilineMatchList');\n\n protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n protected readonly window = inject(KBQ_WINDOW);\n\n /** Whether the panel is open. Declared as a method because the two selects spell the state differently. */\n protected abstract isPanelOpen(): boolean;\n\n /** Element the overlay is positioned and sized against. */\n protected abstract getOverlayOriginElement(): HTMLElement | undefined;\n\n /** Overlay panel class. */\n protected readonly overlayPanelClass = 'kbq-select-overlay';\n\n /** Width of the overlay panel. */\n protected overlayWidth: string | number = '';\n\n /** Minimum width of the overlay panel. */\n protected overlayMinWidth: string | number = '';\n\n /**\n * Height of everything in the panel that is not the option list — the trigger gap the pane pads itself\n * with, the list padding, a search field and a footer.\n *\n * The same for every anchor: the below and overlap panes pad the top, the above pane pads the bottom, and\n * all three pad by the same gap — which is what keeps the anchor decision from feeding back into itself.\n */\n private panelChromeHeight = 0;\n\n /** Transparent gap the pane pads itself with, which the anchor has to be raised by. */\n private panelGapHeight = 0;\n\n /**\n * Cap the option list is rendered with, in pixels. Measured off the panel rather than derived from\n * `panelMaxHeight`, because `--kbq-select-panel-size-max-height` is what the list actually obeys and a\n * consumer can override it. Seeded with the stylesheet's own default, which is what a DOM that computes\n * no layout — the server, jsdom — leaves in force.\n */\n private panelMaxHeightCap = KBQ_PANEL_DEFAULT_MAX_HEIGHT;\n\n private resizeSubscription = Subscription.EMPTY;\n\n /**\n * Resolves the overlay panel size for the current trigger geometry and stores it for the\n * `cdkConnectedOverlay` width bindings.\n */\n protected updateOverlayWidth(\n panelWidth: KbqPanelWidth,\n panelMinWidth: KbqPanelMinWidth,\n origin: KbqPanelWidthOrigin\n ): void {\n const { width, minWidth } = kbqResolvePanelWidth(panelWidth, panelMinWidth, kbqGetPanelWidthOrigin(origin));\n\n this.overlayWidth = width;\n this.overlayMinWidth = minWidth;\n }\n\n /**\n * Freezes the panel at its rendered width so that filtering the options does not reflow it.\n * Does nothing when the width is already pinned.\n */\n protected lockOverlayWidthForSearch(panel: ElementRef<HTMLElement> | undefined): void {\n // Compare against the unset sentinel rather than a truthy check — an explicit zero-width panel\n // resolves to `'0px'`, and a measured width below can be `0`; both mean \"already pinned\".\n if (this.overlayWidth !== '') return;\n\n const measuredPanelWidth = panel?.nativeElement.getBoundingClientRect().width;\n\n if (measuredPanelWidth) {\n this.overlayWidth = measuredPanelWidth;\n }\n }\n\n protected setOverlayPosition() {\n if (!this.overlayDir.overlayRef) return;\n\n this.resetOverlay();\n\n const overlayRect = this.getOverlayRect();\n // Window width without scrollbar\n const windowWidth = this.overlayDir.overlayRef?.hostElement.clientWidth;\n let offsetX: number = 0;\n let overlayMaxWidth: number;\n\n // Determine if select overflows on either side.\n const leftOverflow = -overlayRect.left;\n const rightOverflow = overlayRect.right - windowWidth;\n\n // If the element overflows on either side, reduce the offset to allow it to fit.\n if (leftOverflow > 0 || rightOverflow > 0) {\n [offsetX, overlayMaxWidth] = this.calculateOverlayOffsetX(offsetX);\n this.overlayDir.overlayRef.overlayElement.style.maxWidth = `${overlayMaxWidth}px`;\n // reset the minWidth property\n this.overlayDir.overlayRef.overlayElement.style.minWidth = '';\n }\n\n // Set the offset directly in order to avoid having to go through change detection and\n // potentially triggering \"changed after it was checked\" errors. Round the value to avoid\n // blurry content in some browsers.\n this.overlayDir.offsetX = Math.round(offsetX);\n this.overlayDir.overlayRef.updatePosition();\n }\n\n protected calculateOverlayOffsetX(baseOffsetX: number): number[] {\n let offsetX = baseOffsetX;\n const windowWidth = this.overlayDir.overlayRef?.hostElement.clientWidth;\n const { left: leftIndent, right: triggerRight, width: triggerWidth } = this.triggerRect;\n const { width: overlayRectWidth } = this.getOverlayRect();\n const rightIndent = windowWidth - triggerRight;\n // Setting direction of dropdown expansion\n const isRightDirection = leftIndent <= rightIndent;\n\n const indent = isRightDirection ? rightIndent : leftIndent;\n const maxDropdownWidth = indent + triggerWidth - SELECT_PANEL_VIEWPORT_PADDING;\n const overlayMaxWidth = overlayRectWidth < maxDropdownWidth ? overlayRectWidth : maxDropdownWidth;\n\n if (!isRightDirection) {\n const leftOffset = triggerRight - overlayMaxWidth;\n\n offsetX -= leftIndent - leftOffset;\n }\n\n return [offsetX, overlayMaxWidth];\n }\n\n protected getOverlayRect(): DOMRect {\n return this.overlayDir.overlayRef.overlayElement.getBoundingClientRect();\n }\n\n protected resetOverlay(): void {\n this.overlayDir.overlayRef.hostElement.classList.add(this.overlayPanelClass);\n this.overlayDir.offsetX = 0;\n this.overlayDir.overlayRef.overlayElement.style.maxWidth = 'unset';\n this.overlayDir.overlayRef.updatePosition();\n }\n\n /**\n * Returns `positions` with the first-row anchor added, updated or removed, or `null` when the array\n * already says what it should — so that the caller can skip the change detection an edit would need.\n *\n * The anchor goes LAST. The overlay returns on the first position that fits completely, so an entry at the\n * end is reached exactly when neither the below nor the above position works, which is the rule this\n * implements. Pass `null` to drop it again.\n *\n * The result is meant to be assigned to the field the `cdkConnectedOverlayPositions` input reads, NOT\n * handed to `withPositions()` on the strategy: `CdkConnectedOverlay.ngOnChanges` rebuilds the strategy\n * from that field on ANY input change — the width `lockOverlayWidthForSearch` pins is one — so a list\n * applied only to the strategy would be dropped again without a trace.\n */\n protected withOverlapPosition(positions: ConnectedPosition[], offsetY: number | null): ConnectedPosition[] | null {\n // `panelClass` is `string | string[]`, and `positions` is public, so an anchor can come back in a\n // shape a strict comparison would miss — which would append a second anchor on every recompute and\n // leave every one of them behind on close.\n const isOverlap = ({ panelClass }: ConnectedPosition) =>\n Array.isArray(panelClass)\n ? panelClass.includes(KBQ_CONNECTED_OVERLAY_OVERLAP_CLASS)\n : panelClass === KBQ_CONNECTED_OVERLAY_OVERLAP_CLASS;\n const current = positions.find(isOverlap);\n const withoutOverlap = () => positions.filter((position) => !isOverlap(position));\n\n if (offsetY === null) return current ? withoutOverlap() : null;\n\n // Rounded so that sub-pixel layout jitter cannot rebuild the array on every selection change.\n const roundedOffsetY = Math.round(offsetY);\n\n if (current?.offsetY === roundedOffsetY) return null;\n\n return [\n ...withoutOverlap(),\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: roundedOffsetY,\n panelClass: KBQ_CONNECTED_OVERLAY_OVERLAP_CLASS\n }\n ];\n }\n\n /**\n * Re-resolves the panel position with the first-row anchor brought up to date.\n *\n * Never call this from a `positionChange` subscriber: CDK records the position it applied AFTER the\n * subscriber returns, so an anchor resolved from inside that frame is overwritten by the pre-anchor\n * position, and `cdkConnectedOverlayLockPosition` then replays that stale one on the next scroll.\n */\n protected reanchorPanel(): void {\n // `hostElement` is nulled by `OverlayRef.dispose()`, which is what a queued call landing after the\n // component was destroyed has to be told apart by — `overlayRef` itself outlives disposal.\n if (!this.overlayDir?.overlayRef?.hostElement) return;\n\n // Only when the anchor actually moved. `setOverlayPosition()` is a one-shot: it clears the pane's\n // `minWidth` and derives the panel offset from the width it had before that, so a second run over\n // the same open measures a narrower pane. In RTL the pane's x is `documentWidth - (x + paneWidth)`,\n // so that narrower measurement moves the panel; in LTR only `left` is written and nothing moves.\n if (this.updatePanelAnchor()) {\n this.setOverlayPosition();\n }\n }\n\n /**\n * Re-resolves the anchor while the panel is open. A resize rewraps the trigger's rows and changes the\n * room beside it at once, and CDK re-applies the position on its own, so without this the anchor it\n * resolves against is the one measured for the old viewport.\n */\n protected subscribeToPanelResize(): void {\n this.resizeSubscription.unsubscribe();\n\n if (!this.multiline()) return;\n\n this.resizeSubscription = fromEvent(this.window, 'resize')\n .pipe(debounceTime(50))\n .subscribe(() => this.reanchorPanel());\n }\n\n /** Drops the resize subscription the open set up. */\n protected unsubscribeFromPanelResize(): void {\n this.resizeSubscription.unsubscribe();\n }\n\n /**\n * Keeps the first-row anchor in `positions`: a third position that puts the panel just below the\n * trigger's first row and over the rest of it, for a multiline trigger that has grown taller than the\n * panel and fits on neither side of it.\n *\n * The anchor goes last, and the overlay stops at the first position that fits completely, so it is\n * reached exactly when neither `below` nor `above` works. `kbqShouldAnchorPanelToFirstRow` holds the\n * rest of the rule.\n *\n * Returns whether the array changed, so that a caller can skip the reposition an unchanged anchor does\n * not need. Updating the array is all there is to do here — `setOverlayPosition()` rebuilds the strategy\n * and resolves the position again.\n */\n protected updatePanelAnchor(): boolean {\n if (!this.multiline() || !this.isPanelOpen() || !this.overlayDir?.overlayRef) return false;\n\n // A measurement that cannot be trusted would leave the seeds in force, and a zero chrome height\n // overstates the room beside the trigger by the whole of a search field and a footer.\n if (!this.measurePanelChrome()) return false;\n\n const context = this.resolvePanelSpaceContext();\n\n if (!context) return false;\n\n const firstRowOffset = this.resolveFirstRowOffset();\n const anchorToFirstRow = kbqShouldAnchorPanelToFirstRow(context, {\n firstRowOffset,\n naturalListHeight: this.measureNaturalListHeight(),\n anchored: this.isPanelAnchoredToFirstRow()\n });\n // The pane pads the gap inside itself, so the anchor is raised by it: the painted panel then starts\n // where the second row does, instead of leaving the top of that row's tags showing through the band.\n const offsetY = anchorToFirstRow && firstRowOffset !== null ? firstRowOffset - this.panelGapHeight : null;\n const positions = this.withOverlapPosition(this.positions, offsetY);\n\n if (!positions) return false;\n\n this.positions = positions;\n // Pushes the new array into `CdkConnectedOverlay`: the strategy is rebuilt from the directive's\n // input, not from this field, so without this the reposition would resolve against the old list.\n this.changeDetectorRef.detectChanges();\n\n return true;\n }\n\n /**\n * Distance from the origin's top edge to just below the trigger's first row, or `null` when there is no\n * row to anchor to.\n */\n private resolveFirstRowOffset(): number | null {\n const origin = this.getOverlayOriginElement();\n const list = this.multilineMatchList()?.nativeElement;\n\n if (!origin || !list) return null;\n\n // The rows follow document order, so the scan stops at the first child that starts lower. Collapsed\n // children are skipped: a custom tag template can render a hidden node, and its all-zero rect would\n // otherwise be taken for the topmost row and push every real tag out of it.\n let firstRowTop: number | null = null;\n let firstRowBottom = Number.NEGATIVE_INFINITY;\n\n for (const child of Array.from(list.children)) {\n const { top, bottom, width, height } = child.getBoundingClientRect();\n\n // A collapsed child occupies no row and adds nothing to one, so it is skipped whichever way it\n // collapsed — its rect would otherwise be read as a row of its own.\n if (width === 0 || height === 0) continue;\n\n if (firstRowTop === null) {\n firstRowTop = top;\n // Sub-pixel layout only makes the tops of one row equal to within a pixel, and a custom tag\n // template can put several elements on the same row.\n } else if (top - firstRowTop >= 1) {\n break;\n }\n\n firstRowBottom = Math.max(firstRowBottom, bottom);\n }\n\n if (firstRowTop === null) return null;\n\n const originRect = origin.getBoundingClientRect();\n const listRect = list.getBoundingClientRect();\n\n return kbqResolveTriggerFirstRowOffset({\n originTop: originRect.top,\n originBottom: originRect.bottom,\n listTop: listRect.top,\n listBottom: listRect.bottom,\n firstRowBottom,\n // The rows keep their laid-out position while their container scrolls, so the scroll offset is\n // what converts them back into the list's own coordinates.\n listScrollTop: list.scrollTop\n });\n }\n\n /**\n * Height the option list takes with no viewport clamp in force.\n *\n * Read from `scrollHeight`, which reports the whole content rather than what the pane happens to show\n * right now — the anchor decision runs on a pane the overlay may be about to move.\n */\n private measureNaturalListHeight(): number {\n if (this.isListHeightPinnedToCap()) return this.panelMaxHeightCap;\n\n const content = this.optionsContainer()?.nativeElement;\n\n if (!content) return this.panelMaxHeightCap;\n\n // `clientHeight` less the computed content box is the list's own vertical padding, which\n // `scrollHeight` counts and the cap does not.\n const padding = content.clientHeight - parseFloat(this.window.getComputedStyle(content).height);\n\n return Math.min(this.panelMaxHeightCap, content.scrollHeight - (Number.isFinite(padding) ? padding : 0));\n }\n\n /**\n * Whether the option list renders at the cap whatever its content is, which a\n * `cdk-virtual-scroll-viewport` does by pinning both its `min-height` and its `max-height` to the token.\n */\n protected isListHeightPinnedToCap(): boolean {\n return false;\n }\n\n /** Geometry the panel height calculation needs, or `null` when there is nothing to measure against. */\n private resolvePanelSpaceContext(): KbqPanelSpaceContext | null {\n const origin = this.getOverlayOriginElement();\n\n if (!origin) return null;\n\n const { top, bottom } = origin.getBoundingClientRect();\n\n return {\n triggerTop: top,\n triggerBottom: bottom,\n // `clientHeight`, not `innerHeight`: the overlay narrows the viewport the same way, and the two\n // differ by the horizontal scrollbar — enough for a position we think fits to be rejected.\n viewportHeight: this.window.document.documentElement.clientHeight,\n viewportMargin: this.viewportMargin,\n chromeHeight: this.panelChromeHeight\n };\n }\n\n /** Whether the panel is currently drawn over the trigger, read from the class the overlay applies. */\n private isPanelAnchoredToFirstRow(): boolean {\n return this.overlayDir.overlayRef.overlayElement.classList.contains(KBQ_CONNECTED_OVERLAY_OVERLAP_CLASS);\n }\n\n /**\n * Records the part of the panel that is not the option list, the gap the pane pads itself with, and the\n * cap the list is rendered with. Returns `false` when the panel cannot be measured, which is the caller's\n * signal to leave the anchor alone rather than decide against a stale value.\n */\n private measurePanelChrome(): boolean {\n const pane = this.overlayDir.overlayRef.overlayElement;\n const content = this.optionsContainer()?.nativeElement;\n\n if (!content) return false;\n\n // `--kbq-select-panel-size-max-height` caps the list's *content box* — the scroller is `box-sizing:\n // initial` — so its own padding counts as chrome. The computed `height` is that content box, which is\n // exactly what the cap has to be measured against.\n const { height, maxHeight } = this.window.getComputedStyle(content);\n const { paddingTop, paddingBottom } = this.window.getComputedStyle(pane);\n const chromeHeight = pane.getBoundingClientRect().height - parseFloat(height);\n const cap = parseFloat(maxHeight);\n\n if (!Number.isFinite(chromeHeight) || chromeHeight < 0) return false;\n\n this.panelChromeHeight = chromeHeight;\n // Whichever side the current position pads, the gap is the same one the anchored pane will pad.\n this.panelGapHeight = Math.max(parseFloat(paddingTop) || 0, parseFloat(paddingBottom) || 0);\n\n // `none`, `''` and a DOM without layout all yield NaN, which leaves the seed in force.\n if (Number.isFinite(cap) && cap > 0) {\n this.panelMaxHeightCap = cap;\n }\n\n return true;\n }\n\n protected resolveSearchMinOptionsThreshold(value?: 'auto' | number) {\n return value === 'auto' ? KBQ_SELECT_SEARCH_MIN_OPTIONS_THRESHOLD : value;\n }\n}\n","import { isDevMode } from '@angular/core';\n\n/**\n * Runs a consumer-supplied `compareWith` defensively: a comparator that throws is reported in dev mode\n * and treated as \"no match\", so one bad comparison cannot take a whole selection down with it.\n *\n * Callers own the `null` policy — `KbqSelect` refuses to match a `null` option value, `KbqListSelection`\n * lets the comparator decide — so nothing is filtered here.\n *\n * @docs-private\n */\nexport function runCompareWith<T>(compareWith: (o1: T, o2: T) => boolean, first: T, second: T): boolean {\n try {\n return compareWith(first, second);\n } catch (error) {\n if (isDevMode()) {\n // Notify developers of errors in their comparator.\n // eslint-disable-next-line no-console\n console.warn(error);\n }\n\n return false;\n }\n}\n","/**\n * Returns an exception to be thrown when attempting to change a select's `multiple` option\n * after initialization.\n * @docs-private\n */\nexport function getKbqSelectDynamicMultipleError(): Error {\n return Error('Cannot change `multiple` mode of select after initialization.');\n}\n\n/**\n * Returns an exception to be thrown when attempting to assign a non-array value to a select\n * in `multiple` mode. Note that `undefined` and `null` are still valid values to allow for\n * resetting the value.\n * @docs-private\n */\nexport function getKbqSelectNonArrayValueError(): Error {\n return Error('Value must be an array in multiple-selection mode.');\n}\n\n/**\n * Returns an exception to be thrown when assigning a non-function value to the comparator\n * used to determine if a value corresponds to an option. Note that whether the function\n * actually takes two values and returns a boolean is not checked.\n */\nexport function getKbqSelectNonFunctionValueError(): Error {\n return Error('`compareWith` must be a function.');\n}\n","export const selectEvents = 'selectEvents';\n","import { Platform } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport { inject, Injectable } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class KbqMeasureScrollbarService {\n protected readonly document = inject<Document>(DOCUMENT);\n private readonly platform = inject(Platform);\n\n get scrollBarWidth(): number {\n if (this._scrollBarWidth) {\n return this._scrollBarWidth;\n }\n\n this.initScrollBarWidth();\n\n return this._scrollBarWidth;\n }\n\n private _scrollBarWidth: number;\n private scrollbarMeasure = {\n position: 'absolute',\n top: '-9999px',\n width: '50px',\n height: '50px',\n overflow: 'scroll'\n };\n\n constructor() {\n this.initScrollBarWidth();\n }\n\n initScrollBarWidth() {\n if (!this.platform.isBrowser) {\n this._scrollBarWidth = 0;\n\n return;\n }\n\n const scrollDiv = this.document.createElement('div');\n\n for (const scrollProp in this.scrollbarMeasure) {\n if (this.scrollbarMeasure.hasOwnProperty(scrollProp)) {\n scrollDiv.style[scrollProp] = this.scrollbarMeasure[scrollProp];\n }\n }\n\n this.document.body.appendChild(scrollDiv);\n\n const width = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n\n this.document.body.removeChild(scrollDiv);\n this._scrollBarWidth = width;\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { inject, Injectable, OnDestroy, Renderer2, RendererFactory2 } from '@angular/core';\nimport { BehaviorSubject, pairwise, Subscription } from 'rxjs';\n\nexport interface KbqTheme {\n name: string;\n className: string;\n selected: boolean;\n}\n\n/**\n * Enum representing the available themes for the Koobiq design system.\n * This enum is used to manage and switch between different visual themes.\n */\nexport enum KbqThemeSelector {\n /**\n * Represents the default light theme.\n * This is the standard theme that is applied\n * when the application is first loaded if nothing else provided\n */\n Default = 'kbq-light',\n /**\n * This theme is used to provide a darker visual experience, often preferred in low-light environments.\n */\n Dark = 'kbq-dark'\n}\n\nexport const KbqDefaultThemes: KbqTheme[] = [\n {\n name: 'light',\n className: KbqThemeSelector.Default,\n selected: true\n },\n {\n name: 'dark',\n className: KbqThemeSelector.Dark,\n selected: false\n }\n];\n\n@Injectable({ providedIn: 'root' })\nexport class ThemeService<T extends KbqTheme | null = KbqTheme> implements OnDestroy {\n protected readonly document = inject<Document>(DOCUMENT);\n protected readonly rendererFactory = inject(RendererFactory2);\n protected renderer: Renderer2;\n\n current: BehaviorSubject<T> = new BehaviorSubject(null as T);\n\n themes: T[] = KbqDefaultThemes as T[];\n\n protected subscription: Subscription;\n\n constructor() {\n this.renderer = this.rendererFactory.createRenderer(null, null);\n\n this.subscription = this.current.pipe(pairwise()).subscribe(this.update);\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n\n setThemes(items: T[]) {\n this.themes = items;\n }\n\n setTheme(value: T | number) {\n if (typeof value === 'number') {\n this.current.next(this.themes[value]);\n } else if (typeof value === 'object' && this.themes.includes(value)) {\n this.current.next(value);\n } else {\n throw Error(`value has unsupported type: ${typeof value}`);\n }\n }\n\n getTheme(): T {\n return this.current.value;\n }\n\n protected update = ([prev, current]: T[]) => {\n if (prev) {\n prev.selected = false;\n this.renderer.removeClass(this.document.body, prev.className);\n }\n\n if (current) {\n this.renderer.addClass(this.document.body, current.className);\n current.selected = true;\n }\n };\n}\n","/* eslint-disable no-restricted-globals -- testing utilities legitimately use raw `document`/`window` */\n\n/** Creates a browser MouseEvent with the specified options. */\nexport function createMouseEvent(type: string, x = 0, y = 0, button = 0) {\n const event = document.createEvent('MouseEvent');\n\n event.initMouseEvent(\n type,\n false,\n false,\n window /* view */,\n 0,\n x /* screenX */,\n y /* screenY */,\n x /* clientX */,\n y /* clientY */,\n false,\n false,\n false,\n false,\n button /* button */,\n null\n );\n\n return event;\n}\n\n/** Creates a browser TouchEvent with the specified pointer coordinates. */\nexport function createTouchEvent(type: string, pageX = 0, pageY = 0) {\n // In favor of creating events that work for most of the browsers, the event is created\n // as a basic UI Event. The necessary details for the event will be set manually.\n const event = document.createEvent('UIEvent');\n const touchDetails = { pageX, pageY };\n\n (event as any).initUIEvent(type, true, true, window, 0);\n\n // Most of the browsers don't have a \"initTouchEvent\" method that can be used to define\n // the touch details.\n Object.defineProperties(event, {\n touches: { value: [touchDetails] }\n });\n\n return event;\n}\n\n/** Dispatches a keydown event from an element. */\nexport function createKeyboardEvent(type: string, keyCode: number, target?: Element, key?: string) {\n const event = document.createEvent('KeyboardEvent') as any;\n\n // Firefox does not support `initKeyboardEvent`, but supports `initKeyEvent`.\n if (event.initKeyEvent) {\n event.initKeyEvent(type, true, true, window, 0, 0, 0, 0, 0, keyCode);\n } else {\n event.initKeyboardEvent(type, true, true, window, 0, key, 0, '', false);\n }\n\n // Webkit Browsers don't set the keyCode when calling the init function.\n // See related bug https://bugs.webkit.org/show_bug.cgi?id=16735\n Object.defineProperties(event, {\n keyCode: { get: () => keyCode },\n key: { get: () => key }\n });\n\n // Only override `target` when explicitly provided; otherwise let jsdom set it during dispatch.\n if (target !== undefined) {\n Object.defineProperty(event, 'target', { get: () => target });\n }\n\n return event;\n}\n\n/** Creates a fake event object with any desired event type. */\nexport function createFakeEvent(type: string, canBubble = false, cancelable = true) {\n const event = document.createEvent('Event');\n\n event.initEvent(type, canBubble, cancelable);\n\n return event;\n}\n","import { createFakeEvent, createKeyboardEvent, createMouseEvent, createTouchEvent } from './event-objects';\n\n/** Utility to dispatch any event on a Node. */\nexport function dispatchEvent(node: Node | Window, event: Event): Event {\n node.dispatchEvent(event);\n\n return event;\n}\n\n/** Shorthand to dispatch a fake event on a specified node. */\nexport function dispatchFakeEvent(node: Node | Window, type: string, canBubble?: boolean): Event {\n return dispatchEvent(node, createFakeEvent(type, canBubble));\n}\n\n/** Shorthand to dispatch a keyboard event with a specified key code and, optionally, a `KeyboardEvent.key`. */\nexport function dispatchKeyboardEvent(\n node: Node,\n type: string,\n keyCode: number,\n target?: Element,\n key?: string\n): KeyboardEvent {\n return dispatchEvent(node, createKeyboardEvent(type, keyCode, target, key)) as KeyboardEvent;\n}\n\n/** Shorthand to dispatch a mouse event on the specified coordinates. */\nexport function dispatchMouseEvent(\n node: Node,\n type: string,\n x = 0,\n y = 0,\n event = createMouseEvent(type, x, y)\n): MouseEvent {\n return dispatchEvent(node, event) as MouseEvent;\n}\n\n/** Shorthand to dispatch a touch event on the specified coordinates. */\nexport function dispatchTouchEvent(node: Node, type: string, x = 0, y = 0) {\n return dispatchEvent(node, createTouchEvent(type, x, y));\n}\n","import { dispatchFakeEvent } from './dispatch-events';\n\n/**\n * Patches an elements focus and blur methods to emit events consistently and predictably.\n * This is necessary, because some browsers, like IE11, will call the focus handlers asynchronously,\n * while others won't fire them at all if the browser window is not focused.\n */\nexport function patchElementFocus(element: HTMLElement) {\n element.focus = () => dispatchFakeEvent(element, 'focus');\n element.blur = () => dispatchFakeEvent(element, 'blur');\n}\n","import { EventEmitter, Injectable, NgZone } from '@angular/core';\n\n/**\n * Mock synchronous NgZone implementation that can be used\n * to flush out `onStable` subscriptions in tests.\n *\n * via: https://github.com/angular/angular/blob/master/packages/core/testing/src/ng_zone_mock.ts\n * @docs-private\n */\n@Injectable()\nexport class MockNgZone extends NgZone {\n onStable: EventEmitter<any> = new EventEmitter(false);\n\n constructor() {\n super({ enableLongStackTrace: false });\n }\n\n run(fn: () => void): any {\n return fn();\n }\n\n runOutsideAngular(fn: () => void): any {\n return fn();\n }\n\n simulateZoneExit(): void {\n this.onStable.emit(null);\n }\n}\n","import { dispatchFakeEvent } from './dispatch-events';\n\n/**\n * Focuses an input, sets its value and dispatches\n * the `input` event, simulating the user typing.\n * @param value Value to be set on the input.\n * @param element Element onto which to set the value.\n */\nexport function typeInElement(value: string, element: HTMLInputElement) {\n element.focus();\n element.value = value;\n dispatchFakeEvent(element, 'input');\n}\n","export function wrappedErrorMessage(e: Error) {\n const escapedMessage = e.message.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&');\n\n return new RegExp(escapedMessage);\n}\n","/**\n * @docs-private\n */\nexport const validationTooltipShowDelay = 10;\n\n/**\n * @docs-private\n */\nexport const validationTooltipHideDelay = 3000;\n","import { Version } from '@angular/core';\n\nexport const VERSION = new Version('20.3.1+sha-d6cc191');\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["map","BaseDateAdapter","BaseDateFormatter","KbqDateAdapter","i1.KbqPseudoCheckbox","rxDelay"],"mappings":"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"}
|