@radix-ng/primitives 0.51.0 → 1.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/radix-ng-primitives-accordion.mjs +105 -38
- package/fesm2022/radix-ng-primitives-accordion.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-alert-dialog.mjs +221 -129
- package/fesm2022/radix-ng-primitives-alert-dialog.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-arrow.mjs +20 -4
- package/fesm2022/radix-ng-primitives-arrow.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-aspect-ratio.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-avatar.mjs +54 -61
- package/fesm2022/radix-ng-primitives-avatar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-button.mjs +123 -0
- package/fesm2022/radix-ng-primitives-button.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-calendar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-checkbox.mjs +378 -54
- package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-collapsible.mjs +182 -81
- package/fesm2022/radix-ng-primitives-collapsible.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-collection.mjs +40 -57
- package/fesm2022/radix-ng-primitives-collection.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-config.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-context-menu.mjs +140 -424
- package/fesm2022/radix-ng-primitives-context-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-core.mjs +735 -744
- package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-cropper.mjs +1 -0
- package/fesm2022/radix-ng-primitives-cropper.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-date-field.mjs +51 -45
- package/fesm2022/radix-ng-primitives-date-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-dialog.mjs +655 -327
- package/fesm2022/radix-ng-primitives-dialog.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-dismissable-layer.mjs +70 -46
- package/fesm2022/radix-ng-primitives-dismissable-layer.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-drawer.mjs +1059 -0
- package/fesm2022/radix-ng-primitives-drawer.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-editable.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-field.mjs +363 -0
- package/fesm2022/radix-ng-primitives-field.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-fieldset.mjs +79 -0
- package/fesm2022/radix-ng-primitives-fieldset.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-focus-scope.mjs +23 -8
- package/fesm2022/radix-ng-primitives-focus-scope.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-input.mjs +172 -0
- package/fesm2022/radix-ng-primitives-input.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-label.mjs +6 -6
- package/fesm2022/radix-ng-primitives-label.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-menu.mjs +1480 -344
- package/fesm2022/radix-ng-primitives-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-menubar.mjs +290 -162
- package/fesm2022/radix-ng-primitives-menubar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-meter.mjs +271 -0
- package/fesm2022/radix-ng-primitives-meter.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-navigation-menu.mjs +1052 -1553
- package/fesm2022/radix-ng-primitives-navigation-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-number-field.mjs +1102 -367
- package/fesm2022/radix-ng-primitives-number-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-pagination.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-popover.mjs +978 -989
- package/fesm2022/radix-ng-primitives-popover.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-popper.mjs +91 -41
- package/fesm2022/radix-ng-primitives-popper.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-portal.mjs +34 -10
- package/fesm2022/radix-ng-primitives-portal.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-presence.mjs +134 -246
- package/fesm2022/radix-ng-primitives-presence.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-preview-card.mjs +997 -0
- package/fesm2022/radix-ng-primitives-preview-card.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-progress.mjs +223 -84
- package/fesm2022/radix-ng-primitives-progress.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-radio.mjs +191 -51
- package/fesm2022/radix-ng-primitives-radio.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-roving-focus.mjs +96 -50
- package/fesm2022/radix-ng-primitives-roving-focus.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-select.mjs +791 -509
- package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-separator.mjs +12 -35
- package/fesm2022/radix-ng-primitives-separator.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-slider.mjs +969 -717
- package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-stepper.mjs +15 -19
- package/fesm2022/radix-ng-primitives-stepper.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-switch.mjs +125 -113
- package/fesm2022/radix-ng-primitives-switch.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-tabs.mjs +381 -108
- package/fesm2022/radix-ng-primitives-tabs.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-time-field.mjs +55 -46
- package/fesm2022/radix-ng-primitives-time-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toggle-group.mjs +121 -247
- package/fesm2022/radix-ng-primitives-toggle-group.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toggle.mjs +98 -61
- package/fesm2022/radix-ng-primitives-toggle.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toolbar.mjs +303 -92
- package/fesm2022/radix-ng-primitives-toolbar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-tooltip.mjs +690 -1071
- package/fesm2022/radix-ng-primitives-tooltip.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-visually-hidden.mjs +25 -66
- package/fesm2022/radix-ng-primitives-visually-hidden.mjs.map +1 -1
- package/meter/README.md +3 -0
- package/navigation-menu/README.md +2 -1
- package/package.json +31 -18
- package/portal/README.md +2 -0
- package/preview-card/README.md +3 -0
- package/schematics/collection.json +1 -0
- package/schematics/ng-add/index.d.ts +3 -2
- package/schematics/ng-add/index.js +62 -31
- package/schematics/ng-add/index.js.map +1 -1
- package/schematics/ng-add/package-config.d.ts +4 -2
- package/schematics/ng-add/package-config.js +10 -2
- package/schematics/ng-add/package-config.js.map +1 -1
- package/schematics/ng-add/schema.d.ts +3 -0
- package/schematics/ng-add/schema.js +3 -0
- package/schematics/ng-add/schema.js.map +1 -0
- package/schematics/ng-add/schema.json +14 -0
- package/select/README.md +2 -0
- package/types/radix-ng-primitives-accordion.d.ts +48 -14
- package/types/radix-ng-primitives-alert-dialog.d.ts +95 -38
- package/types/radix-ng-primitives-arrow.d.ts +1 -1
- package/types/radix-ng-primitives-aspect-ratio.d.ts +1 -1
- package/types/radix-ng-primitives-avatar.d.ts +7 -11
- package/types/radix-ng-primitives-button.d.ts +73 -0
- package/types/radix-ng-primitives-calendar.d.ts +1 -2
- package/types/radix-ng-primitives-checkbox.d.ts +201 -32
- package/types/radix-ng-primitives-collapsible.d.ts +112 -39
- package/types/radix-ng-primitives-collection.d.ts +38 -34
- package/types/radix-ng-primitives-config.d.ts +1 -1
- package/types/radix-ng-primitives-context-menu.d.ts +60 -116
- package/types/radix-ng-primitives-core.d.ts +307 -236
- package/types/radix-ng-primitives-cropper.d.ts +2 -2
- package/types/radix-ng-primitives-date-field.d.ts +38 -23
- package/types/radix-ng-primitives-dialog.d.ts +282 -165
- package/types/radix-ng-primitives-dismissable-layer.d.ts +15 -7
- package/types/radix-ng-primitives-drawer.d.ts +448 -0
- package/types/radix-ng-primitives-editable.d.ts +1 -1
- package/types/radix-ng-primitives-field.d.ts +373 -0
- package/types/radix-ng-primitives-fieldset.d.ts +48 -0
- package/types/radix-ng-primitives-focus-scope.d.ts +13 -5
- package/types/radix-ng-primitives-input.d.ts +87 -0
- package/types/radix-ng-primitives-label.d.ts +0 -1
- package/types/radix-ng-primitives-menu.d.ts +572 -99
- package/types/radix-ng-primitives-menubar.d.ts +60 -50
- package/types/radix-ng-primitives-meter.d.ts +193 -0
- package/types/radix-ng-primitives-navigation-menu.d.ts +422 -340
- package/types/radix-ng-primitives-number-field.d.ts +405 -145
- package/types/radix-ng-primitives-pagination.d.ts +2 -2
- package/types/radix-ng-primitives-popover.d.ts +365 -351
- package/types/radix-ng-primitives-popper.d.ts +49 -9
- package/types/radix-ng-primitives-portal.d.ts +14 -6
- package/types/radix-ng-primitives-presence.d.ts +28 -76
- package/types/radix-ng-primitives-preview-card.d.ts +359 -0
- package/types/radix-ng-primitives-progress.d.ts +174 -48
- package/types/radix-ng-primitives-radio.d.ts +55 -25
- package/types/radix-ng-primitives-roving-focus.d.ts +30 -21
- package/types/radix-ng-primitives-select.d.ts +475 -177
- package/types/radix-ng-primitives-separator.d.ts +7 -32
- package/types/radix-ng-primitives-slider.d.ts +315 -201
- package/types/radix-ng-primitives-stepper.d.ts +5 -7
- package/types/radix-ng-primitives-switch.d.ts +86 -71
- package/types/radix-ng-primitives-tabs.d.ts +213 -79
- package/types/radix-ng-primitives-time-field.d.ts +42 -27
- package/types/radix-ng-primitives-toggle-group.d.ts +85 -164
- package/types/radix-ng-primitives-toggle.d.ts +43 -53
- package/types/radix-ng-primitives-toolbar.d.ts +163 -38
- package/types/radix-ng-primitives-tooltip.d.ts +347 -384
- package/types/radix-ng-primitives-visually-hidden.d.ts +19 -19
- package/dropdown-menu/README.md +0 -1
- package/fesm2022/radix-ng-primitives-dropdown-menu.mjs +0 -581
- package/fesm2022/radix-ng-primitives-dropdown-menu.mjs.map +0 -1
- package/fesm2022/radix-ng-primitives-hover-card.mjs +0 -1238
- package/fesm2022/radix-ng-primitives-hover-card.mjs.map +0 -1
- package/fesm2022/radix-ng-primitives-select2.mjs +0 -897
- package/fesm2022/radix-ng-primitives-select2.mjs.map +0 -1
- package/fesm2022/radix-ng-primitives-tooltip2.mjs +0 -735
- package/fesm2022/radix-ng-primitives-tooltip2.mjs.map +0 -1
- package/hover-card/README.md +0 -3
- package/select2/README.md +0 -3
- package/tooltip2/README.md +0 -3
- package/types/radix-ng-primitives-dropdown-menu.d.ts +0 -171
- package/types/radix-ng-primitives-hover-card.d.ts +0 -471
- package/types/radix-ng-primitives-select2.d.ts +0 -511
- package/types/radix-ng-primitives-tooltip2.d.ts +0 -325
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radix-ng-primitives-slider.mjs","sources":["../../../packages/primitives/slider/src/utils.ts","../../../packages/primitives/slider/src/slider-impl.directive.ts","../../../packages/primitives/slider/src/slider-horizontal.component.ts","../../../packages/primitives/slider/src/slider-orientation-context.service.ts","../../../packages/primitives/slider/src/slider-vertical.component.ts","../../../packages/primitives/slider/src/slider-root.component.ts","../../../packages/primitives/slider/src/slider-range.component.ts","../../../packages/primitives/slider/src/slider-thumb-impl.directive.ts","../../../packages/primitives/slider/src/slider-thumb.component.ts","../../../packages/primitives/slider/src/slider-track.component.ts","../../../packages/primitives/slider/index.ts","../../../packages/primitives/slider/radix-ng-primitives-slider.ts"],"sourcesContent":["// https://github.com/tmcw-up-for-adoption/simple-linear-scale/blob/master/index.js\nexport function linearScale(input: readonly [number, number], output: readonly [number, number]) {\n return (value: number) => {\n if (input[0] === input[1] || output[0] === output[1]) return output[0];\n const ratio = (output[1] - output[0]) / (input[1] - input[0]);\n return output[0] + ratio * (value - input[0]);\n };\n}\n\n/**\n * Verifies the minimum steps between all values is greater than or equal\n * to the expected minimum steps.\n *\n * @example\n * // returns false\n * hasMinStepsBetweenValues([1,2,3], 2);\n *\n * @example\n * // returns true\n * hasMinStepsBetweenValues([1,2,3], 1);\n */\nexport function hasMinStepsBetweenValues(values: number[], minStepsBetweenValues: number) {\n if (minStepsBetweenValues > 0) {\n const stepsBetweenValues = getStepsBetweenValues(values);\n const actualMinStepsBetweenValues = Math.min(...stepsBetweenValues);\n return actualMinStepsBetweenValues >= minStepsBetweenValues;\n }\n return true;\n}\n\n/**\n * Given a `values` array and a `nextValue`, determine which value in\n * the array is closest to `nextValue` and return its index.\n *\n * @example\n * // returns 1\n * getClosestValueIndex([10, 30], 25);\n */\nexport function getClosestValueIndex(values: number[], nextValue: number) {\n if (values.length === 1) return 0;\n const distances = values.map((value) => Math.abs(value - nextValue));\n const closestDistance = Math.min(...distances);\n return distances.indexOf(closestDistance);\n}\n\n/**\n * Gets an array of steps between each value.\n *\n * @example\n * // returns [1, 9]\n * getStepsBetweenValues([10, 11, 20]);\n */\nexport function getStepsBetweenValues(values: number[]) {\n return values.slice(0, -1).map((value, index) => values[index + 1] - value);\n}\n\n/**\n * Offsets the thumb centre point while sliding to ensure it remains\n * within the bounds of the slider when reaching the edges\n */\nexport function getThumbInBoundsOffset(width: number, left: number, direction: number) {\n const halfWidth = width / 2;\n const halfPercent = 50;\n const offset = linearScale([0, halfPercent], [0, halfWidth]);\n return (halfWidth - offset(left) * direction) * direction;\n}\n\nexport function convertValueToPercentage(value: number, min: number, max: number) {\n const maxSteps = max - min;\n const percentPerStep = 100 / maxSteps;\n const percentage = percentPerStep * (value - min);\n return clamp(percentage, 0, 100);\n}\n\nexport function getDecimalCount(value: number) {\n return (String(value).split('.')[1] || '').length;\n}\n\nexport function roundValue(value: number, decimalCount: number) {\n const rounder = 10 ** decimalCount;\n return Math.round(value * rounder) / rounder;\n}\n\nexport function getNextSortedValues(prevValues: number[] = [], nextValue: number, atIndex: number) {\n const nextValues = [...prevValues];\n nextValues[atIndex] = nextValue;\n return nextValues.sort((a, b) => a - b);\n}\n\nexport const PAGE_KEYS = ['PageUp', 'PageDown'];\nexport const ARROW_KEYS = ['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'];\n\ntype SlideDirection = 'from-left' | 'from-right' | 'from-bottom' | 'from-top';\nexport const BACK_KEYS: Record<SlideDirection, string[]> = {\n 'from-left': ['Home', 'PageDown', 'ArrowDown', 'ArrowLeft'],\n 'from-right': ['Home', 'PageDown', 'ArrowDown', 'ArrowRight'],\n 'from-bottom': ['Home', 'PageDown', 'ArrowDown', 'ArrowLeft'],\n 'from-top': ['Home', 'PageUp', 'ArrowUp', 'ArrowLeft']\n};\n\nexport interface OrientationContext {\n direction: number;\n size: 'width' | 'height';\n startEdge: 'left' | 'top';\n endEdge: 'right' | 'bottom';\n}\n\nexport function clamp(\n value: number,\n min: number = Number.NEGATIVE_INFINITY,\n max: number = Number.POSITIVE_INFINITY\n): number {\n return Math.min(Math.max(value, min), max);\n}\n","import { Directive, inject, output } from '@angular/core';\nimport { RdxSliderRootComponent } from './slider-root.component';\nimport { ARROW_KEYS, PAGE_KEYS } from './utils';\n\n@Directive({\n selector: '[rdxSliderImpl]',\n host: {\n role: 'slider',\n tabindex: '0',\n '(keydown)': 'onKeyDown($event)',\n '(pointerdown)': 'onPointerDown($event)',\n '(pointermove)': 'onPointerMove($event)',\n '(pointerup)': 'onPointerUp($event)'\n }\n})\nexport class RdxSliderImplDirective {\n protected readonly rootContext = inject(RdxSliderRootComponent);\n\n readonly slideStart = output<PointerEvent>();\n readonly slideMove = output<PointerEvent>();\n readonly slideEnd = output<PointerEvent>();\n readonly homeKeyDown = output<KeyboardEvent>();\n readonly endKeyDown = output<KeyboardEvent>();\n readonly stepKeyDown = output<KeyboardEvent>();\n\n onKeyDown(event: Event) {\n const keyEvent = event as KeyboardEvent;\n if (keyEvent.key === 'Home') {\n this.homeKeyDown.emit(keyEvent);\n // Prevent scrolling to page start\n event.preventDefault();\n } else if (keyEvent.key === 'End') {\n this.endKeyDown.emit(keyEvent);\n // Prevent scrolling to page end\n event.preventDefault();\n } else if (PAGE_KEYS.concat(ARROW_KEYS).includes(keyEvent.key)) {\n this.stepKeyDown.emit(keyEvent);\n // Prevent scrolling for directional key presses\n event.preventDefault();\n }\n }\n\n onPointerDown(event: Event) {\n const pointerEvent = event as PointerEvent;\n const target = event.target as HTMLElement;\n target.setPointerCapture(pointerEvent.pointerId);\n\n // Prevent browser focus behaviour because we focus a thumb manually when values change.\n event.preventDefault();\n\n // Touch devices have a delay before focusing so won't focus if touch immediately moves\n // away from target (sliding). We want thumb to focus regardless.\n if (this.rootContext.thumbElements.includes(target)) {\n target.focus();\n } else {\n this.slideStart.emit(pointerEvent);\n }\n }\n\n onPointerMove(event: Event) {\n const pointerEvent = event as PointerEvent;\n const target = event.target as HTMLElement;\n if (target.hasPointerCapture(pointerEvent.pointerId)) {\n this.slideMove.emit(pointerEvent);\n }\n }\n\n onPointerUp(event: Event) {\n const pointerEvent = event as PointerEvent;\n const target = event.target as HTMLElement;\n if (target.hasPointerCapture(pointerEvent.pointerId)) {\n target.releasePointerCapture(pointerEvent.pointerId);\n this.slideEnd.emit(pointerEvent);\n }\n }\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport {\n booleanAttribute,\n Component,\n ElementRef,\n inject,\n input,\n Input,\n output,\n signal,\n viewChild\n} from '@angular/core';\nimport { RdxSliderImplDirective } from './slider-impl.directive';\nimport { RdxSliderRootComponent } from './slider-root.component';\nimport { BACK_KEYS, linearScale } from './utils';\n\n@Component({\n selector: 'rdx-slider-horizontal',\n imports: [RdxSliderImplDirective],\n template: `\n <span\n #sliderElement\n [class]=\"className\"\n [attr.data-orientation]=\"'horizontal'\"\n [style]=\"{ '--rdx-slider-thumb-transform': 'translateX(-50%)' }\"\n (slideStart)=\"onSlideStart($event)\"\n (slideMove)=\"onSlideMove($event)\"\n (slideEnd)=\"onSlideEnd()\"\n (stepKeyDown)=\"onStepKeyDown($event)\"\n (endKeyDown)=\"endKeyDown.emit($event)\"\n (homeKeyDown)=\"homeKeyDown.emit($event)\"\n rdxSliderImpl\n >\n <ng-content />\n </span>\n `\n})\nexport class RdxSliderHorizontalComponent {\n private readonly rootContext = inject(RdxSliderRootComponent);\n\n @Input() dir: 'ltr' | 'rtl' = 'ltr';\n\n readonly inverted = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n @Input() min = 0;\n @Input() max = 100;\n\n @Input() className = '';\n\n readonly slideStart = output<number>();\n readonly slideMove = output<number>();\n readonly slideEnd = output<void>();\n readonly stepKeyDown = output<{ event: KeyboardEvent; direction: number }>();\n readonly endKeyDown = output<KeyboardEvent>();\n readonly homeKeyDown = output<KeyboardEvent>();\n\n private readonly sliderElement = viewChild<ElementRef>('sliderElement');\n\n private readonly rect = signal<DOMRect | undefined>(undefined);\n\n onSlideStart(event: PointerEvent) {\n const value = this.getValueFromPointer(event.clientX);\n this.slideStart.emit(value);\n }\n\n onSlideMove(event: PointerEvent) {\n const value = this.getValueFromPointer(event.clientX);\n this.slideMove.emit(value);\n }\n\n onSlideEnd() {\n this.rect.set(undefined);\n this.slideEnd.emit();\n }\n\n onStepKeyDown(event: KeyboardEvent) {\n const slideDirection = this.rootContext.isSlidingFromLeft() ? 'from-left' : 'from-right';\n const isBackKey = BACK_KEYS[slideDirection].includes(event.key);\n\n this.stepKeyDown.emit({ event, direction: isBackKey ? -1 : 1 });\n }\n\n private getValueFromPointer(pointerPosition: number): number {\n this.rect.set(this.sliderElement()?.nativeElement.getBoundingClientRect());\n const rect = this.rect();\n if (!rect) return 0;\n\n const input: [number, number] = [0, rect.width];\n const output: [number, number] = this.rootContext.isSlidingFromLeft()\n ? [this.min, this.max]\n : [this.max, this.min];\n\n const value = linearScale(input, output);\n this.rect.set(rect);\n\n return value(pointerPosition - rect.left);\n }\n}\n","import { Injectable, signal } from '@angular/core';\n\nexport interface OrientationContext {\n startEdge: string;\n endEdge: string;\n direction: number;\n size: string;\n}\n\n@Injectable()\nexport class RdxSliderOrientationContextService {\n private contextSignal = signal<OrientationContext>({\n startEdge: 'left',\n endEdge: 'right',\n direction: 1,\n size: 'width'\n });\n\n get context() {\n return this.contextSignal();\n }\n\n updateContext(context: Partial<OrientationContext>) {\n this.contextSignal.update((current) => ({\n ...current,\n ...context\n }));\n }\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport {\n booleanAttribute,\n Component,\n ElementRef,\n inject,\n input,\n Input,\n output,\n signal,\n viewChild\n} from '@angular/core';\nimport { RdxSliderImplDirective } from './slider-impl.directive';\nimport { RdxSliderRootComponent } from './slider-root.component';\nimport { BACK_KEYS, linearScale } from './utils';\n\n@Component({\n selector: 'rdx-slider-vertical',\n imports: [RdxSliderImplDirective],\n template: `\n <span\n #sliderElement\n [class]=\"className\"\n [attr.data-orientation]=\"'vertical'\"\n [style]=\"{ '--rdx-slider-thumb-transform': 'translateY(-50%)' }\"\n (slideStart)=\"onSlideStart($event)\"\n (slideMove)=\"onSlideMove($event)\"\n (slideEnd)=\"onSlideEnd()\"\n (stepKeyDown)=\"onStepKeyDown($event)\"\n (endKeyDown)=\"endKeyDown.emit($event)\"\n (homeKeyDown)=\"homeKeyDown.emit($event)\"\n rdxSliderImpl\n >\n <ng-content />\n </span>\n `\n})\nexport class RdxSliderVerticalComponent {\n private readonly rootContext = inject(RdxSliderRootComponent);\n\n @Input() dir: 'ltr' | 'rtl' = 'ltr';\n\n readonly inverted = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n @Input() min = 0;\n @Input() max = 100;\n\n @Input() className = '';\n\n readonly slideStart = output<number>();\n readonly slideMove = output<number>();\n readonly slideEnd = output<void>();\n readonly stepKeyDown = output<{ event: KeyboardEvent; direction: number }>();\n readonly endKeyDown = output<KeyboardEvent>();\n readonly homeKeyDown = output<KeyboardEvent>();\n\n private readonly sliderElement = viewChild<ElementRef>('sliderElement');\n\n private readonly rect = signal<DOMRect | undefined>(undefined);\n\n onSlideStart(event: PointerEvent) {\n const value = this.getValueFromPointer(event.clientY);\n this.slideStart.emit(value);\n }\n\n onSlideMove(event: PointerEvent) {\n const value = this.getValueFromPointer(event.clientY);\n this.slideMove.emit(value);\n }\n\n onSlideEnd() {\n this.rect.set(undefined);\n this.slideEnd.emit();\n }\n\n onStepKeyDown(event: KeyboardEvent) {\n const slideDirection = this.rootContext.isSlidingFromBottom() ? 'from-bottom' : 'from-top';\n const isBackKey = BACK_KEYS[slideDirection].includes(event.key);\n\n this.stepKeyDown.emit({ event, direction: isBackKey ? -1 : 1 });\n }\n\n private getValueFromPointer(pointerPosition: number): number {\n this.rect.set(this.sliderElement()?.nativeElement.getBoundingClientRect());\n const rect = this.rect();\n if (!rect) return 0;\n\n const input: [number, number] = [0, rect.height];\n const output: [number, number] = this.rootContext.isSlidingFromBottom()\n ? [this.max, this.min]\n : [this.min, this.max];\n\n const value = linearScale(input, output);\n this.rect.set(rect);\n\n return value(pointerPosition - rect.top);\n }\n}\n","import { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n Component,\n computed,\n inject,\n input,\n Input,\n model,\n numberAttribute,\n OnInit,\n output\n} from '@angular/core';\nimport { RdxSliderHorizontalComponent } from './slider-horizontal.component';\nimport { RdxSliderOrientationContextService } from './slider-orientation-context.service';\nimport { RdxSliderVerticalComponent } from './slider-vertical.component';\nimport {\n clamp,\n getClosestValueIndex,\n getDecimalCount,\n getNextSortedValues,\n hasMinStepsBetweenValues,\n roundValue\n} from './utils';\n\n/**\n * @group Components\n */\n@Component({\n selector: 'rdx-slider',\n imports: [RdxSliderHorizontalComponent, RdxSliderVerticalComponent, NgTemplateOutlet],\n providers: [RdxSliderOrientationContextService],\n template: `\n <ng-template #transclude><ng-content /></ng-template>\n\n @if (orientation() === 'horizontal') {\n <rdx-slider-horizontal\n [className]=\"styleClass() || className\"\n [min]=\"min()\"\n [max]=\"max()\"\n [dir]=\"dir()\"\n [inverted]=\"inverted()\"\n [attr.aria-disabled]=\"disabled()\"\n [attr.data-disabled]=\"disabled() ? '' : undefined\"\n (pointerdown)=\"onPointerDown()\"\n (slideStart)=\"handleSlideStart($event)\"\n (slideMove)=\"handleSlideMove($event)\"\n (slideEnd)=\"handleSlideEnd()\"\n (homeKeyDown)=\"updateValues(min(), 0, true)\"\n (endKeyDown)=\"updateValues(max(), modelValue().length - 1, true)\"\n (stepKeyDown)=\"handleStepKeyDown($event)\"\n >\n <ng-container *ngTemplateOutlet=\"transclude\" />\n </rdx-slider-horizontal>\n }\n\n @if (orientation() === 'vertical') {\n <rdx-slider-vertical\n [className]=\"styleClass() || className\"\n [min]=\"min()\"\n [max]=\"max()\"\n [dir]=\"dir()\"\n [inverted]=\"inverted()\"\n [attr.aria-disabled]=\"disabled()\"\n [attr.data-disabled]=\"disabled() ? '' : undefined\"\n (pointerdown)=\"onPointerDown()\"\n (slideStart)=\"handleSlideStart($event)\"\n (slideMove)=\"handleSlideMove($event)\"\n (slideEnd)=\"handleSlideEnd()\"\n (homeKeyDown)=\"updateValues(min(), 0, true)\"\n (endKeyDown)=\"updateValues(max(), modelValue().length - 1, true)\"\n (stepKeyDown)=\"handleStepKeyDown($event)\"\n >\n <ng-container *ngTemplateOutlet=\"transclude\" />\n </rdx-slider-vertical>\n }\n `\n})\nexport class RdxSliderRootComponent implements OnInit {\n /** @ignore */\n readonly orientationContext = inject(RdxSliderOrientationContextService);\n\n /**\n * The minimum value for the range.\n *\n * @group Props\n * @defaultValue 0\n */\n readonly min = input<number, NumberInput>(0, { transform: numberAttribute });\n\n /**\n * The maximum value for the range.\n *\n * @group Props\n * @defaultValue 100\n */\n readonly max = input<number, NumberInput>(100, { transform: numberAttribute });\n\n /**\n * The stepping interval.\n *\n * @group Props\n * @defaultValue 1\n */\n readonly step = input<number, NumberInput>(1, { transform: numberAttribute });\n\n /**\n * The minimum permitted steps between multiple thumbs.\n *\n * @group Props\n * @defaultValue 0\n */\n readonly minStepsBetweenThumbs = input<number, NumberInput>(0, { transform: numberAttribute });\n\n /**\n * The orientation of the slider.\n *\n * @group Props\n * @defaultValue 'horizontal'\n */\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\n\n /**\n * When true, prevents the user from interacting with the slider.\n *\n * @group Props\n * @defaultValue false\n */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * Whether the slider is visually inverted.\n *\n * @group Props\n * @defaultValue false\n */\n readonly inverted = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * The reading direction of the combobox when applicable.\n *\n * @group Props\n * @defaultValue 'ltr'\n */\n readonly dir = input<'ltr' | 'rtl'>('ltr');\n\n @Input() className: string = '';\n\n /**\n * Style class of the component.\n *\n * @group Props\n */\n readonly styleClass = input<string>();\n\n /**\n * The controlled value of the slider.\n *\n * @group Props\n */\n readonly modelValue = model<number[]>([0]);\n\n /**\n * Event handler called when the slider value changes.\n *\n * @group Emits\n */\n readonly valueChange = output<number[]>();\n\n /**\n * Event handler called when the value changes at the end of an interaction.\n *\n * Useful when you only need to capture a final value e.g. to update a backend service.\n *\n * @group Emits\n */\n readonly valueCommit = output<number[]>();\n\n /** @ignore */\n readonly valueIndexToChange = model(0);\n\n /** @ignore */\n readonly valuesBeforeSlideStart = model<number[]>([]);\n\n /** @ignore */\n readonly isSlidingFromLeft = computed(\n () => (this.dir() === 'ltr' && !this.inverted()) || (this.dir() !== 'ltr' && this.inverted())\n );\n\n /** @ignore */\n readonly isSlidingFromBottom = computed(() => !this.inverted());\n\n /** @ignore */\n thumbElements: HTMLElement[] = [];\n\n /** @ignore */\n ngOnInit() {\n const isHorizontal = this.orientation() === 'horizontal';\n\n if (isHorizontal) {\n this.orientationContext.updateContext({\n direction: this.isSlidingFromLeft() ? 1 : -1,\n size: 'width',\n startEdge: this.isSlidingFromLeft() ? 'left' : 'right',\n endEdge: this.isSlidingFromLeft() ? 'right' : 'left'\n });\n } else {\n this.orientationContext.updateContext({\n direction: this.isSlidingFromBottom() ? -1 : 1,\n size: 'height',\n startEdge: this.isSlidingFromBottom() ? 'bottom' : 'top',\n endEdge: this.isSlidingFromBottom() ? 'top' : 'bottom'\n });\n }\n }\n\n /** @ignore */\n onPointerDown() {\n this.valuesBeforeSlideStart.set([...this.modelValue()]);\n }\n\n /** @ignore */\n handleSlideStart(value: number): void {\n const closestIndex = getClosestValueIndex(this.modelValue(), value);\n this.updateValues(value, closestIndex);\n }\n\n /** @ignore */\n handleSlideMove(value: number): void {\n this.updateValues(value, this.valueIndexToChange());\n }\n\n /** @ignore */\n handleSlideEnd(): void {\n const prevValue = this.valuesBeforeSlideStart()[this.valueIndexToChange()];\n const nextValue = this.modelValue()[this.valueIndexToChange()];\n const hasChanged = nextValue !== prevValue;\n\n if (hasChanged) {\n this.valueCommit.emit([...this.modelValue()]);\n }\n }\n\n /** @ignore */\n handleStepKeyDown(event: { event: KeyboardEvent; direction: number }): void {\n const stepInDirection = this.step() * event.direction;\n const atIndex = this.valueIndexToChange();\n const currentValue = this.modelValue()[atIndex];\n this.updateValues(currentValue + stepInDirection, atIndex, true);\n }\n\n /** @ignore */\n updateValues(value: number, atIndex: number, commit = false): void {\n const decimalCount = getDecimalCount(this.step());\n const snapToStep = roundValue(\n Math.round((value - this.min()) / this.step()) * this.step() + this.min(),\n decimalCount\n );\n const nextValue = clamp(snapToStep, this.min(), this.max());\n\n const nextValues = getNextSortedValues(this.modelValue(), nextValue, atIndex);\n\n if (hasMinStepsBetweenValues(nextValues, this.minStepsBetweenThumbs() * this.step())) {\n this.valueIndexToChange.set(nextValues.indexOf(nextValue));\n const hasChanged = String(nextValues) !== String(this.modelValue());\n\n if (hasChanged) {\n this.modelValue.set(nextValues);\n this.valueChange.emit([...this.modelValue()]);\n this.thumbElements[this.valueIndexToChange()]?.focus();\n\n if (commit) {\n this.valueCommit.emit([...this.modelValue()]);\n }\n }\n }\n }\n}\n","import { Component, computed, inject } from '@angular/core';\nimport { RdxSliderRootComponent } from './slider-root.component';\nimport { convertValueToPercentage } from './utils';\n\n@Component({\n selector: 'rdx-slider-range',\n host: {\n '[attr.data-disabled]': 'rootContext.disabled() ? \"\" : undefined',\n '[attr.data-orientation]': 'rootContext.orientation()',\n '[style]': 'rangeStyles()'\n },\n template: `\n <ng-content />\n `\n})\nexport class RdxSliderRangeComponent {\n protected readonly rootContext = inject(RdxSliderRootComponent);\n\n percentages = computed(() =>\n this.rootContext\n .modelValue()\n ?.map((value) => convertValueToPercentage(value, this.rootContext.min(), this.rootContext.max()))\n );\n\n offsetStart = computed(() => (this.rootContext.modelValue()!.length > 1 ? Math.min(...this.percentages()!) : 0));\n offsetEnd = computed(() => 100 - Math.max(...this.percentages()!));\n\n rangeStyles = computed(() => {\n const context = this.rootContext.orientationContext.context;\n\n return {\n [context.startEdge]: `${this.offsetStart()}%`,\n [context.endEdge]: `${this.offsetEnd()}%`\n };\n });\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { computed, Directive, ElementRef, inject, OnDestroy, OnInit, PLATFORM_ID, signal } from '@angular/core';\nimport { RdxSliderRootComponent } from './slider-root.component';\nimport { convertValueToPercentage, getThumbInBoundsOffset } from './utils';\n\n@Directive({\n selector: '[rdxSliderThumbImpl]',\n host: {\n role: 'slider',\n '[tabindex]': 'rootContext.disabled() ? undefined : 0',\n\n '[attr.aria-valuenow]': 'rootContext.modelValue()',\n '[attr.aria-valuemin]': 'rootContext.min()',\n '[attr.aria-valuemax]': 'rootContext.max()',\n '[attr.aria-orientation]': 'rootContext.orientation()',\n\n '[attr.data-orientation]': 'rootContext.orientation()',\n '[attr.data-disabled]': 'rootContext.disabled() ? \"\" : undefined',\n\n '[style]': 'combinedStyles()',\n\n '(focus)': 'onFocus()'\n }\n})\nexport class RdxSliderThumbImplDirective implements OnInit, OnDestroy {\n protected readonly rootContext = inject(RdxSliderRootComponent);\n private readonly elementRef = inject(ElementRef);\n private readonly platformId = inject(PLATFORM_ID);\n private resizeObserver!: ResizeObserver;\n\n isMounted = signal(false);\n\n thumbIndex = computed(() => {\n const thumbElement = this.elementRef.nativeElement;\n const index = this.rootContext.thumbElements.indexOf(thumbElement);\n return index >= 0 ? index : null;\n });\n\n value = computed(() => {\n const index = this.thumbIndex();\n if (index === null) return undefined;\n return this.rootContext.modelValue()?.[index];\n });\n\n percent = computed(() => {\n const val = this.value();\n if (val === undefined) return 0;\n return convertValueToPercentage(val, this.rootContext.min(), this.rootContext.max());\n });\n\n transform = computed(() => {\n const percent = this.percent();\n const offset = this.thumbInBoundsOffset();\n return `calc(${percent}% + ${offset}px)`;\n });\n\n orientationSize = signal(0);\n\n thumbInBoundsOffset = computed(() => {\n const context = this.rootContext.orientationContext.context;\n\n const size = this.orientationSize();\n const percent = this.percent();\n const direction = context.direction;\n\n return size ? getThumbInBoundsOffset(size, percent, direction) : 0;\n });\n\n combinedStyles = computed(() => {\n const context = this.rootContext.orientationContext.context;\n\n const startEdge = context.startEdge;\n const percent = this.percent();\n const offset = this.thumbInBoundsOffset();\n\n return {\n position: 'absolute',\n transform: 'var(--rdx-slider-thumb-transform)',\n display: (this.isMounted() && this.value()) === false ? 'none' : undefined,\n [startEdge]: `calc(${percent}% + ${offset}px)`\n };\n });\n\n onFocus() {\n if (this.thumbIndex() !== null) {\n this.rootContext.valueIndexToChange.set(this.thumbIndex()!);\n }\n }\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n const thumbElement = this.elementRef.nativeElement;\n this.rootContext.thumbElements.push(thumbElement);\n\n this.resizeObserver = new ResizeObserver(() => {\n const rect = thumbElement.getBoundingClientRect();\n const context = this.rootContext.orientationContext.context;\n const size = context.size === 'width' ? rect.width : rect.height;\n this.orientationSize.set(size);\n });\n\n this.resizeObserver.observe(thumbElement);\n\n this.isMounted.set(true);\n }\n }\n\n ngOnDestroy() {\n const thumbElement = this.elementRef.nativeElement;\n const index = this.rootContext.thumbElements.indexOf(thumbElement);\n if (index >= 0) this.rootContext.thumbElements.splice(index, 1);\n\n if (this.resizeObserver) {\n this.resizeObserver.unobserve(thumbElement);\n }\n\n this.isMounted.set(false);\n }\n}\n","import { Component } from '@angular/core';\nimport { RdxSliderThumbImplDirective } from './slider-thumb-impl.directive';\n\n@Component({\n selector: 'rdx-slider-thumb',\n hostDirectives: [RdxSliderThumbImplDirective],\n template: `\n <ng-content />\n `\n})\nexport class RdxSliderThumbComponent {}\n","import { Component, inject } from '@angular/core';\nimport { RdxSliderRootComponent } from './slider-root.component';\n\n@Component({\n selector: 'rdx-slider-track',\n host: {\n '[attr.data-disabled]': \"rootContext.disabled() ? '' : undefined\",\n '[attr.data-orientation]': 'rootContext.orientation()'\n },\n template: `\n <ng-content />\n `\n})\nexport class RdxSliderTrackComponent {\n protected readonly rootContext = inject(RdxSliderRootComponent);\n}\n","import { NgModule } from '@angular/core';\nimport { RdxSliderRangeComponent } from './src/slider-range.component';\nimport { RdxSliderRootComponent } from './src/slider-root.component';\nimport { RdxSliderThumbComponent } from './src/slider-thumb.component';\nimport { RdxSliderTrackComponent } from './src/slider-track.component';\n\nexport * from './src/slider-horizontal.component';\nexport * from './src/slider-impl.directive';\nexport * from './src/slider-range.component';\nexport * from './src/slider-root.component';\nexport * from './src/slider-thumb-impl.directive';\nexport * from './src/slider-thumb.component';\nexport * from './src/slider-track.component';\nexport * from './src/slider-vertical.component';\n\nconst _imports = [RdxSliderRootComponent, RdxSliderTrackComponent, RdxSliderRangeComponent, RdxSliderThumbComponent];\n\n@NgModule({\n imports: [..._imports],\n exports: [..._imports]\n})\nexport class RdxSliderModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.RdxSliderThumbImplDirective"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"radix-ng-primitives-slider.mjs","sources":["../../../packages/primitives/slider/src/slider-context.ts","../../../packages/primitives/slider/src/slider.utils.ts","../../../packages/primitives/slider/src/slider-control.ts","../../../packages/primitives/slider/src/slider-indicator.ts","../../../packages/primitives/slider/src/slider-root.ts","../../../packages/primitives/slider/src/slider-thumb.ts","../../../packages/primitives/slider/src/slider-thumb-input.ts","../../../packages/primitives/slider/src/slider-track.ts","../../../packages/primitives/slider/src/slider-value.ts","../../../packages/primitives/slider/index.ts","../../../packages/primitives/slider/radix-ng-primitives-slider.ts"],"sourcesContent":["import { createContext } from '@radix-ng/primitives/core';\nimport type { RdxSliderRoot } from './slider-root';\n\n/**\n * The Slider context exposes the root directive instance to every child part.\n * The root owns all state, value-change logic and thumb registration; parts read\n * signals and call methods off it.\n *\n * @see https://base-ui.com/react/components/slider\n */\nexport const [injectSliderRootContext, provideSliderRootContext] = createContext<RdxSliderRoot>('RdxSliderRootContext');\n","import { clamp } from '@radix-ng/primitives/core';\n\nexport { clamp };\n\nexport type SliderOrientation = 'horizontal' | 'vertical';\nexport type ThumbCollisionBehavior = 'push' | 'swap' | 'none';\n\n/** Ascending comparator. */\nexport function asc(a: number, b: number): number {\n return a - b;\n}\n\n/** Maps a value within `[min, max]` to a 0–100 percentage. */\nexport function valueToPercent(value: number, min: number, max: number): number {\n return ((value - min) * 100) / (max - min);\n}\n\n/** Replaces the item at `index` then re-sorts the array ascending. */\nexport function replaceArrayItemAtIndex(array: readonly number[], index: number, newValue: number): number[] {\n const output = array.slice();\n output[index] = newValue;\n return output.sort(asc);\n}\n\n/** The center point of an element in client coordinates. */\nexport function getMidpoint(element: Element): { x: number; y: number } {\n const rect = element.getBoundingClientRect();\n return { x: (rect.left + rect.right) / 2, y: (rect.top + rect.bottom) / 2 };\n}\n\n/** Converts an array of values into clamped 0–100 percentages. */\nexport function valueArrayToPercentages(values: readonly number[], min: number, max: number): number[] {\n return values.map((value) => clamp(valueToPercent(value, min, max), 0, 100));\n}\n\n/** Number of decimal places in `num`, handling exponential notation for tiny values. */\nexport function getDecimalPrecision(num: number): number {\n if (num === 0) {\n return 0;\n }\n if (Math.abs(num) < 1) {\n const parts = num.toExponential().split('e-');\n const mantissaDecimalPart = parts[0].split('.')[1];\n return (mantissaDecimalPart ? mantissaDecimalPart.length : 0) + parseInt(parts[1], 10);\n }\n const decimalPart = num.toString().split('.')[1];\n return decimalPart ? decimalPart.length : 0;\n}\n\n/** Snaps `value` to the nearest step, using `min` as the origin of the step grid. */\nexport function roundValueToStep(value: number, step: number, min: number): number {\n const nearest = Math.round((value - min) / step) * step + min;\n return Number(nearest.toFixed(Math.max(getDecimalPrecision(step), getDecimalPrecision(min))));\n}\n\n/**\n * Resolves the value(s) for the keyboard / hidden-input path: clamps to the\n * bounds, and for range sliders also clamps to neighbouring thumbs and re-sorts.\n * Returns a `number` for single sliders and a sorted `number[]` for range sliders.\n */\nexport function getSliderValue(\n valueInput: number,\n index: number,\n min: number,\n max: number,\n range: boolean,\n values: readonly number[]\n): number | number[] {\n let newValue = clamp(valueInput, min, max);\n if (range) {\n newValue = clamp(\n newValue,\n values[index - 1] ?? Number.NEGATIVE_INFINITY,\n values[index + 1] ?? Number.POSITIVE_INFINITY\n );\n return replaceArrayItemAtIndex(values, index, newValue);\n }\n return newValue;\n}\n\n/** Returns `false` if any adjacent pair of values is closer than the minimum distance. */\nexport function validateMinimumDistance(\n values: number | number[],\n step: number,\n minStepsBetweenValues: number\n): boolean {\n if (!Array.isArray(values)) {\n return true;\n }\n const distances = values.reduce<number[]>((acc, val, index, vals) => {\n if (index === vals.length - 1) {\n return acc;\n }\n acc.push(Math.abs(val - vals[index + 1]));\n return acc;\n }, []);\n return Math.min(...distances) >= step * minStepsBetweenValues;\n}\n\n/** Keyboard step helper: increments/decrements `thumbValue` and clamps to bounds. */\nexport function getNewValue(\n thumbValue: number,\n increment: number,\n direction: 1 | -1,\n min: number,\n max: number\n): number {\n const value = direction === 1 ? thumbValue + increment : thumbValue - increment;\n const roundedValue = Number(\n value.toFixed(\n Math.max(getDecimalPrecision(thumbValue), getDecimalPrecision(increment), getDecimalPrecision(min))\n )\n );\n return clamp(roundedValue, min, max);\n}\n\ninterface GetPushedThumbValuesParams {\n values: readonly number[];\n index: number;\n nextValue: number;\n min: number;\n max: number;\n step: number;\n minStepsBetweenValues: number;\n initialValues?: readonly number[];\n}\n\n/**\n * The \"push\" collision algorithm: moves the pressed thumb and pushes its\n * neighbours only as far as needed, letting them spring back toward their\n * initial positions as the pressed thumb retreats.\n */\nexport function getPushedThumbValues(params: GetPushedThumbValuesParams): number[] {\n const { values, index, nextValue, min, max, step, minStepsBetweenValues, initialValues } = params;\n if (values.length === 0) {\n return [];\n }\n const nextValues = values.slice();\n const minValueDifference = step * minStepsBetweenValues;\n const lastIndex = nextValues.length - 1;\n const baseInitialValues = initialValues ?? values;\n\n const indexMin = min + index * minValueDifference;\n const indexMax = max - (lastIndex - index) * minValueDifference;\n nextValues[index] = clamp(nextValue, indexMin, indexMax);\n\n // push thumbs to the right\n for (let i = index + 1; i <= lastIndex; i += 1) {\n const minAllowed = nextValues[i - 1] + minValueDifference;\n const maxAllowed = max - (lastIndex - i) * minValueDifference;\n const initialValue = baseInitialValues[i] ?? nextValues[i];\n let candidate = Math.max(nextValues[i], minAllowed);\n if (initialValue < candidate) {\n candidate = Math.max(initialValue, minAllowed);\n }\n nextValues[i] = clamp(candidate, minAllowed, maxAllowed);\n }\n\n // push thumbs to the left\n for (let i = index - 1; i >= 0; i -= 1) {\n const maxAllowed = nextValues[i + 1] - minValueDifference;\n const minAllowed = min + i * minValueDifference;\n const initialValue = baseInitialValues[i] ?? nextValues[i];\n let candidate = Math.min(nextValues[i], maxAllowed);\n if (initialValue > candidate) {\n candidate = Math.min(initialValue, maxAllowed);\n }\n nextValues[i] = clamp(candidate, minAllowed, maxAllowed);\n }\n\n for (let i = 0; i <= lastIndex; i += 1) {\n nextValues[i] = Number(nextValues[i].toFixed(12));\n }\n return nextValues;\n}\n\nexport interface ResolveThumbCollisionParams {\n behavior: ThumbCollisionBehavior;\n values: readonly number[];\n currentValues?: readonly number[];\n initialValues?: readonly number[] | null;\n pressedIndex: number;\n nextValue: number;\n min: number;\n max: number;\n step: number;\n minStepsBetweenValues: number;\n}\n\nexport interface ResolveThumbCollisionResult {\n value: number | number[];\n thumbIndex: number;\n didSwap: boolean;\n}\n\n/** Dispatches the pressed thumb's new value through the configured collision behavior. */\nexport function resolveThumbCollision(params: ResolveThumbCollisionParams): ResolveThumbCollisionResult {\n const {\n behavior,\n values,\n currentValues,\n initialValues,\n pressedIndex,\n nextValue,\n min,\n max,\n step,\n minStepsBetweenValues\n } = params;\n\n const activeValues = (currentValues ?? values).slice();\n const baselineValues = initialValues ?? values;\n const range = activeValues.length > 1;\n const minValueDifference = step * minStepsBetweenValues;\n\n if (!range) {\n return { value: nextValue, thumbIndex: 0, didSwap: false };\n }\n\n if (behavior === 'push') {\n const value = getPushedThumbValues({\n values: activeValues,\n index: pressedIndex,\n nextValue,\n min,\n max,\n step,\n minStepsBetweenValues\n });\n return { value, thumbIndex: pressedIndex, didSwap: false };\n }\n\n if (behavior === 'swap') {\n const pressedInitialValue = activeValues[pressedIndex];\n const epsilon = 1e-7;\n const candidateValues = activeValues.slice();\n const previousNeighbor = candidateValues[pressedIndex - 1];\n const nextNeighbor = candidateValues[pressedIndex + 1];\n\n const lowerBound = previousNeighbor != null ? previousNeighbor + minValueDifference : min;\n const upperBound = nextNeighbor != null ? nextNeighbor - minValueDifference : max;\n\n const constrainedValue = clamp(nextValue, lowerBound, upperBound);\n const pressedValueAfterClamp = Number(constrainedValue.toFixed(12));\n candidateValues[pressedIndex] = pressedValueAfterClamp;\n\n const movingForward = nextValue > pressedInitialValue;\n const movingBackward = nextValue < pressedInitialValue;\n const shouldSwapForward = movingForward && nextNeighbor != null && nextValue >= nextNeighbor - epsilon;\n const shouldSwapBackward =\n movingBackward && previousNeighbor != null && nextValue <= previousNeighbor + epsilon;\n\n if (!shouldSwapForward && !shouldSwapBackward) {\n return { value: candidateValues, thumbIndex: pressedIndex, didSwap: false };\n }\n\n const targetIndex = shouldSwapForward ? pressedIndex + 1 : pressedIndex - 1;\n\n const initialValuesForPush = candidateValues.map((_, idx) => {\n if (idx === pressedIndex) {\n return pressedValueAfterClamp;\n }\n const baseline = baselineValues[idx];\n return baseline != null ? baseline : activeValues[idx];\n });\n\n const nextValueForTarget = shouldSwapForward\n ? Math.max(nextValue, candidateValues[targetIndex])\n : Math.min(nextValue, candidateValues[targetIndex]);\n\n const adjustedValues = getPushedThumbValues({\n values: candidateValues,\n index: targetIndex,\n nextValue: nextValueForTarget,\n min,\n max,\n step,\n minStepsBetweenValues,\n initialValues: initialValuesForPush\n });\n\n const neighborIndex = shouldSwapForward ? targetIndex - 1 : targetIndex + 1;\n if (neighborIndex >= 0 && neighborIndex < adjustedValues.length) {\n const previousValue = adjustedValues[neighborIndex - 1];\n const nextValueAfter = adjustedValues[neighborIndex + 1];\n let neighborLowerBound = previousValue != null ? previousValue + minValueDifference : min;\n neighborLowerBound = Math.max(neighborLowerBound, min + neighborIndex * minValueDifference);\n let neighborUpperBound = nextValueAfter != null ? nextValueAfter - minValueDifference : max;\n neighborUpperBound = Math.min(\n neighborUpperBound,\n max - (adjustedValues.length - 1 - neighborIndex) * minValueDifference\n );\n const restoredValue = clamp(pressedValueAfterClamp, neighborLowerBound, neighborUpperBound);\n adjustedValues[neighborIndex] = Number(restoredValue.toFixed(12));\n }\n\n return { value: adjustedValues, thumbIndex: targetIndex, didSwap: true };\n }\n\n // behavior === 'none' — clamp the pressed thumb between its neighbours; thumbs never cross.\n const previousNeighbor = activeValues[pressedIndex - 1];\n const nextNeighbor = activeValues[pressedIndex + 1];\n const lowerBound = previousNeighbor != null ? previousNeighbor + minValueDifference : min;\n const upperBound = nextNeighbor != null ? nextNeighbor - minValueDifference : max;\n const constrained = Number(clamp(nextValue, lowerBound, upperBound).toFixed(12));\n const value = activeValues.slice();\n value[pressedIndex] = constrained;\n return { value, thumbIndex: pressedIndex, didSwap: false };\n}\n\n/**\n * Border + padding on the leading/trailing edge of the control along the active\n * axis. Uses physical longhands (`left`/`right`/`top`/`bottom`) rather than\n * logical ones (`inline-start`/…) because `getComputedStyle` resolves the\n * physical properties in every browser, whereas logical longhands return an\n * empty string in some engines.\n */\nexport function getControlOffset(\n styles: CSSStyleDeclaration | null,\n vertical: boolean,\n rtl: boolean\n): { start: number; end: number } {\n if (!styles) {\n return { start: 0, end: 0 };\n }\n const parseSize = (v: string): number => {\n const p = parseFloat(v);\n return Number.isNaN(p) ? 0 : p;\n };\n const sideOffset = (side: 'left' | 'right' | 'top' | 'bottom'): number =>\n parseSize(styles.getPropertyValue(`border-${side}-width`)) +\n parseSize(styles.getPropertyValue(`padding-${side}`));\n\n let startSide: 'left' | 'right' | 'top';\n let endSide: 'right' | 'left' | 'bottom';\n if (vertical) {\n startSide = 'top';\n endSide = 'bottom';\n } else if (rtl) {\n startSide = 'right';\n endSide = 'left';\n } else {\n startSide = 'left';\n endSide = 'right';\n }\n\n return { start: sideOffset(startSide), end: sideOffset(endSide) };\n}\n\nconst formatterCache = new Map<string, Intl.NumberFormat>();\n\nfunction getFormatter(locale: string | undefined, options: Intl.NumberFormatOptions | undefined): Intl.NumberFormat {\n const key = JSON.stringify({ locale: locale ?? null, options: options ?? null });\n let formatter = formatterCache.get(key);\n if (!formatter) {\n formatter = new Intl.NumberFormat(locale, options);\n formatterCache.set(key, formatter);\n }\n return formatter;\n}\n\n/** Formats a number with a cached `Intl.NumberFormat` instance. */\nexport function formatNumber(\n value: number | null | undefined,\n locale: string | undefined,\n options: Intl.NumberFormatOptions | undefined\n): string {\n if (value == null) {\n return '';\n }\n return getFormatter(locale, options).format(value);\n}\n\n/** Default `aria-valuetext` for a two-thumb range, or a formatted value when `format` is set. */\nexport function getDefaultAriaValueText(\n values: readonly number[],\n index: number,\n format: Intl.NumberFormatOptions | undefined,\n locale: string | undefined\n): string | undefined {\n if (index < 0) {\n return undefined;\n }\n if (values.length === 2) {\n return index === 0\n ? `${formatNumber(values[index], locale, format)} start range`\n : `${formatNumber(values[index], locale, format)} end range`;\n }\n return format ? formatNumber(values[index], locale, format) : undefined;\n}\n\nexport const ARROW_KEYS = ['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'];\nexport const COMPOSITE_KEYS = new Set([...ARROW_KEYS, 'Home', 'End']);\nexport const ALL_KEYS = new Set([...COMPOSITE_KEYS, 'PageUp', 'PageDown']);\n\nexport function areValuesEqual(a: number | number[], b: number | number[]): boolean {\n if (Array.isArray(a) && Array.isArray(b)) {\n return a.length === b.length && a.every((v, i) => v === b[i]);\n }\n return a === b;\n}\n","import { DOCUMENT } from '@angular/common';\nimport { DestroyRef, Directive, ElementRef, inject } from '@angular/core';\nimport { injectSliderRootContext } from './slider-context';\nimport {\n clamp,\n getControlOffset,\n getMidpoint,\n resolveThumbCollision,\n ResolveThumbCollisionResult,\n roundValueToStep,\n validateMinimumDistance\n} from './slider.utils';\n\nconst INTENTIONAL_DRAG_COUNT_THRESHOLD = 2;\n\n/**\n * The interactive area of the slider. Handles pointer presses and drags on the\n * track, mapping pointer position to a value and moving the closest thumb.\n *\n * @see https://base-ui.com/react/components/slider\n */\n@Directive({\n selector: 'div[rdxSliderControl]',\n exportAs: 'rdxSliderControl',\n host: {\n '[attr.data-orientation]': 'root.orientation()',\n '[attr.data-disabled]': 'root.isDisabled() ? \"\" : undefined',\n '[attr.data-dragging]': 'root.dragging() ? \"\" : undefined',\n '(pointerdown)': 'onPointerDown($event)'\n }\n})\nexport class RdxSliderControl {\n protected readonly root = injectSliderRootContext()!;\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly document = inject(DOCUMENT);\n\n private styles: CSSStyleDeclaration | null = null;\n private moveCount = 0;\n private currentInteractionValue: number | number[] | null = null;\n\n private readonly onMove = (event: PointerEvent) => this.handleMove(event);\n private readonly onUp = (event: PointerEvent) => this.handleUp(event);\n private readonly onCancel = (event: PointerEvent) => this.handleUp(event);\n\n constructor() {\n this.root.controlRef.set(this.elementRef.nativeElement);\n inject(DestroyRef).onDestroy(() => this.stopListening());\n }\n\n protected onPointerDown(event: PointerEvent): void {\n const control = this.elementRef.nativeElement;\n if (this.root.isDisabled() || event.defaultPrevented || event.button !== 0) {\n return;\n }\n const target = event.target as HTMLElement | null;\n if (!target) {\n return;\n }\n\n // Suppress the nested range input's native click-to-set and drag so the\n // control fully owns pointer interaction (otherwise releasing on a thumb\n // fires a native change that snaps the value to the press point inside\n // the thumb-sized input). Focus is restored manually via focusThumb.\n event.preventDefault();\n\n this.styles = this.document.defaultView?.getComputedStyle(control) ?? null;\n this.startPressing({ x: event.clientX, y: event.clientY });\n const finger = this.getFingerState({ x: event.clientX, y: event.clientY });\n if (finger == null) {\n return;\n }\n\n this.root.setDragging(true);\n\n // Pressing directly on a thumb sets a center offset; only a rail press changes value on down.\n if (this.root.pressedThumbCenterOffset == null) {\n this.setValueFromPointer(finger, 'track-press');\n }\n\n this.root.focusThumb(finger.thumbIndex);\n\n control.setPointerCapture(event.pointerId);\n this.moveCount = 0;\n this.document.addEventListener('pointermove', this.onMove);\n this.document.addEventListener('pointerup', this.onUp, { once: true });\n this.document.addEventListener('pointercancel', this.onCancel, { once: true });\n }\n\n private handleMove(event: PointerEvent): void {\n this.moveCount += 1;\n if (event.buttons === 0) {\n this.handleUp(event);\n return;\n }\n const finger = this.getFingerState({ x: event.clientX, y: event.clientY });\n if (finger == null) {\n return;\n }\n if (validateMinimumDistance(finger.value, this.root.step(), this.root.minStepsBetweenValues())) {\n if (!this.root.dragging() && this.moveCount > INTENTIONAL_DRAG_COUNT_THRESHOLD) {\n this.root.setDragging(true);\n }\n const applied = this.setValueFromPointer(finger, 'drag');\n if (applied && finger.didSwap) {\n this.root.focusThumb(finger.thumbIndex);\n }\n }\n }\n\n private handleUp(event: PointerEvent): void {\n this.root.setActive(-1);\n this.root.setDragging(false);\n this.root.pressedThumbCenterOffset = null;\n this.root.pressedInput = null;\n\n if (this.currentInteractionValue != null) {\n this.root.commitValue();\n }\n\n const control = this.elementRef.nativeElement;\n if (control.hasPointerCapture?.(event.pointerId)) {\n control.releasePointerCapture(event.pointerId);\n }\n\n this.root.resetPressedThumb();\n this.root.pressedValues = null;\n this.currentInteractionValue = null;\n this.stopListening();\n }\n\n private stopListening(): void {\n this.document.removeEventListener('pointermove', this.onMove);\n this.document.removeEventListener('pointerup', this.onUp);\n this.document.removeEventListener('pointercancel', this.onCancel);\n }\n\n private startPressing(finger: { x: number; y: number }): void {\n const values = this.root.values();\n const range = this.root.range();\n this.root.pressedValues = range ? values.slice() : null;\n this.currentInteractionValue = null;\n\n const pressedThumbIndex = this.root.pressedThumbIndex;\n let closestThumbIndex = pressedThumbIndex;\n\n if (pressedThumbIndex > -1 && pressedThumbIndex < values.length) {\n // Pressed directly on a thumb sitting on max — walk left over stacked max thumbs.\n if (values[pressedThumbIndex] === this.root.max()) {\n let c = pressedThumbIndex;\n while (c > 0 && values[c - 1] === this.root.max()) {\n c -= 1;\n }\n closestThumbIndex = c;\n }\n } else {\n // Pressed on the rail — find the nearest enabled thumb by midpoint distance.\n const axis = this.root.orientation() === 'horizontal' ? 'x' : 'y';\n const thumbs = this.root.thumbList();\n let minDistance: number | undefined;\n closestThumbIndex = -1;\n for (let i = 0; i < thumbs.length; i += 1) {\n const thumb = thumbs[i];\n if (thumb.disabled()) {\n continue;\n }\n const midpoint = getMidpoint(thumb.element);\n const distance = Math.abs(finger[axis] - midpoint[axis]);\n if (minDistance === undefined || distance <= minDistance) {\n closestThumbIndex = i;\n minDistance = distance;\n }\n }\n }\n\n if (closestThumbIndex > -1 && closestThumbIndex !== pressedThumbIndex) {\n this.root.pressedThumbIndex = closestThumbIndex;\n this.root.pressedInput = this.root.thumbList()[closestThumbIndex]?.inputElement ?? null;\n }\n }\n\n private setValueFromPointer(finger: ResolveThumbCollisionResult, reason: string): boolean {\n const nextValues = Array.isArray(finger.value) ? finger.value : [finger.value];\n const applied = this.root.setValue(nextValues, reason);\n if (applied) {\n this.currentInteractionValue = finger.value;\n if (finger.didSwap) {\n this.root.pressedThumbIndex = finger.thumbIndex;\n this.root.pressedInput = this.root.thumbList()[finger.thumbIndex]?.inputElement ?? null;\n }\n }\n return applied;\n }\n\n /** Projects a pointer position onto the track and resolves it to a value (+ collision). */\n private getFingerState(finger: { x: number; y: number }): ResolveThumbCollisionResult | null {\n const control = this.root.controlRef();\n const values = this.root.values();\n const range = this.root.range();\n const thumbIndex = this.root.pressedThumbIndex;\n const vertical = this.root.orientation() === 'vertical';\n const rtl = this.root.dir() === 'rtl';\n const min = this.root.min();\n const max = this.root.max();\n const step = this.root.step();\n\n if (!control || (!range && (thumbIndex < 0 || thumbIndex >= values.length))) {\n return null;\n }\n\n const { width, height, bottom, left, right } = control.getBoundingClientRect();\n const controlOffset = getControlOffset(this.styles, vertical, rtl);\n const controlSize = (vertical ? height : width) - controlOffset.start - controlOffset.end;\n\n // A collapsed/unmeasurable track would divide by zero and yield NaN values.\n if (!(controlSize > 0)) {\n return null;\n }\n\n const thumbCenterOffset = this.root.pressedThumbCenterOffset ?? 0;\n const fingerX = finger.x - thumbCenterOffset;\n const fingerY = finger.y - thumbCenterOffset;\n\n const valueSize = vertical\n ? bottom - fingerY - controlOffset.end\n : (rtl ? right - fingerX : fingerX - left) - controlOffset.start;\n\n const valueRescaled = clamp(valueSize / controlSize, 0, 1);\n\n let newValue = (max - min) * valueRescaled + min;\n newValue = roundValueToStep(newValue, step, min);\n newValue = clamp(newValue, min, max);\n\n if (!range) {\n return { value: newValue, thumbIndex, didSwap: false };\n }\n if (thumbIndex < 0) {\n return null;\n }\n\n return resolveThumbCollision({\n behavior: this.root.thumbCollisionBehavior(),\n values,\n currentValues: values,\n initialValues: this.root.pressedValues,\n pressedIndex: thumbIndex,\n nextValue: newValue,\n min,\n max,\n step,\n minStepsBetweenValues: this.root.minStepsBetweenValues()\n });\n }\n}\n","import { computed, Directive } from '@angular/core';\nimport { injectSliderRootContext } from './slider-context';\nimport { valueToPercent } from './slider.utils';\n\n/**\n * Visualises the portion of the track between the slider's minimum (or the first\n * thumb in a range) and the active value.\n *\n * @see https://base-ui.com/react/components/slider\n */\n@Directive({\n selector: 'div[rdxSliderIndicator]',\n exportAs: 'rdxSliderIndicator',\n host: {\n '[style]': 'indicatorStyle()',\n '[attr.data-orientation]': 'root.orientation()',\n '[attr.data-disabled]': 'root.isDisabled() ? \"\" : undefined',\n '[attr.data-dragging]': 'root.dragging() ? \"\" : undefined'\n }\n})\nexport class RdxSliderIndicator {\n protected readonly root = injectSliderRootContext()!;\n\n protected readonly indicatorStyle = computed<Record<string, string | number>>(() => {\n const vertical = this.root.orientation() === 'vertical';\n const range = this.root.range();\n const values = this.root.values();\n const min = this.root.min();\n const max = this.root.max();\n\n const startEdge = vertical ? 'bottom' : 'inset-inline-start';\n const mainSide = vertical ? 'height' : 'width';\n const crossSide = vertical ? 'width' : 'height';\n\n const start = valueToPercent(values[0], min, max);\n const end = valueToPercent(values[values.length - 1], min, max);\n\n const styles: Record<string, string | number> = {\n position: vertical ? 'absolute' : 'relative',\n [crossSide]: 'inherit'\n };\n\n if (!range) {\n styles[startEdge] = 0;\n styles[mainSide] = `${start}%`;\n return styles;\n }\n\n styles[startEdge] = `${start}%`;\n styles[mainSide] = `${end - start}%`;\n return styles;\n });\n}\n","import {\n booleanAttribute,\n computed,\n Directive,\n inject,\n input,\n model,\n numberAttribute,\n output,\n signal,\n Signal\n} from '@angular/core';\nimport {\n BooleanInput,\n injectControlValueAccessor,\n injectId,\n NumberInput,\n RdxControlValueAccessor\n} from '@radix-ng/primitives/core';\nimport { provideSliderRootContext } from './slider-context';\nimport {\n areValuesEqual,\n asc,\n clamp,\n formatNumber,\n getSliderValue,\n SliderOrientation,\n ThumbCollisionBehavior,\n validateMinimumDistance\n} from './slider.utils';\n\nexport type SliderValue = number | number[];\n\n/** Minimal shape a thumb registers with the root, used for hit-testing and focus. */\nexport interface RdxSliderThumbRef {\n /** The thumb wrapper element. */\n readonly element: HTMLElement;\n /** The nested `input[type=range]`, registered once it is initialised. */\n inputElement: HTMLInputElement | null;\n /** Whether this thumb is disabled (own state OR root disabled). */\n readonly disabled: Signal<boolean>;\n}\n\nfunction sortByDomOrder(list: readonly RdxSliderThumbRef[]): RdxSliderThumbRef[] {\n return list.slice().sort((a, b) => {\n const position = a.element.compareDocumentPosition(b.element);\n\n if (position & Node.DOCUMENT_POSITION_FOLLOWING) {\n return -1;\n }\n\n if (position & Node.DOCUMENT_POSITION_PRECEDING) {\n return 1;\n }\n return 0;\n });\n}\n\n/**\n * Groups all parts of the slider and owns its state, value-change logic and\n * thumb registration. A single directive drives both orientations — there are no\n * separate horizontal/vertical components.\n *\n * @see https://base-ui.com/react/components/slider\n */\n@Directive({\n selector: 'div[rdxSliderRoot]',\n exportAs: 'rdxSliderRoot',\n providers: [provideSliderRootContext(() => inject(RdxSliderRoot))],\n hostDirectives: [\n {\n directive: RdxControlValueAccessor,\n inputs: ['value: value', 'disabled']\n }\n ],\n host: {\n role: 'group',\n '[id]': 'id()',\n '[attr.aria-labelledby]': 'ariaLabelledBy()',\n '[attr.dir]': 'dir()',\n '[attr.data-orientation]': 'orientation()',\n '[attr.data-disabled]': 'isDisabled() ? \"\" : undefined',\n '[attr.data-dragging]': 'dragging() ? \"\" : undefined'\n }\n})\nexport class RdxSliderRoot {\n /** @ignore */\n protected readonly cva = injectControlValueAccessor<SliderValue>();\n\n readonly id = input<string>(injectId('rdx-slider-'));\n\n /**\n * The minimum value of the slider.\n * @default 0\n */\n readonly min = input<number, NumberInput>(0, { transform: numberAttribute });\n\n /**\n * The maximum value of the slider.\n * @default 100\n */\n readonly max = input<number, NumberInput>(100, { transform: numberAttribute });\n\n /**\n * The granularity with which the value can change through user interaction.\n * @default 1\n */\n readonly step = input<number, NumberInput>(1, { transform: numberAttribute });\n\n /**\n * The granularity with which the value changes on Page Up / Page Down keys and Shift + Arrow keys.\n * @default 10\n */\n readonly largeStep = input<number, NumberInput>(10, { transform: numberAttribute });\n\n /**\n * The minimum number of steps that must separate two thumbs in a range slider.\n * @default 0\n */\n readonly minStepsBetweenValues = input<number, NumberInput>(0, { transform: numberAttribute });\n\n /**\n * The orientation of the slider.\n * @default 'horizontal'\n */\n readonly orientation = input<SliderOrientation>('horizontal');\n\n /**\n * The reading direction. Mirrors the horizontal axis when set to `'rtl'`.\n * @default 'ltr'\n */\n readonly dir = input<'ltr' | 'rtl'>('ltr');\n\n /**\n * How thumbs behave when they meet in a range slider.\n * @default 'push'\n */\n readonly thumbCollisionBehavior = input<ThumbCollisionBehavior>('push');\n\n /** Options forwarded to `Intl.NumberFormat` when displaying and announcing values. */\n readonly format = input<Intl.NumberFormatOptions>();\n\n /** Locale used for value formatting. */\n readonly locale = input<string>();\n\n /** Name of the hidden inputs rendered by each thumb, for form submission. */\n readonly name = input<string>();\n\n /** Id of the form the slider belongs to. */\n readonly form = input<string>();\n\n /**\n * When `true`, the user cannot interact with the slider.\n * @default false\n */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** The uncontrolled value of the slider when it is initially rendered. */\n readonly defaultValue = input<SliderValue>();\n\n /** The controlled value of the slider. Use with `(onValueChange)` or two-way `[(value)]`. */\n readonly value = model<SliderValue>();\n\n readonly ariaLabelledBy = input<string | undefined>(undefined, { alias: 'aria-labelledby' });\n\n /** Emitted when the value changes (during interaction). */\n readonly onValueChange = output<SliderValue>();\n\n /** Emitted when interaction ends, with the final value — useful for committing to a backend. */\n readonly onValueCommitted = output<SliderValue>();\n\n /** @ignore */\n readonly controlRef = signal<HTMLElement | null>(null);\n\n /** @ignore Active thumb index (-1 when none). */\n readonly active = signal(-1);\n /** @ignore Last thumb index that was focused/used, drives z-index stacking. */\n readonly lastUsedThumbIndex = signal(-1);\n /** @ignore Whether a pointer drag is in progress. */\n readonly dragging = signal(false);\n\n /** @ignore Pointer-drag scratch state (not reactive). */\n pressedThumbIndex = -1;\n /** @ignore */\n pressedThumbCenterOffset: number | null = null;\n /** @ignore */\n pressedInput: HTMLInputElement | null = null;\n /** @ignore Snapshot of values at drag start, the baseline for push/swap. */\n pressedValues: number[] | null = null;\n /** @ignore */\n lastChangeReason = 'none';\n\n /** @ignore */\n readonly isDisabled = computed(() => !!this.cva.disabled());\n\n /** @ignore The current value source (controlled value, else default, else min). */\n private readonly currentRaw = computed<SliderValue>(() => this.cva.value() ?? this.defaultValue() ?? this.min());\n\n /** Whether the slider has multiple thumbs (the value is an array). */\n readonly range = computed(() => Array.isArray(this.cva.value() ?? this.defaultValue()));\n\n /** The clamped values rendered to the user, sorted ascending for range sliders. */\n readonly values = computed<number[]>(() => {\n const raw = this.currentRaw();\n const min = this.min();\n const max = this.max();\n const arr = (Array.isArray(raw) ? raw.slice() : [raw]).map((v) => clamp(v, min, max));\n return this.range() ? arr.sort(asc) : arr;\n });\n\n private readonly thumbs = signal<RdxSliderThumbRef[]>([]);\n /** Registered thumbs in DOM order. */\n readonly thumbList = this.thumbs.asReadonly();\n\n /** @ignore */\n registerThumb(thumb: RdxSliderThumbRef): void {\n this.thumbs.update((list) => sortByDomOrder([...list, thumb]));\n }\n\n /** @ignore */\n unregisterThumb(thumb: RdxSliderThumbRef): void {\n this.thumbs.update((list) => list.filter((t) => t !== thumb));\n }\n\n /** @ignore */\n thumbIndexOf(thumb: RdxSliderThumbRef): number {\n return this.thumbList().indexOf(thumb);\n }\n\n /** @ignore */\n setActive(index: number): void {\n this.active.set(index);\n if (index !== -1) {\n this.lastUsedThumbIndex.set(index);\n }\n }\n\n /** @ignore */\n focusThumb(index: number): void {\n this.thumbList()[index]?.inputElement?.focus({ preventScroll: true });\n }\n\n /** @ignore */\n formatValue(value: number): string {\n return formatNumber(value, this.locale(), this.format());\n }\n\n /** @ignore Output value matching the original value shape (number vs array). */\n private outputValue(): SliderValue {\n const raw = this.cva.value();\n if (raw !== undefined) {\n return raw;\n }\n return this.range() ? this.values() : this.values()[0];\n }\n\n /**\n * @ignore\n * Applies a new full set of values, preserving the single/range value shape.\n * Returns `false` when the value did not change.\n */\n setValue(nextValues: number[], reason: string): boolean {\n const next: SliderValue = this.range() ? nextValues : nextValues[0];\n const current = this.outputValue();\n const hasNaN = Array.isArray(next) ? next.some((v) => Number.isNaN(v)) : Number.isNaN(next);\n if (hasNaN || areValuesEqual(next, current)) {\n return false;\n }\n this.lastChangeReason = reason;\n this.value.set(next);\n this.cva.setValue(next);\n this.onValueChange.emit(next);\n return true;\n }\n\n /** @ignore Keyboard / native input path: clamps to neighbours, commits immediately. */\n handleInputChange(valueInput: number, index: number, reason = 'keyboard'): void {\n if (this.isDisabled()) {\n return;\n }\n const result = getSliderValue(valueInput, index, this.min(), this.max(), this.range(), this.values());\n if (!validateMinimumDistance(result, this.step(), this.minStepsBetweenValues())) {\n return;\n }\n const arr = Array.isArray(result) ? result : [result];\n const applied = this.setValue(arr, reason);\n this.cva.markAsTouched();\n if (applied) {\n this.onValueCommitted.emit(this.outputValue());\n }\n }\n\n /** @ignore Emits the committed value at the end of a pointer drag. */\n commitValue(): void {\n this.onValueCommitted.emit(this.outputValue());\n }\n\n /** @ignore */\n markAsTouched(): void {\n this.cva.markAsTouched();\n }\n\n /** @ignore */\n setDragging(dragging: boolean): void {\n this.dragging.set(dragging);\n }\n\n /** @ignore */\n resetPressedThumb(): void {\n this.pressedThumbIndex = -1;\n this.pressedThumbCenterOffset = null;\n this.pressedInput = null;\n }\n}\n","import {\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n ElementRef,\n inject,\n input,\n numberAttribute\n} from '@angular/core';\nimport { BooleanInput, NumberInput } from '@radix-ng/primitives/core';\nimport { injectSliderRootContext } from './slider-context';\nimport { RdxSliderThumbRef } from './slider-root';\nimport { valueToPercent } from './slider.utils';\n\n/**\n * A draggable handle. Render one per value; place an `input[rdxSliderThumbInput]`\n * inside it for keyboard, accessibility and form submission.\n *\n * @see https://base-ui.com/react/components/slider\n */\n@Directive({\n selector: 'div[rdxSliderThumb]',\n exportAs: 'rdxSliderThumb',\n host: {\n '[style]': 'thumbStyle()',\n '[attr.data-index]': 'index()',\n '[attr.data-orientation]': 'root.orientation()',\n '[attr.data-disabled]': 'disabled() ? \"\" : undefined',\n '[attr.data-dragging]': 'root.dragging() ? \"\" : undefined',\n '(pointerdown)': 'onPointerDown($event)'\n }\n})\nexport class RdxSliderThumb implements RdxSliderThumbRef {\n protected readonly root = injectSliderRootContext()!;\n readonly element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n\n /** The nested range input, set by `[rdxSliderThumbInput]`. */\n inputElement: HTMLInputElement | null = null;\n\n /** Explicit index for this thumb (required for SSR range sliders). */\n readonly indexInput = input<number | undefined, NumberInput>(undefined, {\n alias: 'index',\n transform: (v) => (v == null ? undefined : numberAttribute(v))\n });\n\n /** Disables this individual thumb. */\n readonly thumbDisabled = input<boolean, BooleanInput>(false, { alias: 'disabled', transform: booleanAttribute });\n\n /** The position of this thumb among its siblings. */\n readonly index = computed(() => this.indexInput() ?? this.root.thumbIndexOf(this));\n\n /** Whether this thumb is disabled (own state OR root disabled). */\n readonly disabled = computed(() => this.thumbDisabled() || this.root.isDisabled());\n\n /** The value represented by this thumb. */\n readonly value = computed<number | undefined>(() => this.root.values()[this.index()]);\n\n private readonly percent = computed(() => {\n const value = this.value();\n return value === undefined ? NaN : valueToPercent(value, this.root.min(), this.root.max());\n });\n\n protected readonly thumbStyle = computed<Record<string, string | number>>(() => {\n const vertical = this.root.orientation() === 'vertical';\n const rtl = this.root.dir() === 'rtl';\n const startEdge = vertical ? 'bottom' : 'inset-inline-start';\n const crossOffset = vertical ? 'left' : 'top';\n const percent = this.percent();\n\n if (!Number.isFinite(percent)) {\n return { position: 'absolute', visibility: 'hidden' };\n }\n\n const index = this.index();\n let zIndex: number | undefined;\n if (this.root.range()) {\n if (this.root.active() === index) {\n zIndex = 2;\n } else if (this.root.lastUsedThumbIndex() === index) {\n zIndex = 1;\n }\n } else if (this.root.active() === index) {\n zIndex = 1;\n }\n\n const style: Record<string, string | number> = {\n position: 'absolute',\n [startEdge]: `${percent}%`,\n [crossOffset]: '50%',\n translate: `${(vertical || !rtl ? -1 : 1) * 50}% ${(vertical ? 1 : -1) * 50}%`\n };\n if (zIndex !== undefined) {\n style['z-index'] = zIndex;\n }\n return style;\n });\n\n constructor() {\n // Registration is DOM-order sorted on the root and reads no inputs, so the constructor\n // (where the host element already exists) is the right place; cleanup goes via DestroyRef.\n this.root.registerThumb(this);\n inject(DestroyRef).onDestroy(() => this.root.unregisterThumb(this));\n }\n\n protected onPointerDown(event: PointerEvent): void {\n if (this.disabled()) {\n return;\n }\n const index = this.index();\n this.root.pressedThumbIndex = index;\n\n const axis = this.root.orientation() === 'horizontal' ? 'x' : 'y';\n const rect = this.element.getBoundingClientRect();\n const midpoint = axis === 'x' ? (rect.left + rect.right) / 2 : (rect.top + rect.bottom) / 2;\n const pointer = axis === 'x' ? event.clientX : event.clientY;\n this.root.pressedThumbCenterOffset = pointer - midpoint;\n\n if (this.inputElement) {\n this.root.pressedInput = this.inputElement;\n }\n }\n}\n","import { computed, DestroyRef, Directive, ElementRef, inject, input } from '@angular/core';\nimport { injectSliderRootContext } from './slider-context';\nimport { RdxSliderThumb } from './slider-thumb';\nimport { ALL_KEYS, COMPOSITE_KEYS, getDefaultAriaValueText, getNewValue, roundValueToStep } from './slider.utils';\n\n/**\n * The native `input[type=range]` nested inside a thumb. It is visually hidden but\n * remains the focusable element that drives keyboard interaction, accessibility\n * and form submission.\n *\n * @see https://base-ui.com/react/components/slider\n */\n@Directive({\n selector: 'input[rdxSliderThumbInput]',\n exportAs: 'rdxSliderThumbInput',\n host: {\n type: 'range',\n style: 'position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; padding: 0; opacity: 0; cursor: inherit;',\n '[style.writing-mode]': 'writingMode()',\n '[attr.min]': 'root.min()',\n '[attr.max]': 'root.max()',\n '[attr.step]': 'root.step()',\n '[value]': 'thumb.value() ?? \"\"',\n '[disabled]': 'thumb.disabled()',\n '[attr.name]': 'root.name()',\n '[attr.form]': 'root.form()',\n '[attr.aria-orientation]': 'root.orientation()',\n '[attr.aria-valuenow]': 'thumb.value()',\n '[attr.aria-valuetext]': 'valueText()',\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.aria-labelledby]': 'ariaLabelledBy()',\n '[attr.data-index]': 'thumb.index()',\n '(keydown)': 'onKeyDown($event)',\n '(change)': 'onChange($event)',\n '(focus)': 'onFocus()',\n '(blur)': 'onBlur()'\n }\n})\nexport class RdxSliderThumbInput {\n protected readonly root = injectSliderRootContext()!;\n protected readonly thumb = inject(RdxSliderThumb);\n private readonly element = inject<ElementRef<HTMLInputElement>>(ElementRef).nativeElement;\n\n readonly ariaLabel = input<string | undefined>(undefined, { alias: 'aria-label' });\n readonly ariaValueTextInput = input<string | undefined>(undefined, { alias: 'aria-valuetext' });\n\n protected readonly writingMode = computed(() =>\n this.root.orientation() === 'vertical' ? (this.root.dir() === 'rtl' ? 'vertical-rl' : 'vertical-lr') : undefined\n );\n\n protected readonly ariaLabelledBy = computed(() =>\n this.ariaLabel() == null ? this.root.ariaLabelledBy() : undefined\n );\n\n protected readonly valueText = computed(\n () =>\n this.ariaValueTextInput() ??\n getDefaultAriaValueText(this.root.values(), this.thumb.index(), this.root.format(), this.root.locale())\n );\n\n constructor() {\n // Host element exists in the constructor and the registration has no input dependency.\n this.thumb.inputElement = this.element;\n\n inject(DestroyRef).onDestroy(() => {\n if (this.thumb.inputElement === this.element) {\n this.thumb.inputElement = null;\n }\n });\n }\n\n protected onChange(event: Event): void {\n const value = (event.target as HTMLInputElement).valueAsNumber;\n if (!Number.isNaN(value)) {\n this.root.handleInputChange(value, this.thumb.index(), 'input');\n }\n }\n\n protected onFocus(): void {\n this.root.setActive(this.thumb.index());\n }\n\n protected onBlur(): void {\n this.root.setActive(-1);\n this.root.markAsTouched();\n }\n\n protected onKeyDown(event: KeyboardEvent): void {\n if (event.defaultPrevented || !ALL_KEYS.has(event.key)) {\n return;\n }\n if (COMPOSITE_KEYS.has(event.key)) {\n event.stopPropagation();\n }\n\n const min = this.root.min();\n const max = this.root.max();\n const step = this.root.step();\n const largeStep = this.root.largeStep();\n const rtl = this.root.dir() === 'rtl';\n const range = this.root.range();\n const values = this.root.values();\n const index = this.thumb.index();\n const thumbValue = values[index];\n const rounded = roundValueToStep(thumbValue, step, min);\n\n let newValue: number | null = null;\n switch (event.key) {\n case 'ArrowUp':\n newValue = getNewValue(rounded, event.shiftKey ? largeStep : step, 1, min, max);\n break;\n case 'ArrowRight':\n newValue = getNewValue(rounded, event.shiftKey ? largeStep : step, rtl ? -1 : 1, min, max);\n break;\n case 'ArrowDown':\n newValue = getNewValue(rounded, event.shiftKey ? largeStep : step, -1, min, max);\n break;\n case 'ArrowLeft':\n newValue = getNewValue(rounded, event.shiftKey ? largeStep : step, rtl ? 1 : -1, min, max);\n break;\n case 'PageUp':\n newValue = getNewValue(rounded, largeStep, 1, min, max);\n break;\n case 'PageDown':\n newValue = getNewValue(rounded, largeStep, -1, min, max);\n break;\n case 'End':\n newValue =\n range && Number.isFinite(values[index + 1])\n ? values[index + 1] - step * this.root.minStepsBetweenValues()\n : max;\n break;\n case 'Home':\n newValue =\n range && Number.isFinite(values[index - 1])\n ? values[index - 1] + step * this.root.minStepsBetweenValues()\n : min;\n break;\n default:\n break;\n }\n\n if (newValue !== null) {\n this.root.handleInputChange(newValue, index, 'keyboard');\n event.preventDefault();\n }\n }\n}\n","import { Directive } from '@angular/core';\nimport { injectSliderRootContext } from './slider-context';\n\n/**\n * The track of the slider — the positioning context for the indicator and thumbs.\n *\n * @see https://base-ui.com/react/components/slider\n */\n@Directive({\n selector: 'div[rdxSliderTrack]',\n exportAs: 'rdxSliderTrack',\n host: {\n style: 'position: relative;',\n '[attr.data-orientation]': 'root.orientation()',\n '[attr.data-disabled]': 'root.isDisabled() ? \"\" : undefined',\n '[attr.data-dragging]': 'root.dragging() ? \"\" : undefined'\n }\n})\nexport class RdxSliderTrack {\n protected readonly root = injectSliderRootContext()!;\n}\n","import { computed, Directive, input } from '@angular/core';\nimport { injectSliderRootContext } from './slider-context';\n\n/**\n * Displays the slider's current value(s) as formatted text. Renders into an\n * `output` element; the displayed value honours the root `format` and `locale`.\n *\n * @see https://base-ui.com/react/components/slider\n */\n@Directive({\n selector: 'output[rdxSliderValue]',\n exportAs: 'rdxSliderValue',\n host: {\n 'aria-live': 'off',\n '[textContent]': 'display()'\n }\n})\nexport class RdxSliderValue {\n protected readonly root = injectSliderRootContext()!;\n\n /** The separator placed between values of a range slider. */\n readonly separator = input<string>(' – ');\n\n protected readonly display = computed(() =>\n this.root\n .values()\n .map((value) => this.root.formatValue(value) || `${value}`)\n .join(this.separator())\n );\n}\n","import { NgModule } from '@angular/core';\nimport { RdxSliderControl } from './src/slider-control';\nimport { RdxSliderIndicator } from './src/slider-indicator';\nimport { RdxSliderRoot } from './src/slider-root';\nimport { RdxSliderThumb } from './src/slider-thumb';\nimport { RdxSliderThumbInput } from './src/slider-thumb-input';\nimport { RdxSliderTrack } from './src/slider-track';\nimport { RdxSliderValue } from './src/slider-value';\n\nexport * from './src/slider-context';\nexport * from './src/slider-control';\nexport * from './src/slider-indicator';\nexport * from './src/slider-root';\nexport * from './src/slider-thumb';\nexport * from './src/slider-thumb-input';\nexport * from './src/slider-track';\nexport * from './src/slider-value';\nexport * from './src/slider.utils';\n\nconst _imports = [\n RdxSliderRoot,\n RdxSliderControl,\n RdxSliderTrack,\n RdxSliderIndicator,\n RdxSliderThumb,\n RdxSliderThumbInput,\n RdxSliderValue\n];\n\n@NgModule({\n imports: [..._imports],\n exports: [..._imports]\n})\nexport class RdxSliderModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;AAGA;;;;;;AAMG;AACI,MAAM,CAAC,uBAAuB,EAAE,wBAAwB,CAAC,GAAG,aAAa,CAAgB,sBAAsB;;ACHtH;AACM,SAAU,GAAG,CAAC,CAAS,EAAE,CAAS,EAAA;IACpC,OAAO,CAAC,GAAG,CAAC;AAChB;AAEA;SACgB,cAAc,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW,EAAA;AAClE,IAAA,OAAO,CAAC,CAAC,KAAK,GAAG,GAAG,IAAI,GAAG,KAAK,GAAG,GAAG,GAAG,CAAC;AAC9C;AAEA;SACgB,uBAAuB,CAAC,KAAwB,EAAE,KAAa,EAAE,QAAgB,EAAA;AAC7F,IAAA,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,EAAE;AAC5B,IAAA,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ;AACxB,IAAA,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AAC3B;AAEA;AACM,SAAU,WAAW,CAAC,OAAgB,EAAA;AACxC,IAAA,MAAM,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE;AAC5C,IAAA,OAAO,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;AAC/E;AAEA;SACgB,uBAAuB,CAAC,MAAyB,EAAE,GAAW,EAAE,GAAW,EAAA;IACvF,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AAChF;AAEA;AACM,SAAU,mBAAmB,CAAC,GAAW,EAAA;AAC3C,IAAA,IAAI,GAAG,KAAK,CAAC,EAAE;AACX,QAAA,OAAO,CAAC;IACZ;IACA,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QACnB,MAAM,KAAK,GAAG,GAAG,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;AAC7C,QAAA,MAAM,mBAAmB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,mBAAmB,GAAG,mBAAmB,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC1F;AACA,IAAA,MAAM,WAAW,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAChD,OAAO,WAAW,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC;AAC/C;AAEA;SACgB,gBAAgB,CAAC,KAAa,EAAE,IAAY,EAAE,GAAW,EAAA;AACrE,IAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,IAAI,GAAG,GAAG;IAC7D,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACjG;AAEA;;;;AAIG;AACG,SAAU,cAAc,CAC1B,UAAkB,EAClB,KAAa,EACb,GAAW,EACX,GAAW,EACX,KAAc,EACd,MAAyB,EAAA;IAEzB,IAAI,QAAQ,GAAG,KAAK,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,CAAC;IAC1C,IAAI,KAAK,EAAE;QACP,QAAQ,GAAG,KAAK,CACZ,QAAQ,EACR,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,iBAAiB,EAC7C,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,iBAAiB,CAChD;QACD,OAAO,uBAAuB,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC;IAC3D;AACA,IAAA,OAAO,QAAQ;AACnB;AAEA;SACgB,uBAAuB,CACnC,MAAyB,EACzB,IAAY,EACZ,qBAA6B,EAAA;IAE7B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACxB,QAAA,OAAO,IAAI;IACf;AACA,IAAA,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAW,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,KAAI;QAChE,IAAI,KAAK,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,YAAA,OAAO,GAAG;QACd;AACA,QAAA,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC,QAAA,OAAO,GAAG;IACd,CAAC,EAAE,EAAE,CAAC;IACN,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,IAAI,IAAI,GAAG,qBAAqB;AACjE;AAEA;AACM,SAAU,WAAW,CACvB,UAAkB,EAClB,SAAiB,EACjB,SAAiB,EACjB,GAAW,EACX,GAAW,EAAA;AAEX,IAAA,MAAM,KAAK,GAAG,SAAS,KAAK,CAAC,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS;AAC/E,IAAA,MAAM,YAAY,GAAG,MAAM,CACvB,KAAK,CAAC,OAAO,CACT,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAAE,mBAAmB,CAAC,SAAS,CAAC,EAAE,mBAAmB,CAAC,GAAG,CAAC,CAAC,CACtG,CACJ;IACD,OAAO,KAAK,CAAC,YAAY,EAAE,GAAG,EAAE,GAAG,CAAC;AACxC;AAaA;;;;AAIG;AACG,SAAU,oBAAoB,CAAC,MAAkC,EAAA;AACnE,IAAA,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,qBAAqB,EAAE,aAAa,EAAE,GAAG,MAAM;AACjG,IAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AACrB,QAAA,OAAO,EAAE;IACb;AACA,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,EAAE;AACjC,IAAA,MAAM,kBAAkB,GAAG,IAAI,GAAG,qBAAqB;AACvD,IAAA,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC;AACvC,IAAA,MAAM,iBAAiB,GAAG,aAAa,IAAI,MAAM;AAEjD,IAAA,MAAM,QAAQ,GAAG,GAAG,GAAG,KAAK,GAAG,kBAAkB;IACjD,MAAM,QAAQ,GAAG,GAAG,GAAG,CAAC,SAAS,GAAG,KAAK,IAAI,kBAAkB;AAC/D,IAAA,UAAU,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC;;AAGxD,IAAA,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE;QAC5C,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,kBAAkB;QACzD,MAAM,UAAU,GAAG,GAAG,GAAG,CAAC,SAAS,GAAG,CAAC,IAAI,kBAAkB;QAC7D,MAAM,YAAY,GAAG,iBAAiB,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC;AAC1D,QAAA,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC;AACnD,QAAA,IAAI,YAAY,GAAG,SAAS,EAAE;YAC1B,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC;QAClD;AACA,QAAA,UAAU,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC;IAC5D;;AAGA,IAAA,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;QACpC,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,kBAAkB;AACzD,QAAA,MAAM,UAAU,GAAG,GAAG,GAAG,CAAC,GAAG,kBAAkB;QAC/C,MAAM,YAAY,GAAG,iBAAiB,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC;AAC1D,QAAA,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC;AACnD,QAAA,IAAI,YAAY,GAAG,SAAS,EAAE;YAC1B,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC;QAClD;AACA,QAAA,UAAU,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC;IAC5D;AAEA,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE;AACpC,QAAA,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACrD;AACA,IAAA,OAAO,UAAU;AACrB;AAqBA;AACM,SAAU,qBAAqB,CAAC,MAAmC,EAAA;IACrE,MAAM,EACF,QAAQ,EACR,MAAM,EACN,aAAa,EACb,aAAa,EACb,YAAY,EACZ,SAAS,EACT,GAAG,EACH,GAAG,EACH,IAAI,EACJ,qBAAqB,EACxB,GAAG,MAAM;IAEV,MAAM,YAAY,GAAG,CAAC,aAAa,IAAI,MAAM,EAAE,KAAK,EAAE;AACtD,IAAA,MAAM,cAAc,GAAG,aAAa,IAAI,MAAM;AAC9C,IAAA,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC;AACrC,IAAA,MAAM,kBAAkB,GAAG,IAAI,GAAG,qBAAqB;IAEvD,IAAI,CAAC,KAAK,EAAE;AACR,QAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE;IAC9D;AAEA,IAAA,IAAI,QAAQ,KAAK,MAAM,EAAE;QACrB,MAAM,KAAK,GAAG,oBAAoB,CAAC;AAC/B,YAAA,MAAM,EAAE,YAAY;AACpB,YAAA,KAAK,EAAE,YAAY;YACnB,SAAS;YACT,GAAG;YACH,GAAG;YACH,IAAI;YACJ;AACH,SAAA,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE;IAC9D;AAEA,IAAA,IAAI,QAAQ,KAAK,MAAM,EAAE;AACrB,QAAA,MAAM,mBAAmB,GAAG,YAAY,CAAC,YAAY,CAAC;QACtD,MAAM,OAAO,GAAG,IAAI;AACpB,QAAA,MAAM,eAAe,GAAG,YAAY,CAAC,KAAK,EAAE;QAC5C,MAAM,gBAAgB,GAAG,eAAe,CAAC,YAAY,GAAG,CAAC,CAAC;QAC1D,MAAM,YAAY,GAAG,eAAe,CAAC,YAAY,GAAG,CAAC,CAAC;AAEtD,QAAA,MAAM,UAAU,GAAG,gBAAgB,IAAI,IAAI,GAAG,gBAAgB,GAAG,kBAAkB,GAAG,GAAG;AACzF,QAAA,MAAM,UAAU,GAAG,YAAY,IAAI,IAAI,GAAG,YAAY,GAAG,kBAAkB,GAAG,GAAG;QAEjF,MAAM,gBAAgB,GAAG,KAAK,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC;QACjE,MAAM,sBAAsB,GAAG,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACnE,QAAA,eAAe,CAAC,YAAY,CAAC,GAAG,sBAAsB;AAEtD,QAAA,MAAM,aAAa,GAAG,SAAS,GAAG,mBAAmB;AACrD,QAAA,MAAM,cAAc,GAAG,SAAS,GAAG,mBAAmB;AACtD,QAAA,MAAM,iBAAiB,GAAG,aAAa,IAAI,YAAY,IAAI,IAAI,IAAI,SAAS,IAAI,YAAY,GAAG,OAAO;AACtG,QAAA,MAAM,kBAAkB,GACpB,cAAc,IAAI,gBAAgB,IAAI,IAAI,IAAI,SAAS,IAAI,gBAAgB,GAAG,OAAO;AAEzF,QAAA,IAAI,CAAC,iBAAiB,IAAI,CAAC,kBAAkB,EAAE;AAC3C,YAAA,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE;QAC/E;AAEA,QAAA,MAAM,WAAW,GAAG,iBAAiB,GAAG,YAAY,GAAG,CAAC,GAAG,YAAY,GAAG,CAAC;QAE3E,MAAM,oBAAoB,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,KAAI;AACxD,YAAA,IAAI,GAAG,KAAK,YAAY,EAAE;AACtB,gBAAA,OAAO,sBAAsB;YACjC;AACA,YAAA,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC;AACpC,YAAA,OAAO,QAAQ,IAAI,IAAI,GAAG,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC;AAC1D,QAAA,CAAC,CAAC;QAEF,MAAM,kBAAkB,GAAG;cACrB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,eAAe,CAAC,WAAW,CAAC;AAClD,cAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC;QAEvD,MAAM,cAAc,GAAG,oBAAoB,CAAC;AACxC,YAAA,MAAM,EAAE,eAAe;AACvB,YAAA,KAAK,EAAE,WAAW;AAClB,YAAA,SAAS,EAAE,kBAAkB;YAC7B,GAAG;YACH,GAAG;YACH,IAAI;YACJ,qBAAqB;AACrB,YAAA,aAAa,EAAE;AAClB,SAAA,CAAC;AAEF,QAAA,MAAM,aAAa,GAAG,iBAAiB,GAAG,WAAW,GAAG,CAAC,GAAG,WAAW,GAAG,CAAC;QAC3E,IAAI,aAAa,IAAI,CAAC,IAAI,aAAa,GAAG,cAAc,CAAC,MAAM,EAAE;YAC7D,MAAM,aAAa,GAAG,cAAc,CAAC,aAAa,GAAG,CAAC,CAAC;YACvD,MAAM,cAAc,GAAG,cAAc,CAAC,aAAa,GAAG,CAAC,CAAC;AACxD,YAAA,IAAI,kBAAkB,GAAG,aAAa,IAAI,IAAI,GAAG,aAAa,GAAG,kBAAkB,GAAG,GAAG;AACzF,YAAA,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,GAAG,GAAG,aAAa,GAAG,kBAAkB,CAAC;AAC3F,YAAA,IAAI,kBAAkB,GAAG,cAAc,IAAI,IAAI,GAAG,cAAc,GAAG,kBAAkB,GAAG,GAAG;YAC3F,kBAAkB,GAAG,IAAI,CAAC,GAAG,CACzB,kBAAkB,EAClB,GAAG,GAAG,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,GAAG,aAAa,IAAI,kBAAkB,CACzE;YACD,MAAM,aAAa,GAAG,KAAK,CAAC,sBAAsB,EAAE,kBAAkB,EAAE,kBAAkB,CAAC;AAC3F,YAAA,cAAc,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACrE;AAEA,QAAA,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE;IAC5E;;IAGA,MAAM,gBAAgB,GAAG,YAAY,CAAC,YAAY,GAAG,CAAC,CAAC;IACvD,MAAM,YAAY,GAAG,YAAY,CAAC,YAAY,GAAG,CAAC,CAAC;AACnD,IAAA,MAAM,UAAU,GAAG,gBAAgB,IAAI,IAAI,GAAG,gBAAgB,GAAG,kBAAkB,GAAG,GAAG;AACzF,IAAA,MAAM,UAAU,GAAG,YAAY,IAAI,IAAI,GAAG,YAAY,GAAG,kBAAkB,GAAG,GAAG;AACjF,IAAA,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAChF,IAAA,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,EAAE;AAClC,IAAA,KAAK,CAAC,YAAY,CAAC,GAAG,WAAW;IACjC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE;AAC9D;AAEA;;;;;;AAMG;SACa,gBAAgB,CAC5B,MAAkC,EAClC,QAAiB,EACjB,GAAY,EAAA;IAEZ,IAAI,CAAC,MAAM,EAAE;QACT,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;IAC/B;AACA,IAAA,MAAM,SAAS,GAAG,CAAC,CAAS,KAAY;AACpC,QAAA,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;AACvB,QAAA,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;AAClC,IAAA,CAAC;AACD,IAAA,MAAM,UAAU,GAAG,CAAC,IAAyC,KACzD,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,UAAU,IAAI,CAAA,MAAA,CAAQ,CAAC,CAAC;QAC1D,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,WAAW,IAAI,CAAA,CAAE,CAAC,CAAC;AAEzD,IAAA,IAAI,SAAmC;AACvC,IAAA,IAAI,OAAoC;IACxC,IAAI,QAAQ,EAAE;QACV,SAAS,GAAG,KAAK;QACjB,OAAO,GAAG,QAAQ;IACtB;SAAO,IAAI,GAAG,EAAE;QACZ,SAAS,GAAG,OAAO;QACnB,OAAO,GAAG,MAAM;IACpB;SAAO;QACH,SAAS,GAAG,MAAM;QAClB,OAAO,GAAG,OAAO;IACrB;AAEA,IAAA,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE;AACrE;AAEA,MAAM,cAAc,GAAG,IAAI,GAAG,EAA6B;AAE3D,SAAS,YAAY,CAAC,MAA0B,EAAE,OAA6C,EAAA;IAC3F,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,IAAI,IAAI,EAAE,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,CAAC;IAChF,IAAI,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC;IACvC,IAAI,CAAC,SAAS,EAAE;QACZ,SAAS,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC;AAClD,QAAA,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC;IACtC;AACA,IAAA,OAAO,SAAS;AACpB;AAEA;SACgB,YAAY,CACxB,KAAgC,EAChC,MAA0B,EAC1B,OAA6C,EAAA;AAE7C,IAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACf,QAAA,OAAO,EAAE;IACb;IACA,OAAO,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AACtD;AAEA;AACM,SAAU,uBAAuB,CACnC,MAAyB,EACzB,KAAa,EACb,MAA4C,EAC5C,MAA0B,EAAA;AAE1B,IAAA,IAAI,KAAK,GAAG,CAAC,EAAE;AACX,QAAA,OAAO,SAAS;IACpB;AACA,IAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QACrB,OAAO,KAAK,KAAK;AACb,cAAE,CAAA,EAAG,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA,YAAA;AAChD,cAAE,CAAA,EAAG,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,YAAY;IACpE;AACA,IAAA,OAAO,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS;AAC3E;AAEO,MAAM,UAAU,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY;AACrE,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC;AAC7D,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,cAAc,EAAE,QAAQ,EAAE,UAAU,CAAC;AAEnE,SAAU,cAAc,CAAC,CAAoB,EAAE,CAAoB,EAAA;AACrE,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QACtC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE;IACA,OAAO,CAAC,KAAK,CAAC;AAClB;;ACnYA,MAAM,gCAAgC,GAAG,CAAC;AAE1C;;;;;AAKG;MAWU,gBAAgB,CAAA;AAazB,IAAA,WAAA,GAAA;QAZmB,IAAA,CAAA,IAAI,GAAG,uBAAuB,EAAG;AACnC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;AACxD,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAEpC,IAAA,CAAA,MAAM,GAA+B,IAAI;QACzC,IAAA,CAAA,SAAS,GAAG,CAAC;QACb,IAAA,CAAA,uBAAuB,GAA6B,IAAI;AAE/C,QAAA,IAAA,CAAA,MAAM,GAAG,CAAC,KAAmB,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AACxD,QAAA,IAAA,CAAA,IAAI,GAAG,CAAC,KAAmB,KAAK,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AACpD,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,KAAmB,KAAK,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AAGrE,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;AACvD,QAAA,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;IAC5D;AAEU,IAAA,aAAa,CAAC,KAAmB,EAAA;AACvC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;AAC7C,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YACxE;QACJ;AACA,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA4B;QACjD,IAAI,CAAC,MAAM,EAAE;YACT;QACJ;;;;;QAMA,KAAK,CAAC,cAAc,EAAE;AAEtB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC,OAAO,CAAC,IAAI,IAAI;AAC1E,QAAA,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;QAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;AAC1E,QAAA,IAAI,MAAM,IAAI,IAAI,EAAE;YAChB;QACJ;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;;QAG3B,IAAI,IAAI,CAAC,IAAI,CAAC,wBAAwB,IAAI,IAAI,EAAE;AAC5C,YAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,aAAa,CAAC;QACnD;QAEA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC;AAEvC,QAAA,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC;AAC1C,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC;QAClB,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC;AAC1D,QAAA,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACtE,QAAA,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,eAAe,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAClF;AAEQ,IAAA,UAAU,CAAC,KAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,SAAS,IAAI,CAAC;AACnB,QAAA,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,EAAE;AACrB,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YACpB;QACJ;QACA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;AAC1E,QAAA,IAAI,MAAM,IAAI,IAAI,EAAE;YAChB;QACJ;QACA,IAAI,uBAAuB,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,EAAE;AAC5F,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,SAAS,GAAG,gCAAgC,EAAE;AAC5E,gBAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;YAC/B;YACA,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC;AACxD,YAAA,IAAI,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE;gBAC3B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC;YAC3C;QACJ;IACJ;AAEQ,IAAA,QAAQ,CAAC,KAAmB,EAAA;QAChC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,wBAAwB,GAAG,IAAI;AACzC,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI;AAE7B,QAAA,IAAI,IAAI,CAAC,uBAAuB,IAAI,IAAI,EAAE;AACtC,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;QAC3B;AAEA,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;QAC7C,IAAI,OAAO,CAAC,iBAAiB,GAAG,KAAK,CAAC,SAAS,CAAC,EAAE;AAC9C,YAAA,OAAO,CAAC,qBAAqB,CAAC,KAAK,CAAC,SAAS,CAAC;QAClD;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;AAC7B,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI;AAC9B,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI;QACnC,IAAI,CAAC,aAAa,EAAE;IACxB;IAEQ,aAAa,GAAA;QACjB,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC;QAC7D,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC;QACzD,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,eAAe,EAAE,IAAI,CAAC,QAAQ,CAAC;IACrE;AAEQ,IAAA,aAAa,CAAC,MAAgC,EAAA;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,GAAG,IAAI;AACvD,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI;AAEnC,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB;QACrD,IAAI,iBAAiB,GAAG,iBAAiB;QAEzC,IAAI,iBAAiB,GAAG,CAAC,CAAC,IAAI,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE;;AAE7D,YAAA,IAAI,MAAM,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE;gBAC/C,IAAI,CAAC,GAAG,iBAAiB;AACzB,gBAAA,OAAO,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE;oBAC/C,CAAC,IAAI,CAAC;gBACV;gBACA,iBAAiB,GAAG,CAAC;YACzB;QACJ;aAAO;;AAEH,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,YAAY,GAAG,GAAG,GAAG,GAAG;YACjE,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACpC,YAAA,IAAI,WAA+B;YACnC,iBAAiB,GAAG,CAAC,CAAC;AACtB,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AACvC,gBAAA,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC;AACvB,gBAAA,IAAI,KAAK,CAAC,QAAQ,EAAE,EAAE;oBAClB;gBACJ;gBACA,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC;AAC3C,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACxD,IAAI,WAAW,KAAK,SAAS,IAAI,QAAQ,IAAI,WAAW,EAAE;oBACtD,iBAAiB,GAAG,CAAC;oBACrB,WAAW,GAAG,QAAQ;gBAC1B;YACJ;QACJ;QAEA,IAAI,iBAAiB,GAAG,CAAC,CAAC,IAAI,iBAAiB,KAAK,iBAAiB,EAAE;AACnE,YAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,GAAG,iBAAiB;AAC/C,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,iBAAiB,CAAC,EAAE,YAAY,IAAI,IAAI;QAC3F;IACJ;IAEQ,mBAAmB,CAAC,MAAmC,EAAE,MAAc,EAAA;QAC3E,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;AAC9E,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QACtD,IAAI,OAAO,EAAE;AACT,YAAA,IAAI,CAAC,uBAAuB,GAAG,MAAM,CAAC,KAAK;AAC3C,YAAA,IAAI,MAAM,CAAC,OAAO,EAAE;gBAChB,IAAI,CAAC,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,UAAU;gBAC/C,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,YAAY,IAAI,IAAI;YAC3F;QACJ;AACA,QAAA,OAAO,OAAO;IAClB;;AAGQ,IAAA,cAAc,CAAC,MAAgC,EAAA;QACnD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AAC/B,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,UAAU;QACvD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,KAAK;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAE7B,IAAI,CAAC,OAAO,KAAK,CAAC,KAAK,KAAK,UAAU,GAAG,CAAC,IAAI,UAAU,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE;AACzE,YAAA,OAAO,IAAI;QACf;AAEA,QAAA,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,qBAAqB,EAAE;AAC9E,QAAA,MAAM,aAAa,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC;QAClE,MAAM,WAAW,GAAG,CAAC,QAAQ,GAAG,MAAM,GAAG,KAAK,IAAI,aAAa,CAAC,KAAK,GAAG,aAAa,CAAC,GAAG;;AAGzF,QAAA,IAAI,EAAE,WAAW,GAAG,CAAC,CAAC,EAAE;AACpB,YAAA,OAAO,IAAI;QACf;QAEA,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,wBAAwB,IAAI,CAAC;AACjE,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,GAAG,iBAAiB;AAC5C,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,GAAG,iBAAiB;QAE5C,MAAM,SAAS,GAAG;AACd,cAAE,MAAM,GAAG,OAAO,GAAG,aAAa,CAAC;cACjC,CAAC,GAAG,GAAG,KAAK,GAAG,OAAO,GAAG,OAAO,GAAG,IAAI,IAAI,aAAa,CAAC,KAAK;AAEpE,QAAA,MAAM,aAAa,GAAG,KAAK,CAAC,SAAS,GAAG,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;QAE1D,IAAI,QAAQ,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,aAAa,GAAG,GAAG;QAChD,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC;QAChD,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC;QAEpC,IAAI,CAAC,KAAK,EAAE;YACR,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE;QAC1D;AACA,QAAA,IAAI,UAAU,GAAG,CAAC,EAAE;AAChB,YAAA,OAAO,IAAI;QACf;AAEA,QAAA,OAAO,qBAAqB,CAAC;AACzB,YAAA,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;YAC5C,MAAM;AACN,YAAA,aAAa,EAAE,MAAM;AACrB,YAAA,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa;AACtC,YAAA,YAAY,EAAE,UAAU;AACxB,YAAA,SAAS,EAAE,QAAQ;YACnB,GAAG;YACH,GAAG;YACH,IAAI;AACJ,YAAA,qBAAqB,EAAE,IAAI,CAAC,IAAI,CAAC,qBAAqB;AACzD,SAAA,CAAC;IACN;8GA5NS,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,sCAAA,EAAA,oBAAA,EAAA,oCAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAV5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,IAAI,EAAE;AACF,wBAAA,yBAAyB,EAAE,oBAAoB;AAC/C,wBAAA,sBAAsB,EAAE,oCAAoC;AAC5D,wBAAA,sBAAsB,EAAE,kCAAkC;AAC1D,wBAAA,eAAe,EAAE;AACpB;AACJ,iBAAA;;;AC1BD;;;;;AAKG;MAWU,kBAAkB,CAAA;AAV/B,IAAA,WAAA,GAAA;QAWuB,IAAA,CAAA,IAAI,GAAG,uBAAuB,EAAG;AAEjC,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAkC,MAAK;YAC/E,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,UAAU;YACvD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACjC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YAE3B,MAAM,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,oBAAoB;YAC5D,MAAM,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO;YAC9C,MAAM,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ;AAE/C,YAAA,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AACjD,YAAA,MAAM,GAAG,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AAE/D,YAAA,MAAM,MAAM,GAAoC;gBAC5C,QAAQ,EAAE,QAAQ,GAAG,UAAU,GAAG,UAAU;gBAC5C,CAAC,SAAS,GAAG;aAChB;YAED,IAAI,CAAC,KAAK,EAAE;AACR,gBAAA,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC;AACrB,gBAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAA,EAAG,KAAK,GAAG;AAC9B,gBAAA,OAAO,MAAM;YACjB;AAEA,YAAA,MAAM,CAAC,SAAS,CAAC,GAAG,CAAA,EAAG,KAAK,GAAG;YAC/B,MAAM,CAAC,QAAQ,CAAC,GAAG,GAAG,GAAG,GAAG,KAAK,CAAA,CAAA,CAAG;AACpC,YAAA,OAAO,MAAM;AACjB,QAAA,CAAC,qFAAC;AACL,IAAA;8GAhCY,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,sCAAA,EAAA,oBAAA,EAAA,oCAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAV9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,IAAI,EAAE;AACF,wBAAA,SAAS,EAAE,kBAAkB;AAC7B,wBAAA,yBAAyB,EAAE,oBAAoB;AAC/C,wBAAA,sBAAsB,EAAE,oCAAoC;AAC5D,wBAAA,sBAAsB,EAAE;AAC3B;AACJ,iBAAA;;;ACwBD,SAAS,cAAc,CAAC,IAAkC,EAAA;AACtD,IAAA,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AAC9B,QAAA,MAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC,OAAO,CAAC;AAE7D,QAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,2BAA2B,EAAE;YAC7C,OAAO,CAAC,CAAC;QACb;AAEA,QAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,2BAA2B,EAAE;AAC7C,YAAA,OAAO,CAAC;QACZ;AACA,QAAA,OAAO,CAAC;AACZ,IAAA,CAAC,CAAC;AACN;AAEA;;;;;;AAMG;MAqBU,aAAa,CAAA;AApB1B,IAAA,WAAA,GAAA;;QAsBuB,IAAA,CAAA,GAAG,GAAG,0BAA0B,EAAe;QAEzD,IAAA,CAAA,EAAE,GAAG,KAAK,CAAS,QAAQ,CAAC,aAAa,CAAC,yEAAC;AAEpD;;;AAGG;QACM,IAAA,CAAA,GAAG,GAAG,KAAK,CAAsB,CAAC,2EAAI,SAAS,EAAE,eAAe,EAAA,CAAG;AAE5E;;;AAGG;QACM,IAAA,CAAA,GAAG,GAAG,KAAK,CAAsB,GAAG,2EAAI,SAAS,EAAE,eAAe,EAAA,CAAG;AAE9E;;;AAGG;QACM,IAAA,CAAA,IAAI,GAAG,KAAK,CAAsB,CAAC,4EAAI,SAAS,EAAE,eAAe,EAAA,CAAG;AAE7E;;;AAGG;QACM,IAAA,CAAA,SAAS,GAAG,KAAK,CAAsB,EAAE,iFAAI,SAAS,EAAE,eAAe,EAAA,CAAG;AAEnF;;;AAGG;QACM,IAAA,CAAA,qBAAqB,GAAG,KAAK,CAAsB,CAAC,6FAAI,SAAS,EAAE,eAAe,EAAA,CAAG;AAE9F;;;AAGG;AACM,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAoB,YAAY,kFAAC;AAE7D;;;AAGG;AACM,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAAgB,KAAK,0EAAC;AAE1C;;;AAGG;AACM,QAAA,IAAA,CAAA,sBAAsB,GAAG,KAAK,CAAyB,MAAM,6FAAC;;QAG9D,IAAA,CAAA,MAAM,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAA4B;;QAG1C,IAAA,CAAA,MAAM,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;;QAGxB,IAAA,CAAA,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;;QAGtB,IAAA,CAAA,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;AAE/B;;;AAGG;QACM,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAwB,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;QAG/E,IAAA,CAAA,YAAY,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAe;;QAGnC,IAAA,CAAA,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAe;QAE5B,IAAA,CAAA,cAAc,GAAG,KAAK,CAAqB,SAAS,sFAAI,KAAK,EAAE,iBAAiB,EAAA,CAAG;;QAGnF,IAAA,CAAA,aAAa,GAAG,MAAM,EAAe;;QAGrC,IAAA,CAAA,gBAAgB,GAAG,MAAM,EAAe;;AAGxC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAqB,IAAI,iFAAC;;AAG7C,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,6EAAC;;AAEnB,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,CAAC,CAAC,yFAAC;;AAE/B,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,KAAK,+EAAC;;QAGjC,IAAA,CAAA,iBAAiB,GAAG,CAAC,CAAC;;QAEtB,IAAA,CAAA,wBAAwB,GAAkB,IAAI;;QAE9C,IAAA,CAAA,YAAY,GAA4B,IAAI;;QAE5C,IAAA,CAAA,aAAa,GAAoB,IAAI;;QAErC,IAAA,CAAA,gBAAgB,GAAG,MAAM;;AAGhB,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,iFAAC;;QAG1C,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAc,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;;QAGvG,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;;AAG9E,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAW,MAAK;AACtC,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE;AAC7B,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AACtB,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AACtB,YAAA,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACrF,YAAA,OAAO,IAAI,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG;AAC7C,QAAA,CAAC,6EAAC;AAEe,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAsB,EAAE,6EAAC;;AAEhD,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AAqGhD,IAAA;;AAlGG,IAAA,aAAa,CAAC,KAAwB,EAAA;QAClC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IAClE;;AAGA,IAAA,eAAe,CAAC,KAAwB,EAAA;QACpC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC;IACjE;;AAGA,IAAA,YAAY,CAAC,KAAwB,EAAA;QACjC,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAC1C;;AAGA,IAAA,SAAS,CAAC,KAAa,EAAA;AACnB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACtB,QAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AACd,YAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC;QACtC;IACJ;;AAGA,IAAA,UAAU,CAAC,KAAa,EAAA;AACpB,QAAA,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;IACzE;;AAGA,IAAA,WAAW,CAAC,KAAa,EAAA;AACrB,QAAA,OAAO,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5D;;IAGQ,WAAW,GAAA;QACf,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;AAC5B,QAAA,IAAI,GAAG,KAAK,SAAS,EAAE;AACnB,YAAA,OAAO,GAAG;QACd;QACA,OAAO,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC1D;AAEA;;;;AAIG;IACH,QAAQ,CAAC,UAAoB,EAAE,MAAc,EAAA;AACzC,QAAA,MAAM,IAAI,GAAgB,IAAI,CAAC,KAAK,EAAE,GAAG,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC;AACnE,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE;AAClC,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;QAC3F,IAAI,MAAM,IAAI,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;AACzC,YAAA,OAAO,KAAK;QAChB;AACA,QAAA,IAAI,CAAC,gBAAgB,GAAG,MAAM;AAC9B,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AACpB,QAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;AACvB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;AAC7B,QAAA,OAAO,IAAI;IACf;;AAGA,IAAA,iBAAiB,CAAC,UAAkB,EAAE,KAAa,EAAE,MAAM,GAAG,UAAU,EAAA;AACpE,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACnB;QACJ;AACA,QAAA,MAAM,MAAM,GAAG,cAAc,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;AACrG,QAAA,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,qBAAqB,EAAE,CAAC,EAAE;YAC7E;QACJ;AACA,QAAA,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC;QACrD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;AAC1C,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;QACxB,IAAI,OAAO,EAAE;YACT,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAClD;IACJ;;IAGA,WAAW,GAAA;QACP,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IAClD;;IAGA,aAAa,GAAA;AACT,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;IAC5B;;AAGA,IAAA,WAAW,CAAC,QAAiB,EAAA;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC/B;;IAGA,iBAAiB,GAAA;AACb,QAAA,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI;AACpC,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;IAC5B;8GAnOS,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,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,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,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,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,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,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,sBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,OAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,iCAAA,EAAA,oBAAA,EAAA,+BAAA,EAAA,EAAA,EAAA,SAAA,EAjBX,CAAC,wBAAwB,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAiBzD,aAAa,EAAA,UAAA,EAAA,CAAA;kBApBzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,QAAQ,EAAE,eAAe;oBACzB,SAAS,EAAE,CAAC,wBAAwB,CAAC,MAAM,MAAM,CAAA,aAAA,CAAe,CAAC,CAAC;AAClE,oBAAA,cAAc,EAAE;AACZ,wBAAA;AACI,4BAAA,SAAS,EAAE,uBAAuB;AAClC,4BAAA,MAAM,EAAE,CAAC,cAAc,EAAE,UAAU;AACtC;AACJ,qBAAA;AACD,oBAAA,IAAI,EAAE;AACF,wBAAA,IAAI,EAAE,OAAO;AACb,wBAAA,MAAM,EAAE,MAAM;AACd,wBAAA,wBAAwB,EAAE,kBAAkB;AAC5C,wBAAA,YAAY,EAAE,OAAO;AACrB,wBAAA,yBAAyB,EAAE,eAAe;AAC1C,wBAAA,sBAAsB,EAAE,+BAA+B;AACvD,wBAAA,sBAAsB,EAAE;AAC3B;AACJ,iBAAA;;;ACrED;;;;;AAKG;MAaU,cAAc,CAAA;AAiEvB,IAAA,WAAA,GAAA;QAhEmB,IAAA,CAAA,IAAI,GAAG,uBAAuB,EAAG;AAC3C,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAA0B,UAAU,CAAC,CAAC,aAAa;;QAG5E,IAAA,CAAA,YAAY,GAA4B,IAAI;;AAGnC,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAkC,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,YAAA,EAAA,8BAAA,EAAA,CAAA,EAClE,KAAK,EAAE,OAAO;YACd,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,SAAS,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,EAAA,CAChE;;AAGO,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAwB,KAAK,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,eAAA,EAAA,8BAAA,EAAA,CAAA,EAAI,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,GAAG;;QAGvG,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,4EAAC;;AAGzE,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,+EAAC;;AAGzE,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAqB,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,4EAAC;AAEpE,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;AACrC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,YAAA,OAAO,KAAK,KAAK,SAAS,GAAG,GAAG,GAAG,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AAC9F,QAAA,CAAC,8EAAC;AAEiB,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAkC,MAAK;YAC3E,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,UAAU;YACvD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,KAAK;YACrC,MAAM,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,oBAAoB;YAC5D,MAAM,WAAW,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK;AAC7C,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;YAE9B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;gBAC3B,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE;YACzD;AAEA,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,YAAA,IAAI,MAA0B;AAC9B,YAAA,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE;gBACnB,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,KAAK,EAAE;oBAC9B,MAAM,GAAG,CAAC;gBACd;qBAAO,IAAI,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,KAAK,EAAE;oBACjD,MAAM,GAAG,CAAC;gBACd;YACJ;iBAAO,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,KAAK,EAAE;gBACrC,MAAM,GAAG,CAAC;YACd;AAEA,YAAA,MAAM,KAAK,GAAoC;AAC3C,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,CAAC,SAAS,GAAG,CAAA,EAAG,OAAO,CAAA,CAAA,CAAG;gBAC1B,CAAC,WAAW,GAAG,KAAK;AACpB,gBAAA,SAAS,EAAE,CAAA,EAAG,CAAC,QAAQ,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA,EAAA,EAAK,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA,CAAA;aAC9E;AACD,YAAA,IAAI,MAAM,KAAK,SAAS,EAAE;AACtB,gBAAA,KAAK,CAAC,SAAS,CAAC,GAAG,MAAM;YAC7B;AACA,YAAA,OAAO,KAAK;AAChB,QAAA,CAAC,iFAAC;;;AAKE,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AAC7B,QAAA,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACvE;AAEU,IAAA,aAAa,CAAC,KAAmB,EAAA;AACvC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACjB;QACJ;AACA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,GAAG,KAAK;AAEnC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,YAAY,GAAG,GAAG,GAAG,GAAG;QACjE,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE;AACjD,QAAA,MAAM,QAAQ,GAAG,IAAI,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC;AAC3F,QAAA,MAAM,OAAO,GAAG,IAAI,KAAK,GAAG,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO;QAC5D,IAAI,CAAC,IAAI,CAAC,wBAAwB,GAAG,OAAO,GAAG,QAAQ;AAEvD,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY;QAC9C;IACJ;8GAxFS,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,+BAAA,EAAA,oBAAA,EAAA,oCAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAZ1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,IAAI,EAAE;AACF,wBAAA,SAAS,EAAE,cAAc;AACzB,wBAAA,mBAAmB,EAAE,SAAS;AAC9B,wBAAA,yBAAyB,EAAE,oBAAoB;AAC/C,wBAAA,sBAAsB,EAAE,6BAA6B;AACrD,wBAAA,sBAAsB,EAAE,kCAAkC;AAC1D,wBAAA,eAAe,EAAE;AACpB;AACJ,iBAAA;;;AC3BD;;;;;;AAMG;MA2BU,mBAAmB,CAAA;AAsB5B,IAAA,WAAA,GAAA;QArBmB,IAAA,CAAA,IAAI,GAAG,uBAAuB,EAAG;AACjC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC;AAChC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAA+B,UAAU,CAAC,CAAC,aAAa;QAEhF,IAAA,CAAA,SAAS,GAAG,KAAK,CAAqB,SAAS,iFAAI,KAAK,EAAE,YAAY,EAAA,CAAG;QACzE,IAAA,CAAA,kBAAkB,GAAG,KAAK,CAAqB,SAAS,0FAAI,KAAK,EAAE,gBAAgB,EAAA,CAAG;AAE5E,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MACtC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,KAAK,GAAG,aAAa,GAAG,aAAa,IAAI,SAAS,kFACnH;QAEkB,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MACzC,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,SAAS,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CACpE;QAEkB,IAAA,CAAA,SAAS,GAAG,QAAQ,CACnC,MACI,IAAI,CAAC,kBAAkB,EAAE;AACzB,YAAA,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,gFAC9G;;QAIG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO;AAEtC,QAAA,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAAK;YAC9B,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,KAAK,IAAI,CAAC,OAAO,EAAE;AAC1C,gBAAA,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI;YAClC;AACJ,QAAA,CAAC,CAAC;IACN;AAEU,IAAA,QAAQ,CAAC,KAAY,EAAA;AAC3B,QAAA,MAAM,KAAK,GAAI,KAAK,CAAC,MAA2B,CAAC,aAAa;QAC9D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;AACtB,YAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC;QACnE;IACJ;IAEU,OAAO,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IAC3C;IAEU,MAAM,GAAA;QACZ,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;IAC7B;AAEU,IAAA,SAAS,CAAC,KAAoB,EAAA;AACpC,QAAA,IAAI,KAAK,CAAC,gBAAgB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACpD;QACJ;QACA,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YAC/B,KAAK,CAAC,eAAe,EAAE;QAC3B;QAEA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,KAAK;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;AAChC,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC;QAChC,MAAM,OAAO,GAAG,gBAAgB,CAAC,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC;QAEvD,IAAI,QAAQ,GAAkB,IAAI;AAClC,QAAA,QAAQ,KAAK,CAAC,GAAG;AACb,YAAA,KAAK,SAAS;gBACV,QAAQ,GAAG,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,GAAG,SAAS,GAAG,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;gBAC/E;AACJ,YAAA,KAAK,YAAY;AACb,gBAAA,QAAQ,GAAG,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,GAAG,SAAS,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;gBAC1F;AACJ,YAAA,KAAK,WAAW;gBACZ,QAAQ,GAAG,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,GAAG,SAAS,GAAG,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;gBAChF;AACJ,YAAA,KAAK,WAAW;AACZ,gBAAA,QAAQ,GAAG,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,GAAG,SAAS,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;gBAC1F;AACJ,YAAA,KAAK,QAAQ;AACT,gBAAA,QAAQ,GAAG,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;gBACvD;AACJ,YAAA,KAAK,UAAU;AACX,gBAAA,QAAQ,GAAG,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;gBACxD;AACJ,YAAA,KAAK,KAAK;gBACN,QAAQ;oBACJ,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;AACtC,0BAAE,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,qBAAqB;0BAC1D,GAAG;gBACb;AACJ,YAAA,KAAK,MAAM;gBACP,QAAQ;oBACJ,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;AACtC,0BAAE,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,qBAAqB;0BAC1D,GAAG;gBACb;AACJ,YAAA;gBACI;;AAGR,QAAA,IAAI,QAAQ,KAAK,IAAI,EAAE;YACnB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,KAAK,EAAE,UAAU,CAAC;YACxD,KAAK,CAAC,cAAc,EAAE;QAC1B;IACJ;8GA5GS,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,aAAA,EAAA,OAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,EAAA,cAAA,EAAA,8GAAA,EAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBA1B/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,4BAA4B;AACtC,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,IAAI,EAAE;AACF,wBAAA,IAAI,EAAE,OAAO;AACb,wBAAA,KAAK,EAAE,8GAA8G;AACrH,wBAAA,sBAAsB,EAAE,eAAe;AACvC,wBAAA,YAAY,EAAE,YAAY;AAC1B,wBAAA,YAAY,EAAE,YAAY;AAC1B,wBAAA,aAAa,EAAE,aAAa;AAC5B,wBAAA,SAAS,EAAE,qBAAqB;AAChC,wBAAA,YAAY,EAAE,kBAAkB;AAChC,wBAAA,aAAa,EAAE,aAAa;AAC5B,wBAAA,aAAa,EAAE,aAAa;AAC5B,wBAAA,yBAAyB,EAAE,oBAAoB;AAC/C,wBAAA,sBAAsB,EAAE,eAAe;AACvC,wBAAA,uBAAuB,EAAE,aAAa;AACtC,wBAAA,mBAAmB,EAAE,aAAa;AAClC,wBAAA,wBAAwB,EAAE,kBAAkB;AAC5C,wBAAA,mBAAmB,EAAE,eAAe;AACpC,wBAAA,WAAW,EAAE,mBAAmB;AAChC,wBAAA,UAAU,EAAE,kBAAkB;AAC9B,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,QAAQ,EAAE;AACb;AACJ,iBAAA;;;AClCD;;;;AAIG;MAWU,cAAc,CAAA;AAV3B,IAAA,WAAA,GAAA;QAWuB,IAAA,CAAA,IAAI,GAAG,uBAAuB,EAAG;AACvD,IAAA;8GAFY,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,sCAAA,EAAA,oBAAA,EAAA,oCAAA,EAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAV1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE,qBAAqB;AAC5B,wBAAA,yBAAyB,EAAE,oBAAoB;AAC/C,wBAAA,sBAAsB,EAAE,oCAAoC;AAC5D,wBAAA,sBAAsB,EAAE;AAC3B;AACJ,iBAAA;;;ACdD;;;;;AAKG;MASU,cAAc,CAAA;AAR3B,IAAA,WAAA,GAAA;QASuB,IAAA,CAAA,IAAI,GAAG,uBAAuB,EAAG;;AAG3C,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAS,KAAK,gFAAC;QAEtB,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAClC,IAAI,CAAC;AACA,aAAA,MAAM;AACN,aAAA,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAA,EAAG,KAAK,EAAE;AACzD,aAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,8EAC9B;AACJ,IAAA;8GAZY,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,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,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,KAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,WAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAR1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,IAAI,EAAE;AACF,wBAAA,WAAW,EAAE,KAAK;AAClB,wBAAA,eAAe,EAAE;AACpB;AACJ,iBAAA;;;ACGD,MAAM,QAAQ,GAAG;IACb,aAAa;IACb,gBAAgB;IAChB,cAAc;IACd,kBAAkB;IAClB,cAAc;IACd,mBAAmB;IACnB;CACH;MAMY,eAAe,CAAA;8GAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YAbxB,aAAa;YACb,gBAAgB;YAChB,cAAc;YACd,kBAAkB;YAClB,cAAc;YACd,mBAAmB;AACnB,YAAA,cAAc,aANd,aAAa;YACb,gBAAgB;YAChB,cAAc;YACd,kBAAkB;YAClB,cAAc;YACd,mBAAmB;YACnB,cAAc,CAAA,EAAA,CAAA,CAAA;+GAOL,eAAe,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,CAAC,GAAG,QAAQ,CAAC;AACtB,oBAAA,OAAO,EAAE,CAAC,GAAG,QAAQ;AACxB,iBAAA;;;AChCD;;AAEG;;;;"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, inject, Directive, input, numberAttribute, booleanAttribute, computed, forwardRef, model, output, signal, effect, ElementRef, NgModule } from '@angular/core';
|
|
2
|
+
import { InjectionToken, inject, Directive, input, numberAttribute, booleanAttribute, computed, forwardRef, model, output, signal, effect, ElementRef, DestroyRef, NgModule } from '@angular/core';
|
|
3
3
|
import * as kbd from '@radix-ng/primitives/core';
|
|
4
|
-
import {
|
|
5
|
-
import { LiveAnnouncer } from '@angular/cdk/a11y';
|
|
4
|
+
import { injectId, RdxLiveAnnouncer, useArrowNavigation, getActiveElement } from '@radix-ng/primitives/core';
|
|
6
5
|
import * as i1 from '@radix-ng/primitives/separator';
|
|
7
6
|
import { RdxSeparatorRootDirective } from '@radix-ng/primitives/separator';
|
|
8
7
|
|
|
@@ -52,9 +51,9 @@ class RdxStepperItemDirective {
|
|
|
52
51
|
constructor() {
|
|
53
52
|
this.rootContext = injectStepperRootContext();
|
|
54
53
|
/** @ignore */
|
|
55
|
-
this.titleId =
|
|
54
|
+
this.titleId = injectId('rdx-stepper-item-title');
|
|
56
55
|
/** @ignore */
|
|
57
|
-
this.descriptionId =
|
|
56
|
+
this.descriptionId = injectId('rdx-stepper-item-description');
|
|
58
57
|
this.step = input(NaN, { ...(ngDevMode ? { debugName: "step" } : /* istanbul ignore next */ {}), transform: numberAttribute });
|
|
59
58
|
this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
60
59
|
/** @ignore */
|
|
@@ -112,7 +111,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
112
111
|
|
|
113
112
|
class RdxStepperRootDirective {
|
|
114
113
|
constructor() {
|
|
115
|
-
this.liveAnnouncer = inject(
|
|
114
|
+
this.liveAnnouncer = inject(RdxLiveAnnouncer);
|
|
116
115
|
this.defaultValue = input(undefined, { ...(ngDevMode ? { debugName: "defaultValue" } : /* istanbul ignore next */ {}), transform: numberAttribute });
|
|
117
116
|
this.value = model(this.defaultValue(), ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
|
|
118
117
|
this.linear = input(true, { ...(ngDevMode ? { debugName: "linear" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
@@ -217,18 +216,17 @@ class RdxStepperSeparatorDirective {
|
|
|
217
216
|
this.itemContext = injectStepperItemContext();
|
|
218
217
|
this.rdxSeparator = inject(RdxSeparatorRootDirective, { host: true });
|
|
219
218
|
effect(() => {
|
|
220
|
-
this.rdxSeparator.updateDecorative(true);
|
|
221
219
|
this.rdxSeparator.updateOrientation(this.rootContext.orientation());
|
|
222
220
|
});
|
|
223
221
|
}
|
|
224
222
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxStepperSeparatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
225
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.9", type: RdxStepperSeparatorDirective, isStandalone: true, selector: "[rdxStepperSeparator]", host: { properties: { "attr.data-state": "itemContext.itemState()" } }, hostDirectives: [{ directive: i1.RdxSeparatorRootDirective, inputs: ["orientation", "orientation"
|
|
223
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.9", type: RdxStepperSeparatorDirective, isStandalone: true, selector: "[rdxStepperSeparator]", host: { properties: { "attr.data-state": "itemContext.itemState()" } }, hostDirectives: [{ directive: i1.RdxSeparatorRootDirective, inputs: ["orientation", "orientation"] }], ngImport: i0 }); }
|
|
226
224
|
}
|
|
227
225
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxStepperSeparatorDirective, decorators: [{
|
|
228
226
|
type: Directive,
|
|
229
227
|
args: [{
|
|
230
228
|
selector: '[rdxStepperSeparator]',
|
|
231
|
-
hostDirectives: [{ directive: RdxSeparatorRootDirective, inputs: ['orientation'
|
|
229
|
+
hostDirectives: [{ directive: RdxSeparatorRootDirective, inputs: ['orientation'] }],
|
|
232
230
|
host: {
|
|
233
231
|
'[attr.data-state]': 'itemContext.itemState()'
|
|
234
232
|
}
|
|
@@ -259,15 +257,13 @@ class RdxStepperTriggerDirective {
|
|
|
259
257
|
this.itemContext = injectStepperItemContext();
|
|
260
258
|
this.elementRef = inject(ElementRef);
|
|
261
259
|
this.stepperItems = computed(() => Array.from(this.rootContext.totalStepperItems()), ...(ngDevMode ? [{ debugName: "stepperItems" }] : /* istanbul ignore next */ []));
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
const updated = current.filter((el) => el !== this.elementRef.nativeElement);
|
|
270
|
-
this.rootContext.totalStepperItems.set(updated);
|
|
260
|
+
// Register/deregister this trigger's host element with the root, in DOM order.
|
|
261
|
+
const element = this.elementRef.nativeElement;
|
|
262
|
+
this.rootContext.totalStepperItems.set([...this.rootContext.totalStepperItems(), element]);
|
|
263
|
+
inject(DestroyRef).onDestroy(() => {
|
|
264
|
+
const updated = this.rootContext.totalStepperItems().filter((el) => el !== element);
|
|
265
|
+
this.rootContext.totalStepperItems.set(updated);
|
|
266
|
+
});
|
|
271
267
|
}
|
|
272
268
|
handleMouseDown(event) {
|
|
273
269
|
const mouseEvent = event;
|
|
@@ -338,7 +334,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
338
334
|
'(keydown.ArrowDown)': 'handleKeyDown($event)'
|
|
339
335
|
}
|
|
340
336
|
}]
|
|
341
|
-
}] });
|
|
337
|
+
}], ctorParameters: () => [] });
|
|
342
338
|
|
|
343
339
|
const _imports = [
|
|
344
340
|
RdxStepperDescriptionDirective,
|