@radix-ng/primitives 0.17.0 → 0.18.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/compodoc/documentation.json +5303 -1426
- package/esm2022/select/src/select-trigger.directive.mjs +3 -3
- package/esm2022/select/src/select-value.directive.mjs +4 -9
- package/esm2022/select/src/select.component.mjs +6 -5
- package/esm2022/slider/index.mjs +28 -0
- package/esm2022/slider/radix-ng-primitives-slider.mjs +5 -0
- package/esm2022/slider/src/slider-horizontal.component.mjs +117 -0
- package/esm2022/slider/src/slider-impl.directive.mjs +89 -0
- package/esm2022/slider/src/slider-orientation-context.service.mjs +28 -0
- package/esm2022/slider/src/slider-range.component.mjs +41 -0
- package/esm2022/slider/src/slider-root.component.mjs +207 -0
- package/esm2022/slider/src/slider-thumb-impl.directive.mjs +102 -0
- package/esm2022/slider/src/slider-thumb.component.mjs +22 -0
- package/esm2022/slider/src/slider-track.component.mjs +27 -0
- package/esm2022/slider/src/slider-vertical.component.mjs +117 -0
- package/esm2022/slider/src/utils.mjs +94 -0
- package/esm2022/tooltip/index.mjs +41 -0
- package/esm2022/tooltip/radix-ng-primitives-tooltip.mjs +5 -0
- package/esm2022/tooltip/src/get-content-position.mjs +31 -0
- package/esm2022/tooltip/src/tooltip-arrow.directive.mjs +92 -0
- package/esm2022/tooltip/src/tooltip-arrow.token.mjs +3 -0
- package/esm2022/tooltip/src/tooltip-content-attributes.directive.mjs +24 -0
- package/esm2022/tooltip/src/tooltip-content.directive.mjs +48 -0
- package/esm2022/tooltip/src/tooltip-content.token.mjs +3 -0
- package/esm2022/tooltip/src/tooltip-root.directive.mjs +288 -0
- package/esm2022/tooltip/src/tooltip-trigger.directive.mjs +70 -0
- package/esm2022/tooltip/src/tooltip.config.mjs +18 -0
- package/esm2022/tooltip/src/tooltip.constants.mjs +84 -0
- package/esm2022/tooltip/src/tooltip.types.mjs +14 -0
- package/fesm2022/radix-ng-primitives-select.mjs +10 -14
- package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-slider.mjs +830 -0
- package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-tooltip.mjs +684 -0
- package/fesm2022/radix-ng-primitives-tooltip.mjs.map +1 -0
- package/package.json +13 -1
- package/slider/README.md +1 -0
- package/slider/index.d.ts +18 -0
- package/slider/src/slider-horizontal.component.d.ts +29 -0
- package/slider/src/slider-impl.directive.d.ts +18 -0
- package/slider/src/slider-orientation-context.service.d.ts +14 -0
- package/slider/src/slider-range.component.d.ts +13 -0
- package/slider/src/slider-root.component.d.ts +47 -0
- package/slider/src/slider-thumb-impl.directive.d.ts +26 -0
- package/slider/src/slider-thumb.component.d.ts +6 -0
- package/slider/src/slider-track.component.d.ts +7 -0
- package/slider/src/slider-vertical.component.d.ts +29 -0
- package/slider/src/utils.d.ts +52 -0
- package/tooltip/README.md +1 -0
- package/tooltip/index.d.ts +17 -0
- package/tooltip/src/get-content-position.d.ts +3 -0
- package/tooltip/src/tooltip-arrow.directive.d.ts +25 -0
- package/tooltip/src/tooltip-arrow.token.d.ts +3 -0
- package/tooltip/src/tooltip-content-attributes.directive.d.ts +8 -0
- package/tooltip/src/tooltip-content.directive.d.ts +36 -0
- package/tooltip/src/tooltip-content.token.d.ts +3 -0
- package/tooltip/src/tooltip-root.directive.d.ts +103 -0
- package/tooltip/src/tooltip-trigger.directive.d.ts +26 -0
- package/tooltip/src/tooltip.config.d.ts +6 -0
- package/tooltip/src/tooltip.constants.d.ts +9 -0
- package/tooltip/src/tooltip.types.d.ts +18 -0
@@ -0,0 +1,207 @@
|
|
1
|
+
import { NgIf, NgTemplateOutlet } from '@angular/common';
|
2
|
+
import { booleanAttribute, Component, computed, EventEmitter, inject, input, Input, model, numberAttribute, Output } from '@angular/core';
|
3
|
+
import { RdxSliderHorizontalComponent } from './slider-horizontal.component';
|
4
|
+
import { RdxSliderOrientationContextService } from './slider-orientation-context.service';
|
5
|
+
import { RdxSliderVerticalComponent } from './slider-vertical.component';
|
6
|
+
import { clamp, getClosestValueIndex, getDecimalCount, getNextSortedValues, hasMinStepsBetweenValues, roundValue } from './utils';
|
7
|
+
import * as i0 from "@angular/core";
|
8
|
+
export class RdxSliderRootComponent {
|
9
|
+
constructor() {
|
10
|
+
/** @ignore */
|
11
|
+
this.orientationContext = inject(RdxSliderOrientationContextService);
|
12
|
+
this.min = input(0, { transform: numberAttribute });
|
13
|
+
this.max = input(100, { transform: numberAttribute });
|
14
|
+
this.step = input(1, { transform: numberAttribute });
|
15
|
+
this.minStepsBetweenThumbs = input(0, { transform: numberAttribute });
|
16
|
+
this.orientation = input('horizontal');
|
17
|
+
this.disabled = input(false, { transform: booleanAttribute });
|
18
|
+
this.inverted = input(false, { transform: booleanAttribute });
|
19
|
+
this.dir = input('ltr');
|
20
|
+
this.className = '';
|
21
|
+
this.valueChange = new EventEmitter();
|
22
|
+
this.valueCommit = new EventEmitter();
|
23
|
+
this.modelValue = model([0]);
|
24
|
+
/** @ignore */
|
25
|
+
this.valueIndexToChange = model(0);
|
26
|
+
/** @ignore */
|
27
|
+
this.valuesBeforeSlideStart = model([]);
|
28
|
+
this.isSlidingFromLeft = computed(() => (this.dir() === 'ltr' && !this.inverted()) || (this.dir() !== 'ltr' && this.inverted()));
|
29
|
+
this.isSlidingFromBottom = computed(() => !this.inverted());
|
30
|
+
/** @ignore */
|
31
|
+
this.thumbElements = [];
|
32
|
+
}
|
33
|
+
/** @ignore */
|
34
|
+
ngOnInit() {
|
35
|
+
const isHorizontal = this.orientation() === 'horizontal';
|
36
|
+
if (isHorizontal) {
|
37
|
+
this.orientationContext.updateContext({
|
38
|
+
direction: this.isSlidingFromLeft() ? 1 : -1,
|
39
|
+
size: 'width',
|
40
|
+
startEdge: this.isSlidingFromLeft() ? 'left' : 'right',
|
41
|
+
endEdge: this.isSlidingFromLeft() ? 'right' : 'left'
|
42
|
+
});
|
43
|
+
}
|
44
|
+
else {
|
45
|
+
this.orientationContext.updateContext({
|
46
|
+
direction: this.isSlidingFromBottom() ? -1 : 1,
|
47
|
+
size: 'height',
|
48
|
+
startEdge: this.isSlidingFromBottom() ? 'bottom' : 'top',
|
49
|
+
endEdge: this.isSlidingFromBottom() ? 'top' : 'bottom'
|
50
|
+
});
|
51
|
+
}
|
52
|
+
}
|
53
|
+
/** @ignore */
|
54
|
+
onPointerDown() {
|
55
|
+
this.valuesBeforeSlideStart.set([...this.modelValue()]);
|
56
|
+
}
|
57
|
+
/** @ignore */
|
58
|
+
handleSlideStart(value) {
|
59
|
+
const closestIndex = getClosestValueIndex(this.modelValue(), value);
|
60
|
+
this.updateValues(value, closestIndex);
|
61
|
+
}
|
62
|
+
/** @ignore */
|
63
|
+
handleSlideMove(value) {
|
64
|
+
this.updateValues(value, this.valueIndexToChange());
|
65
|
+
}
|
66
|
+
/** @ignore */
|
67
|
+
handleSlideEnd() {
|
68
|
+
const prevValue = this.valuesBeforeSlideStart()[this.valueIndexToChange()];
|
69
|
+
const nextValue = this.modelValue()[this.valueIndexToChange()];
|
70
|
+
const hasChanged = nextValue !== prevValue;
|
71
|
+
if (hasChanged) {
|
72
|
+
this.valueCommit.emit([...this.modelValue()]);
|
73
|
+
}
|
74
|
+
}
|
75
|
+
/** @ignore */
|
76
|
+
handleStepKeyDown(event) {
|
77
|
+
const stepInDirection = this.step() * event.direction;
|
78
|
+
const atIndex = this.valueIndexToChange();
|
79
|
+
const currentValue = this.modelValue()[atIndex];
|
80
|
+
this.updateValues(currentValue + stepInDirection, atIndex, true);
|
81
|
+
}
|
82
|
+
/** @ignore */
|
83
|
+
updateValues(value, atIndex, commit = false) {
|
84
|
+
const decimalCount = getDecimalCount(this.step());
|
85
|
+
const snapToStep = roundValue(Math.round((value - this.min()) / this.step()) * this.step() + this.min(), decimalCount);
|
86
|
+
const nextValue = clamp(snapToStep, this.min(), this.max());
|
87
|
+
const nextValues = getNextSortedValues(this.modelValue(), nextValue, atIndex);
|
88
|
+
if (hasMinStepsBetweenValues(nextValues, this.minStepsBetweenThumbs() * this.step())) {
|
89
|
+
this.valueIndexToChange.set(nextValues.indexOf(nextValue));
|
90
|
+
const hasChanged = String(nextValues) !== String(this.modelValue());
|
91
|
+
if (hasChanged) {
|
92
|
+
this.modelValue.set(nextValues);
|
93
|
+
this.valueChange.emit([...this.modelValue()]);
|
94
|
+
this.thumbElements[this.valueIndexToChange()]?.focus();
|
95
|
+
if (commit) {
|
96
|
+
this.valueCommit.emit([...this.modelValue()]);
|
97
|
+
}
|
98
|
+
}
|
99
|
+
}
|
100
|
+
}
|
101
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxSliderRootComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
102
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.11", type: RdxSliderRootComponent, isStandalone: true, selector: "rdx-slider", inputs: { min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, step: { classPropertyName: "step", publicName: "step", isSignal: true, isRequired: false, transformFunction: null }, minStepsBetweenThumbs: { classPropertyName: "minStepsBetweenThumbs", publicName: "minStepsBetweenThumbs", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, inverted: { classPropertyName: "inverted", publicName: "inverted", isSignal: true, isRequired: false, transformFunction: null }, dir: { classPropertyName: "dir", publicName: "dir", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: false, isRequired: false, transformFunction: null }, modelValue: { classPropertyName: "modelValue", publicName: "modelValue", isSignal: true, isRequired: false, transformFunction: null }, valueIndexToChange: { classPropertyName: "valueIndexToChange", publicName: "valueIndexToChange", isSignal: true, isRequired: false, transformFunction: null }, valuesBeforeSlideStart: { classPropertyName: "valuesBeforeSlideStart", publicName: "valuesBeforeSlideStart", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", valueCommit: "valueCommit", modelValue: "modelValueChange", valueIndexToChange: "valueIndexToChangeChange", valuesBeforeSlideStart: "valuesBeforeSlideStartChange" }, ngImport: i0, template: `
|
103
|
+
<ng-template #transclude><ng-content /></ng-template>
|
104
|
+
|
105
|
+
<ng-container *ngIf="orientation() === 'horizontal'">
|
106
|
+
<rdx-slider-horizontal
|
107
|
+
[className]="className"
|
108
|
+
[min]="min()"
|
109
|
+
[max]="max()"
|
110
|
+
[dir]="dir()"
|
111
|
+
[inverted]="inverted()"
|
112
|
+
[attr.aria-disabled]="disabled()"
|
113
|
+
[attr.data-disabled]="disabled() ? '' : undefined"
|
114
|
+
(pointerdown)="onPointerDown()"
|
115
|
+
(slideStart)="handleSlideStart($event)"
|
116
|
+
(slideMove)="handleSlideMove($event)"
|
117
|
+
(slideEnd)="handleSlideEnd()"
|
118
|
+
(homeKeyDown)="updateValues(min(), 0, true)"
|
119
|
+
(endKeyDown)="updateValues(max(), modelValue().length - 1, true)"
|
120
|
+
(stepKeyDown)="handleStepKeyDown($event)"
|
121
|
+
>
|
122
|
+
<ng-container *ngTemplateOutlet="transclude" />
|
123
|
+
</rdx-slider-horizontal>
|
124
|
+
</ng-container>
|
125
|
+
|
126
|
+
<ng-container *ngIf="orientation() === 'vertical'">
|
127
|
+
<rdx-slider-vertical
|
128
|
+
[className]="className"
|
129
|
+
[min]="min()"
|
130
|
+
[max]="max()"
|
131
|
+
[dir]="dir()"
|
132
|
+
[inverted]="inverted()"
|
133
|
+
[attr.aria-disabled]="disabled()"
|
134
|
+
[attr.data-disabled]="disabled() ? '' : undefined"
|
135
|
+
(pointerdown)="onPointerDown()"
|
136
|
+
(slideStart)="handleSlideStart($event)"
|
137
|
+
(slideMove)="handleSlideMove($event)"
|
138
|
+
(slideEnd)="handleSlideEnd()"
|
139
|
+
(homeKeyDown)="updateValues(min(), 0, true)"
|
140
|
+
(endKeyDown)="updateValues(max(), modelValue().length - 1, true)"
|
141
|
+
(stepKeyDown)="handleStepKeyDown($event)"
|
142
|
+
>
|
143
|
+
<ng-container *ngTemplateOutlet="transclude" />
|
144
|
+
</rdx-slider-vertical>
|
145
|
+
</ng-container>
|
146
|
+
`, isInline: true, dependencies: [{ kind: "component", type: RdxSliderHorizontalComponent, selector: "rdx-slider-horizontal", inputs: ["dir", "inverted", "min", "max", "className"], outputs: ["slideStart", "slideMove", "slideEnd", "stepKeyDown", "endKeyDown", "homeKeyDown"] }, { kind: "component", type: RdxSliderVerticalComponent, selector: "rdx-slider-vertical", inputs: ["dir", "inverted", "min", "max", "className"], outputs: ["slideStart", "slideMove", "slideEnd", "stepKeyDown", "endKeyDown", "homeKeyDown"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
|
147
|
+
}
|
148
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxSliderRootComponent, decorators: [{
|
149
|
+
type: Component,
|
150
|
+
args: [{
|
151
|
+
selector: 'rdx-slider',
|
152
|
+
standalone: true,
|
153
|
+
imports: [RdxSliderHorizontalComponent, RdxSliderVerticalComponent, NgIf, NgTemplateOutlet],
|
154
|
+
template: `
|
155
|
+
<ng-template #transclude><ng-content /></ng-template>
|
156
|
+
|
157
|
+
<ng-container *ngIf="orientation() === 'horizontal'">
|
158
|
+
<rdx-slider-horizontal
|
159
|
+
[className]="className"
|
160
|
+
[min]="min()"
|
161
|
+
[max]="max()"
|
162
|
+
[dir]="dir()"
|
163
|
+
[inverted]="inverted()"
|
164
|
+
[attr.aria-disabled]="disabled()"
|
165
|
+
[attr.data-disabled]="disabled() ? '' : undefined"
|
166
|
+
(pointerdown)="onPointerDown()"
|
167
|
+
(slideStart)="handleSlideStart($event)"
|
168
|
+
(slideMove)="handleSlideMove($event)"
|
169
|
+
(slideEnd)="handleSlideEnd()"
|
170
|
+
(homeKeyDown)="updateValues(min(), 0, true)"
|
171
|
+
(endKeyDown)="updateValues(max(), modelValue().length - 1, true)"
|
172
|
+
(stepKeyDown)="handleStepKeyDown($event)"
|
173
|
+
>
|
174
|
+
<ng-container *ngTemplateOutlet="transclude" />
|
175
|
+
</rdx-slider-horizontal>
|
176
|
+
</ng-container>
|
177
|
+
|
178
|
+
<ng-container *ngIf="orientation() === 'vertical'">
|
179
|
+
<rdx-slider-vertical
|
180
|
+
[className]="className"
|
181
|
+
[min]="min()"
|
182
|
+
[max]="max()"
|
183
|
+
[dir]="dir()"
|
184
|
+
[inverted]="inverted()"
|
185
|
+
[attr.aria-disabled]="disabled()"
|
186
|
+
[attr.data-disabled]="disabled() ? '' : undefined"
|
187
|
+
(pointerdown)="onPointerDown()"
|
188
|
+
(slideStart)="handleSlideStart($event)"
|
189
|
+
(slideMove)="handleSlideMove($event)"
|
190
|
+
(slideEnd)="handleSlideEnd()"
|
191
|
+
(homeKeyDown)="updateValues(min(), 0, true)"
|
192
|
+
(endKeyDown)="updateValues(max(), modelValue().length - 1, true)"
|
193
|
+
(stepKeyDown)="handleStepKeyDown($event)"
|
194
|
+
>
|
195
|
+
<ng-container *ngTemplateOutlet="transclude" />
|
196
|
+
</rdx-slider-vertical>
|
197
|
+
</ng-container>
|
198
|
+
`
|
199
|
+
}]
|
200
|
+
}], propDecorators: { className: [{
|
201
|
+
type: Input
|
202
|
+
}], valueChange: [{
|
203
|
+
type: Output
|
204
|
+
}], valueCommit: [{
|
205
|
+
type: Output
|
206
|
+
}] } });
|
207
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLXJvb3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcHJpbWl0aXZlcy9zbGlkZXIvc3JjL3NsaWRlci1yb290LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUNILGdCQUFnQixFQUNoQixTQUFTLEVBQ1QsUUFBUSxFQUNSLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLEtBQUssRUFDTCxLQUFLLEVBQ0wsZUFBZSxFQUVmLE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM3RSxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMxRixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN6RSxPQUFPLEVBQ0gsS0FBSyxFQUNMLG9CQUFvQixFQUNwQixlQUFlLEVBQ2YsbUJBQW1CLEVBQ25CLHdCQUF3QixFQUN4QixVQUFVLEVBQ2IsTUFBTSxTQUFTLENBQUM7O0FBb0RqQixNQUFNLE9BQU8sc0JBQXNCO0lBbERuQztRQW1ESSxjQUFjO1FBQ0wsdUJBQWtCLEdBQUcsTUFBTSxDQUFDLGtDQUFrQyxDQUFDLENBQUM7UUFFaEUsUUFBRyxHQUFHLEtBQUssQ0FBc0IsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7UUFFcEUsUUFBRyxHQUFHLEtBQUssQ0FBc0IsR0FBRyxFQUFFLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7UUFFdEUsU0FBSSxHQUFHLEtBQUssQ0FBc0IsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7UUFF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QUMsYUFBYSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUM7Z0JBRXZELElBQUksTUFBTSxFQUFFLENBQUM7b0JBQ1QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2xELENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7K0dBM0hRLHNCQUFzQjttR0FBdEIsc0JBQXNCLG8zREE5Q3JCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQTRDVCw0REE3Q1MsNEJBQTRCLHdOQUFFLDBCQUEwQixzTkFBRSxJQUFJLDZGQUFFLGdCQUFnQjs7NEZBK0NqRixzQkFBc0I7a0JBbERsQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxZQUFZO29CQUN0QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsNEJBQTRCLEVBQUUsMEJBQTBCLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixDQUFDO29CQUMzRixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBNENUO2lCQUNKOzhCQXFCWSxTQUFTO3NCQUFqQixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJvb2xlYW5JbnB1dCwgTnVtYmVySW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgQ29tcG9uZW50LFxuICAgIGNvbXB1dGVkLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBpbmplY3QsXG4gICAgaW5wdXQsXG4gICAgSW5wdXQsXG4gICAgbW9kZWwsXG4gICAgbnVtYmVyQXR0cmlidXRlLFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZHhTbGlkZXJIb3Jpem9udGFsQ29tcG9uZW50IH0gZnJvbSAnLi9zbGlkZXItaG9yaXpvbnRhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmR4U2xpZGVyT3JpZW50YXRpb25Db250ZXh0U2VydmljZSB9IGZyb20gJy4vc2xpZGVyLW9yaWVudGF0aW9uLWNvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyBSZHhTbGlkZXJWZXJ0aWNhbENvbXBvbmVudCB9IGZyb20gJy4vc2xpZGVyLXZlcnRpY2FsLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICAgIGNsYW1wLFxuICAgIGdldENsb3Nlc3RWYWx1ZUluZGV4LFxuICAgIGdldERlY2ltYWxDb3VudCxcbiAgICBnZXROZXh0U29ydGVkVmFsdWVzLFxuICAgIGhhc01pblN0ZXBzQmV0d2VlblZhbHVlcyxcbiAgICByb3VuZFZhbHVlXG59IGZyb20gJy4vdXRpbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3JkeC1zbGlkZXInLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1JkeFNsaWRlckhvcml6b250YWxDb21wb25lbnQsIFJkeFNsaWRlclZlcnRpY2FsQ29tcG9uZW50LCBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0XSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8bmctdGVtcGxhdGUgI3RyYW5zY2x1ZGU+PG5nLWNvbnRlbnQgLz48L25nLXRlbXBsYXRlPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcmllbnRhdGlvbigpID09PSAnaG9yaXpvbnRhbCdcIj5cbiAgICAgICAgICAgIDxyZHgtc2xpZGVyLWhvcml6b250YWxcbiAgICAgICAgICAgICAgICBbY2xhc3NOYW1lXT1cImNsYXNzTmFtZVwiXG4gICAgICAgICAgICAgICAgW21pbl09XCJtaW4oKVwiXG4gICAgICAgICAgICAgICAgW21heF09XCJtYXgoKVwiXG4gICAgICAgICAgICAgICAgW2Rpcl09XCJkaXIoKVwiXG4gICAgICAgICAgICAgICAgW2ludmVydGVkXT1cImludmVydGVkKClcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiZGlzYWJsZWQoKVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1kaXNhYmxlZF09XCJkaXNhYmxlZCgpID8gJycgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICAgIChwb2ludGVyZG93bik9XCJvblBvaW50ZXJEb3duKClcIlxuICAgICAgICAgICAgICAgIChzbGlkZVN0YXJ0KT1cImhhbmRsZVNsaWRlU3RhcnQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKHNsaWRlTW92ZSk9XCJoYW5kbGVTbGlkZU1vdmUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKHNsaWRlRW5kKT1cImhhbmRsZVNsaWRlRW5kKClcIlxuICAgICAgICAgICAgICAgIChob21lS2V5RG93bik9XCJ1cGRhdGVWYWx1ZXMobWluKCksIDAsIHRydWUpXCJcbiAgICAgICAgICAgICAgICAoZW5kS2V5RG93bik9XCJ1cGRhdGVWYWx1ZXMobWF4KCksIG1vZGVsVmFsdWUoKS5sZW5ndGggLSAxLCB0cnVlKVwiXG4gICAgICAgICAgICAgICAgKHN0ZXBLZXlEb3duKT1cImhhbmRsZVN0ZXBLZXlEb3duKCRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0cmFuc2NsdWRlXCIgLz5cbiAgICAgICAgICAgIDwvcmR4LXNsaWRlci1ob3Jpem9udGFsPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwib3JpZW50YXRpb24oKSA9PT0gJ3ZlcnRpY2FsJ1wiPlxuICAgICAgICAgICAgPHJkeC1zbGlkZXItdmVydGljYWxcbiAgICAgICAgICAgICAgICBbY2xhc3NOYW1lXT1cImNsYXNzTmFtZVwiXG4gICAgICAgICAgICAgICAgW21pbl09XCJtaW4oKVwiXG4gICAgICAgICAgICAgICAgW21heF09XCJtYXgoKVwiXG4gICAgICAgICAgICAgICAgW2Rpcl09XCJkaXIoKVwiXG4gICAgICAgICAgICAgICAgW2ludmVydGVkXT1cImludmVydGVkKClcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiZGlzYWJsZWQoKVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1kaXNhYmxlZF09XCJkaXNhYmxlZCgpID8gJycgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICAgIChwb2ludGVyZG93bik9XCJvblBvaW50ZXJEb3duKClcIlxuICAgICAgICAgICAgICAgIChzbGlkZVN0YXJ0KT1cImhhbmRsZVNsaWRlU3RhcnQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKHNsaWRlTW92ZSk9XCJoYW5kbGVTbGlkZU1vdmUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKHNsaWRlRW5kKT1cImhhbmRsZVNsaWRlRW5kKClcIlxuICAgICAgICAgICAgICAgIChob21lS2V5RG93bik9XCJ1cGRhdGVWYWx1ZXMobWluKCksIDAsIHRydWUpXCJcbiAgICAgICAgICAgICAgICAoZW5kS2V5RG93bik9XCJ1cGRhdGVWYWx1ZXMobWF4KCksIG1vZGVsVmFsdWUoKS5sZW5ndGggLSAxLCB0cnVlKVwiXG4gICAgICAgICAgICAgICAgKHN0ZXBLZXlEb3duKT1cImhhbmRsZVN0ZXBLZXlEb3duKCRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0cmFuc2NsdWRlXCIgLz5cbiAgICAgICAgICAgIDwvcmR4LXNsaWRlci12ZXJ0aWNhbD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgYFxufSlcbmV4cG9ydCBjbGFzcyBSZHhTbGlkZXJSb290Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIHJlYWRvbmx5IG9yaWVudGF0aW9uQ29udGV4dCA9IGluamVjdChSZHhTbGlkZXJPcmllbnRhdGlvbkNvbnRleHRTZXJ2aWNlKTtcblxuICAgIHJlYWRvbmx5IG1pbiA9IGlucHV0PG51bWJlciwgTnVtYmVySW5wdXQ+KDAsIHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSk7XG5cbiAgICByZWFkb25seSBtYXggPSBpbnB1dDxudW1iZXIsIE51bWJlcklucHV0PigxMDAsIHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSk7XG5cbiAgICByZWFkb25seSBzdGVwID0gaW5wdXQ8bnVtYmVyLCBOdW1iZXJJbnB1dD4oMSwgeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KTtcblxuICAgIHJlYWRvbmx5IG1pblN0ZXBzQmV0d2VlblRodW1icyA9IGlucHV0PG51bWJlciwgTnVtYmVySW5wdXQ+KDAsIHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSk7XG5cbiAgICByZWFkb25seSBvcmllbnRhdGlvbiA9IGlucHV0PCdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCc+KCdob3Jpem9udGFsJyk7XG5cbiAgICByZWFkb25seSBkaXNhYmxlZCA9IGlucHV0PGJvb2xlYW4sIEJvb2xlYW5JbnB1dD4oZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuXG4gICAgcmVhZG9ubHkgaW52ZXJ0ZWQgPSBpbnB1dDxib29sZWFuLCBCb29sZWFuSW5wdXQ+KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcblxuICAgIHJlYWRvbmx5IGRpciA9IGlucHV0PCdsdHInIHwgJ3J0bCc+KCdsdHInKTtcblxuICAgIEBJbnB1dCgpIGNsYXNzTmFtZTogc3RyaW5nID0gJyc7XG5cbiAgICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcltdPigpO1xuICAgIEBPdXRwdXQoKSB2YWx1ZUNvbW1pdCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyW10+KCk7XG5cbiAgICByZWFkb25seSBtb2RlbFZhbHVlID0gbW9kZWw8bnVtYmVyW10+KFswXSk7XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIHJlYWRvbmx5IHZhbHVlSW5kZXhUb0NoYW5nZSA9IG1vZGVsKDApO1xuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICByZWFkb25seSB2YWx1ZXNCZWZvcmVTbGlkZVN0YXJ0ID0gbW9kZWw8bnVtYmVyW10+KFtdKTtcblxuICAgIHJlYWRvbmx5IGlzU2xpZGluZ0Zyb21MZWZ0ID0gY29tcHV0ZWQoXG4gICAgICAgICgpID0+ICh0aGlzLmRpcigpID09PSAnbHRyJyAmJiAhdGhpcy5pbnZlcnRlZCgpKSB8fCAodGhpcy5kaXIoKSAhPT0gJ2x0cicgJiYgdGhpcy5pbnZlcnRlZCgpKVxuICAgICk7XG5cbiAgICByZWFkb25seSBpc1NsaWRpbmdGcm9tQm90dG9tID0gY29tcHV0ZWQoKCkgPT4gIXRoaXMuaW52ZXJ0ZWQoKSk7XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIHRodW1iRWxlbWVudHM6IEhUTUxFbGVtZW50W10gPSBbXTtcblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGNvbnN0IGlzSG9yaXpvbnRhbCA9IHRoaXMub3JpZW50YXRpb24oKSA9PT0gJ2hvcml6b250YWwnO1xuXG4gICAgICAgIGlmIChpc0hvcml6b250YWwpIHtcbiAgICAgICAgICAgIHRoaXMub3JpZW50YXRpb25Db250ZXh0LnVwZGF0ZUNvbnRleHQoe1xuICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogdGhpcy5pc1NsaWRpbmdGcm9tTGVmdCgpID8gMSA6IC0xLFxuICAgICAgICAgICAgICAgIHNpemU6ICd3aWR0aCcsXG4gICAgICAgICAgICAgICAgc3RhcnRFZGdlOiB0aGlzLmlzU2xpZGluZ0Zyb21MZWZ0KCkgPyAnbGVmdCcgOiAncmlnaHQnLFxuICAgICAgICAgICAgICAgIGVuZEVkZ2U6IHRoaXMuaXNTbGlkaW5nRnJvbUxlZnQoKSA/ICdyaWdodCcgOiAnbGVmdCdcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5vcmllbnRhdGlvbkNvbnRleHQudXBkYXRlQ29udGV4dCh7XG4gICAgICAgICAgICAgICAgZGlyZWN0aW9uOiB0aGlzLmlzU2xpZGluZ0Zyb21Cb3R0b20oKSA/IC0xIDogMSxcbiAgICAgICAgICAgICAgICBzaXplOiAnaGVpZ2h0JyxcbiAgICAgICAgICAgICAgICBzdGFydEVkZ2U6IHRoaXMuaXNTbGlkaW5nRnJvbUJvdHRvbSgpID8gJ2JvdHRvbScgOiAndG9wJyxcbiAgICAgICAgICAgICAgICBlbmRFZGdlOiB0aGlzLmlzU2xpZGluZ0Zyb21Cb3R0b20oKSA/ICd0b3AnIDogJ2JvdHRvbSdcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBvblBvaW50ZXJEb3duKCkge1xuICAgICAgICB0aGlzLnZhbHVlc0JlZm9yZVNsaWRlU3RhcnQuc2V0KFsuLi50aGlzLm1vZGVsVmFsdWUoKV0pO1xuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgaGFuZGxlU2xpZGVTdGFydCh2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNsb3Nlc3RJbmRleCA9IGdldENsb3Nlc3RWYWx1ZUluZGV4KHRoaXMubW9kZWxWYWx1ZSgpLCB2YWx1ZSk7XG4gICAgICAgIHRoaXMudXBkYXRlVmFsdWVzKHZhbHVlLCBjbG9zZXN0SW5kZXgpO1xuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgaGFuZGxlU2xpZGVNb3ZlKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZXModmFsdWUsIHRoaXMudmFsdWVJbmRleFRvQ2hhbmdlKCkpO1xuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgaGFuZGxlU2xpZGVFbmQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHByZXZWYWx1ZSA9IHRoaXMudmFsdWVzQmVmb3JlU2xpZGVTdGFydCgpW3RoaXMudmFsdWVJbmRleFRvQ2hhbmdlKCldO1xuICAgICAgICBjb25zdCBuZXh0VmFsdWUgPSB0aGlzLm1vZGVsVmFsdWUoKVt0aGlzLnZhbHVlSW5kZXhUb0NoYW5nZSgpXTtcbiAgICAgICAgY29uc3QgaGFzQ2hhbmdlZCA9IG5leHRWYWx1ZSAhPT0gcHJldlZhbHVlO1xuXG4gICAgICAgIGlmIChoYXNDaGFuZ2VkKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlQ29tbWl0LmVtaXQoWy4uLnRoaXMubW9kZWxWYWx1ZSgpXSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIGhhbmRsZVN0ZXBLZXlEb3duKGV2ZW50OiB7IGV2ZW50OiBLZXlib2FyZEV2ZW50OyBkaXJlY3Rpb246IG51bWJlciB9KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHN0ZXBJbkRpcmVjdGlvbiA9IHRoaXMuc3RlcCgpICogZXZlbnQuZGlyZWN0aW9uO1xuICAgICAgICBjb25zdCBhdEluZGV4ID0gdGhpcy52YWx1ZUluZGV4VG9DaGFuZ2UoKTtcbiAgICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gdGhpcy5tb2RlbFZhbHVlKClbYXRJbmRleF07XG4gICAgICAgIHRoaXMudXBkYXRlVmFsdWVzKGN1cnJlbnRWYWx1ZSArIHN0ZXBJbkRpcmVjdGlvbiwgYXRJbmRleCwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICB1cGRhdGVWYWx1ZXModmFsdWU6IG51bWJlciwgYXRJbmRleDogbnVtYmVyLCBjb21taXQgPSBmYWxzZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBkZWNpbWFsQ291bnQgPSBnZXREZWNpbWFsQ291bnQodGhpcy5zdGVwKCkpO1xuICAgICAgICBjb25zdCBzbmFwVG9TdGVwID0gcm91bmRWYWx1ZShcbiAgICAgICAgICAgIE1hdGgucm91bmQoKHZhbHVlIC0gdGhpcy5taW4oKSkgLyB0aGlzLnN0ZXAoKSkgKiB0aGlzLnN0ZXAoKSArIHRoaXMubWluKCksXG4gICAgICAgICAgICBkZWNpbWFsQ291bnRcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgbmV4dFZhbHVlID0gY2xhbXAoc25hcFRvU3RlcCwgdGhpcy5taW4oKSwgdGhpcy5tYXgoKSk7XG5cbiAgICAgICAgY29uc3QgbmV4dFZhbHVlcyA9IGdldE5leHRTb3J0ZWRWYWx1ZXModGhpcy5tb2RlbFZhbHVlKCksIG5leHRWYWx1ZSwgYXRJbmRleCk7XG5cbiAgICAgICAgaWYgKGhhc01pblN0ZXBzQmV0d2VlblZhbHVlcyhuZXh0VmFsdWVzLCB0aGlzLm1pblN0ZXBzQmV0d2VlblRodW1icygpICogdGhpcy5zdGVwKCkpKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlSW5kZXhUb0NoYW5nZS5zZXQobmV4dFZhbHVlcy5pbmRleE9mKG5leHRWYWx1ZSkpO1xuICAgICAgICAgICAgY29uc3QgaGFzQ2hhbmdlZCA9IFN0cmluZyhuZXh0VmFsdWVzKSAhPT0gU3RyaW5nKHRoaXMubW9kZWxWYWx1ZSgpKTtcblxuICAgICAgICAgICAgaWYgKGhhc0NoYW5nZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1vZGVsVmFsdWUuc2V0KG5leHRWYWx1ZXMpO1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChbLi4udGhpcy5tb2RlbFZhbHVlKCldKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRodW1iRWxlbWVudHNbdGhpcy52YWx1ZUluZGV4VG9DaGFuZ2UoKV0/LmZvY3VzKCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoY29tbWl0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWVDb21taXQuZW1pdChbLi4udGhpcy5tb2RlbFZhbHVlKCldKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
@@ -0,0 +1,102 @@
|
|
1
|
+
import { computed, Directive, ElementRef, inject, signal } from '@angular/core';
|
2
|
+
import { RdxSliderRootComponent } from './slider-root.component';
|
3
|
+
import { convertValueToPercentage, getThumbInBoundsOffset } from './utils';
|
4
|
+
import * as i0 from "@angular/core";
|
5
|
+
export class RdxSliderThumbImplDirective {
|
6
|
+
constructor() {
|
7
|
+
this.rootContext = inject(RdxSliderRootComponent);
|
8
|
+
this.elementRef = inject(ElementRef);
|
9
|
+
this.isMounted = signal(false);
|
10
|
+
this.thumbIndex = computed(() => {
|
11
|
+
const thumbElement = this.elementRef.nativeElement;
|
12
|
+
const index = this.rootContext.thumbElements.indexOf(thumbElement);
|
13
|
+
return index >= 0 ? index : null;
|
14
|
+
});
|
15
|
+
this.value = computed(() => {
|
16
|
+
const index = this.thumbIndex();
|
17
|
+
if (index === null)
|
18
|
+
return undefined;
|
19
|
+
return this.rootContext.modelValue()?.[index];
|
20
|
+
});
|
21
|
+
this.percent = computed(() => {
|
22
|
+
const val = this.value();
|
23
|
+
if (val === undefined)
|
24
|
+
return 0;
|
25
|
+
return convertValueToPercentage(val, this.rootContext.min(), this.rootContext.max());
|
26
|
+
});
|
27
|
+
this.transform = computed(() => {
|
28
|
+
const percent = this.percent();
|
29
|
+
const offset = this.thumbInBoundsOffset();
|
30
|
+
return `calc(${percent}% + ${offset}px)`;
|
31
|
+
});
|
32
|
+
this.orientationSize = signal(0);
|
33
|
+
this.thumbInBoundsOffset = computed(() => {
|
34
|
+
const context = this.rootContext.orientationContext.context;
|
35
|
+
const size = this.orientationSize();
|
36
|
+
const percent = this.percent();
|
37
|
+
const direction = context.direction;
|
38
|
+
return size ? getThumbInBoundsOffset(size, percent, direction) : 0;
|
39
|
+
});
|
40
|
+
this.combinedStyles = computed(() => {
|
41
|
+
const context = this.rootContext.orientationContext.context;
|
42
|
+
const startEdge = context.startEdge;
|
43
|
+
const percent = this.percent();
|
44
|
+
const offset = this.thumbInBoundsOffset();
|
45
|
+
return {
|
46
|
+
position: 'absolute',
|
47
|
+
transform: 'var(--rdx-slider-thumb-transform)',
|
48
|
+
display: (this.isMounted() && this.value()) === false ? 'none' : undefined,
|
49
|
+
[startEdge]: `calc(${percent}% + ${offset}px)`
|
50
|
+
};
|
51
|
+
});
|
52
|
+
}
|
53
|
+
onFocus() {
|
54
|
+
if (this.thumbIndex() !== null) {
|
55
|
+
this.rootContext.valueIndexToChange.set(this.thumbIndex());
|
56
|
+
}
|
57
|
+
}
|
58
|
+
ngOnInit() {
|
59
|
+
const thumbElement = this.elementRef.nativeElement;
|
60
|
+
this.rootContext.thumbElements.push(thumbElement);
|
61
|
+
this.resizeObserver = new ResizeObserver(() => {
|
62
|
+
const rect = thumbElement.getBoundingClientRect();
|
63
|
+
const context = this.rootContext.orientationContext.context;
|
64
|
+
const size = context.size === 'width' ? rect.width : rect.height;
|
65
|
+
this.orientationSize.set(size);
|
66
|
+
});
|
67
|
+
this.resizeObserver.observe(thumbElement);
|
68
|
+
this.isMounted.set(true);
|
69
|
+
}
|
70
|
+
ngOnDestroy() {
|
71
|
+
const thumbElement = this.elementRef.nativeElement;
|
72
|
+
const index = this.rootContext.thumbElements.indexOf(thumbElement);
|
73
|
+
if (index >= 0)
|
74
|
+
this.rootContext.thumbElements.splice(index, 1);
|
75
|
+
if (this.resizeObserver) {
|
76
|
+
this.resizeObserver.unobserve(thumbElement);
|
77
|
+
}
|
78
|
+
this.isMounted.set(false);
|
79
|
+
}
|
80
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxSliderThumbImplDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
81
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.11", type: RdxSliderThumbImplDirective, isStandalone: true, selector: "[rdxSliderThumbImpl]", host: { attributes: { "role": "slider" }, listeners: { "focus": "onFocus()" }, properties: { "tabindex": "rootContext.disabled() ? undefined : 0", "attr.aria-valuenow": "rootContext.modelValue()", "attr.aria-valuemin": "rootContext.min()", "attr.aria-valuemax": "rootContext.max()", "attr.aria-orientation": "rootContext.orientation()", "attr.data-orientation": "rootContext.orientation()", "attr.data-disabled": "rootContext.disabled() ? \"\" : undefined", "style": "combinedStyles()" } }, ngImport: i0 }); }
|
82
|
+
}
|
83
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxSliderThumbImplDirective, decorators: [{
|
84
|
+
type: Directive,
|
85
|
+
args: [{
|
86
|
+
selector: '[rdxSliderThumbImpl]',
|
87
|
+
standalone: true,
|
88
|
+
host: {
|
89
|
+
role: 'slider',
|
90
|
+
'[tabindex]': 'rootContext.disabled() ? undefined : 0',
|
91
|
+
'[attr.aria-valuenow]': 'rootContext.modelValue()',
|
92
|
+
'[attr.aria-valuemin]': 'rootContext.min()',
|
93
|
+
'[attr.aria-valuemax]': 'rootContext.max()',
|
94
|
+
'[attr.aria-orientation]': 'rootContext.orientation()',
|
95
|
+
'[attr.data-orientation]': 'rootContext.orientation()',
|
96
|
+
'[attr.data-disabled]': 'rootContext.disabled() ? "" : undefined',
|
97
|
+
'[style]': 'combinedStyles()',
|
98
|
+
'(focus)': 'onFocus()'
|
99
|
+
}
|
100
|
+
}]
|
101
|
+
}] });
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLXRodW1iLWltcGwuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcHJpbWl0aXZlcy9zbGlkZXIvc3JjL3NsaWRlci10aHVtYi1pbXBsLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDakUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLHNCQUFzQixFQUFFLE1BQU0sU0FBUyxDQUFDOztBQXNCM0UsTUFBTSxPQUFPLDJCQUEyQjtJQXBCeEM7UUFxQnVCLGdCQUFXLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDL0MsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUdqRCxjQUFTLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTFCLGVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3ZCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO1lBQ25ELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNuRSxPQUFPLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxDQUFDO1FBRUgsVUFBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDbEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hDLElBQUksS0FBSyxLQUFLLElBQUk7Z0JBQUUsT0FBTyxTQUFT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RUFBRSxRQUFRO3dCQUNkLFlBQVksRUFBRSx3Q0FBd0M7d0JBRXRELHNCQUFzQixFQUFFLDBCQUEwQjt3QkFDbEQsc0JBQXNCLEVBQUUsbUJBQW1CO3dCQUMzQyxzQkFBc0IsRUFBRSxtQkFBbUI7d0JBQzNDLHlCQUF5QixFQUFFLDJCQUEyQjt3QkFFdEQseUJBQXlCLEVBQUUsMkJBQTJCO3dCQUN0RCxzQkFBc0IsRUFBRSx5Q0FBeUM7d0JBRWpFLFNBQVMsRUFBRSxrQkFBa0I7d0JBRTdCLFNBQVMsRUFBRSxXQUFXO3FCQUN6QjtpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXB1dGVkLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIGluamVjdCwgT25EZXN0cm95LCBPbkluaXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmR4U2xpZGVyUm9vdENvbXBvbmVudCB9IGZyb20gJy4vc2xpZGVyLXJvb3QuY29tcG9uZW50JztcbmltcG9ydCB7IGNvbnZlcnRWYWx1ZVRvUGVyY2VudGFnZSwgZ2V0VGh1bWJJbkJvdW5kc09mZnNldCB9IGZyb20gJy4vdXRpbHMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tyZHhTbGlkZXJUaHVtYkltcGxdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgcm9sZTogJ3NsaWRlcicsXG4gICAgICAgICdbdGFiaW5kZXhdJzogJ3Jvb3RDb250ZXh0LmRpc2FibGVkKCkgPyB1bmRlZmluZWQgOiAwJyxcblxuICAgICAgICAnW2F0dHIuYXJpYS12YWx1ZW5vd10nOiAncm9vdENvbnRleHQubW9kZWxWYWx1ZSgpJyxcbiAgICAgICAgJ1thdHRyLmFyaWEtdmFsdWVtaW5dJzogJ3Jvb3RDb250ZXh0Lm1pbigpJyxcbiAgICAgICAgJ1thdHRyLmFyaWEtdmFsdWVtYXhdJzogJ3Jvb3RDb250ZXh0Lm1heCgpJyxcbiAgICAgICAgJ1thdHRyLmFyaWEtb3JpZW50YXRpb25dJzogJ3Jvb3RDb250ZXh0Lm9yaWVudGF0aW9uKCknLFxuXG4gICAgICAgICdbYXR0ci5kYXRhLW9yaWVudGF0aW9uXSc6ICdyb290Q29udGV4dC5vcmllbnRhdGlvbigpJyxcbiAgICAgICAgJ1thdHRyLmRhdGEtZGlzYWJsZWRdJzogJ3Jvb3RDb250ZXh0LmRpc2FibGVkKCkgPyBcIlwiIDogdW5kZWZpbmVkJyxcblxuICAgICAgICAnW3N0eWxlXSc6ICdjb21iaW5lZFN0eWxlcygpJyxcblxuICAgICAgICAnKGZvY3VzKSc6ICdvbkZvY3VzKCknXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBSZHhTbGlkZXJUaHVtYkltcGxEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHJvb3RDb250ZXh0ID0gaW5qZWN0KFJkeFNsaWRlclJvb3RDb21wb25lbnQpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgICBwcml2YXRlIHJlc2l6ZU9ic2VydmVyITogUmVzaXplT2JzZXJ2ZXI7XG5cbiAgICBpc01vdW50ZWQgPSBzaWduYWwoZmFsc2UpO1xuXG4gICAgdGh1bWJJbmRleCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3QgdGh1bWJFbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5yb290Q29udGV4dC50aHVtYkVsZW1lbnRzLmluZGV4T2YodGh1bWJFbGVtZW50KTtcbiAgICAgICAgcmV0dXJuIGluZGV4ID49IDAgPyBpbmRleCA6IG51bGw7XG4gICAgfSk7XG5cbiAgICB2YWx1ZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnRodW1iSW5kZXgoKTtcbiAgICAgICAgaWYgKGluZGV4ID09PSBudWxsKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gdGhpcy5yb290Q29udGV4dC5tb2RlbFZhbHVlKCk/LltpbmRleF07XG4gICAgfSk7XG5cbiAgICBwZXJjZW50ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCB2YWwgPSB0aGlzLnZhbHVlKCk7XG4gICAgICAgIGlmICh2YWwgPT09IHVuZGVmaW5lZCkgcmV0dXJuIDA7XG4gICAgICAgIHJldHVybiBjb252ZXJ0VmFsdWVUb1BlcmNlbnRhZ2UodmFsLCB0aGlzLnJvb3RDb250ZXh0Lm1pbigpLCB0aGlzLnJvb3RDb250ZXh0Lm1heCgpKTtcbiAgICB9KTtcblxuICAgIHRyYW5zZm9ybSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3QgcGVyY2VudCA9IHRoaXMucGVyY2VudCgpO1xuICAgICAgICBjb25zdCBvZmZzZXQgPSB0aGlzLnRodW1iSW5Cb3VuZHNPZmZzZXQoKTtcbiAgICAgICAgcmV0dXJuIGBjYWxjKCR7cGVyY2VudH0lICsgJHtvZmZzZXR9cHgpYDtcbiAgICB9KTtcblxuICAgIG9yaWVudGF0aW9uU2l6ZSA9IHNpZ25hbCgwKTtcblxuICAgIHRodW1iSW5Cb3VuZHNPZmZzZXQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLnJvb3RDb250ZXh0Lm9yaWVudGF0aW9uQ29udGV4dC5jb250ZXh0O1xuXG4gICAgICAgIGNvbnN0IHNpemUgPSB0aGlzLm9yaWVudGF0aW9uU2l6ZSgpO1xuICAgICAgICBjb25zdCBwZXJjZW50ID0gdGhpcy5wZXJjZW50KCk7XG4gICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IGNvbnRleHQuZGlyZWN0aW9uO1xuXG4gICAgICAgIHJldHVybiBzaXplID8gZ2V0VGh1bWJJbkJvdW5kc09mZnNldChzaXplLCBwZXJjZW50LCBkaXJlY3Rpb24pIDogMDtcbiAgICB9KTtcblxuICAgIGNvbWJpbmVkU3R5bGVzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5yb290Q29udGV4dC5vcmllbnRhdGlvbkNvbnRleHQuY29udGV4dDtcblxuICAgICAgICBjb25zdCBzdGFydEVkZ2UgPSBjb250ZXh0LnN0YXJ0RWRnZTtcbiAgICAgICAgY29uc3QgcGVyY2VudCA9IHRoaXMucGVyY2VudCgpO1xuICAgICAgICBjb25zdCBvZmZzZXQgPSB0aGlzLnRodW1iSW5Cb3VuZHNPZmZzZXQoKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICB0cmFuc2Zvcm06ICd2YXIoLS1yZHgtc2xpZGVyLXRodW1iLXRyYW5zZm9ybSknLFxuICAgICAgICAgICAgZGlzcGxheTogKHRoaXMuaXNNb3VudGVkKCkgJiYgdGhpcy52YWx1ZSgpKSA9PT0gZmFsc2UgPyAnbm9uZScgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBbc3RhcnRFZGdlXTogYGNhbGMoJHtwZXJjZW50fSUgKyAke29mZnNldH1weClgXG4gICAgICAgIH07XG4gICAgfSk7XG5cbiAgICBvbkZvY3VzKCkge1xuICAgICAgICBpZiAodGhpcy50aHVtYkluZGV4KCkgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMucm9vdENvbnRleHQudmFsdWVJbmRleFRvQ2hhbmdlLnNldCh0aGlzLnRodW1iSW5kZXgoKSEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGNvbnN0IHRodW1iRWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICB0aGlzLnJvb3RDb250ZXh0LnRodW1iRWxlbWVudHMucHVzaCh0aHVtYkVsZW1lbnQpO1xuXG4gICAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVjdCA9IHRodW1iRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLnJvb3RDb250ZXh0Lm9yaWVudGF0aW9uQ29udGV4dC5jb250ZXh0O1xuICAgICAgICAgICAgY29uc3Qgc2l6ZSA9IGNvbnRleHQuc2l6ZSA9PT0gJ3dpZHRoJyA/IHJlY3Qud2lkdGggOiByZWN0LmhlaWdodDtcbiAgICAgICAgICAgIHRoaXMub3JpZW50YXRpb25TaXplLnNldChzaXplKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRodW1iRWxlbWVudCk7XG5cbiAgICAgICAgdGhpcy5pc01vdW50ZWQuc2V0KHRydWUpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBjb25zdCB0aHVtYkVsZW1lbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnJvb3RDb250ZXh0LnRodW1iRWxlbWVudHMuaW5kZXhPZih0aHVtYkVsZW1lbnQpO1xuICAgICAgICBpZiAoaW5kZXggPj0gMCkgdGhpcy5yb290Q29udGV4dC50aHVtYkVsZW1lbnRzLnNwbGljZShpbmRleCwgMSk7XG5cbiAgICAgICAgaWYgKHRoaXMucmVzaXplT2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIudW5vYnNlcnZlKHRodW1iRWxlbWVudCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlzTW91bnRlZC5zZXQoZmFsc2UpO1xuICAgIH1cbn1cbiJdfQ==
|
@@ -0,0 +1,22 @@
|
|
1
|
+
import { Component } from '@angular/core';
|
2
|
+
import { RdxSliderThumbImplDirective } from './slider-thumb-impl.directive';
|
3
|
+
import * as i0 from "@angular/core";
|
4
|
+
import * as i1 from "./slider-thumb-impl.directive";
|
5
|
+
export class RdxSliderThumbComponent {
|
6
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxSliderThumbComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
7
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.11", type: RdxSliderThumbComponent, isStandalone: true, selector: "rdx-slider-thumb", hostDirectives: [{ directive: i1.RdxSliderThumbImplDirective }], ngImport: i0, template: `
|
8
|
+
<ng-content />
|
9
|
+
`, isInline: true }); }
|
10
|
+
}
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxSliderThumbComponent, decorators: [{
|
12
|
+
type: Component,
|
13
|
+
args: [{
|
14
|
+
selector: 'rdx-slider-thumb',
|
15
|
+
standalone: true,
|
16
|
+
hostDirectives: [RdxSliderThumbImplDirective],
|
17
|
+
template: `
|
18
|
+
<ng-content />
|
19
|
+
`
|
20
|
+
}]
|
21
|
+
}] });
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLXRodW1iLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvc2xpZGVyL3NyYy9zbGlkZXItdGh1bWIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sK0JBQStCLENBQUM7OztBQVU1RSxNQUFNLE9BQU8sdUJBQXVCOytHQUF2Qix1QkFBdUI7bUdBQXZCLHVCQUF1Qiw2SUFKdEI7O0tBRVQ7OzRGQUVRLHVCQUF1QjtrQkFSbkMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsY0FBYyxFQUFFLENBQUMsMkJBQTJCLENBQUM7b0JBQzdDLFFBQVEsRUFBRTs7S0FFVDtpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmR4U2xpZGVyVGh1bWJJbXBsRGlyZWN0aXZlIH0gZnJvbSAnLi9zbGlkZXItdGh1bWItaW1wbC5kaXJlY3RpdmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3JkeC1zbGlkZXItdGh1bWInLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaG9zdERpcmVjdGl2ZXM6IFtSZHhTbGlkZXJUaHVtYkltcGxEaXJlY3RpdmVdLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxuZy1jb250ZW50IC8+XG4gICAgYFxufSlcbmV4cG9ydCBjbGFzcyBSZHhTbGlkZXJUaHVtYkNvbXBvbmVudCB7fVxuIl19
|
@@ -0,0 +1,27 @@
|
|
1
|
+
import { Component, inject } from '@angular/core';
|
2
|
+
import { RdxSliderRootComponent } from './slider-root.component';
|
3
|
+
import * as i0 from "@angular/core";
|
4
|
+
export class RdxSliderTrackComponent {
|
5
|
+
constructor() {
|
6
|
+
this.rootContext = inject(RdxSliderRootComponent);
|
7
|
+
}
|
8
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxSliderTrackComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
9
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.11", type: RdxSliderTrackComponent, isStandalone: true, selector: "rdx-slider-track", host: { properties: { "attr.data-disabled": "rootContext.disabled() ? '' : undefined", "attr.data-orientation": "rootContext.orientation()" } }, ngImport: i0, template: `
|
10
|
+
<ng-content />
|
11
|
+
`, isInline: true }); }
|
12
|
+
}
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxSliderTrackComponent, decorators: [{
|
14
|
+
type: Component,
|
15
|
+
args: [{
|
16
|
+
selector: 'rdx-slider-track',
|
17
|
+
standalone: true,
|
18
|
+
host: {
|
19
|
+
'[attr.data-disabled]': "rootContext.disabled() ? '' : undefined",
|
20
|
+
'[attr.data-orientation]': 'rootContext.orientation()'
|
21
|
+
},
|
22
|
+
template: `
|
23
|
+
<ng-content />
|
24
|
+
`
|
25
|
+
}]
|
26
|
+
}] });
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLXRyYWNrLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvc2xpZGVyL3NyYy9zbGlkZXItdHJhY2suY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQWFqRSxNQUFNLE9BQU8sdUJBQXVCO0lBWHBDO1FBWXVCLGdCQUFXLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7S0FDbkU7K0dBRlksdUJBQXVCO21HQUF2Qix1QkFBdUIsNk5BSnRCOztLQUVUOzs0RkFFUSx1QkFBdUI7a0JBWG5DLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLElBQUksRUFBRTt3QkFDRixzQkFBc0IsRUFBRSx5Q0FBeUM7d0JBQ2pFLHlCQUF5QixFQUFFLDJCQUEyQjtxQkFDekQ7b0JBQ0QsUUFBUSxFQUFFOztLQUVUO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJkeFNsaWRlclJvb3RDb21wb25lbnQgfSBmcm9tICcuL3NsaWRlci1yb290LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncmR4LXNsaWRlci10cmFjaycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbYXR0ci5kYXRhLWRpc2FibGVkXSc6IFwicm9vdENvbnRleHQuZGlzYWJsZWQoKSA/ICcnIDogdW5kZWZpbmVkXCIsXG4gICAgICAgICdbYXR0ci5kYXRhLW9yaWVudGF0aW9uXSc6ICdyb290Q29udGV4dC5vcmllbnRhdGlvbigpJ1xuICAgIH0sXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPG5nLWNvbnRlbnQgLz5cbiAgICBgXG59KVxuZXhwb3J0IGNsYXNzIFJkeFNsaWRlclRyYWNrQ29tcG9uZW50IHtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcm9vdENvbnRleHQgPSBpbmplY3QoUmR4U2xpZGVyUm9vdENvbXBvbmVudCk7XG59XG4iXX0=
|
@@ -0,0 +1,117 @@
|
|
1
|
+
import { booleanAttribute, Component, EventEmitter, inject, input, Input, Output, signal, viewChild } from '@angular/core';
|
2
|
+
import { RdxSliderImplDirective } from './slider-impl.directive';
|
3
|
+
import { RdxSliderRootComponent } from './slider-root.component';
|
4
|
+
import { BACK_KEYS, linearScale } from './utils';
|
5
|
+
import * as i0 from "@angular/core";
|
6
|
+
export class RdxSliderVerticalComponent {
|
7
|
+
constructor() {
|
8
|
+
this.rootContext = inject(RdxSliderRootComponent);
|
9
|
+
this.dir = 'ltr';
|
10
|
+
this.inverted = input(false, { transform: booleanAttribute });
|
11
|
+
this.min = 0;
|
12
|
+
this.max = 100;
|
13
|
+
this.className = '';
|
14
|
+
this.slideStart = new EventEmitter();
|
15
|
+
this.slideMove = new EventEmitter();
|
16
|
+
this.slideEnd = new EventEmitter();
|
17
|
+
this.stepKeyDown = new EventEmitter();
|
18
|
+
this.endKeyDown = new EventEmitter();
|
19
|
+
this.homeKeyDown = new EventEmitter();
|
20
|
+
this.sliderElement = viewChild('sliderElement');
|
21
|
+
this.rect = signal(undefined);
|
22
|
+
}
|
23
|
+
onSlideStart(event) {
|
24
|
+
const value = this.getValueFromPointer(event.clientY);
|
25
|
+
this.slideStart.emit(value);
|
26
|
+
}
|
27
|
+
onSlideMove(event) {
|
28
|
+
const value = this.getValueFromPointer(event.clientY);
|
29
|
+
this.slideMove.emit(value);
|
30
|
+
}
|
31
|
+
onSlideEnd() {
|
32
|
+
this.rect.set(undefined);
|
33
|
+
this.slideEnd.emit();
|
34
|
+
}
|
35
|
+
onStepKeyDown(event) {
|
36
|
+
const slideDirection = this.rootContext.isSlidingFromBottom() ? 'from-bottom' : 'from-top';
|
37
|
+
const isBackKey = BACK_KEYS[slideDirection].includes(event.key);
|
38
|
+
this.stepKeyDown.emit({ event, direction: isBackKey ? -1 : 1 });
|
39
|
+
}
|
40
|
+
getValueFromPointer(pointerPosition) {
|
41
|
+
this.rect.set(this.sliderElement()?.nativeElement.getBoundingClientRect());
|
42
|
+
const rect = this.rect();
|
43
|
+
if (!rect)
|
44
|
+
return 0;
|
45
|
+
const input = [0, rect.height];
|
46
|
+
const output = this.rootContext.isSlidingFromBottom()
|
47
|
+
? [this.max, this.min]
|
48
|
+
: [this.min, this.max];
|
49
|
+
const value = linearScale(input, output);
|
50
|
+
this.rect.set(rect);
|
51
|
+
return value(pointerPosition - rect.top);
|
52
|
+
}
|
53
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxSliderVerticalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
54
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.11", type: RdxSliderVerticalComponent, isStandalone: true, selector: "rdx-slider-vertical", inputs: { dir: { classPropertyName: "dir", publicName: "dir", isSignal: false, isRequired: false, transformFunction: null }, inverted: { classPropertyName: "inverted", publicName: "inverted", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: false, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: false, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { slideStart: "slideStart", slideMove: "slideMove", slideEnd: "slideEnd", stepKeyDown: "stepKeyDown", endKeyDown: "endKeyDown", homeKeyDown: "homeKeyDown" }, viewQueries: [{ propertyName: "sliderElement", first: true, predicate: ["sliderElement"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
55
|
+
<span
|
56
|
+
#sliderElement
|
57
|
+
[class]="className"
|
58
|
+
[attr.data-orientation]="'vertical'"
|
59
|
+
[style]="{ '--rdx-slider-thumb-transform': 'translateY(-50%)' }"
|
60
|
+
(slideStart)="onSlideStart($event)"
|
61
|
+
(slideMove)="onSlideMove($event)"
|
62
|
+
(slideEnd)="onSlideEnd()"
|
63
|
+
(stepKeyDown)="onStepKeyDown($event)"
|
64
|
+
(endKeyDown)="endKeyDown.emit($event)"
|
65
|
+
(homeKeyDown)="homeKeyDown.emit($event)"
|
66
|
+
rdxSliderImpl
|
67
|
+
>
|
68
|
+
<ng-content />
|
69
|
+
</span>
|
70
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: RdxSliderImplDirective, selector: "[rdxSliderImpl]", outputs: ["slideStart", "slideMove", "slideEnd", "homeKeyDown", "endKeyDown", "stepKeyDown"] }] }); }
|
71
|
+
}
|
72
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxSliderVerticalComponent, decorators: [{
|
73
|
+
type: Component,
|
74
|
+
args: [{
|
75
|
+
selector: 'rdx-slider-vertical',
|
76
|
+
standalone: true,
|
77
|
+
imports: [RdxSliderImplDirective],
|
78
|
+
template: `
|
79
|
+
<span
|
80
|
+
#sliderElement
|
81
|
+
[class]="className"
|
82
|
+
[attr.data-orientation]="'vertical'"
|
83
|
+
[style]="{ '--rdx-slider-thumb-transform': 'translateY(-50%)' }"
|
84
|
+
(slideStart)="onSlideStart($event)"
|
85
|
+
(slideMove)="onSlideMove($event)"
|
86
|
+
(slideEnd)="onSlideEnd()"
|
87
|
+
(stepKeyDown)="onStepKeyDown($event)"
|
88
|
+
(endKeyDown)="endKeyDown.emit($event)"
|
89
|
+
(homeKeyDown)="homeKeyDown.emit($event)"
|
90
|
+
rdxSliderImpl
|
91
|
+
>
|
92
|
+
<ng-content />
|
93
|
+
</span>
|
94
|
+
`
|
95
|
+
}]
|
96
|
+
}], propDecorators: { dir: [{
|
97
|
+
type: Input
|
98
|
+
}], min: [{
|
99
|
+
type: Input
|
100
|
+
}], max: [{
|
101
|
+
type: Input
|
102
|
+
}], className: [{
|
103
|
+
type: Input
|
104
|
+
}], slideStart: [{
|
105
|
+
type: Output
|
106
|
+
}], slideMove: [{
|
107
|
+
type: Output
|
108
|
+
}], slideEnd: [{
|
109
|
+
type: Output
|
110
|
+
}], stepKeyDown: [{
|
111
|
+
type: Output
|
112
|
+
}], endKeyDown: [{
|
113
|
+
type: Output
|
114
|
+
}], homeKeyDown: [{
|
115
|
+
type: Output
|
116
|
+
}] } });
|
117
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLXZlcnRpY2FsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvc2xpZGVyL3NyYy9zbGlkZXItdmVydGljYWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDSCxnQkFBZ0IsRUFDaEIsU0FBUyxFQUVULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7QUF3QmpELE1BQU0sT0FBTywwQkFBMEI7SUF0QnZDO1FBdUJxQixnQkFBVyxHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBRXJELFFBQUcsR0FBa0IsS0FBSyxDQUFDO1FBRTNCLGFBQVEsR0FBRyxLQUFLLENBQXdCLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7UUFFaEYsUUFBRyxHQUFHLENBQUMsQ0FBQztRQUNSLFFBQUcsR0FBRyxHQUFHLENBQUM7UUFFVixjQUFTLEdBQUcsRUFBRSxDQUFDO1FBRWQsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDeEMsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDdkMsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDcEMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBK0MsQ0FBQztRQUM5RSxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQWlCLENBQUM7UUFDL0MsZ0JBQVcsR0FBRyxJQUFJ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QkFFSSxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJvb2xlYW5JbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGluamVjdCxcbiAgICBpbnB1dCxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgc2lnbmFsLFxuICAgIHZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJkeFNsaWRlckltcGxEaXJlY3RpdmUgfSBmcm9tICcuL3NsaWRlci1pbXBsLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBSZHhTbGlkZXJSb290Q29tcG9uZW50IH0gZnJvbSAnLi9zbGlkZXItcm9vdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQkFDS19LRVlTLCBsaW5lYXJTY2FsZSB9IGZyb20gJy4vdXRpbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3JkeC1zbGlkZXItdmVydGljYWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1JkeFNsaWRlckltcGxEaXJlY3RpdmVdLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgICAjc2xpZGVyRWxlbWVudFxuICAgICAgICAgICAgW2NsYXNzXT1cImNsYXNzTmFtZVwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLW9yaWVudGF0aW9uXT1cIid2ZXJ0aWNhbCdcIlxuICAgICAgICAgICAgW3N0eWxlXT1cInsgJy0tcmR4LXNsaWRlci10aHVtYi10cmFuc2Zvcm0nOiAndHJhbnNsYXRlWSgtNTAlKScgfVwiXG4gICAgICAgICAgICAoc2xpZGVTdGFydCk9XCJvblNsaWRlU3RhcnQoJGV2ZW50KVwiXG4gICAgICAgICAgICAoc2xpZGVNb3ZlKT1cIm9uU2xpZGVNb3ZlKCRldmVudClcIlxuICAgICAgICAgICAgKHNsaWRlRW5kKT1cIm9uU2xpZGVFbmQoKVwiXG4gICAgICAgICAgICAoc3RlcEtleURvd24pPVwib25TdGVwS2V5RG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgIChlbmRLZXlEb3duKT1cImVuZEtleURvd24uZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChob21lS2V5RG93bik9XCJob21lS2V5RG93bi5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgcmR4U2xpZGVySW1wbFxuICAgICAgICA+XG4gICAgICAgICAgICA8bmctY29udGVudCAvPlxuICAgICAgICA8L3NwYW4+XG4gICAgYFxufSlcbmV4cG9ydCBjbGFzcyBSZHhTbGlkZXJWZXJ0aWNhbENvbXBvbmVudCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSByb290Q29udGV4dCA9IGluamVjdChSZHhTbGlkZXJSb290Q29tcG9uZW50KTtcblxuICAgIEBJbnB1dCgpIGRpcjogJ2x0cicgfCAncnRsJyA9ICdsdHInO1xuXG4gICAgcmVhZG9ubHkgaW52ZXJ0ZWQgPSBpbnB1dDxib29sZWFuLCBCb29sZWFuSW5wdXQ+KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcblxuICAgIEBJbnB1dCgpIG1pbiA9IDA7XG4gICAgQElucHV0KCkgbWF4ID0gMTAwO1xuXG4gICAgQElucHV0KCkgY2xhc3NOYW1lID0gJyc7XG5cbiAgICBAT3V0cHV0KCkgc2xpZGVTdGFydCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuICAgIEBPdXRwdXQoKSBzbGlkZU1vdmUgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgICBAT3V0cHV0KCkgc2xpZGVFbmQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gICAgQE91dHB1dCgpIHN0ZXBLZXlEb3duID0gbmV3IEV2ZW50RW1pdHRlcjx7IGV2ZW50OiBLZXlib2FyZEV2ZW50OyBkaXJlY3Rpb246IG51bWJlciB9PigpO1xuICAgIEBPdXRwdXQoKSBlbmRLZXlEb3duID0gbmV3IEV2ZW50RW1pdHRlcjxLZXlib2FyZEV2ZW50PigpO1xuICAgIEBPdXRwdXQoKSBob21lS2V5RG93biA9IG5ldyBFdmVudEVtaXR0ZXI8S2V5Ym9hcmRFdmVudD4oKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2xpZGVyRWxlbWVudCA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPignc2xpZGVyRWxlbWVudCcpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSByZWN0ID0gc2lnbmFsPERPTVJlY3QgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgICBvblNsaWRlU3RhcnQoZXZlbnQ6IFBvaW50ZXJFdmVudCkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZ2V0VmFsdWVGcm9tUG9pbnRlcihldmVudC5jbGllbnRZKTtcbiAgICAgICAgdGhpcy5zbGlkZVN0YXJ0LmVtaXQodmFsdWUpO1xuICAgIH1cblxuICAgIG9uU2xpZGVNb3ZlKGV2ZW50OiBQb2ludGVyRXZlbnQpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldFZhbHVlRnJvbVBvaW50ZXIoZXZlbnQuY2xpZW50WSk7XG4gICAgICAgIHRoaXMuc2xpZGVNb3ZlLmVtaXQodmFsdWUpO1xuICAgIH1cblxuICAgIG9uU2xpZGVFbmQoKSB7XG4gICAgICAgIHRoaXMucmVjdC5zZXQodW5kZWZpbmVkKTtcbiAgICAgICAgdGhpcy5zbGlkZUVuZC5lbWl0KCk7XG4gICAgfVxuXG4gICAgb25TdGVwS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBjb25zdCBzbGlkZURpcmVjdGlvbiA9IHRoaXMucm9vdENvbnRleHQuaXNTbGlkaW5nRnJvbUJvdHRvbSgpID8gJ2Zyb20tYm90dG9tJyA6ICdmcm9tLXRvcCc7XG4gICAgICAgIGNvbnN0IGlzQmFja0tleSA9IEJBQ0tfS0VZU1tzbGlkZURpcmVjdGlvbl0uaW5jbHVkZXMoZXZlbnQua2V5KTtcblxuICAgICAgICB0aGlzLnN0ZXBLZXlEb3duLmVtaXQoeyBldmVudCwgZGlyZWN0aW9uOiBpc0JhY2tLZXkgPyAtMSA6IDEgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRWYWx1ZUZyb21Qb2ludGVyKHBvaW50ZXJQb3NpdGlvbjogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgdGhpcy5yZWN0LnNldCh0aGlzLnNsaWRlckVsZW1lbnQoKT8ubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7XG4gICAgICAgIGNvbnN0IHJlY3QgPSB0aGlzLnJlY3QoKTtcbiAgICAgICAgaWYgKCFyZWN0KSByZXR1cm4gMDtcblxuICAgICAgICBjb25zdCBpbnB1dDogW251bWJlciwgbnVtYmVyXSA9IFswLCByZWN0LmhlaWdodF07XG4gICAgICAgIGNvbnN0IG91dHB1dDogW251bWJlciwgbnVtYmVyXSA9IHRoaXMucm9vdENvbnRleHQuaXNTbGlkaW5nRnJvbUJvdHRvbSgpXG4gICAgICAgICAgICA/IFt0aGlzLm1heCwgdGhpcy5taW5dXG4gICAgICAgICAgICA6IFt0aGlzLm1pbiwgdGhpcy5tYXhdO1xuXG4gICAgICAgIGNvbnN0IHZhbHVlID0gbGluZWFyU2NhbGUoaW5wdXQsIG91dHB1dCk7XG4gICAgICAgIHRoaXMucmVjdC5zZXQocmVjdCk7XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlKHBvaW50ZXJQb3NpdGlvbiAtIHJlY3QudG9wKTtcbiAgICB9XG59XG4iXX0=
|