@siemens/element-ng 49.10.0 → 49.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/fesm2022/siemens-element-ng-about.mjs +13 -4
  2. package/fesm2022/siemens-element-ng-about.mjs.map +1 -1
  3. package/fesm2022/siemens-element-ng-application-header.mjs +4 -4
  4. package/fesm2022/siemens-element-ng-application-header.mjs.map +1 -1
  5. package/fesm2022/siemens-element-ng-date-range-filter.mjs +12 -3
  6. package/fesm2022/siemens-element-ng-date-range-filter.mjs.map +1 -1
  7. package/fesm2022/siemens-element-ng-datepicker.mjs +1 -1
  8. package/fesm2022/siemens-element-ng-datepicker.mjs.map +1 -1
  9. package/fesm2022/siemens-element-ng-filtered-search.mjs +2 -2
  10. package/fesm2022/siemens-element-ng-filtered-search.mjs.map +1 -1
  11. package/fesm2022/siemens-element-ng-form.mjs +6 -6
  12. package/fesm2022/siemens-element-ng-form.mjs.map +1 -1
  13. package/fesm2022/siemens-element-ng-landing-page.mjs +2 -2
  14. package/fesm2022/siemens-element-ng-landing-page.mjs.map +1 -1
  15. package/fesm2022/siemens-element-ng-navbar-vertical-next.mjs +355 -258
  16. package/fesm2022/siemens-element-ng-navbar-vertical-next.mjs.map +1 -1
  17. package/fesm2022/siemens-element-ng-navbar-vertical.mjs +18 -2
  18. package/fesm2022/siemens-element-ng-navbar-vertical.mjs.map +1 -1
  19. package/fesm2022/siemens-element-ng-photo-upload.mjs +2 -2
  20. package/fesm2022/siemens-element-ng-select.mjs +2 -2
  21. package/fesm2022/siemens-element-ng-side-panel.mjs +2 -2
  22. package/fesm2022/siemens-element-ng-toast-notification.mjs +2 -2
  23. package/fesm2022/siemens-element-ng-tour.mjs +2 -2
  24. package/fesm2022/siemens-element-ng-translate.mjs.map +1 -1
  25. package/fesm2022/siemens-element-ng-tree-view.mjs +2 -2
  26. package/fesm2022/siemens-element-ng-tree-view.mjs.map +1 -1
  27. package/package.json +3 -3
  28. package/template-i18n.json +8 -6
  29. package/types/siemens-element-ng-about.d.ts +11 -1
  30. package/types/siemens-element-ng-date-range-filter.d.ts +10 -1
  31. package/types/siemens-element-ng-navbar-vertical-next.d.ts +161 -85
  32. package/types/siemens-element-ng-translate.d.ts +2 -0
@@ -1 +1 @@
1
- {"version":3,"file":"siemens-element-ng-date-range-filter.mjs","sources":["../../../../projects/element-ng/date-range-filter/si-date-range-calculation.service.ts","../../../../projects/element-ng/date-range-filter/si-date-range-filter.types.ts","../../../../projects/element-ng/date-range-filter/si-relative-date.component.ts","../../../../projects/element-ng/date-range-filter/si-relative-date.component.html","../../../../projects/element-ng/date-range-filter/si-date-range-filter.component.ts","../../../../projects/element-ng/date-range-filter/si-date-range-filter.component.html","../../../../projects/element-ng/date-range-filter/si-date-range-filter.module.ts","../../../../projects/element-ng/date-range-filter/index.ts","../../../../projects/element-ng/date-range-filter/siemens-element-ng-date-range-filter.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Injectable } from '@angular/core';\n\nimport { DateRangeFilter, ResolvedDateRange } from './si-date-range-filter.types';\n\nexport interface ResolveDateRangeOptions {\n /**\n * Resolve time? When set to false, hours/minutes/seconds/ms are set to zero\n * @defaultValue true\n **/\n withTime?: boolean;\n /**\n * Skip normalization? When skipped, `point1` will always be `start`, `point2` will be `end`\n */\n skipNormalization?: boolean;\n}\n\n/**\n * Service to transform and calculate with DateRangeFilter objects.\n */\n@Injectable({ providedIn: 'root' })\nexport class SiDateRangeCalculationService {\n /**\n * Calculates the start and end dates of a DateRangeFilter.\n * @param filter - The date range filter object to be resolved.\n * @param options - Options for time handling\n * @returns The resolved result in form of a ResolvedDateRange object.\n */\n resolveDateRangeFilter(\n filter: DateRangeFilter,\n options?: ResolveDateRangeOptions\n ): ResolvedDateRange {\n const ref = filter.point1 === 'now' ? new Date() : new Date(filter.point1);\n const withTime = options?.withTime ?? true;\n\n if (!withTime) {\n this.removeTime(ref);\n }\n\n if (filter.point2 instanceof Date) {\n const point2 = withTime ? filter.point2 : this.removeTime(new Date(filter.point2));\n return this.normalize(ref, point2, options?.skipNormalization);\n }\n\n const offset = filter.point2;\n\n switch (filter.range) {\n case undefined:\n case 'before':\n return this.normalize(ref, this.datePlusOffset(ref, -offset), options?.skipNormalization);\n case 'after':\n return this.normalize(ref, this.datePlusOffset(ref, offset), options?.skipNormalization);\n case 'within':\n return this.normalize(\n this.datePlusOffset(ref, -offset),\n this.datePlusOffset(ref, offset),\n options?.skipNormalization\n );\n }\n }\n\n private datePlusOffset(date: Date, offset: number): Date {\n return new Date(date.getTime() + offset);\n }\n\n private normalize(date1: Date, date2: Date, skip?: boolean): ResolvedDateRange {\n const valid = !isNaN(date1.getTime()) && !isNaN(date2.getTime());\n return skip\n ? { start: date1, end: date2, valid }\n : date1 < date2\n ? { start: date1, end: date2, valid }\n : { start: date2, end: date1, valid };\n }\n\n /**\n * Utility to reset the time attributes to 0 (hours/minutes/seconds/milliseconds).\n */\n removeTime(date: Date): Date {\n date.setHours(0);\n date.setMinutes(0);\n date.setSeconds(0);\n date.setMilliseconds(0);\n return date;\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { TranslatableString } from '@siemens/element-translate-ng/translate';\n\n/**\n * Simple DateRangeFilter preset based on offset from now\n */\nexport interface DateRangePresetOffset {\n type?: 'offset';\n /** translation key for label */\n label: TranslatableString;\n /** offset from current in milliseconds */\n offset: number;\n}\n\n/**\n * Advanced DateRageFilter preset with custom calculation\n */\nexport interface DateRangePresetCustom {\n type: 'custom';\n /** translation key for label */\n label: TranslatableString;\n /** calculation custom calculation function */\n calculate: (self: DateRangePresetCustom, currentRange: DateRangeFilter) => DateRangeFilter;\n /** Whether this should show only when time support is enabled */\n timeOnly?: boolean;\n}\n\nexport type DateRangePreset = DateRangePresetOffset | DateRangePresetCustom;\n\nexport interface DateRangeFilter {\n point1: Date | 'now';\n point2: number | Date;\n range?: 'before' | 'after' | 'within';\n}\n\nexport interface ResolvedDateRange {\n start: Date;\n end: Date;\n valid: boolean;\n}\n\nexport const ONE_MINUTE = 60 * 1000;\nexport const ONE_DAY = ONE_MINUTE * 60 * 24;\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n model,\n OnChanges,\n signal,\n SimpleChanges\n} from '@angular/core';\nimport { SiNumberInputComponent } from '@siemens/element-ng/number-input';\nimport {\n SelectOption,\n SiSelectComponent,\n SiSelectSimpleOptionsDirective,\n SiSelectSingleValueDirective\n} from '@siemens/element-ng/select';\nimport { t } from '@siemens/element-translate-ng/translate';\n\nimport { ONE_DAY, ONE_MINUTE } from './si-date-range-filter.types';\n\ninterface OffsetOption extends SelectOption<string> {\n offset: number;\n}\n\n@Component({\n selector: 'si-relative-date',\n imports: [\n SiNumberInputComponent,\n SiSelectComponent,\n SiSelectSingleValueDirective,\n SiSelectSimpleOptionsDirective\n ],\n templateUrl: './si-relative-date.component.html',\n styleUrl: './si-relative-date.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SiRelativeDateComponent implements OnChanges {\n /** @defaultValue 0 */\n readonly value = model(0);\n /** @defaultValue false */\n readonly enableTimeSelection = input(false, { transform: booleanAttribute });\n readonly valueLabel = input.required<string>();\n readonly unitLabel = input.required<string>();\n\n protected readonly offset = signal(0);\n protected readonly unit = signal('days');\n private readonly fullOffsetList: OffsetOption[] = [\n {\n type: 'option',\n value: 'minutes',\n label: t(() => $localize`:@@SI_DATE_RANGE_FILTER.MINUTES:Minutes`),\n offset: ONE_MINUTE\n },\n {\n type: 'option',\n value: 'hours',\n label: t(() => $localize`:@@SI_DATE_RANGE_FILTER.HOURS:Hours`),\n offset: 60 * ONE_MINUTE\n },\n {\n type: 'option',\n value: 'days',\n label: t(() => $localize`:@@SI_DATE_RANGE_FILTER.DAYS:Days`),\n offset: ONE_DAY\n },\n {\n type: 'option',\n value: 'weeks',\n label: t(() => $localize`:@@SI_DATE_RANGE_FILTER.WEEKS:Weeks`),\n offset: 7 * ONE_DAY\n },\n {\n type: 'option',\n value: 'months',\n label: t(() => $localize`:@@SI_DATE_RANGE_FILTER.MONTHS:Months`),\n offset: 30 * ONE_DAY\n },\n {\n type: 'option',\n value: 'years',\n label: t(() => $localize`:@@SI_DATE_RANGE_FILTER.YEARS:Years`),\n offset: 365 * ONE_DAY\n }\n ];\n\n protected readonly offsetList = computed(() =>\n this.enableTimeSelection()\n ? this.fullOffsetList\n : this.fullOffsetList.filter(item => item.offset >= ONE_DAY)\n );\n\n ngOnChanges(changes: SimpleChanges<this>): void {\n if (changes.value) {\n this.calculateOffset();\n }\n }\n\n private calculateOffset(): void {\n const offsetList = this.offsetList();\n let unit = '';\n if (offsetList.length) {\n this.offset.set(0);\n unit = offsetList[0].value;\n }\n\n for (let i = offsetList.length - 1; i >= 0; i--) {\n const item = offsetList[i];\n const raw = this.value() / item.offset;\n const rounded = Math.round(raw);\n if (rounded > 0 && Math.abs(raw - rounded) < 0.001) {\n this.offset.set(rounded);\n unit = item.value;\n break;\n }\n }\n\n this.changeUnit(unit);\n }\n\n protected updateValue(offset: number): void {\n this.offset.set(offset);\n const item = this.offsetList().find(x => x.value === this.unit())!;\n const nextValue = offset * item.offset;\n this.value.set(nextValue);\n }\n\n protected changeUnit(newUnit: string): void {\n this.unit.set(newUnit);\n const item = this.offsetList().find(x => x.value === this.unit())!;\n const roundedOffset = Math.max(1, Math.round(this.value() / item.offset));\n this.offset.set(roundedOffset);\n this.value.set(roundedOffset * item.offset);\n }\n}\n","<si-number-input\n class=\"form-control mb-4\"\n [aria-label]=\"valueLabel()\"\n [value]=\"offset()\"\n (valueChange)=\"updateValue($event ?? 0)\"\n/>\n<si-select\n class=\"form-control\"\n min=\"0\"\n [ariaLabel]=\"unitLabel()\"\n [options]=\"offsetList()\"\n [value]=\"unit()\"\n (valueChange)=\"changeUnit($event)\"\n/>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { CdkTrapFocus } from '@angular/cdk/a11y';\nimport { MediaMatcher } from '@angular/cdk/layout';\nimport { CdkListbox, CdkOption } from '@angular/cdk/listbox';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { DatePipe, NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n model,\n OnChanges,\n output,\n Pipe,\n PipeTransform,\n signal,\n SimpleChanges\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { elementDown2 } from '@siemens/element-icons';\nimport {\n DatepickerConfig,\n DatepickerInputConfig,\n DateRange,\n isValid,\n SiCalendarButtonComponent,\n SiDatepickerComponent,\n SiDatepickerDirective\n} from '@siemens/element-ng/datepicker';\nimport { addIcons, SiIconComponent } from '@siemens/element-ng/icon';\nimport { BOOTSTRAP_BREAKPOINTS } from '@siemens/element-ng/resize-observer';\nimport { SiSearchBarComponent } from '@siemens/element-ng/search-bar';\nimport { SiTranslatePipe, t } from '@siemens/element-translate-ng/translate';\n\nimport { SiDateRangeCalculationService } from './si-date-range-calculation.service';\nimport {\n DateRangeFilter,\n DateRangePreset,\n ONE_DAY,\n ResolvedDateRange\n} from './si-date-range-filter.types';\nimport { SiRelativeDateComponent } from './si-relative-date.component';\n\n@Pipe({ name: 'presetMatchFilter', pure: true })\nexport class PresetMatchFilterPipe implements PipeTransform {\n transform(value: string, term: string): boolean {\n return !term ? true : value.toLowerCase().includes(term.toLowerCase());\n }\n}\n\n@Component({\n selector: 'si-date-range-filter',\n imports: [\n CdkOption,\n CdkListbox,\n CdkTrapFocus,\n DatePipe,\n FormsModule,\n NgTemplateOutlet,\n OverlayModule,\n PresetMatchFilterPipe,\n SiCalendarButtonComponent,\n SiDatepickerComponent,\n SiDatepickerDirective,\n SiIconComponent,\n SiRelativeDateComponent,\n SiSearchBarComponent,\n SiTranslatePipe\n ],\n templateUrl: './si-date-range-filter.component.html',\n styleUrl: './si-date-range-filter.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.mobile]': 'smallScreen'\n }\n})\nexport class SiDateRangeFilterComponent implements OnChanges {\n private readonly service = inject(SiDateRangeCalculationService);\n private readonly mediaMatcher = inject(MediaMatcher);\n protected readonly smallScreen = this.mediaMatcher.matchMedia(\n `(max-width: ${BOOTSTRAP_BREAKPOINTS.mdMinimum}px)`\n ).matches;\n\n /** The filter range object */\n readonly range = model.required<DateRangeFilter>();\n /** List of preset time ranges. When not present or empty, the preset section won't show */\n readonly presetList = input<DateRangePreset[]>();\n /**\n * Determines if there's a search field for the preset list\n *\n * @defaultValue true\n */\n readonly presetSearch = input(true, { transform: booleanAttribute });\n /**\n * Determines if time is selectable or only dates\n *\n * @defaultValue false\n */\n readonly enableTimeSelection = input(false, { transform: booleanAttribute });\n /**\n * Determines whether to show input fields or a date-range calendar in basic mode.\n * When time selection is enabled, this has no effect and input fields are always shown.\n *\n * @defaultValue 'calendar'\n */\n readonly basicMode = input<'input' | 'calendar'>('calendar');\n /**\n * Reverses the order of the from/to fields\n *\n * @defaultValue false\n */\n readonly reverseInputFields = input(false, { transform: booleanAttribute });\n\n /**\n * Determines whether to show the 'Apply' button\n *\n * @defaultValue false\n */\n readonly showApplyButton = input(false, { transform: booleanAttribute });\n /**\n * Hides the advanced mode if input allows\n *\n * @defaultValue false\n */\n readonly hideAdvancedMode = input(false, { transform: booleanAttribute });\n\n /**\n * label for the \"Reference point\" title\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_DATE_RANGE_FILTER.REF_POINT:Reference point`)\n * ```\n */\n readonly refLabel = input(t(() => $localize`:@@SI_DATE_RANGE_FILTER.REF_POINT:Reference point`));\n /**\n * label for the \"Reference point\" title\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_DATE_RANGE_FILTER.FROM:From`)\n * ```\n */\n readonly fromLabel = input(t(() => $localize`:@@SI_DATE_RANGE_FILTER.FROM:From`));\n /**\n * label for the \"Reference point\" title\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_DATE_RANGE_FILTER.TO:To`)\n * ```\n */\n readonly toLabel = input(t(() => $localize`:@@SI_DATE_RANGE_FILTER.TO:To`));\n /**\n * label for the \"Range\" title\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_DATE_RANGE_FILTER.RANGE:Range`)\n * ```\n */\n readonly rangeLabel = input(t(() => $localize`:@@SI_DATE_RANGE_FILTER.RANGE:Range`));\n /**\n * label for the \"Today\" checkbox\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_DATE_RANGE_FILTER.TODAY:Today`)\n * ```\n */\n readonly todayLabel = input(t(() => $localize`:@@SI_DATE_RANGE_FILTER.TODAY:Today`));\n /**\n * label for the \"Now\" checkbox\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_DATE_RANGE_FILTER.NOW:Now`)\n * ```\n */\n readonly nowLabel = input(t(() => $localize`:@@SI_DATE_RANGE_FILTER.NOW:Now`));\n /**\n * label for \"Date\" field / radio button\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_DATE_RANGE_FILTER.DATE:Date`)\n * ```\n */\n readonly dateLabel = input(t(() => $localize`:@@SI_DATE_RANGE_FILTER.DATE:Date`));\n /**\n * label for the \"Preview\" title\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_DATE_RANGE_FILTER.PREVIEW:Preview`)\n * ```\n */\n readonly previewLabel = input(t(() => $localize`:@@SI_DATE_RANGE_FILTER.PREVIEW:Preview`));\n /**\n * Placeholder for date fields\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_DATE_RANGE_FILTER.DATE_PLACEHOLDER:Select date`)\n * ```\n */\n readonly datePlaceholder = input(\n t(() => $localize`:@@SI_DATE_RANGE_FILTER.DATE_PLACEHOLDER:Select date`)\n );\n /**\n * label for the \"Before\" toggle\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_DATE_RANGE_FILTER.BEFORE:Before`)\n * ```\n */\n readonly beforeLabel = input(t(() => $localize`:@@SI_DATE_RANGE_FILTER.BEFORE:Before`));\n /**\n * label for the \"After\" toggle\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_DATE_RANGE_FILTER.AFTER:After`)\n * ```\n */\n readonly afterLabel = input(t(() => $localize`:@@SI_DATE_RANGE_FILTER.AFTER:After`));\n /**\n * label for the \"Within\" toggle\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_DATE_RANGE_FILTER.WITHIN:Within`)\n * ```\n */\n readonly withinLabel = input(t(() => $localize`:@@SI_DATE_RANGE_FILTER.WITHIN:Within`));\n /**\n * label for the \"value\" number input\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_DATE_RANGE_FILTER.VALUE:Value`)\n * ```\n */\n readonly valueLabel = input(t(() => $localize`:@@SI_DATE_RANGE_FILTER.VALUE:Value`));\n /**\n * label for the \"Unit\" select\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_DATE_RANGE_FILTER.UNIT:Unit`)\n * ```\n */\n readonly unitLabel = input(t(() => $localize`:@@SI_DATE_RANGE_FILTER.UNIT:Unit`));\n /**\n * label for the \"search\" input\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_DATE_RANGE_FILTER.SEARCH:Search`)\n * ```\n */\n readonly searchLabel = input(t(() => $localize`:@@SI_DATE_RANGE_FILTER.SEARCH:Search`));\n /**\n * label for the \"search\" input\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_DATE_RANGE_FILTER.PRESETS:Presets`)\n * ```\n */\n readonly presetLabel = input(t(() => $localize`:@@SI_DATE_RANGE_FILTER.PRESETS:Presets`));\n /**\n * label for the \"advanced\" switch\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_DATE_RANGE_FILTER.ADVANCED:Advanced`)\n * ```\n */\n readonly advancedLabel = input(t(() => $localize`:@@SI_DATE_RANGE_FILTER.ADVANCED:Advanced`));\n /**\n * label for the \"apply\" switch\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_DATE_RANGE_FILTER.APPLY:Apply`)\n * ```\n */\n readonly applyLabel = input(t(() => $localize`:@@SI_DATE_RANGE_FILTER.APPLY:Apply`));\n /**\n * label for the \"select end date\" in preview\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_DATE_RANGE_FILTER.SELECT_RANGE_END:Select end date`)\n * ```\n */\n readonly rangeEndDateMissingLabel = input(\n t(() => $localize`:@@SI_DATE_RANGE_FILTER.SELECT_RANGE_END:Select end date`)\n );\n\n /** Event fired when the apply button has been clicked */\n readonly applyClicked = output<void>();\n\n /** Base configuration on how the dates should be displayed, parts of it may be overwritten internally. */\n readonly datepickerConfig = input<DatepickerInputConfig>();\n\n protected readonly icons = addIcons({ elementDown2 });\n protected readonly advancedMode = signal(false);\n protected readonly dateRange = signal<DateRange>({ start: undefined, end: undefined });\n\n protected readonly point1Now = signal(true);\n protected readonly point2Mode = signal<'duration' | 'date'>('duration');\n\n protected readonly point1date = signal(this.getDateNow());\n protected readonly point2date = signal(this.getDateNow());\n protected readonly point2offset = signal(0);\n protected readonly point2range = signal<'before' | 'after' | 'within'>('before');\n protected readonly calculatedRange = computed<ResolvedDateRange>(() =>\n this.resolve(this.range())\n );\n protected readonly pipeFormat = computed<string>(() =>\n this.enableTimeSelection()\n ? (this.datepickerConfig()?.dateTimeFormat ?? 'short')\n : (this.datepickerConfig()?.dateFormat ?? 'shortDate')\n );\n\n protected readonly datepickerConfigInternal = computed<DatepickerConfig>(() => ({\n ...(this.datepickerConfig() ?? {}),\n enableDateRange: false,\n showTime: this.enableTimeSelection(),\n mandatoryTime: this.enableTimeSelection()\n }));\n\n protected readonly dateRangeConfig = computed<DatepickerConfig>(() => ({\n ...(this.datepickerConfig() ?? {}),\n enableDateRange: true\n }));\n\n protected readonly filteredPresetList = computed<DateRangePreset[]>(() => {\n const timeFilter = (item: DateRangePreset): boolean => {\n const timeOnly = item.type === 'custom' ? item.timeOnly : item.offset < ONE_DAY;\n return this.enableTimeSelection() || !timeOnly;\n };\n return (this.presetList() ?? []).filter(timeFilter);\n });\n\n protected readonly focusedDate = computed(() => {\n const range = this.dateRange();\n const date = range.end ?? range.start;\n return isValid(date) ? date : undefined;\n });\n protected readonly presetFilter = signal('');\n protected readonly presetOpen = signal(false);\n protected readonly inputMode = computed(\n () => this.basicMode() === 'input' || this.enableTimeSelection()\n );\n\n ngOnChanges(changes: SimpleChanges<this>): void {\n if (\n changes.enableTimeSelection ||\n changes.datepickerConfig ||\n (changes.range && this.rangeChanged(changes.range.previousValue, changes.range.currentValue))\n ) {\n this.updateFromRange(this.range());\n }\n if (\n (changes.basicMode || changes.enableTimeSelection) &&\n this.inputMode() &&\n !this.advancedMode()\n ) {\n this.point2Mode.set('date');\n this.point2Changed();\n }\n }\n\n private getDateNow(): Date {\n const now = new Date();\n if (!this.enableTimeSelection()) {\n this.service.removeTime(now);\n }\n return now;\n }\n\n private rangeChanged(oldRange: DateRangeFilter | undefined, newRange: DateRangeFilter): boolean {\n return (\n !oldRange || // eslint-disable-line @typescript-eslint/prefer-optional-chain\n oldRange.point1 !== newRange.point1 ||\n oldRange.point2 !== newRange.point2 ||\n oldRange.range !== newRange.range\n );\n }\n\n private updateFromRange(rangeVal: DateRangeFilter): void {\n this.point1Now.set(rangeVal.point1 === 'now');\n this.point1date.set(rangeVal.point1 === 'now' ? this.getDateNow() : rangeVal.point1);\n if (rangeVal.point2) {\n this.point2Mode.set(rangeVal.point2 instanceof Date ? 'date' : 'duration');\n this.point2date.set(rangeVal.point2 instanceof Date ? rangeVal.point2 : this.getDateNow());\n this.point2range.set(rangeVal.range ?? 'before');\n this.point2offset.set(\n rangeVal.point2 instanceof Date\n ? Math.abs(Math.round(this.point1date().getTime() - rangeVal.point2.getTime()))\n : rangeVal.point2\n );\n }\n if ((this.point1Now() && this.basicMode() !== 'input') || this.point2Mode() !== 'date') {\n this.advancedMode.set(true);\n } else {\n this.advancedMode.set(false);\n this.updateDateRange();\n }\n }\n\n private resolve(range: DateRangeFilter, skipNormalization?: boolean): ResolvedDateRange {\n return this.service.resolveDateRangeFilter(range, {\n withTime: this.enableTimeSelection(),\n skipNormalization\n });\n }\n\n protected updateDateRange(range = this.range()): void {\n const calculatedRange = this.resolve(range);\n this.dateRange.set({ start: calculatedRange.start, end: calculatedRange.end });\n }\n\n protected updateOnModeChange(): void {\n if (this.advancedMode()) {\n const calculatedRange = this.resolve(this.range());\n this.point1date.set(calculatedRange.start);\n this.point2Mode.set('duration');\n this.point2range.set('after');\n this.point2offset.set(\n Math.abs(calculatedRange.end.getTime() - calculatedRange.start.getTime())\n );\n this.updateRange();\n } else {\n this.updateSimpleMode(this.range());\n }\n }\n\n private updateSimpleMode(newRange: DateRangeFilter): void {\n if (this.inputMode()) {\n // input mode supports `now`, so point1 needs to remain unchanged\n if (newRange.point1 === 'now') {\n this.point1Now.set(true);\n this.point1date.set(this.getDateNow());\n } else {\n this.point1Now.set(false);\n this.point1date.set(newRange.point1);\n }\n const calculatedRange = this.resolve(newRange, true);\n this.point2Mode.set('date');\n this.point2date.set(calculatedRange.end);\n this.updateRange();\n } else {\n this.point1Now.set(false);\n this.updateDateRange(newRange);\n this.updateFromDateRange();\n }\n }\n\n private updateRange(): void {\n const point2isDate = this.point2Mode() === 'date';\n const newRange: DateRangeFilter = {\n point1: this.point1Now() ? 'now' : this.point1date(),\n point2: point2isDate ? this.point2date() : this.point2offset(),\n range: point2isDate ? undefined : this.point2range()\n };\n this.range.update(old => ({ ...old, ...newRange }));\n }\n\n protected updateFromDateRange(dateRange?: DateRange): void {\n if (dateRange) {\n this.dateRange.set(dateRange);\n }\n const range = this.dateRange();\n const startDate = range.start ?? this.getDateNow();\n const endDate = range.end ?? this.getDateNow();\n this.point1date.set(startDate);\n this.point2date.set(endDate);\n this.point2Mode.set('date');\n this.point2offset.set(0);\n\n // only emit if range start and end are selected\n if (range.start && range.end) {\n this.updateRange();\n }\n }\n\n protected point1Changed(): void {\n if (this.point1Now()) {\n this.point1date.set(this.getDateNow());\n }\n this.updateRange();\n }\n\n protected point2Changed(): void {\n if (this.point2Mode() === 'date') {\n if (!(this.range().point2 instanceof Date)) {\n const calculatedRange = this.resolve(this.range());\n if (calculatedRange.valid) {\n this.point2date.set(\n this.point1date() < calculatedRange.end ? calculatedRange.start : calculatedRange.end\n );\n }\n }\n } else {\n if (this.range().point2 instanceof Date) {\n const calculatedRange = this.resolve(this.range());\n this.point2offset.set(\n Math.round(calculatedRange.end.getTime() - calculatedRange.start.getTime())\n );\n }\n }\n this.updateRange();\n }\n\n protected selectPresetItem(event: Event, item: DateRangePreset): void {\n const newRange: DateRangeFilter =\n item.type === 'custom'\n ? item.calculate(item, this.range())\n : { point1: 'now', range: 'before', point2: item.offset };\n if (this.advancedMode()) {\n this.updateFromRange(newRange);\n this.updateRange();\n } else {\n this.updateSimpleMode(newRange);\n }\n if (this.smallScreen) {\n // Prevent re-opening the dropdown when pressing enter on the selected item\n event.preventDefault();\n this.presetOpen.set(false);\n }\n }\n}\n","@if (presetList()?.length) {\n @if (this.smallScreen) {\n <div class=\"presets d-flex\">\n <button\n #presetTrigger=\"cdkOverlayOrigin\"\n type=\"button\"\n class=\"btn btn-tertiary dropdown-toggle m-5 flex-grow-1\"\n cdkOverlayOrigin\n [class.show]=\"presetOpen()\"\n [attr.aria-expanded]=\"presetOpen()\"\n (click)=\"presetOpen.set(true)\"\n >\n {{ presetLabel() | translate }}\n <si-icon class=\"dropdown-caret icon\" [icon]=\"icons.elementDown2\" />\n </button>\n <ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n cdkConnectedOverlayHasBackdrop\n [cdkConnectedOverlayOpen]=\"presetOpen()\"\n [cdkConnectedOverlayOrigin]=\"presetTrigger\"\n [cdkConnectedOverlayMinWidth]=\"\n presetTrigger.elementRef.nativeElement?.getBoundingClientRect().width\n \"\n (backdropClick)=\"presetOpen.set(false)\"\n (detach)=\"presetOpen.set(false)\"\n >\n <div\n cdkTrapFocus\n class=\"preset-select mobile elevation-2 rounded-2 w-100\"\n cdkTrapFocusAutoCapture\n >\n <ng-container *ngTemplateOutlet=\"presets\" />\n </div>\n </ng-template>\n </div>\n } @else {\n <div class=\"preset-select border-end\">\n <ng-container *ngTemplateOutlet=\"presets\" />\n </div>\n }\n}\n<form class=\"main-form d-flex flex-column flex-fill\">\n @if (advancedMode() || inputMode()) {\n <div class=\"advanced-form px-6 py-4\">\n @if (!reverseInputFields()) {\n <ng-container *ngTemplateOutlet=\"formReferencePoint\" />\n }\n\n <div class=\"mb-8\">\n @if (point2Mode() === 'date') {\n <ng-container *ngTemplateOutlet=\"formPoint2Date\" />\n } @else if (point2Mode() === 'duration') {\n <ng-container *ngTemplateOutlet=\"formPoint2Duration\" />\n }\n </div>\n\n @if (reverseInputFields()) {\n <ng-container *ngTemplateOutlet=\"formReferencePoint\" />\n }\n </div>\n } @else {\n <si-datepicker\n [config]=\"dateRangeConfig()\"\n [focusedDate]=\"focusedDate()\"\n [dateRange]=\"dateRange()\"\n (dateRangeChange)=\"updateFromDateRange($event)\"\n />\n }\n\n @if (advancedMode() || !hideAdvancedMode()) {\n <label class=\"form-switch form-check ms-6\">\n <input\n type=\"checkbox\"\n class=\"form-check-input\"\n name=\"advancedMode\"\n role=\"switch\"\n [(ngModel)]=\"advancedMode\"\n (ngModelChange)=\"updateOnModeChange()\"\n />\n <span class=\"form-check-label\">{{ advancedLabel() | translate }}</span>\n </label>\n }\n\n <div class=\"mt-4 mb-6 ms-6\">\n {{ previewLabel() | translate }}:\n <span class=\"preview\">\n @if (advancedMode()) {\n @let calculated = calculatedRange();\n @if (calculated.valid) {\n {{ calculated.start | date: pipeFormat() }} -\n {{ calculated.end | date: pipeFormat() }}\n } @else {\n ?\n }\n } @else {\n @let range = dateRange();\n {{ range.start | date: pipeFormat() }} -\n @if (range.end) {\n {{ range.end | date: pipeFormat() }}\n } @else {\n {{ rangeEndDateMissingLabel() | translate }}\n }\n }\n </span>\n </div>\n</form>\n\n@if (showApplyButton()) {\n <div class=\"footer border-top px-6 py-5 d-flex\">\n <button type=\"button\" class=\"btn btn-primary ms-auto\" (click)=\"applyClicked.emit()\">\n {{ applyLabel() | translate }}\n </button>\n </div>\n}\n<ng-template #presets>\n @if (presetSearch()) {\n <si-search-bar\n colorVariant=\"base-0\"\n class=\"mx-6 mt-5 mb-6\"\n [placeholder]=\"searchLabel() | translate\"\n [showIcon]=\"true\"\n [(ngModel)]=\"presetFilter\"\n />\n }\n <ul class=\"overflow-auto\" cdkListbox [attr.aria-label]=\"presetLabel() | translate\">\n @for (item of filteredPresetList(); track $index) {\n @if (item.label | translate | presetMatchFilter: presetFilter()) {\n <li\n class=\"preset-item focus-inside px-8 py-5\"\n [cdkOption]=\"item.label\"\n (click)=\"selectPresetItem($event, item)\"\n (keydown.enter)=\"selectPresetItem($event, item)\"\n >\n {{ item.label | translate }}\n </li>\n }\n }\n </ul>\n</ng-template>\n<ng-template #formReferencePoint>\n <div class=\"mb-8\">\n <label class=\"d-block\">\n <span class=\"form-label\">{{\n (advancedMode() ? refLabel() : reverseInputFields() ? toLabel() : fromLabel()) | translate\n }}</span>\n <si-calendar-button class=\"w-100\">\n <input\n type=\"text\"\n class=\"form-control\"\n name=\"point1\"\n required\n siDatepicker\n [siDatepickerConfig]=\"datepickerConfigInternal()\"\n [disabled]=\"point1Now()\"\n [placeholder]=\"datePlaceholder() | translate\"\n [(ngModel)]=\"point1date\"\n (ngModelChange)=\"point1Changed()\"\n />\n </si-calendar-button>\n </label>\n <label class=\"ms-4 mt-4 text-nowrap form-check\">\n <input\n type=\"checkbox\"\n class=\"form-check-input\"\n name=\"point1now\"\n [(ngModel)]=\"point1Now\"\n (ngModelChange)=\"point1Changed()\"\n />\n <span class=\"form-check-label\">{{\n (enableTimeSelection() ? nowLabel() : todayLabel()) | translate\n }}</span>\n </label>\n </div>\n</ng-template>\n\n<ng-template #formPoint2Date>\n <label class=\"d-block mb-4 bp-9\">\n <span class=\"form-label\">{{\n (reverseInputFields() ? fromLabel() : toLabel()) | translate\n }}</span>\n <si-calendar-button class=\"w-100\">\n <input\n type=\"text\"\n class=\"form-control\"\n name=\"point2\"\n required\n siDatepicker\n [siDatepickerConfig]=\"datepickerConfigInternal()\"\n [attr.aria-label]=\"dateLabel() | translate\"\n [placeholder]=\"datePlaceholder() | translate\"\n [(ngModel)]=\"point2date\"\n (ngModelChange)=\"point2Changed()\"\n />\n </si-calendar-button>\n </label>\n</ng-template>\n\n<ng-template #formPoint2Duration>\n <div>\n <span class=\"form-label\">{{ rangeLabel() | translate }}</span>\n <si-relative-date\n class=\"d-block mb-4\"\n [unitLabel]=\"unitLabel() | translate\"\n [valueLabel]=\"valueLabel() | translate\"\n [enableTimeSelection]=\"enableTimeSelection()\"\n [(value)]=\"point2offset\"\n (valueChange)=\"point2Changed()\"\n />\n <div class=\"range-type ms-4\">\n <label class=\"form-check form-check-inline\">\n <input\n type=\"radio\"\n class=\"form-check-input\"\n value=\"before\"\n name=\"point2range\"\n [(ngModel)]=\"point2range\"\n (ngModelChange)=\"point2Changed()\"\n />\n <span class=\"form-check-label\">\n {{ beforeLabel() | translate }}\n </span>\n </label>\n <label class=\"form-check form-check-inline\">\n <input\n type=\"radio\"\n class=\"form-check-input\"\n value=\"after\"\n name=\"point2range\"\n [(ngModel)]=\"point2range\"\n (ngModelChange)=\"point2Changed()\"\n />\n <span class=\"form-check-label\">\n {{ afterLabel() | translate }}\n </span>\n </label>\n <label class=\"form-check form-check-inline\">\n <input\n type=\"radio\"\n class=\"form-check-input\"\n value=\"within\"\n name=\"point2range\"\n [(ngModel)]=\"point2range\"\n (ngModelChange)=\"point2Changed()\"\n />\n <span class=\"form-check-label\">\n {{ withinLabel() | translate }}\n </span>\n </label>\n </div>\n </div>\n</ng-template>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiDateRangeFilterComponent } from './si-date-range-filter.component';\n\n@NgModule({\n imports: [SiDateRangeFilterComponent],\n exports: [SiDateRangeFilterComponent]\n})\nexport class SiDateRangeFilterModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-date-range-filter.component';\nexport * from './si-date-range-filter.module';\nexport * from './si-date-range-filter.types';\nexport * from './si-date-range-calculation.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;;;AAGG;AAiBH;;AAEG;MAEU,6BAA6B,CAAA;AACxC;;;;;AAKG;IACH,sBAAsB,CACpB,MAAuB,EACvB,OAAiC,EAAA;QAEjC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,KAAK,KAAK,GAAG,IAAI,IAAI,EAAE,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AAC1E,QAAA,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,IAAI;QAE1C,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QACtB;AAEA,QAAA,IAAI,MAAM,CAAC,MAAM,YAAY,IAAI,EAAE;YACjC,MAAM,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAClF,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,CAAC;QAChE;AAEA,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM;AAE5B,QAAA,QAAQ,MAAM,CAAC,KAAK;AAClB,YAAA,KAAK,SAAS;AACd,YAAA,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,iBAAiB,CAAC;AAC3F,YAAA,KAAK,OAAO;AACV,gBAAA,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,iBAAiB,CAAC;AAC1F,YAAA,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,SAAS,CACnB,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EACjC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,EAChC,OAAO,EAAE,iBAAiB,CAC3B;;IAEP;IAEQ,cAAc,CAAC,IAAU,EAAE,MAAc,EAAA;QAC/C,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC;IAC1C;AAEQ,IAAA,SAAS,CAAC,KAAW,EAAE,KAAW,EAAE,IAAc,EAAA;AACxD,QAAA,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;AAChE,QAAA,OAAO;cACH,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK;cACjC,KAAK,GAAG;kBACN,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK;AACnC,kBAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE;IAC3C;AAEA;;AAEG;AACH,IAAA,UAAU,CAAC,IAAU,EAAA;AACnB,QAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AAChB,QAAA,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AAClB,QAAA,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AAClB,QAAA,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;AACvB,QAAA,OAAO,IAAI;IACb;uGA9DW,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAA7B,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,6BAA6B,cADhB,MAAM,EAAA,CAAA;;2FACnB,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBADzC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACqB3B,MAAM,UAAU,GAAG,EAAE,GAAG;MAClB,OAAO,GAAG,UAAU,GAAG,EAAE,GAAG;;AC7CzC;;;AAGG;MAuCU,uBAAuB,CAAA;;AAEzB,IAAA,KAAK,GAAG,KAAK,CAAC,CAAC,iDAAC;;IAEhB,mBAAmB,GAAG,KAAK,CAAC,KAAK,gEAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACnE,IAAA,UAAU,GAAG,KAAK,CAAC,QAAQ,qDAAU;AACrC,IAAA,SAAS,GAAG,KAAK,CAAC,QAAQ,oDAAU;AAE1B,IAAA,MAAM,GAAG,MAAM,CAAC,CAAC,kDAAC;AAClB,IAAA,IAAI,GAAG,MAAM,CAAC,MAAM,gDAAC;AACvB,IAAA,cAAc,GAAmB;AAChD,QAAA;AACE,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,CAAC,CAAC,MAAM,SAAS,CAAA,CAAA,uCAAA,CAAyC,CAAC;AAClE,YAAA,MAAM,EAAE;AACT,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,KAAK,EAAE,OAAO;YACd,KAAK,EAAE,CAAC,CAAC,MAAM,SAAS,CAAA,CAAA,mCAAA,CAAqC,CAAC;YAC9D,MAAM,EAAE,EAAE,GAAG;AACd,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,KAAK,EAAE,MAAM;YACb,KAAK,EAAE,CAAC,CAAC,MAAM,SAAS,CAAA,CAAA,iCAAA,CAAmC,CAAC;AAC5D,YAAA,MAAM,EAAE;AACT,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,KAAK,EAAE,OAAO;YACd,KAAK,EAAE,CAAC,CAAC,MAAM,SAAS,CAAA,CAAA,mCAAA,CAAqC,CAAC;YAC9D,MAAM,EAAE,CAAC,GAAG;AACb,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,KAAK,EAAE,QAAQ;YACf,KAAK,EAAE,CAAC,CAAC,MAAM,SAAS,CAAA,CAAA,qCAAA,CAAuC,CAAC;YAChE,MAAM,EAAE,EAAE,GAAG;AACd,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,KAAK,EAAE,OAAO;YACd,KAAK,EAAE,CAAC,CAAC,MAAM,SAAS,CAAA,CAAA,mCAAA,CAAqC,CAAC;YAC9D,MAAM,EAAE,GAAG,GAAG;AACf;KACF;IAEkB,UAAU,GAAG,QAAQ,CAAC,MACvC,IAAI,CAAC,mBAAmB;UACpB,IAAI,CAAC;AACP,UAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,sDAC/D;AAED,IAAA,WAAW,CAAC,OAA4B,EAAA;AACtC,QAAA,IAAI,OAAO,CAAC,KAAK,EAAE;YACjB,IAAI,CAAC,eAAe,EAAE;QACxB;IACF;IAEQ,eAAe,GAAA;AACrB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;QACpC,IAAI,IAAI,GAAG,EAAE;AACb,QAAA,IAAI,UAAU,CAAC,MAAM,EAAE;AACrB,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAClB,YAAA,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK;QAC5B;AAEA,QAAA,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AAC/C,YAAA,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC;YAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,MAAM;YACtC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAC/B,YAAA,IAAI,OAAO,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,KAAK,EAAE;AAClD,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;AACxB,gBAAA,IAAI,GAAG,IAAI,CAAC,KAAK;gBACjB;YACF;QACF;AAEA,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;IACvB;AAEU,IAAA,WAAW,CAAC,MAAc,EAAA;AAClC,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,IAAI,EAAE,CAAE;AAClE,QAAA,MAAM,SAAS,GAAG,MAAM,GAAG,IAAI,CAAC,MAAM;AACtC,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;IAC3B;AAEU,IAAA,UAAU,CAAC,OAAe,EAAA;AAClC,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,IAAI,EAAE,CAAE;QAClE,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;AACzE,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC;IAC7C;uGAhGW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1CpC,gVAcA,EAAA,MAAA,EAAA,CAAA,oCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDmBI,sBAAsB,wOACtB,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,WAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,4BAA4B,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC5B,8BAA8B,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAMrB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAZnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAAA,OAAA,EACnB;wBACP,sBAAsB;wBACtB,iBAAiB;wBACjB,4BAA4B;wBAC5B;qBACD,EAAA,eAAA,EAGgB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,gVAAA,EAAA,MAAA,EAAA,CAAA,oCAAA,CAAA,EAAA;;;AExCjD;;;AAGG;MA+CU,qBAAqB,CAAA;IAChC,SAAS,CAAC,KAAa,EAAE,IAAY,EAAA;QACnC,OAAO,CAAC,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IACxE;uGAHW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;qGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,mBAAA,EAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,IAAI,EAAE;;MAiClC,0BAA0B,CAAA;AACpB,IAAA,OAAO,GAAG,MAAM,CAAC,6BAA6B,CAAC;AAC/C,IAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AACjC,IAAA,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAC3D,CAAA,YAAA,EAAe,qBAAqB,CAAC,SAAS,CAAA,GAAA,CAAK,CACpD,CAAC,OAAO;;AAGA,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAmB;;IAEzC,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAqB;AAChD;;;;AAIG;IACM,YAAY,GAAG,KAAK,CAAC,IAAI,yDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACpE;;;;AAIG;IACM,mBAAmB,GAAG,KAAK,CAAC,KAAK,gEAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAC5E;;;;;AAKG;AACM,IAAA,SAAS,GAAG,KAAK,CAAuB,UAAU,qDAAC;AAC5D;;;;AAIG;IACM,kBAAkB,GAAG,KAAK,CAAC,KAAK,+DAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAE3E;;;;AAIG;IACM,eAAe,GAAG,KAAK,CAAC,KAAK,4DAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACxE;;;;AAIG;IACM,gBAAgB,GAAG,KAAK,CAAC,KAAK,6DAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAEzE;;;;;;;AAOG;AACM,IAAA,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,SAAS,CAAA,CAAA,iDAAA,CAAmD,CAAC,oDAAC;AAChG;;;;;;;AAOG;AACM,IAAA,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,SAAS,CAAA,CAAA,iCAAA,CAAmC,CAAC,qDAAC;AACjF;;;;;;;AAOG;AACM,IAAA,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,SAAS,CAAA,CAAA,6BAAA,CAA+B,CAAC,mDAAC;AAC3E;;;;;;;AAOG;AACM,IAAA,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,SAAS,CAAA,CAAA,mCAAA,CAAqC,CAAC,sDAAC;AACpF;;;;;;;AAOG;AACM,IAAA,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,SAAS,CAAA,CAAA,mCAAA,CAAqC,CAAC,sDAAC;AACpF;;;;;;;AAOG;AACM,IAAA,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,SAAS,CAAA,CAAA,+BAAA,CAAiC,CAAC,oDAAC;AAC9E;;;;;;;AAOG;AACM,IAAA,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,SAAS,CAAA,CAAA,iCAAA,CAAmC,CAAC,qDAAC;AACjF;;;;;;;AAOG;AACM,IAAA,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,SAAS,CAAA,CAAA,uCAAA,CAAyC,CAAC,wDAAC;AAC1F;;;;;;;AAOG;AACM,IAAA,eAAe,GAAG,KAAK,CAC9B,CAAC,CAAC,MAAM,SAAS,CAAA,CAAA,oDAAA,CAAsD,CAAC,2DACzE;AACD;;;;;;;AAOG;AACM,IAAA,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,SAAS,CAAA,CAAA,qCAAA,CAAuC,CAAC,uDAAC;AACvF;;;;;;;AAOG;AACM,IAAA,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,SAAS,CAAA,CAAA,mCAAA,CAAqC,CAAC,sDAAC;AACpF;;;;;;;AAOG;AACM,IAAA,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,SAAS,CAAA,CAAA,qCAAA,CAAuC,CAAC,uDAAC;AACvF;;;;;;;AAOG;AACM,IAAA,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,SAAS,CAAA,CAAA,mCAAA,CAAqC,CAAC,sDAAC;AACpF;;;;;;;AAOG;AACM,IAAA,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,SAAS,CAAA,CAAA,iCAAA,CAAmC,CAAC,qDAAC;AACjF;;;;;;;AAOG;AACM,IAAA,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,SAAS,CAAA,CAAA,qCAAA,CAAuC,CAAC,uDAAC;AACvF;;;;;;;AAOG;AACM,IAAA,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,SAAS,CAAA,CAAA,uCAAA,CAAyC,CAAC,uDAAC;AACzF;;;;;;;AAOG;AACM,IAAA,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,SAAS,CAAA,CAAA,yCAAA,CAA2C,CAAC,yDAAC;AAC7F;;;;;;;AAOG;AACM,IAAA,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,SAAS,CAAA,CAAA,mCAAA,CAAqC,CAAC,sDAAC;AACpF;;;;;;;AAOG;AACM,IAAA,wBAAwB,GAAG,KAAK,CACvC,CAAC,CAAC,MAAM,SAAS,CAAA,CAAA,wDAAA,CAA0D,CAAC,oEAC7E;;IAGQ,YAAY,GAAG,MAAM,EAAQ;;IAG7B,gBAAgB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAyB;AAEvC,IAAA,KAAK,GAAG,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;AAClC,IAAA,YAAY,GAAG,MAAM,CAAC,KAAK,wDAAC;AAC5B,IAAA,SAAS,GAAG,MAAM,CAAY,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,qDAAC;AAEnE,IAAA,SAAS,GAAG,MAAM,CAAC,IAAI,qDAAC;AACxB,IAAA,UAAU,GAAG,MAAM,CAAsB,UAAU,sDAAC;IAEpD,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,sDAAC;IACtC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,sDAAC;AACtC,IAAA,YAAY,GAAG,MAAM,CAAC,CAAC,wDAAC;AACxB,IAAA,WAAW,GAAG,MAAM,CAAgC,QAAQ,uDAAC;AAC7D,IAAA,eAAe,GAAG,QAAQ,CAAoB,MAC/D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,2DAC3B;IACkB,UAAU,GAAG,QAAQ,CAAS,MAC/C,IAAI,CAAC,mBAAmB;WACnB,IAAI,CAAC,gBAAgB,EAAE,EAAE,cAAc,IAAI,OAAO;AACrD,WAAG,IAAI,CAAC,gBAAgB,EAAE,EAAE,UAAU,IAAI,WAAW,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACzD;AAEkB,IAAA,wBAAwB,GAAG,QAAQ,CAAmB,OAAO;AAC9E,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,IAAI,EAAE,CAAC;AAClC,QAAA,eAAe,EAAE,KAAK;AACtB,QAAA,QAAQ,EAAE,IAAI,CAAC,mBAAmB,EAAE;AACpC,QAAA,aAAa,EAAE,IAAI,CAAC,mBAAmB;AACxC,KAAA,CAAC,oEAAC;AAEgB,IAAA,eAAe,GAAG,QAAQ,CAAmB,OAAO;AACrE,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,IAAI,EAAE,CAAC;AAClC,QAAA,eAAe,EAAE;AAClB,KAAA,CAAC,2DAAC;AAEgB,IAAA,kBAAkB,GAAG,QAAQ,CAAoB,MAAK;AACvE,QAAA,MAAM,UAAU,GAAG,CAAC,IAAqB,KAAa;YACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,KAAK,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,OAAO;AAC/E,YAAA,OAAO,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,QAAQ;AAChD,QAAA,CAAC;AACD,QAAA,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,MAAM,CAAC,UAAU,CAAC;AACrD,IAAA,CAAC,8DAAC;AAEiB,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AAC7C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE;QAC9B,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK;AACrC,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS;AACzC,IAAA,CAAC,uDAAC;AACiB,IAAA,YAAY,GAAG,MAAM,CAAC,EAAE,wDAAC;AACzB,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,sDAAC;AAC1B,IAAA,SAAS,GAAG,QAAQ,CACrC,MAAM,IAAI,CAAC,SAAS,EAAE,KAAK,OAAO,IAAI,IAAI,CAAC,mBAAmB,EAAE,qDACjE;AAED,IAAA,WAAW,CAAC,OAA4B,EAAA;QACtC,IACE,OAAO,CAAC,mBAAmB;AAC3B,YAAA,OAAO,CAAC,gBAAgB;aACvB,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAC7F;YACA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACpC;QACA,IACE,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,mBAAmB;YACjD,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,CAAC,IAAI,CAAC,YAAY,EAAE,EACpB;AACA,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC;YAC3B,IAAI,CAAC,aAAa,EAAE;QACtB;IACF;IAEQ,UAAU,GAAA;AAChB,QAAA,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE;AAC/B,YAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;QAC9B;AACA,QAAA,OAAO,GAAG;IACZ;IAEQ,YAAY,CAAC,QAAqC,EAAE,QAAyB,EAAA;AACnF,QAAA,QACE,CAAC,QAAQ;AACT,YAAA,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;AACnC,YAAA,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;AACnC,YAAA,QAAQ,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK;IAErC;AAEQ,IAAA,eAAe,CAAC,QAAyB,EAAA;QAC/C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,KAAK,CAAC;QAC7C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC;AACpF,QAAA,IAAI,QAAQ,CAAC,MAAM,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,YAAY,IAAI,GAAG,MAAM,GAAG,UAAU,CAAC;YAC1E,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,YAAY,IAAI,GAAG,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAC1F,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC;YAChD,IAAI,CAAC,YAAY,CAAC,GAAG,CACnB,QAAQ,CAAC,MAAM,YAAY;kBACvB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;AAC9E,kBAAE,QAAQ,CAAC,MAAM,CACpB;QACH;QACA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,OAAO,KAAK,IAAI,CAAC,UAAU,EAAE,KAAK,MAAM,EAAE;AACtF,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;QAC7B;aAAO;AACL,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;YAC5B,IAAI,CAAC,eAAe,EAAE;QACxB;IACF;IAEQ,OAAO,CAAC,KAAsB,EAAE,iBAA2B,EAAA;AACjE,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,KAAK,EAAE;AAChD,YAAA,QAAQ,EAAE,IAAI,CAAC,mBAAmB,EAAE;YACpC;AACD,SAAA,CAAC;IACJ;AAEU,IAAA,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,EAAA;QAC5C,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AAC3C,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,eAAe,CAAC,GAAG,EAAE,CAAC;IAChF;IAEU,kBAAkB,GAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;YACvB,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAClD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC;AAC1C,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC;AAC/B,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC;YAC7B,IAAI,CAAC,YAAY,CAAC,GAAG,CACnB,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,eAAe,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAC1E;YACD,IAAI,CAAC,WAAW,EAAE;QACpB;aAAO;YACL,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACrC;IACF;AAEQ,IAAA,gBAAgB,CAAC,QAAyB,EAAA;AAChD,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;;AAEpB,YAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,KAAK,EAAE;AAC7B,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;gBACxB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACxC;iBAAO;AACL,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;gBACzB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;YACtC;YACA,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC;AACpD,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC;YAC3B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC;YACxC,IAAI,CAAC,WAAW,EAAE;QACpB;aAAO;AACL,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,YAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;YAC9B,IAAI,CAAC,mBAAmB,EAAE;QAC5B;IACF;IAEQ,WAAW,GAAA;QACjB,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,MAAM;AACjD,QAAA,MAAM,QAAQ,GAAoB;AAChC,YAAA,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE;AACpD,YAAA,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE;AAC9D,YAAA,KAAK,EAAE,YAAY,GAAG,SAAS,GAAG,IAAI,CAAC,WAAW;SACnD;AACD,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,EAAE,GAAG,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC;IACrD;AAEU,IAAA,mBAAmB,CAAC,SAAqB,EAAA;QACjD,IAAI,SAAS,EAAE;AACb,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;QAC/B;AACA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE;QAC9B,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,EAAE;QAClD,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE;AAC9C,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC;AAC9B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC;AAC5B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC;AAC3B,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;;QAGxB,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC,WAAW,EAAE;QACpB;IACF;IAEU,aAAa,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACpB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACxC;QACA,IAAI,CAAC,WAAW,EAAE;IACpB;IAEU,aAAa,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,MAAM,EAAE;AAChC,YAAA,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,YAAY,IAAI,CAAC,EAAE;gBAC1C,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AAClD,gBAAA,IAAI,eAAe,CAAC,KAAK,EAAE;oBACzB,IAAI,CAAC,UAAU,CAAC,GAAG,CACjB,IAAI,CAAC,UAAU,EAAE,GAAG,eAAe,CAAC,GAAG,GAAG,eAAe,CAAC,KAAK,GAAG,eAAe,CAAC,GAAG,CACtF;gBACH;YACF;QACF;aAAO;YACL,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,YAAY,IAAI,EAAE;gBACvC,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBAClD,IAAI,CAAC,YAAY,CAAC,GAAG,CACnB,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,eAAe,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAC5E;YACH;QACF;QACA,IAAI,CAAC,WAAW,EAAE;IACpB;IAEU,gBAAgB,CAAC,KAAY,EAAE,IAAqB,EAAA;AAC5D,QAAA,MAAM,QAAQ,GACZ,IAAI,CAAC,IAAI,KAAK;cACV,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE;AACnC,cAAE,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;AAC7D,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;AACvB,YAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;YAC9B,IAAI,CAAC,WAAW,EAAE;QACpB;aAAO;AACL,YAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC;QACjC;AACA,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;;YAEpB,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;QAC5B;IACF;uGA3cW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA1B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,wBAAA,EAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,aAAA,EAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClFvC,q3PA4PA,EAAA,MAAA,EAAA,CAAA,yzBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDjMI,SAAS,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,WAAA,EAAA,yBAAA,EAAA,mBAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACT,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,+BAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,kCAAA,EAAA,oCAAA,CAAA,EAAA,OAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACV,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,yBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAEZ,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,8FAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,iBAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,yEAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,gBAAgB,mJAChB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,qEAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,EAAA,8BAAA,EAAA,qCAAA,EAAA,4BAAA,EAAA,4BAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,kCAAA,EAAA,+BAAA,EAAA,mCAAA,EAAA,mCAAA,EAAA,yBAAA,EAAA,iCAAA,EAAA,sCAAA,EAAA,gCAAA,EAAA,iCAAA,EAAA,uCAAA,EAAA,kCAAA,EAAA,yBAAA,EAAA,wCAAA,EAAA,+BAAA,EAAA,+BAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,4DAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEb,yBAAyB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,qBAAqB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,MAAA,EAAA,WAAA,EAAA,eAAA,EAAA,cAAA,EAAA,cAAA,EAAA,QAAA,EAAA,eAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,qBAAqB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,eAAe,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,uBAAuB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,qBAAA,EAAA,YAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,oBAAoB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,sBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,WAAA,EAAA,sBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAVpB,QAAQ,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAZC,qBAAqB,qDAuB9B,eAAe,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FASN,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBA1BtC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EAAA,OAAA,EACvB;wBACP,SAAS;wBACT,UAAU;wBACV,YAAY;wBACZ,QAAQ;wBACR,WAAW;wBACX,gBAAgB;wBAChB,aAAa;wBACb,qBAAqB;wBACrB,yBAAyB;wBACzB,qBAAqB;wBACrB,qBAAqB;wBACrB,eAAe;wBACf,uBAAuB;wBACvB,oBAAoB;wBACpB;qBACD,EAAA,eAAA,EAGgB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,gBAAgB,EAAE;AACnB,qBAAA,EAAA,QAAA,EAAA,q3PAAA,EAAA,MAAA,EAAA,CAAA,yzBAAA,CAAA,EAAA;;;AEhFH;;;AAGG;MASU,uBAAuB,CAAA;uGAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;wGAAvB,uBAAuB,EAAA,OAAA,EAAA,CAHxB,0BAA0B,CAAA,EAAA,OAAA,EAAA,CAC1B,0BAA0B,CAAA,EAAA,CAAA;AAEzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,YAHxB,0BAA0B,CAAA,EAAA,CAAA;;2FAGzB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,0BAA0B,CAAC;oBACrC,OAAO,EAAE,CAAC,0BAA0B;AACrC,iBAAA;;;ACXD;;;AAGG;;ACHH;;AAEG;;;;"}
1
+ {"version":3,"file":"siemens-element-ng-date-range-filter.mjs","sources":["../../../../projects/element-ng/date-range-filter/si-date-range-calculation.service.ts","../../../../projects/element-ng/date-range-filter/si-date-range-filter.types.ts","../../../../projects/element-ng/date-range-filter/si-relative-date.component.ts","../../../../projects/element-ng/date-range-filter/si-relative-date.component.html","../../../../projects/element-ng/date-range-filter/si-date-range-filter.component.ts","../../../../projects/element-ng/date-range-filter/si-date-range-filter.component.html","../../../../projects/element-ng/date-range-filter/si-date-range-filter.module.ts","../../../../projects/element-ng/date-range-filter/index.ts","../../../../projects/element-ng/date-range-filter/siemens-element-ng-date-range-filter.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Injectable } from '@angular/core';\n\nimport { DateRangeFilter, ResolvedDateRange } from './si-date-range-filter.types';\n\nexport interface ResolveDateRangeOptions {\n /**\n * Resolve time? When set to false, hours/minutes/seconds/ms are set to zero\n * @defaultValue true\n **/\n withTime?: boolean;\n /**\n * Skip normalization? When skipped, `point1` will always be `start`, `point2` will be `end`\n */\n skipNormalization?: boolean;\n}\n\n/**\n * Service to transform and calculate with DateRangeFilter objects.\n */\n@Injectable({ providedIn: 'root' })\nexport class SiDateRangeCalculationService {\n /**\n * Calculates the start and end dates of a DateRangeFilter.\n * @param filter - The date range filter object to be resolved.\n * @param options - Options for time handling\n * @returns The resolved result in form of a ResolvedDateRange object.\n */\n resolveDateRangeFilter(\n filter: DateRangeFilter,\n options?: ResolveDateRangeOptions\n ): ResolvedDateRange {\n const ref = filter.point1 === 'now' ? new Date() : new Date(filter.point1);\n const withTime = options?.withTime ?? true;\n\n if (!withTime) {\n this.removeTime(ref);\n }\n\n if (filter.point2 instanceof Date) {\n const point2 = withTime ? filter.point2 : this.removeTime(new Date(filter.point2));\n return this.normalize(ref, point2, options?.skipNormalization);\n }\n\n const offset = filter.point2;\n\n switch (filter.range) {\n case undefined:\n case 'before':\n return this.normalize(ref, this.datePlusOffset(ref, -offset), options?.skipNormalization);\n case 'after':\n return this.normalize(ref, this.datePlusOffset(ref, offset), options?.skipNormalization);\n case 'within':\n return this.normalize(\n this.datePlusOffset(ref, -offset),\n this.datePlusOffset(ref, offset),\n options?.skipNormalization\n );\n }\n }\n\n private datePlusOffset(date: Date, offset: number): Date {\n return new Date(date.getTime() + offset);\n }\n\n private normalize(date1: Date, date2: Date, skip?: boolean): ResolvedDateRange {\n const valid = !isNaN(date1.getTime()) && !isNaN(date2.getTime());\n return skip\n ? { start: date1, end: date2, valid }\n : date1 < date2\n ? { start: date1, end: date2, valid }\n : { start: date2, end: date1, valid };\n }\n\n /**\n * Utility to reset the time attributes to 0 (hours/minutes/seconds/milliseconds).\n */\n removeTime(date: Date): Date {\n date.setHours(0);\n date.setMinutes(0);\n date.setSeconds(0);\n date.setMilliseconds(0);\n return date;\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { TranslatableString } from '@siemens/element-translate-ng/translate';\n\n/**\n * Simple DateRangeFilter preset based on offset from now\n */\nexport interface DateRangePresetOffset {\n type?: 'offset';\n /** translation key for label */\n label: TranslatableString;\n /** offset from current in milliseconds */\n offset: number;\n}\n\n/**\n * Advanced DateRageFilter preset with custom calculation\n */\nexport interface DateRangePresetCustom {\n type: 'custom';\n /** translation key for label */\n label: TranslatableString;\n /** calculation custom calculation function */\n calculate: (self: DateRangePresetCustom, currentRange: DateRangeFilter) => DateRangeFilter;\n /** Whether this should show only when time support is enabled */\n timeOnly?: boolean;\n}\n\nexport type DateRangePreset = DateRangePresetOffset | DateRangePresetCustom;\n\nexport interface DateRangeFilter {\n point1: Date | 'now';\n point2: number | Date;\n range?: 'before' | 'after' | 'within';\n}\n\nexport interface ResolvedDateRange {\n start: Date;\n end: Date;\n valid: boolean;\n}\n\nexport const ONE_MINUTE = 60 * 1000;\nexport const ONE_DAY = ONE_MINUTE * 60 * 24;\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n model,\n OnChanges,\n signal,\n SimpleChanges\n} from '@angular/core';\nimport { SiNumberInputComponent } from '@siemens/element-ng/number-input';\nimport {\n SelectOption,\n SiSelectComponent,\n SiSelectSimpleOptionsDirective,\n SiSelectSingleValueDirective\n} from '@siemens/element-ng/select';\nimport { t } from '@siemens/element-translate-ng/translate';\n\nimport { ONE_DAY, ONE_MINUTE } from './si-date-range-filter.types';\n\ninterface OffsetOption extends SelectOption<string> {\n offset: number;\n}\n\n@Component({\n selector: 'si-relative-date',\n imports: [\n SiNumberInputComponent,\n SiSelectComponent,\n SiSelectSingleValueDirective,\n SiSelectSimpleOptionsDirective\n ],\n templateUrl: './si-relative-date.component.html',\n styleUrl: './si-relative-date.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SiRelativeDateComponent implements OnChanges {\n /** @defaultValue 0 */\n readonly value = model(0);\n /** @defaultValue false */\n readonly enableTimeSelection = input(false, { transform: booleanAttribute });\n readonly valueLabel = input.required<string>();\n readonly unitLabel = input.required<string>();\n\n protected readonly offset = signal(0);\n protected readonly unit = signal('days');\n private readonly fullOffsetList: OffsetOption[] = [\n {\n type: 'option',\n value: 'minutes',\n label: t(() => $localize`:@@SI_DATE_RANGE_FILTER.MINUTES:Minutes`),\n offset: ONE_MINUTE\n },\n {\n type: 'option',\n value: 'hours',\n label: t(() => $localize`:@@SI_DATE_RANGE_FILTER.HOURS:Hours`),\n offset: 60 * ONE_MINUTE\n },\n {\n type: 'option',\n value: 'days',\n label: t(() => $localize`:@@SI_DATE_RANGE_FILTER.DAYS:Days`),\n offset: ONE_DAY\n },\n {\n type: 'option',\n value: 'weeks',\n label: t(() => $localize`:@@SI_DATE_RANGE_FILTER.WEEKS:Weeks`),\n offset: 7 * ONE_DAY\n },\n {\n type: 'option',\n value: 'months',\n label: t(() => $localize`:@@SI_DATE_RANGE_FILTER.MONTHS:Months`),\n offset: 30 * ONE_DAY\n },\n {\n type: 'option',\n value: 'years',\n label: t(() => $localize`:@@SI_DATE_RANGE_FILTER.YEARS:Years`),\n offset: 365 * ONE_DAY\n }\n ];\n\n protected readonly offsetList = computed(() =>\n this.enableTimeSelection()\n ? this.fullOffsetList\n : this.fullOffsetList.filter(item => item.offset >= ONE_DAY)\n );\n\n ngOnChanges(changes: SimpleChanges<this>): void {\n if (changes.value) {\n this.calculateOffset();\n }\n }\n\n private calculateOffset(): void {\n const offsetList = this.offsetList();\n let unit = '';\n if (offsetList.length) {\n this.offset.set(0);\n unit = offsetList[0].value;\n }\n\n for (let i = offsetList.length - 1; i >= 0; i--) {\n const item = offsetList[i];\n const raw = this.value() / item.offset;\n const rounded = Math.round(raw);\n if (rounded > 0 && Math.abs(raw - rounded) < 0.001) {\n this.offset.set(rounded);\n unit = item.value;\n break;\n }\n }\n\n this.changeUnit(unit);\n }\n\n protected updateValue(offset: number): void {\n this.offset.set(offset);\n const item = this.offsetList().find(x => x.value === this.unit())!;\n const nextValue = offset * item.offset;\n this.value.set(nextValue);\n }\n\n protected changeUnit(newUnit: string): void {\n this.unit.set(newUnit);\n const item = this.offsetList().find(x => x.value === this.unit())!;\n const roundedOffset = Math.max(1, Math.round(this.value() / item.offset));\n this.offset.set(roundedOffset);\n this.value.set(roundedOffset * item.offset);\n }\n}\n","<si-number-input\n class=\"form-control mb-4\"\n [aria-label]=\"valueLabel()\"\n [value]=\"offset()\"\n (valueChange)=\"updateValue($event ?? 0)\"\n/>\n<si-select\n class=\"form-control\"\n min=\"0\"\n [ariaLabel]=\"unitLabel()\"\n [options]=\"offsetList()\"\n [value]=\"unit()\"\n (valueChange)=\"changeUnit($event)\"\n/>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { CdkTrapFocus } from '@angular/cdk/a11y';\nimport { MediaMatcher } from '@angular/cdk/layout';\nimport { CdkListbox, CdkOption } from '@angular/cdk/listbox';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { DatePipe, NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n model,\n OnChanges,\n output,\n Pipe,\n PipeTransform,\n signal,\n SimpleChanges\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { elementDown2 } from '@siemens/element-icons';\nimport {\n DatepickerConfig,\n DatepickerInputConfig,\n DateRange,\n isValid,\n SiCalendarButtonComponent,\n SiDatepickerComponent,\n SiDatepickerDirective\n} from '@siemens/element-ng/datepicker';\nimport { addIcons, SiIconComponent } from '@siemens/element-ng/icon';\nimport { BOOTSTRAP_BREAKPOINTS } from '@siemens/element-ng/resize-observer';\nimport { SiSearchBarComponent } from '@siemens/element-ng/search-bar';\nimport { SiTranslatePipe, t } from '@siemens/element-translate-ng/translate';\n\nimport { SiDateRangeCalculationService } from './si-date-range-calculation.service';\nimport {\n DateRangeFilter,\n DateRangePreset,\n ONE_DAY,\n ResolvedDateRange\n} from './si-date-range-filter.types';\nimport { SiRelativeDateComponent } from './si-relative-date.component';\n\n@Pipe({ name: 'presetMatchFilter', pure: true })\nexport class PresetMatchFilterPipe implements PipeTransform {\n transform(value: string, term: string): boolean {\n return !term ? true : value.toLowerCase().includes(term.toLowerCase());\n }\n}\n\n@Component({\n selector: 'si-date-range-filter',\n imports: [\n CdkOption,\n CdkListbox,\n CdkTrapFocus,\n DatePipe,\n FormsModule,\n NgTemplateOutlet,\n OverlayModule,\n PresetMatchFilterPipe,\n SiCalendarButtonComponent,\n SiDatepickerComponent,\n SiDatepickerDirective,\n SiIconComponent,\n SiRelativeDateComponent,\n SiSearchBarComponent,\n SiTranslatePipe\n ],\n templateUrl: './si-date-range-filter.component.html',\n styleUrl: './si-date-range-filter.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.mobile]': 'smallScreen'\n }\n})\nexport class SiDateRangeFilterComponent implements OnChanges {\n private readonly service = inject(SiDateRangeCalculationService);\n private readonly mediaMatcher = inject(MediaMatcher);\n protected readonly smallScreen = this.mediaMatcher.matchMedia(\n `(max-width: ${BOOTSTRAP_BREAKPOINTS.mdMinimum}px)`\n ).matches;\n\n /** The filter range object */\n readonly range = model.required<DateRangeFilter>();\n /** List of preset time ranges. When not present or empty, the preset section won't show */\n readonly presetList = input<DateRangePreset[]>();\n /**\n * Determines if there's a search field for the preset list\n *\n * @defaultValue true\n */\n readonly presetSearch = input(true, { transform: booleanAttribute });\n /**\n * Determines if time is selectable or only dates\n *\n * @defaultValue false\n */\n readonly enableTimeSelection = input(false, { transform: booleanAttribute });\n /**\n * Determines whether to show input fields or a date-range calendar in basic mode.\n * When time selection is enabled, this has no effect and input fields are always shown.\n *\n * @defaultValue 'calendar'\n */\n readonly basicMode = input<'input' | 'calendar'>('calendar');\n /**\n * Reverses the order of the from/to fields\n *\n * @defaultValue false\n */\n readonly reverseInputFields = input(false, { transform: booleanAttribute });\n\n /**\n * Determines whether to show the 'Apply' button\n *\n * @defaultValue false\n */\n readonly showApplyButton = input(false, { transform: booleanAttribute });\n /**\n * Hides the advanced mode if input allows\n *\n * @defaultValue false\n */\n readonly hideAdvancedMode = input(false, { transform: booleanAttribute });\n\n /**\n * label for the \"Reference point\" title\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_DATE_RANGE_FILTER.REF_POINT:Reference point`)\n * ```\n */\n readonly refLabel = input(t(() => $localize`:@@SI_DATE_RANGE_FILTER.REF_POINT:Reference point`));\n /**\n * label for the \"Reference point\" title\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_DATE_RANGE_FILTER.FROM:From`)\n * ```\n */\n readonly fromLabel = input(t(() => $localize`:@@SI_DATE_RANGE_FILTER.FROM:From`));\n /**\n * label for the \"Reference point\" title\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_DATE_RANGE_FILTER.TO:To`)\n * ```\n */\n readonly toLabel = input(t(() => $localize`:@@SI_DATE_RANGE_FILTER.TO:To`));\n /**\n * label for the \"Range\" title\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_DATE_RANGE_FILTER.RANGE:Range`)\n * ```\n */\n readonly rangeLabel = input(t(() => $localize`:@@SI_DATE_RANGE_FILTER.RANGE:Range`));\n /**\n * label for the \"Today\" checkbox\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_DATE_RANGE_FILTER.TODAY:Today`)\n * ```\n */\n readonly todayLabel = input(t(() => $localize`:@@SI_DATE_RANGE_FILTER.TODAY:Today`));\n /**\n * label for the \"Now\" checkbox\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_DATE_RANGE_FILTER.NOW:Now`)\n * ```\n */\n readonly nowLabel = input(t(() => $localize`:@@SI_DATE_RANGE_FILTER.NOW:Now`));\n /**\n * label for \"Date\" field / radio button\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_DATE_RANGE_FILTER.DATE:Date`)\n * ```\n */\n readonly dateLabel = input(t(() => $localize`:@@SI_DATE_RANGE_FILTER.DATE:Date`));\n /**\n * label for the \"Preview\" title\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_DATE_RANGE_FILTER.PREVIEW:Preview`)\n * ```\n */\n readonly previewLabel = input(t(() => $localize`:@@SI_DATE_RANGE_FILTER.PREVIEW:Preview`));\n /**\n * Placeholder for date fields\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_DATE_RANGE_FILTER.DATE_PLACEHOLDER:Select date`)\n * ```\n */\n readonly datePlaceholder = input(\n t(() => $localize`:@@SI_DATE_RANGE_FILTER.DATE_PLACEHOLDER:Select date`)\n );\n /**\n * label for the \"Before\" toggle\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_DATE_RANGE_FILTER.BEFORE:Before`)\n * ```\n */\n readonly beforeLabel = input(t(() => $localize`:@@SI_DATE_RANGE_FILTER.BEFORE:Before`));\n /**\n * label for the \"After\" toggle\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_DATE_RANGE_FILTER.AFTER:After`)\n * ```\n */\n readonly afterLabel = input(t(() => $localize`:@@SI_DATE_RANGE_FILTER.AFTER:After`));\n /**\n * label for the \"Within\" toggle\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_DATE_RANGE_FILTER.WITHIN:Within`)\n * ```\n */\n readonly withinLabel = input(t(() => $localize`:@@SI_DATE_RANGE_FILTER.WITHIN:Within`));\n /**\n * label for the \"value\" number input\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_DATE_RANGE_FILTER.VALUE:Value`)\n * ```\n */\n readonly valueLabel = input(t(() => $localize`:@@SI_DATE_RANGE_FILTER.VALUE:Value`));\n /**\n * label for the \"Unit\" select\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_DATE_RANGE_FILTER.UNIT:Unit`)\n * ```\n */\n readonly unitLabel = input(t(() => $localize`:@@SI_DATE_RANGE_FILTER.UNIT:Unit`));\n /**\n * label for the \"search\" input\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_DATE_RANGE_FILTER.SEARCH:Search`)\n * ```\n */\n readonly searchLabel = input(t(() => $localize`:@@SI_DATE_RANGE_FILTER.SEARCH:Search`));\n /**\n * label for the \"search\" input\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_DATE_RANGE_FILTER.PRESETS:Presets`)\n * ```\n */\n readonly presetLabel = input(t(() => $localize`:@@SI_DATE_RANGE_FILTER.PRESETS:Presets`));\n /**\n * label for the \"advanced\" switch\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_DATE_RANGE_FILTER.ADVANCED:Advanced`)\n * ```\n */\n readonly advancedLabel = input(t(() => $localize`:@@SI_DATE_RANGE_FILTER.ADVANCED:Advanced`));\n /**\n * label for the \"apply\" switch\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_DATE_RANGE_FILTER.APPLY:Apply`)\n * ```\n */\n readonly applyLabel = input(t(() => $localize`:@@SI_DATE_RANGE_FILTER.APPLY:Apply`));\n /**\n * label for the \"select end date\" in preview\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_DATE_RANGE_FILTER.SELECT_RANGE_END:Select end date`)\n * ```\n */\n readonly rangeEndDateMissingLabel = input(\n t(() => $localize`:@@SI_DATE_RANGE_FILTER.SELECT_RANGE_END:Select end date`)\n );\n /**\n * label when range is not defined in the preview\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_DATE_RANGE_FILTER.SELECT_RANGE_LABEL:Select date range`)\n * ```\n */\n readonly selectRangeLabel = input(\n t(() => $localize`:@@SI_DATE_RANGE_FILTER.SELECT_RANGE_LABEL:Select date range`)\n );\n\n /** Event fired when the apply button has been clicked */\n readonly applyClicked = output<void>();\n\n /** Base configuration on how the dates should be displayed, parts of it may be overwritten internally. */\n readonly datepickerConfig = input<DatepickerInputConfig>();\n\n protected readonly icons = addIcons({ elementDown2 });\n protected readonly advancedMode = signal(false);\n protected readonly dateRange = signal<DateRange>({ start: undefined, end: undefined });\n\n protected readonly point1Now = signal(true);\n protected readonly point2Mode = signal<'duration' | 'date'>('duration');\n\n protected readonly point1date = signal(this.getDateNow());\n protected readonly point2date = signal(this.getDateNow());\n protected readonly point2offset = signal(0);\n protected readonly point2range = signal<'before' | 'after' | 'within'>('before');\n protected readonly calculatedRange = computed<ResolvedDateRange>(() =>\n this.resolve(this.range())\n );\n protected readonly pipeFormat = computed<string>(() =>\n this.enableTimeSelection()\n ? (this.datepickerConfig()?.dateTimeFormat ?? 'short')\n : (this.datepickerConfig()?.dateFormat ?? 'shortDate')\n );\n\n protected readonly datepickerConfigInternal = computed<DatepickerConfig>(() => ({\n ...(this.datepickerConfig() ?? {}),\n enableDateRange: false,\n showTime: this.enableTimeSelection(),\n mandatoryTime: this.enableTimeSelection()\n }));\n\n protected readonly dateRangeConfig = computed<DatepickerConfig>(() => ({\n ...(this.datepickerConfig() ?? {}),\n enableDateRange: true\n }));\n\n protected readonly filteredPresetList = computed<DateRangePreset[]>(() => {\n const timeFilter = (item: DateRangePreset): boolean => {\n const timeOnly = item.type === 'custom' ? item.timeOnly : item.offset < ONE_DAY;\n return this.enableTimeSelection() || !timeOnly;\n };\n return (this.presetList() ?? []).filter(timeFilter);\n });\n\n protected readonly focusedDate = computed(() => {\n const range = this.dateRange();\n const date = range.end ?? range.start;\n return isValid(date) ? date : undefined;\n });\n protected readonly presetFilter = signal('');\n protected readonly presetOpen = signal(false);\n protected readonly inputMode = computed(\n () => this.basicMode() === 'input' || this.enableTimeSelection()\n );\n\n ngOnChanges(changes: SimpleChanges<this>): void {\n if (\n changes.enableTimeSelection ||\n changes.datepickerConfig ||\n (changes.range && this.rangeChanged(changes.range.previousValue, changes.range.currentValue))\n ) {\n this.updateFromRange(this.range());\n }\n if (\n (changes.basicMode || changes.enableTimeSelection) &&\n this.inputMode() &&\n !this.advancedMode()\n ) {\n this.point2Mode.set('date');\n this.point2Changed();\n }\n }\n\n private getDateNow(): Date {\n const now = new Date();\n if (!this.enableTimeSelection()) {\n this.service.removeTime(now);\n }\n return now;\n }\n\n private rangeChanged(oldRange: DateRangeFilter | undefined, newRange: DateRangeFilter): boolean {\n return (\n !oldRange || // eslint-disable-line @typescript-eslint/prefer-optional-chain\n oldRange.point1 !== newRange.point1 ||\n oldRange.point2 !== newRange.point2 ||\n oldRange.range !== newRange.range\n );\n }\n\n private updateFromRange(rangeVal: DateRangeFilter): void {\n this.point1Now.set(rangeVal.point1 === 'now');\n this.point1date.set(rangeVal.point1 === 'now' ? this.getDateNow() : rangeVal.point1);\n if (rangeVal.point2) {\n this.point2Mode.set(rangeVal.point2 instanceof Date ? 'date' : 'duration');\n this.point2date.set(rangeVal.point2 instanceof Date ? rangeVal.point2 : this.getDateNow());\n this.point2range.set(rangeVal.range ?? 'before');\n this.point2offset.set(\n rangeVal.point2 instanceof Date\n ? Math.abs(Math.round(this.point1date().getTime() - rangeVal.point2.getTime()))\n : rangeVal.point2\n );\n }\n if ((this.point1Now() && this.basicMode() !== 'input') || this.point2Mode() !== 'date') {\n this.advancedMode.set(true);\n } else {\n this.advancedMode.set(false);\n this.updateDateRange();\n }\n }\n\n private resolve(range: DateRangeFilter, skipNormalization?: boolean): ResolvedDateRange {\n return this.service.resolveDateRangeFilter(range, {\n withTime: this.enableTimeSelection(),\n skipNormalization\n });\n }\n\n protected updateDateRange(range = this.range()): void {\n const calculatedRange = this.resolve(range);\n this.dateRange.set({ start: calculatedRange.start, end: calculatedRange.end });\n }\n\n protected updateOnModeChange(): void {\n if (this.advancedMode()) {\n const calculatedRange = this.resolve(this.range());\n this.point1date.set(calculatedRange.start);\n this.point2Mode.set('duration');\n this.point2range.set('after');\n this.point2offset.set(\n Math.abs(calculatedRange.end.getTime() - calculatedRange.start.getTime())\n );\n this.updateRange();\n } else {\n this.updateSimpleMode(this.range());\n }\n }\n\n private updateSimpleMode(newRange: DateRangeFilter): void {\n if (this.inputMode()) {\n // input mode supports `now`, so point1 needs to remain unchanged\n if (newRange.point1 === 'now') {\n this.point1Now.set(true);\n this.point1date.set(this.getDateNow());\n } else {\n this.point1Now.set(false);\n this.point1date.set(newRange.point1);\n }\n const calculatedRange = this.resolve(newRange, true);\n this.point2Mode.set('date');\n this.point2date.set(calculatedRange.end);\n this.updateRange();\n } else {\n this.point1Now.set(false);\n this.updateDateRange(newRange);\n this.updateFromDateRange();\n }\n }\n\n private updateRange(): void {\n const point2isDate = this.point2Mode() === 'date';\n const newRange: DateRangeFilter = {\n point1: this.point1Now() ? 'now' : this.point1date(),\n point2: point2isDate ? this.point2date() : this.point2offset(),\n range: point2isDate ? undefined : this.point2range()\n };\n this.range.update(old => ({ ...old, ...newRange }));\n }\n\n protected updateFromDateRange(dateRange?: DateRange): void {\n if (dateRange) {\n this.dateRange.set(dateRange);\n }\n const range = this.dateRange();\n const startDate = range.start ?? this.getDateNow();\n const endDate = range.end ?? this.getDateNow();\n this.point1date.set(startDate);\n this.point2date.set(endDate);\n this.point2Mode.set('date');\n this.point2offset.set(0);\n\n // only emit if range start and end are selected\n if (range.start && range.end) {\n this.updateRange();\n }\n }\n\n protected point1Changed(): void {\n if (this.point1Now()) {\n this.point1date.set(this.getDateNow());\n }\n this.updateRange();\n }\n\n protected point2Changed(): void {\n if (this.point2Mode() === 'date') {\n if (!(this.range().point2 instanceof Date)) {\n const calculatedRange = this.resolve(this.range());\n if (calculatedRange.valid) {\n this.point2date.set(\n this.point1date() < calculatedRange.end ? calculatedRange.start : calculatedRange.end\n );\n }\n }\n } else {\n if (this.range().point2 instanceof Date) {\n const calculatedRange = this.resolve(this.range());\n this.point2offset.set(\n Math.round(calculatedRange.end.getTime() - calculatedRange.start.getTime())\n );\n }\n }\n this.updateRange();\n }\n\n protected selectPresetItem(event: Event, item: DateRangePreset): void {\n const newRange: DateRangeFilter =\n item.type === 'custom'\n ? item.calculate(item, this.range())\n : { point1: 'now', range: 'before', point2: item.offset };\n if (this.advancedMode()) {\n this.updateFromRange(newRange);\n this.updateRange();\n } else {\n this.updateSimpleMode(newRange);\n }\n if (this.smallScreen) {\n // Prevent re-opening the dropdown when pressing enter on the selected item\n event.preventDefault();\n this.presetOpen.set(false);\n }\n }\n}\n","@if (presetList()?.length) {\n @if (this.smallScreen) {\n <div class=\"presets d-flex\">\n <button\n #presetTrigger=\"cdkOverlayOrigin\"\n type=\"button\"\n class=\"btn btn-tertiary dropdown-toggle m-5 flex-grow-1\"\n cdkOverlayOrigin\n [class.show]=\"presetOpen()\"\n [attr.aria-expanded]=\"presetOpen()\"\n (click)=\"presetOpen.set(true)\"\n >\n {{ presetLabel() | translate }}\n <si-icon class=\"dropdown-caret icon\" [icon]=\"icons.elementDown2\" />\n </button>\n <ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n cdkConnectedOverlayHasBackdrop\n [cdkConnectedOverlayOpen]=\"presetOpen()\"\n [cdkConnectedOverlayOrigin]=\"presetTrigger\"\n [cdkConnectedOverlayMinWidth]=\"\n presetTrigger.elementRef.nativeElement?.getBoundingClientRect().width\n \"\n (backdropClick)=\"presetOpen.set(false)\"\n (detach)=\"presetOpen.set(false)\"\n >\n <div\n cdkTrapFocus\n class=\"preset-select mobile elevation-2 rounded-2 w-100\"\n cdkTrapFocusAutoCapture\n >\n <ng-container *ngTemplateOutlet=\"presets\" />\n </div>\n </ng-template>\n </div>\n } @else {\n <div class=\"preset-select border-end\">\n <ng-container *ngTemplateOutlet=\"presets\" />\n </div>\n }\n}\n<form class=\"main-form d-flex flex-column flex-fill\">\n @if (advancedMode() || inputMode()) {\n <div class=\"advanced-form px-6 py-4\">\n @if (!reverseInputFields()) {\n <ng-container *ngTemplateOutlet=\"formReferencePoint\" />\n }\n\n <div class=\"mb-8\">\n @if (point2Mode() === 'date') {\n <ng-container *ngTemplateOutlet=\"formPoint2Date\" />\n } @else if (point2Mode() === 'duration') {\n <ng-container *ngTemplateOutlet=\"formPoint2Duration\" />\n }\n </div>\n\n @if (reverseInputFields()) {\n <ng-container *ngTemplateOutlet=\"formReferencePoint\" />\n }\n </div>\n } @else {\n <si-datepicker\n [config]=\"dateRangeConfig()\"\n [focusedDate]=\"focusedDate()\"\n [dateRange]=\"dateRange()\"\n (dateRangeChange)=\"updateFromDateRange($event)\"\n />\n }\n\n @if (advancedMode() || !hideAdvancedMode()) {\n <label class=\"form-switch form-check ms-6\">\n <input\n type=\"checkbox\"\n class=\"form-check-input\"\n name=\"advancedMode\"\n role=\"switch\"\n [(ngModel)]=\"advancedMode\"\n (ngModelChange)=\"updateOnModeChange()\"\n />\n <span class=\"form-check-label\">{{ advancedLabel() | translate }}</span>\n </label>\n }\n\n <div class=\"mt-4 mb-6 ms-6\">\n {{ previewLabel() | translate }}:\n <span class=\"preview\">\n @if (advancedMode()) {\n @let calculated = calculatedRange();\n @if (calculated.valid) {\n {{ calculated.start | date: pipeFormat() }} -\n {{ calculated.end | date: pipeFormat() }}\n } @else {\n <span class=\"text-secondary\">\n {{ selectRangeLabel() | translate }}\n </span>\n }\n } @else {\n @let range = dateRange();\n {{ range.start | date: pipeFormat() }} -\n @if (range.end) {\n {{ range.end | date: pipeFormat() }}\n } @else {\n <span class=\"text-secondary\">\n {{ rangeEndDateMissingLabel() | translate }}\n </span>\n }\n }\n </span>\n </div>\n</form>\n\n@if (showApplyButton()) {\n <div class=\"footer border-top px-6 py-5 d-flex\">\n <button type=\"button\" class=\"btn btn-primary ms-auto\" (click)=\"applyClicked.emit()\">\n {{ applyLabel() | translate }}\n </button>\n </div>\n}\n<ng-template #presets>\n @if (presetSearch()) {\n <si-search-bar\n colorVariant=\"base-0\"\n class=\"mx-6 mt-5 mb-6\"\n [placeholder]=\"searchLabel() | translate\"\n [showIcon]=\"true\"\n [(ngModel)]=\"presetFilter\"\n />\n }\n <ul class=\"overflow-auto\" cdkListbox [attr.aria-label]=\"presetLabel() | translate\">\n @for (item of filteredPresetList(); track $index) {\n @if (item.label | translate | presetMatchFilter: presetFilter()) {\n <li\n class=\"preset-item focus-inside px-8 py-5\"\n [cdkOption]=\"item.label\"\n (click)=\"selectPresetItem($event, item)\"\n (keydown.enter)=\"selectPresetItem($event, item)\"\n >\n {{ item.label | translate }}\n </li>\n }\n }\n </ul>\n</ng-template>\n<ng-template #formReferencePoint>\n <div class=\"mb-8\">\n <label class=\"d-block\">\n <span class=\"form-label\">{{\n (advancedMode() ? refLabel() : reverseInputFields() ? toLabel() : fromLabel()) | translate\n }}</span>\n <si-calendar-button class=\"w-100\">\n <input\n type=\"text\"\n class=\"form-control\"\n name=\"point1\"\n required\n siDatepicker\n [siDatepickerConfig]=\"datepickerConfigInternal()\"\n [disabled]=\"point1Now()\"\n [placeholder]=\"datePlaceholder() | translate\"\n [(ngModel)]=\"point1date\"\n (ngModelChange)=\"point1Changed()\"\n />\n </si-calendar-button>\n </label>\n <label class=\"ms-4 mt-4 text-nowrap form-check\">\n <input\n type=\"checkbox\"\n class=\"form-check-input\"\n name=\"point1now\"\n [(ngModel)]=\"point1Now\"\n (ngModelChange)=\"point1Changed()\"\n />\n <span class=\"form-check-label\">{{\n (enableTimeSelection() ? nowLabel() : todayLabel()) | translate\n }}</span>\n </label>\n </div>\n</ng-template>\n\n<ng-template #formPoint2Date>\n <label class=\"d-block mb-4 bp-9\">\n <span class=\"form-label\">{{\n (reverseInputFields() ? fromLabel() : toLabel()) | translate\n }}</span>\n <si-calendar-button class=\"w-100\">\n <input\n type=\"text\"\n class=\"form-control\"\n name=\"point2\"\n required\n siDatepicker\n [siDatepickerConfig]=\"datepickerConfigInternal()\"\n [attr.aria-label]=\"dateLabel() | translate\"\n [placeholder]=\"datePlaceholder() | translate\"\n [(ngModel)]=\"point2date\"\n (ngModelChange)=\"point2Changed()\"\n />\n </si-calendar-button>\n </label>\n</ng-template>\n\n<ng-template #formPoint2Duration>\n <div>\n <span class=\"form-label\">{{ rangeLabel() | translate }}</span>\n <si-relative-date\n class=\"d-block mb-4\"\n [unitLabel]=\"unitLabel() | translate\"\n [valueLabel]=\"valueLabel() | translate\"\n [enableTimeSelection]=\"enableTimeSelection()\"\n [(value)]=\"point2offset\"\n (valueChange)=\"point2Changed()\"\n />\n <div class=\"range-type ms-4\">\n <label class=\"form-check form-check-inline\">\n <input\n type=\"radio\"\n class=\"form-check-input\"\n value=\"before\"\n name=\"point2range\"\n [(ngModel)]=\"point2range\"\n (ngModelChange)=\"point2Changed()\"\n />\n <span class=\"form-check-label\">\n {{ beforeLabel() | translate }}\n </span>\n </label>\n <label class=\"form-check form-check-inline\">\n <input\n type=\"radio\"\n class=\"form-check-input\"\n value=\"after\"\n name=\"point2range\"\n [(ngModel)]=\"point2range\"\n (ngModelChange)=\"point2Changed()\"\n />\n <span class=\"form-check-label\">\n {{ afterLabel() | translate }}\n </span>\n </label>\n <label class=\"form-check form-check-inline\">\n <input\n type=\"radio\"\n class=\"form-check-input\"\n value=\"within\"\n name=\"point2range\"\n [(ngModel)]=\"point2range\"\n (ngModelChange)=\"point2Changed()\"\n />\n <span class=\"form-check-label\">\n {{ withinLabel() | translate }}\n </span>\n </label>\n </div>\n </div>\n</ng-template>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiDateRangeFilterComponent } from './si-date-range-filter.component';\n\n@NgModule({\n imports: [SiDateRangeFilterComponent],\n exports: [SiDateRangeFilterComponent]\n})\nexport class SiDateRangeFilterModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-date-range-filter.component';\nexport * from './si-date-range-filter.module';\nexport * from './si-date-range-filter.types';\nexport * from './si-date-range-calculation.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -689,7 +689,7 @@ const maxDate = (first, second) => {
689
689
  * Indicate whether the time use the 12-hour format
690
690
  */
691
691
  const is12HourFormat = (locale, config) => {
692
- const dateFormat = getDatepickerFormat(locale, config, true);
692
+ const dateFormat = getDatepickerFormat(locale, { ...config, disabledTime: false }, true);
693
693
  return dateFormat?.includes('a') ?? false;
694
694
  };
695
695