ng-primitives 0.120.5 → 0.122.0
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/ng-primitives-a11y.mjs +5 -5
- package/fesm2022/ng-primitives-a11y.mjs.map +1 -1
- package/fesm2022/ng-primitives-accordion.mjs +30 -47
- package/fesm2022/ng-primitives-accordion.mjs.map +1 -1
- package/fesm2022/ng-primitives-ai.mjs +39 -52
- package/fesm2022/ng-primitives-ai.mjs.map +1 -1
- package/fesm2022/ng-primitives-autofill.mjs +4 -4
- package/fesm2022/ng-primitives-autofill.mjs.map +1 -1
- package/fesm2022/ng-primitives-avatar.mjs +14 -17
- package/fesm2022/ng-primitives-avatar.mjs.map +1 -1
- package/fesm2022/ng-primitives-breadcrumbs.mjs +21 -21
- package/fesm2022/ng-primitives-breadcrumbs.mjs.map +1 -1
- package/fesm2022/ng-primitives-button.mjs +7 -9
- package/fesm2022/ng-primitives-button.mjs.map +1 -1
- package/fesm2022/ng-primitives-checkbox.mjs +15 -30
- package/fesm2022/ng-primitives-checkbox.mjs.map +1 -1
- package/fesm2022/ng-primitives-combobox.mjs +72 -94
- package/fesm2022/ng-primitives-combobox.mjs.map +1 -1
- package/fesm2022/ng-primitives-common.mjs +4 -4
- package/fesm2022/ng-primitives-common.mjs.map +1 -1
- package/fesm2022/ng-primitives-context-menu.mjs +75 -122
- package/fesm2022/ng-primitives-context-menu.mjs.map +1 -1
- package/fesm2022/ng-primitives-date-picker.mjs +70 -108
- package/fesm2022/ng-primitives-date-picker.mjs.map +1 -1
- package/fesm2022/ng-primitives-dialog.mjs +33 -49
- package/fesm2022/ng-primitives-dialog.mjs.map +1 -1
- package/fesm2022/ng-primitives-file-upload.mjs +26 -53
- package/fesm2022/ng-primitives-file-upload.mjs.map +1 -1
- package/fesm2022/ng-primitives-focus-trap.mjs +5 -8
- package/fesm2022/ng-primitives-focus-trap.mjs.map +1 -1
- package/fesm2022/ng-primitives-form-field.mjs +39 -44
- package/fesm2022/ng-primitives-form-field.mjs.map +1 -1
- package/fesm2022/ng-primitives-input-otp.mjs +30 -43
- package/fesm2022/ng-primitives-input-otp.mjs.map +1 -1
- package/fesm2022/ng-primitives-input.mjs +6 -8
- package/fesm2022/ng-primitives-input.mjs.map +1 -1
- package/fesm2022/ng-primitives-interactions.mjs +31 -48
- package/fesm2022/ng-primitives-interactions.mjs.map +1 -1
- package/fesm2022/ng-primitives-internal.mjs +12 -12
- package/fesm2022/ng-primitives-internal.mjs.map +1 -1
- package/fesm2022/ng-primitives-listbox.mjs +34 -48
- package/fesm2022/ng-primitives-listbox.mjs.map +1 -1
- package/fesm2022/ng-primitives-menu.mjs +91 -151
- package/fesm2022/ng-primitives-menu.mjs.map +1 -1
- package/fesm2022/ng-primitives-meter.mjs +25 -36
- package/fesm2022/ng-primitives-meter.mjs.map +1 -1
- package/fesm2022/ng-primitives-navigation-menu.mjs +66 -110
- package/fesm2022/ng-primitives-navigation-menu.mjs.map +1 -1
- package/fesm2022/ng-primitives-number-field.mjs +35 -59
- package/fesm2022/ng-primitives-number-field.mjs.map +1 -1
- package/fesm2022/ng-primitives-pagination.mjs +270 -297
- package/fesm2022/ng-primitives-pagination.mjs.map +1 -1
- package/fesm2022/ng-primitives-popover.mjs +50 -90
- package/fesm2022/ng-primitives-popover.mjs.map +1 -1
- package/fesm2022/ng-primitives-portal.mjs +81 -57
- package/fesm2022/ng-primitives-portal.mjs.map +1 -1
- package/fesm2022/ng-primitives-progress.mjs +30 -41
- package/fesm2022/ng-primitives-progress.mjs.map +1 -1
- package/fesm2022/ng-primitives-radio.mjs +20 -30
- package/fesm2022/ng-primitives-radio.mjs.map +1 -1
- package/fesm2022/ng-primitives-resize.mjs +3 -3
- package/fesm2022/ng-primitives-resize.mjs.map +1 -1
- package/fesm2022/ng-primitives-roving-focus.mjs +20 -34
- package/fesm2022/ng-primitives-roving-focus.mjs.map +1 -1
- package/fesm2022/ng-primitives-search.mjs +9 -9
- package/fesm2022/ng-primitives-search.mjs.map +1 -1
- package/fesm2022/ng-primitives-select.mjs +57 -83
- package/fesm2022/ng-primitives-select.mjs.map +1 -1
- package/fesm2022/ng-primitives-separator.mjs +4 -6
- package/fesm2022/ng-primitives-separator.mjs.map +1 -1
- package/fesm2022/ng-primitives-slider.mjs +63 -100
- package/fesm2022/ng-primitives-slider.mjs.map +1 -1
- package/fesm2022/ng-primitives-state.mjs +3 -3
- package/fesm2022/ng-primitives-state.mjs.map +1 -1
- package/fesm2022/ng-primitives-switch.mjs +15 -21
- package/fesm2022/ng-primitives-switch.mjs.map +1 -1
- package/fesm2022/ng-primitives-tabs.mjs +31 -41
- package/fesm2022/ng-primitives-tabs.mjs.map +1 -1
- package/fesm2022/ng-primitives-textarea.mjs +5 -7
- package/fesm2022/ng-primitives-textarea.mjs.map +1 -1
- package/fesm2022/ng-primitives-toast.mjs +33 -30
- package/fesm2022/ng-primitives-toast.mjs.map +1 -1
- package/fesm2022/ng-primitives-toggle-group.mjs +20 -36
- package/fesm2022/ng-primitives-toggle-group.mjs.map +1 -1
- package/fesm2022/ng-primitives-toggle.mjs +10 -19
- package/fesm2022/ng-primitives-toggle.mjs.map +1 -1
- package/fesm2022/ng-primitives-toolbar.mjs +4 -6
- package/fesm2022/ng-primitives-toolbar.mjs.map +1 -1
- package/fesm2022/ng-primitives-tooltip.mjs +406 -403
- package/fesm2022/ng-primitives-tooltip.mjs.map +1 -1
- package/fesm2022/ng-primitives-utils.mjs +5 -4
- package/fesm2022/ng-primitives-utils.mjs.map +1 -1
- package/package.json +56 -55
- package/{a11y/index.d.ts → types/ng-primitives-a11y.d.ts} +15 -14
- package/{accordion/index.d.ts → types/ng-primitives-accordion.d.ts} +78 -77
- package/{button/index.d.ts → types/ng-primitives-button.d.ts} +21 -20
- package/{checkbox/index.d.ts → types/ng-primitives-checkbox.d.ts} +67 -66
- package/{combobox/index.d.ts → types/ng-primitives-combobox.d.ts} +46 -36
- package/{context-menu/index.d.ts → types/ng-primitives-context-menu.d.ts} +16 -3
- package/{date-picker/index.d.ts → types/ng-primitives-date-picker.d.ts} +2 -2
- package/{menu/index.d.ts → types/ng-primitives-menu.d.ts} +16 -1
- package/{navigation-menu/index.d.ts → types/ng-primitives-navigation-menu.d.ts} +22 -9
- package/{number-field/index.d.ts → types/ng-primitives-number-field.d.ts} +72 -71
- package/types/ng-primitives-pagination.d.ts +502 -0
- package/{popover/index.d.ts → types/ng-primitives-popover.d.ts} +12 -4
- package/{portal/index.d.ts → types/ng-primitives-portal.d.ts} +19 -3
- package/{roving-focus/index.d.ts → types/ng-primitives-roving-focus.d.ts} +61 -60
- package/{select/index.d.ts → types/ng-primitives-select.d.ts} +48 -40
- package/{slider/index.d.ts → types/ng-primitives-slider.d.ts} +59 -58
- package/{switch/index.d.ts → types/ng-primitives-switch.d.ts} +45 -44
- package/{toast/index.d.ts → types/ng-primitives-toast.d.ts} +6 -4
- package/{toggle-group/index.d.ts → types/ng-primitives-toggle-group.d.ts} +69 -68
- package/{toggle/index.d.ts → types/ng-primitives-toggle.d.ts} +48 -47
- package/types/ng-primitives-tooltip.d.ts +701 -0
- package/pagination/index.d.ts +0 -211
- package/tooltip/index.d.ts +0 -376
- /package/{ai/index.d.ts → types/ng-primitives-ai.d.ts} +0 -0
- /package/{autofill/index.d.ts → types/ng-primitives-autofill.d.ts} +0 -0
- /package/{avatar/index.d.ts → types/ng-primitives-avatar.d.ts} +0 -0
- /package/{breadcrumbs/index.d.ts → types/ng-primitives-breadcrumbs.d.ts} +0 -0
- /package/{common/index.d.ts → types/ng-primitives-common.d.ts} +0 -0
- /package/{date-time-luxon/index.d.ts → types/ng-primitives-date-time-luxon.d.ts} +0 -0
- /package/{date-time/index.d.ts → types/ng-primitives-date-time.d.ts} +0 -0
- /package/{dialog/index.d.ts → types/ng-primitives-dialog.d.ts} +0 -0
- /package/{file-upload/index.d.ts → types/ng-primitives-file-upload.d.ts} +0 -0
- /package/{focus-trap/index.d.ts → types/ng-primitives-focus-trap.d.ts} +0 -0
- /package/{form-field/index.d.ts → types/ng-primitives-form-field.d.ts} +0 -0
- /package/{input-otp/index.d.ts → types/ng-primitives-input-otp.d.ts} +0 -0
- /package/{input/index.d.ts → types/ng-primitives-input.d.ts} +0 -0
- /package/{interactions/index.d.ts → types/ng-primitives-interactions.d.ts} +0 -0
- /package/{internal/index.d.ts → types/ng-primitives-internal.d.ts} +0 -0
- /package/{listbox/index.d.ts → types/ng-primitives-listbox.d.ts} +0 -0
- /package/{meter/index.d.ts → types/ng-primitives-meter.d.ts} +0 -0
- /package/{progress/index.d.ts → types/ng-primitives-progress.d.ts} +0 -0
- /package/{radio/index.d.ts → types/ng-primitives-radio.d.ts} +0 -0
- /package/{resize/index.d.ts → types/ng-primitives-resize.d.ts} +0 -0
- /package/{search/index.d.ts → types/ng-primitives-search.d.ts} +0 -0
- /package/{separator/index.d.ts → types/ng-primitives-separator.d.ts} +0 -0
- /package/{state/index.d.ts → types/ng-primitives-state.d.ts} +0 -0
- /package/{tabs/index.d.ts → types/ng-primitives-tabs.d.ts} +0 -0
- /package/{textarea/index.d.ts → types/ng-primitives-textarea.d.ts} +0 -0
- /package/{toolbar/index.d.ts → types/ng-primitives-toolbar.d.ts} +0 -0
- /package/{utils/index.d.ts → types/ng-primitives-utils.d.ts} +0 -0
- /package/{index.d.ts → types/ng-primitives.d.ts} +0 -0
|
@@ -6,7 +6,7 @@ import { injectElementRef } from 'ng-primitives/internal';
|
|
|
6
6
|
|
|
7
7
|
function activeDescendantManager({ disabled: _disabled = signal(false), wrap, count, getItemId, isItemDisabled, scrollIntoView, }) {
|
|
8
8
|
const disposables = injectDisposables();
|
|
9
|
-
const activeIndex = signal(0, ...(ngDevMode ? [{ debugName: "activeIndex" }] : []));
|
|
9
|
+
const activeIndex = signal(0, ...(ngDevMode ? [{ debugName: "activeIndex" }] : /* istanbul ignore next */ []));
|
|
10
10
|
const disabled = controlled(_disabled);
|
|
11
11
|
let isIgnoringPointer = false;
|
|
12
12
|
let clearPointerIgnoreTimer;
|
|
@@ -14,7 +14,7 @@ function activeDescendantManager({ disabled: _disabled = signal(false), wrap, co
|
|
|
14
14
|
const id = computed(() => {
|
|
15
15
|
const index = activeIndex();
|
|
16
16
|
return index >= 0 && index < count() ? getItemId(index) : undefined;
|
|
17
|
-
}, ...(ngDevMode ? [{ debugName: "id" }] : []));
|
|
17
|
+
}, ...(ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []));
|
|
18
18
|
/**
|
|
19
19
|
* Start ignoring pointer interactions temporarily.
|
|
20
20
|
*/
|
|
@@ -189,10 +189,10 @@ class NgpVisuallyHidden {
|
|
|
189
189
|
setVisibility(visible) {
|
|
190
190
|
this.state.setVisibility(visible);
|
|
191
191
|
}
|
|
192
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
193
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
192
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: NgpVisuallyHidden, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
193
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.14", type: NgpVisuallyHidden, isStandalone: true, selector: "[ngpVisuallyHidden]", providers: [provideVisuallyHiddenState()], exportAs: ["ngpVisuallyHidden"], ngImport: i0 }); }
|
|
194
194
|
}
|
|
195
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
195
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: NgpVisuallyHidden, decorators: [{
|
|
196
196
|
type: Directive,
|
|
197
197
|
args: [{
|
|
198
198
|
selector: '[ngpVisuallyHidden]',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-primitives-a11y.mjs","sources":["../../../../packages/ng-primitives/a11y/src/active-descendant/active-descendant.ts","../../../../packages/ng-primitives/a11y/src/visually-hidden/visually-hidden-state.ts","../../../../packages/ng-primitives/a11y/src/visually-hidden/visually-hidden.ts","../../../../packages/ng-primitives/a11y/src/ng-primitives-a11y.ts"],"sourcesContent":["import { computed, Signal, signal } from '@angular/core';\nimport { controlled } from 'ng-primitives/state';\nimport { injectDisposables } from 'ng-primitives/utils';\n\nexport interface NgpActiveDescendantManagerProps {\n /**\n * The disabled state of the active descendant group.\n * @default false\n */\n disabled?: Signal<boolean>;\n\n /**\n * The number of items in the active descendant group.\n */\n count: Signal<number>;\n\n /**\n * Get the id for the item at a given index.\n */\n getItemId: (index: number) => string | undefined;\n\n /**\n * Whether the item at a given index is disabled.\n */\n isItemDisabled: (index: number) => boolean;\n\n /**\n * Scroll the active descendant item into view.\n */\n scrollIntoView: (index: number) => void;\n\n /**\n * Whether active descendant should wrap around.\n * @default false\n */\n wrap?: Signal<boolean>;\n}\n\nexport interface NgpActiveDescendantManagerState {\n /**\n * The index of the active descendant item.\n */\n index: Signal<number>;\n\n /**\n * The id of the active descendant item.\n */\n id: Signal<string | undefined>;\n\n /**\n * Activate an item in the active descendant group.\n */\n activateByIndex: (index: number, options?: ActivationOptions) => void;\n\n /**\n * Activate an item in the active descendant group by id.\n */\n activateById: (id: string, options?: ActivationOptions) => void;\n\n /**\n * Activate the first enabled item in the active descendant group.\n */\n first: (options?: ActivationOptions) => void;\n /**\n * Activate the last enabled item in the active descendant group.\n */\n last: (options?: ActivationOptions) => void;\n /**\n * Activate the next enabled item in the active descendant group.\n */\n next: (options?: ActivationOptions) => void;\n /**\n * Activate the previous enabled item in the active descendant group.\n */\n previous: (options?: ActivationOptions) => void;\n /**\n * Ensure there is an active descendant, this is useful when the items in the group change.\n */\n validate: () => void;\n /**\n * Reset the active descendant group, clearing the active index.\n */\n reset: (options?: ActivationOptions) => void;\n}\n\nexport function activeDescendantManager({\n disabled: _disabled = signal(false),\n wrap,\n count,\n getItemId,\n isItemDisabled,\n scrollIntoView,\n}: NgpActiveDescendantManagerProps) {\n const disposables = injectDisposables();\n\n const activeIndex = signal<number>(0);\n const disabled = controlled(_disabled);\n let isIgnoringPointer = false;\n\n let clearPointerIgnoreTimer: (() => void) | undefined;\n\n // compute the id of the active descendant\n const id = computed(() => {\n const index = activeIndex();\n return index >= 0 && index < count() ? getItemId(index) : undefined;\n });\n\n /**\n * Start ignoring pointer interactions temporarily.\n */\n function startIgnoringPointer(): void {\n isIgnoringPointer = true;\n\n // Clear any existing timer\n clearPointerIgnoreTimer?.();\n\n // Reset ignore state after a short delay\n clearPointerIgnoreTimer = disposables.setTimeout(() => {\n isIgnoringPointer = false;\n clearPointerIgnoreTimer = undefined;\n }, 200); // 200ms should be enough for scroll to complete\n }\n\n function activateByIndex(index: number, { scroll = true, origin }: ActivationOptions = {}): void {\n if (disabled() || (index >= 0 && isItemDisabled(index))) {\n return;\n }\n\n // if the origin is the pointer but we are ignoring pointer interactions, do nothing\n if (origin === 'pointer' && isIgnoringPointer) {\n return;\n }\n\n // ensure any pointer interactions triggered via scrolling due to keyboard navigation are ignored\n if (origin === 'keyboard') {\n startIgnoringPointer();\n }\n\n activeIndex.set(index);\n\n if (index < 0 || index >= count()) {\n return;\n }\n\n if (scroll) {\n scrollIntoView(index);\n }\n }\n\n function activateById(id: string, options: ActivationOptions = {}): void {\n for (let i = 0; i < count(); i++) {\n if (getItemId(i) === id) {\n activateByIndex(i, options);\n return;\n }\n }\n }\n\n function first(options: ActivationOptions = {}): void {\n for (let i = 0; i < count(); i++) {\n if (!isItemDisabled(i)) {\n activateByIndex(i, options);\n return;\n }\n }\n }\n\n function last(options: ActivationOptions = {}): void {\n for (let i = count() - 1; i >= 0; i--) {\n if (!isItemDisabled(i)) {\n activateByIndex(i, options);\n return;\n }\n }\n }\n\n function next(options: ActivationOptions = {}): void {\n let index = activeIndex() + 1;\n\n while (index !== activeIndex()) {\n if (index >= count()) {\n if (wrap?.()) {\n index = 0;\n } else {\n return;\n }\n }\n\n if (!isItemDisabled(index)) {\n activateByIndex(index, options);\n return;\n }\n\n index++;\n }\n }\n\n function previous(options: ActivationOptions = {}): void {\n let index = activeIndex() - 1;\n\n while (index !== activeIndex()) {\n if (index < 0) {\n if (wrap?.()) {\n index = count() - 1;\n } else {\n return;\n }\n }\n\n if (!isItemDisabled(index)) {\n activateByIndex(index, options);\n return;\n }\n\n index--;\n }\n }\n\n // any time the item list changes, check if the active index is still valid\n function validate(): void {\n const index = activeIndex();\n\n // if the index is out of bounds, reset it\n if (index >= count() || index < 0 || isItemDisabled(index)) {\n // find the first enabled item\n for (let i = 0; i < count(); i++) {\n if (!isItemDisabled(i)) {\n activateByIndex(i);\n return;\n }\n }\n // if no enabled items, deactivate\n activateByIndex(-1);\n }\n }\n\n /**\n * Reset the active descendant group, clearing the active index.\n */\n const reset = ({ scroll = false, origin }: ActivationOptions = {}) => {\n activateByIndex(-1, { scroll, origin });\n };\n\n return {\n id,\n index: activeIndex,\n activateByIndex,\n activateById,\n first,\n last,\n next,\n previous,\n reset,\n validate,\n } satisfies NgpActiveDescendantManagerState;\n}\n\nexport interface ActivationOptions {\n /** Whether to scroll the activated item into view. */\n scroll?: boolean;\n /** Define the source of activation. */\n origin?: 'keyboard' | 'pointer';\n}\n","import { ChangeDetectorRef, inject, Signal, signal } from '@angular/core';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport { controlled, createPrimitive, styleBinding } from 'ng-primitives/state';\n\n/**\n * The state interface for the VisuallyHidden pattern.\n */\nexport interface NgpVisuallyHiddenState {\n /**\n * Whether the element is hidden.\n */\n readonly hidden: Signal<boolean>;\n\n /**\n * Set the element visibility.\n * @param visible\n */\n setVisibility(visible: boolean): void;\n}\n\n/**\n * The props interface for the VisuallyHidden pattern.\n */\nexport interface NgpVisuallyHiddenProps {\n /**\n * Whether the element is hidden. Default is true.\n */\n readonly hidden?: Signal<boolean>;\n}\n\nexport const [\n NgpVisuallyHiddenStateToken,\n ngpVisuallyHidden,\n injectVisuallyHiddenState,\n provideVisuallyHiddenState,\n] = createPrimitive(\n 'NgpVisuallyHidden',\n ({ hidden: _hidden = signal(true) }: NgpVisuallyHiddenProps): NgpVisuallyHiddenState => {\n const element = injectElementRef();\n const hidden = controlled(_hidden);\n const changeDetector = inject(ChangeDetectorRef);\n\n // Apply styles to visually hide the element\n styleBinding(element, 'position', () => (hidden() ? 'absolute' : null));\n styleBinding(element, 'width', () => (hidden() ? '1px' : null));\n styleBinding(element, 'height', () => (hidden() ? '1px' : null));\n styleBinding(element, 'margin', () => (hidden() ? '-1px' : null));\n styleBinding(element, 'padding', () => (hidden() ? '0' : null));\n styleBinding(element, 'overflow', () => (hidden() ? 'hidden' : null));\n styleBinding(element, 'clip', () => (hidden() ? 'rect(0, 0, 0, 0)' : null));\n styleBinding(element, 'white-space', () => (hidden() ? 'nowrap' : null));\n styleBinding(element, 'border', () => (hidden() ? '0' : null));\n styleBinding(element, 'word-wrap', () => (hidden() ? 'normal' : null));\n styleBinding(element, 'outline', () => (hidden() ? '0' : null));\n styleBinding(element, '-webkit-appearance', () => (hidden() ? 'none' : null));\n styleBinding(element, '-moz-appearance', () => (hidden() ? 'none' : null));\n styleBinding(element, 'inset-inline-start', () => (hidden() ? '0' : null));\n\n function setVisibility(visible: boolean): void {\n hidden.set(!visible);\n // If a change-detection cycle might be running, schedule detection asynchronously and exit\n // to avoid re-entrancy. Otherwise fall through to call detectChanges synchronously.\n Promise.resolve().then(() => changeDetector.detectChanges());\n }\n\n return {\n hidden: hidden.asReadonly(),\n setVisibility,\n } satisfies NgpVisuallyHiddenState;\n },\n);\n","import { Directive } from '@angular/core';\nimport { ngpVisuallyHidden, provideVisuallyHiddenState } from './visually-hidden-state';\n\n/**\n * Hide an element visually while keeping it present in the DOM.\n */\n@Directive({\n selector: '[ngpVisuallyHidden]',\n exportAs: 'ngpVisuallyHidden',\n providers: [provideVisuallyHiddenState()],\n})\nexport class NgpVisuallyHidden {\n protected readonly state = ngpVisuallyHidden({});\n\n /**\n * Set the element visibility.\n * @param visible\n */\n setVisibility(visible: boolean): void {\n this.state.setVisibility(visible);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ng-primitives-a11y.mjs","sources":["../../../../packages/ng-primitives/a11y/src/active-descendant/active-descendant.ts","../../../../packages/ng-primitives/a11y/src/visually-hidden/visually-hidden-state.ts","../../../../packages/ng-primitives/a11y/src/visually-hidden/visually-hidden.ts","../../../../packages/ng-primitives/a11y/src/ng-primitives-a11y.ts"],"sourcesContent":["import { computed, Signal, signal } from '@angular/core';\nimport { controlled } from 'ng-primitives/state';\nimport { injectDisposables } from 'ng-primitives/utils';\n\nexport interface NgpActiveDescendantManagerProps {\n /**\n * The disabled state of the active descendant group.\n * @default false\n */\n disabled?: Signal<boolean>;\n\n /**\n * The number of items in the active descendant group.\n */\n count: Signal<number>;\n\n /**\n * Get the id for the item at a given index.\n */\n getItemId: (index: number) => string | undefined;\n\n /**\n * Whether the item at a given index is disabled.\n */\n isItemDisabled: (index: number) => boolean;\n\n /**\n * Scroll the active descendant item into view.\n */\n scrollIntoView: (index: number) => void;\n\n /**\n * Whether active descendant should wrap around.\n * @default false\n */\n wrap?: Signal<boolean>;\n}\n\nexport interface NgpActiveDescendantManagerState {\n /**\n * The index of the active descendant item.\n */\n index: Signal<number>;\n\n /**\n * The id of the active descendant item.\n */\n id: Signal<string | undefined>;\n\n /**\n * Activate an item in the active descendant group.\n */\n activateByIndex: (index: number, options?: ActivationOptions) => void;\n\n /**\n * Activate an item in the active descendant group by id.\n */\n activateById: (id: string, options?: ActivationOptions) => void;\n\n /**\n * Activate the first enabled item in the active descendant group.\n */\n first: (options?: ActivationOptions) => void;\n /**\n * Activate the last enabled item in the active descendant group.\n */\n last: (options?: ActivationOptions) => void;\n /**\n * Activate the next enabled item in the active descendant group.\n */\n next: (options?: ActivationOptions) => void;\n /**\n * Activate the previous enabled item in the active descendant group.\n */\n previous: (options?: ActivationOptions) => void;\n /**\n * Ensure there is an active descendant, this is useful when the items in the group change.\n */\n validate: () => void;\n /**\n * Reset the active descendant group, clearing the active index.\n */\n reset: (options?: ActivationOptions) => void;\n}\n\nexport function activeDescendantManager({\n disabled: _disabled = signal(false),\n wrap,\n count,\n getItemId,\n isItemDisabled,\n scrollIntoView,\n}: NgpActiveDescendantManagerProps) {\n const disposables = injectDisposables();\n\n const activeIndex = signal<number>(0);\n const disabled = controlled(_disabled);\n let isIgnoringPointer = false;\n\n let clearPointerIgnoreTimer: (() => void) | undefined;\n\n // compute the id of the active descendant\n const id = computed(() => {\n const index = activeIndex();\n return index >= 0 && index < count() ? getItemId(index) : undefined;\n });\n\n /**\n * Start ignoring pointer interactions temporarily.\n */\n function startIgnoringPointer(): void {\n isIgnoringPointer = true;\n\n // Clear any existing timer\n clearPointerIgnoreTimer?.();\n\n // Reset ignore state after a short delay\n clearPointerIgnoreTimer = disposables.setTimeout(() => {\n isIgnoringPointer = false;\n clearPointerIgnoreTimer = undefined;\n }, 200); // 200ms should be enough for scroll to complete\n }\n\n function activateByIndex(index: number, { scroll = true, origin }: ActivationOptions = {}): void {\n if (disabled() || (index >= 0 && isItemDisabled(index))) {\n return;\n }\n\n // if the origin is the pointer but we are ignoring pointer interactions, do nothing\n if (origin === 'pointer' && isIgnoringPointer) {\n return;\n }\n\n // ensure any pointer interactions triggered via scrolling due to keyboard navigation are ignored\n if (origin === 'keyboard') {\n startIgnoringPointer();\n }\n\n activeIndex.set(index);\n\n if (index < 0 || index >= count()) {\n return;\n }\n\n if (scroll) {\n scrollIntoView(index);\n }\n }\n\n function activateById(id: string, options: ActivationOptions = {}): void {\n for (let i = 0; i < count(); i++) {\n if (getItemId(i) === id) {\n activateByIndex(i, options);\n return;\n }\n }\n }\n\n function first(options: ActivationOptions = {}): void {\n for (let i = 0; i < count(); i++) {\n if (!isItemDisabled(i)) {\n activateByIndex(i, options);\n return;\n }\n }\n }\n\n function last(options: ActivationOptions = {}): void {\n for (let i = count() - 1; i >= 0; i--) {\n if (!isItemDisabled(i)) {\n activateByIndex(i, options);\n return;\n }\n }\n }\n\n function next(options: ActivationOptions = {}): void {\n let index = activeIndex() + 1;\n\n while (index !== activeIndex()) {\n if (index >= count()) {\n if (wrap?.()) {\n index = 0;\n } else {\n return;\n }\n }\n\n if (!isItemDisabled(index)) {\n activateByIndex(index, options);\n return;\n }\n\n index++;\n }\n }\n\n function previous(options: ActivationOptions = {}): void {\n let index = activeIndex() - 1;\n\n while (index !== activeIndex()) {\n if (index < 0) {\n if (wrap?.()) {\n index = count() - 1;\n } else {\n return;\n }\n }\n\n if (!isItemDisabled(index)) {\n activateByIndex(index, options);\n return;\n }\n\n index--;\n }\n }\n\n // any time the item list changes, check if the active index is still valid\n function validate(): void {\n const index = activeIndex();\n\n // if the index is out of bounds, reset it\n if (index >= count() || index < 0 || isItemDisabled(index)) {\n // find the first enabled item\n for (let i = 0; i < count(); i++) {\n if (!isItemDisabled(i)) {\n activateByIndex(i);\n return;\n }\n }\n // if no enabled items, deactivate\n activateByIndex(-1);\n }\n }\n\n /**\n * Reset the active descendant group, clearing the active index.\n */\n const reset = ({ scroll = false, origin }: ActivationOptions = {}) => {\n activateByIndex(-1, { scroll, origin });\n };\n\n return {\n id,\n index: activeIndex,\n activateByIndex,\n activateById,\n first,\n last,\n next,\n previous,\n reset,\n validate,\n } satisfies NgpActiveDescendantManagerState;\n}\n\nexport interface ActivationOptions {\n /** Whether to scroll the activated item into view. */\n scroll?: boolean;\n /** Define the source of activation. */\n origin?: 'keyboard' | 'pointer';\n}\n","import { ChangeDetectorRef, inject, Signal, signal } from '@angular/core';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport { controlled, createPrimitive, styleBinding } from 'ng-primitives/state';\n\n/**\n * The state interface for the VisuallyHidden pattern.\n */\nexport interface NgpVisuallyHiddenState {\n /**\n * Whether the element is hidden.\n */\n readonly hidden: Signal<boolean>;\n\n /**\n * Set the element visibility.\n * @param visible\n */\n setVisibility(visible: boolean): void;\n}\n\n/**\n * The props interface for the VisuallyHidden pattern.\n */\nexport interface NgpVisuallyHiddenProps {\n /**\n * Whether the element is hidden. Default is true.\n */\n readonly hidden?: Signal<boolean>;\n}\n\nexport const [\n NgpVisuallyHiddenStateToken,\n ngpVisuallyHidden,\n injectVisuallyHiddenState,\n provideVisuallyHiddenState,\n] = createPrimitive(\n 'NgpVisuallyHidden',\n ({ hidden: _hidden = signal(true) }: NgpVisuallyHiddenProps): NgpVisuallyHiddenState => {\n const element = injectElementRef();\n const hidden = controlled(_hidden);\n const changeDetector = inject(ChangeDetectorRef);\n\n // Apply styles to visually hide the element\n styleBinding(element, 'position', () => (hidden() ? 'absolute' : null));\n styleBinding(element, 'width', () => (hidden() ? '1px' : null));\n styleBinding(element, 'height', () => (hidden() ? '1px' : null));\n styleBinding(element, 'margin', () => (hidden() ? '-1px' : null));\n styleBinding(element, 'padding', () => (hidden() ? '0' : null));\n styleBinding(element, 'overflow', () => (hidden() ? 'hidden' : null));\n styleBinding(element, 'clip', () => (hidden() ? 'rect(0, 0, 0, 0)' : null));\n styleBinding(element, 'white-space', () => (hidden() ? 'nowrap' : null));\n styleBinding(element, 'border', () => (hidden() ? '0' : null));\n styleBinding(element, 'word-wrap', () => (hidden() ? 'normal' : null));\n styleBinding(element, 'outline', () => (hidden() ? '0' : null));\n styleBinding(element, '-webkit-appearance', () => (hidden() ? 'none' : null));\n styleBinding(element, '-moz-appearance', () => (hidden() ? 'none' : null));\n styleBinding(element, 'inset-inline-start', () => (hidden() ? '0' : null));\n\n function setVisibility(visible: boolean): void {\n hidden.set(!visible);\n // If a change-detection cycle might be running, schedule detection asynchronously and exit\n // to avoid re-entrancy. Otherwise fall through to call detectChanges synchronously.\n Promise.resolve().then(() => changeDetector.detectChanges());\n }\n\n return {\n hidden: hidden.asReadonly(),\n setVisibility,\n } satisfies NgpVisuallyHiddenState;\n },\n);\n","import { Directive } from '@angular/core';\nimport { ngpVisuallyHidden, provideVisuallyHiddenState } from './visually-hidden-state';\n\n/**\n * Hide an element visually while keeping it present in the DOM.\n */\n@Directive({\n selector: '[ngpVisuallyHidden]',\n exportAs: 'ngpVisuallyHidden',\n providers: [provideVisuallyHiddenState()],\n})\nexport class NgpVisuallyHidden {\n protected readonly state = ngpVisuallyHidden({});\n\n /**\n * Set the element visibility.\n * @param visible\n */\n setVisibility(visible: boolean): void {\n this.state.setVisibility(visible);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -78,9 +78,9 @@ const [NgpAccordionItemStateToken, ngpAccordionItem, _injectAccordionItemState,
|
|
|
78
78
|
const element = injectElementRef();
|
|
79
79
|
const disabled = controlled(_disabled);
|
|
80
80
|
// Whether the accordion item is expanded.
|
|
81
|
-
const open = computed(() => accordion().isOpen(value()), ...(ngDevMode ? [{ debugName: "open" }] : []));
|
|
82
|
-
const trigger = signal(undefined, ...(ngDevMode ? [{ debugName: "trigger" }] : []));
|
|
83
|
-
const content = signal(undefined, ...(ngDevMode ? [{ debugName: "content" }] : []));
|
|
81
|
+
const open = computed(() => accordion().isOpen(value()), ...(ngDevMode ? [{ debugName: "open" }] : /* istanbul ignore next */ []));
|
|
82
|
+
const trigger = signal(undefined, ...(ngDevMode ? [{ debugName: "trigger" }] : /* istanbul ignore next */ []));
|
|
83
|
+
const content = signal(undefined, ...(ngDevMode ? [{ debugName: "content" }] : /* istanbul ignore next */ []));
|
|
84
84
|
// Setup host data bindings
|
|
85
85
|
dataBinding(element, 'data-orientation', accordion().orientation);
|
|
86
86
|
dataBinding(element, 'data-open', open);
|
|
@@ -115,7 +115,7 @@ const [NgpAccordionContentStateToken, ngpAccordionContent, injectAccordionConten
|
|
|
115
115
|
const accordion = injectAccordionState();
|
|
116
116
|
const accordionItem = injectAccordionItemState();
|
|
117
117
|
const dimensions = injectDimensions();
|
|
118
|
-
const hidden = computed(() => !accordionItem().open() && dimensions().height === 0 ? 'until-found' : null, ...(ngDevMode ? [{ debugName: "hidden" }] : []));
|
|
118
|
+
const hidden = computed(() => !accordionItem().open() && dimensions().height === 0 ? 'until-found' : null, ...(ngDevMode ? [{ debugName: "hidden" }] : /* istanbul ignore next */ []));
|
|
119
119
|
// Host bindings
|
|
120
120
|
attrBinding(element, 'role', 'region');
|
|
121
121
|
attrBinding(element, 'id', id);
|
|
@@ -126,8 +126,8 @@ const [NgpAccordionContentStateToken, ngpAccordionContent, injectAccordionConten
|
|
|
126
126
|
dataBinding(element, 'data-closed', () => !accordionItem().open());
|
|
127
127
|
// data-enter is set when the item opens (user interaction), data-exit when it closes.
|
|
128
128
|
// Neither is set on initial render, preventing animation on page load.
|
|
129
|
-
const enter = signal(false, ...(ngDevMode ? [{ debugName: "enter" }] : []));
|
|
130
|
-
const exit = signal(false, ...(ngDevMode ? [{ debugName: "exit" }] : []));
|
|
129
|
+
const enter = signal(false, ...(ngDevMode ? [{ debugName: "enter" }] : /* istanbul ignore next */ []));
|
|
130
|
+
const exit = signal(false, ...(ngDevMode ? [{ debugName: "exit" }] : /* istanbul ignore next */ []));
|
|
131
131
|
dataBinding(element, 'data-enter', enter);
|
|
132
132
|
dataBinding(element, 'data-exit', exit);
|
|
133
133
|
listener(element, 'beforematch', onBeforeMatch);
|
|
@@ -214,13 +214,13 @@ class NgpAccordionContent {
|
|
|
214
214
|
/**
|
|
215
215
|
* The id of the content region
|
|
216
216
|
*/
|
|
217
|
-
this.id = input(uniqueId('ngp-accordion-content'), ...(ngDevMode ? [{ debugName: "id" }] : []));
|
|
217
|
+
this.id = input(uniqueId('ngp-accordion-content'), ...(ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []));
|
|
218
218
|
ngpAccordionContent({ id: this.id });
|
|
219
219
|
}
|
|
220
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
221
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
220
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: NgpAccordionContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
221
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.14", type: NgpAccordionContent, isStandalone: true, selector: "[ngpAccordionContent]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, exportAs: ["ngpAccordionContent"], ngImport: i0 }); }
|
|
222
222
|
}
|
|
223
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
223
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: NgpAccordionContent, decorators: [{
|
|
224
224
|
type: Directive,
|
|
225
225
|
args: [{
|
|
226
226
|
selector: '[ngpAccordionContent]',
|
|
@@ -240,17 +240,12 @@ class NgpAccordionItem {
|
|
|
240
240
|
/**
|
|
241
241
|
* The value of the accordion item.
|
|
242
242
|
*/
|
|
243
|
-
this.value = input(uniqueId('ngp-accordion-item'), ...(ngDevMode ?
|
|
244
|
-
alias: 'ngpAccordionItemValue',
|
|
245
|
-
}]));
|
|
243
|
+
this.value = input(uniqueId('ngp-accordion-item'), { ...(ngDevMode ? { debugName: "value" } : /* istanbul ignore next */ {}), alias: 'ngpAccordionItemValue' });
|
|
246
244
|
/**
|
|
247
245
|
* Whether the accordion item is disabled.
|
|
248
246
|
*/
|
|
249
|
-
this.disabled = input(false, ...(ngDevMode ?
|
|
250
|
-
|
|
251
|
-
alias: 'ngpAccordionItemDisabled',
|
|
252
|
-
transform: booleanAttribute,
|
|
253
|
-
}]));
|
|
247
|
+
this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), alias: 'ngpAccordionItemDisabled',
|
|
248
|
+
transform: booleanAttribute });
|
|
254
249
|
/**
|
|
255
250
|
* The accordion item state.
|
|
256
251
|
*/
|
|
@@ -263,10 +258,10 @@ class NgpAccordionItem {
|
|
|
263
258
|
*/
|
|
264
259
|
this.open = this.state.open;
|
|
265
260
|
}
|
|
266
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
267
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
261
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: NgpAccordionItem, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
262
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.14", type: NgpAccordionItem, isStandalone: true, selector: "[ngpAccordionItem]", inputs: { value: { classPropertyName: "value", publicName: "ngpAccordionItemValue", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "ngpAccordionItemDisabled", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideAccordionItemState()], exportAs: ["ngpAccordionItem"], ngImport: i0 }); }
|
|
268
263
|
}
|
|
269
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
264
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: NgpAccordionItem, decorators: [{
|
|
270
265
|
type: Directive,
|
|
271
266
|
args: [{
|
|
272
267
|
selector: '[ngpAccordionItem]',
|
|
@@ -310,7 +305,7 @@ class NgpAccordionTrigger {
|
|
|
310
305
|
/**
|
|
311
306
|
* The id of the trigger.
|
|
312
307
|
*/
|
|
313
|
-
this.id = input(uniqueId('ngp-accordion-trigger'), ...(ngDevMode ? [{ debugName: "id" }] : []));
|
|
308
|
+
this.id = input(uniqueId('ngp-accordion-trigger'), ...(ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []));
|
|
314
309
|
this.state = ngpAccordionTrigger({ id: this.id });
|
|
315
310
|
}
|
|
316
311
|
/**
|
|
@@ -319,10 +314,10 @@ class NgpAccordionTrigger {
|
|
|
319
314
|
toggle() {
|
|
320
315
|
this.state.toggle();
|
|
321
316
|
}
|
|
322
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
323
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
317
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: NgpAccordionTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
318
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.14", type: NgpAccordionTrigger, isStandalone: true, selector: "[ngpAccordionTrigger]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, exportAs: ["ngpAccordionTrigger"], ngImport: i0 }); }
|
|
324
319
|
}
|
|
325
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
320
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: NgpAccordionTrigger, decorators: [{
|
|
326
321
|
type: Directive,
|
|
327
322
|
args: [{
|
|
328
323
|
selector: '[ngpAccordionTrigger]',
|
|
@@ -369,23 +364,16 @@ class NgpAccordion {
|
|
|
369
364
|
/**
|
|
370
365
|
* The type of the accordion.
|
|
371
366
|
*/
|
|
372
|
-
this.type = input(this.config.type, ...(ngDevMode ?
|
|
373
|
-
alias: 'ngpAccordionType',
|
|
374
|
-
}]));
|
|
367
|
+
this.type = input(this.config.type, { ...(ngDevMode ? { debugName: "type" } : /* istanbul ignore next */ {}), alias: 'ngpAccordionType' });
|
|
375
368
|
/**
|
|
376
369
|
* Whether the accordion is collapsible.
|
|
377
370
|
*/
|
|
378
|
-
this.collapsible = input(this.config.collapsible, ...(ngDevMode ?
|
|
379
|
-
|
|
380
|
-
alias: 'ngpAccordionCollapsible',
|
|
381
|
-
transform: booleanAttribute,
|
|
382
|
-
}]));
|
|
371
|
+
this.collapsible = input(this.config.collapsible, { ...(ngDevMode ? { debugName: "collapsible" } : /* istanbul ignore next */ {}), alias: 'ngpAccordionCollapsible',
|
|
372
|
+
transform: booleanAttribute });
|
|
383
373
|
/**
|
|
384
374
|
* The value of the accordion.
|
|
385
375
|
*/
|
|
386
|
-
this.value = input(null, ...(ngDevMode ?
|
|
387
|
-
alias: 'ngpAccordionValue',
|
|
388
|
-
}]));
|
|
376
|
+
this.value = input(null, { ...(ngDevMode ? { debugName: "value" } : /* istanbul ignore next */ {}), alias: 'ngpAccordionValue' });
|
|
389
377
|
/**
|
|
390
378
|
* Event emitted when the accordion value changes.
|
|
391
379
|
*/
|
|
@@ -395,17 +383,12 @@ class NgpAccordion {
|
|
|
395
383
|
/**
|
|
396
384
|
* Whether the accordion is disabled.
|
|
397
385
|
*/
|
|
398
|
-
this.disabled = input(false, ...(ngDevMode ?
|
|
399
|
-
|
|
400
|
-
alias: 'ngpAccordionDisabled',
|
|
401
|
-
transform: booleanAttribute,
|
|
402
|
-
}]));
|
|
386
|
+
this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), alias: 'ngpAccordionDisabled',
|
|
387
|
+
transform: booleanAttribute });
|
|
403
388
|
/**
|
|
404
389
|
* The accordion orientation.
|
|
405
390
|
*/
|
|
406
|
-
this.orientation = input(this.config.orientation, ...(ngDevMode ?
|
|
407
|
-
alias: 'ngpAccordionOrientation',
|
|
408
|
-
}]));
|
|
391
|
+
this.orientation = input(this.config.orientation, { ...(ngDevMode ? { debugName: "orientation" } : /* istanbul ignore next */ {}), alias: 'ngpAccordionOrientation' });
|
|
409
392
|
/**
|
|
410
393
|
* The accordion state.
|
|
411
394
|
*/
|
|
@@ -453,10 +436,10 @@ class NgpAccordion {
|
|
|
453
436
|
setOrientation(value) {
|
|
454
437
|
this.state.setOrientation(value);
|
|
455
438
|
}
|
|
456
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
457
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
439
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: NgpAccordion, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
440
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.14", type: NgpAccordion, isStandalone: true, selector: "[ngpAccordion]", inputs: { type: { classPropertyName: "type", publicName: "ngpAccordionType", isSignal: true, isRequired: false, transformFunction: null }, collapsible: { classPropertyName: "collapsible", publicName: "ngpAccordionCollapsible", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "ngpAccordionValue", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "ngpAccordionDisabled", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "ngpAccordionOrientation", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "ngpAccordionValueChange" }, providers: [provideAccordionState()], exportAs: ["ngpAccordion"], ngImport: i0 }); }
|
|
458
441
|
}
|
|
459
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
442
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: NgpAccordion, decorators: [{
|
|
460
443
|
type: Directive,
|
|
461
444
|
args: [{
|
|
462
445
|
selector: '[ngpAccordion]',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-primitives-accordion.mjs","sources":["../../../../packages/ng-primitives/accordion/src/accordion/accordion-state.ts","../../../../packages/ng-primitives/accordion/src/accordion-item/accordion-item-state.ts","../../../../packages/ng-primitives/accordion/src/accordion-content/accordion-content-state.ts","../../../../packages/ng-primitives/accordion/src/accordion-content/accordion-content.ts","../../../../packages/ng-primitives/accordion/src/accordion-item/accordion-item.ts","../../../../packages/ng-primitives/accordion/src/accordion-trigger/accordion-trigger-state.ts","../../../../packages/ng-primitives/accordion/src/accordion-trigger/accordion-trigger.ts","../../../../packages/ng-primitives/accordion/src/config/accordion-config.ts","../../../../packages/ng-primitives/accordion/src/accordion/accordion.ts","../../../../packages/ng-primitives/accordion/src/ng-primitives-accordion.ts"],"sourcesContent":["import { signal, Signal, WritableSignal } from '@angular/core';\nimport { NgpOrientation } from 'ng-primitives/common';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport {\n controlled,\n createPrimitive,\n dataBinding,\n deprecatedSetter,\n StateInjectionOptions,\n} from 'ng-primitives/state';\n\n/**\n * The state interface for the Accordion pattern.\n */\nexport interface NgpAccordionState<T> {\n /**\n * The value of the accordion.\n */\n readonly value: WritableSignal<T | T[] | null>;\n /**\n * Whether the accordion is disabled.\n */\n readonly disabled: WritableSignal<boolean>;\n /**\n * The accordion orientation.\n */\n readonly orientation: WritableSignal<NgpOrientation>;\n /**\n * Set the value of the accordion.\n */\n setValue(value: T | T[] | null): void;\n /**\n * Set the disabled state of the accordion.\n */\n setDisabled(value: boolean): void;\n /**\n * Set the orientation of the accordion.\n */\n setOrientation(value: NgpOrientation): void;\n /**\n * Whether the specified value is open.\n */\n isOpen(value: T): boolean;\n /**\n * Toggle the specified value.\n */\n toggle(value: T): void;\n}\n\n/**\n * The props interface for the Accordion pattern.\n */\nexport interface NgpAccordionProps<T> {\n /**\n * The type of the accordion.\n */\n readonly type: Signal<NgpAccordionType>;\n\n /**\n * Whether the accordion is collapsible.\n */\n readonly collapsible: Signal<boolean>;\n\n /**\n * The value of the accordion.\n */\n readonly value: Signal<T | T[] | null>;\n\n /**\n * Whether the accordion is disabled.\n */\n readonly disabled?: Signal<boolean>;\n\n /**\n * The accordion orientation.\n */\n readonly orientation: Signal<NgpOrientation>;\n\n /**\n * Callback fired when valueChange is emitted.\n */\n readonly onValueChange?: (value: T | T[] | null) => void;\n}\n\nexport const [NgpAccordionStateToken, ngpAccordion, _injectAccordionState, provideAccordionState] =\n createPrimitive(\n 'NgpAccordion',\n <T>({\n type,\n collapsible,\n value: _value = signal(null),\n disabled: _disabled = signal(false),\n orientation: _orientation = signal('vertical'),\n onValueChange,\n }: NgpAccordionProps<T>): NgpAccordionState<T> => {\n const element = injectElementRef();\n\n // Create controlled signals\n const value = controlled(_value);\n const disabled = controlled(_disabled);\n const orientation = controlled(_orientation);\n\n // Host bindings extracted from directive\n dataBinding(element, 'data-orientation', orientation);\n dataBinding(element, 'data-disabled', disabled);\n\n // Setter methods\n function setDisabled(value: boolean): void {\n disabled.set(value);\n }\n\n function setOrientation(value: NgpOrientation): void {\n orientation.set(value);\n }\n\n function setValue(newValue: T | T[] | null): void {\n value.set(newValue);\n }\n\n // Methods extracted from directive\n /**\n * @param value The value to check. @returns Whether the value is open. @internal\n */\n function isOpen(itemValue: T): boolean {\n if (type() === 'multiple') {\n return (value() as T[] | null)?.includes(itemValue) ?? false;\n }\n\n return value() === itemValue;\n }\n\n function toggle(itemValue: T): void {\n const open = isOpen(itemValue);\n\n // if we are in single mode and the itemValue is already open and the accordion is not collapsible, do nothing\n if (type() === 'single' && open && !collapsible()) {\n return;\n }\n\n // if we are in single mode then toggle the itemValue\n if (type() === 'single') {\n const newValue = open ? null : itemValue;\n value.set(newValue);\n onValueChange?.(newValue);\n return;\n }\n\n // if we are in multiple mode then toggle the itemValue\n let values = (value() as T[]) ?? [];\n\n if (open) {\n values = values.filter(v => v !== itemValue);\n } else {\n values = [...values, itemValue];\n }\n value.set(values);\n onValueChange?.(values);\n }\n\n return {\n value: deprecatedSetter(value, 'setValue'),\n disabled: deprecatedSetter(disabled, 'setDisabled'),\n orientation: deprecatedSetter(orientation, 'setOrientation'),\n setDisabled,\n setOrientation,\n setValue,\n isOpen,\n toggle,\n } satisfies NgpAccordionState<T>;\n },\n );\n\nexport type NgpAccordionType = 'single' | 'multiple';\n\nexport function injectAccordionState<T>(\n options?: StateInjectionOptions,\n): Signal<NgpAccordionState<T>> {\n return _injectAccordionState(options) as Signal<NgpAccordionState<T>>;\n}\n","import { computed, Signal, signal } from '@angular/core';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport {\n controlled,\n createPrimitive,\n dataBinding,\n deprecatedSetter,\n StateInjectionOptions,\n} from 'ng-primitives/state';\nimport { injectAccordionState } from '../accordion/accordion-state';\n\nexport interface NgpAccordionItemState<T> {\n /**\n * The value of the accordion item.\n */\n readonly value: Signal<T>;\n /**\n * Whether the accordion item is disabled.\n */\n readonly disabled: Signal<boolean>;\n /**\n * Whether the accordion item is expanded.\n */\n readonly open: Signal<boolean>;\n /**\n * The trigger id.\n */\n readonly triggerId: Signal<string | undefined>;\n /**\n * The content id.\n */\n readonly contentId: Signal<string | undefined>;\n /**\n * Set the disabled state of the accordion item.\n */\n setDisabled(value: boolean): void;\n /**\n * Set the trigger of the accordion item.\n */\n setTrigger(id: string): void;\n /**\n * Set the content of the accordion item.\n */\n setContent(id: string): void;\n}\n\nexport interface NgpAccordionItemProps<T> {\n /**\n * The value of the accordion item.\n */\n readonly value: Signal<T>;\n /**\n * Whether the accordion item is disabled.\n */\n readonly disabled?: Signal<boolean>;\n}\n\nexport const [\n NgpAccordionItemStateToken,\n ngpAccordionItem,\n _injectAccordionItemState,\n provideAccordionItemState,\n] = createPrimitive(\n 'NgpAccordionItem',\n <T>({ value, disabled: _disabled = signal(false) }: NgpAccordionItemProps<T>) => {\n const accordion = injectAccordionState<T>();\n const element = injectElementRef();\n\n const disabled = controlled(_disabled);\n\n // Whether the accordion item is expanded.\n const open = computed<boolean>(() => accordion().isOpen(value()));\n\n const trigger = signal<string | undefined>(undefined);\n const content = signal<string | undefined>(undefined);\n\n // Setup host data bindings\n dataBinding(element, 'data-orientation', accordion().orientation);\n dataBinding(element, 'data-open', open);\n dataBinding(element, 'data-disabled', () => disabled() || accordion().disabled());\n\n // Set the disabled state of the accordion item.\n function setDisabled(value: boolean) {\n disabled.set(value);\n }\n\n function setTrigger(id: string) {\n trigger.set(id);\n }\n\n function setContent(id: string) {\n content.set(id);\n }\n\n return {\n value,\n open,\n disabled: deprecatedSetter(disabled, 'setDisabled'),\n triggerId: deprecatedSetter(trigger, 'setTrigger'),\n contentId: deprecatedSetter(content, 'setContent'),\n setDisabled,\n setTrigger,\n setContent,\n } satisfies NgpAccordionItemState<T>;\n },\n);\n\nexport function injectAccordionItemState<T>(\n options?: StateInjectionOptions,\n): Signal<NgpAccordionItemState<T>> {\n return _injectAccordionItemState(options) as Signal<NgpAccordionItemState<T>>;\n}\n","import { afterRenderEffect, computed, signal, Signal } from '@angular/core';\nimport {\n explicitEffect,\n fromMutationObserver,\n injectDimensions,\n injectElementRef,\n} from 'ng-primitives/internal';\nimport { attrBinding, createPrimitive, dataBinding, listener } from 'ng-primitives/state';\nimport { safeTakeUntilDestroyed, uniqueId } from 'ng-primitives/utils';\nimport { debounceTime } from 'rxjs/operators';\nimport { injectAccordionItemState } from '../accordion-item/accordion-item-state';\nimport { injectAccordionState } from '../accordion/accordion-state';\n\nexport interface NgpAccordionContentState {\n /**\n * The id of the content region\n */\n readonly id: Signal<string>;\n}\n\nexport interface NgpAccordionContentProps {\n /**\n * The id of the content region\n */\n readonly id?: Signal<string>;\n}\n\nexport const [\n NgpAccordionContentStateToken,\n ngpAccordionContent,\n injectAccordionContentState,\n provideAccordionContentState,\n] = createPrimitive(\n 'NgpAccordionContent',\n <T>({ id = signal(uniqueId('ngp-accordion-content')) }: NgpAccordionContentProps) => {\n const element = injectElementRef();\n const accordion = injectAccordionState<T>();\n const accordionItem = injectAccordionItemState<T>();\n const dimensions = injectDimensions();\n\n const hidden = computed(() =>\n !accordionItem().open() && dimensions().height === 0 ? 'until-found' : null,\n );\n\n // Host bindings\n attrBinding(element, 'role', 'region');\n attrBinding(element, 'id', id);\n attrBinding(element, 'aria-labelledby', accordionItem().triggerId);\n attrBinding(element, 'hidden', hidden);\n\n dataBinding(element, 'data-orientation', accordion().orientation);\n dataBinding(element, 'data-open', accordionItem().open);\n dataBinding(element, 'data-closed', () => !accordionItem().open());\n\n // data-enter is set when the item opens (user interaction), data-exit when it closes.\n // Neither is set on initial render, preventing animation on page load.\n const enter = signal(false);\n const exit = signal(false);\n dataBinding(element, 'data-enter', enter);\n dataBinding(element, 'data-exit', exit);\n\n listener(element, 'beforematch', onBeforeMatch);\n const clearAnimation = (event: AnimationEvent) => {\n if (event.target === element.nativeElement) {\n enter.set(false);\n exit.set(false);\n }\n };\n listener(element, 'animationend', clearAnimation);\n listener(element, 'animationcancel', clearAnimation);\n\n // Register the content with the accordion item state\n accordionItem().setContent(id());\n\n /**\n * Handle the beforematch event to automatically open the accordion item\n * when the browser's find-in-page functionality tries to reveal hidden content.\n */\n function onBeforeMatch(): void {\n const isDisabled = accordion().disabled() || accordionItem().disabled();\n if (isDisabled) {\n return;\n }\n accordion().toggle(accordionItem().value() as T);\n }\n\n function updateDimensions(): void {\n if (accordionItem().open()) {\n const scrollHeight = element.nativeElement.scrollHeight;\n\n // Element is inside a hidden container (e.g. inactive tab with display:none).\n // All three dimensions are 0 only when the element has no layout at all.\n // Checking dimensions() (from ResizeObserver) prevents misidentifying\n // legitimately empty content (e.g. all children removed) as a hidden container.\n const { width, height } = dimensions();\n if (scrollHeight === 0 && width === 0 && height === 0) {\n return;\n }\n\n const scrollWidth = element.nativeElement.scrollWidth;\n\n // remove the inline styles to reset them\n element.nativeElement.style.removeProperty('--ngp-accordion-content-width');\n element.nativeElement.style.removeProperty('--ngp-accordion-content-height');\n // set the dimensions based on the content\n element.nativeElement.style.setProperty(\n '--ngp-accordion-content-width',\n `${scrollWidth}px`,\n );\n element.nativeElement.style.setProperty(\n '--ngp-accordion-content-height',\n `${scrollHeight}px`,\n );\n }\n }\n\n // Track dimensions() so this effect re-runs when the element becomes visible.\n // Handles the case where the accordion is initialized inside a hidden container.\n afterRenderEffect(() => {\n dimensions(); // reactive dep — re-runs when element resizes (e.g. container becomes visible)\n updateDimensions();\n });\n\n // Drive enter/exit attributes based on open state changes.\n // Skips the initial run so no animation plays on page load.\n let initialized = false;\n explicitEffect([accordionItem().open], ([isOpen]) => {\n if (!initialized) {\n initialized = true;\n return;\n }\n if (isOpen) {\n exit.set(false);\n enter.set(true);\n } else {\n enter.set(false);\n exit.set(true);\n }\n });\n\n // update dimensions when the content changes\n fromMutationObserver(element.nativeElement, {\n childList: true,\n subtree: true,\n disabled: computed(() => !accordionItem().open()),\n })\n .pipe(debounceTime(0), safeTakeUntilDestroyed())\n .subscribe(() => updateDimensions());\n\n return { id } satisfies NgpAccordionContentState;\n },\n);\n","import { Directive, input } from '@angular/core';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { ngpAccordionContent } from './accordion-content-state';\n\n/**\n * Apply the `ngpAccordionContent` directive to an element that represents the content of an accordion item.\n */\n@Directive({\n selector: '[ngpAccordionContent]',\n exportAs: 'ngpAccordionContent',\n})\nexport class NgpAccordionContent<T> {\n /**\n * The id of the content region\n */\n readonly id = input<string>(uniqueId('ngp-accordion-content'));\n\n constructor() {\n ngpAccordionContent<T>({ id: this.id });\n }\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { Directive, booleanAttribute, input } from '@angular/core';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { injectAccordionState } from '../accordion/accordion-state';\nimport { ngpAccordionItem, provideAccordionItemState } from './accordion-item-state';\n\n/**\n * Apply the `ngpAccordionItem` directive to an element that represents an accordion item.\n */\n@Directive({\n selector: '[ngpAccordionItem]',\n exportAs: 'ngpAccordionItem',\n providers: [provideAccordionItemState()],\n})\nexport class NgpAccordionItem<T> {\n /**\n * Access the accordion.\n */\n protected readonly accordion = injectAccordionState<T>();\n\n /**\n * The value of the accordion item.\n */\n readonly value = input<T>(uniqueId('ngp-accordion-item') as T, {\n alias: 'ngpAccordionItemValue',\n });\n\n /**\n * Whether the accordion item is disabled.\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpAccordionItemDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * The accordion item state.\n */\n protected readonly state = ngpAccordionItem<T>({\n value: this.value,\n disabled: this.disabled,\n });\n\n /**\n * The open state of the accordion item.\n */\n readonly open = this.state.open;\n}\n","import { HOST_TAG_NAME, inject, signal, Signal } from '@angular/core';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport { attrBinding, createPrimitive, dataBinding, listener } from 'ng-primitives/state';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { injectAccordionItemState } from '../accordion-item/accordion-item-state';\nimport { injectAccordionState } from '../accordion/accordion-state';\n\nexport interface NgpAccordionTriggerState {\n /**\n * The id of the trigger button\n */\n readonly id: Signal<string>;\n /**\n * Toggle the accordion item.\n */\n toggle(): void;\n}\n\nexport interface NgpAccordionTriggerProps {\n /**\n * The id of the trigger button\n */\n readonly id?: Signal<string>;\n}\n\nexport const [\n NgpAccordionTriggerStateToken,\n ngpAccordionTrigger,\n injectAccordionTriggerState,\n provideAccordionTriggerState,\n] = createPrimitive(\n 'NgpAccordionTrigger',\n <T>({ id = signal(uniqueId('ngp-accordion-trigger')) }: NgpAccordionTriggerProps) => {\n const element = injectElementRef();\n const tagName = inject(HOST_TAG_NAME);\n const accordion = injectAccordionState<T>();\n const accordionItem = injectAccordionItemState<T>();\n\n // Host bindings\n attrBinding(element, 'id', id);\n attrBinding(element, 'type', tagName === 'button' ? 'button' : null);\n attrBinding(element, 'aria-controls', accordionItem().contentId);\n attrBinding(element, 'aria-expanded', accordionItem().open);\n dataBinding(element, 'data-orientation', accordion().orientation);\n dataBinding(element, 'data-open', accordionItem().open);\n dataBinding(\n element,\n 'data-disabled',\n () => accordionItem().disabled() || accordion().disabled(),\n );\n\n // register the trigger with the accordion item\n accordionItem().setTrigger(id());\n\n // Methods\n function toggle(): void {\n if (accordionItem().disabled() || accordion().disabled()) {\n return;\n }\n\n accordion().toggle(accordionItem().value()!);\n }\n\n // Event listeners\n listener(element, 'click', toggle);\n\n return { id, toggle } satisfies NgpAccordionTriggerState;\n },\n);\n","import { Directive, input } from '@angular/core';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { ngpAccordionTrigger } from './accordion-trigger-state';\n\n/**\n * Apply the `ngpAccordionTrigger` directive to an element that represents the trigger for an accordion item, such as a button.\n */\n@Directive({\n selector: '[ngpAccordionTrigger]',\n exportAs: 'ngpAccordionTrigger',\n})\nexport class NgpAccordionTrigger<T> {\n /**\n * The id of the trigger.\n */\n readonly id = input<string>(uniqueId('ngp-accordion-trigger'));\n\n private readonly state = ngpAccordionTrigger<T>({ id: this.id });\n\n /**\n * Toggle the accordion item.\n */\n toggle(): void {\n this.state.toggle();\n }\n}\n","import { InjectionToken, Provider, inject } from '@angular/core';\nimport type { NgpAccordionType } from '../accordion/accordion-state';\n\nexport interface NgpAccordionConfig {\n /**\n * The default type of the accordion\n * @default 'single'\n */\n type: NgpAccordionType;\n /**\n * Whether the accordion is collapsible\n * @default false\n */\n collapsible: boolean;\n /**\n * The default orientation of the accordion\n * @default 'vertical'\n */\n orientation: 'vertical' | 'horizontal';\n}\n\nexport const defaultAccordionConfig: NgpAccordionConfig = {\n type: 'single',\n collapsible: false,\n orientation: 'vertical',\n};\n\nexport const NgpAccordionConfigToken = new InjectionToken<NgpAccordionConfig>(\n 'NgpAccordionConfigToken',\n);\n\n/**\n * Provide the default Accordion configuration\n * @param config The Accordion configuration\n * @returns The provider\n */\nexport function provideAccordionConfig(config: Partial<NgpAccordionConfig>): Provider[] {\n return [\n {\n provide: NgpAccordionConfigToken,\n useValue: { ...defaultAccordionConfig, ...config },\n },\n ];\n}\n\n/**\n * Inject the Accordion configuration\n * @returns The global Accordion configuration\n */\nexport function injectAccordionConfig(): NgpAccordionConfig {\n return inject(NgpAccordionConfigToken, { optional: true }) ?? defaultAccordionConfig;\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, Directive, input, output } from '@angular/core';\nimport { NgpOrientation } from 'ng-primitives/common';\nimport { injectAccordionConfig } from '../config/accordion-config';\nimport { ngpAccordion, NgpAccordionType, provideAccordionState } from './accordion-state';\n\n/**\n * Apply the `ngpAccordion` directive to an element that represents the group of accordion items.\n */\n@Directive({\n selector: '[ngpAccordion]',\n exportAs: 'ngpAccordion',\n providers: [provideAccordionState()],\n})\nexport class NgpAccordion<T> {\n /**\n * Access the global accordion configuration.\n */\n private readonly config = injectAccordionConfig();\n\n /**\n * The type of the accordion.\n */\n readonly type = input<NgpAccordionType>(this.config.type, {\n alias: 'ngpAccordionType',\n });\n\n /**\n * Whether the accordion is collapsible.\n */\n readonly collapsible = input<boolean, BooleanInput>(this.config.collapsible, {\n alias: 'ngpAccordionCollapsible',\n transform: booleanAttribute,\n });\n\n /**\n * The value of the accordion.\n */\n readonly value = input<T | T[] | null>(null, {\n alias: 'ngpAccordionValue',\n });\n\n /**\n * Event emitted when the accordion value changes.\n */\n readonly valueChange = output<T | T[] | null>({\n alias: 'ngpAccordionValueChange',\n });\n\n /**\n * Whether the accordion is disabled.\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpAccordionDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * The accordion orientation.\n */\n readonly orientation = input<NgpOrientation>(this.config.orientation, {\n alias: 'ngpAccordionOrientation',\n });\n\n /**\n * The accordion state.\n */\n protected readonly state = ngpAccordion<T>({\n type: this.type,\n collapsible: this.collapsible,\n value: this.value,\n disabled: this.disabled,\n orientation: this.orientation,\n onValueChange: value => this.valueChange.emit(value),\n });\n\n /**\n * @param value The value to check.\n * @returns Whether the value is open.\n * @internal\n */\n isOpen(value: T): boolean {\n return this.state.isOpen(value);\n }\n\n /**\n * Set the value of the accordion.\n * @param value The value to set.\n */\n setValue(value: T | T[] | null): void {\n this.state.setValue(value);\n }\n\n /**\n * @param value The value to toggle.\n */\n toggle(value: T): void {\n this.state.toggle(value);\n }\n\n /**\n * Set the disabled state of the accordion.\n * @param value The disabled state.\n */\n setDisabled(value: boolean): void {\n this.state.setDisabled(value);\n }\n\n /**\n * Set the orientation of the accordion.\n * @param value The orientation.\n */\n setOrientation(value: NgpOrientation): void {\n this.state.setOrientation(value);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ng-primitives-accordion.mjs","sources":["../../../../packages/ng-primitives/accordion/src/accordion/accordion-state.ts","../../../../packages/ng-primitives/accordion/src/accordion-item/accordion-item-state.ts","../../../../packages/ng-primitives/accordion/src/accordion-content/accordion-content-state.ts","../../../../packages/ng-primitives/accordion/src/accordion-content/accordion-content.ts","../../../../packages/ng-primitives/accordion/src/accordion-item/accordion-item.ts","../../../../packages/ng-primitives/accordion/src/accordion-trigger/accordion-trigger-state.ts","../../../../packages/ng-primitives/accordion/src/accordion-trigger/accordion-trigger.ts","../../../../packages/ng-primitives/accordion/src/config/accordion-config.ts","../../../../packages/ng-primitives/accordion/src/accordion/accordion.ts","../../../../packages/ng-primitives/accordion/src/ng-primitives-accordion.ts"],"sourcesContent":["import { signal, Signal, WritableSignal } from '@angular/core';\nimport { NgpOrientation } from 'ng-primitives/common';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport {\n controlled,\n createPrimitive,\n dataBinding,\n deprecatedSetter,\n StateInjectionOptions,\n} from 'ng-primitives/state';\n\n/**\n * The state interface for the Accordion pattern.\n */\nexport interface NgpAccordionState<T> {\n /**\n * The value of the accordion.\n */\n readonly value: WritableSignal<T | T[] | null>;\n /**\n * Whether the accordion is disabled.\n */\n readonly disabled: WritableSignal<boolean>;\n /**\n * The accordion orientation.\n */\n readonly orientation: WritableSignal<NgpOrientation>;\n /**\n * Set the value of the accordion.\n */\n setValue(value: T | T[] | null): void;\n /**\n * Set the disabled state of the accordion.\n */\n setDisabled(value: boolean): void;\n /**\n * Set the orientation of the accordion.\n */\n setOrientation(value: NgpOrientation): void;\n /**\n * Whether the specified value is open.\n */\n isOpen(value: T): boolean;\n /**\n * Toggle the specified value.\n */\n toggle(value: T): void;\n}\n\n/**\n * The props interface for the Accordion pattern.\n */\nexport interface NgpAccordionProps<T> {\n /**\n * The type of the accordion.\n */\n readonly type: Signal<NgpAccordionType>;\n\n /**\n * Whether the accordion is collapsible.\n */\n readonly collapsible: Signal<boolean>;\n\n /**\n * The value of the accordion.\n */\n readonly value: Signal<T | T[] | null>;\n\n /**\n * Whether the accordion is disabled.\n */\n readonly disabled?: Signal<boolean>;\n\n /**\n * The accordion orientation.\n */\n readonly orientation: Signal<NgpOrientation>;\n\n /**\n * Callback fired when valueChange is emitted.\n */\n readonly onValueChange?: (value: T | T[] | null) => void;\n}\n\nexport const [NgpAccordionStateToken, ngpAccordion, _injectAccordionState, provideAccordionState] =\n createPrimitive(\n 'NgpAccordion',\n <T>({\n type,\n collapsible,\n value: _value = signal(null),\n disabled: _disabled = signal(false),\n orientation: _orientation = signal('vertical'),\n onValueChange,\n }: NgpAccordionProps<T>): NgpAccordionState<T> => {\n const element = injectElementRef();\n\n // Create controlled signals\n const value = controlled(_value);\n const disabled = controlled(_disabled);\n const orientation = controlled(_orientation);\n\n // Host bindings extracted from directive\n dataBinding(element, 'data-orientation', orientation);\n dataBinding(element, 'data-disabled', disabled);\n\n // Setter methods\n function setDisabled(value: boolean): void {\n disabled.set(value);\n }\n\n function setOrientation(value: NgpOrientation): void {\n orientation.set(value);\n }\n\n function setValue(newValue: T | T[] | null): void {\n value.set(newValue);\n }\n\n // Methods extracted from directive\n /**\n * @param value The value to check. @returns Whether the value is open. @internal\n */\n function isOpen(itemValue: T): boolean {\n if (type() === 'multiple') {\n return (value() as T[] | null)?.includes(itemValue) ?? false;\n }\n\n return value() === itemValue;\n }\n\n function toggle(itemValue: T): void {\n const open = isOpen(itemValue);\n\n // if we are in single mode and the itemValue is already open and the accordion is not collapsible, do nothing\n if (type() === 'single' && open && !collapsible()) {\n return;\n }\n\n // if we are in single mode then toggle the itemValue\n if (type() === 'single') {\n const newValue = open ? null : itemValue;\n value.set(newValue);\n onValueChange?.(newValue);\n return;\n }\n\n // if we are in multiple mode then toggle the itemValue\n let values = (value() as T[]) ?? [];\n\n if (open) {\n values = values.filter(v => v !== itemValue);\n } else {\n values = [...values, itemValue];\n }\n value.set(values);\n onValueChange?.(values);\n }\n\n return {\n value: deprecatedSetter(value, 'setValue'),\n disabled: deprecatedSetter(disabled, 'setDisabled'),\n orientation: deprecatedSetter(orientation, 'setOrientation'),\n setDisabled,\n setOrientation,\n setValue,\n isOpen,\n toggle,\n } satisfies NgpAccordionState<T>;\n },\n );\n\nexport type NgpAccordionType = 'single' | 'multiple';\n\nexport function injectAccordionState<T>(\n options?: StateInjectionOptions,\n): Signal<NgpAccordionState<T>> {\n return _injectAccordionState(options) as Signal<NgpAccordionState<T>>;\n}\n","import { computed, Signal, signal } from '@angular/core';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport {\n controlled,\n createPrimitive,\n dataBinding,\n deprecatedSetter,\n StateInjectionOptions,\n} from 'ng-primitives/state';\nimport { injectAccordionState } from '../accordion/accordion-state';\n\nexport interface NgpAccordionItemState<T> {\n /**\n * The value of the accordion item.\n */\n readonly value: Signal<T>;\n /**\n * Whether the accordion item is disabled.\n */\n readonly disabled: Signal<boolean>;\n /**\n * Whether the accordion item is expanded.\n */\n readonly open: Signal<boolean>;\n /**\n * The trigger id.\n */\n readonly triggerId: Signal<string | undefined>;\n /**\n * The content id.\n */\n readonly contentId: Signal<string | undefined>;\n /**\n * Set the disabled state of the accordion item.\n */\n setDisabled(value: boolean): void;\n /**\n * Set the trigger of the accordion item.\n */\n setTrigger(id: string): void;\n /**\n * Set the content of the accordion item.\n */\n setContent(id: string): void;\n}\n\nexport interface NgpAccordionItemProps<T> {\n /**\n * The value of the accordion item.\n */\n readonly value: Signal<T>;\n /**\n * Whether the accordion item is disabled.\n */\n readonly disabled?: Signal<boolean>;\n}\n\nexport const [\n NgpAccordionItemStateToken,\n ngpAccordionItem,\n _injectAccordionItemState,\n provideAccordionItemState,\n] = createPrimitive(\n 'NgpAccordionItem',\n <T>({ value, disabled: _disabled = signal(false) }: NgpAccordionItemProps<T>) => {\n const accordion = injectAccordionState<T>();\n const element = injectElementRef();\n\n const disabled = controlled(_disabled);\n\n // Whether the accordion item is expanded.\n const open = computed<boolean>(() => accordion().isOpen(value()));\n\n const trigger = signal<string | undefined>(undefined);\n const content = signal<string | undefined>(undefined);\n\n // Setup host data bindings\n dataBinding(element, 'data-orientation', accordion().orientation);\n dataBinding(element, 'data-open', open);\n dataBinding(element, 'data-disabled', () => disabled() || accordion().disabled());\n\n // Set the disabled state of the accordion item.\n function setDisabled(value: boolean) {\n disabled.set(value);\n }\n\n function setTrigger(id: string) {\n trigger.set(id);\n }\n\n function setContent(id: string) {\n content.set(id);\n }\n\n return {\n value,\n open,\n disabled: deprecatedSetter(disabled, 'setDisabled'),\n triggerId: deprecatedSetter(trigger, 'setTrigger'),\n contentId: deprecatedSetter(content, 'setContent'),\n setDisabled,\n setTrigger,\n setContent,\n } satisfies NgpAccordionItemState<T>;\n },\n);\n\nexport function injectAccordionItemState<T>(\n options?: StateInjectionOptions,\n): Signal<NgpAccordionItemState<T>> {\n return _injectAccordionItemState(options) as Signal<NgpAccordionItemState<T>>;\n}\n","import { afterRenderEffect, computed, signal, Signal } from '@angular/core';\nimport {\n explicitEffect,\n fromMutationObserver,\n injectDimensions,\n injectElementRef,\n} from 'ng-primitives/internal';\nimport { attrBinding, createPrimitive, dataBinding, listener } from 'ng-primitives/state';\nimport { safeTakeUntilDestroyed, uniqueId } from 'ng-primitives/utils';\nimport { debounceTime } from 'rxjs/operators';\nimport { injectAccordionItemState } from '../accordion-item/accordion-item-state';\nimport { injectAccordionState } from '../accordion/accordion-state';\n\nexport interface NgpAccordionContentState {\n /**\n * The id of the content region\n */\n readonly id: Signal<string>;\n}\n\nexport interface NgpAccordionContentProps {\n /**\n * The id of the content region\n */\n readonly id?: Signal<string>;\n}\n\nexport const [\n NgpAccordionContentStateToken,\n ngpAccordionContent,\n injectAccordionContentState,\n provideAccordionContentState,\n] = createPrimitive(\n 'NgpAccordionContent',\n <T>({ id = signal(uniqueId('ngp-accordion-content')) }: NgpAccordionContentProps) => {\n const element = injectElementRef();\n const accordion = injectAccordionState<T>();\n const accordionItem = injectAccordionItemState<T>();\n const dimensions = injectDimensions();\n\n const hidden = computed(() =>\n !accordionItem().open() && dimensions().height === 0 ? 'until-found' : null,\n );\n\n // Host bindings\n attrBinding(element, 'role', 'region');\n attrBinding(element, 'id', id);\n attrBinding(element, 'aria-labelledby', accordionItem().triggerId);\n attrBinding(element, 'hidden', hidden);\n\n dataBinding(element, 'data-orientation', accordion().orientation);\n dataBinding(element, 'data-open', accordionItem().open);\n dataBinding(element, 'data-closed', () => !accordionItem().open());\n\n // data-enter is set when the item opens (user interaction), data-exit when it closes.\n // Neither is set on initial render, preventing animation on page load.\n const enter = signal(false);\n const exit = signal(false);\n dataBinding(element, 'data-enter', enter);\n dataBinding(element, 'data-exit', exit);\n\n listener(element, 'beforematch', onBeforeMatch);\n const clearAnimation = (event: AnimationEvent) => {\n if (event.target === element.nativeElement) {\n enter.set(false);\n exit.set(false);\n }\n };\n listener(element, 'animationend', clearAnimation);\n listener(element, 'animationcancel', clearAnimation);\n\n // Register the content with the accordion item state\n accordionItem().setContent(id());\n\n /**\n * Handle the beforematch event to automatically open the accordion item\n * when the browser's find-in-page functionality tries to reveal hidden content.\n */\n function onBeforeMatch(): void {\n const isDisabled = accordion().disabled() || accordionItem().disabled();\n if (isDisabled) {\n return;\n }\n accordion().toggle(accordionItem().value() as T);\n }\n\n function updateDimensions(): void {\n if (accordionItem().open()) {\n const scrollHeight = element.nativeElement.scrollHeight;\n\n // Element is inside a hidden container (e.g. inactive tab with display:none).\n // All three dimensions are 0 only when the element has no layout at all.\n // Checking dimensions() (from ResizeObserver) prevents misidentifying\n // legitimately empty content (e.g. all children removed) as a hidden container.\n const { width, height } = dimensions();\n if (scrollHeight === 0 && width === 0 && height === 0) {\n return;\n }\n\n const scrollWidth = element.nativeElement.scrollWidth;\n\n // remove the inline styles to reset them\n element.nativeElement.style.removeProperty('--ngp-accordion-content-width');\n element.nativeElement.style.removeProperty('--ngp-accordion-content-height');\n // set the dimensions based on the content\n element.nativeElement.style.setProperty(\n '--ngp-accordion-content-width',\n `${scrollWidth}px`,\n );\n element.nativeElement.style.setProperty(\n '--ngp-accordion-content-height',\n `${scrollHeight}px`,\n );\n }\n }\n\n // Track dimensions() so this effect re-runs when the element becomes visible.\n // Handles the case where the accordion is initialized inside a hidden container.\n afterRenderEffect(() => {\n dimensions(); // reactive dep — re-runs when element resizes (e.g. container becomes visible)\n updateDimensions();\n });\n\n // Drive enter/exit attributes based on open state changes.\n // Skips the initial run so no animation plays on page load.\n let initialized = false;\n explicitEffect([accordionItem().open], ([isOpen]) => {\n if (!initialized) {\n initialized = true;\n return;\n }\n if (isOpen) {\n exit.set(false);\n enter.set(true);\n } else {\n enter.set(false);\n exit.set(true);\n }\n });\n\n // update dimensions when the content changes\n fromMutationObserver(element.nativeElement, {\n childList: true,\n subtree: true,\n disabled: computed(() => !accordionItem().open()),\n })\n .pipe(debounceTime(0), safeTakeUntilDestroyed())\n .subscribe(() => updateDimensions());\n\n return { id } satisfies NgpAccordionContentState;\n },\n);\n","import { Directive, input } from '@angular/core';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { ngpAccordionContent } from './accordion-content-state';\n\n/**\n * Apply the `ngpAccordionContent` directive to an element that represents the content of an accordion item.\n */\n@Directive({\n selector: '[ngpAccordionContent]',\n exportAs: 'ngpAccordionContent',\n})\nexport class NgpAccordionContent<T> {\n /**\n * The id of the content region\n */\n readonly id = input<string>(uniqueId('ngp-accordion-content'));\n\n constructor() {\n ngpAccordionContent<T>({ id: this.id });\n }\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { Directive, booleanAttribute, input } from '@angular/core';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { injectAccordionState } from '../accordion/accordion-state';\nimport { ngpAccordionItem, provideAccordionItemState } from './accordion-item-state';\n\n/**\n * Apply the `ngpAccordionItem` directive to an element that represents an accordion item.\n */\n@Directive({\n selector: '[ngpAccordionItem]',\n exportAs: 'ngpAccordionItem',\n providers: [provideAccordionItemState()],\n})\nexport class NgpAccordionItem<T> {\n /**\n * Access the accordion.\n */\n protected readonly accordion = injectAccordionState<T>();\n\n /**\n * The value of the accordion item.\n */\n readonly value = input<T>(uniqueId('ngp-accordion-item') as T, {\n alias: 'ngpAccordionItemValue',\n });\n\n /**\n * Whether the accordion item is disabled.\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpAccordionItemDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * The accordion item state.\n */\n protected readonly state = ngpAccordionItem<T>({\n value: this.value,\n disabled: this.disabled,\n });\n\n /**\n * The open state of the accordion item.\n */\n readonly open = this.state.open;\n}\n","import { HOST_TAG_NAME, inject, signal, Signal } from '@angular/core';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport { attrBinding, createPrimitive, dataBinding, listener } from 'ng-primitives/state';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { injectAccordionItemState } from '../accordion-item/accordion-item-state';\nimport { injectAccordionState } from '../accordion/accordion-state';\n\nexport interface NgpAccordionTriggerState {\n /**\n * The id of the trigger button\n */\n readonly id: Signal<string>;\n /**\n * Toggle the accordion item.\n */\n toggle(): void;\n}\n\nexport interface NgpAccordionTriggerProps {\n /**\n * The id of the trigger button\n */\n readonly id?: Signal<string>;\n}\n\nexport const [\n NgpAccordionTriggerStateToken,\n ngpAccordionTrigger,\n injectAccordionTriggerState,\n provideAccordionTriggerState,\n] = createPrimitive(\n 'NgpAccordionTrigger',\n <T>({ id = signal(uniqueId('ngp-accordion-trigger')) }: NgpAccordionTriggerProps) => {\n const element = injectElementRef();\n const tagName = inject(HOST_TAG_NAME);\n const accordion = injectAccordionState<T>();\n const accordionItem = injectAccordionItemState<T>();\n\n // Host bindings\n attrBinding(element, 'id', id);\n attrBinding(element, 'type', tagName === 'button' ? 'button' : null);\n attrBinding(element, 'aria-controls', accordionItem().contentId);\n attrBinding(element, 'aria-expanded', accordionItem().open);\n dataBinding(element, 'data-orientation', accordion().orientation);\n dataBinding(element, 'data-open', accordionItem().open);\n dataBinding(\n element,\n 'data-disabled',\n () => accordionItem().disabled() || accordion().disabled(),\n );\n\n // register the trigger with the accordion item\n accordionItem().setTrigger(id());\n\n // Methods\n function toggle(): void {\n if (accordionItem().disabled() || accordion().disabled()) {\n return;\n }\n\n accordion().toggle(accordionItem().value()!);\n }\n\n // Event listeners\n listener(element, 'click', toggle);\n\n return { id, toggle } satisfies NgpAccordionTriggerState;\n },\n);\n","import { Directive, input } from '@angular/core';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { ngpAccordionTrigger } from './accordion-trigger-state';\n\n/**\n * Apply the `ngpAccordionTrigger` directive to an element that represents the trigger for an accordion item, such as a button.\n */\n@Directive({\n selector: '[ngpAccordionTrigger]',\n exportAs: 'ngpAccordionTrigger',\n})\nexport class NgpAccordionTrigger<T> {\n /**\n * The id of the trigger.\n */\n readonly id = input<string>(uniqueId('ngp-accordion-trigger'));\n\n private readonly state = ngpAccordionTrigger<T>({ id: this.id });\n\n /**\n * Toggle the accordion item.\n */\n toggle(): void {\n this.state.toggle();\n }\n}\n","import { InjectionToken, Provider, inject } from '@angular/core';\nimport type { NgpAccordionType } from '../accordion/accordion-state';\n\nexport interface NgpAccordionConfig {\n /**\n * The default type of the accordion\n * @default 'single'\n */\n type: NgpAccordionType;\n /**\n * Whether the accordion is collapsible\n * @default false\n */\n collapsible: boolean;\n /**\n * The default orientation of the accordion\n * @default 'vertical'\n */\n orientation: 'vertical' | 'horizontal';\n}\n\nexport const defaultAccordionConfig: NgpAccordionConfig = {\n type: 'single',\n collapsible: false,\n orientation: 'vertical',\n};\n\nexport const NgpAccordionConfigToken = new InjectionToken<NgpAccordionConfig>(\n 'NgpAccordionConfigToken',\n);\n\n/**\n * Provide the default Accordion configuration\n * @param config The Accordion configuration\n * @returns The provider\n */\nexport function provideAccordionConfig(config: Partial<NgpAccordionConfig>): Provider[] {\n return [\n {\n provide: NgpAccordionConfigToken,\n useValue: { ...defaultAccordionConfig, ...config },\n },\n ];\n}\n\n/**\n * Inject the Accordion configuration\n * @returns The global Accordion configuration\n */\nexport function injectAccordionConfig(): NgpAccordionConfig {\n return inject(NgpAccordionConfigToken, { optional: true }) ?? defaultAccordionConfig;\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, Directive, input, output } from '@angular/core';\nimport { NgpOrientation } from 'ng-primitives/common';\nimport { injectAccordionConfig } from '../config/accordion-config';\nimport { ngpAccordion, NgpAccordionType, provideAccordionState } from './accordion-state';\n\n/**\n * Apply the `ngpAccordion` directive to an element that represents the group of accordion items.\n */\n@Directive({\n selector: '[ngpAccordion]',\n exportAs: 'ngpAccordion',\n providers: [provideAccordionState()],\n})\nexport class NgpAccordion<T> {\n /**\n * Access the global accordion configuration.\n */\n private readonly config = injectAccordionConfig();\n\n /**\n * The type of the accordion.\n */\n readonly type = input<NgpAccordionType>(this.config.type, {\n alias: 'ngpAccordionType',\n });\n\n /**\n * Whether the accordion is collapsible.\n */\n readonly collapsible = input<boolean, BooleanInput>(this.config.collapsible, {\n alias: 'ngpAccordionCollapsible',\n transform: booleanAttribute,\n });\n\n /**\n * The value of the accordion.\n */\n readonly value = input<T | T[] | null>(null, {\n alias: 'ngpAccordionValue',\n });\n\n /**\n * Event emitted when the accordion value changes.\n */\n readonly valueChange = output<T | T[] | null>({\n alias: 'ngpAccordionValueChange',\n });\n\n /**\n * Whether the accordion is disabled.\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpAccordionDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * The accordion orientation.\n */\n readonly orientation = input<NgpOrientation>(this.config.orientation, {\n alias: 'ngpAccordionOrientation',\n });\n\n /**\n * The accordion state.\n */\n protected readonly state = ngpAccordion<T>({\n type: this.type,\n collapsible: this.collapsible,\n value: this.value,\n disabled: this.disabled,\n orientation: this.orientation,\n onValueChange: value => this.valueChange.emit(value),\n });\n\n /**\n * @param value The value to check.\n * @returns Whether the value is open.\n * @internal\n */\n isOpen(value: T): boolean {\n return this.state.isOpen(value);\n }\n\n /**\n * Set the value of the accordion.\n * @param value The value to set.\n */\n setValue(value: T | T[] | null): void {\n this.state.setValue(value);\n }\n\n /**\n * @param value The value to toggle.\n */\n toggle(value: T): void {\n this.state.toggle(value);\n }\n\n /**\n * Set the disabled state of the accordion.\n * @param value The disabled state.\n */\n setDisabled(value: boolean): void {\n this.state.setDisabled(value);\n }\n\n /**\n * Set the orientation of the accordion.\n * @param value The orientation.\n */\n setOrientation(value: NgpOrientation): void {\n this.state.setOrientation(value);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;AAoFO,MAAM,CAAC,sBAAsB,EAAE,YAAY,EAAE,qBAAqB,EAAE,qBAAqB,CAAC,GAC/F,eAAe,CACb,cAAc,EACd,CAAI,EACF,IAAI,EACJ,WAAW,EACX,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,EAC5B,QAAQ,EAAE,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,EACnC,WAAW,EAAE,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,EAC9C,aAAa,GACQ,KAA0B;AAC/C,IAAA,MAAM,OAAO,GAAG,gBAAgB,EAAE;;AAGlC,IAAA,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC;AAChC,IAAA,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC;AACtC,IAAA,MAAM,WAAW,GAAG,UAAU,CAAC,YAAY,CAAC;;AAG5C,IAAA,WAAW,CAAC,OAAO,EAAE,kBAAkB,EAAE,WAAW,CAAC;AACrD,IAAA,WAAW,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,CAAC;;IAG/C,SAAS,WAAW,CAAC,KAAc,EAAA;AACjC,QAAA,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;IACrB;IAEA,SAAS,cAAc,CAAC,KAAqB,EAAA;AAC3C,QAAA,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;IACxB;IAEA,SAAS,QAAQ,CAAC,QAAwB,EAAA;AACxC,QAAA,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;IACrB;;AAGA;;AAEG;IACH,SAAS,MAAM,CAAC,SAAY,EAAA;AAC1B,QAAA,IAAI,IAAI,EAAE,KAAK,UAAU,EAAE;YACzB,OAAQ,KAAK,EAAiB,EAAE,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK;QAC9D;AAEA,QAAA,OAAO,KAAK,EAAE,KAAK,SAAS;IAC9B;IAEA,SAAS,MAAM,CAAC,SAAY,EAAA;AAC1B,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC;;QAG9B,IAAI,IAAI,EAAE,KAAK,QAAQ,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACjD;QACF;;AAGA,QAAA,IAAI,IAAI,EAAE,KAAK,QAAQ,EAAE;YACvB,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS;AACxC,YAAA,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;AACnB,YAAA,aAAa,GAAG,QAAQ,CAAC;YACzB;QACF;;AAGA,QAAA,IAAI,MAAM,GAAI,KAAK,EAAU,IAAI,EAAE;QAEnC,IAAI,IAAI,EAAE;AACR,YAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC;QAC9C;aAAO;AACL,YAAA,MAAM,GAAG,CAAC,GAAG,MAAM,EAAE,SAAS,CAAC;QACjC;AACA,QAAA,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;AACjB,QAAA,aAAa,GAAG,MAAM,CAAC;IACzB;IAEA,OAAO;AACL,QAAA,KAAK,EAAE,gBAAgB,CAAC,KAAK,EAAE,UAAU,CAAC;AAC1C,QAAA,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,EAAE,aAAa,CAAC;AACnD,QAAA,WAAW,EAAE,gBAAgB,CAAC,WAAW,EAAE,gBAAgB,CAAC;QAC5D,WAAW;QACX,cAAc;QACd,QAAQ;QACR,MAAM;QACN,MAAM;KACwB;AAClC,CAAC;AAKC,SAAU,oBAAoB,CAClC,OAA+B,EAAA;AAE/B,IAAA,OAAO,qBAAqB,CAAC,OAAO,CAAiC;AACvE;;ACzHO,MAAM,CACX,0BAA0B,EAC1B,gBAAgB,EAChB,yBAAyB,EACzB,yBAAyB,EAC1B,GAAG,eAAe,CACjB,kBAAkB,EAClB,CAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,EAA4B,KAAI;AAC9E,IAAA,MAAM,SAAS,GAAG,oBAAoB,EAAK;AAC3C,IAAA,MAAM,OAAO,GAAG,gBAAgB,EAAE;AAElC,IAAA,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC;;AAGtC,IAAA,MAAM,IAAI,GAAG,QAAQ,CAAU,MAAM,SAAS,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,2EAAC;AAEjE,IAAA,MAAM,OAAO,GAAG,MAAM,CAAqB,SAAS,8EAAC;AACrD,IAAA,MAAM,OAAO,GAAG,MAAM,CAAqB,SAAS,8EAAC;;IAGrD,WAAW,CAAC,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,CAAC,WAAW,CAAC;AACjE,IAAA,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC;AACvC,IAAA,WAAW,CAAC,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,EAAE,IAAI,SAAS,EAAE,CAAC,QAAQ,EAAE,CAAC;;IAGjF,SAAS,WAAW,CAAC,KAAc,EAAA;AACjC,QAAA,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;IACrB;IAEA,SAAS,UAAU,CAAC,EAAU,EAAA;AAC5B,QAAA,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;IACjB;IAEA,SAAS,UAAU,CAAC,EAAU,EAAA;AAC5B,QAAA,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;IACjB;IAEA,OAAO;QACL,KAAK;QACL,IAAI;AACJ,QAAA,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,EAAE,aAAa,CAAC;AACnD,QAAA,SAAS,EAAE,gBAAgB,CAAC,OAAO,EAAE,YAAY,CAAC;AAClD,QAAA,SAAS,EAAE,gBAAgB,CAAC,OAAO,EAAE,YAAY,CAAC;QAClD,WAAW;QACX,UAAU;QACV,UAAU;KACwB;AACtC,CAAC;AAGG,SAAU,wBAAwB,CACtC,OAA+B,EAAA;AAE/B,IAAA,OAAO,yBAAyB,CAAC,OAAO,CAAqC;AAC/E;;ACpFO,MAAM,CACX,6BAA6B,EAC7B,mBAAmB,EACnB,2BAA2B,EAC3B,4BAA4B,EAC7B,GAAG,eAAe,CACjB,qBAAqB,EACrB,CAAI,EAAE,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC,EAA4B,KAAI;AAClF,IAAA,MAAM,OAAO,GAAG,gBAAgB,EAAE;AAClC,IAAA,MAAM,SAAS,GAAG,oBAAoB,EAAK;AAC3C,IAAA,MAAM,aAAa,GAAG,wBAAwB,EAAK;AACnD,IAAA,MAAM,UAAU,GAAG,gBAAgB,EAAE;AAErC,IAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,MACtB,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,IAAI,UAAU,EAAE,CAAC,MAAM,KAAK,CAAC,GAAG,aAAa,GAAG,IAAI,6EAC5E;;AAGD,IAAA,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC;AACtC,IAAA,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;IAC9B,WAAW,CAAC,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,CAAC,SAAS,CAAC;AAClE,IAAA,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC;IAEtC,WAAW,CAAC,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,CAAC,WAAW,CAAC;IACjE,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,IAAI,CAAC;AACvD,IAAA,WAAW,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,CAAC;;;AAIlE,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,4EAAC;AAC3B,IAAA,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,2EAAC;AAC1B,IAAA,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,CAAC;AACzC,IAAA,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC;AAEvC,IAAA,QAAQ,CAAC,OAAO,EAAE,aAAa,EAAE,aAAa,CAAC;AAC/C,IAAA,MAAM,cAAc,GAAG,CAAC,KAAqB,KAAI;QAC/C,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,CAAC,aAAa,EAAE;AAC1C,YAAA,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AAChB,YAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QACjB;AACF,IAAA,CAAC;AACD,IAAA,QAAQ,CAAC,OAAO,EAAE,cAAc,EAAE,cAAc,CAAC;AACjD,IAAA,QAAQ,CAAC,OAAO,EAAE,iBAAiB,EAAE,cAAc,CAAC;;AAGpD,IAAA,aAAa,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;AAEhC;;;AAGG;AACH,IAAA,SAAS,aAAa,GAAA;AACpB,QAAA,MAAM,UAAU,GAAG,SAAS,EAAE,CAAC,QAAQ,EAAE,IAAI,aAAa,EAAE,CAAC,QAAQ,EAAE;QACvE,IAAI,UAAU,EAAE;YACd;QACF;QACA,SAAS,EAAE,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,KAAK,EAAO,CAAC;IAClD;AAEA,IAAA,SAAS,gBAAgB,GAAA;AACvB,QAAA,IAAI,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE;AAC1B,YAAA,MAAM,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,YAAY;;;;;YAMvD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE;AACtC,YAAA,IAAI,YAAY,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,EAAE;gBACrD;YACF;AAEA,YAAA,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,WAAW;;YAGrD,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC,+BAA+B,CAAC;YAC3E,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC,gCAAgC,CAAC;;AAE5E,YAAA,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,CACrC,+BAA+B,EAC/B,CAAA,EAAG,WAAW,CAAA,EAAA,CAAI,CACnB;AACD,YAAA,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,CACrC,gCAAgC,EAChC,CAAA,EAAG,YAAY,CAAA,EAAA,CAAI,CACpB;QACH;IACF;;;IAIA,iBAAiB,CAAC,MAAK;QACrB,UAAU,EAAE,CAAC;AACb,QAAA,gBAAgB,EAAE;AACpB,IAAA,CAAC,CAAC;;;IAIF,IAAI,WAAW,GAAG,KAAK;AACvB,IAAA,cAAc,CAAC,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAI;QAClD,IAAI,CAAC,WAAW,EAAE;YAChB,WAAW,GAAG,IAAI;YAClB;QACF;QACA,IAAI,MAAM,EAAE;AACV,YAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AACf,YAAA,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;QACjB;aAAO;AACL,YAAA,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AAChB,YAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;QAChB;AACF,IAAA,CAAC,CAAC;;AAGF,IAAA,oBAAoB,CAAC,OAAO,CAAC,aAAa,EAAE;AAC1C,QAAA,SAAS,EAAE,IAAI;AACf,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,CAAC;KAClD;SACE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,sBAAsB,EAAE;AAC9C,SAAA,SAAS,CAAC,MAAM,gBAAgB,EAAE,CAAC;IAEtC,OAAO,EAAE,EAAE,EAAqC;AAClD,CAAC;;AClJH;;AAEG;MAKU,mBAAmB,CAAA;AAM9B,IAAA,WAAA,GAAA;AALA;;AAEG;QACM,IAAA,CAAA,EAAE,GAAG,KAAK,CAAS,QAAQ,CAAC,uBAAuB,CAAC,yEAAC;QAG5D,mBAAmB,CAAI,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;IACzC;+GARW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,QAAQ,EAAE,qBAAqB;AAChC,iBAAA;;;ACJD;;AAEG;MAMU,gBAAgB,CAAA;AAL7B,IAAA,WAAA,GAAA;AAME;;AAEG;QACgB,IAAA,CAAA,SAAS,GAAG,oBAAoB,EAAK;AAExD;;AAEG;AACM,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAI,QAAQ,CAAC,oBAAoB,CAAM,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,OAAA,EAAA,8BAAA,EAAA,CAAA,EAC3D,KAAK,EAAE,uBAAuB,EAAA,CAC9B;AAEF;;AAEG;AACM,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAwB,KAAK,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,CAAA,EACpD,KAAK,EAAE,0BAA0B;YACjC,SAAS,EAAE,gBAAgB,EAAA,CAC3B;AAEF;;AAEG;QACgB,IAAA,CAAA,KAAK,GAAG,gBAAgB,CAAI;YAC7C,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACxB,SAAA,CAAC;AAEF;;AAEG;AACM,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI;AAChC,IAAA;+GAjCY,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAFhB,CAAC,yBAAyB,EAAE,CAAC,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAE7B,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,SAAS,EAAE,CAAC,yBAAyB,EAAE,CAAC;AACzC,iBAAA;;;ACYM,MAAM,CACX,6BAA6B,EAC7B,mBAAmB,EACnB,2BAA2B,EAC3B,4BAA4B,EAC7B,GAAG,eAAe,CACjB,qBAAqB,EACrB,CAAI,EAAE,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC,EAA4B,KAAI;AAClF,IAAA,MAAM,OAAO,GAAG,gBAAgB,EAAE;AAClC,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC;AACrC,IAAA,MAAM,SAAS,GAAG,oBAAoB,EAAK;AAC3C,IAAA,MAAM,aAAa,GAAG,wBAAwB,EAAK;;AAGnD,IAAA,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;AAC9B,IAAA,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,KAAK,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAAC;IACpE,WAAW,CAAC,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,CAAC,SAAS,CAAC;IAChE,WAAW,CAAC,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,CAAC,IAAI,CAAC;IAC3D,WAAW,CAAC,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,CAAC,WAAW,CAAC;IACjE,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,IAAI,CAAC;IACvD,WAAW,CACT,OAAO,EACP,eAAe,EACf,MAAM,aAAa,EAAE,CAAC,QAAQ,EAAE,IAAI,SAAS,EAAE,CAAC,QAAQ,EAAE,CAC3D;;AAGD,IAAA,aAAa,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;;AAGhC,IAAA,SAAS,MAAM,GAAA;AACb,QAAA,IAAI,aAAa,EAAE,CAAC,QAAQ,EAAE,IAAI,SAAS,EAAE,CAAC,QAAQ,EAAE,EAAE;YACxD;QACF;QAEA,SAAS,EAAE,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,KAAK,EAAG,CAAC;IAC9C;;AAGA,IAAA,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC;AAElC,IAAA,OAAO,EAAE,EAAE,EAAE,MAAM,EAAqC;AAC1D,CAAC;;AC/DH;;AAEG;MAKU,mBAAmB,CAAA;AAJhC,IAAA,WAAA,GAAA;AAKE;;AAEG;QACM,IAAA,CAAA,EAAE,GAAG,KAAK,CAAS,QAAQ,CAAC,uBAAuB,CAAC,yEAAC;QAE7C,IAAA,CAAA,KAAK,GAAG,mBAAmB,CAAI,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;AAQjE,IAAA;AANC;;AAEG;IACH,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;IACrB;+GAbW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,QAAQ,EAAE,qBAAqB;AAChC,iBAAA;;;ACWM,MAAM,sBAAsB,GAAuB;AACxD,IAAA,IAAI,EAAE,QAAQ;AACd,IAAA,WAAW,EAAE,KAAK;AAClB,IAAA,WAAW,EAAE,UAAU;CACxB;AAEM,MAAM,uBAAuB,GAAG,IAAI,cAAc,CACvD,yBAAyB,CAC1B;AAED;;;;AAIG;AACG,SAAU,sBAAsB,CAAC,MAAmC,EAAA;IACxE,OAAO;AACL,QAAA;AACE,YAAA,OAAO,EAAE,uBAAuB;AAChC,YAAA,QAAQ,EAAE,EAAE,GAAG,sBAAsB,EAAE,GAAG,MAAM,EAAE;AACnD,SAAA;KACF;AACH;AAEA;;;AAGG;SACa,qBAAqB,GAAA;AACnC,IAAA,OAAO,MAAM,CAAC,uBAAuB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,sBAAsB;AACtF;;AC7CA;;AAEG;MAMU,YAAY,CAAA;AALzB,IAAA,WAAA,GAAA;AAME;;AAEG;QACc,IAAA,CAAA,MAAM,GAAG,qBAAqB,EAAE;AAEjD;;AAEG;AACM,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAmB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,MAAA,EAAA,8BAAA,EAAA,CAAA,EACtD,KAAK,EAAE,kBAAkB,GACzB;AAEF;;AAEG;QACM,IAAA,CAAA,WAAW,GAAG,KAAK,CAAwB,IAAI,CAAC,MAAM,CAAC,WAAW,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,aAAA,EAAA,8BAAA,EAAA,CAAA,EACzE,KAAK,EAAE,yBAAyB;YAChC,SAAS,EAAE,gBAAgB,EAAA,CAC3B;AAEF;;AAEG;QACM,IAAA,CAAA,KAAK,GAAG,KAAK,CAAiB,IAAI,6EACzC,KAAK,EAAE,mBAAmB,EAAA,CAC1B;AAEF;;AAEG;QACM,IAAA,CAAA,WAAW,GAAG,MAAM,CAAiB;AAC5C,YAAA,KAAK,EAAE,yBAAyB;AACjC,SAAA,CAAC;AAEF;;AAEG;AACM,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAwB,KAAK,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,CAAA,EACpD,KAAK,EAAE,sBAAsB;YAC7B,SAAS,EAAE,gBAAgB,EAAA,CAC3B;AAEF;;AAEG;AACM,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAiB,IAAI,CAAC,MAAM,CAAC,WAAW,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,aAAA,EAAA,8BAAA,EAAA,CAAA,EAClE,KAAK,EAAE,yBAAyB,GAChC;AAEF;;AAEG;QACgB,IAAA,CAAA,KAAK,GAAG,YAAY,CAAI;YACzC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7B,YAAA,aAAa,EAAE,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AACrD,SAAA,CAAC;AAyCH,IAAA;AAvCC;;;;AAIG;AACH,IAAA,MAAM,CAAC,KAAQ,EAAA;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;IACjC;AAEA;;;AAGG;AACH,IAAA,QAAQ,CAAC,KAAqB,EAAA;AAC5B,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;IAC5B;AAEA;;AAEG;AACH,IAAA,MAAM,CAAC,KAAQ,EAAA;AACb,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;IAC1B;AAEA;;;AAGG;AACH,IAAA,WAAW,CAAC,KAAc,EAAA;AACxB,QAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC;IAC/B;AAEA;;;AAGG;AACH,IAAA,cAAc,CAAC,KAAqB,EAAA;AAClC,QAAA,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC;IAClC;+GApGW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,yBAAA,EAAA,EAAA,SAAA,EAFZ,CAAC,qBAAqB,EAAE,CAAC,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAEzB,YAAY,EAAA,UAAA,EAAA,CAAA;kBALxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,SAAS,EAAE,CAAC,qBAAqB,EAAE,CAAC;AACrC,iBAAA;;;ACbD;;AAEG;;;;"}
|