ng-primitives 0.56.0 → 0.58.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/button/button/button-state.d.ts +1 -11
- package/button/button/button.d.ts +0 -8
- package/button/index.d.ts +1 -1
- package/combobox/combobox/combobox.d.ts +2 -0
- package/combobox/combobox-input/combobox-input.d.ts +5 -0
- package/date-picker/date-picker-date-button/date-picker-date-button.d.ts +1 -2
- package/date-picker/date-picker-next-month/date-picker-next-month.d.ts +1 -2
- package/date-picker/date-picker-previous-month/date-picker-previous-month.d.ts +1 -2
- package/fesm2022/ng-primitives-button.mjs +5 -31
- package/fesm2022/ng-primitives-button.mjs.map +1 -1
- package/fesm2022/ng-primitives-combobox.mjs +14 -2
- package/fesm2022/ng-primitives-combobox.mjs.map +1 -1
- package/fesm2022/ng-primitives-date-picker.mjs +7 -16
- package/fesm2022/ng-primitives-date-picker.mjs.map +1 -1
- package/fesm2022/ng-primitives-internal.mjs +43 -27
- package/fesm2022/ng-primitives-internal.mjs.map +1 -1
- package/fesm2022/ng-primitives-pagination.mjs +11 -22
- package/fesm2022/ng-primitives-pagination.mjs.map +1 -1
- package/fesm2022/ng-primitives-popover.mjs +18 -3
- package/fesm2022/ng-primitives-popover.mjs.map +1 -1
- package/fesm2022/ng-primitives-portal.mjs +52 -4
- package/fesm2022/ng-primitives-portal.mjs.map +1 -1
- package/fesm2022/ng-primitives-tabs.mjs +23 -16
- package/fesm2022/ng-primitives-tabs.mjs.map +1 -1
- package/fesm2022/ng-primitives-toggle-group.mjs +2 -2
- package/fesm2022/ng-primitives-toggle-group.mjs.map +1 -1
- package/fesm2022/ng-primitives-toolbar.mjs +2 -2
- package/fesm2022/ng-primitives-toolbar.mjs.map +1 -1
- package/fesm2022/ng-primitives-tooltip.mjs +17 -2
- package/fesm2022/ng-primitives-tooltip.mjs.map +1 -1
- package/fesm2022/ng-primitives-utils.mjs +10 -1
- package/fesm2022/ng-primitives-utils.mjs.map +1 -1
- package/internal/index.d.ts +1 -1
- package/internal/interactions/button.d.ts +14 -0
- package/internal/utilities/interaction.d.ts +6 -0
- package/package.json +21 -21
- package/pagination/pagination-button/pagination-button.d.ts +1 -2
- package/pagination/pagination-first/pagination-first.d.ts +1 -2
- package/pagination/pagination-last/pagination-last.d.ts +1 -2
- package/pagination/pagination-next/pagination-next.d.ts +1 -2
- package/pagination/pagination-previous/pagination-previous.d.ts +1 -2
- package/popover/index.d.ts +1 -0
- package/popover/popover-arrow/popover-arrow.d.ts +6 -0
- package/portal/index.d.ts +1 -0
- package/portal/overlay-arrow.d.ts +1 -0
- package/portal/overlay.d.ts +17 -0
- package/schematics/ng-generate/templates/button/button.__fileSuffix@dasherize__.ts.template +44 -2
- package/tabs/tab-button/tab-button.d.ts +4 -3
- package/tabs/tab-panel/tab-panel.d.ts +2 -3
- package/tabs/tabset/tabset.d.ts +4 -4
- package/tooltip/index.d.ts +1 -0
- package/tooltip/tooltip-arrow/tooltip-arrow.d.ts +6 -0
- package/utils/helpers/attributes.d.ts +2 -0
- package/utils/index.d.ts +2 -1
- package/internal/signals/sync-state.d.ts +0 -2
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { InjectionToken, inject, TemplateRef, ViewContainerRef, Injector, Directive, contentChild, computed, ElementRef, HostListener, input, booleanAttribute, output, signal, afterNextRender } from '@angular/core';
|
|
3
3
|
import { FocusMonitor } from '@angular/cdk/a11y';
|
|
4
|
-
import * as i1 from 'ng-primitives/button';
|
|
5
|
-
import { syncButton, NgpButton } from 'ng-primitives/button';
|
|
6
4
|
import { injectDateAdapter } from 'ng-primitives/date-time';
|
|
5
|
+
import { setupButton } from 'ng-primitives/internal';
|
|
7
6
|
import { createStateToken, createStateProvider, createStateInjector, createState } from 'ng-primitives/state';
|
|
8
7
|
import { uniqueId, onChange } from 'ng-primitives/utils';
|
|
9
8
|
|
|
@@ -238,7 +237,7 @@ class NgpDatePickerDateButton {
|
|
|
238
237
|
*/
|
|
239
238
|
this.isButton = this.elementRef.nativeElement.tagName === 'BUTTON';
|
|
240
239
|
this.datePicker.registerButton(this);
|
|
241
|
-
|
|
240
|
+
setupButton({ disabled: this.disabled });
|
|
242
241
|
}
|
|
243
242
|
ngOnDestroy() {
|
|
244
243
|
this.datePicker.unregisterButton(this);
|
|
@@ -378,7 +377,7 @@ class NgpDatePickerDateButton {
|
|
|
378
377
|
return getComputedStyle(this.elementRef.nativeElement).direction === 'rtl' ? 'rtl' : 'ltr';
|
|
379
378
|
}
|
|
380
379
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: NgpDatePickerDateButton, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
381
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.11", type: NgpDatePickerDateButton, isStandalone: true, selector: "[ngpDatePickerDateButton]", host: { listeners: { "click": "select()", "keydown.enter": "select($event)", "keydown.space": "select($event)", "keydown.arrowLeft": "focusPrevious($event)", "keydown.arrowRight": "focusNext($event)", "keydown.arrowUp": "focusAbove($event)", "keydown.arrowDown": "focusBelow($event)", "keydown.home": "focusFirst($event)", "keydown.end": "focusLast($event)", "keydown.pageUp": "focusPreviousMonth($event)", "keydown.pageDown": "focusNextMonth($event)" }, properties: { "attr.role": "!isButton ? \"button\" : null", "attr.tabindex": "focused() ? 0 : -1", "attr.data-selected": "selected() ? \"\" : null", "attr.
|
|
380
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.11", type: NgpDatePickerDateButton, isStandalone: true, selector: "[ngpDatePickerDateButton]", host: { listeners: { "click": "select()", "keydown.enter": "select($event)", "keydown.space": "select($event)", "keydown.arrowLeft": "focusPrevious($event)", "keydown.arrowRight": "focusNext($event)", "keydown.arrowUp": "focusAbove($event)", "keydown.arrowDown": "focusBelow($event)", "keydown.home": "focusFirst($event)", "keydown.end": "focusLast($event)", "keydown.pageUp": "focusPreviousMonth($event)", "keydown.pageDown": "focusNextMonth($event)" }, properties: { "attr.role": "!isButton ? \"button\" : null", "attr.tabindex": "focused() ? 0 : -1", "attr.data-selected": "selected() ? \"\" : null", "attr.aria-disabled": "disabled()", "attr.data-outside-month": "outside() ? \"\" : null", "attr.data-today": "today() ? \"\" : null" } }, providers: [{ provide: NgpDatePickerDateButtonToken, useExisting: NgpDatePickerDateButton }], exportAs: ["ngpDatePickerDateButton"], ngImport: i0 }); }
|
|
382
381
|
}
|
|
383
382
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: NgpDatePickerDateButton, decorators: [{
|
|
384
383
|
type: Directive,
|
|
@@ -390,12 +389,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImpo
|
|
|
390
389
|
'[attr.role]': '!isButton ? "button" : null',
|
|
391
390
|
'[attr.tabindex]': 'focused() ? 0 : -1',
|
|
392
391
|
'[attr.data-selected]': 'selected() ? "" : null',
|
|
393
|
-
'[attr.data-disabled]': 'disabled() ? "" : null',
|
|
394
392
|
'[attr.aria-disabled]': 'disabled()',
|
|
395
393
|
'[attr.data-outside-month]': 'outside() ? "" : null',
|
|
396
394
|
'[attr.data-today]': 'today() ? "" : null',
|
|
397
395
|
},
|
|
398
|
-
hostDirectives: [NgpButton],
|
|
399
396
|
}]
|
|
400
397
|
}], ctorParameters: () => [], propDecorators: { select: [{
|
|
401
398
|
type: HostListener,
|
|
@@ -553,7 +550,7 @@ class NgpDatePickerNextMonth {
|
|
|
553
550
|
}
|
|
554
551
|
return false;
|
|
555
552
|
});
|
|
556
|
-
|
|
553
|
+
setupButton({ disabled: this.disabled });
|
|
557
554
|
}
|
|
558
555
|
/**
|
|
559
556
|
* Navigate to the next month.
|
|
@@ -575,18 +572,15 @@ class NgpDatePickerNextMonth {
|
|
|
575
572
|
this.datePicker.setFocusedDate(date, 'mouse', 'forward');
|
|
576
573
|
}
|
|
577
574
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: NgpDatePickerNextMonth, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
578
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.11", type: NgpDatePickerNextMonth, isStandalone: true, selector: "[ngpDatePickerNextMonth]", host: { listeners: { "click": "navigateToNextMonth()" }, properties: { "attr.
|
|
575
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.11", type: NgpDatePickerNextMonth, isStandalone: true, selector: "[ngpDatePickerNextMonth]", host: { listeners: { "click": "navigateToNextMonth()" }, properties: { "attr.aria-disabled": "disabled()", "attr.type": "isButton ? \"button\" : null" } }, exportAs: ["ngpDatePickerNextMonth"], ngImport: i0 }); }
|
|
579
576
|
}
|
|
580
577
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: NgpDatePickerNextMonth, decorators: [{
|
|
581
578
|
type: Directive,
|
|
582
579
|
args: [{
|
|
583
580
|
selector: '[ngpDatePickerNextMonth]',
|
|
584
581
|
exportAs: 'ngpDatePickerNextMonth',
|
|
585
|
-
hostDirectives: [NgpButton],
|
|
586
582
|
host: {
|
|
587
|
-
'[attr.data-disabled]': 'disabled() ? "" : null',
|
|
588
583
|
'[attr.aria-disabled]': 'disabled()',
|
|
589
|
-
'[attr.disabled]': 'isButton && disabled() ? true : null',
|
|
590
584
|
'[attr.type]': 'isButton ? "button" : null',
|
|
591
585
|
},
|
|
592
586
|
}]
|
|
@@ -642,7 +636,7 @@ class NgpDatePickerPreviousMonth {
|
|
|
642
636
|
}
|
|
643
637
|
return false;
|
|
644
638
|
});
|
|
645
|
-
|
|
639
|
+
setupButton({ disabled: this.disabled });
|
|
646
640
|
}
|
|
647
641
|
/**
|
|
648
642
|
* Navigate to the previous month.
|
|
@@ -664,18 +658,15 @@ class NgpDatePickerPreviousMonth {
|
|
|
664
658
|
this.datePicker.setFocusedDate(date, 'mouse', 'backward');
|
|
665
659
|
}
|
|
666
660
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: NgpDatePickerPreviousMonth, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
667
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.11", type: NgpDatePickerPreviousMonth, isStandalone: true, selector: "[ngpDatePickerPreviousMonth]", host: { listeners: { "click": "navigateToPreviouMonth()" }, properties: { "attr.
|
|
661
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.11", type: NgpDatePickerPreviousMonth, isStandalone: true, selector: "[ngpDatePickerPreviousMonth]", host: { listeners: { "click": "navigateToPreviouMonth()" }, properties: { "attr.aria-disabled": "disabled()", "attr.type": "isButton ? \"button\" : null" } }, exportAs: ["ngpDatePickerPreviousMonth"], ngImport: i0 }); }
|
|
668
662
|
}
|
|
669
663
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: NgpDatePickerPreviousMonth, decorators: [{
|
|
670
664
|
type: Directive,
|
|
671
665
|
args: [{
|
|
672
666
|
selector: '[ngpDatePickerPreviousMonth]',
|
|
673
667
|
exportAs: 'ngpDatePickerPreviousMonth',
|
|
674
|
-
hostDirectives: [NgpButton],
|
|
675
668
|
host: {
|
|
676
|
-
'[attr.data-disabled]': 'disabled() ? "" : null',
|
|
677
669
|
'[attr.aria-disabled]': 'disabled()',
|
|
678
|
-
'[attr.disabled]': 'isButton && disabled() ? true : null',
|
|
679
670
|
'[attr.type]': 'isButton ? "button" : null',
|
|
680
671
|
},
|
|
681
672
|
}]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-primitives-date-picker.mjs","sources":["../../../../packages/ng-primitives/date-picker/src/date-picker-row-render/date-picker-row-render-token.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-cell-render/date-picker-cell-render-token.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-cell-render/date-picker-cell-render.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-date-button/date-picker-date-button-token.ts","../../../../packages/ng-primitives/date-picker/src/date-picker/date-picker-token.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-cell/date-picker-cell.ts","../../../../packages/ng-primitives/date-picker/src/date-picker/date-picker-state.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-date-button/date-picker-date-button.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-grid/date-picker-grid.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-label/date-picker-label-token.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-label/date-picker-label.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-next-month/date-picker-next-month.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-previous-month/date-picker-previous-month.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-row-render/date-picker-row-render.ts","../../../../packages/ng-primitives/date-picker/src/date-picker/date-picker.ts","../../../../packages/ng-primitives/date-picker/src/ng-primitives-date-picker.ts"],"sourcesContent":["import { InjectionToken, inject } from '@angular/core';\nimport type { NgpDatePickerRowRender } from './date-picker-row-render';\n\nexport const NgpDatePickerRowRenderToken = new InjectionToken<NgpDatePickerRowRender<unknown>>(\n 'NgpDatePickerRowRenderToken',\n);\n\n/**\n * Inject the DatePickerRowRender directive instance\n */\nexport function injectDatePickerRowRender<T>(): NgpDatePickerRowRender<T> {\n return inject(NgpDatePickerRowRenderToken) as NgpDatePickerRowRender<T>;\n}\n\nexport const NgpDatePickerWeekToken = new InjectionToken<unknown[]>('NgpDatePickerWeekToken');\n\n/**\n * Inject current week days\n */\nexport function injectDatePickerWeek<T>(): T[] {\n return inject(NgpDatePickerWeekToken) as T[];\n}\n","import { InjectionToken, inject } from '@angular/core';\nimport type { NgpDatePickerCellRender } from './date-picker-cell-render';\n\nexport const NgpDatePickerCellRenderToken = new InjectionToken<NgpDatePickerCellRender<unknown>>(\n 'NgpDatePickerCellRenderToken',\n);\n\n/**\n * Inject the DatePickerCell directive instance\n */\nexport function injectDatePickerCellRender<T>(): NgpDatePickerCellRender<T> {\n return inject(NgpDatePickerCellRenderToken) as NgpDatePickerCellRender<T>;\n}\n\nexport const NgpDatePickerCellDateToken = new InjectionToken<unknown>('NgpDatePickerCellDateToken');\n\n/**\n * Inject current cell date\n */\nexport function injectDatePickerCellDate<T>(): T {\n return inject(NgpDatePickerCellDateToken) as T;\n}\n","import {\n Directive,\n EmbeddedViewRef,\n inject,\n Injector,\n OnDestroy,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { injectDatePickerWeek } from '../date-picker-row-render/date-picker-row-render-token';\nimport {\n NgpDatePickerCellDateToken,\n NgpDatePickerCellRenderToken,\n} from './date-picker-cell-render-token';\n\n/**\n * A structural directive that renders a cell in the date picker grid.\n */\n@Directive({\n selector: '[ngpDatePickerCellRender]',\n exportAs: 'ngpDatePickerCellRender',\n providers: [{ provide: NgpDatePickerCellRenderToken, useExisting: NgpDatePickerCellRender }],\n})\nexport class NgpDatePickerCellRender<T> implements OnDestroy {\n /**\n * Access the template ref for the cell.\n */\n private readonly templateRef = inject(TemplateRef);\n\n /**\n * Access the view container ref.\n */\n private readonly viewContainerRef = inject(ViewContainerRef);\n\n /**\n * Access the dates in the week.\n */\n private readonly dates = injectDatePickerWeek<T>();\n\n /**\n * Store the view refs for the dates.\n */\n private readonly viewRefs: EmbeddedViewRef<NgpDatePickerCellContext<T>>[] = [];\n\n // Make sure the template checker knows the type of the context with which the\n // template of this directive will be rendered\n static ngTemplateContextGuard<T>(\n _: NgpDatePickerCellRender<T>,\n context: unknown,\n ): context is NgpDatePickerCellContext<T> {\n return true;\n }\n\n constructor() {\n this.renderDates();\n }\n\n /**\n * Render the dates in the week.\n */\n private renderDates(): void {\n this.viewRefs.forEach(viewRef => viewRef.destroy());\n\n for (const date of this.dates) {\n const viewRef = this.viewContainerRef.createEmbeddedView(\n this.templateRef,\n {\n $implicit: date,\n },\n {\n injector: Injector.create({\n parent: this.viewContainerRef.injector,\n providers: [{ provide: NgpDatePickerCellDateToken, useValue: date }],\n }),\n },\n );\n this.viewRefs.push(viewRef);\n }\n }\n\n /**\n * Destroy the view refs.\n */\n ngOnDestroy(): void {\n this.viewRefs.forEach(viewRef => viewRef.destroy());\n }\n}\n\ninterface NgpDatePickerCellContext<T> {\n $implicit: T;\n}\n","import { InjectionToken, inject } from '@angular/core';\nimport type { NgpDatePickerDateButton } from './date-picker-date-button';\n\nexport const NgpDatePickerDateButtonToken = new InjectionToken<NgpDatePickerDateButton<unknown>>(\n 'NgpDatePickerDateButtonToken',\n);\n\n/**\n * Inject the DatePickerDateButton directive instance\n */\nexport function injectDatePickerDateButton<T>(): NgpDatePickerDateButton<T> {\n return inject(NgpDatePickerDateButtonToken) as NgpDatePickerDateButton<T>;\n}\n","import { ExistingProvider, InjectionToken, Type, inject } from '@angular/core';\nimport type { NgpDatePicker } from './date-picker';\n\nexport const NgpDatePickerToken = new InjectionToken<NgpDatePicker<unknown>>('NgpDatePickerToken');\n\n/**\n * Inject the DatePicker directive instance\n */\nexport function injectDatePicker<T>(): NgpDatePicker<T> {\n return inject(NgpDatePickerToken) as NgpDatePicker<T>;\n}\n\n/**\n * Provide the DatePicker directive instance\n */\nexport function provideDatePicker<T>(datePicker: Type<NgpDatePicker<T>>): ExistingProvider {\n return { provide: NgpDatePickerToken, useExisting: datePicker };\n}\n","import { computed, contentChild, Directive } from '@angular/core';\nimport { NgpDatePickerDateButtonToken } from '../date-picker-date-button/date-picker-date-button-token';\nimport { injectDatePicker } from '../date-picker/date-picker-token';\n\n/**\n * A cell in the date picker grid.\n */\n@Directive({\n selector: '[ngpDatePickerCell]',\n exportAs: 'ngpDatePickerCell',\n host: {\n role: 'gridcell',\n '[attr.data-selected]': 'datePickerButton()?.selected() ? \"\" : null',\n '[attr.aria-selected]': 'datePickerButton()?.selected()',\n '[attr.aria-disabled]': 'datePickerButton()?.disabled()',\n '[attr.data-disabled]': 'datePickerButton()?.disabled() ? \"\" : null',\n '[attr.aria-labelledby]': 'labelId()',\n },\n})\nexport class NgpDatePickerCell {\n /**\n * Access the date picker.\n */\n private readonly datePicker = injectDatePicker();\n\n /**\n * Access the child date picker date button.\n */\n protected readonly datePickerButton = contentChild(NgpDatePickerDateButtonToken, {\n descendants: true,\n });\n\n /**\n * Access the label id.\n */\n protected readonly labelId = computed(() => this.datePicker.label()?.id());\n}\n","import {\n createState,\n createStateInjector,\n createStateProvider,\n createStateToken,\n InjectedState,\n} from 'ng-primitives/state';\nimport type { NgpDatePicker } from './date-picker';\n\nexport const NgpDatePickerStateToken = createStateToken<NgpDatePicker<unknown>>('DatePicker');\nexport const provideDatePickerState = createStateProvider(NgpDatePickerStateToken);\nexport const injectDatePickerState = createStateInjector<NgpDatePicker<unknown>>(\n NgpDatePickerStateToken,\n) as <T>() => InjectedState<NgpDatePicker<T>>;\nexport const datePickerState = createState(NgpDatePickerStateToken);\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport { computed, Directive, ElementRef, HostListener, inject, OnDestroy } from '@angular/core';\nimport { NgpButton, syncButton } from 'ng-primitives/button';\nimport { injectDateAdapter } from 'ng-primitives/date-time';\nimport { injectDatePickerCellDate } from '../date-picker-cell-render/date-picker-cell-render-token';\nimport { injectDatePickerState } from '../date-picker/date-picker-state';\nimport { injectDatePicker } from '../date-picker/date-picker-token';\nimport { NgpDatePickerDateButtonToken } from './date-picker-date-button-token';\n\n/**\n * A button that represents a date in the date picker grid.\n */\n@Directive({\n selector: '[ngpDatePickerDateButton]',\n exportAs: 'ngpDatePickerDateButton',\n providers: [{ provide: NgpDatePickerDateButtonToken, useExisting: NgpDatePickerDateButton }],\n host: {\n '[attr.role]': '!isButton ? \"button\" : null',\n '[attr.tabindex]': 'focused() ? 0 : -1',\n '[attr.data-selected]': 'selected() ? \"\" : null',\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\n '[attr.aria-disabled]': 'disabled()',\n '[attr.data-outside-month]': 'outside() ? \"\" : null',\n '[attr.data-today]': 'today() ? \"\" : null',\n },\n hostDirectives: [NgpButton],\n})\nexport class NgpDatePickerDateButton<T> implements OnDestroy {\n /**\n * Access the element ref.\n */\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /**\n * Access the focus monitor.\n */\n private readonly focusMonitor = inject(FocusMonitor);\n\n /**\n * Access the date picker.\n */\n private readonly datePicker = injectDatePicker<T>();\n\n /**\n * Access the date picker state.\n */\n private readonly state = injectDatePickerState<T>();\n\n /**\n * Access the date adapter.\n */\n private readonly dateAdapter = injectDateAdapter<T>();\n\n /**\n * The date this cell represents.\n */\n private readonly date = injectDatePickerCellDate<T>();\n\n /**\n * Determine if this is the focused date.\n */\n protected readonly focused = computed(() =>\n this.dateAdapter.isSameDay(this.date, this.state().focusedDate()),\n );\n\n /**\n * Determine if this is the selected date.\n * @internal\n */\n readonly selected = computed(() => {\n const selected = this.state().date();\n return selected && this.dateAdapter.isSameDay(this.date, selected);\n });\n\n /**\n * Determine if this date is outside the current month.\n */\n protected readonly outside = computed(\n () => !this.dateAdapter.isSameMonth(this.date, this.state().focusedDate()),\n );\n\n /**\n * Determine if this date is today.\n */\n protected readonly today = computed(() =>\n this.dateAdapter.isSameDay(this.date, this.dateAdapter.now()),\n );\n\n /**\n * Determine if this date is disabled.\n * @internal\n */\n readonly disabled = computed(() => {\n const min = this.state().min();\n const max = this.state().max();\n\n if (this.state().disabled() || this.state().dateDisabled()(this.date)) {\n return true;\n }\n\n if (min && this.dateAdapter.compare(this.dateAdapter.startOfDay(this.date), min) < 0) {\n return true;\n }\n\n if (max && this.dateAdapter.compare(this.dateAdapter.startOfDay(this.date), max) > 0) {\n return true;\n }\n\n return false;\n });\n\n /**\n * Determine if the element is a button.\n */\n protected readonly isButton = this.elementRef.nativeElement.tagName === 'BUTTON';\n\n constructor() {\n this.datePicker.registerButton(this);\n syncButton({ disabled: this.disabled });\n }\n\n ngOnDestroy(): void {\n this.datePicker.unregisterButton(this);\n }\n\n /**\n * When the button is clicked, select the date.\n */\n @HostListener('click')\n @HostListener('keydown.enter', ['$event'])\n @HostListener('keydown.space', ['$event'])\n protected select(event?: KeyboardEvent): void {\n // if the button is disabled, or is already selected, do nothing.\n if (this.disabled() || this.selected()) {\n return;\n }\n\n // because this may not be a button, we should stop the event from firing twice due to\n // us listening to both the click and the keydown.enter event.\n if (event) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n this.state().date.set(this.date);\n this.state().dateChange.emit(this.date);\n this.datePicker.setFocusedDate(this.date, 'mouse', 'forward');\n }\n\n /**\n * Focus if this is the current focused date.\n * @internal\n */\n focus(): void {\n if (this.dateAdapter.isSameDay(this.date, this.state().focusedDate())) {\n this.focusMonitor.focusVia(this.elementRef, 'keyboard');\n }\n }\n\n /**\n * Focus the previous cell.\n */\n @HostListener('keydown.arrowLeft', ['$event'])\n protected focusPrevious(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n // in rtl, the arrow keys are reversed.\n if (this.getDirection() === 'rtl') {\n this.focusDate(this.dateAdapter.add(this.state().focusedDate(), { days: 1 }), 'forward');\n } else {\n this.focusDate(\n this.dateAdapter.subtract(this.state().focusedDate(), { days: 1 }),\n 'backward',\n );\n }\n }\n\n /**\n * Focus the next cell.\n */\n @HostListener('keydown.arrowRight', ['$event'])\n protected focusNext(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n // in rtl, the arrow keys are reversed.\n if (this.getDirection() === 'rtl') {\n this.focusDate(\n this.dateAdapter.subtract(this.state().focusedDate(), { days: 1 }),\n 'backward',\n );\n } else {\n this.focusDate(this.dateAdapter.add(this.state().focusedDate(), { days: 1 }), 'forward');\n }\n }\n\n /**\n * Focus the above cell.\n */\n @HostListener('keydown.arrowUp', ['$event'])\n protected focusAbove(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n this.focusDate(this.dateAdapter.subtract(this.state().focusedDate(), { days: 7 }), 'backward');\n }\n\n /**\n * Focus the below cell.\n */\n @HostListener('keydown.arrowDown', ['$event'])\n protected focusBelow(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n this.focusDate(this.dateAdapter.add(this.state().focusedDate(), { days: 7 }), 'forward');\n }\n\n /**\n * Focus the first date of the month.\n */\n @HostListener('keydown.home', ['$event'])\n protected focusFirst(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.focusDate(this.dateAdapter.startOfMonth(this.state().focusedDate()), 'forward');\n }\n\n /**\n * Focus the last date of the month.\n */\n @HostListener('keydown.end', ['$event'])\n protected focusLast(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.focusDate(this.dateAdapter.endOfMonth(this.state().focusedDate()), 'backward');\n }\n\n /**\n * Focus the same date in the previous month.\n */\n @HostListener('keydown.pageUp', ['$event'])\n protected focusPreviousMonth(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n const date = this.dateAdapter.getDate(this.state().focusedDate());\n\n let previousMonthTarget = this.dateAdapter.startOfMonth(this.state().focusedDate());\n previousMonthTarget = this.dateAdapter.subtract(previousMonthTarget, { months: 1 });\n\n const lastDay = this.dateAdapter.endOfMonth(previousMonthTarget);\n\n // if we are on a date that does not exist in the previous month, we should focus the last day of the month.\n if (date > this.dateAdapter.getDate(lastDay)) {\n this.focusDate(lastDay, 'forward');\n return;\n } else {\n this.focusDate(this.dateAdapter.set(previousMonthTarget, { day: date }), 'forward');\n }\n }\n\n /**\n * Focus the same date in the next month.\n */\n @HostListener('keydown.pageDown', ['$event'])\n protected focusNextMonth(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n const date = this.dateAdapter.getDate(this.state().focusedDate());\n\n let nextMonthTarget = this.dateAdapter.startOfMonth(this.state().focusedDate());\n nextMonthTarget = this.dateAdapter.add(nextMonthTarget, { months: 1 });\n\n const lastDay = this.dateAdapter.endOfMonth(nextMonthTarget);\n\n // if we are on a date that does not exist in the next month, we should focus the last day of the month.\n if (date > this.dateAdapter.getDate(lastDay)) {\n this.focusDate(lastDay, 'backward');\n return;\n } else {\n this.focusDate(this.dateAdapter.set(nextMonthTarget, { day: date }), 'backward');\n }\n }\n\n private focusDate(date: T, direction: 'forward' | 'backward'): void {\n this.datePicker.setFocusedDate(date, 'keyboard', direction);\n }\n\n /**\n * Get the direction of the element.\n */\n private getDirection(): 'ltr' | 'rtl' {\n return getComputedStyle(this.elementRef.nativeElement).direction === 'rtl' ? 'rtl' : 'ltr';\n }\n}\n","import { computed, Directive } from '@angular/core';\nimport { injectDatePickerState } from '../date-picker/date-picker-state';\n\n/**\n * The grid that contains the days of the month.\n */\n@Directive({\n selector: '[ngpDatePickerGrid]',\n exportAs: 'ngpDatePickerGrid',\n host: {\n role: 'grid',\n '[attr.aria-labelledby]': 'labelId()',\n '[attr.data-disabled]': 'state().disabled() ? \"\" : null',\n },\n})\nexport class NgpDatePickerGrid<T> {\n /**\n * Access the date picker state.\n */\n protected readonly state = injectDatePickerState<T>();\n\n /**\n * Determine the id for the label.\n */\n protected readonly labelId = computed(() => this.state().label()?.id());\n}\n","import { InjectionToken, inject } from '@angular/core';\nimport type { NgpDatePickerLabel } from './date-picker-label';\n\nexport const NgpDatePickerLabelToken = new InjectionToken<NgpDatePickerLabel<unknown>>(\n 'NgpDatePickerLabelToken',\n);\n\n/**\n * Inject the DatePickerLabel directive instance\n */\nexport function injectDatePickerLabel<T>(): NgpDatePickerLabel<T> {\n return inject(NgpDatePickerLabelToken) as NgpDatePickerLabel<T>;\n}\n","import { Directive, input } from '@angular/core';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { injectDatePickerState } from '../date-picker/date-picker-state';\nimport { NgpDatePickerLabelToken } from './date-picker-label-token';\n\n/**\n * The label that displays the current month and year typically in the header of the date picker. This will be announced by screen readers when the date changes.\n */\n@Directive({\n selector: '[ngpDatePickerLabel]',\n exportAs: 'ngpDatePickerLabel',\n providers: [{ provide: NgpDatePickerLabelToken, useExisting: NgpDatePickerLabel }],\n host: {\n '[id]': 'id()',\n '[attr.aria-live]': 'ariaLive()',\n '[attr.data-disabled]': 'state().disabled() ? \"\" : null',\n },\n})\nexport class NgpDatePickerLabel<T> {\n /**\n * Access the date picker.\n */\n protected readonly state = injectDatePickerState<T>();\n\n /**\n * Define a unique id for the label.\n */\n readonly id = input(uniqueId('ngp-date-picker-label'));\n\n /**\n * Define the aria live attribute.\n */\n readonly ariaLive = input('polite', {\n alias: 'aria-live',\n });\n}\n","import { computed, Directive, ElementRef, HostListener, inject } from '@angular/core';\nimport { NgpButton, syncButton } from 'ng-primitives/button';\nimport { injectDateAdapter } from 'ng-primitives/date-time';\nimport { injectDatePickerState } from '../date-picker/date-picker-state';\nimport { injectDatePicker } from '../date-picker/date-picker-token';\n\n/**\n * A button that navigates to the next month.\n */\n@Directive({\n selector: '[ngpDatePickerNextMonth]',\n exportAs: 'ngpDatePickerNextMonth',\n hostDirectives: [NgpButton],\n host: {\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\n '[attr.aria-disabled]': 'disabled()',\n '[attr.disabled]': 'isButton && disabled() ? true : null',\n '[attr.type]': 'isButton ? \"button\" : null',\n },\n})\nexport class NgpDatePickerNextMonth<T> {\n /**\n * Access the element ref.\n */\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /**\n * Access the date adapter.\n */\n private readonly dateAdapter = injectDateAdapter<T>();\n\n /**\n * Access the date picker.\n */\n private readonly datePicker = injectDatePicker<T>();\n\n /**\n * Access the date picker state.\n */\n private readonly state = injectDatePickerState<T>();\n\n /**\n * Determine if this is a button element\n */\n protected readonly isButton = this.elementRef.nativeElement.tagName.toLowerCase() === 'button';\n\n /**\n * Determine if the next month is disabled.\n * @internal\n */\n readonly disabled = computed(() => {\n if (this.state().disabled()) {\n return true;\n }\n\n const maxDate = this.state().max();\n const lastDay = this.dateAdapter.set(this.dateAdapter.endOfMonth(this.state().focusedDate()), {\n hour: 23,\n minute: 59,\n second: 59,\n millisecond: 999,\n });\n\n // if there is a max date and it is equal to or before the last day of the month, disable it.\n if (maxDate && this.dateAdapter.compare(maxDate, lastDay) <= 0) {\n return true;\n }\n\n return false;\n });\n\n constructor() {\n syncButton({ disabled: this.disabled });\n }\n\n /**\n * Navigate to the next month.\n */\n @HostListener('click')\n protected navigateToNextMonth(): void {\n if (this.disabled()) {\n return;\n }\n\n // move focus to the first day of the next month.\n let date = this.state().focusedDate();\n date = this.dateAdapter.add(date, { months: 1 });\n date = this.dateAdapter.set(date, {\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n });\n\n this.datePicker.setFocusedDate(date, 'mouse', 'forward');\n }\n}\n","import { computed, Directive, ElementRef, HostListener, inject } from '@angular/core';\nimport { NgpButton, syncButton } from 'ng-primitives/button';\nimport { injectDateAdapter } from 'ng-primitives/date-time';\nimport { injectDatePickerState } from '../date-picker/date-picker-state';\nimport { injectDatePicker } from '../date-picker/date-picker-token';\n\n/**\n * A button that navigates to the previous month.\n */\n@Directive({\n selector: '[ngpDatePickerPreviousMonth]',\n exportAs: 'ngpDatePickerPreviousMonth',\n hostDirectives: [NgpButton],\n host: {\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\n '[attr.aria-disabled]': 'disabled()',\n '[attr.disabled]': 'isButton && disabled() ? true : null',\n '[attr.type]': 'isButton ? \"button\" : null',\n },\n})\nexport class NgpDatePickerPreviousMonth<T> {\n /**\n * Access the element ref.\n */\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /**\n * Access the date adapter.\n */\n private readonly dateAdapter = injectDateAdapter<T>();\n\n /**\n * Access the date picker.\n */\n private readonly datePicker = injectDatePicker<T>();\n\n /**\n * Access the date picker state.\n */\n private readonly state = injectDatePickerState<T>();\n\n /**\n * Determine if this is a button element\n */\n protected readonly isButton = this.elementRef.nativeElement.tagName.toLowerCase() === 'button';\n\n /**\n * Determine if the next month is disabled.\n * @internal\n */\n readonly disabled = computed(() => {\n if (this.state().disabled()) {\n return true;\n }\n\n const minDate = this.state().min();\n\n // if the next month is out of bounds, disable it.\n const firstDay = this.dateAdapter.set(\n this.dateAdapter.startOfMonth(this.state().focusedDate()),\n {\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n },\n );\n\n // if there is a min date and it is equal to or after the first day of the month, disable it.\n if (minDate && this.dateAdapter.compare(minDate, firstDay) >= 0) {\n return true;\n }\n\n return false;\n });\n\n constructor() {\n syncButton({ disabled: this.disabled });\n }\n\n /**\n * Navigate to the previous month.\n */\n @HostListener('click')\n protected navigateToPreviouMonth(): void {\n if (this.disabled()) {\n return;\n }\n\n // move focus to the first day of the previous month.\n let date = this.state().focusedDate();\n date = this.dateAdapter.subtract(date, { months: 1 });\n date = this.dateAdapter.set(date, {\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n });\n\n this.datePicker.setFocusedDate(date, 'mouse', 'backward');\n }\n}\n","import {\n computed,\n Directive,\n EmbeddedViewRef,\n inject,\n Injector,\n OnDestroy,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { injectDateAdapter } from 'ng-primitives/date-time';\nimport { onChange } from 'ng-primitives/utils';\nimport { injectDatePickerState } from '../date-picker/date-picker-state';\nimport {\n NgpDatePickerRowRenderToken,\n NgpDatePickerWeekToken,\n} from './date-picker-row-render-token';\n\n/**\n * A structural directive that renders a row of weekdays in the date picker grid.\n */\n@Directive({\n selector: '[ngpDatePickerRowRender]',\n exportAs: 'ngpDatePickerRowRender',\n providers: [{ provide: NgpDatePickerRowRenderToken, useExisting: NgpDatePickerRowRender }],\n})\nexport class NgpDatePickerRowRender<T> implements OnDestroy {\n /**\n * Access the date adapter.\n */\n private readonly dateAdapter = injectDateAdapter<T>();\n\n /**\n * Access the date picker.\n */\n private readonly state = injectDatePickerState<T>();\n\n /**\n * Access the template ref for the cell.\n */\n private readonly templateRef = inject(TemplateRef);\n\n /**\n * Access the view container ref.\n */\n private readonly viewContainerRef = inject(ViewContainerRef);\n\n /**\n * Get all the days to display, this is the days of the current month\n * and the days of the previous and next month to fill the grid.\n */\n protected readonly days = computed(() => {\n const month = this.state().focusedDate();\n const days: T[] = [];\n\n // Get the first and last day of the month.\n let firstDay = this.dateAdapter.startOfMonth(month);\n let lastDay = this.dateAdapter.endOfMonth(month);\n\n // find the first and last day of visible in the grid.\n firstDay = this.dateAdapter.subtract(firstDay, {\n days: this.dateAdapter.getDay(firstDay),\n });\n lastDay = this.dateAdapter.add(lastDay, {\n days: 6 - this.dateAdapter.getDay(lastDay),\n });\n\n // collect all the days to display.\n while (firstDay <= lastDay) {\n days.push(firstDay);\n firstDay = this.dateAdapter.add(firstDay, { days: 1 });\n }\n\n return days;\n });\n\n // get the weeks to display.\n protected readonly weeks = computed(() => {\n const days = this.days();\n const weeks = [];\n\n for (let i = 0; i < days.length; i += 7) {\n weeks.push(days.slice(i, i + 7));\n }\n\n return weeks;\n });\n\n /**\n * Store the embedded view refs of each rendered row.\n */\n private readonly viewRefs: EmbeddedViewRef<void>[] = [];\n\n constructor() {\n // re-render the rows when the month changes.\n onChange(this.state().focusedDate, (date, previousDate) => {\n if (!date || !previousDate || !this.dateAdapter.isSameMonth(date, previousDate)) {\n this.renderRows();\n }\n });\n }\n\n ngOnDestroy(): void {\n this.destroyRows();\n }\n\n /**\n * Render the row.\n */\n private renderRows(): void {\n const weeks = this.weeks();\n\n // clear the view container.\n this.destroyRows();\n\n // render the weeks.\n for (const week of weeks) {\n const viewRef = this.viewContainerRef.createEmbeddedView(this.templateRef, null, {\n injector: Injector.create({\n parent: this.viewContainerRef.injector,\n providers: [{ provide: NgpDatePickerWeekToken, useValue: week }],\n }),\n });\n this.viewRefs.push(viewRef);\n }\n }\n\n /**\n * Destroy the row.\n */\n private destroyRows(): void {\n for (const viewRef of this.viewRefs) {\n viewRef.destroy();\n }\n }\n}\n","import { FocusOrigin } from '@angular/cdk/a11y';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport {\n afterNextRender,\n booleanAttribute,\n contentChild,\n Directive,\n inject,\n Injector,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { injectDateAdapter } from 'ng-primitives/date-time';\nimport type { NgpDatePickerDateButton } from '../date-picker-date-button/date-picker-date-button';\nimport { NgpDatePickerLabelToken } from '../date-picker-label/date-picker-label-token';\nimport { datePickerState, provideDatePickerState } from './date-picker-state';\nimport { provideDatePicker } from './date-picker-token';\n\n/**\n * The outermost container for the date picker.\n */\n@Directive({\n selector: '[ngpDatePicker]',\n exportAs: 'ngpDatePicker',\n providers: [provideDatePicker(NgpDatePicker), provideDatePickerState()],\n host: {\n '[attr.data-disabled]': 'state.disabled() ? \"\" : null',\n },\n})\nexport class NgpDatePicker<T> {\n /**\n * Access the date adapter.\n */\n private readonly dateAdapter = injectDateAdapter<T>();\n\n /**\n * Access the injector.\n */\n private readonly injector = inject(Injector);\n\n /**\n * The minimum date that can be selected.\n */\n readonly min = input<T | undefined>(undefined, {\n alias: 'ngpDatePickerMin',\n });\n\n /**\n * The maximum date that can be selected.\n */\n readonly max = input<T | undefined>(undefined, {\n alias: 'ngpDatePickerMax',\n });\n\n /**\n * Determine if the date picker is disabled.\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpDatePickerDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * A function that is called to determine if a specific date should be disabled.\n */\n readonly dateDisabled = input<(date: T) => boolean>(() => false, {\n alias: 'ngpDatePickerDateDisabled',\n });\n\n /**\n * The selected value.\n */\n readonly date = input<T | undefined>(undefined, {\n alias: 'ngpDatePickerDate',\n });\n\n /**\n * Emit when the date changes.\n */\n readonly dateChange = output<T | undefined>({\n alias: 'ngpDatePickerDateChange',\n });\n\n /**\n * The focused value.\n */\n readonly focusedDate = input<T>(this.dateAdapter.now(), {\n alias: 'ngpDatePickerFocusedDate',\n });\n\n /**\n * Emit when the focused date changes.\n */\n readonly focusedDateChange = output<T>({\n alias: 'ngpDatePickerFocusedDateChange',\n });\n\n /**\n * Detect the label element.\n * @internal\n */\n readonly label = contentChild(NgpDatePickerLabelToken, { descendants: true });\n\n /**\n * Access all the date picker buttons\n */\n private readonly buttons = signal<NgpDatePickerDateButton<T>[]>([]);\n\n /**\n * The date picker state.\n */\n protected readonly state = datePickerState<NgpDatePicker<T>>(this);\n\n /**\n * Set the focused date.\n * @param date The date to focus.\n * @internal\n */\n setFocusedDate(date: T, origin: FocusOrigin = 'mouse', direction: 'forward' | 'backward'): void {\n if (this.state.disabled()) {\n return;\n }\n\n const min = this.state.min();\n const max = this.state.max();\n\n if (min && this.dateAdapter.isBefore(date, min)) {\n date = min;\n }\n\n if (max && this.dateAdapter.isAfter(date, max)) {\n date = max;\n }\n\n // if the date is disabled, find the next available date in the specified direction.\n if (this.state.dateDisabled()(date)) {\n let nextDate = this.dateAdapter.add(date, { days: direction === 'forward' ? 1 : -1 });\n\n while (\n this.state.dateDisabled()(nextDate) ||\n (min && this.dateAdapter.isBefore(nextDate, min)) ||\n (max && this.dateAdapter.isAfter(nextDate, max))\n ) {\n nextDate = this.dateAdapter.add(nextDate, { days: direction === 'forward' ? 1 : -1 });\n }\n\n date = nextDate;\n }\n\n this.state.focusedDate.set(date);\n this.focusedDateChange.emit(date);\n\n if (origin === 'keyboard') {\n afterNextRender(\n {\n write: () => this.buttons().forEach(button => button.focus()),\n },\n {\n injector: this.injector,\n },\n );\n }\n }\n\n /**\n * Register a date button.\n * @param button The date button to register.\n * @internal\n */\n registerButton(button: NgpDatePickerDateButton<T>): void {\n this.buttons.update(buttons => [...buttons, button]);\n }\n\n /**\n * Unregister a date button.\n * @param button The date button to unregister.\n * @internal\n */\n unregisterButton(button: NgpDatePickerDateButton<T>): void {\n this.buttons.update(buttons => buttons.filter(b => b !== button));\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;MAGa,2BAA2B,GAAG,IAAI,cAAc,CAC3D,6BAA6B;AAG/B;;AAEG;SACa,yBAAyB,GAAA;AACvC,IAAA,OAAO,MAAM,CAAC,2BAA2B,CAA8B;AACzE;AAEO,MAAM,sBAAsB,GAAG,IAAI,cAAc,CAAY,wBAAwB,CAAC;AAE7F;;AAEG;SACa,oBAAoB,GAAA;AAClC,IAAA,OAAO,MAAM,CAAC,sBAAsB,CAAQ;AAC9C;;MClBa,4BAA4B,GAAG,IAAI,cAAc,CAC5D,8BAA8B;AAGhC;;AAEG;SACa,0BAA0B,GAAA;AACxC,IAAA,OAAO,MAAM,CAAC,4BAA4B,CAA+B;AAC3E;AAEO,MAAM,0BAA0B,GAAG,IAAI,cAAc,CAAU,4BAA4B,CAAC;AAEnG;;AAEG;SACa,wBAAwB,GAAA;AACtC,IAAA,OAAO,MAAM,CAAC,0BAA0B,CAAM;AAChD;;ACNA;;AAEG;MAMU,uBAAuB,CAAA;;;AAuBlC,IAAA,OAAO,sBAAsB,CAC3B,CAA6B,EAC7B,OAAgB,EAAA;AAEhB,QAAA,OAAO,IAAI;;AAGb,IAAA,WAAA,GAAA;AA7BA;;AAEG;AACc,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AAElD;;AAEG;AACc,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAE5D;;AAEG;QACc,IAAK,CAAA,KAAA,GAAG,oBAAoB,EAAK;AAElD;;AAEG;QACc,IAAQ,CAAA,QAAA,GAAmD,EAAE;QAY5E,IAAI,CAAC,WAAW,EAAE;;AAGpB;;AAEG;IACK,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;AAEnD,QAAA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;YAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CACtD,IAAI,CAAC,WAAW,EAChB;AACE,gBAAA,SAAS,EAAE,IAAI;aAChB,EACD;AACE,gBAAA,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC;AACxB,oBAAA,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,QAAQ;oBACtC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,0BAA0B,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;iBACrE,CAAC;AACH,aAAA,CACF;AACD,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;;;AAI/B;;AAEG;IACH,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;;+GA7D1C,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,SAAA,EAFvB,CAAC,EAAE,OAAO,EAAE,4BAA4B,EAAE,WAAW,EAAE,uBAAuB,EAAE,CAAC,EAAA,QAAA,EAAA,CAAA,yBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAEjF,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,oBAAA,QAAQ,EAAE,yBAAyB;oBACnC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,4BAA4B,EAAE,WAAW,EAAyB,uBAAA,EAAE,CAAC;AAC7F,iBAAA;;;MCnBY,4BAA4B,GAAG,IAAI,cAAc,CAC5D,8BAA8B;AAGhC;;AAEG;SACa,0BAA0B,GAAA;AACxC,IAAA,OAAO,MAAM,CAAC,4BAA4B,CAA+B;AAC3E;;MCTa,kBAAkB,GAAG,IAAI,cAAc,CAAyB,oBAAoB;AAEjG;;AAEG;SACa,gBAAgB,GAAA;AAC9B,IAAA,OAAO,MAAM,CAAC,kBAAkB,CAAqB;AACvD;AAEA;;AAEG;AACG,SAAU,iBAAiB,CAAI,UAAkC,EAAA;IACrE,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,UAAU,EAAE;AACjE;;ACbA;;AAEG;MAaU,iBAAiB,CAAA;AAZ9B,IAAA,WAAA,GAAA;AAaE;;AAEG;QACc,IAAU,CAAA,UAAA,GAAG,gBAAgB,EAAE;AAEhD;;AAEG;AACgB,QAAA,IAAA,CAAA,gBAAgB,GAAG,YAAY,CAAC,4BAA4B,EAAE;AAC/E,YAAA,WAAW,EAAE,IAAI;AAClB,SAAA,CAAC;AAEF;;AAEG;AACgB,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC;AAC3E;+GAjBY,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,4dASuB,4BAA4B,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FATpE,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAZ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,IAAI,EAAE;AACJ,wBAAA,IAAI,EAAE,UAAU;AAChB,wBAAA,sBAAsB,EAAE,4CAA4C;AACpE,wBAAA,sBAAsB,EAAE,gCAAgC;AACxD,wBAAA,sBAAsB,EAAE,gCAAgC;AACxD,wBAAA,sBAAsB,EAAE,4CAA4C;AACpE,wBAAA,wBAAwB,EAAE,WAAW;AACtC,qBAAA;AACF,iBAAA;;;ACTM,MAAM,uBAAuB,GAAG,gBAAgB,CAAyB,YAAY,CAAC;MAChF,sBAAsB,GAAG,mBAAmB,CAAC,uBAAuB;MACpE,qBAAqB,GAAG,mBAAmB,CACtD,uBAAuB;AAElB,MAAM,eAAe,GAAG,WAAW,CAAC,uBAAuB,CAAC;;ACLnE;;AAEG;MAgBU,uBAAuB,CAAA;AAyFlC,IAAA,WAAA,GAAA;AAxFA;;AAEG;AACc,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;AAEzE;;AAEG;AACc,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AAEpD;;AAEG;QACc,IAAU,CAAA,UAAA,GAAG,gBAAgB,EAAK;AAEnD;;AAEG;QACc,IAAK,CAAA,KAAA,GAAG,qBAAqB,EAAK;AAEnD;;AAEG;QACc,IAAW,CAAA,WAAA,GAAG,iBAAiB,EAAK;AAErD;;AAEG;QACc,IAAI,CAAA,IAAA,GAAG,wBAAwB,EAAK;AAErD;;AAEG;QACgB,IAAO,CAAA,OAAA,GAAG,QAAQ,CAAC,MACpC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC,CAClE;AAED;;;AAGG;AACM,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;YAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE;AACpC,YAAA,OAAO,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;AACpE,SAAC,CAAC;AAEF;;AAEG;QACgB,IAAO,CAAA,OAAA,GAAG,QAAQ,CACnC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC,CAC3E;AAED;;AAEG;QACgB,IAAK,CAAA,KAAA,GAAG,QAAQ,CAAC,MAClC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAC9D;AAED;;;AAGG;AACM,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;YAChC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE;YAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE;YAE9B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACrE,gBAAA,OAAO,IAAI;;YAGb,IAAI,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE;AACpF,gBAAA,OAAO,IAAI;;YAGb,IAAI,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE;AACpF,gBAAA,OAAO,IAAI;;AAGb,YAAA,OAAO,KAAK;AACd,SAAC,CAAC;AAEF;;AAEG;QACgB,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,KAAK,QAAQ;AAG9E,QAAA,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC;QACpC,UAAU,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;;IAGzC,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC;;AAGxC;;AAEG;AAIO,IAAA,MAAM,CAAC,KAAqB,EAAA;;QAEpC,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACtC;;;;QAKF,IAAI,KAAK,EAAE;YACT,KAAK,CAAC,cAAc,EAAE;YACtB,KAAK,CAAC,eAAe,EAAE;;AAGzB,QAAA,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;AAChC,QAAA,IAAI,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACvC,QAAA,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC;;AAG/D;;;AAGG;IACH,KAAK,GAAA;AACH,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE;YACrE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC;;;AAI3D;;AAEG;AAEO,IAAA,aAAa,CAAC,KAAoB,EAAA;QAC1C,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;;AAGvB,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,KAAK,KAAK,EAAE;YACjC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC;;aACnF;YACL,IAAI,CAAC,SAAS,CACZ,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAClE,UAAU,CACX;;;AAIL;;AAEG;AAEO,IAAA,SAAS,CAAC,KAAoB,EAAA;QACtC,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;;AAGvB,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,KAAK,KAAK,EAAE;YACjC,IAAI,CAAC,SAAS,CACZ,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAClE,UAAU,CACX;;aACI;YACL,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC;;;AAI5F;;AAEG;AAEO,IAAA,UAAU,CAAC,KAAoB,EAAA;QACvC,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;QAEvB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC;;AAGhG;;AAEG;AAEO,IAAA,UAAU,CAAC,KAAoB,EAAA;QACvC,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;QAEvB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC;;AAG1F;;AAEG;AAEO,IAAA,UAAU,CAAC,KAAoB,EAAA;QACvC,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,SAAS,CAAC;;AAGtF;;AAEG;AAEO,IAAA,SAAS,CAAC,KAAoB,EAAA;QACtC,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,UAAU,CAAC;;AAGrF;;AAEG;AAEO,IAAA,kBAAkB,CAAC,KAAoB,EAAA;QAC/C,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AAEvB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC;AAEjE,QAAA,IAAI,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC;AACnF,QAAA,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QAEnF,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,mBAAmB,CAAC;;QAGhE,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AAC5C,YAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC;YAClC;;aACK;YACL,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,mBAAmB,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC;;;AAIvF;;AAEG;AAEO,IAAA,cAAc,CAAC,KAAoB,EAAA;QAC3C,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AAEvB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC;AAEjE,QAAA,IAAI,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC;AAC/E,QAAA,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QAEtE,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,eAAe,CAAC;;QAG5D,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AAC5C,YAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC;YACnC;;aACK;YACL,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,eAAe,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,CAAC;;;IAI5E,SAAS,CAAC,IAAO,EAAE,SAAiC,EAAA;QAC1D,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC;;AAG7D;;AAEG;IACK,YAAY,GAAA;QAClB,OAAO,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,SAAS,KAAK,KAAK,GAAG,KAAK,GAAG,KAAK;;+GA5QjF,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,UAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,4BAAA,EAAA,kBAAA,EAAA,wBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,+BAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,yBAAA,EAAA,yBAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,SAAA,EAZvB,CAAC,EAAE,OAAO,EAAE,4BAA4B,EAAE,WAAW,EAAE,uBAAuB,EAAE,CAAC,EAAA,QAAA,EAAA,CAAA,yBAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAYjF,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAfnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,oBAAA,QAAQ,EAAE,yBAAyB;oBACnC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,4BAA4B,EAAE,WAAW,EAAyB,uBAAA,EAAE,CAAC;AAC5F,oBAAA,IAAI,EAAE;AACJ,wBAAA,aAAa,EAAE,6BAA6B;AAC5C,wBAAA,iBAAiB,EAAE,oBAAoB;AACvC,wBAAA,sBAAsB,EAAE,wBAAwB;AAChD,wBAAA,sBAAsB,EAAE,wBAAwB;AAChD,wBAAA,sBAAsB,EAAE,YAAY;AACpC,wBAAA,2BAA2B,EAAE,uBAAuB;AACpD,wBAAA,mBAAmB,EAAE,qBAAqB;AAC3C,qBAAA;oBACD,cAAc,EAAE,CAAC,SAAS,CAAC;AAC5B,iBAAA;wDAyGW,MAAM,EAAA,CAAA;sBAHf,YAAY;uBAAC,OAAO;;sBACpB,YAAY;uBAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;;sBACxC,YAAY;uBAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;gBAiC/B,aAAa,EAAA,CAAA;sBADtB,YAAY;uBAAC,mBAAmB,EAAE,CAAC,QAAQ,CAAC;gBAoBnC,SAAS,EAAA,CAAA;sBADlB,YAAY;uBAAC,oBAAoB,EAAE,CAAC,QAAQ,CAAC;gBAoBpC,UAAU,EAAA,CAAA;sBADnB,YAAY;uBAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC;gBAYjC,UAAU,EAAA,CAAA;sBADnB,YAAY;uBAAC,mBAAmB,EAAE,CAAC,QAAQ,CAAC;gBAYnC,UAAU,EAAA,CAAA;sBADnB,YAAY;uBAAC,cAAc,EAAE,CAAC,QAAQ,CAAC;gBAW9B,SAAS,EAAA,CAAA;sBADlB,YAAY;uBAAC,aAAa,EAAE,CAAC,QAAQ,CAAC;gBAW7B,kBAAkB,EAAA,CAAA;sBAD3B,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;gBAyBhC,cAAc,EAAA,CAAA;sBADvB,YAAY;uBAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC;;;ACvQ9C;;AAEG;MAUU,iBAAiB,CAAA;AAT9B,IAAA,WAAA,GAAA;AAUE;;AAEG;QACgB,IAAK,CAAA,KAAA,GAAG,qBAAqB,EAAK;AAErD;;AAEG;AACgB,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC;AACxE;+GAVY,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,kCAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAT7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,IAAI,EAAE;AACJ,wBAAA,IAAI,EAAE,MAAM;AACZ,wBAAA,wBAAwB,EAAE,WAAW;AACrC,wBAAA,sBAAsB,EAAE,gCAAgC;AACzD,qBAAA;AACF,iBAAA;;;MCXY,uBAAuB,GAAG,IAAI,cAAc,CACvD,yBAAyB;AAG3B;;AAEG;SACa,qBAAqB,GAAA;AACnC,IAAA,OAAO,MAAM,CAAC,uBAAuB,CAA0B;AACjE;;ACPA;;AAEG;MAWU,kBAAkB,CAAA;AAV/B,IAAA,WAAA,GAAA;AAWE;;AAEG;QACgB,IAAK,CAAA,KAAA,GAAG,qBAAqB,EAAK;AAErD;;AAEG;QACM,IAAE,CAAA,EAAA,GAAG,KAAK,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;AAEtD;;AAEG;AACM,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE;AAClC,YAAA,KAAK,EAAE,WAAW;AACnB,SAAA,CAAC;AACH;+GAjBY,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,kCAAA,EAAA,EAAA,EAAA,SAAA,EAPlB,CAAC,EAAE,OAAO,EAAE,uBAAuB,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAOvE,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAV9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,QAAQ,EAAE,oBAAoB;oBAC9B,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,uBAAuB,EAAE,WAAW,EAAoB,kBAAA,EAAE,CAAC;AAClF,oBAAA,IAAI,EAAE;AACJ,wBAAA,MAAM,EAAE,MAAM;AACd,wBAAA,kBAAkB,EAAE,YAAY;AAChC,wBAAA,sBAAsB,EAAE,gCAAgC;AACzD,qBAAA;AACF,iBAAA;;;ACXD;;AAEG;MAYU,sBAAsB,CAAA;AAmDjC,IAAA,WAAA,GAAA;AAlDA;;AAEG;AACc,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;AAEzE;;AAEG;QACc,IAAW,CAAA,WAAA,GAAG,iBAAiB,EAAK;AAErD;;AAEG;QACc,IAAU,CAAA,UAAA,GAAG,gBAAgB,EAAK;AAEnD;;AAEG;QACc,IAAK,CAAA,KAAA,GAAG,qBAAqB,EAAK;AAEnD;;AAEG;AACgB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,QAAQ;AAE9F;;;AAGG;AACM,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;YAChC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,EAAE;AAC3B,gBAAA,OAAO,IAAI;;YAGb,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE;YAClC,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE;AAC5F,gBAAA,IAAI,EAAE,EAAE;AACR,gBAAA,MAAM,EAAE,EAAE;AACV,gBAAA,MAAM,EAAE,EAAE;AACV,gBAAA,WAAW,EAAE,GAAG;AACjB,aAAA,CAAC;;AAGF,YAAA,IAAI,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE;AAC9D,gBAAA,OAAO,IAAI;;AAGb,YAAA,OAAO,KAAK;AACd,SAAC,CAAC;QAGA,UAAU,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;;AAGzC;;AAEG;IAEO,mBAAmB,GAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB;;;QAIF,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE;AACrC,QAAA,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QAChD,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE;AAChC,YAAA,GAAG,EAAE,CAAC;AACN,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,WAAW,EAAE,CAAC;AACf,SAAA,CAAC;QAEF,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC;;+GA3E/C,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,uBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,sCAAA,EAAA,WAAA,EAAA,8BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAXlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,QAAQ,EAAE,wBAAwB;oBAClC,cAAc,EAAE,CAAC,SAAS,CAAC;AAC3B,oBAAA,IAAI,EAAE;AACJ,wBAAA,sBAAsB,EAAE,wBAAwB;AAChD,wBAAA,sBAAsB,EAAE,YAAY;AACpC,wBAAA,iBAAiB,EAAE,sCAAsC;AACzD,wBAAA,aAAa,EAAE,4BAA4B;AAC5C,qBAAA;AACF,iBAAA;wDA4DW,mBAAmB,EAAA,CAAA;sBAD5B,YAAY;uBAAC,OAAO;;;ACxEvB;;AAEG;MAYU,0BAA0B,CAAA;AAwDrC,IAAA,WAAA,GAAA;AAvDA;;AAEG;AACc,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;AAEzE;;AAEG;QACc,IAAW,CAAA,WAAA,GAAG,iBAAiB,EAAK;AAErD;;AAEG;QACc,IAAU,CAAA,UAAA,GAAG,gBAAgB,EAAK;AAEnD;;AAEG;QACc,IAAK,CAAA,KAAA,GAAG,qBAAqB,EAAK;AAEnD;;AAEG;AACgB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,QAAQ;AAE9F;;;AAGG;AACM,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;YAChC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,EAAE;AAC3B,gBAAA,OAAO,IAAI;;YAGb,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE;;YAGlC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CACnC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC,EACzD;AACE,gBAAA,IAAI,EAAE,CAAC;AACP,gBAAA,MAAM,EAAE,CAAC;AACT,gBAAA,MAAM,EAAE,CAAC;AACT,gBAAA,WAAW,EAAE,CAAC;AACf,aAAA,CACF;;AAGD,YAAA,IAAI,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC/D,gBAAA,OAAO,IAAI;;AAGb,YAAA,OAAO,KAAK;AACd,SAAC,CAAC;QAGA,UAAU,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;;AAGzC;;AAEG;IAEO,sBAAsB,GAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB;;;QAIF,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE;AACrC,QAAA,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QACrD,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE;AAChC,YAAA,GAAG,EAAE,CAAC;AACN,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,WAAW,EAAE,CAAC;AACf,SAAA,CAAC;QAEF,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC;;+GAhFhD,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,0BAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,sCAAA,EAAA,WAAA,EAAA,8BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,4BAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAXtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,8BAA8B;AACxC,oBAAA,QAAQ,EAAE,4BAA4B;oBACtC,cAAc,EAAE,CAAC,SAAS,CAAC;AAC3B,oBAAA,IAAI,EAAE;AACJ,wBAAA,sBAAsB,EAAE,wBAAwB;AAChD,wBAAA,sBAAsB,EAAE,YAAY;AACpC,wBAAA,iBAAiB,EAAE,sCAAsC;AACzD,wBAAA,aAAa,EAAE,4BAA4B;AAC5C,qBAAA;AACF,iBAAA;wDAiEW,sBAAsB,EAAA,CAAA;sBAD/B,YAAY;uBAAC,OAAO;;;ACjEvB;;AAEG;MAMU,sBAAsB,CAAA;AAmEjC,IAAA,WAAA,GAAA;AAlEA;;AAEG;QACc,IAAW,CAAA,WAAA,GAAG,iBAAiB,EAAK;AAErD;;AAEG;QACc,IAAK,CAAA,KAAA,GAAG,qBAAqB,EAAK;AAEnD;;AAEG;AACc,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AAElD;;AAEG;AACc,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAE5D;;;AAGG;AACgB,QAAA,IAAA,CAAA,IAAI,GAAG,QAAQ,CAAC,MAAK;YACtC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE;YACxC,MAAM,IAAI,GAAQ,EAAE;;YAGpB,IAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC;YACnD,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC;;YAGhD,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,EAAE;gBAC7C,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC;AACxC,aAAA,CAAC;YACF,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE;gBACtC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC;AAC3C,aAAA,CAAC;;AAGF,YAAA,OAAO,QAAQ,IAAI,OAAO,EAAE;AAC1B,gBAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AACnB,gBAAA,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;;AAGxD,YAAA,OAAO,IAAI;AACb,SAAC,CAAC;;AAGiB,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;AACvC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;YACxB,MAAM,KAAK,GAAG,EAAE;AAEhB,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AACvC,gBAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;;AAGlC,YAAA,OAAO,KAAK;AACd,SAAC,CAAC;AAEF;;AAEG;QACc,IAAQ,CAAA,QAAA,GAA4B,EAAE;;AAIrD,QAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,YAAY,KAAI;AACxD,YAAA,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE;gBAC/E,IAAI,CAAC,UAAU,EAAE;;AAErB,SAAC,CAAC;;IAGJ,WAAW,GAAA;QACT,IAAI,CAAC,WAAW,EAAE;;AAGpB;;AAEG;IACK,UAAU,GAAA;AAChB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;;QAG1B,IAAI,CAAC,WAAW,EAAE;;AAGlB,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE;AAC/E,gBAAA,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC;AACxB,oBAAA,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,QAAQ;oBACtC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;iBACjE,CAAC;AACH,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;;;AAI/B;;AAEG;IACK,WAAW,GAAA;AACjB,QAAA,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;YACnC,OAAO,CAAC,OAAO,EAAE;;;+GA1GV,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,SAAA,EAFtB,CAAC,EAAE,OAAO,EAAE,2BAA2B,EAAE,WAAW,EAAE,sBAAsB,EAAE,CAAC,EAAA,QAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAE/E,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,QAAQ,EAAE,wBAAwB;oBAClC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,2BAA2B,EAAE,WAAW,EAAwB,sBAAA,EAAE,CAAC;AAC3F,iBAAA;;;ACND;;AAEG;MASU,aAAa,CAAA;AAR1B,IAAA,WAAA,GAAA;AASE;;AAEG;QACc,IAAW,CAAA,WAAA,GAAG,iBAAiB,EAAK;AAErD;;AAEG;AACc,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAE5C;;AAEG;AACM,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAAgB,SAAS,EAAE;AAC7C,YAAA,KAAK,EAAE,kBAAkB;AAC1B,SAAA,CAAC;AAEF;;AAEG;AACM,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAAgB,SAAS,EAAE;AAC7C,YAAA,KAAK,EAAE,kBAAkB;AAC1B,SAAA,CAAC;AAEF;;AAEG;AACM,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAwB,KAAK,EAAE;AACtD,YAAA,KAAK,EAAE,uBAAuB;AAC9B,YAAA,SAAS,EAAE,gBAAgB;AAC5B,SAAA,CAAC;AAEF;;AAEG;AACM,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAuB,MAAM,KAAK,EAAE;AAC/D,YAAA,KAAK,EAAE,2BAA2B;AACnC,SAAA,CAAC;AAEF;;AAEG;AACM,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAgB,SAAS,EAAE;AAC9C,YAAA,KAAK,EAAE,mBAAmB;AAC3B,SAAA,CAAC;AAEF;;AAEG;QACM,IAAU,CAAA,UAAA,GAAG,MAAM,CAAgB;AAC1C,YAAA,KAAK,EAAE,yBAAyB;AACjC,SAAA,CAAC;AAEF;;AAEG;QACM,IAAW,CAAA,WAAA,GAAG,KAAK,CAAI,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE;AACtD,YAAA,KAAK,EAAE,0BAA0B;AAClC,SAAA,CAAC;AAEF;;AAEG;QACM,IAAiB,CAAA,iBAAA,GAAG,MAAM,CAAI;AACrC,YAAA,KAAK,EAAE,gCAAgC;AACxC,SAAA,CAAC;AAEF;;;AAGG;QACM,IAAK,CAAA,KAAA,GAAG,YAAY,CAAC,uBAAuB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;AAE7E;;AAEG;AACc,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAA+B,EAAE,CAAC;AAEnE;;AAEG;AACgB,QAAA,IAAA,CAAA,KAAK,GAAG,eAAe,CAAmB,IAAI,CAAC;AAsEnE;AApEC;;;;AAIG;AACH,IAAA,cAAc,CAAC,IAAO,EAAE,MAAsB,GAAA,OAAO,EAAE,SAAiC,EAAA;AACtF,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE;YACzB;;QAGF,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;AAE5B,QAAA,IAAI,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE;YAC/C,IAAI,GAAG,GAAG;;AAGZ,QAAA,IAAI,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE;YAC9C,IAAI,GAAG,GAAG;;;QAIZ,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,EAAE;YACnC,IAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,KAAK,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAErF,OACE,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC;AACnC,iBAAC,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AACjD,iBAAC,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,EAChD;gBACA,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,KAAK,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;;YAGvF,IAAI,GAAG,QAAQ;;QAGjB,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAChC,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;AAEjC,QAAA,IAAI,MAAM,KAAK,UAAU,EAAE;AACzB,YAAA,eAAe,CACb;AACE,gBAAA,KAAK,EAAE,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;aAC9D,EACD;gBACE,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACxB,aAAA,CACF;;;AAIL;;;;AAIG;AACH,IAAA,cAAc,CAAC,MAAkC,EAAA;AAC/C,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC;;AAGtD;;;;AAIG;AACH,IAAA,gBAAgB,CAAC,MAAkC,EAAA;QACjD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,CAAC;;+GAtJxD,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,iBAAA,EAAA,gCAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,gCAAA,EAAA,EAAA,EAAA,SAAA,EALb,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE,sBAAsB,EAAE,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EA6EzC,uBAAuB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAxE1C,aAAa,EAAA,UAAA,EAAA,CAAA;kBARzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,SAAS,EAAE,CAAC,iBAAiB,eAAe,EAAE,sBAAsB,EAAE,CAAC;AACvE,oBAAA,IAAI,EAAE;AACJ,wBAAA,sBAAsB,EAAE,8BAA8B;AACvD,qBAAA;AACF,iBAAA;;;AC7BD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"ng-primitives-date-picker.mjs","sources":["../../../../packages/ng-primitives/date-picker/src/date-picker-row-render/date-picker-row-render-token.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-cell-render/date-picker-cell-render-token.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-cell-render/date-picker-cell-render.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-date-button/date-picker-date-button-token.ts","../../../../packages/ng-primitives/date-picker/src/date-picker/date-picker-token.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-cell/date-picker-cell.ts","../../../../packages/ng-primitives/date-picker/src/date-picker/date-picker-state.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-date-button/date-picker-date-button.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-grid/date-picker-grid.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-label/date-picker-label-token.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-label/date-picker-label.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-next-month/date-picker-next-month.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-previous-month/date-picker-previous-month.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-row-render/date-picker-row-render.ts","../../../../packages/ng-primitives/date-picker/src/date-picker/date-picker.ts","../../../../packages/ng-primitives/date-picker/src/ng-primitives-date-picker.ts"],"sourcesContent":["import { InjectionToken, inject } from '@angular/core';\nimport type { NgpDatePickerRowRender } from './date-picker-row-render';\n\nexport const NgpDatePickerRowRenderToken = new InjectionToken<NgpDatePickerRowRender<unknown>>(\n 'NgpDatePickerRowRenderToken',\n);\n\n/**\n * Inject the DatePickerRowRender directive instance\n */\nexport function injectDatePickerRowRender<T>(): NgpDatePickerRowRender<T> {\n return inject(NgpDatePickerRowRenderToken) as NgpDatePickerRowRender<T>;\n}\n\nexport const NgpDatePickerWeekToken = new InjectionToken<unknown[]>('NgpDatePickerWeekToken');\n\n/**\n * Inject current week days\n */\nexport function injectDatePickerWeek<T>(): T[] {\n return inject(NgpDatePickerWeekToken) as T[];\n}\n","import { InjectionToken, inject } from '@angular/core';\nimport type { NgpDatePickerCellRender } from './date-picker-cell-render';\n\nexport const NgpDatePickerCellRenderToken = new InjectionToken<NgpDatePickerCellRender<unknown>>(\n 'NgpDatePickerCellRenderToken',\n);\n\n/**\n * Inject the DatePickerCell directive instance\n */\nexport function injectDatePickerCellRender<T>(): NgpDatePickerCellRender<T> {\n return inject(NgpDatePickerCellRenderToken) as NgpDatePickerCellRender<T>;\n}\n\nexport const NgpDatePickerCellDateToken = new InjectionToken<unknown>('NgpDatePickerCellDateToken');\n\n/**\n * Inject current cell date\n */\nexport function injectDatePickerCellDate<T>(): T {\n return inject(NgpDatePickerCellDateToken) as T;\n}\n","import {\n Directive,\n EmbeddedViewRef,\n inject,\n Injector,\n OnDestroy,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { injectDatePickerWeek } from '../date-picker-row-render/date-picker-row-render-token';\nimport {\n NgpDatePickerCellDateToken,\n NgpDatePickerCellRenderToken,\n} from './date-picker-cell-render-token';\n\n/**\n * A structural directive that renders a cell in the date picker grid.\n */\n@Directive({\n selector: '[ngpDatePickerCellRender]',\n exportAs: 'ngpDatePickerCellRender',\n providers: [{ provide: NgpDatePickerCellRenderToken, useExisting: NgpDatePickerCellRender }],\n})\nexport class NgpDatePickerCellRender<T> implements OnDestroy {\n /**\n * Access the template ref for the cell.\n */\n private readonly templateRef = inject(TemplateRef);\n\n /**\n * Access the view container ref.\n */\n private readonly viewContainerRef = inject(ViewContainerRef);\n\n /**\n * Access the dates in the week.\n */\n private readonly dates = injectDatePickerWeek<T>();\n\n /**\n * Store the view refs for the dates.\n */\n private readonly viewRefs: EmbeddedViewRef<NgpDatePickerCellContext<T>>[] = [];\n\n // Make sure the template checker knows the type of the context with which the\n // template of this directive will be rendered\n static ngTemplateContextGuard<T>(\n _: NgpDatePickerCellRender<T>,\n context: unknown,\n ): context is NgpDatePickerCellContext<T> {\n return true;\n }\n\n constructor() {\n this.renderDates();\n }\n\n /**\n * Render the dates in the week.\n */\n private renderDates(): void {\n this.viewRefs.forEach(viewRef => viewRef.destroy());\n\n for (const date of this.dates) {\n const viewRef = this.viewContainerRef.createEmbeddedView(\n this.templateRef,\n {\n $implicit: date,\n },\n {\n injector: Injector.create({\n parent: this.viewContainerRef.injector,\n providers: [{ provide: NgpDatePickerCellDateToken, useValue: date }],\n }),\n },\n );\n this.viewRefs.push(viewRef);\n }\n }\n\n /**\n * Destroy the view refs.\n */\n ngOnDestroy(): void {\n this.viewRefs.forEach(viewRef => viewRef.destroy());\n }\n}\n\ninterface NgpDatePickerCellContext<T> {\n $implicit: T;\n}\n","import { InjectionToken, inject } from '@angular/core';\nimport type { NgpDatePickerDateButton } from './date-picker-date-button';\n\nexport const NgpDatePickerDateButtonToken = new InjectionToken<NgpDatePickerDateButton<unknown>>(\n 'NgpDatePickerDateButtonToken',\n);\n\n/**\n * Inject the DatePickerDateButton directive instance\n */\nexport function injectDatePickerDateButton<T>(): NgpDatePickerDateButton<T> {\n return inject(NgpDatePickerDateButtonToken) as NgpDatePickerDateButton<T>;\n}\n","import { ExistingProvider, InjectionToken, Type, inject } from '@angular/core';\nimport type { NgpDatePicker } from './date-picker';\n\nexport const NgpDatePickerToken = new InjectionToken<NgpDatePicker<unknown>>('NgpDatePickerToken');\n\n/**\n * Inject the DatePicker directive instance\n */\nexport function injectDatePicker<T>(): NgpDatePicker<T> {\n return inject(NgpDatePickerToken) as NgpDatePicker<T>;\n}\n\n/**\n * Provide the DatePicker directive instance\n */\nexport function provideDatePicker<T>(datePicker: Type<NgpDatePicker<T>>): ExistingProvider {\n return { provide: NgpDatePickerToken, useExisting: datePicker };\n}\n","import { computed, contentChild, Directive } from '@angular/core';\nimport { NgpDatePickerDateButtonToken } from '../date-picker-date-button/date-picker-date-button-token';\nimport { injectDatePicker } from '../date-picker/date-picker-token';\n\n/**\n * A cell in the date picker grid.\n */\n@Directive({\n selector: '[ngpDatePickerCell]',\n exportAs: 'ngpDatePickerCell',\n host: {\n role: 'gridcell',\n '[attr.data-selected]': 'datePickerButton()?.selected() ? \"\" : null',\n '[attr.aria-selected]': 'datePickerButton()?.selected()',\n '[attr.aria-disabled]': 'datePickerButton()?.disabled()',\n '[attr.data-disabled]': 'datePickerButton()?.disabled() ? \"\" : null',\n '[attr.aria-labelledby]': 'labelId()',\n },\n})\nexport class NgpDatePickerCell {\n /**\n * Access the date picker.\n */\n private readonly datePicker = injectDatePicker();\n\n /**\n * Access the child date picker date button.\n */\n protected readonly datePickerButton = contentChild(NgpDatePickerDateButtonToken, {\n descendants: true,\n });\n\n /**\n * Access the label id.\n */\n protected readonly labelId = computed(() => this.datePicker.label()?.id());\n}\n","import {\n createState,\n createStateInjector,\n createStateProvider,\n createStateToken,\n InjectedState,\n} from 'ng-primitives/state';\nimport type { NgpDatePicker } from './date-picker';\n\nexport const NgpDatePickerStateToken = createStateToken<NgpDatePicker<unknown>>('DatePicker');\nexport const provideDatePickerState = createStateProvider(NgpDatePickerStateToken);\nexport const injectDatePickerState = createStateInjector<NgpDatePicker<unknown>>(\n NgpDatePickerStateToken,\n) as <T>() => InjectedState<NgpDatePicker<T>>;\nexport const datePickerState = createState(NgpDatePickerStateToken);\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport { computed, Directive, ElementRef, HostListener, inject, OnDestroy } from '@angular/core';\nimport { injectDateAdapter } from 'ng-primitives/date-time';\nimport { setupButton } from 'ng-primitives/internal';\nimport { injectDatePickerCellDate } from '../date-picker-cell-render/date-picker-cell-render-token';\nimport { injectDatePickerState } from '../date-picker/date-picker-state';\nimport { injectDatePicker } from '../date-picker/date-picker-token';\nimport { NgpDatePickerDateButtonToken } from './date-picker-date-button-token';\n\n/**\n * A button that represents a date in the date picker grid.\n */\n@Directive({\n selector: '[ngpDatePickerDateButton]',\n exportAs: 'ngpDatePickerDateButton',\n providers: [{ provide: NgpDatePickerDateButtonToken, useExisting: NgpDatePickerDateButton }],\n host: {\n '[attr.role]': '!isButton ? \"button\" : null',\n '[attr.tabindex]': 'focused() ? 0 : -1',\n '[attr.data-selected]': 'selected() ? \"\" : null',\n '[attr.aria-disabled]': 'disabled()',\n '[attr.data-outside-month]': 'outside() ? \"\" : null',\n '[attr.data-today]': 'today() ? \"\" : null',\n },\n})\nexport class NgpDatePickerDateButton<T> implements OnDestroy {\n /**\n * Access the element ref.\n */\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /**\n * Access the focus monitor.\n */\n private readonly focusMonitor = inject(FocusMonitor);\n\n /**\n * Access the date picker.\n */\n private readonly datePicker = injectDatePicker<T>();\n\n /**\n * Access the date picker state.\n */\n private readonly state = injectDatePickerState<T>();\n\n /**\n * Access the date adapter.\n */\n private readonly dateAdapter = injectDateAdapter<T>();\n\n /**\n * The date this cell represents.\n */\n private readonly date = injectDatePickerCellDate<T>();\n\n /**\n * Determine if this is the focused date.\n */\n protected readonly focused = computed(() =>\n this.dateAdapter.isSameDay(this.date, this.state().focusedDate()),\n );\n\n /**\n * Determine if this is the selected date.\n * @internal\n */\n readonly selected = computed(() => {\n const selected = this.state().date();\n return selected && this.dateAdapter.isSameDay(this.date, selected);\n });\n\n /**\n * Determine if this date is outside the current month.\n */\n protected readonly outside = computed(\n () => !this.dateAdapter.isSameMonth(this.date, this.state().focusedDate()),\n );\n\n /**\n * Determine if this date is today.\n */\n protected readonly today = computed(() =>\n this.dateAdapter.isSameDay(this.date, this.dateAdapter.now()),\n );\n\n /**\n * Determine if this date is disabled.\n * @internal\n */\n readonly disabled = computed(() => {\n const min = this.state().min();\n const max = this.state().max();\n\n if (this.state().disabled() || this.state().dateDisabled()(this.date)) {\n return true;\n }\n\n if (min && this.dateAdapter.compare(this.dateAdapter.startOfDay(this.date), min) < 0) {\n return true;\n }\n\n if (max && this.dateAdapter.compare(this.dateAdapter.startOfDay(this.date), max) > 0) {\n return true;\n }\n\n return false;\n });\n\n /**\n * Determine if the element is a button.\n */\n protected readonly isButton = this.elementRef.nativeElement.tagName === 'BUTTON';\n\n constructor() {\n this.datePicker.registerButton(this);\n setupButton({ disabled: this.disabled });\n }\n\n ngOnDestroy(): void {\n this.datePicker.unregisterButton(this);\n }\n\n /**\n * When the button is clicked, select the date.\n */\n @HostListener('click')\n @HostListener('keydown.enter', ['$event'])\n @HostListener('keydown.space', ['$event'])\n protected select(event?: KeyboardEvent): void {\n // if the button is disabled, or is already selected, do nothing.\n if (this.disabled() || this.selected()) {\n return;\n }\n\n // because this may not be a button, we should stop the event from firing twice due to\n // us listening to both the click and the keydown.enter event.\n if (event) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n this.state().date.set(this.date);\n this.state().dateChange.emit(this.date);\n this.datePicker.setFocusedDate(this.date, 'mouse', 'forward');\n }\n\n /**\n * Focus if this is the current focused date.\n * @internal\n */\n focus(): void {\n if (this.dateAdapter.isSameDay(this.date, this.state().focusedDate())) {\n this.focusMonitor.focusVia(this.elementRef, 'keyboard');\n }\n }\n\n /**\n * Focus the previous cell.\n */\n @HostListener('keydown.arrowLeft', ['$event'])\n protected focusPrevious(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n // in rtl, the arrow keys are reversed.\n if (this.getDirection() === 'rtl') {\n this.focusDate(this.dateAdapter.add(this.state().focusedDate(), { days: 1 }), 'forward');\n } else {\n this.focusDate(\n this.dateAdapter.subtract(this.state().focusedDate(), { days: 1 }),\n 'backward',\n );\n }\n }\n\n /**\n * Focus the next cell.\n */\n @HostListener('keydown.arrowRight', ['$event'])\n protected focusNext(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n // in rtl, the arrow keys are reversed.\n if (this.getDirection() === 'rtl') {\n this.focusDate(\n this.dateAdapter.subtract(this.state().focusedDate(), { days: 1 }),\n 'backward',\n );\n } else {\n this.focusDate(this.dateAdapter.add(this.state().focusedDate(), { days: 1 }), 'forward');\n }\n }\n\n /**\n * Focus the above cell.\n */\n @HostListener('keydown.arrowUp', ['$event'])\n protected focusAbove(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n this.focusDate(this.dateAdapter.subtract(this.state().focusedDate(), { days: 7 }), 'backward');\n }\n\n /**\n * Focus the below cell.\n */\n @HostListener('keydown.arrowDown', ['$event'])\n protected focusBelow(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n this.focusDate(this.dateAdapter.add(this.state().focusedDate(), { days: 7 }), 'forward');\n }\n\n /**\n * Focus the first date of the month.\n */\n @HostListener('keydown.home', ['$event'])\n protected focusFirst(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.focusDate(this.dateAdapter.startOfMonth(this.state().focusedDate()), 'forward');\n }\n\n /**\n * Focus the last date of the month.\n */\n @HostListener('keydown.end', ['$event'])\n protected focusLast(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.focusDate(this.dateAdapter.endOfMonth(this.state().focusedDate()), 'backward');\n }\n\n /**\n * Focus the same date in the previous month.\n */\n @HostListener('keydown.pageUp', ['$event'])\n protected focusPreviousMonth(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n const date = this.dateAdapter.getDate(this.state().focusedDate());\n\n let previousMonthTarget = this.dateAdapter.startOfMonth(this.state().focusedDate());\n previousMonthTarget = this.dateAdapter.subtract(previousMonthTarget, { months: 1 });\n\n const lastDay = this.dateAdapter.endOfMonth(previousMonthTarget);\n\n // if we are on a date that does not exist in the previous month, we should focus the last day of the month.\n if (date > this.dateAdapter.getDate(lastDay)) {\n this.focusDate(lastDay, 'forward');\n return;\n } else {\n this.focusDate(this.dateAdapter.set(previousMonthTarget, { day: date }), 'forward');\n }\n }\n\n /**\n * Focus the same date in the next month.\n */\n @HostListener('keydown.pageDown', ['$event'])\n protected focusNextMonth(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n const date = this.dateAdapter.getDate(this.state().focusedDate());\n\n let nextMonthTarget = this.dateAdapter.startOfMonth(this.state().focusedDate());\n nextMonthTarget = this.dateAdapter.add(nextMonthTarget, { months: 1 });\n\n const lastDay = this.dateAdapter.endOfMonth(nextMonthTarget);\n\n // if we are on a date that does not exist in the next month, we should focus the last day of the month.\n if (date > this.dateAdapter.getDate(lastDay)) {\n this.focusDate(lastDay, 'backward');\n return;\n } else {\n this.focusDate(this.dateAdapter.set(nextMonthTarget, { day: date }), 'backward');\n }\n }\n\n private focusDate(date: T, direction: 'forward' | 'backward'): void {\n this.datePicker.setFocusedDate(date, 'keyboard', direction);\n }\n\n /**\n * Get the direction of the element.\n */\n private getDirection(): 'ltr' | 'rtl' {\n return getComputedStyle(this.elementRef.nativeElement).direction === 'rtl' ? 'rtl' : 'ltr';\n }\n}\n","import { computed, Directive } from '@angular/core';\nimport { injectDatePickerState } from '../date-picker/date-picker-state';\n\n/**\n * The grid that contains the days of the month.\n */\n@Directive({\n selector: '[ngpDatePickerGrid]',\n exportAs: 'ngpDatePickerGrid',\n host: {\n role: 'grid',\n '[attr.aria-labelledby]': 'labelId()',\n '[attr.data-disabled]': 'state().disabled() ? \"\" : null',\n },\n})\nexport class NgpDatePickerGrid<T> {\n /**\n * Access the date picker state.\n */\n protected readonly state = injectDatePickerState<T>();\n\n /**\n * Determine the id for the label.\n */\n protected readonly labelId = computed(() => this.state().label()?.id());\n}\n","import { InjectionToken, inject } from '@angular/core';\nimport type { NgpDatePickerLabel } from './date-picker-label';\n\nexport const NgpDatePickerLabelToken = new InjectionToken<NgpDatePickerLabel<unknown>>(\n 'NgpDatePickerLabelToken',\n);\n\n/**\n * Inject the DatePickerLabel directive instance\n */\nexport function injectDatePickerLabel<T>(): NgpDatePickerLabel<T> {\n return inject(NgpDatePickerLabelToken) as NgpDatePickerLabel<T>;\n}\n","import { Directive, input } from '@angular/core';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { injectDatePickerState } from '../date-picker/date-picker-state';\nimport { NgpDatePickerLabelToken } from './date-picker-label-token';\n\n/**\n * The label that displays the current month and year typically in the header of the date picker. This will be announced by screen readers when the date changes.\n */\n@Directive({\n selector: '[ngpDatePickerLabel]',\n exportAs: 'ngpDatePickerLabel',\n providers: [{ provide: NgpDatePickerLabelToken, useExisting: NgpDatePickerLabel }],\n host: {\n '[id]': 'id()',\n '[attr.aria-live]': 'ariaLive()',\n '[attr.data-disabled]': 'state().disabled() ? \"\" : null',\n },\n})\nexport class NgpDatePickerLabel<T> {\n /**\n * Access the date picker.\n */\n protected readonly state = injectDatePickerState<T>();\n\n /**\n * Define a unique id for the label.\n */\n readonly id = input(uniqueId('ngp-date-picker-label'));\n\n /**\n * Define the aria live attribute.\n */\n readonly ariaLive = input('polite', {\n alias: 'aria-live',\n });\n}\n","import { computed, Directive, ElementRef, HostListener, inject } from '@angular/core';\nimport { injectDateAdapter } from 'ng-primitives/date-time';\nimport { setupButton } from 'ng-primitives/internal';\nimport { injectDatePickerState } from '../date-picker/date-picker-state';\nimport { injectDatePicker } from '../date-picker/date-picker-token';\n\n/**\n * A button that navigates to the next month.\n */\n@Directive({\n selector: '[ngpDatePickerNextMonth]',\n exportAs: 'ngpDatePickerNextMonth',\n host: {\n '[attr.aria-disabled]': 'disabled()',\n '[attr.type]': 'isButton ? \"button\" : null',\n },\n})\nexport class NgpDatePickerNextMonth<T> {\n /**\n * Access the element ref.\n */\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /**\n * Access the date adapter.\n */\n private readonly dateAdapter = injectDateAdapter<T>();\n\n /**\n * Access the date picker.\n */\n private readonly datePicker = injectDatePicker<T>();\n\n /**\n * Access the date picker state.\n */\n private readonly state = injectDatePickerState<T>();\n\n /**\n * Determine if this is a button element\n */\n protected readonly isButton = this.elementRef.nativeElement.tagName.toLowerCase() === 'button';\n\n /**\n * Determine if the next month is disabled.\n * @internal\n */\n readonly disabled = computed(() => {\n if (this.state().disabled()) {\n return true;\n }\n\n const maxDate = this.state().max();\n const lastDay = this.dateAdapter.set(this.dateAdapter.endOfMonth(this.state().focusedDate()), {\n hour: 23,\n minute: 59,\n second: 59,\n millisecond: 999,\n });\n\n // if there is a max date and it is equal to or before the last day of the month, disable it.\n if (maxDate && this.dateAdapter.compare(maxDate, lastDay) <= 0) {\n return true;\n }\n\n return false;\n });\n\n constructor() {\n setupButton({ disabled: this.disabled });\n }\n\n /**\n * Navigate to the next month.\n */\n @HostListener('click')\n protected navigateToNextMonth(): void {\n if (this.disabled()) {\n return;\n }\n\n // move focus to the first day of the next month.\n let date = this.state().focusedDate();\n date = this.dateAdapter.add(date, { months: 1 });\n date = this.dateAdapter.set(date, {\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n });\n\n this.datePicker.setFocusedDate(date, 'mouse', 'forward');\n }\n}\n","import { computed, Directive, ElementRef, HostListener, inject } from '@angular/core';\nimport { injectDateAdapter } from 'ng-primitives/date-time';\nimport { setupButton } from 'ng-primitives/internal';\nimport { injectDatePickerState } from '../date-picker/date-picker-state';\nimport { injectDatePicker } from '../date-picker/date-picker-token';\n\n/**\n * A button that navigates to the previous month.\n */\n@Directive({\n selector: '[ngpDatePickerPreviousMonth]',\n exportAs: 'ngpDatePickerPreviousMonth',\n host: {\n '[attr.aria-disabled]': 'disabled()',\n '[attr.type]': 'isButton ? \"button\" : null',\n },\n})\nexport class NgpDatePickerPreviousMonth<T> {\n /**\n * Access the element ref.\n */\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /**\n * Access the date adapter.\n */\n private readonly dateAdapter = injectDateAdapter<T>();\n\n /**\n * Access the date picker.\n */\n private readonly datePicker = injectDatePicker<T>();\n\n /**\n * Access the date picker state.\n */\n private readonly state = injectDatePickerState<T>();\n\n /**\n * Determine if this is a button element\n */\n protected readonly isButton = this.elementRef.nativeElement.tagName.toLowerCase() === 'button';\n\n /**\n * Determine if the next month is disabled.\n * @internal\n */\n readonly disabled = computed(() => {\n if (this.state().disabled()) {\n return true;\n }\n\n const minDate = this.state().min();\n\n // if the next month is out of bounds, disable it.\n const firstDay = this.dateAdapter.set(\n this.dateAdapter.startOfMonth(this.state().focusedDate()),\n {\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n },\n );\n\n // if there is a min date and it is equal to or after the first day of the month, disable it.\n if (minDate && this.dateAdapter.compare(minDate, firstDay) >= 0) {\n return true;\n }\n\n return false;\n });\n\n constructor() {\n setupButton({ disabled: this.disabled });\n }\n\n /**\n * Navigate to the previous month.\n */\n @HostListener('click')\n protected navigateToPreviouMonth(): void {\n if (this.disabled()) {\n return;\n }\n\n // move focus to the first day of the previous month.\n let date = this.state().focusedDate();\n date = this.dateAdapter.subtract(date, { months: 1 });\n date = this.dateAdapter.set(date, {\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n });\n\n this.datePicker.setFocusedDate(date, 'mouse', 'backward');\n }\n}\n","import {\n computed,\n Directive,\n EmbeddedViewRef,\n inject,\n Injector,\n OnDestroy,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { injectDateAdapter } from 'ng-primitives/date-time';\nimport { onChange } from 'ng-primitives/utils';\nimport { injectDatePickerState } from '../date-picker/date-picker-state';\nimport {\n NgpDatePickerRowRenderToken,\n NgpDatePickerWeekToken,\n} from './date-picker-row-render-token';\n\n/**\n * A structural directive that renders a row of weekdays in the date picker grid.\n */\n@Directive({\n selector: '[ngpDatePickerRowRender]',\n exportAs: 'ngpDatePickerRowRender',\n providers: [{ provide: NgpDatePickerRowRenderToken, useExisting: NgpDatePickerRowRender }],\n})\nexport class NgpDatePickerRowRender<T> implements OnDestroy {\n /**\n * Access the date adapter.\n */\n private readonly dateAdapter = injectDateAdapter<T>();\n\n /**\n * Access the date picker.\n */\n private readonly state = injectDatePickerState<T>();\n\n /**\n * Access the template ref for the cell.\n */\n private readonly templateRef = inject(TemplateRef);\n\n /**\n * Access the view container ref.\n */\n private readonly viewContainerRef = inject(ViewContainerRef);\n\n /**\n * Get all the days to display, this is the days of the current month\n * and the days of the previous and next month to fill the grid.\n */\n protected readonly days = computed(() => {\n const month = this.state().focusedDate();\n const days: T[] = [];\n\n // Get the first and last day of the month.\n let firstDay = this.dateAdapter.startOfMonth(month);\n let lastDay = this.dateAdapter.endOfMonth(month);\n\n // find the first and last day of visible in the grid.\n firstDay = this.dateAdapter.subtract(firstDay, {\n days: this.dateAdapter.getDay(firstDay),\n });\n lastDay = this.dateAdapter.add(lastDay, {\n days: 6 - this.dateAdapter.getDay(lastDay),\n });\n\n // collect all the days to display.\n while (firstDay <= lastDay) {\n days.push(firstDay);\n firstDay = this.dateAdapter.add(firstDay, { days: 1 });\n }\n\n return days;\n });\n\n // get the weeks to display.\n protected readonly weeks = computed(() => {\n const days = this.days();\n const weeks = [];\n\n for (let i = 0; i < days.length; i += 7) {\n weeks.push(days.slice(i, i + 7));\n }\n\n return weeks;\n });\n\n /**\n * Store the embedded view refs of each rendered row.\n */\n private readonly viewRefs: EmbeddedViewRef<void>[] = [];\n\n constructor() {\n // re-render the rows when the month changes.\n onChange(this.state().focusedDate, (date, previousDate) => {\n if (!date || !previousDate || !this.dateAdapter.isSameMonth(date, previousDate)) {\n this.renderRows();\n }\n });\n }\n\n ngOnDestroy(): void {\n this.destroyRows();\n }\n\n /**\n * Render the row.\n */\n private renderRows(): void {\n const weeks = this.weeks();\n\n // clear the view container.\n this.destroyRows();\n\n // render the weeks.\n for (const week of weeks) {\n const viewRef = this.viewContainerRef.createEmbeddedView(this.templateRef, null, {\n injector: Injector.create({\n parent: this.viewContainerRef.injector,\n providers: [{ provide: NgpDatePickerWeekToken, useValue: week }],\n }),\n });\n this.viewRefs.push(viewRef);\n }\n }\n\n /**\n * Destroy the row.\n */\n private destroyRows(): void {\n for (const viewRef of this.viewRefs) {\n viewRef.destroy();\n }\n }\n}\n","import { FocusOrigin } from '@angular/cdk/a11y';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport {\n afterNextRender,\n booleanAttribute,\n contentChild,\n Directive,\n inject,\n Injector,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { injectDateAdapter } from 'ng-primitives/date-time';\nimport type { NgpDatePickerDateButton } from '../date-picker-date-button/date-picker-date-button';\nimport { NgpDatePickerLabelToken } from '../date-picker-label/date-picker-label-token';\nimport { datePickerState, provideDatePickerState } from './date-picker-state';\nimport { provideDatePicker } from './date-picker-token';\n\n/**\n * The outermost container for the date picker.\n */\n@Directive({\n selector: '[ngpDatePicker]',\n exportAs: 'ngpDatePicker',\n providers: [provideDatePicker(NgpDatePicker), provideDatePickerState()],\n host: {\n '[attr.data-disabled]': 'state.disabled() ? \"\" : null',\n },\n})\nexport class NgpDatePicker<T> {\n /**\n * Access the date adapter.\n */\n private readonly dateAdapter = injectDateAdapter<T>();\n\n /**\n * Access the injector.\n */\n private readonly injector = inject(Injector);\n\n /**\n * The minimum date that can be selected.\n */\n readonly min = input<T | undefined>(undefined, {\n alias: 'ngpDatePickerMin',\n });\n\n /**\n * The maximum date that can be selected.\n */\n readonly max = input<T | undefined>(undefined, {\n alias: 'ngpDatePickerMax',\n });\n\n /**\n * Determine if the date picker is disabled.\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpDatePickerDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * A function that is called to determine if a specific date should be disabled.\n */\n readonly dateDisabled = input<(date: T) => boolean>(() => false, {\n alias: 'ngpDatePickerDateDisabled',\n });\n\n /**\n * The selected value.\n */\n readonly date = input<T | undefined>(undefined, {\n alias: 'ngpDatePickerDate',\n });\n\n /**\n * Emit when the date changes.\n */\n readonly dateChange = output<T | undefined>({\n alias: 'ngpDatePickerDateChange',\n });\n\n /**\n * The focused value.\n */\n readonly focusedDate = input<T>(this.dateAdapter.now(), {\n alias: 'ngpDatePickerFocusedDate',\n });\n\n /**\n * Emit when the focused date changes.\n */\n readonly focusedDateChange = output<T>({\n alias: 'ngpDatePickerFocusedDateChange',\n });\n\n /**\n * Detect the label element.\n * @internal\n */\n readonly label = contentChild(NgpDatePickerLabelToken, { descendants: true });\n\n /**\n * Access all the date picker buttons\n */\n private readonly buttons = signal<NgpDatePickerDateButton<T>[]>([]);\n\n /**\n * The date picker state.\n */\n protected readonly state = datePickerState<NgpDatePicker<T>>(this);\n\n /**\n * Set the focused date.\n * @param date The date to focus.\n * @internal\n */\n setFocusedDate(date: T, origin: FocusOrigin = 'mouse', direction: 'forward' | 'backward'): void {\n if (this.state.disabled()) {\n return;\n }\n\n const min = this.state.min();\n const max = this.state.max();\n\n if (min && this.dateAdapter.isBefore(date, min)) {\n date = min;\n }\n\n if (max && this.dateAdapter.isAfter(date, max)) {\n date = max;\n }\n\n // if the date is disabled, find the next available date in the specified direction.\n if (this.state.dateDisabled()(date)) {\n let nextDate = this.dateAdapter.add(date, { days: direction === 'forward' ? 1 : -1 });\n\n while (\n this.state.dateDisabled()(nextDate) ||\n (min && this.dateAdapter.isBefore(nextDate, min)) ||\n (max && this.dateAdapter.isAfter(nextDate, max))\n ) {\n nextDate = this.dateAdapter.add(nextDate, { days: direction === 'forward' ? 1 : -1 });\n }\n\n date = nextDate;\n }\n\n this.state.focusedDate.set(date);\n this.focusedDateChange.emit(date);\n\n if (origin === 'keyboard') {\n afterNextRender(\n {\n write: () => this.buttons().forEach(button => button.focus()),\n },\n {\n injector: this.injector,\n },\n );\n }\n }\n\n /**\n * Register a date button.\n * @param button The date button to register.\n * @internal\n */\n registerButton(button: NgpDatePickerDateButton<T>): void {\n this.buttons.update(buttons => [...buttons, button]);\n }\n\n /**\n * Unregister a date button.\n * @param button The date button to unregister.\n * @internal\n */\n unregisterButton(button: NgpDatePickerDateButton<T>): void {\n this.buttons.update(buttons => buttons.filter(b => b !== button));\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { inject, ElementRef, Injectable, Directive, Renderer2, signal, PLATFORM_ID, effect, untracked, CSP_NONCE } from '@angular/core';
|
|
3
|
+
import { safeTakeUntilDestroyed, onBooleanChange, injectDisposables, booleanAttributeBinding } from 'ng-primitives/utils';
|
|
3
4
|
import { FocusMonitor } from '@angular/cdk/a11y';
|
|
4
|
-
import { safeTakeUntilDestroyed, onBooleanChange, injectDisposables } from 'ng-primitives/utils';
|
|
5
5
|
import { isPlatformServer, DOCUMENT, isPlatformBrowser } from '@angular/common';
|
|
6
6
|
import { fromResizeEvent } from 'ng-primitives/resize';
|
|
7
7
|
|
|
@@ -119,6 +119,20 @@ function setupExitAnimation({ element }) {
|
|
|
119
119
|
};
|
|
120
120
|
}
|
|
121
121
|
|
|
122
|
+
/**
|
|
123
|
+
* This function checks to see if a given interaction has already been setup on a given element.
|
|
124
|
+
* If it has, it returns the existing interaction state.
|
|
125
|
+
* If it has not, it sets up the interaction state for future checks.
|
|
126
|
+
*/
|
|
127
|
+
function hasInteraction(element, interaction) {
|
|
128
|
+
const hasInteraction = `__ngp-${interaction}` in element;
|
|
129
|
+
// if the interaction has not been setup, we mark it as setup for future checks
|
|
130
|
+
if (!hasInteraction) {
|
|
131
|
+
element[`__ngp-${interaction}`] = true;
|
|
132
|
+
}
|
|
133
|
+
return hasInteraction;
|
|
134
|
+
}
|
|
135
|
+
|
|
122
136
|
function setupFocus({ focus, blur, focusWithin = false, disabled = signal(false), }) {
|
|
123
137
|
/**
|
|
124
138
|
* Access the element reference.
|
|
@@ -161,21 +175,10 @@ function setupFocus({ focus, blur, focusWithin = false, disabled = signal(false)
|
|
|
161
175
|
}
|
|
162
176
|
|
|
163
177
|
function setupFocusVisible({ focusChange, disabled = signal(false), }) {
|
|
164
|
-
/**
|
|
165
|
-
* Access the element that the directive is applied to.
|
|
166
|
-
*/
|
|
167
178
|
const elementRef = inject(ElementRef);
|
|
168
|
-
/**
|
|
169
|
-
* Access the renderer.
|
|
170
|
-
*/
|
|
171
179
|
const renderer = inject(Renderer2);
|
|
172
|
-
/**
|
|
173
|
-
* Access the focus monitor.
|
|
174
|
-
*/
|
|
175
180
|
const focusMonitor = inject(FocusMonitor);
|
|
176
|
-
|
|
177
|
-
* Whether the element is currently focused.
|
|
178
|
-
*/
|
|
181
|
+
// Whether the element is currently focused.
|
|
179
182
|
const isFocused = signal(false);
|
|
180
183
|
// handle focus state
|
|
181
184
|
focusMonitor
|
|
@@ -433,13 +436,7 @@ function setupHover({ hoverStart, hoverEnd, disabled = signal(false), }) {
|
|
|
433
436
|
}
|
|
434
437
|
|
|
435
438
|
function setupPress({ pressStart, pressEnd, disabled = signal(false), }) {
|
|
436
|
-
/**
|
|
437
|
-
* Access the element reference.
|
|
438
|
-
*/
|
|
439
439
|
const elementRef = inject(ElementRef);
|
|
440
|
-
/**
|
|
441
|
-
* Access the disposables helper.
|
|
442
|
-
*/
|
|
443
440
|
const disposables = injectDisposables();
|
|
444
441
|
/**
|
|
445
442
|
* Whether the element is currently pressed.
|
|
@@ -502,6 +499,11 @@ function setupPress({ pressStart, pressEnd, disabled = signal(false), }) {
|
|
|
502
499
|
* Setup the interactions without relying on HostDirectives.
|
|
503
500
|
*/
|
|
504
501
|
function setupInteractions({ focus, hover, press, focusWithin, focusVisible, disabled = signal(false), }) {
|
|
502
|
+
const elementRef = injectElementRef();
|
|
503
|
+
// If the interaction has already been setup, we can skip the setup.
|
|
504
|
+
if (hasInteraction(elementRef.nativeElement, 'interactions')) {
|
|
505
|
+
return;
|
|
506
|
+
}
|
|
505
507
|
if (hover) {
|
|
506
508
|
setupHover({ disabled });
|
|
507
509
|
}
|
|
@@ -516,6 +518,27 @@ function setupInteractions({ focus, hover, press, focusWithin, focusVisible, dis
|
|
|
516
518
|
}
|
|
517
519
|
}
|
|
518
520
|
|
|
521
|
+
/**
|
|
522
|
+
* Setup the button interactions and attributes.
|
|
523
|
+
*
|
|
524
|
+
* @param options - The options for the button.
|
|
525
|
+
*/
|
|
526
|
+
function setupButton({ disabled }) {
|
|
527
|
+
const elementRef = injectElementRef();
|
|
528
|
+
// If the button interaction has already been setup, we can skip the setup.
|
|
529
|
+
if (hasInteraction(elementRef.nativeElement, 'button')) {
|
|
530
|
+
return;
|
|
531
|
+
}
|
|
532
|
+
const isButton = elementRef.nativeElement.tagName.toLowerCase() === 'button';
|
|
533
|
+
setupInteractions({ hover: true, press: true, focusVisible: true, disabled });
|
|
534
|
+
// add the the `data-disabled` attribute to the element
|
|
535
|
+
booleanAttributeBinding(elementRef.nativeElement, 'data-disabled', disabled);
|
|
536
|
+
// add the `disabled` attribute to the element if it is a button
|
|
537
|
+
if (isButton) {
|
|
538
|
+
booleanAttributeBinding(elementRef.nativeElement, 'disabled', disabled);
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
|
|
519
542
|
/**
|
|
520
543
|
* This implementation is heavily inspired by the great work on ngextension!
|
|
521
544
|
* https://github.com/ngxtension/ngxtension-platform/blob/main/libs/ngxtension/explicit-effect/src/explicit-effect.ts
|
|
@@ -533,13 +556,6 @@ function explicitEffect(deps, fn, options) {
|
|
|
533
556
|
}, options);
|
|
534
557
|
}
|
|
535
558
|
|
|
536
|
-
function syncState(source, target) {
|
|
537
|
-
effect(() => {
|
|
538
|
-
const sourceValue = source();
|
|
539
|
-
untracked(() => target.set(sourceValue));
|
|
540
|
-
});
|
|
541
|
-
}
|
|
542
|
-
|
|
543
559
|
/**
|
|
544
560
|
* A utility service for injecting styles into the document.
|
|
545
561
|
* Angular doesn't allow directives to specify styles, only components.
|
|
@@ -658,5 +674,5 @@ function scrollIntoViewIfNeeded(element) {
|
|
|
658
674
|
* Generated bundle index. Do not edit.
|
|
659
675
|
*/
|
|
660
676
|
|
|
661
|
-
export { NgpExitAnimation, NgpExitAnimationManager, StyleInjector, explicitEffect, injectElementRef, injectExitAnimationManager, injectStyleInjector, onDomRemoval, provideExitAnimationManager, scrollIntoViewIfNeeded, setupExitAnimation, setupFocus, setupFocusVisible, setupHover, setupInteractions, setupPress
|
|
677
|
+
export { NgpExitAnimation, NgpExitAnimationManager, StyleInjector, explicitEffect, injectElementRef, injectExitAnimationManager, injectStyleInjector, onDomRemoval, provideExitAnimationManager, scrollIntoViewIfNeeded, setupButton, setupExitAnimation, setupFocus, setupFocusVisible, setupHover, setupInteractions, setupPress };
|
|
662
678
|
//# sourceMappingURL=ng-primitives-internal.mjs.map
|