novo-elements 11.3.0-next.5 → 11.3.1-next.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/elements/calendar/calendar.component.d.ts +1 -1
- package/elements/calendar/month-select/month-select.component.d.ts +1 -1
- package/elements/calendar/month-view/month-view.component.d.ts +1 -1
- package/elements/calendar/strategies/default-selection.strategy.d.ts +1 -1
- package/elements/calendar/strategies/range-selection.strategy.d.ts +1 -1
- package/elements/calendar/strategies/week-selection.strategy.d.ts +1 -1
- package/elements/calendar/year-select/year-select.component.d.ts +1 -1
- package/elements/select/Select.d.ts +1 -2
- package/fesm2022/novo-elements-elements-calendar.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-select.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ChangeDetectorRef, ElementRef, EventEmitter, OnInit } from '@angular/core';
|
|
2
2
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
3
3
|
import { NovoLabelService } from 'novo-elements/services';
|
|
4
|
-
import type
|
|
4
|
+
import { type DatePickerSelectModes, type NovoDateSelectEvent, type NovoDateSelectionStrategy, type NovoMonthSelectEvent, type NovoYearSelectEvent, type OverlayDate } from 'novo-elements/utils';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
export declare class NovoCalendarElement implements OnInit {
|
|
7
7
|
labels: NovoLabelService;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { EventEmitter, OnInit } from '@angular/core';
|
|
2
2
|
import { NovoLabelService } from 'novo-elements/services';
|
|
3
|
-
import type
|
|
3
|
+
import { type DateLike } from 'novo-elements/utils';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export declare class NovoMonthSelectElement implements OnInit {
|
|
6
6
|
labels: NovoLabelService;
|
|
@@ -2,7 +2,7 @@ import { ChangeDetectorRef, ElementRef, EventEmitter, OnInit } from '@angular/co
|
|
|
2
2
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
3
3
|
import { Day as DateFnsDay } from 'date-fns';
|
|
4
4
|
import { NovoLabelService } from 'novo-elements/services';
|
|
5
|
-
import type
|
|
5
|
+
import { type DateLike, type Day, type OverlayDate } from 'novo-elements/utils';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
export declare class NovoMonthViewElement implements OnInit {
|
|
8
8
|
labels: NovoLabelService;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FactoryProvider, InjectionToken } from '@angular/core';
|
|
2
|
-
import type
|
|
2
|
+
import { type DateLike, type NovoDateSelectionStrategy } from 'novo-elements/utils';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
/** Injection token used to customize the date range selection behavior. */
|
|
5
5
|
export declare const NOVO_DATE_SELECTION_STRATEGY: InjectionToken<NovoDateSelectionStrategy<DateLike>>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type DateLike, type NovoDateSelectionStrategy } from 'novo-elements/utils';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
export declare class RangeSelectionStrategy implements NovoDateSelectionStrategy<DateLike[]> {
|
|
4
4
|
selectionFinished(date: DateLike, currentRange: DateLike[]): DateLike[];
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type DateLike, type NovoDateSelectionStrategy } from 'novo-elements/utils';
|
|
2
2
|
export declare class WeekSelectionStrategy implements NovoDateSelectionStrategy<DateLike[]> {
|
|
3
3
|
private weekStartsOn;
|
|
4
4
|
constructor(weekStartsOn?: Day);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { EventEmitter, OnInit } from '@angular/core';
|
|
2
2
|
import { NovoLabelService } from 'novo-elements/services';
|
|
3
|
-
import type
|
|
3
|
+
import { type DateLike } from 'novo-elements/utils';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export declare class NovoYearSelectElement implements OnInit {
|
|
6
6
|
labels: NovoLabelService;
|
|
@@ -4,8 +4,7 @@ import { AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, Injector, N
|
|
|
4
4
|
import { ControlValueAccessor, FormGroupDirective, NgControl, NgForm } from '@angular/forms';
|
|
5
5
|
import { Observable, Subject } from 'rxjs';
|
|
6
6
|
import { NovoLabelService } from 'novo-elements/services';
|
|
7
|
-
import { CanDisableCtor, CanRequireCtor, CanUpdateErrorStateCtor, ErrorStateMatcher, HasOverlayCtor, HasTabIndexCtor, NovoOptgroup, NovoOption } from 'novo-elements/elements/common';
|
|
8
|
-
import { NovoOverlayTemplateComponent } from 'novo-elements/elements/common';
|
|
7
|
+
import { CanDisableCtor, CanRequireCtor, CanUpdateErrorStateCtor, ErrorStateMatcher, HasOverlayCtor, HasTabIndexCtor, NovoOptgroup, NovoOption, NovoOverlayTemplateComponent } from 'novo-elements/elements/common';
|
|
9
8
|
import { NovoFieldControl, NovoFieldElement } from 'novo-elements/elements/field';
|
|
10
9
|
import * as i0 from "@angular/core";
|
|
11
10
|
/** Change event object that is emitted when the select value has changed. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"novo-elements-elements-calendar.mjs","sources":["../../../projects/novo-elements/src/elements/calendar/strategies/default-selection.strategy.ts","../../../projects/novo-elements/src/elements/calendar/strategies/multi-date-selection.strategy.ts","../../../projects/novo-elements/src/elements/calendar/strategies/range-selection.strategy.ts","../../../projects/novo-elements/src/elements/calendar/strategies/week-selection.strategy.ts","../../../projects/novo-elements/src/elements/calendar/month-view/month-view.component.ts","../../../projects/novo-elements/src/elements/calendar/month-view/month-view.component.html","../../../projects/novo-elements/src/elements/calendar/month-select/month-select.component.ts","../../../projects/novo-elements/src/elements/calendar/month-select/month-select.component.html","../../../projects/novo-elements/src/elements/calendar/year-select/year-select.component.ts","../../../projects/novo-elements/src/elements/calendar/year-select/year-select.component.html","../../../projects/novo-elements/src/elements/calendar/calendar.component.ts","../../../projects/novo-elements/src/elements/calendar/calendar.component.html","../../../projects/novo-elements/src/elements/calendar/Calendar.module.ts","../../../projects/novo-elements/src/elements/calendar/novo-elements-elements-calendar.ts"],"sourcesContent":["import { FactoryProvider, Injectable, InjectionToken, Optional, SkipSelf } from '@angular/core';\nimport type { DateLike, NovoDateSelectionStrategy } from 'novo-elements/utils';\nimport { DateUtil } from 'novo-elements/utils';\n\n/** Injection token used to customize the date range selection behavior. */\nexport const NOVO_DATE_SELECTION_STRATEGY = new InjectionToken<NovoDateSelectionStrategy>('NOVO_DATE_SELECTION_STRATEGY');\n\n/** Provides the default date selection behavior. Single Date */\n@Injectable()\nexport class DefaultDateSelectionStrategy implements NovoDateSelectionStrategy<DateLike[]> {\n selectionFinished(date: DateLike | null, currentValue: DateLike[], event: Event): DateLike[] {\n return [date];\n }\n\n createPreview(activeDate: DateLike | null, [currentDate]: DateLike[]) {\n return [activeDate];\n }\n\n isSelected(activeDate: DateLike | null, [currentDate]: DateLike[]) {\n return DateUtil.isSameDay(activeDate, currentDate);\n }\n}\n\n/** @docs-private */\nexport function NOVO_DATE_SELECTION_STRATEGY_PROVIDER_FACTORY(parent: NovoDateSelectionStrategy<unknown>) {\n return parent || new DefaultDateSelectionStrategy();\n}\n\n/** @docs-private */\nexport const NOVO_DATE_SELECTION_STRATEGY_PROVIDER: FactoryProvider = {\n provide: NOVO_DATE_SELECTION_STRATEGY,\n deps: [[new Optional(), new SkipSelf(), NOVO_DATE_SELECTION_STRATEGY]],\n useFactory: NOVO_DATE_SELECTION_STRATEGY_PROVIDER_FACTORY,\n};\n","import { Injectable } from '@angular/core';\nimport type { DateLike, NovoDateSelectionStrategy } from 'novo-elements/utils';\n\n@Injectable()\nexport class MultiDateSelectionStrategy implements NovoDateSelectionStrategy<DateLike[]> {\n selectionFinished(dateLike: DateLike | null, currentValue: DateLike[], event: Event): DateLike[] {\n const date = dateLike as Date;\n const current = new Set(currentValue.map((c: Date) => c.getTime()));\n if (current.has(date.getTime())) {\n current.delete(date.getTime());\n } else {\n current.add(date.getTime());\n }\n return [...current].map((c) => new Date(c));\n }\n\n createPreview(activeDate: DateLike | null, currentValue: DateLike[]) {\n return [activeDate];\n }\n\n isSelected(activeDate: DateLike | null, currentValue: DateLike[]) {\n return currentValue && currentValue.includes(activeDate);\n }\n}\n","import { Injectable } from '@angular/core';\nimport type { DateLike, NovoDateSelectionStrategy } from 'novo-elements/utils';\nimport { DateUtil } from 'novo-elements/utils';\n\n@Injectable()\nexport class RangeSelectionStrategy implements NovoDateSelectionStrategy<DateLike[]> {\n selectionFinished(date: DateLike, currentRange: DateLike[]) {\n let [start, end] = currentRange;\n\n if (start == null) {\n start = date;\n } else if (end == null && date && DateUtil.differenceInCalendarDays(date, start) >= 0) {\n end = date;\n } else {\n start = date;\n end = null;\n }\n\n return [start, end];\n }\n\n createPreview(activeDate: DateLike | null, currentRange: DateLike[]) {\n let start: DateLike | null = null;\n let end: DateLike | null = null;\n const [currStart, currEnd] = currentRange;\n\n if (currStart && !currEnd && activeDate) {\n start = currStart;\n end = activeDate;\n }\n\n return [start, end];\n }\n\n isSelected(activeDate: DateLike | null, currentRange: DateLike[]) {\n const [start, end] = currentRange;\n return DateUtil.isWithinRange(activeDate, start, end);\n }\n}\n","import type { DateLike, NovoDateSelectionStrategy } from 'novo-elements/utils';\nimport { DateUtil } from 'novo-elements/utils';\n\nexport class WeekSelectionStrategy implements NovoDateSelectionStrategy<DateLike[]> {\n constructor(private weekStartsOn: Day = 0) {}\n\n selectionFinished(date: DateLike | null): DateLike[] {\n return this._createWeekRange(date);\n }\n\n createPreview(activeDate: DateLike | null): DateLike[] {\n return this._createWeekRange(activeDate);\n }\n\n private _createWeekRange(date: DateLike | null): DateLike[] {\n if (date) {\n const { weekStartsOn } = this;\n const start = DateUtil.startOfWeek(date as DateLike, { weekStartsOn });\n const end = DateUtil.endOfWeek(date as DateLike, { weekStartsOn });\n return [start, end];\n }\n\n return [null, null];\n }\n\n isSelected(activeDate: DateLike | null, currentRange: DateLike[]) {\n const [start, end] = currentRange;\n return DateUtil.isWithinRange(activeDate, start, end);\n }\n}\n","// NG2\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n// Vendor\nimport { addDays, Day as DateFnsDay, isToday } from 'date-fns';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { BooleanInput, DateUtil } from 'novo-elements/utils';\nimport type { DateLike, Day, OverlayDate } from 'novo-elements/utils';\n\n@Component({\n selector: 'novo-month-view',\n templateUrl: './month-view.component.html',\n styleUrls: ['./month-view.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class NovoMonthViewElement implements OnInit {\n @Input()\n minDate: Date;\n @Input()\n maxDate: Date;\n @Input()\n activeDate: Date = new Date();\n // Weekstart must be 0-6 (Sunday - Saturday)\n @Input()\n selected: DateLike[] = [];\n @Input()\n preview: DateLike[] = [];\n @Input()\n overlays: OverlayDate[] = [];\n @Input()\n disabledDateMessage: string;\n\n @Input()\n @BooleanInput()\n isRange: boolean = false;\n\n @Input()\n @BooleanInput()\n @HostBinding('class.hide-overflow-days')\n public hideOverflowDays: boolean = false;\n\n _weekStartsOn: DateFnsDay = 0;\n\n @Input()\n get weekStartsOn(): DateFnsDay {\n return this._weekStartsOn;\n }\n set weekStartsOn(value: DateFnsDay) {\n this._weekStartsOn = value;\n this.weekdays = this.labels.getWeekdays(value);\n this.updateView(this.activeDate);\n }\n\n // Select callback for output\n @Output()\n select: EventEmitter<any> = new EventEmitter(false);\n // Select callback for output\n @Output()\n hover: EventEmitter<any> = new EventEmitter(false);\n\n // List of all the weekdays\n weekdays: string[] = this.labels.getWeekdays(this.weekStartsOn);\n // List of all months\n monthNames: string[] = this.labels.getMonths();\n\n monthLabel: string;\n weeks: any;\n\n constructor(\n public labels: NovoLabelService,\n private element: ElementRef,\n private cdr: ChangeDetectorRef,\n private _sanitizer: DomSanitizer,\n ) {}\n\n ngOnInit() {\n // Set labels\n this.updateView(this.activeDate);\n }\n\n updateView(date: Date) {\n this.monthLabel = this.labels.formatDateWithFormat(this.activeDate, { month: 'short' });\n this.buildMonth(this.activeDate);\n }\n\n onSelect(event: Event, day: Day) {\n // Helpers.swallowEvent(event);\n this.select.next({ event, day });\n this.cdr.markForCheck();\n }\n\n onHover(event: Event, day: Day): void {\n this.isRange && this.hover.next({ event, day });\n }\n\n buildMonth(month: Date) {\n // Reset the weeks\n this.weeks = [];\n const start = DateUtil.startOfMonth(month);\n\n // House keeping variables to know when we are done building the month\n let done = false;\n let date = DateUtil.startOfWeek(start, { weekStartsOn: this.weekStartsOn });\n let monthIndex = date.getMonth();\n let count = 0;\n\n while (!done) {\n // Build the days for the weeks\n this.weeks.push({ days: this.buildWeek(new Date(date.getTime()), month) });\n\n // Increment variables for the next iteration\n date = addDays(date, 7);\n done = count++ > 2 && monthIndex !== date.getMonth();\n monthIndex = date.getMonth();\n }\n }\n\n buildWeek(date: Date, month: Date): Array<Object> {\n // Build out of the days of the week\n const days = [];\n // Iterate over the days of the week\n for (let i = 0; i < 7; i++) {\n // Push a variable on the day array with lots of helpers to make the template easier\n days.push({\n name: this.weekdays[i],\n number: date.getDate(),\n isToday: isToday(date),\n date,\n });\n\n // Increment for the next iteration\n date = addDays(date, 1);\n }\n\n return days;\n }\n\n isDisabled(day: DateLike) {\n return (this.minDate && DateUtil.isBefore(day, this.minDate)) || (this.maxDate && DateUtil.isAfter(day, this.maxDate));\n }\n\n /** Returns whether a cell should be marked as selected. */\n _isSelected(value: DateLike) {\n return this.selected && this.selected.find((d) => DateUtil.isSameDay(d, value));\n }\n\n /** Returns whether a cell should be marked as preview. */\n _isPreview(value: DateLike) {\n return this.preview && this.preview.find((d) => DateUtil.isSameDay(d, value));\n }\n\n /** Returns whether a cell should be marked as an overlay. */\n _isOverlay(value: DateLike) {\n return this.overlays && this.overlays.find((o) => DateUtil.isSameDay(o.date, value));\n }\n\n /** Returns whether a cell should be marked as an overlay. */\n _hasOverlayType(value: DateLike) {\n const overlay = this.overlays && this.overlays.find((o) => DateUtil.isSameDay(o.date, value));\n return overlay ? overlay.type : null;\n }\n\n /** Gets whether a value is the start of the main range. */\n _isRangeStart(value: DateLike) {\n return isStart(value, this.selected, this.isRange);\n }\n\n /** Gets whether a value is the end of the main range. */\n _isRangeEnd(value: DateLike) {\n return isEnd(value, this.selected, this.isRange);\n }\n\n /** Gets whether a value is within the currently-selected range. */\n _isInRange(value: DateLike): boolean {\n return isInRange(value, this.selected, this.isRange);\n }\n\n /** Gets whether a value is the start of the preview range. */\n _isPreviewStart(value: DateLike) {\n return isStart(value, this.preview, this.isRange);\n }\n\n /** Gets whether a value is the end of the preview range. */\n _isPreviewEnd(value: DateLike) {\n return isEnd(value, this.preview, this.isRange);\n }\n\n /** Gets whether a value is inside the preview range. */\n _isInPreview(value: DateLike) {\n return isInRange(value, this.preview, this.isRange);\n }\n}\n\n/** Checks whether a value is the start of a range. */\nfunction isStart(value: DateLike, range: DateLike[] | null, rangeEnabled: boolean): boolean {\n const [start, end] = range ?? [];\n return rangeEnabled && end !== null && !DateUtil.isSameDay(start, end) && value < end && DateUtil.isSameDay(value, start);\n}\n\n/** Checks whether a value is the end of a range. */\nfunction isEnd(value: DateLike, range: DateLike[] | null, rangeEnabled: boolean): boolean {\n const [start, end] = range ?? [];\n return rangeEnabled && start !== null && !DateUtil.isSameDay(start, end) && value >= start && DateUtil.isSameDay(value, end);\n}\n\n/** Checks whether a value is inside of a range. */\nfunction isInRange(value: DateLike, range: DateLike[] | null, rangeEnabled: boolean): boolean {\n const [start, end] = range ?? [];\n return rangeEnabled && start !== null && end !== null && !DateUtil.isSameDay(start, end) && value >= start && value <= end;\n}\n","<div class=\"calendar-table\" cellspacing=\"0\" cellpadding=\"0\">\n <div class=\"calendar-thead\">\n <div class=\"calendar-th weekday\" *ngFor=\"let day of weekdays\" title=\"{{ day }}\"\n [attr.data-automation-id]=\"day.substr(0, 2)\">\n {{ day.substr(0, 2) }}\n </div>\n </div>\n <div class=\"calendar-body\">\n <div class=\"calendar-week\" *ngFor=\"let week of weeks\">\n <div class=\"calendar-date\" *ngFor=\"let day of week.days\"\n [class.today]=\"day.isToday\"\n [class.notinmonth]=\"day.date.getMonth() !== activeDate.getMonth()\"\n [class.selected]=\"_isSelected(day.date)\"\n [class.preview]=\"_isPreview(day.date)\"\n [class.overlay]=\"_isOverlay(day.date)\"\n [class]=\"_hasOverlayType(day.date)\"\n [class.inRange]=\"_isInRange(day.date)\"\n [class.rangeStart]=\"_isRangeStart(day.date)\"\n [class.rangeEnd]=\"_isRangeEnd(day.date)\"\n [class.inPreview]=\"_isInPreview(day.date)\"\n [class.previewStart]=\"_isPreviewStart(day.date)\"\n [class.previewEnd]=\"_isPreviewEnd(day.date)\"\n [class.calendar-date]=\"true\"\n [attr.aria-label]=\"day.name\"\n [attr.aria-disabled]=\"isDisabled(day.date)\"\n [attr.aria-selected]=\"_isSelected(day.date)\"\n [attr.data-automation-id]=\"day.number\"\n [title]=\"isDisabled(day.date) ? disabledDateMessage : ''\"\n (mouseover)=\"onHover($event, day)\">\n <novo-button\n class=\"day\"\n tabindex=\"0\"\n [attr.data-automation-id]=\"day.number\"\n [disabled]=\"isDisabled(day.date)\"\n (click)=\"onSelect($event, day)\">\n {{ day.number }}\n </novo-button>\n </div>\n </div>\n </div>\n</div>","// NG2\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { NovoLabelService } from 'novo-elements/services';\nimport type { DateLike } from 'novo-elements/utils';\nimport { DateUtil } from 'novo-elements/utils';\n\n@Component({\n selector: 'novo-month-select',\n templateUrl: './month-select.component.html',\n styleUrls: ['./month-select.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class NovoMonthSelectElement implements OnInit {\n @Input()\n activeDate: DateLike = new Date();\n @Input()\n selected: DateLike[] = [];\n\n // Select callback for output\n @Output()\n select: EventEmitter<any> = new EventEmitter(false);\n\n // List of all months\n monthNames: string[] = this.labels.getMonths();\n\n constructor(public labels: NovoLabelService) {}\n\n ngOnInit() {}\n\n onSelect(event: Event, month: number) {\n // Helpers.swallowEvent(event);\n this.select.next({ event, month });\n }\n\n _isActive(month: number) {\n return this.activeDate && month === DateUtil.getMonth(this.activeDate);\n }\n\n _isSelected(month: number) {\n return this.selected && month === DateUtil.getMonth(this.selected[0]);\n }\n}\n","<div *ngFor=\"let month of monthNames; let i = index\" (click)=\"onSelect($event, i)\" tabindex=\"0\">\n <div class=\"month\" [class.selected]=\"_isSelected(i)\" [attr.data-automation-id]=\"month\">\n {{ month }}</div>\n</div>","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { NovoLabelService } from 'novo-elements/services';\nimport type { DateLike } from 'novo-elements/utils';\nimport { DateUtil } from 'novo-elements/utils';\n\n@Component({\n selector: 'novo-year-select',\n templateUrl: './year-select.component.html',\n styleUrls: ['./year-select.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class NovoYearSelectElement implements OnInit {\n @Input()\n minYear: string | number;\n @Input()\n maxYear: string | number;\n\n @Input()\n activeDate: DateLike = new Date();\n @Input()\n selected: DateLike[] = [];\n // Select callback for output\n @Output()\n select: EventEmitter<any> = new EventEmitter(false);\n\n // List of all years (generated in ngOnInit)\n years: Array<any> = [];\n\n constructor(public labels: NovoLabelService) {}\n\n ngOnInit() {\n // Determine the year array\n const now = new Date();\n const start = this.minYear ? Number(this.minYear) : now.getFullYear() - 100;\n const end = this.maxYear ? Number(this.maxYear) : now.getFullYear() + 10;\n const years = [];\n for (let i = start; i <= end; i++) {\n years.push(i);\n }\n this.years = years.reverse();\n }\n\n onSelect(event: Event, year: number) {\n // Helpers.swallowEvent(event);\n this.select.next({ event, year });\n }\n\n _isActive(year: number) {\n return this.activeDate && year === DateUtil.getYear(this.activeDate);\n }\n\n _isSelected(year: number) {\n return this.selected && year === DateUtil.getYear(this.selected[0]);\n }\n}\n","<div *ngFor=\"let year of years\" (click)=\"onSelect($event, year)\" tabindex=\"0\">\n <div class=\"year\" [class.selected]=\"_isSelected(year)\" [attr.data-automation-id]=\"year\">{{ year }}</div>\n</div>","// NG2\nimport { ChangeDetectorRef, Component, ElementRef, EventEmitter, HostBinding, Input, OnInit, Output } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n// Vendor\nimport { addMonths, isDate, isSameDay, setMonth, setYear, startOfDay, startOfMonth, subMonths } from 'date-fns';\n// APP\nimport { NovoLabelService } from 'novo-elements/services';\nimport { Helpers } from 'novo-elements/utils';\nimport type {\n DatePickerSelectModes,\n NovoDateSelectEvent,\n NovoDateSelectionStrategy,\n NovoMonthSelectEvent,\n NovoYearSelectEvent,\n OverlayDate,\n} from 'novo-elements/utils';\nimport { DefaultDateSelectionStrategy, MultiDateSelectionStrategy, RangeSelectionStrategy, WeekSelectionStrategy } from './strategies';\n\n@Component({\n selector: 'novo-calendar',\n templateUrl: './calendar.component.html',\n styleUrls: ['./calendar.component.scss'],\n standalone: false,\n})\nexport class NovoCalendarElement implements OnInit {\n @Input()\n minYear: string | number;\n @Input()\n maxYear: string | number;\n @Input()\n minDate: string | number;\n @Input()\n maxDate: string | number;\n // Default view mode (select days)\n @Input()\n activeView: string = 'days';\n @Input()\n layout: string = 'horizontal';\n\n _selected: Date[] = [];\n @Input()\n get selected(): Date[] {\n return this._selected;\n }\n set selected(value) {\n this._selected = value ? value.filter(isDate).map((d) => startOfDay(d)) : [];\n }\n @Output()\n selectedChange: EventEmitter<Date[]> = new EventEmitter();\n @Input()\n preview: Date[] = [];\n @Output()\n previewChange: EventEmitter<Date[]> = new EventEmitter();\n @Output()\n activeDateChange: EventEmitter<Date> = new EventEmitter();\n\n @Input()\n overlays: OverlayDate[] = [];\n @Input()\n disabledDateMessage: string;\n\n _activeDate: Date = new Date();\n _mode: DatePickerSelectModes = 'single';\n _numberOfMonths: number[] = [0];\n _weekStartsOn: Day = 0;\n _strategy: NovoDateSelectionStrategy<any> = new DefaultDateSelectionStrategy();\n\n months: any;\n\n @Input()\n get activeDate(): Date {\n return this._activeDate;\n }\n set activeDate(value) {\n if (!isSameDay(value, this._activeDate)) {\n this._activeDate = value;\n this.activeDateChange.next(value);\n this.updateView(value);\n }\n }\n\n @Input()\n get weekStartsOn(): Day {\n return this._weekStartsOn;\n }\n set weekStartsOn(value: Day) {\n this._weekStartsOn = value;\n if (this.mode === 'week') {\n this._strategy = new WeekSelectionStrategy(this.weekStartsOn);\n }\n }\n\n @Input()\n get numberOfMonths(): number {\n return this._numberOfMonths.length;\n }\n set numberOfMonths(value) {\n this._numberOfMonths = Array.from(Array(Number(value)).keys());\n this.updateView(this.activeDate);\n }\n\n @Input()\n get mode(): DatePickerSelectModes {\n return this._mode;\n }\n set mode(value) {\n if (this._mode !== value) {\n this._mode = value;\n switch (value) {\n case 'multiple':\n this._strategy = new MultiDateSelectionStrategy();\n break;\n case 'range':\n this._strategy = new RangeSelectionStrategy();\n break;\n case 'week':\n this._strategy = new WeekSelectionStrategy(this.weekStartsOn);\n break;\n case 'single':\n default:\n this._strategy = new DefaultDateSelectionStrategy();\n break;\n }\n }\n }\n\n @HostBinding('style.width')\n get hb_width() {\n if (this.layout === 'vertical') {\n return this._sanitizer.bypassSecurityTrustStyle('min-content');\n }\n return this._sanitizer.bypassSecurityTrustStyle('min-content');\n }\n\n @HostBinding('class.layout-horizontal')\n get hb_horiztonal() {\n return this.layout !== 'vertical';\n }\n\n @HostBinding('class.layout-vertical')\n get hb_vertical() {\n return this.layout === 'vertical';\n }\n\n constructor(\n public labels: NovoLabelService,\n private element: ElementRef,\n private cdr: ChangeDetectorRef,\n private _sanitizer: DomSanitizer,\n ) {}\n\n ngOnInit() {\n if (!this.activeDate) {\n this.activeDate = this.selected.length ? this.selected[0] : new Date();\n }\n this.updateView(this.activeDate);\n }\n\n updateView(activeDate: Date) {\n this.activeDate = new Date(activeDate ? new Date(activeDate) : new Date());\n this.months = [];\n const month = startOfMonth(this.activeDate);\n for (const i of this._numberOfMonths) {\n const date = addMonths(month, i);\n const label = this.labels.formatDateWithFormat(date, { month: 'short' });\n this.months.push({ date, label });\n }\n }\n\n setToday() {\n const tmp = new Date();\n this.updateView(tmp);\n // Go back to days\n this.openView(null, 'days');\n }\n\n monthSelected({ event, month }: NovoMonthSelectEvent): void {\n const date = this.activeDate ? this.activeDate : new Date().getMonth();\n const tmp = setMonth(date, month);\n this.updateView(tmp);\n // Go back to days\n this.openView(null, 'days');\n }\n\n yearSelected({ event, year }: NovoYearSelectEvent): void {\n const date = this.activeDate ? this.activeDate : new Date();\n const tmp = setYear(date, year);\n this.updateView(tmp);\n // Go back to days\n this.openView(null, 'days');\n }\n\n dateSelected({ event, day }: NovoDateSelectEvent) {\n // Helpers.swallowEvent(event);\n this.selected = this._strategy.selectionFinished(day.date, this.selected, event);\n this.selectedChange.emit(this.selected);\n this.cdr.markForCheck();\n }\n\n updatePreview({ event, day }: NovoDateSelectEvent) {\n this.preview = this._strategy.createPreview(day.date, this.selected, event);\n this.previewChange.emit(this.preview);\n }\n\n prevMonth(event: Event): void {\n Helpers.swallowEvent(event);\n const tmp = subMonths(this.activeDate, 1);\n this.updateView(tmp);\n }\n\n nextMonth(event: Event): void {\n Helpers.swallowEvent(event);\n const tmp = addMonths(this.activeDate, 1);\n this.updateView(tmp);\n }\n\n openView(event: Event, type: string) {\n Helpers.swallowEvent(event);\n\n // If they click the toggle two time in a row, close it (go back to days)\n if (type === this.activeView) {\n this.activeView = 'days';\n } else {\n this.activeView = type;\n }\n\n // Make sure to scroll the selected one into view\n if (this.activeView === 'years' || this.activeView === 'months') {\n setTimeout(() => {\n const container = this.element.nativeElement.querySelector(`.calendar-content.${this.activeView}`);\n const selectedItem = this.element.nativeElement.querySelector(\n `.calendar-content.${this.activeView} .${this.activeView === 'years' ? 'year' : 'month'}.selected`,\n );\n if (container && selectedItem) {\n container.scrollTop = selectedItem.offsetTop - 100;\n }\n });\n }\n }\n\n _isRange() {\n return ['week', 'range'].includes(this.mode);\n }\n}\n","<div class=\"calendar-header\">\n <novo-button theme=\"icon\" icon=\"previous\" size=\"small\" (click)=\"prevMonth($event)\"\n data-automation-id=\"calendar-previous\" tabindex=\"0\"></novo-button>\n <ng-container *ngFor=\"let month of months; let i = index;\">\n <span class=\"heading\" [class.secondary]=\"i > 0\">\n <span class=\"month\" (click)=\"openView($event, 'months')\"\n data-automation-id=\"header-month\" tabindex=\"0\">{{ month.label }}</span>\n <span class=\"year\" (click)=\"openView($event, 'years')\"\n data-automation-id=\"header-year\" tabindex=\"0\">{{ month.date?.getFullYear() }}</span>\n </span>\n </ng-container>\n <novo-button theme=\"icon\" icon=\"next\" size=\"small\" (click)=\"nextMonth($event)\" data-automation-id=\"calendar-next\" tabindex=\"0\">\n </novo-button>\n</div>\n<section class=\"calendar-content\" [ngSwitch]=\"activeView\">\n <ng-container *ngSwitchCase=\"'days'\">\n <ng-container *ngFor=\"let month of months; let i = index\">\n <div class=\"calendar-header\" *ngIf=\"layout==='vertical' && i > 0\">\n <span class=\"previous\" (click)=\"prevMonth($event)\" data-automation-id=\"calendar-previous\" tabindex=\"0\"></span>\n <span class=\"heading\">\n <span class=\"month\" (click)=\"openView($event, 'months')\"\n data-automation-id=\"header-month\" tabindex=\"0\">{{ month.label }}</span>\n <span class=\"year\" (click)=\"openView($event, 'years')\"\n data-automation-id=\"header-year\" tabindex=\"0\">{{ month.date?.getFullYear() }}</span>\n </span>\n <span class=\"next\" (click)=\"nextMonth($event)\" data-automation-id=\"calendar-next\"></span>\n </div>\n <novo-month-view\n class=\"month-view\"\n [activeDate]=\"month.date\"\n [selected]=\"selected\"\n [preview]=\"preview\"\n [overlays]=\"overlays\"\n [isRange]=\"_isRange()\"\n [hideOverflowDays]=\"months.length > 1\"\n [weekStartsOn]=\"weekStartsOn\"\n [disabledDateMessage]=\"disabledDateMessage\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n (select)=\"dateSelected($event)\"\n (hover)=\"updatePreview($event)\"></novo-month-view>\n </ng-container>\n </ng-container>\n <novo-month-select\n *ngSwitchCase=\"'months'\"\n [activeDate]=\"activeDate\"\n [selected]=\"selected\"\n (select)=\"monthSelected($event)\">\n </novo-month-select>\n <novo-year-select\n *ngSwitchCase=\"'years'\"\n [activeDate]=\"activeDate\"\n [selected]=\"selected\"\n (select)=\"yearSelected($event)\">\n </novo-year-select>\n</section>","// NG2\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n// APP\nimport { NovoButtonModule } from 'novo-elements/elements/button';\nimport { NovoIconModule } from 'novo-elements/elements/icon';\nimport { NovoPipesModule } from 'novo-elements/pipes';\nimport { NovoCalendarElement } from './calendar.component';\nimport { NovoMonthSelectElement } from './month-select/month-select.component';\nimport { NovoMonthViewElement } from './month-view/month-view.component';\nimport { NovoYearSelectElement } from './year-select/year-select.component';\n\n@NgModule({\n imports: [CommonModule, FormsModule, NovoButtonModule, NovoPipesModule, NovoIconModule],\n declarations: [NovoMonthViewElement, NovoMonthSelectElement, NovoYearSelectElement, NovoCalendarElement],\n exports: [NovoMonthViewElement, NovoMonthSelectElement, NovoYearSelectElement, NovoCalendarElement],\n})\nexport class NovoCalendarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i5.NovoMonthViewElement","i6.NovoMonthSelectElement","i7.NovoYearSelectElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"novo-elements-elements-calendar.mjs","sources":["../../../projects/novo-elements/src/elements/calendar/strategies/default-selection.strategy.ts","../../../projects/novo-elements/src/elements/calendar/strategies/multi-date-selection.strategy.ts","../../../projects/novo-elements/src/elements/calendar/strategies/range-selection.strategy.ts","../../../projects/novo-elements/src/elements/calendar/strategies/week-selection.strategy.ts","../../../projects/novo-elements/src/elements/calendar/month-view/month-view.component.ts","../../../projects/novo-elements/src/elements/calendar/month-view/month-view.component.html","../../../projects/novo-elements/src/elements/calendar/month-select/month-select.component.ts","../../../projects/novo-elements/src/elements/calendar/month-select/month-select.component.html","../../../projects/novo-elements/src/elements/calendar/year-select/year-select.component.ts","../../../projects/novo-elements/src/elements/calendar/year-select/year-select.component.html","../../../projects/novo-elements/src/elements/calendar/calendar.component.ts","../../../projects/novo-elements/src/elements/calendar/calendar.component.html","../../../projects/novo-elements/src/elements/calendar/Calendar.module.ts","../../../projects/novo-elements/src/elements/calendar/novo-elements-elements-calendar.ts"],"sourcesContent":["import { FactoryProvider, Injectable, InjectionToken, Optional, SkipSelf } from '@angular/core';\nimport { DateUtil, type DateLike, type NovoDateSelectionStrategy } from 'novo-elements/utils';\n\n/** Injection token used to customize the date range selection behavior. */\nexport const NOVO_DATE_SELECTION_STRATEGY = new InjectionToken<NovoDateSelectionStrategy>('NOVO_DATE_SELECTION_STRATEGY');\n\n/** Provides the default date selection behavior. Single Date */\n@Injectable()\nexport class DefaultDateSelectionStrategy implements NovoDateSelectionStrategy<DateLike[]> {\n selectionFinished(date: DateLike | null, currentValue: DateLike[], event: Event): DateLike[] {\n return [date];\n }\n\n createPreview(activeDate: DateLike | null, [currentDate]: DateLike[]) {\n return [activeDate];\n }\n\n isSelected(activeDate: DateLike | null, [currentDate]: DateLike[]) {\n return DateUtil.isSameDay(activeDate, currentDate);\n }\n}\n\n/** @docs-private */\nexport function NOVO_DATE_SELECTION_STRATEGY_PROVIDER_FACTORY(parent: NovoDateSelectionStrategy<unknown>) {\n return parent || new DefaultDateSelectionStrategy();\n}\n\n/** @docs-private */\nexport const NOVO_DATE_SELECTION_STRATEGY_PROVIDER: FactoryProvider = {\n provide: NOVO_DATE_SELECTION_STRATEGY,\n deps: [[new Optional(), new SkipSelf(), NOVO_DATE_SELECTION_STRATEGY]],\n useFactory: NOVO_DATE_SELECTION_STRATEGY_PROVIDER_FACTORY,\n};\n","import { Injectable } from '@angular/core';\nimport type { DateLike, NovoDateSelectionStrategy } from 'novo-elements/utils';\n\n@Injectable()\nexport class MultiDateSelectionStrategy implements NovoDateSelectionStrategy<DateLike[]> {\n selectionFinished(dateLike: DateLike | null, currentValue: DateLike[], event: Event): DateLike[] {\n const date = dateLike as Date;\n const current = new Set(currentValue.map((c: Date) => c.getTime()));\n if (current.has(date.getTime())) {\n current.delete(date.getTime());\n } else {\n current.add(date.getTime());\n }\n return [...current].map((c) => new Date(c));\n }\n\n createPreview(activeDate: DateLike | null, currentValue: DateLike[]) {\n return [activeDate];\n }\n\n isSelected(activeDate: DateLike | null, currentValue: DateLike[]) {\n return currentValue && currentValue.includes(activeDate);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { DateUtil, type DateLike, type NovoDateSelectionStrategy } from 'novo-elements/utils';\n\n@Injectable()\nexport class RangeSelectionStrategy implements NovoDateSelectionStrategy<DateLike[]> {\n selectionFinished(date: DateLike, currentRange: DateLike[]) {\n let [start, end] = currentRange;\n\n if (start == null) {\n start = date;\n } else if (end == null && date && DateUtil.differenceInCalendarDays(date, start) >= 0) {\n end = date;\n } else {\n start = date;\n end = null;\n }\n\n return [start, end];\n }\n\n createPreview(activeDate: DateLike | null, currentRange: DateLike[]) {\n let start: DateLike | null = null;\n let end: DateLike | null = null;\n const [currStart, currEnd] = currentRange;\n\n if (currStart && !currEnd && activeDate) {\n start = currStart;\n end = activeDate;\n }\n\n return [start, end];\n }\n\n isSelected(activeDate: DateLike | null, currentRange: DateLike[]) {\n const [start, end] = currentRange;\n return DateUtil.isWithinRange(activeDate, start, end);\n }\n}\n","import { DateUtil, type DateLike, type NovoDateSelectionStrategy } from 'novo-elements/utils';\n\nexport class WeekSelectionStrategy implements NovoDateSelectionStrategy<DateLike[]> {\n constructor(private weekStartsOn: Day = 0) {}\n\n selectionFinished(date: DateLike | null): DateLike[] {\n return this._createWeekRange(date);\n }\n\n createPreview(activeDate: DateLike | null): DateLike[] {\n return this._createWeekRange(activeDate);\n }\n\n private _createWeekRange(date: DateLike | null): DateLike[] {\n if (date) {\n const { weekStartsOn } = this;\n const start = DateUtil.startOfWeek(date as DateLike, { weekStartsOn });\n const end = DateUtil.endOfWeek(date as DateLike, { weekStartsOn });\n return [start, end];\n }\n\n return [null, null];\n }\n\n isSelected(activeDate: DateLike | null, currentRange: DateLike[]) {\n const [start, end] = currentRange;\n return DateUtil.isWithinRange(activeDate, start, end);\n }\n}\n","// NG2\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n// Vendor\nimport { addDays, Day as DateFnsDay, isToday } from 'date-fns';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { BooleanInput, DateUtil, type DateLike, type Day, type OverlayDate } from 'novo-elements/utils';\n\n@Component({\n selector: 'novo-month-view',\n templateUrl: './month-view.component.html',\n styleUrls: ['./month-view.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class NovoMonthViewElement implements OnInit {\n @Input()\n minDate: Date;\n @Input()\n maxDate: Date;\n @Input()\n activeDate: Date = new Date();\n // Weekstart must be 0-6 (Sunday - Saturday)\n @Input()\n selected: DateLike[] = [];\n @Input()\n preview: DateLike[] = [];\n @Input()\n overlays: OverlayDate[] = [];\n @Input()\n disabledDateMessage: string;\n\n @Input()\n @BooleanInput()\n isRange: boolean = false;\n\n @Input()\n @BooleanInput()\n @HostBinding('class.hide-overflow-days')\n public hideOverflowDays: boolean = false;\n\n _weekStartsOn: DateFnsDay = 0;\n\n @Input()\n get weekStartsOn(): DateFnsDay {\n return this._weekStartsOn;\n }\n set weekStartsOn(value: DateFnsDay) {\n this._weekStartsOn = value;\n this.weekdays = this.labels.getWeekdays(value);\n this.updateView(this.activeDate);\n }\n\n // Select callback for output\n @Output()\n select: EventEmitter<any> = new EventEmitter(false);\n // Select callback for output\n @Output()\n hover: EventEmitter<any> = new EventEmitter(false);\n\n // List of all the weekdays\n weekdays: string[] = this.labels.getWeekdays(this.weekStartsOn);\n // List of all months\n monthNames: string[] = this.labels.getMonths();\n\n monthLabel: string;\n weeks: any;\n\n constructor(\n public labels: NovoLabelService,\n private element: ElementRef,\n private cdr: ChangeDetectorRef,\n private _sanitizer: DomSanitizer,\n ) {}\n\n ngOnInit() {\n // Set labels\n this.updateView(this.activeDate);\n }\n\n updateView(date: Date) {\n this.monthLabel = this.labels.formatDateWithFormat(this.activeDate, { month: 'short' });\n this.buildMonth(this.activeDate);\n }\n\n onSelect(event: Event, day: Day) {\n // Helpers.swallowEvent(event);\n this.select.next({ event, day });\n this.cdr.markForCheck();\n }\n\n onHover(event: Event, day: Day): void {\n this.isRange && this.hover.next({ event, day });\n }\n\n buildMonth(month: Date) {\n // Reset the weeks\n this.weeks = [];\n const start = DateUtil.startOfMonth(month);\n\n // House keeping variables to know when we are done building the month\n let done = false;\n let date = DateUtil.startOfWeek(start, { weekStartsOn: this.weekStartsOn });\n let monthIndex = date.getMonth();\n let count = 0;\n\n while (!done) {\n // Build the days for the weeks\n this.weeks.push({ days: this.buildWeek(new Date(date.getTime()), month) });\n\n // Increment variables for the next iteration\n date = addDays(date, 7);\n done = count++ > 2 && monthIndex !== date.getMonth();\n monthIndex = date.getMonth();\n }\n }\n\n buildWeek(date: Date, month: Date): Array<Object> {\n // Build out of the days of the week\n const days = [];\n // Iterate over the days of the week\n for (let i = 0; i < 7; i++) {\n // Push a variable on the day array with lots of helpers to make the template easier\n days.push({\n name: this.weekdays[i],\n number: date.getDate(),\n isToday: isToday(date),\n date,\n });\n\n // Increment for the next iteration\n date = addDays(date, 1);\n }\n\n return days;\n }\n\n isDisabled(day: DateLike) {\n return (this.minDate && DateUtil.isBefore(day, this.minDate)) || (this.maxDate && DateUtil.isAfter(day, this.maxDate));\n }\n\n /** Returns whether a cell should be marked as selected. */\n _isSelected(value: DateLike) {\n return this.selected && this.selected.find((d) => DateUtil.isSameDay(d, value));\n }\n\n /** Returns whether a cell should be marked as preview. */\n _isPreview(value: DateLike) {\n return this.preview && this.preview.find((d) => DateUtil.isSameDay(d, value));\n }\n\n /** Returns whether a cell should be marked as an overlay. */\n _isOverlay(value: DateLike) {\n return this.overlays && this.overlays.find((o) => DateUtil.isSameDay(o.date, value));\n }\n\n /** Returns whether a cell should be marked as an overlay. */\n _hasOverlayType(value: DateLike) {\n const overlay = this.overlays && this.overlays.find((o) => DateUtil.isSameDay(o.date, value));\n return overlay ? overlay.type : null;\n }\n\n /** Gets whether a value is the start of the main range. */\n _isRangeStart(value: DateLike) {\n return isStart(value, this.selected, this.isRange);\n }\n\n /** Gets whether a value is the end of the main range. */\n _isRangeEnd(value: DateLike) {\n return isEnd(value, this.selected, this.isRange);\n }\n\n /** Gets whether a value is within the currently-selected range. */\n _isInRange(value: DateLike): boolean {\n return isInRange(value, this.selected, this.isRange);\n }\n\n /** Gets whether a value is the start of the preview range. */\n _isPreviewStart(value: DateLike) {\n return isStart(value, this.preview, this.isRange);\n }\n\n /** Gets whether a value is the end of the preview range. */\n _isPreviewEnd(value: DateLike) {\n return isEnd(value, this.preview, this.isRange);\n }\n\n /** Gets whether a value is inside the preview range. */\n _isInPreview(value: DateLike) {\n return isInRange(value, this.preview, this.isRange);\n }\n}\n\n/** Checks whether a value is the start of a range. */\nfunction isStart(value: DateLike, range: DateLike[] | null, rangeEnabled: boolean): boolean {\n const [start, end] = range ?? [];\n return rangeEnabled && end !== null && !DateUtil.isSameDay(start, end) && value < end && DateUtil.isSameDay(value, start);\n}\n\n/** Checks whether a value is the end of a range. */\nfunction isEnd(value: DateLike, range: DateLike[] | null, rangeEnabled: boolean): boolean {\n const [start, end] = range ?? [];\n return rangeEnabled && start !== null && !DateUtil.isSameDay(start, end) && value >= start && DateUtil.isSameDay(value, end);\n}\n\n/** Checks whether a value is inside of a range. */\nfunction isInRange(value: DateLike, range: DateLike[] | null, rangeEnabled: boolean): boolean {\n const [start, end] = range ?? [];\n return rangeEnabled && start !== null && end !== null && !DateUtil.isSameDay(start, end) && value >= start && value <= end;\n}\n","<div class=\"calendar-table\" cellspacing=\"0\" cellpadding=\"0\">\n <div class=\"calendar-thead\">\n <div class=\"calendar-th weekday\" *ngFor=\"let day of weekdays\" title=\"{{ day }}\"\n [attr.data-automation-id]=\"day.substr(0, 2)\">\n {{ day.substr(0, 2) }}\n </div>\n </div>\n <div class=\"calendar-body\">\n <div class=\"calendar-week\" *ngFor=\"let week of weeks\">\n <div class=\"calendar-date\" *ngFor=\"let day of week.days\"\n [class.today]=\"day.isToday\"\n [class.notinmonth]=\"day.date.getMonth() !== activeDate.getMonth()\"\n [class.selected]=\"_isSelected(day.date)\"\n [class.preview]=\"_isPreview(day.date)\"\n [class.overlay]=\"_isOverlay(day.date)\"\n [class]=\"_hasOverlayType(day.date)\"\n [class.inRange]=\"_isInRange(day.date)\"\n [class.rangeStart]=\"_isRangeStart(day.date)\"\n [class.rangeEnd]=\"_isRangeEnd(day.date)\"\n [class.inPreview]=\"_isInPreview(day.date)\"\n [class.previewStart]=\"_isPreviewStart(day.date)\"\n [class.previewEnd]=\"_isPreviewEnd(day.date)\"\n [class.calendar-date]=\"true\"\n [attr.aria-label]=\"day.name\"\n [attr.aria-disabled]=\"isDisabled(day.date)\"\n [attr.aria-selected]=\"_isSelected(day.date)\"\n [attr.data-automation-id]=\"day.number\"\n [title]=\"isDisabled(day.date) ? disabledDateMessage : ''\"\n (mouseover)=\"onHover($event, day)\">\n <novo-button\n class=\"day\"\n tabindex=\"0\"\n [attr.data-automation-id]=\"day.number\"\n [disabled]=\"isDisabled(day.date)\"\n (click)=\"onSelect($event, day)\">\n {{ day.number }}\n </novo-button>\n </div>\n </div>\n </div>\n</div>","// NG2\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { DateUtil, type DateLike } from 'novo-elements/utils';\n\n@Component({\n selector: 'novo-month-select',\n templateUrl: './month-select.component.html',\n styleUrls: ['./month-select.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class NovoMonthSelectElement implements OnInit {\n @Input()\n activeDate: DateLike = new Date();\n @Input()\n selected: DateLike[] = [];\n\n // Select callback for output\n @Output()\n select: EventEmitter<any> = new EventEmitter(false);\n\n // List of all months\n monthNames: string[] = this.labels.getMonths();\n\n constructor(public labels: NovoLabelService) {}\n\n ngOnInit() {}\n\n onSelect(event: Event, month: number) {\n // Helpers.swallowEvent(event);\n this.select.next({ event, month });\n }\n\n _isActive(month: number) {\n return this.activeDate && month === DateUtil.getMonth(this.activeDate);\n }\n\n _isSelected(month: number) {\n return this.selected && month === DateUtil.getMonth(this.selected[0]);\n }\n}\n","<div *ngFor=\"let month of monthNames; let i = index\" (click)=\"onSelect($event, i)\" tabindex=\"0\">\n <div class=\"month\" [class.selected]=\"_isSelected(i)\" [attr.data-automation-id]=\"month\">\n {{ month }}</div>\n</div>","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { DateUtil, type DateLike } from 'novo-elements/utils';\n\n@Component({\n selector: 'novo-year-select',\n templateUrl: './year-select.component.html',\n styleUrls: ['./year-select.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class NovoYearSelectElement implements OnInit {\n @Input()\n minYear: string | number;\n @Input()\n maxYear: string | number;\n\n @Input()\n activeDate: DateLike = new Date();\n @Input()\n selected: DateLike[] = [];\n // Select callback for output\n @Output()\n select: EventEmitter<any> = new EventEmitter(false);\n\n // List of all years (generated in ngOnInit)\n years: Array<any> = [];\n\n constructor(public labels: NovoLabelService) {}\n\n ngOnInit() {\n // Determine the year array\n const now = new Date();\n const start = this.minYear ? Number(this.minYear) : now.getFullYear() - 100;\n const end = this.maxYear ? Number(this.maxYear) : now.getFullYear() + 10;\n const years = [];\n for (let i = start; i <= end; i++) {\n years.push(i);\n }\n this.years = years.reverse();\n }\n\n onSelect(event: Event, year: number) {\n // Helpers.swallowEvent(event);\n this.select.next({ event, year });\n }\n\n _isActive(year: number) {\n return this.activeDate && year === DateUtil.getYear(this.activeDate);\n }\n\n _isSelected(year: number) {\n return this.selected && year === DateUtil.getYear(this.selected[0]);\n }\n}\n","<div *ngFor=\"let year of years\" (click)=\"onSelect($event, year)\" tabindex=\"0\">\n <div class=\"year\" [class.selected]=\"_isSelected(year)\" [attr.data-automation-id]=\"year\">{{ year }}</div>\n</div>","// NG2\nimport { ChangeDetectorRef, Component, ElementRef, EventEmitter, HostBinding, Input, OnInit, Output } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n// Vendor\nimport { addMonths, isDate, isSameDay, setMonth, setYear, startOfDay, startOfMonth, subMonths } from 'date-fns';\n// APP\nimport { NovoLabelService } from 'novo-elements/services';\nimport {\n Helpers,\n type DatePickerSelectModes,\n type NovoDateSelectEvent,\n type NovoDateSelectionStrategy,\n type NovoMonthSelectEvent,\n type NovoYearSelectEvent,\n type OverlayDate,\n} from 'novo-elements/utils';\nimport { DefaultDateSelectionStrategy, MultiDateSelectionStrategy, RangeSelectionStrategy, WeekSelectionStrategy } from './strategies';\n\n@Component({\n selector: 'novo-calendar',\n templateUrl: './calendar.component.html',\n styleUrls: ['./calendar.component.scss'],\n standalone: false,\n})\nexport class NovoCalendarElement implements OnInit {\n @Input()\n minYear: string | number;\n @Input()\n maxYear: string | number;\n @Input()\n minDate: string | number;\n @Input()\n maxDate: string | number;\n // Default view mode (select days)\n @Input()\n activeView: string = 'days';\n @Input()\n layout: string = 'horizontal';\n\n _selected: Date[] = [];\n @Input()\n get selected(): Date[] {\n return this._selected;\n }\n set selected(value) {\n this._selected = value ? value.filter(isDate).map((d) => startOfDay(d)) : [];\n }\n @Output()\n selectedChange: EventEmitter<Date[]> = new EventEmitter();\n @Input()\n preview: Date[] = [];\n @Output()\n previewChange: EventEmitter<Date[]> = new EventEmitter();\n @Output()\n activeDateChange: EventEmitter<Date> = new EventEmitter();\n\n @Input()\n overlays: OverlayDate[] = [];\n @Input()\n disabledDateMessage: string;\n\n _activeDate: Date = new Date();\n _mode: DatePickerSelectModes = 'single';\n _numberOfMonths: number[] = [0];\n _weekStartsOn: Day = 0;\n _strategy: NovoDateSelectionStrategy<any> = new DefaultDateSelectionStrategy();\n\n months: any;\n\n @Input()\n get activeDate(): Date {\n return this._activeDate;\n }\n set activeDate(value) {\n if (!isSameDay(value, this._activeDate)) {\n this._activeDate = value;\n this.activeDateChange.next(value);\n this.updateView(value);\n }\n }\n\n @Input()\n get weekStartsOn(): Day {\n return this._weekStartsOn;\n }\n set weekStartsOn(value: Day) {\n this._weekStartsOn = value;\n if (this.mode === 'week') {\n this._strategy = new WeekSelectionStrategy(this.weekStartsOn);\n }\n }\n\n @Input()\n get numberOfMonths(): number {\n return this._numberOfMonths.length;\n }\n set numberOfMonths(value) {\n this._numberOfMonths = Array.from(Array(Number(value)).keys());\n this.updateView(this.activeDate);\n }\n\n @Input()\n get mode(): DatePickerSelectModes {\n return this._mode;\n }\n set mode(value) {\n if (this._mode !== value) {\n this._mode = value;\n switch (value) {\n case 'multiple':\n this._strategy = new MultiDateSelectionStrategy();\n break;\n case 'range':\n this._strategy = new RangeSelectionStrategy();\n break;\n case 'week':\n this._strategy = new WeekSelectionStrategy(this.weekStartsOn);\n break;\n case 'single':\n default:\n this._strategy = new DefaultDateSelectionStrategy();\n break;\n }\n }\n }\n\n @HostBinding('style.width')\n get hb_width() {\n if (this.layout === 'vertical') {\n return this._sanitizer.bypassSecurityTrustStyle('min-content');\n }\n return this._sanitizer.bypassSecurityTrustStyle('min-content');\n }\n\n @HostBinding('class.layout-horizontal')\n get hb_horiztonal() {\n return this.layout !== 'vertical';\n }\n\n @HostBinding('class.layout-vertical')\n get hb_vertical() {\n return this.layout === 'vertical';\n }\n\n constructor(\n public labels: NovoLabelService,\n private element: ElementRef,\n private cdr: ChangeDetectorRef,\n private _sanitizer: DomSanitizer,\n ) {}\n\n ngOnInit() {\n if (!this.activeDate) {\n this.activeDate = this.selected.length ? this.selected[0] : new Date();\n }\n this.updateView(this.activeDate);\n }\n\n updateView(activeDate: Date) {\n this.activeDate = new Date(activeDate ? new Date(activeDate) : new Date());\n this.months = [];\n const month = startOfMonth(this.activeDate);\n for (const i of this._numberOfMonths) {\n const date = addMonths(month, i);\n const label = this.labels.formatDateWithFormat(date, { month: 'short' });\n this.months.push({ date, label });\n }\n }\n\n setToday() {\n const tmp = new Date();\n this.updateView(tmp);\n // Go back to days\n this.openView(null, 'days');\n }\n\n monthSelected({ event, month }: NovoMonthSelectEvent): void {\n const date = this.activeDate ? this.activeDate : new Date().getMonth();\n const tmp = setMonth(date, month);\n this.updateView(tmp);\n // Go back to days\n this.openView(null, 'days');\n }\n\n yearSelected({ event, year }: NovoYearSelectEvent): void {\n const date = this.activeDate ? this.activeDate : new Date();\n const tmp = setYear(date, year);\n this.updateView(tmp);\n // Go back to days\n this.openView(null, 'days');\n }\n\n dateSelected({ event, day }: NovoDateSelectEvent) {\n // Helpers.swallowEvent(event);\n this.selected = this._strategy.selectionFinished(day.date, this.selected, event);\n this.selectedChange.emit(this.selected);\n this.cdr.markForCheck();\n }\n\n updatePreview({ event, day }: NovoDateSelectEvent) {\n this.preview = this._strategy.createPreview(day.date, this.selected, event);\n this.previewChange.emit(this.preview);\n }\n\n prevMonth(event: Event): void {\n Helpers.swallowEvent(event);\n const tmp = subMonths(this.activeDate, 1);\n this.updateView(tmp);\n }\n\n nextMonth(event: Event): void {\n Helpers.swallowEvent(event);\n const tmp = addMonths(this.activeDate, 1);\n this.updateView(tmp);\n }\n\n openView(event: Event, type: string) {\n Helpers.swallowEvent(event);\n\n // If they click the toggle two time in a row, close it (go back to days)\n if (type === this.activeView) {\n this.activeView = 'days';\n } else {\n this.activeView = type;\n }\n\n // Make sure to scroll the selected one into view\n if (this.activeView === 'years' || this.activeView === 'months') {\n setTimeout(() => {\n const container = this.element.nativeElement.querySelector(`.calendar-content.${this.activeView}`);\n const selectedItem = this.element.nativeElement.querySelector(\n `.calendar-content.${this.activeView} .${this.activeView === 'years' ? 'year' : 'month'}.selected`,\n );\n if (container && selectedItem) {\n container.scrollTop = selectedItem.offsetTop - 100;\n }\n });\n }\n }\n\n _isRange() {\n return ['week', 'range'].includes(this.mode);\n }\n}\n","<div class=\"calendar-header\">\n <novo-button theme=\"icon\" icon=\"previous\" size=\"small\" (click)=\"prevMonth($event)\"\n data-automation-id=\"calendar-previous\" tabindex=\"0\"></novo-button>\n <ng-container *ngFor=\"let month of months; let i = index;\">\n <span class=\"heading\" [class.secondary]=\"i > 0\">\n <span class=\"month\" (click)=\"openView($event, 'months')\"\n data-automation-id=\"header-month\" tabindex=\"0\">{{ month.label }}</span>\n <span class=\"year\" (click)=\"openView($event, 'years')\"\n data-automation-id=\"header-year\" tabindex=\"0\">{{ month.date?.getFullYear() }}</span>\n </span>\n </ng-container>\n <novo-button theme=\"icon\" icon=\"next\" size=\"small\" (click)=\"nextMonth($event)\" data-automation-id=\"calendar-next\" tabindex=\"0\">\n </novo-button>\n</div>\n<section class=\"calendar-content\" [ngSwitch]=\"activeView\">\n <ng-container *ngSwitchCase=\"'days'\">\n <ng-container *ngFor=\"let month of months; let i = index\">\n <div class=\"calendar-header\" *ngIf=\"layout==='vertical' && i > 0\">\n <span class=\"previous\" (click)=\"prevMonth($event)\" data-automation-id=\"calendar-previous\" tabindex=\"0\"></span>\n <span class=\"heading\">\n <span class=\"month\" (click)=\"openView($event, 'months')\"\n data-automation-id=\"header-month\" tabindex=\"0\">{{ month.label }}</span>\n <span class=\"year\" (click)=\"openView($event, 'years')\"\n data-automation-id=\"header-year\" tabindex=\"0\">{{ month.date?.getFullYear() }}</span>\n </span>\n <span class=\"next\" (click)=\"nextMonth($event)\" data-automation-id=\"calendar-next\"></span>\n </div>\n <novo-month-view\n class=\"month-view\"\n [activeDate]=\"month.date\"\n [selected]=\"selected\"\n [preview]=\"preview\"\n [overlays]=\"overlays\"\n [isRange]=\"_isRange()\"\n [hideOverflowDays]=\"months.length > 1\"\n [weekStartsOn]=\"weekStartsOn\"\n [disabledDateMessage]=\"disabledDateMessage\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n (select)=\"dateSelected($event)\"\n (hover)=\"updatePreview($event)\"></novo-month-view>\n </ng-container>\n </ng-container>\n <novo-month-select\n *ngSwitchCase=\"'months'\"\n [activeDate]=\"activeDate\"\n [selected]=\"selected\"\n (select)=\"monthSelected($event)\">\n </novo-month-select>\n <novo-year-select\n *ngSwitchCase=\"'years'\"\n [activeDate]=\"activeDate\"\n [selected]=\"selected\"\n (select)=\"yearSelected($event)\">\n </novo-year-select>\n</section>","// NG2\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n// APP\nimport { NovoButtonModule } from 'novo-elements/elements/button';\nimport { NovoIconModule } from 'novo-elements/elements/icon';\nimport { NovoPipesModule } from 'novo-elements/pipes';\nimport { NovoCalendarElement } from './calendar.component';\nimport { NovoMonthSelectElement } from './month-select/month-select.component';\nimport { NovoMonthViewElement } from './month-view/month-view.component';\nimport { NovoYearSelectElement } from './year-select/year-select.component';\n\n@NgModule({\n imports: [CommonModule, FormsModule, NovoButtonModule, NovoPipesModule, NovoIconModule],\n declarations: [NovoMonthViewElement, NovoMonthSelectElement, NovoYearSelectElement, NovoCalendarElement],\n exports: [NovoMonthViewElement, NovoMonthSelectElement, NovoYearSelectElement, NovoCalendarElement],\n})\nexport class NovoCalendarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i5.NovoMonthViewElement","i6.NovoMonthSelectElement","i7.NovoYearSelectElement"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"novo-elements-elements-select.mjs","sources":["../../../projects/novo-elements/src/elements/select/Select.ts","../../../projects/novo-elements/src/elements/select/Select.extupdatefix.directive.ts","../../../projects/novo-elements/src/elements/select/Select.module.ts","../../../projects/novo-elements/src/elements/select/novo-elements-elements-select.ts"],"sourcesContent":["// NG\nimport { ActiveDescendantKeyManager, FocusMonitor } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { hasModifierKey } from '@angular/cdk/keycodes';\nimport {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectorRef,\n Component,\n computed,\n ContentChildren,\n ElementRef,\n EventEmitter,\n HostListener,\n Inject,\n Injector,\n input,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n Self,\n signal,\n SimpleChanges,\n ViewChild,\n ViewChildren,\n} from '@angular/core';\nimport { ControlValueAccessor, FormGroupDirective, NgControl, NgForm } from '@angular/forms';\n// Vendor\nimport { merge, Observable, of, Subject, Subscription } from 'rxjs';\nimport { filter, map, startWith, take, takeUntil } from 'rxjs/operators';\n// App\nimport { NovoLabelService } from 'novo-elements/services';\nimport { Helpers, Key } from 'novo-elements/utils';\nimport {\n CanDisableCtor,\n CanRequireCtor,\n CanUpdateErrorStateCtor,\n ErrorStateMatcher,\n HasOverlayCtor,\n HasTabIndexCtor,\n mixinDisabled,\n mixinErrorState,\n mixinOverlay,\n mixinRequired,\n mixinTabIndex,\n NovoOptgroup,\n NovoOption,\n NovoOptionSelectionChange,\n NOVO_OPTION_PARENT_COMPONENT,\n _countGroupLabelsBeforeOption,\n _getOptionScrollPosition,\n} from 'novo-elements/elements/common';\nimport { NovoOverlayTemplateComponent } from 'novo-elements/elements/common';\nimport { NOVO_FORM_FIELD, NovoFieldControl, NovoFieldElement } from 'novo-elements/elements/field';\n\n/** Change event object that is emitted when the select value has changed. */\nexport class NovoSelectChange {\n constructor(\n /** Reference to the select that emitted the change event. */\n public source: NovoSelectElement,\n /** Current value of the select that emitted the event. */\n public value: any,\n ) {}\n}\n\n// Create Base Class from Mixins\n// Boilerplate for applying mixins\nclass NovoSelectBase {\n constructor(\n public _defaultErrorStateMatcher: ErrorStateMatcher,\n public _parentForm: NgForm,\n public _parentFormGroup: FormGroupDirective,\n public ngControl: NgControl,\n ) {}\n}\nconst NovoSelectMixins: HasOverlayCtor &\n CanRequireCtor &\n CanDisableCtor &\n HasTabIndexCtor &\n CanUpdateErrorStateCtor &\n typeof NovoSelectBase = mixinOverlay(mixinTabIndex(mixinRequired(mixinDisabled(mixinErrorState(NovoSelectBase)))));\n\nlet nextId = 0;\n\n@Component({\n selector: 'novo-select',\n inputs: ['disabled', 'required', 'tabIndex'],\n providers: [\n { provide: NovoFieldControl, useExisting: NovoSelectElement },\n { provide: NOVO_OPTION_PARENT_COMPONENT, useExisting: NovoSelectElement },\n ],\n template: `\n <div class=\"novo-select-trigger\">\n <span class=\"novo-select-placeholder\" *ngIf=\"empty\">{{ placeholder }}</span>\n <span class=\"text-ellipsis\" *ngIf=\"!empty\"><novo-icon size=\"sm\" style=\"margin: 0 0 .25rem .1rem\" *ngIf=\"displayIcon\">{{ displayIcon }}</novo-icon> {{ displayValue }}</span>\n <i class=\"bhi-collapse\"></i>\n </div>\n <novo-overlay-template\n [parent]=\"elementRef\"\n [position]=\"position\"\n [width]=\"overlayWidth\"\n [height]=\"overlayHeight\"\n (closing)=\"elementRef.nativeElement.focus()\"\n >\n <div #panel class=\"novo-select-list\" tabIndex=\"-1\" [class.has-header]=\"headerConfig\" [class.active]=\"panelOpen\">\n <novo-option *ngIf=\"headerConfig\" class=\"select-header\" [class.open]=\"header.open\">\n <novo-button *ngIf=\"!header.open\" icon=\"add-thin\" (click)=\"toggleHeader($event); (false)\" tabIndex=\"-1\" class=\"header\">\n {{ headerConfig.label }}\n </novo-button>\n <div *ngIf=\"header.open\" [ngClass]=\"{ active: header.open }\">\n <input\n autofocus\n type=\"text\"\n [placeholder]=\"headerConfig.placeholder\"\n [attr.id]=\"name\"\n autocomplete=\"off\"\n [value]=\"header.value\"\n [ngClass]=\"{ invalid: !header.valid }\"\n />\n <footer>\n <novo-button (click)=\"toggleHeader($event, false)\">{{ labels.cancel }}</novo-button>\n <novo-button (click)=\"saveHeader()\" class=\"primary\">{{ labels.save }}</novo-button>\n </footer>\n </div>\n </novo-option>\n <!-- Declarative Content Goes Here -->\n <ng-content></ng-content>\n <!-- Data Driven Content Goes Here -->\n <ng-container *ngFor=\"let option of filteredOptions; let i = index\">\n <novo-option\n *ngIf=\"!option.divider; else divider\"\n class=\"select-item\"\n [disabled]=\"option.disabled\"\n [class.active]=\"option.active\"\n [attr.data-automation-value]=\"option.label\"\n [value]=\"option.value\"\n [tooltip]=\"option.tooltip\"\n [tooltipPosition]=\"option.tooltipPosition || 'right'\"\n >\n <span [innerHtml]=\"option.label | highlight:filterTerm\"></span> <i *ngIf=\"option.active\" class=\"bhi-check\"></i>\n </novo-option>\n <ng-template #divider>\n <novo-divider class=\"select-item-divider\" [class.with-label]=\"option.label\" [class.without-label]=\"!option.label\">\n {{ option?.label }}\n </novo-divider>\n </ng-template>\n </ng-container>\n </div>\n </novo-overlay-template>\n `,\n styleUrls: ['./Select.scss'],\n host: {\n class: 'novo-select',\n role: 'combobox',\n 'aria-autocomplete': 'none',\n 'aria-haspopup': 'true',\n '[attr.id]': 'id',\n '[attr.aria-controls]': 'panelOpen ? id + \"-panel\" : null',\n '[attr.aria-expanded]': 'panelOpen',\n '[attr.aria-required]': 'required.toString()',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.aria-invalid]': 'errorState',\n '[attr.aria-labelledby]': '_ariaLabelledBy || null',\n '[attr.aria-describedby]': '_ariaDescribedby || null',\n '[attr.aria-activedescendant]': '_getAriaActiveDescendant()',\n '[class.novo-select-disabled]': 'disabled',\n '[class.novo-select-invalid]': 'errorState',\n '[class.novo-select-required]': 'required',\n '[class.novo-select-empty]': 'empty',\n '[class.novo-select-multiple]': 'multiple',\n '[tabindex]': 'disabled ? -1 : 0',\n },\n standalone: false,\n})\nexport class NovoSelectElement\n extends NovoSelectMixins\n implements OnInit, AfterViewInit, OnChanges, OnDestroy, ControlValueAccessor, NovoFieldControl<any>\n{\n private _uniqueId: string = `novo-select-${++nextId}`;\n private _stateChanges = Subscription.EMPTY;\n private _activeOptionChanges = Subscription.EMPTY;\n private _selectedOptionChanges = Subscription.EMPTY;\n protected readonly _destroy = new Subject<void>();\n\n readonly controlType: string = 'select';\n\n /** @docs-private Implemented as part of NovoFieldControl. */\n lastKeyValue: string = null;\n /** @docs-private Implemented as part of NovoFieldControl.*/\n lastCaretPosition: number | null;\n\n _selectionModel: SelectionModel<NovoOption>;\n\n /** The aria-labelledby attribute */\n _ariaLabelledBy: string;\n /** The aria-describedby attribute on the chip list for improved a11y. */\n _ariaDescribedby: string;\n /** User defined tab index. */\n _userTabIndex: number | null = null;\n /** The FocusKeyManager which handles focus. */\n _keyManager: ActiveDescendantKeyManager<NovoOption>;\n /**\n * The display string for the current value, kept from when the associated <novo-option> has stopped rendering\n * due to filtration\n */\n private _lingeringDisplayValue: string = null;\n private _legacyOption: any;\n\n @Input()\n id: string = this._uniqueId;\n @Input()\n name: string = this._uniqueId;\n @Input()\n placeholder: string = 'Select...';\n @Input()\n readonly: boolean;\n @Input()\n headerConfig: any;\n @Input()\n position: string = 'above-below';\n @Input()\n overlayWidth: number;\n @Input()\n overlayHeight: number;\n @Input()\n displayIcon: string = null;\n @Output()\n onSelect: EventEmitter<any> = new EventEmitter();\n /** Event emitted when the selected value has been changed by the user. */\n @Output() readonly selectionChange: EventEmitter<NovoSelectChange> = new EventEmitter<NovoSelectChange>();\n /** Event that emits whenever the raw value of the select changes.*/\n @Output() readonly valueChange: EventEmitter<any> = new EventEmitter<any>();\n\n /** Event emitted when the select panel has been toggled. */\n @Output() readonly openedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n /** Event emitted when the select has been opened. */\n @Output('opened') readonly _openedStream: Observable<void> = this.openedChange.pipe(\n filter((o) => o),\n map(() => {}),\n );\n /** Event emitted when the select has been closed. */\n @Output('closed') readonly _closedStream: Observable<void> = this.openedChange.pipe(\n filter((o) => !o),\n map(() => {}),\n );\n\n /** Function that maps an option's control value to its display value in the trigger. */\n @Input() displayWith: ((value: any) => string) | null = null;\n /** * Function to compare the option values with the selected values. */\n @Input() compareWith: (o1: any, o2: any) => boolean = (o1: any, o2: any) =>\n o1 === o2 || o1 === o2.id || (!Helpers.isEmpty(o1.id) && !Helpers.isEmpty(o2.id) && o1.id === o2.id);\n\n header: any = {\n open: false,\n valid: true,\n value: '',\n };\n createdItem: any;\n model: any;\n onModelChange: Function = () => {};\n onModelTouched: Function = () => {};\n filterTerm: string = '';\n filterTermTimeout;\n filteredOptions: any;\n disabled: boolean = false;\n\n /** Element for the panel containing the autocomplete options. */\n @ViewChild(NovoOverlayTemplateComponent, { static: true })\n overlay: NovoOverlayTemplateComponent;\n\n @ContentChildren(NovoOptgroup, { descendants: true })\n optionGroups: QueryList<NovoOptgroup>;\n @ContentChildren(NovoOption, { descendants: true })\n contentOptions: QueryList<NovoOption>;\n @ViewChildren(NovoOption)\n viewOptions: QueryList<NovoOption>;\n\n viewOptionsSignal = signal<NovoOption[]>(null);\n contentOptionsSignal = signal<NovoOption[]>(null);\n\n // This signal may be set programmatically by a SelectSearchComponent.\n hideLegacyOptionsForSearch = signal(false);\n\n hideLegacyOptions = input(false, { transform: booleanAttribute });\n\n private displayLegacyOptions = computed(() => {\n return !(this.hideLegacyOptionsForSearch() || this.hideLegacyOptions());\n })\n\n @ViewChild('panel')\n panel: ElementRef;\n\n /**\n * Implemented as part of NovoFieldControl.\n * @docs-private\n */\n @Input()\n get value(): any {\n return this._value;\n }\n set value(newValue: any) {\n // Always re-assign an array, because it might have been mutated.\n if (newValue !== this._value || (this._multiple && Array.isArray(newValue))) {\n if (this.options) {\n this._setSelectionByValue(newValue);\n }\n this._value = newValue;\n this._lingeringDisplayValue = null;\n }\n }\n private _value: any = null;\n\n /** Whether the user should be allowed to select multiple options. */\n @Input()\n get multiple(): boolean {\n return this._multiple;\n }\n set multiple(value: boolean) {\n this._multiple = coerceBooleanProperty(value);\n this.position = 'above-below';\n }\n private _multiple: boolean = false;\n\n /** Array of options to display in the select dropdown */\n @Input()\n set options(options: Array<any>) {\n this._options = options;\n this._initLegacyOptions();\n }\n get options(): Array<any> {\n return this._options;\n }\n private _options: Array<any>;\n\n /** Whether the select is focused. */\n get focused(): boolean {\n return this._focused || this.panelOpen;\n }\n private _focused = false;\n\n /** Implemented as part of NovoFieldControl. */\n get empty(): boolean {\n return Helpers.isEmpty(this._value);\n }\n\n /** The currently selected option. */\n get selected(): NovoOption | NovoOption[] {\n return this.multiple ? this._selectionModel.selected : this._selectionModel.selected[0];\n }\n\n /** The value displayed in the trigger. */\n get displayValue(): string {\n if (this.empty) {\n return '';\n }\n if (this._multiple) {\n const selectedOptions = this._selectionModel.selected.map((option) => this._getDisplayValue(option));\n return selectedOptions.join(', ');\n }\n return this._getDisplayValue(this._selectionModel.selected[0]);\n }\n\n constructor(\n public elementRef: ElementRef,\n public labels: NovoLabelService,\n public ref: ChangeDetectorRef,\n private focusMonitor: FocusMonitor,\n private ngZone: NgZone,\n private injector: Injector,\n defaultErrorStateMatcher: ErrorStateMatcher,\n @Optional() @Self() ngControl: NgControl,\n @Optional() _parentForm: NgForm,\n @Optional() _parentFormGroup: FormGroupDirective,\n @Optional() @Inject(NOVO_FORM_FIELD) private _fieldElement: NovoFieldElement,\n ) {\n super(defaultErrorStateMatcher, _parentForm, _parentFormGroup, ngControl);\n if (ngControl) {\n ngControl.valueAccessor = this;\n }\n this._selectionModel = new SelectionModel<NovoOption>(this.multiple);\n // Initialize KeyManager to manage keyboard events\n this._initKeyManager();\n }\n\n ngOnInit() {\n this.stateChanges.next();\n this._initLegacyOptions();\n this.focusMonitor.monitor(this.elementRef.nativeElement).subscribe((origin) =>\n this.ngZone.run(() => {\n this._focused = !!origin;\n this.stateChanges.next();\n }),\n );\n }\n\n ngOnChanges(changes: SimpleChanges) {\n // Updating the disabled state is handled by `mixinDisabled`, but we need to additionally let\n // the parent form field know to run change detection when the disabled state changes.\n if (changes?.disabled) {\n this.stateChanges.next();\n }\n if (changes?.multiple) {\n // TODO: copy selection over??\n this._selectionModel = new SelectionModel<NovoOption>(this.multiple);\n }\n this._initLegacyOptions();\n }\n\n ngAfterViewInit() {\n // Subscribe to NovoOption selections\n this._watchSelectionEvents();\n // Set initial value\n this._initializeSelection();\n // Listen to selection changes to select and deselect options\n this._selectionModel.changed.pipe(takeUntil(this._destroy)).subscribe((event) => {\n event.added.forEach((option) => {\n if (option.select) {\n option.select();\n }\n });\n event.removed.forEach((option) => {\n if (option.deselect) {\n option.deselect();\n }\n });\n });\n // Listen to QueryList changes\n merge(this.contentOptions.changes, this.viewOptions.changes)\n .pipe(takeUntil(this._destroy))\n .subscribe(() => {\n this._watchSelectionEvents();\n this._initializeSelection();\n });\n\n this.contentOptions.changes.pipe(takeUntil(this._destroy), startWith(this.contentOptions))\n .subscribe(contentOptions => {\n this.contentOptionsSignal.set(contentOptions.toArray());\n });\n\n this.viewOptions.changes.pipe(takeUntil(this._destroy), startWith(this.viewOptions))\n .subscribe(viewOptions => {\n this.viewOptionsSignal.set(viewOptions.toArray());\n });\n\n merge(this.overlay.opening, this.overlay.closing)\n .pipe(takeUntil(this._destroy))\n .subscribe(() => {\n this.openedChange.emit(this.panelOpen);\n });\n setTimeout(() => {\n if (this._fieldElement?._labelElement) {\n this._ariaLabelledBy = this._fieldElement._labelElement.id;\n }\n });\n }\n\n ngOnDestroy() {\n this._destroy.next();\n this._destroy.complete();\n this._stateChanges.unsubscribe();\n this._activeOptionChanges.unsubscribe();\n this._selectedOptionChanges.unsubscribe();\n this.focusMonitor.stopMonitoring(this.elementRef.nativeElement);\n }\n\n @HostListener('click', ['$event'])\n onClick() {\n this.togglePanel();\n return false;\n }\n\n openPanel() {\n super.openPanel();\n this._highlightCorrectOption();\n }\n\n private _initializeSelection(): void {\n // Defer setting the value in order to avoid the \"Expression\n // has changed after it was checked\" errors from Angular.\n Promise.resolve().then(() => {\n this._setSelectionByValue(this.ngControl ? this.ngControl.value : this._value);\n this.stateChanges.next();\n });\n }\n\n /**\n * Sets the selected option based on a value. If no option can be\n * found with the designated value, the select trigger is cleared.\n */\n private _setSelectionByValue(value: any | any[]): void {\n this._selectionModel.selected.forEach((option) => {\n if (option.setInactiveStyles) {\n option.setInactiveStyles();\n }\n });\n this._selectionModel.clear();\n if (this.multiple && value) {\n value.forEach((currentValue: any) => this._selectValue(currentValue));\n this._sortValues();\n } else if (this._keyManager) {\n const correspondingOption = this._selectValue(value);\n // Shift focus to the active item. Note that we shouldn't do this in multiple\n // mode, because we don't know what option the user interacted with last.\n if (correspondingOption) {\n this._keyManager.updateActiveItem(correspondingOption);\n } else if (!this.panelOpen) {\n // Otherwise reset the highlighted option. Note that we only want to do this while\n // closed, because doing it while open can shift the user's focus unnecessarily.\n this._keyManager.updateActiveItem(-1);\n }\n }\n this.ref.markForCheck();\n }\n\n /**\n * Finds and selects and option based on its value.\n * @returns Option that has the corresponding value.\n */\n private _selectValue(value: any): NovoOption | undefined {\n const allOptions = this._getOptions();\n const correspondingOption = allOptions.find((option: NovoOption) => {\n // Skip options that are already in the model. This allows us to handle cases\n // where the same primitive value is selected multiple times.\n if (this._selectionModel.isSelected(option)) {\n return false;\n }\n return !Helpers.isEmpty(value) && !Helpers.isEmpty(option.value) && this.compareWith(option.value, value);\n });\n if (correspondingOption) {\n this._selectionModel.select(correspondingOption);\n } else if (value && !correspondingOption && this.displayLegacyOptions()) {\n // If searchComponent is present, we are using a text input filter; so if there is an\n // option not in the list, it is just filtered out\n // Double Check option not already added.\n const legacyOption = this.filteredOptions.find((it) => it.value === value);\n if (!legacyOption) {\n // Add a disabled option to the list and select it\n this._legacyOption = {\n disabled: true,\n tooltip: 'Value is not provided in list of valid options.',\n label: value?.label || value,\n value,\n }\n this.filteredOptions.push(this._legacyOption);\n this.ref.detectChanges();\n }\n }\n\n return correspondingOption;\n }\n\n public select(option, i, fireEvents: boolean = true) {\n console.warn('select() method is deprecated');\n }\n public clear() {\n console.warn('clear() method is deprecated');\n }\n\n /**\n * If the item is not disabled, this method closes the panel, and if a value is specified,\n * also sets the associated control to that value. It will also mark the control as dirty\n * if this interaction stemmed from the user.\n */\n handleSelection(option: NovoOption, isUserInput: boolean = false): void {\n const wasSelected = this._selectionModel.isSelected(option);\n if (option.value == null && !this._multiple) {\n option.deselect();\n this._selectionModel.clear();\n if (this.value != null) {\n this._propagateChanges(option.value);\n }\n } else {\n if (wasSelected !== option.selected) {\n option.selected ? this._selectionModel.select(option) : this._selectionModel.deselect(option);\n }\n if (isUserInput) {\n this._keyManager.setActiveItem(option);\n }\n if (this.multiple) {\n this._sortValues();\n if (isUserInput) {\n this.focus();\n }\n }\n }\n const legacyOptionIndex = this.filteredOptions.lastIndexOf(this._legacyOption);\n if (legacyOptionIndex !== -1) {\n this.filteredOptions.splice(legacyOptionIndex, 1);\n }\n\n if (wasSelected !== this._selectionModel.isSelected(option)) {\n this._propagateChanges();\n }\n this.stateChanges.next();\n this._watchSelectionEvents();\n }\n\n private _getDisplayValue(option: NovoOption & { value?: any; label?: string }): string {\n if (!option) {\n return this._lingeringDisplayValue ?? '';\n }\n let toDisplay = option.viewValue;\n if (this.displayWith) {\n toDisplay = this.displayWith(option.value);\n }\n // Simply falling back to an empty string if the display value is falsy does not work properly.\n // The display value can also be the number zero and shouldn't fall back to an empty string.\n let displayValue = toDisplay != null ? toDisplay : '';\n if (displayValue != '') { // eslint-disable-line\n this._lingeringDisplayValue = displayValue;\n } else if (this._lingeringDisplayValue) {\n displayValue = this._lingeringDisplayValue;\n }\n return displayValue;\n }\n\n /**\n * Clear any previous selected option and emit a selection change event for this option\n */\n private _clearPreviousSelectedOption(skip: NovoOption) {\n this._getOptions().forEach((option) => {\n if (option !== skip && option.selected) {\n option.deselect();\n }\n });\n }\n\n private _watchSelectionEvents() {\n const options = this._getOptions();\n const selectionEvents = options ? merge(...options.map((option) => option.onSelectionChange)) : of();\n this._selectedOptionChanges.unsubscribe();\n this._selectedOptionChanges = selectionEvents.pipe(take(1)).subscribe((event: NovoOptionSelectionChange) => {\n this.onModelTouched();\n this.handleSelection(event.source, event.isUserInput);\n if (event.isUserInput && !this.multiple && this.panelOpen) {\n this.closePanel();\n this.focus();\n }\n });\n }\n\n /** Handles all keydown events on the select. */\n @HostListener('keydown', ['$event'])\n _handleKeydown(event: KeyboardEvent): void {\n if (!this.disabled) {\n this.panelOpen ? this._handleOpenKeydown(event) : this._handleClosedKeydown(event);\n }\n }\n\n /** Handles keyboard events while the select is closed. */\n private _handleClosedKeydown(event: KeyboardEvent): void {\n const key = event.key;\n const isArrowKey = key === Key.ArrowDown || key === Key.ArrowUp || key === Key.ArrowLeft || key === Key.ArrowRight;\n const isOpenKey = key === Key.Enter || key === Key.Space;\n const manager = this._keyManager;\n // Open the select on ALT + arrow key to match the native <select>\n if ((!manager.isTyping() && isOpenKey && !hasModifierKey(event)) || ((this.multiple || event.altKey) && isArrowKey)) {\n event.preventDefault(); // prevents the page from scrolling down when pressing space\n this.openPanel();\n }\n }\n\n /** Handles keyboard events when the selected is open. */\n private _handleOpenKeydown(event: KeyboardEvent): void {\n const manager = this._keyManager;\n const key = event.key;\n const isArrowKey = key === Key.ArrowDown || key === Key.ArrowUp;\n const isTyping = manager.isTyping();\n\n if (isArrowKey && event.altKey) {\n // Close the select on ALT + arrow key to match the native <select>\n event.preventDefault();\n this.closePanel();\n // Don't do anything in this case if the user is typing,\n // because the typing sequence can include the space key.\n } else if (!isTyping && (key === Key.Enter || key === Key.Space) && manager.activeItem && !hasModifierKey(event)) {\n event.preventDefault();\n manager.activeItem._selectViaInteraction();\n } else if (!isTyping && this._multiple && ['a', 'A'].includes(key) && event.ctrlKey) {\n event.preventDefault();\n const hasDeselectedOptions = this.options.some((opt) => !opt.disabled && !opt.selected);\n this.options.forEach((option) => {\n if (!option.disabled) {\n hasDeselectedOptions ? option.select() : option.deselect();\n }\n });\n } else if (Key.Escape === key) {\n this.closePanel();\n } else {\n const previouslyFocusedIndex = manager.activeItemIndex;\n manager.onKeydown(event);\n if (this._multiple && isArrowKey && event.shiftKey && manager.activeItem && manager.activeItemIndex !== previouslyFocusedIndex) {\n manager.activeItem._selectViaInteraction();\n }\n }\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n registerOnChange(fn: Function): void {\n this.onModelChange = fn;\n }\n\n registerOnTouched(fn: Function): void {\n this.onModelTouched = fn;\n }\n\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n\n /** Implemented as part of NovoFieldControl. */\n setDescribedByIds(ids: string[]) {\n this._ariaDescribedby = ids.join(' ');\n }\n\n /** Implemented as part of NovoFieldControl. */\n onContainerClick(event: MouseEvent) {\n this.focus();\n }\n\n /**\n * Focuses the first non-disabled chip in this chip list, or the associated input when there\n * are no eligible chips.\n */\n focus(options?: FocusOptions): void {\n if (!this.disabled) {\n this.elementRef.nativeElement.focus(options);\n }\n }\n\n protected _getOptions() {\n return [...(this.viewOptions || []), ...(this.contentOptions || [])];\n }\n\n protected _optionsComputed = computed(() => {\n return [...(this.viewOptionsSignal() || []), ...(this.contentOptionsSignal() || [])]\n });\n\n /** Sorts the selected values in the selected based on their order in the panel. */\n private _sortValues() {\n if (this.multiple) {\n // TODO.\n }\n }\n\n /** Emits change event to set the model value. */\n private _propagateChanges(fallbackValue?: any): void {\n let valueToEmit: any = null;\n if (this.multiple) {\n valueToEmit = (this.selected as NovoOption[]).map((option) => option.value);\n } else {\n valueToEmit = this.selected ? (this.selected as NovoOption).value : fallbackValue;\n }\n\n this._value = valueToEmit;\n this.valueChange.emit(valueToEmit);\n this.onModelChange(valueToEmit);\n this.onSelect.emit({ selected: valueToEmit });\n this.selectionChange.emit(this._makeChangeEvent(valueToEmit));\n this.ref.markForCheck();\n }\n\n protected _makeChangeEvent(value: any) {\n return new NovoSelectChange(this, value);\n }\n\n /** Scrolls the active option into view. */\n protected _scrollOptionIntoView(index: number): void {\n const options = new QueryList<NovoOption>();\n options.reset(this._getOptions());\n const labelCount = _countGroupLabelsBeforeOption(index, options, this.optionGroups);\n const itemHeight = this._getItemHeight();\n this.panel.nativeElement.scrollTop = _getOptionScrollPosition(\n (index + labelCount) * itemHeight,\n itemHeight,\n this.panel.nativeElement.scrollTop,\n this.panel.nativeElement.offsetHeight,\n );\n }\n\n /** Sets up a key manager to listen to keyboard events on the overlay panel. */\n private _initKeyManager() {\n this._keyManager = new ActiveDescendantKeyManager<NovoOption>(this._optionsComputed, this.injector).withTypeAhead(250).withHomeAndEnd();\n\n this._keyManager.tabOut.pipe(takeUntil(this._destroy)).subscribe(() => {\n if (this.panelOpen) {\n // Select the active item when tabbing away. This is consistent with how the native\n // select behaves. Note that we only want to do this in single selection mode.\n if (!this.multiple && this._keyManager.activeItem) {\n this._keyManager.activeItem._selectViaInteraction();\n }\n // Restore focus to the trigger before closing. Ensures that the focus\n // position won't be lost if the user got focus into the overlay.\n this.focus();\n this.closePanel();\n }\n });\n\n this._keyManager.change.pipe(takeUntil(this._destroy)).subscribe(() => {\n if (this.panelOpen && this.overlay) {\n this._scrollOptionIntoView(this._keyManager.activeItemIndex || 0);\n } else if (!this.panelOpen && !this.multiple && this._keyManager.activeItem) {\n this._keyManager.activeItem._selectViaInteraction();\n }\n });\n }\n\n /**\n * Highlights the selected item. If no option is selected, it will highlight\n * the first item instead.\n */\n private _highlightCorrectOption(): void {\n if (this._keyManager) {\n if (this.empty) {\n this._keyManager.setFirstItemActive();\n } else {\n const options = this._getOptions();\n const index = options.findIndex(option => option.value == this._value) // eslint-disable-line\n this._keyManager.setActiveItem(index);\n }\n }\n }\n\n /** Calculates the height of the select's options. */\n private _getItemHeight(): number {\n const [first] = this._getOptions();\n if (first) {\n return first._getHostElement().offsetHeight;\n }\n return 0;\n }\n\n // TODO: Deprecate this\n private _initLegacyOptions() {\n if (this.options && this.options.length && typeof this.options[0] === 'string') {\n this.filteredOptions = this.options.map((item) => {\n return { value: item, label: item };\n });\n } else {\n this.filteredOptions = (this.options || [])\n .map((item) => {\n return {\n ...item,\n disabled: Boolean(item.readOnly || item.disabled),\n };\n })\n .map((item) => {\n return {\n ...item,\n active: false,\n };\n });\n }\n }\n\n /**\n * TODO: Deprecate all header methods\n */\n toggleHeader(event, forceValue: boolean = false) {\n if (event) {\n event.stopPropagation();\n event.preventDefault();\n }\n // Reverse the active property (if forceValue, use that)\n this.header = {\n open: forceValue !== undefined ? forceValue : !this.header.open,\n value: '',\n valid: true,\n };\n }\n\n /**\n * @deprecated use highlight pipe\n */\n highlight(match, query) {\n // Replaces the capture string with a the same string inside of a \"strong\" tag\n return query ? match.replace(new RegExp(this.escapeRegexp(query), 'gi'), '<strong>$&</strong>') : match;\n }\n\n escapeRegexp(queryToEscape) {\n // Ex: if the capture is \"a\" the result will be \\a\n return queryToEscape.replace(/([.?*+^$[\\]\\\\(){}|-])/g, '\\\\$1');\n }\n\n saveHeader() {\n if (this.header.value) {\n this.headerConfig.onSave(this.header.value);\n this.createdItem = this.header.value;\n this.closePanel();\n } else {\n this.header.valid = false;\n }\n }\n\n /** Determines the `aria-activedescendant` to be set on the host. */\n _getAriaActiveDescendant(): string | null {\n if (this.panelOpen && this._keyManager && this._keyManager.activeItem) {\n return this._keyManager.activeItem.id;\n }\n\n return null;\n }\n}\n","import { Directive, OnInit, inject } from '@angular/core';\nimport { FormControl, NgControl } from '@angular/forms';\nimport { NovoSelectElement } from './Select';\n\n/**\n * Fixes a <novo-select> element so that if its value is updated externally, the checkboxes in the dropdown selector\n * update accordingly. Because this is a functionality change to a core control, this fix is provided as a directive\n * to only be used if needed.\n */\n@Directive({\n selector: 'novo-select[extupdatefix]',\n standalone: false,\n})\nexport class NovoSelectExtUpdateFix implements OnInit {\n control = inject(NgControl);\n selectElement = inject(NovoSelectElement);\n\n ngOnInit() {\n if (this.control?.control && 'registerOnChange' in this.control.control) {\n (this.control.control as FormControl).registerOnChange((rawValue, viewToModelUpdate) => {\n if (this.selectElement.multiple === Array.isArray(rawValue)) {\n this.afterExternalUpdate(rawValue);\n }\n });\n }\n }\n\n afterExternalUpdate(rawValue: any) {\n this.selectElement['_setSelectionByValue'](rawValue);\n }\n}\n","// NG\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n// App\nimport { NovoPipesModule } from 'novo-elements/pipes';\nimport { NovoButtonModule } from 'novo-elements/elements/button';\nimport { NovoOptionModule, NovoOverlayModule } from 'novo-elements/elements/common';\nimport { NovoDividerModule } from 'novo-elements/elements/divider';\nimport { NovoTooltipModule } from 'novo-elements/elements/tooltip';\nimport { NovoSelectElement } from './Select';\nimport { NovoSelectExtUpdateFix } from './Select.extupdatefix.directive';\nimport { NovoIconModule } from 'novo-elements/elements/icon';\n\n@NgModule({\n imports: [\n A11yModule,\n CommonModule,\n FormsModule,\n NovoButtonModule,\n NovoDividerModule,\n NovoOptionModule,\n NovoOverlayModule,\n NovoPipesModule,\n NovoTooltipModule,\n NovoIconModule,\n ],\n declarations: [NovoSelectElement, NovoSelectExtUpdateFix],\n exports: [NovoSelectElement, NovoSelectExtUpdateFix],\n})\nexport class NovoSelectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"novo-elements-elements-select.mjs","sources":["../../../projects/novo-elements/src/elements/select/Select.ts","../../../projects/novo-elements/src/elements/select/Select.extupdatefix.directive.ts","../../../projects/novo-elements/src/elements/select/Select.module.ts","../../../projects/novo-elements/src/elements/select/novo-elements-elements-select.ts"],"sourcesContent":["// NG\nimport { ActiveDescendantKeyManager, FocusMonitor } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { hasModifierKey } from '@angular/cdk/keycodes';\nimport {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectorRef,\n Component,\n computed,\n ContentChildren,\n ElementRef,\n EventEmitter,\n HostListener,\n Inject,\n Injector,\n input,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n Self,\n signal,\n SimpleChanges,\n ViewChild,\n ViewChildren,\n} from '@angular/core';\nimport { ControlValueAccessor, FormGroupDirective, NgControl, NgForm } from '@angular/forms';\n// Vendor\nimport { merge, Observable, of, Subject, Subscription } from 'rxjs';\nimport { filter, map, startWith, take, takeUntil } from 'rxjs/operators';\n// App\nimport { NovoLabelService } from 'novo-elements/services';\nimport { Helpers, Key } from 'novo-elements/utils';\nimport {\n CanDisableCtor,\n CanRequireCtor,\n CanUpdateErrorStateCtor,\n ErrorStateMatcher,\n HasOverlayCtor,\n HasTabIndexCtor,\n mixinDisabled,\n mixinErrorState,\n mixinOverlay,\n mixinRequired,\n mixinTabIndex,\n NovoOptgroup,\n NovoOption,\n NovoOptionSelectionChange,\n NOVO_OPTION_PARENT_COMPONENT,\n _countGroupLabelsBeforeOption,\n _getOptionScrollPosition,\n NovoOverlayTemplateComponent,\n} from 'novo-elements/elements/common';\nimport { NOVO_FORM_FIELD, NovoFieldControl, NovoFieldElement } from 'novo-elements/elements/field';\n\n/** Change event object that is emitted when the select value has changed. */\nexport class NovoSelectChange {\n constructor(\n /** Reference to the select that emitted the change event. */\n public source: NovoSelectElement,\n /** Current value of the select that emitted the event. */\n public value: any,\n ) {}\n}\n\n// Create Base Class from Mixins\n// Boilerplate for applying mixins\nclass NovoSelectBase {\n constructor(\n public _defaultErrorStateMatcher: ErrorStateMatcher,\n public _parentForm: NgForm,\n public _parentFormGroup: FormGroupDirective,\n public ngControl: NgControl,\n ) {}\n}\nconst NovoSelectMixins: HasOverlayCtor &\n CanRequireCtor &\n CanDisableCtor &\n HasTabIndexCtor &\n CanUpdateErrorStateCtor &\n typeof NovoSelectBase = mixinOverlay(mixinTabIndex(mixinRequired(mixinDisabled(mixinErrorState(NovoSelectBase)))));\n\nlet nextId = 0;\n\n@Component({\n selector: 'novo-select',\n inputs: ['disabled', 'required', 'tabIndex'],\n providers: [\n { provide: NovoFieldControl, useExisting: NovoSelectElement },\n { provide: NOVO_OPTION_PARENT_COMPONENT, useExisting: NovoSelectElement },\n ],\n template: `\n <div class=\"novo-select-trigger\">\n <span class=\"novo-select-placeholder\" *ngIf=\"empty\">{{ placeholder }}</span>\n <span class=\"text-ellipsis\" *ngIf=\"!empty\"><novo-icon size=\"sm\" style=\"margin: 0 0 .25rem .1rem\" *ngIf=\"displayIcon\">{{ displayIcon }}</novo-icon> {{ displayValue }}</span>\n <i class=\"bhi-collapse\"></i>\n </div>\n <novo-overlay-template\n [parent]=\"elementRef\"\n [position]=\"position\"\n [width]=\"overlayWidth\"\n [height]=\"overlayHeight\"\n (closing)=\"elementRef.nativeElement.focus()\"\n >\n <div #panel class=\"novo-select-list\" tabIndex=\"-1\" [class.has-header]=\"headerConfig\" [class.active]=\"panelOpen\">\n <novo-option *ngIf=\"headerConfig\" class=\"select-header\" [class.open]=\"header.open\">\n <novo-button *ngIf=\"!header.open\" icon=\"add-thin\" (click)=\"toggleHeader($event); (false)\" tabIndex=\"-1\" class=\"header\">\n {{ headerConfig.label }}\n </novo-button>\n <div *ngIf=\"header.open\" [ngClass]=\"{ active: header.open }\">\n <input\n autofocus\n type=\"text\"\n [placeholder]=\"headerConfig.placeholder\"\n [attr.id]=\"name\"\n autocomplete=\"off\"\n [value]=\"header.value\"\n [ngClass]=\"{ invalid: !header.valid }\"\n />\n <footer>\n <novo-button (click)=\"toggleHeader($event, false)\">{{ labels.cancel }}</novo-button>\n <novo-button (click)=\"saveHeader()\" class=\"primary\">{{ labels.save }}</novo-button>\n </footer>\n </div>\n </novo-option>\n <!-- Declarative Content Goes Here -->\n <ng-content></ng-content>\n <!-- Data Driven Content Goes Here -->\n <ng-container *ngFor=\"let option of filteredOptions; let i = index\">\n <novo-option\n *ngIf=\"!option.divider; else divider\"\n class=\"select-item\"\n [disabled]=\"option.disabled\"\n [class.active]=\"option.active\"\n [attr.data-automation-value]=\"option.label\"\n [value]=\"option.value\"\n [tooltip]=\"option.tooltip\"\n [tooltipPosition]=\"option.tooltipPosition || 'right'\"\n >\n <span [innerHtml]=\"option.label | highlight:filterTerm\"></span> <i *ngIf=\"option.active\" class=\"bhi-check\"></i>\n </novo-option>\n <ng-template #divider>\n <novo-divider class=\"select-item-divider\" [class.with-label]=\"option.label\" [class.without-label]=\"!option.label\">\n {{ option?.label }}\n </novo-divider>\n </ng-template>\n </ng-container>\n </div>\n </novo-overlay-template>\n `,\n styleUrls: ['./Select.scss'],\n host: {\n class: 'novo-select',\n role: 'combobox',\n 'aria-autocomplete': 'none',\n 'aria-haspopup': 'true',\n '[attr.id]': 'id',\n '[attr.aria-controls]': 'panelOpen ? id + \"-panel\" : null',\n '[attr.aria-expanded]': 'panelOpen',\n '[attr.aria-required]': 'required.toString()',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.aria-invalid]': 'errorState',\n '[attr.aria-labelledby]': '_ariaLabelledBy || null',\n '[attr.aria-describedby]': '_ariaDescribedby || null',\n '[attr.aria-activedescendant]': '_getAriaActiveDescendant()',\n '[class.novo-select-disabled]': 'disabled',\n '[class.novo-select-invalid]': 'errorState',\n '[class.novo-select-required]': 'required',\n '[class.novo-select-empty]': 'empty',\n '[class.novo-select-multiple]': 'multiple',\n '[tabindex]': 'disabled ? -1 : 0',\n },\n standalone: false,\n})\nexport class NovoSelectElement\n extends NovoSelectMixins\n implements OnInit, AfterViewInit, OnChanges, OnDestroy, ControlValueAccessor, NovoFieldControl<any>\n{\n private _uniqueId: string = `novo-select-${++nextId}`;\n private _stateChanges = Subscription.EMPTY;\n private _activeOptionChanges = Subscription.EMPTY;\n private _selectedOptionChanges = Subscription.EMPTY;\n protected readonly _destroy = new Subject<void>();\n\n readonly controlType: string = 'select';\n\n /** @docs-private Implemented as part of NovoFieldControl. */\n lastKeyValue: string = null;\n /** @docs-private Implemented as part of NovoFieldControl.*/\n lastCaretPosition: number | null;\n\n _selectionModel: SelectionModel<NovoOption>;\n\n /** The aria-labelledby attribute */\n _ariaLabelledBy: string;\n /** The aria-describedby attribute on the chip list for improved a11y. */\n _ariaDescribedby: string;\n /** User defined tab index. */\n _userTabIndex: number | null = null;\n /** The FocusKeyManager which handles focus. */\n _keyManager: ActiveDescendantKeyManager<NovoOption>;\n /**\n * The display string for the current value, kept from when the associated <novo-option> has stopped rendering\n * due to filtration\n */\n private _lingeringDisplayValue: string = null;\n private _legacyOption: any;\n\n @Input()\n id: string = this._uniqueId;\n @Input()\n name: string = this._uniqueId;\n @Input()\n placeholder: string = 'Select...';\n @Input()\n readonly: boolean;\n @Input()\n headerConfig: any;\n @Input()\n position: string = 'above-below';\n @Input()\n overlayWidth: number;\n @Input()\n overlayHeight: number;\n @Input()\n displayIcon: string = null;\n @Output()\n onSelect: EventEmitter<any> = new EventEmitter();\n /** Event emitted when the selected value has been changed by the user. */\n @Output() readonly selectionChange: EventEmitter<NovoSelectChange> = new EventEmitter<NovoSelectChange>();\n /** Event that emits whenever the raw value of the select changes.*/\n @Output() readonly valueChange: EventEmitter<any> = new EventEmitter<any>();\n\n /** Event emitted when the select panel has been toggled. */\n @Output() readonly openedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n /** Event emitted when the select has been opened. */\n @Output('opened') readonly _openedStream: Observable<void> = this.openedChange.pipe(\n filter((o) => o),\n map(() => {}),\n );\n /** Event emitted when the select has been closed. */\n @Output('closed') readonly _closedStream: Observable<void> = this.openedChange.pipe(\n filter((o) => !o),\n map(() => {}),\n );\n\n /** Function that maps an option's control value to its display value in the trigger. */\n @Input() displayWith: ((value: any) => string) | null = null;\n /** * Function to compare the option values with the selected values. */\n @Input() compareWith: (o1: any, o2: any) => boolean = (o1: any, o2: any) =>\n o1 === o2 || o1 === o2.id || (!Helpers.isEmpty(o1.id) && !Helpers.isEmpty(o2.id) && o1.id === o2.id);\n\n header: any = {\n open: false,\n valid: true,\n value: '',\n };\n createdItem: any;\n model: any;\n onModelChange: Function = () => {};\n onModelTouched: Function = () => {};\n filterTerm: string = '';\n filterTermTimeout;\n filteredOptions: any;\n disabled: boolean = false;\n\n /** Element for the panel containing the autocomplete options. */\n @ViewChild(NovoOverlayTemplateComponent, { static: true })\n overlay: NovoOverlayTemplateComponent;\n\n @ContentChildren(NovoOptgroup, { descendants: true })\n optionGroups: QueryList<NovoOptgroup>;\n @ContentChildren(NovoOption, { descendants: true })\n contentOptions: QueryList<NovoOption>;\n @ViewChildren(NovoOption)\n viewOptions: QueryList<NovoOption>;\n\n viewOptionsSignal = signal<NovoOption[]>(null);\n contentOptionsSignal = signal<NovoOption[]>(null);\n\n // This signal may be set programmatically by a SelectSearchComponent.\n hideLegacyOptionsForSearch = signal(false);\n\n hideLegacyOptions = input(false, { transform: booleanAttribute });\n\n private displayLegacyOptions = computed(() => {\n return !(this.hideLegacyOptionsForSearch() || this.hideLegacyOptions());\n })\n\n @ViewChild('panel')\n panel: ElementRef;\n\n /**\n * Implemented as part of NovoFieldControl.\n * @docs-private\n */\n @Input()\n get value(): any {\n return this._value;\n }\n set value(newValue: any) {\n // Always re-assign an array, because it might have been mutated.\n if (newValue !== this._value || (this._multiple && Array.isArray(newValue))) {\n if (this.options) {\n this._setSelectionByValue(newValue);\n }\n this._value = newValue;\n this._lingeringDisplayValue = null;\n }\n }\n private _value: any = null;\n\n /** Whether the user should be allowed to select multiple options. */\n @Input()\n get multiple(): boolean {\n return this._multiple;\n }\n set multiple(value: boolean) {\n this._multiple = coerceBooleanProperty(value);\n this.position = 'above-below';\n }\n private _multiple: boolean = false;\n\n /** Array of options to display in the select dropdown */\n @Input()\n set options(options: Array<any>) {\n this._options = options;\n this._initLegacyOptions();\n }\n get options(): Array<any> {\n return this._options;\n }\n private _options: Array<any>;\n\n /** Whether the select is focused. */\n get focused(): boolean {\n return this._focused || this.panelOpen;\n }\n private _focused = false;\n\n /** Implemented as part of NovoFieldControl. */\n get empty(): boolean {\n return Helpers.isEmpty(this._value);\n }\n\n /** The currently selected option. */\n get selected(): NovoOption | NovoOption[] {\n return this.multiple ? this._selectionModel.selected : this._selectionModel.selected[0];\n }\n\n /** The value displayed in the trigger. */\n get displayValue(): string {\n if (this.empty) {\n return '';\n }\n if (this._multiple) {\n const selectedOptions = this._selectionModel.selected.map((option) => this._getDisplayValue(option));\n return selectedOptions.join(', ');\n }\n return this._getDisplayValue(this._selectionModel.selected[0]);\n }\n\n constructor(\n public elementRef: ElementRef,\n public labels: NovoLabelService,\n public ref: ChangeDetectorRef,\n private focusMonitor: FocusMonitor,\n private ngZone: NgZone,\n private injector: Injector,\n defaultErrorStateMatcher: ErrorStateMatcher,\n @Optional() @Self() ngControl: NgControl,\n @Optional() _parentForm: NgForm,\n @Optional() _parentFormGroup: FormGroupDirective,\n @Optional() @Inject(NOVO_FORM_FIELD) private _fieldElement: NovoFieldElement,\n ) {\n super(defaultErrorStateMatcher, _parentForm, _parentFormGroup, ngControl);\n if (ngControl) {\n ngControl.valueAccessor = this;\n }\n this._selectionModel = new SelectionModel<NovoOption>(this.multiple);\n // Initialize KeyManager to manage keyboard events\n this._initKeyManager();\n }\n\n ngOnInit() {\n this.stateChanges.next();\n this._initLegacyOptions();\n this.focusMonitor.monitor(this.elementRef.nativeElement).subscribe((origin) =>\n this.ngZone.run(() => {\n this._focused = !!origin;\n this.stateChanges.next();\n }),\n );\n }\n\n ngOnChanges(changes: SimpleChanges) {\n // Updating the disabled state is handled by `mixinDisabled`, but we need to additionally let\n // the parent form field know to run change detection when the disabled state changes.\n if (changes?.disabled) {\n this.stateChanges.next();\n }\n if (changes?.multiple) {\n // TODO: copy selection over??\n this._selectionModel = new SelectionModel<NovoOption>(this.multiple);\n }\n this._initLegacyOptions();\n }\n\n ngAfterViewInit() {\n // Subscribe to NovoOption selections\n this._watchSelectionEvents();\n // Set initial value\n this._initializeSelection();\n // Listen to selection changes to select and deselect options\n this._selectionModel.changed.pipe(takeUntil(this._destroy)).subscribe((event) => {\n event.added.forEach((option) => {\n if (option.select) {\n option.select();\n }\n });\n event.removed.forEach((option) => {\n if (option.deselect) {\n option.deselect();\n }\n });\n });\n // Listen to QueryList changes\n merge(this.contentOptions.changes, this.viewOptions.changes)\n .pipe(takeUntil(this._destroy))\n .subscribe(() => {\n this._watchSelectionEvents();\n this._initializeSelection();\n });\n\n this.contentOptions.changes.pipe(takeUntil(this._destroy), startWith(this.contentOptions))\n .subscribe(contentOptions => {\n this.contentOptionsSignal.set(contentOptions.toArray());\n });\n\n this.viewOptions.changes.pipe(takeUntil(this._destroy), startWith(this.viewOptions))\n .subscribe(viewOptions => {\n this.viewOptionsSignal.set(viewOptions.toArray());\n });\n\n merge(this.overlay.opening, this.overlay.closing)\n .pipe(takeUntil(this._destroy))\n .subscribe(() => {\n this.openedChange.emit(this.panelOpen);\n });\n setTimeout(() => {\n if (this._fieldElement?._labelElement) {\n this._ariaLabelledBy = this._fieldElement._labelElement.id;\n }\n });\n }\n\n ngOnDestroy() {\n this._destroy.next();\n this._destroy.complete();\n this._stateChanges.unsubscribe();\n this._activeOptionChanges.unsubscribe();\n this._selectedOptionChanges.unsubscribe();\n this.focusMonitor.stopMonitoring(this.elementRef.nativeElement);\n }\n\n @HostListener('click', ['$event'])\n onClick() {\n this.togglePanel();\n return false;\n }\n\n openPanel() {\n super.openPanel();\n this._highlightCorrectOption();\n }\n\n private _initializeSelection(): void {\n // Defer setting the value in order to avoid the \"Expression\n // has changed after it was checked\" errors from Angular.\n Promise.resolve().then(() => {\n this._setSelectionByValue(this.ngControl ? this.ngControl.value : this._value);\n this.stateChanges.next();\n });\n }\n\n /**\n * Sets the selected option based on a value. If no option can be\n * found with the designated value, the select trigger is cleared.\n */\n private _setSelectionByValue(value: any | any[]): void {\n this._selectionModel.selected.forEach((option) => {\n if (option.setInactiveStyles) {\n option.setInactiveStyles();\n }\n });\n this._selectionModel.clear();\n if (this.multiple && value) {\n value.forEach((currentValue: any) => this._selectValue(currentValue));\n this._sortValues();\n } else if (this._keyManager) {\n const correspondingOption = this._selectValue(value);\n // Shift focus to the active item. Note that we shouldn't do this in multiple\n // mode, because we don't know what option the user interacted with last.\n if (correspondingOption) {\n this._keyManager.updateActiveItem(correspondingOption);\n } else if (!this.panelOpen) {\n // Otherwise reset the highlighted option. Note that we only want to do this while\n // closed, because doing it while open can shift the user's focus unnecessarily.\n this._keyManager.updateActiveItem(-1);\n }\n }\n this.ref.markForCheck();\n }\n\n /**\n * Finds and selects and option based on its value.\n * @returns Option that has the corresponding value.\n */\n private _selectValue(value: any): NovoOption | undefined {\n const allOptions = this._getOptions();\n const correspondingOption = allOptions.find((option: NovoOption) => {\n // Skip options that are already in the model. This allows us to handle cases\n // where the same primitive value is selected multiple times.\n if (this._selectionModel.isSelected(option)) {\n return false;\n }\n return !Helpers.isEmpty(value) && !Helpers.isEmpty(option.value) && this.compareWith(option.value, value);\n });\n if (correspondingOption) {\n this._selectionModel.select(correspondingOption);\n } else if (value && !correspondingOption && this.displayLegacyOptions()) {\n // If searchComponent is present, we are using a text input filter; so if there is an\n // option not in the list, it is just filtered out\n // Double Check option not already added.\n const legacyOption = this.filteredOptions.find((it) => it.value === value);\n if (!legacyOption) {\n // Add a disabled option to the list and select it\n this._legacyOption = {\n disabled: true,\n tooltip: 'Value is not provided in list of valid options.',\n label: value?.label || value,\n value,\n }\n this.filteredOptions.push(this._legacyOption);\n this.ref.detectChanges();\n }\n }\n\n return correspondingOption;\n }\n\n public select(option, i, fireEvents: boolean = true) {\n console.warn('select() method is deprecated');\n }\n public clear() {\n console.warn('clear() method is deprecated');\n }\n\n /**\n * If the item is not disabled, this method closes the panel, and if a value is specified,\n * also sets the associated control to that value. It will also mark the control as dirty\n * if this interaction stemmed from the user.\n */\n handleSelection(option: NovoOption, isUserInput: boolean = false): void {\n const wasSelected = this._selectionModel.isSelected(option);\n if (option.value == null && !this._multiple) {\n option.deselect();\n this._selectionModel.clear();\n if (this.value != null) {\n this._propagateChanges(option.value);\n }\n } else {\n if (wasSelected !== option.selected) {\n option.selected ? this._selectionModel.select(option) : this._selectionModel.deselect(option);\n }\n if (isUserInput) {\n this._keyManager.setActiveItem(option);\n }\n if (this.multiple) {\n this._sortValues();\n if (isUserInput) {\n this.focus();\n }\n }\n }\n const legacyOptionIndex = this.filteredOptions.lastIndexOf(this._legacyOption);\n if (legacyOptionIndex !== -1) {\n this.filteredOptions.splice(legacyOptionIndex, 1);\n }\n\n if (wasSelected !== this._selectionModel.isSelected(option)) {\n this._propagateChanges();\n }\n this.stateChanges.next();\n this._watchSelectionEvents();\n }\n\n private _getDisplayValue(option: NovoOption & { value?: any; label?: string }): string {\n if (!option) {\n return this._lingeringDisplayValue ?? '';\n }\n let toDisplay = option.viewValue;\n if (this.displayWith) {\n toDisplay = this.displayWith(option.value);\n }\n // Simply falling back to an empty string if the display value is falsy does not work properly.\n // The display value can also be the number zero and shouldn't fall back to an empty string.\n let displayValue = toDisplay != null ? toDisplay : '';\n if (displayValue != '') { // eslint-disable-line\n this._lingeringDisplayValue = displayValue;\n } else if (this._lingeringDisplayValue) {\n displayValue = this._lingeringDisplayValue;\n }\n return displayValue;\n }\n\n /**\n * Clear any previous selected option and emit a selection change event for this option\n */\n private _clearPreviousSelectedOption(skip: NovoOption) {\n this._getOptions().forEach((option) => {\n if (option !== skip && option.selected) {\n option.deselect();\n }\n });\n }\n\n private _watchSelectionEvents() {\n const options = this._getOptions();\n const selectionEvents = options ? merge(...options.map((option) => option.onSelectionChange)) : of();\n this._selectedOptionChanges.unsubscribe();\n this._selectedOptionChanges = selectionEvents.pipe(take(1)).subscribe((event: NovoOptionSelectionChange) => {\n this.onModelTouched();\n this.handleSelection(event.source, event.isUserInput);\n if (event.isUserInput && !this.multiple && this.panelOpen) {\n this.closePanel();\n this.focus();\n }\n });\n }\n\n /** Handles all keydown events on the select. */\n @HostListener('keydown', ['$event'])\n _handleKeydown(event: KeyboardEvent): void {\n if (!this.disabled) {\n this.panelOpen ? this._handleOpenKeydown(event) : this._handleClosedKeydown(event);\n }\n }\n\n /** Handles keyboard events while the select is closed. */\n private _handleClosedKeydown(event: KeyboardEvent): void {\n const key = event.key;\n const isArrowKey = key === Key.ArrowDown || key === Key.ArrowUp || key === Key.ArrowLeft || key === Key.ArrowRight;\n const isOpenKey = key === Key.Enter || key === Key.Space;\n const manager = this._keyManager;\n // Open the select on ALT + arrow key to match the native <select>\n if ((!manager.isTyping() && isOpenKey && !hasModifierKey(event)) || ((this.multiple || event.altKey) && isArrowKey)) {\n event.preventDefault(); // prevents the page from scrolling down when pressing space\n this.openPanel();\n }\n }\n\n /** Handles keyboard events when the selected is open. */\n private _handleOpenKeydown(event: KeyboardEvent): void {\n const manager = this._keyManager;\n const key = event.key;\n const isArrowKey = key === Key.ArrowDown || key === Key.ArrowUp;\n const isTyping = manager.isTyping();\n\n if (isArrowKey && event.altKey) {\n // Close the select on ALT + arrow key to match the native <select>\n event.preventDefault();\n this.closePanel();\n // Don't do anything in this case if the user is typing,\n // because the typing sequence can include the space key.\n } else if (!isTyping && (key === Key.Enter || key === Key.Space) && manager.activeItem && !hasModifierKey(event)) {\n event.preventDefault();\n manager.activeItem._selectViaInteraction();\n } else if (!isTyping && this._multiple && ['a', 'A'].includes(key) && event.ctrlKey) {\n event.preventDefault();\n const hasDeselectedOptions = this.options.some((opt) => !opt.disabled && !opt.selected);\n this.options.forEach((option) => {\n if (!option.disabled) {\n hasDeselectedOptions ? option.select() : option.deselect();\n }\n });\n } else if (Key.Escape === key) {\n this.closePanel();\n } else {\n const previouslyFocusedIndex = manager.activeItemIndex;\n manager.onKeydown(event);\n if (this._multiple && isArrowKey && event.shiftKey && manager.activeItem && manager.activeItemIndex !== previouslyFocusedIndex) {\n manager.activeItem._selectViaInteraction();\n }\n }\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n registerOnChange(fn: Function): void {\n this.onModelChange = fn;\n }\n\n registerOnTouched(fn: Function): void {\n this.onModelTouched = fn;\n }\n\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n\n /** Implemented as part of NovoFieldControl. */\n setDescribedByIds(ids: string[]) {\n this._ariaDescribedby = ids.join(' ');\n }\n\n /** Implemented as part of NovoFieldControl. */\n onContainerClick(event: MouseEvent) {\n this.focus();\n }\n\n /**\n * Focuses the first non-disabled chip in this chip list, or the associated input when there\n * are no eligible chips.\n */\n focus(options?: FocusOptions): void {\n if (!this.disabled) {\n this.elementRef.nativeElement.focus(options);\n }\n }\n\n protected _getOptions() {\n return [...(this.viewOptions || []), ...(this.contentOptions || [])];\n }\n\n protected _optionsComputed = computed(() => {\n return [...(this.viewOptionsSignal() || []), ...(this.contentOptionsSignal() || [])]\n });\n\n /** Sorts the selected values in the selected based on their order in the panel. */\n private _sortValues() {\n if (this.multiple) {\n // TODO.\n }\n }\n\n /** Emits change event to set the model value. */\n private _propagateChanges(fallbackValue?: any): void {\n let valueToEmit: any = null;\n if (this.multiple) {\n valueToEmit = (this.selected as NovoOption[]).map((option) => option.value);\n } else {\n valueToEmit = this.selected ? (this.selected as NovoOption).value : fallbackValue;\n }\n\n this._value = valueToEmit;\n this.valueChange.emit(valueToEmit);\n this.onModelChange(valueToEmit);\n this.onSelect.emit({ selected: valueToEmit });\n this.selectionChange.emit(this._makeChangeEvent(valueToEmit));\n this.ref.markForCheck();\n }\n\n protected _makeChangeEvent(value: any) {\n return new NovoSelectChange(this, value);\n }\n\n /** Scrolls the active option into view. */\n protected _scrollOptionIntoView(index: number): void {\n const options = new QueryList<NovoOption>();\n options.reset(this._getOptions());\n const labelCount = _countGroupLabelsBeforeOption(index, options, this.optionGroups);\n const itemHeight = this._getItemHeight();\n this.panel.nativeElement.scrollTop = _getOptionScrollPosition(\n (index + labelCount) * itemHeight,\n itemHeight,\n this.panel.nativeElement.scrollTop,\n this.panel.nativeElement.offsetHeight,\n );\n }\n\n /** Sets up a key manager to listen to keyboard events on the overlay panel. */\n private _initKeyManager() {\n this._keyManager = new ActiveDescendantKeyManager<NovoOption>(this._optionsComputed, this.injector).withTypeAhead(250).withHomeAndEnd();\n\n this._keyManager.tabOut.pipe(takeUntil(this._destroy)).subscribe(() => {\n if (this.panelOpen) {\n // Select the active item when tabbing away. This is consistent with how the native\n // select behaves. Note that we only want to do this in single selection mode.\n if (!this.multiple && this._keyManager.activeItem) {\n this._keyManager.activeItem._selectViaInteraction();\n }\n // Restore focus to the trigger before closing. Ensures that the focus\n // position won't be lost if the user got focus into the overlay.\n this.focus();\n this.closePanel();\n }\n });\n\n this._keyManager.change.pipe(takeUntil(this._destroy)).subscribe(() => {\n if (this.panelOpen && this.overlay) {\n this._scrollOptionIntoView(this._keyManager.activeItemIndex || 0);\n } else if (!this.panelOpen && !this.multiple && this._keyManager.activeItem) {\n this._keyManager.activeItem._selectViaInteraction();\n }\n });\n }\n\n /**\n * Highlights the selected item. If no option is selected, it will highlight\n * the first item instead.\n */\n private _highlightCorrectOption(): void {\n if (this._keyManager) {\n if (this.empty) {\n this._keyManager.setFirstItemActive();\n } else {\n const options = this._getOptions();\n const index = options.findIndex(option => option.value == this._value) // eslint-disable-line\n this._keyManager.setActiveItem(index);\n }\n }\n }\n\n /** Calculates the height of the select's options. */\n private _getItemHeight(): number {\n const [first] = this._getOptions();\n if (first) {\n return first._getHostElement().offsetHeight;\n }\n return 0;\n }\n\n // TODO: Deprecate this\n private _initLegacyOptions() {\n if (this.options && this.options.length && typeof this.options[0] === 'string') {\n this.filteredOptions = this.options.map((item) => {\n return { value: item, label: item };\n });\n } else {\n this.filteredOptions = (this.options || [])\n .map((item) => {\n return {\n ...item,\n disabled: Boolean(item.readOnly || item.disabled),\n };\n })\n .map((item) => {\n return {\n ...item,\n active: false,\n };\n });\n }\n }\n\n /**\n * TODO: Deprecate all header methods\n */\n toggleHeader(event, forceValue: boolean = false) {\n if (event) {\n event.stopPropagation();\n event.preventDefault();\n }\n // Reverse the active property (if forceValue, use that)\n this.header = {\n open: forceValue !== undefined ? forceValue : !this.header.open,\n value: '',\n valid: true,\n };\n }\n\n /**\n * @deprecated use highlight pipe\n */\n highlight(match, query) {\n // Replaces the capture string with a the same string inside of a \"strong\" tag\n return query ? match.replace(new RegExp(this.escapeRegexp(query), 'gi'), '<strong>$&</strong>') : match;\n }\n\n escapeRegexp(queryToEscape) {\n // Ex: if the capture is \"a\" the result will be \\a\n return queryToEscape.replace(/([.?*+^$[\\]\\\\(){}|-])/g, '\\\\$1');\n }\n\n saveHeader() {\n if (this.header.value) {\n this.headerConfig.onSave(this.header.value);\n this.createdItem = this.header.value;\n this.closePanel();\n } else {\n this.header.valid = false;\n }\n }\n\n /** Determines the `aria-activedescendant` to be set on the host. */\n _getAriaActiveDescendant(): string | null {\n if (this.panelOpen && this._keyManager && this._keyManager.activeItem) {\n return this._keyManager.activeItem.id;\n }\n\n return null;\n }\n}\n","import { Directive, OnInit, inject } from '@angular/core';\nimport { FormControl, NgControl } from '@angular/forms';\nimport { NovoSelectElement } from './Select';\n\n/**\n * Fixes a <novo-select> element so that if its value is updated externally, the checkboxes in the dropdown selector\n * update accordingly. Because this is a functionality change to a core control, this fix is provided as a directive\n * to only be used if needed.\n */\n@Directive({\n selector: 'novo-select[extupdatefix]',\n standalone: false,\n})\nexport class NovoSelectExtUpdateFix implements OnInit {\n control = inject(NgControl);\n selectElement = inject(NovoSelectElement);\n\n ngOnInit() {\n if (this.control?.control && 'registerOnChange' in this.control.control) {\n (this.control.control as FormControl).registerOnChange((rawValue, viewToModelUpdate) => {\n if (this.selectElement.multiple === Array.isArray(rawValue)) {\n this.afterExternalUpdate(rawValue);\n }\n });\n }\n }\n\n afterExternalUpdate(rawValue: any) {\n this.selectElement['_setSelectionByValue'](rawValue);\n }\n}\n","// NG\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n// App\nimport { NovoPipesModule } from 'novo-elements/pipes';\nimport { NovoButtonModule } from 'novo-elements/elements/button';\nimport { NovoOptionModule, NovoOverlayModule } from 'novo-elements/elements/common';\nimport { NovoDividerModule } from 'novo-elements/elements/divider';\nimport { NovoTooltipModule } from 'novo-elements/elements/tooltip';\nimport { NovoSelectElement } from './Select';\nimport { NovoSelectExtUpdateFix } from './Select.extupdatefix.directive';\nimport { NovoIconModule } from 'novo-elements/elements/icon';\n\n@NgModule({\n imports: [\n A11yModule,\n CommonModule,\n FormsModule,\n NovoButtonModule,\n NovoDividerModule,\n NovoOptionModule,\n NovoOverlayModule,\n NovoPipesModule,\n NovoTooltipModule,\n NovoIconModule,\n ],\n declarations: [NovoSelectElement, NovoSelectExtUpdateFix],\n exports: [NovoSelectElement, NovoSelectExtUpdateFix],\n})\nexport class NovoSelectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AA6DA;MACa,gBAAgB,CAAA;AAC3B,IAAA,WAAA;;IAES,MAAyB;;IAEzB,KAAU,EAAA;QAFV,IAAM,CAAA,MAAA,GAAN,MAAM;QAEN,IAAK,CAAA,KAAA,GAAL,KAAK;;AAEf;AAED;AACA;AACA,MAAM,cAAc,CAAA;AAClB,IAAA,WAAA,CACS,yBAA4C,EAC5C,WAAmB,EACnB,gBAAoC,EACpC,SAAoB,EAAA;QAHpB,IAAyB,CAAA,yBAAA,GAAzB,yBAAyB;QACzB,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAAS,CAAA,SAAA,GAAT,SAAS;;AAEnB;AACD,MAAM,gBAAgB,GAKI,YAAY,CAAC,aAAa,CAAC,aAAa,CAAC,aAAa,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AAEpH,IAAI,MAAM,GAAG,CAAC;AA4FR,MAAO,iBACX,SAAQ,gBAAgB,CAAA;AAqHxB;;;AAGG;AACH,IAAA,IACI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM;;IAEpB,IAAI,KAAK,CAAC,QAAa,EAAA;;AAErB,QAAA,IAAI,QAAQ,KAAK,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC3E,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,gBAAA,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC;;AAErC,YAAA,IAAI,CAAC,MAAM,GAAG,QAAQ;AACtB,YAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI;;;;AAMtC,IAAA,IACI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS;;IAEvB,IAAI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC;AAC7C,QAAA,IAAI,CAAC,QAAQ,GAAG,aAAa;;;IAK/B,IACI,OAAO,CAAC,OAAmB,EAAA;AAC7B,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO;QACvB,IAAI,CAAC,kBAAkB,EAAE;;AAE3B,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ;;;AAKtB,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS;;;AAKxC,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;;;AAIrC,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;;;AAIzF,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,OAAO,EAAE;;AAEX,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACpG,YAAA,OAAO,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;;AAEnC,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;;IAGhE,WACS,CAAA,UAAsB,EACtB,MAAwB,EACxB,GAAsB,EACrB,YAA0B,EAC1B,MAAc,EACd,QAAkB,EAC1B,wBAA2C,EACvB,SAAoB,EAC5B,WAAmB,EACnB,gBAAoC,EACH,aAA+B,EAAA;QAE5E,KAAK,CAAC,wBAAwB,EAAE,WAAW,EAAE,gBAAgB,EAAE,SAAS,CAAC;QAZlE,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAG,CAAA,GAAA,GAAH,GAAG;QACF,IAAY,CAAA,YAAA,GAAZ,YAAY;QACZ,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAQ,CAAA,QAAA,GAAR,QAAQ;QAK6B,IAAa,CAAA,aAAA,GAAb,aAAa;AAnMpD,QAAA,IAAA,CAAA,SAAS,GAAW,CAAA,YAAA,EAAe,EAAE,MAAM,EAAE;AAC7C,QAAA,IAAA,CAAA,aAAa,GAAG,YAAY,CAAC,KAAK;AAClC,QAAA,IAAA,CAAA,oBAAoB,GAAG,YAAY,CAAC,KAAK;AACzC,QAAA,IAAA,CAAA,sBAAsB,GAAG,YAAY,CAAC,KAAK;AAChC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;QAExC,IAAW,CAAA,WAAA,GAAW,QAAQ;;QAGvC,IAAY,CAAA,YAAA,GAAW,IAAI;;QAW3B,IAAa,CAAA,aAAA,GAAkB,IAAI;AAGnC;;;AAGG;QACK,IAAsB,CAAA,sBAAA,GAAW,IAAI;AAI7C,QAAA,IAAA,CAAA,EAAE,GAAW,IAAI,CAAC,SAAS;AAE3B,QAAA,IAAA,CAAA,IAAI,GAAW,IAAI,CAAC,SAAS;QAE7B,IAAW,CAAA,WAAA,GAAW,WAAW;QAMjC,IAAQ,CAAA,QAAA,GAAW,aAAa;QAMhC,IAAW,CAAA,WAAA,GAAW,IAAI;AAE1B,QAAA,IAAA,CAAA,QAAQ,GAAsB,IAAI,YAAY,EAAE;;AAE7B,QAAA,IAAA,CAAA,eAAe,GAAmC,IAAI,YAAY,EAAoB;;AAEtF,QAAA,IAAA,CAAA,WAAW,GAAsB,IAAI,YAAY,EAAO;;AAGxD,QAAA,IAAA,CAAA,YAAY,GAA0B,IAAI,YAAY,EAAW;;QAEzD,IAAa,CAAA,aAAA,GAAqB,IAAI,CAAC,YAAY,CAAC,IAAI,CACjF,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAChB,GAAG,CAAC,MAAO,GAAC,CAAC,CACd;;QAE0B,IAAa,CAAA,aAAA,GAAqB,IAAI,CAAC,YAAY,CAAC,IAAI,CACjF,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EACjB,GAAG,CAAC,MAAO,GAAC,CAAC,CACd;;QAGQ,IAAW,CAAA,WAAA,GAAoC,IAAI;;QAEnD,IAAW,CAAA,WAAA,GAAkC,CAAC,EAAO,EAAE,EAAO,KACrE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AAEtG,QAAA,IAAA,CAAA,MAAM,GAAQ;AACZ,YAAA,IAAI,EAAE,KAAK;AACX,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,KAAK,EAAE,EAAE;SACV;AAGD,QAAA,IAAA,CAAA,aAAa,GAAa,MAAK,GAAG;AAClC,QAAA,IAAA,CAAA,cAAc,GAAa,MAAK,GAAG;QACnC,IAAU,CAAA,UAAA,GAAW,EAAE;QAGvB,IAAQ,CAAA,QAAA,GAAY,KAAK;AAazB,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAe,IAAI,CAAC;AAC9C,QAAA,IAAA,CAAA,oBAAoB,GAAG,MAAM,CAAe,IAAI,CAAC;;AAGjD,QAAA,IAAA,CAAA,0BAA0B,GAAG,MAAM,CAAC,KAAK,CAAC;QAE1C,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;AAEzD,QAAA,IAAA,CAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAK;AAC3C,YAAA,OAAO,EAAE,IAAI,CAAC,0BAA0B,EAAE,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACzE,SAAC,CAAC;QAuBM,IAAM,CAAA,MAAA,GAAQ,IAAI;QAWlB,IAAS,CAAA,SAAA,GAAY,KAAK;QAiB1B,IAAQ,CAAA,QAAA,GAAG,KAAK;AA+Yd,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;YACzC,OAAO,CAAC,IAAI,IAAI,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,IAAI,CAAC,oBAAoB,EAAE,IAAI,EAAE,CAAC,CAAC;AACtF,SAAC,CAAC;QA3WA,IAAI,SAAS,EAAE;AACb,YAAA,SAAS,CAAC,aAAa,GAAG,IAAI;;QAEhC,IAAI,CAAC,eAAe,GAAG,IAAI,cAAc,CAAa,IAAI,CAAC,QAAQ,CAAC;;QAEpE,IAAI,CAAC,eAAe,EAAE;;IAGxB,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QACxB,IAAI,CAAC,kBAAkB,EAAE;QACzB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,KACxE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;AACnB,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,MAAM;AACxB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;SACzB,CAAC,CACH;;AAGH,IAAA,WAAW,CAAC,OAAsB,EAAA;;;AAGhC,QAAA,IAAI,OAAO,EAAE,QAAQ,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;;AAE1B,QAAA,IAAI,OAAO,EAAE,QAAQ,EAAE;;YAErB,IAAI,CAAC,eAAe,GAAG,IAAI,cAAc,CAAa,IAAI,CAAC,QAAQ,CAAC;;QAEtE,IAAI,CAAC,kBAAkB,EAAE;;IAG3B,eAAe,GAAA;;QAEb,IAAI,CAAC,qBAAqB,EAAE;;QAE5B,IAAI,CAAC,oBAAoB,EAAE;;QAE3B,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;YAC9E,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AAC7B,gBAAA,IAAI,MAAM,CAAC,MAAM,EAAE;oBACjB,MAAM,CAAC,MAAM,EAAE;;AAEnB,aAAC,CAAC;YACF,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AAC/B,gBAAA,IAAI,MAAM,CAAC,QAAQ,EAAE;oBACnB,MAAM,CAAC,QAAQ,EAAE;;AAErB,aAAC,CAAC;AACJ,SAAC,CAAC;;AAEF,QAAA,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO;AACxD,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;aAC7B,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,qBAAqB,EAAE;YAC5B,IAAI,CAAC,oBAAoB,EAAE;AAC7B,SAAC,CAAC;QAEJ,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;aACtF,SAAS,CAAC,cAAc,IAAG;YAC1B,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;AACzD,SAAC,CAAC;QAEJ,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC;aAChF,SAAS,CAAC,WAAW,IAAG;YACvB,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;AACnD,SAAC,CAAC;AAEJ,QAAA,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;AAC7C,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;aAC7B,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AACxC,SAAC,CAAC;QACJ,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE,aAAa,EAAE;gBACrC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE;;AAE5D,SAAC,CAAC;;IAGN,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;AACxB,QAAA,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;AAChC,QAAA,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE;AACvC,QAAA,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE;QACzC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;;IAIjE,OAAO,GAAA;QACL,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,OAAO,KAAK;;IAGd,SAAS,GAAA;QACP,KAAK,CAAC,SAAS,EAAE;QACjB,IAAI,CAAC,uBAAuB,EAAE;;IAGxB,oBAAoB,GAAA;;;AAG1B,QAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAK;YAC1B,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;AAC9E,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;AAC1B,SAAC,CAAC;;AAGJ;;;AAGG;AACK,IAAA,oBAAoB,CAAC,KAAkB,EAAA;QAC7C,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AAC/C,YAAA,IAAI,MAAM,CAAC,iBAAiB,EAAE;gBAC5B,MAAM,CAAC,iBAAiB,EAAE;;AAE9B,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE;AAC5B,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,EAAE;AAC1B,YAAA,KAAK,CAAC,OAAO,CAAC,CAAC,YAAiB,KAAK,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;YACrE,IAAI,CAAC,WAAW,EAAE;;AACb,aAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YAC3B,MAAM,mBAAmB,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;;;YAGpD,IAAI,mBAAmB,EAAE;AACvB,gBAAA,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,mBAAmB,CAAC;;AACjD,iBAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;;;gBAG1B,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;;;AAGzC,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;AAGzB;;;AAGG;AACK,IAAA,YAAY,CAAC,KAAU,EAAA;AAC7B,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE;QACrC,MAAM,mBAAmB,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,MAAkB,KAAI;;;YAGjE,IAAI,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AAC3C,gBAAA,OAAO,KAAK;;AAEd,YAAA,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC;AAC3G,SAAC,CAAC;QACF,IAAI,mBAAmB,EAAE;AACvB,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,mBAAmB,CAAC;;aAC3C,IAAI,KAAK,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE;;;;AAIvE,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC;YAC1E,IAAI,CAAC,YAAY,EAAE;;gBAEjB,IAAI,CAAC,aAAa,GAAG;AACnB,oBAAA,QAAQ,EAAE,IAAI;AACd,oBAAA,OAAO,EAAE,iDAAiD;AAC1D,oBAAA,KAAK,EAAE,KAAK,EAAE,KAAK,IAAI,KAAK;oBAC5B,KAAK;iBACN;gBACD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;AAC7C,gBAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;;;AAI5B,QAAA,OAAO,mBAAmB;;AAGrB,IAAA,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,aAAsB,IAAI,EAAA;AACjD,QAAA,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC;;IAExC,KAAK,GAAA;AACV,QAAA,OAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC;;AAG9C;;;;AAIG;AACH,IAAA,eAAe,CAAC,MAAkB,EAAE,WAAA,GAAuB,KAAK,EAAA;QAC9D,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC;QAC3D,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YAC3C,MAAM,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE;AAC5B,YAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;AACtB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC;;;aAEjC;AACL,YAAA,IAAI,WAAW,KAAK,MAAM,CAAC,QAAQ,EAAE;gBACnC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC;;YAE/F,IAAI,WAAW,EAAE;AACf,gBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC;;AAExC,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,IAAI,CAAC,WAAW,EAAE;gBAClB,IAAI,WAAW,EAAE;oBACf,IAAI,CAAC,KAAK,EAAE;;;;AAIlB,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC;AAC9E,QAAA,IAAI,iBAAiB,KAAK,CAAC,CAAC,EAAE;YAC5B,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC;;QAGnD,IAAI,WAAW,KAAK,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;YAC3D,IAAI,CAAC,iBAAiB,EAAE;;AAE1B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QACxB,IAAI,CAAC,qBAAqB,EAAE;;AAGtB,IAAA,gBAAgB,CAAC,MAAoD,EAAA;QAC3E,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,OAAO,IAAI,CAAC,sBAAsB,IAAI,EAAE;;AAE1C,QAAA,IAAI,SAAS,GAAG,MAAM,CAAC,SAAS;AAChC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC;;;;AAI5C,QAAA,IAAI,YAAY,GAAG,SAAS,IAAI,IAAI,GAAG,SAAS,GAAG,EAAE;AACrD,QAAA,IAAI,YAAY,IAAI,EAAE,EAAE;AACtB,YAAA,IAAI,CAAC,sBAAsB,GAAG,YAAY;;AACrC,aAAA,IAAI,IAAI,CAAC,sBAAsB,EAAE;AACtC,YAAA,YAAY,GAAG,IAAI,CAAC,sBAAsB;;AAE5C,QAAA,OAAO,YAAY;;AAGrB;;AAEG;AACK,IAAA,4BAA4B,CAAC,IAAgB,EAAA;QACnD,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;YACpC,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE;gBACtC,MAAM,CAAC,QAAQ,EAAE;;AAErB,SAAC,CAAC;;IAGI,qBAAqB,GAAA;AAC3B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE;AAClC,QAAA,MAAM,eAAe,GAAG,OAAO,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,iBAAiB,CAAC,CAAC,GAAG,EAAE,EAAE;AACpG,QAAA,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE;AACzC,QAAA,IAAI,CAAC,sBAAsB,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAgC,KAAI;YACzG,IAAI,CAAC,cAAc,EAAE;YACrB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC;AACrD,YAAA,IAAI,KAAK,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;gBACzD,IAAI,CAAC,UAAU,EAAE;gBACjB,IAAI,CAAC,KAAK,EAAE;;AAEhB,SAAC,CAAC;;;AAKJ,IAAA,cAAc,CAAC,KAAoB,EAAA;AACjC,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;;;;AAK9E,IAAA,oBAAoB,CAAC,KAAoB,EAAA;AAC/C,QAAA,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG;AACrB,QAAA,MAAM,UAAU,GAAG,GAAG,KAAA,WAAA,wBAAsB,GAAG,KAAgB,SAAA,sBAAI,GAAG,KAAA,WAAA,wBAAsB,GAAG;AAC/F,QAAA,MAAM,SAAS,GAAG,GAAG,gCAAkB,GAAG;AAC1C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW;;AAEhC,QAAA,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,SAAS,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,CAAC,EAAE;AACnH,YAAA,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,CAAC,SAAS,EAAE;;;;AAKZ,IAAA,kBAAkB,CAAC,KAAoB,EAAA;AAC7C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW;AAChC,QAAA,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG;AACrB,QAAA,MAAM,UAAU,GAAG,GAAG,wCAAsB,GAAG;AAC/C,QAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE;AAEnC,QAAA,IAAI,UAAU,IAAI,KAAK,CAAC,MAAM,EAAE;;YAE9B,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,UAAU,EAAE;;;;aAGZ,IAAI,CAAC,QAAQ,KAAK,GAAG,KAAc,OAAA,oBAAI,GAAG,KAAc,GAAA,iBAAC,IAAI,OAAO,CAAC,UAAU,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;YAChH,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,OAAO,CAAC,UAAU,CAAC,qBAAqB,EAAE;;aACrC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE;YACnF,KAAK,CAAC,cAAc,EAAE;YACtB,MAAM,oBAAoB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;YACvF,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AAC9B,gBAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AACpB,oBAAA,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE;;AAE9D,aAAC,CAAC;;aACG,IAAI,QAAA,sBAAe,GAAG,EAAE;YAC7B,IAAI,CAAC,UAAU,EAAE;;aACZ;AACL,YAAA,MAAM,sBAAsB,GAAG,OAAO,CAAC,eAAe;AACtD,YAAA,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC;YACxB,IAAI,IAAI,CAAC,SAAS,IAAI,UAAU,IAAI,KAAK,CAAC,QAAQ,IAAI,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,eAAe,KAAK,sBAAsB,EAAE;AAC9H,gBAAA,OAAO,CAAC,UAAU,CAAC,qBAAqB,EAAE;;;;AAKhD,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;;AAGpB,IAAA,gBAAgB,CAAC,EAAY,EAAA;AAC3B,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE;;AAGzB,IAAA,iBAAiB,CAAC,EAAY,EAAA;AAC5B,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;;AAG1B,IAAA,gBAAgB,CAAC,QAAiB,EAAA;AAChC,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;;;AAI1B,IAAA,iBAAiB,CAAC,GAAa,EAAA;QAC7B,IAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;;;AAIvC,IAAA,gBAAgB,CAAC,KAAiB,EAAA;QAChC,IAAI,CAAC,KAAK,EAAE;;AAGd;;;AAGG;AACH,IAAA,KAAK,CAAC,OAAsB,EAAA;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC;;;IAItC,WAAW,GAAA;AACnB,QAAA,OAAO,CAAC,IAAI,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,EAAE,IAAI,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;;;IAQ9D,WAAW,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;;;;;AAMb,IAAA,iBAAiB,CAAC,aAAmB,EAAA;QAC3C,IAAI,WAAW,GAAQ,IAAI;AAC3B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,WAAW,GAAI,IAAI,CAAC,QAAyB,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,CAAC;;aACtE;AACL,YAAA,WAAW,GAAG,IAAI,CAAC,QAAQ,GAAI,IAAI,CAAC,QAAuB,CAAC,KAAK,GAAG,aAAa;;AAGnF,QAAA,IAAI,CAAC,MAAM,GAAG,WAAW;AACzB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;AAClC,QAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;QAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;AAC7C,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;AAC7D,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;AAGf,IAAA,gBAAgB,CAAC,KAAU,EAAA;AACnC,QAAA,OAAO,IAAI,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC;;;AAIhC,IAAA,qBAAqB,CAAC,KAAa,EAAA;AAC3C,QAAA,MAAM,OAAO,GAAG,IAAI,SAAS,EAAc;QAC3C,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AACjC,QAAA,MAAM,UAAU,GAAG,6BAA6B,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC;AACnF,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE;AACxC,QAAA,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,GAAG,wBAAwB,CAC3D,CAAC,KAAK,GAAG,UAAU,IAAI,UAAU,EACjC,UAAU,EACV,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,EAClC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,YAAY,CACtC;;;IAIK,eAAe,GAAA;QACrB,IAAI,CAAC,WAAW,GAAG,IAAI,0BAA0B,CAAa,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE;AAEvI,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AACpE,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;;;gBAGlB,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE;AACjD,oBAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,qBAAqB,EAAE;;;;gBAIrD,IAAI,CAAC,KAAK,EAAE;gBACZ,IAAI,CAAC,UAAU,EAAE;;AAErB,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YACpE,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE;gBAClC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,IAAI,CAAC,CAAC;;AAC5D,iBAAA,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE;AAC3E,gBAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,qBAAqB,EAAE;;AAEvD,SAAC,CAAC;;AAGJ;;;AAGG;IACK,uBAAuB,GAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,gBAAA,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE;;iBAChC;AACL,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE;gBAClC,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,CAAA;AACtE,gBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC;;;;;IAMnC,cAAc,GAAA;QACpB,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE;QAClC,IAAI,KAAK,EAAE;AACT,YAAA,OAAO,KAAK,CAAC,eAAe,EAAE,CAAC,YAAY;;AAE7C,QAAA,OAAO,CAAC;;;IAIF,kBAAkB,GAAA;QACxB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;AAC9E,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;gBAC/C,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;AACrC,aAAC,CAAC;;aACG;YACL,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE;AACvC,iBAAA,GAAG,CAAC,CAAC,IAAI,KAAI;gBACZ,OAAO;AACL,oBAAA,GAAG,IAAI;oBACP,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC;iBAClD;AACH,aAAC;AACA,iBAAA,GAAG,CAAC,CAAC,IAAI,KAAI;gBACZ,OAAO;AACL,oBAAA,GAAG,IAAI;AACP,oBAAA,MAAM,EAAE,KAAK;iBACd;AACH,aAAC,CAAC;;;AAIR;;AAEG;AACH,IAAA,YAAY,CAAC,KAAK,EAAE,UAAA,GAAsB,KAAK,EAAA;QAC7C,IAAI,KAAK,EAAE;YACT,KAAK,CAAC,eAAe,EAAE;YACvB,KAAK,CAAC,cAAc,EAAE;;;QAGxB,IAAI,CAAC,MAAM,GAAG;AACZ,YAAA,IAAI,EAAE,UAAU,KAAK,SAAS,GAAG,UAAU,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI;AAC/D,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,KAAK,EAAE,IAAI;SACZ;;AAGH;;AAEG;IACH,SAAS,CAAC,KAAK,EAAE,KAAK,EAAA;;QAEpB,OAAO,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,EAAE,qBAAqB,CAAC,GAAG,KAAK;;AAGzG,IAAA,YAAY,CAAC,aAAa,EAAA;;QAExB,OAAO,aAAa,CAAC,OAAO,CAAC,wBAAwB,EAAE,MAAM,CAAC;;IAGhE,UAAU,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;YACrB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YAC3C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK;YACpC,IAAI,CAAC,UAAU,EAAE;;aACZ;AACL,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK;;;;IAK7B,wBAAwB,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE;AACrE,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE;;AAGvC,QAAA,OAAO,IAAI;;AAztBF,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,qWAuMN,eAAe,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAvM1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,EAvFf,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAA,EAAA,oCAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,yBAAA,EAAA,uBAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,4BAAA,EAAA,4BAAA,EAAA,UAAA,EAAA,2BAAA,EAAA,YAAA,EAAA,4BAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,OAAA,EAAA,4BAAA,EAAA,UAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,EAAA,cAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,iBAAiB,EAAE;AAC7D,YAAA,EAAE,OAAO,EAAE,4BAA4B,EAAE,WAAW,EAAE,iBAAiB,EAAE;AAC5E,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAoLc,YAAY,EAEZ,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,UAAU,yFALhB,4BAA4B,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAOzB,UAAU,EAvLZ,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0DX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,spTAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,QAAA,EAAA,eAAA,EAAA,aAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,GAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAyBU,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBA1F7B,SAAS;+BACI,aAAa,EAAA,MAAA,EACf,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,EACjC,SAAA,EAAA;AACP,wBAAA,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,mBAAmB,EAAE;AAC7D,wBAAA,EAAE,OAAO,EAAE,4BAA4B,EAAE,WAAW,mBAAmB,EAAE;qBAC5E,EACS,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DX,EAEO,IAAA,EAAA;AACF,wBAAA,KAAK,EAAE,aAAa;AACpB,wBAAA,IAAI,EAAE,UAAU;AAChB,wBAAA,mBAAmB,EAAE,MAAM;AAC3B,wBAAA,eAAe,EAAE,MAAM;AACvB,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,sBAAsB,EAAE,kCAAkC;AAC1D,wBAAA,sBAAsB,EAAE,WAAW;AACnC,wBAAA,sBAAsB,EAAE,qBAAqB;AAC7C,wBAAA,sBAAsB,EAAE,qBAAqB;AAC7C,wBAAA,qBAAqB,EAAE,YAAY;AACnC,wBAAA,wBAAwB,EAAE,yBAAyB;AACnD,wBAAA,yBAAyB,EAAE,0BAA0B;AACrD,wBAAA,8BAA8B,EAAE,4BAA4B;AAC5D,wBAAA,8BAA8B,EAAE,UAAU;AAC1C,wBAAA,6BAA6B,EAAE,YAAY;AAC3C,wBAAA,8BAA8B,EAAE,UAAU;AAC1C,wBAAA,2BAA2B,EAAE,OAAO;AACpC,wBAAA,8BAA8B,EAAE,UAAU;AAC1C,wBAAA,YAAY,EAAE,mBAAmB;AACpC,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,MAAA,EAAA,CAAA,spTAAA,CAAA,EAAA;;0BAsMhB;;0BAAY;;0BACZ;;0BACA;;0BACA;;0BAAY,MAAM;2BAAC,eAAe;yCApKrC,EAAE,EAAA,CAAA;sBADD;gBAGD,IAAI,EAAA,CAAA;sBADH;gBAGD,WAAW,EAAA,CAAA;sBADV;gBAGD,QAAQ,EAAA,CAAA;sBADP;gBAGD,YAAY,EAAA,CAAA;sBADX;gBAGD,QAAQ,EAAA,CAAA;sBADP;gBAGD,YAAY,EAAA,CAAA;sBADX;gBAGD,aAAa,EAAA,CAAA;sBADZ;gBAGD,WAAW,EAAA,CAAA;sBADV;gBAGD,QAAQ,EAAA,CAAA;sBADP;gBAGkB,eAAe,EAAA,CAAA;sBAAjC;gBAEkB,WAAW,EAAA,CAAA;sBAA7B;gBAGkB,YAAY,EAAA,CAAA;sBAA9B;gBAE0B,aAAa,EAAA,CAAA;sBAAvC,MAAM;uBAAC,QAAQ;gBAKW,aAAa,EAAA,CAAA;sBAAvC,MAAM;uBAAC,QAAQ;gBAMP,WAAW,EAAA,CAAA;sBAAnB;gBAEQ,WAAW,EAAA,CAAA;sBAAnB;gBAmBD,OAAO,EAAA,CAAA;sBADN,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,4BAA4B,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBAIzD,YAAY,EAAA,CAAA;sBADX,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,YAAY,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;gBAGpD,cAAc,EAAA,CAAA;sBADb,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;gBAGlD,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,UAAU;gBAgBxB,KAAK,EAAA,CAAA;sBADJ,SAAS;uBAAC,OAAO;gBAQd,KAAK,EAAA,CAAA;sBADR;gBAkBG,QAAQ,EAAA,CAAA;sBADX;gBAYG,OAAO,EAAA,CAAA;sBADV;gBA8ID,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;gBAkLjC,cAAc,EAAA,CAAA;sBADb,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;ACpoBrC;;;;AAIG;MAKU,sBAAsB,CAAA;AAJnC,IAAA,WAAA,GAAA;AAKE,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC;AAC3B,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAe1C;IAbC,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,kBAAkB,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;AACtE,YAAA,IAAI,CAAC,OAAO,CAAC,OAAuB,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE,iBAAiB,KAAI;AACrF,gBAAA,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,KAAK,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AAC3D,oBAAA,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC;;AAEtC,aAAC,CAAC;;;AAIN,IAAA,mBAAmB,CAAC,QAAa,EAAA;QAC/B,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC,QAAQ,CAAC;;+GAf3C,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAtB,sBAAsB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA;;;ACZD;MA+Ba,gBAAgB,CAAA;+GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,EAHZ,YAAA,EAAA,CAAA,iBAAiB,EAAE,sBAAsB,aAXtD,UAAU;YACV,YAAY;YACZ,WAAW;YACX,gBAAgB;YAChB,iBAAiB;YACjB,gBAAgB;YAChB,iBAAiB;YACjB,eAAe;YACf,iBAAiB;YACjB,cAAc,CAAA,EAAA,OAAA,EAAA,CAGN,iBAAiB,EAAE,sBAAsB,CAAA,EAAA,CAAA,CAAA;AAExC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YAdzB,UAAU;YACV,YAAY;YACZ,WAAW;YACX,gBAAgB;YAChB,iBAAiB;YACjB,gBAAgB;YAChB,iBAAiB;YACjB,eAAe;YACf,iBAAiB;YACjB,cAAc,CAAA,EAAA,CAAA,CAAA;;4FAKL,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAhB5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,UAAU;wBACV,YAAY;wBACZ,WAAW;wBACX,gBAAgB;wBAChB,iBAAiB;wBACjB,gBAAgB;wBAChB,iBAAiB;wBACjB,eAAe;wBACf,iBAAiB;wBACjB,cAAc;AACf,qBAAA;AACD,oBAAA,YAAY,EAAE,CAAC,iBAAiB,EAAE,sBAAsB,CAAC;AACzD,oBAAA,OAAO,EAAE,CAAC,iBAAiB,EAAE,sBAAsB,CAAC;AACrD,iBAAA;;;AC9BD;;AAEG;;;;"}
|